diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000000000000000000000000000000000000..09542326afcf8dc076cf99cbbca7fc51cfd348e8 --- /dev/null +++ b/pom.xml @@ -0,0 +1,201 @@ + + 4.0.0 + com.food.chain + FC_API + war + 0.0.1-SNAPSHOT + FC_API Maven Webapp + http://maven.apache.org + + + UTF-8 + 4.3.10.RELEASE + 3.4.4 + 1.3.0 + + + + + junit + junit + 4.12 + test + + + + org.springframework + spring-webmvc + ${spring.version} + + + org.springframework + spring-jdbc + ${spring.version} + + + + + jstl + jstl + 1.2 + + + + + org.apache.logging.log4j + log4j-core + 2.8.2 + + + + org.apache.logging.log4j + log4j-jcl + 2.8.2 + + + + + commons-fileupload + commons-fileupload + 1.3.2 + + + + + c3p0 + c3p0 + 0.9.1.1 + + + + + org.mybatis + mybatis + ${mybatis.version} + + + org.mybatis + mybatis-spring + ${mybatisspring.version} + + + + + mysql + mysql-connector-java + 6.0.6 + + + + + org.aspectj + aspectjweaver + 1.8.10 + + + + + + + + + + + + com.alibaba + fastjson + 1.2.35 + + + + + org.apache.poi + poi + 3.16 + + + + + commons-beanutils + commons-beanutils + 1.9.3 + + + + + redis.clients + jedis + 2.9.0 + + + + + org.springframework.data + spring-data-redis + 1.8.6.RELEASE + + + + + org.mindrot + jbcrypt + 0.4 + + + + + com.nimbusds + nimbus-jose-jwt + 5.1 + + + + + org.apache.shiro + shiro-web + 1.4.0 + + + + org.apache.shiro + shiro-spring + 1.4.0 + + + + org.apache.shiro + shiro-ehcache + 1.4.0 + + + + taglibs + standard + 1.1.2 + + + + + org.apache.httpcomponents + httpclient + 4.5.3 + + + + org.apache.httpcomponents + httpmime + 4.5.3 + + + + commons-httpclient + commons-httpclient + 3.1 + + + + + FC_API + + diff --git a/src/main/java/com/food/chain/common/jwt/Jwt.java b/src/main/java/com/food/chain/common/jwt/Jwt.java new file mode 100644 index 0000000000000000000000000000000000000000..ffcd170e4244dc9178b6adf90e3a42a8ac40000a --- /dev/null +++ b/src/main/java/com/food/chain/common/jwt/Jwt.java @@ -0,0 +1,105 @@ + +package com.food.chain.common.jwt; + +import java.util.Date; +import java.util.HashMap; +import java.util.Map; + +import com.nimbusds.jose.JOSEException; +import com.nimbusds.jose.JOSEObjectType; +import com.nimbusds.jose.JWSAlgorithm; +import com.nimbusds.jose.JWSHeader; +import com.nimbusds.jose.JWSObject; +import com.nimbusds.jose.JWSVerifier; +import com.nimbusds.jose.Payload; +import com.nimbusds.jose.crypto.MACSigner; +import com.nimbusds.jose.crypto.MACVerifier; + +import net.minidev.json.JSONObject; + +public class Jwt { + + + /** + * 秘钥 + */ + private static final byte[] SECRET="5vsxj54ce2yui86vi94umk8ckzoxm1lq".getBytes(); + + /** + * 初始化head部分的数据为 + * { + * "alg":"HS256", + * "type":"JWT" + * } + */ + private static final JWSHeader header = new JWSHeader(JWSAlgorithm.HS256, JOSEObjectType.JWT, null, null, null, null, null, null, null, null, null, null, null); + + /** + * 生成token,该方法只在用户登录成功后调用 + * + * @param Map集合,可以存储用户id,token生成时间,token过期时间等自定义字段 + * @return token字符串,若失败则返回null + */ + public static String createToken(Map payload) { + String tokenString=null; + // 创建一个 JWS object + JWSObject jwsObject = new JWSObject(header, new Payload(new JSONObject(payload))); + try { + // 将jwsObject 进行HMAC签名 + jwsObject.sign(new MACSigner(SECRET)); + tokenString=jwsObject.serialize(); + } catch (JOSEException e) { + System.err.println("签名失败:" + e.getMessage()); + e.printStackTrace(); + } + return tokenString; + } + + + + /** + * 校验token是否合法,返回Map集合,集合中主要包含 state状态码 data鉴权成功后从token中提取的数据 + * 该方法在过滤器中调用,每次请求API时都校验 + * @param token + * @return Map + */ + public static Map validToken(String token) { + Map resultMap = new HashMap(); + try { + JWSObject jwsObject = JWSObject.parse(token); + Payload payload = jwsObject.getPayload(); + JWSVerifier verifier = new MACVerifier(SECRET); + + if (jwsObject.verify(verifier)) { + JSONObject jsonOBj = payload.toJSONObject(); + // token校验成功(此时没有校验是否过期) + resultMap.put("state", TokenState.VALID.toString()); + // 若payload包含ext字段,则校验是否过期 + if (jsonOBj.containsKey("exp")) { + long extTime = Long.valueOf(jsonOBj.get("exp").toString()); + long curTime = new Date().getTime(); + // 过期了 + if (curTime > extTime) { + resultMap.clear(); + resultMap.put("state", TokenState.EXPIRED.toString()); + } + } + resultMap.put("data", jsonOBj); + + } else { + // 校验失败 + resultMap.put("state", TokenState.INVALID.toString()); + } + + } catch (Exception e) { + //e.printStackTrace(); + // token格式不合法导致的异常 + resultMap.clear(); + resultMap.put("state", TokenState.INVALID.toString()); + } + return resultMap; + } + +} + + diff --git a/src/main/java/com/food/chain/common/jwt/TokenState.java b/src/main/java/com/food/chain/common/jwt/TokenState.java new file mode 100644 index 0000000000000000000000000000000000000000..e6c457e9e2ab42933a1f555a28a0cefd697748fd --- /dev/null +++ b/src/main/java/com/food/chain/common/jwt/TokenState.java @@ -0,0 +1,53 @@ +package com.food.chain.common.jwt; + +/** + * 枚举,定义token的三种状态 + * + */ + public enum TokenState { + /** + * 过期 + */ + EXPIRED("EXPIRED"), + /** + * 无效(token不合法) + */ + INVALID("INVALID"), + /** + * 有效的 + */ + VALID("VALID"); + + private String state; + + private TokenState(String state) { + this.state = state; + } + + /** + * 根据状态字符串获取token状态枚举对象 + * @param tokenState + * @return + */ + public static TokenState getTokenState(String tokenState){ + TokenState[] states=TokenState.values(); + TokenState ts=null; + for (TokenState state : states) { + if(state.toString().equals(tokenState)){ + ts=state; + break; + } + } + return ts; + } + public String toString() { + return this.state; + } + public String getState() { + return state; + } + public void setState(String state) { + this.state = state; + } + +} diff --git a/src/main/java/com/food/chain/common/util/DateUtil.java b/src/main/java/com/food/chain/common/util/DateUtil.java new file mode 100644 index 0000000000000000000000000000000000000000..6265e821270118570f6f0bb18bc549a155d7b88a --- /dev/null +++ b/src/main/java/com/food/chain/common/util/DateUtil.java @@ -0,0 +1,718 @@ +package com.food.chain.common.util; + +import java.text.ParseException; +import java.text.ParsePosition; +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.Date; +import java.util.Locale; + +public class DateUtil { + + public final static String LONG_DATE_FORMAT = "yyyy-MM-dd HH:mm:ss"; + public final static String SHORT_DATE_FORMAT = "yyyy-MM-dd"; + + /** + * CD-001格式化年月日 格式yyyy-mm-dd + * + * @param date + * @return + */ + public static String dateFormat(String date) { + // 时间格式化 + String r_date = ""; + SimpleDateFormat df = new SimpleDateFormat(SHORT_DATE_FORMAT); + try { + Date date1 = df.parse(date); + r_date = df.format(date1); + } catch (ParseException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return r_date; + } + + /** + * CD-002格式化日期,格式如2006-07-09 23:00:00 + * + * @param date + * Date 日期 + * @return String 输出字符串 + */ + public static String formatDate2(Date date) { + if (date == null) { + return ""; + } else { + String disp = ""; + SimpleDateFormat bartDateFormat = new SimpleDateFormat( + LONG_DATE_FORMAT); + disp = bartDateFormat.format(date); + return disp; + } + } + + + /** + * CD-003获得当天时间,格式为yyyy-MM-dd HH:mm:ss + * + * @return String + */ + public static String getNow5() { + Date d = new Date(); + String str = ""; + SimpleDateFormat formatter = new SimpleDateFormat(LONG_DATE_FORMAT); + str = formatter.format(d); + return str; + } + + /** + * CD-004获得前一天的时间 + * + * @return String + */ + public static String getPreviousDate() { + Calendar cal = Calendar.getInstance(); + cal.add(Calendar.DATE, -1); + String str = ""; + SimpleDateFormat formatter = new SimpleDateFormat(SHORT_DATE_FORMAT); + str = formatter.format(cal.getTime()); + return str; + } + + /** + * CD-005获得当前月份 + * + * @return String 格式:2007-05 + */ + public static String getMonth2() { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM"); + String strDate = dateFormat.format(new Date()); + return strDate; + } + + /** + * CD-006获得该月的第一天日期和最后一天日期 + * + * @param year + * int 年份 + * @param month + * int 月份 + * @return String[] + */ + public static String[] getMonth(int year, int month) { + SimpleDateFormat format = new SimpleDateFormat(SHORT_DATE_FORMAT); + String[] dates = new String[2]; + Calendar startCal = Calendar.getInstance(); + startCal.set(year, month - 1, 1); + dates[0] = format.format(startCal.getTime()); + + Calendar endCal = Calendar.getInstance(); + endCal.set(year, month, 1); + endCal.add(Calendar.DATE, -1); + dates[1] = format.format(endCal.getTime()); + return dates; + } + + /** + * CD-007获得前一天的日期 + * + * @return 返回前一天日期的字符串变量,如"20030711" + */ + public static String getlastDate() { + Calendar cal = Calendar.getInstance(); + cal.add(Calendar.DATE, -1); + String str = ""; + SimpleDateFormat formatter = new SimpleDateFormat(SHORT_DATE_FORMAT); + str = formatter.format(cal.getTime()); + return str; + } + + + /** + * CD-008 获得两个日期之间的天数日期格式为yyyy-MM-dd + * + * @param startTime + * 起始日期 + * @param endTime + * 结束日期 + * @return int + */ + public static int getDateFromTime1ToTime2(String startTime, String endTime) { + SimpleDateFormat formatter = new SimpleDateFormat(SHORT_DATE_FORMAT); + Date dt1 = null; + Date dt2 = null; + int checkDays = 0; + try { + dt1 = formatter.parse(endTime); + dt2 = formatter.parse(startTime); + long l = dt1.getTime() - dt2.getTime(); + l = (long) (l / (1000 * 60 * 60 * 24) + 0.5); + checkDays = Integer.parseInt(String.valueOf(l)); + } catch (ParseException e) { + return checkDays; + } + return checkDays; + } + + /** + * CD-009 将日期转换为毫秒: + * @param date + * @param pattern + * @return + */ + public static long date2millisecond(String date, String pattern) { + // 传入的参数要与yyyyMMddHH的格式相同 "yyyyMMddHH" + SimpleDateFormat simpledateformat = new SimpleDateFormat(pattern, + Locale.SIMPLIFIED_CHINESE); + Date date2 = null; + try { + date2 = simpledateformat.parse(date);// 将参数按照给定的格式解析参数 + } catch (ParseException e) { + e.printStackTrace(); + } + return date2.getTime(); + } + /** + * CD-010日期加减 + * + * @param inday + * 输入的时间 + * @param offset + * 日期间隔天数 + * @return 日期(yyyy-MM-dd) + */ + public static String changeByDay(String inday, int offset) { + Calendar calendar = Calendar.getInstance(); + Date date = strToDate(inday); + calendar.setTime(date); + calendar.set(Calendar.DAY_OF_YEAR, + (calendar.get(Calendar.DAY_OF_YEAR) + offset)); + SimpleDateFormat formatter = new SimpleDateFormat(SHORT_DATE_FORMAT); + String day = formatter.format(calendar.getTime()); + return day; + } + + /** + * CD-011 日期转换 把String 类型转换为date类型 + * + * @param inday + * 输入的时间 + * @param offset + * 日期间隔天数 + * @return 日期(yyyy-MM-dd) + */ + + public static Date strToDate(String strDate) { + if(!"".equals(strDate)){ + SimpleDateFormat formatter = new SimpleDateFormat(SHORT_DATE_FORMAT); + ParsePosition pos = new ParsePosition(0); + Date strtodate = formatter.parse(strDate, pos); + return strtodate; + } + return null; + } + + public static Date strToDate(String strDate, String dateFormat) { + + Date date = null; + + if(strDate != null && !"".equals(strDate)){ + SimpleDateFormat formatter = new SimpleDateFormat(dateFormat); + try { + date = formatter.parse(strDate); + } catch (ParseException e) { + date = null; + } + } + + return date; + } + + /** + * CD-012 获取本月的第一天,格式为yyyy-MM-dd + * + * @return 从现在到上周的时间字符串 + */ + public static String getfirstDayOfMonth() { + Calendar ca = Calendar.getInstance(); + SimpleDateFormat sdf = new SimpleDateFormat(SHORT_DATE_FORMAT); + ca.set(Calendar.DAY_OF_MONTH, 1); + Date da = ca.getTime(); + return sdf.format(da); + } + + /** + * CD-013 年加减 + * + * @param sDate + * 输入的时间 + * @param offset + * 日期间隔月数 + * @return 日期(yyyy-MM-dd) + */ + @SuppressWarnings("static-access") + public static String getNYearBeforeOneDay(String sDate, int offset) { + Calendar calendar = Calendar.getInstance(); + Date date = strToDate(sDate); + calendar.setTime(date); + calendar.add(calendar.YEAR, offset); + SimpleDateFormat formatter = new SimpleDateFormat(SHORT_DATE_FORMAT); + String day = formatter.format(calendar.getTime()); + return day; + + } + + /** + * CD-014 获得本月的最后一天 + * + * @return String + */ + public static String getLastMonthDay(String sDate) { + SimpleDateFormat format = new SimpleDateFormat(SHORT_DATE_FORMAT); + Date d = strToDate(sDate); + Calendar calendar = Calendar.getInstance(); + calendar.setTime(d); + calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), + 1); + // calendar.add(Calendar.DATE, -1); + calendar.add(Calendar.MONTH, 1); + calendar.add(Calendar.DATE, -1); + String date = format.format(calendar.getTime()); + // date = getNMonthBeforeOneDay(date,1); + return date; + } + + /** + * + * CD-015 得到指定月的天数 + * + * */ + + public static int getMonthLastDay(int year, int month) { + Calendar a = Calendar.getInstance(); + a.set(Calendar.YEAR, year); + a.set(Calendar.MONTH, month - 1); + a.set(Calendar.DATE, 1);// 把日期设置为当月第一天 + a.roll(Calendar.DATE, -1);// 日期回滚一天,也就是最后一天 + int maxDate = a.get(Calendar.DATE); + return maxDate; + } + + /** + * 获取当前时间,格式为yyyyMMddHHmmss + * @return + */ + public static String getNow1() { + Date now = new Date(); + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss"); + return dateFormat.format(now); + } + + /** + * 获取当前日期 + * @param dateFormat + * @return + */ + public static String getNow(String dateFormat) { + Date now = new Date(); + SimpleDateFormat simpleDateFormat = new SimpleDateFormat(dateFormat); + return simpleDateFormat.format(now); + } + + /** + * 获得当天日期,格式为yyyy-MM-dd + * + * @return String + */ + public static String getNow4() { + Date d = new Date(); + String str = ""; + SimpleDateFormat formatter = new SimpleDateFormat(SHORT_DATE_FORMAT); + str = formatter.format(d); + return str; + } + + /** + * 获得当天日期,格式为yyyyMMdd + * + * @return String + */ + public static String getNowYMD() { + Date d = new Date(); + String str = ""; + SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMdd"); + str = formatter.format(d); + return str; + } + + /** + * HH:mm 转成当天 yyyy-MM-dd HH:mm:ss + * + * @return String + */ + public static String timeToDateTime(String time) { + String str = ""; + if(!time.equals("")){ + Date d = new Date(); + SimpleDateFormat formatter = new SimpleDateFormat(SHORT_DATE_FORMAT); + str = formatter.format(d)+" "+time+":00"; + } + return str; + } + + /** + * 返回两个时间戳之间的分钟差("yyyy-MM-dd HH:mm:ss") + * + * @return String + */ + public static double minDiff(String startTime, String endTime) { + SimpleDateFormat sd = new SimpleDateFormat(LONG_DATE_FORMAT); +// long nd = 1000 * 24 * 60 * 60;// 一天的毫秒数 +// long nh = 1000 * 60 * 60;// 一小时的毫秒数 + double nm = 1000 * 60;// 一分钟的毫秒数 +// long ns = 1000;// 一秒钟的毫秒数 + double diff; +// long day = 0; +// long hour = 0; + double min = 0; +// long sec = 0; + // 获得两个时间的毫秒时间差异 + try { + diff = sd.parse(endTime).getTime() - sd.parse(startTime).getTime(); +// day = diff / nd;// 计算差多少天 +// hour = diff % nd / nh + day * 24;// 计算差多少小时 +// min = diff % nd % nh / nm + day * 24 * 60;// 计算差多少分钟 +// sec = diff % nd % nh % nm / ns;// 计算差多少秒 + min = diff / nm; + return min; + } catch (ParseException e) { + e.printStackTrace(); + } + return min; + } + + /** + * 返回两个时间戳之间的分钟差("HH:mm") + * + * @return String + */ + public static double minDiff1(String startTime, String endTime) { + startTime = "2016-01-01 " + startTime + ":00"; + endTime = "2016-01-01 " + endTime + ":00"; + SimpleDateFormat sd = new SimpleDateFormat(LONG_DATE_FORMAT); + double nm = 1000 * 60;// 一分钟的毫秒数 + double diff; + double min = 0; + + // 获得两个时间的毫秒时间差异 + try { + diff = sd.parse(endTime).getTime() - sd.parse(startTime).getTime(); + min = diff / nm; + return min; + } catch (ParseException e) { + e.printStackTrace(); + } + return min; + } + + + /** + * 根据起始日和终止日计算周数 + * + * @return String + * @throws ParseException + */ + public static int computeWeek(String sDay, String eDay) throws ParseException { + + int wks = 0; + + SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd"); + Date sdate = format.parse(sDay); + Date edate = format.parse(eDay); + + Calendar sCalendar = Calendar.getInstance(); + sCalendar.setTime(sdate); + + Calendar eCalendar = Calendar.getInstance(); + eCalendar.setTime(edate); + + if(sCalendar.before(eCalendar) && sCalendar.get(Calendar.DAY_OF_WEEK)-1 != 1){//已开学,并且开始日不是周一 + if(sCalendar.get(Calendar.DAY_OF_WEEK) == 1){//周日 + sCalendar.add(Calendar.DAY_OF_YEAR, 1); + }else{ + sCalendar.add(Calendar.DAY_OF_YEAR, 7-sCalendar.get(Calendar.DAY_OF_WEEK)+2); + } + wks += 1; + } + + while (sCalendar.before(eCalendar) || sCalendar.equals(eCalendar)) { +// if (sCalendar.get(Calendar.YEAR) == eCalendar.get(Calendar.YEAR) && +// sCalendar.get(Calendar.MONTH) == eCalendar.get(Calendar.MONTH) && +// sCalendar.get(Calendar.DAY_OF_WEEK_IN_MONTH) == eCalendar.get(Calendar.DAY_OF_WEEK_IN_MONTH)) { +// break; +// } else { + sCalendar.add(Calendar.DAY_OF_YEAR, 7); + wks += 1; +// } + } +// if(sdate.before(edate)){ +// wks += 1; //此函数其实是计算两个日期之间间隔多少周,因此计算出来的周数还要加1才是当前实际周数。 +// } + +// if(sDay.equals(eDay)){ +// wks = 1; +// } + + return wks; + } + + + public static String getFirstDayOfWeek(int year, int week) { + + Calendar firDay = Calendar.getInstance(); + // 先滚动到该年 + firDay.set(Calendar.YEAR, year); + // 滚动到周 + firDay.set(Calendar.WEEK_OF_YEAR, week + 1); + // 得到该周第一天 + firDay.set(Calendar.DAY_OF_WEEK, 2); + + SimpleDateFormat sdf = new SimpleDateFormat(SHORT_DATE_FORMAT); + String firstDay = sdf.format(firDay.getTime()); + return firstDay; + } + + public static String getLastDayOfWeek(int year, int week){ + + Calendar lasDay = Calendar.getInstance(); + // 先滚动到该年 + lasDay.set(Calendar.YEAR, year); + // 滚动到周 + lasDay.set(Calendar.WEEK_OF_YEAR, week + 1); + // 得到该周第一天 + lasDay.set(Calendar.DAY_OF_WEEK, 2); + // 得到该周最后一天 + lasDay.add(Calendar.DAY_OF_WEEK, 6); + + SimpleDateFormat sdf = new SimpleDateFormat(SHORT_DATE_FORMAT); + String lastDay = sdf.format(lasDay.getTime()); + return lastDay; + } + + + /** + * 得到本周周一 + * + * @return yyyy-MM-dd + */ + public static String getMondayOfThisWeek() { + SimpleDateFormat df = new SimpleDateFormat(SHORT_DATE_FORMAT); + Calendar c = Calendar.getInstance(); + int day_of_week = c.get(Calendar.DAY_OF_WEEK) - 1; + if (day_of_week == 0) + day_of_week = 7; + c.add(Calendar.DATE, -day_of_week + 1); + return df.format(c.getTime()); + } + + /** + * 得到本周周日 + * + * @return yyyy-MM-dd + */ + public static String getSundayOfThisWeek() { + SimpleDateFormat df = new SimpleDateFormat(SHORT_DATE_FORMAT); + Calendar c = Calendar.getInstance(); + int day_of_week = c.get(Calendar.DAY_OF_WEEK) - 1; + if (day_of_week == 0) + day_of_week = 7; + c.add(Calendar.DATE, -day_of_week + 7); + return df.format(c.getTime()); + } + + /** + * 计算今天之前n天的日期 + * @param offset + * @return MM/dd + */ + public static String offTodayDay(int offset) { + Calendar calendar = Calendar.getInstance(); + Date date = new Date(); + calendar.setTime(date); + calendar.set(Calendar.DAY_OF_YEAR, (calendar.get(Calendar.DAY_OF_YEAR) - offset)); + SimpleDateFormat formatter = new SimpleDateFormat("MM/dd"); + String day = formatter.format(calendar.getTime()); + return day; + } + + + /** + * 根据日期计算所在周的周一 + * @param time 指定的日期 + * @throws ParseException + */ + public static String getMondayByDate(String sDay) throws ParseException { + + SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd"); + Date time = format.parse(sDay); + + Calendar cal = Calendar.getInstance(); + cal.setTime(time); + + //判断要计算的日期是否是周日,如果是则减一天计算周六的,否则会出问题,计算到下一周去了 + int dayWeek = cal.get(Calendar.DAY_OF_WEEK);//获得当前日期是一个星期的第几天 + if(1 == dayWeek) { + cal.add(Calendar.DAY_OF_MONTH, -1); + } + + cal.setFirstDayOfWeek(Calendar.MONDAY);//设置一个星期的第一天,按中国的习惯一个星期的第一天是星期一 + int day = cal.get(Calendar.DAY_OF_WEEK);//获得当前日期是一个星期的第几天 + cal.add(Calendar.DATE, cal.getFirstDayOfWeek()-day);//根据日历的规则,给当前日期减去星期几与一个星期第一天的差值 + + SimpleDateFormat sdf = new SimpleDateFormat(SHORT_DATE_FORMAT); //设置时间格式 + String imptimeBegin = sdf.format(cal.getTime()); + + return imptimeBegin; + } + + /** + * 根据日期计算所在周的周日 + * @param time 指定的日期 + * @throws ParseException + */ + public static String getSundayByDate(String sDay) throws ParseException { + + SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd"); + Date time = format.parse(sDay); + + SimpleDateFormat sdf = new SimpleDateFormat(SHORT_DATE_FORMAT); //设置时间格式 + Calendar cal = Calendar.getInstance(); + cal.setTime(time); + //判断要计算的日期是否是周日,如果是则减一天计算周六的,否则会出问题,计算到下一周去了 + int dayWeek = cal.get(Calendar.DAY_OF_WEEK);//获得当前日期是一个星期的第几天 + if(1 == dayWeek) { + cal.add(Calendar.DAY_OF_MONTH, -1); + } + + cal.setFirstDayOfWeek(Calendar.MONDAY);//设置一个星期的第一天,按中国的习惯一个星期的第一天是星期一 + int day = cal.get(Calendar.DAY_OF_WEEK);//获得当前日期是一个星期的第几天 + cal.add(Calendar.DATE, cal.getFirstDayOfWeek()-day);//根据日历的规则,给当前日期减去星期几与一个星期第一天的差值 + cal.add(Calendar.DATE, 6); + String imptimeEnd = sdf.format(cal.getTime()); + + return imptimeEnd; + } + + + /** + * 根据日期计算所在周的周六 + * @param days 指定的日期 + * @param week 指定要加的周数 + * @return + * @throws ParseException + */ + public static String getRYLastDayOfWeek(String days, int week) throws ParseException { + SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd"); + Date time = format.parse(days); + SimpleDateFormat sdf = new SimpleDateFormat(SHORT_DATE_FORMAT); + Calendar cal = Calendar.getInstance(); + + cal.setTime(time); + cal.add(Calendar.WEEK_OF_MONTH, week); + // 设置星期天为本周的第一天 + cal.setFirstDayOfWeek(Calendar.SUNDAY); + // 最后一天为周六 + cal.set(Calendar.DAY_OF_WEEK, cal.getFirstDayOfWeek() + 6); + + // 获取 本周的最后一天 + return sdf.format(cal.getTime()); + } + + /** + * 根据日期计算所在周的周日 + * @param days 指定的日期 + * @param week 指定要加的周数 + * @throws ParseException + */ + public static String getRYFirstDayOfWeek(String days, int week) throws ParseException { + SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd"); + Date time = format.parse(days); + SimpleDateFormat sdf = new SimpleDateFormat(SHORT_DATE_FORMAT); + Calendar cal = Calendar.getInstance(); + + cal.setTime(time); + cal.add(Calendar.WEEK_OF_MONTH, week); + // 设置星期天为本周的第一天 + cal.setFirstDayOfWeek(Calendar.SUNDAY); + // 第一天 + cal.set(Calendar.DAY_OF_WEEK, cal.getFirstDayOfWeek()); + + // 获取 本周的第一天 + return sdf.format(cal.getTime()); + } + + /** + * 计算两个日期间的星期数 + * @param start: yyyyMMdd格式的时间 + * @param end: yyyyMMdd格式的时间 + * @param flg: 0:每周第一天是周日 1:每周第一天是周一 + * @return + * @throws Exception + */ + public static int computeWeeksBetween2Days(String start, String end, int flg) throws Exception { + int wks = 0; + + SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd"); + Date sdate = null ,edate = null; + sdate = format.parse(start); + edate = format.parse(end); + + Calendar sCalendar = Calendar.getInstance(); + sCalendar.setTime(sdate); + if (flg == 0) { + sCalendar.setFirstDayOfWeek(Calendar.SUNDAY); + sCalendar.set(Calendar.DAY_OF_WEEK, sCalendar.getFirstDayOfWeek()); + } + else if (flg == 1) { + int day = sCalendar.get(Calendar.DAY_OF_WEEK); + // 如果指定日期是星期天 + if (day == Calendar.SUNDAY) { + sCalendar.add(Calendar.DAY_OF_MONTH, -1); + } + // 设定一周的开始为星期一 + sCalendar.setFirstDayOfWeek(Calendar.MONDAY); + day = sCalendar.get(Calendar.DAY_OF_WEEK); + // 获取每周的第一天 + sCalendar.add(Calendar.DATE, -day + sCalendar.getFirstDayOfWeek()); + } + + + Calendar eCalendar = Calendar.getInstance(); + eCalendar.setTime(edate); + if (flg == 0) { + eCalendar.setFirstDayOfWeek(Calendar.SUNDAY); + eCalendar.set(Calendar.DAY_OF_WEEK, eCalendar.getFirstDayOfWeek()); + } + else if (flg == 1) { + int day = eCalendar.get(Calendar.DAY_OF_WEEK); + // 如果指定日期是星期天 + if (day == Calendar.SUNDAY) { + eCalendar.add(Calendar.DAY_OF_MONTH, -1); + } + // 设定一周的开始为星期一 + eCalendar.setFirstDayOfWeek(Calendar.MONDAY); + day = eCalendar.get(Calendar.DAY_OF_WEEK); + // 获取每周的第一天 + eCalendar.add(Calendar.DATE, -day + eCalendar.getFirstDayOfWeek()); + } + + + // eCalendar > = sCalendar + while (eCalendar.compareTo(sCalendar) >= 0) { + wks++; + sCalendar.add(Calendar.WEEK_OF_YEAR, 1); + } + + return wks; + } +} diff --git a/src/main/java/com/food/chain/common/util/EncryptUtil.java b/src/main/java/com/food/chain/common/util/EncryptUtil.java new file mode 100644 index 0000000000000000000000000000000000000000..a68d40872327bc7e1c40536decd77628936fbc12 --- /dev/null +++ b/src/main/java/com/food/chain/common/util/EncryptUtil.java @@ -0,0 +1,87 @@ +package com.food.chain.common.util; + +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; +import java.security.SecureRandom; + +import org.apache.commons.codec.binary.Base64; + + +public class EncryptUtil { + + //加密 + //paramMap.put("U_Pwd", BCrypt.hashpw(EncryptUtil.SHA512(password), BCrypt.gensalt())); + + /** + * 获取随机盐 + * @return + */ + public static String getSalt(){ + byte[] salt = new byte[8]; + final SecureRandom r = new SecureRandom(); + r.nextBytes(salt); + return Base64.encodeBase64String(salt); + } + + + /** + * 传入文本内容,返回 SHA-256 串 + * + * @param strText + * @return + */ + public static String SHA256(final String strText) { + return SHA(strText, "SHA-256"); + } + + /** + * 传入文本内容,返回 SHA-512 串 + * + * @param strText + * @return + */ + public static String SHA512(final String strText) { + return SHA(strText, "SHA-512"); + } + + /** + * 字符串 SHA 加密 + * + * @param strSourceText + * @return + */ + private static String SHA(final String strText, final String strType) { + // 返回值 + String strResult = null; + + // 是否是有效字符串 + if (strText != null && strText.length() > 0) { + try { + // SHA 加密开始 + // 创建加密对象 并傳入加密類型 + MessageDigest messageDigest = MessageDigest.getInstance(strType); + // 传入要加密的字符串 + messageDigest.update(strText.getBytes()); + // 得到 byte 類型结果 + byte byteBuffer[] = messageDigest.digest(); + + // 將 byte 轉換爲 string + StringBuffer strHexString = new StringBuffer(); + // 遍歷 byte buffer + for (int i = 0; i < byteBuffer.length; i++) { + String hex = Integer.toHexString(0xff & byteBuffer[i]); + if (hex.length() == 1) { + strHexString.append('0'); + } + strHexString.append(hex); + } + // 得到返回結果 + strResult = strHexString.toString(); + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + } + } + + return strResult; + } +} diff --git a/src/main/java/com/food/chain/common/util/ExcelUtil.java b/src/main/java/com/food/chain/common/util/ExcelUtil.java new file mode 100644 index 0000000000000000000000000000000000000000..219cf12b193ccb18fd8c2ab33ff92b1c63a47ab8 --- /dev/null +++ b/src/main/java/com/food/chain/common/util/ExcelUtil.java @@ -0,0 +1,193 @@ +package com.food.chain.common.util; + +import java.io.BufferedOutputStream; +import java.io.IOException; +import java.io.OutputStream; +import java.lang.reflect.InvocationTargetException; +import java.net.URLEncoder; +import java.util.List; + +import javax.servlet.http.HttpServletResponse; + +import org.apache.commons.beanutils.BeanUtils; +import org.apache.poi.hssf.usermodel.HSSFCell; +import org.apache.poi.hssf.usermodel.HSSFCellStyle; +import org.apache.poi.hssf.usermodel.HSSFFont; +import org.apache.poi.hssf.usermodel.HSSFRow; +import org.apache.poi.hssf.usermodel.HSSFSheet; +import org.apache.poi.hssf.usermodel.HSSFWorkbook; +import org.apache.poi.ss.usermodel.BorderStyle; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.apache.poi.ss.usermodel.VerticalAlignment; + +public class ExcelUtil { + + /** + * 创建表头 + * @param sheetName: sheet名 + * @param sheetTitle: sheet列的表头 + * @return + */ + private static HSSFWorkbook makeExcelHead(String sheetName, String[] sheetTitle) { + HSSFWorkbook workbook = new HSSFWorkbook(); + // 创建sheet + HSSFSheet sheet = workbook.createSheet(sheetName); + + sheet.setAutobreaks(true); + HSSFRow row = sheet.createRow(0); + // 设置表头字体 + HSSFCellStyle style = setCellStyle(workbook, (short)13, true); + + for (int i = 0; i < sheetTitle.length; i++) { + // 创建单元格 + HSSFCell cell = row.createCell(i); + // 设值 + cell.setCellValue(sheetTitle[i]); + // 设置样式 + cell.setCellStyle(style); + } + + return workbook; + } + + /** + * 导出Excel + * @param fileName: 导出文件名 + * @param sheetName: sheet名 + * @param sheetTitle: sheet列的表头 + * @param dataList: 导出数据列表 + * @param beanPropertys: sheet列的表头对应的数据库字段 + * @param response: 服务器返回类型 + * @return + * @throws IllegalAccessException + * @throws InvocationTargetException + * @throws NoSuchMethodException + * @throws IOException + */ + public static void exportExcelData(String fileName, + String sheetName, + String[] sheetTitle, + List dataList, + String[] beanPropertys, + HttpServletResponse response) + throws IllegalAccessException, InvocationTargetException, NoSuchMethodException, IOException { + // 创建Excel工作簿对象 + HSSFWorkbook workbook = makeExcelHead(sheetName, sheetTitle); + HSSFSheet sheet = workbook.getSheetAt(0); + + // 填充数据 + HSSFCellStyle cellStyle = setCellStyle(workbook, (short)11, false); + + int size = dataList.size(); + for (int i = 0; i < size; i++) { + // 获取每一行 + HSSFRow row = sheet.createRow(i + 1); // +1:第一行写了表头 + T t = dataList.get(i); + + for (int j = 0; j < beanPropertys.length; j++) { + // 获取属性值 + Object value = BeanUtils.getProperty(t, beanPropertys[j]); + // 创建单元格 + HSSFCell cell = row.createCell(j); + + // 给单元格赋值 + cell.setCellValue(value.toString()); + + // 给单元格设置样式 + cell.setCellStyle(cellStyle); + } + } + + // 调整列宽 + changeColumnWidth(sheet, sheetTitle); + + // 设置response的Header + response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8")); + response.setContentType("application/vnd.ms-excel"); + OutputStream out = new BufferedOutputStream(response.getOutputStream()); + workbook.write(out); + out.flush(); + out.close(); + } + + + /** + * 设置单元格样式 + * @param workbook: 工作簿对象 + * @param fontSize: 字体大小 + * @param boolBold: 是否要加粗 + * @return 单元格样式 + */ + private static HSSFCellStyle setCellStyle(HSSFWorkbook workbook, short fontSize, boolean boolBold){ + // 设置表头字体 + HSSFCellStyle style = workbook.createCellStyle(); + if (boolBold) { // 表头居中 + style.setAlignment(HorizontalAlignment.CENTER); + style.setVerticalAlignment(VerticalAlignment.CENTER); + } + // 字体样式 + HSSFFont font = workbook.createFont(); + // 字体大小 + font.setFontHeightInPoints(fontSize); + // 加粗 + font.setBold(boolBold); + style.setFont(font); + + // 自动换行 + style.setWrapText(true); + + // 设置边框 + // 下边框 + style.setBorderBottom(BorderStyle.THIN); + // 左边框 + style.setBorderLeft(BorderStyle.THIN); + // 右边框 + style.setBorderRight(BorderStyle.THIN); + // 上边框 + style.setBorderTop(BorderStyle.THIN); + + return style; + } + + /** + * 根据单元格不同属性返回字符串数值 + * @param cell + * @return + */ + public static String getCellStringValue(HSSFCell cell) { + String cellVal = cell.getStringCellValue(); + switch (cell.getCellTypeEnum()) { + case STRING: + cellVal = cell.getStringCellValue(); + if(cellVal.trim().equals("")||cellVal.trim().length()<=0) { + cellVal = ""; + } + break; + case NUMERIC: + cellVal = String.valueOf(cell.getNumericCellValue()); + break; + case BLANK: + cellVal = ""; + break; + case BOOLEAN: + case ERROR: + break; + default: + break; + } + + return cellVal; + } + + /** + * 调整列宽 + * @param sheet + * @param sheetTitle + */ + private static void changeColumnWidth(HSSFSheet sheet, String[] sheetTitle) { + for (int i = 0; i < sheetTitle.length; i++) { + // 调整列宽 + sheet.autoSizeColumn(i); + } + } +} diff --git a/src/main/java/com/food/chain/common/util/HttpUtil.java b/src/main/java/com/food/chain/common/util/HttpUtil.java new file mode 100644 index 0000000000000000000000000000000000000000..21e48c09ca9fffead2705cb9ef4925949b4e84d5 --- /dev/null +++ b/src/main/java/com/food/chain/common/util/HttpUtil.java @@ -0,0 +1,44 @@ +package com.food.chain.common.util; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.net.HttpURLConnection; +import java.net.URL; + +public class HttpUtil { + + public static String getURLContent(String urlStr) { + // 网络URL地址 + URL url = null; + + // http连接 + HttpURLConnection httpURLConnection = null; + + BufferedReader in = null; + + StringBuffer buffer = new StringBuffer(); + try { + url = new URL(urlStr); + in = new BufferedReader(new InputStreamReader(url.openStream(), "UTF-8")); + String str = null; + while ((str = in.readLine()) != null) { + buffer.append(str); + } + } catch (Exception e) { + e.printStackTrace(); + }finally { + try { + if (in != null) { + in.close(); + } + } catch (IOException ex) { + } + } + + String result = buffer.toString(); + System.out.println(result); + return result; + } + +} diff --git a/src/main/java/com/food/chain/common/util/IpUtil.java b/src/main/java/com/food/chain/common/util/IpUtil.java new file mode 100644 index 0000000000000000000000000000000000000000..6b0566c04eee7926de7a1e11ca2ed6a6f697de51 --- /dev/null +++ b/src/main/java/com/food/chain/common/util/IpUtil.java @@ -0,0 +1,60 @@ +package com.food.chain.common.util; + +import java.net.InetAddress; +import java.net.UnknownHostException; + +import javax.servlet.http.HttpServletRequest; + +/** + * 获取客户端IP + * + */ +public class IpUtil { + /** + * 获取客户端IP + * + * @param request + * @return + */ + public static String getRemortIP(HttpServletRequest request) { + // if (request.getHeader("x-forwarded-for") == null) { + // return request.getRemoteAddr(); + // } + // return request.getHeader("x-forwarded-for"); + String ipAddress = null; + // ipAddress = request.getRemoteAddr(); + ipAddress = request.getHeader("x-forwarded-for"); + if (ipAddress == null || ipAddress.length() == 0 + || "unknown".equalsIgnoreCase(ipAddress)) { + ipAddress = request.getHeader("Proxy-Client-IP"); + } + if (ipAddress == null || ipAddress.length() == 0 + || "unknown".equalsIgnoreCase(ipAddress)) { + ipAddress = request.getHeader("WL-Proxy-Client-IP"); + } + if (ipAddress == null || ipAddress.length() == 0 + || "unknown".equalsIgnoreCase(ipAddress)) { + ipAddress = request.getRemoteAddr(); + if (ipAddress.equals("127.0.0.1")) { + // 根据网卡取本机配置的IP + InetAddress inet = null; + try { + inet = InetAddress.getLocalHost(); + } catch (UnknownHostException e) { + e.printStackTrace(); + } + ipAddress = inet.getHostAddress(); + } + + } + + // 对于通过多个代理的情况,第一个IP为客户端真实IP,多个IP按照','分割 + if (ipAddress != null && ipAddress.length() > 15) { // "***.***.***.***".length() + // = 15 + if (ipAddress.indexOf(",") > 0) { + ipAddress = ipAddress.substring(0, ipAddress.indexOf(",")); + } + } + return ipAddress; + } +} diff --git a/src/main/java/com/food/chain/common/util/PropertyUtil.java b/src/main/java/com/food/chain/common/util/PropertyUtil.java new file mode 100644 index 0000000000000000000000000000000000000000..9aeec1001d8326fed609dd8194e9dbb87f6021bf --- /dev/null +++ b/src/main/java/com/food/chain/common/util/PropertyUtil.java @@ -0,0 +1,44 @@ +package com.food.chain.common.util; + +import java.io.InputStream; +import java.util.Properties; + +/** + * 读取property文件工具 + */ +public class PropertyUtil { + private final static String FILE_NAME = "config.properties"; + private static Properties property = null; + + static { + if (null == property) { + property = new Properties(); + } + try { + InputStream in = PropertyUtil.class.getClassLoader().getResourceAsStream(FILE_NAME); + property.load(in); + in.close(); + } catch (Exception e) { + e.printStackTrace(); + } + } + + public static String getProperty(String key) { + return property.getProperty(key); + } + + public static String getProperty(String file_name, String key) { + if (null == property) { + property = new Properties(); + } + try { + InputStream in = PropertyUtil.class.getClassLoader().getResourceAsStream(file_name); + property.load(in); + in.close(); + } catch (Exception e) { + e.printStackTrace(); + } + return property.getProperty(key); + } + +} \ No newline at end of file diff --git a/src/main/java/com/food/chain/constant/Constant.java b/src/main/java/com/food/chain/constant/Constant.java new file mode 100644 index 0000000000000000000000000000000000000000..b366acd247a07c20aea011109d029c497eec815d --- /dev/null +++ b/src/main/java/com/food/chain/constant/Constant.java @@ -0,0 +1,11 @@ +package com.food.chain.constant; + +public class Constant { + public final static String jsonStr_exception = "{\"success\":false,\"code\":\"-1\",\"message\":\"服务端处理异常\"}"; + + // 用户有效 + public final static String USRE_VALIDE = "1"; + + // 用户无效 + public final static String USRE_UNVALIDE = "0"; +} diff --git a/src/main/java/com/food/chain/controller/UserController.java b/src/main/java/com/food/chain/controller/UserController.java new file mode 100644 index 0000000000000000000000000000000000000000..3b7cbae87612136b12135f37e876f120bf50f966 --- /dev/null +++ b/src/main/java/com/food/chain/controller/UserController.java @@ -0,0 +1,157 @@ +package com.food.chain.controller; + +import java.util.HashMap; +import java.util.Map; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.apache.shiro.SecurityUtils; +import org.apache.shiro.authc.UsernamePasswordToken; +import org.apache.shiro.subject.Subject; +import org.mindrot.jbcrypt.BCrypt; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; + +import com.alibaba.fastjson.JSONObject; +import com.food.chain.common.util.EncryptUtil; +import com.food.chain.constant.Constant; +import com.food.chain.entity.User; +import com.food.chain.service.UserService; + +@Controller +@RequestMapping("/user") +public class UserController { + + @Autowired + private UserService userService; + + @Autowired + private HttpServletResponse response; + + @Autowired + private HttpServletRequest request; + + /** + * 用户认证登录 + * @param jsonString + * @return + */ + @RequestMapping(value = "/login") + @ResponseBody + public JSONObject userLogin(String userId, String password) { + JSONObject returnMap = new JSONObject(); + + Subject currentUser = SecurityUtils.getSubject(); + // 加密 + //String strEncodePsw = BCrypt.hashpw(EncryptUtil.SHA512(password), BCrypt.gensalt()); + UsernamePasswordToken token = + new UsernamePasswordToken(userId, password); + // 登录 + currentUser.login(token); + + // 更新IP地址 + userService.updateUserLoginIP(userId); + returnMap.put("success", true); + returnMap.put("redirect", "/index.jsp"); + //returnMap = JSONObject.parseObject(Constant.jsonStr_exception); + //response.setStatus(500); + + return returnMap; + } + + /** + * 退出系统 + */ + @RequestMapping(value = "/logout") + @ResponseBody + public void logout() { + // 退出系统 + SecurityUtils.getSubject().logout(); + } + + /** + * 用户列表 + * @param model + * @return + */ + @RequestMapping(value = "/users") + @ResponseBody + public Map getUsers(String jsonString) { + Map result = new HashMap<>(); + try { + result = userService.GetUserList(jsonString); + } catch (Exception e) { + result = JSONObject.parseObject(Constant.jsonStr_exception); + } + + return result; + } + + @RequestMapping(value = "/add.do", method = RequestMethod.POST) + public String addUser(User user) throws Exception{ + + int index = userService.addUser(user); + System.out.println(index); + return "redirect:users"; + } + + @RequestMapping(value = "/newUser", method = RequestMethod.GET) + public String userAdd(){ + return "addUser"; + } + + + /** + * 列表导出 + * @throws Exception + */ + @RequestMapping(value = "/exportUserInfo") + @ResponseBody + public void exportUserInfo(String jsonString, HttpServletResponse response) throws Exception { + userService.exportUserInfo(jsonString,response); + } + + /** + * 前端导出所需数据 + * @throws Exception + */ + @RequestMapping(value = "/exportUserInfoList") + @ResponseBody + public Map exportUserInfoList(String jsonString) throws Exception { + Map result = new HashMap<>(); + try { + result = userService.exportUserInfoList(jsonString); + } catch (Exception e) { + result = JSONObject.parseObject(Constant.jsonStr_exception); + } + + return result; + } + + + /** + * 更新用户密码 + * @param oldpwd:旧密码 + * @param newpwd:新密码 + * @return + */ + @RequestMapping(value = "/updatepwd") + @ResponseBody + public Map updateUserPwd(String oldpwd, String newpwd) { + Map result = new HashMap<>(); + try { + result = userService.changePwd(oldpwd, newpwd); + } catch (Exception e) { + result = JSONObject.parseObject(Constant.jsonStr_exception); + response.setStatus(500); + } + + return result; + } + + +} diff --git a/src/main/java/com/food/chain/dao/StudentInterfaceDao.java b/src/main/java/com/food/chain/dao/StudentInterfaceDao.java new file mode 100644 index 0000000000000000000000000000000000000000..3292db525e5ce7b3c284c1f8386bd5303c39d0aa --- /dev/null +++ b/src/main/java/com/food/chain/dao/StudentInterfaceDao.java @@ -0,0 +1,24 @@ +package com.food.chain.dao; + +import java.util.List; +import java.util.Map; + +import com.alibaba.fastjson.JSONObject; +import com.food.chain.entity.User; + +public interface StudentInterfaceDao { + List> getUser(JSONObject object); + + int saveUser(User user); + + int getNumberOfAllUser(JSONObject object); + + /** + * 导出User信息 + * @param object + * @return + */ + List> getUserExportList(JSONObject object); + + +} diff --git a/src/main/java/com/food/chain/dao/UserDao.java b/src/main/java/com/food/chain/dao/UserDao.java new file mode 100644 index 0000000000000000000000000000000000000000..4bf78c36cf6bf517b736c14282a1fcfaec7c6e35 --- /dev/null +++ b/src/main/java/com/food/chain/dao/UserDao.java @@ -0,0 +1,41 @@ +package com.food.chain.dao; + +import java.util.Map; +import java.util.Set; + + +public interface UserDao { + + /** + * 获取用户信息 + * @param jsonObject + * @return + */ + public Map getUserInfo(String userId); + + /** + * 更新登录的IP + * @param paramMap + */ + void updateUserLoginIP(Map paramMap); + + /** + * 更新密码 + * @param userMap + */ + void updateUserPwd(Map userMap); + + /** + * 获取指定用户的角色 + * @param userId + * @return + */ + Set getUserRoles(String userId); + + /** + * 获取指定用户的权限 + * @param userId + * @return + */ + Set getPermissions(String userId); +} diff --git a/src/main/java/com/food/chain/db/realm/FoodChainRealm.java b/src/main/java/com/food/chain/db/realm/FoodChainRealm.java new file mode 100644 index 0000000000000000000000000000000000000000..0a10f741ac571e969f8b0848d87fdc63f4c0f60c --- /dev/null +++ b/src/main/java/com/food/chain/db/realm/FoodChainRealm.java @@ -0,0 +1,85 @@ +package com.food.chain.db.realm; + +import java.util.Map; + +import javax.annotation.PostConstruct; + +import org.apache.shiro.SecurityUtils; +import org.apache.shiro.authc.AuthenticationException; +import org.apache.shiro.authc.AuthenticationInfo; +import org.apache.shiro.authc.AuthenticationToken; +import org.apache.shiro.authc.SimpleAuthenticationInfo; +import org.apache.shiro.authc.UsernamePasswordToken; +import org.apache.shiro.authz.AuthorizationInfo; +import org.apache.shiro.authz.SimpleAuthorizationInfo; +import org.apache.shiro.realm.AuthorizingRealm; +import org.apache.shiro.subject.PrincipalCollection; +import org.springframework.beans.factory.annotation.Autowired; + +import com.food.chain.dao.UserDao; +import com.food.chain.security.CustomCredentialsMatcher; + +public class FoodChainRealm extends AuthorizingRealm { + + @Autowired + private UserDao userDao; + + /** + * 授权,有三种方法会进入此方法 + * 1.调用subject.hasRole(“admin”) 或 subject.isPermitted(“admin”) + * 2.@RequiresRoles("admin") :在方法上加注解的时候; + * 3.在页面上加shiro标签的时候,即进这个页面的时候 + */ + @Override + protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) { + // 授权信息 + SimpleAuthorizationInfo info = null; + + // 获取登录的用户ID + // principalCollection.fromRealm(getName()).iterator().next(); + String userId = (String) getAvailablePrincipal(principalCollection); + Map userInfo= userDao.getUserInfo(userId); + if (userInfo != null && !userInfo.isEmpty()) { + info = new SimpleAuthorizationInfo(); + // 用户的角色集合 + info.setRoles(userDao.getUserRoles(userId)); + // 设置用户的权限 + info.setStringPermissions(userDao.getPermissions(userId)); + } + + return info; + } + + /** + * 认证 + * 该方法在SecurityUtils.getSubject().login(token);的时候调用 + */ + @Override + protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken aToken) throws AuthenticationException { + SimpleAuthenticationInfo info = null; + UsernamePasswordToken token = (UsernamePasswordToken) aToken; + // 获取用户输入的用户ID + String userId = token.getUsername(); + // 根据用户名到数据库查询数据获取指定的用户信息 + Map userInfo = userDao.getUserInfo(userId); + if (userInfo != null && !userInfo.isEmpty()) { + // 输入的password和数据库获得passWord对比 + // 相等才通过认证 + info = new SimpleAuthenticationInfo(userId, userInfo.get("U_Pwd"), this.getName()); + } + + return info; + } + + /** + * 设定密码校验 + */ +// @PostConstruct +// public void initCredentialsMatcher() { +// // 自定义加密匹配 +// CustomCredentialsMatcher matcher = new CustomCredentialsMatcher(); +// +// // 设定shiro的密码验证规则为自定义的验证密码规则 +// setCredentialsMatcher(matcher); +// } +} diff --git a/src/main/java/com/food/chain/entity/User.java b/src/main/java/com/food/chain/entity/User.java new file mode 100644 index 0000000000000000000000000000000000000000..7b502d87823c0f3752aa7c0fa1b739c4e71a1d5f --- /dev/null +++ b/src/main/java/com/food/chain/entity/User.java @@ -0,0 +1,65 @@ +package com.food.chain.entity; + +import java.util.Calendar; +import java.util.Date; + +public class User { + + private Integer Id; + public Date createDate = Calendar.getInstance().getTime(); + public Integer isDelete; + public String userName; + public String password; + + public String emailAddress; + + public Integer getId() { + return Id; + } + + public void setId(Integer id) { + Id = id; + } + + public Date getCreateDate() { + return createDate; + } + + public void setCreateDate(Date createDate) { + this.createDate = createDate; + } + + public Integer getIsDelete() { + return isDelete; + } + + public void setIsDelete(Integer isDelete) { + this.isDelete = isDelete; + } + + public String getUserName() { + return userName; + } + + public void setUserName(String userName) { + this.userName = userName; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + public String getEmailAddress() { + return emailAddress; + } + + public void setEmailAddress(String emailAddress) { + this.emailAddress = emailAddress; + } + + +} diff --git a/src/main/java/com/food/chain/filter/LoginFilter.java b/src/main/java/com/food/chain/filter/LoginFilter.java new file mode 100644 index 0000000000000000000000000000000000000000..362a301416aedfd408dc5cd641512ac8d720254f --- /dev/null +++ b/src/main/java/com/food/chain/filter/LoginFilter.java @@ -0,0 +1,120 @@ +package com.food.chain.filter; + +import java.io.IOException; +import java.io.PrintWriter; +import java.util.Map; + +import javax.servlet.FilterChain; +import javax.servlet.ServletException; +import javax.servlet.http.Cookie; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.springframework.web.filter.OncePerRequestFilter; + +import com.alibaba.fastjson.JSONObject; +import com.food.chain.common.jwt.Jwt; +import com.food.chain.common.jwt.TokenState; +import com.food.chain.common.util.PropertyUtil; + + +/** + * 登录过滤 + * + * @author WF + */ +public class LoginFilter extends OncePerRequestFilter { + + private static Logger logger = LogManager.getLogger(LoginFilter.class.getName()); + + @Override + protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException { + //不校验token的接口和页面 + String[] notFilter = new String[] {"/", "login.jsp", "/user/login", "/pages/users.jsp"}; + String URI = request.getRequestURI(); + logger.info("URI:"+URI); +// logger.info("ContextPath:"+request.getContextPath()); + String token = request.getHeader("token"); + + //当header中没有token,从cookies中获取token + if(token == null || token.isEmpty()){ + //从cookie中获取token + Cookie[] cookies = request.getCookies(); + if(cookies != null){ + for (Cookie c : cookies) { + if (c.getName().equals("token")) { + token = c.getValue(); + } + } + } + } + + //校验token + Map resultMap = Jwt.validToken(token); + TokenState state = TokenState.getTokenState((String)resultMap.get("state")); + switch (state) { + case VALID: + //取出payload中数据,放入到request作用域中 + request.setAttribute("user_info", resultMap.get("data")); + //设置数据源 + @SuppressWarnings("unchecked") + Map userMap = (Map) resultMap.get("data"); + + //如果请求登录页,则跳转用户首页 + if(URI.endsWith("/") || URI.endsWith("login.jsp")){ + String redirect = PropertyUtil.getProperty("userIndex");; + /*String u_role = userMap.get("u_role").toString(); + if("1".equals(u_role)){//教师 + redirect = PropertyUtil.getProperty("teacherIndex"); + } + if("2".equals(u_role)){//学生 + redirect = PropertyUtil.getProperty("studentIndex"); + } + if("0".equals(u_role)){//校管理员 + redirect = PropertyUtil.getProperty("adminIndex"); + } + if("99".equals(u_role)){//超管 + redirect = PropertyUtil.getProperty("superAdminIndex"); + }*/ + response.sendRedirect(request.getContextPath() + redirect); + return; + } + //放行 + filterChain.doFilter(request, response); + break; + case EXPIRED: + case INVALID: + default: + //匹配是否校验token + for (String s : notFilter) { + if (URI.endsWith(s)) { + //不校验token,直接放行 + filterChain.doFilter(request, response); + return; + } + } + + //token过期或者无效,跳转登陆页 + if (URI.endsWith(".jsp")) { + response.sendRedirect("/login.jsp"); + }else{ + JSONObject outputMsg = new JSONObject(); + outputMsg.put("success", false); + outputMsg.put("message", "token无效,请重新登陆"); + output(outputMsg.toString(), response); + } + break; + } + + } + + public void output(String jsonStr, HttpServletResponse response) throws IOException{ + response.setContentType("application/json;charset=UTF-8;"); + PrintWriter out = response.getWriter(); + out.write(jsonStr); + out.flush(); + out.close(); + } +} \ No newline at end of file diff --git a/src/main/java/com/food/chain/filter/UrlFilter.java b/src/main/java/com/food/chain/filter/UrlFilter.java new file mode 100644 index 0000000000000000000000000000000000000000..ebaf9ea1a0c93ebdbbc9cd43463cdb72571b529b --- /dev/null +++ b/src/main/java/com/food/chain/filter/UrlFilter.java @@ -0,0 +1,54 @@ +package com.food.chain.filter; + +import java.io.IOException; +import java.net.URLDecoder; + +import javax.servlet.Filter; +import javax.servlet.FilterChain; +import javax.servlet.FilterConfig; +import javax.servlet.ServletException; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +public class UrlFilter implements Filter { + + public final static String DEFAULT_URI_ENCODE = "UTF-8"; + + private FilterConfig config = null; + private String encode = null; + + @Override + public void init(FilterConfig config) throws ServletException { + this.config = config; + this.encode = config.getInitParameter("DEFAULT_URI_ENCODE"); + if(this.encode == null) { + this.encode = DEFAULT_URI_ENCODE; + } + } + + @Override + public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { + HttpServletResponse response = (HttpServletResponse) res; + response.setHeader("Access-Control-Allow-Origin", "*"); + response.setHeader("Access-Control-Allow-Methods", "POST, GET"); + response.setHeader("Access-Control-Max-Age", "3600"); + response.setHeader("Access-Control-Allow-Headers", "token"); + + HttpServletRequest request = (HttpServletRequest) req; + String uri = request.getRequestURI(); + String ch = URLDecoder.decode(uri, encode); + if(uri.equals(ch)) { + chain.doFilter(req, res); + return; + } + ch = ch.substring(request.getContextPath().length()); + config.getServletContext().getRequestDispatcher(ch).forward(req, res); + } + + @Override + public void destroy() { + config = null; + } +} \ No newline at end of file diff --git a/src/main/java/com/food/chain/redis/RedisCacheUtil.java b/src/main/java/com/food/chain/redis/RedisCacheUtil.java new file mode 100644 index 0000000000000000000000000000000000000000..35268e625dd1dae7e5613d5fb69d6d2b35461566 --- /dev/null +++ b/src/main/java/com/food/chain/redis/RedisCacheUtil.java @@ -0,0 +1,183 @@ +package com.food.chain.redis; + +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; +import java.util.concurrent.Callable; + +import org.springframework.cache.Cache; +import org.springframework.cache.support.SimpleValueWrapper; +import org.springframework.dao.DataAccessException; +import org.springframework.data.redis.connection.RedisConnection; +import org.springframework.data.redis.core.RedisCallback; +import org.springframework.data.redis.core.RedisTemplate; + + +public class RedisCacheUtil implements Cache{ + + private RedisTemplate redisTemplate; + private String name; + + public RedisTemplate getRedisTemplate() { + return this.redisTemplate; + } + + /** + * 通过setter方式注入 + * @param redisTemplate + */ + public void setRedisTemplate(RedisTemplate redisTemplate) { + this.redisTemplate = redisTemplate; + } + + public void setName(String name) { + this.name = name; + } + + @Override + public String getName() { + return this.name; + } + + @Override + public void clear() { + redisTemplate.execute(new RedisCallback() { + + @Override + public String doInRedis(RedisConnection connection) throws DataAccessException { + connection.flushDb(); + return "ok"; + } + }); + } + + /** + * 删除key + */ + @Override + public void evict(Object key) { + final String keyf = key.toString(); + redisTemplate.execute(new RedisCallback() { + @Override + public Long doInRedis(RedisConnection connection) throws DataAccessException { + return connection.del(keyf.getBytes()); + } + }); + } + + /** + * 从缓存中获取key + */ + @Override + public ValueWrapper get(Object arg0) { + final String keyf = arg0.toString(); + Object object = null; + object = this.redisTemplate.execute(new RedisCallback() { + @Override + public Object doInRedis(RedisConnection connection) throws DataAccessException { + byte[] keys = keyf.getBytes(); + byte[] value = connection.get(keys); + if (value == null) { + return null; + } + + return toObject(value); + } + }); + return (object != null ? new SimpleValueWrapper(object) : null); + } + + @Override + public T get(Object arg0, Class arg1) { + // TODO Auto-generated method stub + return null; + } + + @Override + public T get(Object arg0, Callable arg1) { + // TODO Auto-generated method stub + return null; + } + + + + @Override + public Object getNativeCache() { + return this.redisTemplate; + } + + /** + * 将一个新的key保存到缓存中 + * 先拿到需要缓存key名称和对象,然后将其转成ByteArray + */ + @Override + public void put(Object key, Object value) { + final String keyf = key.toString(); + final Object valuef = value; + final long liveTime = 86400; + redisTemplate.execute(new RedisCallback() { + @Override + public Long doInRedis(RedisConnection connection) throws DataAccessException { + byte[] keys = keyf.getBytes(); + byte[] valueb = toByteArray(valuef); + connection.set(keys, valueb); + // 设定过期时间 + if (liveTime > 0) { + connection.expire(keys, liveTime); + } + return 1L; + } + }); + } + + @Override + public ValueWrapper putIfAbsent(Object arg0, Object arg1) { + // TODO Auto-generated method stub + return null; + } + + /** + * Object对象 转 byte数组 + * @param obj + * @return + */ + private byte[] toByteArray(Object obj){ + byte[] bytes = null; + + ByteArrayOutputStream bos = new ByteArrayOutputStream(); + + try { + ObjectOutputStream oos = new ObjectOutputStream(bos); + oos.writeObject(obj); + oos.flush(); + bytes = bos.toByteArray(); + oos.close(); + bos.close(); + } catch (Exception e) { + e.printStackTrace(); + } + + return bytes; + } + + /** + * byte数组 转 Object对象 + * @param bytes + * @return + */ + private Object toObject(byte[] bytes) { + Object object = null; + try { + ByteArrayInputStream bis = new ByteArrayInputStream(bytes); + ObjectInputStream ois = new ObjectInputStream(bis); + object = ois.readObject(); + ois.close(); + bis.close(); + } catch (Exception e) { + e.printStackTrace(); + } + + return object; + } +} diff --git a/src/main/java/com/food/chain/security/CustomCredentialsMatcher.java b/src/main/java/com/food/chain/security/CustomCredentialsMatcher.java new file mode 100644 index 0000000000000000000000000000000000000000..b2f5b232098b273bb5ecc5526a0bfb7c6a544476 --- /dev/null +++ b/src/main/java/com/food/chain/security/CustomCredentialsMatcher.java @@ -0,0 +1,66 @@ +package com.food.chain.security; + +import java.util.concurrent.atomic.AtomicInteger; + +import org.apache.shiro.authc.AuthenticationInfo; +import org.apache.shiro.authc.AuthenticationToken; +import org.apache.shiro.authc.ExcessiveAttemptsException; +import org.apache.shiro.authc.UsernamePasswordToken; +import org.apache.shiro.authc.credential.SimpleCredentialsMatcher; +import org.apache.shiro.cache.Cache; +import org.apache.shiro.cache.CacheException; +import org.apache.shiro.cache.CacheManager; +import org.mindrot.jbcrypt.BCrypt; +import org.springframework.beans.factory.annotation.Autowired; + +import com.food.chain.common.util.EncryptUtil; + + +/** + * 自定义密码验证 + * @author ruyi + * + */ +public class CustomCredentialsMatcher extends SimpleCredentialsMatcher { + + private Cache passwordRetryCache; + + /** + * 通过构造函数的方式注入 + * @param customCacheManager + */ + public CustomCredentialsMatcher(CacheManager customCacheManager) { + passwordRetryCache = customCacheManager.getCache("passwordRetryCache"); + } + + @Override + public boolean doCredentialsMatch(AuthenticationToken itoken, AuthenticationInfo info) { + UsernamePasswordToken token = (UsernamePasswordToken) itoken; + + String userName = (String) token.getPrincipal(); + AtomicInteger element = passwordRetryCache.get(userName); + + if (element == null) { + element = new AtomicInteger(0); + passwordRetryCache.put(userName, element); + } + + if (element.incrementAndGet() > 5) { + throw new ExcessiveAttemptsException("密码输入错误已超过5次"); + } + + // 获取用户输入的密码 + String psw = String.valueOf(token.getPassword()); + // 获取从数据库取得的密码 + Object credentials = getCredentials(info); + + // 加密对比 + boolean matches = BCrypt.checkpw(EncryptUtil.SHA512(psw), String.valueOf(credentials)); + + if (matches) { + passwordRetryCache.remove(userName); + } + + return matches; + } +} diff --git a/src/main/java/com/food/chain/service/UserService.java b/src/main/java/com/food/chain/service/UserService.java new file mode 100644 index 0000000000000000000000000000000000000000..776e55d9aa645e04c09499b7fd782b89afb4b24a --- /dev/null +++ b/src/main/java/com/food/chain/service/UserService.java @@ -0,0 +1,257 @@ +package com.food.chain.service; + +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import javax.servlet.http.Cookie; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.apache.shiro.SecurityUtils; +import org.apache.shiro.subject.Subject; +import org.mindrot.jbcrypt.BCrypt; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import com.alibaba.fastjson.JSONObject; +import com.food.chain.common.jwt.Jwt; +import com.food.chain.common.util.EncryptUtil; +import com.food.chain.common.util.ExcelUtil; +import com.food.chain.common.util.IpUtil; +import com.food.chain.common.util.PropertyUtil; +import com.food.chain.constant.Constant; +import com.food.chain.dao.StudentInterfaceDao; +import com.food.chain.dao.UserDao; +import com.food.chain.entity.User; + +@Service +@Transactional +public class UserService { + private static final SimpleDateFormat format_file = new SimpleDateFormat("yyyyMMddHHmmss"); + @Autowired + private StudentInterfaceDao studentDao; + + @Autowired + private UserDao userDao; + + @Autowired + private HttpServletResponse response; + + @Autowired + private HttpServletRequest request; + + /** + * 用户登录 + * @param jsonString + * @return + */ + public JSONObject userLogin(String jsonString) throws Exception{ + JSONObject result = new JSONObject(); + + JSONObject object = JSONObject.parseObject(jsonString); + + if (object == null || object.isEmpty()) { + result.put("success", false); + result.put("message", "请输入用户名和密码"); + }else { + Map param = new HashMap<>(); + param.put("userID", object.get("userId")); + String pwd = ""; + if (object.get("password") != null) { + pwd = object.get("password").toString(); + } + // 获取用户信息 + Map userMap = userDao.getUserInfo(object.get("userId").toString()); + + String password = userMap.get("U_Pwd").toString(); + // 密码check + if (BCrypt.checkpw(EncryptUtil.SHA512(pwd), password)) { + // token做成 + Map payload = new HashMap(); + Date date = new Date(); + payload.put("u_id", object.get("userId"));//用户ID + payload.put("u_name", userMap.get("U_Name").toString());//用户名 + payload.put("u_role", userMap.get("U_Role").toString());//用户角色 + payload.put("isadmin", userMap.get("IsAdmin").toString());//是否管理员 + payload.put("u_avatar", userMap.get("U_Avatar").toString());//用户头像 + payload.put("iat", date.getTime());//生成时间 + payload.put("exp", date.getTime() + 1000*60*60*24*7);//过期时间7天 + String token = Jwt.createToken(payload); + + // 更新用户登陆时间和ip + Map paramMap = new HashMap(); + paramMap.put("userID", object.get("userId")); + paramMap.put("ip", IpUtil.getRemortIP(request)); + userDao.updateUserLoginIP(paramMap); + + //设置cookie + Cookie cookie = new Cookie("token", token); + cookie.setMaxAge(60*60*24*7);//设置cookie过期时间7天 + cookie.setPath("/"); + response.addCookie(cookie); + + // 获取跳转的画面 + String redirect = PropertyUtil.getProperty("userIndex");; + + result.put("success", true); + result.put("message", "登陆成功"); + result.put("redirect", redirect); + result.put("u_id", object.get("userId"));//用户ID + result.put("U_Pwd", password);//用户ID + result.put("role", userMap.get("U_Role").toString());//用户角色 + }else { + result.put("success", false); + result.put("message", "用户名或密码不正确"); + } + } + + return result; + } + + + /** + * 修改密码 + * @throws Exception + */ + public JSONObject changePwd(String oldpwd, String newpwd) throws Exception { + JSONObject returnMap = new JSONObject(); + +// @SuppressWarnings("unchecked") +// Map uMap = (Map) request.getAttribute("user_info"); +// Map param = new HashMap<>(); +// param.put("userID", uMap.get("u_id")); + + // 获取登录信息 + Subject currentUser = SecurityUtils.getSubject(); + Map userMap = null; + if (currentUser != null) { + userMap = userDao.getUserInfo(currentUser.getPrincipal().toString()); //获取用户信息 + } + + if(userMap != null && userMap.size() != 0) { + if (Constant.USRE_VALIDE.equals(userMap.get("DelFlag").toString())) {//有效用户 + String password = userMap.get("U_Pwd").toString(); + if (BCrypt.checkpw(EncryptUtil.SHA512(oldpwd), password)){ //校验原密码 + userMap.put("U_Pwd", BCrypt.hashpw(EncryptUtil.SHA512(newpwd), BCrypt.gensalt()));//加密新密码 + // 更新用户密码 + userDao.updateUserPwd(userMap); + returnMap.put("success", true); + returnMap.put("msg", "修改成功"); + }else{ + returnMap.put("success", false); + returnMap.put("msg", "旧密码错误"); + } + }else{ + returnMap.put("success", false); + returnMap.put("msg", "用户已删除"); + } + }else{ + returnMap.put("success", false); + returnMap.put("msg", "用户不存在"); + } + + return returnMap; + } + + + /** + * 获取用户列表 + * @param jsonString + * @return + */ + public Map GetUserList(String jsonString) { + Map result = new HashMap<>(); + boolean success = true; + try { + JSONObject object = JSONObject.parseObject(jsonString); + // 获取每页记录 + List> users = studentDao.getUser(object); + // 获取总数 + int count = studentDao.getNumberOfAllUser(object); + + // Pagination必须设置 rows,total这两属性, + // 因为loadFilter函数要求必须返回标准数据对象,含有 'total' 和 'rows' 属性。 + result.put("rows", users); // 此参数必须是rows,存放每页记录数 + result.put("total", count); // 存放总数 + } catch (Exception e) { + success = false; + throw e; + } + + result.put("success", success); + + return result; + } + + public int addUser(User user) throws Exception { + System.out.println("添加用户"); + return studentDao.saveUser(user); + //throw new RuntimeException(); + //throw new Exception(); + } + + + /** + * 导出 + * @param jsonString + */ + public void exportUserInfo(String jsonString, HttpServletResponse response) throws Exception{ + JSONObject object = JSONObject.parseObject(jsonString); + + String fileName = "用户列表", sheetName = "用户列表"; + + fileName = fileName +"_"+ format_file.format(new Date()) + ".xls"; + List> list = null; + list = studentDao.getUserExportList(object); + // 表头 + String[] titleStr = new String[] { "姓名", "密码", "邮箱","状态" }; + // 与表头对应的bean属性 + String[] keys = new String[] { "userName", "password", "emailAddress", "isDelete"}; + + // 导出文件 + ExcelUtil.exportExcelData(fileName, sheetName, titleStr, list, keys, response); + } + + /** + * 导出 + * @param jsonString + */ + public Map exportUserInfoList(String jsonString) throws Exception{ + Map result = new HashMap<>(); + boolean success = true; + try { + JSONObject object = JSONObject.parseObject(jsonString); + List> list = null; + list = studentDao.getUserExportList(object); + + result.put("data", list); + } catch (Exception e) { + success = false; + throw e; + } + + result.put("success", success); + + return result; + } + + /** + * 更新登录的IP地址 + * @param userId + * @param strIP + */ + public void updateUserLoginIP(String userId) { + // 更新用户登陆时间和ip + Map paramMap = new HashMap(); + paramMap.put("userID", userId); + String strIP = IpUtil.getRemortIP(request); + paramMap.put("ip", "127.0.0.1"); + userDao.updateUserLoginIP(paramMap); + } + + +} diff --git a/src/main/resources/com/food/chain/config/applicationContext.xml b/src/main/resources/com/food/chain/config/applicationContext.xml new file mode 100644 index 0000000000000000000000000000000000000000..4dabf8d45ba5fc67c4fb4230be6b10c070dd38f4 --- /dev/null +++ b/src/main/resources/com/food/chain/config/applicationContext.xml @@ -0,0 +1,157 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/com/food/chain/config/ehcache.xml b/src/main/resources/com/food/chain/config/ehcache.xml new file mode 100644 index 0000000000000000000000000000000000000000..2b5ee2a08c961f62e0c6379db352dad5b0d0fb81 --- /dev/null +++ b/src/main/resources/com/food/chain/config/ehcache.xml @@ -0,0 +1,21 @@ + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/com/food/chain/config/jdbc.properties b/src/main/resources/com/food/chain/config/jdbc.properties new file mode 100644 index 0000000000000000000000000000000000000000..c98cf05d09a68c1156fa0d35117c10f0ce6b8023 --- /dev/null +++ b/src/main/resources/com/food/chain/config/jdbc.properties @@ -0,0 +1,5 @@ +jdbc.driverClassName=com.mysql.cj.jdbc.Driver +#jdbc.url=jdbc:mysql://127.0.0.1:3306/dailycost?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf8&allowMultiQueries=true +jdbc.url=jdbc:mysql://127.0.0.1:3306/shiro?characterEncoding=utf8&useSSL=true&serverTimezone=CTT +jdbc.username=root +jdbc.password=123456 \ No newline at end of file diff --git a/src/main/resources/com/food/chain/config/mybatisConfig.xml b/src/main/resources/com/food/chain/config/mybatisConfig.xml new file mode 100644 index 0000000000000000000000000000000000000000..ad7293e0902663fbbeda23ad663127a9d9382414 --- /dev/null +++ b/src/main/resources/com/food/chain/config/mybatisConfig.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/com/food/chain/config/readme.txt b/src/main/resources/com/food/chain/config/readme.txt new file mode 100644 index 0000000000000000000000000000000000000000..8f317cce0c53d926ba50d44aa312d5be8ff3721d --- /dev/null +++ b/src/main/resources/com/food/chain/config/readme.txt @@ -0,0 +1,5 @@ + +mysql +1.useSSL:在与服务器通信时使用SSL(true / false),连接MySQL 5.5.45+,5.6.26+或5.7.6+时默认为“true”, + 否则默认为“false” 自版本:3.0.2 +2.serverTimezone:覆盖时区的检测/映射。当来自服务器的时区不映射到Java时区时使用 自版本:3.0.2 diff --git a/src/main/resources/com/food/chain/config/redis.properties b/src/main/resources/com/food/chain/config/redis.properties new file mode 100644 index 0000000000000000000000000000000000000000..9887f88b37e609345d38c5a8960409a92e7b987d --- /dev/null +++ b/src/main/resources/com/food/chain/config/redis.properties @@ -0,0 +1,17 @@ +#redis中心 +#绑定的主机地址 +redis.host=127.0.0.1 +#指定Redis监听端口,默认端口为6379 +redis.port=6379 +#授权密码 +redis.password=123456 +#最大空闲数:空闲链接数大于maxIdle时,将进行回收 +redis.pool.maxIdle=100 +#最大连接数:能够同时建立的“最大链接个数” +redis.pool.maxActive=300 +#最大等待时间:单位ms +redis.pool.maxWait=1000 +#使用连接时,检测连接是否成功 +redis.pool.testOnBorrow=true +#当客户端闲置多长时间后关闭连接,如果指定为0,表示关闭该功能 +redis.timeout=10000 \ No newline at end of file diff --git a/src/main/resources/com/food/chain/config/spring-servlet.xml b/src/main/resources/com/food/chain/config/spring-servlet.xml new file mode 100644 index 0000000000000000000000000000000000000000..97c06b6c67a2039735a02903a1fb64893aff289f --- /dev/null +++ b/src/main/resources/com/food/chain/config/spring-servlet.xml @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + text/html;charset=UTF-8 + application/json + + + + + WriteMapNullValue + QuoteFieldNames + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/com/food/chain/config/spring-shiro.xml b/src/main/resources/com/food/chain/config/spring-shiro.xml new file mode 100644 index 0000000000000000000000000000000000000000..659748af21ec89f1aa5a71b842b892c98bad5686 --- /dev/null +++ b/src/main/resources/com/food/chain/config/spring-shiro.xml @@ -0,0 +1,66 @@ + + + + + + + + + + + /=anon + /user/login=anon + /static/** = anon + /login.jsp = anon + /403.jsp = anon + /user/logout=anon + /** = authc + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/com/food/chain/mapping/UserDao.xml b/src/main/resources/com/food/chain/mapping/UserDao.xml new file mode 100644 index 0000000000000000000000000000000000000000..8785a656a092e4f01be60878f42479bbf2862ece --- /dev/null +++ b/src/main/resources/com/food/chain/mapping/UserDao.xml @@ -0,0 +1,77 @@ + + + + + + + + + update t_user + set + LastLoginTime = now(), + LastLoginIP = INET_ATON(#{ip}), + UpdateTime = now() + where U_ID = #{userID} + + + + + update t_user + set + U_Pwd = #{U_Pwd}, + UpdateUID = #{U_ID}, + UpdateTime = now() + where U_ID = #{U_ID} + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/com/food/chain/mapping/UserMapper.xml b/src/main/resources/com/food/chain/mapping/UserMapper.xml new file mode 100644 index 0000000000000000000000000000000000000000..e3409f802117320ad147e4aa813d564d4b65b586 --- /dev/null +++ b/src/main/resources/com/food/chain/mapping/UserMapper.xml @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + insert into t_user(userName,password,emailAddress,createDate) + values(#{userName},#{password},#{emailAddress},#{createDate}) + + + + + + \ No newline at end of file diff --git a/src/main/resources/config.properties b/src/main/resources/config.properties new file mode 100644 index 0000000000000000000000000000000000000000..1e9046307fa741d1ee2f3888b1d2a2280e2a7263 --- /dev/null +++ b/src/main/resources/config.properties @@ -0,0 +1,7 @@ +#配置文件 +superAdminIndex = /web/system_setting/super/school_management.jsp +adminIndex = /web/system_setting/school/school_setting.jsp +userIndex = /index.jsp + +# every page show recode num +PageSize = 10 diff --git a/src/main/resources/createTable.sql b/src/main/resources/createTable.sql new file mode 100644 index 0000000000000000000000000000000000000000..c01b64cc1eb14e04078032296e0fab25f662bf2d --- /dev/null +++ b/src/main/resources/createTable.sql @@ -0,0 +1,107 @@ + + +SET FOREIGN_KEY_CHECKS=0; + +--- 用户表 ---- +DROP TABLE IF EXISTS `t_user`; +CREATE TABLE `t_user` ( + `U_ID` varchar(36) NOT NULL COMMENT '用户ID', + `U_Name` varchar(60) NOT NULL DEFAULT '' COMMENT '用户名', + `U_Pwd` varchar(60) NOT NULL COMMENT 'Bcrypt(SHA512(pwd)+salt)', + `U_Avatar` varchar(300) NOT NULL DEFAULT '' COMMENT '用户头像', + `LastLoginTime` datetime DEFAULT NULL COMMENT '最后登录时间', + `LastLoginIP` bigint(32) DEFAULT NULL COMMENT '最后登录IP', + `IsAdmin` varchar(1) NOT NULL DEFAULT '0' COMMENT '是否管理员 0:否,1:是', + `DelFlag` varchar(1) NOT NULL DEFAULT '1' COMMENT '1:有效,0:无效', + `Locked_Flag` varchar(1) NOT NULL DEFAULT '1' COMMENT '1:有效,0:锁定', + `CreateUID` varchar(36) NOT NULL DEFAULT '' COMMENT '创建人', + `CreateTime` datetime DEFAULT NULL COMMENT '创建时间', + `UpdateUID` varchar(36) NOT NULL DEFAULT '' COMMENT '更新人', + `UpdateTime` datetime DEFAULT NULL COMMENT '更新时间', + PRIMARY KEY (`U_ID`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户表'; + +--- test data --- +--- 密码: 123456ruyi --- +INSERT +INTO t_user( + U_ID, + U_Name, + U_Pwd, + LastLoginTime, + IsAdmin, + CreateTime, + UpdateTime +) +VALUES ( + 'ruyi001', + 'ruyi', + '$2a$10$/4q6cAzvy8a4jMNkMo6Pw.BNGziZcGc2xI35tnhJ5CLghzEwBShye', + now(), + '1', + now(), + now() +) ; + + +---- 用户角色表 t_user_role 多对多关系 ----- +DROP TABLE IF EXISTS `t_user_role`; +CREATE TABLE `t_user_role` ( + `U_ID` varchar(36) NOT NULL COMMENT '用户ID', + `Role_Id` varchar(36) NOT NULL COMMENT '角色ID', + `Effective_Flag` varchar(1) DEFAULT '1' COMMENT '1:有效 0:无效', + `CreateUID` varchar(36) NOT NULL DEFAULT '' COMMENT '创建人', + `CreateTime` datetime DEFAULT NULL COMMENT '创建时间', + `UpdateUID` varchar(36) NOT NULL DEFAULT '' COMMENT '更新人', + `UpdateTime` datetime DEFAULT NULL COMMENT '更新时间', + PRIMARY KEY (`U_ID`, `Role_Id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户角色表'; +---- 用户角色表 t_user_role ----- + +--- 角色表 t_role --- +DROP TABLE IF EXISTS `t_role`; +CREATE TABLE `t_role` ( + `Role_Id` varchar(36) NOT NULL COMMENT '角色ID', + `Role_Name` varchar(50) NOT NULL COMMENT '角色名称', + `Description` varchar(255) DEFAULT '' COMMENT '角色描述', + `Effective_Flag` varchar(1) DEFAULT '1' COMMENT '1:有效 0:无效', + `CreateUID` varchar(36) NOT NULL DEFAULT '' COMMENT '创建人', + `CreateTime` datetime DEFAULT NULL COMMENT '创建时间', + `UpdateUID` varchar(36) NOT NULL DEFAULT '' COMMENT '更新人', + `UpdateTime` datetime DEFAULT NULL COMMENT '更新时间', + PRIMARY KEY (`Role_Id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='角色表'; +--- 角色表 t_role --- + +----- 权限表 t_permission --- +DROP TABLE IF EXISTS `t_permission`; +CREATE TABLE `t_permission` ( + `Perm_Id` varchar(36) NOT NULL COMMENT '权限ID', + `description` varchar(255) DEFAULT '' COMMENT '权限描述', + `token` varchar(50) DEFAULT '' COMMENT 'token', + `url` varchar(255) DEFAULT '' COMMENT '资源url', + `Effective_Flag` varchar(1) DEFAULT '1' COMMENT '1:有效 0:无效', + `CreateUID` varchar(36) NOT NULL DEFAULT '' COMMENT '创建人', + `CreateTime` datetime DEFAULT NULL COMMENT '创建时间', + `UpdateUID` varchar(36) NOT NULL DEFAULT '' COMMENT '更新人', + `UpdateTime` datetime DEFAULT NULL COMMENT '更新时间', + PRIMARY KEY (`Perm_Id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='权限表'; +----- 权限表 t_permission --- + + +----- 角色权限表 t_role_permission 角色权限多对多 --- +DROP TABLE IF EXISTS `t_role_permission`; +CREATE TABLE `t_permission` ( + `Role_Id` varchar(36) NOT NULL COMMENT '角色ID', + `Perm_Id` varchar(36) NOT NULL COMMENT '权限ID', + `Effective_Flag` varchar(1) DEFAULT '1' COMMENT '1:有效 0:无效', + `CreateUID` varchar(36) NOT NULL DEFAULT '' COMMENT '创建人', + `CreateTime` datetime DEFAULT NULL COMMENT '创建时间', + `UpdateUID` varchar(36) NOT NULL DEFAULT '' COMMENT '更新人', + `UpdateTime` datetime DEFAULT NULL COMMENT '更新时间', + PRIMARY KEY (`Role_Id`,`Perm_Id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='权限表'; +----- 权限表 t_role_permission --- + + diff --git a/src/main/resources/log4j2.xml b/src/main/resources/log4j2.xml new file mode 100644 index 0000000000000000000000000000000000000000..fa15d74d1da3c7d04c02b0a186cf63a631ce39a8 --- /dev/null +++ b/src/main/resources/log4j2.xml @@ -0,0 +1,41 @@ + + + + + target/test.log + + + + + + + + + + + + + + + + + + %d %p %C{1.} [%t] %m%n + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/test/com/food/chain/test/MethodNameClass.java b/src/main/test/com/food/chain/test/MethodNameClass.java new file mode 100644 index 0000000000000000000000000000000000000000..ee37ad42fbae0897db52c87b412f2c3cc985dc4a --- /dev/null +++ b/src/main/test/com/food/chain/test/MethodNameClass.java @@ -0,0 +1,22 @@ +package com.food.chain.test; + +import org.junit.rules.TestWatcher; +import org.junit.runner.Description; + +public class MethodNameClass extends TestWatcher { + private String methodName; + + @Override + protected void starting(Description description) { + // 方法名称 + //methodName = description.getMethodName(); + + // 正在执行的类名+方法名 + methodName = description.getClassName() + " : " + description.getClassName(); + } + + // 获取执行的方法名 + public String getMethodName() { + return methodName; + } +} diff --git a/src/main/test/com/food/chain/test/UserDomainTest.java b/src/main/test/com/food/chain/test/UserDomainTest.java new file mode 100644 index 0000000000000000000000000000000000000000..f8639b38ed8073ef0a00f84740c2025b8bd7acf9 --- /dev/null +++ b/src/main/test/com/food/chain/test/UserDomainTest.java @@ -0,0 +1,185 @@ +package com.food.chain.test; + +import java.io.UnsupportedEncodingException; +import java.util.ArrayList; +import java.util.List; + +import org.apache.commons.httpclient.methods.PostMethod; +import org.apache.http.HttpEntity; +import org.apache.http.HttpResponse; +import org.apache.http.NameValuePair; +import org.apache.http.client.CookieStore; +import org.apache.http.client.HttpClient; +import org.apache.http.client.entity.UrlEncodedFormEntity; +import org.apache.http.client.methods.CloseableHttpResponse; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.DefaultHttpClient; +import org.apache.http.impl.client.HttpClients; +import org.apache.http.message.BasicNameValuePair; +import org.apache.http.util.EntityUtils; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Rule; +import org.junit.Test; + +import com.alibaba.fastjson.JSONObject; + +/** + * 运行测试时,要确保该项目已经在服务器中运行了 + * @author ruyi + * + */ +public class UserDomainTest{ + // 请求的跟路径 + private static final String httpHost = "http://localhost:8080/FC_API/"; + + @Rule + public MethodNameClass methodNameClass = new MethodNameClass(); + + /** + * 用户登录测试 + * @throws Exception + */ + @Test + public void userLogin() throws Exception { + System.out.println(methodNameClass.getMethodName() + " start"); + + String userId = "ruyi001"; + String password = "123456ruyi"; + + // 请求URL + String strURL = httpHost + "/user/login"; + // 参数设定 + List params = new ArrayList<>(); + params.add(new BasicNameValuePair("userId", userId)); + params.add(new BasicNameValuePair("password", password)); + + + CloseableHttpClient httpclient = HttpClients.createDefault(); + UrlEncodedFormEntity urlEncodedFormEntity = new UrlEncodedFormEntity(params); + HttpPost httpPost = new HttpPost(strURL); + httpPost.setEntity(urlEncodedFormEntity); + // 执行请求 + CloseableHttpResponse response = httpclient.execute(httpPost); + HttpEntity entity = response.getEntity(); + if (entity != null) { + String result = EntityUtils.toString(entity, "utf-8"); + // {"redirect":"/index.jsp","success":true} + JSONObject jsonObject = new JSONObject(); + jsonObject.put("redirect", "/index.jsp"); + jsonObject.put("success", true); + Assert.assertEquals(result, jsonObject.toJSONString()); + }else { + System.out.println(""); + } + + System.out.println(methodNameClass.getMethodName() + " end"); + } + + @Test + public void updateUserPassword() throws Exception { + System.out.println(methodNameClass.getMethodName() + " start"); + + try { + String userId = "ruyi001"; + String password = "123456ruyi"; + + // 请求URL + String strURL = httpHost + "/user/login"; + // 参数设定 + List params = new ArrayList<>(); + params.add(new BasicNameValuePair("userId", userId)); + params.add(new BasicNameValuePair("password", password)); + + + DefaultHttpClient httpClient = new DefaultHttpClient(); + + UrlEncodedFormEntity urlEncodedFormEntity = new UrlEncodedFormEntity(params); + HttpPost httpPost = new HttpPost(strURL); + httpPost.setEntity(urlEncodedFormEntity); + // 执行请求 + HttpResponse response = httpClient.execute(httpPost); + System.out.println(response.getStatusLine().getStatusCode()); + //HttpEntity entity = response.getEntity(); + + String JSESSIONID = null; + String cookie_user = null; + CookieStore cookieStore = httpClient.getCookieStore(); + + String oldpwd = "123456ruyi"; + String newpwd = "123456"; + // 请求URL + String strURLUpd = httpHost + "/user/updatepwd"; + + // 参数设定 + List params2 = new ArrayList<>(); + params2.add(new BasicNameValuePair("oldpwd", oldpwd)); + params2.add(new BasicNameValuePair("newpwd", newpwd)); + + UrlEncodedFormEntity urlEncodedFormEntity2 = new UrlEncodedFormEntity(params2); + HttpPost httpPost2 = new HttpPost(strURLUpd); + httpPost2.setEntity(urlEncodedFormEntity2); + // 执行请求 + HttpResponse response2 = httpClient.execute(httpPost2); + HttpEntity entity2 = response2.getEntity(); + if (entity2 != null) { + String result = EntityUtils.toString(entity2, "utf-8"); + JSONObject jsonObject = new JSONObject(); + jsonObject.put("msg", "修改成功"); + jsonObject.put("success", true); + Assert.assertEquals(result, jsonObject.toJSONString()); + }else { + System.out.println(""); + } + } catch (Exception e) { + e.printStackTrace(); + } + + + System.out.println(methodNameClass.getMethodName() + " end"); + } + +// public static void main(String[] args) { +// // 登陆 Url +// String loginUrl = "http://localhost/login.jsp"; +// // 需登陆后访问的 Url +// String dataUrl = "http://localhost/applyopen/printApprize.jsp?iid=1516"; +// +// HttpClient httpClient = new HttpClient(); +// +// // 模拟登陆,按实际服务器端要求选用 Post 或 Get 请求方式 +// PostMethod postMethod = new PostMethod(loginUrl); +// +// // 设置登陆时要求的信息,用户名和密码 +// NameValuePair[] data = { new NameValuePair("name", "admin"), +// new NameValuePair("password", "123456") }; +// postMethod.setRequestBody(data); +// try { +// // 设置 HttpClient 接收 Cookie,用与浏览器一样的策略 +// httpClient.getParams().setCookiePolicy( +// CookiePolicy.BROWSER_COMPATIBILITY); +// httpClient.executeMethod(postMethod); +// // 获得登陆后的 Cookie +// Cookie[] cookies = httpClient.getState().getCookies(); +// StringBuffer tmpcookies = new StringBuffer(); +// for (Cookie c : cookies) { +// tmpcookies.append(c.toString() + ";"); +// } +// // 进行登陆后的操作1581,1602,1603,1610,1609,1608,1607,1606,1605,1620,1619,1617,1616,1622,1626,1642,1648,1647,1657 +// GetMethod getMethod = new GetMethod(dataUrl); +// // 每次访问需授权的网址时需带上前面的 cookie 作为通行证 +// getMethod.setRequestHeader("cookie", tmpcookies.toString()); +// // 你还可以通过 PostMethod/GetMethod 设置更多的请求后数据 +// // 例如,referer 从哪里来的,UA 像搜索引擎都会表名自己是谁,无良搜索引擎除外 +// postMethod.setRequestHeader("Referer", "http://www.cc"); +// postMethod.setRequestHeader("User-Agent", "www Spot"); +// httpClient.executeMethod(getMethod); +// // 打印出返回数据,检验一下是否成功 +// String text = getMethod.getResponseBodyAsString(); +// System.out.println(text); +// } catch (Exception e) { +// e.printStackTrace(); +// } +// } +} diff --git a/src/main/webapp/403.jsp b/src/main/webapp/403.jsp new file mode 100644 index 0000000000000000000000000000000000000000..58bc21b1dc7aaa308312c8e6638de14a81252ddd --- /dev/null +++ b/src/main/webapp/403.jsp @@ -0,0 +1,12 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" + pageEncoding="UTF-8"%> + + + + +Insert title here + + +

403---暂无权限

+ + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/web.xml b/src/main/webapp/WEB-INF/web.xml new file mode 100644 index 0000000000000000000000000000000000000000..093a5ff61bad222ab3f8783a1e4cce2c7ac9ada0 --- /dev/null +++ b/src/main/webapp/WEB-INF/web.xml @@ -0,0 +1,119 @@ + + + + + login.jsp + + + Archetype Created Web Application + + + + contextConfigLocation + classpath:com/food/chain/config/applicationContext.xml + + + + org.springframework.web.context.ContextLoaderListener + + + + org.springframework.web.util.IntrospectorCleanupListener + + + + + log4jConfigLocation + classpath:log4j2.xml + + + + + org.springframework.web.util.IntrospectorCleanupListener + + + + + CharacterEncodingFilter + org.springframework.web.filter.CharacterEncodingFilter + + + encoding + utf-8 + + + + CharacterEncodingFilter + /* + + + + urlFilter + com.food.chain.filter.UrlFilter + + DEFAULT_URI_ENCODE + UTF-8 + + + + urlFilter + /* + + + + + shiroFilter + org.springframework.web.filter.DelegatingFilterProxy + + + targetFilterLifecycle + true + + + + shiroFilter + /* + + + + + SpringMybatis + org.springframework.web.servlet.DispatcherServlet + + contextConfigLocation + classpath:com/food/chain/config/spring-servlet.xml + + 1 + + + + SpringMybatis + / + + + + + + + + + + + + + + 404 + /rest/page/404 + + + 500 + /rest/page/500 + + + org.apache.shiro.authz.AuthorizationException + /rest/page/401 + + diff --git a/src/main/webapp/index.jsp b/src/main/webapp/index.jsp new file mode 100644 index 0000000000000000000000000000000000000000..648b1f3d93e9eac3da7e9d05ded8a39d0b7db2d1 --- /dev/null +++ b/src/main/webapp/index.jsp @@ -0,0 +1,19 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" + pageEncoding="UTF-8"%> + + + + +Insert title here + + +

第一个页面

+ +
+
+
+ + +
+ + \ No newline at end of file diff --git a/src/main/webapp/login.jsp b/src/main/webapp/login.jsp new file mode 100644 index 0000000000000000000000000000000000000000..38cb7e12f4b670d09c110bddc59da5539fbce05a --- /dev/null +++ b/src/main/webapp/login.jsp @@ -0,0 +1,129 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" + pageEncoding="UTF-8"%> + + + + +登录 + + + + + +
+

登录

+
+
+ +
+
+ +
+
+ +
+
+ + + \ No newline at end of file diff --git a/src/main/webapp/pages/addUser.jsp b/src/main/webapp/pages/addUser.jsp new file mode 100644 index 0000000000000000000000000000000000000000..b5fcd53afc963909d53ec69d0f0233338803ab26 --- /dev/null +++ b/src/main/webapp/pages/addUser.jsp @@ -0,0 +1,25 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" + pageEncoding="UTF-8"%> + + + + +Insert title here + + +
+

添加用户信息

+
+ 用户名: +
+ 密码: +
+ 邮件: +
+ + +
+ +
+ + \ No newline at end of file diff --git a/src/main/webapp/pages/echarts-demo.jsp b/src/main/webapp/pages/echarts-demo.jsp new file mode 100644 index 0000000000000000000000000000000000000000..95e23fa4aab34b9b29645723f39ed1a8d192c642 --- /dev/null +++ b/src/main/webapp/pages/echarts-demo.jsp @@ -0,0 +1,40 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" + pageEncoding="UTF-8"%> + + + + + +echarts + + +
+ + + + \ No newline at end of file diff --git a/src/main/webapp/pages/highcharts-demo.jsp b/src/main/webapp/pages/highcharts-demo.jsp new file mode 100644 index 0000000000000000000000000000000000000000..54fb5145706a78328652ff0a2312854af9a177a1 --- /dev/null +++ b/src/main/webapp/pages/highcharts-demo.jsp @@ -0,0 +1,72 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" + pageEncoding="UTF-8"%> + + + + +Insert title here + + + + + + + +
+ + + \ No newline at end of file diff --git a/src/main/webapp/pages/users.jsp b/src/main/webapp/pages/users.jsp new file mode 100644 index 0000000000000000000000000000000000000000..29689170fd8eb11d4c83f3c387ffaa28fd199858 --- /dev/null +++ b/src/main/webapp/pages/users.jsp @@ -0,0 +1,290 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" + pageEncoding="UTF-8"%> + + + + + + + + + + + + + + + + + + + + + + + + + + + +分页 + + + + + + + + + + + + + +
+
+ 姓名: + + 邮箱: + + 查询 + 导出 +
+
+
搜索结果:
+ + + + + \ No newline at end of file diff --git a/src/main/webapp/static/alasql/alasql.min.js b/src/main/webapp/static/alasql/alasql.min.js new file mode 100644 index 0000000000000000000000000000000000000000..b9beaac4cadc0f22950228073fc5af29e3f33d7e --- /dev/null +++ b/src/main/webapp/static/alasql/alasql.min.js @@ -0,0 +1,14 @@ +//! AlaSQL v0.2.7-develop-1324 | © 2014-2016 Andrey Gershun & Mathias Rangel Wulff | License: MIT +!function(e,t){"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?module.exports=t():e.alasql=t()}(this,function(){function e(e){return"(y="+e+",y===y?y:undefined)"}function t(e,t){return"(y="+e+',typeof y=="undefined"?undefined:'+t+")"}function n(){return!0}function r(){}function a(){var e=navigator.userAgent.toLowerCase();return-1!==e.indexOf("msie")?parseInt(e.split("msie")[1]):!1}function i(e,t,n){function r(e,n,a){var o,u,c,l=e[n],h=1e5;if(l.selid){if("PATH"===l.selid){for(var d=[{node:a,stack:[]}],f={},p=w.databases[w.useid].objects;d.length>0;){var b=d.shift(),g=b.node,m=b.stack,c=r(l.args,0,g);if(c.length>0){if(n+1+1>e.length)return m;var v=[];return m&&m.length>0&&m.forEach(function(t){v=v.concat(r(e,n+1,t))}),v}"undefined"==typeof f[g.$id]&&(f[g.$id]=!0,g.$out&&g.$out.length>0&&g.$out.forEach(function(e){var t=p[e],n=m.concat(t);n.push(p[t.$out[0]]),d.push({node:p[t.$out[0]],stack:n})}))}return[]}if("NOT"===l.selid){var u=r(l.args,0,a);return u.length>0?[]:n+1+1>e.length?[a]:r(e,n+1,a)}if("DISTINCT"===l.selid){var u;if(u="undefined"==typeof l.args||0===l.args.length?j(a):r(l.args,0,a),0===u.length)return[];var E=j(u);return n+1+1>e.length?E:r(e,n+1,E)}if("AND"===l.selid){var E=!0;return l.args.forEach(function(e){E=E&&r(e,0,a).length>0}),E?n+1+1>e.length?[a]:r(e,n+1,a):[]}if("OR"===l.selid){var E=!1;return l.args.forEach(function(e){E=E||r(e,0,a).length>0}),E?n+1+1>e.length?[a]:r(e,n+1,a):[]}if("ALL"===l.selid){var u=r(l.args[0],0,a);return 0===u.length?[]:n+1+1>e.length?u:r(e,n+1,u)}if("ANY"===l.selid){var u=r(l.args[0],0,a);return 0===u.length?[]:n+1+1>e.length?[u[0]]:r(e,n+1,[u[0]])}if("UNIONALL"===l.selid){var u=[];return l.args.forEach(function(e){u=u.concat(r(e,0,a))}),0===u.length?[]:n+1+1>e.length?u:r(e,n+1,u)}if("UNION"===l.selid){var u=[];l.args.forEach(function(e){u=u.concat(r(e,0,a))});var u=j(u);return 0===u.length?[]:n+1+1>e.length?u:r(e,n+1,u)}if("IF"===l.selid){var u=r(l.args,0,a);return 0===u.length?[]:n+1+1>e.length?[a]:r(e,n+1,a)}if("REPEAT"===l.selid){var y,S,T=l.args[0].value;S=l.args[1]?l.args[1].value:T,l.args[2]&&(y=l.args[2].variable);var x=[];if(0===T&&(n+1+1>e.length?x=[a]:(y&&(w.vars[y]=0),x=x.concat(r(e,n+1,a)))),S>0)for(var A=[{value:a,lvl:1}],C=0;A.length>0;){var u=A[0];if(A.shift(),u.lvl<=S){y&&(w.vars[y]=u.lvl);var k=r(l.sels,0,u.value);k.forEach(function(e){A.push({value:e,lvl:u.lvl+1})}),u.lvl>=T&&(n+1+1>e.length?x=x.concat(k):k.forEach(function(t){x=x.concat(r(e,n+1,t))}))}if(C++,C>h)throw new Error("Security brake. Number of iterations = "+C)}return x}if("OF"===l.selid){if(n+1+1>e.length)return[a];var O=[];return Object.keys(a).forEach(function(t){w.vars[l.args[0].variable]=t,O=O.concat(r(e,n+1,a[t]))}),O}if("TO"===l.selid){var R=w.vars[l.args[0]],N=[];if(N=void 0!==R?R.slice(0):[],N.push(a),n+1+1>e.length)return[a];w.vars[l.args[0]]=N;var O=r(e,n+1,a);return w.vars[l.args[0]]=R,O}if("ARRAY"===l.selid){var u=r(l.args,0,a);return u.length>0?(o=u,n+1+1>e.length?[o]:r(e,n+1,o)):[]}if("SUM"===l.selid){var u=r(l.args,0,a);if(!(u.length>0))return[];var o=u.reduce(function(e,t){return e+t},0);return n+1+1>e.length?[o]:r(e,n+1,o)}if("AVG"===l.selid)return u=r(l.args,0,a),u.length>0?(o=u.reduce(function(e,t){return e+t},0)/u.length,n+1+1>e.length?[o]:r(e,n+1,o)):[];if("COUNT"===l.selid)return u=r(l.args,0,a),u.length>0?(o=u.length,n+1+1>e.length?[o]:r(e,n+1,o)):[];if("FIRST"===l.selid)return u=r(l.args,0,a),u.length>0?(o=u[0],n+1+1>e.length?[o]:r(e,n+1,o)):[];if("LAST"===l.selid)return u=r(l.args,0,a),u.length>0?(o=u[u.length-1],n+1+1>e.length?[o]:r(e,n+1,o)):[];if("MIN"===l.selid){if(u=r(l.args,0,a),0===u.length)return[];var o=u.reduce(function(e,t){return Math.min(e,t)},1/0);return n+1+1>e.length?[o]:r(e,n+1,o)}if("MAX"===l.selid){var u=r(l.args,0,a);if(0===u.length)return[];var o=u.reduce(function(e,t){return Math.max(e,t)},-(1/0));return n+1+1>e.length?[o]:r(e,n+1,o)}if("PLUS"===l.selid){var x=[],A=r(l.args,0,a).slice();n+1+1>e.length?x=x.concat(A):A.forEach(function(t){x=x.concat(r(e,n+1,t))});for(var C=0;A.length>0;){var u=A.shift();if(u=r(l.args,0,u),A=A.concat(u),n+1+1>e.length?x=x.concat(u):u.forEach(function(t){var a=r(e,n+1,t);x=x.concat(a)}),C++,C>h)throw new Error("Security brake. Number of iterations = "+C)}return x}if("STAR"===l.selid){var x=[];x=r(e,n+1,a);var A=r(l.args,0,a).slice();n+1+1>e.length?x=x.concat(A):A.forEach(function(t){x=x.concat(r(e,n+1,t))});for(var C=0;A.length>0;){var u=A[0];if(A.shift(),u=r(l.args,0,u),A=A.concat(u),n+1+1<=e.length&&u.forEach(function(t){x=x.concat(r(e,n+1,t))}),C++,C>h)throw new Error("Loop brake. Number of iterations = "+C)}return x}if("QUESTION"===l.selid){var x=[];x=x.concat(r(e,n+1,a));var u=r(l.args,0,a);return n+1+1<=e.length&&u.forEach(function(t){x=x.concat(r(e,n+1,t))}),x}if("WITH"!==l.selid){if("ROOT"===l.selid)return n+1+1>e.length?[a]:r(e,n+1,s);throw new Error("Wrong selector "+l.selid)}var u=r(l.args,0,a);if(0===u.length)return[];var c={status:1,values:u}}else{if(!l.srchid)throw new Error("Selector not found");var c=w.srch[l.srchid.toUpperCase()](a,l.args,i,t)}"undefined"==typeof c&&(c={status:1,values:[a]});var E=[];if(1===c.status){var $=c.values;if(n+1+1>e.length)E=$;else for(var C=0;C0&&(o&&o[0]&&"PROP"===o[0].srchid&&o[0].args&&o[0].args[0]&&("XML"===o[0].args[0].toUpperCase()?(i.mode="XML",o.shift()):"HTML"===o[0].args[0].toUpperCase()?(i.mode="HTML",o.shift()):"JSON"===o[0].args[0].toUpperCase()&&(i.mode="JSON",o.shift())),o.length>0&&"VALUE"===o[0].srchid&&(i.value=!0,o.shift())),this.from instanceof z.Column){var u=this.from.databaseid||e;s=w.databases[u].tables[this.from.columnid].data}else if(this.from instanceof z.FuncValue&&w.from[this.from.funcid.toUpperCase()]){var c=this.from.args.map(function(e){var n=e.toJS(),r=new Function("params,alasql","var y;return "+n).bind(this);return r(t,w)});s=w.from[this.from.funcid.toUpperCase()].apply(this,c)}else if("undefined"==typeof this.from)s=w.databases[e].objects;else{var l=new Function("params,alasql","var y;return "+this.from.toJS());s=l(t,w),"object"==typeof Mongo&&"object"!=typeof Mongo.Collection&&s instanceof Mongo.Collection&&(s=s.find().fetch())}if(a=void 0!==o&&o.length>0?r(o,0,s):s,this.into){var h,d;"undefined"!=typeof this.into.args[0]&&(h=new Function("params,alasql","var y;return "+this.into.args[0].toJS())(t,w)),"undefined"!=typeof this.into.args[1]&&(d=new Function("params,alasql","var y;return "+this.into.args[1].toJS())(t,w)),a=w.into[this.into.funcid.toUpperCase()](h,d,a,[],n)}else i.value&&a.length>0&&(a=a[0]),n&&(a=n(a));return a}function o(e,t,n,r,a){e.sources.length;e.sourceslen=e.sources.length;var s=e.sourceslen;e.query=e,e.A=r,e.B=a,e.cb=n,e.oldscope=t,e.queriesfn&&(e.sourceslen+=e.queriesfn.length,s+=e.queriesfn.length,e.queriesdata=[],e.queriesfn.forEach(function(t,n){t.query.params=e.params,u([],-n-1,e)}));var i;i=t?_(t):{},e.scope=i;var o;return e.sources.forEach(function(t,n){t.query=e;var r=t.datafn(e,e.params,u,n,w);void 0!==typeof r&&((e.intofn||e.intoallfn)&&r instanceof Array&&(r=r.length),o=r),t.queriesdata=e.queriesdata}),0!=e.sources.length&&0!==s||(o=c(e)),o}function u(e,t,n){if(t>=0){var r=n.sources[t];r.data=e,"function"==typeof r.data&&(r.getfn=r.data,r.dontcache=r.getfn.dontcache,"OUTER"!=r.joinmode&&"RIGHT"!=r.joinmode&&"ANTI"!=r.joinmode||(r.dontcache=!1),r.data={})}else n.queriesdata[-t-1]=B(e);return n.sourceslen--,n.sourceslen>0?void 0:c(n)}function c(e){var t=e.scope;te(e),e.data=[],e.xgroups={},e.groups=[];var n=0;if(d(e,t,n),e.groupfn){if(e.data=[],0===e.groups.length){var r={};e.selectGroup.length>0&&e.selectGroup.forEach(function(e){"COUNT"==e.aggregatorid||"SUM"==e.aggregatorid?r[e.nick]=0:r[e.nick]=void 0}),e.groups=[r]}if(e.aggrKeys.length>0){var a="";e.aggrKeys.forEach(function(e){a+="g['"+e.nick+"']=alasql.aggr['"+e.funcid+"'](undefined,g['"+e.nick+"'],3);"});var s=new Function("g,params,alasql","var y;"+a)}for(var i=0,o=e.groups.length;o>i;i++){var r=e.groups[i];if(s&&s(r,e.params,w),!e.havingfn||e.havingfn(r,e.params,w)){var u=e.selectgfn(r,e.params,w);e.data.push(u)}}}if(h(e),e.unionallfn){var c,f;if(e.corresponding)e.unionallfn.query.modifier||(e.unionallfn.query.modifier=void 0),c=e.unionallfn(e.params);else{e.unionallfn.query.modifier||(e.unionallfn.query.modifier="RECORDSET"),f=e.unionallfn(e.params),c=[],o=f.data.length;for(var i=0;o>i;i++){for(var p={},b=0,g=Math.min(e.columns.length,f.columns.length);g>b;b++)p[e.columns[b].columnid]=f.data[i][f.columns[b].columnid];c.push(p)}}e.data=e.data.concat(c)}else if(e.unionfn){if(e.corresponding)e.unionfn.query.modifier||(e.unionfn.query.modifier="ARRAY"),c=e.unionfn(e.params);else{e.unionfn.query.modifier||(e.unionfn.query.modifier="RECORDSET"),f=e.unionfn(e.params),c=[],o=f.data.length;for(var i=0;o>i;i++){p={},g=Math.min(e.columns.length,f.columns.length);for(var b=0;g>b;b++)p[e.columns[b].columnid]=f.data[i][f.columns[b].columnid];c.push(p)}}e.data=U(e.data,c)}else if(e.exceptfn){if(e.corresponding){e.exceptfn.query.modifier||(e.exceptfn.query.modifier="ARRAY");var c=e.exceptfn(e.params)}else{e.exceptfn.query.modifier||(e.exceptfn.query.modifier="RECORDSET");for(var f=e.exceptfn(e.params),c=[],i=0,o=f.data.length;o>i;i++){for(var p={},b=0,g=Math.min(e.columns.length,f.columns.length);g>b;b++)p[e.columns[b].columnid]=f.data[i][f.columns[b].columnid];c.push(p)}}e.data=F(e.data,c)}else if(e.intersectfn){if(e.corresponding)e.intersectfn.query.modifier||(e.intersectfn.query.modifier=void 0),c=e.intersectfn(e.params);else for(e.intersectfn.query.modifier||(e.intersectfn.query.modifier="RECORDSET"),f=e.intersectfn(e.params),c=[],o=f.data.length,i=0;o>i;i++){for(p={},g=Math.min(e.columns.length,f.columns.length),b=0;g>b;b++)p[e.columns[b].columnid]=f.data[i][f.columns[b].columnid];c.push(p)}e.data=M(e.data,c)}if(e.orderfn){if(e.explain)var m=Date.now();e.data=e.data.sort(e.orderfn),e.explain&&e.explaination.push({explid:e.explid++,description:"QUERY BY",ms:Date.now()-m})}if(l(e),"undefined"!=typeof angular&&e.removeKeys.push("$$hashKey"),e.removeKeys.length>0){var v=e.removeKeys;if(g=v.length,g>0)for(o=e.data.length,i=0;o>i;i++)for(b=0;g>b;b++)delete e.data[i][v[b]];e.columns.length>0&&(e.columns=e.columns.filter(function(e){var t=!1;return v.forEach(function(n){e.columnid==n&&(t=!0)}),!t}))}if("undefined"!=typeof e.removeLikeKeys&&e.removeLikeKeys.length>0){for(var E=e.removeLikeKeys,i=0,o=e.data.length;o>i;i++){p=e.data[i];for(var y in p)for(b=0;b0&&(e.columns=e.columns.filter(function(e){var t=!1;return E.forEach(function(n){w.utils.like(n,e.columnid)&&(t=!0)}),!t}))}if(e.pivotfn&&e.pivotfn(),e.unpivotfn&&e.unpivotfn(),e.intoallfn){var S=e.intoallfn(e.columns,e.cb,e.params,e.alasql);return S}if(e.intofn){for(o=e.data.length,i=0;o>i;i++)e.intofn(e.data[i],i,e.params,e.alasql);return e.cb&&e.cb(e.data.length,e.A,e.B),e.data.length}return S=e.data,e.cb&&(S=e.cb(e.data,e.A,e.B)),S}function l(e){if(e.limit){var t=0;e.offset&&(t=(0|e.offset)-1||0);var n;n=e.percent?(e.data.length*e.limit/100|0)+t:(0|e.limit)+t,e.data=e.data.slice(t,n)}}function h(e){if(e.distinct){for(var t={},n=0,r=e.data.length;r>n;n++){var a=Object.keys(e.data[n]).map(function(t){return e.data[n][t]}).join("`");t[a]=e.data[n]}e.data=[];for(var s in t)e.data.push(t[s])}}function d(e,t,n){if(n>=e.sources.length)e.wherefn(t,e.params,w)&&(e.groupfn?e.groupfn(t,e.params,w):e.data.push(e.selectfn(t,e.params,w)));else if(e.sources[n].applyselect){var r=e.sources[n];r.applyselect(e.params,function(a){if(a.length>0)for(var s=0;sc;)u||!r.getfn||r.dontcache||(o[c]=l),t[s]=l,r.onleftfn&&r.onleftfn(t,e.params,w)!=r.onrightfn(t,e.params,w)||r.onmiddlefn(t,e.params,w)&&("SEMI"!=r.joinmode&&"ANTI"!=r.joinmode&&d(e,t,n+1),"LEFT"!=r.joinmode&&"INNER"!=r.joinmode&&(l._rightjoin=!0),i=!0),c++;if("LEFT"!=r.joinmode&&"OUTER"!=r.joinmode&&"SEMI"!=r.joinmode||i||(t[s]={},d(e,t,n+1)),n+1f;)a.getfn&&!a.dontcache&&(a.data[f]=l),l._rightjoin?delete l._rightjoin:0==n&&(t[a.alias]=l,d(e,t,n+2)),f++}t[s]=void 0}}function f(e,t){if("undefined"==typeof t||"number"==typeof t||"string"==typeof t||"boolean"==typeof t)return t;var n=e.modifier||w.options.modifier,r=e.columns;if("undefined"==typeof r||0==r.length)if(t.length>0){for(var a={},s=0;s0){var i;i=r&&r.length>0?r[0].columnid:Object.keys(t[0])[0],t=t[0][i]}else t=void 0;else if("ROW"===n)if(t.length>0){var i,o=[];for(var i in t[0])o.push(t[0][i]);t=o}else t=void 0;else if("COLUMN"===n){var u=[];if(t.length>0){var i;i=r&&r.length>0?r[0].columnid:Object.keys(t[0])[0];for(var s=0,c=t.length;c>s;s++)u.push(t[s][i])}t=u}else if("MATRIX"===n){for(var u=[],s=0;s0)i=r[0].columnid,d=r[1].columnid;else{var f=Object.keys(t[0]);i=f[0],d=f[1]}for(var s=0,c=t.length;c>s;s++)u[t[s][i]]=t[s][d];t=u}else if("RECORDSET"===n)t=new w.Recordset({data:t,columns:r});else if("TEXTSTRING"===n){var i;i=r&&r.length>0?r[0].columnid:Object.keys(t[0])[0];for(var s=0,c=t.length;c>s;s++)t[s]=t[s][i];t=t.join("\n")}return t}function p(e,t,n){var r="",a=[];e.ixsources={},e.sources.forEach(function(t){e.ixsources[t.alias]=t});var s;if(e.ixsources[t])var s=e.ixsources[t].columns;return n&&"json"==w.options.joinstar&&(r+="r['"+t+"']={};"),s&&s.length>0?s.forEach(function(s){n&&"underscore"==w.options.joinstar?a.push("'"+t+"_"+s.columnid+"':p['"+t+"']['"+s.columnid+"']"):n&&"json"==w.options.joinstar?r+="r['"+t+"']['"+s.columnid+"']=p['"+t+"']['"+s.columnid+"'];":a.push("'"+s.columnid+"':p['"+t+"']['"+s.columnid+"']"),e.selectColumns[k(s.columnid)]=!0;var i={columnid:s.columnid,dbtypeid:s.dbtypeid,dbsize:s.dbsize,dbprecision:s.dbprecision,dbenum:s.dbenum};e.columns.push(i),e.xcolumns[i.columnid]=i}):(r+='var w=p["'+t+'"];for(var k in w){r[k]=w[k]};',e.dirtyColumns=!0),{s:a.join(","),sp:r}}function b(e,t){if(e instanceof Array){for(var n=[[]],r=0;ra;a++)t+=""+(a+1),n.forEach(function(n){t+=" ",e[a][n]==+e[a][n]?(t+='
',t+="undefined"==typeof e[a][n]?"NULL":e[a][n],t+="
"):t+="undefined"==typeof e[a][n]?"NULL":"string"==typeof e[a][n]?e[a][n]:le(e[a][n])});t+=""}else t+="

"+le(e)+"

";return t}function E(e,t,n){if(!(0>=n)){var r=t-e.scrollTop,a=r/n*10;setTimeout(function(){e.scrollTop!==t&&(e.scrollTop=e.scrollTop+a,E(e,t,n-10))},10)}}function y(e,t,n,r,a,s){var i={};n=n||{},w.utils.extend(i,n),"undefined"==typeof i.headers&&(i.headers=!0);var o;return w.utils.loadBinaryFile(t,!!r,function(t){var n,o=e.read(t,{type:"binary"});n="undefined"==typeof i.sheetid?o.SheetNames[0]:i.sheetid;var u;"undefined"==typeof i.range?u=o.Sheets[n]["!ref"]:(u=i.range,o.Sheets[n][u]&&(u=o.Sheets[n][u]));for(var c=u.split(":"),l=c[0].match(/[A-Z]+/)[0],h=+c[0].match(/[0-9]+/)[0],d=c[1].match(/[A-Z]+/)[0],f=+c[1].match(/[0-9]+/)[0],p={},b=w.utils.xlscn(l);b<=w.utils.xlscn(d);b++){var g=w.utils.xlsnc(b);i.headers&&o.Sheets[n][g+""+h]?p[g]=o.Sheets[n][g+""+h].v:p[g]=g}var m=[];i.headers&&h++;for(var v=h;f>=v;v++){for(var E={},b=w.utils.xlscn(l);b<=w.utils.xlscn(d);b++){var g=w.utils.xlsnc(b);o.Sheets[n][g+""+v]&&(E[p[g]]=o.Sheets[n][g+""+v].v)}m.push(E)}m.length>0&&m[m.length-1]&&0==Object.keys(m[m.length-1]).length&&m.pop(),r&&(m=r(m,a,s))},function(e){throw e}),o}function S(e){function t(){return{declaration:n(),root:r()}}function n(){var e=o(/^<\?xml\s*/);if(e){for(var t={attributes:{}};!u()&&!c("?>");){var n=s();if(!n)return t;t.attributes[n.name]=n.value}return o(/\?>\s*/),t}}function r(){var e=o(/^<([\w-:.]+)\s*/);if(e){for(var t={name:e[1],attributes:{},children:[]};!(u()||c(">")||c("?>")||c("/>"));){var n=s();if(!n)return t;t.attributes[n.name]=n.value}if(o(/^\s*\/>\s*/))return t;o(/\??>\s*/),t.content=a();for(var i;i=r();)t.children.push(i);return o(/^<\/[\w-:.]+>\s*/),t}}function a(){var e=o(/^([^<]*)/);return e?e[1]:""}function s(){var e=o(/([\w:-]+)\s*=\s*("[^"]*"|'[^']*'|\w+)\s*/);if(e)return{name:e[1],value:i(e[2])}}function i(e){return e.replace(/^['"]|['"]$/g,"")}function o(t){var n=e.match(t);if(n)return e=e.slice(n[0].length),n}function u(){return 0==e.length}function c(t){return 0==e.indexOf(t)}return e=e.trim(),e=e.replace(//g,""),t()}var w=function(e,t,n,r){if(t=t||[],"function"==typeof t&&(r=n,n=t,t=[]),"object"!=typeof t&&(t=[t]),"function"==typeof importScripts||!w.webworker){if(0===arguments.length)return new z.Select({columns:[new z.Column({columnid:"*"})],from:[new z.ParamValue({param:0})]});if(1===arguments.length&&"object"==typeof e&&e instanceof Array){var a=new z.Select({columns:[new z.Column({columnid:"*"})],from:[new z.ParamValue({param:0})]});return a.preparams=[e],a}return"string"==typeof e&&"#"===e[0]&&"object"==typeof document?e=document.querySelector(e).textContent:"object"==typeof e&&e instanceof HTMLElement?e=e.textContent:"function"==typeof e&&(e=e.toString().slice(14,-3)),w.exec(e,t,n,r)}var s=w.lastid++;w.buffer[s]=n,w.webworker.postMessage({id:s,sql:e,params:t})};w.version="0.2.7-develop-1324",w.debug=void 0;var T=function(){return null},x="",A=function(){function e(){this.yy={}}var t=function(e,t,n,r){for(n=n||{},r=e.length;r--;n[e[r]]=t);return n},n=[2,10],r=[1,102],a=[1,103],s=[1,6],i=[1,42],o=[1,78],u=[1,75],c=[1,94],l=[1,93],h=[1,68],d=[1,101],f=[1,85],p=[1,70],b=[1,83],g=[1,65],m=[1,69],v=[1,63],E=[1,67],y=[1,60],S=[1,73],T=[1,61],x=[1,66],A=[1,82],C=[1,76],k=[1,84],O=[1,86],N=[1,87],$=[1,80],D=[1,81],I=[1,79],L=[1,88],q=[1,89],U=[1,90],F=[1,91],M=[1,92],_=[1,98],V=[1,64],j=[1,77],P=[1,71],B=[1,96],G=[1,97],J=[1,62],H=[1,72],W=[1,106],X=[1,107],Y=[8,297,509,510],K=[8,297,301,509,510],Q=[1,114],z=[1,115],Z=[1,116],ee=[1,117],te=[1,118],ne=[127,343,399],re=[1,126],ae=[1,125],se=[1,131],ie=[1,159],oe=[1,170],ue=[1,173],ce=[1,168],le=[1,176],he=[1,180],de=[1,177],fe=[1,164],pe=[1,166],be=[1,169],ge=[1,178],me=[1,161],ve=[1,187],Ee=[1,183],ye=[1,184],Se=[1,188],we=[1,189],Te=[1,190],xe=[1,191],Ae=[1,192],Ce=[1,193],ke=[1,194],Oe=[1,195],Re=[1,196],Ne=[1,171],$e=[1,172],De=[1,174],Ie=[1,175],Le=[1,181],qe=[1,179],Ue=[1,182],Fe=[1,165],Me=[1,167],_e=[1,186],Ve=[1,197],je=[4,5],Pe=[2,455],Be=[1,200],Ge=[1,205],Je=[1,214],He=[1,210],We=[8,69,75,90,95,115,125,159,165,166,180,195,229,242,244,297,301,509,510],Xe=[4,5,8,69,73,74,75,109,112,113,115,119,120,121,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,142,143,145,146,147,149,151,153,159,161,163,165,166,167,168,169,170,172,180,182,184,195,273,274,275,276,277,278,279,280,281,297,301,410,414,509,510],Ye=[4,5,8,51,69,71,73,74,75,86,90,92,95,96,104,109,112,113,115,119,120,121,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,142,143,145,146,147,149,151,153,159,161,163,165,166,167,168,169,170,172,176,177,178,180,182,184,186,195,203,205,219,220,221,222,223,224,225,226,229,236,239,240,242,244,262,273,274,275,276,277,278,279,280,281,283,289,297,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,321,322,323,324,326,329,330,337,385,389,390,393,395,397,398,406,407,408,410,414,425,427,428,430,431,432,433,434,438,439,442,443,455,461,496,498,499,508,509,510],Ke=[1,244],Qe=[1,251],ze=[1,260],Ze=[1,265],et=[1,264],tt=[4,5,8,69,74,75,90,95,104,115,125,128,129,134,140,142,149,151,153,159,165,166,176,177,178,180,195,229,242,244,261,262,263,264,266,273,274,275,276,277,278,279,280,281,283,284,285,286,287,288,289,290,291,293,294,297,301,307,319,410,414,509,510],nt=[2,158],rt=[1,276],at=[8,71,75,297,301,496,509,510],st=[4,5,8,69,74,75,90,95,104,115,125,128,129,134,140,142,149,151,153,159,161,165,166,176,177,178,180,182,184,192,195,229,242,244,261,262,263,264,266,273,274,275,276,277,278,279,280,281,283,284,285,286,287,288,289,290,291,293,294,297,301,307,319,410,414,509,510],it=[4,5,8,51,69,71,73,74,75,86,90,92,95,96,104,109,112,113,115,119,120,121,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,142,143,145,146,147,149,151,153,159,161,163,165,166,167,168,169,170,172,176,177,178,180,182,184,186,190,195,203,205,219,220,221,222,223,224,225,226,227,228,229,236,239,240,242,244,262,273,274,275,276,277,278,279,280,281,283,289,290,297,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,321,322,323,324,326,329,330,333,337,346,358,359,360,363,364,376,378,385,389,390,391,392,393,394,395,397,398,406,407,408,410,414,416,418,424,425,427,428,430,431,432,433,434,438,439,442,443,455,461,496,498,499,505,506,507,508,509,510],ot=[4,5,8,51,69,86,121,143,153,186,262,283,297,326,329,330,337,385,389,390,393,395,397,398,406,407,408,425,427,428,430,431,432,433,434,438,439,442,443,496,498,499,508,509,510],ut=[1,289],ct=[1,291],lt=[2,487],ht=[1,296],dt=[1,307],ft=[1,310],pt=[1,311],bt=[8,75,86,129,134,143,186,289,297,301,461,509,510],gt=[8,71,297,301,509,510],mt=[2,552],vt=[1,327],Et=[4,5,153],yt=[1,364],St=[1,336],wt=[1,370],Tt=[1,371],xt=[1,344],At=[1,355],Ct=[1,342],kt=[1,350],Ot=[1,343],Rt=[1,351],Nt=[1,353],$t=[1,345],Dt=[1,346],It=[1,365],Lt=[1,362],qt=[1,363],Ut=[1,339],Ft=[1,341],Mt=[1,334],_t=[1,335],Vt=[1,337],jt=[1,338],Pt=[1,340],Bt=[1,347],Gt=[1,348],Jt=[1,352],Ht=[1,354],Wt=[1,356],Xt=[1,357],Yt=[1,358],Kt=[1,359],Qt=[1,360],zt=[1,366],Zt=[1,367],en=[1,368],tn=[1,369],nn=[2,283],rn=[4,5,8,51,69,71,73,74,75,86,90,92,95,96,104,109,112,113,115,119,120,121,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,142,143,145,146,147,149,151,153,159,161,163,165,166,167,168,169,170,172,176,177,178,180,182,184,186,195,203,205,219,220,221,222,223,224,225,226,227,228,229,236,239,240,242,244,262,273,274,275,276,277,278,279,280,281,283,289,290,297,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,321,322,323,324,326,329,330,333,337,346,358,359,363,364,385,389,390,393,395,397,398,406,407,408,410,414,416,418,425,427,428,430,431,432,433,434,438,439,442,443,455,461,496,498,499,508,509,510],an=[2,351],sn=[1,392],on=[1,402],un=[4,5,8,51,69,71,73,74,75,86,90,92,95,96,104,109,112,113,115,119,120,121,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,142,143,145,146,147,149,151,153,159,161,163,165,166,167,168,169,170,172,176,177,178,180,182,184,186,195,203,205,219,220,221,222,223,224,225,226,227,228,229,236,239,240,242,244,262,273,274,275,276,277,278,279,280,281,283,289,297,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,321,322,323,324,326,329,330,337,385,389,390,393,395,397,398,406,407,408,410,414,416,418,425,427,428,430,431,432,433,434,438,439,442,443,455,461,496,498,499,508,509,510],cn=[1,418],ln=[1,426],hn=[1,425],dn=[4,5,8,69,71,75,90,95,115,125,159,165,166,203,205,219,220,221,222,223,224,225,226,227,228,229,242,244,297,301,509,510],fn=[8,69,71,75,90,95,115,125,159,165,166,203,205,219,220,221,222,223,224,225,226,227,228,229,242,244,297,301,509,510],pn=[2,198],bn=[1,448],gn=[8,69,75,90,95,115,125,159,165,166,180,229,242,244,297,301,509,510],mn=[2,159],vn=[1,451],En=[4,5,109],yn=[1,464],Sn=[1,483],wn=[1,463],Tn=[1,462],xn=[1,457],An=[1,458],Cn=[1,460],kn=[1,461],On=[1,465],Rn=[1,466],Nn=[1,467],$n=[1,468],Dn=[1,469],In=[1,470],Ln=[1,471],qn=[1,472],Un=[1,473],Fn=[1,474],Mn=[1,475],_n=[1,476],Vn=[1,477],jn=[1,478],Pn=[1,479],Bn=[1,480],Gn=[1,482],Jn=[1,484],Hn=[1,485],Wn=[1,486],Xn=[1,487],Yn=[1,488],Kn=[1,489],Qn=[1,490],zn=[1,493],Zn=[1,494],er=[1,495],tr=[1,496],nr=[1,497],rr=[1,498],ar=[1,499],sr=[1,500],ir=[1,501],or=[1,502],ur=[1,503],cr=[1,504],lr=[71,86,186],hr=[8,71,75,151,184,227,290,297,301,333,346,358,359,363,364,509,510],dr=[1,521],fr=[8,71,75,297,301,509,510],pr=[1,522],br=[1,530],gr=[4,5,74,128,129,134,140,142,149,151,153,176,177,178,261,262,263,264,266,273,274,275,276,277,278,279,280,281,283,284,285,286,287,288,289,290,291,293,294,307,319,410,414],mr=[8,69,75,90,95,104,115,125,159,165,166,180,195,229,242,244,297,301,509,510],vr=[4,5,129,289],Er=[1,564],yr=[8,71,73,75,297,301,509,510],Sr=[2,722],wr=[8,71,73,75,129,136,138,142,149,297,301,410,414,509,510],Tr=[2,878],xr=[8,71,73,75,136,138,142,149,297,301,410,414,509,510],Ar=[8,71,73,75,136,138,142,297,301,410,414,509,510],Cr=[8,71,75,136,138,297,301,509,510],kr=[8,75,86,129,143,186,289,297,301,461,509,510],Or=[326,329,330],Rr=[2,748],Nr=[1,589],$r=[1,590],Dr=[1,591],Ir=[1,592],Lr=[1,596],qr=[1,597],Ur=[161,163,325],Fr=[2,434],Mr=[1,651],_r=[4,5,74,128,153,283,284,285,286],Vr=[1,666],jr=[4,5,8,51,69,71,73,74,75,86,90,92,95,96,104,109,115,119,121,125,126,127,128,129,131,132,134,136,137,138,139,140,142,143,145,146,147,149,151,153,159,161,163,165,166,167,168,169,170,172,176,178,180,182,184,186,195,203,205,219,220,221,222,223,224,225,226,229,236,239,240,242,244,262,273,274,275,276,277,278,279,280,281,283,289,297,299,300,301,302,303,304,305,307,308,309,310,311,312,313,314,315,316,321,322,323,324,326,329,330,337,385,389,390,393,395,397,398,406,407,408,410,414,425,427,428,430,431,432,433,434,438,439,442,443,455,461,496,498,499,508,509,510],Pr=[4,5,8,51,69,71,73,74,75,86,90,92,95,96,104,109,112,113,115,119,120,121,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,142,143,145,146,147,149,151,153,159,161,163,165,166,167,168,169,170,172,176,177,178,180,182,184,186,195,203,205,219,220,221,222,223,224,225,226,229,236,239,240,242,244,262,273,274,275,276,277,278,279,280,281,283,289,297,299,300,301,302,303,304,305,307,308,309,310,311,312,313,314,315,316,321,322,323,324,326,329,330,337,385,389,390,393,395,397,398,406,407,408,410,414,425,427,428,430,431,432,433,434,438,439,442,443,455,461,496,498,499,508,509,510],Br=[2,366],Gr=[1,673],Jr=[297,299,301],Hr=[71,418],Wr=[71,416,418],Xr=[1,680],Yr=[4,5,8,51,69,71,73,75,86,90,92,95,96,104,109,112,113,115,119,120,121,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,142,143,145,146,147,149,151,153,159,161,163,165,166,167,168,169,170,172,176,177,178,180,182,184,186,195,203,205,219,220,221,222,223,224,225,226,229,236,239,240,242,244,262,273,274,275,276,277,278,279,280,281,283,289,297,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,321,322,323,324,326,329,330,337,385,389,390,393,395,397,398,406,407,408,410,414,425,427,428,430,431,432,433,434,438,439,442,443,455,461,496,498,499,508,509,510],Kr=[71,416],Qr=[8,69,75,90,95,115,125,159,165,166,229,242,244,297,301,509,510],zr=[1,717],Zr=[8,69,75,297,301,509,510],ea=[1,723],ta=[1,724],na=[1,725],ra=[4,5,8,69,71,73,74,75,109,112,113,115,119,120,121,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,142,143,145,146,147,149,151,153,159,161,163,165,166,167,168,169,170,172,176,177,178,180,182,184,195,273,274,275,276,277,278,279,280,281,297,301,410,414,509,510],aa=[1,775],sa=[1,774],ia=[1,788],oa=[8,69,71,75,90,95,104,115,125,159,165,166,180,195,229,242,244,297,301,509,510],ua=[1,819],ca=[8,75,86,143,186,297,301,461,509,510],la=[1,839],ha=[1,838],da=[1,837],fa=[1,850],pa=[4,5,8,51,69,71,73,74,75,86,90,92,95,96,104,109,115,119,121,125,126,127,128,129,131,132,134,136,137,140,142,143,145,146,147,149,151,153,159,161,163,165,166,167,168,169,170,172,178,180,182,184,186,195,203,205,219,220,221,222,223,224,225,226,229,236,239,240,242,244,262,273,274,275,276,277,278,279,280,281,283,289,297,299,300,301,302,303,304,305,310,311,312,313,314,315,316,321,322,323,324,326,329,330,337,385,389,390,393,395,397,398,406,407,408,410,414,425,427,428,430,431,432,433,434,438,439,442,443,455,461,496,498,499,508,509,510],ba=[4,5,8,51,69,71,73,74,75,86,90,92,95,96,104,109,115,119,121,125,126,127,128,129,131,132,134,136,137,140,142,143,145,146,147,149,151,153,159,161,163,165,166,167,168,169,170,172,178,180,182,184,186,195,203,205,219,220,221,222,223,224,225,226,229,236,239,240,242,244,262,273,274,275,276,277,278,279,280,281,283,289,297,299,300,301,302,303,305,310,311,312,313,314,315,316,321,322,323,324,326,329,330,337,385,389,390,393,395,397,398,406,407,408,410,414,425,427,428,430,431,432,433,434,438,439,442,443,455,461,496,498,499,508,509,510],ga=[4,5,8,51,69,71,73,74,75,86,90,92,95,96,104,109,115,119,121,125,126,127,128,129,130,131,132,134,135,136,137,138,139,140,142,143,145,146,147,149,151,153,159,161,163,165,166,167,168,169,170,172,176,177,178,180,182,184,186,195,203,205,219,220,221,222,223,224,225,226,229,236,239,240,242,244,262,273,274,275,276,277,278,279,280,281,283,289,297,299,300,301,302,303,304,305,307,308,309,310,311,312,313,314,315,316,321,322,323,324,326,329,330,337,385,389,390,393,395,397,398,406,407,408,410,414,425,427,428,430,431,432,433,434,438,439,442,443,455,461,496,498,499,508,509,510],ma=[4,5,8,51,69,71,73,74,75,86,90,92,95,96,104,109,115,119,121,125,126,127,128,129,131,132,134,136,137,138,139,140,142,143,145,146,147,149,151,153,159,161,163,165,166,167,168,169,170,172,178,180,182,184,186,195,203,205,219,220,221,222,223,224,225,226,229,236,239,240,242,244,262,273,274,275,276,277,278,279,280,281,283,289,297,299,300,301,302,303,304,305,308,309,310,311,312,313,314,315,316,321,322,323,324,326,329,330,337,385,389,390,393,395,397,398,406,407,408,410,414,425,427,428,430,431,432,433,434,438,439,442,443,455,461,496,498,499,508,509,510],va=[4,5,8,51,69,71,73,74,75,86,90,92,95,96,104,115,119,121,125,126,127,128,129,131,132,134,136,137,140,142,143,145,146,147,149,151,153,159,161,163,165,166,167,168,169,170,172,178,180,182,184,186,195,203,205,219,220,221,222,223,224,225,226,229,236,239,240,242,244,262,273,274,275,276,277,278,279,280,281,283,289,297,299,300,301,304,310,311,312,313,314,315,316,321,322,324,326,329,330,337,385,389,390,393,395,397,398,406,407,408,410,414,425,427,428,430,431,432,433,434,438,439,442,443,455,461,496,498,499,508,509,510],Ea=[2,396],ya=[4,5,8,51,69,71,73,74,75,86,90,92,95,104,115,119,125,126,127,128,129,131,132,134,140,142,143,145,146,147,149,153,159,161,163,165,166,167,168,169,170,172,178,180,182,184,186,195,203,205,219,220,221,222,223,224,225,226,229,236,239,240,242,244,262,273,274,275,276,277,278,279,280,281,283,289,297,299,300,301,304,321,322,324,326,329,330,337,385,389,390,393,395,397,398,406,407,408,410,414,425,427,428,430,431,432,433,434,438,439,442,443,455,461,496,498,499,508,509,510],Sa=[2,281],wa=[4,5,8,51,69,71,73,74,75,86,90,92,95,96,104,109,112,113,115,119,120,121,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,142,143,145,146,147,149,151,153,159,161,163,165,166,167,168,169,170,172,176,177,178,180,182,184,186,195,203,205,219,220,221,222,223,224,225,226,229,236,239,240,242,244,262,273,274,275,276,277,278,279,280,281,283,289,297,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,321,322,323,324,326,329,330,337,385,389,390,393,395,397,398,406,407,408,410,414,416,418,425,427,428,430,431,432,433,434,438,439,442,443,455,461,496,498,499,508,509,510],Ta=[1,886],xa=[8,75,297,301,509,510],Aa=[1,897],Ca=[8,69,75,115,125,159,165,166,229,242,244,297,301,509,510],ka=[8,69,71,75,90,95,115,125,159,165,166,180,195,229,242,244,297,301,509,510],Oa=[4,5,69,73,74,75,109,112,113,115,119,120,121,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,142,143,145,146,147,149,151,153,159,161,163,165,166,167,168,169,170,172,182,184,273,274,275,276,277,278,279,280,281,410,414],Ra=[4,5,69,71,73,74,75,109,112,113,115,119,120,121,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,142,143,145,146,147,149,151,153,159,161,163,165,166,167,168,169,170,172,182,184,273,274,275,276,277,278,279,280,281,410,414],Na=[2,802],$a=[4,5,69,71,73,74,109,112,113,115,119,120,121,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,142,143,145,146,147,149,151,153,159,161,163,165,166,167,168,169,170,172,182,184,273,274,275,276,277,278,279,280,281,410,414],Da=[1,949],Ia=[8,71,75,125,297,299,301,455,509,510],La=[1,958],qa=[1,957],Ua=[2,569],Fa=[1,979],Ma=[73,136],_a=[2,708],Va=[1,996],ja=[1,997],Pa=[4,5,8,51,69,73,86,121,143,153,186,227,262,283,297,301,326,329,330,337,385,389,390,393,395,397,398,406,407,408,425,427,428,430,431,432,433,434,438,439,442,443,496,498,499,508,509,510],Ba=[1,1004],Ga=[1,1005],Ja=[2,322],Ha=[1,1023],Wa=[1,1033],Xa=[8,71,75,297,299,301,455,509,510],Ya=[1,1036],Ka=[8,69,71,75,90,95,115,125,159,165,166,203,205,219,220,221,222,223,224,225,226,229,242,244,297,301,509,510],Qa=[8,297,299,301,455,509,510],za=[8,69,75,115,159,165,166,229,242,244,297,301,509,510],Za=[1,1051],es=[1,1055],ts=[1,1056],ns=[1,1058],rs=[1,1059],as=[1,1060],ss=[1,1061],is=[1,1062],os=[1,1063],us=[1,1064],cs=[1,1065],ls=[1,1090],hs=[71,75],ds=[112,113,121],fs=[1,1149],ps=[8,69,75,115,159,165,166,242,244,297,301,509,510],bs=[8,69,75,90,95,115,125,159,165,166,203,205,219,220,221,222,223,224,225,226,229,242,244,297,301,509,510],gs=[1,1190],ms=[1,1192],vs=[4,5,74,140,142,149,153,178,283,284,285,286,293,410,414],Es=[1,1206],ys=[8,69,71,75,159,165,166,242,244,297,301,509,510],Ss=[1,1225],ws=[1,1227],Ts=[1,1228],xs=[1,1224],As=[1,1223],Cs=[1,1222],ks=[1,1229],Os=[1,1219],Rs=[1,1220],Ns=[1,1221],$s=[1,1246],Ds=[4,5,8,51,69,86,121,143,153,186,262,283,297,301,326,329,330,337,385,389,390,393,395,397,398,406,407,408,425,427,428,430,431,432,433,434,438,439,442,443,496,498,499,508,509,510],Is=[4,5,8,51,69,71,73,74,75,86,90,92,95,96,104,109,112,113,115,119,120,121,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,142,143,145,146,147,149,151,153,159,161,163,165,166,167,168,169,170,172,176,177,178,180,182,184,186,195,203,205,219,220,221,222,223,224,225,226,227,229,236,239,240,242,244,262,273,274,275,276,277,278,279,280,281,283,289,290,297,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,321,322,323,324,326,329,330,333,337,346,358,359,363,364,385,389,390,393,395,397,398,406,407,408,410,414,425,427,428,430,431,432,433,434,438,439,442,443,455,461,496,498,499,508,509,510],Ls=[1,1260],qs=[1,1268],Us=[1,1267],Fs=[8,69,75,159,165,166,242,244,297,301,509,510],Ms=[8,69,75,90,95,115,125,159,165,166,203,205,219,220,221,222,223,224,225,226,227,228,229,242,244,297,301,509,510],_s=[4,5,8,69,75,90,95,115,125,159,165,166,203,205,219,220,221,222,223,224,225,226,227,228,229,242,244,297,301,509,510],Vs=[1,1325],js=[1,1327],Ps=[1,1324],Bs=[1,1326],Gs=[184,190,358,359,360,363],Js=[2,499],Hs=[1,1332],Ws=[1,1353],Xs=[8,69,75,159,165,166,297,301,509,510],Ys=[1,1363],Ks=[1,1364],Qs=[1,1365],zs=[1,1384],Zs=[4,8,240,297,301,333,346,509,510],ei=[1,1433],ti=[8,69,71,75,115,159,165,166,236,242,244,297,301,509,510],ni=[4,5,74],ri=[1,1527],ai=[1,1539],si=[1,1558],ii=[8,69,75,159,165,166,297,301,404,509,510],oi=[8,71,75,227,297,301,509,510],ui={ +trace:function(){},yy:{},symbols_:{error:2,Literal:3,LITERAL:4,BRALITERAL:5,main:6,Statements:7,EOF:8,Statements_group0:9,AStatement:10,ExplainStatement:11,EXPLAIN:12,QUERY:13,PLAN:14,Statement:15,AlterTable:16,AttachDatabase:17,Call:18,CreateDatabase:19,CreateIndex:20,CreateGraph:21,CreateTable:22,CreateView:23,CreateEdge:24,CreateVertex:25,Declare:26,Delete:27,DetachDatabase:28,DropDatabase:29,DropIndex:30,DropTable:31,DropView:32,If:33,Insert:34,Merge:35,Reindex:36,RenameTable:37,Select:38,ShowCreateTable:39,ShowColumns:40,ShowDatabases:41,ShowIndex:42,ShowTables:43,TruncateTable:44,WithSelect:45,CreateTrigger:46,DropTrigger:47,BeginTransaction:48,CommitTransaction:49,RollbackTransaction:50,EndTransaction:51,UseDatabase:52,Update:53,Help:54,JavaScript:55,Source:56,Assert:57,While:58,Continue:59,Break:60,BeginEnd:61,Print:62,Require:63,SetVariable:64,ExpressionStatement:65,AddRule:66,Query:67,Echo:68,WITH:69,WithTablesList:70,COMMA:71,WithTable:72,AS:73,LPAR:74,RPAR:75,SelectClause:76,Select_option0:77,IntoClause:78,FromClause:79,Select_option1:80,WhereClause:81,GroupClause:82,OrderClause:83,LimitClause:84,UnionClause:85,SEARCH:86,Select_repetition0:87,Select_option2:88,PivotClause:89,PIVOT:90,Expression:91,FOR:92,PivotClause_option0:93,PivotClause_option1:94,UNPIVOT:95,IN:96,ColumnsList:97,PivotClause_option2:98,PivotClause2:99,AsList:100,AsLiteral:101,AsPart:102,RemoveClause:103,REMOVE:104,RemoveClause_option0:105,RemoveColumnsList:106,RemoveColumn:107,Column:108,LIKE:109,StringValue:110,ArrowDot:111,ARROW:112,DOT:113,SearchSelector:114,ORDER:115,BY:116,OrderExpressionsList:117,SearchSelector_option0:118,DOTDOT:119,CARET:120,EQ:121,SearchSelector_repetition_plus0:122,SearchSelector_repetition_plus1:123,SearchSelector_option1:124,WHERE:125,OF:126,CLASS:127,NUMBER:128,STRING:129,SLASH:130,VERTEX:131,EDGE:132,EXCLAMATION:133,SHARP:134,MODULO:135,GT:136,LT:137,GTGT:138,LTLT:139,DOLLAR:140,Json:141,AT:142,SET:143,SetColumnsList:144,TO:145,VALUE:146,ROW:147,ExprList:148,COLON:149,PlusStar:150,NOT:151,SearchSelector_repetition2:152,IF:153,SearchSelector_repetition3:154,Aggregator:155,SearchSelector_repetition4:156,SearchSelector_group0:157,SearchSelector_repetition5:158,UNION:159,SearchSelectorList:160,ALL:161,SearchSelector_repetition6:162,ANY:163,SearchSelector_repetition7:164,INTERSECT:165,EXCEPT:166,AND:167,OR:168,PATH:169,RETURN:170,ResultColumns:171,REPEAT:172,SearchSelector_repetition8:173,SearchSelectorList_repetition0:174,SearchSelectorList_repetition1:175,PLUS:176,STAR:177,QUESTION:178,SearchFrom:179,FROM:180,SelectModifier:181,DISTINCT:182,TopClause:183,UNIQUE:184,SelectClause_option0:185,SELECT:186,COLUMN:187,MATRIX:188,TEXTSTRING:189,INDEX:190,RECORDSET:191,TOP:192,NumValue:193,TopClause_option0:194,INTO:195,Table:196,FuncValue:197,ParamValue:198,VarValue:199,FromTablesList:200,JoinTablesList:201,ApplyClause:202,CROSS:203,APPLY:204,OUTER:205,FromTable:206,FromTable_option0:207,FromTable_option1:208,INDEXED:209,INSERTED:210,FromString:211,JoinTable:212,JoinMode:213,JoinTableAs:214,OnClause:215,JoinTableAs_option0:216,JoinTableAs_option1:217,JoinModeMode:218,NATURAL:219,JOIN:220,INNER:221,LEFT:222,RIGHT:223,FULL:224,SEMI:225,ANTI:226,ON:227,USING:228,GROUP:229,GroupExpressionsList:230,HavingClause:231,GroupExpression:232,GROUPING:233,ROLLUP:234,CUBE:235,HAVING:236,CORRESPONDING:237,OrderExpression:238,DIRECTION:239,COLLATE:240,NOCASE:241,LIMIT:242,OffsetClause:243,OFFSET:244,LimitClause_option0:245,FETCH:246,LimitClause_option1:247,LimitClause_option2:248,LimitClause_option3:249,ResultColumn:250,Star:251,AggrValue:252,Op:253,LogicValue:254,NullValue:255,ExistsValue:256,CaseValue:257,CastClause:258,NewClause:259,Expression_group0:260,CURRENT_TIMESTAMP:261,JAVASCRIPT:262,NEW:263,CAST:264,ColumnType:265,CONVERT:266,PrimitiveValue:267,OverClause:268,OVER:269,OverPartitionClause:270,OverOrderByClause:271,PARTITION:272,SUM:273,COUNT:274,MIN:275,MAX:276,AVG:277,FIRST:278,LAST:279,AGGR:280,ARRAY:281,FuncValue_option0:282,REPLACE:283,DATEADD:284,DATEDIFF:285,INTERVAL:286,TRUE:287,FALSE:288,NSTRING:289,NULL:290,EXISTS:291,ParamValue_group0:292,BRAQUESTION:293,CASE:294,WhensList:295,ElseClause:296,END:297,When:298,WHEN:299,THEN:300,ELSE:301,REGEXP:302,GLOB:303,ESCAPE:304,NOT_LIKE:305,BARBAR:306,MINUS:307,AMPERSAND:308,BAR:309,GE:310,LE:311,EQEQ:312,EQEQEQ:313,NE:314,NEEQEQ:315,NEEQEQEQ:316,CondOp:317,AllSome:318,TILDA:319,ColFunc:320,BETWEEN:321,NOT_BETWEEN:322,IS:323,DOUBLECOLON:324,SOME:325,UPDATE:326,SetColumn:327,SetColumn_group0:328,DELETE:329,INSERT:330,Into:331,ValuesListsList:332,DEFAULT:333,ValuesList:334,Value:335,DateValue:336,CREATE:337,TemporaryClause:338,TableClass:339,IfNotExists:340,CreateTableDefClause:341,CreateTableOptionsClause:342,TABLE:343,CreateTableOptions:344,CreateTableOption:345,IDENTITY:346,TEMP:347,ColumnDefsList:348,ConstraintsList:349,Constraint:350,ConstraintName:351,PrimaryKey:352,ForeignKey:353,UniqueKey:354,IndexKey:355,Check:356,CONSTRAINT:357,CHECK:358,PRIMARY:359,KEY:360,PrimaryKey_option0:361,ColsList:362,FOREIGN:363,REFERENCES:364,ForeignKey_option0:365,OnForeignKeyClause:366,ParColsList:367,OnDeleteClause:368,OnUpdateClause:369,NO:370,ACTION:371,UniqueKey_option0:372,UniqueKey_option1:373,ColumnDef:374,ColumnConstraintsClause:375,ColumnConstraints:376,NumberMax:377,ENUM:378,MAXNUM:379,ColumnConstraintsList:380,ColumnConstraint:381,ParLiteral:382,ColumnConstraint_option0:383,ColumnConstraint_option1:384,DROP:385,DropTable_group0:386,IfExists:387,TablesList:388,ALTER:389,RENAME:390,ADD:391,MODIFY:392,ATTACH:393,DATABASE:394,DETACH:395,AsClause:396,USE:397,SHOW:398,VIEW:399,CreateView_option0:400,CreateView_option1:401,SubqueryRestriction:402,READ:403,ONLY:404,OPTION:405,HELP:406,SOURCE:407,ASSERT:408,JsonObject:409,ATLBRA:410,JsonArray:411,JsonValue:412,JsonPrimitiveValue:413,LCUR:414,JsonPropertiesList:415,RCUR:416,JsonElementsList:417,RBRA:418,JsonProperty:419,OnOff:420,AtDollar:421,SetPropsList:422,SetProp:423,OFF:424,COMMIT:425,TRANSACTION:426,ROLLBACK:427,BEGIN:428,ElseStatement:429,WHILE:430,CONTINUE:431,BREAK:432,PRINT:433,REQUIRE:434,StringValuesList:435,PluginsList:436,Plugin:437,ECHO:438,DECLARE:439,DeclaresList:440,DeclareItem:441,TRUNCATE:442,MERGE:443,MergeInto:444,MergeUsing:445,MergeOn:446,MergeMatchedList:447,OutputClause:448,MergeMatched:449,MergeNotMatched:450,MATCHED:451,MergeMatchedAction:452,MergeNotMatchedAction:453,TARGET:454,OUTPUT:455,CreateVertex_option0:456,CreateVertex_option1:457,CreateVertex_option2:458,CreateVertexSet:459,SharpValue:460,CONTENT:461,CreateEdge_option0:462,GRAPH:463,GraphList:464,GraphVertexEdge:465,GraphElement:466,GraphVertexEdge_option0:467,GraphVertexEdge_option1:468,GraphElementVar:469,GraphVertexEdge_option2:470,GraphVertexEdge_option3:471,GraphVertexEdge_option4:472,GraphVar:473,GraphAsClause:474,GraphAtClause:475,GraphElement2:476,GraphElement2_option0:477,GraphElement2_option1:478,GraphElement2_option2:479,GraphElement2_option3:480,GraphElement_option0:481,GraphElement_option1:482,GraphElement_option2:483,SharpLiteral:484,GraphElement_option3:485,GraphElement_option4:486,GraphElement_option5:487,ColonLiteral:488,DeleteVertex:489,DeleteVertex_option0:490,DeleteEdge:491,DeleteEdge_option0:492,DeleteEdge_option1:493,DeleteEdge_option2:494,Term:495,COLONDASH:496,TermsList:497,QUESTIONDASH:498,CALL:499,TRIGGER:500,BeforeAfter:501,InsertDeleteUpdate:502,CreateTrigger_option0:503,CreateTrigger_option1:504,BEFORE:505,AFTER:506,INSTEAD:507,REINDEX:508,SEMICOLON:509,GO:510,PERCENT:511,ROWS:512,NEXT:513,FuncValue_option0_group0:514,$accept:0,$end:1},terminals_:{2:"error",4:"LITERAL",5:"BRALITERAL",8:"EOF",12:"EXPLAIN",13:"QUERY",14:"PLAN",51:"EndTransaction",69:"WITH",71:"COMMA",73:"AS",74:"LPAR",75:"RPAR",86:"SEARCH",90:"PIVOT",92:"FOR",95:"UNPIVOT",96:"IN",104:"REMOVE",109:"LIKE",112:"ARROW",113:"DOT",115:"ORDER",116:"BY",119:"DOTDOT",120:"CARET",121:"EQ",125:"WHERE",126:"OF",127:"CLASS",128:"NUMBER",129:"STRING",130:"SLASH",131:"VERTEX",132:"EDGE",133:"EXCLAMATION",134:"SHARP",135:"MODULO",136:"GT",137:"LT",138:"GTGT",139:"LTLT",140:"DOLLAR",142:"AT",143:"SET",145:"TO",146:"VALUE",147:"ROW",149:"COLON",151:"NOT",153:"IF",159:"UNION",161:"ALL",163:"ANY",165:"INTERSECT",166:"EXCEPT",167:"AND",168:"OR",169:"PATH",170:"RETURN",172:"REPEAT",176:"PLUS",177:"STAR",178:"QUESTION",180:"FROM",182:"DISTINCT",184:"UNIQUE",186:"SELECT",187:"COLUMN",188:"MATRIX",189:"TEXTSTRING",190:"INDEX",191:"RECORDSET",192:"TOP",195:"INTO",203:"CROSS",204:"APPLY",205:"OUTER",209:"INDEXED",210:"INSERTED",219:"NATURAL",220:"JOIN",221:"INNER",222:"LEFT",223:"RIGHT",224:"FULL",225:"SEMI",226:"ANTI",227:"ON",228:"USING",229:"GROUP",233:"GROUPING",234:"ROLLUP",235:"CUBE",236:"HAVING",237:"CORRESPONDING",239:"DIRECTION",240:"COLLATE",241:"NOCASE",242:"LIMIT",244:"OFFSET",246:"FETCH",261:"CURRENT_TIMESTAMP",262:"JAVASCRIPT",263:"NEW",264:"CAST",266:"CONVERT",269:"OVER",272:"PARTITION",273:"SUM",274:"COUNT",275:"MIN",276:"MAX",277:"AVG",278:"FIRST",279:"LAST",280:"AGGR",281:"ARRAY",283:"REPLACE",284:"DATEADD",285:"DATEDIFF",286:"INTERVAL",287:"TRUE",288:"FALSE",289:"NSTRING",290:"NULL",291:"EXISTS",293:"BRAQUESTION",294:"CASE",297:"END",299:"WHEN",300:"THEN",301:"ELSE",302:"REGEXP",303:"GLOB",304:"ESCAPE",305:"NOT_LIKE",306:"BARBAR",307:"MINUS",308:"AMPERSAND",309:"BAR",310:"GE",311:"LE",312:"EQEQ",313:"EQEQEQ",314:"NE",315:"NEEQEQ",316:"NEEQEQEQ",319:"TILDA",321:"BETWEEN",322:"NOT_BETWEEN",323:"IS",324:"DOUBLECOLON",325:"SOME",326:"UPDATE",329:"DELETE",330:"INSERT",333:"DEFAULT",336:"DateValue",337:"CREATE",343:"TABLE",346:"IDENTITY",347:"TEMP",357:"CONSTRAINT",358:"CHECK",359:"PRIMARY",360:"KEY",363:"FOREIGN",364:"REFERENCES",370:"NO",371:"ACTION",376:"ColumnConstraints",378:"ENUM",379:"MAXNUM",385:"DROP",389:"ALTER",390:"RENAME",391:"ADD",392:"MODIFY",393:"ATTACH",394:"DATABASE",395:"DETACH",397:"USE",398:"SHOW",399:"VIEW",403:"READ",404:"ONLY",405:"OPTION",406:"HELP",407:"SOURCE",408:"ASSERT",410:"ATLBRA",414:"LCUR",416:"RCUR",418:"RBRA",424:"OFF",425:"COMMIT",426:"TRANSACTION",427:"ROLLBACK",428:"BEGIN",430:"WHILE",431:"CONTINUE",432:"BREAK",433:"PRINT",434:"REQUIRE",438:"ECHO",439:"DECLARE",442:"TRUNCATE",443:"MERGE",451:"MATCHED",454:"TARGET",455:"OUTPUT",461:"CONTENT",463:"GRAPH",496:"COLONDASH",498:"QUESTIONDASH",499:"CALL",500:"TRIGGER",505:"BEFORE",506:"AFTER",507:"INSTEAD",508:"REINDEX",509:"SEMICOLON",510:"GO",511:"PERCENT",512:"ROWS",513:"NEXT"},productions_:[0,[3,1],[3,1],[6,2],[7,3],[7,1],[7,1],[11,2],[11,4],[10,1],[15,0],[15,1],[15,1],[15,1],[15,1],[15,1],[15,1],[15,1],[15,1],[15,1],[15,1],[15,1],[15,1],[15,1],[15,1],[15,1],[15,1],[15,1],[15,1],[15,1],[15,1],[15,1],[15,1],[15,1],[15,1],[15,1],[15,1],[15,1],[15,1],[15,1],[15,1],[15,1],[15,1],[15,1],[15,1],[15,1],[15,1],[15,1],[15,1],[15,1],[15,1],[15,1],[15,1],[15,1],[15,1],[15,1],[15,1],[15,1],[15,1],[15,1],[15,1],[15,1],[15,1],[15,1],[45,3],[70,3],[70,1],[72,5],[38,10],[38,4],[89,8],[89,11],[99,4],[101,2],[101,1],[100,3],[100,1],[102,1],[102,3],[103,3],[106,3],[106,1],[107,1],[107,2],[111,1],[111,1],[114,1],[114,5],[114,5],[114,1],[114,2],[114,1],[114,2],[114,2],[114,3],[114,4],[114,4],[114,4],[114,4],[114,4],[114,1],[114,1],[114,1],[114,1],[114,1],[114,1],[114,2],[114,2],[114,2],[114,1],[114,1],[114,1],[114,1],[114,1],[114,1],[114,2],[114,3],[114,4],[114,3],[114,1],[114,4],[114,2],[114,2],[114,4],[114,4],[114,4],[114,4],[114,4],[114,5],[114,4],[114,4],[114,4],[114,4],[114,4],[114,4],[114,4],[114,4],[114,6],[160,3],[160,1],[150,1],[150,1],[150,1],[179,2],[76,4],[76,4],[76,4],[76,3],[181,1],[181,2],[181,2],[181,2],[181,2],[181,2],[181,2],[181,2],[183,3],[183,4],[183,0],[78,0],[78,2],[78,2],[78,2],[78,2],[78,2],[79,2],[79,3],[79,5],[79,0],[202,6],[202,7],[202,6],[202,7],[200,1],[200,3],[206,4],[206,5],[206,3],[206,3],[206,2],[206,3],[206,1],[206,3],[206,2],[206,3],[206,1],[206,1],[206,2],[206,3],[206,1],[206,1],[206,2],[206,3],[206,1],[206,2],[206,3],[211,1],[196,3],[196,1],[201,2],[201,2],[201,1],[201,1],[212,3],[214,1],[214,2],[214,3],[214,3],[214,2],[214,3],[214,4],[214,5],[214,1],[214,2],[214,3],[214,1],[214,2],[214,3],[213,1],[213,2],[218,1],[218,2],[218,2],[218,3],[218,2],[218,3],[218,2],[218,3],[218,2],[218,2],[218,2],[215,2],[215,2],[215,0],[81,0],[81,2],[82,0],[82,4],[230,1],[230,3],[232,5],[232,4],[232,4],[232,1],[231,0],[231,2],[85,0],[85,2],[85,3],[85,2],[85,2],[85,3],[85,4],[85,3],[85,3],[83,0],[83,3],[117,1],[117,3],[238,1],[238,2],[238,3],[238,4],[84,0],[84,3],[84,8],[243,0],[243,2],[171,3],[171,1],[250,3],[250,2],[250,3],[250,2],[250,3],[250,2],[250,1],[251,5],[251,3],[251,1],[108,5],[108,3],[108,3],[108,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,3],[91,3],[91,3],[91,1],[91,1],[55,1],[259,2],[259,2],[258,6],[258,8],[258,6],[258,8],[267,1],[267,1],[267,1],[267,1],[267,1],[267,1],[267,1],[252,5],[252,6],[252,6],[268,0],[268,4],[268,4],[268,5],[270,3],[271,3],[155,1],[155,1],[155,1],[155,1],[155,1],[155,1],[155,1],[155,1],[155,1],[197,5],[197,3],[197,4],[197,4],[197,8],[197,8],[197,8],[197,8],[197,3],[148,1],[148,3],[193,1],[254,1],[254,1],[110,1],[110,1],[255,1],[199,2],[256,4],[198,2],[198,2],[198,1],[198,1],[257,5],[257,4],[295,2],[295,1],[298,4],[296,2],[296,0],[253,3],[253,3],[253,3],[253,5],[253,3],[253,5],[253,3],[253,3],[253,3],[253,3],[253,3],[253,3],[253,3],[253,3],[253,3],[253,3],[253,3],[253,3],[253,3],[253,5],[253,3],[253,3],[253,3],[253,5],[253,3],[253,3],[253,3],[253,3],[253,3],[253,3],[253,3],[253,3],[253,3],[253,3],[253,3],[253,6],[253,6],[253,3],[253,3],[253,2],[253,2],[253,2],[253,2],[253,2],[253,3],[253,5],[253,6],[253,5],[253,6],[253,4],[253,5],[253,3],[253,4],[253,3],[253,4],[253,3],[253,3],[253,3],[253,3],[253,3],[320,1],[320,1],[320,4],[317,1],[317,1],[317,1],[317,1],[317,1],[317,1],[318,1],[318,1],[318,1],[53,6],[53,4],[144,1],[144,3],[327,3],[327,4],[27,5],[27,3],[34,5],[34,7],[34,5],[34,5],[34,8],[34,4],[34,6],[34,7],[331,0],[331,1],[332,3],[332,1],[332,1],[332,5],[332,3],[332,3],[334,1],[334,3],[335,1],[335,1],[335,1],[335,1],[335,1],[335,1],[97,1],[97,3],[22,9],[22,5],[339,1],[339,1],[342,0],[342,1],[344,2],[344,1],[345,1],[345,3],[345,3],[345,3],[338,0],[338,1],[340,0],[340,3],[341,3],[341,1],[341,2],[349,1],[349,3],[350,2],[350,2],[350,2],[350,2],[350,2],[351,0],[351,2],[356,4],[352,6],[353,9],[367,3],[366,0],[366,2],[368,4],[369,4],[354,6],[355,5],[355,5],[362,1],[362,1],[362,3],[362,3],[348,1],[348,3],[374,3],[374,2],[374,1],[265,6],[265,7],[265,4],[265,5],[265,1],[265,2],[265,4],[377,1],[377,1],[375,0],[375,1],[380,2],[380,1],[382,3],[381,2],[381,5],[381,3],[381,6],[381,1],[381,2],[381,4],[381,2],[381,1],[381,2],[381,1],[381,1],[381,3],[381,5],[31,4],[388,3],[388,1],[387,0],[387,2],[16,6],[16,6],[16,6],[16,8],[16,6],[37,5],[17,4],[17,7],[17,6],[17,9],[28,3],[19,4],[19,6],[19,9],[19,6],[396,0],[396,2],[52,3],[52,2],[29,4],[29,5],[29,5],[20,8],[20,9],[30,3],[41,2],[41,4],[41,3],[41,5],[43,2],[43,4],[43,4],[43,6],[40,4],[40,6],[42,4],[42,6],[39,4],[39,6],[23,11],[23,8],[402,3],[402,3],[402,5],[32,4],[54,2],[54,1],[65,2],[56,2],[57,2],[57,2],[57,4],[141,4],[141,2],[141,2],[141,2],[141,2],[141,1],[141,2],[141,2],[412,1],[412,1],[413,1],[413,1],[413,1],[413,1],[413,1],[413,1],[413,1],[413,3],[409,3],[409,4],[409,2],[411,2],[411,3],[411,1],[415,3],[415,1],[419,3],[419,3],[419,3],[417,3],[417,1],[64,3],[64,5],[64,6],[421,1],[421,1],[422,3],[422,2],[423,1],[423,1],[423,3],[420,1],[420,1],[49,2],[50,2],[48,2],[33,4],[33,3],[429,2],[58,3],[59,1],[60,1],[61,3],[62,2],[62,2],[63,2],[63,2],[437,1],[437,1],[68,2],[435,3],[435,1],[436,3],[436,1],[26,2],[440,1],[440,3],[441,3],[441,4],[441,5],[441,6],[44,3],[35,6],[444,1],[444,2],[445,2],[446,2],[447,2],[447,2],[447,1],[447,1],[449,4],[449,6],[452,1],[452,3],[450,5],[450,7],[450,7],[450,9],[450,7],[450,9],[453,3],[453,6],[453,3],[453,6],[448,0],[448,2],[448,5],[448,4],[448,7],[25,6],[460,2],[459,0],[459,2],[459,2],[459,1],[24,8],[21,3],[21,4],[464,3],[464,1],[465,3],[465,7],[465,6],[465,3],[465,4],[469,1],[469,1],[473,2],[474,3],[475,2],[476,4],[466,4],[466,3],[466,2],[466,1],[488,2],[484,2],[484,2],[489,4],[491,6],[66,3],[66,2],[497,3],[497,1],[495,1],[495,4],[67,2],[18,2],[46,9],[46,8],[46,9],[501,0],[501,1],[501,1],[501,1],[501,2],[502,1],[502,1],[502,1],[47,3],[36,2],[9,1],[9,1],[77,0],[77,1],[80,0],[80,1],[87,0],[87,2],[88,0],[88,1],[93,0],[93,1],[94,0],[94,1],[98,0],[98,1],[105,0],[105,1],[118,0],[118,1],[122,1],[122,2],[123,1],[123,2],[124,0],[124,1],[152,0],[152,2],[154,0],[154,2],[156,0],[156,2],[157,1],[157,1],[158,0],[158,2],[162,0],[162,2],[164,0],[164,2],[173,0],[173,2],[174,0],[174,2],[175,0],[175,2],[185,0],[185,1],[194,0],[194,1],[207,0],[207,1],[208,0],[208,1],[216,0],[216,1],[217,0],[217,1],[245,0],[245,1],[247,0],[247,1],[248,0],[248,1],[249,0],[249,1],[260,1],[260,1],[514,1],[514,1],[282,0],[282,1],[292,1],[292,1],[328,1],[328,1],[361,0],[361,1],[365,0],[365,1],[372,0],[372,1],[373,0],[373,1],[383,0],[383,1],[384,0],[384,1],[386,1],[386,1],[400,0],[400,1],[401,0],[401,1],[456,0],[456,1],[457,0],[457,1],[458,0],[458,1],[462,0],[462,1],[467,0],[467,1],[468,0],[468,1],[470,0],[470,1],[471,0],[471,1],[472,0],[472,1],[477,0],[477,1],[478,0],[478,1],[479,0],[479,1],[480,0],[480,1],[481,0],[481,1],[482,0],[482,1],[483,0],[483,1],[485,0],[485,1],[486,0],[486,1],[487,0],[487,1],[490,0],[490,2],[492,0],[492,2],[493,0],[493,2],[494,0],[494,2],[503,0],[503,1],[504,0],[504,1]],performAction:function(e,t,n,r,a,s,i){var o=s.length-1;switch(a){case 1:r.casesensitive?this.$=s[o]:this.$=s[o].toLowerCase();break;case 2:this.$=R(s[o].substr(1,s[o].length-2));break;case 3:return new r.Statements({statements:s[o-1]});case 4:this.$=s[o-2],s[o]&&s[o-2].push(s[o]);break;case 5:case 6:case 66:case 76:case 81:case 139:case 173:case 201:case 202:case 238:case 257:case 269:case 346:case 363:case 441:case 458:case 459:case 463:case 471:case 512:case 513:case 551:case 636:case 643:case 667:case 669:case 671:case 685:case 686:case 716:case 740:this.$=[s[o]];break;case 7:this.$=s[o],s[o].explain=!0;break;case 8:this.$=s[o],s[o].explain=!0;break;case 9:this.$=s[o],r.exists&&(this.$.exists=r.exists),delete r.exists,r.queries&&(this.$.queries=r.queries),delete r.queries;break;case 10:case 158:case 168:case 233:case 234:case 236:case 244:case 246:case 255:case 263:case 266:case 366:case 475:case 485:case 487:case 499:case 505:case 506:case 552:this.$=void 0;break;case 64:this.$=new r.WithSelect({withs:s[o-1],select:s[o]});break;case 65:case 550:s[o-2].push(s[o]),this.$=s[o-2];break;case 67:this.$={name:s[o-4],select:s[o-1]};break;case 68:r.extend(this.$,s[o-9]),r.extend(this.$,s[o-8]),r.extend(this.$,s[o-7]),r.extend(this.$,s[o-6]),r.extend(this.$,s[o-5]),r.extend(this.$,s[o-4]),r.extend(this.$,s[o-3]),r.extend(this.$,s[o-2]),r.extend(this.$,s[o-1]),r.extend(this.$,s[o]),this.$=s[o-9];break;case 69:this.$=new r.Search({selectors:s[o-2],from:s[o]}),r.extend(this.$,s[o-1]);break;case 70:this.$={pivot:{expr:s[o-5],columnid:s[o-3],inlist:s[o-2],as:s[o]}};break;case 71:this.$={unpivot:{tocolumnid:s[o-8],forcolumnid:s[o-6],inlist:s[o-3],as:s[o]}};break;case 72:case 504:case 534:case 570:case 606:case 624:case 627:case 646:this.$=s[o-1];break;case 73:case 74:case 82:case 143:case 181:case 243:case 276:case 284:case 285:case 286:case 287:case 288:case 289:case 290:case 291:case 292:case 293:case 294:case 295:case 296:case 297:case 299:case 312:case 313:case 314:case 315:case 316:case 317:case 365:case 430:case 431:case 432:case 433:case 434:case 435:case 500:case 531:case 533:case 610:case 611:case 612:case 613:case 614:case 615:case 619:case 621:case 622:case 631:case 644:case 645:case 707:case 722:case 723:case 725:case 726:case 732:case 733:this.$=s[o];break;case 75:case 80:case 715:case 739:this.$=s[o-2],this.$.push(s[o]);break;case 77:this.$={expr:s[o]};break;case 78:this.$={expr:s[o-2],as:s[o]};break;case 79:this.$={removecolumns:s[o]};break;case 83:this.$={like:s[o]};break;case 86:case 100:this.$={srchid:"PROP",args:[s[o]]};break;case 87:this.$={srchid:"ORDERBY",args:s[o-1]};break;case 88:var u=s[o-1];u||(u="ASC"),this.$={srchid:"ORDERBY",args:[{expression:new r.Column({columnid:"_"}),direction:u}]};break;case 89:this.$={srchid:"PARENT"};break;case 90:this.$={srchid:"APROP",args:[s[o]]};break;case 91:this.$={selid:"ROOT"};break;case 92:this.$={srchid:"EQ",args:[s[o]]};break;case 93:this.$={srchid:"LIKE",args:[s[o]]};break;case 94:case 95:this.$={selid:"WITH",args:s[o-1]};break;case 96:this.$={srchid:s[o-3].toUpperCase(),args:s[o-1]};break;case 97:this.$={srchid:"WHERE",args:[s[o-1]]};break;case 98:this.$={selid:"OF",args:[s[o-1]]};break;case 99:this.$={srchid:"CLASS",args:[s[o-1]]};break;case 101:this.$={srchid:"NAME",args:[s[o].substr(1,s[o].length-2)]};break;case 102:this.$={srchid:"CHILD"};break;case 103:this.$={srchid:"VERTEX"};break;case 104:this.$={srchid:"EDGE"};break;case 105:this.$={srchid:"REF"};break;case 106:this.$={srchid:"SHARP",args:[s[o]]};break;case 107:this.$={srchid:"ATTR",args:"undefined"==typeof s[o]?void 0:[s[o]]};break;case 108:this.$={srchid:"ATTR"};break;case 109:this.$={srchid:"OUT"};break;case 110:this.$={srchid:"IN"};break;case 111:this.$={srchid:"OUTOUT"};break;case 112:this.$={srchid:"ININ"};break;case 113:this.$={srchid:"CONTENT"};break;case 114:this.$={srchid:"EX",args:[new r.Json({value:s[o]})]};break;case 115:this.$={srchid:"AT",args:[s[o]]};break;case 116:this.$={srchid:"AS",args:[s[o]]};break;case 117:this.$={srchid:"SET",args:s[o-1]};break;case 118:this.$={selid:"TO",args:[s[o]]};break;case 119:this.$={srchid:"VALUE"};break;case 120:this.$={srchid:"ROW",args:s[o-1]};break;case 121:this.$={srchid:"CLASS",args:[s[o]]};break;case 122:this.$={selid:s[o],args:[s[o-1]]};break;case 123:this.$={selid:"NOT",args:s[o-1]};break;case 124:this.$={selid:"IF",args:s[o-1]};break;case 125:this.$={selid:s[o-3],args:s[o-1]};break;case 126:this.$={selid:"DISTINCT",args:s[o-1]};break;case 127:this.$={selid:"UNION",args:s[o-1]};break;case 128:this.$={selid:"UNIONALL",args:s[o-1]};break;case 129:this.$={selid:"ALL",args:[s[o-1]]};break;case 130:this.$={selid:"ANY",args:[s[o-1]]};break;case 131:this.$={selid:"INTERSECT",args:s[o-1]};break;case 132:this.$={selid:"EXCEPT",args:s[o-1]};break;case 133:this.$={selid:"AND",args:s[o-1]};break;case 134:this.$={selid:"OR",args:s[o-1]};break;case 135:this.$={selid:"PATH",args:[s[o-1]]};break;case 136:this.$={srchid:"RETURN",args:s[o-1]};break;case 137:this.$={selid:"REPEAT",sels:s[o-3],args:s[o-1]};break;case 138:this.$=s[o-2],this.$.push(s[o]);break;case 140:this.$="PLUS";break;case 141:this.$="STAR";break;case 142:this.$="QUESTION";break;case 144:this.$=new r.Select({columns:s[o],distinct:!0}),r.extend(this.$,s[o-3]),r.extend(this.$,s[o-1]);break;case 145:this.$=new r.Select({columns:s[o],distinct:!0}),r.extend(this.$,s[o-3]),r.extend(this.$,s[o-1]);break;case 146:this.$=new r.Select({columns:s[o],all:!0}),r.extend(this.$,s[o-3]),r.extend(this.$,s[o-1]);break;case 147:s[o]?(this.$=new r.Select({columns:s[o]}),r.extend(this.$,s[o-2]),r.extend(this.$,s[o-1])):this.$=new r.Select({columns:[new r.Column({columnid:"_"})],modifier:"COLUMN"});break;case 148:"SELECT"==s[o]?this.$=void 0:this.$={modifier:s[o]};break;case 149:this.$={modifier:"VALUE"};break;case 150:this.$={modifier:"ROW"};break;case 151:this.$={modifier:"COLUMN"};break;case 152:this.$={modifier:"MATRIX"};break;case 153:this.$={modifier:"TEXTSTRING"};break;case 154:this.$={modifier:"INDEX"};break;case 155:this.$={modifier:"RECORDSET"};break;case 156:this.$={top:s[o-1],percent:"undefined"!=typeof s[o]?!0:void 0};break;case 157:this.$={top:s[o-1]};break;case 159:case 322:case 507:case 508:case 708:this.$=void 0;break;case 160:case 161:case 162:case 163:this.$={into:s[o]};break;case 164:var c=s[o];c=c.substr(1,c.length-2);var l=c.substr(-3).toUpperCase(),h=c.substr(-4).toUpperCase();"#"==c[0]?this.$={into:new r.FuncValue({funcid:"HTML",args:[new r.StringValue({value:c}),new r.Json({value:{headers:!0}})]})}:"XLS"==l||"CSV"==l||"TAB"==l?this.$={into:new r.FuncValue({funcid:l,args:[new r.StringValue({value:c}),new r.Json({value:{headers:!0}})]})}:"XLSX"!=h&&"JSON"!=h||(this.$={into:new r.FuncValue({funcid:h,args:[new r.StringValue({value:c}),new r.Json({value:{headers:!0}})]})});break;case 165:this.$={from:s[o]};break;case 166:this.$={from:s[o-1],joins:s[o]};break;case 167:this.$={from:s[o-2],joins:s[o-1]};break;case 169:this.$=new r.Apply({select:s[o-2],applymode:"CROSS",as:s[o]});break;case 170:this.$=new r.Apply({select:s[o-3],applymode:"CROSS",as:s[o]});break;case 171:this.$=new r.Apply({select:s[o-2],applymode:"OUTER",as:s[o]});break;case 172:this.$=new r.Apply({select:s[o-3],applymode:"OUTER",as:s[o]});break;case 174:case 239:case 442:case 514:case 515:this.$=s[o-2],s[o-2].push(s[o]);break;case 175:this.$=s[o-2],this.$.as=s[o];break;case 176:this.$=s[o-3],this.$.as=s[o];break;case 177:this.$=s[o-1],this.$.as="default";break;case 178:this.$=new r.Json({value:s[o-2]}),s[o-2].as=s[o];break;case 179:this.$=s[o-1],s[o-1].as=s[o];break;case 180:this.$=s[o-2],s[o-2].as=s[o];break;case 182:case 625:case 628:this.$=s[o-2];break;case 183:case 187:case 191:case 194:this.$=s[o-1],s[o-1].as=s[o];break;case 184:case 188:case 192:case 195:this.$=s[o-2],s[o-2].as=s[o];break;case 185:case 186:case 190:case 193:this.$=s[o],s[o].as="default";break;case 189:this.$={inserted:!0},s[o].as="default";break;case 196:var c=s[o];c=c.substr(1,c.length-2);var d,l=c.substr(-3).toUpperCase(),h=c.substr(-4).toUpperCase();if("#"==c[0])d=new r.FuncValue({funcid:"HTML",args:[new r.StringValue({value:c}),new r.Json({value:{headers:!0}})]});else if("XLS"==l||"CSV"==l||"TAB"==l)d=new r.FuncValue({funcid:l,args:[new r.StringValue({value:c}),new r.Json({value:{headers:!0}})]});else{if("XLSX"!=h&&"JSON"!=h)throw new Error("Unknown string in FROM clause");d=new r.FuncValue({funcid:h,args:[new r.StringValue({value:c}),new r.Json({value:{headers:!0}})]})}this.$=d;break;case 197:"INFORMATION_SCHEMA"==s[o-2]?this.$=new r.FuncValue({funcid:s[o-2],args:[new r.StringValue({value:s[o]})]}):this.$=new r.Table({databaseid:s[o-2],tableid:s[o]});break;case 198:this.$=new r.Table({tableid:s[o]});break;case 199:case 200:this.$=s[o-1],s[o-1].push(s[o]);break;case 203:this.$=new r.Join(s[o-2]),r.extend(this.$,s[o-1]),r.extend(this.$,s[o]);break;case 204:this.$={table:s[o]};break;case 205:this.$={table:s[o-1],as:s[o]};break;case 206:this.$={table:s[o-2],as:s[o]};break;case 207:this.$={json:new r.Json({value:s[o-2],as:s[o]})};break;case 208:this.$={param:s[o-1],as:s[o]};break;case 209:this.$={param:s[o-2],as:s[o]};break;case 210:this.$={select:s[o-3],as:s[o]};break;case 211:this.$={select:s[o-4],as:s[o]};break;case 212:this.$={funcid:s[o],as:"default"};break;case 213:this.$={funcid:s[o-1],as:s[o]};break;case 214:this.$={funcid:s[o-2],as:s[o]};break;case 215:this.$={variable:s[o],as:"default"};break;case 216:this.$={variable:s[o-1],as:s[o]};break;case 217:this.$={variable:s[o-2],as:s[o]};break;case 218:this.$={joinmode:s[o]};break;case 219:this.$={joinmode:s[o-1],natural:!0};break;case 220:case 221:this.$="INNER";break;case 222:case 223:this.$="LEFT";break;case 224:case 225:this.$="RIGHT";break;case 226:case 227:this.$="OUTER";break;case 228:this.$="SEMI";break;case 229:this.$="ANTI";break;case 230:this.$="CROSS";break;case 231:this.$={on:s[o]};break;case 232:case 681:this.$={using:s[o]};break;case 235:this.$={where:new r.Expression({expression:s[o]})};break;case 237:this.$={group:s[o-1]},r.extend(this.$,s[o]);break;case 240:this.$=new r.GroupExpression({type:"GROUPING SETS",group:s[o-1]});break;case 241:this.$=new r.GroupExpression({type:"ROLLUP",group:s[o-1]});break;case 242:this.$=new r.GroupExpression({type:"CUBE",group:s[o-1]});break;case 245:this.$={having:s[o]};break;case 247:this.$={union:s[o]};break;case 248:this.$={unionall:s[o]};break;case 249:this.$={except:s[o]};break;case 250:this.$={intersect:s[o]};break;case 251:this.$={union:s[o],corresponding:!0};break;case 252:this.$={unionall:s[o],corresponding:!0};break;case 253:this.$={except:s[o],corresponding:!0};break;case 254:this.$={intersect:s[o],corresponding:!0};break;case 256:this.$={order:s[o]};break;case 258:this.$=s[o-2],s[o-2].push(s[o]);break;case 259:this.$=new r.Expression({expression:s[o],direction:"ASC"});break;case 260:this.$=new r.Expression({expression:s[o-1],direction:s[o].toUpperCase()});break;case 261:this.$=new r.Expression({expression:s[o-2],direction:"ASC",nocase:!0});break;case 262:this.$=new r.Expression({expression:s[o-3],direction:s[o].toUpperCase(),nocase:!0});break;case 264:this.$={limit:s[o-1]},r.extend(this.$,s[o]);break;case 265:this.$={limit:s[o-2],offset:s[o-6]};break;case 267:this.$={offset:s[o]};break;case 268:case 493:case 517:case 635:case 642:case 666:case 668:case 672:s[o-2].push(s[o]),this.$=s[o-2];break;case 270:case 272:case 274:s[o-2].as=s[o],this.$=s[o-2];break;case 271:case 273:case 275:s[o-1].as=s[o],this.$=s[o-1];break;case 277:this.$=new r.Column({columid:s[o],tableid:s[o-2],databaseid:s[o-4]});break;case 278:this.$=new r.Column({columnid:s[o],tableid:s[o-2]});break;case 279:this.$=new r.Column({columnid:s[o]});break;case 280:this.$=new r.Column({columnid:s[o],tableid:s[o-2],databaseid:s[o-4]});break;case 281:case 282:this.$=new r.Column({columnid:s[o],tableid:s[o-2]});break;case 283:this.$=new r.Column({columnid:s[o]});break;case 298:this.$=new r.Json({value:s[o]});break;case 300:case 301:case 302:r.queries||(r.queries=[]),r.queries.push(s[o-1]),s[o-1].queriesidx=r.queries.length,this.$=s[o-1];break;case 303:this.$=s[o];break;case 304:this.$=new r.FuncValue({funcid:"CURRENT_TIMESTAMP"});break;case 305:this.$=new r.JavaScript({value:s[o].substr(2,s[o].length-4)});break;case 306:this.$=new r.FuncValue({funcid:s[o],newid:!0});break;case 307:this.$=s[o],r.extend(this.$,{newid:!0});break;case 308:this.$=new r.Convert({expression:s[o-3]}),r.extend(this.$,s[o-1]);break;case 309:this.$=new r.Convert({expression:s[o-5],style:s[o-1]}),r.extend(this.$,s[o-3]);break;case 310:this.$=new r.Convert({expression:s[o-1]}),r.extend(this.$,s[o-3]);break;case 311:this.$=new r.Convert({expression:s[o-3],style:s[o-1]}),r.extend(this.$,s[o-5]);break;case 318:this.$=new r.FuncValue({funcid:"CURRENT_TIMESTAMP"});break;case 319:s[o-2].length>1&&("MAX"==s[o-4].toUpperCase()||"MIN"==s[o-4].toUpperCase())?this.$=new r.FuncValue({funcid:s[o-4],args:s[o-2]}):this.$=new r.AggrValue({aggregatorid:s[o-4].toUpperCase(),expression:s[o-2].pop(),over:s[o]});break;case 320:this.$=new r.AggrValue({aggregatorid:s[o-5].toUpperCase(),expression:s[o-2],distinct:!0,over:s[o]});break;case 321:this.$=new r.AggrValue({aggregatorid:s[o-5].toUpperCase(),expression:s[o-2],over:s[o]});break;case 323:case 324:this.$=new r.Over,r.extend(this.$,s[o-1]);break;case 325:this.$=new r.Over,r.extend(this.$,s[o-2]),r.extend(this.$,s[o-1]);break;case 326:this.$={partition:s[o]};break;case 327:this.$={order:s[o]};break;case 328:this.$="SUM";break;case 329:this.$="COUNT";break;case 330:this.$="MIN";break;case 331:case 529:this.$="MAX";break;case 332:this.$="AVG";break;case 333:this.$="FIRST";break;case 334:this.$="LAST";break;case 335:this.$="AGGR";break;case 336:this.$="ARRAY";break;case 337:var f=s[o-4],p=s[o-1];p.length>1&&("MIN"==f.toUpperCase()||"MAX"==f.toUpperCase())?this.$=new r.FuncValue({funcid:f,args:p}):w.aggr[s[o-4]]?this.$=new r.AggrValue({aggregatorid:"REDUCE",funcid:f,expression:p.pop(),distinct:"DISTINCT"==s[o-2]}):this.$=new r.FuncValue({funcid:f,args:p});break;case 338:this.$=new r.FuncValue({funcid:s[o-2]});break;case 339:this.$=new r.FuncValue({funcid:"IIF",args:s[o-1]});break;case 340:this.$=new r.FuncValue({funcid:"REPLACE",args:s[o-1]});break;case 341:this.$=new r.FuncValue({funcid:"DATEADD",args:[new r.StringValue({value:s[o-5]}),s[o-3],s[o-1]]});break;case 342:this.$=new r.FuncValue({funcid:"DATEADD",args:[s[o-5],s[o-3],s[o-1]]});break;case 343:this.$=new r.FuncValue({funcid:"DATEDIFF",args:[new r.StringValue({value:s[o-5]}),s[o-3],s[o-1]]});break;case 344:this.$=new r.FuncValue({funcid:"DATEDIFF",args:[s[o-5],s[o-3],s[o-1]] +});break;case 345:this.$=new r.FuncValue({funcid:"INTERVAL",args:[s[o-1],new r.StringValue({value:s[o].toLowerCase()})]});break;case 347:s[o-2].push(s[o]),this.$=s[o-2];break;case 348:this.$=new r.NumValue({value:+s[o]});break;case 349:this.$=new r.LogicValue({value:!0});break;case 350:this.$=new r.LogicValue({value:!1});break;case 351:this.$=new r.StringValue({value:s[o].substr(1,s[o].length-2).replace(/(\\\')/g,"'").replace(/(\'\')/g,"'")});break;case 352:this.$=new r.StringValue({value:s[o].substr(2,s[o].length-3).replace(/(\\\')/g,"'").replace(/(\'\')/g,"'")});break;case 353:this.$=new r.NullValue({value:void 0});break;case 354:this.$=new r.VarValue({variable:s[o]});break;case 355:r.exists||(r.exists=[]),this.$=new r.ExistsValue({value:s[o-1],existsidx:r.exists.length}),r.exists.push(s[o-1]);break;case 356:case 357:this.$=new r.ParamValue({param:s[o]});break;case 358:"undefined"==typeof r.question&&(r.question=0),this.$=new r.ParamValue({param:r.question++});break;case 359:"undefined"==typeof r.question&&(r.question=0),this.$=new r.ParamValue({param:r.question++,array:!0});break;case 360:this.$=new r.CaseValue({expression:s[o-3],whens:s[o-2],elses:s[o-1]});break;case 361:this.$=new r.CaseValue({whens:s[o-2],elses:s[o-1]});break;case 362:case 683:case 684:this.$=s[o-1],this.$.push(s[o]);break;case 364:this.$={when:s[o-2],then:s[o]};break;case 367:this.$=new r.Op({left:s[o-2],op:"REGEXP",right:s[o]});break;case 368:this.$=new r.Op({left:s[o-2],op:"GLOB",right:s[o]});break;case 369:this.$=new r.Op({left:s[o-2],op:"LIKE",right:s[o]});break;case 370:this.$=new r.Op({left:s[o-4],op:"LIKE",right:s[o-2],escape:s[o]});break;case 371:this.$=new r.Op({left:s[o-2],op:"NOT LIKE",right:s[o]});break;case 372:this.$=new r.Op({left:s[o-4],op:"NOT LIKE",right:s[o-2],escape:s[o]});break;case 373:this.$=new r.Op({left:s[o-2],op:"||",right:s[o]});break;case 374:this.$=new r.Op({left:s[o-2],op:"+",right:s[o]});break;case 375:this.$=new r.Op({left:s[o-2],op:"-",right:s[o]});break;case 376:this.$=new r.Op({left:s[o-2],op:"*",right:s[o]});break;case 377:this.$=new r.Op({left:s[o-2],op:"/",right:s[o]});break;case 378:this.$=new r.Op({left:s[o-2],op:"%",right:s[o]});break;case 379:this.$=new r.Op({left:s[o-2],op:"^",right:s[o]});break;case 380:this.$=new r.Op({left:s[o-2],op:">>",right:s[o]});break;case 381:this.$=new r.Op({left:s[o-2],op:"<<",right:s[o]});break;case 382:this.$=new r.Op({left:s[o-2],op:"&",right:s[o]});break;case 383:this.$=new r.Op({left:s[o-2],op:"|",right:s[o]});break;case 384:case 385:case 387:this.$=new r.Op({left:s[o-2],op:"->",right:s[o]});break;case 386:this.$=new r.Op({left:s[o-4],op:"->",right:s[o-1]});break;case 388:case 389:case 391:this.$=new r.Op({left:s[o-2],op:"!",right:s[o]});break;case 390:this.$=new r.Op({left:s[o-4],op:"!",right:s[o-1]});break;case 392:this.$=new r.Op({left:s[o-2],op:">",right:s[o]});break;case 393:this.$=new r.Op({left:s[o-2],op:">=",right:s[o]});break;case 394:this.$=new r.Op({left:s[o-2],op:"<",right:s[o]});break;case 395:this.$=new r.Op({left:s[o-2],op:"<=",right:s[o]});break;case 396:this.$=new r.Op({left:s[o-2],op:"=",right:s[o]});break;case 397:this.$=new r.Op({left:s[o-2],op:"==",right:s[o]});break;case 398:this.$=new r.Op({left:s[o-2],op:"===",right:s[o]});break;case 399:this.$=new r.Op({left:s[o-2],op:"!=",right:s[o]});break;case 400:this.$=new r.Op({left:s[o-2],op:"!==",right:s[o]});break;case 401:this.$=new r.Op({left:s[o-2],op:"!===",right:s[o]});break;case 402:r.queries||(r.queries=[]),this.$=new r.Op({left:s[o-5],op:s[o-4],allsome:s[o-3],right:s[o-1],queriesidx:r.queries.length}),r.queries.push(s[o-1]);break;case 403:this.$=new r.Op({left:s[o-5],op:s[o-4],allsome:s[o-3],right:s[o-1]});break;case 404:"BETWEEN1"==s[o-2].op?"AND"==s[o-2].left.op?this.$=new r.Op({left:s[o-2].left.left,op:"AND",right:new r.Op({left:s[o-2].left.right,op:"BETWEEN",right1:s[o-2].right,right2:s[o]})}):this.$=new r.Op({left:s[o-2].left,op:"BETWEEN",right1:s[o-2].right,right2:s[o]}):"NOT BETWEEN1"==s[o-2].op?"AND"==s[o-2].left.op?this.$=new r.Op({left:s[o-2].left.left,op:"AND",right:new r.Op({left:s[o-2].left.right,op:"NOT BETWEEN",right1:s[o-2].right,right2:s[o]})}):this.$=new r.Op({left:s[o-2].left,op:"NOT BETWEEN",right1:s[o-2].right,right2:s[o]}):this.$=new r.Op({left:s[o-2],op:"AND",right:s[o]});break;case 405:this.$=new r.Op({left:s[o-2],op:"OR",right:s[o]});break;case 406:this.$=new r.UniOp({op:"NOT",right:s[o]});break;case 407:this.$=new r.UniOp({op:"-",right:s[o]});break;case 408:this.$=new r.UniOp({op:"+",right:s[o]});break;case 409:this.$=new r.UniOp({op:"~",right:s[o]});break;case 410:this.$=new r.UniOp({op:"#",right:s[o]});break;case 411:this.$=new r.UniOp({right:s[o-1]});break;case 412:r.queries||(r.queries=[]),this.$=new r.Op({left:s[o-4],op:"IN",right:s[o-1],queriesidx:r.queries.length}),r.queries.push(s[o-1]);break;case 413:r.queries||(r.queries=[]),this.$=new r.Op({left:s[o-5],op:"NOT IN",right:s[o-1],queriesidx:r.queries.length}),r.queries.push(s[o-1]);break;case 414:this.$=new r.Op({left:s[o-4],op:"IN",right:s[o-1]});break;case 415:this.$=new r.Op({left:s[o-5],op:"NOT IN",right:s[o-1]});break;case 416:this.$=new r.Op({left:s[o-3],op:"IN",right:[]});break;case 417:this.$=new r.Op({left:s[o-4],op:"NOT IN",right:[]});break;case 418:case 420:this.$=new r.Op({left:s[o-2],op:"IN",right:s[o]});break;case 419:case 421:this.$=new r.Op({left:s[o-3],op:"NOT IN",right:s[o]});break;case 422:this.$=new r.Op({left:s[o-2],op:"BETWEEN1",right:s[o]});break;case 423:this.$=new r.Op({left:s[o-2],op:"NOT BETWEEN1",right:s[o]});break;case 424:this.$=new r.Op({op:"IS",left:s[o-2],right:s[o]});break;case 425:this.$=new r.Op({op:"IS",left:s[o-2],right:new r.UniOp({op:"NOT",right:new r.NullValue({value:void 0})})});break;case 426:this.$=new r.Convert({expression:s[o-2]}),r.extend(this.$,s[o]);break;case 427:case 428:this.$=s[o];break;case 429:this.$=s[o-1];break;case 436:this.$="ALL";break;case 437:this.$="SOME";break;case 438:this.$="ANY";break;case 439:this.$=new r.Update({table:s[o-4],columns:s[o-2],where:s[o]});break;case 440:this.$=new r.Update({table:s[o-2],columns:s[o]});break;case 443:this.$=new r.SetColumn({column:s[o-2],expression:s[o]});break;case 444:this.$=new r.SetColumn({variable:s[o-2],expression:s[o],method:s[o-3]});break;case 445:this.$=new r.Delete({table:s[o-2],where:s[o]});break;case 446:this.$=new r.Delete({table:s[o]});break;case 447:this.$=new r.Insert({into:s[o-2],values:s[o]});break;case 448:case 449:this.$=new r.Insert({into:s[o-2],values:s[o],orreplace:!0});break;case 450:this.$=new r.Insert({into:s[o-2],"default":!0});break;case 451:this.$=new r.Insert({into:s[o-5],columns:s[o-3],values:s[o]});break;case 452:this.$=new r.Insert({into:s[o-1],select:s[o]});break;case 453:this.$=new r.Insert({into:s[o-1],select:s[o],orreplace:!0});break;case 454:this.$=new r.Insert({into:s[o-4],columns:s[o-2],select:s[o]});break;case 457:this.$=[s[o-1]];break;case 460:this.$=s[o-4],s[o-4].push(s[o-1]);break;case 461:case 462:case 464:case 472:this.$=s[o-2],s[o-2].push(s[o]);break;case 473:this.$=new r.CreateTable({table:s[o-4]}),r.extend(this.$,s[o-7]),r.extend(this.$,s[o-6]),r.extend(this.$,s[o-5]),r.extend(this.$,s[o-2]),r.extend(this.$,s[o]);break;case 474:this.$=new r.CreateTable({table:s[o]}),r.extend(this.$,s[o-3]),r.extend(this.$,s[o-2]),r.extend(this.$,s[o-1]);break;case 476:this.$={"class":!0};break;case 486:this.$={temporary:!0};break;case 488:this.$={ifnotexists:!0};break;case 489:this.$={columns:s[o-2],constraints:s[o]};break;case 490:this.$={columns:s[o]};break;case 491:this.$={as:s[o]};break;case 492:case 516:this.$=[s[o]];break;case 494:case 495:case 496:case 497:case 498:s[o].constraintid=s[o-1],this.$=s[o];break;case 501:this.$={type:"CHECK",expression:s[o-1]};break;case 502:this.$={type:"PRIMARY KEY",columns:s[o-1],clustered:(s[o-3]+"").toUpperCase()};break;case 503:this.$={type:"FOREIGN KEY",columns:s[o-5],fktable:s[o-2],fkcolumns:s[o-1]};break;case 509:this.$={type:"UNIQUE",columns:s[o-1],clustered:(s[o-3]+"").toUpperCase()};break;case 518:this.$=new r.ColumnDef({columnid:s[o-2]}),r.extend(this.$,s[o-1]),r.extend(this.$,s[o]);break;case 519:this.$=new r.ColumnDef({columnid:s[o-1]}),r.extend(this.$,s[o]);break;case 520:this.$=new r.ColumnDef({columnid:s[o],dbtypeid:""});break;case 521:this.$={dbtypeid:s[o-5],dbsize:s[o-3],dbprecision:+s[o-1]};break;case 522:this.$={dbtypeid:s[o-6]+(s[o-5]?" "+s[o-5]:""),dbsize:s[o-3],dbprecision:+s[o-1]};break;case 523:this.$={dbtypeid:s[o-3],dbsize:s[o-1]};break;case 524:this.$={dbtypeid:s[o-4]+(s[o-3]?" "+s[o-3]:""),dbsize:s[o-1]};break;case 525:this.$={dbtypeid:s[o]};break;case 526:this.$={dbtypeid:s[o-1]+(s[o]?" "+s[o]:"")};break;case 527:this.$={dbtypeid:"ENUM",enumvalues:s[o-1]};break;case 528:case 734:this.$=+s[o];break;case 530:this.$=void 0;break;case 532:r.extend(s[o-1],s[o]),this.$=s[o-1];break;case 535:this.$={primarykey:!0};break;case 536:case 537:this.$={foreignkey:{table:s[o-1],columnid:s[o]}};break;case 538:this.$={identity:{value:s[o-3],step:s[o-1]}};break;case 539:this.$={identity:{value:1,step:1}};break;case 540:case 542:this.$={"default":s[o]};break;case 541:this.$={"default":s[o-1]};break;case 543:this.$={"null":!0};break;case 544:this.$={notnull:!0};break;case 545:this.$={check:s[o]};break;case 546:this.$={unique:!0};break;case 547:this.$={onupdate:s[o]};break;case 548:this.$={onupdate:s[o-1]};break;case 549:this.$=new r.DropTable({tables:s[o],type:s[o-2]}),r.extend(this.$,s[o-1]);break;case 553:this.$={ifexists:!0};break;case 554:this.$=new r.AlterTable({table:s[o-3],renameto:s[o]});break;case 555:this.$=new r.AlterTable({table:s[o-3],addcolumn:s[o]});break;case 556:this.$=new r.AlterTable({table:s[o-3],modifycolumn:s[o]});break;case 557:this.$=new r.AlterTable({table:s[o-5],renamecolumn:s[o-2],to:s[o]});break;case 558:this.$=new r.AlterTable({table:s[o-3],dropcolumn:s[o]});break;case 559:this.$=new r.AlterTable({table:s[o-2],renameto:s[o]});break;case 560:this.$=new r.AttachDatabase({databaseid:s[o],engineid:s[o-2].toUpperCase()});break;case 561:this.$=new r.AttachDatabase({databaseid:s[o-3],engineid:s[o-5].toUpperCase(),args:s[o-1]});break;case 562:this.$=new r.AttachDatabase({databaseid:s[o-2],engineid:s[o-4].toUpperCase(),as:s[o]});break;case 563:this.$=new r.AttachDatabase({databaseid:s[o-5],engineid:s[o-7].toUpperCase(),as:s[o],args:s[o-3]});break;case 564:this.$=new r.DetachDatabase({databaseid:s[o]});break;case 565:this.$=new r.CreateDatabase({databaseid:s[o]}),r.extend(this.$,s[o]);break;case 566:this.$=new r.CreateDatabase({engineid:s[o-4].toUpperCase(),databaseid:s[o-1],as:s[o]}),r.extend(this.$,s[o-2]);break;case 567:this.$=new r.CreateDatabase({engineid:s[o-7].toUpperCase(),databaseid:s[o-4],args:s[o-2],as:s[o]}),r.extend(this.$,s[o-5]);break;case 568:this.$=new r.CreateDatabase({engineid:s[o-4].toUpperCase(),as:s[o],args:[s[o-1]]}),r.extend(this.$,s[o-2]);break;case 569:this.$=void 0;break;case 571:case 572:this.$=new r.UseDatabase({databaseid:s[o]});break;case 573:this.$=new r.DropDatabase({databaseid:s[o]}),r.extend(this.$,s[o-1]);break;case 574:case 575:this.$=new r.DropDatabase({databaseid:s[o],engineid:s[o-3].toUpperCase()}),r.extend(this.$,s[o-1]);break;case 576:this.$=new r.CreateIndex({indexid:s[o-5],table:s[o-3],columns:s[o-1]});break;case 577:this.$=new r.CreateIndex({indexid:s[o-5],table:s[o-3],columns:s[o-1],unique:!0});break;case 578:this.$=new r.DropIndex({indexid:s[o]});break;case 579:this.$=new r.ShowDatabases;break;case 580:this.$=new r.ShowDatabases({like:s[o]});break;case 581:this.$=new r.ShowDatabases({engineid:s[o-1].toUpperCase()});break;case 582:this.$=new r.ShowDatabases({engineid:s[o-3].toUpperCase(),like:s[o]});break;case 583:this.$=new r.ShowTables;break;case 584:this.$=new r.ShowTables({like:s[o]});break;case 585:this.$=new r.ShowTables({databaseid:s[o]});break;case 586:this.$=new r.ShowTables({like:s[o],databaseid:s[o-2]});break;case 587:this.$=new r.ShowColumns({table:s[o]});break;case 588:this.$=new r.ShowColumns({table:s[o-2],databaseid:s[o]});break;case 589:this.$=new r.ShowIndex({table:s[o]});break;case 590:this.$=new r.ShowIndex({table:s[o-2],databaseid:s[o]});break;case 591:this.$=new r.ShowCreateTable({table:s[o]});break;case 592:this.$=new r.ShowCreateTable({table:s[o-2],databaseid:s[o]});break;case 593:this.$=new r.CreateTable({table:s[o-6],view:!0,select:s[o-1],viewcolumns:s[o-4]}),r.extend(this.$,s[o-9]),r.extend(this.$,s[o-7]);break;case 594:this.$=new r.CreateTable({table:s[o-3],view:!0,select:s[o-1]}),r.extend(this.$,s[o-6]),r.extend(this.$,s[o-4]);break;case 598:this.$=new r.DropTable({tables:s[o],view:!0}),r.extend(this.$,s[o-1]);break;case 599:this.$=new r.Help({subject:s[o].value.toUpperCase()});break;case 600:this.$=new r.Help;break;case 601:case 744:this.$=new r.ExpressionStatement({expression:s[o]});break;case 602:this.$=new r.Source({url:s[o].value});break;case 603:this.$=new r.Assert({value:s[o]});break;case 604:this.$=new r.Assert({value:s[o].value});break;case 605:this.$=new r.Assert({value:s[o],message:s[o-2]});break;case 607:case 618:case 620:this.$=s[o].value;break;case 608:case 616:this.$=+s[o].value;break;case 609:this.$=!!s[o].value;break;case 617:this.$=""+s[o].value;break;case 623:this.$=s[o-1];break;case 626:this.$={};break;case 629:this.$=[];break;case 630:r.extend(s[o-2],s[o]),this.$=s[o-2];break;case 632:this.$={},this.$[s[o-2].substr(1,s[o-2].length-2)]=s[o];break;case 633:case 634:this.$={},this.$[s[o-2]]=s[o];break;case 637:this.$=new r.SetVariable({variable:s[o-1].toLowerCase(),value:s[o]});break;case 638:this.$=new r.SetVariable({variable:s[o-2],expression:s[o],method:s[o-3]});break;case 639:this.$=new r.SetVariable({variable:s[o-3],props:s[o-2],expression:s[o],method:s[o-4]});break;case 640:this.$="@";break;case 641:this.$="$";break;case 647:this.$=!0;break;case 648:this.$=!1;break;case 649:this.$=new r.CommitTransaction;break;case 650:this.$=new r.RollbackTransaction;break;case 651:this.$=new r.BeginTransaction;break;case 652:this.$=new r.If({expression:s[o-2],thenstat:s[o-1],elsestat:s[o]}),s[o-1].exists&&(this.$.exists=s[o-1].exists),s[o-1].queries&&(this.$.queries=s[o-1].queries);break;case 653:this.$=new r.If({expression:s[o-1],thenstat:s[o]}),s[o].exists&&(this.$.exists=s[o].exists),s[o].queries&&(this.$.queries=s[o].queries);break;case 654:this.$=s[o];break;case 655:this.$=new r.While({expression:s[o-1],loopstat:s[o]}),s[o].exists&&(this.$.exists=s[o].exists),s[o].queries&&(this.$.queries=s[o].queries);break;case 656:this.$=new r.Continue;break;case 657:this.$=new r.Break;break;case 658:this.$=new r.BeginEnd({statements:s[o-1]});break;case 659:this.$=new r.Print({exprs:s[o]});break;case 660:this.$=new r.Print({select:s[o]});break;case 661:this.$=new r.Require({paths:s[o]});break;case 662:this.$=new r.Require({plugins:s[o]});break;case 663:case 664:this.$=s[o].toUpperCase();break;case 665:this.$=new r.Echo({expr:s[o]});break;case 670:this.$=new r.Declare({declares:s[o]});break;case 673:this.$={variable:s[o-1]},r.extend(this.$,s[o]);break;case 674:this.$={variable:s[o-2]},r.extend(this.$,s[o]);break;case 675:this.$={variable:s[o-3],expression:s[o]},r.extend(this.$,s[o-2]);break;case 676:this.$={variable:s[o-4],expression:s[o]},r.extend(this.$,s[o-2]);break;case 677:this.$=new r.TruncateTable({table:s[o]});break;case 678:this.$=new r.Merge,r.extend(this.$,s[o-4]),r.extend(this.$,s[o-3]),r.extend(this.$,s[o-2]),r.extend(this.$,{matches:s[o-1]}),r.extend(this.$,s[o]);break;case 679:case 680:this.$={into:s[o]};break;case 682:this.$={on:s[o]};break;case 687:this.$={matched:!0,action:s[o]};break;case 688:this.$={matched:!0,expr:s[o-2],action:s[o]};break;case 689:this.$={"delete":!0};break;case 690:this.$={update:s[o]};break;case 691:case 692:this.$={matched:!1,bytarget:!0,action:s[o]};break;case 693:case 694:this.$={matched:!1,bytarget:!0,expr:s[o-2],action:s[o]};break;case 695:this.$={matched:!1,bysource:!0,action:s[o]};break;case 696:this.$={matched:!1,bysource:!0,expr:s[o-2],action:s[o]};break;case 697:this.$={insert:!0,values:s[o]};break;case 698:this.$={insert:!0,values:s[o],columns:s[o-3]};break;case 699:this.$={insert:!0,defaultvalues:!0};break;case 700:this.$={insert:!0,defaultvalues:!0,columns:s[o-3]};break;case 702:this.$={output:{columns:s[o]}};break;case 703:this.$={output:{columns:s[o-3],intovar:s[o],method:s[o-1]}};break;case 704:this.$={output:{columns:s[o-2],intotable:s[o]}};break;case 705:this.$={output:{columns:s[o-5],intotable:s[o-3],intocolumns:s[o-1]}};break;case 706:this.$=new r.CreateVertex({"class":s[o-3],sharp:s[o-2],name:s[o-1]}),r.extend(this.$,s[o]);break;case 709:this.$={sets:s[o]};break;case 710:this.$={content:s[o]};break;case 711:this.$={select:s[o]};break;case 712:this.$=new r.CreateEdge({from:s[o-3],to:s[o-1],name:s[o-5]}),r.extend(this.$,s[o]);break;case 713:this.$=new r.CreateGraph({graph:s[o]});break;case 714:this.$=new r.CreateGraph({from:s[o]});break;case 717:this.$=s[o-2],s[o-1]&&(this.$.json=new r.Json({value:s[o-1]})),s[o]&&(this.$.as=s[o]);break;case 718:this.$={source:s[o-6],target:s[o]},s[o-3]&&(this.$.json=new r.Json({value:s[o-3]})),s[o-2]&&(this.$.as=s[o-2]),r.extend(this.$,s[o-4]);break;case 719:this.$={source:s[o-5],target:s[o]},s[o-2]&&(this.$.json=new r.Json({value:s[o-3]})),s[o-1]&&(this.$.as=s[o-2]);break;case 720:this.$={source:s[o-2],target:s[o]};break;case 724:this.$={vars:s[o],method:s[o-1]};break;case 727:case 728:var b=s[o-1];this.$={prop:s[o-3],sharp:s[o-2],name:"undefined"==typeof b?void 0:b.substr(1,b.length-2),"class":s[o]};break;case 729:var g=s[o-1];this.$={sharp:s[o-2],name:"undefined"==typeof g?void 0:g.substr(1,g.length-2),"class":s[o]};break;case 730:var m=s[o-1];this.$={name:"undefined"==typeof m?void 0:m.substr(1,m.length-2),"class":s[o]};break;case 731:this.$={"class":s[o]};break;case 737:this.$=new r.AddRule({left:s[o-2],right:s[o]});break;case 738:this.$=new r.AddRule({right:s[o]});break;case 741:this.$=new r.Term({termid:s[o]});break;case 742:this.$=new r.Term({termid:s[o-3],args:s[o-1]});break;case 745:this.$=new r.CreateTrigger({trigger:s[o-6],when:s[o-5],action:s[o-4],table:s[o-2],statement:s[o]}),s[o].exists&&(this.$.exists=s[o].exists),s[o].queries&&(this.$.queries=s[o].queries);break;case 746:this.$=new r.CreateTrigger({trigger:s[o-5],when:s[o-4],action:s[o-3],table:s[o-1],funcid:s[o]});break;case 747:this.$=new r.CreateTrigger({trigger:s[o-6],when:s[o-4],action:s[o-3],table:s[o-5],statement:s[o]}),s[o].exists&&(this.$.exists=s[o].exists),s[o].queries&&(this.$.queries=s[o].queries);break;case 748:case 749:case 751:this.$="AFTER";break;case 750:this.$="BEFORE";break;case 752:this.$="INSTEADOF";break;case 753:this.$="INSERT";break;case 754:this.$="DELETE";break;case 755:this.$="UPDATE";break;case 756:this.$=new r.DropTrigger({trigger:s[o]});break;case 757:this.$=new r.Reindex({indexid:s[o]});break;case 764:case 784:case 786:case 788:case 792:case 794:case 796:case 798:case 800:case 802:this.$=[];break;case 765:case 779:case 781:case 785:case 787:case 789:case 793:case 795:case 797:case 799:case 801:case 803:s[o-1].push(s[o]);break;case 778:case 780:this.$=[s[o]]}},table:[t([8,509,510],n,{6:1,7:2,10:3,11:4,15:5,16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:23,33:24,34:25,35:26,36:27,37:28,38:29,39:30,40:31,41:32,42:33,43:34,44:35,45:36,46:37,47:38,48:39,49:40,50:41,52:43,53:44,54:45,55:46,56:47,57:48,58:49,59:50,60:51,61:52,62:53,63:54,64:55,65:56,66:57,67:58,68:59,76:74,495:95,181:99,3:100,4:r,5:a,12:s,51:i,69:o,86:u,121:c,143:l,153:h,186:d,262:f,283:p,326:b,329:g,330:m,337:v,385:E,389:y,390:S,393:T,395:x,397:A,398:C,406:k,407:O,408:N,425:$,427:D,428:I,430:L,431:q,432:U,433:F,434:M,438:_,439:V,442:j,443:P,496:B,498:G,499:J,508:H}),{1:[3]},{8:[1,104],9:105,509:W,510:X},t(Y,[2,5]),t(Y,[2,6]),t(K,[2,9]),t(Y,n,{15:5,16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:23,33:24,34:25,35:26,36:27,37:28,38:29,39:30,40:31,41:32,42:33,43:34,44:35,45:36,46:37,47:38,48:39,49:40,50:41,52:43,53:44,54:45,55:46,56:47,57:48,58:49,59:50,60:51,61:52,62:53,63:54,64:55,65:56,66:57,67:58,68:59,76:74,495:95,181:99,3:100,10:108,4:r,5:a,13:[1,109],51:i,69:o,86:u,121:c,143:l,153:h,186:d,262:f,283:p,326:b,329:g,330:m,337:v,385:E,389:y,390:S,393:T,395:x,397:A,398:C,406:k,407:O,408:N,425:$,427:D,428:I,430:L,431:q,432:U,433:F,434:M,438:_,439:V,442:j,443:P,496:B,498:G,499:J,508:H}),t(K,[2,11]),t(K,[2,12]),t(K,[2,13]),t(K,[2,14]),t(K,[2,15]),t(K,[2,16]),t(K,[2,17]),t(K,[2,18]),t(K,[2,19]),t(K,[2,20]),t(K,[2,21]),t(K,[2,22]),t(K,[2,23]),t(K,[2,24]),t(K,[2,25]),t(K,[2,26]),t(K,[2,27]),t(K,[2,28]),t(K,[2,29]),t(K,[2,30]),t(K,[2,31]),t(K,[2,32]),t(K,[2,33]),t(K,[2,34]),t(K,[2,35]),t(K,[2,36]),t(K,[2,37]),t(K,[2,38]),t(K,[2,39]),t(K,[2,40]),t(K,[2,41]),t(K,[2,42]),t(K,[2,43]),t(K,[2,44]),t(K,[2,45]),t(K,[2,46]),t(K,[2,47]),t(K,[2,48]),t(K,[2,49]),t(K,[2,50]),t(K,[2,51]),t(K,[2,52]),t(K,[2,53]),t(K,[2,54]),t(K,[2,55]),t(K,[2,56]),t(K,[2,57]),t(K,[2,58]),t(K,[2,59]),t(K,[2,60]),t(K,[2,61]),t(K,[2,62]),t(K,[2,63]),{343:[1,110]},{3:111,4:r,5:a},{3:113,4:r,5:a,153:Q,197:112,283:z,284:Z,285:ee,286:te},t(ne,[2,485],{3:120,338:124,4:r,5:a,131:re,132:ae,184:[1,122],190:[1,121],347:[1,128],394:[1,119],463:[1,123],500:[1,127]}),{142:se,440:129,441:130},{180:[1,132]},{394:[1,133]},{3:135,4:r,5:a,127:[1,141],190:[1,136],343:[1,140],386:137,394:[1,134],399:[1,138],500:[1,139]},{3:163,4:r,5:a,55:160,74:ie,91:142,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},t(je,Pe,{331:198,168:[1,199],195:Be}),t(je,Pe,{331:201,195:Be}),{3:213,4:r,5:a,74:Ge,129:Je,140:le,141:206,142:he,149:de,153:Q,178:ge,195:[1,204],196:207,197:209,198:208,199:211,206:203,210:He,211:212,283:z,284:Z,285:ee,286:te,293:qe,409:185,410:_e,414:Ve,444:202},{3:215,4:r,5:a},{343:[1,216]},t(We,[2,760],{77:217,103:218,104:[1,219]}),t(Xe,[2,764],{87:220}),{3:224,4:r,5:a,187:[1,222],190:[1,225],337:[1,221],343:[1,226],394:[1,223]},{343:[1,227]},{3:230,4:r,5:a,70:228,72:229},t([297,509,510],n,{10:3,11:4,15:5,16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:23,33:24,34:25,35:26,36:27,37:28,38:29,39:30,40:31,41:32,42:33,43:34,44:35,45:36,46:37,47:38,48:39,49:40,50:41,52:43,53:44,54:45,55:46,56:47,57:48,58:49,59:50,60:51,61:52,62:53,63:54,64:55,65:56,66:57,67:58,68:59,76:74,495:95,181:99,3:100,7:232,4:r,5:a,12:s,51:i,69:o,86:u,121:c,143:l,153:h,186:d,262:f,283:p,326:b,329:g,330:m,337:v,385:E,389:y,390:S,393:T,395:x,397:A,398:C,406:k,407:O,408:N,425:$,426:[1,231],427:D,428:I,430:L,431:q,432:U,433:F,434:M,438:_,439:V,442:j,443:P,496:B,498:G,499:J,508:H}),{426:[1,233]},{426:[1,234]},{3:236,4:r,5:a,394:[1,235]},{3:238,4:r,5:a,196:237},t(K,[2,600],{110:239,129:ue,289:De}),t(Ye,[2,305]),{110:240,129:ue,289:De},{3:113,4:r,5:a,110:246,128:oe,129:[1,243],140:le,141:241,142:Ke,149:de,153:Q,178:ge,193:245,197:250,198:249,254:247,255:248,261:Qe,267:242,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,293:qe,409:185,410:_e,414:Ve},{3:163,4:r,5:a,55:160,74:ie,91:252,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},t(K,[2,656]),t(K,[2,657]),{3:163,4:r,5:a,38:254,55:160,74:ie,76:74,86:u,91:255,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,148:253,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,181:99,186:d,193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},{3:261,4:r,5:a,110:258,129:ue,289:De,435:256,436:257,437:259,438:ze},{3:262,4:r,5:a,140:Ze,142:et,421:263},{3:163,4:r,5:a,55:160,74:ie,91:266,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},{496:[1,267]},{3:100,4:r,5:a,495:269,497:268},{3:113,4:r,5:a,153:Q,197:270,283:z,284:Z,285:ee,286:te},{3:163,4:r,5:a,55:160,74:ie,91:271,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},t(tt,nt,{183:275,161:[1,274],182:[1,272],184:[1,273],192:rt}),t(at,[2,741],{74:[1,277]}),t(st,[2,148],{146:[1,278],147:[1,279],187:[1,280],188:[1,281],189:[1,282],190:[1,283],191:[1,284]}),t(it,[2,1]),t(it,[2,2]),{1:[2,3]},t(Y,n,{15:5,16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:23,33:24,34:25,35:26,36:27,37:28,38:29,39:30,40:31,41:32,42:33,43:34,44:35,45:36,46:37,47:38,48:39,49:40,50:41,52:43,53:44,54:45,55:46,56:47,57:48,58:49,59:50,60:51,61:52,62:53,63:54,64:55,65:56,66:57,67:58,68:59,76:74,495:95,181:99,3:100,10:285,4:r,5:a,51:i,69:o,86:u,121:c,143:l,153:h,186:d,262:f,283:p,326:b,329:g,330:m,337:v,385:E,389:y,390:S,393:T,395:x,397:A,398:C,406:k,407:O,408:N,425:$,427:D,428:I,430:L,431:q,432:U,433:F,434:M,438:_,439:V,442:j,443:P,496:B,498:G,499:J,508:H}),t(ot,[2,758]),t(ot,[2,759]),t(Y,[2,7]),{14:[1,286]},{3:238,4:r,5:a,196:287},{394:[1,288]},t(K,[2,744]),{74:ut},{74:[1,290]},{74:ct},{74:[1,292]},{74:[1,293]},{3:163,4:r,5:a,55:160,74:ie,91:294,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},t(je,lt,{340:295,153:ht}),{394:[1,297]},{3:298,4:r,5:a},{190:[1,299]},{3:305,4:r,5:a,129:dt,134:ft,140:Ze,142:et,149:pt,180:[1,301],421:312,464:300,465:302,466:303,469:304,473:309,484:306,488:308},{127:[1,316],339:313,343:[1,315],399:[1,314]},{110:318,129:ue,180:[2,858],289:De,462:317},t(bt,[2,852],{456:319,3:320,4:r,5:a}),{3:321,4:r,5:a},t(ne,[2,486]),t(K,[2,670],{71:[1,322]}),t(gt,[2,671]),{3:323,4:r,5:a},{3:238,4:r,5:a,196:324},{3:325,4:r,5:a},t(je,mt,{387:326,153:vt}),{394:[1,328]},{3:329,4:r,5:a},t(je,mt,{387:330,153:vt}),t(je,mt,{387:331,153:vt}),{3:332,4:r,5:a},t(Et,[2,846]),t(Et,[2,847]),t(K,n,{15:5,16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:23,33:24,34:25,35:26,36:27,37:28,38:29,39:30,40:31,41:32,42:33,43:34,44:35,45:36,46:37,47:38,48:39,49:40,50:41,52:43,53:44,54:45,55:46,56:47,57:48,58:49,59:50,60:51,61:52,62:53,63:54,64:55,65:56,66:57,67:58,68:59,76:74,495:95,181:99,3:100,10:333,111:349,317:361,4:r,5:a,51:i,69:o,86:u,96:yt,109:St,112:wt,113:Tt,120:xt,121:At,130:Ct,133:kt,135:Ot,136:Rt,137:Nt,138:$t,139:Dt,143:l,151:It,153:h,167:Lt,168:qt,176:Ut,177:Ft,186:d,262:f,283:p,302:Mt,303:_t,305:Vt,306:jt,307:Pt,308:Bt,309:Gt,310:Jt,311:Ht,312:Wt,313:Xt,314:Yt,315:Kt,316:Qt,321:zt,322:Zt,323:en,324:tn,326:b,329:g,330:m,337:v,385:E,389:y,390:S,393:T,395:x,397:A,398:C,406:k,407:O,408:N,425:$,427:D,428:I,430:L,431:q,432:U,433:F,434:M,438:_,439:V,442:j,443:P,496:B,498:G,499:J,508:H}),t(Ye,[2,284]),t(Ye,[2,285]),t(Ye,[2,286]),t(Ye,[2,287]),t(Ye,[2,288]),t(Ye,[2,289]),t(Ye,[2,290]),t(Ye,[2,291]),t(Ye,[2,292]),t(Ye,[2,293]),t(Ye,[2,294]),t(Ye,[2,295]),t(Ye,[2,296]),t(Ye,[2,297]),t(Ye,[2,298]),t(Ye,[2,299]),{3:163,4:r,5:a,24:378,25:377,34:373,38:372,55:160,74:ie,76:74,86:u,91:375,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,181:99,186:d,193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,260:374,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:[1,376],284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,330:m,337:[1,379],409:185,410:_e,414:Ve},t(Ye,[2,303]),t(Ye,[2,304]),{74:[1,380]},t([4,5,8,51,69,71,73,75,86,90,92,95,96,104,109,112,115,119,120,121,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,142,143,145,146,147,149,151,153,159,161,163,165,166,167,168,169,170,172,176,177,178,180,182,184,186,195,203,205,219,220,221,222,223,224,225,226,229,236,239,240,242,244,262,273,274,275,276,277,278,279,280,281,283,289,297,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,321,322,323,324,326,329,330,337,385,389,390,393,395,397,398,406,407,408,410,414,425,427,428,430,431,432,433,434,438,439,442,443,455,461,496,498,499,508,509,510],nn,{74:ut,113:[1,381]}),{3:163,4:r,5:a,55:160,74:ie,91:382,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},{3:163,4:r,5:a,55:160,74:ie,91:383,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},{3:163,4:r,5:a,55:160,74:ie,91:384,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},{3:163,4:r,5:a,55:160,74:ie,91:385,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},{3:163,4:r,5:a,55:160,74:ie,91:386,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185, +410:_e,414:Ve},t(Ye,[2,279]),t([4,5,8,51,69,71,73,74,75,86,90,92,95,96,104,109,112,113,115,119,120,121,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,142,143,145,146,147,149,151,153,159,161,163,165,166,167,168,169,170,172,176,177,178,180,182,184,186,195,203,205,219,220,221,222,223,224,225,226,227,228,229,236,239,240,242,244,246,261,262,263,264,266,273,274,275,276,277,278,279,280,281,283,284,285,286,287,288,289,290,291,293,294,297,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,319,321,322,323,324,326,329,330,333,337,346,358,359,363,364,385,389,390,393,395,397,398,404,406,407,408,410,414,416,418,425,427,428,430,431,432,433,434,438,439,442,443,455,461,496,498,499,508,509,510,511,512],[2,348]),t(rn,[2,349]),t(rn,[2,350]),t(rn,an),t(rn,[2,352]),t([4,5,8,51,69,71,73,74,75,86,90,92,95,96,104,109,112,113,115,119,120,121,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,142,143,145,146,147,149,151,153,159,161,163,165,166,167,168,169,170,172,176,177,178,180,182,184,186,195,203,205,219,220,221,222,223,224,225,226,227,229,236,239,240,242,244,262,273,274,275,276,277,278,279,280,281,283,289,290,297,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,321,322,323,324,326,329,330,333,337,346,358,359,363,364,385,389,390,393,395,397,398,406,407,408,410,414,416,418,425,427,428,430,431,432,433,434,438,439,442,443,455,461,496,498,499,508,509,510],[2,353]),{3:388,4:r,5:a,128:[1,389],292:387},{3:390,4:r,5:a},t(rn,[2,358]),t(rn,[2,359]),{3:391,4:r,5:a,74:sn,110:393,128:oe,129:ue,140:le,149:de,178:ge,193:394,198:396,254:395,287:Ne,288:$e,289:De,293:qe,409:397,414:Ve},{74:[1,398]},{3:163,4:r,5:a,55:160,74:ie,91:399,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,295:400,298:401,299:on,307:Fe,319:Me,409:185,410:_e,414:Ve},{74:[1,403]},{74:[1,404]},t(un,[2,611]),{3:419,4:r,5:a,74:cn,108:414,110:412,128:oe,129:ue,140:le,141:409,142:Ke,149:de,153:Q,178:ge,193:411,197:417,198:416,254:413,255:415,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,293:qe,409:185,410:_e,411:405,412:408,413:410,414:Ve,417:406,418:[1,407]},{3:420,4:r,5:a,153:Q,197:421,283:z,284:Z,285:ee,286:te},{74:[2,328]},{74:[2,329]},{74:[2,330]},{74:[2,331]},{74:[2,332]},{74:[2,333]},{74:[2,334]},{74:[2,335]},{74:[2,336]},{3:427,4:r,5:a,128:ln,129:hn,415:422,416:[1,423],419:424},{3:238,4:r,5:a,196:428},{283:[1,429]},t(je,[2,456]),{3:238,4:r,5:a,196:430},{228:[1,432],445:431},{228:[2,679]},{3:213,4:r,5:a,74:Ge,129:Je,140:le,141:206,142:he,149:de,153:Q,178:ge,196:207,197:209,198:208,199:211,206:433,210:He,211:212,283:z,284:Z,285:ee,286:te,293:qe,409:185,410:_e,414:Ve},{38:434,76:74,86:u,181:99,186:d},t(dn,[2,808],{207:435,73:[1,436]}),t(fn,[2,181],{3:437,4:r,5:a,73:[1,438],151:[1,439]}),t(fn,[2,185],{3:440,4:r,5:a,73:[1,441]}),t(fn,[2,186],{3:442,4:r,5:a,73:[1,443]}),t(fn,[2,189]),t(fn,[2,190],{3:444,4:r,5:a,73:[1,445]}),t(fn,[2,193],{3:446,4:r,5:a,73:[1,447]}),t([4,5,8,69,71,73,75,90,95,115,125,151,159,165,166,180,203,205,219,220,221,222,223,224,225,226,227,228,229,242,244,297,301,509,510],pn,{74:ut,113:bn}),t([4,5,8,69,71,73,75,90,95,115,125,159,165,166,203,205,219,220,221,222,223,224,225,226,227,228,229,242,244,297,301,509,510],[2,196]),t(K,[2,757]),{3:238,4:r,5:a,196:449},t(gn,mn,{78:450,195:vn}),t(We,[2,761]),t(En,[2,774],{105:452,187:[1,453]}),t([8,75,180,297,301,509,510],mn,{409:185,78:454,114:455,3:456,111:459,141:481,155:491,157:492,4:r,5:a,69:yn,73:Sn,74:wn,109:Tn,112:wt,113:Tt,115:xn,119:An,120:Cn,121:kn,125:On,126:Rn,127:Nn,128:$n,129:Dn,130:In,131:Ln,132:qn,133:Un,134:Fn,135:Mn,136:_n,137:Vn,138:jn,139:Pn,140:Bn,142:Gn,143:Jn,145:Hn,146:Wn,147:Xn,149:Yn,151:Kn,153:Qn,159:zn,161:Zn,163:er,165:tr,166:nr,167:rr,168:ar,169:sr,170:ir,172:or,182:ur,184:cr,195:vn,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,410:_e,414:Ve}),{343:[1,505]},{180:[1,506]},t(K,[2,579],{109:[1,507]}),{394:[1,508]},{180:[1,509]},t(K,[2,583],{109:[1,510],180:[1,511]}),{3:238,4:r,5:a,196:512},{38:513,71:[1,514],76:74,86:u,181:99,186:d},t(lr,[2,66]),{73:[1,515]},t(K,[2,651]),{9:105,297:[1,516],509:W,510:X},t(K,[2,649]),t(K,[2,650]),{3:517,4:r,5:a},t(K,[2,572]),{143:[1,518]},t([4,5,8,51,69,71,73,74,75,86,92,121,125,143,145,146,151,153,180,184,186,227,262,283,290,297,301,326,329,330,333,337,346,358,359,363,364,385,389,390,391,392,393,395,397,398,406,407,408,425,427,428,430,431,432,433,434,438,439,442,443,496,498,499,505,506,507,508,509,510],pn,{113:bn}),t(K,[2,599]),t(K,[2,602]),t(K,[2,603]),t(K,[2,604]),t(K,an,{71:[1,519]}),{74:sn,110:393,128:oe,129:ue,140:le,149:de,178:ge,193:394,198:396,254:395,287:Ne,288:$e,289:De,293:qe,409:397,414:Ve},t(hr,[2,312]),t(hr,[2,313]),t(hr,[2,314]),t(hr,[2,315]),t(hr,[2,316]),t(hr,[2,317]),t(hr,[2,318]),t(K,n,{15:5,16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:23,33:24,34:25,35:26,36:27,37:28,38:29,39:30,40:31,41:32,42:33,43:34,44:35,45:36,46:37,47:38,48:39,49:40,50:41,52:43,53:44,54:45,55:46,56:47,57:48,58:49,59:50,60:51,61:52,62:53,63:54,64:55,65:56,66:57,67:58,68:59,76:74,495:95,181:99,3:100,111:349,317:361,10:520,4:r,5:a,51:i,69:o,86:u,96:yt,109:St,112:wt,113:Tt,120:xt,121:At,130:Ct,133:kt,135:Ot,136:Rt,137:Nt,138:$t,139:Dt,143:l,151:It,153:h,167:Lt,168:qt,176:Ut,177:Ft,186:d,262:f,283:p,302:Mt,303:_t,305:Vt,306:jt,307:Pt,308:Bt,309:Gt,310:Jt,311:Ht,312:Wt,313:Xt,314:Yt,315:Kt,316:Qt,321:zt,322:Zt,323:en,324:tn,326:b,329:g,330:m,337:v,385:E,389:y,390:S,393:T,395:x,397:A,398:C,406:k,407:O,408:N,425:$,427:D,428:I,430:L,431:q,432:U,433:F,434:M,438:_,439:V,442:j,443:P,496:B,498:G,499:J,508:H}),t(K,[2,659],{71:dr}),t(K,[2,660]),t(fr,[2,346],{111:349,317:361,96:yt,109:St,112:wt,113:Tt,120:xt,121:pr,130:Ct,133:kt,135:Ot,136:Rt,137:Nt,138:$t,139:Dt,151:It,167:Lt,168:qt,176:Ut,177:Ft,302:Mt,303:_t,305:Vt,306:jt,307:Pt,308:Bt,309:Gt,310:Jt,311:Ht,312:Wt,313:Xt,314:Yt,315:Kt,316:Qt,321:zt,322:Zt,323:en,324:tn}),t(K,[2,661],{71:[1,523]}),t(K,[2,662],{71:[1,524]}),t(gt,[2,667]),t(gt,[2,669]),t(gt,[2,663]),t(gt,[2,664]),{227:[1,526],420:525,424:[1,527]},{3:528,4:r,5:a},t(je,[2,640]),t(je,[2,641]),t(K,[2,601],{111:349,317:361,96:yt,109:St,112:wt,113:Tt,120:xt,121:pr,130:Ct,133:kt,135:Ot,136:Rt,137:Nt,138:$t,139:Dt,151:It,167:Lt,168:qt,176:Ut,177:Ft,302:Mt,303:_t,305:Vt,306:jt,307:Pt,308:Bt,309:Gt,310:Jt,311:Ht,312:Wt,313:Xt,314:Yt,315:Kt,316:Qt,321:zt,322:Zt,323:en,324:tn}),{3:100,4:r,5:a,495:269,497:529},t(K,[2,738],{71:br}),t(fr,[2,740]),t(K,[2,743]),t(K,[2,665],{111:349,317:361,96:yt,109:St,112:wt,113:Tt,120:xt,121:pr,130:Ct,133:kt,135:Ot,136:Rt,137:Nt,138:$t,139:Dt,151:It,167:Lt,168:qt,176:Ut,177:Ft,302:Mt,303:_t,305:Vt,306:jt,307:Pt,308:Bt,309:Gt,310:Jt,311:Ht,312:Wt,313:Xt,314:Yt,315:Kt,316:Qt,321:zt,322:Zt,323:en,324:tn}),t(gr,nt,{183:531,192:rt}),t(gr,nt,{183:532,192:rt}),t(gr,nt,{183:533,192:rt}),t(mr,[2,804],{252:143,197:144,253:145,108:146,251:147,193:148,254:149,110:150,255:151,198:152,199:153,256:154,257:155,258:156,141:157,259:158,55:160,155:162,3:163,409:185,185:534,171:535,250:536,91:537,4:r,5:a,74:ie,128:oe,129:ue,134:ce,140:le,142:he,149:de,151:fe,153:Q,176:pe,177:be,178:ge,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,410:_e,414:Ve}),{74:[1,539],128:oe,193:538},{3:100,4:r,5:a,495:269,497:540},t(st,[2,149]),t(st,[2,150]),t(st,[2,151]),t(st,[2,152]),t(st,[2,153]),t(st,[2,154]),t(st,[2,155]),t(Y,[2,4]),t(Y,n,{15:5,16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:23,33:24,34:25,35:26,36:27,37:28,38:29,39:30,40:31,41:32,42:33,43:34,44:35,45:36,46:37,47:38,48:39,49:40,50:41,52:43,53:44,54:45,55:46,56:47,57:48,58:49,59:50,60:51,61:52,62:53,63:54,64:55,65:56,66:57,67:58,68:59,76:74,495:95,181:99,3:100,10:541,4:r,5:a,51:i,69:o,86:u,121:c,143:l,153:h,186:d,262:f,283:p,326:b,329:g,330:m,337:v,385:E,389:y,390:S,393:T,395:x,397:A,398:C,406:k,407:O,408:N,425:$,427:D,428:I,430:L,431:q,432:U,433:F,434:M,438:_,439:V,442:j,443:P,496:B,498:G,499:J,508:H}),{385:[1,545],390:[1,542],391:[1,543],392:[1,544]},{3:546,4:r,5:a},t(gr,[2,828],{282:547,514:549,75:[1,548],161:[1,551],182:[1,550]}),{3:163,4:r,5:a,55:160,74:ie,91:255,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,148:552,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},{3:163,4:r,5:a,55:160,74:ie,91:255,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,148:553,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},{3:554,4:r,5:a,129:[1,555]},{3:556,4:r,5:a,129:[1,557]},{3:558,4:r,5:a,96:yt,109:St,111:349,112:wt,113:Tt,120:xt,121:pr,130:Ct,133:kt,135:Ot,136:Rt,137:Nt,138:$t,139:Dt,151:It,167:Lt,168:qt,176:Ut,177:Ft,302:Mt,303:_t,305:Vt,306:jt,307:Pt,308:Bt,309:Gt,310:Jt,311:Ht,312:Wt,313:Xt,314:Yt,315:Kt,316:Qt,317:361,321:zt,322:Zt,323:en,324:tn},{3:559,4:r,5:a},{151:[1,560]},t(vr,lt,{340:561,153:ht}),{227:[1,562]},{3:563,4:r,5:a},t(K,[2,713],{71:Er}),{3:163,4:r,5:a,55:160,74:ie,91:565,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},t(fr,[2,716]),t(yr,[2,860],{409:185,467:566,141:567,136:Sr,138:Sr,142:Ke,410:_e,414:Ve}),{136:[1,568],138:[1,569]},t(wr,Tr,{481:571,484:572,74:[1,570],134:ft}),t(xr,[2,884],{485:573,129:[1,574]}),t(Ar,[2,888],{487:575,488:576,149:pt}),t(Ar,[2,731]),t(Cr,[2,723]),{3:577,4:r,5:a,128:[1,578]},{3:579,4:r,5:a},{3:580,4:r,5:a},t(je,lt,{340:581,153:ht}),t(je,lt,{340:582,153:ht}),t(Et,[2,475]),t(Et,[2,476]),{180:[1,583]},{180:[2,859]},t(kr,[2,854],{457:584,460:585,134:[1,586]}),t(bt,[2,853]),t(Or,Rr,{501:587,92:Nr,227:[1,588],505:$r,506:Dr,507:Ir}),{142:se,441:593},{4:Lr,73:[1,595],265:594,378:qr},t(K,[2,446],{125:[1,598]}),t(K,[2,564]),{3:599,4:r,5:a},{291:[1,600]},t(vr,mt,{387:601,153:vt}),t(K,[2,578]),{3:238,4:r,5:a,196:603,388:602},{3:238,4:r,5:a,196:603,388:604},t(K,[2,756]),t(Y,[2,653],{429:605,301:[1,606]}),{3:163,4:r,5:a,55:160,74:ie,91:607,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},{3:163,4:r,5:a,55:160,74:ie,91:608,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},{3:163,4:r,5:a,55:160,74:ie,91:609,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},{3:163,4:r,5:a,55:160,74:ie,91:610,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},{3:163,4:r,5:a,55:160,74:ie,91:611,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},{3:163,4:r,5:a,55:160,74:ie,91:612,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},{3:163,4:r,5:a,55:160,74:ie,91:613,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},{3:163,4:r,5:a,55:160,74:ie,91:614,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},{3:163,4:r,5:a,55:160,74:ie,91:615,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},{3:163,4:r,5:a,55:160,74:ie,91:616,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},{3:163,4:r,5:a,55:160,74:ie,91:617,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},{3:163,4:r,5:a,55:160,74:ie,91:618,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},{3:163,4:r,5:a,55:160,74:ie,91:619,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},{3:163,4:r,5:a,55:160,74:ie,91:620,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},{3:163,4:r,5:a,55:160,74:ie,91:621,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},{3:622,4:r,5:a,74:[1,624],128:oe,153:Q,193:623,197:625,283:z,284:Z,285:ee,286:te},{3:626,4:r,5:a,74:[1,628],128:oe,153:Q,193:627,197:629,283:z,284:Z,285:ee,286:te},t(Ur,[2,430],{252:143,197:144,253:145,108:146,251:147,193:148,254:149,110:150,255:151,198:152,199:153,256:154,257:155,258:156,141:157,259:158,55:160,155:162,3:163,409:185,91:630,4:r,5:a,74:ie,128:oe,129:ue,134:ce,140:le,142:he,149:de,151:fe,153:Q,176:pe,177:be,178:ge,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,410:_e,414:Ve}),t(Ur,[2,431],{252:143,197:144,253:145,108:146,251:147,193:148,254:149,110:150,255:151,198:152,199:153,256:154,257:155,258:156,141:157,259:158,55:160,155:162,3:163,409:185,91:631,4:r,5:a,74:ie,128:oe,129:ue,134:ce,140:le,142:he,149:de,151:fe,153:Q,176:pe,177:be,178:ge,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,410:_e,414:Ve}),t(Ur,[2,432],{252:143,197:144,253:145,108:146,251:147,193:148,254:149,110:150,255:151,198:152,199:153,256:154,257:155,258:156,141:157,259:158,55:160,155:162,3:163,409:185,91:632,4:r,5:a,74:ie,128:oe,129:ue,134:ce,140:le,142:he,149:de,151:fe,153:Q,176:pe,177:be,178:ge,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,410:_e,414:Ve}),t(Ur,[2,433],{252:143,197:144,253:145,108:146,251:147,193:148,254:149,110:150,255:151,198:152,199:153,256:154,257:155,258:156,141:157,259:158,55:160,155:162,3:163,409:185,91:633,4:r,5:a,74:ie,128:oe,129:ue,134:ce,140:le,142:he,149:de,151:fe,153:Q,176:pe,177:be,178:ge,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,410:_e,414:Ve}),t(Ur,Fr,{252:143,197:144,253:145,108:146,251:147,193:148,254:149,110:150,255:151,198:152,199:153,256:154,257:155,258:156,141:157,259:158,55:160,155:162,3:163,409:185,91:634,4:r,5:a,74:ie,128:oe,129:ue,134:ce,140:le,142:he,149:de,151:fe,153:Q,176:pe,177:be,178:ge,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,410:_e,414:Ve}),{3:163,4:r,5:a,55:160,74:ie,91:635,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},{3:163,4:r,5:a,55:160,74:ie,91:636,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},t(Ur,[2,435],{252:143,197:144,253:145,108:146,251:147,193:148,254:149,110:150,255:151,198:152,199:153,256:154,257:155,258:156,141:157,259:158,55:160,155:162,3:163,409:185,91:637,4:r,5:a,74:ie,128:oe,129:ue,134:ce,140:le,142:he,149:de,151:fe,153:Q,176:pe,177:be,178:ge,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,410:_e,414:Ve}),{3:163,4:r,5:a,55:160,74:ie,91:638,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},{3:163,4:r,5:a,55:160,74:ie,91:639,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},{161:[1,641],163:[1,643],318:640,325:[1,642]},{3:163,4:r,5:a,55:160,74:ie,91:644,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},{3:163,4:r,5:a,55:160,74:ie,91:645,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},{3:419,4:r,5:a,74:[1,646],108:649,142:Mr,153:Q,197:650,199:648,283:z,284:Z,285:ee,286:te,320:647},{96:[1,652],290:[1,653]},{3:163,4:r,5:a,55:160,74:ie,91:654,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},{3:163,4:r,5:a,55:160,74:ie,91:655,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},{3:163,4:r,5:a,55:160,74:ie,91:656,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},{4:Lr,265:657,378:qr},t(_r,[2,84]),t(_r,[2,85]),{75:[1,658]},{75:[1,659]},{75:[1,660]},{75:[1,661],96:yt,109:St,111:349,112:wt,113:Tt,120:xt,121:pr,130:Ct,133:kt,135:Ot,136:Rt,137:Nt,138:$t,139:Dt,151:It,167:Lt,168:qt,176:Ut,177:Ft,302:Mt,303:_t,305:Vt,306:jt,307:Pt,308:Bt,309:Gt,310:Jt,311:Ht,312:Wt,313:Xt,314:Yt,315:Kt,316:Qt,317:361,321:zt,322:Zt,323:en,324:tn},t(je,Pe,{331:201,74:ct,195:Be}),{75:[2,824]},{75:[2,825]},{131:re,132:ae},{3:163,4:r,5:a,55:160,74:ie,91:255,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,148:662,149:de,151:fe,153:Q,155:162,161:[1,664],176:pe,177:be,178:ge,182:[1,663],193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},{3:665,4:r,5:a,146:Vr,177:[1,667]},t([4,5,8,51,69,71,73,74,75,86,90,92,95,96,104,115,119,125,126,127,128,129,131,132,134,140,142,143,145,146,147,149,151,153,159,161,163,165,166,167,168,169,170,172,178,180,182,184,186,195,203,205,219,220,221,222,223,224,225,226,229,236,239,240,242,244,262,273,274,275,276,277,278,279,280,281,283,289,297,299,300,301,304,321,322,324,326,329,330,337,385,389,390,393,395,397,398,406,407,408,410,414,425,427,428,430,431,432,433,434,438,439,442,443,455,461,496,498,499,508,509,510],[2,406],{111:349,317:361,109:St,112:wt,113:Tt,120:xt,121:pr,130:Ct,133:kt,135:Ot,136:Rt,137:Nt,138:$t,139:Dt,176:Ut,177:Ft,302:Mt,303:_t,305:Vt,306:jt,307:Pt,308:Bt,309:Gt,310:Jt,311:Ht,312:Wt,313:Xt,314:Yt,315:Kt,316:Qt,323:en}),t(jr,[2,407],{111:349,317:361,112:wt,113:Tt,120:xt,130:Ct,133:kt,135:Ot,177:Ft,306:jt}),t(jr,[2,408],{111:349,317:361,112:wt,113:Tt,120:xt,130:Ct,133:kt,135:Ot,177:Ft,306:jt}),t(Pr,[2,409],{111:349,317:361,306:jt}),t(Pr,[2,410],{111:349,317:361,306:jt}),t(rn,[2,356]),t(rn,[2,830]),t(rn,[2,831]),t(rn,[2,357]),t([4,5,8,51,69,71,73,74,75,86,90,92,95,96,104,109,112,113,115,119,120,121,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,142,143,145,146,147,149,151,153,159,161,163,165,166,167,168,169,170,172,176,177,178,180,182,184,186,195,203,205,219,220,221,222,223,224,225,226,227,228,229,236,239,240,242,244,262,273,274,275,276,277,278,279,280,281,283,289,297,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,321,322,323,324,326,329,330,337,385,389,390,393,395,397,398,406,407,408,410,414,425,427,428,430,431,432,433,434,438,439,442,443,455,461,496,498,499,508,509,510],[2,354]),{3:163,4:r,5:a,55:160,74:ie,91:668,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},t(un,[2,607]),t(un,[2,608]),t(un,[2,609]),t(un,[2,610]),t(un,[2,612]),{38:669,76:74,86:u,181:99,186:d},{96:yt,109:St,111:349,112:wt,113:Tt,120:xt,121:pr,130:Ct,133:kt,135:Ot,136:Rt,137:Nt,138:$t,139:Dt,151:It,167:Lt,168:qt,176:Ut,177:Ft,295:670,298:401,299:on,302:Mt,303:_t,305:Vt,306:jt,307:Pt,308:Bt,309:Gt,310:Jt,311:Ht,312:Wt,313:Xt,314:Yt,315:Kt,316:Qt,317:361,321:zt,322:Zt,323:en,324:tn},{296:671,297:Br,298:672,299:on,301:Gr},t(Jr,[2,363]),{3:163,4:r,5:a,55:160,74:ie,91:674,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},{3:163,4:r,5:a,55:160,74:ie,91:675,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},{4:Lr,265:676,378:qr},t(un,[2,613]),{71:[1,678],418:[1,677]},t(un,[2,629]),t(Hr,[2,636]),t(Wr,[2,614]),t(Wr,[2,615]),t(Wr,[2,616]),t(Wr,[2,617]),t(Wr,[2,618]),t(Wr,[2,619]),t(Wr,[2,620]),t(Wr,[2,621]),t(Wr,[2,622]),{3:163,4:r,5:a,55:160,74:ie,91:679,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},t([4,5,8,51,69,71,73,75,86,90,92,95,96,104,109,112,115,119,120,121,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,142,143,145,146,147,149,151,153,159,161,163,165,166,167,168,169,170,172,176,177,178,180,182,184,186,195,203,205,219,220,221,222,223,224,225,226,229,236,239,240,242,244,262,273,274,275,276,277,278,279,280,281,283,289,297,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,321,322,323,324,326,329,330,337,385,389,390,393,395,397,398,406,407,408,410,414,416,418,425,427,428,430,431,432,433,434,438,439,442,443,455,461,496,498,499,508,509,510],nn,{74:ut,113:Xr}),t(Yr,[2,306],{74:ut}),t(Ye,[2,307]),{71:[1,682],416:[1,681]},t(un,[2,626]),t(Kr,[2,631]),{149:[1,683]},{149:[1,684]},{149:[1,685]},{38:689,74:[1,688],76:74,86:u,146:[1,686],181:99,186:d,333:[1,687]},t(je,Pe,{331:690,195:Be}),{146:[1,691]},{227:[1,693],446:692},{3:213,4:r,5:a,74:Ge,129:Je,140:le,141:206,142:he,149:de,153:Q,178:ge,196:207,197:209,198:208,199:211,206:694,210:He,211:212,283:z,284:Z,285:ee,286:te,293:qe,409:185,410:_e,414:Ve},{228:[2,680]},{75:[1,695]},t(fn,[2,810],{208:696,3:697,4:r,5:a}),t(dn,[2,809]),t(fn,[2,179]),{3:698,4:r,5:a},{209:[1,699]},t(fn,[2,183]),{3:700,4:r,5:a},t(fn,[2,187]),{3:701,4:r,5:a},t(fn,[2,191]),{3:702,4:r,5:a},t(fn,[2,194]),{3:703,4:r,5:a},{3:704,4:r,5:a},{145:[1,705]},t(Qr,[2,168],{79:706,180:[1,707]}),{3:213,4:r,5:a,129:[1,712],140:le,142:[1,713],149:de,153:Q,178:ge,196:708,197:709,198:710,199:711,283:z,284:Z,285:ee,286:te,293:qe},{3:718,4:r,5:a,106:714,107:715,108:716,109:zr},t(En,[2,775]),t(Zr,[2,766],{88:719,179:720,180:[1,721]}),t(Xe,[2,765],{150:722,176:ea,177:ta,178:na}),t([4,5,8,69,71,73,75,109,112,113,115,119,120,121,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,142,143,145,146,147,149,151,153,159,161,163,165,166,167,168,169,170,172,176,177,178,180,182,184,195,273,274,275,276,277,278,279,280,281,297,301,410,414,509,510],[2,86],{ +74:[1,726]}),{116:[1,727]},t(ra,[2,89]),{3:728,4:r,5:a},t(ra,[2,91]),{3:163,4:r,5:a,55:160,74:ie,91:729,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},{3:163,4:r,5:a,55:160,74:ie,91:730,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},{3:456,4:r,5:a,69:yn,73:Sn,74:wn,109:Tn,111:459,112:wt,113:Tt,114:732,115:xn,119:An,120:Cn,121:kn,122:731,125:On,126:Rn,127:Nn,128:$n,129:Dn,130:In,131:Ln,132:qn,133:Un,134:Fn,135:Mn,136:_n,137:Vn,138:jn,139:Pn,140:Bn,141:481,142:Gn,143:Jn,145:Hn,146:Wn,147:Xn,149:Yn,151:Kn,153:Qn,155:491,157:492,159:zn,161:Zn,163:er,165:tr,166:nr,167:rr,168:ar,169:sr,170:ir,172:or,182:ur,184:cr,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,409:185,410:_e,414:Ve},{74:[1,733]},{74:[1,734]},{74:[1,735]},{74:[1,736]},t(ra,[2,100]),t(ra,[2,101]),t(ra,[2,102]),t(ra,[2,103]),t(ra,[2,104]),t(ra,[2,105]),{3:737,4:r,5:a},{3:738,4:r,5:a,130:[1,739]},t(ra,[2,109]),t(ra,[2,110]),t(ra,[2,111]),t(ra,[2,112]),t(ra,[2,113]),t(ra,[2,114]),{3:740,4:r,5:a,74:sn,110:393,128:oe,129:ue,140:le,149:de,178:ge,193:394,198:396,254:395,287:Ne,288:$e,289:De,293:qe,409:397,414:Ve},{142:[1,741]},{74:[1,742]},{142:[1,743]},t(ra,[2,119]),{74:[1,744]},{3:745,4:r,5:a},{74:[1,746]},{74:[1,747]},{74:[1,748]},{74:[1,749]},{74:[1,750],161:[1,751]},{74:[1,752]},{74:[1,753]},{74:[1,754]},{74:[1,755]},{74:[1,756]},{74:[1,757]},{74:[1,758]},{74:[1,759]},{74:[1,760]},{74:[2,790]},{74:[2,791]},{3:238,4:r,5:a,196:761},{3:238,4:r,5:a,196:762},{110:763,129:ue,289:De},t(K,[2,581],{109:[1,764]}),{3:238,4:r,5:a,196:765},{110:766,129:ue,289:De},{3:767,4:r,5:a},t(K,[2,677]),t(K,[2,64]),{3:230,4:r,5:a,72:768},{74:[1,769]},t(K,[2,658]),t(K,[2,571]),{3:718,4:r,5:a,108:772,140:aa,142:sa,144:770,327:771,328:773},{141:776,142:Ke,409:185,410:_e,414:Ve},t(K,[2,655]),{3:163,4:r,5:a,55:160,74:ie,91:777,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},t(Ur,Fr,{252:143,197:144,253:145,108:146,251:147,193:148,254:149,110:150,255:151,198:152,199:153,256:154,257:155,258:156,141:157,259:158,55:160,155:162,3:163,409:185,91:778,4:r,5:a,74:ie,128:oe,129:ue,134:ce,140:le,142:he,149:de,151:fe,153:Q,176:pe,177:be,178:ge,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,410:_e,414:Ve}),{110:779,129:ue,289:De},{3:261,4:r,5:a,437:780,438:ze},t(K,[2,637]),t(K,[2,647]),t(K,[2,648]),{111:783,112:wt,113:Tt,121:[1,781],422:782},t(K,[2,737],{71:br}),{3:100,4:r,5:a,495:784},{3:163,4:r,5:a,55:160,74:ie,91:537,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,171:785,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,250:536,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},{3:163,4:r,5:a,55:160,74:ie,91:537,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,171:786,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,250:536,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},{3:163,4:r,5:a,55:160,74:ie,91:537,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,171:787,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,250:536,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},t(mr,[2,147]),t(mr,[2,805],{71:ia}),t(oa,[2,269]),t(oa,[2,276],{111:349,317:361,3:790,110:792,4:r,5:a,73:[1,789],96:yt,109:St,112:wt,113:Tt,120:xt,121:pr,128:[1,791],129:ue,130:Ct,133:kt,135:Ot,136:Rt,137:Nt,138:$t,139:Dt,151:It,167:Lt,168:qt,176:Ut,177:Ft,289:De,302:Mt,303:_t,305:Vt,306:jt,307:Pt,308:Bt,309:Gt,310:Jt,311:Ht,312:Wt,313:Xt,314:Yt,315:Kt,316:Qt,321:zt,322:Zt,323:en,324:tn}),t(tt,[2,806],{194:793,511:[1,794]}),{128:oe,193:795},{71:br,75:[1,796]},t(Y,[2,8]),{145:[1,797],187:[1,798]},{187:[1,799]},{187:[1,800]},{187:[1,801]},t(K,[2,560],{73:[1,803],74:[1,802]}),{3:163,4:r,5:a,55:160,74:ie,91:255,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,148:804,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},t(rn,[2,338]),t(gr,[2,829]),t(gr,[2,826]),t(gr,[2,827]),{71:dr,75:[1,805]},{71:dr,75:[1,806]},{71:[1,807]},{71:[1,808]},{71:[1,809]},{71:[1,810]},t(rn,[2,345]),t(K,[2,565]),{291:[1,811]},{3:812,4:r,5:a,110:813,129:ue,289:De},{3:238,4:r,5:a,196:814},{227:[1,815]},{3:305,4:r,5:a,129:dt,134:ft,140:Ze,142:et,149:pt,421:312,465:816,466:303,469:304,473:309,484:306,488:308},t(K,[2,714],{111:349,317:361,96:yt,109:St,112:wt,113:Tt,120:xt,121:pr,130:Ct,133:kt,135:Ot,136:Rt,137:Nt,138:$t,139:Dt,151:It,167:Lt,168:qt,176:Ut,177:Ft,302:Mt,303:_t,305:Vt,306:jt,307:Pt,308:Bt,309:Gt,310:Jt,311:Ht,312:Wt,313:Xt,314:Yt,315:Kt,316:Qt,321:zt,322:Zt,323:en,324:tn}),t(fr,[2,862],{468:817,474:818,73:ua}),t(yr,[2,861]),{3:822,4:r,5:a,129:dt,134:ft,141:821,142:Ke,149:pt,409:185,410:_e,414:Ve,466:820,484:306,488:308},{3:822,4:r,5:a,129:dt,134:ft,140:Ze,142:et,149:pt,421:312,466:824,469:823,473:309,484:306,488:308},{3:305,4:r,5:a,129:dt,134:ft,140:Ze,142:et,149:pt,421:312,464:825,465:302,466:303,469:304,473:309,484:306,488:308},t(xr,[2,880],{482:826,129:[1,827]}),t(wr,[2,879]),t(Ar,[2,886],{486:828,488:829,149:pt}),t(xr,[2,885]),t(Ar,[2,730]),t(Ar,[2,889]),t(wr,[2,733]),t(wr,[2,734]),t(Ar,[2,732]),t(Cr,[2,724]),{3:238,4:r,5:a,196:830},{3:238,4:r,5:a,196:831},{3:163,4:r,5:a,55:160,74:ie,91:832,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},t(ca,[2,856],{458:833,110:834,129:ue,289:De}),t(kr,[2,855]),{3:835,4:r,5:a},{326:la,329:ha,330:da,502:836},{3:238,4:r,5:a,196:840},t(Or,[2,749]),t(Or,[2,750]),t(Or,[2,751]),{126:[1,841]},t(gt,[2,672]),t(gt,[2,673],{121:[1,842]}),{4:Lr,265:843,378:qr},t([5,8,51,69,71,73,75,86,90,92,95,96,104,109,112,113,115,119,120,121,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,142,143,145,146,147,149,151,153,159,161,163,165,166,167,168,169,170,172,176,177,178,180,182,184,186,195,203,205,219,220,221,222,223,224,225,226,227,229,236,239,240,242,244,262,273,274,275,276,277,278,279,280,281,283,289,290,297,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,321,322,323,324,326,329,330,333,337,346,358,359,363,364,385,389,390,393,395,397,398,406,407,408,410,414,425,427,428,430,431,432,433,434,438,439,442,443,455,461,496,498,499,508,509,510],[2,525],{4:[1,845],74:[1,844]}),{74:[1,846]},{3:163,4:r,5:a,55:160,74:ie,91:847,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},t(K,[2,573]),t(vr,[2,553]),{3:848,4:r,5:a,110:849,129:ue,289:De},t(K,[2,549],{71:fa}),t(gt,[2,551]),t(K,[2,598],{71:fa}),t(K,[2,652]),t(K,n,{15:5,16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:23,33:24,34:25,35:26,36:27,37:28,38:29,39:30,40:31,41:32,42:33,43:34,44:35,45:36,46:37,47:38,48:39,49:40,50:41,52:43,53:44,54:45,55:46,56:47,57:48,58:49,59:50,60:51,61:52,62:53,63:54,64:55,65:56,66:57,67:58,68:59,76:74,495:95,181:99,3:100,10:851,4:r,5:a,51:i,69:o,86:u,121:c,143:l,153:h,186:d,262:f,283:p,326:b,329:g,330:m,337:v,385:E,389:y,390:S,393:T,395:x,397:A,398:C,406:k,407:O,408:N,425:$,427:D,428:I,430:L,431:q,432:U,433:F,434:M,438:_,439:V,442:j,443:P,496:B,498:G,499:J,508:H}),t(pa,[2,367],{111:349,317:361,112:wt,113:Tt,120:xt,130:Ct,133:kt,135:Ot,138:$t,139:Dt,176:Ut,177:Ft,306:jt,307:Pt,308:Bt,309:Gt}),t(pa,[2,368],{111:349,317:361,112:wt,113:Tt,120:xt,130:Ct,133:kt,135:Ot,138:$t,139:Dt,176:Ut,177:Ft,306:jt,307:Pt,308:Bt,309:Gt}),t(ba,[2,369],{111:349,317:361,112:wt,113:Tt,120:xt,130:Ct,133:kt,135:Ot,138:$t,139:Dt,176:Ut,177:Ft,304:[1,852],306:jt,307:Pt,308:Bt,309:Gt}),t(ba,[2,371],{111:349,317:361,112:wt,113:Tt,120:xt,130:Ct,133:kt,135:Ot,138:$t,139:Dt,176:Ut,177:Ft,304:[1,853],306:jt,307:Pt,308:Bt,309:Gt}),t(Ye,[2,373],{111:349,317:361}),t(jr,[2,374],{111:349,317:361,112:wt,113:Tt,120:xt,130:Ct,133:kt,135:Ot,177:Ft,306:jt}),t(jr,[2,375],{111:349,317:361,112:wt,113:Tt,120:xt,130:Ct,133:kt,135:Ot,177:Ft,306:jt}),t(ga,[2,376],{111:349,317:361,112:wt,113:Tt,120:xt,133:kt,306:jt}),t(ga,[2,377],{111:349,317:361,112:wt,113:Tt,120:xt,133:kt,306:jt}),t(ga,[2,378],{111:349,317:361,112:wt,113:Tt,120:xt,133:kt,306:jt}),t([4,5,8,51,69,71,73,74,75,86,90,92,95,96,104,109,115,119,120,121,125,126,127,128,129,130,131,132,134,135,136,137,138,139,140,142,143,145,146,147,149,151,153,159,161,163,165,166,167,168,169,170,172,176,177,178,180,182,184,186,195,203,205,219,220,221,222,223,224,225,226,229,236,239,240,242,244,262,273,274,275,276,277,278,279,280,281,283,289,297,299,300,301,302,303,304,305,307,308,309,310,311,312,313,314,315,316,321,322,323,324,326,329,330,337,385,389,390,393,395,397,398,406,407,408,410,414,425,427,428,430,431,432,433,434,438,439,442,443,455,461,496,498,499,508,509,510],[2,379],{111:349,317:361,112:wt,113:Tt,133:kt,306:jt}),t(ma,[2,380],{111:349,317:361,112:wt,113:Tt,120:xt,130:Ct,133:kt,135:Ot,176:Ut,177:Ft,306:jt,307:Pt}),t(ma,[2,381],{111:349,317:361,112:wt,113:Tt,120:xt,130:Ct,133:kt,135:Ot,176:Ut,177:Ft,306:jt,307:Pt}),t(ma,[2,382],{111:349,317:361,112:wt,113:Tt,120:xt,130:Ct,133:kt,135:Ot,176:Ut,177:Ft,306:jt,307:Pt}),t(ma,[2,383],{111:349,317:361,112:wt,113:Tt,120:xt,130:Ct,133:kt,135:Ot,176:Ut,177:Ft,306:jt,307:Pt}),t(Yr,[2,384],{74:ut}),t(Ye,[2,385]),{3:163,4:r,5:a,55:160,74:ie,91:854,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},t(Ye,[2,387]),t(Yr,[2,388],{74:ut}),t(Ye,[2,389]),{3:163,4:r,5:a,55:160,74:ie,91:855,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},t(Ye,[2,391]),t(va,[2,392],{111:349,317:361,109:St,112:wt,113:Tt,120:xt,130:Ct,133:kt,135:Ot,138:$t,139:Dt,176:Ut,177:Ft,302:Mt,303:_t,305:Vt,306:jt,307:Pt,308:Bt,309:Gt,323:en}),t(va,[2,393],{111:349,317:361,109:St,112:wt,113:Tt,120:xt,130:Ct,133:kt,135:Ot,138:$t,139:Dt,176:Ut,177:Ft,302:Mt,303:_t,305:Vt,306:jt,307:Pt,308:Bt,309:Gt,323:en}),t(va,[2,394],{111:349,317:361,109:St,112:wt,113:Tt,120:xt,130:Ct,133:kt,135:Ot,138:$t,139:Dt,176:Ut,177:Ft,302:Mt,303:_t,305:Vt,306:jt,307:Pt,308:Bt,309:Gt,323:en}),t(va,[2,395],{111:349,317:361,109:St,112:wt,113:Tt,120:xt,130:Ct,133:kt,135:Ot,138:$t,139:Dt,176:Ut,177:Ft,302:Mt,303:_t,305:Vt,306:jt,307:Pt,308:Bt,309:Gt,323:en}),t([4,5,8,51,69,86,96,121,136,137,143,151,153,167,168,186,262,283,297,301,310,311,312,313,314,315,316,321,322,324,326,329,330,337,385,389,390,393,395,397,398,406,407,408,425,427,428,430,431,432,433,434,438,439,442,443,496,498,499,508,509,510],Ea,{111:349,317:361,109:St,112:wt,113:Tt,120:xt,130:Ct,133:kt,135:Ot,138:$t,139:Dt,176:Ut,177:Ft,302:Mt,303:_t,305:Vt,306:jt,307:Pt,308:Bt,309:Gt,323:en}),t(va,[2,397],{111:349,317:361,109:St,112:wt,113:Tt,120:xt,130:Ct,133:kt,135:Ot,138:$t,139:Dt,176:Ut,177:Ft,302:Mt,303:_t,305:Vt,306:jt,307:Pt,308:Bt,309:Gt,323:en}),t(va,[2,398],{111:349,317:361,109:St,112:wt,113:Tt,120:xt,130:Ct,133:kt,135:Ot,138:$t,139:Dt,176:Ut,177:Ft,302:Mt,303:_t,305:Vt,306:jt,307:Pt,308:Bt,309:Gt,323:en}),t(va,[2,399],{111:349,317:361,109:St,112:wt,113:Tt,120:xt,130:Ct,133:kt,135:Ot,138:$t,139:Dt,176:Ut,177:Ft,302:Mt,303:_t,305:Vt,306:jt,307:Pt,308:Bt,309:Gt,323:en}),t(va,[2,400],{111:349,317:361,109:St,112:wt,113:Tt,120:xt,130:Ct,133:kt,135:Ot,138:$t,139:Dt,176:Ut,177:Ft,302:Mt,303:_t,305:Vt,306:jt,307:Pt,308:Bt,309:Gt,323:en}),t(va,[2,401],{111:349,317:361,109:St,112:wt,113:Tt,120:xt,130:Ct,133:kt,135:Ot,138:$t,139:Dt,176:Ut,177:Ft,302:Mt,303:_t,305:Vt,306:jt,307:Pt,308:Bt,309:Gt,323:en}),{74:[1,856]},{74:[2,436]},{74:[2,437]},{74:[2,438]},t(ya,[2,404],{111:349,317:361,96:yt,109:St,112:wt,113:Tt,120:xt,121:pr,130:Ct,133:kt,135:Ot,136:Rt,137:Nt,138:$t,139:Dt,151:It,176:Ut,177:Ft,302:Mt,303:_t,305:Vt,306:jt,307:Pt,308:Bt,309:Gt,310:Jt,311:Ht,312:Wt,313:Xt,314:Yt,315:Kt,316:Qt,323:en}),t([4,5,8,51,69,71,73,74,75,86,90,92,95,104,115,119,125,126,127,128,129,131,132,134,140,142,143,145,146,147,149,153,159,161,163,165,166,168,169,170,172,178,180,182,184,186,195,203,205,219,220,221,222,223,224,225,226,229,236,239,240,242,244,262,273,274,275,276,277,278,279,280,281,283,289,297,299,300,301,304,324,326,329,330,337,385,389,390,393,395,397,398,406,407,408,410,414,425,427,428,430,431,432,433,434,438,439,442,443,455,461,496,498,499,508,509,510],[2,405],{111:349,317:361,96:yt,109:St,112:wt,113:Tt,120:xt,121:pr,130:Ct,133:kt,135:Ot,136:Rt,137:Nt,138:$t,139:Dt,151:It,167:Lt,176:Ut,177:Ft,302:Mt,303:_t,305:Vt,306:jt,307:Pt,308:Bt,309:Gt,310:Jt,311:Ht,312:Wt,313:Xt,314:Yt,315:Kt,316:Qt,321:zt,322:Zt,323:en}),{3:163,4:r,5:a,38:857,55:160,74:ie,75:[1,859],76:74,86:u,91:255,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,148:858,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,181:99,186:d,193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},t(Ye,[2,418]),t(Ye,[2,420]),t(Ye,[2,427]),t(Ye,[2,428]),{3:391,4:r,5:a,74:[1,860]},{3:419,4:r,5:a,74:[1,861],108:649,142:Mr,153:Q,197:650,199:863,283:z,284:Z,285:ee,286:te,320:862},t(Ye,[2,425]),t(ya,[2,422],{111:349,317:361,96:yt,109:St,112:wt,113:Tt,120:xt,121:pr,130:Ct,133:kt,135:Ot,136:Rt,137:Nt,138:$t,139:Dt,151:It,176:Ut,177:Ft,302:Mt,303:_t,305:Vt,306:jt,307:Pt,308:Bt,309:Gt,310:Jt,311:Ht,312:Wt,313:Xt,314:Yt,315:Kt,316:Qt,323:en}),t(ya,[2,423],{111:349,317:361,96:yt,109:St,112:wt,113:Tt,120:xt,121:pr,130:Ct,133:kt,135:Ot,136:Rt,137:Nt,138:$t,139:Dt,151:It,176:Ut,177:Ft,302:Mt,303:_t,305:Vt,306:jt,307:Pt,308:Bt,309:Gt,310:Jt,311:Ht,312:Wt,313:Xt,314:Yt,315:Kt,316:Qt,323:en}),t([4,5,8,51,69,71,73,74,75,86,90,92,95,96,104,115,119,121,125,126,127,128,129,131,132,134,136,137,140,142,143,145,146,147,149,151,153,159,161,163,165,166,167,168,169,170,172,178,180,182,184,186,195,203,205,219,220,221,222,223,224,225,226,229,236,239,240,242,244,262,273,274,275,276,277,278,279,280,281,283,289,297,299,300,301,304,310,311,312,313,314,315,316,321,322,323,324,326,329,330,337,385,389,390,393,395,397,398,406,407,408,410,414,425,427,428,430,431,432,433,434,438,439,442,443,455,461,496,498,499,508,509,510],[2,424],{111:349,317:361,109:St,112:wt,113:Tt,120:xt,130:Ct,133:kt,135:Ot,138:$t,139:Dt,176:Ut,177:Ft,302:Mt,303:_t,305:Vt,306:jt,307:Pt,308:Bt,309:Gt}),t(Ye,[2,426]),t(Ye,[2,300]),t(Ye,[2,301]),t(Ye,[2,302]),t(Ye,[2,411]),{71:dr,75:[1,864]},{3:163,4:r,5:a,55:160,74:ie,91:865,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},{3:163,4:r,5:a,55:160,74:ie,91:866,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},t(Ye,Sa),t(wa,[2,282]),t(Ye,[2,278]),{75:[1,868],96:yt,109:St,111:349,112:wt,113:Tt,120:xt,121:pr,130:Ct,133:kt,135:Ot,136:Rt,137:Nt,138:$t,139:Dt,151:It,167:Lt,168:qt,176:Ut,177:Ft,302:Mt,303:_t,305:Vt,306:jt,307:Pt,308:Bt,309:Gt,310:Jt,311:Ht,312:Wt,313:Xt,314:Yt,315:Kt,316:Qt,317:361,321:zt,322:Zt,323:en,324:tn},{75:[1,869]},{296:870,297:Br,298:672,299:on,301:Gr},{297:[1,871]},t(Jr,[2,362]),{3:163,4:r,5:a,55:160,74:ie,91:872,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},{96:yt,109:St,111:349,112:wt,113:Tt,120:xt,121:pr,130:Ct,133:kt,135:Ot,136:Rt,137:Nt,138:$t,139:Dt,151:It,167:Lt,168:qt,176:Ut,177:Ft,300:[1,873],302:Mt,303:_t,305:Vt,306:jt,307:Pt,308:Bt,309:Gt,310:Jt,311:Ht,312:Wt,313:Xt,314:Yt,315:Kt,316:Qt,317:361,321:zt,322:Zt,323:en,324:tn},{73:[1,874],96:yt,109:St,111:349,112:wt,113:Tt,120:xt,121:pr,130:Ct,133:kt,135:Ot,136:Rt,137:Nt,138:$t,139:Dt,151:It,167:Lt,168:qt,176:Ut,177:Ft,302:Mt,303:_t,305:Vt,306:jt,307:Pt,308:Bt,309:Gt,310:Jt,311:Ht,312:Wt,313:Xt,314:Yt,315:Kt,316:Qt,317:361,321:zt,322:Zt,323:en,324:tn},{71:[1,875]},t(un,[2,627]),{3:419,4:r,5:a,74:cn,108:414,110:412,128:oe,129:ue,140:le,141:409,142:Ke,149:de,153:Q,178:ge,193:411,197:417,198:416,254:413,255:415,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,293:qe,409:185,410:_e,412:877,413:410,414:Ve,418:[1,876]},{75:[1,878],96:yt,109:St,111:349,112:wt,113:Tt,120:xt,121:pr,130:Ct,133:kt,135:Ot,136:Rt,137:Nt,138:$t,139:Dt,151:It,167:Lt,168:qt,176:Ut,177:Ft,302:Mt,303:_t,305:Vt,306:jt,307:Pt,308:Bt,309:Gt,310:Jt,311:Ht,312:Wt,313:Xt,314:Yt,315:Kt,316:Qt,317:361,321:zt,322:Zt,323:en,324:tn},{3:879,4:r,5:a,146:Vr},t(un,[2,624]),{3:427,4:r,5:a,128:ln,129:hn,416:[1,880],419:881},{3:419,4:r,5:a,74:cn,108:414,110:412,128:oe,129:ue,140:le,141:409,142:Ke,149:de,153:Q,178:ge,193:411,197:417,198:416,254:413,255:415,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,293:qe,409:185,410:_e,412:882,413:410,414:Ve},{3:419,4:r,5:a,74:cn,108:414,110:412,128:oe,129:ue,140:le,141:409,142:Ke,149:de,153:Q,178:ge,193:411,197:417,198:416,254:413,255:415,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,293:qe,409:185,410:_e,412:883,413:410,414:Ve},{3:419,4:r,5:a,74:cn,108:414,110:412,128:oe,129:ue,140:le,141:409,142:Ke,149:de,153:Q,178:ge,193:411,197:417,198:416,254:413,255:415,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,293:qe,409:185,410:_e,412:884,413:410,414:Ve},{74:Ta,140:le,141:887,142:Ke,149:de,178:ge,198:888,293:qe,332:885,409:185,410:_e,414:Ve},{146:[1,889]},{3:718,4:r,5:a,97:890,108:891},t(xa,[2,452]),{3:238,4:r,5:a,196:892},{74:Ta,140:le,141:887,142:Ke,149:de,178:ge,198:888,293:qe,332:893,409:185,410:_e,414:Ve},{299:Aa,447:894,449:895,450:896},{3:163,4:r,5:a,55:160,74:ie,91:898,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},{227:[2,681]},t(fn,[2,177],{3:899,4:r,5:a,73:[1,900]}),t(fn,[2,178]),t(fn,[2,811]),t(fn,[2,180]),t(fn,[2,182]),t(fn,[2,184]),t(fn,[2,188]),t(fn,[2,192]),t(fn,[2,195]),t([4,5,8,51,69,71,73,74,75,86,90,92,95,115,121,125,143,145,146,151,153,159,165,166,180,184,186,203,205,219,220,221,222,223,224,225,226,227,228,229,242,244,262,283,290,297,301,326,329,330,333,337,346,358,359,363,364,385,389,390,391,392,393,395,397,398,406,407,408,425,427,428,430,431,432,433,434,438,439,442,443,496,498,499,505,506,507,508,509,510],[2,197]),{3:901,4:r,5:a},t(Ca,[2,762],{80:902,89:903,90:[1,904],95:[1,905]}),{3:213,4:r,5:a,74:[1,907],129:Je,140:le,141:206,142:he,149:de,153:Q,178:ge,196:207,197:209,198:208,199:211,200:906,206:908,210:He,211:212,283:z,284:Z,285:ee,286:te,293:qe,409:185,410:_e,414:Ve},t(gn,[2,160]),t(gn,[2,161]),t(gn,[2,162]),t(gn,[2,163]),t(gn,[2,164]),{3:391,4:r,5:a},t(We,[2,79],{71:[1,909]}),t(ka,[2,81]),t(ka,[2,82]),{110:910,129:ue,289:De},t([8,69,71,75,90,95,115,121,125,159,165,166,180,195,203,205,219,220,221,222,223,224,225,226,229,242,244,297,301,509,510],nn,{113:Xr}),t(Zr,[2,69]),t(Zr,[2,767]),{3:163,4:r,5:a,55:160,74:ie,91:911,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},t(ra,[2,122]),t(ra,[2,140]),t(ra,[2,141]),t(ra,[2,142]),{3:163,4:r,5:a,55:160,74:ie,75:[2,782],91:255,108:146,110:150,124:912,128:oe,129:ue,134:ce,140:le,141:157,142:he,148:913,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},{74:[1,914]},t(ra,[2,90]),t([4,5,8,69,71,73,74,75,115,119,121,125,126,127,128,129,131,132,134,136,137,140,142,143,145,146,147,149,151,153,159,161,163,165,166,167,168,169,170,172,178,180,182,184,195,273,274,275,276,277,278,279,280,281,297,301,410,414,509,510],[2,92],{111:349,317:361,96:yt,109:St,112:wt,113:Tt,120:xt,130:Ct,133:kt,135:Ot,138:$t,139:Dt,176:Ut,177:Ft,302:Mt,303:_t,305:Vt,306:jt,307:Pt,308:Bt,309:Gt,310:Jt,311:Ht,312:Wt,313:Xt,314:Yt,315:Kt,316:Qt,321:zt,322:Zt,323:en,324:tn}),t([4,5,8,69,71,73,74,75,109,115,119,121,125,126,127,128,129,131,132,134,136,137,140,142,143,145,146,147,149,151,153,159,161,163,165,166,167,168,169,170,172,178,180,182,184,195,273,274,275,276,277,278,279,280,281,297,301,410,414,509,510],[2,93],{111:349,317:361,96:yt,112:wt,113:Tt,120:xt,130:Ct,133:kt,135:Ot,138:$t,139:Dt,176:Ut,177:Ft,302:Mt,303:_t,305:Vt,306:jt,307:Pt,308:Bt,309:Gt,310:Jt,311:Ht,312:Wt,313:Xt,314:Yt,315:Kt,316:Qt,321:zt,322:Zt,323:en,324:tn}),{3:456,4:r,5:a,69:yn,73:Sn,74:wn,75:[1,915],109:Tn,111:459,112:wt,113:Tt,114:916,115:xn,119:An,120:Cn,121:kn,125:On,126:Rn,127:Nn,128:$n,129:Dn,130:In,131:Ln,132:qn,133:Un,134:Fn,135:Mn,136:_n,137:Vn,138:jn,139:Pn,140:Bn,141:481,142:Gn,143:Jn,145:Hn,146:Wn,147:Xn,149:Yn,151:Kn,153:Qn,155:491,157:492,159:zn,161:Zn,163:er,165:tr,166:nr,167:rr,168:ar,169:sr,170:ir,172:or,182:ur,184:cr,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,409:185,410:_e,414:Ve},t(Oa,[2,778],{150:722,176:ea,177:ta,178:na}),{3:456,4:r,5:a,69:yn,73:Sn,74:wn,109:Tn,111:459,112:wt,113:Tt,114:918,115:xn,119:An,120:Cn,121:kn,123:917,125:On,126:Rn,127:Nn,128:$n,129:Dn,130:In,131:Ln,132:qn,133:Un,134:Fn,135:Mn,136:_n,137:Vn,138:jn,139:Pn,140:Bn,141:481,142:Gn,143:Jn,145:Hn,146:Wn,147:Xn,149:Yn,151:Kn,153:Qn,155:491,157:492,159:zn,161:Zn,163:er,165:tr,166:nr,167:rr,168:ar,169:sr,170:ir,172:or,182:ur,184:cr,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,409:185,410:_e,414:Ve},{3:163,4:r,5:a,55:160,74:ie,91:919,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},{3:163,4:r,5:a,55:160,74:ie,91:920,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},{3:921,4:r,5:a},t(ra,[2,106]),t(ra,[2,107]),t(ra,[2,108]),t(ra,[2,115]),{3:922,4:r,5:a},{3:718,4:r,5:a,108:772,140:aa,142:sa,144:923,327:771,328:773},{3:924,4:r,5:a},{3:163,4:r,5:a,55:160,74:ie,91:255,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,148:925,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},t(ra,[2,121]),t(Oa,[2,784],{152:926}),t(Oa,[2,786],{154:927}),t(Oa,[2,788],{156:928}),t(Oa,[2,792],{158:929}),t(Ra,Na,{160:930,175:931}),{74:[1,932]},t(Oa,[2,794],{162:933}),t(Oa,[2,796],{164:934}),t(Ra,Na,{175:931,160:935}),t(Ra,Na,{175:931,160:936}),t(Ra,Na,{175:931,160:937}),t(Ra,Na,{175:931,160:938}),{3:456,4:r,5:a,69:yn,73:Sn,74:wn,109:Tn,111:459,112:wt,113:Tt,114:939,115:xn,119:An,120:Cn,121:kn,125:On,126:Rn,127:Nn,128:$n,129:Dn,130:In,131:Ln,132:qn,133:Un,134:Fn,135:Mn,136:_n,137:Vn,138:jn,139:Pn,140:Bn,141:481,142:Gn,143:Jn,145:Hn,146:Wn,147:Xn,149:Yn,151:Kn,153:Qn,155:491,157:492,159:zn,161:Zn,163:er,165:tr,166:nr,167:rr,168:ar,169:sr,170:ir,172:or,182:ur,184:cr,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,409:185,410:_e,414:Ve},{3:163,4:r,5:a,55:160,74:ie,91:537,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,171:940,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,250:536,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},t($a,[2,798],{173:941}),t(K,[2,591],{180:[1,942]}),t(K,[2,587],{180:[1,943]}),t(K,[2,580]),{110:944,129:ue,289:De},t(K,[2,589],{180:[1,945]}),t(K,[2,584]),t(K,[2,585],{109:[1,946]}),t(lr,[2,65]),{38:947,76:74,86:u,181:99,186:d},t(K,[2,440],{71:Da,125:[1,948]}),t(Ia,[2,441]),{121:[1,950]},{3:951,4:r,5:a},t(je,[2,832]),t(je,[2,833]),t(K,[2,605]),t(fr,[2,347],{111:349,317:361,96:yt,109:St,112:wt,113:Tt,120:xt,121:pr,130:Ct,133:kt,135:Ot,136:Rt,137:Nt,138:$t,139:Dt,151:It,167:Lt,168:qt,176:Ut,177:Ft,302:Mt,303:_t,305:Vt,306:jt,307:Pt,308:Bt,309:Gt,310:Jt,311:Ht,312:Wt,313:Xt,314:Yt,315:Kt,316:Qt,321:zt,322:Zt,323:en,324:tn}),t(va,Ea,{111:349,317:361,109:St,112:wt,113:Tt,120:xt,130:Ct,133:kt,135:Ot,138:$t,139:Dt,176:Ut,177:Ft,302:Mt,303:_t,305:Vt,306:jt,307:Pt,308:Bt,309:Gt,323:en}),t(gt,[2,666]),t(gt,[2,668]),{3:163,4:r,5:a,55:160,74:ie,91:952,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},{111:954,112:wt,113:Tt,121:[1,953]},{3:956,4:r,5:a,74:La,128:qa,423:955},t(fr,[2,739]),t(mr,[2,144],{71:ia}),t(mr,[2,145],{71:ia}),t(mr,[2,146],{71:ia}),{3:163,4:r,5:a,55:160,74:ie,91:537,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,250:959,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},{3:960,4:r,5:a,110:962,128:[1,961],129:ue,289:De},t(oa,[2,271]),t(oa,[2,273]),t(oa,[2,275]),t(tt,[2,156]),t(tt,[2,807]),{75:[1,963]},t(at,[2,742]),{3:964,4:r,5:a},{3:965,4:r,5:a},{3:967,4:r,5:a,374:966},{3:967,4:r,5:a,374:968},{3:969,4:r,5:a},{3:163,4:r,5:a,55:160,74:ie,91:255,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,148:970,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},{3:971,4:r,5:a},{71:dr,75:[1,972]},t(rn,[2,339]),t(rn,[2,340]),{3:163,4:r,5:a,55:160,74:ie,91:973,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z, +285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},{3:163,4:r,5:a,55:160,74:ie,91:974,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},{3:163,4:r,5:a,55:160,74:ie,91:975,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},{3:163,4:r,5:a,55:160,74:ie,91:976,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},t(vr,[2,488]),t(K,Ua,{396:977,73:Fa,74:[1,978]}),t(K,Ua,{396:980,73:Fa}),{74:[1,981]},{3:238,4:r,5:a,196:982},t(fr,[2,715]),t(fr,[2,717]),t(fr,[2,863]),{140:Ze,142:et,421:983},t(Ma,[2,864],{409:185,470:984,141:985,142:Ke,410:_e,414:Ve}),{73:ua,136:[2,868],472:986,474:987},t([8,71,73,75,129,136,142,149,297,301,410,414,509,510],Tr,{481:571,484:572,134:ft}),t(fr,[2,720]),t(fr,Sr),{71:Er,75:[1,988]},t(Ar,[2,882],{483:989,488:990,149:pt}),t(xr,[2,881]),t(Ar,[2,729]),t(Ar,[2,887]),t(K,[2,474],{74:[1,991]}),{73:[1,993],74:[1,992]},{96:yt,109:St,111:349,112:wt,113:Tt,120:xt,121:pr,130:Ct,133:kt,135:Ot,136:Rt,137:Nt,138:$t,139:Dt,145:[1,994],151:It,167:Lt,168:qt,176:Ut,177:Ft,302:Mt,303:_t,305:Vt,306:jt,307:Pt,308:Bt,309:Gt,310:Jt,311:Ht,312:Wt,313:Xt,314:Yt,315:Kt,316:Qt,317:361,321:zt,322:Zt,323:en,324:tn},t(xa,_a,{76:74,181:99,459:995,38:998,86:u,143:Va,186:d,461:ja}),t(ca,[2,857]),t(kr,[2,707]),{227:[1,999]},t(Pa,[2,753]),t(Pa,[2,754]),t(Pa,[2,755]),t(Or,Rr,{501:1e3,92:Nr,505:$r,506:Dr,507:Ir}),t(Or,[2,752]),{3:163,4:r,5:a,55:160,74:ie,91:1001,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},t(gt,[2,674],{121:[1,1002]}),{128:Ba,377:1003,379:Ga},t([4,5,8,51,69,71,73,75,86,90,92,95,96,104,109,112,113,115,119,120,121,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,142,143,145,146,147,149,151,153,159,161,163,165,166,167,168,169,170,172,176,177,178,180,182,184,186,195,203,205,219,220,221,222,223,224,225,226,227,229,236,239,240,242,244,262,273,274,275,276,277,278,279,280,281,283,289,290,297,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,321,322,323,324,326,329,330,333,337,346,358,359,363,364,385,389,390,393,395,397,398,406,407,408,410,414,425,427,428,430,431,432,433,434,438,439,442,443,455,461,496,498,499,508,509,510],[2,526],{74:[1,1006]}),{3:163,4:r,5:a,55:160,74:ie,91:1008,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,334:1007,409:185,410:_e,414:Ve},t(K,[2,445],{111:349,317:361,96:yt,109:St,112:wt,113:Tt,120:xt,121:pr,130:Ct,133:kt,135:Ot,136:Rt,137:Nt,138:$t,139:Dt,151:It,167:Lt,168:qt,176:Ut,177:Ft,302:Mt,303:_t,305:Vt,306:jt,307:Pt,308:Bt,309:Gt,310:Jt,311:Ht,312:Wt,313:Xt,314:Yt,315:Kt,316:Qt,321:zt,322:Zt,323:en,324:tn}),t(K,[2,574]),t(K,[2,575]),{3:238,4:r,5:a,196:1009},t(K,[2,654]),{3:163,4:r,5:a,55:160,74:ie,91:1010,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},{3:163,4:r,5:a,55:160,74:ie,91:1011,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},{75:[1,1012],96:yt,109:St,111:349,112:wt,113:Tt,120:xt,121:pr,130:Ct,133:kt,135:Ot,136:Rt,137:Nt,138:$t,139:Dt,151:It,167:Lt,168:qt,176:Ut,177:Ft,302:Mt,303:_t,305:Vt,306:jt,307:Pt,308:Bt,309:Gt,310:Jt,311:Ht,312:Wt,313:Xt,314:Yt,315:Kt,316:Qt,317:361,321:zt,322:Zt,323:en,324:tn},{75:[1,1013],96:yt,109:St,111:349,112:wt,113:Tt,120:xt,121:pr,130:Ct,133:kt,135:Ot,136:Rt,137:Nt,138:$t,139:Dt,151:It,167:Lt,168:qt,176:Ut,177:Ft,302:Mt,303:_t,305:Vt,306:jt,307:Pt,308:Bt,309:Gt,310:Jt,311:Ht,312:Wt,313:Xt,314:Yt,315:Kt,316:Qt,317:361,321:zt,322:Zt,323:en,324:tn},{3:163,4:r,5:a,38:1014,55:160,74:ie,76:74,86:u,91:255,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,148:1015,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,181:99,186:d,193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},{75:[1,1016]},{71:dr,75:[1,1017]},t(Ye,[2,416]),{3:163,4:r,5:a,55:160,74:ie,91:1018,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},{3:163,4:r,5:a,38:1019,55:160,74:ie,75:[1,1021],76:74,86:u,91:255,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,148:1020,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,181:99,186:d,193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},t(Ye,[2,419]),t(Ye,[2,421]),t(Ye,Ja,{268:1022,269:Ha}),{75:[1,1024],96:yt,109:St,111:349,112:wt,113:Tt,120:xt,121:pr,130:Ct,133:kt,135:Ot,136:Rt,137:Nt,138:$t,139:Dt,151:It,167:Lt,168:qt,176:Ut,177:Ft,302:Mt,303:_t,305:Vt,306:jt,307:Pt,308:Bt,309:Gt,310:Jt,311:Ht,312:Wt,313:Xt,314:Yt,315:Kt,316:Qt,317:361,321:zt,322:Zt,323:en,324:tn},{75:[1,1025],96:yt,109:St,111:349,112:wt,113:Tt,120:xt,121:pr,130:Ct,133:kt,135:Ot,136:Rt,137:Nt,138:$t,139:Dt,151:It,167:Lt,168:qt,176:Ut,177:Ft,302:Mt,303:_t,305:Vt,306:jt,307:Pt,308:Bt,309:Gt,310:Jt,311:Ht,312:Wt,313:Xt,314:Yt,315:Kt,316:Qt,317:361,321:zt,322:Zt,323:en,324:tn},{3:1026,4:r,5:a,177:[1,1027]},t(un,[2,606]),t(Ye,[2,355]),{297:[1,1028]},t(Ye,[2,361]),{96:yt,109:St,111:349,112:wt,113:Tt,120:xt,121:pr,130:Ct,133:kt,135:Ot,136:Rt,137:Nt,138:$t,139:Dt,151:It,167:Lt,168:qt,176:Ut,177:Ft,297:[2,365],302:Mt,303:_t,305:Vt,306:jt,307:Pt,308:Bt,309:Gt,310:Jt,311:Ht,312:Wt,313:Xt,314:Yt,315:Kt,316:Qt,317:361,321:zt,322:Zt,323:en,324:tn},{3:163,4:r,5:a,55:160,74:ie,91:1029,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},{4:Lr,265:1030,378:qr},{3:163,4:r,5:a,55:160,74:ie,91:1031,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},t(un,[2,628]),t(Hr,[2,635]),t(Wr,[2,623]),t(wa,Sa),t(un,[2,625]),t(Kr,[2,630]),t(Kr,[2,632]),t(Kr,[2,633]),t(Kr,[2,634]),t(xa,[2,447],{71:Wa}),{3:163,4:r,5:a,55:160,74:ie,91:1008,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,334:1034,409:185,410:_e,414:Ve},t(Xa,[2,458]),t(Xa,[2,459]),t(xa,[2,450]),{71:Ya,75:[1,1035]},t(Ka,[2,471]),{38:1038,76:74,86:u,146:[1,1037],181:99,186:d},t(xa,[2,449],{71:Wa}),t(K,[2,701],{448:1039,449:1040,450:1041,299:Aa,455:[1,1042]}),t(Qa,[2,685]),t(Qa,[2,686]),{151:[1,1044],451:[1,1043]},{96:yt,109:St,111:349,112:wt,113:Tt,120:xt,121:pr,130:Ct,133:kt,135:Ot,136:Rt,137:Nt,138:$t,139:Dt,151:It,167:Lt,168:qt,176:Ut,177:Ft,299:[2,682],302:Mt,303:_t,305:Vt,306:jt,307:Pt,308:Bt,309:Gt,310:Jt,311:Ht,312:Wt,313:Xt,314:Yt,315:Kt,316:Qt,317:361,321:zt,322:Zt,323:en,324:tn},t(fn,[2,175]),{3:1045,4:r,5:a},t(K,[2,559]),t(za,[2,234],{81:1046,125:[1,1047]}),t(Ca,[2,763]),{74:[1,1048]},{74:[1,1049]},t(Qr,[2,165],{201:1050,212:1052,202:1053,213:1054,218:1057,71:Za,203:es,205:ts,219:ns,220:rs,221:as,222:ss,223:is,224:os,225:us,226:cs}),{3:213,4:r,5:a,38:434,74:Ge,76:74,86:u,129:Je,140:le,141:206,142:he,149:de,153:Q,178:ge,181:99,186:d,196:207,197:209,198:208,199:211,200:1066,206:908,210:He,211:212,283:z,284:Z,285:ee,286:te,293:qe,409:185,410:_e,414:Ve},t(Ka,[2,173]),{3:718,4:r,5:a,107:1067,108:716,109:zr},t(ka,[2,83]),t(Zr,[2,143],{111:349,317:361,96:yt,109:St,112:wt,113:Tt,120:xt,121:pr,130:Ct,133:kt,135:Ot,136:Rt,137:Nt,138:$t,139:Dt,151:It,167:Lt,168:qt,176:Ut,177:Ft,302:Mt,303:_t,305:Vt,306:jt,307:Pt,308:Bt,309:Gt,310:Jt,311:Ht,312:Wt,313:Xt,314:Yt,315:Kt,316:Qt,321:zt,322:Zt,323:en,324:tn}),{75:[1,1068]},{71:dr,75:[2,783]},{3:163,4:r,5:a,55:160,74:ie,75:[2,776],91:1073,108:146,110:150,117:1069,118:1070,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,238:1071,239:[1,1072],251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},t(ra,[2,94]),t(Oa,[2,779],{150:722,176:ea,177:ta,178:na}),{3:456,4:r,5:a,69:yn,73:Sn,74:wn,75:[1,1074],109:Tn,111:459,112:wt,113:Tt,114:1075,115:xn,119:An,120:Cn,121:kn,125:On,126:Rn,127:Nn,128:$n,129:Dn,130:In,131:Ln,132:qn,133:Un,134:Fn,135:Mn,136:_n,137:Vn,138:jn,139:Pn,140:Bn,141:481,142:Gn,143:Jn,145:Hn,146:Wn,147:Xn,149:Yn,151:Kn,153:Qn,155:491,157:492,159:zn,161:Zn,163:er,165:tr,166:nr,167:rr,168:ar,169:sr,170:ir,172:or,182:ur,184:cr,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,409:185,410:_e,414:Ve},t(Oa,[2,780],{150:722,176:ea,177:ta,178:na}),{75:[1,1076],96:yt,109:St,111:349,112:wt,113:Tt,120:xt,121:pr,130:Ct,133:kt,135:Ot,136:Rt,137:Nt,138:$t,139:Dt,151:It,167:Lt,168:qt,176:Ut,177:Ft,302:Mt,303:_t,305:Vt,306:jt,307:Pt,308:Bt,309:Gt,310:Jt,311:Ht,312:Wt,313:Xt,314:Yt,315:Kt,316:Qt,317:361,321:zt,322:Zt,323:en,324:tn},{75:[1,1077],96:yt,109:St,111:349,112:wt,113:Tt,120:xt,121:pr,130:Ct,133:kt,135:Ot,136:Rt,137:Nt,138:$t,139:Dt,151:It,167:Lt,168:qt,176:Ut,177:Ft,302:Mt,303:_t,305:Vt,306:jt,307:Pt,308:Bt,309:Gt,310:Jt,311:Ht,312:Wt,313:Xt,314:Yt,315:Kt,316:Qt,317:361,321:zt,322:Zt,323:en,324:tn},{75:[1,1078]},t(ra,[2,116]),{71:Da,75:[1,1079]},t(ra,[2,118]),{71:dr,75:[1,1080]},{3:456,4:r,5:a,69:yn,73:Sn,74:wn,75:[1,1081],109:Tn,111:459,112:wt,113:Tt,114:1082,115:xn,119:An,120:Cn,121:kn,125:On,126:Rn,127:Nn,128:$n,129:Dn,130:In,131:Ln,132:qn,133:Un,134:Fn,135:Mn,136:_n,137:Vn,138:jn,139:Pn,140:Bn,141:481,142:Gn,143:Jn,145:Hn,146:Wn,147:Xn,149:Yn,151:Kn,153:Qn,155:491,157:492,159:zn,161:Zn,163:er,165:tr,166:nr,167:rr,168:ar,169:sr,170:ir,172:or,182:ur,184:cr,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,409:185,410:_e,414:Ve},{3:456,4:r,5:a,69:yn,73:Sn,74:wn,75:[1,1083],109:Tn,111:459,112:wt,113:Tt,114:1084,115:xn,119:An,120:Cn,121:kn,125:On,126:Rn,127:Nn,128:$n,129:Dn,130:In,131:Ln,132:qn,133:Un,134:Fn,135:Mn,136:_n,137:Vn,138:jn,139:Pn,140:Bn,141:481,142:Gn,143:Jn,145:Hn,146:Wn,147:Xn,149:Yn,151:Kn,153:Qn,155:491,157:492,159:zn,161:Zn,163:er,165:tr,166:nr,167:rr,168:ar,169:sr,170:ir,172:or,182:ur,184:cr,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,409:185,410:_e,414:Ve},{3:456,4:r,5:a,69:yn,73:Sn,74:wn,75:[1,1085],109:Tn,111:459,112:wt,113:Tt,114:1086,115:xn,119:An,120:Cn,121:kn,125:On,126:Rn,127:Nn,128:$n,129:Dn,130:In,131:Ln,132:qn,133:Un,134:Fn,135:Mn,136:_n,137:Vn,138:jn,139:Pn,140:Bn,141:481,142:Gn,143:Jn,145:Hn,146:Wn,147:Xn,149:Yn,151:Kn,153:Qn,155:491,157:492,159:zn,161:Zn,163:er,165:tr,166:nr,167:rr,168:ar,169:sr,170:ir,172:or,182:ur,184:cr,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,409:185,410:_e,414:Ve},{3:456,4:r,5:a,69:yn,73:Sn,74:wn,75:[1,1087],109:Tn,111:459,112:wt,113:Tt,114:1088,115:xn,119:An,120:Cn,121:kn,125:On,126:Rn,127:Nn,128:$n,129:Dn,130:In,131:Ln,132:qn,133:Un,134:Fn,135:Mn,136:_n,137:Vn,138:jn,139:Pn,140:Bn,141:481,142:Gn,143:Jn,145:Hn,146:Wn,147:Xn,149:Yn,151:Kn,153:Qn,155:491,157:492,159:zn,161:Zn,163:er,165:tr,166:nr,167:rr,168:ar,169:sr,170:ir,172:or,182:ur,184:cr,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,409:185,410:_e,414:Ve},{71:ls,75:[1,1089]},t(hs,[2,139],{409:185,3:456,111:459,141:481,155:491,157:492,114:1091,4:r,5:a,69:yn,73:Sn,74:wn,109:Tn,112:wt,113:Tt,115:xn,119:An,120:Cn,121:kn,125:On,126:Rn,127:Nn,128:$n,129:Dn,130:In,131:Ln,132:qn,133:Un,134:Fn,135:Mn,136:_n,137:Vn,138:jn,139:Pn,140:Bn,142:Gn,143:Jn,145:Hn,146:Wn,147:Xn,149:Yn,151:Kn,153:Qn,159:zn,161:Zn,163:er,165:tr,166:nr,167:rr,168:ar,169:sr,170:ir,172:or,182:ur,184:cr,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,410:_e,414:Ve}),t(Ra,Na,{175:931,160:1092}),{3:456,4:r,5:a,69:yn,73:Sn,74:wn,75:[1,1093],109:Tn,111:459,112:wt,113:Tt,114:1094,115:xn,119:An,120:Cn,121:kn,125:On,126:Rn,127:Nn,128:$n,129:Dn,130:In,131:Ln,132:qn,133:Un,134:Fn,135:Mn,136:_n,137:Vn,138:jn,139:Pn,140:Bn,141:481,142:Gn,143:Jn,145:Hn,146:Wn,147:Xn,149:Yn,151:Kn,153:Qn,155:491,157:492,159:zn,161:Zn,163:er,165:tr,166:nr,167:rr,168:ar,169:sr,170:ir,172:or,182:ur,184:cr,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,409:185,410:_e,414:Ve},{3:456,4:r,5:a,69:yn,73:Sn,74:wn,75:[1,1095],109:Tn,111:459,112:wt,113:Tt,114:1096,115:xn,119:An,120:Cn,121:kn,125:On,126:Rn,127:Nn,128:$n,129:Dn,130:In,131:Ln,132:qn,133:Un,134:Fn,135:Mn,136:_n,137:Vn,138:jn,139:Pn,140:Bn,141:481,142:Gn,143:Jn,145:Hn,146:Wn,147:Xn,149:Yn,151:Kn,153:Qn,155:491,157:492,159:zn,161:Zn,163:er,165:tr,166:nr,167:rr,168:ar,169:sr,170:ir,172:or,182:ur,184:cr,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,409:185,410:_e,414:Ve},{71:ls,75:[1,1097]},{71:ls,75:[1,1098]},{71:ls,75:[1,1099]},{71:ls,75:[1,1100]},{75:[1,1101],150:722,176:ea,177:ta,178:na},{71:ia,75:[1,1102]},{3:456,4:r,5:a,69:yn,71:[1,1103],73:Sn,74:wn,109:Tn,111:459,112:wt,113:Tt,114:1104,115:xn,119:An,120:Cn,121:kn,125:On,126:Rn,127:Nn,128:$n,129:Dn,130:In,131:Ln,132:qn,133:Un,134:Fn,135:Mn,136:_n,137:Vn,138:jn,139:Pn,140:Bn,141:481,142:Gn,143:Jn,145:Hn,146:Wn,147:Xn,149:Yn,151:Kn,153:Qn,155:491,157:492,159:zn,161:Zn,163:er,165:tr,166:nr,167:rr,168:ar,169:sr,170:ir,172:or,182:ur,184:cr,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,409:185,410:_e,414:Ve},{3:1105,4:r,5:a},{3:1106,4:r,5:a},t(K,[2,582]),{3:1107,4:r,5:a},{110:1108,129:ue,289:De},{75:[1,1109]},{3:163,4:r,5:a,55:160,74:ie,91:1110,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},{3:718,4:r,5:a,108:772,140:aa,142:sa,327:1111,328:773},{3:163,4:r,5:a,55:160,74:ie,91:1112,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},{121:[1,1113]},t(K,[2,638],{111:349,317:361,96:yt,109:St,112:wt,113:Tt,120:xt,121:pr,130:Ct,133:kt,135:Ot,136:Rt,137:Nt,138:$t,139:Dt,151:It,167:Lt,168:qt,176:Ut,177:Ft,302:Mt,303:_t,305:Vt,306:jt,307:Pt,308:Bt,309:Gt,310:Jt,311:Ht,312:Wt,313:Xt,314:Yt,315:Kt,316:Qt,321:zt,322:Zt,323:en,324:tn}),{3:163,4:r,5:a,55:160,74:ie,91:1114,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},{3:956,4:r,5:a,74:La,128:qa,423:1115},t(ds,[2,643]),t(ds,[2,644]),t(ds,[2,645]),{3:163,4:r,5:a,55:160,74:ie,91:1116,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},t(oa,[2,268]),t(oa,[2,270]),t(oa,[2,272]),t(oa,[2,274]),t(tt,[2,157]),t(K,[2,554]),{145:[1,1117]},t(K,[2,555]),t(fr,[2,520],{265:1118,4:Lr,376:[1,1119],378:qr}),t(K,[2,556]),t(K,[2,558]),{71:dr,75:[1,1120]},t(K,[2,562]),t(rn,[2,337]),{71:[1,1121],96:yt,109:St,111:349,112:wt,113:Tt,120:xt,121:pr,130:Ct,133:kt,135:Ot,136:Rt,137:Nt,138:$t,139:Dt,151:It,167:Lt,168:qt,176:Ut,177:Ft,302:Mt,303:_t,305:Vt,306:jt,307:Pt,308:Bt,309:Gt,310:Jt,311:Ht,312:Wt,313:Xt,314:Yt,315:Kt,316:Qt,317:361,321:zt,322:Zt,323:en,324:tn},{71:[1,1122],96:yt,109:St,111:349,112:wt,113:Tt,120:xt,121:pr,130:Ct,133:kt,135:Ot,136:Rt,137:Nt,138:$t,139:Dt,151:It,167:Lt,168:qt,176:Ut,177:Ft,302:Mt,303:_t,305:Vt,306:jt,307:Pt,308:Bt,309:Gt,310:Jt,311:Ht,312:Wt,313:Xt,314:Yt,315:Kt,316:Qt,317:361,321:zt,322:Zt,323:en,324:tn},{71:[1,1123],96:yt,109:St,111:349,112:wt,113:Tt,120:xt,121:pr,130:Ct,133:kt,135:Ot,136:Rt,137:Nt,138:$t,139:Dt,151:It,167:Lt,168:qt,176:Ut,177:Ft,302:Mt,303:_t,305:Vt,306:jt,307:Pt,308:Bt,309:Gt,310:Jt,311:Ht,312:Wt,313:Xt,314:Yt,315:Kt,316:Qt,317:361,321:zt,322:Zt,323:en,324:tn},{71:[1,1124],96:yt,109:St,111:349,112:wt,113:Tt,120:xt,121:pr,130:Ct,133:kt,135:Ot,136:Rt,137:Nt,138:$t,139:Dt,151:It,167:Lt,168:qt,176:Ut,177:Ft,302:Mt,303:_t,305:Vt,306:jt,307:Pt,308:Bt,309:Gt,310:Jt,311:Ht,312:Wt,313:Xt,314:Yt,315:Kt,316:Qt,317:361,321:zt,322:Zt,323:en,324:tn},t(K,[2,566]),{3:163,4:r,5:a,55:160,74:ie,91:255,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,148:1125,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},{3:1126,4:r,5:a},t(K,[2,568]),{3:163,4:r,5:a,55:160,74:ie,91:1073,108:146,110:150,117:1127,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,238:1071,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},{74:[1,1128]},{3:1129,4:r,5:a},{73:ua,136:[2,866],471:1130,474:1131},t(Ma,[2,865]),{136:[1,1132]},{136:[2,869]},t(fr,[2,721]),t(Ar,[2,728]),t(Ar,[2,883]),{3:967,4:r,5:a,73:[1,1135],341:1133,348:1134,374:1136},{3:718,4:r,5:a,97:1137,108:891},{38:1138,76:74,86:u,181:99,186:d},{3:163,4:r,5:a,55:160,74:ie,91:1139,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},t(xa,[2,706]),{3:718,4:r,5:a,108:772,140:aa,142:sa,144:1140,327:771,328:773},{3:163,4:r,5:a,55:160,74:ie,91:255,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,148:1141,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},t(xa,[2,711]),{3:238,4:r,5:a,196:1142},{326:la,329:ha,330:da,502:1143},t(gt,[2,675],{111:349,317:361,96:yt,109:St,112:wt,113:Tt,120:xt,121:pr,130:Ct,133:kt,135:Ot,136:Rt,137:Nt,138:$t,139:Dt,151:It,167:Lt,168:qt,176:Ut,177:Ft,302:Mt,303:_t,305:Vt,306:jt,307:Pt,308:Bt,309:Gt,310:Jt,311:Ht,312:Wt,313:Xt,314:Yt,315:Kt,316:Qt,321:zt,322:Zt,323:en,324:tn}),{3:163,4:r,5:a,55:160,74:ie,91:1144,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},{71:[1,1145],75:[1,1146]},t(hs,[2,528]),t(hs,[2,529]),{128:Ba,377:1147,379:Ga},{71:fs,75:[1,1148]},t(hs,[2,463],{111:349,317:361,96:yt,109:St,112:wt,113:Tt,120:xt,121:pr,130:Ct,133:kt,135:Ot,136:Rt,137:Nt,138:$t,139:Dt,151:It,167:Lt,168:qt,176:Ut,177:Ft,302:Mt,303:_t,305:Vt,306:jt,307:Pt,308:Bt,309:Gt,310:Jt,311:Ht,312:Wt,313:Xt,314:Yt,315:Kt,316:Qt,321:zt,322:Zt,323:en,324:tn}),t(gt,[2,550]),t(pa,[2,370],{111:349,317:361,112:wt,113:Tt,120:xt,130:Ct,133:kt,135:Ot,138:$t,139:Dt,176:Ut,177:Ft,306:jt,307:Pt,308:Bt,309:Gt}),t(pa,[2,372],{111:349,317:361,112:wt,113:Tt,120:xt,130:Ct,133:kt,135:Ot,138:$t,139:Dt,176:Ut,177:Ft,306:jt,307:Pt,308:Bt,309:Gt}),t(Ye,[2,386]),t(Ye,[2,390]),{75:[1,1150]},{71:dr,75:[1,1151]},t(Ye,[2,412]),t(Ye,[2,414]),{75:[1,1152],96:yt,109:St,111:349,112:wt,113:Tt,120:xt,121:pr,130:Ct,133:kt,135:Ot,136:Rt,137:Nt,138:$t,139:Dt,151:It,167:Lt,168:qt,176:Ut,177:Ft,302:Mt,303:_t,305:Vt,306:jt,307:Pt,308:Bt,309:Gt,310:Jt,311:Ht,312:Wt,313:Xt,314:Yt,315:Kt,316:Qt,317:361,321:zt,322:Zt,323:en,324:tn},{75:[1,1153]},{71:dr,75:[1,1154]},t(Ye,[2,417]),t(Ye,[2,319]),{74:[1,1155]},t(Ye,Ja,{268:1156,269:Ha}),t(Ye,Ja,{268:1157,269:Ha}),t(wa,[2,280]),t(Ye,[2,277]),t(Ye,[2,360]),t(Jr,[2,364],{111:349,317:361,96:yt,109:St,112:wt,113:Tt,120:xt,121:pr,130:Ct,133:kt,135:Ot,136:Rt,137:Nt,138:$t,139:Dt,151:It,167:Lt,168:qt,176:Ut,177:Ft,302:Mt,303:_t,305:Vt,306:jt,307:Pt,308:Bt,309:Gt,310:Jt,311:Ht,312:Wt,313:Xt,314:Yt,315:Kt,316:Qt,321:zt,322:Zt,323:en,324:tn}),{71:[1,1159],75:[1,1158]},{71:[1,1161],75:[1,1160],96:yt,109:St,111:349,112:wt,113:Tt,120:xt,121:pr,130:Ct,133:kt,135:Ot,136:Rt,137:Nt,138:$t,139:Dt,151:It,167:Lt,168:qt,176:Ut,177:Ft,302:Mt,303:_t,305:Vt,306:jt,307:Pt,308:Bt,309:Gt,310:Jt,311:Ht,312:Wt,313:Xt,314:Yt,315:Kt,316:Qt,317:361,321:zt,322:Zt,323:en,324:tn},{3:1026,4:r,5:a},{74:[1,1162],140:le,141:1163,142:Ke,149:de,178:ge,198:1164,293:qe,409:185,410:_e,414:Ve},{71:fs,75:[1,1165]},{38:1167,76:74,86:u,146:[1,1166],181:99,186:d},{3:718,4:r,5:a,108:1168},{74:Ta,140:le,141:887,142:Ke,149:de,178:ge,198:888,293:qe,332:1169,409:185,410:_e,414:Ve},t(xa,[2,453]),t(K,[2,678]),t(Qa,[2,683]),t(Qa,[2,684]),{3:163,4:r,5:a,55:160,74:ie,91:537,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,171:1170,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,250:536,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},{167:[1,1172],300:[1,1171]},{451:[1,1173]},t(fn,[2,176]),t(ps,[2,236],{82:1174,229:[1,1175]}),{3:163,4:r,5:a,55:160,74:ie,91:1176,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},{3:163,4:r,5:a,55:160,74:ie,91:1177,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},{3:1178,4:r,5:a},t(Qr,[2,166],{213:1054,218:1057,212:1179,202:1180,203:es,205:ts,219:ns,220:rs,221:as,222:ss,223:is,224:os,225:us,226:cs}),{3:213,4:r,5:a,74:Ge,129:Je,140:le,141:206,142:he,149:de,153:Q,178:ge,196:207,197:209,198:208,199:211,206:1181,210:He,211:212,283:z,284:Z,285:ee,286:te,293:qe,409:185,410:_e,414:Ve},t(bs,[2,201]),t(bs,[2,202]),{3:213,4:r,5:a,74:[1,1186],140:le,141:1184,142:he,149:de,153:Q,178:ge,196:1183,197:1187,198:1185,199:1188,214:1182,283:z,284:Z,285:ee,286:te,293:qe,409:185,410:_e,414:Ve},{204:[1,1189],220:gs},{204:[1,1191],220:ms},t(vs,[2,218]),{203:[1,1195],205:[1,1194],218:1193,220:rs,221:as,222:ss,223:is,224:os,225:us,226:cs},t(vs,[2,220]),{220:[1,1196]},{205:[1,1198],220:[1,1197]},{205:[1,1200],220:[1,1199]},{205:[1,1201]},{220:[1,1202]},{220:[1,1203]},{71:Za,201:1204,202:1053,203:es,205:ts,212:1052,213:1054,218:1057,219:ns,220:rs,221:as,222:ss,223:is,224:os,225:us,226:cs},t(ka,[2,80]),t(ra,[2,96]),{71:Es,75:[1,1205]},{75:[1,1207]},t(ys,[2,257]),{75:[2,777]},t(ys,[2,259],{111:349,317:361,96:yt,109:St,112:wt,113:Tt,120:xt,121:pr,130:Ct,133:kt,135:Ot,136:Rt,137:Nt,138:$t,139:Dt,151:It,167:Lt,168:qt,176:Ut,177:Ft,239:[1,1208],240:[1,1209],302:Mt,303:_t,305:Vt,306:jt,307:Pt,308:Bt,309:Gt,310:Jt,311:Ht,312:Wt,313:Xt,314:Yt,315:Kt,316:Qt,321:zt,322:Zt,323:en,324:tn}),t(ra,[2,95]),t(Oa,[2,781],{150:722,176:ea,177:ta,178:na}),t(ra,[2,97]),t(ra,[2,98]),t(ra,[2,99]),t(ra,[2,117]),t(ra,[2,120]),t(ra,[2,123]),t(Oa,[2,785],{150:722,176:ea,177:ta,178:na}),t(ra,[2,124]),t(Oa,[2,787],{150:722,176:ea,177:ta,178:na}),t(ra,[2,125]),t(Oa,[2,789],{150:722,176:ea,177:ta,178:na}),t(ra,[2,126]),t(Oa,[2,793],{150:722,176:ea,177:ta,178:na}),t(ra,[2,127]),t(Ra,[2,800],{174:1210}),t(Ra,[2,803],{150:722,176:ea,177:ta,178:na}),{71:ls,75:[1,1211]},t(ra,[2,129]),t(Oa,[2,795],{150:722,176:ea,177:ta,178:na}),t(ra,[2,130]),t(Oa,[2,797],{150:722,176:ea,177:ta,178:na}),t(ra,[2,131]),t(ra,[2,132]),t(ra,[2,133]),t(ra,[2,134]),t(ra,[2,135]),t(ra,[2,136]),{3:163,4:r,5:a,55:160,74:ie,91:255,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,148:1212,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},t($a,[2,799],{150:722,176:ea,177:ta,178:na}),t(K,[2,592]),t(K,[2,588]),t(K,[2,590]),t(K,[2,586]),t(lr,[2,67]),t(K,[2,439],{111:349,317:361,96:yt,109:St,112:wt,113:Tt,120:xt,121:pr,130:Ct,133:kt,135:Ot,136:Rt,137:Nt,138:$t,139:Dt,151:It,167:Lt,168:qt,176:Ut,177:Ft,302:Mt,303:_t,305:Vt,306:jt,307:Pt,308:Bt,309:Gt,310:Jt,311:Ht,312:Wt,313:Xt,314:Yt,315:Kt,316:Qt,321:zt,322:Zt,323:en,324:tn}),t(Ia,[2,442]),t(Ia,[2,443],{111:349,317:361,96:yt,109:St,112:wt,113:Tt,120:xt,121:pr,130:Ct,133:kt,135:Ot,136:Rt,137:Nt,138:$t,139:Dt,151:It,167:Lt,168:qt,176:Ut,177:Ft,302:Mt,303:_t,305:Vt,306:jt,307:Pt,308:Bt,309:Gt,310:Jt,311:Ht,312:Wt,313:Xt,314:Yt,315:Kt,316:Qt,321:zt,322:Zt,323:en,324:tn}),{3:163,4:r,5:a,55:160,74:ie,91:1213,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},t(K,[2,639],{111:349,317:361,96:yt,109:St,112:wt,113:Tt,120:xt,121:pr,130:Ct,133:kt,135:Ot,136:Rt,137:Nt,138:$t,139:Dt,151:It,167:Lt,168:qt,176:Ut,177:Ft,302:Mt,303:_t,305:Vt,306:jt,307:Pt,308:Bt,309:Gt,310:Jt,311:Ht,312:Wt,313:Xt,314:Yt,315:Kt,316:Qt,321:zt,322:Zt,323:en,324:tn}),t(ds,[2,642]),{75:[1,1214],96:yt,109:St,111:349,112:wt,113:Tt,120:xt,121:pr,130:Ct,133:kt,135:Ot,136:Rt,137:Nt,138:$t,139:Dt,151:It,167:Lt,168:qt,176:Ut,177:Ft,302:Mt,303:_t,305:Vt,306:jt,307:Pt,308:Bt,309:Gt,310:Jt,311:Ht,312:Wt,313:Xt,314:Yt,315:Kt,316:Qt,317:361,321:zt,322:Zt,323:en,324:tn},{3:1215,4:r,5:a},t(fr,[2,530],{375:1216,380:1217,381:1218,356:1226,151:Ss,184:ws,227:Ts,290:xs,333:As,346:Cs,358:ks,359:Os,363:Rs,364:Ns}),t(fr,[2,519]),t(K,[2,561],{73:[1,1230]}),{3:163,4:r,5:a,55:160,74:ie,91:1231,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144, +198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},{3:163,4:r,5:a,55:160,74:ie,91:1232,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},{3:163,4:r,5:a,55:160,74:ie,91:1233,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},{3:163,4:r,5:a,55:160,74:ie,91:1234,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},{71:dr,75:[1,1235]},t(K,[2,570]),{71:Es,75:[1,1236]},{3:163,4:r,5:a,55:160,74:ie,91:1073,108:146,110:150,117:1237,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,238:1071,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},t([8,71,75,136,297,301,509,510],[2,725]),{136:[1,1238]},{136:[2,867]},{3:822,4:r,5:a,129:dt,134:ft,140:Ze,142:et,149:pt,421:312,466:824,469:1239,473:309,484:306,488:308},{75:[1,1240]},{71:[1,1241],75:[2,490]},{38:1242,76:74,86:u,181:99,186:d},t(hs,[2,516]),{71:Ya,75:[1,1243]},t(K,[2,850],{401:1244,402:1245,69:$s}),t(xa,_a,{76:74,181:99,111:349,317:361,38:998,459:1247,86:u,96:yt,109:St,112:wt,113:Tt,120:xt,121:pr,130:Ct,133:kt,135:Ot,136:Rt,137:Nt,138:$t,139:Dt,143:Va,151:It,167:Lt,168:qt,176:Ut,177:Ft,186:d,302:Mt,303:_t,305:Vt,306:jt,307:Pt,308:Bt,309:Gt,310:Jt,311:Ht,312:Wt,313:Xt,314:Yt,315:Kt,316:Qt,321:zt,322:Zt,323:en,324:tn,461:ja}),t(xa,[2,709],{71:Da}),t(xa,[2,710],{71:dr}),t([8,51,69,86,121,143,153,186,262,283,297,301,326,329,330,337,385,389,390,393,395,397,398,406,407,408,425,427,428,430,431,432,433,434,438,439,442,443,496,498,499,508,509,510],[2,898],{503:1248,3:1249,4:r,5:a,73:[1,1250]}),t(Ds,[2,900],{504:1251,73:[1,1252]}),t(gt,[2,676],{111:349,317:361,96:yt,109:St,112:wt,113:Tt,120:xt,121:pr,130:Ct,133:kt,135:Ot,136:Rt,137:Nt,138:$t,139:Dt,151:It,167:Lt,168:qt,176:Ut,177:Ft,302:Mt,303:_t,305:Vt,306:jt,307:Pt,308:Bt,309:Gt,310:Jt,311:Ht,312:Wt,313:Xt,314:Yt,315:Kt,316:Qt,321:zt,322:Zt,323:en,324:tn}),{128:[1,1253]},t(Is,[2,523]),{71:[1,1254],75:[1,1255]},t(Is,[2,527]),{3:163,4:r,5:a,55:160,74:ie,91:1256,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},t(Ye,[2,402]),t(Ye,[2,403]),t(Ye,[2,429]),t(Ye,[2,413]),t(Ye,[2,415]),{115:Ls,270:1257,271:1258,272:[1,1259]},t(Ye,[2,320]),t(Ye,[2,321]),t(Ye,[2,308]),{128:[1,1261]},t(Ye,[2,310]),{128:[1,1262]},{3:163,4:r,5:a,55:160,74:ie,91:1008,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,334:1263,409:185,410:_e,414:Ve},t(Xa,[2,461]),t(Xa,[2,462]),t(Xa,[2,457]),{74:Ta,140:le,141:887,142:Ke,149:de,178:ge,198:888,293:qe,332:1264,409:185,410:_e,414:Ve},t(xa,[2,454]),t(Ka,[2,472]),t(xa,[2,448],{71:Wa}),t(K,[2,702],{71:ia,195:[1,1265]}),{326:qs,329:Us,452:1266},{3:163,4:r,5:a,55:160,74:ie,91:1269,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},{116:[1,1271],167:[1,1272],300:[1,1270]},t(Fs,[2,255],{83:1273,115:[1,1274]}),{116:[1,1275]},t(za,[2,235],{111:349,317:361,96:yt,109:St,112:wt,113:Tt,120:xt,121:pr,130:Ct,133:kt,135:Ot,136:Rt,137:Nt,138:$t,139:Dt,151:It,167:Lt,168:qt,176:Ut,177:Ft,302:Mt,303:_t,305:Vt,306:jt,307:Pt,308:Bt,309:Gt,310:Jt,311:Ht,312:Wt,313:Xt,314:Yt,315:Kt,316:Qt,321:zt,322:Zt,323:en,324:tn}),{92:[1,1276],96:yt,109:St,111:349,112:wt,113:Tt,120:xt,121:pr,130:Ct,133:kt,135:Ot,136:Rt,137:Nt,138:$t,139:Dt,151:It,167:Lt,168:qt,176:Ut,177:Ft,302:Mt,303:_t,305:Vt,306:jt,307:Pt,308:Bt,309:Gt,310:Jt,311:Ht,312:Wt,313:Xt,314:Yt,315:Kt,316:Qt,317:361,321:zt,322:Zt,323:en,324:tn},{92:[1,1277]},t(bs,[2,199]),t(bs,[2,200]),t(Ka,[2,174]),t(bs,[2,233],{215:1278,227:[1,1279],228:[1,1280]}),t(Ms,[2,204],{3:1281,4:r,5:a,73:[1,1282]}),t(_s,[2,812],{216:1283,73:[1,1284]}),{3:1285,4:r,5:a,73:[1,1286]},{38:1287,76:74,86:u,181:99,186:d},t(Ms,[2,212],{3:1288,4:r,5:a,73:[1,1289]}),t(Ms,[2,215],{3:1290,4:r,5:a,73:[1,1291]}),{74:[1,1292]},t(vs,[2,230]),{74:[1,1293]},t(vs,[2,226]),t(vs,[2,219]),{220:ms},{220:gs},t(vs,[2,221]),t(vs,[2,222]),{220:[1,1294]},t(vs,[2,224]),{220:[1,1295]},{220:[1,1296]},t(vs,[2,228]),t(vs,[2,229]),{75:[1,1297],202:1180,203:es,205:ts,212:1179,213:1054,218:1057,219:ns,220:rs,221:as,222:ss,223:is,224:os,225:us,226:cs},t(ra,[2,87]),{3:163,4:r,5:a,55:160,74:ie,91:1073,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,238:1298,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},t(ra,[2,88]),t(ys,[2,260]),{241:[1,1299]},t(hs,[2,138],{409:185,3:456,111:459,141:481,155:491,157:492,114:1300,4:r,5:a,69:yn,73:Sn,74:wn,109:Tn,112:wt,113:Tt,115:xn,119:An,120:Cn,121:kn,125:On,126:Rn,127:Nn,128:$n,129:Dn,130:In,131:Ln,132:qn,133:Un,134:Fn,135:Mn,136:_n,137:Vn,138:jn,139:Pn,140:Bn,142:Gn,143:Jn,145:Hn,146:Wn,147:Xn,149:Yn,151:Kn,153:Qn,159:zn,161:Zn,163:er,165:tr,166:nr,167:rr,168:ar,169:sr,170:ir,172:or,182:ur,184:cr,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,410:_e,414:Ve}),t(ra,[2,128]),{71:dr,75:[1,1301]},t(Ia,[2,444],{111:349,317:361,96:yt,109:St,112:wt,113:Tt,120:xt,121:pr,130:Ct,133:kt,135:Ot,136:Rt,137:Nt,138:$t,139:Dt,151:It,167:Lt,168:qt,176:Ut,177:Ft,302:Mt,303:_t,305:Vt,306:jt,307:Pt,308:Bt,309:Gt,310:Jt,311:Ht,312:Wt,313:Xt,314:Yt,315:Kt,316:Qt,321:zt,322:Zt,323:en,324:tn}),t(ds,[2,646]),t(K,[2,557]),t(fr,[2,518]),t(fr,[2,531],{356:1226,381:1302,151:Ss,184:ws,227:Ts,290:xs,333:As,346:Cs,358:ks,359:Os,363:Rs,364:Ns}),t(hr,[2,533]),{360:[1,1303]},{360:[1,1304]},{3:238,4:r,5:a,196:1305},t(hr,[2,539],{74:[1,1306]}),{3:113,4:r,5:a,74:[1,1308],110:246,128:oe,129:ue,140:le,149:de,153:Q,178:ge,193:245,197:1309,198:249,254:247,255:248,261:Qe,267:1307,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,293:qe},t(hr,[2,543]),{290:[1,1310]},t(hr,[2,545]),t(hr,[2,546]),{326:[1,1311]},{74:[1,1312]},{3:1313,4:r,5:a},{75:[1,1314],96:yt,109:St,111:349,112:wt,113:Tt,120:xt,121:pr,130:Ct,133:kt,135:Ot,136:Rt,137:Nt,138:$t,139:Dt,151:It,167:Lt,168:qt,176:Ut,177:Ft,302:Mt,303:_t,305:Vt,306:jt,307:Pt,308:Bt,309:Gt,310:Jt,311:Ht,312:Wt,313:Xt,314:Yt,315:Kt,316:Qt,317:361,321:zt,322:Zt,323:en,324:tn},{75:[1,1315],96:yt,109:St,111:349,112:wt,113:Tt,120:xt,121:pr,130:Ct,133:kt,135:Ot,136:Rt,137:Nt,138:$t,139:Dt,151:It,167:Lt,168:qt,176:Ut,177:Ft,302:Mt,303:_t,305:Vt,306:jt,307:Pt,308:Bt,309:Gt,310:Jt,311:Ht,312:Wt,313:Xt,314:Yt,315:Kt,316:Qt,317:361,321:zt,322:Zt,323:en,324:tn},{75:[1,1316],96:yt,109:St,111:349,112:wt,113:Tt,120:xt,121:pr,130:Ct,133:kt,135:Ot,136:Rt,137:Nt,138:$t,139:Dt,151:It,167:Lt,168:qt,176:Ut,177:Ft,302:Mt,303:_t,305:Vt,306:jt,307:Pt,308:Bt,309:Gt,310:Jt,311:Ht,312:Wt,313:Xt,314:Yt,315:Kt,316:Qt,317:361,321:zt,322:Zt,323:en,324:tn},{75:[1,1317],96:yt,109:St,111:349,112:wt,113:Tt,120:xt,121:pr,130:Ct,133:kt,135:Ot,136:Rt,137:Nt,138:$t,139:Dt,151:It,167:Lt,168:qt,176:Ut,177:Ft,302:Mt,303:_t,305:Vt,306:jt,307:Pt,308:Bt,309:Gt,310:Jt,311:Ht,312:Wt,313:Xt,314:Yt,315:Kt,316:Qt,317:361,321:zt,322:Zt,323:en,324:tn},t(K,Ua,{396:1318,73:Fa}),t(K,[2,576]),{71:Es,75:[1,1319]},{3:822,4:r,5:a,129:dt,134:ft,140:Ze,142:et,149:pt,421:312,466:824,469:1320,473:309,484:306,488:308},t(fr,[2,719]),t(K,[2,477],{342:1321,344:1322,345:1323,4:Vs,240:js,333:Ps,346:Bs}),t(Gs,Js,{3:967,349:1328,374:1329,350:1330,351:1331,4:r,5:a,357:Hs}),{75:[2,491]},{73:[1,1333]},t(K,[2,594]),t(K,[2,851]),{358:[1,1335],403:[1,1334]},t(xa,[2,712]),t(K,n,{15:5,16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:23,33:24,34:25,35:26,36:27,37:28,38:29,39:30,40:31,41:32,42:33,43:34,44:35,45:36,46:37,47:38,48:39,49:40,50:41,52:43,53:44,54:45,55:46,56:47,57:48,58:49,59:50,60:51,61:52,62:53,63:54,64:55,65:56,66:57,67:58,68:59,76:74,495:95,181:99,3:100,10:1336,4:r,5:a,51:i,69:o,86:u,121:c,143:l,153:h,186:d,262:f,283:p,326:b,329:g,330:m,337:v,385:E,389:y,390:S,393:T,395:x,397:A,398:C,406:k,407:O,408:N,425:$,427:D,428:I,430:L,431:q,432:U,433:F,434:M,438:_,439:V,442:j,443:P,496:B,498:G,499:J,508:H}),t(K,[2,746]),t(Ds,[2,899]),t(K,n,{15:5,16:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:23,33:24,34:25,35:26,36:27,37:28,38:29,39:30,40:31,41:32,42:33,43:34,44:35,45:36,46:37,47:38,48:39,49:40,50:41,52:43,53:44,54:45,55:46,56:47,57:48,58:49,59:50,60:51,61:52,62:53,63:54,64:55,65:56,66:57,67:58,68:59,76:74,495:95,181:99,3:100,10:1337,4:r,5:a,51:i,69:o,86:u,121:c,143:l,153:h,186:d,262:f,283:p,326:b,329:g,330:m,337:v,385:E,389:y,390:S,393:T,395:x,397:A,398:C,406:k,407:O,408:N,425:$,427:D,428:I,430:L,431:q,432:U,433:F,434:M,438:_,439:V,442:j,443:P,496:B,498:G,499:J,508:H}),t(Ds,[2,901]),{75:[1,1338]},{128:[1,1339]},t(Is,[2,524]),t(hs,[2,464],{111:349,317:361,96:yt,109:St,112:wt,113:Tt,120:xt,121:pr,130:Ct,133:kt,135:Ot,136:Rt,137:Nt,138:$t,139:Dt,151:It,167:Lt,168:qt,176:Ut,177:Ft,302:Mt,303:_t,305:Vt,306:jt,307:Pt,308:Bt,309:Gt,310:Jt,311:Ht,312:Wt,313:Xt,314:Yt,315:Kt,316:Qt,321:zt,322:Zt,323:en,324:tn}),{75:[1,1340],115:Ls,271:1341},{75:[1,1342]},{116:[1,1343]},{116:[1,1344]},{75:[1,1345]},{75:[1,1346]},{71:fs,75:[1,1347]},t(xa,[2,451],{71:Wa}),{3:238,4:r,5:a,140:Ze,142:et,196:1349,421:1348},t(Qa,[2,687]),t(Qa,[2,689]),{143:[1,1350]},{96:yt,109:St,111:349,112:wt,113:Tt,120:xt,121:pr,130:Ct,133:kt,135:Ot,136:Rt,137:Nt,138:$t,139:Dt,151:It,167:Lt,168:qt,176:Ut,177:Ft,300:[1,1351],302:Mt,303:_t,305:Vt,306:jt,307:Pt,308:Bt,309:Gt,310:Jt,311:Ht,312:Wt,313:Xt,314:Yt,315:Kt,316:Qt,317:361,321:zt,322:Zt,323:en,324:tn},{330:Ws,453:1352},{407:[1,1355],454:[1,1354]},{3:163,4:r,5:a,55:160,74:ie,91:1356,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},t(Xs,[2,263],{84:1357,242:[1,1358],244:[1,1359]}),{116:[1,1360]},{3:163,4:r,5:a,55:160,74:ie,91:1366,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,230:1361,232:1362,233:Ys,234:Ks,235:Qs,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},{3:1367,4:r,5:a},{3:1368,4:r,5:a},t(bs,[2,203]),{3:163,4:r,5:a,55:160,74:ie,91:1369,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},{3:718,4:r,5:a,97:1370,108:891},t(Ms,[2,205]),{3:1371,4:r,5:a},t(Ms,[2,814],{217:1372,3:1373,4:r,5:a}),t(_s,[2,813]),t(Ms,[2,208]),{3:1374,4:r,5:a},{75:[1,1375]},t(Ms,[2,213]),{3:1376,4:r,5:a},t(Ms,[2,216]),{3:1377,4:r,5:a},{38:1378,76:74,86:u,181:99,186:d},{38:1379,76:74,86:u,181:99,186:d},t(vs,[2,223]),t(vs,[2,225]),t(vs,[2,227]),t(Qr,[2,167]),t(ys,[2,258]),t(ys,[2,261],{239:[1,1380]}),t(Ra,[2,801],{150:722,176:ea,177:ta,178:na}),t(ra,[2,137]),t(hr,[2,532]),t(hr,[2,535]),{364:[1,1381]},t(hr,[2,844],{384:1382,382:1383,74:zs}),{128:oe,193:1385},t(hr,[2,540]),{3:163,4:r,5:a,55:160,74:ie,91:1386,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},t(hr,[2,542]),t(hr,[2,544]),{3:113,4:r,5:a,74:[1,1388],110:246,128:oe,129:ue,140:le,149:de,153:Q,178:ge,193:245,197:250,198:249,254:247,255:248,261:Qe,267:1387,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,293:qe},{3:163,4:r,5:a,55:160,74:ie,91:1389,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},t(K,[2,563]),t(rn,[2,341]),t(rn,[2,342]),t(rn,[2,343]),t(rn,[2,344]),t(K,[2,567]),t(K,[2,577]),t(fr,[2,718]),t(K,[2,473]),t(K,[2,478],{345:1390,4:Vs,240:js,333:Ps,346:Bs}),t(Zs,[2,480]),t(Zs,[2,481]),{121:[1,1391]},{121:[1,1392]},{121:[1,1393]},{71:[1,1394],75:[2,489]},t(hs,[2,517]),t(hs,[2,492]),{184:[1,1402],190:[1,1403],352:1395,353:1396,354:1397,355:1398,356:1399,358:ks,359:[1,1400],360:[1,1404],363:[1,1401]},{3:1405,4:r,5:a},{38:1406,76:74,86:u,181:99,186:d},{404:[1,1407]},{405:[1,1408]},t(K,[2,745]),t(K,[2,747]),t(Is,[2,521]),{75:[1,1409]},t(Ye,[2,323]),{75:[1,1410]},t(Ye,[2,324]),{3:163,4:r,5:a,55:160,74:ie,91:1366,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,230:1411,232:1362,233:Ys,234:Ks,235:Qs,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},{3:163,4:r,5:a,55:160,74:ie,91:1073,108:146,110:150,117:1412,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,238:1071,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},t(Ye,[2,309]),t(Ye,[2,311]),t(Xa,[2,460]),{3:1413,4:r,5:a},t(K,[2,704],{74:[1,1414]}),{3:718,4:r,5:a,108:772,140:aa,142:sa,144:1415,327:771,328:773},{326:qs,329:Us,452:1416},t(Qa,[2,691]),{74:[1,1418],146:[1,1417],333:[1,1419]},{167:[1,1421],300:[1,1420]},{167:[1,1423],300:[1,1422]},{96:yt,109:St,111:349,112:wt,113:Tt,120:xt,121:pr,130:Ct,133:kt,135:Ot,136:Rt,137:Nt,138:$t,139:Dt,151:It,167:Lt,168:qt,176:Ut,177:Ft,300:[1,1424],302:Mt,303:_t,305:Vt,306:jt,307:Pt,308:Bt,309:Gt,310:Jt,311:Ht,312:Wt,313:Xt,314:Yt,315:Kt,316:Qt,317:361,321:zt,322:Zt,323:en,324:tn},t(Zr,[2,246],{85:1425,159:[1,1426],165:[1,1428],166:[1,1427]}),{128:oe,193:1429},{128:oe,193:1430},{3:163,4:r,5:a,55:160,74:ie,91:1073,108:146,110:150,117:1431,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,238:1071,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},t(ps,[2,244],{231:1432,71:ei,236:[1,1434]}),t(ti,[2,238]),{143:[1,1435]},{74:[1,1436]},{74:[1,1437]},t(ti,[2,243],{111:349,317:361,96:yt,109:St,112:wt,113:Tt,120:xt,121:pr,130:Ct,133:kt,135:Ot,136:Rt,137:Nt,138:$t,139:Dt,151:It,167:Lt,168:qt,176:Ut,177:Ft,302:Mt,303:_t,305:Vt,306:jt,307:Pt,308:Bt,309:Gt,310:Jt,311:Ht,312:Wt,313:Xt,314:Yt,315:Kt,316:Qt,321:zt,322:Zt,323:en,324:tn}),{75:[2,768],93:1438,96:[1,1440],99:1439},{96:[1,1441]},t(bs,[2,231],{111:349,317:361,96:yt,109:St,112:wt,113:Tt,120:xt,121:pr,130:Ct,133:kt,135:Ot,136:Rt,137:Nt,138:$t,139:Dt,151:It,167:Lt,168:qt,176:Ut,177:Ft,302:Mt,303:_t,305:Vt,306:jt,307:Pt,308:Bt,309:Gt,310:Jt,311:Ht,312:Wt,313:Xt,314:Yt,315:Kt,316:Qt,321:zt,322:Zt,323:en,324:tn}),t(bs,[2,232],{71:Ya}),t(Ms,[2,206]),t(Ms,[2,207]),t(Ms,[2,815]),t(Ms,[2,209]),{3:1442,4:r,5:a,73:[1,1443]},t(Ms,[2,214]),t(Ms,[2,217]),{75:[1,1444]},{75:[1,1445]},t(ys,[2,262]),{3:238,4:r,5:a,196:1446},t(hr,[2,537]),t(hr,[2,845]),{3:1447,4:r,5:a},{71:[1,1448]},{75:[1,1449],96:yt,109:St,111:349,112:wt,113:Tt,120:xt,121:pr,130:Ct,133:kt,135:Ot,136:Rt,137:Nt,138:$t,139:Dt,151:It,167:Lt,168:qt,176:Ut,177:Ft,302:Mt,303:_t,305:Vt,306:jt,307:Pt,308:Bt,309:Gt,310:Jt,311:Ht,312:Wt,313:Xt,314:Yt,315:Kt,316:Qt,317:361,321:zt,322:Zt,323:en,324:tn},t(hr,[2,547]),{3:163,4:r,5:a,55:160,74:ie,91:1450,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},{75:[1,1451],96:yt,109:St,111:349,112:wt,113:Tt,120:xt,121:pr,130:Ct,133:kt,135:Ot,136:Rt,137:Nt,138:$t,139:Dt,151:It,167:Lt,168:qt,176:Ut,177:Ft,302:Mt,303:_t,305:Vt,306:jt,307:Pt,308:Bt,309:Gt,310:Jt,311:Ht,312:Wt,313:Xt,314:Yt,315:Kt,316:Qt,317:361,321:zt,322:Zt,323:en,324:tn},t(Zs,[2,479]),{3:1452,4:r,5:a},{128:oe,193:1453},{3:1454,4:r,5:a},t(Gs,Js,{351:1331,350:1455,357:Hs}),t(fr,[2,494]),t(fr,[2,495]),t(fr,[2,496]),t(fr,[2,497]),t(fr,[2,498]),{360:[1,1456]},{360:[1,1457]},t(ni,[2,838],{372:1458,360:[1,1459]}),{3:1460,4:r,5:a},{3:1461,4:r,5:a},t(Gs,[2,500]),t(K,[2,848],{400:1462,402:1463,69:$s}),t(K,[2,595]),t(K,[2,596],{357:[1,1464]}),t(Is,[2,522]),t(Ye,[2,325]),t([75,115],[2,326],{71:ei}),{71:Es,75:[2,327]},t(K,[2,703]),{3:718,4:r,5:a,97:1465,108:891},t(Qa,[2,690],{71:Da}),t(Qa,[2,688]),{74:Ta,140:le,141:887,142:Ke,149:de,178:ge,198:888,293:qe,332:1466,409:185,410:_e,414:Ve},{3:718,4:r,5:a,97:1467,108:891},{146:[1,1468]},{330:Ws,453:1469},{3:163,4:r,5:a,55:160,74:ie,91:1470,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},{330:Ws,453:1471},{3:163,4:r,5:a,55:160,74:ie,91:1472,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},{330:Ws,453:1473},t(Zr,[2,68]),{38:1474,76:74,86:u,161:[1,1475],181:99,186:d,237:[1,1476]},{38:1477,76:74,86:u,181:99,186:d,237:[1,1478]},{38:1479,76:74,86:u,181:99,186:d,237:[1,1480]},t(Xs,[2,266],{243:1481,244:[1,1482]}),{245:1483,246:[2,816],512:[1,1484]},t(Fs,[2,256],{71:Es}),t(ps,[2,237]),{3:163,4:r,5:a,55:160,74:ie,91:1366,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,232:1485,233:Ys,234:Ks,235:Qs,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},{3:163,4:r,5:a,55:160,74:ie,91:1486,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},{74:[1,1487]},{3:163,4:r,5:a,55:160,74:ie,91:1366,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,230:1488,232:1362,233:Ys,234:Ks,235:Qs,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},{3:163,4:r,5:a,55:160,74:ie,91:1366,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,230:1489,232:1362,233:Ys,234:Ks,235:Qs,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},{75:[1,1490]},{75:[2,769]},{74:[1,1491]},{74:[1,1492]},t(Ms,[2,210]),{3:1493,4:r,5:a},{3:1494,4:r,5:a,73:[1,1495]},{3:1496,4:r,5:a,73:[1,1497]},t(hr,[2,842],{383:1498,382:1499,74:zs}),{75:[1,1500]},{128:oe,193:1501},t(hr,[2,541]),{75:[1,1502],96:yt,109:St,111:349,112:wt,113:Tt,120:xt,121:pr,130:Ct,133:kt,135:Ot,136:Rt,137:Nt,138:$t,139:Dt,151:It,167:Lt,168:qt,176:Ut,177:Ft,302:Mt,303:_t,305:Vt,306:jt,307:Pt,308:Bt,309:Gt,310:Jt,311:Ht,312:Wt,313:Xt,314:Yt,315:Kt,316:Qt,317:361,321:zt,322:Zt,323:en,324:tn},t(hr,[2,501]),t(Zs,[2,482]),t(Zs,[2,483]),t(Zs,[2,484]),t(hs,[2,493]),{3:1504,4:r,5:a,74:[2,834],361:1503},{74:[1,1505]},{3:1507,4:r,5:a,74:[2,840],373:1506},t(ni,[2,839]),{74:[1,1508]},{74:[1,1509]},t(K,[2,593]),t(K,[2,849]),t(Gs,Js,{351:1331,350:1510,357:Hs}),{71:Ya,75:[1,1511]},t(Qa,[2,697],{71:Wa}),{71:Ya,75:[1,1512]},t(Qa,[2,699]),t(Qa,[2,692]),{96:yt,109:St,111:349,112:wt,113:Tt,120:xt,121:pr,130:Ct,133:kt,135:Ot,136:Rt,137:Nt,138:$t,139:Dt,151:It,167:Lt,168:qt,176:Ut,177:Ft,300:[1,1513],302:Mt,303:_t,305:Vt,306:jt,307:Pt,308:Bt,309:Gt,310:Jt,311:Ht,312:Wt,313:Xt,314:Yt,315:Kt,316:Qt,317:361,321:zt,322:Zt,323:en,324:tn},t(Qa,[2,695]),{96:yt,109:St,111:349,112:wt,113:Tt,120:xt,121:pr,130:Ct,133:kt,135:Ot,136:Rt,137:Nt,138:$t,139:Dt,151:It,167:Lt,168:qt,176:Ut,177:Ft,300:[1,1514],302:Mt,303:_t,305:Vt,306:jt,307:Pt,308:Bt,309:Gt,310:Jt,311:Ht,312:Wt,313:Xt,314:Yt,315:Kt,316:Qt,317:361,321:zt,322:Zt,323:en,324:tn},t(Qa,[2,693]),t(Zr,[2,247]),{38:1515,76:74,86:u,181:99,186:d,237:[1,1516]},{38:1517,76:74,86:u,181:99,186:d},t(Zr,[2,249]),{38:1518,76:74,86:u,181:99,186:d},t(Zr,[2,250]),{38:1519,76:74,86:u,181:99,186:d},t(Xs,[2,264]),{128:oe,193:1520},{246:[1,1521]},{246:[2,817]},t(ti,[2,239]),t(ps,[2,245],{111:349,317:361,96:yt,109:St,112:wt,113:Tt,120:xt,121:pr,130:Ct,133:kt,135:Ot,136:Rt,137:Nt,138:$t,139:Dt,151:It,167:Lt,168:qt,176:Ut,177:Ft,302:Mt,303:_t,305:Vt,306:jt,307:Pt,308:Bt,309:Gt,310:Jt,311:Ht,312:Wt,313:Xt,314:Yt,315:Kt,316:Qt,321:zt,322:Zt,323:en,324:tn}),{3:163,4:r,5:a,55:160,74:ie,91:1366,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,230:1522,232:1362,233:Ys,234:Ks,235:Qs,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},{71:ei,75:[1,1523]},{71:ei,75:[1,1524]},t(Ca,[2,770],{94:1525,101:1526,3:1528,4:r,5:a,73:ri}),{3:163,4:r,5:a,55:160,74:ie,91:1531,100:1529,102:1530,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},{3:718,4:r,5:a,97:1532,108:891},t(Ms,[2,211]),t(bs,[2,169]),{3:1533,4:r,5:a},t(bs,[2,171]),{3:1534,4:r,5:a},t(hr,[2,536]),t(hr,[2,843]),t(hr,[2,534]),{75:[1,1535]},t(hr,[2,548]),{74:[1,1536]},{74:[2,835]},{3:1538,4:r,5:a,129:ai,362:1537},{74:[1,1540]},{74:[2,841]},{3:718,4:r,5:a,97:1541,108:891},{3:718,4:r,5:a,97:1542,108:891},t(K,[2,597]),t(K,[2,705]),{146:[1,1543],333:[1,1544]},{330:Ws,453:1545},{326:qs,329:Us,452:1546},t(Zr,[2,248]),{38:1547,76:74,86:u,181:99,186:d},t(Zr,[2,251]),t(Zr,[2,253]),t(Zr,[2,254]),t(Xs,[2,267]),{128:[2,818],247:1548,513:[1,1549]},{71:ei,75:[1,1550]},t(ti,[2,241]),t(ti,[2,242]),t(Ca,[2,70]),t(Ca,[2,771]),{3:1551,4:r,5:a},t(Ca,[2,74]),{71:[1,1553],75:[1,1552]},t(hs,[2,76]),t(hs,[2,77],{111:349,317:361,73:[1,1554],96:yt,109:St,112:wt,113:Tt,120:xt,121:pr,130:Ct,133:kt,135:Ot,136:Rt,137:Nt,138:$t,139:Dt,151:It,167:Lt,168:qt,176:Ut,177:Ft,302:Mt,303:_t,305:Vt,306:jt,307:Pt,308:Bt,309:Gt,310:Jt,311:Ht,312:Wt,313:Xt,314:Yt,315:Kt,316:Qt,321:zt,322:Zt,323:en,324:tn}),{71:Ya,75:[1,1555]},t(bs,[2,170]),t(bs,[2,172]),t(hr,[2,538]),{3:1538,4:r,5:a,129:ai,362:1556},{71:si,75:[1,1557]},t(hs,[2,512]),t(hs,[2,513]),{3:718,4:r,5:a,97:1559,108:891},{71:Ya,75:[1,1560]},{71:Ya,75:[1,1561]},{74:Ta,140:le,141:887,142:Ke,149:de,178:ge,198:888,293:qe,332:1562,409:185,410:_e,414:Ve},{146:[1,1563]},t(Qa,[2,694]),t(Qa,[2,696]),t(Zr,[2,252]),{128:oe,193:1564},{128:[2,819]},t(ti,[2,240]),t(Ca,[2,73]),{75:[2,72]},{3:163,4:r,5:a,55:160,74:ie,91:1531,102:1565,108:146,110:150,128:oe,129:ue,134:ce,140:le,141:157,142:he,149:de,151:fe,153:Q,155:162,176:pe,177:be,178:ge,193:148,197:144,198:152,199:153,251:147,252:143,253:145,254:149,255:151,256:154,257:155,258:156,259:158,261:me,262:f,263:ve,264:Ee,266:ye,273:Se,274:we,275:Te,276:xe,277:Ae,278:Ce,279:ke,280:Oe,281:Re,283:z,284:Z,285:ee,286:te,287:Ne,288:$e,289:De,290:Ie,291:Le,293:qe,294:Ue,307:Fe,319:Me,409:185,410:_e,414:Ve},{3:1566,4:r,5:a},{75:[1,1567]},{71:si,75:[1,1568]},{364:[1,1569]},{3:1570,4:r,5:a,129:[1,1571]},{71:Ya,75:[1,1572]},t(fr,[2,510]),t(fr,[2,511]),t(Qa,[2,698],{71:Wa}),t(Qa,[2,700]),t(ii,[2,820],{248:1573,512:[1,1574]}),t(hs,[2,75]),t(hs,[2,78]),t(Ca,[2,772],{3:1528,98:1575,101:1576,4:r,5:a,73:ri}),t(fr,[2,502]),{3:238,4:r,5:a,196:1577},t(hs,[2,514]),t(hs,[2,515]),t(fr,[2,509]),t(Xs,[2,822],{249:1578,404:[1,1579]}),t(ii,[2,821]),t(Ca,[2,71]),t(Ca,[2,773]),t(oi,[2,836],{365:1580,367:1581,74:[1,1582]}),t(Xs,[2,265]),t(Xs,[2,823]),t(fr,[2,505],{366:1583,368:1584,227:[1,1585]}),t(oi,[2,837]),{3:1538,4:r,5:a,129:ai,362:1586},t(fr,[2,503]),{227:[1,1588],369:1587},{329:[1,1589]},{71:si,75:[1,1590]},t(fr,[2,506]),{326:[1,1591]},{370:[1,1592]},t(oi,[2,504]),{370:[1,1593]},{371:[1,1594]},{371:[1,1595]},{227:[2,507]},t(fr,[2,508])],defaultActions:{104:[2,3],188:[2,328],189:[2,329],190:[2,330],191:[2,331],192:[2,332],193:[2,333],194:[2,334],195:[2,335],196:[2,336],203:[2,679],318:[2,859],377:[2,824],378:[2,825],433:[2,680],503:[2,790],504:[2,791],641:[2,436],642:[2,437],643:[2,438],694:[2,681],987:[2,869],1072:[2,777],1131:[2,867],1242:[2,491],1439:[2,769],1484:[2,817],1504:[2,835],1507:[2,841],1549:[2,819],1552:[2,72],1594:[2,507]},parseError:function(e,t){function n(e,t){this.message=e,this.hash=t}if(!t.recoverable)throw n.prototype=new Error,new n(e,t);this.trace(e)},parse:function(e){var t=this,n=[0],r=[null],a=[],s=this.table,i="",o=0,u=0,c=0,l=2,h=1,d=a.slice.call(arguments,1),f=Object.create(this.lexer),p={yy:{}};for(var b in this.yy)Object.prototype.hasOwnProperty.call(this.yy,b)&&(p.yy[b]=this.yy[b]);f.setInput(e,p.yy),p.yy.lexer=f,p.yy.parser=this,"undefined"==typeof f.yylloc&&(f.yylloc={});var g=f.yylloc;a.push(g);var m=f.options&&f.options.ranges;"function"==typeof p.yy.parseError?this.parseError=p.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var v,E,y,S,w,T,x,A,C,k=function(){var e;return e=f.lex()||h,"number"!=typeof e&&(e=t.symbols_[e]||e),e},O={};;){if(y=n[n.length-1],this.defaultActions[y]?S=this.defaultActions[y]:(null!==v&&"undefined"!=typeof v||(v=k()),S=s[y]&&s[y][v]),"undefined"==typeof S||!S.length||!S[0]){var R="";C=[];for(T in s[y])this.terminals_[T]&&T>l&&C.push("'"+this.terminals_[T]+"'");R=f.showPosition?"Parse error on line "+(o+1)+":\n"+f.showPosition()+"\nExpecting "+C.join(", ")+", got '"+(this.terminals_[v]||v)+"'":"Parse error on line "+(o+1)+": Unexpected "+(v==h?"end of input":"'"+(this.terminals_[v]||v)+"'"),this.parseError(R,{text:f.match,token:this.terminals_[v]||v,line:f.yylineno,loc:g,expected:C})}if(S[0]instanceof Array&&S.length>1)throw new Error("Parse Error: multiple actions possible at state: "+y+", token: "+v);switch(S[0]){case 1:n.push(v),r.push(f.yytext),a.push(f.yylloc),n.push(S[1]),v=null,E?(v=E,E=null):(u=f.yyleng,i=f.yytext,o=f.yylineno,g=f.yylloc,c>0&&c--);break;case 2:if(x=this.productions_[S[1]][1],O.$=r[r.length-x],O._$={first_line:a[a.length-(x||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(x||1)].first_column,last_column:a[a.length-1].last_column +},m&&(O._$.range=[a[a.length-(x||1)].range[0],a[a.length-1].range[1]]),w=this.performAction.apply(O,[i,u,o,p.yy,S[1],r,a].concat(d)),"undefined"!=typeof w)return w;x&&(n=n.slice(0,-1*x*2),r=r.slice(0,-1*x),a=a.slice(0,-1*x)),n.push(this.productions_[S[1]][0]),r.push(O.$),a.push(O._$),A=s[n[n.length-2]][n[n.length-1]],n.push(A);break;case 3:return!0}}return!0}},ci=function(){var e={EOF:1,parseError:function(e,t){if(!this.yy.parser)throw new Error(e);this.yy.parser.parseError(e,t)},setInput:function(e,t){return this.yy=t||this.yy||{},this._input=e,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var e=this._input[0];this.yytext+=e,this.yyleng++,this.offset++,this.match+=e,this.matched+=e;var t=e.match(/(?:\r\n?|\n).*/g);return t?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),e},unput:function(e){var t=e.length,n=e.split(/(?:\r\n?|\n)/g);this._input=e+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-t),this.offset-=t;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var a=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-t},this.options.ranges&&(this.yylloc.range=[a[0],a[0]+this.yyleng-t]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(e){this.unput(this.match.slice(e))},pastInput:function(){var e=this.matched.substr(0,this.matched.length-this.match.length);return(e.length>20?"...":"")+e.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var e=this.match;return e.length<20&&(e+=this._input.substr(0,20-e.length)),(e.substr(0,20)+(e.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var e=this.pastInput(),t=new Array(e.length+1).join("-");return e+this.upcomingInput()+"\n"+t+"^"},test_match:function(e,t){var n,r,a;if(this.options.backtrack_lexer&&(a={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(a.yylloc.range=this.yylloc.range.slice(0))),r=e[0].match(/(?:\r\n?|\n).*/g),r&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+e[0].length},this.yytext+=e[0],this.match+=e[0],this.matches=e,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(e[0].length),this.matched+=e[0],n=this.performAction.call(this,this.yy,this,t,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var s in a)this[s]=a[s];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var e,t,n,r;this._more||(this.yytext="",this.match="");for(var a=this._currentRules(),s=0;st[0].length)){if(t=n,r=s,this.options.backtrack_lexer){if(e=this.test_match(n,a[s]),e!==!1)return e;if(this._backtrack){t=!1;continue}return!1}if(!this.options.flex)break}return t?(e=this.test_match(t,a[r]),e!==!1?e:!1):""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var e=this.next();return e?e:this.lex()},begin:function(e){this.conditionStack.push(e)},popState:function(){var e=this.conditionStack.length-1;return e>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(e){return e=this.conditionStack.length-1-Math.abs(e||0),e>=0?this.conditionStack[e]:"INITIAL"},pushState:function(e){this.begin(e)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(e,t,n,r){switch(n){case 0:return 262;case 1:return 293;case 2:return 410;case 3:return 5;case 4:return 5;case 5:return 289;case 6:return 289;case 7:return 129;case 8:return 129;case 9:return;case 10:break;case 11:return 306;case 12:return 309;case 13:return t.yytext="VALUE",86;case 14:return t.yytext="VALUE",186;case 15:return t.yytext="ROW",186;case 16:return t.yytext="COLUMN",186;case 17:return t.yytext="MATRIX",186;case 18:return t.yytext="INDEX",186;case 19:return t.yytext="RECORDSET",186;case 20:return t.yytext="TEXT",186;case 21:return t.yytext="SELECT",186;case 22:return"ABSOLUTE";case 23:return 371;case 24:return 391;case 25:return 506;case 26:return 280;case 27:return 161;case 28:return 389;case 29:return 167;case 30:return 226;case 31:return 163;case 32:return 204;case 33:return 281;case 34:return 73;case 35:return 408;case 36:return 239;case 37:return 393;case 38:return 346;case 39:return 277;case 40:return 505;case 41:return 428;case 42:return 321;case 43:return 432;case 44:return 322;case 45:return 305;case 46:return 116;case 47:return 499;case 48:return 294;case 49:return 264;case 50:return 358;case 51:return 127;case 52:return"CLOSE";case 53:return 240;case 54:return 187;case 55:return 187;case 56:return 425;case 57:return 357;case 58:return 461;case 59:return 431;case 60:return 266;case 61:return 237;case 62:return 274;case 63:return 337;case 64:return 203;case 65:return 235;case 66:return 261;case 67:return"CURSOR";case 68:return 394;case 69:return 284;case 70:return 285;case 71:return 439;case 72:return 333;case 73:return 329;case 74:return"DELETED";case 75:return 239;case 76:return 395;case 77:return 182;case 78:return 385;case 79:return 438;case 80:return 132;case 81:return 297;case 82:return 378;case 83:return 301;case 84:return 304;case 85:return 166;case 86:return 499;case 87:return 499;case 88:return 291;case 89:return 12;case 90:return 288;case 91:return 246;case 92:return 278;case 93:return 92;case 94:return 363;case 95:return 180;case 96:return 224;case 97:return 303;case 98:return 510;case 99:return 463;case 100:return 229;case 101:return 233;case 102:return 236;case 103:return 406;case 104:return 153;case 105:return 346;case 106:return 323;case 107:return 96;case 108:return 190;case 109:return 209;case 110:return 221;case 111:return 507;case 112:return 330;case 113:return 210;case 114:return 165;case 115:return 286;case 116:return 195;case 117:return 220;case 118:return 360;case 119:return 279;case 120:return"LET";case 121:return 222;case 122:return 109;case 123:return 242;case 124:return 451;case 125:return 188;case 126:return 276;case 127:return 379;case 128:return 275;case 129:return 443;case 130:return 166;case 131:return 392;case 132:return 219;case 133:return 513;case 134:return 263;case 135:return 241;case 136:return 370;case 137:return 151;case 138:return 290;case 139:return 424;case 140:return 227;case 141:return 404;case 142:return 126;case 143:return 244;case 144:return"OPEN";case 145:return 405;case 146:return 168;case 147:return 115;case 148:return 205;case 149:return 269;case 150:return 169;case 151:return 272;case 152:return 511;case 153:return 90;case 154:return 14;case 155:return 359;case 156:return 433;case 157:return"PRIOR";case 158:return 13;case 159:return 403;case 160:return 191;case 161:return"REDUCE";case 162:return 364;case 163:return 302;case 164:return 508;case 165:return"RELATIVE";case 166:return 104;case 167:return 390;case 168:return 172;case 169:return 283;case 170:return 434;case 171:return"RESTORE";case 172:return 170;case 173:return 170;case 174:return 223;case 175:return 427;case 176:return 234;case 177:return 147;case 178:return 512;case 179:return 394;case 180:return 86;case 181:return 225;case 182:return 143;case 183:return 143;case 184:return 398;case 185:return 325;case 186:return 407;case 187:return"STRATEGY";case 188:return"STORE";case 189:return 273;case 190:return 343;case 191:return 343;case 192:return 454;case 193:return 347;case 194:return 347;case 195:return 189;case 196:return 300;case 197:return"TIMEOUT";case 198:return 145;case 199:return 192;case 200:return 426;case 201:return 426;case 202:return 500;case 203:return 287;case 204:return 442;case 205:return 159;case 206:return 184;case 207:return 95;case 208:return 326;case 209:return 397;case 210:return 228;case 211:return 146;case 212:return 131;case 213:return 399;case 214:return 299;case 215:return 125;case 216:return 430;case 217:return 69;case 218:return 426;case 219:return 128;case 220:return 128;case 221:return 112;case 222:return 134;case 223:return 176;case 224:return 307;case 225:return 177;case 226:return 130;case 227:return 135;case 228:return 316;case 229:return 313;case 230:return 315;case 231:return 312;case 232:return 310;case 233:return 308;case 234:return 309;case 235:return 139;case 236:return 138;case 237:return 136;case 238:return 311;case 239:return 314;case 240:return 137;case 241:return 121;case 242:return 314;case 243:return 74;case 244:return 75;case 245:return 142;case 246:return 414;case 247:return 416;case 248:return 418;case 249:return 496;case 250:return 498;case 251:return 119;case 252:return 113;case 253:return 71;case 254:return 324;case 255:return 149;case 256:return 509;case 257:return 140;case 258:return 178;case 259:return 133;case 260:return 120;case 261:return 319;case 262:return 4;case 263:return 8;case 264:return"INVALID"}},rules:[/^(?:``([^\`])+``)/i,/^(?:\[\?\])/i,/^(?:@\[)/i,/^(?:\[([^\]])*?\])/i,/^(?:`([^\`])*?`)/i,/^(?:N(['](\\.|[^']|\\')*?['])+)/i,/^(?:X(['](\\.|[^']|\\')*?['])+)/i,/^(?:(['](\\.|[^']|\\')*?['])+)/i,/^(?:(["](\\.|[^"]|\\")*?["])+)/i,/^(?:--(.*?)($|\r\n|\r|\n))/i,/^(?:\s+)/i,/^(?:\|\|)/i,/^(?:\|)/i,/^(?:VALUE\s+OF\s+SEARCH\b)/i,/^(?:VALUE\s+OF\s+SELECT\b)/i,/^(?:ROW\s+OF\s+SELECT\b)/i,/^(?:COLUMN\s+OF\s+SELECT\b)/i,/^(?:MATRIX\s+OF\s+SELECT\b)/i,/^(?:INDEX\s+OF\s+SELECT\b)/i,/^(?:RECORDSET\s+OF\s+SELECT\b)/i,/^(?:TEXT\s+OF\s+SELECT\b)/i,/^(?:SELECT\b)/i,/^(?:ABSOLUTE\b)/i,/^(?:ACTION\b)/i,/^(?:ADD\b)/i,/^(?:AFTER\b)/i,/^(?:AGGR\b)/i,/^(?:ALL\b)/i,/^(?:ALTER\b)/i,/^(?:AND\b)/i,/^(?:ANTI\b)/i,/^(?:ANY\b)/i,/^(?:APPLY\b)/i,/^(?:ARRAY\b)/i,/^(?:AS\b)/i,/^(?:ASSERT\b)/i,/^(?:ASC\b)/i,/^(?:ATTACH\b)/i,/^(?:AUTO(_)?INCREMENT\b)/i,/^(?:AVG\b)/i,/^(?:BEFORE\b)/i,/^(?:BEGIN\b)/i,/^(?:BETWEEN\b)/i,/^(?:BREAK\b)/i,/^(?:NOT\s+BETWEEN\b)/i,/^(?:NOT\s+LIKE\b)/i,/^(?:BY\b)/i,/^(?:CALL\b)/i,/^(?:CASE\b)/i,/^(?:CAST\b)/i,/^(?:CHECK\b)/i,/^(?:CLASS\b)/i,/^(?:CLOSE\b)/i,/^(?:COLLATE\b)/i,/^(?:COLUMN\b)/i,/^(?:COLUMNS\b)/i,/^(?:COMMIT\b)/i,/^(?:CONSTRAINT\b)/i,/^(?:CONTENT\b)/i,/^(?:CONTINUE\b)/i,/^(?:CONVERT\b)/i,/^(?:CORRESPONDING\b)/i,/^(?:COUNT\b)/i,/^(?:CREATE\b)/i,/^(?:CROSS\b)/i,/^(?:CUBE\b)/i,/^(?:CURRENT_TIMESTAMP\b)/i,/^(?:CURSOR\b)/i,/^(?:DATABASE(S)?)/i,/^(?:DATEADD\b)/i,/^(?:DATEDIFF\b)/i,/^(?:DECLARE\b)/i,/^(?:DEFAULT\b)/i,/^(?:DELETE\b)/i,/^(?:DELETED\b)/i,/^(?:DESC\b)/i,/^(?:DETACH\b)/i,/^(?:DISTINCT\b)/i,/^(?:DROP\b)/i,/^(?:ECHO\b)/i,/^(?:EDGE\b)/i,/^(?:END\b)/i,/^(?:ENUM\b)/i,/^(?:ELSE\b)/i,/^(?:ESCAPE\b)/i,/^(?:EXCEPT\b)/i,/^(?:EXEC\b)/i,/^(?:EXECUTE\b)/i,/^(?:EXISTS\b)/i,/^(?:EXPLAIN\b)/i,/^(?:FALSE\b)/i,/^(?:FETCH\b)/i,/^(?:FIRST\b)/i,/^(?:FOR\b)/i,/^(?:FOREIGN\b)/i,/^(?:FROM\b)/i,/^(?:FULL\b)/i,/^(?:GLOB\b)/i,/^(?:GO\b)/i,/^(?:GRAPH\b)/i,/^(?:GROUP\b)/i,/^(?:GROUPING\b)/i,/^(?:HAVING\b)/i,/^(?:HELP\b)/i,/^(?:IF\b)/i,/^(?:IDENTITY\b)/i,/^(?:IS\b)/i,/^(?:IN\b)/i,/^(?:INDEX\b)/i,/^(?:INDEXED\b)/i,/^(?:INNER\b)/i,/^(?:INSTEAD\b)/i,/^(?:INSERT\b)/i,/^(?:INSERTED\b)/i,/^(?:INTERSECT\b)/i,/^(?:INTERVAL\b)/i,/^(?:INTO\b)/i,/^(?:JOIN\b)/i,/^(?:KEY\b)/i,/^(?:LAST\b)/i,/^(?:LET\b)/i,/^(?:LEFT\b)/i,/^(?:LIKE\b)/i,/^(?:LIMIT\b)/i,/^(?:MATCHED\b)/i,/^(?:MATRIX\b)/i,/^(?:MAX(\s+)?(?=\())/i,/^(?:MAX(\s+)?(?=(,|\))))/i,/^(?:MIN(\s+)?(?=\())/i,/^(?:MERGE\b)/i,/^(?:MINUS\b)/i,/^(?:MODIFY\b)/i,/^(?:NATURAL\b)/i,/^(?:NEXT\b)/i,/^(?:NEW\b)/i,/^(?:NOCASE\b)/i,/^(?:NO\b)/i,/^(?:NOT\b)/i,/^(?:NULL\b)/i,/^(?:OFF\b)/i,/^(?:ON\b)/i,/^(?:ONLY\b)/i,/^(?:OF\b)/i,/^(?:OFFSET\b)/i,/^(?:OPEN\b)/i,/^(?:OPTION\b)/i,/^(?:OR\b)/i,/^(?:ORDER\b)/i,/^(?:OUTER\b)/i,/^(?:OVER\b)/i,/^(?:PATH\b)/i,/^(?:PARTITION\b)/i,/^(?:PERCENT\b)/i,/^(?:PIVOT\b)/i,/^(?:PLAN\b)/i,/^(?:PRIMARY\b)/i,/^(?:PRINT\b)/i,/^(?:PRIOR\b)/i,/^(?:QUERY\b)/i,/^(?:READ\b)/i,/^(?:RECORDSET\b)/i,/^(?:REDUCE\b)/i,/^(?:REFERENCES\b)/i,/^(?:REGEXP\b)/i,/^(?:REINDEX\b)/i,/^(?:RELATIVE\b)/i,/^(?:REMOVE\b)/i,/^(?:RENAME\b)/i,/^(?:REPEAT\b)/i,/^(?:REPLACE\b)/i,/^(?:REQUIRE\b)/i,/^(?:RESTORE\b)/i,/^(?:RETURN\b)/i,/^(?:RETURNS\b)/i,/^(?:RIGHT\b)/i,/^(?:ROLLBACK\b)/i,/^(?:ROLLUP\b)/i,/^(?:ROW\b)/i,/^(?:ROWS\b)/i,/^(?:SCHEMA(S)?)/i,/^(?:SEARCH\b)/i,/^(?:SEMI\b)/i,/^(?:SET\b)/i,/^(?:SETS\b)/i,/^(?:SHOW\b)/i,/^(?:SOME\b)/i,/^(?:SOURCE\b)/i,/^(?:STRATEGY\b)/i,/^(?:STORE\b)/i,/^(?:SUM\b)/i,/^(?:TABLE\b)/i,/^(?:TABLES\b)/i,/^(?:TARGET\b)/i,/^(?:TEMP\b)/i,/^(?:TEMPORARY\b)/i,/^(?:TEXTSTRING\b)/i,/^(?:THEN\b)/i,/^(?:TIMEOUT\b)/i,/^(?:TO\b)/i,/^(?:TOP\b)/i,/^(?:TRAN\b)/i,/^(?:TRANSACTION\b)/i,/^(?:TRIGGER\b)/i,/^(?:TRUE\b)/i,/^(?:TRUNCATE\b)/i,/^(?:UNION\b)/i,/^(?:UNIQUE\b)/i,/^(?:UNPIVOT\b)/i,/^(?:UPDATE\b)/i,/^(?:USE\b)/i,/^(?:USING\b)/i,/^(?:VALUE(S)?)/i,/^(?:VERTEX\b)/i,/^(?:VIEW\b)/i,/^(?:WHEN\b)/i,/^(?:WHERE\b)/i,/^(?:WHILE\b)/i,/^(?:WITH\b)/i,/^(?:WORK\b)/i,/^(?:(\d*[.])?\d+[eE]\d+)/i,/^(?:(\d*[.])?\d+)/i,/^(?:->)/i,/^(?:#)/i,/^(?:\+)/i,/^(?:-)/i,/^(?:\*)/i,/^(?:\/)/i,/^(?:%)/i,/^(?:!===)/i,/^(?:===)/i,/^(?:!==)/i,/^(?:==)/i,/^(?:>=)/i,/^(?:&)/i,/^(?:\|)/i,/^(?:<<)/i,/^(?:>>)/i,/^(?:>)/i,/^(?:<=)/i,/^(?:<>)/i,/^(?:<)/i,/^(?:=)/i,/^(?:!=)/i,/^(?:\()/i,/^(?:\))/i,/^(?:@)/i,/^(?:\{)/i,/^(?:\})/i,/^(?:\])/i,/^(?::-)/i,/^(?:\?-)/i,/^(?:\.\.)/i,/^(?:\.)/i,/^(?:,)/i,/^(?:::)/i,/^(?::)/i,/^(?:;)/i,/^(?:\$)/i,/^(?:\?)/i,/^(?:!)/i,/^(?:\^)/i,/^(?:~)/i,/^(?:[a-zA-Z_][a-zA-Z_0-9]*)/i,/^(?:$)/i,/^(?:.)/i],conditions:{INITIAL:{rules:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264],inclusive:!0}}};return e}();return ui.lexer=ci,e.prototype=ui,ui.Parser=e,new e}();"undefined"!=typeof T&&"undefined"!=typeof exports&&(exports.parser=A,exports.Parser=A.Parser,exports.parse=function(){return A.parse.apply(A,arguments)},exports.main=function(e){e[1]||(console.log("Usage: "+e[0]+" FILE"),process.exit(1));var t=T("fs").readFileSync(T("path").normalize(e[1]),"utf8");return exports.parser.parse(t)},"undefined"!=typeof module&&T.main===module&&exports.main(process.argv.slice(1))),w.prettyflag=!1,w.pretty=function(e,t){var n=w.prettyflag;w.prettyflag=!t;var r=w.parse(e).toString();return w.prettyflag=n,r};var C=w.utils={},k=C.escapeq=function(e){return e.replace(/\'/g,"\\'")},O=C.undoubleq=function(e){return e.replace(/(\')/g,"''")},R=C.doubleq=function(e){return e.replace(/(\'\')/g,"\\'")},N=(C.doubleqq=function(e){return e.replace(/\'/g,"'")},function(e){return e[0]===String.fromCharCode(65279)&&(e=e.substr(1)),e});C.global=function(){try{return Function("return this")()}catch(e){var t=self||window||t;if(t)return t;throw new Error("Unable to locate global object")}}();C.isNativeFunction=function(e){return"function"==typeof e&&!!~e.toString().indexOf("[native code]")};C.isWebWorker=function(){try{var e=C.global.importScripts;return C.isNativeFunction(e)}catch(t){return!1}}(),C.isNode=function(){try{return C.isNativeFunction(C.global.process.reallyExit)}catch(e){return!1}}(),C.isBrowser=function(){try{return C.isNativeFunction(C.global.location.reload)}catch(e){return!1}}(),C.isBrowserify=function(){return C.isBrowser&&"undefined"!=typeof process&&process.browser}(),C.isRequireJS=function(){return C.isBrowser&&"function"==typeof T&&"function"==typeof T.specified}(),C.isMeteor=function(){return"undefined"!=typeof Meteor&&Meteor.release}(),C.isMeteorClient=(C.isMeteorClient=function(){return C.isMeteor&&Meteor.isClient})(),C.isMeteorServer=function(){return C.isMeteor&&Meteor.isServer}(),C.isCordova=function(){return"object"==typeof cordova}(),C.hasIndexedDB=function(){return"undefined"!=typeof C.global.indexedDB}(),C.isArray=function(e){return"[object Array]"===Object.prototype.toString.call(e)};var $=C.loadFile=function(e,t,n,r){var a;if(C.isNode||C.isMeteorServer);else if(C.isCordova)C.global.requestFileSystem(LocalFileSystem.PERSISTENT,0,function(t){t.root.getFile(e,{create:!1},function(e){e.file(function(e){var t=new FileReader;t.onloadend=function(e){n(N(this.result))},t.readAsText(e)})})});else if("string"==typeof e)if("#"===e.substr(0,1)&&"undefined"!=typeof document)a=document.querySelector(e).textContent,n(a);else{var s=new XMLHttpRequest;s.onreadystatechange=function(){s.readyState===XMLHttpRequest.DONE&&(200===s.status?n&&n(N(s.responseText)):r&&r(s))},s.open("GET",e,t),s.responseType="text",s.send()}else if(e instanceof Event){var i=e.target.files,o=new FileReader;i[0].name;o.onload=function(e){var t=e.target.result;n(N(t))},o.readAsText(i[0])}},D=(C.loadBinaryFile=function(e,t,n,r){if(C.isNode||C.isMeteorServer);else if("string"==typeof e){var a=new XMLHttpRequest;a.open("GET",e,t),a.responseType="arraybuffer",a.onload=function(){for(var e=new Uint8Array(a.response),t=[],r=0;rn;n++){var a;a="object"==typeof e[n]?Object.keys(e[n]).sort().map(function(t){return t+"`"+e[n][t]}).join("`"):e[n],t[a]=e[n]}var s=[];for(var i in t)s.push(t[i]);return s},P=C.extend=function(e,t){e=e||{};for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);return e},B=C.flatArray=function(e){if(!e||0===e.length)return[];if("object"==typeof e&&e instanceof w.Recordset)return e.data.map(function(t){return t[e.columns[0].columnid]});var t=Object.keys(e[0])[0];return void 0===t?[]:e.map(function(e){return e[t]})};C.arrayOfArrays=function(e){return e.map(function(e){var t=[];for(var n in e)t.push(e[n]);return t})},C.xlsnc=function(e){var t=String.fromCharCode(65+e%26);return e>=26&&(e=(e/26|0)-1,t=String.fromCharCode(65+e%26)+t,e>26&&(e=(e/26|0)-1,t=String.fromCharCode(65+e%26)+t)),t},C.xlscn=function(e){var t=e.charCodeAt(0)-65;return e.length>1&&(t=26*(t+1)+e.charCodeAt(1)-65,e.length>2&&(t=26*(t+1)+e.charCodeAt(2)-65)),t},C.domEmptyChildren=function(e){for(var t=e.childNodes.length;t--;)e.removeChild(e.lastChild)},C.like=function(e,t,n){n||(n="");for(var r=0,a="^";r-1?"\\"+s:s,r++}return a+="$",(""+(t||"")).toUpperCase().search(RegExp(a.toUpperCase()))>-1};C.glob=function(e,t){for(var n=0,r="^";n-1?"\\"+a:a,n++}return r+="$",(""+(e||"")).toUpperCase().search(RegExp(r.toUpperCase()))>-1},C.findAlaSQLPath=function(){if(C.isWebWorker)return"";if(C.isMeteorClient)return"/packages/dist/";if(C.isMeteorServer)return"assets/packages/dist/";if(C.isNode)return x;if(C.isBrowser)for(var e=document.getElementsByTagName("script"),t=0;ts;s++){var o="\\"!==e[s-1]||"\\"===e[s-2];n?e[s]===t&&o&&(n=!1):r?"*"===e[s]&&"/"===e[s+1]?(e[s]=e[s+1]="",r=!1,s++):e[s]="":a?("\n"!==e[s+1]&&"\r"!==e[s+1]||(a=!1),e[s]=""):'"'===e[s]||"'"===e[s]?(n=!0,t=e[s]):"["===e[s]&&"@"!==e[s-1]?(n=!0,t="]"):"/"===e[s]&&"*"===e[s+1]&&(e[s]="",r=!0)}return e=e.join("").slice(2,-2)},w.parser=A,w.parser.parseError=function(e,t){throw new Error("Have you used a reserved keyword without `escaping` it?\n"+e)},w.parse=function(e){return A.parse(w.utils.uncomment(e))},w.engines={},w.databases={},w.databasenum=0,w.options={},w.options.errorlog=!1,w.options.valueof=!1,w.options.dropifnotexists=!1,w.options.datetimeformat="sql",w.options.casesensitive=!0,w.options.logtarget="output",w.options.logprompt=!0,w.options.progress=!1,w.options.modifier=void 0,w.options.columnlookup=10,w.options.autovertex=!0,w.options.usedbo=!0,w.options.autocommit=!0,w.options.cache=!0,w.options.tsql=!0,w.options.mysql=!0,w.options.postgres=!0,w.options.oracle=!0,w.options.sqlite=!0,w.options.orientdb=!0,w.options.nocount=!1,w.options.nan=!1,w.options.joinstar="overwrite",w.vars={},w.declares={},w.prompthistory=[],w.plugins={},w.from={},w.into={},w.fn={},w.aggr={},w.busy=0,w.MAXSQLCACHESIZE=1e4,w.DEFAULTDATABASEID="alasql",w.lastid=0,w.buffer={},w.use=function(e){if(e||(e=w.DEFAULTDATABASEID),w.useid!==e){w.useid=e;var t=w.databases[w.useid];w.tables=t.tables,t.resetSqlCache(),w.options.usedbo&&(w.databases.dbo=t)}},w.exec=function(e,t,n,r){if("function"==typeof t&&(r=n,n=t,t={}),delete w.error,t=t||{},!w.options.errorlog)return w.dexec(w.useid,e,t,n,r);try{return w.dexec(w.useid,e,t,n,r)}catch(a){w.error=a,n&&n(null,w.error)}},w.dexec=function(e,t,n,r,a){var s,i=w.databases[e];if(w.options.cache){s=D(t);var o=i.sqlCache[s];if(o&&i.dbversion===o.dbversion)return o(n,r)}var u=w.parse(t);if(u.statements){if(0===u.statements.length)return 0;if(1===u.statements.length){if(u.statements[0].compile){var o=u.statements[0].compile(e);if(!o)return;o.sql=t,o.dbversion=i.dbversion,w.options.cache&&(i.sqlCacheSize>w.MAXSQLCACHESIZE&&i.resetSqlCache(),i.sqlCacheSize++,i.sqlCache[s]=o);var c=w.res=o(n,r,a);return c}w.precompile(u.statements[0],w.useid,n);var c=w.res=u.statements[0].execute(e,n,r,a);return c}return r?void w.adrun(e,u,n,r,a):w.drun(e,u,n,r,a)}},w.drun=function(e,t,n,r,a){var s=w.useid;s!==e&&w.use(e);for(var i=[],o=0,u=t.statements.length;u>o;o++)if(t.statements[o])if(t.statements[o].compile){var c=t.statements[o].compile(w.useid);i.push(w.res=c(n,null,a))}else w.precompile(t.statements[o],w.useid,n),i.push(w.res=t.statements[o].execute(w.useid,n));return s!==e&&w.use(s),r&&r(i),w.res=i,i},w.adrun=function(e,t,n,r,a){function s(l){void 0!==l&&c.push(l);var h=t.statements.shift();if(h)if(h.compile){var d=h.compile(w.useid);d(n,s,a),w.options.progress!==!1&&w.options.progress(o,i++)}else w.precompile(t.statements[0],w.useid,n),h.execute(w.useid,n,s),w.options.progress!==!1&&w.options.progress(o,i++);else u!==e&&w.use(u),r(c)}var i=0,o=t.statements.length;w.options.progress!==!1&&w.options.progress(o,i++);var u=w.useid;u!==e&&w.use(e);var c=[];s()},w.compile=function(e,t){t=t||w.useid;var n=w.parse(e);if(1===n.statements.length){var r=n.statements[0].compile(t);return r.promise=function(e){return new Promise(function(t,n){r(e,function(e,r){r?n(r):t(e)})})},r}throw new Error("Cannot compile, because number of statements in SQL is not equal to 1")},C.global.Promise||C.isNode||function(){"use strict";function e(e){return"function"==typeof e||"object"==typeof e&&null!==e}function t(e){return"function"==typeof e}function n(e){J=e}function r(e){Y=e}function a(){return function(){process.nextTick(c)}}function s(){return function(){G(c)}}function i(){var e=0,t=new z(c),n=document.createTextNode("");return t.observe(n,{characterData:!0}),function(){n.data=e=++e%2}}function o(){var e=new MessageChannel;return e.port1.onmessage=c,function(){e.port2.postMessage(0)}}function u(){return function(){setTimeout(c,1)}}function c(){for(var e=0;X>e;e+=2){var t=te[e],n=te[e+1];t(n),te[e]=void 0,te[e+1]=void 0}X=0}function l(){try{var e=T,t=e("vertx");return G=t.runOnLoop||t.runOnContext,s()}catch(n){return u()}}function h(e,t){var n=this,r=new this.constructor(f);void 0===r[ae]&&I(r);var a=n._state;if(a){var s=arguments[a-1];Y(function(){N(a,r,s,n._result)})}else C(n,r,e,t);return r}function d(e){var t=this;if(e&&"object"==typeof e&&e.constructor===t)return e;var n=new t(f);return S(n,e),n}function f(){}function p(){return new TypeError("You cannot resolve a promise with itself")}function b(){return new TypeError("A promises callback cannot return that same promise.")}function g(e){try{return e.then}catch(t){return ue.error=t,ue}}function m(e,t,n,r){try{e.call(t,n,r)}catch(a){return a}}function v(e,t,n){Y(function(e){var r=!1,a=m(n,t,function(n){r||(r=!0,t!==n?S(e,n):x(e,n))},function(t){r||(r=!0,A(e,t))},"Settle: "+(e._label||" unknown promise"));!r&&a&&(r=!0,A(e,a))},e)}function E(e,t){t._state===ie?x(e,t._result):t._state===oe?A(e,t._result):C(t,void 0,function(t){S(e,t)},function(t){A(e,t)})}function y(e,n,r){n.constructor===e.constructor&&r===ne&&constructor.resolve===re?E(e,n):r===ue?A(e,ue.error):void 0===r?x(e,n):t(r)?v(e,n,r):x(e,n)}function S(t,n){t===n?A(t,p()):e(n)?y(t,n,g(n)):x(t,n)}function w(e){e._onerror&&e._onerror(e._result),k(e)}function x(e,t){e._state===se&&(e._result=t,e._state=ie,0!==e._subscribers.length&&Y(k,e))}function A(e,t){e._state===se&&(e._state=oe,e._result=t,Y(w,e))}function C(e,t,n,r){var a=e._subscribers,s=a.length;e._onerror=null,a[s]=t,a[s+ie]=n,a[s+oe]=r,0===s&&e._state&&Y(k,e)}function k(e){var t=e._subscribers,n=e._state;if(0!==t.length){for(var r,a,s=e._result,i=0;is;s++)t.resolve(e[s]).then(n,r)}:function(e,t){t(new TypeError("You must pass an array to race."))})}function U(e){var t=this,n=new t(f);return A(n,e),n}function F(){throw new TypeError("You must pass a resolver function as the first argument to the promise constructor")}function M(){throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.")}function _(e){this[ae]=D(),this._result=this._state=void 0,this._subscribers=[],f!==e&&("function"!=typeof e&&F(),this instanceof _?$(this,e):M())}function V(e,t){this._instanceConstructor=e,this.promise=new e(f),this.promise[ae]||I(this.promise),Array.isArray(t)?(this._input=t,this.length=t.length,this._remaining=t.length,this._result=new Array(this.length),0===this.length?x(this.promise,this._result):(this.length=this.length||0,this._enumerate(),0===this._remaining&&x(this.promise,this._result))):A(this.promise,j())}function j(){return new Error("Array Methods must be provided an Array")}function P(){var e;if("undefined"!=typeof global)e=global;else if("undefined"!=typeof self)e=self;else try{e=Function("return this")()}catch(t){throw new Error("polyfill failed because global object is unavailable in this environment")}var n=e.Promise;(!n||"[object Promise]"!==Object.prototype.toString.call(n.resolve())||n.cast)&&(e.Promise=pe)}var B;B=Array.isArray?Array.isArray:function(e){ +return"[object Array]"===Object.prototype.toString.call(e)};var G,J,H,W=B,X=0,Y=function(e,t){te[X]=e,te[X+1]=t,X+=2,2===X&&(J?J(c):H())},K="undefined"!=typeof window?window:void 0,Q=K||{},z=Q.MutationObserver||Q.WebKitMutationObserver,Z="undefined"==typeof self&&"undefined"!=typeof process&&"[object process]"==={}.toString.call(process),ee="undefined"!=typeof Uint8ClampedArray&&"undefined"!=typeof importScripts&&"undefined"!=typeof MessageChannel,te=new Array(1e3);H=Z?a():z?i():ee?o():void 0===K&&"function"==typeof T?l():u();var ne=h,re=d,ae=Math.random().toString(36).substring(16),se=void 0,ie=1,oe=2,ue=new O,ce=new O,le=0,he=L,de=q,fe=U,pe=_;_.all=he,_.race=de,_.resolve=re,_.reject=fe,_._setScheduler=n,_._setAsap=r,_._asap=Y,_.prototype={constructor:_,then:ne,"catch":function(e){return this.then(null,e)}};var be=V;V.prototype._enumerate=function(){for(var e=this.length,t=this._input,n=0;this._state===se&&e>n;n++)this._eachEntry(t[n],n)},V.prototype._eachEntry=function(e,t){var n=this._instanceConstructor,r=n.resolve;if(r===re){var a=g(e);if(a===ne&&e._state!==se)this._settledAt(e._state,t,e._result);else if("function"!=typeof a)this._remaining--,this._result[t]=e;else if(n===pe){var s=new n(f);y(s,e,a),this._willSettleAt(s,t)}else this._willSettleAt(new n(function(t){t(e)}),t)}else this._willSettleAt(r(e),t)},V.prototype._settledAt=function(e,t,n){var r=this.promise;r._state===se&&(this._remaining--,e===oe?A(r,n):this._result[t]=n),0===this._remaining&&x(r,this._result)},V.prototype._willSettleAt=function(e,t){var n=this;C(e,void 0,function(e){n._settledAt(ie,t,e)},function(e){n._settledAt(oe,t,e)})};var ge=P,me={Promise:pe,polyfill:ge};"function"==typeof define&&define.amd?define(function(){return me}):"undefined"!=typeof module&&module.exports?module.exports=me:"undefined"!=typeof this&&(this.ES6Promise=me),ge()}.call(this);var H=function(e,t,n,r){return new C.global.Promise(function(a,s){w(e,t,function(e,t){t?s(t):(n&&r&&w.options.progress!==!1&&w.options.progress(n,r),a(e))})})},W=function(e){if(!(e.length<1)){for(var t,n,r,a=[],s=0;s0?{status:1,values:r}:{status:-1,values:[]}}return"object"!=typeof e||null===e||"object"!=typeof t||"undefined"==typeof e[t[0]]?{status:-1,values:[]}:{status:1,values:[e[t[0]]]}},w.srch.APROP=function(e,t){return"object"!=typeof e||null===e||"object"!=typeof t||"undefined"==typeof e[t[0]]?{status:1,values:[void 0]}:{status:1,values:[e[t[0]]]}},w.srch.EQ=function(e,t,n,r){var a=t[0].toJS("x",""),s=new Function("x,alasql,params","return "+a);return e===s(e,w,r)?{status:1,values:[e]}:{status:-1,values:[]}},w.srch.LIKE=function(e,t,n,r){var a=t[0].toJS("x",""),s=new Function("x,alasql,params","return "+a);return e.toUpperCase().match(new RegExp("^"+s(e,w,r).toUpperCase().replace(/%/g,".*").replace(/\?|_/g,".")+"$"),"g")?{status:1,values:[e]}:{status:-1,values:[]}},w.srch.ATTR=function(e,t,n){if("XML"===n.mode)return"undefined"==typeof t?{status:1,values:[e.attributes]}:"object"==typeof e&&"object"==typeof e.attributes&&"undefined"!=typeof e.attributes[t[0]]?{status:1,values:[e.attributes[t[0]]]}:{status:-1,values:[]};throw new Error("ATTR is not using in usual mode")},w.srch.CONTENT=function(e,t,n){if("XML"===n.mode)return{status:1,values:[e.content]};throw new Error("ATTR is not using in usual mode")},w.srch.SHARP=function(e,t){var n=w.databases[w.useid].objects[t[0]];return"undefined"!=typeof e&&e===n?{status:1,values:[e]}:{status:-1,values:[]}},w.srch.PARENT=function(){return console.log("PARENT not implemented",arguments),{status:-1,values:[]}},w.srch.CHILD=function(e,t,n){return"object"==typeof e?e instanceof Array?{status:1,values:e}:"XML"===n.mode?{status:1,values:Object.keys(e.children).map(function(t){return e.children[t]})}:{status:1,values:Object.keys(e).map(function(t){return e[t]})}:{status:1,values:[]}},w.srch.KEYS=function(e){return"object"==typeof e&&null!==e?{status:1,values:Object.keys(e)}:{status:1,values:[]}},w.srch.WHERE=function(e,t,n,r){var a=t[0].toJS("x",""),s=new Function("x,alasql,params","return "+a);return s(e,w,r)?{status:1,values:[e]}:{status:-1,values:[]}},w.srch.NAME=function(e,t){return e.name===t[0]?{status:1,values:[e]}:{status:-1,values:[]}},w.srch.CLASS=function(e,t){return e.$class==t?{status:1,values:[e]}:{status:-1,values:[]}},w.srch.VERTEX=function(e){return"VERTEX"===e.$node?{status:1,values:[e]}:{status:-1,values:[]}},w.srch.INSTANCEOF=function(e,t){return e instanceof w.fn[t[0]]?{status:1,values:[e]}:{status:-1,values:[]}},w.srch.EDGE=function(e){return"EDGE"===e.$node?{status:1,values:[e]}:{status:-1,values:[]}},w.srch.EX=function(e,t,n,r){var a=t[0].toJS("x",""),s=new Function("x,alasql,params","return "+a);return{status:1,values:[s(e,w,r)]}},w.srch.RETURN=function(e,t,n,r){var a={};return t&&t.length>0&&t.forEach(function(t){var n=t.toJS("x",""),s=new Function("x,alasql,params","return "+n);"undefined"==typeof t.as&&(t.as=t.toString()),a[t.as]=s(e,w,r)}),{status:1,values:[a]}},w.srch.REF=function(e){return{status:1,values:[w.databases[w.useid].objects[e]]}},w.srch.OUT=function(e){if(e.$out&&e.$out.length>0){var t=e.$out.map(function(e){return w.databases[w.useid].objects[e]});return{status:1,values:t}}return{status:-1,values:[]}},w.srch.OUTOUT=function(e){if(e.$out&&e.$out.length>0){var t=[];return e.$out.forEach(function(e){var n=w.databases[w.useid].objects[e];n&&n.$out&&n.$out.length>0&&n.$out.forEach(function(e){t=t.concat(w.databases[w.useid].objects[e])})}),{status:1,values:t}}return{status:-1,values:[]}},w.srch.IN=function(e){if(e.$in&&e.$in.length>0){var t=e.$in.map(function(e){return w.databases[w.useid].objects[e]});return{status:1,values:t}}return{status:-1,values:[]}},w.srch.ININ=function(e){if(e.$in&&e.$in.length>0){var t=[];return e.$in.forEach(function(e){var n=w.databases[w.useid].objects[e];n&&n.$in&&n.$in.length>0&&n.$in.forEach(function(e){t=t.concat(w.databases[w.useid].objects[e])})}),{status:1,values:t}}return{status:-1,values:[]}},w.srch.AS=function(e,t){return w.vars[t[0]]=e,{status:1,values:[e]}},w.srch.AT=function(e,t){var n=w.vars[t[0]];return{status:1,values:[n]}},w.srch.CLONEDEEP=function(e){var t=_(e);return{status:1,values:[t]}},w.srch.SET=function(e,t,n,r){var a=t.map(function(e){return"@"===e.method?"alasql.vars['"+e.variable+"']="+e.expression.toJS("x",""):"$"===e.method?"params['"+e.variable+"']="+e.expression.toJS("x",""):"x['"+e.column.columnid+"']="+e.expression.toJS("x","")}).join(";"),s=new Function("x,params,alasql",a);return s(e,r,w),{status:1,values:[e]}},w.srch.ROW=function(e,t,n,r){var a="var y;return [";a+=t.map(function(e){return e.toJS("x","")}).join(","),a+="]";var s=new Function("x,params,alasql",a),i=s(e,r,w);return{status:1,values:[i]}},w.srch.D3=function(e){return"VERTEX"!==e.$node&&"EDGE"===e.$node&&(e.source=e.$in[0],e.target=e.$out[0]),{status:1,values:[e]}};var ee=function(e){if(e){if(e&&1===e.length&&e[0].expression&&"function"==typeof e[0].expression){var t=e[0].expression;return function(e,n){var r=t(e),a=t(n);return r>a?1:r===a?0:-1}}var n="",r="";return e.forEach(function(e){var t="";if(e.expression instanceof z.NumValue&&(e.expression=self.columns[e.expression.value-1]),e.expression instanceof z.Column){var a=e.expression.columnid;w.options.valueof&&(t=".valueOf()"),e.nocase&&(t+=".toUpperCase()"),"_"===a?(n+="if(a"+t+("ASC"===e.direction?">":"<")+"b"+t+")return 1;",n+="if(a"+t+"==b"+t+"){"):(n+="if((a['"+a+"']||'')"+t+("ASC"===e.direction?">":"<")+"(b['"+a+"']||'')"+t+")return 1;",n+="if((a['"+a+"']||'')"+t+"==(b['"+a+"']||'')"+t+"){")}else t=".valueOf()",e.nocase&&(t+=".toUpperCase()"),n+="if(("+e.toJS("a","")+"||'')"+t+("ASC"===e.direction?">(":"<(")+e.toJS("b","")+"||'')"+t+")return 1;",n+="if(("+e.toJS("a","")+"||'')"+t+"==("+e.toJS("b","")+"||'')"+t+"){";r+="}"}),n+="return 0;",n+=r+"return -1",new Function("a,b",n)}};w.srch.ORDERBY=function(e,t){var n=e.sort(ee(t));return{status:1,values:n}};var te=function(e){for(var t=0,n=e.sources.length;n>t;t++){var r=e.sources[t];if(delete r.ix,t>0&&"ix"==r.optimization&&r.onleftfn&&r.onrightfn){if(r.databaseid&&w.databases[r.databaseid].tables[r.tableid]){w.databases[r.databaseid].tables[r.tableid].indices||(e.database.tables[r.tableid].indices={});var a=w.databases[r.databaseid].tables[r.tableid].indices[D(r.onrightfns+"`"+r.srcwherefns)];!w.databases[r.databaseid].tables[r.tableid].dirty&&a&&(r.ix=a)}if(!r.ix){r.ix={};for(var s,i={},o=0,u=r.data.length;(s=r.data[o])||r.getfn&&(s=r.getfn(o))||u>o;){if(r.getfn&&!r.dontcache&&(r.data[o]=s),i[r.alias||r.tableid]=s,r.srcwherefn(i,e.params,w)){var c=r.onrightfn(i,e.params,w),l=r.ix[c];l||(l=r.ix[c]=[]),l.push(s)}o++}r.databaseid&&w.databases[r.databaseid].tables[r.tableid]&&(w.databases[r.databaseid].tables[r.tableid].indices[D(r.onrightfns+"`"+r.srcwherefns)]=r.ix)}}else if(r.wxleftfn){if(w.databases[r.databaseid].engineid||(a=w.databases[r.databaseid].tables[r.tableid].indices[D(r.wxleftfns+"`")]),!w.databases[r.databaseid].tables[r.tableid].dirty&&a)r.ix=a,r.data=r.ix[r.wxrightfn(null,e.params,w)];else{for(r.ix={},i={},o=0,u=r.data.length;(s=r.data[o])||r.getfn&&(s=r.getfn(o))||u>o;)r.getfn&&!r.dontcache&&(r.data[o]=s),i[r.alias||r.tableid]=r.data[o],c=r.wxleftfn(i,e.params,w),l=r.ix[c],l||(l=r.ix[c]=[]),l.push(r.data[o]),o++;w.databases[r.databaseid].engineid||(w.databases[r.databaseid].tables[r.tableid].indices[D(r.wxleftfns+"`")]=r.ix)}r.srcwherefns&&(r.data?(i={},r.data=r.data.filter(function(t){return i[r.alias]=t,r.srcwherefn(i,e.params,w)})):r.data=[])}else if(r.srcwherefns&&!r.dontcache)if(r.data){var i={};r.data=r.data.filter(function(t){return i[r.alias]=t,r.srcwherefn(i,e.params,w)}),i={},o=0,u=r.data.length;for(var h=[];(s=r.data[o])||r.getfn&&(s=r.getfn(o))||u>o;)r.getfn&&!r.dontcache&&(r.data[o]=s),i[r.alias]=s,r.srcwherefn(i,e.params,w)&&h.push(s),o++;r.data=h}else r.data=[];r.databaseid&&w.databases[r.databaseid].tables[r.tableid]}};z.Select=function(e){return z.extend(this,e)},z.Select.prototype.toString=function(){var e="";return this.explain&&(e+="EXPLAIN "),e+="SELECT ",this.modifier&&(e+=this.modifier+" "),this.top&&(e+="TOP "+this.top.value+" ",this.percent&&(e+="PERCENT ")),e+=this.columns.map(function(e){var t=e.toString();return"undefined"!=typeof e.as&&(t+=" AS "+e.as),t}).join(", "),this.from&&(e+=" FROM "+this.from.map(function(e){var t=e.toString();return e.as&&(t+=" AS "+e.as),t}).join(",")),this.joins&&(e+=this.joins.map(function(e){var t=" ";if(e.joinmode&&(t+=e.joinmode+" "),e.table)t+="JOIN "+e.table.toString();else{if(!(e instanceof z.Apply))throw new Error("Wrong type in JOIN mode");t+=e.toString()}return e.using&&(t+=" USING "+e.using.toString()),e.on&&(t+=" ON "+e.on.toString()),t})),this.where&&(e+=" WHERE "+this.where.toString()),this.group&&this.group.length>0&&(e+=" GROUP BY "+this.group.map(function(e){return e.toString()}).join(", ")),this.having&&(e+=" HAVING "+this.having.toString()),this.order&&this.order.length>0&&(e+=" ORDER BY "+this.order.map(function(e){return e.toString()}).join(", ")),this.limit&&(e+=" LIMIT "+this.limit.value),this.offset&&(e+=" OFFSET "+this.offset.value),this.union&&(e+=" UNION "+(this.corresponding?"CORRESPONDING ":"")+this.union.toString()),this.unionall&&(e+=" UNION ALL "+(this.corresponding?"CORRESPONDING ":"")+this.unionall.toString()),this.except&&(e+=" EXCEPT "+(this.corresponding?"CORRESPONDING ":"")+this.except.toString()),this.intersect&&(e+=" INTERSECT "+(this.corresponding?"CORRESPONDING ":"")+this.intersect.toString()),e},z.Select.prototype.toJS=function(e){var t="alasql.utils.flatArray(this.queriesfn["+(this.queriesidx-1)+"](this.params,null,"+e+"))[0]";return t},z.Select.prototype.compile=function(e){var t=w.databases[e],n=new Q;if(n.removeKeys=[],n.aggrKeys=[],n.explain=this.explain,n.explaination=[],n.explid=1,n.modifier=this.modifier,n.database=t,this.compileWhereExists(n),this.compileQueries(n),n.defcols=this.compileDefCols(n,e),n.fromfn=this.compileFrom(n),this.joins&&this.compileJoins(n),n.rownums=[],this.compileSelectGroup0(n),this.group||n.selectGroup.length>0?n.selectgfns=this.compileSelectGroup1(n):n.selectfns=this.compileSelect1(n),this.compileRemoveColumns(n),this.where&&this.compileWhereJoins(n),n.wherefn=this.compileWhere(n),(this.group||n.selectGroup.length>0)&&(n.groupfn=this.compileGroup(n)),this.having&&(n.havingfn=this.compileHaving(n)),this.order&&(n.orderfn=this.compileOrder(n)),this.group||n.selectGroup.length>0?n.selectgfn=this.compileSelectGroup2(n):n.selectfn=this.compileSelect2(n),n.distinct=this.distinct,this.pivot&&(n.pivotfn=this.compilePivot(n)),this.unpivot&&(n.pivotfn=this.compileUnpivot(n)),this.top?n.limit=this.top.value:this.limit&&(n.limit=this.limit.value,this.offset&&(n.offset=this.offset.value)),n.percent=this.percent,n.corresponding=this.corresponding,this.union?(n.unionfn=this.union.compile(e),this.union.order?n.orderfn=this.union.compileOrder(n):n.orderfn=null):this.unionall?(n.unionallfn=this.unionall.compile(e),this.unionall.order?n.orderfn=this.unionall.compileOrder(n):n.orderfn=null):this.except?(n.exceptfn=this.except.compile(e),this.except.order?n.orderfn=this.except.compileOrder(n):n.orderfn=null):this.intersect&&(n.intersectfn=this.intersect.compile(e),this.intersect.order?n.intersectfn=this.intersect.compileOrder(n):n.orderfn=null),this.into){if(this.into instanceof z.Table)w.options.autocommit&&w.databases[this.into.databaseid||e].engineid?n.intoallfns='return alasql.engines["'+w.databases[this.into.databaseid||e].engineid+'"].intoTable("'+(this.into.databaseid||e)+'","'+this.into.tableid+'",this.data, columns, cb);':n.intofns="alasql.databases['"+(this.into.databaseid||e)+"'].tables['"+this.into.tableid+"'].data.push(r);";else if(this.into instanceof z.VarValue)n.intoallfns='alasql.vars["'+this.into.variable+'"]=this.data;res=this.data.length;if(cb)res=cb(res);return res;';else if(this.into instanceof z.FuncValue){var r="return alasql.into['"+this.into.funcid.toUpperCase()+"'](";this.into.args&&this.into.args.length>0?(r+=this.into.args[0].toJS()+",",r+=this.into.args.length>1?this.into.args[1].toJS()+",":"undefined,"):r+="undefined, undefined,",n.intoallfns=r+"this.data,columns,cb)"}else this.into instanceof z.ParamValue&&(n.intofns="params['"+this.into.param+"'].push(r)");n.intofns?n.intofn=new Function("r,i,params,alasql","var y;"+n.intofns):n.intoallfns&&(n.intoallfn=new Function("columns,cb,params,alasql","var y;"+n.intoallfns))}var a=function(e,t,r){n.params=e;var a=o(n,r,function(e){if(n.rownums.length>0)for(var r=0,a=e.length;a>r;r++)for(var s=0,i=n.rownums.length;i>s;s++)e[r][n.rownums[s]]=r+1;var o=f(n,e);return t&&t(o),o});return a};return a.query=n,a},z.Select.prototype.execute=function(e,t,n){return this.compile(e)(t,n)},z.ExistsValue=function(e){return z.extend(this,e)},z.ExistsValue.prototype.toString=function(){return"EXISTS("+this.value.toString()+")"},z.ExistsValue.prototype.toType=function(){return"boolean"},z.ExistsValue.prototype.toJS=function(e,t,n){return"this.existsfn["+this.existsidx+"](params,null,"+e+").data.length"},z.Select.prototype.compileWhereExists=function(e){this.exists&&(e.existsfn=this.exists.map(function(t){var n=t.compile(e.database.databaseid);return n.query.modifier="RECORDSET",n}))},z.Select.prototype.compileQueries=function(e){this.queries&&(e.queriesfn=this.queries.map(function(t){var n=t.compile(e.database.databaseid);return n.query.modifier="RECORDSET",n}))},w.precompile=function(e,t,n){e&&(e.params=n,e.queries&&(e.queriesfn=e.queries.map(function(n){var r=n.compile(t||e.database.databaseid);return r.query.modifier="RECORDSET",r})),e.exists&&(e.existsfn=e.exists.map(function(n){var r=n.compile(t||e.database.databaseid);return r.query.modifier="RECORDSET",r})))},z.Select.prototype.compileFrom=function(e){var t=this;e.sources=[],e.aliases={},t.from&&(t.from.forEach(function(t){var r=t.as||t.tableid;if(t instanceof z.Table)e.aliases[r]={tableid:t.tableid,databaseid:t.databaseid||e.database.databaseid,type:"table"};else if(t instanceof z.Select)e.aliases[r]={type:"subquery"};else if(t instanceof z.Search)e.aliases[r]={type:"subsearch"};else if(t instanceof z.ParamValue)e.aliases[r]={type:"paramvalue"};else if(t instanceof z.FuncValue)e.aliases[r]={type:"funcvalue"};else if(t instanceof z.VarValue)e.aliases[r]={type:"varvalue"};else if(t instanceof z.FromData)e.aliases[r]={type:"fromdata"};else if(t instanceof z.Json)e.aliases[r]={type:"json"};else{if(!t.inserted)throw new Error("Wrong table at FROM");e.aliases[r]={type:"inserted"}}var a={alias:r,databaseid:t.databaseid||e.database.databaseid,tableid:t.tableid,joinmode:"INNER",onmiddlefn:n,srcwherefns:"",srcwherefn:n};if(t instanceof z.Table)a.columns=w.databases[a.databaseid].tables[a.tableid].columns,w.options.autocommit&&w.databases[a.databaseid].engineid&&!w.databases[a.databaseid].tables[a.tableid].view?a.datafn=function(e,t,n,r,s){return s.engines[s.databases[a.databaseid].engineid].fromTable(a.databaseid,a.tableid,n,r,e)}:w.databases[a.databaseid].tables[a.tableid].view?a.datafn=function(e,t,n,r,s){var i=s.databases[a.databaseid].tables[a.tableid].select(t);return n&&(i=n(i,r,e)),i}:a.datafn=function(e,t,n,r,s){var i=s.databases[a.databaseid].tables[a.tableid].data;return n&&(i=n(i,r,e)),i};else if(t instanceof z.Select)a.subquery=t.compile(e.database.databaseid),"undefined"==typeof a.subquery.query.modifier&&(a.subquery.query.modifier="RECORDSET"),a.columns=a.subquery.query.columns,a.datafn=function(e,t,n,r,s){var i;return a.subquery(e.params,function(t){return i=t.data,n&&(i=n(i,r,e)),i}),i};else if(t instanceof z.Search)a.subsearch=t,a.columns=[],a.datafn=function(e,t,n,r,s){var i;return a.subsearch.execute(e.database.databaseid,e.params,function(t){return i=t,n&&(i=n(i,r,e)),i}),i};else if(t instanceof z.ParamValue){var s="var res = alasql.prepareFromData(params['"+t.param+"']";t.array&&(s+=",true"),s+=");if(cb)res=cb(res,idx,query);return res",a.datafn=new Function("query,params,cb,idx,alasql",s)}else if(t.inserted){var s="var res = alasql.prepareFromData(alasql.inserted";t.array&&(s+=",true"),s+=");if(cb)res=cb(res,idx,query);return res",a.datafn=new Function("query,params,cb,idx,alasql",s)}else if(t instanceof z.Json){var s="var res = alasql.prepareFromData("+t.toJS();t.array&&(s+=",true"),s+=");if(cb)res=cb(res,idx,query);return res",a.datafn=new Function("query,params,cb,idx,alasql",s)}else if(t instanceof z.VarValue){var s="var res = alasql.prepareFromData(alasql.vars['"+t.variable+"']";t.array&&(s+=",true"),s+=");if(cb)res=cb(res,idx,query);return res",a.datafn=new Function("query,params,cb,idx,alasql",s)}else if(t instanceof z.FuncValue){var i="var res=alasql.from['"+t.funcid.toUpperCase()+"'](";t.args&&t.args.length>0?(i+=t.args[0]?t.args[0].toJS("query.oldscope")+",":"null,",i+=t.args[1]?t.args[1].toJS("query.oldscope")+",":"null,"):i+="null,null,",i+="cb,idx,query",i+=");/*if(cb)res=cb(res,idx,query);*/return res",a.datafn=new Function("query, params, cb, idx, alasql",i)}else{if(!(t instanceof z.FromData))throw new Error("Wrong table at FROM");a.datafn=function(e,n,r,a,s){var i=t.data;return r&&(i=r(i,a,e)),i}}e.sources.push(a)}),e.defaultTableid=e.sources[0].alias)},w.prepareFromData=function(e,t){var n=e;if("string"==typeof e){if(n=e.split(/\r?\n/),t)for(var r=0,a=n.length;a>r;r++)n[r]=[n[r]]}else if(t){n=[];for(var r=0,a=e.length;a>r;r++)n.push([e[r]])}else if("object"==typeof e&&!(e instanceof Array))if("undefined"!=typeof Mongo&&"undefined"!=typeof Mongo.Collection&&e instanceof Mongo.Collection)n=e.find().fetch();else{n=[];for(var s in e)e.hasOwnProperty(s)&&n.push([s,e[s]])}return n},z.Select.prototype.compileJoins=function(e){this.joins.forEach(function(t){if("CROSS"==t.joinmode){if(t.using||t.on)throw new Error("CROSS JOIN cannot have USING or ON clauses");"INNER"==t.joinmode}var r,a;if(t instanceof z.Apply)r={alias:t.as,applymode:t.applymode,onmiddlefn:n,srcwherefns:"",srcwherefn:n,columns:[]},r.applyselect=t.select.compile(e.database.databaseid),r.columns=r.applyselect.query.columns,r.datafn=function(e,t,n,r,a){var s;return n&&(s=n(s,r,e)),s},e.sources.push(r);else{if(t.table){if(a=t.table,r={alias:t.as||a.tableid,databaseid:a.databaseid||e.database.databaseid,tableid:a.tableid,joinmode:t.joinmode,onmiddlefn:n,srcwherefns:"",srcwherefn:n,columns:[]},!w.databases[r.databaseid].tables[r.tableid])throw new Error("Table '"+r.tableid+"' is not exists in database '"+r.databaseid)+"'";r.columns=w.databases[r.databaseid].tables[r.tableid].columns,w.options.autocommit&&w.databases[r.databaseid].engineid?r.datafn=function(e,t,n,a,s){return s.engines[s.databases[r.databaseid].engineid].fromTable(r.databaseid,r.tableid,n,a,e)}:w.databases[r.databaseid].tables[r.tableid].view?r.datafn=function(e,t,n,a,s){var i=s.databases[r.databaseid].tables[r.tableid].select(t);return n&&(i=n(i,a,e)),i}:r.datafn=function(e,t,n,a,s){var i=s.databases[r.databaseid].tables[r.tableid].data;return n&&(i=n(i,a,e)),i},e.aliases[r.alias]={tableid:a.tableid,databaseid:a.databaseid||e.database.databaseid}}else if(t.select){var a=t.select;r={alias:t.as,joinmode:t.joinmode,onmiddlefn:n,srcwherefns:"",srcwherefn:n,columns:[]},r.subquery=a.compile(e.database.databaseid),"undefined"==typeof r.subquery.query.modifier&&(r.subquery.query.modifier="RECORDSET"),r.columns=r.subquery.query.columns,r.datafn=function(e,t,n,a,s){return r.subquery(e.params,null,n,a).data},e.aliases[r.alias]={type:"subquery"}}else if(t.param){r={alias:t.as,joinmode:t.joinmode,onmiddlefn:n,srcwherefns:"",srcwherefn:n};var s=t.param.param,i="var res=alasql.prepareFromData(params['"+s+"']";t.array&&(i+=",true"),i+=");if(cb)res=cb(res, idx, query);return res",r.datafn=new Function("query,params,cb,idx, alasql",i),e.aliases[r.alias]={type:"paramvalue"}}else if(t.variable){r={alias:t.as,joinmode:t.joinmode,onmiddlefn:n,srcwherefns:"",srcwherefn:n};var i="var res=alasql.prepareFromData(alasql.vars['"+t.variable+"']";t.array&&(i+=",true"),i+=");if(cb)res=cb(res, idx, query);return res",r.datafn=new Function("query,params,cb,idx, alasql",i),e.aliases[r.alias]={type:"varvalue"}}else if(t.funcid){r={alias:t.as,joinmode:t.joinmode,onmiddlefn:n,srcwherefns:"",srcwherefn:n};var o="var res=alasql.from['"+js.funcid.toUpperCase()+"'](";t.args&&t.args.length>0?(o+=t.args[0]?t.args[0].toJS("query.oldscope")+",":"null,",o+=t.args[1]?t.args[1].toJS("query.oldscope")+",":"null,"):o+="null,null,",o+="cb,idx,query",o+=");/*if(cb)res=cb(res,idx,query);*/return res",r.datafn=new Function("query, params, cb, idx, alasql",o),e.aliases[r.alias]={type:"funcvalue"}}var u=r.alias;if(t.natural){if(t.using||t.on)throw new Error("NATURAL JOIN cannot have USING or ON clauses");if(e.sources.length>0){var c=e.sources[e.sources.length-1],l=w.databases[c.databaseid].tables[c.tableid],h=w.databases[r.databaseid].tables[r.tableid];if(!l||!h)throw new Error("In this version of Alasql NATURAL JOIN works for tables with predefined columns only");var d=l.columns.map(function(e){return e.columnid}),f=h.columns.map(function(e){return e.columnid});t.using=q(d,f).map(function(e){return{columnid:e}})}}if(t.using){var c=e.sources[e.sources.length-1];r.onleftfns=t.using.map(function(e){return"p['"+(c.alias||c.tableid)+"']['"+e.columnid+"']"}).join('+"`"+'),r.onleftfn=new Function("p,params,alasql","var y;return "+r.onleftfns),r.onrightfns=t.using.map(function(e){return"p['"+(r.alias||r.tableid)+"']['"+e.columnid+"']"}).join('+"`"+'),r.onrightfn=new Function("p,params,alasql","var y;return "+r.onrightfns),r.optimization="ix"}else if(t.on)if(t.on instanceof z.Op&&"="==t.on.op&&!t.on.allsome){r.optimization="ix";var p="",b="",g="",m=!1,v=t.on.left.toJS("p",e.defaultTableid,e.defcols),E=t.on.right.toJS("p",e.defaultTableid,e.defcols);v.indexOf("p['"+u+"']")>-1&&!(E.indexOf("p['"+u+"']")>-1)?(v.match(/p\[\'.*?\'\]/g)||[]).every(function(e){return e=="p['"+u+"']"})?b=v:m=!0:!(v.indexOf("p['"+u+"']")>-1)&&E.indexOf("p['"+u+"']")>-1&&(E.match(/p\[\'.*?\'\]/g)||[]).every(function(e){return e=="p['"+u+"']"})?p=v:m=!0,E.indexOf("p['"+u+"']")>-1&&!(v.indexOf("p['"+u+"']")>-1)?(E.match(/p\[\'.*?\'\]/g)||[]).every(function(e){return e=="p['"+u+"']"})?b=E:m=!0:!(E.indexOf("p['"+u+"']")>-1)&&v.indexOf("p['"+u+"']")>-1&&(v.match(/p\[\'.*?\'\]/g)||[]).every(function(e){return e=="p['"+u+"']"})?p=E:m=!0,m&&(b="",p="",g=t.on.toJS("p",e.defaultTableid,e.defcols),r.optimization="no"),r.onleftfns=p,r.onrightfns=b,r.onmiddlefns=g||"true",r.onleftfn=new Function("p,params,alasql","var y;return "+r.onleftfns),r.onrightfn=new Function("p,params,alasql","var y;return "+r.onrightfns),r.onmiddlefn=new Function("p,params,alasql","var y;return "+r.onmiddlefns)}else r.optimization="no",r.onmiddlefns=t.on.toJS("p",e.defaultTableid,e.defcols),r.onmiddlefn=new Function("p,params,alasql","var y;return "+t.on.toJS("p",e.defaultTableid,e.defcols));e.sources.push(r)}})},z.Select.prototype.compileWhere=function(e){return this.where?"function"==typeof this.where?this.where:(s=this.where.toJS("p",e.defaultTableid,e.defcols),e.wherefns=s,new Function("p,params,alasql","var y;return "+s)):function(){return!0}},z.Select.prototype.compileWhereJoins=function(e){},z.Select.prototype.compileGroup=function(e){if(e.sources.length>0)var t=e.sources[0].alias;else var t="";var n=e.defcols,r=[[]];this.group&&(r=b(this.group,e));var a=[];r.forEach(function(e){a=I(a,e)}),e.allgroups=a,e.ingroup=[];var s="";return r.forEach(function(r){s+="var g=this.xgroups[";var i=r.map(function(t){var n=t.split(" ")[0],r=t.split(" ")[1];return""===n?"1":(e.ingroup.push(n),r)});0===i.length&&(i=["''"]),s+=i.join('+"`"+'),s+="];if(!g) {this.groups.push((g=this.xgroups[",s+=i.join('+"`"+'),s+="] = {",s+=r.map(function(e){var t=e.split(" ")[0],n=e.split(" ")[1];return""===t?"":"'"+t+"':"+n+","}).join("");var o=L(a,r);s+=o.map(function(e){var t=e.split(" ")[0];return"'"+t+"':null,"}).join("");var u="",c="";"undefined"!=typeof e.groupStar&&(c+="for(var f in p['"+e.groupStar+"']) {g[f]=p['"+e.groupStar+"'][f];};"),s+=e.selectGroup.map(function(r){var a=r.expression.toJS("p",t,n),s=r.nick;return r instanceof z.AggrValue?(r.distinct&&(u+=",g['$$_VALUES_"+s+"']={},g['$$_VALUES_"+s+"']["+a+"]=true"),"SUM"===r.aggregatorid?"'"+s+"':("+a+")||0,":"MIN"===r.aggregatorid||"MAX"===r.aggregatorid||"FIRST"===r.aggregatorid||"LAST"===r.aggregatorid?"'"+s+"':"+a+",":"ARRAY"===r.aggregatorid?"'"+s+"':["+a+"],":"COUNT"===r.aggregatorid?"*"===r.expression.columnid?"'"+s+"':1,":"'"+s+"':(typeof "+a+' != "undefined")?1:0,':"AVG"===r.aggregatorid?(e.removeKeys.push("_SUM_"+s),e.removeKeys.push("_COUNT_"+s),"'"+s+"':"+a+",'_SUM_"+s+"':("+a+")||0,'_COUNT_"+s+"':(typeof "+a+' != "undefined")?1:0,'):"AGGR"===r.aggregatorid?(u+=",g['"+s+"']="+r.expression.toJS("g",-1),""):"REDUCE"===r.aggregatorid?(e.aggrKeys.push(r),"'"+s+"':alasql.aggr['"+r.funcid+"']("+a+",undefined,1),"):""):""}).join(""),s+="}"+u+",g));"+c+"} else {",s+=e.selectGroup.map(function(e){var r=e.nick,a=e.expression.toJS("p",t,n);if(e instanceof z.AggrValue){var s="",i="";if(e.distinct)var s="if(typeof "+a+'!="undefined" && (!g[\'$$_VALUES_'+r+"']["+a+"])) {",i="g['$$_VALUES_"+r+"']["+a+"]=true;}";return"SUM"===e.aggregatorid?s+"g['"+r+"']+=("+a+"||0);"+i:"COUNT"===e.aggregatorid?"*"===e.expression.columnid?s+"g['"+r+"']++;"+i:s+"if(typeof "+a+'!="undefined") g[\''+r+"']++;"+i:"ARRAY"===e.aggregatorid?s+"g['"+r+"'].push("+a+");"+i:"MIN"===e.aggregatorid?s+"g['"+r+"']=Math.min(g['"+r+"'],"+a+");"+i:"MAX"===e.aggregatorid?s+"g['"+r+"']=Math.max(g['"+r+"'],"+a+");"+i:"FIRST"===e.aggregatorid?"":"LAST"===e.aggregatorid?s+"g['"+r+"']="+a+";"+i:"AVG"===e.aggregatorid?""+s+"g['_SUM_"+r+"']+=(y="+a+")||0;g['_COUNT_"+r+"']+=(typeof y!=\"undefined\")?1:0;g['"+r+"']=g['_SUM_"+r+"']/g['_COUNT_"+r+"'];"+i:"AGGR"===e.aggregatorid?""+s+"g['"+r+"']="+e.expression.toJS("g",-1)+";"+i:"REDUCE"===e.aggregatorid?""+s+"g['"+r+"']=alasql.aggr."+e.funcid+"("+a+",g['"+r+"'],2);"+i:""}return""}).join(""),s+="}"}),new Function("p,params,alasql","var y;"+s)},z.Select.prototype.compileSelect1=function(t){var n=this;t.columns=[],t.xcolumns={},t.selectColumns={},t.dirtyColumns=!1;var r="var r={",a="",s=[];return this.columns.forEach(function(r){if(r instanceof z.Column)if("*"===r.columnid)if(r.func)a+="r=params['"+r.param+"'](p['"+t.sources[0].alias+"'],p,params,alasql);";else if(r.tableid){ +var i=p(t,r.tableid,!1);i.s&&(s=s.concat(i.s)),a+=i.sp}else for(var o in t.aliases){var i=p(t,o,!0);i.s&&(s=s.concat(i.s)),a+=i.sp}else{var u=r.tableid,c=r.databaseid||t.sources[0].databaseid||t.database.databaseid;if(u||(u=t.defcols[r.columnid]),u||(u=t.defaultTableid),"_"!==r.columnid?s.push("'"+k(r.as||r.columnid)+"':p['"+u+"']['"+r.columnid+"']"):s.push("'"+k(r.as||r.columnid)+"':p['"+u+"']"),t.selectColumns[k(r.as||r.columnid)]=!0,t.aliases[u]&&"table"===t.aliases[u].type){if(!w.databases[c].tables[t.aliases[u].tableid])throw new Error("Table '"+u+"' does not exists in database");var l=w.databases[c].tables[t.aliases[u].tableid].columns,h=w.databases[c].tables[t.aliases[u].tableid].xcolumns;if(h&&l.length>0){var d=h[r.columnid];if(void 0===d)throw new Error("Column does not exists: "+r.columnid);var f={columnid:r.as||r.columnid,dbtypeid:d.dbtypeid,dbsize:d.dbsize,dbpecision:d.dbprecision,dbenum:d.dbenum};t.columns.push(f),t.xcolumns[f.columnid]=f}else{var f={columnid:r.as||r.columnid};t.columns.push(f),t.xcolumns[f.columnid]=f,t.dirtyColumns=!0}}else{var f={columnid:r.as||r.columnid};t.columns.push(f),t.xcolumns[f.columnid]=f}}else if(r instanceof z.AggrValue){n.group||(n.group=[""]),r.as||(r.as=k(r.toString())),"SUM"===r.aggregatorid||"MAX"===r.aggregatorid||"MIN"===r.aggregatorid||"FIRST"===r.aggregatorid||"LAST"===r.aggregatorid||"AVG"===r.aggregatorid||"ARRAY"===r.aggregatorid||"REDUCE"===r.aggregatorid?s.push("'"+k(r.as)+"':"+e(r.expression.toJS("p",t.defaultTableid,t.defcols))):"COUNT"===r.aggregatorid&&s.push("'"+k(r.as)+"':1");var f={columnid:r.as||r.columnid||r.toString()};t.columns.push(f),t.xcolumns[f.columnid]=f}else{s.push("'"+k(r.as||r.columnid||r.toString())+"':"+e(r.toJS("p",t.defaultTableid,t.defcols))),t.selectColumns[k(r.as||r.columnid||r.toString())]=!0;var f={columnid:r.as||r.columnid||r.toString()};t.columns.push(f),t.xcolumns[f.columnid]=f}}),r+=s.join(",")+"};"+a},z.Select.prototype.compileSelect2=function(e){var t=e.selectfns;return this.orderColumns&&this.orderColumns.length>0&&this.orderColumns.forEach(function(n,r){var a="$$$"+r;t+=n instanceof z.Column&&e.xcolumns[n.columnid]?"r['"+a+"']=r['"+n.columnid+"'];":"r['"+a+"']="+n.toJS("p",e.defaultTableid,e.defcols)+";",e.removeKeys.push(a)}),new Function("p,params,alasql","var y;"+t+"return r")},z.Select.prototype.compileSelectGroup0=function(e){var t=this;t.columns.forEach(function(n,r){if(n instanceof z.Column&&"*"===n.columnid)e.groupStar=n.tableid||"default";else{var a;a=k(n instanceof z.Column?n.columnid:n.toString(!0));for(var s=0;r>s;s++)if(a===t.columns[s].nick){a=t.columns[s].nick+":"+r;break}n.nick=a,!n.funcid||"ROWNUM"!==n.funcid.toUpperCase()&&"ROW_NUMBER"!==n.funcid.toUpperCase()||e.rownums.push(n.as)}}),this.columns.forEach(function(t){t.findAggregator&&t.findAggregator(e)}),this.having&&this.having.findAggregator&&this.having.findAggregator(e)},z.Select.prototype.compileSelectGroup1=function(t){var n=this,r="var r = {};";return n.columns.forEach(function(n){if(n instanceof z.Column&&"*"===n.columnid)return r+="for(var k in g) {r[k]=g[k]};","";var a=n.as;void 0===a&&(a=n instanceof z.Column?k(n.columnid):n.nick),t.groupColumns[a]=n.nick,r+="r['"+a+"']=",r+=e(n.toJS("g",""))+";";for(var s=0;s-1&&(n+="r['"+(t.as||t.nick)+"']=g['"+t.nick+"'];")}),this.orderColumns&&this.orderColumns.length>0&&this.orderColumns.forEach(function(t,r){var a="$$$"+r;n+=t instanceof z.Column&&e.groupColumns[t.columnid]?"r['"+a+"']=r['"+t.columnid+"'];":"r['"+a+"']="+t.toJS("g","")+";",e.removeKeys.push(a)}),new Function("g,params,alasql","var y;"+n+"return r")},z.Select.prototype.compileRemoveColumns=function(e){"undefined"!=typeof this.removecolumns&&(e.removeKeys=e.removeKeys.concat(this.removecolumns.filter(function(e){return"undefined"==typeof e.like}).map(function(e){return e.columnid})),e.removeLikeKeys=this.removecolumns.filter(function(e){return"undefined"!=typeof e.like}).map(function(e){return e.like.value}))},z.Select.prototype.compileHaving=function(e){return this.having?(s=this.having.toJS("g",-1),e.havingfns=s,new Function("g,params,alasql","var y;return "+s)):function(){return!0}},z.Select.prototype.compileOrder=function(e){var t=this;if(t.orderColumns=[],this.order){if(this.order&&1==this.order.length&&this.order[0].expression&&"function"==typeof this.order[0].expression){var n=this.order[0].expression;return function(e,t){var r=n(e),a=n(t);return r>a?1:r==a?0:-1}}var r="",a="";return this.order.forEach(function(n,s){if(n.expression instanceof z.NumValue)var i=t.columns[n.expression.value-1];else var i=n.expression;t.orderColumns.push(i);var o="$$$"+s,u="";if(n.expression instanceof z.Column){var c=n.expression.columnid;if(e.xcolumns[c]){var l=e.xcolumns[c].dbtypeid;"DATE"!=l&&"DATETIME"!=l&&"DATETIME2"!=l||(u=".valueOf()")}else w.options.valueof&&(u=".valueOf()")}n.nocase&&(u+=".toUpperCase()"),r+="if((a['"+o+"']||'')"+u+("ASC"==n.direction?">":"<")+"(b['"+o+"']||'')"+u+")return 1;",r+="if((a['"+o+"']||'')"+u+"==(b['"+o+"']||'')"+u+"){",a+="}"}),r+="return 0;",r+=a+"return -1",e.orderfns=r,new Function("a,b","var y;"+r)}},z.Select.prototype.compilePivot=function(e){var t=this,n=t.pivot.columnid,r=t.pivot.expr.expression.columnid,a=t.pivot.expr.aggregatorid,s=t.pivot.inlist;return s&&(s=s.map(function(e){return e.expr.columnid})),function(){var e=this,t=e.columns.filter(function(e){return e.columnid!=n&&e.columnid!=r}).map(function(e){return e.columnid}),i=[],o={},u={},c={},l=[];if(e.data.forEach(function(e){if(!s||s.indexOf(e[n])>-1){var h=t.map(function(t){return e[t]}).join("`"),d=u[h];if(d||(d={},u[h]=d,l.push(d),t.forEach(function(t){d[t]=e[t]})),c[h]||(c[h]={}),c[h][e[n]]?c[h][e[n]]++:c[h][e[n]]=1,o[e[n]]||(o[e[n]]=!0,i.push(e[n])),"SUM"==a||"AVG"==a)"undefined"==typeof d[e[n]]&&(d[e[n]]=0),d[e[n]]+=e[r];else if("COUNT"==a)"undefined"==typeof d[e[n]]&&(d[e[n]]=0),d[e[n]]++;else if("MIN"==a)"undefined"==typeof d[e[n]]&&(d[e[n]]=1/0),e[r]d[e[n]]&&(d[e[n]]=e[r]);else if("FIRST"==a)"undefined"==typeof d[e[n]]&&(d[e[n]]=e[r]);else if("LAST"==a)d[e[n]]=e[r];else{if(!w.aggr[a])throw new Error("Wrong aggregator in PIVOT clause");w.aggr[a](d[e[n]],e[r])}}}),"AVG"==a)for(var h in u){var d=u[h];for(var f in d)-1==t.indexOf(f)&&f!=r&&(d[f]=d[f]/c[h][f])}e.data=l,s&&(i=s);var p=e.columns.filter(function(e){return e.columnid==r})[0];e.columns=e.columns.filter(function(e){return!(e.columnid==n||e.columnid==r)}),i.forEach(function(t){var n=_(p);n.columnid=t,e.columns.push(n)})}},z.Select.prototype.compileUnpivot=function(e){var t=this,n=t.unpivot.tocolumnid,r=t.unpivot.forcolumnid,a=t.unpivot.inlist.map(function(e){return e.columnid});return function(){var t=[],s=e.columns.map(function(e){return e.columnid}).filter(function(e){return-1==a.indexOf(e)&&e!=r&&e!=n});e.data.forEach(function(e){a.forEach(function(a){var i={};s.forEach(function(t){i[t]=e[t]}),i[r]=a,i[n]=e[a],t.push(i)})}),e.data=t}};var ne=function(e,t){for(var n=[],r=0,a=e.length,s=0;a+1>s;s++){for(var i=[],o=0;a>o;o++){if(e[o]instanceof z.Column){e[o].nick=k(e[o].columnid),t.groupColumns[k(e[o].columnid)]=e[o].nick;var u=e[o].nick+" "+e[o].toJS("p",t.sources[0].alias,t.defcols)}else{t.groupColumns[k(e[o].toString())]=k(e[o].toString());var u=k(e[o].toString())+" "+e[o].toJS("p",t.sources[0].alias,t.defcols)}r&1<a;a++){for(var s=[],i=0;r>i;i++)a&1<"===this.op||"!"===this.op){var e=this.left.toString()+this.op;return"string"!=typeof this.right&&"number"!=typeof this.right&&(e+="("),e+=this.right.toString(),"string"!=typeof this.right&&"number"!=typeof this.right&&(e+=")"),e}return this.left.toString()+" "+this.op+" "+(this.allsome?this.allsome+" ":"")+this.right.toString()},z.Op.prototype.findAggregator=function(e){this.left&&this.left.findAggregator&&this.left.findAggregator(e),this.right&&this.right.findAggregator&&!this.allsome&&this.right.findAggregator(e)},z.Op.prototype.toType=function(e){if(["-","*","/","%","^"].indexOf(this.op)>-1)return"number";if(["||"].indexOf(this.op)>-1)return"string";if("+"===this.op){if("string"===this.left.toType(e)||"string"===this.right.toType(e))return"string";if("number"===this.left.toType(e)||"number"===this.right.toType(e))return"number"}return["AND","OR","NOT","=","==","===","!=","!==","!===",">",">=","<","<=","IN","NOT IN","LIKE","NOT LIKE","REGEXP","GLOB"].indexOf(this.op)>-1?"boolean":"BETWEEN"===this.op||"NOT BETWEEN"===this.op||"IS NULL"===this.op||"IS NOT NULL"===this.op?"boolean":this.allsome?"boolean":this.op?"unknown":this.left.toType()},z.Op.prototype.toJS=function(e,t,n){var r,a=this.op,s=this,i=function(){return s.left.toJS(e,t,n)},o=function(){return s.right.toJS(e,t,n)};if("="===this.op?a="===":"<>"===this.op?a="!=":"OR"===this.op&&(a="||"),"->"===this.op){var u="("+i()+"||{})";if("string"==typeof this.right)return u+'["'+this.right+'"]';if("number"==typeof this.right)return u+"["+this.right+"]";if(this.right instanceof z.FuncValue){var c=[];if(this.right.args&&0!==this.right.args.length)var c=this.right.args.map(function(r){return r.toJS(e,t,n)});return""+u+"['"+this.right.funcid+"']("+c.join(",")+")"}return""+u+"["+o()+"]"}if("!"===this.op&&"string"==typeof this.right)return"alasql.databases[alasql.useid].objects["+i()+']["'+this.right+'"]';if("IS"===this.op)return"((typeof "+i()+"==='undefined') === (typeof "+o()+"==='undefined'))";if("=="===this.op)return"alasql.utils.deepEqual("+i()+","+o()+")";if("==="===this.op||"!==="===this.op)return"("+("!==="===this.op?"!":"")+"(("+i()+").valueOf()===("+o()+").valueOf()))";if("!=="===this.op)return"(!alasql.utils.deepEqual("+i()+","+o()+"))";if("||"===this.op)return"(''+("+i()+"||'')+("+o()+'||""))';if("LIKE"===this.op||"NOT LIKE"===this.op){var r="("+("NOT LIKE"===this.op?"!":"")+"alasql.utils.like("+o()+","+i();return this.escape&&(r+=","+this.escape.toJS(e,t,n)),r+="))"}if("REGEXP"===this.op)return"alasql.stdfn.REGEXP_LIKE("+i()+","+o()+")";if("GLOB"===this.op)return"alasql.utils.glob("+i()+","+o()+")";if("BETWEEN"===this.op||"NOT BETWEEN"===this.op)return"("+("NOT BETWEEN"===this.op?"!":"")+"(("+this.right1.toJS(e,t,n)+"<="+i()+") && ("+i()+"<="+this.right2.toJS(e,t,n)+")))";if("IN"===this.op)return this.right instanceof z.Select?(r="(",r+="alasql.utils.flatArray(this.queriesfn["+this.queriesidx+"](params,null,"+e+"))",r+=".indexOf(",r+=i()+")>-1)"):r=this.right instanceof Array?"(["+this.right.map(function(r){return r.toJS(e,t,n)}).join(",")+"].indexOf("+i()+")>-1)":"("+o()+".indexOf("+i()+")>-1)";if("NOT IN"===this.op)return this.right instanceof z.Select?(r="(",r+="alasql.utils.flatArray(this.queriesfn["+this.queriesidx+"](params,null,p))",r+=".indexOf(",r+=i()+")<0)"):this.right instanceof Array?(r="(["+this.right.map(function(r){return r.toJS(e,t,n)}).join(",")+"].indexOf(",r+=i()+")<0)"):(r="("+o()+".indexOf(",r+=i()+")==-1)");if("ALL"===this.allsome){var r;if(this.right instanceof z.Select)return r="alasql.utils.flatArray(this.query.queriesfn["+this.queriesidx+"](params,null,p))",r+=".every(function(b){return (",r+=i()+")"+a+"b})";if(this.right instanceof Array)return r="["+this.right.map(function(r){return r.toJS(e,t,n)}).join(",")+"].every(function(b){return (",r+=i()+")"+a+"b})";throw new Error("NOT IN operator without SELECT")}if("SOME"===this.allsome||"ANY"===this.allsome){var r;if(this.right instanceof z.Select)return r="alasql.utils.flatArray(this.query.queriesfn["+this.queriesidx+"](params,null,p))",r+=".some(function(b){return (",r+=i()+")"+a+"b})";if(this.right instanceof Array)return r="["+this.right.map(function(r){return r.toJS(e,t,n)}).join(",")+"].some(function(b){return (",r+=i()+")"+a+"b})";throw new Error("SOME/ANY operator without SELECT")}if("AND"===this.op){if(this.left.reduced)return this.right.reduced?"true":o();if(this.right.reduced)return i();a="&&"}return"(("+i()+")"+a+"("+o()+"))"},z.VarValue=function(e){return z.extend(this,e)},z.VarValue.prototype.toString=function(){return"@"+this.variable},z.VarValue.prototype.toType=function(){return"unknown"},z.VarValue.prototype.toJS=function(){return"alasql.vars['"+this.variable+"']"},z.NumValue=function(e){return z.extend(this,e)},z.NumValue.prototype.toString=function(){return this.value.toString()},z.NumValue.prototype.toType=function(){return"number"},z.NumValue.prototype.toJS=function(){return""+this.value},z.StringValue=function(e){return z.extend(this,e)},z.StringValue.prototype.toString=function(){return"'"+this.value.toString()+"'"},z.StringValue.prototype.toType=function(){return"string"},z.StringValue.prototype.toJS=function(){return"'"+k(this.value)+"'"},z.LogicValue=function(e){return z.extend(this,e)},z.LogicValue.prototype.toString=function(){return this.value?"TRUE":"FALSE"},z.LogicValue.prototype.toType=function(){return"boolean"},z.LogicValue.prototype.toJS=function(){return this.value?"true":"false"},z.NullValue=function(e){return z.extend(this,e)},z.NullValue.prototype.toString=function(){return"NULL"},z.NullValue.prototype.toJS=function(){return"undefined"},z.ParamValue=function(e){return z.extend(this,e)},z.ParamValue.prototype.toString=function(){return"$"+this.param},z.ParamValue.prototype.toJS=function(){return"string"==typeof this.param?"params['"+this.param+"']":"params["+this.param+"]"},z.UniOp=function(e){return z.extend(this,e)},z.UniOp.prototype.toString=function(){return"~"===this.op?this.op+this.right.toString():"-"===this.op?this.op+this.right.toString():"+"===this.op?this.op+this.right.toString():"#"===this.op?this.op+this.right.toString():"NOT"===this.op?this.op+"("+this.right.toString()+")":null==this.op?"("+this.right.toString()+")":void 0},z.UniOp.prototype.findAggregator=function(e){this.right.findAggregator&&this.right.findAggregator(e)},z.UniOp.prototype.toType=function(){return"-"===this.op?"number":"+"===this.op?"number":"NOT"===this.op?"boolean":void 0},z.UniOp.prototype.toJS=function(e,t,n){return"~"===this.op?"(~("+this.right.toJS(e,t,n)+"))":"-"===this.op?"(-("+this.right.toJS(e,t,n)+"))":"+"===this.op?"("+this.right.toJS(e,t,n)+")":"NOT"===this.op?"!("+this.right.toJS(e,t,n)+")":"#"===this.op?this.right instanceof z.Column?"(alasql.databases[alasql.useid].objects['"+this.right.columnid+"'])":"(alasql.databases[alasql.useid].objects["+this.right.toJS(e,t,n)+"])":null==this.op?"("+this.right.toJS(e,t,n)+")":void 0},z.Column=function(e){return z.extend(this,e)},z.Column.prototype.toString=function(e){var t;return t=this.columnid==+this.columnid?"["+this.columnid+"]":this.columnid,this.tableid&&(t=+this.columnid===this.columnid?this.tableid+t:this.tableid+"."+t,this.databaseid&&(t=this.databaseid+"."+t)),this.alias&&!e&&(t+=" AS "+this.alias),t},z.Column.prototype.toJS=function(e,t,n){var r="";if(this.tableid||""!==t||n)if("g"===e)r="g['"+this.nick+"']";else if(this.tableid)r="_"!==this.columnid?e+"['"+this.tableid+"']['"+this.columnid+"']":"g"===e?"g['_']":e+"['"+this.tableid+"']";else if(n){var a=n[this.columnid];if("-"===a)throw new Error('Cannot resolve column "'+this.columnid+'" because it exists in two source tables');r=a?"_"!==this.columnid?e+"['"+a+"']['"+this.columnid+"']":e+"['"+a+"']":"_"!==this.columnid?e+"['"+(this.tableid||t)+"']['"+this.columnid+"']":e+"['"+(this.tableid||t)+"']"}else r=-1===t?e+"['"+this.columnid+"']":"_"!==this.columnid?e+"['"+(this.tableid||t)+"']['"+this.columnid+"']":e+"['"+(this.tableid||t)+"']";else r="_"!==this.columnid?e+"['"+this.columnid+"']":"g"===e?"g['_']":e;return r},z.AggrValue=function(e){return z.extend(this,e)},z.AggrValue.prototype.toString=function(e){var t="";return t+="REDUCE"===this.aggregatorid?this.funcid+"(":this.aggregatorid+"(",this.distinct&&(t+="DISTINCT "),this.expression&&(t+=this.expression.toString()),t+=")",this.over&&(t+=" "+this.over.toString()),this.alias&&!e&&(t+=" AS "+this.alias),t},z.AggrValue.prototype.findAggregator=function(e){var t=k(this.toString())+":"+e.selectGroup.length,n=!1;if(!n){if(!this.nick){this.nick=t;for(var n=!1,r=0;r-1?"number":["ARRAY"].indexOf(this.aggregatorid)>-1?"array":["FIRST","LAST"].indexOf(this.aggregatorid)>-1?this.expression.toType():void 0},z.AggrValue.prototype.toJS=function(){var e=this.nick;return void 0===e&&(e=this.toString()),"g['"+e+"']"},z.OrderExpression=function(e){return z.extend(this,e)},z.OrderExpression.prototype.toString=z.Expression.prototype.toString,z.GroupExpression=function(e){return z.extend(this,e)},z.GroupExpression.prototype.toString=function(){return this.type+"("+this.group.toString()+")"},z.FromData=function(e){return z.extend(this,e)},z.FromData.prototype.toString=function(){return this.data?"DATA("+(1e16*Math.random()|0)+")":"?"},z.FromData.prototype.toJS=function(){},z.Select.prototype.exec=function(e,t){this.preparams&&(e=this.preparams.concat(e));var n=w.useid;db=w.databases[n];var r=this.toString(),a=D(r),s=this.compile(n);if(s){s.sql=r,s.dbversion=db.dbversion,db.sqlCacheSize>w.MAXSQLCACHESIZE&&db.resetSqlCache(),db.sqlCacheSize++,db.sqlCache[a]=s;var i=w.res=s(e,t);return i}},z.Select.prototype.Select=function(){var e=this;if(arguments.length>1)args=Array.prototype.slice.call(arguments);else{if(1!=arguments.length)throw new Error("Wrong number of arguments of Select() function");arguments[0]instanceof Array?args=arguments[0]:args=[arguments[0]]}return e.columns=[],args.forEach(function(t){if("string"==typeof t)e.columns.push(new z.Column({columnid:t}));else if("function"==typeof t){var n=0;e.preparams?n=e.preparams.length:e.preparams=[],e.preparams.push(t),e.columns.push(new z.Column({columnid:"*",func:t,param:n}))}}),e},z.Select.prototype.From=function(e){var t=this;if(t.from||(t.from=[]),e instanceof Array){var n=0;t.preparams?n=t.preparams.length:t.preparams=[],t.preparams.push(e),t.from.push(new z.ParamValue({param:n}))}else{if("string"!=typeof e)throw new Error("Unknown arguments in From() function");t.from.push(new z.Table({tableid:e}))}return t},z.Select.prototype.OrderBy=function(){var e=this;if(e.order=[],0==arguments.length)args=["_"];else if(arguments.length>1)args=Array.prototype.slice.call(arguments);else{if(1!=arguments.length)throw new Error("Wrong number of arguments of Select() function");arguments[0]instanceof Array?args=arguments[0]:args=[arguments[0]]}return args.length>0&&args.forEach(function(t){var n=new z.Column({columnid:t});"function"==typeof t&&(n=t),e.order.push(new z.OrderExpression({expression:n,direction:"ASC"}))}),e},z.Select.prototype.Top=function(e){var t=this;return t.top=new z.NumValue({value:e}),t},z.Select.prototype.GroupBy=function(){var e=this;if(arguments.length>1)args=Array.prototype.slice.call(arguments);else{if(1!=arguments.length)throw new Error("Wrong number of arguments of Select() function");arguments[0]instanceof Array?args=arguments[0]:args=[arguments[0]]}return e.group=[],args.forEach(function(t){var n=new z.Column({columnid:t});e.group.push(n)}),e},z.Select.prototype.Where=function(e){var t=this;return"function"==typeof e&&(t.where=e),t},z.FuncValue=function(e){return z.extend(this,e)},z.FuncValue.prototype.toString=function(e){var t="";return w.fn[this.funcid]?t+=this.funcid:w.aggr[this.funcid]?t+=this.funcid:(w.stdlib[this.funcid.toUpperCase()]||w.stdfn[this.funcid.toUpperCase()])&&(t+=this.funcid.toUpperCase()),t+="(",this.args&&this.args.length>0&&(t+=this.args.map(function(e){return e.toString()}).join(",")),t+=")",this.as&&!e&&(t+=" AS "+this.as.toString()),t},z.FuncValue.prototype.execute=function(e,t,n){var r=1;w.precompile(this,e,t);var a=new Function("params,alasql","var y;return "+this.toJS("","",null));return a(t,w),n&&(r=n(r)),r},z.FuncValue.prototype.findAggregator=function(e){this.args&&this.args.length>0&&this.args.forEach(function(t){t.findAggregator&&t.findAggregator(e)})},z.FuncValue.prototype.toJS=function(e,t,n){var r="",a=this.funcid;return w.fn[a]?(this.newid&&(r+="new "),r+="alasql.fn."+this.funcid+"(",this.args&&this.args.length>0&&(r+=this.args.map(function(r){return r.toJS(e,t,n)}).join(",")),r+=")"):w.stdlib[a.toUpperCase()]?r+=this.args&&this.args.length>0?w.stdlib[a.toUpperCase()].apply(this,this.args.map(function(n){return n.toJS(e,t)})):w.stdlib[a.toUpperCase()]():w.stdfn[a.toUpperCase()]&&(this.newid&&(r+="new "),r+="alasql.stdfn."+this.funcid.toUpperCase()+"(",this.args&&this.args.length>0&&(r+=this.args.map(function(r){return r.toJS(e,t,n)}).join(",")),r+=")"),r};var ie=w.stdlib={},oe=w.stdfn={};ie.ABS=function(e){return"Math.abs("+e+")"},ie.CLONEDEEP=function(e){return"alasql.utils.cloneDeep("+e+")"},oe.CONCAT=function(){return Array.prototype.slice.call(arguments).join("")},ie.EXP=function(e){return"Math.pow(Math.E,"+e+")"},ie.IIF=function(e,t,n){if(3==arguments.length)return"(("+e+")?("+t+"):("+n+"))";throw new Error("Number of arguments of IFF is not equals to 3")},ie.IFNULL=function(e,t){return"("+e+"||"+t+")"},ie.INSTR=function(e,t){return"(("+e+").indexOf("+t+")+1)"},ie.LEN=ie.LENGTH=function(e){return t(e,"y.length")},ie.LOWER=ie.LCASE=function(e){return t(e,"String(y).toLowerCase()")},ie.MAX=ie.GREATEST=function(){return"Math.max("+Array.prototype.join.call(arguments,",")+")"},ie.MIN=ie.LEAST=function(){return"Math.min("+Array.prototype.join.call(arguments,",")+")"},ie.SUBSTRING=ie.SUBSTR=ie.MID=function(e,n,r){return 2==arguments.length?t(e,"y.substr("+n+"-1)"):3==arguments.length?t(e,"y.substr("+n+"-1,"+r+")"):void 0},oe.REGEXP_LIKE=function(e,t,n){return(e||"").search(RegExp(t,n))>-1},ie.ISNULL=ie.NULLIF=function(e,t){return"("+e+"=="+t+"?undefined:"+e+")"},ie.POWER=function(e,t){return"Math.pow("+e+","+t+")"},ie.RANDOM=function(e){return 0==arguments.length?"Math.random()":"(Math.random()*("+e+")|0)"},ie.ROUND=function(e,t){return 2==arguments.length?"Math.round(("+e+")*Math.pow(10,("+t+")))/Math.pow(10,("+t+"))":"Math.round("+e+")"},ie.CEIL=ie.CEILING=function(e){return"Math.ceil("+e+")"},ie.FLOOR=function(e){return"Math.floor("+e+")"},ie.ROWNUM=function(){return"1"},ie.ROW_NUMBER=function(){return"1"},ie.SQRT=function(e){return"Math.sqrt("+e+")"},ie.TRIM=function(e){return t(e,"y.trim()")},ie.UPPER=ie.UCASE=function(e){return t(e,"String(y).toUpperCase()")},oe.CONCAT_WS=function(){return args=Array.prototype.slice.call(arguments),args.slice(1,args.length).join(args[0])},w.aggr.GROUP_CONCAT=function(e,t,n){return 1==n?e:2==n?t+","+e:void 0},w.aggr.MEDIAN=function(e,t,n){if(1==n)return[e];if(2==n)return t.push(e),t;var r=t.sort();return r[r.length/2|0]},w.aggr.VAR=function(e,t,n){if(1==n)return{arr:[e],sum:e};if(2==n)return t.arr.push(e),t.sum+=e,t;for(var r=t.arr.length,a=t.sum/r,s=0,i=0;r>i;i++)s+=(t.arr[i]-a)*(t.arr[i]-a);return s/=r-1},w.aggr.STDEV=function(e,t,n){return 1==n||2==n?w.aggr.VAR(e,t,n):Math.sqrt(w.aggr.VAR(e,t,n))},w.aggr.VARP=function(e,t,n){if(1==n)return{arr:[e],sum:e};if(2==n)return t.arr.push(e),t.sum+=e,t;for(var r=t.arr.length,a=t.sum/r,s=0,i=0;r>i;i++)s+=(t.arr[i]-a)*(t.arr[i]-a);return s/=r},w.aggr.STD=w.aggr.STDDEV=w.aggr.STDEVP=function(e,t,n){return 1==n||2==n?w.aggr.VARP(e,t,n):Math.sqrt(w.aggr.VARP(e,t,n))},oe.REPLACE=function(e,t,n){return(e||"").split(t).join(n)};for(var ue=[],ce=0;256>ce;ce++)ue[ce]=(16>ce?"0":"")+ce.toString(16);oe.NEWID=oe.UUID=oe.GEN_RANDOM_UUID=function(){var e=4294967295*Math.random()|0,t=4294967295*Math.random()|0,n=4294967295*Math.random()|0,r=4294967295*Math.random()|0;return ue[255&e]+ue[e>>8&255]+ue[e>>16&255]+ue[e>>24&255]+"-"+ue[255&t]+ue[t>>8&255]+"-"+ue[t>>16&15|64]+ue[t>>24&255]+"-"+ue[63&n|128]+ue[n>>8&255]+"-"+ue[n>>16&255]+ue[n>>24&255]+ue[255&r]+ue[r>>8&255]+ue[r>>16&255]+ue[r>>24&255]},z.CaseValue=function(e){return z.extend(this,e)},z.CaseValue.prototype.toString=function(){var e="CASE ";return this.expression&&(e+=this.expression.toString()),this.whens&&(e+=this.whens.map(function(e){return" WHEN "+e.when.toString()+" THEN "+e.then.toString()}).join()),e+=" END"},z.CaseValue.prototype.findAggregator=function(e){this.expression&&this.expression.findAggregator&&this.expression.findAggregator(e),this.whens&&this.whens.length>0&&this.whens.forEach(function(t){t.when.findAggregator&&t.when.findAggregator(e),t.then.findAggregator&&t.then.findAggregator(e)}),this.elses&&this.elses.findAggregator&&this.elses.findAggregator(e)},z.CaseValue.prototype.toJS=function(e,t,n){var r="((function("+e+",params,alasql){var r;";return this.expression?(r+="v="+this.expression.toJS(e,t,n)+";",r+=(this.whens||[]).map(function(r){return" if(v=="+r.when.toJS(e,t,n)+") {r="+r.then.toJS(e,t,n)+"}"}).join(" else "),this.elses&&(r+=" else {r="+this.elses.toJS(e,t,n)+"}")):(r+=(this.whens||[]).map(function(r){return" if("+r.when.toJS(e,t,n)+") {r="+r.then.toJS(e,t,n)+"}"}).join(" else "),this.elses&&(r+=" else {r="+this.elses.toJS(e,t,n)+"}")),r+=";return r;}).bind(this))("+e+",params,alasql)"},z.Json=function(e){return z.extend(this,e)},z.Json.prototype.toString=function(){var e="";return e+=le(this.value),e+=""};var le=w.utils.JSONtoString=function(e){var t="";if("string"==typeof e)t='"'+e+'"';else if("number"==typeof e)t=e;else if("boolean"==typeof e)t=e;else{if("object"!=typeof e)throw new Error("2Can not show JSON object "+JSON.stringify(e));if(e instanceof Array)t+="["+e.map(function(e){return le(e)}).join(",")+"]";else if(!e.toJS||e instanceof z.Json){t="{";var n=[];for(var r in e){var a="";if("string"==typeof r)a+='"'+r+'"';else if("number"==typeof r)a+=r;else{if("boolean"!=typeof r)throw new Error("THis is not ES6... no expressions on left side yet");a+=r}a+=":"+le(e[r]),n.push(a)}t+=n.join(",")+"}"}else{if(!e.toString)throw new Error("1Can not show JSON object "+JSON.stringify(e));t=e.toString()}}return t};z.Json.prototype.toJS=function(e,t,n){return g(this.value,e,t,n)},z.Convert=function(e){return z.extend(this,e)},z.Convert.prototype.toString=function(){var e="CONVERT(";return e+=this.dbtypeid,"undefined"!=typeof this.dbsize&&(e+="("+this.dbsize,this.dbprecision&&(e+=","+dbprecision),e+=")"),e+=","+this.expression.toString(),this.style&&(e+=","+this.style),e+=")"},z.Convert.prototype.toJS=function(e,t,n){return"alasql.stdfn.CONVERT("+this.expression.toJS(e,t,n)+',{dbtypeid:"'+this.dbtypeid+'",dbsize:'+this.dbsize+",style:"+this.style+"})"},w.stdfn.CONVERT=function(e,t){var n=e;if(t.style){var r;switch(r=/\d{8}/.test(n)?new Date(+n.substr(0,4),+n.substr(4,2)-1,+n.substr(6,2)):new Date(n),t.style){case 1:n=("0"+(r.getMonth()+1)).substr(-2)+"/"+("0"+r.getDate()).substr(-2)+"/"+("0"+r.getYear()).substr(-2);break;case 2:n=("0"+r.getYear()).substr(-2)+"."+("0"+(r.getMonth()+1)).substr(-2)+"."+("0"+r.getDate()).substr(-2);break;case 3:n=("0"+r.getDate()).substr(-2)+"/"+("0"+(r.getMonth()+1)).substr(-2)+"/"+("0"+r.getYear()).substr(-2);break;case 4:n=("0"+r.getDate()).substr(-2)+"."+("0"+(r.getMonth()+1)).substr(-2)+"."+("0"+r.getYear()).substr(-2);break;case 5:n=("0"+r.getDate()).substr(-2)+"-"+("0"+(r.getMonth()+1)).substr(-2)+"-"+("0"+r.getYear()).substr(-2);break;case 6:n=("0"+r.getDate()).substr(-2)+" "+r.toString().substr(4,3).toLowerCase()+" "+("0"+r.getYear()).substr(-2);break;case 7:n=r.toString().substr(4,3)+" "+("0"+r.getDate()).substr(-2)+","+("0"+r.getYear()).substr(-2);break;case 8:case 108:n=("0"+r.getHours()).substr(-2)+":"+("0"+r.getMinutes()).substr(-2)+":"+("0"+r.getSeconds()).substr(-2);break;case 10:n=("0"+(r.getMonth()+1)).substr(-2)+"-"+("0"+r.getDate()).substr(-2)+"-"+("0"+r.getYear()).substr(-2);break;case 11:n=("0"+r.getYear()).substr(-2)+"/"+("0"+(r.getMonth()+1)).substr(-2)+"/"+("0"+r.getDate()).substr(-2); +break;case 12:n=("0"+r.getYear()).substr(-2)+("0"+(r.getMonth()+1)).substr(-2)+("0"+r.getDate()).substr(-2);break;case 101:n=("0"+(r.getMonth()+1)).substr(-2)+"/"+("0"+r.getDate()).substr(-2)+"/"+r.getFullYear();break;case 102:n=r.getFullYear()+"."+("0"+(r.getMonth()+1)).substr(-2)+"."+("0"+r.getDate()).substr(-2);break;case 103:n=("0"+r.getDate()).substr(-2)+"/"+("0"+(r.getMonth()+1)).substr(-2)+"/"+r.getFullYear();break;case 104:n=("0"+r.getDate()).substr(-2)+"."+("0"+(r.getMonth()+1)).substr(-2)+"."+r.getFullYear();break;case 105:n=("0"+r.getDate()).substr(-2)+"-"+("0"+(r.getMonth()+1)).substr(-2)+"-"+r.getFullYear();break;case 106:n=("0"+r.getDate()).substr(-2)+" "+r.toString().substr(4,3).toLowerCase()+" "+r.getFullYear();break;case 107:n=r.toString().substr(4,3)+" "+("0"+r.getDate()).substr(-2)+","+r.getFullYear();break;case 110:n=("0"+(r.getMonth()+1)).substr(-2)+"-"+("0"+r.getDate()).substr(-2)+"-"+r.getFullYear();break;case 111:n=r.getFullYear()+"/"+("0"+(r.getMonth()+1)).substr(-2)+"/"+("0"+r.getDate()).substr(-2);break;case 112:n=r.getFullYear()+("0"+(r.getMonth()+1)).substr(-2)+("0"+r.getDate()).substr(-2);break;default:throw new Error("The CONVERT style "+t.style+" is not realized yet.")}}var a=t.dbtypeid.toUpperCase();if("Date"==t.dbtypeid)return new Date(n);if("DATE"==a){var s=new Date(n),i=s.getFullYear()+"."+("0"+(s.getMonth()+1)).substr(-2)+"."+("0"+s.getDate()).substr(-2);return i}if("DATETIME"==a||"DATETIME2"==a){var s=new Date(n),i=s.getFullYear()+"."+("0"+(s.getMonth()+1)).substr(-2)+"."+("0"+s.getDate()).substr(-2);return i+=" "+("0"+s.getHours()).substr(-2)+":"+("0"+s.getMinutes()).substr(-2)+":"+("0"+s.getSeconds()).substr(-2),i+="."+("00"+s.getMilliseconds()).substr(-3)}if(["MONEY"].indexOf(a)>-1){var o=+n;return(0|o)+100*o%100/100}if(["BOOLEAN"].indexOf(a)>-1)return!!n;if(["INT","INTEGER","SMALLINT","BIGINT","SERIAL","SMALLSERIAL","BIGSERIAL"].indexOf(t.dbtypeid.toUpperCase())>-1)return 0|n;if(["STRING","VARCHAR","NVARCHAR","CHARACTER VARIABLE"].indexOf(t.dbtypeid.toUpperCase())>-1)return t.dbsize?(""+n).substr(0,t.dbsize):""+n;if(["CHAR","CHARACTER","NCHAR"].indexOf(a)>-1)return(n+new Array(t.dbsize+1).join(" ")).substr(0,t.dbsize);if(["NUMBER","FLOAT"].indexOf(a)>-1){if("undefined"!=typeof t.dbprecision){var o=+n,u=Math.pow(10,t.dbprecision);return(0|o)+o*u%u/u}return+n}if(["DECIMAL","NUMERIC"].indexOf(a)>-1){var o=+n,u=Math.pow(10,t.dbprecision);return(0|o)+o*u%u/u}if(!(["JSON"].indexOf(a)>-1))throw new Error("Wrong conversion type");if("object"==typeof n)return n;try{return JSON.parse(n)}catch(c){throw new Error("Cannot convert string to JSON")}return n},z.ColumnDef=function(e){return z.extend(this,e)},z.ColumnDef.prototype.toString=function(){var e=this.columnid;return this.dbtypeid&&(e+=" "+this.dbtypeid),this.dbsize&&(e+="("+this.dbsize,this.dbprecision&&(e+=","+this.dbprecision),e+=")"),this.primarykey&&(e+=" PRIMARY KEY"),this.notnull&&(e+=" NOT NULL"),e},z.CreateTable=function(e){return z.extend(this,e)},z.CreateTable.prototype.toString=function(){var e="CREATE";if(this.temporary&&(e+=" TEMPORARY"),e+=this.view?" VIEW":" "+(this["class"]?"CLASS":"TABLE"),this.ifnotexists&&(e+=" IF NOT EXISTS"),e+=" "+this.table.toString(),this.viewcolumns&&(e+="("+this.viewcolumns.map(function(e){return e.toString()}).join(",")+")"),this.as)e+=" AS "+this.as;else{var t=this.columns.map(function(e){return e.toString()});e+=" ("+t.join(",")+")"}return this.view&&this.select&&(e+=" AS "+this.select.toString()),e},z.CreateTable.prototype.execute=function(e,t,n){var r=w.databases[this.table.databaseid||e],a=this.table.tableid;if(!a)throw new Error("Table name is not defined");var s=this.columns,i=this.constraints||[];if(this.ifnotexists&&r.tables[a])return n?n(0):0;if(r.tables[a])throw new Error("Can not create table '"+a+"', because it already exists in the database '"+r.databaseid+"'");var o=r.tables[a]=new w.Table;this["class"]&&(o.isclass=!0);var u=[],c=[];if(s&&s.forEach(function(e){var t=e.dbtypeid;w.fn[t]||(t=t.toUpperCase()),["SERIAL","SMALLSERIAL","BIGSERIAL"].indexOf(t)>-1&&(e.identity={value:1,step:1});var n={columnid:e.columnid,dbtypeid:t,dbsize:e.dbsize,dbprecision:e.dbprecision,notnull:e.notnull,identity:e.identity};if(e.identity&&(o.identities[e.columnid]={value:+e.identity.value,step:+e.identity.step}),e.check&&o.checkfn.push(new Function("r","var y;return "+e.check.expression.toJS("r",""))),e["default"]&&u.push("'"+e.columnid+"':"+e["default"].toJS("r","")),e.primarykey){var r=o.pk={};r.columns=[e.columnid],r.onrightfns="r['"+e.columnid+"']",r.onrightfn=new Function("r","var y;return "+r.onrightfns),r.hh=D(r.onrightfns),o.uniqs[r.hh]={}}if(e.unique){var a={};o.uk=o.uk||[],o.uk.push(a),a.columns=[e.columnid],a.onrightfns="r['"+e.columnid+"']",a.onrightfn=new Function("r","var y;return "+a.onrightfns),a.hh=D(a.onrightfns),o.uniqs[a.hh]={}}if(e.foreignkey){var s=e.foreignkey.table,i=w.databases[s.databaseid||w.useid].tables[s.tableid];if("undefined"==typeof s.columnid){if(!(i.pk.columns&&i.pk.columns.length>0))throw new Error("FOREIGN KEY allowed only to tables with PRIMARY KEYs");s.columnid=i.pk.columns[0]}var l=function(t){var n={};if("undefined"==typeof t[e.columnid])return!0;n[s.columnid]=t[e.columnid];var r=i.pk.onrightfn(n);if(!i.uniqs[i.pk.hh][r])throw new Error('Foreign key "'+t[e.columnid]+'" is not found in table '+i.tableid);return!0};o.checkfn.push(l)}e.onupdate&&c.push("r['"+e.columnid+"']="+e.onupdate.toJS("r","")),o.columns.push(n),o.xcolumns[n.columnid]=n}),o.defaultfns=u.join(","),o.onupdatefns=c.join(";"),i.forEach(function(e){if("PRIMARY KEY"===e.type){if(o.pk)throw new Error("Primary key already exists");var t=o.pk={};t.columns=e.columns,t.onrightfns=t.columns.map(function(e){return"r['"+e+"']"}).join("+'`'+"),t.onrightfn=new Function("r","var y;return "+t.onrightfns),t.hh=D(t.onrightfns),o.uniqs[t.hh]={}}else if("CHECK"===e.type)o.checkfn.push(new Function("r","var y;return "+e.expression.toJS("r","")));else if("UNIQUE"===e.type){var n={};o.uk=o.uk||[],o.uk.push(n),n.columns=e.columns,n.onrightfns=n.columns.map(function(e){return"r['"+e+"']"}).join("+'`'+"),n.onrightfn=new Function("r","var y;return "+n.onrightfns),n.hh=D(n.onrightfns),o.uniqs[n.hh]={}}else if("FOREIGN KEY"===e.type){var r=o.xcolumns[e.columns[0]],a=e.fktable;e.fkcolumns&&e.fkcolumns.length>0&&(a.columnid=e.fkcolumns[0]);var s=w.databases[a.databaseid||w.useid].tables[a.tableid];"undefined"==typeof a.columnid&&(a.columnid=s.pk.columns[0]);var i=function(e){var t={};if("undefined"==typeof e[r.columnid])return!0;t[a.columnid]=e[r.columnid];var n=s.pk.onrightfn(t);if(!s.uniqs[s.pk.hh][n])throw new Error('Foreign key "'+e[r.columnid]+'" is not found in table '+s.tableid);return!0};o.checkfn.push(i)}}),this.view&&this.viewcolumns){var l=this;this.viewcolumns.forEach(function(e,t){l.select.columns[t].as=e.columnid})}if(this.view&&this.select&&(o.view=!0,o.select=this.select.compile(this.table.databaseid||e)),r.engineid)return w.engines[r.engineid].createTable(this.table.databaseid||e,a,this.ifnotexists,n);o.insert=function(n,r){var a=w.inserted;w.inserted=[n];var s=this,i=!1,o=!1;for(var u in s.beforeinsert){var c=s.beforeinsert[u];c&&(c.funcid?w.fn[c.funcid](n)===!1&&(o=o||!0):c.statement&&c.statement.execute(e)===!1&&(o=o||!0))}if(!o){var l=!1;for(var u in s.insteadofinsert){l=!0;var c=s.insteadofinsert[u];c&&(c.funcid?w.fn[c.funcid](n):c.statement&&c.statement.execute(e))}if(!l){for(var h in s.identities){var d=s.identities[h];n[h]=d.value}if(s.checkfn&&s.checkfn.length>0&&s.checkfn.forEach(function(e){if(!e(n))throw new Error("Violation of CHECK constraint")}),s.columns.forEach(function(e){if(e.notnull&&"undefined"==typeof n[e.columnid])throw new Error("Wrong NULL value in NOT NULL column "+e.columnid)}),s.pk){var f=s.pk,p=f.onrightfn(n);if("undefined"!=typeof s.uniqs[f.hh][p]){if(!r)throw new Error("Cannot insert record, because it already exists in primary key index");i=s.uniqs[f.hh][p]}}if(s.uk&&s.uk.length&&s.uk.forEach(function(e){var t=e.onrightfn(n);if("undefined"!=typeof s.uniqs[e.hh][t]){if(!r)throw new Error("Cannot insert record, because it already exists in unique index");i=s.uniqs[e.hh][t]}}),i)s.update(function(e){for(var t in n)e[t]=n[t]},s.data.indexOf(i),t);else{s.data.push(n);for(var h in s.identities){var d=s.identities[h];d.value+=d.step}if(s.pk){var f=s.pk,p=f.onrightfn(n);s.uniqs[f.hh][p]=n}s.uk&&s.uk.length&&s.uk.forEach(function(e){var t=e.onrightfn(n);s.uniqs[e.hh][t]=n})}for(var u in s.afterinsert){var c=s.afterinsert[u];c&&(c.funcid?w.fn[c.funcid](n):c.statement&&c.statement.execute(e))}w.inserted=a}}},o["delete"]=function(t){var n=this,r=n.data[t],a=!1;for(var s in n.beforedelete){var i=n.beforedelete[s];i&&(i.funcid?w.fn[i.funcid](r)===!1&&(a=a||!0):i.statement&&i.statement.execute(e)===!1&&(a=a||!0))}if(a)return!1;var o=!1;for(var s in n.insteadofdelete){o=!0;var i=n.insteadofdelete[s];i&&(i.funcid?w.fn[i.funcid](r):i.statement&&i.statement.execute(e))}if(!o){if(this.pk){var u=this.pk,c=u.onrightfn(r);if("undefined"==typeof this.uniqs[u.hh][c])throw new Error("Something wrong with primary key index on table");this.uniqs[u.hh][c]=void 0}n.uk&&n.uk.length&&n.uk.forEach(function(e){var t=e.onrightfn(r);if("undefined"==typeof n.uniqs[e.hh][t])throw new Error("Something wrong with unique index on table");n.uniqs[e.hh][t]=void 0});for(var s in n.afterdelete){var i=n.afterdelete[s];i&&(i.funcid?w.fn[i.funcid](r):i.statement&&i.statement.execute(e))}}},o.deleteall=function(){this.data.length=0,this.pk&&(this.uniqs[this.pk.hh]={}),o.uk&&o.uk.length&&o.uk.forEach(function(e){o.uniqs[e.hh]={}})},o.update=function(t,n,r){var a,s=_(this.data[n]);if(this.pk&&(a=this.pk,a.pkaddr=a.onrightfn(s,r),"undefined"==typeof this.uniqs[a.hh][a.pkaddr]))throw new Error("Something wrong with index on table");o.uk&&o.uk.length&&o.uk.forEach(function(e){if(e.ukaddr=e.onrightfn(s),"undefined"==typeof o.uniqs[e.hh][e.ukaddr])throw new Error("Something wrong with unique index on table")}),t(s,r,w);var i=!1;for(var u in o.beforeupdate){var c=o.beforeupdate[u];c&&(c.funcid?w.fn[c.funcid](this.data[n],s)===!1&&(i=i||!0):c.statement&&c.statement.execute(e)===!1&&(i=i||!0))}if(i)return!1;var l=!1;for(var u in o.insteadofupdate){l=!0;var c=o.insteadofupdate[u];c&&(c.funcid?w.fn[c.funcid](this.data[n],s):c.statement&&c.statement.execute(e))}if(!l){if(o.checkfn&&o.checkfn.length>0&&o.checkfn.forEach(function(e){if(!e(s))throw new Error("Violation of CHECK constraint")}),o.columns.forEach(function(e){if(e.notnull&&"undefined"==typeof s[e.columnid])throw new Error("Wrong NULL value in NOT NULL column "+e.columnid)}),this.pk&&(a.newpkaddr=a.onrightfn(s),"undefined"!=typeof this.uniqs[a.hh][a.newpkaddr]&&a.newpkaddr!==a.pkaddr))throw new Error("Record already exists");o.uk&&o.uk.length&&o.uk.forEach(function(e){if(e.newukaddr=e.onrightfn(s),"undefined"!=typeof o.uniqs[e.hh][e.newukaddr]&&e.newukaddr!==e.ukaddr)throw new Error("Record already exists")}),this.pk&&(this.uniqs[a.hh][a.pkaddr]=void 0,this.uniqs[a.hh][a.newpkaddr]=s),o.uk&&o.uk.length&&o.uk.forEach(function(e){o.uniqs[e.hh][e.ukaddr]=void 0,o.uniqs[e.hh][e.newukaddr]=s}),this.data[n]=s;for(var u in o.afterupdate){var c=o.afterupdate[u];c&&(c.funcid?w.fn[c.funcid](this.data[n],s):c.statement&&c.statement.execute(e))}}};var h;return w.options.nocount||(h=1),n&&(h=n(h)),h},w.fn.Date=Object,w.fn.Date=Date,w.fn.Number=Number,w.fn.String=String,w.fn.Boolean=Boolean,oe.EXTEND=w.utils.extend,oe.CHAR=String.fromCharCode.bind(String),oe.ASCII=function(e){return e.charCodeAt(0)},oe.COALESCE=function(){for(var e=0;e0)var r=this.sets.map(function(e){return"x['"+e.column.columnid+"']="+e.expression.toJS("x","")}).join(";"),s=new Function("x,params,alasql",r);var i=function(e,r){var i,o,u=w.databases[t];o="undefined"!=typeof n?n:u.counter++;var c={$id:o,$node:"VERTEX"};return u.objects[c.$id]=c,i=c,a&&a(c),s&&s(c,e,w),r&&(i=r(i)),i};return i},z.CreateEdge=function(e){return z.extend(this,e)},z.CreateEdge.prototype.toString=function(){var e="CREATE EDGE ";return this["class"]&&(e+=this["class"]+" "),e},z.CreateEdge.prototype.toJS=function(e){var t="this.queriesfn["+(this.queriesidx-1)+"](this.params,null,"+e+")";return t},z.CreateEdge.prototype.compile=function(e){var t=e,n=new Function("params,alasql","var y;return "+this.from.toJS()),r=new Function("params,alasql","var y;return "+this.to.toJS());if("undefined"!=typeof this.name)var a="x.name="+this.name.toJS(),s=new Function("x",a);if(this.sets&&this.sets.length>0)var a=this.sets.map(function(e){return"x['"+e.column.columnid+"']="+e.expression.toJS("x","")}).join(";"),i=new Function("x,params,alasql","var y;"+a);var o=function(e,a){var o=0,u=w.databases[t],c={$id:u.counter++,$node:"EDGE"},l=n(e,w),h=r(e,w);return c.$in=[l.$id],c.$out=[h.$id],void 0===l.$out&&(l.$out=[]),l.$out.push(c.$id),void 0===typeof h.$in&&(h.$in=[]),h.$in.push(c.$id),u.objects[c.$id]=c,o=c,s&&s(c),i&&i(c,e,w),a&&(o=a(o)),o};return o},z.CreateGraph=function(e){return z.extend(this,e)},z.CreateGraph.prototype.toString=function(){var e="CREATE GRAPH ";return this["class"]&&(e+=this["class"]+" "),e},z.CreateGraph.prototype.execute=function(e,t,n){function r(e){var t=w.databases[w.useid].objects;for(var n in t)if(t[n].name===e)return t[n]}function a(n){var r={};"undefined"!=typeof n.as&&(w.vars[n.as]=r),"undefined"!=typeof n.prop&&(r.$id=n.prop,r.name=n.prop),"undefined"!=typeof n.sharp&&(r.$id=n.sharp),"undefined"!=typeof n.name&&(r.name=n.name),"undefined"!=typeof n["class"]&&(r.$class=n["class"]);var a=w.databases[e];if("undefined"==typeof r.$id&&(r.$id=a.counter++),r.$node="VERTEX","undefined"!=typeof n.json&&P(r,new Function("params,alasql","var y;return "+n.json.toJS())(t,w)),a.objects[r.$id]=r,"undefined"!=typeof r.$class){if("undefined"==typeof w.databases[e].tables[r.$class])throw new Error("No such class. Pleace use CREATE CLASS");w.databases[e].tables[r.$class].data.push(r)}return s.push(r.$id),r}var s=[];return this.from&&w.from[this.from.funcid]&&(this.graph=w.from[this.from.funcid.toUpperCase()]),this.graph.forEach(function(n){if(n.source){var i={};"undefined"!=typeof n.as&&(w.vars[n.as]=i),"undefined"!=typeof n.prop&&(i.name=n.prop),"undefined"!=typeof n.sharp&&(i.$id=n.sharp),"undefined"!=typeof n.name&&(i.name=n.name),"undefined"!=typeof n["class"]&&(i.$class=n["class"]);var o=w.databases[e];"undefined"==typeof i.$id&&(i.$id=o.counter++),i.$node="EDGE","undefined"!=typeof n.json&&P(i,new Function("params,alasql","var y;return "+n.json.toJS())(t,w));var u;if(n.source.vars){var c=w.vars[n.source.vars];u="object"==typeof c?c:o.objects[c]}else{var l=n.source.sharp;"undefined"==typeof l&&(l=n.source.prop),u=w.databases[e].objects[l],"undefined"!=typeof u||!w.options.autovertex||"undefined"==typeof n.source.prop&&"undefined"==typeof n.source.name||(u=r(n.source.prop||n.source.name),"undefined"==typeof u&&(u=a(n.source)))}var h;if(n.source.vars){var c=w.vars[n.target.vars];h="object"==typeof c?c:o.objects[c]}else{var d=n.target.sharp;"undefined"==typeof d&&(d=n.target.prop),h=w.databases[e].objects[d],"undefined"!=typeof h||!w.options.autovertex||"undefined"==typeof n.target.prop&&"undefined"==typeof n.target.name||(h=r(n.target.prop||n.target.name),"undefined"==typeof h&&(h=a(n.target)))}if(i.$in=[u.$id],i.$out=[h.$id],"undefined"==typeof u.$out&&(u.$out=[]),u.$out.push(i.$id),"undefined"==typeof h.$in&&(h.$in=[]),h.$in.push(i.$id),o.objects[i.$id]=i,"undefined"!=typeof i.$class){if("undefined"==typeof w.databases[e].tables[i.$class])throw new Error("No such class. Pleace use CREATE CLASS");w.databases[e].tables[i.$class].data.push(i)}s.push(i.$id)}else a(n)}),n&&(s=n(s)),s},z.CreateGraph.prototype.compile1=function(e){var t=e,n=new Function("params,alasql","var y;return "+this.from.toJS()),r=new Function("params,alasql","var y;return "+this.to.toJS());if("undefined"!=typeof this.name)var a="x.name="+this.name.toJS(),s=new Function("x",a);if(this.sets&&this.sets.length>0)var a=this.sets.map(function(e){return"x['"+e.column.columnid+"']="+e.expression.toJS("x","")}).join(";"),i=new Function("x,params,alasql","var y;"+a);var o=function(e,a){var o=0,u=w.databases[t],c={$id:u.counter++,$node:"EDGE"},l=n(e,w),h=r(e,w);return c.$in=[l.$id],c.$out=[h.$id],"undefined"==typeof l.$out&&(l.$out=[]),l.$out.push(c.$id),"undefined"==typeof h.$in&&(h.$in=[]),h.$in.push(c.$id),u.objects[c.$id]=c,o=c,s&&s(c),i&&i(c,e,w),a&&(o=a(o)),o};return o},z.AlterTable=function(e){return z.extend(this,e)},z.AlterTable.prototype.toString=function(){var e="ALTER TABLE "+this.table.toString();return this.renameto&&(e+=" RENAME TO "+this.renameto),e},z.AlterTable.prototype.execute=function(e,t,n){var r=w.databases[e];if(r.dbversion=Date.now(),this.renameto){var a=this.table.tableid,s=this.renameto,i=1;if(r.tables[s])throw new Error("Can not rename a table '"+a+"' to '"+s+"', because the table with this name already exists");if(s==a)throw new Error("Can not rename a table '"+a+"' to itself");return r.tables[s]=r.tables[a],delete r.tables[a],i=1,n&&n(i),i}if(this.addcolumn){var r=w.databases[this.table.databaseid||e];r.dbversion++;var o=this.table.tableid,u=r.tables[o],c=this.addcolumn.columnid;if(u.xcolumns[c])throw new Error('Cannot add column "'+c+'", because it already exists in the table "'+o+'"');var l={columnid:c,dbtypeid:this.dbtypeid,dbsize:this.dbsize,dbprecision:this.dbprecision,dbenum:this.dbenum,defaultfns:null},h=function(){};u.columns.push(l),u.xcolumns[c]=l;for(var d=0,f=u.data.length;f>d;d++)u.data[d][c]=h();return n?n(1):1}if(this.modifycolumn){var r=w.databases[this.table.databaseid||e];r.dbversion++;var o=this.table.tableid,u=r.tables[o],c=this.modifycolumn.columnid;if(!u.xcolumns[c])throw new Error('Cannot modify column "'+c+'", because it was not found in the table "'+o+'"');var l=u.xcolumns[c];return l.dbtypeid=this.dbtypeid,l.dbsize=this.dbsize,l.dbprecision=this.dbprecision,l.dbenum=this.dbenum,n?n(1):1}if(this.renamecolumn){var r=w.databases[this.table.databaseid||e];r.dbversion++;var l,o=this.table.tableid,u=r.tables[o],c=this.renamecolumn,p=this.to;if(!u.xcolumns[c])throw new Error('Column "'+c+'" is not found in the table "'+o+'"');if(u.xcolumns[p])throw new Error('Column "'+p+'" already exists in the table "'+o+'"');if(c!=p){for(var b=0;bd;d++)u.data[d][p]=u.data[d][c],delete u.data[d][c];return u.data.length}return n?n(0):0}if(this.dropcolumn){var r=w.databases[this.table.databaseid||e];r.dbversion++;for(var o=this.table.tableid,u=r.tables[o],c=this.dropcolumn,g=!1,b=0;bd;d++)delete u.data[d][c];return n?n(u.data.length):u.data.length}throw Error("Unknown ALTER TABLE method")},z.CreateIndex=function(e){return z.extend(this,e)},z.CreateIndex.prototype.toString=function(){var e="CREATE";return this.unique&&(e+=" UNIQUE"),e+=" INDEX "+this.indexid+" ON "+this.table.toString(),e+="("+this.columns.toString()+")"},z.CreateIndex.prototype.execute=function(e,t,n){var r=w.databases[e],a=this.table.tableid,s=r.tables[a],i=this.indexid;r.indices[i]=a;var o=this.columns.map(function(e){return e.expression.toJS("r","")}).join("+'`'+"),u=new Function("r,params,alasql","return "+o);if(this.unique){s.uniqdefs[i]={rightfns:o};var c=s.uniqs[i]={};if(s.data.length>0)for(var l=0,h=s.data.length;h>l;l++){var d=o(s.data[l]);c[d]||(c[d]={num:0}),c[d].num++}}else{var f=D(o);s.inddefs[i]={rightfns:o,hh:f},s.indices[f]={};var p=s.indices[f]={};if(s.data.length>0)for(var l=0,h=s.data.length;h>l;l++){var d=u(s.data[l],t,w);p[d]||(p[d]=[]),p[d].push(s.data[l])}}var b=1;return n&&(b=n(b)),b},z.Reindex=function(e){return z.extend(this,e)},z.Reindex.prototype.toString=function(){var e="REINDEX "+this.indexid;return e},z.Reindex.prototype.execute=function(e,t,n){var r=w.databases[e],a=this.indexid,s=r.indices[a],i=r.tables[s];i.indexColumns();var o=1;return n&&(o=n(o)),o},z.DropIndex=function(e){return z.extend(this,e)},z.DropIndex.prototype.toString=function(){return"DROP INDEX"+this.indexid},z.DropIndex.prototype.compile=function(e){this.indexid;return function(){return 1}},z.WithSelect=function(e){return z.extend(this,e)},z.WithSelect.prototype.toString=function(){var e="WITH ";return e+=this.withs.map(function(e){return e.name+" AS ("+e.select.toString()+")"}).join(",")+" ",e+=this.select.toString()},z.WithSelect.prototype.execute=function(e,t,n){var r=this,a=[];r.withs.forEach(function(n){a.push(w.databases[e].tables[n.name]);var r=w.databases[e].tables[n.name]=new K({tableid:n.name});r.data=n.select.execute(e,t)});var s=1;return s=this.select.execute(e,t,function(t){return r.withs.forEach(function(t,n){a[n]?w.databases[e].tables[t.name]=a[n]:delete w.databases[e].tables[t.name]}),n&&(t=n(t)),t})},z.If=function(e){return z.extend(this,e)},z.If.prototype.toString=function(){var e="IF ";return e+=this.expression.toString(),e+=" "+this.thenstat.toString(),this.elsestat&&(e+=" ELSE "+this.thenstat.toString()),e},z.If.prototype.execute=function(e,t,n){var r,a=new Function("params,alasql,p","var y;return "+this.expression.toJS("({})","",null)).bind(this);return a(t,w)?r=this.thenstat.execute(e,t,n):this.elsestat?r=this.elsestat.execute(e,t,n):n&&(r=n(r)),r},z.While=function(e){return z.extend(this,e)},z.While.prototype.toString=function(){var e="WHILE ";return e+=this.expression.toString(),e+=" "+this.loopstat.toString()},z.While.prototype.execute=function(e,t,n){function r(u){o?s.push(u):o=!0,setTimeout(function(){i(t,w)?a.loopstat.execute(e,t,r):s=n(s)},0)}var a=this,s=[],i=new Function("params,alasql,p","var y;return "+this.expression.toJS());if(n){var o=!1;r()}else for(;i(t,w);){var u=a.loopstat.execute(e,t);s.push(u)}return s},z.Break=function(e){return z.extend(this,e)},z.Break.prototype.toString=function(){var e="BREAK";return e},z.Break.prototype.execute=function(e,t,n,r){var a=1;return n&&(a=n(a)),a},z.Continue=function(e){return z.extend(this,e)},z.Continue.prototype.toString=function(){var e="CONTINUE";return e},z.Continue.prototype.execute=function(e,t,n,r){var a=1;return n&&(a=n(a)),a},z.BeginEnd=function(e){return z.extend(this,e)},z.BeginEnd.prototype.toString=function(){var e="BEGIN "+this.statements.toString()+" END";return e},z.BeginEnd.prototype.execute=function(e,t,n,r){function a(){s.statements[o].execute(e,t,function(e){return i.push(e),o++,o=0?r+="(x="+n[t].toJS()+",x==undefined?undefined:+x)":w.fn[s.xcolumns[e.columnid].dbtypeid]?(r+="(new "+s.xcolumns[e.columnid].dbtypeid+"(",r+=n[t].toJS(),r+="))"):r+=n[t].toJS():r+=n[t].toJS(),u.push(r)}):n instanceof Array&&s.columns&&s.columns.length>0?s.columns.forEach(function(e,t){var r="'"+e.columnid+"':";["INT","FLOAT","NUMBER","MONEY"].indexOf(e.dbtypeid)>=0?r+="+"+n[t].toJS():w.fn[e.dbtypeid]?(r+="(new "+e.dbtypeid+"(",r+=n[t].toJS(),r+="))"):r+=n[t].toJS(),u.push(r)}):o=g(n),r.tables[a].defaultfns&&u.unshift(r.tables[a].defaultfns),i+=o?"a="+o+";":"a={"+u.join(",")+"};",r.tables[a].isclass&&(i+="var db=alasql.databases['"+e+"'];",i+='a.$class="'+a+'";',i+="a.$id=db.counter++;",i+="db.objects[a.$id]=a;"),r.tables[a].insert?(i+="var db=alasql.databases['"+e+"'];",i+="db.tables['"+a+"'].insert(a,"+(t.orreplace?"true":"false")+");"):i+="aa.push(a);"}),n=u+i,r.tables[a].insert||(i+="alasql.databases['"+e+"'].tables['"+a+"'].data=alasql.databases['"+e+"'].tables['"+a+"'].data.concat(aa);"),i+=r.tables[a].insert&&r.tables[a].isclass?"return a.$id;":"return "+t.values.length;var c=new Function("db, params, alasql","var y;"+u+i).bind(this)}else if(this.select){if(this.select.modifier="RECORDSET",selectfn=this.select.compile(e),r.engineid&&w.engines[r.engineid].intoTable){var l=function(e,t){var n=selectfn(e),s=w.engines[r.engineid].intoTable(r.databaseid,a,n.data,null,t);return s};return l}var h="return alasql.utils.extend(r,{"+s.defaultfns+"})",d=new Function("r,db,params,alasql",h),c=function(e,n,r){var s=selectfn(n).data;if(e.tables[a].insert)for(var i=0,o=s.length;o>i;i++){var u=_(s[i]);d(u,e,n,r),e.tables[a].insert(u,t.orreplace)}else e.tables[a].data=e.tables[a].data.concat(s);return r.options.nocount?void 0:s.length}}else{if(!this["default"])throw new Error("Wrong INSERT parameters");var f="db.tables['"+a+"'].data.push({"+s.defaultfns+"});return 1;",c=new Function("db,params,alasql",f)}if(r.engineid&&w.engines[r.engineid].intoTable&&w.options.autocommit)var l=function(e,t){var s=new Function("db,params","var y;"+n+"return aa;")(r,e),i=w.engines[r.engineid].intoTable(r.databaseid,a,s,null,t);return i};else var l=function(t,n){var r=w.databases[e];w.options.autocommit&&r.engineid&&w.engines[r.engineid].loadTableData(e,a);var s=c(r,t,w);return w.options.autocommit&&r.engineid&&w.engines[r.engineid].saveTableData(e,a),w.options.nocount&&(s=void 0),n&&n(s),s};return l},z.Insert.prototype.execute=function(e,t,n){return this.compile(e)(t,n)},z.CreateTrigger=function(e){return z.extend(this,e)},z.CreateTrigger.prototype.toString=function(){var e="CREATE TRIGGER "+this.trigger+" ";return this.when&&(e+=this.when+" "),e+=this.action+" ON ",this.table.databaseid&&(e+=this.table.databaseid+"."),e+=this.table.tableid+" ",e+=this.statement.toString()},z.CreateTrigger.prototype.execute=function(e,t,n){var r=1,a=this.trigger;e=this.table.databaseid||e;var s=w.databases[e],i=this.table.tableid,o={action:this.action,when:this.when,statement:this.statement,funcid:this.funcid};return s.triggers[a]=o,"INSERT"==o.action&&"BEFORE"==o.when?s.tables[i].beforeinsert[a]=o:"INSERT"==o.action&&"AFTER"==o.when?s.tables[i].afterinsert[a]=o:"INSERT"==o.action&&"INSTEADOF"==o.when?s.tables[i].insteadofinsert[a]=o:"DELETE"==o.action&&"BEFORE"==o.when?s.tables[i].beforedelete[a]=o:"DELETE"==o.action&&"AFTER"==o.when?s.tables[i].afterdelete[a]=o:"DELETE"==o.action&&"INSTEADOF"==o.when?s.tables[i].insteadofdelete[a]=o:"UPDATE"==o.action&&"BEFORE"==o.when?s.tables[i].beforeupdate[a]=o:"UPDATE"==o.action&&"AFTER"==o.when?s.tables[i].afterupdate[a]=o:"UPDATE"==o.action&&"INSTEADOF"==o.when&&(s.tables[i].insteadofupdate[a]=o),n&&(r=n(r)),r},z.DropTrigger=function(e){return z.extend(this,e)},z.DropTrigger.prototype.toString=function(){var e="DROP TRIGGER "+this.trigger;return e},z.DropTrigger.prototype.execute=function(e,t,n){var r=0,a=w.databases[e],s=this.trigger,i=a.triggers[s];if(!i)throw new Error("Trigger not found");return r=1,delete a.tables[i].beforeinsert[s],delete a.tables[i].afterinsert[s],delete a.tables[i].insteadofinsert[s],delete a.tables[i].beforedelte[s],delete a.tables[i].afterdelete[s],delete a.tables[i].insteadofdelete[s],delete a.tables[i].beforeupdate[s],delete a.tables[i].afterupdate[s],delete a.tables[i].insteadofupdate[s],delete a.triggers[s],n&&(r=n(r)),r},z.Delete=function(e){return z.extend(this,e)},z.Delete.prototype.toString=function(){var e="DELETE FROM "+this.table.toString();return this.where&&(e+=" WHERE "+this.where.toString()),e},z.Delete.prototype.compile=function(e){ +e=this.table.databaseid||e;var t,n=this.table.tableid,r=w.databases[e];if(this.where){this.exists&&(this.existsfn=this.exists.map(function(t){var n=t.compile(e);return n.query.modifier="RECORDSET",n})),this.queries&&(this.queriesfn=this.queries.map(function(t){var n=t.compile(e);return n.query.modifier="RECORDSET",n}));var a=new Function("r,params,alasql","var y;return ("+this.where.toJS("r","")+")").bind(this);t=function(t,s){if(r.engineid&&w.engines[r.engineid].deleteFromTable)return w.engines[r.engineid].deleteFromTable(e,n,a,t,s);w.options.autocommit&&r.engineid&&"LOCALSTORAGE"==r.engineid&&w.engines[r.engineid].loadTableData(e,n);for(var i=r.tables[n],o=i.data.length,u=[],c=0,l=i.data.length;l>c;c++)a(i.data[c],t,w)?i["delete"]&&i["delete"](c,t,w):u.push(i.data[c]);i.data=u;var h=o-i.data.length;return w.options.autocommit&&r.engineid&&"LOCALSTORAGE"==r.engineid&&w.engines[r.engineid].saveTableData(e,n),s&&s(h),h}}else t=function(t,a){w.options.autocommit&&r.engineid&&w.engines[r.engineid].loadTableData(e,n);var s=r.tables[n];s.dirty=!0;var i=r.tables[n].data.length;r.tables[n].data.length=0;for(var o in r.tables[n].uniqs)r.tables[n].uniqs[o]={};for(var o in r.tables[n].indices)r.tables[n].indices[o]={};return w.options.autocommit&&r.engineid&&w.engines[r.engineid].saveTableData(e,n),a&&a(i),i};return t},z.Delete.prototype.execute=function(e,t,n){return this.compile(e)(t,n)},z.Update=function(e){return z.extend(this,e)},z.Update.prototype.toString=function(){var e="UPDATE "+this.table.toString();return this.columns&&(e+=" SET "+this.columns.toString()),this.where&&(e+=" WHERE "+this.where.toString()),e},z.SetColumn=function(e){return z.extend(this,e)},z.SetColumn.prototype.toString=function(){return this.column.toString()+"="+this.expression.toString()},z.Update.prototype.compile=function(e){e=this.table.databaseid||e;var t=this.table.tableid;if(this.where){this.exists&&(this.existsfn=this.exists.map(function(t){var n=t.compile(e);return n.query.modifier="RECORDSET",n})),this.queries&&(this.queriesfn=this.queries.map(function(t){var n=t.compile(e);return n.query.modifier="RECORDSET",n}));var n=new Function("r,params,alasql","var y;return "+this.where.toJS("r","")).bind(this)}var r=w.databases[e].tables[t].onupdatefns||"";r+=";",this.columns.forEach(function(e){r+="r['"+e.column.columnid+"']="+e.expression.toJS("r","")+";"});var a=new Function("r,params,alasql","var y;"+r),s=function(r,s){var i=w.databases[e];if(i.engineid&&w.engines[i.engineid].updateTable)return w.engines[i.engineid].updateTable(e,t,a,n,r,s);w.options.autocommit&&i.engineid&&w.engines[i.engineid].loadTableData(e,t);var o=i.tables[t];if(!o)throw new Error("Table '"+t+"' not exists");for(var u=0,c=0,l=o.data.length;l>c;c++)n&&!n(o.data[c],r,w)||(o.update?o.update(a,c,r):a(o.data[c],r,w),u++);return w.options.autocommit&&i.engineid&&w.engines[i.engineid].saveTableData(e,t),s&&s(u),u};return s},z.Update.prototype.execute=function(e,t,n){return this.compile(e)(t,n)},z.Merge=function(e){return z.extend(this,e)},z.Merge.prototype.toString=function(){var e="MERGE ";return e+=this.into.tableid+" ",this.into.as&&(e+="AS "+this.into.as+" "),e+="USING "+this.using.tableid+" ",this.using.as&&(e+="AS "+this.using.as+" "),e+="ON "+this.on.toString()+" ",this.matches.forEach(function(t){e+="WHEN ",t.matched||(e+="NOT "),e+="MATCHED ",t.bytarget&&(e+="BY TARGET "),t.bysource&&(e+="BY SOURCE "),t.expr&&(e+="AND "+t.expr.toString()+" "),e+="THEN ",t.action["delete"]&&(e+="DELETE "),t.action.insert&&(e+="INSERT ",t.action.columns&&(e+="("+t.action.columns.toString()+") "),t.action.values&&(e+="VALUES ("+t.action.values.toString()+") "),t.action.defaultvalues&&(e+="DEFAULT VALUES ")),t.action.update&&(e+="UPDATE ",e+=t.action.update.map(function(e){return e.toString()}).join(",")+" ")}),e},z.Merge.prototype.execute=function(e,t,n){var r=1;return n&&(r=n(r)),r},z.CreateDatabase=function(e){return z.extend(this,e)},z.CreateDatabase.prototype.toString=function(){var e="CREATE";return this.engineid&&(e+=" "+this.engineid),e+=" DATABASE",this.ifnotexists&&(e+=" IF NOT EXISTS"),e+=" "+this.databaseid,this.args&&this.args.length>0&&(e+="("+this.args.map(function(e){return e.toString()}).join(", ")+")"),this.as&&(e+=" AS "+this.as),e},z.CreateDatabase.prototype.execute=function(e,t,n){var r;if(this.args&&this.args.length>0&&(r=this.args.map(function(e){return new Function("params,alasql","var y;return "+e.toJS())(t,w)})),this.engineid){var a=w.engines[this.engineid].createDatabase(this.databaseid,this.args,this.ifnotexists,this.as,n);return a}var s=this.databaseid;if(w.databases[s])throw new Error("Database '"+s+"' already exists");var a=(new w.Database(s),1);return n?n(a):a},z.AttachDatabase=function(e){return z.extend(this,e)},z.AttachDatabase.prototype.toString=function(){var e="ATTACH";return this.engineid&&(e+=" "+this.engineid),e+=" DATABASE "+this.databaseid,args&&(e+="(",args.length>0&&(e+=args.map(function(e){return e.toString()}).join(", ")),e+=")"),this.as&&(e+=" AS "+this.as),e},z.AttachDatabase.prototype.execute=function(e,t,n){if(!w.engines[this.engineid])throw new Error('Engine "'+this.engineid+'" is not defined.');var r=w.engines[this.engineid].attachDatabase(this.databaseid,this.as,this.args,t,n);return r},z.DetachDatabase=function(e){return z.extend(this,e)},z.DetachDatabase.prototype.toString=function(){var e="DETACH";return e+=" DATABASE "+this.databaseid},z.DetachDatabase.prototype.execute=function(e,t,n){if(!w.databases[this.databaseid].engineid)throw new Error('Cannot detach database "'+this.engineid+'", because it was not attached.');var r,a=this.databaseid;if(a==w.DEFAULTDATABASEID)throw new Error("Drop of default database is prohibited");if(w.databases[a])delete w.databases[a],a==w.useid&&w.use(),r=1;else{if(!this.ifexists)throw new Error("Database '"+a+"' does not exist");r=0}return n&&n(r),r},z.UseDatabase=function(e){return z.extend(this,e)},z.UseDatabase.prototype.toString=function(){return"USE DATABASE "+this.databaseid},z.UseDatabase.prototype.execute=function(e,t,n){var r=this.databaseid;if(!w.databases[r])throw new Error("Database '"+r+"' does not exist");w.use(r);var a=1;return n&&n(a),a},z.DropDatabase=function(e){return z.extend(this,e)},z.DropDatabase.prototype.toString=function(){var e="DROP";return this.ifexists&&(e+=" IF EXISTS"),e+=" DATABASE "+this.databaseid},z.DropDatabase.prototype.execute=function(e,t,n){if(this.engineid)return w.engines[this.engineid].dropDatabase(this.databaseid,this.ifexists,n);var r,a=this.databaseid;if(a==w.DEFAULTDATABASEID)throw new Error("Drop of default database is prohibited");if(w.databases[a]){if(w.databases[a].engineid)throw new Error("Cannot drop database '"+a+"', because it is attached. Detach it.");delete w.databases[a],a==w.useid&&w.use(),r=1}else{if(!this.ifexists)throw new Error("Database '"+a+"' does not exist");r=0}return n&&n(r),r},z.Declare=function(e){return z.extend(this,e)},z.Declare.prototype.toString=function(){var e="DECLARE ";return this.declares&&this.declares.length>0&&(e=this.declares.map(function(e){var t="";return t+="@"+e.variable+" ",t+=e.dbtypeid,this.dbsize&&(t+="("+this.dbsize,this.dbprecision&&(t+=","+this.dbprecision),t+=")"),e.expression&&(t+=" = "+e.expression.toString()),t}).join(",")),e},z.Declare.prototype.execute=function(e,t,n){var r=1;return this.declares&&this.declares.length>0&&this.declares.map(function(e){var n=e.dbtypeid;w.fn[n]||(n=n.toUpperCase()),w.declares[e.variable]={dbtypeid:n,dbsize:e.dbsize,dbprecision:e.dbprecision},e.expression&&(w.vars[e.variable]=new Function("params,alasql","return "+e.expression.toJS("({})","",null))(t,w),w.declares[e.variable]&&(w.vars[e.variable]=w.stdfn.CONVERT(w.vars[e.variable],w.declares[e.variable])))}),n&&(r=n(r)),r},z.ShowDatabases=function(e){return z.extend(this,e)},z.ShowDatabases.prototype.toString=function(){var e="SHOW DATABASES";return this.like&&(e+="LIKE "+this.like.toString()),e},z.ShowDatabases.prototype.execute=function(e,t,n){if(this.engineid)return w.engines[this.engineid].showDatabases(this.like,n);var r=this,a=[];for(dbid in w.databases)a.push({databaseid:dbid});return r.like&&a&&a.length>0&&(a=a.filter(function(e){return w.utils.like(r.like.value,e.databaseid)})),n&&n(a),a},z.ShowTables=function(e){return z.extend(this,e)},z.ShowTables.prototype.toString=function(){var e="SHOW TABLES";return this.databaseid&&(e+=" FROM "+this.databaseid),this.like&&(e+=" LIKE "+this.like.toString()),e},z.ShowTables.prototype.execute=function(e,t,n){var r=w.databases[this.databaseid||e],a=this,s=[];for(tableid in r.tables)s.push({tableid:tableid});return a.like&&s&&s.length>0&&(s=s.filter(function(e){return w.utils.like(a.like.value,e.tableid)})),n&&n(s),s},z.ShowColumns=function(e){return z.extend(this,e)},z.ShowColumns.prototype.toString=function(){var e="SHOW COLUMNS";return this.table.tableid&&(e+=" FROM "+this.table.tableid),this.databaseid&&(e+=" FROM "+this.databaseid),e},z.ShowColumns.prototype.execute=function(e){var t=w.databases[this.databaseid||e],n=t.tables[this.table.tableid];if(n&&n.columns){var r=n.columns.map(function(e){return{columnid:e.columnid,dbtypeid:e.dbtypeid,dbsize:e.dbsize}});return r}return[]},z.ShowIndex=function(e){return z.extend(this,e)},z.ShowIndex.prototype.toString=function(){var e="SHOW INDEX";return this.table.tableid&&(e+=" FROM "+this.table.tableid),this.databaseid&&(e+=" FROM "+this.databaseid),e},z.ShowIndex.prototype.execute=function(e){var t=w.databases[this.databaseid||e],n=t.tables[this.table.tableid],r=[];if(n&&n.indices)for(var a in n.indices)r.push({hh:a,len:Object.keys(n.indices[a]).length});return r},z.ShowCreateTable=function(e){return z.extend(this,e)},z.ShowCreateTable.prototype.toString=function(){var e="SHOW CREATE TABLE "+this.table.tableid;return this.databaseid&&(e+=" FROM "+this.databaseid),e},z.ShowCreateTable.prototype.execute=function(e){var t=w.databases[this.databaseid||e],n=t.tables[this.table.tableid];if(n){var r="CREATE TABLE "+this.table.tableid+" (",a=[];return n.columns&&(n.columns.forEach(function(e){var t=e.columnid+" "+e.dbtypeid;e.dbsize&&(t+="("+e.dbsize+")"),e.primarykey&&(t+=" PRIMARY KEY"),a.push(t)}),r+=a.join(", ")),r+=")"}throw new Error('There is no such table "'+this.table.tableid+'"')},z.SetVariable=function(e){return z.extend(this,e)},z.SetVariable.prototype.toString=function(){var e="SET ";return"undefined"!=typeof this.value&&(e+=this.variable.toUpperCase()+" "+(this.value?"ON":"OFF")),this.expression&&(e+=this.method+this.variable+" = "+this.expression.toString()),e},z.SetVariable.prototype.execute=function(e,t,n){if("undefined"!=typeof this.value){var r=this.value;"ON"==r?r=!0:"OFF"==r&&(r=!1),w.options[this.variable]=r}else if(this.expression){this.exists&&(this.existsfn=this.exists.map(function(t){var n=t.compile(e);return n.query&&!n.query.modifier&&(n.query.modifier="RECORDSET"),n})),this.queries&&(this.queriesfn=this.queries.map(function(t){var n=t.compile(e);return n.query&&!n.query.modifier&&(n.query.modifier="RECORDSET"),n}));var a=new Function("params,alasql","return "+this.expression.toJS("({})","",null)).bind(this)(t,w);if(w.declares[this.variable]&&(a=w.stdfn.CONVERT(a,w.declares[this.variable])),this.props&&this.props.length>0){if("@"==this.method)var s="alasql.vars['"+this.variable+"']";else var s="params['"+this.variable+"']";s+=this.props.map(function(e){return"string"==typeof e?"['"+e+"']":"number"==typeof e?"["+e+"]":"["+e.toJS()+"]"}).join(),new Function("value,params,alasql","var y;"+s+"=value")(a,t,w)}else"@"==this.method?w.vars[this.variable]=a:t[this.variable]=a}var a=1;return n&&(a=n(a)),a},w.test=function(e,t,n){if(0===arguments.length)return void w.log(w.con.results);if(1===arguments.length){var r=Date.now();return n(),void w.con.log(Date.now()-r)}2===arguments.length&&(n=t,t=1);for(var r=Date.now(),a=0;t>a;a++)n();w.con.results[e]=Date.now()-r},w.log=function(e,t){var n=w.useid,r=w.options.logtarget;C.isNode&&(r="console");var a;if(a="string"==typeof e?w(e,t):e,"console"===r||C.isNode)"string"==typeof e&&w.options.logprompt&&console.log(n+">",e),a instanceof Array&&console.table?console.table(a):console.log(le(a));else{var s;s="output"===r?document.getElementsByTagName("output")[0]:"string"==typeof r?document.getElementById(r):r;var i="";if("string"==typeof e&&w.options.logprompt&&(i+="
"+w.pretty(e)+"
"),a instanceof Array)if(0===a.length)i+="

[ ]

";else if("object"!=typeof a[0]||a[0]instanceof Array)for(var o=0,u=a.length;u>o;o++)i+="

"+m(a[o])+"

";else i+=m(a);else i+=m(a);s.innerHTML+=i}},w.clear=function(){var e=w.options.logtarget;if(C.isNode||C.isMeteorServer)console.clear&&console.clear();else{var t;t="output"===e?document.getElementsByTagName("output")[0]:"string"==typeof e?document.getElementById(e):e,t.innerHTML=""}},w.write=function(e){var t=w.options.logtarget;if(C.isNode||C.isMeteorServer)console.log&&console.log(e);else{var n;n="output"===t?document.getElementsByTagName("output")[0]:"string"==typeof t?document.getElementById(t):t,n.innerHTML+=e}},w.prompt=function(e,t,n){if(C.isNode)throw new Error("The prompt not realized for Node.js");var r=0;if("string"==typeof e&&(e=document.getElementById(e)),"string"==typeof t&&(t=document.getElementById(t)),t.textContent=w.useid,n){w.prompthistory.push(n),r=w.prompthistory.length;try{var a=Date.now();w.log(n),w.write('

'+(Date.now()-a)+" ms

")}catch(s){w.write("

"+olduseid+"> "+sql+"

"),w.write('

'+s+"

")}}var i=e.getBoundingClientRect().top+document.getElementsByTagName("body")[0].scrollTop;E(document.getElementsByTagName("body")[0],i,500),e.onkeydown=function(n){if(13===n.which){var a=e.value,s=w.useid;e.value="",w.prompthistory.push(a),r=w.prompthistory.length;try{var i=Date.now();w.log(a),w.write('

'+(Date.now()-i)+" ms

")}catch(o){w.write("

"+s+"> "+w.pretty(a,!1)+"

"),w.write('

'+o+"

")}e.focus(),t.textContent=w.useid;var u=e.getBoundingClientRect().top+document.getElementsByTagName("body")[0].scrollTop;E(document.getElementsByTagName("body")[0],u,500)}else 38===n.which?(r--,0>r&&(r=0),w.prompthistory[r]&&(e.value=w.prompthistory[r],n.preventDefault())):40===n.which&&(r++,r>=w.prompthistory.length?(r=w.prompthistory.length,e.value=""):w.prompthistory[r]&&(e.value=w.prompthistory[r],n.preventDefault()))}},z.BeginTransaction=function(e){return z.extend(this,e)},z.BeginTransaction.prototype.toString=function(){return"BEGIN TRANSACTION"},z.BeginTransaction.prototype.execute=function(e,t,n){var r=1;return w.databases[e].engineid?w.engines[w.databases[w.useid].engineid].begin(e,n):(n&&n(r),r)},z.CommitTransaction=function(e){return z.extend(this,e)},z.CommitTransaction.prototype.toString=function(){return"COMMIT TRANSACTION"},z.CommitTransaction.prototype.execute=function(e,t,n){var r=1;return w.databases[e].engineid?w.engines[w.databases[w.useid].engineid].commit(e,n):(n&&n(r),r)},z.RollbackTransaction=function(e){return z.extend(this,e)},z.RollbackTransaction.prototype.toString=function(){return"ROLLBACK TRANSACTION"},z.RollbackTransaction.prototype.execute=function(e,t,n){var r=1;return w.databases[e].engineid?w.engines[w.databases[e].engineid].rollback(e,n):(n&&n(r),r)},w.options.tsql&&(w.stdfn.OBJECT_ID=function(e,t){"undefined"==typeof t&&(t="T"),t=t.toUpperCase();var n=e.split("."),r=w.useid,a=n[0];2==n.length&&(r=n[0],a=n[1]);var s=w.databases[r].tables;r=w.databases[r].databaseid;for(var i in s)if(i==a){if(s[i].view&&"V"==t)return r+"."+i;if(!s[i].view&&"T"==t)return r+"."+i;return}}),w.options.mysql,(w.options.mysql||w.options.sqlite)&&(w.from.INFORMATION_SCHEMA=function(e,t,n,r,a){if("VIEWS"==e||"TABLES"==e){var s=[];for(var i in w.databases){var o=w.databases[i].tables;for(var u in o)(o[u].view&&"VIEWS"==e||!o[u].view&&"TABLES"==e)&&s.push({TABLE_CATALOG:i,TABLE_NAME:u})}return n&&(s=n(s,r,a)),s}throw new Error("Unknown INFORMATION_SCHEMA table")}),w.options.postgres,w.options.oracle,w.options.sqlite,w.into.SQL=function(e,t,n,r,a){var s;"object"==typeof e&&(t=e,e=void 0);var i={};if(w.utils.extend(i,t),"undefined"==typeof i.tableid)throw new Error("Table for INSERT TO is not defined.");var o="";0==r.length&&"object"==typeof n[0]&&(r=Object.keys(n[0]).map(function(e){return{columnid:e}}));for(var u=0,c=n.length;c>u;u++)o+="INSERT INTO "+t.tableid+"(",o+=r.map(function(e){return e.columnid}).join(","),o+=") VALUES (",o+=r.map(function(e){var t=n[u][e.columnid];return e.typeid?"STRING"!=e.typeid&&"VARCHAR"!=e.typeid&&"NVARCHAR"!=e.typeid&&"CHAR"!=e.typeid&&"NCHAR"!=e.typeid||(t="'"+O(t)+"'"):"string"==typeof t&&(t="'"+O(t)+"'"),t}),o+=");\n";return s=w.utils.saveFile(e,o),a&&(s=a(s)),s},w.into.HTML=function(e,t,n,r,a){var s=1;if("object"!=typeof exports){var i={headers:!0};w.utils.extend(i,t);var o=document.querySelector(e);if(!o)throw new Error("Selected HTML element is not found");0==r.length&&"object"==typeof n[0]&&(r=Object.keys(n[0]).map(function(e){return{columnid:e}}));var u=document.createElement("table"),c=document.createElement("thead");if(u.appendChild(c),i.headers){for(var l=document.createElement("tr"),h=0;h0&&(r=Object.keys(n[0]).map(function(e){return{columnid:e}})),"object"==typeof e&&(t=e,e=void 0);var s=n.length,i="";if(n.length>0){var o=r[0].columnid;i+=n.map(function(e){return e[o]}).join("\n")}return s=w.utils.saveFile(e,i),a&&(s=a(s)),s},w.into.TAB=w.into.TSV=function(e,t,n,r,a){var s={};return w.utils.extend(s,t),s.separator=" ",w.into.CSV(e,s,n,r,a)},w.into.CSV=function(e,t,n,r,a){0==r.length&&n.length>0&&(r=Object.keys(n[0]).map(function(e){return{columnid:e}})),"object"==typeof e&&(t=e,e=void 0);var s={headers:!0};s.separator=";",s.quote='"',w.utils.extend(s,t);var i=n.length,o="";return s.headers&&(o+=s.quote+r.map(function(e){return e.columnid.trim()}).join(s.quote+s.separator+s.quote)+s.quote+"\r\n"),n.forEach(function(e,t){o+=r.map(function(t){var n=e[t.columnid];return n=(n+"").replace(new RegExp("\\"+s.quote,"g"),'""'),+n!=n&&(n=s.quote+n+s.quote),n}).join(s.separator)+"\r\n"}),i=w.utils.saveFile(e,o),a&&(i=a(i)),i},w.into.XLS=function(e,t,n,r,a){function s(){var e=' ",e+=""}return"undefined"!=typeof o.columns?r=o.columns:0==r.length&&n.length>0&&"object"==typeof n[0]&&(r=n[0]instanceof Array?n[0].map(function(e,t){return{columnid:t}}):Object.keys(n[0]).map(function(e){return{columnid:e}})),r.forEach(function(e,t){"undefined"!=typeof o.column&&P(e,o.column),"undefined"==typeof e.width&&(o.column&&"undefined"!=o.column.width?e.width=o.column.width:e.width="120px"),"number"==typeof e.width&&(e.width=e.width+"px"),"undefined"==typeof e.columnid&&(e.columnid=t),"undefined"==typeof e.title&&(e.title=""+e.columnid.trim()),o.headers&&o.headers instanceof Array&&(e.title=o.headers[t])}),e+="",r.forEach(function(t){e+=''}),e+="",o.headers&&(e+="",e+="",r.forEach(function(t,n){e+="0&&n.forEach(function(n,a){if(!(a>o.limit)){e+=""}),e+=""}}),e+="",e+="",e+="",e+=""}"object"==typeof e&&(t=e,e=void 0);var i={};t&&t.sheets&&(i=t.sheets);var o={headers:!0};"undefined"!=typeof i.Sheet1?o=i[0]:"undefined"!=typeof t&&(o=t),"undefined"==typeof o.sheetid&&(o.sheetid="Sheet1");var u=s(),c=w.utils.saveFile(e,u);return a&&(c=a(c)),c},w.into.XLSXML=function(e,t,n,r,a){function s(){function e(e){var t="";for(var n in e){t+="<"+n;for(var r in e[n])t+=" ",t+="x:"==r.substr(0,2)?r:"ss:",t+=r+'="'+e[n][r]+'"';t+="/>"}var a=D(t);return u[a]||(u[a]={styleid:c},s+='",c++),"s"+u[a].styleid}var a=' 0 ',s="",o=" ",u={},c=62;for(var l in i){var h=i[l];"undefined"!=typeof h.columns?r=h.columns:0==r.length&&n.length>0&&"object"==typeof n[0]&&(r=n[0]instanceof Array?n[0].map(function(e,t){return{columnid:t}}):Object.keys(n[0]).map(function(e){return{columnid:e}})),r.forEach(function(e,t){"undefined"!=typeof h.column&&P(e,h.column),"undefined"==typeof e.width&&(h.column&&"undefined"!=typeof h.column.width?e.width=h.column.width:e.width=120),"number"==typeof e.width&&(e.width=e.width),"undefined"==typeof e.columnid&&(e.columnid=t),"undefined"==typeof e.title&&(e.title=""+e.columnid.trim()),h.headers&&h.headers instanceof Array&&(e.title=h.headers[idx])}),o+=' ',r.forEach(function(e,t){o+=''}),h.headers&&(o+='',r.forEach(function(t,n){if(o+="0&&n.forEach(function(n,a){if(!(a>h.limit)){var s={};if(P(s,h.row),h.rows&&h.rows[a]&&P(s,h.rows[a]),o+="';var b=u.format;if("undefined"==typeof c)o+="";else if("undefined"!=typeof b)if("function"==typeof b)o+=b(c);else{if("string"!=typeof b)throw new Error("Unknown format type. Should be function or string");o+=c}else o+="number"==l||"date"==l?c.toString():"money"==l?(+c).toFixed(2):c;o+=""}),o+=""}}),o+="
"}return o+="
",a+s+o}t=t||{},"object"==typeof e&&(t=e,e=void 0);var i={};t&&t.sheets?i=t.sheets:i.Sheet1=t;var o=w.utils.saveFile(e,s());return a&&(o=a(o)),o},w.into.XLSX=function(e,t,n,r,s){function i(){"object"==typeof t&&t instanceof Array?n&&n.length>0&&n.forEach(function(e,n){o(t[n],e,void 0,n+1)}):o(t,n,r,1),u(s)}function o(e,t,n,r){var a={sheetid:"Sheet "+r,headers:!0};w.utils.extend(a,e),(!n||0==n.length)&&t.length>0&&(n=Object.keys(t[0]).map(function(e){return{columnid:e}}));var s={};h.SheetNames.indexOf(a.sheetid)>-1?s=h.Sheets[a.sheetid]:(h.SheetNames.push(a.sheetid),h.Sheets[a.sheetid]={},s=h.Sheets[a.sheetid]);var i="A1";a.range&&(i=a.range);var o=w.utils.xlscn(i.match(/[A-Z]+/)[0]),u=+i.match(/[0-9]+/)[0]-1;if(h.Sheets[a.sheetid]["!ref"])var c=h.Sheets[a.sheetid]["!ref"],l=w.utils.xlscn(c.match(/[A-Z]+/)[0]),d=+c.match(/[0-9]+/)[0]-1;else var l=1,d=1;var f=Math.max(o+n.length,l),p=Math.max(u+t.length+2,d),b=u+1;h.Sheets[a.sheetid]["!ref"]="A1:"+w.utils.xlsnc(f)+p,a.headers&&(n.forEach(function(e,t){s[w.utils.xlsnc(o+t)+""+b]={v:e.columnid.trim()}}),b++);for(var g=0;g=i;i++)s.push(i);return n&&(s=n(s,r,a)),s},w.from.FILE=function(e,t,n,r,a){var s;if("string"==typeof e)s=e;else{if(!(e instanceof Event))throw new Error("Wrong usage of FILE() function");s=e.target.files[0].name}var i=s.split("."),o=i[i.length-1].toUpperCase();if(w.from[o])return w.from[o](e,t,n,r,a);throw new Error("Cannot recognize file type for loading")},w.from.JSON=function(e,t,n,r,a){var s;return w.utils.loadFile(e,!!n,function(e){s=JSON.parse(e),n&&(s=n(s,r,a))}),s},w.from.TXT=function(e,t,n,r,a){var s;return w.utils.loadFile(e,!!n,function(e){s=e.split(/\r?\n/),""===s[s.length-1]&&s.pop();for(var t=0,i=s.length;i>t;t++)s[t]==+s[t]&&(s[t]=+s[t]),s[t]=[s[t]];n&&(s=n(s,r,a))}),s},w.from.TAB=w.from.TSV=function(e,t,n,r,a){return t=t||{},t.separator=" ",w.from.CSV(e,t,n,r,a)},w.from.CSV=function(e,t,n,r,a){var s={separator:",",quote:'"',headers:!0};w.utils.extend(s,t);var i,o;return w.utils.loadFile(e,!!n,function(e){function t(){if(g>=b)return f;if(c)return c=!1,d;var t=g;if(e.charCodeAt(t)===h){for(var n=t;n++g;){var r=e.charCodeAt(g++),a=1;if(10===r)c=!0;else if(13===r)c=!0,10===e.charCodeAt(g)&&(++g,++a);else if(r!==l)continue;return e.substring(t,g-a)}return e.substring(t)}for(var u,c,l=s.separator.charCodeAt(0),h=s.quote.charCodeAt(0),d={},f={},p=[],b=e.length,g=0,m=0;(u=t())!==f;){for(var v=[];u!==d&&u!==f;)v.push(u.trim()),u=t();if(s.headers){if(0===m){if("boolean"==typeof s.headers)o=v;else if(s.headers instanceof Array){o=s.headers;var E={};o.forEach(function(e,t){E[e]=v[t],"undefined"!=typeof E[e]&&0!==E[e].length&&E[e].trim()==+E[e]&&(E[e]=+E[e])}),p.push(E)}}else{var E={};o.forEach(function(e,t){E[e]=v[t],"undefined"!=typeof E[e]&&0!==E[e].length&&E[e].trim()==+E[e]&&(E[e]=+E[e])}),p.push(E)}m++}else p.push(v)}if(i=p,s.headers&&a&&a.sources&&a.sources[r]){var y=a.sources[r].columns=[];o.forEach(function(e){y.push({columnid:e})})}n&&(i=n(i,r,a))}),i},w.from.XLS=function(e,t,n,r,a){return y(J(),e,t,n,r,a); +},w.from.XLSX=function(e,t,n,r,a){return y(G(),e,t,n,r,a)},w.from.XML=function(e,t,n,r,a){var s;return w.utils.loadFile(e,!!n,function(e){s=S(e).root,n&&(s=n(s,r,a))}),s},w.from.GEXF=function(e,t,n,r,a){var s;return w("SEARCH FROM XML("+e+")",[],function(e){s=e,console.log(s),n&&(s=n(s))}),s},z.Help=function(e){return z.extend(this,e)},z.Help.prototype.toString=function(){var e="HELP";return this.subject&&(e+=" "+this.subject),e};var de=[{command:"ALTER TABLE table RENAME TO table"},{command:"ALTER TABLE table ADD COLUMN column coldef"},{command:"ALTER TABLE table MODIFY COLUMN column coldef"},{command:"ALTER TABLE table RENAME COLUMN column TO column"},{command:"ALTER TABLE table DROP column"},{command:"ATTACH engine DATABASE database"},{command:"ASSERT value"},{command:"BEGIN [TRANSACTION]"},{command:"COMMIT [TRANSACTION]"},{command:"CREATE [engine] DATABASE [IF NOT EXISTS] database"},{command:"CREATE TABLE [IF NOT EXISTS] table (column definitions)"},{command:"DELETE FROM table [WHERE expression]"},{command:"DETACH DATABASE database"},{command:"DROP [engine] DATABASE [IF EXISTS] database"},{command:"DROP TABLE [IF EXISTS] table"},{command:"INSERT INTO table VALUES value,..."},{command:"INSERT INTO table DEFAULT VALUES"},{command:"INSERT INTO table SELECT select"},{command:"HELP [subject]"},{command:"ROLLBACK [TRANSACTION]"},{command:"SELECT [modificator] columns [INTO table] [FROM table,...] [[mode] JOIN [ON] [USING]] [WHERE ] [GROUP BY] [HAVING] [ORDER BY] "},{command:"SET option value"},{command:"SHOW [engine] DATABASES"},{command:"SHOW TABLES"},{command:"SHOW CREATE TABLE table"},{command:"UPDATE table SET column1 = expression1, ... [WHERE expression]"},{command:"USE [DATABASE] database"},{command:"expression"},{command:'See also http://github/agershun/alasq for more information'}];z.Help.prototype.execute=function(e,t,n){var r=[];return this.subject?r.push('See also http://github/agershun/alasq for more information'):r=de,n&&(r=n(r)),r},z.Print=function(e){return z.extend(this,e)},z.Print.prototype.toString=function(){var e="PRINT";return this.statement&&(e+=" "+this.statement.toString()),e},z.Print.prototype.execute=function(e,t,n){var r=this,a=1;if(w.precompile(this,e,t),this.exprs&&this.exprs.length>0){var s=this.exprs.map(function(e){var n=new Function("params,alasql,p","var y;return "+e.toJS("({})","",null)).bind(r),a=n(t,w);return le(a)});console.log.apply(console,s)}else if(this.select){var i=this.select.execute(e,t);console.log(le(i))}else console.log();return n&&(a=n(a)),a},z.Source=function(e){return z.extend(this,e)},z.Source.prototype.toString=function(){var e="SOURCE";return this.url&&(e+=" '"+this.url+" '"),e},z.Source.prototype.execute=function(e,t,n){var r;return $(this.url,!!n,function(e){return r=w(e),n&&(r=n(r)),r},function(e){throw e}),r},z.Require=function(e){return z.extend(this,e)},z.Require.prototype.toString=function(){var e="REQUIRE";return this.paths&&this.paths.length>0&&(e+=this.paths.map(function(e){return e.toString()}).join(",")),this.plugins&&this.plugins.length>0&&(e+=this.plugins.map(function(e){return e.toUpperCase()}).join(",")),e},z.Require.prototype.execute=function(e,t,n){var r=this,a=0,s="";return this.paths&&this.paths.length>0?this.paths.forEach(function(e){$(e.value,!!n,function(e){a++,s+=e,a0?this.plugins.forEach(function(e){w.plugins[e]||$(w.path+"/alasql-"+e.toLowerCase()+".js",!!n,function(i){a++,s+=i,ao;o++)i.add(n[o]);s.oncomplete=function(){r.close(),a&&a(u)}}},pe.fromTable=function(e,t,n,r,a){var s=C.global.indexedDB,i=w.databases[e].ixdbid,o=s.open(i);o.onsuccess=function(e){var s=[],i=e.target.result,o=i.transaction([t]),u=o.objectStore(t),c=u.openCursor();c.onblocked=function(e){},c.onerror=function(e){},c.onsuccess=function(e){var t=e.target.result;t?(s.push(t.value),t["continue"]()):(i.close(),n&&n(s,r,a))}}},pe.deleteFromTable=function(e,t,n,r,a){var s=C.global.indexedDB,i=w.databases[e].ixdbid,o=s.open(i);o.onsuccess=function(e){var s=e.target.result,i=s.transaction([t],"readwrite"),o=i.objectStore(t),u=o.openCursor(),c=0;u.onblocked=function(e){},u.onerror=function(e){},u.onsuccess=function(e){var t=e.target.result;t?(n&&!n(t.value,r)||(t["delete"](),c++),t["continue"]()):(s.close(),a&&a(c))}}},pe.updateTable=function(e,t,n,r,a,s){var i=C.global.indexedDB,o=w.databases[e].ixdbid,u=i.open(o);u.onsuccess=function(e){var i=e.target.result,o=i.transaction([t],"readwrite"),u=o.objectStore(t),c=u.openCursor(),l=0;c.onblocked=function(e){},c.onerror=function(e){},c.onsuccess=function(e){var t=e.target.result;if(t){if(!r||r(t.value,a)){var o=t.value;n(o,a),t.update(o),l++}t["continue"]()}else i.close(),s&&s(l)}}};var be=w.engines.LOCALSTORAGE=function(){};be.get=function(e){var t=localStorage.getItem(e);if("undefined"!=typeof t){var n=void 0;try{n=JSON.parse(t)}catch(r){throw new Error("Cannot parse JSON object from localStorage"+t)}return n}},be.set=function(e,t){"undefined"==typeof t?localStorage.removeItem(e):localStorage.setItem(e,JSON.stringify(t))},be.storeTable=function(e,t){var n=w.databases[e],r=n.tables[t],a={};a.columns=r.columns,a.data=r.data,a.identities=r.identities,be.set(n.lsdbid+"."+t,a)},be.restoreTable=function(e,t){var n=w.databases[e],r=be.get(n.lsdbid+"."+t),a=new w.Table;for(var s in r)a[s]=r[s];return n.tables[t]=a,a.indexColumns(),a},be.removeTable=function(e,t){var n=w.databases[e];localStorage.removeItem(n.lsdbid+"."+t)},be.createDatabase=function(e,t,n,r,a){var s=1,i=be.get("alasql");if(n&&i&&i.databases&&i.databases[e])s=0;else{if(i||(i={databases:{}}),i.databases&&i.databases[e])throw new Error('localStorage: Cannot create new database "'+e+'" because it already exists');i.databases[e]=!0,be.set("alasql",i),be.set(e,{databaseid:e,tables:{}})}return a&&(s=a(s)),s},be.dropDatabase=function(e,t,n){var r=1,a=be.get("alasql");if(t&&a&&a.databases&&!a.databases[e])r=0;else{if(!a){if(t)return n?n(0):0;throw new Error("There is no any AlaSQL databases in localStorage")}if(a.databases&&!a.databases[e])throw new Error('localStorage: Cannot drop database "'+e+'" because there is no such database');delete a.databases[e],be.set("alasql",a);var s=be.get(e);for(var i in s.tables)localStorage.removeItem(e+"."+i);localStorage.removeItem(e)}return n&&(r=n(r)),r},be.attachDatabase=function(e,t,n,r,a){var s=1;if(w.databases[t])throw new Error('Unable to attach database as "'+t+'" because it already exists');t||(t=e);var i=new w.Database(t);if(i.engineid="LOCALSTORAGE",i.lsdbid=e,i.tables=be.get(e).tables,!w.options.autocommit&&i.tables)for(var o in i.tables)be.restoreTable(t,o);return a&&(s=a(s)),s},be.showDatabases=function(e,t){var n=[],r=be.get("alasql");if(e)var a=new RegExp(e.value.replace(/\%/g,".*"),"g");if(r&&r.databases){for(dbid in r.databases)n.push({databaseid:dbid});e&&n&&n.length>0&&(n=n.filter(function(e){return e.databaseid.match(a)}))}return t&&(n=t(n)),n},be.createTable=function(e,t,n,r){var a=1,s=w.databases[e].lsdbid,i=be.get(s+"."+t);if(i&&!n)throw new Error('Table "'+t+'" alsready exists in localStorage database "'+s+'"');var o=be.get(s);w.databases[e].tables[t];return o.tables[t]=!0,be.set(s,o),be.storeTable(e,t),r&&(a=r(a)),a},be.dropTable=function(e,t,n,r){var a=1,s=w.databases[e].lsdbid;if(w.options.autocommit)var i=be.get(s);else var i=w.databases[e];if(!n&&!i.tables[t])throw new Error('Cannot drop table "'+t+'" in localStorage, because it does not exist');return delete i.tables[t],be.set(s,i),be.removeTable(e,t),r&&(a=r(a)),a},be.fromTable=function(e,t,n,r,a){var s=(w.databases[e].lsdbid,be.restoreTable(e,t).data);return n&&(s=n(s,r,a)),s},be.intoTable=function(e,t,n,r,a){var s=(w.databases[e].lsdbid,n.length),i=be.restoreTable(e,t);return i.data||(i.data=[]),i.data=i.data.concat(n),be.storeTable(e,t),a&&(s=a(s)),s},be.loadTableData=function(e,t){w.databases[e],w.databases[e].lsdbid;be.restoreTable(e,t)},be.saveTableData=function(e,t){var n=w.databases[e],r=w.databases[e].lsdbid;be.storeTable(r,t),n.tables[t].data=void 0},be.commit=function(e,t){var n=w.databases[e],r=w.databases[e].lsdbid,a={databaseid:r,tables:{}};if(n.tables)for(var s in n.tables)a.tables[s]=!0,be.storeTable(e,s);return be.set(r,a),t?t(1):1},be.begin=be.commit,be.rollback=function(e,t){return};var ge=w.engines.SQLITE=function(){};ge.createDatabase=function(e,t,n,r,a){throw new Error("Connot create SQLITE database in memory. Attach it.")},ge.dropDatabase=function(e){throw new Error("This is impossible to drop SQLite database. Detach it.")},ge.attachDatabase=function(e,t,n,r,a){var s=1;if(w.databases[t])throw new Error('Unable to attach database as "'+t+'" because it already exists');if(n[0]&&n[0]instanceof z.StringValue||n[0]instanceof z.ParamValue){if(n[0]instanceof z.StringValue)var i=n[0].value;else if(n[0]instanceof z.ParamValue)var i=r[n[0].param];return w.utils.loadBinaryFile(i,!0,function(n){var r=new w.Database(t||e);r.engineid="SQLITE",r.sqldbid=e;var s=r.sqldb=new SQL.Database(n);r.tables=[];var i=s.exec("SELECT * FROM sqlite_master WHERE type='table'")[0].values;i.forEach(function(e){r.tables[e[1]]={};var t=r.tables[e[1]].columns=[],n=w.parse(e[4]),a=n.statements[0].columns;a&&a.length>0&&a.forEach(function(e){t.push(e)})}),a(1)},function(e){throw new Error('Cannot open SQLite database file "'+n[0].value+'"')}),s}throw new Error("Cannot attach SQLite database without a file")},ge.fromTable=function(e,t,n,r,a){var s=w.databases[e].sqldb.exec("SELECT * FROM "+t),i=a.sources[r].columns=[];s[0].columns.length>0&&s[0].columns.forEach(function(e){i.push({columnid:e})});var o=[];s[0].values.length>0&&s[0].values.forEach(function(e){var t={};i.forEach(function(n,r){t[n.columnid]=e[r]}),o.push(t)}),n&&n(o,r,a)},ge.intoTable=function(e,t,n,r,a){for(var s=w.databases[e].sqldb,i=0,o=n.length;o>i;i++){var u="INSERT INTO "+t+" (",c=n[i],l=Object.keys(c);u+=l.join(","),u+=") VALUES (",u+=l.map(function(e){return v=c[e],"string"==typeof v&&(v="'"+v+"'"),v}).join(","),u+=")",s.exec(u)}var h=o;return a&&a(h),h};var me=w.engines.FILESTORAGE=w.engines.FILE=function(){};if(me.createDatabase=function(e,t,n,r,a){var s=1,i=t[0].value;return w.utils.fileExists(i,function(e){if(e){if(n)return s=0,a&&(s=a(s)),s;throw new Error("Cannot create new database file, because it alreagy exists")}var t={tables:{}};w.utils.saveFile(i,JSON.stringify(t),function(e){a&&(s=a(s))})}),s},me.dropDatabase=function(e,t,n){var r,a=e.value;return w.utils.fileExists(a,function(e){if(e)r=1,w.utils.deleteFile(a,function(){r=1,n&&(r=n(r))});else{if(!t)throw new Error("Cannot drop database file, because it does not exist");r=0,n&&(r=n(r))}}),r},me.attachDatabase=function(e,t,n,r,a){var s=1;if(w.databases[t])throw new Error('Unable to attach database as "'+t+'" because it already exists');var i=new w.Database(t||e);return i.engineid="FILESTORAGE",i.filename=n[0].value,$(i.filename,!!a,function(e){try{i.data=JSON.parse(e)}catch(t){throw new Error("Data in FileStorage database are corrupted")}if(i.tables=i.data.tables,!w.options.autocommit&&i.tables)for(var n in i.tables)i.tables[n].data=i.data[n];a&&(s=a(s))}),s},me.createTable=function(e,t,n,r){var a=w.databases[e],s=a.data[t],i=1;if(s&&!n)throw new Error('Table "'+t+'" alsready exists in the database "'+fsdbid+'"');var o=w.databases[e].tables[t];return a.data.tables[t]={columns:o.columns},a.data[t]=[],me.updateFile(e),r&&r(i),i},me.updateFile=function(e){var t=w.databases[e];return t.issaving?void(t.postsave=!0):(t.issaving=!0,t.postsave=!1,void w.utils.saveFile(t.filename,JSON.stringify(t.data),function(){t.issaving=!1,t.postsave&&setTimeout(function(){me.updateFile(e)},50)}))},me.dropTable=function(e,t,n,r){var a=1,s=w.databases[e];if(!n&&!s.tables[t])throw new Error('Cannot drop table "'+t+'" in fileStorage, because it does not exist');return delete s.tables[t],delete s.data.tables[t],delete s.data[t],me.updateFile(e),r&&r(a),a},me.fromTable=function(e,t,n,r,a){var s=w.databases[e],i=s.data[t];return n&&(i=n(i,r,a)),i},me.intoTable=function(e,t,n,r,a){var s=w.databases[e],i=n.length,o=s.data[t];return o||(o=[]),s.data[t]=o.concat(n),me.updateFile(e),a&&a(i),i},me.loadTableData=function(e,t){var n=w.databases[e];n.tables[t].data=n.data[t]},me.saveTableData=function(e,t){var n=w.databases[e];n.data[t]=n.tables[t].data,n.tables[t].data=null,me.updateFile(e)},me.commit=function(e,t){var n=w.databases[e];if(n.tables)for(var r in n.tables)n.data.tables[r]={columns:n.tables[r].columns},n.data[r]=n.tables[r].data;return me.updateFile(e),t?t(1):1},me.begin=me.commit,me.rollback=function(e,t){function n(){setTimeout(function(){return a.issaving?n():void w.loadFile(a.filename,!!t,function(n){a.data=n,a.tables={};for(var s in a.data.tables){var i=new w.Table({columns:a.data.tables[s].columns});P(i,a.data.tables[s]),a.tables[s]=i,w.options.autocommit||(a.tables[s].data=a.data[s]),a.tables[s].indexColumns()}delete w.databases[e],w.databases[e]=new w.Database(e),P(w.databases[e],a),w.databases[e].engineid="FILESTORAGE",w.databases[e].filename=a.filename,t&&(r=t(r))})},100)}var r=1,a=w.databases[e];a.dbversion++,n()},C.isBrowser&&!C.isWebWorker){var ve=ve||"undefined"!=typeof navigator&&navigator.msSaveOrOpenBlob&&navigator.msSaveOrOpenBlob.bind(navigator)||function(e){"use strict";if("undefined"==typeof navigator||!/MSIE [1-9]\./.test(navigator.userAgent)){var t=e.document,n=function(){return e.URL||e.webkitURL||e},r=t.createElementNS("http://www.w3.org/1999/xhtml","a"),a="download"in r,s=function(n){var r=t.createEvent("MouseEvents");r.initMouseEvent("click",!0,!1,e,0,0,0,0,0,!1,!1,!1,!1,0,null),n.dispatchEvent(r)},i=e.webkitRequestFileSystem,o=e.requestFileSystem||i||e.mozRequestFileSystem,u=function(t){(e.setImmediate||e.setTimeout)(function(){throw t},0)},c="application/octet-stream",l=0,h=500,d=function(t){var r=function(){"string"==typeof t?n().revokeObjectURL(t):t.remove()};e.chrome?r():setTimeout(r,h)},f=function(e,t,n){t=[].concat(t);for(var r=t.length;r--;){var a=e["on"+t[r]];if("function"==typeof a)try{a.call(e,n||e)}catch(s){u(s)}}},p=function(t,u){var h,p,b,g=this,m=t.type,v=!1,E=function(){f(g,"writestart progress write writeend".split(" "))},y=function(){if(!v&&h||(h=n().createObjectURL(t)),p)p.location.href=h;else{var r=e.open(h,"_blank");void 0==r&&"undefined"!=typeof safari&&(e.location.href=h)}g.readyState=g.DONE,E(),d(h)},S=function(e){return function(){return g.readyState!==g.DONE?e.apply(this,arguments):void 0}},w={create:!0,exclusive:!1};return g.readyState=g.INIT,u||(u="download"),a?(h=n().createObjectURL(t),r.href=h,r.download=u,s(r),g.readyState=g.DONE,E(),void d(h)):(/^\s*(?:text\/(?:plain|xml)|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(t.type)&&(t=new Blob(["\ufeff",t],{type:t.type})),e.chrome&&m&&m!==c&&(b=t.slice||t.webkitSlice,t=b.call(t,0,t.size,c),v=!0),i&&"download"!==u&&(u+=".download"),(m===c||i)&&(p=e),o?(l+=t.size,void o(e.TEMPORARY,l,S(function(e){e.root.getDirectory("saved",w,S(function(e){var n=function(){e.getFile(u,w,S(function(e){e.createWriter(S(function(n){n.onwriteend=function(t){p.location.href=e.toURL(),g.readyState=g.DONE,f(g,"writeend",t),d(e)},n.onerror=function(){var e=n.error;e.code!==e.ABORT_ERR&&y()},"writestart progress write abort".split(" ").forEach(function(e){n["on"+e]=g["on"+e]}),n.write(t),g.abort=function(){n.abort(),g.readyState=g.DONE},g.readyState=g.WRITING}),y)}),y)};e.getFile(u,{create:!1},S(function(e){e.remove(),n()}),S(function(e){e.code===e.NOT_FOUND_ERR?n():y()}))}),y)}),y)):void y())},b=p.prototype,g=function(e,t){return new p(e,t)};return b.abort=function(){var e=this;e.readyState=e.DONE,f(e,"abort")},b.readyState=b.INIT=0,b.WRITING=1,b.DONE=2,b.error=b.onwritestart=b.onprogress=b.onwrite=b.onabort=b.onerror=b.onwriteend=null,g}}("undefined"!=typeof self&&self||"undefined"!=typeof window&&window||this.content);"undefined"!=typeof module&&module.exports?module.exports.saveAs=ve:"undefined"!=typeof define&&null!==define&&null!=define.amd&&define([],function(){return ve}),w.utils.saveAs=ve}return new X("alasql"),w.use("alasql"),w}),"undefined"==typeof location||!location.reload||"undefined"!=typeof process&&process.browser||"function"==typeof require&&"function"==typeof require.specified||(alasql.worker=function(e,t,n){if(e===!0&&(e=void 0),"undefined"==typeof e)for(var r=document.getElementsByTagName("script"),a=0;a1){var o="REQUIRE "+t.map(function(e){return'"'+e+'"'}).join(",");alasql(o,[],n)}}else if(e===!1)return void delete alasql.webworker}); \ No newline at end of file diff --git a/src/main/webapp/static/alasql/sql.js b/src/main/webapp/static/alasql/sql.js new file mode 100644 index 0000000000000000000000000000000000000000..e23c197d11ef1d5952412d18dc99901d1a256dc5 --- /dev/null +++ b/src/main/webapp/static/alasql/sql.js @@ -0,0 +1,473 @@ +// This prevents pollution of the global namespace +var SQL = (function () { +function e(a){throw a;}var g=void 0,k=!0,l=null,m=!1;function n(){return function(){}}var q,r;r||(r=eval("(function() { try { return Module || {} } catch(e) { return {} } })()"));var aa={},ba;for(ba in r)r.hasOwnProperty(ba)&&(aa[ba]=r[ba]);var s="object"===typeof process&&"function"===typeof require,da="object"===typeof window,ea="function"===typeof importScripts,ga=!da&&!s&&!ea; +if(s){r.print||(r.print=function(a){process.stdout.write(a+"\n")});r.printErr||(r.printErr=function(a){process.stderr.write(a+"\n")});var ha=require("fs"),ia=require("path");r.read=function(a,b){var a=ia.normalize(a),c=ha.readFileSync(a);!c&&a!=ia.resolve(a)&&(a=path.join(__dirname,"..","src",a),c=ha.readFileSync(a));c&&!b&&(c=c.toString());return c};r.readBinary=function(a){return r.read(a,k)};r.load=function(a){ja(read(a))};r.thisProgram=1 0) var gc = undefined")):da||ea?(r.read=function(a){var b=new XMLHttpRequest;b.open("GET",a,m);b.send(l);return b.responseText},"undefined"!=typeof arguments&&(r.arguments=arguments),"undefined"!==typeof console?(r.print||(r.print=function(a){console.log(a)}),r.printErr||(r.printErr=function(a){console.log(a)})):r.print||(r.print= +n()),da?window.Module=r:r.load=importScripts):e("Unknown runtime environment. Where are we?");function ja(a){eval.call(l,a)}!r.load&&r.read&&(r.load=function(a){ja(r.read(a))});r.print||(r.print=n());r.printErr||(r.printErr=r.print);r.arguments||(r.arguments=[]);r.thisProgram||(r.thisProgram="./this.program");r.print=r.print;r.Ca=r.printErr;r.preRun=[];r.postRun=[];for(ba in aa)aa.hasOwnProperty(ba)&&(r[ba]=aa[ba]); +var w={Lf:function(a){la=a},Ye:function(){return la},Xb:function(){return v},Wb:function(a){v=a},qd:function(a){switch(a){case "i1":case "i8":return 1;case "i16":return 2;case "i32":return 4;case "i64":return 8;case "float":return 4;case "double":return 8;default:return"*"===a[a.length-1]?w.wa:"i"===a[0]?(a=parseInt(a.substr(1)),u(0===a%8),a/8):0}},Ve:function(a){return Math.max(w.qd(a),w.wa)},ei:16,zi:function(a,b,c){return!c&&("i64"==a||"double"==a)?8:!a?Math.min(b,8):Math.min(b||(a?w.Ve(a):0), +w.wa)},ib:function(a,b,c){return c&&c.length?(c.splice||(c=Array.prototype.slice.call(c)),c.splice(0,0,b),r["dynCall_"+a].apply(l,c)):r["dynCall_"+a].call(l,b)},Mb:[],ge:function(a){for(var b=0;b=oa&&ma("Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value "+oa+", (2) compile with ALLOW_MEMORY_GROWTH which adjusts the size at runtime but prevents some optimizations, or (3) set Module.TOTAL_MEMORY before the program runs.");return b},ec:function(a,b){return Math.ceil(a/(b?b:16))*(b?b:16)},Qi:function(a,b,c){return c?+(a>>>0)+4294967296*+(b>>>0):+(a>>>0)+4294967296* ++(b|0)},Ab:8,wa:4,ki:0};r.Runtime=w;w.addFunction=w.ge;w.removeFunction=w.Gf;var pa=m,qa,ra,la;function u(a,b){a||ma("Assertion failed: "+b)}function sa(a){var b=r["_"+a];if(!b)try{b=eval("_"+a)}catch(c){}u(b,"Cannot call unknown function "+a+" (perhaps LLVM optimizations or closure removed it?)");return b}var ta,va; +(function(){function a(a){a=a.toString().match(d).slice(1);return{arguments:a[0],body:a[1],returnValue:a[2]}}var b={stackSave:function(){w.Xb()},stackRestore:function(){w.Wb()},arrayToC:function(a){var b=w.Ma(a.length);wa(a,b);return b},stringToC:function(a){var b=0;a!==l&&(a!==g&&0!==a)&&(b=w.Ma((a.length<<2)+1),xa(a,b));return b}},c={string:b.stringToC,array:b.arrayToC};va=function(a,b,d,f){var h=sa(a),t=[],a=0;if(f)for(var B=0;B>0]=b;break;case "i8":D[a>>0]=b;break;case "i16":za[a>>1]=b;break;case "i32":E[a>>2]=b;break;case "i64":ra=[b>>>0,(qa=b,1<=+Aa(qa)?0>>0:~~+Da((qa-+(~~qa>>>0))/4294967296)>>>0:0)];E[a>>2]=ra[0];E[a+4>>2]=ra[1];break;case "float":Ea[a>>2]=b;break;case "double":Fa[a>>3]=b;break;default:ma("invalid type for setValue: "+c)}}r.setValue=ya; +function Ga(a,b){b=b||"i8";"*"===b.charAt(b.length-1)&&(b="i32");switch(b){case "i1":return D[a>>0];case "i8":return D[a>>0];case "i16":return za[a>>1];case "i32":return E[a>>2];case "i64":return E[a>>2];case "float":return Ea[a>>2];case "double":return Fa[a>>3];default:ma("invalid type for setValue: "+b)}return l}r.getValue=Ga;var F=0,G=2,Ha=4;r.ALLOC_NORMAL=F;r.ALLOC_STACK=1;r.ALLOC_STATIC=G;r.ALLOC_DYNAMIC=3;r.ALLOC_NONE=Ha; +function H(a,b,c,d){var f,h;"number"===typeof a?(f=k,h=a):(f=m,h=a.length);var i="string"===typeof b?b:l,c=c==Ha?d:[Ia,w.Ma,w.Jd,w.Kb][c===g?G:c](Math.max(h,i?1:b.length));if(f){d=c;u(0==(c&3));for(a=c+(h&-4);d>2]=0;for(a=c+h;d>0]=0;return c}if("i8"===i)return a.subarray||a.slice?K.set(a,c):K.set(new Uint8Array(a),c),c;for(var d=0,j,x;d>0];if(128<=d)c=k;else if(0==d&&!b)break;f++;if(b&&f==b)break}b||(b=f);var h="";if(!c){for(;0>0],h+=c.Vb(d);return h}r.Pointer_stringify=y;r.UTF16ToString=function(a){for(var b=0,c="";;){var d=za[a+2*b>>1];if(0==d)return c;++b;c+=String.fromCharCode(d)}}; +r.stringToUTF16=function(a,b){for(var c=0;c>1]=a.charCodeAt(c);za[b+2*a.length>>1]=0};r.UTF32ToString=function(a){for(var b=0,c="";;){var d=E[a+4*b>>2];if(0==d)return c;++b;65536<=d?(d-=65536,c+=String.fromCharCode(55296|d>>10,56320|d&1023)):c+=String.fromCharCode(d)}};r.stringToUTF32=function(a,b){for(var c=0,d=0;d=f)var h=a.charCodeAt(++d),f=65536+((f&1023)<<10)|h&1023;E[b+4*c>>2]=f;++c}E[b+4*c>>2]=0}; +function Ja(a){function b(c,d,f){var d=d||Infinity,h="",i=[],t;if("N"===a[j]){j++;"K"===a[j]&&j++;for(t=[];"E"!==a[j];)if("S"===a[j]){j++;var J=a.indexOf("_",j);t.push(p[a.substring(j,J)||0]||"?");j=J+1}else if("C"===a[j])t.push(t[t.length-1]),j+=2;else{var J=parseInt(a.substr(j)),fa=J.toString().length;if(!J||!fa){j--;break}var Tb=a.substr(j+fa,J);t.push(Tb);p.push(Tb);j+=fa+J}j++;t=t.join("::");d--;if(0===d)return c?[t]:t}else if(("K"===a[j]||A&&"L"===a[j])&&j++,J=parseInt(a.substr(j)))fa=J.toString().length, +t=a.substr(j+fa,J),j+=fa+J;A=m;"I"===a[j]?(j++,J=b(k),fa=b(k,1,k),h+=fa[0]+" "+t+"<"+J.join(", ")+">"):h=t;a:for(;jL?2*L:L+16777216; +L!==oa&&(r.Ca("increasing TOTAL_MEMORY to "+L+" to be compliant with the asm.js spec"),oa=L);u("undefined"!==typeof Int32Array&&"undefined"!==typeof Float64Array&&!!(new Int32Array(1)).subarray&&!!(new Int32Array(1)).set,"JS engine does not provide full typed array support");var M=new ArrayBuffer(oa);D=new Int8Array(M);za=new Int16Array(M);E=new Int32Array(M);K=new Uint8Array(M);Ma=new Uint16Array(M);Na=new Uint32Array(M);Ea=new Float32Array(M);Fa=new Float64Array(M);E[0]=255; +u(255===K[0]&&0===K[3],"Typed arrays 2 must be run on a little-endian system");r.HEAP=g;r.buffer=M;r.HEAP8=D;r.HEAP16=za;r.HEAP32=E;r.HEAPU8=K;r.HEAPU16=Ma;r.HEAPU32=Na;r.HEAPF32=Ea;r.HEAPF64=Fa;function Ta(a){for(;0>0]=a[c],c+=1}r.writeStringToMemory=xa; +function wa(a,b){for(var c=0;c>0]=a[c]}r.writeArrayToMemory=wa;function bb(a,b,c){for(var d=0;d>0]=a.charCodeAt(d);c||(D[b+a.length>>0]=0)}r.writeAsciiToMemory=bb;if(!Math.imul||-5!==Math.imul(4294967295,5))Math.imul=function(a,b){var c=a&65535,d=b&65535;return c*d+((a>>>16)*d+c*(b>>>16)<<16)|0};Math.Hi=Math.imul;var Aa=Math.abs,Da=Math.ceil,Ca=Math.floor,Ba=Math.min,cb=0,db=l,eb=l;function fb(){cb++;r.monitorRunDependencies&&r.monitorRunDependencies(cb)} +r.addRunDependency=fb;function gb(){cb--;r.monitorRunDependencies&&r.monitorRunDependencies(cb);if(0==cb&&(db!==l&&(clearInterval(db),db=l),eb)){var a=eb;eb=l;a()}}r.removeRunDependency=gb;r.preloadedImages={};r.preloadedAudios={};var hb=l,Oa=8,na=Oa+39504;Va.push(); +H([51,46,56,46,55,46,52,0,83,81,76,73,84,69,95,0,0,152,0,0,16,152,0,0,32,152,0,0,56,152,0,0,72,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38, +39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173, +174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,3,0,0,0,44,0,0,0,0,2,0,0,0,0,0,0,24,4,0,0,32,4,0,0,1,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,3,0,0,0,4,0,0,0,4,0,0,0,5, +0,0,0,3,0,0,0,44,0,0,0,0,2,0,0,0,0,0,0,40,4,0,0,56,4,0,0,1,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,3,0,0,0,4,0,0,0,4,0,0,0,5,0,0,0,3,0,0,0,44,0,0,0,0,2,0,0,0,0,0,0,64,4,0,0,80,4,0,0,1,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,3,0,0,0,4,0,0,0,4,0,0,0,5,0,0,0,3,0,0,0,44,0,0,0,0,2,0,0,0,0,0,0,88,4,0,0,32,4,0,0,1,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,2,0,0, +0,3,0,0,0,3,0,0,0,4,0,0,0,4,0,0,0,5,0,0,0,117,110,105,120,0,0,0,0,6,0,0,0,0,0,0,0,117,110,105,120,45,110,111,110,101,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,117,110,105,120,45,100,111,116,102,105,108,101,0,0,0,0,8,0,0,0,0,0,0,0,117,110,105,120,45,101,120,99,108,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,1,0,0,0,0,0,0,0,4,5,3,5,1,5,1,5,2,5,2,5,1,5,1,5,4,5,3,5,1,5,1,5,2,5,2,5,1,5,1,5,115,116,114,105,110,103,32,111,114,32,98,108,111,98,32,116,111,111,32,98,105,103,0,0,37,115,0,0,0,0,0,0,42,63,91,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,12,12,12,12,12,12,12,12,12,12,0,0,0,0,0,0,0,10,10,10,10,10,10,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,64,0,42,42,42,42,42,42,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,0,0,0,0,0,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64, +64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,0,0,0,0,0,0,0,0,116,114,105,103,103,101,114,0,116,101,109,112,0,0,0,0,50,48,49,52,45,49,50,45,48,57,32,48,49,58,51,52,58,51,54,32,102,54,54,102,55,97,49,55,98,55,56,98,97,54,49,55,97,99,100,101,57,48,102,99,56,49,48,49,48,55,102,51,52,102,49,97,49,102,50,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,110,107,110,111,119,110,32,100,97,116,97,98,97,115,101,58,32,37,115,0,0,0,0,0,202,154,59,0,202,154,59,208,7,0,0,232,3,0,0,244,1,0,0,168,97,0,0,127,0,0,0,10,0,0,0,80,195,0,0,231,3,0,0,232,3,0,0,0,0,0,0,57,50,50,51,51,55,50,48,51,54,56,53,52,55,55,53,56,48,0,0,0,0,0,0,111,110,111,102,102,97,108,115,101,121,101,115,116,114,117,101,102,117,108, +108,0,0,0,0,0,1,2,4,9,12,16,0,2,2,3,5,3,4,4,0,1,0,0,0,1,1,2,0,82,69,73,78,68,69,88,69,68,69,83,67,65,80,69,65,67,72,69,67,75,69,89,66,69,70,79,82,69,73,71,78,79,82,69,71,69,88,80,76,65,73,78,83,84,69,65,68,68,65,84,65,66,65,83,69,76,69,67,84,65,66,76,69,70,84,72,69,78,68,69,70,69,82,82,65,66,76,69,76,83,69,88,67,69,80,84,82,65,78,83,65,67,84,73,79,78,65,84,85,82,65,76,84,69,82,65,73,83,69,88,67,76,85,83,73,86,69,88,73,83,84,83,65,86,69,80,79,73,78,84,69,82,83,69,67,84,82,73,71,71,69,82,69,70,69,82, +69,78,67,69,83,67,79,78,83,84,82,65,73,78,84,79,70,70,83,69,84,69,77,80,79,82,65,82,89,85,78,73,81,85,69,82,89,87,73,84,72,79,85,84,69,82,69,76,69,65,83,69,65,84,84,65,67,72,65,86,73,78,71,82,79,85,80,68,65,84,69,66,69,71,73,78,78,69,82,69,67,85,82,83,73,86,69,66,69,84,87,69,69,78,79,84,78,85,76,76,73,75,69,67,65,83,67,65,68,69,76,69,84,69,67,65,83,69,67,79,76,76,65,84,69,67,82,69,65,84,69,67,85,82,82,69,78,84,95,68,65,84,69,68,69,84,65,67,72,73,77,77,69,68,73,65,84,69,74,79,73,78,83,69,82,84,77, +65,84,67,72,80,76,65,78,65,76,89,90,69,80,82,65,71,77,65,66,79,82,84,86,65,76,85,69,83,86,73,82,84,85,65,76,73,77,73,84,87,72,69,78,87,72,69,82,69,78,65,77,69,65,70,84,69,82,69,80,76,65,67,69,65,78,68,69,70,65,85,76,84,65,85,84,79,73,78,67,82,69,77,69,78,84,67,65,83,84,67,79,76,85,77,78,67,79,77,77,73,84,67,79,78,70,76,73,67,84,67,82,79,83,83,67,85,82,82,69,78,84,95,84,73,77,69,83,84,65,77,80,82,73,77,65,82,89,68,69,70,69,82,82,69,68,73,83,84,73,78,67,84,68,82,79,80,70,65,73,76,70,82,79,77,70,85, +76,76,71,76,79,66,89,73,70,73,83,78,85,76,76,79,82,68,69,82,69,83,84,82,73,67,84,82,73,71,72,84,82,79,76,76,66,65,67,75,82,79,87,85,78,73,79,78,85,83,73,78,71,86,65,67,85,85,77,86,73,69,87,73,78,73,84,73,65,76,76,89,0,0,0,0,0,0,0,76,105,117,74,0,45,0,0,82,0,77,0,0,42,12,78,15,0,116,85,54,112,0,19,0,0,121,0,119,115,0,22,93,0,9,0,0,70,71,0,69,6,0,48,90,102,0,118,101,0,0,44,0,103,24,0,17,0,122,53,23,0,5,110,25,96,0,0,124,106,60,123,57,28,55,0,91,0,100,26,0,99,0,0,0,95,92,97,88,109,14,39,108,0,81,0,18, +89,111,32,0,120,80,113,62,46,84,0,0,94,40,59,114,0,36,0,0,29,0,86,63,64,0,20,61,0,56,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,13,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,0,21,0,0,0,0,0,50,0,43,3,47,0,0,0,0,30,0,58,0,38,0,0,0,1,66,0,0,67,0,41,0,0,0,0,0,0,49,65,0,0,0,0,31,52,16,34,10,0,0,0,0,0,0,0,11,72,79,0,8,0,104,98,0,107,0,87,0,75,51,0,27,37,73,83,0,35,68,0,0,0,0,0,0,7,7,5,4,6,4,5,3,6,7,3,6,6,7,7,3,8,2,6,5,4,4,3,10,4,6,11,6,2,7,5,5,9,6,9,9,7,10,10,4,6,2,3,9,4,2,6,5,7,4,5,7,6,6,5,6,5,5,9, +7,7,3,2,4,4,7,3,6,4,7,6,12,6,9,4,6,5,4,7,6,5,6,7,5,4,5,6,5,7,3,7,13,2,2,4,6,6,8,5,17,12,7,8,8,2,4,4,4,4,4,2,2,6,5,8,5,8,3,5,5,6,4,9,3,0,0,0,0,0,0,2,0,2,0,8,0,9,0,14,0,16,0,20,0,23,0,25,0,25,0,29,0,33,0,36,0,41,0,46,0,48,0,53,0,54,0,59,0,62,0,65,0,67,0,69,0,78,0,81,0,86,0,91,0,95,0,96,0,101,0,105,0,109,0,117,0,122,0,128,0,136,0,142,0,152,0,159,0,162,0,162,0,165,0,167,0,167,0,171,0,176,0,179,0,184,0,184,0,188,0,192,0,199,0,204,0,209,0,212,0,218,0,221,0,225,0,234,0,240,0,240,0,240,0,243,0,246,0,250, +0,251,0,255,0,5,1,9,1,16,1,22,1,34,1,40,1,49,1,51,1,57,1,62,1,64,1,71,1,76,1,81,1,87,1,93,1,98,1,102,1,105,1,111,1,115,1,122,1,124,1,131,1,133,1,135,1,144,1,148,1,154,1,160,1,168,1,173,1,173,1,189,1,196,1,203,1,204,1,211,1,215,1,219,1,223,1,227,1,230,1,232,1,234,1,240,1,244,1,252,1,1,2,9,2,12,2,17,2,22,2,28,2,32,2,37,2,67,28,140,42,84,44,104,53,35,113,46,47,50,2,49,142,41,24,119,16,98,138,11,112,139,117,6,30,107,98,141,57,9,20,13,118,62,105,99,131,55,54,111,21,21,71,103,3,25,66,98,14,34,128,127,110, +5,98,58,74,77,19,52,101,50,37,33,109,136,95,17,69,43,8,124,108,51,4,32,56,29,120,65,129,137,130,68,31,59,72,100,106,15,75,38,39,10,40,98,69,69,102,7,121,73,114,45,123,98,50,36,18,76,126,60,98,12,61,115,125,63,64,48,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,105,115,117,115,101,32,97,116,32,108,105,110,101,32,37,100,32,111,102,32,91,37,46,49,48,115,93,0,0,0,0,117,110, +97,98,108,101,32,116,111,32,100,101,108,101,116,101,47,109,111,100,105,102,121,32,99,111,108,108,97,116,105,111,110,32,115,101,113,117,101,110,99,101,32,100,117,101,32,116,111,32,97,99,116,105,118,101,32,115,116,97,116,101,109,101,110,116,115,0,0,0,0,0,66,73,78,65,82,89,0,0,82,84,82,73,77,0,0,0,78,79,67,65,83,69,0,0,109,97,105,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,117,116,111,109,97,116,105,99, +32,101,120,116,101,110,115,105,111,110,32,108,111,97,100,105,110,103,32,102,97,105,108,101,100,58,32,37,115,0,0,77,65,84,67,72,0,0,0,58,109,101,109,111,114,121,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,5,0,0,0,9,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,101,99,111,118,101,114,101,100,32,37,100,32,112,97,103,101,115,32,102,114,111, +109,32,37,115,0,0,0,0,0,0,217,213,5,249,32,161,99,215,100,97,116,97,98,97,115,101,32,99,111,114,114,117,112,116,105,111,110,32,97,116,32,108,105,110,101,32,37,100,32,111,102,32,91,37,46,49,48,115,93,0,0,0,0,0,0,0,99,97,110,110,111,116,32,108,105,109,105,116,32,87,65,76,32,115,105,122,101,58,32,37,115,0,0,0,0,0,0,0,99,97,110,110,111,116,32,111,112,101,110,32,102,105,108,101,32,97,116,32,108,105,110,101,32,37,100,32,111,102,32,91,37,46,49,48,115,93,0,0,114,101,99,111,118,101,114,101,100,32,37,100,32, +102,114,97,109,101,115,32,102,114,111,109,32,87,65,76,32,102,105,108,101,32,37,115,0,0,0,0,45,106,111,117,114,110,97,108,0,0,0,0,0,0,0,0,45,119,97,108,0,0,0,0,110,111,108,111,99,107,0,0,105,109,109,117,116,97,98,108,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,105,108,101,58,0,0,0,108,111,99,97,108,104,111,115,116,0,0,0,0,0,0,0,105,110,118,97,108,105,100,32,117,114,105,32,97,117,116,104,111,114,105,116,121,58,32,37,46,42,115,0,0,0,0,0,118,102,115,0,0,0,0,0,99,97,99,104,101,0,0,0,96,18,0,0,0,0,2,0,104,18, +0,0,0,0,4,0,0,0,0,0,0,0,0,0,115,104,97,114,101,100,0,0,112,114,105,118,97,116,101,0,109,111,100,101,0,0,0,0,160,18,0,0,1,0,0,0,168,18,0,0,2,0,0,0,176,18,0,0,6,0,0,0,184,18,0,0,128,0,0,0,0,0,0,0,0,0,0,0,114,111,0,0,0,0,0,0,114,119,0,0,0,0,0,0,114,119,99,0,0,0,0,0,109,101,109,111,114,121,0,0,97,99,99,101,115,115,0,0,110,111,32,115,117,99,104,32,37,115,32,109,111,100,101,58,32,37,115,0,0,0,0,0,37,115,32,109,111,100,101,32,110,111,116,32,97,108,108,111,119,101,100,58,32,37,115,0,110,111,32,115,117,99, +104,32,118,102,115,58,32,37,115,0,105,110,118,97,108,105,100,0,65,80,73,32,99,97,108,108,32,119,105,116,104,32,37,115,32,100,97,116,97,98,97,115,101,32,99,111,110,110,101,99,116,105,111,110,32,112,111,105,110,116,101,114,0,0,0,0,117,110,97,98,108,101,32,116,111,32,117,115,101,32,102,117,110,99,116,105,111,110,32,37,115,32,105,110,32,116,104,101,32,114,101,113,117,101,115,116,101,100,32,99,111,110,116,101,120,116,0,0,0,0,0,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27, +28,29,30,31,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,0,1,2,3,4,5,6,7,0,1,2,3,0,1,0,0,117,110,97,98,108,101,32,116,111,32,100,101,108,101,116,101,47,109,111,100,105,102,121,32,117,115,101,114,45,102,117,110,99,116,105,111,110,32,100,117,101,32,116,111,32,97,99,116,105,118,101,32,115,116,97,116,101,109,101,110,116,115,0,0,104,20,0,0,120,20,0,0,0,0,0,0,160,20,0,0,192,20,0,0,224,20,0,0,248,20,0,0,24,21,0,0,40,21,0,0,80,21,0,0,96,21,0,0,112,21,0,0,152,21,0,0,176,21,0,0,208,21,0,0,240,21,0,0,8,22,0,0,32,22, +0,0,152,4,0,0,64,22,0,0,88,22,0,0,112,22,0,0,152,22,0,0,184,22,0,0,208,22,0,0,240,22,0,0,24,23,0,0,0,0,0,0,110,111,116,32,97,110,32,101,114,114,111,114,0,0,0,0,83,81,76,32,108,111,103,105,99,32,101,114,114,111,114,32,111,114,32,109,105,115,115,105,110,103,32,100,97,116,97,98,97,115,101,0,0,0,0,0,97,99,99,101,115,115,32,112,101,114,109,105,115,115,105,111,110,32,100,101,110,105,101,100,0,0,0,0,0,0,0,0,99,97,108,108,98,97,99,107,32,114,101,113,117,101,115,116,101,100,32,113,117,101,114,121,32,97,98, +111,114,116,0,0,100,97,116,97,98,97,115,101,32,105,115,32,108,111,99,107,101,100,0,0,0,0,0,0,100,97,116,97,98,97,115,101,32,116,97,98,108,101,32,105,115,32,108,111,99,107,101,100,0,0,0,0,0,0,0,0,111,117,116,32,111,102,32,109,101,109,111,114,121,0,0,0,97,116,116,101,109,112,116,32,116,111,32,119,114,105,116,101,32,97,32,114,101,97,100,111,110,108,121,32,100,97,116,97,98,97,115,101,0,0,0,0,105,110,116,101,114,114,117,112,116,101,100,0,0,0,0,0,100,105,115,107,32,73,47,79,32,101,114,114,111,114,0,0,100, +97,116,97,98,97,115,101,32,100,105,115,107,32,105,109,97,103,101,32,105,115,32,109,97,108,102,111,114,109,101,100,0,0,0,0,0,0,0,0,117,110,107,110,111,119,110,32,111,112,101,114,97,116,105,111,110,0,0,0,0,0,0,0,100,97,116,97,98,97,115,101,32,111,114,32,100,105,115,107,32,105,115,32,102,117,108,108,0,0,0,0,0,0,0,0,117,110,97,98,108,101,32,116,111,32,111,112,101,110,32,100,97,116,97,98,97,115,101,32,102,105,108,101,0,0,0,0,108,111,99,107,105,110,103,32,112,114,111,116,111,99,111,108,0,0,0,0,0,0,0,0, +116,97,98,108,101,32,99,111,110,116,97,105,110,115,32,110,111,32,100,97,116,97,0,0,100,97,116,97,98,97,115,101,32,115,99,104,101,109,97,32,104,97,115,32,99,104,97,110,103,101,100,0,0,0,0,0,99,111,110,115,116,114,97,105,110,116,32,102,97,105,108,101,100,0,0,0,0,0,0,0,100,97,116,97,116,121,112,101,32,109,105,115,109,97,116,99,104,0,0,0,0,0,0,0,108,105,98,114,97,114,121,32,114,111,117,116,105,110,101,32,99,97,108,108,101,100,32,111,117,116,32,111,102,32,115,101,113,117,101,110,99,101,0,0,108,97,114, +103,101,32,102,105,108,101,32,115,117,112,112,111,114,116,32,105,115,32,100,105,115,97,98,108,101,100,0,0,97,117,116,104,111,114,105,122,97,116,105,111,110,32,100,101,110,105,101,100,0,0,0,0,97,117,120,105,108,105,97,114,121,32,100,97,116,97,98,97,115,101,32,102,111,114,109,97,116,32,101,114,114,111,114,0,98,105,110,100,32,111,114,32,99,111,108,117,109,110,32,105,110,100,101,120,32,111,117,116,32,111,102,32,114,97,110,103,101,0,0,0,0,0,0,0,102,105,108,101,32,105,115,32,101,110,99,114,121,112,116, +101,100,32,111,114,32,105,115,32,110,111,116,32,97,32,100,97,116,97,98,97,115,101,0,0,117,110,107,110,111,119,110,32,101,114,114,111,114,0,0,0,97,98,111,114,116,32,100,117,101,32,116,111,32,82,79,76,76,66,65,67,75,0,0,0,117,110,97,98,108,101,32,116,111,32,99,108,111,115,101,32,100,117,101,32,116,111,32,117,110,102,105,110,97,108,105,122,101,100,32,115,116,97,116,101,109,101,110,116,115,32,111,114,32,117,110,102,105,110,105,115,104,101,100,32,98,97,99,107,117,112,115,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0, +0,0,1,0,0,0,6,0,0,0,1,0,0,0,3,0,0,0,7,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,2,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,4,0,0,0,11,0,0,0,5,0,0,0,6,0,0,0,7,0,0,0,5,0,0,0,0,0,0,0,102,97,105,108,101,100,32,109,101,109,111,114,121,32,114,101,115,105,122,101,32,37,117,32,116,111,32,37,117,32,98,121,116,101,115,0,0,0,0,0,102,97,105,108,101,100,32,116,111,32,97,108,108,111,99,97,116,101,32,37,117,32,98,121,116,101,115,32,111,102,32,109,101,109,111,114,121,0,0,0,1,0,1,8,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,96,32,0,0,0,0, +0,0,0,0,0,0,2,0,1,8,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,96,32,0,0,0,0,0,0,0,0,0,0,1,0,1,8,2,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,104,32,0,0,0,0,0,0,0,0,0,0,2,0,1,8,2,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,104,32,0,0,0,0,0,0,0,0,0,0,1,0,1,8,3,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,112,32,0,0,0,0,0,0,0,0,0,0,2,0,1,8,3,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,112,32,0,0,0,0,0,0,0,0,0,0,255,255,33,8,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,120,32,0,0,0,0,0,0,0,0,0,0,0,0,33,8,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,120,32,0,0,0,0,0,0,0,0,0,0,1,0,33,16,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,6,0,0,0,120,32,0,0,0,0,0,0,0,0,0,0,255,255,33,8,1,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,128,32,0,0,0,0,0,0,0,0,0,0,0,0,33,8,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,32,0,0,0,0,0,0,0,0,0,0,1,0,33,16,1,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,6,0,0,0,128,32,0,0,0,0,0,0,0,0,0,0,1,0,129,8,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,136,32,0,0,0,0,0,0,0,0,0,0,1,0,65,8,0,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,144,32,0,0,0,0,0,0,0,0,0, +0,2,0,1,8,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,152,32,0,0,0,0,0,0,0,0,0,0,2,0,1,8,0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,160,32,0,0,0,0,0,0,0,0,0,0,3,0,1,8,0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,160,32,0,0,0,0,0,0,0,0,0,0,255,255,1,8,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,168,32,0,0,0,0,0,0,0,0,0,0,1,0,1,8,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,176,32,0,0,0,0,0,0,0,0,0,0,255,255,1,8,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,184,32,0,0,0,0,0,0,0,0,0,0,1,0,1,8,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0, +0,0,0,0,0,192,32,0,0,0,0,0,0,0,0,0,0,1,0,1,8,0,0,0,0,0,0,0,0,13,0,0,0,0,0,0,0,0,0,0,0,200,32,0,0,0,0,0,0,0,0,0,0,2,0,1,8,0,0,0,0,0,0,0,0,13,0,0,0,0,0,0,0,0,0,0,0,200,32,0,0,0,0,0,0,0,0,0,0,1,0,1,8,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,208,32,0,0,0,0,0,0,0,0,0,0,1,0,1,8,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,216,32,0,0,0,0,0,0,0,0,0,0,1,0,1,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,32,0,0,0,0,0,0,0,0,0,0,0,0,1,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,32,0,0,0,0,0,0,0,0,0,0,255,255,1, +10,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,224,32,0,0,0,0,0,0,0,0,0,0,1,0,1,8,0,0,0,0,0,0,0,0,17,0,0,0,0,0,0,0,0,0,0,0,240,32,0,0,0,0,0,0,0,0,0,0,2,0,1,10,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,248,32,0,0,0,0,0,0,0,0,0,0,1,0,1,12,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,33,0,0,0,0,0,0,0,0,0,0,2,0,1,12,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,16,33,0,0,0,0,0,0,0,0,0,0,1,0,1,12,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,32,33,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,40, +33,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,19,0,0,0,0,0,0,0,0,0,0,0,48,33,0,0,0,0,0,0,0,0,0,0,2,0,33,8,0,0,0,0,0,0,0,0,20,0,0,0,0,0,0,0,0,0,0,0,64,33,0,0,0,0,0,0,0,0,0,0,0,0,1,8,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,72,33,0,0,0,0,0,0,0,0,0,0,0,0,1,8,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,88,33,0,0,0,0,0,0,0,0,0,0,2,0,1,8,0,0,0,0,0,0,0,0,22,0,0,0,0,0,0,0,0,0,0,0,112,33,0,0,0,0,0,0,0,0,0,0,1,0,1,8,0,0,0,0,0,0,0,0,23,0,0,0,0,0,0,0,0,0,0,0,128,33,0,0,0,0,0,0,0,0,0,0,1,0,1,8,0,0,0,0,0,0,0,0,24, +0,0,0,0,0,0,0,0,0,0,0,160,33,0,0,0,0,0,0,0,0,0,0,1,0,1,8,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,192,33,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,26,0,0,0,0,0,0,0,0,0,0,0,200,33,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,27,0,0,0,0,0,0,0,0,0,0,0,224,33,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,28,0,0,0,0,0,0,0,0,0,0,0,232,33,0,0,0,0,0,0,0,0,0,0,3,0,1,8,0,0,0,0,0,0,0,0,29,0,0,0,0,0,0,0,0,0,0,0,248,33,0,0,0,0,0,0,0,0,0,0,1,0,1,8,0,0,0,0,0,0,0,0,30,0,0,0,0,0,0,0,0,0,0,0,0,34,0,0,0,0,0,0,0,0,0, +0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,7,0,0,0,16,34,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,8,0,0,0,24,34,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,9,0,0,0,32,34,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,32,0,0,0,10,0,0,0,40,34,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,32,0,0,0,10,0,0,0,40,34,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,33,0,0,0,11,0,0,0,48,34,0,0,0,0,0,0,0,0,0,0,2,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,33,0,0,0,11,0, +0,0,48,34,0,0,0,0,0,0,0,0,0,0,2,0,13,8,184,4,0,0,0,0,0,0,34,0,0,0,0,0,0,0,0,0,0,0,64,34,0,0,0,0,0,0,0,0,0,0,2,0,5,8,72,34,0,0,0,0,0,0,34,0,0,0,0,0,0,0,0,0,0,0,80,34,0,0,0,0,0,0,0,0,0,0,3,0,5,8,72,34,0,0,0,0,0,0,34,0,0,0,0,0,0,0,0,0,0,0,80,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,116,114,105,109,0,0,0,114,116,114,105,109,0,0,0,116,114,105,109,0,0,0,0,109,105,110,0,0,0,0,0,109,97,120,0,0,0,0,0,116,121,112,101,111,102,0,0,108,101,110,103,116,104,0,0,105,110,115,116,114,0,0,0,115,117,98,115,116,114,0,0,112, +114,105,110,116,102,0,0,117,110,105,99,111,100,101,0,99,104,97,114,0,0,0,0,97,98,115,0,0,0,0,0,114,111,117,110,100,0,0,0,117,112,112,101,114,0,0,0,108,111,119,101,114,0,0,0,99,111,97,108,101,115,99,101,0,0,0,0,0,0,0,0,104,101,120,0,0,0,0,0,105,102,110,117,108,108,0,0,117,110,108,105,107,101,108,121,0,0,0,0,0,0,0,0,108,105,107,101,108,105,104,111,111,100,0,0,0,0,0,0,108,105,107,101,108,121,0,0,114,97,110,100,111,109,0,0,114,97,110,100,111,109,98,108,111,98,0,0,0,0,0,0,110,117,108,108,105,102,0,0,115, +113,108,105,116,101,95,118,101,114,115,105,111,110,0,0,115,113,108,105,116,101,95,115,111,117,114,99,101,95,105,100,0,0,0,0,0,0,0,0,115,113,108,105,116,101,95,108,111,103,0,0,0,0,0,0,115,113,108,105,116,101,95,99,111,109,112,105,108,101,111,112,116,105,111,110,95,117,115,101,100,0,0,0,0,0,0,0,115,113,108,105,116,101,95,99,111,109,112,105,108,101,111,112,116,105,111,110,95,103,101,116,0,0,0,0,0,0,0,0,113,117,111,116,101,0,0,0,108,97,115,116,95,105,110,115,101,114,116,95,114,111,119,105,100,0,0,0,0, +0,0,0,99,104,97,110,103,101,115,0,116,111,116,97,108,95,99,104,97,110,103,101,115,0,0,0,114,101,112,108,97,99,101,0,122,101,114,111,98,108,111,98,0,0,0,0,0,0,0,0,115,117,109,0,0,0,0,0,116,111,116,97,108,0,0,0,97,118,103,0,0,0,0,0,99,111,117,110,116,0,0,0,103,114,111,117,112,95,99,111,110,99,97,116,0,0,0,0,103,108,111,98,0,0,0,0,37,95,0,1,0,0,0,0,108,105,107,101,0,0,0,0,2,0,1,8,0,0,0,0,0,0,0,0,35,0,0,0,0,0,0,0,0,0,0,0,200,34,0,0,0,0,0,0,0,0,0,0,2,0,1,8,0,0,0,0,0,0,0,0,36,0,0,0,0,0,0,0,0,0,0,0,224, +34,0,0,0,0,0,0,0,0,0,0,3,0,1,8,0,0,0,0,0,0,0,0,37,0,0,0,0,0,0,0,0,0,0,0,248,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,113,108,105,116,101,95,114,101,110,97,109,101,95,116,97,98,108,101,0,0,0,0,0,115,113,108,105,116,101,95,114,101,110,97,109,101,95,116,114,105,103,103,101,114,0,0,0,115,113,108,105,116,101,95,114,101,110,97,109,101,95,112,97,114,101,110,116,0,0,0,0,37,115,37,46,42,115,34,37,119,34,0,0,0,0,0,0,37,115,37,115,0,0,0,0,37,46,42,115,34,37,119,34,37,115,0,0,0,0,0,0,255,255,1,8,0,0,0,0,0,0,0,0,38, +0,0,0,0,0,0,0,0,0,0,0,88,36,0,0,0,0,0,0,0,0,0,0,255,255,1,8,0,0,0,0,0,0,0,0,39,0,0,0,0,0,0,0,0,0,0,0,104,36,0,0,0,0,0,0,0,0,0,0,255,255,1,8,0,0,0,0,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,112,36,0,0,0,0,0,0,0,0,0,0,255,255,1,8,0,0,0,0,0,0,0,0,41,0,0,0,0,0,0,0,0,0,0,0,120,36,0,0,0,0,0,0,0,0,0,0,255,255,1,8,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,136,36,0,0,0,0,0,0,0,0,0,0,0,0,1,8,0,0,0,0,0,0,0,0,43,0,0,0,0,0,0,0,0,0,0,0,152,36,0,0,0,0,0,0,0,0,0,0,0,0,1,8,0,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,0,0,0,0,168,36,0, +0,0,0,0,0,0,0,0,0,0,0,1,8,0,0,0,0,0,0,0,0,45,0,0,0,0,0,0,0,0,0,0,0,192,36,0,0,0,0,0,0,0,0,0,0,106,117,108,105,97,110,100,97,121,0,0,0,0,0,0,0,100,97,116,101,0,0,0,0,116,105,109,101,0,0,0,0,100,97,116,101,116,105,109,101,0,0,0,0,0,0,0,0,115,116,114,102,116,105,109,101,0,0,0,0,0,0,0,0,99,117,114,114,101,110,116,95,116,105,109,101,0,0,0,0,99,117,114,114,101,110,116,95,116,105,109,101,115,116,97,109,112,0,0,0,0,0,0,0,99,117,114,114,101,110,116,95,100,97,116,101,0,0,0,0,37,48,50,100,0,0,0,0,37,48,54,46, +51,102,0,0,37,48,51,100,0,0,0,0,37,46,49,54,103,0,0,0,37,108,108,100,0,0,0,0,37,48,52,100,0,0,0,0,108,111,99,97,108,116,105,109,101,0,0,0,0,0,0,0,117,110,105,120,101,112,111,99,104,0,0,0,0,0,0,0,117,116,99,0,0,0,0,0,119,101,101,107,100,97,121,32,0,0,0,0,0,0,0,0,115,116,97,114,116,32,111,102,32,0,0,0,0,0,0,0,109,111,110,116,104,0,0,0,121,101,97,114,0,0,0,0,100,97,121,0,0,0,0,0,104,111,117,114,0,0,0,0,109,105,110,117,116,101,0,0,115,101,99,111,110,100,0,0,108,111,99,97,108,32,116,105,109,101,32,117, +110,97,118,97,105,108,97,98,108,101,0,0,110,111,119,0,0,0,0,0,37,48,52,100,45,37,48,50,100,45,37,48,50,100,32,37,48,50,100,58,37,48,50,100,58,37,48,50,100,0,0,0,37,48,50,100,58,37,48,50,100,58,37,48,50,100,0,0,37,48,52,100,45,37,48,50,100,45,37,48,50,100,0,0,76,73,75,69,32,111,114,32,71,76,79,66,32,112,97,116,116,101,114,110,32,116,111,111,32,99,111,109,112,108,101,120,0,0,0,0,0,0,0,0,69,83,67,65,80,69,32,101,120,112,114,101,115,115,105,111,110,32,109,117,115,116,32,98,101,32,97,32,115,105,110,103, +108,101,32,99,104,97,114,97,99,116,101,114,0,0,0,0,44,0,0,0,0,0,0,0,105,110,116,101,103,101,114,32,111,118,101,114,102,108,111,119,0,0,0,0,0,0,0,0,37,33,46,49,53,103,0,0,37,33,46,50,48,101,0,0,48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70,78,85,76,76,0,0,0,0,37,46,42,102,0,0,0,0,105,110,116,101,103,101,114,0,116,101,120,116,0,0,0,0,114,101,97,108,0,0,0,0,98,108,111,98,0,0,0,0,110,117,108,108,0,0,0,0,1,0,0,0,0,0,0,0,184,38,0,0,0,0,0,0,32,0,0,0,0,0,0,0,105,110,116,101,114,114,117,112,116,0,0,0,0, +0,0,0,117,110,114,101,99,111,103,110,105,122,101,100,32,116,111,107,101,110,58,32,34,37,84,34,0,0,0,0,0,0,0,0,110,101,97,114,32,34,37,84,34,58,32,115,121,110,116,97,120,32,101,114,114,111,114,0,114,111,119,105,100,0,0,0,117,110,107,110,111,119,110,32,116,97,98,108,101,32,111,112,116,105,111,110,58,32,37,46,42,115,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,111,111,32,109,97,110,121,32,116,101,114,109,115,32,105,110,32,99,111,109,112,111,117,110,100,32,83,69,76,69,67,84,0,0,0,0, +0,0,0,115,101,116,32,108,105,115,116,0,0,0,0,0,0,0,0,116,111,111,32,109,97,110,121,32,97,114,103,117,109,101,110,116,115,32,111,110,32,102,117,110,99,116,105,111,110,32,37,84,0,0,0,0,0,0,0,56,91,0,0,1,0,0,0,48,73,0,0,1,0,0,0,105,110,100,101,120,0,0,0,113,117,97,108,105,102,105,101,100,32,116,97,98,108,101,32,110,97,109,101,115,32,97,114,101,32,110,111,116,32,97,108,108,111,119,101,100,32,111,110,32,73,78,83,69,82,84,44,32,85,80,68,65,84,69,44,32,97,110,100,32,68,69,76,69,84,69,32,115,116,97,116], +"i8",Ha,w.Ab); +H([101,109,101,110,116,115,32,119,105,116,104,105,110,32,116,114,105,103,103,101,114,115,0,0,116,104,101,32,73,78,68,69,88,69,68,32,66,89,32,99,108,97,117,115,101,32,105,115,32,110,111,116,32,97,108,108,111,119,101,100,32,111,110,32,85,80,68,65,84,69,32,111,114,32,68,69,76,69,84,69,32,115,116,97,116,101,109,101,110,116,115,32,119,105,116,104,105,110,32,116,114,105,103,103,101,114,115,0,0,0,0,0,116,104,101,32,78,79,84,32,73,78,68,69,88,69,68,32,99,108,97,117,115,101,32,105,115,32,110,111,116,32,97, +108,108,111,119,101,100,32,111,110,32,85,80,68,65,84,69,32,111,114,32,68,69,76,69,84,69,32,115,116,97,116,101,109,101,110,116,115,32,119,105,116,104,105,110,32,116,114,105,103,103,101,114,115,0,0,0,0,144,1,145,2,145,1,146,1,146,3,147,0,147,1,147,3,148,1,149,3,151,0,151,1,151,2,150,0,150,1,150,1,150,1,149,2,149,2,149,2,153,1,153,0,149,2,149,3,149,5,149,2,154,6,156,1,158,0,158,3,157,1,157,0,155,5,155,2,162,0,162,2,160,3,160,1,164,3,165,1,152,1,152,1,152,1,166,0,166,1,168,1,168,4,168,6,169,1,169,2,170, +1,170,1,167,2,167,0,173,2,173,2,173,4,173,3,173,3,173,2,173,2,173,3,173,5,173,2,173,4,173,4,173,1,173,2,178,0,178,1,180,0,180,2,182,2,182,3,182,3,182,3,183,2,183,2,183,1,183,1,183,2,181,3,181,2,184,0,184,2,184,2,161,0,161,2,185,3,185,1,186,1,186,0,187,2,187,7,187,5,187,5,187,10,189,0,189,1,176,0,176,3,190,0,190,2,191,1,191,1,191,1,149,4,193,2,193,0,149,8,149,4,149,1,163,2,195,1,195,3,198,1,198,2,198,1,196,9,196,1,207,4,207,5,199,1,199,1,199,0,210,2,210,0,200,3,200,2,200,4,211,2,211,1,211,0,201,0, +201,2,213,2,213,0,212,7,212,7,212,7,159,0,159,2,194,2,214,1,214,2,214,3,214,4,216,2,216,0,215,0,215,3,215,2,217,4,217,0,205,0,205,3,220,4,220,2,177,1,177,1,177,0,203,0,203,3,204,0,204,2,206,0,206,2,206,4,206,4,149,6,202,0,202,2,149,8,221,5,221,3,149,6,149,7,222,2,222,1,223,0,223,3,219,3,219,1,175,1,175,3,174,1,175,1,175,1,175,3,175,5,174,1,174,1,175,1,175,3,175,6,175,5,175,4,174,1,175,3,175,3,175,3,175,3,175,3,175,3,175,3,175,3,224,1,224,2,175,3,175,5,175,2,175,3,175,3,175,4,175,2,175,2,175,2,175, +2,225,1,225,2,175,5,226,1,226,2,175,5,175,3,175,5,175,4,175,4,175,5,228,5,228,4,229,2,229,0,227,1,227,0,209,1,209,0,208,3,208,1,149,12,230,1,230,0,179,0,179,3,188,5,188,3,231,0,231,2,149,4,149,1,149,2,149,3,149,5,149,6,149,5,149,6,232,1,232,1,232,1,232,1,232,1,171,2,171,1,172,2,149,5,233,11,235,1,235,1,235,2,235,0,236,1,236,1,236,3,237,0,237,3,238,0,238,2,234,3,234,2,240,1,240,3,241,0,241,3,241,2,239,7,239,5,239,5,239,1,175,4,175,6,192,1,192,1,192,1,149,4,149,6,149,3,243,0,243,2,242,1,242,0,149,1, +149,3,149,1,149,3,149,6,149,6,244,1,245,0,245,1,149,1,149,4,246,8,247,1,247,3,248,0,248,2,249,1,249,3,250,1,251,0,251,4,251,2,197,0,197,2,197,3,252,6,252,8,0,0,238,0,186,3,213,0,33,1,54,1,234,0,144,0,61,1,147,255,126,1,121,1,47,1,205,1,133,1,122,1,112,1,46,1,38,1,253,0,139,1,37,1,68,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,254,3,244,3,237,3,230,3,195,3,193,3,191,3, +189,3,182,3,179,3,162,3,144,3,105,3,93,3,55,3,42,3,3,3,247,2,208,2,196,2,158,2,145,2,107,2,102,2,100,2,98,2,96,2,94,2,92,2,86,2,83,2,81,2,68,2,30,2,28,2,25,2,23,2,21,2,19,2,17,2,15,2,247,1,130,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,95,0,191,1,82,0,78,1,248,1,211,1,147,1,221,1,208,1,147,1,147,1,147,1,147,1,92,3,235,2,232,2,17,3,126,2,126,2,158,3,123,3,132,3,131,3,119,3,76,3,72,3,67,3,80,3,62,3,75,3,61,3,24,3,71,3,58,3,225,2,70,3,27,3,21,3,47,0,222,2,18,2,184,2,9,3,199,2,165,2,221, +2,218,2,217,2,216,2,215,2,115,2,192,1,64,0,187,0,25,5,22,5,228,4,10,5,249,4,43,5,42,5,41,5,39,5,38,5,36,5,35,5,34,5,33,5,32,5,31,5,30,5,28,5,27,5,24,5,23,5,21,5,18,5,14,5,12,5,9,5,242,4,240,4,235,4,8,5,7,5,214,4,5,5,1,5,0,5,255,4,254,4,227,4,253,4,252,4,251,4,249,4,244,4,243,4,241,4,239,4,237,4,233,4,224,4,213,4,223,4,222,4,219,4,214,4,216,4,211,4,225,4,210,4,209,4,206,4,196,4,190,4,186,4,201,4,195,4,208,4,207,4,173,4,171,4,203,4,200,4,177,4,184,4,218,4,113,4,212,4,205,4,169,4,157,4,197,4,153,4,172, +4,155,4,167,4,166,4,162,4,158,4,194,4,192,4,152,4,138,4,159,4,156,4,136,4,175,4,179,4,109,4,71,4,174,4,170,4,164,4,168,4,147,4,145,4,144,4,149,4,150,4,142,4,135,4,117,4,146,4,134,4,143,4,133,4,108,4,121,4,119,4,100,4,104,4,79,4,78,4,76,4,72,4,126,4,125,4,61,4,101,4,56,4,40,4,96,4,73,4,58,4,54,4,49,4,43,4,85,4,83,4,95,4,93,4,92,4,89,4,87,4,84,4,239,3,232,3,234,3,52,4,51,4,57,4,0,0,0,0,50,1,212,0,176,1,187,3,127,2,191,0,187,3,39,1,47,2,88,0,88,0,88,0,88,0,81,0,86,0,86,0,86,0,86,0,85,0,85,0,84,0,84, +0,84,0,83,0,74,1,185,0,184,0,183,0,123,2,123,2,36,1,94,2,94,2,88,0,88,0,88,0,88,0,171,2,86,0,86,0,86,0,86,0,85,0,85,0,84,0,84,0,84,0,83,0,74,1,16,0,180,1,85,2,89,0,90,0,80,0,88,2,87,2,89,2,89,2,87,0,87,0,88,0,88,0,88,0,88,0,172,2,86,0,86,0,86,0,86,0,85,0,85,0,84,0,84,0,84,0,83,0,74,1,50,1,47,2,84,0,84,0,84,0,83,0,74,1,65,0,86,0,86,0,86,0,86,0,85,0,85,0,84,0,84,0,84,0,83,0,74,1,123,2,123,2,122,2,121,2,182,0,170,2,38,2,123,1,120,1,119,1,17,0,66,1,94,2,94,2,115,1,198,0,223,1,91,0,118,1,82,0,79,0,165, +0,85,0,85,0,84,0,84,0,84,0,83,0,74,1,86,2,123,2,123,2,107,0,89,0,90,0,80,0,88,2,87,2,89,2,89,2,87,0,87,0,88,0,88,0,88,0,88,0,186,0,86,0,86,0,86,0,86,0,85,0,85,0,84,0,84,0,84,0,83,0,74,1,50,1,82,2,82,2,142,0,72,1,71,1,228,1,249,0,88,1,238,0,123,2,123,2,122,2,121,2,73,2,192,1,14,2,13,2,229,0,132,1,1,0,138,1,194,1,72,2,193,1,123,2,123,2,123,2,123,2,63,1,139,1,94,2,94,2,199,0,157,0,17,1,126,1,12,1,125,1,187,0,123,2,123,2,122,2,121,2,55,1,43,2,10,1,81,2,81,2,10,1,91,1,76,2,89,0,90,0,80,0,88,2,87,2,89, +2,89,2,87,0,87,0,88,0,88,0,88,0,88,0,222,1,86,0,86,0,86,0,86,0,85,0,85,0,84,0,84,0,84,0,83,0,74,1,50,1,16,1,24,2,122,2,121,2,146,0,98,2,197,0,54,1,63,2,182,0,226,1,15,1,123,1,120,1,119,1,250,1,21,0,122,2,121,2,122,2,121,2,123,2,123,2,118,1,99,2,62,2,36,2,184,1,111,0,51,2,94,2,94,2,122,2,121,2,68,1,223,1,96,2,96,2,96,2,44,1,179,1,61,2,119,0,151,1,210,0,162,0,50,2,115,3,80,2,80,2,50,1,89,0,90,0,80,0,88,2,87,2,89,2,89,2,87,0,87,0,88,0,88,0,88,0,88,0,250,1,86,0,86,0,86,0,86,0,85,0,85,0,84,0,84,0,84,0, +83,0,74,1,108,2,111,0,123,2,123,2,105,1,94,2,94,2,102,1,249,0,93,1,248,0,177,1,243,0,223,1,74,2,122,2,121,2,195,0,99,2,93,0,119,0,221,0,63,2,241,1,22,2,22,2,89,0,90,0,80,0,88,2,87,2,89,2,89,2,87,0,87,0,88,0,88,0,88,0,88,0,62,2,86,0,86,0,86,0,86,0,85,0,85,0,84,0,84,0,84,0,83,0,74,1,50,1,77,0,173,1,126,2,61,2,77,2,18,2,240,0,230,0,242,0,105,0,249,0,93,1,248,0,3,2,76,2,208,0,204,1,17,2,52,2,173,0,122,2,121,2,202,3,144,0,174,1,2,0,168,1,228,0,124,1,45,2,94,2,94,2,190,0,153,0,159,0,158,0,2,2,51,0,120, +2,119,2,118,2,71,0,24,2,176,1,186,3,196,0,98,2,186,3,102,2,45,0,18,0,89,0,90,0,80,0,88,2,87,2,89,2,89,2,87,0,87,0,88,0,88,0,88,0,88,0,5,1,86,0,86,0,86,0,86,0,85,0,85,0,84,0,84,0,84,0,83,0,74,1,50,1,96,2,96,2,96,2,30,2,168,1,146,1,129,1,241,0,250,1,195,1,64,1,211,0,31,2,164,0,180,1,130,1,37,1,195,1,75,2,108,0,240,1,111,0,78,1,135,1,79,2,168,1,102,2,27,0,196,1,197,1,94,2,94,2,72,0,1,1,70,0,3,1,196,1,83,1,86,1,52,2,70,2,68,0,159,1,213,1,72,1,71,1,62,0,102,2,45,0,110,0,137,1,89,0,90,0,80,0,88,2,87,2, +89,2,89,2,87,0,87,0,88,0,88,0,88,0,88,0,152,0,86,0,86,0,86,0,86,0,85,0,85,0,84,0,84,0,84,0,83,0,74,1,50,1,110,0,243,1,8,2,26,2,146,1,133,1,168,1,110,0,54,2,244,1,81,2,81,2,198,1,82,0,79,0,165,0,168,1,79,2,128,1,52,2,84,1,103,2,188,0,162,0,168,1,94,1,104,2,168,1,102,2,44,0,94,2,94,2,189,1,70,2,44,1,178,1,151,0,19,0,102,2,9,0,56,2,68,2,92,1,103,2,213,1,55,2,102,2,26,0,104,2,102,2,45,0,89,0,90,0,80,0,88,2,87,2,89,2,89,2,87,0,87,0,88,0,88,0,88,0,88,0,155,1,86,0,86,0,86,0,86,0,85,0,85,0,84,0,84,0,84,0, +83,0,74,1,50,1,67,2,110,0,66,2,9,2,26,1,177,1,142,1,144,1,255,0,230,1,82,0,79,0,165,0,231,1,164,0,82,0,79,0,165,0,232,1,232,1,108,1,131,1,168,1,32,2,32,2,253,1,94,1,106,1,155,0,191,0,94,2,94,2,47,2,130,2,128,2,77,1,82,0,79,0,165,0,49,1,52,2,251,1,56,1,101,1,102,2,45,0,73,1,84,2,83,2,194,0,81,1,89,0,90,0,80,0,88,2,87,2,89,2,89,2,87,0,87,0,88,0,88,0,88,0,88,0,168,1,86,0,86,0,86,0,86,0,85,0,85,0,84,0,84,0,84,0,83,0,74,1,50,1,20,0,67,1,150,0,7,1,211,0,31,2,165,1,84,2,83,2,102,2,22,0,168,1,193,0,168,1, +28,1,168,1,135,1,168,1,253,1,168,1,65,2,168,1,186,0,79,1,168,1,47,2,168,1,57,1,120,0,34,2,94,2,94,2,67,0,102,2,47,0,102,2,50,0,102,2,48,0,102,2,100,0,102,2,99,0,102,2,101,0,64,2,102,2,102,0,102,2,109,0,70,1,89,0,90,0,80,0,88,2,87,2,89,2,89,2,87,0,87,0,88,0,88,0,88,0,88,0,168,1,86,0,86,0,86,0,86,0,85,0,85,0,84,0,84,0,84,0,83,0,74,1,50,1,168,1,55,1,168,1,73,2,54,0,168,1,4,2,5,2,78,2,102,2,112,0,168,1,72,2,168,1,60,2,168,1,195,0,168,1,59,2,168,1,67,0,168,1,102,2,94,0,102,2,98,0,168,1,102,2,97,0,8,1, +94,2,94,2,195,0,102,2,46,0,102,2,96,0,102,2,30,0,102,2,49,0,102,2,115,0,102,2,114,0,162,1,229,0,132,1,102,2,113,0,50,1,89,0,90,0,80,0,88,2,87,2,89,2,89,2,87,0,87,0,88,0,88,0,88,0,88,0,168,1,86,0,86,0,86,0,86,0,85,0,85,0,84,0,84,0,84,0,83,0,74,1,119,0,168,1,78,2,110,0,116,1,94,2,94,2,195,0,53,0,250,0,102,2,29,0,195,0,216,1,182,1,217,2,190,0,46,1,242,1,14,0,11,2,129,2,2,0,102,2,43,0,50,1,89,0,90,0,80,0,88,2,87,2,89,2,89,2,87,0,87,0,88,0,88,0,88,0,88,0,168,1,86,0,86,0,86,0,86,0,85,0,85,0,84,0,84,0,84, +0,83,0,74,1,168,1,101,2,196,3,196,3,98,1,94,2,94,2,164,1,56,1,64,0,102,2,42,0,135,1,99,1,27,1,181,1,45,1,255,0,158,1,154,1,239,1,236,1,102,2,28,0,215,1,50,1,89,0,90,0,80,0,88,2,87,2,89,2,89,2,87,0,87,0,88,0,88,0,88,0,88,0,168,1,86,0,86,0,86,0,86,0,85,0,85,0,84,0,84,0,84,0,83,0,74,1,168,1,110,0,110,0,110,0,110,0,94,2,94,2,110,0,254,0,13,0,102,2,41,0,20,2,19,2,27,1,225,1,19,2,201,1,28,1,119,0,49,2,100,1,102,2,40,0,28,1,50,1,89,0,78,0,80,0,88,2,87,2,89,2,89,2,87,0,87,0,88,0,88,0,88,0,88,0,168,1,86,0, +86,0,86,0,86,0,85,0,85,0,84,0,84,0,84,0,83,0,74,1,110,0,168,1,85,1,220,0,43,2,94,2,94,2,95,1,43,2,62,1,102,2,95,0,157,1,255,0,83,0,74,1,28,1,28,1,255,0,128,2,77,1,100,1,255,0,102,2,39,0,50,1,100,1,90,0,80,0,88,2,87,2,89,2,89,2,87,0,87,0,88,0,88,0,88,0,88,0,168,1,86,0,86,0,86,0,86,0,85,0,85,0,84,0,84,0,84,0,83,0,74,1,168,1,61,1,60,1,141,0,209,1,94,2,94,2,219,0,107,2,207,1,102,2,10,0,161,1,206,1,255,0,189,0,254,1,41,2,95,1,207,0,107,1,161,0,102,2,38,0,59,1,218,0,255,0,255,0,80,0,88,2,87,2,89,2,89,2, +87,0,87,0,88,0,88,0,88,0,88,0,168,1,86,0,86,0,86,0,86,0,85,0,85,0,84,0,84,0,84,0,83,0,74,1,76,0,163,1,255,0,3,0,110,3,205,1,168,1,247,0,75,1,75,1,102,2,37,0,217,0,76,0,163,1,134,1,3,0,216,0,215,0,166,1,4,0,75,1,75,1,168,1,35,2,12,0,168,1,33,2,102,2,36,0,168,1,29,2,166,1,168,1,28,2,168,1,214,0,168,1,152,1,168,1,27,2,147,1,93,2,93,2,237,0,102,2,25,0,119,0,102,2,24,0,76,2,152,1,102,2,45,0,118,0,102,2,35,0,102,2,34,0,102,2,33,0,102,2,23,0,76,2,60,0,223,0,91,2,90,2,1,2,122,1,73,0,74,0,140,0,139,0,168, +1,110,0,9,1,75,0,170,1,169,1,59,0,168,1,98,2,73,0,74,0,37,2,146,1,148,1,168,1,117,1,75,0,170,1,169,1,92,2,138,0,98,2,102,2,11,0,136,1,76,0,163,1,181,0,3,0,102,2,32,0,15,1,113,1,75,1,75,1,237,1,102,2,31,0,149,0,96,2,96,2,96,2,95,2,15,0,166,1,109,1,102,2,8,0,137,0,233,1,136,0,190,0,96,2,96,2,96,2,95,2,15,0,229,1,176,0,135,0,7,0,252,0,221,1,152,1,174,0,133,0,175,0,218,1,57,0,56,0,132,0,130,0,119,0,76,0,163,1,76,2,3,0,212,1,245,0,208,1,171,0,75,1,75,1,125,0,123,0,200,1,191,1,122,0,190,1,104,0,80,1,231, +0,166,1,166,0,154,0,73,0,74,0,76,1,116,0,175,1,121,0,53,1,75,0,170,1,169,1,222,0,106,0,98,2,52,1,125,2,204,0,152,1,117,2,115,2,116,2,6,0,200,0,172,1,171,1,34,1,203,0,110,2,201,0,76,2,62,0,63,0,33,1,66,0,163,1,143,1,3,0,145,1,32,1,92,0,143,0,75,1,75,1,31,1,96,2,96,2,96,2,95,2,15,0,73,0,74,0,227,0,166,1,69,1,69,0,160,1,75,0,170,1,169,1,100,2,156,1,98,2,192,0,61,0,57,2,209,0,140,1,226,0,22,1,225,0,127,1,152,1,15,2,46,2,20,1,21,2,40,2,16,2,65,1,11,2,114,1,252,1,180,0,76,2,238,1,179,0,110,1,117,0,253, +0,13,1,10,2,247,1,96,2,96,2,96,2,95,2,15,0,39,2,246,1,58,0,18,1,12,2,178,0,73,0,74,0,48,1,245,1,112,1,47,1,206,0,75,0,170,1,169,1,235,1,104,1,98,2,213,0,177,0,227,1,131,0,89,1,42,1,41,1,40,1,202,0,38,1,224,1,234,1,210,1,134,0,172,0,129,0,188,1,90,1,214,1,128,0,58,1,203,1,103,0,127,0,126,0,148,0,124,0,167,0,187,1,235,0,96,2,96,2,96,2,95,2,15,0,186,1,183,1,111,2,234,0,43,1,145,0,71,2,35,1,121,1,69,2,160,0,119,0,156,0,14,1,124,2,203,3,169,0,23,1,114,2,8,2,113,2,217,1,112,2,170,0,109,2,106,2,119,0,168, +0,55,0,153,1,167,1,25,2,97,2,30,1,29,1,149,1,58,2,48,2,44,2,5,0,52,0,202,1,42,2,147,0,11,1,7,2,248,1,6,2,150,1,6,1,239,0,4,1,0,2,87,1,255,1,2,1,97,1,53,2,0,1,224,0,251,0,103,1,21,1,19,1,220,1,219,1,246,0,96,1,244,0,211,1,199,1,236,0,233,0,232,0,51,1,185,1,25,1,205,0,163,0,141,1,24,1,23,2,249,1,74,1,105,2,203,3,203,3,203,3,203,3,111,1,203,3,203,3,203,3,203,3,203,3,203,3,203,3,203,3,203,3,203,3,203,3,82,1,0,0,0,0,0,0,100,117,112,108,105,99,97,116,101,32,87,73,84,72,32,116,97,98,108,101,32,110,97,109, +101,58,32,37,115,0,0,0,110,111,116,32,97,117,116,104,111,114,105,122,101,100,0,0,97,117,116,104,111,114,105,122,101,114,32,109,97,108,102,117,110,99,116,105,111,110,0,0,67,82,69,65,84,69,32,86,73,82,84,85,65,76,32,84,65,66,76,69,32,37,84,0,85,80,68,65,84,69,32,37,81,46,37,115,32,83,69,84,32,116,121,112,101,61,39,116,97,98,108,101,39,44,32,110,97,109,101,61,37,81,44,32,116,98,108,95,110,97,109,101,61,37,81,44,32,114,111,111,116,112,97,103,101,61,48,44,32,115,113,108,61,37,81,32,87,72,69,82,69,32,114, +111,119,105,100,61,35,37,100,0,115,113,108,105,116,101,95,116,101,109,112,95,109,97,115,116,101,114,0,0,0,0,0,0,115,113,108,105,116,101,95,109,97,115,116,101,114,0,0,0,110,97,109,101,61,39,37,113,39,32,65,78,68,32,116,121,112,101,61,39,116,97,98,108,101,39,0,0,0,0,0,0,118,105,114,116,117,97,108,32,116,97,98,108,101,115,32,109,97,121,32,110,111,116,32,98,101,32,97,108,116,101,114,101,100,0,0,0,0,0,0,0,67,97,110,110,111,116,32,97,100,100,32,97,32,99,111,108,117,109,110,32,116,111,32,97,32,118,105,101, +119,0,0,0,115,113,108,105,116,101,95,97,108,116,101,114,116,97,98,95,37,115,0,0,0,0,0,0,117,110,97,98,108,101,32,116,111,32,111,112,101,110,32,97,32,116,101,109,112,111,114,97,114,121,32,100,97,116,97,98,97,115,101,32,102,105,108,101,32,102,111,114,32,115,116,111,114,105,110,103,32,116,101,109,112,111,114,97,114,121,32,116,97,98,108,101,115,0,0,0,115,113,108,105,116,101,95,0,116,97,98,108,101,32,37,115,32,109,97,121,32,110,111,116,32,98,101,32,97,108,116,101,114,101,100,0,0,0,0,0,67,97,110,110,111, +116,32,97,100,100,32,97,32,80,82,73,77,65,82,89,32,75,69,89,32,99,111,108,117,109,110,0,67,97,110,110,111,116,32,97,100,100,32,97,32,85,78,73,81,85,69,32,99,111,108,117,109,110,0,0,0,0,0,0,67,97,110,110,111,116,32,97,100,100,32,97,32,82,69,70,69,82,69,78,67,69,83,32,99,111,108,117,109,110,32,119,105,116,104,32,110,111,110,45,78,85,76,76,32,100,101,102,97,117,108,116,32,118,97,108,117,101,0,0,0,0,0,0,67,97,110,110,111,116,32,97,100,100,32,97,32,78,79,84,32,78,85,76,76,32,99,111,108,117,109,110,32, +119,105,116,104,32,100,101,102,97,117,108,116,32,118,97,108,117,101,32,78,85,76,76,0,0,0,0,67,97,110,110,111,116,32,97,100,100,32,97,32,99,111,108,117,109,110,32,119,105,116,104,32,110,111,110,45,99,111,110,115,116,97,110,116,32,100,101,102,97,117,108,116,0,0,0,85,80,68,65,84,69,32,34,37,119,34,46,37,115,32,83,69,84,32,115,113,108,32,61,32,115,117,98,115,116,114,40,115,113,108,44,49,44,37,100,41,32,124,124,32,39,44,32,39,32,124,124,32,37,81,32,124,124,32,115,117,98,115,116,114,40,115,113,108,44,37, +100,41,32,87,72,69,82,69,32,116,121,112,101,32,61,32,39,116,97,98,108,101,39,32,65,78,68,32,110,97,109,101,32,61,32,37,81,0,0,0,0,116,98,108,95,110,97,109,101,61,37,81,0,0,0,0,0,116,121,112,101,61,39,116,114,105,103,103,101,114,39,32,65,78,68,32,40,37,115,41,0,110,97,109,101,61,37,81,0,37,115,32,79,82,32,110,97,109,101,61,37,81,0,0,0,45,0,0,0,0,0,0,0,116,104,101,114,101,32,105,115,32,97,108,114,101,97,100,121,32,97,110,111,116,104,101,114,32,116,97,98,108,101,32,111,114,32,105,110,100,101,120,32, +119,105,116,104,32,116,104,105,115,32,110,97,109,101,58,32,37,115,0,0,0,0,0,0,118,105,101,119,32,37,115,32,109,97,121,32,110,111,116,32,98,101,32,97,108,116,101,114,101,100,0,0,0,0,0,0,85,80,68,65,84,69,32,34,37,119,34,46,37,115,32,83,69,84,32,115,113,108,32,61,32,115,113,108,105,116,101,95,114,101,110,97,109,101,95,112,97,114,101,110,116,40,115,113,108,44,32,37,81,44,32,37,81,41,32,87,72,69,82,69,32,37,115,59,0,0,0,0,85,80,68,65,84,69,32,37,81,46,37,115,32,83,69,84,32,115,113,108,32,61,32,67,65, +83,69,32,87,72,69,78,32,116,121,112,101,32,61,32,39,116,114,105,103,103,101,114,39,32,84,72,69,78,32,115,113,108,105,116,101,95,114,101,110,97,109,101,95,116,114,105,103,103,101,114,40,115,113,108,44,32,37,81,41,69,76,83,69,32,115,113,108,105,116,101,95,114,101,110,97,109,101,95,116,97,98,108,101,40,115,113,108,44,32,37,81,41,32,69,78,68,44,32,116,98,108,95,110,97,109,101,32,61,32,37,81,44,32,110,97,109,101,32,61,32,67,65,83,69,32,87,72,69,78,32,116,121,112,101,61,39,116,97,98,108,101,39,32,84,72, +69,78,32,37,81,32,87,72,69,78,32,110,97,109,101,32,76,73,75,69,32,39,115,113,108,105,116,101,95,97,117,116,111,105,110,100,101,120,37,37,39,32,65,78,68,32,116,121,112,101,61,39,105,110,100,101,120,39,32,84,72,69,78,32,39,115,113,108,105,116,101,95,97,117,116,111,105,110,100,101,120,95,39,32,124,124,32,37,81,32,124,124,32,115,117,98,115,116,114,40,110,97,109,101,44,37,100,43,49,56,41,32,69,76,83,69,32,110,97,109,101,32,69,78,68,32,87,72,69,82,69,32,116,98,108,95,110,97,109,101,61,37,81,32,67,79,76, +76,65,84,69,32,110,111,99,97,115,101,32,65,78,68,32,40,116,121,112,101,61,39,116,97,98,108,101,39,32,79,82,32,116,121,112,101,61,39,105,110,100,101,120,39,32,79,82,32,116,121,112,101,61,39,116,114,105,103,103,101,114,39,41,59,0,115,113,108,105,116,101,95,115,101,113,117,101,110,99,101,0,85,80,68,65,84,69,32,34,37,119,34,46,115,113,108,105,116,101,95,115,101,113,117,101,110,99,101,32,115,101,116,32,110,97,109,101,32,61,32,37,81,32,87,72,69,82,69,32,110,97,109,101,32,61,32,37,81,0,0,0,0,0,0,0,85,80, +68,65,84,69,32,115,113,108,105,116,101,95,116,101,109,112,95,109,97,115,116,101,114,32,83,69,84,32,115,113,108,32,61,32,115,113,108,105,116,101,95,114,101,110,97,109,101,95,116,114,105,103,103,101,114,40,115,113,108,44,32,37,81,41,44,32,116,98,108,95,110,97,109,101,32,61,32,37,81,32,87,72,69,82,69,32,37,115,59,0,0,0,0,0,118,105,101,119,32,37,115,32,105,115,32,99,105,114,99,117,108,97,114,108,121,32,100,101,102,105,110,101,100,0,0,0,0,0,2,0,3,0,5,0,6,0,7,0,8,0,9,0,110,111,32,115,117,99,104,32,99,111, +108,108,97,116,105,111,110,32,115,101,113,117,101,110,99,101,58,32,37,115,0,0,3,2,1,0,0,0,0,0,73,78,84,69,71,69,82,0,37,115,58,37,100,0,0,0,97,32,71,82,79,85,80,32,66,89,32,99,108,97,117,115,101,32,105,115,32,114,101,113,117,105,114,101,100,32,98,101,102,111,114,101,32,72,65,86,73,78,71,0,0,0,0,0,79,82,68,69,82,0,0,0,71,82,79,85,80,0,0,0,97,103,103,114,101,103,97,116,101,32,102,117,110,99,116,105,111,110,115,32,97,114,101,32,110,111,116,32,97,108,108,111,119,101,100,32,105,110,32,116,104,101,32,71, +82,79,85,80,32,66,89,32,99,108,97,117,115,101,0,0,0,0,0,0,116,111,111,32,109,97,110,121,32,116,101,114,109,115,32,105,110,32,79,82,68,69,82,32,66,89,32,99,108,97,117,115,101,0,0,0,0,0,0,0,37,114,32,79,82,68,69,82,32,66,89,32,116,101,114,109,32,100,111,101,115,32,110,111,116,32,109,97,116,99,104,32,97,110,121,32,99,111,108,117,109,110,32,105,110,32,116,104,101,32,114,101,115,117,108,116,32,115,101,116,0,0,0,0,37,114,32,37,115,32,66,89,32,116,101,114,109,32,111,117,116,32,111,102,32,114,97,110,103, +101,32,45,32,115,104,111,117,108,100,32,98,101,32,98,101,116,119,101,101,110,32,49,32,97,110,100,32,37,100,0,116,111,111,32,109,97,110,121,32,116,101,114,109,115,32,105,110,32,37,115,32,66,89,32,99,108,97,117,115,101,0,0,69,120,112,114,101,115,115,105,111,110,32,116,114,101,101,32,105,115,32,116,111,111,32,108,97,114,103,101,32,40,109,97,120,105,109,117,109,32,100,101,112,116,104,32,37,100,41,0,102,117,110,99,116,105,111,110,115,0,0,0,0,0,0,0,115,101,99,111,110,100,32,97,114,103,117,109,101,110,116, +32,116,111,32,108,105,107,101,108,105,104,111,111,100,40,41,32,109,117,115,116,32,98,101,32,97,32,99,111,110,115,116,97,110,116,32,98,101,116,119,101,101,110,32,48,46,48,32,97,110,100,32,49,46,48,0,0,110,111,116,32,97,117,116,104,111,114,105,122,101,100,32,116,111,32,117,115,101,32,102,117,110,99,116,105,111,110,58,32,37,115,0,0,0,0,0,0,109,105,115,117,115,101,32,111,102,32,97,103,103,114,101,103,97,116,101,32,102,117,110,99,116,105,111,110,32,37,46,42,115,40,41,0,0,0,0,0,110,111,32,115,117,99,104, +32,102,117,110,99,116,105,111,110,58,32,37,46,42,115,0,0,119,114,111,110,103,32,110,117,109,98,101,114,32,111,102,32,97,114,103,117,109,101,110,116,115,32,116,111,32,102,117,110,99,116,105,111,110,32,37,46,42,115,40,41,0,0,0,0,115,117,98,113,117,101,114,105,101,115,0,0,0,0,0,0,112,97,114,97,109,101,116,101,114,115,0,0,0,0,0,0,37,115,32,112,114,111,104,105,98,105,116,101,100,32,105,110,32,67,72,69,67,75,32,99,111,110,115,116,114,97,105,110,116,115,0,0,0,0,0,0,37,115,32,112,114,111,104,105,98,105,116, +101,100,32,105,110,32,112,97,114,116,105,97,108,32,105,110,100,101,120,32,87,72,69,82,69,32,99,108,97,117,115,101,115,0,0,0,0,110,101,119,0,0,0,0,0,111,108,100,0,0,0,0,0,109,105,115,117,115,101,32,111,102,32,97,108,105,97,115,101,100,32,97,103,103,114,101,103,97,116,101,32,37,115,0,0,110,111,32,115,117,99,104,32,99,111,108,117,109,110,0,0,97,109,98,105,103,117,111,117,115,32,99,111,108,117,109,110,32,110,97,109,101,0,0,0,37,115,58,32,37,115,46,37,115,46,37,115,0,0,0,0,37,115,58,32,37,115,46,37,115, +0,0,0,0,0,0,0,37,115,58,32,37,115,0,0,82,79,87,73,68,0,0,0,97,99,99,101,115,115,32,116,111,32,37,115,46,37,115,46,37,115,32,105,115,32,112,114,111,104,105,98,105,116,101,100,0,0,0,0,0,0,0,0,97,99,99,101,115,115,32,116,111,32,37,115,46,37,115,32,105,115,32,112,114,111,104,105,98,105,116,101,100,0,0,0,95,82,79,87,73,68,95,0,79,73,68,0,0,0,0,0,115,113,108,105,116,101,95,115,113,95,37,112,0,0,0,0,116,111,111,32,109,97,110,121,32,114,101,102,101,114,101,110,99,101,115,32,116,111,32,34,37,115,34,58,32, +109,97,120,32,54,53,53,51,53,0,0,42,0,0,0,0,0,0,0,37,115,46,37,115,0,0,0,37,115,46,37,115,46,37,115,0,0,0,0,0,0,0,0,110,111,32,115,117,99,104,32,116,97,98,108,101,58,32,37,115,0,0,0,0,0,0,0,110,111,32,116,97,98,108,101,115,32,115,112,101,99,105,102,105,101,100,0,0,0,0,0,116,111,111,32,109,97,110,121,32,99,111,108,117,109,110,115,32,105,110,32,114,101,115,117,108,116,32,115,101,116,0,0,97,32,78,65,84,85,82,65,76,32,106,111,105,110,32,109,97,121,32,110,111,116,32,104,97,118,101,32,97,110,32,79,78,32, +111,114,32,85,83,73,78,71,32,99,108,97,117,115,101,0,0,0,0,0,0,0,99,97,110,110,111,116,32,104,97,118,101,32,98,111,116,104,32,79,78,32,97,110,100,32,85,83,73,78,71,32,99,108,97,117,115,101,115,32,105,110,32,116,104,101,32,115,97,109,101,32,106,111,105,110,0,0,99,97,110,110,111,116,32,106,111,105,110,32,117,115,105,110,103,32,99,111,108,117,109,110,32,37,115,32,45,32,99,111,108,117,109,110,32,110,111,116,32,112,114,101,115,101,110,116,32,105,110,32,98,111,116,104,32,116,97,98,108,101,115,0,110,111, +32,115,117,99,104,32,105,110,100,101,120,58,32,37,115,0,0,0,0,0,0,0,109,117,108,116,105,112,108,101,32,114,101,102,101,114,101,110,99,101,115,32,116,111,32,114,101,99,117,114,115,105,118,101,32,116,97,98,108,101,58,32,37,115,0,0,0,0,0,0,99,105,114,99,117,108,97,114,32,114,101,102,101,114,101,110,99,101,58,32,37,115,0,0,116,97,98,108,101,32,37,115,32,104,97,115,32,37,100,32,118,97,108,117,101,115,32,102,111,114,32,37,100,32,99,111,108,117,109,110,115,0,0,0,109,117,108,116,105,112,108,101,32,114,101, +99,117,114,115,105,118,101,32,114,101,102,101,114,101,110,99,101,115,58,32,37,115,0,0,0,0,0,0,0,114,101,99,117,114,115,105,118,101,32,114,101,102,101,114,101,110,99,101,32,105,110,32,97,32,115,117,98,113,117,101,114,121,58,32,37,115,0,0,0,110,111,32,115,117,99,104,32,109,111,100,117,108,101,58,32,37,115,0,0,0,0,0,0,118,116,97,98,108,101,32,99,111,110,115,116,114,117,99,116,111,114,32,102,97,105,108,101,100,58,32,37,115,0,0,0,118,116,97,98,108,101,32,99,111,110,115,116,114,117,99,116,111,114,32,100, +105,100,32,110,111,116,32,100,101,99,108,97,114,101,32,115,99,104,101,109,97,58,32,37,115,0,0,0,104,105,100,100,101,110,0,0,32,104,105,100,100,101,110,0,111,98,106,101,99,116,32,110,97,109,101,32,114,101,115,101,114,118,101,100,32,102,111,114,32,105,110,116,101,114,110,97,108,32,117,115,101,58,32,37,115,0,0,0,0,0,0,0,99,111,114,114,117,112,116,32,100,97,116,97,98,97,115,101,0,0,0,0,0,0,0,0,117,110,107,110,111,119,110,32,100,97,116,97,98,97,115,101,32,37,84,0,0,0,0,0,105,100,120,0,0,0,0,0,116,98,108, +0,0,0,0,0,2,0,1,0,0,0,0,0,0,0,0,0,46,0,0,0,0,0,0,0,0,0,0,0,176,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,1,0,0,0,0,0,0,0,0,0,47,0,0,0,0,0,0,0,0,0,0,0,160,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,66,66,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,0,0,0,0,128,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,116,97,116,95,103,101,116,0,0,0,0,0,0,0,0,37,108,108,117,0,0,0,0,32,37,108,108,117,0,0,0,115,116,97,116,95,112,117,115,104,0,0,0,0,0,0,0,115,116,97,116,95,105,110,105,116,0,0,0,0,0,0,0,216,71,0,0,232,71,0,0,248,71,0, +0,0,0,0,0,8,72,0,0,0,0,0,0,115,113,108,105,116,101,95,115,116,97,116,49,0,0,0,0,116,98,108,44,105,100,120,44,115,116,97,116,0,0,0,0,115,113,108,105,116,101,95,115,116,97,116,51,0,0,0,0,115,113,108,105,116,101,95,115,116,97,116,52,0,0,0,0,67,82,69,65,84,69,32,84,65,66,76,69,32,37,81,46,37,115,40,37,115,41,0,0,68,69,76,69,84,69,32,70,82,79,77,32,37,81,46,37,115,32,87,72,69,82,69,32,37,115,61,37,81,0,0,0,67,82,69,65,84,69,32,84,65,66,76,69,32,115,113,108,105,116,101,95,109,97,115,116,101,114,40,10,32, +32,116,121,112,101,32,116,101,120,116,44,10,32,32,110,97,109,101,32,116,101,120,116,44,10,32,32,116,98,108,95,110,97,109,101,32,116,101,120,116,44,10,32,32,114,111,111,116,112,97,103,101,32,105,110,116,101,103,101,114,44,10,32,32,115,113,108,32,116,101,120,116,10,41,0,67,82,69,65,84,69,32,84,69,77,80,32,84,65,66,76,69,32,115,113,108,105,116,101,95,116,101,109,112,95,109,97,115,116,101,114,40,10,32,32,116,121,112,101,32,116,101,120,116,44,10,32,32,110,97,109,101,32,116,101,120,116,44,10,32,32,116, +98,108,95,110,97,109,101,32,116,101,120,116,44,10,32,32,114,111,111,116,112,97,103,101,32,105,110,116,101,103,101,114,44,10,32,32,115,113,108,32,116,101,120,116,10,41,0,0,0,0,0,0,0,49,0,0,0,0,0,0,0,97,116,116,97,99,104,101,100,32,100,97,116,97,98,97,115,101,115,32,109,117,115,116,32,117,115,101,32,116,104,101,32,115,97,109,101,32,116,101,120,116,32,101,110,99,111,100,105,110,103,32,97,115,32,109,97,105,110,32,100,97,116,97,98,97,115,101,0,0,0,0,0,117,110,115,117,112,112,111,114,116,101,100,32,102, +105,108,101,32,102,111,114,109,97,116,0,83,69,76,69,67,84,32,110,97,109,101,44,32,114,111,111,116,112,97,103,101,44,32,115,113,108,32,70,82,79,77,32,39,37,113,39,46,37,115,32,79,82,68,69,82,32,66,89,32,114,111,119,105,100,0,0,83,69,76,69,67,84,32,116,98,108,44,105,100,120,44,115,116,97,116,32,70,82,79,77,32,37,81,46,115,113,108,105,116,101,95,115,116,97,116,49,0,0,0,0,0,0,0,0,117,110,111,114,100,101,114,101,100,42,0,0,0,0,0,0,115,122,61,91,48,45,57,93,42,0,0,0,0,0,0,0,33,0,32,0,30,0,28,0,26,0,0,0, +0,0,0,0,105,110,118,97,108,105,100,32,114,111,111,116,112,97,103,101,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,109,97,108,102,111,114,109,101,100,32,100,97,116,97,98,97,115,101,32,115,99,104,101,109,97,32,40,37,115,41,0,0,37,115,32,45,32,37,115,0,117,110,97,98,108,101,32,116,111,32,105,100,101,110,116,105,102,121,32,116,104,101,32,111,98,106,101,99,116,32,116,111,32,98,101,32,114,101,105,110,100,101,120,101,100,0,0,0,44,32,0,0,0,0,0,0,46,0,0,0,0,0,0,0,109,105,115,117,115,101,32,111,102,32,97,103,103,114,101, +103,97,116,101,58,32,37,115,40,41,0,0,0,0,0,0,0,117,110,107,110,111,119,110,32,102,117,110,99,116,105,111,110,58,32,37,46,42,115,40,41,0,0,0,0,0,0,0,0,82,65,73,83,69,40,41,32,109,97,121,32,111,110,108,121,32,98,101,32,117,115,101,100,32,119,105,116,104,105,110,32,97,32,116,114,105,103,103,101,114,45,112,114,111,103,114,97,109,0,0,0,0,0,0,0,69,88,69,67,85,84,69,32,37,115,37,115,32,83,85,66,81,85,69,82,89,32,37,100,0,0,0,0,0,0,0,0,67,79,82,82,69,76,65,84,69,68,32,0,0,0,0,0,76,73,83,84,0,0,0,0,83,67, +65,76,65,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,120,0,0,0,0,0,0,104,101,120,32,108,105,116,101,114,97,108,32,116,111,111,32,98,105,103,58,32,37,115,0,1,0,1,0,0,0,0,0,0,0,0,0,49,0,0,0,0,0,0,0,0,0,0,0,208,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,113,108,105,116,101,95,100,101,116,97,99,104,0,0,0,110,111,32,115,117,99,104,32,100,97,116,97,98,97,115,101,58,32,37,115,0,0,0,0,99,97,110,110,111,116,32,100,101,116,97,99,104,32,100,97,116,97,98,97,115,101,32,37,115,0,0,0,0,0,0,0,99,97,110,110, +111,116,32,68,69,84,65,67,72,32,100,97,116,97,98,97,115,101,32,119,105,116,104,105,110,32,116,114,97,110,115,97,99,116,105,111,110,0,0,0,0,0,0,0,100,97,116,97,98,97,115,101,32,37,115,32,105,115,32,108,111,99,107,101,100,0,0,0,3,0,1,0,0,0,0,0,0,0,0,0,50,0,0,0,0,0,0,0,0,0,0,0,136,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,113,108,105,116,101,95,97,116,116,97,99,104,0,0,0,116,111,111,32,109,97,110,121,32,97,116,116,97,99,104,101,100,32,100,97,116,97,98,97,115,101,115,32,45,32,109,97,120,32,37,100,0,0,0,0,99, +97,110,110,111,116,32,65,84,84,65,67,72,32,100,97,116,97,98,97,115,101,32,119,105,116,104,105,110,32,116,114,97,110,115,97,99,116,105,111,110,0,0,0,0,0,0,0,100,97,116,97,98,97,115,101,32,37,115,32,105,115,32,97,108,114,101,97,100,121,32,105,110,32,117,115,101,0,0,0,100,97,116,97,98,97,115,101,32,105,115,32,97,108,114,101,97,100,121,32,97,116,116,97,99,104,101,100,0,0,0,0,117,110,97,98,108,101,32,116,111,32,111,112,101,110,32,100,97,116,97,98,97,115,101,58,32,37,115,0,0,0,0,0,110,111,32,115,117,99, +104,32,116,114,105,103,103,101,114,58,32,37,83,0,0,0,0,0,108,0,246,0,97,0,1,0,47,0,1,2,78,2,247,1,97,0,1,0,47,0,0,2,78,2,247,1,95,0,0,0,9,0,254,0,0,0,0,0,116,101,109,112,111,114,97,114,121,32,116,114,105,103,103,101,114,32,109,97,121,32,110,111,116,32,104,97,118,101,32,113,117,97,108,105,102,105,101,100,32,110,97,109,101,0,0,0,99,97,110,110,111,116,32,99,114,101,97,116,101,32,116,114,105,103,103,101,114,115,32,111,110,32,118,105,114,116,117,97,108,32,116,97,98,108,101,115,0,0,0,0,0,0,0,0,116,114, +105,103,103,101,114,32,37,84,32,97,108,114,101,97,100,121,32,101,120,105,115,116,115,0,0,0,0,0,0,0,99,97,110,110,111,116,32,99,114,101,97,116,101,32,116,114,105,103,103,101,114,32,111,110,32,115,121,115,116,101,109,32,116,97,98,108,101,0,0,0,99,97,110,110,111,116,32,99,114,101,97,116,101,32,37,115,32,116,114,105,103,103,101,114,32,111,110,32,118,105,101,119,58,32,37,83,0,0,0,0,66,69,70,79,82,69,0,0,65,70,84,69,82,0,0,0,99,97,110,110,111,116,32,99,114,101,97,116,101,32,73,78,83,84,69,65,68,32,79,70, +32,116,114,105,103,103,101,114,32,111,110,32,116,97,98,108,101,58,32,37,83,0,0,0,37,115,32,37,84,32,99,97,110,110,111,116,32,114,101,102,101,114,101,110,99,101,32,111,98,106,101,99,116,115,32,105,110,32,100,97,116,97,98,97,115,101,32,37,115,0,0,0,37,115,32,99,97,110,110,111,116,32,117,115,101,32,118,97,114,105,97,98,108,101,115,0,73,78,83,69,82,84,32,73,78,84,79,32,37,81,46,37,115,32,86,65,76,85,69,83,40,39,116,114,105,103,103,101,114,39,44,37,81,44,37,81,44,48,44,39,67,82,69,65,84,69,32,84,82,73, +71,71,69,82,32,37,113,39,41,0,116,121,112,101,61,39,116,114,105,103,103,101,114,39,32,65,78,68,32,110,97,109,101,61,39,37,113,39,0,0,0,0,45,37,84,0,0,0,0,0,114,101,115,117,108,116,0,0,96,87,0,0,0,0,0,0,0,0,0,0,152,82,0,0,1,1,0,0,0,0,0,0,112,87,0,0,2,0,0,0,0,0,16,0,128,87,0,0,3,0,0,0,0,0,0,0,24,82,0,0,4,1,0,0,0,0,0,0,144,87,0,0,2,0,0,0,16,0,0,0,160,87,0,0,5,0,0,0,0,0,0,0,184,87,0,0,2,0,0,0,8,0,0,0,208,87,0,0,6,0,0,0,0,0,0,0,224,87,0,0,7,0,0,0,0,0,0,0,240,87,0,0,2,0,0,0,128,0,0,0,0,88,0,0,9,1,0,0,0, +0,0,0,16,88,0,0,10,1,0,0,0,0,0,0,40,88,0,0,2,0,0,0,0,0,0,1,64,88,0,0,2],"i8",Ha,w.Ab+10240); +H([1,0,0,120,85,0,0,11,0,0,0,0,0,0,0,88,88,0,0,12,1,0,0,0,0,0,0,112,88,0,0,13,1,0,0,0,0,0,0,136,88,0,0,2,0,0,0,0,0,8,0,152,88,0,0,0,0,0,0,0,0,0,0,168,88,0,0,2,0,0,0,32,0,0,0,192,88,0,0,2,0,0,0,4,0,0,0,208,88,0,0,2,0,0,0,0,32,0,0,240,88,0,0,14,1,0,0,0,0,0,0,8,89,0,0,15,1,0,0,0,0,0,0,24,89,0,0,16,1,0,0,0,0,0,0,56,84,0,0,17,1,0,0,0,0,0,0,112,82,0,0,18,1,0,0,0,0,0,0,128,82,0,0,19,0,0,0,0,0,0,0,40,89,0,0,2,0,0,0,0,128,0,0,96,82,0,0,21,0,0,0,0,0,0,0,64,89,0,0,22,1,0,0,0,0,0,0,192,82,0,0,23,0,0,0,0,0,0, +0,80,89,0,0,22,1,0,0,0,0,0,0,40,82,0,0,24,0,0,0,0,0,0,0,96,89,0,0,2,0,0,0,0,0,0,2,112,89,0,0,17,1,0,0,0,0,0,0,128,89,0,0,2,0,0,0,0,64,0,0,152,89,0,0,2,0,0,0,0,0,4,0,176,89,0,0,2,0,0,0,0,0,2,0,208,89,0,0,0,0,0,0,0,0,0,0,56,82,0,0,25,0,0,0,0,0,0,0,224,89,0,0,2,0,0,0,64,0,0,0,248,89,0,0,26,0,0,0,0,0,0,0,40,86,0,0,27,0,0,0,0,0,0,0,8,90,0,0,28,1,0,0,0,0,0,0,24,83,0,0,29,1,0,0,0,0,0,0,16,90,0,0,30,1,0,0,0,0,0,0,208,82,0,0,31,0,0,0,0,0,0,0,224,82,0,0,32,0,0,0,0,0,0,0,56,86,0,0,33,0,0,0,0,0,0,0,32,90,0,0, +0,0,0,0,0,0,0,0,8,86,0,0,34,0,0,0,0,0,0,0,48,90,0,0,35,1,0,0,0,0,0,0,64,90,0,0,2,0,0,0,0,8,1,0,0,0,0,0,4,0,0,0,51,0,1,3,137,1,8,0,25,0,2,0,90,1,2,1,137,1,8,0,25,0,1,0,154,0,0,0,35,1,1,0,0,0,0,0,99,97,99,104,101,95,115,105,122,101,0,0,0,0,0,0,112,97,103,101,95,115,105,122,101,0,0,0,0,0,0,0,115,101,99,117,114,101,95,100,101,108,101,116,101,0,0,0,110,111,114,109,97,108,0,0,101,120,99,108,117,115,105,118,101,0,0,0,0,0,0,0,108,111,99,107,105,110,103,95,109,111,100,101,0,0,0,0,106,111,117,114,110,97,108, +95,109,111,100,101,0,0,0,0,106,111,117,114,110,97,108,95,115,105,122,101,95,108,105,109,105,116,0,0,0,0,0,0,97,117,116,111,95,118,97,99,117,117,109,0,0,0,0,0,4,0,1,0,51,0,1,4,45,1,0,0,24,0,2,0,25,0,1,0,52,0,7,1,109,109,97,112,95,115,105,122,101,0,0,0,0,0,0,0,116,101,109,112,95,115,116,111,114,101,0,0,0,0,0,0,116,101,109,112,95,115,116,111,114,101,95,100,105,114,101,99,116,111,114,121,0,0,0,0,110,111,116,32,97,32,119,114,105,116,97,98,108,101,32,100,105,114,101,99,116,111,114,121,0,0,0,0,0,0,0,0,115, +121,110,99,104,114,111,110,111,117,115,0,0,0,0,0,83,97,102,101,116,121,32,108,101,118,101,108,32,109,97,121,32,110,111,116,32,98,101,32,99,104,97,110,103,101,100,32,105,110,115,105,100,101,32,97,32,116,114,97,110,115,97,99,116,105,111,110,0,0,0,0,99,105,100,0,0,0,0,0,110,97,109,101,0,0,0,0,116,121,112,101,0,0,0,0,110,111,116,110,117,108,108,0,100,102,108,116,95,118,97,108,117,101,0,0,0,0,0,0,112,107,0,0,0,0,0,0,116,97,98,108,101,0,0,0,119,105,100,116,104,0,0,0,104,101,105,103,104,116,0,0,115,101, +113,110,111,0,0,0,115,101,113,0,0,0,0,0,117,110,105,113,117,101,0,0,102,105,108,101,0,0,0,0,105,100,0,0,0,0,0,0,102,114,111,109,0,0,0,0,116,111,0,0,0,0,0,0,111,110,95,117,112,100,97,116,101,0,0,0,0,0,0,0,111,110,95,100,101,108,101,116,101,0,0,0,0,0,0,0,109,97,116,99,104,0,0,0,78,79,78,69,0,0,0,0,112,97,114,101,110,116,0,0,102,107,105,100,0,0,0,0,138,1,0,0,97,0,3,0,35,3,1,0,0,0,0,0,105,110,116,101,103,114,105,116,121,95,99,104,101,99,107,0,42,42,42,32,105,110,32,100,97,116,97,98,97,115,101,32,37,115, +32,42,42,42,10,0,78,85,76,76,32,118,97,108,117,101,32,105,110,32,37,115,46,37,115,0,0,0,0,0,114,111,119,32,0,0,0,0,32,109,105,115,115,105,110,103,32,102,114,111,109,32,105,110,100,101,120,32,0,0,0,0,110,111,110,45,117,110,105,113,117,101,32,101,110,116,114,121,32,105,110,32,105,110,100,101,120,32,0,0,0,0,0,0,119,114,111,110,103,32,35,32,111,102,32,101,110,116,114,105,101,115,32,105,110,32,105,110,100,101,120,32,0,0,0,0,111,107,0,0,0,0,0,0,40,85,0,0,1,0,0,0,48,85,0,0,1,0,0,0,56,85,0,0,2,0,0,0,72,85, +0,0,3,0,0,0,88,85,0,0,2,0,0,0,96,85,0,0,3,0,0,0,104,85,0,0,0,0,0,0,112,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,84,70,56,0,0,0,0,85,84,70,45,56,0,0,0,85,84,70,45,49,54,108,101,0,0,0,0,0,0,0,0,85,84,70,45,49,54,98,101,0,0,0,0,0,0,0,0,85,84,70,49,54,108,101,0,85,84,70,49,54,98,101,0,85,84,70,45,49,54,0,0,85,84,70,49,54,0,0,0,101,110,99,111,100,105,110,103,0,0,0,0,0,0,0,0,117,110,115,117,112,112,111,114,116,101,100,32,101,110,99,111,100,105,110,103,58,32,37,115,0,0,0,0,0,0,0,0,4,0,1,0,25,0,1,0,52,0,0,1,0,0, +0,0,4,0,0,0,51,0,1,0,35,1,1,0,0,0,0,0,99,111,109,112,105,108,101,95,111,112,116,105,111,110,0,0,102,117,108,108,0,0,0,0,114,101,115,116,97,114,116,0,98,117,115,121,0,0,0,0,108,111,103,0,0,0,0,0,99,104,101,99,107,112,111,105,110,116,101,100,0,0,0,0,119,97,108,95,97,117,116,111,99,104,101,99,107,112,111,105,110,116,0,0,0,0,0,0,116,105,109,101,111,117,116,0,115,111,102,116,95,104,101,97,112,95,108,105,109,105,116,0,116,104,114,101,97,100,115,0,37,95,0,0,0,0,0,0,102,111,114,101,105,103,110,32,107,101, +121,32,109,105,115,109,97,116,99,104,32,45,32,34,37,119,34,32,114,101,102,101,114,101,110,99,105,110,103,32,34,37,119,34,0,0,0,0,83,69,84,32,78,85,76,76,0,0,0,0,0,0,0,0,83,69,84,32,68,69,70,65,85,76,84,0,0,0,0,0,67,65,83,67,65,68,69,0,82,69,83,84,82,73,67,84,0,0,0,0,0,0,0,0,78,79,32,65,67,84,73,79,78,0,0,0,0,0,0,0,116,101,109,112,111,114,97,114,121,32,115,116,111,114,97,103,101,32,99,97,110,110,111,116,32,98,101,32,99,104,97,110,103,101,100,32,102,114,111,109,32,119,105,116,104,105,110,32,97,32,116, +114,97,110,115,97,99,116,105,111,110,0,0,0,110,111,110,101,0,0,0,0,105,110,99,114,101,109,101,110,116,97,108,0,0,0,0,0,48,87,0,0,56,87,0,0,64,87,0,0,72,87,0,0,184,18,0,0,88,87,0,0,100,101,108,101,116,101,0,0,112,101,114,115,105,115,116,0,111,102,102,0,0,0,0,0,116,114,117,110,99,97,116,101,0,0,0,0,0,0,0,0,119,97,108,0,0,0,0,0,97,112,112,108,105,99,97,116,105,111,110,95,105,100,0,0,97,117,116,111,109,97,116,105,99,95,105,110,100,101,120,0,98,117,115,121,95,116,105,109,101,111,117,116,0,0,0,0,99,97, +99,104,101,95,115,112,105,108,108,0,0,0,0,0,99,97,115,101,95,115,101,110,115,105,116,105,118,101,95,108,105,107,101,0,0,0,0,0,99,104,101,99,107,112,111,105,110,116,95,102,117,108,108,102,115,121,110,99,0,0,0,0,99,111,108,108,97,116,105,111,110,95,108,105,115,116,0,0,99,111,109,112,105,108,101,95,111,112,116,105,111,110,115,0,99,111,117,110,116,95,99,104,97,110,103,101,115,0,0,0,100,97,116,97,98,97,115,101,95,108,105,115,116,0,0,0,100,101,102,97,117,108,116,95,99,97,99,104,101,95,115,105,122,101,0, +0,0,0,0,0,100,101,102,101,114,95,102,111,114,101,105,103,110,95,107,101,121,115,0,0,0,0,0,0,101,109,112,116,121,95,114,101,115,117,108,116,95,99,97,108,108,98,97,99,107,115,0,0,102,111,114,101,105,103,110,95,107,101,121,95,99,104,101,99,107,0,0,0,0,0,0,0,102,111,114,101,105,103,110,95,107,101,121,95,108,105,115,116,0,0,0,0,0,0,0,0,102,111,114,101,105,103,110,95,107,101,121,115,0,0,0,0,102,114,101,101,108,105,115,116,95,99,111,117,110,116,0,0,102,117,108,108,95,99,111,108,117,109,110,95,110,97,109, +101,115,0,0,0,0,0,0,0,102,117,108,108,102,115,121,110,99,0,0,0,0,0,0,0,105,103,110,111,114,101,95,99,104,101,99,107,95,99,111,110,115,116,114,97,105,110,116,115,0,0,0,0,0,0,0,0,105,110,99,114,101,109,101,110,116,97,108,95,118,97,99,117,117,109,0,0,0,0,0,0,105,110,100,101,120,95,105,110,102,111,0,0,0,0,0,0,105,110,100,101,120,95,108,105,115,116,0,0,0,0,0,0,108,101,103,97,99,121,95,102,105,108,101,95,102,111,114,109,97,116,0,0,0,0,0,0,109,97,120,95,112,97,103,101,95,99,111,117,110,116,0,0,112,97,103, +101,95,99,111,117,110,116,0,0,0,0,0,0,113,117,101,114,121,95,111,110,108,121,0,0,0,0,0,0,113,117,105,99,107,95,99,104,101,99,107,0,0,0,0,0,114,101,97,100,95,117,110,99,111,109,109,105,116,116,101,100,0,0,0,0,0,0,0,0,114,101,99,117,114,115,105,118,101,95,116,114,105,103,103,101,114,115,0,0,0,0,0,0,114,101,118,101,114,115,101,95,117,110,111,114,100,101,114,101,100,95,115,101,108,101,99,116,115,0,0,0,0,0,0,0,115,99,104,101,109,97,95,118,101,114,115,105,111,110,0,0,115,104,111,114,116,95,99,111,108,117, +109,110,95,110,97,109,101,115,0,0,0,0,0,0,115,104,114,105,110,107,95,109,101,109,111,114,121,0,0,0,115,116,97,116,115,0,0,0,116,97,98,108,101,95,105,110,102,111,0,0,0,0,0,0,117,115,101,114,95,118,101,114,115,105,111,110,0,0,0,0,119,97,108,95,99,104,101,99,107,112,111,105,110,116,0,0,119,114,105,116,97,98,108,101,95,115,99,104,101,109,97,0,110,111,32,115,117,99,104,32,105,110,100,101,120,58,32,37,83,0,0,0,0,0,0,0,105,110,100,101,120,32,97,115,115,111,99,105,97,116,101,100,32,119,105,116,104,32,85, +78,73,81,85,69,32,111,114,32,80,82,73,77,65,82,89,32,75,69,89,32,99,111,110,115,116,114,97,105,110,116,32,99,97,110,110,111,116,32,98,101,32,100,114,111,112,112,101,100,0,0,0,0,0,0,0,0,68,69,76,69,84,69,32,70,82,79,77,32,37,81,46,37,115,32,87,72,69,82,69,32,110,97,109,101,61,37,81,32,65,78,68,32,116,121,112,101,61,39,105,110,100,101,120,39,0,0,0,0,0,0,0,0,85,80,68,65,84,69,32,37,81,46,37,115,32,83,69,84,32,114,111,111,116,112,97,103,101,61,37,100,32,87,72,69,82,69,32,35,37,100,32,65,78,68,32,114, +111,111,116,112,97,103,101,61,35,37,100,0,115,113,108,105,116,101,95,115,116,97,116,37,100,0,0,0,48,0,0,0,0,0,0,0,118,97,114,105,97,98,108,101,32,110,117,109,98,101,114,32,109,117,115,116,32,98,101,32,98,101,116,119,101,101,110,32,63,49,32,97,110,100,32,63,37,100,0,0,0,0,0,0,116,111,111,32,109,97,110,121,32,83,81,76,32,118,97,114,105,97,98,108,101,115,0,0,116,97,98,108,101,32,37,83,32,104,97,115,32,110,111,32,99,111,108,117,109,110,32,110,97,109,101,100,32,37,115,0,116,97,98,108,101,32,37,83,32,104, +97,115,32,37,100,32,99,111,108,117,109,110,115,32,98,117,116,32,37,100,32,118,97,108,117,101,115,32,119,101,114,101,32,115,117,112,112,108,105,101,100,0,0,0,0,0,37,100,32,118,97,108,117,101,115,32,102,111,114,32,37,100,32,99,111,108,117,109,110,115,0,0,0,0,0,0,0,0,114,111,119,115,32,105,110,115,101,114,116,101,100,0,0,0,97,116,32,109,111,115,116,32,37,100,32,116,97,98,108,101,115,32,105,110,32,97,32,106,111,105,110,0,0,0,0,0,65,63,62,64,0,0,0,0,0,0,108,105,65,62,64,63,116,114,113,115,0,0,0,0,9,8, +0,0,0,0,0,0,108,105,0,0,0,0,0,0,83,69,65,82,67,72,0,0,83,67,65,78,0,0,0,0,32,83,85,66,81,85,69,82,89,32,37,100,0,0,0,0,32,84,65,66,76,69,32,37,115,0,0,0,0,0,0,0,32,65,83,32,37,115,0,0,80,82,73,77,65,82,89,32,75,69,89,0,0,0,0,0,65,85,84,79,77,65,84,73,67,32,67,79,86,69,82,73,78,71,32,73,78,68,69,88,0,0,0,0,0,0,0,0,67,79,86,69,82,73,78,71,32,73,78,68,69,88,32,37,115,0,0,0,0,0,0,0,73,78,68,69,88,32,37,115,0,0,0,0,0,0,0,0,32,85,83,73,78,71,32,0,40,114,111,119,105,100,61,63,41,0,0,0,0,0,0,0,40,114,111, +119,105,100,62,63,32,65,78,68,32,114,111,119,105,100,60,63,41,0,0,0,40,114,111,119,105,100,62,63,41,0,0,0,0,0,0,0,40,114,111,119,105,100,60,63,41,0,0,0,0,0,0,0,32,85,83,73,78,71,32,73,78,84,69,71,69,82,32,80,82,73,77,65,82,89,32,75,69,89,32,0,0,0,0,0,32,86,73,82,84,85,65,76,32,84,65,66,76,69,32,73,78,68,69,88,32,37,100,58,37,115,0,0,0,0,0,0,32,40,0,0,0,0,0,0,61,0,0,0,0,0,0,0,32,65,78,68,32,0,0,0,65,78,89,40,37,115,41,0,62,0,0,0,0,0,0,0,60,0,0,0,0,0,0,0,41,0,0,0,0,0,0,0,97,117,116,111,109,97,116,105, +99,32,105,110,100,101,120,32,111,110,32,37,115,40,37,115,41,0,0,0,0,0,0,0,97,117,116,111,45,105,110,100,101,120,0,0,0,0,0,0,110,111,32,113,117,101,114,121,32,115,111,108,117,116,105,111,110,0,0,0,0,0,0,0,10,10,9,9,8,8,7,7,7,6,6,6,5,5,5,4,4,4,4,3,3,3,3,3,3,2,2,2,2,2,2,2,37,115,46,120,66,101,115,116,73,110,100,101,120,40,41,32,109,97,108,102,117,110,99,116,105,111,110,0,0,0,0,0,116,97,98,108,101,32,37,115,58,32,120,66,101,115,116,73,110,100,101,120,32,114,101,116,117,114,110,101,100,32,97,110,32,105, +110,118,97,108,105,100,32,112,108,97,110,0,0,0,83,81,0,0,0,0,0,0,45,45,32,84,82,73,71,71,69,82,32,37,115,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,2,0,1,0,1,1,4,36,1,4,5,16,0,2,2,2,2,0,2,2,0,0,32,0,0,4,5,4,4,0,0,1,1,5,5,0,0,0,2,2,16,0,0,0,0,0,0,0,0,0,17,17,17,17,8,17,17,17,17,76,76,2,2,0,5,5,21,21,21,21,21,21,0,76,76,76,76,76,76,76,76,76,76,0,36,2,0,0,0,0,0,2,0,1,1,1,1,8,8,0,2,1,1,1,1,2,0,0,2,2,0,0,0,0,0,0,12,69,21,1,2,2,0,1,8,5,5,5,0,1,0,0,0,0,0,0,0,1,0,2,2,1,0,0,0,0,0,0,16,16,2,16,0,0,0,0,0,1,2,3,4,6,8,8,0, +0,0,0,0,0,0,0,16,67,0,0,3,0,0,0,8,67,0,0,3,0,0,0,111,105,100,0,0,0,0,0,70,79,82,69,73,71,78,32,75,69,89,32,99,111,110,115,116,114,97,105,110,116,32,102,97,105,108,101,100,0,0,0,37,115,46,114,111,119,105,100,0,0,0,0,0,0,0,0,116,97,98,108,101,32,37,115,32,109,97,121,32,110,111,116,32,98,101,32,109,111,100,105,102,105,101,100,0,0,0,0,99,97,110,110,111,116,32,109,111,100,105,102,121,32,37,115,32,98,101,99,97,117,115,101,32,105,116,32,105,115,32,97,32,118,105,101,119,0,0,0,110,111,32,115,117,99,104,32, +99,111,108,117,109,110,58,32,37,115,0,0,0,0,0,0,114,111,119,115,32,117,112,100,97,116,101,100,0,0,0,0,95,114,111,119,105,100,95,0,116,111,111,32,109,97,110,121,32,99,111,108,117,109,110,115,32,105,110,32,37,115,0,0,114,111,119,115,32,100,101,108,101,116,101,100,0,0,0,0,110,97,116,117,114,97,108,101,102,116,111,117,116,101,114,105,103,104,116,102,117,108,108,105,110,110,101,114,99,114,111,115,115,0,0,0,0,0,0,0,0,7,4,6,4,40,10,5,32,14,5,48,19,4,56,23,5,1,28,5,3,0,0,0,117,110,107,110,111,119,110,32, +111,114,32,117,110,115,117,112,112,111,114,116,101,100,32,106,111,105,110,32,116,121,112,101,58,32,37,84,32,37,84,37,115,37,84,0,0,0,0,0,82,73,71,72,84,32,97,110,100,32,70,85,76,76,32,79,85,84,69,82,32,74,79,73,78,115,32,97,114,101,32,110,111,116,32,99,117,114,114,101,110,116,108,121,32,115,117,112,112,111,114,116,101,100,0,0,97,32,74,79,73,78,32,99,108,97,117,115,101,32,105,115,32,114,101,113,117,105,114,101,100,32,98,101,102,111,114,101,32,37,115,0,0,0,0,0,79,78,0,0,0,0,0,0,85,83,73,78,71,0,0,0, +68,73,83,84,73,78,67,84,0,0,0,0,0,0,0,0,71,82,79,85,80,32,66,89,0,0,0,0,0,0,0,0,82,73,71,72,84,32,80,65,82,84,32,79,70,32,79,82,68,69,82,32,66,89,0,0,79,82,68,69,82,32,66,89,0,0,0,0,0,0,0,0,99,111,108,117,109,110,37,100,0,0,0,0,0,0,0,0,83,67,65,78,32,84,65,66,76,69,32,37,115,37,115,37,115,0,0,0,0,0,0,0,32,85,83,73,78,71,32,67,79,86,69,82,73,78,71,32,73,78,68,69,88,32,0,0,68,73,83,84,73,78,67,84,32,97,103,103,114,101,103,97,116,101,115,32,109,117,115,116,32,104,97,118,101,32,101,120,97,99,116,108, +121,32,111,110,101,32,97,114,103,117,109,101,110,116,0,0,0,0,0,0,85,83,69,32,84,69,77,80,32,66,45,84,82,69,69,32,70,79,82,32,37,115,0,0,79,82,68,69,82,32,66,89,32,99,108,97,117,115,101,32,115,104,111,117,108,100,32,99,111,109,101,32,97,102,116,101,114,32,37,115,32,110,111,116,32,98,101,102,111,114,101,0,76,73,77,73,84,32,99,108,97,117,115,101,32,115,104,111,117,108,100,32,99,111,109,101,32,97,102,116,101,114,32,37,115,32,110,111,116,32,98,101,102,111,114,101,0,0,0,0,97,108,108,32,86,65,76,85,69,83, +32,109,117,115,116,32,104,97,118,101,32,116,104,101,32,115,97,109,101,32,110,117,109,98,101,114,32,111,102,32,116,101,114,109,115,0,0,0,83,69,76,69,67,84,115,32,116,111,32,116,104,101,32,108,101,102,116,32,97,110,100,32,114,105,103,104,116,32,111,102,32,37,115,32,100,111,32,110,111,116,32,104,97,118,101,32,116,104,101,32,115,97,109,101,32,110,117,109,98,101,114,32,111,102,32,114,101,115,117,108,116,32,99,111,108,117,109,110,115,0,0,0,0,0,0,0,67,79,77,80,79,85,78,68,32,83,85,66,81,85,69,82,73,69,83, +32,37,100,32,65,78,68,32,37,100,32,37,115,40,37,115,41,0,0,0,0,85,83,73,78,71,32,84,69,77,80,32,66,45,84,82,69,69,32,0,0,0,0,0,0,85,78,73,79,78,32,65,76,76,0,0,0,0,0,0,0,73,78,84,69,82,83,69,67,84,0,0,0,0,0,0,0,69,88,67,69,80,84,0,0,85,78,73,79,78,0,0,0,111,110,108,121,32,97,32,115,105,110,103,108,101,32,114,101,115,117,108,116,32,97,108,108,111,119,101,100,32,102,111,114,32,97,32,83,69,76,69,67,84,32,116,104,97,116,32,105,115,32,112,97,114,116,32,111,102,32,97,110,32,101,120,112,114,101,115,115, +105,111,110,0,112,97,114,97,109,101,116,101,114,115,32,97,114,101,32,110,111,116,32,97,108,108,111,119,101,100,32,105,110,32,118,105,101,119,115,0,0,0,0,0,118,105,101,119,0,0,0,0,115,113,108,105,116,101,95,115,116,97,116,0,0,0,0,0,116,97,98,108,101,32,37,115,32,109,97,121,32,110,111,116,32,98,101,32,100,114,111,112,112,101,100,0,0,0,0,0,117,115,101,32,68,82,79,80,32,84,65,66,76,69,32,116,111,32,100,101,108,101,116,101,32,116,97,98,108,101,32,37,115,0,0,0,0,0,0,0,117,115,101,32,68,82,79,80,32,86,73, +69,87,32,116,111,32,100,101,108,101,116,101,32,118,105,101,119,32,37,115,0,68,69,76,69,84,69,32,70,82,79,77,32,37,81,46,115,113,108,105,116,101,95,115,101,113,117,101,110,99,101,32,87,72,69,82,69,32,110,97,109,101,61,37,81,0,0,0,0,68,69,76,69,84,69,32,70,82,79,77,32,37,81,46,37,115,32,87,72,69,82,69,32,116,98,108,95,110,97,109,101,61,37,81,32,97,110,100,32,116,121,112,101,33,61,39,116,114,105,103,103,101,114,39,0,102,111,114,101,105,103,110,32,107,101,121,32,111,110,32,37,115,32,115,104,111,117,108, +100,32,114,101,102,101,114,101,110,99,101,32,111,110,108,121,32,111,110,101,32,99,111,108,117,109,110,32,111,102,32,116,97,98,108,101,32,37,84,0,0,110,117,109,98,101,114,32,111,102,32,99,111,108,117,109,110,115,32,105,110,32,102,111,114,101,105,103,110,32,107,101,121,32,100,111,101,115,32,110,111,116,32,109,97,116,99,104,32,116,104,101,32,110,117,109,98,101,114,32,111,102,32,99,111,108,117,109,110,115,32,105,110,32,116,104,101,32,114,101,102,101,114,101,110,99,101,100,32,116,97,98,108,101,0,0,0,117, +110,107,110,111,119,110,32,99,111,108,117,109,110,32,34,37,115,34,32,105,110,32,102,111,114,101,105,103,110,32,107,101,121,32,100,101,102,105,110,105,116,105,111,110,0,0,0,99,97,110,110,111,116,32,99,114,101,97,116,101,32,97,32,84,69,77,80,32,105,110,100,101,120,32,111,110,32,110,111,110,45,84,69,77,80,32,116,97,98,108,101,32,34,37,115,34,0,0,0,0,0,0,0,97,108,116,101,114,116,97,98,95,0,0,0,0,0,0,0,116,97,98,108,101,32,37,115,32,109,97,121,32,110,111,116,32,98,101,32,105,110,100,101,120,101,100,0, +0,0,0,0,118,105,101,119,115,32,109,97,121,32,110,111,116,32,98,101,32,105,110,100,101,120,101,100,0,0,0,0,0,0,0,0,118,105,114,116,117,97,108,32,116,97,98,108,101,115,32,109,97,121,32,110,111,116,32,98,101,32,105,110,100,101,120,101,100,0,0,0,0,0,0,0,116,104,101,114,101,32,105,115,32,97,108,114,101,97,100,121,32,97,32,116,97,98,108,101,32,110,97,109,101,100,32,37,115,0,0,0,0,0,0,0,105,110,100,101,120,32,37,115,32,97,108,114,101,97,100,121,32,101,120,105,115,116,115,0,115,113,108,105,116,101,95,97, +117,116,111,105,110,100,101,120,95,37,115,95,37,100,0,0,116,97,98,108,101,32,37,115,32,104,97,115,32,110,111,32,99,111,108,117,109,110,32,110,97,109,101,100,32,37,115,0,99,111,110,102,108,105,99,116,105,110,103,32,79,78,32,67,79,78,70,76,73,67,84,32,99,108,97,117,115,101,115,32,115,112,101,99,105,102,105,101,100,0,0,0,0,0,0,0,67,82,69,65,84,69,37,115,32,73,78,68,69,88,32,37,46,42,115,0,0,0,0,0,32,85,78,73,81,85,69,0,73,78,83,69,82,84,32,73,78,84,79,32,37,81,46,37,115,32,86,65,76,85,69,83,40,39,105, +110,100,101,120,39,44,37,81,44,37,81,44,35,37,100,44,37,81,41,59,0,110,97,109,101,61,39,37,113,39,32,65,78,68,32,116,121,112,101,61,39,105,110,100,101,120,39,0,0,0,0,0,0,116,97,98,108,101,32,34,37,115,34,32,104,97,115,32,109,111,114,101,32,116,104,97,110,32,111,110,101,32,112,114,105,109,97,114,121,32,107,101,121,0,0,0,0,0,0,0,0,65,85,84,79,73,78,67,82,69,77,69,78,84,32,105,115,32,111,110,108,121,32,97,108,108,111,119,101,100,32,111,110,32,97,110,32,73,78,84,69,71,69,82,32,80,82,73,77,65,82,89,32, +75,69,89,0,100,101,102,97,117,108,116,32,118,97,108,117,101,32,111,102,32,99,111,108,117,109,110,32,91,37,115,93,32,105,115,32,110,111,116,32,99,111,110,115,116,97,110,116,0,0,0,0,116,111,111,32,109,97,110,121,32,99,111,108,117,109,110,115,32,111,110,32,37,115,0,0,100,117,112,108,105,99,97,116,101,32,99,111,108,117,109,110,32,110,97,109,101,58,32,37,115,0,0,0,0,0,0,0,65,85,84,79,73,78,67,82,69,77,69,78,84,32,110,111,116,32,97,108,108,111,119,101,100,32,111,110,32,87,73,84,72,79,85,84,32,82,79,87, +73,68,32,116,97,98,108,101,115,0,0,0,0,0,0,0,80,82,73,77,65,82,89,32,75,69,89,32,109,105,115,115,105,110,103,32,111,110,32,116,97,98,108,101,32,37,115,0,84,65,66,76,69,0,0,0,86,73,69,87,0,0,0,0,67,82,69,65,84,69,32,37,115,32,37,46,42,115,0,0,85,80,68,65,84,69,32,37,81,46,37,115,32,83,69,84,32,116,121,112,101,61,39,37,115,39,44,32,110,97,109,101,61,37,81,44,32,116,98,108,95,110,97,109,101,61,37,81,44,32,114,111,111,116,112,97,103,101,61,35,37,100,44,32,115,113,108,61,37,81,32,87,72,69,82,69,32,114, +111,119,105,100,61,35,37,100,0,0,67,82,69,65,84,69,32,84,65,66,76,69,32,37,81,46,115,113,108,105,116,101,95,115,101,113,117,101,110,99,101,40,110,97,109,101,44,115,101,113,41,0,0,0,0,0,0,0,116,98,108,95,110,97,109,101,61,39,37,113,39,32,65,78,68,32,116,121,112,101,33,61,39,116,114,105,103,103,101,114,39,0,0,0,0,0,0,0,10,32,32,0,0,0,0,0,44,10,32,32,0,0,0,0,10,41,0,0,0,0,0,0,67,82,69,65,84,69,32,84,65,66,76,69,32,0,0,0,192,4,0,0,88,105,0,0,96,105,0,0,104,105,0,0,112,105,0,0,0,0,0,0,32,84,69,88,84,0, +0,0,32,78,85,77,0,0,0,0,32,73,78,84,0,0,0,0,32,82,69,65,76,0,0,0,116,101,109,112,111,114,97,114,121,32,116,97,98,108,101,32,110,97,109,101,32,109,117,115,116,32,98,101,32,117,110,113,117,97,108,105,102,105,101,100,0,0,0,0,0,0,0,0,116,97,98,108,101,32,37,84,32,97,108,114,101,97,100,121,32,101,120,105,115,116,115,0,116,104,101,114,101,32,105,115,32,97,108,114,101,97,100,121,32,97,110,32,105,110,100,101,120,32,110,97,109,101,100,32,37,115,0,0,0,0,0,0,248,105,0,0,0,106,0,0,8,106,0,0,0,0,0,0,66,69,71, +73,78,0,0,0,82,69,76,69,65,83,69,0,82,79,76,76,66,65,67,75,0,0,0,0,0,0,0,0,67,79,77,77,73,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,97,114,115,101,114,32,115,116,97,99,107,32,111,118,101,114,102,108,111,119,0,0,0,224,3,33,4,75,5,132,4,180,4,180,4,1,0,6,1,237,255,135,0,135,0,8,3,180,4,180,4,180,4,180,4,69,0,69,0,53,0,208,0,27,1,243,2,58,0,213,2,136,2,59,2,238,1,161,1,84,1,7,1,212,0,59,3,59,3,59,3,59,3,59,3,59,3,59,3,59,3,59,3,59,3,59,3,59,3,59,3,59,3,59,3,110,3,59,3,161,3,212,3,212,3,46,4,180,4,180, +4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,234,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,180,4,185,255,209,255,209,255,209,255,209,255,209,255,0,0,29,0,244,255,27,1,27,1,139,0,91,0,136,1,136,1,126,3,160,2,214,2,103,5,170,255,170,255,170,255,88,0,62,1,62,1,99,0,125,1,236,255,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1, +27,1,27,1,27,1,27,1,27,1,27,1,112,2,108,3,214,2,160,2,60,5,60,5,60,5,60,5,60,5,60,5,170,255,170,255,170,255,49,1,136,0,136,0,142,0,167,0,226,0,154,0,137,0,152,0,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,80,1,80,1,80,1,27,1,27,1,96,1,27,1,27,1,27,1,27,1,27,1,228,0,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,27,1,245,1,57,2,84,2,84,2,84,2,251,1,241,1,185,1,135,1,97,1,156,0,156,0,89,3,97,1,89,3,223,2,45,3,127,2,203,2,156,0,76,1,203,2,203,2,240,1,163,1,134, +2,77,5,160,4,160,4,55,5,55,5,160,4,61,5,236,4,120,4,66,5,66,5,66,5,66,5,160,4,26,5,120,4,61,5,236,4,236,4,120,4,160,4,26,5,182,4,4,5,160,4,160,4,26,5,160,4,26,5,160,4,26,5,238,4,183,4,183,4,183,4,250,4,238,4,183,4,193,4,183,4,250,4,183,4,183,4,161,4,176,4,161,4,176,4,161,4,176,4,160,4,160,4,137,4,238,4,178,4,178,4,238,4,130,4,131,4,123,4,128,4,120,4,217,4,215,4,226,4,226,4,230,4,230,4,230,4,230,4,170,255,170,255,170,255,170,255,170,255,170,255,44,4,48,1,14,2,249,0,152,1,173,255,178,1,44,3,27,0,43, +3,39,3,34,3,239,2,77,2,139,2,163,0,131,0,162,2,110,1,194,1,43,1,148,0,23,0,102,0,229,0,235,255,221,4,220,4,198,4,75,4,204,4,148,4,199,4,191,4,189,4,91,4,82,4,99,4,86,4,185,4,81,4,188,4,202,4,74,4,65,4,116,4,115,4,80,4,165,4,154,4,70,4,187,4,181,4,163,4,77,4,47,4,129,4,151,4,122,4,114,4,127,4,67,4,140,4,141,4,139,4,45,4,48,4,124,4,88,4,110,4,103,4,105,4,102,4,68,4,90,4,94,4,64,4,66,4,69,4,63,4,60,4,219,3,55,4,53,4,50,4,41,4,156,3,253,3,246,3,236,3,238,3,51,3,227,2,128,3,87,3,36,3,227,2,228,2,224,2, +178,2,142,2,153,2,106,2,70,2,56,2,16,2,42,2,123,1,20,2,223,1,199,1,123,1,176,1,115,1,85,1,28,0,82,1,116,0,245,255,199,255,171,255,7,0,248,255,3,0,0,0,0,0,135,2,196,3,196,3,196,3,110,3,110,3,201,3,196,3,6,3,34,3,34,3,170,3,201,3,201,3,201,3,108,3,201,3,201,3,201,3,196,3,201,3,10,3,40,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,169,3,171,3,48,3,47,3,150,3,21,3,45,3,38,3,42,3,111,3,104,3,105,3,103,3,107,3,112,3,201,3,41,3,73,3,88,3,72,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201, +3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,82,3,87,3,94,3,86,3,83,3,75,3,74,3,76,3,77,3,201,3,201,3,161,2,227,2,201,3,201,3,78,3,201,3,173,2,79,3,91,3,90,3,89,3,168,2,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,135,2,196,3,201, +3,201,3,196,3,196,3,196,3,196,3,196,3,196,3,188,3,10,3,0,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,176,3,174,3,201,3,123,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,141,2,201,3,143,3,6,3,6,3,6,3,8,3,242,2,254,2,143,2,44,3,23,3,23,3,155,3,44,3,155,3,198,2,221,2,195,2,34,3,23,3,106,3,34,3,34,3,7,3,254,2,201,3,181,3,14,3,14,3, +173,3,173,3,14,3,53,3,231,2,44,3,238,2,238,2,238,2,238,2,14,3,158,2,44,3,53,3,231,2,231,2,44,3,14,3,158,2,149,3,147,3,14,3,14,3,158,2,14,3,158,2,14,3,158,2,116,3,229,2,229,2,229,2,213,2,116,3,229,2,198,2,229,2,213,2,229,2,229,2,27,3,22,3,27,3,22,3,27,3,22,3,14,3,14,3,201,3,116,3,120,3,120,3,116,3,39,3,28,3,37,3,35,3,44,3,164,2,216,2,151,2,151,2,140,2,140,2,140,2,140,2,193,3,193,3,188,3,200,2,200,2,183,2,201,3,201,3,201,3,201,3,201,3,201,3,175,2,201,3,125,3,201,3,201,3,201,3,201,3,201,3,201,3,201, +3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,60,3,201,3,136,2,183,3,201,3,201,3,180,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,153,3,201,3,201,3,201,3,201,3,201,3,201,3,146,3,145,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,245,2,201,3,201,3,201,3,249,2,201,3,201,3,201,3,201,3,201,3,201,3,36,3,201,3,29,3,201,3,109,3,201,3,201,3,201, +3,201,3,201,3,201,3,201,3,201,3,201,3,201,3,198,3,201,3,201,3,201,3,197,3,201,3,201,3,201,3,201,3,201,3,62,3,201,3,61,3,65,3,201,3,149,2,201,3,132,2,137,2,192,3,195,3,194,3,191,3,190,3,189,3,184,3,182,3,179,3,178,3,177,3,175,3,172,3,168,3,129,3,127,3,134,3,133,3,132,3,131,3,130,3,128,3,126,3,124,3,50,3,49,3,46,3,43,3,241,2,167,3,122,3,240,2,237,2,236,2,157,2,185,3,152,3,161,3,160,3,159,3,54,3,158,3,157,3,156,3,154,3,151,3,138,3,52,3,51,3,232,2,114,3,113,3,160,2,142,3,141,3,140,3,144,3,148,3,139,3, +16,3,239,2,159,2,156,2,163,2,167,2,219,2,220,2,228,2,226,2,225,2,224,2,223,2,222,2,218,2,169,2,174,2,212,2,197,2,196,2,205,2,204,2,210,2,209,2,208,2,207,2,206,2,203,2,202,2,201,2,194,2,193,2,199,2,192,2,215,2,214,2,211,2,191,2,235,2,234,2,233,2,230,2,190,2,189,2,188,2,65,3,187,2,186,2,70,3,69,3,98,3,58,3,243,2,247,2,246,2,250,2,251,2,3,3,2,3,1,3,12,3,13,3,25,3,24,3,56,3,55,3,26,3,11,3,5,3,4,3,20,3,19,3,18,3,17,3,9,3,255,2,31,3,30,3,100,3,15,3,99,3,97,3,166,3,165,3,164,3,163,3,162,3,102,3,199,3,200, +3,119,3,121,3,118,3,33,3,32,3,117,3,101,3,71,3,68,3,178,2,179,2,137,3,136,3,135,3,181,2,180,2,177,2,176,2,95,3,92,3,84,3,96,3,93,3,85,3,81,3,80,3,66,3,64,3,63,3,59,3,67,3,248,2,244,2,57,3,253,2,252,2,185,2,184,2,182,2,166,2,165,2,162,2,155,2,153,2,152,2,154,2,150,2,148,2,147,2,146,2,145,2,144,2,172,2,171,2,170,2,142,2,139,2,138,2,134,2,133,2,131,2,0,0,0,0,19,22,22,23,1,24,26,15,27,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,108,109,110,27,28,23,50,51,80,81,82,83,122,85,86,87,88,89,90,91,92,93, +94,95,22,70,23,71,72,73,74,75,76,77,78,79,80,81,82,83,122,85,86,87,88,89,90,91,92,93,94,95,19,97,91,92,93,94,95,26,85,86,87,88,89,90,91,92,93,94,95,27,28,97,98,99,122,211,102,103,104,79,19,50,51,19,122,59,55,113,224,225,226,89,90,91,92,93,94,95,23,27,28,26,71,72,73,74,75,76,77,78,79,80,81,82,83,51,85,86,87,88,89,90,91,92,93,94,95,19,132,133,58,89,90,21,108,109,110,27,28,97,98,33,100,7,8,119,120,22,19,107,42,109,27,28,27,28,95,28,50,51,99,100,101,102,103,104,105,27,28,97,98,107,152,112,132,133,112, +65,69,71,72,73,74,75,76,77,78,79,80,81,82,83,11,85,86,87,88,89,90,91,92,93,94,95,19,101,97,97,98,24,101,122,157,12,99,103,112,102,103,104,152,22,97,98,97,98,27,28,113,27,29,91,164,165,124,50,51,97,98,219,59,132,133,134,22,23,45,66,47,212,213,124,140,132,133,19,71,72,73,74,75,76,77,78,79,80,81,82,83,152,85,86,87,88,89,90,91,92,93,94,95,164,165,27,28,230,50,51,233,108,109,110,70,16,59,23,97,98,26,97,22,66,185,12,187,27,28,71,72,73,74,75,76,77,78,79,80,81,82,83,29,85,86,87,88,89,90,91,92,93,94,95,19, +22,148,149,45,23,47,62,154,64,156,108,109,110,37,69,23,163,59,26,26,97,98,144,145,146,147,152,200,52,23,50,51,26,22,89,90,60,210,7,8,9,138,97,22,23,26,101,26,174,175,197,71,72,73,74,75,76,77,78,79,80,81,82,83,16,85,86,87,88,89,90,91,92,93,94,95,19,132,133,134,23,152,208,209,140,152,152,111,195,196,98,70,163,160,152,23,22,164,165,246,207,27,152,174,175,171,172,50,51,137,62,139,64,171,172,222,124,27,138,24,163,89,90,130,174,175,197,163,71,72,73,74,75,76,77,78,79,80,81,82,83,22,85,86,87,88,89,90,91, +92,93,94,95,19,197,181,182,23,208,209,152,197,26,189,132,133,232,224,225,226,152,97,91,26,232,116,212,213,152,222,121,152,174,175,50,51,243,97,22,23,22,234,174,175,177,23,239,116,163,177,174,175,121,174,175,71,72,73,74,75,76,77,78,79,80,81,82,83,24,85,86,87,88,89,90,91,92,93,94,95,19,23,197,11,23,227,70,208,220,152,31,224,225,226,35,98,224,225,226,108,109,110,115,152,117,118,27,222,49,123,24,50,51,27,0,1,2,224,225,226,166,124,168,169,239,174,175,170,171,172,22,194,71,72,73,74,75,76,77,78,79,80,81, +82,83,152,85,86,87,88,89,90,91,92,93,94,95,19,22,208,24,23,195,196,170,171,172,174,175,152,26,152,152,152,207,152,97,152,23,152,51,244,152,97,152,247,248,23,50,51,26,174,175,174,175,174,175,174,175,174,175,174,175,23,174,175,174,175,188,71,72,73,74,75,76,77,78,79,80,81,82,83,152,85,86,87,88,89,90,91,92,93,94,95,19,152,107,152,33,24,152,100,101,27,174,175,152,42,152,23,152,26,152,23,152,26,152,174,175,174,175,152,174,175,23,50,51,26,174,175,174,175,174,175,174,175,174,175,174,175,163,119,120,174,175, +19,71,72,73,74,75,76,77,78,79,80,81,82,83,152,85,86,87,88,89,90,91,92,93,94,95,66,152,97,197,23,50,51,26,53,23,174,175,26,23,23,23,26,26,26,36,106,146,147,174,175,19,71,72,73,74,75,76,77,78,79,80,81,82,83,152,85,86,87,88,89,90,91,92,93,94,95,152,196,119,120,19,50,51,168,169,26,174,175,207,28,152,249,250,152,163,163,163,163,174,175,163,19,71,72,73,74,75,76,77,78,79,80,81,82,83,152,85,86,87,88,89,90,91,92,93,94,95,152,197,197,197,197,50,51,197,194,36,174,175,191,192,152,191,192,163,152,66,124,152,174, +175,152,19,71,72,73,74,75,76,77,78,79,80,81,82,83,152,85,86,87,88,89,90,91,92,93,94,95,197,152,100,188,152,50,51,152,152,188,174,175,252,152,94,95,152,152,152,1,2,152,152,174,175,19,152,72,73,74,75,76,77,78,79,80,81,82,83,152,85,86,87,88,89,90,91,92,93,94,95,152,188,188,22,194,50,51,240,173,194,174,175,252,194,152,36,181,28,152,23,219,122,174,175,219,221,152,152,73,74,75,76,77,78,79,80,81,82,83,152,85,86,87,88,89,90,91,92,93,94,95,19,20,152,22,23,194,152,240,27,28,174,175,240,19,20,26,22,194,194, +38,22,27,28,152,23,22,152,116,174,175,152,23,38,152,23,152,221,152,57,152,23,163,50,51,194,174,175,66,174,175,69,57,174,175,40,174,175,174,175,174,175,174,175,69,22,53,74,75,30,53,89,90,22,22,152,197,23,96,97,98,22,152,101,89,90,91,208,209,152,53,96,97,98,101,22,101,174,175,152,19,20,105,22,174,175,112,19,27,28,20,174,175,24,132,133,134,135,136,38,44,174,175,107,61,54,26,132,133,134,135,136,54,107,22,5,140,1,57,36,111,122,28,79,79,131,123,66,19,20,69,22,1,16,20,125,27,28,123,111,120,23,131,23,16, +68,142,38,15,22,89,90,3,167,4,248,251,96,97,98,180,180,101,251,151,6,57,151,13,151,26,25,151,161,202,153,162,153,69,130,128,203,19,20,127,22,126,204,129,22,27,28,205,132,133,134,135,136,89,90,231,38,95,137,179,96,97,98,206,179,101,122,107,159,159,125,231,216,228,107,57,184,217,216,176,217,176,48,106,18,184,158,69,159,158,46,71,237,176,176,176,132,133,134,135,136,217,176,137,216,178,158,89,90,179,176,159,179,159,96,97,98,159,159,101,5,158,202,22,18,10,11,12,13],"i8",Ha,w.Ab+20481); +H([14,190,238,17,190,158,193,41,159,202,193,159,202,245,193,193,223,190,32,159,34,132,133,134,135,136,159,39,155,43,150,223,177,201,178,177,186,66,199,177,152,253,56,215,152,182,152,202,152,63,152,152,66,67,242,229,152,174,152,152,152,152,152,152,152,199,242,202,152,198,152,152,152,183,192,152,215,152,183,215,183,152,241,214,152,211,152,152,211,211,152,152,241,152,152,152,152,152,152,152,114,152,152,235,152,152,152,174,187,95,174,253,253,253,253,236,253,253,253,253,253,253,253,253,253,253,253,141, +0,0,0,0,0,0,0,0,0,27,27,27,27,0,27,27,27,0,27,27,27,27,0,0,0,27,0,0,27,0,0,0,27,0,0,0,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,0,0,100,97,116,97,98,97,115,101,32,115,99,104,101,109,97,32,105,115,32,108,111,99,107,101,100,58,32,37,115,0,0,0,115,116,97,116,101,109,101,110,116,32,116,111,111,32,108,111,110,103,0,0,0,0,0,0,64,121,0,0,72,121,0,0,80,121,0,0,88,121,0,0,96,121,0,0,104,121,0,0,112,121,0,0,120,121,0,0,128,121, +0,0,144,121,0,0,216,83,0,0,152,121,0,0,97,100,100,114,0,0,0,0,111,112,99,111,100,101,0,0,112,49,0,0,0,0,0,0,112,50,0,0,0,0,0,0,112,51,0,0,0,0,0,0,112,52,0,0,0,0,0,0,112,53,0,0,0,0,0,0,99,111,109,109,101,110,116,0,115,101,108,101,99,116,105,100,0,0,0,0,0,0,0,0,111,114,100,101,114,0,0,0,100,101,116,97,105,108,0,0,117,110,111,112,101,110,101,100,0,0,0,0,0,0,0,0,110,111,32,115,117,99,104,32,118,105,101,119,0,0,0,0,110,111,32,115,117,99,104,32,116,97,98,108,101,0,0,0,98,105,110,100,32,111,110,32,97,32, +98,117,115,121,32,112,114,101,112,97,114,101,100,32,115,116,97,116,101,109,101,110,116,58,32,91,37,115,93,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,122,0,0,64,122,0,0,72,122,0,0,80,122,0,0,78,79,84,32,78,85,76,76,0,0,0,0,0,0,0,0,85,78,73,81,85,69,0,0,67,72,69,67,75,0,0,0,70,79,82,69,73,71,78,32,75,69,89,0,0,0,0,0,97,98,111,114,116,32,97,116,32,37,100,32,105,110,32,91,37,115,93,58,32,37,115,0,37,115,32,99,111,110,115,116,114,97,105,110,116,32,102,97,105,108, +101,100,58,32,37,115,0,0,0,0,0,0,0,0,37,115,32,99,111,110,115,116,114,97,105,110,116,32,102,97,105,108,101,100,0,0,0,0,0,0,0,0,1,2,0,2,2,0,0,0,0,0,0,0,0,1,2,1,1,1,2,1,2,0,0,0,0,0,0,0,99,97,110,110,111,116,32,111,112,101,110,32,115,97,118,101,112,111,105,110,116,32,45,32,83,81,76,32,115,116,97,116,101,109,101,110,116,115,32,105,110,32,112,114,111,103,114,101,115,115,0,0,0,0,0,0,110,111,32,115,117,99,104,32,115,97,118,101,112,111,105,110,116,58,32,37,115,0,0,0,99,97,110,110,111,116,32,114,101,108,101, +97,115,101,32,115,97,118,101,112,111,105,110,116,32,45,32,83,81,76,32,115,116,97,116,101,109,101,110,116,115,32,105,110,32,112,114,111,103,114,101,115,115,0,0,0,99,97,110,110,111,116,32,99,111,109,109,105,116,32,116,114,97,110,115,97,99,116,105,111,110,32,45,32,83,81,76,32,115,116,97,116,101,109,101,110,116,115,32,105,110,32,112,114,111,103,114,101,115,115,0,0,99,97,110,110,111,116,32,115,116,97,114,116,32,97,32,116,114,97,110,115,97,99,116,105,111,110,32,119,105,116,104,105,110,32,97,32,116,114, +97,110,115,97,99,116,105,111,110,0,99,97,110,110,111,116,32,114,111,108,108,98,97,99,107,32,45,32,110,111,32,116,114,97,110,115,97,99,116,105,111,110,32,105,115,32,97,99,116,105,118,101,0,0,0,0,0,0,99,97,110,110,111,116,32,99,111,109,109,105,116,32,45,32,110,111,32,116,114,97,110,115,97,99,116,105,111,110,32,105,115,32,97,99,116,105,118,101,0,0,0,0,0,0,0,0,83,69,76,69,67,84,32,110,97,109,101,44,32,114,111,111,116,112,97,103,101,44,32,115,113,108,32,70,82,79,77,32,39,37,113,39,46,37,115,32,87,72,69, +82,69,32,37,115,32,79,82,68,69,82,32,66,89,32,114,111,119,105,100,0,116,111,111,32,109,97,110,121,32,108,101,118,101,108,115,32,111,102,32,116,114,105,103,103,101,114,32,114,101,99,117,114,115,105,111,110,0,0,0,0,99,97,110,110,111,116,32,99,104,97,110,103,101,32,37,115,32,119,97,108,32,109,111,100,101,32,102,114,111,109,32,119,105,116,104,105,110,32,97,32,116,114,97,110,115,97,99,116,105,111,110,0,0,0,0,0,105,110,116,111,0,0,0,0,111,117,116,32,111,102,0,0,100,97,116,97,98,97,115,101,32,116,97,98, +108,101,32,105,115,32,108,111,99,107,101,100,58,32,37,115,0,0,0,0,115,116,97,116,101,109,101,110,116,32,97,98,111,114,116,115,32,97,116,32,37,100,58,32,91,37,115,93,32,37,115,0,45,45,32,0,0,0,0,0,39,37,46,42,113,39,0,0,122,101,114,111,98,108,111,98,40,37,100,41,0,0,0,0,120,39,0,0,0,0,0,0,37,48,50,120,0,0,0,0,39,0,0,0,0,0,0,0,99,97,110,110,111,116,32,86,65,67,85,85,77,32,102,114,111,109,32,119,105,116,104,105,110,32,97,32,116,114,97,110,115,97,99,116,105,111,110,0,99,97,110,110,111,116,32,86,65,67, +85,85,77,32,45,32,83,81,76,32,115,116,97,116,101,109,101,110,116,115,32,105,110,32,112,114,111,103,114,101,115,115,0,0,0,0,0,0,65,84,84,65,67,72,32,39,58,109,101,109,111,114,121,58,39,32,65,83,32,118,97,99,117,117,109,95,100,98,59,0,65,84,84,65,67,72,32,39,39,32,65,83,32,118,97,99,117,117,109,95,100,98,59,0,80,82,65,71,77,65,32,118,97,99,117,117,109,95,100,98,46,115,121,110,99,104,114,111,110,111,117,115,61,79,70,70,0,0,0,0,0,0,0,0,66,69,71,73,78,59,0,0,83,69,76,69,67,84,32,39,67,82,69,65,84,69,32, +84,65,66,76,69,32,118,97,99,117,117,109,95,100,98,46,39,32,124,124,32,115,117,98,115,116,114,40,115,113,108,44,49,52,41,32,32,32,70,82,79,77,32,115,113,108,105,116,101,95,109,97,115,116,101,114,32,87,72,69,82,69,32,116,121,112,101,61,39,116,97,98,108,101,39,32,65,78,68,32,110,97,109,101,33,61,39,115,113,108,105,116,101,95,115,101,113,117,101,110,99,101,39,32,32,32,65,78,68,32,99,111,97,108,101,115,99,101,40,114,111,111,116,112,97,103,101,44,49,41,62,48,0,0,0,0,0,83,69,76,69,67,84,32,39,67,82,69,65, +84,69,32,73,78,68,69,88,32,118,97,99,117,117,109,95,100,98,46,39,32,124,124,32,115,117,98,115,116,114,40,115,113,108,44,49,52,41,32,32,70,82,79,77,32,115,113,108,105,116,101,95,109,97,115,116,101,114,32,87,72,69,82,69,32,115,113,108,32,76,73,75,69,32,39,67,82,69,65,84,69,32,73,78,68,69,88,32,37,39,32,0,83,69,76,69,67,84,32,39,67,82,69,65,84,69,32,85,78,73,81,85,69,32,73,78,68,69,88,32,118,97,99,117,117,109,95,100,98,46,39,32,124,124,32,115,117,98,115,116,114,40,115,113,108,44,50,49,41,32,32,32,70, +82,79,77,32,115,113,108,105,116,101,95,109,97,115,116,101,114,32,87,72,69,82,69,32,115,113,108,32,76,73,75,69,32,39,67,82,69,65,84,69,32,85,78,73,81,85,69,32,73,78,68,69,88,32,37,39,0,0,0,83,69,76,69,67,84,32,39,73,78,83,69,82,84,32,73,78,84,79,32,118,97,99,117,117,109,95,100,98,46,39,32,124,124,32,113,117,111,116,101,40,110,97,109,101,41,32,124,124,32,39,32,83,69,76,69,67,84,32,42,32,70,82,79,77,32,109,97,105,110,46,39,32,124,124,32,113,117,111,116,101,40,110,97,109,101,41,32,124,124,32,39,59,39, +70,82,79,77,32,109,97,105,110,46,115,113,108,105,116,101,95,109,97,115,116,101,114,32,87,72,69,82,69,32,116,121,112,101,32,61,32,39,116,97,98,108,101,39,32,65,78,68,32,110,97,109,101,33,61,39,115,113,108,105,116,101,95,115,101,113,117,101,110,99,101,39,32,32,32,65,78,68,32,99,111,97,108,101,115,99,101,40,114,111,111,116,112,97,103,101,44,49,41,62,48,0,0,0,0,0,83,69,76,69,67,84,32,39,68,69,76,69,84,69,32,70,82,79,77,32,118,97,99,117,117,109,95,100,98,46,39,32,124,124,32,113,117,111,116,101,40,110, +97,109,101,41,32,124,124,32,39,59,39,32,70,82,79,77,32,118,97,99,117,117,109,95,100,98,46,115,113,108,105,116,101,95,109,97,115,116,101,114,32,87,72,69,82,69,32,110,97,109,101,61,39,115,113,108,105,116,101,95,115,101,113,117,101,110,99,101,39,32,0,0,0,0,0,0,0,0,83,69,76,69,67,84,32,39,73,78,83,69,82,84,32,73,78,84,79,32,118,97,99,117,117,109,95,100,98,46,39,32,124,124,32,113,117,111,116,101,40,110,97,109,101,41,32,124,124,32,39,32,83,69,76,69,67,84,32,42,32,70,82,79,77,32,109,97,105,110,46,39,32, +124,124,32,113,117,111,116,101,40,110,97,109,101,41,32,124,124,32,39,59,39,32,70,82,79,77,32,118,97,99,117,117,109,95,100,98,46,115,113,108,105,116,101,95,109,97,115,116,101,114,32,87,72,69,82,69,32,110,97,109,101,61,61,39,115,113,108,105,116,101,95,115,101,113,117,101,110,99,101,39,59,0,0,0,0,0,0,73,78,83,69,82,84,32,73,78,84,79,32,118,97,99,117,117,109,95,100,98,46,115,113,108,105,116,101,95,109,97,115,116,101,114,32,32,32,83,69,76,69,67,84,32,116,121,112,101,44,32,110,97,109,101,44,32,116,98,108, +95,110,97,109,101,44,32,114,111,111,116,112,97,103,101,44,32,115,113,108,32,32,32,32,70,82,79,77,32,109,97,105,110,46,115,113,108,105,116,101,95,109,97,115,116,101,114,32,32,32,87,72,69,82,69,32,116,121,112,101,61,39,118,105,101,119,39,32,79,82,32,116,121,112,101,61,39,116,114,105,103,103,101,114,39,32,32,32,32,32,32,79,82,32,40,116,121,112,101,61,39,116,97,98,108,101,39,32,65,78,68,32,114,111,111,116,112,97,103,101,61,48,41,0,1,1,3,0,5,0,6,0,8,0,0,0,0,0,0,0,77,97,105,110,32,102,114,101,101,108,105, +115,116,58,32,0,76,105,115,116,32,111,102,32,116,114,101,101,32,114,111,111,116,115,58,32,0,0,0,0,80,97,103,101,32,37,100,32,105,115,32,110,101,118,101,114,32,117,115,101,100,0,0,0,80,111,105,110,116,101,114,32,109,97,112,32,112,97,103,101,32,37,100,32,105,115,32,114,101,102,101,114,101,110,99,101,100,0,0,0,0,0,0,0,79,117,116,115,116,97,110,100,105,110,103,32,112,97,103,101,32,99,111,117,110,116,32,103,111,101,115,32,102,114,111,109,32,37,100,32,116,111,32,37,100,32,100,117,114,105,110,103,32,116, +104,105,115,32,97,110,97,108,121,115,105,115,0,0,10,0,0,0,0,0,0,0,80,97,103,101,32,37,100,58,32,0,0,0,0,0,0,0,117,110,97,98,108,101,32,116,111,32,103,101,116,32,116,104,101,32,112,97,103,101,46,32,101,114,114,111,114,32,99,111,100,101,61,37,100,0,0,0,98,116,114,101,101,73,110,105,116,80,97,103,101,40,41,32,114,101,116,117,114,110,115,32,101,114,114,111,114,32,99,111,100,101,32,37,100,0,0,0,79,110,32,116,114,101,101,32,112,97,103,101,32,37,100,32,99,101,108,108,32,37,100,58,32,0,0,0,0,0,0,0,82,111, +119,105,100,32,37,108,108,100,32,111,117,116,32,111,102,32,111,114,100,101,114,32,40,112,114,101,118,105,111,117,115,32,119,97,115,32,37,108,108,100,41,0,0,0,0,0,67,104,105,108,100,32,112,97,103,101,32,100,101,112,116,104,32,100,105,102,102,101,114,115,0,0,0,0,0,0,0,0,79,110,32,112,97,103,101,32,37,100,32,97,116,32,114,105,103,104,116,32,99,104,105,108,100,58,32,0,0,0,0,0,82,111,119,105,100,32,37,108,108,100,32,111,117,116,32,111,102,32,111,114,100,101,114,32,40,109,97,120,32,108,97,114,103,101,114, +32,116,104,97,110,32,112,97,114,101,110,116,32,109,105,110,32,111,102,32,37,108,108,100,41,0,0,0,0,82,111,119,105,100,32,37,108,108,100,32,111,117,116,32,111,102,32,111,114,100,101,114,32,40,109,105,110,32,108,101,115,115,32,116,104,97,110,32,112,97,114,101,110,116,32,109,105,110,32,111,102,32,37,108,108,100,41,0,0,0,0,0,0,82,111,119,105,100,32,37,108,108,100,32,111,117,116,32,111,102,32,111,114,100,101,114,32,40,109,97,120,32,108,97,114,103,101,114,32,116,104,97,110,32,112,97,114,101,110,116,32, +109,97,120,32,111,102,32,37,108,108,100,41,0,0,0,0,82,111,119,105,100,32,37,108,108,100,32,111,117,116,32,111,102,32,111,114,100,101,114,32,40,109,105,110,32,108,101,115,115,32,116,104,97,110,32,112,97,114,101,110,116,32,109,97,120,32,111,102,32,37,108,108,100,41,0,0,0,0,0,0,67,111,114,114,117,112,116,105,111,110,32,100,101,116,101,99,116,101,100,32,105,110,32,99,101,108,108,32,37,100,32,111,110,32,112,97,103,101,32,37,100,0,0,0,0,0,0,0,77,117,108,116,105,112,108,101,32,117,115,101,115,32,102,111, +114,32,98,121,116,101,32,37,100,32,111,102,32,112,97,103,101,32,37,100,0,0,0,0,70,114,97,103,109,101,110,116,97,116,105,111,110,32,111,102,32,37,100,32,98,121,116,101,115,32,114,101,112,111,114,116,101,100,32,97,115,32,37,100,32,111,110,32,112,97,103,101,32,37,100,0,0,0,0,0,105,110,118,97,108,105,100,32,112,97,103,101,32,110,117,109,98,101,114,32,37,100,0,0,50,110,100,32,114,101,102,101,114,101,110,99,101,32,116,111,32,112,97,103,101,32,37,100,0,0,0,0,0,0,0,0,70,97,105,108,101,100,32,116,111,32,114, +101,97,100,32,112,116,114,109,97,112,32,107,101,121,61,37,100,0,0,0,0,66,97,100,32,112,116,114,32,109,97,112,32,101,110,116,114,121,32,107,101,121,61,37,100,32,101,120,112,101,99,116,101,100,61,40,37,100,44,37,100,41,32,103,111,116,61,40,37,100,44,37,100,41,0,0,0,37,100,32,111,102,32,37,100,32,112,97,103,101,115,32,109,105,115,115,105,110,103,32,102,114,111,109,32,111,118,101,114,102,108,111,119,32,108,105,115,116,32,115,116,97,114,116,105,110,103,32,97,116,32,37,100,0,0,0,0,0,0,0,0,102,97,105,108, +101,100,32,116,111,32,103,101,116,32,112,97,103,101,32,37,100,0,0,0,102,114,101,101,108,105,115,116,32,108,101,97,102,32,99,111,117,110,116,32,116,111,111,32,98,105,103,32,111,110,32,112,97,103,101,32,37,100,0,0,83,81,76,105,116,101,32,102,111,114,109,97,116,32,51,0,37,115,45,109,106,88,88,88,88,88,88,57,88,88,122,0,77,74,32,100,101,108,101,116,101,58,32,37,115,0,0,0,77,74,32,99,111,108,108,105,100,101,58,32,37,115,0,0,45,109,106,37,48,54,88,57,37,48,50,88,0,0,0,0,37,46,50,120,0,0,0,0,107,40,37,100, +0,0,0,0,110,105,108,0,0,0,0,0,66,0,0,0,0,0,0,0,44,46,46,46,0,0,0,0,40,37,46,50,48,115,41,0,37,115,40,37,100,41,0,0,37,100,0,0,0,0,0,0,40,98,108,111,98,41,0,0,118,116,97,98,58,37,112,58,37,112,0,0,0,0,0,0,105,110,116,97,114,114,97,121,0,0,0,0,0,0,0,0,112,114,111,103,114,97,109,0,72,74,0,0,152,137,0,0,168,137,0,0,184,137,0,0,200,137,0,0,216,137,0,0,232,137,0,0,248,137,0,0,8,138,0,0,16,138,0,0,24,138,0,0,32,138,0,0,48,138,0,0,64,138,0,0,72,138,0,0,80,138,0,0,88,138,0,0,96,138,0,0,104,138,0,0,112,138, +0,0,120,138,0,0,136,138,0,0,152,138,0,0,160,138,0,0,176,138,0,0,184,138,0,0,192,138,0,0,200,138,0,0,208,138,0,0,216,138,0,0,232,138,0,0,240,138,0,0,0,139,0,0,8,139,0,0,16,139,0,0,24,139,0,0,40,139,0,0,48,139,0,0,56,139,0,0,72,139,0,0,88,139,0,0,96,139,0,0,112,139,0,0,120,139,0,0,128,139,0,0,136,139,0,0,144,139,0,0,152,139,0,0,160,139,0,0,176,139,0,0,192,139,0,0,200,139,0,0,216,139,0,0,232,139,0,0,248,139,0,0,8,140,0,0,24,140,0,0,40,140,0,0,56,140,0,0,72,140,0,0,88,140,0,0,104,140,0,0,112,140,0,0, +120,140,0,0,128,140,0,0,136,140,0,0,144,140,0,0,152,140,0,0,168,140,0,0,184,140,0,0,192,140,0,0,208,140,0,0,216,140,0,0,224,140,0,0,240,140,0,0,0,141,0,0,8,141,0,0,16,141,0,0,24,141,0,0,32,141,0,0,40,141,0,0,48,141,0,0,56,141,0,0,64,141,0,0,72,141,0,0,88,141,0,0,96,141,0,0,104,141,0,0,120,141,0,0,136,141,0,0,144,141,0,0,160,141,0,0,176,141,0,0,184,141,0,0,200,141,0,0,208,141,0,0,216,141,0,0,224,141,0,0,232,141,0,0,248,141,0,0,8,142,0,0,24,142,0,0,32,142,0,0,40,142,0,0,48,142,0,0,56,142,0,0,64,142, +0,0,80,142,0,0,88,142,0,0,96,142,0,0,112,142,0,0,128,142,0,0,144,142,0,0,160,142,0,0,168,142,0,0,176,142,0,0,184,142,0,0,192,142,0,0,200,142,0,0,208,142,0,0,224,142,0,0,240,142,0,0,0,143,0,0,16,143,0,0,32,143,0,0,48,143,0,0,64,143,0,0,80,143,0,0,96,143,0,0,112,143,0,0,128,143,0,0,144,143,0,0,152,143,0,0,160,143,0,0,168,143,0,0,184,143,0,0,200,143,0,0,208,143,0,0,216,143,0,0,224,143,0,0,232,143,0,0,248,143,0,0,8,144,0,0,16,144,0,0,32,144,0,0,40,144,0,0,48,144,0,0,64,144,0,0,72,144,0,0,80,144,0,0,88, +144,0,0,96,144,0,0,112,144,0,0,128,144,0,0,136,144,0,0,144,144,0,0,70,117,110,99,116,105,111,110,0,0,0,0,0,0,0,0,83,97,118,101,112,111,105,110,116,0,0,0,0,0,0,0,65,117,116,111,67,111,109,109,105,116,0,0,0,0,0,0,84,114,97,110,115,97,99,116,105,111,110,0,0,0,0,0,83,111,114,116,101,114,78,101,120,116,0,0,0,0,0,0,80,114,101,118,73,102,79,112,101,110,0,0,0,0,0,0,78,101,120,116,73,102,79,112,101,110,0,0,0,0,0,0,80,114,101,118,0,0,0,0,78,101,120,116,0,0,0,0,65,103,103,83,116,101,112,0,67,104,101,99,107, +112,111,105,110,116,0,0,0,0,0,0,74,111,117,114,110,97,108,77,111,100,101,0,0,0,0,0,86,97,99,117,117,109,0,0,86,70,105,108,116,101,114,0,86,85,112,100,97,116,101,0,71,111,116,111,0,0,0,0,71,111,115,117,98,0,0,0,82,101,116,117,114,110,0,0,78,111,116,0,0,0,0,0,73,110,105,116,67,111,114,111,117,116,105,110,101,0,0,0,69,110,100,67,111,114,111,117,116,105,110,101,0,0,0,0,89,105,101,108,100,0,0,0,72,97,108,116,73,102,78,117,108,108,0,0,0,0,0,0,72,97,108,116,0,0,0,0,73,110,116,101,103,101,114,0,73,110,116, +54,52,0,0,0,83,116,114,105,110,103,0,0,78,117,108,108,0,0,0,0,83,111,102,116,78,117,108,108,0,0,0,0,0,0,0,0,66,108,111,98,0,0,0,0,86,97,114,105,97,98,108,101,0,0,0,0,0,0,0,0,77,111,118,101,0,0,0,0,67,111,112,121,0,0,0,0,83,67,111,112,121,0,0,0,82,101,115,117,108,116,82,111,119,0,0,0,0,0,0,0,67,111,108,108,83,101,113,0,65,100,100,73,109,109,0,0,77,117,115,116,66,101,73,110,116,0,0,0,0,0,0,0,82,101,97,108,65,102,102,105,110,105,116,121,0,0,0,0,67,97,115,116,0,0,0,0,80,101,114,109,117,116,97,116,105, +111,110,0,0,0,0,0,67,111,109,112,97,114,101,0,74,117,109,112,0,0,0,0,79,110,99,101,0,0,0,0,73,102,0,0,0,0,0,0,73,102,78,111,116,0,0,0,67,111,108,117,109,110,0,0,65,102,102,105,110,105,116,121,0,0,0,0,0,0,0,0,77,97,107,101,82,101,99,111,114,100,0,0,0,0,0,0,67,111,117,110,116,0,0,0,82,101,97,100,67,111,111,107,105,101,0,0,0,0,0,0,83,101,116,67,111,111,107,105,101,0,0,0,0,0,0,0,82,101,111,112,101,110,73,100,120,0,0,0,0,0,0,0,79,112,101,110,82,101,97,100,0,0,0,0,0,0,0,0,79,112,101,110,87,114,105,116, +101,0,0,0,0,0,0,0,79,112,101,110,65,117,116,111,105,110,100,101,120,0,0,0,79,112,101,110,69,112,104,101,109,101,114,97,108,0,0,0,83,111,114,116,101,114,79,112,101,110,0,0,0,0,0,0,83,101,113,117,101,110,99,101,84,101,115,116,0,0,0,0,79,112,101,110,80,115,101,117,100,111,0,0,0,0,0,0,67,108,111,115,101,0,0,0,83,101,101,107,76,84,0,0,83,101,101,107,76,69,0,0,83,101,101,107,71,69,0,0,83,101,101,107,71,84,0,0,83,101,101,107,0,0,0,0,78,111,67,111,110,102,108,105,99,116,0,0,0,0,0,0,78,111,116,70,111,117, +110,100,0,0,0,0,0,0,0,0,70,111,117,110,100,0,0,0,78,111,116,69,120,105,115,116,115,0,0,0,0,0,0,0,79,114,0,0,0,0,0,0,65,110,100,0,0,0,0,0,83,101,113,117,101,110,99,101,0,0,0,0,0,0,0,0,78,101,119,82,111,119,105,100,0,0,0,0,0,0,0,0,73,110,115,101,114,116,0,0,73,115,78,117,108,108,0,0,78,111,116,78,117,108,108,0,78,101,0,0,0,0,0,0,69,113,0,0,0,0,0,0,71,116,0,0,0,0,0,0,76,101,0,0,0,0,0,0,76,116,0,0,0,0,0,0,71,101,0,0,0,0,0,0,73,110,115,101,114,116,73,110,116,0,0,0,0,0,0,0,66,105,116,65,110,100,0,0,66, +105,116,79,114,0,0,0,83,104,105,102,116,76,101,102,116,0,0,0,0,0,0,0,83,104,105,102,116,82,105,103,104,116,0,0,0,0,0,0,65,100,100,0,0,0,0,0,83,117,98,116,114,97,99,116,0,0,0,0,0,0,0,0,77,117,108,116,105,112,108,121,0,0,0,0,0,0,0,0,68,105,118,105,100,101,0,0,82,101,109,97,105,110,100,101,114,0,0,0,0,0,0,0,67,111,110,99,97,116,0,0,68,101,108,101,116,101,0,0,66,105,116,78,111,116,0,0,83,116,114,105,110,103,56,0,82,101,115,101,116,67,111,117,110,116,0,0,0,0,0,0,83,111,114,116,101,114,67,111,109,112,97, +114,101,0,0,0,83,111,114,116,101,114,68,97,116,97,0,0,0,0,0,0,82,111,119,75,101,121,0,0,82,111,119,68,97,116,97,0,82,111,119,105,100,0,0,0,78,117,108,108,82,111,119,0,76,97,115,116,0,0,0,0,83,111,114,116,101,114,83,111,114,116,0,0,0,0,0,0,83,111,114,116,0,0,0,0,82,101,119,105,110,100,0,0,83,111,114,116,101,114,73,110,115,101,114,116,0,0,0,0,73,100,120,73,110,115,101,114,116,0,0,0,0,0,0,0,73,100,120,68,101,108,101,116,101,0,0,0,0,0,0,0,73,100,120,82,111,119,105,100,0,0,0,0,0,0,0,0,73,100,120,76,69, +0,0,0,73,100,120,71,84,0,0,0,73,100,120,76,84,0,0,0,73,100,120,71,69,0,0,0,68,101,115,116,114,111,121,0,67,108,101,97,114,0,0,0,82,101,115,101,116,83,111,114,116,101,114,0,0,0,0,0,67,114,101,97,116,101,73,110,100,101,120,0,0,0,0,0,67,114,101,97,116,101,84,97,98,108,101,0,0,0,0,0,80,97,114,115,101,83,99,104,101,109,97,0,0,0,0,0,76,111,97,100,65,110,97,108,121,115,105,115,0,0,0,0,68,114,111,112,84,97,98,108,101,0,0,0,0,0,0,0,68,114,111,112,73,110,100,101,120,0,0,0,0,0,0,0,68,114,111,112,84,114,105, +103,103,101,114,0,0,0,0,0,73,110,116,101,103,114,105,116,121,67,107,0,0,0,0,0,82,111,119,83,101,116,65,100,100,0,0,0,0,0,0,0,82,111,119,83,101,116,82,101,97,100,0,0,0,0,0,0,82,111,119,83,101,116,84,101,115,116,0,0,0,0,0,0,80,114,111,103,114,97,109,0,80,97,114,97,109,0,0,0,82,101,97,108,0,0,0,0,70,107,67,111,117,110,116,101,114,0,0,0,0,0,0,0,70,107,73,102,90,101,114,111,0,0,0,0,0,0,0,0,77,101,109,77,97,120,0,0,73,102,80,111,115,0,0,0,73,102,78,101,103,0,0,0,73,102,90,101,114,111,0,0,65,103,103,70, +105,110,97,108,0,0,0,0,0,0,0,0,73,110,99,114,86,97,99,117,117,109,0,0,0,0,0,0,69,120,112,105,114,101,0,0,84,97,98,108,101,76,111,99,107,0,0,0,0,0,0,0,86,66,101,103,105,110,0,0,86,67,114,101,97,116,101,0,86,68,101,115,116,114,111,121,0,0,0,0,0,0,0,0,86,79,112,101,110,0,0,0,86,67,111,108,117,109,110,0,86,78,101,120,116,0,0,0,86,82,101,110,97,109,101,0,80,97,103,101,99,111,117,110,116,0,0,0,0,0,0,0,77,97,120,80,103,99,110,116,0,0,0,0,0,0,0,0,73,110,105,116,0,0,0,0,78,111,111,112,0,0,0,0,69,120,112,108, +97,105,110,0,65,80,73,32,99,97,108,108,101,100,32,119,105,116,104,32,78,85,76,76,32,112,114,101,112,97,114,101,100,32,115,116,97,116,101,109,101,110,116,0,65,80,73,32,99,97,108,108,101,100,32,119,105,116,104,32,102,105,110,97,108,105,122,101,100,32,112,114,101,112,97,114,101,100,32,115,116,97,116,101,109,101,110,116,0,0,0,0,64,32,32,0,0,0,0,0,1,0,0,0,8,0,0,0,4,0,0,0,5,0,0,0,8,0,0,0,12,0,0,0,13,0,0,0,14,0,0,0,15,0,0,0,16,0,0,0,9,0,0,0,9,0,0,0,10,0,0,0,0,0,0,0,3,0,0,0,12,0,0,0,17,0,0,0,6,0,0,0,4,0, +0,0,0,0,0,0,160,146,0,0,10,0,0,0,0,0,0,0,120,146,0,0,11,0,0,0,0,0,0,0,192,18,0,0,18,0,0,0,0,0,0,0,168,146,0,0,19,0,0,0,0,0,0,0,176,146,0,0,20,0,0,0,0,0,0,0,184,146,0,0,21,0,0,0,0,0,0,0,192,146,0,0,22,0,0,0,0,0,0,0,208,146,0,0,11,0,0,0,0,0,0,0,216,146,0,0,12,0,0,0,0,0,0,0,224,146,0,0,0,0,0,0,0,0,0,0,232,146,0,0,0,0,0,0,0,0,0,0,240,146,0,0,13,0,0,0,0,0,0,0,248,146,0,0,0,0,0,0,0,0,0,0,0,147,0,0,0,0,0,0,0,0,0,0,16,147,0,0,23,0,0,0,0,0,0,0,24,147,0,0,0,0,0,0,0,0,0,0,40,147,0,0,12,0,0,0,0,0,0,0,48,147, +0,0,24,0,0,0,0,0,0,0,64,147,0,0,25,0,0,0,0,0,0,0,72,147,0,0,13,0,0,0,0,0,0,0,80,147,0,0,14,0,0,0,0,0,0,0,88,147,0,0,1,0,0,0,0,0,0,0,96,147,0,0,26,0,0,0,0,0,0,0,104,147,0,0,0,0,0,0,0,0,0,0,112,147,0,0,1,0,0,0,0,0,0,0,0,0,0,0,99,108,111,115,101,0,0,0,111,115,95,117,110,105,120,46,99,58,37,100,58,32,40,37,100,41,32,37,115,40,37,115,41,32,45,32,37,115,0,0,111,112,101,110,0,0,0,0,103,101,116,99,119,100,0,0,115,116,97,116,0,0,0,0,102,115,116,97,116,0,0,0,102,116,114,117,110,99,97,116,101,0,0,0,0,0,0,0, +102,99,110,116,108,0,0,0,114,101,97,100,0,0,0,0,112,114,101,97,100,0,0,0,112,114,101,97,100,54,52,0,119,114,105,116,101,0,0,0,112,119,114,105,116,101,0,0,112,119,114,105,116,101,54,52,0,0,0,0,0,0,0,0,102,99,104,109,111,100,0,0,102,97,108,108,111,99,97,116,101,0,0,0,0,0,0,0,117,110,108,105,110,107,0,0,111,112,101,110,68,105,114,101,99,116,111,114,121,0,0,0,109,107,100,105,114,0,0,0,114,109,100,105,114,0,0,0,102,99,104,111,119,110,0,0,109,109,97,112,0,0,0,0,109,117,110,109,97,112,0,0,109,114,101,109, +97,112,0,0,103,101,116,112,97,103,101,115,105,122,101,0,0,0,0,0,97,116,116,101,109,112,116,32,116,111,32,111,112,101,110,32,34,37,115,34,32,97,115,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,32,37,100,0,0,0,0,0,0,47,100,101,118,47,110,117,108,108,0,0,0,0,0,0,0,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,48,49,50,51,52,53,54,55,56,57,0,0,37,115,47, +101,116,105,108,113,115,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,148,0,0,64,148,0,0,80,148,0,0,0,0,0,0,0,0,0,0,47,118,97,114,47,116,109,112,0,0,0,0,0,0,0,0,47,117,115,114,47,116,109,112,0,0,0,0,0,0,0,0,47,116,109,112,0,0,0,0,83,81,76,73,84,69,95,84,77,80,68,73,82,0,0,0,84,77,80,68,73,82,0,0,102,117,108,108,95,102,115,121,110,99,0,0,0,0,0,0,3,0,0,0,14,0,0,0,4,0,0,0,5,0,0,0,8,0,0,0,12,0,0,0,13,0,0,0,27,0,0,0,28,0,0,0,29,0,0,0,9,0,0,0,9,0,0,0,10,0,0,0,0,0,0,0,3,0,0,0,12,0,0,0,17,0,0,0,6,0,0,0,4,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,47,100,101,118,47,117,114,97,110,100,111,109,0,0,0,0,47,37,115,0,0,0,0,0,102,115,121,110,99,0,0,0,112,115,111,119,0,0,0,0,3,0,0,0,15,0,0,0,4,0,0,0,5,0,0,0,8,0,0,0,12,0,0,0,13,0,0,0,30,0,0,0,31,0,0,0,32,0,0,0,9,0,0,0,9,0,0,0,10,0,0,0,7,0,0,0,3,0,0,0,12,0,0,0,17,0,0,0,6,0,0,0,4,0,0,0,0,0,0,0,37,115,46,108,111,99,107,0,99,97,110,110,111,116,32,102,115,116,97,116,32,100,98,32,102,105,108,101,32,37,115,0,102,105,108,101,32,117,110,108,105,110,107,101,100,32,119,104,105,108,101, +32,111,112,101,110,58,32,37,115,0,0,0,0,109,117,108,116,105,112,108,101,32,108,105,110,107,115,32,116,111,32,102,105,108,101,58,32,37,115,0,0,0,0,0,0,102,105,108,101,32,114,101,110,97,109,101,100,32,119,104,105,108,101,32,111,112,101,110,58,32,37,115,0,0,0,0,0,0,0,0,0,0,0,0,0,37,115,45,115,104,109,0,0,114,101,97,100,111,110,108,121,95,115,104,109,0,0,0,0,37,0,0,0,0,0,0,0,100,10,1,1,0,0,115,0,4,6,0,0,103,0,1,4,30,0,122,0,4,7,0,0,113,0,4,10,0,0,81,0,4,11,0,0,119,0,4,15,0,0,99,0,0,9,0,0,111,8,0,1,0, +2,117,10,0,1,0,0,120,16,0,1,16,1,88,16,0,1,0,4,102,0,1,2,0,0,101,0,1,3,30,0,69,0,1,3,14,0,71,0,1,4,14,0,105,10,1,1,0,0,110,0,0,5,0,0,37,0,0,8,0,0,112,16,0,14,0,1,84,0,2,12,0,0,83,0,2,13,0,0,114,10,3,16,0,0,0,0,0,0,0,0,116,104,115,116,110,100,114,100,0,0,0,0,0,0,0,0,48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70,48,49,50,51,52,53,54,55,56,57,97,98,99,100,101,102,0,0,0,0,0,0,0,0,45,120,48,0,88,48,0,0,78,97,78,0,0,0,0,0,45,73,110,102,0,0,0,0,43,73,110,102,0,0,0,0,73,110,102,0,0,0,0,0,40,78,85,76,76, +41,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,254,255,255,127,0,0,0,0,128,0,0,0,244,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,73,83,65,66,76,69,95,76,70,83,0,0,0,0,0,73,78,84,54,52,95,84,89,80,69,0,0,0,0,0,0,79,77,73,84,95,76,79,65,68,95,69,88,84,69,78,83,73,79,78,0,0,0,0,0,83,89,83,84,69,77,95,77,65,76,76,79,67,0,0,0,84,72,82,69,65,68,83,65,70,69,61,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"i8",Ha,w.Ab+30721);var ib=w.ec(H(12,"i8",G),8);u(0==ib%8); +var O={$:1,ea:2,Ah:3,zg:4,Fa:5,Pc:6,Yf:7,Wg:8,N:9,kg:10,bb:11,Kh:11,Td:12,tb:13,ug:14,ih:15,Ea:16,Nc:17,Vd:18,ub:19,cb:20,Oa:21,B:22,Rg:23,Sd:24,Ud:25,Hh:26,vg:27,eh:28,xb:29,wh:30,Kg:31,qh:32,rg:33,Qc:34,$g:42,xg:43,lg:44,Bg:45,Cg:46,Dg:47,Jg:48,Ih:49,Ug:50,Ag:51,pg:35,Xg:37,cg:52,fg:53,Lh:54,Sg:55,gg:56,hg:57,qg:35,ig:59,gh:60,Vg:61,Eh:62,fh:63,ah:64,bh:65,vh:66,Yg:67,ag:68,Bh:69,mg:70,rh:71,Mg:72,sg:73,eg:74,mh:76,dg:77,uh:78,Eg:79,Fg:80,Ig:81,Hg:82,Gg:83,hh:38,ac:39,Ng:36,$b:40,wb:95,ph:96,og:104, +Tg:105,bg:97,th:91,kh:88,dh:92,yh:108,Mc:111,Zf:98,ng:103,Qg:101,Og:100,Fh:110,wg:112,Oc:113,Qd:115,Od:114,Pd:89,Lg:90,sh:93,zh:94,$f:99,Pg:102,Rd:106,vb:107,Gh:109,Jh:87,tg:122,Ch:116,lh:95,Zg:123,yg:84,nh:75,jg:125,jh:131,oh:130,Dh:86},jb={"0":"Success",1:"Not super-user",2:"No such file or directory",3:"No such process",4:"Interrupted system call",5:"I/O error",6:"No such device or address",7:"Arg list too long",8:"Exec format error",9:"Bad file number",10:"No children",11:"No more processes", +12:"Not enough core",13:"Permission denied",14:"Bad address",15:"Block device required",16:"Mount device busy",17:"File exists",18:"Cross-device link",19:"No such device",20:"Not a directory",21:"Is a directory",22:"Invalid argument",23:"Too many open files in system",24:"Too many open files",25:"Not a typewriter",26:"Text file busy",27:"File too large",28:"No space left on device",29:"Illegal seek",30:"Read only file system",31:"Too many links",32:"Broken pipe",33:"Math arg out of domain of func", +34:"Math result not representable",35:"File locking deadlock error",36:"File or path name too long",37:"No record locks available",38:"Function not implemented",39:"Directory not empty",40:"Too many symbolic links",42:"No message of desired type",43:"Identifier removed",44:"Channel number out of range",45:"Level 2 not synchronized",46:"Level 3 halted",47:"Level 3 reset",48:"Link number out of range",49:"Protocol driver not attached",50:"No CSI structure available",51:"Level 2 halted",52:"Invalid exchange", +53:"Invalid request descriptor",54:"Exchange full",55:"No anode",56:"Invalid request code",57:"Invalid slot",59:"Bad font file fmt",60:"Device not a stream",61:"No data (for no delay io)",62:"Timer expired",63:"Out of streams resources",64:"Machine is not on the network",65:"Package not installed",66:"The object is remote",67:"The link has been severed",68:"Advertise error",69:"Srmount error",70:"Communication error on send",71:"Protocol error",72:"Multihop attempted",73:"Cross mount point (not really error)", +74:"Trying to read unreadable message",75:"Value too large for defined data type",76:"Given log. name not unique",77:"f.d. invalid for this operation",78:"Remote address changed",79:"Can access a needed shared lib",80:"Accessing a corrupted shared lib",81:".lib section in a.out corrupted",82:"Attempting to link in too many libs",83:"Attempting to exec a shared library",84:"Illegal byte sequence",86:"Streams pipe error",87:"Too many users",88:"Socket operation on non-socket",89:"Destination address required", +90:"Message too long",91:"Protocol wrong type for socket",92:"Protocol not available",93:"Unknown protocol",94:"Socket type not supported",95:"Not supported",96:"Protocol family not supported",97:"Address family not supported by protocol family",98:"Address already in use",99:"Address not available",100:"Network interface is not configured",101:"Network is unreachable",102:"Connection reset by network",103:"Connection aborted",104:"Connection reset by peer",105:"No buffer space available",106:"Socket is already connected", +107:"Socket is not connected",108:"Can't send after socket shutdown",109:"Too many references",110:"Connection timed out",111:"Connection refused",112:"Host is down",113:"Host is unreachable",114:"Socket already connected",115:"Connection already in progress",116:"Stale file handle",122:"Quota exceeded",123:"No medium (in tape drive)",125:"Operation canceled",130:"Previous owner died",131:"State not recoverable"},kb=0;function P(a){return E[kb>>2]=a} +function lb(a,b){for(var c=0,d=a.length-1;0<=d;d--){var f=a[d];"."===f?a.splice(d,1):".."===f?(a.splice(d,1),c++):c&&(a.splice(d,1),c--)}if(b)for(;c--;c)a.unshift("..");return a}function mb(a){var b="/"===a.charAt(0),c="/"===a.substr(-1),a=lb(a.split("/").filter(function(a){return!!a}),!b).join("/");!a&&!b&&(a=".");a&&c&&(a+="/");return(b?"/":"")+a} +function nb(a){var b=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(a).slice(1),a=b[0],b=b[1];if(!a&&!b)return".";b&&(b=b.substr(0,b.length-1));return a+b}function ob(a){if("/"===a)return"/";var b=a.lastIndexOf("/");return-1===b?a:a.substr(b+1)}function pb(){var a=Array.prototype.slice.call(arguments,0);return mb(a.join("/"))}function qb(a,b){return mb(a+"/"+b)} +function rb(){for(var a="",b=m,c=arguments.length-1;-1<=c&&!b;c--){b=0<=c?arguments[c]:z.Ib();"string"!==typeof b&&e(new TypeError("Arguments to path.resolve must be strings"));if(!b)return"";a=b+"/"+a;b="/"===b.charAt(0)}a=lb(a.split("/").filter(function(a){return!!a}),!b).join("/");return(b?"/":"")+a||"."} +function sb(a,b){function c(a){for(var b=0;bc?[]:a.slice(b,c-b+1)}for(var a=rb(a).substr(1),b=rb(b).substr(1),d=c(a.split("/")),f=c(b.split("/")),h=Math.min(d.length,f.length),i=h,j=0;ja.n.length)&&(a.n=Q.Te(a),a.C=a.n.length);if(!a.n||a.n.subarray){var c=a.n?a.n.buffer.byteLength:0;c>=b||(b=Math.max(b,c*(1048576>c?2:1.125)|0),0!=c&&(b=Math.max(b,256)),c=a.n,a.n=new Uint8Array(b),0b)a.n.length=b;else for(;a.n.length=a.k.C)return 0;a=Math.min(a.k.C-f,d);u(0<=a);if(8b&&e(new z.e(O.B));return b},fb:function(a,b,c){Q.md(a.k,b+c);a.k.C=Math.max(a.k.C,b+c)},Ra:function(a,b,c,d,f,h,i){z.isFile(a.k.mode)||e(new z.e(O.ub));c= +a.k.n;if(!(i&2)&&(c.buffer===b||c.buffer===b.buffer))a=m,d=c.byteOffset;else{if(0>>0)%z.ia.length},ud:function(a){var b=z.tc(a.parent.id,a.name);a.La=z.ia[b];z.ia[b]=a},vd:function(a){var b=z.tc(a.parent.id,a.name);if(z.ia[b]===a)z.ia[b]=a.La;else for(b=z.ia[b];b;){if(b.La===a){b.La=a.La;break}b=b.La}},sa:function(a,b){var c=z.mf(a);c&&e(new z.e(c,a));for(c=z.ia[z.tc(a.id,b)];c;c=c.La){var d=c.name;if(c.parent.id===a.id&&d===b)return c}return z.Pa(a,b)},createNode:function(a, +b,c,d){z.yb||(z.yb=function(a,b,c,d){a||(a=this);this.parent=a;this.O=a.O;this.mb=l;this.id=z.rf++;this.name=b;this.mode=c;this.o={};this.q={};this.pb=d},z.yb.prototype={},Object.defineProperties(z.yb.prototype,{W:{get:function(){return 365===(this.mode&365)},set:function(a){a?this.mode|=365:this.mode&=-366}},write:{get:function(){return 146===(this.mode&146)},set:function(a){a?this.mode|=146:this.mode&=-147}},gf:{get:function(){return z.U(this.mode)}},uc:{get:function(){return z.Qb(this.mode)}}})); +a=new z.yb(a,b,c,d);z.ud(a);return a},mc:function(a){z.vd(a)},Rb:function(a){return a===a.parent},Ia:function(a){return!!a.mb},isFile:function(a){return 32768===(a&61440)},U:function(a){return 16384===(a&61440)},lb:function(a){return 40960===(a&61440)},Qb:function(a){return 8192===(a&61440)},ef:function(a){return 24576===(a&61440)},ff:function(a){return 4096===(a&61440)},hf:function(a){return 49152===(a&49152)},Oe:{r:0,rs:1052672,"r+":2,w:577,wx:705,xw:705,"w+":578,"wx+":706,"xw+":706,a:1089,ax:1217, +xa:1217,"a+":1090,"ax+":1218,"xa+":1218},Cd:function(a){var b=z.Oe[a];"undefined"===typeof b&&e(Error("Unknown file open mode: "+a));return b},Pe:function(a){var b=["r","w","rw"][a&2097155];a&512&&(b+="w");return b},Ba:function(a,b){return z.wd?0:-1!==b.indexOf("r")&&!(a.mode&292)||-1!==b.indexOf("w")&&!(a.mode&146)||-1!==b.indexOf("x")&&!(a.mode&73)?O.tb:0},mf:function(a){var b=z.Ba(a,"x");return b?b:!a.o.Pa?O.tb:0},xc:function(a,b){try{return z.sa(a,b),O.Nc}catch(c){}return z.Ba(a,"wx")},Sb:function(a, +b,c){var d;try{d=z.sa(a,b)}catch(f){return f.Lb}if(a=z.Ba(a,"wx"))return a;if(c){if(!z.U(d.mode))return O.cb;if(z.Rb(d)||z.ra(d)===z.Ib())return O.Ea}else if(z.U(d.mode))return O.Oa;return 0},nf:function(a,b){return!a?O.ea:z.lb(a.mode)?O.$b:z.U(a.mode)&&(0!==(b&2097155)||b&512)?O.Oa:z.Ba(a,z.Pe(b))},Yd:4096,sf:function(a,b){for(var b=b||z.Yd,c=a||0;c<=b;c++)if(!z.Na[c])return c;e(new z.e(O.Sd))},T:function(a){return z.Na[a]},bd:function(a,b,c){z.zb||(z.zb=n(),z.zb.prototype={},Object.defineProperties(z.zb.prototype, +{object:{get:function(){return this.k},set:function(a){this.k=a}},Ji:{get:function(){return 1!==(this.D&2097155)}},Ki:{get:function(){return 0!==(this.D&2097155)}},Ii:{get:function(){return this.D&1024}}}));var d=new z.zb,f;for(f in a)d[f]=a[f];a=d;b=z.sf(b,c);a.I=b;return z.Na[b]=a},ve:function(a){z.Na[a]=l},Fi:function(a){return z.Na[a-1]},sc:function(a){return a?a.I+1:0},ue:{open:function(a){a.q=z.Se(a.k.pb).q;a.q.open&&a.q.open(a)},ga:function(){e(new z.e(O.xb))}},wc:function(a){return a>>8}, +Ri:function(a){return a&255},Ka:function(a,b){return a<<8|b},Cc:function(a,b){z.gd[a]={q:b}},Se:function(a){return z.gd[a]},pd:function(a){for(var b=[],a=[a];a.length;){var c=a.pop();b.push(c);a.push.apply(a,c.nb)}return b},Kd:function(a,b){function c(a){if(a){if(!c.Ke)return c.Ke=k,b(a)}else++f>=d.length&&b(l)}"function"===typeof a&&(b=a,a=m);var d=z.pd(z.root.O),f=0;d.forEach(function(b){if(!b.type.Kd)return c(l);b.type.Kd(b,a,c)})},O:function(a,b,c){var d="/"===c,f=!c,h;d&&z.root&&e(new z.e(O.Ea)); +!d&&!f&&(h=z.G(c,{pc:m}),c=h.path,h=h.k,z.Ia(h)&&e(new z.e(O.Ea)),z.U(h.mode)||e(new z.e(O.cb)));b={type:a,Ti:b,of:c,nb:[]};a=a.O(b);a.O=b;b.root=a;d?z.root=a:h&&(h.mb=b,h.O&&h.O.nb.push(b));return a},Zi:function(a){a=z.G(a,{pc:m});z.Ia(a.k)||e(new z.e(O.B));var a=a.k,b=a.mb,c=z.pd(b);Object.keys(z.ia).forEach(function(a){for(a=z.ia[a];a;){var b=a.La;-1!==c.indexOf(a.O)&&z.mc(a);a=b}});a.mb=l;b=a.O.nb.indexOf(b);u(-1!==b);a.O.nb.splice(b,1)},Pa:function(a,b){return a.o.Pa(a,b)},ha:function(a,b,c){var d= +z.G(a,{parent:k}).k,a=ob(a);(!a||"."===a||".."===a)&&e(new z.e(O.B));var f=z.xc(d,a);f&&e(new z.e(f));d.o.ha||e(new z.e(O.$));return d.o.ha(d,a,b,c)},create:function(a,b){b=(b!==g?b:438)&4095;b|=32768;return z.ha(a,b,0)},ta:function(a,b){b=(b!==g?b:511)&1023;b|=16384;return z.ha(a,b,0)},Tb:function(a,b,c){"undefined"===typeof c&&(c=b,b=438);return z.ha(a,b|8192,c)},va:function(a,b){rb(a)||e(new z.e(O.ea));var c=z.G(b,{parent:k}).k;c||e(new z.e(O.ea));var d=ob(b),f=z.xc(c,d);f&&e(new z.e(f));c.o.va|| +e(new z.e(O.$));return c.o.va(c,d,a)},rename:function(a,b){var c=nb(a),d=nb(b),f=ob(a),h=ob(b),i,j,x;try{i=z.G(a,{parent:k}),j=i.k,i=z.G(b,{parent:k}),x=i.k}catch(p){e(new z.e(O.Ea))}(!j||!x)&&e(new z.e(O.ea));j.O!==x.O&&e(new z.e(O.Vd));i=z.sa(j,f);d=sb(a,d);"."!==d.charAt(0)&&e(new z.e(O.B));d=sb(b,c);"."!==d.charAt(0)&&e(new z.e(O.ac));var A;try{A=z.sa(x,h)}catch(t){}if(i!==A){c=z.U(i.mode);(f=z.Sb(j,f,c))&&e(new z.e(f));(f=A?z.Sb(x,h,c):z.xc(x,h))&&e(new z.e(f));j.o.rename||e(new z.e(O.$));(z.Ia(i)|| +A&&z.Ia(A))&&e(new z.e(O.Ea));x!==j&&(f=z.Ba(j,"w"))&&e(new z.e(f));try{z.Q.willMovePath&&z.Q.willMovePath(a,b)}catch(B){console.log("FS.trackingDelegate['willMovePath']('"+a+"', '"+b+"') threw an exception: "+B.message)}z.vd(i);try{j.o.rename(i,x,h)}catch(I){e(I)}finally{z.ud(i)}try{if(z.Q.onMovePath)z.Q.onMovePath(a,b)}catch(ca){console.log("FS.trackingDelegate['onMovePath']('"+a+"', '"+b+"') threw an exception: "+ca.message)}}},Va:function(a){var b=z.G(a,{parent:k}).k,c=ob(a),d=z.sa(b,c),f=z.Sb(b, +c,k);f&&e(new z.e(f));b.o.Va||e(new z.e(O.$));z.Ia(d)&&e(new z.e(O.Ea));try{z.Q.willDeletePath&&z.Q.willDeletePath(a)}catch(h){console.log("FS.trackingDelegate['willDeletePath']('"+a+"') threw an exception: "+h.message)}b.o.Va(b,c);z.mc(d);try{if(z.Q.onDeletePath)z.Q.onDeletePath(a)}catch(i){console.log("FS.trackingDelegate['onDeletePath']('"+a+"') threw an exception: "+i.message)}},qb:function(a){a=z.G(a,{ca:k}).k;a.o.qb||e(new z.e(O.cb));return a.o.qb(a)},Da:function(a){var b=z.G(a,{parent:k}).k, +c=ob(a),d=z.sa(b,c),f=z.Sb(b,c,m);f&&(f===O.Oa&&(f=O.$),e(new z.e(f)));b.o.Da||e(new z.e(O.$));z.Ia(d)&&e(new z.e(O.Ea));try{z.Q.willDeletePath&&z.Q.willDeletePath(a)}catch(h){console.log("FS.trackingDelegate['willDeletePath']('"+a+"') threw an exception: "+h.message)}b.o.Da(b,c);z.mc(d);try{if(z.Q.onDeletePath)z.Q.onDeletePath(a)}catch(i){console.log("FS.trackingDelegate['onDeletePath']('"+a+"') threw an exception: "+i.message)}},Ta:function(a){(a=z.G(a).k)||e(new z.e(O.ea));a.o.Ta||e(new z.e(O.B)); +return a.o.Ta(a)},Ic:function(a,b){var c=z.G(a,{ca:!b}).k;c||e(new z.e(O.ea));c.o.fa||e(new z.e(O.$));return c.o.fa(c)},kf:function(a){return z.Ic(a,k)},hb:function(a,b,c){a="string"===typeof a?z.G(a,{ca:!c}).k:a;a.o.R||e(new z.e(O.$));a.o.R(a,{mode:b&4095|a.mode&-4096,timestamp:Date.now()})},Mi:function(a,b){z.hb(a,b,k)},Me:function(a,b){var c=z.T(a);c||e(new z.e(O.N));z.hb(c.k,b)},kc:function(a,b,c,d){a="string"===typeof a?z.G(a,{ca:!d}).k:a;a.o.R||e(new z.e(O.$));a.o.R(a,{timestamp:Date.now()})}, +Ni:function(a,b,c){z.kc(a,b,c,k)},Ne:function(a,b,c){(a=z.T(a))||e(new z.e(O.N));z.kc(a.k,b,c)},truncate:function(a,b){0>b&&e(new z.e(O.B));var c;c="string"===typeof a?z.G(a,{ca:k}).k:a;c.o.R||e(new z.e(O.$));z.U(c.mode)&&e(new z.e(O.Oa));z.isFile(c.mode)||e(new z.e(O.B));var d=z.Ba(c,"w");d&&e(new z.e(d));c.o.R(c,{size:b,timestamp:Date.now()})},Re:function(a,b){var c=z.T(a);c||e(new z.e(O.N));0===(c.D&2097155)&&e(new z.e(O.B));z.truncate(c.k,b)},Qf:function(a,b,c){a=z.G(a,{ca:k}).k;a.o.R(a,{timestamp:Math.max(b, +c)})},open:function(a,b,c,d,f){""===a&&e(new z.e(O.ea));var b="string"===typeof b?z.Cd(b):b,c=b&64?("undefined"===typeof c?438:c)&4095|32768:0,h;if("object"===typeof a)h=a;else{a=mb(a);try{h=z.G(a,{ca:!(b&131072)}).k}catch(i){}}var j=m;b&64&&(h?b&128&&e(new z.e(O.Nc)):(h=z.ha(a,c,0),j=k));h||e(new z.e(O.ea));z.Qb(h.mode)&&(b&=-513);j||(c=z.nf(h,b))&&e(new z.e(c));b&512&&z.truncate(h,0);b&=-641;d=z.bd({k:h,path:z.ra(h),D:b,seekable:k,position:0,q:h.q,Pf:[],error:m},d,f);d.q.open&&d.q.open(d);r.logReadFiles&& +!(b&1)&&(z.Ac||(z.Ac={}),a in z.Ac||(z.Ac[a]=1,r.printErr("read file: "+a)));try{z.Q.onOpenFile&&(f=0,1!==(b&2097155)&&(f|=z.Ld.Ed.Zd),0!==(b&2097155)&&(f|=z.Ld.Ed.de),z.Q.onOpenFile(a,f))}catch(x){console.log("FS.trackingDelegate['onOpenFile']('"+a+"', flags) threw an exception: "+x.message)}return d},close:function(a){try{a.q.close&&a.q.close(a)}catch(b){e(b)}finally{z.ve(a.I)}},ga:function(a,b,c){(!a.seekable||!a.q.ga)&&e(new z.e(O.xb));a.position=a.q.ga(a,b,c);a.Pf=[];return a.position},W:function(a, +b,c,d,f){(0>d||0>f)&&e(new z.e(O.B));1===(a.D&2097155)&&e(new z.e(O.N));z.U(a.k.mode)&&e(new z.e(O.Oa));a.q.W||e(new z.e(O.B));var h=k;"undefined"===typeof f?(f=a.position,h=m):a.seekable||e(new z.e(O.xb));b=a.q.W(a,b,c,d,f);h||(a.position+=b);return b},write:function(a,b,c,d,f,h){(0>d||0>f)&&e(new z.e(O.B));0===(a.D&2097155)&&e(new z.e(O.N));z.U(a.k.mode)&&e(new z.e(O.Oa));a.q.write||e(new z.e(O.B));a.D&1024&&z.ga(a,0,2);var i=k;"undefined"===typeof f?(f=a.position,i=m):a.seekable||e(new z.e(O.xb)); +b=a.q.write(a,b,c,d,f,h);i||(a.position+=b);try{if(a.path&&z.Q.onWriteToFile)z.Q.onWriteToFile(a.path)}catch(j){console.log("FS.trackingDelegate['onWriteToFile']('"+path+"') threw an exception: "+j.message)}return b},fb:function(a,b,c){(0>b||0>=c)&&e(new z.e(O.B));0===(a.D&2097155)&&e(new z.e(O.N));!z.isFile(a.k.mode)&&!z.U(node.mode)&&e(new z.e(O.ub));a.q.fb||e(new z.e(O.wb));a.q.fb(a,b,c)},Ra:function(a,b,c,d,f,h,i){1===(a.D&2097155)&&e(new z.e(O.tb));a.q.Ra||e(new z.e(O.ub));return a.q.Ra(a,b, +c,d,f,h,i)},kb:function(a,b,c){a.q.kb||e(new z.e(O.Ud));return a.q.kb(a,b,c)},Ef:function(a,b){b=b||{};b.D=b.D||"r";b.encoding=b.encoding||"binary";"utf8"!==b.encoding&&"binary"!==b.encoding&&e(Error('Invalid encoding type "'+b.encoding+'"'));var c,d=z.open(a,b.D),f=z.Ic(a).size,h=new Uint8Array(f);z.W(d,h,0,f,0);if("utf8"===b.encoding){c="";for(var i=new w.eb,j=0;j>2]=z.sc(a);u(0===a.I,"invalid handle for stdin ("+a.I+")");a=z.open("/dev/stdout","w");E[Ab>>2]=z.sc(a);u(1===a.I,"invalid handle for stdout ("+a.I+")");a=z.open("/dev/stderr","w");E[Bb>>2]=z.sc(a);u(2===a.I,"invalid handle for stderr ("+a.I+")")},jd:function(){z.e|| +(z.e=function(a,b){this.k=b;this.Id=function(a){this.Lb=a;for(var b in O)if(O[b]===a){this.code=b;break}};this.Id(a);this.message=jb[a]},z.e.prototype=Error(),[O.ea].forEach(function(a){z.rc[a]=new z.e(a);z.rc[a].stack=""}))},Nf:function(){z.jd();z.ia=Array(4096);z.O(Q,{},"/");z.xe();z.we()},jb:function(a,b,c){u(!z.jb.Pb,"FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)"); +z.jb.Pb=k;z.jd();r.stdin=a||r.stdin;r.stdout=b||r.stdout;r.stderr=c||r.stderr;z.Fe()},Cf:function(){z.jb.Pb=m;for(var a=0;a +this.length-1||0>a)){var b=a%this.Db;return this.Ze(a/this.Db|0)[b]}};h.prototype.Kf=function(a){this.Ze=a};h.prototype.Zc=function(){var a=new XMLHttpRequest;a.open("HEAD",c,m);a.send(l);200<=a.status&&300>a.status||304===a.status||e(Error("Couldn't load "+c+". Status: "+a.status));var b=Number(a.getResponseHeader("Content-length")),d,f=1048576;if(!((d=a.getResponseHeader("Accept-Ranges"))&&"bytes"===d))f=b;var h=this;h.Kf(function(a){var d=a*f,i=(a+1)*f-1,i=Math.min(i,b-1);if("undefined"===typeof h.Eb[a]){var j= +h.Eb;d>i&&e(Error("invalid range ("+d+", "+i+") or no bytes requested!"));i>b-1&&e(Error("only "+b+" bytes available! programmer error!"));var p=new XMLHttpRequest;p.open("GET",c,m);b!==f&&p.setRequestHeader("Range","bytes="+d+"-"+i);"undefined"!=typeof Uint8Array&&(p.responseType="arraybuffer");p.overrideMimeType&&p.overrideMimeType("text/plain; charset=x-user-defined");p.send(l);200<=p.status&&300>p.status||304===p.status||e(Error("Couldn't load "+c+". Status: "+p.status));d=p.response!==g?new Uint8Array(p.response|| +[]):N(p.responseText||"",k);j[a]=d}"undefined"===typeof h.Eb[a]&&e(Error("doXHR failed!"));return h.Eb[a]});this.fe=b;this.ee=f;this.vc=k};if("undefined"!==typeof XMLHttpRequest){ea||e("Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc");var i=new h;Object.defineProperty(i,"length",{get:function(){this.vc||this.Zc();return this.fe}});Object.defineProperty(i,"chunkSize",{get:function(){this.vc||this.Zc();return this.ee}});i={uc:m,n:i}}else i= +{uc:m,url:c};var j=z.ye(a,b,i,d,f);i.n?j.n=i.n:i.url&&(j.n=l,j.url=i.url);Object.defineProperty(j,"usedBytes",{get:function(){return this.n.length}});var x={};Object.keys(j.q).forEach(function(a){var b=j.q[a];x[a]=function(){z.nd(j)||e(new z.e(O.Fa));return b.apply(l,arguments)}});x.W=function(a,b,c,d,f){z.nd(j)||e(new z.e(O.Fa));a=a.k.n;if(f>=a.length)return 0;d=Math.min(a.length-f,d);u(0<=d);if(a.slice)for(var h=0;h>h-6&63,h=h-6,c=c+"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[p]}2==h?(c+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[(d&3)<<4],c+="=="):4==h&&(c+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[(d&15)<<2],c+="="); +t.src="data:audio/x-"+b.substr(-3)+";base64,"+c;f(t)}};t.src=j;r.noExitRuntime=k;setTimeout(function(){pa||f(t)},1E4)}else return h()}});var B=r.canvas;B&&(B.Dc=B.requestPointerLock||B.mozRequestPointerLock||B.webkitRequestPointerLock||B.msRequestPointerLock||n(),B.ld=document.exitPointerLock||document.mozExitPointerLock||document.webkitExitPointerLock||document.msExitPointerLock||n(),B.ld=B.ld.bind(document),document.addEventListener("pointerlockchange",p,m),document.addEventListener("mozpointerlockchange", +p,m),document.addEventListener("webkitpointerlockchange",p,m),document.addEventListener("mspointerlockchange",p,m),r.elementPointerLock&&B.addEventListener("click",function(a){!Cb&&B.Dc&&(B.Dc(),a.preventDefault())},m))}var I=b?rb(qb(a,b)):a;fb();"string"==typeof c?Ib(c,function(a){A(a)},i):A(c)},indexedDB:function(){return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB},Kc:function(){return"EM_FS_"+window.location.pathname},Lc:20,$a:"FILE_DATA",Vi:function(a,b, +c){var b=b||n(),c=c||n(),d=z.indexedDB();try{var f=d.open(z.Kc(),z.Lc)}catch(h){return c(h)}f.wf=function(){console.log("creating db");f.result.createObjectStore(z.$a)};f.onsuccess=function(){var d=f.result.transaction([z.$a],"readwrite"),h=d.objectStore(z.$a),x=0,p=0,A=a.length;a.forEach(function(a){a=h.put(z.ic(a).object.n,a);a.onsuccess=function(){x++;x+p==A&&(0==p?b():c())};a.onerror=function(){p++;x+p==A&&(0==p?b():c())}});d.onerror=c};f.onerror=c},Pi:function(a,b,c){var b=b||n(),c=c||n(),d= +z.indexedDB();try{var f=d.open(z.Kc(),z.Lc)}catch(h){return c(h)}f.wf=c;f.onsuccess=function(){var d=f.result;try{var h=d.transaction([z.$a],"readonly")}catch(x){c(x);return}var p=h.objectStore(z.$a),A=0,t=0,B=a.length;a.forEach(function(a){var d=p.get(a);d.onsuccess=function(){z.ic(a).oc&&z.Da(a);z.Gb(nb(a),ob(a),d.result,k,k,k);A++;A+t==B&&(0==t?b():c())};d.onerror=function(){t++;A+t==B&&(0==t?b():c())}});h.onerror=c};f.onerror=c}};r._i64Subtract=Jb;r._memset=Kb; +function Lb(a,b,c){a="string"!==typeof a?y(a):a;try{var d=c?z.kf(a):z.Ic(a);E[b>>2]=d.He;E[b+4>>2]=0;E[b+8>>2]=d.xd;E[b+12>>2]=d.mode;E[b+16>>2]=d.tf;E[b+20>>2]=d.uid;E[b+24>>2]=d.$e;E[b+28>>2]=d.pb;E[b+32>>2]=0;E[b+36>>2]=d.size;E[b+40>>2]=4096;E[b+44>>2]=d.se;E[b+48>>2]=d.ke.getTime()/1E3|0;E[b+52>>2]=0;E[b+56>>2]=d.pf.getTime()/1E3|0;E[b+60>>2]=0;E[b+64>>2]=d.Ge.getTime()/1E3|0;E[b+68>>2]=0;E[b+72>>2]=d.xd;return 0}catch(f){return f.k&&mb(a)!==mb(z.ra(f.k))&&f.Id(O.cb),z.F(f),-1}} +r._bitshift64Shl=Mb;function Nb(a){a/=1E3;if((da||ea)&&self.performance&&self.performance.now)for(var b=self.performance.now();self.performance.now()-b>8,a.Ya&255]));return b},Ob:function(a,b,c){return a.ob[b+":"+c]},Wc:function(a,b){a.ob[b.ma+":"+b.port]=b},Hd:function(a,b){delete a.ob[b.ma+ +":"+b.port]},cf:function(a,b){function c(){r.websocket.aa("open",a.J.I);try{for(var c=b.Jb.shift();c;)b.p.send(c),c=b.Jb.shift()}catch(d){b.p.close()}}function d(c){u("string"!==typeof c&&c.byteLength!==g);var c=new Uint8Array(c),d=f;f=m;d&&10===c.length&&255===c[0]&&255===c[1]&&255===c[2]&&255===c[3]&&112===c[4]&&111===c[5]&&114===c[6]&&116===c[7]?(c=c[8]<<8|c[9],R.X.Hd(a,b),b.port=c,R.X.Wc(a,b)):(a.Ua.push({ma:b.ma,port:b.port,data:c}),r.websocket.aa("message",a.J.I))}var f=k;s?(b.p.on("open",c), +b.p.on("message",function(a,b){b.binary&&d((new Uint8Array(a)).buffer)}),b.p.on("close",function(){r.websocket.aa("close",a.J.I)}),b.p.on("error",function(){a.error=O.Mc;r.websocket.aa("error",[a.J.I,a.error,"ECONNREFUSED: Connection refused"])})):(b.p.onopen=c,b.p.onclose=function(){r.websocket.aa("close",a.J.I)},b.p.onmessage=function(a){d(a.data)},b.p.onerror=function(){a.error=O.Mc;r.websocket.aa("error",[a.J.I,a.error,"ECONNREFUSED: Connection refused"])})},Fd:function(a){if(1===a.type&&a.P)return a.yc.length? +65:0;var b=0,c=1===a.type?R.X.Ob(a,a.oa,a.pa):l;if(a.Ua.length||!c||c&&c.p.readyState===c.p.sb||c&&c.p.readyState===c.p.CLOSED)b|=65;if(!c||c&&c.p.readyState===c.p.OPEN)b|=4;if(c&&c.p.readyState===c.p.sb||c&&c.p.readyState===c.p.CLOSED)b|=16;return b},kb:function(a,b,c){switch(b){case 21531:return b=0,a.Ua.length&&(b=a.Ua[0].data.length),E[c>>2]=b,0;default:return O.B}},close:function(a){if(a.P){try{a.P.close()}catch(b){}a.P=l}for(var c=Object.keys(a.ob),d=0;d=mc;)mc+=1E3/60;b=Math.max(mc-b,0);setTimeout(a,b)}function ac(a){"undefined"===typeof window?nc(a):(window.requestAnimationFrame||(window.requestAnimationFrame=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame||window.oRequestAnimationFrame||nc),window.requestAnimationFrame(a))} +function Hb(a){return{jpg:"image/jpeg",jpeg:"image/jpeg",png:"image/png",bmp:"image/bmp",ogg:"audio/ogg",wav:"audio/wav",mp3:"audio/mpeg"}[a.substr(a.lastIndexOf(".")+1)]} +function Ib(a,b,c){function d(){c?c():e('Loading data file "'+a+'" failed.')}var f=new XMLHttpRequest;f.open("GET",a,k);f.responseType="arraybuffer";f.onload=function(){if(200==f.status||0==f.status&&f.response){var c=f.response;u(c,'Loading data file "'+a+'" failed (no arrayBuffer).');b(new Uint8Array(c));gb()}else d()};f.onerror=d;f.send(l);fb()}var oc=[];function pc(){var a=r.canvas;oc.forEach(function(b){b(a.width,a.height)})} +function qc(a,b,c){b&&c?(a.Rf=b,a.df=c):(b=a.Rf,c=a.df);var d=b,f=c;r.forcedAspectRatio&&0>2]=60*-(new Date).getTimezoneOffset();var b=new Date(2E3,0,1),c=new Date(2E3,6,1);E[tc>>2]=Number(b.getTimezoneOffset()!=c.getTimezoneOffset());var d=a(b),f=a(c),d=H(N(d),"i8",F),f=H(N(f),"i8",F);c.getTimezoneOffset()>2]=d,E[sc+4>>2]=f):(E[sc>>2]=f,E[sc+4>>2]=d)}} +function wc(a,b){vc();var c=new Date(1E3*E[a>>2]);E[b>>2]=c.getSeconds();E[b+4>>2]=c.getMinutes();E[b+8>>2]=c.getHours();E[b+12>>2]=c.getDate();E[b+16>>2]=c.getMonth();E[b+20>>2]=c.getFullYear()-1900;E[b+24>>2]=c.getDay();var d=new Date(c.getFullYear(),0,1);E[b+28>>2]=(c.getTime()-d.getTime())/864E5|0;E[b+36>>2]=-(60*c.getTimezoneOffset());c=c.getTimezoneOffset()==Math.min(d.getTimezoneOffset(),(new Date(2E3,6,1)).getTimezoneOffset())|0;E[b+32>>2]=c;E[b+40>>2]=E[sc+(c?w.wa:0)>>2];return b} +r._bitshift64Lshr=xc;function yc(a,b,c){a=z.T(a);if(!a)return P(O.N),-1;try{return z.W(a,D,b,c)}catch(d){return z.F(d),-1}}var zc=H(1,"i32*",G); +function Ac(a){var b,c;Ac.gb?(c=E[zc>>2],b=E[c>>2]):(Ac.gb=k,S.USER="web_user",S.PATH="/",S.PWD="/",S.HOME="/home/web_user",S.LANG="C",S._=r.thisProgram,b=H(1024,"i8",G),c=H(256,"i8*",G),E[c>>2]=b,E[zc>>2]=c);var d=[],f=0,h;for(h in a)if("string"===typeof a[h]){var i=h+"="+a[h];d.push(i);f+=i.length}1024>2]=b,b+=i.length+1;E[c+4*d.length>>2]=0}var S={}; +function Bc(a){if(0===a)return 0;a=y(a);if(!S.hasOwnProperty(a))return 0;Bc.Ec&&Ka(Bc.Ec);Bc.Ec=H(N(S[a]),"i8",F);return Bc.Ec}r._memcpy=Cc;function Dc(a){Dc.gb||(C=C+4095&-4096,Dc.gb=k,u(w.Kb),Dc.he=w.Kb,w.Kb=function(){ma("cannot dynamically allocate, sbrk now has control")});var b=C;0!=a&&Dc.he(a);return b}r._memmove=Ec;function Fc(a,b,c){if(a in jb){if(jb[a].length>c-1)return P(O.Qc);bb(jb[a],b);return 0}return P(O.B)} +function Gc(a){Gc.buffer||(Gc.buffer=Ia(256));Fc(a,Gc.buffer,256);return Gc.buffer}function Hc(a,b,c,d,f,h){var i,j=m;Hc.Qa||(Hc.Qa={});if(-1==f){i=Ia(b);if(!i)return-1;Kb(i,0,b);j=k}else{f=z.T(f);if(!f)return-1;try{var x=z.Ra(f,K,a,b,h,c,d);i=x.Af;j=x.fc}catch(p){return z.F(p),-1}}Hc.Qa[i]={lf:i,vf:b,fc:j};return i}z.Nf();Va.unshift({Ha:function(){!r.noFSInit&&!z.jb.Pb&&z.jb()}});Wa.push({Ha:function(){z.wd=m}});Xa.push({Ha:function(){z.Cf()}});r.FS_createFolder=z.ze;r.FS_createPath=z.Ce; +r.FS_createDataFile=z.Gb;r.FS_createPreloadedFile=z.De;r.FS_createLazyFile=z.Ae;r.FS_createLink=z.Be;r.FS_createDevice=z.na;kb=w.Jd(4);E[kb>>2]=0;Va.unshift({Ha:n()});Xa.push({Ha:n()});var wb=new w.eb;s&&(require("fs"),process.platform.match(/^win/));Va.push({Ha:function(){R.root=z.O(R,{},l)}}); +r.requestFullScreen=function(a,b){function c(){ic=m;var a=d.parentNode;(document.webkitFullScreenElement||document.webkitFullscreenElement||document.mozFullScreenElement||document.mozFullscreenElement||document.fullScreenElement||document.fullscreenElement||document.msFullScreenElement||document.msFullscreenElement||document.webkitCurrentFullScreenElement)===a?(d.$c=document.cancelFullScreen||document.mozCancelFullScreen||document.webkitCancelFullScreen||document.msExitFullscreen||document.exitFullscreen|| +n(),d.$c=d.$c.bind(document),kc&&d.Dc(),ic=k,lc&&("undefined"!=typeof SDL&&(a=Na[SDL.screen+0*w.wa>>2],E[SDL.screen+0*w.wa>>2]=a|8388608),pc())):(a.parentNode.insertBefore(d,a),a.parentNode.removeChild(a),lc&&("undefined"!=typeof SDL&&(a=Na[SDL.screen+0*w.wa>>2],E[SDL.screen+0*w.wa>>2]=a&-8388609),pc()));if(r.onFullScreen)r.onFullScreen(ic);qc(d)}kc=a;lc=b;"undefined"===typeof kc&&(kc=k);"undefined"===typeof lc&&(lc=m);var d=r.canvas;jc||(jc=k,document.addEventListener("fullscreenchange",c,m),document.addEventListener("mozfullscreenchange", +c,m),document.addEventListener("webkitfullscreenchange",c,m),document.addEventListener("MSFullscreenChange",c,m));var f=document.createElement("div");d.parentNode.insertBefore(f,d);f.appendChild(d);f.Hf=f.requestFullScreen||f.mozRequestFullScreen||f.msRequestFullscreen||(f.webkitRequestFullScreen?function(){f.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT)}:l);f.Hf()};r.requestAnimationFrame=function(a){ac(a)};r.setCanvasSize=function(a,b,c){qc(r.canvas,a,b);c||pc()}; +r.pauseMainLoop=function(){Yb=l;dc++};r.resumeMainLoop=function(){dc++;var a=Vb,b=Wb,c=Xb;Xb=l;bc(c,0,m,cc);Ub(a,b)};r.getUserMedia=function(){window.sd||(window.sd=navigator.getUserMedia||navigator.mozGetUserMedia);window.sd(g)};Ac(S);Pa=v=w.ec(na);Qa=Pa+Sa;Ra=C=w.ec(Qa);u(Ra>2],c+=E[b+12>>2]/1E3):c=Date.now();a=y(a);try{return z.Qf(a,c,c),0}catch(d){return z.F(d),-1}},_getuid:Qb,_send:function(a,b,c){return!R.rd(a)?(P(O.N),-1):Sb(a,b,c)},_getcwd:function(a,b){if(0==b)return P(O.B),0;var c=z.Ib();if(b>2];if(0>b)return P(O.B),-1;var d;try{d=z.open(a.path,a.D,0,b)}catch(f){return z.F(f), +-1}return d.I;case 1:case 2:return 0;case 3:return a.D;case 4:return b=E[c>>2],a.D|=b,0;case 12:case 12:return b=E[c>>2],za[b+0>>1]=2,0;case 13:case 14:case 13:case 14:return 0;case 8:case 9:return P(O.B),-1;default:return P(O.B),-1}},___buildEnvironment:Ac,_fflush:n(),_pwrite:function(a,b,c,d){a=z.T(a);if(!a)return P(O.N),-1;try{return z.write(a,D,b,c,d)}catch(f){return z.F(f),-1}},_strerror_r:Fc,_localtime_r:wc,_tzset:vc,_open:function(a,b,c){c=E[c>>2];a=y(a);try{return z.open(a,b,c).I}catch(d){return z.F(d), +-1}},_getpid:function(){return 42},_sbrk:Dc,_usleep:Nb,_emscripten_memcpy_big:function(a,b,c){K.set(K.subarray(b,b+c),a);return a},_unlink:function(a){a=y(a);try{return z.Da(a),0}catch(b){return z.F(b),-1}},_sysconf:function(a){switch(a){case 30:return 4096;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 80:case 81:case 79:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:return 200809; +case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32; +case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1E3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:return"object"===typeof navigator?navigator.hardwareConcurrency||1:1}P(O.B);return-1}, +_fchmod:function(a,b){try{return z.Me(a,b),0}catch(c){return z.F(c),-1}},___setErrNo:P,_ftruncate:function(a,b){try{return z.Re(a,b),0}catch(c){return z.F(c),-1}},_mkdir:function(a,b){a=y(a);a=mb(a);"/"===a[a.length-1]&&(a=a.substr(0,a.length-1));try{return z.ta(a,b,0),0}catch(c){return z.F(c),-1}},_pread:function(a,b,c,d){a=z.T(a);if(!a)return P(O.N),-1;try{return z.W(a,D,b,c,d)}catch(f){return z.F(f),-1}},_mkport:Rb,_write:Sb,_fsync:function(a){if(z.T(a))return 0;P(O.N);return-1},___errno_location:function(){return kb}, +_stat:Lb,_recv:function(a,b,c){return!R.rd(a)?(P(O.N),-1):yc(a,b,c)},_geteuid:function(){return Qb.apply(l,arguments)},_getenv:Bc,_sleep:function(a){return Nb(1E6*a)},_emscripten_set_main_loop:bc,_abort:function(){r.abort()},_time:function(a){var b=Date.now()/1E3|0;a&&(E[a>>2]=b);return b},_fchown:function(a,b,c){try{return z.Ne(a,b,c),0}catch(d){return z.F(d),-1}},_strerror:Gc,_gettimeofday:function(a){var b=Date.now();E[a>>2]=b/1E3|0;E[a+4>>2]=1E3*(b%1E3)|0;return 0},_munmap:function(a,b){Hc.Qa|| +(Hc.Qa={});var c=Hc.Qa[a];if(!c)return 0;b==c.vf&&(Hc.Qa[a]=l,c.fc&&Ka(c.lf));return 0},_mmap:Hc,_localtime:function(a){return wc(a,rc)},_close:function(a){a=z.T(a);if(!a)return P(O.N),-1;try{return z.close(a),0}catch(b){return z.F(b),-1}},_read:yc,_truncate:function(a,b){"string"!==typeof a&&(a=y(a));try{return z.truncate(a,b),0}catch(c){return z.F(c),-1}},STACKTOP:v,STACK_MAX:Qa,tempDoublePtr:ib,ABORT:pa,cttz_i8:Jc,ctlz_i8:Ic,NaN:NaN,Infinity:Infinity};// EMSCRIPTEN_START_ASM + +var T=(function(global,env,buffer) { +"use asm";var a=new global.Int8Array(buffer);var b=new global.Int16Array(buffer);var c=new global.Int32Array(buffer);var d=new global.Uint8Array(buffer);var e=new global.Uint16Array(buffer);var f=new global.Uint32Array(buffer);var g=new global.Float32Array(buffer);var h=new global.Float64Array(buffer);var i=env.STACKTOP|0;var j=env.STACK_MAX|0;var k=env.tempDoublePtr|0;var l=env.ABORT|0;var m=env.cttz_i8|0;var n=env.ctlz_i8|0;var o=0;var p=0;var q=0;var r=0;var s=+env.NaN,t=+env.Infinity;var u=0,v=0,w=0,x=0,y=0.0,z=0,A=0,B=0,C=0.0;var D=0;var E=0;var F=0;var G=0;var H=0;var I=0;var J=0;var K=0;var L=0;var M=0;var N=global.Math.floor;var O=global.Math.abs;var P=global.Math.sqrt;var Q=global.Math.pow;var R=global.Math.cos;var S=global.Math.sin;var T=global.Math.tan;var U=global.Math.acos;var V=global.Math.asin;var W=global.Math.atan;var X=global.Math.atan2;var Y=global.Math.exp;var Z=global.Math.log;var _=global.Math.ceil;var $=global.Math.imul;var aa=env.abort;var ba=env.assert;var ca=env.min;var da=env.invoke_iiii;var ea=env.invoke_i;var fa=env.invoke_vi;var ga=env.invoke_vii;var ha=env.invoke_iiiiiii;var ia=env.invoke_ii;var ja=env.invoke_viii;var ka=env.invoke_v;var la=env.invoke_iiiii;var ma=env.invoke_viiiiii;var na=env.invoke_iii;var oa=env.invoke_iiiiii;var pa=env.invoke_viiii;var qa=env._utimes;var ra=env._getuid;var sa=env._send;var ta=env._getcwd;var ua=env._mknod;var va=env._lseek;var wa=env._emscripten_set_main_loop_timing;var xa=env._access;var ya=env._fstat;var za=env._chmod;var Aa=env._rmdir;var Ba=env._chown;var Ca=env._fcntl;var Da=env.___buildEnvironment;var Ea=env._fflush;var Fa=env._pwrite;var Ga=env._strerror_r;var Ha=env._localtime_r;var Ia=env._tzset;var Ja=env._open;var Ka=env._getpid;var La=env._sbrk;var Ma=env._usleep;var Na=env._emscripten_memcpy_big;var Oa=env._unlink;var Pa=env._sysconf;var Qa=env._fchmod;var Ra=env.___setErrNo;var Sa=env._ftruncate;var Ta=env._mkdir;var Ua=env._pread;var Va=env._mkport;var Wa=env._write;var Xa=env._fsync;var Ya=env.___errno_location;var Za=env._stat;var _a=env._recv;var $a=env._geteuid;var ab=env._getenv;var bb=env._sleep;var cb=env._emscripten_set_main_loop;var db=env._abort;var eb=env._time;var fb=env._fchown;var gb=env._strerror;var hb=env._gettimeofday;var ib=env._munmap;var jb=env._mmap;var kb=env._localtime;var lb=env._close;var mb=env._read;var nb=env._truncate;var ob=0.0; +// EMSCRIPTEN_START_FUNCS +function Cb(a){a=a|0;var b=0;b=i;i=i+a|0;i=i+15&-16;return b|0}function Db(){return i|0}function Eb(a){a=a|0;i=a}function Fb(a,b){a=a|0;b=b|0;if(!o){o=a;p=b}}function Gb(b){b=b|0;a[k>>0]=a[b>>0];a[k+1>>0]=a[b+1>>0];a[k+2>>0]=a[b+2>>0];a[k+3>>0]=a[b+3>>0]}function Hb(b){b=b|0;a[k>>0]=a[b>>0];a[k+1>>0]=a[b+1>>0];a[k+2>>0]=a[b+2>>0];a[k+3>>0]=a[b+3>>0];a[k+4>>0]=a[b+4>>0];a[k+5>>0]=a[b+5>>0];a[k+6>>0]=a[b+6>>0];a[k+7>>0]=a[b+7>>0]}function Ib(a){a=a|0;D=a}function Jb(){return D|0}function Kb(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;e=i;i=i+16|0;d=e+12|0;f=e+8|0;g=e+4|0;h=e;c[f>>2]=b;if(!(Lb(c[f>>2]|0,16,7)|0))c[f>>2]=(c[f>>2]|0)+7;c[h>>2]=Mb(c[f>>2]|0)|0;c[g>>2]=0;while(1){if((c[g>>2]|0)>=5){b=9;break}if((Lb(c[f>>2]|0,c[24+(c[g>>2]<<2)>>2]|0,c[h>>2]|0)|0)==0?(Nb(a[(c[24+(c[g>>2]<<2)>>2]|0)+(c[h>>2]|0)>>0]|0)|0)==0:0){b=7;break}c[g>>2]=(c[g>>2]|0)+1}if((b|0)==7){c[d>>2]=1;h=c[d>>2]|0;i=e;return h|0}else if((b|0)==9){c[d>>2]=0;h=c[d>>2]|0;i=e;return h|0}return 0}function Lb(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;f=i;i=i+32|0;l=f+16|0;k=f+12|0;j=f+8|0;g=f+4|0;h=f;c[l>>2]=a;c[k>>2]=b;c[j>>2]=e;c[g>>2]=c[l>>2];c[h>>2]=c[k>>2];while(1){l=c[j>>2]|0;c[j>>2]=l+ -1;if((l|0)<=0)break;if(!(d[c[g>>2]>>0]|0))break;if((d[440+(d[c[g>>2]>>0]|0)>>0]|0|0)!=(d[440+(d[c[h>>2]>>0]|0)>>0]|0|0))break;c[g>>2]=(c[g>>2]|0)+1;c[h>>2]=(c[h>>2]|0)+1}if((c[j>>2]|0)<0){l=0;i=f;return l|0}l=(d[440+(d[c[g>>2]>>0]|0)>>0]|0)-(d[440+(d[c[h>>2]>>0]|0)>>0]|0)|0;i=f;return l|0}function Mb(b){b=b|0;var d=0,e=0,f=0,g=0;d=i;i=i+16|0;e=d+8|0;f=d+4|0;g=d;c[f>>2]=b;c[g>>2]=c[f>>2];if(!(c[f>>2]|0)){c[e>>2]=0;b=c[e>>2]|0;i=d;return b|0}while(1){b=c[g>>2]|0;if(!(a[c[g>>2]>>0]|0))break;c[g>>2]=b+1}c[e>>2]=1073741823&b-(c[f>>2]|0);b=c[e>>2]|0;i=d;return b|0}function Nb(b){b=b|0;var c=0,e=0;e=i;i=i+16|0;c=e;a[c>>0]=b;i=e;return((d[1224+(d[c>>0]|0)>>0]|0)&70|0)!=0|0}function Ob(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+16|0;d=b+4|0;e=b;c[e>>2]=a;if((c[e>>2]|0)>=0&(c[e>>2]|0)<5){c[d>>2]=c[24+(c[e>>2]<<2)>>2];e=c[d>>2]|0;i=b;return e|0}else{c[d>>2]=0;e=c[d>>2]|0;i=b;return e|0}return 0}function Pb(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;f=i;i=i+32|0;g=f+16|0;h=f+12|0;j=f+8|0;k=f+4|0;l=f;c[h>>2]=a;c[j>>2]=b;c[k>>2]=d;c[l>>2]=e;if((c[h>>2]|0)<0|(c[h>>2]|0)>=10){c[g>>2]=Qb(14581)|0;a=c[g>>2]|0;i=f;return a|0}c[c[j>>2]>>2]=c[48+(c[h>>2]<<2)>>2];c[c[k>>2]>>2]=c[88+(c[h>>2]<<2)>>2];if(c[l>>2]|0)c[88+(c[h>>2]<<2)>>2]=c[48+(c[h>>2]<<2)>>2];c[g>>2]=0;a=c[g>>2]|0;i=f;return a|0}function Qb(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+16|0;d=b;e=b+8|0;c[e>>2]=a;e=c[e>>2]|0;a=(vf()|0)+20|0;c[d>>2]=e;c[d+4>>2]=a;tc(21,3216,d);i=b;return 21}function Rb(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;i=i+16|0;d=b+8|0;e=b+4|0;f=b;c[d>>2]=a;c[e>>2]=0;while(1){if((c[e>>2]|0)>=(c[(c[d>>2]|0)+20>>2]|0))break;c[f>>2]=c[(c[(c[d>>2]|0)+16>>2]|0)+(c[e>>2]<<4)+4>>2];if(c[f>>2]|0)c[(c[(c[f>>2]|0)+4>>2]|0)+4>>2]=c[c[f>>2]>>2];c[e>>2]=(c[e>>2]|0)+1}i=b;return}function Sb(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;i=d;return c[c[(c[b>>2]|0)+4>>2]>>2]|0}function Tb(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;a=ub[c[38640+48>>2]&31](c[d>>2]|0)|0;i=b;return a|0}function Ub(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;if(!(c[f>>2]|0)){i=d;return}Bn(c[e>>2]|0,c[(c[f>>2]|0)+28>>2]|0);Xb(c[e>>2]|0,c[c[f>>2]>>2]|0);Xb(c[e>>2]|0,c[(c[f>>2]|0)+4>>2]|0);wn(c[e>>2]|0,c[(c[f>>2]|0)+12>>2]|0);xn(c[e>>2]|0,c[(c[f>>2]|0)+16>>2]|0);Xb(c[e>>2]|0,c[f>>2]|0);i=d;return}function Vb(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;f=i;i=i+32|0;g=f+16|0;h=f+12|0;j=f+8|0;l=f+4|0;k=f;c[g>>2]=a;c[h>>2]=d;if(!(c[h>>2]|0)){i=f;return}if(!((c[g>>2]|0)!=0?(c[(c[g>>2]|0)+520>>2]|0)!=0:0))e=4;if((e|0)==4?(d=(c[h>>2]|0)+40|0,a=(b[d>>1]|0)+ -1<<16>>16,b[d>>1]=a,(a&65535|0)>0):0){i=f;return}c[j>>2]=c[(c[h>>2]|0)+8>>2];while(1){if(!(c[j>>2]|0))break;c[l>>2]=c[(c[j>>2]|0)+20>>2];if(!((c[g>>2]|0)!=0?(c[(c[g>>2]|0)+520>>2]|0)!=0:0)){c[k>>2]=c[c[j>>2]>>2];gh((c[(c[j>>2]|0)+24>>2]|0)+24|0,c[k>>2]|0,0)|0}ly(c[g>>2]|0,c[j>>2]|0);c[j>>2]=c[l>>2]}Ey(c[g>>2]|0,c[h>>2]|0);hy(c[g>>2]|0,c[h>>2]|0);Xb(c[g>>2]|0,c[c[h>>2]>>2]|0);Xb(c[g>>2]|0,c[(c[h>>2]|0)+20>>2]|0);tn(c[g>>2]|0,c[(c[h>>2]|0)+12>>2]|0);sn(c[g>>2]|0,c[(c[h>>2]|0)+24>>2]|0);Fy(c[g>>2]|0,c[h>>2]|0);Xb(c[g>>2]|0,c[h>>2]|0);i=f;return}function Wb(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,j=0,k=0,l=0;h=i;i=i+32|0;g=h+16|0;f=h+12|0;k=h+8|0;l=h+4|0;j=h;c[g>>2]=a;c[f>>2]=d;hu(c[(c[f>>2]|0)+60>>2]|0,b[(c[f>>2]|0)+68>>1]|0);hu(c[(c[f>>2]|0)+16>>2]|0,e[(c[f>>2]|0)+84>>1]<<1);c[k>>2]=c[(c[f>>2]|0)+192>>2];while(1){if(!(c[k>>2]|0))break;c[l>>2]=c[(c[k>>2]|0)+24>>2];dD(c[g>>2]|0,c[c[k>>2]>>2]|0,c[(c[k>>2]|0)+4>>2]|0);Xb(c[g>>2]|0,c[k>>2]|0);c[k>>2]=c[l>>2]}c[j>>2]=(b[(c[f>>2]|0)+70>>1]|0)-1;while(1){d=c[g>>2]|0;if((c[j>>2]|0)<0)break;Xb(d,c[(c[(c[f>>2]|0)+64>>2]|0)+(c[j>>2]<<2)>>2]|0);c[j>>2]=(c[j>>2]|0)+ -1}dD(d,c[(c[f>>2]|0)+4>>2]|0,c[(c[f>>2]|0)+32>>2]|0);Xb(c[g>>2]|0,c[(c[f>>2]|0)+16>>2]|0);Xb(c[g>>2]|0,c[(c[f>>2]|0)+168>>2]|0);Xb(c[g>>2]|0,c[(c[f>>2]|0)+172>>2]|0);i=h;return}function Xb(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;i=i+16|0;g=d+8|0;e=d+4|0;f=d;c[g>>2]=a;c[e>>2]=b;if(!(c[e>>2]|0)){i=d;return}if(c[g>>2]|0){a=c[g>>2]|0;b=c[e>>2]|0;if(c[(c[g>>2]|0)+520>>2]|0){OE(a,b);i=d;return}if(Ck(a,b)|0){c[f>>2]=c[e>>2];c[c[f>>2]>>2]=c[(c[g>>2]|0)+272>>2];c[(c[g>>2]|0)+272>>2]=c[f>>2];a=(c[g>>2]|0)+252|0;c[a>>2]=(c[a>>2]|0)+ -1;i=d;return}}hc(c[e>>2]|0);i=d;return}function Yb(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=i;i=i+16|0;d=b+12|0;f=b+8|0;e=b+4|0;g=b;c[f>>2]=a;c[e>>2]=0;c[g>>2]=Zb()|0;if(c[g>>2]|0){c[d>>2]=0;g=c[d>>2]|0;i=b;return g|0}c[e>>2]=c[32];while(1){if((c[e>>2]|0)==0|(c[f>>2]|0)==0)break;if(!(UE(c[f>>2]|0,c[(c[e>>2]|0)+16>>2]|0)|0))break;c[e>>2]=c[(c[e>>2]|0)+12>>2]}c[d>>2]=c[e>>2];g=c[d>>2]|0;i=b;return g|0}function Zb(){var a=0,b=0,d=0,e=0,f=0;a=i;i=i+16|0;b=a+8|0;d=a+4|0;e=a;if(c[9716]|0){c[b>>2]=0;f=c[b>>2]|0;i=a;return f|0}c[d>>2]=0;if(c[d>>2]|0){c[b>>2]=c[d>>2];f=c[b>>2]|0;i=a;return f|0}c[9718]=1;if(!(c[9719]|0))c[d>>2]=wf()|0;if((((c[d>>2]|0)==0?(c[9719]=1,(c[9722]|0)==0):0)?(c[9722]=8,(c[9661]|0)!=0):0)?(c[9722]|0)==0:0)c[d>>2]=7;if(!(c[d>>2]|0))c[9721]=(c[9721]|0)+1;if(c[d>>2]|0){c[b>>2]=c[d>>2];f=c[b>>2]|0;i=a;return f|0}if((c[9716]|0)==0?(c[9717]|0)==0:0){c[e>>2]=1576;c[9717]=1;f=(c[e>>2]|0)+0|0;e=f+92|0;do{c[f>>2]=0;f=f+4|0}while((f|0)<(e|0));xf();if(!(c[9720]|0))c[d>>2]=yf()|0;if(!(c[d>>2]|0)){c[9720]=1;c[d>>2]=zf()|0}if(!(c[d>>2]|0)){Af(c[9711]|0,c[9712]|0,c[9713]|0);c[9716]=1}c[9717]=0}c[9721]=(c[9721]|0)+ -1;if((c[9721]|0)<=0)c[9722]=0;c[b>>2]=c[d>>2];f=c[b>>2]|0;i=a;return f|0}function _b(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=i;i=i+16|0;e=d+12|0;f=d+8|0;g=d+4|0;h=d;c[f>>2]=a;c[g>>2]=b;c[h>>2]=Zb()|0;if(c[h>>2]|0){c[e>>2]=c[h>>2];a=c[e>>2]|0;i=d;return a|0}$b(c[f>>2]|0);b=c[32]|0;if((c[g>>2]|0)!=0|(c[32]|0)==0){c[(c[f>>2]|0)+12>>2]=b;c[32]=c[f>>2]}else{c[(c[f>>2]|0)+12>>2]=c[b+12>>2];c[(c[32]|0)+12>>2]=c[f>>2]}c[e>>2]=0;a=c[e>>2]|0;i=d;return a|0}function $b(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;i=i+16|0;d=b+4|0;e=b;c[d>>2]=a;if(!(c[d>>2]|0)){i=b;return}if((c[32]|0)==(c[d>>2]|0)){c[32]=c[(c[d>>2]|0)+12>>2];i=b;return}if(!(c[32]|0)){i=b;return}c[e>>2]=c[32];while(1){if(c[(c[e>>2]|0)+12>>2]|0)f=(c[(c[e>>2]|0)+12>>2]|0)!=(c[d>>2]|0);else f=0;a=c[(c[e>>2]|0)+12>>2]|0;if(!f)break;c[e>>2]=a}if((a|0)!=(c[d>>2]|0)){i=b;return}c[(c[e>>2]|0)+12>>2]=c[(c[d>>2]|0)+12>>2];i=b;return}function ac(a){a=a|0;var b=0;b=i;i=i+16|0;c[b>>2]=a;i=b;return 0}function bc(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;f=i;i=i+32|0;k=f+16|0;j=f+12|0;g=f;h=f+8|0;c[k>>2]=a;c[j>>2]=b;b=g;c[b>>2]=d;c[b+4>>2]=e;c[38]=c[k>>2];c[39]=c[j>>2];d=g;b=c[d+4>>2]|0;a=144|0;c[a>>2]=c[d>>2];c[a+4>>2]=b;c[h>>2]=ME(0)|0;a=g;b=c[a+4>>2]|0;if(!((b|0)>0|(b|0)==0&(c[a>>2]|0)>>>0>0)){k=0;k=k&1;c[43]=k;i=f;return 0}j=g;b=c[j+4>>2]|0;k=c[h>>2]|0;a=((k|0)<0)<<31>>31;k=(b|0)<(a|0)|((b|0)==(a|0)?(c[j>>2]|0)>>>0<=k>>>0:0);k=k&1;c[43]=k;i=f;return 0}function cc(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;d=i;i=i+48|0;e=d+24|0;g=d+16|0;f=d+8|0;h=d;j=d+32|0;k=g;c[k>>2]=a;c[k+4>>2]=b;c[j>>2]=Zb()|0;if(c[j>>2]|0){j=e;c[j>>2]=-1;c[j+4>>2]=-1;j=e;k=j;k=c[k>>2]|0;j=j+4|0;j=c[j>>2]|0;D=j;i=d;return k|0}a=144|0;j=c[a+4>>2]|0;k=f;c[k>>2]=c[a>>2];c[k+4>>2]=j;if((c[g+4>>2]|0)<0){a=f;k=c[a+4>>2]|0;j=e;c[j>>2]=c[a>>2];c[j+4>>2]=k;j=e;k=j;k=c[k>>2]|0;j=j+4|0;j=c[j>>2]|0;D=j;i=d;return k|0}k=g;j=c[k+4>>2]|0;if((j|0)>0|(j|0)==0&(c[k>>2]|0)>>>0>0){k=g;bc(2,0,c[k>>2]|0,c[k+4>>2]|0)|0}else bc(0,0,0,0)|0;k=ec()|0;j=g;j=ZE(k|0,D|0,c[j>>2]|0,c[j+4>>2]|0)|0;k=h;c[k>>2]=j;c[k+4>>2]=D;k=h;j=c[k+4>>2]|0;if((j|0)>0|(j|0)==0&(c[k>>2]|0)>>>0>0)ac(c[h>>2]&2147483647)|0;a=f;k=c[a+4>>2]|0;j=e;c[j>>2]=c[a>>2];c[j+4>>2]=k;j=e;k=j;k=c[k>>2]|0;j=j+4|0;j=c[j>>2]|0;D=j;i=d;return k|0}function dc(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=i;i=i+16|0;g=f+8|0;c[f+12>>2]=a;a=f;c[a>>2]=b;c[a+4>>2]=d;c[g>>2]=e;ac(c[g>>2]|0)|0;i=f;return}function ec(){var a=0,b=0,d=0,e=0;b=i;i=i+16|0;e=b+12|0;a=b;Pb(0,e,b+8|0,0)|0;e=c[e>>2]|0;d=a;c[d>>2]=e;c[d+4>>2]=((e|0)<0)<<31>>31;D=c[a+4>>2]|0;i=b;return c[a>>2]|0}function fc(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+16|0;d=b+4|0;e=b;c[e>>2]=a;if(Zb()|0){c[d>>2]=0;e=c[d>>2]|0;i=b;return e|0}if((c[e>>2]|0)<=0)a=0;else{a=c[e>>2]|0;a=gc(a,((a|0)<0)<<31>>31)|0}c[d>>2]=a;e=c[d>>2]|0;i=b;return e|0}function gc(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;i=i+16|0;f=d;e=d+8|0;g=f;c[g>>2]=a;c[g+4>>2]=b;g=f;a=f;b=c[a+4>>2]|0;if((c[g>>2]|0)==0&(c[g+4>>2]|0)==0|(b>>>0>0|(b|0)==0&(c[a>>2]|0)>>>0>=2147483392)){c[e>>2]=0;g=c[e>>2]|0;i=d;return g|0}if(c[9660]|0){PE(c[f>>2]|0,e)|0;g=c[e>>2]|0;i=d;return g|0}else{c[e>>2]=ub[c[38640+36>>2]&31](c[f>>2]|0)|0;g=c[e>>2]|0;i=d;return g|0}return 0}function hc(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;if(!(c[d>>2]|0)){i=b;return}if(c[9660]|0){ic(0,0-(Tb(c[d>>2]|0)|0)|0);ic(9,-1);rb[c[38640+40>>2]&31](c[d>>2]|0);i=b;return}else{rb[c[38640+40>>2]&31](c[d>>2]|0);i=b;return}}function ic(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;a=48+(c[e>>2]<<2)|0;c[a>>2]=(c[a>>2]|0)+(c[f>>2]|0);if((c[48+(c[e>>2]<<2)>>2]|0)<=(c[88+(c[e>>2]<<2)>>2]|0)){i=d;return}c[88+(c[e>>2]<<2)>>2]=c[48+(c[e>>2]<<2)>>2];i=d;return}function jc(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;i=i+16|0;e=d+8|0;g=d+4|0;f=d;c[g>>2]=a;c[f>>2]=b;if(Zb()|0){c[e>>2]=0;a=c[e>>2]|0;i=d;return a|0}if((c[f>>2]|0)<0)c[f>>2]=0;a=c[f>>2]|0;c[e>>2]=kc(c[g>>2]|0,a,((a|0)<0)<<31>>31)|0;a=c[e>>2]|0;i=d;return a|0}function kc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;k=i;i=i+32|0;f=k+28|0;g=k+24|0;e=k;l=k+20|0;j=k+16|0;m=k+12|0;h=k+8|0;c[g>>2]=a;a=e;c[a>>2]=b;c[a+4>>2]=d;d=e;b=c[d>>2]|0;d=c[d+4>>2]|0;if(!(c[g>>2]|0)){c[f>>2]=gc(b,d)|0;a=c[f>>2]|0;i=k;return a|0}if((b|0)==0&(d|0)==0){hc(c[g>>2]|0);c[f>>2]=0;a=c[f>>2]|0;i=k;return a|0}a=e;b=c[a+4>>2]|0;if(b>>>0>0|(b|0)==0&(c[a>>2]|0)>>>0>=2147483392){c[f>>2]=0;a=c[f>>2]|0;i=k;return a|0}c[l>>2]=Tb(c[g>>2]|0)|0;c[j>>2]=ub[c[38640+52>>2]&31](c[e>>2]|0)|0;do if((c[l>>2]|0)!=(c[j>>2]|0)){if(!(c[9660]|0)){c[h>>2]=zb[c[38640+44>>2]&63](c[g>>2]|0,c[j>>2]|0)|0;break}Bg(5,c[e>>2]|0);c[m>>2]=(c[j>>2]|0)-(c[l>>2]|0);b=ME(0)|0;n=((b|0)<0)<<31>>31;d=144|0;a=c[m>>2]|0;a=ZE(c[d>>2]|0,c[d+4>>2]|0,a|0,((a|0)<0)<<31>>31|0)|0;d=D;if((n|0)>(d|0)|(n|0)==(d|0)&b>>>0>=a>>>0)NE(c[m>>2]|0);c[h>>2]=zb[c[38640+44>>2]&63](c[g>>2]|0,c[j>>2]|0)|0;if((c[h>>2]|0)==0&(c[38]|0)!=0){NE(c[e>>2]|0);c[h>>2]=zb[c[38640+44>>2]&63](c[g>>2]|0,c[j>>2]|0)|0}if(c[h>>2]|0){c[j>>2]=Tb(c[h>>2]|0)|0;ic(0,(c[j>>2]|0)-(c[l>>2]|0)|0)}}else c[h>>2]=c[g>>2];while(0);c[f>>2]=c[h>>2];n=c[f>>2]|0;i=k;return n|0}function lc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+16|0;f=e+12|0;g=e+8|0;h=e;c[g>>2]=a;a=h;c[a>>2]=b;c[a+4>>2]=d;if(Zb()|0){c[f>>2]=0;a=c[f>>2]|0;i=e;return a|0}else{a=h;c[f>>2]=kc(c[g>>2]|0,c[a>>2]|0,c[a+4>>2]|0)|0;a=c[f>>2]|0;i=e;return a|0}return 0}function mc(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;e=i;i=i+128|0;f=e+40|0;k=e+36|0;j=e+32|0;g=e+28|0;h=e;c[k>>2]=b;c[j>>2]=d;if(Zb()|0){c[f>>2]=0;b=c[f>>2]|0;i=e;return b|0}else{nc(h,e+44|0,70,1e9);a[h+24>>0]=2;oc(h,0,c[k>>2]|0,c[j>>2]|0);c[g>>2]=pc(h)|0;c[f>>2]=c[g>>2];b=c[f>>2]|0;i=e;return b|0}return 0}function nc(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;g=i;i=i+16|0;h=g+12|0;l=g+8|0;k=g+4|0;j=g;c[h>>2]=b;c[l>>2]=d;c[k>>2]=e;c[j>>2]=f;b=c[l>>2]|0;c[(c[h>>2]|0)+4>>2]=b;c[(c[h>>2]|0)+8>>2]=b;c[c[h>>2]>>2]=0;c[(c[h>>2]|0)+12>>2]=0;c[(c[h>>2]|0)+16>>2]=c[k>>2];c[(c[h>>2]|0)+20>>2]=c[j>>2];a[(c[h>>2]|0)+24>>0]=1;a[(c[h>>2]|0)+25>>0]=0;i=g;return}function oc(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0.0;m=i;i=i+272|0;Y=m+172|0;ra=m+168|0;q=m+164|0;z=m+160|0;p=m+156|0;I=m+152|0;A=m+148|0;J=m+144|0;G=m+140|0;o=m+136|0;r=m+264|0;s=m+263|0;t=m+262|0;w=m+261|0;u=m+260|0;v=m+259|0;B=m+258|0;C=m+257|0;n=m+256|0;F=m+255|0;x=m+254|0;ia=m+253|0;Q=m+252|0;ma=m+32|0;P=m+24|0;E=m+132|0;X=m+128|0;ja=m+124|0;W=m+120|0;S=m+116|0;V=m+112|0;j=m+108|0;R=m+16|0;Z=m+251|0;U=m+250|0;y=m+104|0;H=m+180|0;qa=m+8|0;pa=m+100|0;oa=m+96|0;na=m+179|0;ka=m+92|0;la=m+178|0;T=m;$=m+88|0;_=m+84|0;ea=m+80|0;ha=m+76|0;ca=m+72|0;da=m+68|0;ba=m+64|0;ga=m+60|0;fa=m+177|0;K=m+176|0;aa=m+56|0;L=m+52|0;M=m+48|0;N=m+44|0;O=m+40|0;c[Y>>2]=b;c[ra>>2]=e;c[q>>2]=f;c[z>>2]=g;a[F>>0]=0;c[W>>2]=0;c[y>>2]=0;c[I>>2]=0;if(c[ra>>2]|0){g=c[ra>>2]&2;a[x>>0]=g;if(g&255){b=c[z>>2]|0;e=c[b>>2]|0;g=c[e>>2]|0;c[b>>2]=e+4;c[y>>2]=g}a[ia>>0]=c[ra>>2]&1}else{a[ia>>0]=0;a[x>>0]=0}a:while(1){g=a[c[q>>2]>>0]|0;c[p>>2]=g;if(!g){l=274;break}if((c[p>>2]|0)!=37){c[I>>2]=c[q>>2];do{c[q>>2]=(c[q>>2]|0)+1;if(!(a[c[q>>2]>>0]|0))break}while((a[c[q>>2]>>0]|0)!=37);Vm(c[Y>>2]|0,c[I>>2]|0,(c[q>>2]|0)-(c[I>>2]|0)|0);if(!(a[c[q>>2]>>0]|0)){l=274;break}}g=(c[q>>2]|0)+1|0;c[q>>2]=g;g=a[g>>0]|0;c[p>>2]=g;if(!g){l=13;break}a[v>>0]=0;a[u>>0]=0;a[w>>0]=0;a[t>>0]=0;a[s>>0]=0;a[r>>0]=0;a[n>>0]=0;do{switch(c[p>>2]|0){case 45:{a[r>>0]=1;break};case 43:{a[s>>0]=1;break};case 32:{a[t>>0]=1;break};case 33:{a[u>>0]=1;break};case 48:{a[v>>0]=1;break};case 35:{a[w>>0]=1;break};default:a[n>>0]=1}if(a[n>>0]|0)break;g=(c[q>>2]|0)+1|0;c[q>>2]=g;g=a[g>>0]|0;c[p>>2]=g}while((g|0)!=0);c[o>>2]=0;b:do if((c[p>>2]|0)==42){if(a[x>>0]|0){g=HE(c[y>>2]|0)|0;c[o>>2]=g}else{b=c[z>>2]|0;e=c[b>>2]|0;g=c[e>>2]|0;c[b>>2]=e+4;c[o>>2]=g}if((c[o>>2]|0)<0){a[r>>0]=1;c[o>>2]=0-(c[o>>2]|0)}g=(c[q>>2]|0)+1|0;c[q>>2]=g;c[p>>2]=a[g>>0]}else while(1){if(!((c[p>>2]|0)>=48&(c[p>>2]|0)<=57))break b;c[o>>2]=((c[o>>2]|0)*10|0)+(c[p>>2]|0)-48;g=(c[q>>2]|0)+1|0;c[q>>2]=g;c[p>>2]=a[g>>0]}while(0);c:do if((c[p>>2]|0)==46){c[A>>2]=0;g=(c[q>>2]|0)+1|0;c[q>>2]=g;c[p>>2]=a[g>>0];if((c[p>>2]|0)!=42)while(1){if(!((c[p>>2]|0)>=48&(c[p>>2]|0)<=57))break c;c[A>>2]=((c[A>>2]|0)*10|0)+(c[p>>2]|0)-48;g=(c[q>>2]|0)+1|0;c[q>>2]=g;c[p>>2]=a[g>>0]}if(a[x>>0]|0){g=HE(c[y>>2]|0)|0;c[A>>2]=g}else{b=c[z>>2]|0;e=c[b>>2]|0;g=c[e>>2]|0;c[b>>2]=e+4;c[A>>2]=g}if((c[A>>2]|0)<0)c[A>>2]=0-(c[A>>2]|0);g=(c[q>>2]|0)+1|0;c[q>>2]=g;c[p>>2]=a[g>>0]}else c[A>>2]=-1;while(0);do if((c[p>>2]|0)==108){a[B>>0]=1;g=(c[q>>2]|0)+1|0;c[q>>2]=g;c[p>>2]=a[g>>0];if((c[p>>2]|0)==108){a[C>>0]=1;g=(c[q>>2]|0)+1|0;c[q>>2]=g;c[p>>2]=a[g>>0];break}else{a[C>>0]=0;break}}else{a[C>>0]=0;a[B>>0]=0}while(0);c[E>>2]=38392;a[F>>0]=0;c[G>>2]=0;while(1){if((c[G>>2]|0)>=23)break;ra=c[G>>2]|0;if((c[p>>2]|0)==(a[38392+((c[G>>2]|0)*6|0)>>0]|0)){l=53;break}c[G>>2]=ra+1}if((l|0)==53){l=0;c[E>>2]=38392+(ra*6|0);if((d[ia>>0]|0)==0?(d[(c[E>>2]|0)+2>>0]&2|0)!=0:0){l=274;break}a[F>>0]=a[(c[E>>2]|0)+3>>0]|0}d:do switch(d[F>>0]|0){case 14:{a[C>>0]=0;a[B>>0]=1;l=59;break};case 1:case 16:{l=59;break};case 4:case 3:case 2:{if(a[x>>0]|0)h[P>>3]=+IE(c[y>>2]|0);else{g=c[z>>2]|0;b=c[g>>2]|0;c[k>>2]=c[b>>2];c[k+4>>2]=c[b+4>>2];sa=+h[k>>3];c[g>>2]=b+8;h[P>>3]=sa}if((c[A>>2]|0)<0)c[A>>2]=6;do if(!(+h[P>>3]<0.0)){if(a[s>>0]|0){a[Q>>0]=43;break}if(a[t>>0]|0){a[Q>>0]=32;break}else{a[Q>>0]=0;break}}else{h[P>>3]=-+h[P>>3];a[Q>>0]=45}while(0);if((d[F>>0]|0)==4&(c[A>>2]|0)>0)c[A>>2]=(c[A>>2]|0)+ -1;c[G>>2]=c[A>>2];h[R>>3]=.5;while(1){if((c[G>>2]|0)<=0)break;c[G>>2]=(c[G>>2]|0)+ -1;h[R>>3]=+h[R>>3]*.1}if((d[F>>0]|0)==2)h[P>>3]=+h[P>>3]+ +h[R>>3];c[S>>2]=0;if($w(+h[P>>3])|0){c[I>>2]=38600;c[J>>2]=3;break d}if(+h[P>>3]>0.0){h[T>>3]=1.0;while(1){if(!((c[S>>2]|0)<=350?+h[P>>3]>=+h[T>>3]*1.0e+100:0))break;h[T>>3]=+h[T>>3]*1.0e+100;c[S>>2]=(c[S>>2]|0)+100}while(1){if(!((c[S>>2]|0)<=350?+h[P>>3]>=+h[T>>3]*1.0e+64:0))break;h[T>>3]=+h[T>>3]*1.0e+64;c[S>>2]=(c[S>>2]|0)+64}while(1){if(!((c[S>>2]|0)<=350?+h[P>>3]>=+h[T>>3]*1.0e8:0))break;h[T>>3]=+h[T>>3]*1.0e8;c[S>>2]=(c[S>>2]|0)+8}while(1){if(+h[P>>3]>=+h[T>>3]*10.0)ra=(c[S>>2]|0)<=350;else ra=0;sa=+h[T>>3];if(!ra)break;h[T>>3]=sa*10.0;c[S>>2]=(c[S>>2]|0)+1}h[P>>3]=+h[P>>3]/sa;while(1){if(!(+h[P>>3]<1.0e-8))break;h[P>>3]=+h[P>>3]*1.0e8;c[S>>2]=(c[S>>2]|0)-8}while(1){if(!(+h[P>>3]<1.0))break;h[P>>3]=+h[P>>3]*10.0;c[S>>2]=(c[S>>2]|0)+ -1}if((c[S>>2]|0)>350){do if((a[Q>>0]|0)!=45)if((a[Q>>0]|0)==43){c[I>>2]=38616;break}else{c[I>>2]=38624;break}else c[I>>2]=38608;while(0);c[J>>2]=Mb(c[I>>2]|0)|0;break d}}c[I>>2]=H;if((d[F>>0]|0)!=2?(h[P>>3]=+h[P>>3]+ +h[R>>3],+h[P>>3]>=10.0):0){h[P>>3]=+h[P>>3]*.1;c[S>>2]=(c[S>>2]|0)+1}e:do if((d[F>>0]|0)==4){a[U>>0]=((a[w>>0]|0)!=0^1)&1;do if((c[S>>2]|0)>=-4){if((c[S>>2]|0)>(c[A>>2]|0))break;c[A>>2]=(c[A>>2]|0)-(c[S>>2]|0);a[F>>0]=2;break e}while(0);a[F>>0]=3}else a[U>>0]=a[u>>0]|0;while(0);if((d[F>>0]|0)==3)c[V>>2]=0;else c[V>>2]=c[S>>2];if((((c[V>>2]|0)>0?c[V>>2]|0:0)+(c[A>>2]|0)+(c[o>>2]|0)|0)>55?(g=((c[V>>2]|0)>0?c[V>>2]|0:0)+(c[A>>2]|0)+(c[o>>2]|0)+15|0,g=gc(g,((g|0)<0)<<31>>31)|0,c[W>>2]=g,c[I>>2]=g,(c[I>>2]|0)==0):0){l=167;break a}c[X>>2]=c[I>>2];c[j>>2]=16+((d[u>>0]|0)*10|0);a[Z>>0]=((c[A>>2]|0)>0?1:0)|d[w>>0]|d[u>>0];if(a[Q>>0]|0){b=a[Q>>0]|0;g=c[I>>2]|0;c[I>>2]=g+1;a[g>>0]=b}f:do if((c[V>>2]|0)<0){g=c[I>>2]|0;c[I>>2]=g+1;a[g>>0]=48}else while(1){if((c[V>>2]|0)<0)break f;b=JE(P,j)|0;g=c[I>>2]|0;c[I>>2]=g+1;a[g>>0]=b;c[V>>2]=(c[V>>2]|0)+ -1}while(0);if(a[Z>>0]|0){g=c[I>>2]|0;c[I>>2]=g+1;a[g>>0]=46}c[V>>2]=(c[V>>2]|0)+1;while(1){if((c[V>>2]|0)>=0)break;g=c[I>>2]|0;c[I>>2]=g+1;a[g>>0]=48;c[A>>2]=(c[A>>2]|0)+ -1;c[V>>2]=(c[V>>2]|0)+1}while(1){g=c[A>>2]|0;c[A>>2]=g+ -1;if((g|0)<=0)break;b=JE(P,j)|0;g=c[I>>2]|0;c[I>>2]=g+1;a[g>>0]=b}do if(d[U>>0]|0){if(!(d[Z>>0]|0))break;while(1){ra=(c[I>>2]|0)+ -1|0;if((a[(c[I>>2]|0)+ -1>>0]|0)!=48)break;c[I>>2]=ra;a[ra>>0]=0}if((a[ra>>0]|0)!=46)break;ra=c[I>>2]|0;if(a[u>>0]|0){c[I>>2]=ra+1;a[ra>>0]=48;break}else{g=ra+ -1|0;c[I>>2]=g;a[g>>0]=0;break}}while(0);if((d[F>>0]|0)==3){ra=a[38552+(d[(c[E>>2]|0)+4>>0]|0)>>0]|0;g=c[I>>2]|0;c[I>>2]=g+1;a[g>>0]=ra;g=(c[S>>2]|0)<0;ra=c[I>>2]|0;c[I>>2]=ra+1;if(g){a[ra>>0]=45;c[S>>2]=0-(c[S>>2]|0)}else a[ra>>0]=43;if((c[S>>2]|0)>=100){b=((c[S>>2]|0)/100|0)+48&255;g=c[I>>2]|0;c[I>>2]=g+1;a[g>>0]=b;c[S>>2]=(c[S>>2]|0)%100|0}g=((c[S>>2]|0)/10|0)+48&255;b=c[I>>2]|0;c[I>>2]=b+1;a[b>>0]=g;b=((c[S>>2]|0)%10|0)+48&255;g=c[I>>2]|0;c[I>>2]=g+1;a[g>>0]=b}a[c[I>>2]>>0]=0;c[J>>2]=(c[I>>2]|0)-(c[X>>2]|0);c[I>>2]=c[X>>2];if((d[v>>0]|0)==0|(a[r>>0]|0)!=0)break d;if((c[J>>2]|0)>=(c[o>>2]|0))break d;c[_>>2]=(c[o>>2]|0)-(c[J>>2]|0);c[$>>2]=c[o>>2];while(1){if((c[$>>2]|0)<(c[_>>2]|0))break;a[(c[I>>2]|0)+(c[$>>2]|0)>>0]=a[(c[I>>2]|0)+((c[$>>2]|0)-(c[_>>2]|0))>>0]|0;c[$>>2]=(c[$>>2]|0)+ -1}c[$>>2]=(a[Q>>0]|0)!=0&1;while(1){g=c[_>>2]|0;c[_>>2]=g+ -1;if(!g)break;g=c[$>>2]|0;c[$>>2]=g+1;a[(c[I>>2]|0)+g>>0]=48}c[J>>2]=c[o>>2];break};case 5:{if(!(a[x>>0]|0)){b=c[(c[Y>>2]|0)+12>>2]|0;e=c[z>>2]|0;f=c[e>>2]|0;g=c[f>>2]|0;c[e>>2]=f+4;c[g>>2]=b}c[o>>2]=0;c[J>>2]=0;break};case 8:{a[H>>0]=37;c[I>>2]=H;c[J>>2]=1;break};case 9:{if(a[x>>0]|0){c[I>>2]=KE(c[y>>2]|0)|0;if(c[I>>2]|0)ra=a[c[I>>2]>>0]|0;else ra=0;c[p>>2]=ra}else{b=c[z>>2]|0;e=c[b>>2]|0;g=c[e>>2]|0;c[b>>2]=e+4;c[p>>2]=g}if((c[A>>2]|0)>1){c[o>>2]=(c[o>>2]|0)-((c[A>>2]|0)-1);if(!((c[o>>2]|0)<=1|(a[r>>0]|0)!=0)){LE(c[Y>>2]|0,(c[o>>2]|0)-1|0,32);c[o>>2]=0}LE(c[Y>>2]|0,(c[A>>2]|0)-1|0,c[p>>2]&255)}c[J>>2]=1;a[H>>0]=c[p>>2];c[I>>2]=H;break};case 7:case 6:{if(a[x>>0]|0)c[I>>2]=KE(c[y>>2]|0)|0;else{b=c[z>>2]|0;e=c[b>>2]|0;g=c[e>>2]|0;c[b>>2]=e+4;c[I>>2]=g}if(c[I>>2]|0){if(!((d[F>>0]|0)!=7|(a[x>>0]|0)!=0))c[W>>2]=c[I>>2]}else c[I>>2]=1216;if((c[A>>2]|0)<0){c[J>>2]=Mb(c[I>>2]|0)|0;break d}c[J>>2]=0;while(1){if((c[J>>2]|0)>=(c[A>>2]|0))break d;if(!(a[(c[I>>2]|0)+(c[J>>2]|0)>>0]|0))break d;c[J>>2]=(c[J>>2]|0)+1}};case 15:case 11:case 10:{a[K>>0]=(d[F>>0]|0)==15?34:39;if(a[x>>0]|0)c[aa>>2]=KE(c[y>>2]|0)|0;else{b=c[z>>2]|0;e=c[b>>2]|0;g=c[e>>2]|0;c[b>>2]=e+4;c[aa>>2]=g}c[ba>>2]=(c[aa>>2]|0)==0&1;if(c[ba>>2]|0)c[aa>>2]=(d[F>>0]|0)==11?9840:38632;c[ca>>2]=c[A>>2];c[da>>2]=0;c[ea>>2]=0;while(1){if(!(c[ca>>2]|0))break;g=a[(c[aa>>2]|0)+(c[ea>>2]|0)>>0]|0;a[fa>>0]=g;if(!(g<<24>>24))break;if((a[fa>>0]|0)==(a[K>>0]|0))c[da>>2]=(c[da>>2]|0)+1;c[ea>>2]=(c[ea>>2]|0)+1;c[ca>>2]=(c[ca>>2]|0)+ -1}if(c[ba>>2]|0)ra=0;else ra=(d[F>>0]|0)==11;c[ga>>2]=ra&1;c[da>>2]=(c[da>>2]|0)+((c[ea>>2]|0)+1+(c[ga>>2]<<1));if((c[da>>2]|0)>70){g=c[da>>2]|0;g=gc(g,((g|0)<0)<<31>>31)|0;c[W>>2]=g;c[I>>2]=g;if(!(c[I>>2]|0)){l=247;break a}}else c[I>>2]=H;c[ha>>2]=0;if(c[ga>>2]|0){b=a[K>>0]|0;g=c[ha>>2]|0;c[ha>>2]=g+1;a[(c[I>>2]|0)+g>>0]=b}c[ca>>2]=c[ea>>2];c[ea>>2]=0;while(1){if((c[ea>>2]|0)>=(c[ca>>2]|0))break;b=a[(c[aa>>2]|0)+(c[ea>>2]|0)>>0]|0;a[fa>>0]=b;g=c[ha>>2]|0;c[ha>>2]=g+1;a[(c[I>>2]|0)+g>>0]=b;if((a[fa>>0]|0)==(a[K>>0]|0)){b=a[fa>>0]|0;g=c[ha>>2]|0;c[ha>>2]=g+1;a[(c[I>>2]|0)+g>>0]=b}c[ea>>2]=(c[ea>>2]|0)+1}if(c[ga>>2]|0){b=a[K>>0]|0;g=c[ha>>2]|0;c[ha>>2]=g+1;a[(c[I>>2]|0)+g>>0]=b}a[(c[I>>2]|0)+(c[ha>>2]|0)>>0]=0;c[J>>2]=c[ha>>2];break};case 12:{b=c[z>>2]|0;e=c[b>>2]|0;g=c[e>>2]|0;c[b>>2]=e+4;c[L>>2]=g;if((c[L>>2]|0)!=0?(c[(c[L>>2]|0)+4>>2]|0)!=0:0)Vm(c[Y>>2]|0,c[c[L>>2]>>2]|0,c[(c[L>>2]|0)+4>>2]|0);c[o>>2]=0;c[J>>2]=0;break};case 13:{e=c[z>>2]|0;g=c[e>>2]|0;b=c[g>>2]|0;c[e>>2]=g+4;c[M>>2]=b;b=c[z>>2]|0;e=c[b>>2]|0;g=c[e>>2]|0;c[b>>2]=e+4;c[N>>2]=g;c[O>>2]=(c[M>>2]|0)+8+((c[N>>2]|0)*72|0);if(c[(c[O>>2]|0)+4>>2]|0){ss(c[Y>>2]|0,c[(c[O>>2]|0)+4>>2]|0);Vm(c[Y>>2]|0,19120,1)}ss(c[Y>>2]|0,c[(c[O>>2]|0)+8>>2]|0);c[o>>2]=0;c[J>>2]=0;break};default:{l=274;break a}}while(0);if((l|0)==59){l=0;ra=(a[x>>0]|0)!=0;do if(d[(c[E>>2]|0)+2>>0]&1){do if(!ra){ra=c[z>>2]|0;if(a[C>>0]|0){g=c[ra>>2]|0;b=g;e=c[b>>2]|0;b=c[b+4>>2]|0;c[ra>>2]=g+8;g=qa;c[g>>2]=e;c[g+4>>2]=b;break}else{g=c[ra>>2]|0;b=c[g>>2]|0;c[ra>>2]=g+4;g=qa;c[g>>2]=b;c[g+4>>2]=((b|0)<0)<<31>>31;break}}else{b=HE(c[y>>2]|0)|0;g=qa;c[g>>2]=b;c[g+4>>2]=D}while(0);ra=qa;f=c[ra>>2]|0;ra=c[ra+4>>2]|0;if((c[qa+4>>2]|0)<0){if((f|0)==0&(ra|0)==-2147483648){g=ma;c[g>>2]=0;c[g+4>>2]=-2147483648}else{b=qa;b=ZE(0,0,c[b>>2]|0,c[b+4>>2]|0)|0;g=ma;c[g>>2]=b;c[g+4>>2]=D}a[Q>>0]=45;break}g=ma;c[g>>2]=f;c[g+4>>2]=ra;if(a[s>>0]|0){a[Q>>0]=43;break}if(a[t>>0]|0){a[Q>>0]=32;break}else{a[Q>>0]=0;break}}else{do if(!ra){ra=c[z>>2]|0;if(a[C>>0]|0){g=c[ra>>2]|0;b=g;e=c[b>>2]|0;b=c[b+4>>2]|0;c[ra>>2]=g+8;g=ma;c[g>>2]=e;c[g+4>>2]=b;break}else{g=c[ra>>2]|0;b=c[g>>2]|0;c[ra>>2]=g+4;g=ma;c[g>>2]=b;c[g+4>>2]=0;break}}else{b=HE(c[y>>2]|0)|0;g=ma;c[g>>2]=b;c[g+4>>2]=D}while(0);a[Q>>0]=0}while(0);g=ma;if((c[g>>2]|0)==0&(c[g+4>>2]|0)==0)a[w>>0]=0;if((d[v>>0]|0)!=0?(c[A>>2]|0)<((c[o>>2]|0)-((a[Q>>0]|0)!=0&1)|0):0)c[A>>2]=(c[o>>2]|0)-((a[Q>>0]|0)!=0&1);if((c[A>>2]|0)>=60){c[ja>>2]=(c[A>>2]|0)+10;g=c[ja>>2]|0;g=gc(g,((g|0)<0)<<31>>31)|0;c[W>>2]=g;c[X>>2]=g;if(!(c[X>>2]|0)){l=89;break}}else{c[ja>>2]=70;c[X>>2]=H}c[I>>2]=(c[X>>2]|0)+((c[ja>>2]|0)-1);if((d[F>>0]|0)==16){g=ma;g=nF(c[g>>2]|0,c[g+4>>2]|0,10,0)|0;c[pa>>2]=g;if(!((c[pa>>2]|0)<4?(g=ma,g=mF(c[g>>2]|0,c[g+4>>2]|0,10,0)|0,g=nF(g|0,D|0,10,0)|0,!((g|0)==1&(D|0)==0)):0))c[pa>>2]=0;g=a[(c[pa>>2]<<1)+38537>>0]|0;b=(c[I>>2]|0)+ -1|0;c[I>>2]=b;a[b>>0]=g;b=a[38536+(c[pa>>2]<<1)>>0]|0;g=(c[I>>2]|0)+ -1|0;c[I>>2]=g;a[g>>0]=b}c[oa>>2]=38552+(d[(c[E>>2]|0)+4>>0]|0);a[na>>0]=a[(c[E>>2]|0)+1>>0]|0;do{g=ma;g=nF(c[g>>2]|0,c[g+4>>2]|0,d[na>>0]|0,0)|0;g=a[(c[oa>>2]|0)+g>>0]|0;b=(c[I>>2]|0)+ -1|0;c[I>>2]=b;a[b>>0]=g;b=ma;b=mF(c[b>>2]|0,c[b+4>>2]|0,d[na>>0]|0,0)|0;g=ma;c[g>>2]=b;c[g+4>>2]=D;g=ma;b=c[g+4>>2]|0}while(b>>>0>0|(b|0)==0&(c[g>>2]|0)>>>0>0);c[J>>2]=(c[X>>2]|0)+((c[ja>>2]|0)-1)-(c[I>>2]|0);c[G>>2]=(c[A>>2]|0)-(c[J>>2]|0);while(1){if((c[G>>2]|0)<=0)break;g=(c[I>>2]|0)+ -1|0;c[I>>2]=g;a[g>>0]=48;c[G>>2]=(c[G>>2]|0)+ -1}if(a[Q>>0]|0){b=a[Q>>0]|0;g=(c[I>>2]|0)+ -1|0;c[I>>2]=g;a[g>>0]=b}g:do if((d[w>>0]|0)!=0?(d[(c[E>>2]|0)+5>>0]|0)!=0:0){c[ka>>2]=38592+(d[(c[E>>2]|0)+5>>0]|0);while(1){g=a[c[ka>>2]>>0]|0;a[la>>0]=g;if(!(g<<24>>24))break g;b=a[la>>0]|0;g=(c[I>>2]|0)+ -1|0;c[I>>2]=g;a[g>>0]=b;c[ka>>2]=(c[ka>>2]|0)+1}}while(0);c[J>>2]=(c[X>>2]|0)+((c[ja>>2]|0)-1)-(c[I>>2]|0)}c[o>>2]=(c[o>>2]|0)-(c[J>>2]|0);if(!((c[o>>2]|0)<=0|(a[r>>0]|0)!=0))LE(c[Y>>2]|0,c[o>>2]|0,32);Vm(c[Y>>2]|0,c[I>>2]|0,c[J>>2]|0);if((c[o>>2]|0)>0?(d[r>>0]|0)!=0:0)LE(c[Y>>2]|0,c[o>>2]|0,32);if(c[W>>2]|0){hc(c[W>>2]|0);c[W>>2]=0}c[q>>2]=(c[q>>2]|0)+1}if((l|0)==13){Vm(c[Y>>2]|0,38384,1);i=m;return}else if((l|0)==89){Ym(c[Y>>2]|0,1);i=m;return}else if((l|0)==167){Ym(c[Y>>2]|0,1);i=m;return}else if((l|0)==247){Ym(c[Y>>2]|0,1);i=m;return}else if((l|0)==274){i=m;return}}function pc(b){b=b|0;var e=0,f=0,g=0;f=i;i=i+16|0;e=f;c[e>>2]=b;do if(((c[(c[e>>2]|0)+8>>2]|0)!=0?(a[(c[(c[e>>2]|0)+8>>2]|0)+(c[(c[e>>2]|0)+12>>2]|0)>>0]=0,(d[(c[e>>2]|0)+24>>0]|0|0)!=0):0)?(c[(c[e>>2]|0)+8>>2]|0)==(c[(c[e>>2]|0)+4>>2]|0):0){b=c[e>>2]|0;if((d[(c[e>>2]|0)+24>>0]|0|0)==1){g=(c[(c[e>>2]|0)+12>>2]|0)+1|0;b=Qe(c[b>>2]|0,g,((g|0)<0)<<31>>31)|0;c[(c[e>>2]|0)+8>>2]=b}else{g=fc((c[b+12>>2]|0)+1|0)|0;c[(c[e>>2]|0)+8>>2]=g}b=c[e>>2]|0;if(c[(c[e>>2]|0)+8>>2]|0){dF(c[b+8>>2]|0,c[(c[e>>2]|0)+4>>2]|0,(c[(c[e>>2]|0)+12>>2]|0)+1|0)|0;break}else{Ym(b,1);break}}while(0);i=f;return c[(c[e>>2]|0)+8>>2]|0}function qc(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=i;i=i+32|0;e=d+28|0;h=d+24|0;g=d+8|0;f=d;c[h>>2]=a;if(Zb()|0){c[e>>2]=0;a=c[e>>2]|0;i=d;return a|0}else{c[g>>2]=b;c[f>>2]=mc(c[h>>2]|0,g)|0;c[e>>2]=c[f>>2];a=c[e>>2]|0;i=d;return a|0}return 0}function rc(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;l=i;i=i+48|0;h=l+44|0;m=l+40|0;n=l+36|0;g=l+32|0;k=l+28|0;j=l;c[m>>2]=b;c[n>>2]=d;c[g>>2]=e;c[k>>2]=f;f=c[n>>2]|0;if((c[m>>2]|0)<=0){c[h>>2]=f;n=c[h>>2]|0;i=l;return n|0}else{nc(j,f,c[m>>2]|0,0);a[j+24>>0]=0;oc(j,0,c[g>>2]|0,c[k>>2]|0);c[h>>2]=pc(j)|0;n=c[h>>2]|0;i=l;return n|0}return 0}function sc(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;g=i;i=i+32|0;l=g+28|0;k=g+24|0;j=g+20|0;f=g+16|0;h=g;c[l>>2]=a;c[k>>2]=b;c[j>>2]=d;c[h>>2]=e;c[f>>2]=rc(c[l>>2]|0,c[k>>2]|0,c[j>>2]|0,h)|0;i=g;return c[f>>2]|0}function tc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+32|0;g=e+20|0;h=e+16|0;f=e;c[g>>2]=a;c[h>>2]=b;if(!(c[9723]|0)){i=e;return}c[f>>2]=d;uc(c[g>>2]|0,c[h>>2]|0,f);i=e;return}function uc(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;f=i;i=i+256|0;j=f+36|0;k=f+32|0;g=f+28|0;h=f;c[j>>2]=b;c[k>>2]=d;c[g>>2]=e;nc(h,f+40|0,210,0);a[h+24>>0]=0;oc(h,0,c[k>>2]|0,c[g>>2]|0);g=c[9723]|0;e=c[9724]|0;d=c[j>>2]|0;b=pc(h)|0;vb[g&63](e,d,b);i=f;return}function vc(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;f=i;i=i+288|0;j=f+12|0;m=f+8|0;g=f+272|0;h=f+4|0;k=f;l=f+16|0;c[j>>2]=b;c[m>>2]=e;c[h>>2]=c[m>>2];if((c[j>>2]|0)<=0){a[176]=0;i=f;return}if(!(a[176]|0)){a[178]=0;a[177]=0;wc(Yb(0)|0,256,l)|0;c[k>>2]=0;while(1){if((c[k>>2]|0)>=256)break;a[(c[k>>2]|0)+179>>0]=c[k>>2];c[k>>2]=(c[k>>2]|0)+1}c[k>>2]=0;while(1){if((c[k>>2]|0)>=256)break;a[178]=(d[178]|0)+((d[(c[k>>2]|0)+179>>0]|0)+(a[l+(c[k>>2]|0)>>0]|0));a[g>>0]=a[(d[178]|0)+179>>0]|0;a[(d[178]|0)+179>>0]=a[(c[k>>2]|0)+179>>0]|0;a[(c[k>>2]|0)+179>>0]=a[g>>0]|0;c[k>>2]=(c[k>>2]|0)+1}a[176]=1}do{a[177]=(a[177]|0)+1<<24>>24;a[g>>0]=a[(d[177]|0)+179>>0]|0;a[178]=(d[178]|0)+(d[g>>0]|0);a[(d[177]|0)+179>>0]=a[(d[178]|0)+179>>0]|0;a[(d[178]|0)+179>>0]=a[g>>0]|0;a[g>>0]=(d[g>>0]|0)+(d[(d[177]|0)+179>>0]|0);b=a[(d[g>>0]|0)+179>>0]|0;m=c[h>>2]|0;c[h>>2]=m+1;a[m>>0]=b;m=(c[j>>2]|0)+ -1|0;c[j>>2]=m}while((m|0)!=0);i=f;return}function wc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+16|0;h=e+8|0;g=e+4|0;f=e;c[h>>2]=a;c[g>>2]=b;c[f>>2]=d;a=pb[c[(c[h>>2]|0)+56>>2]&31](c[h>>2]|0,c[g>>2]|0,c[f>>2]|0)|0;i=e;return a|0}function xc(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0;e=i;i=i+16|0;j=e+12|0;h=e+8|0;g=e+4|0;f=e;c[j>>2]=a;c[h>>2]=b;c[g>>2]=c[j>>2];c[f>>2]=c[h>>2];while(1){if(d[c[g>>2]>>0]|0)a=(d[440+(d[c[g>>2]>>0]|0)>>0]|0|0)==(d[440+(d[c[f>>2]>>0]|0)>>0]|0|0);else a=0;b=c[g>>2]|0;if(!a)break;c[g>>2]=b+1;c[f>>2]=(c[f>>2]|0)+1}i=e;return(d[440+(d[b>>0]|0)>>0]|0)-(d[440+(d[c[f>>2]>>0]|0)>>0]|0)|0}function yc(){var a=0,b=0;a=i;i=i+16|0;b=a;c[b>>2]=0;while(1){if((c[b>>2]|0)>>>0>=4)break;_b(696+((c[b>>2]|0)*88|0)|0,(c[b>>2]|0)==0&1)|0;c[b>>2]=(c[b>>2]|0)+1}i=a;return 0}function zc(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;q=i;i=i+624|0;p=q+92|0;A=q+88|0;C=q+84|0;B=q+80|0;k=q+76|0;H=q+72|0;s=q+68|0;r=q+64|0;t=q+60|0;j=q+56|0;F=q+52|0;n=q+48|0;D=q+44|0;w=q+40|0;G=q+36|0;v=q+32|0;o=q+28|0;u=q+24|0;E=q+20|0;m=q+96|0;z=q+16|0;l=q+12|0;x=q+8|0;y=q+4|0;g=q;c[A>>2]=a;c[C>>2]=b;c[B>>2]=d;c[k>>2]=e;c[H>>2]=f;c[s>>2]=c[B>>2];c[r>>2]=-1;c[t>>2]=0;c[j>>2]=c[k>>2]&-256;c[n>>2]=0;c[D>>2]=0;c[w>>2]=c[k>>2]&16;c[G>>2]=c[k>>2]&8;c[v>>2]=c[k>>2]&4;c[o>>2]=c[k>>2]&1;c[u>>2]=c[k>>2]&2;if(c[v>>2]|0)if((c[j>>2]|0)==16384|(c[j>>2]|0)==2048)f=1;else f=(c[j>>2]|0)==524288;else f=0;c[E>>2]=f&1;c[z>>2]=c[C>>2];a=c[9524]|0;if((a|0)!=(Ka()|0)){c[9524]=Ka()|0;vc(0,0)}e=(c[s>>2]|0)+0|0;f=e+44|0;do{c[e>>2]=0;e=e+4|0}while((e|0)<(f|0));f=c[z>>2]|0;do if((c[j>>2]|0)!=256){if(!f){c[n>>2]=bE(514,m)|0;if(!(c[n>>2]|0)){c[z>>2]=m;break}c[p>>2]=c[n>>2];a=c[p>>2]|0;i=q;return a|0}}else{c[l>>2]=qE(f,c[k>>2]|0)|0;if(!(c[l>>2]|0)){c[l>>2]=fc(12)|0;if(!(c[l>>2]|0)){c[p>>2]=7;a=c[p>>2]|0;i=q;return a|0}}else c[r>>2]=c[c[l>>2]>>2];c[(c[s>>2]|0)+28>>2]=c[l>>2]}while(0);if(c[o>>2]|0)c[t>>2]=c[t>>2];if(c[u>>2]|0)c[t>>2]=c[t>>2]|2;if(c[v>>2]|0)c[t>>2]=c[t>>2]|64;if(c[w>>2]|0)c[t>>2]=c[t>>2]|131200;c[t>>2]=c[t>>2];do if((c[r>>2]|0)<0){c[n>>2]=rE(c[z>>2]|0,c[k>>2]|0,x,y,g)|0;if(c[n>>2]|0){c[p>>2]=c[n>>2];a=c[p>>2]|0;i=q;return a|0}c[r>>2]=ZD(c[z>>2]|0,c[t>>2]|0,c[x>>2]|0)|0;if((c[r>>2]|0)<0?(a=(c[(Ya()|0)>>2]|0)!=21,!(a&(c[u>>2]|0)!=0^1|(c[w>>2]|0)!=0)):0){c[k>>2]=c[k>>2]&-7;c[t>>2]=c[t>>2]&-67;c[k>>2]=c[k>>2]|1;c[t>>2]=c[t>>2];c[o>>2]=1;c[r>>2]=ZD(c[z>>2]|0,c[t>>2]|0,c[x>>2]|0)|0}if((c[r>>2]|0)<0){a=Ij(30591)|0;c[n>>2]=UD(a,37536,c[z>>2]|0,30591)|0;break}if(c[k>>2]&526336){pb[c[37192+244>>2]&31](c[r>>2]|0,c[y>>2]|0,c[g>>2]|0)|0;h=34}else h=34}else h=34;while(0);if((h|0)==34){if(c[H>>2]|0)c[c[H>>2]>>2]=c[k>>2];if(c[(c[s>>2]|0)+28>>2]|0){c[c[(c[s>>2]|0)+28>>2]>>2]=c[r>>2];c[(c[(c[s>>2]|0)+28>>2]|0)+4>>2]=c[k>>2]}if(c[G>>2]|0)ub[c[37192+196>>2]&31](c[z>>2]|0)|0;c[F>>2]=(c[j>>2]|0)!=256&1;if(c[G>>2]|0)c[D>>2]=c[D>>2]|32;if(c[o>>2]|0)c[D>>2]=c[D>>2]|2;if(c[F>>2]|0)c[D>>2]=c[D>>2]|128;if(c[E>>2]|0)c[D>>2]=c[D>>2]|8;if(c[k>>2]&64)c[D>>2]=c[D>>2]|64;c[n>>2]=sE(c[A>>2]|0,c[r>>2]|0,c[B>>2]|0,c[C>>2]|0,c[D>>2]|0)|0}if(c[n>>2]|0)hc(c[(c[s>>2]|0)+28>>2]|0);c[p>>2]=c[n>>2];a=c[p>>2]|0;i=q;return a|0}function Ac(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;g=i;i=i+32|0;f=g+20|0;h=g+12|0;k=g+8|0;e=g+4|0;j=g;c[g+16>>2]=a;c[h>>2]=b;c[k>>2]=d;c[e>>2]=0;if((ub[c[37192+196>>2]&31](c[h>>2]|0)|0)==-1){if((c[(Ya()|0)>>2]|0)==2)c[e>>2]=5898;else c[e>>2]=UD(2570,37672,c[h>>2]|0,30729)|0;c[f>>2]=c[e>>2];a=c[f>>2]|0;i=g;return a|0}do if(c[k>>2]&1){c[e>>2]=zb[c[37192+208>>2]&63](c[h>>2]|0,j)|0;if(c[e>>2]|0){if((c[e>>2]|0)!=14)break;c[e>>2]=0;break}if(Xa(c[j>>2]|0)|0)c[e>>2]=UD(1290,38128,c[h>>2]|0,30744)|0;TD(0,c[j>>2]|0,30746)}while(0);c[f>>2]=c[e>>2];a=c[f>>2]|0;i=g;return a|0}function Bc(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;k=i;i=i+96|0;g=k+88|0;l=k+84|0;j=k+80|0;f=k+76|0;h=k;c[k+92>>2]=a;c[g>>2]=b;c[l>>2]=d;c[j>>2]=e;c[f>>2]=0;e=c[l>>2]|0;if((e|0)==2)c[f>>2]=4;else if(!e)c[f>>2]=0;else if((e|0)==1)c[f>>2]=6;a=(zb[c[37192+28>>2]&63](c[g>>2]|0,c[f>>2]|0)|0)==0&1;c[c[j>>2]>>2]=a;if(c[l>>2]|0){i=k;return 0}if(!(c[c[j>>2]>>2]|0)){i=k;return 0}if(zb[c[37192+52>>2]&63](c[g>>2]|0,h)|0){i=k;return 0}if(c[h+36>>2]|0){i=k;return 0}c[c[j>>2]>>2]=0;i=k;return 0}function Cc(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;h=i;i=i+32|0;j=h;l=h+24|0;k=h+16|0;m=h+12|0;g=h+8|0;n=h+4|0;c[h+20>>2]=b;c[k>>2]=d;c[m>>2]=e;c[g>>2]=f;a[(c[g>>2]|0)+((c[m>>2]|0)-1)>>0]=0;do if((a[c[k>>2]>>0]|0)==47){d=c[m>>2]|0;b=c[g>>2]|0;c[j>>2]=c[k>>2];sc(d,b,1200,j)|0}else{if(zb[c[37192+40>>2]&63](c[g>>2]|0,(c[m>>2]|0)-1|0)|0){c[n>>2]=aF(c[g>>2]|0)|0;d=(c[m>>2]|0)-(c[n>>2]|0)|0;b=(c[g>>2]|0)+(c[n>>2]|0)|0;c[j>>2]=c[k>>2];sc(d,b,38120,j)|0;break}b=Ij(30831)|0;c[l>>2]=UD(b,37544,c[k>>2]|0,30831)|0;b=c[l>>2]|0;i=h;return b|0}while(0);c[l>>2]=0;b=c[l>>2]|0;i=h;return b|0}function Dc(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;f=i;i=i+32|0;g=f+16|0;h=f+12|0;k=f+8|0;l=f+4|0;j=f;c[f+20>>2]=b;c[g>>2]=d;c[h>>2]=e;_E(c[h>>2]|0,0,c[g>>2]|0)|0;c[9524]=Ka()|0;c[k>>2]=ZD(38104,0,0)|0;if((c[k>>2]|0)<0){eb(j|0)|0;b=c[h>>2]|0;a[b+0>>0]=a[j+0>>0]|0;a[b+1>>0]=a[j+1>>0]|0;a[b+2>>0]=a[j+2>>0]|0;a[b+3>>0]=a[j+3>>0]|0;b=(c[h>>2]|0)+4|0;a[b+0>>0]=a[38096]|0;a[b+1>>0]=a[38097]|0;a[b+2>>0]=a[38098]|0;a[b+3>>0]=a[38099]|0;c[g>>2]=8;b=c[g>>2]|0;i=f;return b|0}do{c[l>>2]=pb[c[37192+100>>2]&31](c[k>>2]|0,c[h>>2]|0,c[g>>2]|0)|0;if((c[l>>2]|0)>=0)break}while((c[(Ya()|0)>>2]|0)==4);TD(0,c[k>>2]|0,30936);b=c[g>>2]|0;i=f;return b|0}function Ec(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;e=i;i=i+16|0;f=e+4|0;d=e;c[e+8>>2]=a;c[f>>2]=b;c[d>>2]=((c[f>>2]|0)+999999|0)/1e6|0;bb(c[d>>2]|0)|0;i=e;return(c[d>>2]|0)*1e6|0}function Fc(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;e=i;i=i+32|0;f=e+12|0;g=e;d=e+8|0;c[e+16>>2]=a;c[f>>2]=b;a=g;c[a>>2]=0;c[a+4>>2]=0;c[d>>2]=Hc(0,g)|0;a=g;h[c[f>>2]>>3]=(+((c[a>>2]|0)>>>0)+4294967296.0*+(c[a+4>>2]|0))/864.0e5;i=e;return c[d>>2]|0}function Gc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=i;i=i+16|0;c[e+8>>2]=a;c[e+4>>2]=b;c[e>>2]=d;i=e;return 0}function Hc(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;i=i+32|0;f=d+12|0;e=d+8|0;g=d;c[d+16>>2]=a;c[f>>2]=b;c[e>>2]=0;if(!(hb(g|0,0)|0)){a=c[g>>2]|0;a=lF(1e3,0,a|0,((a|0)<0)<<31>>31|0)|0;a=bF(1045635584,49096,a|0,D|0)|0;g=(c[g+4>>2]|0)/1e3|0;g=bF(a|0,D|0,g|0,((g|0)<0)<<31>>31|0)|0;a=c[f>>2]|0;c[a>>2]=g;c[a+4>>2]=D;a=c[e>>2]|0;i=d;return a|0}else{c[e>>2]=1;a=c[e>>2]|0;i=d;return a|0}return 0}function Ic(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;g=i;i=i+32|0;k=g+12|0;j=g+8|0;h=g+4|0;f=g;c[g+16>>2]=a;c[k>>2]=b;c[j>>2]=d;c[f>>2]=12;if(!(c[k>>2]|0)){c[f>>2]=0;c[h>>2]=0;while(1){if((c[h>>2]|0)>>>0>=25)break;if(c[37200+((c[h>>2]|0)*12|0)>>2]|0)c[37196+((c[h>>2]|0)*12|0)>>2]=c[37200+((c[h>>2]|0)*12|0)>>2];c[h>>2]=(c[h>>2]|0)+1}a=c[f>>2]|0;i=g;return a|0}c[h>>2]=0;while(1){if((c[h>>2]|0)>>>0>=25){e=16;break}a=(UE(c[k>>2]|0,c[37192+((c[h>>2]|0)*12|0)>>2]|0)|0)==0;d=c[h>>2]|0;if(a)break;c[h>>2]=d+1}if((e|0)==16){a=c[f>>2]|0;i=g;return a|0}if(!(c[37200+(d*12|0)>>2]|0))c[37200+((c[h>>2]|0)*12|0)>>2]=c[37196+((c[h>>2]|0)*12|0)>>2];c[f>>2]=0;if(!(c[j>>2]|0))c[j>>2]=c[37200+((c[h>>2]|0)*12|0)>>2];c[37196+((c[h>>2]|0)*12|0)>>2]=c[j>>2];a=c[f>>2]|0;i=g;return a|0}function Jc(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;e=i;i=i+16|0;d=e+12|0;f=e+4|0;g=e;c[e+8>>2]=a;c[f>>2]=b;c[g>>2]=0;while(1){if((c[g>>2]|0)>>>0>=25){f=6;break}a=(UE(c[f>>2]|0,c[37192+((c[g>>2]|0)*12|0)>>2]|0)|0)==0;b=c[g>>2]|0;if(a){f=4;break}c[g>>2]=b+1}if((f|0)==4){c[d>>2]=c[37196+(b*12|0)>>2];a=c[d>>2]|0;i=e;return a|0}else if((f|0)==6){c[d>>2]=0;a=c[d>>2]|0;i=e;return a|0}return 0}function Kc(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;e=i;i=i+16|0;d=e+12|0;g=e+4|0;f=e;c[e+8>>2]=a;c[g>>2]=b;c[f>>2]=-1;a:do if(c[g>>2]|0){c[f>>2]=0;while(1){if((c[f>>2]|0)>=24)break a;if(!(UE(c[g>>2]|0,c[37192+((c[f>>2]|0)*12|0)>>2]|0)|0))break a;c[f>>2]=(c[f>>2]|0)+1}}while(0);c[f>>2]=(c[f>>2]|0)+1;while(1){if((c[f>>2]|0)>=25){f=11;break}b=c[f>>2]|0;if(c[37196+((c[f>>2]|0)*12|0)>>2]|0){f=9;break}c[f>>2]=b+1}if((f|0)==9){c[d>>2]=c[37192+(b*12|0)>>2];a=c[d>>2]|0;i=e;return a|0}else if((f|0)==11){c[d>>2]=0;a=c[d>>2]|0;i=e;return a|0}return 0}function Lc(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;k=i;i=i+32|0;f=k+28|0;g=k+24|0;l=k+20|0;h=k+16|0;j=k;c[f>>2]=a;c[g>>2]=b;c[l>>2]=d;c[(c[f>>2]|0)+52>>2]=c[g>>2];d=c[f>>2]|0;if(!(c[l>>2]|0)){Nc(d,c[g>>2]|0);i=k;return}if((c[d+232>>2]|0)==0?(a=rf(c[f>>2]|0)|0,c[(c[f>>2]|0)+232>>2]=a,(a|0)==0):0){i=k;return}c[j>>2]=e;c[h>>2]=yn(c[f>>2]|0,c[l>>2]|0,j)|0;sf(c[(c[f>>2]|0)+232>>2]|0,-1,c[h>>2]|0,1,16);i=k;return}function Mc(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;i=i+16|0;f=d;e=d+8|0;g=f;c[g>>2]=a;c[g+4>>2]=b;a=f;c[e>>2]=gc(c[a>>2]|0,c[a+4>>2]|0)|0;if(!(c[e>>2]|0)){g=c[e>>2]|0;i=d;return g|0}_E(c[e>>2]|0,0,c[f>>2]|0)|0;g=c[e>>2]|0;i=d;return g|0}function Nc(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;c[(c[e>>2]|0)+52>>2]=c[f>>2];if(!(c[(c[e>>2]|0)+232>>2]|0)){i=d;return}wD(c[(c[e>>2]|0)+232>>2]|0);i=d;return}function Oc(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,E=0,F=0;o=i;i=i+112|0;e=o+108|0;E=o+104|0;m=o+100|0;z=o+96|0;h=o+92|0;A=o+88|0;r=o+84|0;l=o+80|0;F=o+76|0;y=o+72|0;s=o+68|0;B=o+64|0;C=o+60|0;t=o+56|0;v=o+52|0;k=o+16|0;n=o+48|0;u=o+44|0;x=o+40|0;j=o+8|0;g=o;w=o+36|0;p=o+32|0;q=o+28|0;f=o+24|0;c[e>>2]=a;c[E>>2]=b;c[h>>2]=0;c[A>>2]=0;Pc(c[(c[e>>2]|0)+24>>2]|0);c[m>>2]=c[(c[e>>2]|0)+28>>2];if(Qc(c[m>>2]|0)|0){a=c[m>>2]|0;i=o;return a|0}c[r>>2]=Sb(c[(c[e>>2]|0)+24>>2]|0)|0;c[l>>2]=Sb(c[(c[e>>2]|0)+4>>2]|0)|0;c[y>>2]=-1;c[s>>2]=0;if((c[c[e>>2]>>2]|0)!=0?(d[(c[(c[(c[e>>2]|0)+24>>2]|0)+4>>2]|0)+20>>0]|0|0)==2:0)c[m>>2]=5;else c[m>>2]=0;if((0==(c[m>>2]|0)?(c[(c[e>>2]|0)+12>>2]|0)==0:0)?(a=Rc(c[(c[e>>2]|0)+4>>2]|0,2)|0,c[m>>2]=a,0==(a|0)):0){c[(c[e>>2]|0)+12>>2]=1;Sc(c[(c[e>>2]|0)+4>>2]|0,1,(c[e>>2]|0)+8|0)}if((c[m>>2]|0)==0?0==(Tc(c[(c[e>>2]|0)+24>>2]|0)|0):0){c[m>>2]=Rc(c[(c[e>>2]|0)+24>>2]|0,0)|0;c[s>>2]=1}c[h>>2]=Uc(c[(c[e>>2]|0)+24>>2]|0)|0;c[A>>2]=Uc(c[(c[e>>2]|0)+4>>2]|0)|0;c[z>>2]=Vc(Sb(c[(c[e>>2]|0)+4>>2]|0)|0)|0;if(0==(c[m>>2]|0)&(c[z>>2]|0)==5?(c[h>>2]|0)!=(c[A>>2]|0):0)c[m>>2]=8;c[y>>2]=Wc(c[(c[e>>2]|0)+24>>2]|0)|0;c[F>>2]=0;while(1){if((c[E>>2]|0)>=0?(c[F>>2]|0)>=(c[E>>2]|0):0)break;if((c[m>>2]|0)!=0?1:(c[(c[e>>2]|0)+16>>2]|0)>>>0>(c[y>>2]|0)>>>0)break;c[B>>2]=c[(c[e>>2]|0)+16>>2];if((c[B>>2]|0)!=((((c[282]|0)>>>0)/((c[(c[(c[(c[e>>2]|0)+24>>2]|0)+4>>2]|0)+32>>2]|0)>>>0)|0)+1|0)?(c[m>>2]=Xc(c[r>>2]|0,c[B>>2]|0,C,2)|0,(c[m>>2]|0)==0):0){b=c[e>>2]|0;a=c[B>>2]|0;c[m>>2]=Yc(b,a,Zc(c[C>>2]|0)|0,0)|0;_c(c[C>>2]|0)}a=(c[e>>2]|0)+16|0;c[a>>2]=(c[a>>2]|0)+1;c[F>>2]=(c[F>>2]|0)+1}do if(!(c[m>>2]|0)){c[(c[e>>2]|0)+36>>2]=c[y>>2];c[(c[e>>2]|0)+32>>2]=(c[y>>2]|0)+1-(c[(c[e>>2]|0)+16>>2]|0);if((c[(c[e>>2]|0)+16>>2]|0)>>>0>(c[y>>2]|0)>>>0){c[m>>2]=101;break}if(!(c[(c[e>>2]|0)+40>>2]|0))$c(c[e>>2]|0)}while(0);if((c[m>>2]|0)==101){if(!(c[y>>2]|0)){c[m>>2]=ad(c[(c[e>>2]|0)+4>>2]|0)|0;c[y>>2]=1}if((c[m>>2]|0)==0|(c[m>>2]|0)==101)c[m>>2]=bd(c[(c[e>>2]|0)+4>>2]|0,1,(c[(c[e>>2]|0)+8>>2]|0)+1|0)|0;if(!(c[m>>2]|0)){if(c[c[e>>2]>>2]|0)cd(c[c[e>>2]>>2]|0);if((c[z>>2]|0)==5)c[m>>2]=dd(c[(c[e>>2]|0)+4>>2]|0,2)|0}if(!(c[m>>2]|0)){if((c[h>>2]|0)<(c[A>>2]|0)){c[v>>2]=(c[A>>2]|0)/(c[h>>2]|0)|0;c[t>>2]=((c[y>>2]|0)+(c[v>>2]|0)-1|0)/(c[v>>2]|0)|0;if((c[t>>2]|0)==((((c[282]|0)>>>0)/((c[(c[(c[(c[e>>2]|0)+4>>2]|0)+4>>2]|0)+32>>2]|0)>>>0)|0)+1|0))c[t>>2]=(c[t>>2]|0)+ -1}else c[t>>2]=$(c[y>>2]|0,(c[h>>2]|0)/(c[A>>2]|0)|0)|0;if((c[h>>2]|0)<(c[A>>2]|0)){a=c[h>>2]|0;F=c[y>>2]|0;F=lF(a|0,((a|0)<0)<<31>>31|0,F|0,((F|0)<0)<<31>>31|0)|0;a=k;c[a>>2]=F;c[a+4>>2]=D;c[n>>2]=ed(c[l>>2]|0)|0;fd(c[l>>2]|0,x);c[u>>2]=c[t>>2];while(1){if(c[m>>2]|0)break;if((c[u>>2]|0)>>>0>(c[x>>2]|0)>>>0)break;do if((c[u>>2]|0)!=((((c[282]|0)>>>0)/((c[(c[(c[(c[e>>2]|0)+4>>2]|0)+4>>2]|0)+32>>2]|0)>>>0)|0)+1|0)){c[m>>2]=Xc(c[l>>2]|0,c[u>>2]|0,w,0)|0;if(c[m>>2]|0)break;c[m>>2]=gd(c[w>>2]|0)|0;_c(c[w>>2]|0)}while(0);c[u>>2]=(c[u>>2]|0)+1}if(!(c[m>>2]|0))c[m>>2]=hd(c[l>>2]|0,0,1)|0;F=(c[282]|0)+(c[A>>2]|0)|0;C=((F|0)<0)<<31>>31;a=k;E=c[a+4>>2]|0;if((C|0)<(E|0)|((C|0)==(E|0)?F>>>0<(c[a>>2]|0)>>>0:0)){t=(c[282]|0)+(c[A>>2]|0)|0;u=t;t=((t|0)<0)<<31>>31}else{t=k;u=c[t>>2]|0;t=c[t+4>>2]|0}F=g;c[F>>2]=u;c[F+4>>2]=t;F=(c[282]|0)+(c[h>>2]|0)|0;a=j;c[a>>2]=F;c[a+4>>2]=((F|0)<0)<<31>>31;while(1){if(c[m>>2]|0)break;F=j;C=c[F+4>>2]|0;a=g;E=c[a+4>>2]|0;if(!((C|0)<(E|0)|((C|0)==(E|0)?(c[F>>2]|0)>>>0<(c[a>>2]|0)>>>0:0)))break;c[p>>2]=0;F=j;a=c[h>>2]|0;a=jF(c[F>>2]|0,c[F+4>>2]|0,a|0,((a|0)<0)<<31>>31|0)|0;a=bF(a|0,D|0,1,0)|0;c[q>>2]=a;c[m>>2]=Xc(c[r>>2]|0,c[q>>2]|0,p,0)|0;if(!(c[m>>2]|0)){c[f>>2]=Zc(c[p>>2]|0)|0;a=j;c[m>>2]=id(c[n>>2]|0,c[f>>2]|0,c[h>>2]|0,c[a>>2]|0,c[a+4>>2]|0)|0}_c(c[p>>2]|0);F=c[h>>2]|0;a=j;F=bF(c[a>>2]|0,c[a+4>>2]|0,F|0,((F|0)<0)<<31>>31|0)|0;a=j;c[a>>2]=F;c[a+4>>2]=D}if(!(c[m>>2]|0)){a=k;c[m>>2]=jd(c[n>>2]|0,c[a>>2]|0,c[a+4>>2]|0)|0}if(!(c[m>>2]|0))c[m>>2]=kd(c[l>>2]|0,0)|0}else{ld(c[l>>2]|0,c[t>>2]|0);c[m>>2]=hd(c[l>>2]|0,0,0)|0}if(!(c[m>>2]|0)){a=md(c[(c[e>>2]|0)+4>>2]|0,0)|0;c[m>>2]=a;c[m>>2]=0==(a|0)?101:a}}}if(c[s>>2]|0){nd(c[(c[e>>2]|0)+24>>2]|0,0)|0;md(c[(c[e>>2]|0)+24>>2]|0,0)|0}if((c[m>>2]|0)==3082)c[m>>2]=7;c[(c[e>>2]|0)+28>>2]=c[m>>2];a=c[m>>2]|0;i=o;return a|0}function Pc(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;c[(c[(c[d>>2]|0)+4>>2]|0)+4>>2]=c[c[d>>2]>>2];i=b;return}function Qc(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;if(!((c[d>>2]|0)!=0&(c[d>>2]|0)!=5)){d=0;d=d&1;i=b;return d|0}d=(c[d>>2]|0)!=6;d=d&1;i=b;return d|0}function Rc(f,g){f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;j=i;i=i+32|0;l=j+24|0;m=j+20|0;o=j+16|0;k=j+12|0;n=j+8|0;p=j+4|0;h=j;c[l>>2]=f;c[m>>2]=g;c[o>>2]=0;c[k>>2]=c[(c[l>>2]|0)+4>>2];c[n>>2]=0;Pc(c[l>>2]|0);do if((d[(c[l>>2]|0)+8>>0]|0)!=2?(c[m>>2]|0)!=0?1:(d[(c[l>>2]|0)+8>>0]|0)!=1:0){if((c[m>>2]|0)!=0?(e[(c[k>>2]|0)+22>>1]&1|0)!=0:0){c[n>>2]=8;break}if((c[m>>2]|0)!=0?(d[(c[k>>2]|0)+20>>0]|0)==2:0)g=8;else g=7;a:do if((g|0)==7)if(!(e[(c[k>>2]|0)+22>>1]&64)){if((c[m>>2]|0)>1){c[p>>2]=c[(c[k>>2]|0)+72>>2];while(1){if(!(c[p>>2]|0))break a;f=c[p>>2]|0;if((c[c[p>>2]>>2]|0)!=(c[l>>2]|0))break;c[p>>2]=c[f+12>>2]}c[o>>2]=c[c[f>>2]>>2]}}else g=8;while(0);if((g|0)==8)c[o>>2]=c[c[(c[k>>2]|0)+76>>2]>>2];if(c[o>>2]|0){c[n>>2]=262;break}c[n>>2]=By(c[l>>2]|0,1,1)|0;if(!(c[n>>2]|0)){f=(c[k>>2]|0)+22|0;b[f>>1]=e[f>>1]&-9;if(!(c[(c[k>>2]|0)+44>>2]|0)){f=(c[k>>2]|0)+22|0;b[f>>1]=e[f>>1]|8}while(1){if((c[(c[k>>2]|0)+12>>2]|0)==0?(f=tD(c[k>>2]|0)|0,c[n>>2]=f,0==(f|0)):0)continue;do if((c[n>>2]|0)==0&(c[m>>2]|0)!=0){if(e[(c[k>>2]|0)+22>>1]&1){c[n>>2]=8;break}g=c[c[k>>2]>>2]|0;f=(c[m>>2]|0)>1&1;c[n>>2]=uD(g,f,xh(c[c[l>>2]>>2]|0)|0)|0;if(!(c[n>>2]|0))c[n>>2]=IC(c[k>>2]|0)|0}while(0);if(c[n>>2]|0)Sk(c[k>>2]|0);if((c[n>>2]&255|0)!=5)break;if(d[(c[k>>2]|0)+20>>0]|0)break;if(!(Fh(c[k>>2]|0)|0))break}if(!(c[n>>2]|0)){if((d[(c[l>>2]|0)+8>>0]|0)==0?(f=(c[k>>2]|0)+40|0,c[f>>2]=(c[f>>2]|0)+1,(a[(c[l>>2]|0)+9>>0]|0)!=0):0){a[(c[l>>2]|0)+36>>0]=1;c[(c[l>>2]|0)+40>>2]=c[(c[k>>2]|0)+72>>2];c[(c[k>>2]|0)+72>>2]=(c[l>>2]|0)+28}a[(c[l>>2]|0)+8>>0]=(c[m>>2]|0)!=0?2:1;if((d[(c[l>>2]|0)+8>>0]|0)>(d[(c[k>>2]|0)+20>>0]|0))a[(c[k>>2]|0)+20>>0]=a[(c[l>>2]|0)+8>>0]|0;if(c[m>>2]|0){c[h>>2]=c[(c[k>>2]|0)+12>>2];c[(c[k>>2]|0)+76>>2]=c[l>>2];f=(c[k>>2]|0)+22|0;b[f>>1]=e[f>>1]&-33;if((c[m>>2]|0)>1){f=(c[k>>2]|0)+22|0;b[f>>1]=e[f>>1]|32}f=c[(c[k>>2]|0)+44>>2]|0;if((f|0)!=(Hh((c[(c[h>>2]|0)+56>>2]|0)+28|0)|0)?(c[n>>2]=gd(c[(c[h>>2]|0)+68>>2]|0)|0,(c[n>>2]|0)==0):0)ck((c[(c[h>>2]|0)+56>>2]|0)+28|0,c[(c[k>>2]|0)+44>>2]|0)}}}}while(0);if(!((c[n>>2]|0)==0&(c[m>>2]|0)!=0)){f=c[n>>2]|0;i=j;return f|0}c[n>>2]=GC(c[c[k>>2]>>2]|0,c[(c[c[l>>2]>>2]|0)+496>>2]|0)|0;f=c[n>>2]|0;i=j;return f|0}function Sc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;i=i+16|0;j=e+12|0;g=e+8|0;f=e+4|0;h=e;c[j>>2]=a;c[g>>2]=b;c[f>>2]=d;c[h>>2]=c[(c[j>>2]|0)+4>>2];Pc(c[j>>2]|0);a=Hh((c[(c[(c[h>>2]|0)+12>>2]|0)+56>>2]|0)+(36+(c[g>>2]<<2))|0)|0;c[c[f>>2]>>2]=a;i=e;return}function Tc(a){a=a|0;var b=0,e=0;e=i;i=i+16|0;b=e;c[b>>2]=a;i=e;return(d[(c[b>>2]|0)+8>>0]|0|0)!=0|0}function Uc(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;i=d;return c[(c[(c[b>>2]|0)+4>>2]|0)+32>>2]|0}function Vc(a){a=a|0;var b=0,e=0;e=i;i=i+16|0;b=e;c[b>>2]=a;i=e;return d[(c[b>>2]|0)+5>>0]|0|0}function Wc(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;a=Aw(c[(c[d>>2]|0)+4>>2]|0)|0;i=b;return a|0}function Xc(a,b,e,f){a=a|0;b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;q=i;i=i+48|0;j=q+44|0;p=q+40|0;m=q+36|0;l=q+32|0;u=q+28|0;o=q+24|0;k=q+20|0;s=q+16|0;t=q+12|0;r=q+8|0;n=q+4|0;g=q;c[p>>2]=a;c[m>>2]=b;c[l>>2]=e;c[u>>2]=f;c[o>>2]=0;c[k>>2]=0;c[s>>2]=0;c[t>>2]=c[u>>2]&1;c[r>>2]=0;if(!(c[m>>2]|0)){c[j>>2]=kj(46160)|0;u=c[j>>2]|0;i=q;return u|0}do if(!(c[(c[p>>2]|0)+40>>2]|0)){if(((c[r>>2]|0)!=0?(ai(c[p>>2]|0)|0)!=0:0)?(c[o>>2]=cj(c[(c[p>>2]|0)+208>>2]|0,c[m>>2]|0,s)|0,(c[o>>2]|0)!=0):0)break;if((c[r>>2]|0)!=0&(c[s>>2]|0)==0){c[n>>2]=0;a=c[(c[p>>2]|0)+60>>2]|0;u=c[(c[p>>2]|0)+152>>2]|0;u=lF((c[m>>2]|0)-1|0,0,u|0,((u|0)<0)<<31>>31|0)|0;c[o>>2]=XB(a,u,D,c[(c[p>>2]|0)+152>>2]|0,n)|0;if((c[o>>2]|0)==0&(c[n>>2]|0)!=0){if((d[(c[p>>2]|0)+16>>0]|0|0)>1)c[k>>2]=Hi(c[p>>2]|0,c[m>>2]|0)|0;f=c[p>>2]|0;if(!(c[k>>2]|0))c[o>>2]=rD(f,c[m>>2]|0,c[n>>2]|0,k)|0;else{a=c[f+60>>2]|0;u=c[(c[p>>2]|0)+152>>2]|0;u=lF((c[m>>2]|0)-1|0,0,u|0,((u|0)<0)<<31>>31|0)|0;hj(a,u,D,c[n>>2]|0)|0}if(c[k>>2]|0){c[c[l>>2]>>2]=c[k>>2];c[j>>2]=0;u=c[j>>2]|0;i=q;return u|0}}if(c[o>>2]|0)break}c[g>>2]=Li(c[(c[p>>2]|0)+204>>2]|0,c[m>>2]|0,3)|0;if((c[g>>2]|0)==0?(c[o>>2]=sD(c[(c[p>>2]|0)+204>>2]|0,c[m>>2]|0,g)|0,(c[o>>2]|0)!=0):0)break;u=Mi(c[(c[p>>2]|0)+204>>2]|0,c[m>>2]|0,c[g>>2]|0)|0;c[c[l>>2]>>2]=u;c[k>>2]=u;if(!(c[k>>2]|0)){c[o>>2]=7;h=22}else h=22}else{c[o>>2]=c[(c[p>>2]|0)+40>>2];h=22}while(0);do if((h|0)==22){if(c[o>>2]|0){c[k>>2]=0;break}if(!((c[t>>2]|0)!=0?1:(c[(c[c[l>>2]>>2]|0)+16>>2]|0)==0)){u=(c[p>>2]|0)+184|0;c[u>>2]=(c[u>>2]|0)+1;c[j>>2]=0;u=c[j>>2]|0;i=q;return u|0}c[k>>2]=c[c[l>>2]>>2];c[(c[k>>2]|0)+16>>2]=c[p>>2];if((c[m>>2]|0)>>>0<=2147483647?(c[m>>2]|0)!=(((c[282]|0)/(c[(c[p>>2]|0)+152>>2]|0)|0)+1|0):0){if(((d[(c[p>>2]|0)+15>>0]|0|0)==0?!((c[t>>2]|0)!=0?1:(c[(c[p>>2]|0)+24>>2]|0)>>>0<(c[m>>2]|0)>>>0):0)?(c[c[(c[p>>2]|0)+60>>2]>>2]|0)!=0:0){u=(ai(c[p>>2]|0)|0)!=0;if(u&(c[r>>2]|0)==0?(c[o>>2]=cj(c[(c[p>>2]|0)+208>>2]|0,c[m>>2]|0,s)|0,(c[o>>2]|0)!=0):0)break;u=(c[p>>2]|0)+188|0;c[u>>2]=(c[u>>2]|0)+1;c[o>>2]=dj(c[k>>2]|0,c[s>>2]|0)|0;if(c[o>>2]|0)break}else{if((c[m>>2]|0)>>>0>(c[(c[p>>2]|0)+156>>2]|0)>>>0){c[o>>2]=13;break}if(c[t>>2]|0){kh();if((c[m>>2]|0)>>>0<=(c[(c[p>>2]|0)+28>>2]|0)>>>0)Wg(c[(c[p>>2]|0)+56>>2]|0,c[m>>2]|0)|0;qk(c[p>>2]|0,c[m>>2]|0)|0;lh()}_E(c[(c[k>>2]|0)+4>>2]|0,0,c[(c[p>>2]|0)+152>>2]|0)|0}c[j>>2]=0;u=c[j>>2]|0;i=q;return u|0}c[o>>2]=kj(46239)|0}while(0);if(c[k>>2]|0)bj(c[k>>2]|0);gj(c[p>>2]|0);c[c[l>>2]>>2]=0;c[j>>2]=c[o>>2];u=c[j>>2]|0;i=q;return u|0}function Yc(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;h=i;i=i+80|0;v=h+68|0;x=h+64|0;m=h+60|0;s=h+56|0;t=h+52|0;l=h+48|0;q=h+44|0;r=h+40|0;w=h+8|0;g=h+36|0;k=h;o=h+32|0;u=h+28|0;n=h+24|0;p=h+20|0;j=h+16|0;c[v>>2]=b;c[x>>2]=d;c[m>>2]=e;c[s>>2]=f;c[t>>2]=Sb(c[(c[v>>2]|0)+4>>2]|0)|0;c[l>>2]=Uc(c[(c[v>>2]|0)+24>>2]|0)|0;c[q>>2]=Uc(c[(c[v>>2]|0)+4>>2]|0)|0;c[r>>2]=(c[l>>2]|0)<(c[q>>2]|0)?c[l>>2]|0:c[q>>2]|0;d=c[l>>2]|0;d=lF(c[x>>2]|0,0,d|0,((d|0)<0)<<31>>31|0)|0;b=w;c[b>>2]=d;c[b+4>>2]=D;c[g>>2]=0;if((c[l>>2]|0)!=(c[q>>2]|0)?(DA(c[t>>2]|0)|0)!=0:0)c[g>>2]=8;x=w;b=c[l>>2]|0;b=ZE(c[x>>2]|0,c[x+4>>2]|0,b|0,((b|0)<0)<<31>>31|0)|0;x=k;c[x>>2]=b;c[x+4>>2]=D;while(1){if(c[g>>2]|0){j=14;break}b=k;e=c[b+4>>2]|0;x=w;d=c[x+4>>2]|0;if(!((e|0)<(d|0)|((e|0)==(d|0)?(c[b>>2]|0)>>>0<(c[x>>2]|0)>>>0:0))){j=14;break}c[o>>2]=0;b=k;x=c[q>>2]|0;x=jF(c[b>>2]|0,c[b+4>>2]|0,x|0,((x|0)<0)<<31>>31|0)|0;c[u>>2]=x+1;if((c[u>>2]|0)!=((((c[282]|0)>>>0)/((c[(c[(c[(c[v>>2]|0)+4>>2]|0)+4>>2]|0)+32>>2]|0)>>>0)|0)+1|0)){x=Xc(c[t>>2]|0,c[u>>2]|0,o,0)|0;c[g>>2]=x;if((0==(x|0)?(x=gd(c[o>>2]|0)|0,c[g>>2]=x,0==(x|0)):0)?(x=k,b=c[l>>2]|0,b=kF(c[x>>2]|0,c[x+4>>2]|0,b|0,((b|0)<0)<<31>>31|0)|0,c[n>>2]=(c[m>>2]|0)+b,c[p>>2]=Zc(c[o>>2]|0)|0,b=k,x=c[q>>2]|0,x=kF(c[b>>2]|0,c[b+4>>2]|0,x|0,((x|0)<0)<<31>>31|0)|0,c[j>>2]=(c[p>>2]|0)+x,dF(c[j>>2]|0,c[n>>2]|0,c[r>>2]|0)|0,a[(Qj(c[o>>2]|0)|0)>>0]=0,x=k,(c[x>>2]|0)==0&(c[x+4>>2]|0)==0&(c[s>>2]|0)==0):0){x=(c[j>>2]|0)+28|0;ck(x,Wc(c[(c[v>>2]|0)+24>>2]|0)|0)}_c(c[o>>2]|0)}b=c[q>>2]|0;x=k;b=bF(c[x>>2]|0,c[x+4>>2]|0,b|0,((b|0)<0)<<31>>31|0)|0;x=k;c[x>>2]=b;c[x+4>>2]=D}if((j|0)==14){i=h;return c[g>>2]|0}return 0}function Zc(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;i=d;return c[(c[b>>2]|0)+4>>2]|0}function _c(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;if(!(c[d>>2]|0)){i=b;return}ej(c[d>>2]|0);i=b;return}function $c(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+16|0;d=b+4|0;e=b;c[d>>2]=a;c[e>>2]=pd(Sb(c[(c[d>>2]|0)+24>>2]|0)|0)|0;c[(c[d>>2]|0)+44>>2]=c[c[e>>2]>>2];c[c[e>>2]>>2]=c[d>>2];c[(c[d>>2]|0)+40>>2]=1;i=b;return}function ad(a){a=a|0;var b=0,d=0,e=0;d=i;i=i+16|0;e=d+4|0;b=d;c[e>>2]=a;Pc(c[e>>2]|0);c[(c[(c[e>>2]|0)+4>>2]|0)+44>>2]=0;c[b>>2]=IC(c[(c[e>>2]|0)+4>>2]|0)|0;i=d;return c[b>>2]|0}function bd(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;f=i;i=i+32|0;m=f+20|0;l=f+16|0;h=f+12|0;j=f+8|0;k=f+4|0;g=f;c[m>>2]=b;c[l>>2]=d;c[h>>2]=e;c[j>>2]=c[(c[m>>2]|0)+4>>2];Pc(c[m>>2]|0);c[k>>2]=c[(c[(c[j>>2]|0)+12>>2]|0)+56>>2];c[g>>2]=gd(c[(c[(c[j>>2]|0)+12>>2]|0)+68>>2]|0)|0;if(c[g>>2]|0){m=c[g>>2]|0;i=f;return m|0}ck((c[k>>2]|0)+(36+(c[l>>2]<<2))|0,c[h>>2]|0);if((c[l>>2]|0)!=7){m=c[g>>2]|0;i=f;return m|0}a[(c[j>>2]|0)+18>>0]=c[h>>2];m=c[g>>2]|0;i=f;return m|0}function cd(a){a=a|0;var b=0,d=0,e=0,f=0;d=i;i=i+16|0;b=d+8|0;e=d+4|0;f=d;c[b>>2]=a;Rb(c[b>>2]|0);c[e>>2]=0;while(1){if((c[e>>2]|0)>=(c[(c[b>>2]|0)+20>>2]|0))break;c[f>>2]=(c[(c[b>>2]|0)+16>>2]|0)+(c[e>>2]<<4);if(c[(c[f>>2]|0)+12>>2]|0)wh(c[(c[f>>2]|0)+12>>2]|0);c[e>>2]=(c[e>>2]|0)+1}f=(c[b>>2]|0)+24|0;c[f>>2]=c[f>>2]&-3;Lk(c[b>>2]|0);Mk(c[b>>2]|0);i=d;return}function dd(f,g){f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0;j=i;i=i+32|0;l=j+16|0;n=j+12|0;h=j+8|0;k=j+4|0;m=j;c[l>>2]=f;c[n>>2]=g;c[h>>2]=c[(c[l>>2]|0)+4>>2];f=(c[h>>2]|0)+22|0;b[f>>1]=(e[f>>1]|0)&-17;if((c[n>>2]|0)==1){f=(c[h>>2]|0)+22|0;b[f>>1]=e[f>>1]|0|16}c[k>>2]=Rc(c[l>>2]|0,0)|0;do if(!(c[k>>2]|0)){c[m>>2]=c[(c[(c[h>>2]|0)+12>>2]|0)+56>>2];if((d[(c[m>>2]|0)+18>>0]|0|0)==(c[n>>2]&255|0)?(d[(c[m>>2]|0)+19>>0]|0|0)==(c[n>>2]&255|0):0)break;c[k>>2]=Rc(c[l>>2]|0,2)|0;if((c[k>>2]|0)==0?(c[k>>2]=gd(c[(c[(c[h>>2]|0)+12>>2]|0)+68>>2]|0)|0,(c[k>>2]|0)==0):0){a[(c[m>>2]|0)+18>>0]=c[n>>2];a[(c[m>>2]|0)+19>>0]=c[n>>2]}}while(0);f=(c[h>>2]|0)+22|0;b[f>>1]=(e[f>>1]|0)&-17;i=j;return c[k>>2]|0}function ed(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;i=d;return c[(c[b>>2]|0)+60>>2]|0}function fd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;c[c[e>>2]>>2]=c[(c[f>>2]|0)+24>>2];i=d;return}function gd(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+16|0;d=b+4|0;e=b;c[e>>2]=a;a=c[e>>2]|0;if((c[(c[(c[e>>2]|0)+16>>2]|0)+148>>2]|0)>>>0>(c[(c[(c[e>>2]|0)+16>>2]|0)+152>>2]|0)>>>0){c[d>>2]=mD(a)|0;e=c[d>>2]|0;i=b;return e|0}else{c[d>>2]=nD(a)|0;e=c[d>>2]|0;i=b;return e|0}return 0}function hd(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;n=i;i=i+32|0;h=n+28|0;l=n+24|0;p=n+20|0;o=n+16|0;k=n+12|0;m=n+8|0;j=n+4|0;g=n;c[l>>2]=b;c[p>>2]=e;c[o>>2]=f;c[k>>2]=0;f=c[l>>2]|0;if(c[(c[l>>2]|0)+40>>2]|0){c[h>>2]=c[f+40>>2];b=c[h>>2]|0;i=n;return b|0}if((d[f+16>>0]|0)<3){c[h>>2]=0;b=c[h>>2]|0;i=n;return b|0}f=c[l>>2]|0;do if(!(a[(c[l>>2]|0)+15>>0]|0)){b=(ai(f)|0)!=0;f=c[l>>2]|0;if(b){c[m>>2]=Zi(c[f+204>>2]|0)|0;c[j>>2]=0;if(!(c[m>>2]|0)){c[k>>2]=Xc(c[l>>2]|0,1,j,0)|0;c[m>>2]=c[j>>2];c[(c[m>>2]|0)+12>>2]=0}if(c[m>>2]|0)c[k>>2]=Zj(c[l>>2]|0,c[m>>2]|0,c[(c[l>>2]|0)+24>>2]|0,1)|0;_c(c[j>>2]|0);if(c[k>>2]|0)break;$h(c[(c[l>>2]|0)+204>>2]|0);break}c[k>>2]=kD(f,0)|0;if((((c[k>>2]|0)==0?(c[k>>2]=lD(c[l>>2]|0,c[p>>2]|0)|0,(c[k>>2]|0)==0):0)?(c[k>>2]=_j(c[l>>2]|0,0)|0,(c[k>>2]|0)==0):0)?(b=c[l>>2]|0,c[k>>2]=$j(b,Zi(c[(c[l>>2]|0)+204>>2]|0)|0)|0,(c[k>>2]|0)==0):0){$h(c[(c[l>>2]|0)+204>>2]|0);if((c[(c[l>>2]|0)+24>>2]|0)>>>0>(c[(c[l>>2]|0)+32>>2]|0)>>>0){c[g>>2]=(c[(c[l>>2]|0)+24>>2]|0)-((c[(c[l>>2]|0)+24>>2]|0)==(((c[282]|0)/(c[(c[l>>2]|0)+152>>2]|0)|0)+1|0)&1);c[k>>2]=ci(c[l>>2]|0,c[g>>2]|0)|0;if((c[k>>2]|0)!=0|(c[o>>2]|0)!=0)break}else if(c[o>>2]|0)break;c[k>>2]=kd(c[l>>2]|0,c[p>>2]|0)|0}}else Og(c[f+88>>2]|0);while(0);if((c[k>>2]|0)==0?(ai(c[l>>2]|0)|0)==0:0)a[(c[l>>2]|0)+16>>0]=5;c[h>>2]=c[k>>2];b=c[h>>2]|0;i=n;return b|0}function id(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;g=i;i=i+32|0;k=g+16|0;j=g+12|0;h=g+8|0;l=g;c[k>>2]=a;c[j>>2]=b;c[h>>2]=d;a=l;c[a>>2]=e;c[a+4>>2]=f;a=l;a=Ab[c[(c[c[k>>2]>>2]|0)+12>>2]&15](c[k>>2]|0,c[j>>2]|0,c[h>>2]|0,c[a>>2]|0,c[a+4>>2]|0)|0;i=g;return a|0}function jd(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;i=i+32|0;h=e+20|0;g=e+8|0;j=e;f=e+16|0;c[h>>2]=a;a=g;c[a>>2]=b;c[a+4>>2]=d;c[f>>2]=Gg(c[h>>2]|0,j)|0;if(c[f>>2]|0){a=c[f>>2]|0;i=e;return a|0}b=j;d=c[b+4>>2]|0;a=g;j=c[a+4>>2]|0;if(!((d|0)>(j|0)|((d|0)==(j|0)?(c[b>>2]|0)>>>0>(c[a>>2]|0)>>>0:0))){a=c[f>>2]|0;i=e;return a|0}a=g;c[f>>2]=Xh(c[h>>2]|0,c[a>>2]|0,c[a+4>>2]|0)|0;a=c[f>>2]|0;i=e;return a|0}function kd(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;g=i;i=i+16|0;h=g+12|0;k=g+8|0;f=g+4|0;j=g;c[h>>2]=b;c[k>>2]=e;c[f>>2]=0;if(c[c[(c[h>>2]|0)+60>>2]>>2]|0){c[j>>2]=c[k>>2];b=ig(c[(c[h>>2]|0)+60>>2]|0,21,c[j>>2]|0)|0;c[f>>2]=b;c[f>>2]=(c[f>>2]|0)==12?0:b}if(c[f>>2]|0){b=c[f>>2]|0;i=g;return b|0}if(a[(c[h>>2]|0)+7>>0]|0){b=c[f>>2]|0;i=g;return b|0}c[f>>2]=Yh(c[(c[h>>2]|0)+60>>2]|0,d[(c[h>>2]|0)+11>>0]|0)|0;b=c[f>>2]|0;i=g;return b|0}function ld(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;c[(c[e>>2]|0)+24>>2]=c[f>>2];i=d;return}function md(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;f=i;i=i+32|0;g=f+16|0;h=f+12|0;l=f+8|0;k=f+4|0;j=f;c[h>>2]=b;c[l>>2]=e;if(!(d[(c[h>>2]|0)+8>>0]|0)){c[g>>2]=0;b=c[g>>2]|0;i=f;return b|0}Pc(c[h>>2]|0);do if((d[(c[h>>2]|0)+8>>0]|0|0)==2){c[j>>2]=c[(c[h>>2]|0)+4>>2];c[k>>2]=jD(c[c[j>>2]>>2]|0)|0;if(!((c[k>>2]|0)!=0&(c[l>>2]|0)==0)){a[(c[j>>2]|0)+20>>0]=1;eD(c[j>>2]|0);break}c[g>>2]=c[k>>2];b=c[g>>2]|0;i=f;return b|0}while(0);fD(c[h>>2]|0);c[g>>2]=0;b=c[g>>2]|0;i=f;return b|0}function nd(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;h=i;i=i+32|0;g=h+16|0;l=h+12|0;k=h+8|0;f=h+4|0;j=h;c[l>>2]=b;c[k>>2]=e;c[f>>2]=0;if((d[(c[l>>2]|0)+8>>0]|0)==2){c[j>>2]=c[(c[l>>2]|0)+4>>2];Pc(c[l>>2]|0);if((a[(c[j>>2]|0)+17>>0]|0)!=0?(c[f>>2]=iD(c[j>>2]|0)|0,(c[f>>2]|0)!=0):0){c[g>>2]=c[f>>2];b=c[g>>2]|0;i=h;return b|0}if(a[(c[j>>2]|0)+19>>0]|0)ld(c[c[j>>2]>>2]|0,c[(c[j>>2]|0)+44>>2]|0);c[f>>2]=hd(c[c[j>>2]>>2]|0,c[k>>2]|0,0)|0}c[g>>2]=c[f>>2];b=c[g>>2]|0;i=h;return b|0}function od(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;b=i;i=i+32|0;d=b+16|0;f=b+12|0;h=b+8|0;g=b+4|0;e=b;c[f>>2]=a;if(!(c[f>>2]|0)){c[d>>2]=0;h=c[d>>2]|0;i=b;return h|0}c[g>>2]=c[(c[f>>2]|0)+20>>2];Pc(c[(c[f>>2]|0)+24>>2]|0);if(c[c[f>>2]>>2]|0){a=(c[(c[f>>2]|0)+24>>2]|0)+16|0;c[a>>2]=(c[a>>2]|0)+ -1}if(c[(c[f>>2]|0)+40>>2]|0){c[h>>2]=pd(Sb(c[(c[f>>2]|0)+24>>2]|0)|0)|0;while(1){if((c[c[h>>2]>>2]|0)==(c[f>>2]|0))break;c[h>>2]=(c[c[h>>2]>>2]|0)+44}c[c[h>>2]>>2]=c[(c[f>>2]|0)+44>>2]}qd(c[(c[f>>2]|0)+4>>2]|0,0,0)|0;if((c[(c[f>>2]|0)+28>>2]|0)==101)a=0;else a=c[(c[f>>2]|0)+28>>2]|0;c[e>>2]=a;if(c[c[f>>2]>>2]|0){Nc(c[c[f>>2]>>2]|0,c[e>>2]|0);rd(c[c[f>>2]>>2]|0)}if(c[c[f>>2]>>2]|0)hc(c[f>>2]|0);rd(c[g>>2]|0);c[d>>2]=c[e>>2];h=c[d>>2]|0;i=b;return h|0}function pd(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;i=d;return(c[b>>2]|0)+88|0}function qd(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;j=i;i=i+48|0;m=j+32|0;p=j+28|0;q=j+24|0;h=j+20|0;g=j+16|0;k=j+12|0;o=j+8|0;n=j+4|0;l=j;c[m>>2]=b;c[p>>2]=e;c[q>>2]=f;c[g>>2]=c[(c[m>>2]|0)+4>>2];Pc(c[m>>2]|0);if(!(c[p>>2]|0)){b=Hy(c[g>>2]|0,0,0)|0;c[p>>2]=b;c[h>>2]=b;if(c[h>>2]|0)c[q>>2]=0}else c[h>>2]=0;if((c[p>>2]|0)!=0?(c[o>>2]=sz(c[m>>2]|0,c[p>>2]|0,c[q>>2]|0)|0,(c[o>>2]|0)!=0):0)c[h>>2]=c[o>>2];if((d[(c[m>>2]|0)+8>>0]|0|0)!=2){b=c[m>>2]|0;fD(b);b=c[h>>2]|0;i=j;return b|0}c[n>>2]=Th(c[c[g>>2]>>2]|0)|0;if(c[n>>2]|0)c[h>>2]=c[n>>2];if(!(Bw(c[g>>2]|0,1,k,0)|0)){c[l>>2]=Hh((c[(c[k>>2]|0)+56>>2]|0)+28|0)|0;if(!(c[l>>2]|0))fd(c[c[g>>2]>>2]|0,l);c[(c[g>>2]|0)+44>>2]=c[l>>2];Rk(c[k>>2]|0)}a[(c[g>>2]|0)+20>>0]=1;eD(c[g>>2]|0);b=c[m>>2]|0;fD(b);b=c[h>>2]|0;i=j;return b|0}function rd(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;j=i;i=i+48|0;e=j+36|0;f=j+32|0;d=j+28|0;n=j+24|0;o=j+20|0;m=j+16|0;l=j+12|0;k=j+8|0;h=j+4|0;g=j;c[e>>2]=b;if((c[(c[e>>2]|0)+76>>2]|0)!=1691352191){i=j;return}if(Hk(c[e>>2]|0)|0){i=j;return}Ik(c[e>>2]|0,0);Jk(c[e>>2]|0);c[d>>2]=0;while(1){if((c[d>>2]|0)>=(c[(c[e>>2]|0)+20>>2]|0))break;c[n>>2]=(c[(c[e>>2]|0)+16>>2]|0)+(c[d>>2]<<4);if(c[(c[n>>2]|0)+4>>2]|0){a:do if(c[(c[n>>2]|0)+12>>2]|0){Pc(c[(c[n>>2]|0)+4>>2]|0);c[f>>2]=c[(c[(c[n>>2]|0)+12>>2]|0)+32>>2];while(1){if(!(c[f>>2]|0))break a;c[o>>2]=c[(c[f>>2]|0)+8>>2];eh(c[(c[o>>2]|0)+40>>2]|0);c[(c[o>>2]|0)+40>>2]=0;c[f>>2]=c[c[f>>2]>>2]}}while(0);Kk(c[(c[n>>2]|0)+4>>2]|0)|0;c[(c[n>>2]|0)+4>>2]=0;if((c[d>>2]|0)!=1)c[(c[n>>2]|0)+12>>2]=0}c[d>>2]=(c[d>>2]|0)+1}if(c[(c[(c[e>>2]|0)+16>>2]|0)+28>>2]|0)wh(c[(c[(c[e>>2]|0)+16>>2]|0)+28>>2]|0);Lk(c[e>>2]|0);Mk(c[e>>2]|0);c[d>>2]=0;while(1){if((c[d>>2]|0)>=23)break;c[k>>2]=c[(c[e>>2]|0)+336+(c[d>>2]<<2)>>2];while(1){if(!(c[k>>2]|0))break;c[l>>2]=c[(c[k>>2]|0)+28>>2];while(1){if(!(c[k>>2]|0))break;Gk(c[e>>2]|0,c[k>>2]|0);c[m>>2]=c[(c[k>>2]|0)+8>>2];Xb(c[e>>2]|0,c[k>>2]|0);c[k>>2]=c[m>>2]}c[k>>2]=c[l>>2]}c[d>>2]=(c[d>>2]|0)+1}c[f>>2]=c[(c[e>>2]|0)+436>>2];while(1){if(!(c[f>>2]|0))break;c[h>>2]=c[(c[f>>2]|0)+8>>2];c[d>>2]=0;while(1){if((c[d>>2]|0)>=3)break;if(c[(c[h>>2]|0)+((c[d>>2]|0)*20|0)+16>>2]|0)rb[c[(c[h>>2]|0)+((c[d>>2]|0)*20|0)+16>>2]&31](c[(c[h>>2]|0)+((c[d>>2]|0)*20|0)+8>>2]|0);c[d>>2]=(c[d>>2]|0)+1}Xb(c[e>>2]|0,c[h>>2]|0);c[f>>2]=c[c[f>>2]>>2]}mh((c[e>>2]|0)+428|0);c[f>>2]=c[(c[e>>2]|0)+316>>2];while(1){if(!(c[f>>2]|0))break;c[g>>2]=c[(c[f>>2]|0)+8>>2];if(c[(c[g>>2]|0)+12>>2]|0)rb[c[(c[g>>2]|0)+12>>2]&31](c[(c[g>>2]|0)+8>>2]|0);Xb(c[e>>2]|0,c[g>>2]|0);c[f>>2]=c[c[f>>2]>>2]}mh((c[e>>2]|0)+308|0);Nc(c[e>>2]|0,0);tf(c[(c[e>>2]|0)+232>>2]|0);c[(c[e>>2]|0)+76>>2]=-1254786768;Xb(c[e>>2]|0,c[(c[(c[e>>2]|0)+16>>2]|0)+28>>2]|0);c[(c[e>>2]|0)+76>>2]=-1623446221;if(a[(c[e>>2]|0)+251>>0]|0)hc(c[(c[e>>2]|0)+276>>2]|0);hc(c[e>>2]|0);i=j;return}function sd(a){a=a|0;var b=0,d=0,f=0;b=i;i=i+16|0;f=b+4|0;d=b;c[f>>2]=a;c[d>>2]=c[f>>2];if(!(c[d>>2]|0)){f=0;i=b;return f|0}if(!((e[(c[d>>2]|0)+88>>1]|0)>>>10&1)){f=0;i=b;return f|0}f=c[(c[d>>2]|0)+168>>2]|0;i=b;return f|0}function td(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;e=i;i=i+32|0;d=e+16|0;h=e+12|0;b=e+8|0;g=e+4|0;f=e;c[h>>2]=a;do if(!(c[h>>2]|0))c[b>>2]=0;else{c[g>>2]=c[h>>2];c[f>>2]=c[c[g>>2]>>2];if(!(ud(c[g>>2]|0)|0)){c[b>>2]=vd(c[g>>2]|0)|0;c[b>>2]=wd(c[f>>2]|0,c[b>>2]|0)|0;rd(c[f>>2]|0);break}c[d>>2]=Qb(67386)|0;h=c[d>>2]|0;i=e;return h|0}while(0);c[d>>2]=c[b>>2];h=c[d>>2]|0;i=e;return h|0}function ud(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+16|0;d=b+8|0;e=b+4|0;c[e>>2]=a;if(!(c[c[e>>2]>>2]|0)){tc(21,37056,b);c[d>>2]=1;e=c[d>>2]|0;i=b;return e|0}else{c[d>>2]=0;e=c[d>>2]|0;i=b;return e|0}return 0}function vd(a){a=a|0;var b=0,d=0,e=0;d=i;i=i+16|0;e=d+4|0;b=d;c[e>>2]=a;c[b>>2]=0;if(!((c[(c[e>>2]|0)+40>>2]|0)!=-1108210269?(c[(c[e>>2]|0)+40>>2]|0)!=1369188723:0))c[b>>2]=yd(c[e>>2]|0)|0;qn(c[e>>2]|0);i=d;return c[b>>2]|0}function wd(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0;e=i;i=i+16|0;f=e+8|0;h=e+4|0;g=e;c[h>>2]=a;c[g>>2]=b;if(!(c[h>>2]|0)){c[f>>2]=c[g>>2]&255;a=c[f>>2]|0;i=e;return a|0}if((c[g>>2]|0)==3082?1:(d[(c[h>>2]|0)+64>>0]|0|0)!=0){c[f>>2]=cD(c[h>>2]|0)|0;a=c[f>>2]|0;i=e;return a|0}else{c[f>>2]=c[g>>2]&c[(c[h>>2]|0)+56>>2];a=c[f>>2]|0;i=e;return a|0}return 0}function xd(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;i=i+16|0;f=b+8|0;d=b+4|0;e=b;c[f>>2]=a;if(!(c[f>>2]|0)){c[d>>2]=0;f=c[d>>2]|0;i=b;return f|0}else{c[e>>2]=c[f>>2];c[d>>2]=yd(c[e>>2]|0)|0;zd(c[e>>2]|0);c[d>>2]=wd(c[c[e>>2]>>2]|0,c[d>>2]|0)|0;f=c[d>>2]|0;i=b;return f|0}return 0}function yd(a){a=a|0;var d=0,f=0,g=0,h=0,j=0,k=0;f=i;i=i+16|0;h=f;d=f+8|0;g=f+4|0;c[d>>2]=a;c[g>>2]=c[c[d>>2]>>2];$y(c[d>>2]|0)|0;a=c[d>>2]|0;if((c[(c[d>>2]|0)+76>>2]|0)>=0){Wy(a)|0;Xb(c[g>>2]|0,c[(c[d>>2]|0)+44>>2]|0);c[(c[d>>2]|0)+44>>2]=0;if((e[(c[d>>2]|0)+88>>1]|0)>>>6&1){a=(c[d>>2]|0)+88|0;b[a>>1]=b[a>>1]&-33|32}}else if((c[a+80>>2]|0)!=0?((e[(c[d>>2]|0)+88>>1]|0)>>>5&1|0)!=0:0){k=c[g>>2]|0;j=c[(c[d>>2]|0)+80>>2]|0;a=(c[(c[d>>2]|0)+44>>2]|0)!=0?1200:0;c[h>>2]=c[(c[d>>2]|0)+44>>2];Lc(k,j,a,h);Xb(c[g>>2]|0,c[(c[d>>2]|0)+44>>2]|0);c[(c[d>>2]|0)+44>>2]=0}bD(c[d>>2]|0);k=(c[d>>2]|0)+136|0;c[k>>2]=0;c[k+4>>2]=0;c[(c[d>>2]|0)+40>>2]=649915045;i=f;return c[(c[d>>2]|0)+80>>2]&c[(c[g>>2]|0)+56>>2]|0}function zd(b){b=b|0;var d=0,e=0;d=i;i=i+16|0;e=d;c[e>>2]=b;c[(c[e>>2]|0)+40>>2]=-1108210269;c[(c[e>>2]|0)+76>>2]=-1;c[(c[e>>2]|0)+80>>2]=0;a[(c[e>>2]|0)+86>>0]=2;c[(c[e>>2]|0)+40>>2]=-1108210269;c[(c[e>>2]|0)+92>>2]=0;c[(c[e>>2]|0)+72>>2]=1;a[(c[e>>2]|0)+87>>0]=-1;c[(c[e>>2]|0)+104>>2]=0;b=(c[e>>2]|0)+144|0;c[b>>2]=0;c[b+4>>2]=0;i=d;return}function Ad(a){a=a|0;var d=0,f=0,g=0,h=0,j=0;f=i;i=i+16|0;j=f+12|0;h=f+8|0;d=f+4|0;g=f;c[j>>2]=a;c[d>>2]=0;c[g>>2]=c[j>>2];c[h>>2]=0;while(1){if((c[h>>2]|0)>=(b[(c[g>>2]|0)+68>>1]|0))break;Bd((c[(c[g>>2]|0)+60>>2]|0)+((c[h>>2]|0)*40|0)|0);b[(c[(c[g>>2]|0)+60>>2]|0)+((c[h>>2]|0)*40|0)+8>>1]=1;c[h>>2]=(c[h>>2]|0)+1}if(!((e[(c[g>>2]|0)+88>>1]|0)>>>10&1)){j=c[d>>2]|0;i=f;return j|0}if(!(c[(c[g>>2]|0)+188>>2]|0)){j=c[d>>2]|0;i=f;return j|0}j=(c[g>>2]|0)+88|0;b[j>>1]=b[j>>1]&-33|32;j=c[d>>2]|0;i=f;return j|0}function Bd(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;if(((e[(c[d>>2]|0)+8>>1]|0)&9312|0)==0?(c[(c[d>>2]|0)+24>>2]|0)==0:0){i=b;return}aD(c[d>>2]|0);i=b;return}function Cd(a){a=a|0;var d=0,f=0,g=0,h=0;d=i;i=i+16|0;f=d+8|0;g=d+4|0;h=d;c[g>>2]=a;c[h>>2]=c[g>>2];if(!((e[(c[h>>2]|0)+8>>1]|0)&18)){c[f>>2]=Ed(c[g>>2]|0)|0;h=c[f>>2]|0;i=d;return h|0}Dd(c[h>>2]|0)|0;g=(c[h>>2]|0)+8|0;b[g>>1]=e[g>>1]|0|16;if(c[(c[h>>2]|0)+12>>2]|0)a=c[(c[h>>2]|0)+16>>2]|0;else a=0;c[f>>2]=a;h=c[f>>2]|0;i=d;return h|0}function Dd(a){a=a|0;var d=0,f=0,g=0,h=0;d=i;i=i+16|0;f=d+8|0;g=d+4|0;h=d;c[g>>2]=a;do if((e[(c[g>>2]|0)+8>>1]|0)&16384){a=(c[(c[g>>2]|0)+12>>2]|0)+(c[c[g>>2]>>2]|0)|0;c[h>>2]=a;c[h>>2]=(c[h>>2]|0)<=0?1:a;if(!(Dk(c[g>>2]|0,c[h>>2]|0,1)|0)){_E((c[(c[g>>2]|0)+16>>2]|0)+(c[(c[g>>2]|0)+12>>2]|0)|0,0,c[c[g>>2]>>2]|0)|0;h=(c[g>>2]|0)+12|0;c[h>>2]=(c[h>>2]|0)+(c[c[g>>2]>>2]|0);h=(c[g>>2]|0)+8|0;b[h>>1]=(e[h>>1]|0)&-16897;break}c[f>>2]=7;h=c[f>>2]|0;i=d;return h|0}while(0);c[f>>2]=0;h=c[f>>2]|0;i=d;return h|0}function Ed(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;a=Md(c[d>>2]|0,1)|0;i=b;return a|0}function Fd(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;a=Gd(c[d>>2]|0,1)|0;i=b;return a|0}function Gd(b,d){b=b|0;d=d|0;var f=0,g=0,h=0,j=0,k=0;g=i;i=i+16|0;f=g+8|0;k=g+4|0;j=g+12|0;h=g;c[k>>2]=b;a[j>>0]=d;c[h>>2]=c[k>>2];if(((e[(c[h>>2]|0)+8>>1]|0)&16|0)==0?(Md(c[k>>2]|0,a[j>>0]|0)|0)==0:0){c[f>>2]=0;b=c[f>>2]|0;i=g;return b|0}d=c[(c[h>>2]|0)+12>>2]|0;if((e[(c[h>>2]|0)+8>>1]|0)&16384){c[f>>2]=d+(c[c[h>>2]>>2]|0);b=c[f>>2]|0;i=g;return b|0}else{c[f>>2]=d;b=c[f>>2]|0;i=g;return b|0}return 0}function Hd(a){a=a|0;var b=0.0,d=0,e=0;d=i;i=i+16|0;e=d;c[e>>2]=a;b=+Id(c[e>>2]|0);i=d;return+b}function Id(b){b=b|0;var d=0,f=0,g=0,j=0,k=0,l=0.0;d=i;i=i+32|0;f=d+8|0;j=d+16|0;g=d;c[j>>2]=b;b=c[j>>2]|0;if((e[(c[j>>2]|0)+8>>1]|0)&8){h[f>>3]=+h[b>>3];l=+h[f>>3];i=d;return+l}k=c[j>>2]|0;if((e[b+8>>1]|0)&4){h[f>>3]=+((c[k>>2]|0)>>>0)+4294967296.0*+(c[k+4>>2]|0);l=+h[f>>3];i=d;return+l}if((e[k+8>>1]|0)&18){h[g>>3]=0.0;Lm(c[(c[j>>2]|0)+16>>2]|0,g,c[(c[j>>2]|0)+12>>2]|0,a[(c[j>>2]|0)+10>>0]|0)|0;h[f>>3]=+h[g>>3];l=+h[f>>3];i=d;return+l}else{h[f>>3]=0.0;l=+h[f>>3];i=d;return+l}return 0.0}function Jd(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;a=Kd(c[d>>2]|0)|0;i=b;return a|0}function Kd(b){b=b|0;var d=0,f=0,g=0,j=0,k=0;d=i;i=i+32|0;f=d+8|0;g=d+20|0;k=d+16|0;j=d;c[g>>2]=b;c[k>>2]=e[(c[g>>2]|0)+8>>1];do if(!(c[k>>2]&4)){if(c[k>>2]&8){j=Ip(+h[c[g>>2]>>3])|0;k=f;c[k>>2]=j;c[k+4>>2]=D;break}if(c[k>>2]&18){k=j;c[k>>2]=0;c[k+4>>2]=0;wg(c[(c[g>>2]|0)+16>>2]|0,j,c[(c[g>>2]|0)+12>>2]|0,a[(c[g>>2]|0)+10>>0]|0)|0;g=j;j=c[g+4>>2]|0;k=f;c[k>>2]=c[g>>2];c[k+4>>2]=j;break}else{k=f;c[k>>2]=0;c[k+4>>2]=0;break}}else{g=c[g>>2]|0;j=c[g+4>>2]|0;k=f;c[k>>2]=c[g>>2];c[k+4>>2]=j}while(0);k=f;D=c[k+4>>2]|0;i=d;return c[k>>2]|0}function Ld(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;a=Kd(c[d>>2]|0)|0;i=b;return a|0}function Md(b,f){b=b|0;f=f|0;var g=0,h=0,j=0,k=0;h=i;i=i+16|0;g=h+4|0;j=h;k=h+8|0;c[j>>2]=b;a[k>>0]=f;do if(c[j>>2]|0){if(((e[(c[j>>2]|0)+8>>1]|0)&514|0)==514?(d[(c[j>>2]|0)+10>>0]|0|0)==(d[k>>0]|0|0):0){c[g>>2]=c[(c[j>>2]|0)+16>>2];break}if((e[(c[j>>2]|0)+8>>1]|0)&1){c[g>>2]=0;break}else{c[g>>2]=$C(c[j>>2]|0,a[k>>0]|0)|0;break}}else c[g>>2]=0;while(0);i=h;return c[g>>2]|0}function Nd(a){a=a|0;var b=0,f=0;f=i;i=i+16|0;b=f;c[b>>2]=a;i=f;return d[1144+((e[(c[b>>2]|0)+8>>1]|0)&31)>>0]|0|0}function Od(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;f=i;i=i+16|0;k=f+12|0;j=f+8|0;h=f+4|0;g=f;c[k>>2]=a;c[j>>2]=b;c[h>>2]=d;c[g>>2]=e;Pd(c[k>>2]|0,c[j>>2]|0,c[h>>2]|0,0,c[g>>2]|0);i=f;return}function Pd(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0;h=i;i=i+32|0;j=h+12|0;n=h+8|0;m=h+4|0;l=h+16|0;k=h;c[j>>2]=b;c[n>>2]=d;c[m>>2]=e;a[l>>0]=f;c[k>>2]=g;if((Vd(c[c[j>>2]>>2]|0,c[n>>2]|0,c[m>>2]|0,a[l>>0]|0,c[k>>2]|0)|0)!=18){i=h;return}he(c[j>>2]|0);i=h;return}function Qd(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;g=i;i=i+32|0;h=g+16|0;k=g+12|0;l=g;j=g+8|0;c[h>>2]=a;c[k>>2]=b;a=l;c[a>>2]=d;c[a+4>>2]=e;c[j>>2]=f;a=l;b=c[a+4>>2]|0;if(b>>>0>0|(b|0)==0&(c[a>>2]|0)>>>0>2147483647){Rd(c[k>>2]|0,c[j>>2]|0,c[h>>2]|0)|0;i=g;return}else{Pd(c[h>>2]|0,c[k>>2]|0,c[l>>2]|0,0,c[j>>2]|0);i=g;return}}function Rd(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+16|0;g=e+8|0;h=e+4|0;f=e;c[g>>2]=a;c[h>>2]=b;c[f>>2]=d;if(!((c[h>>2]|0)==0|(c[h>>2]|0)==(-1|0)))rb[c[h>>2]&31](c[g>>2]|0);if(!(c[f>>2]|0)){i=e;return 18}he(c[f>>2]|0);i=e;return 18}function Sd(a,b){a=a|0;b=+b;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+8|0;e=d;c[f>>2]=a;h[e>>3]=b;Td(c[c[f>>2]>>2]|0,+h[e>>3]);i=d;return}function Td(a,d){a=a|0;d=+d;var e=0,f=0,g=0;e=i;i=i+16|0;g=e+8|0;f=e;c[g>>2]=a;h[f>>3]=d;_d(c[g>>2]|0);if($w(+h[f>>3])|0){i=e;return}h[c[g>>2]>>3]=+h[f>>3];b[(c[g>>2]|0)+8>>1]=8;i=e;return}function Ud(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;f=i;i=i+16|0;j=f+8|0;h=f+4|0;g=f;c[j>>2]=b;c[h>>2]=d;c[g>>2]=e;c[(c[j>>2]|0)+20>>2]=1;a[(c[j>>2]|0)+25>>0]=1;Vd(c[c[j>>2]>>2]|0,c[h>>2]|0,c[g>>2]|0,1,-1)|0;i=f;return}function Vd(f,g,h,j,k){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;o=i;i=i+48|0;l=o+28|0;n=o+24|0;u=o+20|0;v=o+16|0;r=o+34|0;s=o+12|0;m=o+8|0;p=o+4|0;q=o+32|0;t=o;c[n>>2]=f;c[u>>2]=g;c[v>>2]=h;a[r>>0]=j;c[s>>2]=k;c[m>>2]=c[v>>2];b[q>>1]=0;k=c[n>>2]|0;if(!(c[u>>2]|0)){_d(k);c[l>>2]=0;v=c[l>>2]|0;i=o;return v|0}if(c[k+32>>2]|0)c[p>>2]=c[(c[(c[n>>2]|0)+32>>2]|0)+88>>2];else c[p>>2]=1e9;b[q>>1]=(d[r>>0]|0)==0?16:2;if((c[m>>2]|0)<0){a:do if((d[r>>0]|0)==1){c[m>>2]=Mb(c[u>>2]|0)|0;if((c[m>>2]|0)>(c[p>>2]|0))c[m>>2]=(c[p>>2]|0)+1}else{c[m>>2]=0;while(1){if((c[m>>2]|0)>(c[p>>2]|0))break a;if(!(a[(c[u>>2]|0)+(c[m>>2]|0)>>0]|a[(c[u>>2]|0)+((c[m>>2]|0)+1)>>0]))break a;c[m>>2]=(c[m>>2]|0)+2}}while(0);b[q>>1]=e[q>>1]|512}do if((c[s>>2]|0)!=(-1|0)){v=(c[s>>2]|0)==16;Bd(c[n>>2]|0);t=c[u>>2]|0;c[(c[n>>2]|0)+16>>2]=t;if(v){c[(c[n>>2]|0)+20>>2]=t;v=Bk(c[(c[n>>2]|0)+32>>2]|0,c[(c[n>>2]|0)+20>>2]|0)|0;c[(c[n>>2]|0)+24>>2]=v;break}else{c[(c[n>>2]|0)+36>>2]=c[s>>2];b[q>>1]=e[q>>1]|((c[s>>2]|0)==0?2048:1024);break}}else{c[t>>2]=c[m>>2];if(e[q>>1]&512)c[t>>2]=(c[t>>2]|0)+((d[r>>0]|0)==1?1:2);if((c[m>>2]|0)>(c[p>>2]|0)){c[l>>2]=18;v=c[l>>2]|0;i=o;return v|0}if(!(Lp(c[n>>2]|0,(c[t>>2]|0)>32?c[t>>2]|0:32)|0)){dF(c[(c[n>>2]|0)+16>>2]|0,c[u>>2]|0,c[t>>2]|0)|0;break}c[l>>2]=7;v=c[l>>2]|0;i=o;return v|0}while(0);c[(c[n>>2]|0)+12>>2]=c[m>>2];b[(c[n>>2]|0)+8>>1]=b[q>>1]|0;if(!(d[r>>0]|0))q=1;else q=d[r>>0]|0;a[(c[n>>2]|0)+10>>0]=q;if((d[(c[n>>2]|0)+10>>0]|0)!=1?(_C(c[n>>2]|0)|0)!=0:0){c[l>>2]=7;v=c[l>>2]|0;i=o;return v|0}if((c[m>>2]|0)>(c[p>>2]|0)){c[l>>2]=18;v=c[l>>2]|0;i=o;return v|0}else{c[l>>2]=0;v=c[l>>2]|0;i=o;return v|0}return 0}function Wd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;a=c[f>>2]|0;Xd(c[c[e>>2]>>2]|0,a,((a|0)<0)<<31>>31);i=d;return}function Xd(a,d,f){a=a|0;d=d|0;f=f|0;var g=0,h=0,j=0;g=i;i=i+16|0;h=g+8|0;j=g;c[h>>2]=a;a=j;c[a>>2]=d;c[a+4>>2]=f;if((e[(c[h>>2]|0)+8>>1]|0)&9312){a=j;ZC(c[h>>2]|0,c[a>>2]|0,c[a+4>>2]|0);i=g;return}else{d=c[j+4>>2]|0;a=c[h>>2]|0;c[a>>2]=c[j>>2];c[a+4>>2]=d;b[(c[h>>2]|0)+8>>1]=4;i=g;return}}function Yd(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=i;i=i+16|0;f=e+8|0;g=e;c[f>>2]=a;a=g;c[a>>2]=b;c[a+4>>2]=d;a=g;Xd(c[c[f>>2]>>2]|0,c[a>>2]|0,c[a+4>>2]|0);i=e;return}function Zd(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;_d(c[c[d>>2]>>2]|0);i=b;return}function _d(a){a=a|0;var d=0,f=0;d=i;i=i+16|0;f=d;c[f>>2]=a;a=c[f>>2]|0;if((e[(c[f>>2]|0)+8>>1]|0)&9312){gn(a);i=d;return}else{b[a+8>>1]=1;i=d;return}}function $d(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;f=i;i=i+16|0;k=f+12|0;j=f+8|0;h=f+4|0;g=f;c[k>>2]=a;c[j>>2]=b;c[h>>2]=d;c[g>>2]=e;Pd(c[k>>2]|0,c[j>>2]|0,c[h>>2]|0,1,c[g>>2]|0);i=f;return}function ae(b,e,f,g,h,j){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0;n=i;i=i+32|0;m=n+16|0;p=n+12|0;o=n;l=n+8|0;k=n+20|0;c[m>>2]=b;c[p>>2]=e;b=o;c[b>>2]=f;c[b+4>>2]=g;c[l>>2]=h;a[k>>0]=j;if((d[k>>0]|0)==4)a[k>>0]=(a[1136]|0)==0?3:2;b=o;e=c[b+4>>2]|0;if(e>>>0>0|(e|0)==0&(c[b>>2]|0)>>>0>2147483647){Rd(c[p>>2]|0,c[l>>2]|0,c[m>>2]|0)|0;i=n;return}else{Pd(c[m>>2]|0,c[p>>2]|0,c[o>>2]|0,a[k>>0]|0,c[l>>2]|0);i=n;return}}function be(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;ce(c[c[f>>2]>>2]|0,c[e>>2]|0)|0;i=d;return}function ce(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,j=0;g=i;i=i+16|0;h=g+8|0;j=g+4|0;f=g;c[h>>2]=a;c[j>>2]=d;c[f>>2]=0;if((e[(c[h>>2]|0)+8>>1]|0)&9312)gn(c[h>>2]|0);a=c[h>>2]|0;d=c[j>>2]|0;c[a+0>>2]=c[d+0>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2];c[a+16>>2]=c[d+16>>2];a=(c[h>>2]|0)+8|0;b[a>>1]=(e[a>>1]|0)&-1025;if(!((e[(c[h>>2]|0)+8>>1]|0)&18)){a=c[f>>2]|0;i=g;return a|0}if((e[(c[j>>2]|0)+8>>1]|0)&2048){a=c[f>>2]|0;i=g;return a|0}a=(c[h>>2]|0)+8|0;b[a>>1]=e[a>>1]|0|4096;c[f>>2]=Ak(c[h>>2]|0)|0;a=c[f>>2]|0;i=g;return a|0}function de(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;ee(c[c[f>>2]>>2]|0,c[e>>2]|0);i=d;return}function ee(d,e){d=d|0;e=e|0;var f=0,g=0,h=0;f=i;i=i+16|0;g=f+4|0;h=f;c[g>>2]=d;c[h>>2]=e;Bd(c[g>>2]|0);b[(c[g>>2]|0)+8>>1]=16400;c[(c[g>>2]|0)+12>>2]=0;if((c[h>>2]|0)<0)c[h>>2]=0;c[c[g>>2]>>2]=c[h>>2];a[(c[g>>2]|0)+10>>0]=1;c[(c[g>>2]|0)+16>>2]=0;i=f;return}function fe(b,d){b=b|0;d=d|0;var f=0,g=0,h=0;f=i;i=i+16|0;g=f+4|0;h=f;c[g>>2]=b;c[h>>2]=d;c[(c[g>>2]|0)+20>>2]=c[h>>2];a[(c[g>>2]|0)+25>>0]=1;if(!((e[(c[c[g>>2]>>2]|0)+8>>1]|0)&1)){i=f;return}b=c[c[g>>2]>>2]|0;Vd(b,ge(c[h>>2]|0)|0,-1,1,0)|0;i=f;return}function ge(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+16|0;e=b+4|0;d=b;c[e>>2]=a;c[d>>2]=5952;if((c[e>>2]|0)!=516){c[e>>2]=c[e>>2]&255;if((c[e>>2]|0)>=0&(c[e>>2]|0)<27?(c[5112+(c[e>>2]<<2)>>2]|0)!=0:0)c[d>>2]=c[5112+(c[e>>2]<<2)>>2]}else c[d>>2]=5968;i=b;return c[d>>2]|0}function he(b){b=b|0;var d=0,e=0;d=i;i=i+16|0;e=d;c[e>>2]=b;c[(c[e>>2]|0)+20>>2]=18;a[(c[e>>2]|0)+25>>0]=1;Vd(c[c[e>>2]>>2]|0,1176,-1,1,0)|0;i=d;return}function ie(b){b=b|0;var d=0,e=0;d=i;i=i+16|0;e=d;c[e>>2]=b;_d(c[c[e>>2]>>2]|0);c[(c[e>>2]|0)+20>>2]=7;a[(c[e>>2]|0)+25>>0]=1;a[(c[(c[c[e>>2]>>2]|0)+32>>2]|0)+64>>0]=1;i=d;return}function je(d){d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;j=i;i=i+48|0;f=j+32|0;m=j+28|0;k=j+24|0;l=j+20|0;e=j+16|0;o=j+12|0;g=j+8|0;n=j+4|0;h=j;c[m>>2]=d;c[k>>2]=0;c[l>>2]=0;c[e>>2]=c[m>>2];c[o>>2]=0;if(ke(c[e>>2]|0)|0){c[f>>2]=Qb(67871)|0;o=c[f>>2]|0;i=j;return o|0}c[g>>2]=c[c[e>>2]>>2];d=(c[e>>2]|0)+88|0;b[d>>1]=b[d>>1]&-2049;while(1){d=le(c[e>>2]|0)|0;c[k>>2]=d;if((d|0)!=17)break;d=c[o>>2]|0;c[o>>2]=d+1;if((d|0)>=50)break;c[n>>2]=c[(c[e>>2]|0)+76>>2];d=me(c[e>>2]|0)|0;c[k>>2]=d;c[l>>2]=d;if(c[k>>2]|0)break;xd(c[m>>2]|0)|0;if((c[n>>2]|0)<0)continue;d=(c[e>>2]|0)+88|0;b[d>>1]=b[d>>1]&-2049|2048}do if(c[l>>2]|0){c[h>>2]=Ed(c[(c[g>>2]|0)+232>>2]|0)|0;Xb(c[g>>2]|0,c[(c[e>>2]|0)+44>>2]|0);if(a[(c[g>>2]|0)+64>>0]|0){c[(c[e>>2]|0)+44>>2]=0;c[k>>2]=7;c[(c[e>>2]|0)+80>>2]=7;break}else{o=ne(c[g>>2]|0,c[h>>2]|0)|0;c[(c[e>>2]|0)+44>>2]=o;c[(c[e>>2]|0)+80>>2]=c[l>>2];break}}while(0);c[k>>2]=wd(c[g>>2]|0,c[k>>2]|0)|0;c[f>>2]=c[k>>2];o=c[f>>2]|0;i=j;return o|0}function ke(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+16|0;d=b+8|0;e=b+4|0;c[e>>2]=a;if(!(c[e>>2]|0)){tc(21,37016,b);c[d>>2]=1;e=c[d>>2]|0;i=b;return e|0}else{c[d>>2]=ud(c[e>>2]|0)|0;e=c[d>>2]|0;i=b;return e|0}return 0}function le(d){d=d|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;g=i;i=i+32|0;f=g+20|0;j=g+16|0;k=g+12|0;h=g+8|0;l=g;c[j>>2]=d;if((c[(c[j>>2]|0)+40>>2]|0)!=-1108210269)xd(c[j>>2]|0)|0;c[k>>2]=c[c[j>>2]>>2];d=c[j>>2]|0;if(a[(c[k>>2]|0)+64>>0]|0){c[d+80>>2]=7;c[f>>2]=7;d=c[f>>2]|0;i=g;return d|0}if((c[d+76>>2]|0)<=0?((e[(c[j>>2]|0)+88>>1]|0)>>>5&1|0)!=0:0){c[(c[j>>2]|0)+80>>2]=17;c[h>>2]=1}else{if((c[(c[j>>2]|0)+76>>2]|0)<0){if(!(c[(c[k>>2]|0)+148>>2]|0))c[(c[k>>2]|0)+240>>2]=0;if((c[(c[k>>2]|0)+180>>2]|0)!=0?(a[(c[k>>2]|0)+145>>0]|0)==0:0)Sm(c[c[k>>2]>>2]|0,(c[j>>2]|0)+128|0)|0;d=(c[k>>2]|0)+148|0;c[d>>2]=(c[d>>2]|0)+1;if(!((e[(c[j>>2]|0)+88>>1]|0)>>>8&1)){d=(c[k>>2]|0)+156|0;c[d>>2]=(c[d>>2]|0)+1}if((e[(c[j>>2]|0)+88>>1]|0)>>>9&1){d=(c[k>>2]|0)+152|0;c[d>>2]=(c[d>>2]|0)+1}c[(c[j>>2]|0)+76>>2]=0}if(b[(c[j>>2]|0)+88>>1]&3)c[h>>2]=Ty(c[j>>2]|0)|0;else{d=(c[k>>2]|0)+160|0;c[d>>2]=(c[d>>2]|0)+1;c[h>>2]=Uy(c[j>>2]|0)|0;d=(c[k>>2]|0)+160|0;c[d>>2]=(c[d>>2]|0)+ -1}if((((c[h>>2]|0)!=100?(c[(c[k>>2]|0)+180>>2]|0)!=0:0)?(a[(c[k>>2]|0)+145>>0]|0)==0:0)?(c[(c[j>>2]|0)+168>>2]|0)!=0:0){Sm(c[c[k>>2]>>2]|0,l)|0;o=c[(c[k>>2]|0)+180>>2]|0;n=c[(c[k>>2]|0)+184>>2]|0;m=c[(c[j>>2]|0)+168>>2]|0;d=(c[j>>2]|0)+128|0;d=ZE(c[l>>2]|0,c[l+4>>2]|0,c[d>>2]|0,c[d+4>>2]|0)|0;d=lF(d|0,D|0,1e6,0)|0;Bb[o&3](n,m,d,D)}if((c[h>>2]|0)==101?(o=Vy(c[k>>2]|0)|0,c[(c[j>>2]|0)+80>>2]=o,(c[(c[j>>2]|0)+80>>2]|0)!=0):0)c[h>>2]=1;c[(c[k>>2]|0)+52>>2]=c[h>>2];if(7==(wd(c[c[j>>2]>>2]|0,c[(c[j>>2]|0)+80>>2]|0)|0))c[(c[j>>2]|0)+80>>2]=7}if(((c[h>>2]|0)!=100?((e[(c[j>>2]|0)+88>>1]|0)>>>10&1|0)!=0:0)&(c[h>>2]|0)!=101)c[h>>2]=Wy(c[j>>2]|0)|0;c[f>>2]=c[h>>2]&c[(c[k>>2]|0)+56>>2];o=c[f>>2]|0;i=g;return o|0}function me(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;d=i;i=i+32|0;e=d+20|0;g=d+16|0;h=d+12|0;f=d+8|0;k=d+4|0;j=d;c[g>>2]=b;c[k>>2]=sd(c[g>>2]|0)|0;c[j>>2]=Fs(c[g>>2]|0)|0;c[h>>2]=pf(c[j>>2]|0,c[k>>2]|0,-1,0,c[g>>2]|0,f,0)|0;if(!(c[h>>2]|0)){Cy(c[f>>2]|0,c[g>>2]|0);Ne(c[f>>2]|0,c[g>>2]|0)|0;Dy(c[f>>2]|0);vd(c[f>>2]|0)|0;c[e>>2]=0;k=c[e>>2]|0;i=d;return k|0}if((c[h>>2]|0)==7)a[(c[j>>2]|0)+64>>0]=1;c[e>>2]=c[h>>2];k=c[e>>2]|0;i=d;return k|0}function ne(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;d=i;i=i+32|0;e=d+16|0;j=d+12|0;g=d+8|0;f=d+4|0;h=d;c[j>>2]=a;c[g>>2]=b;if(!(c[g>>2]|0)){c[e>>2]=0;a=c[e>>2]|0;i=d;return a|0}c[h>>2]=(Mb(c[g>>2]|0)|0)+1;a=c[h>>2]|0;c[f>>2]=Qe(c[j>>2]|0,a,((a|0)<0)<<31>>31)|0;if(c[f>>2]|0)dF(c[f>>2]|0,c[g>>2]|0,c[h>>2]|0)|0;c[e>>2]=c[f>>2];a=c[e>>2]|0;i=d;return a|0}function oe(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;i=d;return c[(c[(c[b>>2]|0)+4>>2]|0)+4>>2]|0}function pe(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;i=d;return c[(c[c[b>>2]>>2]|0)+32>>2]|0}function qe(a,b){a=a|0;b=b|0;var d=0,f=0,g=0,h=0;d=i;i=i+16|0;f=d+8|0;h=d+4|0;g=d;c[h>>2]=a;c[g>>2]=b;b=c[h>>2]|0;if(!((e[(c[(c[h>>2]|0)+8>>2]|0)+8>>1]|0)&8192)){c[f>>2]=re(b,c[g>>2]|0)|0;h=c[f>>2]|0;i=d;return h|0}else{c[f>>2]=c[(c[b+8>>2]|0)+16>>2];h=c[f>>2]|0;i=d;return h|0}return 0}function re(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+16|0;h=e+8|0;g=e+4|0;f=e;c[h>>2]=a;c[g>>2]=d;c[f>>2]=c[(c[h>>2]|0)+8>>2];d=c[f>>2]|0;if((c[g>>2]|0)>0){Lp(d,c[g>>2]|0)|0;b[(c[f>>2]|0)+8>>1]=8192;c[c[f>>2]>>2]=c[(c[h>>2]|0)+4>>2];if(c[(c[f>>2]|0)+16>>2]|0)_E(c[(c[f>>2]|0)+16>>2]|0,0,c[g>>2]|0)|0}else{_d(d);c[(c[f>>2]|0)+16>>2]=0}i=e;return c[(c[f>>2]|0)+16>>2]|0}function se(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+16|0;h=e+12|0;g=e;f=e+8|0;c[h>>2]=a;a=g;c[a>>2]=b;c[a+4>>2]=d;a=g;c[f>>2]=Qe(c[h>>2]|0,c[a>>2]|0,c[a+4>>2]|0)|0;if(!(c[f>>2]|0)){h=c[f>>2]|0;i=e;return h|0}_E(c[f>>2]|0,0,c[g>>2]|0)|0;h=c[f>>2]|0;i=e;return h|0}function te(a){a=a|0;var b=0,d=0,f=0;b=i;i=i+16|0;f=b+4|0;d=b;c[f>>2]=a;c[d>>2]=c[f>>2];if(!(c[d>>2]|0)){f=0;i=b;return f|0}f=e[(c[d>>2]|0)+84>>1]|0;i=b;return f|0}function ue(a){a=a|0;var b=0,d=0,f=0,g=0;b=i;i=i+16|0;d=b+8|0;g=b+4|0;f=b;c[g>>2]=a;c[f>>2]=c[g>>2];if((c[f>>2]|0)!=0?(c[(c[f>>2]|0)+20>>2]|0)!=0:0){c[d>>2]=e[(c[f>>2]|0)+84>>1];g=c[d>>2]|0;i=b;return g|0}c[d>>2]=0;g=c[d>>2]|0;i=b;return g|0}function ve(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;e=i;i=i+16|0;f=e+8|0;g=e+4|0;d=e;c[f>>2]=a;c[g>>2]=b;c[d>>2]=Cd(we(c[f>>2]|0,c[g>>2]|0)|0)|0;xe(c[f>>2]|0);i=e;return c[d>>2]|0}function we(a,b){a=a|0;b=b|0;var d=0,f=0,g=0,h=0,j=0;d=i;i=i+16|0;j=d+12|0;g=d+8|0;h=d+4|0;f=d;c[j>>2]=a;c[g>>2]=b;c[h>>2]=c[j>>2];if(((c[h>>2]|0)!=0?(c[(c[h>>2]|0)+20>>2]|0)!=0:0)?(c[g>>2]|0)>=0?(c[g>>2]|0)<(e[(c[h>>2]|0)+84>>1]|0|0):0:0){c[f>>2]=(c[(c[h>>2]|0)+20>>2]|0)+((c[g>>2]|0)*40|0);j=c[f>>2]|0;i=d;return j|0}if((c[h>>2]|0)!=0?(c[c[h>>2]>>2]|0)!=0:0)Nc(c[c[h>>2]>>2]|0,25);c[f>>2]=Sy()|0;j=c[f>>2]|0;i=d;return j|0}function xe(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+16|0;e=b+4|0;d=b;c[e>>2]=a;c[d>>2]=c[e>>2];if(!(c[d>>2]|0)){i=b;return}e=wd(c[c[d>>2]>>2]|0,c[(c[d>>2]|0)+80>>2]|0)|0;c[(c[d>>2]|0)+80>>2]=e;i=b;return}function ye(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;e=i;i=i+16|0;f=e+8|0;g=e+4|0;d=e;c[f>>2]=a;c[g>>2]=b;c[d>>2]=Fd(we(c[f>>2]|0,c[g>>2]|0)|0)|0;xe(c[f>>2]|0);i=e;return c[d>>2]|0}function ze(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;e=i;i=i+16|0;f=e+12|0;g=e+8|0;d=e;c[f>>2]=a;c[g>>2]=b;h[d>>3]=+Hd(we(c[f>>2]|0,c[g>>2]|0)|0);xe(c[f>>2]|0);i=e;return+(+h[d>>3])}function Ae(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;e=i;i=i+16|0;f=e+8|0;g=e+4|0;d=e;c[f>>2]=a;c[g>>2]=b;c[d>>2]=Ed(we(c[f>>2]|0,c[g>>2]|0)|0)|0;xe(c[f>>2]|0);i=e;return c[d>>2]|0}function Be(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;e=i;i=i+16|0;f=e+8|0;g=e+4|0;d=e;c[f>>2]=a;c[g>>2]=b;c[d>>2]=Nd(we(c[f>>2]|0,c[g>>2]|0)|0)|0;xe(c[f>>2]|0);i=e;return c[d>>2]|0}function Ce(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;a=De(c[f>>2]|0,c[e>>2]|0,17,0)|0;i=d;return a|0}function De(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;m=i;i=i+32|0;p=m+28|0;g=m+24|0;n=m+20|0;k=m+16|0;h=m+12|0;o=m+8|0;l=m+4|0;j=m;c[p>>2]=b;c[g>>2]=d;c[n>>2]=e;c[k>>2]=f;c[h>>2]=0;c[o>>2]=c[p>>2];c[j>>2]=c[c[o>>2]>>2];c[l>>2]=te(c[p>>2]|0)|0;if(!((c[g>>2]|0)>=0?(c[g>>2]|0)<(c[l>>2]|0):0)){p=c[h>>2]|0;i=m;return p|0}p=$(c[k>>2]|0,c[l>>2]|0)|0;c[g>>2]=(c[g>>2]|0)+p;c[h>>2]=ub[c[n>>2]&31]((c[(c[o>>2]|0)+16>>2]|0)+((c[g>>2]|0)*40|0)|0)|0;if(!(a[(c[j>>2]|0)+64>>0]|0)){p=c[h>>2]|0;i=m;return p|0}a[(c[j>>2]|0)+64>>0]=0;c[h>>2]=0;p=c[h>>2]|0;i=m;return p|0}function Ee(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;g=i;i=i+32|0;m=g+16|0;l=g+12|0;k=g+8|0;j=g+4|0;h=g;c[m>>2]=a;c[l>>2]=b;c[k>>2]=d;c[j>>2]=e;c[h>>2]=f;a=Fe(c[m>>2]|0,c[l>>2]|0,c[k>>2]|0,c[j>>2]|0,c[h>>2]|0,0)|0;i=g;return a|0}function Fe(b,e,f,g,h,j){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;q=i;i=i+48|0;t=q+28|0;p=q+24|0;n=q+20|0;r=q+16|0;m=q+12|0;s=q+32|0;o=q+8|0;k=q+4|0;l=q;c[t>>2]=b;c[p>>2]=e;c[n>>2]=f;c[r>>2]=g;c[m>>2]=h;a[s>>0]=j;c[o>>2]=c[t>>2];c[l>>2]=He(c[o>>2]|0,c[p>>2]|0)|0;if(c[l>>2]|0){if(!((c[m>>2]|0)!=0&(c[m>>2]|0)!=(-1|0))){t=c[l>>2]|0;i=q;return t|0}rb[c[m>>2]&31](c[n>>2]|0);t=c[l>>2]|0;i=q;return t|0}if(!(c[n>>2]|0)){t=c[l>>2]|0;i=q;return t|0}c[k>>2]=(c[(c[o>>2]|0)+60>>2]|0)+(((c[p>>2]|0)-1|0)*40|0);c[l>>2]=Vd(c[k>>2]|0,c[n>>2]|0,c[r>>2]|0,a[s>>0]|0,c[m>>2]|0)|0;if((c[l>>2]|0)==0?(d[s>>0]|0|0)!=0:0)c[l>>2]=yk(c[k>>2]|0,d[(c[(c[(c[c[o>>2]>>2]|0)+16>>2]|0)+12>>2]|0)+77>>0]|0)|0;Nc(c[c[o>>2]>>2]|0,c[l>>2]|0);c[l>>2]=wd(c[c[o>>2]>>2]|0,c[l>>2]|0)|0;t=c[l>>2]|0;i=q;return t|0}function Ge(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0,g=0,j=0,k=0,l=0;e=i;i=i+32|0;l=e+20|0;j=e+16|0;k=e;f=e+12|0;g=e+8|0;c[l>>2]=a;c[j>>2]=b;h[k>>3]=d;c[g>>2]=c[l>>2];c[f>>2]=He(c[g>>2]|0,c[j>>2]|0)|0;if(c[f>>2]|0){l=c[f>>2]|0;i=e;return l|0}Td((c[(c[g>>2]|0)+60>>2]|0)+(((c[j>>2]|0)-1|0)*40|0)|0,+h[k>>3]);l=c[f>>2]|0;i=e;return l|0}function He(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;g=i;i=i+32|0;m=g;h=g+16|0;j=g+12|0;k=g+8|0;l=g+4|0;c[j>>2]=a;c[k>>2]=d;if(ke(c[j>>2]|0)|0){c[h>>2]=Qb(68415)|0;a=c[h>>2]|0;i=g;return a|0}if((c[(c[j>>2]|0)+40>>2]|0)==-1108210269?(c[(c[j>>2]|0)+76>>2]|0)<0:0){if((c[k>>2]|0)>=1?(c[k>>2]|0)<=(b[(c[j>>2]|0)+68>>1]|0):0){c[k>>2]=(c[k>>2]|0)+ -1;c[l>>2]=(c[(c[j>>2]|0)+60>>2]|0)+((c[k>>2]|0)*40|0);Bd(c[l>>2]|0);b[(c[l>>2]|0)+8>>1]=1;Nc(c[c[j>>2]>>2]|0,0);do if((e[(c[j>>2]|0)+88>>1]|0)>>>10&1){if(!((c[k>>2]|0)<32?(c[(c[j>>2]|0)+188>>2]&1<>2]|0)!=0:0))f=12;if((f|0)==12?(c[(c[j>>2]|0)+188>>2]|0)!=-1:0)break;a=(c[j>>2]|0)+88|0;b[a>>1]=b[a>>1]&-33|32}while(0);c[h>>2]=0;a=c[h>>2]|0;i=g;return a|0}Nc(c[c[j>>2]>>2]|0,25);c[h>>2]=25;a=c[h>>2]|0;i=g;return a|0}Nc(c[c[j>>2]>>2]|0,21);c[m>>2]=c[(c[j>>2]|0)+168>>2];tc(21,31184,m);c[h>>2]=Qb(68423)|0;a=c[h>>2]|0;i=g;return a|0}function Ie(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+16|0;g=e+8|0;f=e+4|0;h=e;c[g>>2]=a;c[f>>2]=b;c[h>>2]=d;a=c[h>>2]|0;a=Je(c[g>>2]|0,c[f>>2]|0,a,((a|0)<0)<<31>>31)|0;i=e;return a|0}function Je(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;f=i;i=i+32|0;l=f+20|0;k=f+16|0;h=f;g=f+12|0;j=f+8|0;c[l>>2]=a;c[k>>2]=b;a=h;c[a>>2]=d;c[a+4>>2]=e;c[j>>2]=c[l>>2];c[g>>2]=He(c[j>>2]|0,c[k>>2]|0)|0;if(c[g>>2]|0){l=c[g>>2]|0;i=f;return l|0}l=h;Xd((c[(c[j>>2]|0)+60>>2]|0)+(((c[k>>2]|0)-1|0)*40|0)|0,c[l>>2]|0,c[l+4>>2]|0);l=c[g>>2]|0;i=f;return l|0}function Ke(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;g=i;i=i+32|0;m=g+16|0;l=g+12|0;k=g+8|0;j=g+4|0;h=g;c[m>>2]=a;c[l>>2]=b;c[k>>2]=d;c[j>>2]=e;c[h>>2]=f;a=Fe(c[m>>2]|0,c[l>>2]|0,c[k>>2]|0,c[j>>2]|0,c[h>>2]|0,1)|0;i=g;return a|0}function Le(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;b=c[f>>2]|0;a=c[e>>2]|0;a=Me(b,a,Mb(c[e>>2]|0)|0)|0;i=d;return a|0}function Me(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;g=i;i=i+32|0;h=g+20|0;m=g+16|0;k=g+12|0;l=g+8|0;n=g+4|0;j=g;c[m>>2]=d;c[k>>2]=e;c[l>>2]=f;if(!(c[m>>2]|0)){c[h>>2]=0;d=c[h>>2]|0;i=g;return d|0}a:do if(c[k>>2]|0){c[n>>2]=0;while(1){if((c[n>>2]|0)>=(b[(c[m>>2]|0)+70>>1]|0))break a;c[j>>2]=c[(c[(c[m>>2]|0)+64>>2]|0)+(c[n>>2]<<2)>>2];if(((c[j>>2]|0)!=0?(VE(c[j>>2]|0,c[k>>2]|0,c[l>>2]|0)|0)==0:0)?(a[(c[j>>2]|0)+(c[l>>2]|0)>>0]|0)==0:0)break;c[n>>2]=(c[n>>2]|0)+1}c[h>>2]=(c[n>>2]|0)+1;d=c[h>>2]|0;i=g;return d|0}while(0);c[h>>2]=0;d=c[h>>2]|0;i=g;return d|0}function Ne(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;e=i;i=i+32|0;k=e+16|0;j=e+12|0;g=e+8|0;h=e+4|0;f=e;c[k>>2]=a;c[j>>2]=d;c[g>>2]=c[k>>2];c[h>>2]=c[j>>2];c[f>>2]=0;while(1){if((c[f>>2]|0)>=(b[(c[g>>2]|0)+68>>1]|0))break;Ry((c[(c[h>>2]|0)+60>>2]|0)+((c[f>>2]|0)*40|0)|0,(c[(c[g>>2]|0)+60>>2]|0)+((c[f>>2]|0)*40|0)|0);c[f>>2]=(c[f>>2]|0)+1}i=e;return 0}function Oe(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;i=i+16|0;e=b+8|0;d=b+4|0;f=b;c[e>>2]=a;c[d>>2]=Nd(c[e>>2]|0)|0;if((c[d>>2]|0)!=3){f=c[d>>2]|0;i=b;return f|0}c[f>>2]=c[e>>2];Pe(c[f>>2]|0,0);c[d>>2]=Nd(c[e>>2]|0)|0;f=c[d>>2]|0;i=b;return f|0}function Pe(d,f){d=d|0;f=f|0;var g=0,j=0,k=0,l=0,m=0,n=0;g=i;i=i+32|0;k=g+20|0;m=g+16|0;l=g+8|0;j=g;n=g+24|0;c[k>>2]=d;c[m>>2]=f;a[n>>0]=a[(c[k>>2]|0)+10>>0]|0;if(!(Lm(c[(c[k>>2]|0)+16>>2]|0,l,c[(c[k>>2]|0)+12>>2]|0,a[n>>0]|0)|0)){i=g;return}if(!(wg(c[(c[k>>2]|0)+16>>2]|0,j,c[(c[k>>2]|0)+12>>2]|0,a[n>>0]|0)|0)){m=j;n=c[m+4>>2]|0;d=c[k>>2]|0;c[d>>2]=c[m>>2];c[d+4>>2]=n;d=(c[k>>2]|0)+8|0;b[d>>1]=e[d>>1]|0|4;i=g;return}h[c[k>>2]>>3]=+h[l>>3];d=(c[k>>2]|0)+8|0;b[d>>1]=e[d>>1]|0|8;if(!(c[m>>2]|0)){i=g;return}Hp(c[k>>2]|0);i=g;return}function Qe(b,d,f){b=b|0;d=d|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;g=i;i=i+32|0;h=g+20|0;l=g+16|0;j=g;k=g+12|0;m=g+8|0;c[l>>2]=b;b=j;c[b>>2]=d;c[b+4>>2]=f;do if(c[l>>2]|0){if(a[(c[l>>2]|0)+64>>0]|0){c[h>>2]=0;b=c[h>>2]|0;i=g;return b|0}if(a[(c[l>>2]|0)+250>>0]|0){b=j;d=c[b+4>>2]|0;f=(c[l>>2]|0)+248|0;if(d>>>0>0|((d|0)==0?(c[b>>2]|0)>>>0>(e[(c[l>>2]|0)+248>>1]|0)>>>0:0)){b=f+16|0;c[b>>2]=(c[b>>2]|0)+1;break}b=c[f+24>>2]|0;c[m>>2]=b;if(!b){b=(c[l>>2]|0)+268|0;c[b>>2]=(c[b>>2]|0)+1;break}c[(c[l>>2]|0)+272>>2]=c[c[m>>2]>>2];b=(c[l>>2]|0)+252|0;c[b>>2]=(c[b>>2]|0)+1;b=(c[l>>2]|0)+260|0;c[b>>2]=(c[b>>2]|0)+1;if((c[(c[l>>2]|0)+252>>2]|0)>(c[(c[l>>2]|0)+256>>2]|0))c[(c[l>>2]|0)+256>>2]=c[(c[l>>2]|0)+252>>2];c[h>>2]=c[m>>2];b=c[h>>2]|0;i=g;return b|0}}while(0);b=j;c[k>>2]=gc(c[b>>2]|0,c[b+4>>2]|0)|0;if((c[k>>2]|0)==0&(c[l>>2]|0)!=0)a[(c[l>>2]|0)+64>>0]=1;c[h>>2]=c[k>>2];b=c[h>>2]|0;i=g;return b|0}function Re(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;l=i;i=i+48|0;k=l;g=l+36|0;m=l+32|0;p=l+28|0;j=l+24|0;h=l+20|0;n=l+16|0;o=l+12|0;c[m>>2]=b;c[p>>2]=d;c[j>>2]=e;c[h>>2]=f;if(Ar(c[m>>2]|0)|0){c[g>>2]=0;b=c[g>>2]|0;i=l;return b|0}c[n>>2]=sp(c[c[m>>2]>>2]|0,c[j>>2]|0,c[h>>2]|0)|0;if(!(c[n>>2]|0)){c[o>>2]=(c[p>>2]|0)!=0?31152:31168;p=c[m>>2]|0;o=c[o>>2]|0;if(c[h>>2]|0){d=c[h>>2]|0;b=c[j>>2]|0;c[k>>2]=o;c[k+4>>2]=d;c[k+8>>2]=b;Se(p,17264,k)}else{b=c[j>>2]|0;c[k>>2]=o;c[k+4>>2]=b;Se(p,17280,k)}a[(c[m>>2]|0)+17>>0]=1}c[g>>2]=c[n>>2];b=c[g>>2]|0;i=l;return b|0}function Se(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;f=i;i=i+48|0;j=f+32|0;l=f+28|0;g=f+24|0;k=f+8|0;h=f;c[j>>2]=b;c[l>>2]=d;c[h>>2]=c[c[j>>2]>>2];c[k>>2]=e;c[g>>2]=yn(c[h>>2]|0,c[l>>2]|0,k)|0;if(a[(c[h>>2]|0)+67>>0]|0){Xb(c[h>>2]|0,c[g>>2]|0);i=f;return}else{l=(c[j>>2]|0)+64|0;c[l>>2]=(c[l>>2]|0)+1;Xb(c[h>>2]|0,c[(c[j>>2]|0)+4>>2]|0);c[(c[j>>2]|0)+4>>2]=c[g>>2];c[(c[j>>2]|0)+12>>2]=1;i=f;return}}function Te(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;f=i;i=i+32|0;j=f+28|0;h=f+24|0;g=f+8|0;e=f;c[j>>2]=a;c[h>>2]=b;c[g>>2]=d;c[e>>2]=yn(c[j>>2]|0,c[h>>2]|0,g)|0;i=f;return c[e>>2]|0}function Ue(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=i;i=i+16|0;d=b+12|0;g=b+8|0;e=b+4|0;f=b;c[g>>2]=a;c[e>>2]=c[c[g>>2]>>2];c[f>>2]=se(c[e>>2]|0,208,0)|0;if(!(c[f>>2]|0)){c[d>>2]=0;g=c[d>>2]|0;i=b;return g|0}c[c[f>>2]>>2]=c[e>>2];if(c[(c[e>>2]|0)+4>>2]|0)c[(c[(c[e>>2]|0)+4>>2]|0)+48>>2]=c[f>>2];c[(c[f>>2]|0)+52>>2]=c[(c[e>>2]|0)+4>>2];c[(c[f>>2]|0)+48>>2]=0;c[(c[e>>2]|0)+4>>2]=c[f>>2];c[(c[f>>2]|0)+40>>2]=649915045;c[(c[f>>2]|0)+24>>2]=c[g>>2];c[d>>2]=c[f>>2];g=c[d>>2]|0;i=b;return g|0}function Ve(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;i=i+16|0;f=d+8|0;g=d+4|0;e=d;c[f>>2]=a;c[g>>2]=b;c[e>>2]=-1e6;if(!(c[g>>2]|0)){a=c[e>>2]|0;i=d;return a|0}c[e>>2]=0;while(1){if((c[e>>2]|0)>=(c[(c[f>>2]|0)+20>>2]|0)){b=6;break}if((c[(c[(c[f>>2]|0)+16>>2]|0)+(c[e>>2]<<4)+12>>2]|0)==(c[g>>2]|0)){b=6;break}c[e>>2]=(c[e>>2]|0)+1}if((b|0)==6){a=c[e>>2]|0;i=d;return a|0}return 0}function We(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;j=i;i=i+32|0;l=j+24|0;p=j+20|0;o=j+16|0;n=j+12|0;m=j+8|0;k=j+4|0;h=j;c[l>>2]=a;c[p>>2]=b;c[o>>2]=d;c[n>>2]=e;c[m>>2]=f;c[k>>2]=g;c[h>>2]=ip(c[l>>2]|0,c[p>>2]|0,c[o>>2]|0,c[n>>2]|0,c[m>>2]|0)|0;bf(c[l>>2]|0,c[h>>2]|0,c[k>>2]|0,-14);i=j;return c[h>>2]|0}function Xe(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=i;i=i+16|0;g=e;f=e+4|0;c[g>>2]=b;a[f>>0]=d;if(!(c[(c[g>>2]|0)+4>>2]|0)){i=e;return}a[(c[(c[g>>2]|0)+4>>2]|0)+(((c[(c[g>>2]|0)+32>>2]|0)-1|0)*20|0)+3>>0]=a[f>>0]|0;i=e;return}function Ye(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;h=i;i=i+48|0;n=h+36|0;k=h+32|0;l=h+28|0;q=h+24|0;j=h+16|0;o=h+12|0;m=h+8|0;g=h+4|0;p=h;c[k>>2]=b;c[l>>2]=d;c[q>>2]=e;c[h+20>>2]=f;if(((c[(c[k>>2]|0)+32>>2]|0)+(c[l>>2]|0)|0)>(c[(c[(c[k>>2]|0)+24>>2]|0)+84>>2]|0)?(jp(c[k>>2]|0,c[l>>2]|0)|0)!=0:0){c[n>>2]=0;b=c[n>>2]|0;i=h;return b|0}c[j>>2]=c[(c[k>>2]|0)+32>>2];if((c[l>>2]|0)>0){c[m>>2]=c[q>>2];c[o>>2]=0;while(1){if((c[o>>2]|0)>=(c[l>>2]|0))break;c[g>>2]=a[(c[m>>2]|0)+2>>0];c[p>>2]=(c[(c[k>>2]|0)+4>>2]|0)+(((c[o>>2]|0)+(c[j>>2]|0)|0)*20|0);a[c[p>>2]>>0]=a[c[m>>2]>>0]|0;c[(c[p>>2]|0)+4>>2]=a[(c[m>>2]|0)+1>>0];if((c[g>>2]|0)<0)c[(c[p>>2]|0)+8>>2]=(c[j>>2]|0)+(-1-(c[g>>2]|0));else c[(c[p>>2]|0)+8>>2]=c[g>>2];c[(c[p>>2]|0)+12>>2]=a[(c[m>>2]|0)+3>>0];a[(c[p>>2]|0)+1>>0]=0;c[(c[p>>2]|0)+16>>2]=0;a[(c[p>>2]|0)+3>>0]=0;c[o>>2]=(c[o>>2]|0)+1;c[m>>2]=(c[m>>2]|0)+4}b=(c[k>>2]|0)+32|0;c[b>>2]=(c[b>>2]|0)+(c[l>>2]|0)}c[n>>2]=c[j>>2];b=c[n>>2]|0;i=h;return b|0}function Ze(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;a=(c[f>>2]|0)+96|0;c[a>>2]=c[a>>2]|1<>2];i=d;return}function _e(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+16|0;g=e+8|0;h=e+4|0;f=e;c[g>>2]=a;c[h>>2]=b;c[f>>2]=d;if((c[(c[g>>2]|0)+32>>2]|0)>>>0<=(c[h>>2]|0)>>>0){i=e;return}c[(c[(c[g>>2]|0)+4>>2]|0)+((c[h>>2]|0)*20|0)+4>>2]=c[f>>2];i=e;return}function $e(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+16|0;g=e+8|0;h=e+4|0;f=e;c[g>>2]=a;c[h>>2]=b;c[f>>2]=d;if((c[(c[g>>2]|0)+32>>2]|0)>>>0<=(c[h>>2]|0)>>>0){i=e;return}c[(c[(c[g>>2]|0)+4>>2]|0)+((c[h>>2]|0)*20|0)+8>>2]=c[f>>2];i=e;return}function af(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+16|0;g=e+8|0;h=e+4|0;f=e;c[g>>2]=a;c[h>>2]=b;c[f>>2]=d;if((c[(c[g>>2]|0)+32>>2]|0)>>>0<=(c[h>>2]|0)>>>0){i=e;return}c[(c[(c[g>>2]|0)+4>>2]|0)+((c[h>>2]|0)*20|0)+12>>2]=c[f>>2];i=e;return}function bf(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0;j=i;i=i+32|0;k=j+20|0;o=j+16|0;h=j+12|0;m=j+8|0;l=j+4|0;n=j;c[k>>2]=b;c[o>>2]=e;c[h>>2]=f;c[m>>2]=g;c[n>>2]=c[c[k>>2]>>2];if((c[(c[k>>2]|0)+4>>2]|0)!=0?(d[(c[n>>2]|0)+64>>0]|0)==0:0){if((c[o>>2]|0)<0)c[o>>2]=(c[(c[k>>2]|0)+32>>2]|0)-1;c[l>>2]=(c[(c[k>>2]|0)+4>>2]|0)+((c[o>>2]|0)*20|0);Oy(c[n>>2]|0,a[(c[l>>2]|0)+1>>0]|0,c[(c[l>>2]|0)+16>>2]|0);c[(c[l>>2]|0)+16>>2]=0;n=c[h>>2]|0;if((c[m>>2]|0)==-14){c[(c[l>>2]|0)+16>>2]=n;a[(c[l>>2]|0)+1>>0]=-14;i=j;return}if(!n){c[(c[l>>2]|0)+16>>2]=0;a[(c[l>>2]|0)+1>>0]=0;i=j;return}if((c[m>>2]|0)==-6){c[(c[l>>2]|0)+16>>2]=c[h>>2];a[(c[l>>2]|0)+1>>0]=-6;i=j;return}if((c[m>>2]|0)==-10){c[(c[l>>2]|0)+16>>2]=c[h>>2];a[(c[l>>2]|0)+1>>0]=-10;Qy(c[h>>2]|0);i=j;return}if((c[m>>2]|0)<0){c[(c[l>>2]|0)+16>>2]=c[h>>2];a[(c[l>>2]|0)+1>>0]=c[m>>2];i=j;return}if(!(c[m>>2]|0))c[m>>2]=Mb(c[h>>2]|0)|0;b=c[m>>2]|0;b=rm(c[c[k>>2]>>2]|0,c[h>>2]|0,b,((b|0)<0)<<31>>31)|0;c[(c[l>>2]|0)+16>>2]=b;a[(c[l>>2]|0)+1>>0]=-1;i=j;return}if((c[m>>2]|0)==-10){i=j;return}Oy(c[n>>2]|0,c[m>>2]|0,c[h>>2]|0);i=j;return}function cf(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;i=i+16|0;f=e+12|0;g=e+8|0;h=e+4|0;j=e;c[f>>2]=b;c[g>>2]=d;if((c[g>>2]|0)>=(c[(c[f>>2]|0)+32>>2]|0)){i=e;return}c[h>>2]=(c[(c[f>>2]|0)+4>>2]|0)+((c[g>>2]|0)*20|0);c[j>>2]=c[c[f>>2]>>2];Oy(c[j>>2]|0,a[(c[h>>2]|0)+1>>0]|0,c[(c[h>>2]|0)+16>>2]|0);b=c[h>>2]|0;c[b+0>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;c[b+16>>2]=0;a[c[h>>2]>>0]=-102;if((c[g>>2]|0)!=((c[(c[f>>2]|0)+32>>2]|0)-1|0)){i=e;return}b=(c[f>>2]|0)+32|0;c[b>>2]=(c[b>>2]|0)+ -1;i=e;return}function df(e,f){e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;m=i;i=i+48|0;n=m+44|0;o=m+40|0;l=m+36|0;k=m+32|0;s=m+28|0;g=m+24|0;t=m+20|0;h=m+16|0;j=m+12|0;p=m+8|0;r=m+4|0;q=m;c[n>>2]=e;c[o>>2]=f;c[l>>2]=c[c[n>>2]>>2];c[k>>2]=c[(c[o>>2]|0)+440>>2];c[s>>2]=c[(c[o>>2]|0)+72>>2];c[g>>2]=c[(c[o>>2]|0)+68>>2];c[t>>2]=c[(c[o>>2]|0)+392>>2];e=c[(c[o>>2]|0)+80>>2]|0;c[h>>2]=e;c[h>>2]=(c[h>>2]|0)==0?1:e;c[s>>2]=(c[s>>2]|0)+(c[g>>2]|0);c[p>>2]=(c[(c[n>>2]|0)+4>>2]|0)+((c[(c[n>>2]|0)+32>>2]|0)*20|0);c[r>>2]=(c[(c[n>>2]|0)+4>>2]|0)+((c[(c[o>>2]|0)+84>>2]|0)*20|0);rw(c[n>>2]|0,t);if(d[(c[o>>2]|0)+20>>0]|0)f=(d[(c[o>>2]|0)+21>>0]|0)!=0;else f=0;e=(c[n>>2]|0)+88|0;b[e>>1]=b[e>>1]&-129|(f&1)<<7&65535;if((c[s>>2]|0)<10?(d[(c[o>>2]|0)+450>>0]|0)!=0:0)c[s>>2]=10;_E(c[p>>2]|0,0,(c[r>>2]|0)-(c[p>>2]|0)|0)|0;c[p>>2]=(c[p>>2]|0)+((c[p>>2]|0)-0&7);e=(c[n>>2]|0)+88|0;b[e>>1]=b[e>>1]&-33;do{c[q>>2]=0;e=Ny(c[(c[n>>2]|0)+8>>2]|0,(c[s>>2]|0)*40|0,p,c[r>>2]|0,q)|0;c[(c[n>>2]|0)+8>>2]=e;e=Ny(c[(c[n>>2]|0)+60>>2]|0,(c[k>>2]|0)*40|0,p,c[r>>2]|0,q)|0;c[(c[n>>2]|0)+60>>2]=e;e=Ny(c[(c[n>>2]|0)+12>>2]|0,c[t>>2]<<2,p,c[r>>2]|0,q)|0;c[(c[n>>2]|0)+12>>2]=e;e=Ny(c[(c[n>>2]|0)+64>>2]|0,c[k>>2]<<2,p,c[r>>2]|0,q)|0;c[(c[n>>2]|0)+64>>2]=e;e=Ny(c[(c[n>>2]|0)+56>>2]|0,c[g>>2]<<2,p,c[r>>2]|0,q)|0;c[(c[n>>2]|0)+56>>2]=e;e=Ny(c[(c[n>>2]|0)+200>>2]|0,c[h>>2]|0,p,c[r>>2]|0,q)|0;c[(c[n>>2]|0)+200>>2]=e;if(c[q>>2]|0){e=c[q>>2]|0;e=se(c[l>>2]|0,e,((e|0)<0)<<31>>31)|0;c[(c[n>>2]|0)+172>>2]=e}c[p>>2]=c[(c[n>>2]|0)+172>>2];c[r>>2]=(c[p>>2]|0)+(c[q>>2]|0);if(!(c[q>>2]|0))break}while((a[(c[l>>2]|0)+64>>0]|0)!=0^1);c[(c[n>>2]|0)+36>>2]=c[g>>2];c[(c[n>>2]|0)+196>>2]=c[h>>2];a:do if(c[(c[n>>2]|0)+60>>2]|0){b[(c[n>>2]|0)+68>>1]=c[k>>2];c[j>>2]=0;while(1){if((c[j>>2]|0)>=(c[k>>2]|0))break a;b[(c[(c[n>>2]|0)+60>>2]|0)+((c[j>>2]|0)*40|0)+8>>1]=1;c[(c[(c[n>>2]|0)+60>>2]|0)+((c[j>>2]|0)*40|0)+32>>2]=c[l>>2];c[j>>2]=(c[j>>2]|0)+1}}while(0);if(c[(c[n>>2]|0)+64>>2]|0){b[(c[n>>2]|0)+70>>1]=c[(c[o>>2]|0)+444>>2];dF(c[(c[n>>2]|0)+64>>2]|0,c[(c[o>>2]|0)+472>>2]|0,b[(c[n>>2]|0)+70>>1]<<2|0)|0;_E(c[(c[o>>2]|0)+472>>2]|0,0,c[(c[o>>2]|0)+444>>2]<<2|0)|0}if(!(c[(c[n>>2]|0)+8>>2]|0)){f=c[o>>2]|0;f=f+450|0;f=a[f>>0]|0;f=f&255;e=c[n>>2]|0;e=e+88|0;f=f&65535;t=b[e>>1]|0;f=f&3;t=t&-4;f=t|f;b[e>>1]=f;e=c[n>>2]|0;zd(e);i=m;return}e=(c[n>>2]|0)+8|0;c[e>>2]=(c[e>>2]|0)+ -40;c[(c[n>>2]|0)+28>>2]=c[s>>2];c[j>>2]=1;while(1){if((c[j>>2]|0)>(c[s>>2]|0))break;b[(c[(c[n>>2]|0)+8>>2]|0)+((c[j>>2]|0)*40|0)+8>>1]=128;c[(c[(c[n>>2]|0)+8>>2]|0)+((c[j>>2]|0)*40|0)+32>>2]=c[l>>2];c[j>>2]=(c[j>>2]|0)+1}f=c[o>>2]|0;f=f+450|0;f=a[f>>0]|0;f=f&255;e=c[n>>2]|0;e=e+88|0;f=f&65535;t=b[e>>1]|0;f=f&3;t=t&-4;f=t|f;b[e>>1]=f;e=c[n>>2]|0;zd(e);i=m;return}function ef(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+16|0;d=b+4|0;e=b;c[d>>2]=a;if(!(c[d>>2]|0)){i=b;return}c[e>>2]=c[c[d>>2]>>2];Xb(c[e>>2]|0,c[(c[d>>2]|0)+112>>2]|0);sn(c[e>>2]|0,c[(c[d>>2]|0)+316>>2]|0);i=b;return}function ff(a,b,e,f){a=a|0;b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;m=i;i=i+32|0;h=m+20|0;k=m+16|0;l=m+12|0;g=m+8|0;n=m+4|0;j=m;c[k>>2]=a;c[l>>2]=b;c[g>>2]=e;c[n>>2]=f;if(!(d[(c[k>>2]|0)+73>>0]|0)){c[h>>2]=4;a=c[h>>2]|0;i=m;return a|0}if((d[(c[k>>2]|0)+73>>0]|0|0)>=3)f=vw(c[k>>2]|0)|0;else f=0;c[j>>2]=f;if(!(c[j>>2]|0))c[j>>2]=Lw(c[k>>2]|0,c[l>>2]|0,c[g>>2]|0,c[n>>2]|0,0)|0;c[h>>2]=c[j>>2];a=c[h>>2]|0;i=m;return a|0}function gf(a){a=a|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=c[(c[f>>2]|0)+4>>2];while(1){if(!(c[e>>2]|0))break;f=(c[e>>2]|0)+88|0;b[f>>1]=b[f>>1]&-33|32;c[e>>2]=c[(c[e>>2]|0)+52>>2]}i=d;return}function hf(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;a=(jf(c[f>>2]|0,c[e>>2]|0,1208,0)|0)==0&1;i=d;return a|0}function jf(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;k=i;i=i+64|0;n=k+56|0;m=k+52|0;l=k+48|0;h=k+44|0;j=k+40|0;p=k+36|0;r=k+32|0;t=k+28|0;u=k+24|0;s=k+20|0;o=k+60|0;v=k+16|0;q=k+12|0;w=k+8|0;x=k+4|0;y=k;c[m>>2]=b;c[l>>2]=e;c[h>>2]=f;c[j>>2]=g;c[t>>2]=d[(c[h>>2]|0)+1>>0];c[u>>2]=d[c[h>>2]>>0];a[o>>0]=a[(c[h>>2]|0)+3>>0]|0;c[v>>2]=0;if(c[j>>2]|0)g=c[j>>2]|0;else g=d[(c[h>>2]|0)+2>>0]|0;c[s>>2]=g;a:while(1){b=Um(m)|0;c[p>>2]=b;if(!b){v=76;break}if((c[p>>2]|0)==(c[u>>2]|0)){v=7;break}do if((c[p>>2]|0)==(c[s>>2]|0)){if(c[j>>2]|0){c[p>>2]=Um(m)|0;if(!(c[p>>2]|0)){v=43;break a}c[v>>2]=c[m>>2];break}c[w>>2]=0;c[x>>2]=0;c[y>>2]=0;c[p>>2]=Um(l)|0;if(!(c[p>>2]|0)){v=46;break a}c[r>>2]=Um(m)|0;if((c[r>>2]|0)==94){c[y>>2]=1;c[r>>2]=Um(m)|0}if((c[r>>2]|0)==93){if((c[p>>2]|0)==93)c[x>>2]=1;c[r>>2]=Um(m)|0}while(1){if(c[r>>2]|0)f=(c[r>>2]|0)!=93;else f=0;g=c[r>>2]|0;if(!f)break;if(((g|0)==45?(d[c[m>>2]>>0]|0)!=93:0)?(c[w>>2]|0)>>>0>0?(d[c[m>>2]>>0]|0)!=0:0:0){c[r>>2]=Um(m)|0;if((c[p>>2]|0)>>>0>=(c[w>>2]|0)>>>0?(c[p>>2]|0)>>>0<=(c[r>>2]|0)>>>0:0)c[x>>2]=1;c[w>>2]=0}else{if((c[p>>2]|0)==(c[r>>2]|0))c[x>>2]=1;c[w>>2]=c[r>>2]}c[r>>2]=Um(m)|0}if(!g){v=69;break a}if(!(c[x>>2]^c[y>>2])){v=69;break a}else continue a}while(0);c[r>>2]=Um(l)|0;if((c[p>>2]|0)==(c[r>>2]|0))continue;if((d[o>>0]|0)!=0&(c[p>>2]|0)>>>0<128&(c[r>>2]|0)>>>0<128?(d[440+(c[p>>2]&255)>>0]|0)==(d[440+(c[r>>2]&255)>>0]|0):0)continue;if((c[p>>2]|0)!=(c[t>>2]|0)){v=75;break}if(!((c[r>>2]|0)!=0?(c[m>>2]|0)!=(c[v>>2]|0):0)){v=75;break}}if((v|0)==7){while(1){v=0;b=Um(m)|0;c[p>>2]=b;if((b|0)==(c[u>>2]|0))x=1;else x=(c[p>>2]|0)==(c[t>>2]|0);w=c[p>>2]|0;if(!x)break;if((w|0)!=(c[t>>2]|0)){v=7;continue}if(!(Um(l)|0)){v=12;break}else v=7}if((v|0)==12){c[n>>2]=0;b=c[n>>2]|0;i=k;return b|0}if(!w){c[n>>2]=1;b=c[n>>2]|0;i=k;return b|0}do if((c[p>>2]|0)==(c[s>>2]|0)){if(c[j>>2]|0){c[p>>2]=Um(m)|0;if(c[p>>2]|0)break;c[n>>2]=0;b=c[n>>2]|0;i=k;return b|0}b:while(1){if(d[c[l>>2]>>0]|0)p=(jf((c[m>>2]|0)+ -1|0,c[l>>2]|0,c[h>>2]|0,c[j>>2]|0)|0)==0;else p=0;o=c[l>>2]|0;if(!p)break;c[l>>2]=o+1;if((d[o>>0]|0)<192)continue;while(1){if((d[c[l>>2]>>0]&192|0)!=128)continue b;c[l>>2]=(c[l>>2]|0)+1}}c[n>>2]=(d[o>>0]|0)!=0&1;b=c[n>>2]|0;i=k;return b|0}while(0);c:do if((c[p>>2]|0)>>>0<=128){s=c[p>>2]|0;if(a[o>>0]|0){c[q>>2]=s&~(d[1224+(c[p>>2]&255)>>0]&32);c[p>>2]=d[440+(c[p>>2]&255)>>0]}else c[q>>2]=s;while(1){b=c[l>>2]|0;c[l>>2]=b+1;b=d[b>>0]|0;c[r>>2]=b;if(!b)break c;if((c[r>>2]|0)!=(c[p>>2]|0)?(c[r>>2]|0)!=(c[q>>2]|0):0)continue;if(jf(c[m>>2]|0,c[l>>2]|0,c[h>>2]|0,c[j>>2]|0)|0)break}c[n>>2]=1;b=c[n>>2]|0;i=k;return b|0}else{while(1){b=Um(l)|0;c[r>>2]=b;if(!b)break c;if((c[r>>2]|0)!=(c[p>>2]|0))continue;if(jf(c[m>>2]|0,c[l>>2]|0,c[h>>2]|0,c[j>>2]|0)|0)break}c[n>>2]=1;b=c[n>>2]|0;i=k;return b|0}while(0);c[n>>2]=0;b=c[n>>2]|0;i=k;return b|0}else if((v|0)==43){c[n>>2]=0;b=c[n>>2]|0;i=k;return b|0}else if((v|0)==46){c[n>>2]=0;b=c[n>>2]|0;i=k;return b|0}else if((v|0)==69){c[n>>2]=0;b=c[n>>2]|0;i=k;return b|0}else if((v|0)==75){c[n>>2]=0;b=c[n>>2]|0;i=k;return b|0}else if((v|0)==76){c[n>>2]=(d[c[l>>2]>>0]|0)==0&1;b=c[n>>2]|0;i=k;return b|0}return 0}function kf(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;u=i;i=i+64|0;l=u+56|0;o=u+52|0;t=u+48|0;x=u+44|0;z=u+40|0;n=u+36|0;m=u+32|0;j=u+28|0;r=u+24|0;q=u+20|0;v=u+16|0;w=u+12|0;s=u+8|0;y=u+4|0;p=u;c[o>>2]=b;c[t>>2]=e;c[x>>2]=f;c[z>>2]=g;c[n>>2]=h;c[m>>2]=0;c[r>>2]=0;c[q>>2]=0;if(!(lf(c[o>>2]|0)|0)){c[l>>2]=Qb(99392)|0;b=c[l>>2]|0;i=u;return b|0}if(!(c[t>>2]|0))c[t>>2]=1216;Nc(c[o>>2]|0,0);a:while(1){if(c[m>>2]|0)break;if(!(a[c[t>>2]>>0]|0))break;c[s>>2]=0;c[r>>2]=0;c[m>>2]=mf(c[o>>2]|0,c[t>>2]|0,-1,r,j)|0;if(c[m>>2]|0)continue;if(!(c[r>>2]|0)){c[t>>2]=c[j>>2];continue}c[v>>2]=0;c[w>>2]=te(c[r>>2]|0)|0;do{c[m>>2]=je(c[r>>2]|0)|0;do if(c[x>>2]|0){if(100!=(c[m>>2]|0)){if(101!=(c[m>>2]|0)|(c[v>>2]|0)!=0)break;if(!(c[(c[o>>2]|0)+24>>2]&256))break}if(!(c[v>>2]|0)){c[q>>2]=se(c[o>>2]|0,(c[w>>2]<<1<<2)+1|0,0)|0;if(!(c[q>>2]|0))break a;c[y>>2]=0;while(1){if((c[y>>2]|0)>=(c[w>>2]|0))break;b=Ce(c[r>>2]|0,c[y>>2]|0)|0;c[(c[q>>2]|0)+(c[y>>2]<<2)>>2]=b;c[y>>2]=(c[y>>2]|0)+1}c[v>>2]=1}b:do if((c[m>>2]|0)==100){c[s>>2]=(c[q>>2]|0)+(c[w>>2]<<2);c[y>>2]=0;while(1){if((c[y>>2]|0)>=(c[w>>2]|0))break b;b=Ae(c[r>>2]|0,c[y>>2]|0)|0;c[(c[s>>2]|0)+(c[y>>2]<<2)>>2]=b;if((c[(c[s>>2]|0)+(c[y>>2]<<2)>>2]|0)==0?(Be(c[r>>2]|0,c[y>>2]|0)|0)!=5:0){k=27;break a}c[y>>2]=(c[y>>2]|0)+1}}while(0);if(xb[c[x>>2]&7](c[z>>2]|0,c[w>>2]|0,c[s>>2]|0,c[q>>2]|0)|0){k=30;break a}}while(0)}while((c[m>>2]|0)==100);c[m>>2]=vd(c[r>>2]|0)|0;c[r>>2]=0;c[t>>2]=c[j>>2];while(1){if(!(d[1224+(d[c[t>>2]>>0]|0)>>0]&1))break;c[t>>2]=(c[t>>2]|0)+1}Xb(c[o>>2]|0,c[q>>2]|0);c[q>>2]=0}if((k|0)==27)a[(c[o>>2]|0)+64>>0]=1;else if((k|0)==30){c[m>>2]=4;vd(c[r>>2]|0)|0;c[r>>2]=0;Nc(c[o>>2]|0,4)}if(c[r>>2]|0)vd(c[r>>2]|0)|0;Xb(c[o>>2]|0,c[q>>2]|0);c[m>>2]=wd(c[o>>2]|0,c[m>>2]|0)|0;do if((c[m>>2]|0)!=0&(c[n>>2]|0)!=0){c[p>>2]=1+(Mb(nf(c[o>>2]|0)|0)|0);b=c[p>>2]|0;b=gc(b,((b|0)<0)<<31>>31)|0;c[c[n>>2]>>2]=b;if(c[c[n>>2]>>2]|0){e=c[c[n>>2]>>2]|0;b=nf(c[o>>2]|0)|0;dF(e|0,b|0,c[p>>2]|0)|0;break}else{c[m>>2]=7;Nc(c[o>>2]|0,7);break}}else if(c[n>>2]|0)c[c[n>>2]>>2]=0;while(0);c[l>>2]=c[m>>2];b=c[l>>2]|0;i=u;return b|0}function lf(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;i=i+16|0;d=b+8|0;e=b+4|0;f=b;c[e>>2]=a;do if(!(c[e>>2]|0)){sk(9840);c[d>>2]=0}else{c[f>>2]=c[(c[e>>2]|0)+76>>2];if((c[f>>2]|0)==-1607883113){c[d>>2]=1;break}if($f(c[e>>2]|0)|0)sk(31136);c[d>>2]=0}while(0);i=b;return c[d>>2]|0}function mf(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;h=i;i=i+32|0;n=h+20|0;m=h+16|0;l=h+12|0;k=h+8|0;j=h+4|0;g=h;c[n>>2]=a;c[m>>2]=b;c[l>>2]=d;c[k>>2]=e;c[j>>2]=f;c[g>>2]=pf(c[n>>2]|0,c[m>>2]|0,c[l>>2]|0,1,0,c[k>>2]|0,c[j>>2]|0)|0;i=h;return c[g>>2]|0}function nf(b){b=b|0;var d=0,e=0,f=0,g=0;d=i;i=i+16|0;e=d+8|0;f=d+4|0;g=d;c[f>>2]=b;if(!(c[f>>2]|0)){c[e>>2]=ge(7)|0;g=c[e>>2]|0;i=d;return g|0}if(!($f(c[f>>2]|0)|0)){c[e>>2]=ge(Qb(126852)|0)|0;g=c[e>>2]|0;i=d;return g|0}if(!(a[(c[f>>2]|0)+64>>0]|0)){c[g>>2]=Ed(c[(c[f>>2]|0)+232>>2]|0)|0;if(!(c[g>>2]|0))c[g>>2]=ge(c[(c[f>>2]|0)+52>>2]|0)|0}else c[g>>2]=ge(7)|0;c[e>>2]=c[g>>2];g=c[e>>2]|0;i=d;return g|0}function of(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;h=i;i=i+32|0;n=h+20|0;m=h+16|0;l=h+12|0;k=h+8|0;j=h+4|0;g=h;c[n>>2]=a;c[m>>2]=b;c[l>>2]=d;c[k>>2]=e;c[j>>2]=f;c[g>>2]=pf(c[n>>2]|0,c[m>>2]|0,c[l>>2]|0,0,0,c[k>>2]|0,c[j>>2]|0)|0;i=h;return c[g>>2]|0}function pf(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;q=i;i=i+48|0;k=q+32|0;n=q+28|0;o=q+24|0;p=q+20|0;j=q+16|0;r=q+12|0;m=q+8|0;s=q+4|0;l=q;c[n>>2]=a;c[o>>2]=b;c[p>>2]=d;c[j>>2]=e;c[r>>2]=f;c[m>>2]=g;c[s>>2]=h;c[c[m>>2]>>2]=0;if(!(lf(c[n>>2]|0)|0)){c[k>>2]=Qb(103895)|0;a=c[k>>2]|0;i=q;return a|0}Rb(c[n>>2]|0);c[l>>2]=xy(c[n>>2]|0,c[o>>2]|0,c[p>>2]|0,c[j>>2]|0,c[r>>2]|0,c[m>>2]|0,c[s>>2]|0)|0;if((c[l>>2]|0)==17){td(c[c[m>>2]>>2]|0)|0;c[l>>2]=xy(c[n>>2]|0,c[o>>2]|0,c[p>>2]|0,c[j>>2]|0,c[r>>2]|0,c[m>>2]|0,c[s>>2]|0)|0}c[k>>2]=c[l>>2];a=c[k>>2]|0;i=q;return a|0}function qf(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;g=i;i=i+64|0;v=g;n=g+56|0;h=g+52|0;t=g+48|0;s=g+44|0;m=g+40|0;l=g+36|0;r=g+32|0;w=g+28|0;u=g+24|0;p=g+60|0;k=g+20|0;x=g+16|0;j=g+12|0;o=g+8|0;c[h>>2]=b;c[t>>2]=e;c[s>>2]=f;c[m>>2]=0;c[u>>2]=-1;c[k>>2]=c[c[h>>2]>>2];c[x>>2]=c[(c[k>>2]|0)+92>>2];if(!(c[(c[k>>2]|0)+148>>2]|0))c[(c[k>>2]|0)+240>>2]=0;c[(c[h>>2]|0)+12>>2]=0;c[(c[h>>2]|0)+480>>2]=c[t>>2];c[l>>2]=0;c[r>>2]=mn(33)|0;f=c[k>>2]|0;if(!(c[r>>2]|0)){a[f+64>>0]=1;c[n>>2]=7;b=c[n>>2]|0;i=g;return b|0}a[p>>0]=a[f+250>>0]|0;if(c[(c[k>>2]|0)+276>>2]|0)a[(c[k>>2]|0)+250>>0]=1;while(1){if(a[(c[k>>2]|0)+64>>0]|0)break;if(!(a[(c[t>>2]|0)+(c[l>>2]|0)>>0]|0))break;c[(c[h>>2]|0)+504>>2]=(c[t>>2]|0)+(c[l>>2]|0);b=qm((c[t>>2]|0)+(c[l>>2]|0)|0,w)|0;c[(c[h>>2]|0)+508>>2]=b;c[l>>2]=(c[l>>2]|0)+(c[(c[h>>2]|0)+508>>2]|0);if((c[l>>2]|0)>(c[x>>2]|0)){q=10;break}f=c[w>>2]|0;if((f|0)==150){q=14;break}else if((f|0)==151)if(c[(c[k>>2]|0)+240>>2]|0){q=13;break}else continue;else if((f|0)==1)c[(c[h>>2]|0)+480>>2]=(c[t>>2]|0)+(c[l>>2]|0);f=c[r>>2]|0;e=c[w>>2]|0;y=(c[h>>2]|0)+504|0;b=c[h>>2]|0;c[v+0>>2]=c[y+0>>2];c[v+4>>2]=c[y+4>>2];nn(f,e,v,b);c[u>>2]=c[w>>2];if(c[(c[h>>2]|0)+12>>2]|0)break}if((q|0)==10)c[(c[h>>2]|0)+12>>2]=18;else if((q|0)==13){Se(c[h>>2]|0,9920,v);c[(c[h>>2]|0)+12>>2]=9}else if((q|0)==14){Xb(c[k>>2]|0,c[c[s>>2]>>2]|0);y=c[k>>2]|0;c[v>>2]=(c[h>>2]|0)+504;y=Te(y,9936,v)|0;c[c[s>>2]>>2]=y;c[m>>2]=(c[m>>2]|0)+1}if(((c[m>>2]|0)==0?(a[(c[t>>2]|0)+(c[l>>2]|0)>>0]|0)==0:0)?(c[(c[h>>2]|0)+12>>2]|0)==0:0){if((c[u>>2]|0)!=1){b=c[r>>2]|0;e=(c[h>>2]|0)+504|0;y=c[h>>2]|0;c[v+0>>2]=c[e+0>>2];c[v+4>>2]=c[e+4>>2];nn(b,1,v,y);c[(c[h>>2]|0)+480>>2]=(c[t>>2]|0)+(c[l>>2]|0)}b=c[r>>2]|0;e=(c[h>>2]|0)+504|0;y=c[h>>2]|0;c[v+0>>2]=c[e+0>>2];c[v+4>>2]=c[e+4>>2];nn(b,0,v,y)}on(c[r>>2]|0,13);a[(c[k>>2]|0)+250>>0]=a[p>>0]|0;if(a[(c[k>>2]|0)+64>>0]|0)c[(c[h>>2]|0)+12>>2]=7;if(((c[(c[h>>2]|0)+12>>2]|0)!=0?(c[(c[h>>2]|0)+12>>2]|0)!=101:0)?(c[(c[h>>2]|0)+4>>2]|0)==0:0){b=(c[h>>2]|0)+4|0;y=c[k>>2]|0;c[v>>2]=ge(c[(c[h>>2]|0)+12>>2]|0)|0;pn(b,y,1200,v)}if(c[(c[h>>2]|0)+4>>2]|0){c[c[s>>2]>>2]=c[(c[h>>2]|0)+4>>2];y=c[(c[h>>2]|0)+12>>2]|0;c[v>>2]=c[c[s>>2]>>2];tc(y,1200,v);c[(c[h>>2]|0)+4>>2]=0;c[m>>2]=(c[m>>2]|0)+1}if(((c[(c[h>>2]|0)+8>>2]|0)!=0?(c[(c[h>>2]|0)+64>>2]|0)>0:0)?(d[(c[h>>2]|0)+18>>0]|0)==0:0){qn(c[(c[h>>2]|0)+8>>2]|0);c[(c[h>>2]|0)+8>>2]=0}if(!(d[(c[h>>2]|0)+18>>0]|0)){Xb(c[k>>2]|0,c[(c[h>>2]|0)+400>>2]|0);c[(c[h>>2]|0)+400>>2]=0;c[(c[h>>2]|0)+396>>2]=0}hc(c[(c[h>>2]|0)+520>>2]|0);if(!(a[(c[h>>2]|0)+451>>0]|0))Vb(c[k>>2]|0,c[(c[h>>2]|0)+484>>2]|0);if(a[(c[h>>2]|0)+449>>0]|0)rn(c[k>>2]|0,c[(c[h>>2]|0)+532>>2]|0);Ub(c[k>>2]|0,c[(c[h>>2]|0)+488>>2]|0);c[l>>2]=(c[(c[h>>2]|0)+444>>2]|0)-1;while(1){p=c[k>>2]|0;if((c[l>>2]|0)<0)break;Xb(p,c[(c[(c[h>>2]|0)+472>>2]|0)+(c[l>>2]<<2)>>2]|0);c[l>>2]=(c[l>>2]|0)+ -1}Xb(p,c[(c[h>>2]|0)+472>>2]|0);while(1){if(!(c[(c[h>>2]|0)+404>>2]|0))break;c[j>>2]=c[(c[h>>2]|0)+404>>2];c[(c[h>>2]|0)+404>>2]=c[c[j>>2]>>2];Xb(c[k>>2]|0,c[j>>2]|0)}while(1){if(!(c[(c[h>>2]|0)+524>>2]|0))break;c[o>>2]=c[(c[h>>2]|0)+524>>2];c[(c[h>>2]|0)+524>>2]=c[(c[o>>2]|0)+72>>2];Vb(c[k>>2]|0,c[o>>2]|0)}if((c[m>>2]|0)>0?(c[(c[h>>2]|0)+12>>2]|0)==0:0)c[(c[h>>2]|0)+12>>2]=1;c[n>>2]=c[m>>2];y=c[n>>2]|0;i=g;return y|0}function rf(a){a=a|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=se(c[f>>2]|0,40,0)|0;if(!(c[e>>2]|0)){f=c[e>>2]|0;i=d;return f|0}b[(c[e>>2]|0)+8>>1]=1;c[(c[e>>2]|0)+32>>2]=c[f>>2];f=c[e>>2]|0;i=d;return f|0}function sf(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0;m=i;i=i+32|0;j=m+12|0;l=m+8|0;k=m+4|0;h=m+16|0;n=m;c[j>>2]=b;c[l>>2]=d;c[k>>2]=e;a[h>>0]=f;c[n>>2]=g;if(!(c[j>>2]|0)){i=m;return}Vd(c[j>>2]|0,c[k>>2]|0,c[l>>2]|0,a[h>>0]|0,c[n>>2]|0)|0;i=m;return}function tf(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;if(!(c[d>>2]|0)){i=b;return}Bd(c[d>>2]|0);Xb(c[(c[d>>2]|0)+32>>2]|0,c[d>>2]|0);i=b;return}function uf(){return 8}function vf(){return 1504}function wf(){var a=0,b=0,d=0,e=0,f=0,g=0,h=0;f=i;i=i+16|0;e=f+12|0;d=f+8|0;a=f+4|0;b=f;if(!(c[9669]|0))Cf();h=136|0;g=h+40|0;do{c[h>>2]=0;h=h+4|0}while((h|0)<(g|0));if(c[9661]|0)c[34]=8;if(((c[9708]|0)!=0?(c[9709]|0)>=100:0)?(c[9710]|0)>0:0){c[a>>2]=c[9709]&-8;c[9709]=c[a>>2];c[b>>2]=c[9708];c[d>>2]=c[9710];c[41]=c[b>>2];c[42]=c[d>>2];c[e>>2]=0;while(1){if((c[e>>2]|0)>=((c[d>>2]|0)-1|0))break;c[c[b>>2]>>2]=(c[b>>2]|0)+(c[a>>2]|0);c[b>>2]=c[c[b>>2]>>2];c[e>>2]=(c[e>>2]|0)+1}c[c[b>>2]>>2]=0;c[40]=(c[b>>2]|0)+4}else{c[40]=0;c[9708]=0;c[9709]=0;c[9710]=0}if(((c[9711]|0)!=0?(c[9712]|0)>=512:0)?(c[9713]|0)>=1:0){g=c[9674]|0;h=c[9676]|0;h=ub[g&31](h)|0;i=f;return h|0}c[9711]=0;c[9712]=0;c[9713]=0;g=c[9674]|0;h=c[9676]|0;h=ub[g&31](h)|0;i=f;return h|0}function xf(){var a=0,b=0,d=0,e=0;a=i;i=i+16|0;b=a+8|0;d=a+4|0;e=a;c[d>>2]=1576;c[e>>2]=6232;c[b>>2]=0;while(1){if((c[b>>2]|0)>=57)break;xk(c[d>>2]|0,(c[e>>2]|0)+((c[b>>2]|0)*36|0)|0);c[b>>2]=(c[b>>2]|0)+1}lm();mm();i=a;return}function yf(){var a=0,b=0;a=i;if(!(c[9688]|0))Df();b=ub[c[38640+112>>2]&31](c[9687]|0)|0;i=a;return b|0}function zf(){var a=0,b=0,d=0;a=i;i=i+16|0;b=a+4|0;d=a;c[d>>2]=fc(10)|0;if(!(c[d>>2]|0)){c[b>>2]=7;d=c[b>>2]|0;i=a;return d|0}else{hc(c[d>>2]|0);c[b>>2]=yc()|0;d=c[b>>2]|0;i=a;return d|0}return 0}function Af(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;i=i+16|0;g=e+12|0;j=e+8|0;f=e+4|0;h=e;c[g>>2]=a;c[j>>2]=b;c[f>>2]=d;if(!(c[791]|0)){i=e;return}c[j>>2]=c[j>>2]&-8;c[792]=c[j>>2];a=c[f>>2]|0;c[799]=a;c[793]=a;if((c[f>>2]|0)>90)d=10;else d=((c[f>>2]|0)/10|0)+1|0;c[794]=d;c[795]=c[g>>2];c[798]=0;c[800]=0;while(1){a=c[f>>2]|0;c[f>>2]=a+ -1;d=c[g>>2]|0;if(!a)break;c[h>>2]=d;c[c[h>>2]>>2]=c[798];c[798]=c[h>>2];c[g>>2]=(c[g>>2]|0)+(c[j>>2]|0)}c[796]=d;i=e;return}function Bf(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;f=i;i=i+48|0;d=f+44|0;k=f+40|0;h=f+24|0;e=f+16|0;j=f+8|0;g=f;c[k>>2]=a;c[e>>2]=0;if(c[9716]|0){c[d>>2]=Qb(125290)|0;a=c[d>>2]|0;i=f;return a|0}c[h>>2]=b;do switch(c[k>>2]|0){case 9:{k=c[h>>2]|0;a=c[k>>2]|0;c[h>>2]=k+4;c[9660]=a;break};case 5:{if(!(c[9669]|0))Cf();k=c[h>>2]|0;a=c[k>>2]|0;c[h>>2]=k+4;c[a+0>>2]=c[9669];c[a+4>>2]=c[9670];c[a+8>>2]=c[9671];c[a+12>>2]=c[9672];c[a+16>>2]=c[9673];c[a+20>>2]=c[9674];c[a+24>>2]=c[9675];c[a+28>>2]=c[9676];break};case 19:{if(!(c[9688]|0))Df();g=c[h>>2]|0;j=c[g>>2]|0;c[h>>2]=g+4;j=j+0|0;h=38744|0;g=j+52|0;do{c[j>>2]=c[h>>2];j=j+4|0;h=h+4|0}while((j|0)<(g|0));break};case 16:{a=c[h>>2]|0;k=c[a>>2]|0;c[h>>2]=a+4;c[9723]=k;k=c[h>>2]|0;a=c[k>>2]|0;c[h>>2]=k+4;c[9724]=a;break};case 17:{k=c[h>>2]|0;a=c[k>>2]|0;c[h>>2]=k+4;c[9663]=a;break};case 22:{a=c[h>>2]|0;k=a;l=c[k>>2]|0;k=c[k+4>>2]|0;c[h>>2]=a+8;a=j;c[a>>2]=l;c[a+4>>2]=k;a=c[h>>2]|0;k=a;l=c[k>>2]|0;k=c[k+4>>2]|0;c[h>>2]=a+8;a=g;c[a>>2]=l;c[a+4>>2]=k;a=g;b=c[a+4>>2]|0;a=(c[g+4>>2]|0)<0|((b|0)>0|(b|0)==0&(c[a>>2]|0)>>>0>0);b=g;c[b>>2]=a?0:l;c[b+4>>2]=a?0:k;b=g;k=c[b+4>>2]|0;a=38824|0;c[a>>2]=c[b>>2];c[a+4>>2]=k;if((c[j+4>>2]|0)<0){l=j;c[l>>2]=0;c[l+4>>2]=0}a=j;b=c[a+4>>2]|0;l=g;k=c[l+4>>2]|0;if((b|0)>(k|0)|((b|0)==(k|0)?(c[a>>2]|0)>>>0>(c[l>>2]|0)>>>0:0)){k=g;a=c[k+4>>2]|0;l=j;c[l>>2]=c[k>>2];c[l+4>>2]=a}k=j;a=c[k+4>>2]|0;l=38816|0;c[l>>2]=c[k>>2];c[l+4>>2]=a;break};case 13:{l=c[h>>2]|0;a=c[l>>2]|0;c[h>>2]=l+4;c[9667]=a;a=c[h>>2]|0;l=c[a>>2]|0;c[h>>2]=a+4;c[9668]=l;break};case 7:{a=c[h>>2]|0;l=c[a>>2]|0;c[h>>2]=a+4;c[9711]=l;l=c[h>>2]|0;a=c[l>>2]|0;c[h>>2]=l+4;c[9712]=a;a=c[h>>2]|0;l=c[a>>2]|0;c[h>>2]=a+4;c[9713]=l;break};case 20:{a=c[h>>2]|0;l=c[a>>2]|0;c[h>>2]=a+4;c[9664]=l;break};case 15:{c[e>>2]=1;break};case 4:{a=c[h>>2]|0;l=c[a>>2]|0;c[h>>2]=a+4;c[9669]=c[l+0>>2];c[9670]=c[l+4>>2];c[9671]=c[l+8>>2];c[9672]=c[l+12>>2];c[9673]=c[l+16>>2];c[9674]=c[l+20>>2];c[9675]=c[l+24>>2];c[9676]=c[l+28>>2];break};case 6:{a=c[h>>2]|0;l=c[a>>2]|0;c[h>>2]=a+4;c[9708]=l;l=c[h>>2]|0;a=c[l>>2]|0;c[h>>2]=l+4;c[9709]=a;a=c[h>>2]|0;l=c[a>>2]|0;c[h>>2]=a+4;c[9710]=l;break};case 18:{j=c[h>>2]|0;g=c[j>>2]|0;c[h>>2]=j+4;j=38744|0;h=g+0|0;g=j+52|0;do{c[j>>2]=c[h>>2];j=j+4|0;h=h+4|0}while((j|0)<(g|0));break};case 14:break;default:c[e>>2]=1}while(0);c[d>>2]=c[e>>2];l=c[d>>2]|0;i=f;return l|0}function Cf(){var a=0,b=0;a=i;i=i+16|0;b=a;c[b>>2]=6120;Bf(4,b)|0;i=a;return}function Df(){var a=0,b=0;a=i;i=i+16|0;b=a;c[b>>2]=6064;Bf(18,b)|0;i=a;return}function Ef(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=i;i=i+16|0;f=b+12|0;g=b+8|0;d=b+4|0;e=b;c[f>>2]=a;Rb(c[f>>2]|0);c[g>>2]=0;while(1){if((c[g>>2]|0)>=(c[(c[f>>2]|0)+20>>2]|0))break;c[d>>2]=c[(c[(c[f>>2]|0)+16>>2]|0)+(c[g>>2]<<4)+4>>2];if(c[d>>2]|0){c[e>>2]=Sb(c[d>>2]|0)|0;Ff(c[e>>2]|0)}c[g>>2]=(c[g>>2]|0)+1}i=b;return 0}function Ff(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;Zk(c[(c[d>>2]|0)+204>>2]|0);i=b;return}function Gf(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;n=i;i=i+32|0;j=n+28|0;o=n+24|0;q=n+20|0;p=n+16|0;m=n+12|0;k=n+8|0;h=n+4|0;l=n;c[o>>2]=d;c[q>>2]=e;c[p>>2]=f;c[m>>2]=g;if(c[(c[o>>2]|0)+252>>2]|0){c[j>>2]=5;d=c[j>>2]|0;i=n;return d|0}if(a[(c[o>>2]|0)+251>>0]|0)hc(c[(c[o>>2]|0)+276>>2]|0);d=c[p>>2]&-8;c[p>>2]=d;c[p>>2]=(c[p>>2]|0)<=4?0:d;if((c[m>>2]|0)<0)c[m>>2]=0;do if(!((c[p>>2]|0)==0|(c[m>>2]|0)==0)){if(c[q>>2]|0){c[k>>2]=c[q>>2];break}kh();d=$(c[p>>2]|0,c[m>>2]|0)|0;c[k>>2]=gc(d,((d|0)<0)<<31>>31)|0;lh();if(c[k>>2]|0){d=Tb(c[k>>2]|0)|0;c[m>>2]=(d|0)/(c[p>>2]|0)|0}}else{c[p>>2]=0;c[k>>2]=0}while(0);c[(c[o>>2]|0)+276>>2]=c[k>>2];c[(c[o>>2]|0)+272>>2]=0;b[(c[o>>2]|0)+248>>1]=c[p>>2];if(c[k>>2]|0){c[l>>2]=c[k>>2];c[h>>2]=(c[m>>2]|0)-1;while(1){if((c[h>>2]|0)<0)break;c[c[l>>2]>>2]=c[(c[o>>2]|0)+272>>2];c[(c[o>>2]|0)+272>>2]=c[l>>2];c[l>>2]=(c[l>>2]|0)+(c[p>>2]|0);c[h>>2]=(c[h>>2]|0)+ -1}c[(c[o>>2]|0)+280>>2]=c[l>>2];a[(c[o>>2]|0)+250>>0]=1;a[(c[o>>2]|0)+251>>0]=(c[q>>2]|0)==0?1:0}else{c[(c[o>>2]|0)+276>>2]=c[o>>2];c[(c[o>>2]|0)+280>>2]=c[o>>2];a[(c[o>>2]|0)+250>>0]=0;a[(c[o>>2]|0)+251>>0]=0}c[j>>2]=0;d=c[j>>2]|0;i=n;return d|0}function Hf(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;a=(c[d>>2]|0)+32|0;D=c[a+4>>2]|0;i=b;return c[a>>2]|0}function If(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;i=d;return c[(c[b>>2]|0)+80>>2]|0}function Jf(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;i=d;return c[(c[b>>2]|0)+84>>2]|0}function Kf(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;a=Lf(c[d>>2]|0,0)|0;i=b;return a|0}function Lf(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=i;i=i+16|0;g=d;e=d+12|0;f=d+8|0;h=d+4|0;c[f>>2]=a;c[h>>2]=b;if(!(c[f>>2]|0)){c[e>>2]=0;a=c[e>>2]|0;i=d;return a|0}if(!($f(c[f>>2]|0)|0)){c[e>>2]=Qb(125804)|0;a=c[e>>2]|0;i=d;return a|0}Xk(c[f>>2]|0);Uk(c[f>>2]|0)|0;if((c[h>>2]|0)==0?(Hk(c[f>>2]|0)|0)!=0:0){Lc(c[f>>2]|0,5,5992,g);c[e>>2]=5;a=c[e>>2]|0;i=d;return a|0}c[(c[f>>2]|0)+76>>2]=1691352191;rd(c[f>>2]|0);c[e>>2]=0;a=c[e>>2]|0;i=d;return a|0}function Mf(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;a=Lf(c[d>>2]|0,1)|0;i=b;return a|0}function Nf(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+16|0;f=e+8|0;h=e+4|0;g=e;c[f>>2]=a;c[h>>2]=b;c[g>>2]=d;c[(c[f>>2]|0)+444>>2]=c[h>>2];c[(c[f>>2]|0)+448>>2]=c[g>>2];c[(c[f>>2]|0)+452>>2]=0;c[(c[f>>2]|0)+492>>2]=0;i=e;return 0}function Of(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;b=c[e>>2]|0;if((c[f>>2]|0)>0){Nf(b,34,c[e>>2]|0)|0;c[(c[e>>2]|0)+492>>2]=c[f>>2];i=d;return 0}else{Nf(b,0,0)|0;i=d;return 0}return 0}function Pf(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;d=i;i=i+32|0;e=d+16|0;j=d+12|0;h=d+8|0;f=d+4|0;g=d;c[j>>2]=a;c[h>>2]=b;c[f>>2]=c[j>>2];c[g>>2]=c[(c[j>>2]|0)+492>>2];if((((c[h>>2]|0)+1|0)*1e3|0)>(c[g>>2]|0)){c[e>>2]=0;j=c[e>>2]|0;i=d;return j|0}else{fg(c[c[f>>2]>>2]|0,1e6)|0;c[e>>2]=1;j=c[e>>2]|0;i=d;return j|0}return 0}function Qf(d,f,g,h,j,k,l,m,n){d=d|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;var o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;v=i;i=i+64|0;C=v;z=v+56|0;q=v+52|0;r=v+48|0;t=v+44|0;u=v+40|0;x=v+36|0;y=v+32|0;p=v+28|0;A=v+24|0;B=v+20|0;o=v+16|0;s=v+12|0;w=v+8|0;D=v+4|0;c[q>>2]=d;c[r>>2]=f;c[t>>2]=g;c[u>>2]=h;c[x>>2]=j;c[y>>2]=k;c[p>>2]=l;c[A>>2]=m;c[B>>2]=n;do if(c[r>>2]|0){if((c[y>>2]|0)!=0?(c[A>>2]|0)!=0|(c[p>>2]|0)!=0:0)break;if(((c[y>>2]|0)==0&(c[A>>2]|0)!=0^1|(c[p>>2]|0)!=0?!((((c[y>>2]|0)!=0|(c[A>>2]|0)!=0)^1)&(c[p>>2]|0)!=0|(c[t>>2]|0)<-1|(c[t>>2]|0)>127):0)?(d=Mb(c[r>>2]|0)|0,c[s>>2]=d,255>=(d|0)):0){c[w>>2]=c[u>>2]&2048;c[u>>2]=c[u>>2]&7;do if((c[u>>2]|0)!=4){if((c[u>>2]|0)==5){c[D>>2]=Qf(c[q>>2]|0,c[r>>2]|0,c[t>>2]|0,1|c[w>>2],c[x>>2]|0,c[y>>2]|0,c[p>>2]|0,c[A>>2]|0,c[B>>2]|0)|0;if(!(c[D>>2]|0))c[D>>2]=Qf(c[q>>2]|0,c[r>>2]|0,c[t>>2]|0,2|c[w>>2],c[x>>2]|0,c[y>>2]|0,c[p>>2]|0,c[A>>2]|0,c[B>>2]|0)|0;if(!(c[D>>2]|0)){c[u>>2]=3;break}c[z>>2]=c[D>>2];d=c[z>>2]|0;i=v;return d|0}}else c[u>>2]=(a[1136]|0)==0?3:2;while(0);c[o>>2]=Sf(c[q>>2]|0,c[r>>2]|0,c[s>>2]|0,c[t>>2]|0,c[u>>2]&255,0)|0;do if(((c[o>>2]|0)!=0?(e[(c[o>>2]|0)+2>>1]&3|0)==(c[u>>2]|0):0)?(b[c[o>>2]>>1]|0)==(c[t>>2]|0):0){D=c[q>>2]|0;if(!(c[(c[q>>2]|0)+148>>2]|0)){gf(D);break}Lc(D,5,5048,C);c[z>>2]=5;d=c[z>>2]|0;i=v;return d|0}while(0);c[o>>2]=Sf(c[q>>2]|0,c[r>>2]|0,c[s>>2]|0,c[t>>2]|0,c[u>>2]&255,1)|0;if(!(c[o>>2]|0)){c[z>>2]=7;d=c[z>>2]|0;i=v;return d|0}Gk(c[q>>2]|0,c[o>>2]|0);if(c[B>>2]|0){d=c[B>>2]|0;c[d>>2]=(c[d>>2]|0)+1}c[(c[o>>2]|0)+32>>2]=c[B>>2];b[(c[o>>2]|0)+2>>1]=e[(c[o>>2]|0)+2>>1]&3|c[w>>2];c[(c[o>>2]|0)+12>>2]=c[y>>2];c[(c[o>>2]|0)+16>>2]=c[p>>2];c[(c[o>>2]|0)+20>>2]=c[A>>2];c[(c[o>>2]|0)+4>>2]=c[x>>2];b[c[o>>2]>>1]=c[t>>2];c[z>>2]=0;d=c[z>>2]|0;i=v;return d|0}}while(0);c[z>>2]=Qb(126362)|0;d=c[z>>2]|0;i=v;return d|0}function Rf(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;f=i;i=i+32|0;g=f+16|0;j=f+12|0;h=f+8|0;k=f+4|0;e=f;c[g>>2]=a;c[j>>2]=b;c[h>>2]=d;c[k>>2]=Mb(c[j>>2]|0)|0;c[e>>2]=0;if(!(Sf(c[g>>2]|0,c[j>>2]|0,c[k>>2]|0,c[h>>2]|0,1,0)|0))c[e>>2]=Qf(c[g>>2]|0,c[j>>2]|0,c[h>>2]|0,1,0,51,0,0,0)|0;c[e>>2]=wd(c[g>>2]|0,c[e>>2]|0)|0;i=f;return c[e>>2]|0}function Sf(e,f,g,h,j,k){e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;y=i;i=i+64|0;x=y+44|0;q=y+40|0;o=y+36|0;p=y+32|0;m=y+28|0;n=y+49|0;r=y+48|0;t=y+24|0;u=y+20|0;s=y+16|0;w=y+12|0;z=y+8|0;v=y+4|0;l=y;c[q>>2]=e;c[o>>2]=f;c[p>>2]=g;c[m>>2]=h;a[n>>0]=j;a[r>>0]=k;c[u>>2]=0;c[s>>2]=0;c[w>>2]=((d[440+(d[c[o>>2]>>0]|0)>>0]|0)+(c[p>>2]|0)|0)%23|0;c[t>>2]=vk((c[q>>2]|0)+336|0,c[w>>2]|0,c[o>>2]|0,c[p>>2]|0)|0;while(1){if(!(c[t>>2]|0))break;c[z>>2]=wk(c[t>>2]|0,c[m>>2]|0,a[n>>0]|0)|0;if((c[z>>2]|0)>(c[s>>2]|0)){c[u>>2]=c[t>>2];c[s>>2]=c[z>>2]}c[t>>2]=c[(c[t>>2]|0)+8>>2]}a:do if(!(a[r>>0]|0)){if((c[u>>2]|0)!=0?(c[(c[q>>2]|0)+24>>2]&2097152|0)==0:0)break;c[v>>2]=1576;c[s>>2]=0;c[t>>2]=vk(c[v>>2]|0,c[w>>2]|0,c[o>>2]|0,c[p>>2]|0)|0;while(1){if(!(c[t>>2]|0))break a;c[l>>2]=wk(c[t>>2]|0,c[m>>2]|0,a[n>>0]|0)|0;if((c[l>>2]|0)>(c[s>>2]|0)){c[u>>2]=c[t>>2];c[s>>2]=c[l>>2]}c[t>>2]=c[(c[t>>2]|0)+8>>2]}}while(0);if((d[r>>0]|0)!=0&(c[s>>2]|0)<6?(e=se(c[q>>2]|0,37+(c[p>>2]|0)|0,0)|0,c[u>>2]=e,(e|0)!=0):0){c[(c[u>>2]|0)+24>>2]=(c[u>>2]|0)+36;b[c[u>>2]>>1]=c[m>>2];b[(c[u>>2]|0)+2>>1]=d[n>>0]|0;dF(c[(c[u>>2]|0)+24>>2]|0,c[o>>2]|0,c[p>>2]|0)|0;a[(c[(c[u>>2]|0)+24>>2]|0)+(c[p>>2]|0)>>0]=0;xk((c[q>>2]|0)+336|0,c[u>>2]|0)}do if(c[u>>2]|0){if(((c[(c[u>>2]|0)+16>>2]|0)==0?(c[(c[u>>2]|0)+12>>2]|0)==0:0)?(d[r>>0]|0)==0:0)break;c[x>>2]=c[u>>2];e=c[x>>2]|0;i=y;return e|0}while(0);c[x>>2]=0;e=c[x>>2]|0;i=y;return e|0}function Tf(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;i=i+32|0;h=e;g=e+20|0;j=e+8|0;f=e+4|0;c[g>>2]=a;c[e+16>>2]=b;c[e+12>>2]=d;c[j>>2]=c[(c[(c[g>>2]|0)+4>>2]|0)+24>>2];c[h>>2]=c[j>>2];c[f>>2]=qc(4928,h)|0;Ud(c[g>>2]|0,c[f>>2]|0,-1);hc(c[f>>2]|0);i=e;return}function Uf(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;b=c[f>>2]|0;if((c[e>>2]|0)>0){Vf(b,5,c[e>>2]|0)|0;i=d;return 0}else{Vf(b,0,0)|0;i=d;return 0}return 0}function Vf(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;f=i;i=i+16|0;g=f+12|0;j=f+8|0;h=f+4|0;e=f;c[g>>2]=a;c[j>>2]=b;c[h>>2]=d;c[e>>2]=c[(c[g>>2]|0)+216>>2];c[(c[g>>2]|0)+212>>2]=c[j>>2];c[(c[g>>2]|0)+216>>2]=c[h>>2];i=f;return c[e>>2]|0}function Wf(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;f=i;i=i+16|0;j=f+12|0;g=f+8|0;h=f+4|0;k=f;c[j>>2]=a;c[g>>2]=b;c[h>>2]=d;c[k>>2]=e;if((c[k>>2]|0)<(c[j>>2]|0)){i=f;return 0}kh();_f(c[g>>2]|0,c[h>>2]|0)|0;lh();i=f;return 0}function Xf(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;j=i;i=i+48|0;n=j;o=j+32|0;l=j+28|0;m=j+24|0;p=j+20|0;q=j+16|0;r=j+12|0;k=j+8|0;h=j+4|0;c[l>>2]=b;c[m>>2]=d;c[p>>2]=e;c[q>>2]=f;c[r>>2]=g;c[h>>2]=10;if(c[q>>2]|0)c[c[q>>2]>>2]=-1;if(c[r>>2]|0)c[c[r>>2]>>2]=-1;if((c[p>>2]|0)<0|(c[p>>2]|0)>2){c[o>>2]=21;b=c[o>>2]|0;i=j;return b|0}if((c[m>>2]|0)!=0?(a[c[m>>2]>>0]|0)!=0:0)c[h>>2]=Yf(c[l>>2]|0,c[m>>2]|0)|0;if((c[h>>2]|0)<0){c[k>>2]=1;b=c[l>>2]|0;c[n>>2]=c[m>>2];Lc(b,1,1672,n)}else{c[k>>2]=Zf(c[l>>2]|0,c[h>>2]|0,c[p>>2]|0,c[q>>2]|0,c[r>>2]|0)|0;Nc(c[l>>2]|0,c[k>>2]|0)}c[k>>2]=wd(c[l>>2]|0,c[k>>2]|0)|0;c[o>>2]=c[k>>2];b=c[o>>2]|0;i=j;return b|0}function Yf(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;d=i;i=i+32|0;j=d+16|0;g=d+12|0;e=d+8|0;f=d+4|0;h=d;c[j>>2]=a;c[g>>2]=b;c[e>>2]=-1;if(!(c[g>>2]|0)){a=c[e>>2]|0;i=d;return a|0}c[h>>2]=Mb(c[g>>2]|0)|0;c[e>>2]=(c[(c[j>>2]|0)+20>>2]|0)-1;c[f>>2]=(c[(c[j>>2]|0)+16>>2]|0)+(c[e>>2]<<4);while(1){if((c[e>>2]|0)<0){b=7;break}a=c[h>>2]|0;if((a|0)==(Mb(c[c[f>>2]>>2]|0)|0)?0==(xc(c[c[f>>2]>>2]|0,c[g>>2]|0)|0):0){b=7;break}c[e>>2]=(c[e>>2]|0)+ -1;c[f>>2]=(c[f>>2]|0)+ -16}if((b|0)==7){a=c[e>>2]|0;i=d;return a|0}return 0}function Zf(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;n=i;i=i+32|0;k=n+28|0;p=n+24|0;m=n+20|0;g=n+16|0;o=n+12|0;h=n+8|0;l=n+4|0;j=n;c[k>>2]=a;c[p>>2]=b;c[m>>2]=d;c[g>>2]=e;c[o>>2]=f;c[h>>2]=0;c[j>>2]=0;c[l>>2]=0;while(1){if(!((c[h>>2]|0)==0?(c[l>>2]|0)<(c[(c[k>>2]|0)+20>>2]|0):0))break;if(((c[p>>2]|0)==10?1:(c[l>>2]|0)==(c[p>>2]|0))?(c[h>>2]=tk(c[(c[(c[k>>2]|0)+16>>2]|0)+(c[l>>2]<<4)+4>>2]|0,c[m>>2]|0,c[g>>2]|0,c[o>>2]|0)|0,c[g>>2]=0,c[o>>2]=0,(c[h>>2]|0)==5):0){c[j>>2]=1;c[h>>2]=0}c[l>>2]=(c[l>>2]|0)+1}i=n;return((c[h>>2]|0)==0&(c[j>>2]|0)!=0?5:c[h>>2]|0)|0}function _f(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;a=Xf(c[f>>2]|0,c[e>>2]|0,0,0,0)|0;i=d;return a|0}function $f(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;i=i+16|0;d=b+8|0;f=b+4|0;e=b;c[f>>2]=a;c[e>>2]=c[(c[f>>2]|0)+76>>2];if((c[e>>2]|0)!=1266094736&(c[e>>2]|0)!=-1607883113&(c[e>>2]|0)!=-264537850){sk(4872);c[d>>2]=0;f=c[d>>2]|0;i=b;return f|0}else{c[d>>2]=1;f=c[d>>2]|0;i=b;return f|0}return 0}function ag(a){a=a|0;var b=0,e=0,f=0;e=i;i=i+16|0;b=e+4|0;f=e;c[f>>2]=a;if((c[f>>2]|0)!=0?($f(c[f>>2]|0)|0)==0:0){c[b>>2]=Qb(126921)|0;f=c[b>>2]|0;i=e;return f|0}if((c[f>>2]|0)!=0?(d[(c[f>>2]|0)+64>>0]|0|0)==0:0){c[b>>2]=c[(c[f>>2]|0)+52>>2]&c[(c[f>>2]|0)+56>>2];f=c[b>>2]|0;i=e;return f|0}c[b>>2]=7;f=c[b>>2]|0;i=e;return f|0}function bg(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;e=i;i=i+32|0;f=e+16|0;j=e+12|0;k=e+8|0;h=e+4|0;g=e;c[j>>2]=a;c[k>>2]=b;c[h>>2]=d;if((c[k>>2]|0)<0|(c[k>>2]|0)>=12){c[f>>2]=-1;a=c[f>>2]|0;i=e;return a|0}c[g>>2]=c[(c[j>>2]|0)+88+(c[k>>2]<<2)>>2];if((c[h>>2]|0)>=0){if((c[h>>2]|0)>(c[1696+(c[k>>2]<<2)>>2]|0))c[h>>2]=c[1696+(c[k>>2]<<2)>>2];c[(c[j>>2]|0)+88+(c[k>>2]<<2)>>2]=c[h>>2]}c[f>>2]=c[g>>2];a=c[f>>2]|0;i=e;return a|0}function cg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;a=dg(c[f>>2]|0,c[e>>2]|0,6,0)|0;i=d;return a|0}function dg(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;p=i;i=i+48|0;q=p;m=p+40|0;o=p+36|0;r=p+32|0;g=p+28|0;n=p+24|0;l=p+20|0;j=p+16|0;s=p+12|0;k=p+8|0;h=p+4|0;c[o>>2]=b;c[r>>2]=d;c[g>>2]=e;c[n>>2]=f;c[k>>2]=0;c[h>>2]=0;c[c[r>>2]>>2]=0;c[j>>2]=Zb()|0;if(c[j>>2]|0){c[m>>2]=c[j>>2];b=c[m>>2]|0;i=p;return b|0}if(!(1<<(c[g>>2]&7)&70)){c[m>>2]=Qb(127429)|0;b=c[m>>2]|0;i=p;return b|0}do if(c[9661]|0){if(c[g>>2]&32768){c[s>>2]=0;break}if(c[g>>2]&65536){c[s>>2]=1;break}else{c[s>>2]=c[9662];break}}else c[s>>2]=0;while(0);if(!(c[g>>2]&262144)){if(c[9715]|0)c[g>>2]=c[g>>2]|131072}else c[g>>2]=c[g>>2]&-131073;c[g>>2]=c[g>>2]&-655129;c[l>>2]=Mc(528,0)|0;do if(c[l>>2]|0){if((c[s>>2]|0)!=0?(c[(c[l>>2]|0)+12>>2]=8,(c[(c[l>>2]|0)+12>>2]|0)==0):0){hc(c[l>>2]|0);c[l>>2]=0;break}c[(c[l>>2]|0)+56>>2]=255;c[(c[l>>2]|0)+20>>2]=2;c[(c[l>>2]|0)+76>>2]=-264537850;c[(c[l>>2]|0)+16>>2]=(c[l>>2]|0)+456;e=(c[l>>2]|0)+88|0;s=1696;f=e+48|0;do{c[e>>2]=c[s>>2];e=e+4|0;s=s+4|0}while((e|0)<(f|0));c[(c[l>>2]|0)+132>>2]=0;a[(c[l>>2]|0)+62>>0]=1;a[(c[l>>2]|0)+66>>0]=-1;e=38816;d=c[e+4>>2]|0;b=(c[l>>2]|0)+40|0;c[b>>2]=c[e>>2];c[b+4>>2]=d;c[(c[l>>2]|0)+72>>2]=0;c[(c[l>>2]|0)+136>>2]=2147483647;b=(c[l>>2]|0)+24|0;c[b>>2]=c[b>>2]|9437264;nh((c[l>>2]|0)+428|0);nh((c[l>>2]|0)+308|0);eg(c[l>>2]|0,3320,1,0,8,0)|0;eg(c[l>>2]|0,3320,3,0,8,0)|0;eg(c[l>>2]|0,3320,2,0,8,0)|0;eg(c[l>>2]|0,3328,1,1,8,0)|0;if(!(a[(c[l>>2]|0)+64>>0]|0)){b=$g(c[l>>2]|0,1,3320,0)|0;c[(c[l>>2]|0)+8>>2]=b;eg(c[l>>2]|0,3336,1,0,9,0)|0;c[(c[l>>2]|0)+48>>2]=c[g>>2];c[j>>2]=qh(c[n>>2]|0,c[o>>2]|0,g,c[l>>2]|0,k,h)|0;if(c[j>>2]|0){if((c[j>>2]|0)==7)a[(c[l>>2]|0)+64>>0]=1;e=c[l>>2]|0;d=c[j>>2]|0;b=(c[h>>2]|0)!=0?1200:0;c[q>>2]=c[h>>2];Lc(e,d,b,q);hc(c[h>>2]|0);break}c[j>>2]=rh(c[c[l>>2]>>2]|0,c[k>>2]|0,c[l>>2]|0,(c[(c[l>>2]|0)+16>>2]|0)+4|0,0,c[g>>2]|256)|0;if(c[j>>2]|0){if((c[j>>2]|0)==3082)c[j>>2]=7;Nc(c[l>>2]|0,c[j>>2]|0);break}Pc(c[(c[(c[l>>2]|0)+16>>2]|0)+4>>2]|0);b=sh(c[l>>2]|0,c[(c[(c[l>>2]|0)+16>>2]|0)+4>>2]|0)|0;c[(c[(c[l>>2]|0)+16>>2]|0)+12>>2]=b;b=sh(c[l>>2]|0,0)|0;c[(c[(c[l>>2]|0)+16>>2]|0)+28>>2]=b;c[c[(c[l>>2]|0)+16>>2]>>2]=3344;a[(c[(c[l>>2]|0)+16>>2]|0)+8>>0]=3;c[(c[(c[l>>2]|0)+16>>2]|0)+16>>2]=1496;a[(c[(c[l>>2]|0)+16>>2]|0)+24>>0]=1;c[(c[l>>2]|0)+76>>2]=-1607883113;if(!(a[(c[l>>2]|0)+64>>0]|0)){Nc(c[l>>2]|0,0);th(c[l>>2]|0);c[j>>2]=ag(c[l>>2]|0)|0;if((c[j>>2]|0)==0?(uh(c[l>>2]|0),c[j>>2]=ag(c[l>>2]|0)|0,(c[j>>2]|0)!=0):0)break;if(c[j>>2]|0)Nc(c[l>>2]|0,c[j>>2]|0);Gf(c[l>>2]|0,0,c[9667]|0,c[9668]|0)|0;Uf(c[l>>2]|0,1e3)|0}}}while(0);hc(c[k>>2]|0);c[j>>2]=ag(c[l>>2]|0)|0;if((c[j>>2]|0)!=7){if(c[j>>2]|0)c[(c[l>>2]|0)+76>>2]=1266094736}else{Kf(c[l>>2]|0)|0;c[l>>2]=0}c[c[r>>2]>>2]=c[l>>2];c[m>>2]=wd(0,c[j>>2]|0)|0;b=c[m>>2]|0;i=p;return b|0}function eg(b,e,f,g,h,j){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;r=i;i=i+64|0;m=r;t=r+44|0;n=r+40|0;p=r+36|0;x=r+48|0;v=r+32|0;u=r+28|0;w=r+24|0;q=r+20|0;o=r+16|0;k=r+12|0;s=r+8|0;l=r+4|0;c[n>>2]=b;c[p>>2]=e;a[x>>0]=f;c[v>>2]=g;c[u>>2]=h;c[w>>2]=j;c[o>>2]=d[x>>0];if((c[o>>2]|0)==4|(c[o>>2]|0)==8)c[o>>2]=(a[1136]|0)==0?3:2;if((c[o>>2]|0)<1|(c[o>>2]|0)>3){c[t>>2]=Qb(127001)|0;b=c[t>>2]|0;i=r;return b|0}c[q>>2]=$g(c[n>>2]|0,c[o>>2]&255,c[p>>2]|0,0)|0;a:do if((c[q>>2]|0)!=0?(c[(c[q>>2]|0)+12>>2]|0)!=0:0){j=c[n>>2]|0;if(c[(c[n>>2]|0)+148>>2]|0){Lc(j,5,3248,m);c[t>>2]=5;b=c[t>>2]|0;i=r;return b|0}gf(j);ah(c[n>>2]|0);if((d[(c[q>>2]|0)+4>>0]&-9|0)==(c[o>>2]|0)){c[k>>2]=bh((c[n>>2]|0)+428|0,c[p>>2]|0)|0;c[s>>2]=0;while(1){if((c[s>>2]|0)>=3)break a;c[l>>2]=(c[k>>2]|0)+((c[s>>2]|0)*20|0);if((d[(c[l>>2]|0)+4>>0]|0)==(d[(c[q>>2]|0)+4>>0]|0)){if(c[(c[l>>2]|0)+16>>2]|0)rb[c[(c[l>>2]|0)+16>>2]&31](c[(c[l>>2]|0)+8>>2]|0);c[(c[l>>2]|0)+12>>2]=0}c[s>>2]=(c[s>>2]|0)+1}}}while(0);c[q>>2]=$g(c[n>>2]|0,c[o>>2]&255,c[p>>2]|0,1)|0;if(!(c[q>>2]|0)){c[t>>2]=7;b=c[t>>2]|0;i=r;return b|0}else{c[(c[q>>2]|0)+12>>2]=c[u>>2];c[(c[q>>2]|0)+8>>2]=c[v>>2];c[(c[q>>2]|0)+16>>2]=c[w>>2];a[(c[q>>2]|0)+4>>0]=c[o>>2]|d[x>>0]&8;Nc(c[n>>2]|0,0);c[t>>2]=0;b=c[t>>2]|0;i=r;return b|0}return 0}function fg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;a=zb[c[(c[f>>2]|0)+60>>2]&63](c[f>>2]|0,c[e>>2]|0)|0;i=d;return a|0}function gg(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;k=i;i=i+32|0;o=k+28|0;n=k+24|0;j=k+20|0;g=k+16|0;f=k+12|0;l=k+8|0;m=k+4|0;h=k;c[o>>2]=a;c[n>>2]=b;c[j>>2]=d;c[g>>2]=e;c[f>>2]=1;c[l>>2]=hg(c[o>>2]|0,c[n>>2]|0)|0;if(!(c[l>>2]|0)){o=c[f>>2]|0;i=k;return o|0}Pc(c[l>>2]|0);c[m>>2]=Sb(c[l>>2]|0)|0;c[h>>2]=ed(c[m>>2]|0)|0;l=c[h>>2]|0;if((c[j>>2]|0)==7){c[c[g>>2]>>2]=l;c[f>>2]=0;o=c[f>>2]|0;i=k;return o|0}if(c[l>>2]|0){c[f>>2]=ig(c[h>>2]|0,c[j>>2]|0,c[g>>2]|0)|0;o=c[f>>2]|0;i=k;return o|0}else{c[f>>2]=12;o=c[f>>2]|0;i=k;return o|0}return 0}function hg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=i;i=i+16|0;d=e+12|0;f=e+8|0;h=e+4|0;g=e;c[f>>2]=a;c[h>>2]=b;c[g>>2]=0;while(1){if((c[g>>2]|0)>=(c[(c[f>>2]|0)+20>>2]|0)){b=8;break}if(c[(c[(c[f>>2]|0)+16>>2]|0)+(c[g>>2]<<4)+4>>2]|0){if(!(c[h>>2]|0)){b=6;break}if(!(xc(c[h>>2]|0,c[(c[(c[f>>2]|0)+16>>2]|0)+(c[g>>2]<<4)>>2]|0)|0)){b=6;break}}c[g>>2]=(c[g>>2]|0)+1}if((b|0)==6){c[d>>2]=c[(c[(c[f>>2]|0)+16>>2]|0)+(c[g>>2]<<4)+4>>2];a=c[d>>2]|0;i=e;return a|0}else if((b|0)==8){c[d>>2]=0;a=c[d>>2]|0;i=e;return a|0}return 0}function ig(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+16|0;h=e+8|0;g=e+4|0;f=e;c[h>>2]=a;c[g>>2]=b;c[f>>2]=d;a=pb[c[(c[c[h>>2]>>2]|0)+40>>2]&31](c[h>>2]|0,c[g>>2]|0,c[f>>2]|0)|0;i=e;return a|0}function jg(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+16|0;e=b+4|0;d=b;c[e>>2]=a;c[d>>2]=c[9725];if(!(c[d>>2]|0)){e=0;i=b;return e|0}e=ub[c[d>>2]&31](c[e>>2]|0)|0;i=b;return e|0}function kg(a,d,f,g){a=a|0;d=d|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;m=i;i=i+32|0;j=m+24|0;p=m+20|0;o=m+16|0;h=m+12|0;n=m+8|0;k=m+4|0;l=m;c[p>>2]=a;c[o>>2]=d;c[h>>2]=f;c[n>>2]=g;c[k>>2]=0;c[l>>2]=c[(c[p>>2]|0)+4>>2];Pc(c[p>>2]|0);if((e[(c[l>>2]|0)+22>>1]|0)&2){c[j>>2]=8;p=c[j>>2]|0;i=m;return p|0}if((c[h>>2]|0)<0)c[h>>2]=(c[(c[l>>2]|0)+32>>2]|0)-(c[(c[l>>2]|0)+36>>2]|0);if((c[o>>2]|0)>=512&(c[o>>2]|0)<=65536?((c[o>>2]|0)-1&c[o>>2]|0)==0:0){c[(c[l>>2]|0)+32>>2]=c[o>>2];Dg(c[l>>2]|0)}c[k>>2]=Eg(c[c[l>>2]>>2]|0,(c[l>>2]|0)+32|0,c[h>>2]|0)|0;c[(c[l>>2]|0)+36>>2]=(c[(c[l>>2]|0)+32>>2]|0)-(c[h>>2]&65535);if(c[n>>2]|0){p=(c[l>>2]|0)+22|0;b[p>>1]=e[p>>1]|0|2}c[j>>2]=c[k>>2];p=c[j>>2]|0;i=m;return p|0}function lg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;a=Cg(c[f>>2]|0,c[e>>2]|0)|0;i=d;return a|0}function mg(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+16|0;e=b+4|0;d=b;c[e>>2]=a;Bg(8,c[e>>2]|0);if((c[42]|0)!=0?(c[9709]|0)>=(c[e>>2]|0):0){c[d>>2]=c[41];c[41]=c[c[41]>>2];c[42]=(c[42]|0)+ -1;ic(3,1);e=c[d>>2]|0;i=b;return e|0}e=c[e>>2]|0;c[d>>2]=gc(e,((e|0)<0)<<31>>31)|0;if(!((c[9660]|0)!=0&(c[d>>2]|0)!=0)){e=c[d>>2]|0;i=b;return e|0}ic(4,Tb(c[d>>2]|0)|0);e=c[d>>2]|0;i=b;return e|0}function ng(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;i=i+16|0;d=b+8|0;e=b+4|0;f=b;c[d>>2]=a;if(!(c[d>>2]|0)){i=b;return}if((c[d>>2]|0)>>>0>=(c[9708]|0)>>>0?(c[d>>2]|0)>>>0<(c[40]|0)>>>0:0){c[e>>2]=c[d>>2];c[c[e>>2]>>2]=c[41];c[41]=c[e>>2];c[42]=(c[42]|0)+1;ic(3,-1);i=b;return}if(c[9660]|0){c[f>>2]=Tb(c[d>>2]|0)|0;ic(4,0-(c[f>>2]|0)|0);ic(0,0-(c[f>>2]|0)|0);ic(9,-1);rb[c[38640+40>>2]&31](c[d>>2]|0);i=b;return}else{rb[c[38640+40>>2]&31](c[d>>2]|0);i=b;return}}function og(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;i=i+16|0;f=e+12|0;g=e+8|0;h=e+4|0;j=e;c[g>>2]=b;c[h>>2]=d;if(!(c[g>>2]|0)){c[f>>2]=0;b=c[f>>2]|0;i=e;return b|0}b=(Mb(c[g>>2]|0)|0)+1|0;c[g>>2]=(c[g>>2]|0)+b;while(1){if(!(a[c[g>>2]>>0]|0)){g=8;break}c[j>>2]=UE(c[g>>2]|0,c[h>>2]|0)|0;d=(Mb(c[g>>2]|0)|0)+1|0;c[g>>2]=(c[g>>2]|0)+d;d=c[g>>2]|0;if(!(c[j>>2]|0)){g=6;break}b=(Mb(d)|0)+1|0;c[g>>2]=(c[g>>2]|0)+b}if((g|0)==6){c[f>>2]=d;b=c[f>>2]|0;i=e;return b|0}else if((g|0)==8){c[f>>2]=0;b=c[f>>2]|0;i=e;return b|0}return 0}function pg(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;i=i+16|0;j=e+12|0;h=e+8|0;f=e+4|0;g=e;c[j>>2]=a;c[h>>2]=b;c[f>>2]=d;c[g>>2]=og(c[j>>2]|0,c[h>>2]|0)|0;c[f>>2]=(c[f>>2]|0)!=0&1;if(c[g>>2]|0){j=(qg(c[g>>2]|0,c[f>>2]&255)|0)&255;i=e;return j|0}else{j=c[f>>2]|0;i=e;return j|0}return 0}function qg(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=i;i=i+16|0;g=e;f=e+4|0;c[g>>2]=b;a[f>>0]=d;b=((yg(c[g>>2]|0,1,a[f>>0]|0)|0)&255|0)!=0&255;i=e;return b|0}function rg(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;g=i;i=i+32|0;f=g+24|0;k=g+20|0;j=g+16|0;m=g;l=g+12|0;h=g+8|0;c[k>>2]=b;c[j>>2]=e;do if((a[c[k>>2]>>0]|0)==48){if((a[(c[k>>2]|0)+1>>0]|0)!=120?(a[(c[k>>2]|0)+1>>0]|0)!=88:0)break;if(d[1224+(d[(c[k>>2]|0)+2>>0]|0)>>0]&8){b=m;c[b>>2]=0;c[b+4>>2]=0;c[l>>2]=2;while(1){e=c[l>>2]|0;if((a[(c[k>>2]|0)+(c[l>>2]|0)>>0]|0)!=48)break;c[l>>2]=e+1}c[h>>2]=e;while(1){if(!(d[1224+(d[(c[k>>2]|0)+(c[h>>2]|0)>>0]|0)>>0]&8))break;b=m;b=lF(c[b>>2]|0,c[b+4>>2]|0,16,0)|0;e=D;e=bF(b|0,e|0,(vg(a[(c[k>>2]|0)+(c[h>>2]|0)>>0]|0)|0)&255|0,0)|0;b=m;c[b>>2]=e;c[b+4>>2]=D;c[h>>2]=(c[h>>2]|0)+1}b=c[j>>2]|0;c[b+0>>2]=c[m+0>>2];c[b+4>>2]=c[m+4>>2];if(!(a[(c[k>>2]|0)+(c[h>>2]|0)>>0]|0))h=((c[h>>2]|0)-(c[l>>2]|0)|0)<=16;else h=0;c[f>>2]=h?0:1;b=c[f>>2]|0;i=g;return b|0}}while(0);e=c[k>>2]|0;b=c[j>>2]|0;c[f>>2]=wg(e,b,Mb(c[k>>2]|0)|0,1)|0;b=c[f>>2]|0;i=g;return b|0}function sg(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;a=ug(c[c[(c[d>>2]|0)+4>>2]>>2]|0,1)|0;i=b;return a|0}function tg(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;i=d;return((e[(c[(c[b>>2]|0)+4>>2]|0)+22>>1]|0)&1|0)!=0|0}function ug(a,b){a=a|0;b=b|0;var e=0,f=0,g=0;e=i;i=i+16|0;f=e+4|0;g=e;c[f>>2]=a;c[g>>2]=b;if((c[g>>2]|0)!=0?(d[(c[f>>2]|0)+15>>0]|0|0)!=0:0){g=1216;i=e;return g|0}g=c[(c[f>>2]|0)+168>>2]|0;i=e;return g|0}function vg(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;c[b>>2]=(c[b>>2]|0)+((1&c[b>>2]>>6)*9|0);i=d;return c[b>>2]&15|0}function wg(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;q=i;i=i+64|0;p=q+48|0;k=q+44|0;n=q+40|0;v=q+36|0;w=q+52|0;s=q+32|0;u=q;r=q+28|0;l=q+24|0;t=q+20|0;o=q+16|0;h=q+12|0;m=q+8|0;c[k>>2]=b;c[n>>2]=e;c[v>>2]=f;a[w>>0]=g;b=u;c[b>>2]=0;c[b+4>>2]=0;c[r>>2]=0;c[t>>2]=0;c[o>>2]=0;c[m>>2]=(c[k>>2]|0)+(c[v>>2]|0);if((d[w>>0]|0)==1)c[s>>2]=1;else{c[s>>2]=2;c[l>>2]=3-(d[w>>0]|0);while(1){if((c[l>>2]|0)>=(c[v>>2]|0))break;if(a[(c[k>>2]|0)+(c[l>>2]|0)>>0]|0)break;c[l>>2]=(c[l>>2]|0)+2}c[o>>2]=(c[l>>2]|0)<(c[v>>2]|0)&1;c[m>>2]=(c[k>>2]|0)+(c[l>>2]|0)+(d[w>>0]|0)+ -3;c[k>>2]=(c[k>>2]|0)+(d[w>>0]&1)}while(1){if((c[k>>2]|0)>>>0>=(c[m>>2]|0)>>>0)break;if(!(d[1224+(d[c[k>>2]>>0]|0)>>0]&1))break;c[k>>2]=(c[k>>2]|0)+(c[s>>2]|0)}do if((c[k>>2]|0)>>>0<(c[m>>2]|0)>>>0){if((a[c[k>>2]>>0]|0)==45){c[r>>2]=1;c[k>>2]=(c[k>>2]|0)+(c[s>>2]|0);break}if((a[c[k>>2]>>0]|0)==43)c[k>>2]=(c[k>>2]|0)+(c[s>>2]|0)}while(0);c[h>>2]=c[k>>2];while(1){if((c[k>>2]|0)>>>0>=(c[m>>2]|0)>>>0)break;if((a[c[k>>2]>>0]|0)!=48)break;c[k>>2]=(c[k>>2]|0)+(c[s>>2]|0)}c[l>>2]=0;while(1){if(((c[k>>2]|0)+(c[l>>2]|0)|0)>>>0>=(c[m>>2]|0)>>>0)break;b=a[(c[k>>2]|0)+(c[l>>2]|0)>>0]|0;c[t>>2]=b;if(!((b|0)>=48&(c[t>>2]|0)<=57))break;b=u;b=lF(c[b>>2]|0,c[b+4>>2]|0,10,0)|0;e=c[t>>2]|0;e=bF(b|0,D|0,e|0,((e|0)<0)<<31>>31|0)|0;e=ZE(e|0,D|0,48,0)|0;b=u;c[b>>2]=e;c[b+4>>2]=D;c[l>>2]=(c[l>>2]|0)+(c[s>>2]|0)}b=u;e=c[b+4>>2]|0;v=(c[r>>2]|0)!=0;do if(!(e>>>0>2147483647|(e|0)==2147483647&(c[b>>2]|0)>>>0>4294967295)){w=c[u>>2]|0;u=c[u+4>>2]|0;if(v){e=ZE(0,0,w|0,u|0)|0;b=c[n>>2]|0;c[b>>2]=e;c[b+4>>2]=D;break}else{b=c[n>>2]|0;c[b>>2]=w;c[b+4>>2]=u;break}}else{b=c[n>>2]|0;c[b>>2]=v?0:-1;c[b+4>>2]=v?-2147483648:2147483647}while(0);if(!((c[t>>2]|0)!=0?((c[k>>2]|0)+(c[l>>2]|0)|0)>>>0<(c[m>>2]|0)>>>0:0))j=31;do if((j|0)==31){if((c[l>>2]|0)==0?(c[h>>2]|0)==(c[k>>2]|0):0)break;if(!((c[o>>2]|0)!=0?1:(c[l>>2]|0)>((c[s>>2]|0)*19|0))){if((c[l>>2]|0)<((c[s>>2]|0)*19|0)){c[p>>2]=0;b=c[p>>2]|0;i=q;return b|0}c[t>>2]=xg(c[k>>2]|0,c[s>>2]|0)|0;if((c[t>>2]|0)<0){c[p>>2]=0;b=c[p>>2]|0;i=q;return b|0}if((c[t>>2]|0)>0){c[p>>2]=1;b=c[p>>2]|0;i=q;return b|0}else{c[p>>2]=(c[r>>2]|0)!=0?0:2;b=c[p>>2]|0;i=q;return b|0}}}while(0);c[p>>2]=1;b=c[p>>2]|0;i=q;return b|0}function xg(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;f=i;i=i+32|0;g=f+16|0;h=f+12|0;e=f+8|0;j=f+4|0;k=f;c[g>>2]=b;c[h>>2]=d;c[e>>2]=0;c[k>>2]=1744;c[j>>2]=0;while(1){if(!((c[e>>2]|0)==0&(c[j>>2]|0)<18))break;b=$(c[j>>2]|0,c[h>>2]|0)|0;c[e>>2]=((a[(c[g>>2]|0)+b>>0]|0)-(a[(c[k>>2]|0)+(c[j>>2]|0)>>0]|0)|0)*10;c[j>>2]=(c[j>>2]|0)+1}if(c[e>>2]|0){b=c[e>>2]|0;i=f;return b|0}c[e>>2]=(a[(c[g>>2]|0)+((c[h>>2]|0)*18|0)>>0]|0)-56;b=c[e>>2]|0;i=f;return b|0}function yg(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;k=i;i=i+32|0;g=k+17|0;m=k+12|0;n=k+8|0;h=k+16|0;j=k+4|0;l=k;c[m>>2]=b;c[n>>2]=e;a[h>>0]=f;f=c[m>>2]|0;if((d[1224+(d[c[m>>2]>>0]|0)>>0]|0)&4){a[g>>0]=zg(f)|0;b=a[g>>0]|0;i=k;return b|0}c[l>>2]=Mb(f)|0;c[j>>2]=0;while(1){if((c[j>>2]|0)>=(7-(c[n>>2]|0)|0)){l=9;break}if((d[1800+(c[j>>2]|0)>>0]|0|0)==(c[l>>2]|0)?(Lb(1768+(d[1792+(c[j>>2]|0)>>0]|0)|0,c[m>>2]|0,c[l>>2]|0)|0)==0:0){l=7;break}c[j>>2]=(c[j>>2]|0)+1}if((l|0)==7){a[g>>0]=a[1808+(c[j>>2]|0)>>0]|0;b=a[g>>0]|0;i=k;return b|0}else if((l|0)==9){a[g>>0]=a[h>>0]|0;b=a[g>>0]|0;i=k;return b|0}return 0}function zg(a){a=a|0;var b=0,d=0,e=0;d=i;i=i+16|0;e=d+4|0;b=d;c[e>>2]=a;c[b>>2]=0;if(c[e>>2]|0)Ag(c[e>>2]|0,b)|0;i=d;return c[b>>2]|0}function Ag(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;g=i;i=i+48|0;j=g+32|0;k=g+28|0;h=g+24|0;m=g;f=g+20|0;o=g+16|0;n=g+12|0;l=g+8|0;c[k>>2]=b;c[h>>2]=e;b=m;c[b>>2]=0;c[b+4>>2]=0;c[n>>2]=0;do if((a[c[k>>2]>>0]|0)!=45){e=c[k>>2]|0;if((a[c[k>>2]>>0]|0)==43){c[k>>2]=e+1;break}if((a[e>>0]|0)==48){if((a[(c[k>>2]|0)+1>>0]|0)!=120?(a[(c[k>>2]|0)+1>>0]|0)!=88:0)break;if(d[1224+(d[(c[k>>2]|0)+2>>0]|0)>>0]&8){c[l>>2]=0;c[k>>2]=(c[k>>2]|0)+2;while(1){if((a[c[k>>2]>>0]|0)!=48)break;c[k>>2]=(c[k>>2]|0)+1}c[f>>2]=0;while(1){m=c[l>>2]|0;if(!((c[f>>2]|0)<8?(d[1224+(d[(c[k>>2]|0)+(c[f>>2]|0)>>0]|0)>>0]&8|0)!=0:0))break;c[l>>2]=(m<<4)+((vg(a[(c[k>>2]|0)+(c[f>>2]|0)>>0]|0)|0)&255);c[f>>2]=(c[f>>2]|0)+1}if((m&-2147483648|0)==0?(d[1224+(d[(c[k>>2]|0)+(c[f>>2]|0)>>0]|0)>>0]&8|0)==0:0){b=c[h>>2]|0;c[b+0>>2]=c[l+0>>2];c[j>>2]=1;b=c[j>>2]|0;i=g;return b|0}c[j>>2]=0;b=c[j>>2]|0;i=g;return b|0}}}else{c[n>>2]=1;c[k>>2]=(c[k>>2]|0)+1}while(0);c[f>>2]=0;while(1){if((c[f>>2]|0)>=11)break;b=(a[(c[k>>2]|0)+(c[f>>2]|0)>>0]|0)-48|0;c[o>>2]=b;if(!((b|0)>=0&(c[o>>2]|0)<=9))break;b=m;b=lF(c[b>>2]|0,c[b+4>>2]|0,10,0)|0;e=c[o>>2]|0;e=bF(b|0,D|0,e|0,((e|0)<0)<<31>>31|0)|0;b=m;c[b>>2]=e;c[b+4>>2]=D;c[f>>2]=(c[f>>2]|0)+1}if((c[f>>2]|0)>10){c[j>>2]=0;b=c[j>>2]|0;i=g;return b|0}e=m;b=c[n>>2]|0;b=ZE(c[e>>2]|0,c[e+4>>2]|0,b|0,((b|0)<0)<<31>>31|0)|0;e=D;if((e|0)>0|(e|0)==0&b>>>0>2147483647){c[j>>2]=0;b=c[j>>2]|0;i=g;return b|0}if(c[n>>2]|0){e=m;e=ZE(0,0,c[e>>2]|0,c[e+4>>2]|0)|0;b=m;c[b>>2]=e;c[b+4>>2]=D}c[c[h>>2]>>2]=c[m>>2];c[j>>2]=1;b=c[j>>2]|0;i=g;return b|0}function Bg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;c[48+(c[e>>2]<<2)>>2]=c[f>>2];if((c[48+(c[e>>2]<<2)>>2]|0)<=(c[88+(c[e>>2]<<2)>>2]|0)){i=d;return}c[88+(c[e>>2]<<2)>>2]=c[48+(c[e>>2]<<2)>>2];i=d;return}function Cg(a,b){a=a|0;b=b|0;var f=0,g=0,h=0,j=0,k=0,l=0;f=i;i=i+32|0;g=f+16|0;j=f+12|0;k=f+8|0;l=f+4|0;h=f;c[j>>2]=a;c[k>>2]=b;if((c[k>>2]|0)<2){c[g>>2]=27;a=c[g>>2]|0;i=f;return a|0}c[l>>2]=((d[440+(d[c[j>>2]>>0]|0)>>0]|0)<<2^(d[440+(d[(c[j>>2]|0)+((c[k>>2]|0)-1)>>0]|0)>>0]|0)*3^c[k>>2]|0)%127|0;c[h>>2]=(d[2376+(c[l>>2]|0)>>0]|0)-1;while(1){if((c[h>>2]|0)<0){b=9;break}if((d[2632+(c[h>>2]|0)>>0]|0|0)==(c[k>>2]|0)?(Lb(1816+(e[2760+(c[h>>2]<<1)>>1]|0)|0,c[j>>2]|0,c[k>>2]|0)|0)==0:0){b=7;break}c[h>>2]=(d[2504+(c[h>>2]|0)>>0]|0)-1}if((b|0)==7){c[g>>2]=d[3008+(c[h>>2]|0)>>0];a=c[g>>2]|0;i=f;return a|0}else if((b|0)==9){c[g>>2]=27;a=c[g>>2]|0;i=f;return a|0}return 0}function Dg(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;if(!(c[(c[d>>2]|0)+80>>2]|0)){i=b;return}a=(c[d>>2]|0)+80|0;c[a>>2]=(c[a>>2]|0)+ -4;Kg(c[(c[d>>2]|0)+80>>2]|0);c[(c[d>>2]|0)+80>>2]=0;i=b;return}function Eg(a,e,f){a=a|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;j=i;i=i+32|0;k=j+28|0;l=j+24|0;p=j+20|0;n=j+16|0;o=j+12|0;m=j+8|0;g=j;c[k>>2]=a;c[l>>2]=e;c[p>>2]=f;c[n>>2]=0;c[o>>2]=c[c[l>>2]>>2];if(!((d[(c[k>>2]|0)+15>>0]|0)!=0?(c[(c[k>>2]|0)+24>>2]|0)!=0:0))h=3;do if(((h|0)==3?(a=(Fg(c[(c[k>>2]|0)+204>>2]|0)|0)==0,a&(c[o>>2]|0)!=0):0)?(c[o>>2]|0)!=(c[(c[k>>2]|0)+152>>2]|0):0){c[m>>2]=0;a=g;c[a>>2]=0;c[a+4>>2]=0;if((d[(c[k>>2]|0)+16>>0]|0)>0?(c[c[(c[k>>2]|0)+60>>2]>>2]|0)!=0:0)c[n>>2]=Gg(c[(c[k>>2]|0)+60>>2]|0,g)|0;if((c[n>>2]|0)==0?(c[m>>2]=Hg(c[o>>2]|0)|0,(c[m>>2]|0)==0):0)c[n>>2]=7;if(!(c[n>>2]|0)){Ig(c[k>>2]|0);c[n>>2]=Jg(c[(c[k>>2]|0)+204>>2]|0,c[o>>2]|0)|0}if(!(c[n>>2]|0)){Kg(c[(c[k>>2]|0)+200>>2]|0);c[(c[k>>2]|0)+200>>2]=c[m>>2];a=g;a=bF(c[a>>2]|0,c[a+4>>2]|0,c[o>>2]|0,0)|0;a=ZE(a|0,D|0,1,0)|0;a=jF(a|0,D|0,c[o>>2]|0,0)|0;c[(c[k>>2]|0)+24>>2]=a;c[(c[k>>2]|0)+152>>2]=c[o>>2];break}else{Kg(c[m>>2]|0);break}}while(0);c[c[l>>2]>>2]=c[(c[k>>2]|0)+152>>2];if(c[n>>2]|0){a=c[n>>2]|0;i=j;return a|0}if((c[p>>2]|0)<0)c[p>>2]=b[(c[k>>2]|0)+142>>1];b[(c[k>>2]|0)+142>>1]=c[p>>2];Lg(c[k>>2]|0);a=c[n>>2]|0;i=j;return a|0}function Fg(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;i=d;return c[(c[b>>2]|0)+12>>2]|0}function Gg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;a=zb[c[(c[c[f>>2]>>2]|0)+24>>2]&63](c[f>>2]|0,c[e>>2]|0)|0;i=d;return a|0}function Hg(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;a=Ug(c[d>>2]|0)|0;i=b;return a|0}function Ig(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;Og(c[(c[d>>2]|0)+88>>2]|0);Pg(c[(c[d>>2]|0)+204>>2]|0);i=b;return}function Jg(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0;e=i;i=i+16|0;f=e+12|0;h=e+8|0;j=e+4|0;g=e;c[h>>2]=a;c[j>>2]=b;if(c[(c[h>>2]|0)+20>>2]|0){c[g>>2]=pb[c[38640+120>>2]&31](c[j>>2]|0,(c[(c[h>>2]|0)+24>>2]|0)+40|0,d[(c[h>>2]|0)+28>>0]|0)|0;if(!(c[g>>2]|0)){c[f>>2]=7;a=c[f>>2]|0;i=e;return a|0}k=c[9691]|0;b=c[g>>2]|0;a=Ng(c[h>>2]|0)|0;sb[k&7](b,a);if(c[(c[h>>2]|0)+40>>2]|0)rb[c[38640+148>>2]&31](c[(c[h>>2]|0)+40>>2]|0);c[(c[h>>2]|0)+40>>2]=c[g>>2];c[(c[h>>2]|0)+44>>2]=0;c[(c[h>>2]|0)+20>>2]=c[j>>2]}c[f>>2]=0;k=c[f>>2]|0;i=e;return k|0}function Kg(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;Mg(c[d>>2]|0)|0;i=b;return}function Lg(a){a=a|0;var b=0;b=i;i=i+16|0;c[b>>2]=a;i=b;return}function Mg(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=i;i=i+16|0;d=b+12|0;f=b+8|0;e=b+4|0;g=b;c[f>>2]=a;c[e>>2]=0;if(!(c[f>>2]|0)){c[d>>2]=0;g=c[d>>2]|0;i=b;return g|0}if((c[f>>2]|0)>>>0>=(c[795]|0)>>>0?(c[f>>2]|0)>>>0<(c[796]|0)>>>0:0){ic(1,-1);c[g>>2]=c[f>>2];c[c[g>>2]>>2]=c[798];c[798]=c[g>>2];c[799]=(c[799]|0)+1;c[800]=(c[799]|0)<(c[794]|0)&1}else{c[e>>2]=Tb(c[f>>2]|0)|0;ic(2,0-(c[e>>2]|0)|0);hc(c[f>>2]|0)}c[d>>2]=c[e>>2];g=c[d>>2]|0;i=b;return g|0}function Ng(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;i=i+16|0;d=b+4|0;e=b;c[e>>2]=a;a=c[(c[e>>2]|0)+16>>2]|0;if((c[(c[e>>2]|0)+16>>2]|0)>=0){c[d>>2]=a;a=c[d>>2]|0;i=b;return a|0}else{f=lF(-1024,-1,a|0,((a|0)<0)<<31>>31|0)|0;a=(c[(c[e>>2]|0)+20>>2]|0)+(c[(c[e>>2]|0)+24>>2]|0)|0;a=jF(f|0,D|0,a|0,((a|0)<0)<<31>>31|0)|0;c[d>>2]=a;a=c[d>>2]|0;i=b;return a|0}return 0}function Og(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+16|0;e=b+4|0;d=b;c[e>>2]=a;c[d>>2]=c[e>>2];while(1){if(!(c[d>>2]|0))break;c[(c[d>>2]|0)+16>>2]=1;c[d>>2]=c[(c[d>>2]|0)+44>>2]}i=b;return}function Pg(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;Qg(c[d>>2]|0,0);i=b;return}function Qg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=i;i=i+16|0;e=d+12|0;f=d+8|0;g=d+4|0;h=d;c[e>>2]=a;c[f>>2]=b;if(!(c[(c[e>>2]|0)+40>>2]|0)){i=d;return}c[g>>2]=c[c[e>>2]>>2];while(1){if(!(c[g>>2]|0))break;c[h>>2]=c[(c[g>>2]|0)+32>>2];if((c[(c[g>>2]|0)+20>>2]|0)>>>0>(c[f>>2]|0)>>>0)Rg(c[g>>2]|0);c[g>>2]=c[h>>2]}if((c[f>>2]|0)==0?(c[(c[e>>2]|0)+44>>2]|0)!=0:0){_E(c[(c[(c[e>>2]|0)+44>>2]|0)+4>>2]|0,0,c[(c[e>>2]|0)+20>>2]|0)|0;c[f>>2]=1}sb[c[38640+144>>2]&7](c[(c[e>>2]|0)+40>>2]|0,(c[f>>2]|0)+1|0);i=d;return}function Rg(a){a=a|0;var d=0,f=0;d=i;i=i+16|0;f=d;c[f>>2]=a;if(!(e[(c[f>>2]|0)+24>>1]&2)){i=d;return}Sg(c[f>>2]|0,1);a=(c[f>>2]|0)+24|0;b[a>>1]=e[a>>1]&-7;if(b[(c[f>>2]|0)+26>>1]|0){i=d;return}Tg(c[f>>2]|0);i=d;return}function Sg(b,f){b=b|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;j=i;i=i+16|0;g=j+8|0;k=j+12|0;h=j+4|0;l=j;c[g>>2]=b;a[k>>0]=f;c[h>>2]=c[(c[g>>2]|0)+28>>2];if(d[k>>0]&1){if((c[(c[h>>2]|0)+8>>2]|0)==(c[g>>2]|0)){c[l>>2]=c[(c[g>>2]|0)+36>>2];while(1){if(c[l>>2]|0)b=(e[(c[l>>2]|0)+24>>1]&4|0)!=0;else b=0;f=c[l>>2]|0;if(!b)break;c[l>>2]=c[f+36>>2]}c[(c[h>>2]|0)+8>>2]=f}l=c[(c[g>>2]|0)+36>>2]|0;if(c[(c[g>>2]|0)+32>>2]|0)c[(c[(c[g>>2]|0)+32>>2]|0)+36>>2]=l;else c[(c[h>>2]|0)+4>>2]=l;l=c[(c[g>>2]|0)+32>>2]|0;if(!(c[(c[g>>2]|0)+36>>2]|0)){c[c[h>>2]>>2]=l;if((c[c[h>>2]>>2]|0)==0?(d[(c[h>>2]|0)+28>>0]|0)!=0:0)a[(c[h>>2]|0)+29>>0]=2}else c[(c[(c[g>>2]|0)+36>>2]|0)+32>>2]=l;c[(c[g>>2]|0)+32>>2]=0;c[(c[g>>2]|0)+36>>2]=0}if(!(d[k>>0]&2)){i=j;return}c[(c[g>>2]|0)+32>>2]=c[c[h>>2]>>2];k=c[g>>2]|0;if(!(c[(c[g>>2]|0)+32>>2]|0)){c[(c[h>>2]|0)+4>>2]=k;if(a[(c[h>>2]|0)+28>>0]|0)a[(c[h>>2]|0)+29>>0]=1}else c[(c[(c[g>>2]|0)+32>>2]|0)+36>>2]=k;c[c[h>>2]>>2]=c[g>>2];if(c[(c[h>>2]|0)+8>>2]|0){i=j;return}if(e[(c[g>>2]|0)+24>>1]&4){i=j;return}c[(c[h>>2]|0)+8>>2]=c[g>>2];i=j;return}function Tg(b){b=b|0;var d=0,e=0;d=i;i=i+16|0;e=d;c[e>>2]=b;if(!(a[(c[(c[e>>2]|0)+28>>2]|0)+28>>0]|0)){i=d;return}if((c[(c[e>>2]|0)+20>>2]|0)==1)c[(c[(c[e>>2]|0)+28>>2]|0)+44>>2]=0;vb[c[38640+136>>2]&63](c[(c[(c[e>>2]|0)+28>>2]|0)+40>>2]|0,c[c[e>>2]>>2]|0,0);i=d;return}function Ug(a){a=a|0;var b=0,d=0,e=0,f=0;d=i;i=i+16|0;f=d+8|0;b=d+4|0;e=d;c[f>>2]=a;c[b>>2]=0;Bg(7,c[f>>2]|0);if((c[f>>2]|0)<=(c[792]|0)?(c[b>>2]=c[798],(c[b>>2]|0)!=0):0){c[798]=c[c[798]>>2];c[799]=(c[799]|0)+ -1;c[800]=(c[799]|0)<(c[794]|0)&1;ic(1,1)}if(c[b>>2]|0){f=c[b>>2]|0;i=d;return f|0}f=c[f>>2]|0;c[b>>2]=gc(f,((f|0)<0)<<31>>31)|0;if(!(c[b>>2]|0)){f=c[b>>2]|0;i=d;return f|0}c[e>>2]=Tb(c[b>>2]|0)|0;ic(2,c[e>>2]|0);f=c[b>>2]|0;i=d;return f|0}function Vg(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+16|0;e=b+4|0;d=b;c[e>>2]=a;c[d>>2]=Mc(512,0)|0;if(!(c[d>>2]|0)){e=c[d>>2]|0;i=b;return e|0}c[c[d>>2]>>2]=c[e>>2];e=c[d>>2]|0;i=b;return e|0}function Wg(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;m=i;i=i+32|0;h=m+28|0;j=m+24|0;k=m+20|0;o=m+16|0;p=m+12|0;n=m+8|0;f=m+4|0;l=m;c[j>>2]=b;c[k>>2]=e;if(!(c[j>>2]|0)){c[h>>2]=0;b=c[h>>2]|0;i=m;return b|0}c[k>>2]=(c[k>>2]|0)+ -1;while(1){if((c[c[j>>2]>>2]|0)>>>0<=4e3)break;if(!(c[(c[j>>2]|0)+8>>2]|0))break;c[p>>2]=((c[k>>2]|0)>>>0)/((c[(c[j>>2]|0)+8>>2]|0)>>>0)|0;c[k>>2]=((c[k>>2]|0)>>>0)%((c[(c[j>>2]|0)+8>>2]|0)>>>0)|0;if((c[(c[j>>2]|0)+12+(c[p>>2]<<2)>>2]|0)==0?(b=Vg(c[(c[j>>2]|0)+8>>2]|0)|0,c[(c[j>>2]|0)+12+(c[p>>2]<<2)>>2]=b,(c[(c[j>>2]|0)+12+(c[p>>2]<<2)>>2]|0)==0):0){g=8;break}c[j>>2]=c[(c[j>>2]|0)+12+(c[p>>2]<<2)>>2]}if((g|0)==8){c[h>>2]=7;b=c[h>>2]|0;i=m;return b|0}p=c[k>>2]|0;if((c[c[j>>2]>>2]|0)>>>0<=4e3){b=(c[j>>2]|0)+12+(((c[k>>2]|0)>>>0)/8|0)|0;a[b>>0]=d[b>>0]|0|1<<(p&7);c[h>>2]=0;b=c[h>>2]|0;i=m;return b|0}c[k>>2]=p+1;c[o>>2]=(p>>>0)%125|0;a:do if(!(c[(c[j>>2]|0)+12+(c[o>>2]<<2)>>2]|0)){if((c[(c[j>>2]|0)+4>>2]|0)>>>0>=124)g=17}else{while(1){if((c[(c[j>>2]|0)+12+(c[o>>2]<<2)>>2]|0)==(c[k>>2]|0))break;b=(c[o>>2]|0)+1|0;c[o>>2]=b;c[o>>2]=(c[o>>2]|0)>>>0>=125?0:b;if(!(c[(c[j>>2]|0)+12+(c[o>>2]<<2)>>2]|0)){g=17;break a}}c[h>>2]=0;b=c[h>>2]|0;i=m;return b|0}while(0);if((g|0)==17?(c[(c[j>>2]|0)+4>>2]|0)>>>0>=62:0){c[l>>2]=Qe(0,500,0)|0;if(!(c[l>>2]|0)){c[h>>2]=7;b=c[h>>2]|0;i=m;return b|0}dF(c[l>>2]|0,(c[j>>2]|0)+12|0,500)|0;_E((c[j>>2]|0)+12|0,0,500)|0;c[(c[j>>2]|0)+8>>2]=(((c[c[j>>2]>>2]|0)+125-1|0)>>>0)/125|0;c[f>>2]=Wg(c[j>>2]|0,c[k>>2]|0)|0;c[n>>2]=0;while(1){if((c[n>>2]|0)>>>0>=125)break;if(c[(c[l>>2]|0)+(c[n>>2]<<2)>>2]|0){b=Wg(c[j>>2]|0,c[(c[l>>2]|0)+(c[n>>2]<<2)>>2]|0)|0;c[f>>2]=c[f>>2]|b}c[n>>2]=(c[n>>2]|0)+1}Xb(0,c[l>>2]|0);c[h>>2]=c[f>>2];b=c[h>>2]|0;i=m;return b|0}b=(c[j>>2]|0)+4|0;c[b>>2]=(c[b>>2]|0)+1;c[(c[j>>2]|0)+12+(c[o>>2]<<2)>>2]=c[k>>2];c[h>>2]=0;b=c[h>>2]|0;i=m;return b|0}function Xg(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;n=i;i=i+32|0;j=n+24|0;k=n+20|0;o=n+16|0;p=n+12|0;m=n+8|0;l=n+4|0;g=n;c[j>>2]=b;c[k>>2]=e;c[o>>2]=f;if(!(c[j>>2]|0)){i=n;return}c[k>>2]=(c[k>>2]|0)+ -1;while(1){if(!(c[(c[j>>2]|0)+8>>2]|0))break;c[p>>2]=((c[k>>2]|0)>>>0)/((c[(c[j>>2]|0)+8>>2]|0)>>>0)|0;c[k>>2]=((c[k>>2]|0)>>>0)%((c[(c[j>>2]|0)+8>>2]|0)>>>0)|0;c[j>>2]=c[(c[j>>2]|0)+12+(c[p>>2]<<2)>>2];if(!(c[j>>2]|0)){h=16;break}}if((h|0)==16){i=n;return}if((c[c[j>>2]>>2]|0)>>>0<=4e3){b=(c[j>>2]|0)+12+(((c[k>>2]|0)>>>0)/8|0)|0;a[b>>0]=(d[b>>0]|0)&~(1<<(c[k>>2]&7));i=n;return}c[l>>2]=c[o>>2];dF(c[l>>2]|0,(c[j>>2]|0)+12|0,500)|0;_E((c[j>>2]|0)+12|0,0,500)|0;c[(c[j>>2]|0)+4>>2]=0;c[m>>2]=0;while(1){if((c[m>>2]|0)>>>0>=125)break;if((c[(c[l>>2]|0)+(c[m>>2]<<2)>>2]|0)!=0?(c[(c[l>>2]|0)+(c[m>>2]<<2)>>2]|0)!=((c[k>>2]|0)+1|0):0){c[g>>2]=(((c[(c[l>>2]|0)+(c[m>>2]<<2)>>2]|0)-1|0)>>>0)%125|0;b=(c[j>>2]|0)+4|0;c[b>>2]=(c[b>>2]|0)+1;while(1){if(!(c[(c[j>>2]|0)+12+(c[g>>2]<<2)>>2]|0))break;b=(c[g>>2]|0)+1|0;c[g>>2]=b;c[g>>2]=(c[g>>2]|0)>>>0>=125?0:b}c[(c[j>>2]|0)+12+(c[g>>2]<<2)>>2]=c[(c[l>>2]|0)+(c[m>>2]<<2)>>2]}c[m>>2]=(c[m>>2]|0)+1}i=n;return}function Yg(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;e=i;i=i+32|0;f=e+16|0;g=e+12|0;h=e+8|0;l=e+4|0;j=e;c[g>>2]=a;c[h>>2]=b;if(!(c[g>>2]|0)){c[f>>2]=0;a=c[f>>2]|0;i=e;return a|0}if((c[h>>2]|0)==0?1:(c[h>>2]|0)>>>0>(c[c[g>>2]>>2]|0)>>>0){c[f>>2]=0;a=c[f>>2]|0;i=e;return a|0}c[h>>2]=(c[h>>2]|0)+ -1;while(1){if(!(c[(c[g>>2]|0)+8>>2]|0))break;c[l>>2]=((c[h>>2]|0)>>>0)/((c[(c[g>>2]|0)+8>>2]|0)>>>0)|0;c[h>>2]=((c[h>>2]|0)>>>0)%((c[(c[g>>2]|0)+8>>2]|0)>>>0)|0;c[g>>2]=c[(c[g>>2]|0)+12+(c[l>>2]<<2)>>2];if(!(c[g>>2]|0)){k=8;break}}if((k|0)==8){c[f>>2]=0;a=c[f>>2]|0;i=e;return a|0}k=c[h>>2]|0;if((c[c[g>>2]>>2]|0)>>>0<=4e3){c[f>>2]=((d[(c[g>>2]|0)+12+((k>>>0)/8|0)>>0]|0)&1<<(c[h>>2]&7)|0)!=0&1;a=c[f>>2]|0;i=e;return a|0}c[h>>2]=k+1;c[j>>2]=(k>>>0)%125|0;while(1){if(!(c[(c[g>>2]|0)+12+(c[j>>2]<<2)>>2]|0)){k=16;break}if((c[(c[g>>2]|0)+12+(c[j>>2]<<2)>>2]|0)==(c[h>>2]|0)){k=14;break}c[j>>2]=(((c[j>>2]|0)+1|0)>>>0)%125|0}if((k|0)==14){c[f>>2]=1;a=c[f>>2]|0;i=e;return a|0}else if((k|0)==16){c[f>>2]=0;a=c[f>>2]|0;i=e;return a|0}return 0}function Zg(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;i=d;return c[c[b>>2]>>2]|0}function _g(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+16|0;e=b+4|0;d=b;c[e>>2]=a;if(!(c[e>>2]|0)){i=b;return}a:do if(c[(c[e>>2]|0)+8>>2]|0){c[d>>2]=0;while(1){if((c[d>>2]|0)>>>0>=125)break a;_g(c[(c[e>>2]|0)+12+(c[d>>2]<<2)>>2]|0);c[d>>2]=(c[d>>2]|0)+1}}while(0);hc(c[e>>2]|0);i=b;return}function $g(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0;j=i;i=i+32|0;n=j+12|0;k=j+16|0;m=j+8|0;l=j+4|0;h=j;c[n>>2]=b;a[k>>0]=e;c[m>>2]=f;c[l>>2]=g;g=c[n>>2]|0;if(c[m>>2]|0)c[h>>2]=fh(g,c[m>>2]|0,c[l>>2]|0)|0;else c[h>>2]=c[g+8>>2];if(!(c[h>>2]|0)){n=c[h>>2]|0;i=j;return n|0}c[h>>2]=(c[h>>2]|0)+(((d[k>>0]|0)-1|0)*20|0);n=c[h>>2]|0;i=j;return n|0}function ah(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0;b=i;i=i+32|0;g=b+20|0;d=b+16|0;f=b+12|0;e=b+8|0;h=b+4|0;j=b;c[g>>2]=a;c[f>>2]=0;c[d>>2]=c[(c[g>>2]|0)+16>>2];while(1){if((c[f>>2]|0)>=(c[(c[g>>2]|0)+20>>2]|0))break;a:do if(c[(c[d>>2]|0)+4>>2]|0){Pc(c[(c[d>>2]|0)+4>>2]|0);c[e>>2]=c[(c[(c[d>>2]|0)+12>>2]|0)+16>>2];while(1){if(!(c[e>>2]|0))break a;c[h>>2]=c[(c[e>>2]|0)+8>>2];c[j>>2]=c[(c[h>>2]|0)+8>>2];while(1){if(!(c[j>>2]|0))break;if((c[(c[j>>2]|0)+40>>2]|0)!=0?(c[(c[(c[j>>2]|0)+40>>2]|0)+12>>2]|0)==(c[g>>2]|0):0){eh(c[(c[j>>2]|0)+40>>2]|0);c[(c[j>>2]|0)+40>>2]=0}c[j>>2]=c[(c[j>>2]|0)+20>>2]}c[e>>2]=c[c[e>>2]>>2]}}while(0);c[f>>2]=(c[f>>2]|0)+1;c[d>>2]=(c[d>>2]|0)+16}i=b;return}function bh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;i=i+16|0;g=d+12|0;f=d+8|0;e=d+4|0;c[g>>2]=a;c[f>>2]=b;c[e>>2]=ch(c[g>>2]|0,c[f>>2]|0,d)|0;if(!(c[e>>2]|0)){g=0;i=d;return g|0}g=c[(c[e>>2]|0)+8>>2]|0;i=d;return g|0}function ch(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;e=i;i=i+32|0;f=e+28|0;n=e+24|0;h=e+20|0;k=e+16|0;g=e+12|0;j=e+8|0;l=e+4|0;m=e;c[n>>2]=a;c[h>>2]=b;c[k>>2]=d;if(c[(c[n>>2]|0)+12>>2]|0){a=dh(c[h>>2]|0)|0;c[l>>2]=(a>>>0)%((c[c[n>>2]>>2]|0)>>>0)|0;c[m>>2]=(c[(c[n>>2]|0)+12>>2]|0)+(c[l>>2]<<3);c[g>>2]=c[(c[m>>2]|0)+4>>2];c[j>>2]=c[c[m>>2]>>2]}else{c[l>>2]=0;c[g>>2]=c[(c[n>>2]|0)+8>>2];c[j>>2]=c[(c[n>>2]|0)+4>>2]}c[c[k>>2]>>2]=c[l>>2];while(1){a=c[j>>2]|0;c[j>>2]=a+ -1;if(!a){g=9;break}a=(xc(c[(c[g>>2]|0)+12>>2]|0,c[h>>2]|0)|0)==0;k=c[g>>2]|0;if(a){g=7;break}c[g>>2]=c[k>>2]}if((g|0)==7){c[f>>2]=k;a=c[f>>2]|0;i=e;return a|0}else if((g|0)==9){c[f>>2]=0;a=c[f>>2]|0;i=e;return a|0}return 0}function dh(b){b=b|0;var e=0,f=0,g=0,h=0,j=0;e=i;i=i+16|0;f=e+4|0;h=e;g=e+8|0;c[f>>2]=b;c[h>>2]=0;while(1){j=c[f>>2]|0;c[f>>2]=j+1;j=a[j>>0]|0;a[g>>0]=j;b=c[h>>2]|0;if(!(j&255))break;c[h>>2]=b<<3^c[h>>2]^(d[440+(d[g>>0]|0)>>0]|0)}i=e;return b|0}function eh(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;if(!(c[d>>2]|0)){i=b;return}a=c[d>>2]|0;c[a>>2]=(c[a>>2]|0)+ -1;if(c[c[d>>2]>>2]|0){i=b;return}Xb(0,c[d>>2]|0);i=b;return}function fh(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;f=i;i=i+32|0;l=f+20|0;j=f+16|0;m=f+12|0;g=f+8|0;k=f+4|0;h=f;c[l>>2]=b;c[j>>2]=d;c[m>>2]=e;c[g>>2]=bh((c[l>>2]|0)+428|0,c[j>>2]|0)|0;if(!(0==(c[g>>2]|0)&(c[m>>2]|0)!=0)){m=c[g>>2]|0;i=f;return m|0}c[k>>2]=Mb(c[j>>2]|0)|0;c[g>>2]=se(c[l>>2]|0,61+(c[k>>2]|0)|0,0)|0;if(!(c[g>>2]|0)){m=c[g>>2]|0;i=f;return m|0}c[h>>2]=0;c[c[g>>2]>>2]=(c[g>>2]|0)+60;a[(c[g>>2]|0)+4>>0]=1;c[(c[g>>2]|0)+20>>2]=(c[g>>2]|0)+60;a[(c[g>>2]|0)+24>>0]=2;c[(c[g>>2]|0)+40>>2]=(c[g>>2]|0)+60;a[(c[g>>2]|0)+44>>0]=3;dF(c[c[g>>2]>>2]|0,c[j>>2]|0,c[k>>2]|0)|0;a[(c[c[g>>2]>>2]|0)+(c[k>>2]|0)>>0]=0;c[h>>2]=gh((c[l>>2]|0)+428|0,c[c[g>>2]>>2]|0,c[g>>2]|0)|0;if(!(c[h>>2]|0)){m=c[g>>2]|0;i=f;return m|0}a[(c[l>>2]|0)+64>>0]=1;Xb(c[l>>2]|0,c[h>>2]|0);c[g>>2]=0;m=c[g>>2]|0;i=f;return m|0}function gh(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;f=i;i=i+32|0;e=f+28|0;g=f+24|0;n=f+20|0;m=f+16|0;j=f+12|0;k=f+8|0;h=f+4|0;l=f;c[g>>2]=a;c[n>>2]=b;c[m>>2]=d;c[k>>2]=ch(c[g>>2]|0,c[n>>2]|0,j)|0;if(c[k>>2]|0){c[l>>2]=c[(c[k>>2]|0)+8>>2];if(!(c[m>>2]|0))hh(c[g>>2]|0,c[k>>2]|0,c[j>>2]|0);else{c[(c[k>>2]|0)+8>>2]=c[m>>2];c[(c[k>>2]|0)+12>>2]=c[n>>2]}c[e>>2]=c[l>>2];a=c[e>>2]|0;i=f;return a|0}if(!(c[m>>2]|0)){c[e>>2]=0;a=c[e>>2]|0;i=f;return a|0}c[h>>2]=gc(16,0)|0;if(!(c[h>>2]|0)){c[e>>2]=c[m>>2];a=c[e>>2]|0;i=f;return a|0}c[(c[h>>2]|0)+12>>2]=c[n>>2];c[(c[h>>2]|0)+8>>2]=c[m>>2];a=(c[g>>2]|0)+4|0;c[a>>2]=(c[a>>2]|0)+1;if(((c[(c[g>>2]|0)+4>>2]|0)>>>0>=10?(c[(c[g>>2]|0)+4>>2]|0)>>>0>c[c[g>>2]>>2]<<1>>>0:0)?(ih(c[g>>2]|0,c[(c[g>>2]|0)+4>>2]<<1)|0)!=0:0){a=dh(c[n>>2]|0)|0;c[j>>2]=(a>>>0)%((c[c[g>>2]>>2]|0)>>>0)|0}if(c[(c[g>>2]|0)+12>>2]|0)j=(c[(c[g>>2]|0)+12>>2]|0)+(c[j>>2]<<3)|0;else j=0;jh(c[g>>2]|0,j,c[h>>2]|0);c[e>>2]=0;a=c[e>>2]|0;i=f;return a|0}function hh(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;f=j+12|0;e=j+8|0;h=j+4|0;g=j;c[f>>2]=a;c[e>>2]=b;c[h>>2]=d;d=c[c[e>>2]>>2]|0;if(c[(c[e>>2]|0)+4>>2]|0)c[c[(c[e>>2]|0)+4>>2]>>2]=d;else c[(c[f>>2]|0)+8>>2]=d;if(c[c[e>>2]>>2]|0)c[(c[c[e>>2]>>2]|0)+4>>2]=c[(c[e>>2]|0)+4>>2];if(c[(c[f>>2]|0)+12>>2]|0){c[g>>2]=(c[(c[f>>2]|0)+12>>2]|0)+(c[h>>2]<<3);if((c[(c[g>>2]|0)+4>>2]|0)==(c[e>>2]|0))c[(c[g>>2]|0)+4>>2]=c[c[e>>2]>>2];a=c[g>>2]|0;c[a>>2]=(c[a>>2]|0)+ -1}hc(c[e>>2]|0);a=(c[f>>2]|0)+4|0;c[a>>2]=(c[a>>2]|0)+ -1;if(c[(c[f>>2]|0)+4>>2]|0){i=j;return}mh(c[f>>2]|0);i=j;return}function ih(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;d=i;i=i+32|0;e=d+24|0;k=d+20|0;g=d+16|0;l=d+12|0;f=d+8|0;j=d+4|0;h=d;c[k>>2]=a;c[g>>2]=b;c[g>>2]=c[g>>2]<<3>>>0>1024?128:b;if((c[g>>2]|0)==(c[c[k>>2]>>2]|0)){c[e>>2]=0;a=c[e>>2]|0;i=d;return a|0}kh();c[l>>2]=gc(c[g>>2]<<3,0)|0;lh();if(!(c[l>>2]|0)){c[e>>2]=0;a=c[e>>2]|0;i=d;return a|0}hc(c[(c[k>>2]|0)+12>>2]|0);c[(c[k>>2]|0)+12>>2]=c[l>>2];a=((Tb(c[l>>2]|0)|0)>>>0)/8|0;c[g>>2]=a;c[c[k>>2]>>2]=a;_E(c[l>>2]|0,0,c[g>>2]<<3|0)|0;c[f>>2]=c[(c[k>>2]|0)+8>>2];c[(c[k>>2]|0)+8>>2]=0;while(1){if(!(c[f>>2]|0))break;a=dh(c[(c[f>>2]|0)+12>>2]|0)|0;c[h>>2]=(a>>>0)%((c[g>>2]|0)>>>0)|0;c[j>>2]=c[c[f>>2]>>2];jh(c[k>>2]|0,(c[l>>2]|0)+(c[h>>2]<<3)|0,c[f>>2]|0);c[f>>2]=c[j>>2]}c[e>>2]=1;a=c[e>>2]|0;i=d;return a|0}function jh(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;g=i;i=i+16|0;f=g+12|0;j=g+8|0;e=g+4|0;h=g;c[f>>2]=a;c[j>>2]=b;c[e>>2]=d;if(c[j>>2]|0){if(c[c[j>>2]>>2]|0)d=c[(c[j>>2]|0)+4>>2]|0;else d=0;c[h>>2]=d;a=c[j>>2]|0;c[a>>2]=(c[a>>2]|0)+1;c[(c[j>>2]|0)+4>>2]=c[e>>2]}else c[h>>2]=0;if(!(c[h>>2]|0)){c[c[e>>2]>>2]=c[(c[f>>2]|0)+8>>2];if(c[(c[f>>2]|0)+8>>2]|0)c[(c[(c[f>>2]|0)+8>>2]|0)+4>>2]=c[e>>2];c[(c[e>>2]|0)+4>>2]=0;c[(c[f>>2]|0)+8>>2]=c[e>>2];i=g;return}c[c[e>>2]>>2]=c[h>>2];c[(c[e>>2]|0)+4>>2]=c[(c[h>>2]|0)+4>>2];j=c[e>>2]|0;if(c[(c[h>>2]|0)+4>>2]|0)c[c[(c[h>>2]|0)+4>>2]>>2]=j;else c[(c[f>>2]|0)+8>>2]=j;c[(c[h>>2]|0)+4>>2]=c[e>>2];i=g;return}function kh(){var a=0;a=i;if(!(c[802]|0)){i=a;return}wb[c[3208>>2]&0]();i=a;return}function lh(){var a=0;a=i;if(!(c[803]|0)){i=a;return}wb[c[3208+4>>2]&0]();i=a;return}function mh(a){a=a|0;var b=0,d=0,e=0,f=0;d=i;i=i+16|0;b=d+8|0;e=d+4|0;f=d;c[b>>2]=a;c[e>>2]=c[(c[b>>2]|0)+8>>2];c[(c[b>>2]|0)+8>>2]=0;hc(c[(c[b>>2]|0)+12>>2]|0);c[(c[b>>2]|0)+12>>2]=0;c[c[b>>2]>>2]=0;while(1){if(!(c[e>>2]|0))break;c[f>>2]=c[c[e>>2]>>2];hc(c[e>>2]|0);c[e>>2]=c[f>>2]}c[(c[b>>2]|0)+4>>2]=0;i=d;return}function nh(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;c[(c[d>>2]|0)+8>>2]=0;c[(c[d>>2]|0)+4>>2]=0;c[c[d>>2]>>2]=0;c[(c[d>>2]|0)+12>>2]=0;i=b;return}function oh(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;m=i;i=i+32|0;o=m+24|0;n=m+20|0;g=m+16|0;l=m+12|0;j=m+8|0;h=m+4|0;k=m;c[o>>2]=a;c[n>>2]=b;c[g>>2]=d;c[l>>2]=e;c[j>>2]=f;c[k>>2]=(c[n>>2]|0)<(c[l>>2]|0)?c[n>>2]|0:c[l>>2]|0;c[h>>2]=TE(c[g>>2]|0,c[j>>2]|0,c[k>>2]|0)|0;if(c[h>>2]|0){a=c[h>>2]|0;i=m;return a|0}if(((c[o>>2]|0)!=0?(rk((c[g>>2]|0)+(c[k>>2]|0)|0,(c[n>>2]|0)-(c[k>>2]|0)|0)|0)!=0:0)?(rk((c[j>>2]|0)+(c[k>>2]|0)|0,(c[l>>2]|0)-(c[k>>2]|0)|0)|0)!=0:0){a=c[h>>2]|0;i=m;return a|0}c[h>>2]=(c[n>>2]|0)-(c[l>>2]|0);a=c[h>>2]|0;i=m;return a|0}function ph(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;g=i;i=i+32|0;j=g+16|0;m=g+12|0;k=g+8|0;l=g+4|0;h=g;c[g+20>>2]=a;c[j>>2]=b;c[m>>2]=d;c[k>>2]=e;c[l>>2]=f;c[h>>2]=Lb(c[m>>2]|0,c[l>>2]|0,(c[j>>2]|0)<(c[k>>2]|0)?c[j>>2]|0:c[k>>2]|0)|0;if(c[h>>2]|0){m=c[h>>2]|0;i=g;return m|0}c[h>>2]=(c[j>>2]|0)-(c[k>>2]|0);m=c[h>>2]|0;i=g;return m|0}function qh(b,e,f,g,h,j){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0;z=i;i=i+128|0;G=z;C=z+116|0;O=z+112|0;F=z+108|0;K=z+104|0;J=z+100|0;L=z+96|0;H=z+92|0;I=z+88|0;v=z+84|0;n=z+80|0;A=z+76|0;D=z+120|0;N=z+72|0;t=z+68|0;B=z+64|0;E=z+60|0;k=z+56|0;M=z+52|0;l=z+48|0;s=z+44|0;m=z+40|0;u=z+36|0;o=z+32|0;p=z+28|0;q=z+24|0;r=z+20|0;x=z+16|0;w=z+12|0;y=z+8|0;c[O>>2]=b;c[F>>2]=e;c[K>>2]=f;c[J>>2]=g;c[L>>2]=h;c[H>>2]=j;c[I>>2]=0;c[v>>2]=c[c[K>>2]>>2];c[n>>2]=c[O>>2];c[N>>2]=Mb(c[F>>2]|0)|0;if(c[v>>2]&64)if((c[N>>2]|0)>=5)j=4;else j=83;else if((c[9663]|0)!=0&(c[N>>2]|0)>=5)j=4;else j=83;a:do if((j|0)==4)if(!(TE(c[F>>2]|0,4608,5)|0)){c[k>>2]=0;c[M>>2]=(c[N>>2]|0)+2;c[v>>2]=c[v>>2]|64;c[E>>2]=0;while(1){if((c[E>>2]|0)>=(c[N>>2]|0))break;c[M>>2]=(c[M>>2]|0)+((a[(c[F>>2]|0)+(c[E>>2]|0)>>0]|0)==38&1);c[E>>2]=(c[E>>2]|0)+1}c[A>>2]=fc(c[M>>2]|0)|0;if(!(c[A>>2]|0)){c[C>>2]=7;O=c[C>>2]|0;i=z;return O|0}c[E>>2]=5;do if((a[(c[F>>2]|0)+5>>0]|0)==47?(a[(c[F>>2]|0)+6>>0]|0)==47:0){c[E>>2]=7;while(1){if(a[(c[F>>2]|0)+(c[E>>2]|0)>>0]|0)N=(a[(c[F>>2]|0)+(c[E>>2]|0)>>0]|0)!=47;else N=0;M=c[E>>2]|0;if(!N)break;c[E>>2]=M+1}if((M|0)!=7){if((c[E>>2]|0)==16?(TE(4616,(c[F>>2]|0)+7|0,9)|0)==0:0)break;O=(c[F>>2]|0)+7|0;c[G>>2]=(c[E>>2]|0)-7;c[G+4>>2]=O;O=qc(4632,G)|0;c[c[H>>2]>>2]=O;c[I>>2]=1;break a}}while(0);c[B>>2]=0;b:while(1){O=a[(c[F>>2]|0)+(c[E>>2]|0)>>0]|0;a[D>>0]=O;if(!(O<<24>>24))break;if((a[D>>0]|0)==35)break;c[E>>2]=(c[E>>2]|0)+1;do if(((a[D>>0]|0)==37?(d[1224+(d[(c[F>>2]|0)+(c[E>>2]|0)>>0]|0)>>0]&8|0)!=0:0)?(d[1224+(d[(c[F>>2]|0)+((c[E>>2]|0)+1)>>0]|0)>>0]&8|0)!=0:0){O=c[E>>2]|0;c[E>>2]=O+1;c[l>>2]=((vg(a[(c[F>>2]|0)+O>>0]|0)|0)&255)<<4;O=c[E>>2]|0;c[E>>2]=O+1;O=(vg(a[(c[F>>2]|0)+O>>0]|0)|0)&255;c[l>>2]=(c[l>>2]|0)+O;if(c[l>>2]|0){a[D>>0]=c[l>>2];break}while(1){O=a[(c[F>>2]|0)+(c[E>>2]|0)>>0]|0;a[D>>0]=O;if(!(O<<24>>24))continue b;if((a[D>>0]|0)==35)continue b;if((c[B>>2]|0)==0?(a[D>>0]|0)==63:0)continue b;if((c[B>>2]|0)==1){if((a[D>>0]|0)==61)continue b;if((a[D>>0]|0)==38)continue b}if((c[B>>2]|0)==2?(a[D>>0]|0)==38:0)continue b;c[E>>2]=(c[E>>2]|0)+1}}else j=39;while(0);c:do if((j|0)==39){j=0;do if((c[B>>2]|0)==1){if((a[D>>0]|0)!=38?(a[D>>0]|0)!=61:0)break;if(!(a[(c[A>>2]|0)+((c[k>>2]|0)-1)>>0]|0))while(1){if(!(a[(c[F>>2]|0)+(c[E>>2]|0)>>0]|0))continue b;if((a[(c[F>>2]|0)+(c[E>>2]|0)>>0]|0)==35)continue b;if((a[(c[F>>2]|0)+((c[E>>2]|0)-1)>>0]|0)==38)continue b;c[E>>2]=(c[E>>2]|0)+1}else{if((a[D>>0]|0)==38){O=c[k>>2]|0;c[k>>2]=O+1;a[(c[A>>2]|0)+O>>0]=0}else c[B>>2]=2;a[D>>0]=0;break c}}while(0);if(!((c[B>>2]|0)==0?(a[D>>0]|0)==63:0)){if((c[B>>2]|0)!=2)break;if((a[D>>0]|0)!=38)break}a[D>>0]=0;c[B>>2]=1}while(0);b=a[D>>0]|0;O=c[k>>2]|0;c[k>>2]=O+1;a[(c[A>>2]|0)+O>>0]=b}if((c[B>>2]|0)==1){O=c[k>>2]|0;c[k>>2]=O+1;a[(c[A>>2]|0)+O>>0]=0}O=c[k>>2]|0;c[k>>2]=O+1;a[(c[A>>2]|0)+O>>0]=0;O=c[k>>2]|0;c[k>>2]=O+1;a[(c[A>>2]|0)+O>>0]=0;O=(Mb(c[A>>2]|0)|0)+1|0;c[t>>2]=(c[A>>2]|0)+O;while(1){if(!(a[c[t>>2]>>0]|0)){j=86;break a}c[s>>2]=Mb(c[t>>2]|0)|0;c[m>>2]=(c[t>>2]|0)+((c[s>>2]|0)+1);c[u>>2]=Mb(c[m>>2]|0)|0;if((c[s>>2]|0)==3?(TE(4664,c[t>>2]|0,3)|0)==0:0)c[n>>2]=c[m>>2];else{c[o>>2]=0;c[p>>2]=0;c[q>>2]=0;c[r>>2]=0;if((c[s>>2]|0)==5?(TE(4672,c[t>>2]|0,5)|0)==0:0){c[q>>2]=393216;c[o>>2]=4680;c[r>>2]=c[q>>2];c[p>>2]=4672}if((c[s>>2]|0)==4?(TE(4720,c[t>>2]|0,4)|0)==0:0){c[q>>2]=135;c[o>>2]=4728;c[r>>2]=c[q>>2]&c[v>>2];c[p>>2]=4800}if(c[o>>2]|0){c[w>>2]=0;c[x>>2]=0;while(1){if(!(c[(c[o>>2]|0)+(c[x>>2]<<3)>>2]|0))break;c[y>>2]=c[(c[o>>2]|0)+(c[x>>2]<<3)>>2];O=c[u>>2]|0;if((O|0)==(Mb(c[y>>2]|0)|0)?0==(TE(c[m>>2]|0,c[y>>2]|0,c[u>>2]|0)|0):0){j=75;break}c[x>>2]=(c[x>>2]|0)+1}if((j|0)==75){j=0;c[w>>2]=c[(c[o>>2]|0)+(c[x>>2]<<3)+4>>2]}if(!(c[w>>2]|0)){j=78;break}if((c[w>>2]&-129|0)>(c[r>>2]|0)){j=80;break}c[v>>2]=c[v>>2]&~c[q>>2]|c[w>>2]}}c[t>>2]=(c[m>>2]|0)+((c[u>>2]|0)+1)}if((j|0)==78){O=c[m>>2]|0;c[G>>2]=c[p>>2];c[G+4>>2]=O;O=qc(4808,G)|0;c[c[H>>2]>>2]=O;c[I>>2]=1;break}else if((j|0)==80){O=c[m>>2]|0;c[G>>2]=c[p>>2];c[G+4>>2]=O;O=qc(4832,G)|0;c[c[H>>2]>>2]=O;c[I>>2]=3;break}}else j=83;while(0);do if((j|0)==83){c[A>>2]=fc((c[N>>2]|0)+2|0)|0;if(c[A>>2]|0){dF(c[A>>2]|0,c[F>>2]|0,c[N>>2]|0)|0;a[(c[A>>2]|0)+(c[N>>2]|0)>>0]=0;a[(c[A>>2]|0)+((c[N>>2]|0)+1)>>0]=0;c[v>>2]=c[v>>2]&-65;j=86;break}c[C>>2]=7;O=c[C>>2]|0;i=z;return O|0}while(0);if((j|0)==86?(O=Yb(c[n>>2]|0)|0,c[c[J>>2]>>2]=O,(c[c[J>>2]>>2]|0)==0):0){c[G>>2]=c[n>>2];O=qc(4856,G)|0;c[c[H>>2]>>2]=O;c[I>>2]=1}if(c[I>>2]|0){hc(c[A>>2]|0);c[A>>2]=0}c[c[K>>2]>>2]=c[v>>2];c[c[L>>2]>>2]=c[A>>2];c[C>>2]=c[I>>2];O=c[C>>2]|0;i=z;return O|0}function rh(f,g,h,j,k,l){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;m=i;i=i+192|0;r=m+72|0;z=m+68|0;v=m+64|0;y=m+60|0;q=m+56|0;x=m+52|0;A=m+48|0;p=m+44|0;o=m+40|0;n=m+32|0;F=m+176|0;u=m+76|0;H=m+28|0;w=m+24|0;t=m+20|0;B=m+16|0;D=m+12|0;E=m+8|0;G=m+4|0;s=m;c[z>>2]=f;c[v>>2]=g;c[y>>2]=h;c[q>>2]=j;c[x>>2]=k;c[A>>2]=l;c[p>>2]=0;c[m+36>>2]=0;c[n>>2]=0;if(!(c[v>>2]|0))l=1;else l=(a[c[v>>2]>>0]|0)==0;c[H>>2]=l&1;if((c[v>>2]|0)!=0?(UE(c[v>>2]|0,4216)|0)==0:0)l=1;else C=5;do if((C|0)==5){if((c[H>>2]|0)!=0?(xh(c[y>>2]|0)|0)!=0:0){l=1;break}l=(c[A>>2]&128|0)!=0}while(0);c[w>>2]=l&1;if(c[w>>2]|0)c[x>>2]=c[x>>2]|2;if((c[A>>2]&256|0)!=0?(c[w>>2]|0)!=0|(c[H>>2]|0)!=0:0)c[A>>2]=c[A>>2]&-257|512;c[o>>2]=Mc(44,0)|0;if(!(c[o>>2]|0)){c[r>>2]=7;f=c[r>>2]|0;i=m;return f|0}a[(c[o>>2]|0)+8>>0]=0;c[c[o>>2]>>2]=c[y>>2];c[(c[o>>2]|0)+28>>2]=c[o>>2];c[(c[o>>2]|0)+32>>2]=1;do if(!(c[H>>2]|0)){if((c[w>>2]|0)!=0?(c[A>>2]&64|0)==0:0)break;if(c[A>>2]&131072){c[t>>2]=(c[(c[z>>2]|0)+8>>2]|0)+1;f=c[t>>2]|0;c[B>>2]=gc(f,((f|0)<0)<<31>>31)|0;a[(c[o>>2]|0)+9>>0]=1;if(!(c[B>>2]|0)){hc(c[o>>2]|0);c[r>>2]=7;f=c[r>>2]|0;i=m;return f|0}if(!(c[w>>2]|0)){c[n>>2]=yh(c[z>>2]|0,c[v>>2]|0,c[t>>2]|0,c[B>>2]|0)|0;if(c[n>>2]|0){hc(c[B>>2]|0);hc(c[o>>2]|0);c[r>>2]=c[n>>2];f=c[r>>2]|0;i=m;return f|0}}else{g=c[B>>2]|0;f=c[v>>2]|0;dF(g|0,f|0,(Mb(c[v>>2]|0)|0)+1|0)|0}c[p>>2]=c[1058];while(1){if(!(c[p>>2]|0))break;f=c[B>>2]|0;if(0==(UE(f,ug(c[c[p>>2]>>2]|0,0)|0)|0)?(f=zh(c[c[p>>2]>>2]|0)|0,(f|0)==(c[z>>2]|0)):0){C=29;break}c[p>>2]=c[(c[p>>2]|0)+68>>2]}do if((C|0)==29){c[D>>2]=(c[(c[y>>2]|0)+20>>2]|0)-1;while(1){if((c[D>>2]|0)<0){C=35;break}c[E>>2]=c[(c[(c[y>>2]|0)+16>>2]|0)+(c[D>>2]<<4)+4>>2];if((c[E>>2]|0)!=0?(c[(c[E>>2]|0)+4>>2]|0)==(c[p>>2]|0):0)break;c[D>>2]=(c[D>>2]|0)+ -1}if((C|0)==35){c[(c[o>>2]|0)+4>>2]=c[p>>2];f=(c[p>>2]|0)+64|0;c[f>>2]=(c[f>>2]|0)+1;break}hc(c[B>>2]|0);hc(c[o>>2]|0);c[r>>2]=19;f=c[r>>2]|0;i=m;return f|0}while(0);hc(c[B>>2]|0)}}while(0);do if(!(c[p>>2]|0)){c[p>>2]=Mc(84,0)|0;if(!(c[p>>2]|0)){c[n>>2]=7;break}c[n>>2]=Ah(c[z>>2]|0,c[p>>2]|0,c[v>>2]|0,76,c[x>>2]|0,c[A>>2]|0,14)|0;if(!(c[n>>2]|0)){f=(c[y>>2]|0)+40|0;Ch(c[c[p>>2]>>2]|0,c[f>>2]|0,c[f+4>>2]|0);c[n>>2]=Dh(c[c[p>>2]>>2]|0,100,u)|0}if(!(c[n>>2]|0)){a[(c[p>>2]|0)+16>>0]=c[x>>2];c[(c[p>>2]|0)+4>>2]=c[y>>2];Eh(c[c[p>>2]>>2]|0,18,c[p>>2]|0);c[(c[o>>2]|0)+4>>2]=c[p>>2];c[(c[p>>2]|0)+8>>2]=0;c[(c[p>>2]|0)+12>>2]=0;if((Gh(c[c[p>>2]>>2]|0)|0)<<24>>24){f=(c[p>>2]|0)+22|0;b[f>>1]=e[f>>1]|1}c[(c[p>>2]|0)+32>>2]=d[u+16>>0]<<8|d[u+17>>0]<<16;if(((c[(c[p>>2]|0)+32>>2]|0)>>>0>=512?(c[(c[p>>2]|0)+32>>2]|0)>>>0<=65536:0)?((c[(c[p>>2]|0)+32>>2]|0)-1&c[(c[p>>2]|0)+32>>2]|0)==0:0){a[F>>0]=a[u+20>>0]|0;f=(c[p>>2]|0)+22|0;b[f>>1]=e[f>>1]|2;f=(Hh(u+52|0)|0)!=0;a[(c[p>>2]|0)+17>>0]=f?1:0;f=(Hh(u+64|0)|0)!=0;a[(c[p>>2]|0)+18>>0]=f?1:0}else{c[(c[p>>2]|0)+32>>2]=0;if(!((c[v>>2]|0)==0|(c[w>>2]|0)!=0)){a[(c[p>>2]|0)+17>>0]=0;a[(c[p>>2]|0)+18>>0]=0}a[F>>0]=0}c[n>>2]=Eg(c[c[p>>2]>>2]|0,(c[p>>2]|0)+32|0,d[F>>0]|0)|0;if(!(c[n>>2]|0)){c[(c[p>>2]|0)+36>>2]=(c[(c[p>>2]|0)+32>>2]|0)-(d[F>>0]|0);if(a[(c[o>>2]|0)+9>>0]|0){c[(c[p>>2]|0)+64>>2]=1;c[(c[p>>2]|0)+68>>2]=c[1058];c[1058]=c[p>>2];C=56}else C=56}}}else C=56;while(0);if((C|0)==56){a:do if(a[(c[o>>2]|0)+9>>0]|0){c[G>>2]=0;while(1){if((c[G>>2]|0)>=(c[(c[y>>2]|0)+20>>2]|0))break a;f=c[(c[(c[y>>2]|0)+16>>2]|0)+(c[G>>2]<<4)+4>>2]|0;c[s>>2]=f;if((f|0)!=0?(d[(c[s>>2]|0)+9>>0]|0)!=0:0)break;c[G>>2]=(c[G>>2]|0)+1}while(1){if(!(c[(c[s>>2]|0)+24>>2]|0))break;c[s>>2]=c[(c[s>>2]|0)+24>>2]}if((c[(c[o>>2]|0)+4>>2]|0)>>>0<(c[(c[s>>2]|0)+4>>2]|0)>>>0){c[(c[o>>2]|0)+20>>2]=c[s>>2];c[(c[o>>2]|0)+24>>2]=0;c[(c[s>>2]|0)+24>>2]=c[o>>2];break}while(1){if(c[(c[s>>2]|0)+20>>2]|0)u=(c[(c[(c[s>>2]|0)+20>>2]|0)+4>>2]|0)>>>0<(c[(c[o>>2]|0)+4>>2]|0)>>>0;else u=0;t=c[(c[s>>2]|0)+20>>2]|0;if(!u)break;c[s>>2]=t}c[(c[o>>2]|0)+20>>2]=t;c[(c[o>>2]|0)+24>>2]=c[s>>2];if(c[(c[o>>2]|0)+20>>2]|0)c[(c[(c[o>>2]|0)+20>>2]|0)+24>>2]=c[o>>2];c[(c[s>>2]|0)+20>>2]=c[o>>2]}while(0);c[c[q>>2]>>2]=c[o>>2]}if(!(c[n>>2]|0)){if(!(vh(c[o>>2]|0,0,0)|0))Jh(c[c[(c[o>>2]|0)+4>>2]>>2]|0,2e3)}else{if((c[p>>2]|0)!=0?(c[c[p>>2]>>2]|0)!=0:0)Ih(c[c[p>>2]>>2]|0)|0;hc(c[p>>2]|0);hc(c[o>>2]|0);c[c[q>>2]>>2]=0}c[r>>2]=c[n>>2];f=c[r>>2]|0;i=m;return f|0}function sh(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0;h=i;i=i+16|0;f=h+8|0;j=h+4|0;g=h;c[f>>2]=b;c[j>>2]=e;if(c[j>>2]|0)c[g>>2]=vh(c[j>>2]|0,84,15)|0;else c[g>>2]=se(0,84,0)|0;if(!(c[g>>2]|0)){a[(c[f>>2]|0)+64>>0]=1;b=c[g>>2]|0;i=h;return b|0}if(d[(c[g>>2]|0)+76>>0]|0){b=c[g>>2]|0;i=h;return b|0}nh((c[g>>2]|0)+8|0);nh((c[g>>2]|0)+24|0);nh((c[g>>2]|0)+40|0);nh((c[g>>2]|0)+56|0);a[(c[g>>2]|0)+77>>0]=1;b=c[g>>2]|0;i=h;return b|0}function th(b){b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;e=d+4|0;f=d;c[e>>2]=b;c[f>>2]=Rf(c[e>>2]|0,4208,2)|0;if((c[f>>2]|0)!=7){i=d;return}a[(c[e>>2]|0)+64>>0]=1;i=d;return}function uh(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;b=i;i=i+32|0;g=b;d=b+24|0;k=b+20|0;h=b+16|0;e=b+12|0;j=b+8|0;f=b+4|0;c[d>>2]=a;c[h>>2]=1;if(!(c[370]|0)){i=b;return}c[k>>2]=0;while(1){if(!(c[h>>2]|0))break;if((c[k>>2]|0)>=(c[370]|0)){c[j>>2]=0;c[h>>2]=0}else c[j>>2]=c[(c[371]|0)+(c[k>>2]<<2)>>2];c[f>>2]=0;if((c[j>>2]|0)!=0?(a=pb[c[j>>2]&31](c[d>>2]|0,f,3352)|0,c[e>>2]=a,(a|0)!=0):0){l=c[d>>2]|0;a=c[e>>2]|0;c[g>>2]=c[f>>2];Lc(l,a,4168,g);c[h>>2]=0}hc(c[f>>2]|0);c[k>>2]=(c[k>>2]|0)+1}i=b;return}function vh(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;i=i+16|0;j=e+12|0;g=e+8|0;h=e+4|0;f=e;c[j>>2]=a;c[g>>2]=b;c[h>>2]=d;c[f>>2]=c[(c[j>>2]|0)+4>>2];Pc(c[j>>2]|0);if(!((c[g>>2]|0)!=0?(c[(c[f>>2]|0)+48>>2]|0)==0:0)){j=c[f>>2]|0;j=j+48|0;j=c[j>>2]|0;i=e;return j|0}j=c[g>>2]|0;j=se(0,j,((j|0)<0)<<31>>31)|0;c[(c[f>>2]|0)+48>>2]=j;c[(c[f>>2]|0)+52>>2]=c[h>>2];j=c[f>>2]|0;j=j+48|0;j=c[j>>2]|0;i=e;return j|0}function wh(a){a=a|0;var d=0,f=0,g=0,h=0,j=0,k=0,l=0;d=i;i=i+64|0;l=d+48|0;f=d+32|0;k=d+16|0;h=d+8|0;g=d+4|0;j=d;c[l>>2]=a;c[g>>2]=c[l>>2];a=(c[g>>2]|0)+8|0;c[f+0>>2]=c[a+0>>2];c[f+4>>2]=c[a+4>>2];c[f+8>>2]=c[a+8>>2];c[f+12>>2]=c[a+12>>2];a=(c[g>>2]|0)+40|0;c[k+0>>2]=c[a+0>>2];c[k+4>>2]=c[a+4>>2];c[k+8>>2]=c[a+8>>2];c[k+12>>2]=c[a+12>>2];nh((c[g>>2]|0)+40|0);mh((c[g>>2]|0)+24|0);c[h>>2]=c[k+8>>2];while(1){if(!(c[h>>2]|0))break;Ub(0,c[(c[h>>2]|0)+8>>2]|0);c[h>>2]=c[c[h>>2]>>2]}mh(k);nh((c[g>>2]|0)+8|0);c[h>>2]=c[f+8>>2];while(1){if(!(c[h>>2]|0))break;c[j>>2]=c[(c[h>>2]|0)+8>>2];Vb(0,c[j>>2]|0);c[h>>2]=c[c[h>>2]>>2]}mh(f);mh((c[g>>2]|0)+56|0);c[(c[g>>2]|0)+72>>2]=0;if(!((e[(c[g>>2]|0)+78>>1]|0)&1)){i=d;return}l=(c[g>>2]|0)+4|0;c[l>>2]=(c[l>>2]|0)+1;l=(c[g>>2]|0)+78|0;b[l>>1]=(e[l>>1]|0)&-2;i=d;return}function xh(a){a=a|0;var b=0,e=0;e=i;i=i+16|0;b=e;c[b>>2]=a;i=e;return(d[(c[b>>2]|0)+63>>0]|0|0)==2|0}function yh(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;g=i;i=i+16|0;l=g+12|0;k=g+8|0;j=g+4|0;h=g;c[l>>2]=b;c[k>>2]=d;c[j>>2]=e;c[h>>2]=f;a[c[h>>2]>>0]=0;b=xb[c[(c[l>>2]|0)+36>>2]&7](c[l>>2]|0,c[k>>2]|0,c[j>>2]|0,c[h>>2]|0)|0;i=g;return b|0}function zh(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;i=d;return c[c[b>>2]>>2]|0}function Ah(d,e,f,g,h,j,k){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;v=i;i=i+112|0;A=v+96|0;p=v+92|0;E=v+88|0;s=v+84|0;y=v+80|0;L=v+76|0;r=v+72|0;D=v+68|0;H=v+64|0;q=v+60|0;o=v+56|0;C=v+52|0;z=v+48|0;l=v+44|0;F=v+40|0;n=v+36|0;t=v+32|0;B=v+28|0;I=v+24|0;x=v+20|0;J=v+16|0;K=v+12|0;G=v+8|0;u=v+4|0;w=v;c[p>>2]=d;c[E>>2]=e;c[s>>2]=f;c[y>>2]=g;c[L>>2]=h;c[r>>2]=j;c[D>>2]=k;c[q>>2]=0;c[o>>2]=0;c[C>>2]=0;c[z>>2]=0;c[l>>2]=0;c[n>>2]=0;c[t>>2]=0;c[B>>2]=(c[L>>2]&1|0)==0&1;c[I>>2]=Uj()|0;c[x>>2]=1024;c[J>>2]=0;c[K>>2]=0;d=c[(c[p>>2]|0)+4>>2]|0;if((d|0)>(ri()|0))c[F>>2]=(c[(c[p>>2]|0)+4>>2]|0)+7&-8;else c[F>>2]=(ri()|0)+7&-8;c[c[E>>2]>>2]=0;do if(((c[L>>2]&2|0)!=0?(c[z>>2]=1,(c[s>>2]|0)!=0):0)?(a[c[s>>2]>>0]|0)!=0:0){c[n>>2]=ne(0,c[s>>2]|0)|0;if(c[n>>2]|0){c[t>>2]=Mb(c[n>>2]|0)|0;c[s>>2]=0;break}c[A>>2]=7;d=c[A>>2]|0;i=v;return d|0}while(0);if((c[s>>2]|0)!=0?(a[c[s>>2]>>0]|0)!=0:0){c[t>>2]=(c[(c[p>>2]|0)+8>>2]|0)+1;d=c[t>>2]<<1;c[n>>2]=Qe(0,d,((d|0)<0)<<31>>31)|0;if(!(c[n>>2]|0)){c[A>>2]=7;d=c[A>>2]|0;i=v;return d|0}a[c[n>>2]>>0]=0;c[o>>2]=yh(c[p>>2]|0,c[s>>2]|0,c[t>>2]|0,c[n>>2]|0)|0;c[t>>2]=Mb(c[n>>2]|0)|0;d=(Mb(c[s>>2]|0)|0)+1|0;d=(c[s>>2]|0)+d|0;c[J>>2]=d;c[G>>2]=d;while(1){e=c[G>>2]|0;if(!(a[c[G>>2]>>0]|0))break;d=(Mb(e)|0)+1|0;c[G>>2]=(c[G>>2]|0)+d;d=(Mb(c[G>>2]|0)|0)+1|0;c[G>>2]=(c[G>>2]|0)+d}c[K>>2]=e+1-(c[J>>2]|0);if((c[o>>2]|0)==0?((c[t>>2]|0)+8|0)>(c[(c[p>>2]|0)+8>>2]|0):0)c[o>>2]=Ij(45462)|0;if(c[o>>2]|0){Xb(0,c[n>>2]|0);c[A>>2]=c[o>>2];d=c[A>>2]|0;i=v;return d|0}}c[H>>2]=Mc(216+((c[I>>2]|0)+7&-8)+((c[(c[p>>2]|0)+4>>2]|0)+7&-8)+(c[F>>2]<<1)+(c[t>>2]|0)+1+(c[K>>2]|0)+(c[t>>2]|0)+10+(c[t>>2]|0)+6|0,0)|0;if(!(c[H>>2]|0)){Xb(0,c[n>>2]|0);c[A>>2]=7;d=c[A>>2]|0;i=v;return d|0}c[q>>2]=c[H>>2];d=(c[H>>2]|0)+216|0;c[H>>2]=d;c[(c[q>>2]|0)+204>>2]=d;d=(c[H>>2]|0)+((c[I>>2]|0)+7&-8)|0;c[H>>2]=d;c[(c[q>>2]|0)+60>>2]=d;d=(c[H>>2]|0)+((c[(c[p>>2]|0)+4>>2]|0)+7&-8)|0;c[H>>2]=d;c[(c[q>>2]|0)+68>>2]=d;d=(c[H>>2]|0)+(c[F>>2]|0)|0;c[H>>2]=d;c[(c[q>>2]|0)+64>>2]=d;d=(c[H>>2]|0)+(c[F>>2]|0)|0;c[H>>2]=d;c[(c[q>>2]|0)+168>>2]=d;if(c[n>>2]|0){d=(c[H>>2]|0)+((c[t>>2]|0)+1+(c[K>>2]|0))|0;c[H>>2]=d;c[(c[q>>2]|0)+172>>2]=d;dF(c[(c[q>>2]|0)+168>>2]|0,c[n>>2]|0,c[t>>2]|0)|0;if(c[K>>2]|0)dF((c[(c[q>>2]|0)+168>>2]|0)+((c[t>>2]|0)+1)|0,c[J>>2]|0,c[K>>2]|0)|0;dF(c[(c[q>>2]|0)+172>>2]|0,c[n>>2]|0,c[t>>2]|0)|0;H=(c[(c[q>>2]|0)+172>>2]|0)+(c[t>>2]|0)+0|0;G=4552;F=H+10|0;do{a[H>>0]=a[G>>0]|0;H=H+1|0;G=G+1|0}while((H|0)<(F|0));c[(c[q>>2]|0)+212>>2]=(c[(c[q>>2]|0)+172>>2]|0)+((c[t>>2]|0)+9);dF(c[(c[q>>2]|0)+212>>2]|0,c[n>>2]|0,c[t>>2]|0)|0;d=(c[(c[q>>2]|0)+212>>2]|0)+(c[t>>2]|0)|0;a[d+0>>0]=a[4568]|0;a[d+1>>0]=a[4569]|0;a[d+2>>0]=a[4570]|0;a[d+3>>0]=a[4571]|0;a[d+4>>0]=a[4572]|0;Xb(0,c[n>>2]|0)}c[c[q>>2]>>2]=c[p>>2];c[(c[q>>2]|0)+144>>2]=c[r>>2];do if((c[s>>2]|0)!=0?(a[c[s>>2]>>0]|0)!=0:0){c[u>>2]=0;c[o>>2]=Di(c[p>>2]|0,c[(c[q>>2]|0)+168>>2]|0,c[(c[q>>2]|0)+60>>2]|0,c[r>>2]|0,u)|0;c[l>>2]=c[u>>2]&1;if(!(c[o>>2]|0)){c[w>>2]=Ai(c[(c[q>>2]|0)+60>>2]|0)|0;do if((c[l>>2]|0)==0?(zi(c[q>>2]|0),(c[x>>2]|0)>>>0<(c[(c[q>>2]|0)+148>>2]|0)>>>0):0)if((c[(c[q>>2]|0)+148>>2]|0)>>>0>8192){c[x>>2]=8192;break}else{c[x>>2]=c[(c[q>>2]|0)+148>>2];break}while(0);d=(pg(c[s>>2]|0,4576,0)|0)&255;a[(c[q>>2]|0)+13>>0]=d;if((c[w>>2]&8192|0)==0?(pg(c[s>>2]|0,4584,0)|0)==0:0)break;c[r>>2]=c[r>>2]|1;m=39}}else m=39;while(0);if((m|0)==39){c[C>>2]=1;a[(c[q>>2]|0)+16>>0]=1;a[(c[q>>2]|0)+17>>0]=4;a[(c[q>>2]|0)+13>>0]=1;c[l>>2]=c[r>>2]&1}if(!(c[o>>2]|0))c[o>>2]=Eg(c[q>>2]|0,x,-1)|0;if(!(c[o>>2]|0)){c[y>>2]=(c[y>>2]|0)+7&-8;c[o>>2]=Vj(c[x>>2]|0,c[y>>2]|0,((c[z>>2]|0)!=0^1)&1,(c[z>>2]|0)!=0^1?35:0,c[q>>2]|0,c[(c[q>>2]|0)+204>>2]|0)|0}if(c[o>>2]|0){Rh(c[(c[q>>2]|0)+60>>2]|0)|0;Kg(c[(c[q>>2]|0)+200>>2]|0);hc(c[q>>2]|0);c[A>>2]=c[o>>2];d=c[A>>2]|0;i=v;return d|0}a[(c[q>>2]|0)+6>>0]=c[B>>2];c[(c[q>>2]|0)+156>>2]=1073741823;a[(c[q>>2]|0)+12>>0]=c[C>>2];a[(c[q>>2]|0)+4>>0]=c[C>>2];a[(c[q>>2]|0)+18>>0]=a[(c[q>>2]|0)+12>>0]|0;a[(c[q>>2]|0)+15>>0]=c[z>>2];a[(c[q>>2]|0)+14>>0]=c[l>>2];a[(c[q>>2]|0)+7>>0]=a[(c[q>>2]|0)+12>>0]|0;if(!(a[(c[q>>2]|0)+7>>0]|0)){a[(c[q>>2]|0)+8>>0]=1;a[(c[q>>2]|0)+11>>0]=2;a[(c[q>>2]|0)+10>>0]=34;a[(c[q>>2]|0)+9>>0]=2}b[(c[q>>2]|0)+140>>1]=c[y>>2];d=(c[q>>2]|0)+160|0;c[d>>2]=-1;c[d+4>>2]=-1;zi(c[q>>2]|0);if(c[B>>2]|0){if(c[z>>2]|0)a[(c[q>>2]|0)+5>>0]=4}else a[(c[q>>2]|0)+5>>0]=2;c[(c[q>>2]|0)+196>>2]=c[D>>2];c[c[E>>2]>>2]=c[q>>2];c[A>>2]=0;d=c[A>>2]|0;i=v;return d|0}function Bh(b){b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=b;c[e>>2]=Qj(c[f>>2]|0)|0;if(!(a[c[e>>2]>>0]|0)){i=d;return}a[c[e>>2]>>0]=0;if((Rj(c[f>>2]|0)|0)<=1){i=d;return}Sj(c[e>>2]|0)|0;i=d;return}function Ch(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=i;i=i+16|0;f=e+8|0;g=e;c[f>>2]=a;a=g;c[a>>2]=b;c[a+4>>2]=d;d=g;b=c[d+4>>2]|0;a=(c[f>>2]|0)+128|0;c[a>>2]=c[d>>2];c[a+4>>2]=b;Lg(c[f>>2]|0);i=e;return}function Dh(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;i=i+16|0;g=e+12|0;j=e+8|0;h=e+4|0;f=e;c[g>>2]=a;c[j>>2]=b;c[h>>2]=d;c[f>>2]=0;_E(c[h>>2]|0,0,c[j>>2]|0)|0;if(!(c[c[(c[g>>2]|0)+60>>2]>>2]|0)){a=c[f>>2]|0;i=e;return a|0}a=Ei(c[(c[g>>2]|0)+60>>2]|0,c[h>>2]|0,c[j>>2]|0,0,0)|0;c[f>>2]=a;c[f>>2]=(c[f>>2]|0)==522?0:a;a=c[f>>2]|0;i=e;return a|0}function Eh(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;i=i+16|0;f=e+12|0;j=e+8|0;h=e+4|0;g=e;c[f>>2]=a;c[j>>2]=b;c[h>>2]=d;c[(c[f>>2]|0)+176>>2]=c[j>>2];c[(c[f>>2]|0)+180>>2]=c[h>>2];if(!(c[c[(c[f>>2]|0)+60>>2]>>2]|0)){i=e;return}c[g>>2]=(c[f>>2]|0)+176;rj(c[(c[f>>2]|0)+60>>2]|0,15,c[g>>2]|0);i=e;return}function Fh(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+16|0;e=b+4|0;d=b;c[e>>2]=a;c[d>>2]=c[e>>2];a=Pj((c[(c[d>>2]|0)+4>>2]|0)+444|0)|0;i=b;return a|0}function Gh(b){b=b|0;var d=0,e=0;e=i;i=i+16|0;d=e;c[d>>2]=b;i=e;return a[(c[d>>2]|0)+14>>0]|0}function Hh(a){a=a|0;var b=0,e=0;e=i;i=i+16|0;b=e;c[b>>2]=a;i=e;return(d[c[b>>2]>>0]|0)<<24|(d[(c[b>>2]|0)+1>>0]|0)<<16|(d[(c[b>>2]|0)+2>>0]|0)<<8|(d[(c[b>>2]|0)+3>>0]|0)|0}function Ih(b){b=b|0;var e=0,f=0,g=0;e=i;i=i+16|0;f=e+4|0;g=e;c[f>>2]=b;c[g>>2]=c[(c[f>>2]|0)+200>>2];kh();Lh(c[f>>2]|0);a[(c[f>>2]|0)+4>>0]=0;Mh(c[(c[f>>2]|0)+208>>2]|0,d[(c[f>>2]|0)+9>>0]|0,c[(c[f>>2]|0)+152>>2]|0,c[g>>2]|0)|0;c[(c[f>>2]|0)+208>>2]=0;Ig(c[f>>2]|0);b=c[f>>2]|0;if(a[(c[f>>2]|0)+15>>0]|0)Nh(b);else{if(c[c[b+64>>2]>>2]|0){b=c[f>>2]|0;Oh(b,Ph(c[f>>2]|0)|0)|0}Qh(c[f>>2]|0)}lh();Rh(c[(c[f>>2]|0)+64>>2]|0)|0;Rh(c[(c[f>>2]|0)+60>>2]|0)|0;Kg(c[g>>2]|0);Sh(c[(c[f>>2]|0)+204>>2]|0);hc(c[f>>2]|0);i=e;return 0}function Jh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;Kh(c[(c[f>>2]|0)+204>>2]|0,c[e>>2]|0);i=d;return}function Kh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;c[(c[f>>2]|0)+16>>2]=c[e>>2];e=c[9691]|0;b=c[(c[f>>2]|0)+40>>2]|0;a=Ng(c[f>>2]|0)|0;sb[e&7](b,a);i=d;return}function Lh(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;i=i+16|0;f=b+8|0;d=b+4|0;e=b;c[f>>2]=a;c[d>>2]=c[(c[f>>2]|0)+136>>2];while(1){if(!(c[d>>2]|0))break;c[e>>2]=c[(c[d>>2]|0)+12>>2];hc(c[d>>2]|0);c[d>>2]=c[e>>2]}i=b;return}function Mh(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;n=i;i=i+32|0;l=n+24|0;h=n+20|0;o=n+16|0;p=n+12|0;j=n+8|0;m=n+4|0;k=n;c[l>>2]=b;c[h>>2]=e;c[o>>2]=f;c[p>>2]=g;c[j>>2]=0;if(!(c[l>>2]|0)){b=c[j>>2]|0;i=n;return b|0}c[m>>2]=0;c[j>>2]=pj(c[(c[l>>2]|0)+4>>2]|0,4)|0;do if(!(c[j>>2]|0)){if(!(d[(c[l>>2]|0)+43>>0]|0))a[(c[l>>2]|0)+43>>0]=1;c[j>>2]=qj(c[l>>2]|0,0,0,0,c[h>>2]|0,c[o>>2]|0,c[p>>2]|0,0,0)|0;if(!(c[j>>2]|0)){c[k>>2]=-1;rj(c[(c[l>>2]|0)+4>>2]|0,10,k);if((c[k>>2]|0)!=1){c[m>>2]=1;break}b=(c[l>>2]|0)+16|0;e=c[b+4>>2]|0;if((e|0)>0|(e|0)==0&(c[b>>2]|0)>>>0>=0)sj(c[l>>2]|0,0,0)}}while(0);tj(c[l>>2]|0,c[m>>2]|0);Rh(c[(c[l>>2]|0)+8>>2]|0)|0;if(c[m>>2]|0){kh();_h(c[c[l>>2]>>2]|0,c[(c[l>>2]|0)+100>>2]|0,0)|0;lh()}hc(c[(c[l>>2]|0)+32>>2]|0);hc(c[l>>2]|0);b=c[j>>2]|0;i=n;return b|0}function Nh(b){b=b|0;var e=0,f=0,g=0,h=0,j=0;f=i;i=i+16|0;e=f+8|0;g=f+4|0;h=f;c[e>>2]=b;_g(c[(c[e>>2]|0)+56>>2]|0);c[(c[e>>2]|0)+56>>2]=0;Vh(c[e>>2]|0);j=(ai(c[e>>2]|0)|0)!=0;b=c[e>>2]|0;if(!j){if(!(a[b+4>>0]|0)){if(c[c[(c[e>>2]|0)+60>>2]>>2]|0)b=Ai(c[(c[e>>2]|0)+60>>2]|0)|0;else b=0;c[h>>2]=b;if(!(0!=(c[h>>2]&2048|0)?1==(d[(c[e>>2]|0)+5>>0]&5|0):0))Rh(c[(c[e>>2]|0)+64>>2]|0)|0;c[g>>2]=ei(c[e>>2]|0,0)|0;if((c[g>>2]|0)!=0?(d[(c[e>>2]|0)+16>>0]|0)==6:0)a[(c[e>>2]|0)+17>>0]=5;a[(c[e>>2]|0)+18>>0]=0;a[(c[e>>2]|0)+16>>0]=0}}else{oj(c[b+208>>2]|0);a[(c[e>>2]|0)+16>>0]=0}if(!(c[(c[e>>2]|0)+40>>2]|0)){j=c[e>>2]|0;j=j+72|0;b=j;c[b>>2]=0;j=j+4|0;c[j>>2]=0;j=c[e>>2]|0;j=j+80|0;b=j;c[b>>2]=0;j=j+4|0;c[j>>2]=0;j=c[e>>2]|0;j=j+19|0;a[j>>0]=0;i=f;return}Ig(c[e>>2]|0);a[(c[e>>2]|0)+18>>0]=a[(c[e>>2]|0)+12>>0]|0;a[(c[e>>2]|0)+16>>0]=0;c[(c[e>>2]|0)+40>>2]=0;j=c[e>>2]|0;j=j+72|0;b=j;c[b>>2]=0;j=j+4|0;c[j>>2]=0;j=c[e>>2]|0;j=j+80|0;b=j;c[b>>2]=0;j=j+4|0;c[j>>2]=0;j=c[e>>2]|0;j=j+19|0;a[j>>0]=0;i=f;return}function Oh(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+16|0;g=e+8|0;f=e+4|0;h=e;c[g>>2]=b;c[f>>2]=d;c[h>>2]=c[f>>2]&255;if(!((c[h>>2]|0)==13|(c[h>>2]|0)==10)){h=c[f>>2]|0;i=e;return h|0}c[(c[g>>2]|0)+40>>2]=c[f>>2];a[(c[g>>2]|0)+16>>0]=6;h=c[f>>2]|0;i=e;return h|0}function Ph(b){b=b|0;var d=0,e=0,f=0;e=i;i=i+16|0;f=e+4|0;d=e;c[f>>2]=b;c[d>>2]=0;if(!(a[(c[f>>2]|0)+7>>0]|0))c[d>>2]=Yh(c[(c[f>>2]|0)+64>>2]|0,2)|0;if(c[d>>2]|0){f=c[d>>2]|0;i=e;return f|0}c[d>>2]=Gg(c[(c[f>>2]|0)+64>>2]|0,(c[f>>2]|0)+80|0)|0;f=c[d>>2]|0;i=e;return f|0}function Qh(b){b=b|0;var e=0,f=0;e=i;i=i+16|0;f=e;c[f>>2]=b;do if((d[(c[f>>2]|0)+16>>0]|0)!=6?(d[(c[f>>2]|0)+16>>0]|0)!=0:0){if((d[(c[f>>2]|0)+16>>0]|0)>=2){kh();Th(c[f>>2]|0)|0;lh();break}if(!(a[(c[f>>2]|0)+4>>0]|0))Uh(c[f>>2]|0,0,0)|0}while(0);Nh(c[f>>2]|0);i=e;return}function Rh(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+16|0;e=b+4|0;d=b;c[e>>2]=a;c[d>>2]=0;if(!(c[c[e>>2]>>2]|0)){e=c[d>>2]|0;i=b;return e|0}c[d>>2]=ub[c[(c[c[e>>2]>>2]|0)+4>>2]&31](c[e>>2]|0)|0;c[c[e>>2]>>2]=0;e=c[d>>2]|0;i=b;return e|0}function Sh(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;rb[c[38640+148>>2]&31](c[(c[d>>2]|0)+40>>2]|0);i=b;return}function Th(b){b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;e=i;i=i+32|0;f=e+16|0;g=e+12|0;h=e+8|0;j=e+4|0;k=e;c[g>>2]=b;c[h>>2]=0;b=c[g>>2]|0;if((d[(c[g>>2]|0)+16>>0]|0)==6){c[f>>2]=c[b+40>>2];b=c[f>>2]|0;i=e;return b|0}if((d[b+16>>0]|0)<=1){c[f>>2]=0;b=c[f>>2]|0;i=e;return b|0}l=(ai(c[g>>2]|0)|0)!=0;b=c[g>>2]|0;do if(l){c[h>>2]=si(b,2,-1)|0;c[j>>2]=Uh(c[g>>2]|0,d[(c[g>>2]|0)+19>>0]|0,0)|0;if(!(c[h>>2]|0))c[h>>2]=c[j>>2]}else{if((c[c[b+64>>2]>>2]|0)!=0?(d[(c[g>>2]|0)+16>>0]|0)!=2:0){c[h>>2]=ti(c[g>>2]|0,0)|0;break}c[k>>2]=d[(c[g>>2]|0)+16>>0];c[h>>2]=Uh(c[g>>2]|0,0,0)|0;if((c[k>>2]|0)>2?(a[(c[g>>2]|0)+15>>0]|0)==0:0){c[(c[g>>2]|0)+40>>2]=4;a[(c[g>>2]|0)+16>>0]=6;c[f>>2]=c[h>>2];l=c[f>>2]|0;i=e;return l|0}}while(0);c[f>>2]=Oh(c[g>>2]|0,c[h>>2]|0)|0;l=c[f>>2]|0;i=e;return l|0}function Uh(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;m=i;i=i+32|0;h=m+24|0;l=m+20|0;n=m+16|0;k=m+12|0;j=m+8|0;g=m+4|0;o=m;c[l>>2]=b;c[n>>2]=e;c[k>>2]=f;c[j>>2]=0;c[g>>2]=0;if((d[(c[l>>2]|0)+16>>0]|0)<2?(d[(c[l>>2]|0)+17>>0]|0)<2:0){c[h>>2]=0;b=c[h>>2]|0;i=m;return b|0}Vh(c[l>>2]|0);a:do if(c[c[(c[l>>2]|0)+64>>2]>>2]|0){b=(Wh(c[(c[l>>2]|0)+64>>2]|0)|0)!=0;f=c[l>>2]|0;if(b){Rh(c[f+64>>2]|0)|0;break}e=c[l>>2]|0;if((d[f+5>>0]|0)==3){b=e+72|0;if(!((c[b>>2]|0)==0&(c[b+4>>2]|0)==0)){c[j>>2]=Xh(c[(c[l>>2]|0)+64>>2]|0,0,0)|0;if((c[j>>2]|0)==0?(d[(c[l>>2]|0)+8>>0]|0)!=0:0)c[j>>2]=Yh(c[(c[l>>2]|0)+64>>2]|0,d[(c[l>>2]|0)+11>>0]|0)|0}else c[j>>2]=0;b=(c[l>>2]|0)+72|0;c[b>>2]=0;c[b+4>>2]=0;break}else{do if((d[e+5>>0]|0)!=1){if((d[(c[l>>2]|0)+4>>0]|0)!=0?(d[(c[l>>2]|0)+5>>0]|0)!=5:0)break;c[o>>2]=((a[(c[l>>2]|0)+12>>0]|0)!=0?0:1)&1;Rh(c[(c[l>>2]|0)+64>>2]|0)|0;if(!(c[o>>2]|0))break a;c[j>>2]=_h(c[c[l>>2]>>2]|0,c[(c[l>>2]|0)+172>>2]|0,0)|0;break a}while(0);c[j>>2]=Zh(c[l>>2]|0,c[n>>2]|0)|0;b=(c[l>>2]|0)+72|0;c[b>>2]=0;c[b+4>>2]=0;break}}while(0);_g(c[(c[l>>2]|0)+56>>2]|0);c[(c[l>>2]|0)+56>>2]=0;c[(c[l>>2]|0)+44>>2]=0;$h(c[(c[l>>2]|0)+204>>2]|0);Qg(c[(c[l>>2]|0)+204>>2]|0,c[(c[l>>2]|0)+24>>2]|0);if(!(ai(c[l>>2]|0)|0)){if((c[j>>2]|0)==0&(c[k>>2]|0)!=0?(c[(c[l>>2]|0)+32>>2]|0)>>>0>(c[(c[l>>2]|0)+24>>2]|0)>>>0:0)c[j>>2]=ci(c[l>>2]|0,c[(c[l>>2]|0)+24>>2]|0)|0}else c[g>>2]=bi(c[(c[l>>2]|0)+208>>2]|0)|0;if((c[j>>2]|0)==0&(c[k>>2]|0)!=0?(c[c[(c[l>>2]|0)+60>>2]>>2]|0)!=0:0){b=ig(c[(c[l>>2]|0)+60>>2]|0,22,0)|0;c[j>>2]=b;c[j>>2]=(c[j>>2]|0)==12?0:b}do if(!(a[(c[l>>2]|0)+4>>0]|0)){if((ai(c[l>>2]|0)|0)!=0?(di(c[(c[l>>2]|0)+208>>2]|0,0)|0)==0:0)break;c[g>>2]=ei(c[l>>2]|0,1)|0;a[(c[l>>2]|0)+18>>0]=0}while(0);a[(c[l>>2]|0)+16>>0]=1;a[(c[l>>2]|0)+19>>0]=0;c[h>>2]=(c[j>>2]|0)==0?c[g>>2]|0:c[j>>2]|0;b=c[h>>2]|0;i=m;return b|0}function Vh(b){b=b|0;var d=0,e=0,f=0;e=i;i=i+16|0;d=e+4|0;f=e;c[d>>2]=b;c[f>>2]=0;while(1){if((c[f>>2]|0)>=(c[(c[d>>2]|0)+96>>2]|0))break;_g(c[(c[(c[d>>2]|0)+92>>2]|0)+((c[f>>2]|0)*48|0)+16>>2]|0);c[f>>2]=(c[f>>2]|0)+1}if(!((a[(c[d>>2]|0)+4>>0]|0)!=0?(Wh(c[(c[d>>2]|0)+68>>2]|0)|0)==0:0))Rh(c[(c[d>>2]|0)+68>>2]|0)|0;hc(c[(c[d>>2]|0)+92>>2]|0);c[(c[d>>2]|0)+92>>2]=0;c[(c[d>>2]|0)+96>>2]=0;c[(c[d>>2]|0)+52>>2]=0;i=e;return}function Wh(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;i=d;return(c[c[b>>2]>>2]|0)==4272|0}function Xh(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=i;i=i+16|0;f=e+8|0;g=e;c[f>>2]=a;a=g;c[a>>2]=b;c[a+4>>2]=d;a=g;a=pb[c[(c[c[f>>2]>>2]|0)+16>>2]&31](c[f>>2]|0,c[a>>2]|0,c[a+4>>2]|0)|0;i=e;return a|0}function Yh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;a=zb[c[(c[c[f>>2]>>2]|0)+20>>2]&63](c[f>>2]|0,c[e>>2]|0)|0;i=d;return a|0}function Zh(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;f=i;i=i+32|0;h=f+24|0;l=f+20|0;g=f+16|0;k=f+8|0;j=f;c[h>>2]=b;c[l>>2]=e;c[g>>2]=0;b=(c[h>>2]|0)+72|0;if(!((c[b>>2]|0)!=0|(c[b+4>>2]|0)!=0)){b=c[g>>2]|0;i=f;return b|0}m=(c[h>>2]|0)+160|0;e=c[m+4>>2]|0;b=k;c[b>>2]=c[m>>2];c[b+4>>2]=e;b=k;e=c[(c[h>>2]|0)+64>>2]|0;if((c[l>>2]|0)!=0|(c[b>>2]|0)==0&(c[b+4>>2]|0)==0)c[g>>2]=Xh(e,0,0)|0;else c[g>>2]=id(e,4240,28,0,0)|0;if((c[g>>2]|0)==0?(a[(c[h>>2]|0)+7>>0]|0)==0:0)c[g>>2]=Yh(c[(c[h>>2]|0)+64>>2]|0,16|d[(c[h>>2]|0)+11>>0])|0;m=k;b=c[m+4>>2]|0;if(!((c[g>>2]|0)==0&((b|0)>0|(b|0)==0&(c[m>>2]|0)>>>0>0))){m=c[g>>2]|0;i=f;return m|0}c[g>>2]=Gg(c[(c[h>>2]|0)+64>>2]|0,j)|0;if(c[g>>2]|0){m=c[g>>2]|0;i=f;return m|0}b=j;l=c[b+4>>2]|0;m=k;e=c[m+4>>2]|0;if(!((l|0)>(e|0)|((l|0)==(e|0)?(c[b>>2]|0)>>>0>(c[m>>2]|0)>>>0:0))){m=c[g>>2]|0;i=f;return m|0}m=k;c[g>>2]=Xh(c[(c[h>>2]|0)+64>>2]|0,c[m>>2]|0,c[m+4>>2]|0)|0;m=c[g>>2]|0;i=f;return m|0}function _h(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+16|0;h=e+8|0;g=e+4|0;f=e;c[h>>2]=a;c[g>>2]=b;c[f>>2]=d;a=pb[c[(c[h>>2]|0)+28>>2]&31](c[h>>2]|0,c[g>>2]|0,c[f>>2]|0)|0;i=e;return a|0}function $h(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+16|0;d=b+4|0;e=b;c[d>>2]=a;while(1){a=c[c[d>>2]>>2]|0;c[e>>2]=a;if(!a)break;Rg(c[e>>2]|0)}i=b;return}function ai(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;i=d;return(c[(c[b>>2]|0)+208>>2]|0)!=0|0}function bi(b){b=b|0;var d=0,e=0;d=i;i=i+16|0;e=d;c[e>>2]=b;if(!(a[(c[e>>2]|0)+44>>0]|0)){i=d;return 0}ji(c[e>>2]|0,0,1);a[(c[e>>2]|0)+44>>0]=0;a[(c[e>>2]|0)+47>>0]=0;i=d;return 0}function ci(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;e=i;i=i+48|0;g=e+32|0;m=e+28|0;f=e+24|0;l=e+8|0;k=e;j=e+20|0;h=e+16|0;c[g>>2]=a;c[m>>2]=b;c[f>>2]=0;if(!(c[c[(c[g>>2]|0)+60>>2]>>2]|0)){a=c[f>>2]|0;i=e;return a|0}if((d[(c[g>>2]|0)+16>>0]|0|0)<4?(d[(c[g>>2]|0)+16>>0]|0|0)!=0:0){a=c[f>>2]|0;i=e;return a|0}c[j>>2]=c[(c[g>>2]|0)+152>>2];c[f>>2]=Gg(c[(c[g>>2]|0)+60>>2]|0,l)|0;b=c[j>>2]|0;b=lF(b|0,((b|0)<0)<<31>>31|0,c[m>>2]|0,0)|0;a=k;c[a>>2]=b;c[a+4>>2]=D;if(c[f>>2]|0){a=c[f>>2]|0;i=e;return a|0}b=l;a=k;if(!((c[b>>2]|0)!=(c[a>>2]|0)?1:(c[b+4>>2]|0)!=(c[a+4>>2]|0))){a=c[f>>2]|0;i=e;return a|0}b=l;o=c[b+4>>2]|0;a=k;n=c[a+4>>2]|0;if(!((o|0)>(n|0)|((o|0)==(n|0)?(c[b>>2]|0)>>>0>(c[a>>2]|0)>>>0:0))){n=c[j>>2]|0;n=bF(c[l>>2]|0,c[l+4>>2]|0,n|0,((n|0)<0)<<31>>31|0)|0;l=D;o=k;a=c[o+4>>2]|0;if((l|0)<(a|0)|((l|0)==(a|0)?n>>>0<=(c[o>>2]|0)>>>0:0)){c[h>>2]=c[(c[g>>2]|0)+200>>2];_E(c[h>>2]|0,0,c[j>>2]|0)|0;l=c[(c[g>>2]|0)+60>>2]|0;a=c[h>>2]|0;n=c[j>>2]|0;o=c[j>>2]|0;o=ZE(c[k>>2]|0,c[k+4>>2]|0,o|0,((o|0)<0)<<31>>31|0)|0;c[f>>2]=id(l,a,n,o,D)|0}}else{o=k;c[f>>2]=Xh(c[(c[g>>2]|0)+60>>2]|0,c[o>>2]|0,c[o+4>>2]|0)|0}if(c[f>>2]|0){o=c[f>>2]|0;i=e;return o|0}c[(c[g>>2]|0)+32>>2]=c[m>>2];o=c[f>>2]|0;i=e;return o|0}function di(e,f){e=e|0;f=f|0;var g=0,h=0,j=0,k=0;g=i;i=i+16|0;j=g+8|0;k=g+4|0;h=g;c[j>>2]=e;c[k>>2]=f;if(c[k>>2]|0){f=c[j>>2]|0;if((c[k>>2]|0)>0){hi(f,3+(b[(c[j>>2]|0)+40>>1]|0)|0);a[(c[j>>2]|0)+43>>0]=1;c[h>>2]=1;e=c[h>>2]|0;i=g;return e|0}else{c[h>>2]=(d[f+43>>0]|0)==0&1;e=c[h>>2]|0;i=g;return e|0}}if(!(a[(c[j>>2]|0)+43>>0]|0)){c[h>>2]=0;e=c[h>>2]|0;i=g;return e|0}a[(c[j>>2]|0)+43>>0]=0;if(gi(c[j>>2]|0,3+(b[(c[j>>2]|0)+40>>1]|0)|0)|0)a[(c[j>>2]|0)+43>>0]=1;c[h>>2]=(d[(c[j>>2]|0)+43>>0]|0)==0&1;e=c[h>>2]|0;i=g;return e|0}function ei(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0;f=i;i=i+16|0;h=f+8|0;j=f+4|0;g=f;c[h>>2]=b;c[j>>2]=e;c[g>>2]=0;if(!(c[c[(c[h>>2]|0)+60>>2]>>2]|0)){b=c[g>>2]|0;i=f;return b|0}if(d[(c[h>>2]|0)+13>>0]|0)e=0;else e=fi(c[(c[h>>2]|0)+60>>2]|0,c[j>>2]|0)|0;c[g>>2]=e;if((d[(c[h>>2]|0)+17>>0]|0|0)==5){b=c[g>>2]|0;i=f;return b|0}a[(c[h>>2]|0)+17>>0]=c[j>>2];b=c[g>>2]|0;i=f;return b|0}function fi(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;a=zb[c[(c[c[f>>2]>>2]|0)+32>>2]&63](c[f>>2]|0,c[e>>2]|0)|0;i=d;return a|0}function gi(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;i=i+16|0;f=e+12|0;j=e+8|0;h=e+4|0;g=e;c[j>>2]=b;c[h>>2]=d;if(a[(c[j>>2]|0)+43>>0]|0){c[f>>2]=0;b=c[f>>2]|0;i=e;return b|0}else{c[g>>2]=ii(c[(c[j>>2]|0)+4>>2]|0,c[h>>2]|0,1,6)|0;c[f>>2]=c[g>>2];b=c[f>>2]|0;i=e;return b|0}return 0}function hi(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=i;i=i+16|0;f=e+4|0;g=e;c[f>>2]=b;c[g>>2]=d;if(a[(c[f>>2]|0)+43>>0]|0){i=e;return}ii(c[(c[f>>2]|0)+4>>2]|0,c[g>>2]|0,1,5)|0;i=e;return}function ii(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;f=i;i=i+16|0;k=f+12|0;j=f+8|0;h=f+4|0;g=f;c[k>>2]=a;c[j>>2]=b;c[h>>2]=d;c[g>>2]=e;a=xb[c[(c[c[k>>2]>>2]|0)+56>>2]&7](c[k>>2]|0,c[j>>2]|0,c[h>>2]|0,c[g>>2]|0)|0;i=f;return a|0}function ji(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;f=i;i=i+16|0;g=f+8|0;h=f+4|0;j=f;c[g>>2]=b;c[h>>2]=d;c[j>>2]=e;if(a[(c[g>>2]|0)+43>>0]|0){i=f;return}ii(c[(c[g>>2]|0)+4>>2]|0,c[h>>2]|0,c[j>>2]|0,9)|0;i=f;return}function ki(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;ni(c[d>>2]|0,0,0)|0;i=b;return 0}function li(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;k=i;i=i+64|0;t=k+52|0;s=k+48|0;g=k+44|0;l=k+8|0;h=k+40|0;o=k+36|0;m=k+32|0;p=k+28|0;j=k+24|0;r=k;q=k+20|0;n=k+16|0;c[t>>2]=a;c[s>>2]=b;c[g>>2]=d;d=l;c[d>>2]=e;c[d+4>>2]=f;c[h>>2]=c[t>>2];c[o>>2]=c[s>>2];c[m>>2]=c[g>>2];d=(c[h>>2]|0)+24|0;b=l;a=l;a:do if(((c[d>>2]|0)!=(c[b>>2]|0)?1:(c[d+4>>2]|0)!=(c[b+4>>2]|0))|(c[a>>2]|0)==0&(c[a+4>>2]|0)==0){t=r;c[t>>2]=0;c[t+4>>2]=0;c[j>>2]=c[(c[h>>2]|0)+4>>2];while(1){if(!(c[j>>2]|0))break a;s=r;s=bF(c[s>>2]|0,c[s+4>>2]|0,1020,0)|0;b=D;t=l;a=c[t+4>>2]|0;if(!((b|0)<(a|0)|((b|0)==(a|0)?s>>>0<=(c[t>>2]|0)>>>0:0)))break a;s=r;s=bF(c[s>>2]|0,c[s+4>>2]|0,1020,0)|0;t=r;c[t>>2]=s;c[t+4>>2]=D;c[j>>2]=c[c[j>>2]>>2]}}else c[j>>2]=c[(c[h>>2]|0)+32>>2];while(0);t=l;t=kF(c[t>>2]|0,c[t+4>>2]|0,1020,0)|0;c[p>>2]=t;while(1){c[q>>2]=1020-(c[p>>2]|0);if((c[m>>2]|0)<(1020-(c[p>>2]|0)|0))f=c[m>>2]|0;else f=1020-(c[p>>2]|0)|0;c[n>>2]=f;dF(c[o>>2]|0,(c[j>>2]|0)+4+(c[p>>2]|0)|0,c[n>>2]|0)|0;c[o>>2]=(c[o>>2]|0)+(c[n>>2]|0);c[m>>2]=(c[m>>2]|0)-(c[q>>2]|0);c[p>>2]=0;if((c[m>>2]|0)<0){m=13;break}t=c[c[j>>2]>>2]|0;c[j>>2]=t;if(!((t|0)!=0&(c[m>>2]|0)>0)){m=13;break}}if((m|0)==13){t=l;s=c[g>>2]|0;s=bF(c[t>>2]|0,c[t+4>>2]|0,s|0,((s|0)<0)<<31>>31|0)|0;t=(c[h>>2]|0)+24|0;c[t>>2]=s;c[t+4>>2]=D;c[(c[h>>2]|0)+32>>2]=c[j>>2];i=k;return 0}return 0}function mi(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;g=i;i=i+64|0;h=g+48|0;s=g+44|0;q=g+40|0;r=g+36|0;o=g+32|0;n=g+28|0;p=g+24|0;j=g+20|0;m=g+16|0;l=g+12|0;k=g+8|0;c[s>>2]=a;c[q>>2]=b;c[r>>2]=d;a=g;c[a>>2]=e;c[a+4>>2]=f;c[o>>2]=c[s>>2];c[n>>2]=c[r>>2];c[p>>2]=c[q>>2];while(1){if((c[n>>2]|0)<=0){j=14;break}c[j>>2]=c[(c[o>>2]|0)+16>>2];s=(c[o>>2]|0)+8|0;s=kF(c[s>>2]|0,c[s+4>>2]|0,1020,0)|0;c[m>>2]=s;if((c[n>>2]|0)<(1020-(c[m>>2]|0)|0))f=c[n>>2]|0;else f=1020-(c[m>>2]|0)|0;c[l>>2]=f;if(!(c[m>>2]|0)){c[k>>2]=fc(1024)|0;if(!(c[k>>2]|0)){j=8;break}c[c[k>>2]>>2]=0;f=c[k>>2]|0;if(c[j>>2]|0)c[c[j>>2]>>2]=f;else c[(c[o>>2]|0)+4>>2]=f;c[(c[o>>2]|0)+16>>2]=c[k>>2]}dF((c[(c[o>>2]|0)+16>>2]|0)+4+(c[m>>2]|0)|0,c[p>>2]|0,c[l>>2]|0)|0;c[p>>2]=(c[p>>2]|0)+(c[l>>2]|0);c[n>>2]=(c[n>>2]|0)-(c[l>>2]|0);r=c[l>>2]|0;s=(c[o>>2]|0)+8|0;q=s;r=bF(c[q>>2]|0,c[q+4>>2]|0,r|0,((r|0)<0)<<31>>31|0)|0;c[s>>2]=r;c[s+4>>2]=D}if((j|0)==8){c[h>>2]=3082;s=c[h>>2]|0;i=g;return s|0}else if((j|0)==14){c[h>>2]=0;s=c[h>>2]|0;i=g;return s|0}return 0}function ni(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;f=i;i=i+32|0;e=f+20|0;j=f+16|0;g=f+12|0;h=f+8|0;c[e>>2]=a;a=f;c[a>>2]=b;c[a+4>>2]=d;c[j>>2]=c[e>>2];c[g>>2]=c[(c[j>>2]|0)+4>>2];while(1){if(!(c[g>>2]|0))break;c[h>>2]=c[g>>2];c[g>>2]=c[c[g>>2]>>2];hc(c[h>>2]|0)}qi(c[e>>2]|0);i=f;return 0}function oi(a,b){a=a|0;b=b|0;var d=0;d=i;i=i+16|0;c[d+4>>2]=a;c[d>>2]=b;i=d;return 0}function pi(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;i=i+16|0;g=d+8|0;f=d+4|0;e=d;c[g>>2]=a;c[f>>2]=b;c[e>>2]=c[g>>2];e=(c[e>>2]|0)+8|0;b=c[e+4>>2]|0;a=c[f>>2]|0;c[a>>2]=c[e>>2];c[a+4>>2]=b;i=d;return 0}function qi(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+16|0;e=b+4|0;d=b;c[e>>2]=a;c[d>>2]=c[e>>2];a=c[d>>2]|0;_E(a|0,0,ri()|0)|0;c[c[d>>2]>>2]=4272;i=b;return}function ri(){return 40}function si(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;h=i;i=i+32|0;g=h+24|0;j=h+20|0;m=h+16|0;e=h+12|0;l=h+8|0;k=h+4|0;f=h;c[g>>2]=a;c[j>>2]=b;c[m>>2]=d;c[e>>2]=c[(c[g>>2]|0)+40>>2];if(c[e>>2]|0){a=c[e>>2]|0;i=h;return a|0}if((c[m>>2]|0)>=(c[(c[g>>2]|0)+96>>2]|0)){a=c[e>>2]|0;i=h;return a|0}c[k>>2]=(c[m>>2]|0)+((c[j>>2]|0)==1?0:1);c[l>>2]=c[k>>2];while(1){if((c[l>>2]|0)>=(c[(c[g>>2]|0)+96>>2]|0))break;_g(c[(c[(c[g>>2]|0)+92>>2]|0)+((c[l>>2]|0)*48|0)+16>>2]|0);c[l>>2]=(c[l>>2]|0)+1}c[(c[g>>2]|0)+96>>2]=c[k>>2];if((c[j>>2]|0)!=1){if((ai(c[g>>2]|0)|0)==0?(c[c[(c[g>>2]|0)+64>>2]>>2]|0)==0:0){a=c[e>>2]|0;i=h;return a|0}if(!(c[k>>2]|0))j=0;else j=(c[(c[g>>2]|0)+92>>2]|0)+(((c[k>>2]|0)-1|0)*48|0)|0;c[f>>2]=j;c[e>>2]=Pi(c[g>>2]|0,c[f>>2]|0)|0;a=c[e>>2]|0;i=h;return a|0}if(c[k>>2]|0){a=c[e>>2]|0;i=h;return a|0}if(!(c[c[(c[g>>2]|0)+68>>2]>>2]|0)){a=c[e>>2]|0;i=h;return a|0}if(Wh(c[(c[g>>2]|0)+68>>2]|0)|0)c[e>>2]=Xh(c[(c[g>>2]|0)+68>>2]|0,0,0)|0;c[(c[g>>2]|0)+52>>2]=0;a=c[e>>2]|0;i=h;return a|0}function ti(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;l=i;i=i+64|0;n=l+8|0;g=l+56|0;m=l+52|0;t=l+48|0;q=l;r=l+44|0;p=l+40|0;o=l+36|0;j=l+32|0;k=l+28|0;h=l+24|0;s=l+20|0;f=l+16|0;c[g>>2]=b;c[m>>2]=e;c[t>>2]=c[c[g>>2]>>2];c[o>>2]=0;c[k>>2]=1;c[h>>2]=0;c[f>>2]=0;c[j>>2]=Gg(c[(c[g>>2]|0)+64>>2]|0,q)|0;a:do if(!(c[j>>2]|0)){c[h>>2]=c[(c[g>>2]|0)+200>>2];c[j>>2]=ui(c[(c[g>>2]|0)+64>>2]|0,c[h>>2]|0,(c[(c[c[g>>2]>>2]|0)+8>>2]|0)+1|0)|0;if((c[j>>2]|0)==0?(a[c[h>>2]>>0]|0)!=0:0)c[j>>2]=vi(c[t>>2]|0,c[h>>2]|0,0,k)|0;c[h>>2]=0;if((c[j>>2]|0)==0&(c[k>>2]|0)!=0){b=(c[g>>2]|0)+72|0;c[b>>2]=0;c[b+4>>2]=0;c[s>>2]=c[m>>2];b:while(1){b=q;c[j>>2]=wi(c[g>>2]|0,c[m>>2]|0,c[b>>2]|0,c[b+4>>2]|0,r,o)|0;if(c[j>>2]|0){o=8;break}if((c[r>>2]|0)==-1){t=q;t=ZE(c[t>>2]|0,c[t+4>>2]|0,c[(c[g>>2]|0)+148>>2]|0,0)|0;b=(c[(c[g>>2]|0)+152>>2]|0)+8|0;b=jF(t|0,D|0,b|0,((b|0)<0)<<31>>31|0)|0;c[r>>2]=b}if(!((c[r>>2]|0)!=0|(c[m>>2]|0)!=0)?(t=(c[g>>2]|0)+80|0,t=bF(c[t>>2]|0,c[t+4>>2]|0,c[(c[g>>2]|0)+148>>2]|0,0)|0,b=(c[g>>2]|0)+72|0,(t|0)==(c[b>>2]|0)?(D|0)==(c[b+4>>2]|0):0):0){b=q;t=(c[g>>2]|0)+72|0;t=ZE(c[b>>2]|0,c[b+4>>2]|0,c[t>>2]|0,c[t+4>>2]|0)|0;b=(c[(c[g>>2]|0)+152>>2]|0)+8|0;b=jF(t|0,D|0,b|0,((b|0)<0)<<31>>31|0)|0;c[r>>2]=b}b=(c[g>>2]|0)+72|0;if((c[b+4>>2]|0)==0?(c[b>>2]|0)==(c[(c[g>>2]|0)+148>>2]|0):0){c[j>>2]=ci(c[g>>2]|0,c[o>>2]|0)|0;if(c[j>>2]|0)break a;c[(c[g>>2]|0)+24>>2]=c[o>>2]}c[p>>2]=0;while(1){if((c[p>>2]|0)>>>0>=(c[r>>2]|0)>>>0)continue b;if(c[s>>2]|0){Ig(c[g>>2]|0);c[s>>2]=0}c[j>>2]=xi(c[g>>2]|0,(c[g>>2]|0)+72|0,0,1,0)|0;if(c[j>>2]|0)break;c[f>>2]=(c[f>>2]|0)+1;c[p>>2]=(c[p>>2]|0)+1}if((c[j>>2]|0)!=101){o=26;break}e=q;t=c[e+4>>2]|0;b=(c[g>>2]|0)+72|0;c[b>>2]=c[e>>2];c[b+4>>2]=t}if((o|0)==8){if((c[j>>2]|0)!=101)break;c[j>>2]=0;break}else if((o|0)==26){if((c[j>>2]|0)!=522)break;c[j>>2]=0;break}}}while(0);a[(c[g>>2]|0)+18>>0]=a[(c[g>>2]|0)+12>>0]|0;if(!(c[j>>2]|0)){c[h>>2]=c[(c[g>>2]|0)+200>>2];c[j>>2]=ui(c[(c[g>>2]|0)+64>>2]|0,c[h>>2]|0,(c[(c[c[g>>2]>>2]|0)+8>>2]|0)+1|0)|0}do if(!(c[j>>2]|0)){if((d[(c[g>>2]|0)+16>>0]|0)<4?(d[(c[g>>2]|0)+16>>0]|0)!=0:0)break;c[j>>2]=kd(c[g>>2]|0,0)|0}while(0);if(!(c[j>>2]|0))c[j>>2]=Uh(c[g>>2]|0,(a[c[h>>2]>>0]|0)!=0&1,0)|0;if((c[j>>2]|0)==0?(c[k>>2]|0)!=0?(a[c[h>>2]>>0]|0)!=0:0:0)c[j>>2]=yi(c[g>>2]|0,c[h>>2]|0)|0;if(!((c[m>>2]|0)!=0&(c[f>>2]|0)!=0)){b=c[g>>2]|0;zi(b);b=c[j>>2]|0;i=l;return b|0}b=c[(c[g>>2]|0)+172>>2]|0;c[n>>2]=c[f>>2];c[n+4>>2]=b;tc(539,4352,n);b=c[g>>2]|0;zi(b);b=c[j>>2]|0;i=l;return b|0}function ui(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;j=i;i=i+48|0;h=j+36|0;k=j+32|0;l=j+28|0;q=j+24|0;g=j+20|0;f=j+16|0;n=j;p=j+12|0;m=j+8|0;o=j+40|0;c[k>>2]=b;c[l>>2]=d;c[q>>2]=e;a[c[l>>2]>>0]=0;e=Gg(c[k>>2]|0,n)|0;c[g>>2]=e;b=n;d=c[b+4>>2]|0;if((((((!(0!=(e|0)|((d|0)<0|(d|0)==0&(c[b>>2]|0)>>>0<16))?(d=c[k>>2]|0,b=n,b=ZE(c[b>>2]|0,c[b+4>>2]|0,16,0)|0,b=Fi(d,b,D,f)|0,c[g>>2]=b,0==(b|0)):0)?!((c[f>>2]|0)==0?1:(c[f>>2]|0)>>>0>=(c[q>>2]|0)>>>0):0)?(d=c[k>>2]|0,b=n,b=ZE(c[b>>2]|0,c[b+4>>2]|0,12,0)|0,b=Fi(d,b,D,p)|0,c[g>>2]=b,0==(b|0)):0)?(d=c[k>>2]|0,b=n,b=ZE(c[b>>2]|0,c[b+4>>2]|0,8,0)|0,b=Ei(d,o,8,b,D)|0,c[g>>2]=b,0==(b|0)):0)?(TE(o,4384,8)|0)==0:0)?(o=c[k>>2]|0,q=c[l>>2]|0,d=c[f>>2]|0,b=n,b=ZE(c[b>>2]|0,c[b+4>>2]|0,16,0)|0,b=ZE(b|0,D|0,c[f>>2]|0,0)|0,b=Ei(o,q,d,b,D)|0,c[g>>2]=b,0==(b|0)):0){c[m>>2]=0;while(1){if((c[m>>2]|0)>>>0>=(c[f>>2]|0)>>>0)break;c[p>>2]=(c[p>>2]|0)-(a[(c[l>>2]|0)+(c[m>>2]|0)>>0]|0);c[m>>2]=(c[m>>2]|0)+1}if(c[p>>2]|0)c[f>>2]=0;a[(c[l>>2]|0)+(c[f>>2]|0)>>0]=0;c[h>>2]=0;b=c[h>>2]|0;i=j;return b|0}c[h>>2]=c[g>>2];b=c[h>>2]|0;i=j;return b|0}function vi(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;f=i;i=i+16|0;k=f+12|0;j=f+8|0;h=f+4|0;g=f;c[k>>2]=a;c[j>>2]=b;c[h>>2]=d;c[g>>2]=e;a=xb[c[(c[k>>2]|0)+32>>2]&7](c[k>>2]|0,c[j>>2]|0,c[h>>2]|0,c[g>>2]|0)|0;i=f;return a|0}function wi(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;p=i;i=i+64|0;j=p+44|0;k=p+40|0;s=p+36|0;t=p+8|0;q=p+32|0;h=p+28|0;n=p+24|0;r=p+48|0;l=p;m=p+20|0;o=p+16|0;c[k>>2]=a;c[s>>2]=b;b=t;c[b>>2]=d;c[b+4>>2]=e;c[q>>2]=f;c[h>>2]=g;e=Oi(c[k>>2]|0)|0;b=(c[k>>2]|0)+72|0;c[b>>2]=e;c[b+4>>2]=D;b=(c[k>>2]|0)+72|0;b=bF(c[b>>2]|0,c[b+4>>2]|0,c[(c[k>>2]|0)+148>>2]|0,0)|0;e=D;a=t;d=c[a+4>>2]|0;if((e|0)>(d|0)|((e|0)==(d|0)?b>>>0>(c[a>>2]|0)>>>0:0)){c[j>>2]=101;t=c[j>>2]|0;i=p;return t|0}b=(c[k>>2]|0)+72|0;a=c[b+4>>2]|0;t=l;c[t>>2]=c[b>>2];c[t+4>>2]=a;if(!((c[s>>2]|0)==0?(a=l,t=(c[k>>2]|0)+80|0,!((c[a>>2]|0)!=(c[t>>2]|0)?1:(c[a+4>>2]|0)!=(c[t+4>>2]|0))):0)){t=l;c[n>>2]=Ei(c[(c[k>>2]|0)+64>>2]|0,r,8,c[t>>2]|0,c[t+4>>2]|0)|0;if(c[n>>2]|0){c[j>>2]=c[n>>2];t=c[j>>2]|0;i=p;return t|0}if(TE(r,4384,8)|0){c[j>>2]=101;t=c[j>>2]|0;i=p;return t|0}}a=c[(c[k>>2]|0)+64>>2]|0;t=l;t=bF(c[t>>2]|0,c[t+4>>2]|0,8,0)|0;t=Fi(a,t,D,c[q>>2]|0)|0;c[n>>2]=t;if((0==(t|0)?(a=c[(c[k>>2]|0)+64>>2]|0,t=l,t=bF(c[t>>2]|0,c[t+4>>2]|0,12,0)|0,t=Fi(a,t,D,(c[k>>2]|0)+48|0)|0,c[n>>2]=t,0==(t|0)):0)?(a=c[(c[k>>2]|0)+64>>2]|0,t=l,t=bF(c[t>>2]|0,c[t+4>>2]|0,16,0)|0,t=Fi(a,t,D,c[h>>2]|0)|0,c[n>>2]=t,0==(t|0)):0){t=(c[k>>2]|0)+72|0;do if((c[t>>2]|0)==0&(c[t+4>>2]|0)==0){a=c[(c[k>>2]|0)+64>>2]|0;t=l;t=bF(c[t>>2]|0,c[t+4>>2]|0,20,0)|0;t=Fi(a,t,D,o)|0;c[n>>2]=t;if(0==(t|0)?(a=c[(c[k>>2]|0)+64>>2]|0,t=l,t=bF(c[t>>2]|0,c[t+4>>2]|0,24,0)|0,t=Fi(a,t,D,m)|0,c[n>>2]=t,0==(t|0)):0){if(!(c[m>>2]|0))c[m>>2]=c[(c[k>>2]|0)+152>>2];if((!((c[m>>2]|0)>>>0<512|(c[o>>2]|0)>>>0<32|(c[m>>2]|0)>>>0>65536|(c[o>>2]|0)>>>0>65536)?((c[m>>2]|0)-1&c[m>>2]|0)==0:0)?((c[o>>2]|0)-1&c[o>>2]|0)==0:0){c[n>>2]=Eg(c[k>>2]|0,m,-1)|0;c[(c[k>>2]|0)+148>>2]=c[o>>2];break}c[j>>2]=101;t=c[j>>2]|0;i=p;return t|0}c[j>>2]=c[n>>2];t=c[j>>2]|0;i=p;return t|0}while(0);t=(c[k>>2]|0)+72|0;a=t;a=bF(c[a>>2]|0,c[a+4>>2]|0,c[(c[k>>2]|0)+148>>2]|0,0)|0;c[t>>2]=a;c[t+4>>2]=D;c[j>>2]=c[n>>2];t=c[j>>2]|0;i=p;return t|0}c[j>>2]=c[n>>2];t=c[j>>2]|0;i=p;return t|0}function xi(f,g,h,j,k){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;m=i;i=i+64|0;l=m+60|0;r=m+56|0;w=m+52|0;A=m+48|0;x=m+44|0;q=m+40|0;o=m+36|0;n=m+32|0;s=m+28|0;z=m+24|0;u=m+20|0;B=m+16|0;v=m+12|0;t=m;p=m+8|0;c[r>>2]=f;c[w>>2]=g;c[A>>2]=h;c[x>>2]=j;c[q>>2]=k;c[u>>2]=c[(c[r>>2]|0)+200>>2];f=c[r>>2]|0;if(c[x>>2]|0)f=c[f+64>>2]|0;else f=c[f+68>>2]|0;c[B>>2]=f;g=c[w>>2]|0;c[o>>2]=Fi(c[B>>2]|0,c[g>>2]|0,c[g+4>>2]|0,s)|0;if(c[o>>2]|0){c[l>>2]=c[o>>2];g=c[l>>2]|0;i=m;return g|0}k=c[B>>2]|0;j=c[u>>2]|0;h=c[(c[r>>2]|0)+152>>2]|0;g=c[w>>2]|0;g=bF(c[g>>2]|0,c[g+4>>2]|0,4,0)|0;c[o>>2]=Ei(k,j,h,g,D)|0;if(c[o>>2]|0){c[l>>2]=c[o>>2];g=c[l>>2]|0;i=m;return g|0}h=(c[(c[r>>2]|0)+152>>2]|0)+4+(c[x>>2]<<2)|0;g=c[w>>2]|0;j=g;h=bF(c[j>>2]|0,c[j+4>>2]|0,h|0,((h|0)<0)<<31>>31|0)|0;c[g>>2]=h;c[g+4>>2]=D;if((c[s>>2]|0)!=0?(c[s>>2]|0)!=(((c[282]|0)/(c[(c[r>>2]|0)+152>>2]|0)|0)+1|0):0){if((c[s>>2]|0)>>>0<=(c[(c[r>>2]|0)+24>>2]|0)>>>0?(Yg(c[A>>2]|0,c[s>>2]|0)|0)==0:0){if(c[x>>2]|0){h=c[B>>2]|0;g=c[w>>2]|0;g=ZE(c[g>>2]|0,c[g+4>>2]|0,4,0)|0;c[o>>2]=Fi(h,g,D,z)|0;if(c[o>>2]|0){c[l>>2]=c[o>>2];g=c[l>>2]|0;i=m;return g|0}if((c[q>>2]|0)==0?(g=Gi(c[r>>2]|0,c[u>>2]|0)|0,(g|0)!=(c[z>>2]|0)):0){c[l>>2]=101;g=c[l>>2]|0;i=m;return g|0}}if((c[A>>2]|0)!=0?(g=Wg(c[A>>2]|0,c[s>>2]|0)|0,c[o>>2]=g,(g|0)!=0):0){c[l>>2]=c[o>>2];g=c[l>>2]|0;i=m;return g|0}if((c[s>>2]|0)==1?(b[(c[r>>2]|0)+142>>1]|0)!=(d[(c[u>>2]|0)+20>>0]|0):0)b[(c[r>>2]|0)+142>>1]=d[(c[u>>2]|0)+20>>0]|0;if(ai(c[r>>2]|0)|0)c[n>>2]=0;else c[n>>2]=Hi(c[r>>2]|0,c[s>>2]|0)|0;if(c[x>>2]|0){if(d[(c[r>>2]|0)+7>>0]|0)z=1;else{g=c[w>>2]|0;j=c[g+4>>2]|0;z=(c[r>>2]|0)+80|0;h=c[z+4>>2]|0;z=(j|0)<(h|0)|((j|0)==(h|0)?(c[g>>2]|0)>>>0<=(c[z>>2]|0)>>>0:0)}c[v>>2]=z&1}else{if(!(c[n>>2]|0))z=1;else z=0==(e[(c[n>>2]|0)+24>>1]&4|0);c[v>>2]=z&1}do if(c[c[(c[r>>2]|0)+60>>2]>>2]|0){if((d[(c[r>>2]|0)+16>>0]|0)>=4){if(!(c[v>>2]|0)){y=44;break}}else if(!((c[v>>2]|0)!=0?(d[(c[r>>2]|0)+16>>0]|0)==0:0)){y=44;break}h=c[(c[r>>2]|0)+152>>2]|0;h=lF((c[s>>2]|0)-1|0,0,h|0,((h|0)<0)<<31>>31|0)|0;g=t;c[g>>2]=h;c[g+4>>2]=D;g=t;c[o>>2]=id(c[(c[r>>2]|0)+60>>2]|0,c[u>>2]|0,c[(c[r>>2]|0)+152>>2]|0,c[g>>2]|0,c[g+4>>2]|0)|0;if((c[s>>2]|0)>>>0>(c[(c[r>>2]|0)+32>>2]|0)>>>0)c[(c[r>>2]|0)+32>>2]=c[s>>2];if(c[(c[r>>2]|0)+88>>2]|0){Ii(c[(c[r>>2]|0)+88>>2]|0,c[s>>2]|0,c[u>>2]|0);c[u>>2]=c[u>>2]}}else y=44;while(0);do if((y|0)==44?(c[x>>2]|0)==0&(c[n>>2]|0)==0:0){g=(c[r>>2]|0)+20|0;a[g>>0]=d[g>>0]|2;c[o>>2]=Xc(c[r>>2]|0,c[s>>2]|0,n,1)|0;g=(c[r>>2]|0)+20|0;a[g>>0]=d[g>>0]&-3;if(!(c[o>>2]|0)){g=(c[n>>2]|0)+24|0;b[g>>1]=e[g>>1]&-9;Ji(c[n>>2]|0);break}c[l>>2]=c[o>>2];g=c[l>>2]|0;i=m;return g|0}while(0);if(c[n>>2]|0){c[p>>2]=c[(c[n>>2]|0)+4>>2];dF(c[p>>2]|0,c[u>>2]|0,c[(c[r>>2]|0)+152>>2]|0)|0;rb[c[(c[r>>2]|0)+196>>2]&31](c[n>>2]|0);do if(c[x>>2]|0){if((c[q>>2]|0)!=0?(h=c[w>>2]|0,k=c[h+4>>2]|0,g=(c[r>>2]|0)+80|0,j=c[g+4>>2]|0,!((k|0)<(j|0)|((k|0)==(j|0)?(c[h>>2]|0)>>>0<=(c[g>>2]|0)>>>0:0))):0)break;Rg(c[n>>2]|0)}while(0);if((c[s>>2]|0)==1){q=(c[r>>2]|0)+100|0;r=(c[p>>2]|0)+24|0;p=q+16|0;do{a[q>>0]=a[r>>0]|0;q=q+1|0;r=r+1|0}while((q|0)<(p|0))}Ki(c[n>>2]|0)}c[l>>2]=c[o>>2];g=c[l>>2]|0;i=m;return g|0}c[l>>2]=0;g=c[l>>2]|0;i=m;return g|0}c[l>>2]=101;g=c[l>>2]|0;i=m;return g|0}function yi(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;s=i;i=i+64|0;t=s+60|0;j=s+56|0;h=s+52|0;g=s+48|0;m=s+44|0;f=s+40|0;e=s+36|0;r=s;p=s+32|0;l=s+28|0;n=s+24|0;q=s+16|0;k=s+12|0;o=s+8|0;c[t>>2]=b;c[j>>2]=d;c[h>>2]=c[c[t>>2]>>2];c[e>>2]=0;b=c[(c[h>>2]|0)+4>>2]<<1;c[m>>2]=Mc(b,((b|0)<0)<<31>>31)|0;c[f>>2]=(c[m>>2]|0)+(c[(c[h>>2]|0)+4>>2]|0);if(c[m>>2]|0){c[s+20>>2]=16385;c[g>>2]=Di(c[h>>2]|0,c[j>>2]|0,c[m>>2]|0,16385,0)|0}else c[g>>2]=7;a:do if((c[g>>2]|0)==0?(c[g>>2]=Gg(c[m>>2]|0,r)|0,(c[g>>2]|0)==0):0){c[n>>2]=(c[(c[h>>2]|0)+8>>2]|0)+1;b=r;t=c[n>>2]|0;t=bF(c[b>>2]|0,c[b+4>>2]|0,t|0,((t|0)<0)<<31>>31|0)|0;t=bF(t|0,D|0,1,0)|0;c[e>>2]=gc(t,D)|0;if(!(c[e>>2]|0)){c[g>>2]=7;break}t=r;t=bF(c[t>>2]|0,c[t+4>>2]|0,1,0)|0;c[l>>2]=(c[e>>2]|0)+t;c[g>>2]=Ei(c[m>>2]|0,c[e>>2]|0,c[r>>2]|0,0,0)|0;if(!(c[g>>2]|0)){a[(c[e>>2]|0)+(c[r>>2]|0)>>0]=0;c[p>>2]=c[e>>2];while(1){b=(c[p>>2]|0)-(c[e>>2]|0)|0;u=((b|0)<0)<<31>>31;t=r;d=c[t+4>>2]|0;if(!((u|0)<(d|0)|((u|0)==(d|0)?b>>>0<(c[t>>2]|0)>>>0:0)))break;c[g>>2]=vi(c[h>>2]|0,c[p>>2]|0,0,q)|0;if(c[g>>2]|0)break a;if(c[q>>2]|0){c[o>>2]=2049;c[g>>2]=Di(c[h>>2]|0,c[p>>2]|0,c[f>>2]|0,c[o>>2]|0,0)|0;if(c[g>>2]|0)break a;c[g>>2]=ui(c[f>>2]|0,c[l>>2]|0,c[n>>2]|0)|0;Rh(c[f>>2]|0)|0;if(c[g>>2]|0)break a;if(a[c[l>>2]>>0]|0)d=(UE(c[l>>2]|0,c[j>>2]|0)|0)==0;else d=0;c[k>>2]=d&1;if(c[k>>2]|0)break a}u=(Mb(c[p>>2]|0)|0)+1|0;c[p>>2]=(c[p>>2]|0)+u}Rh(c[m>>2]|0)|0;c[g>>2]=_h(c[h>>2]|0,c[j>>2]|0,0)|0}}while(0);hc(c[e>>2]|0);if(!(c[m>>2]|0)){u=c[g>>2]|0;i=s;return u|0}Rh(c[m>>2]|0)|0;hc(c[m>>2]|0);u=c[g>>2]|0;i=s;return u|0}function zi(a){a=a|0;var b=0,e=0;e=i;i=i+16|0;b=e;c[b>>2]=a;if((d[(c[b>>2]|0)+12>>0]|0|0)==0?((Ai(c[(c[b>>2]|0)+60>>2]|0)|0)&4096|0)==0:0){a=Bi(c[(c[b>>2]|0)+60>>2]|0)|0;c[(c[b>>2]|0)+148>>2]=a;i=e;return}c[(c[b>>2]|0)+148>>2]=512;i=e;return}function Ai(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;a=ub[c[(c[c[d>>2]>>2]|0)+48>>2]&31](c[d>>2]|0)|0;i=b;return a|0}function Bi(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+16|0;e=b+4|0;d=b;c[e>>2]=a;c[d>>2]=Ci(c[e>>2]|0)|0;if((c[d>>2]|0)>=32){if((c[d>>2]|0)>65536)c[d>>2]=65536}else c[d>>2]=512;i=b;return c[d>>2]|0}function Ci(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+16|0;e=b+4|0;d=b;c[e>>2]=a;c[d>>2]=c[(c[c[e>>2]>>2]|0)+44>>2];if(!(c[d>>2]|0)){e=4096;i=b;return e|0}e=ub[c[d>>2]&31](c[e>>2]|0)|0;i=b;return e|0}function Di(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;h=i;i=i+32|0;n=h+20|0;m=h+16|0;l=h+12|0;k=h+8|0;j=h+4|0;g=h;c[n>>2]=a;c[m>>2]=b;c[l>>2]=d;c[k>>2]=e;c[j>>2]=f;c[g>>2]=Ab[c[(c[n>>2]|0)+24>>2]&15](c[n>>2]|0,c[m>>2]|0,c[l>>2]|0,c[k>>2]&556927,c[j>>2]|0)|0;i=h;return c[g>>2]|0}function Ei(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;g=i;i=i+32|0;k=g+16|0;j=g+12|0;h=g+8|0;l=g;c[k>>2]=a;c[j>>2]=b;c[h>>2]=d;a=l;c[a>>2]=e;c[a+4>>2]=f;a=l;a=Ab[c[(c[c[k>>2]>>2]|0)+8>>2]&15](c[k>>2]|0,c[j>>2]|0,c[h>>2]|0,c[a>>2]|0,c[a+4>>2]|0)|0;i=g;return a|0}function Fi(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;f=i;i=i+32|0;k=f+16|0;l=f;j=f+12|0;h=f+20|0;g=f+8|0;c[k>>2]=a;a=l;c[a>>2]=b;c[a+4>>2]=d;c[j>>2]=e;a=l;c[g>>2]=Ei(c[k>>2]|0,h,4,c[a>>2]|0,c[a+4>>2]|0)|0;if(c[g>>2]|0){l=c[g>>2]|0;i=f;return l|0}l=Hh(h)|0;c[c[j>>2]>>2]=l;l=c[g>>2]|0;i=f;return l|0}function Gi(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0;e=i;i=i+16|0;j=e+12|0;h=e+8|0;f=e+4|0;g=e;c[j>>2]=a;c[h>>2]=b;c[f>>2]=c[(c[j>>2]|0)+48>>2];c[g>>2]=(c[(c[j>>2]|0)+152>>2]|0)-200;while(1){if((c[g>>2]|0)<=0)break;c[f>>2]=(c[f>>2]|0)+(d[(c[h>>2]|0)+(c[g>>2]|0)>>0]|0);c[g>>2]=(c[g>>2]|0)-200}i=e;return c[f>>2]|0}function Hi(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;i=i+16|0;g=d+8|0;f=d+4|0;e=d;c[g>>2]=a;c[f>>2]=b;c[e>>2]=Li(c[(c[g>>2]|0)+204>>2]|0,c[f>>2]|0,0)|0;a=Mi(c[(c[g>>2]|0)+204>>2]|0,c[f>>2]|0,c[e>>2]|0)|0;i=d;return a|0}function Ii(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;e=i;i=i+32|0;k=e+16|0;g=e+12|0;h=e+8|0;f=e+4|0;j=e;c[k>>2]=a;c[g>>2]=b;c[h>>2]=d;c[f>>2]=c[k>>2];while(1){if(!(c[f>>2]|0))break;if(((Qc(c[(c[f>>2]|0)+28>>2]|0)|0)==0?(c[g>>2]|0)>>>0<(c[(c[f>>2]|0)+16>>2]|0)>>>0:0)?(c[j>>2]=Yc(c[f>>2]|0,c[g>>2]|0,c[h>>2]|0,1)|0,(c[j>>2]|0)!=0):0)c[(c[f>>2]|0)+28>>2]=c[j>>2];c[f>>2]=c[(c[f>>2]|0)+44>>2]}i=e;return}function Ji(a){a=a|0;var d=0,f=0;d=i;i=i+16|0;f=d;c[f>>2]=a;a=(c[f>>2]|0)+24|0;b[a>>1]=(e[a>>1]|0)&-33;if((e[(c[f>>2]|0)+24>>1]|0)&2){i=d;return}a=(c[f>>2]|0)+24|0;b[a>>1]=e[a>>1]|0|2;Sg(c[f>>2]|0,2);i=d;return}function Ki(a){a=a|0;var d=0,f=0;d=i;i=i+16|0;f=d;c[f>>2]=a;a=(c[f>>2]|0)+26|0;b[a>>1]=(b[a>>1]|0)+ -1<<16>>16;if(b[(c[f>>2]|0)+26>>1]|0){i=d;return}a=(c[(c[f>>2]|0)+28>>2]|0)+12|0;c[a>>2]=(c[a>>2]|0)+ -1;a=c[f>>2]|0;if(!(e[(c[f>>2]|0)+24>>1]&2)){Tg(a);i=d;return}if(!(c[a+36>>2]|0)){i=d;return}Sg(c[f>>2]|0,3);i=d;return}function Li(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;f=i;i=i+16|0;j=f+12|0;h=f+8|0;k=f+4|0;g=f;c[j>>2]=a;c[h>>2]=b;c[k>>2]=e;c[g>>2]=c[k>>2]&(d[(c[j>>2]|0)+29>>0]|0);a=pb[c[38640+132>>2]&31](c[(c[j>>2]|0)+40>>2]|0,c[h>>2]|0,c[g>>2]|0)|0;i=f;return a|0}function Mi(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;f=i;i=i+32|0;g=f+16|0;h=f+12|0;j=f+8|0;k=f+4|0;l=f;c[h>>2]=a;c[j>>2]=d;c[k>>2]=e;if(!(c[k>>2]|0)){c[g>>2]=0;a=c[g>>2]|0;i=f;return a|0}c[l>>2]=c[(c[k>>2]|0)+4>>2];if(!(c[c[l>>2]>>2]|0)){c[g>>2]=Ni(c[h>>2]|0,c[j>>2]|0,c[k>>2]|0)|0;a=c[g>>2]|0;i=f;return a|0}if(!(b[(c[l>>2]|0)+26>>1]|0)){a=(c[h>>2]|0)+12|0;c[a>>2]=(c[a>>2]|0)+1}a=(c[l>>2]|0)+26|0;b[a>>1]=(b[a>>1]|0)+1<<16>>16;if((c[j>>2]|0)==1)c[(c[h>>2]|0)+44>>2]=c[l>>2];c[g>>2]=c[l>>2];a=c[g>>2]|0;i=f;return a|0}function Ni(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;j=i;i=i+16|0;g=j+12|0;h=j+8|0;e=j+4|0;f=j;c[g>>2]=a;c[h>>2]=b;c[e>>2]=d;c[f>>2]=c[(c[e>>2]|0)+4>>2];b=(c[f>>2]|0)+0|0;d=b+40|0;do{c[b>>2]=0;b=b+4|0}while((b|0)<(d|0));c[c[f>>2]>>2]=c[e>>2];c[(c[f>>2]|0)+4>>2]=c[c[e>>2]>>2];c[(c[f>>2]|0)+8>>2]=(c[f>>2]|0)+40;_E(c[(c[f>>2]|0)+8>>2]|0,0,c[(c[g>>2]|0)+24>>2]|0)|0;c[(c[f>>2]|0)+28>>2]=c[g>>2];c[(c[f>>2]|0)+20>>2]=c[h>>2];a=Mi(c[g>>2]|0,c[h>>2]|0,c[e>>2]|0)|0;i=j;return a|0}function Oi(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;b=i;i=i+32|0;f=b+16|0;d=b+8|0;e=b;c[f>>2]=a;h=d;c[h>>2]=0;c[h+4>>2]=0;h=(c[f>>2]|0)+72|0;g=c[h+4>>2]|0;a=e;c[a>>2]=c[h>>2];c[a+4>>2]=g;a=e;if(!((c[a>>2]|0)!=0|(c[a+4>>2]|0)!=0)){g=d;h=g;h=c[h>>2]|0;g=g+4|0;g=c[g>>2]|0;D=g;i=b;return h|0}h=e;h=ZE(c[h>>2]|0,c[h+4>>2]|0,1,0)|0;h=jF(h|0,D|0,c[(c[f>>2]|0)+148>>2]|0,0)|0;h=bF(h|0,D|0,1,0)|0;h=lF(h|0,D|0,c[(c[f>>2]|0)+148>>2]|0,0)|0;g=d;c[g>>2]=h;c[g+4>>2]=D;g=d;h=g;h=c[h>>2]|0;g=g+4|0;g=c[g>>2]|0;D=g;i=b;return h|0}function Pi(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;g=i;i=i+64|0;o=g+56|0;h=g+52|0;j=g+48|0;p=g+16|0;s=g+8|0;l=g+44|0;n=g+40|0;e=g+36|0;q=g+32|0;r=g+28|0;k=g+24|0;m=g;c[h>>2]=b;c[j>>2]=d;c[l>>2]=0;c[n>>2]=0;if((c[j>>2]|0)!=0?(c[n>>2]=Vg(c[(c[j>>2]|0)+20>>2]|0)|0,(c[n>>2]|0)==0):0){c[o>>2]=7;b=c[o>>2]|0;i=g;return b|0}if(c[j>>2]|0)d=c[(c[j>>2]|0)+20>>2]|0;else d=c[(c[h>>2]|0)+28>>2]|0;c[(c[h>>2]|0)+24>>2]=d;a[(c[h>>2]|0)+18>>0]=a[(c[h>>2]|0)+12>>0]|0;if((c[j>>2]|0)==0?(ai(c[h>>2]|0)|0)!=0:0){c[o>>2]=Qi(c[h>>2]|0)|0;b=c[o>>2]|0;i=g;return b|0}t=(c[h>>2]|0)+72|0;d=c[t+4>>2]|0;b=p;c[b>>2]=c[t>>2];c[b+4>>2]=d;a:do if((c[j>>2]|0)!=0?(ai(c[h>>2]|0)|0)==0:0){t=(c[j>>2]|0)+8|0;if((c[t>>2]|0)!=0|(c[t+4>>2]|0)!=0){d=(c[j>>2]|0)+8|0;b=c[d>>2]|0;d=c[d+4>>2]|0}else{d=p;b=c[d>>2]|0;d=c[d+4>>2]|0}t=s;c[t>>2]=b;c[t+4>>2]=d;d=c[j>>2]|0;b=c[d+4>>2]|0;t=(c[h>>2]|0)+72|0;c[t>>2]=c[d>>2];c[t+4>>2]=b;while(1){if(c[l>>2]|0)break a;b=(c[h>>2]|0)+72|0;u=c[b+4>>2]|0;t=s;d=c[t+4>>2]|0;if(!((u|0)<(d|0)|((u|0)==(d|0)?(c[b>>2]|0)>>>0<(c[t>>2]|0)>>>0:0)))break a;c[l>>2]=xi(c[h>>2]|0,(c[h>>2]|0)+72|0,c[n>>2]|0,1,1)|0}}else f=19;while(0);if((f|0)==19){u=(c[h>>2]|0)+72|0;c[u>>2]=0;c[u+4>>2]=0}b:while(1){if(c[l>>2]|0)break;t=(c[h>>2]|0)+72|0;d=c[t+4>>2]|0;u=p;b=c[u+4>>2]|0;if(!((d|0)<(b|0)|((d|0)==(b|0)?(c[t>>2]|0)>>>0<(c[u>>2]|0)>>>0:0)))break;c[q>>2]=0;u=p;c[l>>2]=wi(c[h>>2]|0,0,c[u>>2]|0,c[u+4>>2]|0,q,r)|0;if((c[q>>2]|0)==0?(t=(c[h>>2]|0)+80|0,t=bF(c[t>>2]|0,c[t+4>>2]|0,c[(c[h>>2]|0)+148>>2]|0,0)|0,u=(c[h>>2]|0)+72|0,(t|0)==(c[u>>2]|0)?(D|0)==(c[u+4>>2]|0):0):0){u=p;t=(c[h>>2]|0)+72|0;t=ZE(c[u>>2]|0,c[u+4>>2]|0,c[t>>2]|0,c[t+4>>2]|0)|0;u=(c[(c[h>>2]|0)+152>>2]|0)+8|0;u=jF(t|0,D|0,u|0,((u|0)<0)<<31>>31|0)|0;c[q>>2]=u}c[e>>2]=0;while(1){if(c[l>>2]|0)continue b;if((c[e>>2]|0)>>>0>=(c[q>>2]|0)>>>0)continue b;t=(c[h>>2]|0)+72|0;d=c[t+4>>2]|0;u=p;b=c[u+4>>2]|0;if(!((d|0)<(b|0)|((d|0)==(b|0)?(c[t>>2]|0)>>>0<(c[u>>2]|0)>>>0:0)))continue b;c[l>>2]=xi(c[h>>2]|0,(c[h>>2]|0)+72|0,c[n>>2]|0,1,1)|0;c[e>>2]=(c[e>>2]|0)+1}}c:do if(c[j>>2]|0){t=4+(c[(c[h>>2]|0)+152>>2]|0)|0;t=lF(c[(c[j>>2]|0)+24>>2]|0,0,t|0,((t|0)<0)<<31>>31|0)|0;u=m;c[u>>2]=t;c[u+4>>2]=D;if(ai(c[h>>2]|0)|0)c[l>>2]=Ri(c[(c[h>>2]|0)+208>>2]|0,(c[j>>2]|0)+28|0)|0;c[k>>2]=c[(c[j>>2]|0)+24>>2];while(1){if(c[l>>2]|0)break c;if((c[k>>2]|0)>>>0>=(c[(c[h>>2]|0)+52>>2]|0)>>>0)break c;c[l>>2]=xi(c[h>>2]|0,m,c[n>>2]|0,0,1)|0;c[k>>2]=(c[k>>2]|0)+1}}while(0);_g(c[n>>2]|0);if(!(c[l>>2]|0)){b=p;t=c[b+4>>2]|0;u=(c[h>>2]|0)+72|0;c[u>>2]=c[b>>2];c[u+4>>2]=t}c[o>>2]=c[l>>2];u=c[o>>2]|0;i=g;return u|0}function Qi(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=i;i=i+16|0;g=b+12|0;d=b+8|0;e=b+4|0;f=b;c[g>>2]=a;c[(c[g>>2]|0)+24>>2]=c[(c[g>>2]|0)+28>>2];c[d>>2]=Xi(c[(c[g>>2]|0)+208>>2]|0,36,c[g>>2]|0)|0;c[e>>2]=Zi(c[(c[g>>2]|0)+204>>2]|0)|0;while(1){if(!((c[e>>2]|0)!=0&(c[d>>2]|0)==0))break;c[f>>2]=c[(c[e>>2]|0)+12>>2];c[d>>2]=Yi(c[g>>2]|0,c[(c[e>>2]|0)+20>>2]|0)|0;c[e>>2]=c[f>>2]}i=b;return c[d>>2]|0}function Ri(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;e=i;i=i+16|0;g=e+8|0;f=e+4|0;d=e;c[g>>2]=a;c[f>>2]=b;c[d>>2]=0;if((c[(c[f>>2]|0)+12>>2]|0)!=(c[(c[g>>2]|0)+104>>2]|0)){c[c[f>>2]>>2]=0;c[(c[f>>2]|0)+12>>2]=c[(c[g>>2]|0)+104>>2]}if((c[c[f>>2]>>2]|0)>>>0>=(c[(c[g>>2]|0)+68>>2]|0)>>>0){a=c[d>>2]|0;i=e;return a|0}c[(c[g>>2]|0)+68>>2]=c[c[f>>2]>>2];c[(c[g>>2]|0)+76>>2]=c[(c[f>>2]|0)+4>>2];c[(c[g>>2]|0)+80>>2]=c[(c[f>>2]|0)+8>>2];Si(c[g>>2]|0);a=c[d>>2]|0;i=e;return a|0}function Si(a){a=a|0;var d=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;d=i;i=i+32|0;l=d+24|0;f=d+20|0;g=d+16|0;m=d+12|0;h=d+8|0;j=d+4|0;k=d;c[l>>2]=a;c[f>>2]=0;c[g>>2]=0;c[m>>2]=0;c[h>>2]=0;if(!(c[(c[l>>2]|0)+68>>2]|0)){i=d;return}a=c[l>>2]|0;Ti(a,Ui(c[(c[l>>2]|0)+68>>2]|0)|0,f,g,m)|0;c[h>>2]=(c[(c[l>>2]|0)+68>>2]|0)-(c[m>>2]|0);c[k>>2]=0;while(1){if((c[k>>2]|0)>=8192)break;if((e[(c[f>>2]|0)+(c[k>>2]<<1)>>1]|0|0)>(c[h>>2]|0))b[(c[f>>2]|0)+(c[k>>2]<<1)>>1]=0;c[k>>2]=(c[k>>2]|0)+1}c[j>>2]=(c[f>>2]|0)-((c[g>>2]|0)+((c[h>>2]|0)+1<<2));_E((c[g>>2]|0)+((c[h>>2]|0)+1<<2)|0,0,c[j>>2]|0)|0;i=d;return}function Ti(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;n=i;i=i+48|0;q=n+32|0;p=n+28|0;m=n+24|0;k=n+20|0;o=n+16|0;h=n+12|0;j=n+8|0;g=n+4|0;l=n;c[q>>2]=a;c[p>>2]=b;c[m>>2]=d;c[k>>2]=e;c[o>>2]=f;c[h>>2]=Vi(c[q>>2]|0,c[p>>2]|0,j)|0;if(c[h>>2]|0){q=c[h>>2]|0;i=n;return q|0}c[l>>2]=(c[j>>2]|0)+16384;if(!(c[p>>2]|0)){c[j>>2]=(c[j>>2]|0)+136;c[g>>2]=0}else c[g>>2]=4062+((c[p>>2]|0)-1<<12);c[c[k>>2]>>2]=(c[j>>2]|0)+ -4;c[c[m>>2]>>2]=c[l>>2];c[c[o>>2]>>2]=c[g>>2];q=c[h>>2]|0;i=n;return q|0}function Ui(a){a=a|0;var b=0,d=0,e=0;d=i;i=i+16|0;e=d+4|0;b=d;c[e>>2]=a;c[b>>2]=(((c[e>>2]|0)+4096-4062-1|0)>>>0)/4096|0;i=d;return c[b>>2]|0}function Vi(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;m=i;i=i+32|0;g=m+24|0;l=m+20|0;h=m+16|0;j=m+12|0;k=m+8|0;o=m+4|0;n=m;c[l>>2]=b;c[h>>2]=e;c[j>>2]=f;c[k>>2]=0;do if((c[(c[l>>2]|0)+24>>2]|0)<=(c[h>>2]|0)){c[o>>2]=(c[h>>2]|0)+1<<2;c[n>>2]=jc(c[(c[l>>2]|0)+32>>2]|0,c[o>>2]|0)|0;if(c[n>>2]|0){_E((c[n>>2]|0)+(c[(c[l>>2]|0)+24>>2]<<2)|0,0,(c[h>>2]|0)+1-(c[(c[l>>2]|0)+24>>2]|0)<<2|0)|0;c[(c[l>>2]|0)+32>>2]=c[n>>2];c[(c[l>>2]|0)+24>>2]=(c[h>>2]|0)+1;break}c[c[j>>2]>>2]=0;c[g>>2]=7;b=c[g>>2]|0;i=m;return b|0}while(0);do if(!(c[(c[(c[l>>2]|0)+32>>2]|0)+(c[h>>2]<<2)>>2]|0))if((d[(c[l>>2]|0)+43>>0]|0|0)==2){b=Mc(32768,0)|0;c[(c[(c[l>>2]|0)+32>>2]|0)+(c[h>>2]<<2)>>2]=b;if(c[(c[(c[l>>2]|0)+32>>2]|0)+(c[h>>2]<<2)>>2]|0)break;c[k>>2]=7;break}else{c[k>>2]=Wi(c[(c[l>>2]|0)+4>>2]|0,c[h>>2]|0,32768,d[(c[l>>2]|0)+44>>0]|0,(c[(c[l>>2]|0)+32>>2]|0)+(c[h>>2]<<2)|0)|0;if((c[k>>2]|0)!=8)break;b=(c[l>>2]|0)+46|0;a[b>>0]=d[b>>0]|0|2;c[k>>2]=0;break}while(0);c[c[j>>2]>>2]=c[(c[(c[l>>2]|0)+32>>2]|0)+(c[h>>2]<<2)>>2];c[g>>2]=c[k>>2];b=c[g>>2]|0;i=m;return b|0}function Wi(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;g=i;i=i+32|0;m=g+16|0;l=g+12|0;k=g+8|0;j=g+4|0;h=g;c[m>>2]=a;c[l>>2]=b;c[k>>2]=d;c[j>>2]=e;c[h>>2]=f;a=Ab[c[(c[c[m>>2]>>2]|0)+52>>2]&15](c[m>>2]|0,c[l>>2]|0,c[k>>2]|0,c[j>>2]|0,c[h>>2]|0)|0;i=g;return a|0}function Xi(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;l=i;i=i+32|0;h=l+20|0;f=l+16|0;m=l+12|0;g=l+8|0;k=l+4|0;j=l;c[h>>2]=b;c[f>>2]=d;c[m>>2]=e;c[g>>2]=0;if(!(a[(c[h>>2]|0)+44>>0]|0)){b=c[g>>2]|0;i=l;return b|0}c[k>>2]=c[(c[h>>2]|0)+68>>2];b=(c[h>>2]|0)+52|0;b=b+0|0;d=(mj(c[h>>2]|0)|0)+0|0;e=b+48|0;do{a[b>>0]=a[d>>0]|0;b=b+1|0;d=d+1|0}while((b|0)<(e|0));c[j>>2]=(c[(c[h>>2]|0)+68>>2]|0)+1;while(1){if(c[g>>2]|0)break;if((c[j>>2]|0)>>>0>(c[k>>2]|0)>>>0)break;e=c[f>>2]|0;d=c[m>>2]|0;b=nj(c[h>>2]|0,c[j>>2]|0)|0;c[g>>2]=zb[e&63](d,b)|0;c[j>>2]=(c[j>>2]|0)+1}if((c[k>>2]|0)==(c[(c[h>>2]|0)+68>>2]|0)){b=c[g>>2]|0;i=l;return b|0}Si(c[h>>2]|0);b=c[g>>2]|0;i=l;return b|0}function Yi(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;e=i;i=i+32|0;k=e+20|0;j=e+16|0;d=e+12|0;f=e+8|0;g=e+4|0;h=e;c[k>>2]=a;c[j>>2]=b;c[d>>2]=0;c[f>>2]=c[k>>2];c[g>>2]=Hi(c[f>>2]|0,c[j>>2]|0)|0;do if(c[g>>2]|0){if((aj(c[g>>2]|0)|0)==1){bj(c[g>>2]|0);break}c[h>>2]=0;c[d>>2]=cj(c[(c[f>>2]|0)+208>>2]|0,c[(c[g>>2]|0)+20>>2]|0,h)|0;if(!(c[d>>2]|0))c[d>>2]=dj(c[g>>2]|0,c[h>>2]|0)|0;if(!(c[d>>2]|0))rb[c[(c[f>>2]|0)+196>>2]&31](c[g>>2]|0);ej(c[g>>2]|0)}while(0);Og(c[(c[f>>2]|0)+88>>2]|0);i=e;return c[d>>2]|0}function Zi(a){a=a|0;var b=0,d=0,e=0;d=i;i=i+16|0;b=d+4|0;e=d;c[b>>2]=a;c[e>>2]=c[c[b>>2]>>2];while(1){if(!(c[e>>2]|0))break;c[(c[e>>2]|0)+12>>2]=c[(c[e>>2]|0)+32>>2];c[e>>2]=c[(c[e>>2]|0)+32>>2]}e=_i(c[c[b>>2]>>2]|0)|0;i=d;return e|0}function _i(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0;f=i;i=i+144|0;h=f+136|0;b=f+8|0;d=f+4|0;e=f;c[h>>2]=a;j=b+0|0;a=j+128|0;do{c[j>>2]=0;j=j+4|0}while((j|0)<(a|0));while(1){if(!(c[h>>2]|0))break;c[d>>2]=c[h>>2];c[h>>2]=c[(c[d>>2]|0)+12>>2];c[(c[d>>2]|0)+12>>2]=0;c[e>>2]=0;while(1){if((c[e>>2]|0)>=31)break;if(!(c[b+(c[e>>2]<<2)>>2]|0)){g=6;break}c[d>>2]=$i(c[b+(c[e>>2]<<2)>>2]|0,c[d>>2]|0)|0;c[b+(c[e>>2]<<2)>>2]=0;c[e>>2]=(c[e>>2]|0)+1}if((g|0)==6){g=0;c[b+(c[e>>2]<<2)>>2]=c[d>>2]}if((c[e>>2]|0)!=31)continue;j=$i(c[b+(c[e>>2]<<2)>>2]|0,c[d>>2]|0)|0;c[b+(c[e>>2]<<2)>>2]=j}c[d>>2]=c[b>>2];c[e>>2]=1;while(1){g=c[d>>2]|0;if((c[e>>2]|0)>=32)break;c[d>>2]=$i(g,c[b+(c[e>>2]<<2)>>2]|0)|0;c[e>>2]=(c[e>>2]|0)+1}i=f;return g|0}function $i(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;g=i;i=i+64|0;d=g+52|0;h=g+48|0;f=g+8|0;e=g;c[d>>2]=a;c[h>>2]=b;c[e>>2]=f;while(1){if(c[d>>2]|0)a=(c[h>>2]|0)!=0;else a=0;b=c[d>>2]|0;if(!a)break;if((c[b+20>>2]|0)>>>0<(c[(c[h>>2]|0)+20>>2]|0)>>>0){c[(c[e>>2]|0)+12>>2]=c[d>>2];c[e>>2]=c[d>>2];c[d>>2]=c[(c[d>>2]|0)+12>>2];continue}else{c[(c[e>>2]|0)+12>>2]=c[h>>2];c[e>>2]=c[h>>2];c[h>>2]=c[(c[h>>2]|0)+12>>2];continue}}if(b){c[(c[e>>2]|0)+12>>2]=c[d>>2];a=f+12|0;a=c[a>>2]|0;i=g;return a|0}if(c[h>>2]|0){c[(c[e>>2]|0)+12>>2]=c[h>>2];a=f+12|0;a=c[a>>2]|0;i=g;return a|0}else{c[(c[e>>2]|0)+12>>2]=0;a=f+12|0;a=c[a>>2]|0;i=g;return a|0}return 0}function aj(a){a=a|0;var d=0,e=0;e=i;i=i+16|0;d=e;c[d>>2]=a;i=e;return b[(c[d>>2]|0)+26>>1]|0}function bj(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;if((e[(c[b>>2]|0)+24>>1]|0)&2)Sg(c[b>>2]|0,1);a=(c[(c[b>>2]|0)+28>>2]|0)+12|0;c[a>>2]=(c[a>>2]|0)+ -1;if((c[(c[b>>2]|0)+20>>2]|0)==1)c[(c[(c[b>>2]|0)+28>>2]|0)+44>>2]=0;vb[c[38640+136>>2]&63](c[(c[(c[b>>2]|0)+28>>2]|0)+40>>2]|0,c[c[b>>2]>>2]|0,1);i=d;return}function cj(a,d,f){a=a|0;d=d|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;j=i;i=i+64|0;h=j+52|0;m=j+48|0;o=j+44|0;g=j+40|0;l=j+36|0;v=j+32|0;q=j+28|0;r=j+24|0;s=j+20|0;t=j+16|0;p=j+12|0;n=j+8|0;k=j+4|0;u=j;c[m>>2]=a;c[o>>2]=d;c[g>>2]=f;c[l>>2]=0;c[v>>2]=c[(c[m>>2]|0)+68>>2];if((c[v>>2]|0)!=0?(b[(c[m>>2]|0)+40>>1]|0)!=0:0){c[q>>2]=Ui(c[v>>2]|0)|0;a:while(1){if(!((c[q>>2]|0)>=0&(c[l>>2]|0)==0)){m=17;break}c[k>>2]=Ti(c[m>>2]|0,c[q>>2]|0,r,s,t)|0;if(c[k>>2]|0){m=7;break}c[n>>2]=8192;c[p>>2]=jj(c[o>>2]|0)|0;while(1){if(!(b[(c[r>>2]|0)+(c[p>>2]<<1)>>1]|0))break;c[u>>2]=(e[(c[r>>2]|0)+(c[p>>2]<<1)>>1]|0)+(c[t>>2]|0);if((c[u>>2]|0)>>>0<=(c[v>>2]|0)>>>0?(c[(c[s>>2]|0)+(e[(c[r>>2]|0)+(c[p>>2]<<1)>>1]<<2)>>2]|0)==(c[o>>2]|0):0)c[l>>2]=c[u>>2];a=c[n>>2]|0;c[n>>2]=a+ -1;if(!a){m=14;break a}c[p>>2]=lj(c[p>>2]|0)|0}c[q>>2]=(c[q>>2]|0)+ -1}if((m|0)==7){c[h>>2]=c[k>>2];a=c[h>>2]|0;i=j;return a|0}else if((m|0)==14){c[h>>2]=kj(50484)|0;a=c[h>>2]|0;i=j;return a|0}else if((m|0)==17){c[c[g>>2]>>2]=c[l>>2];c[h>>2]=0;a=c[h>>2]|0;i=j;return a|0}}c[c[g>>2]>>2]=0;c[h>>2]=0;a=c[h>>2]|0;i=j;return a|0}function dj(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;e=i;i=i+48|0;j=e+32|0;m=e+28|0;l=e+24|0;k=e+20|0;f=e+16|0;h=e+12|0;n=e;g=e+8|0;c[j>>2]=b;c[m>>2]=d;c[l>>2]=c[(c[j>>2]|0)+16>>2];c[k>>2]=c[(c[j>>2]|0)+20>>2];c[f>>2]=0;c[h>>2]=c[(c[l>>2]|0)+152>>2];if(c[m>>2]|0)c[f>>2]=ij(c[(c[l>>2]|0)+208>>2]|0,c[m>>2]|0,c[h>>2]|0,c[(c[j>>2]|0)+4>>2]|0)|0;else{m=c[(c[l>>2]|0)+152>>2]|0;m=lF((c[k>>2]|0)-1|0,0,m|0,((m|0)<0)<<31>>31|0)|0;b=n;c[b>>2]=m;c[b+4>>2]=D;b=n;b=Ei(c[(c[l>>2]|0)+60>>2]|0,c[(c[j>>2]|0)+4>>2]|0,c[h>>2]|0,c[b>>2]|0,c[b+4>>2]|0)|0;c[f>>2]=b;c[f>>2]=(c[f>>2]|0)==522?0:b}if((c[k>>2]|0)!=1){b=c[f>>2]|0;i=e;return b|0}if(c[f>>2]|0){h=(c[l>>2]|0)+100|0;g=h+16|0;do{a[h>>0]=255;h=h+1|0}while((h|0)<(g|0));b=c[f>>2]|0;i=e;return b|0}else{c[g>>2]=(c[(c[j>>2]|0)+4>>2]|0)+24;h=(c[l>>2]|0)+100|0;j=(c[g>>2]|0)+0|0;g=h+16|0;do{a[h>>0]=a[j>>0]|0;h=h+1|0;j=j+1|0}while((h|0)<(g|0));b=c[f>>2]|0;i=e;return b|0}return 0}function ej(a){a=a|0;var b=0,d=0,f=0;b=i;i=i+16|0;f=b+4|0;d=b;c[f>>2]=a;c[d>>2]=c[(c[f>>2]|0)+16>>2];a=c[f>>2]|0;if((e[(c[f>>2]|0)+24>>1]|0)&64){fj(a);f=c[d>>2]|0;gj(f);i=b;return}else{Ki(a);f=c[d>>2]|0;gj(f);i=b;return}}function fj(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;i=i+16|0;d=b+4|0;f=b;c[d>>2]=a;c[f>>2]=c[(c[d>>2]|0)+16>>2];e=(c[f>>2]|0)+120|0;c[e>>2]=(c[e>>2]|0)+ -1;c[(c[d>>2]|0)+12>>2]=c[(c[f>>2]|0)+136>>2];c[(c[f>>2]|0)+136>>2]=c[d>>2];e=c[(c[f>>2]|0)+60>>2]|0;a=c[(c[f>>2]|0)+152>>2]|0;a=lF((c[(c[d>>2]|0)+20>>2]|0)-1|0,0,a|0,((a|0)<0)<<31>>31|0)|0;hj(e,a,D,c[(c[d>>2]|0)+4>>2]|0)|0;i=b;return}function gj(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;if(c[(c[d>>2]|0)+120>>2]|0){i=b;return}if(Fg(c[(c[d>>2]|0)+204>>2]|0)|0){i=b;return}Qh(c[d>>2]|0);i=b;return}function hj(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=i;i=i+16|0;c[f+12>>2]=a;a=f;c[a>>2]=b;c[a+4>>2]=d;c[f+8>>2]=e;i=f;return 0}function ij(a,b,d,f){a=a|0;b=b|0;d=d|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;g=i;i=i+32|0;l=g+24|0;n=g+20|0;h=g+16|0;k=g+12|0;j=g+8|0;m=g;c[l>>2]=a;c[n>>2]=b;c[h>>2]=d;c[k>>2]=f;c[j>>2]=e[(c[l>>2]|0)+66>>1];c[j>>2]=(c[j>>2]&65024)+((c[j>>2]&1)<<16);b=(c[j>>2]|0)+24|0;b=lF((c[n>>2]|0)-1|0,0,b|0,((b|0)<0)<<31>>31|0)|0;b=bF(32,0,b|0,D|0)|0;b=bF(b|0,D|0,24,0)|0;a=m;c[a>>2]=b;c[a+4>>2]=D;a=m;a=Ei(c[(c[l>>2]|0)+8>>2]|0,c[k>>2]|0,(c[h>>2]|0)>(c[j>>2]|0)?c[j>>2]|0:c[h>>2]|0,c[a>>2]|0,c[a+4>>2]|0)|0;i=g;return a|0}function jj(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;i=d;return(c[b>>2]|0)*383&8191|0}function kj(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+16|0;d=b;e=b+8|0;c[e>>2]=a;e=c[e>>2]|0;a=(vf()|0)+20|0;c[d>>2]=e;c[d+4>>2]=a;tc(11,4392,d);i=b;return 11}function lj(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;i=d;return(c[b>>2]|0)+1&8191|0}function mj(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;i=d;return c[c[(c[b>>2]|0)+32>>2]>>2]|0}function nj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=i;i=i+16|0;e=d+12|0;f=d+8|0;h=d+4|0;g=d;c[f>>2]=a;c[h>>2]=b;c[g>>2]=Ui(c[h>>2]|0)|0;b=c[h>>2]|0;if(!(c[g>>2]|0)){c[e>>2]=c[(c[c[(c[f>>2]|0)+32>>2]>>2]|0)+(34+b-1<<2)>>2];h=c[e>>2]|0;i=d;return h|0}else{c[e>>2]=c[(c[(c[(c[f>>2]|0)+32>>2]|0)+(c[g>>2]<<2)>>2]|0)+((((b-1-4062|0)>>>0)%4096|0)<<2)>>2];h=c[e>>2]|0;i=d;return h|0}return 0}function oj(a){a=a|0;var d=0,e=0;d=i;i=i+16|0;e=d;c[e>>2]=a;bi(c[e>>2]|0)|0;if((b[(c[e>>2]|0)+40>>1]|0)<0){i=d;return}hi(c[e>>2]|0,3+(b[(c[e>>2]|0)+40>>1]|0)|0);b[(c[e>>2]|0)+40>>1]=-1;i=d;return}function pj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;a=zb[c[(c[c[f>>2]>>2]|0)+28>>2]&63](c[f>>2]|0,c[e>>2]|0)|0;i=d;return a|0}function qj(b,d,e,f,g,h,j,k,l){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;n=i;i=i+64|0;m=n+48|0;p=n+44|0;r=n+40|0;t=n+36|0;u=n+32|0;v=n+28|0;x=n+24|0;w=n+20|0;z=n+16|0;s=n+12|0;o=n+8|0;y=n+4|0;q=n;c[p>>2]=b;c[r>>2]=d;c[t>>2]=e;c[u>>2]=f;c[v>>2]=g;c[x>>2]=h;c[w>>2]=j;c[z>>2]=k;c[s>>2]=l;c[y>>2]=0;c[q>>2]=c[r>>2];if(a[(c[p>>2]|0)+46>>0]|0){c[m>>2]=8;b=c[m>>2]|0;i=n;return b|0}c[o>>2]=vj(c[p>>2]|0,1,1)|0;if(c[o>>2]|0){c[m>>2]=c[o>>2];b=c[m>>2]|0;i=n;return b|0}a[(c[p>>2]|0)+45>>0]=1;do if(c[r>>2]|0){c[o>>2]=wj(c[p>>2]|0,c[t>>2]|0,c[u>>2]|0,0,1)|0;if(!(c[o>>2]|0)){a[(c[p>>2]|0)+44>>0]=1;break}if((c[o>>2]|0)==5){c[q>>2]=0;c[o>>2]=0}}while(0);if(((c[o>>2]|0)==0?(c[o>>2]=xj(c[p>>2]|0,y)|0,(c[y>>2]|0)!=0):0)?(c[c[c[(c[p>>2]|0)+4>>2]>>2]>>2]|0)>=3:0)hj(c[(c[p>>2]|0)+4>>2]|0,0,0,0)|0;if(!(c[o>>2]|0)){if((c[(c[p>>2]|0)+68>>2]|0)!=0?(b=yj(c[p>>2]|0)|0,(b|0)!=(c[x>>2]|0)):0)c[o>>2]=kj(51084)|0;else c[o>>2]=zj(c[p>>2]|0,c[q>>2]|0,c[t>>2]|0,c[u>>2]|0,c[v>>2]|0,c[w>>2]|0)|0;if((c[o>>2]|0)==0|(c[o>>2]|0)==5){if(c[z>>2]|0)c[c[z>>2]>>2]=c[(c[p>>2]|0)+68>>2];if(c[s>>2]|0){b=c[(Aj(c[p>>2]|0)|0)>>2]|0;c[c[s>>2]>>2]=b}}}if(c[y>>2]|0){t=(c[p>>2]|0)+52|0;s=t+48|0;do{c[t>>2]=0;t=t+4|0}while((t|0)<(s|0))}bi(c[p>>2]|0)|0;ji(c[p>>2]|0,1,1);a[(c[p>>2]|0)+45>>0]=0;if((c[o>>2]|0)==0?(c[r>>2]|0)!=(c[q>>2]|0):0)o=5;else o=c[o>>2]|0;c[m>>2]=o;b=c[m>>2]|0;i=n;return b|0}function rj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+16|0;h=e+8|0;g=e+4|0;f=e;c[h>>2]=a;c[g>>2]=b;c[f>>2]=d;pb[c[(c[c[h>>2]>>2]|0)+40>>2]&31](c[h>>2]|0,c[g>>2]|0,c[f>>2]|0)|0;i=e;return}function sj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;e=i;i=i+32|0;h=e+16|0;g=e+24|0;j=e+8|0;k=e;f=e+20|0;c[g>>2]=a;a=j;c[a>>2]=b;c[a+4>>2]=d;kh();c[f>>2]=Gg(c[(c[g>>2]|0)+8>>2]|0,k)|0;if((c[f>>2]|0)==0?(b=k,d=c[b+4>>2]|0,a=j,k=c[a+4>>2]|0,(d|0)>(k|0)|((d|0)==(k|0)?(c[b>>2]|0)>>>0>(c[a>>2]|0)>>>0:0)):0){a=j;c[f>>2]=Xh(c[(c[g>>2]|0)+8>>2]|0,c[a>>2]|0,c[a+4>>2]|0)|0}lh();if(!(c[f>>2]|0)){i=e;return}a=c[f>>2]|0;c[h>>2]=c[(c[g>>2]|0)+100>>2];tc(a,4440,h);i=e;return}function tj(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0;e=i;i=i+16|0;g=e+8|0;f=e+4|0;h=e;c[g>>2]=a;c[f>>2]=b;if((d[(c[g>>2]|0)+43>>0]|0|0)!=2){uj(c[(c[g>>2]|0)+4>>2]|0,c[f>>2]|0)|0;i=e;return}c[h>>2]=0;while(1){if((c[h>>2]|0)>=(c[(c[g>>2]|0)+24>>2]|0))break;hc(c[(c[(c[g>>2]|0)+32>>2]|0)+(c[h>>2]<<2)>>2]|0);c[(c[(c[g>>2]|0)+32>>2]|0)+(c[h>>2]<<2)>>2]=0;c[h>>2]=(c[h>>2]|0)+1}i=e;return}function uj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;a=zb[c[(c[c[f>>2]>>2]|0)+64>>2]&63](c[f>>2]|0,c[e>>2]|0)|0;i=d;return a|0}function vj(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;f=i;i=i+32|0;g=f+16|0;l=f+12|0;k=f+8|0;j=f+4|0;h=f;c[l>>2]=b;c[k>>2]=d;c[j>>2]=e;if(a[(c[l>>2]|0)+43>>0]|0){c[g>>2]=0;b=c[g>>2]|0;i=f;return b|0}else{c[h>>2]=ii(c[(c[l>>2]|0)+4>>2]|0,c[k>>2]|0,c[j>>2]|0,10)|0;c[g>>2]=c[h>>2];b=c[g>>2]|0;i=f;return b|0}return 0}function wj(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;h=i;i=i+32|0;m=h+20|0;k=h+16|0;l=h+12|0;j=h+8|0;n=h+4|0;g=h;c[m>>2]=a;c[k>>2]=b;c[l>>2]=d;c[j>>2]=e;c[n>>2]=f;while(1){c[g>>2]=vj(c[m>>2]|0,c[j>>2]|0,c[n>>2]|0)|0;if(!((c[k>>2]|0)!=0&(c[g>>2]|0)==5)){j=4;break}if(!(ub[c[k>>2]&31](c[l>>2]|0)|0)){j=4;break}}if((j|0)==4){i=h;return c[g>>2]|0}return 0}function xj(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;k=i;i=i+32|0;g=k+20|0;f=k+16|0;l=k+12|0;h=k+8|0;j=k+4|0;m=k;c[f>>2]=b;c[l>>2]=e;c[h>>2]=Vi(c[f>>2]|0,0,m)|0;if(c[h>>2]|0){c[g>>2]=c[h>>2];b=c[g>>2]|0;i=k;return b|0}if(c[m>>2]|0)e=Gj(c[f>>2]|0,c[l>>2]|0)|0;else e=1;c[j>>2]=e;do if(c[j>>2]|0){e=c[f>>2]|0;if((d[(c[f>>2]|0)+46>>0]|0)&2){b=gi(e,0)|0;c[h>>2]=b;if(b)break;hi(c[f>>2]|0,0);c[h>>2]=264;break}b=vj(e,0,1)|0;c[h>>2]=b;if(!b){a[(c[f>>2]|0)+44>>0]=1;b=Vi(c[f>>2]|0,0,m)|0;c[h>>2]=b;if(0==(b|0)?(c[j>>2]=Gj(c[f>>2]|0,c[l>>2]|0)|0,(c[j>>2]|0)!=0):0){c[h>>2]=Hj(c[f>>2]|0)|0;c[c[l>>2]>>2]=1}a[(c[f>>2]|0)+44>>0]=0;ji(c[f>>2]|0,0,1)}}while(0);if((c[j>>2]|0)==0?(c[(c[f>>2]|0)+52>>2]|0)!=3007e3:0)c[h>>2]=Ij(50131)|0;c[g>>2]=c[h>>2];b=c[g>>2]|0;i=k;return b|0}function yj(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;i=d;return((e[(c[b>>2]|0)+66>>1]|0)&65024)+(((e[(c[b>>2]|0)+66>>1]|0)&1)<<16)|0}function zj(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,E=0,F=0,G=0,H=0;x=i;i=i+112|0;k=x+104|0;n=x+100|0;m=x+96|0;H=x+92|0;E=x+88|0;q=x+84|0;z=x+80|0;l=x+76|0;r=x+72|0;t=x+68|0;w=x+64|0;u=x+60|0;o=x+56|0;h=x+52|0;F=x+48|0;p=x+44|0;C=x+40|0;G=x+36|0;B=x+24|0;v=x+32|0;A=x+16|0;y=x+8|0;s=x;c[n>>2]=a;c[m>>2]=b;c[H>>2]=d;c[E>>2]=e;c[q>>2]=f;c[z>>2]=g;c[t>>2]=0;c[w>>2]=0;c[u>>2]=0;c[C>>2]=0;c[r>>2]=yj(c[n>>2]|0)|0;c[p>>2]=Aj(c[n>>2]|0)|0;if((c[c[p>>2]>>2]|0)>>>0>=(c[(c[n>>2]|0)+68>>2]|0)>>>0){c[k>>2]=0;a=c[k>>2]|0;i=x;return a|0}c[l>>2]=Bj(c[n>>2]|0,t)|0;if(c[l>>2]|0){c[k>>2]=c[l>>2];a=c[k>>2]|0;i=x;return a|0}if(c[m>>2]|0)c[C>>2]=c[H>>2];c[o>>2]=c[(c[n>>2]|0)+68>>2];c[h>>2]=c[(c[n>>2]|0)+72>>2];c[F>>2]=1;a:while(1){if((c[F>>2]|0)>=5){j=15;break}c[G>>2]=c[(c[p>>2]|0)+4+(c[F>>2]<<2)>>2];do if((c[o>>2]|0)>>>0>(c[G>>2]|0)>>>0){c[l>>2]=wj(c[n>>2]|0,c[C>>2]|0,c[E>>2]|0,3+(c[F>>2]|0)|0,1)|0;if(!(c[l>>2]|0)){c[(c[p>>2]|0)+4+(c[F>>2]<<2)>>2]=(c[F>>2]|0)==1?c[o>>2]|0:-1;ji(c[n>>2]|0,3+(c[F>>2]|0)|0,1);break}if((c[l>>2]|0)!=5)break a;c[o>>2]=c[G>>2];c[C>>2]=0}while(0);c[F>>2]=(c[F>>2]|0)+1}do if((j|0)==15){if((c[c[p>>2]>>2]|0)>>>0<(c[o>>2]|0)>>>0?(a=wj(c[n>>2]|0,c[C>>2]|0,c[E>>2]|0,3,1)|0,c[l>>2]=a,(a|0)==0):0){c[v>>2]=c[c[p>>2]>>2];if(c[q>>2]|0)c[l>>2]=Yh(c[(c[n>>2]|0)+8>>2]|0,c[q>>2]|0)|0;if(((c[l>>2]|0)==0?(b=c[r>>2]|0,b=lF(c[h>>2]|0,0,b|0,((b|0)<0)<<31>>31|0)|0,a=A,c[a>>2]=b,c[a+4>>2]=D,c[l>>2]=Gg(c[(c[n>>2]|0)+4>>2]|0,B)|0,(c[l>>2]|0)==0):0)?(b=B,e=c[b+4>>2]|0,a=A,d=c[a+4>>2]|0,(e|0)<(d|0)|((e|0)==(d|0)?(c[b>>2]|0)>>>0<(c[a>>2]|0)>>>0:0)):0)rj(c[(c[n>>2]|0)+4>>2]|0,5,A);b:while(1){if(c[l>>2]|0)break;while(1){if(Cj(c[t>>2]|0,w,u)|0)break b;if((c[u>>2]|0)>>>0<=(c[v>>2]|0)>>>0)continue b;if((c[u>>2]|0)>>>0>(c[o>>2]|0)>>>0)continue b;if((c[w>>2]|0)>>>0>(c[h>>2]|0)>>>0)continue b;b=(c[r>>2]|0)+24|0;b=lF((c[u>>2]|0)-1|0,0,b|0,((b|0)<0)<<31>>31|0)|0;b=bF(32,0,b|0,D|0)|0;b=bF(b|0,D|0,24,0)|0;a=y;c[a>>2]=b;c[a+4>>2]=D;a=y;c[l>>2]=Ei(c[(c[n>>2]|0)+8>>2]|0,c[z>>2]|0,c[r>>2]|0,c[a>>2]|0,c[a+4>>2]|0)|0;if(c[l>>2]|0)break b;b=c[r>>2]|0;b=lF((c[w>>2]|0)-1|0,0,b|0,((b|0)<0)<<31>>31|0)|0;a=y;c[a>>2]=b;c[a+4>>2]=D;a=y;c[l>>2]=id(c[(c[n>>2]|0)+4>>2]|0,c[z>>2]|0,c[r>>2]|0,c[a>>2]|0,c[a+4>>2]|0)|0;if(!((c[l>>2]|0)==0&(c[l>>2]|0)==0))break b}}if(!(c[l>>2]|0)){a=c[o>>2]|0;if((a|0)==(c[(mj(c[n>>2]|0)|0)+16>>2]|0)?(b=c[r>>2]|0,b=lF(c[(c[n>>2]|0)+72>>2]|0,0,b|0,((b|0)<0)<<31>>31|0)|0,a=s,c[a>>2]=b,c[a+4>>2]=D,a=s,c[l>>2]=Xh(c[(c[n>>2]|0)+4>>2]|0,c[a>>2]|0,c[a+4>>2]|0)|0,(c[l>>2]|0)==0&(c[q>>2]|0)!=0):0)c[l>>2]=Yh(c[(c[n>>2]|0)+4>>2]|0,c[q>>2]|0)|0;if(!(c[l>>2]|0))c[c[p>>2]>>2]=c[o>>2]}ji(c[n>>2]|0,3,1)}if((c[l>>2]|0)==5)c[l>>2]=0;if((c[l>>2]|0)==0&(c[m>>2]|0)!=0){if((c[c[p>>2]>>2]|0)>>>0<(c[(c[n>>2]|0)+68>>2]|0)>>>0){c[l>>2]=5;break}if((c[m>>2]|0)==2?(c[l>>2]=wj(c[n>>2]|0,c[C>>2]|0,c[E>>2]|0,4,4)|0,(c[l>>2]|0)==0):0)ji(c[n>>2]|0,4,4)}}while(0);Dj(c[t>>2]|0);c[k>>2]=c[l>>2];a=c[k>>2]|0;i=x;return a|0}function Aj(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;i=d;return(c[c[(c[b>>2]|0)+32>>2]>>2]|0)+96|0}function Bj(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;n=i;i=i+64|0;f=n+60|0;u=n+56|0;h=n+52|0;g=n+48|0;t=n+44|0;o=n+40|0;v=n+36|0;s=n+32|0;k=n+28|0;j=n+24|0;q=n+20|0;l=n+16|0;r=n+12|0;e=n+8|0;p=n+4|0;m=n;c[u>>2]=a;c[h>>2]=d;c[j>>2]=0;c[o>>2]=c[(c[u>>2]|0)+68>>2];c[t>>2]=(Ui(c[o>>2]|0)|0)+1;c[v>>2]=28+(((c[t>>2]|0)-1|0)*20|0)+(c[o>>2]<<1);c[g>>2]=mg(c[v>>2]|0)|0;if(!(c[g>>2]|0)){c[f>>2]=7;a=c[f>>2]|0;i=n;return a|0}_E(c[g>>2]|0,0,c[v>>2]|0)|0;c[(c[g>>2]|0)+4>>2]=c[t>>2];c[k>>2]=mg(((c[o>>2]|0)>>>0>4096?4096:c[o>>2]|0)<<1)|0;if(!(c[k>>2]|0))c[j>>2]=7;c[s>>2]=0;while(1){if(c[j>>2]|0)break;if((c[s>>2]|0)>=(c[t>>2]|0))break;c[j>>2]=Ti(c[u>>2]|0,c[s>>2]|0,q,r,l)|0;if(!(c[j>>2]|0)){c[r>>2]=(c[r>>2]|0)+4;if(((c[s>>2]|0)+1|0)==(c[t>>2]|0))c[p>>2]=(c[o>>2]|0)-(c[l>>2]|0);else c[p>>2]=((c[q>>2]|0)-(c[r>>2]|0)|0)/4|0;c[m>>2]=(c[g>>2]|0)+8+((c[(c[g>>2]|0)+4>>2]|0)*20|0)+(c[l>>2]<<1);c[l>>2]=(c[l>>2]|0)+1;c[e>>2]=0;while(1){if((c[e>>2]|0)>=(c[p>>2]|0))break;b[(c[m>>2]|0)+(c[e>>2]<<1)>>1]=c[e>>2];c[e>>2]=(c[e>>2]|0)+1}Ej(c[r>>2]|0,c[k>>2]|0,c[m>>2]|0,p);c[(c[g>>2]|0)+8+((c[s>>2]|0)*20|0)+16>>2]=c[l>>2];c[(c[g>>2]|0)+8+((c[s>>2]|0)*20|0)+12>>2]=c[p>>2];c[(c[g>>2]|0)+8+((c[s>>2]|0)*20|0)+4>>2]=c[m>>2];c[(c[g>>2]|0)+8+((c[s>>2]|0)*20|0)+8>>2]=c[r>>2]}c[s>>2]=(c[s>>2]|0)+1}ng(c[k>>2]|0);if(c[j>>2]|0)Dj(c[g>>2]|0);c[c[h>>2]>>2]=c[g>>2];c[f>>2]=c[j>>2];a=c[f>>2]|0;i=n;return a|0}function Cj(a,b,d){a=a|0;b=b|0;d=d|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;k=i;i=i+32|0;h=k+28|0;j=k+24|0;n=k+20|0;o=k+16|0;m=k+12|0;p=k+8|0;f=k+4|0;l=k;c[h>>2]=a;c[j>>2]=b;c[n>>2]=d;c[m>>2]=-1;c[o>>2]=c[c[h>>2]>>2];c[p>>2]=(c[(c[h>>2]|0)+4>>2]|0)-1;while(1){if((c[p>>2]|0)<0)break;c[f>>2]=(c[h>>2]|0)+8+((c[p>>2]|0)*20|0);while(1){if((c[c[f>>2]>>2]|0)>=(c[(c[f>>2]|0)+12>>2]|0))break;c[l>>2]=c[(c[(c[f>>2]|0)+8>>2]|0)+((e[(c[(c[f>>2]|0)+4>>2]|0)+(c[c[f>>2]>>2]<<1)>>1]|0)<<2)>>2];if((c[l>>2]|0)>>>0>(c[o>>2]|0)>>>0){g=6;break}a=c[f>>2]|0;c[a>>2]=(c[a>>2]|0)+1}if((g|0)==6?(g=0,(c[l>>2]|0)>>>0<(c[m>>2]|0)>>>0):0){c[m>>2]=c[l>>2];c[c[n>>2]>>2]=(c[(c[f>>2]|0)+16>>2]|0)+(e[(c[(c[f>>2]|0)+4>>2]|0)+(c[c[f>>2]>>2]<<1)>>1]|0)}c[p>>2]=(c[p>>2]|0)+ -1}a=c[m>>2]|0;c[c[h>>2]>>2]=a;c[c[j>>2]>>2]=a;i=k;return(c[m>>2]|0)==-1|0}function Dj(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;ng(c[d>>2]|0);i=b;return}function Ej(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;r=i;i=i+160|0;g=r+144|0;p=r+140|0;k=r+136|0;q=r+132|0;m=r+128|0;j=r+124|0;l=r+120|0;o=r+116|0;h=r+112|0;f=r+8|0;n=r+4|0;s=r;c[g>>2]=a;c[p>>2]=b;c[k>>2]=d;c[q>>2]=e;c[m>>2]=c[c[q>>2]>>2];c[j>>2]=0;c[l>>2]=0;c[h>>2]=0;d=f+0|0;e=d+104|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(e|0));c[o>>2]=0;while(1){if((c[o>>2]|0)>=(c[m>>2]|0))break;c[j>>2]=1;c[l>>2]=(c[k>>2]|0)+(c[o>>2]<<1);c[h>>2]=0;while(1){if(!(c[o>>2]&1<>2]))break;c[n>>2]=f+(c[h>>2]<<3);Fj(c[g>>2]|0,c[(c[n>>2]|0)+4>>2]|0,c[c[n>>2]>>2]|0,l,j,c[p>>2]|0);c[h>>2]=(c[h>>2]|0)+1}c[f+(c[h>>2]<<3)+4>>2]=c[l>>2];c[f+(c[h>>2]<<3)>>2]=c[j>>2];c[o>>2]=(c[o>>2]|0)+1}c[h>>2]=(c[h>>2]|0)+1;while(1){if((c[h>>2]|0)>=13)break;if(c[m>>2]&1<>2]){c[s>>2]=f+(c[h>>2]<<3);Fj(c[g>>2]|0,c[(c[s>>2]|0)+4>>2]|0,c[c[s>>2]>>2]|0,l,j,c[p>>2]|0)}c[h>>2]=(c[h>>2]|0)+1}c[c[q>>2]>>2]=c[j>>2];i=r;return}function Fj(a,d,f,g,h,j){a=a|0;d=d|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;q=i;i=i+64|0;r=q+44|0;u=q+40|0;v=q+36|0;m=q+32|0;o=q+28|0;p=q+24|0;k=q+20|0;w=q+16|0;n=q+12|0;x=q+8|0;y=q+4|0;s=q+48|0;t=q;c[r>>2]=a;c[u>>2]=d;c[v>>2]=f;c[m>>2]=g;c[o>>2]=h;c[p>>2]=j;c[k>>2]=0;c[w>>2]=0;c[n>>2]=0;c[x>>2]=c[c[o>>2]>>2];c[y>>2]=c[c[m>>2]>>2];while(1){if((c[w>>2]|0)>=(c[x>>2]|0)?(c[k>>2]|0)>=(c[v>>2]|0):0)break;do if((c[k>>2]|0)<(c[v>>2]|0)){if((c[w>>2]|0)<(c[x>>2]|0)?(c[(c[r>>2]|0)+((e[(c[u>>2]|0)+(c[k>>2]<<1)>>1]|0)<<2)>>2]|0)>>>0>=(c[(c[r>>2]|0)+((e[(c[y>>2]|0)+(c[w>>2]<<1)>>1]|0)<<2)>>2]|0)>>>0:0){l=8;break}a=c[k>>2]|0;c[k>>2]=a+1;b[s>>1]=b[(c[u>>2]|0)+(a<<1)>>1]|0}else l=8;while(0);if((l|0)==8){l=0;a=c[w>>2]|0;c[w>>2]=a+1;b[s>>1]=b[(c[y>>2]|0)+(a<<1)>>1]|0}c[t>>2]=c[(c[r>>2]|0)+((e[s>>1]|0)<<2)>>2];d=b[s>>1]|0;a=c[n>>2]|0;c[n>>2]=a+1;b[(c[p>>2]|0)+(a<<1)>>1]=d;if((c[k>>2]|0)>=(c[v>>2]|0))continue;if((c[(c[r>>2]|0)+((e[(c[u>>2]|0)+(c[k>>2]<<1)>>1]|0)<<2)>>2]|0)!=(c[t>>2]|0))continue;c[k>>2]=(c[k>>2]|0)+1}c[c[m>>2]>>2]=c[u>>2];c[c[o>>2]>>2]=c[n>>2];dF(c[u>>2]|0,c[p>>2]|0,c[n>>2]<<1|0)|0;i=q;return}function Gj(b,f){b=b|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;g=i;i=i+128|0;l=g+120|0;m=g+116|0;o=g+112|0;n=g+104|0;k=g+56|0;h=g+8|0;j=g;c[m>>2]=b;c[o>>2]=f;c[j>>2]=mj(c[m>>2]|0)|0;b=k+0|0;f=(c[j>>2]|0)+0|0;p=b+48|0;do{a[b>>0]=a[f>>0]|0;b=b+1|0;f=f+1|0}while((b|0)<(p|0));Nj(c[m>>2]|0);b=h+0|0;f=(c[j>>2]|0)+48|0;p=b+48|0;do{a[b>>0]=a[f>>0]|0;b=b+1|0;f=f+1|0}while((b|0)<(p|0));if(TE(k,h,48)|0){c[l>>2]=1;p=c[l>>2]|0;i=g;return p|0}if(!(d[k+12>>0]|0)){c[l>>2]=1;p=c[l>>2]|0;i=g;return p|0}Jj(1,k,40,0,n);if((c[n>>2]|0)==(c[k+40>>2]|0)?(c[n+4>>2]|0)==(c[k+44>>2]|0):0){if(TE((c[m>>2]|0)+52|0,k,48)|0){c[c[o>>2]>>2]=1;b=(c[m>>2]|0)+52|0;f=k+0|0;p=b+48|0;do{c[b>>2]=c[f>>2];b=b+4|0;f=f+4|0}while((b|0)<(p|0));c[(c[m>>2]|0)+36>>2]=((e[(c[m>>2]|0)+66>>1]|0)&65024)+(((e[(c[m>>2]|0)+66>>1]|0)&1)<<16)}c[l>>2]=0;p=c[l>>2]|0;i=g;return p|0}c[l>>2]=1;p=c[l>>2]|0;i=g;return p|0}function Hj(e){e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,E=0;s=i;i=i+144|0;C=s+16|0;r=s+96|0;j=s+92|0;h=s+88|0;k=s+8|0;z=s+80|0;l=s+76|0;m=s+72|0;o=s+104|0;n=s+68|0;g=s+64|0;t=s+60|0;u=s+56|0;v=s;q=s+52|0;p=s+48|0;f=s+44|0;y=s+40|0;w=s+36|0;x=s+32|0;A=s+28|0;B=s+24|0;c[j>>2]=e;c[z+0>>2]=0;c[z+4>>2]=0;c[l>>2]=1+(d[(c[j>>2]|0)+45>>0]|0);c[m>>2]=8-(c[l>>2]|0);c[h>>2]=vj(c[j>>2]|0,c[l>>2]|0,c[m>>2]|0)|0;if(c[h>>2]|0){c[r>>2]=c[h>>2];E=c[r>>2]|0;i=s;return E|0}e=(c[j>>2]|0)+52|0;E=e+48|0;do{c[e>>2]=0;e=e+4|0}while((e|0)<(E|0));c[h>>2]=Gg(c[(c[j>>2]|0)+8>>2]|0,k)|0;a:do if(!(c[h>>2]|0)){E=k;e=c[E+4>>2]|0;do if((e|0)>0|(e|0)==0&(c[E>>2]|0)>>>0>32){c[n>>2]=0;c[h>>2]=Ei(c[(c[j>>2]|0)+8>>2]|0,o,32,0,0)|0;if(c[h>>2]|0)break a;c[p>>2]=Hh(o)|0;c[q>>2]=Hh(o+8|0)|0;if((c[p>>2]&-2|0)==931071618?!(((c[q>>2]|0)>65536?1:(c[q>>2]&(c[q>>2]|0)-1|0)!=0)|(c[q>>2]|0)<512):0){a[(c[j>>2]|0)+65>>0]=c[p>>2]&1;c[(c[j>>2]|0)+36>>2]=c[q>>2];E=Hh(o+12|0)|0;c[(c[j>>2]|0)+104>>2]=E;E=(c[j>>2]|0)+84|0;e=o+16|0;a[E+0>>0]=a[e+0>>0]|0;a[E+1>>0]=a[e+1>>0]|0;a[E+2>>0]=a[e+2>>0]|0;a[E+3>>0]=a[e+3>>0]|0;a[E+4>>0]=a[e+4>>0]|0;a[E+5>>0]=a[e+5>>0]|0;a[E+6>>0]=a[e+6>>0]|0;a[E+7>>0]=a[e+7>>0]|0;Jj((d[(c[j>>2]|0)+65>>0]|0)==((a[1136]|0)==0|0)&1,o,24,0,(c[j>>2]|0)+76|0);E=c[(c[j>>2]|0)+76>>2]|0;if((E|0)==(Hh(o+24|0)|0)?(E=c[(c[j>>2]|0)+80>>2]|0,(E|0)==(Hh(o+28|0)|0)):0){c[f>>2]=Hh(o+4|0)|0;if((c[f>>2]|0)!=3007e3){c[h>>2]=Ij(49260)|0;break}c[g>>2]=(c[q>>2]|0)+24;c[n>>2]=fc(c[g>>2]|0)|0;if(!(c[n>>2]|0)){c[h>>2]=7;break a}c[t>>2]=(c[n>>2]|0)+24;c[u>>2]=0;E=v;c[E>>2]=32;c[E+4>>2]=0;while(1){o=v;e=c[g>>2]|0;e=bF(c[o>>2]|0,c[o+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0;o=D;E=k;p=c[E+4>>2]|0;if(!((o|0)<(p|0)|((o|0)==(p|0)?e>>>0<=(c[E>>2]|0)>>>0:0)))break;c[u>>2]=(c[u>>2]|0)+1;E=v;c[h>>2]=Ei(c[(c[j>>2]|0)+8>>2]|0,c[n>>2]|0,c[g>>2]|0,c[E>>2]|0,c[E+4>>2]|0)|0;if(c[h>>2]|0)break;c[y>>2]=Kj(c[j>>2]|0,w,x,c[t>>2]|0,c[n>>2]|0)|0;if(!(c[y>>2]|0))break;c[h>>2]=Lj(c[j>>2]|0,c[u>>2]|0,c[w>>2]|0)|0;if(c[h>>2]|0)break;if(c[x>>2]|0){c[(c[j>>2]|0)+68>>2]=c[u>>2];c[(c[j>>2]|0)+72>>2]=c[x>>2];b[(c[j>>2]|0)+66>>1]=c[q>>2]&65280|c[q>>2]>>16;c[z>>2]=c[(c[j>>2]|0)+76>>2];c[z+4>>2]=c[(c[j>>2]|0)+80>>2]}e=c[g>>2]|0;E=v;e=bF(c[E>>2]|0,c[E+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0;E=v;c[E>>2]=e;c[E+4>>2]=D}hc(c[n>>2]|0)}}}while(0);if(!(c[h>>2]|0)){c[(c[j>>2]|0)+76>>2]=c[z>>2];c[(c[j>>2]|0)+80>>2]=c[z+4>>2];Mj(c[j>>2]|0);c[A>>2]=Aj(c[j>>2]|0)|0;c[c[A>>2]>>2]=0;c[(c[A>>2]|0)+4>>2]=0;c[B>>2]=1;while(1){if((c[B>>2]|0)>=5)break;c[(c[A>>2]|0)+4+(c[B>>2]<<2)>>2]=-1;c[B>>2]=(c[B>>2]|0)+1}if(c[(c[j>>2]|0)+68>>2]|0)c[(c[A>>2]|0)+8>>2]=c[(c[j>>2]|0)+68>>2];if(c[(c[j>>2]|0)+72>>2]|0){E=c[(c[j>>2]|0)+100>>2]|0;c[C>>2]=c[(c[j>>2]|0)+68>>2];c[C+4>>2]=E;tc(283,4512,C)}}}while(0);ji(c[j>>2]|0,c[l>>2]|0,c[m>>2]|0);c[r>>2]=c[h>>2];E=c[r>>2]|0;i=s;return E|0}function Ij(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+16|0;d=b;e=b+8|0;c[e>>2]=a;e=c[e>>2]|0;a=(vf()|0)+20|0;c[d>>2]=e;c[d+4>>2]=a;tc(14,4472,d);i=b;return 14}function Jj(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;k=i;i=i+48|0;n=k+32|0;q=k+28|0;p=k+24|0;o=k+20|0;h=k+16|0;m=k+12|0;j=k+8|0;l=k+4|0;g=k;c[n>>2]=a;c[q>>2]=b;c[p>>2]=d;c[o>>2]=e;c[h>>2]=f;c[l>>2]=c[q>>2];c[g>>2]=(c[q>>2]|0)+(c[p>>2]|0);if(c[o>>2]|0){c[m>>2]=c[c[o>>2]>>2];c[j>>2]=c[(c[o>>2]|0)+4>>2]}else{c[j>>2]=0;c[m>>2]=0}if(c[n>>2]|0){do{q=c[l>>2]|0;c[l>>2]=q+4;c[m>>2]=(c[m>>2]|0)+((c[q>>2]|0)+(c[j>>2]|0));q=c[l>>2]|0;c[l>>2]=q+4;c[j>>2]=(c[j>>2]|0)+((c[q>>2]|0)+(c[m>>2]|0))}while((c[l>>2]|0)>>>0<(c[g>>2]|0)>>>0);q=c[m>>2]|0;p=c[h>>2]|0;c[p>>2]=q;p=c[j>>2]|0;q=c[h>>2]|0;q=q+4|0;c[q>>2]=p;i=k;return}else{do{c[m>>2]=(c[m>>2]|0)+(((c[c[l>>2]>>2]&255)<<24)+((c[c[l>>2]>>2]&65280)<<8)+((c[c[l>>2]>>2]&16711680)>>>8)+((c[c[l>>2]>>2]&-16777216)>>>24)+(c[j>>2]|0));c[j>>2]=(c[j>>2]|0)+(((c[(c[l>>2]|0)+4>>2]&255)<<24)+((c[(c[l>>2]|0)+4>>2]&65280)<<8)+((c[(c[l>>2]|0)+4>>2]&16711680)>>>8)+((c[(c[l>>2]|0)+4>>2]&-16777216)>>>24)+(c[m>>2]|0));c[l>>2]=(c[l>>2]|0)+8}while((c[l>>2]|0)>>>0<(c[g>>2]|0)>>>0);q=c[m>>2]|0;p=c[h>>2]|0;c[p>>2]=q;p=c[j>>2]|0;q=c[h>>2]|0;q=q+4|0;c[q>>2]=p;i=k;return}}function Kj(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;p=i;i=i+48|0;k=p+32|0;q=p+28|0;m=p+24|0;o=p+20|0;s=p+16|0;n=p+12|0;r=p+8|0;j=p+4|0;l=p;c[q>>2]=b;c[m>>2]=e;c[o>>2]=f;c[s>>2]=g;c[n>>2]=h;c[j>>2]=(c[q>>2]|0)+76;if(TE((c[q>>2]|0)+84|0,(c[n>>2]|0)+8|0,8)|0){c[k>>2]=0;b=c[k>>2]|0;i=p;return b|0}c[l>>2]=Hh(c[n>>2]|0)|0;if(!(c[l>>2]|0)){c[k>>2]=0;b=c[k>>2]|0;i=p;return b|0}c[r>>2]=(d[(c[q>>2]|0)+65>>0]|0)==((a[1136]|0)==0|0)&1;Jj(c[r>>2]|0,c[n>>2]|0,8,c[j>>2]|0,c[j>>2]|0);Jj(c[r>>2]|0,c[s>>2]|0,c[(c[q>>2]|0)+36>>2]|0,c[j>>2]|0,c[j>>2]|0);b=c[c[j>>2]>>2]|0;if((b|0)==(Hh((c[n>>2]|0)+16|0)|0)?(b=c[(c[j>>2]|0)+4>>2]|0,(b|0)==(Hh((c[n>>2]|0)+20|0)|0)):0){c[c[m>>2]>>2]=c[l>>2];b=Hh((c[n>>2]|0)+4|0)|0;c[c[o>>2]>>2]=b;c[k>>2]=1;b=c[k>>2]|0;i=p;return b|0}c[k>>2]=0;b=c[k>>2]|0;i=p;return b|0}function Lj(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;j=i;i=i+48|0;h=j+44|0;q=j+40|0;t=j+36|0;k=j+32|0;o=j+28|0;s=j+24|0;l=j+20|0;n=j+16|0;f=j+12|0;m=j+8|0;p=j+4|0;r=j;c[q>>2]=a;c[t>>2]=d;c[k>>2]=e;c[s>>2]=0;c[l>>2]=0;c[n>>2]=0;a=c[q>>2]|0;c[o>>2]=Ti(a,Ui(c[t>>2]|0)|0,n,l,s)|0;do if(!(c[o>>2]|0)){c[m>>2]=(c[t>>2]|0)-(c[s>>2]|0);if((c[m>>2]|0)==1){c[r>>2]=(c[n>>2]|0)+16384-((c[l>>2]|0)+4);_E((c[l>>2]|0)+4|0,0,c[r>>2]|0)|0}if(c[(c[l>>2]|0)+(c[m>>2]<<2)>>2]|0)Si(c[q>>2]|0);c[p>>2]=c[m>>2];c[f>>2]=jj(c[k>>2]|0)|0;while(1){if(!(b[(c[n>>2]|0)+(c[f>>2]<<1)>>1]|0)){g=11;break}a=c[p>>2]|0;c[p>>2]=a+ -1;if(!a)break;c[f>>2]=lj(c[f>>2]|0)|0}if((g|0)==11){c[(c[l>>2]|0)+(c[m>>2]<<2)>>2]=c[k>>2];b[(c[n>>2]|0)+(c[f>>2]<<1)>>1]=c[m>>2];break}c[h>>2]=kj(49129)|0;a=c[h>>2]|0;i=j;return a|0}while(0);c[h>>2]=c[o>>2];a=c[h>>2]|0;i=j;return a|0}function Mj(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;f=i;i=i+16|0;d=f+8|0;e=f+4|0;c[d>>2]=b;c[e>>2]=mj(c[d>>2]|0)|0;c[f>>2]=40;a[(c[d>>2]|0)+64>>0]=1;c[(c[d>>2]|0)+52>>2]=3007e3;Jj(1,(c[d>>2]|0)+52|0,40,0,(c[d>>2]|0)+92|0);h=(c[e>>2]|0)+48|0;g=(c[d>>2]|0)+52|0;b=h+48|0;do{a[h>>0]=a[g>>0]|0;h=h+1|0;g=g+1|0}while((h|0)<(b|0));Nj(c[d>>2]|0);h=(c[e>>2]|0)+0|0;g=(c[d>>2]|0)+52|0;b=h+48|0;do{a[h>>0]=a[g>>0]|0;h=h+1|0;g=g+1|0}while((h|0)<(b|0));i=f;return}function Nj(a){a=a|0;var b=0,e=0;b=i;i=i+16|0;e=b;c[e>>2]=a;if((d[(c[e>>2]|0)+43>>0]|0|0)==2){i=b;return}Oj(c[(c[e>>2]|0)+4>>2]|0);i=b;return}function Oj(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;rb[c[(c[c[d>>2]>>2]|0)+60>>2]&31](c[d>>2]|0);i=b;return}function Pj(a){a=a|0;var b=0,d=0,e=0,f=0;e=i;i=i+16|0;d=e+8|0;f=e+4|0;b=e;c[f>>2]=a;if(((c[f>>2]|0)!=0?(c[c[f>>2]>>2]|0)!=0:0)?(c[(c[f>>2]|0)+8>>2]|0)>=0:0){c[b>>2]=zb[c[c[f>>2]>>2]&63](c[(c[f>>2]|0)+4>>2]|0,c[(c[f>>2]|0)+8>>2]|0)|0;a=(c[f>>2]|0)+8|0;if(!(c[b>>2]|0))c[a>>2]=-1;else c[a>>2]=(c[a>>2]|0)+1;c[d>>2]=c[b>>2];f=c[d>>2]|0;i=e;return f|0}c[d>>2]=0;f=c[d>>2]|0;i=e;return f|0}function Qj(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;i=d;return c[(c[b>>2]|0)+8>>2]|0}function Rj(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;a=aj(c[d>>2]|0)|0;i=b;return a|0}function Sj(f){f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;j=i;i=i+48|0;h=j+32|0;k=j+28|0;r=j+42|0;s=j+44|0;q=j+24|0;v=j+20|0;l=j+16|0;p=j+40|0;m=j+12|0;t=j+8|0;g=j+4|0;o=j;u=j+38|0;n=j+36|0;c[k>>2]=f;do if(!(a[c[k>>2]>>0]|0)){c[v>>2]=c[(c[k>>2]|0)+52>>2];a[s>>0]=a[(c[k>>2]|0)+6>>0]|0;c[q>>2]=c[(c[k>>2]|0)+56>>2];if(Tj(c[k>>2]|0,d[(c[q>>2]|0)+(d[s>>0]|0)>>0]|0)|0){c[h>>2]=kj(53694)|0;v=c[h>>2]|0;i=j;return v|0}b[(c[k>>2]|0)+20>>1]=(c[(c[v>>2]|0)+32>>2]|0)-1;a[(c[k>>2]|0)+1>>0]=0;c[l>>2]=c[(c[v>>2]|0)+36>>2];f=(d[s>>0]|0)+12-(d[(c[k>>2]|0)+5>>0]<<2)&65535;b[p>>1]=f;b[(c[k>>2]|0)+14>>1]=f;c[(c[k>>2]|0)+60>>2]=(c[q>>2]|0)+(c[l>>2]|0);c[(c[k>>2]|0)+64>>2]=(c[q>>2]|0)+(e[p>>1]|0);c[t>>2]=((d[(c[q>>2]|0)+((d[s>>0]|0)+5)>>0]<<8|d[(c[q>>2]|0)+((d[s>>0]|0)+5)+1>>0])-1&65535)+1;b[(c[k>>2]|0)+18>>1]=d[(c[q>>2]|0)+((d[s>>0]|0)+3)>>0]<<8|d[(c[q>>2]|0)+((d[s>>0]|0)+3)+1>>0];if((e[(c[k>>2]|0)+18>>1]|0)>>>0>((((c[(c[v>>2]|0)+32>>2]|0)-8|0)>>>0)/6|0)>>>0){c[h>>2]=kj(53706)|0;v=c[h>>2]|0;i=j;return v|0}c[g>>2]=(e[p>>1]|0)+(e[(c[k>>2]|0)+18>>1]<<1);c[o>>2]=(c[l>>2]|0)-4;b[r>>1]=d[(c[q>>2]|0)+((d[s>>0]|0)+1)>>0]<<8|d[(c[q>>2]|0)+((d[s>>0]|0)+1)+1>>0];c[m>>2]=(d[(c[q>>2]|0)+((d[s>>0]|0)+7)>>0]|0)+(c[t>>2]|0);while(1){if((e[r>>1]|0)<=0){n=16;break}if((e[r>>1]|0)<(c[g>>2]|0)){n=10;break}if((e[r>>1]|0)>(c[o>>2]|0)){n=10;break}b[u>>1]=d[(c[q>>2]|0)+(e[r>>1]|0)>>0]<<8|d[(c[q>>2]|0)+(e[r>>1]|0)+1>>0];b[n>>1]=d[(c[q>>2]|0)+((e[r>>1]|0)+2)>>0]<<8|d[(c[q>>2]|0)+((e[r>>1]|0)+2)+1>>0];if((e[u>>1]|0)>0?(e[u>>1]|0)<=((e[r>>1]|0)+(e[n>>1]|0)+3|0):0){n=14;break}if(((e[r>>1]|0)+(e[n>>1]|0)|0)>(c[l>>2]|0)){n=14;break}c[m>>2]=(c[m>>2]|0)+(e[n>>1]|0);b[r>>1]=b[u>>1]|0}if((n|0)==10){c[h>>2]=kj(53749)|0;v=c[h>>2]|0;i=j;return v|0}else if((n|0)==14){c[h>>2]=kj(53756)|0;v=c[h>>2]|0;i=j;return v|0}else if((n|0)==16){if((c[m>>2]|0)<=(c[l>>2]|0)){b[(c[k>>2]|0)+16>>1]=(c[m>>2]|0)-(c[g>>2]|0);a[c[k>>2]>>0]=1;break}c[h>>2]=kj(53770)|0;v=c[h>>2]|0;i=j;return v|0}}while(0);c[h>>2]=0;v=c[h>>2]|0;i=j;return v|0}function Tj(e,f){e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;k=i;i=i+16|0;j=k+12|0;h=k+8|0;l=k+4|0;g=k;c[h>>2]=e;c[l>>2]=f;a[(c[h>>2]|0)+5>>0]=c[l>>2]>>3;c[l>>2]=c[l>>2]&-9;a[(c[h>>2]|0)+7>>0]=4-(d[(c[h>>2]|0)+5>>0]<<2);c[g>>2]=c[(c[h>>2]|0)+52>>2];do if((c[l>>2]|0)==5){a[(c[h>>2]|0)+2>>0]=1;a[(c[h>>2]|0)+3>>0]=a[(c[h>>2]|0)+5>>0]|0;a[(c[h>>2]|0)+4>>0]=((a[(c[h>>2]|0)+5>>0]|0)!=0^1)&1;b[(c[h>>2]|0)+10>>1]=b[(c[g>>2]|0)+28>>1]|0;b[(c[h>>2]|0)+12>>1]=b[(c[g>>2]|0)+30>>1]|0}else{if((c[l>>2]|0)==2){a[(c[h>>2]|0)+2>>0]=0;a[(c[h>>2]|0)+3>>0]=0;a[(c[h>>2]|0)+4>>0]=0;b[(c[h>>2]|0)+10>>1]=b[(c[g>>2]|0)+24>>1]|0;b[(c[h>>2]|0)+12>>1]=b[(c[g>>2]|0)+26>>1]|0;break}c[j>>2]=kj(53655)|0;e=c[j>>2]|0;i=k;return e|0}while(0);a[(c[h>>2]|0)+8>>0]=a[(c[g>>2]|0)+21>>0]|0;c[j>>2]=0;e=c[j>>2]|0;i=k;return e|0}function Uj(){return 48}function Vj(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0;j=i;i=i+32|0;o=j+20|0;k=j+16|0;l=j+12|0;m=j+8|0;n=j+4|0;p=j;c[o>>2]=b;c[k>>2]=d;c[l>>2]=e;c[m>>2]=f;c[n>>2]=g;c[p>>2]=h;g=(c[p>>2]|0)+0|0;h=g+48|0;do{c[g>>2]=0;g=g+4|0}while((g|0)<(h|0));c[(c[p>>2]|0)+20>>2]=1;c[(c[p>>2]|0)+24>>2]=c[k>>2];a[(c[p>>2]|0)+28>>0]=c[l>>2];a[(c[p>>2]|0)+29>>0]=2;c[(c[p>>2]|0)+32>>2]=c[m>>2];c[(c[p>>2]|0)+36>>2]=c[n>>2];c[(c[p>>2]|0)+16>>2]=100;b=Jg(c[p>>2]|0,c[o>>2]|0)|0;i=j;return b|0}function Wj(a,b){a=a|0;b=b|0;var f=0,g=0,h=0,j=0,k=0,l=0;f=i;i=i+32|0;g=f+16|0;l=f+12|0;h=f+8|0;j=f+4|0;k=f;c[l>>2]=a;c[h>>2]=b;c[j>>2]=c[l>>2];c[k>>2]=0;if(c[(c[j>>2]|0)+40>>2]|0){c[g>>2]=0;l=c[g>>2]|0;i=f;return l|0}do if(d[(c[j>>2]|0)+20>>0]|0){if(((d[(c[j>>2]|0)+20>>0]|0)&3|0)==0?((e[(c[h>>2]|0)+24>>1]|0)&4|0)==0:0)break;c[g>>2]=0;l=c[g>>2]|0;i=f;return l|0}while(0);c[(c[h>>2]|0)+12>>2]=0;l=(ai(c[j>>2]|0)|0)!=0;b=c[h>>2]|0;if(l){if(Xj(b)|0)c[k>>2]=Yj(c[h>>2]|0)|0;if(!(c[k>>2]|0))c[k>>2]=Zj(c[j>>2]|0,c[h>>2]|0,0,0)|0}else{if(!(((e[b+24>>1]|0)&4|0)==0?(d[(c[j>>2]|0)+16>>0]|0|0)!=3:0))c[k>>2]=_j(c[j>>2]|0,1)|0;if(((c[k>>2]|0)==0?(c[(c[h>>2]|0)+20>>2]|0)>>>0>(c[(c[j>>2]|0)+24>>2]|0)>>>0:0)?(Xj(c[h>>2]|0)|0)!=0:0)c[k>>2]=Yj(c[h>>2]|0)|0;if(!(c[k>>2]|0))c[k>>2]=$j(c[j>>2]|0,c[h>>2]|0)|0}if(!(c[k>>2]|0))Rg(c[h>>2]|0);c[g>>2]=Oh(c[j>>2]|0,c[k>>2]|0)|0;l=c[g>>2]|0;i=f;return l|0}function Xj(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0;d=i;i=i+32|0;b=d+20|0;j=d+16|0;e=d+12|0;g=d+8|0;h=d+4|0;f=d;c[j>>2]=a;c[e>>2]=c[(c[j>>2]|0)+16>>2];c[h>>2]=c[(c[j>>2]|0)+20>>2];c[f>>2]=0;while(1){if((c[f>>2]|0)>=(c[(c[e>>2]|0)+96>>2]|0)){a=7;break}c[g>>2]=(c[(c[e>>2]|0)+92>>2]|0)+((c[f>>2]|0)*48|0);if((c[(c[g>>2]|0)+20>>2]|0)>>>0>=(c[h>>2]|0)>>>0?0==(Yg(c[(c[g>>2]|0)+16>>2]|0,c[h>>2]|0)|0):0){a=5;break}c[f>>2]=(c[f>>2]|0)+1}if((a|0)==5){c[b>>2]=1;j=c[b>>2]|0;i=d;return j|0}else if((a|0)==7){c[b>>2]=0;j=c[b>>2]|0;i=d;return j|0}return 0}function Yj(a){a=a|0;var b=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;e=i;i=i+32|0;j=e+24|0;b=e+20|0;f=e+16|0;k=e+12|0;h=e;g=e+8|0;c[j>>2]=a;c[b>>2]=0;c[f>>2]=c[(c[j>>2]|0)+16>>2];if(((d[(c[f>>2]|0)+5>>0]|0|0)!=2?(c[b>>2]=ok(c[f>>2]|0)|0,(c[b>>2]|0)==0):0)?(c[k>>2]=c[(c[j>>2]|0)+4>>2],l=4+(c[(c[f>>2]|0)+152>>2]|0)|0,l=lF(c[(c[f>>2]|0)+52>>2]|0,0,l|0,((l|0)<0)<<31>>31|0)|0,a=h,c[a>>2]=l,c[a+4>>2]=D,c[g>>2]=c[k>>2],k=h,c[b>>2]=pk(c[(c[f>>2]|0)+68>>2]|0,c[k>>2]|0,c[k+4>>2]|0,c[(c[j>>2]|0)+20>>2]|0)|0,(c[b>>2]|0)==0):0){a=c[(c[f>>2]|0)+68>>2]|0;g=c[g>>2]|0;k=c[(c[f>>2]|0)+152>>2]|0;l=h;l=bF(c[l>>2]|0,c[l+4>>2]|0,4,0)|0;c[b>>2]=id(a,g,k,l,D)|0}if(c[b>>2]|0){l=c[b>>2]|0;i=e;return l|0}l=(c[f>>2]|0)+52|0;c[l>>2]=(c[l>>2]|0)+1;c[b>>2]=qk(c[f>>2]|0,c[(c[j>>2]|0)+20>>2]|0)|0;l=c[b>>2]|0;i=e;return l|0}function Zj(a,b,e,f){a=a|0;b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;h=i;i=i+48|0;l=h+32|0;j=h+28|0;m=h+24|0;g=h+20|0;n=h+16|0;o=h+12|0;p=h+8|0;q=h+4|0;k=h;c[l>>2]=a;c[j>>2]=b;c[m>>2]=e;c[g>>2]=f;a:do if(c[g>>2]|0){c[q>>2]=j;c[o>>2]=0;c[p>>2]=c[j>>2];while(1){a=c[p>>2]|0;c[c[q>>2]>>2]=a;if(!a)break a;if((c[(c[p>>2]|0)+20>>2]|0)>>>0<=(c[m>>2]|0)>>>0){c[q>>2]=(c[p>>2]|0)+12;c[o>>2]=(c[o>>2]|0)+1}c[p>>2]=c[(c[p>>2]|0)+12>>2]}}else c[o>>2]=1;while(0);a=(c[l>>2]|0)+192|0;c[a>>2]=(c[a>>2]|0)+(c[o>>2]|0);if((c[(c[j>>2]|0)+20>>2]|0)==1)bk(c[j>>2]|0);c[n>>2]=ik(c[(c[l>>2]|0)+208>>2]|0,c[(c[l>>2]|0)+152>>2]|0,c[j>>2]|0,c[m>>2]|0,c[g>>2]|0,d[(c[l>>2]|0)+10>>0]|0)|0;if(c[n>>2]|0){a=c[n>>2]|0;i=h;return a|0}if(!(c[(c[l>>2]|0)+88>>2]|0)){a=c[n>>2]|0;i=h;return a|0}c[k>>2]=c[j>>2];while(1){if(!(c[k>>2]|0))break;Ii(c[(c[l>>2]|0)+88>>2]|0,c[(c[k>>2]|0)+20>>2]|0,c[(c[k>>2]|0)+4>>2]|0);c[k>>2]=c[(c[k>>2]|0)+12>>2]}a=c[n>>2]|0;i=h;return a|0}function _j(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;k=i;i=i+48|0;g=k+24|0;j=k+20|0;o=k+16|0;h=k+12|0;l=k+8|0;m=k;n=k+40|0;f=k+28|0;c[j>>2]=b;c[o>>2]=e;c[h>>2]=dk(c[j>>2]|0)|0;if(c[h>>2]|0){c[g>>2]=c[h>>2];b=c[g>>2]|0;i=k;return b|0}do if(!(a[(c[j>>2]|0)+7>>0]|0)){if((c[c[(c[j>>2]|0)+64>>2]>>2]|0)!=0?(d[(c[j>>2]|0)+5>>0]|0)!=4:0){c[l>>2]=Ai(c[(c[j>>2]|0)+60>>2]|0)|0;if(!(c[l>>2]&512)){a[f+0>>0]=a[4384]|0;a[f+1>>0]=a[4385]|0;a[f+2>>0]=a[4386]|0;a[f+3>>0]=a[4387]|0;a[f+4>>0]=a[4388]|0;a[f+5>>0]=a[4389]|0;a[f+6>>0]=a[4390]|0;a[f+7>>0]=a[4391]|0;ck(f+8|0,c[(c[j>>2]|0)+44>>2]|0);e=Oi(c[j>>2]|0)|0;b=m;c[b>>2]=e;c[b+4>>2]=D;b=m;c[h>>2]=Ei(c[(c[j>>2]|0)+64>>2]|0,n,8,c[b>>2]|0,c[b+4>>2]|0)|0;if((c[h>>2]|0)==0?0==(TE(n,4384,8)|0):0){b=m;c[h>>2]=id(c[(c[j>>2]|0)+64>>2]|0,4600,1,c[b>>2]|0,c[b+4>>2]|0)|0}if((c[h>>2]|0)!=0&(c[h>>2]|0)!=522){c[g>>2]=c[h>>2];b=c[g>>2]|0;i=k;return b|0}if(((d[(c[j>>2]|0)+8>>0]|0)!=0?0==(c[l>>2]&1024|0):0)?(c[h>>2]=Yh(c[(c[j>>2]|0)+64>>2]|0,d[(c[j>>2]|0)+11>>0]|0)|0,(c[h>>2]|0)!=0):0){c[g>>2]=c[h>>2];b=c[g>>2]|0;i=k;return b|0}b=(c[j>>2]|0)+80|0;c[h>>2]=id(c[(c[j>>2]|0)+64>>2]|0,f,12,c[b>>2]|0,c[b+4>>2]|0)|0;if(c[h>>2]|0){c[g>>2]=c[h>>2];b=c[g>>2]|0;i=k;return b|0}}if(0==(c[l>>2]&1024|0)?(c[h>>2]=Yh(c[(c[j>>2]|0)+64>>2]|0,d[(c[j>>2]|0)+11>>0]|((d[(c[j>>2]|0)+11>>0]|0)==3?16:0))|0,(c[h>>2]|0)!=0):0){c[g>>2]=c[h>>2];b=c[g>>2]|0;i=k;return b|0}m=(c[j>>2]|0)+72|0;n=c[m+4>>2]|0;b=(c[j>>2]|0)+80|0;c[b>>2]=c[m>>2];c[b+4>>2]=n;if(!(c[o>>2]|0))break;if(c[l>>2]&512)break;c[(c[j>>2]|0)+44>>2]=0;c[h>>2]=ek(c[j>>2]|0)|0;if(!(c[h>>2]|0))break;c[g>>2]=c[h>>2];b=c[g>>2]|0;i=k;return b|0}n=(c[j>>2]|0)+72|0;o=c[n+4>>2]|0;b=(c[j>>2]|0)+80|0;c[b>>2]=c[n>>2];c[b+4>>2]=o}while(0);fk(c[(c[j>>2]|0)+204>>2]|0);a[(c[j>>2]|0)+16>>0]=4;c[g>>2]=0;b=c[g>>2]|0;i=k;return b|0}function $j(b,d){b=b|0;d=d|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;l=i;i=i+48|0;h=l+32|0;f=l+28|0;g=l+24|0;n=l+8|0;j=l+20|0;k=l;m=l+16|0;c[h>>2]=b;c[f>>2]=d;c[g>>2]=0;if(!(c[c[(c[h>>2]|0)+60>>2]>>2]|0))c[g>>2]=ak(c[h>>2]|0,c[(c[h>>2]|0)+60>>2]|0,c[(c[h>>2]|0)+144>>2]|0)|0;do if((c[g>>2]|0)==0?(c[(c[h>>2]|0)+36>>2]|0)>>>0<(c[(c[h>>2]|0)+24>>2]|0)>>>0:0){if((c[(c[f>>2]|0)+12>>2]|0)==0?(c[(c[f>>2]|0)+20>>2]|0)>>>0<=(c[(c[h>>2]|0)+36>>2]|0)>>>0:0)break;d=c[(c[h>>2]|0)+152>>2]|0;d=lF(d|0,((d|0)<0)<<31>>31|0,c[(c[h>>2]|0)+24>>2]|0,0)|0;b=n;c[b>>2]=d;c[b+4>>2]=D;rj(c[(c[h>>2]|0)+60>>2]|0,5,n);c[(c[h>>2]|0)+36>>2]=c[(c[h>>2]|0)+24>>2]}while(0);while(1){if(!((c[g>>2]|0)==0&(c[f>>2]|0)!=0))break;c[j>>2]=c[(c[f>>2]|0)+20>>2];if((c[j>>2]|0)>>>0<=(c[(c[h>>2]|0)+24>>2]|0)>>>0?0==((e[(c[f>>2]|0)+24>>1]|0)&32|0):0){d=c[(c[h>>2]|0)+152>>2]|0;d=lF((c[j>>2]|0)-1|0,0,d|0,((d|0)<0)<<31>>31|0)|0;b=k;c[b>>2]=d;c[b+4>>2]=D;if((c[(c[f>>2]|0)+20>>2]|0)==1)bk(c[f>>2]|0);c[m>>2]=c[(c[f>>2]|0)+4>>2];b=k;c[g>>2]=id(c[(c[h>>2]|0)+60>>2]|0,c[m>>2]|0,c[(c[h>>2]|0)+152>>2]|0,c[b>>2]|0,c[b+4>>2]|0)|0;if((c[j>>2]|0)==1){b=(c[h>>2]|0)+100|0;d=(c[m>>2]|0)+24|0;n=b+16|0;do{a[b>>0]=a[d>>0]|0;b=b+1|0;d=d+1|0}while((b|0)<(n|0))}if((c[j>>2]|0)>>>0>(c[(c[h>>2]|0)+32>>2]|0)>>>0)c[(c[h>>2]|0)+32>>2]=c[j>>2];b=(c[h>>2]|0)+192|0;c[b>>2]=(c[b>>2]|0)+1;Ii(c[(c[h>>2]|0)+88>>2]|0,c[j>>2]|0,c[(c[f>>2]|0)+4>>2]|0)}c[f>>2]=c[(c[f>>2]|0)+12>>2]}i=l;return c[g>>2]|0}function ak(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;f=i;i=i+16|0;j=f+12|0;h=f+8|0;g=f+4|0;e=f;c[j>>2]=a;c[h>>2]=b;c[g>>2]=d;c[g>>2]=c[g>>2]|30;c[e>>2]=Di(c[c[j>>2]>>2]|0,0,c[h>>2]|0,c[g>>2]|0,0)|0;i=f;return c[e>>2]|0}function bk(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+16|0;d=b+4|0;e=b;c[d>>2]=a;c[e>>2]=(Hh((c[(c[d>>2]|0)+16>>2]|0)+100|0)|0)+1;ck((c[(c[d>>2]|0)+4>>2]|0)+24|0,c[e>>2]|0);ck((c[(c[d>>2]|0)+4>>2]|0)+92|0,c[e>>2]|0);ck((c[(c[d>>2]|0)+4>>2]|0)+96|0,3008007);i=b;return}function ck(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=i;i=i+16|0;f=e+4|0;g=e;c[f>>2]=b;c[g>>2]=d;a[c[f>>2]>>0]=(c[g>>2]|0)>>>24;a[(c[f>>2]|0)+1>>0]=(c[g>>2]|0)>>>16;a[(c[f>>2]|0)+2>>0]=(c[g>>2]|0)>>>8;a[(c[f>>2]|0)+3>>0]=c[g>>2];i=e;return}function dk(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+16|0;e=b+4|0;d=b;c[e>>2]=a;c[d>>2]=0;if(ai(c[e>>2]|0)|0){e=c[d>>2]|0;i=b;return e|0}c[d>>2]=gk(c[e>>2]|0,4)|0;e=c[d>>2]|0;i=b;return e|0} + + + +function Dz(f,g,h,j,k,l,m,n,o){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;var p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,E=0,F=0,G=0,H=0,I=0,J=0;C=i;i=i+80|0;q=C+72|0;r=C+68|0;B=C+64|0;A=C;p=C+60|0;E=C+56|0;F=C+52|0;H=C+48|0;J=C+44|0;s=C+40|0;y=C+36|0;G=C+32|0;w=C+28|0;t=C+24|0;I=C+20|0;z=C+16|0;u=C+12|0;x=C+8|0;v=C+76|0;c[r>>2]=f;c[B>>2]=g;f=A;c[f>>2]=h;c[f+4>>2]=j;c[p>>2]=k;c[E>>2]=l;c[F>>2]=m;c[H>>2]=n;c[J>>2]=o;c[y>>2]=c[J>>2];c[G>>2]=0;c[I>>2]=c[c[r>>2]>>2];c[z>>2]=c[(c[I>>2]|0)+4>>2];c[x>>2]=0;if((d[(c[r>>2]|0)+73>>0]|0)==4){c[q>>2]=c[(c[r>>2]|0)+68>>2];J=c[q>>2]|0;i=C;return J|0}c[s>>2]=Hy(c[z>>2]|0,c[(c[r>>2]|0)+60>>2]|0,c[r>>2]|0)|0;if(c[s>>2]|0){c[q>>2]=c[s>>2];J=c[q>>2]|0;i=C;return J|0}if(((c[(c[r>>2]|0)+16>>2]|0)==0?(J=A,sB(c[I>>2]|0,c[J>>2]|0,c[J+4>>2]|0,0),J=A,f=c[J+4>>2]|0,(d[(c[r>>2]|0)+72>>0]&2|0)!=0&((f|0)>0|(f|0)==0&(c[J>>2]|0)>>>0>0)):0)?(J=(c[r>>2]|0)+24|0,g=c[J>>2]|0,J=c[J+4>>2]|0,f=A,f=ZE(c[f>>2]|0,c[f+4>>2]|0,1,0)|0,(g|0)==(f|0)&(J|0)==(D|0)):0)c[y>>2]=-1;if((c[y>>2]|0)==0?(J=A,c[s>>2]=Dw(c[r>>2]|0,c[B>>2]|0,c[J>>2]|0,c[J+4>>2]|0,c[H>>2]|0,y)|0,(c[s>>2]|0)!=0):0){c[q>>2]=c[s>>2];J=c[q>>2]|0;i=C;return J|0}c[t>>2]=c[(c[r>>2]|0)+120+(b[(c[r>>2]|0)+76>>1]<<2)>>2];c[x>>2]=c[(c[z>>2]|0)+80>>2];J=A;c[s>>2]=zC(c[t>>2]|0,c[x>>2]|0,c[B>>2]|0,c[J>>2]|0,c[J+4>>2]|0,c[p>>2]|0,c[E>>2]|0,c[F>>2]|0,G)|0;do if(!(c[s>>2]|0)){c[w>>2]=e[(c[r>>2]|0)+78+(b[(c[r>>2]|0)+76>>1]<<1)>>1];if(!(c[y>>2]|0)){c[s>>2]=gd(c[(c[t>>2]|0)+68>>2]|0)|0;if(c[s>>2]|0)break;c[u>>2]=(c[(c[t>>2]|0)+56>>2]|0)+(e[(c[t>>2]|0)+20>>1]&(d[(c[(c[t>>2]|0)+64>>2]|0)+(c[w>>2]<<1)>>0]<<8|d[(c[(c[t>>2]|0)+64>>2]|0)+(c[w>>2]<<1)+1>>0]));if(!(a[(c[t>>2]|0)+5>>0]|0)){J=c[x>>2]|0;f=c[u>>2]|0;a[J+0>>0]=a[f+0>>0]|0;a[J+1>>0]=a[f+1>>0]|0;a[J+2>>0]=a[f+2>>0]|0;a[J+3>>0]=a[f+3>>0]|0}c[s>>2]=uB(c[t>>2]|0,c[u>>2]|0,v)|0;mC(c[t>>2]|0,c[w>>2]|0,e[v>>1]|0,s);if(c[s>>2]|0)break}else if((c[y>>2]|0)<0?(e[(c[t>>2]|0)+18>>1]|0)>0:0){f=(c[r>>2]|0)+78+(b[(c[r>>2]|0)+76>>1]<<1)|0;J=(b[f>>1]|0)+1<<16>>16;b[f>>1]=J;c[w>>2]=J&65535}nC(c[t>>2]|0,c[w>>2]|0,c[x>>2]|0,c[G>>2]|0,0,0,s);b[(c[r>>2]|0)+44>>1]=0;if((c[s>>2]|0)==0?(d[(c[t>>2]|0)+1>>0]|0)!=0:0){J=(c[r>>2]|0)+72|0;a[J>>0]=d[J>>0]&-3;c[s>>2]=oC(c[r>>2]|0)|0;a[(c[(c[r>>2]|0)+120+(b[(c[r>>2]|0)+76>>1]<<2)>>2]|0)+1>>0]=0;a[(c[r>>2]|0)+73>>0]=0}}while(0);c[q>>2]=c[s>>2];J=c[q>>2]|0;i=C;return J|0}function Ez(f){f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;h=i;i=i+64|0;g=h+52|0;j=h+48|0;v=h+44|0;q=h+40|0;l=h+36|0;s=h+32|0;o=h+28|0;t=h+24|0;k=h+20|0;u=h+56|0;w=h+16|0;p=h+12|0;m=h+8|0;n=h+4|0;r=h;c[j>>2]=f;c[v>>2]=c[c[j>>2]>>2];c[q>>2]=c[(c[v>>2]|0)+4>>2];if((e[(c[j>>2]|0)+78+(b[(c[j>>2]|0)+76>>1]<<1)>>1]|0)<(e[(c[(c[j>>2]|0)+120+(b[(c[j>>2]|0)+76>>1]<<2)>>2]|0)+18>>1]|0)?(d[(c[j>>2]|0)+73>>0]|0)==1:0){c[k>>2]=b[(c[j>>2]|0)+76>>1];c[t>>2]=e[(c[j>>2]|0)+78+(c[k>>2]<<1)>>1];c[s>>2]=c[(c[j>>2]|0)+120+(c[k>>2]<<2)>>2];c[o>>2]=(c[(c[s>>2]|0)+56>>2]|0)+(e[(c[s>>2]|0)+20>>1]&(d[(c[(c[s>>2]|0)+64>>2]|0)+(c[t>>2]<<1)>>0]<<8|d[(c[(c[s>>2]|0)+64>>2]|0)+(c[t>>2]<<1)+1>>0]));if((a[(c[s>>2]|0)+5>>0]|0)==0?(c[w>>2]=0,c[l>>2]=tw(c[j>>2]|0,w)|0,(c[l>>2]|0)!=0):0){c[g>>2]=c[l>>2];w=c[g>>2]|0;i=h;return w|0}c[l>>2]=Hy(c[q>>2]|0,c[(c[j>>2]|0)+60>>2]|0,c[j>>2]|0)|0;if(c[l>>2]|0){c[g>>2]=c[l>>2];w=c[g>>2]|0;i=h;return w|0}if(!(c[(c[j>>2]|0)+16>>2]|0)){w=(c[j>>2]|0)+24|0;sB(c[v>>2]|0,c[w>>2]|0,c[w+4>>2]|0,0)}c[l>>2]=gd(c[(c[s>>2]|0)+68>>2]|0)|0;if(c[l>>2]|0){c[g>>2]=c[l>>2];w=c[g>>2]|0;i=h;return w|0}c[l>>2]=uB(c[s>>2]|0,c[o>>2]|0,u)|0;mC(c[s>>2]|0,c[t>>2]|0,e[u>>1]|0,l);if(c[l>>2]|0){c[g>>2]=c[l>>2];w=c[g>>2]|0;i=h;return w|0}if((a[(c[s>>2]|0)+5>>0]|0)==0?(c[p>>2]=c[(c[j>>2]|0)+120+(b[(c[j>>2]|0)+76>>1]<<2)>>2],c[n>>2]=c[(c[(c[j>>2]|0)+120+((c[k>>2]|0)+1<<2)>>2]|0)+72>>2],c[o>>2]=(c[(c[p>>2]|0)+56>>2]|0)+(e[(c[p>>2]|0)+20>>1]&(d[(c[(c[p>>2]|0)+64>>2]|0)+((e[(c[p>>2]|0)+18>>1]|0)-1<<1)>>0]<<8|d[(c[(c[p>>2]|0)+64>>2]|0)+((e[(c[p>>2]|0)+18>>1]|0)-1<<1)+1>>0])),c[m>>2]=(lB(c[p>>2]|0,c[o>>2]|0)|0)&65535,c[r>>2]=c[(c[q>>2]|0)+80>>2],c[l>>2]=gd(c[(c[p>>2]|0)+68>>2]|0)|0,nC(c[s>>2]|0,c[t>>2]|0,(c[o>>2]|0)+ -4|0,(c[m>>2]|0)+4|0,c[r>>2]|0,c[n>>2]|0,l),mC(c[p>>2]|0,(e[(c[p>>2]|0)+18>>1]|0)-1|0,c[m>>2]|0,l),(c[l>>2]|0)!=0):0){c[g>>2]=c[l>>2];w=c[g>>2]|0;i=h;return w|0}c[l>>2]=oC(c[j>>2]|0)|0;if((c[l>>2]|0)==0?(b[(c[j>>2]|0)+76>>1]|0)>(c[k>>2]|0):0){while(1){m=c[j>>2]|0;if((b[(c[j>>2]|0)+76>>1]|0)<=(c[k>>2]|0))break;v=m+76|0;w=b[v>>1]|0;b[v>>1]=w+ -1<<16>>16;Rk(c[(c[j>>2]|0)+120+(w<<16>>16<<2)>>2]|0)}c[l>>2]=oC(m)|0}if(!(c[l>>2]|0))Iw(c[j>>2]|0)|0;c[g>>2]=c[l>>2];w=c[g>>2]|0;i=h;return w|0}c[g>>2]=1;w=c[g>>2]|0;i=h;return w|0}function Fz(a,d,f,g){a=a|0;d=d|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;l=i;i=i+48|0;k=l+44|0;t=l+40|0;m=l+36|0;p=l+32|0;j=l+28|0;n=l+24|0;h=l+20|0;s=l+16|0;o=l+12|0;r=l+8|0;q=l+4|0;c[t>>2]=a;c[m>>2]=d;c[p>>2]=f;c[j>>2]=g;c[n>>2]=c[(c[t>>2]|0)+56>>2];c[h>>2]=c[(c[n>>2]|0)+32>>2];c[s>>2]=c[(c[t>>2]|0)+8>>2];do if(!(c[h>>2]|0)){t=Ew(c[s>>2]|0,0,0,l)|0;c[(c[n>>2]|0)+32>>2]=t;c[h>>2]=t;if(c[h>>2]|0){b[(c[h>>2]|0)+4>>1]=c[p>>2];break}c[k>>2]=7;t=c[k>>2]|0;i=l;return t|0}while(0);c[r>>2]=lC(c[n>>2]|0,q)|0;Fw(c[s>>2]|0,c[q>>2]|0,c[r>>2]|0,c[h>>2]|0);c[o>>2]=0;while(1){if((c[o>>2]|0)>=(c[p>>2]|0)){n=10;break}if((e[(c[(c[h>>2]|0)+8>>2]|0)+((c[o>>2]|0)*40|0)+8>>1]|0)&1){n=8;break}c[o>>2]=(c[o>>2]|0)+1}if((n|0)==8){c[c[j>>2]>>2]=-1;c[k>>2]=0;t=c[k>>2]|0;i=l;return t|0}else if((n|0)==10){t=Uw(c[(c[m>>2]|0)+12>>2]|0,c[(c[m>>2]|0)+16>>2]|0,c[h>>2]|0)|0;c[c[j>>2]>>2]=t;c[k>>2]=0;t=c[k>>2]|0;i=l;return t|0}return 0}function Gz(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;f=i;i=i+32|0;g=f+20|0;m=f+16|0;k=f+12|0;l=f+8|0;j=f+4|0;h=f;c[m>>2]=a;c[k>>2]=d;c[l>>2]=c[(c[m>>2]|0)+56>>2];c[j>>2]=lC(c[l>>2]|0,h)|0;if(Lp(c[k>>2]|0,c[h>>2]|0)|0){c[g>>2]=7;m=c[g>>2]|0;i=f;return m|0}else{c[(c[k>>2]|0)+12>>2]=c[h>>2];b[(c[k>>2]|0)+8>>1]=(e[(c[k>>2]|0)+8>>1]|0)&-16896|16;dF(c[(c[k>>2]|0)+16>>2]|0,c[j>>2]|0,c[h>>2]|0)|0;c[g>>2]=0;m=c[g>>2]|0;i=f;return m|0}return 0}function Hz(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;i=i+16|0;f=d+8|0;e=d+4|0;g=d;c[f>>2]=a;c[e>>2]=b;c[g>>2]=c[c[f>>2]>>2];Xb(c[g>>2]|0,c[(c[f>>2]|0)+44>>2]|0);a=ne(c[g>>2]|0,c[(c[e>>2]|0)+8>>2]|0)|0;c[(c[f>>2]|0)+44>>2]=a;hc(c[(c[e>>2]|0)+8>>2]|0);c[(c[e>>2]|0)+8>>2]=0;i=d;return}function Iz(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+16|0;d=b+4|0;e=b;c[e>>2]=a;if(iC(c[c[e>>2]>>2]|0)|0){c[d>>2]=jC(c[e>>2]|0)|0;e=c[d>>2]|0;i=b;return e|0}else{c[d>>2]=0;e=c[d>>2]|0;i=b;return e|0}return 0}function Jz(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0;g=i;i=i+32|0;f=g+16|0;k=g+12|0;j=g+8|0;h=g+4|0;e=g;c[k>>2]=a;c[j>>2]=b;c[h>>2]=c[(c[k>>2]|0)+56>>2];c[e>>2]=0;b=c[h>>2]|0;if(d[(c[h>>2]|0)+56>>0]|0){c[e>>2]=EB(b)|0;c[e>>2]=c[e>>2];if(!(c[e>>2]|0)){c[e>>2]=ZB(c[h>>2]|0)|0;c[c[j>>2]>>2]=0}c[f>>2]=c[e>>2];k=c[f>>2]|0;i=g;return k|0}j=c[j>>2]|0;if(c[b+36>>2]|0){c[j>>2]=0;c[e>>2]=HB((c[h>>2]|0)+64|0,(c[h>>2]|0)+36|0)|0}else c[j>>2]=1;c[f>>2]=c[e>>2];k=c[f>>2]|0;i=g;return k|0}function Kz(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0;f=i;i=i+16|0;g=f+8|0;h=f+4|0;e=f;c[g>>2]=a;c[h>>2]=b;c[e>>2]=Iw(c[g>>2]|0)|0;do if(!(c[e>>2]|0)){b=c[h>>2]|0;if(!(d[(c[g>>2]|0)+73>>0]|0)){c[b>>2]=1;break}else{c[b>>2]=0;c[e>>2]=bx(c[g>>2]|0)|0;break}}while(0);i=f;return c[e>>2]|0}function Lz(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;f=i;i=i+32|0;k=f+20|0;m=f+16|0;h=f+12|0;j=f+8|0;g=f+4|0;l=f;c[k>>2]=b;c[m>>2]=d;c[h>>2]=e;c[j>>2]=c[(c[m>>2]|0)+56>>2];e=c[j>>2]|0;if(a[(c[j>>2]|0)+56>>0]|0){c[g>>2]=QB(c[e+20>>2]|0,c[h>>2]|0)|0;m=c[g>>2]|0;i=f;return m|0}c[l>>2]=c[e+36>>2];c[(c[j>>2]|0)+36>>2]=c[(c[l>>2]|0)+4>>2];c[(c[l>>2]|0)+4>>2]=0;if(!(c[(c[j>>2]|0)+40>>2]|0))oB(c[k>>2]|0,c[l>>2]|0);c[c[h>>2]>>2]=((c[(c[j>>2]|0)+36>>2]|0)!=0^1)&1;c[g>>2]=0;m=c[g>>2]|0;i=f;return m|0}function Mz(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;e=i;i=i+48|0;l=e+44|0;q=e+40|0;j=e+36|0;k=e+32|0;d=e+28|0;h=e+24|0;p=e+20|0;n=e+16|0;o=e+12|0;g=e+8|0;f=e+4|0;m=e;c[q>>2]=a;c[j>>2]=b;c[k>>2]=c[(c[q>>2]|0)+56>>2];c[d>>2]=0;c[n>>2]=(c[(c[j>>2]|0)+12>>2]|0)+8;b=c[(c[j>>2]|0)+12>>2]|0;a=c[(c[j>>2]|0)+12>>2]|0;c[o>>2]=b+(Zw(a,((a|0)<0)<<31>>31)|0);if(c[(c[k>>2]|0)+4>>2]|0){b=c[k>>2]|0;if(c[(c[k>>2]|0)+40>>2]|0){if(c[b+48>>2]|0)b=((c[(c[k>>2]|0)+48>>2]|0)+(c[n>>2]|0)|0)>(c[(c[k>>2]|0)+4>>2]|0);else b=0;c[p>>2]=b&1}else{if((c[b+44>>2]|0)<=(c[(c[k>>2]|0)+4>>2]|0))if((c[(c[k>>2]|0)+44>>2]|0)>(c[c[k>>2]>>2]|0))b=(sl()|0)!=0;else b=0;else b=1;c[p>>2]=b&1}if(c[p>>2]|0){c[d>>2]=EB(c[k>>2]|0)|0;c[(c[k>>2]|0)+44>>2]=0;c[(c[k>>2]|0)+48>>2]=0}}q=(c[k>>2]|0)+44|0;c[q>>2]=(c[q>>2]|0)+(c[o>>2]|0);if((c[o>>2]|0)>(c[(c[k>>2]|0)+8>>2]|0))c[(c[k>>2]|0)+8>>2]=c[o>>2];do if(c[(c[k>>2]|0)+40>>2]|0){c[g>>2]=(c[(c[k>>2]|0)+48>>2]|0)+(c[n>>2]|0);do if((c[g>>2]|0)>(c[(c[k>>2]|0)+52>>2]|0)){c[m>>2]=c[(c[k>>2]|0)+52>>2]<<1;while(1){o=c[m>>2]|0;if((c[m>>2]|0)>=(c[g>>2]|0))break;c[m>>2]=o<<1}if((o|0)>(c[(c[k>>2]|0)+4>>2]|0))c[m>>2]=c[(c[k>>2]|0)+4>>2];if((c[m>>2]|0)<(c[g>>2]|0))c[m>>2]=c[g>>2];q=c[m>>2]|0;c[f>>2]=kc(c[(c[k>>2]|0)+40>>2]|0,q,((q|0)<0)<<31>>31)|0;if(c[f>>2]|0){c[(c[k>>2]|0)+36>>2]=(c[f>>2]|0)+((c[(c[k>>2]|0)+36>>2]|0)-(c[(c[k>>2]|0)+40>>2]|0));c[(c[k>>2]|0)+40>>2]=c[f>>2];c[(c[k>>2]|0)+52>>2]=c[m>>2];break}c[l>>2]=7;q=c[l>>2]|0;i=e;return q|0}while(0);c[h>>2]=(c[(c[k>>2]|0)+40>>2]|0)+(c[(c[k>>2]|0)+48>>2]|0);q=(c[k>>2]|0)+48|0;c[q>>2]=(c[q>>2]|0)+((c[n>>2]|0)+7&-8);c[(c[h>>2]|0)+4>>2]=(c[(c[k>>2]|0)+36>>2]|0)-(c[(c[k>>2]|0)+40>>2]|0)}else{q=c[n>>2]|0;c[h>>2]=gc(q,((q|0)<0)<<31>>31)|0;if(c[h>>2]|0){c[(c[h>>2]|0)+4>>2]=c[(c[k>>2]|0)+36>>2];break}c[l>>2]=7;q=c[l>>2]|0;i=e;return q|0}while(0);dF((c[h>>2]|0)+8|0,c[(c[j>>2]|0)+16>>2]|0,c[(c[j>>2]|0)+12>>2]|0)|0;c[c[h>>2]>>2]=c[(c[j>>2]|0)+12>>2];c[(c[k>>2]|0)+36>>2]=c[h>>2];c[l>>2]=c[d>>2];q=c[l>>2]|0;i=e;return q|0}function Nz(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;l=i;i=i+128|0;g=l+116|0;r=l+112|0;q=l+108|0;m=l+104|0;p=l+80|0;o=l+100|0;n=l+96|0;k=l+92|0;j=l+88|0;h=l+40|0;f=l;c[r>>2]=a;c[q>>2]=b;c[m>>2]=e;a=p;c[a>>2]=0;c[a+4>>2]=0;Ly(c[q>>2]|0,p)|0;en(h,c[r>>2]|0,0);c[o>>2]=mz(c[q>>2]|0,0,c[p>>2]|0,1,h)|0;if(c[o>>2]|0){c[g>>2]=c[o>>2];r=c[g>>2]|0;i=l;return r|0}e=c[h+16>>2]|0;if((d[c[h+16>>2]>>0]|0|0)<128)c[n>>2]=d[e>>0];else Rw(e,n)|0;if((c[n>>2]|0)>>>0>=3?(c[n>>2]|0)<=(c[h+12>>2]|0):0){e=(c[h+16>>2]|0)+((c[n>>2]|0)-1)|0;if((d[(c[h+16>>2]|0)+((c[n>>2]|0)-1)>>0]|0|0)<128)c[k>>2]=d[e>>0];else Rw(e,k)|0;if(!((c[k>>2]|0)>>>0<1|(c[k>>2]|0)>>>0>9|(c[k>>2]|0)==7)?(c[j>>2]=Ww(c[k>>2]|0)|0,(c[h+12>>2]|0)>>>0>=((c[n>>2]|0)+(c[j>>2]|0)|0)>>>0):0){Xw((c[h+16>>2]|0)+((c[h+12>>2]|0)-(c[j>>2]|0))|0,c[k>>2]|0,f)|0;p=f;q=c[p+4>>2]|0;r=c[m>>2]|0;c[r>>2]=c[p>>2];c[r+4>>2]=q;Bd(h);c[g>>2]=0;r=c[g>>2]|0;i=l;return r|0}}Bd(h);c[g>>2]=kj(67174)|0;r=c[g>>2]|0;i=l;return r|0}function Oz(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;l=i;i=i+80|0;g=l+72|0;m=l+68|0;n=l+64|0;f=l+60|0;h=l+56|0;o=l+40|0;j=l+52|0;p=l+48|0;k=l;c[m>>2]=a;c[n>>2]=b;c[f>>2]=d;c[h>>2]=e;d=o;c[d>>2]=0;c[d+4>>2]=0;c[p>>2]=c[c[n>>2]>>2];Ly(c[p>>2]|0,o)|0;d=o;e=c[d+4>>2]|0;a=o;b=c[a+4>>2]|0;if((e|0)<0|(e|0)==0&(c[d>>2]|0)>>>0<=0|((b|0)>0|(b|0)==0&(c[a>>2]|0)>>>0>2147483647)){c[c[h>>2]>>2]=0;c[g>>2]=kj(67206)|0;p=c[g>>2]|0;i=l;return p|0}en(k,c[m>>2]|0,0);c[j>>2]=mz(c[c[n>>2]>>2]|0,0,c[o>>2]|0,1,k)|0;if(c[j>>2]|0){c[g>>2]=c[j>>2];p=c[g>>2]|0;i=l;return p|0}else{p=Uw(c[k+12>>2]|0,c[k+16>>2]|0,c[f>>2]|0)|0;c[c[h>>2]>>2]=p;Bd(k);c[g>>2]=0;p=c[g>>2]|0;i=l;return p|0}return 0}function Pz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;f=i;i=i+16|0;j=f+12|0;h=f+8|0;g=f+4|0;e=f;c[j>>2]=a;c[h>>2]=b;c[g>>2]=d;Pc(c[j>>2]|0);c[e>>2]=DB(c[j>>2]|0,c[h>>2]|0,c[g>>2]|0)|0;i=f;return c[e>>2]|0}function Qz(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;l=i;i=i+48|0;p=l+32|0;o=l+28|0;k=l+24|0;g=l+20|0;j=l+16|0;m=l+12|0;f=l+8|0;n=l+4|0;h=l;c[p>>2]=a;c[o>>2]=b;c[k>>2]=d;c[g>>2]=e;c[f>>2]=(c[(c[p>>2]|0)+16>>2]|0)+(c[o>>2]<<4);c[m>>2]=(c[(c[f>>2]|0)+12>>2]|0)+8;c[j>>2]=c[(c[m>>2]|0)+8>>2];while(1){if(!(c[j>>2]|0))break;c[n>>2]=c[(c[j>>2]|0)+8>>2];if((c[(c[n>>2]|0)+32>>2]|0)==(c[k>>2]|0))c[(c[n>>2]|0)+32>>2]=c[g>>2];c[j>>2]=c[c[j>>2]>>2]}c[m>>2]=(c[(c[f>>2]|0)+12>>2]|0)+24;c[j>>2]=c[(c[m>>2]|0)+8>>2];while(1){if(!(c[j>>2]|0))break;c[h>>2]=c[(c[j>>2]|0)+8>>2];if((c[(c[h>>2]|0)+44>>2]|0)==(c[k>>2]|0))c[(c[h>>2]|0)+44>>2]=c[g>>2];c[j>>2]=c[c[j>>2]>>2]}i=l;return}function Rz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;e=i;i=i+32|0;g=e+16|0;j=e+12|0;k=e+8|0;f=e+4|0;h=e;c[g>>2]=a;c[j>>2]=b;c[k>>2]=d;c[h>>2]=c[(c[g>>2]|0)+4>>2];Pc(c[g>>2]|0);c[f>>2]=Hy(c[h>>2]|0,c[j>>2]|0,0)|0;if(c[f>>2]|0){a=c[f>>2]|0;i=e;return a|0}sB(c[g>>2]|0,0,0,1);c[f>>2]=tB(c[h>>2]|0,c[j>>2]|0,0,c[k>>2]|0)|0;a=c[f>>2]|0;i=e;return a|0}function Sz(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;h=i;i=i+16|0;g=h+12|0;f=h+8|0;j=h+4|0;k=h;c[g>>2]=b;c[f>>2]=e;mB(c[(c[f>>2]|0)+20>>2]|0);c[(c[f>>2]|0)+20>>2]=0;c[j>>2]=0;while(1){if((c[j>>2]|0)>=(d[(c[f>>2]|0)+59>>0]|0|0))break;c[k>>2]=(c[f>>2]|0)+64+(c[j>>2]<<6);nB(c[g>>2]|0,c[k>>2]|0);c[j>>2]=(c[j>>2]|0)+1}if(!(c[(c[f>>2]|0)+40>>2]|0))oB(0,c[(c[f>>2]|0)+36>>2]|0);c[(c[f>>2]|0)+36>>2]=0;c[(c[f>>2]|0)+44>>2]=0;a[(c[f>>2]|0)+56>>0]=0;c[(c[f>>2]|0)+48>>2]=0;c[(c[f>>2]|0)+8>>2]=0;Xb(c[g>>2]|0,c[(c[f>>2]|0)+32>>2]|0);c[(c[f>>2]|0)+32>>2]=0;i=h;return}function Tz(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;a=Rz(c[c[d>>2]>>2]|0,c[(c[d>>2]|0)+60>>2]|0,0)|0;i=b;return a|0}function Uz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;e=i;i=i+32|0;f=e+16|0;k=e+12|0;h=e+8|0;g=e+4|0;j=e;c[f>>2]=a;c[k>>2]=b;c[h>>2]=d;c[j>>2]=(c[(c[f>>2]|0)+16>>2]|0)+(c[k>>2]<<4);c[g>>2]=gh((c[(c[j>>2]|0)+12>>2]|0)+8|0,c[h>>2]|0,0)|0;Vb(c[f>>2]|0,c[g>>2]|0);a=(c[f>>2]|0)+24|0;c[a>>2]=c[a>>2]|2;i=e;return}function Vz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;e=i;i=i+32|0;f=e+20|0;l=e+16|0;j=e+12|0;h=e+8|0;k=e+4|0;g=e;c[f>>2]=a;c[l>>2]=b;c[j>>2]=d;c[k>>2]=(c[(c[(c[f>>2]|0)+16>>2]|0)+(c[l>>2]<<4)+12>>2]|0)+24;c[h>>2]=gh(c[k>>2]|0,c[j>>2]|0,0)|0;if(!(c[h>>2]|0)){l=c[f>>2]|0;l=l+24|0;k=c[l>>2]|0;k=k|2;c[l>>2]=k;i=e;return}d=c[h>>2]|0;if((c[(c[(c[h>>2]|0)+12>>2]|0)+8>>2]|0)!=(c[h>>2]|0)){c[g>>2]=c[(c[d+12>>2]|0)+8>>2];while(1){if(c[g>>2]|0)b=(c[(c[g>>2]|0)+20>>2]|0)!=(c[h>>2]|0);else b=0;d=c[g>>2]|0;if(!b)break;c[g>>2]=c[d+20>>2]}if((d|0)!=0?(c[(c[g>>2]|0)+20>>2]|0)==(c[h>>2]|0):0)c[(c[g>>2]|0)+20>>2]=c[(c[h>>2]|0)+20>>2]}else c[(c[(c[h>>2]|0)+12>>2]|0)+8>>2]=c[d+20>>2];ly(c[f>>2]|0,c[h>>2]|0);l=c[f>>2]|0;l=l+24|0;k=c[l>>2]|0;k=k|2;c[l>>2]=k;i=e;return}function Wz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;e=i;i=i+32|0;h=e+24|0;m=e+20|0;k=e+16|0;f=e+12|0;l=e+8|0;j=e+4|0;g=e;c[h>>2]=a;c[m>>2]=b;c[k>>2]=d;c[l>>2]=(c[(c[(c[h>>2]|0)+16>>2]|0)+(c[m>>2]<<4)+12>>2]|0)+40;c[f>>2]=gh(c[l>>2]|0,c[k>>2]|0,0)|0;if(!(c[f>>2]|0)){i=e;return}if((c[(c[f>>2]|0)+20>>2]|0)==(c[(c[f>>2]|0)+24>>2]|0)){c[j>>2]=Ct(c[f>>2]|0)|0;c[g>>2]=(c[j>>2]|0)+64;while(1){d=(c[c[g>>2]>>2]|0)+32|0;if((c[c[g>>2]>>2]|0)==(c[f>>2]|0))break;c[g>>2]=d}c[c[g>>2]>>2]=c[d>>2]}Ub(c[h>>2]|0,c[f>>2]|0);m=(c[h>>2]|0)+24|0;c[m>>2]=c[m>>2]|2;i=e;return}function Xz(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;p=i;i=i+224|0;q=p;k=p+108|0;u=p+104|0;r=p+100|0;s=p+96|0;t=p+92|0;l=p+88|0;j=p+84|0;m=p+80|0;o=p+12|0;n=p+8|0;c[u>>2]=b;c[r>>2]=e;c[s>>2]=f;c[t>>2]=g;c[l>>2]=h;c[n>>2]=c[(c[u>>2]|0)+4>>2];Pc(c[u>>2]|0);c[m>>2]=dB(c[c[n>>2]>>2]|0)|0;c[o>>2]=c[n>>2];c[o+4>>2]=c[c[n>>2]>>2];c[o+12>>2]=Aw(c[o>>2]|0)|0;c[o+16>>2]=c[t>>2];c[o+20>>2]=0;c[o+24>>2]=0;c[o+28>>2]=0;c[o+32>>2]=0;c[o+36>>2]=0;c[c[l>>2]>>2]=0;if(!(c[o+12>>2]|0)){c[k>>2]=0;u=c[k>>2]|0;i=p;return u|0}c[o+8>>2]=Mc((((c[o+12>>2]|0)>>>0)/8|0)+1|0,0)|0;if(!(c[o+8>>2]|0)){c[c[l>>2]>>2]=1;c[k>>2]=0;u=c[k>>2]|0;i=p;return u|0}c[j>>2]=(((c[282]|0)>>>0)/((c[(c[n>>2]|0)+32>>2]|0)>>>0)|0)+1;if((c[j>>2]|0)>>>0<=(c[o+12>>2]|0)>>>0)eB(o,c[j>>2]|0);nc(o+40|0,p+112|0,100,1e9);a[o+64>>0]=2;c[o+28>>2]=33320;u=Hh((c[(c[(c[n>>2]|0)+12>>2]|0)+56>>2]|0)+32|0)|0;fB(o,1,u,Hh((c[(c[(c[n>>2]|0)+12>>2]|0)+56>>2]|0)+36|0)|0);c[o+28>>2]=0;c[j>>2]=0;while(1){if((c[j>>2]|0)>=(c[s>>2]|0))break;if(!(c[o+16>>2]|0))break;if(c[(c[r>>2]|0)+(c[j>>2]<<2)>>2]|0){if((d[(c[n>>2]|0)+17>>0]|0)!=0?(c[(c[r>>2]|0)+(c[j>>2]<<2)>>2]|0)>1:0)gB(o,c[(c[r>>2]|0)+(c[j>>2]<<2)>>2]|0,1,0);c[o+28>>2]=33336;hB(o,c[(c[r>>2]|0)+(c[j>>2]<<2)>>2]|0,0,0)|0;c[o+28>>2]=0}c[j>>2]=(c[j>>2]|0)+1}c[j>>2]=1;while(1){if((c[j>>2]|0)>>>0>(c[o+12>>2]|0)>>>0)break;if(!(c[o+16>>2]|0))break;do if(!(iB(o,c[j>>2]|0)|0)){u=Pw(c[n>>2]|0,c[j>>2]|0)|0;if((u|0)==(c[j>>2]|0)?(a[(c[n>>2]|0)+17>>0]|0)!=0:0)break;c[q>>2]=c[j>>2];jB(o,33360,q)}while(0);if(((iB(o,c[j>>2]|0)|0)!=0?(u=Pw(c[n>>2]|0,c[j>>2]|0)|0,(u|0)==(c[j>>2]|0)):0)?(d[(c[n>>2]|0)+17>>0]|0)!=0:0){c[q>>2]=c[j>>2];jB(o,33384,q)}c[j>>2]=(c[j>>2]|0)+1}u=c[m>>2]|0;if((u|0)!=(dB(c[c[n>>2]>>2]|0)|0)){t=c[m>>2]|0;u=dB(c[c[n>>2]>>2]|0)|0;c[q>>2]=t;c[q+4>>2]=u;jB(o,33424,q)}hc(c[o+8>>2]|0);if(c[o+24>>2]|0){Zm(o+40|0);c[c[l>>2]>>2]=(c[o+20>>2]|0)+1;c[k>>2]=0;u=c[k>>2]|0;i=p;return u|0}c[c[l>>2]>>2]=c[o+20>>2];if(!(c[o+20>>2]|0))Zm(o+40|0);c[k>>2]=pc(o+40|0)|0;u=c[k>>2]|0;i=p;return u|0}function Yz(d){d=d|0;var e=0,f=0,g=0;e=i;i=i+16|0;f=e+4|0;g=e;c[f>>2]=d;c[g>>2]=c[(c[f>>2]|0)+32>>2];Bd(c[f>>2]|0);d=Qe(c[g>>2]|0,64,0)|0;c[(c[f>>2]|0)+20>>2]=d;if(a[(c[g>>2]|0)+64>>0]|0){b[(c[f>>2]|0)+8>>1]=1;c[(c[f>>2]|0)+24>>2]=0;i=e;return}else{d=Bk(c[g>>2]|0,c[(c[f>>2]|0)+20>>2]|0)|0;c[(c[f>>2]|0)+24>>2]=d;g=cB(c[g>>2]|0,c[(c[f>>2]|0)+20>>2]|0,c[(c[f>>2]|0)+24>>2]|0)|0;c[c[f>>2]>>2]=g;b[(c[f>>2]|0)+8>>1]=32;i=e;return}}function Zz(a,d,f){a=a|0;d=d|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;g=i;i=i+32|0;k=g+16|0;h=g;l=g+12|0;j=g+8|0;c[k>>2]=a;a=h;c[a>>2]=d;c[a+4>>2]=f;c[l>>2]=$A(c[k>>2]|0)|0;if(!(c[l>>2]|0)){i=g;return}f=h;d=c[f+4>>2]|0;a=c[l>>2]|0;c[a>>2]=c[f>>2];c[a+4>>2]=d;c[(c[l>>2]|0)+8>>2]=0;c[j>>2]=c[(c[k>>2]|0)+12>>2];if(c[j>>2]|0){if(((e[(c[k>>2]|0)+26>>1]|0)&1|0)!=0?(d=h,f=c[d+4>>2]|0,a=c[j>>2]|0,h=c[a+4>>2]|0,(f|0)<(h|0)|((f|0)==(h|0)?(c[d>>2]|0)>>>0<=(c[a>>2]|0)>>>0:0)):0){a=(c[k>>2]|0)+26|0;b[a>>1]=(e[a>>1]|0)&-2}c[(c[j>>2]|0)+8>>2]=c[l>>2]}else c[(c[k>>2]|0)+8>>2]=c[l>>2];c[(c[k>>2]|0)+12>>2]=c[l>>2];i=g;return}function _z(a,b){a=a|0;b=b|0;var d=0,f=0,g=0,h=0,j=0;f=i;i=i+16|0;d=f+8|0;g=f+4|0;h=f;c[g>>2]=a;c[h>>2]=b;if(!((e[(c[g>>2]|0)+26>>1]|0)&2))bB(c[g>>2]|0);if(!(c[(c[g>>2]|0)+8>>2]|0)){c[d>>2]=0;a=c[d>>2]|0;i=f;return a|0}j=c[(c[g>>2]|0)+8>>2]|0;b=c[j+4>>2]|0;a=c[h>>2]|0;c[a>>2]=c[j>>2];c[a+4>>2]=b;c[(c[g>>2]|0)+8>>2]=c[(c[(c[g>>2]|0)+8>>2]|0)+8>>2];if(!(c[(c[g>>2]|0)+8>>2]|0))jn(c[g>>2]|0);c[d>>2]=1;j=c[d>>2]|0;i=f;return j|0}function $z(a,d,f,g){a=a|0;d=d|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;l=i;i=i+48|0;k=l+36|0;o=l+32|0;p=l+28|0;j=l;h=l+24|0;m=l+20|0;n=l+16|0;r=l+12|0;s=l+8|0;c[o>>2]=a;c[p>>2]=d;a=j;c[a>>2]=f;c[a+4>>2]=g;if((c[p>>2]|0)!=(c[(c[o>>2]|0)+28>>2]|0)){c[h>>2]=c[(c[o>>2]|0)+8>>2];if(c[h>>2]|0){c[n>>2]=(c[o>>2]|0)+20;if(!((e[(c[o>>2]|0)+26>>1]|0)&1))c[h>>2]=XA(c[h>>2]|0)|0;c[m>>2]=c[(c[o>>2]|0)+20>>2];while(1){if(!(c[m>>2]|0))break;c[n>>2]=(c[m>>2]|0)+8;if(!(c[(c[m>>2]|0)+12>>2]|0)){q=8;break}ZA(c[(c[m>>2]|0)+12>>2]|0,r,s);c[(c[m>>2]|0)+12>>2]=0;c[h>>2]=_A(c[r>>2]|0,c[h>>2]|0)|0;c[m>>2]=c[(c[m>>2]|0)+8>>2]}if((q|0)==8){a=YA(c[h>>2]|0)|0;c[(c[m>>2]|0)+12>>2]=a}if((c[m>>2]|0)==0?(a=$A(c[o>>2]|0)|0,c[m>>2]=a,c[c[n>>2]>>2]=a,(c[m>>2]|0)!=0):0){a=c[m>>2]|0;c[a>>2]=0;c[a+4>>2]=0;c[(c[m>>2]|0)+8>>2]=0;a=YA(c[h>>2]|0)|0;c[(c[m>>2]|0)+12>>2]=a}c[(c[o>>2]|0)+8>>2]=0;c[(c[o>>2]|0)+12>>2]=0;a=(c[o>>2]|0)+26|0;b[a>>1]=e[a>>1]|0|1}c[(c[o>>2]|0)+28>>2]=c[p>>2]}c[m>>2]=c[(c[o>>2]|0)+20>>2];a:while(1){if(!(c[m>>2]|0)){q=25;break}c[h>>2]=c[(c[m>>2]|0)+12>>2];while(1){if(!(c[h>>2]|0))break;d=c[h>>2]|0;g=c[d+4>>2]|0;a=j;f=c[a+4>>2]|0;n=c[h>>2]|0;if((g|0)<(f|0)|((g|0)==(f|0)?(c[d>>2]|0)>>>0<(c[a>>2]|0)>>>0:0)){c[h>>2]=c[n+8>>2];continue}d=n;g=c[d+4>>2]|0;a=j;f=c[a+4>>2]|0;if(!((g|0)>(f|0)|((g|0)==(f|0)?(c[d>>2]|0)>>>0>(c[a>>2]|0)>>>0:0))){q=23;break a}c[h>>2]=c[(c[h>>2]|0)+12>>2]}c[m>>2]=c[(c[m>>2]|0)+8>>2]}if((q|0)==23){c[k>>2]=1;a=c[k>>2]|0;i=l;return a|0}else if((q|0)==25){c[k>>2]=0;a=c[k>>2]|0;i=l;return a|0}return 0}function aA(a){a=a|0;var b=0,e=0,f=0;b=i;i=i+16|0;e=b+4|0;f=b;c[f>>2]=a;if((d[(c[f>>2]|0)+16>>0]|0|0)>=3){c[e>>2]=0;f=c[e>>2]|0;i=b;return f|0}if((c[c[(c[f>>2]|0)+64>>2]>>2]|0)!=0?(f=(c[f>>2]|0)+72|0,a=c[f+4>>2]|0,(a|0)>0|(a|0)==0&(c[f>>2]|0)>>>0>0):0){c[e>>2]=0;f=c[e>>2]|0;i=b;return f|0}c[e>>2]=1;f=c[e>>2]|0;i=b;return f|0}function bA(a){a=a|0;var b=0,e=0,f=0;b=i;i=i+16|0;f=b+4|0;e=b;c[f>>2]=a;c[e>>2]=c[c[(c[f>>2]|0)+60>>2]>>2];if(d[(c[f>>2]|0)+4>>0]|0){f=1;f=f&1;i=b;return f|0}if((c[c[e>>2]>>2]|0)<2){f=0;f=f&1;i=b;return f|0}f=(c[(c[e>>2]|0)+52>>2]|0)!=0;f=f&1;i=b;return f|0}function cA(a){a=a|0;var b=0,e=0,f=0,g=0;e=i;i=i+16|0;f=e+8|0;b=e+4|0;g=e;c[f>>2]=a;c[b>>2]=0;if(!(c[(c[f>>2]|0)+208>>2]|0)){c[g>>2]=0;c[b>>2]=hk(c[f>>2]|0,1)|0;if(!(c[b>>2]|0))c[b>>2]=vi(c[c[f>>2]>>2]|0,c[(c[f>>2]|0)+212>>2]|0,0,g)|0;if((c[b>>2]|0)==0&(c[g>>2]|0)!=0)c[b>>2]=SA(c[f>>2]|0)|0}if(c[b>>2]|0){g=c[b>>2]|0;i=e;return g|0}if(!(c[(c[f>>2]|0)+208>>2]|0)){g=c[b>>2]|0;i=e;return g|0}c[b>>2]=TA(c[f>>2]|0)|0;if(c[b>>2]|0){g=c[b>>2]|0;i=e;return g|0}c[b>>2]=Mh(c[(c[f>>2]|0)+208>>2]|0,d[(c[f>>2]|0)+9>>0]|0,c[(c[f>>2]|0)+152>>2]|0,c[(c[f>>2]|0)+200>>2]|0)|0;c[(c[f>>2]|0)+208>>2]=0;Lg(c[f>>2]|0);g=c[b>>2]|0;i=e;return g|0}function dA(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;f=i;i=i+32|0;g=f+12|0;k=f+8|0;l=f+16|0;h=f+4|0;j=f;c[g>>2]=b;c[k>>2]=e;a[l>>0]=a[(c[g>>2]|0)+5>>0]|0;if((a[(c[g>>2]|0)+15>>0]|0)!=0?(c[k>>2]|0)!=4&(c[k>>2]|0)!=2:0)c[k>>2]=d[l>>0];do if((((c[k>>2]|0)!=(d[l>>0]|0)?(a[(c[g>>2]|0)+5>>0]=c[k>>2],(a[(c[g>>2]|0)+4>>0]|0)==0):0)?(d[l>>0]&5|0)==1:0)?(c[k>>2]&1|0)==0:0){Rh(c[(c[g>>2]|0)+64>>2]|0)|0;if((d[(c[g>>2]|0)+17>>0]|0)>=2){_h(c[c[g>>2]>>2]|0,c[(c[g>>2]|0)+172>>2]|0,0)|0;break}c[h>>2]=0;c[j>>2]=d[(c[g>>2]|0)+16>>0];if(!(c[j>>2]|0))c[h>>2]=KA(c[g>>2]|0)|0;if((d[(c[g>>2]|0)+16>>0]|0)==1)c[h>>2]=hk(c[g>>2]|0,2)|0;if(!(c[h>>2]|0))_h(c[c[g>>2]>>2]|0,c[(c[g>>2]|0)+172>>2]|0,0)|0;if((c[h>>2]|0)==0&(c[j>>2]|0)==1){ei(c[g>>2]|0,1)|0;break}if(!(c[j>>2]|0))Nh(c[g>>2]|0)}while(0);i=f;return d[(c[g>>2]|0)+5>>0]|0}function eA(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;q=i;i=i+80|0;v=q;n=q+68|0;u=q+64|0;h=q+60|0;g=q+56|0;o=q+52|0;r=q+48|0;x=q+44|0;k=q+40|0;l=q+36|0;m=q+32|0;f=q+28|0;p=q+24|0;w=q+20|0;t=q+16|0;y=q+12|0;j=q+8|0;s=q+4|0;c[u>>2]=b;c[h>>2]=e;c[g>>2]=0;c[x>>2]=0;c[p>>2]=0;if(!(a[(c[h>>2]|0)+62>>0]|0)){pn(c[u>>2]|0,c[h>>2]|0,32072,v);c[n>>2]=1;b=c[n>>2]|0;i=q;return b|0}if((c[(c[h>>2]|0)+148>>2]|0)>1){pn(c[u>>2]|0,c[h>>2]|0,32112,v);c[n>>2]=1;b=c[n>>2]|0;i=q;return b|0}c[k>>2]=c[(c[h>>2]|0)+24>>2];c[l>>2]=c[(c[h>>2]|0)+80>>2];c[m>>2]=c[(c[h>>2]|0)+84>>2];c[f>>2]=c[(c[h>>2]|0)+172>>2];b=(c[h>>2]|0)+24|0;c[b>>2]=c[b>>2]|2107392;b=(c[h>>2]|0)+24|0;c[b>>2]=c[b>>2]&-655361;c[(c[h>>2]|0)+172>>2]=0;c[o>>2]=c[(c[(c[h>>2]|0)+16>>2]|0)+4>>2];c[w>>2]=DA(Sb(c[o>>2]|0)|0)|0;c[y>>2]=c[(c[h>>2]|0)+20>>2];if(xh(c[h>>2]|0)|0)c[x>>2]=32160;else c[x>>2]=32192;c[g>>2]=EA(c[h>>2]|0,c[u>>2]|0,c[x>>2]|0)|0;if((c[(c[h>>2]|0)+20>>2]|0)>(c[y>>2]|0))c[p>>2]=(c[(c[h>>2]|0)+16>>2]|0)+((c[(c[h>>2]|0)+20>>2]|0)-1<<4);a:do if((((c[g>>2]|0)==0?(c[r>>2]=c[(c[(c[h>>2]|0)+16>>2]|0)+((c[(c[h>>2]|0)+20>>2]|0)-1<<4)+4>>2],gs(c[r>>2]|0)|0,c[t>>2]=FA(c[o>>2]|0)|0,c[g>>2]=EA(c[h>>2]|0,c[u>>2]|0,32216)|0,(c[g>>2]|0)==0):0)?(c[g>>2]=EA(c[h>>2]|0,c[u>>2]|0,32256)|0,(c[g>>2]|0)==0):0)?(c[g>>2]=Rc(c[o>>2]|0,2)|0,(c[g>>2]|0)==0):0){if((Vc(Sb(c[o>>2]|0)|0)|0)==5)c[(c[h>>2]|0)+72>>2]=0;y=c[r>>2]|0;b=Uc(c[o>>2]|0)|0;do if(!(kg(y,b,c[t>>2]|0,0)|0)){if((c[w>>2]|0)==0?(kg(c[r>>2]|0,c[(c[h>>2]|0)+72>>2]|0,c[t>>2]|0,0)|0)!=0:0)break;if(!(d[(c[h>>2]|0)+64>>0]|0)){v=c[r>>2]|0;if((a[(c[h>>2]|0)+66>>0]|0)>=0)e=a[(c[h>>2]|0)+66>>0]|0;else e=Tt(c[o>>2]|0)|0;Vt(v,e)|0;c[g>>2]=GA(c[h>>2]|0,c[u>>2]|0,32264)|0;if(c[g>>2]|0)break a;c[g>>2]=GA(c[h>>2]|0,c[u>>2]|0,32416)|0;if(c[g>>2]|0)break a;c[g>>2]=GA(c[h>>2]|0,c[u>>2]|0,32520)|0;if(c[g>>2]|0)break a;c[g>>2]=GA(c[h>>2]|0,c[u>>2]|0,32640)|0;if(c[g>>2]|0)break a;c[g>>2]=GA(c[h>>2]|0,c[u>>2]|0,32840)|0;if(c[g>>2]|0)break a;c[g>>2]=GA(c[h>>2]|0,c[u>>2]|0,32960)|0;if(c[g>>2]|0)break a;c[g>>2]=EA(c[h>>2]|0,c[u>>2]|0,33120)|0;if(c[g>>2]|0)break a;c[s>>2]=0;while(1){u=c[o>>2]|0;if((c[s>>2]|0)>=10)break;Sc(u,d[33304+(c[s>>2]|0)>>0]|0,j);c[g>>2]=bd(c[r>>2]|0,d[33304+(c[s>>2]|0)>>0]|0,(c[j>>2]|0)+(d[(c[s>>2]|0)+33305>>0]|0)|0)|0;if(c[g>>2]|0)break a;c[s>>2]=(c[s>>2]|0)+2}c[g>>2]=HA(u,c[r>>2]|0)|0;if(c[g>>2]|0)break a;c[g>>2]=gs(c[r>>2]|0)|0;if(c[g>>2]|0)break a;y=c[o>>2]|0;Vt(y,Tt(c[r>>2]|0)|0)|0;y=c[o>>2]|0;b=Uc(c[r>>2]|0)|0;c[g>>2]=kg(y,b,c[t>>2]|0,1)|0;break a}}while(0);c[g>>2]=7}while(0);c[(c[h>>2]|0)+24>>2]=c[k>>2];c[(c[h>>2]|0)+80>>2]=c[l>>2];c[(c[h>>2]|0)+84>>2]=c[m>>2];c[(c[h>>2]|0)+172>>2]=c[f>>2];kg(c[o>>2]|0,-1,-1,1)|0;a[(c[h>>2]|0)+62>>0]=1;if(c[p>>2]|0){Kk(c[(c[p>>2]|0)+4>>2]|0)|0;c[(c[p>>2]|0)+4>>2]=0;c[(c[p>>2]|0)+12>>2]=0}cd(c[h>>2]|0);c[n>>2]=c[g>>2];b=c[n>>2]|0;i=q;return b|0}function fA(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;d=i;i=i+32|0;k=d+20|0;e=d+16|0;f=d+12|0;h=d+8|0;j=d+4|0;g=d;c[k>>2]=b;c[f>>2]=c[(c[k>>2]|0)+4>>2];Pc(c[k>>2]|0);if(!(a[(c[f>>2]|0)+17>>0]|0)){c[e>>2]=101;k=c[e>>2]|0;i=d;return k|0}c[h>>2]=Aw(c[f>>2]|0)|0;c[j>>2]=Hh((c[(c[(c[f>>2]|0)+12>>2]|0)+56>>2]|0)+36|0)|0;c[g>>2]=rA(c[f>>2]|0,c[h>>2]|0,c[j>>2]|0)|0;if((c[h>>2]|0)>>>0<(c[g>>2]|0)>>>0){c[e>>2]=kj(55422)|0;k=c[e>>2]|0;i=d;return k|0}if((c[j>>2]|0)>>>0<=0){c[e>>2]=101;k=c[e>>2]|0;i=d;return k|0}c[e>>2]=Hy(c[f>>2]|0,0,0)|0;if(!(c[e>>2]|0)){sA(c[f>>2]|0);c[e>>2]=tA(c[f>>2]|0,c[g>>2]|0,c[h>>2]|0,0)|0}if(c[e>>2]|0){k=c[e>>2]|0;i=d;return k|0}c[e>>2]=gd(c[(c[(c[f>>2]|0)+12>>2]|0)+68>>2]|0)|0;ck((c[(c[(c[f>>2]|0)+12>>2]|0)+56>>2]|0)+28|0,c[(c[f>>2]|0)+44>>2]|0);k=c[e>>2]|0;i=d;return k|0}function gA(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;g=i;i=i+16|0;j=g+8|0;k=g+4|0;m=g+13|0;h=g;l=g+12|0;c[j>>2]=b;c[k>>2]=e;a[m>>0]=f;c[h>>2]=0;if(!(a[(c[j>>2]|0)+9>>0]|0)){b=c[h>>2]|0;i=g;return b|0}a[l>>0]=1+(d[m>>0]|0);Pc(c[j>>2]|0);c[h>>2]=By(c[j>>2]|0,c[k>>2]|0,a[l>>0]|0)|0;if(c[h>>2]|0){b=c[h>>2]|0;i=g;return b|0}c[h>>2]=qA(c[j>>2]|0,c[k>>2]|0,a[l>>0]|0)|0;b=c[h>>2]|0;i=g;return b|0}function hA(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;e=i;i=i+32|0;f=e+20|0;h=e+16|0;k=e+12|0;j=e+8|0;l=e+4|0;g=e;c[h>>2]=a;c[k>>2]=b;c[j>>2]=0;if((c[(c[h>>2]|0)+304>>2]|0)>0?(c[(c[h>>2]|0)+328>>2]|0)==0:0){c[f>>2]=6;a=c[f>>2]|0;i=e;return a|0}if(!(c[k>>2]|0)){c[f>>2]=0;a=c[f>>2]|0;i=e;return a|0}c[l>>2]=c[c[(c[k>>2]|0)+8>>2]>>2];if(c[(c[l>>2]|0)+56>>2]|0){c[g>>2]=0;while(1){if((c[g>>2]|0)>=(c[(c[h>>2]|0)+304>>2]|0))break;if((c[(c[(c[h>>2]|0)+328>>2]|0)+(c[g>>2]<<2)>>2]|0)==(c[k>>2]|0)){d=10;break}c[g>>2]=(c[g>>2]|0)+1}if((d|0)==10){c[f>>2]=0;a=c[f>>2]|0;i=e;return a|0}c[j>>2]=oA(c[h>>2]|0)|0;if((c[j>>2]|0)==0?(c[j>>2]=ub[c[(c[l>>2]|0)+56>>2]&31](c[(c[k>>2]|0)+8>>2]|0)|0,(c[j>>2]|0)==0):0)pA(c[h>>2]|0,c[k>>2]|0)}c[f>>2]=c[j>>2];a=c[f>>2]|0;i=e;return a|0}function iA(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;g=i;i=i+48|0;m=g;h=g+32|0;o=g+28|0;p=g+24|0;k=g+20|0;l=g+16|0;j=g+12|0;f=g+8|0;n=g+4|0;c[h>>2]=a;c[o>>2]=b;c[p>>2]=d;c[k>>2]=e;c[l>>2]=0;c[j>>2]=sp(c[h>>2]|0,c[p>>2]|0,c[(c[(c[h>>2]|0)+16>>2]|0)+(c[o>>2]<<4)>>2]|0)|0;c[n>>2]=c[c[(c[j>>2]|0)+56>>2]>>2];c[f>>2]=bh((c[h>>2]|0)+308|0,c[n>>2]|0)|0;e=c[h>>2]|0;if(c[f>>2]|0)c[l>>2]=zr(e,c[j>>2]|0,c[f>>2]|0,c[(c[c[f>>2]>>2]|0)+4>>2]|0,c[k>>2]|0)|0;else{c[m>>2]=c[n>>2];p=Te(e,17944,m)|0;c[c[k>>2]>>2]=p;c[l>>2]=1}if(c[l>>2]|0){p=c[l>>2]|0;i=g;return p|0}if(!(Rp(c[h>>2]|0,c[j>>2]|0)|0)){p=c[l>>2]|0;i=g;return p|0}c[l>>2]=oA(c[h>>2]|0)|0;if(c[l>>2]|0){p=c[l>>2]|0;i=g;return p|0}p=c[h>>2]|0;pA(p,Rp(c[h>>2]|0,c[j>>2]|0)|0);p=c[l>>2]|0;i=g;return p|0}function jA(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;e=i;i=i+32|0;g=e+20|0;k=e+16|0;l=e+12|0;f=e+8|0;h=e+4|0;j=e;c[g>>2]=a;c[k>>2]=b;c[l>>2]=d;c[f>>2]=0;c[h>>2]=sp(c[g>>2]|0,c[l>>2]|0,c[(c[(c[g>>2]|0)+16>>2]|0)+(c[k>>2]<<4)>>2]|0)|0;if(!(c[h>>2]|0)){l=c[f>>2]|0;i=e;return l|0}if(!(c[(c[h>>2]|0)+60>>2]|0)){l=c[f>>2]|0;i=e;return l|0}c[j>>2]=Gy(c[g>>2]|0,c[h>>2]|0)|0;c[f>>2]=ub[c[(c[c[(c[j>>2]|0)+4>>2]>>2]|0)+20>>2]&31](c[(c[j>>2]|0)+8>>2]|0)|0;if(c[f>>2]|0){l=c[f>>2]|0;i=e;return l|0}c[(c[j>>2]|0)+8>>2]=0;c[(c[h>>2]|0)+60>>2]=0;Nk(c[j>>2]|0);l=c[f>>2]|0;i=e;return l|0}function kA(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;e=i;i=i+16|0;g=e+8|0;f=e+4|0;d=e;c[g>>2]=a;c[f>>2]=b;Pc(c[g>>2]|0);c[d>>2]=nA(c[c[(c[g>>2]|0)+4>>2]>>2]|0,c[f>>2]|0)|0;i=e;return c[d>>2]|0}function lA(b,f){b=b|0;f=f|0;var g=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;g=i;i=i+240|0;s=g+40|0;p=g+120|0;t=g+116|0;r=g+112|0;n=g+108|0;o=g+104|0;l=g+100|0;m=g+96|0;y=g+92|0;q=g+88|0;j=g+60|0;z=g+56|0;w=g+52|0;u=g+124|0;v=g;x=g+48|0;c[p>>2]=b;c[t>>2]=f;c[n>>2]=0;c[o>>2]=1;c[r>>2]=c[c[p>>2]>>2];nc(j,g+128|0,100,c[(c[r>>2]|0)+88>>2]|0);c[j>>2]=c[r>>2];if((c[(c[r>>2]|0)+160>>2]|0)>1){while(1){if(!(a[c[t>>2]>>0]|0))break;c[z>>2]=c[t>>2];do{b=c[t>>2]|0;c[t>>2]=b+1;if((a[b>>0]|0)==10)break}while((a[c[t>>2]>>0]|0)!=0);Vm(j,32016,3);Vm(j,c[z>>2]|0,(c[t>>2]|0)-(c[z>>2]|0)|0)}b=pc(j)|0;i=g;return b|0}while(1){if(!(a[c[t>>2]>>0]|0)){l=31;break}c[l>>2]=mA(c[t>>2]|0,m)|0;Vm(j,c[t>>2]|0,c[l>>2]|0);c[t>>2]=(c[t>>2]|0)+(c[l>>2]|0);if(!(c[m>>2]|0)){l=31;break}do if((a[c[t>>2]>>0]|0)==63)if((c[m>>2]|0)>1){Ag((c[t>>2]|0)+1|0,n)|0;break}else{c[n>>2]=c[o>>2];break}else c[n>>2]=Me(c[p>>2]|0,c[t>>2]|0,c[m>>2]|0)|0;while(0);c[t>>2]=(c[t>>2]|0)+(c[m>>2]|0);c[o>>2]=(c[n>>2]|0)+1;c[q>>2]=(c[(c[p>>2]|0)+60>>2]|0)+(((c[n>>2]|0)-1|0)*40|0);if(e[(c[q>>2]|0)+8>>1]&1){Vm(j,9840,4);continue}z=c[q>>2]|0;if(e[(c[q>>2]|0)+8>>1]&4){f=c[z+4>>2]|0;b=s;c[b>>2]=c[z>>2];c[b+4>>2]=f;kn(j,0,9456,s);continue}f=c[q>>2]|0;if(e[z+8>>1]&8){h[k>>3]=+h[f>>3];c[s>>2]=c[k>>2];c[s+4>>2]=c[k+4>>2];kn(j,0,9808,s);continue}if(e[f+8>>1]&2){a[u>>0]=a[(c[(c[(c[r>>2]|0)+16>>2]|0)+12>>2]|0)+77>>0]|0;if((d[u>>0]|0)!=1){f=v+0|0;z=f+40|0;do{c[f>>2]=0;f=f+4|0}while((f|0)<(z|0));c[v+32>>2]=c[r>>2];Vd(v,c[(c[q>>2]|0)+16>>2]|0,c[(c[q>>2]|0)+12>>2]|0,a[u>>0]|0,0)|0;yk(v,1)|0;c[q>>2]=v}c[w>>2]=c[(c[q>>2]|0)+12>>2];b=c[(c[q>>2]|0)+16>>2]|0;c[s>>2]=c[w>>2];c[s+4>>2]=b;kn(j,0,32024,s);if((d[u>>0]|0)==1)continue;Bd(v);continue}if(e[(c[q>>2]|0)+8>>1]&16384){c[s>>2]=c[c[q>>2]>>2];kn(j,0,32032,s);continue}Vm(j,32048,2);c[x>>2]=c[(c[q>>2]|0)+12>>2];c[y>>2]=0;while(1){if((c[y>>2]|0)>=(c[x>>2]|0))break;c[s>>2]=a[(c[(c[q>>2]|0)+16>>2]|0)+(c[y>>2]|0)>>0]&255;kn(j,0,32056,s);c[y>>2]=(c[y>>2]|0)+1}Vm(j,32064,1)}if((l|0)==31){b=pc(j)|0;i=g;return b|0}return 0}function mA(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;g=i;i=i+32|0;j=g+16|0;h=g+12|0;k=g+8|0;f=g+4|0;l=g;c[j>>2]=b;c[h>>2]=d;c[f>>2]=0;c[c[h>>2]>>2]=0;while(1){if(!(a[c[j>>2]>>0]|0)){e=6;break}c[l>>2]=qm(c[j>>2]|0,k)|0;d=c[l>>2]|0;if((c[k>>2]|0)==135)break;c[f>>2]=(c[f>>2]|0)+d;c[j>>2]=(c[j>>2]|0)+(c[l>>2]|0)}if((e|0)==6){b=c[f>>2]|0;i=g;return b|0}c[c[h>>2]>>2]=d;b=c[f>>2]|0;i=g;return b|0}function nA(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;e=i;i=i+16|0;d=e+4|0;f=e;c[d>>2]=a;c[f>>2]=b;if((c[f>>2]|0)>0)c[(c[d>>2]|0)+156>>2]=c[f>>2];i=e;return c[(c[d>>2]|0)+156>>2]|0}function oA(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=i;i=i+32|0;d=b+16|0;e=b+12|0;f=b+4|0;g=b;c[e>>2]=a;c[b+8>>2]=5;do if(!((c[(c[e>>2]|0)+304>>2]|0)%5|0)){c[g>>2]=(c[(c[e>>2]|0)+304>>2]|0)+5<<2;g=c[g>>2]|0;c[f>>2]=Fk(c[e>>2]|0,c[(c[e>>2]|0)+328>>2]|0,g,((g|0)<0)<<31>>31)|0;if(c[f>>2]|0){g=(c[f>>2]|0)+(c[(c[e>>2]|0)+304>>2]<<2)|0;c[g+0>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;c[g+12>>2]=0;c[g+16>>2]=0;c[(c[e>>2]|0)+328>>2]=c[f>>2];break}c[d>>2]=7;g=c[d>>2]|0;i=b;return g|0}while(0);c[d>>2]=0;g=c[d>>2]|0;i=b;return g|0}function pA(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;b=c[e>>2]|0;g=(c[f>>2]|0)+304|0;a=c[g>>2]|0;c[g>>2]=a+1;c[(c[(c[f>>2]|0)+328>>2]|0)+(a<<2)>>2]=b;Qy(c[e>>2]|0);i=d;return}function qA(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;o=i;i=i+32|0;g=o+20|0;l=o+16|0;k=o+12|0;n=o+24|0;m=o+8|0;j=o+4|0;p=o;c[l>>2]=b;c[k>>2]=e;a[n>>0]=f;c[m>>2]=c[(c[l>>2]|0)+4>>2];c[j>>2]=0;c[p>>2]=c[(c[m>>2]|0)+72>>2];while(1){if(!(c[p>>2]|0))break;if((c[(c[p>>2]|0)+4>>2]|0)==(c[k>>2]|0)?(c[c[p>>2]>>2]|0)==(c[l>>2]|0):0){h=5;break}c[p>>2]=c[(c[p>>2]|0)+12>>2]}if((h|0)==5)c[j>>2]=c[p>>2];do if(!(c[j>>2]|0)){c[j>>2]=Mc(16,0)|0;if(c[j>>2]|0){c[(c[j>>2]|0)+4>>2]=c[k>>2];c[c[j>>2]>>2]=c[l>>2];c[(c[j>>2]|0)+12>>2]=c[(c[m>>2]|0)+72>>2];c[(c[m>>2]|0)+72>>2]=c[j>>2];break}c[g>>2]=7;b=c[g>>2]|0;i=o;return b|0}while(0);if((d[n>>0]|0|0)>(d[(c[j>>2]|0)+8>>0]|0|0))a[(c[j>>2]|0)+8>>0]=a[n>>0]|0;c[g>>2]=0;b=c[g>>2]|0;i=o;return b|0}function rA(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;e=i;i=i+32|0;g=e+20|0;h=e+16|0;k=e+12|0;l=e+8|0;j=e+4|0;f=e;c[g>>2]=a;c[h>>2]=b;c[k>>2]=d;c[l>>2]=((c[(c[g>>2]|0)+36>>2]|0)>>>0)/5|0;a=(c[k>>2]|0)-(c[h>>2]|0)|0;a=a+(Pw(c[g>>2]|0,c[h>>2]|0)|0)|0;c[j>>2]=((a+(c[l>>2]|0)|0)>>>0)/((c[l>>2]|0)>>>0)|0;c[f>>2]=(c[h>>2]|0)-(c[k>>2]|0)-(c[j>>2]|0);if((c[h>>2]|0)>>>0>((((c[282]|0)>>>0)/((c[(c[g>>2]|0)+32>>2]|0)>>>0)|0)+1|0)>>>0?(c[f>>2]|0)>>>0<((((c[282]|0)>>>0)/((c[(c[g>>2]|0)+32>>2]|0)>>>0)|0)+1|0)>>>0:0)c[f>>2]=(c[f>>2]|0)+ -1;while(1){l=Pw(c[g>>2]|0,c[f>>2]|0)|0;if((l|0)==(c[f>>2]|0))b=1;else b=(c[f>>2]|0)==((((c[282]|0)>>>0)/((c[(c[g>>2]|0)+32>>2]|0)>>>0)|0)+1|0);d=c[f>>2]|0;if(!b)break;c[f>>2]=d+ -1}i=e;return d|0}function sA(b){b=b|0;var e=0,f=0,g=0;e=i;i=i+16|0;g=e+4|0;f=e;c[g>>2]=b;c[f>>2]=c[(c[g>>2]|0)+8>>2];while(1){if(!(c[f>>2]|0))break;g=(c[f>>2]|0)+72|0;a[g>>0]=(d[g>>0]|0)&-5;c[f>>2]=c[(c[f>>2]|0)+8>>2]}i=e;return}function tA(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;t=i;i=i+64|0;k=t+52|0;o=t+48|0;v=t+44|0;q=t+40|0;m=t+36|0;z=t+32|0;l=t+28|0;s=t+57|0;h=t+24|0;p=t+20|0;n=t+16|0;u=t+12|0;r=t+8|0;y=t+56|0;x=t+4|0;w=t;c[o>>2]=b;c[v>>2]=e;c[q>>2]=f;c[m>>2]=g;b=Pw(c[o>>2]|0,c[q>>2]|0)|0;do if((b|0)!=(c[q>>2]|0)?(c[q>>2]|0)!=((((c[282]|0)>>>0)/((c[(c[o>>2]|0)+32>>2]|0)>>>0)|0)+1|0):0){c[z>>2]=Hh((c[(c[(c[o>>2]|0)+12>>2]|0)+56>>2]|0)+36|0)|0;if(!(c[z>>2]|0)){c[k>>2]=101;b=c[k>>2]|0;i=t;return b|0}c[l>>2]=Qw(c[o>>2]|0,c[q>>2]|0,s,h)|0;if(c[l>>2]|0){c[k>>2]=c[l>>2];b=c[k>>2]|0;i=t;return b|0}if((d[s>>0]|0|0)==1){c[k>>2]=kj(55307)|0;b=c[k>>2]|0;i=t;return b|0}if((d[s>>0]|0|0)==2){if(c[m>>2]|0)break;c[l>>2]=uA(c[o>>2]|0,n,p,c[q>>2]|0,1)|0;if(!(c[l>>2]|0)){Rk(c[n>>2]|0);break}c[k>>2]=c[l>>2];b=c[k>>2]|0;i=t;return b|0}a[y>>0]=0;c[x>>2]=0;c[l>>2]=Bw(c[o>>2]|0,c[q>>2]|0,r,0)|0;if(c[l>>2]|0){c[k>>2]=c[l>>2];b=c[k>>2]|0;i=t;return b|0}if(!(c[m>>2]|0)){a[y>>0]=2;c[x>>2]=c[v>>2]}do{c[l>>2]=uA(c[o>>2]|0,w,u,c[x>>2]|0,a[y>>0]|0)|0;if(c[l>>2]|0){j=19;break}Rk(c[w>>2]|0);if(!(c[m>>2]|0))break}while((c[u>>2]|0)>>>0>(c[v>>2]|0)>>>0);if((j|0)==19){Rk(c[r>>2]|0);c[k>>2]=c[l>>2];b=c[k>>2]|0;i=t;return b|0}c[l>>2]=vA(c[o>>2]|0,c[r>>2]|0,a[s>>0]|0,c[h>>2]|0,c[u>>2]|0,c[m>>2]|0)|0;Rk(c[r>>2]|0);if(c[l>>2]|0){c[k>>2]=c[l>>2];b=c[k>>2]|0;i=t;return b|0}}while(0);if(!(c[m>>2]|0)){while(1){c[q>>2]=(c[q>>2]|0)+ -1;if((c[q>>2]|0)==((((c[282]|0)>>>0)/((c[(c[o>>2]|0)+32>>2]|0)>>>0)|0)+1|0))continue;b=Pw(c[o>>2]|0,c[q>>2]|0)|0;if((b|0)!=(c[q>>2]|0))break}a[(c[o>>2]|0)+19>>0]=1;c[(c[o>>2]|0)+44>>2]=c[q>>2]}c[k>>2]=0;b=c[k>>2]|0;i=t;return b|0}function uA(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0;m=i;i=i+112|0;k=m+92|0;A=m+88|0;l=m+84|0;E=m+80|0;B=m+76|0;q=m+98|0;z=m+72|0;j=m+68|0;H=m+64|0;x=m+60|0;o=m+56|0;n=m+52|0;t=m+48|0;D=m+44|0;w=m+97|0;I=m+96|0;C=m+40|0;u=m+36|0;r=m+32|0;s=m+28|0;y=m+24|0;v=m+20|0;p=m+16|0;F=m+12|0;G=m+8|0;K=m+4|0;J=m;c[A>>2]=b;c[l>>2]=e;c[E>>2]=f;c[B>>2]=g;a[q>>0]=h;c[o>>2]=0;c[n>>2]=0;c[z>>2]=c[(c[A>>2]|0)+12>>2];c[t>>2]=Aw(c[A>>2]|0)|0;c[H>>2]=Hh((c[(c[z>>2]|0)+56>>2]|0)+36|0)|0;if((c[H>>2]|0)>>>0>=(c[t>>2]|0)>>>0){c[k>>2]=kj(57337)|0;b=c[k>>2]|0;i=m;return b|0}a:do if((c[H>>2]|0)>>>0>0){a[w>>0]=0;do if((d[q>>0]|0)==1){if((c[B>>2]|0)>>>0<=(c[t>>2]|0)>>>0){c[j>>2]=Qw(c[A>>2]|0,c[B>>2]|0,I,0)|0;if(c[j>>2]|0){c[k>>2]=c[j>>2];b=c[k>>2]|0;i=m;return b|0}else{if((d[I>>0]|0)!=2)break;a[w>>0]=1;break}}}else if((d[q>>0]|0)==2)a[w>>0]=1;while(0);c[j>>2]=gd(c[(c[z>>2]|0)+68>>2]|0)|0;if(c[j>>2]|0){c[k>>2]=c[j>>2];b=c[k>>2]|0;i=m;return b|0}ck((c[(c[z>>2]|0)+56>>2]|0)+36|0,(c[H>>2]|0)-1|0);b:while(1){c[n>>2]=c[o>>2];if(c[n>>2]|0)c[D>>2]=Hh(c[(c[n>>2]|0)+56>>2]|0)|0;else c[D>>2]=Hh((c[(c[z>>2]|0)+56>>2]|0)+32|0)|0;if((c[D>>2]|0)>>>0>(c[t>>2]|0)>>>0)c[j>>2]=kj(57386)|0;else c[j>>2]=Bw(c[A>>2]|0,c[D>>2]|0,o,0)|0;if(c[j>>2]|0){p=22;break}c[x>>2]=Hh((c[(c[o>>2]|0)+56>>2]|0)+4|0)|0;c:do if((c[x>>2]|0)!=0|(a[w>>0]|0)!=0){if((c[x>>2]|0)>>>0>((((c[(c[A>>2]|0)+36>>2]|0)>>>0)/4|0)-2|0)>>>0){p=27;break b}do if(d[w>>0]|0){if((c[B>>2]|0)!=(c[D>>2]|0)){if((c[D>>2]|0)>>>0>=(c[B>>2]|0)>>>0)break;if((d[q>>0]|0)!=2)break}c[c[E>>2]>>2]=c[D>>2];c[c[l>>2]>>2]=c[o>>2];a[w>>0]=0;c[j>>2]=gd(c[(c[o>>2]|0)+68>>2]|0)|0;if(c[j>>2]|0)break a;do if(!(c[x>>2]|0)){if(!(c[n>>2]|0)){b=(c[(c[z>>2]|0)+56>>2]|0)+32|0;e=c[(c[o>>2]|0)+56>>2]|0;a[b+0>>0]=a[e+0>>0]|0;a[b+1>>0]=a[e+1>>0]|0;a[b+2>>0]=a[e+2>>0]|0;a[b+3>>0]=a[e+3>>0]|0;break}c[j>>2]=gd(c[(c[n>>2]|0)+68>>2]|0)|0;if(c[j>>2]|0)break a;b=c[(c[n>>2]|0)+56>>2]|0;e=c[(c[o>>2]|0)+56>>2]|0;a[b+0>>0]=a[e+0>>0]|0;a[b+1>>0]=a[e+1>>0]|0;a[b+2>>0]=a[e+2>>0]|0;a[b+3>>0]=a[e+3>>0]|0}else{c[u>>2]=Hh((c[(c[o>>2]|0)+56>>2]|0)+8|0)|0;if((c[u>>2]|0)>>>0>(c[t>>2]|0)>>>0){p=39;break b}c[j>>2]=Bw(c[A>>2]|0,c[u>>2]|0,C,0)|0;if(c[j>>2]|0)break a;c[j>>2]=gd(c[(c[C>>2]|0)+68>>2]|0)|0;H=c[C>>2]|0;if(c[j>>2]|0){p=42;break b}b=c[H+56>>2]|0;e=c[(c[o>>2]|0)+56>>2]|0;a[b+0>>0]=a[e+0>>0]|0;a[b+1>>0]=a[e+1>>0]|0;a[b+2>>0]=a[e+2>>0]|0;a[b+3>>0]=a[e+3>>0]|0;ck((c[(c[C>>2]|0)+56>>2]|0)+4|0,(c[x>>2]|0)-1|0);dF((c[(c[C>>2]|0)+56>>2]|0)+8|0,(c[(c[o>>2]|0)+56>>2]|0)+12|0,(c[x>>2]|0)-1<<2|0)|0;Rk(c[C>>2]|0);if(!(c[n>>2]|0)){ck((c[(c[z>>2]|0)+56>>2]|0)+32|0,c[u>>2]|0);break}c[j>>2]=gd(c[(c[n>>2]|0)+68>>2]|0)|0;if(c[j>>2]|0)break a;ck(c[(c[n>>2]|0)+56>>2]|0,c[u>>2]|0)}while(0);c[o>>2]=0;break c}while(0);if((c[x>>2]|0)>>>0>0){c[y>>2]=c[(c[o>>2]|0)+56>>2];b=(c[B>>2]|0)>>>0>0;c[r>>2]=0;d:do if(b)if((d[q>>0]|0)==2){c[v>>2]=0;while(1){if((c[v>>2]|0)>>>0>=(c[x>>2]|0)>>>0)break d;c[s>>2]=Hh((c[y>>2]|0)+(8+(c[v>>2]<<2))|0)|0;H=c[v>>2]|0;if((c[s>>2]|0)>>>0<=(c[B>>2]|0)>>>0)break;c[v>>2]=H+1}c[r>>2]=H;break}else{b=Hh((c[y>>2]|0)+8|0)|0;c[p>>2]=ds(b-(c[B>>2]|0)|0)|0;c[v>>2]=1;while(1){if((c[v>>2]|0)>>>0>=(c[x>>2]|0)>>>0)break d;b=Hh((c[y>>2]|0)+(8+(c[v>>2]<<2))|0)|0;c[F>>2]=ds(b-(c[B>>2]|0)|0)|0;if((c[F>>2]|0)<(c[p>>2]|0)){c[r>>2]=c[v>>2];c[p>>2]=c[F>>2]}c[v>>2]=(c[v>>2]|0)+1}}while(0);c[s>>2]=Hh((c[y>>2]|0)+(8+(c[r>>2]<<2))|0)|0;if((c[s>>2]|0)>>>0>(c[t>>2]|0)>>>0){p=62;break b}if((a[w>>0]|0)!=0?(c[s>>2]|0)!=(c[B>>2]|0):0){if((c[s>>2]|0)>>>0>=(c[B>>2]|0)>>>0)break;if((d[q>>0]|0)!=2)break}c[c[E>>2]>>2]=c[s>>2];c[j>>2]=gd(c[(c[o>>2]|0)+68>>2]|0)|0;if(c[j>>2]|0)break a;if((c[r>>2]|0)>>>0<((c[x>>2]|0)-1|0)>>>0){b=(c[y>>2]|0)+(8+(c[r>>2]<<2))|0;e=(c[y>>2]|0)+(4+(c[x>>2]<<2))|0;a[b+0>>0]=a[e+0>>0]|0;a[b+1>>0]=a[e+1>>0]|0;a[b+2>>0]=a[e+2>>0]|0;a[b+3>>0]=a[e+3>>0]|0}ck((c[y>>2]|0)+4|0,(c[x>>2]|0)-1|0);b=(CA(c[A>>2]|0,c[c[E>>2]>>2]|0)|0)!=0^1;c[G>>2]=b?1:0;c[j>>2]=Bw(c[A>>2]|0,c[c[E>>2]>>2]|0,c[l>>2]|0,c[G>>2]|0)|0;do if(!(c[j>>2]|0)){c[j>>2]=gd(c[(c[c[l>>2]>>2]|0)+68>>2]|0)|0;if(!(c[j>>2]|0))break;Rk(c[c[l>>2]>>2]|0)}while(0);a[w>>0]=0}}else{c[j>>2]=gd(c[(c[o>>2]|0)+68>>2]|0)|0;if(c[j>>2]|0)break a;c[c[E>>2]>>2]=c[D>>2];b=(c[(c[z>>2]|0)+56>>2]|0)+32|0;e=c[(c[o>>2]|0)+56>>2]|0;a[b+0>>0]=a[e+0>>0]|0;a[b+1>>0]=a[e+1>>0]|0;a[b+2>>0]=a[e+2>>0]|0;a[b+3>>0]=a[e+3>>0]|0;c[c[l>>2]>>2]=c[o>>2];c[o>>2]=0}while(0);Rk(c[n>>2]|0);c[n>>2]=0;if(!(a[w>>0]|0))break a}if((p|0)==22){c[o>>2]=0;break}else if((p|0)==27){c[j>>2]=kj(57414)|0;break}else if((p|0)==39){c[j>>2]=kj(57448)|0;break}else if((p|0)==42){Rk(H);break}else if((p|0)==62){c[j>>2]=kj(57513)|0;break}}else{c[K>>2]=0==(d[(c[A>>2]|0)+19>>0]|0)?1:0;c[j>>2]=gd(c[(c[(c[A>>2]|0)+12>>2]|0)+68>>2]|0)|0;if(c[j>>2]|0){c[k>>2]=c[j>>2];b=c[k>>2]|0;i=m;return b|0}b=(c[A>>2]|0)+44|0;c[b>>2]=(c[b>>2]|0)+1;if((c[(c[A>>2]|0)+44>>2]|0)==((((c[282]|0)>>>0)/((c[(c[A>>2]|0)+32>>2]|0)>>>0)|0)+1|0)){b=(c[A>>2]|0)+44|0;c[b>>2]=(c[b>>2]|0)+1}do if((d[(c[A>>2]|0)+17>>0]|0)!=0?(b=Pw(c[A>>2]|0,c[(c[A>>2]|0)+44>>2]|0)|0,(b|0)==(c[(c[A>>2]|0)+44>>2]|0)):0){c[J>>2]=0;c[j>>2]=Bw(c[A>>2]|0,c[(c[A>>2]|0)+44>>2]|0,J,c[K>>2]|0)|0;if(!(c[j>>2]|0)){c[j>>2]=gd(c[(c[J>>2]|0)+68>>2]|0)|0;Rk(c[J>>2]|0)}if(c[j>>2]|0){c[k>>2]=c[j>>2];b=c[k>>2]|0;i=m;return b|0}else{b=(c[A>>2]|0)+44|0;c[b>>2]=(c[b>>2]|0)+1;if((c[(c[A>>2]|0)+44>>2]|0)!=((((c[282]|0)>>>0)/((c[(c[A>>2]|0)+32>>2]|0)>>>0)|0)+1|0))break;b=(c[A>>2]|0)+44|0;c[b>>2]=(c[b>>2]|0)+1;break}}while(0);ck((c[(c[(c[A>>2]|0)+12>>2]|0)+56>>2]|0)+28|0,c[(c[A>>2]|0)+44>>2]|0);c[c[E>>2]>>2]=c[(c[A>>2]|0)+44>>2];c[j>>2]=Bw(c[A>>2]|0,c[c[E>>2]>>2]|0,c[l>>2]|0,c[K>>2]|0)|0;if(c[j>>2]|0){c[k>>2]=c[j>>2];b=c[k>>2]|0;i=m;return b|0}else{c[j>>2]=gd(c[(c[c[l>>2]>>2]|0)+68>>2]|0)|0;if(!(c[j>>2]|0))break;Rk(c[c[l>>2]>>2]|0);break}}while(0);Rk(c[o>>2]|0);Rk(c[n>>2]|0);n=c[l>>2]|0;do if(!(c[j>>2]|0)){b=(Rj(c[(c[n>>2]|0)+68>>2]|0)|0)>1;n=c[c[l>>2]>>2]|0;if(!b){a[n>>0]=0;break}Rk(n);c[c[l>>2]>>2]=0;c[k>>2]=kj(57612)|0;b=c[k>>2]|0;i=m;return b|0}else c[n>>2]=0;while(0);c[k>>2]=c[j>>2];b=c[k>>2]|0;i=m;return b|0}function vA(b,e,f,g,h,j){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;q=i;i=i+48|0;k=q+40|0;m=q+36|0;u=q+32|0;p=q+44|0;n=q+28|0;r=q+24|0;w=q+20|0;o=q+16|0;s=q+12|0;x=q+8|0;l=q+4|0;t=q;c[m>>2]=b;c[u>>2]=e;a[p>>0]=f;c[n>>2]=g;c[r>>2]=h;c[w>>2]=j;c[s>>2]=c[(c[u>>2]|0)+72>>2];c[x>>2]=c[c[m>>2]>>2];c[l>>2]=wA(c[x>>2]|0,c[(c[u>>2]|0)+68>>2]|0,c[r>>2]|0,c[w>>2]|0)|0;if(c[l>>2]|0){c[k>>2]=c[l>>2];x=c[k>>2]|0;i=q;return x|0}c[(c[u>>2]|0)+72>>2]=c[r>>2];if((d[p>>0]|0|0)!=5?(d[p>>0]|0|0)!=1:0){c[t>>2]=Hh(c[(c[u>>2]|0)+56>>2]|0)|0;if((c[t>>2]|0)!=0?(yA(c[m>>2]|0,c[t>>2]|0,4,c[r>>2]|0,l),(c[l>>2]|0)!=0):0){c[k>>2]=c[l>>2];x=c[k>>2]|0;i=q;return x|0}}else v=5;if((v|0)==5?(c[l>>2]=xA(c[u>>2]|0)|0,(c[l>>2]|0)!=0):0){c[k>>2]=c[l>>2];x=c[k>>2]|0;i=q;return x|0}do if((d[p>>0]|0|0)!=1){c[l>>2]=Bw(c[m>>2]|0,c[n>>2]|0,o,0)|0;if(c[l>>2]|0){c[k>>2]=c[l>>2];x=c[k>>2]|0;i=q;return x|0}c[l>>2]=gd(c[(c[o>>2]|0)+68>>2]|0)|0;t=c[o>>2]|0;if(c[l>>2]|0){Rk(t);c[k>>2]=c[l>>2];x=c[k>>2]|0;i=q;return x|0}else{c[l>>2]=zA(t,c[s>>2]|0,c[r>>2]|0,a[p>>0]|0)|0;Rk(c[o>>2]|0);if(c[l>>2]|0)break;yA(c[m>>2]|0,c[r>>2]|0,a[p>>0]|0,c[n>>2]|0,l);break}}while(0);c[k>>2]=c[l>>2];x=c[k>>2]|0;i=q;return x|0}function wA(d,f,g,h){d=d|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;l=i;i=i+48|0;k=l+36|0;r=l+32|0;p=l+28|0;j=l+24|0;t=l+20|0;n=l+16|0;m=l+12|0;q=l+8|0;o=l+4|0;s=l;c[r>>2]=d;c[p>>2]=f;c[j>>2]=g;c[t>>2]=h;c[m>>2]=0;if((a[(c[r>>2]|0)+15>>0]|0)!=0?(c[q>>2]=gd(c[p>>2]|0)|0,(c[q>>2]|0)!=0):0){c[k>>2]=c[q>>2];d=c[k>>2]|0;i=l;return d|0}if(((e[(c[p>>2]|0)+24>>1]&2|0)!=0?(Xj(c[p>>2]|0)|0)!=0:0)?(d=Yj(c[p>>2]|0)|0,c[q>>2]=d,0!=(d|0)):0){c[k>>2]=c[q>>2];d=c[k>>2]|0;i=l;return d|0}if(!((c[t>>2]|0)!=0?1:(e[(c[p>>2]|0)+24>>1]&4|0)==0))c[m>>2]=c[(c[p>>2]|0)+20>>2];d=(c[p>>2]|0)+24|0;b[d>>1]=e[d>>1]&-5;c[n>>2]=Hi(c[r>>2]|0,c[j>>2]|0)|0;do if(c[n>>2]|0){h=(c[p>>2]|0)+24|0;b[h>>1]=e[h>>1]|e[(c[n>>2]|0)+24>>1]&4;h=c[n>>2]|0;if(a[(c[r>>2]|0)+15>>0]|0){BA(h,(c[(c[r>>2]|0)+24>>2]|0)+1|0);break}else{bj(h);break}}while(0);c[o>>2]=c[(c[p>>2]|0)+20>>2];BA(c[p>>2]|0,c[j>>2]|0);Ji(c[p>>2]|0);if(a[(c[r>>2]|0)+15>>0]|0){BA(c[n>>2]|0,c[o>>2]|0);ej(c[n>>2]|0)}do if(c[m>>2]|0){c[q>>2]=Xc(c[r>>2]|0,c[m>>2]|0,s,0)|0;if(!(c[q>>2]|0)){d=(c[s>>2]|0)+24|0;b[d>>1]=e[d>>1]|4;Ji(c[s>>2]|0);ej(c[s>>2]|0);break}if((c[m>>2]|0)>>>0<=(c[(c[r>>2]|0)+28>>2]|0)>>>0)Xg(c[(c[r>>2]|0)+56>>2]|0,c[m>>2]|0,c[(c[r>>2]|0)+200>>2]|0);c[k>>2]=c[q>>2];d=c[k>>2]|0;i=l;return d|0}while(0);c[k>>2]=0;d=c[k>>2]|0;i=l;return d|0}function xA(b){b=b|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;f=i;i=i+48|0;h=f+32|0;p=f+28|0;q=f+24|0;l=f+20|0;g=f+16|0;j=f+36|0;m=f+12|0;n=f+8|0;o=f+4|0;k=f;c[h>>2]=b;c[g>>2]=c[(c[h>>2]|0)+52>>2];a[j>>0]=a[c[h>>2]>>0]|0;c[m>>2]=c[(c[h>>2]|0)+72>>2];c[l>>2]=Sj(c[h>>2]|0)|0;if(c[l>>2]|0){q=a[j>>0]|0;b=c[h>>2]|0;a[b>>0]=q;b=c[l>>2]|0;i=f;return b|0}c[q>>2]=e[(c[h>>2]|0)+18>>1];c[p>>2]=0;while(1){b=c[h>>2]|0;if((c[p>>2]|0)>=(c[q>>2]|0))break;c[n>>2]=(c[b+56>>2]|0)+(e[(c[h>>2]|0)+20>>1]&(d[(c[(c[h>>2]|0)+64>>2]|0)+(c[p>>2]<<1)>>0]<<8|d[(c[(c[h>>2]|0)+64>>2]|0)+(c[p>>2]<<1)+1>>0]));AA(c[h>>2]|0,c[n>>2]|0,l);if(!(a[(c[h>>2]|0)+5>>0]|0)){c[o>>2]=Hh(c[n>>2]|0)|0;yA(c[g>>2]|0,c[o>>2]|0,5,c[m>>2]|0,l)}c[p>>2]=(c[p>>2]|0)+1}if(a[b+5>>0]|0){q=a[j>>0]|0;b=c[h>>2]|0;a[b>>0]=q;b=c[l>>2]|0;i=f;return b|0}c[k>>2]=Hh((c[(c[h>>2]|0)+56>>2]|0)+((d[(c[h>>2]|0)+6>>0]|0)+8)|0)|0;yA(c[g>>2]|0,c[k>>2]|0,5,c[m>>2]|0,l);q=a[j>>0]|0;b=c[h>>2]|0;a[b>>0]=q;b=c[l>>2]|0;i=f;return b|0}function yA(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;q=i;i=i+48|0;t=q+32|0;r=q+28|0;j=q+36|0;o=q+24|0;k=q+20|0;p=q+16|0;m=q+12|0;s=q+8|0;n=q+4|0;l=q;c[t>>2]=b;c[r>>2]=e;a[j>>0]=f;c[o>>2]=g;c[k>>2]=h;if(c[c[k>>2]>>2]|0){i=q;return}if(!(c[r>>2]|0)){b=kj(53057)|0;c[c[k>>2]>>2]=b;i=q;return}c[s>>2]=Pw(c[t>>2]|0,c[r>>2]|0)|0;c[l>>2]=Xc(c[c[t>>2]>>2]|0,c[s>>2]|0,p,0)|0;if(c[l>>2]|0){c[c[k>>2]>>2]=c[l>>2];i=q;return}c[n>>2]=((c[r>>2]|0)-(c[s>>2]|0)-1|0)*5;do if((c[n>>2]|0)>=0){c[m>>2]=Zc(c[p>>2]|0)|0;if((d[j>>0]|0|0)==(d[(c[m>>2]|0)+(c[n>>2]|0)>>0]|0|0)?(b=Hh((c[m>>2]|0)+((c[n>>2]|0)+1)|0)|0,(b|0)==(c[o>>2]|0)):0)break;b=gd(c[p>>2]|0)|0;c[l>>2]=b;c[c[k>>2]>>2]=b;if(!(c[l>>2]|0)){a[(c[m>>2]|0)+(c[n>>2]|0)>>0]=a[j>>0]|0;ck((c[m>>2]|0)+((c[n>>2]|0)+1)|0,c[o>>2]|0)}}else{b=kj(53068)|0;c[c[k>>2]>>2]=b}while(0);_c(c[p>>2]|0);i=q;return}function zA(b,f,g,h){b=b|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;r=i;i=i+64|0;l=r+48|0;n=r+44|0;o=r+40|0;m=r+36|0;j=r+53|0;q=r+52|0;s=r+32|0;t=r+28|0;u=r+24|0;p=r;c[n>>2]=b;c[o>>2]=f;c[m>>2]=g;a[j>>0]=h;h=c[n>>2]|0;do if((d[j>>0]|0|0)==4){b=Hh(c[h+56>>2]|0)|0;if((b|0)==(c[o>>2]|0)){ck(c[(c[n>>2]|0)+56>>2]|0,c[m>>2]|0);break}c[l>>2]=kj(55139)|0;b=c[l>>2]|0;i=r;return b|0}else{a[q>>0]=a[h>>0]|0;Sj(c[n>>2]|0)|0;c[t>>2]=e[(c[n>>2]|0)+18>>1];c[s>>2]=0;while(1){if((c[s>>2]|0)>=(c[t>>2]|0))break;c[u>>2]=(c[(c[n>>2]|0)+56>>2]|0)+((e[(c[n>>2]|0)+20>>1]|0)&((d[(c[(c[n>>2]|0)+64>>2]|0)+(c[s>>2]<<1)>>0]|0)<<8|(d[(c[(c[n>>2]|0)+64>>2]|0)+(c[s>>2]<<1)+1>>0]|0)));if((d[j>>0]|0|0)==3){Kw(c[n>>2]|0,c[u>>2]|0,p);if(((e[p+18>>1]|0|0)!=0?((c[u>>2]|0)+(e[p+18>>1]|0)+3|0)>>>0<=((c[(c[n>>2]|0)+56>>2]|0)+(e[(c[n>>2]|0)+20>>1]|0)|0)>>>0:0)?(b=c[o>>2]|0,(b|0)==(Hh((c[u>>2]|0)+(e[p+18>>1]|0)|0)|0)):0){k=11;break}}else{b=Hh(c[u>>2]|0)|0;if((b|0)==(c[o>>2]|0)){k=13;break}}c[s>>2]=(c[s>>2]|0)+1}if((k|0)==11)ck((c[u>>2]|0)+(e[p+18>>1]|0)|0,c[m>>2]|0);else if((k|0)==13)ck(c[u>>2]|0,c[m>>2]|0);do if((c[s>>2]|0)==(c[t>>2]|0)){if((d[j>>0]|0|0)==5?(b=Hh((c[(c[n>>2]|0)+56>>2]|0)+((d[(c[n>>2]|0)+6>>0]|0)+8)|0)|0,(b|0)==(c[o>>2]|0)):0){ck((c[(c[n>>2]|0)+56>>2]|0)+((d[(c[n>>2]|0)+6>>0]|0)+8)|0,c[m>>2]|0);break}c[l>>2]=kj(55173)|0;b=c[l>>2]|0;i=r;return b|0}while(0);a[c[n>>2]>>0]=a[q>>0]|0}while(0);c[l>>2]=0;b=c[l>>2]|0;i=r;return b|0}function AA(a,d,f){a=a|0;d=d|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;g=i;i=i+48|0;l=g+36|0;h=g+32|0;m=g+28|0;j=g;k=g+24|0;c[l>>2]=a;c[h>>2]=d;c[m>>2]=f;if(c[c[m>>2]>>2]|0){i=g;return}Kw(c[l>>2]|0,c[h>>2]|0,j);if(!(b[j+18>>1]|0)){i=g;return}c[k>>2]=Hh((c[h>>2]|0)+(e[j+18>>1]|0)|0)|0;yA(c[(c[l>>2]|0)+52>>2]|0,c[k>>2]|0,3,c[(c[l>>2]|0)+72>>2]|0,c[m>>2]|0);i=g;return}function BA(a,b){a=a|0;b=b|0;var d=0,f=0,g=0,h=0;d=i;i=i+16|0;f=d+8|0;g=d+4|0;h=d;c[f>>2]=a;c[g>>2]=b;c[h>>2]=c[(c[f>>2]|0)+28>>2];Bb[c[38640+140>>2]&3](c[(c[h>>2]|0)+40>>2]|0,c[c[f>>2]>>2]|0,c[(c[f>>2]|0)+20>>2]|0,c[g>>2]|0);c[(c[f>>2]|0)+20>>2]=c[g>>2];if(!((e[(c[f>>2]|0)+24>>1]|0)&2)){i=d;return}if(!((e[(c[f>>2]|0)+24>>1]|0)&4)){i=d;return}Sg(c[f>>2]|0,3);i=d;return}function CA(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;i=i+16|0;g=d+8|0;f=d+4|0;e=d;c[g>>2]=a;c[f>>2]=b;c[e>>2]=c[(c[g>>2]|0)+60>>2];if(!(c[e>>2]|0)){g=0;g=g&1;i=d;return g|0}g=c[f>>2]|0;if(g>>>0>(Zg(c[e>>2]|0)|0)>>>0){g=1;g=g&1;i=d;return g|0}g=(Yg(c[e>>2]|0,c[f>>2]|0)|0)!=0;g=g&1;i=d;return g|0}function DA(a){a=a|0;var b=0,e=0;e=i;i=i+16|0;b=e;c[b>>2]=a;i=e;return d[(c[b>>2]|0)+15>>0]|0|0}function EA(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;e=i;i=i+32|0;f=e+20|0;h=e+16|0;g=e+12|0;k=e+8|0;j=e+4|0;c[h>>2]=a;c[g>>2]=b;c[k>>2]=d;if(!(c[k>>2]|0)){c[f>>2]=7;a=c[f>>2]|0;i=e;return a|0}if(of(c[h>>2]|0,c[k>>2]|0,-1,j,0)|0){b=c[g>>2]|0;a=c[h>>2]|0;pn(b,a,nf(c[h>>2]|0)|0,e);c[f>>2]=ag(c[h>>2]|0)|0;a=c[f>>2]|0;i=e;return a|0}else{je(c[j>>2]|0)|0;c[f>>2]=JA(c[h>>2]|0,c[j>>2]|0,c[g>>2]|0)|0;a=c[f>>2]|0;i=e;return a|0}return 0}function FA(a){a=a|0;var b=0,d=0,e=0;d=i;i=i+16|0;e=d+4|0;b=d;c[e>>2]=a;Pc(c[e>>2]|0);c[b>>2]=(c[(c[(c[e>>2]|0)+4>>2]|0)+32>>2]|0)-(c[(c[(c[e>>2]|0)+4>>2]|0)+36>>2]|0);i=d;return c[b>>2]|0}function GA(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;j=i;i=i+32|0;f=j+20|0;h=j+16|0;k=j+12|0;l=j+8|0;e=j+4|0;g=j;c[h>>2]=a;c[k>>2]=b;c[l>>2]=d;c[g>>2]=of(c[h>>2]|0,c[l>>2]|0,-1,e,0)|0;if(c[g>>2]|0){c[f>>2]=c[g>>2];l=c[f>>2]|0;i=j;return l|0}while(1){l=100==(je(c[e>>2]|0)|0);d=c[h>>2]|0;if(!l){b=6;break}l=c[k>>2]|0;c[g>>2]=EA(d,l,Ae(c[e>>2]|0,0)|0)|0;if(c[g>>2]|0){b=5;break}}if((b|0)==5){JA(c[h>>2]|0,c[e>>2]|0,c[k>>2]|0)|0;c[f>>2]=c[g>>2];l=c[f>>2]|0;i=j;return l|0}else if((b|0)==6){c[f>>2]=JA(d,c[e>>2]|0,c[k>>2]|0)|0;l=c[f>>2]|0;i=j;return l|0}return 0}function HA(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;g=i;i=i+80|0;f=g+68|0;h=g+64|0;k=g+60|0;m=g+56|0;j=g+8|0;l=g;c[f>>2]=a;c[h>>2]=d;Pc(c[f>>2]|0);Pc(c[h>>2]|0);c[m>>2]=ed(Sb(c[f>>2]|0)|0)|0;if((c[c[m>>2]>>2]|0)!=0?(d=Uc(c[h>>2]|0)|0,d=lF(d|0,((d|0)<0)<<31>>31|0,Wc(c[h>>2]|0)|0,0)|0,a=l,c[a>>2]=d,c[a+4>>2]=D,a=ig(c[m>>2]|0,11,l)|0,c[k>>2]=a,c[k>>2]=(c[k>>2]|0)==12?0:a,(c[k>>2]|0)!=0):0){a=c[k>>2]|0;i=g;return a|0}l=j+0|0;d=l+48|0;do{c[l>>2]=0;l=l+4|0}while((l|0)<(d|0));c[j+20>>2]=c[c[h>>2]>>2];c[j+24>>2]=c[h>>2];c[j+4>>2]=c[f>>2];c[j+16>>2]=1;Oc(j,2147483647)|0;c[k>>2]=od(j)|0;if(!(c[k>>2]|0)){a=(c[(c[f>>2]|0)+4>>2]|0)+22|0;b[a>>1]=(e[a>>1]|0)&-3;a=c[k>>2]|0;i=g;return a|0}else{IA(Sb(c[j+4>>2]|0)|0);a=c[k>>2]|0;i=g;return a|0}return 0}function IA(b){b=b|0;var e=0,f=0;e=i;i=i+16|0;f=e;c[f>>2]=b;if(a[(c[f>>2]|0)+15>>0]|0){i=e;return}if(d[(c[f>>2]|0)+12>>0]|0){i=e;return}Ig(c[f>>2]|0);i=e;return}function JA(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;i=i+32|0;h=e+16|0;j=e+12|0;g=e+8|0;f=e+4|0;c[h>>2]=a;c[j>>2]=b;c[g>>2]=d;c[f>>2]=vd(c[j>>2]|0)|0;if(!(c[f>>2]|0)){j=c[f>>2]|0;i=e;return j|0}a=c[g>>2]|0;j=c[h>>2]|0;pn(a,j,nf(c[h>>2]|0)|0,e);j=c[f>>2]|0;i=e;return j|0}function KA(b){b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;g=i;i=i+64|0;e=g+32|0;h=g+28|0;f=g+24|0;q=g+20|0;n=g+16|0;o=g+12|0;p=g+8|0;m=g+4|0;l=g;j=g+40|0;c[h>>2]=b;c[f>>2]=0;if((d[(c[h>>2]|0)+15>>0]|0)!=0?(c[(c[h>>2]|0)+40>>2]|0)!=0:0){c[e>>2]=c[(c[h>>2]|0)+40>>2];b=c[e>>2]|0;i=g;return b|0}a:do if((ai(c[h>>2]|0)|0)==0?(d[(c[h>>2]|0)+16>>0]|0)==0:0){c[q>>2]=1;c[f>>2]=gk(c[h>>2]|0,1)|0;if(!(c[f>>2]|0)){if((d[(c[h>>2]|0)+17>>0]|0)<=1)c[f>>2]=LA(c[h>>2]|0,q)|0;if(!(c[f>>2]|0)){if(c[q>>2]|0){if(a[(c[h>>2]|0)+14>>0]|0){c[f>>2]=776;break}c[f>>2]=hk(c[h>>2]|0,4)|0;if(c[f>>2]|0)break;if((((c[c[(c[h>>2]|0)+64>>2]>>2]|0)==0?(c[n>>2]=c[c[h>>2]>>2],c[f>>2]=vi(c[n>>2]|0,c[(c[h>>2]|0)+172>>2]|0,0,o)|0,(c[f>>2]|0)==0&(c[o>>2]|0)!=0):0)?(c[p>>2]=0,c[m>>2]=2050,c[f>>2]=Di(c[n>>2]|0,c[(c[h>>2]|0)+172>>2]|0,c[(c[h>>2]|0)+64>>2]|0,c[m>>2]|0,p)|0,(c[f>>2]|0)==0):0)?(c[p>>2]&1|0)!=0:0){c[f>>2]=Ij(45936)|0;Rh(c[(c[h>>2]|0)+64>>2]|0)|0}m=c[h>>2]|0;if(c[c[(c[h>>2]|0)+64>>2]>>2]|0){c[f>>2]=Ph(m)|0;if(!(c[f>>2]|0)){c[f>>2]=ti(c[h>>2]|0,1)|0;a[(c[h>>2]|0)+16>>0]=0}}else if(!(a[m+4>>0]|0))ei(c[h>>2]|0,1)|0;if(c[f>>2]|0){Oh(c[h>>2]|0,c[f>>2]|0)|0;break}}do if(!(a[(c[h>>2]|0)+12>>0]|0)){if((c[(c[h>>2]|0)+88>>2]|0)==0?(MA(c[(c[h>>2]|0)+204>>2]|0)|0)<=0:0)break;c[l>>2]=0;c[f>>2]=NA(c[h>>2]|0,l)|0;if(c[f>>2]|0)break a;if((c[l>>2]|0)>>>0>0){c[f>>2]=Ei(c[(c[h>>2]|0)+60>>2]|0,j,16,24,0)|0;if((c[f>>2]|0)!=0&(c[f>>2]|0)!=522)break a}else{l=j+0|0;k=l+16|0;do{a[l>>0]=0;l=l+1|0}while((l|0)<(k|0))}if(TE((c[h>>2]|0)+100|0,j,16)|0)Ig(c[h>>2]|0)}while(0);c[f>>2]=OA(c[h>>2]|0)|0;k=36}}}else k=36;while(0);if((k|0)==36){if(ai(c[h>>2]|0)|0)c[f>>2]=PA(c[h>>2]|0)|0;if((c[f>>2]|0)==0?(d[(c[h>>2]|0)+16>>0]|0)==0:0)c[f>>2]=NA(c[h>>2]|0,(c[h>>2]|0)+24|0)|0}h=c[h>>2]|0;if(c[f>>2]|0)Nh(h);else a[h+16>>0]=1;c[e>>2]=c[f>>2];b=c[e>>2]|0;i=g;return b|0}function LA(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;g=i;i=i+48|0;h=g+32|0;f=g+28|0;j=g+24|0;l=g+20|0;q=g+16|0;m=g+12|0;p=g+8|0;o=g+4|0;n=g;k=g+36|0;c[h>>2]=b;c[f>>2]=e;c[j>>2]=c[c[h>>2]>>2];c[l>>2]=0;c[q>>2]=1;c[m>>2]=((c[c[(c[h>>2]|0)+64>>2]>>2]|0)!=0^1^1)&1;c[c[f>>2]>>2]=0;if(!(c[m>>2]|0))c[l>>2]=vi(c[j>>2]|0,c[(c[h>>2]|0)+172>>2]|0,0,q)|0;if(!((c[l>>2]|0)==0&(c[q>>2]|0)!=0)){b=c[l>>2]|0;i=g;return b|0}c[p>>2]=0;c[l>>2]=WA(c[(c[h>>2]|0)+60>>2]|0,p)|0;if((c[l>>2]|0)!=0|(c[p>>2]|0)!=0){b=c[l>>2]|0;i=g;return b|0}c[l>>2]=NA(c[h>>2]|0,o)|0;if(c[l>>2]|0){b=c[l>>2]|0;i=g;return b|0}if(!((c[o>>2]|0)!=0|(c[m>>2]|0)!=0)){kh();if((hk(c[h>>2]|0,2)|0)==0?(_h(c[j>>2]|0,c[(c[h>>2]|0)+172>>2]|0,0)|0,(a[(c[h>>2]|0)+4>>0]|0)==0):0)ei(c[h>>2]|0,1)|0;lh();b=c[l>>2]|0;i=g;return b|0}if(!(c[m>>2]|0)){c[n>>2]=2049;c[l>>2]=Di(c[j>>2]|0,c[(c[h>>2]|0)+172>>2]|0,c[(c[h>>2]|0)+64>>2]|0,c[n>>2]|0,n)|0}if(!(c[l>>2]|0)){a[k>>0]=0;b=Ei(c[(c[h>>2]|0)+64>>2]|0,k,1,0,0)|0;c[l>>2]=b;c[l>>2]=(c[l>>2]|0)==522?0:b;if(!(c[m>>2]|0))Rh(c[(c[h>>2]|0)+64>>2]|0)|0;c[c[f>>2]>>2]=(d[k>>0]|0)!=0&1;b=c[l>>2]|0;i=g;return b|0}else{if((c[l>>2]|0)!=14){b=c[l>>2]|0;i=g;return b|0}c[c[f>>2]>>2]=1;c[l>>2]=0;b=c[l>>2]|0;i=g;return b|0}return 0}function MA(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;a=ub[c[38640+128>>2]&31](c[(c[d>>2]|0)+40>>2]|0)|0;i=b;return a|0}function NA(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;f=i;i=i+32|0;e=f+24|0;j=f+20|0;h=f+16|0;g=f+12|0;k=f;d=f+8|0;c[j>>2]=a;c[h>>2]=b;c[g>>2]=VA(c[(c[j>>2]|0)+208>>2]|0)|0;if(!(c[g>>2]|0)){a=k;c[a>>2]=0;c[a+4>>2]=0;if((c[c[(c[j>>2]|0)+60>>2]>>2]|0)!=0?(c[d>>2]=Gg(c[(c[j>>2]|0)+60>>2]|0,k)|0,(c[d>>2]|0)!=0):0){c[e>>2]=c[d>>2];a=c[e>>2]|0;i=f;return a|0}a=k;k=c[(c[j>>2]|0)+152>>2]|0;k=bF(c[a>>2]|0,c[a+4>>2]|0,k|0,((k|0)<0)<<31>>31|0)|0;k=ZE(k|0,D|0,1,0)|0;a=c[(c[j>>2]|0)+152>>2]|0;a=jF(k|0,D|0,a|0,((a|0)<0)<<31>>31|0)|0;c[g>>2]=a}if((c[g>>2]|0)>>>0>(c[(c[j>>2]|0)+156>>2]|0)>>>0)c[(c[j>>2]|0)+156>>2]=c[g>>2];c[c[h>>2]>>2]=c[g>>2];c[e>>2]=0;a=c[e>>2]|0;i=f;return a|0}function OA(b){b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;e=i;i=i+32|0;f=e+16|0;h=e+12|0;g=e+8|0;j=e+4|0;k=e;c[h>>2]=b;c[g>>2]=0;do if(!(a[(c[h>>2]|0)+12>>0]|0)){c[g>>2]=NA(c[h>>2]|0,k)|0;if(c[g>>2]|0){c[f>>2]=c[g>>2];l=c[f>>2]|0;i=e;return l|0}l=c[c[h>>2]>>2]|0;b=c[(c[h>>2]|0)+212>>2]|0;if(!(c[k>>2]|0)){l=_h(l,b,0)|0;c[g>>2]=l;c[g>>2]=(c[g>>2]|0)==5898?0:l;c[j>>2]=0}else c[g>>2]=vi(l,b,0,j)|0;if(!(c[g>>2]|0)){k=c[h>>2]|0;if(c[j>>2]|0){c[g>>2]=RA(k,0)|0;break}if((d[k+5>>0]|0)==5)a[(c[h>>2]|0)+5>>0]=0}}while(0);c[f>>2]=c[g>>2];l=c[f>>2]|0;i=e;return l|0}function PA(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;i=i+16|0;e=b+8|0;d=b+4|0;f=b;c[e>>2]=a;c[f>>2]=0;oj(c[(c[e>>2]|0)+208>>2]|0);c[d>>2]=QA(c[(c[e>>2]|0)+208>>2]|0,f)|0;if(!((c[d>>2]|0)!=0|(c[f>>2]|0)!=0)){f=c[d>>2]|0;i=b;return f|0}Ig(c[e>>2]|0);f=c[d>>2]|0;i=b;return f|0}function QA(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;d=i;i=i+16|0;f=d+12|0;g=d+8|0;e=d+4|0;h=d;c[f>>2]=a;c[g>>2]=b;c[h>>2]=0;do{j=c[f>>2]|0;b=c[g>>2]|0;a=(c[h>>2]|0)+1|0;c[h>>2]=a;c[e>>2]=nk(j,b,0,a)|0}while((c[e>>2]|0)==-1);i=d;return c[e>>2]|0}function RA(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;h=i;i=i+16|0;g=h+12|0;j=h+8|0;k=h+4|0;f=h;c[j>>2]=b;c[k>>2]=d;c[f>>2]=0;do if((a[(c[j>>2]|0)+12>>0]|0)==0?(c[(c[j>>2]|0)+208>>2]|0)==0:0)if(bA(c[j>>2]|0)|0){Rh(c[(c[j>>2]|0)+64>>2]|0)|0;c[f>>2]=SA(c[j>>2]|0)|0;if(c[f>>2]|0)break;a[(c[j>>2]|0)+5>>0]=5;a[(c[j>>2]|0)+16>>0]=0;break}else{c[g>>2]=14;b=c[g>>2]|0;i=h;return b|0}else e=7;while(0);if((e|0)==7)c[c[k>>2]>>2]=1;c[g>>2]=c[f>>2];b=c[g>>2]|0;i=h;return b|0}function SA(b){b=b|0;var e=0,f=0,g=0;g=i;i=i+16|0;e=g+4|0;f=g;c[e>>2]=b;c[f>>2]=0;if(a[(c[e>>2]|0)+4>>0]|0)c[f>>2]=TA(c[e>>2]|0)|0;if(c[f>>2]|0){e=c[e>>2]|0;Lg(e);f=c[f>>2]|0;i=g;return f|0}b=(c[e>>2]|0)+160|0;c[f>>2]=UA(c[c[e>>2]>>2]|0,c[(c[e>>2]|0)+60>>2]|0,c[(c[e>>2]|0)+212>>2]|0,d[(c[e>>2]|0)+4>>0]|0,c[b>>2]|0,c[b+4>>2]|0,(c[e>>2]|0)+208|0)|0;e=c[e>>2]|0;Lg(e);f=c[f>>2]|0;i=g;return f|0}function TA(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+16|0;e=b+4|0;d=b;c[e>>2]=a;c[d>>2]=hk(c[e>>2]|0,4)|0;if(!(c[d>>2]|0)){e=c[d>>2]|0;i=b;return e|0}ei(c[e>>2]|0,1)|0;e=c[d>>2]|0;i=b;return e|0}function UA(d,e,f,g,h,j,k){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;t=i;i=i+48|0;m=t+44|0;s=t+40|0;r=t+36|0;u=t+32|0;v=t+28|0;l=t;p=t+24|0;n=t+20|0;o=t+16|0;w=t+12|0;q=t+8|0;c[s>>2]=d;c[r>>2]=e;c[u>>2]=f;c[v>>2]=g;d=l;c[d>>2]=h;c[d+4>>2]=j;c[p>>2]=k;c[c[p>>2]>>2]=0;c[o>>2]=Mc(112+(c[(c[s>>2]|0)+4>>2]|0)|0,0)|0;if(!(c[o>>2]|0)){c[m>>2]=7;d=c[m>>2]|0;i=t;return d|0}c[c[o>>2]>>2]=c[s>>2];c[(c[o>>2]|0)+8>>2]=(c[o>>2]|0)+112;c[(c[o>>2]|0)+4>>2]=c[r>>2];b[(c[o>>2]|0)+40>>1]=-1;f=l;e=c[f+4>>2]|0;d=(c[o>>2]|0)+16|0;c[d>>2]=c[f>>2];c[d+4>>2]=e;c[(c[o>>2]|0)+100>>2]=c[u>>2];a[(c[o>>2]|0)+48>>0]=1;a[(c[o>>2]|0)+49>>0]=1;a[(c[o>>2]|0)+43>>0]=(c[v>>2]|0)!=0?2:0;c[w>>2]=524294;c[n>>2]=Di(c[s>>2]|0,c[u>>2]|0,c[(c[o>>2]|0)+8>>2]|0,c[w>>2]|0,w)|0;if((c[n>>2]|0)==0?(c[w>>2]&1|0)!=0:0)a[(c[o>>2]|0)+46>>0]=1;if(c[n>>2]|0){tj(c[o>>2]|0,0);Rh(c[(c[o>>2]|0)+8>>2]|0)|0;hc(c[o>>2]|0)}else{c[q>>2]=Ai(c[r>>2]|0)|0;if(c[q>>2]&1024)a[(c[o>>2]|0)+48>>0]=0;if(c[q>>2]&4096)a[(c[o>>2]|0)+49>>0]=0;c[c[p>>2]>>2]=c[o>>2]}c[m>>2]=c[n>>2];d=c[m>>2]|0;i=t;return d|0}function VA(a){a=a|0;var d=0,e=0,f=0;d=i;i=i+16|0;e=d+4|0;f=d;c[f>>2]=a;if((c[f>>2]|0)!=0?(b[(c[f>>2]|0)+40>>1]|0)>=0:0){c[e>>2]=c[(c[f>>2]|0)+72>>2];f=c[e>>2]|0;i=d;return f|0}c[e>>2]=0;f=c[e>>2]|0;i=d;return f|0}function WA(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;a=zb[c[(c[c[f>>2]>>2]|0)+36>>2]&63](c[f>>2]|0,c[e>>2]|0)|0;i=d;return a|0}function XA(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=i;i=i+176|0;d=b+168|0;e=b+164|0;g=b+160|0;f=b;c[d>>2]=a;_E(f|0,0,160)|0;while(1){if(!(c[d>>2]|0))break;c[g>>2]=c[(c[d>>2]|0)+8>>2];c[(c[d>>2]|0)+8>>2]=0;c[e>>2]=0;while(1){if(!(c[f+(c[e>>2]<<2)>>2]|0))break;c[d>>2]=_A(c[f+(c[e>>2]<<2)>>2]|0,c[d>>2]|0)|0;c[f+(c[e>>2]<<2)>>2]=0;c[e>>2]=(c[e>>2]|0)+1}c[f+(c[e>>2]<<2)>>2]=c[d>>2];c[d>>2]=c[g>>2]}c[d>>2]=0;c[e>>2]=0;while(1){a=c[d>>2]|0;if((c[e>>2]|0)>>>0>=40)break;c[d>>2]=_A(a,c[f+(c[e>>2]<<2)>>2]|0)|0;c[e>>2]=(c[e>>2]|0)+1}i=b;return a|0}function YA(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=i;i=i+16|0;e=b+12|0;g=b+8|0;d=b+4|0;f=b;c[e>>2]=a;c[d>>2]=c[e>>2];c[e>>2]=c[(c[d>>2]|0)+8>>2];c[(c[d>>2]|0)+8>>2]=0;c[(c[d>>2]|0)+12>>2]=0;c[g>>2]=1;while(1){a=c[d>>2]|0;if(!(c[e>>2]|0))break;c[f>>2]=a;c[d>>2]=c[e>>2];c[e>>2]=c[(c[d>>2]|0)+8>>2];c[(c[d>>2]|0)+12>>2]=c[f>>2];a=aB(e,c[g>>2]|0)|0;c[(c[d>>2]|0)+8>>2]=a;c[g>>2]=(c[g>>2]|0)+1}i=b;return a|0}function ZA(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;g=i;i=i+16|0;e=g+12|0;j=g+8|0;f=g+4|0;h=g;c[e>>2]=a;c[j>>2]=b;c[f>>2]=d;d=c[e>>2]|0;if(c[(c[e>>2]|0)+12>>2]|0){ZA(c[d+12>>2]|0,c[j>>2]|0,h);c[(c[h>>2]|0)+8>>2]=c[e>>2]}else c[c[j>>2]>>2]=d;h=c[e>>2]|0;if(c[(c[e>>2]|0)+8>>2]|0){ZA(c[h+8>>2]|0,(c[e>>2]|0)+8|0,c[f>>2]|0);i=g;return}else{c[c[f>>2]>>2]=h;i=g;return}}function _A(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;g=i;i=i+32|0;d=g+24|0;h=g+20|0;f=g;e=g+16|0;c[d>>2]=a;c[h>>2]=b;c[e>>2]=f;while(1){if(c[d>>2]|0)a=(c[h>>2]|0)!=0;else a=0;b=c[d>>2]|0;if(!a)break;k=c[b+4>>2]|0;a=c[h>>2]|0;j=c[a+4>>2]|0;if((k|0)<(j|0)|((k|0)==(j|0)?(c[b>>2]|0)>>>0<(c[a>>2]|0)>>>0:0)){c[(c[e>>2]|0)+8>>2]=c[d>>2];c[d>>2]=c[(c[d>>2]|0)+8>>2];c[e>>2]=c[(c[e>>2]|0)+8>>2];continue}j=c[h>>2]|0;b=c[j+4>>2]|0;k=c[d>>2]|0;a=c[k+4>>2]|0;if((b|0)<(a|0)|((b|0)==(a|0)?(c[j>>2]|0)>>>0<(c[k>>2]|0)>>>0:0)){c[(c[e>>2]|0)+8>>2]=c[h>>2];c[h>>2]=c[(c[h>>2]|0)+8>>2];c[e>>2]=c[(c[e>>2]|0)+8>>2];continue}else{c[d>>2]=c[(c[d>>2]|0)+8>>2];continue}}if(b){c[(c[e>>2]|0)+8>>2]=c[d>>2];k=f+8|0;k=c[k>>2]|0;i=g;return k|0}else{c[(c[e>>2]|0)+8>>2]=c[h>>2];k=f+8|0;k=c[k>>2]|0;i=g;return k|0}return 0}function $A(a){a=a|0;var d=0,f=0,g=0,h=0;d=i;i=i+16|0;f=d+8|0;g=d+4|0;h=d;c[g>>2]=a;do if(!(e[(c[g>>2]|0)+24>>1]|0)){c[h>>2]=Qe(c[(c[g>>2]|0)+4>>2]|0,1016,0)|0;if(c[h>>2]|0){c[c[h>>2]>>2]=c[c[g>>2]>>2];c[c[g>>2]>>2]=c[h>>2];c[(c[g>>2]|0)+16>>2]=(c[h>>2]|0)+8;b[(c[g>>2]|0)+24>>1]=63;break}c[f>>2]=0;h=c[f>>2]|0;i=d;return h|0}while(0);h=(c[g>>2]|0)+24|0;b[h>>1]=(b[h>>1]|0)+ -1<<16>>16;g=(c[g>>2]|0)+16|0;h=c[g>>2]|0;c[g>>2]=h+16;c[f>>2]=h;h=c[f>>2]|0;i=d;return h|0}function aB(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;d=i;i=i+32|0;e=d+16|0;g=d+12|0;h=d+8|0;f=d+4|0;j=d;c[g>>2]=a;c[h>>2]=b;if(!(c[c[g>>2]>>2]|0)){c[e>>2]=0;a=c[e>>2]|0;i=d;return a|0}b=c[g>>2]|0;if((c[h>>2]|0)==1){c[f>>2]=c[b>>2];c[c[g>>2]>>2]=c[(c[f>>2]|0)+8>>2];c[(c[f>>2]|0)+8>>2]=0;c[(c[f>>2]|0)+12>>2]=0;c[e>>2]=c[f>>2];a=c[e>>2]|0;i=d;return a|0}c[j>>2]=aB(b,(c[h>>2]|0)-1|0)|0;c[f>>2]=c[c[g>>2]>>2];j=c[j>>2]|0;if(!(c[f>>2]|0)){c[e>>2]=j;a=c[e>>2]|0;i=d;return a|0}else{c[(c[f>>2]|0)+12>>2]=j;c[c[g>>2]>>2]=c[(c[f>>2]|0)+8>>2];a=aB(c[g>>2]|0,(c[h>>2]|0)-1|0)|0;c[(c[f>>2]|0)+8>>2]=a;c[e>>2]=c[f>>2];a=c[e>>2]|0;i=d;return a|0}return 0}function bB(a){a=a|0;var d=0,f=0;d=i;i=i+16|0;f=d;c[f>>2]=a;if(!((e[(c[f>>2]|0)+26>>1]|0)&1)){a=XA(c[(c[f>>2]|0)+8>>2]|0)|0;c[(c[f>>2]|0)+8>>2]=a}f=(c[f>>2]|0)+26|0;b[f>>1]=e[f>>1]|0|2;i=d;return}function cB(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;g=i;i=i+16|0;j=g+12|0;k=g+8|0;h=g+4|0;f=g;c[j>>2]=a;c[k>>2]=d;c[h>>2]=e;c[f>>2]=c[k>>2];c[c[f>>2]>>2]=0;c[(c[f>>2]|0)+4>>2]=c[j>>2];c[(c[f>>2]|0)+8>>2]=0;c[(c[f>>2]|0)+12>>2]=0;c[(c[f>>2]|0)+20>>2]=0;c[(c[f>>2]|0)+16>>2]=(c[f>>2]|0)+32;b[(c[f>>2]|0)+24>>1]=(((c[h>>2]|0)-32|0)>>>0)/16|0;b[(c[f>>2]|0)+26>>1]=1;c[(c[f>>2]|0)+28>>2]=0;i=g;return c[f>>2]|0}function dB(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;a=Fg(c[(c[d>>2]|0)+204>>2]|0)|0;i=b;return a|0}function eB(b,e){b=b|0;e=e|0;var f=0,g=0,h=0;f=i;i=i+16|0;h=f+4|0;g=f;c[h>>2]=b;c[g>>2]=e;b=(c[(c[h>>2]|0)+8>>2]|0)+(((c[g>>2]|0)>>>0)/8|0)|0;a[b>>0]=d[b>>0]|0|1<<(c[g>>2]&7);i=f;return}function fB(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;o=i;i=i+64|0;l=o;n=o+52|0;t=o+48|0;h=o+44|0;k=o+40|0;u=o+36|0;m=o+32|0;j=o+28|0;s=o+24|0;p=o+20|0;r=o+16|0;q=o+12|0;c[n>>2]=b;c[t>>2]=e;c[h>>2]=f;c[k>>2]=g;c[m>>2]=c[k>>2];c[j>>2]=c[h>>2];while(1){b=c[k>>2]|0;c[k>>2]=b+ -1;if((b|0)<=0){p=23;break}if(!(c[(c[n>>2]|0)+16>>2]|0)){p=23;break}g=c[n>>2]|0;if((c[h>>2]|0)<1){p=5;break}if(kB(g,c[h>>2]|0)|0){p=23;break}if(Xc(c[(c[n>>2]|0)+4>>2]|0,c[h>>2]|0,s,0)|0){p=8;break}c[p>>2]=Zc(c[s>>2]|0)|0;do if(!(c[t>>2]|0)){if((c[k>>2]|0)>0?(d[(c[c[n>>2]>>2]|0)+17>>0]|0)!=0:0){c[u>>2]=Hh(c[p>>2]|0)|0;gB(c[n>>2]|0,c[u>>2]|0,4,c[h>>2]|0)}}else{c[r>>2]=Hh((c[p>>2]|0)+4|0)|0;if(a[(c[c[n>>2]>>2]|0)+17>>0]|0)gB(c[n>>2]|0,c[h>>2]|0,2,0);if((c[r>>2]|0)>(((c[(c[c[n>>2]>>2]|0)+36>>2]|0)/4|0)-2|0)){b=c[n>>2]|0;c[l>>2]=c[h>>2];jB(b,34368,l);c[k>>2]=(c[k>>2]|0)+ -1;break}c[u>>2]=0;while(1){if((c[u>>2]|0)>=(c[r>>2]|0))break;c[q>>2]=Hh((c[p>>2]|0)+(8+(c[u>>2]<<2))|0)|0;if(a[(c[c[n>>2]>>2]|0)+17>>0]|0)gB(c[n>>2]|0,c[q>>2]|0,2,0);kB(c[n>>2]|0,c[q>>2]|0)|0;c[u>>2]=(c[u>>2]|0)+1}c[k>>2]=(c[k>>2]|0)-(c[r>>2]|0)}while(0);c[h>>2]=Hh(c[p>>2]|0)|0;_c(c[s>>2]|0)}if((p|0)==5){e=c[m>>2]|0;b=c[j>>2]|0;c[l>>2]=(c[k>>2]|0)+1;c[l+4>>2]=e;c[l+8>>2]=b;jB(g,34280,l);i=o;return}else if((p|0)==8){b=c[n>>2]|0;c[l>>2]=c[h>>2];jB(b,34344,l);i=o;return}else if((p|0)==23){i=o;return}}function gB(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;l=i;i=i+48|0;k=l;n=l+36|0;j=l+32|0;h=l+41|0;o=l+28|0;m=l+24|0;p=l+40|0;q=l+20|0;c[n>>2]=b;c[j>>2]=e;a[h>>0]=f;c[o>>2]=g;c[m>>2]=Qw(c[c[n>>2]>>2]|0,c[j>>2]|0,p,q)|0;if(c[m>>2]|0){if((c[m>>2]|0)==7|(c[m>>2]|0)==3082)c[(c[n>>2]|0)+24>>2]=1;b=c[n>>2]|0;c[k>>2]=c[j>>2];jB(b,34192,k);i=l;return}if((d[p>>0]|0|0)==(d[h>>0]|0|0)?(c[q>>2]|0)==(c[o>>2]|0):0){i=l;return}b=c[n>>2]|0;n=d[h>>0]|0;o=c[o>>2]|0;f=d[p>>0]|0;e=c[q>>2]|0;c[k>>2]=c[j>>2];c[k+4>>2]=n;c[k+8>>2]=o;c[k+12>>2]=f;c[k+16>>2]=e;jB(b,34224,k);i=l;return}function hB(f,g,h,j){f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0;G=i;i=i+192|0;t=G+40|0;m=G+180|0;o=G+176|0;z=G+172|0;M=G+168|0;K=G+164|0;u=G+160|0;w=G+156|0;V=G+152|0;r=G+148|0;O=G+144|0;U=G+140|0;v=G+136|0;y=G+132|0;E=G+128|0;F=G+124|0;x=G+120|0;I=G+116|0;D=G+112|0;k=G+108|0;J=G+32|0;L=G+24|0;n=G+104|0;p=G+100|0;q=G+96|0;P=G+92|0;S=G+88|0;T=G;R=G+84|0;Q=G+80|0;H=G+76|0;A=G+72|0;B=G+68|0;C=G+64|0;N=G+60|0;s=G+56|0;c[o>>2]=f;c[z>>2]=g;c[M>>2]=h;c[K>>2]=j;c[k>>2]=0;f=J;c[f>>2]=0;c[f+4>>2]=0;f=L;c[f>>2]=0;c[f+4>>2]=0;c[n>>2]=c[(c[o>>2]|0)+28>>2];c[p>>2]=c[(c[o>>2]|0)+32>>2];c[q>>2]=c[(c[o>>2]|0)+36>>2];c[I>>2]=c[c[o>>2]>>2];c[D>>2]=c[(c[I>>2]|0)+36>>2];if(!(c[z>>2]|0)){c[m>>2]=0;f=c[m>>2]|0;i=G;return f|0}if(kB(c[o>>2]|0,c[z>>2]|0)|0){c[m>>2]=0;f=c[m>>2]|0;i=G;return f|0}c[(c[o>>2]|0)+28>>2]=33496;c[(c[o>>2]|0)+32>>2]=c[z>>2];f=Bw(c[I>>2]|0,c[z>>2]|0,u,0)|0;c[V>>2]=f;do if(f){f=c[o>>2]|0;c[t>>2]=c[V>>2];jB(f,33512,t);c[r>>2]=-1}else{a[c[u>>2]>>0]=0;f=Sj(c[u>>2]|0)|0;c[V>>2]=f;if(f){f=c[o>>2]|0;c[t>>2]=c[V>>2];jB(f,33552,t);Rk(c[u>>2]|0);c[r>>2]=-1;break}c[r>>2]=0;c[w>>2]=0;while(1){if((c[w>>2]|0)>=(e[(c[u>>2]|0)+18>>1]|0))break;if(!(c[(c[o>>2]|0)+16>>2]|0))break;c[(c[o>>2]|0)+28>>2]=33592;c[(c[o>>2]|0)+32>>2]=c[z>>2];c[(c[o>>2]|0)+36>>2]=c[w>>2];c[P>>2]=(c[(c[u>>2]|0)+56>>2]|0)+(e[(c[u>>2]|0)+20>>1]&(d[(c[(c[u>>2]|0)+64>>2]|0)+(c[w>>2]<<1)>>0]<<8|d[(c[(c[u>>2]|0)+64>>2]|0)+(c[w>>2]<<1)+1>>0]));Kw(c[u>>2]|0,c[P>>2]|0,T);c[S>>2]=c[T+12>>2];if(a[(c[u>>2]|0)+2>>0]|0){j=T;V=c[j>>2]|0;j=c[j+4>>2]|0;if(c[w>>2]|0){f=L;g=c[f+4>>2]|0;if((j|0)<(g|0)|((j|0)==(g|0)?V>>>0<=(c[f>>2]|0)>>>0:0)){f=c[o>>2]|0;W=T;V=c[W+4>>2]|0;h=L;j=c[h>>2]|0;h=c[h+4>>2]|0;g=t;c[g>>2]=c[W>>2];c[g+4>>2]=V;g=t+8|0;c[g>>2]=j;c[g+4>>2]=h;jB(f,33624,t)}}else{W=L;c[W>>2]=V;c[W+4>>2]=j;W=J;c[W>>2]=V;c[W+4>>2]=j}g=T;f=c[g+4>>2]|0;W=L;c[W>>2]=c[g>>2];c[W+4>>2]=f}if((c[S>>2]|0)>>>0>(e[T+16>>1]|0)>>>0?((c[P>>2]|0)+(e[T+18>>1]|0)|0)>>>0<=((c[(c[u>>2]|0)+56>>2]|0)+(c[(c[I>>2]|0)+36>>2]|0)|0)>>>0:0){c[R>>2]=(((c[S>>2]|0)-(e[T+16>>1]|0)+(c[D>>2]|0)-5|0)>>>0)/(((c[D>>2]|0)-4|0)>>>0)|0;c[Q>>2]=Hh((c[P>>2]|0)+(e[T+18>>1]|0)|0)|0;if(a[(c[I>>2]|0)+17>>0]|0)gB(c[o>>2]|0,c[Q>>2]|0,3,c[z>>2]|0);fB(c[o>>2]|0,0,c[Q>>2]|0,c[R>>2]|0)}if(!(a[(c[u>>2]|0)+5>>0]|0)){c[U>>2]=Hh(c[P>>2]|0)|0;if(a[(c[I>>2]|0)+17>>0]|0)gB(c[o>>2]|0,c[U>>2]|0,5,c[z>>2]|0);c[O>>2]=hB(c[o>>2]|0,c[U>>2]|0,J,(c[w>>2]|0)==0?0:L)|0;if((c[w>>2]|0)>0?(c[O>>2]|0)!=(c[r>>2]|0):0)jB(c[o>>2]|0,33672,t);c[r>>2]=c[O>>2]}c[w>>2]=(c[w>>2]|0)+1}if(!(a[(c[u>>2]|0)+5>>0]|0)){c[U>>2]=Hh((c[(c[u>>2]|0)+56>>2]|0)+((d[(c[u>>2]|0)+6>>0]|0)+8)|0)|0;c[(c[o>>2]|0)+28>>2]=33704;c[(c[o>>2]|0)+32>>2]=c[z>>2];if(a[(c[I>>2]|0)+17>>0]|0)gB(c[o>>2]|0,c[U>>2]|0,5,c[z>>2]|0);hB(c[o>>2]|0,c[U>>2]|0,0,(b[(c[u>>2]|0)+18>>1]|0)!=0?L:0)|0}c[(c[o>>2]|0)+28>>2]=33496;c[(c[o>>2]|0)+32>>2]=c[z>>2];do if((d[(c[u>>2]|0)+5>>0]|0)!=0?(d[(c[u>>2]|0)+2>>0]|0)!=0:0){O=(c[K>>2]|0)!=0;if(!(c[M>>2]|0)){if(!O)break;f=J;h=c[f+4>>2]|0;W=c[K>>2]|0;g=c[W+4>>2]|0;if(!((h|0)<(g|0)|((h|0)==(g|0)?(c[f>>2]|0)>>>0<=(c[W>>2]|0)>>>0:0)))break;W=c[o>>2]|0;V=J;j=c[V+4>>2]|0;g=c[K>>2]|0;h=c[g>>2]|0;g=c[g+4>>2]|0;f=t;c[f>>2]=c[V>>2];c[f+4>>2]=j;f=t+8|0;c[f>>2]=h;c[f+4>>2]=g;jB(W,33928,t);break}if(!O){f=L;h=c[f+4>>2]|0;W=c[M>>2]|0;g=c[W+4>>2]|0;if(!((h|0)>(g|0)|((h|0)==(g|0)?(c[f>>2]|0)>>>0>(c[W>>2]|0)>>>0:0)))break;W=c[o>>2]|0;V=L;j=c[V+4>>2]|0;g=c[M>>2]|0;h=c[g>>2]|0;g=c[g+4>>2]|0;f=t;c[f>>2]=c[V>>2];c[f+4>>2]=j;f=t+8|0;c[f>>2]=h;c[f+4>>2]=g;jB(W,33736,t);break}f=J;h=c[f+4>>2]|0;W=c[M>>2]|0;g=c[W+4>>2]|0;if((h|0)<(g|0)|((h|0)==(g|0)?(c[f>>2]|0)>>>0<=(c[W>>2]|0)>>>0:0)){W=c[o>>2]|0;V=J;j=c[V+4>>2]|0;g=c[M>>2]|0;h=c[g>>2]|0;g=c[g+4>>2]|0;f=t;c[f>>2]=c[V>>2];c[f+4>>2]=j;f=t+8|0;c[f>>2]=h;c[f+4>>2]=g;jB(W,33800,t)}f=L;h=c[f+4>>2]|0;W=c[K>>2]|0;g=c[W+4>>2]|0;if((h|0)>(g|0)|((h|0)==(g|0)?(c[f>>2]|0)>>>0>(c[W>>2]|0)>>>0:0)){W=c[o>>2]|0;V=L;j=c[V+4>>2]|0;g=c[K>>2]|0;h=c[g>>2]|0;g=c[g+4>>2]|0;f=t;c[f>>2]=c[V>>2];c[f+4>>2]=j;f=t+8|0;c[f>>2]=h;c[f+4>>2]=g;jB(W,33864,t)}g=L;f=c[g+4>>2]|0;W=c[M>>2]|0;c[W>>2]=c[g>>2];c[W+4>>2]=f}while(0);c[x>>2]=c[(c[u>>2]|0)+56>>2];c[y>>2]=d[(c[u>>2]|0)+6>>0];c[k>>2]=Hg(c[(c[I>>2]|0)+32>>2]|0)|0;c[(c[o>>2]|0)+28>>2]=0;if(c[k>>2]|0){c[H>>2]=((d[(c[x>>2]|0)+((c[y>>2]|0)+5)>>0]<<8|d[(c[x>>2]|0)+((c[y>>2]|0)+5)+1>>0])-1&65535)+1;_E((c[k>>2]|0)+(c[H>>2]|0)|0,0,(c[D>>2]|0)-(c[H>>2]|0)|0)|0;_E(c[k>>2]|0,1,c[H>>2]|0)|0;c[F>>2]=d[(c[x>>2]|0)+((c[y>>2]|0)+3)>>0]<<8|d[(c[x>>2]|0)+((c[y>>2]|0)+3)+1>>0];c[E>>2]=(c[y>>2]|0)+12-(d[(c[u>>2]|0)+5>>0]<<2);c[w>>2]=0;while(1){if((c[w>>2]|0)>=(c[F>>2]|0))break;c[A>>2]=d[(c[x>>2]|0)+((c[E>>2]|0)+(c[w>>2]<<1))>>0]<<8|d[(c[x>>2]|0)+((c[E>>2]|0)+(c[w>>2]<<1))+1>>0];c[B>>2]=65536;if((c[A>>2]|0)<=((c[D>>2]|0)-4|0))c[B>>2]=(lB(c[u>>2]|0,(c[x>>2]|0)+(c[A>>2]|0)|0)|0)&65535;a:do if(((c[A>>2]|0)+(c[B>>2]|0)-1|0)>=(c[D>>2]|0)){c[(c[o>>2]|0)+28>>2]=0;W=c[o>>2]|0;f=c[z>>2]|0;c[t>>2]=c[w>>2];c[t+4>>2]=f;jB(W,33992,t)}else{c[C>>2]=(c[A>>2]|0)+(c[B>>2]|0)-1;while(1){if((c[C>>2]|0)<(c[A>>2]|0))break a;W=(c[k>>2]|0)+(c[C>>2]|0)|0;a[W>>0]=(a[W>>0]|0)+1<<24>>24;c[C>>2]=(c[C>>2]|0)+ -1}}while(0);c[w>>2]=(c[w>>2]|0)+1}c[w>>2]=d[(c[x>>2]|0)+((c[y>>2]|0)+1)>>0]<<8|d[(c[x>>2]|0)+((c[y>>2]|0)+1)+1>>0];while(1){if((c[w>>2]|0)<=0)break;c[N>>2]=d[(c[x>>2]|0)+((c[w>>2]|0)+2)>>0]<<8|d[(c[x>>2]|0)+((c[w>>2]|0)+2)+1>>0];c[s>>2]=(c[w>>2]|0)+(c[N>>2]|0)-1;while(1){if((c[s>>2]|0)<(c[w>>2]|0))break;W=(c[k>>2]|0)+(c[s>>2]|0)|0;a[W>>0]=(a[W>>0]|0)+1<<24>>24;c[s>>2]=(c[s>>2]|0)+ -1}c[s>>2]=d[(c[x>>2]|0)+(c[w>>2]|0)>>0]<<8|d[(c[x>>2]|0)+(c[w>>2]|0)+1>>0];c[w>>2]=c[s>>2]}c[v>>2]=0;c[w>>2]=0;while(1){if((c[w>>2]|0)>=(c[D>>2]|0))break;if(a[(c[k>>2]|0)+(c[w>>2]|0)>>0]|0){if((a[(c[k>>2]|0)+(c[w>>2]|0)>>0]|0)>1){l=72;break}}else c[v>>2]=(c[v>>2]|0)+1;c[w>>2]=(c[w>>2]|0)+1}if((l|0)==72){W=c[o>>2]|0;f=c[z>>2]|0;c[t>>2]=c[w>>2];c[t+4>>2]=f;jB(W,34040,t)}if((c[v>>2]|0)!=(d[(c[x>>2]|0)+((c[y>>2]|0)+7)>>0]|0)){W=c[o>>2]|0;g=d[(c[x>>2]|0)+((c[y>>2]|0)+7)>>0]|0;f=c[z>>2]|0;c[t>>2]=c[v>>2];c[t+4>>2]=g;c[t+8>>2]=f;jB(W,34080,t)}}else c[(c[o>>2]|0)+24>>2]=1;Kg(c[k>>2]|0);Rk(c[u>>2]|0)}while(0);c[(c[o>>2]|0)+28>>2]=c[n>>2];c[(c[o>>2]|0)+32>>2]=c[p>>2];c[(c[o>>2]|0)+36>>2]=c[q>>2];c[m>>2]=(c[r>>2]|0)+1;W=c[m>>2]|0;i=G;return W|0}function iB(a,b){a=a|0;b=b|0;var e=0,f=0,g=0;g=i;i=i+16|0;f=g+4|0;e=g;c[f>>2]=a;c[e>>2]=b;i=g;return(d[(c[(c[f>>2]|0)+8>>2]|0)+(((c[e>>2]|0)>>>0)/8|0)>>0]|0)&1<<(c[e>>2]&7)|0}function jB(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;f=i;i=i+240|0;k=f;g=f+28|0;h=f+24|0;j=f+8|0;l=f+32|0;c[g>>2]=a;c[h>>2]=b;if(!(c[(c[g>>2]|0)+16>>2]|0)){i=f;return}a=(c[g>>2]|0)+16|0;c[a>>2]=(c[a>>2]|0)+ -1;a=(c[g>>2]|0)+20|0;c[a>>2]=(c[a>>2]|0)+1;c[j>>2]=e;if(c[(c[g>>2]|0)+52>>2]|0)Vm((c[g>>2]|0)+40|0,33488,1);if(c[(c[g>>2]|0)+28>>2]|0){a=c[(c[g>>2]|0)+28>>2]|0;b=c[(c[g>>2]|0)+36>>2]|0;c[k>>2]=c[(c[g>>2]|0)+32>>2];c[k+4>>2]=b;sc(200,l,a,k)|0;ss((c[g>>2]|0)+40|0,l)}oc((c[g>>2]|0)+40|0,1,c[h>>2]|0,j);if((d[(c[g>>2]|0)+65>>0]|0|0)!=1){i=f;return}c[(c[g>>2]|0)+24>>2]=1;i=f;return}function kB(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=i;i=i+16|0;e=d;f=d+12|0;h=d+8|0;g=d+4|0;c[h>>2]=a;c[g>>2]=b;do if(c[g>>2]|0){b=c[h>>2]|0;a=c[g>>2]|0;if((c[g>>2]|0)>>>0>(c[(c[h>>2]|0)+12>>2]|0)>>>0){c[e>>2]=a;jB(b,34136,e);c[f>>2]=1;break}a=(iB(b,a)|0)!=0;h=c[h>>2]|0;g=c[g>>2]|0;if(a){c[e>>2]=g;jB(h,34160,e);c[f>>2]=1;break}else{eB(h,g);c[f>>2]=0;break}}else c[f>>2]=1;while(0);i=d;return c[f>>2]|0}function lB(f,g){f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;l=i;i=i+32|0;k=l+24|0;o=l+20|0;j=l+16|0;m=l+12|0;h=l+8|0;n=l+4|0;p=l;c[o>>2]=f;c[j>>2]=g;c[m>>2]=(c[j>>2]|0)+(d[(c[o>>2]|0)+7>>0]|0);g=c[m>>2]|0;if(a[(c[o>>2]|0)+4>>0]|0){c[h>>2]=g+9;do{f=c[m>>2]|0;c[m>>2]=f+1;if(!(d[f>>0]&128))break}while((c[m>>2]|0)>>>0<(c[h>>2]|0)>>>0);b[k>>1]=(c[m>>2]|0)-(c[j>>2]|0);f=b[k>>1]|0;i=l;return f|0}c[n>>2]=d[g>>0];a:do if((c[n>>2]|0)>>>0>=128){c[h>>2]=(c[m>>2]|0)+9;c[n>>2]=c[n>>2]&127;do{g=c[n>>2]<<7;f=(c[m>>2]|0)+1|0;c[m>>2]=f;c[n>>2]=g|d[f>>0]&127;if((d[c[m>>2]>>0]|0)<128)break a}while((c[m>>2]|0)>>>0<(c[h>>2]|0)>>>0)}while(0);c[m>>2]=(c[m>>2]|0)+1;b:do if(a[(c[o>>2]|0)+2>>0]|0){c[h>>2]=(c[m>>2]|0)+9;do{f=c[m>>2]|0;c[m>>2]=f+1;if(!(d[f>>0]&128))break b}while((c[m>>2]|0)>>>0<(c[h>>2]|0)>>>0)}while(0);if((c[n>>2]|0)>>>0<=(e[(c[o>>2]|0)+10>>1]|0)>>>0){f=(c[n>>2]|0)+((c[m>>2]|0)-(c[j>>2]|0))|0;c[n>>2]=f;c[n>>2]=(c[n>>2]|0)>>>0<4?4:f}else{c[p>>2]=e[(c[o>>2]|0)+12>>1];c[n>>2]=(c[p>>2]|0)+((((c[n>>2]|0)-(c[p>>2]|0)|0)>>>0)%(((c[(c[(c[o>>2]|0)+52>>2]|0)+36>>2]|0)-4|0)>>>0)|0);if((c[n>>2]|0)>>>0>(e[(c[o>>2]|0)+10>>1]|0)>>>0)c[n>>2]=c[p>>2];c[n>>2]=(c[n>>2]|0)+(4+((c[m>>2]|0)-(c[j>>2]|0)&65535))}b[k>>1]=c[n>>2];f=b[k>>1]|0;i=l;return f|0}function mB(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+16|0;d=b+4|0;e=b;c[d>>2]=a;if(!(c[d>>2]|0)){e=c[d>>2]|0;hc(e);i=b;return}c[e>>2]=0;while(1){if((c[e>>2]|0)>=(c[c[d>>2]>>2]|0))break;qB((c[(c[d>>2]|0)+12>>2]|0)+((c[e>>2]|0)*56|0)|0);c[e>>2]=(c[e>>2]|0)+1}e=c[d>>2]|0;hc(e);i=b;return}function nB(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;Xb(c[f>>2]|0,c[(c[e>>2]|0)+12>>2]|0);c[(c[e>>2]|0)+12>>2]=0;oB(0,c[(c[e>>2]|0)+16>>2]|0);c[(c[e>>2]|0)+16>>2]=0;if(c[(c[e>>2]|0)+32>>2]|0){pB(c[(c[e>>2]|0)+32>>2]|0)|0;c[(c[e>>2]|0)+32>>2]=0;f=(c[e>>2]|0)+40|0;c[f>>2]=0;c[f+4>>2]=0}if(!(c[(c[e>>2]|0)+48>>2]|0)){i=d;return}pB(c[(c[e>>2]|0)+48>>2]|0)|0;c[(c[e>>2]|0)+48>>2]=0;f=(c[e>>2]|0)+56|0;c[f>>2]=0;c[f+4>>2]=0;i=d;return}function oB(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=i;i=i+16|0;g=d+12|0;h=d+8|0;e=d+4|0;f=d;c[g>>2]=a;c[h>>2]=b;c[e>>2]=c[h>>2];while(1){if(!(c[e>>2]|0))break;c[f>>2]=c[(c[e>>2]|0)+4>>2];Xb(c[g>>2]|0,c[e>>2]|0);c[e>>2]=c[f>>2]}i=d;return}function pB(a){a=a|0;var b=0,d=0,e=0;d=i;i=i+16|0;e=d+4|0;b=d;c[e>>2]=a;c[b>>2]=0;c[b>>2]=Rh(c[e>>2]|0)|0;hc(c[e>>2]|0);i=d;return c[b>>2]|0}function qB(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;hc(c[(c[d>>2]|0)+28>>2]|0);hc(c[(c[d>>2]|0)+36>>2]|0);if(c[(c[d>>2]|0)+44>>2]|0)hj(c[(c[d>>2]|0)+24>>2]|0,0,0,c[(c[d>>2]|0)+44>>2]|0)|0;rB(c[(c[d>>2]|0)+48>>2]|0);d=(c[d>>2]|0)+0|0;a=d+56|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(a|0));i=b;return}function rB(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;if(!(c[d>>2]|0)){i=b;return}mB(c[(c[d>>2]|0)+4>>2]|0);hc(c[d>>2]|0);i=b;return}function sB(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0;h=i;i=i+32|0;n=h+20|0;k=h;l=h+16|0;j=h+12|0;m=h+8|0;c[n>>2]=b;b=k;c[b>>2]=e;c[b+4>>2]=f;c[l>>2]=g;c[m>>2]=c[(c[n>>2]|0)+4>>2];c[j>>2]=c[(c[m>>2]|0)+8>>2];while(1){if(!(c[j>>2]|0))break;do if((d[(c[j>>2]|0)+72>>0]|0)&16){if((c[l>>2]|0)==0?(m=(c[j>>2]|0)+24|0,n=k,!((c[m>>2]|0)==(c[n>>2]|0)?(c[m+4>>2]|0)==(c[n+4>>2]|0):0)):0)break;a[(c[j>>2]|0)+73>>0]=0}while(0);c[j>>2]=c[(c[j>>2]|0)+8>>2]}i=h;return}function tB(b,f,g,h){b=b|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;o=i;i=i+48|0;j=o+36|0;r=o+32|0;v=o+28|0;n=o+24|0;q=o+20|0;l=o+16|0;k=o+12|0;p=o+8|0;u=o+4|0;m=o;t=o+40|0;c[r>>2]=b;c[v>>2]=f;c[n>>2]=g;c[q>>2]=h;b=c[v>>2]|0;if(b>>>0>(Aw(c[r>>2]|0)|0)>>>0){c[j>>2]=kj(59756)|0;b=c[j>>2]|0;i=o;return b|0}c[k>>2]=zw(c[r>>2]|0,c[v>>2]|0,l,0)|0;if(c[k>>2]|0){c[j>>2]=c[k>>2];b=c[j>>2]|0;i=o;return b|0}c[m>>2]=d[(c[l>>2]|0)+6>>0];c[u>>2]=0;while(1){v=c[l>>2]|0;if((c[u>>2]|0)>=(e[(c[l>>2]|0)+18>>1]|0)){s=11;break}c[p>>2]=(c[v+56>>2]|0)+(e[(c[l>>2]|0)+20>>1]&(d[(c[(c[l>>2]|0)+64>>2]|0)+(c[u>>2]<<1)>>0]<<8|d[(c[(c[l>>2]|0)+64>>2]|0)+(c[u>>2]<<1)+1>>0]));if((a[(c[l>>2]|0)+5>>0]|0)==0?(f=c[r>>2]|0,b=Hh(c[p>>2]|0)|0,c[k>>2]=tB(f,b,1,c[q>>2]|0)|0,(c[k>>2]|0)!=0):0)break;c[k>>2]=uB(c[l>>2]|0,c[p>>2]|0,t)|0;if(c[k>>2]|0)break;c[u>>2]=(c[u>>2]|0)+1}do if((s|0)==11){if(a[v+5>>0]|0){if(c[q>>2]|0){b=c[q>>2]|0;c[b>>2]=(c[b>>2]|0)+(e[(c[l>>2]|0)+18>>1]|0)}}else{f=c[r>>2]|0;b=Hh((c[(c[l>>2]|0)+56>>2]|0)+((c[m>>2]|0)+8)|0)|0;c[k>>2]=tB(f,b,1,c[q>>2]|0)|0;if(c[k>>2]|0)break}p=c[l>>2]|0;if(c[n>>2]|0){vB(p,k);break}b=gd(c[p+68>>2]|0)|0;c[k>>2]=b;if(!b)wB(c[l>>2]|0,d[(c[(c[l>>2]|0)+56>>2]|0)+(c[m>>2]|0)>>0]|8)}while(0);Rk(c[l>>2]|0);c[j>>2]=c[k>>2];b=c[j>>2]|0;i=o;return b|0}function uB(a,d,f){a=a|0;d=d|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;p=i;i=i+80|0;j=p+64|0;t=p+60|0;q=p+56|0;u=p+52|0;m=p+48|0;r=p;n=p+44|0;k=p+40|0;g=p+36|0;s=p+32|0;o=p+28|0;l=p+24|0;c[t>>2]=a;c[q>>2]=d;c[u>>2]=f;c[m>>2]=c[(c[t>>2]|0)+52>>2];Kw(c[t>>2]|0,c[q>>2]|0,r);b[c[u>>2]>>1]=b[r+20>>1]|0;if(!(e[r+18>>1]|0)){c[j>>2]=0;u=c[j>>2]|0;i=p;return u|0}if(((c[q>>2]|0)+(e[r+18>>1]|0)+3|0)>>>0>((c[(c[t>>2]|0)+56>>2]|0)+(e[(c[t>>2]|0)+20>>1]|0)|0)>>>0){c[j>>2]=kj(57786)|0;u=c[j>>2]|0;i=p;return u|0}c[n>>2]=Hh((c[q>>2]|0)+(e[r+18>>1]|0)|0)|0;c[s>>2]=(c[(c[m>>2]|0)+36>>2]|0)-4;c[g>>2]=(((c[r+12>>2]|0)-(e[r+16>>1]|0)+(c[s>>2]|0)-1|0)>>>0)/((c[s>>2]|0)>>>0)|0;while(1){u=c[g>>2]|0;c[g>>2]=u+ -1;if(!u){h=23;break}c[o>>2]=0;c[l>>2]=0;if((c[n>>2]|0)>>>0<2){h=9;break}u=c[n>>2]|0;if(u>>>0>(Aw(c[m>>2]|0)|0)>>>0){h=9;break}if((c[g>>2]|0)!=0?(c[k>>2]=Ow(c[m>>2]|0,c[n>>2]|0,l,o)|0,(c[k>>2]|0)!=0):0){h=12;break}if((c[l>>2]|0)==0?(u=zB(c[m>>2]|0,c[n>>2]|0)|0,c[l>>2]=u,(u|0)==0):0)h=17;else if((Rj(c[(c[l>>2]|0)+68>>2]|0)|0)!=1)c[k>>2]=kj(57820)|0;else h=17;if((h|0)==17){h=0;c[k>>2]=xB(c[m>>2]|0,c[l>>2]|0,c[n>>2]|0)|0}if(c[l>>2]|0)_c(c[(c[l>>2]|0)+68>>2]|0);if(c[k>>2]|0){h=21;break}c[n>>2]=c[o>>2]}if((h|0)==9){c[j>>2]=kj(57800)|0;u=c[j>>2]|0;i=p;return u|0}else if((h|0)==12){c[j>>2]=c[k>>2];u=c[j>>2]|0;i=p;return u|0}else if((h|0)==21){c[j>>2]=c[k>>2];u=c[j>>2]|0;i=p;return u|0}else if((h|0)==23){c[j>>2]=0;u=c[j>>2]|0;i=p;return u|0}return 0}function vB(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;if(c[c[f>>2]>>2]|0){i=d;return}a=xB(c[(c[e>>2]|0)+52>>2]|0,c[e>>2]|0,c[(c[e>>2]|0)+72>>2]|0)|0;c[c[f>>2]>>2]=a;i=d;return}function wB(f,g){f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0;h=i;i=i+32|0;j=h+12|0;n=h+8|0;m=h+4|0;k=h;o=h+18|0;l=h+16|0;c[j>>2]=f;c[n>>2]=g;c[m>>2]=c[(c[j>>2]|0)+56>>2];c[k>>2]=c[(c[j>>2]|0)+52>>2];a[o>>0]=a[(c[j>>2]|0)+6>>0]|0;if((e[(c[k>>2]|0)+22>>1]|0)&4)_E((c[m>>2]|0)+(d[o>>0]|0)|0,0,(c[(c[k>>2]|0)+36>>2]|0)-(d[o>>0]|0)|0)|0;a[(c[m>>2]|0)+(d[o>>0]|0)>>0]=c[n>>2];b[l>>1]=(d[o>>0]|0)+((c[n>>2]&8|0)==0?12:8);f=(c[m>>2]|0)+((d[o>>0]|0)+1)|0;a[f+0>>0]=0;a[f+1>>0]=0;a[f+2>>0]=0;a[f+3>>0]=0;a[(c[m>>2]|0)+((d[o>>0]|0)+7)>>0]=0;a[(c[m>>2]|0)+((d[o>>0]|0)+5)>>0]=(c[(c[k>>2]|0)+36>>2]|0)>>>8;a[(c[m>>2]|0)+((d[o>>0]|0)+5)+1>>0]=c[(c[k>>2]|0)+36>>2];b[(c[j>>2]|0)+16>>1]=(c[(c[k>>2]|0)+36>>2]|0)-(e[l>>1]|0);Tj(c[j>>2]|0,c[n>>2]|0)|0;b[(c[j>>2]|0)+14>>1]=b[l>>1]|0;c[(c[j>>2]|0)+60>>2]=(c[m>>2]|0)+(c[(c[k>>2]|0)+36>>2]|0);c[(c[j>>2]|0)+64>>2]=(c[m>>2]|0)+(e[l>>1]|0);a[(c[j>>2]|0)+1>>0]=0;b[(c[j>>2]|0)+20>>1]=(c[(c[k>>2]|0)+32>>2]|0)-1;b[(c[j>>2]|0)+18>>1]=0;a[c[j>>2]>>0]=1;i=h;return}function xB(b,d,f){b=b|0;d=d|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;q=i;i=i+48|0;k=q+36|0;r=q+32|0;p=q+28|0;h=q+24|0;m=q+20|0;l=q+16|0;n=q+12|0;g=q+8|0;o=q+4|0;j=q;c[k>>2]=b;c[r>>2]=d;c[p>>2]=f;c[h>>2]=0;c[m>>2]=0;c[l>>2]=c[(c[k>>2]|0)+12>>2];if(c[r>>2]|0){c[n>>2]=c[r>>2];yB(c[(c[n>>2]|0)+68>>2]|0)}else c[n>>2]=zB(c[k>>2]|0,c[p>>2]|0)|0;c[g>>2]=gd(c[(c[l>>2]|0)+68>>2]|0)|0;do if(!(c[g>>2]|0)){c[o>>2]=Hh((c[(c[l>>2]|0)+56>>2]|0)+36|0)|0;ck((c[(c[l>>2]|0)+56>>2]|0)+36|0,(c[o>>2]|0)+1|0);if(e[(c[k>>2]|0)+22>>1]&4){if((c[n>>2]|0)==0?(b=Bw(c[k>>2]|0,c[p>>2]|0,n,0)|0,c[g>>2]=b,(b|0)!=0):0)break;b=gd(c[(c[n>>2]|0)+68>>2]|0)|0;c[g>>2]=b;if(b)break;_E(c[(c[n>>2]|0)+56>>2]|0,0,c[(c[(c[n>>2]|0)+52>>2]|0)+32>>2]|0)|0}if((a[(c[k>>2]|0)+17>>0]|0)!=0?(yA(c[k>>2]|0,c[p>>2]|0,2,0,g),(c[g>>2]|0)!=0):0)break;if(c[o>>2]|0){c[m>>2]=Hh((c[(c[l>>2]|0)+56>>2]|0)+32|0)|0;c[g>>2]=Bw(c[k>>2]|0,c[m>>2]|0,h,0)|0;if(c[g>>2]|0)break;c[j>>2]=Hh((c[(c[h>>2]|0)+56>>2]|0)+4|0)|0;if((c[j>>2]|0)>>>0>((((c[(c[k>>2]|0)+36>>2]|0)>>>0)/4|0)-2|0)>>>0){c[g>>2]=kj(57698)|0;break}if((c[j>>2]|0)>>>0<((((c[(c[k>>2]|0)+36>>2]|0)>>>0)/4|0)-8|0)>>>0){c[g>>2]=gd(c[(c[h>>2]|0)+68>>2]|0)|0;if(c[g>>2]|0)break;ck((c[(c[h>>2]|0)+56>>2]|0)+4|0,(c[j>>2]|0)+1|0);ck((c[(c[h>>2]|0)+56>>2]|0)+(8+(c[j>>2]<<2))|0,c[p>>2]|0);if((c[n>>2]|0)!=0?(e[(c[k>>2]|0)+22>>1]&4|0)==0:0)AB(c[(c[n>>2]|0)+68>>2]|0);c[g>>2]=BB(c[k>>2]|0,c[p>>2]|0)|0;break}}if((c[n>>2]|0)==0?(b=Bw(c[k>>2]|0,c[p>>2]|0,n,0)|0,c[g>>2]=b,0!=(b|0)):0)break;c[g>>2]=gd(c[(c[n>>2]|0)+68>>2]|0)|0;if(!(c[g>>2]|0)){ck(c[(c[n>>2]|0)+56>>2]|0,c[m>>2]|0);ck((c[(c[n>>2]|0)+56>>2]|0)+4|0,0);ck((c[(c[l>>2]|0)+56>>2]|0)+32|0,c[p>>2]|0)}}while(0);if(!(c[n>>2]|0)){b=c[n>>2]|0;Rk(b);b=c[h>>2]|0;Rk(b);b=c[g>>2]|0;i=q;return b|0}a[c[n>>2]>>0]=0;b=c[n>>2]|0;Rk(b);b=c[h>>2]|0;Rk(b);b=c[g>>2]|0;i=q;return b|0}function yB(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;CB(c[d>>2]|0);i=b;return}function zB(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=i;i=i+16|0;e=d+12|0;f=d+8|0;g=d+4|0;h=d;c[f>>2]=a;c[g>>2]=b;c[h>>2]=Hi(c[c[f>>2]>>2]|0,c[g>>2]|0)|0;if(c[h>>2]|0){c[e>>2]=Cw(c[h>>2]|0,c[g>>2]|0,c[f>>2]|0)|0;a=c[e>>2]|0;i=d;return a|0}else{c[e>>2]=0;a=c[e>>2]|0;i=d;return a|0}return 0}function AB(a){a=a|0;var d=0,f=0,g=0;d=i;i=i+16|0;f=d+4|0;g=d;c[f>>2]=a;c[g>>2]=c[(c[f>>2]|0)+16>>2];if(!((e[(c[f>>2]|0)+24>>1]|0)&2)){i=d;return}if(c[(c[g>>2]|0)+96>>2]|0){i=d;return}g=(c[f>>2]|0)+24|0;b[g>>1]=e[g>>1]|0|32;i=d;return}function BB(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;e=i;i=i+16|0;g=e+8|0;f=e+4|0;d=e;c[g>>2]=a;c[f>>2]=b;c[d>>2]=0;if((c[(c[g>>2]|0)+60>>2]|0)==0?(a=Vg(c[(c[g>>2]|0)+44>>2]|0)|0,c[(c[g>>2]|0)+60>>2]=a,(c[(c[g>>2]|0)+60>>2]|0)==0):0)c[d>>2]=7;if(c[d>>2]|0){a=c[d>>2]|0;i=e;return a|0}a=c[f>>2]|0;if(a>>>0>(Zg(c[(c[g>>2]|0)+60>>2]|0)|0)>>>0){a=c[d>>2]|0;i=e;return a|0}c[d>>2]=Wg(c[(c[g>>2]|0)+60>>2]|0,c[f>>2]|0)|0;a=c[d>>2]|0;i=e;return a|0}function CB(a){a=a|0;var d=0,e=0;d=i;i=i+16|0;e=d;c[e>>2]=a;a=(c[e>>2]|0)+26|0;b[a>>1]=(b[a>>1]|0)+1<<16>>16;i=d;return}function DB(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;m=i;i=i+48|0;g=m+32|0;n=m+28|0;o=m+24|0;p=m+20|0;h=m+16|0;j=m+12|0;k=m+8|0;l=m+4|0;f=m;c[n>>2]=b;c[o>>2]=d;c[p>>2]=e;c[j>>2]=0;c[k>>2]=c[(c[n>>2]|0)+4>>2];if(c[(c[k>>2]|0)+8>>2]|0){c[g>>2]=262;b=c[g>>2]|0;i=m;return b|0}c[h>>2]=Bw(c[k>>2]|0,c[o>>2]|0,j,0)|0;if(c[h>>2]|0){c[g>>2]=c[h>>2];b=c[g>>2]|0;i=m;return b|0}c[h>>2]=Rz(c[n>>2]|0,c[o>>2]|0,0)|0;if(c[h>>2]|0){Rk(c[j>>2]|0);c[g>>2]=c[h>>2];b=c[g>>2]|0;i=m;return b|0}c[c[p>>2]>>2]=0;do if((c[o>>2]|0)>>>0>1){if(!(a[(c[k>>2]|0)+17>>0]|0)){vB(c[j>>2]|0,h);Rk(c[j>>2]|0);break}Sc(c[n>>2]|0,4,l);e=c[j>>2]|0;do if((c[o>>2]|0)==(c[l>>2]|0)){vB(e,h);Rk(c[j>>2]|0);if(c[h>>2]|0){c[g>>2]=c[h>>2];b=c[g>>2]|0;i=m;return b|0}}else{Rk(e);c[h>>2]=Bw(c[k>>2]|0,c[l>>2]|0,f,0)|0;if(c[h>>2]|0){c[g>>2]=c[h>>2];b=c[g>>2]|0;i=m;return b|0}c[h>>2]=vA(c[k>>2]|0,c[f>>2]|0,1,0,c[o>>2]|0,0)|0;Rk(c[f>>2]|0);if(c[h>>2]|0){c[g>>2]=c[h>>2];b=c[g>>2]|0;i=m;return b|0}c[f>>2]=0;c[h>>2]=Bw(c[k>>2]|0,c[l>>2]|0,f,0)|0;vB(c[f>>2]|0,h);Rk(c[f>>2]|0);if(!(c[h>>2]|0)){c[c[p>>2]>>2]=c[l>>2];break}c[g>>2]=c[h>>2];b=c[g>>2]|0;i=m;return b|0}while(0);c[l>>2]=(c[l>>2]|0)+ -1;while(1){if((c[l>>2]|0)!=((((c[282]|0)>>>0)/((c[(c[k>>2]|0)+32>>2]|0)>>>0)|0)+1|0)?(b=Pw(c[k>>2]|0,c[l>>2]|0)|0,(b|0)!=(c[l>>2]|0)):0)break;c[l>>2]=(c[l>>2]|0)+ -1}c[h>>2]=bd(c[n>>2]|0,4,c[l>>2]|0)|0}else{wB(c[j>>2]|0,9);Rk(c[j>>2]|0)}while(0);c[g>>2]=c[h>>2];b=c[g>>2]|0;i=m;return b|0}function EB(b){b=b|0;var d=0,e=0;d=i;i=i+16|0;e=d;c[e>>2]=b;a[(c[e>>2]|0)+56>>0]=1;b=FB((c[e>>2]|0)+64|0,(c[e>>2]|0)+36|0)|0;i=d;return b|0}function FB(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;g=i;i=i+64|0;h=g+60|0;f=g+56|0;l=g+52|0;e=g+48|0;j=g;k=g+44|0;d=g+40|0;c[h>>2]=a;c[f>>2]=b;c[l>>2]=c[(c[(c[h>>2]|0)+8>>2]|0)+24>>2];c[e>>2]=0;a=j+0|0;b=a+40|0;do{c[a>>2]=0;a=a+4|0}while((a|0)<(b|0));if(!(c[(c[h>>2]|0)+32>>2]|0))c[e>>2]=GB(c[l>>2]|0,0,0,(c[h>>2]|0)+32|0)|0;if(!(c[e>>2]|0))c[e>>2]=HB(c[h>>2]|0,c[f>>2]|0)|0;if(c[e>>2]|0){a=c[e>>2]|0;i=g;return a|0}c[d>>2]=0;a=(c[h>>2]|0)+40|0;IB(c[(c[h>>2]|0)+32>>2]|0,j,c[(c[(c[h>>2]|0)+8>>2]|0)+12>>2]|0,c[a>>2]|0,c[a+4>>2]|0);a=(c[h>>2]|0)+28|0;c[a>>2]=(c[a>>2]|0)+1;a=c[(c[f>>2]|0)+8>>2]|0;JB(j,a,((a|0)<0)<<31>>31);c[k>>2]=c[c[f>>2]>>2];while(1){l=c[k>>2]|0;if(!(c[k>>2]|0))break;c[d>>2]=c[l+4>>2];a=c[c[k>>2]>>2]|0;JB(j,a,((a|0)<0)<<31>>31);KB(j,(c[k>>2]|0)+8|0,c[c[k>>2]>>2]|0);if(!(c[(c[f>>2]|0)+4>>2]|0))hc(c[k>>2]|0);c[k>>2]=c[d>>2]}c[c[f>>2]>>2]=l;c[e>>2]=LB(j,(c[h>>2]|0)+40|0)|0;a=c[e>>2]|0;i=g;return a|0}function GB(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;f=i;i=i+32|0;k=f+24|0;j=f+20|0;g=f+16|0;h=f;c[k>>2]=a;a=f+8|0;c[a>>2]=b;c[a+4>>2]=d;c[j>>2]=e;c[g>>2]=PB(c[c[k>>2]>>2]|0,0,c[j>>2]|0,4126,g)|0;if(c[g>>2]|0){k=c[g>>2]|0;i=f;return k|0}k=h;c[k>>2]=0;c[k+4>>2]=0;rj(c[c[j>>2]>>2]|0,18,h);k=c[g>>2]|0;i=f;return k|0}function HB(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;j=i;i=i+32|0;f=j+28|0;m=j+24|0;k=j+20|0;h=j+16|0;l=j+12|0;g=j+8|0;n=j+4|0;e=j;c[m>>2]=a;c[k>>2]=b;c[n>>2]=MB(c[m>>2]|0)|0;if(c[n>>2]|0){c[f>>2]=c[n>>2];a=c[f>>2]|0;i=j;return a|0}c[l>>2]=Mc(256,0)|0;if(!(c[l>>2]|0)){c[f>>2]=7;a=c[f>>2]|0;i=j;return a|0}c[g>>2]=c[c[k>>2]>>2];while(1){if(!(c[g>>2]|0))break;b=c[g>>2]|0;do if(c[(c[k>>2]|0)+4>>2]|0)if((b|0)==(c[(c[k>>2]|0)+4>>2]|0)){c[e>>2]=0;break}else{c[e>>2]=(c[(c[k>>2]|0)+4>>2]|0)+(c[(c[g>>2]|0)+4>>2]|0);break}else c[e>>2]=c[b+4>>2];while(0);c[(c[g>>2]|0)+4>>2]=0;c[h>>2]=0;while(1){if(!(c[(c[l>>2]|0)+(c[h>>2]<<2)>>2]|0))break;NB(c[m>>2]|0,c[g>>2]|0,c[(c[l>>2]|0)+(c[h>>2]<<2)>>2]|0,g);c[(c[l>>2]|0)+(c[h>>2]<<2)>>2]=0;c[h>>2]=(c[h>>2]|0)+1}c[(c[l>>2]|0)+(c[h>>2]<<2)>>2]=c[g>>2];c[g>>2]=c[e>>2]}c[g>>2]=0;c[h>>2]=0;while(1){if((c[h>>2]|0)>=64)break;NB(c[m>>2]|0,c[g>>2]|0,c[(c[l>>2]|0)+(c[h>>2]<<2)>>2]|0,g);c[h>>2]=(c[h>>2]|0)+1}c[c[k>>2]>>2]=c[g>>2];hc(c[l>>2]|0);c[f>>2]=d[(c[(c[m>>2]|0)+12>>2]|0)+7>>0];a=c[f>>2]|0;i=j;return a|0}function IB(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;k=i;i=i+32|0;j=k+16|0;g=k+12|0;l=k+8|0;h=k;c[j>>2]=a;c[g>>2]=b;c[l>>2]=d;a=h;c[a>>2]=e;c[a+4>>2]=f;f=(c[g>>2]|0)+0|0;e=f+40|0;do{c[f>>2]=0;f=f+4|0}while((f|0)<(e|0));a=c[l>>2]|0;a=gc(a,((a|0)<0)<<31>>31)|0;c[(c[g>>2]|0)+4>>2]=a;if(c[(c[g>>2]|0)+4>>2]|0){b=h;a=c[l>>2]|0;a=kF(c[b>>2]|0,c[b+4>>2]|0,a|0,((a|0)<0)<<31>>31|0)|0;c[(c[g>>2]|0)+12>>2]=a;c[(c[g>>2]|0)+16>>2]=a;a=h;b=c[(c[g>>2]|0)+12>>2]|0;b=ZE(c[a>>2]|0,c[a+4>>2]|0,b|0,((b|0)<0)<<31>>31|0)|0;a=(c[g>>2]|0)+24|0;c[a>>2]=b;c[a+4>>2]=D;c[(c[g>>2]|0)+8>>2]=c[l>>2];c[(c[g>>2]|0)+32>>2]=c[j>>2];i=k;return}else{c[c[g>>2]>>2]=7;i=k;return}}function JB(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;i=i+32|0;h=e+12|0;j=e;f=e+8|0;g=e+16|0;c[h>>2]=a;a=j;c[a>>2]=b;c[a+4>>2]=d;a=j;c[f>>2]=oz(g,c[a>>2]|0,c[a+4>>2]|0)|0;KB(c[h>>2]|0,g,c[f>>2]|0);i=e;return}function KB(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;e=i;i=i+32|0;f=e+16|0;g=e+12|0;h=e+8|0;j=e+4|0;k=e;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[j>>2]=c[h>>2];while(1){if((c[j>>2]|0)<=0){d=9;break}if(c[c[f>>2]>>2]|0){d=9;break}c[k>>2]=c[j>>2];if((c[k>>2]|0)>((c[(c[f>>2]|0)+8>>2]|0)-(c[(c[f>>2]|0)+16>>2]|0)|0))c[k>>2]=(c[(c[f>>2]|0)+8>>2]|0)-(c[(c[f>>2]|0)+16>>2]|0);dF((c[(c[f>>2]|0)+4>>2]|0)+(c[(c[f>>2]|0)+16>>2]|0)|0,(c[g>>2]|0)+((c[h>>2]|0)-(c[j>>2]|0))|0,c[k>>2]|0)|0;a=(c[f>>2]|0)+16|0;c[a>>2]=(c[a>>2]|0)+(c[k>>2]|0);if((c[(c[f>>2]|0)+16>>2]|0)==(c[(c[f>>2]|0)+8>>2]|0)){l=c[(c[f>>2]|0)+32>>2]|0;d=(c[(c[f>>2]|0)+4>>2]|0)+(c[(c[f>>2]|0)+12>>2]|0)|0;a=(c[(c[f>>2]|0)+16>>2]|0)-(c[(c[f>>2]|0)+12>>2]|0)|0;m=(c[f>>2]|0)+24|0;b=c[(c[f>>2]|0)+12>>2]|0;b=bF(c[m>>2]|0,c[m+4>>2]|0,b|0,((b|0)<0)<<31>>31|0)|0;b=id(l,d,a,b,D)|0;c[c[f>>2]>>2]=b;c[(c[f>>2]|0)+16>>2]=0;c[(c[f>>2]|0)+12>>2]=0;b=c[(c[f>>2]|0)+8>>2]|0;a=(c[f>>2]|0)+24|0;d=a;b=bF(c[d>>2]|0,c[d+4>>2]|0,b|0,((b|0)<0)<<31>>31|0)|0;c[a>>2]=b;c[a+4>>2]=D}c[j>>2]=(c[j>>2]|0)-(c[k>>2]|0)}if((d|0)==9){i=e;return}}function LB(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;d=i;i=i+16|0;f=d+8|0;g=d+4|0;e=d;c[f>>2]=a;c[g>>2]=b;if(((c[c[f>>2]>>2]|0)==0?(c[(c[f>>2]|0)+4>>2]|0)!=0:0)?(c[(c[f>>2]|0)+16>>2]|0)>(c[(c[f>>2]|0)+12>>2]|0):0){j=c[(c[f>>2]|0)+32>>2]|0;h=(c[(c[f>>2]|0)+4>>2]|0)+(c[(c[f>>2]|0)+12>>2]|0)|0;b=(c[(c[f>>2]|0)+16>>2]|0)-(c[(c[f>>2]|0)+12>>2]|0)|0;k=(c[f>>2]|0)+24|0;a=c[(c[f>>2]|0)+12>>2]|0;a=bF(c[k>>2]|0,c[k+4>>2]|0,a|0,((a|0)<0)<<31>>31|0)|0;a=id(j,h,b,a,D)|0;c[c[f>>2]>>2]=a}b=(c[f>>2]|0)+24|0;k=c[(c[f>>2]|0)+16>>2]|0;k=bF(c[b>>2]|0,c[b+4>>2]|0,k|0,((k|0)<0)<<31>>31|0)|0;b=c[g>>2]|0;c[b>>2]=k;c[b+4>>2]=D;hc(c[(c[f>>2]|0)+4>>2]|0);c[e>>2]=c[c[f>>2]>>2];f=(c[f>>2]|0)+0|0;b=f+40|0;do{c[f>>2]=0;f=f+4|0}while((f|0)<(b|0));i=d;return c[e>>2]|0}function MB(d){d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+16|0;f=e+8|0;g=e+4|0;h=e;c[g>>2]=d;do if(!(c[(c[g>>2]|0)+12>>2]|0)){d=Ew(c[(c[(c[g>>2]|0)+8>>2]|0)+28>>2]|0,0,0,h)|0;c[(c[g>>2]|0)+12>>2]=d;if(c[h>>2]|0){b[(c[(c[g>>2]|0)+12>>2]|0)+4>>1]=b[(c[(c[(c[g>>2]|0)+8>>2]|0)+28>>2]|0)+6>>1]|0;a[(c[(c[g>>2]|0)+12>>2]|0)+7>>0]=0;break}c[f>>2]=7;h=c[f>>2]|0;i=e;return h|0}while(0);c[f>>2]=0;h=c[f>>2]|0;i=e;return h|0}function NB(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;k=i;i=i+32|0;m=k+28|0;l=k+24|0;f=k+20|0;j=k+16|0;h=k+12|0;g=k+8|0;n=k+4|0;o=k;c[m>>2]=a;c[l>>2]=b;c[f>>2]=d;c[j>>2]=e;c[h>>2]=0;c[g>>2]=h;if(c[f>>2]|0)e=(c[f>>2]|0)+8|0;else e=0;c[n>>2]=e;while(1){if(!((c[l>>2]|0)!=0&(c[f>>2]|0)!=0)){m=9;break}c[o>>2]=OB(c[m>>2]|0,(c[l>>2]|0)+8|0,c[c[l>>2]>>2]|0,c[n>>2]|0,c[c[f>>2]>>2]|0)|0;if((c[o>>2]|0)<=0){c[c[g>>2]>>2]=c[l>>2];c[g>>2]=(c[l>>2]|0)+4;c[l>>2]=c[(c[l>>2]|0)+4>>2];c[n>>2]=0;continue}c[c[g>>2]>>2]=c[f>>2];c[g>>2]=(c[f>>2]|0)+4;c[f>>2]=c[(c[f>>2]|0)+4>>2];if(!(c[f>>2]|0)){m=9;break}c[n>>2]=(c[f>>2]|0)+8}if((m|0)==9){c[c[g>>2]>>2]=(c[l>>2]|0)!=0?c[l>>2]|0:c[f>>2]|0;c[c[j>>2]>>2]=c[h>>2];i=k;return}}function OB(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;m=i;i=i+32|0;n=m+20|0;j=m+16|0;k=m+12|0;l=m+8|0;g=m+4|0;h=m;c[n>>2]=a;c[j>>2]=b;c[k>>2]=d;c[l>>2]=e;c[g>>2]=f;c[h>>2]=c[(c[n>>2]|0)+12>>2];if(c[l>>2]|0)Fw(c[(c[(c[n>>2]|0)+8>>2]|0)+28>>2]|0,c[g>>2]|0,c[l>>2]|0,c[h>>2]|0);a=Uw(c[k>>2]|0,c[j>>2]|0,c[h>>2]|0)|0;i=m;return a|0}function PB(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;j=i;i=i+32|0;l=j+24|0;m=j+20|0;h=j+16|0;k=j+12|0;o=j+8|0;g=j+4|0;n=j;c[l>>2]=a;c[m>>2]=b;c[h>>2]=d;c[k>>2]=e;c[o>>2]=f;c[g>>2]=7;a=c[(c[l>>2]|0)+4>>2]|0;c[n>>2]=Mc(a,((a|0)<0)<<31>>31)|0;if(!(c[n>>2]|0)){a=c[g>>2]|0;i=j;return a|0}c[g>>2]=Di(c[l>>2]|0,c[m>>2]|0,c[n>>2]|0,c[k>>2]|0,c[o>>2]|0)|0;k=c[n>>2]|0;if(c[g>>2]|0){hc(k);a=c[g>>2]|0;i=j;return a|0}else{c[c[h>>2]>>2]=k;a=c[g>>2]|0;i=j;return a|0}return 0}function QB(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;g=i;i=i+48|0;j=g+36|0;k=g+32|0;h=g+28|0;q=g+24|0;m=g+20|0;e=g+16|0;n=g+12|0;l=g+8|0;o=g+4|0;p=g;c[j>>2]=a;c[k>>2]=b;c[q>>2]=c[(c[(c[j>>2]|0)+8>>2]|0)+4>>2];c[m>>2]=c[(c[j>>2]|0)+4>>2];c[h>>2]=RB((c[(c[j>>2]|0)+12>>2]|0)+((c[q>>2]|0)*56|0)|0)|0;if(!(c[h>>2]|0)){c[n>>2]=(c[(c[j>>2]|0)+12>>2]|0)+((c[q>>2]&65534)*56|0);c[l>>2]=(c[(c[j>>2]|0)+12>>2]|0)+((c[q>>2]|1)*56|0);c[o>>2]=c[(c[l>>2]|0)+32>>2];c[e>>2]=((c[c[j>>2]>>2]|0)+(c[q>>2]|0)|0)/2|0;while(1){if((c[e>>2]|0)<=0)break;do if(c[(c[n>>2]|0)+24>>2]|0)if(!(c[(c[l>>2]|0)+24>>2]|0)){c[p>>2]=-1;break}else{c[p>>2]=OB(c[m>>2]|0,c[(c[n>>2]|0)+32>>2]|0,c[(c[n>>2]|0)+20>>2]|0,c[o>>2]|0,c[(c[l>>2]|0)+20>>2]|0)|0;break}else c[p>>2]=1;while(0);do if((c[p>>2]|0)<0)f=12;else{if((c[p>>2]|0)==0?(c[n>>2]|0)>>>0<(c[l>>2]|0)>>>0:0){f=12;break}if(c[(c[n>>2]|0)+24>>2]|0)c[o>>2]=0;c[(c[(c[j>>2]|0)+8>>2]|0)+(c[e>>2]<<2)>>2]=((c[l>>2]|0)-(c[(c[j>>2]|0)+12>>2]|0)|0)/56|0;c[n>>2]=(c[(c[j>>2]|0)+12>>2]|0)+((c[(c[(c[j>>2]|0)+8>>2]|0)+((c[e>>2]^1)<<2)>>2]|0)*56|0)}while(0);if((f|0)==12){f=0;c[(c[(c[j>>2]|0)+8>>2]|0)+(c[e>>2]<<2)>>2]=((c[n>>2]|0)-(c[(c[j>>2]|0)+12>>2]|0)|0)/56|0;c[l>>2]=(c[(c[j>>2]|0)+12>>2]|0)+((c[(c[(c[j>>2]|0)+8>>2]|0)+((c[e>>2]^1)<<2)>>2]|0)*56|0);c[o>>2]=c[(c[l>>2]|0)+32>>2]}c[e>>2]=(c[e>>2]|0)/2|0}c[c[k>>2]>>2]=(c[(c[(c[j>>2]|0)+12>>2]|0)+((c[(c[(c[j>>2]|0)+8>>2]|0)+4>>2]|0)*56|0)+24>>2]|0)==0&1}if(!(c[h>>2]|0)){a=d[(c[(c[m>>2]|0)+12>>2]|0)+7>>0]|0;i=g;return a|0}else{a=c[h>>2]|0;i=g;return a|0}return 0}function RB(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;f=i;i=i+32|0;e=f+24|0;b=f+20|0;d=f+16|0;g=f;j=f+12|0;h=f+8|0;c[b>>2]=a;c[d>>2]=0;k=g;c[k>>2]=0;c[k+4>>2]=0;k=c[b>>2]|0;m=c[k+4>>2]|0;a=(c[b>>2]|0)+8|0;l=c[a+4>>2]|0;if((m|0)>(l|0)|((m|0)==(l|0)?(c[k>>2]|0)>>>0>=(c[a>>2]|0)>>>0:0)){c[j>>2]=c[(c[b>>2]|0)+48>>2];c[h>>2]=1;if(((c[j>>2]|0)!=0?(c[d>>2]=SB(c[j>>2]|0)|0,(c[d>>2]|0)==0):0)?(c[(c[j>>2]|0)+20>>2]|0)==0:0){m=(c[j>>2]|0)+8|0;c[d>>2]=TB(c[c[j>>2]>>2]|0,c[b>>2]|0,(c[j>>2]|0)+32|0,c[m>>2]|0,c[m+4>>2]|0)|0;c[h>>2]=0}if(c[h>>2]|0){qB(c[b>>2]|0);c[e>>2]=c[d>>2];m=c[e>>2]|0;i=f;return m|0}}if(!(c[d>>2]|0))c[d>>2]=UB(c[b>>2]|0,g)|0;if(!(c[d>>2]|0)){c[(c[b>>2]|0)+20>>2]=c[g>>2];c[d>>2]=VB(c[b>>2]|0,c[g>>2]|0,(c[b>>2]|0)+32|0)|0}c[e>>2]=c[d>>2];m=c[e>>2]|0;i=f;return m|0}function SB(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;i=i+16|0;e=b+4|0;d=b;c[e>>2]=a;c[d>>2]=0;c[d>>2]=YB(c[e>>2]|0)|0;f=(c[e>>2]|0)+32|0;a=(c[e>>2]|0)+48|0;c[f+0>>2]=c[a+0>>2];c[f+4>>2]=c[a+4>>2];c[f+8>>2]=c[a+8>>2];c[f+12>>2]=c[a+12>>2];f=(c[e>>2]|0)+40|0;a=(c[e>>2]|0)+8|0;if(!((c[f>>2]|0)==(c[a>>2]|0)?(c[f+4>>2]|0)==(c[a+4>>2]|0):0)){f=c[d>>2]|0;i=b;return f|0}c[(c[e>>2]|0)+20>>2]=1;f=c[d>>2]|0;i=b;return f|0}function TB(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;n=i;i=i+48|0;h=n+36|0;o=n+32|0;m=n+28|0;q=n+24|0;p=n;j=n+20|0;l=n+16|0;k=n+12|0;g=n+8|0;c[o>>2]=a;c[m>>2]=b;c[q>>2]=d;a=p;c[a>>2]=e;c[a+4>>2]=f;c[j>>2]=0;if(jg(201)|0){c[h>>2]=266;a=c[h>>2]|0;i=n;return a|0}if(c[(c[m>>2]|0)+44>>2]|0){hj(c[(c[m>>2]|0)+24>>2]|0,0,0,c[(c[m>>2]|0)+44>>2]|0)|0;c[(c[m>>2]|0)+44>>2]=0}a=p;b=c[a+4>>2]|0;d=c[m>>2]|0;c[d>>2]=c[a>>2];c[d+4>>2]=b;d=(c[q>>2]|0)+8|0;b=c[d+4>>2]|0;a=(c[m>>2]|0)+8|0;c[a>>2]=c[d>>2];c[a+4>>2]=b;c[(c[m>>2]|0)+24>>2]=c[c[q>>2]>>2];c[j>>2]=WB(c[o>>2]|0,c[q>>2]|0,(c[m>>2]|0)+44|0)|0;if((c[j>>2]|0)==0?(c[(c[m>>2]|0)+44>>2]|0)==0:0){c[l>>2]=c[(c[(c[o>>2]|0)+8>>2]|0)+12>>2];b=c[m>>2]|0;a=c[l>>2]|0;a=kF(c[b>>2]|0,c[b+4>>2]|0,a|0,((a|0)<0)<<31>>31|0)|0;c[k>>2]=a;if(!(c[(c[m>>2]|0)+36>>2]|0)){a=c[l>>2]|0;a=gc(a,((a|0)<0)<<31>>31)|0;c[(c[m>>2]|0)+36>>2]=a;if(!(c[(c[m>>2]|0)+36>>2]|0))c[j>>2]=7;c[(c[m>>2]|0)+40>>2]=c[l>>2]}if((c[j>>2]|0)==0&(c[k>>2]|0)!=0){c[g>>2]=(c[l>>2]|0)-(c[k>>2]|0);e=c[m>>2]|0;b=c[g>>2]|0;b=bF(c[e>>2]|0,c[e+4>>2]|0,b|0,((b|0)<0)<<31>>31|0)|0;e=D;a=(c[m>>2]|0)+8|0;d=c[a+4>>2]|0;if((e|0)>(d|0)|((e|0)==(d|0)?b>>>0>(c[a>>2]|0)>>>0:0)){b=(c[m>>2]|0)+8|0;a=c[m>>2]|0;a=ZE(c[b>>2]|0,c[b+4>>2]|0,c[a>>2]|0,c[a+4>>2]|0)|0;c[g>>2]=a}a=c[m>>2]|0;c[j>>2]=Ei(c[(c[m>>2]|0)+24>>2]|0,(c[(c[m>>2]|0)+36>>2]|0)+(c[k>>2]|0)|0,c[g>>2]|0,c[a>>2]|0,c[a+4>>2]|0)|0}}c[h>>2]=c[j>>2];a=c[h>>2]|0;i=n;return a|0}function UB(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;h=i;i=i+48|0;n=h+24|0;j=h+20|0;k=h+16|0;m=h+12|0;o=h+32|0;p=h+8|0;l=h+4|0;f=h;c[j>>2]=b;c[k>>2]=e;b=c[j>>2]|0;e=c[b>>2]|0;b=c[b+4>>2]|0;do if(c[(c[j>>2]|0)+44>>2]|0){e=(Jw((c[(c[j>>2]|0)+44>>2]|0)+e|0,c[k>>2]|0)|0)&255;b=c[j>>2]|0;p=b;e=bF(c[p>>2]|0,c[p+4>>2]|0,e|0,0)|0;c[b>>2]=e;c[b+4>>2]=D}else{q=c[(c[j>>2]|0)+40>>2]|0;b=kF(e|0,b|0,q|0,((q|0)<0)<<31>>31|0)|0;c[m>>2]=b;if((c[m>>2]|0)!=0?((c[(c[j>>2]|0)+40>>2]|0)-(c[m>>2]|0)|0)>=9:0){b=(Jw((c[(c[j>>2]|0)+36>>2]|0)+(c[m>>2]|0)|0,c[k>>2]|0)|0)&255;q=c[j>>2]|0;e=q;b=bF(c[e>>2]|0,c[e+4>>2]|0,b|0,0)|0;c[q>>2]=b;c[q+4>>2]=D;break}c[l>>2]=0;while(1){c[f>>2]=VB(c[j>>2]|0,1,p)|0;if(c[f>>2]|0)break;b=a[c[p>>2]>>0]|0;q=c[l>>2]|0;c[l>>2]=q+1;a[o+(q&15)>>0]=b;if(!((d[c[p>>2]>>0]|0)&128)){g=10;break}}if((g|0)==10){Jw(o,c[k>>2]|0)|0;break}c[n>>2]=c[f>>2];q=c[n>>2]|0;i=h;return q|0}while(0);c[n>>2]=0;q=c[n>>2]|0;i=h;return q|0}function VB(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;q=i;i=i+64|0;g=q+52|0;h=q+48|0;j=q+44|0;k=q+40|0;n=q+36|0;e=q+32|0;u=q+28|0;t=q+24|0;o=q+20|0;s=q+16|0;r=q+12|0;l=q+8|0;p=q+4|0;m=q;c[h>>2]=a;c[j>>2]=b;c[k>>2]=d;b=c[h>>2]|0;d=c[b>>2]|0;b=c[b+4>>2]|0;if(c[(c[h>>2]|0)+44>>2]|0){c[c[k>>2]>>2]=(c[(c[h>>2]|0)+44>>2]|0)+d;b=c[j>>2]|0;a=c[h>>2]|0;d=a;b=bF(c[d>>2]|0,c[d+4>>2]|0,b|0,((b|0)<0)<<31>>31|0)|0;c[a>>2]=b;c[a+4>>2]=D;c[g>>2]=0;a=c[g>>2]|0;i=q;return a|0}a=c[(c[h>>2]|0)+40>>2]|0;a=kF(d|0,b|0,a|0,((a|0)<0)<<31>>31|0)|0;c[n>>2]=a;if(!(c[n>>2]|0)){w=(c[h>>2]|0)+8|0;b=c[h>>2]|0;b=ZE(c[w>>2]|0,c[w+4>>2]|0,c[b>>2]|0,c[b+4>>2]|0)|0;w=D;a=c[(c[h>>2]|0)+40>>2]|0;v=((a|0)<0)<<31>>31;d=c[h>>2]|0;if((w|0)>(v|0)|(w|0)==(v|0)&b>>>0>a>>>0)c[u>>2]=c[d+40>>2];else{v=d+8|0;w=c[h>>2]|0;w=ZE(c[v>>2]|0,c[v+4>>2]|0,c[w>>2]|0,c[w+4>>2]|0)|0;c[u>>2]=w}w=c[h>>2]|0;c[t>>2]=Ei(c[(c[h>>2]|0)+24>>2]|0,c[(c[h>>2]|0)+36>>2]|0,c[u>>2]|0,c[w>>2]|0,c[w+4>>2]|0)|0;if(c[t>>2]|0){c[g>>2]=c[t>>2];w=c[g>>2]|0;i=q;return w|0}}c[e>>2]=(c[(c[h>>2]|0)+40>>2]|0)-(c[n>>2]|0);do if((c[j>>2]|0)<=(c[e>>2]|0)){c[c[k>>2]>>2]=(c[(c[h>>2]|0)+36>>2]|0)+(c[n>>2]|0);v=c[j>>2]|0;w=c[h>>2]|0;a=w;v=bF(c[a>>2]|0,c[a+4>>2]|0,v|0,((v|0)<0)<<31>>31|0)|0;c[w>>2]=v;c[w+4>>2]=D}else{do if((c[(c[h>>2]|0)+16>>2]|0)<(c[j>>2]|0)){if(128>(c[(c[h>>2]|0)+16>>2]<<1|0))t=128;else t=c[(c[h>>2]|0)+16>>2]<<1;c[r>>2]=t;while(1){if((c[j>>2]|0)<=(c[r>>2]|0))break;c[r>>2]=c[r>>2]<<1}w=c[r>>2]|0;c[s>>2]=kc(c[(c[h>>2]|0)+28>>2]|0,w,((w|0)<0)<<31>>31)|0;if(c[s>>2]|0){c[(c[h>>2]|0)+16>>2]=c[r>>2];c[(c[h>>2]|0)+28>>2]=c[s>>2];break}c[g>>2]=7;w=c[g>>2]|0;i=q;return w|0}while(0);dF(c[(c[h>>2]|0)+28>>2]|0,(c[(c[h>>2]|0)+36>>2]|0)+(c[n>>2]|0)|0,c[e>>2]|0)|0;v=c[e>>2]|0;w=c[h>>2]|0;a=w;v=bF(c[a>>2]|0,c[a+4>>2]|0,v|0,((v|0)<0)<<31>>31|0)|0;c[w>>2]=v;c[w+4>>2]=D;c[o>>2]=(c[j>>2]|0)-(c[e>>2]|0);while(1){if((c[o>>2]|0)<=0){f=27;break}c[p>>2]=c[o>>2];if((c[o>>2]|0)>(c[(c[h>>2]|0)+40>>2]|0))c[p>>2]=c[(c[h>>2]|0)+40>>2];c[l>>2]=VB(c[h>>2]|0,c[p>>2]|0,m)|0;if(c[l>>2]|0)break;dF((c[(c[h>>2]|0)+28>>2]|0)+((c[j>>2]|0)-(c[o>>2]|0))|0,c[m>>2]|0,c[p>>2]|0)|0;c[o>>2]=(c[o>>2]|0)-(c[p>>2]|0)}if((f|0)==27){c[c[k>>2]>>2]=c[(c[h>>2]|0)+28>>2];break}c[g>>2]=c[l>>2];w=c[g>>2]|0;i=q;return w|0}while(0);c[g>>2]=0;w=c[g>>2]|0;i=q;return w|0}function WB(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;e=i;i=i+32|0;l=e+16|0;h=e+12|0;j=e+8|0;f=e+4|0;g=e;c[l>>2]=a;c[h>>2]=b;c[j>>2]=d;c[f>>2]=0;b=(c[h>>2]|0)+8|0;k=c[b+4>>2]|0;a=c[(c[(c[(c[l>>2]|0)+8>>2]|0)+24>>2]|0)+136>>2]|0;d=((a|0)<0)<<31>>31;if(!((k|0)<(d|0)|((k|0)==(d|0)?(c[b>>2]|0)>>>0<=a>>>0:0))){l=c[f>>2]|0;i=e;return l|0}c[g>>2]=c[c[h>>2]>>2];if((c[c[c[g>>2]>>2]>>2]|0)<3){l=c[f>>2]|0;i=e;return l|0}c[f>>2]=XB(c[g>>2]|0,0,0,c[(c[h>>2]|0)+8>>2]|0,c[j>>2]|0)|0;l=c[f>>2]|0;i=e;return l|0}function XB(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=i;i=i+32|0;h=g+8|0;c[g+16>>2]=a;a=g;c[a>>2]=b;c[a+4>>2]=d;c[g+12>>2]=e;c[h>>2]=f;c[c[h>>2]>>2]=0;i=g;return 0}function YB(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;d=i;i=i+96|0;l=d+88|0;h=d+84|0;g=d+80|0;k=d+48|0;f=d+76|0;p=d+72|0;m=d+68|0;e=d+8|0;o=d+64|0;n=d+60|0;j=d+56|0;b=d;c[l>>2]=a;c[h>>2]=0;r=(c[l>>2]|0)+8|0;q=c[r+4>>2]|0;a=k;c[a>>2]=c[r>>2];c[a+4>>2]=q;c[f>>2]=(c[l>>2]|0)+48;c[p>>2]=c[c[l>>2]>>2];c[m>>2]=c[(c[l>>2]|0)+4>>2];a=k;IB(c[c[f>>2]>>2]|0,e,c[(c[(c[p>>2]|0)+8>>2]|0)+12>>2]|0,c[a>>2]|0,c[a+4>>2]|0);while(1){if(c[h>>2]|0)break;c[n>>2]=(c[(c[m>>2]|0)+12>>2]|0)+((c[(c[(c[m>>2]|0)+8>>2]|0)+4>>2]|0)*56|0);c[j>>2]=c[(c[n>>2]|0)+20>>2];r=e+24|0;q=c[e+16>>2]|0;q=bF(c[r>>2]|0,c[r+4>>2]|0,q|0,((q|0)<0)<<31>>31|0)|0;r=b;c[r>>2]=q;c[r+4>>2]=D;if(!(c[(c[n>>2]|0)+24>>2]|0))break;a=b;p=c[j>>2]|0;p=bF(c[a>>2]|0,c[a+4>>2]|0,p|0,((p|0)<0)<<31>>31|0)|0;a=D;q=c[j>>2]|0;q=Zw(q,((q|0)<0)<<31>>31)|0;q=bF(p|0,a|0,q|0,((q|0)<0)<<31>>31|0)|0;a=D;p=k;r=c[(c[l>>2]|0)+16>>2]|0;r=bF(c[p>>2]|0,c[p+4>>2]|0,r|0,((r|0)<0)<<31>>31|0)|0;p=D;if((a|0)>(p|0)|(a|0)==(p|0)&q>>>0>r>>>0)break;r=c[j>>2]|0;JB(e,r,((r|0)<0)<<31>>31);KB(e,c[(c[n>>2]|0)+32>>2]|0,c[j>>2]|0);c[h>>2]=QB(c[(c[l>>2]|0)+4>>2]|0,o)|0}c[g>>2]=LB(e,(c[f>>2]|0)+8|0)|0;if(c[h>>2]|0){r=c[h>>2]|0;i=d;return r|0}c[h>>2]=c[g>>2];r=c[h>>2]|0;i=d;return r|0}function ZB(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;d=i;i=i+16|0;f=d+12|0;b=d+8|0;g=d+4|0;e=d;c[f>>2]=a;c[g>>2]=(c[f>>2]|0)+64;c[e>>2]=0;c[b>>2]=_B(c[f>>2]|0,e)|0;if(!(c[b>>2]|0)){c[b>>2]=$B(c[g>>2]|0,c[e>>2]|0,0)|0;c[(c[f>>2]|0)+20>>2]=c[e>>2];c[e>>2]=0}if(!(c[b>>2]|0)){g=c[b>>2]|0;i=d;return g|0}mB(c[e>>2]|0);g=c[b>>2]|0;i=d;return g|0}function _B(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;h=i;i=i+64|0;r=h+52|0;m=h+48|0;n=h+44|0;g=h+40|0;s=h+36|0;k=h+32|0;j=h+28|0;e=h+24|0;l=h;q=h+20|0;f=h+16|0;o=h+12|0;p=h+8|0;c[r>>2]=a;c[m>>2]=b;c[n>>2]=0;c[g>>2]=0;c[s>>2]=0;while(1){if(c[g>>2]|0)break;if((c[s>>2]|0)>=(d[(c[r>>2]|0)+59>>0]|0|0))break;c[k>>2]=(c[r>>2]|0)+64+(c[s>>2]<<6);c[j>>2]=0;c[e>>2]=cC(c[(c[k>>2]|0)+28>>2]|0)|0;a=l;c[a>>2]=0;c[a+4>>2]=0;a:do if((c[(c[k>>2]|0)+28>>2]|0)<=16)c[g>>2]=dC(c[k>>2]|0,c[(c[k>>2]|0)+28>>2]|0,l,j)|0;else{c[f>>2]=0;c[j>>2]=eC(16)|0;if(!(c[j>>2]|0))c[g>>2]=7;c[q>>2]=0;while(1){if(!((c[g>>2]|0)==0?(c[q>>2]|0)<(c[(c[k>>2]|0)+28>>2]|0):0))break a;c[o>>2]=0;if(((c[(c[k>>2]|0)+28>>2]|0)-(c[q>>2]|0)|0)<16)b=(c[(c[k>>2]|0)+28>>2]|0)-(c[q>>2]|0)|0;else b=16;c[p>>2]=b;c[g>>2]=dC(c[k>>2]|0,c[p>>2]|0,l,o)|0;if(!(c[g>>2]|0)){t=c[k>>2]|0;b=c[e>>2]|0;a=c[f>>2]|0;c[f>>2]=a+1;c[g>>2]=fC(t,b,a,c[j>>2]|0,c[o>>2]|0)|0}c[q>>2]=(c[q>>2]|0)+16}}while(0);b=c[j>>2]|0;if(!(c[g>>2]|0))c[n>>2]=b;else mB(b);c[s>>2]=(c[s>>2]|0)+1}if(!(c[g>>2]|0)){a=c[n>>2]|0;t=c[m>>2]|0;c[t>>2]=a;t=c[g>>2]|0;i=h;return t|0}mB(c[n>>2]|0);c[n>>2]=0;a=c[n>>2]|0;t=c[m>>2]|0;c[t>>2]=a;t=c[g>>2]|0;i=h;return t|0}function $B(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;j=i;i=i+32|0;h=j+24|0;l=j+20|0;f=j+16|0;m=j+8|0;k=j+4|0;n=j;c[l>>2]=a;c[f>>2]=b;c[j+12>>2]=e;c[m>>2]=0;c[n>>2]=c[c[f>>2]>>2];c[(c[f>>2]|0)+4>>2]=c[l>>2];c[k>>2]=0;while(1){if((c[k>>2]|0)>=(c[n>>2]|0))break;c[m>>2]=aC((c[(c[f>>2]|0)+12>>2]|0)+((c[k>>2]|0)*56|0)|0,0)|0;if(c[m>>2]|0){g=4;break}c[k>>2]=(c[k>>2]|0)+1}if((g|0)==4){c[h>>2]=c[m>>2];a=c[h>>2]|0;i=j;return a|0}c[k>>2]=(c[c[f>>2]>>2]|0)-1;while(1){if((c[k>>2]|0)<=0)break;bC(c[f>>2]|0,c[k>>2]|0);c[k>>2]=(c[k>>2]|0)+ -1}c[h>>2]=d[(c[(c[l>>2]|0)+12>>2]|0)+7>>0];a=c[h>>2]|0;i=j;return a|0}function aC(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;d=i;i=i+32|0;k=d+24|0;l=d+20|0;e=d+16|0;g=d+12|0;f=d+8|0;j=d+4|0;h=d;c[k>>2]=a;c[l>>2]=b;c[e>>2]=0;c[g>>2]=c[(c[k>>2]|0)+48>>2];if(!(c[g>>2]|0)){a=c[e>>2]|0;i=d;return a|0}c[f>>2]=c[c[g>>2]>>2];c[j>>2]=c[(c[(c[f>>2]|0)+8>>2]|0)+24>>2];c[e>>2]=$B(c[f>>2]|0,c[(c[g>>2]|0)+4>>2]|0,c[l>>2]|0)|0;if(!(c[e>>2]|0)){c[h>>2]=c[(c[g>>2]|0)+16>>2];if(!(c[(c[f>>2]|0)+48>>2]|0)){a=(c[f>>2]|0)+56|0;c[e>>2]=GB(c[j>>2]|0,c[a>>2]|0,c[a+4>>2]|0,(c[f>>2]|0)+48|0)|0;a=(c[f>>2]|0)+56|0;c[a>>2]=0;c[a+4>>2]=0}if(!(c[e>>2]|0)){c[(c[g>>2]|0)+48>>2]=c[(c[f>>2]|0)+48>>2];j=(c[f>>2]|0)+56|0;a=c[j+4>>2]|0;l=(c[g>>2]|0)+8|0;c[l>>2]=c[j>>2];c[l+4>>2]=a;l=c[h>>2]|0;a=(c[f>>2]|0)+56|0;j=a;l=bF(c[j>>2]|0,c[j+4>>2]|0,l|0,((l|0)<0)<<31>>31|0)|0;c[a>>2]=l;c[a+4>>2]=D}}if(c[e>>2]|0){a=c[e>>2]|0;i=d;return a|0}c[e>>2]=RB(c[k>>2]|0)|0;a=c[e>>2]|0;i=d;return a|0}function bC(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;g=i;i=i+32|0;e=g+28|0;f=g+24|0;h=g+20|0;m=g+16|0;j=g+12|0;d=g+8|0;k=g+4|0;l=g;c[e>>2]=a;c[f>>2]=b;b=c[f>>2]|0;if((c[f>>2]|0)>=((c[c[e>>2]>>2]|0)/2|0|0)){c[h>>2]=b-((c[c[e>>2]>>2]|0)/2|0)<<1;c[m>>2]=(c[h>>2]|0)+1}else{c[h>>2]=c[(c[(c[e>>2]|0)+8>>2]|0)+(b<<1<<2)>>2];c[m>>2]=c[(c[(c[e>>2]|0)+8>>2]|0)+((c[f>>2]<<1)+1<<2)>>2]}c[d>>2]=(c[(c[e>>2]|0)+12>>2]|0)+((c[h>>2]|0)*56|0);c[k>>2]=(c[(c[e>>2]|0)+12>>2]|0)+((c[m>>2]|0)*56|0);do if(c[(c[d>>2]|0)+24>>2]|0){if(!(c[(c[k>>2]|0)+24>>2]|0)){c[j>>2]=c[h>>2];break}c[l>>2]=OB(c[(c[e>>2]|0)+4>>2]|0,c[(c[d>>2]|0)+32>>2]|0,c[(c[d>>2]|0)+20>>2]|0,c[(c[k>>2]|0)+32>>2]|0,c[(c[k>>2]|0)+20>>2]|0)|0;if((c[l>>2]|0)<=0){c[j>>2]=c[h>>2];break}else{c[j>>2]=c[m>>2];break}}else c[j>>2]=c[m>>2];while(0);c[(c[(c[e>>2]|0)+8>>2]|0)+(c[f>>2]<<2)>>2]=c[j>>2];i=g;return}function cC(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0;b=i;i=i+16|0;f=b+12|0;d=b+8|0;e=b;c[f>>2]=a;c[d>>2]=0;a=e;c[a>>2]=16;c[a+4>>2]=0;while(1){g=e;j=c[g+4>>2]|0;a=c[f>>2]|0;h=((a|0)<0)<<31>>31;if(!((j|0)<(h|0)|((j|0)==(h|0)?(c[g>>2]|0)>>>0>>0:0)))break;h=e;h=lF(c[h>>2]|0,c[h+4>>2]|0,16,0)|0;j=e;c[j>>2]=h;c[j+4>>2]=D;c[d>>2]=(c[d>>2]|0)+1}i=b;return c[d>>2]|0}function dC(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;j=i;i=i+48|0;p=j+44|0;n=j+40|0;g=j+36|0;l=j+32|0;k=j+28|0;m=j+8|0;f=j+24|0;h=j+20|0;q=j;o=j+16|0;c[p>>2]=a;c[n>>2]=b;c[g>>2]=d;c[l>>2]=e;d=c[g>>2]|0;b=c[d+4>>2]|0;a=m;c[a>>2]=c[d>>2];c[a+4>>2]=b;c[h>>2]=0;a=eC(c[n>>2]|0)|0;c[k>>2]=a;c[c[l>>2]>>2]=a;if(!(c[k>>2]|0))c[h>>2]=7;c[f>>2]=0;while(1){if(!((c[h>>2]|0)==0?(c[f>>2]|0)<(c[n>>2]|0):0))break;c[o>>2]=(c[(c[k>>2]|0)+12>>2]|0)+((c[f>>2]|0)*56|0);d=m;c[h>>2]=hC(c[p>>2]|0,(c[p>>2]|0)+32|0,c[d>>2]|0,c[d+4>>2]|0,c[o>>2]|0,q)|0;d=(c[o>>2]|0)+8|0;b=c[d+4>>2]|0;a=m;c[a>>2]=c[d>>2];c[a+4>>2]=b;c[f>>2]=(c[f>>2]|0)+1}if(!(c[h>>2]|0)){b=m;q=b;q=c[q>>2]|0;b=b+4|0;b=c[b>>2]|0;a=c[g>>2]|0;d=a;c[d>>2]=q;a=a+4|0;c[a>>2]=b;a=c[h>>2]|0;i=j;return a|0}mB(c[k>>2]|0);c[c[l>>2]>>2]=0;b=m;q=b;q=c[q>>2]|0;b=b+4|0;b=c[b>>2]|0;a=c[g>>2]|0;d=a;c[d>>2]=q;a=a+4|0;c[a>>2]=b;a=c[h>>2]|0;i=j;return a|0}function eC(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;d=i;i=i+16|0;g=d+12|0;e=d+8|0;f=d+4|0;b=d;c[g>>2]=a;c[e>>2]=2;while(1){a=c[e>>2]|0;if((c[e>>2]|0)>=(c[g>>2]|0))break;c[e>>2]=(c[e>>2]|0)+a}c[f>>2]=16+(a*60|0);if(jg(100)|0)f=0;else{f=c[f>>2]|0;f=Mc(f,((f|0)<0)<<31>>31)|0}c[b>>2]=f;if(!(c[b>>2]|0)){a=c[b>>2]|0;i=d;return a|0}c[c[b>>2]>>2]=c[e>>2];c[(c[b>>2]|0)+4>>2]=0;c[(c[b>>2]|0)+12>>2]=(c[b>>2]|0)+16;c[(c[b>>2]|0)+8>>2]=(c[(c[b>>2]|0)+12>>2]|0)+((c[e>>2]|0)*56|0);a=c[b>>2]|0;i=d;return a|0}function fC(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;j=i;i=i+64|0;p=j+48|0;s=j+44|0;g=j+40|0;u=j+36|0;t=j+32|0;h=j+28|0;o=j+24|0;r=j+20|0;k=j+16|0;m=j+12|0;q=j+8|0;n=j+4|0;l=j;c[p>>2]=a;c[s>>2]=b;c[g>>2]=d;c[u>>2]=e;c[t>>2]=f;c[h>>2]=0;c[o>>2]=1;c[k>>2]=c[u>>2];c[h>>2]=gC(c[p>>2]|0,c[t>>2]|0,m)|0;c[r>>2]=1;while(1){if((c[r>>2]|0)>=(c[s>>2]|0))break;c[o>>2]=c[o>>2]<<4;c[r>>2]=(c[r>>2]|0)+1}c[r>>2]=1;while(1){if(!((c[h>>2]|0)==0?(c[r>>2]|0)<(c[s>>2]|0):0))break;c[q>>2]=((c[g>>2]|0)/(c[o>>2]|0)|0|0)%16|0;c[n>>2]=(c[(c[k>>2]|0)+12>>2]|0)+((c[q>>2]|0)*56|0);do if(!(c[(c[n>>2]|0)+48>>2]|0)){c[l>>2]=eC(16)|0;if(!(c[l>>2]|0)){c[h>>2]=7;break}else{c[h>>2]=gC(c[p>>2]|0,c[l>>2]|0,(c[n>>2]|0)+48|0)|0;break}}while(0);if(!(c[h>>2]|0)){c[k>>2]=c[(c[(c[n>>2]|0)+48>>2]|0)+4>>2];c[o>>2]=(c[o>>2]|0)/16|0}c[r>>2]=(c[r>>2]|0)+1}l=c[m>>2]|0;if(!(c[h>>2]|0)){c[(c[(c[k>>2]|0)+12>>2]|0)+(((c[g>>2]|0)%16|0)*56|0)+48>>2]=l;u=c[h>>2]|0;i=j;return u|0}else{rB(l);u=c[h>>2]|0;i=j;return u|0}return 0}function gC(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;e=i;i=i+32|0;g=e+16|0;j=e+12|0;k=e+8|0;h=e+4|0;f=e;c[g>>2]=a;c[j>>2]=b;c[k>>2]=d;c[h>>2]=0;if(jg(100)|0)d=0;else d=Mc(64,0)|0;c[c[k>>2]>>2]=d;c[f>>2]=d;j=c[j>>2]|0;if(!(c[f>>2]|0)){mB(j);c[h>>2]=7;a=c[h>>2]|0;i=e;return a|0}c[(c[f>>2]|0)+4>>2]=j;c[c[f>>2]>>2]=c[g>>2];j=c[(c[g>>2]|0)+8>>2]|0;if(((c[(c[(c[g>>2]|0)+8>>2]|0)+8>>2]|0)+9|0)>((c[(c[(c[g>>2]|0)+8>>2]|0)+4>>2]|0)/2|0|0))j=(c[j+8>>2]|0)+9|0;else j=(c[j+4>>2]|0)/2|0;c[(c[f>>2]|0)+16>>2]=j;b=c[(c[f>>2]|0)+16>>2]|0;a=(c[g>>2]|0)+56|0;d=a;b=bF(c[d>>2]|0,c[d+4>>2]|0,b|0,((b|0)<0)<<31>>31|0)|0;c[a>>2]=b;c[a+4>>2]=D;a=c[h>>2]|0;i=e;return a|0}function hC(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;j=i;i=i+48|0;o=j+32|0;n=j+28|0;p=j+8|0;k=j+24|0;l=j+20|0;m=j+16|0;h=j;c[o>>2]=a;c[n>>2]=b;a=p;c[a>>2]=d;c[a+4>>2]=e;c[k>>2]=f;c[l>>2]=g;a=p;c[m>>2]=TB(c[o>>2]|0,c[k>>2]|0,c[n>>2]|0,c[a>>2]|0,c[a+4>>2]|0)|0;if(!(c[m>>2]|0)){c[m>>2]=UB(c[k>>2]|0,h)|0;o=c[k>>2]|0;p=h;p=bF(c[o>>2]|0,c[o+4>>2]|0,c[p>>2]|0,c[p+4>>2]|0)|0;o=(c[k>>2]|0)+8|0;c[o>>2]=p;c[o+4>>2]=D;o=h;p=c[l>>2]|0;n=p;o=bF(c[n>>2]|0,c[n+4>>2]|0,c[o>>2]|0,c[o+4>>2]|0)|0;c[p>>2]=o;c[p+4>>2]=D}if(c[m>>2]|0){p=c[m>>2]|0;i=j;return p|0}c[m>>2]=RB(c[k>>2]|0)|0;p=c[m>>2]|0;i=j;return p|0}function iC(a){a=a|0;var b=0,e=0;e=i;i=i+16|0;b=e;c[b>>2]=a;i=e;return(d[(c[b>>2]|0)+73>>0]|0|0)!=1|0}function jC(b){b=b|0;var d=0,e=0,f=0,g=0;d=i;i=i+16|0;f=d+8|0;g=d+4|0;e=d;c[f>>2]=b;c[e>>2]=kC(c[c[f>>2]>>2]|0,g)|0;c[(c[f>>2]|0)+60>>2]=0;if(!(c[g>>2]|0)){g=c[e>>2]|0;i=d;return g|0}a[(c[f>>2]|0)+25>>0]=1;g=c[e>>2]|0;i=d;return g|0}function kC(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0;h=i;i=i+16|0;g=h+12|0;j=h+8|0;e=h+4|0;f=h;c[j>>2]=a;c[e>>2]=b;if((d[(c[j>>2]|0)+73>>0]|0|0)>=3)b=vw(c[j>>2]|0)|0;else b=0;c[f>>2]=b;if(c[f>>2]|0){c[c[e>>2]>>2]=1;c[g>>2]=c[f>>2];a=c[g>>2]|0;i=h;return a|0}if((d[(c[j>>2]|0)+73>>0]|0|0)==1?(c[(c[j>>2]|0)+68>>2]|0)==0:0)c[c[e>>2]>>2]=0;else c[c[e>>2]>>2]=1;c[g>>2]=0;a=c[g>>2]|0;i=h;return a|0}function lC(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;i=i+16|0;j=e+12|0;h=e+8|0;f=e+4|0;g=e;c[j>>2]=b;c[h>>2]=d;d=c[j>>2]|0;if(a[(c[j>>2]|0)+56>>0]|0){c[g>>2]=(c[(c[(c[j>>2]|0)+20>>2]|0)+12>>2]|0)+((c[(c[(c[d+20>>2]|0)+8>>2]|0)+4>>2]|0)*56|0);c[c[h>>2]>>2]=c[(c[g>>2]|0)+20>>2];c[f>>2]=c[(c[g>>2]|0)+32>>2];b=c[f>>2]|0;i=e;return b|0}else{c[c[h>>2]>>2]=c[c[d+36>>2]>>2];c[f>>2]=(c[(c[j>>2]|0)+36>>2]|0)+8;b=c[f>>2]|0;i=e;return b|0}return 0}function mC(f,g,h,j){f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;q=i;i=i+48|0;n=q+32|0;p=q+28|0;t=q+24|0;m=q+20|0;s=q+16|0;k=q+12|0;o=q+8|0;l=q+4|0;r=q;c[n>>2]=f;c[p>>2]=g;c[t>>2]=h;c[m>>2]=j;if(c[c[m>>2]>>2]|0){i=q;return}c[k>>2]=c[(c[n>>2]|0)+56>>2];c[o>>2]=(c[(c[n>>2]|0)+64>>2]|0)+(c[p>>2]<<1);c[s>>2]=(d[c[o>>2]>>0]|0)<<8|(d[(c[o>>2]|0)+1>>0]|0);c[r>>2]=d[(c[n>>2]|0)+6>>0];if((c[s>>2]|0)>>>0>=((d[(c[k>>2]|0)+((c[r>>2]|0)+5)>>0]|0)<<8|(d[(c[k>>2]|0)+((c[r>>2]|0)+5)+1>>0]|0))>>>0?((c[s>>2]|0)+(c[t>>2]|0)|0)>>>0<=(c[(c[(c[n>>2]|0)+52>>2]|0)+36>>2]|0)>>>0:0){c[l>>2]=yC(c[n>>2]|0,c[s>>2]&65535,c[t>>2]&65535)|0;if(c[l>>2]|0){c[c[m>>2]>>2]=c[l>>2];i=q;return}else{f=(c[n>>2]|0)+18|0;b[f>>1]=(b[f>>1]|0)+ -1<<16>>16;eF(c[o>>2]|0,(c[o>>2]|0)+2|0,(e[(c[n>>2]|0)+18>>1]|0)-(c[p>>2]|0)<<1|0)|0;a[(c[k>>2]|0)+((c[r>>2]|0)+3)>>0]=(e[(c[n>>2]|0)+18>>1]|0)>>8;a[(c[k>>2]|0)+((c[r>>2]|0)+3)+1>>0]=b[(c[n>>2]|0)+18>>1];f=(c[n>>2]|0)+16|0;b[f>>1]=(e[f>>1]|0)+2;i=q;return}}f=kj(58057)|0;c[c[m>>2]>>2]=f;i=q;return}function nC(f,g,h,j,k,l,m){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;var n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;x=i;i=i+64|0;q=x+52|0;y=x+48|0;u=x+44|0;r=x+40|0;B=x+36|0;v=x+32|0;p=x+28|0;t=x+24|0;A=x+20|0;n=x+16|0;z=x+12|0;w=x+8|0;s=x+4|0;o=x;c[q>>2]=f;c[y>>2]=g;c[u>>2]=h;c[r>>2]=j;c[B>>2]=k;c[v>>2]=l;c[p>>2]=m;c[t>>2]=0;if(c[c[p>>2]>>2]|0){i=x;return}if((d[(c[q>>2]|0)+1>>0]|0)==0?((c[r>>2]|0)+2|0)<=(e[(c[q>>2]|0)+16>>1]|0):0){c[o>>2]=gd(c[(c[q>>2]|0)+68>>2]|0)|0;if(c[o>>2]|0){c[c[p>>2]>>2]=c[o>>2];i=x;return}c[s>>2]=c[(c[q>>2]|0)+56>>2];c[w>>2]=e[(c[q>>2]|0)+14>>1];c[n>>2]=(c[w>>2]|0)+(e[(c[q>>2]|0)+18>>1]<<1);c[z>>2]=(c[w>>2]|0)+(c[y>>2]<<1);c[o>>2]=vC(c[q>>2]|0,c[r>>2]|0,t)|0;if(c[o>>2]|0){c[c[p>>2]>>2]=c[o>>2];i=x;return}f=(c[q>>2]|0)+18|0;b[f>>1]=(b[f>>1]|0)+1<<16>>16;f=(c[q>>2]|0)+16|0;b[f>>1]=(e[f>>1]|0)-(2+(c[r>>2]|0)&65535);dF((c[s>>2]|0)+(c[t>>2]|0)|0,c[u>>2]|0,c[r>>2]|0)|0;if(c[v>>2]|0)ck((c[s>>2]|0)+(c[t>>2]|0)|0,c[v>>2]|0);eF((c[s>>2]|0)+((c[z>>2]|0)+2)|0,(c[s>>2]|0)+(c[z>>2]|0)|0,(c[n>>2]|0)-(c[z>>2]|0)|0)|0;a[(c[s>>2]|0)+(c[z>>2]|0)>>0]=c[t>>2]>>8;a[(c[s>>2]|0)+(c[z>>2]|0)+1>>0]=c[t>>2];a[(c[s>>2]|0)+((d[(c[q>>2]|0)+6>>0]|0)+3)>>0]=e[(c[q>>2]|0)+18>>1]>>8;a[(c[s>>2]|0)+((d[(c[q>>2]|0)+6>>0]|0)+3)+1>>0]=b[(c[q>>2]|0)+18>>1];if(!(a[(c[(c[q>>2]|0)+52>>2]|0)+17>>0]|0)){i=x;return}AA(c[q>>2]|0,c[u>>2]|0,c[p>>2]|0);i=x;return}if(c[B>>2]|0){dF(c[B>>2]|0,c[u>>2]|0,c[r>>2]|0)|0;c[u>>2]=c[B>>2]}if(c[v>>2]|0)ck(c[u>>2]|0,c[v>>2]|0);g=(c[q>>2]|0)+1|0;f=a[g>>0]|0;a[g>>0]=f+1<<24>>24;c[A>>2]=f&255;c[(c[q>>2]|0)+32+(c[A>>2]<<2)>>2]=c[u>>2];b[(c[q>>2]|0)+22+(c[A>>2]<<1)>>1]=c[y>>2];i=x;return}function oC(f){f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;m=i;i=i+64|0;l=m+32|0;g=m+28|0;r=m+24|0;n=m+36|0;j=m+20|0;q=m+16|0;k=m+12|0;h=m+8|0;p=m+4|0;o=m;c[l>>2]=f;c[g>>2]=0;c[r>>2]=(c[(c[(c[l>>2]|0)+4>>2]|0)+36>>2]<<1>>>0)/3|0;c[j>>2]=0;do{c[q>>2]=b[(c[l>>2]|0)+76>>1];c[k>>2]=c[(c[l>>2]|0)+120+(c[q>>2]<<2)>>2];f=a[(c[k>>2]|0)+1>>0]|0;if(!(c[q>>2]|0)){if(!(f<<24>>24))break;c[g>>2]=pC(c[k>>2]|0,(c[l>>2]|0)+124|0)|0;if(!(c[g>>2]|0)){b[(c[l>>2]|0)+76>>1]=1;b[(c[l>>2]|0)+78>>1]=0;b[(c[l>>2]|0)+80>>1]=0}}else{if((f&255|0)==0?(e[(c[k>>2]|0)+16>>1]|0)<=(c[r>>2]|0):0)break;c[h>>2]=c[(c[l>>2]|0)+120+((c[q>>2]|0)-1<<2)>>2];c[p>>2]=e[(c[l>>2]|0)+78+((c[q>>2]|0)-1<<1)>>1];c[g>>2]=gd(c[(c[h>>2]|0)+68>>2]|0)|0;do if(!(c[g>>2]|0)){if(((((d[(c[k>>2]|0)+3>>0]|0)!=0?(d[(c[k>>2]|0)+1>>0]|0)==1:0)?(e[(c[k>>2]|0)+22>>1]|0)==(e[(c[k>>2]|0)+18>>1]|0):0)?(c[(c[h>>2]|0)+72>>2]|0)!=1:0)?(e[(c[h>>2]|0)+18>>1]|0)==(c[p>>2]|0):0){c[g>>2]=qC(c[h>>2]|0,c[k>>2]|0,n)|0;break}c[o>>2]=Hg(c[(c[(c[l>>2]|0)+4>>2]|0)+32>>2]|0)|0;c[g>>2]=rC(c[h>>2]|0,c[p>>2]|0,c[o>>2]|0,(c[q>>2]|0)==1&1,d[(c[l>>2]|0)+74>>0]|0)|0;if(c[j>>2]|0)Kg(c[j>>2]|0);c[j>>2]=c[o>>2]}while(0);a[(c[k>>2]|0)+1>>0]=0;Rk(c[k>>2]|0);f=(c[l>>2]|0)+76|0;b[f>>1]=(b[f>>1]|0)+ -1<<16>>16}}while((c[g>>2]|0)==0);if(!(c[j>>2]|0)){f=c[g>>2]|0;i=m;return f|0}Kg(c[j>>2]|0);f=c[g>>2]|0;i=m;return f|0}function pC(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;k=i;i=i+32|0;j=k+24|0;l=k+20|0;f=k+16|0;h=k+12|0;g=k+8|0;m=k+4|0;n=k;c[l>>2]=b;c[f>>2]=e;c[g>>2]=0;c[m>>2]=0;c[n>>2]=c[(c[l>>2]|0)+52>>2];c[h>>2]=gd(c[(c[l>>2]|0)+68>>2]|0)|0;if((c[h>>2]|0)==0?(c[h>>2]=uA(c[n>>2]|0,g,m,c[(c[l>>2]|0)+72>>2]|0,0)|0,uC(c[l>>2]|0,c[g>>2]|0,h),(a[(c[n>>2]|0)+17>>0]|0)!=0):0)yA(c[n>>2]|0,c[m>>2]|0,5,c[(c[l>>2]|0)+72>>2]|0,h);if(c[h>>2]|0){c[c[f>>2]>>2]=0;Rk(c[g>>2]|0);c[j>>2]=c[h>>2];b=c[j>>2]|0;i=k;return b|0}else{dF((c[g>>2]|0)+22|0,(c[l>>2]|0)+22|0,d[(c[l>>2]|0)+1>>0]<<1|0)|0;dF((c[g>>2]|0)+32|0,(c[l>>2]|0)+32|0,d[(c[l>>2]|0)+1>>0]<<2|0)|0;a[(c[g>>2]|0)+1>>0]=a[(c[l>>2]|0)+1>>0]|0;wB(c[l>>2]|0,d[c[(c[g>>2]|0)+56>>2]>>0]&-9);ck((c[(c[l>>2]|0)+56>>2]|0)+((d[(c[l>>2]|0)+6>>0]|0)+8)|0,c[m>>2]|0);c[c[f>>2]>>2]=c[g>>2];c[j>>2]=0;b=c[j>>2]|0;i=k;return b|0}return 0}function qC(f,g,h){f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;q=i;i=i+48|0;k=q+40|0;s=q+36|0;l=q+32|0;u=q+28|0;j=q+24|0;o=q+20|0;p=q+16|0;r=q+12|0;v=q+8|0;m=q+4|0;t=q+44|0;n=q;c[s>>2]=f;c[l>>2]=g;c[u>>2]=h;c[j>>2]=c[(c[l>>2]|0)+52>>2];if(!(e[(c[l>>2]|0)+18>>1]|0)){c[k>>2]=kj(58255)|0;f=c[k>>2]|0;i=q;return f|0}c[p>>2]=uA(c[j>>2]|0,o,r,0,0)|0;if(!(c[p>>2]|0)){c[v>>2]=(c[u>>2]|0)+4;c[m>>2]=c[(c[l>>2]|0)+32>>2];b[t>>1]=lB(c[l>>2]|0,c[m>>2]|0)|0;wB(c[o>>2]|0,13);tC(c[o>>2]|0,1,m,t);if((a[(c[j>>2]|0)+17>>0]|0)!=0?(yA(c[j>>2]|0,c[r>>2]|0,5,c[(c[s>>2]|0)+72>>2]|0,p),(e[t>>1]|0)>(e[(c[o>>2]|0)+12>>1]|0)):0)AA(c[o>>2]|0,c[m>>2]|0,p);c[m>>2]=(c[(c[l>>2]|0)+56>>2]|0)+(e[(c[l>>2]|0)+20>>1]&(d[(c[(c[l>>2]|0)+64>>2]|0)+((e[(c[l>>2]|0)+18>>1]|0)-1<<1)>>0]<<8|d[(c[(c[l>>2]|0)+64>>2]|0)+((e[(c[l>>2]|0)+18>>1]|0)-1<<1)+1>>0]));c[n>>2]=(c[m>>2]|0)+9;do{f=c[m>>2]|0;c[m>>2]=f+1;if(!(d[f>>0]&128))break}while((c[m>>2]|0)>>>0<(c[n>>2]|0)>>>0);c[n>>2]=(c[m>>2]|0)+9;do{f=c[m>>2]|0;c[m>>2]=f+1;f=a[f>>0]|0;g=c[v>>2]|0;c[v>>2]=g+1;a[g>>0]=f;if(!(f&128))break}while((c[m>>2]|0)>>>0<(c[n>>2]|0)>>>0);nC(c[s>>2]|0,e[(c[s>>2]|0)+18>>1]|0,c[u>>2]|0,(c[v>>2]|0)-(c[u>>2]|0)|0,0,c[(c[l>>2]|0)+72>>2]|0,p);ck((c[(c[s>>2]|0)+56>>2]|0)+((d[(c[s>>2]|0)+6>>0]|0)+8)|0,c[r>>2]|0);Rk(c[o>>2]|0)}c[k>>2]=c[p>>2];f=c[k>>2]|0;i=q;return f|0}function rC(f,g,h,j,k){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0;m=i;i=i+352|0;I=m+328|0;R=m+324|0;wa=m+320|0;V=m+316|0;X=m+312|0;ba=m+308|0;u=m+304|0;H=m+300|0;ta=m+296|0;o=m+292|0;q=m+288|0;n=m+284|0;E=m+280|0;w=m+276|0;P=m+272|0;y=m+268|0;v=m+338|0;l=m+264|0;ia=m+260|0;M=m+256|0;ha=m+252|0;qa=m+248|0;N=m+244|0;ua=m+240|0;r=m+228|0;F=m+216|0;p=m+196|0;W=m+192|0;sa=m+184|0;z=m+160|0;ga=m+140|0;s=m+136|0;J=m+132|0;pa=m+128|0;aa=m+124|0;va=m+120|0;ka=m+116|0;ja=m+112|0;la=m+108|0;ma=m+336|0;na=m+334|0;oa=m+332|0;ra=m+104|0;ca=m+100|0;ea=m+96|0;fa=m+92|0;da=m+88|0;_=m+84|0;Z=m+80|0;Y=m+76|0;U=m+72|0;S=m+68|0;Q=m+64|0;K=m+60|0;O=m+56|0;T=m;L=m+52|0;x=m+48|0;D=m+44|0;C=m+40|0;G=m+36|0;A=m+32|0;B=m+28|0;t=m+24|0;c[R>>2]=f;c[wa>>2]=g;c[V>>2]=h;c[X>>2]=j;c[ba>>2]=k;c[H>>2]=0;c[ta>>2]=0;c[o>>2]=0;c[y>>2]=0;c[qa>>2]=0;c[N>>2]=0;c[s>>2]=0;c[u>>2]=c[(c[R>>2]|0)+52>>2];if(!(c[V>>2]|0)){c[I>>2]=7;f=c[I>>2]|0;i=m;return f|0}c[n>>2]=(d[(c[R>>2]|0)+1>>0]|0)+(e[(c[R>>2]|0)+18>>1]|0);if((c[n>>2]|0)<2)c[P>>2]=0;else{do if(c[wa>>2]|0)if((c[wa>>2]|0)==(c[n>>2]|0)){c[P>>2]=(c[n>>2]|0)-2+(c[ba>>2]|0);break}else{c[P>>2]=(c[wa>>2]|0)-1;break}else c[P>>2]=0;while(0);c[n>>2]=2-(c[ba>>2]|0)}c[q>>2]=(c[n>>2]|0)+1;k=c[R>>2]|0;if(((c[n>>2]|0)+(c[P>>2]|0)-(d[(c[R>>2]|0)+1>>0]|0)|0)==(e[(c[R>>2]|0)+18>>1]|0))c[W>>2]=(c[(c[R>>2]|0)+56>>2]|0)+((d[k+6>>0]|0)+8);else c[W>>2]=(c[k+56>>2]|0)+(e[(c[R>>2]|0)+20>>1]&(d[(c[(c[R>>2]|0)+64>>2]|0)+((c[n>>2]|0)+(c[P>>2]|0)-(d[(c[R>>2]|0)+1>>0]|0)<<1)>>0]<<8|d[(c[(c[R>>2]|0)+64>>2]|0)+((c[n>>2]|0)+(c[P>>2]|0)-(d[(c[R>>2]|0)+1>>0]|0)<<1)+1>>0]));c[aa>>2]=Hh(c[W>>2]|0)|0;while(1){c[y>>2]=zw(c[u>>2]|0,c[aa>>2]|0,r+(c[n>>2]<<2)|0,0)|0;if(c[y>>2]|0){va=16;break}c[ta>>2]=(c[ta>>2]|0)+(1+(e[(c[r+(c[n>>2]<<2)>>2]|0)+18>>1]|0)+(d[(c[r+(c[n>>2]<<2)>>2]|0)+1>>0]|0));f=c[n>>2]|0;c[n>>2]=f+ -1;if(!f){va=26;break}if(((c[n>>2]|0)+(c[P>>2]|0)|0)==(e[(c[R>>2]|0)+22>>1]|0)?(d[(c[R>>2]|0)+1>>0]|0)!=0:0){c[sa+(c[n>>2]<<2)>>2]=c[(c[R>>2]|0)+32>>2];c[aa>>2]=Hh(c[sa+(c[n>>2]<<2)>>2]|0)|0;f=(lB(c[R>>2]|0,c[sa+(c[n>>2]<<2)>>2]|0)|0)&65535;c[ga+(c[n>>2]<<2)>>2]=f;a[(c[R>>2]|0)+1>>0]=0;continue}c[sa+(c[n>>2]<<2)>>2]=(c[(c[R>>2]|0)+56>>2]|0)+(e[(c[R>>2]|0)+20>>1]&(d[(c[(c[R>>2]|0)+64>>2]|0)+((c[n>>2]|0)+(c[P>>2]|0)-(d[(c[R>>2]|0)+1>>0]|0)<<1)>>0]<<8|d[(c[(c[R>>2]|0)+64>>2]|0)+((c[n>>2]|0)+(c[P>>2]|0)-(d[(c[R>>2]|0)+1>>0]|0)<<1)+1>>0]));c[aa>>2]=Hh(c[sa+(c[n>>2]<<2)>>2]|0)|0;f=(lB(c[R>>2]|0,c[sa+(c[n>>2]<<2)>>2]|0)|0)&65535;c[ga+(c[n>>2]<<2)>>2]=f;if(e[(c[u>>2]|0)+22>>1]&4){c[va>>2]=(c[sa+(c[n>>2]<<2)>>2]|0)-(c[(c[R>>2]|0)+56>>2]|0);if(((c[va>>2]|0)+(c[ga+(c[n>>2]<<2)>>2]|0)|0)>(c[(c[u>>2]|0)+36>>2]|0)){va=23;break}dF((c[V>>2]|0)+(c[va>>2]|0)|0,c[sa+(c[n>>2]<<2)>>2]|0,c[ga+(c[n>>2]<<2)>>2]|0)|0;c[sa+(c[n>>2]<<2)>>2]=(c[V>>2]|0)+((c[sa+(c[n>>2]<<2)>>2]|0)-(c[(c[R>>2]|0)+56>>2]|0))}mC(c[R>>2]|0,(c[n>>2]|0)+(c[P>>2]|0)-(d[(c[R>>2]|0)+1>>0]|0)|0,c[ga+(c[n>>2]<<2)>>2]|0,y)}a:do if((va|0)==16)_E(r|0,0,(c[n>>2]|0)+1<<2|0)|0;else if((va|0)==23){c[y>>2]=kj(58592)|0;_E(r|0,0,(c[n>>2]|0)+1<<2|0)|0}else if((va|0)==26){c[ta>>2]=(c[ta>>2]|0)+3&-4;c[w>>2]=(c[(c[u>>2]|0)+32>>2]|0)+80;c[ua>>2]=(c[ta>>2]<<2)+(c[ta>>2]<<1)+(c[(c[u>>2]|0)+32>>2]|0)+($(c[w>>2]|0,c[q>>2]|0)|0);c[s>>2]=mg(c[ua>>2]|0)|0;if(!(c[s>>2]|0)){c[y>>2]=7;break}c[J>>2]=(c[s>>2]|0)+(c[ta>>2]<<2);c[pa>>2]=(c[J>>2]|0)+(c[ta>>2]<<1);b[v>>1]=d[(c[r>>2]|0)+5>>0]<<2;c[l>>2]=d[(c[r>>2]|0)+3>>0];c[n>>2]=0;while(1){ta=c[u>>2]|0;if((c[n>>2]|0)>=(c[q>>2]|0))break;k=(c[ta+32>>2]|0)+($(c[w>>2]|0,c[n>>2]|0)|0)|0;k=(c[pa>>2]|0)+k|0;c[F+(c[n>>2]<<2)>>2]=k;c[ja>>2]=k;k=(c[ja>>2]|0)+0|0;ua=(c[r+(c[n>>2]<<2)>>2]|0)+0|0;ta=k+76|0;do{c[k>>2]=c[ua>>2];k=k+4|0;ua=ua+4|0}while((k|0)<(ta|0));c[(c[ja>>2]|0)+56>>2]=(c[ja>>2]|0)+76;dF(c[(c[ja>>2]|0)+56>>2]|0,c[(c[r+(c[n>>2]<<2)>>2]|0)+56>>2]|0,c[(c[u>>2]|0)+32>>2]|0)|0;c[ka>>2]=(e[(c[ja>>2]|0)+18>>1]|0)+(d[(c[ja>>2]|0)+1>>0]|0);b:do if((d[(c[ja>>2]|0)+1>>0]|0)>0){c[E>>2]=0;while(1){if((c[E>>2]|0)>=(c[ka>>2]|0))break b;f=sC(c[ja>>2]|0,c[E>>2]|0)|0;c[(c[s>>2]|0)+(c[H>>2]<<2)>>2]=f;f=lB(c[ja>>2]|0,c[(c[s>>2]|0)+(c[H>>2]<<2)>>2]|0)|0;b[(c[J>>2]|0)+(c[H>>2]<<1)>>1]=f;c[H>>2]=(c[H>>2]|0)+1;c[E>>2]=(c[E>>2]|0)+1}}else{c[la>>2]=c[(c[ja>>2]|0)+56>>2];b[ma>>1]=b[(c[ja>>2]|0)+20>>1]|0;b[na>>1]=b[(c[ja>>2]|0)+14>>1]|0;c[E>>2]=0;while(1){if((c[E>>2]|0)>=(c[ka>>2]|0))break b;c[(c[s>>2]|0)+(c[H>>2]<<2)>>2]=(c[la>>2]|0)+(e[ma>>1]&(d[(c[la>>2]|0)+((e[na>>1]|0)+(c[E>>2]<<1))>>0]<<8|d[(c[la>>2]|0)+((e[na>>1]|0)+(c[E>>2]<<1))+1>>0]));f=lB(c[ja>>2]|0,c[(c[s>>2]|0)+(c[H>>2]<<2)>>2]|0)|0;b[(c[J>>2]|0)+(c[H>>2]<<1)>>1]=f;c[H>>2]=(c[H>>2]|0)+1;c[E>>2]=(c[E>>2]|0)+1}}while(0);if(!((c[l>>2]|0)!=0?1:(c[n>>2]|0)>=((c[q>>2]|0)-1|0))){b[oa>>1]=c[ga+(c[n>>2]<<2)>>2];b[(c[J>>2]|0)+(c[H>>2]<<1)>>1]=b[oa>>1]|0;c[ra>>2]=(c[pa>>2]|0)+(c[qa>>2]|0);c[qa>>2]=(c[qa>>2]|0)+(e[oa>>1]|0);dF(c[ra>>2]|0,c[sa+(c[n>>2]<<2)>>2]|0,e[oa>>1]|0)|0;c[(c[s>>2]|0)+(c[H>>2]<<2)>>2]=(c[ra>>2]|0)+(e[v>>1]|0);b[(c[J>>2]|0)+(c[H>>2]<<1)>>1]=(e[(c[J>>2]|0)+(c[H>>2]<<1)>>1]|0)-(e[v>>1]|0);ta=c[H>>2]|0;if(a[(c[ja>>2]|0)+5>>0]|0){if((e[(c[J>>2]|0)+(ta<<1)>>1]|0)<4)b[(c[J>>2]|0)+(c[H>>2]<<1)>>1]=4}else{f=c[(c[s>>2]|0)+(ta<<2)>>2]|0;g=(c[(c[ja>>2]|0)+56>>2]|0)+8|0;a[f+0>>0]=a[g+0>>0]|0;a[f+1>>0]=a[g+1>>0]|0;a[f+2>>0]=a[g+2>>0]|0;a[f+3>>0]=a[g+3>>0]|0}c[H>>2]=(c[H>>2]|0)+1}c[n>>2]=(c[n>>2]|0)+1}c[ia>>2]=(c[ta+36>>2]|0)-12+(e[v>>1]|0);c[n>>2]=0;c[w>>2]=0;c[ha>>2]=0;while(1){if((c[n>>2]|0)>=(c[H>>2]|0))break;c[ha>>2]=(c[ha>>2]|0)+((e[(c[J>>2]|0)+(c[n>>2]<<1)>>1]|0)+2);if((c[ha>>2]|0)>(c[ia>>2]|0)){c[ga+(c[w>>2]<<2)>>2]=(c[ha>>2]|0)-(e[(c[J>>2]|0)+(c[n>>2]<<1)>>1]|0);c[z+(c[w>>2]<<2)>>2]=c[n>>2];if(c[l>>2]|0)c[n>>2]=(c[n>>2]|0)+ -1;c[ha>>2]=0;c[w>>2]=(c[w>>2]|0)+1;if((c[w>>2]|0)>4){va=50;break}}c[n>>2]=(c[n>>2]|0)+1}if((va|0)==50){c[y>>2]=kj(58731)|0;break}c[ga+(c[w>>2]<<2)>>2]=c[ha>>2];c[z+(c[w>>2]<<2)>>2]=c[H>>2];c[w>>2]=(c[w>>2]|0)+1;c[n>>2]=(c[w>>2]|0)-1;while(1){if((c[n>>2]|0)<=0)break;c[ca>>2]=c[ga+(c[n>>2]<<2)>>2];c[ea>>2]=c[ga+((c[n>>2]|0)-1<<2)>>2];c[fa>>2]=(c[z+((c[n>>2]|0)-1<<2)>>2]|0)-1;c[da>>2]=(c[fa>>2]|0)+1-(c[l>>2]|0);while(1){if(c[ca>>2]|0){if(c[ba>>2]|0)break;if(((c[ca>>2]|0)+(e[(c[J>>2]|0)+(c[da>>2]<<1)>>1]|0)+2|0)>((c[ea>>2]|0)-((e[(c[J>>2]|0)+(c[fa>>2]<<1)>>1]|0)+2)|0))break}c[ca>>2]=(c[ca>>2]|0)+((e[(c[J>>2]|0)+(c[da>>2]<<1)>>1]|0)+2);c[ea>>2]=(c[ea>>2]|0)-((e[(c[J>>2]|0)+(c[fa>>2]<<1)>>1]|0)+2);f=z+((c[n>>2]|0)-1<<2)|0;c[f>>2]=(c[f>>2]|0)+ -1;c[fa>>2]=(c[z+((c[n>>2]|0)-1<<2)>>2]|0)-1;c[da>>2]=(c[fa>>2]|0)+1-(c[l>>2]|0)}c[ga+(c[n>>2]<<2)>>2]=c[ca>>2];c[ga+((c[n>>2]|0)-1<<2)>>2]=c[ea>>2];c[n>>2]=(c[n>>2]|0)+ -1}if((c[(c[r>>2]|0)+72>>2]|0)>>>0<=1){c[y>>2]=kj(58793)|0;break}c[M>>2]=d[c[(c[r>>2]|0)+56>>2]>>0];c[n>>2]=0;while(1){if((c[n>>2]|0)>=(c[w>>2]|0))break;if((c[n>>2]|0)<(c[q>>2]|0)){f=c[r+(c[n>>2]<<2)>>2]|0;c[p+(c[n>>2]<<2)>>2]=f;c[_>>2]=f;c[r+(c[n>>2]<<2)>>2]=0;c[y>>2]=gd(c[(c[_>>2]|0)+68>>2]|0)|0;c[o>>2]=(c[o>>2]|0)+1;if(c[y>>2]|0)break a}else{c[y>>2]=uA(c[u>>2]|0,_,aa,(c[ba>>2]|0)!=0?1:c[aa>>2]|0,0)|0;if(c[y>>2]|0)break a;c[p+(c[n>>2]<<2)>>2]=c[_>>2];c[o>>2]=(c[o>>2]|0)+1;if((a[(c[u>>2]|0)+17>>0]|0)!=0?(yA(c[u>>2]|0,c[(c[_>>2]|0)+72>>2]|0,5,c[(c[R>>2]|0)+72>>2]|0,y),(c[y>>2]|0)!=0):0)break a}c[n>>2]=(c[n>>2]|0)+1}while(1){if((c[n>>2]|0)>=(c[q>>2]|0))break;vB(c[r+(c[n>>2]<<2)>>2]|0,y);if(c[y>>2]|0)break a;Rk(c[r+(c[n>>2]<<2)>>2]|0);c[r+(c[n>>2]<<2)>>2]=0;c[n>>2]=(c[n>>2]|0)+1}c[n>>2]=0;while(1){if((c[n>>2]|0)>=((c[w>>2]|0)-1|0))break;c[Z>>2]=c[(c[p+(c[n>>2]<<2)>>2]|0)+72>>2];c[Y>>2]=c[n>>2];c[E>>2]=(c[n>>2]|0)+1;while(1){if((c[E>>2]|0)>=(c[w>>2]|0))break;if((c[(c[p+(c[E>>2]<<2)>>2]|0)+72>>2]|0)>>>0<(c[Z>>2]|0)>>>0){c[Y>>2]=c[E>>2];c[Z>>2]=c[(c[p+(c[E>>2]<<2)>>2]|0)+72>>2]}c[E>>2]=(c[E>>2]|0)+1}if((c[Y>>2]|0)>(c[n>>2]|0)){c[U>>2]=c[p+(c[n>>2]<<2)>>2];c[p+(c[n>>2]<<2)>>2]=c[p+(c[Y>>2]<<2)>>2];c[p+(c[Y>>2]<<2)>>2]=c[U>>2]}c[n>>2]=(c[n>>2]|0)+1}ck(c[W>>2]|0,c[(c[p+((c[o>>2]|0)-1<<2)>>2]|0)+72>>2]|0);c[E>>2]=0;c[n>>2]=0;while(1){if((c[n>>2]|0)>=(c[o>>2]|0))break;c[S>>2]=c[p+(c[n>>2]<<2)>>2];wB(c[S>>2]|0,c[M>>2]|0);tC(c[S>>2]|0,(c[z+(c[n>>2]<<2)>>2]|0)-(c[E>>2]|0)|0,(c[s>>2]|0)+(c[E>>2]<<2)|0,(c[J>>2]|0)+(c[E>>2]<<1)|0);c[E>>2]=c[z+(c[n>>2]<<2)>>2];if((c[E>>2]|0)<(c[H>>2]|0)){c[Q>>2]=c[(c[s>>2]|0)+(c[E>>2]<<2)>>2];c[O>>2]=(e[(c[J>>2]|0)+(c[E>>2]<<1)>>1]|0)+(e[v>>1]|0);c[K>>2]=(c[V>>2]|0)+(c[N>>2]|0);do if(a[(c[S>>2]|0)+5>>0]|0){if(c[l>>2]|0){c[E>>2]=(c[E>>2]|0)+ -1;Kw(c[S>>2]|0,c[(c[s>>2]|0)+(c[E>>2]<<2)>>2]|0,T);c[Q>>2]=c[K>>2];f=T;c[O>>2]=4+(oz((c[Q>>2]|0)+4|0,c[f>>2]|0,c[f+4>>2]|0)|0);c[K>>2]=0;break}c[Q>>2]=(c[Q>>2]|0)+ -4;if((e[(c[J>>2]|0)+(c[E>>2]<<1)>>1]|0)==4)c[O>>2]=(lB(c[R>>2]|0,c[Q>>2]|0)|0)&65535}else{f=(c[(c[S>>2]|0)+56>>2]|0)+8|0;g=c[Q>>2]|0;a[f+0>>0]=a[g+0>>0]|0;a[f+1>>0]=a[g+1>>0]|0;a[f+2>>0]=a[g+2>>0]|0;a[f+3>>0]=a[g+3>>0]|0}while(0);c[N>>2]=(c[N>>2]|0)+(c[O>>2]|0);nC(c[R>>2]|0,c[P>>2]|0,c[Q>>2]|0,c[O>>2]|0,c[K>>2]|0,c[(c[S>>2]|0)+72>>2]|0,y);if(c[y>>2]|0)break a;c[E>>2]=(c[E>>2]|0)+1;c[P>>2]=(c[P>>2]|0)+1}c[n>>2]=(c[n>>2]|0)+1}if(!(c[M>>2]&8)){c[L>>2]=(c[(c[F+((c[q>>2]|0)-1<<2)>>2]|0)+56>>2]|0)+8;f=(c[(c[p+((c[o>>2]|0)-1<<2)>>2]|0)+56>>2]|0)+8|0;g=c[L>>2]|0;a[f+0>>0]=a[g+0>>0]|0;a[f+1>>0]=a[g+1>>0]|0;a[f+2>>0]=a[g+2>>0]|0;a[f+3>>0]=a[g+3>>0]|0}if(((c[X>>2]|0)!=0?(e[(c[R>>2]|0)+18>>1]|0)==0:0)?(d[(c[R>>2]|0)+6>>0]|0)<=(e[(c[p>>2]|0)+16>>1]|0):0){uC(c[p>>2]|0,c[R>>2]|0,y);vB(c[p>>2]|0,y);break}if(a[(c[u>>2]|0)+17>>0]|0){c[x>>2]=c[p>>2];c[D>>2]=c[F>>2];c[C>>2]=d[(c[D>>2]|0)+1>>0];c[G>>2]=(e[(c[D>>2]|0)+18>>1]|0)+(c[C>>2]|0);if(c[C>>2]|0)K=e[(c[D>>2]|0)+22>>1]|0;else K=-1;c[A>>2]=K;c[E>>2]=0;c[w>>2]=0;c[n>>2]=0;while(1){if((c[n>>2]|0)>=(c[H>>2]|0))break;c[B>>2]=0;while(1){if((c[n>>2]|0)!=(c[G>>2]|0))break;f=(c[E>>2]|0)+1|0;c[E>>2]=f;c[D>>2]=c[F+(f<<2)>>2];c[G>>2]=(c[n>>2]|0)+(((c[l>>2]|0)!=0^1)&1)+(e[(c[D>>2]|0)+18>>1]|0)+(d[(c[D>>2]|0)+1>>0]|0);if(a[(c[D>>2]|0)+1>>0]|0){c[C>>2]=d[(c[D>>2]|0)+1>>0];c[A>>2]=(c[n>>2]|0)+(((c[l>>2]|0)!=0^1)&1)+(e[(c[D>>2]|0)+22>>1]|0)}c[B>>2]=((c[l>>2]|0)!=0^1)&1}if((c[n>>2]|0)==(c[A>>2]|0)?(c[B>>2]=1,f=(c[C>>2]|0)+ -1|0,c[C>>2]=f,(f|0)>0):0)c[A>>2]=(c[A>>2]|0)+1;if(!((c[n>>2]|0)==(c[z+(c[w>>2]<<2)>>2]|0)?(f=(c[w>>2]|0)+1|0,c[w>>2]=f,c[x>>2]=c[p+(f<<2)>>2],(c[l>>2]|0)==0):0))va=116;do if((va|0)==116){va=0;if((c[B>>2]|0)==0?(c[(c[D>>2]|0)+72>>2]|0)==(c[(c[x>>2]|0)+72>>2]|0):0)break;if(!(b[v>>1]|0)){g=c[u>>2]|0;f=Hh(c[(c[s>>2]|0)+(c[n>>2]<<2)>>2]|0)|0;yA(g,f,5,c[(c[x>>2]|0)+72>>2]|0,y)}if((e[(c[J>>2]|0)+(c[n>>2]<<1)>>1]|0)>(e[(c[x>>2]|0)+12>>1]|0))AA(c[x>>2]|0,c[(c[s>>2]|0)+(c[n>>2]<<2)>>2]|0,y)}while(0);c[n>>2]=(c[n>>2]|0)+1}if(!(b[v>>1]|0)){c[n>>2]=0;while(1){if((c[n>>2]|0)>=(c[o>>2]|0))break a;c[t>>2]=Hh((c[(c[p+(c[n>>2]<<2)>>2]|0)+56>>2]|0)+8|0)|0;yA(c[u>>2]|0,c[t>>2]|0,5,c[(c[p+(c[n>>2]<<2)>>2]|0)+72>>2]|0,y);c[n>>2]=(c[n>>2]|0)+1}}}}while(0);ng(c[s>>2]|0);c[n>>2]=0;while(1){if((c[n>>2]|0)>=(c[q>>2]|0))break;Rk(c[r+(c[n>>2]<<2)>>2]|0);c[n>>2]=(c[n>>2]|0)+1}c[n>>2]=0;while(1){if((c[n>>2]|0)>=(c[o>>2]|0))break;Rk(c[p+(c[n>>2]<<2)>>2]|0);c[n>>2]=(c[n>>2]|0)+1}c[I>>2]=c[y>>2];f=c[I>>2]|0;i=m;return f|0}function sC(a,b){a=a|0;b=b|0;var f=0,g=0,h=0,j=0,k=0,l=0;j=i;i=i+32|0;h=j+16|0;f=j+12|0;g=j+8|0;k=j+4|0;l=j;c[f>>2]=a;c[g>>2]=b;c[k>>2]=(d[(c[f>>2]|0)+1>>0]|0)-1;while(1){if((c[k>>2]|0)<0){b=8;break}c[l>>2]=e[(c[f>>2]|0)+22+(c[k>>2]<<1)>>1];if((c[l>>2]|0)<=(c[g>>2]|0)){if((c[l>>2]|0)==(c[g>>2]|0)){b=5;break}c[g>>2]=(c[g>>2]|0)+ -1}c[k>>2]=(c[k>>2]|0)+ -1}if((b|0)==5){c[h>>2]=c[(c[f>>2]|0)+32+(c[k>>2]<<2)>>2];a=c[h>>2]|0;i=j;return a|0}else if((b|0)==8){c[h>>2]=(c[(c[f>>2]|0)+56>>2]|0)+((e[(c[f>>2]|0)+20>>1]|0)&((d[(c[(c[f>>2]|0)+64>>2]|0)+(c[g>>2]<<1)>>0]|0)<<8|(d[(c[(c[f>>2]|0)+64>>2]|0)+(c[g>>2]<<1)+1>>0]|0)));a=c[h>>2]|0;i=j;return a|0}return 0}function tC(f,g,h,j){f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;q=i;i=i+48|0;o=q+36|0;r=q+32|0;v=q+28|0;s=q+24|0;k=q+20|0;u=q+16|0;n=q+12|0;l=q+8|0;m=q+4|0;p=q;t=q+40|0;c[o>>2]=f;c[r>>2]=g;c[v>>2]=h;c[s>>2]=j;c[l>>2]=c[(c[o>>2]|0)+56>>2];c[m>>2]=d[(c[o>>2]|0)+6>>0];c[p>>2]=c[(c[(c[o>>2]|0)+52>>2]|0)+36>>2];c[u>>2]=(c[(c[o>>2]|0)+64>>2]|0)+(c[r>>2]<<1);c[n>>2]=c[p>>2];c[k>>2]=(c[r>>2]|0)-1;while(1){if((c[k>>2]|0)<0)break;b[t>>1]=b[(c[s>>2]|0)+(c[k>>2]<<1)>>1]|0;c[u>>2]=(c[u>>2]|0)+ -2;c[n>>2]=(c[n>>2]|0)-(e[t>>1]|0);a[c[u>>2]>>0]=c[n>>2]>>8;a[(c[u>>2]|0)+1>>0]=c[n>>2];dF((c[l>>2]|0)+(c[n>>2]|0)|0,c[(c[v>>2]|0)+(c[k>>2]<<2)>>2]|0,e[t>>1]|0|0)|0;c[k>>2]=(c[k>>2]|0)+ -1}a[(c[l>>2]|0)+((c[m>>2]|0)+3)>>0]=c[r>>2]>>8;a[(c[l>>2]|0)+((c[m>>2]|0)+3)+1>>0]=c[r>>2];a[(c[l>>2]|0)+((c[m>>2]|0)+5)>>0]=c[n>>2]>>8;a[(c[l>>2]|0)+((c[m>>2]|0)+5)+1>>0]=c[n>>2];f=(c[o>>2]|0)+16|0;b[f>>1]=(e[f>>1]|0)-((c[r>>2]<<1)+(c[p>>2]|0)-(c[n>>2]|0));b[(c[o>>2]|0)+18>>1]=c[r>>2];i=q;return}function uC(b,f,g){b=b|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;o=i;i=i+48|0;n=o+36|0;l=o+32|0;k=o+28|0;m=o+24|0;h=o+20|0;p=o+16|0;q=o+12|0;r=o+8|0;j=o+4|0;s=o;c[n>>2]=b;c[l>>2]=f;c[k>>2]=g;if(c[c[k>>2]>>2]|0){i=o;return}c[m>>2]=c[(c[n>>2]|0)+52>>2];c[h>>2]=c[(c[n>>2]|0)+56>>2];c[p>>2]=c[(c[l>>2]|0)+56>>2];c[q>>2]=d[(c[n>>2]|0)+6>>0];c[r>>2]=(c[(c[l>>2]|0)+72>>2]|0)==1?100:0;c[s>>2]=d[(c[h>>2]|0)+((c[q>>2]|0)+5)>>0]<<8|d[(c[h>>2]|0)+((c[q>>2]|0)+5)+1>>0];dF((c[p>>2]|0)+(c[s>>2]|0)|0,(c[h>>2]|0)+(c[s>>2]|0)|0,(c[(c[m>>2]|0)+36>>2]|0)-(c[s>>2]|0)|0)|0;dF((c[p>>2]|0)+(c[r>>2]|0)|0,(c[h>>2]|0)+(c[q>>2]|0)|0,(e[(c[n>>2]|0)+14>>1]|0)+(e[(c[n>>2]|0)+18>>1]<<1)|0)|0;a[c[l>>2]>>0]=0;c[j>>2]=Sj(c[l>>2]|0)|0;if(c[j>>2]|0){c[c[k>>2]>>2]=c[j>>2];i=o;return}if(!(a[(c[m>>2]|0)+17>>0]|0)){i=o;return}b=xA(c[l>>2]|0)|0;c[c[k>>2]>>2]=b;i=o;return}function vC(b,f,g){b=b|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;p=i;i=i+64|0;o=p+52|0;x=p+48|0;k=p+44|0;n=p+40|0;m=p+36|0;l=p+32|0;r=p+28|0;q=p+24|0;w=p+20|0;v=p+16|0;h=p+12|0;t=p+8|0;u=p+4|0;s=p;c[x>>2]=b;c[k>>2]=f;c[n>>2]=g;c[m>>2]=d[(c[x>>2]|0)+6>>0];c[l>>2]=c[(c[x>>2]|0)+56>>2];c[v>>2]=c[(c[(c[x>>2]|0)+52>>2]|0)+36>>2];c[q>>2]=(e[(c[x>>2]|0)+14>>1]|0)+((e[(c[x>>2]|0)+18>>1]|0)<<1);c[r>>2]=(d[(c[l>>2]|0)+((c[m>>2]|0)+5)>>0]|0)<<8|(d[(c[l>>2]|0)+((c[m>>2]|0)+5)+1>>0]|0);do if((c[q>>2]|0)>(c[r>>2]|0)){if(!(c[r>>2]|0)){c[r>>2]=65536;break}c[o>>2]=kj(53453)|0;b=c[o>>2]|0;i=p;return b|0}while(0);a:do if(((c[q>>2]|0)+2|0)<=(c[r>>2]|0)){if((d[(c[l>>2]|0)+((c[m>>2]|0)+1)>>0]|0|0)==0?(d[(c[l>>2]|0)+((c[m>>2]|0)+2)>>0]|0|0)==0:0){j=22;break}c[t>>2]=(c[m>>2]|0)+1;while(1){b=(d[(c[l>>2]|0)+(c[t>>2]|0)>>0]|0)<<8|(d[(c[l>>2]|0)+(c[t>>2]|0)+1>>0]|0);c[h>>2]=b;if((b|0)<=0){j=22;break a}if((c[h>>2]|0)>((c[v>>2]|0)-4|0)){j=12;break}if((c[h>>2]|0)<((c[t>>2]|0)+4|0)){j=12;break}c[u>>2]=(d[(c[l>>2]|0)+((c[h>>2]|0)+2)>>0]|0)<<8|(d[(c[l>>2]|0)+((c[h>>2]|0)+2)+1>>0]|0);if((c[u>>2]|0)>=(c[k>>2]|0))break;c[t>>2]=c[h>>2]}if((j|0)==12){c[o>>2]=kj(53469)|0;b=c[o>>2]|0;i=p;return b|0}c[s>>2]=(c[u>>2]|0)-(c[k>>2]|0);do if((c[s>>2]|0)<4){if((d[(c[l>>2]|0)+((c[m>>2]|0)+7)>>0]|0|0)>=60){j=23;break a}b=(c[l>>2]|0)+(c[t>>2]|0)|0;f=(c[l>>2]|0)+(c[h>>2]|0)|0;a[b+0>>0]=a[f+0>>0]|0;a[b+1>>0]=a[f+1>>0]|0;b=(c[l>>2]|0)+((c[m>>2]|0)+7)|0;a[b>>0]=(d[b>>0]|0)+(c[s>>2]&255)}else{if(((c[u>>2]|0)+(c[h>>2]|0)|0)<=(c[v>>2]|0)){a[(c[l>>2]|0)+((c[h>>2]|0)+2)>>0]=c[s>>2]>>8;a[(c[l>>2]|0)+((c[h>>2]|0)+2)+1>>0]=c[s>>2];break}c[o>>2]=kj(53483)|0;b=c[o>>2]|0;i=p;return b|0}while(0);c[c[n>>2]>>2]=(c[h>>2]|0)+(c[s>>2]|0);c[o>>2]=0;b=c[o>>2]|0;i=p;return b|0}else j=22;while(0);if((j|0)==22?((c[q>>2]|0)+2+(c[k>>2]|0)|0)>(c[r>>2]|0):0)j=23;do if((j|0)==23){c[w>>2]=wC(c[x>>2]|0)|0;if(!(c[w>>2]|0)){c[r>>2]=(((d[(c[l>>2]|0)+((c[m>>2]|0)+5)>>0]|0)<<8|(d[(c[l>>2]|0)+((c[m>>2]|0)+5)+1>>0]|0))-1&65535)+1;break}c[o>>2]=c[w>>2];b=c[o>>2]|0;i=p;return b|0}while(0);c[r>>2]=(c[r>>2]|0)-(c[k>>2]|0);a[(c[l>>2]|0)+((c[m>>2]|0)+5)>>0]=c[r>>2]>>8;a[(c[l>>2]|0)+((c[m>>2]|0)+5)+1>>0]=c[r>>2];c[c[n>>2]>>2]=c[r>>2];c[o>>2]=0;b=c[o>>2]|0;i=p;return b|0}function wC(b){b=b|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;f=i;i=i+64|0;m=f+56|0;l=f+52|0;t=f+48|0;o=f+44|0;j=f+40|0;n=f+36|0;p=f+32|0;s=f+28|0;g=f+24|0;v=f+20|0;h=f+16|0;q=f+12|0;k=f+8|0;r=f+4|0;u=f;c[l>>2]=b;c[q>>2]=xC(c[c[(c[l>>2]|0)+52>>2]>>2]|0)|0;c[h>>2]=c[(c[l>>2]|0)+56>>2];c[j>>2]=d[(c[l>>2]|0)+6>>0];c[s>>2]=e[(c[l>>2]|0)+14>>1];c[v>>2]=e[(c[l>>2]|0)+18>>1];c[p>>2]=c[(c[(c[l>>2]|0)+52>>2]|0)+36>>2];c[g>>2]=(d[(c[h>>2]|0)+((c[j>>2]|0)+5)>>0]|0)<<8|(d[(c[h>>2]|0)+((c[j>>2]|0)+5)+1>>0]|0);dF((c[q>>2]|0)+(c[g>>2]|0)|0,(c[h>>2]|0)+(c[g>>2]|0)|0,(c[p>>2]|0)-(c[g>>2]|0)|0)|0;c[g>>2]=c[p>>2];c[k>>2]=(c[s>>2]|0)+(c[v>>2]<<1);c[r>>2]=(c[p>>2]|0)-4;c[t>>2]=0;while(1){if((c[t>>2]|0)>=(c[v>>2]|0)){n=10;break}c[u>>2]=(c[h>>2]|0)+((c[s>>2]|0)+(c[t>>2]<<1));c[o>>2]=(d[c[u>>2]>>0]|0)<<8|(d[(c[u>>2]|0)+1>>0]|0);if((c[o>>2]|0)<(c[k>>2]|0)){n=5;break}if((c[o>>2]|0)>(c[r>>2]|0)){n=5;break}c[n>>2]=(lB(c[l>>2]|0,(c[q>>2]|0)+(c[o>>2]|0)|0)|0)&65535;c[g>>2]=(c[g>>2]|0)-(c[n>>2]|0);if((c[g>>2]|0)<(c[k>>2]|0)){n=8;break}if(((c[o>>2]|0)+(c[n>>2]|0)|0)>(c[p>>2]|0)){n=8;break}dF((c[h>>2]|0)+(c[g>>2]|0)|0,(c[q>>2]|0)+(c[o>>2]|0)|0,c[n>>2]|0)|0;a[c[u>>2]>>0]=c[g>>2]>>8;a[(c[u>>2]|0)+1>>0]=c[g>>2];c[t>>2]=(c[t>>2]|0)+1}if((n|0)==5){c[m>>2]=kj(53381)|0;v=c[m>>2]|0;i=f;return v|0}else if((n|0)==8){c[m>>2]=kj(53393)|0;v=c[m>>2]|0;i=f;return v|0}else if((n|0)==10){a[(c[h>>2]|0)+((c[j>>2]|0)+5)>>0]=c[g>>2]>>8;a[(c[h>>2]|0)+((c[j>>2]|0)+5)+1>>0]=c[g>>2];a[(c[h>>2]|0)+((c[j>>2]|0)+1)>>0]=0;a[(c[h>>2]|0)+((c[j>>2]|0)+2)>>0]=0;a[(c[h>>2]|0)+((c[j>>2]|0)+7)>>0]=0;_E((c[h>>2]|0)+(c[k>>2]|0)|0,0,(c[g>>2]|0)-(c[k>>2]|0)|0)|0;if(((c[g>>2]|0)-(c[k>>2]|0)|0)!=(e[(c[l>>2]|0)+16>>1]|0|0)){c[m>>2]=kj(53410)|0;v=c[m>>2]|0;i=f;return v|0}else{c[m>>2]=0;v=c[m>>2]|0;i=f;return v|0}}return 0}function xC(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;i=d;return c[(c[b>>2]|0)+200>>2]|0}function yC(f,g,h){f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;n=i;i=i+48|0;m=n+20|0;t=n+16|0;j=n+32|0;u=n+30|0;s=n+28|0;o=n+26|0;q=n+35|0;v=n+34|0;l=n+24|0;x=n+12|0;r=n+8|0;p=n+4|0;w=n;c[t>>2]=f;b[j>>1]=g;b[u>>1]=h;a[v>>0]=0;b[l>>1]=b[u>>1]|0;c[x>>2]=(c[(c[(c[t>>2]|0)+52>>2]|0)+36>>2]|0)-4;c[r>>2]=(e[j>>1]|0)+(e[u>>1]|0);c[p>>2]=c[(c[t>>2]|0)+56>>2];if((e[(c[(c[t>>2]|0)+52>>2]|0)+22>>1]|0)&4)_E((c[p>>2]|0)+(e[j>>1]|0)|0,0,e[u>>1]|0|0)|0;a[q>>0]=a[(c[t>>2]|0)+6>>0]|0;b[s>>1]=(d[q>>0]|0)+1;if((d[(c[p>>2]|0)+((e[s>>1]|0)+1)>>0]|0|0)==0?(d[(c[p>>2]|0)+(e[s>>1]|0)>>0]|0|0)==0:0)b[o>>1]=0;else k=6;do if((k|0)==6){while(1){k=0;f=((d[(c[p>>2]|0)+(e[s>>1]|0)>>0]|0)<<8|(d[(c[p>>2]|0)+(e[s>>1]|0)+1>>0]|0))&65535;b[o>>1]=f;if((f&65535|0)>0)g=(e[o>>1]|0|0)<(e[j>>1]|0|0);else g=0;h=e[o>>1]|0;if(!g)break;if((h|0)<((e[s>>1]|0)+4|0)){k=10;break}b[s>>1]=b[o>>1]|0;k=6}if((k|0)==10){c[m>>2]=kj(53568)|0;f=c[m>>2]|0;i=n;return f|0}if(h>>>0>(c[x>>2]|0)>>>0){c[m>>2]=kj(53571)|0;f=c[m>>2]|0;i=n;return f|0}do if((e[o>>1]|0|0)!=0?((c[r>>2]|0)+3|0)>>>0>=(e[o>>1]|0)>>>0:0){a[v>>0]=(e[o>>1]|0)-(c[r>>2]|0);if((c[r>>2]|0)>>>0<=(e[o>>1]|0)>>>0){c[r>>2]=(e[o>>1]|0)+((d[(c[p>>2]|0)+((e[o>>1]|0)+2)>>0]|0)<<8|(d[(c[p>>2]|0)+((e[o>>1]|0)+2)+1>>0]|0));b[u>>1]=(c[r>>2]|0)-(e[j>>1]|0);b[o>>1]=(d[(c[p>>2]|0)+(e[o>>1]|0)>>0]|0)<<8|(d[(c[p>>2]|0)+(e[o>>1]|0)+1>>0]|0);break}c[m>>2]=kj(53582)|0;f=c[m>>2]|0;i=n;return f|0}while(0);do if((e[s>>1]|0|0)>((d[q>>0]|0)+1|0)?(c[w>>2]=(e[s>>1]|0)+((d[(c[p>>2]|0)+((e[s>>1]|0)+2)>>0]|0)<<8|(d[(c[p>>2]|0)+((e[s>>1]|0)+2)+1>>0]|0)),((c[w>>2]|0)+3|0)>=(e[j>>1]|0|0)):0){if((c[w>>2]|0)<=(e[j>>1]|0|0)){a[v>>0]=(d[v>>0]|0)+((e[j>>1]|0)-(c[w>>2]|0));b[u>>1]=(c[r>>2]|0)-(e[s>>1]|0);b[j>>1]=b[s>>1]|0;break}c[m>>2]=kj(53595)|0;f=c[m>>2]|0;i=n;return f|0}while(0);if((d[v>>0]|0|0)<=(d[(c[p>>2]|0)+((d[q>>0]|0)+7)>>0]|0|0)){f=(c[p>>2]|0)+((d[q>>0]|0)+7)|0;a[f>>0]=(d[f>>0]|0)-(d[v>>0]|0);break}c[m>>2]=kj(53601)|0;f=c[m>>2]|0;i=n;return f|0}while(0);do if((e[j>>1]|0|0)==((d[(c[p>>2]|0)+((d[q>>0]|0)+5)>>0]|0)<<8|(d[(c[p>>2]|0)+((d[q>>0]|0)+5)+1>>0]|0)|0)){if((e[s>>1]|0|0)==((d[q>>0]|0)+1|0)){a[(c[p>>2]|0)+((d[q>>0]|0)+1)>>0]=(e[o>>1]|0)>>8;a[(c[p>>2]|0)+((d[q>>0]|0)+1)+1>>0]=b[o>>1];a[(c[p>>2]|0)+((d[q>>0]|0)+5)>>0]=(c[r>>2]|0)>>>8;a[(c[p>>2]|0)+((d[q>>0]|0)+5)+1>>0]=c[r>>2];break}c[m>>2]=kj(53608)|0;f=c[m>>2]|0;i=n;return f|0}else{a[(c[p>>2]|0)+(e[s>>1]|0)>>0]=(e[j>>1]|0)>>8;a[(c[p>>2]|0)+(e[s>>1]|0)+1>>0]=b[j>>1];a[(c[p>>2]|0)+(e[j>>1]|0)>>0]=(e[o>>1]|0)>>8;a[(c[p>>2]|0)+(e[j>>1]|0)+1>>0]=b[o>>1];a[(c[p>>2]|0)+((e[j>>1]|0)+2)>>0]=(e[u>>1]|0)>>8;a[(c[p>>2]|0)+((e[j>>1]|0)+2)+1>>0]=b[u>>1]}while(0);f=(c[t>>2]|0)+16|0;b[f>>1]=(e[f>>1]|0)+(e[l>>1]|0);c[m>>2]=0;f=c[m>>2]|0;i=n;return f|0}function zC(b,f,g,h,j,k,l,m,n){b=b|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;var o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0;o=i;i=i+112|0;r=o+96|0;E=o+92|0;M=o+88|0;K=o+84|0;J=o;L=o+80|0;H=o+76|0;N=o+72|0;C=o+68|0;u=o+64|0;G=o+60|0;I=o+56|0;v=o+52|0;p=o+48|0;w=o+44|0;y=o+40|0;q=o+36|0;x=o+32|0;z=o+28|0;A=o+24|0;F=o+20|0;B=o+16|0;D=o+12|0;s=o+8|0;t=o+100|0;c[E>>2]=b;c[M>>2]=f;c[K>>2]=g;b=J;c[b>>2]=h;c[b+4>>2]=j;c[L>>2]=k;c[H>>2]=l;c[N>>2]=m;c[C>>2]=n;c[y>>2]=0;c[q>>2]=0;c[A>>2]=c[(c[E>>2]|0)+52>>2];c[F>>2]=0;c[B>>2]=d[(c[E>>2]|0)+7>>0];c[u>>2]=(c[H>>2]|0)+(c[N>>2]|0);if(a[(c[E>>2]|0)+3>>0]|0){if((c[u>>2]|0)>>>0<128){a[(c[M>>2]|0)+(c[B>>2]|0)>>0]=c[u>>2];n=1}else{n=c[u>>2]|0;n=oz((c[M>>2]|0)+(c[B>>2]|0)|0,n,((n|0)<0)<<31>>31)|0}c[B>>2]=(c[B>>2]|0)+(n&255)}N=J;N=oz((c[M>>2]|0)+(c[B>>2]|0)|0,c[N>>2]|0,c[N+4>>2]|0)|0;c[B>>2]=(c[B>>2]|0)+N;do if(a[(c[E>>2]|0)+2>>0]|0){c[G>>2]=c[L>>2];c[I>>2]=c[H>>2];c[H>>2]=0}else{N=J;b=c[N+4>>2]|0;if(!((b|0)>0|(b|0)==0&(c[N>>2]|0)>>>0>2147483647|(c[K>>2]|0)==0)){c[u>>2]=c[J>>2];c[G>>2]=c[K>>2];c[I>>2]=c[J>>2];break}c[r>>2]=kj(57891)|0;N=c[r>>2]|0;i=o;return N|0}while(0);if((c[u>>2]|0)<=(e[(c[E>>2]|0)+10>>1]|0)){N=(c[B>>2]|0)+(c[u>>2]|0)|0;c[v>>2]=N;c[v>>2]=(c[v>>2]|0)<4?4:N;c[c[C>>2]>>2]=c[v>>2];c[w>>2]=c[u>>2];c[x>>2]=c[M>>2]}else{c[D>>2]=e[(c[E>>2]|0)+12>>1];c[v>>2]=(c[D>>2]|0)+((((c[u>>2]|0)-(c[D>>2]|0)|0)>>>0)%(((c[(c[(c[E>>2]|0)+52>>2]|0)+36>>2]|0)-4|0)>>>0)|0);if((c[v>>2]|0)>(e[(c[E>>2]|0)+10>>1]|0))c[v>>2]=c[D>>2];c[w>>2]=c[v>>2];c[c[C>>2]>>2]=(c[v>>2]|0)+(c[B>>2]|0)+4;c[x>>2]=(c[M>>2]|0)+((c[B>>2]|0)+(c[v>>2]|0))}c[z>>2]=(c[M>>2]|0)+(c[B>>2]|0);while(1){if((c[u>>2]|0)<=0){s=37;break}if(!(c[w>>2]|0)){c[s>>2]=c[F>>2];if(a[(c[A>>2]|0)+17>>0]|0)while(1){c[F>>2]=(c[F>>2]|0)+1;N=Pw(c[A>>2]|0,c[F>>2]|0)|0;if((N|0)==(c[F>>2]|0))continue;if((c[F>>2]|0)!=((((c[282]|0)>>>0)/((c[(c[A>>2]|0)+32>>2]|0)>>>0)|0)+1|0))break}c[p>>2]=uA(c[A>>2]|0,y,F,c[F>>2]|0,0)|0;if(((c[p>>2]|0)==0?(d[(c[A>>2]|0)+17>>0]|0)!=0:0)?(a[t>>0]=(c[s>>2]|0)!=0?4:3,yA(c[A>>2]|0,c[F>>2]|0,a[t>>0]|0,c[s>>2]|0,p),(c[p>>2]|0)!=0):0)Rk(c[y>>2]|0);if(c[p>>2]|0){s=26;break}ck(c[x>>2]|0,c[F>>2]|0);Rk(c[q>>2]|0);c[q>>2]=c[y>>2];c[x>>2]=c[(c[y>>2]|0)+56>>2];ck(c[x>>2]|0,0);c[z>>2]=(c[(c[y>>2]|0)+56>>2]|0)+4;c[w>>2]=(c[(c[A>>2]|0)+36>>2]|0)-4}c[v>>2]=c[u>>2];if((c[v>>2]|0)>(c[w>>2]|0))c[v>>2]=c[w>>2];if((c[I>>2]|0)>0){if((c[v>>2]|0)>(c[I>>2]|0))c[v>>2]=c[I>>2];dF(c[z>>2]|0,c[G>>2]|0,c[v>>2]|0)|0}else _E(c[z>>2]|0,0,c[v>>2]|0)|0;c[u>>2]=(c[u>>2]|0)-(c[v>>2]|0);c[z>>2]=(c[z>>2]|0)+(c[v>>2]|0);c[G>>2]=(c[G>>2]|0)+(c[v>>2]|0);c[I>>2]=(c[I>>2]|0)-(c[v>>2]|0);c[w>>2]=(c[w>>2]|0)-(c[v>>2]|0);if(c[I>>2]|0)continue;c[I>>2]=c[H>>2];c[G>>2]=c[L>>2]}if((s|0)==26){Rk(c[q>>2]|0);c[r>>2]=c[p>>2];N=c[r>>2]|0;i=o;return N|0}else if((s|0)==37){Rk(c[q>>2]|0);c[r>>2]=0;N=c[r>>2]|0;i=o;return N|0}return 0}function AC(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;i=i+16|0;e=d+8|0;g=d+4|0;f=d;c[e>>2]=a;c[g>>2]=b;c[f>>2]=c[(c[g>>2]|0)+56>>2];if(!(c[f>>2]|0)){i=d;return}Sz(c[e>>2]|0,c[f>>2]|0);hc(c[(c[f>>2]|0)+40>>2]|0);Xb(c[e>>2]|0,c[f>>2]|0);c[(c[g>>2]|0)+56>>2]=0;i=d;return}function BC(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;j=i;i=i+64|0;o=j+44|0;n=j+40|0;u=j+36|0;m=j+32|0;h=j+28|0;k=j+24|0;g=j+20|0;p=j+16|0;l=j+12|0;s=j+8|0;t=j+4|0;q=j+48|0;r=j;c[n>>2]=b;c[u>>2]=e;c[m>>2]=f;c[h>>2]=c[(c[n>>2]|0)+4>>2];f=c[h>>2]|0;if(a[(c[h>>2]|0)+17>>0]|0){sA(f);Sc(c[n>>2]|0,4,g);c[g>>2]=(c[g>>2]|0)+1;while(1){b=c[g>>2]|0;if((b|0)!=(Pw(c[h>>2]|0,c[g>>2]|0)|0)?(c[g>>2]|0)!=((((c[282]|0)>>>0)/((c[(c[h>>2]|0)+32>>2]|0)>>>0)|0)+1|0):0)break;c[g>>2]=(c[g>>2]|0)+1}c[p>>2]=uA(c[h>>2]|0,t,s,c[g>>2]|0,1)|0;if(c[p>>2]|0){c[o>>2]=c[p>>2];b=c[o>>2]|0;i=j;return b|0}if((c[s>>2]|0)!=(c[g>>2]|0)){a[q>>0]=0;c[r>>2]=0;c[p>>2]=Hy(c[h>>2]|0,0,0)|0;Rk(c[t>>2]|0);if(c[p>>2]|0){c[o>>2]=c[p>>2];b=c[o>>2]|0;i=j;return b|0}c[p>>2]=Bw(c[h>>2]|0,c[g>>2]|0,k,0)|0;if(c[p>>2]|0){c[o>>2]=c[p>>2];b=c[o>>2]|0;i=j;return b|0}c[p>>2]=Qw(c[h>>2]|0,c[g>>2]|0,q,r)|0;if(!((d[q>>0]|0)!=1?(d[q>>0]|0)!=2:0))c[p>>2]=kj(59666)|0;if(c[p>>2]|0){Rk(c[k>>2]|0);c[o>>2]=c[p>>2];b=c[o>>2]|0;i=j;return b|0}c[p>>2]=vA(c[h>>2]|0,c[k>>2]|0,a[q>>0]|0,c[r>>2]|0,c[s>>2]|0,0)|0;Rk(c[k>>2]|0);if(c[p>>2]|0){c[o>>2]=c[p>>2];b=c[o>>2]|0;i=j;return b|0}c[p>>2]=Bw(c[h>>2]|0,c[g>>2]|0,k,0)|0;if(c[p>>2]|0){c[o>>2]=c[p>>2];b=c[o>>2]|0;i=j;return b|0}c[p>>2]=gd(c[(c[k>>2]|0)+68>>2]|0)|0;if(c[p>>2]|0){Rk(c[k>>2]|0);c[o>>2]=c[p>>2];b=c[o>>2]|0;i=j;return b|0}}else c[k>>2]=c[t>>2];yA(c[h>>2]|0,c[g>>2]|0,1,0,p);if(c[p>>2]|0){Rk(c[k>>2]|0);c[o>>2]=c[p>>2];b=c[o>>2]|0;i=j;return b|0}c[p>>2]=bd(c[n>>2]|0,4,c[g>>2]|0)|0;if(c[p>>2]|0){Rk(c[k>>2]|0);c[o>>2]=c[p>>2];b=c[o>>2]|0;i=j;return b|0}}else{c[p>>2]=uA(f,k,g,1,0)|0;if(c[p>>2]|0){c[o>>2]=c[p>>2];b=c[o>>2]|0;i=j;return b|0}}if(c[m>>2]&1)c[l>>2]=13;else c[l>>2]=10;wB(c[k>>2]|0,c[l>>2]|0);_c(c[(c[k>>2]|0)+68>>2]|0);c[c[u>>2]>>2]=c[g>>2];c[o>>2]=0;b=c[o>>2]|0;i=j;return b|0}function CC(d,f,g,h,j){d=d|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;p=i;i=i+32|0;l=p+24|0;k=p+20|0;m=p+16|0;r=p+12|0;o=p+8|0;n=p+4|0;q=p;c[k>>2]=d;c[m>>2]=f;c[r>>2]=g;c[o>>2]=h;c[n>>2]=j;c[q>>2]=c[(c[k>>2]|0)+4>>2];if((c[r>>2]|0)!=0?((e[(c[q>>2]|0)+22>>1]|0)&1|0)!=0:0){c[l>>2]=8;d=c[l>>2]|0;i=p;return d|0}if((c[r>>2]|0)!=0?(DC(c[q>>2]|0),(c[(c[q>>2]|0)+80>>2]|0)==0):0){c[l>>2]=7;d=c[l>>2]|0;i=p;return d|0}if((c[m>>2]|0)==1?(Aw(c[q>>2]|0)|0)==0:0)c[m>>2]=0;c[(c[n>>2]|0)+60>>2]=c[m>>2];b[(c[n>>2]|0)+76>>1]=-1;c[(c[n>>2]|0)+16>>2]=c[o>>2];c[c[n>>2]>>2]=c[k>>2];c[(c[n>>2]|0)+4>>2]=c[q>>2];a[(c[n>>2]|0)+72>>0]=c[r>>2];c[(c[n>>2]|0)+8>>2]=c[(c[q>>2]|0)+8>>2];if(c[(c[n>>2]|0)+8>>2]|0)c[(c[(c[n>>2]|0)+8>>2]|0)+12>>2]=c[n>>2];c[(c[q>>2]|0)+8>>2]=c[n>>2];a[(c[n>>2]|0)+73>>0]=0;c[l>>2]=0;d=c[l>>2]|0;i=p;return d|0}function DC(b){b=b|0;var d=0,e=0;d=i;i=i+16|0;e=d;c[e>>2]=b;if(c[(c[e>>2]|0)+80>>2]|0){i=d;return}b=Hg(c[(c[e>>2]|0)+32>>2]|0)|0;c[(c[e>>2]|0)+80>>2]=b;if(!(c[(c[e>>2]|0)+80>>2]|0)){i=d;return}b=c[(c[e>>2]|0)+80>>2]|0;a[b+0>>0]=0;a[b+1>>0]=0;a[b+2>>0]=0;a[b+3>>0]=0;a[b+4>>0]=0;a[b+5>>0]=0;a[b+6>>0]=0;a[b+7>>0]=0;e=(c[e>>2]|0)+80|0;c[e>>2]=(c[e>>2]|0)+4;i=d;return}function EC(){return 200}function FC(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;d=(c[d>>2]|0)+0|0;a=d+76|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(a|0));i=b;return}function GC(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;e=i;i=i+32|0;f=e+24|0;h=e+20|0;l=e+16|0;g=e+12|0;m=e+8|0;k=e+4|0;j=e;c[h>>2]=a;c[l>>2]=b;c[g>>2]=0;c[m>>2]=c[(c[h>>2]|0)+96>>2];a:do if((c[l>>2]|0)>(c[m>>2]|0)?(d[(c[h>>2]|0)+6>>0]|0|0)!=0:0){c[j>>2]=kc(c[(c[h>>2]|0)+92>>2]|0,(c[l>>2]|0)*48|0,0)|0;if(!(c[j>>2]|0)){c[f>>2]=7;a=c[f>>2]|0;i=e;return a|0}_E((c[j>>2]|0)+((c[m>>2]|0)*48|0)|0,0,((c[l>>2]|0)-(c[m>>2]|0)|0)*48|0)|0;c[(c[h>>2]|0)+92>>2]=c[j>>2];c[k>>2]=c[m>>2];while(1){if((c[k>>2]|0)>=(c[l>>2]|0))break a;c[(c[j>>2]|0)+((c[k>>2]|0)*48|0)+20>>2]=c[(c[h>>2]|0)+24>>2];if((c[c[(c[h>>2]|0)+64>>2]>>2]|0)!=0?(a=(c[h>>2]|0)+72|0,m=c[a+4>>2]|0,(m|0)>0|(m|0)==0&(c[a>>2]|0)>>>0>0):0){b=(c[h>>2]|0)+72|0;m=c[b+4>>2]|0;a=(c[j>>2]|0)+((c[k>>2]|0)*48|0)|0;c[a>>2]=c[b>>2];c[a+4>>2]=m}else{a=(c[j>>2]|0)+((c[k>>2]|0)*48|0)|0;c[a>>2]=c[(c[h>>2]|0)+148>>2];c[a+4>>2]=0}c[(c[j>>2]|0)+((c[k>>2]|0)*48|0)+24>>2]=c[(c[h>>2]|0)+52>>2];a=Vg(c[(c[h>>2]|0)+24>>2]|0)|0;c[(c[j>>2]|0)+((c[k>>2]|0)*48|0)+16>>2]=a;if(!(c[(c[j>>2]|0)+((c[k>>2]|0)*48|0)+16>>2]|0))break;if(ai(c[h>>2]|0)|0)HC(c[(c[h>>2]|0)+208>>2]|0,(c[j>>2]|0)+((c[k>>2]|0)*48|0)+28|0);c[(c[h>>2]|0)+96>>2]=(c[k>>2]|0)+1;c[k>>2]=(c[k>>2]|0)+1}c[f>>2]=7;a=c[f>>2]|0;i=e;return a|0}while(0);c[f>>2]=c[g>>2];a=c[f>>2]|0;i=e;return a|0}function HC(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;c[c[e>>2]>>2]=c[(c[f>>2]|0)+68>>2];c[(c[e>>2]|0)+4>>2]=c[(c[f>>2]|0)+76>>2];c[(c[e>>2]|0)+8>>2]=c[(c[f>>2]|0)+80>>2];c[(c[e>>2]|0)+12>>2]=c[(c[f>>2]|0)+104>>2];i=d;return}function IC(f){f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;g=i;i=i+32|0;h=g+16|0;j=g+12|0;l=g+8|0;k=g+4|0;m=g;c[j>>2]=f;if((c[(c[j>>2]|0)+44>>2]|0)>>>0>0){c[h>>2]=0;n=c[h>>2]|0;i=g;return n|0}c[l>>2]=c[(c[j>>2]|0)+12>>2];c[k>>2]=c[(c[l>>2]|0)+56>>2];c[m>>2]=gd(c[(c[l>>2]|0)+68>>2]|0)|0;if(c[m>>2]|0){c[h>>2]=c[m>>2];n=c[h>>2]|0;i=g;return n|0}else{n=(c[k>>2]|0)+0|0;m=34408|0;f=n+16|0;do{a[n>>0]=a[m>>0]|0;n=n+1|0;m=m+1|0}while((n|0)<(f|0));a[(c[k>>2]|0)+16>>0]=(c[(c[j>>2]|0)+32>>2]|0)>>>8;a[(c[k>>2]|0)+17>>0]=(c[(c[j>>2]|0)+32>>2]|0)>>>16;a[(c[k>>2]|0)+18>>0]=1;a[(c[k>>2]|0)+19>>0]=1;a[(c[k>>2]|0)+20>>0]=(c[(c[j>>2]|0)+32>>2]|0)-(c[(c[j>>2]|0)+36>>2]|0);a[(c[k>>2]|0)+21>>0]=64;a[(c[k>>2]|0)+22>>0]=32;a[(c[k>>2]|0)+23>>0]=32;n=(c[k>>2]|0)+24|0;f=n+76|0;do{a[n>>0]=0;n=n+1|0}while((n|0)<(f|0));wB(c[l>>2]|0,13);n=(c[j>>2]|0)+22|0;b[n>>1]=e[n>>1]|0|2;ck((c[k>>2]|0)+52|0,d[(c[j>>2]|0)+17>>0]|0);ck((c[k>>2]|0)+64|0,d[(c[j>>2]|0)+18>>0]|0);c[(c[j>>2]|0)+44>>2]=1;a[(c[k>>2]|0)+31>>0]=1;c[h>>2]=0;n=c[h>>2]|0;i=g;return n|0}return 0}function JC(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;h=i;i=i+48|0;l=h+24|0;g=h+20|0;k=h;j=h+16|0;n=h+12|0;m=h+8|0;o=h+28|0;c[g>>2]=b;b=k;c[b>>2]=e;c[b+4>>2]=f;if(0!=0?1:(c[k+4>>2]&-16777216|0)!=0){a[(c[g>>2]|0)+8>>0]=c[k>>2];e=k;e=cF(c[e>>2]|0,c[e+4>>2]|0,8)|0;b=k;c[b>>2]=e;c[b+4>>2]=D;c[j>>2]=7;while(1){if((c[j>>2]|0)<0)break;a[(c[g>>2]|0)+(c[j>>2]|0)>>0]=c[k>>2]&127|128;e=k;e=cF(c[e>>2]|0,c[e+4>>2]|0,7)|0;b=k;c[b>>2]=e;c[b+4>>2]=D;c[j>>2]=(c[j>>2]|0)+ -1}c[l>>2]=9;b=c[l>>2]|0;i=h;return b|0}c[m>>2]=0;do{b=(c[k>>2]&127|128)&255;e=c[m>>2]|0;c[m>>2]=e+1;a[o+e>>0]=b;e=k;e=cF(c[e>>2]|0,c[e+4>>2]|0,7)|0;b=k;c[b>>2]=e;c[b+4>>2]=D;b=k}while((c[b>>2]|0)!=0|(c[b+4>>2]|0)!=0);a[o>>0]=(d[o>>0]|0)&127;c[j>>2]=0;c[n>>2]=(c[m>>2]|0)-1;while(1){if((c[n>>2]|0)<0)break;a[(c[g>>2]|0)+(c[j>>2]|0)>>0]=a[o+(c[n>>2]|0)>>0]|0;c[n>>2]=(c[n>>2]|0)+ -1;c[j>>2]=(c[j>>2]|0)+1}c[l>>2]=c[m>>2];b=c[l>>2]|0;i=h;return b|0}function KC(a,b){a=a|0;b=b|0;var d=0,f=0,g=0;f=i;i=i+16|0;d=f+4|0;g=f;c[d>>2]=a;c[g>>2]=b;c[c[g>>2]>>2]=e[(c[d>>2]|0)+40>>1];i=f;return c[(c[d>>2]|0)+32>>2]|0}function LC(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;d=i;i=i+16|0;e=d+12|0;g=d+8|0;h=d+4|0;f=d;c[g>>2]=b;b=(c[g>>2]|0)+48|0;c[f>>2]=Gw(c[c[g>>2]>>2]|0,0,c[b>>2]|0,c[b+4>>2]|0,0,h)|0;if(c[f>>2]|0){c[e>>2]=c[f>>2];h=c[e>>2]|0;i=d;return h|0}if(c[h>>2]|0){c[e>>2]=kj(65954)|0;h=c[e>>2]|0;i=d;return h|0}else{a[(c[g>>2]|0)+26>>0]=0;c[(c[g>>2]|0)+60>>2]=0;c[e>>2]=0;h=c[e>>2]|0;i=d;return h|0}return 0}function MC(d){d=d|0;var e=0,f=0,g=0;e=i;i=i+16|0;f=e+4|0;g=e;c[g>>2]=d;if(!(Lm(c[(c[g>>2]|0)+16>>2]|0,c[g>>2]|0,c[(c[g>>2]|0)+12>>2]|0,a[(c[g>>2]|0)+10>>0]|0)|0)){b[f>>1]=0;g=b[f>>1]|0;i=e;return g|0}if(!(wg(c[(c[g>>2]|0)+16>>2]|0,c[g>>2]|0,c[(c[g>>2]|0)+12>>2]|0,a[(c[g>>2]|0)+10>>0]|0)|0)){b[f>>1]=4;g=b[f>>1]|0;i=e;return g|0}else{b[f>>1]=8;g=b[f>>1]|0;i=e;return g|0}return 0}function NC(d){d=d|0;var f=0,g=0,h=0;f=i;i=i+16|0;g=f+4|0;h=f;c[h>>2]=d;if(Dk(c[h>>2]|0,(c[(c[h>>2]|0)+12>>2]|0)+2|0,1)|0){c[g>>2]=7;h=c[g>>2]|0;i=f;return h|0}else{a[(c[(c[h>>2]|0)+16>>2]|0)+(c[(c[h>>2]|0)+12>>2]|0)>>0]=0;a[(c[(c[h>>2]|0)+16>>2]|0)+((c[(c[h>>2]|0)+12>>2]|0)+1)>>0]=0;h=(c[h>>2]|0)+8|0;b[h>>1]=e[h>>1]|0|512;c[g>>2]=0;h=c[g>>2]|0;i=f;return h|0}return 0}function OC(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;e=i;i=i+32|0;b=e+16|0;h=e+12|0;g=e+8|0;f=e+4|0;d=e;c[b>>2]=a;if(c[(c[b>>2]|0)+176>>2]|0){c[h>>2]=c[(c[b>>2]|0)+176>>2];while(1){a=c[h>>2]|0;if(!(c[(c[h>>2]|0)+4>>2]|0))break;c[h>>2]=c[a+4>>2]}_y(a)|0;c[(c[b>>2]|0)+176>>2]=0;c[(c[b>>2]|0)+184>>2]=0}a:do if(c[(c[b>>2]|0)+56>>2]|0){c[g>>2]=0;while(1){if((c[g>>2]|0)>=(c[(c[b>>2]|0)+36>>2]|0))break a;c[f>>2]=c[(c[(c[b>>2]|0)+56>>2]|0)+(c[g>>2]<<2)>>2];if(c[f>>2]|0){Az(c[b>>2]|0,c[f>>2]|0);c[(c[(c[b>>2]|0)+56>>2]|0)+(c[g>>2]<<2)>>2]=0}c[g>>2]=(c[g>>2]|0)+1}}while(0);if(c[(c[b>>2]|0)+8>>2]|0)hu((c[(c[b>>2]|0)+8>>2]|0)+40|0,c[(c[b>>2]|0)+28>>2]|0);while(1){f=c[b>>2]|0;if(!(c[(c[b>>2]|0)+180>>2]|0))break;c[d>>2]=c[f+180>>2];c[(c[b>>2]|0)+180>>2]=c[(c[d>>2]|0)+4>>2];WC(c[d>>2]|0)}if(!(c[f+204>>2]|0)){i=e;return}hz(c[b>>2]|0,-1,0);i=e;return}function PC(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,E=0,F=0;g=i;i=i+112|0;x=g+8|0;f=g+104|0;h=g+100|0;F=g+96|0;j=g+92|0;B=g+88|0;s=g+84|0;C=g+80|0;E=g+76|0;l=g+72|0;k=g+68|0;o=g+64|0;q=g+60|0;m=g+56|0;A=g+52|0;n=g+48|0;d=g;y=g+44|0;u=g+40|0;w=g+36|0;v=g+32|0;t=g+28|0;r=g+24|0;p=g+20|0;z=g+16|0;c[h>>2]=a;c[F>>2]=b;c[B>>2]=0;c[s>>2]=0;c[C>>2]=0;c[s>>2]=QC(c[h>>2]|0,c[F>>2]|0)|0;c[j>>2]=0;while(1){if(c[s>>2]|0)break;if((c[j>>2]|0)>=(c[(c[h>>2]|0)+20>>2]|0))break;c[E>>2]=c[(c[(c[h>>2]|0)+16>>2]|0)+(c[j>>2]<<4)+4>>2];if(Tk(c[E>>2]|0)|0){c[C>>2]=1;if((c[j>>2]|0)!=1)c[B>>2]=(c[B>>2]|0)+1;Pc(c[E>>2]|0);c[s>>2]=dk(Sb(c[E>>2]|0)|0)|0}c[j>>2]=(c[j>>2]|0)+1}if(c[s>>2]|0){c[f>>2]=c[s>>2];F=c[f>>2]|0;i=g;return F|0}if(((c[C>>2]|0)!=0?(c[(c[h>>2]|0)+192>>2]|0)!=0:0)?(c[s>>2]=ub[c[(c[h>>2]|0)+192>>2]&31](c[(c[h>>2]|0)+188>>2]|0)|0,(c[s>>2]|0)!=0):0){c[f>>2]=531;F=c[f>>2]|0;i=g;return F|0}F=0==(Mb(sg(c[(c[(c[h>>2]|0)+16>>2]|0)+4>>2]|0)|0)|0);if(F|(c[B>>2]|0)<=1){c[j>>2]=0;while(1){if(c[s>>2]|0)break;if((c[j>>2]|0)>=(c[(c[h>>2]|0)+20>>2]|0))break;c[l>>2]=c[(c[(c[h>>2]|0)+16>>2]|0)+(c[j>>2]<<4)+4>>2];if(c[l>>2]|0)c[s>>2]=nd(c[l>>2]|0,0)|0;c[j>>2]=(c[j>>2]|0)+1}c[j>>2]=0;while(1){if(c[s>>2]|0)break;if((c[j>>2]|0)>=(c[(c[h>>2]|0)+20>>2]|0))break;c[k>>2]=c[(c[(c[h>>2]|0)+16>>2]|0)+(c[j>>2]<<4)+4>>2];if(c[k>>2]|0)c[s>>2]=md(c[k>>2]|0,0)|0;c[j>>2]=(c[j>>2]|0)+1}if(!(c[s>>2]|0))RC(c[h>>2]|0)|0}else{c[o>>2]=c[c[h>>2]>>2];c[q>>2]=0;c[m>>2]=0;c[A>>2]=sg(c[(c[(c[h>>2]|0)+16>>2]|0)+4>>2]|0)|0;c[n>>2]=0;F=d;c[F>>2]=0;c[F+4>>2]=0;c[u>>2]=0;c[w>>2]=Mb(c[A>>2]|0)|0;F=c[h>>2]|0;c[x>>2]=c[A>>2];c[m>>2]=Te(F,34424,x)|0;if(!(c[m>>2]|0)){c[f>>2]=7;F=c[f>>2]|0;i=g;return F|0}do{if(c[u>>2]|0){if((c[u>>2]|0)>100){e=34;break}if((c[u>>2]|0)==1){c[x>>2]=c[m>>2];tc(13,34456,x)}}c[u>>2]=(c[u>>2]|0)+1;vc(4,v);F=(c[m>>2]|0)+(c[w>>2]|0)|0;a=c[v>>2]&255;c[x>>2]=(c[v>>2]|0)>>>8&16777215;c[x+4>>2]=a;sc(13,F,34472,x)|0;c[s>>2]=vi(c[o>>2]|0,c[m>>2]|0,0,y)|0}while((c[s>>2]|0)==0&(c[y>>2]|0)!=0);if((e|0)==34){c[x>>2]=c[m>>2];tc(13,34440,x);_h(c[o>>2]|0,c[m>>2]|0,0)|0}if(!(c[s>>2]|0))c[s>>2]=PB(c[o>>2]|0,c[m>>2]|0,n,16406,0)|0;if(c[s>>2]|0){Xb(c[h>>2]|0,c[m>>2]|0);c[f>>2]=c[s>>2];F=c[f>>2]|0;i=g;return F|0}c[j>>2]=0;while(1){if((c[j>>2]|0)>=(c[(c[h>>2]|0)+20>>2]|0))break;c[t>>2]=c[(c[(c[h>>2]|0)+16>>2]|0)+(c[j>>2]<<4)+4>>2];if((Tk(c[t>>2]|0)|0)!=0?(c[r>>2]=SC(c[t>>2]|0)|0,(c[r>>2]|0)!=0):0){if((c[q>>2]|0)==0?(TC(c[t>>2]|0)|0)==0:0)c[q>>2]=1;E=c[n>>2]|0;b=c[r>>2]|0;F=(Mb(c[r>>2]|0)|0)+1|0;a=d;c[s>>2]=id(E,b,F,c[a>>2]|0,c[a+4>>2]|0)|0;a=(Mb(c[r>>2]|0)|0)+1|0;F=d;a=bF(c[F>>2]|0,c[F+4>>2]|0,a|0,((a|0)<0)<<31>>31|0)|0;F=d;c[F>>2]=a;c[F+4>>2]=D;if(c[s>>2]|0){e=50;break}}c[j>>2]=(c[j>>2]|0)+1}if((e|0)==50){pB(c[n>>2]|0)|0;_h(c[o>>2]|0,c[m>>2]|0,0)|0;Xb(c[h>>2]|0,c[m>>2]|0);c[f>>2]=c[s>>2];F=c[f>>2]|0;i=g;return F|0}if(((c[q>>2]|0)!=0?0==((Ai(c[n>>2]|0)|0)&1024|0):0)?(F=Yh(c[n>>2]|0,2)|0,c[s>>2]=F,0!=(F|0)):0){pB(c[n>>2]|0)|0;_h(c[o>>2]|0,c[m>>2]|0,0)|0;Xb(c[h>>2]|0,c[m>>2]|0);c[f>>2]=c[s>>2];F=c[f>>2]|0;i=g;return F|0}c[j>>2]=0;while(1){if(c[s>>2]|0)break;if((c[j>>2]|0)>=(c[(c[h>>2]|0)+20>>2]|0))break;c[p>>2]=c[(c[(c[h>>2]|0)+16>>2]|0)+(c[j>>2]<<4)+4>>2];if(c[p>>2]|0)c[s>>2]=nd(c[p>>2]|0,c[m>>2]|0)|0;c[j>>2]=(c[j>>2]|0)+1}pB(c[n>>2]|0)|0;if(c[s>>2]|0){Xb(c[h>>2]|0,c[m>>2]|0);c[f>>2]=c[s>>2];F=c[f>>2]|0;i=g;return F|0}c[s>>2]=_h(c[o>>2]|0,c[m>>2]|0,1)|0;Xb(c[h>>2]|0,c[m>>2]|0);c[m>>2]=0;if(c[s>>2]|0){c[f>>2]=c[s>>2];F=c[f>>2]|0;i=g;return F|0}kh();c[j>>2]=0;while(1){if((c[j>>2]|0)>=(c[(c[h>>2]|0)+20>>2]|0))break;c[z>>2]=c[(c[(c[h>>2]|0)+16>>2]|0)+(c[j>>2]<<4)+4>>2];if(c[z>>2]|0)md(c[z>>2]|0,1)|0;c[j>>2]=(c[j>>2]|0)+1}lh();RC(c[h>>2]|0)|0}c[f>>2]=c[s>>2];F=c[f>>2]|0;i=g;return F|0}function QC(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;e=i;i=i+32|0;d=e+24|0;k=e+20|0;l=e+16|0;f=e+12|0;g=e+8|0;h=e+4|0;j=e;c[d>>2]=a;c[k>>2]=b;c[f>>2]=0;c[g>>2]=c[(c[d>>2]|0)+328>>2];c[(c[d>>2]|0)+328>>2]=0;c[l>>2]=0;while(1){if(c[f>>2]|0){h=8;break}if((c[l>>2]|0)>=(c[(c[d>>2]|0)+304>>2]|0)){h=8;break}c[j>>2]=c[(c[(c[g>>2]|0)+(c[l>>2]<<2)>>2]|0)+8>>2];if((c[j>>2]|0)!=0?(a=c[(c[c[j>>2]>>2]|0)+60>>2]|0,c[h>>2]=a,(a|0)!=0):0){c[f>>2]=ub[c[h>>2]&31](c[j>>2]|0)|0;Hz(c[k>>2]|0,c[j>>2]|0)}c[l>>2]=(c[l>>2]|0)+1}if((h|0)==8){c[(c[d>>2]|0)+328>>2]=c[g>>2];i=e;return c[f>>2]|0}return 0}function RC(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;Vk(c[d>>2]|0,64);i=b;return 0}function SC(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;a=VC(c[c[(c[d>>2]|0)+4>>2]>>2]|0)|0;i=b;return a|0}function TC(a){a=a|0;var b=0,d=0,e=0,f=0;d=i;i=i+16|0;f=d+8|0;e=d+4|0;b=d;c[f>>2]=a;c[e>>2]=c[(c[f>>2]|0)+4>>2];Pc(c[f>>2]|0);c[b>>2]=UC(c[c[e>>2]>>2]|0)|0;i=d;return c[b>>2]|0}function UC(a){a=a|0;var b=0,e=0;e=i;i=i+16|0;b=e;c[b>>2]=a;i=e;return d[(c[b>>2]|0)+7>>0]|0|0}function VC(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;i=d;return c[(c[b>>2]|0)+172>>2]|0}function WC(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;e=i;i=i+16|0;d=e+12|0;f=e+8|0;b=e+4|0;g=e;c[d>>2]=a;c[b>>2]=(c[d>>2]|0)+72;c[g>>2]=(c[b>>2]|0)+((c[(c[d>>2]|0)+60>>2]|0)*40|0);c[f>>2]=0;while(1){if((c[f>>2]|0)>=(c[(c[d>>2]|0)+64>>2]|0))break;Az(c[c[d>>2]>>2]|0,c[(c[g>>2]|0)+(c[f>>2]<<2)>>2]|0);c[f>>2]=(c[f>>2]|0)+1}hu(c[b>>2]|0,c[(c[d>>2]|0)+60>>2]|0);Xb(c[c[c[d>>2]>>2]>>2]|0,c[d>>2]|0);i=e;return}function XC(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;i=d;return c[34600+(c[b>>2]<<2)>>2]|0}function YC(d,f,g){d=d|0;f=f|0;g=g|0;var j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;n=i;i=i+64|0;v=n;z=n+60|0;l=n+56|0;m=n+52|0;j=n+48|0;u=n+44|0;s=n+40|0;o=n+36|0;q=n+32|0;t=n+28|0;r=n+24|0;y=n+20|0;A=n+16|0;w=n+12|0;x=n+8|0;c[z>>2]=d;c[l>>2]=f;c[m>>2]=g;c[j>>2]=c[l>>2];do switch(a[(c[z>>2]|0)+1>>0]|0){case-10:{c[x>>2]=c[(c[(c[z>>2]|0)+16>>2]|0)+8>>2];f=c[m>>2]|0;d=c[l>>2]|0;A=c[c[x>>2]>>2]|0;c[v>>2]=c[x>>2];c[v+4>>2]=A;sc(f,d,34560,v)|0;d=c[j>>2]|0;i=n;return d|0};case-5:{c[A>>2]=c[(c[z>>2]|0)+16>>2];f=c[m>>2]|0;d=c[l>>2]|0;z=b[c[A>>2]>>1]|0;c[v>>2]=c[(c[A>>2]|0)+24>>2];c[v+4>>2]=z;sc(f,d,34536,v)|0;d=c[j>>2]|0;i=n;return d|0};case-19:{a[c[l>>2]>>0]=0;d=c[j>>2]|0;i=n;return d|0};case-4:{c[y>>2]=c[(c[z>>2]|0)+16>>2];f=c[m>>2]|0;d=c[l>>2]|0;c[v>>2]=c[c[y>>2]>>2];sc(f,d,34528,v)|0;d=c[j>>2]|0;i=n;return d|0};case-13:{f=c[m>>2]|0;d=c[l>>2]|0;y=c[(c[z>>2]|0)+16>>2]|0;z=c[y+4>>2]|0;A=v;c[A>>2]=c[y>>2];c[A+4>>2]=z;sc(f,d,9456,v)|0;d=c[j>>2]|0;i=n;return d|0};case-6:{c[o>>2]=c[(c[z>>2]|0)+16>>2];f=c[m>>2]|0;d=c[l>>2]|0;c[v>>2]=e[(c[o>>2]|0)+6>>1];sc(f,d,34496,v)|0;c[u>>2]=Mb(c[l>>2]|0)|0;c[s>>2]=0;while(1){if((c[s>>2]|0)>=(e[(c[o>>2]|0)+6>>1]|0))break;c[q>>2]=c[(c[o>>2]|0)+20+(c[s>>2]<<2)>>2];if(c[q>>2]|0)v=c[c[q>>2]>>2]|0;else v=34504;c[t>>2]=v;c[r>>2]=Mb(c[t>>2]|0)|0;if((c[r>>2]|0)==6?(TE(c[t>>2]|0,3320,6)|0)==0:0){c[t>>2]=34512;c[r>>2]=1}v=c[u>>2]|0;if(((c[u>>2]|0)+(c[r>>2]|0)|0)>((c[m>>2]|0)-6|0)){p=10;break}c[u>>2]=v+1;a[(c[l>>2]|0)+v>>0]=44;if(a[(c[(c[o>>2]|0)+16>>2]|0)+(c[s>>2]|0)>>0]|0){d=c[u>>2]|0;c[u>>2]=d+1;a[(c[l>>2]|0)+d>>0]=45}dF((c[l>>2]|0)+(c[u>>2]|0)|0,c[t>>2]|0,(c[r>>2]|0)+1|0)|0;c[u>>2]=(c[u>>2]|0)+(c[r>>2]|0);c[s>>2]=(c[s>>2]|0)+1}if((p|0)==10){d=(c[l>>2]|0)+v|0;a[d+0>>0]=a[34520]|0;a[d+1>>0]=a[34521]|0;a[d+2>>0]=a[34522]|0;a[d+3>>0]=a[34523]|0}d=c[u>>2]|0;c[u>>2]=d+1;a[(c[l>>2]|0)+d>>0]=41;a[(c[l>>2]|0)+(c[u>>2]|0)>>0]=0;d=c[j>>2]|0;i=n;return d|0};case-8:{c[w>>2]=c[(c[z>>2]|0)+16>>2];o=c[w>>2]|0;if(e[(c[w>>2]|0)+8>>1]&2){c[j>>2]=c[o+16>>2];d=c[j>>2]|0;i=n;return d|0}if(e[o+8>>1]&4){f=c[m>>2]|0;d=c[l>>2]|0;y=c[w>>2]|0;z=c[y+4>>2]|0;A=v;c[A>>2]=c[y>>2];c[A+4>>2]=z;sc(f,d,9456,v)|0;d=c[j>>2]|0;i=n;return d|0}if(e[(c[w>>2]|0)+8>>1]&8){f=c[m>>2]|0;d=c[l>>2]|0;h[k>>3]=+h[c[w>>2]>>3];c[v>>2]=c[k>>2];c[v+4>>2]=c[k+4>>2];sc(f,d,9448,v)|0;d=c[j>>2]|0;i=n;return d|0}if(e[(c[w>>2]|0)+8>>1]&1){sc(c[m>>2]|0,c[l>>2]|0,9840,v)|0;d=c[j>>2]|0;i=n;return d|0}else{c[j>>2]=34552;d=c[j>>2]|0;i=n;return d|0}};case-14:{f=c[m>>2]|0;d=c[l>>2]|0;c[v>>2]=c[(c[z>>2]|0)+16>>2];sc(f,d,34544,v)|0;d=c[j>>2]|0;i=n;return d|0};case-18:{sc(c[m>>2]|0,c[l>>2]|0,34592,v)|0;d=c[j>>2]|0;i=n;return d|0};case-12:{f=c[m>>2]|0;d=c[l>>2]|0;h[k>>3]=+h[c[(c[z>>2]|0)+16>>2]>>3];c[v>>2]=c[k>>2];c[v+4>>2]=c[k+4>>2];sc(f,d,9448,v)|0;d=c[j>>2]|0;i=n;return d|0};case-15:{sc(c[m>>2]|0,c[l>>2]|0,34576,v)|0;d=c[j>>2]|0;i=n;return d|0};default:{c[j>>2]=c[(c[z>>2]|0)+16>>2];if(c[j>>2]|0){d=c[j>>2]|0;i=n;return d|0}c[j>>2]=c[l>>2];a[c[l>>2]>>0]=0;d=c[j>>2]|0;i=n;return d|0}}while(0);return 0}function ZC(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=i;i=i+16|0;g=f+8|0;h=f;c[g>>2]=a;a=h;c[a>>2]=d;c[a+4>>2]=e;_d(c[g>>2]|0);e=h;d=c[e+4>>2]|0;a=c[g>>2]|0;c[a>>2]=c[e>>2];c[a+4>>2]=d;b[(c[g>>2]|0)+8>>1]=4;i=f;return}function _C(f){f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;h=i;i=i+16|0;j=h+4|0;g=h;k=h+10|0;l=h+9|0;m=h+8|0;c[j>>2]=f;c[g>>2]=0;a[k>>0]=0;if((c[(c[j>>2]|0)+12>>2]|0)>1){a[l>>0]=a[c[(c[j>>2]|0)+16>>2]>>0]|0;a[m>>0]=a[(c[(c[j>>2]|0)+16>>2]|0)+1>>0]|0;if((d[l>>0]|0)==254?(d[m>>0]|0)==255:0)a[k>>0]=3;if((d[l>>0]|0)==255?(d[m>>0]|0)==254:0)a[k>>0]=2}if(!(a[k>>0]|0)){m=c[g>>2]|0;i=h;return m|0}c[g>>2]=Ak(c[j>>2]|0)|0;if(c[g>>2]|0){m=c[g>>2]|0;i=h;return m|0}m=(c[j>>2]|0)+12|0;c[m>>2]=(c[m>>2]|0)-2;eF(c[(c[j>>2]|0)+16>>2]|0,(c[(c[j>>2]|0)+16>>2]|0)+2|0,c[(c[j>>2]|0)+12>>2]|0)|0;a[(c[(c[j>>2]|0)+16>>2]|0)+(c[(c[j>>2]|0)+12>>2]|0)>>0]=0;a[(c[(c[j>>2]|0)+16>>2]|0)+((c[(c[j>>2]|0)+12>>2]|0)+1)>>0]=0;m=(c[j>>2]|0)+8|0;b[m>>1]=e[m>>1]|512;a[(c[j>>2]|0)+10>>0]=a[k>>0]|0;m=c[g>>2]|0;i=h;return m|0}function $C(f,g){f=f|0;g=g|0;var h=0,j=0,k=0,l=0;j=i;i=i+16|0;h=j+4|0;k=j;l=j+8|0;c[k>>2]=f;a[l>>0]=g;g=c[k>>2]|0;if((e[(c[k>>2]|0)+8>>1]|0)&18){f=g+8|0;b[f>>1]=e[f>>1]|0|2;if((e[(c[k>>2]|0)+8>>1]|0)&16384)Dd(c[k>>2]|0)|0;if((d[(c[k>>2]|0)+10>>0]|0|0)!=((d[l>>0]|0)&-9|0))yk(c[k>>2]|0,(d[l>>0]|0)&-9)|0;if((((d[l>>0]|0)&8|0)!=0?1==(1&c[(c[k>>2]|0)+16>>2]|0):0)?(Ak(c[k>>2]|0)|0)!=0:0){c[h>>2]=0;f=c[h>>2]|0;i=j;return f|0}dz(c[k>>2]|0)|0}else Kp(g,a[l>>0]|0,0)|0;if((d[(c[k>>2]|0)+10>>0]|0|0)==((d[l>>0]|0)&-9|0)){c[h>>2]=c[(c[k>>2]|0)+16>>2];f=c[h>>2]|0;i=j;return f|0}else{c[h>>2]=0;f=c[h>>2]|0;i=j;return f|0}return 0}function aD(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;if((e[(c[b>>2]|0)+8>>1]|0)&9312)gn(c[b>>2]|0);if(!(c[(c[b>>2]|0)+24>>2]|0)){b=c[b>>2]|0;b=b+16|0;c[b>>2]=0;i=d;return}Xb(c[(c[b>>2]|0)+32>>2]|0,c[(c[b>>2]|0)+20>>2]|0);c[(c[b>>2]|0)+24>>2]=0;b=c[b>>2]|0;b=b+16|0;c[b>>2]=0;i=d;return}function bD(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+16|0;d=b+4|0;e=b;c[d>>2]=a;c[e>>2]=c[c[d>>2]>>2];Xb(c[e>>2]|0,c[(c[d>>2]|0)+44>>2]|0);c[(c[d>>2]|0)+44>>2]=0;c[(c[d>>2]|0)+20>>2]=0;i=b;return}function cD(b){b=b|0;var d=0,e=0;d=i;i=i+16|0;e=d;c[e>>2]=b;a[(c[e>>2]|0)+64>>0]=0;Nc(c[e>>2]|0,7);i=d;return 7}function dD(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;f=i;i=i+16|0;h=f+12|0;g=f+8|0;k=f+4|0;j=f;c[h>>2]=b;c[g>>2]=d;c[k>>2]=e;if(!(c[g>>2]|0)){d=c[h>>2]|0;b=c[g>>2]|0;Xb(d,b);i=f;return}c[j>>2]=c[g>>2];while(1){if((c[j>>2]|0)>>>0>=((c[g>>2]|0)+((c[k>>2]|0)*20|0)|0)>>>0)break;Oy(c[h>>2]|0,a[(c[j>>2]|0)+1>>0]|0,c[(c[j>>2]|0)+16>>2]|0);c[j>>2]=(c[j>>2]|0)+20}d=c[h>>2]|0;b=c[g>>2]|0;Xb(d,b);i=f;return}function eD(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;_g(c[(c[d>>2]|0)+60>>2]|0);c[(c[d>>2]|0)+60>>2]=0;i=b;return}function fD(b){b=b|0;var e=0,f=0,g=0,h=0;e=i;i=i+16|0;f=e+8|0;g=e+4|0;h=e;c[f>>2]=b;c[g>>2]=c[(c[f>>2]|0)+4>>2];c[h>>2]=c[c[f>>2]>>2];a[(c[g>>2]|0)+19>>0]=0;if((d[(c[f>>2]|0)+8>>0]|0|0)>0?(c[(c[h>>2]|0)+152>>2]|0)>1:0){gD(c[f>>2]|0);a[(c[f>>2]|0)+8>>0]=1;i=e;return}if((d[(c[f>>2]|0)+8>>0]|0|0)!=0?(hD(c[f>>2]|0),h=(c[g>>2]|0)+40|0,c[h>>2]=(c[h>>2]|0)+ -1,0==(c[(c[g>>2]|0)+40>>2]|0)):0)a[(c[g>>2]|0)+20>>0]=0;a[(c[f>>2]|0)+8>>0]=0;Sk(c[g>>2]|0);i=e;return}function gD(d){d=d|0;var f=0,g=0,h=0,j=0;f=i;i=i+16|0;j=f+8|0;h=f+4|0;g=f;c[j>>2]=d;c[h>>2]=c[(c[j>>2]|0)+4>>2];if((c[(c[h>>2]|0)+76>>2]|0)!=(c[j>>2]|0)){i=f;return}c[(c[h>>2]|0)+76>>2]=0;j=(c[h>>2]|0)+22|0;b[j>>1]=(e[j>>1]|0)&-97;c[g>>2]=c[(c[h>>2]|0)+72>>2];while(1){if(!(c[g>>2]|0))break;a[(c[g>>2]|0)+8>>0]=1;c[g>>2]=c[(c[g>>2]|0)+12>>2]}i=f;return}function hD(a){a=a|0;var d=0,f=0,g=0,h=0,j=0;f=i;i=i+16|0;g=f+12|0;d=f+8|0;h=f+4|0;j=f;c[g>>2]=a;c[d>>2]=c[(c[g>>2]|0)+4>>2];c[h>>2]=(c[d>>2]|0)+72;while(1){if(!(c[c[h>>2]>>2]|0))break;c[j>>2]=c[c[h>>2]>>2];a=(c[j>>2]|0)+12|0;if((c[c[j>>2]>>2]|0)!=(c[g>>2]|0)){c[h>>2]=a;continue}c[c[h>>2]>>2]=c[a>>2];if((c[(c[j>>2]|0)+4>>2]|0)==1)continue;hc(c[j>>2]|0)}h=c[d>>2]|0;if((c[(c[d>>2]|0)+76>>2]|0)==(c[g>>2]|0)){c[h+76>>2]=0;a=(c[d>>2]|0)+22|0;b[a>>1]=(e[a>>1]|0)&-97;i=f;return}if((c[h+40>>2]|0)!=2){i=f;return}a=(c[d>>2]|0)+22|0;b[a>>1]=(e[a>>1]|0)&-65;i=f;return}function iD(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;e=i;i=i+32|0;d=e+28|0;h=e+24|0;f=e+20|0;g=e+16|0;j=e+12|0;k=e+8|0;l=e+4|0;m=e;c[h>>2]=b;c[f>>2]=0;c[g>>2]=c[c[h>>2]>>2];sA(c[h>>2]|0);do if(!(a[(c[h>>2]|0)+18>>0]|0)){c[m>>2]=Aw(c[h>>2]|0)|0;b=Pw(c[h>>2]|0,c[m>>2]|0)|0;if((b|0)!=(c[m>>2]|0)?(c[m>>2]|0)!=((((c[282]|0)>>>0)/((c[(c[h>>2]|0)+32>>2]|0)>>>0)|0)+1|0):0){c[k>>2]=Hh((c[(c[(c[h>>2]|0)+12>>2]|0)+56>>2]|0)+36|0)|0;c[j>>2]=rA(c[h>>2]|0,c[m>>2]|0,c[k>>2]|0)|0;if((c[j>>2]|0)>>>0>(c[m>>2]|0)>>>0){c[d>>2]=kj(55475)|0;m=c[d>>2]|0;i=e;return m|0}if((c[j>>2]|0)>>>0<(c[m>>2]|0)>>>0)c[f>>2]=Hy(c[h>>2]|0,0,0)|0;c[l>>2]=c[m>>2];while(1){if(!((c[f>>2]|0)==0?(c[l>>2]|0)>>>0>(c[j>>2]|0)>>>0:0))break;c[f>>2]=tA(c[h>>2]|0,c[j>>2]|0,c[l>>2]|0,1)|0;c[l>>2]=(c[l>>2]|0)+ -1}if(((c[f>>2]|0)==101|(c[f>>2]|0)==0)&(c[k>>2]|0)>>>0>0){c[f>>2]=gd(c[(c[(c[h>>2]|0)+12>>2]|0)+68>>2]|0)|0;ck((c[(c[(c[h>>2]|0)+12>>2]|0)+56>>2]|0)+32|0,0);ck((c[(c[(c[h>>2]|0)+12>>2]|0)+56>>2]|0)+36|0,0);ck((c[(c[(c[h>>2]|0)+12>>2]|0)+56>>2]|0)+28|0,c[j>>2]|0);a[(c[h>>2]|0)+19>>0]=1;c[(c[h>>2]|0)+44>>2]=c[j>>2]}if(!(c[f>>2]|0))break;Th(c[g>>2]|0)|0;break}c[d>>2]=kj(55470)|0;m=c[d>>2]|0;i=e;return m|0}while(0);c[d>>2]=c[f>>2];m=c[d>>2]|0;i=e;return m|0}function jD(b){b=b|0;var e=0,f=0,g=0,h=0;e=i;i=i+16|0;f=e+8|0;g=e+4|0;h=e;c[g>>2]=b;c[h>>2]=0;b=c[g>>2]|0;if(c[(c[g>>2]|0)+40>>2]|0){c[f>>2]=c[b+40>>2];b=c[f>>2]|0;i=e;return b|0}if(((d[b+16>>0]|0|0)==2?(d[(c[g>>2]|0)+4>>0]|0|0)!=0:0)?(d[(c[g>>2]|0)+5>>0]|0|0)==1:0){a[(c[g>>2]|0)+16>>0]=1;c[f>>2]=0;b=c[f>>2]|0;i=e;return b|0}c[h>>2]=Uh(c[g>>2]|0,d[(c[g>>2]|0)+19>>0]|0,1)|0;c[f>>2]=Oh(c[g>>2]|0,c[h>>2]|0)|0;b=c[f>>2]|0;i=e;return b|0}function kD(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+16|0;g=e+12|0;f=e+4|0;h=e;c[g>>2]=b;c[e+8>>2]=d;c[f>>2]=0;if(a[(c[g>>2]|0)+18>>0]|0){b=c[f>>2]|0;i=e;return b|0}if((c[(c[g>>2]|0)+24>>2]|0)>>>0<=0){b=c[f>>2]|0;i=e;return b|0}c[f>>2]=Xc(c[g>>2]|0,1,h,0)|0;if(!(c[f>>2]|0))c[f>>2]=gd(c[h>>2]|0)|0;if(!(c[f>>2]|0)){bk(c[h>>2]|0);a[(c[g>>2]|0)+18>>0]=1}_c(c[h>>2]|0);b=c[f>>2]|0;i=e;return b|0}function lD(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;l=i;i=i+48|0;f=l+36|0;g=l+32|0;o=l+28|0;j=l+24|0;k=l+20|0;m=l+8|0;h=l;n=l+16|0;c[g>>2]=b;c[o>>2]=e;c[n>>2]=0;if(((c[o>>2]|0)!=0?(d[(c[g>>2]|0)+5>>0]|0)!=4:0)?(c[c[(c[g>>2]|0)+64>>2]>>2]|0)!=0:0){a[(c[g>>2]|0)+19>>0]=1;c[k>>2]=0;while(1){if(!(a[(c[o>>2]|0)+(c[k>>2]|0)>>0]|0))break;c[n>>2]=(c[n>>2]|0)+(a[(c[o>>2]|0)+(c[k>>2]|0)>>0]|0);c[k>>2]=(c[k>>2]|0)+1}if(a[(c[g>>2]|0)+8>>0]|0){e=Oi(c[g>>2]|0)|0;b=(c[g>>2]|0)+72|0;c[b>>2]=e;c[b+4>>2]=D}p=(c[g>>2]|0)+72|0;e=c[p+4>>2]|0;b=m;c[b>>2]=c[p>>2];c[b+4>>2]=e;b=m;b=pk(c[(c[g>>2]|0)+64>>2]|0,c[b>>2]|0,c[b+4>>2]|0,((c[282]|0)/(c[(c[g>>2]|0)+152>>2]|0)|0)+1|0)|0;c[j>>2]=b;if((((0==(b|0)?(e=c[(c[g>>2]|0)+64>>2]|0,o=c[o>>2]|0,b=c[k>>2]|0,p=m,p=bF(c[p>>2]|0,c[p+4>>2]|0,4,0)|0,p=id(e,o,b,p,D)|0,c[j>>2]=p,0==(p|0)):0)?(b=c[(c[g>>2]|0)+64>>2]|0,o=m,o=bF(c[o>>2]|0,c[o+4>>2]|0,4,0)|0,p=c[k>>2]|0,p=bF(o|0,D|0,p|0,((p|0)<0)<<31>>31|0)|0,p=pk(b,p,D,c[k>>2]|0)|0,c[j>>2]=p,0==(p|0)):0)?(b=c[(c[g>>2]|0)+64>>2]|0,o=m,o=bF(c[o>>2]|0,c[o+4>>2]|0,4,0)|0,p=c[k>>2]|0,p=bF(o|0,D|0,p|0,((p|0)<0)<<31>>31|0)|0,p=bF(p|0,D|0,4,0)|0,p=pk(b,p,D,c[n>>2]|0)|0,c[j>>2]=p,0==(p|0)):0)?(b=c[(c[g>>2]|0)+64>>2]|0,o=m,o=bF(c[o>>2]|0,c[o+4>>2]|0,4,0)|0,p=c[k>>2]|0,p=bF(o|0,D|0,p|0,((p|0)<0)<<31>>31|0)|0,p=bF(p|0,D|0,8,0)|0,p=id(b,4384,8,p,D)|0,c[j>>2]=p,0==(p|0)):0){b=(c[k>>2]|0)+20|0;p=(c[g>>2]|0)+72|0;o=p;b=bF(c[o>>2]|0,c[o+4>>2]|0,b|0,((b|0)<0)<<31>>31|0)|0;c[p>>2]=b;c[p+4>>2]=D;p=Gg(c[(c[g>>2]|0)+64>>2]|0,h)|0;c[j>>2]=p;if(0==(p|0)?(b=h,n=c[b+4>>2]|0,p=(c[g>>2]|0)+72|0,o=c[p+4>>2]|0,(n|0)>(o|0)|((n|0)==(o|0)?(c[b>>2]|0)>>>0>(c[p>>2]|0)>>>0:0)):0){p=(c[g>>2]|0)+72|0;c[j>>2]=Xh(c[(c[g>>2]|0)+64>>2]|0,c[p>>2]|0,c[p+4>>2]|0)|0}c[f>>2]=c[j>>2];p=c[f>>2]|0;i=l;return p|0}c[f>>2]=c[j>>2];p=c[f>>2]|0;i=l;return p|0}c[f>>2]=0;p=c[f>>2]|0;i=l;return p|0}function mD(f){f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;k=i;i=i+48|0;s=k+44|0;j=k+40|0;t=k+36|0;l=k+32|0;g=k+28|0;m=k+24|0;p=k+20|0;o=k+16|0;u=k+12|0;r=k+8|0;q=k+4|0;n=k;c[s>>2]=f;c[j>>2]=0;c[g>>2]=0;c[p>>2]=0;c[o>>2]=c[(c[s>>2]|0)+16>>2];c[u>>2]=((c[(c[o>>2]|0)+148>>2]|0)>>>0)/((c[(c[o>>2]|0)+152>>2]|0)>>>0)|0;f=(c[o>>2]|0)+20|0;a[f>>0]=d[f>>0]|0|4;c[l>>2]=((c[(c[s>>2]|0)+20>>2]|0)-1&~((c[u>>2]|0)-1))+1;c[t>>2]=c[(c[o>>2]|0)+24>>2];do if((c[(c[s>>2]|0)+20>>2]|0)>>>0<=(c[t>>2]|0)>>>0)if(((c[l>>2]|0)+(c[u>>2]|0)-1|0)>>>0>(c[t>>2]|0)>>>0){c[g>>2]=(c[t>>2]|0)+1-(c[l>>2]|0);break}else{c[g>>2]=c[u>>2];break}else c[g>>2]=(c[(c[s>>2]|0)+20>>2]|0)-(c[l>>2]|0)+1;while(0);c[m>>2]=0;while(1){if(!((c[j>>2]|0)==0?(c[m>>2]|0)<(c[g>>2]|0):0))break;c[r>>2]=(c[l>>2]|0)+(c[m>>2]|0);if((c[r>>2]|0)!=(c[(c[s>>2]|0)+20>>2]|0)?(Yg(c[(c[o>>2]|0)+56>>2]|0,c[r>>2]|0)|0)!=0:0){f=Hi(c[o>>2]|0,c[r>>2]|0)|0;c[q>>2]=f;if(f){if((e[(c[q>>2]|0)+24>>1]|0)&4)c[p>>2]=1;ej(c[q>>2]|0)}}else h=10;if(((h|0)==10?(h=0,(c[r>>2]|0)!=(((c[282]|0)/(c[(c[o>>2]|0)+152>>2]|0)|0)+1|0)):0)?(c[j>>2]=Xc(c[o>>2]|0,c[r>>2]|0,q,0)|0,(c[j>>2]|0)==0):0){c[j>>2]=nD(c[q>>2]|0)|0;if((e[(c[q>>2]|0)+24>>1]|0)&4)c[p>>2]=1;ej(c[q>>2]|0)}c[m>>2]=(c[m>>2]|0)+1}if(!((c[j>>2]|0)==0&(c[p>>2]|0)!=0)){f=c[o>>2]|0;f=f+20|0;u=a[f>>0]|0;u=u&255;u=u&-5;u=u&255;a[f>>0]=u;f=c[j>>2]|0;i=k;return f|0}c[m>>2]=0;while(1){if((c[m>>2]|0)>=(c[g>>2]|0))break;c[n>>2]=Hi(c[o>>2]|0,(c[l>>2]|0)+(c[m>>2]|0)|0)|0;if(c[n>>2]|0){f=(c[n>>2]|0)+24|0;b[f>>1]=e[f>>1]|0|4;ej(c[n>>2]|0)}c[m>>2]=(c[m>>2]|0)+1}f=c[o>>2]|0;f=f+20|0;u=a[f>>0]|0;u=u&255;u=u&-5;u=u&255;a[f>>0]=u;f=c[j>>2]|0;i=k;return f|0}function nD(a){a=a|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;j=i;i=i+48|0;h=j+32|0;k=j+28|0;f=j+24|0;l=j+20|0;p=j+16|0;o=j+12|0;n=j+8|0;m=j;c[k>>2]=a;c[f>>2]=c[(c[k>>2]|0)+16>>2];c[l>>2]=0;if((d[(c[f>>2]|0)+16>>0]|0|0)==2?(c[l>>2]=oD(c[f>>2]|0)|0,(c[l>>2]|0)!=0):0){c[h>>2]=c[l>>2];a=c[h>>2]|0;i=j;return a|0}Ji(c[k>>2]|0);c[p>>2]=pD(c[f>>2]|0,c[k>>2]|0)|0;if(c[p>>2]|0){if((c[(c[f>>2]|0)+96>>2]|0)!=0?(Xj(c[k>>2]|0)|0)!=0:0)g=7}else g=7;if((g|0)==7){do if((c[p>>2]|0)==0?(ai(c[f>>2]|0)|0)==0:0){if((c[(c[k>>2]|0)+20>>2]|0)>>>0<=(c[(c[f>>2]|0)+28>>2]|0)>>>0?(c[c[(c[f>>2]|0)+64>>2]>>2]|0)!=0:0){g=(c[f>>2]|0)+72|0;p=c[g+4>>2]|0;a=m;c[a>>2]=c[g>>2];c[a+4>>2]=p;c[n>>2]=c[(c[k>>2]|0)+4>>2];c[o>>2]=Gi(c[f>>2]|0,c[n>>2]|0)|0;a=(c[k>>2]|0)+24|0;b[a>>1]=e[a>>1]|0|4;a=m;c[l>>2]=pk(c[(c[f>>2]|0)+64>>2]|0,c[a>>2]|0,c[a+4>>2]|0,c[(c[k>>2]|0)+20>>2]|0)|0;if(c[l>>2]|0){c[h>>2]=c[l>>2];a=c[h>>2]|0;i=j;return a|0}g=c[(c[f>>2]|0)+64>>2]|0;n=c[n>>2]|0;p=c[(c[f>>2]|0)+152>>2]|0;a=m;a=bF(c[a>>2]|0,c[a+4>>2]|0,4,0)|0;c[l>>2]=id(g,n,p,a,D)|0;if(c[l>>2]|0){c[h>>2]=c[l>>2];a=c[h>>2]|0;i=j;return a|0}p=c[(c[f>>2]|0)+64>>2]|0;n=m;a=c[(c[f>>2]|0)+152>>2]|0;a=bF(c[n>>2]|0,c[n+4>>2]|0,a|0,((a|0)<0)<<31>>31|0)|0;a=bF(a|0,D|0,4,0)|0;c[l>>2]=pk(p,a,D,c[o>>2]|0)|0;if(c[l>>2]|0){c[h>>2]=c[l>>2];a=c[h>>2]|0;i=j;return a|0}p=8+(c[(c[f>>2]|0)+152>>2]|0)|0;a=(c[f>>2]|0)+72|0;o=a;p=bF(c[o>>2]|0,c[o+4>>2]|0,p|0,((p|0)<0)<<31>>31|0)|0;c[a>>2]=p;c[a+4>>2]=D;a=(c[f>>2]|0)+44|0;c[a>>2]=(c[a>>2]|0)+1;c[l>>2]=Wg(c[(c[f>>2]|0)+56>>2]|0,c[(c[k>>2]|0)+20>>2]|0)|0;a=qk(c[f>>2]|0,c[(c[k>>2]|0)+20>>2]|0)|0;c[l>>2]=c[l>>2]|a;if(!(c[l>>2]|0))break;c[h>>2]=c[l>>2];a=c[h>>2]|0;i=j;return a|0}if((d[(c[f>>2]|0)+16>>0]|0|0)!=4){a=(c[k>>2]|0)+24|0;b[a>>1]=e[a>>1]|0|4}}while(0);if((c[(c[f>>2]|0)+96>>2]|0)>0?(Xj(c[k>>2]|0)|0)!=0:0)c[l>>2]=Yj(c[k>>2]|0)|0}if((c[(c[f>>2]|0)+24>>2]|0)>>>0<(c[(c[k>>2]|0)+20>>2]|0)>>>0)c[(c[f>>2]|0)+24>>2]=c[(c[k>>2]|0)+20>>2];c[h>>2]=c[l>>2];a=c[h>>2]|0;i=j;return a|0}function oD(b){b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0;e=i;i=i+32|0;f=e+16|0;h=e+12|0;g=e+8|0;j=e+4|0;k=e;c[h>>2]=b;c[g>>2]=0;c[j>>2]=c[c[h>>2]>>2];b=c[h>>2]|0;if(c[(c[h>>2]|0)+40>>2]|0){c[f>>2]=c[b+40>>2];b=c[f>>2]|0;i=e;return b|0}if((ai(b)|0)==0?(d[(c[h>>2]|0)+5>>0]|0|0)!=2:0){b=Vg(c[(c[h>>2]|0)+24>>2]|0)|0;c[(c[h>>2]|0)+56>>2]=b;if(!(c[(c[h>>2]|0)+56>>2]|0)){c[f>>2]=7;b=c[f>>2]|0;i=e;return b|0}do if(!(c[c[(c[h>>2]|0)+64>>2]>>2]|0)){b=c[h>>2]|0;if((d[(c[h>>2]|0)+5>>0]|0|0)==4){qi(c[b+64>>2]|0);break}c[k>>2]=6|((d[b+12>>0]|0|0)!=0?4104:2048);c[g>>2]=qD(c[h>>2]|0)|0;if(!(c[g>>2]|0))c[g>>2]=Di(c[j>>2]|0,c[(c[h>>2]|0)+172>>2]|0,c[(c[h>>2]|0)+64>>2]|0,c[k>>2]|0,0)|0}while(0);if(!(c[g>>2]|0)){c[(c[h>>2]|0)+44>>2]=0;b=(c[h>>2]|0)+72|0;c[b>>2]=0;c[b+4>>2]=0;a[(c[h>>2]|0)+19>>0]=0;b=(c[h>>2]|0)+80|0;c[b>>2]=0;c[b+4>>2]=0;c[g>>2]=ek(c[h>>2]|0)|0}}j=c[h>>2]|0;if(c[g>>2]|0){_g(c[j+56>>2]|0);c[(c[h>>2]|0)+56>>2]=0}else a[j+16>>0]=3;c[f>>2]=c[g>>2];b=c[f>>2]|0;i=e;return b|0}function pD(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;a=Yg(c[(c[f>>2]|0)+56>>2]|0,c[(c[e>>2]|0)+20>>2]|0)|0;i=d;return a|0}function qD(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;d=i;i=i+16|0;e=d+12|0;f=d+8|0;g=d+4|0;h=d;c[f>>2]=b;c[g>>2]=0;if(a[(c[f>>2]|0)+12>>0]|0){c[e>>2]=0;h=c[e>>2]|0;i=d;return h|0}if(!(c[(c[f>>2]|0)+24>>2]|0)){c[e>>2]=0;h=c[e>>2]|0;i=d;return h|0}c[h>>2]=ig(c[(c[f>>2]|0)+60>>2]|0,20,g)|0;if((c[h>>2]|0)!=12){if((c[h>>2]|0)==0&(c[g>>2]|0)!=0)c[h>>2]=1032}else c[h>>2]=0;c[e>>2]=c[h>>2];h=c[e>>2]|0;i=d;return h|0}function rD(a,d,f,g){a=a|0;d=d|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0;h=i;i=i+32|0;m=h+20|0;l=h+16|0;n=h+12|0;k=h+8|0;o=h+4|0;j=h;c[l>>2]=a;c[n>>2]=d;c[k>>2]=f;c[o>>2]=g;g=c[l>>2]|0;do if(c[(c[l>>2]|0)+136>>2]|0){a=c[g+136>>2]|0;c[j>>2]=a;c[c[o>>2]>>2]=a;c[(c[l>>2]|0)+136>>2]=c[(c[j>>2]|0)+12>>2];c[(c[j>>2]|0)+12>>2]=0;_E(c[(c[j>>2]|0)+8>>2]|0,0,e[(c[l>>2]|0)+140>>1]|0|0)|0}else{a=Mc(40+(e[g+140>>1]|0)|0,0)|0;c[j>>2]=a;c[c[o>>2]>>2]=a;if(c[j>>2]|0){c[(c[j>>2]|0)+8>>2]=(c[j>>2]|0)+40;b[(c[j>>2]|0)+24>>1]=64;b[(c[j>>2]|0)+26>>1]=1;c[(c[j>>2]|0)+16>>2]=c[l>>2];break}d=c[(c[l>>2]|0)+60>>2]|0;a=c[(c[l>>2]|0)+152>>2]|0;a=lF((c[n>>2]|0)-1|0,0,a|0,((a|0)<0)<<31>>31|0)|0;hj(d,a,D,c[k>>2]|0)|0;c[m>>2]=7;a=c[m>>2]|0;i=h;return a|0}while(0);c[(c[j>>2]|0)+20>>2]=c[n>>2];c[(c[j>>2]|0)+4>>2]=c[k>>2];a=(c[l>>2]|0)+120|0;c[a>>2]=(c[a>>2]|0)+1;c[m>>2]=0;a=c[m>>2]|0;i=h;return a|0}function sD(a,f,g){a=a|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0;h=i;i=i+32|0;j=h+20|0;l=h+16|0;n=h+12|0;o=h+8|0;m=h+4|0;k=h;c[l>>2]=a;c[n>>2]=f;c[o>>2]=g;if((d[(c[l>>2]|0)+29>>0]|0)==2){c[j>>2]=0;a=c[j>>2]|0;i=h;return a|0}c[m>>2]=c[(c[l>>2]|0)+8>>2];while(1){if(!(c[m>>2]|0))break;if((b[(c[m>>2]|0)+26>>1]|0)==0?(e[(c[m>>2]|0)+24>>1]&4|0)==0:0)break;c[m>>2]=c[(c[m>>2]|0)+36>>2]}c[(c[l>>2]|0)+8>>2]=c[m>>2];a:do if(!(c[m>>2]|0)){c[m>>2]=c[(c[l>>2]|0)+4>>2];while(1){if(!(c[m>>2]|0))break a;if(!(b[(c[m>>2]|0)+26>>1]|0))break a;c[m>>2]=c[(c[m>>2]|0)+36>>2]}}while(0);if((c[m>>2]|0)!=0?(c[k>>2]=zb[c[(c[l>>2]|0)+32>>2]&63](c[(c[l>>2]|0)+36>>2]|0,c[m>>2]|0)|0,(c[k>>2]|0)!=0&(c[k>>2]|0)!=5):0){c[j>>2]=c[k>>2];a=c[j>>2]|0;i=h;return a|0}a=pb[c[38640+132>>2]&31](c[(c[l>>2]|0)+40>>2]|0,c[n>>2]|0,2)|0;c[c[o>>2]>>2]=a;c[j>>2]=(c[c[o>>2]>>2]|0)==0?7:0;a=c[j>>2]|0;i=h;return a|0}function tD(f){f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;k=i;i=i+48|0;g=k+40|0;j=k+36|0;q=k+32|0;h=k+28|0;l=k+24|0;r=k+20|0;n=k+12|0;p=k+8|0;m=k+4|0;o=k;c[j>>2]=f;c[r>>2]=0;c[q>>2]=KA(c[c[j>>2]>>2]|0)|0;if(c[q>>2]|0){c[g>>2]=c[q>>2];r=c[g>>2]|0;i=k;return r|0}c[q>>2]=Bw(c[j>>2]|0,1,h,0)|0;if(c[q>>2]|0){c[g>>2]=c[q>>2];r=c[g>>2]|0;i=k;return r|0}f=Hh((c[(c[h>>2]|0)+56>>2]|0)+28|0)|0;c[k+16>>2]=f;c[l>>2]=f;fd(c[c[j>>2]>>2]|0,r);if(!((c[l>>2]|0)!=0?(TE((c[(c[h>>2]|0)+56>>2]|0)+24|0,(c[(c[h>>2]|0)+56>>2]|0)+92|0,4)|0)==0:0))c[l>>2]=c[r>>2];a:do if((c[l>>2]|0)>0){c[m>>2]=c[(c[h>>2]|0)+56>>2];c[q>>2]=26;b:do if(!(TE(c[m>>2]|0,34408,16)|0)){if((d[(c[m>>2]|0)+18>>0]|0|0)>2){f=(c[j>>2]|0)+22|0;b[f>>1]=e[f>>1]|0|1}if((d[(c[m>>2]|0)+19>>0]|0|0)<=2){do if((d[(c[m>>2]|0)+19>>0]|0|0)==2?((e[(c[j>>2]|0)+22>>1]|0)&16|0)==0:0){c[o>>2]=0;c[q>>2]=RA(c[c[j>>2]>>2]|0,o)|0;if(c[q>>2]|0)break b;if(c[o>>2]|0){c[q>>2]=26;break}Rk(c[h>>2]|0);c[g>>2]=0;r=c[g>>2]|0;i=k;return r|0}while(0);if((TE((c[m>>2]|0)+21|0,37104,3)|0)==0?(c[n>>2]=(d[(c[m>>2]|0)+16>>0]|0)<<8|(d[(c[m>>2]|0)+17>>0]|0)<<16,!(((c[n>>2]|0)>>>0>65536?1:((c[n>>2]|0)-1&c[n>>2]|0)!=0)|(c[n>>2]|0)>>>0<=256)):0){c[p>>2]=(c[n>>2]|0)-(d[(c[m>>2]|0)+20>>0]|0);if((c[n>>2]|0)!=(c[(c[j>>2]|0)+32>>2]|0)){Rk(c[h>>2]|0);c[(c[j>>2]|0)+36>>2]=c[p>>2];c[(c[j>>2]|0)+32>>2]=c[n>>2];Dg(c[j>>2]|0);c[q>>2]=Eg(c[c[j>>2]>>2]|0,(c[j>>2]|0)+32|0,(c[n>>2]|0)-(c[p>>2]|0)|0)|0;c[g>>2]=c[q>>2];r=c[g>>2]|0;i=k;return r|0}if((c[(c[(c[j>>2]|0)+4>>2]|0)+24>>2]&65536|0)==0?(c[l>>2]|0)>(c[r>>2]|0):0){c[q>>2]=kj(54754)|0;break}if((c[p>>2]|0)>>>0>=480){c[(c[j>>2]|0)+32>>2]=c[n>>2];c[(c[j>>2]|0)+36>>2]=c[p>>2];r=(Hh((c[m>>2]|0)+52|0)|0)!=0;a[(c[j>>2]|0)+17>>0]=r?1:0;r=(Hh((c[m>>2]|0)+64|0)|0)!=0;a[(c[j>>2]|0)+18>>0]=r?1:0;break a}}}}while(0);Rk(c[h>>2]|0);c[(c[j>>2]|0)+12>>2]=0;c[g>>2]=c[q>>2];r=c[g>>2]|0;i=k;return r|0}while(0);b[(c[j>>2]|0)+24>>1]=(((c[(c[j>>2]|0)+36>>2]|0)-12<<6>>>0)/255|0)-23;b[(c[j>>2]|0)+26>>1]=(((c[(c[j>>2]|0)+36>>2]|0)-12<<5>>>0)/255|0)-23;b[(c[j>>2]|0)+28>>1]=(c[(c[j>>2]|0)+36>>2]|0)-35;b[(c[j>>2]|0)+30>>1]=(((c[(c[j>>2]|0)+36>>2]|0)-12<<5>>>0)/255|0)-23;m=c[j>>2]|0;if((e[(c[j>>2]|0)+24>>1]|0|0)>127)a[m+21>>0]=127;else a[(c[j>>2]|0)+21>>0]=b[m+24>>1];c[(c[j>>2]|0)+12>>2]=c[h>>2];c[(c[j>>2]|0)+44>>2]=c[l>>2];c[g>>2]=0;r=c[g>>2]|0;i=k;return r|0}function uD(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;g=i;i=i+32|0;h=g+16|0;j=g+12|0;l=g+8|0;m=g+4|0;k=g;c[j>>2]=b;c[l>>2]=e;c[m>>2]=f;c[k>>2]=0;if(c[(c[j>>2]|0)+40>>2]|0){c[h>>2]=c[(c[j>>2]|0)+40>>2];b=c[h>>2]|0;i=g;return b|0}a[(c[j>>2]|0)+21>>0]=c[m>>2];if((d[(c[j>>2]|0)+16>>0]|0|0)==1){b=(ai(c[j>>2]|0)|0)!=0;f=c[j>>2]|0;if(!b){c[k>>2]=hk(f,2)|0;if((c[k>>2]|0)==0&(c[l>>2]|0)!=0)c[k>>2]=gk(c[j>>2]|0,4)|0}else{do if((d[f+4>>0]|0|0)!=0?(di(c[(c[j>>2]|0)+208>>2]|0,-1)|0)!=0:0){c[k>>2]=hk(c[j>>2]|0,4)|0;if(!(c[k>>2]|0)){di(c[(c[j>>2]|0)+208>>2]|0,1)|0;break}c[h>>2]=c[k>>2];b=c[h>>2]|0;i=g;return b|0}while(0);c[k>>2]=vD(c[(c[j>>2]|0)+208>>2]|0)|0}if(!(c[k>>2]|0)){a[(c[j>>2]|0)+16>>0]=2;c[(c[j>>2]|0)+36>>2]=c[(c[j>>2]|0)+24>>2];c[(c[j>>2]|0)+32>>2]=c[(c[j>>2]|0)+24>>2];c[(c[j>>2]|0)+28>>2]=c[(c[j>>2]|0)+24>>2];b=(c[j>>2]|0)+72|0;c[b>>2]=0;c[b+4>>2]=0}}c[h>>2]=c[k>>2];b=c[h>>2]|0;i=g;return b|0}function vD(b){b=b|0;var d=0,e=0,f=0,g=0;d=i;i=i+16|0;e=d+8|0;g=d+4|0;f=d;c[g>>2]=b;if(a[(c[g>>2]|0)+46>>0]|0){c[e>>2]=8;g=c[e>>2]|0;i=d;return g|0}c[f>>2]=vj(c[g>>2]|0,0,1)|0;if(c[f>>2]|0){c[e>>2]=c[f>>2];g=c[e>>2]|0;i=d;return g|0}a[(c[g>>2]|0)+44>>0]=1;b=(c[g>>2]|0)+52|0;if(TE(b,mj(c[g>>2]|0)|0,48)|0){ji(c[g>>2]|0,0,1);a[(c[g>>2]|0)+44>>0]=0;c[f>>2]=517}c[e>>2]=c[f>>2];g=c[e>>2]|0;i=d;return g|0}function wD(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;_d(c[d>>2]|0);i=b;return}function xD(a,b){a=a|0;b=b|0;var d=0;d=i;i=i+16|0;c[d+4>>2]=a;c[d>>2]=b;i=d;return 37112}function yD(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;i=i+16|0;e=b+8|0;d=b+4|0;f=b;c[e>>2]=a;c[d>>2]=0;if(!(c[e>>2]|0)){f=c[d>>2]|0;i=b;return f|0}c[f>>2]=c[e>>2];FD(c[e>>2]|0,0)|0;hc(c[(c[f>>2]|0)+24>>2]|0);c[d>>2]=kE(c[e>>2]|0)|0;f=c[d>>2]|0;i=b;return f|0}function zD(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;l=i;i=i+32|0;h=l+28|0;o=l+24|0;k=l+20|0;m=l+16|0;n=l;j=l+12|0;g=l+8|0;c[o>>2]=a;c[k>>2]=b;c[m>>2]=d;a=n;c[a>>2]=e;c[a+4>>2]=f;c[j>>2]=c[o>>2];a=n;c[g>>2]=jE(c[j>>2]|0,c[a>>2]|0,c[a+4>>2]|0,c[k>>2]|0,c[m>>2]|0)|0;if((c[g>>2]|0)==(c[m>>2]|0)){c[h>>2]=0;o=c[h>>2]|0;i=l;return o|0}if((c[g>>2]|0)<0){c[h>>2]=266;o=c[h>>2]|0;i=l;return o|0}else{c[(c[j>>2]|0)+20>>2]=0;_E((c[k>>2]|0)+(c[g>>2]|0)|0,0,(c[m>>2]|0)-(c[g>>2]|0)|0)|0;c[h>>2]=522;o=c[h>>2]|0;i=l;return o|0}return 0}function AD(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;h=i;i=i+32|0;m=h+28|0;o=h+24|0;n=h+20|0;l=h+16|0;g=h;k=h+12|0;j=h+8|0;c[o>>2]=a;c[n>>2]=b;c[l>>2]=d;a=g;c[a>>2]=e;c[a+4>>2]=f;c[k>>2]=c[o>>2];c[j>>2]=0;while(1){if((c[l>>2]|0)<=0)break;o=g;o=fE(c[k>>2]|0,c[o>>2]|0,c[o+4>>2]|0,c[n>>2]|0,c[l>>2]|0)|0;c[j>>2]=o;if((o|0)<=0)break;c[l>>2]=(c[l>>2]|0)-(c[j>>2]|0);a=c[j>>2]|0;o=g;a=bF(c[o>>2]|0,c[o+4>>2]|0,a|0,((a|0)<0)<<31>>31|0)|0;o=g;c[o>>2]=a;c[o+4>>2]=D;c[n>>2]=(c[n>>2]|0)+(c[j>>2]|0)}if((c[l>>2]|0)<=0){c[m>>2]=0;o=c[m>>2]|0;i=h;return o|0}if((c[j>>2]|0)<0?(c[(c[k>>2]|0)+20>>2]|0)!=28:0){c[m>>2]=778;o=c[m>>2]|0;i=h;return o|0}c[(c[k>>2]|0)+20>>2]=0;c[m>>2]=13;o=c[m>>2]|0;i=h;return o|0}function BD(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;g=i;i=i+32|0;f=g+20|0;k=g+16|0;h=g;e=g+12|0;j=g+8|0;c[k>>2]=a;a=h;c[a>>2]=b;c[a+4>>2]=d;c[e>>2]=c[k>>2];if((c[(c[e>>2]|0)+40>>2]|0)>0){k=h;a=c[(c[e>>2]|0)+40>>2]|0;a=bF(c[k>>2]|0,c[k+4>>2]|0,a|0,((a|0)<0)<<31>>31|0)|0;a=ZE(a|0,D|0,1,0)|0;k=c[(c[e>>2]|0)+40>>2]|0;k=jF(a|0,D|0,k|0,((k|0)<0)<<31>>31|0)|0;a=c[(c[e>>2]|0)+40>>2]|0;a=lF(k|0,D|0,a|0,((a|0)<0)<<31>>31|0)|0;k=h;c[k>>2]=a;c[k+4>>2]=D}k=h;c[j>>2]=eE(c[(c[e>>2]|0)+12>>2]|0,c[k>>2]|0,c[k+4>>2]|0)|0;if(c[j>>2]|0){k=c[(Ya()|0)>>2]|0;c[(c[e>>2]|0)+20>>2]=k;c[f>>2]=UD(1546,37568,c[(c[e>>2]|0)+32>>2]|0,28429)|0;k=c[f>>2]|0;i=g;return k|0}else{c[f>>2]=0;k=c[f>>2]|0;i=g;return k|0}return 0}function CD(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;f=i;i=i+32|0;g=f+28|0;o=f+24|0;n=f+20|0;k=f+16|0;h=f+12|0;l=f+8|0;m=f+4|0;j=f;c[o>>2]=a;c[n>>2]=d;c[h>>2]=c[o>>2];c[l>>2]=c[n>>2]&16;c[m>>2]=(c[n>>2]&15|0)==3&1;c[k>>2]=iE(c[(c[h>>2]|0)+12>>2]|0,c[m>>2]|0,c[l>>2]|0)|0;if(c[k>>2]|0){o=c[(Ya()|0)>>2]|0;c[(c[h>>2]|0)+20>>2]=o;c[g>>2]=UD(1034,38e3,c[(c[h>>2]|0)+32>>2]|0,28385)|0;o=c[g>>2]|0;i=f;return o|0}if((e[(c[h>>2]|0)+18>>1]|0)&8){c[k>>2]=zb[c[37192+208>>2]&63](c[(c[h>>2]|0)+32>>2]|0,j)|0;if(!((c[k>>2]|0)==0&(c[j>>2]|0)>=0)){if((c[k>>2]|0)==14)c[k>>2]=0}else{iE(c[j>>2]|0,0,0)|0;TD(c[h>>2]|0,c[j>>2]|0,28399)}o=(c[h>>2]|0)+18|0;b[o>>1]=(e[o>>1]|0)&-9}c[g>>2]=c[k>>2];o=c[g>>2]|0;i=f;return o|0}function DD(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;d=i;i=i+96|0;e=d+88|0;f=d+84|0;g=d+80|0;j=d+76|0;h=d;c[f>>2]=a;c[g>>2]=b;c[j>>2]=zb[c[37192+64>>2]&63](c[(c[f>>2]|0)+12>>2]|0,h)|0;if(c[j>>2]|0){j=c[(Ya()|0)>>2]|0;c[(c[f>>2]|0)+20>>2]=j;c[e>>2]=1802;j=c[e>>2]|0;i=d;return j|0}a=c[h+36>>2]|0;j=c[g>>2]|0;c[j>>2]=a;c[j+4>>2]=((a|0)<0)<<31>>31;j=c[g>>2]|0;if((c[j>>2]|0)==1&(c[j+4>>2]|0)==0){j=c[g>>2]|0;c[j>>2]=0;c[j+4>>2]=0}c[e>>2]=0;j=c[e>>2]|0;i=d;return j|0}function ED(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;f=i;i=i+32|0;g=f+24|0;n=f+20|0;k=f+16|0;j=f+12|0;h=f+8|0;l=f+4|0;m=f;c[n>>2]=b;c[k>>2]=e;c[j>>2]=c[n>>2];c[h>>2]=c[(c[j>>2]|0)+24>>2];c[l>>2]=0;if((d[(c[j>>2]|0)+16>>0]|0|0)>0){a[(c[j>>2]|0)+16>>0]=c[k>>2];qa(c[h>>2]|0,0)|0;c[g>>2]=0;n=c[g>>2]|0;i=f;return n|0}c[l>>2]=zb[c[37192+220>>2]&63](c[h>>2]|0,511)|0;if((c[l>>2]|0)>=0){a[(c[j>>2]|0)+16>>0]=c[k>>2];c[g>>2]=c[l>>2];n=c[g>>2]|0;i=f;return n|0}c[m>>2]=c[(Ya()|0)>>2];if(17!=(c[m>>2]|0)){c[l>>2]=hE(c[m>>2]|0,3850)|0;if((c[l>>2]|0)!=0&(c[l>>2]|0)!=5)c[(c[j>>2]|0)+20>>2]=c[m>>2]}else c[l>>2]=5;c[g>>2]=c[l>>2];n=c[g>>2]|0;i=f;return n|0}function FD(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;f=i;i=i+32|0;g=f+24|0;n=f+20|0;m=f+16|0;h=f+12|0;l=f+8|0;k=f+4|0;j=f;c[n>>2]=b;c[m>>2]=e;c[h>>2]=c[n>>2];c[l>>2]=c[(c[h>>2]|0)+24>>2];if((d[(c[h>>2]|0)+16>>0]|0|0)==(c[m>>2]|0)){c[g>>2]=0;n=c[g>>2]|0;i=f;return n|0}if((c[m>>2]|0)==1){a[(c[h>>2]|0)+16>>0]=1;c[g>>2]=0;n=c[g>>2]|0;i=f;return n|0}c[k>>2]=ub[c[37192+232>>2]&31](c[l>>2]|0)|0;if((c[k>>2]|0)<0?(c[(Ya()|0)>>2]|0)==20:0)c[k>>2]=ub[c[37192+196>>2]&31](c[l>>2]|0)|0;if((c[k>>2]|0)>=0){a[(c[h>>2]|0)+16>>0]=0;c[g>>2]=0;n=c[g>>2]|0;i=f;return n|0}c[j>>2]=c[(Ya()|0)>>2];c[k>>2]=0;c[k>>2]=2!=(c[j>>2]|0)?2058:0;if((c[k>>2]|0)!=0&(c[k>>2]|0)!=5)c[(c[h>>2]|0)+20>>2]=c[j>>2];c[g>>2]=c[k>>2];n=c[g>>2]|0;i=f;return n|0}function GD(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;e=i;i=i+32|0;l=e+20|0;g=e+16|0;f=e+12|0;h=e+8|0;k=e+4|0;j=e;c[l>>2]=a;c[g>>2]=b;c[f>>2]=0;c[h>>2]=0;c[k>>2]=c[l>>2];if((d[(c[k>>2]|0)+16>>0]|0|0)>1){c[h>>2]=1;a=c[h>>2]|0;l=c[g>>2]|0;c[l>>2]=a;l=c[f>>2]|0;i=e;return l|0}else{c[j>>2]=c[(c[k>>2]|0)+24>>2];c[h>>2]=(zb[c[37192+28>>2]&63](c[j>>2]|0,0)|0)==0&1;a=c[h>>2]|0;l=c[g>>2]|0;c[l>>2]=a;l=c[f>>2]|0;i=e;return l|0}return 0}function HD(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;f=i;i=i+32|0;k=f;g=f+28|0;o=f+24|0;n=f+20|0;j=f+16|0;h=f+12|0;m=f+8|0;l=f+4|0;c[o>>2]=a;c[n>>2]=b;c[j>>2]=e;c[h>>2]=c[o>>2];do switch(c[n>>2]|0){case 6:{c[(c[h>>2]|0)+40>>2]=c[c[j>>2]>>2];c[g>>2]=0;break};case 10:{aE(c[h>>2]|0,4,c[j>>2]|0);c[g>>2]=0;break};case 12:{c[k>>2]=c[(c[(c[h>>2]|0)+4>>2]|0)+16>>2];o=qc(1200,k)|0;c[c[j>>2]>>2]=o;c[g>>2]=0;break};case 20:{o=cE(c[h>>2]|0)|0;c[c[j>>2]>>2]=o;c[g>>2]=0;break};case 1:{c[c[j>>2]>>2]=d[(c[h>>2]|0)+16>>0];c[g>>2]=0;break};case 13:{aE(c[h>>2]|0,16,c[j>>2]|0);c[g>>2]=0;break};case 16:{c[l>>2]=fc(c[(c[(c[h>>2]|0)+4>>2]|0)+8>>2]|0)|0;if(c[l>>2]|0){bE(c[(c[(c[h>>2]|0)+4>>2]|0)+8>>2]|0,c[l>>2]|0)|0;c[c[j>>2]>>2]=c[l>>2]}c[g>>2]=0;break};case 5:{o=c[j>>2]|0;c[m>>2]=$D(c[h>>2]|0,c[o>>2]|0,c[o+4>>2]|0)|0;c[g>>2]=c[m>>2];break};case 4:{c[c[j>>2]>>2]=c[(c[h>>2]|0)+20>>2];c[g>>2]=0;break};default:c[g>>2]=12}while(0);i=f;return c[g>>2]|0}function ID(a){a=a|0;var b=0;b=i;i=i+16|0;c[b>>2]=a;i=b;return 4096}function JD(a){a=a|0;var b=0,d=0,f=0,g=0;b=i;i=i+16|0;g=b+8|0;f=b+4|0;d=b;c[g>>2]=a;c[f>>2]=c[g>>2];c[d>>2]=0;if(!((e[(c[f>>2]|0)+18>>1]|0)&16)){g=c[d>>2]|0;i=b;return g|0}c[d>>2]=c[d>>2]|4096;g=c[d>>2]|0;i=b;return g|0}function KD(a,d,f,g){a=a|0;d=d|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;k=i;i=i+48|0;v=k+32|0;m=k+28|0;n=k+24|0;t=k+20|0;u=k+16|0;r=k+12|0;h=k+8|0;l=k+4|0;q=k;o=k+40|0;p=k+38|0;s=k+36|0;c[v>>2]=a;c[m>>2]=d;c[n>>2]=f;c[t>>2]=g;c[u>>2]=c[v>>2];c[r>>2]=c[(c[u>>2]|0)+36>>2];c[l>>2]=c[c[r>>2]>>2];c[q>>2]=0;b[o>>1]=(1<<(c[m>>2]|0)+(c[n>>2]|0))-(1<>2]);if(c[t>>2]&1){b[p>>1]=0;c[h>>2]=c[(c[l>>2]|0)+32>>2];while(1){if(!(c[h>>2]|0))break;if((c[h>>2]|0)!=(c[r>>2]|0))b[p>>1]=e[p>>1]|0|(e[(c[h>>2]|0)+10>>1]|0);c[h>>2]=c[(c[h>>2]|0)+4>>2]}if(!((e[o>>1]|0)&(e[p>>1]|0)))c[q>>2]=_D(c[l>>2]|0,2,(c[m>>2]|0)+120|0,c[n>>2]|0)|0;else c[q>>2]=0;if(c[q>>2]|0){v=c[q>>2]|0;i=k;return v|0}v=(c[r>>2]|0)+12|0;b[v>>1]=(e[v>>1]|0)&~(e[o>>1]|0);v=(c[r>>2]|0)+10|0;b[v>>1]=(e[v>>1]|0)&~(e[o>>1]|0);v=c[q>>2]|0;i=k;return v|0}if(!(c[t>>2]&4)){c[h>>2]=c[(c[l>>2]|0)+32>>2];while(1){if(!(c[h>>2]|0))break;if((e[(c[h>>2]|0)+12>>1]|0)&(e[o>>1]|0)){j=28;break}if((e[(c[h>>2]|0)+10>>1]|0)&(e[o>>1]|0)){j=28;break}c[h>>2]=c[(c[h>>2]|0)+4>>2]}if((j|0)==28)c[q>>2]=5;if(c[q>>2]|0){v=c[q>>2]|0;i=k;return v|0}c[q>>2]=_D(c[l>>2]|0,1,(c[m>>2]|0)+120|0,c[n>>2]|0)|0;if(c[q>>2]|0){v=c[q>>2]|0;i=k;return v|0}v=(c[r>>2]|0)+12|0;b[v>>1]=e[v>>1]|0|(e[o>>1]|0);v=c[q>>2]|0;i=k;return v|0}b[s>>1]=0;c[h>>2]=c[(c[l>>2]|0)+32>>2];while(1){if(!(c[h>>2]|0))break;if((e[(c[h>>2]|0)+12>>1]|0)&(e[o>>1]|0)){j=16;break}b[s>>1]=e[s>>1]|0|(e[(c[h>>2]|0)+10>>1]|0);c[h>>2]=c[(c[h>>2]|0)+4>>2]}if((j|0)==16)c[q>>2]=5;do if(!(c[q>>2]|0))if(!((e[s>>1]|0)&(e[o>>1]|0))){c[q>>2]=_D(c[l>>2]|0,0,(c[m>>2]|0)+120|0,c[n>>2]|0)|0;break}else{c[q>>2]=0;break}while(0);if(c[q>>2]|0){v=c[q>>2]|0;i=k;return v|0}v=(c[r>>2]|0)+10|0;b[v>>1]=e[v>>1]|0|(e[o>>1]|0);v=c[q>>2]|0;i=k;return v|0}function LD(a){a=a|0;var b=0;b=i;i=i+16|0;c[b>>2]=a;PD();RD();i=b;return}function MD(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;d=i;i=i+32|0;e=d+24|0;l=d+20|0;f=d+16|0;h=d+12|0;g=d+8|0;j=d+4|0;k=d;c[l>>2]=a;c[f>>2]=b;c[k>>2]=c[l>>2];c[h>>2]=c[(c[k>>2]|0)+36>>2];if(!(c[h>>2]|0)){c[e>>2]=0;l=c[e>>2]|0;i=d;return l|0}c[g>>2]=c[c[h>>2]>>2];c[j>>2]=(c[g>>2]|0)+32;while(1){if((c[c[j>>2]>>2]|0)==(c[h>>2]|0))break;c[j>>2]=(c[c[j>>2]>>2]|0)+4}c[c[j>>2]>>2]=c[(c[h>>2]|0)+4>>2];hc(c[h>>2]|0);c[(c[k>>2]|0)+36>>2]=0;PD();l=(c[g>>2]|0)+28|0;c[l>>2]=(c[l>>2]|0)+ -1;if(!(c[(c[g>>2]|0)+28>>2]|0)){if((c[f>>2]|0)!=0?(c[(c[g>>2]|0)+12>>2]|0)>=0:0)ub[c[37192+196>>2]&31](c[(c[g>>2]|0)+8>>2]|0)|0;QD(c[k>>2]|0)}RD();c[e>>2]=0;l=c[e>>2]|0;i=d;return l|0}function ND(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=i;i=i+32|0;h=g+8|0;c[g+16>>2]=a;a=g;c[a>>2]=b;c[a+4>>2]=d;c[g+12>>2]=e;c[h>>2]=f;c[c[h>>2]>>2]=0;i=g;return 0}function OD(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=i;i=i+16|0;c[f+12>>2]=a;a=f;c[a>>2]=b;c[a+4>>2]=d;c[f+8>>2]=e;i=f;return 0}function PD(){return}function QD(a){a=a|0;var b=0,d=0,f=0,g=0,h=0;b=i;i=i+16|0;d=b+12|0;f=b+8|0;h=b+4|0;g=b;c[d>>2]=a;c[f>>2]=c[(c[(c[d>>2]|0)+8>>2]|0)+20>>2];if(!(c[f>>2]|0)){i=b;return}if(c[(c[f>>2]|0)+28>>2]|0){i=b;return}c[h>>2]=SD()|0;c[g>>2]=0;while(1){a=c[f>>2]|0;if((c[g>>2]|0)>=(e[(c[f>>2]|0)+20>>1]|0|0))break;if((c[a+12>>2]|0)>=0)zb[c[37192+268>>2]&63](c[(c[(c[f>>2]|0)+24>>2]|0)+(c[g>>2]<<2)>>2]|0,c[(c[f>>2]|0)+16>>2]|0)|0;else hc(c[(c[(c[f>>2]|0)+24>>2]|0)+(c[g>>2]<<2)>>2]|0);c[g>>2]=(c[g>>2]|0)+(c[h>>2]|0)}hc(c[a+24>>2]|0);if((c[(c[f>>2]|0)+12>>2]|0)>=0){TD(c[d>>2]|0,c[(c[f>>2]|0)+12>>2]|0,28999);c[(c[f>>2]|0)+12>>2]=-1}c[(c[c[f>>2]>>2]|0)+20>>2]=0;hc(c[f>>2]|0);i=b;return}function RD(){return}function SD(){var a=0,b=0,d=0,e=0;a=i;i=i+16|0;b=a+8|0;d=a+4|0;e=a;c[d>>2]=32768;c[e>>2]=qb[c[37192+292>>2]&1]()|0;if((c[e>>2]|0)<(c[d>>2]|0)){c[b>>2]=1;e=c[b>>2]|0;i=a;return e|0}else{c[b>>2]=(c[e>>2]|0)/(c[d>>2]|0)|0;e=c[b>>2]|0;i=a;return e|0}return 0}function TD(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+16|0;g=e+8|0;h=e+4|0;f=e;c[g>>2]=a;c[h>>2]=b;c[f>>2]=d;if(!(ub[c[37192+16>>2]&31](c[h>>2]|0)|0)){i=e;return}if(c[g>>2]|0)d=c[(c[g>>2]|0)+32>>2]|0;else d=0;UD(4106,37496,d,c[f>>2]|0)|0;i=e;return}function UD(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;g=i;i=i+48|0;h=g;l=g+40|0;m=g+36|0;f=g+32|0;j=g+28|0;k=g+24|0;n=g+20|0;c[l>>2]=a;c[m>>2]=b;c[f>>2]=d;c[j>>2]=e;c[n>>2]=c[(Ya()|0)>>2];c[k>>2]=gb(c[n>>2]|0)|0;if(!(c[f>>2]|0))c[f>>2]=1216;a=c[l>>2]|0;e=c[n>>2]|0;n=c[m>>2]|0;d=c[f>>2]|0;b=c[k>>2]|0;c[h>>2]=c[j>>2];c[h+4>>2]=e;c[h+8>>2]=n;c[h+12>>2]=d;c[h+16>>2]=b;tc(a,37504,h);i=g;return c[l>>2]|0}function VD(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;i=i+16|0;f=e;j=e+12|0;h=e+8|0;g=e+4|0;c[j>>2]=a;c[h>>2]=b;c[g>>2]=d;b=c[j>>2]|0;a=c[h>>2]|0;c[f>>2]=c[g>>2];a=Ja(b|0,a|0,f|0)|0;i=e;return a|0}function WD(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;e=i;i=i+544|0;k=e;l=e+16|0;g=e+12|0;j=e+8|0;f=e+4|0;h=e+20|0;c[l>>2]=b;c[g>>2]=d;c[f>>2]=-1;c[k>>2]=c[l>>2];sc(512,h,1200,k)|0;c[j>>2]=aF(h|0)|0;while(1){if((c[j>>2]|0)<=1)break;if((a[h+(c[j>>2]|0)>>0]|0)==47)break;c[j>>2]=(c[j>>2]|0)+ -1}if((c[j>>2]|0)>0){a[h+(c[j>>2]|0)>>0]=0;c[f>>2]=ZD(h,0,0)|0}c[c[g>>2]>>2]=c[f>>2];if((c[f>>2]|0)>=0){l=0;i=e;return l|0}l=UD(Ij(28344)|0,37536,h,28344)|0;i=e;return l|0}function XD(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+16|0;f=e+8|0;g=e+4|0;h=e;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;if($a()|0){a=0;i=e;return a|0}a=fb(c[f>>2]|0,c[g>>2]|0,c[h>>2]|0)|0;i=e;return a|0}function YD(){var a=0,b=0;b=i;a=Pa(30)|0;i=b;return a|0}function ZD(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;l=i;i=i+112|0;k=l;f=l+100|0;g=l+96|0;e=l+92|0;j=l+88|0;h=l+84|0;m=l+8|0;c[f>>2]=a;c[g>>2]=b;c[e>>2]=d;c[h>>2]=(c[e>>2]|0)!=0?c[e>>2]|0:420;while(1){c[j>>2]=pb[c[37192+4>>2]&31](c[f>>2]|0,c[g>>2]|524288,c[h>>2]|0)|0;if((c[j>>2]|0)<0)if((c[(Ya()|0)>>2]|0)==4)continue;else break;if((c[j>>2]|0)>=3)break;ub[c[37192+16>>2]&31](c[j>>2]|0)|0;a=c[j>>2]|0;c[k>>2]=c[f>>2];c[k+4>>2]=a;tc(28,37760,k);c[j>>2]=-1;if((pb[c[37192+4>>2]&31](37808,c[g>>2]|0,c[e>>2]|0)|0)<0)break}if(!((c[j>>2]|0)>=0&(c[e>>2]|0)!=0)){a=c[j>>2]|0;i=l;return a|0}if(zb[c[37192+64>>2]&63](c[j>>2]|0,m)|0){a=c[j>>2]|0;i=l;return a|0}if(c[m+36>>2]|0){a=c[j>>2]|0;i=l;return a|0}if((c[m+12>>2]&511|0)==(c[e>>2]|0)){a=c[j>>2]|0;i=l;return a|0}zb[c[37192+172>>2]&63](c[j>>2]|0,c[e>>2]|0)|0;a=c[j>>2]|0;i=l;return a|0}function _D(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;m=i;i=i+48|0;o=m;n=m+36|0;k=m+32|0;l=m+28|0;g=m+24|0;j=m+8|0;h=m+4|0;c[n>>2]=a;c[k>>2]=d;c[l>>2]=e;c[g>>2]=f;c[h>>2]=0;if((c[(c[n>>2]|0)+12>>2]|0)<0){a=c[h>>2]|0;i=m;return a|0}c[j+0>>2]=0;c[j+4>>2]=0;c[j+8>>2]=0;c[j+12>>2]=0;b[j>>1]=c[k>>2];b[j+2>>1]=0;c[j+4>>2]=c[l>>2];c[j+8>>2]=c[g>>2];d=c[9320]|0;a=c[(c[n>>2]|0)+12>>2]|0;c[o>>2]=j;c[h>>2]=pb[d&31](a,13,o)|0;c[h>>2]=(c[h>>2]|0)!=-1?0:5;a=c[h>>2]|0;i=m;return a|0}function $D(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;k=i;i=i+128|0;f=k+112|0;g=k+108|0;n=k+16|0;e=k+8|0;l=k+32|0;m=k+28|0;h=k;j=k+24|0;c[g>>2]=a;a=n;c[a>>2]=b;c[a+4>>2]=d;a:do if((c[(c[g>>2]|0)+40>>2]|0)>0){if(zb[c[37192+64>>2]&63](c[(c[g>>2]|0)+12>>2]|0,l)|0){c[f>>2]=1802;a=c[f>>2]|0;i=k;return a|0}b=n;d=c[(c[g>>2]|0)+40>>2]|0;d=bF(c[b>>2]|0,c[b+4>>2]|0,d|0,((d|0)<0)<<31>>31|0)|0;d=ZE(d|0,D|0,1,0)|0;b=c[(c[g>>2]|0)+40>>2]|0;b=jF(d|0,D|0,b|0,((b|0)<0)<<31>>31|0)|0;d=c[(c[g>>2]|0)+40>>2]|0;d=lF(b|0,D|0,d|0,((d|0)<0)<<31>>31|0)|0;b=e;c[b>>2]=d;c[b+4>>2]=D;b=e;d=c[b+4>>2]|0;a=c[l+36>>2]|0;n=((a|0)<0)<<31>>31;if((d|0)>(n|0)|((d|0)==(n|0)?(c[b>>2]|0)>>>0>a>>>0:0)){c[m>>2]=c[l+40>>2];a=e;if(eE(c[(c[g>>2]|0)+12>>2]|0,c[a>>2]|0,c[a+4>>2]|0)|0){a=c[(Ya()|0)>>2]|0;c[(c[g>>2]|0)+20>>2]=a;c[f>>2]=UD(1546,37568,c[(c[g>>2]|0)+32>>2]|0,28530)|0;a=c[f>>2]|0;i=k;return a|0}b=($(((c[l+36>>2]|0)+(c[m>>2]<<1)-1|0)/(c[m>>2]|0)|0,c[m>>2]|0)|0)-1|0;a=h;c[a>>2]=b;c[a+4>>2]=((b|0)<0)<<31>>31;while(1){b=h;l=c[b+4>>2]|0;a=e;n=c[a+4>>2]|0;if(!((l|0)<(n|0)|((l|0)==(n|0)?(c[b>>2]|0)>>>0<(c[a>>2]|0)>>>0:0)))break a;a=h;c[j>>2]=fE(c[g>>2]|0,c[a>>2]|0,c[a+4>>2]|0,1216,1)|0;if((c[j>>2]|0)!=1)break;b=c[m>>2]|0;a=h;b=bF(c[a>>2]|0,c[a+4>>2]|0,b|0,((b|0)<0)<<31>>31|0)|0;a=h;c[a>>2]=b;c[a+4>>2]=D}c[f>>2]=778;a=c[f>>2]|0;i=k;return a|0}}while(0);c[f>>2]=0;a=c[f>>2]|0;i=k;return a|0}function aE(f,g,h){f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0;j=i;i=i+16|0;l=j+4|0;m=j+8|0;k=j;c[l>>2]=f;a[m>>0]=g;c[k>>2]=h;if((c[c[k>>2]>>2]|0)<0){c[c[k>>2]>>2]=((e[(c[l>>2]|0)+18>>1]|0)&(d[m>>0]|0)|0)!=0&1;i=j;return}h=d[m>>0]|0;if(!(c[c[k>>2]>>2]|0)){f=(c[l>>2]|0)+18|0;b[f>>1]=(e[f>>1]|0)&~h;i=j;return}else{f=(c[l>>2]|0)+18|0;b[f>>1]=e[f>>1]|0|h;i=j;return}}function bE(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;k=i;i=i+32|0;n=k;g=k+24|0;l=k+20|0;h=k+16|0;f=k+12|0;j=k+8|0;m=k+4|0;c[l>>2]=b;c[h>>2]=e;b=dE()|0;c[m>>2]=b;c[m>>2]=(c[m>>2]|0)==0?19120:b;b=(aF(c[m>>2]|0)|0)+25|0;if(b>>>0>=(c[l>>2]|0)>>>0){c[g>>2]=1;b=c[g>>2]|0;i=k;return b|0}do{e=(c[l>>2]|0)-18|0;b=c[h>>2]|0;c[n>>2]=c[m>>2];sc(e,b,37888,n)|0;c[j>>2]=aF(c[h>>2]|0)|0;vc(15,(c[h>>2]|0)+(c[j>>2]|0)|0);c[f>>2]=0;while(1){e=(c[h>>2]|0)+(c[j>>2]|0)|0;if((c[f>>2]|0)>>>0>=15)break;a[(c[h>>2]|0)+(c[j>>2]|0)>>0]=a[37824+(((d[e>>0]|0)>>>0)%62|0)>>0]|0;c[f>>2]=(c[f>>2]|0)+1;c[j>>2]=(c[j>>2]|0)+1}a[e>>0]=0;a[(c[h>>2]|0)+((c[j>>2]|0)+1)>>0]=0}while((zb[c[37192+28>>2]&63](c[h>>2]|0,0)|0)==0);c[g>>2]=0;b=c[g>>2]|0;i=k;return b|0}function cE(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+80|0;e=b+76|0;d=b;c[e>>2]=a;if(!(c[(c[e>>2]|0)+8>>2]|0)){e=0;e=e&1;i=b;return e|0}if(zb[c[37192+52>>2]&63](c[(c[e>>2]|0)+32>>2]|0,d)|0){e=1;e=e&1;i=b;return e|0}e=(c[d+72>>2]|0)!=(c[(c[(c[e>>2]|0)+8>>2]|0)+4>>2]|0);e=e&1;i=b;return e|0}function dE(){var a=0,b=0,d=0,e=0,f=0;a=i;i=i+96|0;e=a+80|0;d=a+4|0;b=a;c[b>>2]=0;c[9476]=c[392];if(!(c[9477]|0))c[9477]=ab(37976)|0;if(!(c[9478]|0))c[9478]=ab(37992)|0;c[e>>2]=0;while(1){if((c[e>>2]|0)>>>0>=7){d=12;break}if((((c[b>>2]|0)!=0?(zb[c[37192+52>>2]&63](c[b>>2]|0,d)|0)==0:0)?(c[d+12>>2]&61440|0)==16384:0)?(zb[c[37192+28>>2]&63](c[b>>2]|0,7)|0)==0:0){d=12;break}f=c[e>>2]|0;c[e>>2]=f+1;c[b>>2]=c[37904+(f<<2)>>2]}if((d|0)==12){i=a;return c[b>>2]|0}return 0}function eE(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+16|0;g=e+12|0;h=e;f=e+8|0;c[g>>2]=a;a=h;c[a>>2]=b;c[a+4>>2]=d;while(1){c[f>>2]=zb[c[37192+76>>2]&63](c[g>>2]|0,c[h>>2]|0)|0;if((c[f>>2]|0)>=0){d=4;break}if((c[(Ya()|0)>>2]|0)!=4){d=4;break}}if((d|0)==4){i=e;return c[f>>2]|0}return 0}function fE(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;g=i;i=i+32|0;h=g+16|0;l=g;k=g+12|0;j=g+8|0;c[h>>2]=a;a=l;c[a>>2]=b;c[a+4>>2]=d;c[k>>2]=e;c[j>>2]=f;a=l;a=gE(c[(c[h>>2]|0)+12>>2]|0,c[a>>2]|0,c[a+4>>2]|0,c[k>>2]|0,c[j>>2]|0,(c[h>>2]|0)+20|0)|0;i=g;return a|0}function gE(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;j=i;i=i+48|0;h=j+36|0;n=j+32|0;r=j+8|0;o=j+28|0;p=j+24|0;k=j+20|0;l=j+16|0;q=j;c[n>>2]=a;a=r;c[a>>2]=b;c[a+4>>2]=d;c[o>>2]=e;c[p>>2]=f;c[k>>2]=g;c[l>>2]=0;c[p>>2]=c[p>>2]&131071;while(1){a=va(c[n>>2]|0,c[r>>2]|0,0)|0;b=q;c[b>>2]=a;c[b+4>>2]=((a|0)<0)<<31>>31;b=q;a=r;if((c[b>>2]|0)!=(c[a>>2]|0)?1:(c[b+4>>2]|0)!=(c[a+4>>2]|0))break;c[l>>2]=pb[c[37192+136>>2]&31](c[n>>2]|0,c[o>>2]|0,c[p>>2]|0)|0;if((c[l>>2]|0)>=0){m=10;break}if((c[(Ya()|0)>>2]|0)!=4){m=10;break}}if((m|0)==10){if((c[l>>2]|0)<0&(c[k>>2]|0)!=0){a=c[(Ya()|0)>>2]|0;c[c[k>>2]>>2]=a}c[h>>2]=c[l>>2];a=c[h>>2]|0;i=j;return a|0}if(c[k>>2]|0){a=q;if((c[a>>2]|0)==-1?(c[a+4>>2]|0)==-1:0)l=c[(Ya()|0)>>2]|0;else l=0;c[c[k>>2]>>2]=l}c[h>>2]=-1;a=c[h>>2]|0;i=j;return a|0}function hE(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=i;i=i+16|0;f=e+8|0;h=e+4|0;g=e;c[h>>2]=a;c[g>>2]=b;switch(c[h>>2]|0){case 37:case 4:case 16:case 110:case 11:{c[f>>2]=5;break};case 1:{d=5;break};case 13:{if((c[g>>2]|0)==3850|(c[g>>2]|0)==2058|(c[g>>2]|0)==2314|(c[g>>2]|0)==3594)c[f>>2]=5;else d=5;break};default:c[f>>2]=c[g>>2]}if((d|0)==5)c[f>>2]=3;i=e;return c[f>>2]|0}function iE(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;f=i;i=i+16|0;g=f+12|0;e=f;c[g>>2]=a;c[f+8>>2]=b;c[f+4>>2]=d;c[e>>2]=Xa(c[g>>2]|0)|0;i=f;return c[e>>2]|0}function jE(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;j=i;i=i+48|0;o=j+36|0;k=j+32|0;p=j+8|0;q=j+28|0;g=j+24|0;m=j+20|0;n=j+16|0;l=j;c[k>>2]=a;a=p;c[a>>2]=b;c[a+4>>2]=d;c[q>>2]=e;c[g>>2]=f;c[n>>2]=0;c[g>>2]=c[g>>2]&131071;do{a=va(c[(c[k>>2]|0)+12>>2]|0,c[p>>2]|0,0)|0;b=l;c[b>>2]=a;c[b+4>>2]=((a|0)<0)<<31>>31;b=l;a=p;if((c[b>>2]|0)!=(c[a>>2]|0)?1:(c[b+4>>2]|0)!=(c[a+4>>2]|0)){h=3;break}c[m>>2]=pb[c[37192+100>>2]&31](c[(c[k>>2]|0)+12>>2]|0,c[q>>2]|0,c[g>>2]|0)|0;if((c[m>>2]|0)==(c[g>>2]|0))break;if((c[m>>2]|0)>=0){if((c[m>>2]|0)>0){c[g>>2]=(c[g>>2]|0)-(c[m>>2]|0);b=c[m>>2]|0;a=p;b=bF(c[a>>2]|0,c[a+4>>2]|0,b|0,((b|0)<0)<<31>>31|0)|0;a=p;c[a>>2]=b;c[a+4>>2]=D;c[n>>2]=(c[n>>2]|0)+(c[m>>2]|0);c[q>>2]=(c[q>>2]|0)+(c[m>>2]|0)}}else{if((c[(Ya()|0)>>2]|0)!=4){h=11;break}c[m>>2]=1}}while((c[m>>2]|0)>0);if((h|0)==3){a=l;if((c[a>>2]|0)==-1?(c[a+4>>2]|0)==-1:0){a=c[(Ya()|0)>>2]|0;c[(c[k>>2]|0)+20>>2]=a}else c[(c[k>>2]|0)+20>>2]=0;c[o>>2]=-1;a=c[o>>2]|0;i=j;return a|0}else if((h|0)==11){c[n>>2]=0;a=c[(Ya()|0)>>2]|0;c[(c[k>>2]|0)+20>>2]=a}c[o>>2]=(c[m>>2]|0)+(c[n>>2]|0);a=c[o>>2]|0;i=j;return a|0}function kE(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+16|0;e=b+4|0;d=b;c[e>>2]=a;c[d>>2]=c[e>>2];if((c[(c[d>>2]|0)+12>>2]|0)>=0){TD(c[d>>2]|0,c[(c[d>>2]|0)+12>>2]|0,26735);c[(c[d>>2]|0)+12>>2]=-1}hc(c[(c[d>>2]|0)+28>>2]|0);d=(c[d>>2]|0)+0|0;a=d+44|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(a|0));i=b;return 0}function lE(a,b){a=a|0;b=b|0;var d=0;d=i;i=i+16|0;c[d+4>>2]=a;c[d>>2]=b;i=d;return 38016}function mE(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;a=kE(c[d>>2]|0)|0;i=b;return a|0}function nE(a,b){a=a|0;b=b|0;var d=0;d=i;i=i+16|0;c[d+4>>2]=a;c[d>>2]=b;i=d;return 0}function oE(a,b){a=a|0;b=b|0;var d=0;d=i;i=i+16|0;c[d+4>>2]=a;c[d>>2]=b;i=d;return 0}function pE(a,b){a=a|0;b=b|0;var d=0,e=0;d=i;i=i+16|0;e=d;c[d+4>>2]=a;c[e>>2]=b;c[c[e>>2]>>2]=0;i=d;return 0}function qE(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;d=i;i=i+96|0;k=d+92|0;j=d+88|0;e=d+84|0;h=d+8|0;f=d+4|0;g=d;c[k>>2]=a;c[j>>2]=b;c[e>>2]=0;if(zb[c[37192+52>>2]&63](c[k>>2]|0,h)|0){k=c[e>>2]|0;i=d;return k|0}PD();c[f>>2]=c[9588];while(1){if(c[f>>2]|0)if((c[c[f>>2]>>2]|0)!=(c[h>>2]|0))a=1;else a=(c[(c[f>>2]|0)+4>>2]|0)!=(c[h+72>>2]|0);else a=0;b=c[f>>2]|0;if(!a)break;c[f>>2]=c[b+32>>2]}if(b){c[g>>2]=(c[f>>2]|0)+28;while(1){if(!(c[c[g>>2]>>2]|0))break;if((c[(c[c[g>>2]>>2]|0)+4>>2]|0)==(c[j>>2]|0))break;c[g>>2]=(c[c[g>>2]>>2]|0)+8}c[e>>2]=c[c[g>>2]>>2];if(c[e>>2]|0)c[c[g>>2]>>2]=c[(c[e>>2]|0)+8>>2]}RD();k=c[e>>2]|0;i=d;return k|0}function rE(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;o=i;i=i+624|0;q=o+100|0;l=o+96|0;k=o+92|0;n=o+88|0;h=o+84|0;j=o+80|0;p=o+104|0;r=o+76|0;m=o;c[q>>2]=b;c[l>>2]=d;c[k>>2]=e;c[n>>2]=f;c[h>>2]=g;c[j>>2]=0;c[c[k>>2]>>2]=0;c[c[n>>2]>>2]=0;c[c[h>>2]>>2]=0;if(!(c[l>>2]&526336)){if(!(c[l>>2]&8)){b=c[j>>2]|0;i=o;return b|0}c[c[k>>2]>>2]=384;b=c[j>>2]|0;i=o;return b|0}c[r>>2]=(Mb(c[q>>2]|0)|0)-1;while(1){if((a[(c[q>>2]|0)+(c[r>>2]|0)>>0]|0)==45)break;c[r>>2]=(c[r>>2]|0)+ -1}dF(p|0,c[q>>2]|0,c[r>>2]|0)|0;a[p+(c[r>>2]|0)>>0]=0;if(!(zb[c[37192+52>>2]&63](p,m)|0)){c[c[k>>2]>>2]=c[m+12>>2]&511;c[c[n>>2]>>2]=c[m+20>>2];c[c[h>>2]>>2]=c[m+24>>2];b=c[j>>2]|0;i=o;return b|0}else{c[j>>2]=1802;b=c[j>>2]|0;i=o;return b|0}return 0}function sE(a,d,f,g,h){a=a|0;d=d|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;j=i;i=i+48|0;o=j;s=j+40|0;r=j+36|0;u=j+32|0;n=j+28|0;t=j+24|0;p=j+20|0;q=j+16|0;k=j+12|0;l=j+8|0;m=j+4|0;c[s>>2]=a;c[r>>2]=d;c[u>>2]=f;c[n>>2]=g;c[t>>2]=h;c[q>>2]=c[u>>2];c[k>>2]=0;c[(c[q>>2]|0)+12>>2]=c[r>>2];c[(c[q>>2]|0)+4>>2]=c[s>>2];c[(c[q>>2]|0)+32>>2]=c[n>>2];b[(c[q>>2]|0)+18>>1]=c[t>>2]&255;if(pg((c[t>>2]&64|0)!=0?c[n>>2]|0:0,38136,1)|0){u=(c[q>>2]|0)+18|0;b[u>>1]=e[u>>1]|0|16}if(!(UE(c[(c[s>>2]|0)+16>>2]|0,1112)|0)){u=(c[q>>2]|0)+18|0;b[u>>1]=e[u>>1]|0|1}if(c[t>>2]&128)c[p>>2]=38016;else c[p>>2]=zb[c[c[(c[s>>2]|0)+20>>2]>>2]&63](c[n>>2]|0,c[q>>2]|0)|0;if((c[p>>2]|0)!=38144){if((c[p>>2]|0)==37112){c[m>>2]=(aF(c[n>>2]|0)|0)+6;c[l>>2]=fc(c[m>>2]|0)|0;if(!(c[l>>2]|0))c[k>>2]=7;else{a=c[m>>2]|0;u=c[l>>2]|0;c[o>>2]=c[n>>2];sc(a,u,38224,o)|0}c[(c[q>>2]|0)+24>>2]=c[l>>2]}}else{PD();c[k>>2]=tE(c[q>>2]|0,(c[q>>2]|0)+8|0)|0;if(c[k>>2]|0){TD(c[q>>2]|0,c[r>>2]|0,30114);c[r>>2]=-1}RD()}c[(c[q>>2]|0)+20>>2]=0;if(!(c[k>>2]|0)){c[c[q>>2]>>2]=c[p>>2];uE(c[q>>2]|0);u=c[k>>2]|0;i=j;return u|0}if((c[r>>2]|0)<0){u=c[k>>2]|0;i=j;return u|0}TD(c[q>>2]|0,c[r>>2]|0,30199);u=c[k>>2]|0;i=j;return u|0}function tE(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;h=i;i=i+112|0;e=h+104|0;j=h+100|0;g=h+96|0;l=h+92|0;m=h+88|0;d=h+80|0;k=h+4|0;f=h;c[j>>2]=a;c[g>>2]=b;c[f>>2]=0;c[m>>2]=c[(c[j>>2]|0)+12>>2];c[l>>2]=zb[c[37192+64>>2]&63](c[m>>2]|0,k)|0;if(c[l>>2]|0){m=c[(Ya()|0)>>2]|0;c[(c[j>>2]|0)+20>>2]=m;if((c[(c[j>>2]|0)+20>>2]|0)==75){c[e>>2]=22;m=c[e>>2]|0;i=h;return m|0}else{c[e>>2]=10;m=c[e>>2]|0;i=h;return m|0}}c[d+0>>2]=0;c[d+4>>2]=0;c[d>>2]=c[k>>2];c[d+4>>2]=c[k+72>>2];c[f>>2]=c[9588];while(1){if(c[f>>2]|0)b=(TE(d,c[f>>2]|0,8)|0)!=0;else b=0;j=c[f>>2]|0;if(!b)break;c[f>>2]=c[j+32>>2]}if(!j){c[f>>2]=fc(40)|0;if(!(c[f>>2]|0)){c[e>>2]=7;m=c[e>>2]|0;i=h;return m|0}b=(c[f>>2]|0)+0|0;j=b+40|0;do{c[b>>2]=0;b=b+4|0}while((b|0)<(j|0));m=c[f>>2]|0;c[m+0>>2]=c[d+0>>2];c[m+4>>2]=c[d+4>>2];c[(c[f>>2]|0)+16>>2]=1;c[(c[f>>2]|0)+32>>2]=c[9588];c[(c[f>>2]|0)+36>>2]=0;if(c[9588]|0)c[(c[9588]|0)+36>>2]=c[f>>2];c[9588]=c[f>>2]}else{m=(c[f>>2]|0)+16|0;c[m>>2]=(c[m>>2]|0)+1}c[c[g>>2]>>2]=c[f>>2];c[e>>2]=0;m=c[e>>2]|0;i=h;return m|0}function uE(a){a=a|0;var d=0,f=0,g=0,h=0,j=0;d=i;i=i+96|0;g=d;f=d+84|0;h=d+8|0;j=d+4|0;c[f>>2]=a;if((e[(c[f>>2]|0)+18>>1]|0)&256){i=d;return}c[j>>2]=zb[c[37192+64>>2]&63](c[(c[f>>2]|0)+12>>2]|0,h)|0;if(c[j>>2]|0){c[g>>2]=c[(c[f>>2]|0)+32>>2];tc(28,38232,g);j=(c[f>>2]|0)+18|0;b[j>>1]=e[j>>1]|0|256;i=d;return}if((c[h+16>>2]|0)==0?((e[(c[f>>2]|0)+18>>1]|0)&32|0)==0:0){c[g>>2]=c[(c[f>>2]|0)+32>>2];tc(28,38256,g);j=(c[f>>2]|0)+18|0;b[j>>1]=e[j>>1]|0|256;i=d;return}a=c[f>>2]|0;if((c[h+16>>2]|0)>>>0>1){c[g>>2]=c[a+32>>2];tc(28,38288,g);j=(c[f>>2]|0)+18|0;b[j>>1]=e[j>>1]|0|256;i=d;return}if(!(cE(a)|0)){i=d;return}c[g>>2]=c[(c[f>>2]|0)+32>>2];tc(28,38320,g);j=(c[f>>2]|0)+18|0;b[j>>1]=e[j>>1]|0|256;i=d;return}function vE(a){a=a|0;var b=0,d=0,e=0,f=0;d=i;i=i+16|0;e=d+8|0;b=d+4|0;f=d;c[e>>2]=a;c[b>>2]=0;c[f>>2]=c[e>>2];uE(c[f>>2]|0);xE(c[e>>2]|0,0)|0;PD();if((c[(c[f>>2]|0)+8>>2]|0)!=0?(c[(c[(c[f>>2]|0)+8>>2]|0)+24>>2]|0)!=0:0)EE(c[f>>2]|0);FE(c[f>>2]|0);c[b>>2]=kE(c[e>>2]|0)|0;RD();i=d;return c[b>>2]|0}function wE(e,f){e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;k=i;i=i+48|0;g=k+44|0;q=k+40|0;j=k+36|0;h=k+32|0;l=k+28|0;m=k+24|0;n=k+8|0;o=k;c[q>>2]=e;c[j>>2]=f;c[h>>2]=0;c[l>>2]=c[q>>2];c[o>>2]=0;if((d[(c[l>>2]|0)+16>>0]|0|0)>=(c[j>>2]|0)){c[g>>2]=0;q=c[g>>2]|0;i=k;return q|0}PD();c[m>>2]=c[(c[l>>2]|0)+8>>2];if((d[(c[l>>2]|0)+16>>0]|0|0)!=(d[(c[m>>2]|0)+12>>0]|0|0)?(c[j>>2]|0)>1?1:(d[(c[m>>2]|0)+12>>0]|0|0)>=3:0)c[h>>2]=5;else p=6;a:do if((p|0)==6){do if((c[j>>2]|0)==1){if((d[(c[m>>2]|0)+12>>0]|0|0)!=1?(d[(c[m>>2]|0)+12>>0]|0|0)!=2:0)break;a[(c[l>>2]|0)+16>>0]=1;q=(c[m>>2]|0)+8|0;c[q>>2]=(c[q>>2]|0)+1;q=(c[m>>2]|0)+24|0;c[q>>2]=(c[q>>2]|0)+1;break a}while(0);c[n+8>>2]=1;b[n+2>>1]=0;if((c[j>>2]|0)!=1){if((c[j>>2]|0)==4?(d[(c[l>>2]|0)+16>>0]|0|0)<3:0)p=13}else p=13;if((p|0)==13?(b[n>>1]=(c[j>>2]|0)==1?0:1,c[n+4>>2]=c[282],(CE(c[l>>2]|0,n)|0)!=0):0){c[o>>2]=c[(Ya()|0)>>2];c[h>>2]=hE(c[o>>2]|0,3850)|0;if((c[h>>2]|0)==5)break;c[(c[l>>2]|0)+20>>2]=c[o>>2];break}do if((c[j>>2]|0)!=1){if((c[j>>2]|0)==4?(c[(c[m>>2]|0)+8>>2]|0)>1:0){c[h>>2]=5;break}b[n>>1]=1;p=c[282]|0;if((c[j>>2]|0)==2){c[n+4>>2]=p+1;c[n+8>>2]=1}else{c[n+4>>2]=p+2;c[n+8>>2]=510}if((CE(c[l>>2]|0,n)|0)!=0?(c[o>>2]=c[(Ya()|0)>>2],c[h>>2]=hE(c[o>>2]|0,3850)|0,(c[h>>2]|0)!=5):0)c[(c[l>>2]|0)+20>>2]=c[o>>2]}else{c[n+4>>2]=(c[282]|0)+2;c[n+8>>2]=510;if(CE(c[l>>2]|0,n)|0){c[o>>2]=c[(Ya()|0)>>2];c[h>>2]=hE(c[o>>2]|0,3850)|0}c[n+4>>2]=c[282];c[n+8>>2]=1;b[n>>1]=2;q=(CE(c[l>>2]|0,n)|0)!=0;if(q&(c[h>>2]|0)==0){c[o>>2]=c[(Ya()|0)>>2];c[h>>2]=2058}if(!(c[h>>2]|0)){a[(c[l>>2]|0)+16>>0]=1;q=(c[m>>2]|0)+24|0;c[q>>2]=(c[q>>2]|0)+1;c[(c[m>>2]|0)+8>>2]=1;break}if((c[h>>2]|0)==5)break a;c[(c[l>>2]|0)+20>>2]=c[o>>2];break a}while(0);n=c[j>>2]|0;if(!(c[h>>2]|0)){a[(c[l>>2]|0)+16>>0]=n;a[(c[m>>2]|0)+12>>0]=c[j>>2];break}if((n|0)==4){a[(c[l>>2]|0)+16>>0]=3;a[(c[m>>2]|0)+12>>0]=3}}while(0);RD();c[g>>2]=c[h>>2];q=c[g>>2]|0;i=k;return q|0}function xE(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;a=BE(c[f>>2]|0,c[e>>2]|0,0)|0;i=d;return a|0}function yE(e,f){e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;m=i;i=i+48|0;j=m;o=m+40|0;l=m+36|0;n=m+32|0;k=m+28|0;h=m+24|0;g=m+8|0;c[o>>2]=e;c[l>>2]=f;c[n>>2]=0;c[k>>2]=0;c[h>>2]=c[o>>2];PD();if((d[(c[(c[h>>2]|0)+8>>2]|0)+12>>0]|0)>1)c[k>>2]=1;do if((c[k>>2]|0)==0?(a[(c[(c[h>>2]|0)+8>>2]|0)+13>>0]|0)==0:0){b[g+2>>1]=0;c[g+4>>2]=(c[282]|0)+1;c[g+8>>2]=1;b[g>>1]=1;e=c[9320]|0;o=c[(c[h>>2]|0)+12>>2]|0;c[j>>2]=g;if(pb[e&31](o,12,j)|0){c[n>>2]=3594;o=c[(Ya()|0)>>2]|0;c[(c[h>>2]|0)+20>>2]=o;break}if((b[g>>1]|0)!=2)c[k>>2]=1}while(0);RD();c[c[l>>2]>>2]=c[k>>2];i=m;return c[n>>2]|0}function zE(a,f,g,h,j){a=a|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;l=i;i=i+160|0;k=l+148|0;E=l+144|0;n=l+140|0;r=l+136|0;z=l+132|0;p=l+128|0;C=l+124|0;D=l+120|0;m=l+116|0;o=l+112|0;t=l+108|0;u=l+104|0;v=l+100|0;x=l+96|0;y=l+20|0;q=l+16|0;w=l+12|0;B=l+8|0;A=l+4|0;s=l;c[E>>2]=a;c[n>>2]=f;c[r>>2]=g;c[z>>2]=h;c[p>>2]=j;c[C>>2]=c[E>>2];c[o>>2]=0;c[t>>2]=SD()|0;if((c[(c[C>>2]|0)+36>>2]|0)==0?(c[o>>2]=AE(c[C>>2]|0)|0,(c[o>>2]|0)!=0):0){c[k>>2]=c[o>>2];E=c[k>>2]|0;i=l;return E|0}c[D>>2]=c[(c[C>>2]|0)+36>>2];c[m>>2]=c[c[D>>2]>>2];c[u>>2]=$(((c[n>>2]|0)+(c[t>>2]|0)|0)/(c[t>>2]|0)|0,c[t>>2]|0)|0;a:do if((e[(c[m>>2]|0)+20>>1]|0|0)<(c[u>>2]|0)){c[x>>2]=$(c[u>>2]|0,c[r>>2]|0)|0;c[(c[m>>2]|0)+16>>2]=c[r>>2];b:do if((c[(c[m>>2]|0)+12>>2]|0)>=0){if(zb[c[37192+64>>2]&63](c[(c[m>>2]|0)+12>>2]|0,y)|0){c[o>>2]=4874;break a}if((c[y+36>>2]|0)<(c[x>>2]|0)){if(!(c[z>>2]|0))break a;c[q>>2]=(c[y+36>>2]|0)/4096|0;while(1){if((c[q>>2]|0)>=((c[x>>2]|0)/4096|0|0))break b;E=(c[q>>2]<<12)+4096-1|0;if((gE(c[(c[m>>2]|0)+12>>2]|0,E,((E|0)<0)<<31>>31,1216,1,0)|0)!=1)break;c[q>>2]=(c[q>>2]|0)+1}c[w>>2]=c[(c[m>>2]|0)+8>>2];c[o>>2]=UD(4874,37616,c[w>>2]|0,29258)|0;break a}}while(0);c[v>>2]=jc(c[(c[m>>2]|0)+24>>2]|0,c[u>>2]<<2)|0;if(!(c[v>>2]|0)){c[o>>2]=3082;break}c[(c[m>>2]|0)+24>>2]=c[v>>2];while(1){if((e[(c[m>>2]|0)+20>>1]|0|0)>=(c[u>>2]|0))break a;c[B>>2]=$(c[r>>2]|0,c[t>>2]|0)|0;if((c[(c[m>>2]|0)+12>>2]|0)>=0){h=c[9362]|0;g=c[B>>2]|0;f=(d[(c[m>>2]|0)+22>>0]|0|0)!=0?1:3;a=c[(c[m>>2]|0)+12>>2]|0;E=c[r>>2]|0;E=lF(E|0,((E|0)<0)<<31>>31|0,e[(c[m>>2]|0)+20>>1]|0|0,0)|0;c[s>>2]=tb[h&1](0,g,f,1,a,E)|0;if((c[s>>2]|0)==(-1|0)){q=21;break}}else{c[s>>2]=fc(c[r>>2]|0)|0;if(!(c[s>>2]|0)){q=23;break}_E(c[s>>2]|0,0,c[r>>2]|0)|0}c[A>>2]=0;while(1){if((c[A>>2]|0)>=(c[t>>2]|0))break;E=$(c[r>>2]|0,c[A>>2]|0)|0;c[(c[(c[m>>2]|0)+24>>2]|0)+((e[(c[m>>2]|0)+20>>1]|0)+(c[A>>2]|0)<<2)>>2]=(c[s>>2]|0)+E;c[A>>2]=(c[A>>2]|0)+1}E=(c[m>>2]|0)+20|0;b[E>>1]=(e[E>>1]|0)+(c[t>>2]|0)}if((q|0)==21){c[o>>2]=UD(5386,37720,c[(c[m>>2]|0)+8>>2]|0,29285)|0;break}else if((q|0)==23){c[o>>2]=7;break}}while(0);if((e[(c[m>>2]|0)+20>>1]|0|0)>(c[n>>2]|0))c[c[p>>2]>>2]=c[(c[(c[m>>2]|0)+24>>2]|0)+(c[n>>2]<<2)>>2];else c[c[p>>2]>>2]=0;if((c[o>>2]|0)==0?(d[(c[m>>2]|0)+22>>0]|0|0)!=0:0)c[o>>2]=8;c[k>>2]=c[o>>2];E=c[k>>2]|0;i=l;return E|0}function AE(b){b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;m=i;i=i+128|0;r=m;g=m+112|0;h=m+108|0;j=m+104|0;l=m+100|0;k=m+96|0;p=m+92|0;e=m+88|0;q=m+84|0;o=m+8|0;n=m+4|0;c[h>>2]=b;c[j>>2]=0;c[j>>2]=fc(16)|0;if(!(c[j>>2]|0)){c[g>>2]=7;b=c[g>>2]|0;i=m;return b|0}b=c[j>>2]|0;c[b+0>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;PD();c[p>>2]=c[(c[h>>2]|0)+8>>2];c[l>>2]=c[(c[p>>2]|0)+20>>2];a:do if(!(c[l>>2]|0)){if((zb[c[37192+64>>2]&63](c[(c[h>>2]|0)+12>>2]|0,o)|0)!=0?(d[(c[p>>2]|0)+13>>0]|0|0)==0:0)c[k>>2]=1802;else f=7;do if((f|0)==7){c[q>>2]=6+(aF(c[(c[h>>2]|0)+32>>2]|0)|0);c[l>>2]=fc(36+(c[q>>2]|0)|0)|0;if(!(c[l>>2]|0)){c[k>>2]=7;break}_E(c[l>>2]|0,0,36+(c[q>>2]|0)|0)|0;b=(c[l>>2]|0)+36|0;c[(c[l>>2]|0)+8>>2]=b;c[e>>2]=b;q=c[q>>2]|0;b=c[e>>2]|0;c[r>>2]=c[(c[h>>2]|0)+32>>2];sc(q,b,38360,r)|0;c[(c[l>>2]|0)+12>>2]=-1;c[(c[(c[h>>2]|0)+8>>2]|0)+20>>2]=c[l>>2];c[c[l>>2]>>2]=c[(c[h>>2]|0)+8>>2];c[(c[l>>2]|0)+4>>2]=8;if(!(c[(c[l>>2]|0)+4>>2]|0)){c[k>>2]=7;break}if(d[(c[p>>2]|0)+13>>0]|0)break a;c[n>>2]=66;if(pg(c[(c[h>>2]|0)+32>>2]|0,38368,0)|0){c[n>>2]=0;a[(c[l>>2]|0)+22>>0]=1}b=ZD(c[e>>2]|0,c[n>>2]|0,c[o+12>>2]&511)|0;c[(c[l>>2]|0)+12>>2]=b;if((c[(c[l>>2]|0)+12>>2]|0)<0){b=Ij(29111)|0;c[k>>2]=UD(b,37536,c[e>>2]|0,29111)|0;break}pb[c[37192+244>>2]&31](c[(c[l>>2]|0)+12>>2]|0,c[o+20>>2]|0,c[o+24>>2]|0)|0;c[k>>2]=0;if((_D(c[l>>2]|0,1,128,1)|0)==0?(eE(c[(c[l>>2]|0)+12>>2]|0,0,0)|0)!=0:0)c[k>>2]=UD(4618,37568,c[e>>2]|0,29127)|0;if(!(c[k>>2]|0))c[k>>2]=_D(c[l>>2]|0,0,128,1)|0;if(!(c[k>>2]|0))break a}while(0);QD(c[h>>2]|0);hc(c[j>>2]|0);RD();c[g>>2]=c[k>>2];b=c[g>>2]|0;i=m;return b|0}while(0);c[c[j>>2]>>2]=c[l>>2];b=(c[l>>2]|0)+28|0;c[b>>2]=(c[b>>2]|0)+1;c[(c[h>>2]|0)+36>>2]=c[j>>2];RD();c[(c[j>>2]|0)+4>>2]=c[(c[l>>2]|0)+32>>2];c[(c[l>>2]|0)+32>>2]=c[j>>2];c[g>>2]=0;b=c[g>>2]|0;i=m;return b|0}function BE(e,f,g){e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;n=i;i=i+48|0;k=n+44|0;q=n+40|0;l=n+36|0;h=n+28|0;o=n+24|0;p=n+8|0;m=n;c[q>>2]=e;c[l>>2]=f;c[n+32>>2]=g;c[h>>2]=c[q>>2];c[m>>2]=0;if((d[(c[h>>2]|0)+16>>0]|0|0)<=(c[l>>2]|0)){c[k>>2]=0;q=c[k>>2]|0;i=n;return q|0}PD();c[o>>2]=c[(c[h>>2]|0)+8>>2];do if((d[(c[h>>2]|0)+16>>0]|0|0)>1){if((c[l>>2]|0)==1?(b[p>>1]=0,b[p+2>>1]=0,c[p+4>>2]=(c[282]|0)+2,c[p+8>>2]=510,(CE(c[h>>2]|0,p)|0)!=0):0){c[m>>2]=2314;q=c[(Ya()|0)>>2]|0;c[(c[h>>2]|0)+20>>2]=q;break}b[p>>1]=2;b[p+2>>1]=0;c[p+4>>2]=c[282];c[p+8>>2]=2;if(!(CE(c[h>>2]|0,p)|0)){a[(c[o>>2]|0)+12>>0]=1;j=10;break}else{c[m>>2]=2058;q=c[(Ya()|0)>>2]|0;c[(c[h>>2]|0)+20>>2]=q;break}}else j=10;while(0);if((j|0)==10?(c[l>>2]|0)==0:0){q=(c[o>>2]|0)+8|0;c[q>>2]=(c[q>>2]|0)+ -1;do if(!(c[(c[o>>2]|0)+8>>2]|0)){b[p>>1]=2;b[p+2>>1]=0;c[p+8>>2]=0;c[p+4>>2]=0;if(!(CE(c[h>>2]|0,p)|0)){a[(c[o>>2]|0)+12>>0]=0;break}else{c[m>>2]=2058;q=c[(Ya()|0)>>2]|0;c[(c[h>>2]|0)+20>>2]=q;a[(c[o>>2]|0)+12>>0]=0;a[(c[h>>2]|0)+16>>0]=0;break}}while(0);q=(c[o>>2]|0)+24|0;c[q>>2]=(c[q>>2]|0)+ -1;if(!(c[(c[o>>2]|0)+24>>2]|0))DE(c[h>>2]|0)}RD();if(!(c[m>>2]|0))a[(c[h>>2]|0)+16>>0]=c[l>>2];c[k>>2]=c[m>>2];q=c[k>>2]|0;i=n;return q|0}function CE(f,g){f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;k=i;i=i+48|0;n=k;j=k+40|0;l=k+36|0;h=k+32|0;m=k+28|0;o=k+24|0;p=k+8|0;c[l>>2]=f;c[h>>2]=g;c[o>>2]=c[(c[l>>2]|0)+8>>2];if(((e[(c[l>>2]|0)+18>>1]|0)&1|0)==0?(d[(c[o>>2]|0)+13>>0]|0|0)==0:0)g=9;else g=3;do if((g|0)==3)if(!((e[(c[l>>2]|0)+18>>1]|0)&2)){if(d[(c[o>>2]|0)+13>>0]|0){c[m>>2]=0;break}b[p+2>>1]=0;c[p+4>>2]=(c[282]|0)+2;c[p+8>>2]=510;b[p>>1]=1;h=c[9320]|0;f=c[(c[l>>2]|0)+12>>2]|0;c[n>>2]=p;c[m>>2]=pb[h&31](f,13,n)|0;if((c[m>>2]|0)>=0){a[(c[o>>2]|0)+13>>0]=1;f=(c[o>>2]|0)+24|0;c[f>>2]=(c[f>>2]|0)+1;break}c[j>>2]=c[m>>2];f=c[j>>2]|0;i=k;return f|0}else g=9;while(0);if((g|0)==9){g=c[9320]|0;f=c[(c[l>>2]|0)+12>>2]|0;c[n>>2]=c[h>>2];c[m>>2]=pb[g&31](f,13,n)|0}c[j>>2]=c[m>>2];f=c[j>>2]|0;i=k;return f|0}function DE(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;d=i;i=i+16|0;g=d+12|0;b=d+8|0;e=d+4|0;f=d;c[g>>2]=a;c[b>>2]=c[(c[g>>2]|0)+8>>2];c[e>>2]=c[(c[b>>2]|0)+28>>2];while(1){if(!(c[e>>2]|0))break;c[f>>2]=c[(c[e>>2]|0)+8>>2];TD(c[g>>2]|0,c[c[e>>2]>>2]|0,25997);hc(c[e>>2]|0);c[e>>2]=c[f>>2]}c[(c[b>>2]|0)+28>>2]=0;i=d;return}function EE(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;i=i+16|0;d=b+8|0;e=b+4|0;f=b;c[d>>2]=a;c[e>>2]=c[(c[d>>2]|0)+8>>2];c[f>>2]=c[(c[d>>2]|0)+28>>2];c[(c[f>>2]|0)+8>>2]=c[(c[e>>2]|0)+28>>2];c[(c[e>>2]|0)+28>>2]=c[f>>2];c[(c[d>>2]|0)+12>>2]=-1;c[(c[d>>2]|0)+28>>2]=0;i=b;return}function FE(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+16|0;e=b+4|0;d=b;c[e>>2]=a;c[d>>2]=c[(c[e>>2]|0)+8>>2];if(!(c[d>>2]|0)){i=b;return}a=(c[d>>2]|0)+16|0;c[a>>2]=(c[a>>2]|0)+ -1;if(c[(c[d>>2]|0)+16>>2]|0){i=b;return}DE(c[e>>2]|0);a=c[(c[d>>2]|0)+32>>2]|0;if(c[(c[d>>2]|0)+36>>2]|0)c[(c[(c[d>>2]|0)+36>>2]|0)+32>>2]=a;else c[9588]=a;if(c[(c[d>>2]|0)+32>>2]|0)c[(c[(c[d>>2]|0)+32>>2]|0)+36>>2]=c[(c[d>>2]|0)+36>>2];hc(c[d>>2]|0);i=b;return}function GE(a,b){a=a|0;b=b|0;var d=0;d=i;i=i+16|0;c[d+4>>2]=a;c[d>>2]=b;i=d;return 38144}function HE(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;i=i+16|0;d=b;e=b+8|0;c[e>>2]=a;if((c[c[e>>2]>>2]|0)<=(c[(c[e>>2]|0)+4>>2]|0)){e=d;c[e>>2]=0;c[e+4>>2]=0;e=d;e=c[e>>2]|0;d=d+4|0;d=c[d>>2]|0;D=d;i=b;return e|0}else{f=(c[e>>2]|0)+4|0;a=c[f>>2]|0;c[f>>2]=a+1;a=Ld(c[(c[(c[e>>2]|0)+8>>2]|0)+(a<<2)>>2]|0)|0;e=d;c[e>>2]=a;c[e+4>>2]=D;e=d;e=c[e>>2]|0;d=d+4|0;d=c[d>>2]|0;D=d;i=b;return e|0}return 0}function IE(a){a=a|0;var b=0,d=0,e=0,f=0.0,g=0;b=i;i=i+16|0;d=b;e=b+8|0;c[e>>2]=a;if((c[c[e>>2]>>2]|0)<=(c[(c[e>>2]|0)+4>>2]|0)){h[d>>3]=0.0;f=+h[d>>3];i=b;return+f}else{g=(c[e>>2]|0)+4|0;a=c[g>>2]|0;c[g>>2]=a+1;h[d>>3]=+Hd(c[(c[(c[e>>2]|0)+8>>2]|0)+(a<<2)>>2]|0);f=+h[d>>3];i=b;return+f}return 0.0}function JE(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0,l=0;e=i;i=i+32|0;f=e+20|0;j=e+16|0;l=e+12|0;g=e+8|0;k=e;c[j>>2]=b;c[l>>2]=d;if((c[c[l>>2]>>2]|0)<=0){a[f>>0]=48;b=a[f>>0]|0;i=e;return b|0}else{b=c[l>>2]|0;c[b>>2]=(c[b>>2]|0)+ -1;c[g>>2]=~~+h[c[j>>2]>>3];h[k>>3]=+(c[g>>2]|0);c[g>>2]=(c[g>>2]|0)+48;h[c[j>>2]>>3]=(+h[c[j>>2]>>3]- +h[k>>3])*10.0;a[f>>0]=c[g>>2];b=a[f>>0]|0;i=e;return b|0}return 0}function KE(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;i=i+16|0;d=b+4|0;e=b;c[e>>2]=a;if((c[c[e>>2]>>2]|0)<=(c[(c[e>>2]|0)+4>>2]|0)){c[d>>2]=0;e=c[d>>2]|0;i=b;return e|0}else{f=(c[e>>2]|0)+4|0;a=c[f>>2]|0;c[f>>2]=a+1;c[d>>2]=Ed(c[(c[(c[e>>2]|0)+8>>2]|0)+(a<<2)>>2]|0)|0;e=c[d>>2]|0;i=b;return e|0}return 0}function LE(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;f=i;i=i+16|0;j=f+4|0;g=f;h=f+8|0;c[j>>2]=b;c[g>>2]=d;a[h>>0]=e;if(((c[(c[j>>2]|0)+12>>2]|0)+(c[g>>2]|0)|0)>=(c[(c[j>>2]|0)+16>>2]|0)?(b=Xm(c[j>>2]|0,c[g>>2]|0)|0,c[g>>2]=b,(b|0)<=0):0){i=f;return}while(1){b=c[g>>2]|0;c[g>>2]=b+ -1;if((b|0)<=0)break;d=a[h>>0]|0;e=(c[j>>2]|0)+12|0;b=c[e>>2]|0;c[e>>2]=b+1;a[(c[(c[j>>2]|0)+8>>2]|0)+b>>0]=d}i=f;return}function ME(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;i=d;return c[48+(c[b>>2]<<2)>>2]|0}function NE(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;b=i;i=i+32|0;g=b+16|0;d=b+12|0;e=b;f=b+8|0;c[g>>2]=a;if(!(c[38]|0)){i=b;return}c[d>>2]=c[38];h=ME(0)|0;a=e;c[a>>2]=h;c[a+4>>2]=((h|0)<0)<<31>>31;c[f>>2]=c[39];c[38]=0;Bb[c[d>>2]&3](c[f>>2]|0,c[e>>2]|0,c[e+4>>2]|0,c[g>>2]|0);c[38]=c[d>>2];c[39]=c[f>>2];i=b;return}function OE(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;b=Bk(c[e>>2]|0,c[f>>2]|0)|0;a=c[(c[e>>2]|0)+520>>2]|0;c[a>>2]=(c[a>>2]|0)+b;i=d;return}function PE(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;g=i;i=i+32|0;j=g+16|0;e=g+12|0;f=g+8|0;d=g+4|0;h=g;c[j>>2]=a;c[e>>2]=b;c[f>>2]=ub[c[38640+52>>2]&31](c[j>>2]|0)|0;Bg(5,c[j>>2]|0);do if(c[38]|0){c[h>>2]=ME(0)|0;a=c[h>>2]|0;b=((a|0)<0)<<31>>31;h=144|0;j=c[f>>2]|0;j=ZE(c[h>>2]|0,c[h+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0;h=D;if((b|0)>(h|0)|(b|0)==(h|0)&a>>>0>=j>>>0){c[43]=1;NE(c[f>>2]|0);break}else{c[43]=0;break}}while(0);c[d>>2]=ub[c[38640+36>>2]&31](c[f>>2]|0)|0;if(!(c[d>>2]|0)){a=c[d>>2]|0;j=c[e>>2]|0;c[j>>2]=a;j=c[f>>2]|0;i=g;return j|0}c[f>>2]=Tb(c[d>>2]|0)|0;ic(0,c[f>>2]|0);ic(9,1);a=c[d>>2]|0;j=c[e>>2]|0;c[j>>2]=a;j=c[f>>2]|0;i=g;return j|0}function QE(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;b=i;do if(a>>>0<245){if(a>>>0<11)a=16;else a=a+11&-8;x=a>>>3;p=c[9750]|0;w=p>>>x;if(w&3){g=(w&1^1)+x|0;f=g<<1;d=39040+(f<<2)|0;f=39040+(f+2<<2)|0;h=c[f>>2]|0;j=h+8|0;e=c[j>>2]|0;do if((d|0)!=(e|0)){if(e>>>0<(c[9754]|0)>>>0)db();k=e+12|0;if((c[k>>2]|0)==(h|0)){c[k>>2]=d;c[f>>2]=e;break}else db()}else c[9750]=p&~(1<>2]=H|3;H=h+(H|4)|0;c[H>>2]=c[H>>2]|1;H=j;i=b;return H|0}v=c[9752]|0;if(a>>>0>v>>>0){if(w){h=2<>>12&16;h=h>>>d;j=h>>>5&8;h=h>>>j;f=h>>>2&4;h=h>>>f;g=h>>>1&2;h=h>>>g;e=h>>>1&1;e=(j|d|f|g|e)+(h>>>e)|0;h=e<<1;g=39040+(h<<2)|0;h=39040+(h+2<<2)|0;f=c[h>>2]|0;d=f+8|0;j=c[d>>2]|0;do if((g|0)!=(j|0)){if(j>>>0<(c[9754]|0)>>>0)db();k=j+12|0;if((c[k>>2]|0)==(f|0)){c[k>>2]=g;c[h>>2]=j;E=c[9752]|0;break}else db()}else{c[9750]=p&~(1<>2]=a|3;g=f+a|0;c[f+(a|4)>>2]=e|1;c[f+H>>2]=e;if(E){f=c[9755]|0;l=E>>>3;j=l<<1;h=39040+(j<<2)|0;k=c[9750]|0;l=1<>2]|0;if(k>>>0<(c[9754]|0)>>>0)db();else{D=j;C=k}}else{c[9750]=k|l;D=39040+(j+2<<2)|0;C=h}c[D>>2]=f;c[C+12>>2]=f;c[f+8>>2]=C;c[f+12>>2]=h}c[9752]=e;c[9755]=g;H=d;i=b;return H|0}p=c[9751]|0;if(p){d=(p&0-p)+ -1|0;G=d>>>12&16;d=d>>>G;F=d>>>5&8;d=d>>>F;H=d>>>2&4;d=d>>>H;f=d>>>1&2;d=d>>>f;e=d>>>1&1;e=c[39304+((F|G|H|f|e)+(d>>>e)<<2)>>2]|0;d=(c[e+4>>2]&-8)-a|0;f=e;while(1){g=c[f+16>>2]|0;if(!g){g=c[f+20>>2]|0;if(!g)break}f=(c[g+4>>2]&-8)-a|0;H=f>>>0>>0;d=H?f:d;f=g;e=H?g:e}h=c[9754]|0;if(e>>>0>>0)db();f=e+a|0;if(e>>>0>=f>>>0)db();g=c[e+24>>2]|0;k=c[e+12>>2]|0;do if((k|0)==(e|0)){k=e+20|0;j=c[k>>2]|0;if(!j){k=e+16|0;j=c[k>>2]|0;if(!j){B=0;break}}while(1){l=j+20|0;m=c[l>>2]|0;if(m){j=m;k=l;continue}l=j+16|0;m=c[l>>2]|0;if(!m)break;else{j=m;k=l}}if(k>>>0>>0)db();else{c[k>>2]=0;B=j;break}}else{j=c[e+8>>2]|0;if(j>>>0>>0)db();h=j+12|0;if((c[h>>2]|0)!=(e|0))db();l=k+8|0;if((c[l>>2]|0)==(e|0)){c[h>>2]=k;c[l>>2]=j;B=k;break}else db()}while(0);do if(g){j=c[e+28>>2]|0;h=39304+(j<<2)|0;if((e|0)==(c[h>>2]|0)){c[h>>2]=B;if(!B){c[9751]=c[9751]&~(1<>>0<(c[9754]|0)>>>0)db();h=g+16|0;if((c[h>>2]|0)==(e|0))c[h>>2]=B;else c[g+20>>2]=B;if(!B)break}h=c[9754]|0;if(B>>>0>>0)db();c[B+24>>2]=g;g=c[e+16>>2]|0;do if(g)if(g>>>0>>0)db();else{c[B+16>>2]=g;c[g+24>>2]=B;break}while(0);g=c[e+20>>2]|0;if(g)if(g>>>0<(c[9754]|0)>>>0)db();else{c[B+20>>2]=g;c[g+24>>2]=B;break}}while(0);if(d>>>0<16){H=d+a|0;c[e+4>>2]=H|3;H=e+(H+4)|0;c[H>>2]=c[H>>2]|1}else{c[e+4>>2]=a|3;c[e+(a|4)>>2]=d|1;c[e+(d+a)>>2]=d;h=c[9752]|0;if(h){g=c[9755]|0;k=h>>>3;l=k<<1;h=39040+(l<<2)|0;j=c[9750]|0;k=1<>2]|0;if(k>>>0<(c[9754]|0)>>>0)db();else{A=j;z=k}}else{c[9750]=j|k;A=39040+(l+2<<2)|0;z=h}c[A>>2]=g;c[z+12>>2]=g;c[g+8>>2]=z;c[g+12>>2]=h}c[9752]=d;c[9755]=f}H=e+8|0;i=b;return H|0}}}else if(a>>>0<=4294967231){z=a+11|0;a=z&-8;B=c[9751]|0;if(B){A=0-a|0;z=z>>>8;if(z)if(a>>>0>16777215)C=31;else{G=(z+1048320|0)>>>16&8;H=z<>>16&4;H=H<>>16&2;C=14-(F|G|C)+(H<>>15)|0;C=a>>>(C+7|0)&1|C<<1}else C=0;D=c[39304+(C<<2)>>2]|0;a:do if(!D){F=0;z=0}else{if((C|0)==31)z=0;else z=25-(C>>>1)|0;F=0;E=a<>2]&-8;H=G-a|0;if(H>>>0>>0)if((G|0)==(a|0)){A=H;F=D;z=D;break a}else{A=H;z=D}H=c[D+20>>2]|0;D=c[D+(E>>>31<<2)+16>>2]|0;F=(H|0)==0|(H|0)==(D|0)?F:H;if(!D)break;else E=E<<1}}while(0);if((F|0)==0&(z|0)==0){H=2<>>12&16;H=H>>>D;C=H>>>5&8;H=H>>>C;E=H>>>2&4;H=H>>>E;G=H>>>1&2;H=H>>>G;F=H>>>1&1;F=c[39304+((C|D|E|G|F)+(H>>>F)<<2)>>2]|0}if(F)while(1){H=(c[F+4>>2]&-8)-a|0;B=H>>>0>>0;A=B?H:A;z=B?F:z;B=c[F+16>>2]|0;if(B){F=B;continue}F=c[F+20>>2]|0;if(!F)break}if((z|0)!=0?A>>>0<((c[9752]|0)-a|0)>>>0:0){f=c[9754]|0;if(z>>>0>>0)db();d=z+a|0;if(z>>>0>=d>>>0)db();e=c[z+24>>2]|0;g=c[z+12>>2]|0;do if((g|0)==(z|0)){h=z+20|0;g=c[h>>2]|0;if(!g){h=z+16|0;g=c[h>>2]|0;if(!g){x=0;break}}while(1){j=g+20|0;k=c[j>>2]|0;if(k){g=k;h=j;continue}j=g+16|0;k=c[j>>2]|0;if(!k)break;else{g=k;h=j}}if(h>>>0>>0)db();else{c[h>>2]=0;x=g;break}}else{h=c[z+8>>2]|0;if(h>>>0>>0)db();j=h+12|0;if((c[j>>2]|0)!=(z|0))db();f=g+8|0;if((c[f>>2]|0)==(z|0)){c[j>>2]=g;c[f>>2]=h;x=g;break}else db()}while(0);do if(e){f=c[z+28>>2]|0;g=39304+(f<<2)|0;if((z|0)==(c[g>>2]|0)){c[g>>2]=x;if(!x){c[9751]=c[9751]&~(1<>>0<(c[9754]|0)>>>0)db();f=e+16|0;if((c[f>>2]|0)==(z|0))c[f>>2]=x;else c[e+20>>2]=x;if(!x)break}f=c[9754]|0;if(x>>>0>>0)db();c[x+24>>2]=e;e=c[z+16>>2]|0;do if(e)if(e>>>0>>0)db();else{c[x+16>>2]=e;c[e+24>>2]=x;break}while(0);e=c[z+20>>2]|0;if(e)if(e>>>0<(c[9754]|0)>>>0)db();else{c[x+20>>2]=e;c[e+24>>2]=x;break}}while(0);b:do if(A>>>0>=16){c[z+4>>2]=a|3;c[z+(a|4)>>2]=A|1;c[z+(A+a)>>2]=A;f=A>>>3;if(A>>>0<256){h=f<<1;e=39040+(h<<2)|0;g=c[9750]|0;f=1<>2]|0;if(g>>>0>=(c[9754]|0)>>>0){w=f;v=g;break}db()}while(0);c[w>>2]=d;c[v+12>>2]=d;c[z+(a+8)>>2]=v;c[z+(a+12)>>2]=e;break}e=A>>>8;if(e)if(A>>>0>16777215)e=31;else{G=(e+1048320|0)>>>16&8;H=e<>>16&4;H=H<>>16&2;e=14-(F|G|e)+(H<>>15)|0;e=A>>>(e+7|0)&1|e<<1}else e=0;f=39304+(e<<2)|0;c[z+(a+28)>>2]=e;c[z+(a+20)>>2]=0;c[z+(a+16)>>2]=0;g=c[9751]|0;h=1<>2]=d;c[z+(a+24)>>2]=f;c[z+(a+12)>>2]=d;c[z+(a+8)>>2]=d;break}h=c[f>>2]|0;if((e|0)==31)e=0;else e=25-(e>>>1)|0;c:do if((c[h+4>>2]&-8|0)!=(A|0)){e=A<>>31<<2)+16|0;f=c[g>>2]|0;if(!f)break;if((c[f+4>>2]&-8|0)==(A|0)){p=f;break c}else{e=e<<1;h=f}}if(g>>>0<(c[9754]|0)>>>0)db();else{c[g>>2]=d;c[z+(a+24)>>2]=h;c[z+(a+12)>>2]=d;c[z+(a+8)>>2]=d;break b}}else p=h;while(0);f=p+8|0;e=c[f>>2]|0;H=c[9754]|0;if(p>>>0>=H>>>0&e>>>0>=H>>>0){c[e+12>>2]=d;c[f>>2]=d;c[z+(a+8)>>2]=e;c[z+(a+12)>>2]=p;c[z+(a+24)>>2]=0;break}else db()}else{H=A+a|0;c[z+4>>2]=H|3;H=z+(H+4)|0;c[H>>2]=c[H>>2]|1}while(0);H=z+8|0;i=b;return H|0}}}else a=-1;while(0);p=c[9752]|0;if(p>>>0>=a>>>0){e=p-a|0;d=c[9755]|0;if(e>>>0>15){c[9755]=d+a;c[9752]=e;c[d+(a+4)>>2]=e|1;c[d+p>>2]=e;c[d+4>>2]=a|3}else{c[9752]=0;c[9755]=0;c[d+4>>2]=p|3;H=d+(p+4)|0;c[H>>2]=c[H>>2]|1}H=d+8|0;i=b;return H|0}p=c[9753]|0;if(p>>>0>a>>>0){G=p-a|0;c[9753]=G;H=c[9756]|0;c[9756]=H+a;c[H+(a+4)>>2]=G|1;c[H+4>>2]=a|3;H=H+8|0;i=b;return H|0}do if(!(c[9868]|0)){p=Pa(30)|0;if(!(p+ -1&p)){c[9870]=p;c[9869]=p;c[9871]=-1;c[9872]=-1;c[9873]=0;c[9861]=0;c[9868]=(eb(0)|0)&-16^1431655768;break}else db()}while(0);x=a+48|0;p=c[9870]|0;w=a+47|0;A=p+w|0;p=0-p|0;v=A&p;if(v>>>0<=a>>>0){H=0;i=b;return H|0}z=c[9860]|0;if((z|0)!=0?(G=c[9858]|0,H=G+v|0,H>>>0<=G>>>0|H>>>0>z>>>0):0){H=0;i=b;return H|0}d:do if(!(c[9861]&4)){B=c[9756]|0;e:do if(B){z=39448|0;while(1){C=c[z>>2]|0;if(C>>>0<=B>>>0?(y=z+4|0,(C+(c[y>>2]|0)|0)>>>0>B>>>0):0)break;z=c[z+8>>2]|0;if(!z){o=181;break e}}if(z){A=A-(c[9753]|0)&p;if(A>>>0<2147483647){p=La(A|0)|0;if((p|0)==((c[z>>2]|0)+(c[y>>2]|0)|0)){z=A;o=190}else{z=A;o=191}}else z=0}else o=181}else o=181;while(0);do if((o|0)==181){y=La(0)|0;if((y|0)!=(-1|0)){A=y;z=c[9869]|0;p=z+ -1|0;if(!(p&A))z=v;else z=v-A+(p+A&0-z)|0;p=c[9858]|0;A=p+z|0;if(z>>>0>a>>>0&z>>>0<2147483647){H=c[9860]|0;if((H|0)!=0?A>>>0<=p>>>0|A>>>0>H>>>0:0){z=0;break}p=La(z|0)|0;if((p|0)==(y|0)){p=y;o=190}else o=191}else z=0}else z=0}while(0);f:do if((o|0)==190){if((p|0)!=(-1|0)){q=z;o=201;break d}}else if((o|0)==191){o=0-z|0;do if((p|0)!=(-1|0)&z>>>0<2147483647&x>>>0>z>>>0?(u=c[9870]|0,u=w-z+u&0-u,u>>>0<2147483647):0)if((La(u|0)|0)==(-1|0)){La(o|0)|0;z=0;break f}else{z=u+z|0;break}while(0);if((p|0)==(-1|0))z=0;else{q=z;o=201;break d}}while(0);c[9861]=c[9861]|4;o=198}else{z=0;o=198}while(0);if((((o|0)==198?v>>>0<2147483647:0)?(t=La(v|0)|0,s=La(0)|0,(t|0)!=(-1|0)&(s|0)!=(-1|0)&t>>>0>>0):0)?(r=s-t|0,q=r>>>0>(a+40|0)>>>0,q):0){p=t;q=q?r:z;o=201}if((o|0)==201){r=(c[9858]|0)+q|0;c[9858]=r;if(r>>>0>(c[9859]|0)>>>0)c[9859]=r;r=c[9756]|0;g:do if(r){t=39448|0;while(1){s=c[t>>2]|0;v=t+4|0;w=c[v>>2]|0;if((p|0)==(s+w|0)){o=213;break}u=c[t+8>>2]|0;if(!u)break;else t=u}if(((o|0)==213?(c[t+12>>2]&8|0)==0:0)?r>>>0>=s>>>0&r>>>0

>>0:0){c[v>>2]=w+q;d=(c[9753]|0)+q|0;e=r+8|0;if(!(e&7))e=0;else e=0-e&7;H=d-e|0;c[9756]=r+e;c[9753]=H;c[r+(e+4)>>2]=H|1;c[r+(d+4)>>2]=40;c[9757]=c[9872];break}s=c[9754]|0;if(p>>>0>>0){c[9754]=p;s=p}v=p+q|0;t=39448|0;while(1){if((c[t>>2]|0)==(v|0)){o=223;break}u=c[t+8>>2]|0;if(!u)break;else t=u}if((o|0)==223?(c[t+12>>2]&8|0)==0:0){c[t>>2]=p;h=t+4|0;c[h>>2]=(c[h>>2]|0)+q;h=p+8|0;if(!(h&7))h=0;else h=0-h&7;j=p+(q+8)|0;if(!(j&7))n=0;else n=0-j&7;o=p+(n+q)|0;k=h+a|0;j=p+k|0;m=o-(p+h)-a|0;c[p+(h+4)>>2]=a|3;h:do if((o|0)!=(r|0)){if((o|0)==(c[9755]|0)){H=(c[9752]|0)+m|0;c[9752]=H;c[9755]=j;c[p+(k+4)>>2]=H|1;c[p+(H+k)>>2]=H;break}r=q+4|0;u=c[p+(r+n)>>2]|0;if((u&3|0)==1){a=u&-8;t=u>>>3;i:do if(u>>>0>=256){l=c[p+((n|24)+q)>>2]|0;t=c[p+(q+12+n)>>2]|0;do if((t|0)==(o|0)){v=n|16;u=p+(r+v)|0;t=c[u>>2]|0;if(!t){u=p+(v+q)|0;t=c[u>>2]|0;if(!t){g=0;break}}while(1){w=t+20|0;v=c[w>>2]|0;if(v){t=v;u=w;continue}w=t+16|0;v=c[w>>2]|0;if(!v)break;else{t=v;u=w}}if(u>>>0>>0)db();else{c[u>>2]=0;g=t;break}}else{u=c[p+((n|8)+q)>>2]|0;if(u>>>0>>0)db();v=u+12|0;if((c[v>>2]|0)!=(o|0))db();s=t+8|0;if((c[s>>2]|0)==(o|0)){c[v>>2]=t;c[s>>2]=u;g=t;break}else db()}while(0);if(!l)break;s=c[p+(q+28+n)>>2]|0;t=39304+(s<<2)|0;do if((o|0)!=(c[t>>2]|0)){if(l>>>0<(c[9754]|0)>>>0)db();s=l+16|0;if((c[s>>2]|0)==(o|0))c[s>>2]=g;else c[l+20>>2]=g;if(!g)break i}else{c[t>>2]=g;if(g)break;c[9751]=c[9751]&~(1<>>0>>0)db();c[g+24>>2]=l;s=n|16;l=c[p+(s+q)>>2]|0;do if(l)if(l>>>0>>0)db();else{c[g+16>>2]=l;c[l+24>>2]=g;break}while(0);l=c[p+(r+s)>>2]|0;if(!l)break;if(l>>>0<(c[9754]|0)>>>0)db();else{c[g+20>>2]=l;c[l+24>>2]=g;break}}else{g=c[p+((n|8)+q)>>2]|0;r=c[p+(q+12+n)>>2]|0;u=39040+(t<<1<<2)|0;do if((g|0)!=(u|0)){if(g>>>0>>0)db();if((c[g+12>>2]|0)==(o|0))break;db()}while(0);if((r|0)==(g|0)){c[9750]=c[9750]&~(1<>>0>>0)db();s=r+8|0;if((c[s>>2]|0)==(o|0)){l=s;break}db()}while(0);c[g+12>>2]=r;c[l>>2]=g}while(0);o=p+((a|n)+q)|0;m=a+m|0}g=o+4|0;c[g>>2]=c[g>>2]&-2;c[p+(k+4)>>2]=m|1;c[p+(m+k)>>2]=m;g=m>>>3;if(m>>>0<256){l=g<<1;d=39040+(l<<2)|0;m=c[9750]|0;g=1<>2]|0;if(g>>>0>=(c[9754]|0)>>>0){f=l;e=g;break}db()}while(0);c[f>>2]=j;c[e+12>>2]=j;c[p+(k+8)>>2]=e;c[p+(k+12)>>2]=d;break}e=m>>>8;do if(!e)e=0;else{if(m>>>0>16777215){e=31;break}G=(e+1048320|0)>>>16&8;H=e<>>16&4;H=H<>>16&2;e=14-(F|G|e)+(H<>>15)|0;e=m>>>(e+7|0)&1|e<<1}while(0);l=39304+(e<<2)|0;c[p+(k+28)>>2]=e;c[p+(k+20)>>2]=0;c[p+(k+16)>>2]=0;g=c[9751]|0;f=1<>2]=j;c[p+(k+24)>>2]=l;c[p+(k+12)>>2]=j;c[p+(k+8)>>2]=j;break}f=c[l>>2]|0;if((e|0)==31)e=0;else e=25-(e>>>1)|0;j:do if((c[f+4>>2]&-8|0)!=(m|0)){e=m<>>31<<2)+16|0;l=c[g>>2]|0;if(!l)break;if((c[l+4>>2]&-8|0)==(m|0)){d=l;break j}else{e=e<<1;f=l}}if(g>>>0<(c[9754]|0)>>>0)db();else{c[g>>2]=j;c[p+(k+24)>>2]=f;c[p+(k+12)>>2]=j;c[p+(k+8)>>2]=j;break h}}else d=f;while(0);e=d+8|0;f=c[e>>2]|0;H=c[9754]|0;if(d>>>0>=H>>>0&f>>>0>=H>>>0){c[f+12>>2]=j;c[e>>2]=j;c[p+(k+8)>>2]=f;c[p+(k+12)>>2]=d;c[p+(k+24)>>2]=0;break}else db()}else{H=(c[9753]|0)+m|0;c[9753]=H;c[9756]=j;c[p+(k+4)>>2]=H|1}while(0);H=p+(h|8)|0;i=b;return H|0}e=39448|0;while(1){d=c[e>>2]|0;if(d>>>0<=r>>>0?(n=c[e+4>>2]|0,m=d+n|0,m>>>0>r>>>0):0)break;e=c[e+8>>2]|0}e=d+(n+ -39)|0;if(!(e&7))e=0;else e=0-e&7;d=d+(n+ -47+e)|0;d=d>>>0<(r+16|0)>>>0?r:d;e=d+8|0;f=p+8|0;if(!(f&7))f=0;else f=0-f&7;H=q+ -40-f|0;c[9756]=p+f;c[9753]=H;c[p+(f+4)>>2]=H|1;c[p+(q+ -36)>>2]=40;c[9757]=c[9872];c[d+4>>2]=27;c[e+0>>2]=c[9862];c[e+4>>2]=c[9863];c[e+8>>2]=c[9864];c[e+12>>2]=c[9865];c[9862]=p;c[9863]=q;c[9865]=0;c[9864]=e;e=d+28|0;c[e>>2]=7;if((d+32|0)>>>0>>0)do{H=e;e=e+4|0;c[e>>2]=7}while((H+8|0)>>>0>>0);if((d|0)!=(r|0)){d=d-r|0;e=r+(d+4)|0;c[e>>2]=c[e>>2]&-2;c[r+4>>2]=d|1;c[r+d>>2]=d;e=d>>>3;if(d>>>0<256){f=e<<1;d=39040+(f<<2)|0;g=c[9750]|0;e=1<>2]|0;if(e>>>0>=(c[9754]|0)>>>0){k=f;j=e;break}db()}while(0);c[k>>2]=r;c[j+12>>2]=r;c[r+8>>2]=j;c[r+12>>2]=d;break}e=d>>>8;if(e)if(d>>>0>16777215)e=31;else{G=(e+1048320|0)>>>16&8;H=e<>>16&4;H=H<>>16&2;e=14-(F|G|e)+(H<>>15)|0;e=d>>>(e+7|0)&1|e<<1}else e=0;j=39304+(e<<2)|0;c[r+28>>2]=e;c[r+20>>2]=0;c[r+16>>2]=0;f=c[9751]|0;g=1<>2]=r;c[r+24>>2]=j;c[r+12>>2]=r;c[r+8>>2]=r;break}f=c[j>>2]|0;if((e|0)==31)e=0;else e=25-(e>>>1)|0;k:do if((c[f+4>>2]&-8|0)!=(d|0)){e=d<>>31<<2)+16|0;g=c[f>>2]|0;if(!g)break;if((c[g+4>>2]&-8|0)==(d|0)){h=g;break k}else{e=e<<1;j=g}}if(f>>>0<(c[9754]|0)>>>0)db();else{c[f>>2]=r;c[r+24>>2]=j;c[r+12>>2]=r;c[r+8>>2]=r;break g}}else h=f;while(0);e=h+8|0;d=c[e>>2]|0;H=c[9754]|0;if(h>>>0>=H>>>0&d>>>0>=H>>>0){c[d+12>>2]=r;c[e>>2]=r;c[r+8>>2]=d;c[r+12>>2]=h;c[r+24>>2]=0;break}else db()}}else{H=c[9754]|0;if((H|0)==0|p>>>0>>0)c[9754]=p;c[9862]=p;c[9863]=q;c[9865]=0;c[9759]=c[9868];c[9758]=-1;d=0;do{H=d<<1;G=39040+(H<<2)|0;c[39040+(H+3<<2)>>2]=G;c[39040+(H+2<<2)>>2]=G;d=d+1|0}while((d|0)!=32);d=p+8|0;if(!(d&7))d=0;else d=0-d&7;H=q+ -40-d|0;c[9756]=p+d;c[9753]=H;c[p+(d+4)>>2]=H|1;c[p+(q+ -36)>>2]=40;c[9757]=c[9872]}while(0);d=c[9753]|0;if(d>>>0>a>>>0){G=d-a|0;c[9753]=G;H=c[9756]|0;c[9756]=H+a;c[H+(a+4)>>2]=G|1;c[H+4>>2]=a|3;H=H+8|0;i=b;return H|0}}c[(Ya()|0)>>2]=12;H=0;i=b;return H|0}function RE(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;b=i;if(!a){i=b;return}q=a+ -8|0;r=c[9754]|0;if(q>>>0>>0)db();n=c[a+ -4>>2]|0;m=n&3;if((m|0)==1)db();j=n&-8;h=a+(j+ -8)|0;do if(!(n&1)){u=c[q>>2]|0;if(!m){i=b;return}q=-8-u|0;n=a+q|0;m=u+j|0;if(n>>>0>>0)db();if((n|0)==(c[9755]|0)){e=a+(j+ -4)|0;o=c[e>>2]|0;if((o&3|0)!=3){e=n;o=m;break}c[9752]=m;c[e>>2]=o&-2;c[a+(q+4)>>2]=m|1;c[h>>2]=m;i=b;return}t=u>>>3;if(u>>>0<256){e=c[a+(q+8)>>2]|0;o=c[a+(q+12)>>2]|0;p=39040+(t<<1<<2)|0;if((e|0)!=(p|0)){if(e>>>0>>0)db();if((c[e+12>>2]|0)!=(n|0))db()}if((o|0)==(e|0)){c[9750]=c[9750]&~(1<>>0>>0)db();p=o+8|0;if((c[p>>2]|0)==(n|0))s=p;else db()}else s=o+8|0;c[e+12>>2]=o;c[s>>2]=e;e=n;o=m;break}s=c[a+(q+24)>>2]|0;t=c[a+(q+12)>>2]|0;do if((t|0)==(n|0)){u=a+(q+20)|0;t=c[u>>2]|0;if(!t){u=a+(q+16)|0;t=c[u>>2]|0;if(!t){p=0;break}}while(1){v=t+20|0;w=c[v>>2]|0;if(w){t=w;u=v;continue}v=t+16|0;w=c[v>>2]|0;if(!w)break;else{t=w;u=v}}if(u>>>0>>0)db();else{c[u>>2]=0;p=t;break}}else{u=c[a+(q+8)>>2]|0;if(u>>>0>>0)db();r=u+12|0;if((c[r>>2]|0)!=(n|0))db();v=t+8|0;if((c[v>>2]|0)==(n|0)){c[r>>2]=t;c[v>>2]=u;p=t;break}else db()}while(0);if(s){r=c[a+(q+28)>>2]|0;t=39304+(r<<2)|0;if((n|0)==(c[t>>2]|0)){c[t>>2]=p;if(!p){c[9751]=c[9751]&~(1<>>0<(c[9754]|0)>>>0)db();r=s+16|0;if((c[r>>2]|0)==(n|0))c[r>>2]=p;else c[s+20>>2]=p;if(!p){e=n;o=m;break}}r=c[9754]|0;if(p>>>0>>0)db();c[p+24>>2]=s;s=c[a+(q+16)>>2]|0;do if(s)if(s>>>0>>0)db();else{c[p+16>>2]=s;c[s+24>>2]=p;break}while(0);q=c[a+(q+20)>>2]|0;if(q)if(q>>>0<(c[9754]|0)>>>0)db();else{c[p+20>>2]=q;c[q+24>>2]=p;e=n;o=m;break}else{e=n;o=m}}else{e=n;o=m}}else{e=q;o=j}while(0);if(e>>>0>=h>>>0)db();m=a+(j+ -4)|0;n=c[m>>2]|0;if(!(n&1))db();if(!(n&2)){if((h|0)==(c[9756]|0)){w=(c[9753]|0)+o|0;c[9753]=w;c[9756]=e;c[e+4>>2]=w|1;if((e|0)!=(c[9755]|0)){i=b;return}c[9755]=0;c[9752]=0;i=b;return}if((h|0)==(c[9755]|0)){w=(c[9752]|0)+o|0;c[9752]=w;c[9755]=e;c[e+4>>2]=w|1;c[e+w>>2]=w;i=b;return}o=(n&-8)+o|0;m=n>>>3;do if(n>>>0>=256){l=c[a+(j+16)>>2]|0;m=c[a+(j|4)>>2]|0;do if((m|0)==(h|0)){n=a+(j+12)|0;m=c[n>>2]|0;if(!m){n=a+(j+8)|0;m=c[n>>2]|0;if(!m){k=0;break}}while(1){q=m+20|0;p=c[q>>2]|0;if(p){m=p;n=q;continue}p=m+16|0;q=c[p>>2]|0;if(!q)break;else{m=q;n=p}}if(n>>>0<(c[9754]|0)>>>0)db();else{c[n>>2]=0;k=m;break}}else{n=c[a+j>>2]|0;if(n>>>0<(c[9754]|0)>>>0)db();p=n+12|0;if((c[p>>2]|0)!=(h|0))db();q=m+8|0;if((c[q>>2]|0)==(h|0)){c[p>>2]=m;c[q>>2]=n;k=m;break}else db()}while(0);if(l){m=c[a+(j+20)>>2]|0;n=39304+(m<<2)|0;if((h|0)==(c[n>>2]|0)){c[n>>2]=k;if(!k){c[9751]=c[9751]&~(1<>>0<(c[9754]|0)>>>0)db();m=l+16|0;if((c[m>>2]|0)==(h|0))c[m>>2]=k;else c[l+20>>2]=k;if(!k)break}h=c[9754]|0;if(k>>>0>>0)db();c[k+24>>2]=l;l=c[a+(j+8)>>2]|0;do if(l)if(l>>>0>>0)db();else{c[k+16>>2]=l;c[l+24>>2]=k;break}while(0);h=c[a+(j+12)>>2]|0;if(h)if(h>>>0<(c[9754]|0)>>>0)db();else{c[k+20>>2]=h;c[h+24>>2]=k;break}}}else{k=c[a+j>>2]|0;j=c[a+(j|4)>>2]|0;a=39040+(m<<1<<2)|0;if((k|0)!=(a|0)){if(k>>>0<(c[9754]|0)>>>0)db();if((c[k+12>>2]|0)!=(h|0))db()}if((j|0)==(k|0)){c[9750]=c[9750]&~(1<>>0<(c[9754]|0)>>>0)db();a=j+8|0;if((c[a>>2]|0)==(h|0))l=a;else db()}else l=j+8|0;c[k+12>>2]=j;c[l>>2]=k}while(0);c[e+4>>2]=o|1;c[e+o>>2]=o;if((e|0)==(c[9755]|0)){c[9752]=o;i=b;return}}else{c[m>>2]=n&-2;c[e+4>>2]=o|1;c[e+o>>2]=o}h=o>>>3;if(o>>>0<256){j=h<<1;d=39040+(j<<2)|0;k=c[9750]|0;h=1<>2]|0;if(h>>>0<(c[9754]|0)>>>0)db();else{f=j;g=h}}else{c[9750]=k|h;f=39040+(j+2<<2)|0;g=d}c[f>>2]=e;c[g+12>>2]=e;c[e+8>>2]=g;c[e+12>>2]=d;i=b;return}f=o>>>8;if(f)if(o>>>0>16777215)f=31;else{v=(f+1048320|0)>>>16&8;w=f<>>16&4;w=w<>>16&2;f=14-(u|v|f)+(w<>>15)|0;f=o>>>(f+7|0)&1|f<<1}else f=0;g=39304+(f<<2)|0;c[e+28>>2]=f;c[e+20>>2]=0;c[e+16>>2]=0;j=c[9751]|0;h=1<>2]|0;if((f|0)==31)f=0;else f=25-(f>>>1)|0;b:do if((c[g+4>>2]&-8|0)!=(o|0)){f=o<>>31<<2)+16|0;h=c[j>>2]|0;if(!h)break;if((c[h+4>>2]&-8|0)==(o|0)){d=h;break b}else{f=f<<1;g=h}}if(j>>>0<(c[9754]|0)>>>0)db();else{c[j>>2]=e;c[e+24>>2]=g;c[e+12>>2]=e;c[e+8>>2]=e;break a}}else d=g;while(0);g=d+8|0;f=c[g>>2]|0;w=c[9754]|0;if(d>>>0>=w>>>0&f>>>0>=w>>>0){c[f+12>>2]=e;c[g>>2]=e;c[e+8>>2]=f;c[e+12>>2]=d;c[e+24>>2]=0;break}else db()}else{c[9751]=j|h;c[g>>2]=e;c[e+24>>2]=g;c[e+12>>2]=e;c[e+8>>2]=e}while(0);w=(c[9758]|0)+ -1|0;c[9758]=w;if(!w)d=39456|0;else{i=b;return}while(1){d=c[d>>2]|0;if(!d)break;else d=d+8|0}c[9758]=-1;i=b;return}function SE(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;do if(a){if(b>>>0>4294967231){c[(Ya()|0)>>2]=12;e=0;break}if(b>>>0<11)e=16;else e=b+11&-8;e=WE(a+ -8|0,e)|0;if(e){e=e+8|0;break}e=QE(b)|0;if(!e)e=0;else{f=c[a+ -4>>2]|0;f=(f&-8)-((f&3|0)==0?8:4)|0;dF(e|0,a|0,(f>>>0>>0?f:b)|0)|0;RE(a)}}else e=QE(b)|0;while(0);i=d;return e|0}function TE(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;e=i;a:do if(!d)d=0;else{while(1){f=a[b>>0]|0;g=a[c>>0]|0;if(f<<24>>24!=g<<24>>24)break;d=d+ -1|0;if(!d){d=0;break a}else{b=b+1|0;c=c+1|0}}d=(f&255)-(g&255)|0}while(0);i=e;return d|0}function UE(b,c){b=b|0;c=c|0;var d=0,e=0,f=0;d=i;f=a[b>>0]|0;e=a[c>>0]|0;if(f<<24>>24==0?1:f<<24>>24!=e<<24>>24)c=f;else{do{b=b+1|0;c=c+1|0;f=a[b>>0]|0;e=a[c>>0]|0}while(!(f<<24>>24==0?1:f<<24>>24!=e<<24>>24));c=f}i=d;return(c&255)-(e&255)|0}function VE(b,c,e){b=b|0;c=c|0;e=e|0;var f=0,g=0,h=0;f=i;if(!e){b=0;i=f;return b|0}g=a[b>>0]|0;a:do if(!(g<<24>>24))g=0;else while(1){e=e+ -1|0;h=a[c>>0]|0;if(!(h<<24>>24!=0&(e|0)!=0&g<<24>>24==h<<24>>24))break a;b=b+1|0;c=c+1|0;g=a[b>>0]|0;if(!(g<<24>>24)){g=0;break}}while(0);h=(g&255)-(d[c>>0]|0)|0;i=f;return h|0}function WE(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;d=i;f=a+4|0;e=c[f>>2]|0;l=e&-8;j=a+l|0;m=c[9754]|0;h=e&3;if(!((h|0)!=1&a>>>0>=m>>>0&a>>>0>>0))db();g=a+(l|4)|0;p=c[g>>2]|0;if(!(p&1))db();if(!h){if(b>>>0<256){r=0;i=d;return r|0}if(l>>>0>=(b+4|0)>>>0?(l-b|0)>>>0<=c[9870]<<1>>>0:0){r=a;i=d;return r|0}r=0;i=d;return r|0}if(l>>>0>=b>>>0){h=l-b|0;if(h>>>0<=15){r=a;i=d;return r|0}c[f>>2]=e&1|b|2;c[a+(b+4)>>2]=h|3;c[g>>2]=c[g>>2]|1;XE(a+b|0,h);r=a;i=d;return r|0}if((j|0)==(c[9756]|0)){g=(c[9753]|0)+l|0;if(g>>>0<=b>>>0){r=0;i=d;return r|0}r=g-b|0;c[f>>2]=e&1|b|2;c[a+(b+4)>>2]=r|1;c[9756]=a+b;c[9753]=r;r=a;i=d;return r|0}if((j|0)==(c[9755]|0)){h=(c[9752]|0)+l|0;if(h>>>0>>0){r=0;i=d;return r|0}g=h-b|0;if(g>>>0>15){c[f>>2]=e&1|b|2;c[a+(b+4)>>2]=g|1;c[a+h>>2]=g;e=a+(h+4)|0;c[e>>2]=c[e>>2]&-2;e=a+b|0}else{c[f>>2]=e&1|h|2;e=a+(h+4)|0;c[e>>2]=c[e>>2]|1;e=0;g=0}c[9752]=g;c[9755]=e;r=a;i=d;return r|0}if(p&2){r=0;i=d;return r|0}g=(p&-8)+l|0;if(g>>>0>>0){r=0;i=d;return r|0}h=g-b|0;o=p>>>3;do if(p>>>0>=256){n=c[a+(l+24)>>2]|0;o=c[a+(l+12)>>2]|0;do if((o|0)==(j|0)){p=a+(l+20)|0;o=c[p>>2]|0;if(!o){p=a+(l+16)|0;o=c[p>>2]|0;if(!o){k=0;break}}while(1){r=o+20|0;q=c[r>>2]|0;if(q){o=q;p=r;continue}q=o+16|0;r=c[q>>2]|0;if(!r)break;else{o=r;p=q}}if(p>>>0>>0)db();else{c[p>>2]=0;k=o;break}}else{p=c[a+(l+8)>>2]|0;if(p>>>0>>0)db();m=p+12|0;if((c[m>>2]|0)!=(j|0))db();q=o+8|0;if((c[q>>2]|0)==(j|0)){c[m>>2]=o;c[q>>2]=p;k=o;break}else db()}while(0);if(n){m=c[a+(l+28)>>2]|0;o=39304+(m<<2)|0;if((j|0)==(c[o>>2]|0)){c[o>>2]=k;if(!k){c[9751]=c[9751]&~(1<>>0<(c[9754]|0)>>>0)db();m=n+16|0;if((c[m>>2]|0)==(j|0))c[m>>2]=k;else c[n+20>>2]=k;if(!k)break}j=c[9754]|0;if(k>>>0>>0)db();c[k+24>>2]=n;m=c[a+(l+16)>>2]|0;do if(m)if(m>>>0>>0)db();else{c[k+16>>2]=m;c[m+24>>2]=k;break}while(0);j=c[a+(l+20)>>2]|0;if(j)if(j>>>0<(c[9754]|0)>>>0)db();else{c[k+20>>2]=j;c[j+24>>2]=k;break}}}else{k=c[a+(l+8)>>2]|0;l=c[a+(l+12)>>2]|0;p=39040+(o<<1<<2)|0;if((k|0)!=(p|0)){if(k>>>0>>0)db();if((c[k+12>>2]|0)!=(j|0))db()}if((l|0)==(k|0)){c[9750]=c[9750]&~(1<>>0>>0)db();m=l+8|0;if((c[m>>2]|0)==(j|0))n=m;else db()}else n=l+8|0;c[k+12>>2]=l;c[n>>2]=k}while(0);if(h>>>0<16){c[f>>2]=g|e&1|2;r=a+(g|4)|0;c[r>>2]=c[r>>2]|1;r=a;i=d;return r|0}else{c[f>>2]=e&1|b|2;c[a+(b+4)>>2]=h|3;r=a+(g|4)|0;c[r>>2]=c[r>>2]|1;XE(a+b|0,h);r=a;i=d;return r|0}return 0} + + + +function qo(f,g,h,j,k){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0;r=i;i=i+272|0;Y=r;u=r+264|0;E=r+260|0;o=r+256|0;p=r+252|0;H=r+248|0;O=r+244|0;C=r+240|0;pa=r+236|0;oa=r+232|0;K=r+228|0;J=r+224|0;V=r+220|0;s=r+216|0;U=r+212|0;R=r+208|0;L=r+204|0;A=r+200|0;P=r+196|0;x=r+192|0;I=r+188|0;w=r+184|0;M=r+180|0;N=r+176|0;X=r+156|0;ia=r+152|0;na=r+148|0;D=r+271|0;v=r+270|0;Z=r+269|0;ma=r+268|0;n=r+144|0;z=r+140|0;B=r+136|0;t=r+132|0;l=r+128|0;y=r+124|0;T=r+120|0;q=r+116|0;F=r+112|0;G=r+108|0;da=r+104|0;ha=r+100|0;fa=r+96|0;ga=r+92|0;la=r+88|0;ka=r+84|0;ja=r+80|0;ca=r+48|0;aa=r+44|0;ea=r+40|0;$=r+36|0;_=r+32|0;Q=r+28|0;S=r+24|0;m=r+20|0;W=r+16|0;c[u>>2]=f;c[E>>2]=g;c[o>>2]=h;c[p>>2]=j;c[H>>2]=k;c[L>>2]=0;c[A>>2]=0;c[P>>2]=0;c[x>>2]=-1;c[w>>2]=0;c[M>>2]=0;c[N>>2]=0;a[D>>0]=0;a[v>>0]=0;a[ma>>0]=1;c[n>>2]=0;c[z>>2]=0;c[B>>2]=0;c[t>>2]=0;c[q>>2]=0;c[O>>2]=c[c[u>>2]>>2];c[X+0>>2]=0;c[X+4>>2]=0;c[X+8>>2]=0;c[X+12>>2]=0;c[X+16>>2]=0;a:do if((c[(c[u>>2]|0)+64>>2]|0)==0?(d[(c[O>>2]|0)+64>>0]|0)==0:0){if(((c[o>>2]|0)!=0?(e[(c[o>>2]|0)+6>>1]&128|0)!=0:0)?(c[(c[o>>2]|0)+52>>2]|0)==0:0){c[n>>2]=c[c[o>>2]>>2];c[c[o>>2]>>2]=0;tn(c[O>>2]|0,c[o>>2]|0);c[o>>2]=0}c[pa>>2]=c[(c[E>>2]|0)+16>>2];if((((((c[pa>>2]|0)!=0?(c[C>>2]=Ft(c[u>>2]|0,c[E>>2]|0)|0,(c[C>>2]|0)!=0):0)?(c[ia>>2]=Ve(c[O>>2]|0,c[(c[C>>2]|0)+68>>2]|0)|0,c[na>>2]=(c[(c[O>>2]|0)+16>>2]|0)+(c[ia>>2]<<4),c[oa>>2]=c[c[na>>2]>>2],(ap(c[u>>2]|0,18,c[c[C>>2]>>2]|0,0,c[oa>>2]|0)|0)==0):0)?(a[Z>>0]=((d[(c[C>>2]|0)+44>>0]&32|0)==0^1)&1,c[G>>2]=lu(c[u>>2]|0,c[C>>2]|0,108,0,da)|0,c[F>>2]=(c[(c[C>>2]|0)+12>>2]|0)!=0&1,(Qp(c[u>>2]|0,c[C>>2]|0)|0)==0):0)?(mu(c[u>>2]|0,c[C>>2]|0,c[da>>2]|0)|0)==0:0)?(c[s>>2]=dp(c[u>>2]|0)|0,(c[s>>2]|0)!=0):0){if(!(d[(c[u>>2]|0)+18>>0]|0))nu(c[s>>2]|0);if(c[o>>2]|0)na=1;else na=(c[G>>2]|0)!=0;pp(c[u>>2]|0,na&1,c[ia>>2]|0);if(!((c[p>>2]|0)==0?(ou(c[u>>2]|0,c[C>>2]|0,c[o>>2]|0,c[H>>2]|0,c[ia>>2]|0)|0)!=0:0))ba=19;b:do if((ba|0)==19){c[B>>2]=pu(c[u>>2]|0,c[ia>>2]|0,c[C>>2]|0)|0;f=(c[(c[u>>2]|0)+72>>2]|0)+1|0;c[l>>2]=f;c[y>>2]=f;f=(c[u>>2]|0)+72|0;c[f>>2]=(c[f>>2]|0)+((b[(c[C>>2]|0)+38>>1]|0)+1);if(d[(c[C>>2]|0)+44>>0]&16){c[y>>2]=(c[y>>2]|0)+1;f=(c[u>>2]|0)+72|0;c[f>>2]=(c[f>>2]|0)+1}c[T>>2]=(c[y>>2]|0)+1;c:do if(c[p>>2]|0){c[K>>2]=0;while(1){if((c[K>>2]|0)>=(c[(c[p>>2]|0)+4>>2]|0))break;c[(c[c[p>>2]>>2]|0)+(c[K>>2]<<3)+4>>2]=-1;c[K>>2]=(c[K>>2]|0)+1}c[K>>2]=0;while(1){if((c[K>>2]|0)>=(c[(c[p>>2]|0)+4>>2]|0))break c;c[J>>2]=0;while(1){if((c[J>>2]|0)>=(b[(c[C>>2]|0)+38>>1]|0))break;f=(xc(c[(c[c[p>>2]>>2]|0)+(c[K>>2]<<3)>>2]|0,c[(c[(c[C>>2]|0)+4>>2]|0)+((c[J>>2]|0)*24|0)>>2]|0)|0)==0;na=c[J>>2]|0;if(f){ba=30;break}c[J>>2]=na+1}do if((ba|0)==30){ba=0;c[(c[c[p>>2]>>2]|0)+(c[K>>2]<<3)+4>>2]=na;if((c[K>>2]|0)!=(c[J>>2]|0))a[ma>>0]=0;if((c[J>>2]|0)!=(b[(c[C>>2]|0)+36>>1]|0))break;c[x>>2]=c[K>>2]}while(0);if((c[J>>2]|0)>=(b[(c[C>>2]|0)+38>>1]|0)){f=(Zq(c[(c[c[p>>2]>>2]|0)+(c[K>>2]<<3)>>2]|0)|0)==0;if(f|(a[Z>>0]|0)!=0)break;c[x>>2]=c[K>>2];a[ma>>0]=0}c[K>>2]=(c[K>>2]|0)+1}f=c[u>>2]|0;g=c[(c[c[p>>2]>>2]|0)+(c[K>>2]<<3)>>2]|0;c[Y>>2]=c[E>>2];c[Y+4>>2]=0;c[Y+8>>2]=g;Se(f,23432,Y);a[(c[u>>2]|0)+17>>0]=1;break a}while(0);d:do if(c[o>>2]|0){g=(c[u>>2]|0)+72|0;f=(c[g>>2]|0)+1|0;c[g>>2]=f;c[ha>>2]=f;c[fa>>2]=(Mr(c[s>>2]|0)|0)+1;ip(c[s>>2]|0,20,c[ha>>2]|0,0,c[fa>>2]|0)|0;$s(X,13,c[ha>>2]|0);c[X+8>>2]=(d[ma>>0]|0)!=0?c[T>>2]|0:0;c[X+12>>2]=b[(c[C>>2]|0)+38>>1];c[ga>>2]=ao(c[u>>2]|0,c[o>>2]|0,X)|0;c[z>>2]=c[X+8>>2];if(c[ga>>2]|0)break a;if(d[(c[O>>2]|0)+64>>0]|0)break a;Ir(c[s>>2]|0,21,c[ha>>2]|0)|0;zp(c[s>>2]|0,(c[fa>>2]|0)-1|0);c[R>>2]=c[c[c[o>>2]>>2]>>2];if(!((c[G>>2]|0)==0?(qu(c[u>>2]|0,c[ia>>2]|0,c[C>>2]|0)|0)==0:0))a[D>>0]=1;if(!(a[D>>0]|0))break;g=(c[u>>2]|0)+68|0;f=c[g>>2]|0;c[g>>2]=f+1;c[w>>2]=f;c[la>>2]=kp(c[u>>2]|0)|0;c[ka>>2]=kp(c[u>>2]|0)|0;fp(c[s>>2]|0,57,c[w>>2]|0,c[R>>2]|0)|0;c[ja>>2]=Ir(c[s>>2]|0,22,c[X+4>>2]|0)|0;ip(c[s>>2]|0,49,c[z>>2]|0,c[R>>2]|0,c[la>>2]|0)|0;fp(c[s>>2]|0,74,c[w>>2]|0,c[ka>>2]|0)|0;ip(c[s>>2]|0,75,c[w>>2]|0,c[la>>2]|0,c[ka>>2]|0)|0;fp(c[s>>2]|0,16,0,c[ja>>2]|0)|0;zp(c[s>>2]|0,c[ja>>2]|0);lp(c[u>>2]|0,c[la>>2]|0);lp(c[u>>2]|0,c[ka>>2]|0)}else{c[ca+0>>2]=0;c[ca+4>>2]=0;c[ca+8>>2]=0;c[ca+12>>2]=0;c[ca+16>>2]=0;c[ca+20>>2]=0;c[ca+24>>2]=0;c[ca+28>>2]=0;c[ca>>2]=c[u>>2];c[w>>2]=-1;if(c[n>>2]|0)fa=c[c[n>>2]>>2]|0;else fa=0;c[R>>2]=fa;c[K>>2]=0;while(1){if((c[K>>2]|0)>=(c[R>>2]|0))break d;if(vq(ca,c[(c[(c[n>>2]|0)+4>>2]|0)+((c[K>>2]|0)*20|0)>>2]|0)|0)break a;c[K>>2]=(c[K>>2]|0)+1}}while(0);if((c[p>>2]|0)==0&(c[R>>2]|0)>0)c[x>>2]=b[(c[C>>2]|0)+36>>1];e:do if(d[(c[C>>2]|0)+44>>0]&16){c[K>>2]=0;while(1){if((c[K>>2]|0)>=(b[(c[C>>2]|0)+38>>1]|0))break e;c[L>>2]=(c[L>>2]|0)+((d[(c[(c[C>>2]|0)+4>>2]|0)+((c[K>>2]|0)*24|0)+23>>0]&2|0)!=0?1:0);c[K>>2]=(c[K>>2]|0)+1}}while(0);do if((c[p>>2]|0)==0&(c[R>>2]|0)!=0){if((c[R>>2]|0)==((b[(c[C>>2]|0)+38>>1]|0)-(c[L>>2]|0)|0))break;f=c[u>>2]|0;h=(b[(c[C>>2]|0)+38>>1]|0)-(c[L>>2]|0)|0;g=c[R>>2]|0;c[Y>>2]=c[E>>2];c[Y+4>>2]=0;c[Y+8>>2]=h;c[Y+12>>2]=g;Se(f,23464,Y);break a}while(0);do if(c[p>>2]|0){if((c[R>>2]|0)==(c[(c[p>>2]|0)+4>>2]|0))break;f=c[u>>2]|0;g=c[(c[p>>2]|0)+4>>2]|0;c[Y>>2]=c[R>>2];c[Y+4>>2]=g;Se(f,23520,Y);break a}while(0);if(c[(c[O>>2]|0)+24>>2]&128){g=(c[u>>2]|0)+72|0;f=(c[g>>2]|0)+1|0;c[g>>2]=f;c[t>>2]=f;fp(c[s>>2]|0,25,0,c[t>>2]|0)|0}f:do if(!(c[F>>2]|0)){c[aa>>2]=du(c[u>>2]|0,c[C>>2]|0,55,-1,0,A,P)|0;c[q>>2]=Qe(c[O>>2]|0,(c[aa>>2]|0)+1<<2,0)|0;if(!(c[q>>2]|0))break a;c[K>>2]=0;while(1){if((c[K>>2]|0)>=(c[aa>>2]|0))break f;g=(c[u>>2]|0)+72|0;f=(c[g>>2]|0)+1|0;c[g>>2]=f;c[(c[q>>2]|0)+(c[K>>2]<<2)>>2]=f;c[K>>2]=(c[K>>2]|0)+1}}while(0);do if(a[D>>0]|0){c[M>>2]=Ir(c[s>>2]|0,108,c[w>>2]|0)|0;c[N>>2]=Mr(c[s>>2]|0)|0}else{if(!(c[o>>2]|0))break;f=Ir(c[s>>2]|0,22,c[X+4>>2]|0)|0;c[N>>2]=f;c[M>>2]=f}while(0);c[I>>2]=Nr(c[s>>2]|0)|0;if(c[da>>2]&1){c[ea>>2]=ys(c[u>>2]|0,(b[(c[C>>2]|0)+38>>1]|0)+1|0)|0;if((c[x>>2]|0)<0)fp(c[s>>2]|0,25,-1,c[ea>>2]|0)|0;else{if(a[D>>0]|0)ip(c[s>>2]|0,47,c[w>>2]|0,c[x>>2]|0,c[ea>>2]|0)|0;else Os(c[u>>2]|0,c[(c[(c[n>>2]|0)+4>>2]|0)+((c[x>>2]|0)*20|0)>>2]|0,c[ea>>2]|0);c[$>>2]=Ir(c[s>>2]|0,77,c[ea>>2]|0)|0;fp(c[s>>2]|0,25,-1,c[ea>>2]|0)|0;zp(c[s>>2]|0,c[$>>2]|0);Ir(c[s>>2]|0,38,c[ea>>2]|0)|0}c[K>>2]=0;while(1){if((c[K>>2]|0)>=(b[(c[C>>2]|0)+38>>1]|0))break;g:do if(!(c[p>>2]|0))c[J>>2]=c[K>>2];else{c[J>>2]=0;while(1){if((c[J>>2]|0)>=(c[(c[p>>2]|0)+4>>2]|0))break g;if((c[(c[c[p>>2]>>2]|0)+(c[J>>2]<<3)+4>>2]|0)==(c[K>>2]|0))break g;c[J>>2]=(c[J>>2]|0)+1}}while(0);do if((a[D>>0]|0)!=0|(c[n>>2]|0)!=0){if((c[p>>2]|0)!=0?(c[J>>2]|0)>=(c[(c[p>>2]|0)+4>>2]|0):0){ba=95;break}if(a[D>>0]|0){ip(c[s>>2]|0,47,c[w>>2]|0,c[J>>2]|0,(c[ea>>2]|0)+(c[K>>2]|0)+1|0)|0;break}else{ru(c[u>>2]|0,c[(c[(c[n>>2]|0)+4>>2]|0)+((c[J>>2]|0)*20|0)>>2]|0,(c[ea>>2]|0)+(c[K>>2]|0)+1|0);break}}else ba=95;while(0);if((ba|0)==95){ba=0;Os(c[u>>2]|0,c[(c[(c[C>>2]|0)+4>>2]|0)+((c[K>>2]|0)*24|0)+4>>2]|0,(c[ea>>2]|0)+(c[K>>2]|0)+1|0)}c[K>>2]=(c[K>>2]|0)+1}if(!(c[F>>2]|0))su(c[s>>2]|0,c[C>>2]|0,(c[ea>>2]|0)+1|0);tu(c[u>>2]|0,c[G>>2]|0,108,0,1,c[C>>2]|0,(c[ea>>2]|0)-(b[(c[C>>2]|0)+38>>1]|0)-1|0,c[H>>2]|0,c[I>>2]|0);Bs(c[u>>2]|0,c[ea>>2]|0,(b[(c[C>>2]|0)+38>>1]|0)+1|0)}do if(!(c[F>>2]|0)){if(d[(c[C>>2]|0)+44>>0]&16)fp(c[s>>2]|0,28,0,c[l>>2]|0)|0;h:do if((c[x>>2]|0)>=0){do if(a[D>>0]|0)ip(c[s>>2]|0,47,c[w>>2]|0,c[x>>2]|0,c[y>>2]|0)|0;else{if(c[o>>2]|0){fp(c[s>>2]|0,33,(c[z>>2]|0)+(c[x>>2]|0)|0,c[y>>2]|0)|0;break}Os(c[u>>2]|0,c[(c[(c[n>>2]|0)+4>>2]|0)+((c[x>>2]|0)*20|0)>>2]|0,c[y>>2]|0);c[_>>2]=dt(c[s>>2]|0,-1)|0;if(!(c[_>>2]|0))break;if((d[c[_>>2]>>0]|0)!=28)break;if(d[(c[C>>2]|0)+44>>0]&16)break;a[v>>0]=1;a[c[_>>2]>>0]=74;c[(c[_>>2]|0)+4>>2]=c[A>>2];c[(c[_>>2]|0)+8>>2]=c[y>>2];c[(c[_>>2]|0)+12>>2]=c[B>>2]}while(0);if(a[v>>0]|0)break;X=c[s>>2]|0;if(d[(c[C>>2]|0)+44>>0]&16){c[Q>>2]=Mr(X)|0;fp(c[s>>2]|0,76,c[y>>2]|0,(c[Q>>2]|0)+2|0)|0}else{c[Q>>2]=Ir(X,77,c[y>>2]|0)|0;ip(c[s>>2]|0,74,c[A>>2]|0,c[y>>2]|0,c[B>>2]|0)|0;zp(c[s>>2]|0,c[Q>>2]|0)}Ir(c[s>>2]|0,38,c[y>>2]|0)|0}else{do if(!(d[(c[C>>2]|0)+44>>0]&16)){if(d[Z>>0]|0)break;ip(c[s>>2]|0,74,c[A>>2]|0,c[y>>2]|0,c[B>>2]|0)|0;a[v>>0]=1;break h}while(0);fp(c[s>>2]|0,28,0,c[y>>2]|0)|0}while(0);uu(c[u>>2]|0,c[B>>2]|0,c[y>>2]|0);c[L>>2]=0;c[K>>2]=0;while(1){if((c[K>>2]|0)>=(b[(c[C>>2]|0)+38>>1]|0))break;c[S>>2]=(c[y>>2]|0)+1+(c[K>>2]|0);i:do if((c[K>>2]|0)==(b[(c[C>>2]|0)+36>>1]|0))Ir(c[s>>2]|0,29,c[S>>2]|0)|0;else{j:do if(!(c[p>>2]|0))if(d[(c[(c[C>>2]|0)+4>>2]|0)+((c[K>>2]|0)*24|0)+23>>0]&2){c[J>>2]=-1;c[L>>2]=(c[L>>2]|0)+1;break}else{c[J>>2]=(c[K>>2]|0)-(c[L>>2]|0);break}else{c[J>>2]=0;while(1){if((c[J>>2]|0)>=(c[(c[p>>2]|0)+4>>2]|0))break j;if((c[(c[c[p>>2]>>2]|0)+(c[J>>2]<<3)+4>>2]|0)==(c[K>>2]|0))break j;c[J>>2]=(c[J>>2]|0)+1}}while(0);do if(!((c[J>>2]|0)<0|(c[R>>2]|0)==0)){if((c[p>>2]|0)!=0?(c[J>>2]|0)>=(c[(c[p>>2]|0)+4>>2]|0):0)break;if(a[D>>0]|0){ip(c[s>>2]|0,47,c[w>>2]|0,c[J>>2]|0,c[S>>2]|0)|0;break i}if(!(c[o>>2]|0)){Os(c[u>>2]|0,c[(c[(c[n>>2]|0)+4>>2]|0)+((c[J>>2]|0)*20|0)>>2]|0,c[S>>2]|0);break i}if((c[z>>2]|0)==(c[T>>2]|0))break i;fp(c[s>>2]|0,34,(c[z>>2]|0)+(c[J>>2]|0)|0,c[S>>2]|0)|0;break i}while(0);vu(c[u>>2]|0,c[(c[(c[C>>2]|0)+4>>2]|0)+((c[K>>2]|0)*24|0)+4>>2]|0,c[S>>2]|0)}while(0);c[K>>2]=(c[K>>2]|0)+1}if(d[(c[C>>2]|0)+44>>0]&16){c[m>>2]=Rp(c[O>>2]|0,c[C>>2]|0)|0;wu(c[u>>2]|0,c[C>>2]|0);hp(c[s>>2]|0,15,1,(b[(c[C>>2]|0)+38>>1]|0)+2|0,c[l>>2]|0,c[m>>2]|0,-10)|0;Xe(c[s>>2]|0,((c[H>>2]|0)==10?2:c[H>>2]|0)&255);Sp(c[u>>2]|0);break}else{xu(c[u>>2]|0,c[C>>2]|0,c[q>>2]|0,c[A>>2]|0,c[P>>2]|0,c[l>>2]|0,0,(c[x>>2]|0)>=0&255,c[H>>2]&255,c[I>>2]|0,W);yu(c[u>>2]|0,c[C>>2]|0,0,c[l>>2]|0,0,0);zu(c[u>>2]|0,c[C>>2]|0,c[A>>2]|0,c[P>>2]|0,c[l>>2]|0,c[q>>2]|0,0,d[v>>0]|0,(c[W>>2]|0)==0&1);break}}while(0);if(c[(c[O>>2]|0)+24>>2]&128)fp(c[s>>2]|0,37,c[t>>2]|0,1)|0;if(c[G>>2]|0)tu(c[u>>2]|0,c[G>>2]|0,108,0,2,c[C>>2]|0,(c[T>>2]|0)-2-(b[(c[C>>2]|0)+38>>1]|0)|0,c[H>>2]|0,c[I>>2]|0);Pr(c[s>>2]|0,c[I>>2]|0);do if(a[D>>0]|0){fp(c[s>>2]|0,9,c[w>>2]|0,c[N>>2]|0)|0;zp(c[s>>2]|0,c[M>>2]|0);Ir(c[s>>2]|0,61,c[w>>2]|0)|0}else{if(!(c[o>>2]|0))break;fp(c[s>>2]|0,16,0,c[N>>2]|0)|0;zp(c[s>>2]|0,c[M>>2]|0)}while(0);if((c[F>>2]|0)!=0?1:(d[(c[C>>2]|0)+44>>0]&16|0)!=0)break;if((c[A>>2]|0)<(c[P>>2]|0))Ir(c[s>>2]|0,61,c[A>>2]|0)|0;c[V>>2]=0;c[U>>2]=c[(c[C>>2]|0)+8>>2];while(1){if(!(c[U>>2]|0))break b;Ir(c[s>>2]|0,61,(c[V>>2]|0)+(c[P>>2]|0)|0)|0;c[U>>2]=c[(c[U>>2]|0)+20>>2];c[V>>2]=(c[V>>2]|0)+1}}while(0);if((d[(c[u>>2]|0)+18>>0]|0)==0?(c[(c[u>>2]|0)+412>>2]|0)==0:0)Au(c[u>>2]|0);if(((c[(c[O>>2]|0)+24>>2]&128|0)!=0?(a[(c[u>>2]|0)+18>>0]|0)==0:0)?(c[(c[u>>2]|0)+412>>2]|0)==0:0){fp(c[s>>2]|0,35,c[t>>2]|0,1)|0;Nt(c[s>>2]|0,1);Ot(c[s>>2]|0,0,0,23552,0)|0}}}while(0);vn(c[O>>2]|0,c[E>>2]|0);sn(c[O>>2]|0,c[n>>2]|0);tn(c[O>>2]|0,c[o>>2]|0);xn(c[O>>2]|0,c[p>>2]|0);Xb(c[O>>2]|0,c[q>>2]|0);i=r;return}function ro(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;f=i;i=i+32|0;e=f+16|0;k=f+12|0;g=f+8|0;h=f+4|0;j=f;c[k>>2]=a;c[g>>2]=b;c[h>>2]=d;if((c[g>>2]|0)==0?(c[g>>2]=se(c[k>>2]|0,8,0)|0,(c[g>>2]|0)==0):0){c[e>>2]=0;a=c[e>>2]|0;i=f;return a|0}d=ku(c[k>>2]|0,c[c[g>>2]>>2]|0,8,(c[g>>2]|0)+4|0,j)|0;c[c[g>>2]>>2]=d;d=c[k>>2]|0;if((c[j>>2]|0)<0){xn(d,c[g>>2]|0);c[e>>2]=0;a=c[e>>2]|0;i=f;return a|0}else{a=Zo(d,c[h>>2]|0)|0;c[(c[c[g>>2]>>2]|0)+(c[j>>2]<<3)>>2]=a;c[e>>2]=c[g>>2];a=c[e>>2]|0;i=f;return a|0}return 0}function so(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+16|0;f=e+8|0;h=e+4|0;g=e;c[f>>2]=a;c[h>>2]=b;c[g>>2]=d;c[(c[f>>2]|0)+4>>2]=c[c[h>>2]>>2];c[(c[f>>2]|0)+8>>2]=(c[c[g>>2]>>2]|0)+(c[(c[g>>2]|0)+4>>2]|0);i=e;return}function to(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;n=i;i=i+48|0;o=n+8|0;j=n+36|0;r=n+32|0;h=n+28|0;m=n+24|0;k=n+42|0;p=n+20|0;f=n;q=n+16|0;s=n+40|0;l=n+12|0;c[j>>2]=d;c[r>>2]=e;c[h>>2]=c[c[j>>2]>>2];if(!(c[r>>2]|0)){i=n;return}c[m>>2]=c[(c[r>>2]|0)+8>>2];do if(a[(c[m>>2]|0)+1>>0]|0){b[k>>1]=0;c[p>>2]=Mb(c[m>>2]|0)|0;if((a[c[m>>2]>>0]|0)==63){c[q>>2]=0==(wg((c[m>>2]|0)+1|0,f,(c[p>>2]|0)-1|0,1)|0)&1;d=c[f>>2]&65535;b[k>>1]=d;b[(c[r>>2]|0)+32>>1]=d;d=f;e=c[d+4>>2]|0;if(!(!((c[q>>2]|0)==0|((e|0)<0|(e|0)==0&(c[d>>2]|0)>>>0<1))?(e=f,r=c[e+4>>2]|0,d=c[(c[h>>2]|0)+124>>2]|0,s=((d|0)<0)<<31>>31,!((r|0)>(s|0)|((r|0)==(s|0)?(c[e>>2]|0)>>>0>d>>>0:0))):0)){d=c[j>>2]|0;c[o>>2]=c[(c[h>>2]|0)+124>>2];Se(d,23360,o);b[k>>1]=0}e=f;r=c[e+4>>2]|0;d=c[(c[j>>2]|0)+440>>2]|0;s=((d|0)<0)<<31>>31;if((r|0)>(s|0)|((r|0)==(s|0)?(c[e>>2]|0)>>>0>d>>>0:0))c[(c[j>>2]|0)+440>>2]=c[f>>2]}else{b[s>>1]=0;while(1){if((b[s>>1]|0)>=(c[(c[j>>2]|0)+444>>2]|0))break;if((c[(c[(c[j>>2]|0)+472>>2]|0)+(b[s>>1]<<2)>>2]|0)!=0?(UE(c[(c[(c[j>>2]|0)+472>>2]|0)+(b[s>>1]<<2)>>2]|0,c[m>>2]|0)|0)==0:0){g=14;break}b[s>>1]=(b[s>>1]|0)+1<<16>>16}if((g|0)==14){d=(b[s>>1]|0)+1&65535;b[k>>1]=d;b[(c[r>>2]|0)+32>>1]=d}if(!(b[k>>1]|0)){e=(c[j>>2]|0)+440|0;d=(c[e>>2]|0)+1|0;c[e>>2]=d;d=d&65535;b[(c[r>>2]|0)+32>>1]=d;b[k>>1]=d}}if((b[k>>1]|0)>0){do if((b[k>>1]|0)>(c[(c[j>>2]|0)+444>>2]|0)){c[l>>2]=Fk(c[h>>2]|0,c[(c[j>>2]|0)+472>>2]|0,b[k>>1]<<2,0)|0;if(!(c[l>>2]|0)){i=n;return}else{c[(c[j>>2]|0)+472>>2]=c[l>>2];_E((c[l>>2]|0)+(c[(c[j>>2]|0)+444>>2]<<2)|0,0,(b[k>>1]|0)-(c[(c[j>>2]|0)+444>>2]|0)<<2|0)|0;c[(c[j>>2]|0)+444>>2]=b[k>>1];break}}while(0);if((a[c[m>>2]>>0]|0)==63?(c[(c[(c[j>>2]|0)+472>>2]|0)+((b[k>>1]|0)-1<<2)>>2]|0)!=0:0)break;Xb(c[h>>2]|0,c[(c[(c[j>>2]|0)+472>>2]|0)+((b[k>>1]|0)-1<<2)>>2]|0);d=rm(c[h>>2]|0,c[m>>2]|0,c[p>>2]|0,0)|0;c[(c[(c[j>>2]|0)+472>>2]|0)+((b[k>>1]|0)-1<<2)>>2]=d}}else{e=(c[j>>2]|0)+440|0;d=(c[e>>2]|0)+1|0;c[e>>2]=d;b[(c[r>>2]|0)+32>>1]=d}while(0);if(c[(c[j>>2]|0)+64>>2]|0){i=n;return}if((c[(c[j>>2]|0)+440>>2]|0)<=(c[(c[h>>2]|0)+124>>2]|0)){i=n;return}Se(c[j>>2]|0,23408,o);i=n;return}function uo(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;i=i+16|0;h=e+12|0;f=e+8|0;j=e+4|0;g=e;c[h>>2]=a;c[f>>2]=b;c[j>>2]=d;if((c[(c[j>>2]|0)+4>>2]|0)>>>0<=0){a=c[f>>2]|0;i=e;return a|0}c[g>>2]=or(c[c[h>>2]>>2]|0,95,c[j>>2]|0,1)|0;if(!(c[g>>2]|0)){a=c[f>>2]|0;i=e;return a|0}c[(c[g>>2]|0)+12>>2]=c[f>>2];a=(c[g>>2]|0)+4|0;c[a>>2]=c[a>>2]|4352;c[f>>2]=c[g>>2];a=c[f>>2]|0;i=e;return a|0}function vo(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;e=i;i=i+32|0;f=e+20|0;k=e+16|0;g=e+12|0;l=e+8|0;j=e+4|0;h=e;c[k>>2]=a;c[g>>2]=b;c[l>>2]=d;c[h>>2]=c[c[k>>2]>>2];c[j>>2]=or(c[h>>2]|0,153,c[l>>2]|0,1)|0;if(!(c[j>>2]|0)){sn(c[h>>2]|0,c[g>>2]|0);c[f>>2]=0;l=c[f>>2]|0;i=e;return l|0}else{c[(c[j>>2]|0)+20>>2]=c[g>>2];Ao(c[k>>2]|0,c[j>>2]|0);c[f>>2]=c[j>>2];l=c[f>>2]|0;i=e;return l|0}return 0}function wo(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;g=i;i=i+32|0;h=g+16|0;m=g+12|0;l=g+8|0;k=g+4|0;j=g;c[h>>2]=a;c[m>>2]=b;c[l>>2]=d;c[k>>2]=e;c[j>>2]=f;a=Rn(c[m>>2]|0,c[l>>2]|0,c[c[k>>2]>>2]|0,c[c[j>>2]>>2]|0,0)|0;c[c[h>>2]>>2]=a;c[(c[h>>2]|0)+4>>2]=c[(c[k>>2]|0)+4>>2];c[(c[h>>2]|0)+8>>2]=c[(c[j>>2]|0)+8>>2];i=g;return}function xo(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;g=i;i=i+32|0;h=g+16|0;m=g+12|0;l=g+8|0;k=g+4|0;j=g;c[h>>2]=a;c[m>>2]=b;c[l>>2]=d;c[k>>2]=e;c[j>>2]=f;a=Rn(c[m>>2]|0,c[l>>2]|0,c[c[k>>2]>>2]|0,0,0)|0;c[c[h>>2]>>2]=a;c[(c[h>>2]|0)+4>>2]=c[(c[k>>2]|0)+4>>2];c[(c[h>>2]|0)+8>>2]=(c[c[j>>2]>>2]|0)+(c[(c[j>>2]|0)+4>>2]|0);i=g;return}function yo(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0;h=i;i=i+32|0;n=h+16|0;m=h+12|0;k=h+8|0;j=h+4|0;l=h;c[n>>2]=b;c[m>>2]=e;c[k>>2]=f;c[j>>2]=g;c[l>>2]=c[c[n>>2]>>2];if(!((c[m>>2]|0)!=0&(c[k>>2]|0)!=0)){i=h;return}if((d[c[m>>2]>>0]|0|0)!=101){i=h;return}a[c[k>>2]>>0]=c[j>>2];wn(c[l>>2]|0,c[(c[k>>2]|0)+16>>2]|0);c[(c[k>>2]|0)+16>>2]=0;i=h;return}function zo(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;g=i;i=i+32|0;h=g+16|0;m=g+12|0;l=g+8|0;j=g+4|0;k=g;c[h>>2]=a;c[m>>2]=b;c[l>>2]=d;c[j>>2]=e;c[k>>2]=f;a=Rn(c[m>>2]|0,c[l>>2]|0,c[c[j>>2]>>2]|0,0,0)|0;c[c[h>>2]>>2]=a;c[(c[h>>2]|0)+4>>2]=c[c[k>>2]>>2];c[(c[h>>2]|0)+8>>2]=c[(c[j>>2]|0)+8>>2];i=g;return}function Ao(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;qr(c[e>>2]|0);Qq(c[f>>2]|0,c[(c[e>>2]|0)+24>>2]|0)|0;i=d;return}function Bo(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;l=i;i=i+64|0;j=l;h=l+52|0;f=l+48|0;k=l+44|0;m=l+40|0;n=l+36|0;g=l+32|0;r=l+28|0;o=l+24|0;p=l+20|0;q=l+16|0;s=l+12|0;c[h>>2]=b;c[f>>2]=d;c[k>>2]=e;c[g>>2]=c[c[h>>2]>>2];if(a[(c[g>>2]|0)+64>>0]|0){d=c[g>>2]|0;b=c[f>>2]|0;vn(d,b);i=l;return}if(Ar(c[h>>2]|0)|0){d=c[g>>2]|0;b=c[f>>2]|0;vn(d,b);i=l;return}c[m>>2]=Op(c[g>>2]|0,c[(c[f>>2]|0)+16>>2]|0,c[(c[f>>2]|0)+12>>2]|0)|0;if(!(c[m>>2]|0)){n=c[h>>2]|0;m=c[f>>2]|0;if(c[k>>2]|0)At(n,c[m+12>>2]|0);else{c[j>>2]=m;c[j+4>>2]=0;Se(n,23120,j)}a[(c[h>>2]|0)+17>>0]=1;d=c[g>>2]|0;b=c[f>>2]|0;vn(d,b);i=l;return}if(a[(c[m>>2]|0)+55>>0]&3){d=c[h>>2]|0;c[j>>2]=0;Se(d,23144,j);d=c[g>>2]|0;b=c[f>>2]|0;vn(d,b);i=l;return}c[r>>2]=Ve(c[g>>2]|0,c[(c[m>>2]|0)+24>>2]|0)|0;c[o>>2]=10;c[p>>2]=c[(c[m>>2]|0)+12>>2];c[q>>2]=c[(c[(c[g>>2]|0)+16>>2]|0)+(c[r>>2]<<4)>>2];c[s>>2]=(c[r>>2]|0)==1?14904:14928;if(ap(c[h>>2]|0,9,c[s>>2]|0,0,c[q>>2]|0)|0){d=c[g>>2]|0;b=c[f>>2]|0;vn(d,b);i=l;return}if(c[r>>2]|0)c[o>>2]=12;if(ap(c[h>>2]|0,c[o>>2]|0,c[c[m>>2]>>2]|0,c[c[p>>2]>>2]|0,c[q>>2]|0)|0){d=c[g>>2]|0;b=c[f>>2]|0;vn(d,b);i=l;return}c[n>>2]=dp(c[h>>2]|0)|0;if(!(c[n>>2]|0)){d=c[g>>2]|0;b=c[f>>2]|0;vn(d,b);i=l;return}pp(c[h>>2]|0,1,c[r>>2]|0);d=c[h>>2]|0;s=(c[r>>2]|0)==1?14904:14928;b=c[c[m>>2]>>2]|0;c[j>>2]=c[(c[(c[g>>2]|0)+16>>2]|0)+(c[r>>2]<<4)>>2];c[j+4>>2]=s;c[j+8>>2]=b;cp(d,23224,j);iu(c[h>>2]|0,c[r>>2]|0,18160,c[c[m>>2]>>2]|0);ep(c[h>>2]|0,c[r>>2]|0);ju(c[h>>2]|0,c[(c[m>>2]|0)+44>>2]|0,c[r>>2]|0);hp(c[n>>2]|0,125,c[r>>2]|0,0,0,c[c[m>>2]>>2]|0,0)|0;d=c[g>>2]|0;b=c[f>>2]|0;vn(d,b);i=l;return}function Co(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+16|0;e=b+4|0;d=b;c[e>>2]=a;c[d>>2]=dp(c[e>>2]|0)|0;if(!(c[d>>2]|0)){i=b;return}fp(c[d>>2]|0,13,0,0)|0;Ze(c[d>>2]|0,0);i=b;return}function Do(f,g,h,j,k){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=0,Ab=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0;o=i;i=i+560|0;t=o+32|0;q=o+544|0;Ib=o+540|0;cb=o+536|0;Gb=o+532|0;Fb=o+528|0;m=o+524|0;n=o+520|0;na=o+516|0;Hb=o+512|0;Eb=o+496|0;r=o+488|0;ib=o+484|0;hb=o+480|0;tb=o+476|0;gb=o+472|0;l=o+468|0;bb=o+464|0;p=o+460|0;Db=o+456|0;Na=o+452|0;Oa=o+448|0;ab=o+444|0;va=o+440|0;eb=o+436|0;Aa=o+432|0;fb=o+428|0;la=o+424|0;Da=o+420|0;Ea=o+416|0;Fa=o+412|0;Ga=o+408|0;Ya=o+404|0;Za=o+400|0;Xa=o+396|0;Wa=o+392|0;Ca=o+388|0;Ba=o+24|0;Qa=o+384|0;Sa=o+380|0;Ra=o+376|0;Ma=o+372|0;La=o+368|0;Ka=o+364|0;_a=o+16|0;vb=o+360|0;wa=o+356|0;qa=o+352|0;sa=o+348|0;pa=o+344|0;ta=o+340|0;ra=o+336|0;oa=o+332|0;ub=o+328|0;lb=o+324|0;mb=o+320|0;xb=o+316|0;zb=o+312|0;wb=o+308|0;yb=o+548|0;Bb=o+304|0;Ab=o+300|0;Cb=o+296|0;Ja=o+292|0;kb=o+288|0;$a=o+284|0;jb=o+280|0;Ha=o+276|0;Va=o+272|0;Pa=o+268|0;Ia=o+264|0;db=o+260|0;Ta=o+256|0;Ua=o+252|0;da=o+248|0;ja=o+244|0;ea=o+240|0;fa=o+236|0;ca=o+232|0;_=o+228|0;$=o+224|0;ga=o+220|0;ba=o+216|0;ma=o+212|0;aa=o+208|0;ha=o+204|0;Z=o+200|0;ia=o+196|0;ka=o+192|0;V=o+188|0;S=o+184|0;Y=o+180|0;X=o+176|0;w=o+172|0;x=o+168|0;u=o+164|0;W=o+160|0;U=o+156|0;v=o+152|0;R=o+148|0;Q=o+144|0;E=o+140|0;M=o+136|0;T=o+132|0;G=o+128|0;K=o+124|0;L=o+120|0;z=o+116|0;A=o+112|0;y=o+108|0;I=o+104|0;N=o+100|0;F=o+96|0;H=o+92|0;J=o+88|0;P=o+84|0;C=o+80|0;O=o+76|0;B=o+72|0;ua=o+68|0;xa=o+64|0;ya=o+60|0;za=o+56|0;pb=o+52|0;qb=o+48|0;nb=o+44|0;ob=o+40|0;rb=o+8|0;sb=o;c[q>>2]=f;c[Ib>>2]=g;c[cb>>2]=h;c[Gb>>2]=j;c[Fb>>2]=k;c[m>>2]=0;c[n>>2]=0;c[na>>2]=0;c[l>>2]=c[c[q>>2]>>2];c[p>>2]=dp(c[q>>2]|0)|0;if(!(c[p>>2]|0)){i=o;return}Mt(c[p>>2]|0);c[(c[q>>2]|0)+72>>2]=2;c[r>>2]=Er(c[q>>2]|0,c[Ib>>2]|0,c[cb>>2]|0,Hb)|0;if((c[r>>2]|0)<0){i=o;return}c[bb>>2]=(c[(c[l>>2]|0)+16>>2]|0)+(c[r>>2]<<4);if((c[r>>2]|0)==1?(rp(c[q>>2]|0)|0)!=0:0){i=o;return}c[m>>2]=Zo(c[l>>2]|0,c[Hb>>2]|0)|0;if(!(c[m>>2]|0)){i=o;return}g=c[l>>2]|0;Gb=c[Gb>>2]|0;if(c[Fb>>2]|0){c[t>>2]=Gb;c[n>>2]=Te(g,20296,t)|0}else c[n>>2]=Zo(g,Gb)|0;if((c[(c[cb>>2]|0)+4>>2]|0)>>>0>0)Fb=c[c[bb>>2]>>2]|0;else Fb=0;c[na>>2]=Fb;a:do if(!(ap(c[q>>2]|0,19,c[m>>2]|0,c[n>>2]|0,c[na>>2]|0)|0)){c[Eb>>2]=0;c[Eb+4>>2]=c[m>>2];c[Eb+8>>2]=c[n>>2];c[Eb+12>>2]=0;c[(c[l>>2]|0)+452>>2]=0;c[gb>>2]=gg(c[l>>2]|0,c[na>>2]|0,14,Eb)|0;if(!(c[gb>>2]|0)){if(!(c[Eb>>2]|0))break;k=(c[q>>2]|0)+72|0;h=(c[k>>2]|0)+1|0;c[k>>2]=h;c[Db>>2]=h;hp(c[p>>2]|0,97,0,c[Db>>2]|0,0,c[Eb>>2]|0,0)|0;Nt(c[p>>2]|0,1);Ot(c[p>>2]|0,0,0,20304,0)|0;fp(c[p>>2]|0,35,c[Db>>2]|0,1)|0;hc(c[Eb>>2]|0);break}if((c[gb>>2]|0)!=12){if(c[Eb>>2]|0){h=c[q>>2]|0;c[t>>2]=c[Eb>>2];Se(h,1200,t);hc(c[Eb>>2]|0)}h=(c[q>>2]|0)+64|0;c[h>>2]=(c[h>>2]|0)+1;c[(c[q>>2]|0)+12>>2]=c[gb>>2];break}c[ib>>2]=0;c[hb>>2]=54;while(1){if((c[ib>>2]|0)>(c[hb>>2]|0))break;c[tb>>2]=((c[ib>>2]|0)+(c[hb>>2]|0)|0)/2|0;c[gb>>2]=xc(c[m>>2]|0,c[20312+((c[tb>>2]|0)*12|0)>>2]|0)|0;if(!(c[gb>>2]|0))break;Db=c[tb>>2]|0;if((c[gb>>2]|0)<0){c[hb>>2]=Db-1;continue}else{c[ib>>2]=Db+1;continue}}if((c[ib>>2]|0)<=(c[hb>>2]|0)){if((d[20317+((c[tb>>2]|0)*12|0)>>0]&1|0)!=0?(Ar(c[q>>2]|0)|0)!=0:0)break;do switch(d[20316+((c[tb>>2]|0)*12|0)>>0]|0){case 25:{c[eb>>2]=c[(c[bb>>2]|0)+4>>2];c[Aa>>2]=-1;if(c[n>>2]|0)c[Aa>>2]=(qg(c[n>>2]|0,0)|0)&255;b:do if((c[Aa>>2]|0)>=0?(c[(c[cb>>2]|0)+4>>2]|0)==0:0){c[fb>>2]=0;while(1){if((c[fb>>2]|0)>=(c[(c[l>>2]|0)+20>>2]|0))break b;wt(c[(c[(c[l>>2]|0)+16>>2]|0)+(c[fb>>2]<<4)+4>>2]|0,c[Aa>>2]|0)|0;c[fb>>2]=(c[fb>>2]|0)+1}}while(0);c[Aa>>2]=wt(c[eb>>2]|0,c[Aa>>2]|0)|0;h=c[Aa>>2]|0;Pt(c[q>>2]|0,21048,h,((h|0)<0)<<31>>31);break a};case 24:{c[ab>>2]=c[(c[bb>>2]|0)+4>>2];if(c[n>>2]|0){h=zg(c[n>>2]|0)|0;c[(c[l>>2]|0)+72>>2]=h;if(7!=(kg(c[ab>>2]|0,c[(c[l>>2]|0)+72>>2]|0,-1,0)|0))break a;a[(c[l>>2]|0)+64>>0]=1;break a}if(c[ab>>2]|0)p=Uc(c[ab>>2]|0)|0;else p=0;c[va>>2]=p;h=c[va>>2]|0;Pt(c[q>>2]|0,21032,h,((h|0)<0)<<31>>31);break a};case 23:{h=_a;c[h>>2]=0;c[h+4>>2]=0;c[gb>>2]=0;if(!(c[gb>>2]|0)){h=_a;Pt(c[q>>2]|0,21184,c[h>>2]|0,c[h+4>>2]|0);break a}if((c[gb>>2]|0)==12)break a;h=(c[q>>2]|0)+64|0;c[h>>2]=(c[h>>2]|0)+1;c[(c[q>>2]|0)+12>>2]=c[gb>>2];break a};case 18:{Nt(c[p>>2]|0,1);Ot(c[p>>2]|0,0,0,21104,0)|0;if(c[n>>2]|0){c[Wa>>2]=Mb(c[n>>2]|0)|0;c[Ya>>2]=0;while(1){h=Rt(c[Ya>>2]|0)|0;c[Xa>>2]=h;if(!h)break;if(!(Lb(c[n>>2]|0,c[Xa>>2]|0,c[Wa>>2]|0)|0))break;c[Ya>>2]=(c[Ya>>2]|0)+1}if(!(c[Xa>>2]|0))c[Ya>>2]=-1}else c[Ya>>2]=-1;if((c[Ya>>2]|0)==-1?(c[(c[cb>>2]|0)+4>>2]|0)==0:0){c[r>>2]=0;c[(c[cb>>2]|0)+4>>2]=1}c[Za>>2]=(c[(c[l>>2]|0)+20>>2]|0)-1;while(1){if((c[Za>>2]|0)<0)break;do if(c[(c[(c[l>>2]|0)+16>>2]|0)+(c[Za>>2]<<4)+4>>2]|0){if((c[Za>>2]|0)!=(c[r>>2]|0)?(c[(c[cb>>2]|0)+4>>2]|0)!=0:0)break;Ze(c[p>>2]|0,c[Za>>2]|0);ip(c[p>>2]|0,12,c[Za>>2]|0,1,c[Ya>>2]|0)|0}while(0);c[Za>>2]=(c[Za>>2]|0)+ -1}fp(c[p>>2]|0,35,1,1)|0;break a};case 30:{if(!(c[n>>2]|0))break a;c[qa>>2]=sp(c[l>>2]|0,c[n>>2]|0,c[na>>2]|0)|0;if(!(c[qa>>2]|0))break a;c[ta>>2]=0;c[oa>>2]=Zr(c[qa>>2]|0)|0;Nt(c[p>>2]|0,6);c[(c[q>>2]|0)+72>>2]=6;qp(c[q>>2]|0,c[r>>2]|0);Ot(c[p>>2]|0,0,0,21344,0)|0;Ot(c[p>>2]|0,1,0,21352,0)|0;Ot(c[p>>2]|0,2,0,21360,0)|0;Ot(c[p>>2]|0,3,0,21368,0)|0;Ot(c[p>>2]|0,4,0,21376,0)|0;Ot(c[p>>2]|0,5,0,21392,0)|0;Qp(c[q>>2]|0,c[qa>>2]|0)|0;c[sa>>2]=0;c[ra>>2]=c[(c[qa>>2]|0)+4>>2];while(1){if((c[sa>>2]|0)>=(b[(c[qa>>2]|0)+38>>1]|0))break a;if(d[(c[ra>>2]|0)+23>>0]&2)c[ta>>2]=(c[ta>>2]|0)+1;else{fp(c[p>>2]|0,25,(c[sa>>2]|0)-(c[ta>>2]|0)|0,1)|0;hp(c[p>>2]|0,97,0,2,0,c[c[ra>>2]>>2]|0,0)|0;if(c[(c[ra>>2]|0)+12>>2]|0)q=c[(c[ra>>2]|0)+12>>2]|0;else q=1216;hp(c[p>>2]|0,97,0,3,0,q,0)|0;fp(c[p>>2]|0,25,(d[(c[ra>>2]|0)+20>>0]|0)!=0?1:0,4)|0;q=c[p>>2]|0;if(c[(c[ra>>2]|0)+8>>2]|0)hp(q,97,0,5,0,c[(c[ra>>2]|0)+8>>2]|0,0)|0;else fp(q,28,0,5)|0;c:do if(!(d[(c[ra>>2]|0)+23>>0]&1))c[pa>>2]=0;else{h=(c[oa>>2]|0)==0;c[pa>>2]=1;if(h)break;while(1){if((c[pa>>2]|0)>(b[(c[qa>>2]|0)+38>>1]|0))break c;if((b[(c[(c[oa>>2]|0)+4>>2]|0)+((c[pa>>2]|0)-1<<1)>>1]|0)==(c[sa>>2]|0))break c;c[pa>>2]=(c[pa>>2]|0)+1}}while(0);fp(c[p>>2]|0,25,c[pa>>2]|0,6)|0;fp(c[p>>2]|0,35,1,6)|0}c[sa>>2]=(c[sa>>2]|0)+1;c[ra>>2]=(c[ra>>2]|0)+24}};case 29:{if(!(c[n>>2]|0)){h=(d[(c[bb>>2]|0)+8>>0]|0)-1|0;Pt(c[q>>2]|0,21272,h,((h|0)<0)<<31>>31);break a}if(a[(c[l>>2]|0)+62>>0]|0){h=((yg(c[n>>2]|0,0,1)|0)&255)+1&255;a[(c[bb>>2]|0)+8>>0]=h;Yt(c[l>>2]|0);break a}else{Se(c[q>>2]|0,21288,t);break a}};case 10:{Ze(c[p>>2]|0,c[r>>2]|0);if(c[n>>2]|0){c[Oa>>2]=ds(zg(c[n>>2]|0)|0)|0;pp(c[q>>2]|0,0,c[r>>2]|0);fp(c[p>>2]|0,25,c[Oa>>2]|0,1)|0;ip(c[p>>2]|0,52,c[r>>2]|0,3,1)|0;c[(c[(c[bb>>2]|0)+12>>2]|0)+80>>2]=c[Oa>>2];es(c[(c[bb>>2]|0)+4>>2]|0,c[(c[(c[bb>>2]|0)+12>>2]|0)+80>>2]|0)|0;break a}else{Nt(c[p>>2]|0,1);Ot(c[p>>2]|0,0,0,21016,0)|0;h=(c[q>>2]|0)+72|0;c[h>>2]=(c[h>>2]|0)+2;c[Na>>2]=Ye(c[p>>2]|0,9,20976,0)|0;_e(c[p>>2]|0,c[Na>>2]|0,c[r>>2]|0);_e(c[p>>2]|0,(c[Na>>2]|0)+1|0,c[r>>2]|0);_e(c[p>>2]|0,(c[Na>>2]|0)+6|0,2e3);break a}};case 14:{if(!((c[n>>2]|0)!=0?(h=(Ag(c[n>>2]|0,Ma)|0)==0,!(h|(c[Ma>>2]|0)<=0)):0))c[Ma>>2]=2147483647;pp(c[q>>2]|0,0,c[r>>2]|0);fp(c[p>>2]|0,25,c[Ma>>2]|0,1)|0;c[La>>2]=Ir(c[p>>2]|0,141,c[r>>2]|0)|0;Ir(c[p>>2]|0,35,1)|0;fp(c[p>>2]|0,37,1,-1)|0;fp(c[p>>2]|0,137,1,c[La>>2]|0)|0;zp(c[p>>2]|0,c[La>>2]|0);break a};case 4:if(c[n>>2]|0){c[Ka>>2]=zg(c[n>>2]|0)|0;c[(c[(c[bb>>2]|0)+12>>2]|0)+80>>2]=c[Ka>>2];es(c[(c[bb>>2]|0)+4>>2]|0,c[(c[(c[bb>>2]|0)+12>>2]|0)+80>>2]|0)|0;break a}else{h=c[(c[(c[bb>>2]|0)+12>>2]|0)+80>>2]|0;Pt(c[q>>2]|0,21016,h,((h|0)<0)<<31>>31);break a};case 9:{Nt(c[p>>2]|0,3);c[(c[q>>2]|0)+72>>2]=3;Ot(c[p>>2]|0,0,0,21432,0)|0;Ot(c[p>>2]|0,1,0,21352,0)|0;Ot(c[p>>2]|0,2,0,21448,0)|0;c[Ja>>2]=0;while(1){if((c[Ja>>2]|0)>=(c[(c[l>>2]|0)+20>>2]|0))break a;if(c[(c[(c[l>>2]|0)+16>>2]|0)+(c[Ja>>2]<<4)+4>>2]|0){fp(c[p>>2]|0,25,c[Ja>>2]|0,1)|0;hp(c[p>>2]|0,97,0,2,0,c[(c[(c[l>>2]|0)+16>>2]|0)+(c[Ja>>2]<<4)>>2]|0,0)|0;h=c[p>>2]|0;hp(h,97,0,3,0,sg(c[(c[(c[l>>2]|0)+16>>2]|0)+(c[Ja>>2]<<4)+4>>2]|0)|0,0)|0;fp(c[p>>2]|0,35,1,3)|0}c[Ja>>2]=(c[Ja>>2]|0)+1}};case 13:{if(!(c[n>>2]|0))break a;c[Va>>2]=sp(c[l>>2]|0,c[n>>2]|0,c[na>>2]|0)|0;if(!(c[Va>>2]|0))break a;c[p>>2]=dp(c[q>>2]|0)|0;c[Ha>>2]=c[(c[Va>>2]|0)+16>>2];if(!(c[Ha>>2]|0))break a;c[Pa>>2]=0;Nt(c[p>>2]|0,8);c[(c[q>>2]|0)+72>>2]=8;qp(c[q>>2]|0,c[r>>2]|0);Ot(c[p>>2]|0,0,0,21456,0)|0;Ot(c[p>>2]|0,1,0,21432,0)|0;Ot(c[p>>2]|0,2,0,21400,0)|0;Ot(c[p>>2]|0,3,0,21464,0)|0;Ot(c[p>>2]|0,4,0,21472,0)|0;Ot(c[p>>2]|0,5,0,21480,0)|0;Ot(c[p>>2]|0,6,0,21496,0)|0;Ot(c[p>>2]|0,7,0,21512,0)|0;while(1){if(!(c[Ha>>2]|0))break a;c[Ia>>2]=0;while(1){if((c[Ia>>2]|0)>=(c[(c[Ha>>2]|0)+20>>2]|0))break;c[db>>2]=c[(c[Ha>>2]|0)+36+(c[Ia>>2]<<3)+4>>2];c[Ta>>2]=_t(a[(c[Ha>>2]|0)+25>>0]|0)|0;c[Ua>>2]=_t(a[(c[Ha>>2]|0)+26>>0]|0)|0;fp(c[p>>2]|0,25,c[Pa>>2]|0,1)|0;fp(c[p>>2]|0,25,c[Ia>>2]|0,2)|0;hp(c[p>>2]|0,97,0,3,0,c[(c[Ha>>2]|0)+8>>2]|0,0)|0;hp(c[p>>2]|0,97,0,4,0,c[(c[(c[Va>>2]|0)+4>>2]|0)+((c[(c[Ha>>2]|0)+36+(c[Ia>>2]<<3)>>2]|0)*24|0)>>2]|0,0)|0;hp(c[p>>2]|0,(c[db>>2]|0)!=0?97:28,0,5,0,c[db>>2]|0,0)|0;hp(c[p>>2]|0,97,0,6,0,c[Ua>>2]|0,0)|0;hp(c[p>>2]|0,97,0,7,0,c[Ta>>2]|0,0)|0;hp(c[p>>2]|0,97,0,8,0,21520,0)|0;fp(c[p>>2]|0,35,1,8)|0;c[Ia>>2]=(c[Ia>>2]|0)+1}c[Pa>>2]=(c[Pa>>2]|0)+1;c[Ha>>2]=c[(c[Ha>>2]|0)+4>>2]}};case 6:{c[kb>>2]=0;Nt(c[p>>2]|0,2);c[(c[q>>2]|0)+72>>2]=2;Ot(c[p>>2]|0,0,0,21432,0)|0;Ot(c[p>>2]|0,1,0,21352,0)|0;c[$a>>2]=c[(c[l>>2]|0)+436>>2];while(1){if(!(c[$a>>2]|0))break a;c[jb>>2]=c[(c[$a>>2]|0)+8>>2];k=c[p>>2]|0;h=c[kb>>2]|0;c[kb>>2]=h+1;fp(k,25,h,1)|0;hp(c[p>>2]|0,97,0,2,0,c[c[jb>>2]>>2]|0,0)|0;fp(c[p>>2]|0,35,1,2)|0;c[$a>>2]=c[c[$a>>2]>>2]}};case 28:{c[p>>2]=dp(c[q>>2]|0)|0;Nt(c[p>>2]|0,4);c[(c[q>>2]|0)+72>>2]=4;qp(c[q>>2]|0,c[r>>2]|0);Ot(c[p>>2]|0,0,0,21400,0)|0;Ot(c[p>>2]|0,1,0,10168,0)|0;Ot(c[p>>2]|0,2,0,21408,0)|0;Ot(c[p>>2]|0,3,0,21416,0)|0;c[lb>>2]=c[(c[(c[bb>>2]|0)+12>>2]|0)+16>>2];while(1){if(!(c[lb>>2]|0))break a;c[mb>>2]=c[(c[lb>>2]|0)+8>>2];hp(c[p>>2]|0,97,0,1,0,c[c[mb>>2]>>2]|0,0)|0;fp(c[p>>2]|0,28,0,2)|0;h=c[p>>2]|0;k=Zt(b[(c[mb>>2]|0)+42>>1]|0)|0;fp(h,25,k,3)|0;k=c[p>>2]|0;h=Zt(b[(c[mb>>2]|0)+28>>1]|0)|0;fp(k,25,h,4)|0;fp(c[p>>2]|0,35,1,4)|0;c[ub>>2]=c[(c[mb>>2]|0)+8>>2];while(1){if(!(c[ub>>2]|0))break;hp(c[p>>2]|0,97,0,2,0,c[c[ub>>2]>>2]|0,0)|0;h=c[p>>2]|0;k=Zt(b[(c[ub>>2]|0)+48>>1]|0)|0;fp(h,25,k,3)|0;k=c[p>>2]|0;h=Zt(b[c[(c[ub>>2]|0)+8>>2]>>1]|0)|0;fp(k,25,h,4)|0;fp(c[p>>2]|0,35,1,4)|0;c[ub>>2]=c[(c[ub>>2]|0)+20>>2]}c[lb>>2]=c[c[lb>>2]>>2]}};case 19:{c[Ca>>2]=Sb(c[(c[bb>>2]|0)+4>>2]|0)|0;h=Ba;c[h>>2]=-2;c[h+4>>2]=-1;if((c[n>>2]|0)!=0?(rg(c[n>>2]|0,Ba)|0,h=Ba,k=c[h+4>>2]|0,(k|0)<-1|(k|0)==-1&(c[h>>2]|0)>>>0<4294967295):0){h=Ba;c[h>>2]=-1;c[h+4>>2]=-1}k=Ba;k=St(c[Ca>>2]|0,c[k>>2]|0,c[k+4>>2]|0)|0;h=Ba;c[h>>2]=k;c[h+4>>2]=D;h=Ba;Pt(c[q>>2]|0,21120,c[h>>2]|0,c[h+4>>2]|0);break a};case 21:{c[Da>>2]=21064;c[Ea>>2]=Qt(c[n>>2]|0)|0;if((c[Ea>>2]|0)==-1?(c[(c[cb>>2]|0)+4>>2]|0)==0:0)c[Ea>>2]=d[(c[l>>2]|0)+65>>0];else{if(!(c[(c[cb>>2]|0)+4>>2]|0)){c[Ga>>2]=2;while(1){if((c[Ga>>2]|0)>=(c[(c[l>>2]|0)+20>>2]|0))break;c[Fa>>2]=Sb(c[(c[(c[l>>2]|0)+16>>2]|0)+(c[Ga>>2]<<4)+4>>2]|0)|0;vt(c[Fa>>2]|0,c[Ea>>2]|0)|0;c[Ga>>2]=(c[Ga>>2]|0)+1}a[(c[l>>2]|0)+65>>0]=c[Ea>>2]}c[Fa>>2]=Sb(c[(c[bb>>2]|0)+4>>2]|0)|0;c[Ea>>2]=vt(c[Fa>>2]|0,c[Ea>>2]|0)|0}if((c[Ea>>2]|0)==1)c[Da>>2]=21072;Nt(c[p>>2]|0,1);Ot(c[p>>2]|0,0,0,21088,0)|0;hp(c[p>>2]|0,97,0,1,0,c[Da>>2]|0,0)|0;fp(c[p>>2]|0,35,1,1)|0;break a};case 22:{qp(c[q>>2]|0,c[r>>2]|0);s=(c[q>>2]|0)+72|0;q=(c[s>>2]|0)+1|0;c[s>>2]=q;c[la>>2]=q;q=c[p>>2]|0;r=c[r>>2]|0;s=c[la>>2]|0;if((d[440+(d[c[m>>2]>>0]|0)>>0]|0)==112)fp(q,151,r,s)|0;else ip(q,152,r,s,ds(zg(c[n>>2]|0)|0)|0)|0;fp(c[p>>2]|0,35,c[la>>2]|0,1)|0;Nt(c[p>>2]|0,1);Ot(c[p>>2]|0,0,0,c[m>>2]|0,-1)|0;break a};case 1:{c[Qa>>2]=c[(c[bb>>2]|0)+4>>2];if(!(c[n>>2]|0)){k=c[q>>2]|0;h=Tt(c[Qa>>2]|0)|0;Pt(k,21144,h,((h|0)<0)<<31>>31);break a}c[Sa>>2]=Ut(c[n>>2]|0)|0;a[(c[l>>2]|0)+66>>0]=c[Sa>>2];c[gb>>2]=Vt(c[Qa>>2]|0,c[Sa>>2]|0)|0;if(c[gb>>2]|0)break a;if(!((c[Sa>>2]|0)==1|(c[Sa>>2]|0)==2))break a;c[Ra>>2]=Ye(c[p>>2]|0,6,21160,0)|0;_e(c[p>>2]|0,c[Ra>>2]|0,c[r>>2]|0);_e(c[p>>2]|0,(c[Ra>>2]|0)+1|0,c[r>>2]|0);$e(c[p>>2]|0,(c[Ra>>2]|0)+2|0,(c[Ra>>2]|0)+4|0);_e(c[p>>2]|0,(c[Ra>>2]|0)+4|0,(c[Sa>>2]|0)-1|0);_e(c[p>>2]|0,(c[Ra>>2]|0)+5|0,c[r>>2]|0);Ze(c[p>>2]|0,c[r>>2]|0);break a};case 12:{c[ba>>2]=(c[(c[q>>2]|0)+72>>2]|0)+1;h=(c[q>>2]|0)+72|0;c[h>>2]=(c[h>>2]|0)+4;h=(c[q>>2]|0)+72|0;k=(c[h>>2]|0)+1|0;c[h>>2]=k;c[ma>>2]=k;k=(c[q>>2]|0)+72|0;h=(c[k>>2]|0)+1|0;c[k>>2]=h;c[aa>>2]=h;c[p>>2]=dp(c[q>>2]|0)|0;Nt(c[p>>2]|0,4);Ot(c[p>>2]|0,0,0,21400,0)|0;Ot(c[p>>2]|0,1,0,9992,0)|0;Ot(c[p>>2]|0,2,0,21528,0)|0;Ot(c[p>>2]|0,3,0,21536,0)|0;qp(c[q>>2]|0,c[r>>2]|0);c[$>>2]=c[(c[(c[(c[l>>2]|0)+16>>2]|0)+(c[r>>2]<<4)+12>>2]|0)+16>>2];while(1){if(!(c[$>>2]|0))break a;if(c[n>>2]|0){c[ja>>2]=Re(c[q>>2]|0,0,c[n>>2]|0,c[na>>2]|0)|0;c[$>>2]=0}else{c[ja>>2]=c[(c[$>>2]|0)+8>>2];c[$>>2]=c[c[$>>2]>>2]}if(!(c[ja>>2]|0))continue;if(!(c[(c[ja>>2]|0)+16>>2]|0))continue;Jr(c[q>>2]|0,c[r>>2]|0,c[(c[ja>>2]|0)+32>>2]|0,0,c[c[ja>>2]>>2]|0);if(((b[(c[ja>>2]|0)+38>>1]|0)+(c[aa>>2]|0)|0)>(c[(c[q>>2]|0)+72>>2]|0))c[(c[q>>2]|0)+72>>2]=(b[(c[ja>>2]|0)+38>>1]|0)+(c[aa>>2]|0);Kr(c[q>>2]|0,0,c[r>>2]|0,c[ja>>2]|0,54);hp(c[p>>2]|0,97,0,c[ba>>2]|0,0,c[c[ja>>2]>>2]|0,0)|0;c[ca>>2]=1;c[da>>2]=c[(c[ja>>2]|0)+16>>2];d:while(1){if(!(c[da>>2]|0))break;c[ea>>2]=sp(c[l>>2]|0,c[(c[da>>2]|0)+8>>2]|0,c[na>>2]|0)|0;do if(c[ea>>2]|0){c[fa>>2]=0;Jr(c[q>>2]|0,c[r>>2]|0,c[(c[ea>>2]|0)+32>>2]|0,0,c[c[ea>>2]>>2]|0);c[ga>>2]=$t(c[q>>2]|0,c[ea>>2]|0,c[da>>2]|0,fa,0)|0;if(c[ga>>2]|0){s=195;break d}if(!(c[fa>>2]|0)){Kr(c[q>>2]|0,c[ca>>2]|0,c[r>>2]|0,c[ea>>2]|0,54);break}else{ip(c[p>>2]|0,54,c[ca>>2]|0,c[(c[fa>>2]|0)+44>>2]|0,c[r>>2]|0)|0;Lr(c[q>>2]|0,c[fa>>2]|0);break}}while(0);c[ca>>2]=(c[ca>>2]|0)+1;c[da>>2]=c[(c[da>>2]|0)+4>>2]}if((s|0)==195){s=0;c[$>>2]=0}if(c[da>>2]|0)break a;if((c[(c[q>>2]|0)+68>>2]|0)<(c[ca>>2]|0))c[(c[q>>2]|0)+68>>2]=c[ca>>2];c[ha>>2]=Ir(c[p>>2]|0,108,0)|0;c[ca>>2]=1;c[da>>2]=c[(c[ja>>2]|0)+16>>2];while(1){if(!(c[da>>2]|0))break;c[ea>>2]=sp(c[l>>2]|0,c[(c[da>>2]|0)+8>>2]|0,c[na>>2]|0)|0;c[fa>>2]=0;c[ia>>2]=0;if(c[ea>>2]|0)c[ga>>2]=$t(c[q>>2]|0,c[ea>>2]|0,c[da>>2]|0,fa,ia)|0;c[Z>>2]=Nr(c[p>>2]|0)|0;do if((c[ea>>2]|0)!=0&(c[fa>>2]|0)==0){c[ka>>2]=c[(c[da>>2]|0)+36>>2];t=c[p>>2]|0;if((c[ka>>2]|0)!=(b[(c[ja>>2]|0)+36>>1]|0)){ip(t,47,0,c[ka>>2]|0,c[aa>>2]|0)|0;Es(c[p>>2]|0,c[ja>>2]|0,c[ka>>2]|0,c[aa>>2]|0);fp(c[p>>2]|0,76,c[aa>>2]|0,c[Z>>2]|0)|0;k=c[p>>2]|0;h=c[aa>>2]|0;fp(k,38,h,(Mr(c[p>>2]|0)|0)+3|0)|0}else fp(t,103,0,c[aa>>2]|0)|0;ip(c[p>>2]|0,70,c[ca>>2]|0,0,c[aa>>2]|0)|0;fp(c[p>>2]|0,16,0,c[Z>>2]|0)|0;h=c[p>>2]|0;zp(h,(Mr(c[p>>2]|0)|0)-2|0)}else{c[_>>2]=0;while(1){if((c[_>>2]|0)>=(c[(c[da>>2]|0)+20>>2]|0))break;t=c[_>>2]|0;if(c[ia>>2]|0)t=c[(c[ia>>2]|0)+(t<<2)>>2]|0;else t=c[(c[da>>2]|0)+36+(t<<3)>>2]|0;zs(c[p>>2]|0,c[ja>>2]|0,0,t,(c[aa>>2]|0)+(c[_>>2]|0)|0);fp(c[p>>2]|0,76,(c[aa>>2]|0)+(c[_>>2]|0)|0,c[Z>>2]|0)|0;c[_>>2]=(c[_>>2]|0)+1}if(!(c[ea>>2]|0))break;Hb=c[p>>2]|0;Ib=c[aa>>2]|0;f=c[(c[da>>2]|0)+20>>2]|0;k=c[ma>>2]|0;h=au(c[p>>2]|0,c[fa>>2]|0)|0;hp(Hb,49,Ib,f,k,h,c[(c[da>>2]|0)+20>>2]|0)|0;We(c[p>>2]|0,69,c[ca>>2]|0,c[Z>>2]|0,c[ma>>2]|0,0)|0}while(0);fp(c[p>>2]|0,103,0,(c[ba>>2]|0)+1|0)|0;hp(c[p>>2]|0,97,0,(c[ba>>2]|0)+2|0,0,c[(c[da>>2]|0)+8>>2]|0,0)|0;fp(c[p>>2]|0,25,(c[ca>>2]|0)-1|0,(c[ba>>2]|0)+3|0)|0;fp(c[p>>2]|0,35,c[ba>>2]|0,4)|0;Pr(c[p>>2]|0,c[Z>>2]|0);Xb(c[l>>2]|0,c[ia>>2]|0);c[ca>>2]=(c[ca>>2]|0)+1;c[da>>2]=c[(c[da>>2]|0)+4>>2]}fp(c[p>>2]|0,9,0,(c[ha>>2]|0)+1|0)|0;zp(c[p>>2]|0,c[ha>>2]|0)}};case 17:{c[w>>2]=(d[440+(d[c[m>>2]>>0]|0)>>0]|0)==113&1;if(!(c[c[cb>>2]>>2]|0))c[r>>2]=-1;c[(c[q>>2]|0)+72>>2]=6;Nt(c[p>>2]|0,1);Ot(c[p>>2]|0,0,0,21560,0)|0;c[X>>2]=100;if((c[n>>2]|0)!=0?(Ag(c[n>>2]|0,X)|0,(c[X>>2]|0)<=0):0)c[X>>2]=100;fp(c[p>>2]|0,25,c[X>>2]|0,1)|0;c[V>>2]=0;while(1){if((c[V>>2]|0)>=(c[(c[l>>2]|0)+20>>2]|0))break;c[W>>2]=0;if(!((c[r>>2]|0)>=0?(c[V>>2]|0)!=(c[r>>2]|0):0))s=230;e:do if((s|0)==230){s=0;qp(c[q>>2]|0,c[V>>2]|0);c[Y>>2]=Ir(c[p>>2]|0,137,1)|0;fp(c[p>>2]|0,24,0,0)|0;zp(c[p>>2]|0,c[Y>>2]|0);c[u>>2]=(c[(c[(c[l>>2]|0)+16>>2]|0)+(c[V>>2]<<4)+12>>2]|0)+8;c[x>>2]=c[(c[u>>2]|0)+8>>2];while(1){if(!(c[x>>2]|0))break;c[U>>2]=c[(c[x>>2]|0)+8>>2];if(!(d[(c[U>>2]|0)+44>>0]&32)){fp(c[p>>2]|0,25,c[(c[U>>2]|0)+32>>2]|0,2+(c[W>>2]|0)|0)|0;c[W>>2]=(c[W>>2]|0)+1}c[v>>2]=c[(c[U>>2]|0)+8>>2];while(1){if(!(c[v>>2]|0))break;fp(c[p>>2]|0,25,c[(c[v>>2]|0)+44>>2]|0,2+(c[W>>2]|0)|0)|0;c[W>>2]=(c[W>>2]|0)+1;c[v>>2]=c[(c[v>>2]|0)+20>>2]}c[x>>2]=c[c[x>>2]>>2]}if((c[(c[q>>2]|0)+72>>2]|0)>((c[W>>2]|0)+8|0))Z=c[(c[q>>2]|0)+72>>2]|0;else Z=(c[W>>2]|0)+8|0;c[(c[q>>2]|0)+72>>2]=Z;ip(c[p>>2]|0,127,2,c[W>>2]|0,1)|0;Xe(c[p>>2]|0,c[V>>2]&255);c[Y>>2]=Ir(c[p>>2]|0,76,2)|0;k=c[p>>2]|0;h=c[l>>2]|0;c[t>>2]=c[(c[(c[l>>2]|0)+16>>2]|0)+(c[V>>2]<<4)>>2];hp(k,97,0,3,0,Te(h,21576,t)|0,-1)|0;ip(c[p>>2]|0,32,2,4,1)|0;ip(c[p>>2]|0,94,4,3,2)|0;fp(c[p>>2]|0,35,2,1)|0;zp(c[p>>2]|0,c[Y>>2]|0);c[x>>2]=c[(c[u>>2]|0)+8>>2];while(1){if((c[x>>2]|0)==0|(c[w>>2]|0)!=0)break e;c[R>>2]=c[(c[x>>2]|0)+8>>2];c[M>>2]=0;c[L>>2]=-1;f:do if(c[(c[R>>2]|0)+8>>2]|0){if(!(d[(c[R>>2]|0)+44>>0]&32))Z=0;else Z=Zr(c[R>>2]|0)|0;c[E>>2]=Z;c[Y>>2]=Ir(c[p>>2]|0,137,1)|0;fp(c[p>>2]|0,24,0,0)|0;zp(c[p>>2]|0,c[Y>>2]|0);cu(c[q>>2]|0);du(c[q>>2]|0,c[R>>2]|0,54,1,0,G,K)|0;fp(c[p>>2]|0,25,0,7)|0;c[S>>2]=0;c[Q>>2]=c[(c[R>>2]|0)+8>>2];while(1){if(!(c[Q>>2]|0))break;fp(c[p>>2]|0,25,0,8+(c[S>>2]|0)|0)|0;c[Q>>2]=c[(c[Q>>2]|0)+20>>2];c[S>>2]=(c[S>>2]|0)+1}if((c[(c[q>>2]|0)+72>>2]|0)>(8+(c[S>>2]|0)|0))Z=c[(c[q>>2]|0)+72>>2]|0;else Z=8+(c[S>>2]|0)|0;c[(c[q>>2]|0)+72>>2]=Z;fp(c[p>>2]|0,108,c[G>>2]|0,0)|0;c[T>>2]=fp(c[p>>2]|0,37,7,1)|0;c[S>>2]=0;while(1){if((c[S>>2]|0)>=(b[(c[R>>2]|0)+38>>1]|0))break;do if((c[S>>2]|0)!=(b[(c[R>>2]|0)+36>>1]|0)){if(!(d[(c[(c[R>>2]|0)+4>>2]|0)+((c[S>>2]|0)*24|0)+20>>0]|0))break;zs(c[p>>2]|0,c[R>>2]|0,c[G>>2]|0,c[S>>2]|0,3);Xe(c[p>>2]|0,-128);c[A>>2]=Ir(c[p>>2]|0,77,3)|0;fp(c[p>>2]|0,37,1,-1)|0;h=c[l>>2]|0;k=c[(c[(c[R>>2]|0)+4>>2]|0)+((c[S>>2]|0)*24|0)>>2]|0;c[t>>2]=c[c[R>>2]>>2];c[t+4>>2]=k;c[z>>2]=Te(h,21600,t)|0;hp(c[p>>2]|0,97,0,3,0,c[z>>2]|0,-1)|0;fp(c[p>>2]|0,35,3,1)|0;c[y>>2]=Ir(c[p>>2]|0,137,1)|0;mp(c[p>>2]|0,24)|0;zp(c[p>>2]|0,c[A>>2]|0);zp(c[p>>2]|0,c[y>>2]|0)}while(0);c[S>>2]=(c[S>>2]|0)+1}c[S>>2]=0;c[Q>>2]=c[(c[R>>2]|0)+8>>2];while(1){Z=c[p>>2]|0;if(!(c[Q>>2]|0))break;c[J>>2]=Nr(Z)|0;if((c[E>>2]|0)!=(c[Q>>2]|0)){c[L>>2]=ps(c[q>>2]|0,c[Q>>2]|0,c[G>>2]|0,0,0,N,c[M>>2]|0,c[L>>2]|0)|0;c[M>>2]=c[Q>>2];fp(c[p>>2]|0,37,8+(c[S>>2]|0)|0,1)|0;c[I>>2]=We(c[p>>2]|0,69,(c[K>>2]|0)+(c[S>>2]|0)|0,c[J>>2]|0,c[L>>2]|0,e[(c[Q>>2]|0)+52>>1]|0)|0;fp(c[p>>2]|0,37,1,-1)|0;hp(c[p>>2]|0,97,0,3,0,21624,-2)|0;ip(c[p>>2]|0,94,7,3,3)|0;hp(c[p>>2]|0,97,0,4,0,21632,-2)|0;ip(c[p>>2]|0,94,4,3,3)|0;c[H>>2]=hp(c[p>>2]|0,97,0,4,0,c[c[Q>>2]>>2]|0,0)|0;ip(c[p>>2]|0,94,4,3,3)|0;fp(c[p>>2]|0,35,3,1)|0;c[F>>2]=Ir(c[p>>2]|0,137,1)|0;mp(c[p>>2]|0,24)|0;zp(c[p>>2]|0,c[I>>2]|0);if(d[(c[Q>>2]|0)+54>>0]|0){c[P>>2]=Nr(c[p>>2]|0)|0;c[O>>2]=0;while(1){if((c[O>>2]|0)>=(e[(c[Q>>2]|0)+50>>1]|0))break;c[B>>2]=b[(c[(c[Q>>2]|0)+4>>2]|0)+(c[O>>2]<<1)>>1];if(!(a[(c[(c[R>>2]|0)+4>>2]|0)+((c[B>>2]|0)*24|0)+20>>0]|0))fp(c[p>>2]|0,76,(c[L>>2]|0)+(c[O>>2]|0)|0,c[P>>2]|0)|0;c[O>>2]=(c[O>>2]|0)+1}c[C>>2]=Ir(c[p>>2]|0,9,(c[K>>2]|0)+(c[S>>2]|0)|0)|0;fp(c[p>>2]|0,16,0,c[P>>2]|0)|0;zp(c[p>>2]|0,c[C>>2]|0);We(c[p>>2]|0,114,(c[K>>2]|0)+(c[S>>2]|0)|0,c[P>>2]|0,c[L>>2]|0,e[(c[Q>>2]|0)+50>>1]|0)|0;fp(c[p>>2]|0,37,1,-1)|0;hp(c[p>>2]|0,97,0,3,0,21656,-2)|0;fp(c[p>>2]|0,16,0,c[H>>2]|0)|0;Pr(c[p>>2]|0,c[P>>2]|0)}zp(c[p>>2]|0,c[F>>2]|0);qs(c[q>>2]|0,c[N>>2]|0)}c[Q>>2]=c[(c[Q>>2]|0)+20>>2];c[S>>2]=(c[S>>2]|0)+1}fp(Z,9,c[G>>2]|0,c[T>>2]|0)|0;zp(c[p>>2]|0,(c[T>>2]|0)-1|0);hp(c[p>>2]|0,97,0,2,0,21688,-2)|0;c[S>>2]=0;c[Q>>2]=c[(c[R>>2]|0)+8>>2];while(1){if(!(c[Q>>2]|0))break f;if((c[E>>2]|0)!=(c[Q>>2]|0)){c[Y>>2]=Mr(c[p>>2]|0)|0;fp(c[p>>2]|0,137,1,(c[Y>>2]|0)+2|0)|0;fp(c[p>>2]|0,24,0,0)|0;fp(c[p>>2]|0,50,(c[K>>2]|0)+(c[S>>2]|0)|0,3)|0;ip(c[p>>2]|0,79,8+(c[S>>2]|0)|0,(c[Y>>2]|0)+8|0,3)|0;Xe(c[p>>2]|0,-112);fp(c[p>>2]|0,37,1,-1)|0;hp(c[p>>2]|0,97,0,3,0,c[c[Q>>2]>>2]|0,0)|0;ip(c[p>>2]|0,94,3,2,7)|0;fp(c[p>>2]|0,35,7,1)|0}c[Q>>2]=c[(c[Q>>2]|0)+20>>2];c[S>>2]=(c[S>>2]|0)+1}}while(0);c[x>>2]=c[c[x>>2]>>2]}}while(0);c[V>>2]=(c[V>>2]|0)+1}c[Y>>2]=Ye(c[p>>2]|0,3,21544,0)|0;af(c[p>>2]|0,c[Y>>2]|0,0-(c[X>>2]|0)|0);zp(c[p>>2]|0,c[Y>>2]|0);bf(c[p>>2]|0,(c[Y>>2]|0)+1|0,21720,-2);break a};case 5:{if(!(c[n>>2]|0))break a;h=c[l>>2]|0;bu(h,(qg(c[n>>2]|0,0)|0)&255);break a};case 11:{if(!(c[n>>2]|0)){if(Ar(c[q>>2]|0)|0)break a;Nt(c[p>>2]|0,1);Ot(c[p>>2]|0,0,0,21880,0)|0;fp(c[p>>2]|0,97,0,1)|0;bf(c[p>>2]|0,-1,c[21728+(d[(c[(c[(c[c[q>>2]>>2]|0)+16>>2]|0)+12>>2]|0)+77>>0]<<3)>>2]|0,-2);fp(c[p>>2]|0,35,1,1)|0;break a}if((e[(c[(c[(c[l>>2]|0)+16>>2]|0)+12>>2]|0)+78>>1]&1|0)==1?(e[(c[(c[(c[l>>2]|0)+16>>2]|0)+12>>2]|0)+78>>1]&4|0)!=4:0)break a;c[ua>>2]=21728;while(1){if(!(c[c[ua>>2]>>2]|0))break;h=0==(xc(c[n>>2]|0,c[c[ua>>2]>>2]|0)|0);p=c[ua>>2]|0;if(h){s=286;break}c[ua>>2]=p+8}if((s|0)==286){if(d[p+4>>0]|0)p=d[(c[ua>>2]|0)+4>>0]|0;else p=(a[1136]|0)==0?3:2;a[(c[(c[(c[c[q>>2]>>2]|0)+16>>2]|0)+12>>2]|0)+77>>0]=p}if(c[c[ua>>2]>>2]|0)break a;h=c[q>>2]|0;c[t>>2]=c[n>>2];Se(h,21896,t);break a};case 0:{Ze(c[p>>2]|0,c[r>>2]|0);switch(a[c[m>>2]>>0]|0){case 65:case 97:{c[xa>>2]=8;break};case 70:case 102:{c[xa>>2]=0;break};case 83:case 115:{c[xa>>2]=1;break};default:c[xa>>2]=6}q=c[p>>2]|0;if((c[n>>2]|0)!=0&(c[xa>>2]|0)!=0){c[ya>>2]=Ye(q,3,21928,0)|0;_e(c[p>>2]|0,c[ya>>2]|0,c[r>>2]|0);k=c[p>>2]|0;h=(c[ya>>2]|0)+1|0;_e(k,h,zg(c[n>>2]|0)|0);_e(c[p>>2]|0,(c[ya>>2]|0)+2|0,c[r>>2]|0);$e(c[p>>2]|0,(c[ya>>2]|0)+2|0,c[xa>>2]|0);break a}else{c[za>>2]=Ye(q,3,21944,0)|0;_e(c[p>>2]|0,c[za>>2]|0,c[r>>2]|0);_e(c[p>>2]|0,(c[za>>2]|0)+1|0,c[r>>2]|0);af(c[p>>2]|0,(c[za>>2]|0)+1|0,c[xa>>2]|0);Nt(c[p>>2]|0,1);Ot(c[p>>2]|0,0,0,c[m>>2]|0,-1)|0;break a}};case 35:{c[nb>>2]=(c[c[cb>>2]>>2]|0)!=0?c[r>>2]|0:10;c[ob>>2]=0;do if(c[n>>2]|0){if(!(xc(c[n>>2]|0,21976)|0)){c[ob>>2]=1;break}if(!(xc(c[n>>2]|0,21984)|0))c[ob>>2]=2}while(0);Nt(c[p>>2]|0,3);c[(c[q>>2]|0)+72>>2]=3;Ot(c[p>>2]|0,0,0,21992,0)|0;Ot(c[p>>2]|0,1,0,22e3,0)|0;Ot(c[p>>2]|0,2,0,22008,0)|0;ip(c[p>>2]|0,11,c[nb>>2]|0,c[ob>>2]|0,1)|0;fp(c[p>>2]|0,35,1,3)|0;break a};case 7:{c[pb>>2]=0;Nt(c[p>>2]|0,1);c[(c[q>>2]|0)+72>>2]=1;Ot(c[p>>2]|0,0,0,21960,0)|0;while(1){h=c[pb>>2]|0;c[pb>>2]=h+1;h=Ob(h)|0;c[qb>>2]=h;if(!h)break a;hp(c[p>>2]|0,97,0,1,0,c[qb>>2]|0,0)|0;fp(c[p>>2]|0,35,1,1)|0}};case 26:{Ef(c[l>>2]|0)|0;break a};case 34:{if(c[n>>2]|0){h=c[l>>2]|0;Uf(h,zg(c[n>>2]|0)|0)|0}if((c[(c[l>>2]|0)+212>>2]|0)==5)p=c[(c[l>>2]|0)+216>>2]|0;else p=0;Pt(c[q>>2]|0,22024,p,((p|0)<0)<<31>>31);break a};case 27:{if((c[n>>2]|0)!=0?(rg(c[n>>2]|0,rb)|0)==0:0){h=rb;cc(c[h>>2]|0,c[h+4>>2]|0)|0}k=c[q>>2]|0;h=cc(-1,-1)|0;Pt(k,22056,h,D);break a};case 33:{if((c[n>>2]|0)!=0?(f=(rg(c[n>>2]|0,sb)|0)==0,h=sb,k=c[h+4>>2]|0,f&((k|0)>0|(k|0)==0&(c[h>>2]|0)>>>0>=0)):0)bg(c[l>>2]|0,11,c[sb>>2]&2147483647)|0;k=c[q>>2]|0;h=bg(c[l>>2]|0,11,-1)|0;Pt(k,22072,h,((h|0)<0)<<31>>31);break a};case 31:{p=c[q>>2]|0;if(c[n>>2]|0){Wt(p,c[n>>2]|0)|0;break a}else{Pt(p,21200,d[(c[l>>2]|0)+63>>0]|0,0);break a}};case 2:{if(!(c[n>>2]|0)){h=(c[(c[l>>2]|0)+24>>2]&c[20320+((c[tb>>2]|0)*12|0)>>2]|0)!=0&1;Pt(c[q>>2]|0,c[20312+((c[tb>>2]|0)*12|0)>>2]|0,h,((h|0)<0)<<31>>31);break a}c[wa>>2]=c[20320+((c[tb>>2]|0)*12|0)>>2];if(!(d[(c[l>>2]|0)+62>>0]|0))c[wa>>2]=c[wa>>2]&-524289;h=(qg(c[n>>2]|0,0)|0)<<24>>24!=0;q=c[wa>>2]|0;if(!h){h=(c[l>>2]|0)+24|0;c[h>>2]=c[h>>2]&~q;if((c[wa>>2]|0)==16777216){h=(c[l>>2]|0)+512|0;c[h>>2]=0;c[h+4>>2]=0}}else{h=(c[l>>2]|0)+24|0;c[h>>2]=c[h>>2]|q}fp(c[p>>2]|0,142,0,0)|0;Yt(c[l>>2]|0);break a};case 32:{if(!(c[n>>2]|0)){if(!(c[392]|0))break a;Nt(c[p>>2]|0,1);Ot(c[p>>2]|0,0,0,21216,0)|0;hp(c[p>>2]|0,97,0,1,0,c[392]|0,0)|0;fp(c[p>>2]|0,35,1,1)|0;break a}if((a[c[n>>2]>>0]|0)!=0?(c[gb>>2]=vi(c[c[l>>2]>>2]|0,c[n>>2]|0,1,vb)|0,(c[gb>>2]|0)!=0|(c[vb>>2]|0)==0):0){Se(c[q>>2]|0,21240,t);break a}if((d[(c[l>>2]|0)+63>>0]|0)<=1)Xt(c[q>>2]|0)|0;hc(c[392]|0);if(a[c[n>>2]>>0]|0){c[t>>2]=c[n>>2];c[392]=qc(1200,t)|0;break a}else{c[392]=0;break a}};case 15:{if(!(c[n>>2]|0))break a;c[xb>>2]=Op(c[l>>2]|0,c[n>>2]|0,c[na>>2]|0)|0;if(!(c[xb>>2]|0))break a;c[zb>>2]=c[(c[xb>>2]|0)+12>>2];Nt(c[p>>2]|0,3);c[(c[q>>2]|0)+72>>2]=3;qp(c[q>>2]|0,c[r>>2]|0);Ot(c[p>>2]|0,0,0,21424,0)|0;Ot(c[p>>2]|0,1,0,21344,0)|0;Ot(c[p>>2]|0,2,0,21352,0)|0;c[wb>>2]=0;while(1){if((c[wb>>2]|0)>=(e[(c[xb>>2]|0)+50>>1]|0))break a;b[yb>>1]=b[(c[(c[xb>>2]|0)+4>>2]|0)+(c[wb>>2]<<1)>>1]|0;fp(c[p>>2]|0,25,c[wb>>2]|0,1)|0;fp(c[p>>2]|0,25,b[yb>>1]|0,2)|0;hp(c[p>>2]|0,97,0,3,0,c[(c[(c[zb>>2]|0)+4>>2]|0)+((b[yb>>1]|0)*24|0)>>2]|0,0)|0;fp(c[p>>2]|0,35,1,3)|0;c[wb>>2]=(c[wb>>2]|0)+1}};case 16:{if(!(c[n>>2]|0))break a;c[Ab>>2]=sp(c[l>>2]|0,c[n>>2]|0,c[na>>2]|0)|0;if(!(c[Ab>>2]|0))break a;c[p>>2]=dp(c[q>>2]|0)|0;Nt(c[p>>2]|0,3);c[(c[q>>2]|0)+72>>2]=3;qp(c[q>>2]|0,c[r>>2]|0);Ot(c[p>>2]|0,0,0,21432,0)|0;Ot(c[p>>2]|0,1,0,21352,0)|0;Ot(c[p>>2]|0,2,0,21440,0)|0;c[Bb>>2]=c[(c[Ab>>2]|0)+8>>2];c[Cb>>2]=0;while(1){if(!(c[Bb>>2]|0))break a;fp(c[p>>2]|0,25,c[Cb>>2]|0,1)|0;hp(c[p>>2]|0,97,0,2,0,c[c[Bb>>2]>>2]|0,0)|0;fp(c[p>>2]|0,25,(d[(c[Bb>>2]|0)+54>>0]|0)!=0&1,3)|0;fp(c[p>>2]|0,35,1,3)|0;c[Bb>>2]=c[(c[Bb>>2]|0)+20>>2];c[Cb>>2]=(c[Cb>>2]|0)+1}};default:{if(c[n>>2]|0){h=c[l>>2]|0;Of(h,zg(c[n>>2]|0)|0)|0}h=c[(c[l>>2]|0)+492>>2]|0;Pt(c[q>>2]|0,22048,h,((h|0)<0)<<31>>31);break a}}while(0)}}while(0);Xb(c[l>>2]|0,c[m>>2]|0);Xb(c[l>>2]|0,c[n>>2]|0);i=o;return}function Eo(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;j=i;i=i+112|0;r=j;f=j+100|0;h=j+96|0;g=j+92|0;o=j+88|0;n=j+84|0;p=j+80|0;u=j+56|0;l=j+48|0;v=j+40|0;s=j+36|0;q=j+32|0;k=j+28|0;m=j+24|0;t=j+20|0;c[f>>2]=b;c[h>>2]=d;c[g>>2]=e;c[o>>2]=c[(c[f>>2]|0)+488>>2];c[p>>2]=c[c[f>>2]>>2];c[(c[f>>2]|0)+488>>2]=0;do if((c[o>>2]|0)!=0?(c[(c[f>>2]|0)+64>>2]|0)==0:0){c[n>>2]=c[c[o>>2]>>2];c[l>>2]=Ve(c[c[f>>2]>>2]|0,c[(c[o>>2]|0)+20>>2]|0)|0;c[(c[o>>2]|0)+28>>2]=c[h>>2];while(1){e=c[o>>2]|0;if(!(c[h>>2]|0))break;c[(c[h>>2]|0)+4>>2]=e;c[h>>2]=c[(c[h>>2]|0)+32>>2]}c[v>>2]=c[e>>2];c[v+4>>2]=Mb(c[v>>2]|0)|0;Gt(u,c[f>>2]|0,c[l>>2]|0,1488,v);if((Lt(u,c[(c[o>>2]|0)+28>>2]|0)|0)==0?(Jt(u,c[(c[o>>2]|0)+12>>2]|0)|0)==0:0){if(!(a[(c[p>>2]|0)+145>>0]|0)){c[s>>2]=dp(c[f>>2]|0)|0;if(!(c[s>>2]|0))break;pp(c[f>>2]|0,0,c[l>>2]|0);c[q>>2]=rm(c[p>>2]|0,c[c[g>>2]>>2]|0,c[(c[g>>2]|0)+4>>2]|0,0)|0;e=c[f>>2]|0;u=(c[l>>2]|0)==1?14904:14928;v=c[n>>2]|0;b=c[(c[o>>2]|0)+4>>2]|0;d=c[q>>2]|0;c[r>>2]=c[(c[(c[p>>2]|0)+16>>2]|0)+(c[l>>2]<<4)>>2];c[r+4>>2]=u;c[r+8>>2]=v;c[r+12>>2]=b;c[r+16>>2]=d;cp(e,20200,r);Xb(c[p>>2]|0,c[q>>2]|0);ep(c[f>>2]|0,c[l>>2]|0);e=c[s>>2]|0;d=c[l>>2]|0;b=c[p>>2]|0;c[r>>2]=c[n>>2];gp(e,d,Te(b,20264,r)|0)}if(a[(c[p>>2]|0)+145>>0]|0){c[k>>2]=c[o>>2];c[m>>2]=(c[(c[(c[p>>2]|0)+16>>2]|0)+(c[l>>2]<<4)+12>>2]|0)+40;c[o>>2]=gh(c[m>>2]|0,c[n>>2]|0,c[o>>2]|0)|0;if(c[o>>2]|0){a[(c[p>>2]|0)+64>>0]=1;break}if((c[(c[k>>2]|0)+20>>2]|0)==(c[(c[k>>2]|0)+24>>2]|0)){c[t>>2]=bh((c[(c[k>>2]|0)+24>>2]|0)+8|0,c[(c[k>>2]|0)+4>>2]|0)|0;c[(c[k>>2]|0)+32>>2]=c[(c[t>>2]|0)+64>>2];c[(c[t>>2]|0)+64>>2]=c[k>>2]}}}}while(0);Ub(c[p>>2]|0,c[o>>2]|0);Bn(c[p>>2]|0,c[h>>2]|0);i=j;return}function Fo(b,e,f,g,h,j,k,l,m,n){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;var o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;o=i;i=i+128|0;y=o;s=o+116|0;L=o+112|0;J=o+108|0;H=o+104|0;B=o+100|0;q=o+96|0;p=o+92|0;r=o+88|0;G=o+84|0;x=o+80|0;v=o+76|0;A=o+72|0;u=o+68|0;w=o+64|0;t=o+60|0;F=o+56|0;I=o+32|0;C=o+24|0;E=o+20|0;D=o+16|0;z=o+12|0;c[s>>2]=b;c[L>>2]=e;c[J>>2]=f;c[H>>2]=g;c[B>>2]=h;c[q>>2]=j;c[p>>2]=k;c[r>>2]=l;c[G>>2]=m;c[x>>2]=n;c[v>>2]=0;c[u>>2]=0;c[w>>2]=c[c[s>>2]>>2];do if(c[G>>2]|0)if((c[(c[J>>2]|0)+4>>2]|0)>>>0<=0){c[t>>2]=1;c[F>>2]=c[L>>2];if(c[p>>2]|0){K=6;break}else break}else{Se(c[s>>2]|0,19856,y);break}else{c[t>>2]=Er(c[s>>2]|0,c[L>>2]|0,c[J>>2]|0,F)|0;if((c[t>>2]|0)>=0&(c[p>>2]|0)!=0)K=6}while(0);do if((K|0)==6?(d[(c[w>>2]|0)+64>>0]|0)==0:0){if((c[t>>2]|0)!=1?(d[(c[w>>2]|0)+145>>0]|0)!=0:0){Xb(c[w>>2]|0,c[(c[p>>2]|0)+12>>2]|0);c[(c[p>>2]|0)+12>>2]=0}c[A>>2]=Ft(c[s>>2]|0,c[p>>2]|0)|0;if(((d[(c[w>>2]|0)+145>>0]|0)==0?(c[A>>2]|0)!=0?(c[(c[J>>2]|0)+4>>2]|0)==0:0:0)?(c[(c[A>>2]|0)+68>>2]|0)==(c[(c[(c[w>>2]|0)+16>>2]|0)+28>>2]|0):0)c[t>>2]=1;if((a[(c[w>>2]|0)+64>>0]|0)==0?(Gt(I,c[s>>2]|0,c[t>>2]|0,1488,c[F>>2]|0),(Ht(I,c[p>>2]|0)|0)==0):0){c[A>>2]=Ft(c[s>>2]|0,c[p>>2]|0)|0;if(!(c[A>>2]|0)){if((d[(c[w>>2]|0)+144>>0]|0)!=1)break;a[(c[w>>2]|0)+146>>0]=1;break}if(d[(c[A>>2]|0)+44>>0]&16){Se(c[s>>2]|0,19904,y);break}c[u>>2]=Zo(c[w>>2]|0,c[F>>2]|0)|0;if((c[u>>2]|0)!=0?0==(Pp(c[s>>2]|0,c[u>>2]|0)|0):0){if(bh((c[(c[(c[w>>2]|0)+16>>2]|0)+(c[t>>2]<<4)+12>>2]|0)+40|0,c[u>>2]|0)|0){z=c[s>>2]|0;if(c[x>>2]|0){qp(z,c[t>>2]|0);break}else{c[y>>2]=c[F>>2];Se(z,19952,y);break}}if(!(Lb(c[c[A>>2]>>2]|0,15144,7)|0)){Se(c[s>>2]|0,19984,y);b=(c[s>>2]|0)+64|0;c[b>>2]=(c[b>>2]|0)+1;break}if((c[H>>2]|0)!=49?(c[(c[A>>2]|0)+12>>2]|0)!=0:0){b=c[s>>2]|0;e=c[p>>2]|0;c[y>>2]=(c[H>>2]|0)==35?20064:20072;c[y+4>>2]=e;c[y+8>>2]=0;Se(b,20024,y);break}if((c[H>>2]|0)==49?(c[(c[A>>2]|0)+12>>2]|0)==0:0){b=c[s>>2]|0;c[y>>2]=c[p>>2];c[y+4>>2]=0;Se(b,20080,y);break}c[C>>2]=Ve(c[w>>2]|0,c[(c[A>>2]|0)+68>>2]|0)|0;c[E>>2]=7;c[D>>2]=c[(c[(c[w>>2]|0)+16>>2]|0)+(c[C>>2]<<4)>>2];if(c[G>>2]|0)x=c[(c[(c[w>>2]|0)+16>>2]|0)+16>>2]|0;else x=c[D>>2]|0;c[z>>2]=x;if((c[C>>2]|0)==1|(c[G>>2]|0)!=0)c[E>>2]=5;if((ap(c[s>>2]|0,c[E>>2]|0,c[u>>2]|0,c[c[A>>2]>>2]|0,c[z>>2]|0)|0)==0?(ap(c[s>>2]|0,18,(c[C>>2]|0)==1?14904:14928,0,c[D>>2]|0)|0)==0:0){if((c[H>>2]|0)==49)c[H>>2]=35;c[v>>2]=se(c[w>>2]|0,36,0)|0;if(!(c[v>>2]|0))break;c[c[v>>2]>>2]=c[u>>2];c[u>>2]=0;b=ne(c[w>>2]|0,c[(c[p>>2]|0)+16>>2]|0)|0;c[(c[v>>2]|0)+4>>2]=b;c[(c[v>>2]|0)+20>>2]=c[(c[(c[w>>2]|0)+16>>2]|0)+(c[t>>2]<<4)+12>>2];c[(c[v>>2]|0)+24>>2]=c[(c[A>>2]|0)+68>>2];a[(c[v>>2]|0)+8>>0]=c[B>>2];a[(c[v>>2]|0)+9>>0]=(c[H>>2]|0)==35?1:2;b=Bq(c[w>>2]|0,c[r>>2]|0,1)|0;c[(c[v>>2]|0)+12>>2]=b;b=yr(c[w>>2]|0,c[q>>2]|0)|0;c[(c[v>>2]|0)+16>>2]=b;c[(c[s>>2]|0)+488>>2]=c[v>>2]}}}}while(0);Xb(c[w>>2]|0,c[u>>2]|0);vn(c[w>>2]|0,c[p>>2]|0);xn(c[w>>2]|0,c[q>>2]|0);wn(c[w>>2]|0,c[r>>2]|0);if(c[(c[s>>2]|0)+488>>2]|0){i=o;return}Ub(c[w>>2]|0,c[v>>2]|0);i=o;return}function Go(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0;j=i;i=i+32|0;l=j+16|0;o=j+12|0;h=j+8|0;k=j+4|0;n=j+20|0;m=j;c[l>>2]=b;c[o>>2]=d;c[h>>2]=e;c[k>>2]=f;a[n>>0]=g;c[m>>2]=Et(c[l>>2]|0,110,c[o>>2]|0)|0;if(c[m>>2]|0){o=Jq(c[l>>2]|0,c[h>>2]|0,1)|0;c[(c[m>>2]|0)+24>>2]=o;o=Bq(c[l>>2]|0,c[k>>2]|0,1)|0;c[(c[m>>2]|0)+20>>2]=o;a[(c[m>>2]|0)+1>>0]=a[n>>0]|0}sn(c[l>>2]|0,c[h>>2]|0);wn(c[l>>2]|0,c[k>>2]|0);i=j;return c[m>>2]|0}function Ho(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0;n=i;i=i+32|0;l=n+16|0;o=n+12|0;h=n+8|0;k=n+4|0;m=n+20|0;j=n;c[l>>2]=b;c[o>>2]=d;c[h>>2]=e;c[k>>2]=f;a[m>>0]=g;c[j>>2]=Et(c[l>>2]|0,108,c[o>>2]|0)|0;g=c[l>>2]|0;if(c[j>>2]|0){b=Wp(g,c[k>>2]|0,1)|0;c[(c[j>>2]|0)+8>>2]=b;c[(c[j>>2]|0)+28>>2]=c[h>>2];a[(c[j>>2]|0)+1>>0]=a[m>>0]|0;b=c[l>>2]|0;o=c[k>>2]|0;tn(b,o);o=c[j>>2]|0;i=n;return o|0}else{xn(g,c[h>>2]|0);b=c[l>>2]|0;o=c[k>>2]|0;tn(b,o);o=c[j>>2]|0;i=n;return o|0}return 0}function Io(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;g=i;i=i+16|0;j=g+12|0;k=g+8|0;h=g+4|0;f=g;c[j>>2]=b;c[k>>2]=d;c[h>>2]=e;c[f>>2]=Et(c[j>>2]|0,109,c[k>>2]|0)|0;if(c[f>>2]|0){k=Bq(c[j>>2]|0,c[h>>2]|0,1)|0;c[(c[f>>2]|0)+20>>2]=k;a[(c[f>>2]|0)+1>>0]=10}wn(c[j>>2]|0,c[h>>2]|0);i=g;return c[f>>2]|0}function Jo(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;i=i+16|0;f=e+12|0;h=e+8|0;g=e+4|0;j=e;c[h>>2]=b;c[g>>2]=d;c[j>>2]=se(c[h>>2]|0,40,0)|0;if(!(c[j>>2]|0)){tn(c[h>>2]|0,c[g>>2]|0);c[f>>2]=0;b=c[f>>2]|0;i=e;return b|0}else{a[c[j>>2]>>0]=119;c[(c[j>>2]|0)+8>>2]=c[g>>2];a[(c[j>>2]|0)+1>>0]=10;c[f>>2]=c[j>>2];b=c[f>>2]|0;i=e;return b|0}return 0}function Ko(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;m=i;i=i+48|0;l=m;j=m+40|0;g=m+36|0;f=m+32|0;n=m+28|0;r=m+24|0;k=m+20|0;q=m+16|0;h=m+12|0;p=m+8|0;c[j>>2]=b;c[g>>2]=d;c[f>>2]=e;c[n>>2]=0;c[h>>2]=c[c[j>>2]>>2];if(a[(c[h>>2]|0)+64>>0]|0){d=c[h>>2]|0;b=c[g>>2]|0;vn(d,b);i=m;return}if(Ar(c[j>>2]|0)|0){d=c[h>>2]|0;b=c[g>>2]|0;vn(d,b);i=m;return}c[k>>2]=c[(c[g>>2]|0)+12>>2];c[q>>2]=c[(c[g>>2]|0)+16>>2];c[r>>2]=0;while(1){if((c[r>>2]|0)>=(c[(c[h>>2]|0)+20>>2]|0))break;b=c[r>>2]|0;c[p>>2]=(c[r>>2]|0)<2?b^1:b;if(!((c[k>>2]|0)!=0?(xc(c[(c[(c[h>>2]|0)+16>>2]|0)+(c[p>>2]<<4)>>2]|0,c[k>>2]|0)|0)!=0:0))o=7;if((o|0)==7?(o=0,c[n>>2]=bh((c[(c[(c[h>>2]|0)+16>>2]|0)+(c[p>>2]<<4)+12>>2]|0)+40|0,c[q>>2]|0)|0,(c[n>>2]|0)!=0):0)break;c[r>>2]=(c[r>>2]|0)+1}if(c[n>>2]|0){Bt(c[j>>2]|0,c[n>>2]|0);d=c[h>>2]|0;b=c[g>>2]|0;vn(d,b);i=m;return}n=c[j>>2]|0;if(c[f>>2]|0)At(n,c[k>>2]|0);else{c[l>>2]=c[g>>2];c[l+4>>2]=0;Se(n,19792,l)}a[(c[j>>2]|0)+17>>0]=1;d=c[h>>2]|0;b=c[g>>2]|0;vn(d,b);i=m;return}function Lo(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;f=i;i=i+16|0;k=f+12|0;j=f+8|0;h=f+4|0;g=f;c[k>>2]=a;c[j>>2]=b;c[h>>2]=d;c[g>>2]=e;st(c[k>>2]|0,24,19552,c[j>>2]|0,c[j>>2]|0,c[h>>2]|0,c[g>>2]|0);i=f;return}function Mo(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;st(c[f>>2]|0,25,19368,c[e>>2]|0,0,0,c[e>>2]|0);i=d;return}function No(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;k=i;i=i+64|0;j=k;f=k+48|0;r=k+44|0;s=k+40|0;u=k+36|0;p=k+32|0;l=k+28|0;n=k+24|0;h=k+20|0;g=k+16|0;o=k+12|0;q=k+8|0;t=k+4|0;c[f>>2]=b;c[r>>2]=d;c[s>>2]=e;c[o>>2]=c[c[f>>2]>>2];if(Ar(c[f>>2]|0)|0){i=k;return}if(!(c[r>>2]|0)){ms(c[f>>2]|0,0);i=k;return}if(!((c[s>>2]|0)!=0?(c[c[s>>2]>>2]|0)!=0:0))m=6;do if((m|0)==6){c[t>>2]=Zo(c[c[f>>2]>>2]|0,c[r>>2]|0)|0;if(!(c[t>>2]|0)){i=k;return}c[u>>2]=$g(c[o>>2]|0,a[(c[(c[(c[o>>2]|0)+16>>2]|0)+12>>2]|0)+77>>0]|0,c[t>>2]|0,0)|0;if(!(c[u>>2]|0)){Xb(c[o>>2]|0,c[t>>2]|0);break}ms(c[f>>2]|0,c[t>>2]|0);Xb(c[o>>2]|0,c[t>>2]|0);i=k;return}while(0);c[g>>2]=Er(c[f>>2]|0,c[r>>2]|0,c[s>>2]|0,q)|0;if((c[g>>2]|0)<0){i=k;return}c[p>>2]=Zo(c[o>>2]|0,c[q>>2]|0)|0;if(!(c[p>>2]|0)){i=k;return}c[l>>2]=c[(c[(c[o>>2]|0)+16>>2]|0)+(c[g>>2]<<4)>>2];c[n>>2]=sp(c[o>>2]|0,c[p>>2]|0,c[l>>2]|0)|0;if(c[n>>2]|0){ns(c[f>>2]|0,c[n>>2]|0,0);Xb(c[o>>2]|0,c[p>>2]|0);i=k;return}c[h>>2]=Op(c[o>>2]|0,c[p>>2]|0,c[l>>2]|0)|0;Xb(c[o>>2]|0,c[p>>2]|0);l=c[f>>2]|0;if(c[h>>2]|0){pp(l,0,c[g>>2]|0);os(c[f>>2]|0,c[h>>2]|0,-1);i=k;return}else{Se(l,19064,j);i=k;return}}function Oo(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;l=i;i=i+48|0;e=l+44|0;p=l+40|0;q=l+36|0;k=l+32|0;n=l+28|0;r=l+24|0;g=l+20|0;m=l+16|0;h=l+12|0;j=l+8|0;o=l+4|0;f=l;c[e>>2]=a;c[p>>2]=b;c[q>>2]=d;c[k>>2]=c[c[e>>2]>>2];if(Ar(c[e>>2]|0)|0){i=l;return}a:do if(c[p>>2]|0){if(c[(c[q>>2]|0)+4>>2]|0){c[n>>2]=Er(c[e>>2]|0,c[p>>2]|0,c[q>>2]|0,o)|0;if((c[n>>2]|0)<0)break;c[m>>2]=c[(c[(c[k>>2]|0)+16>>2]|0)+(c[n>>2]<<4)>>2];c[g>>2]=Zo(c[k>>2]|0,c[o>>2]|0)|0;if(!(c[g>>2]|0))break;a=Op(c[k>>2]|0,c[g>>2]|0,c[m>>2]|0)|0;c[j>>2]=a;n=c[e>>2]|0;if(!a){a=Re(n,0,c[g>>2]|0,c[m>>2]|0)|0;c[h>>2]=a;if(a)Dr(c[e>>2]|0,c[h>>2]|0,0)}else Dr(n,c[(c[j>>2]|0)+12>>2]|0,c[j>>2]|0);Xb(c[k>>2]|0,c[g>>2]|0);break}c[n>>2]=Cr(c[k>>2]|0,c[p>>2]|0)|0;if((c[n>>2]|0)>=0){Br(c[e>>2]|0,c[n>>2]|0);break}c[g>>2]=Zo(c[k>>2]|0,c[p>>2]|0)|0;if(c[g>>2]|0){a=Op(c[k>>2]|0,c[g>>2]|0,0)|0;c[j>>2]=a;m=c[e>>2]|0;if(!a){a=Re(m,0,c[g>>2]|0,0)|0;c[h>>2]=a;if(a)Dr(c[e>>2]|0,c[h>>2]|0,0)}else Dr(m,c[(c[j>>2]|0)+12>>2]|0,c[j>>2]|0);Xb(c[k>>2]|0,c[g>>2]|0)}}else{c[r>>2]=0;while(1){if((c[r>>2]|0)>=(c[(c[k>>2]|0)+20>>2]|0))break a;if((c[r>>2]|0)!=1)Br(c[e>>2]|0,c[r>>2]|0);c[r>>2]=(c[r>>2]|0)+1}}while(0);c[f>>2]=dp(c[e>>2]|0)|0;if(!(c[f>>2]|0)){i=l;return}mp(c[f>>2]|0,142)|0;i=l;return}function Po(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;l=i;i=i+112|0;n=l;o=l+100|0;q=l+96|0;z=l+92|0;t=l+88|0;s=l+84|0;m=l+80|0;j=l+76|0;r=l+72|0;u=l+68|0;v=l+64|0;x=l+60|0;h=l+56|0;y=l+52|0;k=l+48|0;w=l+44|0;p=l+40|0;g=l+36|0;c[o>>2]=b;c[q>>2]=e;c[z>>2]=f;c[j>>2]=0;c[r>>2]=c[c[o>>2]>>2];c[h>>2]=0;c[y>>2]=0;c[k>>2]=c[(c[r>>2]|0)+24>>2];do if(((a[(c[r>>2]|0)+64>>0]|0)==0?(c[m>>2]=np(c[o>>2]|0,0,(c[q>>2]|0)+8|0)|0,(c[m>>2]|0)!=0):0)?(c[t>>2]=Ve(c[c[o>>2]>>2]|0,c[(c[m>>2]|0)+68>>2]|0)|0,c[s>>2]=c[(c[(c[r>>2]|0)+16>>2]|0)+(c[t>>2]<<4)>>2],b=(c[r>>2]|0)+24|0,c[b>>2]=c[b>>2]|2097152,c[j>>2]=Zo(c[r>>2]|0,c[z>>2]|0)|0,(c[j>>2]|0)!=0):0){if((sp(c[r>>2]|0,c[j>>2]|0,c[s>>2]|0)|0)==0?(Op(c[r>>2]|0,c[j>>2]|0,c[s>>2]|0)|0)==0:0){if(op(c[o>>2]|0,c[c[m>>2]>>2]|0)|0)break;if(Pp(c[o>>2]|0,c[j>>2]|0)|0)break;f=c[o>>2]|0;if(c[(c[m>>2]|0)+12>>2]|0){c[n>>2]=c[c[m>>2]>>2];Se(f,15664,n);break}if(ap(f,26,c[s>>2]|0,c[c[m>>2]>>2]|0,0)|0)break;if(Qp(c[o>>2]|0,c[m>>2]|0)|0)break;if((d[(c[m>>2]|0)+44>>0]&16|0)!=0?(c[y>>2]=Rp(c[r>>2]|0,c[m>>2]|0)|0,(c[(c[c[(c[y>>2]|0)+8>>2]>>2]|0)+76>>2]|0)==0):0)c[y>>2]=0;c[x>>2]=dp(c[o>>2]|0)|0;if(!(c[x>>2]|0))break;pp(c[o>>2]|0,(c[y>>2]|0)!=0&1,c[t>>2]|0);ep(c[o>>2]|0,c[t>>2]|0);if(c[y>>2]|0){e=(c[o>>2]|0)+72|0;b=(c[e>>2]|0)+1|0;c[e>>2]=b;c[w>>2]=b;hp(c[x>>2]|0,97,0,c[w>>2]|0,0,c[j>>2]|0,0)|0;hp(c[x>>2]|0,150,c[w>>2]|0,0,0,c[y>>2]|0,-10)|0;Sp(c[o>>2]|0)}c[v>>2]=c[c[m>>2]>>2];c[u>>2]=Tm(c[v>>2]|0,-1)|0;if((c[(c[r>>2]|0)+24>>2]&524288|0)!=0?(b=Tp(c[o>>2]|0,c[m>>2]|0)|0,c[h>>2]=b,(b|0)!=0):0){b=c[o>>2]|0;y=(c[t>>2]|0)==1?14904:14928;f=c[v>>2]|0;z=c[j>>2]|0;e=c[h>>2]|0;c[n>>2]=c[s>>2];c[n+4>>2]=y;c[n+8>>2]=f;c[n+12>>2]=z;c[n+16>>2]=e;cp(b,15696,n);Xb(c[r>>2]|0,c[h>>2]|0)}b=c[o>>2]|0;A=(c[t>>2]|0)==1?14904:14928;t=c[j>>2]|0;w=c[j>>2]|0;x=c[j>>2]|0;y=c[j>>2]|0;f=c[j>>2]|0;z=c[u>>2]|0;e=c[v>>2]|0;c[n>>2]=c[s>>2];c[n+4>>2]=A;c[n+8>>2]=t;c[n+12>>2]=w;c[n+16>>2]=x;c[n+20>>2]=y;c[n+24>>2]=f;c[n+28>>2]=z;c[n+32>>2]=e;cp(b,15768,n);if(sp(c[r>>2]|0,16152,c[s>>2]|0)|0){A=c[o>>2]|0;e=c[j>>2]|0;b=c[c[m>>2]>>2]|0;c[n>>2]=c[s>>2];c[n+4>>2]=e;c[n+8>>2]=b;cp(A,16168,n)}A=xp(c[o>>2]|0,c[m>>2]|0)|0;c[h>>2]=A;if(A){A=c[o>>2]|0;e=c[j>>2]|0;b=c[h>>2]|0;c[n>>2]=c[j>>2];c[n+4>>2]=e;c[n+8>>2]=b;cp(A,16232,n);Xb(c[r>>2]|0,c[h>>2]|0)}a:do if(c[(c[r>>2]|0)+24>>2]&524288){c[p>>2]=Up(c[m>>2]|0)|0;while(1){if(!(c[p>>2]|0))break a;c[g>>2]=c[c[p>>2]>>2];if((c[g>>2]|0)!=(c[m>>2]|0))vp(c[o>>2]|0,c[c[p>>2]>>2]|0,c[c[g>>2]>>2]|0);c[p>>2]=c[(c[p>>2]|0)+12>>2]}}while(0);vp(c[o>>2]|0,c[m>>2]|0,c[j>>2]|0);break}A=c[o>>2]|0;c[n>>2]=c[j>>2];Se(A,15600,n)}while(0);vn(c[r>>2]|0,c[q>>2]|0);Xb(c[r>>2]|0,c[j>>2]|0);c[(c[r>>2]|0)+24>>2]=c[k>>2];i=l;return}function Qo(e,f){e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;p=i;i=i+80|0;j=p;h=p+76|0;l=p+72|0;s=p+68|0;w=p+64|0;t=p+60|0;u=p+56|0;v=p+52|0;m=p+48|0;r=p+44|0;o=p+40|0;k=p+36|0;n=p+32|0;g=p+28|0;q=p+24|0;c[h>>2]=e;c[l>>2]=f;c[k>>2]=c[c[h>>2]>>2];if(c[(c[h>>2]|0)+64>>2]|0){i=p;return}if(d[(c[k>>2]|0)+64>>0]|0){i=p;return}c[s>>2]=c[(c[h>>2]|0)+484>>2];c[t>>2]=Ve(c[k>>2]|0,c[(c[s>>2]|0)+68>>2]|0)|0;c[u>>2]=c[(c[(c[k>>2]|0)+16>>2]|0)+(c[t>>2]<<4)>>2];c[v>>2]=(c[c[s>>2]>>2]|0)+16;c[r>>2]=(c[(c[s>>2]|0)+4>>2]|0)+(((b[(c[s>>2]|0)+38>>1]|0)-1|0)*24|0);c[o>>2]=c[(c[r>>2]|0)+4>>2];c[w>>2]=sp(c[k>>2]|0,c[v>>2]|0,c[u>>2]|0)|0;if(ap(c[h>>2]|0,26,c[u>>2]|0,c[c[w>>2]>>2]|0,0)|0){i=p;return}if((c[o>>2]|0)!=0?(d[c[o>>2]>>0]|0)==101:0)c[o>>2]=0;if(d[(c[r>>2]|0)+23>>0]&1){Se(c[h>>2]|0,15184,j);i=p;return}if(c[(c[s>>2]|0)+8>>2]|0){Se(c[h>>2]|0,15216,j);i=p;return}if((c[(c[k>>2]|0)+24>>2]&524288|0)!=0?(c[o>>2]|0)!=0?(c[(c[s>>2]|0)+16>>2]|0)!=0:0:0){Se(c[h>>2]|0,15248,j);i=p;return}if(!((c[o>>2]|0)!=0?1:(d[(c[r>>2]|0)+20>>0]|0)==0)){Se(c[h>>2]|0,15312,j);i=p;return}do if(c[o>>2]|0){c[n>>2]=0;if(tp(c[k>>2]|0,c[o>>2]|0,1,65,n)|0){a[(c[k>>2]|0)+64>>0]=1;i=p;return}if(c[n>>2]|0){tf(c[n>>2]|0);break}Se(c[h>>2]|0,15368,j);i=p;return}while(0);c[m>>2]=rm(c[k>>2]|0,c[c[l>>2]>>2]|0,c[(c[l>>2]|0)+4>>2]|0,0)|0;if(c[m>>2]|0){c[g>>2]=(c[m>>2]|0)+((c[(c[l>>2]|0)+4>>2]|0)-1);c[q>>2]=c[(c[k>>2]|0)+24>>2];while(1){if((c[g>>2]|0)>>>0<=(c[m>>2]|0)>>>0)break;if((a[c[g>>2]>>0]|0)!=59?(d[1224+(d[c[g>>2]>>0]|0)>>0]&1|0)==0:0)break;e=c[g>>2]|0;c[g>>2]=e+ -1;a[e>>0]=0}e=(c[k>>2]|0)+24|0;c[e>>2]=c[e>>2]|2097152;e=c[h>>2]|0;l=(c[t>>2]|0)==1?14904:14928;n=c[(c[s>>2]|0)+48>>2]|0;r=c[m>>2]|0;s=(c[(c[s>>2]|0)+48>>2]|0)+1|0;v=c[v>>2]|0;c[j>>2]=c[u>>2];c[j+4>>2]=l;c[j+8>>2]=n;c[j+12>>2]=r;c[j+16>>2]=s;c[j+20>>2]=v;cp(e,15416,j);Xb(c[k>>2]|0,c[m>>2]|0);c[(c[k>>2]|0)+24>>2]=c[q>>2]}up(c[h>>2]|0,c[t>>2]|0,(c[o>>2]|0)!=0?3:2);vp(c[h>>2]|0,c[w>>2]|0,c[c[w>>2]>>2]|0);i=p;return}function Ro(e,f){e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;g=i;i=i+48|0;l=g;k=g+40|0;n=g+36|0;h=g+32|0;o=g+28|0;p=g+24|0;m=g+20|0;q=g+16|0;s=g+12|0;j=g+8|0;r=g+4|0;c[k>>2]=e;c[n>>2]=f;c[j>>2]=c[c[k>>2]>>2];if(a[(c[j>>2]|0)+64>>0]|0){f=c[j>>2]|0;e=c[n>>2]|0;vn(f,e);i=g;return}c[o>>2]=np(c[k>>2]|0,0,(c[n>>2]|0)+8|0)|0;if(!(c[o>>2]|0)){f=c[j>>2]|0;e=c[n>>2]|0;vn(f,e);i=g;return}if(d[(c[o>>2]|0)+44>>0]&16){Se(c[k>>2]|0,14976,l);f=c[j>>2]|0;e=c[n>>2]|0;vn(f,e);i=g;return}f=c[k>>2]|0;if(c[(c[o>>2]|0)+12>>2]|0){Se(f,15016,l);f=c[j>>2]|0;e=c[n>>2]|0;vn(f,e);i=g;return}if(op(f,c[c[o>>2]>>2]|0)|0){f=c[j>>2]|0;e=c[n>>2]|0;vn(f,e);i=g;return}c[m>>2]=Ve(c[j>>2]|0,c[(c[o>>2]|0)+68>>2]|0)|0;c[h>>2]=se(c[j>>2]|0,76,0)|0;if(!(c[h>>2]|0)){f=c[j>>2]|0;e=c[n>>2]|0;vn(f,e);i=g;return}c[(c[k>>2]|0)+484>>2]=c[h>>2];b[(c[h>>2]|0)+40>>1]=1;b[(c[h>>2]|0)+38>>1]=b[(c[o>>2]|0)+38>>1]|0;c[s>>2]=((((b[(c[h>>2]|0)+38>>1]|0)-1|0)/8|0)<<3)+8;e=se(c[j>>2]|0,(c[s>>2]|0)*24|0,0)|0;c[(c[h>>2]|0)+4>>2]=e;e=c[j>>2]|0;c[l>>2]=c[c[o>>2]>>2];e=Te(e,15048,l)|0;c[c[h>>2]>>2]=e;if((c[(c[h>>2]|0)+4>>2]|0)!=0?(c[c[h>>2]>>2]|0)!=0:0){dF(c[(c[h>>2]|0)+4>>2]|0,c[(c[o>>2]|0)+4>>2]|0,(b[(c[h>>2]|0)+38>>1]|0)*24|0)|0;c[q>>2]=0;while(1){if((c[q>>2]|0)>=(b[(c[h>>2]|0)+38>>1]|0))break;c[r>>2]=(c[(c[h>>2]|0)+4>>2]|0)+((c[q>>2]|0)*24|0);e=ne(c[j>>2]|0,c[c[r>>2]>>2]|0)|0;c[c[r>>2]>>2]=e;c[(c[r>>2]|0)+16>>2]=0;c[(c[r>>2]|0)+12>>2]=0;c[(c[r>>2]|0)+4>>2]=0;c[(c[r>>2]|0)+8>>2]=0;c[q>>2]=(c[q>>2]|0)+1}c[(c[h>>2]|0)+68>>2]=c[(c[(c[j>>2]|0)+16>>2]|0)+(c[m>>2]<<4)+12>>2];c[(c[h>>2]|0)+48>>2]=c[(c[o>>2]|0)+48>>2];b[(c[h>>2]|0)+40>>1]=1;pp(c[k>>2]|0,0,c[m>>2]|0);c[p>>2]=dp(c[k>>2]|0)|0;if(!(c[p>>2]|0)){f=c[j>>2]|0;e=c[n>>2]|0;vn(f,e);i=g;return}ep(c[k>>2]|0,c[m>>2]|0);f=c[j>>2]|0;e=c[n>>2]|0;vn(f,e);i=g;return}a[(c[j>>2]|0)+64>>0]=1;f=c[j>>2]|0;e=c[n>>2]|0;vn(f,e);i=g;return}function So(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;l=i;i=i+80|0;h=l;g=l+64|0;o=l+60|0;k=l+56|0;f=l+52|0;j=l+48|0;n=l+44|0;e=l+40|0;m=l+36|0;r=l+32|0;p=l+28|0;q=l+24|0;c[g>>2]=b;c[o>>2]=d;c[k>>2]=c[(c[g>>2]|0)+484>>2];c[f>>2]=c[c[g>>2]>>2];if(!(c[k>>2]|0)){i=l;return}_o(c[g>>2]|0);c[(c[g>>2]|0)+512>>2]=0;if((c[(c[k>>2]|0)+52>>2]|0)<1){i=l;return}if(!(a[(c[f>>2]|0)+145>>0]|0)){if(c[o>>2]|0)c[(c[g>>2]|0)+500>>2]=(c[c[o>>2]>>2]|0)-(c[(c[g>>2]|0)+496>>2]|0)+(c[(c[o>>2]|0)+4>>2]|0);q=c[f>>2]|0;c[h>>2]=(c[g>>2]|0)+496;c[j>>2]=Te(q,14792,h)|0;c[e>>2]=Ve(c[f>>2]|0,c[(c[k>>2]|0)+68>>2]|0)|0;q=c[g>>2]|0;d=(c[e>>2]|0)==1?14904:14928;o=c[c[k>>2]>>2]|0;p=c[c[k>>2]>>2]|0;b=c[j>>2]|0;r=c[(c[g>>2]|0)+384>>2]|0;c[h>>2]=c[(c[(c[f>>2]|0)+16>>2]|0)+(c[e>>2]<<4)>>2];c[h+4>>2]=d;c[h+8>>2]=o;c[h+12>>2]=p;c[h+16>>2]=b;c[h+20>>2]=r;cp(q,14816,h);Xb(c[f>>2]|0,c[j>>2]|0);c[m>>2]=dp(c[g>>2]|0)|0;ep(c[g>>2]|0,c[e>>2]|0);fp(c[m>>2]|0,142,0,0)|0;q=c[f>>2]|0;c[h>>2]=c[c[k>>2]>>2];c[n>>2]=Te(q,14944,h)|0;gp(c[m>>2]|0,c[e>>2]|0,c[n>>2]|0);q=c[m>>2]|0;r=c[e>>2]|0;b=c[c[k>>2]>>2]|0;hp(q,145,r,0,0,b,(Mb(c[c[k>>2]>>2]|0)|0)+1|0)|0;i=l;return}c[p>>2]=c[(c[k>>2]|0)+68>>2];c[q>>2]=c[c[k>>2]>>2];c[r>>2]=gh((c[p>>2]|0)+8|0,c[q>>2]|0,c[k>>2]|0)|0;if(c[r>>2]|0){a[(c[f>>2]|0)+64>>0]=1;i=l;return}else{c[(c[g>>2]|0)+484>>2]=0;i=l;return}}function To(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;o=i;i=i+32|0;k=o+28|0;p=o+24|0;r=o+20|0;j=o+16|0;q=o+12|0;m=o+8|0;l=o+4|0;n=o;c[k>>2]=b;c[p>>2]=e;c[r>>2]=f;c[j>>2]=g;c[q>>2]=h;Mn(c[k>>2]|0,c[p>>2]|0,c[r>>2]|0,0,0,1,c[q>>2]|0);c[l>>2]=c[(c[k>>2]|0)+484>>2];if(!(c[l>>2]|0)){i=o;return}c[n>>2]=c[c[k>>2]>>2];c[m>>2]=Ve(c[n>>2]|0,c[(c[l>>2]|0)+68>>2]|0)|0;r=(c[l>>2]|0)+44|0;a[r>>0]=d[r>>0]|0|16;c[(c[l>>2]|0)+52>>2]=0;r=c[n>>2]|0;q=c[l>>2]|0;$o(r,q,Zo(c[n>>2]|0,c[j>>2]|0)|0);$o(c[n>>2]|0,c[l>>2]|0,0);q=c[n>>2]|0;r=c[l>>2]|0;$o(q,r,ne(c[n>>2]|0,c[c[l>>2]>>2]|0)|0);c[(c[k>>2]|0)+500>>2]=(c[c[j>>2]>>2]|0)+(c[(c[j>>2]|0)+4>>2]|0)-(c[c[p>>2]>>2]|0);if(!(c[(c[l>>2]|0)+56>>2]|0)){i=o;return}ap(c[k>>2]|0,29,c[c[l>>2]>>2]|0,c[c[(c[l>>2]|0)+56>>2]>>2]|0,c[(c[(c[c[k>>2]>>2]|0)+16>>2]|0)+(c[m>>2]<<4)>>2]|0)|0;i=o;return}function Uo(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;_o(c[d>>2]|0);c[(c[d>>2]|0)+512>>2]=0;c[(c[d>>2]|0)+516>>2]=0;i=b;return}function Vo(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;i=i+16|0;g=d+8|0;f=d+4|0;e=d;c[g>>2]=a;c[f>>2]=b;c[e>>2]=(c[g>>2]|0)+512;b=c[f>>2]|0;if(!(c[c[e>>2]>>2]|0)){c[c[e>>2]>>2]=c[b>>2];c[(c[e>>2]|0)+4>>2]=c[(c[f>>2]|0)+4>>2];i=d;return}else{c[(c[e>>2]|0)+4>>2]=(c[c[f>>2]>>2]|0)+(c[b+4>>2]|0)-(c[c[e>>2]>>2]|0);i=d;return}}function Wo(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;n=i;i=i+48|0;q=n;p=n+40|0;l=n+36|0;s=n+32|0;h=n+28|0;j=n+24|0;o=n+20|0;m=n+16|0;k=n+12|0;r=n+8|0;g=n+4|0;c[p>>2]=a;c[l>>2]=b;c[s>>2]=d;c[h>>2]=e;c[j>>2]=f;c[o>>2]=c[c[p>>2]>>2];c[k>>2]=Zo(c[c[p>>2]>>2]|0,c[s>>2]|0)|0;a:do if((c[k>>2]|0)!=0&(c[l>>2]|0)!=0){c[r>>2]=0;while(1){if((c[r>>2]|0)>=(c[c[l>>2]>>2]|0))break a;if(!(xc(c[k>>2]|0,c[(c[l>>2]|0)+8+(c[r>>2]<<4)>>2]|0)|0)){s=c[p>>2]|0;c[q>>2]=c[k>>2];Se(s,14720,q)}c[r>>2]=(c[r>>2]|0)+1}}while(0);if(c[l>>2]|0){c[g>>2]=24+(c[c[l>>2]>>2]<<4);s=c[g>>2]|0;c[m>>2]=Fk(c[o>>2]|0,c[l>>2]|0,s,((s|0)<0)<<31>>31)|0}else c[m>>2]=se(c[o>>2]|0,24,0)|0;if(!(c[m>>2]|0)){sn(c[o>>2]|0,c[h>>2]|0);tn(c[o>>2]|0,c[j>>2]|0);Xb(c[o>>2]|0,c[k>>2]|0);c[m>>2]=c[l>>2];s=c[m>>2]|0;i=n;return s|0}else{c[(c[m>>2]|0)+8+(c[c[m>>2]>>2]<<4)+8>>2]=c[j>>2];c[(c[m>>2]|0)+8+(c[c[m>>2]>>2]<<4)+4>>2]=c[h>>2];c[(c[m>>2]|0)+8+(c[c[m>>2]>>2]<<4)>>2]=c[k>>2];c[(c[m>>2]|0)+8+(c[c[m>>2]>>2]<<4)+12>>2]=0;s=c[m>>2]|0;c[s>>2]=(c[s>>2]|0)+1;s=c[m>>2]|0;i=n;return s|0}return 0}function Xo(f,g){f=f|0;g=g|0;var h=0,j=0,k=0,l=0;j=i;i=i+16|0;l=j+4|0;k=j+8|0;h=j;c[l>>2]=f;a[k>>0]=g;c[h>>2]=b[11104+(c[l>>2]<<1)>>1];c[h>>2]=(c[h>>2]|0)+(d[k>>0]|0);i=j;return e[11720+(c[h>>2]<<1)>>1]|0}function Yo(a){a=a|0;var b=0,d=0,e=0;e=i;i=i+16|0;d=e+4|0;b=e;c[d>>2]=a;c[b>>2]=c[(c[d>>2]|0)+8>>2];while(1){if((c[c[d>>2]>>2]|0)<0)break;zn(c[d>>2]|0)|0}c[(c[d>>2]|0)+8>>2]=c[b>>2];i=e;return}function Zo(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;i=i+16|0;g=d+8|0;f=d+4|0;e=d;c[g>>2]=a;c[f>>2]=b;if(c[f>>2]|0){c[e>>2]=rm(c[g>>2]|0,c[c[f>>2]>>2]|0,c[(c[f>>2]|0)+4>>2]|0,0)|0;sm(c[e>>2]|0)|0;a=c[e>>2]|0;i=d;return a|0}else{c[e>>2]=0;a=c[e>>2]|0;i=d;return a|0}return 0}function _o(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=i;i=i+16|0;d=b+12|0;e=b+8|0;f=b+4|0;g=b;c[d>>2]=a;if(!(c[(c[d>>2]|0)+512>>2]|0)){i=b;return}if(!(c[(c[d>>2]|0)+484>>2]|0)){i=b;return}c[e>>2]=c[(c[d>>2]|0)+512>>2];c[f>>2]=c[(c[d>>2]|0)+516>>2];c[g>>2]=c[c[d>>2]>>2];a=c[g>>2]|0;d=c[(c[d>>2]|0)+484>>2]|0;f=c[f>>2]|0;$o(a,d,rm(c[g>>2]|0,c[e>>2]|0,f,((f|0)<0)<<31>>31)|0);i=b;return}function $o(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;j=i;i=i+32|0;k=j+24|0;f=j+20|0;e=j+16|0;h=j+12|0;m=j+8|0;g=j+4|0;l=j;c[k>>2]=a;c[f>>2]=b;c[e>>2]=d;b=(c[f>>2]|0)+52|0;a=c[b>>2]|0;c[b>>2]=a+1;c[h>>2]=a;c[m>>2]=1+(c[(c[f>>2]|0)+52>>2]|0)<<2;a=c[m>>2]|0;c[g>>2]=Fk(c[k>>2]|0,c[(c[f>>2]|0)+56>>2]|0,a,((a|0)<0)<<31>>31)|0;if(c[g>>2]|0){c[(c[g>>2]|0)+(c[h>>2]<<2)>>2]=c[e>>2];c[(c[g>>2]|0)+((c[h>>2]|0)+1<<2)>>2]=0;a=c[g>>2]|0;m=c[f>>2]|0;m=m+56|0;c[m>>2]=a;i=j;return}c[l>>2]=0;while(1){d=c[k>>2]|0;if((c[l>>2]|0)>=(c[h>>2]|0))break;Xb(d,c[(c[(c[f>>2]|0)+56>>2]|0)+(c[l>>2]<<2)>>2]|0);c[l>>2]=(c[l>>2]|0)+1}Xb(d,c[e>>2]|0);Xb(c[k>>2]|0,c[(c[f>>2]|0)+56>>2]|0);c[(c[f>>2]|0)+52>>2]=0;a=c[g>>2]|0;m=c[f>>2]|0;m=m+56|0;c[m>>2]=a;i=j;return}function ap(a,b,e,f,g){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;o=i;i=i+48|0;m=o;j=o+32|0;l=o+28|0;h=o+24|0;p=o+20|0;q=o+16|0;r=o+12|0;n=o+8|0;k=o+4|0;c[l>>2]=a;c[h>>2]=b;c[p>>2]=e;c[q>>2]=f;c[r>>2]=g;c[n>>2]=c[c[l>>2]>>2];if((d[(c[n>>2]|0)+145>>0]|0|0)==0?(d[(c[l>>2]|0)+451>>0]|0|0)==0:0){if(!(c[(c[n>>2]|0)+284>>2]|0)){c[j>>2]=0;a=c[j>>2]|0;i=o;return a|0}c[k>>2]=tb[c[(c[n>>2]|0)+284>>2]&1](c[(c[n>>2]|0)+288>>2]|0,c[h>>2]|0,c[p>>2]|0,c[q>>2]|0,c[r>>2]|0,c[(c[l>>2]|0)+492>>2]|0)|0;if((c[k>>2]|0)!=1){if((c[k>>2]|0)!=0&(c[k>>2]|0)!=2){c[k>>2]=1;bp(c[l>>2]|0)}}else{Se(c[l>>2]|0,14752,m);c[(c[l>>2]|0)+12>>2]=23}c[j>>2]=c[k>>2];a=c[j>>2]|0;i=o;return a|0}c[j>>2]=0;a=c[j>>2]|0;i=o;return a|0}function bp(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b+4|0;c[d>>2]=a;Se(c[d>>2]|0,14768,b);c[(c[d>>2]|0)+12>>2]=1;i=b;return}function cp(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;l=i;i=i+144|0;f=l+36|0;n=l+32|0;m=l+16|0;g=l+8|0;h=l+4|0;j=l;k=l+40|0;c[f>>2]=b;c[n>>2]=d;c[h>>2]=0;c[j>>2]=c[c[f>>2]>>2];if(c[(c[f>>2]|0)+64>>2]|0){i=l;return}c[m>>2]=e;c[g>>2]=yn(c[j>>2]|0,c[n>>2]|0,m)|0;if(!(c[g>>2]|0)){i=l;return}n=(c[f>>2]|0)+18|0;a[n>>0]=(a[n>>0]|0)+1<<24>>24;n=k+0|0;e=(c[f>>2]|0)+440|0;m=n+96|0;do{a[n>>0]=a[e>>0]|0;n=n+1|0;e=e+1|0}while((n|0)<(m|0));n=(c[f>>2]|0)+440|0;m=n+96|0;do{c[n>>2]=0;n=n+4|0}while((n|0)<(m|0));qf(c[f>>2]|0,c[g>>2]|0,h)|0;Xb(c[j>>2]|0,c[h>>2]|0);Xb(c[j>>2]|0,c[g>>2]|0);n=(c[f>>2]|0)+440|0;e=k+0|0;m=n+96|0;do{a[n>>0]=a[e>>0]|0;n=n+1|0;e=e+1|0}while((n|0)<(m|0));b=(c[f>>2]|0)+18|0;a[b>>0]=(a[b>>0]|0)+ -1<<24>>24;i=l;return}function dp(b){b=b|0;var d=0,f=0,g=0;d=i;i=i+16|0;g=d+4|0;f=d;c[g>>2]=b;c[f>>2]=c[(c[g>>2]|0)+8>>2];if(!(c[f>>2]|0)){b=Ue(c[g>>2]|0)|0;c[(c[g>>2]|0)+8>>2]=b;c[f>>2]=b;if(c[f>>2]|0)mp(c[f>>2]|0,153)|0;if((c[(c[g>>2]|0)+408>>2]|0)==0?((e[(c[c[g>>2]>>2]|0)+60>>1]|0)&8|0)==0:0)a[(c[g>>2]|0)+23>>0]=1}i=d;return c[f>>2]|0}function ep(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;d=i;i=i+32|0;f=d+16|0;g=d+12|0;e=d+8|0;j=d+4|0;h=d;c[f>>2]=a;c[g>>2]=b;c[e>>2]=kp(c[f>>2]|0)|0;c[j>>2]=c[c[f>>2]>>2];c[h>>2]=c[(c[f>>2]|0)+8>>2];fp(c[h>>2]|0,25,(c[c[(c[(c[j>>2]|0)+16>>2]|0)+(c[g>>2]<<4)+12>>2]>>2]|0)+1|0,c[e>>2]|0)|0;ip(c[h>>2]|0,52,c[g>>2]|0,1,c[e>>2]|0)|0;lp(c[f>>2]|0,c[e>>2]|0);i=d;return}function fp(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;f=i;i=i+16|0;k=f+12|0;j=f+8|0;h=f+4|0;g=f;c[k>>2]=a;c[j>>2]=b;c[h>>2]=d;c[g>>2]=e;a=ip(c[k>>2]|0,c[j>>2]|0,c[h>>2]|0,c[g>>2]|0,0)|0;i=f;return a|0}function gp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;e=i;i=i+32|0;g=e+16|0;k=e+12|0;h=e+8|0;f=e+4|0;j=e;c[g>>2]=a;c[k>>2]=b;c[h>>2]=d;c[j>>2]=ip(c[g>>2]|0,122,c[k>>2]|0,0,0)|0;bf(c[g>>2]|0,c[j>>2]|0,c[h>>2]|0,-1);c[f>>2]=0;while(1){if((c[f>>2]|0)>=(c[(c[c[g>>2]>>2]|0)+20>>2]|0))break;Ze(c[g>>2]|0,c[f>>2]|0);c[f>>2]=(c[f>>2]|0)+1}i=e;return}function hp(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;k=i;i=i+32|0;n=k+28|0;r=k+24|0;q=k+20|0;p=k+16|0;o=k+12|0;m=k+8|0;l=k+4|0;j=k;c[n>>2]=a;c[r>>2]=b;c[q>>2]=d;c[p>>2]=e;c[o>>2]=f;c[m>>2]=g;c[l>>2]=h;c[j>>2]=ip(c[n>>2]|0,c[r>>2]|0,c[q>>2]|0,c[p>>2]|0,c[o>>2]|0)|0;bf(c[n>>2]|0,c[j>>2]|0,c[m>>2]|0,c[l>>2]|0);i=k;return c[j>>2]|0}function ip(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;j=i;i=i+32|0;o=j+28|0;k=j+24|0;n=j+20|0;h=j+16|0;p=j+12|0;q=j+8|0;l=j+4|0;m=j;c[k>>2]=b;c[n>>2]=d;c[h>>2]=e;c[p>>2]=f;c[q>>2]=g;c[l>>2]=c[(c[k>>2]|0)+32>>2];if((c[(c[(c[k>>2]|0)+24>>2]|0)+84>>2]|0)<=(c[l>>2]|0)?(jp(c[k>>2]|0,1)|0)!=0:0){c[o>>2]=1;b=c[o>>2]|0;i=j;return b|0}b=(c[k>>2]|0)+32|0;c[b>>2]=(c[b>>2]|0)+1;c[m>>2]=(c[(c[k>>2]|0)+4>>2]|0)+((c[l>>2]|0)*20|0);a[c[m>>2]>>0]=c[n>>2];a[(c[m>>2]|0)+3>>0]=0;c[(c[m>>2]|0)+4>>2]=c[h>>2];c[(c[m>>2]|0)+8>>2]=c[p>>2];c[(c[m>>2]|0)+12>>2]=c[q>>2];c[(c[m>>2]|0)+16>>2]=0;a[(c[m>>2]|0)+1>>0]=0;c[o>>2]=c[l>>2];b=c[o>>2]|0;i=j;return b|0}function jp(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=i;i=i+32|0;g=e+16|0;d=e+8|0;f=e+4|0;h=e;c[g>>2]=a;c[e+12>>2]=b;c[f>>2]=c[(c[g>>2]|0)+24>>2];if(c[(c[f>>2]|0)+84>>2]|0)b=c[(c[f>>2]|0)+84>>2]<<1;else b=51;c[h>>2]=b;c[d>>2]=Fk(c[c[f>>2]>>2]|0,c[(c[g>>2]|0)+4>>2]|0,(c[h>>2]|0)*20|0,0)|0;if(!(c[d>>2]|0)){a=c[d>>2]|0;a=(a|0)!=0;a=a?0:7;i=e;return a|0}a=((Bk(c[c[f>>2]>>2]|0,c[d>>2]|0)|0)>>>0)/20|0;c[(c[f>>2]|0)+84>>2]=a;c[(c[g>>2]|0)+4>>2]=c[d>>2];a=c[d>>2]|0;a=(a|0)!=0;a=a?0:7;i=e;return a|0}function kp(b){b=b|0;var e=0,f=0,g=0,h=0;e=i;i=i+16|0;f=e+4|0;g=e;c[g>>2]=b;b=c[g>>2]|0;if(!(d[(c[g>>2]|0)+19>>0]|0)){g=b+72|0;b=(c[g>>2]|0)+1|0;c[g>>2]=b;c[f>>2]=b;b=c[f>>2]|0;i=e;return b|0}else{h=b+19|0;b=(a[h>>0]|0)+ -1<<24>>24;a[h>>0]=b;c[f>>2]=c[(c[g>>2]|0)+24+((b&255)<<2)>>2];b=c[f>>2]|0;i=e;return b|0}return 0}function lp(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;f=i;i=i+16|0;j=f+12|0;h=f+8|0;k=f+4|0;g=f;c[j>>2]=b;c[h>>2]=e;if(!(c[h>>2]|0)){i=f;return}if((d[(c[j>>2]|0)+19>>0]|0|0)>=8){i=f;return}c[k>>2]=0;c[g>>2]=(c[j>>2]|0)+116;while(1){if((c[k>>2]|0)>=10){e=8;break}if((c[(c[g>>2]|0)+12>>2]|0)==(c[h>>2]|0)){e=6;break}c[k>>2]=(c[k>>2]|0)+1;c[g>>2]=(c[g>>2]|0)+20}if((e|0)==6){a[(c[g>>2]|0)+6>>0]=1;i=f;return}else if((e|0)==8){k=c[h>>2]|0;e=(c[j>>2]|0)+19|0;b=a[e>>0]|0;a[e>>0]=b+1<<24>>24;c[(c[j>>2]|0)+24+((b&255)<<2)>>2]=k;i=f;return}}function mp(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;a=ip(c[f>>2]|0,c[e>>2]|0,0,0,0)|0;i=d;return a|0}function np(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;e=i;i=i+32|0;j=e+16|0;h=e+12|0;g=e+8|0;f=e+4|0;k=e;c[j>>2]=a;c[h>>2]=b;c[g>>2]=d;if(c[c[g>>2]>>2]|0){c[k>>2]=Ve(c[c[j>>2]>>2]|0,c[c[g>>2]>>2]|0)|0;c[f>>2]=c[(c[(c[c[j>>2]>>2]|0)+16>>2]|0)+(c[k>>2]<<4)>>2]}else c[f>>2]=c[(c[g>>2]|0)+4>>2];a=Re(c[j>>2]|0,c[h>>2]|0,c[(c[g>>2]|0)+8>>2]|0,c[f>>2]|0)|0;i=e;return a|0}function op(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=i;i=i+16|0;f=h;g=h+12|0;d=h+8|0;e=h+4|0;c[d>>2]=a;c[e>>2]=b;if((Mb(c[e>>2]|0)|0)>6?0==(Lb(c[e>>2]|0,15144,7)|0):0){a=c[d>>2]|0;c[f>>2]=c[e>>2];Se(a,15152,f);c[g>>2]=1;a=c[g>>2]|0;i=h;return a|0}c[g>>2]=0;a=c[g>>2]|0;i=h;return a|0}function pp(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;g=i;i=i+16|0;l=g+12|0;h=g+8|0;k=g+4|0;j=g;c[l>>2]=b;c[h>>2]=e;c[k>>2]=f;f=c[l>>2]|0;if(c[(c[l>>2]|0)+408>>2]|0)f=c[f+408>>2]|0;c[j>>2]=f;qp(c[l>>2]|0,c[k>>2]|0);b=(c[j>>2]|0)+328|0;c[b>>2]=c[b>>2]|1<>2];b=(c[j>>2]|0)+20|0;a[b>>0]=d[b>>0]|0|c[h>>2];i=g;return}function qp(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=i;i=i+16|0;h=d+12|0;f=d+8|0;e=d+4|0;g=d;c[h>>2]=a;c[f>>2]=b;b=c[h>>2]|0;if(c[(c[h>>2]|0)+408>>2]|0)b=c[b+408>>2]|0;c[e>>2]=b;c[g>>2]=c[c[e>>2]>>2];if((c[(c[e>>2]|0)+332>>2]&1<>2]|0)!=0|0){i=d;return}h=(c[e>>2]|0)+332|0;c[h>>2]=c[h>>2]|1<>2];c[(c[e>>2]|0)+336+(c[f>>2]<<2)>>2]=c[c[(c[(c[g>>2]|0)+16>>2]|0)+(c[f>>2]<<4)+12>>2]>>2];if((c[f>>2]|0)!=1){i=d;return}rp(c[e>>2]|0)|0;i=d;return}function rp(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;d=i;i=i+32|0;h=d;e=d+20|0;f=d+16|0;j=d+12|0;g=d+8|0;k=d+4|0;c[f>>2]=b;c[j>>2]=c[c[f>>2]>>2];if((c[(c[(c[j>>2]|0)+16>>2]|0)+20>>2]|0)==0?(a[(c[f>>2]|0)+450>>0]|0)==0:0){c[g>>2]=rh(c[c[j>>2]>>2]|0,0,c[j>>2]|0,k,0,542)|0;if(c[g>>2]|0){Se(c[f>>2]|0,15072,h);c[(c[f>>2]|0)+12>>2]=c[g>>2];c[e>>2]=1;k=c[e>>2]|0;i=d;return k|0}c[(c[(c[j>>2]|0)+16>>2]|0)+20>>2]=c[k>>2];if(7==(kg(c[k>>2]|0,c[(c[j>>2]|0)+72>>2]|0,-1,0)|0)){a[(c[j>>2]|0)+64>>0]=1;c[e>>2]=1;k=c[e>>2]|0;i=d;return k|0}}c[e>>2]=0;k=c[e>>2]|0;i=d;return k|0}function sp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;k=i;i=i+32|0;h=k+20|0;e=k+16|0;l=k+12|0;g=k+8|0;m=k+4|0;j=k;c[h>>2]=a;c[e>>2]=b;c[l>>2]=d;c[g>>2]=0;c[m>>2]=0;while(1){if((c[m>>2]|0)>=(c[(c[h>>2]|0)+20>>2]|0)){f=7;break}a=c[m>>2]|0;c[j>>2]=(c[m>>2]|0)<2?a^1:a;if(!((c[l>>2]|0)!=0?(xc(c[l>>2]|0,c[(c[(c[h>>2]|0)+16>>2]|0)+(c[j>>2]<<4)>>2]|0)|0)!=0:0))f=5;if((f|0)==5?(f=0,c[g>>2]=bh((c[(c[(c[h>>2]|0)+16>>2]|0)+(c[j>>2]<<4)+12>>2]|0)+8|0,c[e>>2]|0)|0,(c[g>>2]|0)!=0):0){f=7;break}c[m>>2]=(c[m>>2]|0)+1}if((f|0)==7){i=k;return c[g>>2]|0}return 0}function tp(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0;h=i;i=i+16|0;n=h+8|0;m=h+4|0;l=h+13|0;k=h+12|0;j=h;c[n>>2]=b;c[m>>2]=d;a[l>>0]=e;a[k>>0]=f;c[j>>2]=g;b=Ap(c[n>>2]|0,c[m>>2]|0,a[l>>0]|0,a[k>>0]|0,c[j>>2]|0,0)|0;i=h;return b|0}function up(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;j=i;i=i+32|0;f=j+24|0;k=j+20|0;l=j+16|0;e=j+12|0;g=j+8|0;h=j+4|0;m=j;c[f>>2]=a;c[k>>2]=b;c[l>>2]=d;c[e>>2]=dp(c[f>>2]|0)|0;if(!(c[e>>2]|0)){i=j;return}c[g>>2]=kp(c[f>>2]|0)|0;c[h>>2]=kp(c[f>>2]|0)|0;ip(c[e>>2]|0,51,c[k>>2]|0,c[g>>2]|0,2)|0;Ze(c[e>>2]|0,c[k>>2]|0);fp(c[e>>2]|0,25,c[l>>2]|0,c[h>>2]|0)|0;c[m>>2]=ip(c[e>>2]|0,83,c[h>>2]|0,0,c[g>>2]|0)|0;Xe(c[e>>2]|0,-112);ip(c[e>>2]|0,52,c[k>>2]|0,2,c[h>>2]|0)|0;zp(c[e>>2]|0,c[m>>2]|0);lp(c[f>>2]|0,c[g>>2]|0);lp(c[f>>2]|0,c[h>>2]|0);i=j;return}function vp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;k=i;i=i+48|0;l=k;j=k+32|0;h=k+28|0;e=k+24|0;f=k+20|0;m=k+16|0;g=k+12|0;n=k+8|0;o=k+4|0;c[j>>2]=a;c[h>>2]=b;c[e>>2]=d;c[f>>2]=dp(c[j>>2]|0)|0;if(!(c[f>>2]|0)){i=k;return}c[g>>2]=Ve(c[c[j>>2]>>2]|0,c[(c[h>>2]|0)+68>>2]|0)|0;c[n>>2]=wp(c[j>>2]|0,c[h>>2]|0)|0;while(1){if(!(c[n>>2]|0))break;c[o>>2]=Ve(c[c[j>>2]>>2]|0,c[(c[n>>2]|0)+20>>2]|0)|0;hp(c[f>>2]|0,126,c[o>>2]|0,0,0,c[c[n>>2]>>2]|0,0)|0;c[n>>2]=c[(c[n>>2]|0)+32>>2]}hp(c[f>>2]|0,124,c[g>>2]|0,0,0,c[c[h>>2]>>2]|0,0)|0;a=c[c[j>>2]>>2]|0;c[l>>2]=c[e>>2];c[m>>2]=Te(a,15528,l)|0;if(!(c[m>>2]|0)){i=k;return}gp(c[f>>2]|0,c[g>>2]|0,c[m>>2]|0);a=xp(c[j>>2]|0,c[h>>2]|0)|0;c[m>>2]=a;if(!a){i=k;return}gp(c[f>>2]|0,1,c[m>>2]|0);i=k;return}function wp(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;f=i;i=i+32|0;e=f+24|0;m=f+20|0;k=f+16|0;l=f+12|0;h=f+8|0;j=f+4|0;g=f;c[m>>2]=b;c[k>>2]=d;c[l>>2]=c[(c[(c[c[m>>2]>>2]|0)+16>>2]|0)+28>>2];c[h>>2]=0;if(a[(c[m>>2]|0)+438>>0]|0){c[e>>2]=0;m=c[e>>2]|0;i=f;return m|0}a:do if((c[l>>2]|0)!=(c[(c[k>>2]|0)+68>>2]|0)){c[j>>2]=c[(c[l>>2]|0)+48>>2];while(1){if(!(c[j>>2]|0))break a;c[g>>2]=c[(c[j>>2]|0)+8>>2];if((c[(c[g>>2]|0)+24>>2]|0)==(c[(c[k>>2]|0)+68>>2]|0)?0==(xc(c[(c[g>>2]|0)+4>>2]|0,c[c[k>>2]>>2]|0)|0):0){if(c[h>>2]|0)d=c[h>>2]|0;else d=c[(c[k>>2]|0)+64>>2]|0;c[(c[g>>2]|0)+32>>2]=d;c[h>>2]=c[g>>2]}c[j>>2]=c[c[j>>2]>>2]}}while(0);if(c[h>>2]|0)g=c[h>>2]|0;else g=c[(c[k>>2]|0)+64>>2]|0;c[e>>2]=g;m=c[e>>2]|0;i=f;return m|0}function xp(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;e=i;i=i+32|0;g=e;f=e+28|0;m=e+24|0;k=e+20|0;h=e+16|0;l=e+12|0;j=e+8|0;d=e+4|0;c[f>>2]=a;c[m>>2]=b;c[h>>2]=0;c[l>>2]=c[(c[(c[c[f>>2]>>2]|0)+16>>2]|0)+28>>2];a:do if((c[(c[m>>2]|0)+68>>2]|0)!=(c[l>>2]|0)){c[j>>2]=c[c[f>>2]>>2];c[k>>2]=wp(c[f>>2]|0,c[m>>2]|0)|0;while(1){if(!(c[k>>2]|0))break a;if((c[(c[k>>2]|0)+20>>2]|0)==(c[l>>2]|0))c[h>>2]=yp(c[j>>2]|0,c[h>>2]|0,c[c[k>>2]>>2]|0)|0;c[k>>2]=c[(c[k>>2]|0)+32>>2]}}while(0);if(!(c[h>>2]|0)){a=c[h>>2]|0;i=e;return a|0}a=c[c[f>>2]>>2]|0;c[g>>2]=c[h>>2];c[d>>2]=Te(a,15544,g)|0;Xb(c[c[f>>2]>>2]|0,c[h>>2]|0);c[h>>2]=c[d>>2];a=c[h>>2]|0;i=e;return a|0}function yp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;e=i;i=i+32|0;j=e;h=e+20|0;g=e+16|0;k=e+12|0;f=e+8|0;c[h>>2]=a;c[g>>2]=b;c[k>>2]=d;d=c[h>>2]|0;if(c[g>>2]|0){a=c[k>>2]|0;c[j>>2]=c[g>>2];c[j+4>>2]=a;c[f>>2]=Te(d,15576,j)|0;Xb(c[h>>2]|0,c[g>>2]|0);a=c[f>>2]|0;i=e;return a|0}else{c[j>>2]=c[k>>2];c[f>>2]=Te(d,15568,j)|0;a=c[f>>2]|0;i=e;return a|0}return 0}function zp(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;$e(c[e>>2]|0,c[f>>2]|0,c[(c[e>>2]|0)+32>>2]|0);c[(c[(c[e>>2]|0)+24>>2]|0)+88>>2]=(c[(c[e>>2]|0)+32>>2]|0)-1;i=d;return}function Ap(f,g,j,k,l,m){f=f|0;g=g|0;j=j|0;k=k|0;l=l|0;m=m|0;var n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,E=0;r=i;i=i+64|0;C=r;n=r+52|0;u=r+48|0;y=r+44|0;t=r+58|0;s=r+57|0;o=r+40|0;x=r+36|0;z=r+32|0;v=r+28|0;q=r+24|0;w=r+20|0;B=r+16|0;p=r+12|0;A=r+56|0;E=r+8|0;c[u>>2]=f;c[y>>2]=g;a[t>>0]=j;a[s>>0]=k;c[o>>2]=l;c[x>>2]=m;c[v>>2]=0;c[q>>2]=0;c[w>>2]=1;c[B>>2]=1216;c[p>>2]=0;if(!(c[y>>2]|0)){c[c[o>>2]>>2]=0;c[n>>2]=0;f=c[n>>2]|0;i=r;return f|0}while(1){f=d[c[y>>2]>>0]|0;c[z>>2]=f;if((f|0)!=158)break;c[y>>2]=c[(c[y>>2]|0)+12>>2]}if((c[z>>2]|0)==159)c[z>>2]=d[(c[y>>2]|0)+38>>0];if((c[z>>2]|0)==38){a[A>>0]=Bp(c[(c[y>>2]|0)+8>>2]|0,0)|0;c[p>>2]=Ap(c[u>>2]|0,c[(c[y>>2]|0)+12>>2]|0,a[t>>0]|0,a[A>>0]|0,c[o>>2]|0,c[x>>2]|0)|0;if(c[c[o>>2]>>2]|0){Cp(c[c[o>>2]>>2]|0,a[A>>0]|0,1);Dp(c[c[o>>2]>>2]|0,a[s>>0]|0,1)}c[n>>2]=c[p>>2];f=c[n>>2]|0;i=r;return f|0}do if((c[z>>2]|0)==157){if((d[c[(c[y>>2]|0)+12>>2]>>0]|0|0)!=132?(d[c[(c[y>>2]|0)+12>>2]>>0]|0|0)!=133:0)break;c[y>>2]=c[(c[y>>2]|0)+12>>2];c[z>>2]=d[c[y>>2]>>0];c[w>>2]=-1;c[B>>2]=15592}while(0);do if((c[z>>2]|0)==97|(c[z>>2]|0)==133|(c[z>>2]|0)==132){c[q>>2]=Ep(c[u>>2]|0,c[x>>2]|0)|0;if(c[q>>2]|0){if(c[(c[y>>2]|0)+4>>2]&1024){g=c[q>>2]|0;j=c[(c[y>>2]|0)+8>>2]|0;f=c[w>>2]|0;f=lF(j|0,((j|0)<0)<<31>>31|0,f|0,((f|0)<0)<<31>>31|0)|0;Xd(g,f,D)}else{f=c[u>>2]|0;g=c[(c[y>>2]|0)+8>>2]|0;c[C>>2]=c[B>>2];c[C+4>>2]=g;c[v>>2]=Te(f,8992,C)|0;if(!(c[v>>2]|0)){s=43;break}sf(c[q>>2]|0,-1,c[v>>2]|0,1,16)}if((c[z>>2]|0)==132|(c[z>>2]|0)==133?(d[s>>0]|0|0)==65:0)Dp(c[q>>2]|0,67,1);else Dp(c[q>>2]|0,a[s>>0]|0,1);if((e[(c[q>>2]|0)+8>>1]|0)&12){f=(c[q>>2]|0)+8|0;b[f>>1]=(e[f>>1]|0)&-3}if((d[t>>0]|0|0)!=1){c[p>>2]=yk(c[q>>2]|0,d[t>>0]|0)|0;s=42}else s=42}else s=43}else{if((c[z>>2]|0)!=157){if((c[z>>2]|0)==101){c[q>>2]=Ep(c[u>>2]|0,c[x>>2]|0)|0;if(!(c[q>>2]|0)){s=43;break}else{s=42;break}}if((c[z>>2]|0)!=134){s=42;break}c[q>>2]=Ep(c[u>>2]|0,c[x>>2]|0)|0;if(!(c[q>>2]|0)){s=43;break}c[v>>2]=(c[(c[y>>2]|0)+8>>2]|0)+2;c[E>>2]=(Mb(c[v>>2]|0)|0)-1;f=c[q>>2]|0;s=Gp(c[u>>2]|0,c[v>>2]|0,c[E>>2]|0)|0;Vd(f,s,(c[E>>2]|0)/2|0,0,16)|0;s=42;break}f=0==(tp(c[u>>2]|0,c[(c[y>>2]|0)+12>>2]|0,a[t>>0]|0,a[s>>0]|0,q)|0);if(f&(c[q>>2]|0)!=0){Fp(c[q>>2]|0)|0;u=c[q>>2]|0;do if(!((e[(c[q>>2]|0)+8>>1]|0)&8)){f=u;u=c[q>>2]|0;if((c[f>>2]|0)==0?(c[f+4>>2]|0)==-2147483648:0){h[u>>3]=9223372036854776000.0;b[(c[q>>2]|0)+8>>1]=(e[(c[q>>2]|0)+8>>1]|0)&-16896|8;break}else{g=u;g=ZE(0,0,c[g>>2]|0,c[g+4>>2]|0)|0;f=c[q>>2]|0;c[f>>2]=g;c[f+4>>2]=D;break}}else h[c[q>>2]>>3]=-+h[u>>3];while(0);Dp(c[q>>2]|0,a[s>>0]|0,a[t>>0]|0);s=42}else s=42}while(0);if((s|0)==42){c[c[o>>2]>>2]=c[q>>2];c[n>>2]=c[p>>2];f=c[n>>2]|0;i=r;return f|0}else if((s|0)==43){a[(c[u>>2]|0)+64>>0]=1;Xb(c[u>>2]|0,c[v>>2]|0);tf(c[q>>2]|0);c[n>>2]=7;f=c[n>>2]|0;i=r;return f|0}return 0}function Bp(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;l=i;i=i+32|0;h=l+21|0;o=l+16|0;k=l+12|0;n=l+8|0;j=l+20|0;m=l+4|0;f=l;c[o>>2]=b;c[k>>2]=e;c[n>>2]=0;a[j>>0]=67;c[m>>2]=0;if(!(c[o>>2]|0)){a[h>>0]=a[j>>0]|0;b=a[h>>0]|0;i=l;return b|0}a:while(1){if(!(a[c[o>>2]>>0]|0))break;c[n>>2]=(c[n>>2]<<8)+(d[440+(a[c[o>>2]>>0]&255)>>0]|0);c[o>>2]=(c[o>>2]|0)+1;if((c[n>>2]|0)==1667785074){a[j>>0]=66;c[m>>2]=c[o>>2];continue}if((c[n>>2]|0)==1668050786){a[j>>0]=66;continue}if((c[n>>2]|0)==1952807028){a[j>>0]=66;continue}do if((c[n>>2]|0)==1651273570){if((a[j>>0]|0)!=67?(a[j>>0]|0)!=69:0)break;a[j>>0]=65;if((a[c[o>>2]>>0]|0)!=40)continue a;c[m>>2]=c[o>>2];continue a}while(0);if((c[n>>2]|0)==1919246700?(a[j>>0]|0)==67:0){a[j>>0]=69;continue}if((c[n>>2]|0)==1718382433?(a[j>>0]|0)==67:0){a[j>>0]=69;continue}if((c[n>>2]|0)==1685026146?(a[j>>0]|0)==67:0){a[j>>0]=69;continue}if((c[n>>2]&16777215|0)==6909556){g=25;break}}if((g|0)==25)a[j>>0]=68;b:do if((c[k>>2]|0)!=0?(a[c[k>>2]>>0]=1,(a[j>>0]|0)<67):0){if(!(c[m>>2]|0)){a[c[k>>2]>>0]=5;break}while(1){if(!(a[c[m>>2]>>0]|0))break b;if(d[1224+(d[c[m>>2]>>0]|0)>>0]&4)break;c[m>>2]=(c[m>>2]|0)+1}c[f>>2]=0;Ag(c[m>>2]|0,f)|0;b=((c[f>>2]|0)/4|0)+1|0;c[f>>2]=b;c[f>>2]=(c[f>>2]|0)>255?255:b;a[c[k>>2]>>0]=c[f>>2]}while(0);a[h>>0]=a[j>>0]|0;b=a[h>>0]|0;i=l;return b|0}function Cp(f,g,h){f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0;j=i;i=i+16|0;l=j;m=j+5|0;k=j+4|0;c[l>>2]=f;a[m>>0]=g;a[k>>0]=h;if((e[(c[l>>2]|0)+8>>1]|0)&1){i=j;return}h=d[m>>0]|0;if((h|0)==65){h=c[l>>2]|0;if(!((e[(c[l>>2]|0)+8>>1]|0)&16)){Dp(h,66,a[k>>0]|0);b[(c[l>>2]|0)+8>>1]=(e[(c[l>>2]|0)+8>>1]|0)&-16896|16;i=j;return}else{f=h+8|0;b[f>>1]=(e[f>>1]|0)&-496;i=j;return}}else if((h|0)==67){Fp(c[l>>2]|0)|0;i=j;return}else if((h|0)==68){Mp(c[l>>2]|0)|0;i=j;return}else if((h|0)==69){Np(c[l>>2]|0)|0;i=j;return}else{f=(c[l>>2]|0)+8|0;b[f>>1]=e[f>>1]|0|((e[(c[l>>2]|0)+8>>1]|0)&16)>>3;Dp(c[l>>2]|0,66,a[k>>0]|0);f=(c[l>>2]|0)+8|0;b[f>>1]=(e[f>>1]|0)&-16413;i=j;return}}function Dp(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;f=i;i=i+16|0;j=f;h=f+5|0;g=f+4|0;c[j>>2]=b;a[h>>0]=d;a[g>>0]=e;Jp(c[j>>2]|0,a[h>>0]|0,a[g>>0]|0);i=f;return}function Ep(a,b){a=a|0;b=b|0;var d=0,e=0;d=i;i=i+16|0;e=d+4|0;c[e>>2]=a;c[d>>2]=b;a=rf(c[e>>2]|0)|0;i=d;return a|0}function Fp(d){d=d|0;var f=0,g=0,j=0,k=0.0;f=i;i=i+16|0;g=f;c[g>>2]=d;do if(!((e[(c[g>>2]|0)+8>>1]|0)&13)){j=0==(wg(c[(c[g>>2]|0)+16>>2]|0,c[g>>2]|0,c[(c[g>>2]|0)+12>>2]|0,a[(c[g>>2]|0)+10>>0]|0)|0);d=c[g>>2]|0;if(j){b[(c[g>>2]|0)+8>>1]=(e[d+8>>1]|0)&-16896|4;break}else{k=+Id(d);h[c[g>>2]>>3]=k;b[(c[g>>2]|0)+8>>1]=(e[(c[g>>2]|0)+8>>1]|0)&-16896|8;Hp(c[g>>2]|0);break}}while(0);j=(c[g>>2]|0)+8|0;b[j>>1]=(e[j>>1]|0)&-19;i=f;return 0}function Gp(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;f=i;i=i+32|0;l=f+16|0;k=f+12|0;j=f+8|0;g=f+4|0;h=f;c[l>>2]=b;c[k>>2]=d;c[j>>2]=e;b=((c[j>>2]|0)/2|0)+1|0;c[g>>2]=Qe(c[l>>2]|0,b,((b|0)<0)<<31>>31)|0;c[j>>2]=(c[j>>2]|0)+ -1;if(!(c[g>>2]|0)){l=c[g>>2]|0;i=f;return l|0}c[h>>2]=0;while(1){e=c[h>>2]|0;if((c[h>>2]|0)>=(c[j>>2]|0))break;l=((vg(a[(c[k>>2]|0)+e>>0]|0)|0)&255)<<4;l=(l|(vg(a[(c[k>>2]|0)+((c[h>>2]|0)+1)>>0]|0)|0)&255)&255;a[(c[g>>2]|0)+((c[h>>2]|0)/2|0)>>0]=l;c[h>>2]=(c[h>>2]|0)+2}a[(c[g>>2]|0)+((e|0)/2|0)>>0]=0;l=c[g>>2]|0;i=f;return l|0}function Hp(a){a=a|0;var d=0,f=0,g=0,j=0,k=0,l=0,m=0;d=i;i=i+16|0;g=d+8|0;f=d;c[g>>2]=a;k=Ip(+h[c[g>>2]>>3])|0;m=f;c[m>>2]=k;c[m+4>>2]=D;m=f;k=f;l=c[k+4>>2]|0;a=f;j=c[a+4>>2]|0;if(!(+h[c[g>>2]>>3]==+((c[m>>2]|0)>>>0)+4294967296.0*+(c[m+4>>2]|0)&((l|0)>-2147483648|(l|0)==-2147483648&(c[k>>2]|0)>>>0>0)&((j|0)<2147483647|(j|0)==2147483647&(c[a>>2]|0)>>>0<4294967295))){i=d;return}k=f;l=c[k+4>>2]|0;m=c[g>>2]|0;c[m>>2]=c[k>>2];c[m+4>>2]=l;b[(c[g>>2]|0)+8>>1]=(e[(c[g>>2]|0)+8>>1]|0)&-16896|4;i=d;return}function Ip(a){a=+a;var b=0,d=0,e=0,f=0;b=i;i=i+16|0;d=b+8|0;e=b;h[e>>3]=a;do if(!(+h[e>>3]<=-9223372036854776000.0))if(+h[e>>3]>=9223372036854776000.0){e=d;c[e>>2]=-1;c[e+4>>2]=2147483647;break}else{a=+h[e>>3];f=+O(a)>=1.0?a>0.0?(ca(+N(a/4294967296.0),4294967295.0)|0)>>>0:~~+_((a- +(~~a>>>0))/4294967296.0)>>>0:0;e=d;c[e>>2]=~~a>>>0;c[e+4>>2]=f;break}else{f=d;c[f>>2]=0;c[f+4>>2]=-2147483648}while(0);f=d;D=c[f+4>>2]|0;i=b;return c[f>>2]|0}function Jp(b,d,f){b=b|0;d=d|0;f=f|0;var g=0,h=0,j=0,k=0;g=i;i=i+16|0;h=g;k=g+5|0;j=g+4|0;c[h>>2]=b;a[k>>0]=d;a[j>>0]=f;if((a[k>>0]|0)<67){if((a[k>>0]|0)!=66){i=g;return}if(e[(c[h>>2]|0)+8>>1]&2){i=g;return}if(!(e[(c[h>>2]|0)+8>>1]&12)){i=g;return}Kp(c[h>>2]|0,a[j>>0]|0,1)|0;i=g;return}if(e[(c[h>>2]|0)+8>>1]&4){i=g;return}f=c[h>>2]|0;if(e[(c[h>>2]|0)+8>>1]&8){Hp(f);i=g;return}if(!(e[f+8>>1]&2)){i=g;return}Pe(c[h>>2]|0,1);i=g;return}function Kp(f,g,j){f=f|0;g=g|0;j=j|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0;q=i;i=i+32|0;l=q;m=q+20|0;n=q+16|0;o=q+25|0;p=q+24|0;r=q+12|0;c[n>>2]=f;a[o>>0]=g;a[p>>0]=j;c[r>>2]=e[(c[n>>2]|0)+8>>1];c[q+8>>2]=32;if(Lp(c[n>>2]|0,32)|0){c[m>>2]=7;f=c[m>>2]|0;i=q;return f|0}j=c[(c[n>>2]|0)+16>>2]|0;g=c[n>>2]|0;if(c[r>>2]&4){r=g;g=c[r+4>>2]|0;f=l;c[f>>2]=c[r>>2];c[f+4>>2]=g;sc(32,j,9456,l)|0}else{h[k>>3]=+h[g>>3];c[l>>2]=c[k>>2];c[l+4>>2]=c[k+4>>2];sc(32,j,9808,l)|0}f=Mb(c[(c[n>>2]|0)+16>>2]|0)|0;c[(c[n>>2]|0)+12>>2]=f;a[(c[n>>2]|0)+10>>0]=1;f=(c[n>>2]|0)+8|0;b[f>>1]=e[f>>1]|514;if(a[p>>0]|0){f=(c[n>>2]|0)+8|0;b[f>>1]=e[f>>1]&-13}yk(c[n>>2]|0,d[o>>0]|0)|0;c[m>>2]=0;f=c[m>>2]|0;i=q;return f|0}function Lp(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,j=0;f=i;i=i+16|0;g=f+8|0;j=f+4|0;h=f;c[j>>2]=a;c[h>>2]=d;d=c[j>>2]|0;if((c[(c[j>>2]|0)+24>>2]|0)<(c[h>>2]|0)){c[g>>2]=Dk(d,c[h>>2]|0,0)|0;a=c[g>>2]|0;i=f;return a|0}else{c[(c[j>>2]|0)+16>>2]=c[d+20>>2];a=(c[j>>2]|0)+8|0;b[a>>1]=(e[a>>1]|0)&13;c[g>>2]=0;a=c[g>>2]|0;i=f;return a|0}return 0}function Mp(a){a=a|0;var d=0,f=0,g=0;d=i;i=i+16|0;f=d;c[f>>2]=a;g=Kd(c[f>>2]|0)|0;a=c[f>>2]|0;c[a>>2]=g;c[a+4>>2]=D;b[(c[f>>2]|0)+8>>1]=(e[(c[f>>2]|0)+8>>1]|0)&-16896|4;i=d;return 0}function Np(a){a=a|0;var d=0,f=0,g=0.0;d=i;i=i+16|0;f=d;c[f>>2]=a;g=+Id(c[f>>2]|0);h[c[f>>2]>>3]=g;b[(c[f>>2]|0)+8>>1]=(e[(c[f>>2]|0)+8>>1]|0)&-16896|8;i=d;return 0}function Op(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;l=i;i=i+32|0;e=l+24|0;j=l+20|0;k=l+16|0;g=l+12|0;n=l+8|0;m=l+4|0;h=l;c[e>>2]=a;c[j>>2]=b;c[k>>2]=d;c[g>>2]=0;c[n>>2]=0;while(1){if((c[n>>2]|0)>=(c[(c[e>>2]|0)+20>>2]|0)){f=7;break}a=c[n>>2]|0;c[m>>2]=(c[n>>2]|0)<2?a^1:a;c[h>>2]=c[(c[(c[e>>2]|0)+16>>2]|0)+(c[m>>2]<<4)+12>>2];if(!((c[k>>2]|0)!=0?(xc(c[k>>2]|0,c[(c[(c[e>>2]|0)+16>>2]|0)+(c[m>>2]<<4)>>2]|0)|0)!=0:0))f=5;if((f|0)==5?(f=0,c[g>>2]=bh((c[h>>2]|0)+24|0,c[j>>2]|0)|0,(c[g>>2]|0)!=0):0){f=7;break}c[n>>2]=(c[n>>2]|0)+1}if((f|0)==7){i=l;return c[g>>2]|0}return 0}function Pp(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;k=i;i=i+16|0;h=k;j=k+12|0;f=k+8|0;g=k+4|0;c[f>>2]=b;c[g>>2]=e;if((((a[(c[c[f>>2]>>2]|0)+145>>0]|0)==0?(d[(c[f>>2]|0)+18>>0]|0)==0:0)?(c[(c[c[f>>2]>>2]|0)+24>>2]&2048|0)==0:0)?0==(Lb(c[g>>2]|0,15144,7)|0):0){b=c[f>>2]|0;c[h>>2]=c[g>>2];Se(b,18064,h);c[j>>2]=1;b=c[j>>2]|0;i=k;return b|0}c[j>>2]=0;b=c[j>>2]|0;i=k;return b|0}function Qp(f,g){f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;o=i;i=i+48|0;m=o;j=o+36|0;k=o+32|0;l=o+28|0;s=o+24|0;q=o+20|0;t=o+16|0;p=o+12|0;n=o+8|0;r=o+4|0;h=o+40|0;c[k>>2]=f;c[l>>2]=g;c[t>>2]=0;c[n>>2]=c[c[k>>2]>>2];if(Vp(c[k>>2]|0,c[l>>2]|0)|0){c[j>>2]=1;f=c[j>>2]|0;i=o;return f|0}if(d[(c[l>>2]|0)+44>>0]&16){c[j>>2]=0;f=c[j>>2]|0;i=o;return f|0}if((b[(c[l>>2]|0)+38>>1]|0)>0){c[j>>2]=0;f=c[j>>2]|0;i=o;return f|0}if((b[(c[l>>2]|0)+38>>1]|0)<0){f=c[k>>2]|0;c[m>>2]=c[c[l>>2]>>2];Se(f,16328,m);c[j>>2]=1;f=c[j>>2]|0;i=o;return f|0}c[q>>2]=Wp(c[n>>2]|0,c[(c[l>>2]|0)+12>>2]|0,0)|0;if(c[q>>2]|0){a[h>>0]=a[(c[n>>2]|0)+250>>0]|0;c[p>>2]=c[(c[k>>2]|0)+68>>2];Xp(c[k>>2]|0,c[(c[q>>2]|0)+32>>2]|0);b[(c[l>>2]|0)+38>>1]=-1;a[(c[n>>2]|0)+250>>0]=0;c[r>>2]=c[(c[n>>2]|0)+284>>2];c[(c[n>>2]|0)+284>>2]=0;c[s>>2]=Yp(c[k>>2]|0,c[q>>2]|0)|0;c[(c[n>>2]|0)+284>>2]=c[r>>2];a[(c[n>>2]|0)+250>>0]=a[h>>0]|0;c[(c[k>>2]|0)+68>>2]=c[p>>2];if(c[s>>2]|0){b[(c[l>>2]|0)+38>>1]=b[(c[s>>2]|0)+38>>1]|0;c[(c[l>>2]|0)+4>>2]=c[(c[s>>2]|0)+4>>2];b[(c[s>>2]|0)+38>>1]=0;c[(c[s>>2]|0)+4>>2]=0;Vb(c[n>>2]|0,c[s>>2]|0);f=(c[(c[l>>2]|0)+68>>2]|0)+78|0;b[f>>1]=e[f>>1]|2}else{b[(c[l>>2]|0)+38>>1]=0;c[t>>2]=(c[t>>2]|0)+1}tn(c[n>>2]|0,c[q>>2]|0)}else c[t>>2]=(c[t>>2]|0)+1;c[j>>2]=c[t>>2];f=c[j>>2]|0;i=o;return f|0}function Rp(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;i=i+16|0;f=d+8|0;g=d+4|0;e=d;c[f>>2]=a;c[g>>2]=b;c[e>>2]=c[(c[g>>2]|0)+60>>2];while(1){if(!(c[e>>2]|0)){b=5;break}if((c[c[e>>2]>>2]|0)==(c[f>>2]|0)){b=5;break}c[e>>2]=c[(c[e>>2]|0)+24>>2]}if((b|0)==5){i=d;return c[e>>2]|0}return 0}function Sp(b){b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=b;b=c[f>>2]|0;if(c[(c[f>>2]|0)+408>>2]|0)b=c[b+408>>2]|0;c[e>>2]=b;a[(c[e>>2]|0)+21>>0]=1;i=d;return}function Tp(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=i;i=i+16|0;g=d+12|0;h=d+8|0;f=d+4|0;e=d;c[g>>2]=a;c[h>>2]=b;c[e>>2]=0;c[f>>2]=Up(c[h>>2]|0)|0;while(1){if(!(c[f>>2]|0))break;c[e>>2]=yp(c[c[g>>2]>>2]|0,c[e>>2]|0,c[c[c[f>>2]>>2]>>2]|0)|0;c[f>>2]=c[(c[f>>2]|0)+12>>2]}i=d;return c[e>>2]|0}function Up(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;a=bh((c[(c[d>>2]|0)+68>>2]|0)+56|0,c[c[d>>2]>>2]|0)|0;i=b;return a|0}function Vp(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=i;i=i+48|0;m=p;o=p+36|0;l=p+32|0;g=p+28|0;f=p+24|0;n=p+20|0;h=p+16|0;j=p+12|0;e=p+8|0;k=p+4|0;c[l>>2]=a;c[g>>2]=b;c[f>>2]=c[c[l>>2]>>2];if(((d[(c[g>>2]|0)+44>>0]|0)&16|0)!=0?(Rp(c[f>>2]|0,c[g>>2]|0)|0)==0:0){c[n>>2]=c[c[(c[g>>2]|0)+56>>2]>>2];c[h>>2]=bh((c[f>>2]|0)+308|0,c[n>>2]|0)|0;if(c[h>>2]|0){c[k>>2]=0;c[j>>2]=zr(c[f>>2]|0,c[g>>2]|0,c[h>>2]|0,c[(c[c[h>>2]>>2]|0)+8>>2]|0,k)|0;if(c[j>>2]|0){a=c[l>>2]|0;c[m>>2]=c[k>>2];Se(a,1200,m)}Xb(c[f>>2]|0,c[k>>2]|0)}else{c[e>>2]=c[c[(c[g>>2]|0)+56>>2]>>2];a=c[l>>2]|0;c[m>>2]=c[e>>2];Se(a,17944,m);c[j>>2]=1}c[o>>2]=c[j>>2];a=c[o>>2]|0;i=p;return a|0}c[o>>2]=0;a=c[o>>2]|0;i=p;return a|0}function Wp(d,f,g){d=d|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0;h=i;i=i+32|0;j=h+20|0;k=h+16|0;l=h+12|0;m=h+8|0;n=h+4|0;o=h;c[k>>2]=d;c[l>>2]=f;c[m>>2]=g;if(!(c[l>>2]|0)){c[j>>2]=0;d=c[j>>2]|0;i=h;return d|0}c[n>>2]=Qe(c[k>>2]|0,72,0)|0;if(!(c[n>>2]|0)){c[j>>2]=0;d=c[j>>2]|0;i=h;return d|0}d=Jq(c[k>>2]|0,c[c[l>>2]>>2]|0,c[m>>2]|0)|0;c[c[n>>2]>>2]=d;d=wr(c[k>>2]|0,c[(c[l>>2]|0)+32>>2]|0,c[m>>2]|0)|0;c[(c[n>>2]|0)+32>>2]=d;d=Bq(c[k>>2]|0,c[(c[l>>2]|0)+36>>2]|0,c[m>>2]|0)|0;c[(c[n>>2]|0)+36>>2]=d;d=Jq(c[k>>2]|0,c[(c[l>>2]|0)+40>>2]|0,c[m>>2]|0)|0;c[(c[n>>2]|0)+40>>2]=d;d=Bq(c[k>>2]|0,c[(c[l>>2]|0)+44>>2]|0,c[m>>2]|0)|0;c[(c[n>>2]|0)+44>>2]=d;d=Jq(c[k>>2]|0,c[(c[l>>2]|0)+48>>2]|0,c[m>>2]|0)|0;c[(c[n>>2]|0)+48>>2]=d;a[(c[n>>2]|0)+4>>0]=a[(c[l>>2]|0)+4>>0]|0;d=Wp(c[k>>2]|0,c[(c[l>>2]|0)+52>>2]|0,c[m>>2]|0)|0;c[o>>2]=d;c[(c[n>>2]|0)+52>>2]=d;if(c[o>>2]|0)c[(c[o>>2]|0)+56>>2]=c[n>>2];c[(c[n>>2]|0)+56>>2]=0;o=Bq(c[k>>2]|0,c[(c[l>>2]|0)+60>>2]|0,c[m>>2]|0)|0;c[(c[n>>2]|0)+60>>2]=o;o=Bq(c[k>>2]|0,c[(c[l>>2]|0)+64>>2]|0,c[m>>2]|0)|0;c[(c[n>>2]|0)+64>>2]=o;c[(c[n>>2]|0)+8>>2]=0;c[(c[n>>2]|0)+12>>2]=0;b[(c[n>>2]|0)+6>>1]=(e[(c[l>>2]|0)+6>>1]|0)&-9;c[(c[n>>2]|0)+16>>2]=-1;c[(c[n>>2]|0)+20>>2]=-1;o=(c[l>>2]|0)+24|0;f=c[o+4>>2]|0;d=(c[n>>2]|0)+24|0;c[d>>2]=c[o>>2];c[d+4>>2]=f;d=xr(c[k>>2]|0,c[(c[l>>2]|0)+68>>2]|0)|0;c[(c[n>>2]|0)+68>>2]=d;c[j>>2]=c[n>>2];d=c[j>>2]|0;i=h;return d|0}function Xp(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=i;i=i+16|0;e=d+12|0;h=d+8|0;g=d+4|0;f=d;c[e>>2]=a;c[h>>2]=b;if(!(c[h>>2]|0)){i=d;return}c[g>>2]=0;c[f>>2]=(c[h>>2]|0)+8;while(1){if((c[g>>2]|0)>=(c[c[h>>2]>>2]|0)){b=8;break}if((c[(c[f>>2]|0)+40>>2]|0)>=0){b=8;break}b=(c[e>>2]|0)+68|0;a=c[b>>2]|0;c[b>>2]=a+1;c[(c[f>>2]|0)+40>>2]=a;if(c[(c[f>>2]|0)+20>>2]|0)Xp(c[e>>2]|0,c[(c[(c[f>>2]|0)+20>>2]|0)+32>>2]|0);c[g>>2]=(c[g>>2]|0)+1;c[f>>2]=(c[f>>2]|0)+72}if((b|0)==8){i=d;return}}function Yp(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;f=i;i=i+32|0;g=f+20|0;j=f+16|0;k=f+12|0;h=f+8|0;l=f+4|0;m=f;c[j>>2]=d;c[k>>2]=e;c[l>>2]=c[c[j>>2]>>2];c[m>>2]=c[(c[l>>2]|0)+24>>2];d=(c[l>>2]|0)+24|0;c[d>>2]=c[d>>2]&-33;d=(c[l>>2]|0)+24|0;c[d>>2]=c[d>>2]|64;Zp(c[j>>2]|0,c[k>>2]|0,0);if(c[(c[j>>2]|0)+64>>2]|0){c[g>>2]=0;d=c[g>>2]|0;i=f;return d|0}while(1){if(!(c[(c[k>>2]|0)+52>>2]|0))break;c[k>>2]=c[(c[k>>2]|0)+52>>2]}c[(c[l>>2]|0)+24>>2]=c[m>>2];c[h>>2]=se(c[l>>2]|0,76,0)|0;if(!(c[h>>2]|0)){c[g>>2]=0;d=c[g>>2]|0;i=f;return d|0}b[(c[h>>2]|0)+40>>1]=1;c[c[h>>2]>>2]=0;b[(c[h>>2]|0)+28>>1]=200;_p(c[j>>2]|0,c[c[k>>2]>>2]|0,(c[h>>2]|0)+38|0,(c[h>>2]|0)+4|0)|0;$p(c[j>>2]|0,c[h>>2]|0,c[k>>2]|0);b[(c[h>>2]|0)+36>>1]=-1;if(a[(c[l>>2]|0)+64>>0]|0){Vb(c[l>>2]|0,c[h>>2]|0);c[g>>2]=0;d=c[g>>2]|0;i=f;return d|0}else{c[g>>2]=c[h>>2];d=c[g>>2]|0;i=f;return d|0}return 0}function Zp(b,f,g){b=b|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0;h=i;i=i+16|0;j=h+12|0;k=h+8|0;l=h+4|0;m=h;c[j>>2]=b;c[k>>2]=f;c[l>>2]=g;if(!(c[k>>2]|0)){i=h;return}c[m>>2]=c[c[j>>2]>>2];if(a[(c[m>>2]|0)+64>>0]|0){i=h;return}if(e[(c[k>>2]|0)+6>>1]&32){i=h;return}jq(c[j>>2]|0,c[k>>2]|0);if(c[(c[j>>2]|0)+64>>2]|0){i=h;return}if(d[(c[m>>2]|0)+64>>0]|0){i=h;return}kq(c[j>>2]|0,c[k>>2]|0,c[l>>2]|0);if(c[(c[j>>2]|0)+64>>2]|0){i=h;return}if(d[(c[m>>2]|0)+64>>0]|0){i=h;return}lq(c[j>>2]|0,c[k>>2]|0);i=h;return}function _p(e,f,g,h){e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;j=i;i=i+96|0;v=j;q=j+84|0;F=j+80|0;z=j+76|0;m=j+72|0;l=j+68|0;n=j+64|0;p=j+60|0;o=j+56|0;u=j+52|0;k=j+48|0;C=j+44|0;B=j+40|0;A=j+36|0;s=j+32|0;t=j+28|0;r=j+24|0;w=j+20|0;x=j+16|0;E=j+12|0;D=j+8|0;c[F>>2]=e;c[z>>2]=f;c[m>>2]=g;c[l>>2]=h;c[n>>2]=c[c[F>>2]>>2];if(c[z>>2]|0){c[B>>2]=c[c[z>>2]>>2];c[k>>2]=se(c[n>>2]|0,(c[B>>2]|0)*24|0,0)|0}else{c[B>>2]=0;c[k>>2]=0}b[c[m>>2]>>1]=c[B>>2];c[c[l>>2]>>2]=c[k>>2];c[p>>2]=0;c[C>>2]=c[k>>2];while(1){if((c[p>>2]|0)>=(c[B>>2]|0))break;c[A>>2]=iq(c[(c[(c[z>>2]|0)+4>>2]|0)+((c[p>>2]|0)*20|0)>>2]|0)|0;F=c[(c[(c[z>>2]|0)+4>>2]|0)+((c[p>>2]|0)*20|0)+4>>2]|0;c[s>>2]=F;do if(!F){c[r>>2]=c[A>>2];while(1){h=c[r>>2]|0;if((d[c[r>>2]>>0]|0)!=122)break;c[r>>2]=c[h+16>>2]}if((d[h>>0]|0)==154?(c[(c[r>>2]|0)+44>>2]|0)!=0:0){c[x>>2]=b[(c[r>>2]|0)+32>>1];c[w>>2]=c[(c[r>>2]|0)+44>>2];if((c[x>>2]|0)<0)c[x>>2]=b[(c[w>>2]|0)+36>>1];h=c[n>>2]|0;if((c[x>>2]|0)>=0)g=c[(c[(c[w>>2]|0)+4>>2]|0)+((c[x>>2]|0)*24|0)>>2]|0;else g=9992;c[v>>2]=g;c[s>>2]=Te(h,1200,v)|0;break}h=c[n>>2]|0;if((d[c[r>>2]>>0]|0)==27){c[v>>2]=c[(c[r>>2]|0)+8>>2];c[s>>2]=Te(h,1200,v)|0;break}else{c[v>>2]=c[(c[(c[z>>2]|0)+4>>2]|0)+((c[p>>2]|0)*20|0)+8>>2];c[s>>2]=Te(h,1200,v)|0;break}}else c[s>>2]=ne(c[n>>2]|0,c[s>>2]|0)|0;while(0);if(a[(c[n>>2]|0)+64>>0]|0){y=22;break}c[t>>2]=Mb(c[s>>2]|0)|0;c[u>>2]=0;c[o>>2]=0;while(1){if((c[o>>2]|0)>=(c[p>>2]|0))break;if(!(xc(c[(c[k>>2]|0)+((c[o>>2]|0)*24|0)>>2]|0,c[s>>2]|0)|0)){c[D>>2]=(c[t>>2]|0)-1;while(1){if((c[D>>2]|0)<=1)break;if(!(d[1224+(d[(c[s>>2]|0)+(c[D>>2]|0)>>0]|0)>>0]&4))break;c[D>>2]=(c[D>>2]|0)+ -1}if((c[D>>2]|0)>=0?(a[(c[s>>2]|0)+(c[D>>2]|0)>>0]|0)==58:0)c[t>>2]=c[D>>2];a[(c[s>>2]|0)+(c[t>>2]|0)>>0]=0;F=c[n>>2]|0;f=c[s>>2]|0;e=(c[u>>2]|0)+1|0;c[u>>2]=e;c[v>>2]=f;c[v+4>>2]=e;c[E>>2]=Te(F,16424,v)|0;Xb(c[n>>2]|0,c[s>>2]|0);c[s>>2]=c[E>>2];c[o>>2]=-1;if(!(c[s>>2]|0))break}c[o>>2]=(c[o>>2]|0)+1}c[c[C>>2]>>2]=c[s>>2];c[p>>2]=(c[p>>2]|0)+1;c[C>>2]=(c[C>>2]|0)+24}if((y|0)==22)Xb(c[n>>2]|0,c[s>>2]|0);if(!(a[(c[n>>2]|0)+64>>0]|0)){c[q>>2]=0;F=c[q>>2]|0;i=j;return F|0}c[o>>2]=0;while(1){r=c[n>>2]|0;if((c[o>>2]|0)>=(c[p>>2]|0))break;Xb(r,c[(c[k>>2]|0)+((c[o>>2]|0)*24|0)>>2]|0);c[o>>2]=(c[o>>2]|0)+1}Xb(r,c[k>>2]|0);c[c[l>>2]>>2]=0;b[c[m>>2]>>1]=0;c[q>>2]=7;F=c[q>>2]|0;i=j;return F|0}function $p(e,f,g){e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;o=i;i=i+80|0;l=o+76|0;k=o+72|0;t=o+68|0;r=o+64|0;s=o+32|0;h=o+24|0;n=o+20|0;q=o+16|0;m=o+12|0;p=o+8|0;j=o;c[l>>2]=e;c[k>>2]=f;c[t>>2]=g;c[r>>2]=c[c[l>>2]>>2];e=j;c[e>>2]=0;c[e+4>>2]=0;if(a[(c[r>>2]|0)+64>>0]|0){i=o;return}c[s+0>>2]=0;c[s+4>>2]=0;c[s+8>>2]=0;c[s+12>>2]=0;c[s+16>>2]=0;c[s+20>>2]=0;c[s+24>>2]=0;c[s+28>>2]=0;c[s+4>>2]=c[(c[t>>2]|0)+32>>2];c[p>>2]=c[(c[c[t>>2]>>2]|0)+4>>2];c[q>>2]=0;c[h>>2]=c[(c[k>>2]|0)+4>>2];while(1){if((c[q>>2]|0)>=(b[(c[k>>2]|0)+38>>1]|0))break;c[m>>2]=c[(c[p>>2]|0)+((c[q>>2]|0)*20|0)>>2];f=c[r>>2]|0;f=ne(f,aq(s,c[m>>2]|0,(c[h>>2]|0)+22|0)|0)|0;c[(c[h>>2]|0)+12>>2]=f;f=j;f=bF(c[f>>2]|0,c[f+4>>2]|0,d[(c[h>>2]|0)+22>>0]|0,0)|0;e=j;c[e>>2]=f;c[e+4>>2]=D;e=bq(c[m>>2]|0)|0;a[(c[h>>2]|0)+21>>0]=e;if(!(a[(c[h>>2]|0)+21>>0]|0))a[(c[h>>2]|0)+21>>0]=65;c[n>>2]=cq(c[l>>2]|0,c[m>>2]|0)|0;if(c[n>>2]|0){e=ne(c[r>>2]|0,c[c[n>>2]>>2]|0)|0;c[(c[h>>2]|0)+16>>2]=e}c[q>>2]=(c[q>>2]|0)+1;c[h>>2]=(c[h>>2]|0)+24}e=j;e=lF(c[e>>2]|0,c[e+4>>2]|0,4,0)|0;e=dq(e,D)|0;b[(c[k>>2]|0)+42>>1]=e;i=o;return}function aq(e,f,g){e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;s=i;i=i+128|0;j=s+116|0;n=s+112|0;v=s+108|0;r=s+104|0;p=s+100|0;t=s+96|0;o=s+120|0;h=s+92|0;q=s+88|0;k=s+84|0;u=s+80|0;m=s+48|0;l=s+40|0;y=s+8|0;w=s+4|0;x=s;c[n>>2]=e;c[v>>2]=f;c[r>>2]=g;c[p>>2]=0;a[o>>0]=1;if((c[v>>2]|0)!=0?(c[(c[n>>2]|0)+4>>2]|0)!=0:0){g=d[c[v>>2]>>0]|0;do if((g|0)==154|(g|0)==156){c[h>>2]=0;c[q>>2]=0;c[k>>2]=b[(c[v>>2]|0)+32>>1];while(1){if(!(c[n>>2]|0))break;if(!((c[h>>2]|0)!=0^1))break;c[u>>2]=c[(c[n>>2]|0)+4>>2];c[t>>2]=0;while(1){if((c[t>>2]|0)>=(c[c[u>>2]>>2]|0))break;if((c[(c[u>>2]|0)+8+((c[t>>2]|0)*72|0)+40>>2]|0)==(c[(c[v>>2]|0)+28>>2]|0))break;c[t>>2]=(c[t>>2]|0)+1}if((c[t>>2]|0)<(c[c[u>>2]>>2]|0)){c[h>>2]=c[(c[u>>2]|0)+8+((c[t>>2]|0)*72|0)+16>>2];c[q>>2]=c[(c[u>>2]|0)+8+((c[t>>2]|0)*72|0)+20>>2];continue}else{c[n>>2]=c[(c[n>>2]|0)+16>>2];continue}}if(c[h>>2]|0){if(c[q>>2]|0){if((c[k>>2]|0)<0)break;if((c[k>>2]|0)>=(c[c[c[q>>2]>>2]>>2]|0))break;c[l>>2]=c[(c[(c[c[q>>2]>>2]|0)+4>>2]|0)+((c[k>>2]|0)*20|0)>>2];c[m+4>>2]=c[(c[q>>2]|0)+32>>2];c[m+16>>2]=c[n>>2];c[m>>2]=c[c[n>>2]>>2];c[p>>2]=aq(m,c[l>>2]|0,o)|0;break}if(c[(c[h>>2]|0)+68>>2]|0){if((c[k>>2]|0)<0)c[k>>2]=b[(c[h>>2]|0)+36>>1];if((c[k>>2]|0)<0){c[p>>2]=16416;break}else{c[p>>2]=c[(c[(c[h>>2]|0)+4>>2]|0)+((c[k>>2]|0)*24|0)+12>>2];a[o>>0]=a[(c[(c[h>>2]|0)+4>>2]|0)+((c[k>>2]|0)*24|0)+22>>0]|0;break}}}}else if((g|0)==119){c[w>>2]=c[(c[v>>2]|0)+20>>2];c[x>>2]=c[c[(c[c[w>>2]>>2]|0)+4>>2]>>2];c[y+4>>2]=c[(c[w>>2]|0)+32>>2];c[y+16>>2]=c[n>>2];c[y>>2]=c[c[n>>2]>>2];c[p>>2]=aq(y,c[x>>2]|0,o)|0}while(0);if(c[r>>2]|0)a[c[r>>2]>>0]=a[o>>0]|0;c[j>>2]=c[p>>2];e=c[j>>2]|0;i=s;return e|0}c[j>>2]=0;e=c[j>>2]|0;i=s;return e|0}function bq(e){e=e|0;var f=0,g=0,h=0,j=0,k=0;f=i;i=i+16|0;g=f+12|0;h=f+8|0;k=f+4|0;j=f;c[h>>2]=e;c[h>>2]=iq(c[h>>2]|0)|0;if(c[(c[h>>2]|0)+4>>2]&512){a[g>>0]=0;k=a[g>>0]|0;i=f;return k|0}c[k>>2]=d[c[h>>2]>>0];if((c[k>>2]|0)==119){a[g>>0]=bq(c[c[(c[c[(c[h>>2]|0)+20>>2]>>2]|0)+4>>2]>>2]|0)|0;k=a[g>>0]|0;i=f;return k|0}if((c[k>>2]|0)==38){a[g>>0]=Bp(c[(c[h>>2]|0)+8>>2]|0,0)|0;k=a[g>>0]|0;i=f;return k|0}if((c[k>>2]|0)==156|(c[k>>2]|0)==154|(c[k>>2]|0)==159?(c[(c[h>>2]|0)+44>>2]|0)!=0:0){c[j>>2]=b[(c[h>>2]|0)+32>>1];if((c[j>>2]|0)<0){a[g>>0]=68;k=a[g>>0]|0;i=f;return k|0}else{a[g>>0]=a[(c[(c[(c[h>>2]|0)+44>>2]|0)+4>>2]|0)+((c[j>>2]|0)*24|0)+21>>0]|0;k=a[g>>0]|0;i=f;return k|0}}a[g>>0]=a[(c[h>>2]|0)+1>>0]|0;k=a[g>>0]|0;i=f;return k|0}function cq(e,f){e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;j=i;i=i+32|0;k=j+28|0;q=j+24|0;o=j+20|0;m=j+16|0;l=j+12|0;p=j+8|0;g=j+4|0;n=j;c[k>>2]=e;c[q>>2]=f;c[o>>2]=c[c[k>>2]>>2];c[m>>2]=0;c[l>>2]=c[q>>2];while(1){if(!(c[l>>2]|0))break;c[p>>2]=d[c[l>>2]>>0];if(c[(c[l>>2]|0)+4>>2]&512)break;if((c[p>>2]|0)==38|(c[p>>2]|0)==158){c[l>>2]=c[(c[l>>2]|0)+12>>2];continue}if((c[p>>2]|0)==95){h=9;break}if((c[p>>2]|0)==159?(d[(c[l>>2]|0)+38>>0]|0)==95:0){h=9;break}if((c[(c[l>>2]|0)+44>>2]|0)!=0?(c[p>>2]|0)==156|(c[p>>2]|0)==154|(c[p>>2]|0)==159|(c[p>>2]|0)==62:0){h=12;break}if(!(c[(c[l>>2]|0)+4>>2]&256))break;if((c[(c[l>>2]|0)+12>>2]|0)!=0?(c[(c[(c[l>>2]|0)+12>>2]|0)+4>>2]&256|0)!=0:0){c[l>>2]=c[(c[l>>2]|0)+12>>2];continue}c[l>>2]=c[(c[l>>2]|0)+16>>2]}if((h|0)==9)c[m>>2]=eq(c[k>>2]|0,a[(c[(c[(c[o>>2]|0)+16>>2]|0)+12>>2]|0)+77>>0]|0,0,c[(c[l>>2]|0)+8>>2]|0)|0;else if((h|0)==12?(c[g>>2]=b[(c[l>>2]|0)+32>>1],(c[g>>2]|0)>=0):0){c[n>>2]=c[(c[(c[(c[l>>2]|0)+44>>2]|0)+4>>2]|0)+((c[g>>2]|0)*24|0)+16>>2];c[m>>2]=$g(c[o>>2]|0,a[(c[(c[(c[o>>2]|0)+16>>2]|0)+12>>2]|0)+77>>0]|0,c[n>>2]|0,0)|0}if(!(fq(c[k>>2]|0,c[m>>2]|0)|0)){q=c[m>>2]|0;i=j;return q|0}c[m>>2]=0;q=c[m>>2]|0;i=j;return q|0}function dq(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;i=i+16|0;f=e+10|0;g=e;h=e+8|0;j=g;c[j>>2]=a;c[j+4>>2]=d;b[h>>1]=40;a=g;d=c[a+4>>2]|0;a:do if(d>>>0<0|(d|0)==0&(c[a>>2]|0)>>>0<8){j=g;a=c[j+4>>2]|0;if(a>>>0<0|(a|0)==0&(c[j>>2]|0)>>>0<2){b[f>>1]=0;j=b[f>>1]|0;i=e;return j|0}else while(1){j=g;a=c[j+4>>2]|0;if(!(a>>>0<0|(a|0)==0&(c[j>>2]|0)>>>0<8))break a;b[h>>1]=(b[h>>1]|0)-10;a=g;a=$E(c[a>>2]|0,c[a+4>>2]|0,1)|0;j=g;c[j>>2]=a;c[j+4>>2]=D}}else{while(1){j=g;a=c[j+4>>2]|0;if(!(a>>>0>0|(a|0)==0&(c[j>>2]|0)>>>0>255))break;b[h>>1]=(b[h>>1]|0)+40;a=g;a=cF(c[a>>2]|0,c[a+4>>2]|0,4)|0;j=g;c[j>>2]=a;c[j+4>>2]=D}while(1){j=g;a=c[j+4>>2]|0;if(!(a>>>0>0|(a|0)==0&(c[j>>2]|0)>>>0>15))break a;b[h>>1]=(b[h>>1]|0)+10;a=g;a=cF(c[a>>2]|0,c[a+4>>2]|0,1)|0;j=g;c[j>>2]=a;c[j+4>>2]=D}}while(0);b[f>>1]=(b[16360+((c[g>>2]&7)<<1)>>1]|0)+(b[h>>1]|0)-10;j=b[f>>1]|0;i=e;return j|0}function eq(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;j=i;i=i+32|0;h=j;k=j+20|0;o=j+24|0;p=j+16|0;l=j+12|0;m=j+8|0;n=j+4|0;c[k>>2]=b;a[o>>0]=e;c[p>>2]=f;c[l>>2]=g;c[n>>2]=c[c[k>>2]>>2];c[m>>2]=c[p>>2];if(!(c[m>>2]|0))c[m>>2]=$g(c[n>>2]|0,a[o>>0]|0,c[l>>2]|0,0)|0;if(!((c[m>>2]|0)!=0?(c[(c[m>>2]|0)+12>>2]|0)!=0:0)){gq(c[n>>2]|0,d[o>>0]|0,c[l>>2]|0);c[m>>2]=$g(c[n>>2]|0,a[o>>0]|0,c[l>>2]|0,0)|0}if(((c[m>>2]|0)!=0?(c[(c[m>>2]|0)+12>>2]|0)==0:0)?(hq(c[n>>2]|0,c[m>>2]|0)|0)!=0:0)c[m>>2]=0;if(c[m>>2]|0){p=c[m>>2]|0;i=j;return p|0}p=c[k>>2]|0;c[h>>2]=c[l>>2];Se(p,16376,h);p=c[m>>2]|0;i=j;return p|0}function fq(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;f=i;i=i+32|0;e=f+20|0;l=f+16|0;j=f+12|0;h=f+8|0;k=f+4|0;g=f;c[l>>2]=b;c[j>>2]=d;if((c[j>>2]|0)!=0?(c[h>>2]=c[c[j>>2]>>2],c[k>>2]=c[c[l>>2]>>2],c[g>>2]=eq(c[l>>2]|0,a[(c[(c[(c[k>>2]|0)+16>>2]|0)+12>>2]|0)+77>>0]|0,c[j>>2]|0,c[h>>2]|0)|0,(c[g>>2]|0)==0):0){c[e>>2]=1;b=c[e>>2]|0;i=f;return b|0}c[e>>2]=0;b=c[e>>2]|0;i=f;return b|0}function gq(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;g=i;i=i+32|0;h=g+20|0;n=g+16|0;k=g+12|0;m=g+8|0;l=g+4|0;j=g;c[h>>2]=b;c[n>>2]=e;c[k>>2]=f;do if(c[(c[h>>2]|0)+220>>2]|0){c[m>>2]=ne(c[h>>2]|0,c[k>>2]|0)|0;if(c[m>>2]|0){Bb[c[(c[h>>2]|0)+220>>2]&3](c[(c[h>>2]|0)+228>>2]|0,c[h>>2]|0,c[n>>2]|0,c[m>>2]|0);Xb(c[h>>2]|0,c[m>>2]|0);break}else{i=g;return}}while(0);if(!(c[(c[h>>2]|0)+224>>2]|0)){i=g;return}c[j>>2]=rf(c[h>>2]|0)|0;sf(c[j>>2]|0,-1,c[k>>2]|0,1,0);c[l>>2]=Md(c[j>>2]|0,((a[1136]|0)==0?3:2)&255)|0;if(c[l>>2]|0)Bb[c[(c[h>>2]|0)+224>>2]&3](c[(c[h>>2]|0)+228>>2]|0,c[h>>2]|0,d[(c[(c[(c[h>>2]|0)+16>>2]|0)+12>>2]|0)+77>>0]|0,c[l>>2]|0);tf(c[j>>2]|0);i=g;return}function hq(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;f=i;i=i+32|0;e=f+20|0;j=f+16|0;g=f+12|0;h=f+8|0;l=f+4|0;k=f;c[j>>2]=b;c[g>>2]=d;c[l>>2]=c[c[g>>2]>>2];c[k>>2]=0;while(1){if((c[k>>2]|0)>=3){d=6;break}c[h>>2]=$g(c[j>>2]|0,a[16408+(c[k>>2]|0)>>0]|0,c[l>>2]|0,0)|0;if(c[(c[h>>2]|0)+12>>2]|0){d=4;break}c[k>>2]=(c[k>>2]|0)+1}if((d|0)==4){b=c[g>>2]|0;l=c[h>>2]|0;c[b+0>>2]=c[l+0>>2];c[b+4>>2]=c[l+4>>2];c[b+8>>2]=c[l+8>>2];c[b+12>>2]=c[l+12>>2];c[b+16>>2]=c[l+16>>2];c[(c[g>>2]|0)+16>>2]=0;c[e>>2]=0;b=c[e>>2]|0;i=f;return b|0}else if((d|0)==6){c[e>>2]=1;b=c[e>>2]|0;i=f;return b|0}return 0}function iq(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+16|0;d=b;c[d>>2]=a;while(1){if(c[d>>2]|0)e=(c[(c[d>>2]|0)+4>>2]&4096|0)!=0;else e=0;a=c[d>>2]|0;if(!e)break;e=c[d>>2]|0;if(c[a+4>>2]&262144){c[d>>2]=c[c[(c[e+20>>2]|0)+4>>2]>>2];continue}else{c[d>>2]=c[e+12>>2];continue}}i=b;return a|0}function jq(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+32|0;h=e+28|0;f=e+24|0;g=e;c[h>>2]=b;c[f>>2]=d;c[g+0>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;c[g+12>>2]=0;c[g+16>>2]=0;c[g+20>>2]=0;c[g>>2]=37;c[g+12>>2]=c[h>>2];if(a[(c[h>>2]|0)+22>>0]|0){c[g+4>>2]=38;oq(g,c[f>>2]|0)|0}c[g+4>>2]=39;c[g+8>>2]=3;oq(g,c[f>>2]|0)|0;i=e;return}function kq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;i=i+48|0;j=e+32|0;f=e+28|0;h=e+24|0;g=e;c[j>>2]=a;c[f>>2]=b;c[h>>2]=d;c[g+0>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;c[g+12>>2]=0;c[g+16>>2]=0;c[g+20>>2]=0;c[g>>2]=40;c[g+4>>2]=41;c[g+12>>2]=c[j>>2];c[g+20>>2]=c[h>>2];oq(g,c[f>>2]|0)|0;i=e;return}function lq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;i=i+32|0;g=d+28|0;e=d+24|0;f=d;c[g>>2]=a;c[e>>2]=b;c[f+0>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[f+16>>2]=0;c[f+20>>2]=0;c[f+8>>2]=4;c[f>>2]=37;c[f+12>>2]=c[g>>2];oq(f,c[e>>2]|0)|0;i=d;return}function mq(a,f){a=a|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;l=i;i=i+32|0;p=l+28|0;o=l+24|0;n=l+20|0;g=l+16|0;m=l+12|0;h=l+8|0;k=l+4|0;j=l;c[p>>2]=a;c[o>>2]=f;if((e[(c[o>>2]|0)+6>>1]|0)&32){i=l;return}a=(c[o>>2]|0)+6|0;b[a>>1]=e[a>>1]|0|32;c[n>>2]=c[(c[p>>2]|0)+12>>2];c[m>>2]=c[(c[o>>2]|0)+32>>2];c[g>>2]=0;c[h>>2]=(c[m>>2]|0)+8;while(1){if((c[g>>2]|0)>=(c[c[m>>2]>>2]|0))break;c[k>>2]=c[(c[h>>2]|0)+16>>2];if(((c[k>>2]|0)!=0?((d[(c[k>>2]|0)+44>>0]|0)&2|0)!=0:0)?(c[j>>2]=c[(c[h>>2]|0)+20>>2],(c[j>>2]|0)!=0):0){while(1){if(!(c[(c[j>>2]|0)+52>>2]|0))break;c[j>>2]=c[(c[j>>2]|0)+52>>2]}$p(c[n>>2]|0,c[k>>2]|0,c[j>>2]|0)}c[g>>2]=(c[g>>2]|0)+1;c[h>>2]=(c[h>>2]|0)+72}i=l;return}function nq(a,b){a=a|0;b=b|0;var d=0;d=i;i=i+16|0;c[d+4>>2]=a;c[d>>2]=b;i=d;return 0}function oq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=i;i=i+16|0;d=e+12|0;f=e+8|0;h=e+4|0;g=e;c[f>>2]=a;c[h>>2]=b;do if(c[h>>2]|0){if((c[(c[f>>2]|0)+4>>2]|0)==0?(c[(c[f>>2]|0)+8>>2]|0)==0:0)break;c[g>>2]=0;a=(c[f>>2]|0)+16|0;c[a>>2]=(c[a>>2]|0)+1;while(1){if(!(c[h>>2]|0)){b=15;break}if((c[(c[f>>2]|0)+4>>2]|0)!=0?(c[g>>2]=zb[c[(c[f>>2]|0)+4>>2]&63](c[f>>2]|0,c[h>>2]|0)|0,(c[g>>2]|0)!=0):0){b=15;break}if(pq(c[f>>2]|0,c[h>>2]|0)|0){b=11;break}if(qq(c[f>>2]|0,c[h>>2]|0)|0){b=11;break}if(c[(c[f>>2]|0)+8>>2]|0)sb[c[(c[f>>2]|0)+8>>2]&7](c[f>>2]|0,c[h>>2]|0);c[h>>2]=c[(c[h>>2]|0)+52>>2]}if((b|0)==11){a=(c[f>>2]|0)+16|0;c[a>>2]=(c[a>>2]|0)+ -1;c[d>>2]=2;a=c[d>>2]|0;i=e;return a|0}else if((b|0)==15){a=(c[f>>2]|0)+16|0;c[a>>2]=(c[a>>2]|0)+ -1;c[d>>2]=c[g>>2]&2;a=c[d>>2]|0;i=e;return a|0}}while(0);c[d>>2]=0;a=c[d>>2]|0;i=e;return a|0}function pq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;e=i;i=i+16|0;d=e+8|0;f=e+4|0;g=e;c[f>>2]=a;c[g>>2]=b;do if(!(rq(c[f>>2]|0,c[c[g>>2]>>2]|0)|0)){if(sq(c[f>>2]|0,c[(c[g>>2]|0)+36>>2]|0)|0){c[d>>2]=2;break}if(rq(c[f>>2]|0,c[(c[g>>2]|0)+40>>2]|0)|0){c[d>>2]=2;break}if(sq(c[f>>2]|0,c[(c[g>>2]|0)+44>>2]|0)|0){c[d>>2]=2;break}if(rq(c[f>>2]|0,c[(c[g>>2]|0)+48>>2]|0)|0){c[d>>2]=2;break}if(sq(c[f>>2]|0,c[(c[g>>2]|0)+60>>2]|0)|0){c[d>>2]=2;break}if(sq(c[f>>2]|0,c[(c[g>>2]|0)+64>>2]|0)|0){c[d>>2]=2;break}else{c[d>>2]=0;break}}else c[d>>2]=2;while(0);i=e;return c[d>>2]|0}function qq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;e=i;i=i+32|0;d=e+20|0;f=e+16|0;k=e+12|0;j=e+8|0;h=e+4|0;g=e;c[f>>2]=a;c[k>>2]=b;c[j>>2]=c[(c[k>>2]|0)+32>>2];a:do if(c[j>>2]|0){c[h>>2]=c[c[j>>2]>>2];c[g>>2]=(c[j>>2]|0)+8;while(1){if((c[h>>2]|0)<=0)break a;if(oq(c[f>>2]|0,c[(c[g>>2]|0)+20>>2]|0)|0)break;c[h>>2]=(c[h>>2]|0)+ -1;c[g>>2]=(c[g>>2]|0)+72}c[d>>2]=2;k=c[d>>2]|0;i=e;return k|0}while(0);c[d>>2]=0;k=c[d>>2]|0;i=e;return k|0}function rq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;e=i;i=i+32|0;d=e+16|0;f=e+12|0;j=e+8|0;h=e+4|0;g=e;c[f>>2]=a;c[j>>2]=b;a:do if(c[j>>2]|0){c[h>>2]=c[c[j>>2]>>2];c[g>>2]=c[(c[j>>2]|0)+4>>2];while(1){if((c[h>>2]|0)<=0)break a;if(sq(c[f>>2]|0,c[c[g>>2]>>2]|0)|0)break;c[h>>2]=(c[h>>2]|0)+ -1;c[g>>2]=(c[g>>2]|0)+20}c[d>>2]=2;a=c[d>>2]|0;i=e;return a|0}while(0);c[d>>2]=0;a=c[d>>2]|0;i=e;return a|0}function sq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=i;i=i+16|0;e=d+12|0;h=d+8|0;g=d+4|0;f=d;c[h>>2]=a;c[g>>2]=b;a:do if(!(c[g>>2]|0))c[e>>2]=0;else{c[f>>2]=zb[c[c[h>>2]>>2]&63](c[h>>2]|0,c[g>>2]|0)|0;do if((c[f>>2]|0)==0?(c[(c[g>>2]|0)+4>>2]&16384|0)==0:0){if(sq(c[h>>2]|0,c[(c[g>>2]|0)+12>>2]|0)|0){c[e>>2]=2;break a}if(sq(c[h>>2]|0,c[(c[g>>2]|0)+16>>2]|0)|0){c[e>>2]=2;break a}h=c[h>>2]|0;b=(c[g>>2]|0)+20|0;if(c[(c[g>>2]|0)+4>>2]&2048){if(!(oq(h,c[b>>2]|0)|0))break;c[e>>2]=2;break a}else{if(!(rq(h,c[b>>2]|0)|0))break;c[e>>2]=2;break a}}while(0);c[e>>2]=c[f>>2]&2}while(0);i=d;return c[e>>2]|0}function tq(f,g){f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;j=i;i=i+96|0;s=j;h=j+84|0;l=j+80|0;x=j+76|0;o=j+72|0;p=j+68|0;F=j+64|0;D=j+60|0;C=j+56|0;E=j+52|0;m=j+48|0;z=j+44|0;t=j+40|0;u=j+36|0;n=j+32|0;y=j+28|0;r=j+24|0;q=j+20|0;k=j+16|0;v=j+88|0;A=j+12|0;B=j+8|0;c[l>>2]=f;c[x>>2]=g;c[o>>2]=c[(c[l>>2]|0)+20>>2];c[p>>2]=c[c[o>>2]>>2];if(c[(c[x>>2]|0)+4>>2]&4){c[h>>2]=1;f=c[h>>2]|0;i=j;return f|0}f=(c[x>>2]|0)+4|0;c[f>>2]=c[f>>2]|4;switch(d[c[x>>2]>>0]|0){case 153:{c[m>>2]=c[(c[x>>2]|0)+20>>2];if(c[m>>2]|0)B=c[c[m>>2]>>2]|0;else B=0;c[z>>2]=B;c[t>>2]=0;c[u>>2]=0;c[n>>2]=0;a[v>>0]=a[(c[(c[(c[c[p>>2]>>2]|0)+16>>2]|0)+12>>2]|0)+77>>0]|0;Sq(c[p>>2]|0,c[o>>2]|0,16800);c[q>>2]=c[(c[x>>2]|0)+8>>2];c[r>>2]=Mb(c[q>>2]|0)|0;c[k>>2]=Sf(c[c[p>>2]>>2]|0,c[q>>2]|0,c[r>>2]|0,c[z>>2]|0,a[v>>0]|0,0)|0;do if(!(c[k>>2]|0)){c[k>>2]=Sf(c[c[p>>2]>>2]|0,c[q>>2]|0,c[r>>2]|0,-2,a[v>>0]|0,0)|0;if(!(c[k>>2]|0)){c[t>>2]=1;break}else{c[u>>2]=1;break}}else{c[n>>2]=(c[(c[k>>2]|0)+12>>2]|0)==0&1;do if(e[(c[k>>2]|0)+2>>1]&1024){f=(c[x>>2]|0)+4|0;c[f>>2]=c[f>>2]|266240;if((c[z>>2]|0)!=2){c[(c[x>>2]|0)+28>>2]=(a[c[(c[k>>2]|0)+24>>2]>>0]|0)==117?62:938;break}f=Tq(c[(c[(c[m>>2]|0)+4>>2]|0)+20>>2]|0)|0;c[(c[x>>2]|0)+28>>2]=f;if((c[(c[x>>2]|0)+28>>2]|0)<0){Se(c[p>>2]|0,16816,s);f=(c[o>>2]|0)+24|0;c[f>>2]=(c[f>>2]|0)+1}}while(0);c[y>>2]=ap(c[p>>2]|0,31,0,c[(c[k>>2]|0)+24>>2]|0,0)|0;if(!(c[y>>2]|0)){if(!(e[(c[k>>2]|0)+2>>1]&2048))break;f=(c[x>>2]|0)+4|0;c[f>>2]=c[f>>2]|524288;break}if((c[y>>2]|0)==1){f=c[p>>2]|0;c[s>>2]=c[(c[k>>2]|0)+24>>2];Se(f,16888,s);f=(c[o>>2]|0)+24|0;c[f>>2]=(c[f>>2]|0)+1}a[c[x>>2]>>0]=101;c[h>>2]=1;f=c[h>>2]|0;i=j;return f|0}while(0);if((c[n>>2]|0)!=0?(e[(c[o>>2]|0)+28>>1]&1|0)==0:0){f=c[p>>2]|0;g=c[q>>2]|0;c[s>>2]=c[r>>2];c[s+4>>2]=g;Se(f,16928,s);f=(c[o>>2]|0)+24|0;c[f>>2]=(c[f>>2]|0)+1;c[n>>2]=0}else w=29;do if((w|0)==29){if((c[t>>2]|0)!=0?(d[(c[c[p>>2]>>2]|0)+145>>0]|0)==0:0){f=c[p>>2]|0;g=c[q>>2]|0;c[s>>2]=c[r>>2];c[s+4>>2]=g;Se(f,16968,s);f=(c[o>>2]|0)+24|0;c[f>>2]=(c[f>>2]|0)+1;break}if(c[u>>2]|0){f=c[p>>2]|0;g=c[q>>2]|0;c[s>>2]=c[r>>2];c[s+4>>2]=g;Se(f,16992,s);f=(c[o>>2]|0)+24|0;c[f>>2]=(c[f>>2]|0)+1}}while(0);if(c[n>>2]|0){f=(c[o>>2]|0)+28|0;b[f>>1]=e[f>>1]&-2}rq(c[l>>2]|0,c[m>>2]|0)|0;if(c[n>>2]|0){c[A>>2]=c[o>>2];a[c[x>>2]>>0]=-101;a[(c[x>>2]|0)+38>>0]=0;while(1){if(!(c[A>>2]|0))break;if(!((Uq(c[x>>2]|0,c[(c[A>>2]|0)+4>>2]|0)|0)!=0^1))break;f=(c[x>>2]|0)+38|0;a[f>>0]=(a[f>>0]|0)+1<<24>>24;c[A>>2]=c[(c[A>>2]|0)+16>>2]}if(c[A>>2]|0){f=(c[A>>2]|0)+28|0;b[f>>1]=e[f>>1]|(2|e[(c[k>>2]|0)+2>>1]&4096)}f=(c[o>>2]|0)+28|0;b[f>>1]=e[f>>1]|1}c[h>>2]=1;f=c[h>>2]|0;i=j;return f|0};case 135:{Vq(c[p>>2]|0,c[o>>2]|0,17056);Sq(c[p>>2]|0,c[o>>2]|0,17056);break};case 75:case 20:case 119:{if((c[(c[x>>2]|0)+4>>2]&2048|0)!=0?(c[B>>2]=c[(c[o>>2]|0)+20>>2],Vq(c[p>>2]|0,c[o>>2]|0,17040),Sq(c[p>>2]|0,c[o>>2]|0,17040),oq(c[l>>2]|0,c[(c[x>>2]|0)+20>>2]|0)|0,(c[B>>2]|0)!=(c[(c[o>>2]|0)+20>>2]|0)):0){f=(c[x>>2]|0)+4|0;c[f>>2]=c[f>>2]|32}break};case 122:{c[E>>2]=c[(c[x>>2]|0)+16>>2];if((d[c[E>>2]>>0]|0)==27){c[C>>2]=0;c[D>>2]=c[(c[(c[x>>2]|0)+12>>2]|0)+8>>2];c[F>>2]=c[(c[E>>2]|0)+8>>2]}else{c[C>>2]=c[(c[(c[x>>2]|0)+12>>2]|0)+8>>2];c[D>>2]=c[(c[(c[E>>2]|0)+12>>2]|0)+8>>2];c[F>>2]=c[(c[(c[E>>2]|0)+16>>2]|0)+8>>2]}c[h>>2]=Rq(c[p>>2]|0,c[C>>2]|0,c[D>>2]|0,c[F>>2]|0,c[o>>2]|0,c[x>>2]|0)|0;f=c[h>>2]|0;i=j;return f|0};case 27:{c[h>>2]=Rq(c[p>>2]|0,0,0,c[(c[x>>2]|0)+8>>2]|0,c[o>>2]|0,c[x>>2]|0)|0;f=c[h>>2]|0;i=j;return f|0};default:{}}if(c[(c[p>>2]|0)+64>>2]|0)k=1;else k=(d[(c[c[p>>2]>>2]|0)+64>>0]|0)!=0;c[h>>2]=k?2:0;f=c[h>>2]|0;i=j;return f|0}function uq(f,g){f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;j=i;i=i+112|0;m=j;h=j+108|0;C=j+104|0;B=j+100|0;o=j+96|0;t=j+64|0;k=j+56|0;A=j+52|0;l=j+48|0;u=j+44|0;q=j+40|0;r=j+36|0;n=j+32|0;p=j+28|0;w=j+24|0;y=j+20|0;z=j+16|0;x=j+12|0;v=j+8|0;s=j+4|0;c[C>>2]=f;c[B>>2]=g;if(e[(c[B>>2]|0)+6>>1]&2){c[h>>2]=1;f=c[h>>2]|0;i=j;return f|0}c[o>>2]=c[(c[C>>2]|0)+20>>2];c[l>>2]=c[(c[C>>2]|0)+12>>2];c[p>>2]=c[c[l>>2]>>2];if(!(e[(c[B>>2]|0)+6>>1]&16)){Zp(c[l>>2]|0,c[B>>2]|0,c[o>>2]|0);if(c[(c[l>>2]|0)+64>>2]|0)k=1;else k=(d[(c[p>>2]|0)+64>>0]|0)!=0;c[h>>2]=k?2:1;f=c[h>>2]|0;i=j;return f|0}c[k>>2]=(c[(c[B>>2]|0)+52>>2]|0)!=0&1;c[A>>2]=0;c[n>>2]=c[B>>2];a:while(1){if(!(c[B>>2]|0)){o=58;break}f=(c[B>>2]|0)+6|0;b[f>>1]=e[f>>1]|2;c[t+0>>2]=0;c[t+4>>2]=0;c[t+8>>2]=0;c[t+12>>2]=0;c[t+16>>2]=0;c[t+20>>2]=0;c[t+24>>2]=0;c[t+28>>2]=0;c[t>>2]=c[l>>2];if(vq(t,c[(c[B>>2]|0)+60>>2]|0)|0){o=11;break}if(vq(t,c[(c[B>>2]|0)+64>>2]|0)|0){o=11;break}c[q>>2]=0;while(1){if((c[q>>2]|0)>=(c[c[(c[B>>2]|0)+32>>2]>>2]|0))break;c[w>>2]=(c[(c[B>>2]|0)+32>>2]|0)+8+((c[q>>2]|0)*72|0);if(c[(c[w>>2]|0)+20>>2]|0){c[z>>2]=0;c[x>>2]=c[(c[l>>2]|0)+492>>2];c[y>>2]=c[o>>2];while(1){if(!(c[y>>2]|0))break;c[z>>2]=(c[z>>2]|0)+(c[(c[y>>2]|0)+20>>2]|0);c[y>>2]=c[(c[y>>2]|0)+16>>2]}if(c[(c[w>>2]|0)+8>>2]|0)c[(c[l>>2]|0)+492>>2]=c[(c[w>>2]|0)+8>>2];kq(c[l>>2]|0,c[(c[w>>2]|0)+20>>2]|0,c[o>>2]|0);c[(c[l>>2]|0)+492>>2]=c[x>>2];if(c[(c[l>>2]|0)+64>>2]|0){o=22;break a}if(d[(c[p>>2]|0)+64>>0]|0){o=22;break a}c[y>>2]=c[o>>2];while(1){if(!(c[y>>2]|0))break;c[z>>2]=(c[z>>2]|0)-(c[(c[y>>2]|0)+20>>2]|0);c[y>>2]=c[(c[y>>2]|0)+16>>2]}f=(c[w>>2]|0)+37|0;a[f>>0]=a[f>>0]&-3|((c[z>>2]|0)!=0&1)<<1&255}c[q>>2]=(c[q>>2]|0)+1}b[t+28>>1]=1;c[t+4>>2]=c[(c[B>>2]|0)+32>>2];c[t+16>>2]=c[o>>2];c[u>>2]=c[c[B>>2]>>2];c[q>>2]=0;while(1){if((c[q>>2]|0)>=(c[c[u>>2]>>2]|0))break;c[v>>2]=c[(c[(c[u>>2]|0)+4>>2]|0)+((c[q>>2]|0)*20|0)>>2];if(vq(t,c[v>>2]|0)|0){o=31;break a}c[q>>2]=(c[q>>2]|0)+1}c[r>>2]=c[(c[B>>2]|0)+40>>2];if((c[r>>2]|0)==0?(e[t+28>>1]&2|0)==0:0){f=t+28|0;b[f>>1]=e[f>>1]&-2}else{f=(c[B>>2]|0)+6|0;b[f>>1]=e[f>>1]|(4|e[t+28>>1]&4096)}if(!((c[r>>2]|0)!=0?1:(c[(c[B>>2]|0)+44>>2]|0)==0)){o=38;break}c[t+8>>2]=c[c[B>>2]>>2];if(vq(t,c[(c[B>>2]|0)+44>>2]|0)|0){o=40;break}if(vq(t,c[(c[B>>2]|0)+36>>2]|0)|0){o=42;break}c[t+16>>2]=0;f=t+28|0;b[f>>1]=e[f>>1]|1;if((c[k>>2]|0)==0?(wq(t,c[B>>2]|0,c[(c[B>>2]|0)+48>>2]|0,16480)|0)!=0:0){o=45;break}if(a[(c[p>>2]|0)+64>>0]|0){o=47;break}b:do if(c[r>>2]|0){if(wq(t,c[B>>2]|0,c[r>>2]|0,16488)|0){o=51;break a}if(d[(c[p>>2]|0)+64>>0]|0){o=51;break a}c[q>>2]=0;c[s>>2]=c[(c[r>>2]|0)+4>>2];while(1){if((c[q>>2]|0)>=(c[c[r>>2]>>2]|0))break b;if(c[(c[c[s>>2]>>2]|0)+4>>2]&2){o=55;break a}c[q>>2]=(c[q>>2]|0)+1;c[s>>2]=(c[s>>2]|0)+20}}while(0);c[B>>2]=c[(c[B>>2]|0)+52>>2];c[A>>2]=(c[A>>2]|0)+1}switch(o|0){case 11:{c[h>>2]=2;f=c[h>>2]|0;i=j;return f|0};case 22:{c[h>>2]=2;f=c[h>>2]|0;i=j;return f|0};case 31:{c[h>>2]=2;f=c[h>>2]|0;i=j;return f|0};case 38:{Se(c[l>>2]|0,16432,m);c[h>>2]=2;f=c[h>>2]|0;i=j;return f|0};case 40:{c[h>>2]=2;f=c[h>>2]|0;i=j;return f|0};case 42:{c[h>>2]=2;f=c[h>>2]|0;i=j;return f|0};case 45:{c[h>>2]=2;f=c[h>>2]|0;i=j;return f|0};case 47:{c[h>>2]=2;f=c[h>>2]|0;i=j;return f|0};case 51:{c[h>>2]=2;f=c[h>>2]|0;i=j;return f|0};case 55:{Se(c[l>>2]|0,16496,m);c[h>>2]=2;f=c[h>>2]|0;i=j;return f|0};case 58:{if((c[k>>2]|0)!=0?(xq(c[l>>2]|0,c[n>>2]|0)|0)!=0:0){c[h>>2]=2;f=c[h>>2]|0;i=j;return f|0}c[h>>2]=1;f=c[h>>2]|0;i=j;return f|0}}return 0}function vq(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;f=i;i=i+48|0;g=f+40|0;k=f+36|0;j=f+32|0;l=f+44|0;m=f+8|0;h=f;c[k>>2]=a;c[j>>2]=d;if(!(c[j>>2]|0)){c[g>>2]=0;a=c[g>>2]|0;i=f;return a|0}c[h>>2]=c[c[k>>2]>>2];if(Qq(c[h>>2]|0,(c[(c[j>>2]|0)+24>>2]|0)+(c[(c[c[k>>2]>>2]|0)+460>>2]|0)|0)|0){c[g>>2]=1;a=c[g>>2]|0;i=f;return a|0}a=(c[h>>2]|0)+460|0;c[a>>2]=(c[a>>2]|0)+(c[(c[j>>2]|0)+24>>2]|0);b[l>>1]=(e[(c[k>>2]|0)+28>>1]|0)&4098;a=(c[k>>2]|0)+28|0;b[a>>1]=(e[a>>1]|0)&-4099;c[m+0>>2]=0;c[m+4>>2]=0;c[m+8>>2]=0;c[m+12>>2]=0;c[m+16>>2]=0;c[m+20>>2]=0;c[m>>2]=40;c[m+4>>2]=41;c[m+12>>2]=c[c[k>>2]>>2];c[m+20>>2]=c[k>>2];sq(m,c[j>>2]|0)|0;a=(c[c[k>>2]>>2]|0)+460|0;c[a>>2]=(c[a>>2]|0)-(c[(c[j>>2]|0)+24>>2]|0);if(!((c[(c[k>>2]|0)+24>>2]|0)<=0?(c[(c[m+12>>2]|0)+64>>2]|0)<=0:0)){a=(c[j>>2]|0)+4|0;c[a>>2]=c[a>>2]|8}if((e[(c[k>>2]|0)+28>>1]|0)&2){a=(c[j>>2]|0)+4|0;c[a>>2]=c[a>>2]|2}a=(c[k>>2]|0)+28|0;b[a>>1]=e[a>>1]|0|(e[l>>1]|0);c[g>>2]=(c[(c[j>>2]|0)+4>>2]&8|0)!=0&1;a=c[g>>2]|0;i=f;return a|0}function wq(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;r=i;i=i+64|0;k=r+48|0;v=r+44|0;o=r+40|0;t=r+36|0;h=r+32|0;s=r+28|0;u=r+24|0;l=r+20|0;m=r+16|0;n=r+12|0;w=r+8|0;q=r+4|0;p=r;c[v>>2]=d;c[o>>2]=e;c[t>>2]=f;c[h>>2]=g;if(!(c[t>>2]|0)){c[k>>2]=0;d=c[k>>2]|0;i=r;return d|0}c[w>>2]=c[c[c[o>>2]>>2]>>2];c[n>>2]=c[c[v>>2]>>2];c[s>>2]=0;c[m>>2]=c[(c[t>>2]|0)+4>>2];a:while(1){if((c[s>>2]|0)>=(c[c[t>>2]>>2]|0)){j=20;break}c[q>>2]=c[c[m>>2]>>2];c[p>>2]=iq(c[q>>2]|0)|0;if((a[c[h>>2]>>0]|0)!=71?(c[l>>2]=Aq(c[n>>2]|0,c[c[o>>2]>>2]|0,c[p>>2]|0)|0,(c[l>>2]|0)>0):0)b[(c[m>>2]|0)+16>>1]=c[l>>2];else j=8;b:do if((j|0)==8){j=0;if(yq(c[p>>2]|0,l)|0){if((c[l>>2]|0)<1|(c[l>>2]|0)>65535){j=10;break a}b[(c[m>>2]|0)+16>>1]=c[l>>2];break}b[(c[m>>2]|0)+16>>1]=0;if(vq(c[v>>2]|0,c[q>>2]|0)|0){j=13;break a}c[u>>2]=0;while(1){if((c[u>>2]|0)>=(c[c[c[o>>2]>>2]>>2]|0))break b;if(!(Dq(c[q>>2]|0,c[(c[(c[c[o>>2]>>2]|0)+4>>2]|0)+((c[u>>2]|0)*20|0)>>2]|0,-1)|0))b[(c[m>>2]|0)+16>>1]=(c[u>>2]|0)+1;c[u>>2]=(c[u>>2]|0)+1}}while(0);c[s>>2]=(c[s>>2]|0)+1;c[m>>2]=(c[m>>2]|0)+20}if((j|0)==10){zq(c[n>>2]|0,c[h>>2]|0,(c[s>>2]|0)+1|0,c[w>>2]|0);c[k>>2]=1;d=c[k>>2]|0;i=r;return d|0}else if((j|0)==13){c[k>>2]=1;d=c[k>>2]|0;i=r;return d|0}else if((j|0)==20){c[k>>2]=Lq(c[n>>2]|0,c[o>>2]|0,c[t>>2]|0,c[h>>2]|0)|0;d=c[k>>2]|0;i=r;return d|0}return 0}function xq(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;m=i;i=i+64|0;h=m;k=m+52|0;g=m+48|0;o=m+44|0;f=m+40|0;l=m+36|0;j=m+32|0;s=m+28|0;n=m+24|0;p=m+20|0;q=m+16|0;r=m+12|0;t=m+8|0;u=m+4|0;c[g>>2]=d;c[o>>2]=e;c[n>>2]=1;c[l>>2]=c[(c[o>>2]|0)+48>>2];if(!(c[l>>2]|0)){c[k>>2]=0;d=c[k>>2]|0;i=m;return d|0}c[s>>2]=c[c[g>>2]>>2];if((c[c[l>>2]>>2]|0)>(c[(c[s>>2]|0)+96>>2]|0)){Se(c[g>>2]|0,16560,h);c[k>>2]=1;d=c[k>>2]|0;i=m;return d|0}c[f>>2]=0;while(1){if((c[f>>2]|0)>=(c[c[l>>2]>>2]|0))break;d=(c[(c[l>>2]|0)+4>>2]|0)+((c[f>>2]|0)*20|0)+13|0;a[d>>0]=a[d>>0]&-2;c[f>>2]=(c[f>>2]|0)+1}c[(c[o>>2]|0)+56>>2]=0;while(1){if(!(c[(c[o>>2]|0)+52>>2]|0))break;c[(c[(c[o>>2]|0)+52>>2]|0)+56>>2]=c[o>>2];c[o>>2]=c[(c[o>>2]|0)+52>>2]}a:while(1){if(!((c[o>>2]|0)!=0&(c[n>>2]|0)!=0)){n=33;break}c[n>>2]=0;c[j>>2]=c[c[o>>2]>>2];c[f>>2]=0;c[p>>2]=c[(c[l>>2]|0)+4>>2];while(1){if((c[f>>2]|0)>=(c[c[l>>2]>>2]|0))break;c[q>>2]=-1;do if(!(a[(c[p>>2]|0)+13>>0]&1)){c[r>>2]=iq(c[c[p>>2]>>2]|0)|0;if(yq(c[r>>2]|0,q)|0){if((c[q>>2]|0)<=0){n=18;break a}if((c[q>>2]|0)>(c[c[j>>2]>>2]|0)){n=18;break a}}else{c[q>>2]=Aq(c[g>>2]|0,c[j>>2]|0,c[r>>2]|0)|0;if(!(c[q>>2]|0)){c[t>>2]=Bq(c[s>>2]|0,c[r>>2]|0,0)|0;if(!(a[(c[s>>2]|0)+64>>0]|0))c[q>>2]=Cq(c[g>>2]|0,c[o>>2]|0,c[t>>2]|0)|0;wn(c[s>>2]|0,c[t>>2]|0)}}if((c[q>>2]|0)<=0){c[n>>2]=1;break}c[u>>2]=ho(c[s>>2]|0,132,0)|0;if(!(c[u>>2]|0)){n=25;break a}d=(c[u>>2]|0)+4|0;c[d>>2]=c[d>>2]|1024;c[(c[u>>2]|0)+8>>2]=c[q>>2];d=c[u>>2]|0;e=c[p>>2]|0;if((c[c[p>>2]>>2]|0)==(c[r>>2]|0))c[e>>2]=d;else c[(c[e>>2]|0)+12>>2]=d;wn(c[s>>2]|0,c[r>>2]|0);b[(c[p>>2]|0)+16>>1]=c[q>>2];d=(c[p>>2]|0)+13|0;a[d>>0]=a[d>>0]&-2|1}while(0);c[f>>2]=(c[f>>2]|0)+1;c[p>>2]=(c[p>>2]|0)+20}c[o>>2]=c[(c[o>>2]|0)+56>>2]}if((n|0)==18){zq(c[g>>2]|0,16480,(c[f>>2]|0)+1|0,c[c[j>>2]>>2]|0);c[k>>2]=1;d=c[k>>2]|0;i=m;return d|0}else if((n|0)==25){c[k>>2]=1;d=c[k>>2]|0;i=m;return d|0}else if((n|0)==33){c[f>>2]=0;while(1){if((c[f>>2]|0)>=(c[c[l>>2]>>2]|0)){n=38;break}if(!(a[(c[(c[l>>2]|0)+4>>2]|0)+((c[f>>2]|0)*20|0)+13>>0]&1)){n=36;break}c[f>>2]=(c[f>>2]|0)+1}if((n|0)==36){d=c[g>>2]|0;c[h>>2]=(c[f>>2]|0)+1;Se(d,16600,h);c[k>>2]=1;d=c[k>>2]|0;i=m;return d|0}else if((n|0)==38){c[k>>2]=0;d=c[k>>2]|0;i=m;return d|0}}return 0}function yq(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0;e=i;i=i+32|0;f=e+16|0;k=e+12|0;g=e+8|0;h=e+4|0;j=e;c[k>>2]=a;c[g>>2]=b;c[h>>2]=0;b=c[k>>2]|0;if(c[(c[k>>2]|0)+4>>2]&1024){c[c[g>>2]>>2]=c[b+8>>2];c[f>>2]=1;a=c[f>>2]|0;i=e;return a|0}b=d[b>>0]|0;if((b|0)==157){if(yq(c[(c[k>>2]|0)+12>>2]|0,j)|0){c[c[g>>2]>>2]=0-(c[j>>2]|0);c[h>>2]=1}}else if((b|0)==158)c[h>>2]=yq(c[(c[k>>2]|0)+12>>2]|0,c[g>>2]|0)|0;c[f>>2]=c[h>>2];a=c[f>>2]|0;i=e;return a|0}function zq(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;f=i;i=i+32|0;g=f;l=f+24|0;k=f+20|0;h=f+16|0;j=f+12|0;c[l>>2]=a;c[k>>2]=b;c[h>>2]=d;c[j>>2]=e;a=c[l>>2]|0;d=c[k>>2]|0;b=c[j>>2]|0;c[g>>2]=c[h>>2];c[g+4>>2]=d;c[g+8>>2]=b;Se(a,16664,g);i=f;return}function Aq(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;g=i;i=i+32|0;f=g+24|0;k=g+16|0;m=g+12|0;l=g+8|0;j=g+4|0;h=g;c[g+20>>2]=a;c[k>>2]=b;c[m>>2]=e;a:do if((d[c[m>>2]>>0]|0|0)==27){c[j>>2]=c[(c[m>>2]|0)+8>>2];c[l>>2]=0;while(1){if((c[l>>2]|0)>=(c[c[k>>2]>>2]|0))break a;c[h>>2]=c[(c[(c[k>>2]|0)+4>>2]|0)+((c[l>>2]|0)*20|0)+4>>2];if((c[h>>2]|0)!=0?(xc(c[h>>2]|0,c[j>>2]|0)|0)==0:0)break;c[l>>2]=(c[l>>2]|0)+1}c[f>>2]=(c[l>>2]|0)+1;a=c[f>>2]|0;i=g;return a|0}while(0);c[f>>2]=0;a=c[f>>2]|0;i=g;return a|0}function Bq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+16|0;h=e+8|0;g=e+4|0;f=e;c[h>>2]=a;c[g>>2]=b;c[f>>2]=d;a=Fq(c[h>>2]|0,c[g>>2]|0,c[f>>2]|0,0)|0;i=e;return a|0}function Cq(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;g=i;i=i+80|0;h=g+60|0;q=g+56|0;r=g+52|0;l=g+48|0;k=g+44|0;j=g+40|0;p=g+8|0;n=g+4|0;m=g;o=g+64|0;c[q>>2]=d;c[r>>2]=e;c[l>>2]=f;c[j>>2]=c[c[r>>2]>>2];c[p+0>>2]=0;c[p+4>>2]=0;c[p+8>>2]=0;c[p+12>>2]=0;c[p+16>>2]=0;c[p+20>>2]=0;c[p+24>>2]=0;c[p+28>>2]=0;c[p>>2]=c[q>>2];c[p+4>>2]=c[(c[r>>2]|0)+32>>2];c[p+8>>2]=c[j>>2];b[p+28>>1]=1;c[p+24>>2]=0;c[n>>2]=c[c[q>>2]>>2];a[o>>0]=a[(c[n>>2]|0)+67>>0]|0;a[(c[n>>2]|0)+67>>0]=1;c[m>>2]=vq(p,c[l>>2]|0)|0;a[(c[n>>2]|0)+67>>0]=a[o>>0]|0;if(c[m>>2]|0){c[h>>2]=0;r=c[h>>2]|0;i=g;return r|0}c[k>>2]=0;while(1){if((c[k>>2]|0)>=(c[c[j>>2]>>2]|0)){j=8;break}r=(Dq(c[(c[(c[j>>2]|0)+4>>2]|0)+((c[k>>2]|0)*20|0)>>2]|0,c[l>>2]|0,-1)|0)<2;f=(c[k>>2]|0)+1|0;if(r){j=6;break}c[k>>2]=f}if((j|0)==6){c[h>>2]=f;r=c[h>>2]|0;i=g;return r|0}else if((j|0)==8){c[h>>2]=0;r=c[h>>2]|0;i=g;return r|0}return 0}function Dq(a,e,f){a=a|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;l=i;i=i+32|0;h=l+16|0;j=l+12|0;k=l+8|0;g=l+4|0;m=l;c[j>>2]=a;c[k>>2]=e;c[g>>2]=f;if((c[j>>2]|0)==0|(c[k>>2]|0)==0){c[h>>2]=(c[k>>2]|0)==(c[j>>2]|0)?0:2;a=c[h>>2]|0;i=l;return a|0}c[m>>2]=c[(c[j>>2]|0)+4>>2]|c[(c[k>>2]|0)+4>>2];f=c[j>>2]|0;if(c[m>>2]&1024){if((c[f+4>>2]&c[(c[k>>2]|0)+4>>2]&1024|0)!=0?(c[(c[j>>2]|0)+8>>2]|0)==(c[(c[k>>2]|0)+8>>2]|0):0){c[h>>2]=0;a=c[h>>2]|0;i=l;return a|0}c[h>>2]=2;a=c[h>>2]|0;i=l;return a|0}e=d[c[j>>2]>>0]|0;if((d[f>>0]|0)!=(d[c[k>>2]>>0]|0)){if((e|0)==95?(Dq(c[(c[j>>2]|0)+12>>2]|0,c[k>>2]|0,c[g>>2]|0)|0)<2:0){c[h>>2]=1;a=c[h>>2]|0;i=l;return a|0}if((d[c[k>>2]>>0]|0)==95?(Dq(c[j>>2]|0,c[(c[k>>2]|0)+12>>2]|0,c[g>>2]|0)|0)<2:0){c[h>>2]=1;a=c[h>>2]|0;i=l;return a|0}c[h>>2]=2;a=c[h>>2]|0;i=l;return a|0}if((((e|0)!=154?(d[c[j>>2]>>0]|0)!=156:0)?(c[(c[j>>2]|0)+8>>2]|0)!=0:0)?(UE(c[(c[j>>2]|0)+8>>2]|0,c[(c[k>>2]|0)+8>>2]|0)|0)!=0:0){c[h>>2]=(d[c[j>>2]>>0]|0)==95?1:2;a=c[h>>2]|0;i=l;return a|0}if((c[(c[j>>2]|0)+4>>2]&16|0)!=(c[(c[k>>2]|0)+4>>2]&16|0)){c[h>>2]=2;a=c[h>>2]|0;i=l;return a|0}do if(!(c[m>>2]&16384)){if(c[m>>2]&2048){c[h>>2]=2;a=c[h>>2]|0;i=l;return a|0}if(Dq(c[(c[j>>2]|0)+12>>2]|0,c[(c[k>>2]|0)+12>>2]|0,c[g>>2]|0)|0){c[h>>2]=2;a=c[h>>2]|0;i=l;return a|0}if(Dq(c[(c[j>>2]|0)+16>>2]|0,c[(c[k>>2]|0)+16>>2]|0,c[g>>2]|0)|0){c[h>>2]=2;a=c[h>>2]|0;i=l;return a|0}if(Eq(c[(c[j>>2]|0)+20>>2]|0,c[(c[k>>2]|0)+20>>2]|0,c[g>>2]|0)|0){c[h>>2]=2;a=c[h>>2]|0;i=l;return a|0}if(!(c[m>>2]&8192)){if((b[(c[j>>2]|0)+32>>1]|0)!=(b[(c[k>>2]|0)+32>>1]|0)){c[h>>2]=2;a=c[h>>2]|0;i=l;return a|0}if((c[(c[j>>2]|0)+28>>2]|0)!=(c[(c[k>>2]|0)+28>>2]|0)){if((c[(c[j>>2]|0)+28>>2]|0)==(c[g>>2]|0)?(c[(c[k>>2]|0)+28>>2]|0)<0:0)break;c[h>>2]=2;a=c[h>>2]|0;i=l;return a|0}}}while(0);c[h>>2]=0;a=c[h>>2]|0;i=l;return a|0}function Eq(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;g=i;i=i+32|0;f=g+24|0;h=g+20|0;n=g+16|0;l=g+12|0;m=g+8|0;j=g+4|0;k=g;c[h>>2]=a;c[n>>2]=b;c[l>>2]=e;if((c[h>>2]|0)==0&(c[n>>2]|0)==0){c[f>>2]=0;a=c[f>>2]|0;i=g;return a|0}if((c[h>>2]|0)==0|(c[n>>2]|0)==0){c[f>>2]=1;a=c[f>>2]|0;i=g;return a|0}if((c[c[h>>2]>>2]|0)!=(c[c[n>>2]>>2]|0)){c[f>>2]=1;a=c[f>>2]|0;i=g;return a|0}c[m>>2]=0;while(1){if((c[m>>2]|0)>=(c[c[h>>2]>>2]|0)){h=14;break}c[j>>2]=c[(c[(c[h>>2]|0)+4>>2]|0)+((c[m>>2]|0)*20|0)>>2];c[k>>2]=c[(c[(c[n>>2]|0)+4>>2]|0)+((c[m>>2]|0)*20|0)>>2];if((d[(c[(c[h>>2]|0)+4>>2]|0)+((c[m>>2]|0)*20|0)+12>>0]|0|0)!=(d[(c[(c[n>>2]|0)+4>>2]|0)+((c[m>>2]|0)*20|0)+12>>0]|0|0)){h=10;break}if(Dq(c[j>>2]|0,c[k>>2]|0,c[l>>2]|0)|0){h=12;break}c[m>>2]=(c[m>>2]|0)+1}if((h|0)==10){c[f>>2]=1;a=c[f>>2]|0;i=g;return a|0}else if((h|0)==12){c[f>>2]=1;a=c[f>>2]|0;i=g;return a|0}else if((h|0)==14){c[f>>2]=0;a=c[f>>2]|0;i=g;return a|0}return 0}function Fq(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;j=i;i=i+64|0;m=j+48|0;h=j+44|0;k=j+40|0;l=j+36|0;f=j+32|0;n=j+28|0;g=j+24|0;p=j+20|0;t=j+16|0;q=j+12|0;s=j+8|0;o=j+4|0;r=j;c[m>>2]=a;c[h>>2]=b;c[k>>2]=d;c[l>>2]=e;c[f>>2]=0;if(!(c[h>>2]|0)){a=c[f>>2]|0;i=j;return a|0}c[n>>2]=c[k>>2]&1;c[p>>2]=0;if(c[l>>2]|0){c[g>>2]=c[c[l>>2]>>2];c[p>>2]=32768}else{b=c[m>>2]|0;a=Gq(c[h>>2]|0,c[k>>2]|0)|0;c[g>>2]=Qe(b,a,((a|0)<0)<<31>>31)|0}c[f>>2]=c[g>>2];if(!(c[f>>2]|0)){a=c[f>>2]|0;i=j;return a|0}c[t>>2]=Hq(c[h>>2]|0,c[k>>2]|0)|0;c[q>>2]=c[t>>2]&4095;if((c[(c[h>>2]|0)+4>>2]&1024|0)==0?(c[(c[h>>2]|0)+8>>2]|0)!=0:0)c[s>>2]=(Mb(c[(c[h>>2]|0)+8>>2]|0)|0)+1;else c[s>>2]=0;if(c[n>>2]|0)dF(c[g>>2]|0,c[h>>2]|0,c[q>>2]|0)|0;else{c[o>>2]=Iq(c[h>>2]|0)|0;dF(c[g>>2]|0,c[h>>2]|0,c[o>>2]|0)|0;_E((c[g>>2]|0)+(c[o>>2]|0)|0,0,48-(c[o>>2]|0)|0)|0}a=(c[f>>2]|0)+4|0;c[a>>2]=c[a>>2]&-122881;a=(c[f>>2]|0)+4|0;c[a>>2]=c[a>>2]|c[t>>2]&24576;a=(c[f>>2]|0)+4|0;c[a>>2]=c[a>>2]|c[p>>2];if(c[s>>2]|0){a=(c[g>>2]|0)+(c[q>>2]|0)|0;c[(c[f>>2]|0)+8>>2]=a;c[r>>2]=a;dF(c[r>>2]|0,c[(c[h>>2]|0)+8>>2]|0,c[s>>2]|0)|0}do if(!((c[(c[h>>2]|0)+4>>2]|c[(c[f>>2]|0)+4>>2])&16384)){p=c[m>>2]|0;o=(c[h>>2]|0)+20|0;if(c[(c[h>>2]|0)+4>>2]&2048){a=Wp(p,c[o>>2]|0,c[n>>2]|0)|0;c[(c[f>>2]|0)+20>>2]=a;break}else{a=Jq(p,c[o>>2]|0,c[n>>2]|0)|0;c[(c[f>>2]|0)+20>>2]=a;break}}while(0);n=c[h>>2]|0;if(!(c[(c[f>>2]|0)+4>>2]&24576)){if(c[n+4>>2]&16384){a=c[f>>2]|0;i=j;return a|0}a=Bq(c[m>>2]|0,c[(c[h>>2]|0)+12>>2]|0,0)|0;c[(c[f>>2]|0)+12>>2]=a;a=Bq(c[m>>2]|0,c[(c[h>>2]|0)+16>>2]|0,0)|0;c[(c[f>>2]|0)+16>>2]=a;a=c[f>>2]|0;i=j;return a|0}a=Kq(n,c[k>>2]|0)|0;c[g>>2]=(c[g>>2]|0)+a;if(c[(c[f>>2]|0)+4>>2]&8192){a=Fq(c[m>>2]|0,c[(c[h>>2]|0)+12>>2]|0,1,g)|0;c[(c[f>>2]|0)+12>>2]=a;a=Fq(c[m>>2]|0,c[(c[h>>2]|0)+16>>2]|0,1,g)|0;c[(c[f>>2]|0)+16>>2]=a}if(!(c[l>>2]|0)){a=c[f>>2]|0;i=j;return a|0}c[c[l>>2]>>2]=c[g>>2];a=c[f>>2]|0;i=j;return a|0}function Gq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;i=i+16|0;f=d+8|0;g=d+4|0;e=d;c[f>>2]=a;c[g>>2]=b;c[e>>2]=0;if(!(c[f>>2]|0)){a=c[e>>2]|0;i=d;return a|0}c[e>>2]=Kq(c[f>>2]|0,c[g>>2]|0)|0;if(!(c[g>>2]&1)){a=c[e>>2]|0;i=d;return a|0}a=Gq(c[(c[f>>2]|0)+12>>2]|0,c[g>>2]|0)|0;a=a+(Gq(c[(c[f>>2]|0)+16>>2]|0,c[g>>2]|0)|0)|0;c[e>>2]=(c[e>>2]|0)+a;a=c[e>>2]|0;i=d;return a|0}function Hq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;i=i+16|0;f=d+8|0;g=d+4|0;e=d;c[f>>2]=a;c[g>>2]=b;do if(!(c[g>>2]&1))c[e>>2]=48;else{if((c[(c[f>>2]|0)+12>>2]|0)==0?(c[(c[f>>2]|0)+20>>2]|0)==0:0){c[e>>2]=16396;break}c[e>>2]=8220}while(0);i=d;return c[e>>2]|0}function Iq(a){a=a|0;var b=0,d=0,e=0;d=i;i=i+16|0;b=d+4|0;e=d;c[e>>2]=a;do if(!(c[(c[e>>2]|0)+4>>2]&16384))if(c[(c[e>>2]|0)+4>>2]&8192){c[b>>2]=28;break}else{c[b>>2]=48;break}else c[b>>2]=12;while(0);i=d;return c[b>>2]|0}function Jq(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;m=i;i=i+48|0;h=m+32|0;j=m+28|0;l=m+24|0;q=m+20|0;k=m+16|0;o=m+12|0;g=m+8|0;n=m+4|0;p=m;c[j>>2]=b;c[l>>2]=e;c[q>>2]=f;if(!(c[l>>2]|0)){c[h>>2]=0;b=c[h>>2]|0;i=m;return b|0}c[k>>2]=Qe(c[j>>2]|0,8,0)|0;if(!(c[k>>2]|0)){c[h>>2]=0;b=c[h>>2]|0;i=m;return b|0}b=c[c[l>>2]>>2]|0;c[n>>2]=b;c[c[k>>2]>>2]=b;a:do if(!(c[q>>2]&1)){c[n>>2]=1;while(1){if((c[n>>2]|0)>=(c[c[l>>2]>>2]|0))break a;c[n>>2]=(c[n>>2]|0)+(c[n>>2]|0)}}while(0);b=Qe(c[j>>2]|0,(c[n>>2]|0)*20|0,0)|0;c[o>>2]=b;c[(c[k>>2]|0)+4>>2]=b;if(!(c[o>>2]|0)){Xb(c[j>>2]|0,c[k>>2]|0);c[h>>2]=0;b=c[h>>2]|0;i=m;return b|0}c[g>>2]=c[(c[l>>2]|0)+4>>2];c[n>>2]=0;while(1){if((c[n>>2]|0)>=(c[c[l>>2]>>2]|0))break;c[p>>2]=c[c[g>>2]>>2];b=Bq(c[j>>2]|0,c[p>>2]|0,c[q>>2]|0)|0;c[c[o>>2]>>2]=b;b=ne(c[j>>2]|0,c[(c[g>>2]|0)+4>>2]|0)|0;c[(c[o>>2]|0)+4>>2]=b;b=ne(c[j>>2]|0,c[(c[g>>2]|0)+8>>2]|0)|0;c[(c[o>>2]|0)+8>>2]=b;a[(c[o>>2]|0)+12>>0]=a[(c[g>>2]|0)+12>>0]|0;b=(c[o>>2]|0)+13|0;a[b>>0]=a[b>>0]&-2;b=(c[o>>2]|0)+13|0;a[b>>0]=a[b>>0]&-3|((d[(c[g>>2]|0)+13>>0]|0)>>>1&1)<<1&255;b=(c[o>>2]|0)+16|0;e=(c[g>>2]|0)+16|0;c[b+0>>2]=c[e+0>>2];c[n>>2]=(c[n>>2]|0)+1;c[o>>2]=(c[o>>2]|0)+20;c[g>>2]=(c[g>>2]|0)+20}c[h>>2]=c[k>>2];b=c[h>>2]|0;i=m;return b|0}function Kq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;e=i;i=i+16|0;f=e+8|0;g=e+4|0;d=e;c[f>>2]=a;c[g>>2]=b;c[d>>2]=(Hq(c[f>>2]|0,c[g>>2]|0)|0)&4095;if((c[(c[f>>2]|0)+4>>2]&1024|0)==0?(c[(c[f>>2]|0)+8>>2]|0)!=0:0){g=(Mb(c[(c[f>>2]|0)+8>>2]|0)|0)+1|0;c[d>>2]=(c[d>>2]|0)+g}i=e;return(c[d>>2]|0)+7&-8|0}function Lq(a,f,g,h){a=a|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;n=i;i=i+48|0;r=n;j=n+36|0;p=n+32|0;s=n+28|0;q=n+24|0;k=n+20|0;l=n+16|0;t=n+12|0;m=n+8|0;o=n+4|0;c[p>>2]=a;c[s>>2]=f;c[q>>2]=g;c[k>>2]=h;c[t>>2]=c[c[p>>2]>>2];if((c[q>>2]|0)!=0?(d[(c[c[p>>2]>>2]|0)+64>>0]|0)==0:0){if((c[c[q>>2]>>2]|0)>(c[(c[t>>2]|0)+96>>2]|0)){a=c[p>>2]|0;c[r>>2]=c[k>>2];Se(a,16720,r);c[j>>2]=1;a=c[j>>2]|0;i=n;return a|0}c[m>>2]=c[c[s>>2]>>2];c[l>>2]=0;c[o>>2]=c[(c[q>>2]|0)+4>>2];while(1){if((c[l>>2]|0)>=(c[c[q>>2]>>2]|0)){o=13;break}if(b[(c[o>>2]|0)+16>>1]|0){h=c[p>>2]|0;if((e[(c[o>>2]|0)+16>>1]|0)>(c[c[m>>2]>>2]|0)){o=10;break}Mq(h,c[m>>2]|0,(e[(c[o>>2]|0)+16>>1]|0)-1|0,c[c[o>>2]>>2]|0,c[k>>2]|0,0)}c[l>>2]=(c[l>>2]|0)+1;c[o>>2]=(c[o>>2]|0)+20}if((o|0)==10){zq(h,c[k>>2]|0,(c[l>>2]|0)+1|0,c[c[m>>2]>>2]|0);c[j>>2]=1;a=c[j>>2]|0;i=n;return a|0}else if((o|0)==13){c[j>>2]=0;a=c[j>>2]|0;i=n;return a|0}}c[j>>2]=0;a=c[j>>2]|0;i=n;return a|0}function Mq(f,g,h,j,k,l){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;p=i;i=i+48|0;r=p+32|0;t=p+28|0;u=p+24|0;m=p+20|0;v=p+16|0;s=p+12|0;q=p+8|0;n=p+4|0;o=p;c[r>>2]=f;c[t>>2]=g;c[u>>2]=h;c[m>>2]=j;c[v>>2]=k;c[s>>2]=l;c[q>>2]=c[(c[(c[t>>2]|0)+4>>2]|0)+((c[u>>2]|0)*20|0)>>2];c[o>>2]=c[c[r>>2]>>2];c[n>>2]=Bq(c[o>>2]|0,c[q>>2]|0,0)|0;if(!(c[n>>2]|0)){i=p;return}if((d[c[q>>2]>>0]|0)!=154?(a[c[v>>2]>>0]|0)!=71:0){Nq(c[n>>2]|0,c[s>>2]|0);c[n>>2]=Rn(c[r>>2]|0,24,c[n>>2]|0,0,0)|0;if(!(c[n>>2]|0)){i=p;return}f=(c[n>>2]|0)+4|0;c[f>>2]=c[f>>2]|4096;if(!(e[(c[(c[t>>2]|0)+4>>2]|0)+((c[u>>2]|0)*20|0)+18>>1]|0)){g=(c[r>>2]|0)+456|0;f=(c[g>>2]|0)+1|0;c[g>>2]=f;b[(c[(c[t>>2]|0)+4>>2]|0)+((c[u>>2]|0)*20|0)+18>>1]=f}c[(c[n>>2]|0)+28>>2]=e[(c[(c[t>>2]|0)+4>>2]|0)+((c[u>>2]|0)*20|0)+18>>1]}if((d[c[m>>2]>>0]|0)==95)c[n>>2]=Oq(c[r>>2]|0,c[n>>2]|0,c[(c[m>>2]|0)+8>>2]|0)|0;r=(c[m>>2]|0)+4|0;c[r>>2]=c[r>>2]|32768;wn(c[o>>2]|0,c[m>>2]|0);r=(c[m>>2]|0)+0|0;l=(c[n>>2]|0)+0|0;q=r+48|0;do{c[r>>2]=c[l>>2];r=r+4|0;l=l+4|0}while((r|0)<(q|0));if((c[(c[m>>2]|0)+4>>2]&1024|0)==0?(c[(c[m>>2]|0)+8>>2]|0)!=0:0){f=ne(c[o>>2]|0,c[(c[m>>2]|0)+8>>2]|0)|0;c[(c[m>>2]|0)+8>>2]=f;f=(c[m>>2]|0)+4|0;c[f>>2]=c[f>>2]|65536}Xb(c[o>>2]|0,c[n>>2]|0);i=p;return}function Nq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;i=i+32|0;g=d+28|0;f=d+24|0;e=d;c[g>>2]=a;c[f>>2]=b;if((c[f>>2]|0)<=0){i=d;return}c[e+0>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;c[e+16>>2]=0;c[e+20>>2]=0;c[e>>2]=42;c[e+20>>2]=c[f>>2];sq(e,c[g>>2]|0)|0;i=d;return}function Oq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;i=i+32|0;h=e+16|0;g=e+12|0;j=e+8|0;f=e;c[h>>2]=a;c[g>>2]=b;c[j>>2]=d;c[f>>2]=c[j>>2];c[f+4>>2]=Mb(c[f>>2]|0)|0;a=uo(c[h>>2]|0,c[g>>2]|0,f)|0;i=e;return a|0}function Pq(b,e){b=b|0;e=e|0;var f=0,g=0,h=0;f=i;i=i+16|0;h=f+4|0;g=f;c[h>>2]=b;c[g>>2]=e;if((d[c[g>>2]>>0]|0|0)!=155){i=f;return 0}b=(c[g>>2]|0)+38|0;a[b>>0]=(d[b>>0]|0)+(c[(c[h>>2]|0)+20>>2]|0);i=f;return 0}function Qq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;d=i;i=i+32|0;h=d;f=d+16|0;j=d+12|0;e=d+8|0;g=d+4|0;c[f>>2]=a;c[j>>2]=b;c[e>>2]=0;c[g>>2]=c[(c[c[f>>2]>>2]|0)+100>>2];if((c[j>>2]|0)<=(c[g>>2]|0)){j=c[e>>2]|0;i=d;return j|0}j=c[f>>2]|0;c[h>>2]=c[g>>2];Se(j,16752,h);c[e>>2]=1;j=c[e>>2]|0;i=d;return j|0}function Rq(f,g,h,j,k,l){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0;o=i;i=i+144|0;y=o;u=o+132|0;m=o+128|0;E=o+124|0;w=o+120|0;x=o+116|0;z=o+112|0;n=o+108|0;P=o+104|0;J=o+100|0;p=o+96|0;F=o+92|0;R=o+88|0;q=o+84|0;O=o+80|0;t=o+76|0;v=o+72|0;A=o+68|0;r=o+64|0;H=o+60|0;K=o+56|0;I=o+52|0;Q=o+48|0;N=o+44|0;S=o+40|0;M=o+36|0;G=o+32|0;C=o+28|0;T=o+24|0;B=o+20|0;s=o+16|0;c[m>>2]=f;c[E>>2]=g;c[w>>2]=h;c[x>>2]=j;c[z>>2]=k;c[n>>2]=l;c[p>>2]=0;c[F>>2]=0;c[R>>2]=0;c[q>>2]=c[c[m>>2]>>2];c[t>>2]=0;c[v>>2]=c[z>>2];c[A>>2]=0;c[r>>2]=0;c[H>>2]=0;c[(c[n>>2]|0)+28>>2]=-1;c[(c[n>>2]|0)+44>>2]=0;a:do if(c[E>>2]|0){if(e[(c[z>>2]|0)+28>>1]&20){c[E>>2]=0;break}c[P>>2]=0;while(1){if((c[P>>2]|0)>=(c[(c[q>>2]|0)+20>>2]|0))break a;k=(xc(c[(c[(c[q>>2]|0)+16>>2]|0)+(c[P>>2]<<4)>>2]|0,c[E>>2]|0)|0)==0;l=c[P>>2]|0;if(k)break;c[P>>2]=l+1}c[A>>2]=c[(c[(c[q>>2]|0)+16>>2]|0)+(l<<4)+12>>2]}while(0);b:while(1){if(!((c[z>>2]|0)!=0&(c[p>>2]|0)==0)){U=92;break}c[Q>>2]=c[(c[z>>2]|0)+4>>2];if(c[Q>>2]|0){c[P>>2]=0;c[O>>2]=(c[Q>>2]|0)+8;while(1){if((c[P>>2]|0)>=(c[c[Q>>2]>>2]|0))break;c[H>>2]=c[(c[O>>2]|0)+16>>2];if((c[(c[O>>2]|0)+20>>2]|0)!=0?(e[(c[(c[O>>2]|0)+20>>2]|0)+6>>1]&512|0)!=0:0){c[N>>2]=0;c[I>>2]=c[c[(c[O>>2]|0)+20>>2]>>2];c[J>>2]=0;while(1){if((c[J>>2]|0)>=(c[c[I>>2]>>2]|0))break;if(Xq(c[(c[(c[I>>2]|0)+4>>2]|0)+((c[J>>2]|0)*20|0)+8>>2]|0,c[x>>2]|0,c[w>>2]|0,c[E>>2]|0)|0){c[p>>2]=(c[p>>2]|0)+1;c[F>>2]=2;c[t>>2]=c[O>>2];b[(c[n>>2]|0)+32>>1]=c[J>>2];c[N>>2]=1}c[J>>2]=(c[J>>2]|0)+1}if(!((c[N>>2]|0)!=0|(c[w>>2]|0)==0))U=21}else U=21;c:do if((U|0)==21){U=0;if((c[E>>2]|0)!=0?(c[(c[H>>2]|0)+68>>2]|0)!=(c[A>>2]|0):0)break;if(c[w>>2]|0){if(c[(c[O>>2]|0)+12>>2]|0)l=c[(c[O>>2]|0)+12>>2]|0;else l=c[c[H>>2]>>2]|0;c[S>>2]=l;if(xc(c[S>>2]|0,c[w>>2]|0)|0)break}k=c[F>>2]|0;c[F>>2]=k+1;if(!k)c[t>>2]=c[O>>2];c[J>>2]=0;c[K>>2]=c[(c[H>>2]|0)+4>>2];while(1){if((c[J>>2]|0)>=(b[(c[H>>2]|0)+38>>1]|0))break c;if(!(xc(c[c[K>>2]>>2]|0,c[x>>2]|0)|0)){if((c[p>>2]|0)!=1)break;if((d[(c[O>>2]|0)+36>>0]&4|0)==0?(Yq(c[(c[O>>2]|0)+48>>2]|0,c[x>>2]|0)|0)==0:0)break}c[J>>2]=(c[J>>2]|0)+1;c[K>>2]=(c[K>>2]|0)+24}c[p>>2]=(c[p>>2]|0)+1;c[t>>2]=c[O>>2];if((c[J>>2]|0)==(b[(c[H>>2]|0)+36>>1]|0))l=-1;else l=(c[J>>2]&65535)<<16>>16;b[(c[n>>2]|0)+32>>1]=l}while(0);c[P>>2]=(c[P>>2]|0)+1;c[O>>2]=(c[O>>2]|0)+72}if(c[t>>2]|0){c[(c[n>>2]|0)+28>>2]=c[(c[t>>2]|0)+40>>2];c[(c[n>>2]|0)+44>>2]=c[(c[t>>2]|0)+16>>2];if(d[(c[t>>2]|0)+36>>0]&8){k=(c[n>>2]|0)+4|0;c[k>>2]=c[k>>2]|1048576}c[A>>2]=c[(c[(c[n>>2]|0)+44>>2]|0)+68>>2]}}if((c[E>>2]|0)==0&(c[w>>2]|0)!=0&(c[F>>2]|0)==0?(c[(c[m>>2]|0)+412>>2]|0)!=0:0){c[M>>2]=d[(c[m>>2]|0)+436>>0];if((c[M>>2]|0)!=109?(xc(17160,c[w>>2]|0)|0)==0:0){c[(c[n>>2]|0)+28>>2]=1;c[H>>2]=c[(c[m>>2]|0)+412>>2]}else U=50;do if((U|0)==50){U=0;if((c[M>>2]|0)!=108?(xc(17168,c[w>>2]|0)|0)==0:0){c[(c[n>>2]|0)+28>>2]=0;c[H>>2]=c[(c[m>>2]|0)+412>>2];break}c[H>>2]=0}while(0);if(c[H>>2]|0){c[A>>2]=c[(c[H>>2]|0)+68>>2];c[F>>2]=(c[F>>2]|0)+1;c[G>>2]=0;c[K>>2]=c[(c[H>>2]|0)+4>>2];while(1){if((c[G>>2]|0)>=(b[(c[H>>2]|0)+38>>1]|0))break;k=(xc(c[c[K>>2]>>2]|0,c[x>>2]|0)|0)==0;L=c[G>>2]|0;if(k){U=58;break}c[G>>2]=L+1;c[K>>2]=(c[K>>2]|0)+24}if((U|0)==58?(U=0,(L|0)==(b[(c[H>>2]|0)+36>>1]|0)):0)c[G>>2]=-1;if(((c[G>>2]|0)>=(b[(c[H>>2]|0)+38>>1]|0)?(Zq(c[x>>2]|0)|0)!=0:0)?(d[(c[H>>2]|0)+44>>0]&32|0)==0:0)c[G>>2]=-1;if((c[G>>2]|0)<(b[(c[H>>2]|0)+38>>1]|0)){c[p>>2]=(c[p>>2]|0)+1;l=c[n>>2]|0;do if((c[G>>2]|0)>=0){j=(c[G>>2]|0)>=32;if(!(c[l+28>>2]|0)){if(j)l=-1;else l=1<>2];k=(c[m>>2]|0)+428|0;c[k>>2]=c[k>>2]|l;break}else{if(j)l=-1;else l=1<>2];k=(c[m>>2]|0)+432|0;c[k>>2]=c[k>>2]|l;break}}else a[l+1>>0]=68;while(0);b[(c[n>>2]|0)+32>>1]=c[G>>2];c[(c[n>>2]|0)+44>>2]=c[H>>2];c[r>>2]=1}}}if(((c[p>>2]|0)==0&(c[F>>2]|0)==1&(c[t>>2]|0)!=0?(Zq(c[x>>2]|0)|0)!=0:0)?(d[(c[(c[t>>2]|0)+16>>2]|0)+44>>0]&32|0)==0:0){c[p>>2]=1;b[(c[n>>2]|0)+32>>1]=-1;a[(c[n>>2]|0)+1>>0]=68}k=c[(c[z>>2]|0)+8>>2]|0;c[I>>2]=k;d:do if((k|0)!=0&(c[w>>2]|0)==0&(c[p>>2]|0)==0){c[J>>2]=0;while(1){if((c[J>>2]|0)>=(c[c[I>>2]>>2]|0))break d;c[C>>2]=c[(c[(c[I>>2]|0)+4>>2]|0)+((c[J>>2]|0)*20|0)+4>>2];if((c[C>>2]|0)!=0?(xc(c[C>>2]|0,c[x>>2]|0)|0)==0:0){U=85;break b}c[J>>2]=(c[J>>2]|0)+1}}while(0);if(c[p>>2]|0)continue;c[z>>2]=c[(c[z>>2]|0)+16>>2];c[R>>2]=(c[R>>2]|0)+1}if((U|0)==85){c[T>>2]=c[(c[(c[I>>2]|0)+4>>2]|0)+((c[J>>2]|0)*20|0)>>2];if((e[(c[z>>2]|0)+28>>1]&1|0)==0?(c[(c[T>>2]|0)+4>>2]&2|0)!=0:0){k=c[m>>2]|0;c[y>>2]=c[C>>2];Se(k,17176,y);c[u>>2]=2;k=c[u>>2]|0;i=o;return k|0}Mq(c[m>>2]|0,c[I>>2]|0,c[J>>2]|0,c[n>>2]|0,1216,c[R>>2]|0);c[p>>2]=1;c[t>>2]=0}else if((U|0)==92){if((c[p>>2]|0)==0&(c[w>>2]|0)==0?(c[(c[n>>2]|0)+4>>2]&64|0)!=0:0){a[c[n>>2]>>0]=97;c[(c[n>>2]|0)+44>>2]=0;c[u>>2]=1;k=c[u>>2]|0;i=o;return k|0}if((c[p>>2]|0)!=1){c[B>>2]=(c[p>>2]|0)==0?17208:17224;do if(!(c[E>>2]|0)){C=c[m>>2]|0;B=c[B>>2]|0;if(c[w>>2]|0){f=c[w>>2]|0;k=c[x>>2]|0;c[y>>2]=B;c[y+4>>2]=f;c[y+8>>2]=k;Se(C,17264,y);break}else{k=c[x>>2]|0;c[y>>2]=B;c[y+4>>2]=k;Se(C,17280,y);break}}else{k=c[m>>2]|0;h=c[E>>2]|0;g=c[w>>2]|0;f=c[x>>2]|0;c[y>>2]=c[B>>2];c[y+4>>2]=h;c[y+8>>2]=g;c[y+12>>2]=f;Se(k,17248,y)}while(0);a[(c[m>>2]|0)+17>>0]=1;k=(c[v>>2]|0)+24|0;c[k>>2]=(c[k>>2]|0)+1}if((c[t>>2]|0)!=0?(b[(c[n>>2]|0)+32>>1]|0)>=0:0){g=b[(c[n>>2]|0)+32>>1]|0;c[s>>2]=g;c[s>>2]=(c[s>>2]|0)>=64?63:g;g=$E(1,0,c[s>>2]|0)|0;k=(c[t>>2]|0)+56|0;h=k;f=c[h+4>>2]|D;c[k>>2]=c[h>>2]|g;c[k+4>>2]=f}wn(c[q>>2]|0,c[(c[n>>2]|0)+12>>2]|0);c[(c[n>>2]|0)+12>>2]=0;wn(c[q>>2]|0,c[(c[n>>2]|0)+16>>2]|0);c[(c[n>>2]|0)+16>>2]=0;a[c[n>>2]>>0]=(c[r>>2]|0)!=0?62:154}if((c[p>>2]|0)!=1){c[u>>2]=2;k=c[u>>2]|0;i=o;return k|0}if((d[c[n>>2]>>0]|0)!=24)_q(c[m>>2]|0,c[n>>2]|0,c[A>>2]|0,c[(c[z>>2]|0)+4>>2]|0);while(1){k=(c[v>>2]|0)+20|0;c[k>>2]=(c[k>>2]|0)+1;if((c[v>>2]|0)==(c[z>>2]|0))break;c[v>>2]=c[(c[v>>2]|0)+16>>2]}c[u>>2]=1;k=c[u>>2]|0;i=o;return k|0}function Sq(a,b,d){a=a|0;b=b|0;d=d|0;var f=0,g=0,h=0,j=0,k=0;f=i;i=i+16|0;j=f;g=f+12|0;k=f+8|0;h=f+4|0;c[g>>2]=a;c[k>>2]=b;c[h>>2]=d;if(!((e[(c[k>>2]|0)+28>>1]|0)&16)){i=f;return}k=c[g>>2]|0;c[j>>2]=c[h>>2];Se(k,17112,j);i=f;return}function Tq(a){a=a|0;var b=0,e=0,f=0,g=0;b=i;i=i+16|0;e=b+12|0;g=b+8|0;f=b;c[g>>2]=a;h[f>>3]=-1.0;if((d[c[g>>2]>>0]|0|0)!=133){c[e>>2]=-1;g=c[e>>2]|0;i=b;return g|0}a=c[(c[g>>2]|0)+8>>2]|0;Lm(a,f,Mb(c[(c[g>>2]|0)+8>>2]|0)|0,1)|0;if(+h[f>>3]>1.0){c[e>>2]=-1;g=c[e>>2]|0;i=b;return g|0}else{c[e>>2]=~~(+h[f>>3]*1.0e3);g=c[e>>2]|0;i=b;return g|0}return 0}function Uq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=i;i=i+48|0;f=d+44|0;h=d+40|0;g=d+16|0;e=d;c[f>>2]=a;c[h>>2]=b;c[g+0>>2]=0;c[g+4>>2]=0;c[g+8>>2]=0;c[g+12>>2]=0;c[g+16>>2]=0;c[g+20>>2]=0;c[g>>2]=43;c[g+20>>2]=e;c[e>>2]=c[h>>2];c[e+4>>2]=0;c[e+8>>2]=0;rq(g,c[(c[f>>2]|0)+20>>2]|0)|0;if((c[e+4>>2]|0)>0){h=1;h=h&1;i=d;return h|0}h=(c[e+8>>2]|0)==0;h=h&1;i=d;return h|0}function Vq(a,b,d){a=a|0;b=b|0;d=d|0;var f=0,g=0,h=0,j=0,k=0;f=i;i=i+16|0;j=f;g=f+12|0;k=f+8|0;h=f+4|0;c[g>>2]=a;c[k>>2]=b;c[h>>2]=d;if(!((e[(c[k>>2]|0)+28>>1]|0)&4)){i=f;return}k=c[g>>2]|0;c[j>>2]=c[h>>2];Se(k,17072,j);i=f;return}function Wq(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0;e=i;i=i+32|0;k=e+16|0;j=e+12|0;f=e+8|0;h=e+4|0;g=e;c[k>>2]=a;c[j>>2]=b;if((d[c[j>>2]>>0]|0|0)!=154?(d[c[j>>2]>>0]|0|0)!=156:0){i=e;return 0}c[h>>2]=c[(c[k>>2]|0)+20>>2];c[g>>2]=c[c[h>>2]>>2];c[f>>2]=0;while(1){if((c[f>>2]|0)>=(c[c[g>>2]>>2]|0))break;if((c[(c[j>>2]|0)+28>>2]|0)==(c[(c[g>>2]|0)+8+((c[f>>2]|0)*72|0)+40>>2]|0))break;c[f>>2]=(c[f>>2]|0)+1}b=c[h>>2]|0;if((c[f>>2]|0)<(c[c[g>>2]>>2]|0)){a=b+4|0;c[a>>2]=(c[a>>2]|0)+1;i=e;return 0}else{a=b+8|0;c[a>>2]=(c[a>>2]|0)+1;i=e;return 0}return 0}function Xq(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;g=i;i=i+32|0;k=g+20|0;h=g+16|0;n=g+12|0;l=g+8|0;m=g+4|0;j=g;c[h>>2]=b;c[n>>2]=d;c[l>>2]=e;c[m>>2]=f;c[j>>2]=0;while(1){if(!(a[(c[h>>2]|0)+(c[j>>2]|0)>>0]|0))break;if((a[(c[h>>2]|0)+(c[j>>2]|0)>>0]|0)==46)break;c[j>>2]=(c[j>>2]|0)+1}do if(c[m>>2]|0){if((Lb(c[h>>2]|0,c[m>>2]|0,c[j>>2]|0)|0)==0?(a[(c[m>>2]|0)+(c[j>>2]|0)>>0]|0)==0:0)break;c[k>>2]=0;b=c[k>>2]|0;i=g;return b|0}while(0);c[h>>2]=(c[h>>2]|0)+((c[j>>2]|0)+1);c[j>>2]=0;while(1){if(!(a[(c[h>>2]|0)+(c[j>>2]|0)>>0]|0))break;if((a[(c[h>>2]|0)+(c[j>>2]|0)>>0]|0)==46)break;c[j>>2]=(c[j>>2]|0)+1}do if(c[l>>2]|0){if((Lb(c[h>>2]|0,c[l>>2]|0,c[j>>2]|0)|0)==0?(a[(c[l>>2]|0)+(c[j>>2]|0)>>0]|0)==0:0)break;c[k>>2]=0;b=c[k>>2]|0;i=g;return b|0}while(0);c[h>>2]=(c[h>>2]|0)+((c[j>>2]|0)+1);if((c[n>>2]|0)!=0?(xc(c[h>>2]|0,c[n>>2]|0)|0)!=0:0){c[k>>2]=0;b=c[k>>2]|0;i=g;return b|0}c[k>>2]=1;b=c[k>>2]|0;i=g;return b|0}function Yq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=i;i=i+16|0;d=e+12|0;f=e+8|0;h=e+4|0;g=e;c[f>>2]=a;c[h>>2]=b;a:do if(c[f>>2]|0){c[g>>2]=0;while(1){if((c[g>>2]|0)>=(c[(c[f>>2]|0)+4>>2]|0))break a;if(!(xc(c[(c[c[f>>2]>>2]|0)+(c[g>>2]<<3)>>2]|0,c[h>>2]|0)|0))break;c[g>>2]=(c[g>>2]|0)+1}c[d>>2]=1;a=c[d>>2]|0;i=e;return a|0}while(0);c[d>>2]=0;a=c[d>>2]|0;i=e;return a|0}function Zq(a){a=a|0;var b=0,d=0,e=0;d=i;i=i+16|0;b=d+4|0;e=d;c[e>>2]=a;do if(xc(c[e>>2]|0,17368)|0){if(!(xc(c[e>>2]|0,17288)|0)){c[b>>2]=1;break}if(!(xc(c[e>>2]|0,17376)|0)){c[b>>2]=1;break}else{c[b>>2]=0;break}}else c[b>>2]=1;while(0);i=d;return c[b>>2]|0}function _q(e,f,g,h){e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;p=i;i=i+48|0;l=p+36|0;j=p+32|0;s=p+28|0;q=p+24|0;t=p+20|0;k=p+16|0;m=p+12|0;r=p+8|0;n=p+4|0;o=p;c[l>>2]=e;c[j>>2]=f;c[s>>2]=g;c[q>>2]=h;c[t>>2]=c[c[l>>2]>>2];c[k>>2]=0;if(!(c[(c[t>>2]|0)+284>>2]|0)){i=p;return}c[n>>2]=Ve(c[c[l>>2]>>2]|0,c[s>>2]|0)|0;if((c[n>>2]|0)<0){i=p;return}a:do if((d[c[j>>2]>>0]|0)==62)c[k>>2]=c[(c[l>>2]|0)+412>>2];else{c[r>>2]=0;while(1){if((c[r>>2]|0)>=(c[c[q>>2]>>2]|0))break a;h=c[r>>2]|0;if((c[(c[j>>2]|0)+28>>2]|0)==(c[(c[q>>2]|0)+8+((c[r>>2]|0)*72|0)+40>>2]|0))break;c[r>>2]=h+1}c[k>>2]=c[(c[q>>2]|0)+8+(h*72|0)+16>>2]}while(0);c[o>>2]=b[(c[j>>2]|0)+32>>1];if(!(c[k>>2]|0)){i=p;return}do if((c[o>>2]|0)<0)if((b[(c[k>>2]|0)+36>>1]|0)>=0){c[m>>2]=c[(c[(c[k>>2]|0)+4>>2]|0)+((b[(c[k>>2]|0)+36>>1]|0)*24|0)>>2];break}else{c[m>>2]=17288;break}else c[m>>2]=c[(c[(c[k>>2]|0)+4>>2]|0)+((c[o>>2]|0)*24|0)>>2];while(0);if(2!=($q(c[l>>2]|0,c[c[k>>2]>>2]|0,c[m>>2]|0,c[n>>2]|0)|0)){i=p;return}a[c[j>>2]>>0]=101;i=p;return}function $q(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;m=i;i=i+48|0;f=m;h=m+36|0;j=m+32|0;k=m+28|0;n=m+24|0;o=m+20|0;l=m+16|0;g=m+12|0;c[h>>2]=a;c[j>>2]=b;c[k>>2]=d;c[n>>2]=e;c[o>>2]=c[c[h>>2]>>2];c[l>>2]=c[(c[(c[o>>2]|0)+16>>2]|0)+(c[n>>2]<<4)>>2];c[g>>2]=tb[c[(c[o>>2]|0)+284>>2]&1](c[(c[o>>2]|0)+288>>2]|0,20,c[j>>2]|0,c[k>>2]|0,c[l>>2]|0,c[(c[h>>2]|0)+492>>2]|0)|0;if((c[g>>2]|0)!=1){if(!((c[g>>2]|0)!=2&(c[g>>2]|0)!=0)){a=c[g>>2]|0;i=m;return a|0}bp(c[h>>2]|0);a=c[g>>2]|0;i=m;return a|0}e=c[h>>2]|0;if((c[n>>2]|0)!=0?1:(c[(c[o>>2]|0)+20>>2]|0)>2){b=c[j>>2]|0;a=c[k>>2]|0;c[f>>2]=c[l>>2];c[f+4>>2]=b;c[f+8>>2]=a;Se(e,17296,f)}else{a=c[k>>2]|0;c[f>>2]=c[j>>2];c[f+4>>2]=a;Se(e,17336,f)}c[(c[h>>2]|0)+12>>2]=23;a=c[g>>2]|0;i=m;return a|0}function ar(f,g){f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;n=i;i=i+48|0;j=n+44|0;p=n+40|0;o=n+36|0;r=n+32|0;l=n+28|0;t=n+24|0;h=n+20|0;s=n+16|0;m=n+12|0;k=n+8|0;q=n;c[p>>2]=f;c[o>>2]=g;if(!(c[(c[o>>2]|0)+52>>2]|0)){c[j>>2]=0;f=c[j>>2]|0;i=n;return f|0}if(!(c[(c[o>>2]|0)+48>>2]|0)){c[j>>2]=0;f=c[j>>2]|0;i=n;return f|0}c[t>>2]=c[o>>2];while(1){if(!(c[t>>2]|0))break;if((d[(c[t>>2]|0)+4>>0]|0|0)!=116?(d[(c[t>>2]|0)+4>>0]|0|0)!=119:0)break;c[t>>2]=c[(c[t>>2]|0)+52>>2]}if(!(c[t>>2]|0)){c[j>>2]=0;f=c[j>>2]|0;i=n;return f|0}c[s>>2]=c[(c[(c[o>>2]|0)+48>>2]|0)+4>>2];c[r>>2]=(c[c[(c[o>>2]|0)+48>>2]>>2]|0)-1;while(1){if((c[r>>2]|0)<0)break;if(c[(c[(c[s>>2]|0)+((c[r>>2]|0)*20|0)>>2]|0)+4>>2]&256)break;c[r>>2]=(c[r>>2]|0)+ -1}if((c[r>>2]|0)<0){c[j>>2]=0;f=c[j>>2]|0;i=n;return f|0}c[k>>2]=c[(c[p>>2]|0)+12>>2];c[h>>2]=c[c[k>>2]>>2];c[l>>2]=se(c[h>>2]|0,72,0)|0;if(!(c[l>>2]|0)){c[j>>2]=2;f=c[j>>2]|0;i=n;return f|0}c[q+0>>2]=0;c[q+4>>2]=0;c[m>>2]=bo(c[k>>2]|0,0,0,0,q,c[l>>2]|0,0,0)|0;if(!(c[m>>2]|0)){c[j>>2]=2;f=c[j>>2]|0;i=n;return f|0}else{r=(c[l>>2]|0)+0|0;q=(c[o>>2]|0)+0|0;p=r+72|0;do{c[r>>2]=c[q>>2];r=r+4|0;q=q+4|0}while((r|0)<(p|0));c[(c[o>>2]|0)+32>>2]=c[m>>2];f=c[k>>2]|0;f=eo(f,0,ho(c[h>>2]|0,116,0)|0)|0;c[c[o>>2]>>2]=f;a[(c[o>>2]|0)+4>>0]=119;c[(c[o>>2]|0)+36>>2]=0;c[(c[l>>2]|0)+40>>2]=0;c[(c[l>>2]|0)+44>>2]=0;c[(c[l>>2]|0)+48>>2]=0;c[(c[o>>2]|0)+52>>2]=0;c[(c[o>>2]|0)+56>>2]=0;f=(c[o>>2]|0)+6|0;b[f>>1]=(e[f>>1]|0)&-65;c[(c[(c[l>>2]|0)+52>>2]|0)+56>>2]=c[l>>2];c[(c[l>>2]|0)+60>>2]=0;c[(c[l>>2]|0)+64>>2]=0;c[j>>2]=0;f=c[j>>2]|0;i=n;return f|0}return 0}function br(f,g){f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0;D=i;i=i+160|0;l=D;z=D+148|0;Q=D+144|0;m=D+140|0;k=D+136|0;B=D+132|0;E=D+128|0;r=D+124|0;C=D+120|0;o=D+116|0;h=D+112|0;n=D+108|0;s=D+104|0;t=D+100|0;J=D+96|0;R=D+152|0;O=D+92|0;P=D+88|0;q=D+84|0;p=D+80|0;N=D+76|0;L=D+72|0;v=D+68|0;u=D+64|0;x=D+60|0;w=D+56|0;y=D+52|0;A=D+48|0;j=D+44|0;F=D+40|0;I=D+36|0;G=D+32|0;K=D+24|0;M=D+16|0;H=D+12|0;c[Q>>2]=f;c[m>>2]=g;c[k>>2]=c[(c[Q>>2]|0)+12>>2];c[n>>2]=c[c[k>>2]>>2];b[R>>1]=b[(c[m>>2]|0)+6>>1]|0;f=(c[m>>2]|0)+6|0;b[f>>1]=e[f>>1]|16;if(a[(c[n>>2]|0)+64>>0]|0){c[z>>2]=2;f=c[z>>2]|0;i=D;return f|0}if((c[(c[m>>2]|0)+32>>2]|0)!=0?(e[R>>1]&16|0)==0:0){c[C>>2]=c[(c[m>>2]|0)+32>>2];c[o>>2]=c[c[m>>2]>>2];f=c[k>>2]|0;mo(f,c[(dr(c[m>>2]|0)|0)+68>>2]|0,0);Xp(c[k>>2]|0,c[C>>2]|0);c[B>>2]=0;c[h>>2]=(c[C>>2]|0)+8;a:while(1){if((c[B>>2]|0)>=(c[c[C>>2]>>2]|0)){P=33;break}if(!((d[(c[h>>2]|0)+37>>0]|0)>>>3&1)){g=c[Q>>2]|0;if(c[(c[h>>2]|0)+16>>2]|0){P=10;break}if(er(g,c[h>>2]|0)|0){P=12;break}do if(!(c[(c[h>>2]|0)+16>>2]|0)){if(!(c[(c[h>>2]|0)+8>>2]|0)){c[P>>2]=c[(c[h>>2]|0)+20>>2];oq(c[Q>>2]|0,c[P>>2]|0)|0;f=se(c[n>>2]|0,76,0)|0;c[O>>2]=f;c[(c[h>>2]|0)+16>>2]=f;if(!(c[O>>2]|0)){P=16;break a}b[(c[O>>2]|0)+40>>1]=1;f=c[n>>2]|0;c[l>>2]=c[O>>2];f=Te(f,17384,l)|0;c[c[O>>2]>>2]=f;while(1){if(!(c[(c[P>>2]|0)+52>>2]|0))break;c[P>>2]=c[(c[P>>2]|0)+52>>2]}_p(c[k>>2]|0,c[c[P>>2]>>2]|0,(c[O>>2]|0)+38|0,(c[O>>2]|0)+4|0)|0;b[(c[O>>2]|0)+36>>1]=-1;b[(c[O>>2]|0)+28>>1]=200;f=(c[O>>2]|0)+44|0;a[f>>0]=d[f>>0]|2;break}f=np(c[k>>2]|0,0,c[h>>2]|0)|0;c[O>>2]=f;c[(c[h>>2]|0)+16>>2]=f;if(!(c[O>>2]|0)){P=22;break a}if((e[(c[O>>2]|0)+40>>1]|0)==65535){P=24;break a}f=(c[O>>2]|0)+40|0;b[f>>1]=(b[f>>1]|0)+1<<16>>16;if((c[(c[O>>2]|0)+12>>2]|0)==0?(d[(c[O>>2]|0)+44>>0]&16|0)==0:0)break;if(Qp(c[k>>2]|0,c[O>>2]|0)|0){P=28;break a}f=Wp(c[n>>2]|0,c[(c[O>>2]|0)+12>>2]|0,0)|0;c[(c[h>>2]|0)+20>>2]=f;oq(c[Q>>2]|0,c[(c[h>>2]|0)+20>>2]|0)|0}while(0);if(fr(c[k>>2]|0,c[h>>2]|0)|0){P=31;break}}c[B>>2]=(c[B>>2]|0)+1;c[h>>2]=(c[h>>2]|0)+72}if((P|0)==10){cr(g,c[m>>2]|0);c[z>>2]=1;f=c[z>>2]|0;i=D;return f|0}else if((P|0)==12){c[z>>2]=2;f=c[z>>2]|0;i=D;return f|0}else if((P|0)==16){c[z>>2]=2;f=c[z>>2]|0;i=D;return f|0}else if((P|0)==22){c[z>>2]=2;f=c[z>>2]|0;i=D;return f|0}else if((P|0)==24){f=c[k>>2]|0;c[l>>2]=c[c[O>>2]>>2];Se(f,17400,l);c[(c[h>>2]|0)+16>>2]=0;c[z>>2]=2;f=c[z>>2]|0;i=D;return f|0}else if((P|0)==28){c[z>>2]=2;f=c[z>>2]|0;i=D;return f|0}else if((P|0)==31){c[z>>2]=2;f=c[z>>2]|0;i=D;return f|0}else if((P|0)==33){if((d[(c[n>>2]|0)+64>>0]|0)==0?(gr(c[k>>2]|0,c[m>>2]|0)|0)==0:0){c[r>>2]=0;while(1){if((c[r>>2]|0)>=(c[c[o>>2]>>2]|0))break;c[s>>2]=c[(c[(c[o>>2]|0)+4>>2]|0)+((c[r>>2]|0)*20|0)>>2];if((d[c[s>>2]>>0]|0)==116)break;if((d[c[s>>2]>>0]|0)==122?(d[c[(c[s>>2]|0)+16>>2]>>0]|0)==116:0)break;c[r>>2]=(c[r>>2]|0)+1}if((c[r>>2]|0)<(c[c[o>>2]>>2]|0)){c[q>>2]=c[(c[o>>2]|0)+4>>2];c[p>>2]=0;c[N>>2]=c[(c[c[k>>2]>>2]|0)+24>>2];if(c[N>>2]&32)N=(c[N>>2]&64|0)==0;else N=0;c[L>>2]=N&1;c[r>>2]=0;while(1){if((c[r>>2]|0)>=(c[c[o>>2]>>2]|0))break;c[s>>2]=c[(c[q>>2]|0)+((c[r>>2]|0)*20|0)>>2];c[t>>2]=c[(c[s>>2]|0)+16>>2];do if((d[c[s>>2]>>0]|0)!=116){if((d[c[s>>2]>>0]|0)==122?(d[c[t>>2]>>0]|0)==116:0){P=53;break}c[p>>2]=eo(c[k>>2]|0,c[p>>2]|0,c[(c[q>>2]|0)+((c[r>>2]|0)*20|0)>>2]|0)|0;if(c[p>>2]|0){c[(c[(c[p>>2]|0)+4>>2]|0)+(((c[c[p>>2]>>2]|0)-1|0)*20|0)+4>>2]=c[(c[q>>2]|0)+((c[r>>2]|0)*20|0)+4>>2];c[(c[(c[p>>2]|0)+4>>2]|0)+(((c[c[p>>2]>>2]|0)-1|0)*20|0)+8>>2]=c[(c[q>>2]|0)+((c[r>>2]|0)*20|0)+8>>2];c[(c[q>>2]|0)+((c[r>>2]|0)*20|0)+4>>2]=0;c[(c[q>>2]|0)+((c[r>>2]|0)*20|0)+8>>2]=0}c[(c[q>>2]|0)+((c[r>>2]|0)*20|0)>>2]=0}else P=53;while(0);do if((P|0)==53){P=0;c[v>>2]=0;c[u>>2]=0;if((d[c[s>>2]>>0]|0)==122)c[u>>2]=c[(c[(c[s>>2]|0)+12>>2]|0)+8>>2];c[B>>2]=0;c[h>>2]=(c[C>>2]|0)+8;while(1){if((c[B>>2]|0)>=(c[c[C>>2]>>2]|0))break;c[x>>2]=c[(c[h>>2]|0)+16>>2];c[w>>2]=c[(c[h>>2]|0)+20>>2];c[y>>2]=c[(c[h>>2]|0)+12>>2];c[A>>2]=0;if(!(c[y>>2]|0))c[y>>2]=c[c[x>>2]>>2];if(a[(c[n>>2]|0)+64>>0]|0)break;if((c[w>>2]|0)!=0?(e[(c[w>>2]|0)+6>>1]&512|0)!=0:0)P=67;else P=62;do if((P|0)==62){P=0;c[w>>2]=0;if((c[u>>2]|0)!=0?(xc(c[u>>2]|0,c[y>>2]|0)|0)!=0:0)break;c[j>>2]=Ve(c[n>>2]|0,c[(c[x>>2]|0)+68>>2]|0)|0;if((c[j>>2]|0)>=0)N=c[(c[(c[n>>2]|0)+16>>2]|0)+(c[j>>2]<<4)>>2]|0;else N=17440;c[A>>2]=N;P=67}while(0);b:do if((P|0)==67){P=0;c[E>>2]=0;while(1){if((c[E>>2]|0)>=(b[(c[x>>2]|0)+38>>1]|0))break b;c[F>>2]=c[(c[(c[x>>2]|0)+4>>2]|0)+((c[E>>2]|0)*24|0)>>2];if(!((c[u>>2]|0)!=0&(c[w>>2]|0)!=0?(Xq(c[(c[(c[c[w>>2]>>2]|0)+4>>2]|0)+((c[E>>2]|0)*20|0)+8>>2]|0,0,c[u>>2]|0,0)|0)==0:0))P=71;do if((P|0)==71){P=0;if(d[(c[(c[x>>2]|0)+4>>2]|0)+((c[E>>2]|0)*24|0)+23>>0]&2)break;c[v>>2]=1;if((c[B>>2]|0)>0&(c[u>>2]|0)==0){if((d[(c[h>>2]|0)+36>>0]&4|0)!=0?(hr(c[C>>2]|0,c[B>>2]|0,c[F>>2]|0,0,0)|0)!=0:0)break;if((ir(c[(c[h>>2]|0)+48>>2]|0,c[F>>2]|0)|0)>=0)break}c[t>>2]=ho(c[n>>2]|0,27,c[F>>2]|0)|0;c[I>>2]=c[F>>2];c[G>>2]=0;do if(c[L>>2]|0)P=78;else{if((c[c[C>>2]>>2]|0)>1){P=78;break}c[J>>2]=c[t>>2]}while(0);do if((P|0)==78){P=0;c[M>>2]=ho(c[n>>2]|0,27,c[y>>2]|0)|0;c[J>>2]=Rn(c[k>>2]|0,122,c[M>>2]|0,c[t>>2]|0,0)|0;if(c[A>>2]|0){c[M>>2]=ho(c[n>>2]|0,27,c[A>>2]|0)|0;c[J>>2]=Rn(c[k>>2]|0,122,c[M>>2]|0,c[J>>2]|0,0)|0}if(!(c[L>>2]|0))break;f=c[n>>2]|0;R=c[F>>2]|0;c[l>>2]=c[y>>2];c[l+4>>2]=R;c[I>>2]=Te(f,17448,l)|0;c[G>>2]=c[I>>2]}while(0);c[p>>2]=eo(c[k>>2]|0,c[p>>2]|0,c[J>>2]|0)|0;c[K>>2]=c[I>>2];c[K+4>>2]=Mb(c[I>>2]|0)|0;fo(c[k>>2]|0,c[p>>2]|0,K,0);do if(c[p>>2]|0){if(!(e[(c[m>>2]|0)+6>>1]&512))break;c[H>>2]=(c[(c[p>>2]|0)+4>>2]|0)+(((c[c[p>>2]>>2]|0)-1|0)*20|0);N=c[n>>2]|0;if(c[w>>2]|0){f=ne(N,c[(c[(c[c[w>>2]>>2]|0)+4>>2]|0)+((c[E>>2]|0)*20|0)+8>>2]|0)|0;c[(c[H>>2]|0)+8>>2]=f}else{R=c[y>>2]|0;f=c[I>>2]|0;c[l>>2]=c[A>>2];c[l+4>>2]=R;c[l+8>>2]=f;f=Te(N,17456,l)|0;c[(c[H>>2]|0)+8>>2]=f}f=(c[H>>2]|0)+13|0;a[f>>0]=a[f>>0]&-3|2}while(0);Xb(c[n>>2]|0,c[G>>2]|0)}while(0);c[E>>2]=(c[E>>2]|0)+1}}while(0);c[B>>2]=(c[B>>2]|0)+1;c[h>>2]=(c[h>>2]|0)+72}if(!(c[v>>2]|0)){N=c[k>>2]|0;if(c[u>>2]|0){c[l>>2]=c[u>>2];Se(N,17472,l);break}else{Se(N,17496,l);break}}}while(0);c[r>>2]=(c[r>>2]|0)+1}sn(c[n>>2]|0,c[o>>2]|0);c[c[m>>2]>>2]=c[p>>2]}if((c[c[m>>2]>>2]|0)!=0?(c[c[c[m>>2]>>2]>>2]|0)>(c[(c[n>>2]|0)+96>>2]|0):0)Se(c[k>>2]|0,17520,l);c[z>>2]=0;f=c[z>>2]|0;i=D;return f|0}c[z>>2]=2;f=c[z>>2]|0;i=D;return f|0}}c[z>>2]=1;f=c[z>>2]|0;i=D;return f|0}function cr(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=i;i=i+16|0;h=d+12|0;g=d+8|0;f=d+4|0;e=d;c[h>>2]=a;c[g>>2]=b;c[f>>2]=c[(c[h>>2]|0)+12>>2];c[e>>2]=c[(dr(c[g>>2]|0)|0)+68>>2];if(!(c[e>>2]|0)){i=d;return}c[(c[f>>2]|0)+532>>2]=c[(c[e>>2]|0)+4>>2];i=d;return}function dr(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;while(1){a=c[d>>2]|0;if(!(c[(c[d>>2]|0)+56>>2]|0))break;c[d>>2]=c[a+56>>2]}i=b;return a|0}function er(f,g){f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;o=i;i=i+80|0;r=o;n=o+72|0;l=o+68|0;y=o+64|0;k=o+60|0;z=o+56|0;j=o+52|0;u=o+48|0;q=o+44|0;t=o+40|0;m=o+36|0;p=o+32|0;s=o+28|0;h=o+24|0;x=o+20|0;w=o+16|0;v=o+12|0;c[l>>2]=f;c[y>>2]=g;c[k>>2]=c[(c[l>>2]|0)+12>>2];c[z>>2]=c[c[k>>2]>>2];c[j>>2]=vr(c[(c[k>>2]|0)+532>>2]|0,c[y>>2]|0,u)|0;if(c[j>>2]|0){if(c[(c[j>>2]|0)+12>>2]|0){z=c[k>>2]|0;f=c[(c[j>>2]|0)+12>>2]|0;c[r>>2]=c[c[j>>2]>>2];Se(z,f,r);c[n>>2]=1;f=c[n>>2]|0;i=o;return f|0}f=se(c[z>>2]|0,76,0)|0;c[q>>2]=f;c[(c[y>>2]|0)+16>>2]=f;if(!(c[q>>2]|0)){c[n>>2]=2;f=c[n>>2]|0;i=o;return f|0}b[(c[q>>2]|0)+40>>1]=1;f=ne(c[z>>2]|0,c[c[j>>2]>>2]|0)|0;c[c[q>>2]>>2]=f;b[(c[q>>2]|0)+36>>1]=-1;b[(c[q>>2]|0)+28>>1]=200;f=(c[q>>2]|0)+44|0;a[f>>0]=d[f>>0]|2;f=Wp(c[z>>2]|0,c[(c[j>>2]|0)+8>>2]|0,0)|0;c[(c[y>>2]|0)+20>>2]=f;if(a[(c[z>>2]|0)+64>>0]|0){c[n>>2]=7;f=c[n>>2]|0;i=o;return f|0}c[m>>2]=c[(c[y>>2]|0)+20>>2];if((d[(c[m>>2]|0)+4>>0]|0)==116)g=1;else g=(d[(c[m>>2]|0)+4>>0]|0)==115;c[s>>2]=g&1;a:do if(c[s>>2]|0){c[w>>2]=c[(c[(c[y>>2]|0)+20>>2]|0)+32>>2];c[x>>2]=0;while(1){if((c[x>>2]|0)>=(c[c[w>>2]>>2]|0))break a;c[v>>2]=(c[w>>2]|0)+8+((c[x>>2]|0)*72|0);if(((c[(c[v>>2]|0)+4>>2]|0)==0?(c[(c[v>>2]|0)+8>>2]|0)!=0:0)?0==(xc(c[(c[v>>2]|0)+8>>2]|0,c[c[j>>2]>>2]|0)|0):0){c[(c[v>>2]|0)+16>>2]=c[q>>2];f=(c[v>>2]|0)+37|0;a[f>>0]=a[f>>0]&-9|8;f=(c[q>>2]|0)+40|0;b[f>>1]=(b[f>>1]|0)+1<<16>>16;f=(c[m>>2]|0)+6|0;b[f>>1]=e[f>>1]|2048}c[x>>2]=(c[x>>2]|0)+1}}while(0);if((e[(c[q>>2]|0)+40>>1]|0)>2){f=c[k>>2]|0;c[r>>2]=c[c[j>>2]>>2];Se(f,17752,r);c[n>>2]=1;f=c[n>>2]|0;i=o;return f|0}c[(c[j>>2]|0)+12>>2]=17800;c[h>>2]=c[(c[k>>2]|0)+532>>2];c[(c[k>>2]|0)+532>>2]=c[u>>2];u=c[m>>2]|0;if(c[s>>2]|0)u=c[u+52>>2]|0;oq(c[l>>2]|0,u)|0;c[p>>2]=c[m>>2];while(1){u=c[p>>2]|0;if(!(c[(c[p>>2]|0)+52>>2]|0))break;c[p>>2]=c[u+52>>2]}c[t>>2]=c[u>>2];do if(c[(c[j>>2]|0)+4>>2]|0){if((c[c[t>>2]>>2]|0)==(c[c[(c[j>>2]|0)+4>>2]>>2]|0)){c[t>>2]=c[(c[j>>2]|0)+4>>2];break}f=c[k>>2]|0;g=c[c[t>>2]>>2]|0;z=c[c[(c[j>>2]|0)+4>>2]>>2]|0;c[r>>2]=c[c[j>>2]>>2];c[r+4>>2]=g;c[r+8>>2]=z;Se(f,17824,r);c[(c[k>>2]|0)+532>>2]=c[h>>2];c[n>>2]=1;f=c[n>>2]|0;i=o;return f|0}while(0);_p(c[k>>2]|0,c[t>>2]|0,(c[q>>2]|0)+38|0,(c[q>>2]|0)+4|0)|0;if(c[s>>2]|0){p=(c[j>>2]|0)+12|0;if(e[(c[m>>2]|0)+6>>1]&2048)c[p>>2]=17864;else c[p>>2]=17904;oq(c[l>>2]|0,c[m>>2]|0)|0}c[(c[j>>2]|0)+12>>2]=0;c[(c[k>>2]|0)+532>>2]=c[h>>2]}c[n>>2]=0;f=c[n>>2]|0;i=o;return f|0}function fr(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;f=i;i=i+32|0;l=f;e=f+28|0;j=f+24|0;h=f+20|0;m=f+16|0;k=f+12|0;g=f+8|0;c[j>>2]=b;c[h>>2]=d;do if((c[(c[h>>2]|0)+16>>2]|0)!=0?(c[(c[h>>2]|0)+64>>2]|0)!=0:0){c[m>>2]=c[(c[h>>2]|0)+16>>2];c[k>>2]=c[(c[h>>2]|0)+64>>2];c[g>>2]=c[(c[m>>2]|0)+8>>2];while(1){if(!(c[g>>2]|0))break;if(!(xc(c[c[g>>2]>>2]|0,c[k>>2]|0)|0))break;c[g>>2]=c[(c[g>>2]|0)+20>>2]}if(c[g>>2]|0){c[(c[h>>2]|0)+68>>2]=c[g>>2];break}b=c[j>>2]|0;c[l>>2]=c[k>>2];c[l+4>>2]=0;Se(b,17728,l);a[(c[j>>2]|0)+17>>0]=1;c[e>>2]=1;b=c[e>>2]|0;i=f;return b|0}while(0);c[e>>2]=0;b=c[e>>2]|0;i=f;return b|0}function gr(a,e){a=a|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;f=i;i=i+80|0;h=f;j=f+76|0;g=f+72|0;l=f+68|0;m=f+64|0;p=f+60|0;q=f+56|0;v=f+52|0;x=f+48|0;w=f+44|0;s=f+40|0;r=f+36|0;t=f+32|0;n=f+28|0;o=f+24|0;u=f+20|0;k=f+16|0;z=f+12|0;A=f+8|0;y=f+4|0;c[g>>2]=a;c[l>>2]=e;c[m>>2]=c[(c[l>>2]|0)+32>>2];c[v>>2]=(c[m>>2]|0)+8;c[x>>2]=(c[v>>2]|0)+72;c[p>>2]=0;a:while(1){if((c[p>>2]|0)>=((c[c[m>>2]>>2]|0)-1|0)){l=28;break}c[w>>2]=c[(c[v>>2]|0)+16>>2];c[s>>2]=c[(c[x>>2]|0)+16>>2];b:do if(!((c[w>>2]|0)==0|(c[s>>2]|0)==0)){c[r>>2]=(d[(c[x>>2]|0)+36>>0]&32|0)!=0&1;c:do if(d[(c[x>>2]|0)+36>>0]&4){if(c[(c[x>>2]|0)+44>>2]|0){l=7;break a}if(c[(c[x>>2]|0)+48>>2]|0){l=7;break a}c[q>>2]=0;while(1){if((c[q>>2]|0)>=(b[(c[s>>2]|0)+38>>1]|0))break c;c[t>>2]=c[(c[(c[s>>2]|0)+4>>2]|0)+((c[q>>2]|0)*24|0)>>2];if(hr(c[m>>2]|0,(c[p>>2]|0)+1|0,c[t>>2]|0,n,o)|0)kr(c[g>>2]|0,c[m>>2]|0,c[n>>2]|0,c[o>>2]|0,(c[p>>2]|0)+1|0,c[q>>2]|0,c[r>>2]|0,(c[l>>2]|0)+36|0);c[q>>2]=(c[q>>2]|0)+1}}while(0);if((c[(c[x>>2]|0)+44>>2]|0)!=0?(c[(c[x>>2]|0)+48>>2]|0)!=0:0){l=15;break a}if(c[(c[x>>2]|0)+44>>2]|0){if(c[r>>2]|0)lr(c[(c[x>>2]|0)+44>>2]|0,c[(c[x>>2]|0)+40>>2]|0);a=mr(c[c[g>>2]>>2]|0,c[(c[l>>2]|0)+36>>2]|0,c[(c[x>>2]|0)+44>>2]|0)|0;c[(c[l>>2]|0)+36>>2]=a;c[(c[x>>2]|0)+44>>2]=0}if(c[(c[x>>2]|0)+48>>2]|0){c[u>>2]=c[(c[x>>2]|0)+48>>2];c[q>>2]=0;while(1){if((c[q>>2]|0)>=(c[(c[u>>2]|0)+4>>2]|0))break b;c[k>>2]=c[(c[c[u>>2]>>2]|0)+(c[q>>2]<<3)>>2];c[y>>2]=jr(c[s>>2]|0,c[k>>2]|0)|0;if((c[y>>2]|0)<0){l=25;break a}if(!(hr(c[m>>2]|0,(c[p>>2]|0)+1|0,c[k>>2]|0,z,A)|0)){l=25;break a}kr(c[g>>2]|0,c[m>>2]|0,c[z>>2]|0,c[A>>2]|0,(c[p>>2]|0)+1|0,c[y>>2]|0,c[r>>2]|0,(c[l>>2]|0)+36|0);c[q>>2]=(c[q>>2]|0)+1}}}while(0);c[p>>2]=(c[p>>2]|0)+1;c[x>>2]=(c[x>>2]|0)+72;c[v>>2]=(c[v>>2]|0)+72}if((l|0)==7){a=c[g>>2]|0;c[h>>2]=0;Se(a,17552,h);c[j>>2]=1;a=c[j>>2]|0;i=f;return a|0}else if((l|0)==15){Se(c[g>>2]|0,17608,h);c[j>>2]=1;a=c[j>>2]|0;i=f;return a|0}else if((l|0)==25){a=c[g>>2]|0;c[h>>2]=c[k>>2];Se(a,17664,h);c[j>>2]=1;a=c[j>>2]|0;i=f;return a|0}else if((l|0)==28){c[j>>2]=0;a=c[j>>2]|0;i=f;return a|0}return 0}function hr(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;j=i;i=i+32|0;o=j+28|0;g=j+24|0;q=j+20|0;p=j+16|0;l=j+12|0;n=j+8|0;k=j+4|0;m=j;c[g>>2]=a;c[q>>2]=b;c[p>>2]=d;c[l>>2]=e;c[n>>2]=f;c[k>>2]=0;while(1){if((c[k>>2]|0)>=(c[q>>2]|0)){h=8;break}c[m>>2]=jr(c[(c[g>>2]|0)+8+((c[k>>2]|0)*72|0)+16>>2]|0,c[p>>2]|0)|0;if((c[m>>2]|0)>=0)break;c[k>>2]=(c[k>>2]|0)+1}if((h|0)==8){c[o>>2]=0;a=c[o>>2]|0;i=j;return a|0}if(c[l>>2]|0){c[c[l>>2]>>2]=c[k>>2];c[c[n>>2]>>2]=c[m>>2]}c[o>>2]=1;a=c[o>>2]|0;i=j;return a|0}function ir(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=i;i=i+16|0;e=d+12|0;f=d+8|0;h=d+4|0;g=d;c[f>>2]=a;c[h>>2]=b;if(!(c[f>>2]|0)){c[e>>2]=-1;a=c[e>>2]|0;i=d;return a|0}c[g>>2]=0;while(1){if((c[g>>2]|0)>=(c[(c[f>>2]|0)+4>>2]|0)){f=8;break}a=(xc(c[(c[c[f>>2]>>2]|0)+(c[g>>2]<<3)>>2]|0,c[h>>2]|0)|0)==0;b=c[g>>2]|0;if(a){f=6;break}c[g>>2]=b+1}if((f|0)==6){c[e>>2]=b;a=c[e>>2]|0;i=d;return a|0}else if((f|0)==8){c[e>>2]=-1;a=c[e>>2]|0;i=d;return a|0}return 0}function jr(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;f=i;i=i+16|0;e=f+12|0;g=f+8|0;j=f+4|0;h=f;c[g>>2]=a;c[j>>2]=d;c[h>>2]=0;while(1){if((c[h>>2]|0)>=(b[(c[g>>2]|0)+38>>1]|0)){g=6;break}a=(xc(c[(c[(c[g>>2]|0)+4>>2]|0)+((c[h>>2]|0)*24|0)>>2]|0,c[j>>2]|0)|0)==0;d=c[h>>2]|0;if(a){g=4;break}c[h>>2]=d+1}if((g|0)==4){c[e>>2]=d;a=c[e>>2]|0;i=f;return a|0}else if((g|0)==6){c[e>>2]=-1;a=c[e>>2]|0;i=f;return a|0}return 0}function kr(a,d,e,f,g,h,j,k){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;p=i;i=i+48|0;s=p+44|0;v=p+40|0;x=p+36|0;w=p+32|0;u=p+28|0;t=p+24|0;q=p+20|0;l=p+16|0;n=p+12|0;r=p+8|0;o=p+4|0;m=p;c[s>>2]=a;c[v>>2]=d;c[x>>2]=e;c[w>>2]=f;c[u>>2]=g;c[t>>2]=h;c[q>>2]=j;c[l>>2]=k;c[n>>2]=c[c[s>>2]>>2];c[r>>2]=ur(c[n>>2]|0,c[v>>2]|0,c[x>>2]|0,c[w>>2]|0)|0;c[o>>2]=ur(c[n>>2]|0,c[v>>2]|0,c[u>>2]|0,c[t>>2]|0)|0;c[m>>2]=Rn(c[s>>2]|0,79,c[r>>2]|0,c[o>>2]|0,0)|0;if(!((c[m>>2]|0)!=0&(c[q>>2]|0)!=0)){v=c[n>>2]|0;x=c[l>>2]|0;x=c[x>>2]|0;w=c[m>>2]|0;w=mr(v,x,w)|0;x=c[l>>2]|0;c[x>>2]=w;i=p;return}v=(c[m>>2]|0)+4|0;c[v>>2]=c[v>>2]|1;b[(c[m>>2]|0)+36>>1]=c[(c[o>>2]|0)+28>>2];v=c[n>>2]|0;x=c[l>>2]|0;x=c[x>>2]|0;w=c[m>>2]|0;w=mr(v,x,w)|0;x=c[l>>2]|0;c[x>>2]=w;i=p;return}function lr(a,d){a=a|0;d=d|0;var e=0,f=0,g=0;e=i;i=i+16|0;f=e+4|0;g=e;c[f>>2]=a;c[g>>2]=d;while(1){if(!(c[f>>2]|0))break;a=(c[f>>2]|0)+4|0;c[a>>2]=c[a>>2]|1;b[(c[f>>2]|0)+36>>1]=c[g>>2];lr(c[(c[f>>2]|0)+12>>2]|0,c[g>>2]|0);c[f>>2]=c[(c[f>>2]|0)+16>>2]}i=e;return}function mr(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;j=i;i=i+32|0;f=j+16|0;g=j+12|0;e=j+8|0;k=j+4|0;h=j;c[g>>2]=a;c[e>>2]=b;c[k>>2]=d;d=c[k>>2]|0;if(!(c[e>>2]|0)){c[f>>2]=d;a=c[f>>2]|0;i=j;return a|0}b=c[e>>2]|0;if(!d){c[f>>2]=b;a=c[f>>2]|0;i=j;return a|0}if((nr(b)|0)==0?(nr(c[k>>2]|0)|0)==0:0){c[h>>2]=or(c[g>>2]|0,72,0,0)|0;pr(c[g>>2]|0,c[h>>2]|0,c[e>>2]|0,c[k>>2]|0);c[f>>2]=c[h>>2];a=c[f>>2]|0;i=j;return a|0}wn(c[g>>2]|0,c[e>>2]|0);wn(c[g>>2]|0,c[k>>2]|0);c[f>>2]=or(c[g>>2]|0,132,10152,0)|0;a=c[f>>2]|0;i=j;return a|0}function nr(a){a=a|0;var b=0,d=0,e=0,f=0;d=i;i=i+16|0;b=d+8|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=0;do if(!(c[(c[f>>2]|0)+4>>2]&1))if(yq(c[f>>2]|0,e)|0){c[b>>2]=(c[e>>2]|0)==0&1;break}else{c[b>>2]=0;break}else c[b>>2]=0;while(0);i=d;return c[b>>2]|0}function or(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;j=i;i=i+32|0;q=j+28|0;p=j+24|0;l=j+20|0;n=j+16|0;o=j+12|0;h=j+8|0;k=j+4|0;m=j;c[q>>2]=d;c[p>>2]=e;c[l>>2]=f;c[n>>2]=g;c[h>>2]=0;c[k>>2]=0;do if(c[l>>2]|0){if(((c[p>>2]|0)==132?(c[c[l>>2]>>2]|0)!=0:0)?(Ag(c[c[l>>2]>>2]|0,k)|0)!=0:0)break;c[h>>2]=(c[(c[l>>2]|0)+4>>2]|0)+1}while(0);c[o>>2]=se(c[q>>2]|0,48+(c[h>>2]|0)|0,0)|0;if(!(c[o>>2]|0)){d=c[o>>2]|0;i=j;return d|0}a[c[o>>2]>>0]=c[p>>2];b[(c[o>>2]|0)+34>>1]=-1;do if(c[l>>2]|0){g=c[o>>2]|0;if(!(c[h>>2]|0)){d=g+4|0;c[d>>2]=c[d>>2]|1024;c[(c[o>>2]|0)+8>>2]=c[k>>2];break}c[(c[o>>2]|0)+8>>2]=g+48;if(c[(c[l>>2]|0)+4>>2]|0)dF(c[(c[o>>2]|0)+8>>2]|0,c[c[l>>2]>>2]|0,c[(c[l>>2]|0)+4>>2]|0)|0;a[(c[(c[o>>2]|0)+8>>2]|0)+(c[(c[l>>2]|0)+4>>2]|0)>>0]=0;if(((c[n>>2]|0)!=0&(c[h>>2]|0)>=3?(d=a[c[c[l>>2]>>2]>>0]|0,c[m>>2]=d,(d|0)==39|(c[m>>2]|0)==34|(c[m>>2]|0)==91|(c[m>>2]|0)==96):0)?(sm(c[(c[o>>2]|0)+8>>2]|0)|0,(c[m>>2]|0)==34):0){d=(c[o>>2]|0)+4|0;c[d>>2]=c[d>>2]|64}}while(0);c[(c[o>>2]|0)+24>>2]=1;d=c[o>>2]|0;i=j;return d|0}function pr(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;f=i;i=i+16|0;h=f+12|0;k=f+8|0;j=f+4|0;g=f;c[h>>2]=a;c[k>>2]=b;c[j>>2]=d;c[g>>2]=e;if(!(c[k>>2]|0)){wn(c[h>>2]|0,c[j>>2]|0);wn(c[h>>2]|0,c[g>>2]|0);i=f;return}if(c[g>>2]|0){c[(c[k>>2]|0)+16>>2]=c[g>>2];a=(c[k>>2]|0)+4|0;c[a>>2]=c[a>>2]|256&c[(c[g>>2]|0)+4>>2]}if(c[j>>2]|0){c[(c[k>>2]|0)+12>>2]=c[j>>2];a=(c[k>>2]|0)+4|0;c[a>>2]=c[a>>2]|256&c[(c[j>>2]|0)+4>>2]}qr(c[k>>2]|0);i=f;return}function qr(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+16|0;d=b+4|0;e=b;c[d>>2]=a;c[e>>2]=0;rr(c[(c[d>>2]|0)+12>>2]|0,e);rr(c[(c[d>>2]|0)+16>>2]|0,e);a=(c[d>>2]|0)+20|0;if(c[(c[d>>2]|0)+4>>2]&2048)sr(c[a>>2]|0,e);else tr(c[a>>2]|0,e);c[(c[d>>2]|0)+24>>2]=(c[e>>2]|0)+1;i=b;return}function rr(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;if(!(c[e>>2]|0)){i=d;return}if((c[(c[e>>2]|0)+24>>2]|0)<=(c[c[f>>2]>>2]|0)){i=d;return}c[c[f>>2]>>2]=c[(c[e>>2]|0)+24>>2];i=d;return}function sr(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;if(!(c[e>>2]|0)){i=d;return}rr(c[(c[e>>2]|0)+36>>2]|0,c[f>>2]|0);rr(c[(c[e>>2]|0)+44>>2]|0,c[f>>2]|0);rr(c[(c[e>>2]|0)+60>>2]|0,c[f>>2]|0);rr(c[(c[e>>2]|0)+64>>2]|0,c[f>>2]|0);tr(c[c[e>>2]>>2]|0,c[f>>2]|0);tr(c[(c[e>>2]|0)+40>>2]|0,c[f>>2]|0);tr(c[(c[e>>2]|0)+48>>2]|0,c[f>>2]|0);sr(c[(c[e>>2]|0)+52>>2]|0,c[f>>2]|0);i=d;return}function tr(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;i=i+16|0;f=d+8|0;g=d+4|0;e=d;c[f>>2]=a;c[g>>2]=b;if(!(c[f>>2]|0)){i=d;return}c[e>>2]=0;while(1){if((c[e>>2]|0)>=(c[c[f>>2]>>2]|0))break;rr(c[(c[(c[f>>2]|0)+4>>2]|0)+((c[e>>2]|0)*20|0)>>2]|0,c[g>>2]|0);c[e>>2]=(c[e>>2]|0)+1}i=d;return}function ur(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;g=i;i=i+32|0;n=g+20|0;l=g+16|0;m=g+12|0;j=g+8|0;h=g+4|0;k=g;c[n>>2]=a;c[l>>2]=d;c[m>>2]=e;c[j>>2]=f;c[h>>2]=or(c[n>>2]|0,154,0,0)|0;if(!(c[h>>2]|0)){n=c[h>>2]|0;i=g;return n|0}c[k>>2]=(c[l>>2]|0)+8+((c[m>>2]|0)*72|0);c[(c[h>>2]|0)+44>>2]=c[(c[k>>2]|0)+16>>2];c[(c[h>>2]|0)+28>>2]=c[(c[k>>2]|0)+40>>2];if((b[(c[(c[h>>2]|0)+44>>2]|0)+36>>1]|0)==(c[j>>2]|0))b[(c[h>>2]|0)+32>>1]=-1;else{b[(c[h>>2]|0)+32>>1]=c[j>>2];d=$E(1,0,((c[j>>2]|0)>=64?63:c[j>>2]|0)|0)|0;n=(c[k>>2]|0)+56|0;e=n;a=c[e+4>>2]|D;c[n>>2]=c[e>>2]|d;c[n+4>>2]=a}n=(c[h>>2]|0)+4|0;c[n>>2]=c[n>>2]|4;n=c[h>>2]|0;i=g;return n|0}function vr(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;f=i;i=i+32|0;j=f+24|0;l=f+20|0;m=f+16|0;k=f+12|0;e=f+8|0;h=f+4|0;g=f;c[l>>2]=a;c[m>>2]=b;c[k>>2]=d;a:do if((c[(c[m>>2]|0)+4>>2]|0)==0?(a=c[(c[m>>2]|0)+8>>2]|0,c[e>>2]=a,(a|0)!=0):0){c[h>>2]=c[l>>2];b:while(1){if(!(c[h>>2]|0))break a;c[g>>2]=0;while(1){if((c[g>>2]|0)>=(c[c[h>>2]>>2]|0))break;if(!(xc(c[e>>2]|0,c[(c[h>>2]|0)+8+(c[g>>2]<<4)>>2]|0)|0))break b;c[g>>2]=(c[g>>2]|0)+1}c[h>>2]=c[(c[h>>2]|0)+4>>2]}c[c[k>>2]>>2]=c[h>>2];c[j>>2]=(c[h>>2]|0)+8+(c[g>>2]<<4);a=c[j>>2]|0;i=f;return a|0}while(0);c[j>>2]=0;a=c[j>>2]|0;i=f;return a|0}function wr(e,f,g){e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;o=i;i=i+48|0;n=o+36|0;p=o+32|0;h=o+28|0;r=o+24|0;k=o+20|0;l=o+16|0;s=o+12|0;m=o+8|0;j=o+4|0;q=o;c[p>>2]=e;c[h>>2]=f;c[r>>2]=g;if(!(c[h>>2]|0)){c[n>>2]=0;e=c[n>>2]|0;i=o;return e|0}if((c[c[h>>2]>>2]|0)>0)g=((c[c[h>>2]>>2]|0)-1|0)*72|0;else g=0;c[s>>2]=80+g;e=c[s>>2]|0;c[k>>2]=Qe(c[p>>2]|0,e,((e|0)<0)<<31>>31)|0;if(!(c[k>>2]|0)){c[n>>2]=0;e=c[n>>2]|0;i=o;return e|0}e=c[c[h>>2]>>2]|0;c[(c[k>>2]|0)+4>>2]=e;c[c[k>>2]>>2]=e;c[l>>2]=0;while(1){if((c[l>>2]|0)>=(c[c[h>>2]>>2]|0))break;c[m>>2]=(c[k>>2]|0)+8+((c[l>>2]|0)*72|0);c[j>>2]=(c[h>>2]|0)+8+((c[l>>2]|0)*72|0);c[c[m>>2]>>2]=c[c[j>>2]>>2];e=ne(c[p>>2]|0,c[(c[j>>2]|0)+4>>2]|0)|0;c[(c[m>>2]|0)+4>>2]=e;e=ne(c[p>>2]|0,c[(c[j>>2]|0)+8>>2]|0)|0;c[(c[m>>2]|0)+8>>2]=e;e=ne(c[p>>2]|0,c[(c[j>>2]|0)+12>>2]|0)|0;c[(c[m>>2]|0)+12>>2]=e;a[(c[m>>2]|0)+36>>0]=a[(c[j>>2]|0)+36>>0]|0;c[(c[m>>2]|0)+40>>2]=c[(c[j>>2]|0)+40>>2];c[(c[m>>2]|0)+24>>2]=c[(c[j>>2]|0)+24>>2];c[(c[m>>2]|0)+28>>2]=c[(c[j>>2]|0)+28>>2];e=(c[m>>2]|0)+37|0;a[e>>0]=a[e>>0]&-3|((d[(c[j>>2]|0)+37>>0]|0)>>>1&1)<<1&255;e=(c[m>>2]|0)+37|0;a[e>>0]=a[e>>0]&-5|((d[(c[j>>2]|0)+37>>0]|0)>>>2&1)<<2&255;e=(c[m>>2]|0)+37|0;a[e>>0]=a[e>>0]&-9|((d[(c[j>>2]|0)+37>>0]|0)>>>3&1)<<3&255;e=ne(c[p>>2]|0,c[(c[j>>2]|0)+64>>2]|0)|0;c[(c[m>>2]|0)+64>>2]=e;e=(c[m>>2]|0)+37|0;a[e>>0]=a[e>>0]&-2|a[(c[j>>2]|0)+37>>0]&1;c[(c[m>>2]|0)+68>>2]=c[(c[j>>2]|0)+68>>2];e=c[(c[j>>2]|0)+16>>2]|0;c[(c[m>>2]|0)+16>>2]=e;c[q>>2]=e;if(c[q>>2]|0){e=(c[q>>2]|0)+40|0;b[e>>1]=(b[e>>1]|0)+1<<16>>16}g=Wp(c[p>>2]|0,c[(c[j>>2]|0)+20>>2]|0,c[r>>2]|0)|0;c[(c[m>>2]|0)+20>>2]=g;g=Bq(c[p>>2]|0,c[(c[j>>2]|0)+44>>2]|0,c[r>>2]|0)|0;c[(c[m>>2]|0)+44>>2]=g;g=yr(c[p>>2]|0,c[(c[j>>2]|0)+48>>2]|0)|0;c[(c[m>>2]|0)+48>>2]=g;g=(c[j>>2]|0)+56|0;f=c[g+4>>2]|0;e=(c[m>>2]|0)+56|0;c[e>>2]=c[g>>2];c[e+4>>2]=f;c[l>>2]=(c[l>>2]|0)+1}c[n>>2]=c[k>>2];e=c[n>>2]|0;i=o;return e|0}function xr(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;d=i;i=i+32|0;h=d+16|0;g=d+12|0;e=d+8|0;j=d+4|0;f=d;c[h>>2]=a;c[g>>2]=b;c[e>>2]=0;if(!(c[g>>2]|0)){a=c[e>>2]|0;i=d;return a|0}c[j>>2]=24+((c[c[g>>2]>>2]|0)-1<<4);a=c[j>>2]|0;c[e>>2]=se(c[h>>2]|0,a,((a|0)<0)<<31>>31)|0;if(!(c[e>>2]|0)){a=c[e>>2]|0;i=d;return a|0}c[c[e>>2]>>2]=c[c[g>>2]>>2];c[f>>2]=0;while(1){if((c[f>>2]|0)>=(c[c[g>>2]>>2]|0))break;a=Wp(c[h>>2]|0,c[(c[g>>2]|0)+8+(c[f>>2]<<4)+8>>2]|0,0)|0;c[(c[e>>2]|0)+8+(c[f>>2]<<4)+8>>2]=a;a=Jq(c[h>>2]|0,c[(c[g>>2]|0)+8+(c[f>>2]<<4)+4>>2]|0,0)|0;c[(c[e>>2]|0)+8+(c[f>>2]<<4)+4>>2]=a;a=ne(c[h>>2]|0,c[(c[g>>2]|0)+8+(c[f>>2]<<4)>>2]|0)|0;c[(c[e>>2]|0)+8+(c[f>>2]<<4)>>2]=a;c[f>>2]=(c[f>>2]|0)+1}a=c[e>>2]|0;i=d;return a|0}function yr(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;d=i;i=i+32|0;e=d+24|0;f=d+20|0;j=d+16|0;g=d+12|0;h=d+8|0;k=d+4|0;l=d;c[f>>2]=a;c[j>>2]=b;if(!(c[j>>2]|0)){c[e>>2]=0;a=c[e>>2]|0;i=d;return a|0}c[g>>2]=Qe(c[f>>2]|0,8,0)|0;if(!(c[g>>2]|0)){c[e>>2]=0;a=c[e>>2]|0;i=d;return a|0}c[(c[g>>2]|0)+4>>2]=c[(c[j>>2]|0)+4>>2];a=Qe(c[f>>2]|0,c[(c[j>>2]|0)+4>>2]<<3,0)|0;c[c[g>>2]>>2]=a;if(!(c[c[g>>2]>>2]|0)){Xb(c[f>>2]|0,c[g>>2]|0);c[e>>2]=0;a=c[e>>2]|0;i=d;return a|0}c[h>>2]=0;while(1){if((c[h>>2]|0)>=(c[(c[j>>2]|0)+4>>2]|0))break;c[k>>2]=(c[c[g>>2]>>2]|0)+(c[h>>2]<<3);c[l>>2]=(c[c[j>>2]>>2]|0)+(c[h>>2]<<3);a=ne(c[f>>2]|0,c[c[l>>2]>>2]|0)|0;c[c[k>>2]>>2]=a;c[(c[k>>2]|0)+4>>2]=c[(c[l>>2]|0)+4>>2];c[h>>2]=(c[h>>2]|0)+1}c[e>>2]=c[g>>2];a=c[e>>2]|0;i=d;return a|0}function zr(e,f,g,h,j){e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;r=i;i=i+96|0;o=r;k=r+92|0;m=r+88|0;u=r+84|0;B=r+80|0;G=r+76|0;p=r+72|0;C=r+64|0;F=r+60|0;q=r+56|0;n=r+52|0;I=r+48|0;H=r+44|0;s=r+40|0;l=r+36|0;E=r+32|0;D=r+28|0;t=r+24|0;v=r+20|0;z=r+16|0;w=r+12|0;y=r+8|0;x=r+4|0;c[m>>2]=e;c[u>>2]=f;c[B>>2]=g;c[G>>2]=h;c[p>>2]=j;c[I>>2]=c[(c[u>>2]|0)+56>>2];c[H>>2]=c[(c[u>>2]|0)+52>>2];c[s>>2]=0;e=c[m>>2]|0;c[o>>2]=c[c[u>>2]>>2];c[l>>2]=Te(e,1200,o)|0;if(!(c[l>>2]|0)){c[k>>2]=7;e=c[k>>2]|0;i=r;return e|0}c[q>>2]=se(c[m>>2]|0,28,0)|0;j=c[m>>2]|0;if(!(c[q>>2]|0)){Xb(j,c[l>>2]|0);c[k>>2]=7;e=c[k>>2]|0;i=r;return e|0}c[c[q>>2]>>2]=j;c[(c[q>>2]|0)+4>>2]=c[B>>2];c[E>>2]=Ve(c[m>>2]|0,c[(c[u>>2]|0)+68>>2]|0)|0;c[(c[(c[u>>2]|0)+56>>2]|0)+4>>2]=c[(c[(c[m>>2]|0)+16>>2]|0)+(c[E>>2]<<4)>>2];c[C+4>>2]=c[u>>2];c[C>>2]=c[q>>2];c[F>>2]=c[(c[m>>2]|0)+324>>2];c[(c[m>>2]|0)+324>>2]=C;c[n>>2]=tb[c[G>>2]&1](c[m>>2]|0,c[(c[B>>2]|0)+8>>2]|0,c[H>>2]|0,c[I>>2]|0,(c[q>>2]|0)+8|0,s)|0;c[(c[m>>2]|0)+324>>2]=c[F>>2];if((c[n>>2]|0)==7)a[(c[m>>2]|0)+64>>0]=1;a:do if(!(c[n>>2]|0)){if(c[(c[q>>2]|0)+8>>2]|0){e=c[(c[q>>2]|0)+8>>2]|0;c[e+0>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[c[(c[q>>2]|0)+8>>2]>>2]=c[c[B>>2]>>2];c[(c[q>>2]|0)+12>>2]=1;if(c[C+4>>2]|0){c[D>>2]=18e3;f=c[m>>2]|0;e=c[D>>2]|0;c[o>>2]=c[c[u>>2]>>2];e=Te(f,e,o)|0;c[c[p>>2]>>2]=e;Nk(c[q>>2]|0);c[n>>2]=1;break}c[(c[q>>2]|0)+24>>2]=c[(c[u>>2]|0)+60>>2];c[(c[u>>2]|0)+60>>2]=c[q>>2];c[t>>2]=0;while(1){if((c[t>>2]|0)>=(b[(c[u>>2]|0)+38>>1]|0))break a;c[v>>2]=c[(c[(c[u>>2]|0)+4>>2]|0)+((c[t>>2]|0)*24|0)+12>>2];c[w>>2]=0;if(c[v>>2]|0){c[z>>2]=Mb(c[v>>2]|0)|0;if(!(Lb(18048,c[v>>2]|0,6)|0)){if((a[(c[v>>2]|0)+6>>0]|0)!=0?(a[(c[v>>2]|0)+6>>0]|0)!=32:0)A=21}else A=21;b:do if((A|0)==21){A=0;c[w>>2]=0;while(1){if((c[w>>2]|0)>=(c[z>>2]|0))break b;if(!(Lb(18056,(c[v>>2]|0)+(c[w>>2]|0)|0,7)|0)){if(!(a[(c[v>>2]|0)+((c[w>>2]|0)+7)>>0]|0))break;if((a[(c[v>>2]|0)+((c[w>>2]|0)+7)>>0]|0)==32)break}c[w>>2]=(c[w>>2]|0)+1}c[w>>2]=(c[w>>2]|0)+1}while(0);if((c[w>>2]|0)<(c[z>>2]|0)){c[x>>2]=6+((a[(c[v>>2]|0)+((c[w>>2]|0)+6)>>0]|0)!=0?1:0);c[y>>2]=c[w>>2];while(1){if(((c[y>>2]|0)+(c[x>>2]|0)|0)>(c[z>>2]|0))break;a[(c[v>>2]|0)+(c[y>>2]|0)>>0]=a[(c[v>>2]|0)+((c[y>>2]|0)+(c[x>>2]|0))>>0]|0;c[y>>2]=(c[y>>2]|0)+1}if((c[w>>2]|0)>0?(a[(c[v>>2]|0)+(c[w>>2]|0)>>0]|0)==0:0)a[(c[v>>2]|0)+((c[w>>2]|0)-1)>>0]=0;e=(c[(c[u>>2]|0)+4>>2]|0)+((c[t>>2]|0)*24|0)+23|0;a[e>>0]=d[e>>0]|2}}c[t>>2]=(c[t>>2]|0)+1}}}else{t=c[m>>2]|0;if(!(c[s>>2]|0)){c[o>>2]=c[l>>2];e=Te(t,17968,o)|0;c[c[p>>2]>>2]=e}else{c[o>>2]=c[s>>2];e=Te(t,1200,o)|0;c[c[p>>2]>>2]=e;hc(c[s>>2]|0)}Xb(c[m>>2]|0,c[q>>2]|0)}while(0);Xb(c[m>>2]|0,c[l>>2]|0);c[k>>2]=c[n>>2];e=c[k>>2]|0;i=r;return e|0}function Ar(b){b=b|0;var d=0,e=0,f=0,g=0;e=i;i=i+16|0;f=e+8|0;d=e+4|0;g=e;c[f>>2]=b;c[d>>2]=0;c[g>>2]=c[c[f>>2]>>2];if(!(a[(c[g>>2]|0)+145>>0]|0))c[d>>2]=_r(c[g>>2]|0,(c[f>>2]|0)+4|0)|0;if(!(c[d>>2]|0)){g=c[d>>2]|0;i=e;return g|0}c[(c[f>>2]|0)+12>>2]=c[d>>2];g=(c[f>>2]|0)+64|0;c[g>>2]=(c[g>>2]|0)+1;g=c[d>>2]|0;i=e;return g|0}function Br(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;f=i;i=i+48|0;d=f+32|0;e=f+28|0;n=f+24|0;m=f+20|0;g=f+16|0;j=f+12|0;k=f+8|0;l=f+4|0;h=f;c[d>>2]=a;c[e>>2]=b;c[n>>2]=c[c[d>>2]>>2];c[m>>2]=c[(c[(c[n>>2]|0)+16>>2]|0)+(c[e>>2]<<4)+12>>2];pp(c[d>>2]|0,0,c[e>>2]|0);c[j>>2]=c[(c[d>>2]|0)+68>>2];a=(c[d>>2]|0)+68|0;c[a>>2]=(c[a>>2]|0)+3;Fr(c[d>>2]|0,c[e>>2]|0,c[j>>2]|0,0,0);c[k>>2]=(c[(c[d>>2]|0)+72>>2]|0)+1;c[l>>2]=c[(c[d>>2]|0)+68>>2];c[g>>2]=c[(c[m>>2]|0)+16>>2];while(1){if(!(c[g>>2]|0))break;c[h>>2]=c[(c[g>>2]|0)+8>>2];Gr(c[d>>2]|0,c[h>>2]|0,0,c[j>>2]|0,c[k>>2]|0,c[l>>2]|0);c[g>>2]=c[c[g>>2]>>2]}Hr(c[d>>2]|0,c[e>>2]|0);i=f;return}function Cr(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=i;i=i+16|0;g=e+12|0;h=e+8|0;d=e+4|0;f=e;c[g>>2]=a;c[h>>2]=b;c[f>>2]=Zo(c[g>>2]|0,c[h>>2]|0)|0;c[d>>2]=Yf(c[g>>2]|0,c[f>>2]|0)|0;Xb(c[g>>2]|0,c[f>>2]|0);i=e;return c[d>>2]|0}function Dr(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;k=i;i=i+32|0;g=k+16|0;e=k+12|0;j=k+8|0;f=k+4|0;h=k;c[g>>2]=a;c[e>>2]=b;c[j>>2]=d;c[f>>2]=Ve(c[c[g>>2]>>2]|0,c[(c[e>>2]|0)+68>>2]|0)|0;pp(c[g>>2]|0,0,c[f>>2]|0);c[h>>2]=c[(c[g>>2]|0)+68>>2];a=(c[g>>2]|0)+68|0;c[a>>2]=(c[a>>2]|0)+3;a=c[g>>2]|0;b=c[f>>2]|0;d=c[h>>2]|0;if(c[j>>2]|0)Fr(a,b,d,c[c[j>>2]>>2]|0,18160);else Fr(a,b,d,c[c[e>>2]>>2]|0,18168);Gr(c[g>>2]|0,c[e>>2]|0,c[j>>2]|0,c[h>>2]|0,(c[(c[g>>2]|0)+72>>2]|0)+1|0,c[(c[g>>2]|0)+68>>2]|0);Hr(c[g>>2]|0,c[f>>2]|0);i=k;return}function Er(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;n=i;i=i+32|0;l=n;j=n+28|0;k=n+24|0;m=n+20|0;o=n+16|0;p=n+12|0;h=n+8|0;q=n+4|0;c[k>>2]=b;c[m>>2]=e;c[o>>2]=f;c[p>>2]=g;c[q>>2]=c[c[k>>2]>>2];if((c[o>>2]|0)!=0?(c[(c[o>>2]|0)+4>>2]|0)>>>0>0:0){if(a[(c[q>>2]|0)+145>>0]|0){Se(c[k>>2]|0,18112,l);b=(c[k>>2]|0)+64|0;c[b>>2]=(c[b>>2]|0)+1;c[j>>2]=-1;b=c[j>>2]|0;i=n;return b|0}c[c[p>>2]>>2]=c[o>>2];c[h>>2]=Cr(c[q>>2]|0,c[m>>2]|0)|0;if((c[h>>2]|0)<0){b=c[k>>2]|0;c[l>>2]=c[m>>2];Se(b,18136,l);b=(c[k>>2]|0)+64|0;c[b>>2]=(c[b>>2]|0)+1;c[j>>2]=-1;b=c[j>>2]|0;i=n;return b|0}}else{c[h>>2]=d[(c[q>>2]|0)+144>>0];c[c[p>>2]>>2]=c[m>>2]}c[j>>2]=c[h>>2];b=c[j>>2]|0;i=n;return b|0}function Fr(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;r=i;i=i+80|0;s=r;p=r+68|0;n=r+64|0;l=r+60|0;u=r+56|0;w=r+52|0;j=r+48|0;v=r+44|0;h=r+40|0;k=r+36|0;m=r+24|0;o=r+72|0;q=r+20|0;t=r+16|0;c[p>>2]=b;c[n>>2]=d;c[l>>2]=e;c[u>>2]=f;c[w>>2]=g;c[v>>2]=c[c[p>>2]>>2];c[k>>2]=dp(c[p>>2]|0)|0;if(!(c[k>>2]|0)){i=r;return}c[h>>2]=(c[(c[v>>2]|0)+16>>2]|0)+(c[n>>2]<<4);c[j>>2]=0;while(1){if((c[j>>2]|0)>=3)break;c[q>>2]=c[18368+(c[j>>2]<<3)>>2];b=sp(c[v>>2]|0,c[q>>2]|0,c[c[h>>2]>>2]|0)|0;c[t>>2]=b;do if(!b){if(c[18372+(c[j>>2]<<3)>>2]|0){b=c[p>>2]|0;e=c[q>>2]|0;d=c[18372+(c[j>>2]<<3)>>2]|0;c[s>>2]=c[c[h>>2]>>2];c[s+4>>2]=e;c[s+8>>2]=d;cp(b,18456,s);c[m+(c[j>>2]<<2)>>2]=c[(c[p>>2]|0)+388>>2];a[o+(c[j>>2]|0)>>0]=2}}else{c[m+(c[j>>2]<<2)>>2]=c[(c[t>>2]|0)+32>>2];a[o+(c[j>>2]|0)>>0]=0;Jr(c[p>>2]|0,c[n>>2]|0,c[m+(c[j>>2]<<2)>>2]|0,1,c[q>>2]|0);if(c[u>>2]|0){b=c[p>>2]|0;f=c[q>>2]|0;e=c[w>>2]|0;d=c[u>>2]|0;c[s>>2]=c[c[h>>2]>>2];c[s+4>>2]=f;c[s+8>>2]=e;c[s+12>>2]=d;cp(b,18480,s);break}else{fp(c[k>>2]|0,118,c[m+(c[j>>2]<<2)>>2]|0,c[n>>2]|0)|0;break}}while(0);c[j>>2]=(c[j>>2]|0)+1}c[j>>2]=0;while(1){if(!(c[18372+(c[j>>2]<<3)>>2]|0))break;We(c[k>>2]|0,55,(c[l>>2]|0)+(c[j>>2]|0)|0,c[m+(c[j>>2]<<2)>>2]|0,c[n>>2]|0,3)|0;Xe(c[k>>2]|0,a[o+(c[j>>2]|0)>>0]|0);c[j>>2]=(c[j>>2]|0)+1}i=r;return}function Gr(b,f,g,h,j,k){b=b|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0;H=i;i=i+128|0;K=H+116|0;P=H+112|0;x=H+108|0;u=H+104|0;R=H+100|0;Q=H+96|0;E=H+92|0;y=H+88|0;A=H+84|0;o=H+80|0;n=H+76|0;G=H+72|0;q=H+68|0;M=H+64|0;w=H+120|0;v=H+60|0;z=H+56|0;J=H+52|0;t=H+48|0;s=H+44|0;r=H+40|0;p=H+36|0;I=H+32|0;N=H+28|0;C=H+24|0;B=H+20|0;O=H+16|0;l=H+12|0;D=H+8|0;F=H+4|0;L=H;c[K>>2]=b;c[P>>2]=f;c[x>>2]=g;c[u>>2]=h;c[R>>2]=j;c[Q>>2]=k;c[E>>2]=c[c[K>>2]>>2];c[q>>2]=-1;a[w>>0]=1;f=c[R>>2]|0;c[R>>2]=f+1;c[v>>2]=f;f=c[R>>2]|0;c[R>>2]=f+1;c[z>>2]=f;f=c[R>>2]|0;c[R>>2]=f+1;c[J>>2]=f;f=c[R>>2]|0;c[R>>2]=f+1;c[t>>2]=f;f=c[R>>2]|0;c[R>>2]=f+1;c[s>>2]=f;f=c[R>>2]|0;c[R>>2]=f+1;c[r>>2]=f;f=c[R>>2]|0;c[R>>2]=f+1;c[p>>2]=f;c[I>>2]=c[R>>2];if((c[(c[K>>2]|0)+72>>2]|0)>(c[R>>2]|0))b=c[(c[K>>2]|0)+72>>2]|0;else b=c[R>>2]|0;c[(c[K>>2]|0)+72>>2]=b;c[n>>2]=dp(c[K>>2]|0)|0;if((c[n>>2]|0)==0|(c[P>>2]|0)==0){i=H;return}if(!(c[(c[P>>2]|0)+32>>2]|0)){i=H;return}if(!(Lb(c[c[P>>2]>>2]|0,15144,7)|0)){i=H;return}c[M>>2]=Ve(c[E>>2]|0,c[(c[P>>2]|0)+68>>2]|0)|0;if(ap(c[K>>2]|0,28,c[c[P>>2]>>2]|0,0,c[(c[(c[E>>2]|0)+16>>2]|0)+(c[M>>2]<<4)>>2]|0)|0){i=H;return}Jr(c[K>>2]|0,c[M>>2]|0,c[(c[P>>2]|0)+32>>2]|0,0,c[c[P>>2]>>2]|0);R=c[Q>>2]|0;c[Q>>2]=R+1;c[o>>2]=R;R=c[Q>>2]|0;c[Q>>2]=R+1;c[A>>2]=R;if((c[(c[K>>2]|0)+68>>2]|0)>(c[Q>>2]|0))Q=c[(c[K>>2]|0)+68>>2]|0;else Q=c[Q>>2]|0;c[(c[K>>2]|0)+68>>2]=Q;Kr(c[K>>2]|0,c[o>>2]|0,c[M>>2]|0,c[P>>2]|0,54);hp(c[n>>2]|0,97,0,c[s>>2]|0,0,c[c[P>>2]>>2]|0,0)|0;c[y>>2]=c[(c[P>>2]|0)+8>>2];while(1){Q=c[x>>2]|0;if(!(c[y>>2]|0))break;if(!((Q|0)!=0?(c[x>>2]|0)!=(c[y>>2]|0):0))m=15;do if((m|0)==15){m=0;if(!(c[(c[y>>2]|0)+36>>2]|0))a[w>>0]=0;if(((d[(c[P>>2]|0)+44>>0]|0)&32|0)!=0?(a[(c[y>>2]|0)+55>>0]&3|0)==2:0){c[N>>2]=e[(c[y>>2]|0)+50>>1];c[O>>2]=c[c[P>>2]>>2];c[l>>2]=(c[N>>2]|0)-1}else{c[N>>2]=e[(c[y>>2]|0)+52>>1];c[O>>2]=c[c[y>>2]>>2];if((d[(c[y>>2]|0)+55>>0]|0)>>>3&1)Q=e[(c[y>>2]|0)+50>>1]|0;else Q=c[N>>2]|0;c[l>>2]=Q-1}hp(c[n>>2]|0,97,0,c[r>>2]|0,0,c[O>>2]|0,0)|0;if((c[(c[K>>2]|0)+72>>2]|0)>((c[I>>2]|0)+(c[l>>2]|0)|0))Q=c[(c[K>>2]|0)+72>>2]|0;else Q=(c[I>>2]|0)+(c[l>>2]|0)|0;c[(c[K>>2]|0)+72>>2]=Q;ip(c[n>>2]|0,54,c[A>>2]|0,c[(c[y>>2]|0)+44>>2]|0,c[M>>2]|0)|0;Lr(c[K>>2]|0,c[y>>2]|0);fp(c[n>>2]|0,25,c[N>>2]|0,(c[z>>2]|0)+1|0)|0;fp(c[n>>2]|0,25,e[(c[y>>2]|0)+50>>1]|0,(c[z>>2]|0)+2|0)|0;ip(c[n>>2]|0,1,0,(c[z>>2]|0)+1|0,c[z>>2]|0)|0;bf(c[n>>2]|0,-1,18176,-5);Xe(c[n>>2]|0,2);c[C>>2]=Ir(c[n>>2]|0,108,c[A>>2]|0)|0;fp(c[n>>2]|0,25,0,c[J>>2]|0)|0;c[B>>2]=Mr(c[n>>2]|0)|0;if((c[l>>2]|0)>0){c[D>>2]=Nr(c[n>>2]|0)|0;c[F>>2]=Qe(c[E>>2]|0,c[l>>2]<<2,0)|0;if(!(c[F>>2]|0))break;mp(c[n>>2]|0,16)|0;c[B>>2]=Mr(c[n>>2]|0)|0;if(((c[l>>2]|0)==1?(e[(c[y>>2]|0)+50>>1]|0|0)==1:0)?(d[(c[y>>2]|0)+54>>0]|0|0)!=0:0)fp(c[n>>2]|0,77,c[I>>2]|0,c[D>>2]|0)|0;c[G>>2]=0;while(1){if((c[G>>2]|0)>=(c[l>>2]|0))break;c[L>>2]=Or(c[K>>2]|0,c[(c[(c[y>>2]|0)+32>>2]|0)+(c[G>>2]<<2)>>2]|0)|0;fp(c[n>>2]|0,25,c[G>>2]|0,c[J>>2]|0)|0;ip(c[n>>2]|0,47,c[A>>2]|0,c[G>>2]|0,c[t>>2]|0)|0;R=hp(c[n>>2]|0,78,c[t>>2]|0,0,(c[I>>2]|0)+(c[G>>2]|0)|0,c[L>>2]|0,-4)|0;c[(c[F>>2]|0)+(c[G>>2]<<2)>>2]=R;Xe(c[n>>2]|0,-128);c[G>>2]=(c[G>>2]|0)+1}fp(c[n>>2]|0,25,c[l>>2]|0,c[J>>2]|0)|0;fp(c[n>>2]|0,16,0,c[D>>2]|0)|0;zp(c[n>>2]|0,(c[B>>2]|0)-1|0);c[G>>2]=0;while(1){Q=c[n>>2]|0;if((c[G>>2]|0)>=(c[l>>2]|0))break;zp(Q,c[(c[F>>2]|0)+(c[G>>2]<<2)>>2]|0);ip(c[n>>2]|0,47,c[A>>2]|0,c[G>>2]|0,(c[I>>2]|0)+(c[G>>2]|0)|0)|0;c[G>>2]=(c[G>>2]|0)+1}Pr(Q,c[D>>2]|0);Xb(c[E>>2]|0,c[F>>2]|0)}ip(c[n>>2]|0,1,1,c[z>>2]|0,c[t>>2]|0)|0;bf(c[n>>2]|0,-1,18216,-5);Xe(c[n>>2]|0,2);fp(c[n>>2]|0,9,c[A>>2]|0,c[B>>2]|0)|0;Qr(c[n>>2]|0,c[z>>2]|0,0,c[p>>2]|0);hp(c[n>>2]|0,49,c[s>>2]|0,3,c[t>>2]|0,18256,0)|0;fp(c[n>>2]|0,74,c[u>>2]|0,c[v>>2]|0)|0;ip(c[n>>2]|0,75,c[u>>2]|0,c[t>>2]|0,c[v>>2]|0)|0;Xe(c[n>>2]|0,8);zp(c[n>>2]|0,c[C>>2]|0)}while(0);c[y>>2]=c[(c[y>>2]|0)+20>>2]}if(Q){i=H;return}if(!(d[w>>0]|0)){i=H;return}fp(c[n>>2]|0,50,c[o>>2]|0,c[p>>2]|0)|0;c[q>>2]=Ir(c[n>>2]|0,46,c[p>>2]|0)|0;fp(c[n>>2]|0,28,0,c[r>>2]|0)|0;hp(c[n>>2]|0,49,c[s>>2]|0,3,c[t>>2]|0,18256,0)|0;fp(c[n>>2]|0,74,c[u>>2]|0,c[v>>2]|0)|0;ip(c[n>>2]|0,75,c[u>>2]|0,c[t>>2]|0,c[v>>2]|0)|0;Xe(c[n>>2]|0,8);zp(c[n>>2]|0,c[q>>2]|0);i=H;return}function Hr(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;i=i+16|0;g=d+8|0;f=d+4|0;e=d;c[g>>2]=a;c[f>>2]=b;c[e>>2]=dp(c[g>>2]|0)|0;if(!(c[e>>2]|0)){i=d;return}Ir(c[e>>2]|0,123,c[f>>2]|0)|0;i=d;return}function Ir(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+16|0;h=e+8|0;g=e+4|0;f=e;c[h>>2]=a;c[g>>2]=b;c[f>>2]=d;a=ip(c[h>>2]|0,c[g>>2]|0,c[f>>2]|0,0,0)|0;i=e;return a|0}function Jr(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;k=i;i=i+48|0;t=k+28|0;l=k+24|0;m=k+20|0;n=k+32|0;o=k+16|0;p=k+12|0;q=k+8|0;r=k+4|0;j=k;c[t>>2]=b;c[l>>2]=e;c[m>>2]=f;a[n>>0]=g;c[o>>2]=h;h=c[t>>2]|0;if(c[(c[t>>2]|0)+408>>2]|0)h=c[h+408>>2]|0;c[p>>2]=h;c[q>>2]=0;while(1){if((c[q>>2]|0)>=(c[(c[p>>2]|0)+396>>2]|0))break;c[j>>2]=(c[(c[p>>2]|0)+400>>2]|0)+(c[q>>2]<<4);if((c[c[j>>2]>>2]|0)==(c[l>>2]|0)?(c[(c[j>>2]|0)+4>>2]|0)==(c[m>>2]|0):0){s=7;break}c[q>>2]=(c[q>>2]|0)+1}if((s|0)==7){if(d[(c[j>>2]|0)+8>>0]|0)l=1;else l=(d[n>>0]|0|0)!=0;a[(c[j>>2]|0)+8>>0]=l&1;i=k;return}c[r>>2]=(c[(c[p>>2]|0)+396>>2]|0)+1<<4;q=c[r>>2]|0;q=Ek(c[c[p>>2]>>2]|0,c[(c[p>>2]|0)+400>>2]|0,q,((q|0)<0)<<31>>31)|0;c[(c[p>>2]|0)+400>>2]=q;q=(c[p>>2]|0)+396|0;if(c[(c[p>>2]|0)+400>>2]|0){t=c[q>>2]|0;c[q>>2]=t+1;c[j>>2]=(c[(c[p>>2]|0)+400>>2]|0)+(t<<4);c[c[j>>2]>>2]=c[l>>2];c[(c[j>>2]|0)+4>>2]=c[m>>2];a[(c[j>>2]|0)+8>>0]=a[n>>0]|0;c[(c[j>>2]|0)+12>>2]=c[o>>2];i=k;return}else{c[q>>2]=0;a[(c[c[p>>2]>>2]|0)+64>>0]=1;i=k;return}}function Kr(a,e,f,g,h){a=a|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;o=i;i=i+32|0;q=o+24|0;m=o+20|0;l=o+16|0;k=o+12|0;n=o+8|0;j=o+4|0;p=o;c[q>>2]=a;c[m>>2]=e;c[l>>2]=f;c[k>>2]=g;c[n>>2]=h;c[j>>2]=dp(c[q>>2]|0)|0;Jr(c[q>>2]|0,c[l>>2]|0,c[(c[k>>2]|0)+32>>2]|0,((c[n>>2]|0)==55?1:0)&255,c[c[k>>2]>>2]|0);if(!(d[(c[k>>2]|0)+44>>0]&32)){We(c[j>>2]|0,c[n>>2]|0,c[m>>2]|0,c[(c[k>>2]|0)+32>>2]|0,c[l>>2]|0,b[(c[k>>2]|0)+38>>1]|0)|0;i=o;return}else{c[p>>2]=Zr(c[k>>2]|0)|0;ip(c[j>>2]|0,c[n>>2]|0,c[m>>2]|0,c[(c[p>>2]|0)+44>>2]|0,c[l>>2]|0)|0;Lr(c[q>>2]|0,c[p>>2]|0);i=o;return}}function Lr(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;i=i+16|0;f=d+8|0;e=d+4|0;g=d;c[f>>2]=a;c[e>>2]=b;c[g>>2]=c[(c[f>>2]|0)+8>>2];a=c[g>>2]|0;bf(a,-1,Wr(c[f>>2]|0,c[e>>2]|0)|0,-6);i=d;return}function Mr(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;i=d;return c[(c[b>>2]|0)+32>>2]|0}function Nr(a){a=a|0;var b=0,d=0,e=0,f=0;d=i;i=i+16|0;f=d+8|0;e=d+4|0;b=d;c[f>>2]=a;c[e>>2]=c[(c[f>>2]|0)+24>>2];f=(c[e>>2]|0)+108|0;a=c[f>>2]|0;c[f>>2]=a+1;c[b>>2]=a;if(!(c[b>>2]&(c[b>>2]|0)-1)){f=Ek(c[c[e>>2]>>2]|0,c[(c[e>>2]|0)+112>>2]|0,(c[b>>2]<<1)+1<<2,0)|0;c[(c[e>>2]|0)+112>>2]=f}if(!(c[(c[e>>2]|0)+112>>2]|0)){f=c[b>>2]|0;f=-1-f|0;i=d;return f|0}c[(c[(c[e>>2]|0)+112>>2]|0)+(c[b>>2]<<2)>>2]=-1;f=c[b>>2]|0;f=-1-f|0;i=d;return f|0}function Or(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;f=i;i=i+32|0;h=f+12|0;k=f+8|0;m=f+4|0;j=f+17|0;l=f+16|0;g=f;c[h>>2]=b;c[k>>2]=e;c[m>>2]=c[c[h>>2]>>2];a[j>>0]=a[(c[(c[(c[m>>2]|0)+16>>2]|0)+12>>2]|0)+77>>0]|0;a[l>>0]=a[(c[m>>2]|0)+145>>0]|0;c[g>>2]=$g(c[m>>2]|0,a[j>>0]|0,c[k>>2]|0,d[l>>0]|0)|0;if(a[l>>0]|0){m=c[g>>2]|0;i=f;return m|0}if((c[g>>2]|0)!=0?(c[(c[g>>2]|0)+12>>2]|0)!=0:0){m=c[g>>2]|0;i=f;return m|0}c[g>>2]=eq(c[h>>2]|0,a[j>>0]|0,c[g>>2]|0,c[k>>2]|0)|0;m=c[g>>2]|0;i=f;return m|0}function Pr(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=i;i=i+16|0;f=d+12|0;h=d+8|0;e=d+4|0;g=d;c[f>>2]=a;c[h>>2]=b;c[e>>2]=c[(c[f>>2]|0)+24>>2];c[g>>2]=-1-(c[h>>2]|0);if((c[g>>2]|0)>=0?(c[(c[e>>2]|0)+112>>2]|0)!=0:0)c[(c[(c[e>>2]|0)+112>>2]|0)+(c[g>>2]<<2)>>2]=c[(c[f>>2]|0)+32>>2];c[(c[e>>2]|0)+88>>2]=(c[(c[f>>2]|0)+32>>2]|0)-1;i=d;return}function Qr(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;f=i;i=i+16|0;g=f+12|0;j=f+8|0;h=f;c[g>>2]=a;c[j>>2]=b;c[f+4>>2]=d;c[h>>2]=e;ip(c[g>>2]|0,1,0,c[j>>2]|0,c[h>>2]|0)|0;bf(c[g>>2]|0,-1,18264,-5);Xe(c[g>>2]|0,1);i=f;return}function Rr(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;k=i;i=i+64|0;n=k+16|0;f=k+48|0;o=k+40|0;j=k+36|0;m=k+32|0;h=k+28|0;g=k+24|0;e=k+8|0;l=k;c[f>>2]=a;c[k+44>>2]=b;c[o>>2]=d;c[j>>2]=Cd(c[c[o>>2]>>2]|0)|0;a=((c[(c[j>>2]|0)+12>>2]|0)+1|0)*25|0;c[g>>2]=Mc(a,((a|0)<0)<<31>>31)|0;if(!(c[g>>2]|0)){ie(c[f>>2]|0);i=k;return}o=c[g>>2]|0;a=n;c[a>>2]=c[c[j>>2]>>2];c[a+4>>2]=0;sc(24,o,18320,n)|0;o=c[g>>2]|0;c[m>>2]=o+(Mb(c[g>>2]|0)|0);c[h>>2]=0;while(1){if((c[h>>2]|0)>=(c[(c[j>>2]|0)+12>>2]|0))break;o=e;c[o>>2]=(c[(c[(c[j>>2]|0)+24>>2]|0)+(c[h>>2]<<2)>>2]|0)+1;c[o+4>>2]=0;o=e;o=bF(c[c[j>>2]>>2]|0,0,c[o>>2]|0,c[o+4>>2]|0)|0;o=ZE(o|0,D|0,1,0)|0;d=e;d=mF(o|0,D|0,c[d>>2]|0,c[d+4>>2]|0)|0;o=l;c[o>>2]=d;c[o+4>>2]=D;o=c[m>>2]|0;d=l;b=c[d+4>>2]|0;a=n;c[a>>2]=c[d>>2];c[a+4>>2]=b;sc(24,o,18328,n)|0;o=Mb(c[m>>2]|0)|0;c[m>>2]=(c[m>>2]|0)+o;c[h>>2]=(c[h>>2]|0)+1}$d(c[f>>2]|0,c[g>>2]|0,-1,13);i=k;return}function Sr(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;f=i;i=i+32|0;j=f+12|0;g=f+8|0;e=f+4|0;h=f;c[f+20>>2]=a;c[f+16>>2]=b;c[j>>2]=d;c[e>>2]=Cd(c[c[j>>2]>>2]|0)|0;c[h>>2]=Jd(c[(c[j>>2]|0)+4>>2]|0)|0;if(!(c[c[e>>2]>>2]|0)){c[g>>2]=0;while(1){if((c[g>>2]|0)>=(c[(c[e>>2]|0)+8>>2]|0))break;c[(c[(c[e>>2]|0)+20>>2]|0)+(c[g>>2]<<2)>>2]=1;c[g>>2]=(c[g>>2]|0)+1}j=c[e>>2]|0;a=c[j>>2]|0;a=a+1|0;c[j>>2]=a;i=f;return}Tr(c[e>>2]|0,c[h>>2]|0);c[g>>2]=0;while(1){if((c[g>>2]|0)>=(c[h>>2]|0))break;j=(c[(c[e>>2]|0)+20>>2]|0)+(c[g>>2]<<2)|0;c[j>>2]=(c[j>>2]|0)+1;c[g>>2]=(c[g>>2]|0)+1}c[g>>2]=c[h>>2];while(1){if((c[g>>2]|0)>=(c[(c[e>>2]|0)+8>>2]|0))break;j=(c[(c[e>>2]|0)+24>>2]|0)+(c[g>>2]<<2)|0;c[j>>2]=(c[j>>2]|0)+1;c[(c[(c[e>>2]|0)+20>>2]|0)+(c[g>>2]<<2)>>2]=1;c[g>>2]=(c[g>>2]|0)+1}j=c[e>>2]|0;a=c[j>>2]|0;a=a+1|0;c[j>>2]=a;i=f;return}function Tr(a,b){a=a|0;b=b|0;var d=0;d=i;i=i+16|0;c[d+4>>2]=a;c[d>>2]=b;i=d;return}function Ur(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;e=i;i=i+48|0;f=e+32|0;n=e+24|0;g=e+20|0;k=e+16|0;j=e+12|0;h=e+8|0;m=e+4|0;l=e;c[f>>2]=a;c[e+28>>2]=b;c[n>>2]=d;c[k>>2]=Jd(c[c[n>>2]>>2]|0)|0;c[h>>2]=(c[k>>2]|0)+1&-2;c[j>>2]=Jd(c[(c[n>>2]|0)+4>>2]|0)|0;c[m>>2]=56+(c[h>>2]<<2)+(c[h>>2]<<2);c[l>>2]=pe(c[f>>2]|0)|0;a=c[m>>2]|0;c[g>>2]=se(c[l>>2]|0,a,((a|0)<0)<<31>>31)|0;if(!(c[g>>2]|0)){ie(c[f>>2]|0);i=e;return}else{c[(c[g>>2]|0)+52>>2]=c[l>>2];c[c[g>>2]>>2]=0;c[(c[g>>2]|0)+8>>2]=c[k>>2];c[(c[g>>2]|0)+12>>2]=c[j>>2];c[(c[g>>2]|0)+24>>2]=(c[g>>2]|0)+56;c[(c[g>>2]|0)+20>>2]=(c[(c[g>>2]|0)+24>>2]|0)+(c[h>>2]<<2);Od(c[f>>2]|0,c[g>>2]|0,56,16);i=e;return}}function Vr(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+16|0;e=b+4|0;d=b;c[e>>2]=a;c[d>>2]=c[e>>2];Xb(c[(c[d>>2]|0)+52>>2]|0,c[d>>2]|0);i=b;return}function Wr(b,f){b=b|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;k=i;i=i+32|0;g=k+28|0;h=k+24|0;j=k+20|0;n=k+16|0;o=k+12|0;p=k+8|0;m=k+4|0;l=k;c[h>>2]=b;c[j>>2]=f;if(c[(c[h>>2]|0)+64>>2]|0){c[g>>2]=0;b=c[g>>2]|0;i=k;return b|0}if((c[(c[j>>2]|0)+40>>2]|0)!=0?(c[(c[(c[j>>2]|0)+40>>2]|0)+12>>2]|0)!=(c[c[h>>2]>>2]|0):0){eh(c[(c[j>>2]|0)+40>>2]|0);c[(c[j>>2]|0)+40>>2]=0}do if(!(c[(c[j>>2]|0)+40>>2]|0)){c[o>>2]=e[(c[j>>2]|0)+52>>1];c[p>>2]=e[(c[j>>2]|0)+50>>1];f=c[c[h>>2]>>2]|0;if((d[(c[j>>2]|0)+55>>0]|0)>>>3&1)c[m>>2]=Xr(f,c[p>>2]|0,(c[o>>2]|0)-(c[p>>2]|0)|0)|0;else c[m>>2]=Xr(f,c[o>>2]|0,0)|0;if(c[m>>2]|0){c[n>>2]=0;while(1){if((c[n>>2]|0)>=(c[o>>2]|0))break;c[l>>2]=c[(c[(c[j>>2]|0)+32>>2]|0)+(c[n>>2]<<2)>>2];if(!(UE(c[l>>2]|0,3320)|0))p=0;else p=Or(c[h>>2]|0,c[l>>2]|0)|0;c[(c[m>>2]|0)+20+(c[n>>2]<<2)>>2]=p;a[(c[(c[m>>2]|0)+16>>2]|0)+(c[n>>2]|0)>>0]=a[(c[(c[j>>2]|0)+28>>2]|0)+(c[n>>2]|0)>>0]|0;c[n>>2]=(c[n>>2]|0)+1}l=c[m>>2]|0;if(c[(c[h>>2]|0)+64>>2]|0){eh(l);break}else{c[(c[j>>2]|0)+40>>2]=l;break}}}while(0);c[g>>2]=Yr(c[(c[j>>2]|0)+40>>2]|0)|0;b=c[g>>2]|0;i=k;return b|0}function Xr(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;g=i;i=i+16|0;j=g+12|0;l=g+8|0;k=g+4|0;h=g;c[j>>2]=d;c[l>>2]=e;c[k>>2]=f;c[h>>2]=se(0,24+(((c[l>>2]|0)+(c[k>>2]|0)|0)*5|0)|0,0)|0;if(c[h>>2]|0){c[(c[h>>2]|0)+16>>2]=(c[h>>2]|0)+20+((c[l>>2]|0)+(c[k>>2]|0)<<2);b[(c[h>>2]|0)+6>>1]=c[l>>2];b[(c[h>>2]|0)+8>>1]=c[k>>2];a[(c[h>>2]|0)+4>>0]=a[(c[(c[(c[j>>2]|0)+16>>2]|0)+12>>2]|0)+77>>0]|0;c[(c[h>>2]|0)+12>>2]=c[j>>2];c[c[h>>2]>>2]=1;d=c[h>>2]|0;i=g;return d|0}else{a[(c[j>>2]|0)+64>>0]=1;d=c[h>>2]|0;i=g;return d|0}return 0}function Yr(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;if(c[b>>2]|0){a=c[b>>2]|0;c[a>>2]=(c[a>>2]|0)+1}i=d;return c[b>>2]|0}function Zr(b){b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=b;c[e>>2]=c[(c[f>>2]|0)+8>>2];while(1){if(!(c[e>>2]|0)){b=5;break}if((a[(c[e>>2]|0)+55>>0]&3|0)==2){b=5;break}c[e>>2]=c[(c[e>>2]|0)+20>>2]}if((b|0)==5){i=d;return c[e>>2]|0}return 0}function _r(b,d){b=b|0;d=d|0;var f=0,g=0,h=0,j=0,k=0,l=0;g=i;i=i+32|0;h=g+16|0;k=g+12|0;l=g+8|0;f=g+4|0;j=g;c[h>>2]=b;c[k>>2]=d;c[j>>2]=((c[(c[h>>2]|0)+24>>2]&2|0)!=0^1)&1;c[f>>2]=0;a[(c[h>>2]|0)+145>>0]=1;c[l>>2]=0;while(1){if(c[f>>2]|0)break;if((c[l>>2]|0)>=(c[(c[h>>2]|0)+20>>2]|0))break;if(!((c[l>>2]|0)==1?1:((e[(c[(c[(c[h>>2]|0)+16>>2]|0)+(c[l>>2]<<4)+12>>2]|0)+78>>1]|0)&1|0)==1)?(c[f>>2]=$r(c[h>>2]|0,c[l>>2]|0,c[k>>2]|0)|0,(c[f>>2]|0)!=0):0)as(c[h>>2]|0,c[l>>2]|0);c[l>>2]=(c[l>>2]|0)+1}if(((c[f>>2]|0)==0?((e[(c[(c[(c[h>>2]|0)+16>>2]|0)+28>>2]|0)+78>>1]|0)&1|0)!=1:0)?(c[f>>2]=$r(c[h>>2]|0,1,c[k>>2]|0)|0,(c[f>>2]|0)!=0):0)as(c[h>>2]|0,1);a[(c[h>>2]|0)+145>>0]=0;if(!((c[f>>2]|0)==0&(c[j>>2]|0)!=0)){b=c[f>>2]|0;i=g;return b|0}bs(c[h>>2]|0);b=c[f>>2]|0;i=g;return b|0}function $r(f,g,h){f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;r=i;i=i+128|0;j=r;v=r+120|0;l=r+116|0;m=r+112|0;q=r+108|0;n=r+104|0;A=r+100|0;x=r+96|0;B=r+92|0;o=r+88|0;C=r+72|0;w=r+48|0;k=r+32|0;D=r+24|0;s=r+20|0;p=r+16|0;y=r+124|0;t=r+12|0;u=r+8|0;c[l>>2]=f;c[m>>2]=g;c[q>>2]=h;c[p>>2]=0;if((c[m>>2]|0)==1)c[D>>2]=18616;else c[D>>2]=18512;c[s>>2]=(c[m>>2]|0)==1?14904:14928;c[C>>2]=c[s>>2];c[C+4>>2]=18736;c[C+8>>2]=c[D>>2];c[C+12>>2]=0;c[k>>2]=c[l>>2];c[k+8>>2]=c[m>>2];c[k+12>>2]=0;c[k+4>>2]=c[q>>2];cs(k,3,C,0)|0;if(!(c[k+12>>2]|0)){c[B>>2]=sp(c[l>>2]|0,c[s>>2]|0,c[(c[(c[l>>2]|0)+16>>2]|0)+(c[m>>2]<<4)>>2]|0)|0;if(c[B>>2]|0){f=(c[B>>2]|0)+44|0;a[f>>0]=d[f>>0]|1}c[o>>2]=(c[(c[l>>2]|0)+16>>2]|0)+(c[m>>2]<<4);if(!(c[(c[o>>2]|0)+4>>2]|0)){if((c[m>>2]|0)==1){f=(c[(c[(c[l>>2]|0)+16>>2]|0)+28>>2]|0)+78|0;b[f>>1]=e[f>>1]|1}c[v>>2]=0;f=c[v>>2]|0;i=r;return f|0}Pc(c[(c[o>>2]|0)+4>>2]|0);do if(!(Tc(c[(c[o>>2]|0)+4>>2]|0)|0)){c[n>>2]=Rc(c[(c[o>>2]|0)+4>>2]|0,0)|0;if(c[n>>2]|0){g=c[q>>2]|0;f=c[l>>2]|0;c[j>>2]=ge(c[n>>2]|0)|0;pn(g,f,1200,j);break}else{c[p>>2]=1;z=16;break}}else z=16;while(0);a:do if((z|0)==16){c[A>>2]=0;while(1){if((c[A>>2]|0)>=5)break;Sc(c[(c[o>>2]|0)+4>>2]|0,(c[A>>2]|0)+1|0,w+(c[A>>2]<<2)|0);c[A>>2]=(c[A>>2]|0)+1}c[c[(c[o>>2]|0)+12>>2]>>2]=c[w>>2];z=c[m>>2]|0;do if(c[w+16>>2]|0){A=c[w+16>>2]|0;if(!z){f=A&3;a[y>>0]=f;a[y>>0]=(d[y>>0]|0)==0?1:f;a[(c[(c[(c[l>>2]|0)+16>>2]|0)+12>>2]|0)+77>>0]=a[y>>0]|0;break}if((A|0)!=(d[(c[(c[(c[l>>2]|0)+16>>2]|0)+12>>2]|0)+77>>0]|0)){pn(c[q>>2]|0,c[l>>2]|0,18744,j);c[n>>2]=1;break a}}else{f=(c[(c[(c[l>>2]|0)+16>>2]|0)+(z<<4)+12>>2]|0)+78|0;b[f>>1]=e[f>>1]|4}while(0);a[(c[(c[o>>2]|0)+12>>2]|0)+77>>0]=a[(c[(c[(c[l>>2]|0)+16>>2]|0)+12>>2]|0)+77>>0]|0;if(!(c[(c[(c[o>>2]|0)+12>>2]|0)+80>>2]|0)){f=ds(c[w+8>>2]|0)|0;c[x>>2]=f;c[x>>2]=(c[x>>2]|0)==0?2e3:f;c[(c[(c[o>>2]|0)+12>>2]|0)+80>>2]=c[x>>2];es(c[(c[o>>2]|0)+4>>2]|0,c[(c[(c[o>>2]|0)+12>>2]|0)+80>>2]|0)|0}a[(c[(c[o>>2]|0)+12>>2]|0)+76>>0]=c[w+4>>2];if(!(d[(c[(c[o>>2]|0)+12>>2]|0)+76>>0]|0))a[(c[(c[o>>2]|0)+12>>2]|0)+76>>0]=1;if((d[(c[(c[o>>2]|0)+12>>2]|0)+76>>0]|0)>4){pn(c[q>>2]|0,c[l>>2]|0,18816,j);c[n>>2]=1;break}if((c[m>>2]|0)==0?(c[w+4>>2]|0)>=4:0){f=(c[l>>2]|0)+24|0;c[f>>2]=c[f>>2]&-32769}f=c[l>>2]|0;g=c[s>>2]|0;c[j>>2]=c[(c[(c[l>>2]|0)+16>>2]|0)+(c[m>>2]<<4)>>2];c[j+4>>2]=g;c[t>>2]=Te(f,18840,j)|0;c[u>>2]=c[(c[l>>2]|0)+284>>2];c[(c[l>>2]|0)+284>>2]=0;c[n>>2]=kf(c[l>>2]|0,c[t>>2]|0,6,k,0)|0;c[(c[l>>2]|0)+284>>2]=c[u>>2];if(!(c[n>>2]|0))c[n>>2]=c[k+12>>2];Xb(c[l>>2]|0,c[t>>2]|0);if(!(c[n>>2]|0))fs(c[l>>2]|0,c[m>>2]|0)|0;if(a[(c[l>>2]|0)+64>>0]|0){c[n>>2]=7;cd(c[l>>2]|0)}if((c[n>>2]|0)!=0?(c[(c[l>>2]|0)+24>>2]&65536|0)==0:0)break;f=(c[(c[(c[l>>2]|0)+16>>2]|0)+(c[m>>2]<<4)+12>>2]|0)+78|0;b[f>>1]=e[f>>1]|1;c[n>>2]=0}while(0);if(c[p>>2]|0)gs(c[(c[o>>2]|0)+4>>2]|0)|0}else c[n>>2]=c[k+12>>2];if((c[n>>2]|0)==7|(c[n>>2]|0)==3082)a[(c[l>>2]|0)+64>>0]=1;c[v>>2]=c[n>>2];f=c[v>>2]|0;i=r;return f|0}function as(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;i=i+16|0;e=d+8|0;g=d+4|0;f=d;c[e>>2]=a;c[g>>2]=b;c[f>>2]=(c[(c[e>>2]|0)+16>>2]|0)+(c[g>>2]<<4);wh(c[(c[f>>2]|0)+12>>2]|0);if((c[g>>2]|0)==1){i=d;return}c[f>>2]=(c[(c[e>>2]|0)+16>>2]|0)+16;wh(c[(c[f>>2]|0)+12>>2]|0);i=d;return}function bs(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;a=(c[d>>2]|0)+24|0;c[a>>2]=c[a>>2]&-3;i=b;return}function cs(d,f,g,h){d=d|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;o=i;i=i+48|0;k=o+40|0;s=o+36|0;l=o+28|0;m=o+20|0;j=o+16|0;q=o+12|0;p=o+8|0;n=o+4|0;r=o;c[s>>2]=d;c[o+32>>2]=f;c[l>>2]=g;c[o+24>>2]=h;c[m>>2]=c[s>>2];c[j>>2]=c[c[m>>2]>>2];c[q>>2]=c[(c[m>>2]|0)+8>>2];d=(c[(c[(c[j>>2]|0)+16>>2]|0)+(c[q>>2]<<4)+12>>2]|0)+78|0;b[d>>1]=e[d>>1]&-5;if(a[(c[j>>2]|0)+64>>0]|0){ks(c[m>>2]|0,c[c[l>>2]>>2]|0,0);c[k>>2]=1;s=c[k>>2]|0;i=o;return s|0}if(!(c[l>>2]|0)){c[k>>2]=0;s=c[k>>2]|0;i=o;return s|0}do if(c[(c[l>>2]|0)+4>>2]|0){if((c[(c[l>>2]|0)+8>>2]|0)!=0?(a[c[(c[l>>2]|0)+8>>2]>>0]|0)!=0:0){a[(c[j>>2]|0)+144>>0]=c[q>>2];s=zg(c[(c[l>>2]|0)+4>>2]|0)|0;c[(c[j>>2]|0)+140>>2]=s;a[(c[j>>2]|0)+146>>0]=0;of(c[j>>2]|0,c[(c[l>>2]|0)+8>>2]|0,-1,n,0)|0;c[p>>2]=c[(c[j>>2]|0)+52>>2];a[(c[j>>2]|0)+144>>0]=0;do if(0!=(c[p>>2]|0)?(a[(c[j>>2]|0)+146>>0]|0)==0:0){c[(c[m>>2]|0)+12>>2]=c[p>>2];if((c[p>>2]|0)==7){a[(c[j>>2]|0)+64>>0]=1;break}if((c[p>>2]|0)!=9?(c[p>>2]&255|0)!=6:0){d=c[m>>2]|0;s=c[c[l>>2]>>2]|0;ks(d,s,nf(c[j>>2]|0)|0)}}while(0);td(c[n>>2]|0)|0;break}if(!(c[c[l>>2]>>2]|0)){ks(c[m>>2]|0,0,0);break}c[r>>2]=Op(c[j>>2]|0,c[c[l>>2]>>2]|0,c[(c[(c[j>>2]|0)+16>>2]|0)+(c[q>>2]<<4)>>2]|0)|0;if((c[r>>2]|0)!=0?(Ag(c[(c[l>>2]|0)+4>>2]|0,(c[r>>2]|0)+44|0)|0)==0:0)ks(c[m>>2]|0,c[c[l>>2]>>2]|0,18992)}else ks(c[m>>2]|0,c[c[l>>2]>>2]|0,0);while(0);c[k>>2]=0;s=c[k>>2]|0;i=o;return s|0}function ds(a){a=a|0;var b=0,d=0,e=0;d=i;i=i+16|0;b=d+4|0;e=d;c[e>>2]=a;a=c[e>>2]|0;do if((c[e>>2]|0)<0)if((a|0)==-2147483648){c[b>>2]=2147483647;break}else{c[b>>2]=0-(c[e>>2]|0);break}else c[b>>2]=a;while(0);i=d;return c[b>>2]|0}function es(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;i=i+16|0;g=d+8|0;e=d+4|0;f=d;c[g>>2]=a;c[e>>2]=b;c[f>>2]=c[(c[g>>2]|0)+4>>2];Pc(c[g>>2]|0);Jh(c[c[f>>2]>>2]|0,c[e>>2]|0);i=d;return 0}function fs(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;f=i;i=i+48|0;l=f;k=f+40|0;h=f+36|0;m=f+32|0;e=f+24|0;n=f+16|0;j=f+12|0;g=f+8|0;o=f+4|0;c[h>>2]=b;c[m>>2]=d;c[n>>2]=c[(c[(c[(c[h>>2]|0)+16>>2]|0)+(c[m>>2]<<4)+12>>2]|0)+32>>2];while(1){if(!(c[n>>2]|0))break;c[o>>2]=c[(c[n>>2]|0)+8>>2];hs(c[o>>2]|0);c[n>>2]=c[c[n>>2]>>2]}c[e>>2]=c[h>>2];c[e+4>>2]=c[(c[(c[h>>2]|0)+16>>2]|0)+(c[m>>2]<<4)>>2];if(!(sp(c[h>>2]|0,18392,c[e+4>>2]|0)|0)){c[k>>2]=1;b=c[k>>2]|0;i=f;return b|0}b=c[h>>2]|0;c[l>>2]=c[e+4>>2];c[j>>2]=Te(b,18896,l)|0;if(!(c[j>>2]|0))c[g>>2]=7;else{c[g>>2]=kf(c[h>>2]|0,c[j>>2]|0,7,e,0)|0;Xb(c[h>>2]|0,c[j>>2]|0)}if((c[g>>2]|0)==7)a[(c[h>>2]|0)+64>>0]=1;c[k>>2]=c[g>>2];b=c[k>>2]|0;i=f;return b|0}function gs(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+16|0;e=b+4|0;d=b;c[e>>2]=a;Pc(c[e>>2]|0);c[d>>2]=nd(c[e>>2]|0,0)|0;if(c[d>>2]|0){e=c[d>>2]|0;i=b;return e|0}c[d>>2]=md(c[e>>2]|0,0)|0;e=c[d>>2]|0;i=b;return e|0}function hs(a){a=a|0;var f=0,g=0,h=0,j=0,k=0,l=0;f=i;i=i+32|0;g=f+12|0;k=f+16|0;j=f+8|0;l=f+4|0;h=f;c[g>>2]=a;b[k+0>>1]=b[9488]|0;b[k+2>>1]=b[9489]|0;b[k+4>>1]=b[9490]|0;b[k+6>>1]=b[9491]|0;b[k+8>>1]=b[9492]|0;c[j>>2]=c[(c[g>>2]|0)+8>>2];if(5<(e[(c[g>>2]|0)+50>>1]|0))a=5;else a=e[(c[g>>2]|0)+50>>1]|0;c[l>>2]=a;b[c[j>>2]>>1]=b[(c[(c[g>>2]|0)+12>>2]|0)+28>>1]|0;if((b[c[j>>2]>>1]|0)<33)b[c[j>>2]>>1]=33;dF((c[j>>2]|0)+2|0,k|0,c[l>>2]<<1|0)|0;c[h>>2]=(c[l>>2]|0)+1;while(1){if((c[h>>2]|0)>(e[(c[g>>2]|0)+50>>1]|0))break;b[(c[j>>2]|0)+(c[h>>2]<<1)>>1]=23;c[h>>2]=(c[h>>2]|0)+1}if(!(d[(c[g>>2]|0)+54>>0]|0)){i=f;return}b[(c[j>>2]|0)+(e[(c[g>>2]|0)+50>>1]<<1)>>1]=0;i=f;return}function is(d,f,g,h){d=d|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;p=i;i=i+112|0;k=p+96|0;t=p+92|0;r=p+84|0;s=p+76|0;l=p+72|0;j=p+68|0;o=p+64|0;m=p+60|0;n=p+56|0;q=p;c[t>>2]=d;c[p+88>>2]=f;c[r>>2]=g;c[p+80>>2]=h;c[s>>2]=c[t>>2];if(((c[r>>2]|0)!=0?(c[c[r>>2]>>2]|0)!=0:0)?(c[(c[r>>2]|0)+8>>2]|0)!=0:0){c[j>>2]=sp(c[c[s>>2]>>2]|0,c[c[r>>2]>>2]|0,c[(c[s>>2]|0)+4>>2]|0)|0;if(!(c[j>>2]|0)){c[k>>2]=0;t=c[k>>2]|0;i=p;return t|0}do if(c[(c[r>>2]|0)+4>>2]|0)if(!(xc(c[c[r>>2]>>2]|0,c[(c[r>>2]|0)+4>>2]|0)|0)){c[l>>2]=Zr(c[j>>2]|0)|0;break}else{c[l>>2]=Op(c[c[s>>2]>>2]|0,c[(c[r>>2]|0)+4>>2]|0,c[(c[s>>2]|0)+4>>2]|0)|0;break}else c[l>>2]=0;while(0);c[o>>2]=c[(c[r>>2]|0)+8>>2];if(c[l>>2]|0){c[m>>2]=(e[(c[l>>2]|0)+50>>1]|0)+1;c[n>>2]=0;t=(c[l>>2]|0)+55|0;a[t>>0]=a[t>>0]&-5;js(c[o>>2]|0,c[m>>2]|0,c[n>>2]|0,c[(c[l>>2]|0)+8>>2]|0,c[l>>2]|0);if(!(c[(c[l>>2]|0)+36>>2]|0))b[(c[j>>2]|0)+28>>1]=b[c[(c[l>>2]|0)+8>>2]>>1]|0}else{b[q+48>>1]=b[(c[j>>2]|0)+42>>1]|0;js(c[o>>2]|0,1,0,(c[j>>2]|0)+28|0,q);b[(c[j>>2]|0)+42>>1]=b[q+48>>1]|0}c[k>>2]=0;t=c[k>>2]|0;i=p;return t|0}c[k>>2]=0;t=c[k>>2]|0;i=p;return t|0}function js(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;o=i;i=i+48|0;r=o+32|0;q=o+28|0;n=o+20|0;l=o+16|0;k=o+12|0;p=o+8|0;j=o+4|0;m=o;c[r>>2]=d;c[q>>2]=e;c[o+24>>2]=f;c[n>>2]=g;c[l>>2]=h;c[k>>2]=c[r>>2];c[j>>2]=0;while(1){if(!(a[c[k>>2]>>0]|0))break;if((c[j>>2]|0)>=(c[q>>2]|0))break;c[m>>2]=0;while(1){r=a[c[k>>2]>>0]|0;c[p>>2]=r;if(!((r|0)>=48&(c[p>>2]|0)<=57))break;c[m>>2]=((c[m>>2]|0)*10|0)+(c[p>>2]|0)-48;c[k>>2]=(c[k>>2]|0)+1}r=dq(c[m>>2]|0,0)|0;b[(c[n>>2]|0)+(c[j>>2]<<1)>>1]=r;if((a[c[k>>2]>>0]|0)==32)c[k>>2]=(c[k>>2]|0)+1;c[j>>2]=(c[j>>2]|0)+1}a:while(1){if(!(a[c[k>>2]>>0]|0))break;if(hf(18944,c[k>>2]|0)|0){if(!(hf(18960,c[k>>2]|0)|0)){r=zg((c[k>>2]|0)+3|0)|0;r=dq(r,((r|0)<0)<<31>>31)|0;b[(c[l>>2]|0)+48>>1]=r}}else{r=(c[l>>2]|0)+55|0;a[r>>0]=a[r>>0]&-5|4}while(1){if(!(a[c[k>>2]>>0]|0))break;if((a[c[k>>2]>>0]|0)==32)break;c[k>>2]=(c[k>>2]|0)+1}while(1){if((a[c[k>>2]>>0]|0)!=32)continue a;c[k>>2]=(c[k>>2]|0)+1}}i=o;return}function ks(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;h=i;i=i+32|0;l=h;g=h+20|0;m=h+16|0;k=h+12|0;j=h+8|0;c[g>>2]=b;c[m>>2]=e;c[k>>2]=f;c[j>>2]=c[c[g>>2]>>2];if((a[(c[j>>2]|0)+64>>0]|0)==0?(c[(c[j>>2]|0)+24>>2]&65536|0)==0:0){if(!(c[m>>2]|0))c[m>>2]=19016;e=c[(c[g>>2]|0)+4>>2]|0;b=c[j>>2]|0;c[l>>2]=c[m>>2];pn(e,b,19024,l);if(c[k>>2]|0){e=c[j>>2]|0;b=c[c[(c[g>>2]|0)+4>>2]>>2]|0;m=c[k>>2]|0;c[l>>2]=c[c[(c[g>>2]|0)+4>>2]>>2];c[l+4>>2]=m;b=ls(e,b,19056,l)|0;c[c[(c[g>>2]|0)+4>>2]>>2]=b}}if(d[(c[j>>2]|0)+64>>0]|0){e=7;b=c[g>>2]|0;b=b+12|0;c[b>>2]=e;i=h;return}e=kj(103217)|0;b=c[g>>2]|0;b=b+12|0;c[b>>2]=e;i=h;return}function ls(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;g=i;i=i+48|0;j=g+32|0;h=g+28|0;l=g+24|0;k=g+8|0;f=g;c[j>>2]=a;c[h>>2]=b;c[l>>2]=d;c[k>>2]=e;c[f>>2]=yn(c[j>>2]|0,c[l>>2]|0,k)|0;Xb(c[j>>2]|0,c[h>>2]|0);i=g;return c[f>>2]|0}function ms(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;d=i;i=i+32|0;k=d+24|0;l=d+20|0;e=d+16|0;g=d+12|0;h=d+8|0;f=d+4|0;j=d;c[k>>2]=a;c[l>>2]=b;c[h>>2]=c[c[k>>2]>>2];c[g>>2]=0;c[e>>2]=c[(c[h>>2]|0)+16>>2];while(1){if((c[g>>2]|0)>=(c[(c[h>>2]|0)+20>>2]|0))break;c[f>>2]=c[(c[(c[e>>2]|0)+12>>2]|0)+16>>2];while(1){if(!(c[f>>2]|0))break;c[j>>2]=c[(c[f>>2]|0)+8>>2];ns(c[k>>2]|0,c[j>>2]|0,c[l>>2]|0);c[f>>2]=c[c[f>>2]>>2]}c[g>>2]=(c[g>>2]|0)+1;c[e>>2]=(c[e>>2]|0)+16}i=d;return}function ns(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;e=i;i=i+32|0;f=e+16|0;g=e+12|0;k=e+8|0;j=e+4|0;h=e;c[f>>2]=a;c[g>>2]=b;c[k>>2]=d;c[j>>2]=c[(c[g>>2]|0)+8>>2];while(1){if(!(c[j>>2]|0))break;if(!((c[k>>2]|0)!=0?(qt(c[k>>2]|0,c[j>>2]|0)|0)==0:0)){c[h>>2]=Ve(c[c[f>>2]>>2]|0,c[(c[g>>2]|0)+68>>2]|0)|0;pp(c[f>>2]|0,0,c[h>>2]|0);os(c[f>>2]|0,c[j>>2]|0,-1)}c[j>>2]=c[(c[j>>2]|0)+20>>2]}i=e;return}function os(a,b,f){a=a|0;b=b|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;q=i;i=i+80|0;o=q+64|0;g=q+60|0;u=q+56|0;w=q+52|0;h=q+48|0;p=q+44|0;l=q+40|0;r=q+36|0;k=q+32|0;s=q+28|0;x=q+24|0;j=q+20|0;t=q+16|0;m=q+12|0;y=q+8|0;v=q+4|0;n=q;c[o>>2]=a;c[g>>2]=b;c[u>>2]=f;c[w>>2]=c[(c[g>>2]|0)+12>>2];a=(c[o>>2]|0)+68|0;b=c[a>>2]|0;c[a>>2]=b+1;c[h>>2]=b;b=(c[o>>2]|0)+68|0;a=c[b>>2]|0;c[b>>2]=a+1;c[p>>2]=a;c[y>>2]=c[c[o>>2]>>2];c[v>>2]=Ve(c[y>>2]|0,c[(c[g>>2]|0)+24>>2]|0)|0;if(ap(c[o>>2]|0,27,c[c[g>>2]>>2]|0,0,c[(c[(c[y>>2]|0)+16>>2]|0)+(c[v>>2]<<4)>>2]|0)|0){i=q;return}Jr(c[o>>2]|0,c[v>>2]|0,c[(c[w>>2]|0)+32>>2]|0,1,c[c[w>>2]>>2]|0);c[j>>2]=dp(c[o>>2]|0)|0;if(!(c[j>>2]|0)){i=q;return}if((c[u>>2]|0)>=0)c[s>>2]=c[u>>2];else c[s>>2]=c[(c[g>>2]|0)+44>>2];c[t>>2]=Wr(c[o>>2]|0,c[g>>2]|0)|0;a=(c[o>>2]|0)+68|0;b=c[a>>2]|0;c[a>>2]=b+1;c[l>>2]=b;b=c[j>>2]|0;a=c[l>>2]|0;y=e[(c[g>>2]|0)+50>>1]|0;hp(b,58,a,0,y,Yr(c[t>>2]|0)|0,-6)|0;Kr(c[o>>2]|0,c[h>>2]|0,c[v>>2]|0,c[w>>2]|0,54);c[r>>2]=fp(c[j>>2]|0,108,c[h>>2]|0,0)|0;c[m>>2]=kp(c[o>>2]|0)|0;ps(c[o>>2]|0,c[g>>2]|0,c[h>>2]|0,c[m>>2]|0,0,x,0,0)|0;fp(c[j>>2]|0,109,c[l>>2]|0,c[m>>2]|0)|0;qs(c[o>>2]|0,c[x>>2]|0);fp(c[j>>2]|0,9,c[h>>2]|0,(c[r>>2]|0)+1|0)|0;zp(c[j>>2]|0,c[r>>2]|0);if((c[u>>2]|0)<0)fp(c[j>>2]|0,118,c[s>>2]|0,c[v>>2]|0)|0;hp(c[j>>2]|0,55,c[p>>2]|0,c[s>>2]|0,c[v>>2]|0,c[t>>2]|0,-6)|0;Xe(c[j>>2]|0,(1|((c[u>>2]|0)>=0?2:0))&255);c[r>>2]=fp(c[j>>2]|0,106,c[l>>2]|0,0)|0;y=(c[t>>2]|0)!=0?(d[(c[g>>2]|0)+54>>0]|0|0)!=0:0;s=Mr(c[j>>2]|0)|0;if(y){c[n>>2]=s+3;fp(c[j>>2]|0,16,0,c[n>>2]|0)|0;c[k>>2]=Mr(c[j>>2]|0)|0;We(c[j>>2]|0,99,c[l>>2]|0,c[n>>2]|0,c[m>>2]|0,e[(c[g>>2]|0)+50>>1]|0)|0;rs(c[o>>2]|0,2,c[g>>2]|0)}else c[k>>2]=s;ip(c[j>>2]|0,100,c[l>>2]|0,c[m>>2]|0,c[p>>2]|0)|0;ip(c[j>>2]|0,110,c[p>>2]|0,c[m>>2]|0,1)|0;Xe(c[j>>2]|0,16);lp(c[o>>2]|0,c[m>>2]|0);fp(c[j>>2]|0,5,c[l>>2]|0,c[k>>2]|0)|0;zp(c[j>>2]|0,c[r>>2]|0);Ir(c[j>>2]|0,61,c[h>>2]|0)|0;Ir(c[j>>2]|0,61,c[p>>2]|0)|0;Ir(c[j>>2]|0,61,c[l>>2]|0)|0;i=q;return}function ps(a,e,f,g,h,j,k,l){a=a|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;x=i;i=i+64|0;n=x+48|0;q=x+44|0;p=x+40|0;w=x+36|0;y=x+32|0;z=x+28|0;t=x+24|0;v=x+20|0;s=x+16|0;r=x+12|0;o=x+8|0;m=x+4|0;u=x;c[n>>2]=a;c[q>>2]=e;c[p>>2]=f;c[w>>2]=g;c[y>>2]=h;c[z>>2]=j;c[t>>2]=k;c[v>>2]=l;c[s>>2]=c[(c[n>>2]|0)+8>>2];c[o>>2]=c[(c[q>>2]|0)+12>>2];do if(c[z>>2]|0)if(c[(c[q>>2]|0)+36>>2]|0){a=Nr(c[s>>2]|0)|0;c[c[z>>2]>>2]=a;c[(c[n>>2]|0)+96>>2]=c[p>>2];ws(c[n>>2]|0);xs(c[n>>2]|0,c[(c[q>>2]|0)+36>>2]|0,c[c[z>>2]>>2]|0,16);break}else{c[c[z>>2]>>2]=0;break}while(0);if((c[y>>2]|0)!=0?((d[(c[q>>2]|0)+55>>0]|0)>>>3&1|0)!=0:0)l=b[(c[q>>2]|0)+50>>1]|0;else l=b[(c[q>>2]|0)+52>>1]|0;c[u>>2]=l&65535;c[m>>2]=ys(c[n>>2]|0,c[u>>2]|0)|0;do if(c[t>>2]|0){if((c[m>>2]|0)==(c[v>>2]|0)?(c[(c[t>>2]|0)+36>>2]|0)==0:0)break;c[t>>2]=0}while(0);c[r>>2]=0;while(1){if((c[r>>2]|0)>=(c[u>>2]|0))break;if(!((c[t>>2]|0)!=0?(b[(c[(c[t>>2]|0)+4>>2]|0)+(c[r>>2]<<1)>>1]|0)==(b[(c[(c[q>>2]|0)+4>>2]|0)+(c[r>>2]<<1)>>1]|0):0)){zs(c[s>>2]|0,c[o>>2]|0,c[p>>2]|0,b[(c[(c[q>>2]|0)+4>>2]|0)+(c[r>>2]<<1)>>1]|0,(c[m>>2]|0)+(c[r>>2]|0)|0);As(c[s>>2]|0,39)|0}c[r>>2]=(c[r>>2]|0)+1}if(!(c[w>>2]|0)){f=c[n>>2]|0;e=c[m>>2]|0;a=c[u>>2]|0;Bs(f,e,a);a=c[m>>2]|0;i=x;return a|0}ip(c[s>>2]|0,49,c[m>>2]|0,c[u>>2]|0,c[w>>2]|0)|0;f=c[n>>2]|0;e=c[m>>2]|0;a=c[u>>2]|0;Bs(f,e,a);a=c[m>>2]|0;i=x;return a|0}function qs(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;if(!(c[f>>2]|0)){i=d;return}Pr(c[(c[e>>2]|0)+8>>2]|0,c[f>>2]|0);us(c[e>>2]|0);i=d;return}function rs(d,f,g){d=d|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;h=i;i=i+64|0;k=h+52|0;m=h+48|0;l=h+44|0;j=h+40|0;p=h+36|0;n=h+8|0;o=h+4|0;q=h;c[k>>2]=d;c[m>>2]=f;c[l>>2]=g;c[o>>2]=c[(c[l>>2]|0)+12>>2];nc(n,0,0,200);c[n>>2]=c[c[k>>2]>>2];c[p>>2]=0;while(1){if((c[p>>2]|0)>=(e[(c[l>>2]|0)+50>>1]|0))break;c[q>>2]=c[(c[(c[o>>2]|0)+4>>2]|0)+((b[(c[(c[l>>2]|0)+4>>2]|0)+(c[p>>2]<<1)>>1]|0)*24|0)>>2];if(c[p>>2]|0)Vm(n,19112,2);ss(n,c[c[o>>2]>>2]|0);Vm(n,19120,1);ss(n,c[q>>2]|0);c[p>>2]=(c[p>>2]|0)+1}c[j>>2]=pc(n)|0;ts(c[k>>2]|0,(a[(c[l>>2]|0)+55>>0]&3|0)==2?1555:2067,c[m>>2]|0,c[j>>2]|0,-1,2);i=h;return}function ss(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;b=c[f>>2]|0;a=c[e>>2]|0;Vm(b,a,Mb(c[e>>2]|0)|0);i=d;return}function ts(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;p=i;i=i+32|0;q=p+16|0;m=p+12|0;n=p+8|0;o=p+4|0;j=p+21|0;l=p+20|0;k=p;c[q>>2]=b;c[m>>2]=d;c[n>>2]=e;c[o>>2]=f;a[j>>0]=g;a[l>>0]=h;c[k>>2]=dp(c[q>>2]|0)|0;if((c[n>>2]|0)==2)Sp(c[q>>2]|0);hp(c[k>>2]|0,24,c[m>>2]|0,c[n>>2]|0,0,c[o>>2]|0,a[j>>0]|0)|0;if(!(a[l>>0]|0)){i=p;return}Xe(c[k>>2]|0,a[l>>0]|0);i=p;return}function us(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;i=i+16|0;e=b+8|0;f=b+4|0;d=b;c[e>>2]=a;a=(c[e>>2]|0)+100|0;c[a>>2]=(c[a>>2]|0)+ -1;c[f>>2]=0;c[d>>2]=(c[e>>2]|0)+116;while(1){if((c[f>>2]|0)>=10)break;if((c[(c[d>>2]|0)+12>>2]|0)!=0?(c[(c[d>>2]|0)+8>>2]|0)>(c[(c[e>>2]|0)+100>>2]|0):0){vs(c[e>>2]|0,c[d>>2]|0);c[(c[d>>2]|0)+12>>2]=0}c[f>>2]=(c[f>>2]|0)+1;c[d>>2]=(c[d>>2]|0)+20}i=b;return}function vs(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0;f=i;i=i+16|0;h=f+4|0;g=f;c[h>>2]=b;c[g>>2]=e;if(!(a[(c[g>>2]|0)+6>>0]|0)){i=f;return}if((d[(c[h>>2]|0)+19>>0]|0)<8){e=c[(c[g>>2]|0)+12>>2]|0;j=(c[h>>2]|0)+19|0;b=a[j>>0]|0;a[j>>0]=b+1<<24>>24;c[(c[h>>2]|0)+24+((b&255)<<2)>>2]=e}a[(c[g>>2]|0)+6>>0]=0;i=f;return}function ws(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;a=(c[d>>2]|0)+100|0;c[a>>2]=(c[a>>2]|0)+1;i=b;return}function xs(a,b,e,f){a=a|0;b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;o=i;i=i+48|0;h=o+44|0;l=o+40|0;m=o+36|0;n=o+32|0;g=o+28|0;s=o+24|0;j=o+20|0;k=o+16|0;q=o+12|0;r=o+8|0;p=o+4|0;t=o;c[h>>2]=a;c[l>>2]=b;c[m>>2]=e;c[n>>2]=f;c[g>>2]=c[(c[h>>2]|0)+8>>2];c[s>>2]=0;c[j>>2]=0;c[k>>2]=0;if((c[g>>2]|0)==0|(c[l>>2]|0)==0){i=o;return}c[s>>2]=((d[c[l>>2]>>0]|0)+0^1)-0;a:do switch(d[c[l>>2]>>0]|0|0){case 19:{Gs(c[h>>2]|0,c[(c[l>>2]|0)+12>>2]|0,c[m>>2]|0,c[n>>2]|0);break};case 71:{c[p>>2]=Nr(c[g>>2]|0)|0;Gs(c[h>>2]|0,c[(c[l>>2]|0)+12>>2]|0,c[p>>2]|0,c[n>>2]^16);ws(c[h>>2]|0);xs(c[h>>2]|0,c[(c[l>>2]|0)+16>>2]|0,c[m>>2]|0,c[n>>2]|0);Pr(c[g>>2]|0,c[p>>2]|0);us(c[h>>2]|0);break};case 79:case 78:case 83:case 80:case 81:case 82:{c[q>>2]=Hs(c[h>>2]|0,c[(c[l>>2]|0)+12>>2]|0,j)|0;c[r>>2]=Hs(c[h>>2]|0,c[(c[l>>2]|0)+16>>2]|0,k)|0;Is(c[h>>2]|0,c[(c[l>>2]|0)+12>>2]|0,c[(c[l>>2]|0)+16>>2]|0,c[s>>2]|0,c[q>>2]|0,c[r>>2]|0,c[m>>2]|0,c[n>>2]|0)|0;break};case 74:{Js(c[h>>2]|0,c[l>>2]|0,c[m>>2]|0,0,c[n>>2]|0);break};case 72:{xs(c[h>>2]|0,c[(c[l>>2]|0)+12>>2]|0,c[m>>2]|0,c[n>>2]|0);ws(c[h>>2]|0);xs(c[h>>2]|0,c[(c[l>>2]|0)+16>>2]|0,c[m>>2]|0,c[n>>2]|0);us(c[h>>2]|0);break};case 77:case 76:{c[q>>2]=Hs(c[h>>2]|0,c[(c[l>>2]|0)+12>>2]|0,j)|0;fp(c[g>>2]|0,c[s>>2]|0,c[q>>2]|0,c[m>>2]|0)|0;break};case 75:if(c[n>>2]|0){Ks(c[h>>2]|0,c[l>>2]|0,c[m>>2]|0,c[m>>2]|0);break a}else{c[t>>2]=Nr(c[g>>2]|0)|0;Ks(c[h>>2]|0,c[l>>2]|0,c[m>>2]|0,c[t>>2]|0);Pr(c[g>>2]|0,c[t>>2]|0);break a};case 148:case 73:{c[q>>2]=Hs(c[h>>2]|0,c[(c[l>>2]|0)+12>>2]|0,j)|0;c[r>>2]=Hs(c[h>>2]|0,c[(c[l>>2]|0)+16>>2]|0,k)|0;c[s>>2]=(d[c[l>>2]>>0]|0|0)==73?78:79;Is(c[h>>2]|0,c[(c[l>>2]|0)+12>>2]|0,c[(c[l>>2]|0)+16>>2]|0,c[s>>2]|0,c[q>>2]|0,c[r>>2]|0,c[m>>2]|0,128)|0;break};default:{if(nr(c[l>>2]|0)|0){fp(c[g>>2]|0,16,0,c[m>>2]|0)|0;break a}if(!(Ls(c[l>>2]|0)|0)){c[q>>2]=Hs(c[h>>2]|0,c[l>>2]|0,j)|0;ip(c[g>>2]|0,46,c[q>>2]|0,c[m>>2]|0,(c[n>>2]|0)!=0&1)|0}}}while(0);lp(c[h>>2]|0,c[j>>2]|0);lp(c[h>>2]|0,c[k>>2]|0);i=o;return}function ys(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=i;i=i+16|0;g=d+12|0;f=d+8|0;e=d+4|0;h=d;c[g>>2]=a;c[f>>2]=b;c[e>>2]=c[(c[g>>2]|0)+60>>2];c[h>>2]=c[(c[g>>2]|0)+56>>2];if((c[f>>2]|0)<=(c[h>>2]|0)){h=(c[g>>2]|0)+60|0;c[h>>2]=(c[h>>2]|0)+(c[f>>2]|0);h=(c[g>>2]|0)+56|0;c[h>>2]=(c[h>>2]|0)-(c[f>>2]|0);h=c[e>>2]|0;i=d;return h|0}else{c[e>>2]=(c[(c[g>>2]|0)+72>>2]|0)+1;h=(c[g>>2]|0)+72|0;c[h>>2]=(c[h>>2]|0)+(c[f>>2]|0);h=c[e>>2]|0;i=d;return h|0}return 0}function zs(a,e,f,g,h){a=a|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;o=i;i=i+32|0;k=o+24|0;l=o+20|0;p=o+16|0;m=o+12|0;n=o+8|0;j=o+4|0;q=o;c[k>>2]=a;c[l>>2]=e;c[p>>2]=f;c[m>>2]=g;c[n>>2]=h;if((c[m>>2]|0)>=0?(c[m>>2]|0)!=(b[(c[l>>2]|0)+36>>1]|0):0){c[j>>2]=(d[(c[l>>2]|0)+44>>0]&16|0)!=0?148:47;c[q>>2]=c[m>>2];if(d[(c[l>>2]|0)+44>>0]&32){a=Zr(c[l>>2]|0)|0;c[q>>2]=(Ds(a,c[m>>2]&65535)|0)<<16>>16}ip(c[k>>2]|0,c[j>>2]|0,c[p>>2]|0,c[q>>2]|0,c[n>>2]|0)|0}else fp(c[k>>2]|0,103,c[p>>2]|0,c[n>>2]|0)|0;if((c[m>>2]|0)<0){i=o;return}Es(c[k>>2]|0,c[l>>2]|0,c[m>>2]|0,c[n>>2]|0);i=o;return}function As(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0;f=i;i=i+16|0;g=f+4|0;h=f;j=f+8|0;c[h>>2]=b;a[j>>0]=e;if(((c[(c[h>>2]|0)+32>>2]|0)-1|0)>(c[(c[(c[h>>2]|0)+24>>2]|0)+88>>2]|0)?(d[(c[(c[h>>2]|0)+4>>2]|0)+(((c[(c[h>>2]|0)+32>>2]|0)-1|0)*20|0)>>0]|0|0)==(d[j>>0]|0|0):0){cf(c[h>>2]|0,(c[(c[h>>2]|0)+32>>2]|0)-1|0);c[g>>2]=1;j=c[g>>2]|0;i=f;return j|0}c[g>>2]=0;j=c[g>>2]|0;i=f;return j|0}function Bs(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+16|0;g=e+8|0;h=e+4|0;f=e;c[g>>2]=a;c[h>>2]=b;c[f>>2]=d;Cs(c[g>>2]|0,c[h>>2]|0,c[f>>2]|0);if((c[f>>2]|0)<=(c[(c[g>>2]|0)+56>>2]|0)){i=e;return}c[(c[g>>2]|0)+56>>2]=c[f>>2];c[(c[g>>2]|0)+60>>2]=c[h>>2];i=e;return}function Cs(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;e=i;i=i+32|0;f=e+24|0;j=e+20|0;m=e+16|0;l=e+12|0;k=e+8|0;g=e+4|0;h=e;c[f>>2]=a;c[j>>2]=b;c[m>>2]=d;c[k>>2]=(c[j>>2]|0)+(c[m>>2]|0)-1;c[l>>2]=0;c[g>>2]=(c[f>>2]|0)+116;while(1){if((c[l>>2]|0)>=10)break;c[h>>2]=c[(c[g>>2]|0)+12>>2];if((c[h>>2]|0)>=(c[j>>2]|0)?(c[h>>2]|0)<=(c[k>>2]|0):0){vs(c[f>>2]|0,c[g>>2]|0);c[(c[g>>2]|0)+12>>2]=0}c[l>>2]=(c[l>>2]|0)+1;c[g>>2]=(c[g>>2]|0)+20}i=e;return}function Ds(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,j=0,k=0;g=i;i=i+16|0;f=g+10|0;k=g+4|0;j=g+8|0;h=g;c[k>>2]=a;b[j>>1]=d;c[h>>2]=0;while(1){if((c[h>>2]|0)>=(e[(c[k>>2]|0)+52>>1]|0)){h=6;break}d=c[h>>2]|0;if((b[j>>1]|0)==(b[(c[(c[k>>2]|0)+4>>2]|0)+(c[h>>2]<<1)>>1]|0)){h=4;break}c[h>>2]=d+1}if((h|0)==4){b[f>>1]=d;a=b[f>>1]|0;i=g;return a|0}else if((h|0)==6){b[f>>1]=-1;a=b[f>>1]|0;i=g;return a|0}return 0}function Es(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;m=i;i=i+32|0;h=m+20|0;k=m+16|0;l=m+12|0;j=m+8|0;g=m+4|0;n=m+24|0;o=m;c[h>>2]=b;c[k>>2]=d;c[l>>2]=e;c[j>>2]=f;if(c[(c[k>>2]|0)+12>>2]|0){i=m;return}c[g>>2]=0;a[n>>0]=a[(c[(c[(Fs(c[h>>2]|0)|0)+16>>2]|0)+12>>2]|0)+77>>0]|0;c[o>>2]=(c[(c[k>>2]|0)+4>>2]|0)+((c[l>>2]|0)*24|0);b=Fs(c[h>>2]|0)|0;tp(b,c[(c[o>>2]|0)+4>>2]|0,a[n>>0]|0,a[(c[o>>2]|0)+21>>0]|0,g)|0;if(c[g>>2]|0)bf(c[h>>2]|0,-1,c[g>>2]|0,-8);if((a[(c[(c[k>>2]|0)+4>>2]|0)+((c[l>>2]|0)*24|0)+21>>0]|0)!=69){i=m;return}Ir(c[h>>2]|0,39,c[j>>2]|0)|0;i=m;return}function Fs(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;i=d;return c[c[b>>2]>>2]|0}function Gs(a,b,e,f){a=a|0;b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;p=i;i=i+64|0;h=p+48|0;l=p+44|0;m=p+40|0;n=p+36|0;o=p+32|0;t=p+28|0;j=p+24|0;k=p+20|0;r=p+16|0;s=p+12|0;u=p+8|0;g=p+4|0;q=p;c[h>>2]=a;c[l>>2]=b;c[m>>2]=e;c[n>>2]=f;c[o>>2]=c[(c[h>>2]|0)+8>>2];c[t>>2]=0;c[j>>2]=0;c[k>>2]=0;if((c[o>>2]|0)==0|(c[l>>2]|0)==0){i=p;return}c[t>>2]=d[c[l>>2]>>0];a:do switch(c[t>>2]|0){case 19:{xs(c[h>>2]|0,c[(c[l>>2]|0)+12>>2]|0,c[m>>2]|0,c[n>>2]|0);break};case 75:{c[g>>2]=Nr(c[o>>2]|0)|0;c[q>>2]=(c[n>>2]|0)!=0?c[m>>2]|0:c[g>>2]|0;Ks(c[h>>2]|0,c[l>>2]|0,c[g>>2]|0,c[q>>2]|0);fp(c[o>>2]|0,16,0,c[m>>2]|0)|0;Pr(c[o>>2]|0,c[g>>2]|0);break};case 148:case 73:{c[r>>2]=Hs(c[h>>2]|0,c[(c[l>>2]|0)+12>>2]|0,j)|0;c[s>>2]=Hs(c[h>>2]|0,c[(c[l>>2]|0)+16>>2]|0,k)|0;c[t>>2]=(c[t>>2]|0)==73?79:78;Is(c[h>>2]|0,c[(c[l>>2]|0)+12>>2]|0,c[(c[l>>2]|0)+16>>2]|0,c[t>>2]|0,c[r>>2]|0,c[s>>2]|0,c[m>>2]|0,128)|0;break};case 79:case 78:case 83:case 80:case 81:case 82:{c[r>>2]=Hs(c[h>>2]|0,c[(c[l>>2]|0)+12>>2]|0,j)|0;c[s>>2]=Hs(c[h>>2]|0,c[(c[l>>2]|0)+16>>2]|0,k)|0;Is(c[h>>2]|0,c[(c[l>>2]|0)+12>>2]|0,c[(c[l>>2]|0)+16>>2]|0,c[t>>2]|0,c[r>>2]|0,c[s>>2]|0,c[m>>2]|0,c[n>>2]|0)|0;break};case 72:{c[u>>2]=Nr(c[o>>2]|0)|0;xs(c[h>>2]|0,c[(c[l>>2]|0)+12>>2]|0,c[u>>2]|0,c[n>>2]^16);ws(c[h>>2]|0);Gs(c[h>>2]|0,c[(c[l>>2]|0)+16>>2]|0,c[m>>2]|0,c[n>>2]|0);Pr(c[o>>2]|0,c[u>>2]|0);us(c[h>>2]|0);break};case 71:{Gs(c[h>>2]|0,c[(c[l>>2]|0)+12>>2]|0,c[m>>2]|0,c[n>>2]|0);ws(c[h>>2]|0);Gs(c[h>>2]|0,c[(c[l>>2]|0)+16>>2]|0,c[m>>2]|0,c[n>>2]|0);us(c[h>>2]|0);break};case 74:{Js(c[h>>2]|0,c[l>>2]|0,c[m>>2]|0,1,c[n>>2]|0);break};case 77:case 76:{c[r>>2]=Hs(c[h>>2]|0,c[(c[l>>2]|0)+12>>2]|0,j)|0;fp(c[o>>2]|0,c[t>>2]|0,c[r>>2]|0,c[m>>2]|0)|0;break};default:{if(Ls(c[l>>2]|0)|0){fp(c[o>>2]|0,16,0,c[m>>2]|0)|0;break a}if(!(nr(c[l>>2]|0)|0)){c[r>>2]=Hs(c[h>>2]|0,c[l>>2]|0,j)|0;ip(c[o>>2]|0,45,c[r>>2]|0,c[m>>2]|0,(c[n>>2]|0)!=0&1)|0}}}while(0);lp(c[h>>2]|0,c[j>>2]|0);lp(c[h>>2]|0,c[k>>2]|0);i=p;return}function Hs(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;m=i;i=i+48|0;l=m+32|0;n=m+28|0;j=m+24|0;p=m+20|0;h=m+16|0;o=m+12|0;f=m+8|0;k=m+4|0;q=m;c[n>>2]=a;c[j>>2]=b;c[p>>2]=e;c[j>>2]=iq(c[j>>2]|0)|0;if(((d[(c[n>>2]|0)+23>>0]|0|0)!=0?(d[c[j>>2]>>0]|0|0)!=159:0)?(pt(c[j>>2]|0)|0)!=0:0){c[o>>2]=c[(c[n>>2]|0)+316>>2];c[c[p>>2]>>2]=0;a:do if(c[o>>2]|0){c[k>>2]=c[(c[o>>2]|0)+4>>2];c[f>>2]=c[c[o>>2]>>2];while(1){if((c[f>>2]|0)<=0)break a;if(((d[(c[k>>2]|0)+13>>0]|0)>>>2&1|0)!=0?(Dq(c[c[k>>2]>>2]|0,c[j>>2]|0,-1)|0)==0:0)break;c[k>>2]=(c[k>>2]|0)+20;c[f>>2]=(c[f>>2]|0)+ -1}c[l>>2]=c[(c[k>>2]|0)+16>>2];a=c[l>>2]|0;i=m;return a|0}while(0);b=(c[n>>2]|0)+72|0;a=(c[b>>2]|0)+1|0;c[b>>2]=a;c[h>>2]=a;ct(c[n>>2]|0,c[j>>2]|0,c[h>>2]|0,1)}else g=12;do if((g|0)==12){c[q>>2]=kp(c[n>>2]|0)|0;c[h>>2]=Qs(c[n>>2]|0,c[j>>2]|0,c[q>>2]|0)|0;if((c[h>>2]|0)==(c[q>>2]|0)){c[c[p>>2]>>2]=c[q>>2];break}else{lp(c[n>>2]|0,c[q>>2]|0);c[c[p>>2]>>2]=0;break}}while(0);c[l>>2]=c[h>>2];a=c[l>>2]|0;i=m;return a|0}function Is(a,b,d,e,f,g,h,j){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;l=i;i=i+48|0;n=l+40|0;v=l+36|0;u=l+32|0;s=l+28|0;p=l+24|0;r=l+20|0;q=l+16|0;t=l+12|0;m=l+8|0;k=l+4|0;o=l;c[n>>2]=a;c[v>>2]=b;c[u>>2]=d;c[s>>2]=e;c[p>>2]=f;c[r>>2]=g;c[q>>2]=h;c[t>>2]=j;c[o>>2]=at(c[n>>2]|0,c[v>>2]|0,c[u>>2]|0)|0;c[m>>2]=(ot(c[v>>2]|0,c[u>>2]|0,c[t>>2]|0)|0)&255;c[k>>2]=hp(c[(c[n>>2]|0)+8>>2]|0,c[s>>2]|0,c[r>>2]|0,c[q>>2]|0,c[p>>2]|0,c[o>>2]|0,-4)|0;Xe(c[(c[n>>2]|0)+8>>2]|0,c[m>>2]&255);i=l;return c[k>>2]|0}function Js(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;j=i;i=i+224|0;h=j+216|0;p=j+212|0;o=j+208|0;k=j+204|0;n=j+200|0;m=j+152|0;q=j+104|0;s=j+56|0;r=j+8|0;l=j;c[h>>2]=b;c[p>>2]=d;c[o>>2]=e;c[k>>2]=f;c[n>>2]=g;c[l>>2]=0;e=r+0|0;f=(c[(c[p>>2]|0)+12>>2]|0)+0|0;g=e+48|0;do{c[e>>2]=c[f>>2];e=e+4|0;f=f+4|0}while((e|0)<(g|0));a[m>>0]=72;c[m+12>>2]=q;c[m+16>>2]=s;a[q>>0]=83;c[q+12>>2]=r;c[q+16>>2]=c[c[(c[(c[p>>2]|0)+20>>2]|0)+4>>2]>>2];a[s>>0]=81;c[s+12>>2]=r;c[s+16>>2]=c[(c[(c[(c[p>>2]|0)+20>>2]|0)+4>>2]|0)+20>>2];Zs(r,Hs(c[h>>2]|0,r,l)|0);p=c[h>>2]|0;o=c[o>>2]|0;n=c[n>>2]|0;if(c[k>>2]|0){Gs(p,m,o,n);d=c[h>>2]|0;b=c[l>>2]|0;lp(d,b);i=j;return}else{xs(p,m,o,n);d=c[h>>2]|0;b=c[l>>2]|0;lp(d,b);i=j;return}}function Ks(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;l=i;i=i+80|0;k=l+64|0;p=l+60|0;h=l+56|0;o=l+52|0;g=l+48|0;r=l+68|0;q=l+44|0;j=l+40|0;n=l+36|0;y=l+32|0;w=l+28|0;t=l+24|0;v=l+20|0;z=l+16|0;u=l+12|0;x=l+8|0;s=l+4|0;m=l;c[k>>2]=b;c[p>>2]=d;c[h>>2]=e;c[o>>2]=f;c[g>>2]=0;c[n>>2]=c[(c[k>>2]|0)+8>>2];c[q>>2]=Ms(c[k>>2]|0,c[p>>2]|0,3,(c[h>>2]|0)==(c[o>>2]|0)?0:g)|0;a[r>>0]=Ns(c[p>>2]|0)|0;ws(c[k>>2]|0);c[j>>2]=kp(c[k>>2]|0)|0;Os(c[k>>2]|0,c[(c[p>>2]|0)+12>>2]|0,c[j>>2]|0);f=c[p>>2]|0;if((c[q>>2]|0)!=5){do if(Ps(c[f+12>>2]|0)|0){u=c[n>>2]|0;t=c[j>>2]|0;if((c[o>>2]|0)==(c[h>>2]|0)){fp(u,76,t,c[o>>2]|0)|0;break}else{c[s>>2]=Ir(u,77,t)|0;fp(c[n>>2]|0,108,c[(c[p>>2]|0)+28>>2]|0,c[h>>2]|0)|0;fp(c[n>>2]|0,16,0,c[o>>2]|0)|0;zp(c[n>>2]|0,c[s>>2]|0);break}}while(0);t=c[n>>2]|0;s=c[j>>2]|0;if((c[q>>2]|0)==1){fp(t,38,s,c[h>>2]|0)|0;ip(c[n>>2]|0,70,c[(c[p>>2]|0)+28>>2]|0,c[h>>2]|0,c[j>>2]|0)|0;d=c[k>>2]|0;b=c[j>>2]|0;lp(d,b);b=c[k>>2]|0;us(b);i=l;return}hp(t,48,s,1,0,r,1)|0;q=c[n>>2]|0;p=c[(c[p>>2]|0)+28>>2]|0;if(!(c[g>>2]|0)){We(q,68,p,c[h>>2]|0,c[j>>2]|0,1)|0;d=c[k>>2]|0;b=c[j>>2]|0;lp(d,b);b=c[k>>2]|0;us(b);i=l;return}else{c[m>>2]=We(q,69,p,0,c[j>>2]|0,1)|0;fp(c[n>>2]|0,76,c[g>>2]|0,c[o>>2]|0)|0;fp(c[n>>2]|0,16,0,c[h>>2]|0)|0;zp(c[n>>2]|0,c[m>>2]|0);d=c[k>>2]|0;b=c[j>>2]|0;lp(d,b);b=c[k>>2]|0;us(b);i=l;return}}c[y>>2]=c[f+20>>2];c[w>>2]=cq(c[k>>2]|0,c[(c[p>>2]|0)+12>>2]|0)|0;c[t>>2]=Nr(c[n>>2]|0)|0;c[u>>2]=0;if((c[o>>2]|0)!=(c[h>>2]|0)){c[u>>2]=kp(c[k>>2]|0)|0;ip(c[n>>2]|0,85,c[j>>2]|0,c[j>>2]|0,c[u>>2]|0)|0}c[x>>2]=0;while(1){if((c[x>>2]|0)>=(c[c[y>>2]>>2]|0))break;c[v>>2]=Hs(c[k>>2]|0,c[(c[(c[y>>2]|0)+4>>2]|0)+((c[x>>2]|0)*20|0)>>2]|0,z)|0;if((c[u>>2]|0)!=0?(Ps(c[(c[(c[y>>2]|0)+4>>2]|0)+((c[x>>2]|0)*20|0)>>2]|0)|0)!=0:0)ip(c[n>>2]|0,85,c[u>>2]|0,c[v>>2]|0,c[u>>2]|0)|0;if((c[x>>2]|0)>=((c[c[y>>2]>>2]|0)-1|0)?(c[o>>2]|0)==(c[h>>2]|0):0){hp(c[n>>2]|0,78,c[j>>2]|0,c[h>>2]|0,c[v>>2]|0,c[w>>2]|0,-4)|0;Xe(c[n>>2]|0,(a[r>>0]|16)&255)}else{hp(c[n>>2]|0,79,c[j>>2]|0,c[t>>2]|0,c[v>>2]|0,c[w>>2]|0,-4)|0;Xe(c[n>>2]|0,a[r>>0]|0)}lp(c[k>>2]|0,c[z>>2]|0);c[x>>2]=(c[x>>2]|0)+1}if(c[u>>2]|0){fp(c[n>>2]|0,76,c[u>>2]|0,c[o>>2]|0)|0;fp(c[n>>2]|0,16,0,c[h>>2]|0)|0}Pr(c[n>>2]|0,c[t>>2]|0);lp(c[k>>2]|0,c[u>>2]|0);d=c[k>>2]|0;b=c[j>>2]|0;lp(d,b);b=c[k>>2]|0;us(b);i=l;return}function Ls(a){a=a|0;var b=0,d=0,e=0,f=0;d=i;i=i+16|0;b=d+8|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=0;do if(!(c[(c[f>>2]|0)+4>>2]&1))if(yq(c[f>>2]|0,e)|0){c[b>>2]=(c[e>>2]|0)!=0&1;break}else{c[b>>2]=0;break}else c[b>>2]=0;while(0);i=d;return c[b>>2]|0}function Ms(f,g,h,j){f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;n=i;i=i+80|0;q=n+72|0;v=n+68|0;o=n+64|0;w=n+60|0;F=n+56|0;x=n+52|0;m=n+48|0;y=n+44|0;t=n+40|0;z=n+36|0;s=n+32|0;C=n+28|0;l=n+78|0;r=n+76|0;p=n+24|0;u=n+20|0;A=n+16|0;B=n+12|0;k=n+8|0;D=n+4|0;E=n;c[q>>2]=f;c[v>>2]=g;c[o>>2]=h;c[w>>2]=j;c[x>>2]=0;g=(c[q>>2]|0)+68|0;f=c[g>>2]|0;c[g>>2]=f+1;c[m>>2]=f;c[t>>2]=dp(c[q>>2]|0)|0;c[y>>2]=(c[o>>2]&4|0)!=0&1;if(c[(c[v>>2]|0)+4>>2]&2048)j=c[(c[v>>2]|0)+20>>2]|0;else j=0;c[F>>2]=j;a:do if((c[(c[q>>2]|0)+64>>2]|0)==0?(lt(c[F>>2]|0)|0)!=0:0){c[z>>2]=c[c[q>>2]>>2];c[s>>2]=c[(c[(c[F>>2]|0)+32>>2]|0)+24>>2];c[C>>2]=c[c[(c[c[F>>2]>>2]|0)+4>>2]>>2];b[l>>1]=b[(c[C>>2]|0)+32>>1]|0;b[r>>1]=Ve(c[z>>2]|0,c[(c[s>>2]|0)+68>>2]|0)|0;qp(c[q>>2]|0,b[r>>1]|0);Jr(c[q>>2]|0,b[r>>1]|0,c[(c[s>>2]|0)+32>>2]|0,0,c[c[s>>2]>>2]|0);F=c[q>>2]|0;if((b[l>>1]|0)<0){c[p>>2]=_s(F)|0;Kr(c[q>>2]|0,c[m>>2]|0,b[r>>1]|0,c[s>>2]|0,54);c[x>>2]=1;zp(c[t>>2]|0,c[p>>2]|0);break}c[A>>2]=at(F,c[(c[v>>2]|0)+12>>2]|0,c[C>>2]|0)|0;c[B>>2]=mt(c[v>>2]|0,a[(c[(c[s>>2]|0)+4>>2]|0)+((b[l>>1]|0)*24|0)+21>>0]|0)|0;c[u>>2]=c[(c[s>>2]|0)+8>>2];while(1){if(!((c[u>>2]|0)!=0&(c[x>>2]|0)==0&(c[B>>2]|0)!=0))break a;do if((b[c[(c[u>>2]|0)+4>>2]>>1]|0)==(b[l>>1]|0)?(f=$g(c[z>>2]|0,a[(c[(c[(c[z>>2]|0)+16>>2]|0)+12>>2]|0)+77>>0]|0,c[c[(c[u>>2]|0)+32>>2]>>2]|0,0)|0,(f|0)==(c[A>>2]|0)):0){if(c[y>>2]|0){if((e[(c[u>>2]|0)+50>>1]|0)!=1)break;if(!(d[(c[u>>2]|0)+54>>0]|0))break}c[k>>2]=_s(c[q>>2]|0)|0;ip(c[t>>2]|0,54,c[m>>2]|0,c[(c[u>>2]|0)+44>>2]|0,b[r>>1]|0)|0;Lr(c[q>>2]|0,c[u>>2]|0);c[x>>2]=3+(d[c[(c[u>>2]|0)+28>>2]>>0]|0);if((c[w>>2]|0)!=0?(a[(c[(c[s>>2]|0)+4>>2]|0)+((b[l>>1]|0)*24|0)+20>>0]|0)==0:0){g=(c[q>>2]|0)+72|0;f=(c[g>>2]|0)+1|0;c[g>>2]=f;c[c[w>>2]>>2]=f;bt(c[t>>2]|0,c[m>>2]|0,c[c[w>>2]>>2]|0)}zp(c[t>>2]|0,c[k>>2]|0)}while(0);c[u>>2]=c[(c[u>>2]|0)+20>>2]}}while(0);do if(((c[x>>2]|0)==0?(c[o>>2]&1|0)!=0:0)?(c[(c[v>>2]|0)+4>>2]&2048|0)==0:0){if((nt(c[v>>2]|0)|0)!=0?(c[c[(c[v>>2]|0)+20>>2]>>2]|0)>2:0)break;c[x>>2]=5}while(0);if(c[x>>2]|0){c[(c[v>>2]|0)+28>>2]=c[m>>2];f=c[x>>2]|0;i=n;return f|0}c[D>>2]=c[(c[q>>2]|0)+424>>2];c[E>>2]=0;c[x>>2]=2;if(c[o>>2]&4){c[(c[q>>2]|0)+424>>2]=0;if((b[(c[(c[v>>2]|0)+12>>2]|0)+32>>1]|0)<0?(c[(c[v>>2]|0)+4>>2]&2048|0)==0:0)c[x>>2]=1}else if(c[w>>2]|0){g=(c[q>>2]|0)+72|0;f=(c[g>>2]|0)+1|0;c[g>>2]=f;c[E>>2]=f;c[c[w>>2]>>2]=f}Ys(c[q>>2]|0,c[v>>2]|0,c[E>>2]|0,(c[x>>2]|0)==1&1)|0;c[(c[q>>2]|0)+424>>2]=c[D>>2];f=c[x>>2]|0;i=n;return f|0}function Ns(b){b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d;e=d+4|0;c[f>>2]=b;a[e>>0]=bq(c[(c[f>>2]|0)+12>>2]|0)|0;b=c[f>>2]|0;if(c[(c[f>>2]|0)+16>>2]|0){a[e>>0]=kt(c[b+16>>2]|0,a[e>>0]|0)|0;b=a[e>>0]|0;i=d;return b|0}if(c[b+4>>2]&2048){a[e>>0]=kt(c[c[(c[c[(c[f>>2]|0)+20>>2]>>2]|0)+4>>2]>>2]|0,a[e>>0]|0)|0;b=a[e>>0]|0;i=d;return b|0}if(a[e>>0]|0){b=a[e>>0]|0;i=d;return b|0}a[e>>0]=65;b=a[e>>0]|0;i=d;return b|0}function Os(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;f=i;i=i+16|0;j=f+12|0;h=f+8|0;g=f+4|0;k=f;c[j>>2]=a;c[h>>2]=b;c[g>>2]=e;if((c[h>>2]|0)!=0?(d[c[h>>2]>>0]|0|0)==159:0){fp(c[(c[j>>2]|0)+8>>2]|0,33,c[(c[h>>2]|0)+28>>2]|0,c[g>>2]|0)|0;i=f;return}c[k>>2]=Qs(c[j>>2]|0,c[h>>2]|0,c[g>>2]|0)|0;if((c[k>>2]|0)==(c[g>>2]|0)){i=f;return}if(!(c[(c[j>>2]|0)+8>>2]|0)){i=f;return}fp(c[(c[j>>2]|0)+8>>2]|0,34,c[k>>2]|0,c[g>>2]|0)|0;i=f;return}function Ps(e){e=e|0;var f=0,g=0,h=0,j=0,k=0;g=i;i=i+16|0;f=g+4|0;h=g;j=g+8|0;c[h>>2]=e;while(1){if((d[c[h>>2]>>0]|0)==158)k=1;else k=(d[c[h>>2]>>0]|0)==157;e=c[h>>2]|0;if(!k)break;c[h>>2]=c[e+12>>2]}a[j>>0]=a[e>>0]|0;if((d[j>>0]|0)==159)a[j>>0]=a[(c[h>>2]|0)+38>>0]|0;switch(d[j>>0]|0){case 154:{if(!(c[(c[h>>2]|0)+4>>2]&1048576))if((b[(c[h>>2]|0)+32>>1]|0)>=0)h=(d[(c[(c[(c[h>>2]|0)+44>>2]|0)+4>>2]|0)+((b[(c[h>>2]|0)+32>>1]|0)*24|0)+20>>0]|0)==0;else h=0;else h=1;c[f>>2]=h&1;k=c[f>>2]|0;i=g;return k|0};case 134:case 133:case 97:case 132:{c[f>>2]=0;k=c[f>>2]|0;i=g;return k|0};default:{c[f>>2]=1;k=c[f>>2]|0;i=g;return k|0}}return 0}function Qs(f,g,h){f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0;r=i;i=i+304|0;P=r;q=r+292|0;k=r+288|0;H=r+284|0;p=r+280|0;o=r+276|0;ja=r+272|0;n=r+268|0;l=r+264|0;m=r+260|0;K=r+256|0;fa=r+252|0;ba=r+248|0;T=r+244|0;M=r+240|0;B=r+192|0;ga=r+184|0;ha=r+180|0;Z=r+176|0;X=r+172|0;W=r+168|0;Y=r+164|0;U=r+160|0;ia=r+156|0;V=r+152|0;D=r+148|0;C=r+144|0;G=r+140|0;O=r+136|0;N=r+132|0;L=r+128|0;J=r+124|0;Q=r+297|0;E=r+120|0;I=r+116|0;F=r+296|0;_=r+112|0;aa=r+108|0;ea=r+104|0;R=r+100|0;ca=r+96|0;S=r+92|0;da=r+88|0;s=r+84|0;t=r+80|0;v=r+76|0;z=r+72|0;A=r+68|0;u=r+64|0;x=r+16|0;y=r+12|0;w=r+8|0;c[k>>2]=f;c[H>>2]=g;c[p>>2]=h;c[o>>2]=c[(c[k>>2]|0)+8>>2];c[n>>2]=c[p>>2];c[l>>2]=0;c[m>>2]=0;c[M>>2]=c[c[k>>2]>>2];if(!(c[o>>2]|0)){c[q>>2]=0;f=c[q>>2]|0;i=r;return f|0}if(!(c[H>>2]|0))c[ja>>2]=101;else c[ja>>2]=d[c[H>>2]>>0];a:do switch(c[ja>>2]|0){case 77:case 76:{fp(c[o>>2]|0,25,1,c[p>>2]|0)|0;c[K>>2]=Hs(c[k>>2]|0,c[(c[H>>2]|0)+12>>2]|0,l)|0;c[ia>>2]=Ir(c[o>>2]|0,c[ja>>2]|0,c[K>>2]|0)|0;fp(c[o>>2]|0,25,0,c[p>>2]|0)|0;zp(c[o>>2]|0,c[ia>>2]|0);break};case 156:{c[ga>>2]=c[(c[H>>2]|0)+40>>2];c[ha>>2]=(c[(c[ga>>2]|0)+28>>2]|0)+((b[(c[H>>2]|0)+34>>1]|0)*24|0);if(!(a[c[ga>>2]>>0]|0)){c[n>>2]=c[(c[ha>>2]|0)+16>>2];break a}if(a[(c[ga>>2]|0)+1>>0]|0)ip(c[o>>2]|0,47,c[(c[ga>>2]|0)+8>>2]|0,c[(c[ha>>2]|0)+12>>2]|0,c[p>>2]|0)|0;else j=11;break};case 148:case 73:{c[K>>2]=Hs(c[k>>2]|0,c[(c[H>>2]|0)+12>>2]|0,l)|0;c[fa>>2]=Hs(c[k>>2]|0,c[(c[H>>2]|0)+16>>2]|0,m)|0;c[ja>>2]=(c[ja>>2]|0)==73?79:78;Is(c[k>>2]|0,c[(c[H>>2]|0)+12>>2]|0,c[(c[H>>2]|0)+16>>2]|0,c[ja>>2]|0,c[K>>2]|0,c[fa>>2]|0,c[n>>2]|0,160)|0;break};case 97:{hp(c[o>>2]|0,97,0,c[p>>2]|0,0,c[(c[H>>2]|0)+8>>2]|0,0)|0;break};case 94:case 88:case 87:case 92:case 86:case 85:case 93:case 90:case 91:case 89:case 71:case 72:{c[K>>2]=Hs(c[k>>2]|0,c[(c[H>>2]|0)+12>>2]|0,l)|0;c[fa>>2]=Hs(c[k>>2]|0,c[(c[H>>2]|0)+16>>2]|0,m)|0;ip(c[o>>2]|0,c[ja>>2]|0,c[fa>>2]|0,c[K>>2]|0,c[p>>2]|0)|0;break};case 135:{fp(c[o>>2]|0,31,b[(c[H>>2]|0)+32>>1]|0,c[p>>2]|0)|0;if(a[(c[(c[H>>2]|0)+8>>2]|0)+1>>0]|0)bf(c[o>>2]|0,-1,c[(c[(c[k>>2]|0)+472>>2]|0)+((b[(c[H>>2]|0)+32>>1]|0)-1<<2)>>2]|0,-2);break};case 79:case 78:case 83:case 80:case 81:case 82:{c[K>>2]=Hs(c[k>>2]|0,c[(c[H>>2]|0)+12>>2]|0,l)|0;c[fa>>2]=Hs(c[k>>2]|0,c[(c[H>>2]|0)+16>>2]|0,m)|0;Is(c[k>>2]|0,c[(c[H>>2]|0)+12>>2]|0,c[(c[H>>2]|0)+16>>2]|0,c[ja>>2]|0,c[K>>2]|0,c[fa>>2]|0,c[n>>2]|0,32)|0;break};case 159:{c[n>>2]=c[(c[H>>2]|0)+28>>2];break};case 119:case 20:{c[n>>2]=Ys(c[k>>2]|0,c[H>>2]|0,0,0)|0;break};case 158:case 95:{c[n>>2]=Qs(c[k>>2]|0,c[(c[H>>2]|0)+12>>2]|0,c[p>>2]|0)|0;break};case 74:{c[ea>>2]=c[(c[H>>2]|0)+12>>2];c[R>>2]=c[(c[(c[H>>2]|0)+20>>2]|0)+4>>2];c[ca>>2]=c[c[R>>2]>>2];c[K>>2]=Hs(c[k>>2]|0,c[ea>>2]|0,l)|0;c[fa>>2]=Hs(c[k>>2]|0,c[ca>>2]|0,m)|0;c[ba>>2]=kp(c[k>>2]|0)|0;c[T>>2]=kp(c[k>>2]|0)|0;Is(c[k>>2]|0,c[ea>>2]|0,c[ca>>2]|0,83,c[K>>2]|0,c[fa>>2]|0,c[ba>>2]|0,32)|0;c[R>>2]=(c[R>>2]|0)+20;c[ca>>2]=c[c[R>>2]>>2];lp(c[k>>2]|0,c[m>>2]|0);c[fa>>2]=Hs(c[k>>2]|0,c[ca>>2]|0,m)|0;Is(c[k>>2]|0,c[ea>>2]|0,c[ca>>2]|0,81,c[K>>2]|0,c[fa>>2]|0,c[T>>2]|0,32)|0;ip(c[o>>2]|0,72,c[ba>>2]|0,c[T>>2]|0,c[p>>2]|0)|0;lp(c[k>>2]|0,c[ba>>2]|0);lp(c[k>>2]|0,c[T>>2]|0);break};case 62:{c[S>>2]=c[(c[H>>2]|0)+44>>2];c[da>>2]=($(c[(c[H>>2]|0)+28>>2]|0,(b[(c[S>>2]|0)+38>>1]|0)+1|0)|0)+1+(b[(c[H>>2]|0)+32>>1]|0);fp(c[o>>2]|0,132,c[da>>2]|0,c[p>>2]|0)|0;if((b[(c[H>>2]|0)+32>>1]|0)>=0?(a[(c[(c[S>>2]|0)+4>>2]|0)+((b[(c[H>>2]|0)+32>>1]|0)*24|0)+21>>0]|0)==69:0)Ir(c[o>>2]|0,39,c[p>>2]|0)|0;break};case 157:{c[U>>2]=c[(c[H>>2]|0)+12>>2];do if((d[c[U>>2]>>0]|0)!=132)if((d[c[U>>2]>>0]|0)==133){Ts(c[o>>2]|0,c[(c[U>>2]|0)+8>>2]|0,1,c[p>>2]|0);break}else{a[B>>0]=-124;c[B+4>>2]=17408;c[B+8>>2]=0;c[K>>2]=Hs(c[k>>2]|0,B,l)|0;c[fa>>2]=Hs(c[k>>2]|0,c[(c[H>>2]|0)+12>>2]|0,m)|0;ip(c[o>>2]|0,90,c[fa>>2]|0,c[K>>2]|0,c[p>>2]|0)|0;break}else Ss(c[k>>2]|0,c[U>>2]|0,1,c[p>>2]|0);while(0);c[n>>2]=c[p>>2];break};case 153:{c[L>>2]=0;a[Q>>0]=a[(c[(c[(c[M>>2]|0)+16>>2]|0)+12>>2]|0)+77>>0]|0;c[E>>2]=0;if(c[(c[H>>2]|0)+4>>2]&16384)c[D>>2]=0;else c[D>>2]=c[(c[H>>2]|0)+20>>2];if(c[D>>2]|0)s=c[c[D>>2]>>2]|0;else s=0;c[C>>2]=s;c[N>>2]=c[(c[H>>2]|0)+8>>2];c[O>>2]=Mb(c[N>>2]|0)|0;c[G>>2]=Sf(c[M>>2]|0,c[N>>2]|0,c[O>>2]|0,c[C>>2]|0,a[Q>>0]|0,0)|0;if((c[G>>2]|0)!=0?(c[(c[G>>2]|0)+12>>2]|0)!=0:0){if(e[(c[G>>2]|0)+2>>1]&512){c[I>>2]=Nr(c[o>>2]|0)|0;Os(c[k>>2]|0,c[c[(c[D>>2]|0)+4>>2]>>2]|0,c[p>>2]|0);c[J>>2]=1;while(1){s=c[o>>2]|0;if((c[J>>2]|0)>=(c[C>>2]|0))break;fp(s,77,c[p>>2]|0,c[I>>2]|0)|0;Cs(c[k>>2]|0,c[p>>2]|0,1);ws(c[k>>2]|0);Os(c[k>>2]|0,c[(c[(c[D>>2]|0)+4>>2]|0)+((c[J>>2]|0)*20|0)>>2]|0,c[p>>2]|0);us(c[k>>2]|0);c[J>>2]=(c[J>>2]|0)+1}Pr(s,c[I>>2]|0);break a}if(e[(c[G>>2]|0)+2>>1]&1024){Os(c[k>>2]|0,c[c[(c[D>>2]|0)+4>>2]>>2]|0,c[p>>2]|0);break a}c[J>>2]=0;while(1){if((c[J>>2]|0)>=(c[C>>2]|0))break;if((c[J>>2]|0)<32?(Vs(c[(c[(c[D>>2]|0)+4>>2]|0)+((c[J>>2]|0)*20|0)>>2]|0)|0)!=0:0)c[L>>2]=c[L>>2]|1<>2];if(!((c[E>>2]|0)!=0?1:(e[(c[G>>2]|0)+2>>1]&32|0)==0))c[E>>2]=cq(c[k>>2]|0,c[(c[(c[D>>2]|0)+4>>2]|0)+((c[J>>2]|0)*20|0)>>2]|0)|0;c[J>>2]=(c[J>>2]|0)+1}if(c[D>>2]|0){s=c[k>>2]|0;if(c[L>>2]|0){c[K>>2]=(c[s+72>>2]|0)+1;f=(c[k>>2]|0)+72|0;c[f>>2]=(c[f>>2]|0)+(c[C>>2]|0)}else c[K>>2]=ys(s,c[C>>2]|0)|0;do if(e[(c[G>>2]|0)+2>>1]&192){a[F>>0]=a[c[c[(c[D>>2]|0)+4>>2]>>2]>>0]|0;if((d[F>>0]|0)!=154?(d[F>>0]|0)!=156:0)break;a[(c[c[(c[D>>2]|0)+4>>2]>>2]|0)+38>>0]=e[(c[G>>2]|0)+2>>1]&192}while(0);ws(c[k>>2]|0);Ws(c[k>>2]|0,c[D>>2]|0,c[K>>2]|0,3)|0;us(c[k>>2]|0)}else c[K>>2]=0;if((c[C>>2]|0)>=2?(c[(c[H>>2]|0)+4>>2]&128|0)!=0:0)c[G>>2]=Xs(c[M>>2]|0,c[G>>2]|0,c[C>>2]|0,c[(c[(c[D>>2]|0)+4>>2]|0)+20>>2]|0)|0;else j=78;if((j|0)==78?(c[C>>2]|0)>0:0)c[G>>2]=Xs(c[M>>2]|0,c[G>>2]|0,c[C>>2]|0,c[c[(c[D>>2]|0)+4>>2]>>2]|0)|0;if(e[(c[G>>2]|0)+2>>1]&32){if(!(c[E>>2]|0))c[E>>2]=c[(c[M>>2]|0)+8>>2];hp(c[o>>2]|0,36,0,0,0,c[E>>2]|0,-4)|0}hp(c[o>>2]|0,1,c[L>>2]|0,c[K>>2]|0,c[p>>2]|0,c[G>>2]|0,-5)|0;Xe(c[o>>2]|0,c[C>>2]&255);if(!((c[C>>2]|0)!=0&(c[L>>2]|0)==0))break a;Bs(c[k>>2]|0,c[K>>2]|0,c[C>>2]|0);break a}f=c[k>>2]|0;g=c[N>>2]|0;c[P>>2]=c[O>>2];c[P+4>>2]=g;Se(f,19160,P);break};case 155:{c[V>>2]=c[(c[H>>2]|0)+40>>2];if(!(c[V>>2]|0)){f=c[k>>2]|0;c[P>>2]=c[(c[H>>2]|0)+8>>2];Se(f,19128,P);break a}else{c[n>>2]=c[(c[(c[V>>2]|0)+40>>2]|0)+(b[(c[H>>2]|0)+34>>1]<<4)+8>>2];break a}};case 134:{c[W>>2]=(c[(c[H>>2]|0)+8>>2]|0)+2;c[X>>2]=(Mb(c[W>>2]|0)|0)-1;c[Y>>2]=Gp(Fs(c[o>>2]|0)|0,c[W>>2]|0,c[X>>2]|0)|0;hp(c[o>>2]|0,30,(c[X>>2]|0)/2|0,c[p>>2]|0,0,c[Y>>2]|0,-1)|0;break};case 132:{Ss(c[k>>2]|0,c[H>>2]|0,0,c[p>>2]|0);break};case 154:{j=11;break};case 101:{fp(c[o>>2]|0,28,0,c[p>>2]|0)|0;break};case 38:{c[n>>2]=Qs(c[k>>2]|0,c[(c[H>>2]|0)+12>>2]|0,c[p>>2]|0)|0;if((c[n>>2]|0)!=(c[p>>2]|0)){fp(c[o>>2]|0,34,c[n>>2]|0,c[p>>2]|0)|0;c[n>>2]=c[p>>2]}fp(c[o>>2]|0,40,c[p>>2]|0,(Bp(c[(c[H>>2]|0)+8>>2]|0,0)|0)<<24>>24)|0;Us(c[k>>2]|0,c[n>>2]|0,1);break};case 24:{c[n>>2]=Qs(c[k>>2]|0,c[(c[H>>2]|0)+12>>2]|0,c[p>>2]|0)|0;break};case 57:{if(!(c[(c[k>>2]|0)+412>>2]|0)){Se(c[k>>2]|0,19192,P);c[q>>2]=0;f=c[q>>2]|0;i=r;return f|0}if((a[(c[H>>2]|0)+1>>0]|0)==2)Sp(c[k>>2]|0);if((a[(c[H>>2]|0)+1>>0]|0)==4){hp(c[o>>2]|0,24,0,4,0,c[(c[H>>2]|0)+8>>2]|0,0)|0;break a}else{ts(c[k>>2]|0,1811,a[(c[H>>2]|0)+1>>0]|0,c[(c[H>>2]|0)+8>>2]|0,0,0);break a}};case 75:{c[_>>2]=Nr(c[o>>2]|0)|0;c[aa>>2]=Nr(c[o>>2]|0)|0;fp(c[o>>2]|0,28,0,c[p>>2]|0)|0;Ks(c[k>>2]|0,c[H>>2]|0,c[_>>2]|0,c[aa>>2]|0);fp(c[o>>2]|0,25,1,c[p>>2]|0)|0;Pr(c[o>>2]|0,c[_>>2]|0);fp(c[o>>2]|0,37,c[p>>2]|0,0)|0;Pr(c[o>>2]|0,c[aa>>2]|0);break};case 19:case 96:{c[K>>2]=Hs(c[k>>2]|0,c[(c[H>>2]|0)+12>>2]|0,l)|0;c[n>>2]=c[p>>2];fp(c[o>>2]|0,c[ja>>2]|0,c[K>>2]|0,c[n>>2]|0)|0;break};case 133:{Ts(c[o>>2]|0,c[(c[H>>2]|0)+8>>2]|0,0,c[p>>2]|0);break};default:{c[w>>2]=0;c[A>>2]=c[(c[H>>2]|0)+20>>2];c[u>>2]=c[(c[A>>2]|0)+4>>2];c[v>>2]=c[c[A>>2]>>2];c[s>>2]=Nr(c[o>>2]|0)|0;f=c[(c[H>>2]|0)+12>>2]|0;c[y>>2]=f;if(f){E=B+0|0;D=(c[y>>2]|0)+0|0;C=E+48|0;do{c[E>>2]=c[D>>2];E=E+4|0;D=D+4|0}while((E|0)<(C|0));Zs(B,Hs(c[k>>2]|0,c[y>>2]|0,l)|0);a[x>>0]=79;c[x+12>>2]=B;c[w>>2]=x;c[l>>2]=0}c[z>>2]=0;while(1){if((c[z>>2]|0)>=((c[v>>2]|0)-1|0))break;ws(c[k>>2]|0);B=c[(c[u>>2]|0)+((c[z>>2]|0)*20|0)>>2]|0;if(c[y>>2]|0)c[x+16>>2]=B;else c[w>>2]=B;c[t>>2]=Nr(c[o>>2]|0)|0;xs(c[k>>2]|0,c[w>>2]|0,c[t>>2]|0,16);Os(c[k>>2]|0,c[(c[u>>2]|0)+(((c[z>>2]|0)+1|0)*20|0)>>2]|0,c[p>>2]|0);fp(c[o>>2]|0,16,0,c[s>>2]|0)|0;us(c[k>>2]|0);Pr(c[o>>2]|0,c[t>>2]|0);c[z>>2]=(c[z>>2]|0)+2}if(c[v>>2]&1){ws(c[k>>2]|0);Os(c[k>>2]|0,c[(c[(c[A>>2]|0)+4>>2]|0)+(((c[v>>2]|0)-1|0)*20|0)>>2]|0,c[p>>2]|0);us(c[k>>2]|0)}else fp(c[o>>2]|0,28,0,c[p>>2]|0)|0;Pr(c[o>>2]|0,c[s>>2]|0)}}while(0);b:do if((j|0)==11){c[Z>>2]=c[(c[H>>2]|0)+28>>2];do if((c[Z>>2]|0)<0)if((c[(c[k>>2]|0)+92>>2]|0)>0){c[n>>2]=(b[(c[H>>2]|0)+32>>1]|0)+(c[(c[k>>2]|0)+92>>2]|0);break b}else{c[Z>>2]=c[(c[k>>2]|0)+96>>2];break}while(0);c[n>>2]=Rs(c[k>>2]|0,c[(c[H>>2]|0)+44>>2]|0,b[(c[H>>2]|0)+32>>1]|0,c[Z>>2]|0,c[p>>2]|0,a[(c[H>>2]|0)+38>>0]|0)|0}while(0);lp(c[k>>2]|0,c[l>>2]|0);lp(c[k>>2]|0,c[m>>2]|0);c[q>>2]=c[n>>2];f=c[q>>2]|0;i=r;return f|0}function Rs(d,e,f,g,h,j){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;n=i;i=i+48|0;m=n+32|0;q=n+28|0;k=n+24|0;s=n+20|0;r=n+16|0;t=n+12|0;p=n+36|0;o=n+8|0;v=n+4|0;u=n;c[q>>2]=d;c[k>>2]=e;c[s>>2]=f;c[r>>2]=g;c[t>>2]=h;a[p>>0]=j;c[o>>2]=c[(c[q>>2]|0)+8>>2];c[v>>2]=0;c[u>>2]=(c[q>>2]|0)+116;while(1){if((c[v>>2]|0)>=10)break;if(((c[(c[u>>2]|0)+12>>2]|0)>0?(c[c[u>>2]>>2]|0)==(c[r>>2]|0):0)?(b[(c[u>>2]|0)+4>>1]|0)==(c[s>>2]|0):0){l=6;break}c[v>>2]=(c[v>>2]|0)+1;c[u>>2]=(c[u>>2]|0)+20}if((l|0)==6){e=(c[q>>2]|0)+104|0;d=c[e>>2]|0;c[e>>2]=d+1;c[(c[u>>2]|0)+16>>2]=d;it(c[q>>2]|0,c[(c[u>>2]|0)+12>>2]|0);c[m>>2]=c[(c[u>>2]|0)+12>>2];d=c[m>>2]|0;i=n;return d|0}zs(c[o>>2]|0,c[k>>2]|0,c[r>>2]|0,c[s>>2]|0,c[t>>2]|0);if(a[p>>0]|0)Xe(c[o>>2]|0,a[p>>0]|0);else jt(c[q>>2]|0,c[r>>2]|0,c[s>>2]|0,c[t>>2]|0);c[m>>2]=c[t>>2];d=c[m>>2]|0;i=n;return d|0}function Ss(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;h=i;i=i+48|0;n=h+8|0;q=h+44|0;r=h+40|0;p=h+36|0;g=h+32|0;j=h+28|0;l=h+24|0;o=h+20|0;k=h;m=h+16|0;f=h+12|0;c[q>>2]=a;c[r>>2]=b;c[p>>2]=d;c[g>>2]=e;c[j>>2]=c[(c[q>>2]|0)+8>>2];e=(c[r>>2]|0)+8|0;if(c[(c[r>>2]|0)+4>>2]&1024){c[l>>2]=c[e>>2];if(c[p>>2]|0)c[l>>2]=0-(c[l>>2]|0);fp(c[j>>2]|0,25,c[l>>2]|0,c[g>>2]|0)|0;i=h;return}c[m>>2]=c[e>>2];c[o>>2]=rg(c[m>>2]|0,k)|0;if((c[o>>2]|0)!=0?!((c[o>>2]|0)==2&(c[p>>2]|0)!=0):0)if(!(Lb(c[m>>2]|0,19336,2)|0)){r=c[q>>2]|0;c[n>>2]=c[m>>2];Se(r,19344,n);i=h;return}else{Ts(c[j>>2]|0,c[m>>2]|0,c[p>>2]|0,c[g>>2]|0);i=h;return}if(c[p>>2]|0){if((c[o>>2]|0)==2){m=0;l=-2147483648}else{m=k;m=ZE(0,0,c[m>>2]|0,c[m+4>>2]|0)|0;l=D}r=k;c[r>>2]=m;c[r+4>>2]=l}c[f>>2]=ht(c[j>>2]|0,k)|0;hp(c[j>>2]|0,26,0,c[g>>2]|0,0,c[f>>2]|0,-13)|0;i=h;return}function Ts(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,j=0,k=0,l=0,m=0,n=0;l=i;i=i+32|0;g=l+24|0;m=l+20|0;n=l+16|0;f=l+12|0;j=l;k=l+8|0;c[g>>2]=a;c[m>>2]=b;c[n>>2]=d;c[f>>2]=e;if(!(c[m>>2]|0)){i=l;return}a=c[m>>2]|0;Lm(a,j,Mb(c[m>>2]|0)|0,1)|0;if(c[n>>2]|0)h[j>>3]=-+h[j>>3];c[k>>2]=ht(c[g>>2]|0,j)|0;hp(c[g>>2]|0,133,0,c[f>>2]|0,0,c[k>>2]|0,-12)|0;i=l;return}function Us(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+16|0;h=e+8|0;g=e+4|0;f=e;c[h>>2]=a;c[g>>2]=b;c[f>>2]=d;Cs(c[h>>2]|0,c[g>>2]|0,c[f>>2]|0);i=e;return}function Vs(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;a=et(c[d>>2]|0,1)|0;i=b;return a|0}function Ws(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;r=i;i=i+48|0;n=r+36|0;v=r+32|0;q=r+28|0;u=r+41|0;t=r+24|0;h=r+20|0;k=r+16|0;o=r+40|0;p=r+12|0;s=r+8|0;m=r+4|0;l=r;c[n>>2]=b;c[v>>2]=e;c[q>>2]=f;a[u>>0]=g;a[o>>0]=(d[u>>0]&1|0)!=0?33:34;c[k>>2]=c[c[v>>2]>>2];if(!(a[(c[n>>2]|0)+23>>0]|0))a[u>>0]=d[u>>0]&-3;c[t>>2]=c[(c[v>>2]|0)+4>>2];c[h>>2]=0;while(1){if((c[h>>2]|0)>=(c[k>>2]|0))break;c[p>>2]=c[c[t>>2]>>2];if((d[u>>0]&2|0)!=0?(Vs(c[p>>2]|0)|0)!=0:0)ct(c[n>>2]|0,c[p>>2]|0,(c[q>>2]|0)+(c[h>>2]|0)|0,0);else j=8;do if((j|0)==8?(j=0,c[s>>2]=Qs(c[n>>2]|0,c[p>>2]|0,(c[q>>2]|0)+(c[h>>2]|0)|0)|0,(c[s>>2]|0)!=((c[q>>2]|0)+(c[h>>2]|0)|0)):0){c[l>>2]=c[(c[n>>2]|0)+8>>2];if((((d[o>>0]|0)==33?(b=dt(c[l>>2]|0,-1)|0,c[m>>2]=b,(d[b>>0]|0)==33):0)?((c[(c[m>>2]|0)+4>>2]|0)+(c[(c[m>>2]|0)+12>>2]|0)+1|0)==(c[s>>2]|0):0)?((c[(c[m>>2]|0)+8>>2]|0)+(c[(c[m>>2]|0)+12>>2]|0)+1|0)==((c[q>>2]|0)+(c[h>>2]|0)|0):0){b=(c[m>>2]|0)+12|0;c[b>>2]=(c[b>>2]|0)+1;break}fp(c[l>>2]|0,d[o>>0]|0,c[s>>2]|0,(c[q>>2]|0)+(c[h>>2]|0)|0)|0}while(0);c[h>>2]=(c[h>>2]|0)+1;c[t>>2]=(c[t>>2]|0)+20}i=r;return c[k>>2]|0}function Xs(f,g,h,j){f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;o=i;i=i+64|0;l=o+56|0;v=o+52|0;m=o+48|0;r=o+44|0;z=o+40|0;y=o+36|0;q=o+32|0;x=o+28|0;n=o+24|0;k=o+20|0;p=o+16|0;u=o+12|0;s=o+8|0;w=o+4|0;t=o;c[v>>2]=f;c[m>>2]=g;c[r>>2]=h;c[z>>2]=j;c[n>>2]=0;c[k>>2]=0;c[u>>2]=0;if(!(c[z>>2]|0)){c[l>>2]=c[m>>2];f=c[l>>2]|0;i=o;return f|0}if((d[c[z>>2]>>0]|0)!=154){c[l>>2]=c[m>>2];f=c[l>>2]|0;i=o;return f|0}c[y>>2]=c[(c[z>>2]|0)+44>>2];if(!(c[y>>2]|0)){c[l>>2]=c[m>>2];f=c[l>>2]|0;i=o;return f|0}if(!(d[(c[y>>2]|0)+44>>0]&16)){c[l>>2]=c[m>>2];f=c[l>>2]|0;i=o;return f|0}c[q>>2]=c[(Rp(c[v>>2]|0,c[y>>2]|0)|0)+8>>2];c[x>>2]=c[c[q>>2]>>2];if(!(c[(c[x>>2]|0)+72>>2]|0)){c[l>>2]=c[m>>2];f=c[l>>2]|0;i=o;return f|0}c[s>>2]=ne(c[v>>2]|0,c[(c[m>>2]|0)+24>>2]|0)|0;if(c[s>>2]|0){c[w>>2]=c[s>>2];while(1){if(!(a[c[w>>2]>>0]|0))break;a[c[w>>2]>>0]=a[440+(d[c[w>>2]>>0]|0)>>0]|0;c[w>>2]=(c[w>>2]|0)+1}z=c[(c[x>>2]|0)+72>>2]|0;h=c[q>>2]|0;g=c[r>>2]|0;f=c[s>>2]|0;c[t>>2]=n;c[u>>2]=Ab[z&15](h,g,f,c[t>>2]|0,k)|0;Xb(c[v>>2]|0,c[s>>2]|0)}if(!(c[u>>2]|0)){c[l>>2]=c[m>>2];f=c[l>>2]|0;i=o;return f|0}f=c[v>>2]|0;c[p>>2]=se(f,37+(Mb(c[(c[m>>2]|0)+24>>2]|0)|0)|0,0)|0;if(!(c[p>>2]|0)){c[l>>2]=c[m>>2];f=c[l>>2]|0;i=o;return f|0}else{s=(c[p>>2]|0)+0|0;r=(c[m>>2]|0)+0|0;q=s+36|0;do{c[s>>2]=c[r>>2];s=s+4|0;r=r+4|0}while((s|0)<(q|0));c[(c[p>>2]|0)+24>>2]=(c[p>>2]|0)+36;g=c[(c[p>>2]|0)+24>>2]|0;f=c[(c[m>>2]|0)+24>>2]|0;dF(g|0,f|0,(Mb(c[(c[m>>2]|0)+24>>2]|0)|0)+1|0)|0;c[(c[p>>2]|0)+12>>2]=c[n>>2];c[(c[p>>2]|0)+4>>2]=c[k>>2];f=(c[p>>2]|0)+2|0;b[f>>1]=e[f>>1]|16;c[l>>2]=c[p>>2];f=c[l>>2]|0;i=o;return f|0}return 0} + + + +function ek(b){b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;f=i;i=i+32|0;k=f+20|0;e=f+16|0;g=f+12|0;h=f+8|0;j=f+4|0;l=f;c[k>>2]=b;c[e>>2]=0;c[g>>2]=c[(c[k>>2]|0)+200>>2];c[h>>2]=c[(c[k>>2]|0)+152>>2];if((c[h>>2]|0)>>>0>(c[(c[k>>2]|0)+148>>2]|0)>>>0)c[h>>2]=c[(c[k>>2]|0)+148>>2];c[l>>2]=0;while(1){if((c[l>>2]|0)>=(c[(c[k>>2]|0)+96>>2]|0))break;b=(c[(c[k>>2]|0)+92>>2]|0)+((c[l>>2]|0)*48|0)+8|0;if((c[b>>2]|0)==0&(c[b+4>>2]|0)==0){n=(c[k>>2]|0)+72|0;m=c[n+4>>2]|0;b=(c[(c[k>>2]|0)+92>>2]|0)+((c[l>>2]|0)*48|0)+8|0;c[b>>2]=c[n>>2];c[b+4>>2]=m}c[l>>2]=(c[l>>2]|0)+1}l=Oi(c[k>>2]|0)|0;m=D;n=(c[k>>2]|0)+72|0;c[n>>2]=l;c[n+4>>2]=m;n=(c[k>>2]|0)+80|0;c[n>>2]=l;c[n+4>>2]=m;if(((d[(c[k>>2]|0)+7>>0]|0|0)==0?(d[(c[k>>2]|0)+5>>0]|0|0)!=4:0)?((Ai(c[(c[k>>2]|0)+60>>2]|0)|0)&512|0)==0:0){l=(c[g>>2]|0)+0|0;b=l+12|0;do{a[l>>0]=0;l=l+1|0}while((l|0)<(b|0))}else{n=c[g>>2]|0;a[n+0>>0]=a[4384]|0;a[n+1>>0]=a[4385]|0;a[n+2>>0]=a[4386]|0;a[n+3>>0]=a[4387]|0;a[n+4>>0]=a[4388]|0;a[n+5>>0]=a[4389]|0;a[n+6>>0]=a[4390]|0;a[n+7>>0]=a[4391]|0;ck((c[g>>2]|0)+8|0,-1)}vc(4,(c[k>>2]|0)+48|0);ck((c[g>>2]|0)+12|0,c[(c[k>>2]|0)+48>>2]|0);ck((c[g>>2]|0)+16|0,c[(c[k>>2]|0)+28>>2]|0);ck((c[g>>2]|0)+20|0,c[(c[k>>2]|0)+148>>2]|0);ck((c[g>>2]|0)+24|0,c[(c[k>>2]|0)+152>>2]|0);_E((c[g>>2]|0)+28|0,0,(c[h>>2]|0)-28|0)|0;c[j>>2]=0;while(1){if(c[e>>2]|0){g=17;break}if((c[j>>2]|0)>>>0>=(c[(c[k>>2]|0)+148>>2]|0)>>>0){g=17;break}n=(c[k>>2]|0)+72|0;c[e>>2]=id(c[(c[k>>2]|0)+64>>2]|0,c[g>>2]|0,c[h>>2]|0,c[n>>2]|0,c[n+4>>2]|0)|0;n=(c[k>>2]|0)+72|0;m=n;m=bF(c[m>>2]|0,c[m+4>>2]|0,c[h>>2]|0,0)|0;c[n>>2]=m;c[n+4>>2]=D;c[j>>2]=(c[j>>2]|0)+(c[h>>2]|0)}if((g|0)==17){i=f;return c[e>>2]|0}return 0}function fk(a){a=a|0;var d=0,f=0,g=0;f=i;i=i+16|0;d=f+4|0;g=f;c[d>>2]=a;c[g>>2]=c[c[d>>2]>>2];while(1){if(!(c[g>>2]|0))break;a=(c[g>>2]|0)+24|0;b[a>>1]=(e[a>>1]|0)&-5;c[g>>2]=c[(c[g>>2]|0)+32>>2]}c[(c[d>>2]|0)+8>>2]=c[(c[d>>2]|0)+4>>2];i=f;return}function gk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;i=i+16|0;f=d+8|0;g=d+4|0;e=d;c[f>>2]=a;c[g>>2]=b;while(1){c[e>>2]=hk(c[f>>2]|0,c[g>>2]|0)|0;if((c[e>>2]|0)!=5){b=4;break}if(!(ub[c[(c[f>>2]|0)+176>>2]&31](c[(c[f>>2]|0)+180>>2]|0)|0)){b=4;break}}if((b|0)==4){i=d;return c[e>>2]|0}return 0}function hk(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0;f=i;i=i+16|0;h=f+8|0;j=f+4|0;g=f;c[h>>2]=b;c[j>>2]=e;c[g>>2]=0;if((d[(c[h>>2]|0)+17>>0]|0|0)>=(c[j>>2]|0)?(d[(c[h>>2]|0)+17>>0]|0|0)!=5:0){b=c[g>>2]|0;i=f;return b|0}if(d[(c[h>>2]|0)+13>>0]|0)e=0;else e=pj(c[(c[h>>2]|0)+60>>2]|0,c[j>>2]|0)|0;c[g>>2]=e;if(c[g>>2]|0){b=c[g>>2]|0;i=f;return b|0}if(!((c[j>>2]|0)==4?1:(d[(c[h>>2]|0)+17>>0]|0|0)!=5)){b=c[g>>2]|0;i=f;return b|0}a[(c[h>>2]|0)+17>>0]=c[j>>2];b=c[g>>2]|0;i=f;return b|0}function ik(e,f,g,h,j,k){e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,E=0,F=0,G=0,H=0;z=i;i=i+144|0;n=z+104|0;q=z+100|0;C=z+96|0;E=z+92|0;v=z+88|0;p=z+84|0;s=z+80|0;o=z+76|0;B=z+72|0;A=z+68|0;u=z+64|0;x=z+60|0;w=z+56|0;t=z+32|0;r=z+8|0;H=z+112|0;G=z+48|0;l=z+44|0;y=z+40|0;F=z;c[q>>2]=e;c[C>>2]=f;c[E>>2]=g;c[v>>2]=h;c[p>>2]=j;c[s>>2]=k;c[u>>2]=0;c[x>>2]=0;e=jk(c[q>>2]|0)|0;c[o>>2]=e;if(e){c[n>>2]=c[o>>2];e=c[n>>2]|0;i=z;return e|0}c[B>>2]=c[(c[q>>2]|0)+68>>2];if(!(c[B>>2]|0)){ck(H,931071618|(a[1136]|0)==0);ck(H+4|0,3007e3);ck(H+8|0,c[C>>2]|0);ck(H+12|0,c[(c[q>>2]|0)+104>>2]|0);if(!(c[(c[q>>2]|0)+104>>2]|0))vc(8,(c[q>>2]|0)+84|0);e=H+16|0;f=(c[q>>2]|0)+84|0;a[e+0>>0]=a[f+0>>0]|0;a[e+1>>0]=a[f+1>>0]|0;a[e+2>>0]=a[f+2>>0]|0;a[e+3>>0]=a[f+3>>0]|0;a[e+4>>0]=a[f+4>>0]|0;a[e+5>>0]=a[f+5>>0]|0;a[e+6>>0]=a[f+6>>0]|0;a[e+7>>0]=a[f+7>>0]|0;Jj(1,H,24,0,G);ck(H+24|0,c[G>>2]|0);ck(H+28|0,c[G+4>>2]|0);c[(c[q>>2]|0)+36>>2]=c[C>>2];a[(c[q>>2]|0)+65>>0]=(a[1136]|0)==0;c[(c[q>>2]|0)+76>>2]=c[G>>2];c[(c[q>>2]|0)+80>>2]=c[G+4>>2];a[(c[q>>2]|0)+47>>0]=1;c[o>>2]=id(c[(c[q>>2]|0)+8>>2]|0,H,32,0,0)|0;if(c[o>>2]|0){c[n>>2]=c[o>>2];e=c[n>>2]|0;i=z;return e|0}if(((c[s>>2]|0)!=0?(d[(c[q>>2]|0)+48>>0]|0)!=0:0)?(c[o>>2]=Yh(c[(c[q>>2]|0)+8>>2]|0,c[s>>2]&19)|0,(c[o>>2]|0)!=0):0){c[n>>2]=c[o>>2];e=c[n>>2]|0;i=z;return e|0}}c[r>>2]=c[q>>2];c[r+4>>2]=c[(c[q>>2]|0)+8>>2];f=r+8|0;c[f>>2]=0;c[f+4>>2]=0;c[r+16>>2]=c[s>>2];c[r+20>>2]=c[C>>2];f=(c[C>>2]|0)+24|0;f=lF((c[B>>2]|0)+1-1|0,0,f|0,((f|0)<0)<<31>>31|0)|0;f=bF(32,0,f|0,D|0)|0;e=t;c[e>>2]=f;c[e+4>>2]=D;c[w>>2]=(c[C>>2]|0)+24;c[A>>2]=c[E>>2];while(1){if(!(c[A>>2]|0))break;c[B>>2]=(c[B>>2]|0)+1;if(c[p>>2]|0)G=(c[(c[A>>2]|0)+12>>2]|0)==0?c[v>>2]|0:0;else G=0;c[l>>2]=G;e=t;c[o>>2]=kk(r,c[A>>2]|0,c[l>>2]|0,c[e>>2]|0,c[e+4>>2]|0)|0;if(c[o>>2]|0){m=16;break}c[u>>2]=c[A>>2];f=c[w>>2]|0;e=t;f=bF(c[e>>2]|0,c[e+4>>2]|0,f|0,((f|0)<0)<<31>>31|0)|0;e=t;c[e>>2]=f;c[e+4>>2]=D;c[A>>2]=c[(c[A>>2]|0)+12>>2]}if((m|0)==16){c[n>>2]=c[o>>2];e=c[n>>2]|0;i=z;return e|0}a:do if((c[p>>2]|0)!=0?(c[s>>2]&32|0)!=0:0){if(!(a[(c[q>>2]|0)+49>>0]|0)){c[o>>2]=Yh(c[r+4>>2]|0,c[s>>2]&19)|0;break}c[y>>2]=Bi(c[(c[q>>2]|0)+8>>2]|0)|0;e=t;f=c[y>>2]|0;f=bF(c[e>>2]|0,c[e+4>>2]|0,f|0,((f|0)<0)<<31>>31|0)|0;f=ZE(f|0,D|0,1,0)|0;e=c[y>>2]|0;e=jF(f|0,D|0,e|0,((e|0)<0)<<31>>31|0)|0;f=c[y>>2]|0;f=lF(e|0,D|0,f|0,((f|0)<0)<<31>>31|0)|0;e=r+8|0;c[e>>2]=f;c[e+4>>2]=D;while(1){f=t;h=c[f+4>>2]|0;e=r+8|0;g=c[e+4>>2]|0;if(!((h|0)<(g|0)|((h|0)==(g|0)?(c[f>>2]|0)>>>0<(c[e>>2]|0)>>>0:0)))break a;e=t;c[o>>2]=kk(r,c[u>>2]|0,c[v>>2]|0,c[e>>2]|0,c[e+4>>2]|0)|0;if(c[o>>2]|0)break;f=c[w>>2]|0;e=t;f=bF(c[e>>2]|0,c[e+4>>2]|0,f|0,((f|0)<0)<<31>>31|0)|0;e=t;c[e>>2]=f;c[e+4>>2]=D;c[x>>2]=(c[x>>2]|0)+1}c[n>>2]=c[o>>2];e=c[n>>2]|0;i=z;return e|0}while(0);if(((c[p>>2]|0)!=0?(d[(c[q>>2]|0)+47>>0]|0)!=0:0)?(e=(c[q>>2]|0)+16|0,f=c[e+4>>2]|0,(f|0)>0|(f|0)==0&(c[e>>2]|0)>>>0>=0):0){e=(c[q>>2]|0)+16|0;h=c[e+4>>2]|0;f=F;c[f>>2]=c[e>>2];c[f+4>>2]=h;f=(c[C>>2]|0)+24|0;f=lF((c[B>>2]|0)+(c[x>>2]|0)+1-1|0,0,f|0,((f|0)<0)<<31>>31|0)|0;f=bF(32,0,f|0,D|0)|0;h=D;e=(c[q>>2]|0)+16|0;g=c[e+4>>2]|0;if((h|0)>(g|0)|((h|0)==(g|0)?f>>>0>(c[e>>2]|0)>>>0:0)){f=(c[C>>2]|0)+24|0;f=lF((c[B>>2]|0)+(c[x>>2]|0)+1-1|0,0,f|0,((f|0)<0)<<31>>31|0)|0;f=bF(32,0,f|0,D|0)|0;e=F;c[e>>2]=f;c[e+4>>2]=D}e=F;sj(c[q>>2]|0,c[e>>2]|0,c[e+4>>2]|0);a[(c[q>>2]|0)+47>>0]=0}c[B>>2]=c[(c[q>>2]|0)+68>>2];c[A>>2]=c[E>>2];while(1){if(!((c[A>>2]|0)!=0&(c[o>>2]|0)==0))break;c[B>>2]=(c[B>>2]|0)+1;c[o>>2]=Lj(c[q>>2]|0,c[B>>2]|0,c[(c[A>>2]|0)+20>>2]|0)|0;c[A>>2]=c[(c[A>>2]|0)+12>>2]}while(1){if(!((c[o>>2]|0)==0&(c[x>>2]|0)>0))break;c[B>>2]=(c[B>>2]|0)+1;c[x>>2]=(c[x>>2]|0)+ -1;c[o>>2]=Lj(c[q>>2]|0,c[B>>2]|0,c[(c[u>>2]|0)+20>>2]|0)|0}if(!(c[o>>2]|0)){b[(c[q>>2]|0)+66>>1]=c[C>>2]&65280|c[C>>2]>>16;c[(c[q>>2]|0)+68>>2]=c[B>>2];if(c[p>>2]|0){e=(c[q>>2]|0)+60|0;c[e>>2]=(c[e>>2]|0)+1;c[(c[q>>2]|0)+72>>2]=c[v>>2]}if(c[p>>2]|0){Mj(c[q>>2]|0);c[(c[q>>2]|0)+12>>2]=c[B>>2]}}c[n>>2]=c[o>>2];e=c[n>>2]|0;i=z;return e|0}function jk(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;j=i;i=i+48|0;d=j+32|0;h=j+28|0;g=j+24|0;e=j+20|0;l=j+16|0;n=j+12|0;k=j+8|0;m=j+4|0;f=j;c[h>>2]=a;c[g>>2]=0;if(!(b[(c[h>>2]|0)+40>>1]|0)){c[l>>2]=Aj(c[h>>2]|0)|0;do if((c[c[l>>2]>>2]|0)>>>0>0){vc(4,n);c[g>>2]=vj(c[h>>2]|0,4,4)|0;if(c[g>>2]|0){if((c[g>>2]|0)==5)break;c[d>>2]=c[g>>2];n=c[d>>2]|0;i=j;return n|0}c[m>>2]=(c[h>>2]|0)+84;a=(c[h>>2]|0)+104|0;c[a>>2]=(c[a>>2]|0)+1;c[(c[h>>2]|0)+68>>2]=0;a=c[m>>2]|0;ck(a,1+(Hh(c[m>>2]|0)|0)|0);c[(c[m>>2]|0)+4>>2]=c[n>>2];Mj(c[h>>2]|0);c[c[l>>2]>>2]=0;c[(c[l>>2]|0)+8>>2]=0;c[k>>2]=2;while(1){if((c[k>>2]|0)>=5)break;c[(c[l>>2]|0)+4+(c[k>>2]<<2)>>2]=-1;c[k>>2]=(c[k>>2]|0)+1}ji(c[h>>2]|0,4,4)}while(0);hi(c[h>>2]|0,3);b[(c[h>>2]|0)+40>>1]=-1;c[e>>2]=0;do{m=c[h>>2]|0;n=(c[e>>2]|0)+1|0;c[e>>2]=n;c[g>>2]=nk(m,f,1,n)|0}while((c[g>>2]|0)==-1)}c[d>>2]=c[g>>2];n=c[d>>2]|0;i=j;return n|0}function kk(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;l=i;i=i+64|0;h=l+28|0;g=l+24|0;p=l+20|0;o=l+16|0;k=l;j=l+12|0;m=l+8|0;n=l+32|0;c[g>>2]=a;c[p>>2]=b;c[o>>2]=d;a=k;c[a>>2]=e;c[a+4>>2]=f;c[m>>2]=c[(c[p>>2]|0)+4>>2];lk(c[c[g>>2]>>2]|0,c[(c[p>>2]|0)+20>>2]|0,c[o>>2]|0,c[m>>2]|0,n);a=k;c[j>>2]=mk(c[g>>2]|0,n,24,c[a>>2]|0,c[a+4>>2]|0)|0;if(c[j>>2]|0){c[h>>2]=c[j>>2];p=c[h>>2]|0;i=l;return p|0}else{a=c[g>>2]|0;n=c[m>>2]|0;o=c[(c[g>>2]|0)+20>>2]|0;p=k;p=bF(c[p>>2]|0,c[p+4>>2]|0,24,0)|0;c[j>>2]=mk(a,n,o,p,D)|0;c[h>>2]=c[j>>2];p=c[h>>2]|0;i=l;return p|0}return 0}function lk(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;j=i;i=i+32|0;m=j+24|0;q=j+20|0;p=j+16|0;n=j+12|0;l=j+8|0;o=j+4|0;k=j;c[m>>2]=b;c[q>>2]=e;c[p>>2]=f;c[n>>2]=g;c[l>>2]=h;c[k>>2]=(c[m>>2]|0)+76;ck(c[l>>2]|0,c[q>>2]|0);ck((c[l>>2]|0)+4|0,c[p>>2]|0);b=(c[l>>2]|0)+8|0;e=(c[m>>2]|0)+84|0;a[b+0>>0]=a[e+0>>0]|0;a[b+1>>0]=a[e+1>>0]|0;a[b+2>>0]=a[e+2>>0]|0;a[b+3>>0]=a[e+3>>0]|0;a[b+4>>0]=a[e+4>>0]|0;a[b+5>>0]=a[e+5>>0]|0;a[b+6>>0]=a[e+6>>0]|0;a[b+7>>0]=a[e+7>>0]|0;c[o>>2]=(d[(c[m>>2]|0)+65>>0]|0)==((a[1136]|0)==0|0)&1;Jj(c[o>>2]|0,c[l>>2]|0,8,c[k>>2]|0,c[k>>2]|0);Jj(c[o>>2]|0,c[n>>2]|0,c[(c[m>>2]|0)+36>>2]|0,c[k>>2]|0,c[k>>2]|0);ck((c[l>>2]|0)+16|0,c[c[k>>2]>>2]|0);ck((c[l>>2]|0)+20|0,c[(c[k>>2]|0)+4>>2]|0);i=j;return}function mk(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+32|0;n=o+28|0;m=o+24|0;k=o+20|0;g=o+16|0;h=o;l=o+12|0;j=o+8|0;c[m>>2]=a;c[k>>2]=b;c[g>>2]=d;b=h;c[b>>2]=e;c[b+4>>2]=f;b=h;e=c[b+4>>2]|0;a=(c[m>>2]|0)+8|0;d=c[a+4>>2]|0;if((e|0)<(d|0)|((e|0)==(d|0)?(c[b>>2]|0)>>>0<(c[a>>2]|0)>>>0:0)?(e=h,b=c[g>>2]|0,b=bF(c[e>>2]|0,c[e+4>>2]|0,b|0,((b|0)<0)<<31>>31|0)|0,e=D,a=(c[m>>2]|0)+8|0,d=c[a+4>>2]|0,(e|0)>(d|0)|((e|0)==(d|0)?b>>>0>=(c[a>>2]|0)>>>0:0)):0){b=(c[m>>2]|0)+8|0;a=h;a=ZE(c[b>>2]|0,c[b+4>>2]|0,c[a>>2]|0,c[a+4>>2]|0)|0;c[j>>2]=a;a=h;c[l>>2]=id(c[(c[m>>2]|0)+4>>2]|0,c[k>>2]|0,c[j>>2]|0,c[a>>2]|0,c[a+4>>2]|0)|0;if(c[l>>2]|0){c[n>>2]=c[l>>2];a=c[n>>2]|0;i=o;return a|0}b=c[j>>2]|0;a=h;b=bF(c[a>>2]|0,c[a+4>>2]|0,b|0,((b|0)<0)<<31>>31|0)|0;a=h;c[a>>2]=b;c[a+4>>2]=D;c[g>>2]=(c[g>>2]|0)-(c[j>>2]|0);c[k>>2]=(c[k>>2]|0)+(c[j>>2]|0);c[l>>2]=Yh(c[(c[m>>2]|0)+4>>2]|0,c[(c[m>>2]|0)+16>>2]&19)|0;if((c[g>>2]|0)==0|(c[l>>2]|0)!=0){c[n>>2]=c[l>>2];a=c[n>>2]|0;i=o;return a|0}}a=h;c[l>>2]=id(c[(c[m>>2]|0)+4>>2]|0,c[k>>2]|0,c[g>>2]|0,c[a>>2]|0,c[a+4>>2]|0)|0;c[n>>2]=c[l>>2];a=c[n>>2]|0;i=o;return a|0}function nk(a,e,f,g){a=a|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;j=i;i=i+48|0;h=j+44|0;m=j+40|0;t=j+36|0;s=j+32|0;v=j+28|0;q=j+24|0;o=j+20|0;n=j+16|0;p=j+12|0;l=j+8|0;u=j+4|0;k=j;c[m>>2]=a;c[t>>2]=e;c[s>>2]=f;c[v>>2]=g;c[l>>2]=0;if((c[v>>2]|0)>5){c[u>>2]=1;if((c[v>>2]|0)>100){c[h>>2]=15;a=c[h>>2]|0;i=j;return a|0}if((c[v>>2]|0)>=10)c[u>>2]=($((c[v>>2]|0)-9|0,(c[v>>2]|0)-9|0)|0)*39;fg(c[c[m>>2]>>2]|0,c[u>>2]|0)|0}if(!(c[s>>2]|0)){c[l>>2]=xj(c[m>>2]|0,c[t>>2]|0)|0;do if((c[l>>2]|0)==5){if(!(c[c[(c[m>>2]|0)+32>>2]>>2]|0)){c[l>>2]=-1;break}a=gi(c[m>>2]|0,2)|0;c[l>>2]=a;if(!a){hi(c[m>>2]|0,2);c[l>>2]=-1;break}if((c[l>>2]|0)==5)c[l>>2]=261}while(0);if(c[l>>2]|0){c[h>>2]=c[l>>2];a=c[h>>2]|0;i=j;return a|0}}c[q>>2]=Aj(c[m>>2]|0)|0;do if((c[s>>2]|0)==0?(c[c[q>>2]>>2]|0)==(c[(c[m>>2]|0)+68>>2]|0):0){c[l>>2]=gi(c[m>>2]|0,3)|0;Nj(c[m>>2]|0);if(c[l>>2]|0){if((c[l>>2]|0)==5)break;c[h>>2]=c[l>>2];a=c[h>>2]|0;i=j;return a|0}a=mj(c[m>>2]|0)|0;a=(TE(a,(c[m>>2]|0)+52|0,48)|0)!=0;k=c[m>>2]|0;if(a){hi(k,3);c[h>>2]=-1;a=c[h>>2]|0;i=j;return a|0}else{b[k+40>>1]=0;c[h>>2]=0;a=c[h>>2]|0;i=j;return a|0}}while(0);c[o>>2]=0;c[n>>2]=0;c[p>>2]=1;while(1){if((c[p>>2]|0)>=5)break;c[k>>2]=c[(c[q>>2]|0)+4+(c[p>>2]<<2)>>2];if((c[o>>2]|0)>>>0<=(c[k>>2]|0)>>>0?(c[k>>2]|0)>>>0<=(c[(c[m>>2]|0)+68>>2]|0)>>>0:0){c[o>>2]=c[k>>2];c[n>>2]=c[p>>2]}c[p>>2]=(c[p>>2]|0)+1}a:do if(((d[(c[m>>2]|0)+46>>0]|0)&2|0)==0?(c[n>>2]|0)==0?1:(c[o>>2]|0)>>>0<(c[(c[m>>2]|0)+68>>2]|0)>>>0:0){c[p>>2]=1;while(1){if((c[p>>2]|0)>=5)break a;c[l>>2]=vj(c[m>>2]|0,3+(c[p>>2]|0)|0,1)|0;if(!(c[l>>2]|0)){r=36;break}if((c[l>>2]|0)!=5)break;c[p>>2]=(c[p>>2]|0)+1}if((r|0)==36){a=c[(c[m>>2]|0)+68>>2]|0;c[(c[q>>2]|0)+4+(c[p>>2]<<2)>>2]=a;c[o>>2]=a;c[n>>2]=c[p>>2];ji(c[m>>2]|0,3+(c[p>>2]|0)|0,1);break}c[h>>2]=c[l>>2];a=c[h>>2]|0;i=j;return a|0}while(0);if(!(c[n>>2]|0)){c[h>>2]=(c[l>>2]|0)==5?-1:520;a=c[h>>2]|0;i=j;return a|0}c[l>>2]=gi(c[m>>2]|0,3+(c[n>>2]|0)|0)|0;if(c[l>>2]|0){c[h>>2]=(c[l>>2]|0)==5?-1:c[l>>2]|0;a=c[h>>2]|0;i=j;return a|0}Nj(c[m>>2]|0);if((c[(c[q>>2]|0)+4+(c[n>>2]<<2)>>2]|0)==(c[o>>2]|0)?(a=mj(c[m>>2]|0)|0,(TE(a,(c[m>>2]|0)+52|0,48)|0)==0):0){b[(c[m>>2]|0)+40>>1]=c[n>>2];c[h>>2]=c[l>>2];a=c[h>>2]|0;i=j;return a|0}hi(c[m>>2]|0,3+(c[n>>2]|0)|0);c[h>>2]=-1;a=c[h>>2]|0;i=j;return a|0}function ok(a){a=a|0;var b=0,e=0,f=0;b=i;i=i+16|0;f=b+4|0;e=b;c[f>>2]=a;c[e>>2]=0;if(c[c[(c[f>>2]|0)+68>>2]>>2]|0){f=c[e>>2]|0;i=b;return f|0}if((d[(c[f>>2]|0)+5>>0]|0|0)!=4?(d[(c[f>>2]|0)+21>>0]|0|0)==0:0){c[e>>2]=ak(c[f>>2]|0,c[(c[f>>2]|0)+68>>2]|0,8192)|0;f=c[e>>2]|0;i=b;return f|0}qi(c[(c[f>>2]|0)+68>>2]|0);f=c[e>>2]|0;i=b;return f|0}function pk(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;f=i;i=i+32|0;h=f+12|0;j=f;k=f+8|0;g=f+16|0;c[h>>2]=a;a=j;c[a>>2]=b;c[a+4>>2]=d;c[k>>2]=e;ck(g,c[k>>2]|0);a=j;a=id(c[h>>2]|0,g,4,c[a>>2]|0,c[a+4>>2]|0)|0;i=f;return a|0}function qk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;d=i;i=i+32|0;f=d+16|0;j=d+12|0;g=d+8|0;e=d+4|0;h=d;c[f>>2]=a;c[j>>2]=b;c[e>>2]=0;c[g>>2]=0;while(1){if((c[g>>2]|0)>=(c[(c[f>>2]|0)+96>>2]|0))break;c[h>>2]=(c[(c[f>>2]|0)+92>>2]|0)+((c[g>>2]|0)*48|0);if((c[j>>2]|0)>>>0<=(c[(c[h>>2]|0)+20>>2]|0)>>>0){a=Wg(c[(c[h>>2]|0)+16>>2]|0,c[j>>2]|0)|0;c[e>>2]=c[e>>2]|a}c[g>>2]=(c[g>>2]|0)+1}i=d;return c[e>>2]|0}function rk(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=i;i=i+16|0;g=e+4|0;f=e;c[g>>2]=b;c[f>>2]=d;while(1){if((c[f>>2]|0)>0)b=(a[(c[g>>2]|0)+((c[f>>2]|0)-1)>>0]|0)==32;else b=0;d=c[f>>2]|0;if(!b)break;c[f>>2]=d+ -1}i=e;return(d|0)==0|0}function sk(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+16|0;d=b;e=b+4|0;c[e>>2]=a;c[d>>2]=c[e>>2];tc(21,4880,d);i=b;return}function tk(a,b,e,f){a=a|0;b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;l=i;i=i+32|0;n=l+20|0;k=l+16|0;g=l+12|0;m=l+8|0;h=l+4|0;j=l;c[n>>2]=a;c[k>>2]=b;c[g>>2]=e;c[m>>2]=f;c[h>>2]=0;if(!(c[n>>2]|0)){a=c[h>>2]|0;i=l;return a|0}c[j>>2]=c[(c[n>>2]|0)+4>>2];Pc(c[n>>2]|0);if(d[(c[j>>2]|0)+20>>0]|0){c[h>>2]=6;a=c[h>>2]|0;i=l;return a|0}else{c[h>>2]=uk(c[c[j>>2]>>2]|0,c[k>>2]|0,c[g>>2]|0,c[m>>2]|0)|0;a=c[h>>2]|0;i=l;return a|0}return 0}function uk(a,b,e,f){a=a|0;b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;g=i;i=i+32|0;j=g+16|0;k=g+12|0;l=g+8|0;m=g+4|0;h=g;c[j>>2]=a;c[k>>2]=b;c[l>>2]=e;c[m>>2]=f;c[h>>2]=0;if(!(c[(c[j>>2]|0)+208>>2]|0)){a=c[h>>2]|0;i=g;return a|0}c[h>>2]=qj(c[(c[j>>2]|0)+208>>2]|0,c[k>>2]|0,c[(c[j>>2]|0)+176>>2]|0,c[(c[j>>2]|0)+180>>2]|0,d[(c[j>>2]|0)+9>>0]|0,c[(c[j>>2]|0)+152>>2]|0,c[(c[j>>2]|0)+200>>2]|0,c[l>>2]|0,c[m>>2]|0)|0;a=c[h>>2]|0;i=g;return a|0}function vk(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;h=i;i=i+32|0;g=h+20|0;n=h+16|0;m=h+12|0;k=h+8|0;l=h+4|0;j=h;c[n>>2]=b;c[m>>2]=d;c[k>>2]=e;c[l>>2]=f;c[j>>2]=c[(c[n>>2]|0)+(c[m>>2]<<2)>>2];while(1){if(!(c[j>>2]|0)){f=7;break}if((Lb(c[(c[j>>2]|0)+24>>2]|0,c[k>>2]|0,c[l>>2]|0)|0)==0?(a[(c[(c[j>>2]|0)+24>>2]|0)+(c[l>>2]|0)>>0]|0)==0:0){f=5;break}c[j>>2]=c[(c[j>>2]|0)+28>>2]}if((f|0)==5){c[g>>2]=c[j>>2];n=c[g>>2]|0;i=h;return n|0}else if((f|0)==7){c[g>>2]=0;n=c[g>>2]|0;i=h;return n|0}return 0}function wk(f,g,h){f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0;j=i;i=i+32|0;k=j+12|0;m=j+8|0;o=j+4|0;n=j+16|0;l=j;c[m>>2]=f;c[o>>2]=g;a[n>>0]=h;h=c[m>>2]|0;if((c[o>>2]|0)==-2){if(!(c[h+12>>2]|0))l=(c[(c[m>>2]|0)+16>>2]|0)==0;else l=0;c[k>>2]=l?0:6;f=c[k>>2]|0;i=j;return f|0}if((b[h>>1]|0)!=(c[o>>2]|0)?(b[c[m>>2]>>1]|0)>=0:0){c[k>>2]=0;f=c[k>>2]|0;i=j;return f|0}if((b[c[m>>2]>>1]|0)==(c[o>>2]|0))c[l>>2]=4;else c[l>>2]=1;if((d[n>>0]|0)!=(e[(c[m>>2]|0)+2>>1]&3|0)){if(d[n>>0]&e[(c[m>>2]|0)+2>>1]&2)c[l>>2]=(c[l>>2]|0)+1}else c[l>>2]=(c[l>>2]|0)+2;c[k>>2]=c[l>>2];f=c[k>>2]|0;i=j;return f|0}function xk(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;f=i;i=i+32|0;k=f+16|0;h=f+12|0;g=f+8|0;l=f+4|0;m=f+20|0;j=f;c[k>>2]=b;c[h>>2]=e;c[l>>2]=Mb(c[(c[h>>2]|0)+24>>2]|0)|0;a[m>>0]=a[c[(c[h>>2]|0)+24>>2]>>0]|0;c[j>>2]=((d[440+(d[m>>0]|0)>>0]|0)+(c[l>>2]|0)|0)%23|0;c[g>>2]=vk(c[k>>2]|0,c[j>>2]|0,c[(c[h>>2]|0)+24>>2]|0,c[l>>2]|0)|0;if(c[g>>2]|0){c[(c[h>>2]|0)+8>>2]=c[(c[g>>2]|0)+8>>2];c[(c[g>>2]|0)+8>>2]=c[h>>2];i=f;return}else{c[(c[h>>2]|0)+8>>2]=0;c[(c[h>>2]|0)+28>>2]=c[(c[k>>2]|0)+(c[j>>2]<<2)>>2];c[(c[k>>2]|0)+(c[j>>2]<<2)>>2]=c[h>>2];i=f;return}}function yk(a,b){a=a|0;b=b|0;var f=0,g=0,h=0,j=0,k=0;f=i;i=i+16|0;g=f+12|0;k=f+8|0;j=f+4|0;h=f;c[k>>2]=a;c[j>>2]=b;if(((e[(c[k>>2]|0)+8>>1]|0)&2|0)!=0?(d[(c[k>>2]|0)+10>>0]|0|0)!=(c[j>>2]|0):0){c[h>>2]=zk(c[k>>2]|0,c[j>>2]&255)|0;c[g>>2]=c[h>>2];a=c[g>>2]|0;i=f;return a|0}c[g>>2]=0;a=c[g>>2]|0;i=f;return a|0}function zk(f,g){f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;j=i;i=i+48|0;o=j+40|0;l=j+36|0;k=j+45|0;t=j+32|0;q=j+28|0;m=j+24|0;n=j+20|0;h=j+16|0;p=j+12|0;u=j+44|0;v=j+8|0;r=j+4|0;s=j;c[l>>2]=f;a[k>>0]=g;if((d[(c[l>>2]|0)+10>>0]|0|0)!=1?(d[k>>0]|0|0)!=1:0){c[v>>2]=Ak(c[l>>2]|0)|0;if(c[v>>2]|0){c[o>>2]=7;g=c[o>>2]|0;i=j;return g|0}c[m>>2]=c[(c[l>>2]|0)+16>>2];c[n>>2]=(c[m>>2]|0)+(c[(c[l>>2]|0)+12>>2]&-2);while(1){if((c[m>>2]|0)>>>0>=(c[n>>2]|0)>>>0)break;a[u>>0]=a[c[m>>2]>>0]|0;a[c[m>>2]>>0]=a[(c[m>>2]|0)+1>>0]|0;c[m>>2]=(c[m>>2]|0)+1;v=a[u>>0]|0;g=c[m>>2]|0;c[m>>2]=g+1;a[g>>0]=v}a[(c[l>>2]|0)+10>>0]=a[k>>0]|0}else{f=(c[l>>2]|0)+12|0;u=c[f>>2]|0;if((d[k>>0]|0|0)==1){c[f>>2]=u&-2;c[t>>2]=(c[(c[l>>2]|0)+12>>2]<<1)+1}else c[t>>2]=(u<<1)+2;c[m>>2]=c[(c[l>>2]|0)+16>>2];c[n>>2]=(c[m>>2]|0)+(c[(c[l>>2]|0)+12>>2]|0);g=c[t>>2]|0;c[q>>2]=Qe(c[(c[l>>2]|0)+32>>2]|0,g,((g|0)<0)<<31>>31)|0;if(!(c[q>>2]|0)){c[o>>2]=7;g=c[o>>2]|0;i=j;return g|0}c[h>>2]=c[q>>2];if((d[(c[l>>2]|0)+10>>0]|0|0)==1){a:do if((d[k>>0]|0|0)==2)while(1){if((c[m>>2]|0)>>>0>=(c[n>>2]|0)>>>0)break a;g=c[m>>2]|0;c[m>>2]=g+1;c[p>>2]=d[g>>0];do if((c[p>>2]|0)>>>0>=192){c[p>>2]=d[4984+((c[p>>2]|0)-192)>>0];while(1){if((c[m>>2]|0)!=(c[n>>2]|0))r=((d[c[m>>2]>>0]|0)&192|0)==128;else r=0;s=c[p>>2]|0;if(!r)break;g=c[m>>2]|0;c[m>>2]=g+1;c[p>>2]=(s<<6)+(63&(d[g>>0]|0))}if((s>>>0>=128?(c[p>>2]&-2048|0)!=55296:0)?(c[p>>2]&-2|0)!=65534:0)break;c[p>>2]=65533}while(0);r=c[p>>2]|0;if((c[p>>2]|0)>>>0<=65535){v=c[h>>2]|0;c[h>>2]=v+1;a[v>>0]=r;v=(c[p>>2]|0)>>>8&255;g=c[h>>2]|0;c[h>>2]=g+1;a[g>>0]=v;continue}else{g=(r>>>10&63)+(((c[p>>2]|0)-65536|0)>>>10&192)&255;v=c[h>>2]|0;c[h>>2]=v+1;a[v>>0]=g;v=216+(((c[p>>2]|0)-65536|0)>>>18&3)&255;g=c[h>>2]|0;c[h>>2]=g+1;a[g>>0]=v;g=c[p>>2]&255;v=c[h>>2]|0;c[h>>2]=v+1;a[v>>0]=g;v=220+((c[p>>2]|0)>>>8&3)&255;g=c[h>>2]|0;c[h>>2]=g+1;a[g>>0]=v;continue}}else while(1){if((c[m>>2]|0)>>>0>=(c[n>>2]|0)>>>0)break a;g=c[m>>2]|0;c[m>>2]=g+1;c[p>>2]=d[g>>0];do if((c[p>>2]|0)>>>0>=192){c[p>>2]=d[4984+((c[p>>2]|0)-192)>>0];while(1){if((c[m>>2]|0)!=(c[n>>2]|0))s=((d[c[m>>2]>>0]|0)&192|0)==128;else s=0;r=c[p>>2]|0;if(!s)break;g=c[m>>2]|0;c[m>>2]=g+1;c[p>>2]=(r<<6)+(63&(d[g>>0]|0))}if((r>>>0>=128?(c[p>>2]&-2048|0)!=55296:0)?(c[p>>2]&-2|0)!=65534:0)break;c[p>>2]=65533}while(0);r=c[p>>2]|0;if((c[p>>2]|0)>>>0<=65535){v=c[h>>2]|0;c[h>>2]=v+1;a[v>>0]=r>>>8;v=c[p>>2]&255;g=c[h>>2]|0;c[h>>2]=g+1;a[g>>0]=v;continue}else{v=c[h>>2]|0;c[h>>2]=v+1;a[v>>0]=216+((r-65536|0)>>>18&3);v=((c[p>>2]|0)>>>10&63)+(((c[p>>2]|0)-65536|0)>>>10&192)&255;g=c[h>>2]|0;c[h>>2]=g+1;a[g>>0]=v;g=220+((c[p>>2]|0)>>>8&3)&255;v=c[h>>2]|0;c[h>>2]=v+1;a[v>>0]=g;v=c[p>>2]&255;g=c[h>>2]|0;c[h>>2]=g+1;a[g>>0]=v;continue}}while(0);c[(c[l>>2]|0)+12>>2]=(c[h>>2]|0)-(c[q>>2]|0);g=c[h>>2]|0;c[h>>2]=g+1;a[g>>0]=0}else{b:do if((d[(c[l>>2]|0)+10>>0]|0|0)==2)while(1){if((c[m>>2]|0)>>>0>=(c[n>>2]|0)>>>0)break b;g=c[m>>2]|0;c[m>>2]=g+1;c[p>>2]=d[g>>0];g=c[m>>2]|0;c[m>>2]=g+1;c[p>>2]=(c[p>>2]|0)+((d[g>>0]|0)<<8);if((c[p>>2]|0)>>>0>=55296&(c[p>>2]|0)>>>0<57344?(c[m>>2]|0)>>>0<(c[n>>2]|0)>>>0:0){g=c[m>>2]|0;c[m>>2]=g+1;c[r>>2]=d[g>>0];g=c[m>>2]|0;c[m>>2]=g+1;c[r>>2]=(c[r>>2]|0)+((d[g>>0]|0)<<8);c[p>>2]=(c[r>>2]&1023)+((c[p>>2]&63)<<10)+((c[p>>2]&960)+64<<10)}t=c[p>>2]|0;if((c[p>>2]|0)>>>0<128){g=c[h>>2]|0;c[h>>2]=g+1;a[g>>0]=t;continue}s=c[p>>2]|0;if(t>>>0<2048){v=c[h>>2]|0;c[h>>2]=v+1;a[v>>0]=192+(s>>>6&31);v=128+(c[p>>2]&63)&255;g=c[h>>2]|0;c[h>>2]=g+1;a[g>>0]=v;continue}t=c[p>>2]|0;if(s>>>0<65536){g=c[h>>2]|0;c[h>>2]=g+1;a[g>>0]=224+(t>>>12&15);g=128+((c[p>>2]|0)>>>6&63)&255;v=c[h>>2]|0;c[h>>2]=v+1;a[v>>0]=g;v=128+(c[p>>2]&63)&255;g=c[h>>2]|0;c[h>>2]=g+1;a[g>>0]=v;continue}else{v=c[h>>2]|0;c[h>>2]=v+1;a[v>>0]=240+(t>>>18&7);v=128+((c[p>>2]|0)>>>12&63)&255;g=c[h>>2]|0;c[h>>2]=g+1;a[g>>0]=v;g=128+((c[p>>2]|0)>>>6&63)&255;v=c[h>>2]|0;c[h>>2]=v+1;a[v>>0]=g;v=128+(c[p>>2]&63)&255;g=c[h>>2]|0;c[h>>2]=g+1;a[g>>0]=v;continue}}else while(1){if((c[m>>2]|0)>>>0>=(c[n>>2]|0)>>>0)break b;g=c[m>>2]|0;c[m>>2]=g+1;c[p>>2]=(d[g>>0]|0)<<8;g=c[m>>2]|0;c[m>>2]=g+1;c[p>>2]=(c[p>>2]|0)+(d[g>>0]|0);if((c[p>>2]|0)>>>0>=55296&(c[p>>2]|0)>>>0<57344?(c[m>>2]|0)>>>0<(c[n>>2]|0)>>>0:0){g=c[m>>2]|0;c[m>>2]=g+1;c[s>>2]=(d[g>>0]|0)<<8;g=c[m>>2]|0;c[m>>2]=g+1;c[s>>2]=(c[s>>2]|0)+(d[g>>0]|0);c[p>>2]=(c[s>>2]&1023)+((c[p>>2]&63)<<10)+((c[p>>2]&960)+64<<10)}t=c[p>>2]|0;if((c[p>>2]|0)>>>0<128){g=c[h>>2]|0;c[h>>2]=g+1;a[g>>0]=t;continue}r=c[p>>2]|0;if(t>>>0<2048){v=c[h>>2]|0;c[h>>2]=v+1;a[v>>0]=192+(r>>>6&31);v=128+(c[p>>2]&63)&255;g=c[h>>2]|0;c[h>>2]=g+1;a[g>>0]=v;continue}t=c[p>>2]|0;if(r>>>0<65536){g=c[h>>2]|0;c[h>>2]=g+1;a[g>>0]=224+(t>>>12&15);g=128+((c[p>>2]|0)>>>6&63)&255;v=c[h>>2]|0;c[h>>2]=v+1;a[v>>0]=g;v=128+(c[p>>2]&63)&255;g=c[h>>2]|0;c[h>>2]=g+1;a[g>>0]=v;continue}else{v=c[h>>2]|0;c[h>>2]=v+1;a[v>>0]=240+(t>>>18&7);v=128+((c[p>>2]|0)>>>12&63)&255;g=c[h>>2]|0;c[h>>2]=g+1;a[g>>0]=v;g=128+((c[p>>2]|0)>>>6&63)&255;v=c[h>>2]|0;c[h>>2]=v+1;a[v>>0]=g;v=128+(c[p>>2]&63)&255;g=c[h>>2]|0;c[h>>2]=g+1;a[g>>0]=v;continue}}while(0);c[(c[l>>2]|0)+12>>2]=(c[h>>2]|0)-(c[q>>2]|0)}a[c[h>>2]>>0]=0;c[p>>2]=e[(c[l>>2]|0)+8>>1];Bd(c[l>>2]|0);b[(c[l>>2]|0)+8>>1]=514|c[p>>2]&31;a[(c[l>>2]|0)+10>>0]=a[k>>0]|0;c[(c[l>>2]|0)+16>>2]=c[q>>2];c[(c[l>>2]|0)+20>>2]=c[(c[l>>2]|0)+16>>2];g=Bk(c[(c[l>>2]|0)+32>>2]|0,c[(c[l>>2]|0)+16>>2]|0)|0;c[(c[l>>2]|0)+24>>2]=g}c[o>>2]=0;g=c[o>>2]|0;i=j;return g|0}function Ak(d){d=d|0;var f=0,g=0,h=0,j=0;h=i;i=i+16|0;g=h+8|0;f=h+4|0;j=h;c[f>>2]=d;if((e[(c[f>>2]|0)+8>>1]|0)&16384)Dd(c[f>>2]|0)|0;c[j>>2]=e[(c[f>>2]|0)+8>>1];do if(c[j>>2]&18){if((c[(c[f>>2]|0)+24>>2]|0)!=0?(c[(c[f>>2]|0)+16>>2]|0)==(c[(c[f>>2]|0)+20>>2]|0):0)break;if(!(Dk(c[f>>2]|0,(c[(c[f>>2]|0)+12>>2]|0)+2|0,1)|0)){a[(c[(c[f>>2]|0)+16>>2]|0)+(c[(c[f>>2]|0)+12>>2]|0)>>0]=0;a[(c[(c[f>>2]|0)+16>>2]|0)+((c[(c[f>>2]|0)+12>>2]|0)+1)>>0]=0;j=(c[f>>2]|0)+8|0;b[j>>1]=e[j>>1]|0|512;break}c[g>>2]=7;j=c[g>>2]|0;i=h;return j|0}while(0);c[g>>2]=0;j=c[g>>2]|0;i=h;return j|0}function Bk(a,b){a=a|0;b=b|0;var d=0,f=0,g=0,h=0;d=i;i=i+16|0;f=d+8|0;h=d+4|0;g=d;c[h>>2]=a;c[g>>2]=b;if(!(c[h>>2]|0)){c[f>>2]=Tb(c[g>>2]|0)|0;a=c[f>>2]|0;i=d;return a|0}if(Ck(c[h>>2]|0,c[g>>2]|0)|0){c[f>>2]=e[(c[h>>2]|0)+248>>1];a=c[f>>2]|0;i=d;return a|0}else{c[f>>2]=ub[c[38640+48>>2]&31](c[g>>2]|0)|0;a=c[f>>2]|0;i=d;return a|0}return 0}function Ck(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;if((c[e>>2]|0)>>>0<(c[(c[f>>2]|0)+276>>2]|0)>>>0){a=0;a=a&1;i=d;return a|0}a=(c[e>>2]|0)>>>0<(c[(c[f>>2]|0)+280>>2]|0)>>>0;a=a&1;i=d;return a|0}function Dk(a,d,f){a=a|0;d=d|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;k=i;i=i+16|0;j=k+12|0;h=k+8|0;l=k+4|0;g=k;c[h>>2]=a;c[l>>2]=d;c[g>>2]=f;do if((c[(c[h>>2]|0)+24>>2]|0)<(c[l>>2]|0)){if((c[l>>2]|0)<32)c[l>>2]=32;if(((c[g>>2]|0)!=0?(c[(c[h>>2]|0)+24>>2]|0)>0:0)?(c[(c[h>>2]|0)+16>>2]|0)==(c[(c[h>>2]|0)+20>>2]|0):0){a=c[l>>2]|0;a=Ek(c[(c[h>>2]|0)+32>>2]|0,c[(c[h>>2]|0)+16>>2]|0,a,((a|0)<0)<<31>>31)|0;c[(c[h>>2]|0)+20>>2]=a;c[(c[h>>2]|0)+16>>2]=a;c[g>>2]=0}else{if((c[(c[h>>2]|0)+24>>2]|0)>0)Xb(c[(c[h>>2]|0)+32>>2]|0,c[(c[h>>2]|0)+20>>2]|0);a=c[l>>2]|0;a=Qe(c[(c[h>>2]|0)+32>>2]|0,a,((a|0)<0)<<31>>31)|0;c[(c[h>>2]|0)+20>>2]=a}f=c[h>>2]|0;if(c[(c[h>>2]|0)+20>>2]|0){a=Bk(c[f+32>>2]|0,c[(c[h>>2]|0)+20>>2]|0)|0;c[(c[h>>2]|0)+24>>2]=a;break}_d(f);c[(c[h>>2]|0)+16>>2]=0;c[(c[h>>2]|0)+24>>2]=0;c[j>>2]=7;a=c[j>>2]|0;i=k;return a|0}while(0);if(((c[g>>2]|0)!=0?(c[(c[h>>2]|0)+16>>2]|0)!=0:0)?(c[(c[h>>2]|0)+16>>2]|0)!=(c[(c[h>>2]|0)+20>>2]|0):0)dF(c[(c[h>>2]|0)+20>>2]|0,c[(c[h>>2]|0)+16>>2]|0,c[(c[h>>2]|0)+12>>2]|0)|0;if((e[(c[h>>2]|0)+8>>1]|0)&1024)rb[c[(c[h>>2]|0)+36>>2]&31](c[(c[h>>2]|0)+16>>2]|0);c[(c[h>>2]|0)+16>>2]=c[(c[h>>2]|0)+20>>2];a=(c[h>>2]|0)+8|0;b[a>>1]=(e[a>>1]|0)&-7169;c[j>>2]=0;a=c[j>>2]|0;i=k;return a|0}function Ek(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;f=i;i=i+32|0;h=f+16|0;j=f+12|0;k=f;g=f+8|0;c[h>>2]=a;c[j>>2]=b;a=k;c[a>>2]=d;c[a+4>>2]=e;a=k;c[g>>2]=Fk(c[h>>2]|0,c[j>>2]|0,c[a>>2]|0,c[a+4>>2]|0)|0;if(c[g>>2]|0){k=c[g>>2]|0;i=f;return k|0}Xb(c[h>>2]|0,c[j>>2]|0);k=c[g>>2]|0;i=f;return k|0}function Fk(b,f,g,h){b=b|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0;n=i;i=i+32|0;k=n+20|0;o=n+16|0;j=n+12|0;l=n;m=n+8|0;c[o>>2]=b;c[j>>2]=f;b=l;c[b>>2]=g;c[b+4>>2]=h;c[m>>2]=0;do if(!(d[(c[o>>2]|0)+64>>0]|0)){h=c[o>>2]|0;if(!(c[j>>2]|0)){b=l;c[k>>2]=Qe(h,c[b>>2]|0,c[b+4>>2]|0)|0;b=c[k>>2]|0;i=n;return b|0}if(!(Ck(h,c[j>>2]|0)|0)){b=l;c[m>>2]=lc(c[j>>2]|0,c[b>>2]|0,c[b+4>>2]|0)|0;if(c[m>>2]|0)break;a[(c[o>>2]|0)+64>>0]=1;break}b=l;f=c[b+4>>2]|0;if(f>>>0<0|((f|0)==0?(c[b>>2]|0)>>>0<=(e[(c[o>>2]|0)+248>>1]|0)>>>0:0)){c[k>>2]=c[j>>2];b=c[k>>2]|0;i=n;return b|0}else{b=l;c[m>>2]=Qe(c[o>>2]|0,c[b>>2]|0,c[b+4>>2]|0)|0;if(!(c[m>>2]|0))break;dF(c[m>>2]|0,c[j>>2]|0,e[(c[o>>2]|0)+248>>1]|0|0)|0;Xb(c[o>>2]|0,c[j>>2]|0);break}}while(0);c[k>>2]=c[m>>2];b=c[k>>2]|0;i=n;return b|0}function Gk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;i=i+16|0;f=d+8|0;g=d+4|0;e=d;c[f>>2]=a;c[g>>2]=b;c[e>>2]=c[(c[g>>2]|0)+32>>2];if(!(c[e>>2]|0)){i=d;return}g=c[e>>2]|0;c[g>>2]=(c[g>>2]|0)+ -1;if(c[c[e>>2]>>2]|0){i=d;return}rb[c[(c[e>>2]|0)+4>>2]&31](c[(c[e>>2]|0)+8>>2]|0);Xb(c[f>>2]|0,c[e>>2]|0);i=d;return}function Hk(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=i;i=i+16|0;d=b+12|0;e=b+8|0;f=b+4|0;g=b;c[e>>2]=a;if(c[(c[e>>2]|0)+4>>2]|0){c[d>>2]=1;g=c[d>>2]|0;i=b;return g|0}c[f>>2]=0;while(1){if((c[f>>2]|0)>=(c[(c[e>>2]|0)+20>>2]|0)){a=9;break}c[g>>2]=c[(c[(c[e>>2]|0)+16>>2]|0)+(c[f>>2]<<4)+4>>2];if((c[g>>2]|0)!=0?(Wk(c[g>>2]|0)|0)!=0:0){a=7;break}c[f>>2]=(c[f>>2]|0)+1}if((a|0)==7){c[d>>2]=1;g=c[d>>2]|0;i=b;return g|0}else if((a|0)==9){c[d>>2]=0;g=c[d>>2]|0;i=b;return g|0}return 0}function Ik(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;f=i;i=i+32|0;g=f+20|0;l=f+16|0;k=f+12|0;h=f+8|0;m=f+4|0;j=f;c[g>>2]=b;c[l>>2]=e;c[h>>2]=0;kh();Rb(c[g>>2]|0);if(c[(c[g>>2]|0)+24>>2]&2)e=(d[(c[g>>2]|0)+145>>0]|0)==0;else e=0;c[m>>2]=e&1;c[k>>2]=0;while(1){if((c[k>>2]|0)>=(c[(c[g>>2]|0)+20>>2]|0))break;c[j>>2]=c[(c[(c[g>>2]|0)+16>>2]|0)+(c[k>>2]<<4)+4>>2];if(c[j>>2]|0){if(Tk(c[j>>2]|0)|0)c[h>>2]=1;qd(c[j>>2]|0,c[l>>2]|0,((c[m>>2]|0)!=0^1)&1)|0}c[k>>2]=(c[k>>2]|0)+1}Uk(c[g>>2]|0)|0;lh();if((c[(c[g>>2]|0)+24>>2]&2|0)!=0?(d[(c[g>>2]|0)+145>>0]|0)==0:0){gf(c[g>>2]|0);cd(c[g>>2]|0)}b=(c[g>>2]|0)+504|0;c[b>>2]=0;c[b+4>>2]=0;b=(c[g>>2]|0)+512|0;c[b>>2]=0;c[b+4>>2]=0;b=(c[g>>2]|0)+24|0;c[b>>2]=c[b>>2]&-16777217;if(!(c[(c[g>>2]|0)+200>>2]|0)){i=f;return}if((c[h>>2]|0)==0?(a[(c[g>>2]|0)+62>>0]|0)!=0:0){i=f;return}rb[c[(c[g>>2]|0)+200>>2]&31](c[(c[g>>2]|0)+196>>2]|0);i=f;return}function Jk(b){b=b|0;var d=0,e=0,f=0;e=i;i=i+16|0;d=e+4|0;f=e;c[d>>2]=b;while(1){b=c[d>>2]|0;if(!(c[(c[d>>2]|0)+488>>2]|0))break;c[f>>2]=c[b+488>>2];c[(c[d>>2]|0)+488>>2]=c[(c[f>>2]|0)+24>>2];Xb(c[d>>2]|0,c[f>>2]|0)}c[b+496>>2]=0;c[(c[d>>2]|0)+500>>2]=0;a[(c[d>>2]|0)+69>>0]=0;i=e;return}function Kk(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;e=i;i=i+16|0;d=e+12|0;f=e+8|0;g=e+4|0;h=e;c[d>>2]=b;c[f>>2]=c[(c[d>>2]|0)+4>>2];Pc(c[d>>2]|0);c[g>>2]=c[(c[f>>2]|0)+8>>2];while(1){if(!(c[g>>2]|0))break;c[h>>2]=c[g>>2];c[g>>2]=c[(c[g>>2]|0)+8>>2];if((c[c[h>>2]>>2]|0)!=(c[d>>2]|0))continue;Ok(c[h>>2]|0)|0}qd(c[d>>2]|0,0,0)|0;if(!((a[(c[d>>2]|0)+9>>0]|0)!=0?(Pk(c[f>>2]|0)|0)==0:0)){Ih(c[c[f>>2]>>2]|0)|0;if((c[(c[f>>2]|0)+52>>2]|0)!=0?(c[(c[f>>2]|0)+48>>2]|0)!=0:0)rb[c[(c[f>>2]|0)+52>>2]&31](c[(c[f>>2]|0)+48>>2]|0);Xb(0,c[(c[f>>2]|0)+48>>2]|0);Dg(c[f>>2]|0);hc(c[f>>2]|0)}if(c[(c[d>>2]|0)+24>>2]|0)c[(c[(c[d>>2]|0)+24>>2]|0)+20>>2]=c[(c[d>>2]|0)+20>>2];if(!(c[(c[d>>2]|0)+20>>2]|0)){h=c[d>>2]|0;hc(h);i=e;return 0}c[(c[(c[d>>2]|0)+20>>2]|0)+24>>2]=c[(c[d>>2]|0)+24>>2];h=c[d>>2]|0;hc(h);i=e;return 0}function Lk(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;i=i+16|0;f=b+8|0;d=b+4|0;e=b;c[f>>2]=a;c[d>>2]=c[(c[f>>2]|0)+332>>2];c[(c[f>>2]|0)+332>>2]=0;if(!(c[d>>2]|0)){i=b;return}gf(c[f>>2]|0);do{c[e>>2]=c[(c[d>>2]|0)+24>>2];Nk(c[d>>2]|0);c[d>>2]=c[e>>2]}while((c[d>>2]|0)!=0);i=b;return}function Mk(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;b=i;i=i+16|0;d=b+12|0;g=b+8|0;e=b+4|0;f=b;c[d>>2]=a;c[e>>2]=2;c[g>>2]=2;while(1){if((c[g>>2]|0)>=(c[(c[d>>2]|0)+20>>2]|0))break;c[f>>2]=(c[(c[d>>2]|0)+16>>2]|0)+(c[g>>2]<<4);if(!(c[(c[f>>2]|0)+4>>2]|0)){Xb(c[d>>2]|0,c[c[f>>2]>>2]|0);c[c[f>>2]>>2]=0}else{if((c[e>>2]|0)<(c[g>>2]|0)){a=(c[(c[d>>2]|0)+16>>2]|0)+(c[e>>2]<<4)|0;h=(c[(c[d>>2]|0)+16>>2]|0)+(c[g>>2]<<4)|0;c[a+0>>2]=c[h+0>>2];c[a+4>>2]=c[h+4>>2];c[a+8>>2]=c[h+8>>2];c[a+12>>2]=c[h+12>>2]}c[e>>2]=(c[e>>2]|0)+1}c[g>>2]=(c[g>>2]|0)+1}_E((c[(c[d>>2]|0)+16>>2]|0)+(c[e>>2]<<4)|0,0,(c[(c[d>>2]|0)+20>>2]|0)-(c[e>>2]|0)<<4|0)|0;c[(c[d>>2]|0)+20>>2]=c[e>>2];if((c[(c[d>>2]|0)+20>>2]|0)>2){i=b;return}if((c[(c[d>>2]|0)+16>>2]|0)==((c[d>>2]|0)+456|0)){i=b;return}h=(c[d>>2]|0)+456|0;g=c[(c[d>>2]|0)+16>>2]|0;c[h+0>>2]=c[g+0>>2];c[h+4>>2]=c[g+4>>2];c[h+8>>2]=c[g+8>>2];c[h+12>>2]=c[g+12>>2];c[h+16>>2]=c[g+16>>2];c[h+20>>2]=c[g+20>>2];c[h+24>>2]=c[g+24>>2];c[h+28>>2]=c[g+28>>2];Xb(c[d>>2]|0,c[(c[d>>2]|0)+16>>2]|0);c[(c[d>>2]|0)+16>>2]=(c[d>>2]|0)+456;i=b;return}function Nk(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;i=i+16|0;e=b+8|0;d=b+4|0;f=b;c[e>>2]=a;c[d>>2]=c[c[e>>2]>>2];a=(c[e>>2]|0)+12|0;c[a>>2]=(c[a>>2]|0)+ -1;if(c[(c[e>>2]|0)+12>>2]|0){i=b;return}c[f>>2]=c[(c[e>>2]|0)+8>>2];if(c[f>>2]|0)ub[c[(c[c[f>>2]>>2]|0)+16>>2]&31](c[f>>2]|0)|0;Xb(c[d>>2]|0,c[e>>2]|0);i=b;return}function Ok(a){a=a|0;var d=0,e=0,f=0,g=0,h=0;d=i;i=i+16|0;g=d+12|0;f=d+8|0;h=d+4|0;e=d;c[g>>2]=a;c[f>>2]=c[c[g>>2]>>2];if(!(c[f>>2]|0)){i=d;return 0}c[e>>2]=c[(c[g>>2]|0)+4>>2];Pc(c[f>>2]|0);Qk(c[g>>2]|0);a=c[(c[g>>2]|0)+8>>2]|0;if(c[(c[g>>2]|0)+12>>2]|0)c[(c[(c[g>>2]|0)+12>>2]|0)+8>>2]=a;else c[(c[e>>2]|0)+8>>2]=a;if(c[(c[g>>2]|0)+8>>2]|0)c[(c[(c[g>>2]|0)+8>>2]|0)+12>>2]=c[(c[g>>2]|0)+12>>2];c[h>>2]=0;while(1){if((c[h>>2]|0)>(b[(c[g>>2]|0)+76>>1]|0))break;Rk(c[(c[g>>2]|0)+120+(c[h>>2]<<2)>>2]|0);c[h>>2]=(c[h>>2]|0)+1}Sk(c[e>>2]|0);Xb(c[c[f>>2]>>2]|0,c[(c[g>>2]|0)+20>>2]|0);i=d;return 0}function Pk(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=i;i=i+16|0;f=b+8|0;e=b+4|0;d=b;c[f>>2]=a;c[d>>2]=0;g=(c[f>>2]|0)+64|0;c[g>>2]=(c[g>>2]|0)+ -1;if((c[(c[f>>2]|0)+64>>2]|0)>0){g=c[d>>2]|0;i=b;return g|0}if((c[1058]|0)!=(c[f>>2]|0)){c[e>>2]=c[1058];while(1){if(c[e>>2]|0)g=(c[(c[e>>2]|0)+68>>2]|0)!=(c[f>>2]|0);else g=0;a=c[e>>2]|0;if(!g)break;c[e>>2]=c[a+68>>2]}if(a)c[(c[e>>2]|0)+68>>2]=c[(c[f>>2]|0)+68>>2]}else c[1058]=c[(c[f>>2]|0)+68>>2];c[d>>2]=1;g=c[d>>2]|0;i=b;return g|0}function Qk(b){b=b|0;var d=0,e=0;d=i;i=i+16|0;e=d;c[e>>2]=b;hc(c[(c[e>>2]|0)+56>>2]|0);c[(c[e>>2]|0)+56>>2]=0;a[(c[e>>2]|0)+73>>0]=0;i=d;return}function Rk(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;if(!(c[d>>2]|0)){i=b;return}ej(c[(c[d>>2]|0)+68>>2]|0);i=b;return}function Sk(a){a=a|0;var b=0,e=0,f=0;b=i;i=i+16|0;e=b+4|0;f=b;c[e>>2]=a;if(d[(c[e>>2]|0)+20>>0]|0){i=b;return}if(!(c[(c[e>>2]|0)+12>>2]|0)){i=b;return}c[f>>2]=c[(c[e>>2]|0)+12>>2];c[(c[e>>2]|0)+12>>2]=0;Rk(c[f>>2]|0);i=b;return}function Tk(a){a=a|0;var b=0,e=0;b=i;i=i+16|0;e=b;c[e>>2]=a;if(!(c[e>>2]|0)){e=0;e=e&1;i=b;return e|0}e=(d[(c[e>>2]|0)+8>>0]|0|0)==2;e=e&1;i=b;return e|0}function Uk(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;Vk(c[d>>2]|0,68);i=b;return 0}function Vk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;d=i;i=i+32|0;e=d+20|0;g=d+16|0;j=d+12|0;k=d+8|0;f=d+4|0;h=d;c[e>>2]=a;c[g>>2]=b;if(!(c[(c[e>>2]|0)+328>>2]|0)){i=d;return}c[j>>2]=0;while(1){if((c[j>>2]|0)>=(c[(c[e>>2]|0)+304>>2]|0))break;c[k>>2]=c[(c[(c[e>>2]|0)+328>>2]|0)+(c[j>>2]<<2)>>2];c[f>>2]=c[(c[k>>2]|0)+8>>2];if((c[f>>2]|0)!=0?(c[h>>2]=c[(c[c[f>>2]>>2]|0)+(c[g>>2]|0)>>2],(c[h>>2]|0)!=0):0)ub[c[h>>2]&31](c[f>>2]|0)|0;c[(c[k>>2]|0)+20>>2]=0;Nk(c[k>>2]|0);c[j>>2]=(c[j>>2]|0)+1}Xb(c[e>>2]|0,c[(c[e>>2]|0)+328>>2]|0);c[(c[e>>2]|0)+304>>2]=0;c[(c[e>>2]|0)+328>>2]=0;i=d;return}function Wk(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;i=d;return(c[(c[b>>2]|0)+16>>2]|0)!=0|0}function Xk(a){a=a|0;var b=0,e=0,f=0,g=0,h=0,j=0;e=i;i=i+32|0;b=e+16|0;h=e+12|0;f=e+8|0;g=e+4|0;j=e;c[b>>2]=a;Rb(c[b>>2]|0);c[h>>2]=0;while(1){if((c[h>>2]|0)>=(c[(c[b>>2]|0)+20>>2]|0))break;c[f>>2]=c[(c[(c[b>>2]|0)+16>>2]|0)+(c[h>>2]<<4)+12>>2];a:do if(c[(c[(c[b>>2]|0)+16>>2]|0)+(c[h>>2]<<4)+12>>2]|0){c[g>>2]=c[(c[f>>2]|0)+16>>2];while(1){if(!(c[g>>2]|0))break a;c[j>>2]=c[(c[g>>2]|0)+8>>2];if((d[(c[j>>2]|0)+44>>0]|0)&16)Yk(c[b>>2]|0,c[j>>2]|0);c[g>>2]=c[c[g>>2]>>2]}}while(0);c[h>>2]=(c[h>>2]|0)+1}Lk(c[b>>2]|0);i=e;return}function Yk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;e=i;i=i+16|0;h=e+12|0;j=e+8|0;g=e+4|0;f=e;c[h>>2]=a;c[j>>2]=b;c[g>>2]=(c[j>>2]|0)+60;while(1){if(!(c[c[g>>2]>>2]|0)){d=6;break}b=c[c[g>>2]>>2]|0;if((c[c[c[g>>2]>>2]>>2]|0)==(c[h>>2]|0))break;c[g>>2]=b+24}if((d|0)==6){i=e;return}c[f>>2]=b;c[c[g>>2]>>2]=c[(c[f>>2]|0)+24>>2];Nk(c[f>>2]|0);i=e;return}function Zk(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;rb[c[38640+152>>2]&31](c[(c[d>>2]|0)+40>>2]|0);i=b;return}function _k(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;c[b>>2]=a;d=3136|0;a=d+68|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(a|0));if(c[9661]|0){c[784]=8;c[797]=8}c[787]=10;c[791]=1;i=b;return 0}function $k(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;c[b>>2]=a;d=3136|0;a=d+68|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(a|0));i=b;return}function al(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;e=i;i=i+32|0;h=e+24|0;j=e+20|0;k=e+16|0;f=e+12|0;g=e+8|0;l=e+4|0;c[h>>2]=a;c[j>>2]=b;c[k>>2]=d;c[e>>2]=0;c[l>>2]=48;a=c[l>>2]|0;c[f>>2]=Mc(a,((a|0)<0)<<31>>31)|0;if(!(c[f>>2]|0)){l=c[f>>2]|0;i=e;return l|0}c[g>>2]=3136;c[c[f>>2]>>2]=c[g>>2];c[(c[f>>2]|0)+4>>2]=c[h>>2];c[(c[f>>2]|0)+8>>2]=c[j>>2];c[(c[f>>2]|0)+12>>2]=(c[k>>2]|0)!=0?1:0;ql(c[f>>2]|0);if(c[k>>2]|0){c[(c[f>>2]|0)+16>>2]=10;l=(c[g>>2]|0)+8|0;c[l>>2]=(c[l>>2]|0)+(c[(c[f>>2]|0)+16>>2]|0);c[(c[g>>2]|0)+12>>2]=(c[(c[g>>2]|0)+4>>2]|0)+10-(c[(c[g>>2]|0)+8>>2]|0)}if(c[(c[f>>2]|0)+40>>2]|0){l=c[f>>2]|0;i=e;return l|0}hl(c[f>>2]|0);c[f>>2]=0;l=c[f>>2]|0;i=e;return l|0}function bl(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=i;i=i+16|0;h=d+12|0;g=d+8|0;e=d+4|0;f=d;c[h>>2]=a;c[g>>2]=b;c[e>>2]=c[h>>2];if(!(c[(c[e>>2]|0)+12>>2]|0)){i=d;return}c[f>>2]=c[c[e>>2]>>2];h=(c[f>>2]|0)+4|0;c[h>>2]=(c[h>>2]|0)+((c[g>>2]|0)-(c[(c[e>>2]|0)+20>>2]|0));c[(c[f>>2]|0)+12>>2]=(c[(c[f>>2]|0)+4>>2]|0)+10-(c[(c[f>>2]|0)+8>>2]|0);c[(c[e>>2]|0)+20>>2]=c[g>>2];c[(c[e>>2]|0)+24>>2]=(((c[(c[e>>2]|0)+20>>2]|0)*9|0)>>>0)/10|0;jl(c[f>>2]|0);i=d;return}function cl(a){a=a|0;var b=0,d=0,e=0,f=0;d=i;i=i+16|0;f=d+8|0;b=d+4|0;e=d;c[f>>2]=a;c[e>>2]=c[f>>2];c[b>>2]=c[(c[e>>2]|0)+36>>2];i=d;return c[b>>2]|0}function dl(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;g=i;i=i+32|0;l=g+16|0;j=g+12|0;k=g+8|0;h=g+4|0;f=g;c[l>>2]=b;c[j>>2]=d;c[k>>2]=e;c[h>>2]=c[l>>2];c[f>>2]=0;c[f>>2]=c[(c[(c[h>>2]|0)+44>>2]|0)+((((c[j>>2]|0)>>>0)%((c[(c[h>>2]|0)+40>>2]|0)>>>0)|0)<<2)>>2];while(1){if(c[f>>2]|0)d=(c[(c[f>>2]|0)+8>>2]|0)!=(c[j>>2]|0);else d=0;e=c[f>>2]|0;if(!d)break;c[f>>2]=c[e+16>>2]}if(e){if(a[(c[f>>2]|0)+12>>0]|0){l=c[f>>2]|0;i=g;return l|0}kl(c[f>>2]|0);l=c[f>>2]|0;i=g;return l|0}else{if(!(c[k>>2]|0)){l=c[f>>2]|0;i=g;return l|0}c[f>>2]=ol(c[h>>2]|0,c[j>>2]|0,c[k>>2]|0)|0;l=c[f>>2]|0;i=g;return l|0}return 0}function el(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;h=i;i=i+32|0;m=h+20|0;l=h+16|0;k=h+12|0;f=h+8|0;g=h+4|0;j=h;c[m>>2]=b;c[l>>2]=d;c[k>>2]=e;c[f>>2]=c[m>>2];c[g>>2]=c[l>>2];c[j>>2]=c[c[f>>2]>>2];if((c[k>>2]|0)==0?(c[(c[j>>2]|0)+16>>2]|0)>>>0<=(c[(c[j>>2]|0)+4>>2]|0)>>>0:0){d=c[g>>2]|0;e=c[j>>2]|0;if(c[(c[j>>2]|0)+20>>2]|0){c[(c[e+20>>2]|0)+28>>2]=d;c[(c[g>>2]|0)+24>>2]=c[(c[j>>2]|0)+20>>2];c[(c[j>>2]|0)+20>>2]=c[g>>2]}else{c[e+24>>2]=d;c[(c[j>>2]|0)+20>>2]=c[g>>2]}m=(c[f>>2]|0)+32|0;c[m>>2]=(c[m>>2]|0)+1;a[(c[g>>2]|0)+12>>0]=0;i=h;return}ll(c[g>>2]|0);ml(c[g>>2]|0);i=h;return}function fl(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;f=i;i=i+32|0;o=f+28|0;n=f+24|0;m=f+20|0;j=f+16|0;k=f+12|0;g=f+8|0;h=f+4|0;l=f;c[o>>2]=a;c[n>>2]=b;c[m>>2]=d;c[j>>2]=e;c[k>>2]=c[o>>2];c[g>>2]=c[n>>2];c[l>>2]=((c[m>>2]|0)>>>0)%((c[(c[k>>2]|0)+40>>2]|0)>>>0)|0;c[h>>2]=(c[(c[k>>2]|0)+44>>2]|0)+(c[l>>2]<<2);while(1){if((c[c[h>>2]>>2]|0)==(c[g>>2]|0))break;c[h>>2]=(c[c[h>>2]>>2]|0)+16}c[c[h>>2]>>2]=c[(c[g>>2]|0)+16>>2];c[l>>2]=((c[j>>2]|0)>>>0)%((c[(c[k>>2]|0)+40>>2]|0)>>>0)|0;c[(c[g>>2]|0)+8>>2]=c[j>>2];c[(c[g>>2]|0)+16>>2]=c[(c[(c[k>>2]|0)+44>>2]|0)+(c[l>>2]<<2)>>2];c[(c[(c[k>>2]|0)+44>>2]|0)+(c[l>>2]<<2)>>2]=c[g>>2];if((c[j>>2]|0)>>>0<=(c[(c[k>>2]|0)+28>>2]|0)>>>0){i=f;return}c[(c[k>>2]|0)+28>>2]=c[j>>2];i=f;return}function gl(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;i=i+16|0;g=d+8|0;f=d+4|0;e=d;c[g>>2]=a;c[f>>2]=b;c[e>>2]=c[g>>2];if((c[f>>2]|0)>>>0>(c[(c[e>>2]|0)+28>>2]|0)>>>0){i=d;return}nl(c[e>>2]|0,c[f>>2]|0);c[(c[e>>2]|0)+28>>2]=(c[f>>2]|0)-1;i=d;return}function hl(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;i=i+16|0;f=b+8|0;d=b+4|0;e=b;c[f>>2]=a;c[d>>2]=c[f>>2];c[e>>2]=c[c[d>>2]>>2];nl(c[d>>2]|0,0);a=(c[e>>2]|0)+4|0;c[a>>2]=(c[a>>2]|0)-(c[(c[d>>2]|0)+20>>2]|0);a=(c[e>>2]|0)+8|0;c[a>>2]=(c[a>>2]|0)-(c[(c[d>>2]|0)+16>>2]|0);c[(c[e>>2]|0)+12>>2]=(c[(c[e>>2]|0)+4>>2]|0)+10-(c[(c[e>>2]|0)+8>>2]|0);jl(c[e>>2]|0);hc(c[(c[d>>2]|0)+44>>2]|0);hc(c[d>>2]|0);i=b;return}function il(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=i;i=i+16|0;g=b+12|0;d=b+8|0;e=b+4|0;f=b;c[g>>2]=a;c[d>>2]=c[g>>2];if(!(c[(c[d>>2]|0)+12>>2]|0)){i=b;return}c[e>>2]=c[c[d>>2]>>2];c[f>>2]=c[(c[e>>2]|0)+4>>2];c[(c[e>>2]|0)+4>>2]=0;jl(c[e>>2]|0);c[(c[e>>2]|0)+4>>2]=c[f>>2];i=b;return}function jl(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+16|0;d=b+4|0;e=b;c[d>>2]=a;while(1){if((c[(c[d>>2]|0)+16>>2]|0)>>>0<=(c[(c[d>>2]|0)+4>>2]|0)>>>0){a=5;break}if(!(c[(c[d>>2]|0)+24>>2]|0)){a=5;break}c[e>>2]=c[(c[d>>2]|0)+24>>2];kl(c[e>>2]|0);ll(c[e>>2]|0);ml(c[e>>2]|0)}if((a|0)==5){i=b;return}}function kl(b){b=b|0;var d=0,e=0,f=0,g=0;f=i;i=i+16|0;d=f+8|0;e=f+4|0;g=f;c[d>>2]=b;c[e>>2]=c[(c[d>>2]|0)+20>>2];c[g>>2]=c[c[e>>2]>>2];b=c[(c[d>>2]|0)+24>>2]|0;if(c[(c[d>>2]|0)+28>>2]|0)c[(c[(c[d>>2]|0)+28>>2]|0)+24>>2]=b;else c[(c[g>>2]|0)+20>>2]=b;b=c[(c[d>>2]|0)+28>>2]|0;if(c[(c[d>>2]|0)+24>>2]|0)c[(c[(c[d>>2]|0)+24>>2]|0)+28>>2]=b;else c[(c[g>>2]|0)+24>>2]=b;c[(c[d>>2]|0)+24>>2]=0;c[(c[d>>2]|0)+28>>2]=0;a[(c[d>>2]|0)+12>>0]=1;b=(c[e>>2]|0)+32|0;c[b>>2]=(c[b>>2]|0)+ -1;i=f;return}function ll(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;e=i;i=i+16|0;f=e+12|0;g=e+8|0;d=e+4|0;b=e;c[f>>2]=a;c[d>>2]=c[(c[f>>2]|0)+20>>2];c[g>>2]=((c[(c[f>>2]|0)+8>>2]|0)>>>0)%((c[(c[d>>2]|0)+40>>2]|0)>>>0)|0;c[b>>2]=(c[(c[d>>2]|0)+44>>2]|0)+(c[g>>2]<<2);while(1){a=(c[c[b>>2]>>2]|0)+16|0;if((c[c[b>>2]>>2]|0)==(c[f>>2]|0))break;c[b>>2]=a}c[c[b>>2]>>2]=c[a>>2];g=(c[d>>2]|0)+36|0;c[g>>2]=(c[g>>2]|0)+ -1;i=e;return}function ml(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+16|0;e=b+4|0;d=b;c[e>>2]=a;if(!(c[e>>2]|0)){i=b;return}c[d>>2]=c[(c[e>>2]|0)+20>>2];Mg(c[c[e>>2]>>2]|0)|0;if(!(c[(c[d>>2]|0)+12>>2]|0)){i=b;return}e=(c[c[d>>2]>>2]|0)+16|0;c[e>>2]=(c[e>>2]|0)+ -1;i=b;return}function nl(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;e=i;i=i+32|0;h=e+16|0;k=e+12|0;j=e+8|0;f=e+4|0;g=e;c[h>>2]=b;c[k>>2]=d;c[j>>2]=0;while(1){if((c[j>>2]|0)>>>0>=(c[(c[h>>2]|0)+40>>2]|0)>>>0)break;c[f>>2]=(c[(c[h>>2]|0)+44>>2]|0)+(c[j>>2]<<2);while(1){b=c[c[f>>2]>>2]|0;c[g>>2]=b;if(!b)break;if((c[(c[g>>2]|0)+8>>2]|0)>>>0<(c[k>>2]|0)>>>0){c[f>>2]=(c[g>>2]|0)+16;continue}b=(c[h>>2]|0)+36|0;c[b>>2]=(c[b>>2]|0)+ -1;c[c[f>>2]>>2]=c[(c[g>>2]|0)+16>>2];if(!(a[(c[g>>2]|0)+12>>0]|0))kl(c[g>>2]|0);ml(c[g>>2]|0)}c[j>>2]=(c[j>>2]|0)+1}i=e;return}function ol(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;o=i;i=i+48|0;n=o+32|0;k=o+28|0;f=o+24|0;l=o+20|0;p=o+16|0;h=o+12|0;g=o+8|0;j=o+4|0;m=o;c[k>>2]=b;c[f>>2]=d;c[l>>2]=e;c[h>>2]=c[c[k>>2]>>2];c[g>>2]=0;c[p>>2]=(c[(c[k>>2]|0)+36>>2]|0)-(c[(c[k>>2]|0)+32>>2]|0);do if((c[l>>2]|0)==1){if((c[p>>2]|0)>>>0<(c[(c[h>>2]|0)+12>>2]|0)>>>0?(c[p>>2]|0)>>>0<(c[(c[k>>2]|0)+24>>2]|0)>>>0:0){if(!(pl(c[k>>2]|0)|0))break;if((c[(c[k>>2]|0)+32>>2]|0)>>>0>=(c[p>>2]|0)>>>0)break}c[n>>2]=0;b=c[n>>2]|0;i=o;return b|0}while(0);if((c[(c[k>>2]|0)+36>>2]|0)>>>0>=(c[(c[k>>2]|0)+40>>2]|0)>>>0)ql(c[k>>2]|0);do if((c[(c[k>>2]|0)+12>>2]|0)!=0?(c[(c[h>>2]|0)+24>>2]|0)!=0:0){if((((c[(c[k>>2]|0)+36>>2]|0)+1|0)>>>0<(c[(c[k>>2]|0)+20>>2]|0)>>>0?(c[(c[h>>2]|0)+16>>2]|0)>>>0<(c[(c[h>>2]|0)+4>>2]|0)>>>0:0)?(pl(c[k>>2]|0)|0)==0:0)break;c[g>>2]=c[(c[h>>2]|0)+24>>2];ll(c[g>>2]|0);kl(c[g>>2]|0);c[j>>2]=c[(c[g>>2]|0)+20>>2];if(((c[(c[j>>2]|0)+4>>2]|0)+(c[(c[j>>2]|0)+8>>2]|0)|0)!=((c[(c[k>>2]|0)+4>>2]|0)+(c[(c[k>>2]|0)+8>>2]|0)|0)){ml(c[g>>2]|0);c[g>>2]=0;break}else{b=(c[h>>2]|0)+16|0;c[b>>2]=(c[b>>2]|0)-((c[(c[j>>2]|0)+12>>2]|0)-(c[(c[k>>2]|0)+12>>2]|0));break}}while(0);if(!(c[g>>2]|0)){if((c[l>>2]|0)==1)kh();c[g>>2]=rl(c[k>>2]|0)|0;if((c[l>>2]|0)==1)lh()}if((c[g>>2]|0)!=0?(c[m>>2]=((c[f>>2]|0)>>>0)%((c[(c[k>>2]|0)+40>>2]|0)>>>0)|0,b=(c[k>>2]|0)+36|0,c[b>>2]=(c[b>>2]|0)+1,c[(c[g>>2]|0)+8>>2]=c[f>>2],c[(c[g>>2]|0)+16>>2]=c[(c[(c[k>>2]|0)+44>>2]|0)+(c[m>>2]<<2)>>2],c[(c[g>>2]|0)+20>>2]=c[k>>2],c[(c[g>>2]|0)+28>>2]=0,c[(c[g>>2]|0)+24>>2]=0,a[(c[g>>2]|0)+12>>0]=1,c[c[(c[g>>2]|0)+4>>2]>>2]=0,c[(c[(c[k>>2]|0)+44>>2]|0)+(c[m>>2]<<2)>>2]=c[g>>2],(c[f>>2]|0)>>>0>(c[(c[k>>2]|0)+28>>2]|0)>>>0):0)c[(c[k>>2]|0)+28>>2]=c[f>>2];c[n>>2]=c[g>>2];b=c[n>>2]|0;i=o;return b|0}function pl(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+16|0;d=b+4|0;e=b;c[e>>2]=a;if((c[793]|0)!=0?((c[(c[e>>2]|0)+4>>2]|0)+(c[(c[e>>2]|0)+8>>2]|0)|0)<=(c[792]|0):0){c[d>>2]=c[800];e=c[d>>2]|0;i=b;return e|0}c[d>>2]=sl()|0;e=c[d>>2]|0;i=b;return e|0}function ql(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0;b=i;i=i+32|0;d=b+24|0;e=b+20|0;f=b+16|0;j=b+12|0;h=b+8|0;g=b+4|0;k=b;c[d>>2]=a;a=c[(c[d>>2]|0)+40>>2]<<1;c[f>>2]=a;c[f>>2]=(c[f>>2]|0)>>>0<256?256:a;if(c[(c[d>>2]|0)+40>>2]|0)kh();c[e>>2]=Mc(c[f>>2]<<2,0)|0;if(c[(c[d>>2]|0)+40>>2]|0)lh();if(!(c[e>>2]|0)){i=b;return}c[j>>2]=0;while(1){if((c[j>>2]|0)>>>0>=(c[(c[d>>2]|0)+40>>2]|0)>>>0)break;c[g>>2]=c[(c[(c[d>>2]|0)+44>>2]|0)+(c[j>>2]<<2)>>2];while(1){a=c[g>>2]|0;c[h>>2]=a;if(!a)break;c[k>>2]=((c[(c[h>>2]|0)+8>>2]|0)>>>0)%((c[f>>2]|0)>>>0)|0;c[g>>2]=c[(c[h>>2]|0)+16>>2];c[(c[h>>2]|0)+16>>2]=c[(c[e>>2]|0)+(c[k>>2]<<2)>>2];c[(c[e>>2]|0)+(c[k>>2]<<2)>>2]=c[h>>2]}c[j>>2]=(c[j>>2]|0)+1}hc(c[(c[d>>2]|0)+44>>2]|0);c[(c[d>>2]|0)+44>>2]=c[e>>2];c[(c[d>>2]|0)+40>>2]=c[f>>2];i=b;return}function rl(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=i;i=i+16|0;d=b+12|0;f=b+8|0;e=b+4|0;g=b;c[f>>2]=a;c[e>>2]=0;c[g>>2]=Ug(32+(c[(c[f>>2]|0)+4>>2]|0)+(c[(c[f>>2]|0)+8>>2]|0)|0)|0;c[e>>2]=(c[g>>2]|0)+(c[(c[f>>2]|0)+4>>2]|0);if(!(c[g>>2]|0)){c[d>>2]=0;g=c[d>>2]|0;i=b;return g|0}c[c[e>>2]>>2]=c[g>>2];c[(c[e>>2]|0)+4>>2]=(c[e>>2]|0)+32;if(c[(c[f>>2]|0)+12>>2]|0){g=(c[c[f>>2]>>2]|0)+16|0;c[g>>2]=(c[g>>2]|0)+1}c[d>>2]=c[e>>2];g=c[d>>2]|0;i=b;return g|0}function sl(){return c[43]|0}function tl(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;i=i+16|0;e=b;f=b+8|0;d=b+4|0;c[f>>2]=a;c[f>>2]=(c[f>>2]|0)+7&-8;c[d>>2]=QE((c[f>>2]|0)+8|0)|0;a=c[f>>2]|0;if(c[d>>2]|0){f=c[d>>2]|0;c[f>>2]=a;c[f+4>>2]=((a|0)<0)<<31>>31;c[d>>2]=(c[d>>2]|0)+8;f=c[d>>2]|0;i=b;return f|0}else{c[e>>2]=a;tc(7,6192,e);f=c[d>>2]|0;i=b;return f|0}return 0}function ul(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+16|0;e=b+4|0;d=b;c[e>>2]=a;c[d>>2]=c[e>>2];c[d>>2]=(c[d>>2]|0)+ -8;RE(c[d>>2]|0);i=b;return}function vl(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=i;i=i+32|0;g=d;h=d+16|0;f=d+12|0;e=d+8|0;c[h>>2]=a;c[f>>2]=b;c[e>>2]=c[h>>2];c[e>>2]=(c[e>>2]|0)+ -8;c[e>>2]=SE(c[e>>2]|0,(c[f>>2]|0)+8|0)|0;if(c[e>>2]|0){h=c[f>>2]|0;a=c[e>>2]|0;c[a>>2]=h;c[a+4>>2]=((h|0)<0)<<31>>31;c[e>>2]=(c[e>>2]|0)+8;a=c[e>>2]|0;i=d;return a|0}else{h=wl(c[h>>2]|0)|0;a=c[f>>2]|0;c[g>>2]=h;c[g+4>>2]=a;tc(7,6152,g);a=c[e>>2]|0;i=d;return a|0}return 0}function wl(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;i=i+16|0;d=b+8|0;f=b+4|0;e=b;c[f>>2]=a;if(!(c[f>>2]|0)){c[d>>2]=0;f=c[d>>2]|0;i=b;return f|0}else{c[e>>2]=c[f>>2];c[e>>2]=(c[e>>2]|0)+ -8;c[d>>2]=c[c[e>>2]>>2];f=c[d>>2]|0;i=b;return f|0}return 0}function xl(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;i=d;return(c[b>>2]|0)+7&-8|0}function yl(a){a=a|0;var b=0;b=i;i=i+16|0;c[b>>2]=a;i=b;return 0}function zl(a){a=a|0;var b=0;b=i;i=i+16|0;c[b>>2]=a;i=b;return}function Al(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;p=i;i=i+64|0;h=p+52|0;v=p+48|0;t=p+44|0;l=p+40|0;q=p+36|0;k=p+32|0;j=p+28|0;s=p+24|0;g=p+20|0;o=p+16|0;m=p+12|0;n=p+8|0;r=p+4|0;u=p;c[h>>2]=b;c[v>>2]=e;c[t>>2]=f;c[g>>2]=0;c[o>>2]=0;if((Nd(c[c[t>>2]>>2]|0)|0)==5){i=p;return}c[l>>2]=Ed(c[c[t>>2]>>2]|0)|0;if(!(c[l>>2]|0)){i=p;return}c[k>>2]=Fd(c[c[t>>2]>>2]|0)|0;a:do if((c[v>>2]|0)!=1){b=Ed(c[(c[t>>2]|0)+4>>2]|0)|0;c[q>>2]=b;if(!b){i=p;return}c[n>>2]=c[q>>2];c[m>>2]=0;while(1){if(!(a[c[n>>2]>>0]|0))break;b=c[n>>2]|0;c[n>>2]=b+1;b:do if((d[b>>0]|0)>=192)while(1){if((d[c[n>>2]>>0]&192|0)!=128)break b;c[n>>2]=(c[n>>2]|0)+1}while(0);c[m>>2]=(c[m>>2]|0)+1}if((c[m>>2]|0)>0){e=c[h>>2]|0;b=c[m>>2]|0;b=lF(b|0,((b|0)<0)<<31>>31|0,5,0)|0;c[o>>2]=$m(e,b,D)|0;if(!(c[o>>2]|0)){i=p;return}c[g>>2]=(c[o>>2]|0)+(c[m>>2]<<2);c[n>>2]=c[q>>2];c[m>>2]=0;while(1){if(!(a[c[n>>2]>>0]|0))break a;c[(c[o>>2]|0)+(c[m>>2]<<2)>>2]=c[n>>2];b=c[n>>2]|0;c[n>>2]=b+1;c:do if((d[b>>0]|0)>=192)while(1){if((d[c[n>>2]>>0]&192|0)!=128)break c;c[n>>2]=(c[n>>2]|0)+1}while(0);a[(c[g>>2]|0)+(c[m>>2]|0)>>0]=(c[n>>2]|0)-(c[(c[o>>2]|0)+(c[m>>2]<<2)>>2]|0);c[m>>2]=(c[m>>2]|0)+1}}}else{c[m>>2]=1;c[g>>2]=9896;c[o>>2]=9904;c[q>>2]=0}while(0);if((c[m>>2]|0)>0){c[j>>2]=oe(c[h>>2]|0)|0;d:do if((c[j>>2]&1|0)!=0&(c[k>>2]|0)>0)do{c[r>>2]=0;c[s>>2]=0;while(1){if((c[s>>2]|0)>=(c[m>>2]|0))break;c[r>>2]=d[(c[g>>2]|0)+(c[s>>2]|0)>>0];if((c[r>>2]|0)<=(c[k>>2]|0)?(TE(c[l>>2]|0,c[(c[o>>2]|0)+(c[s>>2]<<2)>>2]|0,c[r>>2]|0)|0)==0:0)break;c[s>>2]=(c[s>>2]|0)+1}if((c[s>>2]|0)>=(c[m>>2]|0))break d;c[l>>2]=(c[l>>2]|0)+(c[r>>2]|0);c[k>>2]=(c[k>>2]|0)-(c[r>>2]|0)}while((c[k>>2]|0)>0);while(0);e:do if((c[j>>2]&2|0)!=0&(c[k>>2]|0)>0)do{c[u>>2]=0;c[s>>2]=0;while(1){if((c[s>>2]|0)>=(c[m>>2]|0))break;c[u>>2]=d[(c[g>>2]|0)+(c[s>>2]|0)>>0];if((c[u>>2]|0)<=(c[k>>2]|0)?(TE((c[l>>2]|0)+((c[k>>2]|0)-(c[u>>2]|0))|0,c[(c[o>>2]|0)+(c[s>>2]<<2)>>2]|0,c[u>>2]|0)|0)==0:0)break;c[s>>2]=(c[s>>2]|0)+1}if((c[s>>2]|0)>=(c[m>>2]|0))break e;c[k>>2]=(c[k>>2]|0)-(c[u>>2]|0)}while((c[k>>2]|0)>0);while(0);if(c[q>>2]|0)hc(c[o>>2]|0)}$d(c[h>>2]|0,c[l>>2]|0,c[k>>2]|0,-1);i=p;return}function Bl(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;l=i;i=i+32|0;g=l+24|0;n=l+20|0;h=l+16|0;k=l+12|0;m=l+8|0;j=l+4|0;e=l;c[g>>2]=a;c[n>>2]=b;c[h>>2]=d;a=(oe(c[g>>2]|0)|0)==0;c[m>>2]=a?0:-1;c[e>>2]=an(c[g>>2]|0)|0;c[j>>2]=0;if((Nd(c[c[h>>2]>>2]|0)|0)==5){i=l;return}c[k>>2]=1;while(1){if((c[k>>2]|0)>=(c[n>>2]|0))break;if((Nd(c[(c[h>>2]|0)+(c[k>>2]<<2)>>2]|0)|0)==5){f=9;break}a=bn(c[(c[h>>2]|0)+(c[j>>2]<<2)>>2]|0,c[(c[h>>2]|0)+(c[k>>2]<<2)>>2]|0,c[e>>2]|0)|0;if((a^c[m>>2]|0)>=0)c[j>>2]=c[k>>2];c[k>>2]=(c[k>>2]|0)+1}if((f|0)==9){i=l;return}be(c[g>>2]|0,c[(c[h>>2]|0)+(c[j>>2]<<2)>>2]|0);i=l;return}function Cl(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;l=i;i=i+32|0;g=l+28|0;n=l+20|0;j=l+16|0;h=l+12|0;f=l+8|0;m=l+4|0;k=l;c[g>>2]=a;c[l+24>>2]=d;c[n>>2]=e;c[j>>2]=c[c[n>>2]>>2];c[h>>2]=qe(c[g>>2]|0,40)|0;if(!(c[h>>2]|0)){i=l;return}a=(Nd(c[c[n>>2]>>2]|0)|0)==5;e=(b[(c[h>>2]|0)+8>>1]|0)!=0;if(a){if(!e){i=l;return}ln(c[g>>2]|0);i=l;return}n=c[g>>2]|0;if(!e){a=pe(n)|0;c[(c[h>>2]|0)+32>>2]=a;ce(c[h>>2]|0,c[j>>2]|0)|0;i=l;return}c[k>>2]=an(n)|0;c[f>>2]=(oe(c[g>>2]|0)|0)!=0&1;c[m>>2]=bn(c[h>>2]|0,c[j>>2]|0,c[k>>2]|0)|0;if(!((c[f>>2]|0)!=0&(c[m>>2]|0)<0)?!((c[f>>2]|0)==0&(c[m>>2]|0)>0):0){ln(c[g>>2]|0);i=l;return}ce(c[h>>2]|0,c[j>>2]|0)|0;i=l;return}function Dl(a){a=a|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=qe(c[f>>2]|0,0)|0;if(!(c[e>>2]|0)){i=d;return}if(b[(c[e>>2]|0)+8>>1]|0)be(c[f>>2]|0,c[e>>2]|0);Bd(c[e>>2]|0);i=d;return}function El(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+16|0;g=e+12|0;h=e+4|0;f=e;c[g>>2]=a;c[e+8>>2]=b;c[h>>2]=d;c[f>>2]=0;d=Nd(c[c[h>>2]>>2]|0)|0;if((d|0)==3)c[f>>2]=9864;else if((d|0)==2)c[f>>2]=9872;else if((d|0)==4)c[f>>2]=9880;else if((d|0)==1)c[f>>2]=9856;else c[f>>2]=9888;$d(c[g>>2]|0,c[f>>2]|0,-1,0);i=e;return}function Fl(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;g=i;i=i+32|0;h=g+16|0;l=g+8|0;j=g+4|0;k=g;c[h>>2]=b;c[g+12>>2]=e;c[l>>2]=f;f=Nd(c[c[l>>2]>>2]|0)|0;if((f|0)==3){c[k>>2]=Ed(c[c[l>>2]>>2]|0)|0;if(!(c[k>>2]|0)){i=g;return}c[j>>2]=0;a:while(1){if(!(a[c[k>>2]>>0]|0))break;c[j>>2]=(c[j>>2]|0)+1;b=c[k>>2]|0;c[k>>2]=b+1;if((d[b>>0]|0)<192)continue;while(1){if((d[c[k>>2]>>0]&192|0)!=128)continue a;c[k>>2]=(c[k>>2]|0)+1}}Wd(c[h>>2]|0,c[j>>2]|0);i=g;return}else if((f|0)==2|(f|0)==1|(f|0)==4){b=c[h>>2]|0;Wd(b,Fd(c[c[l>>2]>>2]|0)|0);i=g;return}else{Zd(c[h>>2]|0);i=g;return}}function Gl(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;m=i;i=i+48|0;l=m+40|0;o=m+32|0;f=m+28|0;n=m+24|0;k=m+20|0;j=m+16|0;p=m+12|0;q=m+8|0;h=m+4|0;g=m;c[l>>2]=a;c[m+36>>2]=b;c[o>>2]=e;c[h>>2]=1;c[p>>2]=Nd(c[c[o>>2]>>2]|0)|0;c[q>>2]=Nd(c[(c[o>>2]|0)+4>>2]|0)|0;if((c[p>>2]|0)==5|(c[q>>2]|0)==5){i=m;return}c[k>>2]=Fd(c[c[o>>2]>>2]|0)|0;c[j>>2]=Fd(c[(c[o>>2]|0)+4>>2]|0)|0;e=c[c[o>>2]>>2]|0;if((c[p>>2]|0)==4&(c[q>>2]|0)==4){c[f>>2]=Cd(e)|0;c[n>>2]=Cd(c[(c[o>>2]|0)+4>>2]|0)|0;c[g>>2]=0}else{c[f>>2]=Ed(e)|0;c[n>>2]=Ed(c[(c[o>>2]|0)+4>>2]|0)|0;c[g>>2]=1}a:while(1){if((c[j>>2]|0)>(c[k>>2]|0))break;if(!(TE(c[f>>2]|0,c[n>>2]|0,c[j>>2]|0)|0))break;c[h>>2]=(c[h>>2]|0)+1;while(1){c[k>>2]=(c[k>>2]|0)+ -1;c[f>>2]=(c[f>>2]|0)+1;if(!(c[g>>2]|0))continue a;if(((d[c[f>>2]>>0]|0)&192|0)!=128)continue a}}if((c[j>>2]|0)>(c[k>>2]|0))c[h>>2]=0;Wd(c[l>>2]|0,c[h>>2]|0);i=m;return}function Hl(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;l=i;i=i+48|0;k=l+44|0;r=l+40|0;p=l+36|0;g=l+32|0;m=l+28|0;n=l+24|0;o=l+20|0;j=l+8|0;h=l;q=l+16|0;c[k>>2]=b;c[r>>2]=e;c[p>>2]=f;c[q>>2]=0;if((Nd(c[(c[p>>2]|0)+4>>2]|0)|0)==5){i=l;return}if((c[r>>2]|0)==3?(Nd(c[(c[p>>2]|0)+8>>2]|0)|0)==5:0){i=l;return}c[o>>2]=Nd(c[c[p>>2]>>2]|0)|0;b=Jd(c[(c[p>>2]|0)+4>>2]|0)|0;f=j;c[f>>2]=b;c[f+4>>2]=((b|0)<0)<<31>>31;f=c[c[p>>2]>>2]|0;a:do if((c[o>>2]|0)==4){c[n>>2]=Fd(f)|0;c[g>>2]=Cd(c[c[p>>2]>>2]|0)|0;if(!(c[g>>2]|0)){i=l;return}}else{c[g>>2]=Ed(f)|0;if(!(c[g>>2]|0)){i=l;return}c[n>>2]=0;if((c[j+4>>2]|0)<0){c[m>>2]=c[g>>2];while(1){if(!(a[c[m>>2]>>0]|0))break a;b=c[m>>2]|0;c[m>>2]=b+1;b:do if((d[b>>0]|0)>=192)while(1){if((d[c[m>>2]>>0]&192|0)!=128)break b;c[m>>2]=(c[m>>2]|0)+1}while(0);c[n>>2]=(c[n>>2]|0)+1}}}while(0);if((c[r>>2]|0)==3){e=Jd(c[(c[p>>2]|0)+8>>2]|0)|0;b=h;c[b>>2]=e;c[b+4>>2]=((e|0)<0)<<31>>31;if((c[h+4>>2]|0)<0){e=h;e=ZE(0,0,c[e>>2]|0,c[e+4>>2]|0)|0;b=h;c[b>>2]=e;c[b+4>>2]=D;c[q>>2]=1}}else{e=c[(pe(c[k>>2]|0)|0)+88>>2]|0;b=h;c[b>>2]=e;c[b+4>>2]=((e|0)<0)<<31>>31}do if((c[j+4>>2]|0)<0){e=c[n>>2]|0;b=j;e=bF(c[b>>2]|0,c[b+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0;b=j;c[b>>2]=e;c[b+4>>2]=D;if((c[j+4>>2]|0)<0){r=j;e=h;r=bF(c[e>>2]|0,c[e+4>>2]|0,c[r>>2]|0,c[r+4>>2]|0)|0;e=D;f=h;c[f>>2]=r;c[f+4>>2]=e;f=(c[h+4>>2]|0)<0;b=h;c[b>>2]=f?0:r;c[b+4>>2]=f?0:e;b=j;c[b>>2]=0;c[b+4>>2]=0}}else{b=j;e=c[b+4>>2]|0;if((e|0)>0|(e|0)==0&(c[b>>2]|0)>>>0>0){e=j;e=bF(c[e>>2]|0,c[e+4>>2]|0,-1,-1)|0;b=j;c[b>>2]=e;c[b+4>>2]=D;break}b=h;e=c[b+4>>2]|0;if((e|0)>0|(e|0)==0&(c[b>>2]|0)>>>0>0){e=h;e=bF(c[e>>2]|0,c[e+4>>2]|0,-1,-1)|0;b=h;c[b>>2]=e;c[b+4>>2]=D}}while(0);if((c[q>>2]|0)!=0?(e=h,b=j,e=ZE(c[b>>2]|0,c[b+4>>2]|0,c[e>>2]|0,c[e+4>>2]|0)|0,b=j,c[b>>2]=e,c[b+4>>2]=D,(c[j+4>>2]|0)<0):0){e=j;b=h;e=bF(c[b>>2]|0,c[b+4>>2]|0,c[e>>2]|0,c[e+4>>2]|0)|0;b=h;c[b>>2]=e;c[b+4>>2]=D;b=j;c[b>>2]=0;c[b+4>>2]=0}if((c[o>>2]|0)==4){r=j;e=h;e=bF(c[r>>2]|0,c[r+4>>2]|0,c[e>>2]|0,c[e+4>>2]|0)|0;r=D;b=c[n>>2]|0;f=((b|0)<0)<<31>>31;if((r|0)>(f|0)|(r|0)==(f|0)&e>>>0>b>>>0){e=c[n>>2]|0;r=j;r=ZE(e|0,((e|0)<0)<<31>>31|0,c[r>>2]|0,c[r+4>>2]|0)|0;e=D;f=h;c[f>>2]=r;c[f+4>>2]=e;f=(c[h+4>>2]|0)<0;b=h;c[b>>2]=f?0:r;c[b+4>>2]=f?0:e}b=h;Qd(c[k>>2]|0,(c[g>>2]|0)+(c[j>>2]|0)|0,c[b>>2]|0,c[b+4>>2]|0,-1);i=l;return}while(1){if(d[c[g>>2]>>0]|0){o=j;o=(c[o>>2]|0)!=0|(c[o+4>>2]|0)!=0}else o=0;n=c[g>>2]|0;if(!o)break;c[g>>2]=n+1;c:do if((d[n>>0]|0)>=192)while(1){if((d[c[g>>2]>>0]&192|0)!=128)break c;c[g>>2]=(c[g>>2]|0)+1}while(0);e=j;e=bF(c[e>>2]|0,c[e+4>>2]|0,-1,-1)|0;b=j;c[b>>2]=e;c[b+4>>2]=D}c[m>>2]=n;while(1){b=h;if(!((d[c[m>>2]>>0]|0)!=0&((c[b>>2]|0)!=0|(c[b+4>>2]|0)!=0)))break;b=c[m>>2]|0;c[m>>2]=b+1;d:do if((d[b>>0]|0)>=192)while(1){if((d[c[m>>2]>>0]&192|0)!=128)break d;c[m>>2]=(c[m>>2]|0)+1}while(0);e=h;e=bF(c[e>>2]|0,c[e+4>>2]|0,-1,-1)|0;b=h;c[b>>2]=e;c[b+4>>2]=D}b=(c[m>>2]|0)-(c[g>>2]|0)|0;ae(c[k>>2]|0,c[g>>2]|0,b,((b|0)<0)<<31>>31,-1,1);i=l;return}function Il(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;k=i;i=i+64|0;m=k;e=k+60|0;f=k+56|0;h=k+52|0;g=k+40|0;j=k+12|0;l=k+8|0;n=k+4|0;c[e>>2]=a;c[f>>2]=b;c[h>>2]=d;if((c[f>>2]|0)<1){i=k;return}a=Ed(c[c[h>>2]>>2]|0)|0;c[l>>2]=a;if(!a){i=k;return}c[g>>2]=(c[f>>2]|0)-1;c[g+4>>2]=0;c[g+8>>2]=(c[h>>2]|0)+4;nc(j,0,0,1e9);c[j>>2]=pe(c[e>>2]|0)|0;b=c[l>>2]|0;c[m>>2]=g;kn(j,2,b,m);c[n>>2]=c[j+12>>2];b=c[e>>2]|0;a=pc(j)|0;$d(b,a,c[n>>2]|0,16);i=k;return}function Jl(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0;f=i;i=i+16|0;g=f+12|0;j=f+4|0;h=f;c[g>>2]=a;c[f+8>>2]=b;c[j>>2]=e;c[h>>2]=Ed(c[c[j>>2]>>2]|0)|0;if(!(c[h>>2]|0)){i=f;return}if(!(d[c[h>>2]>>0]|0)){i=f;return}j=c[g>>2]|0;Wd(j,Um(h)|0);i=f;return}function Kl(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;m=i;i=i+48|0;g=m+32|0;o=m+28|0;k=m+24|0;j=m+20|0;h=m+16|0;l=m+12|0;f=m;n=m+8|0;c[g>>2]=b;c[o>>2]=d;c[k>>2]=e;b=fc((c[o>>2]<<2)+1|0)|0;c[j>>2]=b;c[h>>2]=b;if(!(c[j>>2]|0)){ie(c[g>>2]|0);i=m;return}c[l>>2]=0;while(1){if((c[l>>2]|0)>=(c[o>>2]|0))break;p=Ld(c[(c[k>>2]|0)+(c[l>>2]<<2)>>2]|0)|0;b=D;e=f;c[e>>2]=p;c[e+4>>2]=b;e=f;d=c[e+4>>2]|0;e=(c[f+4>>2]|0)<0|((d|0)>0|(d|0)==0&(c[e>>2]|0)>>>0>1114111);d=f;c[d>>2]=e?65533:p;c[d+4>>2]=e?0:b;c[n>>2]=c[f>>2]&2097151;d=c[n>>2]|0;do if((c[n>>2]|0)>>>0>=128){e=c[n>>2]|0;if(d>>>0<2048){b=c[h>>2]|0;c[h>>2]=b+1;a[b>>0]=192+(e>>>6&31);b=128+(c[n>>2]&63)&255;p=c[h>>2]|0;c[h>>2]=p+1;a[p>>0]=b;break}d=c[n>>2]|0;if(e>>>0<65536){p=c[h>>2]|0;c[h>>2]=p+1;a[p>>0]=224+(d>>>12&15);p=128+((c[n>>2]|0)>>>6&63)&255;b=c[h>>2]|0;c[h>>2]=b+1;a[b>>0]=p;b=128+(c[n>>2]&63)&255;p=c[h>>2]|0;c[h>>2]=p+1;a[p>>0]=b;break}else{b=c[h>>2]|0;c[h>>2]=b+1;a[b>>0]=240+(d>>>18&7);b=128+((c[n>>2]|0)>>>12&63)&255;p=c[h>>2]|0;c[h>>2]=p+1;a[p>>0]=b;p=128+((c[n>>2]|0)>>>6&63)&255;b=c[h>>2]|0;c[h>>2]=b+1;a[b>>0]=p;b=128+(c[n>>2]&63)&255;p=c[h>>2]|0;c[h>>2]=p+1;a[p>>0]=b;break}}else{p=c[h>>2]|0;c[h>>2]=p+1;a[p>>0]=d}while(0);c[l>>2]=(c[l>>2]|0)+1}p=(c[h>>2]|0)-(c[j>>2]|0)|0;ae(c[g>>2]|0,c[j>>2]|0,p,((p|0)<0)<<31>>31,13,1);i=m;return}function Ll(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0;e=i;i=i+32|0;f=e+24|0;j=e+16|0;g=e+8|0;k=e;c[f>>2]=a;c[e+20>>2]=b;c[j>>2]=d;d=Nd(c[c[j>>2]>>2]|0)|0;if((d|0)==1){b=Ld(c[c[j>>2]>>2]|0)|0;a=g;c[a>>2]=b;c[a+4>>2]=D;do if((c[g+4>>2]|0)<0){a=g;if(!((c[a>>2]|0)==0?(c[a+4>>2]|0)==-2147483648:0)){b=g;b=ZE(0,0,c[b>>2]|0,c[b+4>>2]|0)|0;a=g;c[a>>2]=b;c[a+4>>2]=D;break}Ud(c[f>>2]|0,9784,-1);i=e;return}while(0);a=g;Yd(c[f>>2]|0,c[a>>2]|0,c[a+4>>2]|0);i=e;return}else if((d|0)==5){Zd(c[f>>2]|0);i=e;return}else{h[k>>3]=+Hd(c[c[j>>2]>>2]|0);if(+h[k>>3]<0.0)h[k>>3]=-+h[k>>3];Sd(c[f>>2]|0,+h[k>>3]);i=e;return}}function Ml(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,j=0,l=0,m=0,n=0,o=0,p=0.0;e=i;i=i+48|0;l=e+8|0;f=e+36|0;o=e+32|0;n=e+28|0;j=e+24|0;g=e;m=e+20|0;c[f>>2]=a;c[o>>2]=b;c[n>>2]=d;c[j>>2]=0;do if((c[o>>2]|0)==2)if(5==(Nd(c[(c[n>>2]|0)+4>>2]|0)|0)){i=e;return}else{o=Jd(c[(c[n>>2]|0)+4>>2]|0)|0;c[j>>2]=o;o=(c[j>>2]|0)>30?30:o;c[j>>2]=o;c[j>>2]=(c[j>>2]|0)<0?0:o;break}while(0);if((Nd(c[c[n>>2]>>2]|0)|0)==5){i=e;return}h[g>>3]=+Hd(c[c[n>>2]>>2]|0);do if((c[j>>2]|0)==0&+h[g>>3]>=0.0&+h[g>>3]<9223372036854776000.0){p=+h[g>>3]+.5;h[g>>3]=+(~~p>>>0>>>0)+4294967296.0*+((+O(p)>=1.0?p>0.0?(ca(+N(p/4294967296.0),4294967295.0)|0)>>>0:~~+_((p- +(~~p>>>0))/4294967296.0)>>>0:0)|0)}else{if((c[j>>2]|0)==0&+h[g>>3]<0.0?-+h[g>>3]<9223372036854776000.0:0){p=-+h[g>>3]+.5;h[g>>3]=-(+(~~p>>>0>>>0)+4294967296.0*+((+O(p)>=1.0?p>0.0?(ca(+N(p/4294967296.0),4294967295.0)|0)>>>0:~~+_((p- +(~~p>>>0))/4294967296.0)>>>0:0)|0));break}p=+h[g>>3];c[l>>2]=c[j>>2];o=l+4|0;h[k>>3]=p;c[o>>2]=c[k>>2];c[o+4>>2]=c[k+4>>2];c[m>>2]=qc(9848,l)|0;if(c[m>>2]|0){o=c[m>>2]|0;Lm(o,g,Mb(c[m>>2]|0)|0,1)|0;hc(c[m>>2]|0);break}ie(c[f>>2]|0);i=e;return}while(0);Sd(c[f>>2]|0,+h[g>>3]);i=e;return}function Nl(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;g=i;i=i+32|0;h=g+24|0;n=g+16|0;j=g+12|0;m=g+8|0;l=g+4|0;k=g;c[h>>2]=b;c[g+20>>2]=e;c[n>>2]=f;c[m>>2]=Ed(c[c[n>>2]>>2]|0)|0;c[k>>2]=Fd(c[c[n>>2]>>2]|0)|0;if(!(c[m>>2]|0)){i=g;return}b=c[h>>2]|0;n=c[k>>2]|0;n=bF(n|0,((n|0)<0)<<31>>31|0,1,0)|0;c[j>>2]=$m(b,n,D)|0;if(!(c[j>>2]|0)){i=g;return}c[l>>2]=0;while(1){if((c[l>>2]|0)>=(c[k>>2]|0))break;a[(c[j>>2]|0)+(c[l>>2]|0)>>0]=a[(c[m>>2]|0)+(c[l>>2]|0)>>0]&~(d[1224+(d[(c[m>>2]|0)+(c[l>>2]|0)>>0]|0)>>0]&32);c[l>>2]=(c[l>>2]|0)+1}$d(c[h>>2]|0,c[j>>2]|0,c[k>>2]|0,13);i=g;return}function Ol(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;g=i;i=i+32|0;h=g+24|0;n=g+16|0;j=g+12|0;m=g+8|0;l=g+4|0;k=g;c[h>>2]=b;c[g+20>>2]=e;c[n>>2]=f;c[m>>2]=Ed(c[c[n>>2]>>2]|0)|0;c[k>>2]=Fd(c[c[n>>2]>>2]|0)|0;if(!(c[m>>2]|0)){i=g;return}b=c[h>>2]|0;n=c[k>>2]|0;n=bF(n|0,((n|0)<0)<<31>>31|0,1,0)|0;c[j>>2]=$m(b,n,D)|0;if(!(c[j>>2]|0)){i=g;return}c[l>>2]=0;while(1){if((c[l>>2]|0)>=(c[k>>2]|0))break;a[(c[j>>2]|0)+(c[l>>2]|0)>>0]=a[440+(d[(c[m>>2]|0)+(c[l>>2]|0)>>0]|0)>>0]|0;c[l>>2]=(c[l>>2]|0)+1}$d(c[h>>2]|0,c[j>>2]|0,c[k>>2]|0,13);i=g;return}function Pl(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e+8|0;c[f>>2]=a;c[e+4>>2]=b;c[e>>2]=d;a=c[f>>2]|0;$d(a,uf()|0,-1,0);i=e;return}function Ql(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;l=i;i=i+48|0;j=l+28|0;p=l+20|0;m=l+16|0;g=l+12|0;n=l+8|0;k=l+4|0;h=l;o=l+32|0;c[j>>2]=b;c[l+24>>2]=e;c[p>>2]=f;c[n>>2]=Cd(c[c[p>>2]>>2]|0)|0;c[g>>2]=Fd(c[c[p>>2]>>2]|0)|0;e=c[j>>2]|0;b=c[g>>2]|0;b=lF(b|0,((b|0)<0)<<31>>31|0,2,0)|0;b=bF(b|0,D|0,1,0)|0;b=$m(e,b,D)|0;c[k>>2]=b;c[h>>2]=b;if(!(c[k>>2]|0)){i=l;return}c[m>>2]=0;while(1){if((c[m>>2]|0)>=(c[g>>2]|0))break;a[o>>0]=a[c[n>>2]>>0]|0;p=a[9824+((d[o>>0]|0)>>4&15)>>0]|0;b=c[h>>2]|0;c[h>>2]=b+1;a[b>>0]=p;b=a[9824+((d[o>>0]|0)&15)>>0]|0;p=c[h>>2]|0;c[h>>2]=p+1;a[p>>0]=b;c[m>>2]=(c[m>>2]|0)+1;c[n>>2]=(c[n>>2]|0)+1}a[c[h>>2]>>0]=0;$d(c[j>>2]|0,c[k>>2]|0,c[g>>2]<<1,13);i=l;return}function Rl(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=i;i=i+32|0;f=e+16|0;g=e;c[f>>2]=a;c[e+12>>2]=b;c[e+8>>2]=d;vc(8,g);if((c[g+4>>2]|0)<0){b=g;b=ZE(0,0,c[b>>2]|0,c[b+4>>2]&2147483647|0)|0;a=g;c[a>>2]=b;c[a+4>>2]=D}a=g;Yd(c[f>>2]|0,c[a>>2]|0,c[a+4>>2]|0);i=e;return}function Sl(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;i=i+32|0;h=e+16|0;j=e+8|0;f=e+4|0;g=e;c[h>>2]=a;c[e+12>>2]=b;c[j>>2]=d;a=Jd(c[c[j>>2]>>2]|0)|0;c[f>>2]=a;c[f>>2]=(c[f>>2]|0)<1?1:a;a=c[f>>2]|0;c[g>>2]=$m(c[h>>2]|0,a,((a|0)<0)<<31>>31)|0;if(!(c[g>>2]|0)){i=e;return}vc(c[f>>2]|0,c[g>>2]|0);Od(c[h>>2]|0,c[g>>2]|0,c[f>>2]|0,13);i=e;return}function Tl(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+16|0;f=e+12|0;g=e+4|0;h=e;c[f>>2]=a;c[e+8>>2]=b;c[g>>2]=d;c[h>>2]=an(c[f>>2]|0)|0;if(!(bn(c[c[g>>2]>>2]|0,c[(c[g>>2]|0)+4>>2]|0,c[h>>2]|0)|0)){i=e;return}be(c[f>>2]|0,c[c[g>>2]>>2]|0);i=e;return}function Ul(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e+8|0;c[f>>2]=a;c[e+4>>2]=b;c[e>>2]=d;a=c[f>>2]|0;$d(a,vf()|0,-1,0);i=e;return}function Vl(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=i;i=i+16|0;f=e;g=e+4|0;c[e+12>>2]=a;c[e+8>>2]=b;c[g>>2]=d;a=Jd(c[c[g>>2]>>2]|0)|0;c[f>>2]=Ed(c[(c[g>>2]|0)+4>>2]|0)|0;tc(a,1200,f);i=e;return}function Wl(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+16|0;f=e+12|0;h=e+4|0;g=e;c[f>>2]=a;c[e+8>>2]=b;c[h>>2]=d;a=Ed(c[c[h>>2]>>2]|0)|0;c[g>>2]=a;if(!a){i=e;return}h=c[f>>2]|0;Wd(h,Kb(c[g>>2]|0)|0);i=e;return}function Xl(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+16|0;g=e+12|0;h=e+4|0;f=e;c[g>>2]=a;c[e+8>>2]=b;c[h>>2]=d;c[f>>2]=Jd(c[c[h>>2]>>2]|0)|0;a=c[g>>2]|0;$d(a,Ob(c[f>>2]|0)|0,-1,0);i=e;return}function Yl(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;s=i;i=i+128|0;m=s+24|0;l=s+72|0;p=s+64|0;n=s+16|0;o=s+8|0;r=s+76|0;q=s+60|0;t=s+56|0;g=s+52|0;j=s+48|0;v=s+44|0;w=s+40|0;x=s;y=s+36|0;u=s+32|0;c[l>>2]=b;c[s+68>>2]=e;c[p>>2]=f;f=Nd(c[c[p>>2]>>2]|0)|0;if((f|0)==2){h[n>>3]=+Hd(c[c[p>>2]>>2]|0);h[k>>3]=+h[n>>3];c[m>>2]=c[k>>2];c[m+4>>2]=c[k+4>>2];sc(50,r,9808,m)|0;Lm(r,o,20,1)|0;if(+h[n>>3]!=+h[o>>3]){h[k>>3]=+h[n>>3];c[m>>2]=c[k>>2];c[m+4>>2]=c[k+4>>2];sc(50,r,9816,m)|0}$d(c[l>>2]|0,r,-1,-1);i=s;return}else if((f|0)==4){c[q>>2]=0;c[t>>2]=Cd(c[c[p>>2]>>2]|0)|0;c[g>>2]=Fd(c[c[p>>2]>>2]|0)|0;e=c[l>>2]|0;b=c[g>>2]|0;b=lF(2,0,b|0,((b|0)<0)<<31>>31|0)|0;b=bF(b|0,D|0,4,0)|0;c[q>>2]=$m(e,b,D)|0;if(!(c[q>>2]|0)){i=s;return}c[j>>2]=0;while(1){if((c[j>>2]|0)>=(c[g>>2]|0))break;a[(c[q>>2]|0)+((c[j>>2]<<1)+2)>>0]=a[9824+(a[(c[t>>2]|0)+(c[j>>2]|0)>>0]>>4&15)>>0]|0;a[(c[q>>2]|0)+((c[j>>2]<<1)+3)>>0]=a[9824+(a[(c[t>>2]|0)+(c[j>>2]|0)>>0]&15)>>0]|0;c[j>>2]=(c[j>>2]|0)+1}a[(c[q>>2]|0)+((c[g>>2]<<1)+2)>>0]=39;a[(c[q>>2]|0)+((c[g>>2]<<1)+3)>>0]=0;a[c[q>>2]>>0]=88;a[(c[q>>2]|0)+1>>0]=39;$d(c[l>>2]|0,c[q>>2]|0,-1,-1);hc(c[q>>2]|0);i=s;return}else if((f|0)==3){c[y>>2]=Ed(c[c[p>>2]>>2]|0)|0;if(!(c[y>>2]|0)){i=s;return}c[v>>2]=0;b=x;c[b>>2]=0;c[b+4>>2]=0;while(1){if(!(a[(c[y>>2]|0)+(c[v>>2]|0)>>0]|0))break;if((d[(c[y>>2]|0)+(c[v>>2]|0)>>0]|0)==39){e=x;e=bF(c[e>>2]|0,c[e+4>>2]|0,1,0)|0;b=x;c[b>>2]=e;c[b+4>>2]=D}c[v>>2]=(c[v>>2]|0)+1}e=c[l>>2]|0;f=c[v>>2]|0;b=x;b=bF(f|0,((f|0)<0)<<31>>31|0,c[b>>2]|0,c[b+4>>2]|0)|0;b=bF(b|0,D|0,3,0)|0;c[u>>2]=$m(e,b,D)|0;if(!(c[u>>2]|0)){i=s;return}a[c[u>>2]>>0]=39;c[v>>2]=0;c[w>>2]=1;while(1){if(!(a[(c[y>>2]|0)+(c[v>>2]|0)>>0]|0))break;e=a[(c[y>>2]|0)+(c[v>>2]|0)>>0]|0;b=c[w>>2]|0;c[w>>2]=b+1;a[(c[u>>2]|0)+b>>0]=e;if((d[(c[y>>2]|0)+(c[v>>2]|0)>>0]|0)==39){b=c[w>>2]|0;c[w>>2]=b+1;a[(c[u>>2]|0)+b>>0]=39}c[v>>2]=(c[v>>2]|0)+1}b=c[w>>2]|0;c[w>>2]=b+1;a[(c[u>>2]|0)+b>>0]=39;a[(c[u>>2]|0)+(c[w>>2]|0)>>0]=0;$d(c[l>>2]|0,c[u>>2]|0,c[w>>2]|0,13);i=s;return}else if((f|0)==1){be(c[l>>2]|0,c[c[p>>2]>>2]|0);i=s;return}else{$d(c[l>>2]|0,9840,4,0);i=s;return}}function Zl(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=i;i=i+16|0;g=e+12|0;f=e;c[g>>2]=a;c[e+8>>2]=b;c[e+4>>2]=d;c[f>>2]=pe(c[g>>2]|0)|0;b=c[g>>2]|0;a=Hf(c[f>>2]|0)|0;Yd(b,a,D);i=e;return}function _l(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=i;i=i+16|0;g=e+12|0;f=e;c[g>>2]=a;c[e+8>>2]=b;c[e+4>>2]=d;c[f>>2]=pe(c[g>>2]|0)|0;a=c[g>>2]|0;Wd(a,If(c[f>>2]|0)|0);i=e;return}function $l(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=i;i=i+16|0;g=e+12|0;f=e;c[g>>2]=a;c[e+8>>2]=b;c[e+4>>2]=d;c[f>>2]=pe(c[g>>2]|0)|0;a=c[g>>2]|0;Wd(a,Jf(c[f>>2]|0)|0);i=e;return}function am(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;l=i;i=i+80|0;h=l+64|0;r=l+56|0;g=l+52|0;t=l+48|0;w=l+44|0;j=l+40|0;o=l+36|0;q=l+32|0;p=l+28|0;s=l;u=l+24|0;m=l+20|0;n=l+16|0;k=l+12|0;v=l+8|0;c[h>>2]=b;c[l+60>>2]=e;c[r>>2]=f;c[g>>2]=Ed(c[c[r>>2]>>2]|0)|0;if(!(c[g>>2]|0)){i=l;return}c[o>>2]=Fd(c[c[r>>2]>>2]|0)|0;c[t>>2]=Ed(c[(c[r>>2]|0)+4>>2]|0)|0;if(!(c[t>>2]|0)){i=l;return}if(!(d[c[t>>2]>>0]|0)){be(c[h>>2]|0,c[c[r>>2]>>2]|0);i=l;return}c[q>>2]=Fd(c[(c[r>>2]|0)+4>>2]|0)|0;c[w>>2]=Ed(c[(c[r>>2]|0)+8>>2]|0)|0;if(!(c[w>>2]|0)){i=l;return}c[p>>2]=Fd(c[(c[r>>2]|0)+8>>2]|0)|0;e=(c[o>>2]|0)+1|0;b=s;c[b>>2]=e;c[b+4>>2]=((e|0)<0)<<31>>31;b=s;c[j>>2]=$m(c[h>>2]|0,c[b>>2]|0,c[b+4>>2]|0)|0;if(!(c[j>>2]|0)){i=l;return}c[u>>2]=(c[o>>2]|0)-(c[q>>2]|0);c[n>>2]=0;c[m>>2]=0;while(1){if((c[m>>2]|0)>(c[u>>2]|0)){p=18;break}if((d[(c[g>>2]|0)+(c[m>>2]|0)>>0]|0|0)==(d[c[t>>2]>>0]|0|0)?(TE((c[g>>2]|0)+(c[m>>2]|0)|0,c[t>>2]|0,c[q>>2]|0)|0)==0:0){c[v>>2]=pe(c[h>>2]|0)|0;f=(c[p>>2]|0)-(c[q>>2]|0)|0;e=s;f=bF(c[e>>2]|0,c[e+4>>2]|0,f|0,((f|0)<0)<<31>>31|0)|0;e=s;c[e>>2]=f;c[e+4>>2]=D;e=s;e=ZE(c[e>>2]|0,c[e+4>>2]|0,1,0)|0;f=D;b=c[(c[v>>2]|0)+88>>2]|0;r=((b|0)<0)<<31>>31;if((f|0)>(r|0)|(f|0)==(r|0)&e>>>0>b>>>0){p=13;break}c[k>>2]=c[j>>2];c[j>>2]=jc(c[j>>2]|0,c[s>>2]|0)|0;if(!(c[j>>2]|0)){p=15;break}dF((c[j>>2]|0)+(c[n>>2]|0)|0,c[w>>2]|0,c[p>>2]|0)|0;c[n>>2]=(c[n>>2]|0)+(c[p>>2]|0);c[m>>2]=(c[m>>2]|0)+((c[q>>2]|0)-1)}else{e=a[(c[g>>2]|0)+(c[m>>2]|0)>>0]|0;b=c[n>>2]|0;c[n>>2]=b+1;a[(c[j>>2]|0)+b>>0]=e}c[m>>2]=(c[m>>2]|0)+1}if((p|0)==13){he(c[h>>2]|0);hc(c[j>>2]|0);i=l;return}else if((p|0)==15){ie(c[h>>2]|0);hc(c[k>>2]|0);i=l;return}else if((p|0)==18){dF((c[j>>2]|0)+(c[n>>2]|0)|0,(c[g>>2]|0)+(c[m>>2]|0)|0,(c[o>>2]|0)-(c[m>>2]|0)|0)|0;c[n>>2]=(c[n>>2]|0)+((c[o>>2]|0)-(c[m>>2]|0));a[(c[j>>2]|0)+(c[n>>2]|0)>>0]=0;$d(c[h>>2]|0,c[j>>2]|0,c[n>>2]|0,13);i=l;return}}function bm(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;i=i+32|0;j=e+20|0;h=e+12|0;f=e;g=e+8|0;c[j>>2]=a;c[e+16>>2]=b;c[h>>2]=d;c[g>>2]=pe(c[j>>2]|0)|0;h=Ld(c[c[h>>2]>>2]|0)|0;b=f;c[b>>2]=h;c[b+4>>2]=D;b=f;h=c[b+4>>2]|0;a=c[(c[g>>2]|0)+88>>2]|0;g=((a|0)<0)<<31>>31;d=c[j>>2]|0;if((h|0)>(g|0)|((h|0)==(g|0)?(c[b>>2]|0)>>>0>a>>>0:0)){he(d);i=e;return}else{de(d,c[f>>2]|0);i=e;return}}function cm(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,j=0,k=0,l=0,m=0,n=0,o=0.0;g=i;i=i+32|0;n=g+24|0;m=g+16|0;j=g+12|0;l=g+8|0;k=g;c[n>>2]=b;c[g+20>>2]=e;c[m>>2]=f;c[j>>2]=qe(c[n>>2]|0,32)|0;c[l>>2]=Oe(c[c[m>>2]>>2]|0)|0;if(!((c[j>>2]|0)!=0&(c[l>>2]|0)!=5)){i=g;return}f=(c[j>>2]|0)+16|0;n=f;n=bF(c[n>>2]|0,c[n+4>>2]|0,1,0)|0;c[f>>2]=n;c[f+4>>2]=D;f=c[c[m>>2]>>2]|0;if((c[l>>2]|0)!=1){o=+Hd(f);n=c[j>>2]|0;h[n>>3]=+h[n>>3]+o;a[(c[j>>2]|0)+25>>0]=1;i=g;return}n=Ld(f)|0;b=k;c[b>>2]=n;c[b+4>>2]=D;b=k;n=c[j>>2]|0;h[n>>3]=+h[n>>3]+(+((c[b>>2]|0)>>>0)+4294967296.0*+(c[b+4>>2]|0));if(d[(c[j>>2]|0)+25>>0]|0|(d[(c[j>>2]|0)+24>>0]|0)){i=g;return}n=k;if(!(_m((c[j>>2]|0)+8|0,c[n>>2]|0,c[n+4>>2]|0)|0)){i=g;return}a[(c[j>>2]|0)+24>>0]=1;i=g;return}function dm(b){b=b|0;var d=0,e=0,f=0,g=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=b;c[e>>2]=qe(c[f>>2]|0,0)|0;if(!(c[e>>2]|0)){i=d;return}b=(c[e>>2]|0)+16|0;g=c[b+4>>2]|0;if(!((g|0)>0|(g|0)==0&(c[b>>2]|0)>>>0>0)){i=d;return}if(a[(c[e>>2]|0)+24>>0]|0){Ud(c[f>>2]|0,9784,-1);i=d;return}f=c[f>>2]|0;b=c[e>>2]|0;if(a[(c[e>>2]|0)+25>>0]|0){Sd(f,+h[b>>3]);i=d;return}else{g=b+8|0;Yd(f,c[g>>2]|0,c[g+4>>2]|0);i=d;return}}function em(a){a=a|0;var b=0,d=0,e=0,f=0.0;b=i;i=i+16|0;e=b+4|0;d=b;c[e>>2]=a;c[d>>2]=qe(c[e>>2]|0,0)|0;a=c[e>>2]|0;if(!(c[d>>2]|0)){f=0.0;Sd(a,f);i=b;return}f=+h[c[d>>2]>>3];Sd(a,f);i=b;return}function fm(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;i=i+16|0;e=b+4|0;d=b;c[e>>2]=a;c[d>>2]=qe(c[e>>2]|0,0)|0;if(!(c[d>>2]|0)){i=b;return}a=(c[d>>2]|0)+16|0;f=c[a+4>>2]|0;if(!((f|0)>0|(f|0)==0&(c[a>>2]|0)>>>0>0)){i=b;return}f=(c[d>>2]|0)+16|0;Sd(c[e>>2]|0,+h[c[d>>2]>>3]/(+((c[f>>2]|0)>>>0)+4294967296.0*+(c[f+4>>2]|0)));i=b;return}function gm(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;i=i+16|0;j=e+12|0;h=e+8|0;g=e+4|0;f=e;c[j>>2]=a;c[h>>2]=b;c[g>>2]=d;c[f>>2]=qe(c[j>>2]|0,8)|0;if(!(c[h>>2]|0)){if(!(c[f>>2]|0)){i=e;return}}else{j=5!=(Nd(c[c[g>>2]>>2]|0)|0);if(!(j&(c[f>>2]|0)!=0)){i=e;return}}j=c[f>>2]|0;h=j;h=bF(c[h>>2]|0,c[h+4>>2]|0,1,0)|0;c[j>>2]=h;c[j+4>>2]=D;i=e;return}function hm(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+16|0;e=b+4|0;d=b;c[e>>2]=a;c[d>>2]=qe(c[e>>2]|0,0)|0;a=c[e>>2]|0;if(!(c[d>>2]|0)){d=0;e=0;Yd(a,d,e);i=b;return}e=c[d>>2]|0;d=c[e>>2]|0;e=c[e+4>>2]|0;Yd(a,d,e);i=b;return}function im(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;n=i;i=i+48|0;o=n+36|0;l=n+32|0;h=n+28|0;m=n+24|0;q=n+20|0;j=n+16|0;g=n+12|0;k=n+8|0;p=n+4|0;r=n;c[o>>2]=b;c[l>>2]=e;c[h>>2]=f;if((Nd(c[c[h>>2]>>2]|0)|0)==5){i=n;return}c[q>>2]=qe(c[o>>2]|0,28)|0;if(!(c[q>>2]|0)){i=n;return}c[p>>2]=pe(c[o>>2]|0)|0;c[r>>2]=(d[(c[q>>2]|0)+24>>0]|0|0)==0&1;a[(c[q>>2]|0)+24>>0]=2;c[(c[q>>2]|0)+20>>2]=c[(c[p>>2]|0)+88>>2];if(!(c[r>>2]|0)){if((c[l>>2]|0)==2){c[j>>2]=Ed(c[(c[h>>2]|0)+4>>2]|0)|0;c[k>>2]=Fd(c[(c[h>>2]|0)+4>>2]|0)|0}else{c[j>>2]=9776;c[k>>2]=1}if(c[k>>2]|0)Vm(c[q>>2]|0,c[j>>2]|0,c[k>>2]|0)}c[m>>2]=Ed(c[c[h>>2]>>2]|0)|0;c[g>>2]=Fd(c[c[h>>2]>>2]|0)|0;if(!(c[m>>2]|0)){i=n;return}Vm(c[q>>2]|0,c[m>>2]|0,c[g>>2]|0);i=n;return}function jm(a){a=a|0;var b=0,e=0,f=0;b=i;i=i+16|0;f=b+4|0;e=b;c[f>>2]=a;c[e>>2]=qe(c[f>>2]|0,0)|0;if(!(c[e>>2]|0)){i=b;return}if((d[(c[e>>2]|0)+25>>0]|0|0)==2){he(c[f>>2]|0);i=b;return}a=c[f>>2]|0;if((d[(c[e>>2]|0)+25>>0]|0|0)==1){ie(a);i=b;return}else{$d(a,pc(c[e>>2]|0)|0,-1,13);i=b;return}}function km(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;k=i;i=i+48|0;f=k+36|0;n=k+32|0;l=k+28|0;g=k+24|0;h=k+20|0;e=k+16|0;p=k+12|0;o=k+8|0;j=k+4|0;m=k;c[f>>2]=a;c[n>>2]=b;c[l>>2]=d;c[e>>2]=0;c[o>>2]=pe(c[f>>2]|0)|0;c[h>>2]=Ed(c[c[l>>2]>>2]|0)|0;c[g>>2]=Ed(c[(c[l>>2]|0)+4>>2]|0)|0;c[p>>2]=Fd(c[c[l>>2]>>2]|0)|0;if((c[p>>2]|0)>(c[(c[o>>2]|0)+120>>2]|0)){Ud(c[f>>2]|0,9688,-1);i=k;return}do if((c[n>>2]|0)==3){c[j>>2]=Ed(c[(c[l>>2]|0)+8>>2]|0)|0;if(!(c[j>>2]|0)){i=k;return}if((Tm(c[j>>2]|0,-1)|0)==1){c[e>>2]=Um(j)|0;break}Ud(c[f>>2]|0,9728,-1);i=k;return}while(0);if(!((c[g>>2]|0)!=0&(c[h>>2]|0)!=0)){i=k;return}c[m>>2]=oe(c[f>>2]|0)|0;p=c[f>>2]|0;Wd(p,jf(c[h>>2]|0,c[g>>2]|0,c[m>>2]|0,c[e>>2]|0)|0);i=k;return}function lm(){var a=0,b=0,d=0,e=0;a=i;i=i+16|0;b=a+8|0;d=a+4|0;e=a;c[d>>2]=1576;c[e>>2]=9016;c[b>>2]=0;while(1){if((c[b>>2]|0)>=8)break;xk(c[d>>2]|0,(c[e>>2]|0)+((c[b>>2]|0)*36|0)|0);c[b>>2]=(c[b>>2]|0)+1}i=a;return}function mm(){var a=0,b=0,d=0,e=0;a=i;i=i+16|0;b=a+8|0;d=a+4|0;e=a;c[d>>2]=1576;c[e>>2]=8792;c[b>>2]=0;while(1){if((c[b>>2]|0)>=3)break;xk(c[d>>2]|0,(c[e>>2]|0)+((c[b>>2]|0)*36|0)|0);c[b>>2]=(c[b>>2]|0)+1}i=a;return}function nm(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;n=i;i=i+64|0;m=n;o=n+60|0;s=n+52|0;j=n+48|0;k=n+44|0;p=n+40|0;l=n+32|0;q=n+28|0;r=n+24|0;f=n+20|0;h=n+16|0;c[o>>2]=b;c[n+56>>2]=d;c[s>>2]=e;c[j>>2]=Ed(c[c[s>>2]>>2]|0)|0;c[k>>2]=Ed(c[(c[s>>2]|0)+4>>2]|0)|0;c[q>>2]=c[j>>2];c[r>>2]=0;c[h>>2]=pe(c[o>>2]|0)|0;if(!(c[j>>2]|0)){i=n;return}do{if(!(a[c[q>>2]>>0]|0)){g=7;break}c[l>>2]=c[q>>2];c[l+4>>2]=c[r>>2];do{c[q>>2]=(c[q>>2]|0)+(c[r>>2]|0);c[r>>2]=qm(c[q>>2]|0,p)|0}while((c[p>>2]|0)==151)}while((c[p>>2]|0)!=22&(c[p>>2]|0)!=125);if((g|0)==7){i=n;return}s=c[h>>2]|0;e=c[j>>2]|0;d=c[k>>2]|0;b=(c[l>>2]|0)+(c[l+4>>2]|0)|0;c[m>>2]=(c[l>>2]|0)-(c[j>>2]|0);c[m+4>>2]=e;c[m+8>>2]=d;c[m+12>>2]=b;c[f>>2]=Te(s,9e3,m)|0;$d(c[o>>2]|0,c[f>>2]|0,-1,16);i=n;return}function om(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;o=i;i=i+80|0;q=o;s=o+68|0;t=o+60|0;f=o+56|0;p=o+52|0;j=o+48|0;m=o+40|0;h=o+32|0;k=o+28|0;l=o+24|0;r=o+20|0;n=o+16|0;c[s>>2]=b;c[o+64>>2]=d;c[t>>2]=e;c[f>>2]=Ed(c[c[t>>2]>>2]|0)|0;c[p>>2]=Ed(c[(c[t>>2]|0)+4>>2]|0)|0;c[h>>2]=3;c[k>>2]=c[f>>2];c[l>>2]=0;c[n>>2]=pe(c[s>>2]|0)|0;if(!(c[f>>2]|0)){i=o;return}while(1){if(!(a[c[k>>2]>>0]|0)){g=8;break}c[m>>2]=c[k>>2];c[m+4>>2]=c[l>>2];do{c[k>>2]=(c[k>>2]|0)+(c[l>>2]|0);c[l>>2]=qm(c[k>>2]|0,j)|0}while((c[j>>2]|0)==151);t=(c[h>>2]|0)+1|0;c[h>>2]=t;c[h>>2]=(c[j>>2]|0)==122|(c[j>>2]|0)==107?0:t;if((c[h>>2]|0)!=2)continue;if(!((c[j>>2]|0)!=137&(c[j>>2]|0)!=46&(c[j>>2]|0)!=5))break}if((g|0)==8){i=o;return}t=c[n>>2]|0;e=c[f>>2]|0;d=c[p>>2]|0;b=(c[m>>2]|0)+(c[m+4>>2]|0)|0;c[q>>2]=(c[m>>2]|0)-(c[f>>2]|0);c[q+4>>2]=e;c[q+8>>2]=d;c[q+12>>2]=b;c[r>>2]=Te(t,9e3,q)|0;$d(c[s>>2]|0,c[r>>2]|0,-1,16);i=o;return}function pm(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;n=i;i=i+80|0;k=n;m=n+68|0;u=n+60|0;g=n+56|0;j=n+52|0;l=n+48|0;h=n+44|0;s=n+40|0;o=n+36|0;f=n+32|0;q=n+28|0;t=n+24|0;r=n+20|0;p=n+16|0;c[m>>2]=b;c[n+64>>2]=d;c[u>>2]=e;c[g>>2]=pe(c[m>>2]|0)|0;c[j>>2]=0;c[h>>2]=Ed(c[c[u>>2]>>2]|0)|0;c[s>>2]=Ed(c[(c[u>>2]|0)+4>>2]|0)|0;c[o>>2]=Ed(c[(c[u>>2]|0)+8>>2]|0)|0;if((c[h>>2]|0)==0|(c[s>>2]|0)==0){i=n;return}c[f>>2]=c[h>>2];while(1){if(!(a[c[f>>2]>>0]|0))break;c[q>>2]=qm(c[f>>2]|0,t)|0;if((c[t>>2]|0)==105){do{c[f>>2]=(c[f>>2]|0)+(c[q>>2]|0);c[q>>2]=qm(c[f>>2]|0,t)|0}while((c[t>>2]|0)==151);u=c[q>>2]|0;c[r>>2]=rm(c[g>>2]|0,c[f>>2]|0,u,((u|0)<0)<<31>>31)|0;if(!(c[r>>2]|0))break;sm(c[r>>2]|0)|0;if(!(xc(c[s>>2]|0,c[r>>2]|0)|0)){u=c[g>>2]|0;e=(c[f>>2]|0)-(c[h>>2]|0)|0;d=c[h>>2]|0;b=c[o>>2]|0;c[k>>2]=(c[j>>2]|0)!=0?c[j>>2]|0:1216;c[k+4>>2]=e;c[k+8>>2]=d;c[k+12>>2]=b;c[p>>2]=Te(u,8976,k)|0;Xb(c[g>>2]|0,c[j>>2]|0);c[j>>2]=c[p>>2];c[h>>2]=(c[f>>2]|0)+(c[q>>2]|0)}Xb(c[g>>2]|0,c[r>>2]|0)}c[f>>2]=(c[f>>2]|0)+(c[q>>2]|0)}u=c[g>>2]|0;b=c[h>>2]|0;c[k>>2]=(c[j>>2]|0)!=0?c[j>>2]|0:1216;c[k+4>>2]=b;c[l>>2]=Te(u,8992,k)|0;$d(c[m>>2]|0,c[l>>2]|0,-1,16);Xb(c[g>>2]|0,c[j>>2]|0);i=n;return}function qm(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;g=i;i=i+32|0;f=g+24|0;h=g+20|0;m=g+16|0;j=g+12|0;k=g+8|0;o=g+4|0;n=g;c[h>>2]=b;c[m>>2]=e;do switch(d[c[h>>2]>>0]|0){case 45:{if((d[(c[h>>2]|0)+1>>0]|0)!=45){c[c[m>>2]>>2]=90;c[f>>2]=1;b=c[f>>2]|0;i=g;return b|0}c[j>>2]=2;while(1){b=d[(c[h>>2]|0)+(c[j>>2]|0)>>0]|0;c[k>>2]=b;if(!((b|0)!=0&(c[k>>2]|0)!=10))break;c[j>>2]=(c[j>>2]|0)+1}c[c[m>>2]>>2]=151;c[f>>2]=c[j>>2];b=c[f>>2]|0;i=g;return b|0};case 59:{c[c[m>>2]>>2]=1;c[f>>2]=1;b=c[f>>2]|0;i=g;return b|0};case 38:{c[c[m>>2]>>2]=85;c[f>>2]=1;b=c[f>>2]|0;i=g;return b|0};case 40:{c[c[m>>2]>>2]=22;c[f>>2]=1;b=c[f>>2]|0;i=g;return b|0};case 62:{b=d[(c[h>>2]|0)+1>>0]|0;c[k>>2]=b;if((b|0)==61){c[c[m>>2]>>2]=83;c[f>>2]=2;b=c[f>>2]|0;i=g;return b|0}h=c[m>>2]|0;if((c[k>>2]|0)==62){c[h>>2]=88;c[f>>2]=2;b=c[f>>2]|0;i=g;return b|0}else{c[h>>2]=80;c[f>>2]=1;b=c[f>>2]|0;i=g;return b|0}};case 124:{j=c[m>>2]|0;if((d[(c[h>>2]|0)+1>>0]|0)!=124){c[j>>2]=86;c[f>>2]=1;b=c[f>>2]|0;i=g;return b|0}else{c[j>>2]=94;c[f>>2]=2;b=c[f>>2]|0;i=g;return b|0}};case 126:{c[c[m>>2]>>2]=96;c[f>>2]=1;b=c[f>>2]|0;i=g;return b|0};case 57:case 56:case 55:case 54:case 53:case 52:case 51:case 50:case 49:case 48:break;case 61:{c[c[m>>2]>>2]=79;c[f>>2]=1+((d[(c[h>>2]|0)+1>>0]|0)==61&1);b=c[f>>2]|0;i=g;return b|0};case 44:{c[c[m>>2]>>2]=26;c[f>>2]=1;b=c[f>>2]|0;i=g;return b|0};case 60:{b=d[(c[h>>2]|0)+1>>0]|0;c[k>>2]=b;if((b|0)==61){c[c[m>>2]>>2]=81;c[f>>2]=2;b=c[f>>2]|0;i=g;return b|0}if((c[k>>2]|0)==62){c[c[m>>2]>>2]=78;c[f>>2]=2;b=c[f>>2]|0;i=g;return b|0}h=c[m>>2]|0;if((c[k>>2]|0)==60){c[h>>2]=87;c[f>>2]=2;b=c[f>>2]|0;i=g;return b|0}else{c[h>>2]=82;c[f>>2]=1;b=c[f>>2]|0;i=g;return b|0}};case 46:{if(!(d[1224+(d[(c[h>>2]|0)+1>>0]|0)>>0]&4)){c[c[m>>2]>>2]=122;c[f>>2]=1;b=c[f>>2]|0;i=g;return b|0}break};case 13:case 12:case 10:case 9:case 32:{c[j>>2]=1;while(1){if(!(d[1224+(d[(c[h>>2]|0)+(c[j>>2]|0)>>0]|0)>>0]&1))break;c[j>>2]=(c[j>>2]|0)+1}c[c[m>>2]>>2]=151;c[f>>2]=c[j>>2];b=c[f>>2]|0;i=g;return b|0};case 37:{c[c[m>>2]>>2]=93;c[f>>2]=1;b=c[f>>2]|0;i=g;return b|0};case 88:case 120:{if((d[(c[h>>2]|0)+1>>0]|0)==39){c[c[m>>2]>>2]=134;c[j>>2]=2;while(1){k=c[j>>2]|0;if(!(d[1224+(d[(c[h>>2]|0)+(c[j>>2]|0)>>0]|0)>>0]&8))break;c[j>>2]=k+1}if(!((d[(c[h>>2]|0)+k>>0]|0)==39?((c[j>>2]|0)%2|0|0)==0:0))l=125;a:do if((l|0)==125){c[c[m>>2]>>2]=150;while(1){if(!(d[(c[h>>2]|0)+(c[j>>2]|0)>>0]|0))break a;if((d[(c[h>>2]|0)+(c[j>>2]|0)>>0]|0)==39)break a;c[j>>2]=(c[j>>2]|0)+1}}while(0);if(a[(c[h>>2]|0)+(c[j>>2]|0)>>0]|0)c[j>>2]=(c[j>>2]|0)+1;c[f>>2]=c[j>>2];b=c[f>>2]|0;i=g;return b|0}else l=132;break};case 91:{c[j>>2]=1;c[k>>2]=d[c[h>>2]>>0];while(1){if((c[k>>2]|0)==93)break;b=d[(c[h>>2]|0)+(c[j>>2]|0)>>0]|0;c[k>>2]=b;if(!b)break;c[j>>2]=(c[j>>2]|0)+1}c[c[m>>2]>>2]=(c[k>>2]|0)==93?27:150;c[f>>2]=c[j>>2];b=c[f>>2]|0;i=g;return b|0};case 42:{c[c[m>>2]>>2]=91;c[f>>2]=1;b=c[f>>2]|0;i=g;return b|0};case 58:case 35:case 64:case 36:{c[n>>2]=0;c[c[m>>2]>>2]=135;c[j>>2]=1;while(1){b=d[(c[h>>2]|0)+(c[j>>2]|0)>>0]|0;c[k>>2]=b;if(!b)break;if(d[1224+(c[k>>2]&255)>>0]&70)c[n>>2]=(c[n>>2]|0)+1;else{if((c[k>>2]|0)==40&(c[n>>2]|0)>0){l=107;break}if((c[k>>2]|0)!=58)break;if((d[(c[h>>2]|0)+((c[j>>2]|0)+1)>>0]|0)!=58)break;c[j>>2]=(c[j>>2]|0)+1}c[j>>2]=(c[j>>2]|0)+1}do if((l|0)==107){while(1){c[j>>2]=(c[j>>2]|0)+1;b=d[(c[h>>2]|0)+(c[j>>2]|0)>>0]|0;c[k>>2]=b;if(!b)break;if((c[k>>2]|0)!=41?(d[1224+(c[k>>2]&255)>>0]&1|0)==0:0)l=107;else break}if((c[k>>2]|0)==41){c[j>>2]=(c[j>>2]|0)+1;break}else{c[c[m>>2]>>2]=150;break}}while(0);if(!(c[n>>2]|0))c[c[m>>2]>>2]=150;c[f>>2]=c[j>>2];b=c[f>>2]|0;i=g;return b|0};case 34:case 39:case 96:{c[o>>2]=d[c[h>>2]>>0];c[j>>2]=1;while(1){b=d[(c[h>>2]|0)+(c[j>>2]|0)>>0]|0;c[k>>2]=b;if(!b)break;if((c[k>>2]|0)==(c[o>>2]|0)){if((d[(c[h>>2]|0)+((c[j>>2]|0)+1)>>0]|0)!=(c[o>>2]|0))break;c[j>>2]=(c[j>>2]|0)+1}c[j>>2]=(c[j>>2]|0)+1}if((c[k>>2]|0)==39){c[c[m>>2]>>2]=97;c[f>>2]=(c[j>>2]|0)+1;b=c[f>>2]|0;i=g;return b|0}h=c[m>>2]|0;if(c[k>>2]|0){c[h>>2]=27;c[f>>2]=(c[j>>2]|0)+1;b=c[f>>2]|0;i=g;return b|0}else{c[h>>2]=150;c[f>>2]=c[j>>2];b=c[f>>2]|0;i=g;return b|0}};case 41:{c[c[m>>2]>>2]=23;c[f>>2]=1;b=c[f>>2]|0;i=g;return b|0};case 33:{j=c[m>>2]|0;if((d[(c[h>>2]|0)+1>>0]|0)!=61){c[j>>2]=150;c[f>>2]=2;b=c[f>>2]|0;i=g;return b|0}else{c[j>>2]=78;c[f>>2]=2;b=c[f>>2]|0;i=g;return b|0}};case 47:{if((d[(c[h>>2]|0)+1>>0]|0)==42?(d[(c[h>>2]|0)+2>>0]|0)!=0:0){c[j>>2]=3;c[k>>2]=d[(c[h>>2]|0)+2>>0];while(1){if((c[k>>2]|0)==42?(d[(c[h>>2]|0)+(c[j>>2]|0)>>0]|0)==47:0)break;b=d[(c[h>>2]|0)+(c[j>>2]|0)>>0]|0;c[k>>2]=b;if(!b)break;c[j>>2]=(c[j>>2]|0)+1}if(c[k>>2]|0)c[j>>2]=(c[j>>2]|0)+1;c[c[m>>2]>>2]=151;c[f>>2]=c[j>>2];b=c[f>>2]|0;i=g;return b|0}c[c[m>>2]>>2]=92;c[f>>2]=1;b=c[f>>2]|0;i=g;return b|0};case 43:{c[c[m>>2]>>2]=89;c[f>>2]=1;b=c[f>>2]|0;i=g;return b|0};case 63:{c[c[m>>2]>>2]=135;c[j>>2]=1;while(1){k=c[j>>2]|0;if(!(d[1224+(d[(c[h>>2]|0)+(c[j>>2]|0)>>0]|0)>>0]&4))break;c[j>>2]=k+1}c[f>>2]=k;b=c[f>>2]|0;i=g;return b|0};default:l=132}while(0);if((l|0)==132){if(!(d[1224+(d[c[h>>2]>>0]|0)>>0]&70)){c[c[m>>2]>>2]=150;c[f>>2]=1;b=c[f>>2]|0;i=g;return b|0}c[j>>2]=1;while(1){if(!(d[1224+(d[(c[h>>2]|0)+(c[j>>2]|0)>>0]|0)>>0]&70))break;c[j>>2]=(c[j>>2]|0)+1}b=Cg(c[h>>2]|0,c[j>>2]|0)|0;c[c[m>>2]>>2]=b;c[f>>2]=c[j>>2];b=c[f>>2]|0;i=g;return b|0}c[c[m>>2]>>2]=132;do if((d[c[h>>2]>>0]|0)==48){if((d[(c[h>>2]|0)+1>>0]|0)!=120?(d[(c[h>>2]|0)+1>>0]|0)!=88:0)break;if(d[1224+(d[(c[h>>2]|0)+2>>0]|0)>>0]&8){c[j>>2]=3;while(1){k=c[j>>2]|0;if(!(d[1224+(d[(c[h>>2]|0)+(c[j>>2]|0)>>0]|0)>>0]&8))break;c[j>>2]=k+1}c[f>>2]=k;b=c[f>>2]|0;i=g;return b|0}}while(0);c[j>>2]=0;while(1){k=c[j>>2]|0;if(!(d[1224+(d[(c[h>>2]|0)+(c[j>>2]|0)>>0]|0)>>0]&4))break;c[j>>2]=k+1}if((d[(c[h>>2]|0)+k>>0]|0)==46){c[j>>2]=(c[j>>2]|0)+1;while(1){if(!(d[1224+(d[(c[h>>2]|0)+(c[j>>2]|0)>>0]|0)>>0]&4))break;c[j>>2]=(c[j>>2]|0)+1}c[c[m>>2]>>2]=133}if(!((d[(c[h>>2]|0)+(c[j>>2]|0)>>0]|0)!=101?(d[(c[h>>2]|0)+(c[j>>2]|0)>>0]|0)!=69:0))l=82;do if((l|0)==82){if(!(d[1224+(d[(c[h>>2]|0)+((c[j>>2]|0)+1)>>0]|0)>>0]&4)){if((d[(c[h>>2]|0)+((c[j>>2]|0)+1)>>0]|0)!=43?(d[(c[h>>2]|0)+((c[j>>2]|0)+1)>>0]|0)!=45:0)break;if(!(d[1224+(d[(c[h>>2]|0)+((c[j>>2]|0)+2)>>0]|0)>>0]&4))break}c[j>>2]=(c[j>>2]|0)+2;while(1){if(!(d[1224+(d[(c[h>>2]|0)+(c[j>>2]|0)>>0]|0)>>0]&4))break;c[j>>2]=(c[j>>2]|0)+1}c[c[m>>2]>>2]=133}while(0);while(1){if(!(d[1224+(d[(c[h>>2]|0)+(c[j>>2]|0)>>0]|0)>>0]&70))break;c[c[m>>2]>>2]=150;c[j>>2]=(c[j>>2]|0)+1}c[f>>2]=c[j>>2];b=c[f>>2]|0;i=g;return b|0}function rm(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;g=i;i=i+32|0;h=g+20|0;m=g+16|0;k=g+12|0;l=g;j=g+8|0;c[m>>2]=b;c[k>>2]=d;b=l;c[b>>2]=e;c[b+4>>2]=f;if(!(c[k>>2]|0)){c[h>>2]=0;b=c[h>>2]|0;i=g;return b|0}d=c[m>>2]|0;b=l;b=bF(c[b>>2]|0,c[b+4>>2]|0,1,0)|0;c[j>>2]=Qe(d,b,D)|0;if(c[j>>2]|0){dF(c[j>>2]|0,c[k>>2]|0,c[l>>2]|0)|0;a[(c[j>>2]|0)+(c[l>>2]|0)>>0]=0}c[h>>2]=c[j>>2];b=c[h>>2]|0;i=g;return b|0}function sm(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;d=i;i=i+32|0;e=d+12|0;g=d+8|0;h=d+16|0;f=d+4|0;j=d;c[g>>2]=b;if(!(c[g>>2]|0)){c[e>>2]=-1;b=c[e>>2]|0;i=d;return b|0}a[h>>0]=a[c[g>>2]>>0]|0;b=a[h>>0]|0;if((b|0)==91)a[h>>0]=93;else if(!((b|0)==96|(b|0)==34|(b|0)==39)){c[e>>2]=-1;b=c[e>>2]|0;i=d;return b|0}c[f>>2]=1;c[j>>2]=0;while(1){b=c[f>>2]|0;if((a[(c[g>>2]|0)+(c[f>>2]|0)>>0]|0)==(a[h>>0]|0)){if((a[(c[g>>2]|0)+(b+1)>>0]|0)!=(a[h>>0]|0))break;k=a[h>>0]|0;b=c[j>>2]|0;c[j>>2]=b+1;a[(c[g>>2]|0)+b>>0]=k;c[f>>2]=(c[f>>2]|0)+1}else{b=a[(c[g>>2]|0)+b>>0]|0;k=c[j>>2]|0;c[j>>2]=k+1;a[(c[g>>2]|0)+k>>0]=b}c[f>>2]=(c[f>>2]|0)+1}a[(c[g>>2]|0)+(c[j>>2]|0)>>0]=0;c[e>>2]=c[j>>2];k=c[e>>2]|0;i=d;return k|0}function tm(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;i=i+64|0;g=e+56|0;j=e+52|0;h=e+48|0;f=e;c[g>>2]=a;c[j>>2]=b;c[h>>2]=d;if(Bm(c[g>>2]|0,c[j>>2]|0,c[h>>2]|0,f)|0){i=e;return}Cm(f);j=f;Sd(c[g>>2]|0,(+((c[j>>2]|0)>>>0)+4294967296.0*+(c[j+4>>2]|0))/864.0e5);i=e;return}function um(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;e=i;i=i+176|0;g=e+48|0;j=e+68|0;l=e+64|0;k=e+60|0;f=e;h=e+72|0;c[j>>2]=a;c[l>>2]=b;c[k>>2]=d;if(Bm(c[j>>2]|0,c[l>>2]|0,c[k>>2]|0,f)|0){i=e;return}Em(f);k=c[f+12>>2]|0;l=c[f+16>>2]|0;c[g>>2]=c[f+8>>2];c[g+4>>2]=k;c[g+8>>2]=l;sc(100,h,9672,g)|0;$d(c[j>>2]|0,h,-1,-1);i=e;return}function vm(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0,l=0,m=0;e=i;i=i+176|0;g=e+48|0;k=e+68|0;m=e+64|0;l=e+60|0;f=e;j=e+72|0;c[k>>2]=a;c[m>>2]=b;c[l>>2]=d;if(Bm(c[k>>2]|0,c[m>>2]|0,c[l>>2]|0,f)|0){i=e;return}Fm(f);l=c[f+24>>2]|0;m=~~+h[f+32>>3];c[g>>2]=c[f+20>>2];c[g+4>>2]=l;c[g+8>>2]=m;sc(100,j,9656,g)|0;$d(c[k>>2]|0,j,-1,-1);i=e;return}function wm(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,j=0,k=0,l=0,m=0;e=i;i=i+192|0;g=e+48|0;k=e+80|0;m=e+76|0;l=e+72|0;f=e;j=e+84|0;c[k>>2]=a;c[m>>2]=b;c[l>>2]=d;if(Bm(c[k>>2]|0,c[m>>2]|0,c[l>>2]|0,f)|0){i=e;return}Dm(f);d=c[f+12>>2]|0;b=c[f+16>>2]|0;a=c[f+20>>2]|0;l=c[f+24>>2]|0;m=~~+h[f+32>>3];c[g>>2]=c[f+8>>2];c[g+4>>2]=d;c[g+8>>2]=b;c[g+12>>2]=a;c[g+16>>2]=l;c[g+20>>2]=m;sc(100,j,9624,g)|0;$d(c[k>>2]|0,j,-1,-1);i=e;return}function xm(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;t=i;i=i+272|0;r=t+112|0;o=t+156|0;y=t+152|0;z=t+148|0;q=t+64|0;v=t+56|0;n=t+144|0;l=t+140|0;j=t+136|0;w=t+132|0;f=t+128|0;m=t+160|0;s=t+48|0;g=t+124|0;p=t;u=t+120|0;c[o>>2]=b;c[y>>2]=d;c[z>>2]=e;c[f>>2]=Ed(c[c[z>>2]>>2]|0)|0;if(!(c[f>>2]|0)){i=t;return}if(Bm(c[o>>2]|0,(c[y>>2]|0)-1|0,(c[z>>2]|0)+4|0,q)|0){i=t;return}c[w>>2]=pe(c[o>>2]|0)|0;c[n>>2]=0;b=v;c[b>>2]=1;c[b+4>>2]=0;a:while(1){if(!(a[(c[f>>2]|0)+(c[n>>2]|0)>>0]|0))break;if((a[(c[f>>2]|0)+(c[n>>2]|0)>>0]|0)==37){switch(a[(c[f>>2]|0)+((c[n>>2]|0)+1)>>0]|0){case 102:{d=v;b=v;c[b>>2]=bF(c[d>>2]|0,c[d+4>>2]|0,8,0)|0;c[b+4>>2]=D;break};case 87:case 83:case 77:case 109:case 72:case 100:{d=v;b=v;c[b>>2]=bF(c[d>>2]|0,c[d+4>>2]|0,1,0)|0;c[b+4>>2]=D;break};case 74:case 115:{d=v;b=v;c[b>>2]=bF(c[d>>2]|0,c[d+4>>2]|0,50,0)|0;c[b+4>>2]=D;break};case 89:{d=v;b=v;c[b>>2]=bF(c[d>>2]|0,c[d+4>>2]|0,8,0)|0;c[b+4>>2]=D;break};case 37:case 119:break;case 106:{d=v;b=v;c[b>>2]=bF(c[d>>2]|0,c[d+4>>2]|0,3,0)|0;c[b+4>>2]=D;break};default:{x=43;break a}}c[n>>2]=(c[n>>2]|0)+1}c[n>>2]=(c[n>>2]|0)+1;d=v;d=bF(c[d>>2]|0,c[d+4>>2]|0,1,0)|0;b=v;c[b>>2]=d;c[b+4>>2]=D}if((x|0)==43){i=t;return}b=v;d=c[b+4>>2]|0;if(!(d>>>0<0|(d|0)==0&(c[b>>2]|0)>>>0<100)){d=v;z=c[d+4>>2]|0;b=c[(c[w>>2]|0)+88>>2]|0;e=((b|0)<0)<<31>>31;if(z>>>0>e>>>0|((z|0)==(e|0)?(c[d>>2]|0)>>>0>b>>>0:0)){he(c[o>>2]|0);i=t;return}b=c[v>>2]|0;c[j>>2]=Qe(c[w>>2]|0,b,((b|0)<0)<<31>>31)|0;if(!(c[j>>2]|0)){ie(c[o>>2]|0);i=t;return}}else c[j>>2]=m;Cm(q);Dm(q);c[l>>2]=0;c[n>>2]=0;while(1){if(!(a[(c[f>>2]|0)+(c[n>>2]|0)>>0]|0))break;v=c[n>>2]|0;b:do if((a[(c[f>>2]|0)+(c[n>>2]|0)>>0]|0)!=37){d=a[(c[f>>2]|0)+v>>0]|0;b=c[l>>2]|0;c[l>>2]=b+1;a[(c[j>>2]|0)+b>>0]=d}else{c[n>>2]=v+1;do switch(a[(c[f>>2]|0)+(c[n>>2]|0)>>0]|0){case 106:case 87:{x=p+0|0;w=q+0|0;v=x+48|0;do{c[x>>2]=c[w>>2];x=x+4|0;w=w+4|0}while((x|0)<(v|0));a[p+42>>0]=0;c[p+12>>2]=1;c[p+16>>2]=1;Cm(p);d=q;b=p;c[g>>2]=jF(bF(ZE(c[d>>2]|0,c[d+4>>2]|0,c[b>>2]|0,c[b+4>>2]|0)|0,D|0,432e5,0)|0,D|0,864e5,0)|0;if((a[(c[f>>2]|0)+(c[n>>2]|0)>>0]|0)==87){b=q;b=bF(c[b>>2]|0,c[b+4>>2]|0,432e5,0)|0;b=jF(b|0,D|0,864e5,0)|0;b=kF(b|0,D|0,7,0)|0;c[u>>2]=b;b=(c[j>>2]|0)+(c[l>>2]|0)|0;c[r>>2]=((c[g>>2]|0)+7-(c[u>>2]|0)|0)/7|0;sc(3,b,9424,r)|0;c[l>>2]=(c[l>>2]|0)+2;break b}else{b=(c[j>>2]|0)+(c[l>>2]|0)|0;c[r>>2]=(c[g>>2]|0)+1;sc(4,b,9440,r)|0;c[l>>2]=(c[l>>2]|0)+3;break b}};case 77:{b=(c[j>>2]|0)+(c[l>>2]|0)|0;c[r>>2]=c[q+24>>2];sc(3,b,9424,r)|0;c[l>>2]=(c[l>>2]|0)+2;break b};case 115:{b=(c[j>>2]|0)+(c[l>>2]|0)|0;e=q;d=r;c[d>>2]=ZE(jF(c[e>>2]|0,c[e+4>>2]|0,1e3,0)|0,D|0,413362496,49)|0;c[d+4>>2]=D;sc(30,b,9456,r)|0;c[l>>2]=(Mb((c[j>>2]|0)+(c[l>>2]|0)|0)|0)+(c[l>>2]|0);break b};case 72:{b=(c[j>>2]|0)+(c[l>>2]|0)|0;c[r>>2]=c[q+20>>2];sc(3,b,9424,r)|0;c[l>>2]=(c[l>>2]|0)+2;break b};case 109:{b=(c[j>>2]|0)+(c[l>>2]|0)|0;c[r>>2]=c[q+12>>2];sc(3,b,9424,r)|0;c[l>>2]=(c[l>>2]|0)+2;break b};case 89:{b=(c[j>>2]|0)+(c[l>>2]|0)|0;c[r>>2]=c[q+8>>2];sc(5,b,9464,r)|0;c[l>>2]=(Mb((c[j>>2]|0)+(c[l>>2]|0)|0)|0)+(c[l>>2]|0);break b};case 74:{b=(c[j>>2]|0)+(c[l>>2]|0)|0;d=q;h[k>>3]=(+((c[d>>2]|0)>>>0)+4294967296.0*+(c[d+4>>2]|0))/864.0e5;c[r>>2]=c[k>>2];c[r+4>>2]=c[k+4>>2];sc(20,b,9448,r)|0;c[l>>2]=(Mb((c[j>>2]|0)+(c[l>>2]|0)|0)|0)+(c[l>>2]|0);break b};case 100:{b=(c[j>>2]|0)+(c[l>>2]|0)|0;c[r>>2]=c[q+16>>2];sc(3,b,9424,r)|0;c[l>>2]=(c[l>>2]|0)+2;break b};case 119:{d=q;d=kF(jF(bF(c[d>>2]|0,c[d+4>>2]|0,1296e5,0)|0,D|0,864e5,0)|0,D|0,7,0)|0;b=c[l>>2]|0;c[l>>2]=b+1;a[(c[j>>2]|0)+b>>0]=((d&255)<<24>>24)+48;break b};case 83:{b=(c[j>>2]|0)+(c[l>>2]|0)|0;c[r>>2]=~~+h[q+32>>3];sc(3,b,9424,r)|0;c[l>>2]=(c[l>>2]|0)+2;break b};case 102:{h[s>>3]=+h[q+32>>3];if(+h[s>>3]>59.999)h[s>>3]=59.999;b=(c[j>>2]|0)+(c[l>>2]|0)|0;h[k>>3]=+h[s>>3];c[r>>2]=c[k>>2];c[r+4>>2]=c[k+4>>2];sc(7,b,9432,r)|0;c[l>>2]=(Mb((c[j>>2]|0)+(c[l>>2]|0)|0)|0)+(c[l>>2]|0);break b};default:{b=c[l>>2]|0;c[l>>2]=b+1;a[(c[j>>2]|0)+b>>0]=37;break b}}while(0)}while(0);c[n>>2]=(c[n>>2]|0)+1}a[(c[j>>2]|0)+(c[l>>2]|0)>>0]=0;$d(c[o>>2]|0,c[j>>2]|0,-1,(c[j>>2]|0)==(m|0)?-1:16);i=t;return}function ym(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e+8|0;c[f>>2]=a;c[e+4>>2]=b;c[e>>2]=d;vm(c[f>>2]|0,0,0);i=e;return}function zm(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e+8|0;c[f>>2]=a;c[e+4>>2]=b;c[e>>2]=d;wm(c[f>>2]|0,0,0);i=e;return}function Am(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e+8|0;c[f>>2]=a;c[e+4>>2]=b;c[e>>2]=d;um(c[f>>2]|0,0,0);i=e;return}function Bm(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0.0;h=i;i=i+32|0;g=h+28|0;k=h+24|0;o=h+20|0;m=h+16|0;l=h+12|0;p=h+8|0;j=h+4|0;n=h;c[k>>2]=b;c[o>>2]=d;c[m>>2]=e;c[l>>2]=f;e=(c[l>>2]|0)+0|0;f=e+48|0;do{c[e>>2]=0;e=e+4|0}while((e|0)<(f|0));if(!(c[o>>2]|0)){c[g>>2]=Gm(c[k>>2]|0,c[l>>2]|0)|0;b=c[g>>2]|0;i=h;return b|0}b=Nd(c[c[m>>2]>>2]|0)|0;c[n>>2]=b;f=c[c[m>>2]>>2]|0;do if((b|0)==2|(c[n>>2]|0)==1){q=+Hd(f)*864.0e5+.5;d=+O(q)>=1.0?q>0.0?(ca(+N(q/4294967296.0),4294967295.0)|0)>>>0:~~+_((q- +(~~q>>>0))/4294967296.0)>>>0:0;b=c[l>>2]|0;c[b>>2]=~~q>>>0;c[b+4>>2]=d;a[(c[l>>2]|0)+42>>0]=1}else{c[j>>2]=Ed(f)|0;if((c[j>>2]|0)!=0?(Hm(c[k>>2]|0,c[j>>2]|0,c[l>>2]|0)|0)==0:0)break;c[g>>2]=1;b=c[g>>2]|0;i=h;return b|0}while(0);c[p>>2]=1;while(1){if((c[p>>2]|0)>=(c[o>>2]|0)){j=14;break}c[j>>2]=Ed(c[(c[m>>2]|0)+(c[p>>2]<<2)>>2]|0)|0;if(!(c[j>>2]|0)){j=12;break}if(Im(c[k>>2]|0,c[j>>2]|0,c[l>>2]|0)|0){j=12;break}c[p>>2]=(c[p>>2]|0)+1}if((j|0)==12){c[g>>2]=1;b=c[g>>2]|0;i=h;return b|0}else if((j|0)==14){c[g>>2]=0;b=c[g>>2]|0;i=h;return b|0}return 0}function Cm(b){b=b|0;var d=0,e=0,f=0,g=0,j=0,k=0,l=0,m=0,n=0,o=0.0;d=i;i=i+32|0;n=d+28|0;e=d+24|0;k=d+20|0;m=d+16|0;f=d+12|0;g=d+8|0;j=d+4|0;l=d;c[n>>2]=b;if(a[(c[n>>2]|0)+42>>0]|0){i=d;return}if(a[(c[n>>2]|0)+40>>0]|0){c[e>>2]=c[(c[n>>2]|0)+8>>2];c[k>>2]=c[(c[n>>2]|0)+12>>2];c[m>>2]=c[(c[n>>2]|0)+16>>2]}else{c[e>>2]=2e3;c[k>>2]=1;c[m>>2]=1}if((c[k>>2]|0)<=2){c[e>>2]=(c[e>>2]|0)+ -1;c[k>>2]=(c[k>>2]|0)+12}c[f>>2]=(c[e>>2]|0)/100|0;c[g>>2]=2-(c[f>>2]|0)+((c[f>>2]|0)/4|0);c[j>>2]=(((c[e>>2]|0)+4716|0)*36525|0)/100|0;c[l>>2]=(((c[k>>2]|0)+1|0)*306001|0)/1e4|0;o=(+((c[j>>2]|0)+(c[l>>2]|0)+(c[m>>2]|0)+(c[g>>2]|0)|0)-1524.5)*864.0e5;l=+O(o)>=1.0?o>0.0?(ca(+N(o/4294967296.0),4294967295.0)|0)>>>0:~~+_((o- +(~~o>>>0))/4294967296.0)>>>0:0;m=c[n>>2]|0;c[m>>2]=~~o>>>0;c[m+4>>2]=l;a[(c[n>>2]|0)+42>>0]=1;if(!(a[(c[n>>2]|0)+41>>0]|0)){i=d;return}l=$(c[(c[n>>2]|0)+20>>2]|0,36e5)|0;l=l+((c[(c[n>>2]|0)+24>>2]|0)*6e4|0)|0;o=+h[(c[n>>2]|0)+32>>3]*1.0e3;l=bF(l|0,((l|0)<0)<<31>>31|0,~~o>>>0|0,(+O(o)>=1.0?o>0.0?(ca(+N(o/4294967296.0),4294967295.0)|0)>>>0:~~+_((o- +(~~o>>>0))/4294967296.0)>>>0:0)|0)|0;m=c[n>>2]|0;k=m;l=bF(c[k>>2]|0,c[k+4>>2]|0,l|0,D|0)|0;c[m>>2]=l;c[m+4>>2]=D;if(!(a[(c[n>>2]|0)+43>>0]|0)){i=d;return}l=(c[(c[n>>2]|0)+28>>2]|0)*6e4|0;m=c[n>>2]|0;k=m;l=ZE(c[k>>2]|0,c[k+4>>2]|0,l|0,((l|0)<0)<<31>>31|0)|0;c[m>>2]=l;c[m+4>>2]=D;a[(c[n>>2]|0)+40>>0]=0;a[(c[n>>2]|0)+41>>0]=0;a[(c[n>>2]|0)+43>>0]=0;i=d;return}function Dm(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;Em(c[d>>2]|0);Fm(c[d>>2]|0);i=b;return}function Em(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;h=i;i=i+32|0;e=h+28|0;f=h+24|0;g=h+20|0;d=h+16|0;j=h+12|0;k=h+8|0;l=h+4|0;m=h;c[e>>2]=b;if(a[(c[e>>2]|0)+40>>0]|0){i=h;return}b=c[e>>2]|0;if(a[(c[e>>2]|0)+42>>0]|0){b=bF(c[b>>2]|0,c[b+4>>2]|0,432e5,0)|0;b=jF(b|0,D|0,864e5,0)|0;c[f>>2]=b;c[g>>2]=~~((+(c[f>>2]|0)-1867216.25)/36524.25);c[g>>2]=(c[f>>2]|0)+1+(c[g>>2]|0)-((c[g>>2]|0)/4|0);c[d>>2]=(c[g>>2]|0)+1524;c[j>>2]=~~((+(c[d>>2]|0)-122.1)/365.25);c[k>>2]=((c[j>>2]|0)*36525|0)/100|0;c[l>>2]=~~(+((c[d>>2]|0)-(c[k>>2]|0)|0)/30.6001);c[m>>2]=~~(+(c[l>>2]|0)*30.6001);c[(c[e>>2]|0)+16>>2]=(c[d>>2]|0)-(c[k>>2]|0)-(c[m>>2]|0);b=c[l>>2]|0;c[(c[e>>2]|0)+12>>2]=(c[l>>2]|0)<14?b-1|0:b-13|0;b=c[j>>2]|0;c[(c[e>>2]|0)+8>>2]=(c[(c[e>>2]|0)+12>>2]|0)>2?b-4716|0:b-4715|0}else{c[b+8>>2]=2e3;c[(c[e>>2]|0)+12>>2]=1;c[(c[e>>2]|0)+16>>2]=1}a[(c[e>>2]|0)+40>>0]=1;i=h;return}function Fm(b){b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;e=d+4|0;f=d;c[e>>2]=b;if(a[(c[e>>2]|0)+41>>0]|0){i=d;return}Cm(c[e>>2]|0);b=c[e>>2]|0;b=bF(c[b>>2]|0,c[b+4>>2]|0,432e5,0)|0;b=kF(b|0,D|0,864e5,0)|0;c[f>>2]=b;h[(c[e>>2]|0)+32>>3]=+(c[f>>2]|0)/1.0e3;c[f>>2]=~~+h[(c[e>>2]|0)+32>>3];b=(c[e>>2]|0)+32|0;h[b>>3]=+h[b>>3]- +(c[f>>2]|0);c[(c[e>>2]|0)+20>>2]=(c[f>>2]|0)/3600|0;c[f>>2]=(c[f>>2]|0)-((c[(c[e>>2]|0)+20>>2]|0)*3600|0);c[(c[e>>2]|0)+24>>2]=(c[f>>2]|0)/60|0;b=(c[e>>2]|0)+32|0;h[b>>3]=+h[b>>3]+ +((c[f>>2]|0)-((c[(c[e>>2]|0)+24>>2]|0)*60|0)|0);a[(c[e>>2]|0)+41>>0]=1;i=d;return}function Gm(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+16|0;f=e+8|0;h=e+4|0;g=e;c[h>>2]=b;c[g>>2]=d;d=Rm(c[h>>2]|0)|0;b=c[g>>2]|0;c[b>>2]=d;c[b+4>>2]=D;b=c[g>>2]|0;d=c[b+4>>2]|0;if((d|0)>0|(d|0)==0&(c[b>>2]|0)>>>0>0){a[(c[g>>2]|0)+42>>0]=1;c[f>>2]=0;h=c[f>>2]|0;i=e;return h|0}else{c[f>>2]=1;h=c[f>>2]|0;i=e;return h|0}return 0}function Hm(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,j=0,k=0,l=0,m=0,n=0.0;f=i;i=i+32|0;g=f+20|0;j=f+16|0;l=f+12|0;k=f+8|0;m=f;c[j>>2]=b;c[l>>2]=d;c[k>>2]=e;if(!(Qm(c[l>>2]|0,c[k>>2]|0)|0)){c[g>>2]=0;b=c[g>>2]|0;i=f;return b|0}if(!(Mm(c[l>>2]|0,c[k>>2]|0)|0)){c[g>>2]=0;b=c[g>>2]|0;i=f;return b|0}if(!(xc(c[l>>2]|0,9616)|0)){c[g>>2]=Gm(c[j>>2]|0,c[k>>2]|0)|0;b=c[g>>2]|0;i=f;return b|0}b=c[l>>2]|0;if(Lm(b,m,Mb(c[l>>2]|0)|0,1)|0){n=+h[m>>3]*864.0e5+.5;d=+O(n)>=1.0?n>0.0?(ca(+N(n/4294967296.0),4294967295.0)|0)>>>0:~~+_((n- +(~~n>>>0))/4294967296.0)>>>0:0;b=c[k>>2]|0;c[b>>2]=~~n>>>0;c[b+4>>2]=d;a[(c[k>>2]|0)+42>>0]=1;c[g>>2]=0;b=c[g>>2]|0;i=f;return b|0}else{c[g>>2]=1;b=c[g>>2]|0;i=f;return b|0}return 0}function Im(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0;g=i;i=i+160|0;x=g+124|0;z=g+120|0;k=g+116|0;l=g+112|0;v=g+108|0;q=g+80|0;j=g+104|0;y=g+72|0;w=g+64|0;r=g+56|0;m=g+100|0;n=g+8|0;o=g;t=g+96|0;s=g+92|0;p=g+88|0;c[x>>2]=b;c[z>>2]=e;c[k>>2]=f;c[l>>2]=1;c[j>>2]=g+128;c[v>>2]=0;while(1){if((c[v>>2]|0)>=29)break;if(!(a[(c[z>>2]|0)+(c[v>>2]|0)>>0]|0))break;a[(c[j>>2]|0)+(c[v>>2]|0)>>0]=a[440+(d[(c[z>>2]|0)+(c[v>>2]|0)>>0]|0)>>0]|0;c[v>>2]=(c[v>>2]|0)+1}a[(c[j>>2]|0)+(c[v>>2]|0)>>0]=0;switch(a[c[j>>2]>>0]|0){case 57:case 56:case 55:case 54:case 53:case 52:case 51:case 50:case 49:case 48:case 45:case 43:{c[v>>2]=1;while(1){if(!(a[(c[j>>2]|0)+(c[v>>2]|0)>>0]|0))break;if((a[(c[j>>2]|0)+(c[v>>2]|0)>>0]|0)==58)break;if(d[1224+(d[(c[j>>2]|0)+(c[v>>2]|0)>>0]|0)>>0]&1)break;c[v>>2]=(c[v>>2]|0)+1}if(!(Lm(c[j>>2]|0,q,c[v>>2]|0,1)|0)){c[l>>2]=1;b=c[l>>2]|0;i=g;return b|0}if((a[(c[j>>2]|0)+(c[v>>2]|0)>>0]|0)==58){c[m>>2]=c[j>>2];if(!(d[1224+(d[c[m>>2]>>0]|0)>>0]&4))c[m>>2]=(c[m>>2]|0)+1;q=n+0|0;p=q+48|0;do{c[q>>2]=0;q=q+4|0}while((q|0)<(p|0));if(Mm(c[m>>2]|0,n)|0){b=c[l>>2]|0;i=g;return b|0}Cm(n);e=n;e=ZE(c[e>>2]|0,c[e+4>>2]|0,432e5,0)|0;b=n;c[b>>2]=e;c[b+4>>2]=D;b=n;b=jF(c[b>>2]|0,c[b+4>>2]|0,864e5,0)|0;e=o;c[e>>2]=b;c[e+4>>2]=D;e=o;e=lF(c[e>>2]|0,c[e+4>>2]|0,864e5,0)|0;b=n;e=ZE(c[b>>2]|0,c[b+4>>2]|0,e|0,D|0)|0;b=n;c[b>>2]=e;c[b+4>>2]=D;if((a[c[j>>2]>>0]|0)==45){e=n;e=ZE(0,0,c[e>>2]|0,c[e+4>>2]|0)|0;b=n;c[b>>2]=e;c[b+4>>2]=D}Cm(c[k>>2]|0);Km(c[k>>2]|0);e=n;b=c[k>>2]|0;f=b;e=bF(c[f>>2]|0,c[f+4>>2]|0,c[e>>2]|0,c[e+4>>2]|0)|0;c[b>>2]=e;c[b+4>>2]=D;c[l>>2]=0;b=c[l>>2]|0;i=g;return b|0}c[j>>2]=(c[j>>2]|0)+(c[v>>2]|0);while(1){m=c[j>>2]|0;if(!(d[1224+(d[c[j>>2]>>0]|0)>>0]&1))break;c[j>>2]=m+1}c[v>>2]=Mb(m)|0;if((c[v>>2]|0)>10|(c[v>>2]|0)<3){b=c[l>>2]|0;i=g;return b|0}if((a[(c[j>>2]|0)+((c[v>>2]|0)-1)>>0]|0)==115){a[(c[j>>2]|0)+((c[v>>2]|0)-1)>>0]=0;c[v>>2]=(c[v>>2]|0)+ -1}Cm(c[k>>2]|0);c[l>>2]=0;h[r>>3]=+h[q>>3]<0.0?-.5:.5;if((c[v>>2]|0)==3?(UE(c[j>>2]|0,9560)|0)==0:0){A=+h[q>>3]*864.0e5+ +h[r>>3];e=+O(A)>=1.0?A>0.0?(ca(+N(A/4294967296.0),4294967295.0)|0)>>>0:~~+_((A- +(~~A>>>0))/4294967296.0)>>>0:0;b=c[k>>2]|0;f=b;e=bF(c[f>>2]|0,c[f+4>>2]|0,~~A>>>0|0,e|0)|0;c[b>>2]=e;c[b+4>>2]=D}else u=50;do if((u|0)==50){if((c[v>>2]|0)==4?(UE(c[j>>2]|0,9568)|0)==0:0){A=+h[q>>3]*36.0e5+ +h[r>>3];e=+O(A)>=1.0?A>0.0?(ca(+N(A/4294967296.0),4294967295.0)|0)>>>0:~~+_((A- +(~~A>>>0))/4294967296.0)>>>0:0;b=c[k>>2]|0;f=b;e=bF(c[f>>2]|0,c[f+4>>2]|0,~~A>>>0|0,e|0)|0;c[b>>2]=e;c[b+4>>2]=D;break}if((c[v>>2]|0)==6?(UE(c[j>>2]|0,9576)|0)==0:0){A=+h[q>>3]*6.0e4+ +h[r>>3];e=+O(A)>=1.0?A>0.0?(ca(+N(A/4294967296.0),4294967295.0)|0)>>>0:~~+_((A- +(~~A>>>0))/4294967296.0)>>>0:0;b=c[k>>2]|0;f=b;e=bF(c[f>>2]|0,c[f+4>>2]|0,~~A>>>0|0,e|0)|0;c[b>>2]=e;c[b+4>>2]=D;break}if((c[v>>2]|0)==6?(UE(c[j>>2]|0,9584)|0)==0:0){A=+h[q>>3]*1.0e3+ +h[r>>3];e=+O(A)>=1.0?A>0.0?(ca(+N(A/4294967296.0),4294967295.0)|0)>>>0:~~+_((A- +(~~A>>>0))/4294967296.0)>>>0:0;b=c[k>>2]|0;f=b;e=bF(c[f>>2]|0,c[f+4>>2]|0,~~A>>>0|0,e|0)|0;c[b>>2]=e;c[b+4>>2]=D;break}if((c[v>>2]|0)==5?(UE(c[j>>2]|0,9544)|0)==0:0){Dm(c[k>>2]|0);b=(c[k>>2]|0)+12|0;c[b>>2]=(c[b>>2]|0)+~~+h[q>>3];b=c[(c[k>>2]|0)+12>>2]|0;c[t>>2]=(((c[(c[k>>2]|0)+12>>2]|0)>0?b-1|0:b-12|0)|0)/12|0;b=(c[k>>2]|0)+8|0;c[b>>2]=(c[b>>2]|0)+(c[t>>2]|0);b=(c[k>>2]|0)+12|0;c[b>>2]=(c[b>>2]|0)-((c[t>>2]|0)*12|0);a[(c[k>>2]|0)+42>>0]=0;Cm(c[k>>2]|0);c[s>>2]=~~+h[q>>3];if(!(+(c[s>>2]|0)!=+h[q>>3]))break;A=(+h[q>>3]- +(c[s>>2]|0))*30.0*864.0e5+ +h[r>>3];e=+O(A)>=1.0?A>0.0?(ca(+N(A/4294967296.0),4294967295.0)|0)>>>0:~~+_((A- +(~~A>>>0))/4294967296.0)>>>0:0;b=c[k>>2]|0;f=b;e=bF(c[f>>2]|0,c[f+4>>2]|0,~~A>>>0|0,e|0)|0;c[b>>2]=e;c[b+4>>2]=D;break}if((c[v>>2]|0)==4?(UE(c[j>>2]|0,9552)|0)==0:0){c[p>>2]=~~+h[q>>3];Dm(c[k>>2]|0);b=(c[k>>2]|0)+8|0;c[b>>2]=(c[b>>2]|0)+(c[p>>2]|0);a[(c[k>>2]|0)+42>>0]=0;Cm(c[k>>2]|0);if(!(+(c[p>>2]|0)!=+h[q>>3]))break;A=(+h[q>>3]- +(c[p>>2]|0))*365.0*864.0e5+ +h[r>>3];e=+O(A)>=1.0?A>0.0?(ca(+N(A/4294967296.0),4294967295.0)|0)>>>0:~~+_((A- +(~~A>>>0))/4294967296.0)>>>0:0;b=c[k>>2]|0;f=b;e=bF(c[f>>2]|0,c[f+4>>2]|0,~~A>>>0|0,e|0)|0;c[b>>2]=e;c[b+4>>2]=D;break}c[l>>2]=1}while(0);Km(c[k>>2]|0);b=c[l>>2]|0;i=g;return b|0};case 119:{if(VE(c[j>>2]|0,9512,8)|0){b=c[l>>2]|0;i=g;return b|0}b=(c[j>>2]|0)+8|0;if(!(Lm(b,q,Mb((c[j>>2]|0)+8|0)|0,1)|0)){b=c[l>>2]|0;i=g;return b|0}b=~~+h[q>>3];c[v>>2]=b;if(!(((c[v>>2]|0)>=0?+(b|0)==+h[q>>3]:0)&+h[q>>3]<7.0)){b=c[l>>2]|0;i=g;return b|0}Dm(c[k>>2]|0);a[(c[k>>2]|0)+43>>0]=0;a[(c[k>>2]|0)+42>>0]=0;Cm(c[k>>2]|0);z=c[k>>2]|0;z=bF(c[z>>2]|0,c[z+4>>2]|0,1296e5,0)|0;z=jF(z|0,D|0,864e5,0)|0;z=kF(z|0,D|0,7,0)|0;e=w;c[e>>2]=z;c[e+4>>2]=D;e=w;z=c[e+4>>2]|0;b=c[v>>2]|0;f=((b|0)<0)<<31>>31;if((z|0)>(f|0)|((z|0)==(f|0)?(c[e>>2]|0)>>>0>b>>>0:0)){e=w;e=ZE(c[e>>2]|0,c[e+4>>2]|0,7,0)|0;b=w;c[b>>2]=e;c[b+4>>2]=D}b=c[v>>2]|0;e=w;e=ZE(b|0,((b|0)<0)<<31>>31|0,c[e>>2]|0,c[e+4>>2]|0)|0;e=lF(e|0,D|0,864e5,0)|0;b=c[k>>2]|0;f=b;e=bF(c[f>>2]|0,c[f+4>>2]|0,e|0,D|0)|0;c[b>>2]=e;c[b+4>>2]=D;Km(c[k>>2]|0);c[l>>2]=0;b=c[l>>2]|0;i=g;return b|0};case 108:{if(UE(c[j>>2]|0,9472)|0){b=c[l>>2]|0;i=g;return b|0}Cm(c[k>>2]|0);e=Jm(c[k>>2]|0,c[x>>2]|0,l)|0;b=c[k>>2]|0;f=b;e=bF(c[f>>2]|0,c[f+4>>2]|0,e|0,D|0)|0;c[b>>2]=e;c[b+4>>2]=D;Km(c[k>>2]|0);b=c[l>>2]|0;i=g;return b|0};case 115:{if(VE(c[j>>2]|0,9528,9)|0){b=c[l>>2]|0;i=g;return b|0}c[j>>2]=(c[j>>2]|0)+9;Em(c[k>>2]|0);a[(c[k>>2]|0)+41>>0]=1;c[(c[k>>2]|0)+24>>2]=0;c[(c[k>>2]|0)+20>>2]=0;h[(c[k>>2]|0)+32>>3]=0.0;a[(c[k>>2]|0)+43>>0]=0;a[(c[k>>2]|0)+42>>0]=0;if(!(UE(c[j>>2]|0,9544)|0)){c[(c[k>>2]|0)+16>>2]=1;c[l>>2]=0;b=c[l>>2]|0;i=g;return b|0}if(!(UE(c[j>>2]|0,9552)|0)){Em(c[k>>2]|0);c[(c[k>>2]|0)+12>>2]=1;c[(c[k>>2]|0)+16>>2]=1;c[l>>2]=0;b=c[l>>2]|0;i=g;return b|0}if(UE(c[j>>2]|0,9560)|0){b=c[l>>2]|0;i=g;return b|0}c[l>>2]=0;b=c[l>>2]|0;i=g;return b|0};case 117:{if((UE(c[j>>2]|0,9488)|0)==0?(a[(c[k>>2]|0)+42>>0]|0)!=0:0){e=c[k>>2]|0;e=bF(c[e>>2]|0,c[e+4>>2]|0,43200,0)|0;e=jF(e|0,D|0,86400,0)|0;e=bF(e|0,D|0,1045635584,49096)|0;b=c[k>>2]|0;c[b>>2]=e;c[b+4>>2]=D;Km(c[k>>2]|0);c[l>>2]=0;b=c[l>>2]|0;i=g;return b|0}if(UE(c[j>>2]|0,9504)|0){b=c[l>>2]|0;i=g;return b|0}Cm(c[k>>2]|0);e=Jm(c[k>>2]|0,c[x>>2]|0,l)|0;b=y;c[b>>2]=e;c[b+4>>2]=D;if(c[l>>2]|0){b=c[l>>2]|0;i=g;return b|0}f=y;b=c[k>>2]|0;e=b;f=ZE(c[e>>2]|0,c[e+4>>2]|0,c[f>>2]|0,c[f+4>>2]|0)|0;c[b>>2]=f;c[b+4>>2]=D;Km(c[k>>2]|0);b=y;f=c[b>>2]|0;b=c[b+4>>2]|0;e=Jm(c[k>>2]|0,c[x>>2]|0,l)|0;e=ZE(f|0,b|0,e|0,D|0)|0;b=c[k>>2]|0;f=b;e=bF(c[f>>2]|0,c[f+4>>2]|0,e|0,D|0)|0;c[b>>2]=e;c[b+4>>2]=D;b=c[l>>2]|0;i=g;return b|0};default:{b=c[l>>2]|0;i=g;return b|0}}return 0}function Jm(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;o=i;i=i+176|0;f=o+96|0;q=o+164|0;l=o+160|0;m=o+156|0;n=o+48|0;p=o;j=o+152|0;k=o+108|0;g=o+104|0;c[q>>2]=b;c[l>>2]=d;c[m>>2]=e;d=k+0|0;e=d+44|0;do{c[d>>2]=0;d=d+4|0}while((d|0)<(e|0));d=n+0|0;q=(c[q>>2]|0)+0|0;e=d+48|0;do{c[d>>2]=c[q>>2];d=d+4|0;q=q+4|0}while((d|0)<(e|0));Dm(n);if((c[n+8>>2]|0)>=1971?(c[n+8>>2]|0)<2038:0){c[g>>2]=~~(+h[n+32>>3]+.5);h[n+32>>3]=+(c[g>>2]|0)}else{c[n+8>>2]=2e3;c[n+12>>2]=1;c[n+16>>2]=1;c[n+20>>2]=0;c[n+24>>2]=0;h[n+32>>3]=0.0}c[n+28>>2]=0;a[n+42>>0]=0;Cm(n);b=n;b=jF(c[b>>2]|0,c[b+4>>2]|0,1e3,0)|0;b=ZE(b|0,D|0,413362496,49)|0;c[j>>2]=b;if(Pm(j,k)|0){Ud(c[l>>2]|0,9592,-1);c[c[m>>2]>>2]=1;d=f;c[d>>2]=0;c[d+4>>2]=0;d=f;b=d;b=c[b>>2]|0;d=d+4|0;d=c[d>>2]|0;D=d;i=o;return b|0}else{c[p+8>>2]=(c[k+20>>2]|0)+1900;c[p+12>>2]=(c[k+16>>2]|0)+1;c[p+16>>2]=c[k+12>>2];c[p+20>>2]=c[k+8>>2];c[p+24>>2]=c[k+4>>2];h[p+32>>3]=+(c[k>>2]|0);a[p+40>>0]=1;a[p+41>>0]=1;a[p+42>>0]=0;a[p+43>>0]=0;Cm(p);c[c[m>>2]>>2]=0;d=p;b=n;b=ZE(c[d>>2]|0,c[d+4>>2]|0,c[b>>2]|0,c[b+4>>2]|0)|0;d=f;c[d>>2]=b;c[d+4>>2]=D;d=f;b=d;b=c[b>>2]|0;d=d+4|0;d=c[d>>2]|0;D=d;i=o;return b|0}return 0}function Km(b){b=b|0;var d=0,e=0;d=i;i=i+16|0;e=d;c[e>>2]=b;a[(c[e>>2]|0)+40>>0]=0;a[(c[e>>2]|0)+41>>0]=0;a[(c[e>>2]|0)+43>>0]=0;i=d;return}function Lm(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,E=0,F=0.0,G=0.0;k=i;i=i+96|0;j=k+76|0;p=k+72|0;l=k+68|0;C=k+64|0;E=k+80|0;z=k+60|0;q=k+56|0;v=k+52|0;y=k+16|0;w=k+48|0;s=k+44|0;x=k+40|0;n=k+36|0;m=k+8|0;o=k+32|0;r=k+28|0;B=k+24|0;u=k;c[p>>2]=b;c[l>>2]=e;c[C>>2]=f;a[E>>0]=g;c[q>>2]=(c[p>>2]|0)+(c[C>>2]|0);c[v>>2]=1;b=y;c[b>>2]=0;c[b+4>>2]=0;c[w>>2]=0;c[s>>2]=1;c[x>>2]=0;c[n>>2]=1;c[o>>2]=0;c[r>>2]=0;h[c[l>>2]>>3]=0.0;if((d[E>>0]|0)==1)c[z>>2]=1;else{c[z>>2]=2;c[B>>2]=3-(d[E>>0]|0);while(1){if((c[B>>2]|0)>=(c[C>>2]|0))break;if(a[(c[p>>2]|0)+(c[B>>2]|0)>>0]|0)break;c[B>>2]=(c[B>>2]|0)+2}c[r>>2]=(c[B>>2]|0)<(c[C>>2]|0)&1;c[q>>2]=(c[p>>2]|0)+(c[B>>2]|0)+(d[E>>0]|0)+ -3;c[p>>2]=(c[p>>2]|0)+(d[E>>0]&1)}while(1){if((c[p>>2]|0)>>>0>=(c[q>>2]|0)>>>0)break;if(!(d[1224+(d[c[p>>2]>>0]|0)>>0]&1))break;c[p>>2]=(c[p>>2]|0)+(c[z>>2]|0)}if((c[p>>2]|0)>>>0>=(c[q>>2]|0)>>>0){c[j>>2]=0;b=c[j>>2]|0;i=k;return b|0}if((a[c[p>>2]>>0]|0)!=45){if((a[c[p>>2]>>0]|0)==43)c[p>>2]=(c[p>>2]|0)+(c[z>>2]|0)}else{c[v>>2]=-1;c[p>>2]=(c[p>>2]|0)+(c[z>>2]|0)}while(1){if((c[p>>2]|0)>>>0>=(c[q>>2]|0)>>>0)break;if((a[c[p>>2]>>0]|0)!=48)break;c[p>>2]=(c[p>>2]|0)+(c[z>>2]|0);c[o>>2]=(c[o>>2]|0)+1}while(1){if((c[p>>2]|0)>>>0>=(c[q>>2]|0)>>>0)break;b=y;e=c[b+4>>2]|0;if(!((d[1224+(d[c[p>>2]>>0]|0)>>0]&4|0)!=0&((e|0)<214748364|(e|0)==214748364&(c[b>>2]|0)>>>0<3435973835)))break;b=y;b=lF(c[b>>2]|0,c[b+4>>2]|0,10,0)|0;e=(a[c[p>>2]>>0]|0)-48|0;e=bF(b|0,D|0,e|0,((e|0)<0)<<31>>31|0)|0;b=y;c[b>>2]=e;c[b+4>>2]=D;c[p>>2]=(c[p>>2]|0)+(c[z>>2]|0);c[o>>2]=(c[o>>2]|0)+1}while(1){if((c[p>>2]|0)>>>0>=(c[q>>2]|0)>>>0)break;if(!(d[1224+(d[c[p>>2]>>0]|0)>>0]&4))break;c[p>>2]=(c[p>>2]|0)+(c[z>>2]|0);c[o>>2]=(c[o>>2]|0)+1;c[w>>2]=(c[w>>2]|0)+1}a:do if((c[p>>2]|0)>>>0<(c[q>>2]|0)>>>0){b:do if((a[c[p>>2]>>0]|0)==46){c[p>>2]=(c[p>>2]|0)+(c[z>>2]|0);while(1){if((c[p>>2]|0)>>>0>=(c[q>>2]|0)>>>0)break;b=y;e=c[b+4>>2]|0;if(!((d[1224+(d[c[p>>2]>>0]|0)>>0]&4|0)!=0&((e|0)<214748364|(e|0)==214748364&(c[b>>2]|0)>>>0<3435973835)))break;b=y;b=lF(c[b>>2]|0,c[b+4>>2]|0,10,0)|0;e=(a[c[p>>2]>>0]|0)-48|0;e=bF(b|0,D|0,e|0,((e|0)<0)<<31>>31|0)|0;b=y;c[b>>2]=e;c[b+4>>2]=D;c[p>>2]=(c[p>>2]|0)+(c[z>>2]|0);c[o>>2]=(c[o>>2]|0)+1;c[w>>2]=(c[w>>2]|0)+ -1}while(1){if((c[p>>2]|0)>>>0>=(c[q>>2]|0)>>>0)break b;if(!(d[1224+(d[c[p>>2]>>0]|0)>>0]&4))break b;c[p>>2]=(c[p>>2]|0)+(c[z>>2]|0);c[o>>2]=(c[o>>2]|0)+1}}while(0);if((c[p>>2]|0)>>>0<(c[q>>2]|0)>>>0){if(!((a[c[p>>2]>>0]|0)!=101?(a[c[p>>2]>>0]|0)!=69:0))A=38;c:do if((A|0)==38){c[p>>2]=(c[p>>2]|0)+(c[z>>2]|0);c[n>>2]=0;if((c[p>>2]|0)>>>0>=(c[q>>2]|0)>>>0)break a;if((a[c[p>>2]>>0]|0)!=45){if((a[c[p>>2]>>0]|0)==43)c[p>>2]=(c[p>>2]|0)+(c[z>>2]|0)}else{c[s>>2]=-1;c[p>>2]=(c[p>>2]|0)+(c[z>>2]|0)}while(1){if((c[p>>2]|0)>>>0>=(c[q>>2]|0)>>>0)break c;if(!(d[1224+(d[c[p>>2]>>0]|0)>>0]&4))break c;if((c[x>>2]|0)<1e4)A=((c[x>>2]|0)*10|0)+((a[c[p>>2]>>0]|0)-48)|0;else A=1e4;c[x>>2]=A;c[p>>2]=(c[p>>2]|0)+(c[z>>2]|0);c[n>>2]=1}}while(0);if((c[o>>2]|0)!=0&(c[n>>2]|0)!=0)while(1){if((c[p>>2]|0)>>>0>=(c[q>>2]|0)>>>0)break a;if(!(d[1224+(d[c[p>>2]>>0]|0)>>0]&1))break a;c[p>>2]=(c[p>>2]|0)+(c[z>>2]|0)}}}while(0);b=$(c[x>>2]|0,c[s>>2]|0)|0;c[x>>2]=b+(c[w>>2]|0);if((c[x>>2]|0)<0){c[s>>2]=-1;c[x>>2]=$(c[x>>2]|0,-1)|0}else c[s>>2]=1;b=y;do if((c[b>>2]|0)!=0|(c[b+4>>2]|0)!=0){d:do if((c[s>>2]|0)>0)while(1){b=y;e=c[b+4>>2]|0;if(!(((e|0)<214748364|(e|0)==214748364&(c[b>>2]|0)>>>0<3435973836)&(c[x>>2]|0)>0))break d;c[x>>2]=(c[x>>2]|0)+ -1;e=y;e=lF(c[e>>2]|0,c[e+4>>2]|0,10,0)|0;b=y;c[b>>2]=e;c[b+4>>2]=D}else while(1){b=y;b=kF(c[b>>2]|0,c[b+4>>2]|0,10,0)|0;if(!((b|0)==0&(D|0)==0&(c[x>>2]|0)>0))break d;c[x>>2]=(c[x>>2]|0)+ -1;e=y;e=jF(c[e>>2]|0,c[e+4>>2]|0,10,0)|0;b=y;c[b>>2]=e;c[b+4>>2]=D}while(0);f=(c[v>>2]|0)<0;e=y;g=c[e>>2]|0;e=c[e+4>>2]|0;E=ZE(0,0,g|0,e|0)|0;b=y;c[b>>2]=f?E:g;c[b+4>>2]=f?D:e;if(!(c[x>>2]|0)){b=y;h[m>>3]=+((c[b>>2]|0)>>>0)+4294967296.0*+(c[b+4>>2]|0);break}h[u>>3]=1.0;if((c[x>>2]|0)>307&(c[x>>2]|0)<342){while(1){if(!((c[x>>2]|0)%308|0))break;h[u>>3]=+h[u>>3]*10.0;c[x>>2]=(c[x>>2]|0)-1}b=y;F=+((c[b>>2]|0)>>>0)+4294967296.0*+(c[b+4>>2]|0);G=+h[u>>3];if((c[s>>2]|0)<0){h[m>>3]=F/G;h[m>>3]=+h[m>>3]/1.0e+308;break}else{h[m>>3]=F*G;h[m>>3]=+h[m>>3]*1.0e+308;break}}if((c[x>>2]|0)>=342){b=y;F=+((c[b>>2]|0)>>>0)+4294967296.0*+(c[b+4>>2]|0);if((c[s>>2]|0)<0){h[m>>3]=0.0*F;break}else{h[m>>3]=t*F;break}}while(1){if(!((c[x>>2]|0)%22|0))break;h[u>>3]=+h[u>>3]*10.0;c[x>>2]=(c[x>>2]|0)-1}while(1){if((c[x>>2]|0)<=0)break;h[u>>3]=+h[u>>3]*1.0e+22;c[x>>2]=(c[x>>2]|0)-22}b=y;F=+((c[b>>2]|0)>>>0)+4294967296.0*+(c[b+4>>2]|0);G=+h[u>>3];if((c[s>>2]|0)<0){h[m>>3]=F/G;break}else{h[m>>3]=F*G;break}}else{if((c[v>>2]|0)<0)s=(c[o>>2]|0)!=0;else s=0;h[m>>3]=s?-0.0:0.0}while(0);h[c[l>>2]>>3]=+h[m>>3];if(((c[o>>2]|0)>0?(c[p>>2]|0)>>>0>=(c[q>>2]|0)>>>0:0)&(c[n>>2]|0)!=0)l=(c[r>>2]|0)==0;else l=0;c[j>>2]=l&1;b=c[j>>2]|0;i=k;return b|0}function Mm(b,e){b=b|0;e=e|0;var f=0,g=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;m=i;i=i+80|0;l=m+16|0;g=m+76|0;k=m+72|0;n=m+68|0;o=m+64|0;p=m+60|0;f=m+56|0;q=m+8|0;j=m;c[k>>2]=b;c[n>>2]=e;h[q>>3]=0.0;b=c[k>>2]|0;c[l>>2]=2;c[l+4>>2]=0;c[l+8>>2]=24;c[l+12>>2]=58;c[l+16>>2]=o;c[l+20>>2]=2;c[l+24>>2]=0;c[l+28>>2]=59;c[l+32>>2]=0;c[l+36>>2]=p;if((Nm(b,l)|0)!=2){c[g>>2]=1;b=c[g>>2]|0;i=m;return b|0}c[k>>2]=(c[k>>2]|0)+5;if((a[c[k>>2]>>0]|0)==58){c[k>>2]=(c[k>>2]|0)+1;b=c[k>>2]|0;c[l>>2]=2;c[l+4>>2]=0;c[l+8>>2]=59;c[l+12>>2]=0;c[l+16>>2]=f;if((Nm(b,l)|0)!=1){c[g>>2]=1;b=c[g>>2]|0;i=m;return b|0}c[k>>2]=(c[k>>2]|0)+2;if((a[c[k>>2]>>0]|0)==46?(d[1224+(d[(c[k>>2]|0)+1>>0]|0)>>0]&4|0)!=0:0){h[j>>3]=1.0;c[k>>2]=(c[k>>2]|0)+1;while(1){if(!(d[1224+(d[c[k>>2]>>0]|0)>>0]&4))break;h[q>>3]=+h[q>>3]*10.0+ +(a[c[k>>2]>>0]|0)-48.0;h[j>>3]=+h[j>>3]*10.0;c[k>>2]=(c[k>>2]|0)+1}h[q>>3]=+h[q>>3]/+h[j>>3]}}else c[f>>2]=0;a[(c[n>>2]|0)+42>>0]=0;a[(c[n>>2]|0)+41>>0]=1;c[(c[n>>2]|0)+20>>2]=c[o>>2];c[(c[n>>2]|0)+24>>2]=c[p>>2];h[(c[n>>2]|0)+32>>3]=+(c[f>>2]|0)+ +h[q>>3];if(Om(c[k>>2]|0,c[n>>2]|0)|0){c[g>>2]=1;b=c[g>>2]|0;i=m;return b|0}else{a[(c[n>>2]|0)+43>>0]=(c[(c[n>>2]|0)+28>>2]|0)!=0?1:0;c[g>>2]=0;b=c[g>>2]|0;i=m;return b|0}return 0}function Nm(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;g=i;i=i+64|0;l=g+48|0;p=g+32|0;j=g+24|0;o=g+20|0;n=g+16|0;m=g+12|0;h=g+8|0;k=g+4|0;f=g;c[l>>2]=b;c[f>>2]=0;c[p>>2]=e;a:while(1){e=c[p>>2]|0;b=c[e>>2]|0;c[p>>2]=e+4;c[o>>2]=b;b=c[p>>2]|0;e=c[b>>2]|0;c[p>>2]=b+4;c[n>>2]=e;e=c[p>>2]|0;b=c[e>>2]|0;c[p>>2]=e+4;c[m>>2]=b;b=c[p>>2]|0;e=c[b>>2]|0;c[p>>2]=b+4;c[h>>2]=e;e=c[p>>2]|0;b=c[e>>2]|0;c[p>>2]=e+4;c[k>>2]=b;c[j>>2]=0;while(1){b=c[o>>2]|0;c[o>>2]=b+ -1;if(!b)break;if(!(d[1224+(d[c[l>>2]>>0]|0)>>0]&4)){h=11;break a}c[j>>2]=((c[j>>2]|0)*10|0)+(a[c[l>>2]>>0]|0)-48;c[l>>2]=(c[l>>2]|0)+1}if((c[j>>2]|0)<(c[n>>2]|0)){h=11;break}if((c[j>>2]|0)>(c[m>>2]|0)){h=11;break}if((c[h>>2]|0)!=0?(c[h>>2]|0)!=(a[c[l>>2]>>0]|0):0){h=11;break}c[c[k>>2]>>2]=c[j>>2];c[l>>2]=(c[l>>2]|0)+1;c[f>>2]=(c[f>>2]|0)+1;if(!(c[h>>2]|0)){h=11;break}}if((h|0)==11){i=g;return c[f>>2]|0}return 0}function Om(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;f=i;i=i+80|0;o=f;h=f+64|0;g=f+60|0;n=f+56|0;k=f+52|0;j=f+48|0;l=f+44|0;p=f+40|0;c[g>>2]=b;c[n>>2]=e;c[k>>2]=0;while(1){if(!(d[1224+(d[c[g>>2]>>0]|0)>>0]&1))break;c[g>>2]=(c[g>>2]|0)+1}c[(c[n>>2]|0)+28>>2]=0;c[p>>2]=a[c[g>>2]>>0];do if((c[p>>2]|0)==45){c[k>>2]=-1;m=11}else{if((c[p>>2]|0)==43){c[k>>2]=1;m=11;break}if((c[p>>2]|0)==90|(c[p>>2]|0)==122){c[g>>2]=(c[g>>2]|0)+1;break}c[h>>2]=(c[p>>2]|0)!=0&1;b=c[h>>2]|0;i=f;return b|0}while(0);do if((m|0)==11){c[g>>2]=(c[g>>2]|0)+1;b=c[g>>2]|0;c[o>>2]=2;c[o+4>>2]=0;c[o+8>>2]=14;c[o+12>>2]=58;c[o+16>>2]=j;c[o+20>>2]=2;c[o+24>>2]=0;c[o+28>>2]=59;c[o+32>>2]=0;c[o+36>>2]=l;if((Nm(b,o)|0)==2){c[g>>2]=(c[g>>2]|0)+5;b=$(c[k>>2]|0,(c[l>>2]|0)+((c[j>>2]|0)*60|0)|0)|0;c[(c[n>>2]|0)+28>>2]=b;break}c[h>>2]=1;b=c[h>>2]|0;i=f;return b|0}while(0);while(1){j=c[g>>2]|0;if(!(d[1224+(d[c[g>>2]>>0]|0)>>0]&1))break;c[g>>2]=j+1}c[h>>2]=(a[j>>0]|0)!=0&1;b=c[h>>2]|0;i=f;return b|0}function Pm(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;f=i;i=i+16|0;h=f+12|0;g=f+8|0;e=f+4|0;d=f;c[h>>2]=a;c[g>>2]=b;a=kb(c[h>>2]|0)|0;c[d>>2]=a;c[d>>2]=(c[9726]|0)!=0?0:a;if(c[d>>2]|0){a=(c[g>>2]|0)+0|0;g=(c[d>>2]|0)+0|0;b=a+44|0;do{c[a>>2]=c[g>>2];a=a+4|0;g=g+4|0}while((a|0)<(b|0))}c[e>>2]=(c[d>>2]|0)==0&1;i=f;return c[e>>2]|0}function Qm(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;g=i;i=i+96|0;o=g;l=g+84|0;h=g+80|0;j=g+76|0;k=g+72|0;m=g+68|0;n=g+64|0;f=g+60|0;c[h>>2]=b;c[j>>2]=e;if((a[c[h>>2]>>0]|0)==45){c[h>>2]=(c[h>>2]|0)+1;c[f>>2]=1}else c[f>>2]=0;b=c[h>>2]|0;c[o>>2]=4;c[o+4>>2]=0;c[o+8>>2]=9999;c[o+12>>2]=45;c[o+16>>2]=k;c[o+20>>2]=2;c[o+24>>2]=1;c[o+28>>2]=12;c[o+32>>2]=45;c[o+36>>2]=m;c[o+40>>2]=2;c[o+44>>2]=1;c[o+48>>2]=31;c[o+52>>2]=0;c[o+56>>2]=n;if((Nm(b,o)|0)!=3){c[l>>2]=1;b=c[l>>2]|0;i=g;return b|0}c[h>>2]=(c[h>>2]|0)+10;while(1){if(d[1224+(d[c[h>>2]>>0]|0)>>0]&1)o=1;else o=84==(d[c[h>>2]>>0]|0);e=c[h>>2]|0;if(!o)break;c[h>>2]=e+1}do if(Mm(e,c[j>>2]|0)|0){if(!(a[c[h>>2]>>0]|0)){a[(c[j>>2]|0)+41>>0]=0;break}c[l>>2]=1;b=c[l>>2]|0;i=g;return b|0}while(0);a[(c[j>>2]|0)+42>>0]=0;a[(c[j>>2]|0)+40>>0]=1;b=c[k>>2]|0;c[(c[j>>2]|0)+8>>2]=(c[f>>2]|0)!=0?0-b|0:b;c[(c[j>>2]|0)+12>>2]=c[m>>2];c[(c[j>>2]|0)+16>>2]=c[n>>2];if(a[(c[j>>2]|0)+43>>0]|0)Cm(c[j>>2]|0);c[l>>2]=0;b=c[l>>2]|0;i=g;return b|0}function Rm(a){a=a|0;var b=0,d=0,e=0,f=0;d=i;i=i+16|0;f=d+8|0;b=d+4|0;e=d;c[f>>2]=a;c[b>>2]=c[(c[f>>2]|0)+12>>2];a=(c[b>>2]|0)+136|0;if((c[a>>2]|0)==0&(c[a+4>>2]|0)==0?(c[e>>2]=Sm(c[c[(c[c[f>>2]>>2]|0)+32>>2]>>2]|0,(c[b>>2]|0)+136|0)|0,(c[e>>2]|0)!=0):0){f=(c[b>>2]|0)+136|0;c[f>>2]=0;c[f+4>>2]=0}f=(c[b>>2]|0)+136|0;D=c[f+4>>2]|0;i=d;return c[f>>2]|0}function Sm(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,j=0,k=0.0;d=i;i=i+32|0;g=d+16|0;f=d+12|0;e=d+8|0;j=d;c[g>>2]=a;c[f>>2]=b;if((c[c[g>>2]>>2]|0)>=2?(c[(c[g>>2]|0)+72>>2]|0)!=0:0){c[e>>2]=zb[c[(c[g>>2]|0)+72>>2]&63](c[g>>2]|0,c[f>>2]|0)|0;a=c[e>>2]|0;i=d;return a|0}c[e>>2]=zb[c[(c[g>>2]|0)+64>>2]&63](c[g>>2]|0,j)|0;k=+h[j>>3]*864.0e5;j=+O(k)>=1.0?k>0.0?(ca(+N(k/4294967296.0),4294967295.0)|0)>>>0:~~+_((k- +(~~k>>>0))/4294967296.0)>>>0:0;a=c[f>>2]|0;c[a>>2]=~~k>>>0;c[a+4>>2]=j;a=c[e>>2]|0;i=d;return a|0}function Tm(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0;e=i;i=i+32|0;k=e+16|0;j=e+12|0;f=e+8|0;g=e+4|0;h=e;c[k>>2]=a;c[j>>2]=b;c[f>>2]=0;c[g>>2]=c[k>>2];if((c[j>>2]|0)>=0)c[h>>2]=(c[g>>2]|0)+(c[j>>2]|0);else c[h>>2]=-1;while(1){if(!(d[c[g>>2]>>0]|0)){b=10;break}if((c[g>>2]|0)>>>0>=(c[h>>2]|0)>>>0){b=10;break}k=c[g>>2]|0;c[g>>2]=k+1;a:do if((d[k>>0]|0|0)>=192)while(1){if(((d[c[g>>2]>>0]|0)&192|0)!=128)break a;c[g>>2]=(c[g>>2]|0)+1}while(0);c[f>>2]=(c[f>>2]|0)+1}if((b|0)==10){i=e;return c[f>>2]|0}return 0}function Um(a){a=a|0;var b=0,e=0,f=0,g=0,h=0;b=i;i=i+16|0;f=b+4|0;e=b;c[f>>2]=a;g=c[f>>2]|0;a=c[g>>2]|0;c[g>>2]=a+1;c[e>>2]=d[a>>0];if((c[e>>2]|0)>>>0<192){g=c[e>>2]|0;i=b;return g|0}c[e>>2]=d[4984+((c[e>>2]|0)-192)>>0];while(1){a=c[e>>2]|0;if(((d[c[c[f>>2]>>2]>>0]|0)&192|0)!=128)break;h=c[f>>2]|0;g=c[h>>2]|0;c[h>>2]=g+1;c[e>>2]=(a<<6)+(63&(d[g>>0]|0))}if((a>>>0>=128?(c[e>>2]&-2048|0)!=55296:0)?(c[e>>2]&-2|0)!=65534:0){h=c[e>>2]|0;i=b;return h|0}c[e>>2]=65533;h=c[e>>2]|0;i=b;return h|0}function Vm(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+16|0;h=e+8|0;g=e+4|0;f=e;c[h>>2]=a;c[g>>2]=b;c[f>>2]=d;if(((c[(c[h>>2]|0)+12>>2]|0)+(c[f>>2]|0)|0)>=(c[(c[h>>2]|0)+16>>2]|0)){Wm(c[h>>2]|0,c[g>>2]|0,c[f>>2]|0);i=e;return}else{a=(c[h>>2]|0)+12|0;c[a>>2]=(c[a>>2]|0)+(c[f>>2]|0);dF((c[(c[h>>2]|0)+8>>2]|0)+((c[(c[h>>2]|0)+12>>2]|0)-(c[f>>2]|0))|0,c[g>>2]|0,c[f>>2]|0)|0;i=e;return}}function Wm(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+16|0;f=e+8|0;g=e+4|0;h=e;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;c[h>>2]=Xm(c[f>>2]|0,c[h>>2]|0)|0;if((c[h>>2]|0)<=0){i=e;return}dF((c[(c[f>>2]|0)+8>>2]|0)+(c[(c[f>>2]|0)+12>>2]|0)|0,c[g>>2]|0,c[h>>2]|0)|0;a=(c[f>>2]|0)+12|0;c[a>>2]=(c[a>>2]|0)+(c[h>>2]|0);i=e;return}function Xm(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;k=i;i=i+32|0;g=k+24|0;h=k+20|0;j=k+16|0;l=k+12|0;f=k+8|0;m=k;c[h>>2]=b;c[j>>2]=e;if(a[(c[h>>2]|0)+25>>0]|0){c[g>>2]=0;b=c[g>>2]|0;i=k;return b|0}e=c[h>>2]|0;if(!(a[(c[h>>2]|0)+24>>0]|0)){c[j>>2]=(c[e+16>>2]|0)-(c[(c[h>>2]|0)+12>>2]|0)-1;Ym(c[h>>2]|0,2);c[g>>2]=c[j>>2];b=c[g>>2]|0;i=k;return b|0}if((c[e+8>>2]|0)==(c[(c[h>>2]|0)+4>>2]|0))e=0;else e=c[(c[h>>2]|0)+8>>2]|0;c[f>>2]=e;e=c[(c[h>>2]|0)+12>>2]|0;o=m;c[o>>2]=e;c[o+4>>2]=((e|0)<0)<<31>>31;o=(c[j>>2]|0)+1|0;e=m;o=bF(c[e>>2]|0,c[e+4>>2]|0,o|0,((o|0)<0)<<31>>31|0)|0;e=m;c[e>>2]=o;c[e+4>>2]=D;e=m;o=c[e+4>>2]|0;b=c[(c[h>>2]|0)+20>>2]|0;n=((b|0)<0)<<31>>31;if((o|0)>(n|0)|((o|0)==(n|0)?(c[e>>2]|0)>>>0>b>>>0:0)){Zm(c[h>>2]|0);Ym(c[h>>2]|0,2);c[g>>2]=0;o=c[g>>2]|0;i=k;return o|0}c[(c[h>>2]|0)+16>>2]=c[m>>2];if((d[(c[h>>2]|0)+24>>0]|0)==1){o=c[(c[h>>2]|0)+16>>2]|0;c[l>>2]=Fk(c[c[h>>2]>>2]|0,c[f>>2]|0,o,((o|0)<0)<<31>>31)|0}else c[l>>2]=jc(c[f>>2]|0,c[(c[h>>2]|0)+16>>2]|0)|0;if(!(c[l>>2]|0)){Zm(c[h>>2]|0);Ym(c[h>>2]|0,1);c[g>>2]=0;o=c[g>>2]|0;i=k;return o|0}if((c[f>>2]|0)==0?(c[(c[h>>2]|0)+12>>2]|0)>0:0)dF(c[l>>2]|0,c[(c[h>>2]|0)+8>>2]|0,c[(c[h>>2]|0)+12>>2]|0)|0;c[(c[h>>2]|0)+8>>2]=c[l>>2];c[g>>2]=c[j>>2];o=c[g>>2]|0;i=k;return o|0}function Ym(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=i;i=i+16|0;f=e;g=e+4|0;c[f>>2]=b;a[g>>0]=d;a[(c[f>>2]|0)+25>>0]=a[g>>0]|0;c[(c[f>>2]|0)+16>>2]=0;i=e;return}function Zm(a){a=a|0;var b=0,e=0;b=i;i=i+16|0;e=b;c[e>>2]=a;do if((c[(c[e>>2]|0)+8>>2]|0)!=(c[(c[e>>2]|0)+4>>2]|0)){a=c[e>>2]|0;if((d[(c[e>>2]|0)+24>>0]|0|0)==1){Xb(c[a>>2]|0,c[(c[e>>2]|0)+8>>2]|0);break}else{hc(c[a+8>>2]|0);break}}while(0);c[(c[e>>2]|0)+8>>2]=0;i=b;return}function _m(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;f=i;i=i+32|0;e=f+20|0;h=f+16|0;g=f+8|0;j=f;c[h>>2]=a;k=g;c[k>>2]=b;c[k+4>>2]=d;d=c[h>>2]|0;k=c[d+4>>2]|0;a=j;c[a>>2]=c[d>>2];c[a+4>>2]=k;a=g;k=c[a+4>>2]|0;d=j;b=c[d+4>>2]|0;if((k|0)>0|(k|0)==0&(c[a>>2]|0)>>>0>=0){if((b|0)>0|(b|0)==0&(c[d>>2]|0)>>>0>0?(a=j,a=ZE(-1,2147483647,c[a>>2]|0,c[a+4>>2]|0)|0,d=D,k=g,b=c[k+4>>2]|0,(d|0)<(b|0)|((d|0)==(b|0)?a>>>0<(c[k>>2]|0)>>>0:0)):0){c[e>>2]=1;k=c[e>>2]|0;i=f;return k|0}}else if((b|0)<0?(a=j,a=bF(c[a>>2]|0,c[a+4>>2]|0,-1,2147483647)|0,a=ZE(0,0,a|0,D|0)|0,d=D,k=g,k=bF(c[k>>2]|0,c[k+4>>2]|0,1,0)|0,b=D,(d|0)>(b|0)|(d|0)==(b|0)&a>>>0>k>>>0):0){c[e>>2]=1;k=c[e>>2]|0;i=f;return k|0}a=g;k=c[h>>2]|0;b=k;a=bF(c[b>>2]|0,c[b+4>>2]|0,c[a>>2]|0,c[a+4>>2]|0)|0;c[k>>2]=a;c[k+4>>2]=D;c[e>>2]=0;k=c[e>>2]|0;i=f;return k|0}function $m(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;e=i;i=i+32|0;g=e+16|0;h=e;f=e+12|0;k=e+8|0;c[g>>2]=a;j=h;c[j>>2]=b;c[j+4>>2]=d;c[k>>2]=pe(c[g>>2]|0)|0;b=h;j=c[b+4>>2]|0;a=c[(c[k>>2]|0)+88>>2]|0;d=((a|0)<0)<<31>>31;if((j|0)>(d|0)|((j|0)==(d|0)?(c[b>>2]|0)>>>0>a>>>0:0)){he(c[g>>2]|0);c[f>>2]=0;k=c[f>>2]|0;i=e;return k|0}k=h;c[f>>2]=gc(c[k>>2]|0,c[k+4>>2]|0)|0;if(c[f>>2]|0){k=c[f>>2]|0;i=e;return k|0}ie(c[g>>2]|0);k=c[f>>2]|0;i=e;return k|0}function an(a){a=a|0;var b=0,d=0,e=0;d=i;i=i+16|0;e=d+4|0;b=d;c[e>>2]=a;c[b>>2]=(c[(c[(c[e>>2]|0)+12>>2]|0)+4>>2]|0)+(((c[(c[e>>2]|0)+16>>2]|0)-1|0)*20|0);i=d;return c[(c[b>>2]|0)+16>>2]|0}function bn(a,b,d){a=a|0;b=b|0;d=d|0;var f=0,g=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;m=i;i=i+48|0;g=m+40|0;j=m+36|0;k=m+32|0;l=m+28|0;n=m+24|0;f=m+20|0;o=m+16|0;p=m+8|0;q=m;c[j>>2]=a;c[k>>2]=b;c[l>>2]=d;c[n>>2]=e[(c[j>>2]|0)+8>>1];c[f>>2]=e[(c[k>>2]|0)+8>>1];c[o>>2]=c[n>>2]|c[f>>2];a:do if(!(c[o>>2]&1)){if(!(c[o>>2]&12)){if(c[o>>2]&2){if(!(c[n>>2]&2)){c[g>>2]=1;break}if(!(c[f>>2]&2)){c[g>>2]=-1;break}if(c[l>>2]|0){c[g>>2]=cn(c[j>>2]|0,c[k>>2]|0,c[l>>2]|0,0)|0;break}}c[g>>2]=dn(c[j>>2]|0,c[k>>2]|0)|0;break}if(c[n>>2]&c[f>>2]&4){b=c[j>>2]|0;p=c[b+4>>2]|0;a=c[k>>2]|0;q=c[a+4>>2]|0;if((p|0)<(q|0)|((p|0)==(q|0)?(c[b>>2]|0)>>>0<(c[a>>2]|0)>>>0:0)){c[g>>2]=-1;break}b=c[j>>2]|0;p=c[b+4>>2]|0;a=c[k>>2]|0;q=c[a+4>>2]|0;if((p|0)>(q|0)|((p|0)==(q|0)?(c[b>>2]|0)>>>0>(c[a>>2]|0)>>>0:0)){c[g>>2]=1;break}else{c[g>>2]=0;break}}do if(!(c[n>>2]&8))if(c[n>>2]&4){a=c[j>>2]|0;h[p>>3]=+((c[a>>2]|0)>>>0)+4294967296.0*+(c[a+4>>2]|0);break}else{c[g>>2]=1;break a}else h[p>>3]=+h[c[j>>2]>>3];while(0);do if(!(c[f>>2]&8))if(c[f>>2]&4){a=c[k>>2]|0;h[q>>3]=+((c[a>>2]|0)>>>0)+4294967296.0*+(c[a+4>>2]|0);break}else{c[g>>2]=-1;break a}else h[q>>3]=+h[c[k>>2]>>3];while(0);if(+h[p>>3]<+h[q>>3]){c[g>>2]=-1;break}if(+h[p>>3]>+h[q>>3]){c[g>>2]=1;break}else{c[g>>2]=0;break}}else c[g>>2]=(c[f>>2]&1)-(c[n>>2]&1);while(0);i=m;return c[g>>2]|0}function cn(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;o=i;i=i+128|0;n=o+116|0;u=o+112|0;t=o+108|0;k=o+104|0;m=o+100|0;l=o+96|0;p=o+92|0;q=o+88|0;j=o+84|0;h=o+80|0;r=o+40|0;s=o;c[u>>2]=b;c[t>>2]=e;c[k>>2]=f;c[m>>2]=g;if((d[(c[u>>2]|0)+10>>0]|0|0)==(d[(c[k>>2]|0)+4>>0]|0|0)){c[n>>2]=Ab[c[(c[k>>2]|0)+12>>2]&15](c[(c[k>>2]|0)+8>>2]|0,c[(c[u>>2]|0)+12>>2]|0,c[(c[u>>2]|0)+16>>2]|0,c[(c[t>>2]|0)+12>>2]|0,c[(c[t>>2]|0)+16>>2]|0)|0;b=c[n>>2]|0;i=o;return b|0}en(r,c[(c[u>>2]|0)+32>>2]|0,1);en(s,c[(c[u>>2]|0)+32>>2]|0,1);fn(r,c[u>>2]|0,4096);fn(s,c[t>>2]|0,4096);c[p>>2]=Md(r,a[(c[k>>2]|0)+4>>0]|0)|0;if(!(c[p>>2]|0))g=0;else g=c[r+12>>2]|0;c[j>>2]=g;c[q>>2]=Md(s,a[(c[k>>2]|0)+4>>0]|0)|0;if(!(c[q>>2]|0))g=0;else g=c[s+12>>2]|0;c[h>>2]=g;c[l>>2]=Ab[c[(c[k>>2]|0)+12>>2]&15](c[(c[k>>2]|0)+8>>2]|0,c[j>>2]|0,c[p>>2]|0,c[h>>2]|0,c[q>>2]|0)|0;Bd(r);Bd(s);if(((c[p>>2]|0)==0|(c[q>>2]|0)==0)&(c[m>>2]|0)!=0)a[c[m>>2]>>0]=7;c[n>>2]=c[l>>2];b=c[n>>2]|0;i=o;return b|0}function dn(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;f=i;i=i+16|0;e=f+12|0;g=f+8|0;h=f+4|0;d=f;c[g>>2]=a;c[h>>2]=b;if((c[(c[g>>2]|0)+12>>2]|0)>(c[(c[h>>2]|0)+12>>2]|0))b=c[(c[h>>2]|0)+12>>2]|0;else b=c[(c[g>>2]|0)+12>>2]|0;c[d>>2]=TE(c[(c[g>>2]|0)+16>>2]|0,c[(c[h>>2]|0)+16>>2]|0,b)|0;if(c[d>>2]|0){c[e>>2]=c[d>>2];a=c[e>>2]|0;i=f;return a|0}else{c[e>>2]=(c[(c[g>>2]|0)+12>>2]|0)-(c[(c[h>>2]|0)+12>>2]|0);a=c[e>>2]|0;i=f;return a|0}return 0}function en(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;f=i;i=i+16|0;g=f+4|0;h=f;j=f+8|0;c[g>>2]=a;c[h>>2]=d;b[j>>1]=e;b[(c[g>>2]|0)+8>>1]=b[j>>1]|0;c[(c[g>>2]|0)+32>>2]=c[h>>2];c[(c[g>>2]|0)+24>>2]=0;i=f;return}function fn(a,d,f){a=a|0;d=d|0;f=f|0;var g=0,h=0,j=0,k=0;g=i;i=i+16|0;h=g+8|0;k=g+4|0;j=g;c[h>>2]=a;c[k>>2]=d;c[j>>2]=f;if((e[(c[h>>2]|0)+8>>1]|0)&9312)gn(c[h>>2]|0);a=c[h>>2]|0;d=c[k>>2]|0;c[a+0>>2]=c[d+0>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2];c[a+16>>2]=c[d+16>>2];if((e[(c[k>>2]|0)+8>>1]|0)&2048){i=g;return}a=(c[h>>2]|0)+8|0;b[a>>1]=(e[a>>1]|0)&-7169;a=(c[h>>2]|0)+8|0;b[a>>1]=e[a>>1]|0|c[j>>2];i=g;return}function gn(a){a=a|0;var d=0,f=0,g=0,h=0;f=i;i=i+16|0;d=f+4|0;g=f;c[d>>2]=a;if((e[(c[d>>2]|0)+8>>1]|0)&8192)hn(c[d>>2]|0,c[c[d>>2]>>2]|0)|0;a=c[d>>2]|0;do if(!((e[(c[d>>2]|0)+8>>1]|0)&1024)){h=c[d>>2]|0;if((e[a+8>>1]|0)&32){jn(c[h>>2]|0);break}if((e[h+8>>1]|0)&64){c[g>>2]=c[c[d>>2]>>2];c[(c[g>>2]|0)+4>>2]=c[(c[c[g>>2]>>2]|0)+180>>2];c[(c[c[g>>2]>>2]|0)+180>>2]=c[g>>2]}}else rb[c[a+36>>2]&31](c[(c[d>>2]|0)+16>>2]|0);while(0);b[(c[d>>2]|0)+8>>1]=1;i=f;return}function hn(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;g=i;i=i+80|0;j=g+76|0;k=g+72|0;f=g+68|0;e=g+40|0;h=g;c[j>>2]=a;c[k>>2]=d;c[f>>2]=0;if(!(c[k>>2]|0)){a=c[f>>2]|0;i=g;return a|0}if(!(c[(c[k>>2]|0)+20>>2]|0)){a=c[f>>2]|0;i=g;return a|0}c[e+0>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;c[e+16>>2]=0;c[e+20>>2]=0;c[e+24>>2]=0;a=h+0|0;d=a+40|0;do{c[a>>2]=0;a=a+4|0}while((a|0)<(d|0));b[h+8>>1]=1;c[h+32>>2]=c[(c[j>>2]|0)+32>>2];c[e>>2]=h;c[e+8>>2]=c[j>>2];c[e+4>>2]=c[k>>2];rb[c[(c[k>>2]|0)+20>>2]&31](e);if((c[(c[j>>2]|0)+24>>2]|0)>0)Xb(c[(c[j>>2]|0)+32>>2]|0,c[(c[j>>2]|0)+20>>2]|0);a=(c[j>>2]|0)+0|0;h=h+0|0;d=a+40|0;do{c[a>>2]=c[h>>2];a=a+4|0;h=h+4|0}while((a|0)<(d|0));c[f>>2]=c[e+20>>2];a=c[f>>2]|0;i=g;return a|0}function jn(a){a=a|0;var d=0,e=0,f=0,g=0;e=i;i=i+16|0;d=e+8|0;f=e+4|0;g=e;c[d>>2]=a;c[f>>2]=c[c[d>>2]>>2];while(1){if(!(c[f>>2]|0))break;c[g>>2]=c[c[f>>2]>>2];Xb(c[(c[d>>2]|0)+4>>2]|0,c[f>>2]|0);c[f>>2]=c[g>>2]}c[c[d>>2]>>2]=0;b[(c[d>>2]|0)+24>>1]=0;c[(c[d>>2]|0)+8>>2]=0;c[(c[d>>2]|0)+12>>2]=0;c[(c[d>>2]|0)+20>>2]=0;b[(c[d>>2]|0)+26>>1]=1;i=e;return}function kn(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;f=i;i=i+32|0;k=f+24|0;j=f+20|0;h=f+16|0;g=f;c[k>>2]=a;c[j>>2]=b;c[h>>2]=d;c[g>>2]=e;oc(c[k>>2]|0,c[j>>2]|0,c[h>>2]|0,g);i=f;return}function ln(b){b=b|0;var d=0,e=0;d=i;i=i+16|0;e=d;c[e>>2]=b;a[(c[e>>2]|0)+24>>0]=1;i=d;return}function mn(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+16|0;e=b+4|0;d=b;c[e>>2]=a;c[d>>2]=zb[c[e>>2]&63](1612,0)|0;if(!(c[d>>2]|0)){e=c[d>>2]|0;i=b;return e|0}c[c[d>>2]>>2]=-1;e=c[d>>2]|0;i=b;return e|0}function nn(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;h=i;i=i+48|0;l=h+32|0;p=h+28|0;n=h+24|0;o=h+20|0;k=h+8|0;j=h+4|0;m=h;c[p>>2]=d;c[n>>2]=e;c[o>>2]=g;c[m>>2]=c[p>>2];if((c[c[m>>2]>>2]|0)<0){c[c[m>>2]>>2]=0;c[(c[m>>2]|0)+4>>2]=-1;b[(c[m>>2]|0)+12>>1]=0;a[(c[m>>2]|0)+14>>0]=0}c[k+0>>2]=c[f+0>>2];c[k+4>>2]=c[f+4>>2];c[(c[m>>2]|0)+8>>2]=c[o>>2];while(1){c[j>>2]=Cn(c[m>>2]|0,c[n>>2]&255)|0;do if((c[j>>2]|0)>=642){f=c[m>>2]|0;if((c[j>>2]|0)<969){En(f,(c[j>>2]|0)-642|0);break}else{p=c[n>>2]|0;c[l+0>>2]=c[k+0>>2];c[l+4>>2]=c[k+4>>2];c[l+8>>2]=c[k+8>>2];Fn(f,p,l);An(c[m>>2]|0,c[n>>2]&255,k);c[n>>2]=254;break}}else{Dn(c[m>>2]|0,c[j>>2]|0,c[n>>2]|0,k);p=(c[m>>2]|0)+4|0;c[p>>2]=(c[p>>2]|0)+ -1;c[n>>2]=254}while(0);if((c[n>>2]|0)==254){j=11;break}if((c[c[m>>2]>>2]|0)<0){j=11;break}}if((j|0)==11){i=h;return}}function on(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;i=i+16|0;g=d+8|0;e=d+4|0;f=d;c[g>>2]=a;c[e>>2]=b;c[f>>2]=c[g>>2];if(!(c[f>>2]|0)){i=d;return}while(1){if((c[c[f>>2]>>2]|0)<0)break;zn(c[f>>2]|0)|0}rb[c[e>>2]&31](c[f>>2]|0);i=d;return}function pn(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;f=i;i=i+48|0;g=f+32|0;j=f+28|0;l=f+24|0;k=f+8|0;h=f;c[g>>2]=a;c[j>>2]=b;c[l>>2]=d;c[k>>2]=e;c[h>>2]=yn(c[j>>2]|0,c[l>>2]|0,k)|0;Xb(c[j>>2]|0,c[c[g>>2]>>2]|0);c[c[g>>2]>>2]=c[h>>2];i=f;return}function qn(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+16|0;d=b+4|0;e=b;c[d>>2]=a;if(!(c[d>>2]|0)){i=b;return}c[e>>2]=c[c[d>>2]>>2];Wb(c[e>>2]|0,c[d>>2]|0);a=c[(c[d>>2]|0)+52>>2]|0;if(c[(c[d>>2]|0)+48>>2]|0)c[(c[(c[d>>2]|0)+48>>2]|0)+52>>2]=a;else c[(c[e>>2]|0)+4>>2]=a;if(c[(c[d>>2]|0)+52>>2]|0)c[(c[(c[d>>2]|0)+52>>2]|0)+48>>2]=c[(c[d>>2]|0)+48>>2];c[(c[d>>2]|0)+40>>2]=-1241070648;c[c[d>>2]>>2]=0;Xb(c[e>>2]|0,c[d>>2]|0);i=b;return}function rn(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=i;i=i+16|0;e=d+12|0;f=d+8|0;g=d+4|0;h=d;c[e>>2]=a;c[f>>2]=b;if(!(c[f>>2]|0)){i=d;return}c[g>>2]=0;while(1){if((c[g>>2]|0)>=(c[c[f>>2]>>2]|0))break;c[h>>2]=(c[f>>2]|0)+8+(c[g>>2]<<4);sn(c[e>>2]|0,c[(c[h>>2]|0)+4>>2]|0);tn(c[e>>2]|0,c[(c[h>>2]|0)+8>>2]|0);Xb(c[e>>2]|0,c[c[h>>2]>>2]|0);c[g>>2]=(c[g>>2]|0)+1}Xb(c[e>>2]|0,c[f>>2]|0);i=d;return}function sn(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=i;i=i+16|0;f=d+12|0;e=d+8|0;g=d+4|0;h=d;c[f>>2]=a;c[e>>2]=b;if(!(c[e>>2]|0)){i=d;return}c[h>>2]=c[(c[e>>2]|0)+4>>2];c[g>>2]=0;while(1){b=c[f>>2]|0;if((c[g>>2]|0)>=(c[c[e>>2]>>2]|0))break;wn(b,c[c[h>>2]>>2]|0);Xb(c[f>>2]|0,c[(c[h>>2]|0)+4>>2]|0);Xb(c[f>>2]|0,c[(c[h>>2]|0)+8>>2]|0);c[g>>2]=(c[g>>2]|0)+1;c[h>>2]=(c[h>>2]|0)+20}Xb(b,c[(c[e>>2]|0)+4>>2]|0);Xb(c[f>>2]|0,c[e>>2]|0);i=d;return}function tn(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;if(!(c[f>>2]|0)){i=d;return}un(c[e>>2]|0,c[f>>2]|0);Xb(c[e>>2]|0,c[f>>2]|0);i=d;return}function un(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;sn(c[f>>2]|0,c[c[e>>2]>>2]|0);vn(c[f>>2]|0,c[(c[e>>2]|0)+32>>2]|0);wn(c[f>>2]|0,c[(c[e>>2]|0)+36>>2]|0);sn(c[f>>2]|0,c[(c[e>>2]|0)+40>>2]|0);wn(c[f>>2]|0,c[(c[e>>2]|0)+44>>2]|0);sn(c[f>>2]|0,c[(c[e>>2]|0)+48>>2]|0);tn(c[f>>2]|0,c[(c[e>>2]|0)+52>>2]|0);wn(c[f>>2]|0,c[(c[e>>2]|0)+60>>2]|0);wn(c[f>>2]|0,c[(c[e>>2]|0)+64>>2]|0);rn(c[f>>2]|0,c[(c[e>>2]|0)+68>>2]|0);i=d;return}function vn(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=i;i=i+16|0;f=d+12|0;e=d+8|0;g=d+4|0;h=d;c[f>>2]=a;c[e>>2]=b;if(!(c[e>>2]|0)){i=d;return}c[h>>2]=(c[e>>2]|0)+8;c[g>>2]=0;while(1){b=c[f>>2]|0;if((c[g>>2]|0)>=(c[c[e>>2]>>2]|0))break;Xb(b,c[(c[h>>2]|0)+4>>2]|0);Xb(c[f>>2]|0,c[(c[h>>2]|0)+8>>2]|0);Xb(c[f>>2]|0,c[(c[h>>2]|0)+12>>2]|0);Xb(c[f>>2]|0,c[(c[h>>2]|0)+64>>2]|0);Vb(c[f>>2]|0,c[(c[h>>2]|0)+16>>2]|0);tn(c[f>>2]|0,c[(c[h>>2]|0)+20>>2]|0);wn(c[f>>2]|0,c[(c[h>>2]|0)+44>>2]|0);xn(c[f>>2]|0,c[(c[h>>2]|0)+48>>2]|0);c[g>>2]=(c[g>>2]|0)+1;c[h>>2]=(c[h>>2]|0)+72}Xb(b,c[e>>2]|0);i=d;return}function wn(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;if(!(c[f>>2]|0)){i=d;return}do if(!(c[(c[f>>2]|0)+4>>2]&16384)){wn(c[e>>2]|0,c[(c[f>>2]|0)+12>>2]|0);wn(c[e>>2]|0,c[(c[f>>2]|0)+16>>2]|0);if(c[(c[f>>2]|0)+4>>2]&65536)Xb(c[e>>2]|0,c[(c[f>>2]|0)+8>>2]|0);a=c[e>>2]|0;b=(c[f>>2]|0)+20|0;if(c[(c[f>>2]|0)+4>>2]&2048){tn(a,c[b>>2]|0);break}else{sn(a,c[b>>2]|0);break}}while(0);if(c[(c[f>>2]|0)+4>>2]&32768){i=d;return}Xb(c[e>>2]|0,c[f>>2]|0);i=d;return}function xn(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;i=i+16|0;f=d+8|0;e=d+4|0;g=d;c[f>>2]=a;c[e>>2]=b;if(!(c[e>>2]|0)){i=d;return}c[g>>2]=0;while(1){b=c[f>>2]|0;if((c[g>>2]|0)>=(c[(c[e>>2]|0)+4>>2]|0))break;Xb(b,c[(c[c[e>>2]>>2]|0)+(c[g>>2]<<3)>>2]|0);c[g>>2]=(c[g>>2]|0)+1}Xb(b,c[c[e>>2]>>2]|0);Xb(c[f>>2]|0,c[e>>2]|0);i=d;return}function yn(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;g=i;i=i+128|0;j=g+40|0;m=g+36|0;l=g+32|0;h=g+28|0;k=g;c[j>>2]=b;c[m>>2]=e;c[l>>2]=f;nc(k,g+44|0,70,c[(c[j>>2]|0)+88>>2]|0);c[k>>2]=c[j>>2];oc(k,1,c[m>>2]|0,c[l>>2]|0);c[h>>2]=pc(k)|0;if((d[k+25>>0]|0|0)!=1){m=c[h>>2]|0;i=g;return m|0}a[(c[j>>2]|0)+64>>0]=1;m=c[h>>2]|0;i=g;return m|0}function zn(b){b=b|0;var e=0,f=0,g=0,h=0,j=0;e=i;i=i+16|0;f=e+8|0;h=e+4|0;g=e+12|0;j=e;c[h>>2]=b;c[j>>2]=(c[h>>2]|0)+12+(c[c[h>>2]>>2]<<4);if((c[c[h>>2]>>2]|0)<0){c[f>>2]=0;j=c[f>>2]|0;i=e;return j|0}else{a[g>>0]=a[(c[j>>2]|0)+2>>0]|0;An(c[h>>2]|0,a[g>>0]|0,(c[j>>2]|0)+4|0);j=c[h>>2]|0;c[j>>2]=(c[j>>2]|0)+ -1;c[f>>2]=d[g>>0];j=c[f>>2]|0;i=e;return j|0}return 0}function An(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;g=i;i=i+16|0;l=g+8|0;k=g+12|0;h=g+4|0;j=g;c[l>>2]=b;a[k>>0]=e;c[h>>2]=f;c[j>>2]=c[(c[l>>2]|0)+8>>2];do switch(d[k>>0]|0|0){case 228:case 221:case 220:case 210:case 209:case 208:case 205:case 203:case 200:case 188:case 179:{sn(c[c[j>>2]>>2]|0,c[c[h>>2]>>2]|0);i=g;return};case 213:case 212:case 201:case 194:{vn(c[c[j>>2]>>2]|0,c[c[h>>2]>>2]|0);i=g;return};case 175:case 174:{wn(c[c[j>>2]>>2]|0,c[c[h>>2]>>2]|0);i=g;return};case 239:case 234:{Bn(c[c[j>>2]>>2]|0,c[c[h>>2]>>2]|0);i=g;return};case 243:case 238:case 229:case 227:case 216:case 204:case 202:{wn(c[c[j>>2]>>2]|0,c[c[h>>2]>>2]|0);i=g;return};case 223:case 219:case 217:{xn(c[c[j>>2]>>2]|0,c[c[h>>2]>>2]|0);i=g;return};case 207:case 196:case 195:case 163:{tn(c[c[j>>2]>>2]|0,c[c[h>>2]>>2]|0);i=g;return};case 252:case 197:{rn(c[c[j>>2]>>2]|0,c[c[h>>2]>>2]|0);i=g;return};case 236:{xn(c[c[j>>2]>>2]|0,c[(c[h>>2]|0)+4>>2]|0);i=g;return};default:{i=g;return}}while(0)}function Bn(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;i=i+16|0;g=d+8|0;e=d+4|0;f=d;c[g>>2]=a;c[e>>2]=b;while(1){if(!(c[e>>2]|0))break;c[f>>2]=c[e>>2];c[e>>2]=c[(c[e>>2]|0)+32>>2];wn(c[g>>2]|0,c[(c[f>>2]|0)+20>>2]|0);sn(c[g>>2]|0,c[(c[f>>2]|0)+24>>2]|0);tn(c[g>>2]|0,c[(c[f>>2]|0)+8>>2]|0);xn(c[g>>2]|0,c[(c[f>>2]|0)+28>>2]|0);Xb(c[g>>2]|0,c[f>>2]|0)}i=d;return}function Cn(f,g){f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;k=i;i=i+32|0;j=k+16|0;l=k+12|0;n=k+21|0;h=k+8|0;p=k+4|0;m=k+20|0;o=k;c[l>>2]=f;a[n>>0]=g;c[p>>2]=e[(c[l>>2]|0)+12+(c[c[l>>2]>>2]<<4)>>1];if((c[p>>2]|0)<=429?(f=b[27208+(c[p>>2]<<1)>>1]|0,c[h>>2]=f,(f|0)!=-86):0){c[h>>2]=(c[h>>2]|0)+(d[n>>0]|0);if(!((c[h>>2]|0)<0|(c[h>>2]|0)>=1497)?(d[29360+(c[h>>2]|0)>>0]|0)==(d[n>>0]|0):0){c[j>>2]=e[11720+(c[h>>2]<<1)>>1];f=c[j>>2]|0;i=k;return f|0}if((d[n>>0]|0)>0){if((d[n>>0]|0)>>>0<70?(f=a[30864+(d[n>>0]|0)>>0]|0,a[m>>0]=f,(f&255|0)!=0):0){c[j>>2]=Cn(c[l>>2]|0,a[m>>0]|0)|0;f=c[j>>2]|0;i=k;return f|0}c[o>>2]=(c[h>>2]|0)-(d[n>>0]|0)+70;if((c[o>>2]|0)>=0?(d[29360+(c[o>>2]|0)>>0]|0)==70:0){c[j>>2]=e[11720+(c[o>>2]<<1)>>1];f=c[j>>2]|0;i=k;return f|0}}c[j>>2]=e[28072+(c[p>>2]<<1)>>1];f=c[j>>2]|0;i=k;return f|0}c[j>>2]=e[28072+(c[p>>2]<<1)>>1];f=c[j>>2]|0;i=k;return f|0}function Dn(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0;m=i;i=i+32|0;n=m+16|0;h=m+12|0;l=m+8|0;j=m+4|0;k=m;c[n>>2]=d;c[h>>2]=e;c[l>>2]=f;c[j>>2]=g;g=c[n>>2]|0;c[g>>2]=(c[g>>2]|0)+1;g=c[n>>2]|0;if((c[c[n>>2]>>2]|0)>=100){wy(g,c[j>>2]|0);i=m;return}else{c[k>>2]=(c[n>>2]|0)+12+(c[g>>2]<<4);b[c[k>>2]>>1]=c[h>>2];a[(c[k>>2]|0)+2>>0]=c[l>>2];d=(c[k>>2]|0)+4|0;e=c[j>>2]|0;c[d+0>>2]=c[e+0>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];i=m;return}}function En(f,g){f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0;n=i;i=i+224|0;r=n;p=n+220|0;o=n+216|0;m=n+212|0;l=n+208|0;h=n+196|0;j=n+192|0;k=n+188|0;q=n+184|0;W=n+172|0;J=n+160|0;u=n+140|0;v=n+136|0;A=n+132|0;z=n+128|0;y=n+124|0;x=n+120|0;w=n+116|0;K=n+112|0;L=n+104|0;B=n+100|0;C=n+96|0;E=n+92|0;F=n+88|0;D=n+84|0;H=n+80|0;I=n+76|0;G=n+72|0;N=n+68|0;M=n+64|0;P=n+60|0;R=n+56|0;Q=n+52|0;O=n+48|0;S=n+44|0;T=n+40|0;V=n+36|0;U=n+32|0;t=n+28|0;X=n+24|0;Y=n+20|0;Z=n+16|0;_=n+8|0;c[p>>2]=f;c[o>>2]=g;c[q>>2]=c[(c[p>>2]|0)+8>>2];c[j>>2]=(c[p>>2]|0)+12+(c[c[p>>2]>>2]<<4);c[h+0>>2]=c[6792];c[h+4>>2]=c[6793];c[h+8>>2]=c[6794];a:do switch(c[o>>2]|0){case 65:{Xn(c[q>>2]|0,0,(c[j>>2]|0)+ -32+4|0,c[(c[j>>2]|0)+ -16+4>>2]|0,c[(c[j>>2]|0)+4>>2]|0);break};case 117:case 115:case 16:case 15:case 14:{c[h>>2]=d[(c[j>>2]|0)+2>>0];break};case 222:case 219:case 107:case 84:case 69:case 30:case 29:{c[h>>2]=1;break};case 33:{Nn(c[q>>2]|0,0,0,0,c[(c[j>>2]|0)+4>>2]|0);tn(c[c[q>>2]>>2]|0,c[(c[j>>2]|0)+4>>2]|0);break};case 9:{In(c[q>>2]|0,c[(c[j>>2]|0)+ -16+4>>2]|0);break};case 221:case 218:case 108:case 97:case 85:case 83:case 81:case 68:case 31:case 28:{c[h>>2]=0;break};case 26:{Mn(c[q>>2]|0,(c[j>>2]|0)+ -16+4|0,(c[j>>2]|0)+4|0,c[(c[j>>2]|0)+ -64+4>>2]|0,0,0,c[(c[j>>2]|0)+ -32+4>>2]|0);break};case 23:{Ln(c[q>>2]|0,1,(c[j>>2]|0)+4|0);break};case 49:{c[h>>2]=c[(c[j>>2]|0)+ -16+4>>2];c[h+4>>2]=(c[(c[j>>2]|0)+8>>2]|0)+((c[(c[j>>2]|0)+4>>2]|0)-(c[(c[j>>2]|0)+ -16+4>>2]|0));break};case 94:{Vn(c[q>>2]|0,0,0,0,c[(c[j>>2]|0)+ -32+4>>2]|0,c[(c[j>>2]|0)+4>>2]|0,0,0,0,0)|0;break};case 95:{Wn(c[q>>2]|0,c[(c[j>>2]|0)+ -32+4>>2]|0);break};case 61:{Tn(c[q>>2]|0,c[(c[j>>2]|0)+4>>2]|0);break};case 66:{Yn(c[q>>2]|0,c[(c[j>>2]|0)+4>>2]|0);break};case 67:{Zn(c[q>>2]|0,(c[j>>2]|0)+4|0);break};case 70:{c[h>>2]=0;break};case 62:{Un(c[q>>2]|0,0,c[(c[j>>2]|0)+ -16+4>>2]|0,c[(c[j>>2]|0)+4>>2]|0,c[(c[j>>2]|0)+ -32+4>>2]|0);break};case 106:{_n(c[q>>2]|0,c[(c[j>>2]|0)+4>>2]|0,0,c[(c[j>>2]|0)+ -16+4>>2]|0);break};case 59:{Sn(J,c[q>>2]|0,97,(c[j>>2]|0)+4|0);Qn(c[q>>2]|0,J);break};case 87:{f=(c[j>>2]|0)+ -16+4|0;c[h+0>>2]=c[f+0>>2];c[h+4>>2]=c[f+4>>2];break};case 90:{c[(c[q>>2]|0)+324>>2]=0;break};case 76:{c[h>>2]=7;break};case 75:{c[h>>2]=c[(c[j>>2]|0)+4>>2]<<8;c[h+4>>2]=65280;break};case 77:{c[h>>2]=8;break};case 78:{c[h>>2]=9;break};case 79:{c[h>>2]=6;break};case 80:{c[h>>2]=0;break};case 73:case 72:{c[h>>2]=0;c[h+4>>2]=0;break};case 74:{c[h>>2]=c[(c[j>>2]|0)+4>>2];c[h+4>>2]=255;break};case 19:{Kn(c[q>>2]|0);break};case 8:{Hn(c[q>>2]|0);break};case 58:{c[W>>2]=Rn(c[q>>2]|0,157,c[(c[j>>2]|0)+4>>2]|0,0,0)|0;c[W+4>>2]=c[(c[j>>2]|0)+ -16+4>>2];c[W+8>>2]=c[(c[j>>2]|0)+12>>2];Qn(c[q>>2]|0,W);break};case 7:{Gn(c[q>>2]|0,2);break};case 13:{c[h>>2]=7;break};case 93:{Un(c[q>>2]|0,c[(c[j>>2]|0)+ -48+4>>2]|0,c[(c[j>>2]|0)+4>>2]|0,c[(c[j>>2]|0)+ -32+4>>2]|0,0);break};case 32:{Nn(c[q>>2]|0,(c[j>>2]|0)+ -32+4|0,(c[j>>2]|0)+ -16+4|0,a[(c[j>>2]|0)+4>>0]|0,0);break};case 110:{_n(c[q>>2]|0,c[(c[j>>2]|0)+4>>2]|0,1,c[(c[j>>2]|0)+ -16+4>>2]|0);break};case 111:{c[u+0>>2]=c[2508];c[u+4>>2]=c[2509];c[u+8>>2]=c[2510];c[u+12>>2]=c[2511];c[u+16>>2]=c[2512];ao(c[q>>2]|0,c[(c[j>>2]|0)+4>>2]|0,u)|0;tn(c[c[q>>2]>>2]|0,c[(c[j>>2]|0)+4>>2]|0);break};case 112:{c[v>>2]=c[(c[j>>2]|0)+4>>2];if(c[v>>2]|0){c[y>>2]=0;c[(c[v>>2]|0)+68>>2]=c[(c[j>>2]|0)+ -16+4>>2];if(c[(c[v>>2]|0)+52>>2]|0){c[A>>2]=0;c[z>>2]=c[v>>2];while(1){if(!(c[z>>2]|0))break;c[(c[z>>2]|0)+56>>2]=c[A>>2];f=(c[z>>2]|0)+6|0;b[f>>1]=e[f>>1]|64;c[A>>2]=c[z>>2];c[z>>2]=c[(c[z>>2]|0)+52>>2];c[y>>2]=(c[y>>2]|0)+1}c[x>>2]=c[(c[c[q>>2]>>2]|0)+104>>2];if((c[x>>2]|0)!=0?(c[y>>2]|0)>(c[x>>2]|0):0)Se(c[q>>2]|0,10056,r)}}else rn(c[c[q>>2]>>2]|0,c[(c[j>>2]|0)+ -16+4>>2]|0);c[h>>2]=c[v>>2];break};case 116:{c[h>>2]=116;break};case 27:{a[(c[c[q>>2]>>2]|0)+250>>0]=0;f=(c[j>>2]|0)+4|0;c[h+0>>2]=c[f+0>>2];c[h+4>>2]=c[f+4>>2];break};case 103:case 100:case 98:case 82:{c[h>>2]=c[(c[j>>2]|0)+4>>2];break};case 86:{c[h+4>>2]=0;c[h>>2]=0;break};case 46:{c[h>>2]=c[(c[j>>2]|0)+ -48+4>>2];c[h+4>>2]=(c[(c[j>>2]|0)+4>>2]|0)+(c[(c[j>>2]|0)+8>>2]|0)-(c[(c[j>>2]|0)+ -48+4>>2]|0);break};case 102:{a[h>>0]=c[(c[j>>2]|0)+4>>2];break};case 104:{c[h>>2]=4;break};case 105:{c[h>>2]=5;break};case 109:{$n(c[q>>2]|0,(c[j>>2]|0)+ -112+4|0,(c[j>>2]|0)+ -48+4|0,(c[j>>2]|0)+ -32+4|0,c[(c[j>>2]|0)+4>>2]|0,c[(c[j>>2]|0)+ -96+4>>2]|0,c[(c[j>>2]|0)+ -64+4>>2]|0);break};case 24:{Ln(c[q>>2]|0,2,(c[j>>2]|0)+4|0);break};case 118:{c[h>>2]=co(c[q>>2]|0,c[(c[j>>2]|0)+ -96+4>>2]|0,c[(c[j>>2]|0)+ -80+4>>2]|0,c[(c[j>>2]|0)+ -64+4>>2]|0,c[(c[j>>2]|0)+ -48+4>>2]|0,c[(c[j>>2]|0)+ -32+4>>2]|0,c[(c[j>>2]|0)+ -16+4>>2]|0,b[(c[j>>2]|0)+ -112+4>>1]|0,c[(c[j>>2]|0)+4>>2]|0,c[(c[j>>2]|0)+8>>2]|0)|0;break};case 120:{c[h>>2]=co(c[q>>2]|0,c[(c[j>>2]|0)+ -16+4>>2]|0,0,0,0,0,0,128,0,0)|0;break};case 133:{c[h>>2]=se(c[c[q>>2]>>2]|0,80,0)|0;break};case 134:{c[h>>2]=c[(c[j>>2]|0)+4>>2];io(c[h>>2]|0);break};case 135:{c[h>>2]=c[(c[j>>2]|0)+ -16+4>>2];if((c[h>>2]|0)!=0?(c[c[h>>2]>>2]|0)>0:0)a[(c[h>>2]|0)+8+(((c[c[h>>2]>>2]|0)-1|0)*72|0)+36>>0]=c[(c[j>>2]|0)+4>>2];break};case 121:{c[B>>2]=co(c[q>>2]|0,c[(c[j>>2]|0)+ -16+4>>2]|0,0,0,0,0,0,128,0,0)|0;if(c[B>>2]|0){a[(c[B>>2]|0)+4>>0]=116;c[(c[B>>2]|0)+52>>2]=c[(c[j>>2]|0)+ -64+4>>2];c[h>>2]=c[B>>2];break a}else{c[h>>2]=c[(c[j>>2]|0)+ -64+4>>2];break a}};case 63:{Vn(c[q>>2]|0,0,0,0,0,c[(c[j>>2]|0)+4>>2]|0,0,0,0,0)|0;break};case 39:{On(c[q>>2]|0,(c[j>>2]|0)+4|0);f=(c[j>>2]|0)+4|0;c[h+0>>2]=c[f+0>>2];c[h+4>>2]=c[f+4>>2];c[(c[q>>2]|0)+324>>2]=0;break};case 71:{c[h>>2]=c[(c[j>>2]|0)+ -16+4>>2]&~c[(c[j>>2]|0)+8>>2]|c[(c[j>>2]|0)+4>>2];break};case 92:case 54:{f=(c[q>>2]|0)+320|0;g=(c[j>>2]|0)+4|0;c[f+0>>2]=c[g+0>>2];c[f+4>>2]=c[g+4>>2];break};case 56:{Qn(c[q>>2]|0,(c[j>>2]|0)+ -16+4|0);break};case 57:case 55:{Qn(c[q>>2]|0,(c[j>>2]|0)+4|0);break};case 38:{c[h>>2]=c[(c[j>>2]|0)+ -32+4>>2];c[h+4>>2]=(c[(c[q>>2]|0)+504>>2]|0)-(c[(c[j>>2]|0)+ -32+4>>2]|0)+(c[(c[q>>2]|0)+508>>2]|0);break};case 99:{c[h>>2]=10;break};case 101:{a[h>>0]=10;break};case 96:{Xn(c[q>>2]|0,c[(c[j>>2]|0)+ -96+4>>2]|0,(c[j>>2]|0)+ -48+4|0,c[(c[j>>2]|0)+ -32+4>>2]|0,c[(c[j>>2]|0)+ -16+4>>2]|0);Yn(c[q>>2]|0,c[(c[j>>2]|0)+4>>2]|0);break};case 44:{Pn(c[q>>2]|0,(c[j>>2]|0)+4|0);break};case 122:{b[h>>1]=1;break};case 124:case 123:{b[h>>1]=0;break};case 243:case 125:{c[h>>2]=c[(c[j>>2]|0)+ -16+4>>2];break};case 242:case 236:case 161:case 154:case 126:{c[h>>2]=0;break};case 64:{Wn(c[q>>2]|0,c[(c[j>>2]|0)+ -16+4>>2]|0);break};case 127:{c[h>>2]=eo(c[q>>2]|0,c[(c[j>>2]|0)+ -32+4>>2]|0,c[(c[j>>2]|0)+ -16+4>>2]|0)|0;if((c[(c[j>>2]|0)+8>>2]|0)>>>0>0)fo(c[q>>2]|0,c[h>>2]|0,(c[j>>2]|0)+4|0,1);go(c[q>>2]|0,c[h>>2]|0,(c[j>>2]|0)+ -16+4|0);break};case 128:{c[C>>2]=ho(c[c[q>>2]>>2]|0,116,0)|0;c[h>>2]=eo(c[q>>2]|0,c[(c[j>>2]|0)+ -16+4>>2]|0,c[C>>2]|0)|0;break};case 132:{c[h+4>>2]=0;break};case 129:{c[E>>2]=Rn(c[q>>2]|0,116,0,0,(c[j>>2]|0)+4|0)|0;c[F>>2]=Rn(c[q>>2]|0,27,0,0,(c[j>>2]|0)+ -32+4|0)|0;c[D>>2]=Rn(c[q>>2]|0,122,c[F>>2]|0,c[E>>2]|0,0)|0;c[h>>2]=eo(c[q>>2]|0,c[(c[j>>2]|0)+ -48+4>>2]|0,c[D>>2]|0)|0;break};case 137:{c[h>>2]=bo(c[q>>2]|0,c[(c[j>>2]|0)+ -96+4>>2]|0,(c[j>>2]|0)+ -80+4|0,(c[j>>2]|0)+ -64+4|0,(c[j>>2]|0)+ -48+4|0,0,c[(c[j>>2]|0)+ -16+4>>2]|0,c[(c[j>>2]|0)+4>>2]|0)|0;jo(c[q>>2]|0,c[h>>2]|0,(c[j>>2]|0)+ -32+4|0);break};case 136:{c[h>>2]=0;break};case 138:{c[h>>2]=bo(c[q>>2]|0,c[(c[j>>2]|0)+ -96+4>>2]|0,0,0,(c[j>>2]|0)+ -32+4|0,c[(c[j>>2]|0)+ -64+4>>2]|0,c[(c[j>>2]|0)+ -16+4>>2]|0,c[(c[j>>2]|0)+4>>2]|0)|0;break};case 139:{if((((c[(c[j>>2]|0)+ -96+4>>2]|0)==0?(c[(c[j>>2]|0)+ -32+8>>2]|0)==0:0)?(c[(c[j>>2]|0)+ -16+4>>2]|0)==0:0)?(c[(c[j>>2]|0)+4>>2]|0)==0:0){c[h>>2]=c[(c[j>>2]|0)+ -64+4>>2];break a}if((c[c[(c[j>>2]|0)+ -64+4>>2]>>2]|0)!=1){io(c[(c[j>>2]|0)+ -64+4>>2]|0);c[G>>2]=co(c[q>>2]|0,0,c[(c[j>>2]|0)+ -64+4>>2]|0,0,0,0,0,512,0,0)|0;c[h>>2]=bo(c[q>>2]|0,c[(c[j>>2]|0)+ -96+4>>2]|0,0,0,(c[j>>2]|0)+ -32+4|0,c[G>>2]|0,c[(c[j>>2]|0)+ -16+4>>2]|0,c[(c[j>>2]|0)+4>>2]|0)|0;break a}c[h>>2]=bo(c[q>>2]|0,c[(c[j>>2]|0)+ -96+4>>2]|0,0,0,(c[j>>2]|0)+ -32+4|0,0,c[(c[j>>2]|0)+ -16+4>>2]|0,c[(c[j>>2]|0)+4>>2]|0)|0;if(c[h>>2]|0){c[H>>2]=(c[h>>2]|0)+8+(((c[c[h>>2]>>2]|0)-1|0)*72|0);c[I>>2]=(c[(c[j>>2]|0)+ -64+4>>2]|0)+8;c[(c[H>>2]|0)+8>>2]=c[(c[I>>2]|0)+8>>2];c[(c[H>>2]|0)+4>>2]=c[(c[I>>2]|0)+4>>2];c[(c[H>>2]|0)+20>>2]=c[(c[I>>2]|0)+20>>2];c[(c[I>>2]|0)+4>>2]=0;c[(c[I>>2]|0)+8>>2]=0;c[(c[I>>2]|0)+20>>2]=0}vn(c[c[q>>2]>>2]|0,c[(c[j>>2]|0)+ -64+4>>2]|0);break};case 149:case 140:{c[h>>2]=0;c[h+4>>2]=0;break};case 144:{c[h>>2]=lo(c[q>>2]|0,(c[j>>2]|0)+ -16+4|0,0,0)|0;break};case 145:{c[h>>2]=lo(c[q>>2]|0,(c[j>>2]|0)+ -32+4|0,(c[j>>2]|0)+ -16+4|0,0)|0;break};case 146:{c[h>>2]=lo(c[q>>2]|0,(c[j>>2]|0)+ -48+4|0,(c[j>>2]|0)+ -32+4|0,(c[j>>2]|0)+ -16+4|0)|0;break};case 143:{c[h>>2]=1;break};case 142:{c[h>>2]=ko(c[c[q>>2]>>2]|0,0,(c[j>>2]|0)+ -16+4|0,(c[j>>2]|0)+4|0)|0;break};case 180:case 152:{c[h>>2]=c[(c[j>>2]|0)+ -16+4>>2];break};case 179:case 153:{c[h>>2]=0;break};case 235:case 162:case 155:{c[h>>2]=c[(c[j>>2]|0)+4>>2];break};case 156:{c[h>>2]=eo(c[q>>2]|0,c[(c[j>>2]|0)+ -48+4>>2]|0,c[(c[j>>2]|0)+ -16+4>>2]|0)|0;if(c[h>>2]|0)a[(c[(c[h>>2]|0)+4>>2]|0)+(((c[c[h>>2]>>2]|0)-1|0)*20|0)+12>>0]=c[(c[j>>2]|0)+4>>2];break};case 233:case 231:case 171:case 164:case 147:{c[h>>2]=c[(c[j>>2]|0)+4>>2];break};case 234:case 232:case 170:case 163:case 148:{c[h>>2]=0;break};case 151:{c[h>>2]=0;c[h+4>>2]=1;break};case 160:case 158:{c[h>>2]=0;break};case 159:{c[h>>2]=1;break};case 165:{c[h>>2]=0;c[h+4>>2]=0;break};case 166:{c[h>>2]=c[(c[j>>2]|0)+4>>2];c[h+4>>2]=0;break};case 167:{c[h>>2]=c[(c[j>>2]|0)+ -32+4>>2];c[h+4>>2]=c[(c[j>>2]|0)+4>>2];break};case 157:{c[h>>2]=eo(c[q>>2]|0,0,c[(c[j>>2]|0)+ -16+4>>2]|0)|0;if((c[h>>2]|0)!=0?(c[(c[h>>2]|0)+4>>2]|0)!=0:0)a[(c[(c[h>>2]|0)+4>>2]|0)+12>>0]=c[(c[j>>2]|0)+4>>2];break};case 181:{c[h>>2]=ro(c[c[q>>2]>>2]|0,c[(c[j>>2]|0)+ -32+4>>2]|0,(c[j>>2]|0)+4|0)|0;break};case 182:{c[h>>2]=ro(c[c[q>>2]>>2]|0,0,(c[j>>2]|0)+4|0)|0;break};case 183:{f=(c[j>>2]|0)+4|0;c[h+0>>2]=c[f+0>>2];c[h+4>>2]=c[f+4>>2];c[h+8>>2]=c[f+8>>2];break};case 168:{c[h+4>>2]=c[(c[j>>2]|0)+ -32+4>>2];c[h>>2]=c[(c[j>>2]|0)+4>>2];break};case 169:{mo(c[q>>2]|0,c[(c[j>>2]|0)+ -80+4>>2]|0,1);jo(c[q>>2]|0,c[(c[j>>2]|0)+ -32+4>>2]|0,(c[j>>2]|0)+ -16+4|0);no(c[q>>2]|0,c[(c[j>>2]|0)+ -32+4>>2]|0,c[(c[j>>2]|0)+4>>2]|0);break};case 279:case 263:case 262:case 261:case 260:case 259:case 258:case 257:case 256:case 247:case 150:case 141:case 131:case 130:case 48:case 45:case 42:case 41:case 40:{f=(c[j>>2]|0)+4|0;c[h+0>>2]=c[f+0>>2];c[h+4>>2]=c[f+4>>2];break};case 119:case 113:{c[h>>2]=c[(c[j>>2]|0)+4>>2];break};case 114:{c[w>>2]=c[(c[j>>2]|0)+4>>2];if((c[w>>2]|0)!=0?(c[(c[w>>2]|0)+52>>2]|0)!=0:0){c[L+4>>2]=0;c[K>>2]=bo(c[q>>2]|0,0,0,0,L,c[w>>2]|0,0,0)|0;c[w>>2]=co(c[q>>2]|0,0,c[K>>2]|0,0,0,0,0,0,0,0)|0}if(c[w>>2]|0){a[(c[w>>2]|0)+4>>0]=c[(c[j>>2]|0)+ -16+4>>2];c[(c[w>>2]|0)+52>>2]=c[(c[j>>2]|0)+ -32+4>>2];if((c[(c[j>>2]|0)+ -16+4>>2]|0)!=116)a[(c[q>>2]|0)+22>>0]=1}else tn(c[c[q>>2]>>2]|0,c[(c[j>>2]|0)+ -32+4>>2]|0);c[h>>2]=c[w>>2];break};case 47:{c[h>>2]=c[(c[j>>2]|0)+ -80+4>>2];c[h+4>>2]=(c[(c[j>>2]|0)+4>>2]|0)+(c[(c[j>>2]|0)+8>>2]|0)-(c[(c[j>>2]|0)+ -80+4>>2]|0);break};case 22:{Ln(c[q>>2]|0,0,(c[j>>2]|0)+4|0);break};case 34:{a[h>>0]=0;break};case 5:{Gn(c[q>>2]|0,0);break};case 18:case 17:{Jn(c[q>>2]|0);break};case 35:{if((c[(c[j>>2]|0)+8>>2]|0)==5?(Lb(c[(c[j>>2]|0)+4>>2]|0,9992,5)|0)==0:0){a[h>>0]=32;break a}a[h>>0]=0;f=c[q>>2]|0;g=c[(c[j>>2]|0)+4>>2]|0;c[r>>2]=c[(c[j>>2]|0)+8>>2];c[r+4>>2]=g;Se(f,1e4,r);break};case 6:{Gn(c[q>>2]|0,1);break};case 172:{mo(c[q>>2]|0,c[(c[j>>2]|0)+ -112+4>>2]|0,1);jo(c[q>>2]|0,c[(c[j>>2]|0)+ -64+4>>2]|0,(c[j>>2]|0)+ -48+4|0);oo(c[q>>2]|0,c[(c[j>>2]|0)+ -16+4>>2]|0,10096);po(c[q>>2]|0,c[(c[j>>2]|0)+ -64+4>>2]|0,c[(c[j>>2]|0)+ -16+4>>2]|0,c[(c[j>>2]|0)+4>>2]|0,d[(c[j>>2]|0)+ -80+4>>0]|0);break};case 173:{c[h>>2]=eo(c[q>>2]|0,c[(c[j>>2]|0)+ -64+4>>2]|0,c[(c[j>>2]|0)+4>>2]|0)|0;fo(c[q>>2]|0,c[h>>2]|0,(c[j>>2]|0)+ -32+4|0,1);break};case 174:{c[h>>2]=eo(c[q>>2]|0,0,c[(c[j>>2]|0)+4>>2]|0)|0;fo(c[q>>2]|0,c[h>>2]|0,(c[j>>2]|0)+ -32+4|0,1);break};case 175:{mo(c[q>>2]|0,c[(c[j>>2]|0)+ -80+4>>2]|0,1);qo(c[q>>2]|0,c[(c[j>>2]|0)+ -32+4>>2]|0,c[(c[j>>2]|0)+4>>2]|0,c[(c[j>>2]|0)+ -16+4>>2]|0,d[(c[j>>2]|0)+ -64+4>>0]|0);break};case 176:{mo(c[q>>2]|0,c[(c[j>>2]|0)+ -96+4>>2]|0,1);qo(c[q>>2]|0,c[(c[j>>2]|0)+ -48+4>>2]|0,0,c[(c[j>>2]|0)+ -32+4>>2]|0,d[(c[j>>2]|0)+ -80+4>>0]|0);break};case 177:{a[h>>0]=a[(c[j>>2]|0)+4>>0]|0;break};case 178:{a[h>>0]=5;break};case 184:{c[h>>2]=c[(c[j>>2]|0)+ -16+4>>2];so(h,(c[j>>2]|0)+ -32+4|0,(c[j>>2]|0)+4|0);break};case 191:case 190:case 185:{Sn(h,c[q>>2]|0,d[(c[j>>2]|0)+2>>0]|0,(c[j>>2]|0)+4|0);break};case 187:case 186:{Sn(h,c[q>>2]|0,27,(c[j>>2]|0)+4|0);break};case 188:{c[N>>2]=Rn(c[q>>2]|0,27,0,0,(c[j>>2]|0)+ -32+4|0)|0;c[M>>2]=Rn(c[q>>2]|0,27,0,0,(c[j>>2]|0)+4|0)|0;c[h>>2]=Rn(c[q>>2]|0,122,c[N>>2]|0,c[M>>2]|0,0)|0;so(h,(c[j>>2]|0)+ -32+4|0,(c[j>>2]|0)+4|0);break};case 189:{c[P>>2]=Rn(c[q>>2]|0,27,0,0,(c[j>>2]|0)+ -64+4|0)|0;c[R>>2]=Rn(c[q>>2]|0,27,0,0,(c[j>>2]|0)+ -32+4|0)|0;c[Q>>2]=Rn(c[q>>2]|0,27,0,0,(c[j>>2]|0)+4|0)|0;c[O>>2]=Rn(c[q>>2]|0,122,c[R>>2]|0,c[Q>>2]|0,0)|0;c[h>>2]=Rn(c[q>>2]|0,122,c[P>>2]|0,c[O>>2]|0,0)|0;so(h,(c[j>>2]|0)+ -64+4|0,(c[j>>2]|0)+4|0);break};case 192:{do if(((c[(c[j>>2]|0)+8>>2]|0)>>>0>=2?(a[c[(c[j>>2]|0)+4>>2]>>0]|0)==35:0)?(d[1224+(d[(c[(c[j>>2]|0)+4>>2]|0)+1>>0]|0)>>0]&4|0)!=0:0){t=c[q>>2]|0;u=(c[j>>2]|0)+4|0;if(!(d[(c[q>>2]|0)+18>>0]|0)){c[r>>2]=u;Se(t,9968,r);c[h>>2]=0;break}c[h>>2]=Rn(t,159,0,0,u)|0;if(c[h>>2]|0)Ag((c[(c[j>>2]|0)+4>>2]|0)+1|0,(c[h>>2]|0)+28|0)|0}else s=170;while(0);if((s|0)==170){Sn(h,c[q>>2]|0,135,(c[j>>2]|0)+4|0);to(c[q>>2]|0,c[h>>2]|0)}so(h,(c[j>>2]|0)+4|0,(c[j>>2]|0)+4|0);break};case 193:{c[h>>2]=uo(c[q>>2]|0,c[(c[j>>2]|0)+ -32+4>>2]|0,(c[j>>2]|0)+4|0)|0;c[h+4>>2]=c[(c[j>>2]|0)+ -32+8>>2];c[h+8>>2]=(c[(c[j>>2]|0)+4>>2]|0)+(c[(c[j>>2]|0)+8>>2]|0);break};case 194:{c[h>>2]=Rn(c[q>>2]|0,38,c[(c[j>>2]|0)+ -48+4>>2]|0,0,(c[j>>2]|0)+ -16+4|0)|0;so(h,(c[j>>2]|0)+ -80+4|0,(c[j>>2]|0)+4|0);break};case 195:{if((c[(c[j>>2]|0)+ -16+4>>2]|0)!=0?(c[c[(c[j>>2]|0)+ -16+4>>2]>>2]|0)>(c[(c[c[q>>2]>>2]|0)+112>>2]|0):0){f=c[q>>2]|0;c[r>>2]=(c[j>>2]|0)+ -64+4;Se(f,10112,r)}c[h>>2]=vo(c[q>>2]|0,c[(c[j>>2]|0)+ -16+4>>2]|0,(c[j>>2]|0)+ -64+4|0)|0;so(h,(c[j>>2]|0)+ -64+4|0,(c[j>>2]|0)+4|0);if((e[(c[j>>2]|0)+ -32+4>>1]|0)!=0?(c[h>>2]|0)!=0:0){f=(c[h>>2]|0)+4|0;c[f>>2]=c[f>>2]|16}break};case 196:{c[h>>2]=vo(c[q>>2]|0,0,(c[j>>2]|0)+ -48+4|0)|0;so(h,(c[j>>2]|0)+ -48+4|0,(c[j>>2]|0)+4|0);break};case 197:{c[h>>2]=vo(c[q>>2]|0,0,(c[j>>2]|0)+4|0)|0;so(h,(c[j>>2]|0)+4|0,(c[j>>2]|0)+4|0);break};case 205:case 204:case 203:case 202:case 201:case 200:case 199:case 198:{wo(h,c[q>>2]|0,d[(c[j>>2]|0)+ -16+2>>0]|0,(c[j>>2]|0)+ -32+4|0,(c[j>>2]|0)+4|0);break};case 206:{f=(c[j>>2]|0)+4|0;c[h+0>>2]=c[f+0>>2];c[h+4>>2]=c[f+4>>2];c[h+8>>2]=0;break};case 207:{f=(c[j>>2]|0)+4|0;c[h+0>>2]=c[f+0>>2];c[h+4>>2]=c[f+4>>2];c[h+8>>2]=1;break};case 208:{c[S>>2]=eo(c[q>>2]|0,0,c[(c[j>>2]|0)+4>>2]|0)|0;c[S>>2]=eo(c[q>>2]|0,c[S>>2]|0,c[(c[j>>2]|0)+ -32+4>>2]|0)|0;c[h>>2]=vo(c[q>>2]|0,c[S>>2]|0,(c[j>>2]|0)+ -16+4|0)|0;if(c[(c[j>>2]|0)+ -16+12>>2]|0)c[h>>2]=Rn(c[q>>2]|0,19,c[h>>2]|0,0,0)|0;c[h+4>>2]=c[(c[j>>2]|0)+ -32+8>>2];c[h+8>>2]=c[(c[j>>2]|0)+12>>2];if(c[h>>2]|0){f=(c[h>>2]|0)+4|0;c[f>>2]=c[f>>2]|128}break};case 209:{c[T>>2]=eo(c[q>>2]|0,0,c[(c[j>>2]|0)+ -32+4>>2]|0)|0;c[T>>2]=eo(c[q>>2]|0,c[T>>2]|0,c[(c[j>>2]|0)+ -64+4>>2]|0)|0;c[T>>2]=eo(c[q>>2]|0,c[T>>2]|0,c[(c[j>>2]|0)+4>>2]|0)|0;c[h>>2]=vo(c[q>>2]|0,c[T>>2]|0,(c[j>>2]|0)+ -48+4|0)|0;if(c[(c[j>>2]|0)+ -48+12>>2]|0)c[h>>2]=Rn(c[q>>2]|0,19,c[h>>2]|0,0,0)|0;c[h+4>>2]=c[(c[j>>2]|0)+ -64+8>>2];c[h+8>>2]=c[(c[j>>2]|0)+12>>2];if(c[h>>2]|0){f=(c[h>>2]|0)+4|0;c[f>>2]=c[f>>2]|128}break};case 223:{do if(c[(c[j>>2]|0)+ -16+4>>2]|0){if((c[c[(c[j>>2]|0)+ -16+4>>2]>>2]|0)==1){c[U>>2]=c[c[(c[(c[j>>2]|0)+ -16+4>>2]|0)+4>>2]>>2];c[c[(c[(c[j>>2]|0)+ -16+4>>2]|0)+4>>2]>>2]=0;sn(c[c[q>>2]>>2]|0,c[(c[j>>2]|0)+ -16+4>>2]|0);if(c[U>>2]|0){f=(c[U>>2]|0)+4|0;c[f>>2]=c[f>>2]&-257;f=(c[U>>2]|0)+4|0;c[f>>2]=c[f>>2]|512}c[h>>2]=Rn(c[q>>2]|0,(c[(c[j>>2]|0)+ -48+4>>2]|0)!=0?78:79,c[(c[j>>2]|0)+ -64+4>>2]|0,c[U>>2]|0,0)|0;break}c[h>>2]=Rn(c[q>>2]|0,75,c[(c[j>>2]|0)+ -64+4>>2]|0,0,0)|0;if(c[h>>2]|0){c[(c[h>>2]|0)+20>>2]=c[(c[j>>2]|0)+ -16+4>>2];Ao(c[q>>2]|0,c[h>>2]|0)}else sn(c[c[q>>2]>>2]|0,c[(c[j>>2]|0)+ -16+4>>2]|0);if(c[(c[j>>2]|0)+ -48+4>>2]|0)c[h>>2]=Rn(c[q>>2]|0,19,c[h>>2]|0,0,0)|0}else{c[h>>2]=Rn(c[q>>2]|0,132,0,0,10152+(c[(c[j>>2]|0)+ -48+4>>2]<<3)|0)|0;wn(c[c[q>>2]>>2]|0,c[(c[j>>2]|0)+ -64+4>>2]|0)}while(0);c[h+4>>2]=c[(c[j>>2]|0)+ -64+8>>2];c[h+8>>2]=(c[(c[j>>2]|0)+4>>2]|0)+(c[(c[j>>2]|0)+8>>2]|0);break};case 210:{xo(h,c[q>>2]|0,d[(c[j>>2]|0)+2>>0]|0,(c[j>>2]|0)+ -16+4|0,(c[j>>2]|0)+4|0);break};case 211:{xo(h,c[q>>2]|0,77,(c[j>>2]|0)+ -32+4|0,(c[j>>2]|0)+4|0);break};case 212:{wo(h,c[q>>2]|0,73,(c[j>>2]|0)+ -32+4|0,(c[j>>2]|0)+4|0);yo(c[q>>2]|0,c[(c[j>>2]|0)+4>>2]|0,c[h>>2]|0,76);break};case 213:{wo(h,c[q>>2]|0,148,(c[j>>2]|0)+ -48+4|0,(c[j>>2]|0)+4|0);yo(c[q>>2]|0,c[(c[j>>2]|0)+4>>2]|0,c[h>>2]|0,77);break};case 215:case 214:{zo(h,c[q>>2]|0,d[(c[j>>2]|0)+ -16+2>>0]|0,(c[j>>2]|0)+4|0,(c[j>>2]|0)+ -16+4|0);break};case 216:{zo(h,c[q>>2]|0,157,(c[j>>2]|0)+4|0,(c[j>>2]|0)+ -16+4|0);break};case 217:{zo(h,c[q>>2]|0,158,(c[j>>2]|0)+4|0,(c[j>>2]|0)+ -16+4|0);break};case 220:{c[V>>2]=eo(c[q>>2]|0,0,c[(c[j>>2]|0)+ -32+4>>2]|0)|0;c[V>>2]=eo(c[q>>2]|0,c[V>>2]|0,c[(c[j>>2]|0)+4>>2]|0)|0;c[h>>2]=Rn(c[q>>2]|0,74,c[(c[j>>2]|0)+ -64+4>>2]|0,0,0)|0;if(c[h>>2]|0)c[(c[h>>2]|0)+20>>2]=c[V>>2];else sn(c[c[q>>2]>>2]|0,c[V>>2]|0);if(c[(c[j>>2]|0)+ -48+4>>2]|0)c[h>>2]=Rn(c[q>>2]|0,19,c[h>>2]|0,0,0)|0;c[h+4>>2]=c[(c[j>>2]|0)+ -64+8>>2];c[h+8>>2]=c[(c[j>>2]|0)+12>>2];break};case 224:{c[h>>2]=Rn(c[q>>2]|0,119,0,0,0)|0;if(c[h>>2]|0){c[(c[h>>2]|0)+20>>2]=c[(c[j>>2]|0)+ -16+4>>2];f=(c[h>>2]|0)+4|0;c[f>>2]=c[f>>2]|2048;Ao(c[q>>2]|0,c[h>>2]|0)}else tn(c[c[q>>2]>>2]|0,c[(c[j>>2]|0)+ -16+4>>2]|0);c[h+4>>2]=c[(c[j>>2]|0)+ -32+4>>2];c[h+8>>2]=(c[(c[j>>2]|0)+4>>2]|0)+(c[(c[j>>2]|0)+8>>2]|0);break};case 225:{c[h>>2]=Rn(c[q>>2]|0,75,c[(c[j>>2]|0)+ -64+4>>2]|0,0,0)|0;if(c[h>>2]|0){c[(c[h>>2]|0)+20>>2]=c[(c[j>>2]|0)+ -16+4>>2];f=(c[h>>2]|0)+4|0;c[f>>2]=c[f>>2]|2048;Ao(c[q>>2]|0,c[h>>2]|0)}else tn(c[c[q>>2]>>2]|0,c[(c[j>>2]|0)+ -16+4>>2]|0);if(c[(c[j>>2]|0)+ -48+4>>2]|0)c[h>>2]=Rn(c[q>>2]|0,19,c[h>>2]|0,0,0)|0;c[h+4>>2]=c[(c[j>>2]|0)+ -64+8>>2];c[h+8>>2]=(c[(c[j>>2]|0)+4>>2]|0)+(c[(c[j>>2]|0)+8>>2]|0);break};case 226:{c[t>>2]=ko(c[c[q>>2]>>2]|0,0,(c[j>>2]|0)+ -16+4|0,(c[j>>2]|0)+4|0)|0;c[h>>2]=Rn(c[q>>2]|0,75,c[(c[j>>2]|0)+ -48+4>>2]|0,0,0)|0;r=c[q>>2]|0;if(c[h>>2]|0){f=co(r,0,c[t>>2]|0,0,0,0,0,0,0,0)|0;c[(c[h>>2]|0)+20>>2]=f;f=(c[h>>2]|0)+4|0;c[f>>2]=c[f>>2]|2048;Ao(c[q>>2]|0,c[h>>2]|0)}else vn(c[r>>2]|0,c[t>>2]|0);if(c[(c[j>>2]|0)+ -32+4>>2]|0)c[h>>2]=Rn(c[q>>2]|0,19,c[h>>2]|0,0,0)|0;c[h+4>>2]=c[(c[j>>2]|0)+ -48+8>>2];q=c[j>>2]|0;if(c[(c[j>>2]|0)+4>>2]|0)q=(c[(c[j>>2]|0)+4>>2]|0)+(c[q+8>>2]|0)|0;else q=(c[(c[j>>2]|0)+ -16+4>>2]|0)+(c[q+ -16+8>>2]|0)|0;c[h+8>>2]=q;break};case 227:{f=Rn(c[q>>2]|0,20,0,0,0)|0;c[h>>2]=f;c[X>>2]=f;if(c[X>>2]|0){c[(c[X>>2]|0)+20>>2]=c[(c[j>>2]|0)+ -16+4>>2];f=(c[X>>2]|0)+4|0;c[f>>2]=c[f>>2]|2048;Ao(c[q>>2]|0,c[X>>2]|0)}else tn(c[c[q>>2]>>2]|0,c[(c[j>>2]|0)+ -16+4>>2]|0);c[h+4>>2]=c[(c[j>>2]|0)+ -48+4>>2];c[h+8>>2]=(c[(c[j>>2]|0)+4>>2]|0)+(c[(c[j>>2]|0)+8>>2]|0);break};case 228:{c[h>>2]=Rn(c[q>>2]|0,136,c[(c[j>>2]|0)+ -48+4>>2]|0,0,0)|0;if(c[h>>2]|0){if(c[(c[j>>2]|0)+ -16+4>>2]|0)r=eo(c[q>>2]|0,c[(c[j>>2]|0)+ -32+4>>2]|0,c[(c[j>>2]|0)+ -16+4>>2]|0)|0;else r=c[(c[j>>2]|0)+ -32+4>>2]|0;c[(c[h>>2]|0)+20>>2]=r;Ao(c[q>>2]|0,c[h>>2]|0)}else{sn(c[c[q>>2]>>2]|0,c[(c[j>>2]|0)+ -32+4>>2]|0);wn(c[c[q>>2]>>2]|0,c[(c[j>>2]|0)+ -16+4>>2]|0)}c[h+4>>2]=c[(c[j>>2]|0)+ -64+4>>2];c[h+8>>2]=(c[(c[j>>2]|0)+4>>2]|0)+(c[(c[j>>2]|0)+8>>2]|0);break};case 238:{c[h>>2]=eo(c[q>>2]|0,0,c[(c[j>>2]|0)+4>>2]|0)|0;break};case 229:{c[h>>2]=eo(c[q>>2]|0,c[(c[j>>2]|0)+ -64+4>>2]|0,c[(c[j>>2]|0)+ -32+4>>2]|0)|0;c[h>>2]=eo(c[q>>2]|0,c[h>>2]|0,c[(c[j>>2]|0)+4>>2]|0)|0;break};case 230:{c[h>>2]=eo(c[q>>2]|0,0,c[(c[j>>2]|0)+ -32+4>>2]|0)|0;c[h>>2]=eo(c[q>>2]|0,c[h>>2]|0,c[(c[j>>2]|0)+4>>2]|0)|0;break};case 237:{c[h>>2]=eo(c[q>>2]|0,c[(c[j>>2]|0)+ -32+4>>2]|0,c[(c[j>>2]|0)+4>>2]|0)|0;break};case 248:{Bo(c[q>>2]|0,c[(c[j>>2]|0)+4>>2]|0,c[(c[j>>2]|0)+ -16+4>>2]|0);break};case 250:case 249:{Co(c[q>>2]|0);break};case 251:{Do(c[q>>2]|0,(c[j>>2]|0)+ -16+4|0,(c[j>>2]|0)+4|0,0,0);break};case 252:{Do(c[q>>2]|0,(c[j>>2]|0)+ -48+4|0,(c[j>>2]|0)+ -32+4|0,(c[j>>2]|0)+4|0,0);break};case 291:case 240:{c[h>>2]=2;break};case 241:{c[h>>2]=0;break};case 239:{Vn(c[q>>2]|0,(c[j>>2]|0)+ -112+4|0,(c[j>>2]|0)+ -96+4|0,ko(c[c[q>>2]>>2]|0,0,(c[j>>2]|0)+ -64+4|0,0)|0,c[(c[j>>2]|0)+ -32+4>>2]|0,c[(c[j>>2]|0)+ -160+4>>2]|0,(c[j>>2]|0)+ -176+4|0,c[(c[j>>2]|0)+4>>2]|0,0,c[(c[j>>2]|0)+ -128+4>>2]|0)|0;break};case 244:{c[Y>>2]=uo(c[q>>2]|0,0,(c[j>>2]|0)+ -16+4|0)|0;c[h>>2]=eo(c[q>>2]|0,c[(c[j>>2]|0)+ -64+4>>2]|0,c[Y>>2]|0)|0;fo(c[q>>2]|0,c[h>>2]|0,(c[j>>2]|0)+ -32+4|0,1);oo(c[q>>2]|0,c[h>>2]|0,10168);if(c[h>>2]|0)a[(c[(c[h>>2]|0)+4>>2]|0)+(((c[c[h>>2]>>2]|0)-1|0)*20|0)+12>>0]=c[(c[j>>2]|0)+4>>2];break};case 245:{c[Z>>2]=uo(c[q>>2]|0,0,(c[j>>2]|0)+ -16+4|0)|0;c[h>>2]=eo(c[q>>2]|0,0,c[Z>>2]|0)|0;fo(c[q>>2]|0,c[h>>2]|0,(c[j>>2]|0)+ -32+4|0,1);oo(c[q>>2]|0,c[h>>2]|0,10168);if(c[h>>2]|0)a[(c[(c[h>>2]|0)+4>>2]|0)+(((c[c[h>>2]>>2]|0)-1|0)*20|0)+12>>0]=c[(c[j>>2]|0)+4>>2];break};case 246:{c[h>>2]=0;c[h+4>>2]=0;break};case 271:case 270:{c[h>>2]=d[(c[j>>2]|0)+2>>0];c[h+4>>2]=0;break};case 296:case 275:{c[h>>2]=0;break};case 272:{c[h>>2]=110;c[h+4>>2]=c[(c[j>>2]|0)+4>>2];break};case 297:case 276:{c[h>>2]=c[(c[j>>2]|0)+4>>2];break};case 253:{Do(c[q>>2]|0,(c[j>>2]|0)+ -64+4|0,(c[j>>2]|0)+ -48+4|0,(c[j>>2]|0)+ -16+4|0,0);break};case 254:{Do(c[q>>2]|0,(c[j>>2]|0)+ -48+4|0,(c[j>>2]|0)+ -32+4|0,(c[j>>2]|0)+4|0,1);break};case 255:{Do(c[q>>2]|0,(c[j>>2]|0)+ -64+4|0,(c[j>>2]|0)+ -48+4|0,(c[j>>2]|0)+ -16+4|0,1);break};case 264:{c[_>>2]=c[(c[j>>2]|0)+ -48+4>>2];c[_+4>>2]=(c[(c[j>>2]|0)+4>>2]|0)-(c[(c[j>>2]|0)+ -48+4>>2]|0)+(c[(c[j>>2]|0)+8>>2]|0);Eo(c[q>>2]|0,c[(c[j>>2]|0)+ -16+4>>2]|0,_);break};case 265:{Fo(c[q>>2]|0,(c[j>>2]|0)+ -112+4|0,(c[j>>2]|0)+ -96+4|0,c[(c[j>>2]|0)+ -80+4>>2]|0,c[(c[j>>2]|0)+ -64+4>>2]|0,c[(c[j>>2]|0)+ -64+8>>2]|0,c[(c[j>>2]|0)+ -32+4>>2]|0,c[(c[j>>2]|0)+4>>2]|0,c[(c[j>>2]|0)+ -160+4>>2]|0,c[(c[j>>2]|0)+ -128+4>>2]|0);q=c[j>>2]|0;if(!(c[(c[j>>2]|0)+ -96+8>>2]|0)){f=q+ -112+4|0;c[h+0>>2]=c[f+0>>2];c[h+4>>2]=c[f+4>>2];break a}else{f=q+ -96+4|0;c[h+0>>2]=c[f+0>>2];c[h+4>>2]=c[f+4>>2];break a}};case 269:case 266:{c[h>>2]=35;break};case 267:{c[h>>2]=31;break};case 268:{c[h>>2]=49;break};case 283:{Se(c[q>>2]|0,10360,r);break};case 284:{c[h>>2]=Go(c[c[q>>2]>>2]|0,(c[j>>2]|0)+ -64+4|0,c[(c[j>>2]|0)+ -16+4>>2]|0,c[(c[j>>2]|0)+4>>2]|0,a[(c[j>>2]|0)+ -80+4>>0]|0)|0;break};case 277:{c[(c[(c[(c[j>>2]|0)+ -32+4>>2]|0)+36>>2]|0)+32>>2]=c[(c[j>>2]|0)+ -16+4>>2];c[(c[(c[j>>2]|0)+ -32+4>>2]|0)+36>>2]=c[(c[j>>2]|0)+ -16+4>>2];c[h>>2]=c[(c[j>>2]|0)+ -32+4>>2];break};case 278:{c[(c[(c[j>>2]|0)+ -16+4>>2]|0)+36>>2]=c[(c[j>>2]|0)+ -16+4>>2];c[h>>2]=c[(c[j>>2]|0)+ -16+4>>2];break};case 282:{Se(c[q>>2]|0,10272,r);break};case 280:{f=(c[j>>2]|0)+4|0;c[h+0>>2]=c[f+0>>2];c[h+4>>2]=c[f+4>>2];Se(c[q>>2]|0,10176,r);break};case 287:{c[h>>2]=Jo(c[c[q>>2]>>2]|0,c[(c[j>>2]|0)+4>>2]|0)|0;break};case 288:{c[h>>2]=Rn(c[q>>2]|0,57,0,0,0)|0;if(c[h>>2]|0)a[(c[h>>2]|0)+1>>0]=4;c[h+4>>2]=c[(c[j>>2]|0)+ -48+4>>2];c[h+8>>2]=(c[(c[j>>2]|0)+4>>2]|0)+(c[(c[j>>2]|0)+8>>2]|0);break};case 285:{c[h>>2]=Ho(c[c[q>>2]>>2]|0,(c[j>>2]|0)+ -32+4|0,c[(c[j>>2]|0)+ -16+4>>2]|0,c[(c[j>>2]|0)+4>>2]|0,a[(c[j>>2]|0)+ -64+4>>0]|0)|0;break};case 286:{c[h>>2]=Io(c[c[q>>2]>>2]|0,(c[j>>2]|0)+ -32+4|0,c[(c[j>>2]|0)+4>>2]|0)|0;break};case 293:{Ko(c[q>>2]|0,c[(c[j>>2]|0)+4>>2]|0,c[(c[j>>2]|0)+ -16+4>>2]|0);break};case 294:{Lo(c[q>>2]|0,c[(c[j>>2]|0)+ -48+4>>2]|0,c[(c[j>>2]|0)+ -16+4>>2]|0,c[(c[j>>2]|0)+4>>2]|0);break};case 295:{Mo(c[q>>2]|0,c[(c[j>>2]|0)+4>>2]|0);break};case 300:{No(c[q>>2]|0,0,0);break};case 289:{c[h>>2]=Rn(c[q>>2]|0,57,0,0,(c[j>>2]|0)+ -16+4|0)|0;if(c[h>>2]|0)a[(c[h>>2]|0)+1>>0]=c[(c[j>>2]|0)+ -48+4>>2];c[h+4>>2]=c[(c[j>>2]|0)+ -80+4>>2];c[h+8>>2]=(c[(c[j>>2]|0)+4>>2]|0)+(c[(c[j>>2]|0)+8>>2]|0);break};case 290:{c[h>>2]=1;break};case 292:{c[h>>2]=3;break};case 303:{Oo(c[q>>2]|0,(c[j>>2]|0)+ -16+4|0,(c[j>>2]|0)+4|0);break};case 304:{Po(c[q>>2]|0,c[(c[j>>2]|0)+ -48+4>>2]|0,(c[j>>2]|0)+4|0);break};case 305:{Qo(c[q>>2]|0,(c[j>>2]|0)+4|0);break};case 306:{a[(c[c[q>>2]>>2]|0)+250>>0]=0;Ro(c[q>>2]|0,c[(c[j>>2]|0)+4>>2]|0);break};case 301:{No(c[q>>2]|0,(c[j>>2]|0)+ -16+4|0,(c[j>>2]|0)+4|0);break};case 302:{Oo(c[q>>2]|0,0,0);break};case 310:{So(c[q>>2]|0,(c[j>>2]|0)+4|0);break};case 311:{To(c[q>>2]|0,(c[j>>2]|0)+ -48+4|0,(c[j>>2]|0)+ -32+4|0,(c[j>>2]|0)+4|0,c[(c[j>>2]|0)+ -64+4>>2]|0);break};case 314:{Uo(c[q>>2]|0);break};case 318:case 317:case 316:{Vo(c[q>>2]|0,(c[j>>2]|0)+4|0);break};case 322:{c[h>>2]=0;break};case 309:{So(c[q>>2]|0,0);break};case 324:case 323:{c[h>>2]=c[(c[j>>2]|0)+4>>2];break};case 325:{c[h>>2]=Wo(c[q>>2]|0,0,(c[j>>2]|0)+ -80+4|0,c[(c[j>>2]|0)+ -64+4>>2]|0,c[(c[j>>2]|0)+ -16+4>>2]|0)|0;break};case 326:{c[h>>2]=Wo(c[q>>2]|0,c[(c[j>>2]|0)+ -112+4>>2]|0,(c[j>>2]|0)+ -80+4|0,c[(c[j>>2]|0)+ -64+4>>2]|0,c[(c[j>>2]|0)+ -16+4>>2]|0)|0;break};default:{}}while(0);c[m>>2]=d[10448+(c[o>>2]<<1)>>0];c[k>>2]=d[10449+(c[o>>2]<<1)>>0];f=c[p>>2]|0;c[f>>2]=(c[f>>2]|0)-(c[k>>2]|0);c[l>>2]=Xo(e[(c[j>>2]|0)+(0-(c[k>>2]|0)<<4)>>1]|0,c[m>>2]&255)|0;if((c[l>>2]|0)>=642){Yo(c[p>>2]|0);i=n;return}o=c[p>>2]|0;if(c[k>>2]|0){c[o>>2]=(c[o>>2]|0)+1;c[j>>2]=(c[j>>2]|0)+(0-((c[k>>2]|0)-1)<<4);b[c[j>>2]>>1]=c[l>>2];a[(c[j>>2]|0)+2>>0]=c[m>>2];f=(c[j>>2]|0)+4|0;c[f+0>>2]=c[h+0>>2];c[f+4>>2]=c[h+4>>2];c[f+8>>2]=c[h+8>>2];i=n;return}else{Dn(o,c[l>>2]|0,c[m>>2]|0,h);i=n;return}}function Fn(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+16|0;h=e;f=e+12|0;g=e+4|0;c[f>>2]=a;c[e+8>>2]=b;c[g>>2]=c[(c[f>>2]|0)+8>>2];a=c[g>>2]|0;c[h>>2]=d;Se(a,9968,h);c[(c[f>>2]|0)+8>>2]=c[g>>2];i=e;return}function Gn(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=i;i=i+16|0;f=e+4|0;g=e;c[f>>2]=b;c[g>>2]=d;a[(c[f>>2]|0)+450>>0]=c[g>>2];c[(c[f>>2]|0)+440>>2]=0;i=e;return}function Hn(b){b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;e=i;i=i+32|0;g=e+24|0;h=e+20|0;f=e+16|0;m=e+12|0;k=e+8|0;l=e+4|0;j=e;c[g>>2]=b;c[h>>2]=c[c[g>>2]>>2];if(a[(c[h>>2]|0)+64>>0]|0){i=e;return}if(a[(c[g>>2]|0)+18>>0]|0){i=e;return}if(c[(c[g>>2]|0)+64>>2]|0){i=e;return}c[f>>2]=dp(c[g>>2]|0)|0;do if(c[f>>2]|0){do{}while((As(c[f>>2]|0,61)|0)!=0);mp(c[f>>2]|0,24)|0;if(!(d[(c[h>>2]|0)+64>>0]|0)){if((c[(c[g>>2]|0)+332>>2]|0)==0?(c[(c[g>>2]|0)+316>>2]|0)==0:0)break;zp(c[f>>2]|0,0);c[m>>2]=0;while(1){if((c[m>>2]|0)>=(c[(c[h>>2]|0)+20>>2]|0))break;if(((c[(c[g>>2]|0)+332>>2]&1<>2]|0)!=0|0)!=0?(Ze(c[f>>2]|0,c[m>>2]|0),We(c[f>>2]|0,4,c[m>>2]|0,(c[(c[g>>2]|0)+328>>2]&1<>2]|0)!=0&1,c[(c[g>>2]|0)+336+(c[m>>2]<<2)>>2]|0,c[(c[(c[(c[h>>2]|0)+16>>2]|0)+(c[m>>2]<<4)+12>>2]|0)+4>>2]|0)|0,(d[(c[h>>2]|0)+145>>0]|0)==0):0)Xe(c[f>>2]|0,1);c[m>>2]=(c[m>>2]|0)+1}c[k>>2]=0;while(1){if((c[k>>2]|0)>=(c[(c[g>>2]|0)+452>>2]|0))break;c[l>>2]=Rp(c[h>>2]|0,c[(c[(c[g>>2]|0)+520>>2]|0)+(c[k>>2]<<2)>>2]|0)|0;hp(c[f>>2]|0,144,0,0,0,c[l>>2]|0,-10)|0;c[k>>2]=(c[k>>2]|0)+1}c[(c[g>>2]|0)+452>>2]=0;uy(c[g>>2]|0);vy(c[g>>2]|0);a:do if(c[(c[g>>2]|0)+316>>2]|0){c[j>>2]=c[(c[g>>2]|0)+316>>2];a[(c[g>>2]|0)+23>>0]=0;c[k>>2]=0;while(1){if((c[k>>2]|0)>=(c[c[j>>2]>>2]|0))break a;Os(c[g>>2]|0,c[(c[(c[j>>2]|0)+4>>2]|0)+((c[k>>2]|0)*20|0)>>2]|0,c[(c[(c[j>>2]|0)+4>>2]|0)+((c[k>>2]|0)*20|0)+16>>2]|0);c[k>>2]=(c[k>>2]|0)+1}}while(0);fp(c[f>>2]|0,16,0,1)|0}}while(0);if(((c[f>>2]|0)!=0?(c[(c[g>>2]|0)+64>>2]|0)==0:0)?(a[(c[h>>2]|0)+64>>0]|0)==0:0){if((c[(c[g>>2]|0)+404>>2]|0)!=0?(c[(c[g>>2]|0)+68>>2]|0)==0:0)c[(c[g>>2]|0)+68>>2]=1;df(c[f>>2]|0,c[g>>2]|0);c[(c[g>>2]|0)+12>>2]=101;a[(c[g>>2]|0)+16>>0]=0}else c[(c[g>>2]|0)+12>>2]=1;c[(c[g>>2]|0)+68>>2]=0;c[(c[g>>2]|0)+72>>2]=0;c[(c[g>>2]|0)+76>>2]=0;c[(c[g>>2]|0)+440>>2]=0;c[(c[g>>2]|0)+332>>2]=0;i=e;return}function In(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;d=i;i=i+32|0;j=d+16|0;h=d+12|0;f=d+8|0;g=d+4|0;e=d;c[j>>2]=a;c[h>>2]=b;c[f>>2]=c[c[j>>2]>>2];if(ap(c[j>>2]|0,22,27128,0,0)|0){i=d;return}c[g>>2]=dp(c[j>>2]|0)|0;if(!(c[g>>2]|0)){i=d;return}a:do if((c[h>>2]|0)!=7){c[e>>2]=0;while(1){if((c[e>>2]|0)>=(c[(c[f>>2]|0)+20>>2]|0))break a;fp(c[g>>2]|0,4,c[e>>2]|0,((c[h>>2]|0)==9&1)+1|0)|0;Ze(c[g>>2]|0,c[e>>2]|0);c[e>>2]=(c[e>>2]|0)+1}}while(0);fp(c[g>>2]|0,3,0,0)|0;i=d;return}function Jn(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+16|0;e=b+4|0;d=b;c[e>>2]=a;if(ap(c[e>>2]|0,22,27160,0,0)|0){i=b;return}c[d>>2]=dp(c[e>>2]|0)|0;if(!(c[d>>2]|0)){i=b;return}fp(c[d>>2]|0,3,1,0)|0;i=b;return}function Kn(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+16|0;e=b+4|0;d=b;c[e>>2]=a;if(ap(c[e>>2]|0,22,27144,0,0)|0){i=b;return}c[d>>2]=dp(c[e>>2]|0)|0;if(!(c[d>>2]|0)){i=b;return}fp(c[d>>2]|0,3,1,1)|0;i=b;return}function Ln(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;e=i;i=i+32|0;j=e+16|0;g=e+12|0;k=e+8|0;h=e+4|0;f=e;c[j>>2]=a;c[g>>2]=b;c[k>>2]=d;c[h>>2]=Zo(c[c[j>>2]>>2]|0,c[k>>2]|0)|0;if(!(c[h>>2]|0)){i=e;return}c[f>>2]=dp(c[j>>2]|0)|0;if((c[f>>2]|0)!=0?(ap(c[j>>2]|0,32,c[27112+(c[g>>2]<<2)>>2]|0,c[h>>2]|0,0)|0)==0:0){hp(c[f>>2]|0,2,c[g>>2]|0,0,0,c[h>>2]|0,-1)|0;i=e;return}Xb(c[c[j>>2]>>2]|0,c[h>>2]|0);i=e;return}function Mn(e,f,g,h,j,k,l){e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;m=i;i=i+96|0;t=m;w=m+84|0;I=m+80|0;H=m+76|0;G=m+72|0;z=m+68|0;y=m+64|0;v=m+60|0;D=m+56|0;q=m+52|0;p=m+48|0;o=m+44|0;n=m+40|0;u=m+36|0;B=m+32|0;A=m+28|0;C=m+24|0;E=m+20|0;F=m+16|0;x=m+12|0;s=m+8|0;r=m+4|0;c[w>>2]=e;c[I>>2]=f;c[H>>2]=g;c[G>>2]=h;c[z>>2]=j;c[y>>2]=k;c[v>>2]=l;c[q>>2]=0;c[p>>2]=c[c[w>>2]>>2];c[n>>2]=Er(c[w>>2]|0,c[I>>2]|0,c[H>>2]|0,u)|0;if((c[n>>2]|0)<0){i=m;return}if((c[G>>2]|0)!=0?(c[n>>2]|0)!=1?(c[(c[H>>2]|0)+4>>2]|0)>>>0>0:0:0){Se(c[w>>2]|0,27e3,t);i=m;return}if(c[G>>2]|0)c[n>>2]=1;I=(c[w>>2]|0)+496|0;e=c[u>>2]|0;c[I+0>>2]=c[e+0>>2];c[I+4>>2]=c[e+4>>2];c[q>>2]=Zo(c[p>>2]|0,c[u>>2]|0)|0;if(!(c[q>>2]|0)){i=m;return}a:do if(!(Pp(c[w>>2]|0,c[q>>2]|0)|0)){if((d[(c[p>>2]|0)+144>>0]|0)==1)c[G>>2]=1;c[A>>2]=c[(c[(c[p>>2]|0)+16>>2]|0)+(c[n>>2]<<4)>>2];if(!(ap(c[w>>2]|0,18,(c[G>>2]|0)==1?14904:14928,0,c[A>>2]|0)|0)){l=(c[G>>2]|0)!=0;do if(c[z>>2]|0)if(l){c[B>>2]=6;break}else{c[B>>2]=8;break}else if(l){c[B>>2]=4;break}else{c[B>>2]=2;break}while(0);if((c[y>>2]|0)==0?(ap(c[w>>2]|0,c[B>>2]|0,c[q>>2]|0,0,c[A>>2]|0)|0)!=0:0)break;do if(!(a[(c[w>>2]|0)+451>>0]|0)){c[C>>2]=c[(c[(c[p>>2]|0)+16>>2]|0)+(c[n>>2]<<4)>>2];if(Ar(c[w>>2]|0)|0)break a;c[D>>2]=sp(c[p>>2]|0,c[q>>2]|0,c[C>>2]|0)|0;if(!(c[D>>2]|0)){if(!(Op(c[p>>2]|0,c[q>>2]|0,c[C>>2]|0)|0))break;I=c[w>>2]|0;c[t>>2]=c[q>>2];Se(I,27072,t);break a}o=c[w>>2]|0;if(c[v>>2]|0){qp(o,c[n>>2]|0);break a}else{c[t>>2]=c[u>>2];Se(o,27048,t);break a}}while(0);c[D>>2]=se(c[p>>2]|0,76,0)|0;if(!(c[D>>2]|0)){a[(c[p>>2]|0)+64>>0]=1;c[(c[w>>2]|0)+12>>2]=7;I=(c[w>>2]|0)+64|0;c[I>>2]=(c[I>>2]|0)+1;break}c[c[D>>2]>>2]=c[q>>2];b[(c[D>>2]|0)+36>>1]=-1;c[(c[D>>2]|0)+68>>2]=c[(c[(c[p>>2]|0)+16>>2]|0)+(c[n>>2]<<4)+12>>2];b[(c[D>>2]|0)+40>>1]=1;b[(c[D>>2]|0)+28>>1]=200;c[(c[w>>2]|0)+484>>2]=c[D>>2];if((a[(c[w>>2]|0)+18>>0]|0)==0?(UE(c[q>>2]|0,16152)|0)==0:0)c[(c[(c[D>>2]|0)+68>>2]|0)+72>>2]=c[D>>2];if(a[(c[p>>2]|0)+145>>0]|0){i=m;return}I=dp(c[w>>2]|0)|0;c[o>>2]=I;if(!I){i=m;return}pp(c[w>>2]|0,0,c[n>>2]|0);if(c[y>>2]|0)mp(c[o>>2]|0,144)|0;e=(c[w>>2]|0)+72|0;I=(c[e>>2]|0)+1|0;c[e>>2]=I;c[(c[w>>2]|0)+384>>2]=I;c[x>>2]=I;I=(c[w>>2]|0)+72|0;e=(c[I>>2]|0)+1|0;c[I>>2]=e;c[(c[w>>2]|0)+388>>2]=e;c[s>>2]=e;e=(c[w>>2]|0)+72|0;I=(c[e>>2]|0)+1|0;c[e>>2]=I;c[r>>2]=I;ip(c[o>>2]|0,51,c[n>>2]|0,c[r>>2]|0,2)|0;Ze(c[o>>2]|0,c[n>>2]|0);c[E>>2]=Ir(c[o>>2]|0,45,c[r>>2]|0)|0;c[F>>2]=(c[(c[p>>2]|0)+24>>2]&32768|0)!=0?1:4;fp(c[o>>2]|0,25,c[F>>2]|0,c[r>>2]|0)|0;ip(c[o>>2]|0,52,c[n>>2]|0,2,c[r>>2]|0)|0;fp(c[o>>2]|0,25,d[(c[(c[(c[p>>2]|0)+16>>2]|0)+12>>2]|0)+77>>0]|0,c[r>>2]|0)|0;ip(c[o>>2]|0,52,c[n>>2]|0,5,c[r>>2]|0)|0;zp(c[o>>2]|0,c[E>>2]|0);p=c[o>>2]|0;if((c[z>>2]|0)!=0|(c[y>>2]|0)!=0)fp(p,25,0,c[s>>2]|0)|0;else{I=fp(p,121,c[n>>2]|0,c[s>>2]|0)|0;c[(c[w>>2]|0)+416>>2]=I}Dt(c[w>>2]|0,c[n>>2]|0);fp(c[o>>2]|0,74,0,c[x>>2]|0)|0;fp(c[o>>2]|0,28,0,c[r>>2]|0)|0;ip(c[o>>2]|0,75,0,c[r>>2]|0,c[x>>2]|0)|0;Xe(c[o>>2]|0,8);mp(c[o>>2]|0,61)|0;i=m;return}}while(0);Xb(c[p>>2]|0,c[q>>2]|0);i=m;return}function Nn(e,f,g,h,j){e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;y=i;i=i+144|0;m=y;u=y+128|0;C=y+124|0;x=y+120|0;D=y+132|0;H=y+116|0;q=y+112|0;n=y+108|0;p=y+104|0;G=y+100|0;k=y+96|0;o=y+92|0;s=y+88|0;v=y+84|0;t=y+80|0;E=y+60|0;F=y+56|0;w=y+52|0;r=y+48|0;A=y+44|0;z=y+40|0;B=y+36|0;l=y+32|0;c[u>>2]=e;c[C>>2]=f;c[x>>2]=g;a[D>>0]=h;c[H>>2]=j;c[n>>2]=c[c[u>>2]>>2];if((c[x>>2]|0)==0&(c[H>>2]|0)==0){i=y;return}if(d[(c[n>>2]|0)+64>>0]|0){i=y;return}c[q>>2]=c[(c[u>>2]|0)+484>>2];if(!(c[q>>2]|0)){i=y;return}if(a[(c[n>>2]|0)+145>>0]|0)c[(c[q>>2]|0)+32>>2]=c[(c[n>>2]|0)+140>>2];do if(d[D>>0]&32){if(d[(c[q>>2]|0)+44>>0]&8){Se(c[u>>2]|0,26608,m);i=y;return}if(!(d[(c[q>>2]|0)+44>>0]&4)){e=c[u>>2]|0;c[m>>2]=c[c[q>>2]>>2];Se(e,26664,m);break}else{e=(c[q>>2]|0)+44|0;a[e>>0]=d[e>>0]|32;oy(c[u>>2]|0,c[q>>2]|0);break}}while(0);c[p>>2]=Ve(c[n>>2]|0,c[(c[q>>2]|0)+68>>2]|0)|0;if(c[(c[q>>2]|0)+24>>2]|0)iy(c[u>>2]|0,c[q>>2]|0,4,0,c[(c[q>>2]|0)+24>>2]|0);py(c[q>>2]|0);c[G>>2]=c[(c[q>>2]|0)+8>>2];while(1){if(!(c[G>>2]|0))break;ky(c[G>>2]|0);c[G>>2]=c[(c[G>>2]|0)+20>>2]}if(!(a[(c[n>>2]|0)+145>>0]|0)){c[o>>2]=dp(c[u>>2]|0)|0;if(!(c[o>>2]|0)){i=y;return}Ir(c[o>>2]|0,61,0)|0;if(!(c[(c[q>>2]|0)+12>>2]|0)){c[s>>2]=21400;c[v>>2]=26696}else{c[s>>2]=25504;c[v>>2]=26704}do if((c[H>>2]|0)!=0?(ip(c[o>>2]|0,55,1,c[(c[u>>2]|0)+388>>2]|0,c[p>>2]|0)|0,Xe(c[o>>2]|0,2),c[(c[u>>2]|0)+68>>2]=2,$s(E,14,1),ao(c[u>>2]|0,c[H>>2]|0,E)|0,Ir(c[o>>2]|0,61,1)|0,(c[(c[u>>2]|0)+64>>2]|0)==0):0){c[F>>2]=Yp(c[u>>2]|0,c[H>>2]|0)|0;if(!(c[F>>2]|0)){i=y;return}else{b[(c[q>>2]|0)+38>>1]=b[(c[F>>2]|0)+38>>1]|0;c[(c[q>>2]|0)+4>>2]=c[(c[F>>2]|0)+4>>2];b[(c[F>>2]|0)+38>>1]=0;c[(c[F>>2]|0)+4>>2]=0;Vb(c[n>>2]|0,c[F>>2]|0);break}}while(0);if(c[H>>2]|0)c[t>>2]=qy(c[n>>2]|0,c[q>>2]|0)|0;else{if(d[D>>0]|0)D=(c[u>>2]|0)+504|0;else D=c[x>>2]|0;c[w>>2]=D;c[k>>2]=(c[c[w>>2]>>2]|0)-(c[(c[u>>2]|0)+496>>2]|0);if((a[c[c[w>>2]>>2]>>0]|0)!=59)c[k>>2]=(c[k>>2]|0)+(c[(c[w>>2]|0)+4>>2]|0);e=c[n>>2]|0;g=c[k>>2]|0;f=c[(c[u>>2]|0)+496>>2]|0;c[m>>2]=c[v>>2];c[m+4>>2]=g;c[m+8>>2]=f;c[t>>2]=Te(e,26712,m)|0}e=c[u>>2]|0;F=(c[p>>2]|0)==1?14904:14928;j=c[s>>2]|0;G=c[c[q>>2]>>2]|0;H=c[c[q>>2]>>2]|0;h=c[(c[u>>2]|0)+388>>2]|0;g=c[t>>2]|0;f=c[(c[u>>2]|0)+384>>2]|0;c[m>>2]=c[(c[(c[n>>2]|0)+16>>2]|0)+(c[p>>2]<<4)>>2];c[m+4>>2]=F;c[m+8>>2]=j;c[m+12>>2]=G;c[m+16>>2]=H;c[m+20>>2]=h;c[m+24>>2]=g;c[m+28>>2]=f;cp(e,26728,m);Xb(c[n>>2]|0,c[t>>2]|0);ep(c[u>>2]|0,c[p>>2]|0);if((d[(c[q>>2]|0)+44>>0]&8|0)!=0?(c[r>>2]=(c[(c[n>>2]|0)+16>>2]|0)+(c[p>>2]<<4),(c[(c[(c[r>>2]|0)+12>>2]|0)+72>>2]|0)==0):0){e=c[u>>2]|0;c[m>>2]=c[c[r>>2]>>2];cp(e,26816,m)}g=c[o>>2]|0;f=c[p>>2]|0;e=c[n>>2]|0;c[m>>2]=c[c[q>>2]>>2];gp(g,f,Te(e,26864,m)|0)}if(!(a[(c[n>>2]|0)+145>>0]|0)){i=y;return}c[z>>2]=c[(c[q>>2]|0)+68>>2];c[A>>2]=gh((c[z>>2]|0)+8|0,c[c[q>>2]>>2]|0,c[q>>2]|0)|0;if(c[A>>2]|0){a[(c[n>>2]|0)+64>>0]=1;i=y;return}c[(c[u>>2]|0)+484>>2]=0;e=(c[n>>2]|0)+24|0;c[e>>2]=c[e>>2]|2;if(c[(c[q>>2]|0)+12>>2]|0){i=y;return}c[B>>2]=c[(c[u>>2]|0)+496>>2];if(!(c[c[C>>2]>>2]|0))c[C>>2]=c[x>>2];c[l>>2]=(c[c[C>>2]>>2]|0)-(c[B>>2]|0);e=13+(Tm(c[B>>2]|0,c[l>>2]|0)|0)|0;c[(c[q>>2]|0)+48>>2]=e;i=y;return}function On(e,f){e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;n=i;i=i+48|0;l=n;j=n+32|0;r=n+28|0;k=n+24|0;q=n+20|0;p=n+16|0;o=n+12|0;m=n+8|0;g=n+4|0;c[j>>2]=e;c[r>>2]=f;c[m>>2]=c[c[j>>2]>>2];e=c[(c[j>>2]|0)+484>>2]|0;c[k>>2]=e;if(!e){i=n;return}if(((b[(c[k>>2]|0)+38>>1]|0)+1|0)>(c[(c[m>>2]|0)+96>>2]|0)){e=c[j>>2]|0;c[l>>2]=c[c[k>>2]>>2];Se(e,26552,l);i=n;return}c[p>>2]=Zo(c[m>>2]|0,c[r>>2]|0)|0;if(!(c[p>>2]|0)){i=n;return}c[q>>2]=0;while(1){if((c[q>>2]|0)>=(b[(c[k>>2]|0)+38>>1]|0))break;if((d[440+(d[c[p>>2]>>0]|0)>>0]|0)==(d[440+(d[c[(c[(c[k>>2]|0)+4>>2]|0)+((c[q>>2]|0)*24|0)>>2]>>0]|0)>>0]|0)?(xc((c[p>>2]|0)+1|0,(c[(c[(c[k>>2]|0)+4>>2]|0)+((c[q>>2]|0)*24|0)>>2]|0)+1|0)|0)==0:0){h=9;break}c[q>>2]=(c[q>>2]|0)+1}if((h|0)==9){e=c[j>>2]|0;c[l>>2]=c[p>>2];Se(e,26576,l);Xb(c[m>>2]|0,c[p>>2]|0);i=n;return}do if(!(b[(c[k>>2]|0)+38>>1]&7)){c[g>>2]=Fk(c[m>>2]|0,c[(c[k>>2]|0)+4>>2]|0,((b[(c[k>>2]|0)+38>>1]|0)+8|0)*24|0,0)|0;if(c[g>>2]|0){c[(c[k>>2]|0)+4>>2]=c[g>>2];break}Xb(c[m>>2]|0,c[p>>2]|0);i=n;return}while(0);c[o>>2]=(c[(c[k>>2]|0)+4>>2]|0)+((b[(c[k>>2]|0)+38>>1]|0)*24|0);e=c[o>>2]|0;c[e+0>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;c[e+16>>2]=0;c[e+20>>2]=0;c[c[o>>2]>>2]=c[p>>2];a[(c[o>>2]|0)+21>>0]=65;a[(c[o>>2]|0)+22>>0]=1;e=(c[k>>2]|0)+38|0;b[e>>1]=(b[e>>1]|0)+1<<16>>16;i=n;return}function Pn(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;f=i;i=i+16|0;j=f+12|0;k=f+8|0;g=f+4|0;h=f;c[j>>2]=d;c[k>>2]=e;c[g>>2]=c[(c[j>>2]|0)+484>>2];if(!(c[g>>2]|0)){i=f;return}if((b[(c[g>>2]|0)+38>>1]|0)<1){i=f;return}c[h>>2]=(c[(c[g>>2]|0)+4>>2]|0)+(((b[(c[g>>2]|0)+38>>1]|0)-1|0)*24|0);d=Zo(c[c[j>>2]>>2]|0,c[k>>2]|0)|0;c[(c[h>>2]|0)+12>>2]=d;d=Bp(c[(c[h>>2]|0)+12>>2]|0,(c[h>>2]|0)+22|0)|0;a[(c[h>>2]|0)+21>>0]=d;i=f;return}function Qn(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;f=i;i=i+32|0;l=f;k=f+20|0;g=f+16|0;m=f+12|0;j=f+8|0;h=f+4|0;c[k>>2]=d;c[g>>2]=e;c[h>>2]=c[c[k>>2]>>2];c[m>>2]=c[(c[k>>2]|0)+484>>2];if(!(c[m>>2]|0)){m=c[h>>2]|0;d=c[g>>2]|0;d=c[d>>2]|0;wn(m,d);i=f;return}c[j>>2]=(c[(c[m>>2]|0)+4>>2]|0)+(((b[(c[m>>2]|0)+38>>1]|0)-1|0)*24|0);if(ny(c[c[g>>2]>>2]|0,a[(c[h>>2]|0)+145>>0]|0)|0){wn(c[h>>2]|0,c[(c[j>>2]|0)+4>>2]|0);m=Bq(c[h>>2]|0,c[c[g>>2]>>2]|0,1)|0;c[(c[j>>2]|0)+4>>2]=m;Xb(c[h>>2]|0,c[(c[j>>2]|0)+8>>2]|0);m=(c[(c[g>>2]|0)+8>>2]|0)-(c[(c[g>>2]|0)+4>>2]|0)|0;m=rm(c[h>>2]|0,c[(c[g>>2]|0)+4>>2]|0,m,((m|0)<0)<<31>>31)|0;c[(c[j>>2]|0)+8>>2]=m;m=c[h>>2]|0;d=c[g>>2]|0;d=c[d>>2]|0;wn(m,d);i=f;return}else{m=c[k>>2]|0;c[l>>2]=c[c[j>>2]>>2];Se(m,26504,l);m=c[h>>2]|0;d=c[g>>2]|0;d=c[d>>2]|0;wn(m,d);i=f;return}}function Rn(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;h=i;i=i+32|0;j=h+20|0;n=h+16|0;l=h+12|0;k=h+8|0;g=h+4|0;m=h;c[j>>2]=a;c[n>>2]=b;c[l>>2]=d;c[k>>2]=e;c[g>>2]=f;f=c[c[j>>2]>>2]|0;if((c[n>>2]|0)==72&(c[l>>2]|0)!=0&(c[k>>2]|0)!=0)c[m>>2]=mr(f,c[l>>2]|0,c[k>>2]|0)|0;else{c[m>>2]=or(f,c[n>>2]|0,c[g>>2]|0,1)|0;pr(c[c[j>>2]>>2]|0,c[m>>2]|0,c[l>>2]|0,c[k>>2]|0)}if(!(c[m>>2]|0)){a=c[m>>2]|0;i=h;return a|0}Qq(c[j>>2]|0,c[(c[m>>2]|0)+24>>2]|0)|0;a=c[m>>2]|0;i=h;return a|0}function Sn(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;f=i;i=i+16|0;g=f+12|0;k=f+8|0;j=f+4|0;h=f;c[g>>2]=a;c[k>>2]=b;c[j>>2]=d;c[h>>2]=e;a=Rn(c[k>>2]|0,c[j>>2]|0,0,0,c[h>>2]|0)|0;c[c[g>>2]>>2]=a;c[(c[g>>2]|0)+4>>2]=c[c[h>>2]>>2];c[(c[g>>2]|0)+8>>2]=(c[c[h>>2]>>2]|0)+(c[(c[h>>2]|0)+4>>2]|0);i=f;return}function Tn(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,j=0;f=i;i=i+16|0;j=f+8|0;g=f+4|0;h=f;c[j>>2]=d;c[g>>2]=e;c[h>>2]=c[(c[j>>2]|0)+484>>2];if(!(c[h>>2]|0)){i=f;return}if((b[(c[h>>2]|0)+38>>1]|0)<1){i=f;return}a[(c[(c[h>>2]|0)+4>>2]|0)+(((b[(c[h>>2]|0)+38>>1]|0)-1|0)*24|0)+20>>0]=c[g>>2];i=f;return}function Un(e,f,g,h,j){e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;s=i;i=i+64|0;n=s;m=s+48|0;l=s+44|0;o=s+40|0;p=s+36|0;q=s+32|0;u=s+28|0;w=s+24|0;t=s+20|0;y=s+16|0;x=s+12|0;k=s+8|0;r=s+4|0;c[m>>2]=e;c[l>>2]=f;c[o>>2]=g;c[p>>2]=h;c[q>>2]=j;c[u>>2]=c[(c[m>>2]|0)+484>>2];c[w>>2]=0;c[t>>2]=-1;if(!(c[u>>2]|0)){f=c[m>>2]|0;f=c[f>>2]|0;e=c[l>>2]|0;sn(f,e);i=s;return}if(d[(c[m>>2]|0)+451>>0]|0){f=c[m>>2]|0;f=c[f>>2]|0;e=c[l>>2]|0;sn(f,e);i=s;return}if(d[(c[u>>2]|0)+44>>0]&4){f=c[m>>2]|0;c[n>>2]=c[c[u>>2]>>2];Se(f,26400,n);f=c[m>>2]|0;f=c[f>>2]|0;e=c[l>>2]|0;sn(f,e);i=s;return}e=(c[u>>2]|0)+44|0;a[e>>0]=d[e>>0]|4;a:do if(!(c[l>>2]|0)){c[t>>2]=(b[(c[u>>2]|0)+38>>1]|0)-1;e=(c[(c[u>>2]|0)+4>>2]|0)+((c[t>>2]|0)*24|0)+23|0;a[e>>0]=d[e>>0]|1;c[w>>2]=c[(c[(c[u>>2]|0)+4>>2]|0)+((c[t>>2]|0)*24|0)+12>>2];c[x>>2]=1}else{c[x>>2]=c[c[l>>2]>>2];c[y>>2]=0;while(1){if((c[y>>2]|0)>=(c[x>>2]|0))break a;c[t>>2]=0;while(1){if((c[t>>2]|0)>=(b[(c[u>>2]|0)+38>>1]|0))break;e=(xc(c[(c[(c[l>>2]|0)+4>>2]|0)+((c[y>>2]|0)*20|0)+4>>2]|0,c[(c[(c[u>>2]|0)+4>>2]|0)+((c[t>>2]|0)*24|0)>>2]|0)|0)==0;j=c[t>>2]|0;if(e){v=12;break}c[t>>2]=j+1}if((v|0)==12){v=0;e=(c[(c[u>>2]|0)+4>>2]|0)+(j*24|0)+23|0;a[e>>0]=d[e>>0]|1;c[w>>2]=c[(c[(c[u>>2]|0)+4>>2]|0)+((c[t>>2]|0)*24|0)+12>>2]}c[y>>2]=(c[y>>2]|0)+1}}while(0);if((c[x>>2]|0)==1&(c[w>>2]|0)!=0?(e=(xc(c[w>>2]|0,16416)|0)==0,e&(c[q>>2]|0)==0):0){b[(c[u>>2]|0)+36>>1]=c[t>>2];a[(c[u>>2]|0)+45>>0]=c[o>>2];e=(c[u>>2]|0)+44|0;a[e>>0]=d[e>>0]|c[p>>2]<<3;if(!(c[l>>2]|0)){f=c[m>>2]|0;f=c[f>>2]|0;e=c[l>>2]|0;sn(f,e);i=s;return}a[(c[m>>2]|0)+448>>0]=a[(c[(c[l>>2]|0)+4>>2]|0)+12>>0]|0;f=c[m>>2]|0;f=c[f>>2]|0;e=c[l>>2]|0;sn(f,e);i=s;return}t=c[m>>2]|0;if(c[p>>2]|0){Se(t,26448,n);f=c[m>>2]|0;f=c[f>>2]|0;e=c[l>>2]|0;sn(f,e);i=s;return}c[k>>2]=c[t+8>>2];if(c[k>>2]|0){e=mp(c[k>>2]|0,154)|0;c[(c[m>>2]|0)+420>>2]=e}c[r>>2]=Vn(c[m>>2]|0,0,0,0,c[l>>2]|0,c[o>>2]|0,0,0,c[q>>2]|0,0)|0;if((c[r>>2]|0)!=0?(e=(c[r>>2]|0)+55|0,a[e>>0]=a[e>>0]&-4|2,(c[k>>2]|0)!=0):0)zp(c[k>>2]|0,c[(c[m>>2]|0)+420>>2]|0);c[l>>2]=0;f=c[m>>2]|0;f=c[f>>2]|0;e=c[l>>2]|0;sn(f,e);i=s;return}function Vn(f,g,h,j,k,l,m,n,o,p){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;var q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0;s=i;i=i+240|0;D=s;Y=s+232|0;ka=s+228|0;ja=s+224|0;t=s+220|0;x=s+216|0;B=s+212|0;H=s+208|0;v=s+204|0;ma=s+200|0;_=s+196|0;q=s+192|0;A=s+188|0;w=s+184|0;r=s+180|0;$=s+176|0;J=s+172|0;L=s+168|0;ia=s+144|0;R=s+140|0;u=s+136|0;Z=s+132|0;C=s+128|0;M=s+124|0;Q=s+120|0;X=s+116|0;V=s+112|0;ba=s+108|0;U=s+104|0;K=s+100|0;ga=s+96|0;ha=s+92|0;fa=s+88|0;la=s+84|0;W=s+80|0;S=s+76|0;P=s+72|0;T=s+68|0;I=s+64|0;da=s+60|0;ea=s+56|0;F=s+52|0;G=s+48|0;E=s+44|0;ca=s+40|0;O=s+36|0;aa=s+32|0;N=s+28|0;z=s+24|0;c[Y>>2]=f;c[ka>>2]=g;c[ja>>2]=h;c[t>>2]=j;c[x>>2]=k;c[B>>2]=l;c[H>>2]=m;c[v>>2]=n;c[ma>>2]=o;c[_>>2]=p;c[q>>2]=0;c[A>>2]=0;c[w>>2]=0;c[r>>2]=0;c[u>>2]=c[c[Y>>2]>>2];c[M>>2]=0;c[V>>2]=0;c[U>>2]=0;c[K>>2]=0;a:do if(((d[(c[u>>2]|0)+64>>0]|0)==0?(d[(c[Y>>2]|0)+451>>0]|0)==0:0)?0==(Ar(c[Y>>2]|0)|0):0){p=c[Y>>2]|0;if(c[t>>2]|0){c[C>>2]=Er(p,c[ka>>2]|0,c[ja>>2]|0,M)|0;if((c[C>>2]|0)<0)break;if(((a[(c[u>>2]|0)+145>>0]|0)==0?(c[A>>2]=Ft(c[Y>>2]|0,c[t>>2]|0)|0,(c[A>>2]|0)!=0?(c[(c[ja>>2]|0)+4>>2]|0)==0:0):0)?(c[(c[A>>2]|0)+68>>2]|0)==(c[(c[(c[u>>2]|0)+16>>2]|0)+28>>2]|0):0)c[C>>2]=1;Gt(ia,c[Y>>2]|0,c[C>>2]|0,10168,c[M>>2]|0);Ht(ia,c[t>>2]|0)|0;c[A>>2]=np(c[Y>>2]|0,0,(c[t>>2]|0)+8|0)|0;if(!(c[A>>2]|0))break;if((c[C>>2]|0)==1?(c[(c[(c[u>>2]|0)+16>>2]|0)+(c[C>>2]<<4)+12>>2]|0)!=(c[(c[A>>2]|0)+68>>2]|0):0){f=c[Y>>2]|0;c[D>>2]=c[c[A>>2]>>2];Se(f,25944,D);break}if(d[(c[A>>2]|0)+44>>0]&32)c[K>>2]=Zr(c[A>>2]|0)|0}else{c[A>>2]=c[p+484>>2];if(!(c[A>>2]|0))break;c[C>>2]=Ve(c[u>>2]|0,c[(c[A>>2]|0)+68>>2]|0)|0}c[Z>>2]=(c[(c[u>>2]|0)+16>>2]|0)+(c[C>>2]<<4);if(((Lb(c[c[A>>2]>>2]|0,15144,7)|0)==0?(d[(c[u>>2]|0)+145>>0]|0)==0:0)?(Lb((c[c[A>>2]>>2]|0)+7|0,26e3,9)|0)!=0:0){f=c[Y>>2]|0;c[D>>2]=c[c[A>>2]>>2];Se(f,26016,D);break}if(c[(c[A>>2]|0)+12>>2]|0){Se(c[Y>>2]|0,26048,D);break}if(d[(c[A>>2]|0)+44>>0]&16){Se(c[Y>>2]|0,26080,D);break}if(c[M>>2]|0){c[r>>2]=Zo(c[u>>2]|0,c[M>>2]|0)|0;if(!(c[r>>2]|0))break;if(Pp(c[Y>>2]|0,c[r>>2]|0)|0)break;if((a[(c[u>>2]|0)+145>>0]|0)==0?(sp(c[u>>2]|0,c[r>>2]|0,0)|0)!=0:0){f=c[Y>>2]|0;c[D>>2]=c[r>>2];Se(f,26120,D);break}if(Op(c[u>>2]|0,c[r>>2]|0,c[c[Z>>2]>>2]|0)|0){y=c[Y>>2]|0;if(c[_>>2]|0){qp(y,c[C>>2]|0);break}else{c[D>>2]=c[r>>2];Se(y,26160,D);break}}}else{c[ha>>2]=c[(c[A>>2]|0)+8>>2];c[ga>>2]=1;while(1){if(!(c[ha>>2]|0))break;c[ha>>2]=c[(c[ha>>2]|0)+20>>2];c[ga>>2]=(c[ga>>2]|0)+1}f=c[u>>2]|0;g=c[ga>>2]|0;c[D>>2]=c[c[A>>2]>>2];c[D+4>>2]=g;c[r>>2]=Te(f,26184,D)|0;if(!(c[r>>2]|0))break}c[fa>>2]=c[c[Z>>2]>>2];if((ap(c[Y>>2]|0,18,(c[C>>2]|0)==1?14904:14928,0,c[fa>>2]|0)|0)==0?(c[J>>2]=1,c[J>>2]=(c[C>>2]|0)==1?3:1,(ap(c[Y>>2]|0,c[J>>2]|0,c[r>>2]|0,c[c[A>>2]>>2]|0,c[fa>>2]|0)|0)==0):0){if(!(c[x>>2]|0)){c[x>>2]=eo(c[Y>>2]|0,0,0)|0;if(!(c[x>>2]|0))break;f=ne(c[c[Y>>2]>>2]|0,c[(c[(c[A>>2]|0)+4>>2]|0)+(((b[(c[A>>2]|0)+38>>1]|0)-1|0)*24|0)>>2]|0)|0;c[(c[(c[x>>2]|0)+4>>2]|0)+4>>2]=f;a[(c[(c[x>>2]|0)+4>>2]|0)+12>>0]=c[ma>>2]}c[J>>2]=0;while(1){if((c[J>>2]|0)>=(c[c[x>>2]>>2]|0))break;c[la>>2]=c[(c[(c[x>>2]|0)+4>>2]|0)+((c[J>>2]|0)*20|0)>>2];if(c[la>>2]|0){f=1+(Mb(c[(c[la>>2]|0)+8>>2]|0)|0)|0;c[V>>2]=(c[V>>2]|0)+f}c[J>>2]=(c[J>>2]|0)+1}c[$>>2]=Mb(c[r>>2]|0)|0;if(c[K>>2]|0)_=e[(c[K>>2]|0)+50>>1]|0;else _=1;c[ba>>2]=_;c[w>>2]=ov(c[u>>2]|0,(c[c[x>>2]>>2]|0)+(c[ba>>2]|0)&65535,(c[$>>2]|0)+(c[V>>2]|0)+1|0,U)|0;if(!(a[(c[u>>2]|0)+64>>0]|0)){c[c[w>>2]>>2]=c[U>>2];c[U>>2]=(c[U>>2]|0)+((c[$>>2]|0)+1);dF(c[c[w>>2]>>2]|0,c[r>>2]|0,(c[$>>2]|0)+1|0)|0;c[(c[w>>2]|0)+12>>2]=c[A>>2];a[(c[w>>2]|0)+54>>0]=c[B>>2];f=(c[w>>2]|0)+55|0;a[f>>0]=a[f>>0]&-9|((c[B>>2]|0)!=0&1)<<3&255;f=(c[w>>2]|0)+55|0;a[f>>0]=a[f>>0]&-4|((c[M>>2]|0)!=0?0:1)&3;c[(c[w>>2]|0)+24>>2]=c[(c[(c[u>>2]|0)+16>>2]|0)+(c[C>>2]<<4)+12>>2];b[(c[w>>2]|0)+50>>1]=c[c[x>>2]>>2];if(c[v>>2]|0){iy(c[Y>>2]|0,c[A>>2]|0,16,c[v>>2]|0,0);c[(c[w>>2]|0)+36>>2]=c[v>>2];c[v>>2]=0}if((d[(c[(c[Z>>2]|0)+12>>2]|0)+76>>0]|0)>=4)c[R>>2]=-1;else c[R>>2]=0;c[J>>2]=0;c[Q>>2]=c[(c[x>>2]|0)+4>>2];while(1){if((c[J>>2]|0)>=(c[c[x>>2]>>2]|0))break;c[W>>2]=c[(c[Q>>2]|0)+4>>2];c[L>>2]=0;c[X>>2]=c[(c[A>>2]|0)+4>>2];while(1){if((c[L>>2]|0)>=(b[(c[A>>2]|0)+38>>1]|0))break;if(!(xc(c[W>>2]|0,c[c[X>>2]>>2]|0)|0))break;c[L>>2]=(c[L>>2]|0)+1;c[X>>2]=(c[X>>2]|0)+24}if((c[L>>2]|0)>=(b[(c[A>>2]|0)+38>>1]|0)){y=65;break}b[(c[(c[w>>2]|0)+4>>2]|0)+(c[J>>2]<<1)>>1]=c[L>>2];if(c[c[Q>>2]>>2]|0){c[P>>2]=c[(c[c[Q>>2]>>2]|0)+8>>2];c[T>>2]=(Mb(c[P>>2]|0)|0)+1;dF(c[U>>2]|0,c[P>>2]|0,c[T>>2]|0)|0;c[P>>2]=c[U>>2];c[U>>2]=(c[U>>2]|0)+(c[T>>2]|0);c[V>>2]=(c[V>>2]|0)-(c[T>>2]|0)}else{f=c[(c[(c[A>>2]|0)+4>>2]|0)+((c[L>>2]|0)*24|0)+16>>2]|0;c[P>>2]=f;c[P>>2]=(c[P>>2]|0)!=0?f:3320}if((a[(c[u>>2]|0)+145>>0]|0)==0?(Or(c[Y>>2]|0,c[P>>2]|0)|0)==0:0)break a;c[(c[(c[w>>2]|0)+32>>2]|0)+(c[J>>2]<<2)>>2]=c[P>>2];c[S>>2]=d[(c[Q>>2]|0)+12>>0]&c[R>>2];a[(c[(c[w>>2]|0)+28>>2]|0)+(c[J>>2]|0)>>0]=c[S>>2];if(!(d[(c[(c[A>>2]|0)+4>>2]|0)+((c[L>>2]|0)*24|0)+20>>0]|0)){f=(c[w>>2]|0)+55|0;a[f>>0]=a[f>>0]&-9}c[J>>2]=(c[J>>2]|0)+1;c[Q>>2]=(c[Q>>2]|0)+20}if((y|0)==65){f=c[Y>>2]|0;g=c[W>>2]|0;c[D>>2]=c[c[A>>2]>>2];c[D+4>>2]=g;Se(f,26208,D);a[(c[Y>>2]|0)+17>>0]=1;break}b:do if(c[K>>2]|0){c[L>>2]=0;while(1){if((c[L>>2]|0)>=(e[(c[K>>2]|0)+50>>1]|0))break b;c[I>>2]=b[(c[(c[K>>2]|0)+4>>2]|0)+(c[L>>2]<<1)>>1];if(jy(c[(c[w>>2]|0)+4>>2]|0,e[(c[w>>2]|0)+50>>1]|0,c[I>>2]|0)|0){f=(c[w>>2]|0)+52|0;b[f>>1]=(b[f>>1]|0)+ -1<<16>>16}else{b[(c[(c[w>>2]|0)+4>>2]|0)+(c[J>>2]<<1)>>1]=c[I>>2];c[(c[(c[w>>2]|0)+32>>2]|0)+(c[J>>2]<<2)>>2]=c[(c[(c[K>>2]|0)+32>>2]|0)+(c[L>>2]<<2)>>2];a[(c[(c[w>>2]|0)+28>>2]|0)+(c[J>>2]|0)>>0]=a[(c[(c[K>>2]|0)+28>>2]|0)+(c[L>>2]|0)>>0]|0;c[J>>2]=(c[J>>2]|0)+1}c[L>>2]=(c[L>>2]|0)+1}}else{b[(c[(c[w>>2]|0)+4>>2]|0)+(c[J>>2]<<1)>>1]=-1;c[(c[(c[w>>2]|0)+32>>2]|0)+(c[J>>2]<<2)>>2]=3320}while(0);hs(c[w>>2]|0);if(!(c[(c[Y>>2]|0)+484>>2]|0))ky(c[w>>2]|0);c:do if((c[A>>2]|0)==(c[(c[Y>>2]|0)+484>>2]|0)){c[da>>2]=c[(c[A>>2]|0)+8>>2];while(1){if(!(c[da>>2]|0))break c;if((e[(c[da>>2]|0)+50>>1]|0)==(e[(c[w>>2]|0)+50>>1]|0)){c[ea>>2]=0;while(1){if((c[ea>>2]|0)>=(e[(c[da>>2]|0)+50>>1]|0))break;if((b[(c[(c[da>>2]|0)+4>>2]|0)+(c[ea>>2]<<1)>>1]|0)!=(b[(c[(c[w>>2]|0)+4>>2]|0)+(c[ea>>2]<<1)>>1]|0))break;c[F>>2]=c[(c[(c[da>>2]|0)+32>>2]|0)+(c[ea>>2]<<2)>>2];c[G>>2]=c[(c[(c[w>>2]|0)+32>>2]|0)+(c[ea>>2]<<2)>>2];if((c[F>>2]|0)!=(c[G>>2]|0)?(xc(c[F>>2]|0,c[G>>2]|0)|0)!=0:0)break;c[ea>>2]=(c[ea>>2]|0)+1}if((c[ea>>2]|0)==(e[(c[da>>2]|0)+50>>1]|0))break}c[da>>2]=c[(c[da>>2]|0)+20>>2]}if((d[(c[da>>2]|0)+54>>0]|0)==(d[(c[w>>2]|0)+54>>0]|0))break a;do if((d[(c[da>>2]|0)+54>>0]|0)!=10){if((d[(c[w>>2]|0)+54>>0]|0)==10)break;f=c[Y>>2]|0;c[D>>2]=0;Se(f,26240,D)}while(0);if((d[(c[da>>2]|0)+54>>0]|0)!=10)break a;a[(c[da>>2]|0)+54>>0]=a[(c[w>>2]|0)+54>>0]|0;break a}while(0);do if(a[(c[u>>2]|0)+145>>0]|0){c[E>>2]=gh((c[(c[w>>2]|0)+24>>2]|0)+24|0,c[c[w>>2]>>2]|0,c[w>>2]|0)|0;C=c[u>>2]|0;if(c[E>>2]|0){a[C+64>>0]=1;break a}f=C+24|0;c[f>>2]=c[f>>2]|2;if(!(c[t>>2]|0))break;c[(c[w>>2]|0)+44>>2]=c[(c[u>>2]|0)+140>>2]}else{if(c[(c[Y>>2]|0)+64>>2]|0)break;if(!((c[t>>2]|0)!=0?1:(d[(c[A>>2]|0)+44>>0]&32|0)==0))break;g=(c[Y>>2]|0)+72|0;f=(c[g>>2]|0)+1|0;c[g>>2]=f;c[aa>>2]=f;c[ca>>2]=dp(c[Y>>2]|0)|0;if(!(c[ca>>2]|0))break a;pp(c[Y>>2]|0,1,c[C>>2]|0);fp(c[ca>>2]|0,120,c[C>>2]|0,c[aa>>2]|0)|0;if(c[H>>2]|0){c[N>>2]=(c[(c[Y>>2]|0)+504>>2]|0)-(c[c[M>>2]>>2]|0)+(c[(c[Y>>2]|0)+508>>2]|0);if((a[(c[c[M>>2]>>2]|0)+((c[N>>2]|0)-1)>>0]|0)==59)c[N>>2]=(c[N>>2]|0)+ -1;f=c[u>>2]|0;h=c[N>>2]|0;g=c[c[M>>2]>>2]|0;c[D>>2]=(c[B>>2]|0)==0?1216:26312;c[D+4>>2]=h;c[D+8>>2]=g;c[O>>2]=Te(f,26288,D)|0}else c[O>>2]=0;f=c[Y>>2]|0;l=(c[C>>2]|0)==1?14904:14928;k=c[c[w>>2]>>2]|0;j=c[c[A>>2]>>2]|0;h=c[aa>>2]|0;g=c[O>>2]|0;c[D>>2]=c[(c[(c[u>>2]|0)+16>>2]|0)+(c[C>>2]<<4)>>2];c[D+4>>2]=l;c[D+8>>2]=k;c[D+12>>2]=j;c[D+16>>2]=h;c[D+20>>2]=g;cp(f,26320,D);Xb(c[u>>2]|0,c[O>>2]|0);if(!(c[t>>2]|0))break;os(c[Y>>2]|0,c[w>>2]|0,c[aa>>2]|0);ep(c[Y>>2]|0,c[C>>2]|0);h=c[ca>>2]|0;g=c[C>>2]|0;f=c[u>>2]|0;c[D>>2]=c[c[w>>2]>>2];gp(h,g,Te(f,26368,D)|0);Ir(c[ca>>2]|0,142,0)|0}while(0);if(!((c[t>>2]|0)==0?1:(d[(c[u>>2]|0)+145>>0]|0)!=0))break;do if((c[B>>2]|0)!=5)y=121;else{if(!(c[(c[A>>2]|0)+8>>2]|0)){y=121;break}if((d[(c[(c[A>>2]|0)+8>>2]|0)+54>>0]|0)==5){y=121;break}c[z>>2]=c[(c[A>>2]|0)+8>>2];while(1){if(c[(c[z>>2]|0)+20>>2]|0)B=(d[(c[(c[z>>2]|0)+20>>2]|0)+54>>0]|0)!=5;else B=0;A=c[(c[z>>2]|0)+20>>2]|0;if(!B)break;c[z>>2]=A}c[(c[w>>2]|0)+20>>2]=A;c[(c[z>>2]|0)+20>>2]=c[w>>2]}while(0);if((y|0)==121){c[(c[w>>2]|0)+20>>2]=c[(c[A>>2]|0)+8>>2];c[(c[A>>2]|0)+8>>2]=c[w>>2]}c[q>>2]=c[w>>2];c[w>>2]=0}}}while(0);if(!(c[w>>2]|0)){f=c[u>>2]|0;g=c[v>>2]|0;wn(f,g);g=c[u>>2]|0;f=c[x>>2]|0;sn(g,f);f=c[u>>2]|0;g=c[t>>2]|0;vn(f,g);g=c[u>>2]|0;f=c[r>>2]|0;Xb(g,f);f=c[q>>2]|0;i=s;return f|0}ly(c[u>>2]|0,c[w>>2]|0);f=c[u>>2]|0;g=c[v>>2]|0;wn(f,g);g=c[u>>2]|0;f=c[x>>2]|0;sn(g,f);f=c[u>>2]|0;g=c[t>>2]|0;vn(f,g);g=c[u>>2]|0;f=c[r>>2]|0;Xb(g,f);f=c[q>>2]|0;i=s;return f|0}function Wn(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;j=i;i=i+16|0;f=j+12|0;h=j+8|0;g=j+4|0;k=j;c[f>>2]=b;c[h>>2]=e;c[g>>2]=c[(c[f>>2]|0)+484>>2];c[k>>2]=c[c[f>>2]>>2];if(((c[g>>2]|0)!=0?(a[(c[f>>2]|0)+451>>0]|0)==0:0)?(tg(c[(c[(c[k>>2]|0)+16>>2]|0)+(d[(c[k>>2]|0)+144>>0]<<4)+4>>2]|0)|0)==0:0){b=eo(c[f>>2]|0,c[(c[g>>2]|0)+24>>2]|0,c[h>>2]|0)|0;c[(c[g>>2]|0)+24>>2]=b;if(!(c[(c[f>>2]|0)+324>>2]|0)){i=j;return}fo(c[f>>2]|0,c[(c[g>>2]|0)+24>>2]|0,(c[f>>2]|0)+320|0,1);i=j;return}wn(c[c[f>>2]>>2]|0,c[h>>2]|0);i=j;return}function Xn(e,f,g,h,j){e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;p=i;i=i+80|0;u=p;q=p+68|0;n=p+64|0;C=p+60|0;o=p+56|0;k=p+52|0;w=p+48|0;m=p+44|0;x=p+40|0;s=p+36|0;B=p+32|0;v=p+28|0;z=p+24|0;t=p+20|0;A=p+16|0;y=p+12|0;r=p+8|0;c[q>>2]=e;c[n>>2]=f;c[C>>2]=g;c[o>>2]=h;c[k>>2]=j;c[w>>2]=c[c[q>>2]>>2];c[m>>2]=0;c[s>>2]=c[(c[q>>2]|0)+484>>2];a:do if((c[s>>2]|0)!=0?(d[(c[q>>2]|0)+451>>0]|0)==0:0){if(!(c[n>>2]|0)){c[A>>2]=(b[(c[s>>2]|0)+38>>1]|0)-1;if((c[A>>2]|0)<0)break;if((c[o>>2]|0)!=0?(c[c[o>>2]>>2]|0)!=1:0){e=c[q>>2]|0;f=c[C>>2]|0;c[u>>2]=c[(c[(c[s>>2]|0)+4>>2]|0)+((c[A>>2]|0)*24|0)>>2];c[u+4>>2]=f;Se(e,25736,u);break}c[z>>2]=1}else{if((c[o>>2]|0)!=0?(c[c[o>>2]>>2]|0)!=(c[c[n>>2]>>2]|0):0){Se(c[q>>2]|0,25800,u);break}c[z>>2]=c[c[n>>2]>>2]}c[B>>2]=44+((c[z>>2]|0)-1<<3)+(c[(c[C>>2]|0)+4>>2]|0)+1;b:do if(c[o>>2]|0){c[v>>2]=0;while(1){if((c[v>>2]|0)>=(c[c[o>>2]>>2]|0))break b;e=(Mb(c[(c[(c[o>>2]|0)+4>>2]|0)+((c[v>>2]|0)*20|0)+4>>2]|0)|0)+1|0;c[B>>2]=(c[B>>2]|0)+e;c[v>>2]=(c[v>>2]|0)+1}}while(0);e=c[B>>2]|0;c[m>>2]=se(c[w>>2]|0,e,((e|0)<0)<<31>>31)|0;if(c[m>>2]|0){c[c[m>>2]>>2]=c[s>>2];c[(c[m>>2]|0)+4>>2]=c[(c[s>>2]|0)+16>>2];c[t>>2]=(c[m>>2]|0)+36+(c[z>>2]<<3);c[(c[m>>2]|0)+8>>2]=c[t>>2];dF(c[t>>2]|0,c[c[C>>2]>>2]|0,c[(c[C>>2]|0)+4>>2]|0)|0;a[(c[t>>2]|0)+(c[(c[C>>2]|0)+4>>2]|0)>>0]=0;sm(c[t>>2]|0)|0;c[t>>2]=(c[t>>2]|0)+((c[(c[C>>2]|0)+4>>2]|0)+1);c[(c[m>>2]|0)+20>>2]=c[z>>2];c:do if(!(c[n>>2]|0))c[(c[m>>2]|0)+36>>2]=(b[(c[s>>2]|0)+38>>1]|0)-1;else{c[v>>2]=0;while(1){if((c[v>>2]|0)>=(c[z>>2]|0))break c;c[y>>2]=0;while(1){if((c[y>>2]|0)>=(b[(c[s>>2]|0)+38>>1]|0))break;e=(xc(c[(c[(c[s>>2]|0)+4>>2]|0)+((c[y>>2]|0)*24|0)>>2]|0,c[(c[(c[n>>2]|0)+4>>2]|0)+((c[v>>2]|0)*20|0)+4>>2]|0)|0)==0;A=c[y>>2]|0;if(e){l=25;break}c[y>>2]=A+1}if((l|0)==25){l=0;c[(c[m>>2]|0)+36+(c[v>>2]<<3)>>2]=A}if((c[y>>2]|0)>=(b[(c[s>>2]|0)+38>>1]|0))break;c[v>>2]=(c[v>>2]|0)+1}e=c[q>>2]|0;c[u>>2]=c[(c[(c[n>>2]|0)+4>>2]|0)+((c[v>>2]|0)*20|0)+4>>2];Se(e,25896,u);break a}while(0);d:do if(c[o>>2]|0){c[v>>2]=0;while(1){if((c[v>>2]|0)>=(c[z>>2]|0))break d;c[r>>2]=Mb(c[(c[(c[o>>2]|0)+4>>2]|0)+((c[v>>2]|0)*20|0)+4>>2]|0)|0;c[(c[m>>2]|0)+36+(c[v>>2]<<3)+4>>2]=c[t>>2];dF(c[t>>2]|0,c[(c[(c[o>>2]|0)+4>>2]|0)+((c[v>>2]|0)*20|0)+4>>2]|0,c[r>>2]|0)|0;a[(c[t>>2]|0)+(c[r>>2]|0)>>0]=0;c[t>>2]=(c[t>>2]|0)+((c[r>>2]|0)+1);c[v>>2]=(c[v>>2]|0)+1}}while(0);a[(c[m>>2]|0)+24>>0]=0;a[(c[m>>2]|0)+25>>0]=c[k>>2];a[(c[m>>2]|0)+26>>0]=c[k>>2]>>8;c[x>>2]=gh((c[(c[s>>2]|0)+68>>2]|0)+56|0,c[(c[m>>2]|0)+8>>2]|0,c[m>>2]|0)|0;if((c[x>>2]|0)==(c[m>>2]|0)){a[(c[w>>2]|0)+64>>0]=1;break}if(c[x>>2]|0){c[(c[m>>2]|0)+12>>2]=c[x>>2];c[(c[x>>2]|0)+16>>2]=c[m>>2]}c[(c[s>>2]|0)+16>>2]=c[m>>2];c[m>>2]=0}}while(0);Xb(c[w>>2]|0,c[m>>2]|0);sn(c[w>>2]|0,c[n>>2]|0);sn(c[w>>2]|0,c[o>>2]|0);i=p;return}function Yn(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;i=i+16|0;j=e+12|0;f=e+8|0;h=e+4|0;g=e;c[j>>2]=b;c[f>>2]=d;b=c[(c[j>>2]|0)+484>>2]|0;c[h>>2]=b;if(!b){i=e;return}j=c[(c[h>>2]|0)+16>>2]|0;c[g>>2]=j;if(!j){i=e;return}a[(c[g>>2]|0)+24>>0]=c[f>>2];i=e;return}function Zn(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;j=i;i=i+32|0;k=j+24|0;m=j+20|0;g=j+16|0;h=j+12|0;f=j+8|0;l=j+4|0;e=j;c[k>>2]=a;c[m>>2]=d;a=c[(c[k>>2]|0)+484>>2]|0;c[g>>2]=a;if(!a){i=j;return}c[h>>2]=(b[(c[g>>2]|0)+38>>1]|0)-1;c[l>>2]=c[c[k>>2]>>2];c[f>>2]=Zo(c[l>>2]|0,c[m>>2]|0)|0;if(!(c[f>>2]|0)){i=j;return}a=(Or(c[k>>2]|0,c[f>>2]|0)|0)!=0;d=c[l>>2]|0;if(!a){Xb(d,c[f>>2]|0);i=j;return}Xb(d,c[(c[(c[g>>2]|0)+4>>2]|0)+((c[h>>2]|0)*24|0)+16>>2]|0);c[(c[(c[g>>2]|0)+4>>2]|0)+((c[h>>2]|0)*24|0)+16>>2]=c[f>>2];c[e>>2]=c[(c[g>>2]|0)+8>>2];while(1){if(!(c[e>>2]|0))break;if((b[c[(c[e>>2]|0)+4>>2]>>1]|0)==(c[h>>2]|0))c[c[(c[e>>2]|0)+32>>2]>>2]=c[(c[(c[g>>2]|0)+4>>2]|0)+((c[h>>2]|0)*24|0)+16>>2];c[e>>2]=c[(c[e>>2]|0)+20>>2]}i=j;return}function _n(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;k=i;i=i+64|0;o=k;l=k+48|0;j=k+44|0;p=k+40|0;m=k+36|0;n=k+32|0;u=k+28|0;q=k+24|0;t=k+20|0;r=k+16|0;v=k+12|0;h=k+8|0;s=k+4|0;c[l>>2]=b;c[j>>2]=e;c[p>>2]=f;c[m>>2]=g;c[q>>2]=c[c[l>>2]>>2];do if(!(a[(c[q>>2]|0)+64>>0]|0)){if(c[m>>2]|0){b=(c[q>>2]|0)+67|0;a[b>>0]=(a[b>>0]|0)+1<<24>>24}c[n>>2]=np(c[l>>2]|0,c[p>>2]|0,(c[j>>2]|0)+8|0)|0;if(c[m>>2]|0){b=(c[q>>2]|0)+67|0;a[b>>0]=(a[b>>0]|0)+ -1<<24>>24}if(!(c[n>>2]|0)){if(!(c[m>>2]|0))break;At(c[l>>2]|0,c[(c[j>>2]|0)+12>>2]|0);break}c[t>>2]=Ve(c[q>>2]|0,c[(c[n>>2]|0)+68>>2]|0)|0;if((d[(c[n>>2]|0)+44>>0]&16|0)!=0?(Qp(c[l>>2]|0,c[n>>2]|0)|0)!=0:0)break;c[v>>2]=(c[t>>2]|0)==1?14904:14928;c[h>>2]=c[(c[(c[q>>2]|0)+16>>2]|0)+(c[t>>2]<<4)>>2];c[s>>2]=0;if(!(ap(c[l>>2]|0,9,c[v>>2]|0,0,c[h>>2]|0)|0)){do if(c[p>>2]|0)if((c[t>>2]|0)==1){c[r>>2]=15;break}else{c[r>>2]=17;break}else{if(d[(c[n>>2]|0)+44>>0]&16){c[r>>2]=30;c[s>>2]=c[(c[(Rp(c[q>>2]|0,c[n>>2]|0)|0)+4>>2]|0)+4>>2];break}if((c[t>>2]|0)==1){c[r>>2]=13;break}else{c[r>>2]=11;break}}while(0);if((ap(c[l>>2]|0,c[r>>2]|0,c[c[n>>2]>>2]|0,c[s>>2]|0,c[h>>2]|0)|0)==0?(ap(c[l>>2]|0,9,c[c[n>>2]>>2]|0,0,c[h>>2]|0)|0)==0:0){if((Lb(c[c[n>>2]>>2]|0,15144,7)|0)==0?(Lb(c[c[n>>2]>>2]|0,25512,11)|0)!=0:0){b=c[l>>2]|0;c[o>>2]=c[c[n>>2]>>2];Se(b,25528,o);break}if((c[p>>2]|0)!=0?(c[(c[n>>2]|0)+12>>2]|0)==0:0){b=c[l>>2]|0;c[o>>2]=c[c[n>>2]>>2];Se(b,25560,o);break}if((c[p>>2]|0)==0?(c[(c[n>>2]|0)+12>>2]|0)!=0:0){b=c[l>>2]|0;c[o>>2]=c[c[n>>2]>>2];Se(b,25600,o);break}c[u>>2]=dp(c[l>>2]|0)|0;if(c[u>>2]|0){pp(c[l>>2]|0,1,c[t>>2]|0);iu(c[l>>2]|0,c[t>>2]|0,18168,c[c[n>>2]>>2]|0);dy(c[l>>2]|0,c[j>>2]|0,c[n>>2]|0);ey(c[l>>2]|0,c[n>>2]|0,c[t>>2]|0,c[p>>2]|0)}}}}while(0);vn(c[q>>2]|0,c[j>>2]|0);i=k;return}function $n(b,e,f,g,h,j,k){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;p=i;i=i+96|0;o=p+84|0;s=p+80|0;u=p+76|0;v=p+72|0;t=p+68|0;z=p+64|0;A=p+60|0;q=p+56|0;m=p+52|0;n=p+48|0;l=p+40|0;y=p+16|0;w=p+12|0;x=p+8|0;r=p+4|0;c[o>>2]=b;c[s>>2]=e;c[u>>2]=f;c[v>>2]=g;c[t>>2]=h;c[z>>2]=j;c[A>>2]=k;c[w>>2]=0;c[r>>2]=c[c[o>>2]>>2];k=c[o>>2]|0;if((c[(c[o>>2]|0)+440>>2]|0)>0){Se(k,25464,p);tn(c[r>>2]|0,c[t>>2]|0);i=p;return}Mn(k,c[u>>2]|0,c[v>>2]|0,c[z>>2]|0,1,0,c[A>>2]|0);c[q>>2]=c[(c[o>>2]|0)+484>>2];if((c[q>>2]|0)!=0?(c[(c[o>>2]|0)+64>>2]|0)==0:0){Er(c[o>>2]|0,c[u>>2]|0,c[v>>2]|0,w)|0;c[x>>2]=Ve(c[r>>2]|0,c[(c[q>>2]|0)+68>>2]|0)|0;Gt(y,c[o>>2]|0,c[x>>2]|0,25504,c[w>>2]|0);b=(It(y,c[t>>2]|0)|0)!=0;v=c[r>>2]|0;u=c[t>>2]|0;if(b){tn(v,u);i=p;return}b=Wp(v,u,1)|0;c[(c[q>>2]|0)+12>>2]=b;tn(c[r>>2]|0,c[t>>2]|0);if(a[(c[r>>2]|0)+64>>0]|0){i=p;return}if(!(a[(c[r>>2]|0)+145>>0]|0))Qp(c[o>>2]|0,c[q>>2]|0)|0;b=(c[o>>2]|0)+504|0;c[l+0>>2]=c[b+0>>2];c[l+4>>2]=c[b+4>>2];if((a[c[l>>2]>>0]|0)!=0?(a[c[l>>2]>>0]|0)!=59:0)c[l>>2]=(c[l>>2]|0)+(c[l+4>>2]|0);c[l+4>>2]=0;c[m>>2]=(c[l>>2]|0)-(c[c[s>>2]>>2]|0);c[n>>2]=c[c[s>>2]>>2];while(1){if((c[m>>2]|0)>0)r=(d[1224+(d[(c[n>>2]|0)+((c[m>>2]|0)-1)>>0]|0)>>0]&1|0)!=0;else r=0;q=c[m>>2]|0;if(!r)break;c[m>>2]=q+ -1}c[l>>2]=(c[n>>2]|0)+(q-1);c[l+4>>2]=1;Nn(c[o>>2]|0,0,l,0,0);i=p;return}tn(c[r>>2]|0,c[t>>2]|0);i=p;return}function ao(f,g,h){f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0;W=i;i=i+400|0;T=W+384|0;o=W+380|0;n=W+376|0;l=W+372|0;u=W+368|0;I=W+364|0;N=W+360|0;t=W+356|0;ra=W+352|0;r=W+348|0;q=W+344|0;ma=W+340|0;y=W+336|0;z=W+332|0;w=W+328|0;A=W+316|0;p=W+288|0;V=W+240|0;L=W+236|0;m=W+232|0;v=W+228|0;pa=W+224|0;ua=W+204|0;ta=W+200|0;ya=W+196|0;za=W+192|0;sa=W+188|0;qa=W+184|0;va=W+180|0;wa=W+176|0;xa=W+388|0;ba=W+144|0;S=W+140|0;R=W+136|0;Y=W+132|0;Z=W+128|0;M=W+124|0;j=W+120|0;O=W+116|0;P=W+112|0;Q=W+108|0;oa=W+104|0;na=W+100|0;k=W+96|0;x=W+92|0;$=W+88|0;_=W+84|0;s=W+80|0;B=W+76|0;X=W+72|0;U=W+68|0;aa=W+64|0;H=W+60|0;G=W+56|0;J=W+52|0;K=W+48|0;F=W+44|0;E=W+40|0;C=W+36|0;ea=W+32|0;fa=W+28|0;la=W+24|0;ka=W+20|0;ca=W+16|0;ja=W+12|0;ia=W+8|0;ha=W+4|0;ga=W;da=W+390|0;c[o>>2]=f;c[n>>2]=g;c[l>>2]=h;c[w>>2]=1;c[v>>2]=c[(c[o>>2]|0)+464>>2];g=(c[o>>2]|0)+468|0;f=c[g>>2]|0;c[g>>2]=f+1;c[(c[o>>2]|0)+464>>2]=f;c[m>>2]=c[c[o>>2]>>2];if(((c[n>>2]|0)!=0?(d[(c[m>>2]|0)+64>>0]|0)==0:0)?(c[(c[o>>2]|0)+64>>2]|0)==0:0){if(ap(c[o>>2]|0,21,0,0,0)|0){c[T>>2]=1;f=c[T>>2]|0;i=W;return f|0}g=V+0|0;h=g+48|0;do{c[g>>2]=0;g=g+4|0}while((g|0)<(h|0));if((d[c[l>>2]>>0]|0)<=8){sn(c[m>>2]|0,c[(c[n>>2]|0)+48>>2]|0);c[(c[n>>2]|0)+48>>2]=0;f=(c[n>>2]|0)+6|0;b[f>>1]=e[f>>1]&-2}Zp(c[o>>2]|0,c[n>>2]|0,0);c[p+0>>2]=0;c[p+4>>2]=0;c[p+8>>2]=0;c[p+12>>2]=0;c[p+16>>2]=0;c[p+20>>2]=0;c[p+24>>2]=0;c[p>>2]=c[(c[n>>2]|0)+48>>2];c[q>>2]=c[(c[n>>2]|0)+32>>2];c[r>>2]=c[c[n>>2]>>2];a:do if((((c[(c[o>>2]|0)+64>>2]|0)==0?(d[(c[m>>2]|0)+64>>0]|0)==0:0)?(c[ra>>2]=(e[(c[n>>2]|0)+6>>1]&4|0)!=0&1,c[t>>2]=dp(c[o>>2]|0)|0,(c[t>>2]|0)!=0):0)?(nx(c[o>>2]|0,c[l>>2]|0,c[c[r>>2]>>2]|0)|0)==0:0){c[u>>2]=0;while(1){if(c[(c[n>>2]|0)+52>>2]|0)break;if((c[u>>2]|0)>=(c[c[q>>2]>>2]|0))break;c[pa>>2]=(c[q>>2]|0)+8+((c[u>>2]|0)*72|0);c[ta>>2]=c[(c[pa>>2]|0)+20>>2];do if(c[ta>>2]|0){if(c[(c[pa>>2]|0)+24>>2]|0){if((d[(c[pa>>2]|0)+37>>0]|0)>>>2&1)break;fp(c[t>>2]|0,17,c[(c[pa>>2]|0)+28>>2]|0,c[(c[pa>>2]|0)+24>>2]|0)|0;break}g=ox(c[n>>2]|0)|0;f=(c[o>>2]|0)+460|0;c[f>>2]=(c[f>>2]|0)+g;c[ya>>2]=(e[(c[ta>>2]|0)+6>>1]&4|0)!=0&1;b:do if(px(c[o>>2]|0,c[n>>2]|0,c[u>>2]|0,c[ra>>2]|0,c[ya>>2]|0)|0){if(c[ya>>2]|0){c[ra>>2]=1;f=(c[n>>2]|0)+6|0;b[f>>1]=e[f>>1]|4}c[u>>2]=-1}else{do if((c[c[q>>2]>>2]|0)==1){if(e[(c[m>>2]|0)+60>>1]&256)break;c[za>>2]=(Mr(c[t>>2]|0)|0)+1;g=(c[o>>2]|0)+72|0;f=(c[g>>2]|0)+1|0;c[g>>2]=f;c[(c[pa>>2]|0)+28>>2]=f;ip(c[t>>2]|0,20,c[(c[pa>>2]|0)+28>>2]|0,0,c[za>>2]|0)|0;c[(c[pa>>2]|0)+24>>2]=c[za>>2];$s(ua,13,c[(c[pa>>2]|0)+28>>2]|0);a[(c[pa>>2]|0)+38>>0]=c[(c[o>>2]|0)+468>>2];ao(c[o>>2]|0,c[ta>>2]|0,ua)|0;f=(c[ta>>2]|0)+24|0;f=dq(c[f>>2]|0,c[f+4>>2]|0)|0;b[(c[(c[pa>>2]|0)+16>>2]|0)+28>>1]=f;f=(c[pa>>2]|0)+37|0;a[f>>0]=a[f>>0]&-5|4;c[(c[pa>>2]|0)+32>>2]=c[ua+8>>2];Ir(c[t>>2]|0,21,c[(c[pa>>2]|0)+28>>2]|0)|0;zp(c[t>>2]|0,(c[za>>2]|0)-1|0);qx(c[o>>2]|0);break b}while(0);c[qa>>2]=0;g=(c[o>>2]|0)+72|0;f=(c[g>>2]|0)+1|0;c[g>>2]=f;c[(c[pa>>2]|0)+28>>2]=f;c[sa>>2]=fp(c[t>>2]|0,25,0,c[(c[pa>>2]|0)+28>>2]|0)|0;c[(c[pa>>2]|0)+24>>2]=(c[sa>>2]|0)+1;if(!((d[(c[pa>>2]|0)+37>>0]|0)>>>1&1))c[qa>>2]=_s(c[o>>2]|0)|0;$s(ua,12,c[(c[pa>>2]|0)+40>>2]|0);a[(c[pa>>2]|0)+38>>0]=c[(c[o>>2]|0)+468>>2];ao(c[o>>2]|0,c[ta>>2]|0,ua)|0;f=(c[ta>>2]|0)+24|0;f=dq(c[f>>2]|0,c[f+4>>2]|0)|0;b[(c[(c[pa>>2]|0)+16>>2]|0)+28>>1]=f;if(c[qa>>2]|0)zp(c[t>>2]|0,c[qa>>2]|0);c[va>>2]=Ir(c[t>>2]|0,18,c[(c[pa>>2]|0)+28>>2]|0)|0;_e(c[t>>2]|0,c[sa>>2]|0,c[va>>2]|0);qx(c[o>>2]|0)}while(0);if(a[(c[m>>2]|0)+64>>0]|0)break a;g=ox(c[n>>2]|0)|0;f=(c[o>>2]|0)+460|0;c[f>>2]=(c[f>>2]|0)-g;c[q>>2]=c[(c[n>>2]|0)+32>>2];if((d[c[l>>2]>>0]|0)>8)c[p>>2]=c[(c[n>>2]|0)+48>>2]}while(0);c[u>>2]=(c[u>>2]|0)+1}c[r>>2]=c[c[n>>2]>>2];c[ma>>2]=c[(c[n>>2]|0)+36>>2];c[y>>2]=c[(c[n>>2]|0)+40>>2];c[z>>2]=c[(c[n>>2]|0)+44>>2];a[A>>0]=(e[(c[n>>2]|0)+6>>1]&1|0)!=0;if(c[(c[n>>2]|0)+52>>2]|0){c[w>>2]=rx(c[o>>2]|0,c[n>>2]|0,c[l>>2]|0)|0;c[(c[o>>2]|0)+464>>2]=c[v>>2];c[T>>2]=c[w>>2];f=c[T>>2]|0;i=W;return f|0}if((e[(c[n>>2]|0)+6>>1]&5|0)==1?(Eq(c[p>>2]|0,c[c[n>>2]>>2]|0,-1)|0)==0:0){f=(c[n>>2]|0)+6|0;b[f>>1]=e[f>>1]&-2;f=Jq(c[m>>2]|0,c[c[n>>2]>>2]|0,0)|0;c[(c[n>>2]|0)+40>>2]=f;c[y>>2]=c[(c[n>>2]|0)+40>>2];c[p>>2]=0}if(c[p>>2]|0){c[wa>>2]=sx(c[o>>2]|0,c[p>>2]|0,0,0)|0;g=(c[o>>2]|0)+68|0;f=c[g>>2]|0;c[g>>2]=f+1;c[p+8>>2]=f;c[p+20>>2]=hp(c[t>>2]|0,57,c[p+8>>2]|0,(c[c[p>>2]>>2]|0)+1+(c[c[r>>2]>>2]|0)|0,0,c[wa>>2]|0,-6)|0}else c[p+20>>2]=-1;if((d[c[l>>2]>>0]|0)==12)fp(c[t>>2]|0,57,c[(c[l>>2]|0)+4>>2]|0,c[c[r>>2]>>2]|0)|0;c[L>>2]=Nr(c[t>>2]|0)|0;f=(c[n>>2]|0)+24|0;c[f>>2]=-1;c[f+4>>2]=2147483647;tx(c[o>>2]|0,c[n>>2]|0,c[L>>2]|0);if((c[(c[n>>2]|0)+8>>2]|0)==0?(c[p+20>>2]|0)>=0:0){a[(dt(c[t>>2]|0,c[p+20>>2]|0)|0)>>0]=58;f=p+24|0;a[f>>0]=d[f>>0]|1}if(e[(c[n>>2]|0)+6>>1]&1){f=(c[o>>2]|0)+68|0;g=c[f>>2]|0;c[f>>2]=g+1;c[A+4>>2]=g;g=c[t>>2]|0;f=c[A+4>>2]|0;c[A+8>>2]=hp(g,57,f,0,0,sx(c[o>>2]|0,c[c[n>>2]>>2]|0,0,0)|0,-6)|0;Xe(c[t>>2]|0,8);a[A+1>>0]=3}else a[A+1>>0]=0;if((c[ra>>2]|0)==0&(c[y>>2]|0)==0){b[xa>>1]=(d[A>>0]|0)!=0?1024:0;c[N>>2]=Hu(c[o>>2]|0,c[q>>2]|0,c[ma>>2]|0,c[p>>2]|0,c[c[n>>2]>>2]|0,b[xa>>1]|0,0)|0;if(!(c[N>>2]|0))break;g=ux(c[N>>2]|0)|0;za=D;f=(c[n>>2]|0)+24|0;h=c[f+4>>2]|0;if(za>>>0>>0|((za|0)==(h|0)?g>>>0<(c[f>>2]|0)>>>0:0)){g=ux(c[N>>2]|0)|0;f=(c[n>>2]|0)+24|0;c[f>>2]=g;c[f+4>>2]=D}do if(d[A>>0]|0){if(!(vx(c[N>>2]|0)|0))break;a[A+1>>0]=vx(c[N>>2]|0)|0}while(0);do if(c[p>>2]|0){c[p+4>>2]=wx(c[N>>2]|0)|0;if((c[p+4>>2]|0)!=(c[c[p>>2]>>2]|0))break;c[p>>2]=0}while(0);do if((c[p+20>>2]|0)>=0){if(c[p>>2]|0)break;cf(c[t>>2]|0,c[p+20>>2]|0)}while(0);ya=c[o>>2]|0;za=c[n>>2]|0;h=c[r>>2]|0;g=c[l>>2]|0;f=yx(c[N>>2]|0)|0;xx(ya,za,h,-1,p,A,g,f,zx(c[N>>2]|0)|0);Iu(c[N>>2]|0)}else{c[O>>2]=0;c[P>>2]=0;c[Q>>2]=0;pa=c[n>>2]|0;do if(c[y>>2]|0){c[oa>>2]=c[c[pa>>2]>>2];c[na>>2]=c[(c[c[n>>2]>>2]|0)+4>>2];while(1){if((c[oa>>2]|0)<=0)break;b[(c[na>>2]|0)+18>>1]=0;c[oa>>2]=(c[oa>>2]|0)+ -1;c[na>>2]=(c[na>>2]|0)+20}c[oa>>2]=c[c[y>>2]>>2];c[na>>2]=c[(c[y>>2]|0)+4>>2];while(1){if((c[oa>>2]|0)<=0)break;b[(c[na>>2]|0)+18>>1]=0;c[oa>>2]=(c[oa>>2]|0)+ -1;c[na>>2]=(c[na>>2]|0)+20}f=(c[n>>2]|0)+24|0;g=c[f+4>>2]|0;if(!(g>>>0>0|(g|0)==0&(c[f>>2]|0)>>>0>100))break;f=(c[n>>2]|0)+24|0;c[f>>2]=100;c[f+4>>2]=0}else{f=pa+24|0;c[f>>2]=1;c[f+4>>2]=0}while(0);if(!(Eq(c[y>>2]|0,c[p>>2]|0,-1)|0))c[Q>>2]=1;c[j>>2]=Nr(c[t>>2]|0)|0;c[ba+0>>2]=0;c[ba+4>>2]=0;c[ba+8>>2]=0;c[ba+12>>2]=0;c[ba+16>>2]=0;c[ba+20>>2]=0;c[ba+24>>2]=0;c[ba+28>>2]=0;c[ba>>2]=c[o>>2];c[ba+4>>2]=c[q>>2];c[ba+12>>2]=V;c[V+16>>2]=(c[(c[o>>2]|0)+72>>2]|0)+1;if(c[y>>2]|0)na=c[c[y>>2]>>2]|0;else na=0;c[V+12>>2]=na;c[V+24>>2]=c[y>>2];Ax(ba,c[r>>2]|0);Ax(ba,c[p>>2]|0);if(c[z>>2]|0)Bx(ba,c[z>>2]|0);c[V+36>>2]=c[V+32>>2];c[u>>2]=0;while(1){if((c[u>>2]|0)>=(c[V+44>>2]|0))break;f=ba+28|0;b[f>>1]=e[f>>1]|8;Ax(ba,c[(c[(c[V+40>>2]|0)+(c[u>>2]<<4)>>2]|0)+20>>2]|0);f=ba+28|0;b[f>>1]=e[f>>1]&-9;c[u>>2]=(c[u>>2]|0)+1}c[V+20>>2]=c[(c[o>>2]|0)+72>>2];if(a[(c[m>>2]|0)+64>>0]|0)break;if(c[y>>2]|0){g=(c[o>>2]|0)+68|0;f=c[g>>2]|0;c[g>>2]=f+1;c[V+4>>2]=f;c[k>>2]=sx(c[o>>2]|0,c[y>>2]|0,0,0)|0;c[X>>2]=hp(c[t>>2]|0,58,c[V+4>>2]|0,c[V+12>>2]|0,0,c[k>>2]|0,-6)|0;f=(c[o>>2]|0)+72|0;g=(c[f>>2]|0)+1|0;c[f>>2]=g;c[Y>>2]=g;g=(c[o>>2]|0)+72|0;f=(c[g>>2]|0)+1|0;c[g>>2]=f;c[Z>>2]=f;f=(c[o>>2]|0)+72|0;g=(c[f>>2]|0)+1|0;c[f>>2]=g;c[_>>2]=g;c[$>>2]=Nr(c[t>>2]|0)|0;g=(c[o>>2]|0)+72|0;f=(c[g>>2]|0)+1|0;c[g>>2]=f;c[aa>>2]=f;c[U>>2]=Nr(c[t>>2]|0)|0;c[S>>2]=(c[(c[o>>2]|0)+72>>2]|0)+1;f=(c[o>>2]|0)+72|0;c[f>>2]=(c[f>>2]|0)+(c[c[y>>2]>>2]|0);c[R>>2]=(c[(c[o>>2]|0)+72>>2]|0)+1;f=(c[o>>2]|0)+72|0;c[f>>2]=(c[f>>2]|0)+(c[c[y>>2]>>2]|0);fp(c[t>>2]|0,25,0,c[Z>>2]|0)|0;fp(c[t>>2]|0,25,0,c[Y>>2]|0)|0;ip(c[t>>2]|0,28,0,c[S>>2]|0,(c[S>>2]|0)+(c[c[y>>2]>>2]|0)-1|0)|0;fp(c[t>>2]|0,17,c[aa>>2]|0,c[U>>2]|0)|0;c[N>>2]=Hu(c[o>>2]|0,c[q>>2]|0,c[ma>>2]|0,c[y>>2]|0,0,(256|((c[Q>>2]|0)!=0?2048:0))&65535,0)|0;if(!(c[N>>2]|0))break;f=wx(c[N>>2]|0)|0;if((f|0)==(c[c[y>>2]>>2]|0))c[M>>2]=0;else{if(d[A>>0]|0)ba=(e[(c[n>>2]|0)+6>>1]&1|0)==0;else ba=0;Cx(c[o>>2]|0,ba?24832:24848);c[M>>2]=1;c[K>>2]=c[c[y>>2]>>2];c[J>>2]=c[K>>2];c[I>>2]=c[K>>2];c[u>>2]=0;while(1){if((c[u>>2]|0)>=(c[V+32>>2]|0))break;if((c[(c[V+28>>2]|0)+((c[u>>2]|0)*24|0)+12>>2]|0)>=(c[I>>2]|0)){c[J>>2]=(c[J>>2]|0)+1;c[I>>2]=(c[I>>2]|0)+1}c[u>>2]=(c[u>>2]|0)+1}c[H>>2]=ys(c[o>>2]|0,c[J>>2]|0)|0;cu(c[o>>2]|0);Ws(c[o>>2]|0,c[y>>2]|0,c[H>>2]|0,0)|0;c[I>>2]=c[K>>2];c[u>>2]=0;while(1){if((c[u>>2]|0)>=(c[V+32>>2]|0))break;c[F>>2]=(c[V+28>>2]|0)+((c[u>>2]|0)*24|0);if((c[(c[F>>2]|0)+12>>2]|0)>=(c[I>>2]|0)){c[E>>2]=(c[I>>2]|0)+(c[H>>2]|0);c[C>>2]=Rs(c[o>>2]|0,c[c[F>>2]>>2]|0,c[(c[F>>2]|0)+8>>2]|0,c[(c[F>>2]|0)+4>>2]|0,c[E>>2]|0,0)|0;if((c[E>>2]|0)!=(c[C>>2]|0))fp(c[t>>2]|0,34,c[C>>2]|0,c[E>>2]|0)|0;c[I>>2]=(c[I>>2]|0)+1}c[u>>2]=(c[u>>2]|0)+1}c[G>>2]=kp(c[o>>2]|0)|0;ip(c[t>>2]|0,49,c[H>>2]|0,c[J>>2]|0,c[G>>2]|0)|0;fp(c[t>>2]|0,109,c[V+4>>2]|0,c[G>>2]|0)|0;lp(c[o>>2]|0,c[G>>2]|0);Bs(c[o>>2]|0,c[H>>2]|0,c[J>>2]|0);Iu(c[N>>2]|0);g=(c[o>>2]|0)+68|0;f=c[g>>2]|0;c[g>>2]=f+1;c[O>>2]=f;c[V+8>>2]=f;c[P>>2]=kp(c[o>>2]|0)|0;ip(c[t>>2]|0,60,c[O>>2]|0,c[P>>2]|0,c[J>>2]|0)|0;fp(c[t>>2]|0,106,c[V+4>>2]|0,c[j>>2]|0)|0;a[V+1>>0]=1;cu(c[o>>2]|0)}do if(c[Q>>2]|0){if(e[(c[m>>2]|0)+60>>1]&4)break;if((c[M>>2]|0)==0?(Dx(c[N>>2]|0)|0)==0:0)break;c[p>>2]=0;cf(c[t>>2]|0,c[p+20>>2]|0)}while(0);c[B>>2]=Mr(c[t>>2]|0)|0;cu(c[o>>2]|0);if(c[M>>2]|0)ip(c[t>>2]|0,100,c[V+4>>2]|0,c[P>>2]|0,c[O>>2]|0)|0;c[I>>2]=0;while(1){if((c[I>>2]|0)>=(c[c[y>>2]>>2]|0))break;if(c[M>>2]|0)ip(c[t>>2]|0,47,c[O>>2]|0,c[I>>2]|0,(c[R>>2]|0)+(c[I>>2]|0)|0)|0;else{a[V>>0]=1;Os(c[o>>2]|0,c[(c[(c[y>>2]|0)+4>>2]|0)+((c[I>>2]|0)*20|0)>>2]|0,(c[R>>2]|0)+(c[I>>2]|0)|0)}c[I>>2]=(c[I>>2]|0)+1}za=c[t>>2]|0;h=c[S>>2]|0;g=c[R>>2]|0;f=c[c[y>>2]>>2]|0;hp(za,42,h,g,f,Yr(c[k>>2]|0)|0,-6)|0;c[x>>2]=Mr(c[t>>2]|0)|0;ip(c[t>>2]|0,43,(c[x>>2]|0)+1|0,0,(c[x>>2]|0)+1|0)|0;Ex(c[o>>2]|0,c[R>>2]|0,c[S>>2]|0,c[c[y>>2]>>2]|0);fp(c[t>>2]|0,17,c[_>>2]|0,c[$>>2]|0)|0;fp(c[t>>2]|0,137,c[Z>>2]|0,c[j>>2]|0)|0;fp(c[t>>2]|0,17,c[aa>>2]|0,c[U>>2]|0)|0;zp(c[t>>2]|0,c[x>>2]|0);Fx(c[o>>2]|0,V);fp(c[t>>2]|0,25,1,c[Y>>2]|0)|0;if(c[M>>2]|0)fp(c[t>>2]|0,5,c[V+4>>2]|0,c[B>>2]|0)|0;else{Iu(c[N>>2]|0);cf(c[t>>2]|0,c[X>>2]|0)}fp(c[t>>2]|0,17,c[_>>2]|0,c[$>>2]|0)|0;fp(c[t>>2]|0,16,0,c[j>>2]|0)|0;c[s>>2]=Mr(c[t>>2]|0)|0;fp(c[t>>2]|0,25,1,c[Z>>2]|0)|0;Ir(c[t>>2]|0,18,c[_>>2]|0)|0;Pr(c[t>>2]|0,c[$>>2]|0);c[$>>2]=Mr(c[t>>2]|0)|0;fp(c[t>>2]|0,137,c[Y>>2]|0,(c[$>>2]|0)+2|0)|0;Ir(c[t>>2]|0,18,c[_>>2]|0)|0;Gx(c[o>>2]|0,V);xs(c[o>>2]|0,c[z>>2]|0,(c[$>>2]|0)+1|0,16);xx(c[o>>2]|0,c[n>>2]|0,c[c[n>>2]>>2]|0,-1,p,A,c[l>>2]|0,(c[$>>2]|0)+1|0,c[s>>2]|0);Ir(c[t>>2]|0,18,c[_>>2]|0)|0;Pr(c[t>>2]|0,c[U>>2]|0);Hx(c[o>>2]|0,V);Ir(c[t>>2]|0,18,c[aa>>2]|0)|0}else{c[ea>>2]=0;f=Ix(c[n>>2]|0,V)|0;c[fa>>2]=f;if(f){c[la>>2]=Ve(c[c[o>>2]>>2]|0,c[(c[fa>>2]|0)+68>>2]|0)|0;g=(c[o>>2]|0)+68|0;f=c[g>>2]|0;c[g>>2]=f+1;c[ka>>2]=f;c[ja>>2]=0;c[ia>>2]=0;c[ha>>2]=c[(c[fa>>2]|0)+32>>2];qp(c[o>>2]|0,c[la>>2]|0);Jr(c[o>>2]|0,c[la>>2]|0,c[(c[fa>>2]|0)+32>>2]|0,0,c[c[fa>>2]>>2]|0);if(d[(c[fa>>2]|0)+44>>0]&32)c[ia>>2]=Zr(c[fa>>2]|0)|0;c[ca>>2]=c[(c[fa>>2]|0)+8>>2];while(1){if(!(c[ca>>2]|0))break;do if(!((d[(c[ca>>2]|0)+55>>0]|0)>>>2&1)){if((b[(c[ca>>2]|0)+48>>1]|0)>=(b[(c[fa>>2]|0)+42>>1]|0))break;if(c[(c[ca>>2]|0)+36>>2]|0)break;if((c[ia>>2]|0)!=0?(b[(c[ca>>2]|0)+48>>1]|0)>=(b[(c[ia>>2]|0)+48>>1]|0):0)break;c[ia>>2]=c[ca>>2]}while(0);c[ca>>2]=c[(c[ca>>2]|0)+20>>2]}if(c[ia>>2]|0){c[ha>>2]=c[(c[ia>>2]|0)+44>>2];c[ja>>2]=Wr(c[o>>2]|0,c[ia>>2]|0)|0}We(c[t>>2]|0,54,c[ka>>2]|0,c[ha>>2]|0,c[la>>2]|0,1)|0;if(c[ja>>2]|0)bf(c[t>>2]|0,-1,c[ja>>2]|0,-6);fp(c[t>>2]|0,50,c[ka>>2]|0,c[(c[V+40>>2]|0)+8>>2]|0)|0;Ir(c[t>>2]|0,61,c[ka>>2]|0)|0;Jx(c[o>>2]|0,c[fa>>2]|0,c[ia>>2]|0)}else{c[ga>>2]=0;a[da>>0]=0;if(!(c[(c[n>>2]|0)+44>>2]|0))a[da>>0]=Kx(V,ga)|0;do if(a[da>>0]|0){c[ga>>2]=Jq(c[m>>2]|0,c[ga>>2]|0,0)|0;c[ea>>2]=c[ga>>2];if(!(c[ga>>2]|0))break;if(a[(c[m>>2]|0)+64>>0]|0)break;a[(c[(c[ga>>2]|0)+4>>2]|0)+12>>0]=(d[da>>0]|0)!=1?1:0;a[c[c[(c[ga>>2]|0)+4>>2]>>2]>>0]=-102}while(0);Hx(c[o>>2]|0,V);c[N>>2]=Hu(c[o>>2]|0,c[q>>2]|0,c[ma>>2]|0,c[ga>>2]|0,0,d[da>>0]|0,0)|0;if(!(c[N>>2]|0)){sn(c[m>>2]|0,c[ea>>2]|0);break}Fx(c[o>>2]|0,V);if((wx(c[N>>2]|0)|0)>0){f=c[t>>2]|0;fp(f,16,0,zx(c[N>>2]|0)|0)|0}Iu(c[N>>2]|0);Gx(c[o>>2]|0,V)}c[p>>2]=0;xs(c[o>>2]|0,c[z>>2]|0,c[j>>2]|0,16);xx(c[o>>2]|0,c[n>>2]|0,c[c[n>>2]>>2]|0,-1,0,0,c[l>>2]|0,c[j>>2]|0,c[j>>2]|0);sn(c[m>>2]|0,c[ea>>2]|0)}Pr(c[t>>2]|0,c[j>>2]|0)}if((d[A+1>>0]|0)==3)Cx(c[o>>2]|0,24832);if(c[p>>2]|0){Cx(c[o>>2]|0,(c[p+4>>2]|0)>0?24864:24888);Lx(c[o>>2]|0,c[n>>2]|0,p,c[c[r>>2]>>2]|0,c[l>>2]|0)}Pr(c[t>>2]|0,c[L>>2]|0);c[w>>2]=0}while(0);c[(c[o>>2]|0)+464>>2]=c[v>>2];if((c[w>>2]|0)==0?(d[c[l>>2]>>0]|0)==9:0)Mx(c[o>>2]|0,c[q>>2]|0,c[r>>2]|0);Xb(c[m>>2]|0,c[V+28>>2]|0);Xb(c[m>>2]|0,c[V+40>>2]|0);c[T>>2]=c[w>>2];f=c[T>>2]|0;i=W;return f|0}c[T>>2]=1;f=c[T>>2]|0;i=W;return f|0}function bo(a,b,d,e,f,g,h,j){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;t=i;i=i+48|0;w=t;s=t+44|0;x=t+40|0;v=t+36|0;u=t+32|0;k=t+28|0;n=t+24|0;r=t+20|0;p=t+16|0;q=t+12|0;m=t+8|0;o=t+4|0;c[x>>2]=a;c[v>>2]=b;c[u>>2]=d;c[k>>2]=e;c[n>>2]=f;c[r>>2]=g;c[p>>2]=h;c[q>>2]=j;c[o>>2]=c[c[x>>2]>>2];if((c[v>>2]|0)==0?(c[p>>2]|0)!=0|(c[q>>2]|0)!=0:0){a=c[x>>2]|0;c[w>>2]=(c[p>>2]|0)!=0?24816:24824;Se(a,24776,w)}else l=4;if(((l|0)==4?(c[v>>2]=ko(c[o>>2]|0,c[v>>2]|0,c[u>>2]|0,c[k>>2]|0)|0,(c[v>>2]|0)!=0):0)?(c[c[v>>2]>>2]|0)!=0:0){c[m>>2]=(c[v>>2]|0)+8+(((c[c[v>>2]>>2]|0)-1|0)*72|0);if(c[(c[n>>2]|0)+4>>2]|0){a=Zo(c[o>>2]|0,c[n>>2]|0)|0;c[(c[m>>2]|0)+12>>2]=a}c[(c[m>>2]|0)+20>>2]=c[r>>2];c[(c[m>>2]|0)+44>>2]=c[p>>2];c[(c[m>>2]|0)+48>>2]=c[q>>2];c[s>>2]=c[v>>2];a=c[s>>2]|0;i=t;return a|0}wn(c[o>>2]|0,c[p>>2]|0);xn(c[o>>2]|0,c[q>>2]|0);tn(c[o>>2]|0,c[r>>2]|0);c[s>>2]=0;a=c[s>>2]|0;i=t;return a|0}function co(d,e,f,g,h,j,k,l,m,n){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;var o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;p=i;i=i+128|0;v=p+112|0;A=p+108|0;s=p+104|0;t=p+100|0;u=p+96|0;o=p+92|0;w=p+88|0;x=p+116|0;y=p+84|0;z=p+80|0;r=p+76|0;B=p;q=p+72|0;c[v>>2]=d;c[A>>2]=e;c[s>>2]=f;c[t>>2]=g;c[u>>2]=h;c[o>>2]=j;c[w>>2]=k;b[x>>1]=l;c[y>>2]=m;c[z>>2]=n;c[q>>2]=c[c[v>>2]>>2];c[r>>2]=se(c[q>>2]|0,72,0)|0;if(!(c[r>>2]|0)){c[r>>2]=B;m=(c[r>>2]|0)+0|0;n=m+72|0;do{c[m>>2]=0;m=m+4|0}while((m|0)<(n|0))}if(!(c[A>>2]|0)){d=c[v>>2]|0;c[A>>2]=eo(d,0,ho(c[q>>2]|0,116,0)|0)|0}c[c[r>>2]>>2]=c[A>>2];if(!(c[s>>2]|0))c[s>>2]=se(c[q>>2]|0,80,0)|0;c[(c[r>>2]|0)+32>>2]=c[s>>2];c[(c[r>>2]|0)+36>>2]=c[t>>2];c[(c[r>>2]|0)+40>>2]=c[u>>2];c[(c[r>>2]|0)+44>>2]=c[o>>2];c[(c[r>>2]|0)+48>>2]=c[w>>2];b[(c[r>>2]|0)+6>>1]=b[x>>1]|0;a[(c[r>>2]|0)+4>>0]=119;c[(c[r>>2]|0)+60>>2]=c[y>>2];c[(c[r>>2]|0)+64>>2]=c[z>>2];c[(c[r>>2]|0)+16>>2]=-1;c[(c[r>>2]|0)+20>>2]=-1;if(!(a[(c[q>>2]|0)+64>>0]|0)){d=c[r>>2]|0;i=p;return d|0}un(c[q>>2]|0,c[r>>2]|0);if((c[r>>2]|0)!=(B|0))Xb(c[q>>2]|0,c[r>>2]|0);c[r>>2]=0;d=c[r>>2]|0;i=p;return d|0}function eo(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;e=i;i=i+32|0;h=e+24|0;m=e+20|0;j=e+16|0;g=e+12|0;k=e+8|0;l=e+4|0;f=e;c[m>>2]=a;c[j>>2]=b;c[g>>2]=d;c[k>>2]=c[c[m>>2]>>2];if(!(c[j>>2]|0)){c[j>>2]=se(c[k>>2]|0,8,0)|0;if((c[j>>2]|0)!=0?(m=Qe(c[k>>2]|0,20,0)|0,c[(c[j>>2]|0)+4>>2]=m,(c[(c[j>>2]|0)+4>>2]|0)!=0):0)d=7;else d=8}else if(!(c[c[j>>2]>>2]&(c[c[j>>2]>>2]|0)-1)){c[l>>2]=Fk(c[k>>2]|0,c[(c[j>>2]|0)+4>>2]|0,(c[c[j>>2]>>2]<<1)*20|0,0)|0;if(!(c[l>>2]|0))d=8;else{c[(c[j>>2]|0)+4>>2]=c[l>>2];d=7}}else d=7;if((d|0)==7){a=c[j>>2]|0;m=c[a>>2]|0;c[a>>2]=m+1;c[f>>2]=(c[(c[j>>2]|0)+4>>2]|0)+(m*20|0);m=c[f>>2]|0;c[m+0>>2]=0;c[m+4>>2]=0;c[m+8>>2]=0;c[m+12>>2]=0;c[m+16>>2]=0;c[c[f>>2]>>2]=c[g>>2];c[h>>2]=c[j>>2];m=c[h>>2]|0;i=e;return m|0}else if((d|0)==8){wn(c[k>>2]|0,c[g>>2]|0);sn(c[k>>2]|0,c[j>>2]|0);c[h>>2]=0;m=c[h>>2]|0;i=e;return m|0}return 0}function fo(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;f=i;i=i+32|0;j=f+16|0;h=f+12|0;k=f+8|0;l=f+4|0;g=f;c[j>>2]=a;c[h>>2]=b;c[k>>2]=d;c[l>>2]=e;if(!(c[h>>2]|0)){i=f;return}c[g>>2]=(c[(c[h>>2]|0)+4>>2]|0)+(((c[c[h>>2]>>2]|0)-1|0)*20|0);a=rm(c[c[j>>2]>>2]|0,c[c[k>>2]>>2]|0,c[(c[k>>2]|0)+4>>2]|0,0)|0;c[(c[g>>2]|0)+4>>2]=a;if(!(c[l>>2]|0)){i=f;return}if(!(c[(c[g>>2]|0)+4>>2]|0)){i=f;return}sm(c[(c[g>>2]|0)+4>>2]|0)|0;i=f;return}function go(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;e=i;i=i+32|0;k=e+16|0;f=e+12|0;j=e+8|0;h=e+4|0;g=e;c[k>>2]=a;c[f>>2]=b;c[j>>2]=d;c[h>>2]=c[c[k>>2]>>2];if(!(c[f>>2]|0)){i=e;return}c[g>>2]=(c[(c[f>>2]|0)+4>>2]|0)+(((c[c[f>>2]>>2]|0)-1|0)*20|0);Xb(c[h>>2]|0,c[(c[g>>2]|0)+8>>2]|0);k=(c[(c[j>>2]|0)+8>>2]|0)-(c[(c[j>>2]|0)+4>>2]|0)|0;k=rm(c[h>>2]|0,c[(c[j>>2]|0)+4>>2]|0,k,((k|0)<0)<<31>>31)|0;c[(c[g>>2]|0)+8>>2]=k;i=e;return}function ho(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;i=i+32|0;h=e+16|0;g=e+12|0;j=e+8|0;f=e;c[h>>2]=a;c[g>>2]=b;c[j>>2]=d;c[f>>2]=c[j>>2];if(c[j>>2]|0)d=Mb(c[j>>2]|0)|0;else d=0;c[f+4>>2]=d;a=or(c[h>>2]|0,c[g>>2]|0,f,0)|0;i=e;return a|0}function io(b){b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;e=d+4|0;f=d;c[e>>2]=b;if(!(c[e>>2]|0)){i=d;return}c[f>>2]=(c[c[e>>2]>>2]|0)-1;while(1){if((c[f>>2]|0)<=0)break;a[(c[e>>2]|0)+8+((c[f>>2]|0)*72|0)+36>>0]=a[(c[e>>2]|0)+8+(((c[f>>2]|0)-1|0)*72|0)+36>>0]|0;c[f>>2]=(c[f>>2]|0)+ -1}a[(c[e>>2]|0)+44>>0]=0;i=d;return}function jo(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;f=i;i=i+16|0;h=f+12|0;k=f+8|0;j=f+4|0;g=f;c[h>>2]=b;c[k>>2]=d;c[j>>2]=e;if(!(c[k>>2]|0)){i=f;return}if((c[c[k>>2]>>2]|0)<=0){i=f;return}c[g>>2]=(c[k>>2]|0)+8+(((c[c[k>>2]>>2]|0)-1|0)*72|0);if((c[(c[j>>2]|0)+4>>2]|0)==1?(c[c[j>>2]>>2]|0)==0:0){b=(c[g>>2]|0)+37|0;a[b>>0]=a[b>>0]&-2|1;i=f;return}b=Zo(c[c[h>>2]>>2]|0,c[j>>2]|0)|0;c[(c[g>>2]|0)+64>>2]=b;i=f;return}function ko(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;k=i;i=i+32|0;j=k+24|0;m=k+20|0;h=k+16|0;n=k+12|0;l=k+8|0;o=k+4|0;g=k;c[m>>2]=b;c[h>>2]=d;c[n>>2]=e;c[l>>2]=f;do if(!(c[h>>2]|0)){c[h>>2]=se(c[m>>2]|0,80,0)|0;if(c[h>>2]|0){c[(c[h>>2]|0)+4>>2]=1;break}c[j>>2]=0;b=c[j>>2]|0;i=k;return b|0}while(0);c[h>>2]=mx(c[m>>2]|0,c[h>>2]|0,1,c[c[h>>2]>>2]|0)|0;if(a[(c[m>>2]|0)+64>>0]|0){vn(c[m>>2]|0,c[h>>2]|0);c[j>>2]=0;b=c[j>>2]|0;i=k;return b|0}c[o>>2]=(c[h>>2]|0)+8+(((c[c[h>>2]>>2]|0)-1|0)*72|0);if((c[l>>2]|0)!=0?(c[c[l>>2]>>2]|0)==0:0)c[l>>2]=0;if(c[l>>2]|0){c[g>>2]=c[l>>2];c[l>>2]=c[n>>2];c[n>>2]=c[g>>2]}b=Zo(c[m>>2]|0,c[n>>2]|0)|0;c[(c[o>>2]|0)+8>>2]=b;b=Zo(c[m>>2]|0,c[l>>2]|0)|0;c[(c[o>>2]|0)+4>>2]=b;c[j>>2]=c[h>>2];b=c[j>>2]|0;i=k;return b|0}function lo(a,b,e,f){a=a|0;b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;j=i;i=i+64|0;l=j;k=j+60|0;g=j+56|0;m=j+52|0;o=j+48|0;p=j+44|0;q=j+32|0;s=j+28|0;r=j+24|0;t=j+20|0;n=j+16|0;c[k>>2]=a;c[g>>2]=b;c[m>>2]=e;c[o>>2]=f;c[p>>2]=0;c[q>>2]=c[g>>2];c[q+4>>2]=c[m>>2];c[q+8>>2]=c[o>>2];c[r>>2]=0;while(1){if((c[r>>2]|0)>=3)break;if(!(c[q+(c[r>>2]<<2)>>2]|0))break;c[s>>2]=c[q+(c[r>>2]<<2)>>2];c[t>>2]=0;while(1){if((c[t>>2]|0)>=7)break;if((c[(c[s>>2]|0)+4>>2]|0)==(d[24649+((c[t>>2]|0)*3|0)>>0]|0|0)?(Lb(c[c[s>>2]>>2]|0,24608+(d[24648+((c[t>>2]|0)*3|0)>>0]|0)|0,c[(c[s>>2]|0)+4>>2]|0)|0)==0:0){h=8;break}c[t>>2]=(c[t>>2]|0)+1}if((h|0)==8){h=0;c[p>>2]=c[p>>2]|(d[24650+((c[t>>2]|0)*3|0)>>0]|0)}if((c[t>>2]|0)>=7){h=11;break}c[r>>2]=(c[r>>2]|0)+1}if((h|0)==11)c[p>>2]=c[p>>2]|64;if((c[p>>2]&33|0)!=33?(c[p>>2]&64|0)==0:0){if(!(c[p>>2]&32)){a=c[p>>2]|0;i=j;return a|0}if((c[p>>2]&24|0)==8){a=c[p>>2]|0;i=j;return a|0}Se(c[k>>2]|0,24720,l);c[p>>2]=1;a=c[p>>2]|0;i=j;return a|0}c[n>>2]=9912;if(!(c[o>>2]|0))c[n>>2]=(c[n>>2]|0)+1;a=c[k>>2]|0;f=c[m>>2]|0;e=c[n>>2]|0;b=c[o>>2]|0;c[l>>2]=c[g>>2];c[l+4>>2]=f;c[l+8>>2]=e;c[l+12>>2]=b;Se(a,24672,l);c[p>>2]=1;a=c[p>>2]|0;i=j;return a|0}function mo(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;f=i;i=i+16|0;g=f+4|0;h=f;j=f+8|0;c[g>>2]=b;c[h>>2]=d;a[j>>0]=e;if(!(c[h>>2]|0)){i=f;return}c[(c[h>>2]|0)+4>>2]=c[(c[g>>2]|0)+532>>2];c[(c[g>>2]|0)+532>>2]=c[h>>2];a[(c[g>>2]|0)+449>>0]=a[j>>0]|0;i=f;return}function no(e,f,g){e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0;n=i;i=i+192|0;q=n+172|0;k=n+168|0;l=n+164|0;o=n+160|0;s=n+156|0;U=n+152|0;j=n+148|0;L=n+144|0;r=n+140|0;I=n+136|0;z=n+132|0;h=n+128|0;R=n+124|0;v=n+120|0;y=n+112|0;T=n+80|0;O=n+76|0;p=n+72|0;S=n+68|0;E=n+64|0;Q=n+56|0;m=n+52|0;x=n+48|0;M=n+44|0;N=n+178|0;H=n+40|0;D=n+176|0;t=n+36|0;G=n+32|0;F=n+28|0;u=n+24|0;K=n+20|0;P=n+16|0;w=n+12|0;A=n+8|0;C=n+4|0;B=n;c[q>>2]=e;c[k>>2]=f;c[l>>2]=g;c[p>>2]=-1;c[m>>2]=0;c[M>>2]=0;b[N>>1]=1;c[t>>2]=0;c[G>>2]=0;c[F>>2]=0;c[u>>2]=0;c[K>>2]=0;c[P>>2]=0;c[y+0>>2]=0;c[y+4>>2]=0;c[v>>2]=c[c[q>>2]>>2];a:do if((((((c[(c[q>>2]|0)+64>>2]|0)==0?(d[(c[v>>2]|0)+64>>0]|0)==0:0)?(c[s>>2]=Ft(c[q>>2]|0,c[k>>2]|0)|0,(c[s>>2]|0)!=0):0)?(c[A>>2]=lu(c[q>>2]|0,c[s>>2]|0,109,0,0)|0,c[w>>2]=(c[(c[s>>2]|0)+12>>2]|0)!=0&1,(Qp(c[q>>2]|0,c[s>>2]|0)|0)==0):0)?(mu(c[q>>2]|0,c[s>>2]|0,(c[A>>2]|0)!=0?1:0)|0)==0:0)?(c[O>>2]=Ve(c[v>>2]|0,c[(c[s>>2]|0)+68>>2]|0)|0,c[U>>2]=c[(c[(c[v>>2]|0)+16>>2]|0)+(c[O>>2]<<4)>>2],c[S>>2]=ap(c[q>>2]|0,9,c[c[s>>2]>>2]|0,0,c[U>>2]|0)|0,(c[S>>2]|0)!=1):0){f=(c[q>>2]|0)+68|0;e=c[f>>2]|0;c[f>>2]=e+1;c[(c[k>>2]|0)+48>>2]=e;c[I>>2]=e;c[R>>2]=0;c[r>>2]=c[(c[s>>2]|0)+8>>2];while(1){if(!(c[r>>2]|0))break;e=(c[q>>2]|0)+68|0;c[e>>2]=(c[e>>2]|0)+1;c[r>>2]=c[(c[r>>2]|0)+20>>2];c[R>>2]=(c[R>>2]|0)+1}if(c[w>>2]|0)ix(c[q>>2]|0,y,c[c[s>>2]>>2]|0);c[o>>2]=dp(c[q>>2]|0)|0;if(c[o>>2]|0){if(!(d[(c[q>>2]|0)+18>>0]|0))nu(c[o>>2]|0);pp(c[q>>2]|0,1,c[O>>2]|0);if(c[w>>2]|0){jx(c[q>>2]|0,c[s>>2]|0,c[l>>2]|0,c[I>>2]|0);e=c[I>>2]|0;c[h>>2]=e;c[z>>2]=e}c[T+0>>2]=0;c[T+4>>2]=0;c[T+8>>2]=0;c[T+12>>2]=0;c[T+16>>2]=0;c[T+20>>2]=0;c[T+24>>2]=0;c[T+28>>2]=0;c[T>>2]=c[q>>2];c[T+4>>2]=c[k>>2];if(!(vq(T,c[l>>2]|0)|0)){if(c[(c[v>>2]|0)+24>>2]&128){f=(c[q>>2]|0)+72|0;e=(c[f>>2]|0)+1|0;c[f>>2]=e;c[p>>2]=e;fp(c[o>>2]|0,25,0,c[p>>2]|0)|0}b:do if((!((c[S>>2]|0)==0&(c[l>>2]|0)==0^1|(c[A>>2]|0)!=0)?(d[(c[s>>2]|0)+44>>0]&16|0)==0:0)?0==(cw(c[q>>2]|0,c[s>>2]|0,0,0)|0):0){Jr(c[q>>2]|0,c[O>>2]|0,c[(c[s>>2]|0)+32>>2]|0,1,c[c[s>>2]>>2]|0);if(!(d[(c[s>>2]|0)+44>>0]&32))hp(c[o>>2]|0,118,c[(c[s>>2]|0)+32>>2]|0,c[O>>2]|0,c[p>>2]|0,c[c[s>>2]>>2]|0,-2)|0;c[r>>2]=c[(c[s>>2]|0)+8>>2];while(1){if(!(c[r>>2]|0))break b;fp(c[o>>2]|0,118,c[(c[r>>2]|0)+44>>2]|0,c[O>>2]|0)|0;c[r>>2]=c[(c[r>>2]|0)+20>>2]}}else J=28;while(0);c:do if((J|0)==28){if(!(d[(c[s>>2]|0)+44>>0]&32)){c[x>>2]=0;b[N>>1]=1;f=(c[q>>2]|0)+72|0;e=(c[f>>2]|0)+1|0;c[f>>2]=e;c[G>>2]=e;fp(c[o>>2]|0,28,0,c[G>>2]|0)|0}else{c[x>>2]=Zr(c[s>>2]|0)|0;b[N>>1]=b[(c[x>>2]|0)+50>>1]|0;c[M>>2]=(c[(c[q>>2]|0)+72>>2]|0)+1;f=(c[q>>2]|0)+72|0;c[f>>2]=(c[f>>2]|0)+(b[N>>1]|0);f=(c[q>>2]|0)+68|0;e=c[f>>2]|0;c[f>>2]=e+1;c[t>>2]=e;c[P>>2]=fp(c[o>>2]|0,57,c[t>>2]|0,b[N>>1]|0)|0;Lr(c[q>>2]|0,c[x>>2]|0)}c[L>>2]=Hu(c[q>>2]|0,c[k>>2]|0,c[l>>2]|0,0,0,12,(c[I>>2]|0)+1|0)|0;if(!(c[L>>2]|0))break a;c[E>>2]=kx(c[L>>2]|0,Q)|0;if(c[(c[v>>2]|0)+24>>2]&128)fp(c[o>>2]|0,37,c[p>>2]|0,1)|0;do if(c[x>>2]|0){c[j>>2]=0;while(1){if((c[j>>2]|0)>=(b[N>>1]|0))break;zs(c[o>>2]|0,c[s>>2]|0,c[I>>2]|0,b[(c[(c[x>>2]|0)+4>>2]|0)+(c[j>>2]<<1)>>1]|0,(c[M>>2]|0)+(c[j>>2]|0)|0);c[j>>2]=(c[j>>2]|0)+1}c[H>>2]=c[M>>2]}else{c[H>>2]=(c[(c[q>>2]|0)+72>>2]|0)+1;c[H>>2]=Rs(c[q>>2]|0,c[s>>2]|0,-1,c[I>>2]|0,c[H>>2]|0,0)|0;if((c[H>>2]|0)<=(c[(c[q>>2]|0)+72>>2]|0))break;c[(c[q>>2]|0)+72>>2]=c[H>>2]}while(0);do if(!(c[E>>2]|0))if(c[x>>2]|0){U=(c[q>>2]|0)+72|0;T=(c[U>>2]|0)+1|0;c[U>>2]=T;c[H>>2]=T;b[D>>1]=0;T=c[o>>2]|0;U=c[M>>2]|0;g=b[N>>1]|0;f=c[H>>2]|0;e=au(c[o>>2]|0,c[x>>2]|0)|0;hp(T,49,U,g,f,e,b[N>>1]|0)|0;fp(c[o>>2]|0,110,c[t>>2]|0,c[H>>2]|0)|0;break}else{b[D>>1]=1;fp(c[o>>2]|0,128,c[G>>2]|0,c[H>>2]|0)|0;break}else{b[D>>1]=b[N>>1]|0;e=(c[R>>2]|0)+2|0;c[m>>2]=Qe(c[v>>2]|0,e,((e|0)<0)<<31>>31)|0;if(!(c[m>>2]|0)){Iu(c[L>>2]|0);break a}_E(c[m>>2]|0,1,(c[R>>2]|0)+1|0)|0;a[(c[m>>2]|0)+((c[R>>2]|0)+1)>>0]=0;if((c[Q>>2]|0)>=0)a[(c[m>>2]|0)+((c[Q>>2]|0)-(c[I>>2]|0))>>0]=0;if((c[Q+4>>2]|0)>=0)a[(c[m>>2]|0)+((c[Q+4>>2]|0)-(c[I>>2]|0))>>0]=0;if(c[P>>2]|0)cf(c[o>>2]|0,c[P>>2]|0);c[K>>2]=mp(c[o>>2]|0,16)|0}while(0);Iu(c[L>>2]|0);if(c[E>>2]|0){c[F>>2]=Nr(c[o>>2]|0)|0;fp(c[o>>2]|0,16,0,c[F>>2]|0)|0;zp(c[o>>2]|0,c[K>>2]|0)}if(!(c[w>>2]|0))du(c[q>>2]|0,c[s>>2]|0,55,c[I>>2]|0,c[m>>2]|0,z,h)|0;do if(!(c[E>>2]|0)){I=c[o>>2]|0;if(c[x>>2]|0){c[u>>2]=Ir(I,108,c[t>>2]|0)|0;fp(c[o>>2]|0,101,c[t>>2]|0,c[H>>2]|0)|0;break}else{c[u>>2]=ip(I,129,c[G>>2]|0,0,c[H>>2]|0)|0;break}}else{if(!(a[(c[m>>2]|0)+((c[z>>2]|0)-(c[I>>2]|0))>>0]|0))break;We(c[o>>2]|0,68,c[z>>2]|0,c[F>>2]|0,c[H>>2]|0,b[D>>1]|0)|0}while(0);if(d[(c[s>>2]|0)+44>>0]&16){c[C>>2]=Rp(c[v>>2]|0,c[s>>2]|0)|0;wu(c[q>>2]|0,c[s>>2]|0);hp(c[o>>2]|0,15,0,1,c[H>>2]|0,c[C>>2]|0,-10)|0;Xe(c[o>>2]|0,2);Sp(c[q>>2]|0)}else{c[B>>2]=(d[(c[q>>2]|0)+18>>0]|0)==0&1;ew(c[q>>2]|0,c[s>>2]|0,c[A>>2]|0,c[z>>2]|0,c[h>>2]|0,c[H>>2]|0,b[D>>1]|0,c[B>>2]&255,10,c[E>>2]&255)}do if(!(c[E>>2]|0)){A=c[o>>2]|0;if(c[x>>2]|0){fp(A,9,c[t>>2]|0,(c[u>>2]|0)+1|0)|0;zp(c[o>>2]|0,c[u>>2]|0);break}else{fp(A,16,0,c[u>>2]|0)|0;zp(c[o>>2]|0,c[u>>2]|0);break}}else Pr(c[o>>2]|0,c[F>>2]|0);while(0);if(c[w>>2]|0)break;if(d[(c[s>>2]|0)+44>>0]&16)break;if(!(c[x>>2]|0))Ir(c[o>>2]|0,61,c[z>>2]|0)|0;c[j>>2]=0;c[r>>2]=c[(c[s>>2]|0)+8>>2];while(1){if(!(c[r>>2]|0))break c;Ir(c[o>>2]|0,61,(c[h>>2]|0)+(c[j>>2]|0)|0)|0;c[j>>2]=(c[j>>2]|0)+1;c[r>>2]=c[(c[r>>2]|0)+20>>2]}}while(0);if((d[(c[q>>2]|0)+18>>0]|0)==0?(c[(c[q>>2]|0)+412>>2]|0)==0:0)Au(c[q>>2]|0);if(((c[(c[v>>2]|0)+24>>2]&128|0)!=0?(a[(c[q>>2]|0)+18>>0]|0)==0:0)?(c[(c[q>>2]|0)+412>>2]|0)==0:0){fp(c[o>>2]|0,35,c[p>>2]|0,1)|0;Nt(c[o>>2]|0,1);Ot(c[o>>2]|0,0,0,24592,0)|0}}}}while(0);lx(y);vn(c[v>>2]|0,c[k>>2]|0);wn(c[v>>2]|0,c[l>>2]|0);Xb(c[v>>2]|0,c[m>>2]|0);i=n;return}function oo(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;e=i;i=i+32|0;h=e;f=e+16|0;j=e+12|0;g=e+8|0;k=e+4|0;c[f>>2]=a;c[j>>2]=b;c[g>>2]=d;c[k>>2]=c[(c[c[f>>2]>>2]|0)+96>>2];if(!(c[j>>2]|0)){i=e;return}if((c[c[j>>2]>>2]|0)<=(c[k>>2]|0)){i=e;return}a=c[f>>2]|0;c[h>>2]=c[g>>2];Se(a,24568,h);i=e;return}function po(f,g,h,j,k){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0;y=i;i=i+256|0;la=y;u=y+244|0;o=y+240|0;n=y+236|0;z=y+232|0;H=y+228|0;t=y+224|0;W=y+220|0;r=y+216|0;B=y+212|0;ea=y+208|0;x=y+204|0;D=y+200|0;s=y+196|0;ca=y+192|0;fa=y+188|0;C=y+184|0;l=y+180|0;v=y+176|0;R=y+172|0;p=y+168|0;E=y+164|0;ba=y+252|0;_=y+251|0;M=y+250|0;aa=y+160|0;q=y+152|0;ja=y+120|0;na=y+112|0;Q=y+108|0;K=y+104|0;A=y+100|0;F=y+96|0;S=y+92|0;I=y+88|0;X=y+84|0;Y=y+80|0;m=y+76|0;P=y+72|0;da=y+64|0;w=y+56|0;N=y+52|0;O=y+48|0;U=y+44|0;V=y+40|0;$=y+36|0;J=y+32|0;ma=y+28|0;ka=y+24|0;ia=y+20|0;ha=y+248|0;ga=y+16|0;Z=y+12|0;G=y+8|0;L=y+4|0;c[u>>2]=f;c[o>>2]=g;c[n>>2]=h;c[z>>2]=j;c[H>>2]=k;c[B>>2]=0;c[R>>2]=0;c[p>>2]=0;c[aa>>2]=0;c[m>>2]=0;c[P>>2]=0;c[w>>2]=0;c[V>>2]=0;c[$>>2]=0;c[J>>2]=0;c[q+0>>2]=0;c[q+4>>2]=0;c[v>>2]=c[c[u>>2]>>2];if(c[(c[u>>2]|0)+64>>2]|0){lx(q);f=c[v>>2]|0;g=c[p>>2]|0;Xb(f,g);g=c[v>>2]|0;f=c[o>>2]|0;vn(g,f);f=c[v>>2]|0;g=c[n>>2]|0;sn(f,g);g=c[v>>2]|0;f=c[z>>2]|0;wn(g,f);i=y;return}if(d[(c[v>>2]|0)+64>>0]|0){lx(q);f=c[v>>2]|0;g=c[p>>2]|0;Xb(f,g);g=c[v>>2]|0;f=c[o>>2]|0;vn(g,f);f=c[v>>2]|0;g=c[n>>2]|0;sn(f,g);g=c[v>>2]|0;f=c[z>>2]|0;wn(g,f);i=y;return}c[r>>2]=Ft(c[u>>2]|0,c[o>>2]|0)|0;if(!(c[r>>2]|0)){lx(q);f=c[v>>2]|0;g=c[p>>2]|0;Xb(f,g);g=c[v>>2]|0;f=c[o>>2]|0;vn(g,f);f=c[v>>2]|0;g=c[n>>2]|0;sn(f,g);g=c[v>>2]|0;f=c[z>>2]|0;wn(g,f);i=y;return}c[na>>2]=Ve(c[c[u>>2]>>2]|0,c[(c[r>>2]|0)+68>>2]|0)|0;c[I>>2]=lu(c[u>>2]|0,c[r>>2]|0,110,c[n>>2]|0,X)|0;c[S>>2]=(c[(c[r>>2]|0)+12>>2]|0)!=0&1;if(Qp(c[u>>2]|0,c[r>>2]|0)|0){lx(q);f=c[v>>2]|0;g=c[p>>2]|0;Xb(f,g);g=c[v>>2]|0;f=c[o>>2]|0;vn(g,f);f=c[v>>2]|0;g=c[n>>2]|0;sn(f,g);g=c[v>>2]|0;f=c[z>>2]|0;wn(g,f);i=y;return}if(mu(c[u>>2]|0,c[r>>2]|0,c[X>>2]|0)|0){lx(q);f=c[v>>2]|0;g=c[p>>2]|0;Xb(f,g);g=c[v>>2]|0;f=c[o>>2]|0;vn(g,f);f=c[v>>2]|0;g=c[n>>2]|0;sn(f,g);g=c[v>>2]|0;f=c[z>>2]|0;wn(g,f);i=y;return}g=(c[u>>2]|0)+68|0;f=c[g>>2]|0;c[g>>2]=f+1;c[C>>2]=f;c[fa>>2]=f;c[(c[o>>2]|0)+48>>2]=f;c[l>>2]=(c[C>>2]|0)+1;if(!(d[(c[r>>2]|0)+44>>0]&32))k=0;else k=Zr(c[r>>2]|0)|0;c[s>>2]=k;c[ca>>2]=0;c[D>>2]=c[(c[r>>2]|0)+8>>2];while(1){if(!(c[D>>2]|0))break;if((c[s>>2]|0)!=0?(a[(c[D>>2]|0)+55>>0]&3|0)==2:0){c[C>>2]=c[(c[u>>2]|0)+68>>2];c[(c[o>>2]|0)+48>>2]=c[C>>2]}f=(c[u>>2]|0)+68|0;c[f>>2]=(c[f>>2]|0)+1;c[D>>2]=c[(c[D>>2]|0)+20>>2];c[ca>>2]=(c[ca>>2]|0)+1}c[p>>2]=Qe(c[v>>2]|0,((b[(c[r>>2]|0)+38>>1]|0)+(c[ca>>2]|0)<<2)+(c[ca>>2]|0)+2|0,0)|0;if(!(c[p>>2]|0)){lx(q);f=c[v>>2]|0;g=c[p>>2]|0;Xb(f,g);g=c[v>>2]|0;f=c[o>>2]|0;vn(g,f);f=c[v>>2]|0;g=c[n>>2]|0;sn(f,g);g=c[v>>2]|0;f=c[z>>2]|0;wn(g,f);i=y;return}c[R>>2]=(c[p>>2]|0)+(b[(c[r>>2]|0)+38>>1]<<2);c[E>>2]=(c[R>>2]|0)+(c[ca>>2]<<2);_E(c[E>>2]|0,1,(c[ca>>2]|0)+1|0)|0;a[(c[E>>2]|0)+((c[ca>>2]|0)+1)>>0]=0;c[t>>2]=0;while(1){if((c[t>>2]|0)>=(b[(c[r>>2]|0)+38>>1]|0))break;c[(c[p>>2]|0)+(c[t>>2]<<2)>>2]=-1;c[t>>2]=(c[t>>2]|0)+1}c[ja+0>>2]=0;c[ja+4>>2]=0;c[ja+8>>2]=0;c[ja+12>>2]=0;c[ja+16>>2]=0;c[ja+20>>2]=0;c[ja+24>>2]=0;c[ja+28>>2]=0;c[ja>>2]=c[u>>2];c[ja+4>>2]=c[o>>2];a[ba>>0]=0;a[_>>0]=0;c[t>>2]=0;while(1){if((c[t>>2]|0)>=(c[c[n>>2]>>2]|0)){T=41;break}if(vq(ja,c[(c[(c[n>>2]|0)+4>>2]|0)+((c[t>>2]|0)*20|0)>>2]|0)|0){T=182;break}c[W>>2]=0;while(1){if((c[W>>2]|0)>=(b[(c[r>>2]|0)+38>>1]|0))break;f=(xc(c[(c[(c[r>>2]|0)+4>>2]|0)+((c[W>>2]|0)*24|0)>>2]|0,c[(c[(c[n>>2]|0)+4>>2]|0)+((c[t>>2]|0)*20|0)+4>>2]|0)|0)==0;k=c[W>>2]|0;if(f){T=23;break}c[W>>2]=k+1}if((T|0)==23){T=0;if((k|0)!=(b[(c[r>>2]|0)+36>>1]|0)){if((c[s>>2]|0)!=0?(d[(c[(c[r>>2]|0)+4>>2]|0)+((c[W>>2]|0)*24|0)+23>>0]&1|0)!=0:0)a[ba>>0]=1}else{a[_>>0]=1;c[aa>>2]=c[(c[(c[n>>2]|0)+4>>2]|0)+((c[t>>2]|0)*20|0)>>2]}c[(c[p>>2]|0)+(c[W>>2]<<2)>>2]=c[t>>2]}if((c[W>>2]|0)>=(b[(c[r>>2]|0)+38>>1]|0)){if(c[s>>2]|0){T=34;break}if(!(Zq(c[(c[(c[n>>2]|0)+4>>2]|0)+((c[t>>2]|0)*20|0)+4>>2]|0)|0)){T=34;break}c[W>>2]=-1;a[_>>0]=1;c[aa>>2]=c[(c[(c[n>>2]|0)+4>>2]|0)+((c[t>>2]|0)*20|0)>>2]}if((c[W>>2]|0)<0)k=17288;else k=c[(c[(c[r>>2]|0)+4>>2]|0)+((c[W>>2]|0)*24|0)>>2]|0;c[ma>>2]=ap(c[u>>2]|0,23,c[c[r>>2]>>2]|0,k,c[(c[(c[v>>2]|0)+16>>2]|0)+(c[na>>2]<<4)>>2]|0)|0;if((c[ma>>2]|0)==1){T=182;break}if((c[ma>>2]|0)==2)c[(c[p>>2]|0)+(c[W>>2]<<2)>>2]=-1;c[t>>2]=(c[t>>2]|0)+1}if((T|0)==34){f=c[u>>2]|0;c[la>>2]=c[(c[(c[n>>2]|0)+4>>2]|0)+((c[t>>2]|0)*20|0)+4>>2];Se(f,24520,la);a[(c[u>>2]|0)+17>>0]=1;lx(q);f=c[v>>2]|0;g=c[p>>2]|0;Xb(f,g);g=c[v>>2]|0;f=c[o>>2]|0;vn(g,f);f=c[v>>2]|0;g=c[n>>2]|0;sn(f,g);g=c[v>>2]|0;f=c[z>>2]|0;wn(g,f);i=y;return}else if((T|0)==41){a[M>>0]=(d[_>>0]|0)+(d[ba>>0]|0);f=(c[o>>2]|0)+64|0;c[f>>2]=0;c[f+4>>2]=0;c[K>>2]=cw(c[u>>2]|0,c[r>>2]|0,c[p>>2]|0,d[M>>0]|0)|0;c[W>>2]=0;c[D>>2]=c[(c[r>>2]|0)+8>>2];while(1){if(!(c[D>>2]|0))break;a:do if((!((d[M>>0]|0)!=0|(c[K>>2]|0)!=0)?(c[(c[D>>2]|0)+36>>2]|0)==0:0)?(c[D>>2]|0)!=(c[s>>2]|0):0){c[ka>>2]=0;c[t>>2]=0;while(1){if((c[t>>2]|0)>=(e[(c[D>>2]|0)+50>>1]|0))break a;if((c[(c[p>>2]|0)+(b[(c[(c[D>>2]|0)+4>>2]|0)+(c[t>>2]<<1)>>1]<<2)>>2]|0)>=0)break;c[t>>2]=(c[t>>2]|0)+1}g=(c[u>>2]|0)+72|0;f=(c[g>>2]|0)+1|0;c[g>>2]=f;c[ka>>2]=f}else T=46;while(0);if((T|0)==46){T=0;g=(c[u>>2]|0)+72|0;f=(c[g>>2]|0)+1|0;c[g>>2]=f;c[ka>>2]=f}if(!(c[ka>>2]|0))a[(c[E>>2]|0)+((c[W>>2]|0)+1)>>0]=0;c[(c[R>>2]|0)+(c[W>>2]<<2)>>2]=c[ka>>2];c[D>>2]=c[(c[D>>2]|0)+20>>2];c[W>>2]=(c[W>>2]|0)+1}c[x>>2]=dp(c[u>>2]|0)|0;if(!(c[x>>2]|0)){lx(q);f=c[v>>2]|0;g=c[p>>2]|0;Xb(f,g);g=c[v>>2]|0;f=c[o>>2]|0;vn(g,f);f=c[v>>2]|0;g=c[n>>2]|0;sn(f,g);g=c[v>>2]|0;f=c[z>>2]|0;wn(g,f);i=y;return}if(!(d[(c[u>>2]|0)+18>>0]|0))nu(c[x>>2]|0);pp(c[u>>2]|0,1,c[na>>2]|0);ka=c[u>>2]|0;if(d[(c[r>>2]|0)+44>>0]&16){hx(ka,c[o>>2]|0,c[r>>2]|0,c[n>>2]|0,c[aa>>2]|0,c[p>>2]|0,c[z>>2]|0,c[H>>2]|0);c[z>>2]=0;c[o>>2]=0;lx(q);f=c[v>>2]|0;g=c[p>>2]|0;Xb(f,g);g=c[v>>2]|0;f=c[o>>2]|0;vn(g,f);f=c[v>>2]|0;g=c[n>>2]|0;sn(f,g);g=c[v>>2]|0;f=c[z>>2]|0;wn(g,f);i=y;return}f=ka+72|0;g=(c[f>>2]|0)+1|0;c[f>>2]=g;c[$>>2]=g;g=(c[u>>2]|0)+72|0;f=(c[g>>2]|0)+1|0;c[g>>2]=f;c[O>>2]=f;c[N>>2]=f;if((d[ba>>0]|0)!=0|(c[I>>2]|0)!=0|(c[K>>2]|0)!=0){c[V>>2]=(c[(c[u>>2]|0)+72>>2]|0)+1;f=(c[u>>2]|0)+72|0;c[f>>2]=(c[f>>2]|0)+(b[(c[r>>2]|0)+38>>1]|0)}if((d[M>>0]|0)!=0|(c[I>>2]|0)!=0|(c[K>>2]|0)!=0){g=(c[u>>2]|0)+72|0;f=(c[g>>2]|0)+1|0;c[g>>2]=f;c[O>>2]=f}c[U>>2]=(c[(c[u>>2]|0)+72>>2]|0)+1;f=(c[u>>2]|0)+72|0;c[f>>2]=(c[f>>2]|0)+(b[(c[r>>2]|0)+38>>1]|0);if(c[S>>2]|0)ix(c[u>>2]|0,q,c[c[r>>2]>>2]|0);if(c[S>>2]|0)jx(c[u>>2]|0,c[r>>2]|0,c[z>>2]|0,c[C>>2]|0);if(vq(ja,c[z>>2]|0)|0){lx(q);f=c[v>>2]|0;g=c[p>>2]|0;Xb(f,g);g=c[v>>2]|0;f=c[o>>2]|0;vn(g,f);f=c[v>>2]|0;g=c[n>>2]|0;sn(f,g);g=c[v>>2]|0;f=c[z>>2]|0;wn(g,f);i=y;return}if(!(d[(c[r>>2]|0)+44>>0]&32)){ip(c[x>>2]|0,28,0,c[$>>2]|0,c[N>>2]|0)|0;c[ea>>2]=Hu(c[u>>2]|0,c[o>>2]|0,c[z>>2]|0,0,0,4,c[l>>2]|0)|0;if(!(c[ea>>2]|0)){lx(q);f=c[v>>2]|0;g=c[p>>2]|0;Xb(f,g);g=c[v>>2]|0;f=c[o>>2]|0;vn(g,f);f=c[v>>2]|0;g=c[n>>2]|0;sn(f,g);g=c[v>>2]|0;f=c[z>>2]|0;wn(g,f);i=y;return}c[Q>>2]=kx(c[ea>>2]|0,da)|0;fp(c[x>>2]|0,103,c[C>>2]|0,c[N>>2]|0)|0;if(!(c[Q>>2]|0))fp(c[x>>2]|0,128,c[$>>2]|0,c[N>>2]|0)|0;Iu(c[ea>>2]|0)}else{b[ha>>1]=b[(c[s>>2]|0)+50>>1]|0;c[ia>>2]=(c[(c[u>>2]|0)+72>>2]|0)+1;f=(c[u>>2]|0)+72|0;c[f>>2]=(c[f>>2]|0)+(b[ha>>1]|0);f=(c[u>>2]|0)+72|0;g=(c[f>>2]|0)+1|0;c[f>>2]=g;c[J>>2]=g;g=(c[u>>2]|0)+68|0;f=c[g>>2]|0;c[g>>2]=f+1;c[m>>2]=f;fp(c[x>>2]|0,28,0,c[ia>>2]|0)|0;c[ga>>2]=fp(c[x>>2]|0,57,c[m>>2]|0,b[ha>>1]|0)|0;Lr(c[u>>2]|0,c[s>>2]|0);c[ea>>2]=Hu(c[u>>2]|0,c[o>>2]|0,c[z>>2]|0,0,0,4,c[l>>2]|0)|0;if(!(c[ea>>2]|0)){lx(q);f=c[v>>2]|0;g=c[p>>2]|0;Xb(f,g);g=c[v>>2]|0;f=c[o>>2]|0;vn(g,f);f=c[v>>2]|0;g=c[n>>2]|0;sn(f,g);g=c[v>>2]|0;f=c[z>>2]|0;wn(g,f);i=y;return}c[Q>>2]=kx(c[ea>>2]|0,da)|0;c[t>>2]=0;while(1){if((c[t>>2]|0)>=(b[ha>>1]|0))break;zs(c[x>>2]|0,c[r>>2]|0,c[C>>2]|0,b[(c[(c[s>>2]|0)+4>>2]|0)+(c[t>>2]<<1)>>1]|0,(c[ia>>2]|0)+(c[t>>2]|0)|0);c[t>>2]=(c[t>>2]|0)+1}ja=c[x>>2]|0;if(c[Q>>2]|0){cf(ja,c[ga>>2]|0);c[P>>2]=b[ha>>1];c[J>>2]=c[ia>>2]}else{j=c[ia>>2]|0;h=b[ha>>1]|0;g=c[J>>2]|0;f=au(c[x>>2]|0,c[s>>2]|0)|0;hp(ja,49,j,h,g,f,b[ha>>1]|0)|0;fp(c[x>>2]|0,110,c[m>>2]|0,c[J>>2]|0)|0}Iu(c[ea>>2]|0)}if((c[(c[v>>2]|0)+24>>2]&128|0)!=0?(c[(c[u>>2]|0)+412>>2]|0)==0:0){g=(c[u>>2]|0)+72|0;f=(c[g>>2]|0)+1|0;c[g>>2]=f;c[w>>2]=f;fp(c[x>>2]|0,25,0,c[w>>2]|0)|0}c[A>>2]=Nr(c[x>>2]|0)|0;if(!(c[S>>2]|0)){b:do if((c[H>>2]|0)==5)_E(c[E>>2]|0,1,(c[ca>>2]|0)+1|0)|0;else{c[D>>2]=c[(c[r>>2]|0)+8>>2];while(1){if(!(c[D>>2]|0))break b;if((d[(c[D>>2]|0)+54>>0]|0)==5)break;c[D>>2]=c[(c[D>>2]|0)+20>>2]}_E(c[E>>2]|0,1,(c[ca>>2]|0)+1|0)|0}while(0);do if(c[Q>>2]|0){if((c[da>>2]|0)>=0)a[(c[E>>2]|0)+((c[da>>2]|0)-(c[fa>>2]|0))>>0]=0;if((c[da+4>>2]|0)<0)break;a[(c[E>>2]|0)+((c[da+4>>2]|0)-(c[fa>>2]|0))>>0]=0}while(0);du(c[u>>2]|0,c[r>>2]|0,55,c[fa>>2]|0,c[E>>2]|0,0,0)|0}do if(!(c[Q>>2]|0)){ca=c[x>>2]|0;if(c[s>>2]|0){c[F>>2]=Nr(ca)|0;fp(c[x>>2]|0,108,c[m>>2]|0,c[A>>2]|0)|0;c[B>>2]=fp(c[x>>2]|0,101,c[m>>2]|0,c[J>>2]|0)|0;We(c[x>>2]|0,68,c[C>>2]|0,c[F>>2]|0,c[J>>2]|0,0)|0;break}else{c[F>>2]=ip(ca,129,c[$>>2]|0,c[A>>2]|0,c[N>>2]|0)|0;ip(c[x>>2]|0,70,c[C>>2]|0,c[F>>2]|0,c[N>>2]|0)|0;break}}else{if(!((c[S>>2]|0)!=0?1:(d[(c[E>>2]|0)+((c[C>>2]|0)-(c[fa>>2]|0))>>0]|0)==0))We(c[x>>2]|0,68,c[C>>2]|0,c[A>>2]|0,c[J>>2]|0,c[P>>2]|0)|0;c[F>>2]=c[A>>2];fp(c[x>>2]|0,76,(c[s>>2]|0)!=0?c[J>>2]|0:c[N>>2]|0,c[A>>2]|0)|0}while(0);if(a[_>>0]|0){Os(c[u>>2]|0,c[aa>>2]|0,c[O>>2]|0);Ir(c[x>>2]|0,38,c[O>>2]|0)|0}do if((d[ba>>0]|0)!=0|(c[K>>2]|0)!=0|(c[I>>2]|0)!=0){if(c[K>>2]|0)$=hw(c[u>>2]|0,c[r>>2]|0)|0;else $=0;c[Z>>2]=$;f=gw(c[u>>2]|0,c[I>>2]|0,c[n>>2]|0,0,3,c[r>>2]|0,c[H>>2]|0)|0;c[Z>>2]=c[Z>>2]|f;c[t>>2]=0;while(1){if((c[t>>2]|0)>=(b[(c[r>>2]|0)+38>>1]|0))break;do if((c[Z>>2]|0)==-1)T=117;else{if((c[t>>2]|0)<32?(c[Z>>2]&1<>2]|0)!=0:0){T=117;break}if(d[(c[(c[r>>2]|0)+4>>2]|0)+((c[t>>2]|0)*24|0)+23>>0]&1){T=117;break}fp(c[x>>2]|0,28,0,(c[V>>2]|0)+(c[t>>2]|0)|0)|0}while(0);if((T|0)==117){T=0;zs(c[x>>2]|0,c[r>>2]|0,c[C>>2]|0,c[t>>2]|0,(c[V>>2]|0)+(c[t>>2]|0)|0)}c[t>>2]=(c[t>>2]|0)+1}if(!((d[_>>0]|0)==0&(c[s>>2]|0)==0))break;fp(c[x>>2]|0,33,c[N>>2]|0,c[O>>2]|0)|0}while(0);c[Y>>2]=gw(c[u>>2]|0,c[I>>2]|0,c[n>>2]|0,1,1,c[r>>2]|0,c[H>>2]|0)|0;c[t>>2]=0;while(1){if((c[t>>2]|0)>=(b[(c[r>>2]|0)+38>>1]|0))break;c:do if((c[t>>2]|0)==(b[(c[r>>2]|0)+36>>1]|0))fp(c[x>>2]|0,28,0,(c[U>>2]|0)+(c[t>>2]|0)|0)|0;else{c[W>>2]=c[(c[p>>2]|0)+(c[t>>2]<<2)>>2];if((c[W>>2]|0)>=0){Os(c[u>>2]|0,c[(c[(c[n>>2]|0)+4>>2]|0)+((c[W>>2]|0)*20|0)>>2]|0,(c[U>>2]|0)+(c[t>>2]|0)|0);break}do if(!((c[t>>2]|0)>31?1:0==(c[X>>2]&1|0))){if(c[Y>>2]&1<>2])break;fp(c[x>>2]|0,28,0,(c[U>>2]|0)+(c[t>>2]|0)|0)|0;break c}while(0);zs(c[x>>2]|0,c[r>>2]|0,c[C>>2]|0,c[t>>2]|0,(c[U>>2]|0)+(c[t>>2]|0)|0)}while(0);c[t>>2]=(c[t>>2]|0)+1}d:do if(c[X>>2]&1){su(c[x>>2]|0,c[r>>2]|0,c[U>>2]|0);tu(c[u>>2]|0,c[I>>2]|0,110,c[n>>2]|0,1,c[r>>2]|0,c[N>>2]|0,c[H>>2]|0,c[F>>2]|0);X=c[x>>2]|0;W=c[C>>2]|0;V=c[F>>2]|0;if(c[s>>2]|0)We(X,68,W,V,c[J>>2]|0,c[P>>2]|0)|0;else ip(X,70,W,V,c[N>>2]|0)|0;c[t>>2]=0;while(1){if((c[t>>2]|0)>=(b[(c[r>>2]|0)+38>>1]|0))break d;do if((c[(c[p>>2]|0)+(c[t>>2]<<2)>>2]|0)<0){if((c[t>>2]|0)==(b[(c[r>>2]|0)+36>>1]|0))break;zs(c[x>>2]|0,c[r>>2]|0,c[C>>2]|0,c[t>>2]|0,(c[U>>2]|0)+(c[t>>2]|0)|0)}while(0);c[t>>2]=(c[t>>2]|0)+1}}while(0);do if(!(c[S>>2]|0)){c[G>>2]=0;c[L>>2]=0;xu(c[u>>2]|0,c[r>>2]|0,c[R>>2]|0,c[C>>2]|0,c[l>>2]|0,c[O>>2]|0,c[N>>2]|0,a[M>>0]|0,c[H>>2]&255,c[F>>2]|0,L);if(c[K>>2]|0)yu(c[u>>2]|0,c[r>>2]|0,c[N>>2]|0,0,c[p>>2]|0,d[M>>0]|0);if(!((c[L>>2]|0)==0?(d[M>>0]|0)==0:0))T=148;do if((T|0)==148){T=c[x>>2]|0;S=c[C>>2]|0;if(c[s>>2]|0){c[G>>2]=We(T,68,S,0,c[J>>2]|0,c[P>>2]|0)|0;break}else{c[G>>2]=ip(T,70,S,0,c[N>>2]|0)|0;break}}while(0);fw(c[u>>2]|0,c[r>>2]|0,c[C>>2]|0,c[l>>2]|0,c[R>>2]|0);if(!((c[K>>2]|0)==0?!((d[M>>0]|0)!=0|(c[s>>2]|0)!=0):0))fp(c[x>>2]|0,95,c[C>>2]|0,0)|0;if(!((c[L>>2]|0)==0?(d[M>>0]|0)==0:0))zp(c[x>>2]|0,c[G>>2]|0);if(c[K>>2]|0)yu(c[u>>2]|0,c[r>>2]|0,0,c[O>>2]|0,c[p>>2]|0,d[M>>0]|0);zu(c[u>>2]|0,c[r>>2]|0,c[C>>2]|0,c[l>>2]|0,c[O>>2]|0,c[R>>2]|0,1,0,0);if(!(c[K>>2]|0))break;iw(c[u>>2]|0,c[r>>2]|0,c[n>>2]|0,c[N>>2]|0,c[p>>2]|0,d[M>>0]|0)}while(0);do if(c[(c[v>>2]|0)+24>>2]&128){if(c[(c[u>>2]|0)+412>>2]|0)break;fp(c[x>>2]|0,37,c[w>>2]|0,1)|0}while(0);tu(c[u>>2]|0,c[I>>2]|0,110,c[n>>2]|0,2,c[r>>2]|0,c[N>>2]|0,c[H>>2]|0,c[F>>2]|0);do if(!(c[Q>>2]|0)){G=c[x>>2]|0;F=c[F>>2]|0;if(c[s>>2]|0){Pr(G,F);fp(c[x>>2]|0,9,c[m>>2]|0,c[B>>2]|0)|0;break}else{fp(G,16,0,F)|0;break}}while(0);Pr(c[x>>2]|0,c[A>>2]|0);c[t>>2]=0;c[D>>2]=c[(c[r>>2]|0)+8>>2];while(1){if(!(c[D>>2]|0))break;if(a[(c[E>>2]|0)+((c[t>>2]|0)+1)>>0]|0)fp(c[x>>2]|0,61,(c[l>>2]|0)+(c[t>>2]|0)|0,0)|0;c[D>>2]=c[(c[D>>2]|0)+20>>2];c[t>>2]=(c[t>>2]|0)+1}if((c[C>>2]|0)<(c[l>>2]|0))fp(c[x>>2]|0,61,c[C>>2]|0,0)|0;do if(!(d[(c[u>>2]|0)+18>>0]|0)){if(c[(c[u>>2]|0)+412>>2]|0)break;Au(c[u>>2]|0)}while(0);if(!(c[(c[v>>2]|0)+24>>2]&128)){lx(q);f=c[v>>2]|0;g=c[p>>2]|0;Xb(f,g);g=c[v>>2]|0;f=c[o>>2]|0;vn(g,f);f=c[v>>2]|0;g=c[n>>2]|0;sn(f,g);g=c[v>>2]|0;f=c[z>>2]|0;wn(g,f);i=y;return}if(c[(c[u>>2]|0)+412>>2]|0){lx(q);f=c[v>>2]|0;g=c[p>>2]|0;Xb(f,g);g=c[v>>2]|0;f=c[o>>2]|0;vn(g,f);f=c[v>>2]|0;g=c[n>>2]|0;sn(f,g);g=c[v>>2]|0;f=c[z>>2]|0;wn(g,f);i=y;return}if(a[(c[u>>2]|0)+18>>0]|0){lx(q);f=c[v>>2]|0;g=c[p>>2]|0;Xb(f,g);g=c[v>>2]|0;f=c[o>>2]|0;vn(g,f);f=c[v>>2]|0;g=c[n>>2]|0;sn(f,g);g=c[v>>2]|0;f=c[z>>2]|0;wn(g,f);i=y;return}fp(c[x>>2]|0,35,c[w>>2]|0,1)|0;Nt(c[x>>2]|0,1);Ot(c[x>>2]|0,0,0,24544,0)|0;lx(q);f=c[v>>2]|0;g=c[p>>2]|0;Xb(f,g);g=c[v>>2]|0;f=c[o>>2]|0;vn(g,f);f=c[v>>2]|0;g=c[n>>2]|0;sn(f,g);g=c[v>>2]|0;f=c[z>>2]|0;wn(g,f);i=y;return}else if((T|0)==182){lx(q);f=c[v>>2]|0;g=c[p>>2]|0;Xb(f,g);g=c[v>>2]|0;f=c[o>>2]|0;vn(g,f);f=c[v>>2]|0;g=c[n>>2]|0;sn(f,g);g=c[v>>2]|0;f=c[z>>2]|0;wn(g,f);i=y;return}} + + + +function Ys(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0;B=i;i=i+160|0;J=B;k=B+140|0;l=B+136|0;p=B+132|0;q=B+128|0;x=B+124|0;o=B+120|0;m=B+116|0;n=B+112|0;K=B+108|0;h=B+144|0;r=B+104|0;G=B+100|0;s=B+96|0;F=B+92|0;E=B+72|0;D=B+68|0;z=B+64|0;C=B+60|0;y=B+56|0;t=B+52|0;u=B+48|0;A=B+44|0;w=B+40|0;v=B+36|0;I=B+32|0;H=B+12|0;c[l>>2]=b;c[p>>2]=e;c[q>>2]=f;c[x>>2]=g;c[o>>2]=-1;c[m>>2]=0;c[n>>2]=dp(c[l>>2]|0)|0;if(!(c[n>>2]|0)){c[k>>2]=0;b=c[k>>2]|0;i=B;return b|0}ws(c[l>>2]|0);if(!(c[(c[p>>2]|0)+4>>2]&32))c[o>>2]=_s(c[l>>2]|0)|0;if((d[(c[l>>2]|0)+450>>0]|0)==2){b=c[c[l>>2]>>2]|0;f=(d[c[p>>2]>>0]|0)==75?19296:19304;e=c[(c[l>>2]|0)+468>>2]|0;c[J>>2]=(c[o>>2]|0)>=0?1216:19280;c[J+4>>2]=f;c[J+8>>2]=e;c[K>>2]=Te(b,19248,J)|0;hp(c[n>>2]|0,155,c[(c[l>>2]|0)+464>>2]|0,0,0,c[K>>2]|0,-1)|0}J=c[p>>2]|0;do if((d[c[p>>2]>>0]|0)==75){c[G>>2]=c[J+12>>2];c[s>>2]=0;a[h>>0]=bq(c[G>>2]|0)|0;e=(c[l>>2]|0)+68|0;b=c[e>>2]|0;c[e>>2]=b+1;c[(c[p>>2]|0)+28>>2]=b;c[r>>2]=fp(c[n>>2]|0,57,c[(c[p>>2]|0)+28>>2]|0,((c[x>>2]|0)!=0^1)&1)|0;if(c[x>>2]|0)G=0;else G=Xr(c[c[l>>2]>>2]|0,1,1)|0;c[s>>2]=G;G=(c[p>>2]|0)+20|0;do if(!(c[(c[p>>2]|0)+4>>2]&2048)){if(c[G>>2]|0){c[C>>2]=c[(c[p>>2]|0)+20>>2];if(!(a[h>>0]|0))a[h>>0]=65;if(c[s>>2]|0){b=cq(c[l>>2]|0,c[(c[p>>2]|0)+12>>2]|0)|0;c[(c[s>>2]|0)+20>>2]=b}c[t>>2]=kp(c[l>>2]|0)|0;c[u>>2]=kp(c[l>>2]|0)|0;if(c[x>>2]|0)fp(c[n>>2]|0,28,0,c[u>>2]|0)|0;c[z>>2]=c[c[C>>2]>>2];c[y>>2]=c[(c[C>>2]|0)+4>>2];while(1){if((c[z>>2]|0)<=0)break;c[w>>2]=c[c[y>>2]>>2];if((c[o>>2]|0)>=0?(Vs(c[w>>2]|0)|0)==0:0){cf(c[n>>2]|0,c[o>>2]|0);c[o>>2]=-1}if((c[x>>2]|0)!=0?(yq(c[w>>2]|0,v)|0)!=0:0)ip(c[n>>2]|0,84,c[(c[p>>2]|0)+28>>2]|0,c[u>>2]|0,c[v>>2]|0)|0;else j=29;do if((j|0)==29){j=0;c[A>>2]=Qs(c[l>>2]|0,c[w>>2]|0,c[t>>2]|0)|0;D=c[n>>2]|0;C=c[A>>2]|0;if(c[x>>2]|0){fp(D,38,C,(Mr(c[n>>2]|0)|0)+2|0)|0;ip(c[n>>2]|0,75,c[(c[p>>2]|0)+28>>2]|0,c[u>>2]|0,c[A>>2]|0)|0;break}else{hp(D,49,C,1,c[u>>2]|0,h,1)|0;Us(c[l>>2]|0,c[A>>2]|0,1);fp(c[n>>2]|0,110,c[(c[p>>2]|0)+28>>2]|0,c[u>>2]|0)|0;break}}while(0);c[z>>2]=(c[z>>2]|0)+ -1;c[y>>2]=(c[y>>2]|0)+20}lp(c[l>>2]|0,c[t>>2]|0);lp(c[l>>2]|0,c[u>>2]|0)}}else{c[F>>2]=c[G>>2];$s(E,11,c[(c[p>>2]|0)+28>>2]|0);a[E+1>>0]=a[h>>0]|0;c[(c[F>>2]|0)+8>>2]=0;if(!(ao(c[l>>2]|0,c[F>>2]|0,E)|0)){c[D>>2]=c[c[F>>2]>>2];b=at(c[l>>2]|0,c[(c[p>>2]|0)+12>>2]|0,c[c[(c[D>>2]|0)+4>>2]>>2]|0)|0;c[(c[s>>2]|0)+20>>2]=b;break}eh(c[s>>2]|0);c[k>>2]=0;b=c[k>>2]|0;i=B;return b|0}while(0);if(c[s>>2]|0)bf(c[n>>2]|0,c[r>>2]|0,c[s>>2]|0,-6)}else{c[I>>2]=c[J+20>>2];e=(c[l>>2]|0)+72|0;b=(c[e>>2]|0)+1|0;c[e>>2]=b;$s(H,0,b);if((d[c[p>>2]>>0]|0)==119){a[H>>0]=10;c[H+8>>2]=c[H+4>>2];fp(c[n>>2]|0,28,0,c[H+4>>2]|0)|0}else{a[H>>0]=3;fp(c[n>>2]|0,25,0,c[H+4>>2]|0)|0}wn(c[c[l>>2]>>2]|0,c[(c[I>>2]|0)+60>>2]|0);b=Rn(c[l>>2]|0,132,0,0,10160)|0;c[(c[I>>2]|0)+60>>2]=b;c[(c[I>>2]|0)+8>>2]=0;if(!(ao(c[l>>2]|0,c[I>>2]|0,H)|0)){c[m>>2]=c[H+4>>2];break}c[k>>2]=0;b=c[k>>2]|0;i=B;return b|0}while(0);if(c[q>>2]|0)bt(c[n>>2]|0,c[(c[p>>2]|0)+28>>2]|0,c[q>>2]|0);if((c[o>>2]|0)>=0)zp(c[n>>2]|0,c[o>>2]|0);us(c[l>>2]|0);c[k>>2]=c[m>>2];b=c[k>>2]|0;i=B;return b|0}function Zs(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=i;i=i+16|0;f=e+4|0;g=e;c[f>>2]=b;c[g>>2]=d;a[(c[f>>2]|0)+38>>0]=a[c[f>>2]>>0]|0;a[c[f>>2]>>0]=-97;c[(c[f>>2]|0)+28>>2]=c[g>>2];b=(c[f>>2]|0)+4|0;c[b>>2]=c[b>>2]&-4097;i=e;return}function _s(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+16|0;e=b+4|0;d=b;c[e>>2]=a;c[d>>2]=dp(c[e>>2]|0)|0;d=c[d>>2]|0;e=(c[e>>2]|0)+80|0;a=c[e>>2]|0;c[e>>2]=a+1;a=Ir(d,44,a)|0;i=b;return a|0}function $s(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;f=i;i=i+16|0;g=f+8|0;j=f+4|0;h=f;c[g>>2]=b;c[j>>2]=d;c[h>>2]=e;a[c[g>>2]>>0]=c[j>>2];c[(c[g>>2]|0)+4>>2]=c[h>>2];a[(c[g>>2]|0)+1>>0]=0;c[(c[g>>2]|0)+8>>2]=0;c[(c[g>>2]|0)+12>>2]=0;i=f;return}function at(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;i=i+16|0;h=e+12|0;g=e+8|0;j=e+4|0;f=e;c[h>>2]=a;c[g>>2]=b;c[j>>2]=d;if(c[(c[g>>2]|0)+4>>2]&256){c[f>>2]=cq(c[h>>2]|0,c[g>>2]|0)|0;a=c[f>>2]|0;i=e;return a|0}if((c[j>>2]|0)!=0?(c[(c[j>>2]|0)+4>>2]&256|0)!=0:0){c[f>>2]=cq(c[h>>2]|0,c[j>>2]|0)|0;a=c[f>>2]|0;i=e;return a|0}c[f>>2]=cq(c[h>>2]|0,c[g>>2]|0)|0;if(c[f>>2]|0){a=c[f>>2]|0;i=e;return a|0}c[f>>2]=cq(c[h>>2]|0,c[j>>2]|0)|0;a=c[f>>2]|0;i=e;return a|0}function bt(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;i=i+16|0;g=e+12|0;j=e+8|0;h=e+4|0;f=e;c[g>>2]=a;c[j>>2]=b;c[h>>2]=d;fp(c[g>>2]|0,25,0,c[h>>2]|0)|0;c[f>>2]=Ir(c[g>>2]|0,108,c[j>>2]|0)|0;ip(c[g>>2]|0,47,c[j>>2]|0,0,c[h>>2]|0)|0;Xe(c[g>>2]|0,-128);zp(c[g>>2]|0,c[f>>2]|0);i=e;return}function ct(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0;h=i;i=i+32|0;j=h+16|0;o=h+12|0;m=h+8|0;n=h+20|0;k=h+4|0;l=h;c[j>>2]=b;c[o>>2]=e;c[m>>2]=f;a[n>>0]=g;c[k>>2]=c[(c[j>>2]|0)+316>>2];c[o>>2]=Bq(c[c[j>>2]>>2]|0,c[o>>2]|0,0)|0;c[k>>2]=eo(c[j>>2]|0,c[k>>2]|0,c[o>>2]|0)|0;if(!(c[k>>2]|0)){b=c[k>>2]|0;o=c[j>>2]|0;o=o+316|0;c[o>>2]=b;i=h;return}c[l>>2]=(c[(c[k>>2]|0)+4>>2]|0)+(((c[c[k>>2]>>2]|0)-1|0)*20|0);c[(c[l>>2]|0)+16>>2]=c[m>>2];b=(c[l>>2]|0)+13|0;a[b>>0]=a[b>>0]&-5|((d[n>>0]|0)&1)<<2&255;b=c[k>>2]|0;o=c[j>>2]|0;o=o+316|0;c[o>>2]=b;i=h;return}function dt(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;f=i;i=i+16|0;e=f+8|0;g=f+4|0;h=f;c[g>>2]=b;c[h>>2]=d;if((c[h>>2]|0)<0)c[h>>2]=(c[(c[g>>2]|0)+32>>2]|0)-1;if(a[(c[c[g>>2]>>2]|0)+64>>0]|0){c[e>>2]=19312;b=c[e>>2]|0;i=f;return b|0}else{c[e>>2]=(c[(c[g>>2]|0)+4>>2]|0)+((c[h>>2]|0)*20|0);b=c[e>>2]|0;i=f;return b|0}return 0}function et(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;e=i;i=i+32|0;f=e+28|0;g=e+24|0;d=e;c[f>>2]=a;c[g>>2]=b;c[d+0>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;c[d+16>>2]=0;c[d+20>>2]=0;c[d+20>>2]=c[g>>2];c[d>>2]=44;c[d+4>>2]=45;sq(d,c[f>>2]|0)|0;i=e;return c[d+20>>2]|0}function ft(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0;f=i;i=i+16|0;g=f+8|0;h=f+4|0;j=f;c[h>>2]=b;c[j>>2]=e;if((c[(c[h>>2]|0)+20>>2]|0)==2?(c[(c[j>>2]|0)+4>>2]&1|0)!=0:0){c[(c[h>>2]|0)+20>>2]=0;c[g>>2]=2;b=c[g>>2]|0;i=f;return b|0}a:do switch(d[c[j>>2]>>0]|0|0){case 153:{if((c[(c[h>>2]|0)+20>>2]|0)<3?(c[(c[j>>2]|0)+4>>2]&524288|0)==0:0){e=8;break a}c[g>>2]=0;b=c[g>>2]|0;i=f;return b|0};case 135:{if((c[(c[h>>2]|0)+20>>2]|0)==4){a[c[j>>2]>>0]=101;e=13;break a}if((c[(c[h>>2]|0)+20>>2]|0)==3){c[(c[h>>2]|0)+20>>2]=0;c[g>>2]=2;b=c[g>>2]|0;i=f;return b|0}else e=13;break};case 156:case 155:case 154:case 27:{e=8;break};default:e=13}while(0);if((e|0)==8){c[(c[h>>2]|0)+20>>2]=0;c[g>>2]=2;b=c[g>>2]|0;i=f;return b|0}else if((e|0)==13){c[g>>2]=0;b=c[g>>2]|0;i=f;return b|0}return 0}function gt(a,b){a=a|0;b=b|0;var d=0,e=0;d=i;i=i+16|0;e=d+4|0;c[e>>2]=a;c[d>>2]=b;c[(c[e>>2]|0)+20>>2]=0;i=d;return 2}function ht(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+16|0;h=e+8|0;g=e+4|0;f=e;c[h>>2]=b;c[g>>2]=d;c[f>>2]=Qe(Fs(c[h>>2]|0)|0,8,0)|0;if(!(c[f>>2]|0)){h=c[f>>2]|0;i=e;return h|0}h=c[f>>2]|0;b=c[g>>2]|0;a[h+0>>0]=a[b+0>>0]|0;a[h+1>>0]=a[b+1>>0]|0;a[h+2>>0]=a[b+2>>0]|0;a[h+3>>0]=a[b+3>>0]|0;a[h+4>>0]=a[b+4>>0]|0;a[h+5>>0]=a[b+5>>0]|0;a[h+6>>0]=a[b+6>>0]|0;a[h+7>>0]=a[b+7>>0]|0;h=c[f>>2]|0;i=e;return h|0}function it(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;i=i+16|0;j=e+12|0;g=e+8|0;h=e+4|0;f=e;c[j>>2]=b;c[g>>2]=d;c[h>>2]=0;c[f>>2]=(c[j>>2]|0)+116;while(1){if((c[h>>2]|0)>=10)break;if((c[(c[f>>2]|0)+12>>2]|0)==(c[g>>2]|0))a[(c[f>>2]|0)+6>>0]=0;c[h>>2]=(c[h>>2]|0)+1;c[f>>2]=(c[f>>2]|0)+20}i=e;return}function jt(d,f,g,h){d=d|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;q=i;i=i+32|0;l=q+28|0;o=q+24|0;p=q+20|0;j=q+16|0;r=q+12|0;s=q+8|0;m=q+4|0;n=q;c[l>>2]=d;c[o>>2]=f;c[p>>2]=g;c[j>>2]=h;if((e[(c[c[l>>2]>>2]|0)+60>>1]|0)&2){i=q;return}c[r>>2]=0;c[n>>2]=(c[l>>2]|0)+116;while(1){if((c[r>>2]|0)>=10)break;if(!(c[(c[n>>2]|0)+12>>2]|0)){k=5;break}c[r>>2]=(c[r>>2]|0)+1;c[n>>2]=(c[n>>2]|0)+20}if((k|0)==5){c[(c[n>>2]|0)+8>>2]=c[(c[l>>2]|0)+100>>2];c[c[n>>2]>>2]=c[o>>2];b[(c[n>>2]|0)+4>>1]=c[p>>2];c[(c[n>>2]|0)+12>>2]=c[j>>2];a[(c[n>>2]|0)+6>>0]=0;f=(c[l>>2]|0)+104|0;d=c[f>>2]|0;c[f>>2]=d+1;c[(c[n>>2]|0)+16>>2]=d;i=q;return}c[s>>2]=2147483647;c[m>>2]=-1;c[r>>2]=0;c[n>>2]=(c[l>>2]|0)+116;while(1){if((c[r>>2]|0)>=10)break;if((c[(c[n>>2]|0)+16>>2]|0)<(c[s>>2]|0)){c[m>>2]=c[r>>2];c[s>>2]=c[(c[n>>2]|0)+16>>2]}c[r>>2]=(c[r>>2]|0)+1;c[n>>2]=(c[n>>2]|0)+20}if((c[m>>2]|0)<0){i=q;return}c[n>>2]=(c[l>>2]|0)+116+((c[m>>2]|0)*20|0);c[(c[n>>2]|0)+8>>2]=c[(c[l>>2]|0)+100>>2];c[c[n>>2]>>2]=c[o>>2];b[(c[n>>2]|0)+4>>1]=c[p>>2];c[(c[n>>2]|0)+12>>2]=c[j>>2];a[(c[n>>2]|0)+6>>0]=0;f=(c[l>>2]|0)+104|0;d=c[f>>2]|0;c[f>>2]=d+1;c[(c[n>>2]|0)+16>>2]=d;i=q;return}function kt(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;i=i+16|0;f=e+6|0;j=e;g=e+5|0;h=e+4|0;c[j>>2]=b;a[g>>0]=d;a[h>>0]=bq(c[j>>2]|0)|0;if((a[h>>0]|0)!=0?(a[g>>0]|0)!=0:0){if((a[h>>0]|0)<67?(a[g>>0]|0)<67:0){a[f>>0]=65;j=a[f>>0]|0;i=e;return j|0}a[f>>0]=67;j=a[f>>0]|0;i=e;return j|0}if((a[h>>0]|0)!=0|(a[g>>0]|0)!=0){a[f>>0]=(a[h>>0]|0)+(a[g>>0]|0);j=a[f>>0]|0;i=e;return j|0}else{a[f>>0]=65;j=a[f>>0]|0;i=e;return j|0}return 0}function lt(a){a=a|0;var b=0,f=0,g=0,h=0,j=0,k=0;f=i;i=i+32|0;b=f+16|0;g=f+12|0;k=f+8|0;h=f+4|0;j=f;c[g>>2]=a;do if(c[g>>2]|0){if(c[(c[g>>2]|0)+52>>2]|0){c[b>>2]=0;break}if((e[(c[g>>2]|0)+6>>1]|0)&5){c[b>>2]=0;break}if(c[(c[g>>2]|0)+60>>2]|0){c[b>>2]=0;break}if(c[(c[g>>2]|0)+36>>2]|0){c[b>>2]=0;break}c[k>>2]=c[(c[g>>2]|0)+32>>2];if((c[c[k>>2]>>2]|0)!=1){c[b>>2]=0;break}if(c[(c[k>>2]|0)+28>>2]|0){c[b>>2]=0;break}c[j>>2]=c[(c[k>>2]|0)+24>>2];if(!(c[j>>2]|0)){c[b>>2]=0;break}if((d[(c[j>>2]|0)+44>>0]|0)&16){c[b>>2]=0;break}c[h>>2]=c[c[g>>2]>>2];if((c[c[h>>2]>>2]|0)!=1){c[b>>2]=0;break}if((d[c[c[(c[h>>2]|0)+4>>2]>>2]>>0]|0|0)!=154){c[b>>2]=0;break}else{c[b>>2]=1;break}}else c[b>>2]=0;while(0);i=f;return c[b>>2]|0}function mt(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;f=i;i=i+16|0;e=f+4|0;j=f;g=f+9|0;h=f+8|0;c[j>>2]=b;a[g>>0]=d;a[h>>0]=Ns(c[j>>2]|0)|0;d=a[h>>0]|0;if((d|0)==66)c[e>>2]=(a[g>>0]|0)==66&1;else if((d|0)==65)c[e>>2]=1;else c[e>>2]=(a[g>>0]|0)>=67&1;i=f;return c[e>>2]|0}function nt(a){a=a|0;var b=0,d=0,e=0,f=0;d=i;i=i+16|0;e=d+8|0;f=d+4|0;b=d;c[e>>2]=a;c[f>>2]=c[(c[e>>2]|0)+12>>2];c[(c[e>>2]|0)+12>>2]=0;c[b>>2]=Vs(c[e>>2]|0)|0;c[(c[e>>2]|0)+12>>2]=c[f>>2];i=d;return c[b>>2]|0}function ot(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;g=i;i=i+16|0;j=g+8|0;k=g+4|0;h=g;f=g+12|0;c[j>>2]=b;c[k>>2]=d;c[h>>2]=e;a[f>>0]=bq(c[k>>2]|0)|0;b=(kt(c[j>>2]|0,a[f>>0]|0)|0)&255;a[f>>0]=b|c[h>>2]&255;i=g;return a[f>>0]|0}function pt(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;a=et(c[d>>2]|0,2)|0;i=b;return a|0}function qt(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,j=0,k=0,l=0;g=i;i=i+32|0;f=g+16|0;j=g+12|0;k=g+8|0;l=g+4|0;h=g;c[j>>2]=a;c[k>>2]=d;c[l>>2]=0;while(1){if((c[l>>2]|0)>=(e[(c[k>>2]|0)+52>>1]|0)){d=7;break}c[h>>2]=c[(c[(c[k>>2]|0)+32>>2]|0)+(c[l>>2]<<2)>>2];if((b[(c[(c[k>>2]|0)+4>>2]|0)+(c[l>>2]<<1)>>1]|0)>=0?0==(xc(c[h>>2]|0,c[j>>2]|0)|0):0){d=5;break}c[l>>2]=(c[l>>2]|0)+1}if((d|0)==5){c[f>>2]=1;a=c[f>>2]|0;i=g;return a|0}else if((d|0)==7){c[f>>2]=0;a=c[f>>2]|0;i=g;return a|0}return 0}function rt(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;h=i;i=i+160|0;f=h;k=h+28|0;o=h+20|0;j=h+16|0;m=h+12|0;l=h+8|0;n=h+4|0;g=h+32|0;c[k>>2]=b;c[h+24>>2]=d;c[o>>2]=e;c[j>>2]=Ed(c[c[o>>2]>>2]|0)|0;c[m>>2]=pe(c[k>>2]|0)|0;c[n>>2]=0;if(!(c[j>>2]|0))c[j>>2]=1216;c[l>>2]=0;while(1){if((c[l>>2]|0)>=(c[(c[m>>2]|0)+20>>2]|0))break;c[n>>2]=(c[(c[m>>2]|0)+16>>2]|0)+(c[l>>2]<<4);if((c[(c[n>>2]|0)+4>>2]|0)!=0?(xc(c[c[n>>2]>>2]|0,c[j>>2]|0)|0)==0:0)break;c[l>>2]=(c[l>>2]|0)+1}do if((c[l>>2]|0)>=(c[(c[m>>2]|0)+20>>2]|0)){c[f>>2]=c[j>>2];sc(128,g,19424,f)|0}else{if((c[l>>2]|0)<2){c[f>>2]=c[j>>2];sc(128,g,19448,f)|0;break}if(!(a[(c[m>>2]|0)+62>>0]|0)){sc(128,g,19480,f)|0;break}if((Tc(c[(c[n>>2]|0)+4>>2]|0)|0)==0?(Wk(c[(c[n>>2]|0)+4>>2]|0)|0)==0:0){Kk(c[(c[n>>2]|0)+4>>2]|0)|0;c[(c[n>>2]|0)+4>>2]=0;c[(c[n>>2]|0)+12>>2]=0;cd(c[m>>2]|0);i=h;return}c[f>>2]=c[j>>2];sc(128,g,19528,f)|0}while(0);Ud(c[k>>2]|0,g,-1);i=h;return}function st(a,e,f,g,h,j,k){a=a|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;y=i;i=i+80|0;q=y+76|0;p=y+72|0;o=y+68|0;l=y+64|0;r=y+60|0;s=y+56|0;t=y+52|0;v=y+48|0;z=y+16|0;w=y+12|0;x=y+8|0;n=y+4|0;u=y;c[q>>2]=a;c[p>>2]=e;c[o>>2]=f;c[l>>2]=g;c[r>>2]=h;c[s>>2]=j;c[t>>2]=k;c[x>>2]=c[c[q>>2]>>2];c[z+0>>2]=0;c[z+4>>2]=0;c[z+8>>2]=0;c[z+12>>2]=0;c[z+16>>2]=0;c[z+20>>2]=0;c[z+24>>2]=0;c[z+28>>2]=0;c[z>>2]=c[q>>2];a=tt(z,c[r>>2]|0)|0;c[v>>2]=a;do if((0==(a|0)?(a=tt(z,c[s>>2]|0)|0,c[v>>2]=a,0==(a|0)):0)?(a=tt(z,c[t>>2]|0)|0,c[v>>2]=a,0==(a|0)):0){if(c[l>>2]|0){if((d[c[l>>2]>>0]|0)==97)c[u>>2]=c[(c[l>>2]|0)+8>>2];else c[u>>2]=0;c[v>>2]=ap(c[q>>2]|0,c[p>>2]|0,c[u>>2]|0,0,0)|0;if(c[v>>2]|0)break}c[w>>2]=dp(c[q>>2]|0)|0;c[n>>2]=ys(c[q>>2]|0,4)|0;Os(c[q>>2]|0,c[r>>2]|0,c[n>>2]|0);Os(c[q>>2]|0,c[s>>2]|0,(c[n>>2]|0)+1|0);Os(c[q>>2]|0,c[t>>2]|0,(c[n>>2]|0)+2|0);if(c[w>>2]|0){ip(c[w>>2]|0,1,0,(c[n>>2]|0)+3-(b[c[o>>2]>>1]|0)|0,(c[n>>2]|0)+3|0)|0;Xe(c[w>>2]|0,b[c[o>>2]>>1]&255);bf(c[w>>2]|0,-1,c[o>>2]|0,-5);Ir(c[w>>2]|0,142,(c[p>>2]|0)==24&1)|0}}else m=4;while(0);if((m|0)==4){a=(c[q>>2]|0)+64|0;c[a>>2]=(c[a>>2]|0)+1}wn(c[x>>2]|0,c[r>>2]|0);wn(c[x>>2]|0,c[s>>2]|0);wn(c[x>>2]|0,c[t>>2]|0);i=y;return}function tt(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0;g=i;i=i+16|0;j=g+8|0;h=g+4|0;f=g;c[j>>2]=b;c[h>>2]=e;c[f>>2]=0;do if(c[h>>2]|0)if((d[c[h>>2]>>0]|0|0)!=27){c[f>>2]=vq(c[j>>2]|0,c[h>>2]|0)|0;break}else{a[c[h>>2]>>0]=97;break}while(0);i=g;return c[f>>2]|0}function ut(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;k=i;i=i+80|0;j=k;l=k+68|0;z=k+60|0;x=k+56|0;n=k+52|0;o=k+48|0;p=k+44|0;u=k+40|0;t=k+36|0;m=k+32|0;h=k+28|0;g=k+24|0;r=k+20|0;s=k+16|0;y=k+12|0;q=k+8|0;v=k+4|0;c[l>>2]=b;c[k+64>>2]=e;c[z>>2]=f;c[n>>2]=0;c[o>>2]=pe(c[l>>2]|0)|0;c[t>>2]=0;c[m>>2]=0;c[r>>2]=0;c[u>>2]=Ed(c[c[z>>2]>>2]|0)|0;c[p>>2]=Ed(c[(c[z>>2]|0)+4>>2]|0)|0;if(!(c[u>>2]|0))c[u>>2]=1216;if(!(c[p>>2]|0))c[p>>2]=1216;f=c[o>>2]|0;do if((c[(c[o>>2]|0)+20>>2]|0)<((c[(c[o>>2]|0)+116>>2]|0)+2|0)){if(!(a[f+62>>0]|0)){c[r>>2]=Te(c[o>>2]|0,19648,j)|0;break}c[x>>2]=0;while(1){if((c[x>>2]|0)>=(c[(c[o>>2]|0)+20>>2]|0))break;c[y>>2]=c[(c[(c[o>>2]|0)+16>>2]|0)+(c[x>>2]<<4)>>2];if(!(xc(c[y>>2]|0,c[p>>2]|0)|0)){w=12;break}c[x>>2]=(c[x>>2]|0)+1}if((w|0)==12){z=c[o>>2]|0;c[j>>2]=c[p>>2];c[r>>2]=Te(z,19696,j)|0;break}w=c[o>>2]|0;do if((c[(c[o>>2]|0)+16>>2]|0)==((c[o>>2]|0)+456|0)){c[g>>2]=Qe(w,48,0)|0;if(!(c[g>>2]|0)){i=k;return}else{z=c[g>>2]|0;b=c[(c[o>>2]|0)+16>>2]|0;c[z+0>>2]=c[b+0>>2];c[z+4>>2]=c[b+4>>2];c[z+8>>2]=c[b+8>>2];c[z+12>>2]=c[b+12>>2];c[z+16>>2]=c[b+16>>2];c[z+20>>2]=c[b+20>>2];c[z+24>>2]=c[b+24>>2];c[z+28>>2]=c[b+28>>2];break}}else{c[g>>2]=Fk(w,c[(c[o>>2]|0)+16>>2]|0,(c[(c[o>>2]|0)+20>>2]|0)+1<<4,0)|0;if(!(c[g>>2]|0)){i=k;return}}while(0);c[(c[o>>2]|0)+16>>2]=c[g>>2];c[g>>2]=(c[(c[o>>2]|0)+16>>2]|0)+(c[(c[o>>2]|0)+20>>2]<<4);z=c[g>>2]|0;c[z+0>>2]=0;c[z+4>>2]=0;c[z+8>>2]=0;c[z+12>>2]=0;c[h>>2]=c[(c[o>>2]|0)+48>>2];c[n>>2]=qh(c[(c[c[o>>2]>>2]|0)+16>>2]|0,c[u>>2]|0,h,s,t,m)|0;if(c[n>>2]|0){if((c[n>>2]|0)==7)a[(c[o>>2]|0)+64>>0]=1;Ud(c[l>>2]|0,c[m>>2]|0,-1);hc(c[m>>2]|0);i=k;return}c[h>>2]=c[h>>2]|256;c[n>>2]=rh(c[s>>2]|0,c[t>>2]|0,c[o>>2]|0,(c[g>>2]|0)+4|0,0,c[h>>2]|0)|0;hc(c[t>>2]|0);z=(c[o>>2]|0)+20|0;c[z>>2]=(c[z>>2]|0)+1;if((c[n>>2]|0)!=19){if(!(c[n>>2]|0)){z=sh(c[o>>2]|0,c[(c[g>>2]|0)+4>>2]|0)|0;c[(c[g>>2]|0)+12>>2]=z;if(c[(c[g>>2]|0)+12>>2]|0){if((d[(c[(c[g>>2]|0)+12>>2]|0)+76>>0]|0)!=0?(d[(c[(c[g>>2]|0)+12>>2]|0)+77>>0]|0)!=(d[(c[(c[(c[o>>2]|0)+16>>2]|0)+12>>2]|0)+77>>0]|0):0){c[r>>2]=Te(c[o>>2]|0,18744,j)|0;c[n>>2]=1}}else c[n>>2]=7;c[q>>2]=Sb(c[(c[g>>2]|0)+4>>2]|0)|0;vt(c[q>>2]|0,d[(c[o>>2]|0)+65>>0]|0)|0;z=c[(c[g>>2]|0)+4>>2]|0;wt(z,wt(c[(c[(c[o>>2]|0)+16>>2]|0)+4>>2]|0,-1)|0)|0;xt(c[(c[g>>2]|0)+4>>2]|0,3|c[(c[o>>2]|0)+24>>2]&28)|0}}else{c[n>>2]=1;c[r>>2]=Te(c[o>>2]|0,19728,j)|0}a[(c[g>>2]|0)+8>>0]=3;z=ne(c[o>>2]|0,c[p>>2]|0)|0;c[c[g>>2]>>2]=z;if((c[n>>2]|0)==0?(c[c[g>>2]>>2]|0)==0:0)c[n>>2]=7;if(!(c[n>>2]|0)){Rb(c[o>>2]|0);c[n>>2]=_r(c[o>>2]|0,r)|0}if(!(c[n>>2]|0)){i=k;return}c[v>>2]=(c[(c[o>>2]|0)+20>>2]|0)-1;if(c[(c[(c[o>>2]|0)+16>>2]|0)+(c[v>>2]<<4)+4>>2]|0){Kk(c[(c[(c[o>>2]|0)+16>>2]|0)+(c[v>>2]<<4)+4>>2]|0)|0;c[(c[(c[o>>2]|0)+16>>2]|0)+(c[v>>2]<<4)+4>>2]=0;c[(c[(c[o>>2]|0)+16>>2]|0)+(c[v>>2]<<4)+12>>2]=0}cd(c[o>>2]|0);c[(c[o>>2]|0)+20>>2]=c[v>>2];if((c[n>>2]|0)==7|(c[n>>2]|0)==3082){a[(c[o>>2]|0)+64>>0]=1;Xb(c[o>>2]|0,c[r>>2]|0);c[r>>2]=Te(c[o>>2]|0,5400,j)|0;break}if(!(c[r>>2]|0)){z=c[o>>2]|0;c[j>>2]=c[u>>2];c[r>>2]=Te(z,19760,j)|0}}else{c[j>>2]=c[(c[o>>2]|0)+116>>2];c[r>>2]=Te(f,19608,j)|0}while(0);if(c[r>>2]|0){Ud(c[l>>2]|0,c[r>>2]|0,-1);Xb(c[o>>2]|0,c[r>>2]|0)}if(!(c[n>>2]|0)){i=k;return}fe(c[l>>2]|0,c[n>>2]|0);i=k;return}function vt(b,e){b=b|0;e=e|0;var f=0,g=0,h=0;f=i;i=i+16|0;g=f+4|0;h=f;c[g>>2]=b;c[h>>2]=e;if(((c[h>>2]|0)>=0?(a[(c[g>>2]|0)+12>>0]|0)==0:0)?(zt(c[(c[g>>2]|0)+208>>2]|0)|0)==0:0)a[(c[g>>2]|0)+4>>0]=c[h>>2];i=f;return d[(c[g>>2]|0)+4>>0]|0}function wt(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,j=0,k=0;f=i;i=i+16|0;g=f+12|0;h=f+8|0;k=f+4|0;j=f;c[h>>2]=a;c[k>>2]=d;if(!(c[h>>2]|0)){c[g>>2]=0;a=c[g>>2]|0;i=f;return a|0}Pc(c[h>>2]|0);if((c[k>>2]|0)>=0?(a=(c[(c[h>>2]|0)+4>>2]|0)+22|0,b[a>>1]=(e[a>>1]|0)&-5,(c[k>>2]|0)!=0):0){a=(c[(c[h>>2]|0)+4>>2]|0)+22|0;b[a>>1]=e[a>>1]|0|4}c[j>>2]=((e[(c[(c[h>>2]|0)+4>>2]|0)+22>>1]|0)&4|0)!=0&1;c[g>>2]=c[j>>2];a=c[g>>2]|0;i=f;return a|0}function xt(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;i=i+16|0;g=d+8|0;e=d+4|0;f=d;c[g>>2]=a;c[e>>2]=b;c[f>>2]=c[(c[g>>2]|0)+4>>2];Pc(c[g>>2]|0);yt(c[c[f>>2]>>2]|0,c[e>>2]|0);i=d;return 0}function yt(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0;g=i;i=i+16|0;h=g+8|0;f=g+4|0;j=g;c[h>>2]=b;c[f>>2]=e;c[j>>2]=c[f>>2]&3;if((c[j>>2]|0)==1)b=1;else b=(d[(c[h>>2]|0)+12>>0]|0)!=0;a[(c[h>>2]|0)+7>>0]=b?1:0;if((c[j>>2]|0)==3)j=(a[(c[h>>2]|0)+12>>0]|0)!=0^1;else j=0;a[(c[h>>2]|0)+8>>0]=j?1:0;do if(!(a[(c[h>>2]|0)+7>>0]|0)){if(c[f>>2]&4){a[(c[h>>2]|0)+11>>0]=3;a[(c[h>>2]|0)+9>>0]=3;break}e=(c[f>>2]&8|0)!=0;a[(c[h>>2]|0)+11>>0]=2;j=(c[h>>2]|0)+9|0;if(e){a[j>>0]=3;break}else{a[j>>0]=2;break}}else{a[(c[h>>2]|0)+11>>0]=0;a[(c[h>>2]|0)+9>>0]=0}while(0);a[(c[h>>2]|0)+10>>0]=a[(c[h>>2]|0)+11>>0]|0;if(a[(c[h>>2]|0)+8>>0]|0){e=(c[h>>2]|0)+10|0;a[e>>0]=d[e>>0]|32}h=(c[h>>2]|0)+20|0;j=d[h>>0]|0;if(c[f>>2]&16){a[h>>0]=j&-2;i=g;return}else{a[h>>0]=j|1;i=g;return}}function zt(a){a=a|0;var b=0,e=0;b=i;i=i+16|0;e=b;c[e>>2]=a;if(!(c[e>>2]|0)){e=0;e=e&1;i=b;return e|0}e=(d[(c[e>>2]|0)+43>>0]|0|0)==2;e=e&1;i=b;return e|0}function At(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;d=i;i=i+32|0;j=d+16|0;e=d+12|0;f=d+8|0;g=d+4|0;h=d;c[j>>2]=a;c[e>>2]=b;c[f>>2]=c[c[j>>2]>>2];c[g>>2]=0;while(1){if((c[g>>2]|0)>=(c[(c[f>>2]|0)+20>>2]|0))break;c[h>>2]=(c[(c[f>>2]|0)+16>>2]|0)+(c[g>>2]<<4);do if(c[(c[h>>2]|0)+4>>2]|0){if((c[e>>2]|0)!=0?0!=(xc(c[e>>2]|0,c[c[h>>2]>>2]|0)|0):0)break;qp(c[j>>2]|0,c[g>>2]|0)}while(0);c[g>>2]=(c[g>>2]|0)+1}i=d;return}function Bt(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;j=i;i=i+48|0;e=j+36|0;d=j+32|0;n=j+28|0;g=j+24|0;o=j+20|0;f=j+16|0;m=j+12|0;l=j+8|0;k=j+4|0;h=j;c[e>>2]=a;c[d>>2]=b;c[o>>2]=c[c[e>>2]>>2];c[f>>2]=Ve(c[c[e>>2]>>2]|0,c[(c[d>>2]|0)+20>>2]|0)|0;c[n>>2]=Ct(c[d>>2]|0)|0;c[m>>2]=16;c[l>>2]=c[(c[(c[o>>2]|0)+16>>2]|0)+(c[f>>2]<<4)>>2];c[k>>2]=(c[f>>2]|0)==1?14904:14928;if((c[f>>2]|0)==1)c[m>>2]=14;if(ap(c[e>>2]|0,c[m>>2]|0,c[c[d>>2]>>2]|0,c[c[n>>2]>>2]|0,c[l>>2]|0)|0){i=j;return}if(ap(c[e>>2]|0,9,c[k>>2]|0,0,c[l>>2]|0)|0){i=j;return}o=dp(c[e>>2]|0)|0;c[g>>2]=o;if(!o){i=j;return}pp(c[e>>2]|0,0,c[f>>2]|0);Dt(c[e>>2]|0,c[f>>2]|0);c[h>>2]=Ye(c[g>>2]|0,9,19816,0)|0;bf(c[g>>2]|0,(c[h>>2]|0)+1|0,c[c[d>>2]>>2]|0,0);bf(c[g>>2]|0,(c[h>>2]|0)+4|0,1488,-2);ep(c[e>>2]|0,c[f>>2]|0);fp(c[g>>2]|0,61,0,0)|0;hp(c[g>>2]|0,126,c[f>>2]|0,0,0,c[c[d>>2]>>2]|0,0)|0;if((c[(c[e>>2]|0)+72>>2]|0)>=3){i=j;return}c[(c[e>>2]|0)+72>>2]=3;i=j;return}function Ct(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;a=bh((c[(c[d>>2]|0)+24>>2]|0)+8|0,c[(c[d>>2]|0)+4>>2]|0)|0;i=b;return a|0}function Dt(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;i=i+16|0;e=d+8|0;f=d+4|0;g=d;c[e>>2]=a;c[f>>2]=b;c[g>>2]=dp(c[e>>2]|0)|0;Jr(c[e>>2]|0,c[f>>2]|0,1,1,(c[f>>2]|0)==1?14904:14928);We(c[g>>2]|0,55,0,1,c[f>>2]|0,5)|0;if(c[(c[e>>2]|0)+68>>2]|0){i=d;return}c[(c[e>>2]|0)+68>>2]=1;i=d;return}function Et(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;f=i;i=i+32|0;l=f+12|0;k=f+16|0;j=f+8|0;g=f+4|0;h=f;c[l>>2]=b;a[k>>0]=d;c[j>>2]=e;c[g>>2]=se(c[l>>2]|0,40+(c[(c[j>>2]|0)+4>>2]|0)|0,0)|0;if(!(c[g>>2]|0)){l=c[g>>2]|0;i=f;return l|0}c[h>>2]=(c[g>>2]|0)+40;dF(c[h>>2]|0,c[c[j>>2]>>2]|0,c[(c[j>>2]|0)+4>>2]|0)|0;c[(c[g>>2]|0)+12>>2]=c[h>>2];c[(c[g>>2]|0)+16>>2]=c[(c[j>>2]|0)+4>>2];a[c[g>>2]>>0]=a[k>>0]|0;l=c[g>>2]|0;i=f;return l|0}function Ft(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;f=i;i=i+16|0;g=f+12|0;j=f+8|0;h=f+4|0;e=f;c[g>>2]=a;c[j>>2]=d;c[h>>2]=(c[j>>2]|0)+8;c[e>>2]=np(c[g>>2]|0,0,c[h>>2]|0)|0;Vb(c[c[g>>2]>>2]|0,c[(c[h>>2]|0)+16>>2]|0);c[(c[h>>2]|0)+16>>2]=c[e>>2];if(c[e>>2]|0){j=(c[e>>2]|0)+40|0;b[j>>1]=(b[j>>1]|0)+1<<16>>16}if(!(fr(c[g>>2]|0,c[h>>2]|0)|0)){j=c[e>>2]|0;i=f;return j|0}c[e>>2]=0;j=c[e>>2]|0;i=f;return j|0}function Gt(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;g=i;i=i+32|0;h=g+20|0;n=g+16|0;j=g+12|0;l=g+8|0;k=g+4|0;m=g;c[h>>2]=a;c[n>>2]=b;c[j>>2]=d;c[l>>2]=e;c[k>>2]=f;c[m>>2]=c[c[n>>2]>>2];c[c[h>>2]>>2]=c[n>>2];c[(c[h>>2]|0)+12>>2]=c[(c[(c[m>>2]|0)+16>>2]|0)+(c[j>>2]<<4)>>2];c[(c[h>>2]|0)+4>>2]=c[(c[(c[m>>2]|0)+16>>2]|0)+(c[j>>2]<<4)+12>>2];c[(c[h>>2]|0)+16>>2]=c[l>>2];c[(c[h>>2]|0)+20>>2]=c[k>>2];c[(c[h>>2]|0)+8>>2]=(c[j>>2]|0)==1&1;i=g;return}function Ht(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;h=i;i=i+48|0;d=h;e=h+32|0;f=h+28|0;l=h+24|0;k=h+20|0;j=h+16|0;g=h+12|0;c[f>>2]=a;c[l>>2]=b;if(!(c[l>>2]|0)){c[e>>2]=0;a=c[e>>2]|0;i=h;return a|0}c[j>>2]=c[(c[f>>2]|0)+12>>2];c[k>>2]=0;c[g>>2]=(c[l>>2]|0)+8;while(1){if((c[k>>2]|0)>=(c[c[l>>2]>>2]|0)){b=15;break}if(!(c[(c[f>>2]|0)+8>>2]|0)){if((c[(c[g>>2]|0)+4>>2]|0)!=0?(xc(c[(c[g>>2]|0)+4>>2]|0,c[j>>2]|0)|0)!=0:0){b=8;break}Xb(c[c[c[f>>2]>>2]>>2]|0,c[(c[g>>2]|0)+4>>2]|0);c[(c[g>>2]|0)+4>>2]=0;c[c[g>>2]>>2]=c[(c[f>>2]|0)+4>>2]}if(It(c[f>>2]|0,c[(c[g>>2]|0)+20>>2]|0)|0){b=11;break}if(Jt(c[f>>2]|0,c[(c[g>>2]|0)+44>>2]|0)|0){b=13;break}c[k>>2]=(c[k>>2]|0)+1;c[g>>2]=(c[g>>2]|0)+72}if((b|0)==8){a=c[c[f>>2]>>2]|0;k=c[(c[f>>2]|0)+20>>2]|0;l=c[(c[g>>2]|0)+4>>2]|0;c[d>>2]=c[(c[f>>2]|0)+16>>2];c[d+4>>2]=k;c[d+8>>2]=l;Se(a,20128,d);c[e>>2]=1;a=c[e>>2]|0;i=h;return a|0}else if((b|0)==11){c[e>>2]=1;a=c[e>>2]|0;i=h;return a|0}else if((b|0)==13){c[e>>2]=1;a=c[e>>2]|0;i=h;return a|0}else if((b|0)==15){c[e>>2]=0;a=c[e>>2]|0;i=h;return a|0}return 0}function It(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;i=i+16|0;e=d+8|0;f=d+4|0;g=d;c[f>>2]=a;c[g>>2]=b;while(1){if(!(c[g>>2]|0)){b=20;break}if(Kt(c[f>>2]|0,c[c[g>>2]>>2]|0)|0){b=4;break}if(Ht(c[f>>2]|0,c[(c[g>>2]|0)+32>>2]|0)|0){b=6;break}if(Jt(c[f>>2]|0,c[(c[g>>2]|0)+36>>2]|0)|0){b=8;break}if(Kt(c[f>>2]|0,c[(c[g>>2]|0)+40>>2]|0)|0){b=10;break}if(Jt(c[f>>2]|0,c[(c[g>>2]|0)+44>>2]|0)|0){b=12;break}if(Kt(c[f>>2]|0,c[(c[g>>2]|0)+48>>2]|0)|0){b=14;break}if(Jt(c[f>>2]|0,c[(c[g>>2]|0)+60>>2]|0)|0){b=16;break}if(Jt(c[f>>2]|0,c[(c[g>>2]|0)+64>>2]|0)|0){b=18;break}c[g>>2]=c[(c[g>>2]|0)+52>>2]}if((b|0)==4)c[e>>2]=1;else if((b|0)==6)c[e>>2]=1;else if((b|0)==8)c[e>>2]=1;else if((b|0)==10)c[e>>2]=1;else if((b|0)==12)c[e>>2]=1;else if((b|0)==14)c[e>>2]=1;else if((b|0)==16)c[e>>2]=1;else if((b|0)==18)c[e>>2]=1;else if((b|0)==20)c[e>>2]=0;i=d;return c[e>>2]|0}function Jt(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;g=i;i=i+16|0;j=g;f=g+12|0;h=g+8|0;k=g+4|0;c[h>>2]=b;c[k>>2]=e;while(1){if(!(c[k>>2]|0)){k=16;break}if((d[c[k>>2]>>0]|0)==135){if(!(a[(c[c[c[h>>2]>>2]>>2]|0)+145>>0]|0)){k=6;break}a[c[k>>2]>>0]=101}if(c[(c[k>>2]|0)+4>>2]&16384){k=16;break}b=c[h>>2]|0;e=(c[k>>2]|0)+20|0;if(c[(c[k>>2]|0)+4>>2]&2048){if(It(b,c[e>>2]|0)|0){k=10;break}}else if(Kt(b,c[e>>2]|0)|0){k=12;break}if(Jt(c[h>>2]|0,c[(c[k>>2]|0)+16>>2]|0)|0){k=14;break}c[k>>2]=c[(c[k>>2]|0)+12>>2]}if((k|0)==6){b=c[c[h>>2]>>2]|0;c[j>>2]=c[(c[h>>2]|0)+16>>2];Se(b,20176,j);c[f>>2]=1;b=c[f>>2]|0;i=g;return b|0}else if((k|0)==10){c[f>>2]=1;b=c[f>>2]|0;i=g;return b|0}else if((k|0)==12){c[f>>2]=1;b=c[f>>2]|0;i=g;return b|0}else if((k|0)==14){c[f>>2]=1;b=c[f>>2]|0;i=g;return b|0}else if((k|0)==16){c[f>>2]=0;b=c[f>>2]|0;i=g;return b|0}return 0}function Kt(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;d=i;i=i+32|0;e=d+16|0;f=d+12|0;j=d+8|0;h=d+4|0;g=d;c[f>>2]=a;c[j>>2]=b;if(!(c[j>>2]|0)){c[e>>2]=0;a=c[e>>2]|0;i=d;return a|0}c[h>>2]=0;c[g>>2]=c[(c[j>>2]|0)+4>>2];while(1){if((c[h>>2]|0)>=(c[c[j>>2]>>2]|0)){b=8;break}if(Jt(c[f>>2]|0,c[c[g>>2]>>2]|0)|0){b=6;break}c[h>>2]=(c[h>>2]|0)+1;c[g>>2]=(c[g>>2]|0)+20}if((b|0)==6){c[e>>2]=1;a=c[e>>2]|0;i=d;return a|0}else if((b|0)==8){c[e>>2]=0;a=c[e>>2]|0;i=d;return a|0}return 0}function Lt(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;i=i+16|0;e=d+8|0;f=d+4|0;g=d;c[f>>2]=a;c[g>>2]=b;while(1){if(!(c[g>>2]|0)){b=10;break}if(It(c[f>>2]|0,c[(c[g>>2]|0)+8>>2]|0)|0){b=4;break}if(Jt(c[f>>2]|0,c[(c[g>>2]|0)+20>>2]|0)|0){b=6;break}if(Kt(c[f>>2]|0,c[(c[g>>2]|0)+24>>2]|0)|0){b=8;break}c[g>>2]=c[(c[g>>2]|0)+32>>2]}if((b|0)==4)c[e>>2]=1;else if((b|0)==6)c[e>>2]=1;else if((b|0)==8)c[e>>2]=1;else if((b|0)==10)c[e>>2]=0;i=d;return c[e>>2]|0}function Mt(a){a=a|0;var d=0,e=0;d=i;i=i+16|0;e=d;c[e>>2]=a;a=(c[e>>2]|0)+88|0;b[a>>1]=b[a>>1]&-65|64;i=d;return}function Nt(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,j=0,k=0,l=0;f=i;i=i+32|0;j=f+16|0;l=f+12|0;h=f+8|0;g=f+4|0;k=f;c[j>>2]=a;c[l>>2]=d;c[k>>2]=c[c[j>>2]>>2];hu(c[(c[j>>2]|0)+16>>2]|0,(e[(c[j>>2]|0)+84>>1]|0)<<1);Xb(c[k>>2]|0,c[(c[j>>2]|0)+16>>2]|0);c[g>>2]=c[l>>2]<<1;b[(c[j>>2]|0)+84>>1]=c[l>>2];a=se(c[k>>2]|0,(c[g>>2]|0)*40|0,0)|0;c[h>>2]=a;c[(c[j>>2]|0)+16>>2]=a;if(!(c[(c[j>>2]|0)+16>>2]|0)){i=f;return}while(1){l=c[g>>2]|0;c[g>>2]=l+ -1;if((l|0)<=0)break;b[(c[h>>2]|0)+8>>1]=1;c[(c[h>>2]|0)+32>>2]=c[c[j>>2]>>2];c[h>>2]=(c[h>>2]|0)+40}i=f;return}function Ot(b,d,f,g,h){b=b|0;d=d|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;p=i;i=i+32|0;k=p+28|0;j=p+24|0;r=p+20|0;q=p+16|0;n=p+12|0;m=p+8|0;l=p+4|0;o=p;c[j>>2]=b;c[r>>2]=d;c[q>>2]=f;c[n>>2]=g;c[m>>2]=h;if(a[(c[c[j>>2]>>2]|0)+64>>0]|0){c[k>>2]=7;b=c[k>>2]|0;i=p;return b|0}else{b=(c[r>>2]|0)+($(c[q>>2]|0,e[(c[j>>2]|0)+84>>1]|0)|0)|0;c[o>>2]=(c[(c[j>>2]|0)+16>>2]|0)+(b*40|0);c[l>>2]=Vd(c[o>>2]|0,c[n>>2]|0,-1,1,c[m>>2]|0)|0;c[k>>2]=c[l>>2];b=c[k>>2]|0;i=p;return b|0}return 0}function Pt(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;f=i;i=i+32|0;m=f+24|0;j=f+20|0;l=f;h=f+16|0;g=f+12|0;k=f+8|0;c[m>>2]=a;c[j>>2]=b;b=l;c[b>>2]=d;c[b+4>>2]=e;c[h>>2]=dp(c[m>>2]|0)|0;b=(c[m>>2]|0)+72|0;a=(c[b>>2]|0)+1|0;c[b>>2]=a;c[g>>2]=a;c[k>>2]=Qe(c[c[m>>2]>>2]|0,8,0)|0;if(c[k>>2]|0){m=c[k>>2]|0;c[m+0>>2]=c[l+0>>2];c[m+4>>2]=c[l+4>>2]}hp(c[h>>2]|0,26,0,c[g>>2]|0,0,c[k>>2]|0,-13)|0;Nt(c[h>>2]|0,1);Ot(c[h>>2]|0,0,0,c[j>>2]|0,0)|0;fp(c[h>>2]|0,35,c[g>>2]|0,1)|0;i=f;return}function Qt(a){a=a|0;var b=0,d=0,e=0,f=0;d=i;i=i+16|0;e=d+4|0;f=d;c[f>>2]=a;do if(c[f>>2]|0){if(!(xc(c[f>>2]|0,21072)|0)){c[e>>2]=1;break}if(!(xc(c[f>>2]|0,21064)|0))c[e>>2]=0;else b=6}else b=6;while(0);if((b|0)==6)c[e>>2]=-1;i=d;return c[e>>2]|0}function Rt(a){a=a|0;var b=0,d=0,e=0;d=i;i=i+16|0;b=d+4|0;e=d;c[e>>2]=a;if((c[e>>2]|0)==6)c[b>>2]=0;else c[b>>2]=c[22296+(c[e>>2]<<2)>>2];i=d;return c[b>>2]|0}function St(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=i;i=i+16|0;f=e+8|0;g=e;c[f>>2]=a;a=g;c[a>>2]=b;c[a+4>>2]=d;a=g;b=c[a+4>>2]|0;if(!((b|0)>-1|(b|0)==-1&(c[a>>2]|0)>>>0>=4294967295)){b=c[f>>2]|0;b=b+160|0;a=b;a=c[a>>2]|0;b=b+4|0;b=c[b>>2]|0;D=b;i=e;return a|0}d=g;a=c[d+4>>2]|0;b=(c[f>>2]|0)+160|0;c[b>>2]=c[d>>2];c[b+4>>2]=a;b=g;gu(c[(c[f>>2]|0)+208>>2]|0,c[b>>2]|0,c[b+4>>2]|0);b=c[f>>2]|0;b=b+160|0;a=b;a=c[a>>2]|0;b=b+4|0;b=c[b>>2]|0;D=b;i=e;return a|0}function Tt(b){b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=b;Pc(c[f>>2]|0);if(!(a[(c[(c[f>>2]|0)+4>>2]|0)+17>>0]|0)){f=0;c[e>>2]=f;f=c[e>>2]|0;i=d;return f|0}f=(a[(c[(c[f>>2]|0)+4>>2]|0)+18>>0]|0)!=0^1?1:2;c[e>>2]=f;f=c[e>>2]|0;i=d;return f|0}function Ut(a){a=a|0;var b=0,d=0,e=0,f=0;d=i;i=i+16|0;b=d+8|0;e=d+4|0;f=d;c[e>>2]=a;do if(xc(c[e>>2]|0,22272)|0){if(!(xc(c[e>>2]|0,21976)|0)){c[b>>2]=1;break}if(!(xc(c[e>>2]|0,22280)|0)){c[b>>2]=2;break}else{c[f>>2]=zg(c[e>>2]|0)|0;c[b>>2]=((c[f>>2]|0)>=0&(c[f>>2]|0)<=2?c[f>>2]|0:0)&255;break}}else c[b>>2]=0;while(0);i=d;return c[b>>2]|0}function Vt(b,f){b=b|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;g=i;i=i+32|0;l=g+12|0;m=g+8|0;k=g+4|0;h=g;j=g+16|0;c[l>>2]=b;c[m>>2]=f;c[k>>2]=c[(c[l>>2]|0)+4>>2];c[h>>2]=0;a[j>>0]=c[m>>2];Pc(c[l>>2]|0);if(((e[(c[k>>2]|0)+22>>1]|0)&2|0)!=0?(((d[j>>0]|0|0)!=0?1:0)|0)!=(d[(c[k>>2]|0)+17>>0]|0|0):0){c[h>>2]=8;m=c[h>>2]|0;i=g;return m|0}a[(c[k>>2]|0)+17>>0]=(d[j>>0]|0|0)!=0?1:0;a[(c[k>>2]|0)+18>>0]=(d[j>>0]|0|0)==2?1:0;m=c[h>>2]|0;i=g;return m|0}function Wt(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;f=i;i=i+32|0;g=f+16|0;k=f+12|0;l=f+8|0;h=f+4|0;j=f;c[k>>2]=b;c[l>>2]=e;c[h>>2]=fu(c[l>>2]|0)|0;c[j>>2]=c[c[k>>2]>>2];if((d[(c[j>>2]|0)+63>>0]|0|0)==(c[h>>2]|0)){c[g>>2]=0;l=c[g>>2]|0;i=f;return l|0}if(Xt(c[k>>2]|0)|0){c[g>>2]=1;l=c[g>>2]|0;i=f;return l|0}else{a[(c[j>>2]|0)+63>>0]=c[h>>2];c[g>>2]=0;l=c[g>>2]|0;i=f;return l|0}return 0}function Xt(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;e=i;i=i+16|0;h=e;d=e+12|0;g=e+8|0;f=e+4|0;c[g>>2]=b;c[f>>2]=c[c[g>>2]>>2];do if(c[(c[(c[f>>2]|0)+16>>2]|0)+20>>2]|0){if((a[(c[f>>2]|0)+62>>0]|0)!=0?(Tc(c[(c[(c[f>>2]|0)+16>>2]|0)+20>>2]|0)|0)==0:0){Kk(c[(c[(c[f>>2]|0)+16>>2]|0)+20>>2]|0)|0;c[(c[(c[f>>2]|0)+16>>2]|0)+20>>2]=0;cd(c[f>>2]|0);break}Se(c[g>>2]|0,22208,h);c[d>>2]=1;h=c[d>>2]|0;i=e;return h|0}while(0);c[d>>2]=0;h=c[d>>2]|0;i=e;return h|0}function Yt(b){b=b|0;var e=0,f=0,g=0,h=0;e=i;i=i+16|0;g=e+8|0;f=e+4|0;h=e;c[g>>2]=b;if(!(a[(c[g>>2]|0)+62>>0]|0)){i=e;return}c[f>>2]=c[(c[g>>2]|0)+16>>2];c[h>>2]=c[(c[g>>2]|0)+20>>2];while(1){b=c[h>>2]|0;c[h>>2]=b+ -1;if((b|0)<=0)break;if(c[(c[f>>2]|0)+4>>2]|0)xt(c[(c[f>>2]|0)+4>>2]|0,d[(c[f>>2]|0)+8>>0]|c[(c[g>>2]|0)+24>>2]&28)|0;c[f>>2]=(c[f>>2]|0)+16}i=e;return}function Zt(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;d=i;i=i+32|0;e=d+8|0;f=d+16|0;g=d;b[f>>1]=a;if((b[f>>1]|0)<10){a=e;c[a>>2]=1;c[a+4>>2]=0;a=e;h=a;h=c[h>>2]|0;a=a+4|0;a=c[a>>2]|0;D=a;i=d;return h|0}k=(b[f>>1]|0)%10|0;j=g;c[j>>2]=k;c[j+4>>2]=((k|0)<0)<<31>>31;b[f>>1]=(b[f>>1]|0)/10|0;j=g;k=c[j+4>>2]|0;h=g;a=c[h>>2]|0;h=c[h+4>>2]|0;if(!(k>>>0>0|(k|0)==0&(c[j>>2]|0)>>>0>=5)){if(h>>>0>0|(h|0)==0&a>>>0>=1){j=g;j=ZE(c[j>>2]|0,c[j+4>>2]|0,1,0)|0;k=g;c[k>>2]=j;c[k+4>>2]=D}}else{j=ZE(a|0,h|0,2,0)|0;k=g;c[k>>2]=j;c[k+4>>2]=D}if((b[f>>1]|0)<3){k=g;k=bF(c[k>>2]|0,c[k+4>>2]|0,8,0)|0;k=cF(k|0,D|0,3-(b[f>>1]|0)|0)|0;j=e;c[j>>2]=k;c[j+4>>2]=D;j=e;k=j;k=c[k>>2]|0;j=j+4|0;j=c[j>>2]|0;D=j;i=d;return k|0}if((b[f>>1]|0)>60){g=-1;f=2147483647}else{g=bF(c[g>>2]|0,c[g+4>>2]|0,8,0)|0;g=$E(g|0,D|0,(b[f>>1]|0)-3|0)|0;f=D}j=e;c[j>>2]=g;c[j+4>>2]=f;j=e;k=j;k=c[k>>2]|0;j=j+4|0;j=c[j>>2]|0;D=j;i=d;return k|0}function _t(b){b=b|0;var e=0,f=0,g=0;f=i;i=i+16|0;g=f+4|0;e=f;a[g>>0]=b;b=d[g>>0]|0;if((b|0)==6)c[e>>2]=22176;else if((b|0)==8)c[e>>2]=22152;else if((b|0)==9)c[e>>2]=22168;else if((b|0)==7)c[e>>2]=22136;else c[e>>2]=22192;i=f;return c[e>>2]|0}function $t(f,g,h,j,k){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;x=i;i=i+80|0;v=x;n=x+64|0;q=x+60|0;z=x+56|0;t=x+52|0;p=x+48|0;D=x+44|0;o=x+40|0;u=x+36|0;s=x+32|0;l=x+28|0;r=x+24|0;w=x+20|0;C=x+16|0;y=x+68|0;A=x+12|0;B=x+8|0;c[q>>2]=f;c[z>>2]=g;c[t>>2]=h;c[p>>2]=j;c[D>>2]=k;c[o>>2]=0;c[u>>2]=0;c[s>>2]=c[(c[t>>2]|0)+20>>2];c[l>>2]=c[(c[t>>2]|0)+40>>2];do if((c[s>>2]|0)==1){if((b[(c[z>>2]|0)+36>>1]|0)>=0){if(!(c[l>>2]|0)){c[n>>2]=0;f=c[n>>2]|0;i=x;return f|0}if(!(xc(c[(c[(c[z>>2]|0)+4>>2]|0)+((b[(c[z>>2]|0)+36>>1]|0)*24|0)>>2]|0,c[l>>2]|0)|0)){c[n>>2]=0;f=c[n>>2]|0;i=x;return f|0}}}else if(c[D>>2]|0){c[u>>2]=Qe(c[c[q>>2]>>2]|0,c[s>>2]<<2,0)|0;if(c[u>>2]|0){c[c[D>>2]>>2]=c[u>>2];break}c[n>>2]=1;f=c[n>>2]|0;i=x;return f|0}while(0);c[o>>2]=c[(c[z>>2]|0)+8>>2];a:while(1){if(!(c[o>>2]|0))break;do if((e[(c[o>>2]|0)+50>>1]|0)==(c[s>>2]|0)?(d[(c[o>>2]|0)+54>>0]|0)!=0:0){if(!(c[l>>2]|0))if((a[(c[o>>2]|0)+55>>0]&3|0)==2){m=17;break a}else break;c[w>>2]=0;while(1){if((c[w>>2]|0)>=(c[s>>2]|0))break;b[y>>1]=b[(c[(c[o>>2]|0)+4>>2]|0)+(c[w>>2]<<1)>>1]|0;f=c[(c[(c[z>>2]|0)+4>>2]|0)+((b[y>>1]|0)*24|0)+16>>2]|0;c[A>>2]=f;c[A>>2]=(c[A>>2]|0)!=0?f:3320;if(xc(c[(c[(c[o>>2]|0)+32>>2]|0)+(c[w>>2]<<2)>>2]|0,c[A>>2]|0)|0)break;c[B>>2]=c[(c[(c[z>>2]|0)+4>>2]|0)+((b[y>>1]|0)*24|0)>>2];c[C>>2]=0;while(1){if((c[C>>2]|0)>=(c[s>>2]|0))break;if(!(xc(c[(c[t>>2]|0)+36+(c[C>>2]<<3)+4>>2]|0,c[B>>2]|0)|0)){m=27;break}c[C>>2]=(c[C>>2]|0)+1}if((m|0)==27?(m=0,(c[u>>2]|0)!=0):0)c[(c[u>>2]|0)+(c[w>>2]<<2)>>2]=c[(c[t>>2]|0)+36+(c[C>>2]<<3)>>2];if((c[C>>2]|0)==(c[s>>2]|0))break;c[w>>2]=(c[w>>2]|0)+1}if((c[w>>2]|0)==(c[s>>2]|0))break a}while(0);c[o>>2]=c[(c[o>>2]|0)+20>>2]}b:do if((m|0)==17?(c[u>>2]|0)!=0:0){c[r>>2]=0;while(1){if((c[r>>2]|0)>=(c[s>>2]|0))break b;c[(c[u>>2]|0)+(c[r>>2]<<2)>>2]=c[(c[t>>2]|0)+36+(c[r>>2]<<3)>>2];c[r>>2]=(c[r>>2]|0)+1}}while(0);if(c[o>>2]|0){c[c[p>>2]>>2]=c[o>>2];c[n>>2]=0;f=c[n>>2]|0;i=x;return f|0}if(!(a[(c[q>>2]|0)+438>>0]|0)){f=c[q>>2]|0;g=c[(c[t>>2]|0)+8>>2]|0;c[v>>2]=c[c[c[t>>2]>>2]>>2];c[v+4>>2]=g;Se(f,22088,v)}Xb(c[c[q>>2]>>2]|0,c[u>>2]|0);c[n>>2]=1;f=c[n>>2]|0;i=x;return f|0}function au(d,f){d=d|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;l=i;i=i+32|0;h=l+20|0;o=l+16|0;j=l+12|0;m=l+8|0;k=l+4|0;n=l;g=l+24|0;c[o>>2]=d;c[j>>2]=f;if(!(c[(c[j>>2]|0)+16>>2]|0)){c[k>>2]=c[(c[j>>2]|0)+12>>2];c[n>>2]=Fs(c[o>>2]|0)|0;d=(e[(c[j>>2]|0)+52>>1]|0)+1|0;d=Qe(0,d,((d|0)<0)<<31>>31)|0;c[(c[j>>2]|0)+16>>2]=d;if(!(c[(c[j>>2]|0)+16>>2]|0)){a[(c[n>>2]|0)+64>>0]=1;c[h>>2]=0;d=c[h>>2]|0;i=l;return d|0}c[m>>2]=0;while(1){n=c[m>>2]|0;f=c[j>>2]|0;if((c[m>>2]|0)>=(e[(c[j>>2]|0)+52>>1]|0))break;b[g>>1]=b[(c[f+4>>2]|0)+(n<<1)>>1]|0;if((b[g>>1]|0)<0)f=68;else f=a[(c[(c[k>>2]|0)+4>>2]|0)+((b[g>>1]|0)*24|0)+21>>0]|0;a[(c[(c[j>>2]|0)+16>>2]|0)+(c[m>>2]|0)>>0]=f;c[m>>2]=(c[m>>2]|0)+1}a[(c[f+16>>2]|0)+n>>0]=0}c[h>>2]=c[(c[j>>2]|0)+16>>2];d=c[h>>2]|0;i=l;return d|0}function bu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;i=i+16|0;f=d+8|0;e=d+4|0;g=d;c[f>>2]=a;c[e>>2]=b;if(c[e>>2]|0)c[g>>2]=22080;else c[g>>2]=8776;Qf(c[f>>2]|0,8784,2,1,c[g>>2]|0,34,0,0,0)|0;Qf(c[f>>2]|0,8784,3,1,c[g>>2]|0,34,0,0,0)|0;Qf(c[f>>2]|0,8768,2,1,1208,34,0,0,0)|0;eu(c[f>>2]|0,8768,12);eu(c[f>>2]|0,8784,((c[e>>2]|0)!=0?12:4)&255);i=d;return}function cu(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;i=i+16|0;d=b+8|0;f=b+4|0;e=b;c[d>>2]=a;c[f>>2]=0;c[e>>2]=(c[d>>2]|0)+116;while(1){if((c[f>>2]|0)>=10)break;if(c[(c[e>>2]|0)+12>>2]|0){vs(c[d>>2]|0,c[e>>2]|0);c[(c[e>>2]|0)+12>>2]=0}c[f>>2]=(c[f>>2]|0)+1;c[e>>2]=(c[e>>2]|0)+20}i=b;return}function du(b,e,f,g,h,j,k){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;w=i;i=i+64|0;r=w+52|0;p=w+48|0;x=w+44|0;l=w+40|0;o=w+36|0;v=w+32|0;m=w+28|0;z=w+24|0;n=w+20|0;u=w+16|0;A=w+12|0;t=w+8|0;q=w+4|0;s=w;c[p>>2]=b;c[x>>2]=e;c[l>>2]=f;c[o>>2]=g;c[v>>2]=h;c[m>>2]=j;c[z>>2]=k;if((d[(c[x>>2]|0)+44>>0]|0)&16){c[r>>2]=0;b=c[r>>2]|0;i=w;return b|0}c[u>>2]=Ve(c[c[p>>2]>>2]|0,c[(c[x>>2]|0)+68>>2]|0)|0;c[q>>2]=dp(c[p>>2]|0)|0;if((c[o>>2]|0)<0)c[o>>2]=c[(c[p>>2]|0)+68>>2];b=c[o>>2]|0;c[o>>2]=b+1;c[A>>2]=b;if(c[m>>2]|0)c[c[m>>2]>>2]=c[A>>2];do if(!((d[(c[x>>2]|0)+44>>0]|0)&32)){if((c[v>>2]|0)!=0?(d[c[v>>2]>>0]|0|0)==0:0){y=11;break}Kr(c[p>>2]|0,c[A>>2]|0,c[u>>2]|0,c[x>>2]|0,c[l>>2]|0)}else y=11;while(0);if((y|0)==11)Jr(c[p>>2]|0,c[u>>2]|0,c[(c[x>>2]|0)+32>>2]|0,(c[l>>2]|0)==55&255,c[c[x>>2]>>2]|0);if(c[z>>2]|0)c[c[z>>2]>>2]=c[o>>2];c[n>>2]=0;c[t>>2]=c[(c[x>>2]|0)+8>>2];while(1){y=c[o>>2]|0;if(!(c[t>>2]|0))break;c[o>>2]=y+1;c[s>>2]=y;if((a[(c[t>>2]|0)+55>>0]&3|0)==2?(c[m>>2]|0)!=0?((d[(c[x>>2]|0)+44>>0]|0)&32|0)!=0:0:0)c[c[m>>2]>>2]=c[s>>2];if(!((c[v>>2]|0)!=0?(d[(c[v>>2]|0)+((c[n>>2]|0)+1)>>0]|0|0)==0:0)){ip(c[q>>2]|0,c[l>>2]|0,c[s>>2]|0,c[(c[t>>2]|0)+44>>2]|0,c[u>>2]|0)|0;Lr(c[p>>2]|0,c[t>>2]|0)}c[t>>2]=c[(c[t>>2]|0)+20>>2];c[n>>2]=(c[n>>2]|0)+1}if((y|0)>(c[(c[p>>2]|0)+68>>2]|0))c[(c[p>>2]|0)+68>>2]=c[o>>2];c[r>>2]=c[n>>2];b=c[r>>2]|0;i=w;return b|0}function eu(f,g,h){f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0;j=i;i=i+16|0;n=j+8|0;m=j+4|0;l=j+12|0;k=j;c[n>>2]=f;c[m>>2]=g;a[l>>0]=h;g=c[n>>2]|0;f=c[m>>2]|0;c[k>>2]=Sf(g,f,Mb(c[m>>2]|0)|0,2,1,0)|0;if(!(c[k>>2]|0)){i=j;return}n=(c[k>>2]|0)+2|0;b[n>>1]=e[n>>1]|0|(d[l>>0]|0);i=j;return}function fu(b){b=b|0;var d=0,e=0,f=0,g=0;e=i;i=i+16|0;f=e+4|0;g=e;c[g>>2]=b;if((a[c[g>>2]>>0]|0)>=48?(a[c[g>>2]>>0]|0)<=50:0)c[f>>2]=(a[c[g>>2]>>0]|0)-48;else d=4;do if((d|0)==4){if(!(xc(c[g>>2]|0,21448)|0)){c[f>>2]=1;break}if(!(xc(c[g>>2]|0,4792)|0)){c[f>>2]=2;break}else{c[f>>2]=0;break}}while(0);i=e;return c[f>>2]|0}function gu(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=i;i=i+16|0;g=e+8|0;f=e;c[g>>2]=a;a=f;c[a>>2]=b;c[a+4>>2]=d;if(!(c[g>>2]|0)){i=e;return}b=c[f+4>>2]|0;a=(c[g>>2]|0)+16|0;c[a>>2]=c[f>>2];c[a+4>>2]=b;i=e;return}function hu(d,f){d=d|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;g=i;i=i+32|0;h=g+12|0;m=g+8|0;j=g+4|0;k=g;l=g+16|0;c[h>>2]=d;c[m>>2]=f;if(!((c[h>>2]|0)!=0&(c[m>>2]|0)!=0)){i=g;return}c[j>>2]=(c[h>>2]|0)+((c[m>>2]|0)*40|0);c[k>>2]=c[(c[h>>2]|0)+32>>2];a[l>>0]=a[(c[k>>2]|0)+64>>0]|0;if(c[(c[k>>2]|0)+520>>2]|0){do{if(c[(c[h>>2]|0)+24>>2]|0)Xb(c[k>>2]|0,c[(c[h>>2]|0)+20>>2]|0);d=(c[h>>2]|0)+40|0;c[h>>2]=d}while(d>>>0<(c[j>>2]|0)>>>0);i=g;return}do{f=c[h>>2]|0;if(!((e[(c[h>>2]|0)+8>>1]|0)&9312)){if(c[f+24>>2]|0){Xb(c[k>>2]|0,c[(c[h>>2]|0)+20>>2]|0);c[(c[h>>2]|0)+24>>2]=0}}else Bd(f);b[(c[h>>2]|0)+8>>1]=128;d=(c[h>>2]|0)+40|0;c[h>>2]=d}while(d>>>0<(c[j>>2]|0)>>>0);a[(c[k>>2]|0)+64>>0]=a[l>>0]|0;i=g;return}function iu(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;l=i;i=i+64|0;f=l;g=l+36|0;o=l+32|0;h=l+28|0;j=l+24|0;n=l+20|0;k=l+16|0;m=l+40|0;c[g>>2]=a;c[o>>2]=b;c[h>>2]=d;c[j>>2]=e;c[k>>2]=c[(c[(c[c[g>>2]>>2]|0)+16>>2]|0)+(c[o>>2]<<4)>>2];c[n>>2]=1;while(1){if((c[n>>2]|0)>4)break;c[f>>2]=c[n>>2];sc(24,m,23336,f)|0;if(sp(c[c[g>>2]>>2]|0,m,c[k>>2]|0)|0){o=c[g>>2]|0;b=c[h>>2]|0;a=c[j>>2]|0;c[f>>2]=c[k>>2];c[f+4>>2]=m;c[f+8>>2]=b;c[f+12>>2]=a;cp(o,18480,f)}c[n>>2]=(c[n>>2]|0)+1}i=l;return}function ju(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;e=i;i=i+48|0;h=e;g=e+36|0;j=e+32|0;l=e+28|0;k=e+24|0;f=e+20|0;c[g>>2]=a;c[j>>2]=b;c[l>>2]=d;c[k>>2]=dp(c[g>>2]|0)|0;c[f>>2]=kp(c[g>>2]|0)|0;ip(c[k>>2]|0,117,c[j>>2]|0,c[f>>2]|0,c[l>>2]|0)|0;Sp(c[g>>2]|0);a=c[g>>2]|0;k=(c[l>>2]|0)==1?14904:14928;j=c[j>>2]|0;d=c[f>>2]|0;b=c[f>>2]|0;c[h>>2]=c[(c[(c[c[g>>2]>>2]|0)+16>>2]|0)+(c[l>>2]<<4)>>2];c[h+4>>2]=k;c[h+8>>2]=j;c[h+12>>2]=d;c[h+16>>2]=b;cp(a,23280,h);lp(c[g>>2]|0,c[f>>2]|0);i=e;return}function ku(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;h=i;i=i+48|0;n=h+36|0;r=h+32|0;o=h+28|0;k=h+24|0;g=h+20|0;l=h+16|0;m=h+12|0;j=h+8|0;q=h+4|0;p=h;c[r>>2]=a;c[o>>2]=b;c[k>>2]=d;c[g>>2]=e;c[l>>2]=f;c[j>>2]=c[c[g>>2]>>2];do if(!(c[j>>2]&(c[j>>2]|0)-1)){if(!(c[j>>2]|0))f=1;else f=c[j>>2]<<1;c[q>>2]=f;a=$(c[q>>2]|0,c[k>>2]|0)|0;c[p>>2]=Fk(c[r>>2]|0,c[o>>2]|0,a,((a|0)<0)<<31>>31)|0;if(c[p>>2]|0){c[o>>2]=c[p>>2];break}c[c[l>>2]>>2]=-1;c[n>>2]=c[o>>2];a=c[n>>2]|0;i=h;return a|0}while(0);c[m>>2]=c[o>>2];a=$(c[j>>2]|0,c[k>>2]|0)|0;_E((c[m>>2]|0)+a|0,0,c[k>>2]|0)|0;c[c[l>>2]>>2]=c[j>>2];a=c[g>>2]|0;c[a>>2]=(c[a>>2]|0)+1;c[n>>2]=c[o>>2];a=c[n>>2]|0;i=h;return a|0}function lu(a,b,e,f,g){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;k=i;i=i+32|0;q=k+28|0;p=k+24|0;h=k+20|0;n=k+16|0;l=k+12|0;o=k+8|0;j=k+4|0;m=k;c[q>>2]=a;c[p>>2]=b;c[h>>2]=e;c[n>>2]=f;c[l>>2]=g;c[o>>2]=0;c[j>>2]=0;if(c[(c[c[q>>2]>>2]|0)+24>>2]&8388608)c[j>>2]=wp(c[q>>2]|0,c[p>>2]|0)|0;c[m>>2]=c[j>>2];while(1){if(!(c[m>>2]|0))break;if((d[(c[m>>2]|0)+8>>0]|0|0)==(c[h>>2]|0)?(ex(c[(c[m>>2]|0)+16>>2]|0,c[n>>2]|0)|0)!=0:0)c[o>>2]=c[o>>2]|(d[(c[m>>2]|0)+9>>0]|0);c[m>>2]=c[(c[m>>2]|0)+32>>2]}if(!(c[l>>2]|0)){b=c[o>>2]|0;b=(b|0)!=0;a=c[j>>2]|0;a=b?a:0;i=k;return a|0}c[c[l>>2]>>2]=c[o>>2];b=c[o>>2]|0;b=(b|0)!=0;a=c[j>>2]|0;a=b?a:0;i=k;return a|0}function mu(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;l=i;i=i+32|0;j=l;k=l+16|0;g=l+12|0;h=l+8|0;m=l+4|0;c[g>>2]=a;c[h>>2]=b;c[m>>2]=e;if(!(((d[(c[h>>2]|0)+44>>0]|0)&16|0)!=0?(c[(c[c[(Rp(c[c[g>>2]>>2]|0,c[h>>2]|0)|0)+4>>2]>>2]|0)+52>>2]|0)==0:0))f=3;do if((f|0)==3){if((((d[(c[h>>2]|0)+44>>0]|0)&1|0)!=0?(c[(c[c[g>>2]>>2]|0)+24>>2]&2048|0)==0:0)?(d[(c[g>>2]|0)+18>>0]|0|0)==0:0)break;if((c[m>>2]|0)==0?(c[(c[h>>2]|0)+12>>2]|0)!=0:0){a=c[g>>2]|0;c[j>>2]=c[c[h>>2]>>2];Se(a,24480,j);c[k>>2]=1;a=c[k>>2]|0;i=l;return a|0}c[k>>2]=0;a=c[k>>2]|0;i=l;return a|0}while(0);a=c[g>>2]|0;c[j>>2]=c[c[h>>2]>>2];Se(a,24448,j);c[k>>2]=1;a=c[k>>2]|0;i=l;return a|0}function nu(a){a=a|0;var d=0,e=0;d=i;i=i+16|0;e=d;c[e>>2]=a;a=(c[e>>2]|0)+88|0;b[a>>1]=b[a>>1]&-17|16;i=d;return}function ou(f,g,h,j,k){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;l=i;i=i+112|0;v=l+100|0;p=l+96|0;n=l+92|0;H=l+88|0;E=l+84|0;w=l+80|0;K=l+76|0;o=l+72|0;q=l+68|0;m=l+64|0;I=l+60|0;J=l+56|0;s=l+52|0;r=l+48|0;A=l+44|0;z=l+40|0;C=l+36|0;B=l+32|0;u=l+28|0;t=l+24|0;D=l+20|0;F=l+16|0;x=l+12|0;y=l+8|0;L=l+4|0;G=l;c[p>>2]=f;c[n>>2]=g;c[H>>2]=h;c[E>>2]=j;c[w>>2]=k;c[B>>2]=0;c[u>>2]=0;c[F>>2]=0;if(!(c[H>>2]|0)){c[v>>2]=0;f=c[v>>2]|0;i=l;return f|0}if((c[(c[p>>2]|0)+532>>2]|0)==0?(c[(c[H>>2]|0)+68>>2]|0)==0:0){if(wp(c[p>>2]|0,c[n>>2]|0)|0){c[v>>2]=0;f=c[v>>2]|0;i=l;return f|0}if(d[(c[n>>2]|0)+44>>0]&16){c[v>>2]=0;f=c[v>>2]|0;i=l;return f|0}if((c[E>>2]|0)==10){if((b[(c[n>>2]|0)+36>>1]|0)>=0)c[E>>2]=d[(c[n>>2]|0)+45>>0];if((c[E>>2]|0)==10)c[E>>2]=2}if((c[c[(c[H>>2]|0)+32>>2]>>2]|0)!=1){c[v>>2]=0;f=c[v>>2]|0;i=l;return f|0}if(c[(c[(c[H>>2]|0)+32>>2]|0)+28>>2]|0){c[v>>2]=0;f=c[v>>2]|0;i=l;return f|0}if(c[(c[H>>2]|0)+36>>2]|0){c[v>>2]=0;f=c[v>>2]|0;i=l;return f|0}if(c[(c[H>>2]|0)+48>>2]|0){c[v>>2]=0;f=c[v>>2]|0;i=l;return f|0}if(c[(c[H>>2]|0)+40>>2]|0){c[v>>2]=0;f=c[v>>2]|0;i=l;return f|0}if(c[(c[H>>2]|0)+60>>2]|0){c[v>>2]=0;f=c[v>>2]|0;i=l;return f|0}if(c[(c[H>>2]|0)+52>>2]|0){c[v>>2]=0;f=c[v>>2]|0;i=l;return f|0}if(e[(c[H>>2]|0)+6>>1]&1){c[v>>2]=0;f=c[v>>2]|0;i=l;return f|0}c[K>>2]=c[c[H>>2]>>2];if((c[c[K>>2]>>2]|0)!=1){c[v>>2]=0;f=c[v>>2]|0;i=l;return f|0}if((d[c[c[(c[K>>2]|0)+4>>2]>>2]>>0]|0)!=116){c[v>>2]=0;f=c[v>>2]|0;i=l;return f|0}c[I>>2]=(c[(c[H>>2]|0)+32>>2]|0)+8;c[o>>2]=np(c[p>>2]|0,0,c[I>>2]|0)|0;if(!(c[o>>2]|0)){c[v>>2]=0;f=c[v>>2]|0;i=l;return f|0}if((c[o>>2]|0)==(c[n>>2]|0)){c[v>>2]=0;f=c[v>>2]|0;i=l;return f|0}if(((d[(c[n>>2]|0)+44>>0]&32|0)==0|0)!=((d[(c[o>>2]|0)+44>>0]&32|0)==0|0)){c[v>>2]=0;f=c[v>>2]|0;i=l;return f|0}if(d[(c[o>>2]|0)+44>>0]&16){c[v>>2]=0;f=c[v>>2]|0;i=l;return f|0}if(c[(c[o>>2]|0)+12>>2]|0){c[v>>2]=0;f=c[v>>2]|0;i=l;return f|0}if((b[(c[n>>2]|0)+38>>1]|0)!=(b[(c[o>>2]|0)+38>>1]|0)){c[v>>2]=0;f=c[v>>2]|0;i=l;return f|0}if((b[(c[n>>2]|0)+36>>1]|0)!=(b[(c[o>>2]|0)+36>>1]|0)){c[v>>2]=0;f=c[v>>2]|0;i=l;return f|0}c[J>>2]=0;a:while(1){if((c[J>>2]|0)>=(b[(c[n>>2]|0)+38>>1]|0)){G=64;break}c[L>>2]=(c[(c[n>>2]|0)+4>>2]|0)+((c[J>>2]|0)*24|0);c[G>>2]=(c[(c[o>>2]|0)+4>>2]|0)+((c[J>>2]|0)*24|0);if((a[(c[L>>2]|0)+21>>0]|0)!=(a[(c[G>>2]|0)+21>>0]|0)){G=52;break}if(!(fx(c[(c[L>>2]|0)+16>>2]|0,c[(c[G>>2]|0)+16>>2]|0)|0)){G=54;break}if((d[(c[L>>2]|0)+20>>0]|0)!=0?(a[(c[G>>2]|0)+20>>0]|0)==0:0){G=57;break}do if((c[J>>2]|0)>0){if(((c[(c[L>>2]|0)+8>>2]|0)==0|0)!=((c[(c[G>>2]|0)+8>>2]|0)==0|0)){G=62;break a}if(!(c[(c[L>>2]|0)+8>>2]|0))break;if(UE(c[(c[L>>2]|0)+8>>2]|0,c[(c[G>>2]|0)+8>>2]|0)|0){G=62;break a}}while(0);c[J>>2]=(c[J>>2]|0)+1}if((G|0)==52){c[v>>2]=0;f=c[v>>2]|0;i=l;return f|0}else if((G|0)==54){c[v>>2]=0;f=c[v>>2]|0;i=l;return f|0}else if((G|0)==57){c[v>>2]=0;f=c[v>>2]|0;i=l;return f|0}else if((G|0)==62){c[v>>2]=0;f=c[v>>2]|0;i=l;return f|0}else if((G|0)==64){c[m>>2]=c[(c[n>>2]|0)+8>>2];while(1){if(!(c[m>>2]|0))break;if(d[(c[m>>2]|0)+54>>0]|0)c[F>>2]=1;c[q>>2]=c[(c[o>>2]|0)+8>>2];while(1){if(!(c[q>>2]|0))break;if(gx(c[m>>2]|0,c[q>>2]|0)|0)break;c[q>>2]=c[(c[q>>2]|0)+20>>2]}if(!(c[q>>2]|0)){G=73;break}c[m>>2]=c[(c[m>>2]|0)+20>>2]}if((G|0)==73){c[v>>2]=0;f=c[v>>2]|0;i=l;return f|0}do if(c[(c[n>>2]|0)+24>>2]|0){if(!(Eq(c[(c[o>>2]|0)+24>>2]|0,c[(c[n>>2]|0)+24>>2]|0,-1)|0))break;c[v>>2]=0;f=c[v>>2]|0;i=l;return f|0}while(0);do if(c[(c[c[p>>2]>>2]|0)+24>>2]&524288){if(!(c[(c[n>>2]|0)+16>>2]|0))break;c[v>>2]=0;f=c[v>>2]|0;i=l;return f|0}while(0);if(c[(c[c[p>>2]>>2]|0)+24>>2]&128){c[v>>2]=0;f=c[v>>2]|0;i=l;return f|0}c[s>>2]=Ve(c[c[p>>2]>>2]|0,c[(c[o>>2]|0)+68>>2]|0)|0;c[t>>2]=dp(c[p>>2]|0)|0;qp(c[p>>2]|0,c[s>>2]|0);f=(c[p>>2]|0)+68|0;g=c[f>>2]|0;c[f>>2]=g+1;c[r>>2]=g;g=(c[p>>2]|0)+68|0;f=c[g>>2]|0;c[g>>2]=f+1;c[A>>2]=f;c[D>>2]=pu(c[p>>2]|0,c[w>>2]|0,c[n>>2]|0)|0;c[x>>2]=kp(c[p>>2]|0)|0;c[y>>2]=kp(c[p>>2]|0)|0;Kr(c[p>>2]|0,c[A>>2]|0,c[w>>2]|0,c[n>>2]|0,55);if((b[(c[n>>2]|0)+36>>1]|0)<0)if((c[F>>2]|0)!=0?1:(c[(c[n>>2]|0)+8>>2]|0)!=0)G=87;else G=86;else if(c[F>>2]|0)G=87;else G=86;if((G|0)==86?(c[E>>2]|0)!=2&(c[E>>2]|0)!=1:0)G=87;if((G|0)==87){c[z>>2]=fp(c[t>>2]|0,108,c[A>>2]|0,0)|0;c[B>>2]=fp(c[t>>2]|0,16,0,0)|0;zp(c[t>>2]|0,c[z>>2]|0)}F=c[p>>2]|0;if(!(d[(c[o>>2]|0)+44>>0]&32)){Kr(F,c[r>>2]|0,c[s>>2]|0,c[o>>2]|0,54);c[u>>2]=fp(c[t>>2]|0,108,c[r>>2]|0,0)|0;do if((b[(c[n>>2]|0)+36>>1]|0)<0){C=c[t>>2]|0;if(!(c[(c[n>>2]|0)+8>>2]|0)){c[z>>2]=fp(C,74,c[A>>2]|0,c[y>>2]|0)|0;break}else{c[z>>2]=fp(C,103,c[r>>2]|0,c[y>>2]|0)|0;break}}else{c[z>>2]=fp(c[t>>2]|0,103,c[r>>2]|0,c[y>>2]|0)|0;c[C>>2]=ip(c[t>>2]|0,70,c[A>>2]|0,0,c[y>>2]|0)|0;bw(c[p>>2]|0,c[E>>2]|0,c[n>>2]|0);zp(c[t>>2]|0,c[C>>2]|0);uu(c[p>>2]|0,c[D>>2]|0,c[y>>2]|0)}while(0);fp(c[t>>2]|0,102,c[r>>2]|0,c[x>>2]|0)|0;ip(c[t>>2]|0,75,c[A>>2]|0,c[x>>2]|0,c[y>>2]|0)|0;Xe(c[t>>2]|0,11);bf(c[t>>2]|0,-1,c[c[n>>2]>>2]|0,0);fp(c[t>>2]|0,9,c[r>>2]|0,c[z>>2]|0)|0;fp(c[t>>2]|0,61,c[r>>2]|0,0)|0;fp(c[t>>2]|0,61,c[A>>2]|0,0)|0}else{Jr(F,c[w>>2]|0,c[(c[n>>2]|0)+32>>2]|0,1,c[c[n>>2]>>2]|0);Jr(c[p>>2]|0,c[s>>2]|0,c[(c[o>>2]|0)+32>>2]|0,0,c[c[o>>2]>>2]|0)}c[m>>2]=c[(c[n>>2]|0)+8>>2];while(1){if(!(c[m>>2]|0))break;c[q>>2]=c[(c[o>>2]|0)+8>>2];while(1){if(!(c[q>>2]|0))break;if(gx(c[m>>2]|0,c[q>>2]|0)|0)break;c[q>>2]=c[(c[q>>2]|0)+20>>2]}ip(c[t>>2]|0,54,c[r>>2]|0,c[(c[q>>2]|0)+44>>2]|0,c[s>>2]|0)|0;Lr(c[p>>2]|0,c[q>>2]|0);ip(c[t>>2]|0,55,c[A>>2]|0,c[(c[m>>2]|0)+44>>2]|0,c[w>>2]|0)|0;Lr(c[p>>2]|0,c[m>>2]|0);Xe(c[t>>2]|0,1);c[z>>2]=fp(c[t>>2]|0,108,c[r>>2]|0,0)|0;fp(c[t>>2]|0,101,c[r>>2]|0,c[x>>2]|0)|0;ip(c[t>>2]|0,110,c[A>>2]|0,c[x>>2]|0,1)|0;fp(c[t>>2]|0,9,c[r>>2]|0,(c[z>>2]|0)+1|0)|0;zp(c[t>>2]|0,c[z>>2]|0);fp(c[t>>2]|0,61,c[r>>2]|0,0)|0;fp(c[t>>2]|0,61,c[A>>2]|0,0)|0;c[m>>2]=c[(c[m>>2]|0)+20>>2]}if(c[u>>2]|0)zp(c[t>>2]|0,c[u>>2]|0);lp(c[p>>2]|0,c[y>>2]|0);lp(c[p>>2]|0,c[x>>2]|0);if(c[B>>2]|0){fp(c[t>>2]|0,24,0,0)|0;zp(c[t>>2]|0,c[B>>2]|0);fp(c[t>>2]|0,61,c[A>>2]|0,0)|0;c[v>>2]=0;f=c[v>>2]|0;i=l;return f|0}else{c[v>>2]=1;f=c[v>>2]|0;i=l;return f|0}}}c[v>>2]=0;f=c[v>>2]|0;i=l;return f|0}function pu(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;h=i;i=i+32|0;g=h+24|0;n=h+20|0;f=h+16|0;l=h+12|0;m=h+8|0;k=h+4|0;j=h;c[n>>2]=a;c[f>>2]=b;c[l>>2]=e;c[m>>2]=0;if((d[(c[l>>2]|0)+44>>0]|0)&8){e=c[n>>2]|0;if(c[(c[n>>2]|0)+408>>2]|0)e=c[e+408>>2]|0;c[k>>2]=e;c[j>>2]=c[(c[k>>2]|0)+404>>2];while(1){if(c[j>>2]|0)b=(c[(c[j>>2]|0)+4>>2]|0)!=(c[l>>2]|0);else b=0;e=c[j>>2]|0;if(!b)break;c[j>>2]=c[e>>2]}do if(!e){c[j>>2]=Qe(c[c[n>>2]>>2]|0,16,0)|0;if(c[j>>2]|0){c[c[j>>2]>>2]=c[(c[k>>2]|0)+404>>2];c[(c[k>>2]|0)+404>>2]=c[j>>2];c[(c[j>>2]|0)+4>>2]=c[l>>2];c[(c[j>>2]|0)+8>>2]=c[f>>2];b=(c[k>>2]|0)+72|0;c[b>>2]=(c[b>>2]|0)+1;b=(c[k>>2]|0)+72|0;a=(c[b>>2]|0)+1|0;c[b>>2]=a;c[(c[j>>2]|0)+12>>2]=a;a=(c[k>>2]|0)+72|0;c[a>>2]=(c[a>>2]|0)+1;break}c[g>>2]=0;a=c[g>>2]|0;i=h;return a|0}while(0);c[m>>2]=c[(c[j>>2]|0)+12>>2]}c[g>>2]=c[m>>2];a=c[g>>2]|0;i=h;return a|0}function qu(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;f=i;i=i+48|0;g=f+40|0;r=f+36|0;p=f+32|0;n=f+28|0;l=f+24|0;o=f+20|0;q=f+16|0;m=f+12|0;k=f+8|0;j=f+4|0;h=f;c[r>>2]=a;c[p>>2]=b;c[n>>2]=e;c[l>>2]=dp(c[r>>2]|0)|0;c[q>>2]=Mr(c[l>>2]|0)|0;if((d[(c[n>>2]|0)+44>>0]|0)&16)e=Rp(c[c[r>>2]>>2]|0,c[n>>2]|0)|0;else e=0;c[m>>2]=e;c[o>>2]=1;a:while(1){if((c[o>>2]|0)>=(c[q>>2]|0)){h=18;break}c[k>>2]=dt(c[l>>2]|0,c[o>>2]|0)|0;b:do if((d[c[k>>2]>>0]|0|0)==54?(c[(c[k>>2]|0)+12>>2]|0)==(c[p>>2]|0):0){c[h>>2]=c[(c[k>>2]|0)+8>>2];if((c[h>>2]|0)==(c[(c[n>>2]|0)+32>>2]|0)){h=8;break a}c[j>>2]=c[(c[n>>2]|0)+8>>2];while(1){if(!(c[j>>2]|0))break b;if((c[h>>2]|0)==(c[(c[j>>2]|0)+44>>2]|0)){h=12;break a}c[j>>2]=c[(c[j>>2]|0)+20>>2]}}while(0);if((d[c[k>>2]>>0]|0|0)==147?(c[(c[k>>2]|0)+16>>2]|0)==(c[m>>2]|0):0){h=16;break}c[o>>2]=(c[o>>2]|0)+1}if((h|0)==8){c[g>>2]=1;a=c[g>>2]|0;i=f;return a|0}else if((h|0)==12){c[g>>2]=1;a=c[g>>2]|0;i=f;return a|0}else if((h|0)==16){c[g>>2]=1;a=c[g>>2]|0;i=f;return a|0}else if((h|0)==18){c[g>>2]=0;a=c[g>>2]|0;i=f;return a|0}return 0}function ru(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;e=i;i=i+32|0;k=e+16|0;g=e+12|0;h=e+8|0;j=e+4|0;f=e;c[k>>2]=a;c[g>>2]=b;c[h>>2]=d;c[j>>2]=c[(c[k>>2]|0)+8>>2];Os(c[k>>2]|0,c[g>>2]|0,c[h>>2]|0);b=(c[k>>2]|0)+72|0;a=(c[b>>2]|0)+1|0;c[b>>2]=a;c[f>>2]=a;fp(c[j>>2]|0,33,c[h>>2]|0,c[f>>2]|0)|0;Zs(c[g>>2]|0,c[f>>2]|0);i=e;return}function su(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;j=i;i=i+32|0;m=j+20|0;n=j+16|0;h=j+12|0;k=j+8|0;g=j+4|0;l=j;c[m>>2]=d;c[n>>2]=e;c[h>>2]=f;c[g>>2]=c[(c[n>>2]|0)+20>>2];if(!(c[g>>2]|0)){c[l>>2]=Fs(c[m>>2]|0)|0;d=(b[(c[n>>2]|0)+38>>1]|0)+1|0;c[g>>2]=Qe(0,d,((d|0)<0)<<31>>31)|0;if(!(c[g>>2]|0)){a[(c[l>>2]|0)+64>>0]=1;i=j;return}c[k>>2]=0;while(1){if((c[k>>2]|0)>=(b[(c[n>>2]|0)+38>>1]|0))break;a[(c[g>>2]|0)+(c[k>>2]|0)>>0]=a[(c[(c[n>>2]|0)+4>>2]|0)+((c[k>>2]|0)*24|0)+21>>0]|0;c[k>>2]=(c[k>>2]|0)+1}do{d=c[k>>2]|0;c[k>>2]=d+ -1;a[(c[g>>2]|0)+d>>0]=0;if((c[k>>2]|0)<0)break}while((a[(c[g>>2]|0)+(c[k>>2]|0)>>0]|0)==65);c[(c[n>>2]|0)+20>>2]=c[g>>2]}c[k>>2]=Mb(c[g>>2]|0)|0;if(!(c[k>>2]|0)){i=j;return}f=c[m>>2]|0;if(c[h>>2]|0){hp(f,48,c[h>>2]|0,c[k>>2]|0,0,c[g>>2]|0,c[k>>2]|0)|0;i=j;return}else{bf(f,-1,c[g>>2]|0,c[k>>2]|0);i=j;return}}function tu(a,b,e,f,g,h,j,k,l){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;u=i;i=i+48|0;n=u+36|0;w=u+32|0;m=u+28|0;t=u+24|0;v=u+20|0;p=u+16|0;q=u+12|0;r=u+8|0;s=u+4|0;o=u;c[n>>2]=a;c[w>>2]=b;c[m>>2]=e;c[t>>2]=f;c[v>>2]=g;c[p>>2]=h;c[q>>2]=j;c[r>>2]=k;c[s>>2]=l;c[o>>2]=c[w>>2];while(1){if(!(c[o>>2]|0))break;if(((d[(c[o>>2]|0)+8>>0]|0|0)==(c[m>>2]|0)?(d[(c[o>>2]|0)+9>>0]|0|0)==(c[v>>2]|0):0)?(ex(c[(c[o>>2]|0)+16>>2]|0,c[t>>2]|0)|0)!=0:0)kw(c[n>>2]|0,c[o>>2]|0,c[p>>2]|0,c[q>>2]|0,c[r>>2]|0,c[s>>2]|0);c[o>>2]=c[(c[o>>2]|0)+32>>2]}i=u;return}function uu(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+16|0;f=e+8|0;g=e+4|0;h=e;c[f>>2]=a;c[g>>2]=b;c[h>>2]=d;if((c[g>>2]|0)<=0){i=e;return}fp(c[(c[f>>2]|0)+8>>2]|0,136,c[g>>2]|0,c[h>>2]|0)|0;i=e;return}function vu(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0;j=i;i=i+16|0;f=j+8|0;g=j+4|0;h=j;c[f>>2]=a;c[g>>2]=b;c[h>>2]=e;if((d[(c[f>>2]|0)+23>>0]|0|0)!=0?(Vs(c[g>>2]|0)|0)!=0:0){ct(c[f>>2]|0,c[g>>2]|0,c[h>>2]|0,0);i=j;return}Os(c[f>>2]|0,c[g>>2]|0,c[h>>2]|0);i=j;return}function wu(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;j=i;i=i+32|0;m=j+20|0;h=j+16|0;g=j+12|0;l=j+8|0;e=j+4|0;k=j;c[m>>2]=b;c[h>>2]=d;d=c[m>>2]|0;if(c[(c[m>>2]|0)+408>>2]|0)d=c[d+408>>2]|0;c[g>>2]=d;c[l>>2]=0;while(1){if((c[l>>2]|0)>=(c[(c[g>>2]|0)+452>>2]|0))break;if((c[h>>2]|0)==(c[(c[(c[g>>2]|0)+520>>2]|0)+(c[l>>2]<<2)>>2]|0)){f=10;break}c[l>>2]=(c[l>>2]|0)+1}if((f|0)==10){i=j;return}c[e>>2]=(c[(c[g>>2]|0)+452>>2]|0)+1<<2;c[k>>2]=jc(c[(c[g>>2]|0)+520>>2]|0,c[e>>2]|0)|0;if(c[k>>2]|0){c[(c[g>>2]|0)+520>>2]=c[k>>2];b=c[h>>2]|0;d=(c[g>>2]|0)+452|0;m=c[d>>2]|0;c[d>>2]=m+1;c[(c[(c[g>>2]|0)+520>>2]|0)+(m<<2)>>2]=b;i=j;return}else{a[(c[c[g>>2]>>2]|0)+64>>0]=1;i=j;return}}function xu(f,g,h,j,k,l,m,n,o,p,q){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;q=q|0;var r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0;aa=i;i=i+176|0;ka=aa;D=aa+168|0;v=aa+164|0;x=aa+160|0;X=aa+156|0;A=aa+152|0;z=aa+148|0;Q=aa+144|0;I=aa+175|0;N=aa+174|0;s=aa+140|0;$=aa+136|0;V=aa+132|0;w=aa+128|0;H=aa+124|0;Y=aa+120|0;F=aa+116|0;u=aa+112|0;ha=aa+108|0;M=aa+104|0;ja=aa+100|0;W=aa+96|0;O=aa+92|0;K=aa+88|0;t=aa+84|0;G=aa+173|0;y=aa+172|0;L=aa+80|0;ia=aa+76|0;ca=aa+72|0;ea=aa+68|0;da=aa+64|0;ga=aa+60|0;ba=aa+56|0;E=aa+52|0;P=aa+48|0;B=aa+44|0;C=aa+40|0;J=aa+36|0;r=aa+32|0;R=aa+28|0;S=aa+24|0;T=aa+20|0;U=aa+16|0;Z=aa+12|0;_=aa+8|0;c[D>>2]=f;c[v>>2]=g;c[x>>2]=h;c[X>>2]=j;c[A>>2]=k;c[z>>2]=l;c[Q>>2]=m;a[I>>0]=n;a[N>>0]=o;c[s>>2]=p;c[$>>2]=q;c[H>>2]=0;c[W>>2]=0;c[K>>2]=0;c[t>>2]=0;a[y>>0]=0;c[L>>2]=-1;a[G>>0]=(c[Q>>2]|0)!=0;c[Y>>2]=c[c[D>>2]>>2];c[V>>2]=dp(c[D>>2]|0)|0;c[ha>>2]=b[(c[v>>2]|0)+38>>1];if(!(d[(c[v>>2]|0)+44>>0]&32)){c[H>>2]=0;c[O>>2]=1}else{c[H>>2]=Zr(c[v>>2]|0)|0;c[O>>2]=e[(c[H>>2]|0)+50>>1]}c[F>>2]=0;while(1){if((c[F>>2]|0)>=(c[ha>>2]|0))break;do if((c[F>>2]|0)!=(b[(c[v>>2]|0)+36>>1]|0)?(c[M>>2]=d[(c[(c[v>>2]|0)+4>>2]|0)+((c[F>>2]|0)*24|0)+20>>0],(c[M>>2]|0)!=0):0){if((d[N>>0]|0)==10){if((c[M>>2]|0)==10)c[M>>2]=2}else c[M>>2]=d[N>>0];if((c[M>>2]|0)==5?(c[(c[(c[v>>2]|0)+4>>2]|0)+((c[F>>2]|0)*24|0)+4>>2]|0)==0:0)c[M>>2]=2;q=c[M>>2]|0;if((q|0)==4){fp(c[V>>2]|0,76,(c[z>>2]|0)+1+(c[F>>2]|0)|0,c[s>>2]|0)|0;break}else if((q|0)==2)Sp(c[D>>2]|0);else if(!((q|0)==3|(q|0)==1)){c[ja>>2]=Ir(c[V>>2]|0,77,(c[z>>2]|0)+1+(c[F>>2]|0)|0)|0;Os(c[D>>2]|0,c[(c[(c[v>>2]|0)+4>>2]|0)+((c[F>>2]|0)*24|0)+4>>2]|0,(c[z>>2]|0)+1+(c[F>>2]|0)|0);zp(c[V>>2]|0,c[ja>>2]|0);break}f=c[Y>>2]|0;g=c[(c[(c[v>>2]|0)+4>>2]|0)+((c[F>>2]|0)*24|0)>>2]|0;c[ka>>2]=c[c[v>>2]>>2];c[ka+4>>2]=g;c[ia>>2]=Te(f,17448,ka)|0;hp(c[V>>2]|0,23,1299,c[M>>2]|0,(c[z>>2]|0)+1+(c[F>>2]|0)|0,c[ia>>2]|0,-1)|0;Xe(c[V>>2]|0,1)}while(0);c[F>>2]=(c[F>>2]|0)+1}a:do if((c[(c[v>>2]|0)+24>>2]|0)!=0?(c[(c[Y>>2]|0)+24>>2]&8192|0)==0:0){c[ca>>2]=c[(c[v>>2]|0)+24>>2];c[(c[D>>2]|0)+92>>2]=(c[z>>2]|0)+1;if((d[N>>0]|0)!=10)ha=d[N>>0]|0;else ha=2;c[M>>2]=ha;c[F>>2]=0;while(1){if((c[F>>2]|0)>=(c[c[ca>>2]>>2]|0))break a;c[ea>>2]=Nr(c[V>>2]|0)|0;Gs(c[D>>2]|0,c[(c[(c[ca>>2]|0)+4>>2]|0)+((c[F>>2]|0)*20|0)>>2]|0,c[ea>>2]|0,16);if((c[M>>2]|0)==4)fp(c[V>>2]|0,16,0,c[s>>2]|0)|0;else{c[da>>2]=c[(c[(c[ca>>2]|0)+4>>2]|0)+((c[F>>2]|0)*20|0)+4>>2];if(!(c[da>>2]|0))c[da>>2]=c[c[v>>2]>>2];if((c[M>>2]|0)==5)c[M>>2]=2;ts(c[D>>2]|0,275,c[M>>2]|0,c[da>>2]|0,0,3)}Pr(c[V>>2]|0,c[ea>>2]|0);c[F>>2]=(c[F>>2]|0)+1}}while(0);if((d[I>>0]|0)!=0&(c[H>>2]|0)==0){c[ga>>2]=Nr(c[V>>2]|0)|0;c[M>>2]=d[(c[v>>2]|0)+45>>0];if((d[N>>0]|0)==10){if((c[M>>2]|0)==10)c[M>>2]=2}else c[M>>2]=d[N>>0];if(a[G>>0]|0){ip(c[V>>2]|0,79,c[z>>2]|0,c[ga>>2]|0,c[Q>>2]|0)|0;Xe(c[V>>2]|0,-112)}b:do if((c[M>>2]|0)==5?(d[N>>0]|0)!=5:0){c[w>>2]=c[(c[v>>2]|0)+8>>2];while(1){if(!(c[w>>2]|0))break b;if((d[(c[w>>2]|0)+54>>0]|0)==4)break;if((d[(c[w>>2]|0)+54>>0]|0)==3)break;c[w>>2]=c[(c[w>>2]|0)+20>>2]}c[K>>2]=mp(c[V>>2]|0,16)|0}while(0);ip(c[V>>2]|0,70,c[X>>2]|0,c[ga>>2]|0,c[z>>2]|0)|0;switch(c[M>>2]|0){case 4:{fp(c[V>>2]|0,16,0,c[s>>2]|0)|0;break};case 5:{c[ba>>2]=0;if(c[(c[Y>>2]|0)+24>>2]&262144)c[ba>>2]=lu(c[D>>2]|0,c[v>>2]|0,109,0,0)|0;if((c[ba>>2]|0)==0?(cw(c[D>>2]|0,c[v>>2]|0,0,0)|0)==0:0){if(c[(c[v>>2]|0)+8>>2]|0){dw(c[D>>2]|0);fw(c[D>>2]|0,c[v>>2]|0,c[X>>2]|0,c[A>>2]|0,0)}}else{dw(c[D>>2]|0);ew(c[D>>2]|0,c[v>>2]|0,c[ba>>2]|0,c[X>>2]|0,c[A>>2]|0,c[z>>2]|0,1,0,5,1)}c[W>>2]=1;break};case 3:case 2:case 1:{fa=52;break};default:{c[M>>2]=2;fa=52}}if((fa|0)==52)bw(c[D>>2]|0,c[M>>2]|0,c[v>>2]|0);Pr(c[V>>2]|0,c[ga>>2]|0);if(c[K>>2]|0){c[t>>2]=mp(c[V>>2]|0,16)|0;zp(c[V>>2]|0,c[K>>2]|0)}}c[u>>2]=0;c[w>>2]=c[(c[v>>2]|0)+8>>2];while(1){if(!(c[w>>2]|0))break;do if(c[(c[x>>2]|0)+(c[u>>2]<<2)>>2]|0){if(!(d[y>>0]|0)){su(c[V>>2]|0,c[v>>2]|0,(c[z>>2]|0)+1|0);a[y>>0]=1}c[B>>2]=(c[A>>2]|0)+(c[u>>2]|0);c[C>>2]=Nr(c[V>>2]|0)|0;if(c[(c[w>>2]|0)+36>>2]|0){fp(c[V>>2]|0,28,0,c[(c[x>>2]|0)+(c[u>>2]<<2)>>2]|0)|0;c[(c[D>>2]|0)+92>>2]=(c[z>>2]|0)+1;xs(c[D>>2]|0,c[(c[w>>2]|0)+36>>2]|0,c[C>>2]|0,16);c[(c[D>>2]|0)+92>>2]=0}c[E>>2]=ys(c[D>>2]|0,e[(c[w>>2]|0)+52>>1]|0)|0;c[F>>2]=0;while(1){if((c[F>>2]|0)>=(e[(c[w>>2]|0)+52>>1]|0))break;c[J>>2]=b[(c[(c[w>>2]|0)+4>>2]|0)+(c[F>>2]<<1)>>1];if((c[J>>2]|0)>=0?(c[J>>2]|0)!=(b[(c[v>>2]|0)+36>>1]|0):0){c[r>>2]=(c[J>>2]|0)+(c[z>>2]|0)+1;fa=80}else fa=75;if((fa|0)==75?(fa=0,(c[L>>2]|0)!=((c[E>>2]|0)+(c[F>>2]|0)|0)):0){c[r>>2]=c[z>>2];if(c[(c[w>>2]|0)+36>>2]|0)ba=-1;else ba=(c[E>>2]|0)+(c[F>>2]|0)|0;c[L>>2]=ba;fa=80}if((fa|0)==80)fp(c[V>>2]|0,34,c[r>>2]|0,(c[E>>2]|0)+(c[F>>2]|0)|0)|0;c[F>>2]=(c[F>>2]|0)+1}ip(c[V>>2]|0,49,c[E>>2]|0,e[(c[w>>2]|0)+52>>1]|0,c[(c[x>>2]|0)+(c[u>>2]<<2)>>2]|0)|0;Us(c[D>>2]|0,c[E>>2]|0,e[(c[w>>2]|0)+52>>1]|0);if(((d[G>>0]|0)!=0?(c[H>>2]|0)==(c[w>>2]|0):0)?(d[I>>0]|0)==0:0){Pr(c[V>>2]|0,c[C>>2]|0);break}c[M>>2]=d[(c[w>>2]|0)+54>>0];if(!(c[M>>2]|0)){Bs(c[D>>2]|0,c[E>>2]|0,e[(c[w>>2]|0)+52>>1]|0);Pr(c[V>>2]|0,c[C>>2]|0);break}if((d[N>>0]|0)==10){if((c[M>>2]|0)==10)c[M>>2]=2}else c[M>>2]=d[N>>0];We(c[V>>2]|0,67,c[B>>2]|0,c[C>>2]|0,c[E>>2]|0,e[(c[w>>2]|0)+50>>1]|0)|0;if((c[w>>2]|0)==(c[H>>2]|0))ba=c[E>>2]|0;else ba=ys(c[D>>2]|0,c[O>>2]|0)|0;c[P>>2]=ba;c:do if((d[G>>0]|0)!=0|(c[M>>2]|0)==5){if(!(d[(c[v>>2]|0)+44>>0]&32)){fp(c[V>>2]|0,112,c[B>>2]|0,c[P>>2]|0)|0;if(!(a[G>>0]|0))break;ip(c[V>>2]|0,79,c[P>>2]|0,c[C>>2]|0,c[Q>>2]|0)|0;Xe(c[V>>2]|0,-112);break}d:do if((c[w>>2]|0)!=(c[H>>2]|0)){c[F>>2]=0;while(1){if((c[F>>2]|0)>=(e[(c[H>>2]|0)+50>>1]|0))break d;c[R>>2]=(Ds(c[w>>2]|0,b[(c[(c[H>>2]|0)+4>>2]|0)+(c[F>>2]<<1)>>1]|0)|0)<<16>>16;ip(c[V>>2]|0,47,c[B>>2]|0,c[R>>2]|0,(c[P>>2]|0)+(c[F>>2]|0)|0)|0;c[F>>2]=(c[F>>2]|0)+1}}while(0);if(a[G>>0]|0){f=Mr(c[V>>2]|0)|0;c[S>>2]=f+(e[(c[H>>2]|0)+50>>1]|0);c[T>>2]=78;c[U>>2]=(a[(c[w>>2]|0)+55>>0]&3|0)==2?c[E>>2]|0:c[P>>2]|0;c[F>>2]=0;while(1){if((c[F>>2]|0)>=(e[(c[H>>2]|0)+50>>1]|0))break c;c[Z>>2]=Or(c[D>>2]|0,c[(c[(c[H>>2]|0)+32>>2]|0)+(c[F>>2]<<2)>>2]|0)|0;c[R>>2]=b[(c[(c[H>>2]|0)+4>>2]|0)+(c[F>>2]<<1)>>1];if((c[F>>2]|0)==((e[(c[H>>2]|0)+50>>1]|0)-1|0)){c[S>>2]=c[C>>2];c[T>>2]=79}hp(c[V>>2]|0,c[T>>2]|0,(c[Q>>2]|0)+1+(c[R>>2]|0)|0,c[S>>2]|0,(c[U>>2]|0)+(c[F>>2]|0)|0,c[Z>>2]|0,-4)|0;Xe(c[V>>2]|0,-112);c[F>>2]=(c[F>>2]|0)+1}}}while(0);ba=c[M>>2]|0;if((ba|0)==3|(ba|0)==2|(ba|0)==1)rs(c[D>>2]|0,c[M>>2]|0,c[w>>2]|0);else if((ba|0)==4)fp(c[V>>2]|0,16,0,c[s>>2]|0)|0;else{c[_>>2]=0;dw(c[D>>2]|0);if(c[(c[Y>>2]|0)+24>>2]&262144)c[_>>2]=lu(c[D>>2]|0,c[v>>2]|0,109,0,0)|0;ew(c[D>>2]|0,c[v>>2]|0,c[_>>2]|0,c[X>>2]|0,c[A>>2]|0,c[P>>2]|0,c[O>>2]&65535,0,5,(c[w>>2]|0)==(c[H>>2]|0)&255);c[W>>2]=1}Pr(c[V>>2]|0,c[C>>2]|0);Bs(c[D>>2]|0,c[E>>2]|0,e[(c[w>>2]|0)+52>>1]|0);if((c[P>>2]|0)!=(c[E>>2]|0))Bs(c[D>>2]|0,c[P>>2]|0,c[O>>2]|0)}while(0);c[w>>2]=c[(c[w>>2]|0)+20>>2];c[u>>2]=(c[u>>2]|0)+1}if(!(c[K>>2]|0)){g=c[W>>2]|0;f=c[$>>2]|0;c[f>>2]=g;i=aa;return}fp(c[V>>2]|0,16,0,(c[K>>2]|0)+1|0)|0;zp(c[V>>2]|0,c[t>>2]|0);g=c[W>>2]|0;f=c[$>>2]|0;c[f>>2]=g;i=aa;return}function yu(e,f,g,h,j,k){e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0;D=i;i=i+112|0;p=D+104|0;q=D+100|0;z=D+96|0;y=D+92|0;r=D+88|0;s=D+84|0;o=D+80|0;n=D+76|0;A=D+72|0;K=D+68|0;v=D+64|0;B=D+60|0;C=D+56|0;I=D+52|0;l=D+48|0;J=D+44|0;F=D+40|0;E=D+36|0;L=D+32|0;M=D+28|0;N=D+24|0;H=D+20|0;G=D+16|0;t=D+12|0;w=D+8|0;u=D+4|0;x=D;c[p>>2]=e;c[q>>2]=f;c[z>>2]=g;c[y>>2]=h;c[r>>2]=j;c[s>>2]=k;c[o>>2]=c[c[p>>2]>>2];c[v>>2]=d[(c[p>>2]|0)+438>>0];if(!(c[(c[o>>2]|0)+24>>2]&524288)){i=D;return}c[A>>2]=Ve(c[o>>2]|0,c[(c[q>>2]|0)+68>>2]|0)|0;c[K>>2]=c[(c[(c[o>>2]|0)+16>>2]|0)+(c[A>>2]<<4)>>2];c[n>>2]=c[(c[q>>2]|0)+16>>2];a:while(1){if(!(c[n>>2]|0)){m=38;break}c[C>>2]=0;c[I>>2]=0;c[E>>2]=0;if(!(((c[r>>2]|0)!=0?(xc(c[c[q>>2]>>2]|0,c[(c[n>>2]|0)+8>>2]|0)|0)!=0:0)?(Bu(c[q>>2]|0,c[n>>2]|0,c[r>>2]|0,c[s>>2]|0)|0)==0:0))m=7;do if((m|0)==7){m=0;if(a[(c[p>>2]|0)+438>>0]|0)c[B>>2]=sp(c[o>>2]|0,c[(c[n>>2]|0)+8>>2]|0,c[K>>2]|0)|0;else c[B>>2]=Re(c[p>>2]|0,0,c[(c[n>>2]|0)+8>>2]|0,c[K>>2]|0)|0;if((c[B>>2]|0)!=0?($t(c[p>>2]|0,c[B>>2]|0,c[n>>2]|0,C,I)|0)==0:0){if(c[I>>2]|0)c[l>>2]=c[I>>2];else{c[J>>2]=c[(c[n>>2]|0)+36>>2];c[l>>2]=J}c[F>>2]=0;while(1){if((c[F>>2]|0)>=(c[(c[n>>2]|0)+20>>2]|0))break;if((c[(c[l>>2]|0)+(c[F>>2]<<2)>>2]|0)==(b[(c[q>>2]|0)+36>>1]|0))c[(c[l>>2]|0)+(c[F>>2]<<2)>>2]=-1;if(c[(c[o>>2]|0)+284>>2]|0){if(c[C>>2]|0)k=b[(c[(c[C>>2]|0)+4>>2]|0)+(c[F>>2]<<1)>>1]|0;else k=b[(c[B>>2]|0)+36>>1]|0;c[G>>2]=c[(c[(c[B>>2]|0)+4>>2]|0)+((k<<16>>16)*24|0)>>2];c[H>>2]=$q(c[p>>2]|0,c[c[B>>2]>>2]|0,c[G>>2]|0,c[A>>2]|0)|0;c[E>>2]=(c[H>>2]|0)==2&1}c[F>>2]=(c[F>>2]|0)+1}Jr(c[p>>2]|0,c[A>>2]|0,c[(c[B>>2]|0)+32>>2]|0,0,c[c[B>>2]>>2]|0);e=(c[p>>2]|0)+68|0;c[e>>2]=(c[e>>2]|0)+1;if(c[z>>2]|0)Cu(c[p>>2]|0,c[A>>2]|0,c[B>>2]|0,c[C>>2]|0,c[n>>2]|0,c[l>>2]|0,c[z>>2]|0,-1,c[E>>2]|0);if(c[y>>2]|0)Cu(c[p>>2]|0,c[A>>2]|0,c[B>>2]|0,c[C>>2]|0,c[n>>2]|0,c[l>>2]|0,c[y>>2]|0,1,c[E>>2]|0);Xb(c[o>>2]|0,c[I>>2]|0);break}if(!(c[v>>2]|0)){m=57;break a}if(d[(c[o>>2]|0)+64>>0]|0){m=57;break a}if(!(c[B>>2]|0)){c[L>>2]=dp(c[p>>2]|0)|0;e=Mr(c[L>>2]|0)|0;c[M>>2]=e+(c[(c[n>>2]|0)+20>>2]|0)+1;c[F>>2]=0;while(1){if((c[F>>2]|0)>=(c[(c[n>>2]|0)+20>>2]|0))break;c[N>>2]=(c[(c[n>>2]|0)+36+(c[F>>2]<<3)>>2]|0)+(c[z>>2]|0)+1;fp(c[L>>2]|0,76,c[N>>2]|0,c[M>>2]|0)|0;c[F>>2]=(c[F>>2]|0)+1}fp(c[L>>2]|0,134,d[(c[n>>2]|0)+24>>0]|0,-1)|0}}while(0);c[n>>2]=c[(c[n>>2]|0)+4>>2]}if((m|0)==38){c[n>>2]=Up(c[q>>2]|0)|0;b:while(1){if(!(c[n>>2]|0)){m=57;break}c[t>>2]=0;c[u>>2]=0;if(!((c[r>>2]|0)!=0?(Du(c[q>>2]|0,c[n>>2]|0,c[r>>2]|0,c[s>>2]|0)|0)==0:0))m=42;do if((m|0)==42){m=0;if((((a[(c[n>>2]|0)+24>>0]|0)==0?(c[(c[o>>2]|0)+24>>2]&16777216|0)==0:0)?(c[(c[p>>2]|0)+408>>2]|0)==0:0)?(a[(c[p>>2]|0)+20>>0]|0)==0:0)break;if($t(c[p>>2]|0,c[q>>2]|0,c[n>>2]|0,t,u)|0){if(!(c[v>>2]|0)){m=57;break b}if(d[(c[o>>2]|0)+64>>0]|0){m=57;break b}else break}c[w>>2]=ko(c[o>>2]|0,0,0,0)|0;if(c[w>>2]|0){c[x>>2]=(c[w>>2]|0)+8;c[(c[x>>2]|0)+16>>2]=c[c[n>>2]>>2];c[(c[x>>2]|0)+8>>2]=c[c[c[n>>2]>>2]>>2];f=(c[(c[x>>2]|0)+16>>2]|0)+40|0;b[f>>1]=(b[f>>1]|0)+1<<16>>16;f=(c[p>>2]|0)+68|0;e=c[f>>2]|0;c[f>>2]=e+1;c[(c[x>>2]|0)+40>>2]=e;if(c[y>>2]|0)Eu(c[p>>2]|0,c[w>>2]|0,c[q>>2]|0,c[t>>2]|0,c[n>>2]|0,c[u>>2]|0,c[y>>2]|0,-1);if(c[z>>2]|0)Eu(c[p>>2]|0,c[w>>2]|0,c[q>>2]|0,c[t>>2]|0,c[n>>2]|0,c[u>>2]|0,c[z>>2]|0,1);c[(c[x>>2]|0)+8>>2]=0;vn(c[o>>2]|0,c[w>>2]|0)}Xb(c[o>>2]|0,c[u>>2]|0)}while(0);c[n>>2]=c[(c[n>>2]|0)+12>>2]}if((m|0)==57){i=D;return}}else if((m|0)==57){i=D;return}}function zu(e,f,g,h,j,k,l,m,n){e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;var o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;A=i;i=i+64|0;t=A+52|0;z=A+48|0;q=A+44|0;B=A+40|0;s=A+36|0;D=A+32|0;x=A+28|0;w=A+24|0;v=A+20|0;p=A+16|0;E=A+12|0;u=A+57|0;y=A+8|0;r=A+4|0;C=A;o=A+56|0;c[t>>2]=e;c[z>>2]=f;c[q>>2]=g;c[B>>2]=h;c[s>>2]=j;c[D>>2]=k;c[x>>2]=l;c[w>>2]=m;c[v>>2]=n;a[o>>0]=0;c[p>>2]=dp(c[t>>2]|0)|0;c[C>>2]=0;c[E>>2]=c[(c[z>>2]|0)+8>>2];while(1){if(!(c[E>>2]|0))break;if(c[(c[D>>2]|0)+(c[C>>2]<<2)>>2]|0){a[o>>0]=1;if(c[(c[E>>2]|0)+36>>2]|0){f=c[p>>2]|0;e=c[(c[D>>2]|0)+(c[C>>2]<<2)>>2]|0;fp(f,76,e,(Mr(c[p>>2]|0)|0)+2|0)|0}fp(c[p>>2]|0,110,(c[B>>2]|0)+(c[C>>2]|0)|0,c[(c[D>>2]|0)+(c[C>>2]<<2)>>2]|0)|0;a[u>>0]=0;a[u>>0]=(c[v>>2]|0)!=0?16:0;if((a[(c[E>>2]|0)+55>>0]&3|0)==2?(d[(c[z>>2]|0)+44>>0]&32|0)!=0:0)a[u>>0]=d[u>>0]|1;if(a[u>>0]|0)Xe(c[p>>2]|0,a[u>>0]|0)}c[E>>2]=c[(c[E>>2]|0)+20>>2];c[C>>2]=(c[C>>2]|0)+1}if(d[(c[z>>2]|0)+44>>0]&32){i=A;return}c[y>>2]=(c[s>>2]|0)+1;c[r>>2]=kp(c[t>>2]|0)|0;ip(c[p>>2]|0,49,c[y>>2]|0,b[(c[z>>2]|0)+38>>1]|0,c[r>>2]|0)|0;if(!(a[o>>0]|0))su(c[p>>2]|0,c[z>>2]|0,0);Us(c[t>>2]|0,c[y>>2]|0,b[(c[z>>2]|0)+38>>1]|0);if(a[(c[t>>2]|0)+18>>0]|0)a[u>>0]=0;else{a[u>>0]=1;a[u>>0]=d[u>>0]|((c[x>>2]|0)!=0?4:2)}if(c[w>>2]|0)a[u>>0]=d[u>>0]|8;if(c[v>>2]|0)a[u>>0]=d[u>>0]|16;ip(c[p>>2]|0,75,c[q>>2]|0,c[r>>2]|0,c[s>>2]|0)|0;if(!(a[(c[t>>2]|0)+18>>0]|0))bf(c[p>>2]|0,-1,c[c[z>>2]>>2]|0,0);Xe(c[p>>2]|0,a[u>>0]|0);i=A;return}function Au(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;b=i;i=i+32|0;h=b+28|0;d=b+24|0;k=b+20|0;e=b+16|0;f=b+12|0;l=b+8|0;j=b+4|0;g=b;c[h>>2]=a;c[k>>2]=c[(c[h>>2]|0)+8>>2];c[e>>2]=c[c[h>>2]>>2];c[d>>2]=c[(c[h>>2]|0)+404>>2];while(1){if(!(c[d>>2]|0))break;c[f>>2]=(c[(c[e>>2]|0)+16>>2]|0)+(c[(c[d>>2]|0)+8>>2]<<4);c[g>>2]=c[(c[d>>2]|0)+12>>2];c[j>>2]=kp(c[h>>2]|0)|0;Kr(c[h>>2]|0,0,c[(c[d>>2]|0)+8>>2]|0,c[(c[(c[f>>2]|0)+12>>2]|0)+72>>2]|0,55);c[l>>2]=Ir(c[k>>2]|0,77,(c[g>>2]|0)+1|0)|0;fp(c[k>>2]|0,74,0,(c[g>>2]|0)+1|0)|0;zp(c[k>>2]|0,c[l>>2]|0);ip(c[k>>2]|0,49,(c[g>>2]|0)-1|0,2,c[j>>2]|0)|0;ip(c[k>>2]|0,75,0,c[j>>2]|0,(c[g>>2]|0)+1|0)|0;Xe(c[k>>2]|0,8);mp(c[k>>2]|0,61)|0;lp(c[h>>2]|0,c[j>>2]|0);c[d>>2]=c[c[d>>2]>>2]}i=b;return}function Bu(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;g=i;i=i+32|0;h=g+24|0;m=g+20|0;j=g+16|0;o=g+12|0;k=g+8|0;n=g+4|0;l=g;c[m>>2]=a;c[j>>2]=d;c[o>>2]=e;c[k>>2]=f;c[n>>2]=0;while(1){if((c[n>>2]|0)>=(c[(c[j>>2]|0)+20>>2]|0)){j=8;break}c[l>>2]=c[(c[j>>2]|0)+36+(c[n>>2]<<3)>>2];if((c[(c[o>>2]|0)+(c[l>>2]<<2)>>2]|0)>=0){j=4;break}if((c[k>>2]|0)!=0?(c[l>>2]|0)==(b[(c[m>>2]|0)+36>>1]|0):0){j=6;break}c[n>>2]=(c[n>>2]|0)+1}if((j|0)==4){c[h>>2]=1;a=c[h>>2]|0;i=g;return a|0}else if((j|0)==6){c[h>>2]=1;a=c[h>>2]|0;i=g;return a|0}else if((j|0)==8){c[h>>2]=0;a=c[h>>2]|0;i=g;return a|0}return 0}function Cu(e,f,g,h,j,k,l,m,n){e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;var o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0;t=i;i=i+96|0;u=t+84|0;w=t+80|0;A=t+76|0;E=t+72|0;s=t+68|0;z=t+64|0;y=t+60|0;r=t+56|0;J=t+52|0;v=t+48|0;p=t+44|0;o=t+40|0;q=t+36|0;K=t+32|0;x=t+28|0;I=t+24|0;C=t+20|0;B=t+16|0;D=t+12|0;H=t+8|0;F=t+4|0;G=t;c[u>>2]=e;c[w>>2]=f;c[A>>2]=g;c[E>>2]=h;c[s>>2]=j;c[z>>2]=k;c[y>>2]=l;c[r>>2]=m;c[J>>2]=n;c[p>>2]=dp(c[u>>2]|0)|0;c[o>>2]=(c[(c[u>>2]|0)+68>>2]|0)-1;c[q>>2]=Nr(c[p>>2]|0)|0;if((c[r>>2]|0)<0)fp(c[p>>2]|0,135,d[(c[s>>2]|0)+24>>0]|0,c[q>>2]|0)|0;c[v>>2]=0;while(1){if((c[v>>2]|0)>=(c[(c[s>>2]|0)+20>>2]|0))break;c[K>>2]=(c[(c[z>>2]|0)+(c[v>>2]<<2)>>2]|0)+(c[y>>2]|0)+1;fp(c[p>>2]|0,76,c[K>>2]|0,c[q>>2]|0)|0;c[v>>2]=(c[v>>2]|0)+1}do if(!(c[J>>2]|0)){if(!(c[E>>2]|0)){c[I>>2]=kp(c[u>>2]|0)|0;fp(c[p>>2]|0,34,(c[c[z>>2]>>2]|0)+1+(c[y>>2]|0)|0,c[I>>2]|0)|0;c[x>>2]=fp(c[p>>2]|0,38,c[I>>2]|0,0)|0;if((c[r>>2]|0)==1?(c[A>>2]|0)==(c[c[s>>2]>>2]|0):0){ip(c[p>>2]|0,79,c[y>>2]|0,c[q>>2]|0,c[I>>2]|0)|0;Xe(c[p>>2]|0,-112)}Kr(c[u>>2]|0,c[o>>2]|0,c[w>>2]|0,c[A>>2]|0,54);ip(c[p>>2]|0,70,c[o>>2]|0,0,c[I>>2]|0)|0;fp(c[p>>2]|0,16,0,c[q>>2]|0)|0;e=c[p>>2]|0;zp(e,(Mr(c[p>>2]|0)|0)-2|0);zp(c[p>>2]|0,c[x>>2]|0);lp(c[u>>2]|0,c[I>>2]|0);break}c[C>>2]=c[(c[s>>2]|0)+20>>2];c[B>>2]=ys(c[u>>2]|0,c[C>>2]|0)|0;c[D>>2]=kp(c[u>>2]|0)|0;ip(c[p>>2]|0,54,c[o>>2]|0,c[(c[E>>2]|0)+44>>2]|0,c[w>>2]|0)|0;Lr(c[u>>2]|0,c[E>>2]|0);c[v>>2]=0;while(1){if((c[v>>2]|0)>=(c[C>>2]|0))break;fp(c[p>>2]|0,33,(c[(c[z>>2]|0)+(c[v>>2]<<2)>>2]|0)+1+(c[y>>2]|0)|0,(c[B>>2]|0)+(c[v>>2]|0)|0)|0;c[v>>2]=(c[v>>2]|0)+1}if((c[r>>2]|0)==1?(c[A>>2]|0)==(c[c[s>>2]>>2]|0):0){e=Mr(c[p>>2]|0)|0;c[H>>2]=e+(c[C>>2]|0)+1;c[v>>2]=0;while(1){if((c[v>>2]|0)>=(c[C>>2]|0))break;c[F>>2]=(c[(c[z>>2]|0)+(c[v>>2]<<2)>>2]|0)+1+(c[y>>2]|0);c[G>>2]=(b[(c[(c[E>>2]|0)+4>>2]|0)+(c[v>>2]<<1)>>1]|0)+1+(c[y>>2]|0);if((b[(c[(c[E>>2]|0)+4>>2]|0)+(c[v>>2]<<1)>>1]|0)==(b[(c[A>>2]|0)+36>>1]|0))c[G>>2]=c[y>>2];ip(c[p>>2]|0,78,c[F>>2]|0,c[H>>2]|0,c[G>>2]|0)|0;Xe(c[p>>2]|0,16);c[v>>2]=(c[v>>2]|0)+1}fp(c[p>>2]|0,16,0,c[q>>2]|0)|0}j=c[p>>2]|0;h=c[B>>2]|0;g=c[C>>2]|0;f=c[D>>2]|0;e=au(c[p>>2]|0,c[E>>2]|0)|0;hp(j,49,h,g,f,e,c[C>>2]|0)|0;We(c[p>>2]|0,69,c[o>>2]|0,c[q>>2]|0,c[D>>2]|0,0)|0;lp(c[u>>2]|0,c[D>>2]|0);Bs(c[u>>2]|0,c[B>>2]|0,c[C>>2]|0)}while(0);if((((a[(c[s>>2]|0)+24>>0]|0)==0?(c[(c[c[u>>2]>>2]|0)+24>>2]&16777216|0)==0:0)?(c[(c[u>>2]|0)+408>>2]|0)==0:0)?(a[(c[u>>2]|0)+20>>0]|0)==0:0){ts(c[u>>2]|0,787,2,0,-2,4);e=c[p>>2]|0;f=c[q>>2]|0;Pr(e,f);f=c[p>>2]|0;e=c[o>>2]|0;Ir(f,61,e)|0;i=t;return}if((c[r>>2]|0)>0?(d[(c[s>>2]|0)+24>>0]|0)==0:0){v=c[u>>2]|0;if(c[(c[u>>2]|0)+408>>2]|0)v=c[v+408>>2]|0;a[v+21>>0]=1}fp(c[p>>2]|0,134,d[(c[s>>2]|0)+24>>0]|0,c[r>>2]|0)|0;e=c[p>>2]|0;f=c[q>>2]|0;Pr(e,f);f=c[p>>2]|0;e=c[o>>2]|0;Ir(f,61,e)|0;i=t;return}function Du(a,e,f,g){a=a|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;k=i;i=i+48|0;q=k+32|0;m=k+28|0;n=k+24|0;h=k+20|0;r=k+16|0;o=k+12|0;p=k+8|0;l=k+4|0;s=k;c[m>>2]=a;c[n>>2]=e;c[h>>2]=f;c[r>>2]=g;c[o>>2]=0;a:while(1){if((c[o>>2]|0)>=(c[(c[n>>2]|0)+20>>2]|0)){j=14;break}c[p>>2]=c[(c[n>>2]|0)+36+(c[o>>2]<<3)+4>>2];c[l>>2]=0;while(1){if((c[l>>2]|0)>=(b[(c[m>>2]|0)+38>>1]|0))break;if(!((c[(c[h>>2]|0)+(c[l>>2]<<2)>>2]|0)<0?!((c[r>>2]|0)!=0?(c[l>>2]|0)==(b[(c[m>>2]|0)+36>>1]|0):0):0))j=7;do if((j|0)==7){j=0;c[s>>2]=(c[(c[m>>2]|0)+4>>2]|0)+((c[l>>2]|0)*24|0);g=c[s>>2]|0;if(c[p>>2]|0)if(!(xc(c[g>>2]|0,c[p>>2]|0)|0)){j=9;break a}else break;else if(d[g+23>>0]&1){j=11;break a}else break}while(0);c[l>>2]=(c[l>>2]|0)+1}c[o>>2]=(c[o>>2]|0)+1}if((j|0)==9){c[q>>2]=1;a=c[q>>2]|0;i=k;return a|0}else if((j|0)==11){c[q>>2]=1;a=c[q>>2]|0;i=k;return a|0}else if((j|0)==14){c[q>>2]=0;a=c[q>>2]|0;i=k;return a|0}return 0}function Eu(f,g,h,j,k,l,m,n){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;var o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0;v=i;i=i+144|0;w=v+128|0;J=v+124|0;z=v+120|0;G=v+116|0;t=v+112|0;M=v+108|0;A=v+104|0;o=v+100|0;q=v+96|0;E=v+92|0;r=v+88|0;H=v+56|0;p=v+48|0;s=v+44|0;u=v+40|0;L=v+36|0;O=v+32|0;P=v+28|0;K=v+134|0;N=v+24|0;y=v+20|0;B=v+16|0;x=v+12|0;I=v+8|0;D=v+4|0;F=v;C=v+132|0;c[w>>2]=f;c[J>>2]=g;c[z>>2]=h;c[G>>2]=j;c[t>>2]=k;c[M>>2]=l;c[A>>2]=m;c[o>>2]=n;c[q>>2]=c[c[w>>2]>>2];c[r>>2]=0;c[s>>2]=0;c[u>>2]=dp(c[w>>2]|0)|0;if((c[o>>2]|0)<0)c[s>>2]=fp(c[u>>2]|0,135,d[(c[t>>2]|0)+24>>0]|0,0)|0;c[E>>2]=0;while(1){if((c[E>>2]|0)>=(c[(c[t>>2]|0)+20>>2]|0))break;if(c[G>>2]|0)n=b[(c[(c[G>>2]|0)+4>>2]|0)+(c[E>>2]<<1)>>1]|0;else n=-1;b[K>>1]=n;c[L>>2]=Fu(c[w>>2]|0,c[z>>2]|0,c[A>>2]|0,b[K>>1]|0)|0;if(c[M>>2]|0)n=c[(c[M>>2]|0)+(c[E>>2]<<2)>>2]|0;else n=c[(c[t>>2]|0)+36>>2]|0;b[K>>1]=n;c[N>>2]=c[(c[(c[c[t>>2]>>2]|0)+4>>2]|0)+((b[K>>1]|0)*24|0)>>2];c[O>>2]=ho(c[q>>2]|0,27,c[N>>2]|0)|0;c[P>>2]=Rn(c[w>>2]|0,79,c[L>>2]|0,c[O>>2]|0,0)|0;c[r>>2]=mr(c[q>>2]|0,c[r>>2]|0,c[P>>2]|0)|0;c[E>>2]=(c[E>>2]|0)+1}if((c[o>>2]|0)>0?(c[z>>2]|0)==(c[c[t>>2]>>2]|0):0){if(!(d[(c[z>>2]|0)+44>>0]&32)){c[B>>2]=Fu(c[w>>2]|0,c[z>>2]|0,c[A>>2]|0,-1)|0;c[x>>2]=Gu(c[q>>2]|0,c[z>>2]|0,c[(c[J>>2]|0)+48>>2]|0,-1)|0;c[y>>2]=Rn(c[w>>2]|0,78,c[B>>2]|0,c[x>>2]|0,0)|0}else{c[D>>2]=0;c[F>>2]=Zr(c[z>>2]|0)|0;c[E>>2]=0;while(1){if((c[E>>2]|0)>=(e[(c[F>>2]|0)+50>>1]|0))break;b[C>>1]=b[(c[(c[G>>2]|0)+4>>2]|0)+(c[E>>2]<<1)>>1]|0;c[B>>2]=Fu(c[w>>2]|0,c[z>>2]|0,c[A>>2]|0,b[C>>1]|0)|0;c[x>>2]=Gu(c[q>>2]|0,c[z>>2]|0,c[(c[J>>2]|0)+48>>2]|0,b[C>>1]|0)|0;c[I>>2]=Rn(c[w>>2]|0,79,c[B>>2]|0,c[x>>2]|0,0)|0;c[D>>2]=mr(c[q>>2]|0,c[D>>2]|0,c[I>>2]|0)|0;c[E>>2]=(c[E>>2]|0)+1}c[y>>2]=Rn(c[w>>2]|0,19,c[D>>2]|0,0,0)|0}c[r>>2]=mr(c[q>>2]|0,c[r>>2]|0,c[y>>2]|0)|0}c[H+0>>2]=0;c[H+4>>2]=0;c[H+8>>2]=0;c[H+12>>2]=0;c[H+16>>2]=0;c[H+20>>2]=0;c[H+24>>2]=0;c[H+28>>2]=0;c[H+4>>2]=c[J>>2];c[H>>2]=c[w>>2];vq(H,c[r>>2]|0)|0;c[p>>2]=Hu(c[w>>2]|0,c[J>>2]|0,c[r>>2]|0,0,0,0,0)|0;if((c[o>>2]|0)>0?(d[(c[t>>2]|0)+24>>0]|0)==0:0){x=c[w>>2]|0;if(c[(c[w>>2]|0)+408>>2]|0)x=c[x+408>>2]|0;a[x+21>>0]=1}fp(c[u>>2]|0,134,d[(c[t>>2]|0)+24>>0]|0,c[o>>2]|0)|0;if(c[p>>2]|0)Iu(c[p>>2]|0);wn(c[q>>2]|0,c[r>>2]|0);if(!(c[s>>2]|0)){i=v;return}zp(c[u>>2]|0,c[s>>2]|0);i=v;return}function Fu(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;n=i;i=i+32|0;k=n+24|0;h=n+20|0;q=n+16|0;o=n+28|0;j=n+12|0;p=n+8|0;l=n+4|0;m=n;c[k>>2]=d;c[h>>2]=e;c[q>>2]=f;b[o>>1]=g;c[m>>2]=c[c[k>>2]>>2];c[j>>2]=ho(c[m>>2]|0,159,0)|0;if(!(c[j>>2]|0)){d=c[j>>2]|0;i=n;return d|0}if((b[o>>1]|0)>=0?(b[o>>1]|0)!=(b[(c[h>>2]|0)+36>>1]|0):0){c[p>>2]=(c[(c[h>>2]|0)+4>>2]|0)+((b[o>>1]|0)*24|0);c[(c[j>>2]|0)+28>>2]=(c[q>>2]|0)+(b[o>>1]|0)+1;a[(c[j>>2]|0)+1>>0]=a[(c[p>>2]|0)+21>>0]|0;c[l>>2]=c[(c[p>>2]|0)+16>>2];if(!(c[l>>2]|0))c[l>>2]=c[c[(c[m>>2]|0)+8>>2]>>2];c[j>>2]=Oq(c[k>>2]|0,c[j>>2]|0,c[l>>2]|0)|0;d=c[j>>2]|0;i=n;return d|0}c[(c[j>>2]|0)+28>>2]=c[q>>2];a[(c[j>>2]|0)+1>>0]=68;d=c[j>>2]|0;i=n;return d|0}function Gu(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;g=i;i=i+32|0;m=g+12|0;j=g+8|0;k=g+4|0;l=g+16|0;h=g;c[m>>2]=a;c[j>>2]=d;c[k>>2]=e;b[l>>1]=f;c[h>>2]=ho(c[m>>2]|0,154,0)|0;if(!(c[h>>2]|0)){m=c[h>>2]|0;i=g;return m|0}c[(c[h>>2]|0)+44>>2]=c[j>>2];c[(c[h>>2]|0)+28>>2]=c[k>>2];b[(c[h>>2]|0)+32>>1]=b[l>>1]|0;m=c[h>>2]|0;i=g;return m|0}function Hu(f,g,h,j,k,l,m){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;var n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0;r=i;i=i+176|0;Z=r+24|0;q=r+164|0;L=r+160|0;I=r+156|0;X=r+152|0;V=r+148|0;S=r+144|0;F=r+168|0;p=r+140|0;Y=r+136|0;n=r+132|0;t=r+128|0;s=r+124|0;M=r+16|0;N=r+104|0;R=r+100|0;J=r+96|0;v=r+92|0;K=r+88|0;u=r+84|0;U=r+80|0;Q=r+8|0;P=r+76|0;O=r+72|0;w=r+68|0;A=r+64|0;y=r+60|0;x=r+56|0;z=r+52|0;E=r+48|0;C=r;B=r+44|0;G=r+40|0;T=r+36|0;H=r+32|0;W=r+28|0;c[L>>2]=f;c[I>>2]=g;c[X>>2]=h;c[V>>2]=j;c[S>>2]=k;b[F>>1]=l;c[p>>2]=m;c[s>>2]=c[(c[L>>2]|0)+8>>2];c[u>>2]=c[c[L>>2]>>2];c[N+0>>2]=0;c[N+4>>2]=0;c[N+8>>2]=0;c[N+12>>2]=0;c[N+16>>2]=0;if((c[V>>2]|0)!=0?(c[c[V>>2]>>2]|0)>=64:0)c[V>>2]=0;c[N+8>>2]=c[V>>2];if(e[(c[u>>2]|0)+60>>1]&32)b[F>>1]=e[F>>1]&-1025;if((c[c[I>>2]>>2]|0)>64){f=c[L>>2]|0;c[Z>>2]=64;Se(f,23568,Z);c[q>>2]=0;f=c[q>>2]|0;i=r;return f|0}if(e[F>>1]&64)j=1;else j=c[c[I>>2]>>2]|0;c[n>>2]=j;c[Y>>2]=815+(((c[n>>2]|0)-1|0)*72|0)&-8;c[t>>2]=se(c[u>>2]|0,(c[Y>>2]|0)+72|0,0)|0;a:do if(!(a[(c[u>>2]|0)+64>>0]|0)){c[(c[t>>2]|0)+64>>2]=-1;c[(c[t>>2]|0)+60>>2]=-1;a[(c[t>>2]|0)+41>>0]=c[n>>2];c[c[t>>2]>>2]=c[L>>2];c[(c[t>>2]|0)+4>>2]=c[I>>2];c[(c[t>>2]|0)+8>>2]=c[V>>2];c[(c[t>>2]|0)+12>>2]=c[S>>2];f=Nr(c[s>>2]|0)|0;c[(c[t>>2]|0)+48>>2]=f;c[(c[t>>2]|0)+52>>2]=f;b[(c[t>>2]|0)+34>>1]=b[F>>1]|0;c[(c[t>>2]|0)+56>>2]=c[(c[L>>2]|0)+424>>2];c[R>>2]=(c[t>>2]|0)+68;c[N>>2]=c[t>>2];c[N+4>>2]=(c[t>>2]|0)+328;c[N+12>>2]=(c[t>>2]|0)+(c[Y>>2]|0);Ou(c[N+12>>2]|0);c[c[R>>2]>>2]=0;Ru((c[t>>2]|0)+328|0,c[t>>2]|0);Su((c[t>>2]|0)+328|0,c[X>>2]|0,72);c[K>>2]=0;while(1){X=(c[n>>2]|0)==0;if((c[K>>2]|0)>=(c[(c[N+4>>2]|0)+12>>2]|0))break;if(!(!X?(pt(c[(c[(c[N+4>>2]|0)+20>>2]|0)+((c[K>>2]|0)*48|0)>>2]|0)|0)==0:0)){xs(c[L>>2]|0,c[(c[(c[N+4>>2]|0)+20>>2]|0)+((c[K>>2]|0)*48|0)>>2]|0,c[(c[t>>2]|0)+52>>2]|0,16);f=(c[(c[N+4>>2]|0)+20>>2]|0)+((c[K>>2]|0)*48|0)+20|0;a[f>>0]=d[f>>0]|4}c[K>>2]=(c[K>>2]|0)+1}if(X){if(c[V>>2]|0)a[(c[t>>2]|0)+36>>0]=c[c[V>>2]>>2];if(e[F>>1]&1024)a[(c[t>>2]|0)+40>>0]=1}c[K>>2]=0;while(1){if((c[K>>2]|0)>=(c[c[I>>2]>>2]|0))break;Tu(c[R>>2]|0,c[(c[I>>2]|0)+8+((c[K>>2]|0)*72|0)+40>>2]|0);c[K>>2]=(c[K>>2]|0)+1}Uu(c[I>>2]|0,(c[t>>2]|0)+328|0);if(!(a[(c[u>>2]|0)+64>>0]|0)){do if(e[F>>1]&1024){if(Vu(c[L>>2]|0,c[I>>2]|0,(c[t>>2]|0)+328|0,c[S>>2]|0)|0){a[(c[t>>2]|0)+40>>0]=1;break}if(!(c[V>>2]|0)){f=(c[t>>2]|0)+34|0;b[f>>1]=e[f>>1]|512;c[(c[t>>2]|0)+8>>2]=c[S>>2]}}while(0);if(!((c[n>>2]|0)==1?(Wu(N)|0)!=0:0)){c[U>>2]=Xu(N)|0;if(c[U>>2]|0)break;Yu(c[t>>2]|0,0)|0;if(a[(c[u>>2]|0)+64>>0]|0)break;if((c[(c[t>>2]|0)+8>>2]|0)!=0?(Yu(c[t>>2]|0,(b[(c[t>>2]|0)+32>>1]|0)+1&65535)|0,(a[(c[u>>2]|0)+64>>0]|0)!=0):0)break}if((c[(c[t>>2]|0)+8>>2]|0)==0?(c[(c[u>>2]|0)+24>>2]&131072|0)!=0:0){f=(c[t>>2]|0)+24|0;c[f>>2]=-1;c[f+4>>2]=-1}if((c[(c[L>>2]|0)+64>>2]|0)==0?(d[(c[u>>2]|0)+64>>0]|0)==0:0){b:do if(((c[S>>2]|0)!=0?(d[(c[t>>2]|0)+41>>0]|0)>=2:0)?(e[(c[u>>2]|0)+60>>1]&1024|0)==0:0){g=Zu(c[R>>2]|0,c[S>>2]|0)|0;f=Q;c[f>>2]=g;c[f+4>>2]=D;if(c[N+8>>2]|0){h=Zu(c[R>>2]|0,c[N+8>>2]|0)|0;Z=Q;g=c[Z+4>>2]|D;f=Q;c[f>>2]=c[Z>>2]|h;c[f+4>>2]=g}while(1){if((d[(c[t>>2]|0)+41>>0]|0)<2)break b;c[v>>2]=c[(c[t>>2]|0)+736+(((d[(c[t>>2]|0)+41>>0]|0)-1|0)*72|0)+56>>2];if(!(d[(c[(c[t>>2]|0)+4>>2]|0)+8+((d[(c[v>>2]|0)+16>>0]|0)*72|0)+36>>0]&8))break b;if((e[F>>1]&1024|0)==0?(c[(c[v>>2]|0)+36>>2]&4096|0)==0:0)break b;g=Q;f=(c[v>>2]|0)+8|0;if((c[g>>2]&c[f>>2]|0)!=0?1:(c[g+4>>2]&c[f+4>>2]|0)!=0)break b;c[O>>2]=(c[(c[N+4>>2]|0)+20>>2]|0)+((c[(c[N+4>>2]|0)+12>>2]|0)*48|0);c[P>>2]=c[(c[N+4>>2]|0)+20>>2];while(1){if((c[P>>2]|0)>>>0>=(c[O>>2]|0)>>>0)break;g=(c[P>>2]|0)+40|0;f=(c[v>>2]|0)+8|0;if(((c[g>>2]&c[f>>2]|0)!=0?1:(c[g+4>>2]&c[f+4>>2]|0)!=0)?(c[(c[c[P>>2]>>2]|0)+4>>2]&1|0)==0:0)break;c[P>>2]=(c[P>>2]|0)+48}if((c[P>>2]|0)>>>0<(c[O>>2]|0)>>>0)break b;f=(c[t>>2]|0)+41|0;a[f>>0]=(a[f>>0]|0)+ -1<<24>>24;c[n>>2]=(c[n>>2]|0)+ -1}}while(0);f=(c[c[t>>2]>>2]|0)+424|0;c[f>>2]=(c[f>>2]|0)+(b[(c[t>>2]|0)+32>>1]|0);if(((e[F>>1]&4|0)!=0?(c[(c[(c[t>>2]|0)+792>>2]|0)+36>>2]&4096|0)!=0:0)?(a[(c[t>>2]|0)+38>>0]=1,(d[(c[(c[I>>2]|0)+24>>2]|0)+44>>0]&32|0)==0):0){f=(c[(c[t>>2]|0)+792>>2]|0)+36|0;c[f>>2]=c[f>>2]&-65}f=M;c[f>>2]=-1;c[f+4>>2]=-1;c[K>>2]=0;c[J>>2]=(c[t>>2]|0)+736;while(1){if((c[K>>2]|0)>=(c[n>>2]|0))break;c[y>>2]=(c[I>>2]|0)+8+((d[(c[J>>2]|0)+36>>0]|0)*72|0);c[w>>2]=c[(c[y>>2]|0)+16>>2];c[A>>2]=Ve(c[u>>2]|0,c[(c[w>>2]|0)+68>>2]|0)|0;c[v>>2]=c[(c[J>>2]|0)+56>>2];c:do if((d[(c[w>>2]|0)+44>>0]&2|0)==0?(c[(c[w>>2]|0)+12>>2]|0)==0:0){if(c[(c[v>>2]|0)+36>>2]&1024){c[x>>2]=Rp(c[u>>2]|0,c[w>>2]|0)|0;c[z>>2]=c[(c[y>>2]|0)+40>>2];hp(c[s>>2]|0,147,c[z>>2]|0,0,0,c[x>>2]|0,-10)|0;break}if(d[(c[w>>2]|0)+44>>0]&16)break;do if(!(c[(c[v>>2]|0)+36>>2]&64)){if(e[F>>1]&16)break;c[E>>2]=54;if(a[(c[t>>2]|0)+38>>0]|0){c[E>>2]=55;c[(c[t>>2]|0)+60>>2]=c[(c[y>>2]|0)+40>>2]}Kr(c[L>>2]|0,c[(c[y>>2]|0)+40>>2]|0,c[A>>2]|0,c[w>>2]|0,c[E>>2]|0);if(a[(c[t>>2]|0)+38>>0]|0)break c;if((b[(c[w>>2]|0)+38>>1]|0)>=64)break c;if(d[(c[w>>2]|0)+44>>0]&32)break c;h=(c[y>>2]|0)+56|0;g=c[h+4>>2]|0;f=C;c[f>>2]=c[h>>2];c[f+4>>2]=g;c[B>>2]=0;while(1){f=C;if(!((c[f>>2]|0)!=0|(c[f+4>>2]|0)!=0))break;g=C;g=cF(c[g>>2]|0,c[g+4>>2]|0,1)|0;f=C;c[f>>2]=g;c[f+4>>2]=D;c[B>>2]=(c[B>>2]|0)+1}g=c[s>>2]|0;f=(Mr(c[s>>2]|0)|0)-1|0;bf(g,f,c[B>>2]|0,-14);break c}while(0);Jr(c[L>>2]|0,c[A>>2]|0,c[(c[w>>2]|0)+32>>2]|0,0,c[c[w>>2]>>2]|0)}while(0);do if(c[(c[v>>2]|0)+36>>2]&512){c[G>>2]=c[(c[v>>2]|0)+28>>2];c[H>>2]=54;do if(!(d[(c[w>>2]|0)+44>>0]&32))o=87;else{if((a[(c[G>>2]|0)+55>>0]&3|0)!=2){o=87;break}if(!(e[F>>1]&64)){o=87;break}c[T>>2]=c[(c[J>>2]|0)+4>>2];c[H>>2]=0}while(0);d:do if((o|0)==87){o=0;if(a[(c[t>>2]|0)+38>>0]|0){c[W>>2]=c[(c[(c[y>>2]|0)+16>>2]|0)+8>>2];c[T>>2]=c[p>>2];while(1){if(!(c[W>>2]|0))break;if((c[W>>2]|0)==(c[G>>2]|0))break;c[T>>2]=(c[T>>2]|0)+1;c[W>>2]=c[(c[W>>2]|0)+20>>2]}c[H>>2]=55;c[(c[t>>2]|0)+64>>2]=c[T>>2];break}else{do if(c[p>>2]|0){if(!(e[F>>1]&64))break;c[T>>2]=c[p>>2];if(!(e[F>>1]&4096))break d;c[H>>2]=53;break d}while(0);g=(c[L>>2]|0)+68|0;f=c[g>>2]|0;c[g>>2]=f+1;c[T>>2]=f;break}}while(0);c[(c[J>>2]|0)+8>>2]=c[T>>2];if(!(c[H>>2]|0))break;ip(c[s>>2]|0,c[H>>2]|0,c[T>>2]|0,c[(c[G>>2]|0)+44>>2]|0,c[A>>2]|0)|0;Lr(c[L>>2]|0,c[G>>2]|0)}while(0);if((c[A>>2]|0)>=0)qp(c[L>>2]|0,c[A>>2]|0);h=_u((c[t>>2]|0)+68|0,c[(c[y>>2]|0)+40>>2]|0)|0;Z=M;g=c[Z+4>>2]&~D;f=M;c[f>>2]=c[Z>>2]&~h;c[f+4>>2]=g;c[K>>2]=(c[K>>2]|0)+1;c[J>>2]=(c[J>>2]|0)+72}f=Mr(c[s>>2]|0)|0;c[(c[t>>2]|0)+44>>2]=f;if(!(a[(c[u>>2]|0)+64>>0]|0)){f=M;c[f>>2]=-1;c[f+4>>2]=-1;c[K>>2]=0;while(1){if((c[K>>2]|0)>=(c[n>>2]|0))break;c[J>>2]=(c[t>>2]|0)+736+((c[K>>2]|0)*72|0);if((c[(c[(c[J>>2]|0)+56>>2]|0)+36>>2]&16384|0)!=0?(f=M,$u(c[L>>2]|0,(c[t>>2]|0)+328|0,(c[I>>2]|0)+8+((d[(c[J>>2]|0)+36>>0]|0)*72|0)|0,c[f>>2]|0,c[f+4>>2]|0,c[J>>2]|0),(a[(c[u>>2]|0)+64>>0]|0)!=0):0)break a;av(c[L>>2]|0,c[I>>2]|0,c[J>>2]|0,c[K>>2]|0,d[(c[J>>2]|0)+36>>0]|0,b[F>>1]|0);g=Mr(c[s>>2]|0)|0;c[(c[J>>2]|0)+32>>2]=g;g=M;g=bv(c[t>>2]|0,c[K>>2]|0,c[g>>2]|0,c[g+4>>2]|0)|0;f=M;c[f>>2]=g;c[f+4>>2]=D;c[(c[t>>2]|0)+48>>2]=c[(c[J>>2]|0)+24>>2];c[K>>2]=(c[K>>2]|0)+1}c[q>>2]=c[t>>2];f=c[q>>2]|0;i=r;return f|0}}}}else{Xb(c[u>>2]|0,c[t>>2]|0);c[t>>2]=0}while(0);if(c[t>>2]|0){c[(c[L>>2]|0)+424>>2]=c[(c[t>>2]|0)+56>>2];Ju(c[u>>2]|0,c[t>>2]|0)}c[q>>2]=0;f=c[q>>2]|0;i=r;return f|0}function Iu(f){f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;l=i;i=i+80|0;v=l+76|0;j=l+72|0;o=l+68|0;w=l+64|0;p=l+60|0;g=l+56|0;s=l+52|0;k=l+48|0;A=l+44|0;C=l+40|0;B=l+36|0;m=l+32|0;n=l+28|0;q=l+24|0;r=l+20|0;t=l+16|0;u=l+12|0;z=l+8|0;x=l+4|0;y=l;c[v>>2]=f;c[j>>2]=c[c[v>>2]>>2];c[o>>2]=c[(c[j>>2]|0)+8>>2];c[s>>2]=c[(c[v>>2]|0)+4>>2];c[k>>2]=c[c[j>>2]>>2];cu(c[j>>2]|0);c[w>>2]=(d[(c[v>>2]|0)+41>>0]|0)-1;while(1){if((c[w>>2]|0)<0)break;c[p>>2]=(c[v>>2]|0)+736+((c[w>>2]|0)*72|0);c[g>>2]=c[(c[p>>2]|0)+56>>2];Pr(c[o>>2]|0,c[(c[p>>2]|0)+24>>2]|0);if((d[(c[p>>2]|0)+37>>0]|0)!=154){ip(c[o>>2]|0,d[(c[p>>2]|0)+37>>0]|0,c[(c[p>>2]|0)+40>>2]|0,c[(c[p>>2]|0)+44>>2]|0,d[(c[p>>2]|0)+38>>0]|0)|0;Xe(c[o>>2]|0,a[(c[p>>2]|0)+39>>0]|0)}if((c[(c[g>>2]|0)+36>>2]&2048|0)!=0?(c[(c[p>>2]|0)+48>>2]|0)>0:0){Pr(c[o>>2]|0,c[(c[p>>2]|0)+16>>2]|0);c[B>>2]=c[(c[p>>2]|0)+48>>2];c[C>>2]=(c[(c[p>>2]|0)+52>>2]|0)+(((c[B>>2]|0)-1|0)*12|0);while(1){if((c[B>>2]|0)<=0)break;zp(c[o>>2]|0,(c[(c[C>>2]|0)+4>>2]|0)+1|0);fp(c[o>>2]|0,d[(c[C>>2]|0)+8>>0]|0,c[c[C>>2]>>2]|0,c[(c[C>>2]|0)+4>>2]|0)|0;zp(c[o>>2]|0,(c[(c[C>>2]|0)+4>>2]|0)-1|0);c[B>>2]=(c[B>>2]|0)+ -1;c[C>>2]=(c[C>>2]|0)+ -12}Xb(c[k>>2]|0,c[(c[p>>2]|0)+52>>2]|0)}Pr(c[o>>2]|0,c[(c[p>>2]|0)+12>>2]|0);if(c[(c[p>>2]|0)+20>>2]|0){fp(c[o>>2]|0,16,0,c[(c[p>>2]|0)+20>>2]|0)|0;zp(c[o>>2]|0,c[(c[p>>2]|0)+20>>2]|0);zp(c[o>>2]|0,(c[(c[p>>2]|0)+20>>2]|0)-2|0)}if(c[c[p>>2]>>2]|0){c[A>>2]=Ir(c[o>>2]|0,137,c[c[p>>2]>>2]|0)|0;if(!(c[(c[g>>2]|0)+36>>2]&64))Ir(c[o>>2]|0,104,c[(c[s>>2]|0)+8+((c[w>>2]|0)*72|0)+40>>2]|0)|0;if(c[(c[g>>2]|0)+36>>2]&512)Ir(c[o>>2]|0,104,c[(c[p>>2]|0)+8>>2]|0)|0;D=c[o>>2]|0;f=c[p>>2]|0;if((d[(c[p>>2]|0)+37>>0]|0)==18)fp(D,17,c[f+40>>2]|0,c[(c[p>>2]|0)+28>>2]|0)|0;else fp(D,16,0,c[f+28>>2]|0)|0;zp(c[o>>2]|0,c[A>>2]|0)}c[w>>2]=(c[w>>2]|0)+ -1}Pr(c[o>>2]|0,c[(c[v>>2]|0)+52>>2]|0);c[w>>2]=0;c[p>>2]=(c[v>>2]|0)+736;while(1){if((c[w>>2]|0)>=(d[(c[v>>2]|0)+41>>0]|0))break;c[r>>2]=0;c[t>>2]=(c[s>>2]|0)+8+((d[(c[p>>2]|0)+36>>0]|0)*72|0);c[u>>2]=c[(c[t>>2]|0)+16>>2];c[g>>2]=c[(c[p>>2]|0)+56>>2];a:do if(((d[(c[t>>2]|0)+37>>0]|0)>>>2&1|0)!=0?(a[(c[k>>2]|0)+64>>0]|0)==0:0){c[n>>2]=Mr(c[o>>2]|0)|0;c[m>>2]=c[(c[p>>2]|0)+32>>2];c[q>>2]=dt(c[o>>2]|0,c[m>>2]|0)|0;while(1){if((c[m>>2]|0)>=(c[n>>2]|0))break a;do if((c[(c[q>>2]|0)+4>>2]|0)==(c[(c[p>>2]|0)+4>>2]|0)){A=c[q>>2]|0;if((d[c[q>>2]>>0]|0)==47){a[A>>0]=33;c[(c[q>>2]|0)+4>>2]=(c[(c[q>>2]|0)+8>>2]|0)+(c[(c[t>>2]|0)+32>>2]|0);c[(c[q>>2]|0)+8>>2]=c[(c[q>>2]|0)+12>>2];c[(c[q>>2]|0)+12>>2]=0;break}if((d[A>>0]|0)==103){a[c[q>>2]>>0]=28;c[(c[q>>2]|0)+4>>2]=0;c[(c[q>>2]|0)+12>>2]=0}}while(0);c[m>>2]=(c[m>>2]|0)+1;c[q>>2]=(c[q>>2]|0)+20}}else h=35;while(0);b:do if((h|0)==35){h=0;if(((d[(c[u>>2]|0)+44>>0]&2|0)==0?(c[(c[u>>2]|0)+12>>2]|0)==0:0)?(e[(c[v>>2]|0)+34>>1]&16|0)==0:0){c[z>>2]=c[(c[g>>2]|0)+36>>2];if((a[(c[v>>2]|0)+38>>0]|0)==0?(c[z>>2]&64|0)==0:0)Ir(c[o>>2]|0,61,c[(c[t>>2]|0)+40>>2]|0)|0;if(((c[z>>2]&512|0)!=0?(c[z>>2]&16640|0)==0:0)?(c[(c[p>>2]|0)+8>>2]|0)!=(c[(c[v>>2]|0)+64>>2]|0):0)Ir(c[o>>2]|0,61,c[(c[p>>2]|0)+8>>2]|0)|0}A=c[g>>2]|0;if(!(c[(c[g>>2]|0)+36>>2]&576)){if(c[A+36>>2]&8192)c[r>>2]=c[(c[p>>2]|0)+48>>2]}else c[r>>2]=c[A+28>>2];if((c[r>>2]|0)!=0?(a[(c[k>>2]|0)+64>>0]|0)==0:0){c[n>>2]=Mr(c[o>>2]|0)|0;c[m>>2]=c[(c[p>>2]|0)+32>>2];c[q>>2]=dt(c[o>>2]|0,c[m>>2]|0)|0;while(1){if((c[m>>2]|0)>=(c[n>>2]|0))break b;do if((c[(c[q>>2]|0)+4>>2]|0)==(c[(c[p>>2]|0)+4>>2]|0)){A=c[q>>2]|0;if((d[c[q>>2]>>0]|0)!=47){if((d[A>>0]|0)!=103)break;c[(c[q>>2]|0)+4>>2]=c[(c[p>>2]|0)+8>>2];a[c[q>>2]>>0]=112;break}c[x>>2]=c[A+8>>2];if(d[(c[u>>2]|0)+44>>0]&32){c[y>>2]=Zr(c[u>>2]|0)|0;c[x>>2]=b[(c[(c[y>>2]|0)+4>>2]|0)+(c[x>>2]<<1)>>1]}c[x>>2]=(Ds(c[r>>2]|0,c[x>>2]&65535)|0)<<16>>16;if((c[x>>2]|0)>=0){c[(c[q>>2]|0)+8>>2]=c[x>>2];c[(c[q>>2]|0)+4>>2]=c[(c[p>>2]|0)+8>>2]}}while(0);c[m>>2]=(c[m>>2]|0)+1;c[q>>2]=(c[q>>2]|0)+20}}}while(0);c[w>>2]=(c[w>>2]|0)+1;c[p>>2]=(c[p>>2]|0)+72}c[(c[j>>2]|0)+424>>2]=c[(c[v>>2]|0)+56>>2];Ju(c[k>>2]|0,c[v>>2]|0);i=l;return}function Ju(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;i=i+16|0;e=d+8|0;f=d+4|0;g=d;c[e>>2]=a;c[f>>2]=b;if(!(c[f>>2]|0)){i=d;return}Ku((c[f>>2]|0)+328|0);while(1){if(!(c[(c[f>>2]|0)+16>>2]|0))break;c[g>>2]=c[(c[f>>2]|0)+16>>2];c[(c[f>>2]|0)+16>>2]=c[(c[g>>2]|0)+48>>2];Lu(c[e>>2]|0,c[g>>2]|0)}Xb(c[e>>2]|0,c[f>>2]|0);i=d;return}function Ku(a){a=a|0;var b=0,e=0,f=0,g=0,h=0;b=i;i=i+16|0;f=b+12|0;h=b+8|0;g=b+4|0;e=b;c[f>>2]=a;c[e>>2]=c[c[c[c[f>>2]>>2]>>2]>>2];c[h>>2]=(c[(c[f>>2]|0)+12>>2]|0)-1;c[g>>2]=c[(c[f>>2]|0)+20>>2];while(1){if((c[h>>2]|0)<0)break;if((d[(c[g>>2]|0)+20>>0]|0)&1)wn(c[e>>2]|0,c[c[g>>2]>>2]|0);if(!((d[(c[g>>2]|0)+20>>0]|0)&16)){if((d[(c[g>>2]|0)+20>>0]|0)&32)Qu(c[e>>2]|0,c[(c[g>>2]|0)+12>>2]|0)}else Pu(c[e>>2]|0,c[(c[g>>2]|0)+12>>2]|0);c[h>>2]=(c[h>>2]|0)+ -1;c[g>>2]=(c[g>>2]|0)+48}if((c[(c[f>>2]|0)+20>>2]|0)==((c[f>>2]|0)+24|0)){i=b;return}Xb(c[e>>2]|0,c[(c[f>>2]|0)+20>>2]|0);i=b;return}function Lu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;Mu(c[f>>2]|0,c[e>>2]|0);Xb(c[f>>2]|0,c[e>>2]|0);i=d;return}function Mu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;if((c[(c[e>>2]|0)+44>>2]|0)!=((c[e>>2]|0)+52|0))Xb(c[f>>2]|0,c[(c[e>>2]|0)+44>>2]|0);Nu(c[f>>2]|0,c[e>>2]|0);Ou(c[e>>2]|0);i=d;return}function Nu(b,e){b=b|0;e=e|0;var f=0,g=0,h=0;f=i;i=i+16|0;h=f+4|0;g=f;c[h>>2]=b;c[g>>2]=e;if(!(c[(c[g>>2]|0)+36>>2]&17408)){i=f;return}if((c[(c[g>>2]|0)+36>>2]&1024|0)!=0?(d[(c[g>>2]|0)+28>>0]|0|0)!=0:0){hc(c[(c[g>>2]|0)+32>>2]|0);a[(c[g>>2]|0)+28>>0]=0;c[(c[g>>2]|0)+32>>2]=0;i=f;return}if(!(c[(c[g>>2]|0)+36>>2]&16384)){i=f;return}if(!(c[(c[g>>2]|0)+28>>2]|0)){i=f;return}Xb(c[h>>2]|0,c[(c[(c[g>>2]|0)+28>>2]|0)+16>>2]|0);eh(c[(c[(c[g>>2]|0)+28>>2]|0)+40>>2]|0);Xb(c[h>>2]|0,c[(c[g>>2]|0)+28>>2]|0);c[(c[g>>2]|0)+28>>2]=0;i=f;return}function Ou(a){a=a|0;var d=0,e=0;d=i;i=i+16|0;e=d;c[e>>2]=a;c[(c[e>>2]|0)+44>>2]=(c[e>>2]|0)+52;b[(c[e>>2]|0)+40>>1]=0;b[(c[e>>2]|0)+42>>1]=4;c[(c[e>>2]|0)+36>>2]=0;i=d;return}function Pu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;Ku(c[e>>2]|0);Xb(c[f>>2]|0,c[e>>2]|0);i=d;return}function Qu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;Ku(c[e>>2]|0);Xb(c[f>>2]|0,c[e>>2]|0);i=d;return}function Ru(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;c[c[e>>2]>>2]=c[f>>2];c[(c[e>>2]|0)+4>>2]=0;c[(c[e>>2]|0)+12>>2]=0;c[(c[e>>2]|0)+16>>2]=8;c[(c[e>>2]|0)+20>>2]=(c[e>>2]|0)+24;i=d;return}function Su(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0;g=i;i=i+16|0;j=g+4|0;k=g;h=g+8|0;c[j>>2]=b;c[k>>2]=e;a[h>>0]=f;a[(c[j>>2]|0)+8>>0]=a[h>>0]|0;if(!(c[k>>2]|0)){i=g;return}e=c[j>>2]|0;f=c[k>>2]|0;if((d[c[k>>2]>>0]|0|0)!=(d[h>>0]|0|0)){Uv(e,f,0)|0;i=g;return}else{Su(e,c[f+12>>2]|0,a[h>>0]|0);Su(c[j>>2]|0,c[(c[k>>2]|0)+16>>2]|0,a[h>>0]|0);i=g;return}}function Tu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;b=c[f>>2]|0;f=c[e>>2]|0;a=c[f>>2]|0;c[f>>2]=a+1;c[(c[e>>2]|0)+4+(a<<2)>>2]=b;i=d;return}function Uu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;i=i+16|0;f=d+8|0;g=d+4|0;e=d;c[f>>2]=a;c[g>>2]=b;c[e>>2]=(c[(c[g>>2]|0)+12>>2]|0)-1;while(1){if((c[e>>2]|0)<0)break;Rv(c[f>>2]|0,c[g>>2]|0,c[e>>2]|0);c[e>>2]=(c[e>>2]|0)+ -1}i=d;return}function Vu(a,f,g,h){a=a|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;s=i;i=i+48|0;l=s+40|0;o=s+36|0;w=s+32|0;t=s+28|0;p=s+24|0;u=s+20|0;n=s+16|0;m=s+12|0;q=s+8|0;v=s+4|0;j=s+44|0;r=s;c[o>>2]=a;c[w>>2]=f;c[t>>2]=g;c[p>>2]=h;if((c[c[w>>2]>>2]|0)!=1){c[l>>2]=0;a=c[l>>2]|0;i=s;return a|0}c[q>>2]=c[(c[w>>2]|0)+48>>2];c[u>>2]=c[(c[w>>2]|0)+24>>2];c[m>>2]=0;while(1){if((c[m>>2]|0)>=(c[c[p>>2]>>2]|0))break;c[v>>2]=iq(c[(c[(c[p>>2]|0)+4>>2]|0)+((c[m>>2]|0)*20|0)>>2]|0)|0;if(((d[c[v>>2]>>0]|0)==154?(c[(c[v>>2]|0)+28>>2]|0)==(c[q>>2]|0):0)?(b[(c[v>>2]|0)+32>>1]|0)<0:0){k=8;break}c[m>>2]=(c[m>>2]|0)+1}if((k|0)==8){c[l>>2]=1;a=c[l>>2]|0;i=s;return a|0}c[n>>2]=c[(c[u>>2]|0)+8>>2];while(1){if(!(c[n>>2]|0)){k=22;break}if(d[(c[n>>2]|0)+54>>0]|0){c[m>>2]=0;while(1){if((c[m>>2]|0)>=(e[(c[n>>2]|0)+50>>1]|0))break;b[j>>1]=b[(c[(c[n>>2]|0)+4>>2]|0)+(c[m>>2]<<1)>>1]|0;if(!(hv(c[t>>2]|0,c[q>>2]|0,b[j>>1]|0,-1,-1,2,c[n>>2]|0)|0)){c[r>>2]=Qv(c[o>>2]|0,c[p>>2]|0,c[q>>2]|0,c[n>>2]|0,c[m>>2]|0)|0;if((c[r>>2]|0)<0)break;if(!(d[(c[(c[u>>2]|0)+4>>2]|0)+((b[j>>1]|0)*24|0)+20>>0]|0))break}c[m>>2]=(c[m>>2]|0)+1}if((c[m>>2]|0)==(e[(c[n>>2]|0)+50>>1]|0)){k=20;break}}c[n>>2]=c[(c[n>>2]|0)+20>>2]}if((k|0)==20){c[l>>2]=1;a=c[l>>2]|0;i=s;return a|0}else if((k|0)==22){c[l>>2]=0;a=c[l>>2]|0;i=s;return a|0}return 0}function Wu(f){f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;m=i;i=i+48|0;h=m+40|0;s=m+36|0;q=m+32|0;o=m+28|0;r=m+24|0;k=m+20|0;j=m+16|0;p=m+12|0;l=m+8|0;n=m+4|0;g=m;c[s>>2]=f;c[q>>2]=c[c[s>>2]>>2];if(e[(c[q>>2]|0)+34>>1]&32){c[h>>2]=0;s=c[h>>2]|0;i=m;return s|0}c[o>>2]=(c[(c[q>>2]|0)+4>>2]|0)+8;c[n>>2]=c[(c[o>>2]|0)+16>>2];if(d[(c[n>>2]|0)+44>>0]&16){c[h>>2]=0;s=c[h>>2]|0;i=m;return s|0}if(c[(c[o>>2]|0)+64>>2]|0){c[h>>2]=0;s=c[h>>2]|0;i=m;return s|0}c[p>>2]=c[(c[o>>2]|0)+40>>2];c[r>>2]=(c[q>>2]|0)+328;c[j>>2]=c[(c[s>>2]|0)+12>>2];c[(c[j>>2]|0)+36>>2]=0;b[(c[j>>2]|0)+26>>1]=0;c[k>>2]=hv(c[r>>2]|0,c[p>>2]|0,-1,0,0,2,0)|0;a:do if(c[k>>2]|0){c[(c[j>>2]|0)+36>>2]=4353;c[c[(c[j>>2]|0)+44>>2]>>2]=c[k>>2];b[(c[j>>2]|0)+40>>1]=1;b[(c[j>>2]|0)+24>>1]=1;b[(c[j>>2]|0)+20>>1]=33}else{c[g>>2]=c[(c[n>>2]|0)+8>>2];while(1){if(!(c[g>>2]|0))break a;if(((d[(c[g>>2]|0)+54>>0]|0)!=0?(c[(c[g>>2]|0)+36>>2]|0)==0:0)?(e[(c[g>>2]|0)+50>>1]|0)<=4:0){c[l>>2]=0;while(1){if((c[l>>2]|0)>=(e[(c[g>>2]|0)+50>>1]|0))break;c[k>>2]=hv(c[r>>2]|0,c[p>>2]|0,b[(c[(c[g>>2]|0)+4>>2]|0)+(c[l>>2]<<1)>>1]|0,0,0,2,c[g>>2]|0)|0;if(!(c[k>>2]|0))break;c[(c[(c[j>>2]|0)+44>>2]|0)+(c[l>>2]<<2)>>2]=c[k>>2];c[l>>2]=(c[l>>2]|0)+1}if((c[l>>2]|0)==(e[(c[g>>2]|0)+50>>1]|0))break}c[g>>2]=c[(c[g>>2]|0)+20>>2]}c[(c[j>>2]|0)+36>>2]=4609;if(!(((d[(c[g>>2]|0)+55>>0]|0)>>>5&1|0)==0?(s=(c[o>>2]|0)+56|0,o=c[s>>2]|0,s=c[s+4>>2]|0,r=Iv(c[g>>2]|0)|0,!((o&~r|0)==0&(s&~D|0)==0)):0)){s=(c[j>>2]|0)+36|0;c[s>>2]=c[s>>2]|64}b[(c[j>>2]|0)+40>>1]=c[l>>2];b[(c[j>>2]|0)+24>>1]=c[l>>2];c[(c[j>>2]|0)+28>>2]=c[g>>2];b[(c[j>>2]|0)+20>>1]=39}while(0);if(!(c[(c[j>>2]|0)+36>>2]|0)){c[h>>2]=0;s=c[h>>2]|0;i=m;return s|0}b[(c[j>>2]|0)+22>>1]=1;c[(c[q>>2]|0)+792>>2]=c[j>>2];r=_u((c[q>>2]|0)+68|0,c[p>>2]|0)|0;s=(c[j>>2]|0)+8|0;c[s>>2]=r;c[s+4>>2]=D;c[(c[q>>2]|0)+740>>2]=c[p>>2];b[(c[q>>2]|0)+32>>1]=1;if(c[(c[q>>2]|0)+8>>2]|0)a[(c[q>>2]|0)+36>>0]=c[c[(c[q>>2]|0)+8>>2]>>2];if(e[(c[q>>2]|0)+34>>1]&1024)a[(c[q>>2]|0)+40>>0]=1;c[h>>2]=1;s=c[h>>2]|0;i=m;return s|0}function Xu(b){b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;e=i;i=i+64|0;j=e+48|0;p=e+44|0;k=e+8|0;m=e;o=e+40|0;s=e+36|0;l=e+32|0;h=e+28|0;q=e+24|0;f=e+20|0;n=e+52|0;g=e+16|0;c[j>>2]=b;c[p>>2]=c[c[j>>2]>>2];r=k;c[r>>2]=0;c[r+4>>2]=0;r=m;c[r>>2]=0;c[r+4>>2]=0;c[s>>2]=c[(c[p>>2]|0)+4>>2];c[h>>2]=c[c[c[p>>2]>>2]>>2];c[q>>2]=d[(c[p>>2]|0)+41>>0];c[f>>2]=0;a[n>>0]=0;c[g>>2]=c[(c[j>>2]|0)+12>>2];Ou(c[g>>2]|0);c[o>>2]=0;c[l>>2]=(c[s>>2]|0)+8;while(1){if((c[o>>2]|0)>=(c[q>>2]|0)){j=13;break}a[(c[g>>2]|0)+16>>0]=c[o>>2];r=_u((c[p>>2]|0)+68|0,c[(c[l>>2]|0)+40>>2]|0)|0;s=(c[g>>2]|0)+8|0;c[s>>2]=r;c[s+4>>2]=D;if((d[(c[l>>2]|0)+36>>0]|0|(d[n>>0]|0))&10){b=m;r=c[b+4>>2]|0;s=k;c[s>>2]=c[b>>2];c[s+4>>2]=r}a[n>>0]=a[(c[l>>2]|0)+36>>0]|0;b=c[j>>2]|0;s=k;r=c[s>>2]|0;s=c[s+4>>2]|0;if((d[(c[(c[l>>2]|0)+16>>2]|0)+44>>0]|0)&16)c[f>>2]=vv(b,r,s)|0;else c[f>>2]=wv(b,r,s)|0;if(!(c[f>>2]|0)){s=k;c[f>>2]=xv(c[j>>2]|0,c[s>>2]|0,c[s+4>>2]|0)|0}b=(c[g>>2]|0)+8|0;t=m;r=c[t+4>>2]|c[b+4>>2];s=m;c[s>>2]=c[t>>2]|c[b>>2];c[s+4>>2]=r;if(c[f>>2]|0){j=13;break}if(d[(c[h>>2]|0)+64>>0]|0){j=13;break}c[o>>2]=(c[o>>2]|0)+1;c[l>>2]=(c[l>>2]|0)+72}if((j|0)==13){Mu(c[h>>2]|0,c[g>>2]|0);i=e;return c[f>>2]|0}return 0}function Yu(f,g){f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0;q=i;i=i+160|0;y=q+32|0;j=q+132|0;m=q+128|0;t=q+146|0;P=q+124|0;p=q+120|0;E=q+116|0;k=q+112|0;u=q+108|0;B=q+104|0;N=q+100|0;S=q+96|0;K=q+92|0;Q=q+144|0;R=q+142|0;D=q+88|0;C=q+84|0;A=q+80|0;x=q+76|0;o=q+72|0;O=q+68|0;w=q+64|0;T=q+60|0;L=q+56|0;l=q+52|0;U=q+48|0;I=q+140|0;M=q+138|0;H=q+136|0;F=q+148|0;J=q+24|0;G=q+16|0;v=q+44|0;r=q+8|0;s=q+40|0;n=q;h=q+36|0;c[m>>2]=f;b[t>>1]=g;c[S>>2]=0;b[Q>>1]=0;b[R>>1]=0;c[L>>2]=0;c[E>>2]=c[c[m>>2]>>2];c[k>>2]=c[c[E>>2]>>2];c[p>>2]=d[(c[m>>2]|0)+41>>0];if((c[p>>2]|0)<=1)g=1;else g=(c[p>>2]|0)==2?5:10;c[P>>2]=g;if((c[(c[m>>2]|0)+8>>2]|0)!=0?(b[t>>1]|0)!=0:0)c[K>>2]=c[c[(c[m>>2]|0)+8>>2]>>2];else c[K>>2]=0;c[U>>2]=($(32+(c[p>>2]<<2)|0,c[P>>2]|0)|0)<<1;c[U>>2]=(c[U>>2]|0)+(c[K>>2]<<1);f=c[U>>2]|0;c[l>>2]=Qe(c[k>>2]|0,f,((f|0)<0)<<31>>31)|0;if(!(c[l>>2]|0)){c[j>>2]=7;f=c[j>>2]|0;i=q;return f|0}c[x>>2]=c[l>>2];c[A>>2]=(c[x>>2]|0)+(c[P>>2]<<5);f=c[A>>2]|0;c[f+0>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[f+16>>2]=0;c[f+20>>2]=0;c[f+24>>2]=0;c[f+28>>2]=0;c[T>>2]=(c[A>>2]|0)+(c[P>>2]<<5);c[B>>2]=c[P>>2]<<1;c[o>>2]=c[x>>2];while(1){if((c[B>>2]|0)<=0)break;c[(c[o>>2]|0)+24>>2]=c[T>>2];c[B>>2]=(c[B>>2]|0)+ -1;c[o>>2]=(c[o>>2]|0)+32;c[T>>2]=(c[T>>2]|0)+(c[p>>2]<<2)}if(c[K>>2]|0){c[L>>2]=c[T>>2];_E(c[L>>2]|0,0,c[K>>2]<<1|0)|0}if((c[(c[E>>2]|0)+424>>2]|0)>>>0<46)T=c[(c[E>>2]|0)+424>>2]|0;else T=46;b[(c[A>>2]|0)+16>>1]=T;c[C>>2]=1;if(c[K>>2]|0)a[(c[A>>2]|0)+22>>0]=(c[p>>2]|0)>0?-1:c[K>>2]|0;c[u>>2]=0;while(1){if((c[u>>2]|0)>=(c[p>>2]|0))break;c[D>>2]=0;c[B>>2]=0;c[o>>2]=c[A>>2];while(1){if((c[B>>2]|0)>=(c[C>>2]|0))break;c[w>>2]=c[(c[m>>2]|0)+16>>2];while(1){if(!(c[w>>2]|0))break;a[F>>0]=a[(c[o>>2]|0)+22>>0]|0;g=G;c[g>>2]=0;c[g+4>>2]=0;g=c[w>>2]|0;f=c[o>>2]|0;a:do if(!((c[g>>2]&~c[f>>2]|0)!=0?1:(c[g+4>>2]&~c[f+4>>2]|0)!=0)?(g=(c[w>>2]|0)+8|0,f=c[o>>2]|0,!((c[g>>2]&c[f>>2]|0)!=0?1:(c[g+4>>2]&c[f+4>>2]|0)!=0)):0){b[H>>1]=rv(b[(c[w>>2]|0)+18>>1]|0,(b[(c[w>>2]|0)+20>>1]|0)+(b[(c[o>>2]|0)+16>>1]|0)&65535)|0;b[H>>1]=rv(b[H>>1]|0,b[(c[o>>2]|0)+20>>1]|0)|0;b[I>>1]=(b[(c[o>>2]|0)+16>>1]|0)+(b[(c[w>>2]|0)+22>>1]|0);T=c[o>>2]|0;U=(c[w>>2]|0)+8|0;g=c[T+4>>2]|c[U+4>>2];f=J;c[f>>2]=c[T>>2]|c[U>>2];c[f+4>>2]=g;if((a[F>>0]|0)<0)a[F>>0]=sv(c[m>>2]|0,c[(c[m>>2]|0)+8>>2]|0,c[o>>2]|0,b[(c[m>>2]|0)+34>>1]|0,c[u>>2]&65535,c[w>>2]|0,G)|0;else{U=(c[o>>2]|0)+8|0;g=c[U+4>>2]|0;f=G;c[f>>2]=c[U>>2];c[f+4>>2]=g}if((a[F>>0]|0)>=0?(a[F>>0]|0)<(c[K>>2]|0):0){if(!(b[(c[L>>2]|0)+(a[F>>0]<<1)>>1]|0)){f=tv(c[m>>2]|0,b[t>>1]|0,c[K>>2]|0,a[F>>0]|0)|0;b[(c[L>>2]|0)+(a[F>>0]<<1)>>1]=f}b[M>>1]=rv(b[H>>1]|0,b[(c[L>>2]|0)+(a[F>>0]<<1)>>1]|0)|0}else b[M>>1]=b[H>>1]|0;c[N>>2]=0;c[O>>2]=c[x>>2];while(1){if((c[N>>2]|0)>=(c[D>>2]|0))break;g=c[O>>2]|0;f=J;if(((c[g>>2]|0)==(c[f>>2]|0)?(c[g+4>>2]|0)==(c[f+4>>2]|0):0)?((a[(c[O>>2]|0)+22>>0]^a[F>>0])&128|0)==0:0)break;c[N>>2]=(c[N>>2]|0)+1;c[O>>2]=(c[O>>2]|0)+32}do if((c[N>>2]|0)<(c[D>>2]|0)){if((b[(c[O>>2]|0)+18>>1]|0)<(b[M>>1]|0))break a;if((b[(c[O>>2]|0)+18>>1]|0)!=(b[M>>1]|0))break;if((b[(c[O>>2]|0)+16>>1]|0)<=(b[I>>1]|0))break a}else{do if((c[D>>2]|0)>=(c[P>>2]|0)){if((b[M>>1]|0)>(b[Q>>1]|0))break a;if((b[M>>1]|0)!=(b[Q>>1]|0))break;if((b[H>>1]|0)>=(b[R>>1]|0))break a}while(0);if((c[D>>2]|0)<(c[P>>2]|0)){f=c[D>>2]|0;c[D>>2]=f+1;c[N>>2]=f}else c[N>>2]=c[S>>2];c[O>>2]=(c[x>>2]|0)+(c[N>>2]<<5)}while(0);T=c[o>>2]|0;f=(c[w>>2]|0)+8|0;g=c[T+4>>2]|c[f+4>>2];U=c[O>>2]|0;c[U>>2]=c[T>>2]|c[f>>2];c[U+4>>2]=g;U=G;g=c[U+4>>2]|0;f=(c[O>>2]|0)+8|0;c[f>>2]=c[U>>2];c[f+4>>2]=g;b[(c[O>>2]|0)+16>>1]=b[I>>1]|0;b[(c[O>>2]|0)+18>>1]=b[M>>1]|0;b[(c[O>>2]|0)+20>>1]=b[H>>1]|0;a[(c[O>>2]|0)+22>>0]=a[F>>0]|0;dF(c[(c[O>>2]|0)+24>>2]|0,c[(c[o>>2]|0)+24>>2]|0,c[u>>2]<<2|0)|0;c[(c[(c[O>>2]|0)+24>>2]|0)+(c[u>>2]<<2)>>2]=c[w>>2];if((c[D>>2]|0)>=(c[P>>2]|0)){c[S>>2]=0;b[Q>>1]=b[(c[x>>2]|0)+18>>1]|0;b[R>>1]=b[(c[x>>2]|0)+16>>1]|0;c[N>>2]=1;c[O>>2]=(c[x>>2]|0)+32;while(1){if((c[N>>2]|0)>=(c[P>>2]|0))break a;do if((b[(c[O>>2]|0)+18>>1]|0)<=(b[Q>>1]|0)){if((b[(c[O>>2]|0)+18>>1]|0)!=(b[Q>>1]|0))break;if((b[(c[O>>2]|0)+20>>1]|0)>(b[R>>1]|0))z=58}else z=58;while(0);if((z|0)==58){z=0;b[Q>>1]=b[(c[O>>2]|0)+18>>1]|0;b[R>>1]=b[(c[O>>2]|0)+20>>1]|0;c[S>>2]=c[N>>2]}c[N>>2]=(c[N>>2]|0)+1;c[O>>2]=(c[O>>2]|0)+32}}}while(0);c[w>>2]=c[(c[w>>2]|0)+48>>2]}c[B>>2]=(c[B>>2]|0)+1;c[o>>2]=(c[o>>2]|0)+32}c[o>>2]=c[x>>2];c[x>>2]=c[A>>2];c[A>>2]=c[o>>2];c[C>>2]=c[D>>2];c[u>>2]=(c[u>>2]|0)+1}if(!(c[C>>2]|0)){Se(c[E>>2]|0,24032,y);Xb(c[k>>2]|0,c[l>>2]|0);c[j>>2]=1;f=c[j>>2]|0;i=q;return f|0}c[o>>2]=c[A>>2];c[B>>2]=1;while(1){if((c[B>>2]|0)>=(c[C>>2]|0))break;if((b[(c[o>>2]|0)+18>>1]|0)>(b[(c[A>>2]|0)+(c[B>>2]<<5)+18>>1]|0))c[o>>2]=(c[A>>2]|0)+(c[B>>2]<<5);c[B>>2]=(c[B>>2]|0)+1}c[u>>2]=0;while(1){x=c[m>>2]|0;if((c[u>>2]|0)>=(c[p>>2]|0))break;c[v>>2]=x+736+((c[u>>2]|0)*72|0);f=c[(c[(c[o>>2]|0)+24>>2]|0)+(c[u>>2]<<2)>>2]|0;c[w>>2]=f;c[(c[v>>2]|0)+56>>2]=f;a[(c[v>>2]|0)+36>>0]=a[(c[w>>2]|0)+16>>0]|0;c[(c[v>>2]|0)+4>>2]=c[(c[(c[m>>2]|0)+4>>2]|0)+8+((d[(c[v>>2]|0)+36>>0]|0)*72|0)+40>>2];c[u>>2]=(c[u>>2]|0)+1}if(((((e[x+34>>1]&1024|0)!=0?(e[(c[m>>2]|0)+34>>1]&512|0)==0:0)?(d[(c[m>>2]|0)+40>>0]|0)==0:0)?(b[t>>1]|0)!=0:0)?(c[s>>2]=(sv(c[m>>2]|0,c[(c[m>>2]|0)+12>>2]|0,c[o>>2]|0,512,(c[p>>2]|0)-1&65535,c[(c[(c[o>>2]|0)+24>>2]|0)+((c[p>>2]|0)-1<<2)>>2]|0,r)|0)<<24>>24,(c[s>>2]|0)==(c[c[(c[m>>2]|0)+12>>2]>>2]|0)):0)a[(c[m>>2]|0)+40>>0]=2;if(c[(c[m>>2]|0)+8>>2]|0){r=a[(c[o>>2]|0)+22>>0]|0;if(e[(c[m>>2]|0)+34>>1]&512){if((r<<24>>24|0)==(c[c[(c[m>>2]|0)+8>>2]>>2]|0))a[(c[m>>2]|0)+40>>0]=2}else{a[(c[m>>2]|0)+36>>0]=r;if((a[(c[m>>2]|0)+36>>0]|0)<0)a[(c[m>>2]|0)+36>>0]=0;U=(c[o>>2]|0)+8|0;g=c[U+4>>2]|0;f=(c[m>>2]|0)+24|0;c[f>>2]=c[U>>2];c[f+4>>2]=g}if(((e[(c[m>>2]|0)+34>>1]&2048|0)!=0?(a[(c[m>>2]|0)+36>>0]|0)==(c[c[(c[m>>2]|0)+8>>2]>>2]|0):0)?(f=n,c[f>>2]=0,c[f+4>>2]=0,c[h>>2]=(sv(c[m>>2]|0,c[(c[m>>2]|0)+8>>2]|0,c[o>>2]|0,0,(c[p>>2]|0)-1&65535,c[(c[(c[o>>2]|0)+24>>2]|0)+((c[p>>2]|0)-1<<2)>>2]|0,n)|0)<<24>>24,(c[h>>2]|0)==(c[c[(c[m>>2]|0)+8>>2]>>2]|0)):0){a[(c[m>>2]|0)+37>>0]=1;U=n;g=c[U+4>>2]|0;f=(c[m>>2]|0)+24|0;c[f>>2]=c[U>>2];c[f+4>>2]=g}}b[(c[m>>2]|0)+32>>1]=b[(c[o>>2]|0)+16>>1]|0;Xb(c[k>>2]|0,c[l>>2]|0);c[j>>2]=0;f=c[j>>2]|0;i=q;return f|0}function Zu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;d=i;i=i+32|0;h=d+16|0;g=d+12|0;f=d+8|0;e=d;c[h>>2]=a;c[g>>2]=b;a=e;c[a>>2]=0;c[a+4>>2]=0;if(!(c[g>>2]|0)){h=e;a=h;a=c[a>>2]|0;h=h+4|0;h=c[h>>2]|0;D=h;i=d;return a|0}c[f>>2]=0;while(1){if((c[f>>2]|0)>=(c[c[g>>2]>>2]|0))break;j=pv(c[h>>2]|0,c[(c[(c[g>>2]|0)+4>>2]|0)+((c[f>>2]|0)*20|0)>>2]|0)|0;k=e;b=c[k+4>>2]|D;a=e;c[a>>2]=c[k>>2]|j;c[a+4>>2]=b;c[f>>2]=(c[f>>2]|0)+1}j=e;k=j;k=c[k>>2]|0;j=j+4|0;j=c[j>>2]|0;D=j;i=d;return k|0}function _u(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=i;i=i+32|0;d=e;g=e+16|0;h=e+12|0;f=e+8|0;c[g>>2]=a;c[h>>2]=b;c[f>>2]=0;while(1){if((c[f>>2]|0)>=(c[c[g>>2]>>2]|0)){f=6;break}b=c[f>>2]|0;if((c[(c[g>>2]|0)+4+(c[f>>2]<<2)>>2]|0)==(c[h>>2]|0)){f=4;break}c[f>>2]=b+1}if((f|0)==4){a=$E(1,0,b|0)|0;b=d;c[b>>2]=a;c[b+4>>2]=D;b=d;a=b;a=c[a>>2]|0;b=b+4|0;b=c[b>>2]|0;D=b;i=e;return a|0}else if((f|0)==6){b=d;c[b>>2]=0;c[b+4>>2]=0;b=d;a=b;a=c[a>>2]|0;b=b+4|0;b=c[b>>2]|0;D=b;i=e;return a|0}return 0}function $u(d,e,f,g,h,j){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0;F=i;i=i+144|0;O=F+40|0;o=F+132|0;J=F+128|0;v=F+124|0;l=F+32|0;p=F+120|0;r=F+116|0;y=F+112|0;G=F+108|0;m=F+104|0;q=F+100|0;u=F+96|0;H=F+92|0;s=F+88|0;t=F+84|0;n=F+80|0;x=F+76|0;k=F+72|0;C=F+68|0;I=F+64|0;K=F+60|0;B=F+24|0;w=F+16|0;P=F+136|0;N=F+56|0;M=F+8|0;E=F+52|0;A=F;z=F+48|0;c[o>>2]=d;c[J>>2]=e;c[v>>2]=f;d=l;c[d>>2]=g;c[d+4>>2]=h;c[p>>2]=j;a[P>>0]=0;c[q>>2]=c[(c[o>>2]|0)+8>>2];c[u>>2]=_s(c[o>>2]|0)|0;c[r>>2]=0;c[H>>2]=c[(c[v>>2]|0)+16>>2];c[G>>2]=(c[(c[J>>2]|0)+20>>2]|0)+((c[(c[J>>2]|0)+12>>2]|0)*48|0);c[I>>2]=c[(c[p>>2]|0)+56>>2];h=B;c[h>>2]=0;c[h+4>>2]=0;c[y>>2]=c[(c[J>>2]|0)+20>>2];while(1){if((c[y>>2]|0)>>>0>=(c[G>>2]|0)>>>0)break;h=l;if(mv(c[y>>2]|0,c[v>>2]|0,c[h>>2]|0,c[h+4>>2]|0)|0){c[N>>2]=c[(c[y>>2]|0)+12>>2];if((c[N>>2]|0)>=64){g=0;j=-2147483648}else{g=$E(1,0,c[N>>2]|0)|0;j=D}h=M;c[h>>2]=g;c[h+4>>2]=j;if(!(a[P>>0]|0)){h=c[(c[(c[H>>2]|0)+4>>2]|0)+((c[N>>2]|0)*24|0)>>2]|0;c[O>>2]=c[c[H>>2]>>2];c[O+4>>2]=h;tc(284,23984,O);a[P>>0]=1}d=B;h=M;if((c[d>>2]&c[h>>2]|0)==0?(c[d+4>>2]&c[h+4>>2]|0)==0:0){if(nv(c[c[o>>2]>>2]|0,c[I>>2]|0,(c[r>>2]|0)+1|0)|0){L=42;break}f=c[y>>2]|0;e=c[r>>2]|0;c[r>>2]=e+1;c[(c[(c[I>>2]|0)+44>>2]|0)+(e<<2)>>2]=f;e=M;f=B;d=c[f+4>>2]|c[e+4>>2];h=B;c[h>>2]=c[f>>2]|c[e>>2];c[h+4>>2]=d}}c[y>>2]=(c[y>>2]|0)+48}if((L|0)==42){i=F;return}f=c[r>>2]&65535;b[(c[I>>2]|0)+40>>1]=f;b[(c[I>>2]|0)+24>>1]=f;c[(c[I>>2]|0)+36>>2]=16961;f=(c[v>>2]|0)+56|0;e=B;d=c[f+4>>2]&(~c[e+4>>2]|-2147483648);h=w;c[h>>2]=c[f>>2]&~c[e>>2];c[h+4>>2]=d;if((b[(c[H>>2]|0)+38>>1]|0)>=63)L=63;else L=b[(c[H>>2]|0)+38>>1]|0;c[k>>2]=L;c[x>>2]=0;while(1){if((c[x>>2]|0)>=(c[k>>2]|0))break;h=w;e=c[h>>2]|0;h=c[h+4>>2]|0;d=$E(1,0,c[x>>2]|0)|0;if((e&d|0)!=0|(h&D|0)!=0)c[r>>2]=(c[r>>2]|0)+1;c[x>>2]=(c[x>>2]|0)+1}if(0!=0?1:(c[(c[v>>2]|0)+60>>2]&-2147483648|0)!=0)c[r>>2]=(c[r>>2]|0)+((b[(c[H>>2]|0)+38>>1]|0)-64+1);h=(c[I>>2]|0)+36|0;c[h>>2]=c[h>>2]|65;c[m>>2]=ov(c[c[o>>2]>>2]|0,(c[r>>2]|0)+1&65535,0,K)|0;if(!(c[m>>2]|0)){i=F;return}c[(c[I>>2]|0)+28>>2]=c[m>>2];c[c[m>>2]>>2]=24016;c[(c[m>>2]|0)+12>>2]=c[H>>2];c[n>>2]=0;h=B;c[h>>2]=0;c[h+4>>2]=0;c[y>>2]=c[(c[J>>2]|0)+20>>2];while(1){if((c[y>>2]|0)>>>0>=(c[G>>2]|0)>>>0)break;h=l;if(mv(c[y>>2]|0,c[v>>2]|0,c[h>>2]|0,c[h+4>>2]|0)|0){c[E>>2]=c[(c[y>>2]|0)+12>>2];if((c[E>>2]|0)>=64){J=0;I=-2147483648}else{J=$E(1,0,c[E>>2]|0)|0;I=D}d=A;c[d>>2]=J;c[d+4>>2]=I;d=B;h=A;if((c[d>>2]&c[h>>2]|0)==0?(c[d+4>>2]&c[h+4>>2]|0)==0:0){c[z>>2]=c[c[y>>2]>>2];e=A;f=B;d=c[f+4>>2]|c[e+4>>2];h=B;c[h>>2]=c[f>>2]|c[e>>2];c[h+4>>2]=d;b[(c[(c[m>>2]|0)+4>>2]|0)+(c[n>>2]<<1)>>1]=c[(c[y>>2]|0)+12>>2];c[C>>2]=at(c[o>>2]|0,c[(c[z>>2]|0)+12>>2]|0,c[(c[z>>2]|0)+16>>2]|0)|0;if(c[C>>2]|0)I=c[c[C>>2]>>2]|0;else I=3320;c[(c[(c[m>>2]|0)+32>>2]|0)+(c[n>>2]<<2)>>2]=I;c[n>>2]=(c[n>>2]|0)+1}}c[y>>2]=(c[y>>2]|0)+48}c[x>>2]=0;while(1){if((c[x>>2]|0)>=(c[k>>2]|0))break;h=w;e=c[h>>2]|0;h=c[h+4>>2]|0;d=$E(1,0,c[x>>2]|0)|0;if((e&d|0)!=0|(h&D|0)!=0){b[(c[(c[m>>2]|0)+4>>2]|0)+(c[n>>2]<<1)>>1]=c[x>>2];c[(c[(c[m>>2]|0)+32>>2]|0)+(c[n>>2]<<2)>>2]=3320;c[n>>2]=(c[n>>2]|0)+1}c[x>>2]=(c[x>>2]|0)+1}a:do if(0!=0?1:(c[(c[v>>2]|0)+60>>2]&-2147483648|0)!=0){c[x>>2]=63;while(1){if((c[x>>2]|0)>=(b[(c[H>>2]|0)+38>>1]|0))break a;b[(c[(c[m>>2]|0)+4>>2]|0)+(c[n>>2]<<1)>>1]=c[x>>2];c[(c[(c[m>>2]|0)+32>>2]|0)+(c[n>>2]<<2)>>2]=3320;c[n>>2]=(c[n>>2]|0)+1;c[x>>2]=(c[x>>2]|0)+1}}while(0);b[(c[(c[m>>2]|0)+4>>2]|0)+(c[n>>2]<<1)>>1]=-1;c[(c[(c[m>>2]|0)+32>>2]|0)+(c[n>>2]<<2)>>2]=3320;d=(c[o>>2]|0)+68|0;h=c[d>>2]|0;c[d>>2]=h+1;c[(c[p>>2]|0)+8>>2]=h;fp(c[q>>2]|0,56,c[(c[p>>2]|0)+8>>2]|0,(c[r>>2]|0)+1|0)|0;Lr(c[o>>2]|0,c[m>>2]|0);c[s>>2]=Ir(c[q>>2]|0,108,c[(c[p>>2]|0)+4>>2]|0)|0;c[t>>2]=kp(c[o>>2]|0)|0;ps(c[o>>2]|0,c[m>>2]|0,c[(c[p>>2]|0)+4>>2]|0,c[t>>2]|0,0,0,0,0)|0;fp(c[q>>2]|0,110,c[(c[p>>2]|0)+8>>2]|0,c[t>>2]|0)|0;Xe(c[q>>2]|0,16);fp(c[q>>2]|0,9,c[(c[p>>2]|0)+4>>2]|0,(c[s>>2]|0)+1|0)|0;Xe(c[q>>2]|0,3);zp(c[q>>2]|0,c[s>>2]|0);lp(c[o>>2]|0,c[t>>2]|0);zp(c[q>>2]|0,c[u>>2]|0);i=F;return}function av(f,g,h,j,k,l){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;B=i;i=i+208|0;w=B;H=B+96|0;F=B+92|0;G=B+88|0;s=B+84|0;t=B+80|0;E=B+100|0;y=B+76|0;q=B+72|0;D=B+68|0;r=B+64|0;z=B+60|0;x=B+56|0;A=B+52|0;p=B+48|0;o=B+20|0;C=B+104|0;u=B+16|0;v=B+12|0;m=B+8|0;c[H>>2]=f;c[F>>2]=g;c[G>>2]=h;c[s>>2]=j;c[t>>2]=k;b[E>>1]=l;if((d[(c[H>>2]|0)+450>>0]|0|0)!=2){i=B;return}c[y>>2]=(c[F>>2]|0)+8+((d[(c[G>>2]|0)+36>>0]|0)*72|0);c[q>>2]=c[(c[H>>2]|0)+8>>2];c[D>>2]=c[c[H>>2]>>2];c[r>>2]=c[(c[H>>2]|0)+464>>2];c[x>>2]=c[(c[G>>2]|0)+56>>2];c[A>>2]=c[(c[x>>2]|0)+36>>2];if(c[A>>2]&8192){i=B;return}if((e[E>>1]|0)&64){i=B;return}do if(c[A>>2]&48)E=1;else{if((c[A>>2]&1024|0)==0?(e[(c[x>>2]|0)+24>>1]|0|0)>0:0){E=1;break}E=((e[E>>1]|0)&3|0)!=0}while(0);c[z>>2]=E&1;nc(o,C,100,1e9);c[o>>2]=c[D>>2];ss(o,(c[z>>2]|0)!=0?23640:23648);C=c[y>>2]|0;if(c[(c[y>>2]|0)+20>>2]|0){c[w>>2]=d[C+38>>0];kn(o,0,23656,w)}else{c[w>>2]=c[C+8>>2];kn(o,0,23672,w)}if(c[(c[y>>2]|0)+12>>2]|0){c[w>>2]=c[(c[y>>2]|0)+12>>2];kn(o,0,23688,w)}do if(!(c[A>>2]&1280)){c[u>>2]=0;c[v>>2]=c[(c[x>>2]|0)+28>>2];if(((d[(c[(c[y>>2]|0)+16>>2]|0)+44>>0]|0)&32|0)!=0?(a[(c[v>>2]|0)+55>>0]&3|0)==2:0){if(c[z>>2]|0)c[u>>2]=23696}else n=18;do if((n|0)==18){if(c[A>>2]&16384){c[u>>2]=23712;break}if(c[A>>2]&64){c[u>>2]=23744;break}else{c[u>>2]=23768;break}}while(0);if(c[u>>2]|0){Vm(o,23784,7);f=c[u>>2]|0;c[w>>2]=c[c[v>>2]>>2];kn(o,0,f,w);kv(o,c[x>>2]|0,c[(c[y>>2]|0)+16>>2]|0)}}else{if((c[A>>2]&256|0)!=0?(c[A>>2]&15|0)!=0:0){do if(!(c[A>>2]&5)){if((c[A>>2]&48|0)==48){c[m>>2]=23808;break}if(c[A>>2]&32){c[m>>2]=23832;break}else{c[m>>2]=23848;break}}else c[m>>2]=23792;while(0);ss(o,23864);ss(o,c[m>>2]|0);break}if(c[A>>2]&1024){f=c[(c[x>>2]|0)+32>>2]|0;c[w>>2]=c[(c[x>>2]|0)+24>>2];c[w+4>>2]=f;kn(o,0,23896,w)}}while(0);c[p>>2]=pc(o)|0;hp(c[q>>2]|0,155,c[r>>2]|0,c[s>>2]|0,c[t>>2]|0,c[p>>2]|0,-1)|0;i=B;return}function bv(f,g,h,j){f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0;q=i;i=i+368|0;p=q+8|0;y=q+344|0;N=q+340|0;v=q;o=q+336|0;B=q+332|0;w=q+328|0;ma=q+324|0;ua=q+320|0;C=q+316|0;A=q+312|0;E=q+308|0;m=q+304|0;n=q+300|0;u=q+296|0;r=q+292|0;l=q+288|0;Ea=q+284|0;Ja=q+280|0;x=q+276|0;oa=q+272|0;Ra=q+268|0;Xa=q+264|0;Fa=q+260|0;Ha=q+256|0;Ga=q+252|0;Ia=q+248|0;Na=q+244|0;Va=q+240|0;Pa=q+236|0;Qa=q+232|0;Ua=q+228|0;Wa=q+224|0;Sa=q+220|0;Oa=q+216|0;Ta=q+212|0;Aa=q+350|0;xa=q+208|0;sa=q+204|0;ta=q+200|0;ra=q+196|0;va=q+192|0;la=q+188|0;ya=q+184|0;qa=q+180|0;T=q+176|0;Ma=q+172|0;wa=q+168|0;za=q+164|0;Ba=q+355|0;ka=q+354|0;Da=q+353|0;Ka=q+160|0;La=q+352|0;na=q+156|0;Ca=q+152|0;pa=q+148|0;X=q+144|0;aa=q+140|0;W=q+136|0;P=q+132|0;ca=q+128|0;ea=q+124|0;ga=q+120|0;F=q+116|0;da=q+112|0;L=q+108|0;ja=q+104|0;ia=q+348|0;Z=q+100|0;ba=q+96|0;$=q+92|0;_=q+88|0;fa=q+84|0;ha=q+80|0;Y=q+76|0;S=q+72|0;O=q+68|0;R=q+64|0;Q=q+60|0;H=q+56|0;K=q+52|0;M=q+48|0;J=q+44|0;I=q+40|0;G=q+36|0;V=q+32|0;z=q+28|0;k=q+24|0;s=q+20|0;t=q+16|0;c[y>>2]=f;c[N>>2]=g;g=v;c[g>>2]=h;c[g+4>>2]=j;c[oa>>2]=0;c[Ra>>2]=0;c[u>>2]=c[c[y>>2]>>2];c[l>>2]=c[(c[u>>2]|0)+8>>2];c[m>>2]=(c[y>>2]|0)+328;c[r>>2]=c[c[u>>2]>>2];c[A>>2]=(c[y>>2]|0)+736+((c[N>>2]|0)*72|0);c[E>>2]=c[(c[A>>2]|0)+56>>2];c[Ea>>2]=(c[(c[y>>2]|0)+4>>2]|0)+8+((d[(c[A>>2]|0)+36>>0]|0)*72|0);c[w>>2]=c[(c[Ea>>2]|0)+40>>2];g=v;j=c[g>>2]|0;g=c[g+4>>2]|0;h=_u((c[y>>2]|0)+68|0,c[w>>2]|0)|0;f=(c[A>>2]|0)+64|0;c[f>>2]=j&~h;c[f+4>>2]=g&~D;f=(c[y>>2]|0)+24|0;f=cF(c[f>>2]|0,c[f+4>>2]|0,c[N>>2]|0)|0;c[C>>2]=f&1;if(c[(c[E>>2]|0)+36>>2]&64)j=(e[(c[y>>2]|0)+34>>1]&32|0)==0;else j=0;c[ua>>2]=j&1;f=Nr(c[l>>2]|0)|0;c[(c[A>>2]|0)+16>>2]=f;c[(c[A>>2]|0)+12>>2]=f;c[Ja>>2]=f;f=Nr(c[l>>2]|0)|0;c[(c[A>>2]|0)+24>>2]=f;c[x>>2]=f;if((d[(c[A>>2]|0)+36>>0]|0)>0?(d[(c[Ea>>2]|0)+36>>0]&8|0)!=0:0){g=(c[u>>2]|0)+72|0;f=(c[g>>2]|0)+1|0;c[g>>2]=f;c[c[A>>2]>>2]=f;fp(c[l>>2]|0,25,0,c[c[A>>2]>>2]|0)|0}do if(!((d[(c[Ea>>2]|0)+37>>0]|0)>>>2&1)){Xa=c[E>>2]|0;if(c[(c[E>>2]|0)+36>>2]&1024){c[Ga>>2]=e[Xa+40>>1];ws(c[u>>2]|0);c[Fa>>2]=ys(c[u>>2]|0,(c[Ga>>2]|0)+2|0)|0;c[Ha>>2]=c[(c[A>>2]|0)+12>>2];c[o>>2]=0;while(1){if((c[o>>2]|0)>=(c[Ga>>2]|0))break;c[Ia>>2]=(c[Fa>>2]|0)+(c[o>>2]|0)+2;c[n>>2]=c[(c[(c[E>>2]|0)+44>>2]|0)+(c[o>>2]<<2)>>2];do if(c[n>>2]|0){B=c[u>>2]|0;F=c[n>>2]|0;if(e[(c[n>>2]|0)+18>>1]&1){cv(B,F,c[A>>2]|0,c[o>>2]|0,c[C>>2]|0,c[Ia>>2]|0)|0;c[Ha>>2]=c[(c[A>>2]|0)+16>>2];break}else{Os(B,c[(c[F>>2]|0)+16>>2]|0,c[Ia>>2]|0);break}}while(0);c[o>>2]=(c[o>>2]|0)+1}fp(c[l>>2]|0,25,c[(c[E>>2]|0)+24>>2]|0,c[Fa>>2]|0)|0;fp(c[l>>2]|0,25,c[Ga>>2]|0,(c[Fa>>2]|0)+1|0)|0;hp(c[l>>2]|0,14,c[w>>2]|0,c[Ha>>2]|0,c[Fa>>2]|0,c[(c[E>>2]|0)+32>>2]|0,(d[(c[E>>2]|0)+28>>0]|0)!=0?-11:-2)|0;a[(c[E>>2]|0)+28>>0]=0;c[o>>2]=0;while(1){if(!((c[o>>2]|0)<16?(c[o>>2]|0)<(c[Ga>>2]|0):0))break;if(e[(c[E>>2]|0)+30>>1]>>c[o>>2]&1)dv(c[A>>2]|0,c[(c[(c[E>>2]|0)+44>>2]|0)+(c[o>>2]<<2)>>2]|0);c[o>>2]=(c[o>>2]|0)+1}a[(c[A>>2]|0)+37>>0]=-107;c[(c[A>>2]|0)+40>>2]=c[w>>2];f=Mr(c[l>>2]|0)|0;c[(c[A>>2]|0)+44>>2]=f;Bs(c[u>>2]|0,c[Fa>>2]|0,(c[Ga>>2]|0)+2|0);us(c[u>>2]|0);break}if((c[Xa+36>>2]&256|0)!=0?(c[(c[E>>2]|0)+36>>2]&5|0)!=0:0){c[n>>2]=c[c[(c[E>>2]|0)+44>>2]>>2];g=(c[u>>2]|0)+72|0;f=(c[g>>2]|0)+1|0;c[g>>2]=f;c[Ra>>2]=f;c[oa>>2]=cv(c[u>>2]|0,c[n>>2]|0,c[A>>2]|0,0,c[C>>2]|0,c[Ra>>2]|0)|0;if((c[oa>>2]|0)!=(c[Ra>>2]|0))lp(c[u>>2]|0,c[Ra>>2]|0);c[ma>>2]=c[(c[A>>2]|0)+16>>2];fp(c[l>>2]|0,38,c[oa>>2]|0,c[ma>>2]|0)|0;ip(c[l>>2]|0,70,c[w>>2]|0,c[ma>>2]|0,c[oa>>2]|0)|0;Us(c[u>>2]|0,c[oa>>2]|0,1);jt(c[u>>2]|0,c[w>>2]|0,-1,c[oa>>2]|0);a[(c[A>>2]|0)+37>>0]=-102;break}if((c[(c[E>>2]|0)+36>>2]&256|0)!=0?(c[(c[E>>2]|0)+36>>2]&2|0)!=0:0){c[Na>>2]=154;c[Pa>>2]=0;c[o>>2]=0;c[Ua>>2]=0;c[Qa>>2]=0;if(c[(c[E>>2]|0)+36>>2]&32){f=c[o>>2]|0;c[o>>2]=f+1;c[Qa>>2]=c[(c[(c[E>>2]|0)+44>>2]|0)+(f<<2)>>2]}if(c[(c[E>>2]|0)+36>>2]&16){f=c[o>>2]|0;c[o>>2]=f+1;c[Ua>>2]=c[(c[(c[E>>2]|0)+44>>2]|0)+(f<<2)>>2]}if(c[C>>2]|0){c[n>>2]=c[Qa>>2];c[Qa>>2]=c[Ua>>2];c[Ua>>2]=c[n>>2]}if(c[Qa>>2]|0){c[Wa>>2]=c[c[Qa>>2]>>2];c[Sa>>2]=Hs(c[u>>2]|0,c[(c[Wa>>2]|0)+16>>2]|0,Oa)|0;ip(c[l>>2]|0,d[23600+((d[c[Wa>>2]>>0]|0)-80)>>0]|0,c[w>>2]|0,c[Ja>>2]|0,c[Sa>>2]|0)|0;Us(c[u>>2]|0,c[Sa>>2]|0,1);lp(c[u>>2]|0,c[Oa>>2]|0);dv(c[A>>2]|0,c[Qa>>2]|0)}else fp(c[l>>2]|0,(c[C>>2]|0)!=0?105:108,c[w>>2]|0,c[Ja>>2]|0)|0;if(c[Ua>>2]|0){c[Ta>>2]=c[c[Ua>>2]>>2];g=(c[u>>2]|0)+72|0;f=(c[g>>2]|0)+1|0;c[g>>2]=f;c[Pa>>2]=f;Os(c[u>>2]|0,c[(c[Ta>>2]|0)+16>>2]|0,c[Pa>>2]|0);if((d[c[Ta>>2]>>0]|0)!=82?(d[c[Ta>>2]>>0]|0)!=80:0)c[Na>>2]=(c[C>>2]|0)!=0?82:80;else c[Na>>2]=(c[C>>2]|0)!=0?81:83;dv(c[A>>2]|0,c[Ua>>2]|0)}c[Va>>2]=Mr(c[l>>2]|0)|0;a[(c[A>>2]|0)+37>>0]=(c[C>>2]|0)!=0?8:9;c[(c[A>>2]|0)+40>>2]=c[w>>2];c[(c[A>>2]|0)+44>>2]=c[Va>>2];if((c[Na>>2]|0)==154)break;g=(c[u>>2]|0)+72|0;f=(c[g>>2]|0)+1|0;c[g>>2]=f;c[oa>>2]=f;fp(c[l>>2]|0,103,c[w>>2]|0,c[oa>>2]|0)|0;jt(c[u>>2]|0,c[w>>2]|0,-1,c[oa>>2]|0);ip(c[l>>2]|0,c[Na>>2]|0,c[Pa>>2]|0,c[Ja>>2]|0,c[oa>>2]|0)|0;Xe(c[l>>2]|0,83);break}Fa=c[E>>2]|0;if(c[(c[E>>2]|0)+36>>2]&512){b[Aa>>1]=b[Fa+24>>1]|0;c[sa>>2]=0;c[ta>>2]=0;c[Ma>>2]=0;a[Ba>>0]=0;a[ka>>0]=0;a[Da>>0]=0;c[qa>>2]=c[(c[E>>2]|0)+28>>2];c[T>>2]=c[(c[A>>2]|0)+8>>2];if(((e[(c[y>>2]|0)+34>>1]&1|0)!=0?(a[(c[y>>2]|0)+36>>0]|0)>0:0)?(e[(c[qa>>2]|0)+50>>1]|0)>(e[Aa>>1]|0):0){a[ka>>0]=1;c[Ma>>2]=1}c[o>>2]=e[Aa>>1];if(c[(c[E>>2]|0)+36>>2]&32){f=c[o>>2]|0;c[o>>2]=f+1;c[sa>>2]=c[(c[(c[E>>2]|0)+44>>2]|0)+(f<<2)>>2];c[Ma>>2]=1}if((((c[(c[E>>2]|0)+36>>2]&16|0)!=0?(f=c[o>>2]|0,c[o>>2]=f+1,c[ta>>2]=c[(c[(c[E>>2]|0)+44>>2]|0)+(f<<2)>>2],c[Ma>>2]=1,(c[sa>>2]|0)==0):0)?(f=b[(c[(c[qa>>2]|0)+4>>2]|0)+(e[Aa>>1]<<1)>>1]|0,c[o>>2]=f,(f|0)>=0):0)?(d[(c[(c[(c[qa>>2]|0)+12>>2]|0)+4>>2]|0)+((c[o>>2]|0)*24|0)+20>>0]|0)==0:0)a[ka>>0]=1;c[xa>>2]=ev(c[u>>2]|0,c[A>>2]|0,c[C>>2]|0,c[Ma>>2]|0,za)|0;if(c[za>>2]|0)a[Ba>>0]=a[(c[za>>2]|0)+(e[Aa>>1]|0)>>0]|0;c[ma>>2]=c[(c[A>>2]|0)+16>>2];if((e[Aa>>1]|0)<(e[(c[qa>>2]|0)+50>>1]|0)?(c[C>>2]|0)==((d[(c[(c[qa>>2]|0)+28>>2]|0)+(e[Aa>>1]|0)>>0]|0)==0|0):0)U=64;else U=62;if(((U|0)==62?(c[C>>2]|0)!=0:0)?(e[(c[qa>>2]|0)+50>>1]|0)==(e[Aa>>1]|0):0)U=64;if((U|0)==64){c[Ka>>2]=c[ta>>2];c[ta>>2]=c[sa>>2];c[sa>>2]=c[Ka>>2];a[La>>0]=a[ka>>0]|0;a[ka>>0]=a[Da>>0]|0;a[Da>>0]=a[La>>0]|0}if(c[sa>>2]|0)F=(e[(c[sa>>2]|0)+18>>1]&40|0)!=0;else F=1;c[ra>>2]=F&1;if(c[ta>>2]|0)F=(e[(c[ta>>2]|0)+18>>1]&40|0)!=0;else F=1;c[va>>2]=F&1;if(c[sa>>2]|0)F=1;else F=(e[Aa>>1]|0)>0;c[la>>2]=F&1;c[ya>>2]=e[Aa>>1];if(!(c[sa>>2]|0)){if(a[ka>>0]|0){fp(c[l>>2]|0,28,0,(c[xa>>2]|0)+(e[Aa>>1]|0)|0)|0;c[ya>>2]=(c[ya>>2]|0)+1;c[ra>>2]=0;c[la>>2]=1}}else{c[na>>2]=c[(c[c[sa>>2]>>2]|0)+16>>2];Os(c[u>>2]|0,c[na>>2]|0,(c[xa>>2]|0)+(e[Aa>>1]|0)|0);do if(!(d[(c[sa>>2]|0)+20>>0]&0)){if(!(Ps(c[na>>2]|0)|0))break;fp(c[l>>2]|0,76,(c[xa>>2]|0)+(e[Aa>>1]|0)|0,c[ma>>2]|0)|0}while(0);do if(c[za>>2]|0){if(((kt(c[na>>2]|0,a[(c[za>>2]|0)+(e[Aa>>1]|0)>>0]|0)|0)<<24>>24|0)==65)a[(c[za>>2]|0)+(e[Aa>>1]|0)>>0]=65;if(!(fv(c[na>>2]|0,a[(c[za>>2]|0)+(e[Aa>>1]|0)>>0]|0)|0))break;a[(c[za>>2]|0)+(e[Aa>>1]|0)>>0]=65}while(0);c[ya>>2]=(c[ya>>2]|0)+1}gv(c[u>>2]|0,c[xa>>2]|0,(c[ya>>2]|0)-(d[ka>>0]|0)|0,c[za>>2]|0);c[wa>>2]=d[23608+((c[la>>2]<<2)+(c[ra>>2]<<1)+(c[C>>2]|0))>>0];We(c[l>>2]|0,c[wa>>2]|0,c[T>>2]|0,c[ma>>2]|0,c[xa>>2]|0,c[ya>>2]|0)|0;c[ya>>2]=e[Aa>>1];do if(c[ta>>2]|0){c[Ca>>2]=c[(c[c[ta>>2]>>2]|0)+16>>2];Cs(c[u>>2]|0,(c[xa>>2]|0)+(e[Aa>>1]|0)|0,1);Os(c[u>>2]|0,c[Ca>>2]|0,(c[xa>>2]|0)+(e[Aa>>1]|0)|0);do if(!(d[(c[ta>>2]|0)+20>>0]&0)){if(!(Ps(c[Ca>>2]|0)|0))break;fp(c[l>>2]|0,76,(c[xa>>2]|0)+(e[Aa>>1]|0)|0,c[ma>>2]|0)|0}while(0);do if(((kt(c[Ca>>2]|0,a[Ba>>0]|0)|0)<<24>>24|0)!=65){if(fv(c[Ca>>2]|0,a[Ba>>0]|0)|0)break;gv(c[u>>2]|0,(c[xa>>2]|0)+(e[Aa>>1]|0)|0,1,Ba)}while(0);c[ya>>2]=(c[ya>>2]|0)+1}else{if(!(a[Da>>0]|0))break;fp(c[l>>2]|0,28,0,(c[xa>>2]|0)+(e[Aa>>1]|0)|0)|0;c[va>>2]=0;c[ya>>2]=(c[ya>>2]|0)+1}while(0);Xb(c[r>>2]|0,c[za>>2]|0);f=Mr(c[l>>2]|0)|0;c[(c[A>>2]|0)+44>>2]=f;if(c[ya>>2]|0){c[wa>>2]=d[23616+((c[C>>2]<<1)+(c[va>>2]|0))>>0];We(c[l>>2]|0,c[wa>>2]|0,c[T>>2]|0,c[ma>>2]|0,c[xa>>2]|0,c[ya>>2]|0)|0}dv(c[A>>2]|0,c[sa>>2]|0);dv(c[A>>2]|0,c[ta>>2]|0);do if(!(c[ua>>2]|0)){if(!(d[(c[(c[qa>>2]|0)+12>>2]|0)+44>>0]&32)){g=(c[u>>2]|0)+72|0;f=(c[g>>2]|0)+1|0;c[g>>2]=f;c[oa>>2]=f;fp(c[l>>2]|0,112,c[T>>2]|0,c[oa>>2]|0)|0;jt(c[u>>2]|0,c[w>>2]|0,-1,c[oa>>2]|0);fp(c[l>>2]|0,66,c[w>>2]|0,c[oa>>2]|0)|0;break}if((c[w>>2]|0)==(c[T>>2]|0))break;c[pa>>2]=Zr(c[(c[qa>>2]|0)+12>>2]|0)|0;c[oa>>2]=ys(c[u>>2]|0,e[(c[pa>>2]|0)+50>>1]|0)|0;c[o>>2]=0;while(1){if((c[o>>2]|0)>=(e[(c[pa>>2]|0)+50>>1]|0))break;c[B>>2]=(Ds(c[qa>>2]|0,b[(c[(c[pa>>2]|0)+4>>2]|0)+(c[o>>2]<<1)>>1]|0)|0)<<16>>16;ip(c[l>>2]|0,47,c[T>>2]|0,c[B>>2]|0,(c[oa>>2]|0)+(c[o>>2]|0)|0)|0;c[o>>2]=(c[o>>2]|0)+1}We(c[l>>2]|0,68,c[w>>2]|0,c[x>>2]|0,c[oa>>2]|0,e[(c[pa>>2]|0)+50>>1]|0)|0}while(0);do if(!(c[(c[E>>2]|0)+36>>2]&4096)){B=(c[A>>2]|0)+37|0;if(c[C>>2]|0){a[B>>0]=8;break}else{a[B>>0]=9;break}}else a[(c[A>>2]|0)+37>>0]=-102;while(0);c[(c[A>>2]|0)+40>>2]=c[T>>2];a[(c[A>>2]|0)+38>>0]=(c[(c[E>>2]|0)+36>>2]&65536|0)!=0?1:0;if(c[(c[E>>2]|0)+36>>2]&15)break;a[(c[A>>2]|0)+39>>0]=1;break}if(!(c[Fa+36>>2]&8192))if((d[(c[Ea>>2]|0)+37>>0]|0)>>>3&1){a[(c[A>>2]|0)+37>>0]=-102;break}else{a[(c[A>>2]|0)+37>>0]=a[23624+(c[C>>2]|0)>>0]|0;c[(c[A>>2]|0)+40>>2]=c[w>>2];f=1+(fp(c[l>>2]|0,d[23632+(c[C>>2]|0)>>0]|0,c[w>>2]|0,c[Ja>>2]|0)|0)|0;c[(c[A>>2]|0)+44>>2]=f;a[(c[A>>2]|0)+39>>0]=1;break}c[W>>2]=0;C=(c[u>>2]|0)+68|0;f=c[C>>2]|0;c[C>>2]=f+1;c[P>>2]=f;f=(c[u>>2]|0)+72|0;C=(c[f>>2]|0)+1|0;c[f>>2]=C;c[ca>>2]=C;c[ea>>2]=0;c[ga>>2]=0;c[F>>2]=Nr(c[l>>2]|0)|0;c[L>>2]=0;c[Z>>2]=0;c[ba>>2]=c[(c[Ea>>2]|0)+16>>2];c[n>>2]=c[c[(c[E>>2]|0)+44>>2]>>2];c[X>>2]=c[(c[n>>2]|0)+12>>2];a[(c[A>>2]|0)+37>>0]=18;c[(c[A>>2]|0)+40>>2]=c[ca>>2];C=c[y>>2]|0;a:do if((d[(c[y>>2]|0)+41>>0]|0)>1){c[$>>2]=(d[C+41>>0]|0)-(c[N>>2]|0)-1;c[aa>>2]=Qe(c[r>>2]|0,80+((c[$>>2]|0)*72|0)|0,0)|0;if(!(c[aa>>2]|0)){h=v;f=c[h+4>>2]|0;g=p;c[g>>2]=c[h>>2];c[g+4>>2]=f;g=p;f=g;f=c[f>>2]|0;g=g+4|0;g=c[g>>2]|0;D=g;i=q;return f|0}c[(c[aa>>2]|0)+4>>2]=(c[$>>2]|0)+1&255;c[c[aa>>2]>>2]=c[(c[aa>>2]|0)+4>>2];C=(c[aa>>2]|0)+8|0;T=(c[Ea>>2]|0)+0|0;E=C+72|0;do{c[C>>2]=c[T>>2];C=C+4|0;T=T+4|0}while((C|0)<(E|0));c[_>>2]=(c[(c[y>>2]|0)+4>>2]|0)+8;c[B>>2]=1;while(1){if((c[B>>2]|0)>(c[$>>2]|0))break a;C=(c[aa>>2]|0)+8+((c[B>>2]|0)*72|0)+0|0;T=(c[_>>2]|0)+((d[(c[A>>2]|0)+((c[B>>2]|0)*72|0)+36>>0]|0)*72|0)+0|0;E=C+72|0;do{c[C>>2]=c[T>>2];C=C+4|0;T=T+4|0}while((C|0)<(E|0));c[B>>2]=(c[B>>2]|0)+1}}else c[aa>>2]=c[C+4>>2];while(0);if(!(e[(c[y>>2]|0)+34>>1]&8)){if(!(d[(c[ba>>2]|0)+44>>0]&32)){g=(c[u>>2]|0)+72|0;f=(c[g>>2]|0)+1|0;c[g>>2]=f;c[ea>>2]=f;fp(c[l>>2]|0,28,0,c[ea>>2]|0)|0}else{c[fa>>2]=Zr(c[ba>>2]|0)|0;g=(c[u>>2]|0)+68|0;f=c[g>>2]|0;c[g>>2]=f+1;c[ea>>2]=f;fp(c[l>>2]|0,57,c[ea>>2]|0,e[(c[fa>>2]|0)+50>>1]|0)|0;Lr(c[u>>2]|0,c[fa>>2]|0)}g=(c[u>>2]|0)+72|0;f=(c[g>>2]|0)+1|0;c[g>>2]=f;c[ga>>2]=f}c[da>>2]=fp(c[l>>2]|0,25,0,c[ca>>2]|0)|0;if((c[(c[m>>2]|0)+12>>2]|0)>1){c[ha>>2]=0;while(1){if((c[ha>>2]|0)>=(c[(c[m>>2]|0)+12>>2]|0))break;c[Y>>2]=c[(c[(c[m>>2]|0)+20>>2]|0)+((c[ha>>2]|0)*48|0)>>2];if(((((c[(c[m>>2]|0)+20>>2]|0)+((c[ha>>2]|0)*48|0)|0)!=(c[n>>2]|0)?(c[(c[Y>>2]|0)+4>>2]&1|0)==0:0)?(d[(c[(c[m>>2]|0)+20>>2]|0)+((c[ha>>2]|0)*48|0)+20>>0]&18|0)==0:0)?(e[(c[(c[m>>2]|0)+20>>2]|0)+((c[ha>>2]|0)*48|0)+18>>1]&4095|0)!=0:0){c[Y>>2]=Bq(c[r>>2]|0,c[Y>>2]|0,0)|0;c[Z>>2]=mr(c[r>>2]|0,c[Z>>2]|0,c[Y>>2]|0)|0}c[ha>>2]=(c[ha>>2]|0)+1}if(c[Z>>2]|0)c[Z>>2]=Rn(c[u>>2]|0,72,0,c[Z>>2]|0,0)|0}b[ia>>1]=112;c[ja>>2]=0;while(1){if((c[ja>>2]|0)>=(c[(c[X>>2]|0)+12>>2]|0))break;c[S>>2]=(c[(c[X>>2]|0)+20>>2]|0)+((c[ja>>2]|0)*48|0);if(!((c[(c[S>>2]|0)+8>>2]|0)!=(c[w>>2]|0)?(e[(c[S>>2]|0)+18>>1]&512|0)==0:0)){c[R>>2]=c[c[S>>2]>>2];c[Q>>2]=0;if((c[Z>>2]|0)!=0?(c[(c[R>>2]|0)+4>>2]&1|0)==0:0){c[(c[Z>>2]|0)+12>>2]=c[R>>2];c[R>>2]=c[Z>>2]}c[O>>2]=Hu(c[u>>2]|0,c[aa>>2]|0,c[R>>2]|0,0,0,b[ia>>1]|0,c[P>>2]|0)|0;if(c[O>>2]|0){av(c[u>>2]|0,c[aa>>2]|0,(c[O>>2]|0)+736|0,c[N>>2]|0,d[(c[A>>2]|0)+36>>0]|0,0);do if(!(e[(c[y>>2]|0)+34>>1]&8)){c[M>>2]=(c[ja>>2]|0)==((c[(c[X>>2]|0)+12>>2]|0)-1|0)?-1:c[ja>>2]|0;if(!(d[(c[ba>>2]|0)+44>>0]&32)){c[K>>2]=Rs(c[u>>2]|0,c[ba>>2]|0,-1,c[w>>2]|0,c[ga>>2]|0,0)|0;c[Q>>2]=We(c[l>>2]|0,130,c[ea>>2]|0,0,c[K>>2]|0,c[M>>2]|0)|0;break}c[J>>2]=Zr(c[ba>>2]|0)|0;c[I>>2]=e[(c[J>>2]|0)+50>>1];c[K>>2]=ys(c[u>>2]|0,c[I>>2]|0)|0;c[G>>2]=0;while(1){if((c[G>>2]|0)>=(c[I>>2]|0))break;c[V>>2]=b[(c[(c[J>>2]|0)+4>>2]|0)+(c[G>>2]<<1)>>1];Rs(c[u>>2]|0,c[ba>>2]|0,c[V>>2]|0,c[w>>2]|0,(c[K>>2]|0)+(c[G>>2]|0)|0,0)|0;c[G>>2]=(c[G>>2]|0)+1}if(c[M>>2]|0)c[Q>>2]=We(c[l>>2]|0,69,c[ea>>2]|0,0,c[K>>2]|0,c[I>>2]|0)|0;do if((c[M>>2]|0)>=0){ip(c[l>>2]|0,49,c[K>>2]|0,c[I>>2]|0,c[ga>>2]|0)|0;ip(c[l>>2]|0,110,c[ea>>2]|0,c[ga>>2]|0,0)|0;if(!(c[M>>2]|0))break;Xe(c[l>>2]|0,16)}while(0);Bs(c[u>>2]|0,c[K>>2]|0,c[I>>2]|0)}while(0);fp(c[l>>2]|0,17,c[ca>>2]|0,c[F>>2]|0)|0;if(c[Q>>2]|0)zp(c[l>>2]|0,c[Q>>2]|0);if(a[(c[O>>2]|0)+39>>0]|0)c[L>>2]=1;c[H>>2]=c[(c[O>>2]|0)+792>>2];do if(c[(c[H>>2]|0)+36>>2]&512){if((c[ja>>2]|0)!=0?(c[(c[H>>2]|0)+28>>2]|0)!=(c[W>>2]|0):0){U=164;break}if((d[(c[ba>>2]|0)+44>>0]&32|0)!=0?(a[(c[(c[H>>2]|0)+28>>2]|0)+55>>0]&3|0)==2:0){U=164;break}c[W>>2]=c[(c[H>>2]|0)+28>>2];b[ia>>1]=e[ia>>1]|4096}else U=164;while(0);if((U|0)==164){U=0;c[W>>2]=0}Iu(c[O>>2]|0)}}c[ja>>2]=(c[ja>>2]|0)+1}c[(c[A>>2]|0)+48>>2]=c[W>>2];if(c[W>>2]|0)c[(c[A>>2]|0)+8>>2]=c[P>>2];if(c[Z>>2]|0){c[(c[Z>>2]|0)+12>>2]=0;wn(c[r>>2]|0,c[Z>>2]|0)}g=c[l>>2]|0;f=c[da>>2]|0;_e(g,f,Mr(c[l>>2]|0)|0);fp(c[l>>2]|0,16,0,c[(c[A>>2]|0)+12>>2]|0)|0;Pr(c[l>>2]|0,c[F>>2]|0);if((d[(c[y>>2]|0)+41>>0]|0)>1)Xb(c[r>>2]|0,c[aa>>2]|0);if(!(c[L>>2]|0))dv(c[A>>2]|0,c[n>>2]|0)}else{c[Xa>>2]=c[(c[Ea>>2]|0)+28>>2];ip(c[l>>2]|0,20,c[Xa>>2]|0,0,c[(c[Ea>>2]|0)+24>>2]|0)|0;f=fp(c[l>>2]|0,22,c[Xa>>2]|0,c[Ja>>2]|0)|0;c[(c[A>>2]|0)+44>>2]=f;a[(c[A>>2]|0)+37>>0]=16}while(0);c[n>>2]=c[(c[m>>2]|0)+20>>2];c[o>>2]=c[(c[m>>2]|0)+12>>2];while(1){if((c[o>>2]|0)<=0)break;do if(!(d[(c[n>>2]|0)+20>>0]&6)){g=(c[n>>2]|0)+40|0;f=(c[A>>2]|0)+64|0;if((c[g>>2]&c[f>>2]|0)!=0?1:(c[g+4>>2]&c[f+4>>2]|0)!=0){a[(c[y>>2]|0)+39>>0]=1;break}c[z>>2]=c[c[n>>2]>>2];if((c[c[A>>2]>>2]|0)!=0?(c[(c[z>>2]|0)+4>>2]&1|0)==0:0)break;xs(c[u>>2]|0,c[z>>2]|0,c[x>>2]|0,16);f=(c[n>>2]|0)+20|0;a[f>>0]=d[f>>0]|4}while(0);c[o>>2]=(c[o>>2]|0)+ -1;c[n>>2]=(c[n>>2]|0)+48}c[n>>2]=c[(c[m>>2]|0)+20>>2];c[o>>2]=c[(c[m>>2]|0)+12>>2];while(1){if((c[o>>2]|0)<=0)break;if(((((((d[(c[n>>2]|0)+20>>0]&6|0)==0?(e[(c[n>>2]|0)+18>>1]|0)==1026:0)?(c[(c[n>>2]|0)+8>>2]|0)==(c[w>>2]|0):0)?(c[c[A>>2]>>2]|0)==0:0)?(c[k>>2]=c[c[n>>2]>>2],f=v,c[t>>2]=hv(c[m>>2]|0,c[w>>2]|0,c[(c[n>>2]|0)+12>>2]|0,c[f>>2]|0,c[f+4>>2]|0,3,0)|0,(c[t>>2]|0)!=0):0)?(d[(c[t>>2]|0)+20>>0]&4|0)==0:0)?(c[s>>2]=Qe(c[r>>2]|0,48,0)|0,(c[s>>2]|0)!=0):0){C=(c[s>>2]|0)+0|0;T=(c[c[t>>2]>>2]|0)+0|0;E=C+48|0;do{c[C>>2]=c[T>>2];C=C+4|0;T=T+4|0}while((C|0)<(E|0));c[(c[s>>2]|0)+12>>2]=c[(c[k>>2]|0)+12>>2];xs(c[u>>2]|0,c[s>>2]|0,c[x>>2]|0,16);Xb(c[r>>2]|0,c[s>>2]|0)}c[o>>2]=(c[o>>2]|0)+ -1;c[n>>2]=(c[n>>2]|0)+48}b:do if(c[c[A>>2]>>2]|0){f=Mr(c[l>>2]|0)|0;c[(c[A>>2]|0)+28>>2]=f;fp(c[l>>2]|0,25,1,c[c[A>>2]>>2]|0)|0;cu(c[u>>2]|0);c[n>>2]=c[(c[m>>2]|0)+20>>2];c[o>>2]=0;while(1){if((c[o>>2]|0)>=(c[(c[m>>2]|0)+12>>2]|0))break b;if((d[(c[n>>2]|0)+20>>0]&6|0)==0?(g=(c[n>>2]|0)+40|0,f=(c[A>>2]|0)+64|0,!((c[g>>2]&c[f>>2]|0)!=0?1:(c[g+4>>2]&c[f+4>>2]|0)!=0)):0){xs(c[u>>2]|0,c[c[n>>2]>>2]|0,c[x>>2]|0,16);f=(c[n>>2]|0)+20|0;a[f>>0]=d[f>>0]|4}c[o>>2]=(c[o>>2]|0)+1;c[n>>2]=(c[n>>2]|0)+48}}while(0);h=(c[A>>2]|0)+64|0;f=c[h+4>>2]|0;g=p;c[g>>2]=c[h>>2];c[g+4>>2]=f;g=p;f=g;f=c[f>>2]|0;g=g+4|0;g=c[g>>2]|0;D=g;i=q;return f|0}function cv(b,e,f,g,h,j){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;q=i;i=i+64|0;v=q+48|0;l=q+44|0;m=q+40|0;x=q+36|0;p=q+32|0;w=q+28|0;u=q+24|0;n=q+20|0;k=q+16|0;r=q+12|0;s=q+8|0;o=q+4|0;t=q;c[v>>2]=b;c[l>>2]=e;c[m>>2]=f;c[x>>2]=g;c[p>>2]=h;c[w>>2]=j;c[u>>2]=c[c[l>>2]>>2];c[n>>2]=c[(c[v>>2]|0)+8>>2];if((d[c[u>>2]>>0]|0|0)==79){c[k>>2]=Qs(c[v>>2]|0,c[(c[u>>2]|0)+16>>2]|0,c[w>>2]|0)|0;e=c[m>>2]|0;b=c[l>>2]|0;dv(e,b);b=c[k>>2]|0;i=q;return b|0}if((d[c[u>>2]>>0]|0|0)==76){c[k>>2]=c[w>>2];fp(c[n>>2]|0,28,0,c[k>>2]|0)|0;e=c[m>>2]|0;b=c[l>>2]|0;dv(e,b);b=c[k>>2]|0;i=q;return b|0}c[t>>2]=c[(c[m>>2]|0)+56>>2];if(((c[(c[t>>2]|0)+36>>2]&1024|0)==0?(c[(c[t>>2]|0)+28>>2]|0)!=0:0)?(d[(c[(c[(c[t>>2]|0)+28>>2]|0)+28>>2]|0)+(c[x>>2]|0)>>0]|0|0)!=0:0)c[p>>2]=((c[p>>2]|0)!=0^1)&1;c[k>>2]=c[w>>2];c[r>>2]=Ms(c[v>>2]|0,c[u>>2]|0,4,0)|0;if((c[r>>2]|0)==4)c[p>>2]=((c[p>>2]|0)!=0^1)&1;c[s>>2]=c[(c[u>>2]|0)+28>>2];fp(c[n>>2]|0,(c[p>>2]|0)!=0?105:108,c[s>>2]|0,0)|0;b=(c[t>>2]|0)+36|0;c[b>>2]=c[b>>2]|2048;if(!(c[(c[m>>2]|0)+48>>2]|0)){b=Nr(c[n>>2]|0)|0;c[(c[m>>2]|0)+16>>2]=b}t=(c[m>>2]|0)+48|0;c[t>>2]=(c[t>>2]|0)+1;t=Ek(c[c[v>>2]>>2]|0,c[(c[m>>2]|0)+52>>2]|0,(c[(c[m>>2]|0)+48>>2]|0)*12|0,0)|0;c[(c[m>>2]|0)+52>>2]=t;c[o>>2]=c[(c[m>>2]|0)+52>>2];t=(c[m>>2]|0)+48|0;if(!(c[o>>2]|0)){c[t>>2]=0;e=c[m>>2]|0;b=c[l>>2]|0;dv(e,b);b=c[k>>2]|0;i=q;return b|0}c[o>>2]=(c[o>>2]|0)+(((c[t>>2]|0)-1|0)*12|0);c[c[o>>2]>>2]=c[s>>2];t=c[n>>2]|0;u=c[s>>2]|0;s=c[k>>2]|0;if((c[r>>2]|0)==1){b=fp(t,103,u,s)|0;c[(c[o>>2]|0)+4>>2]=b}else{b=ip(t,47,u,0,s)|0;c[(c[o>>2]|0)+4>>2]=b}a[(c[o>>2]|0)+8>>0]=(c[p>>2]|0)!=0?6:7;Ir(c[n>>2]|0,76,c[k>>2]|0)|0;e=c[m>>2]|0;b=c[l>>2]|0;dv(e,b);b=c[k>>2]|0;i=q;return b|0}function dv(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0;f=i;i=i+16|0;j=f+8|0;g=f+4|0;h=f;c[j>>2]=b;c[g>>2]=e;if(!(c[g>>2]|0)){i=f;return}if((d[(c[g>>2]|0)+20>>0]|0)&4){i=f;return}if((c[c[j>>2]>>2]|0)!=0?(c[(c[c[g>>2]>>2]|0)+4>>2]&1|0)==0:0){i=f;return}e=(c[j>>2]|0)+64|0;b=(c[g>>2]|0)+40|0;if(!((c[e>>2]&c[b>>2]|0)==0?(c[e+4>>2]&c[b+4>>2]|0)==0:0)){i=f;return}b=(c[g>>2]|0)+20|0;a[b>>0]=d[b>>0]|0|4;if((c[(c[g>>2]|0)+4>>2]|0)<0){i=f;return}c[h>>2]=(c[(c[(c[g>>2]|0)+24>>2]|0)+20>>2]|0)+((c[(c[g>>2]|0)+4>>2]|0)*48|0);g=(c[h>>2]|0)+21|0;b=(a[g>>0]|0)+ -1<<24>>24;a[g>>0]=b;if(b&255){i=f;return}dv(c[j>>2]|0,c[h>>2]|0);i=f;return}function ev(d,f,g,h,j){d=d|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;m=i;i=i+80|0;s=m+60|0;t=m+56|0;k=m+52|0;C=m+48|0;l=m+44|0;w=m+66|0;x=m+64|0;y=m+40|0;B=m+36|0;r=m+32|0;p=m+28|0;q=m+24|0;n=m+20|0;o=m+16|0;u=m+12|0;z=m+8|0;v=m+4|0;A=m;c[s>>2]=d;c[t>>2]=f;c[k>>2]=g;c[C>>2]=h;c[l>>2]=j;c[y>>2]=c[(c[s>>2]|0)+8>>2];c[p>>2]=c[(c[t>>2]|0)+56>>2];b[w>>1]=b[(c[p>>2]|0)+24>>1]|0;b[x>>1]=b[(c[p>>2]|0)+26>>1]|0;c[B>>2]=c[(c[p>>2]|0)+28>>2];c[n>>2]=(c[(c[s>>2]|0)+72>>2]|0)+1;c[o>>2]=(e[(c[p>>2]|0)+24>>1]|0)+(c[C>>2]|0);d=(c[s>>2]|0)+72|0;c[d>>2]=(c[d>>2]|0)+(c[o>>2]|0);d=c[c[s>>2]>>2]|0;c[u>>2]=ne(d,au(c[y>>2]|0,c[B>>2]|0)|0)|0;if(!(c[u>>2]|0))a[(c[c[s>>2]>>2]|0)+64>>0]=1;a:do if(b[x>>1]|0){c[z>>2]=c[(c[t>>2]|0)+8>>2];Ir(c[y>>2]|0,(c[k>>2]|0)!=0?105:108,c[z>>2]|0)|0;c[q>>2]=mp(c[y>>2]|0,16)|0;C=We(c[y>>2]|0,(c[k>>2]|0)!=0?62:65,c[z>>2]|0,0,c[n>>2]|0,e[x>>1]|0)|0;c[(c[t>>2]|0)+20>>2]=C;zp(c[y>>2]|0,c[q>>2]|0);c[q>>2]=0;while(1){if((c[q>>2]|0)>=(e[x>>1]|0))break a;ip(c[y>>2]|0,47,c[z>>2]|0,c[q>>2]|0,(c[n>>2]|0)+(c[q>>2]|0)|0)|0;c[q>>2]=(c[q>>2]|0)+1}}while(0);c[q>>2]=e[x>>1];while(1){if((c[q>>2]|0)>=(e[w>>1]|0))break;c[r>>2]=c[(c[(c[p>>2]|0)+44>>2]|0)+(c[q>>2]<<2)>>2];c[v>>2]=cv(c[s>>2]|0,c[r>>2]|0,c[t>>2]|0,c[q>>2]|0,c[k>>2]|0,(c[n>>2]|0)+(c[q>>2]|0)|0)|0;do if((c[v>>2]|0)!=((c[n>>2]|0)+(c[q>>2]|0)|0))if((c[o>>2]|0)==1){lp(c[s>>2]|0,c[n>>2]|0);c[n>>2]=c[v>>2];break}else{fp(c[y>>2]|0,34,c[v>>2]|0,(c[n>>2]|0)+(c[q>>2]|0)|0)|0;break}while(0);if(!(e[(c[r>>2]|0)+18>>1]&129)){c[A>>2]=c[(c[c[r>>2]>>2]|0)+16>>2];if(Ps(c[A>>2]|0)|0)fp(c[y>>2]|0,76,(c[n>>2]|0)+(c[q>>2]|0)|0,c[(c[t>>2]|0)+12>>2]|0)|0;if(c[u>>2]|0){if(((kt(c[A>>2]|0,a[(c[u>>2]|0)+(c[q>>2]|0)>>0]|0)|0)<<24>>24|0)==65)a[(c[u>>2]|0)+(c[q>>2]|0)>>0]=65;if(fv(c[A>>2]|0,a[(c[u>>2]|0)+(c[q>>2]|0)>>0]|0)|0)a[(c[u>>2]|0)+(c[q>>2]|0)>>0]=65}}c[q>>2]=(c[q>>2]|0)+1}c[c[l>>2]>>2]=c[u>>2];i=m;return c[n>>2]|0}function fv(e,f){e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;h=i;i=i+16|0;g=h+4|0;k=h;j=h+9|0;l=h+8|0;c[k>>2]=e;a[j>>0]=f;a:do if((a[j>>0]|0)==65)c[g>>2]=1;else{while(1){if((d[c[k>>2]>>0]|0)==158)f=1;else f=(d[c[k>>2]>>0]|0)==157;e=c[k>>2]|0;if(!f)break;c[k>>2]=c[e+12>>2]}a[l>>0]=a[e>>0]|0;if((d[l>>0]|0)==159)a[l>>0]=a[(c[k>>2]|0)+38>>0]|0;switch(d[l>>0]|0){case 133:{if((a[j>>0]|0)==69)j=1;else j=(a[j>>0]|0)==67;c[g>>2]=j&1;break a};case 132:{if((a[j>>0]|0)==68)j=1;else j=(a[j>>0]|0)==67;c[g>>2]=j&1;break a};case 134:{c[g>>2]=1;break a};case 154:{if((b[(c[k>>2]|0)+32>>1]|0)<0)if((a[j>>0]|0)==68)j=1;else j=(a[j>>0]|0)==67;else j=0;c[g>>2]=j&1;break a};case 97:{c[g>>2]=(a[j>>0]|0)==66&1;break a};default:{c[g>>2]=0;break a}}}while(0);i=h;return c[g>>2]|0}function gv(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+32|0;g=m+16|0;j=m+12|0;k=m+8|0;l=m+4|0;h=m;c[g>>2]=b;c[j>>2]=d;c[k>>2]=e;c[l>>2]=f;c[h>>2]=c[(c[g>>2]|0)+8>>2];if(!(c[l>>2]|0)){i=m;return}while(1){if((c[k>>2]|0)<=0)break;if((a[c[l>>2]>>0]|0)!=65)break;c[k>>2]=(c[k>>2]|0)+ -1;c[j>>2]=(c[j>>2]|0)+1;c[l>>2]=(c[l>>2]|0)+1}while(1){if((c[k>>2]|0)>1)e=(a[(c[l>>2]|0)+((c[k>>2]|0)-1)>>0]|0)==65;else e=0;f=c[k>>2]|0;if(!e)break;c[k>>2]=f+ -1}if((f|0)<=0){i=m;return}fp(c[h>>2]|0,48,c[j>>2]|0,c[k>>2]|0)|0;bf(c[h>>2]|0,-1,c[l>>2]|0,c[k>>2]|0);Us(c[g>>2]|0,c[j>>2]|0,c[k>>2]|0);i=m;return}function hv(a,b,d,f,g,h,j){a=a|0;b=b|0;d=d|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;l=i;i=i+160|0;k=l+148|0;u=l+144|0;t=l+140|0;s=l+136|0;o=l;r=l+132|0;q=l+128|0;n=l+124|0;m=l+120|0;p=l+8|0;c[u>>2]=a;c[t>>2]=b;c[s>>2]=d;a=o;c[a>>2]=f;c[a+4>>2]=g;c[r>>2]=h;c[q>>2]=j;c[n>>2]=0;c[m>>2]=iv(p,c[u>>2]|0,c[t>>2]|0,c[s>>2]|0,c[r>>2]|0,c[q>>2]|0)|0;while(1){if(!(c[m>>2]|0)){h=10;break}t=(c[m>>2]|0)+32|0;u=o;if((c[t>>2]&c[u>>2]|0)==0?(c[t+4>>2]&c[u+4>>2]|0)==0:0){u=(c[m>>2]|0)+32|0;if((c[u>>2]|0)==0&(c[u+4>>2]|0)==0?((e[(c[m>>2]|0)+18>>1]|0)&2|0)!=0:0){h=6;break}if(!(c[n>>2]|0))c[n>>2]=c[m>>2]}c[m>>2]=jv(p)|0}if((h|0)==6){c[k>>2]=c[m>>2];u=c[k>>2]|0;i=l;return u|0}else if((h|0)==10){c[k>>2]=c[n>>2];u=c[k>>2]|0;i=l;return u|0}return 0}function iv(d,f,g,h,j,k){d=d|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;r=i;i=i+32|0;q=r+28|0;n=r+24|0;u=r+20|0;o=r+16|0;p=r+12|0;t=r+8|0;l=r+4|0;s=r;c[n>>2]=d;c[u>>2]=f;c[o>>2]=g;c[p>>2]=h;c[t>>2]=j;c[l>>2]=k;c[c[n>>2]>>2]=c[u>>2];c[(c[n>>2]|0)+4>>2]=c[u>>2];do if((c[l>>2]|0)!=0&(c[p>>2]|0)>=0){a[(c[n>>2]|0)+12>>0]=a[(c[(c[(c[l>>2]|0)+12>>2]|0)+4>>2]|0)+((c[p>>2]|0)*24|0)+21>>0]|0;c[s>>2]=0;while(1){j=c[s>>2]|0;k=c[l>>2]|0;if((b[(c[(c[l>>2]|0)+4>>2]|0)+(c[s>>2]<<1)>>1]|0)==(c[p>>2]|0)){m=7;break}if((j|0)>(e[k+52>>1]|0))break;c[s>>2]=(c[s>>2]|0)+1}if((m|0)==7){c[(c[n>>2]|0)+8>>2]=c[(c[k+32>>2]|0)+(j<<2)>>2];break}c[q>>2]=0;u=c[q>>2]|0;i=r;return u|0}else{a[(c[n>>2]|0)+12>>0]=0;c[(c[n>>2]|0)+8>>2]=0}while(0);c[(c[n>>2]|0)+16>>2]=c[t>>2];c[(c[n>>2]|0)+20>>2]=0;c[(c[n>>2]|0)+24>>2]=c[o>>2];c[(c[n>>2]|0)+28>>2]=c[p>>2];a[(c[n>>2]|0)+13>>0]=2;a[(c[n>>2]|0)+14>>0]=2;c[q>>2]=jv(c[n>>2]|0)|0;u=c[q>>2]|0;i=r;return u|0}function jv(f){f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;h=i;i=i+48|0;k=h+40|0;j=h+36|0;m=h+32|0;n=h+28|0;p=h+24|0;o=h+20|0;l=h+16|0;g=h+12|0;q=h+8|0;s=h+4|0;r=h;c[j>>2]=f;c[g>>2]=c[(c[j>>2]|0)+20>>2];a:while(1){if((d[(c[j>>2]|0)+14>>0]|0)>(d[(c[j>>2]|0)+13>>0]|0)){m=35;break}c[m>>2]=c[(c[j>>2]|0)+24+((d[(c[j>>2]|0)+14>>0]|0)-2<<2)>>2];c[n>>2]=c[(c[j>>2]|0)+24+((d[(c[j>>2]|0)+14>>0]|0)-1<<2)>>2];while(1){f=c[(c[j>>2]|0)+4>>2]|0;c[o>>2]=f;if(!f)break;c[l>>2]=(c[(c[o>>2]|0)+20>>2]|0)+((c[g>>2]|0)*48|0);while(1){if((c[g>>2]|0)>=(c[(c[o>>2]|0)+12>>2]|0))break;do if((c[(c[l>>2]|0)+8>>2]|0)==(c[m>>2]|0)?(c[(c[l>>2]|0)+12>>2]|0)==(c[n>>2]|0):0){if((d[(c[j>>2]|0)+14>>0]|0)>2?(c[(c[c[l>>2]>>2]|0)+4>>2]&1|0)!=0:0)break;if((e[(c[l>>2]|0)+18>>1]&1024|0)!=0?(d[(c[j>>2]|0)+13>>0]|0)<22:0){c[p>>2]=iq(c[(c[c[l>>2]>>2]|0)+16>>2]|0)|0;c[q>>2]=0;while(1){if((c[q>>2]|0)>=(d[(c[j>>2]|0)+13>>0]|0))break;if((c[(c[j>>2]|0)+24+(c[q>>2]<<2)>>2]|0)==(c[(c[p>>2]|0)+28>>2]|0)?(c[(c[j>>2]|0)+24+((c[q>>2]|0)+1<<2)>>2]|0)==(b[(c[p>>2]|0)+32>>1]|0):0)break;c[q>>2]=(c[q>>2]|0)+2}if((c[q>>2]|0)==(d[(c[j>>2]|0)+13>>0]|0)){c[(c[j>>2]|0)+24+(c[q>>2]<<2)>>2]=c[(c[p>>2]|0)+28>>2];c[(c[j>>2]|0)+24+((c[q>>2]|0)+1<<2)>>2]=b[(c[p>>2]|0)+32>>1];f=(c[j>>2]|0)+13|0;a[f>>0]=(d[f>>0]|0)+2}}if(e[(c[l>>2]|0)+18>>1]&c[(c[j>>2]|0)+16>>2]){if((c[(c[j>>2]|0)+8>>2]|0)!=0?(e[(c[l>>2]|0)+18>>1]&128|0)==0:0){c[r>>2]=c[c[c[o>>2]>>2]>>2];c[p>>2]=c[c[l>>2]>>2];if(!(mt(c[p>>2]|0,a[(c[j>>2]|0)+12>>0]|0)|0))break;c[s>>2]=at(c[r>>2]|0,c[(c[p>>2]|0)+12>>2]|0,c[(c[p>>2]|0)+16>>2]|0)|0;if(!(c[s>>2]|0))c[s>>2]=c[(c[c[r>>2]>>2]|0)+8>>2];if(xc(c[c[s>>2]>>2]|0,c[(c[j>>2]|0)+8>>2]|0)|0)break}if(!(e[(c[l>>2]|0)+18>>1]&2)){m=31;break a}f=c[(c[c[l>>2]>>2]|0)+16>>2]|0;c[p>>2]=f;if((d[f>>0]|0)!=154){m=31;break a}if((c[(c[p>>2]|0)+28>>2]|0)!=(c[(c[j>>2]|0)+24>>2]|0)){m=31;break a}if((b[(c[p>>2]|0)+32>>1]|0)!=(c[(c[j>>2]|0)+28>>2]|0)){m=31;break a}}}while(0);c[g>>2]=(c[g>>2]|0)+1;c[l>>2]=(c[l>>2]|0)+48}c[(c[j>>2]|0)+4>>2]=c[(c[(c[j>>2]|0)+4>>2]|0)+4>>2];c[g>>2]=0}c[(c[j>>2]|0)+4>>2]=c[c[j>>2]>>2];c[g>>2]=0;f=(c[j>>2]|0)+14|0;a[f>>0]=(d[f>>0]|0)+2}if((m|0)==31){c[(c[j>>2]|0)+20>>2]=(c[g>>2]|0)+1;c[k>>2]=c[l>>2];s=c[k>>2]|0;i=h;return s|0}else if((m|0)==35){c[k>>2]=0;s=c[k>>2]|0;i=h;return s|0}return 0}function kv(a,d,f){a=a|0;d=d|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;k=i;i=i+64|0;t=k;g=k+44|0;o=k+40|0;v=k+36|0;u=k+32|0;s=k+50|0;r=k+48|0;h=k+28|0;n=k+24|0;p=k+20|0;m=k+16|0;q=k+12|0;l=k+8|0;j=k+4|0;c[g>>2]=a;c[o>>2]=d;c[v>>2]=f;c[u>>2]=c[(c[o>>2]|0)+28>>2];b[s>>1]=b[(c[o>>2]|0)+24>>1]|0;b[r>>1]=b[(c[o>>2]|0)+26>>1]|0;c[p>>2]=c[(c[v>>2]|0)+4>>2];c[m>>2]=c[(c[u>>2]|0)+4>>2];if((e[s>>1]|0)==0?(c[(c[o>>2]|0)+36>>2]&48|0)==0:0){i=k;return}Vm(c[g>>2]|0,23928,2);c[h>>2]=0;while(1){f=c[h>>2]|0;if((c[h>>2]|0)>=(e[s>>1]|0))break;if((b[(c[m>>2]|0)+(f<<1)>>1]|0)<0)f=9992;else f=c[(c[p>>2]|0)+((b[(c[m>>2]|0)+(c[h>>2]<<1)>>1]|0)*24|0)>>2]|0;c[q>>2]=f;if((c[h>>2]|0)>=(e[r>>1]|0))lv(c[g>>2]|0,c[h>>2]|0,c[q>>2]|0,23936);else{if(c[h>>2]|0)Vm(c[g>>2]|0,23944,5);v=c[g>>2]|0;c[t>>2]=c[q>>2];kn(v,0,23952,t)}c[h>>2]=(c[h>>2]|0)+1}c[n>>2]=f;if(c[(c[o>>2]|0)+36>>2]&32){if((b[(c[m>>2]|0)+(c[n>>2]<<1)>>1]|0)<0)q=9992;else q=c[(c[p>>2]|0)+((b[(c[m>>2]|0)+(c[n>>2]<<1)>>1]|0)*24|0)>>2]|0;c[l>>2]=q;u=c[g>>2]|0;v=c[h>>2]|0;c[h>>2]=v+1;lv(u,v,c[l>>2]|0,23960)}if(c[(c[o>>2]|0)+36>>2]&16){if((b[(c[m>>2]|0)+(c[n>>2]<<1)>>1]|0)<0)l=9992;else l=c[(c[p>>2]|0)+((b[(c[m>>2]|0)+(c[n>>2]<<1)>>1]|0)*24|0)>>2]|0;c[j>>2]=l;lv(c[g>>2]|0,c[h>>2]|0,c[j>>2]|0,23968)}Vm(c[g>>2]|0,23976,1);i=k;return}function lv(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;f=i;i=i+16|0;g=f+12|0;k=f+8|0;j=f+4|0;h=f;c[g>>2]=a;c[k>>2]=b;c[j>>2]=d;c[h>>2]=e;if(c[k>>2]|0)Vm(c[g>>2]|0,23944,5);ss(c[g>>2]|0,c[j>>2]|0);Vm(c[g>>2]|0,c[h>>2]|0,1);Vm(c[g>>2]|0,19016,1);i=f;return}function mv(b,d,f,g){b=b|0;d=d|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0;h=i;i=i+32|0;j=h+16|0;l=h+12|0;k=h+8|0;n=h;m=h+20|0;c[l>>2]=b;c[k>>2]=d;b=n;c[b>>2]=f;c[b+4>>2]=g;if((c[(c[l>>2]|0)+8>>2]|0)!=(c[(c[k>>2]|0)+40>>2]|0)){c[j>>2]=0;b=c[j>>2]|0;i=h;return b|0}if(!((e[(c[l>>2]|0)+18>>1]|0)&2)){c[j>>2]=0;b=c[j>>2]|0;i=h;return b|0}d=(c[l>>2]|0)+32|0;b=n;if((c[d>>2]&c[b>>2]|0)!=0?1:(c[d+4>>2]&c[b+4>>2]|0)!=0){c[j>>2]=0;b=c[j>>2]|0;i=h;return b|0}if((c[(c[l>>2]|0)+12>>2]|0)<0){c[j>>2]=0;b=c[j>>2]|0;i=h;return b|0}a[m>>0]=a[(c[(c[(c[k>>2]|0)+16>>2]|0)+4>>2]|0)+((c[(c[l>>2]|0)+12>>2]|0)*24|0)+21>>0]|0;if(mt(c[c[l>>2]>>2]|0,a[m>>0]|0)|0){c[j>>2]=1;b=c[j>>2]|0;i=h;return b|0}else{c[j>>2]=0;b=c[j>>2]|0;i=h;return b|0}return 0}function nv(a,d,f){a=a|0;d=d|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;g=i;i=i+32|0;h=g+16|0;m=g+12|0;k=g+8|0;l=g+4|0;j=g;c[m>>2]=a;c[k>>2]=d;c[l>>2]=f;if((e[(c[k>>2]|0)+42>>1]|0|0)>=(c[l>>2]|0)){c[h>>2]=0;a=c[h>>2]|0;i=g;return a|0}c[l>>2]=(c[l>>2]|0)+7&-8;c[j>>2]=Qe(c[m>>2]|0,c[l>>2]<<2,0)|0;if(!(c[j>>2]|0)){c[h>>2]=7;a=c[h>>2]|0;i=g;return a|0}dF(c[j>>2]|0,c[(c[k>>2]|0)+44>>2]|0,(e[(c[k>>2]|0)+42>>1]|0)<<2|0)|0;if((c[(c[k>>2]|0)+44>>2]|0)!=((c[k>>2]|0)+52|0))Xb(c[m>>2]|0,c[(c[k>>2]|0)+44>>2]|0);c[(c[k>>2]|0)+44>>2]=c[j>>2];b[(c[k>>2]|0)+42>>1]=c[l>>2];c[h>>2]=0;a=c[h>>2]|0;i=g;return a|0}function ov(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;g=i;i=i+32|0;n=g+20|0;k=g+24|0;o=g+16|0;m=g+12|0;h=g+8|0;l=g+4|0;j=g;c[n>>2]=a;b[k>>1]=d;c[o>>2]=e;c[m>>2]=f;c[l>>2]=56+((b[k>>1]<<2)+7&-8)+(((b[k>>1]|0)+1<<1)+(b[k>>1]<<1)+(b[k>>1]|0)+7&-8);a=(c[l>>2]|0)+(c[o>>2]|0)|0;c[h>>2]=se(c[n>>2]|0,a,((a|0)<0)<<31>>31)|0;if(!(c[h>>2]|0)){o=c[h>>2]|0;i=g;return o|0}c[j>>2]=(c[h>>2]|0)+56;c[(c[h>>2]|0)+32>>2]=c[j>>2];c[j>>2]=(c[j>>2]|0)+((b[k>>1]<<2)+7&-8);c[(c[h>>2]|0)+8>>2]=c[j>>2];c[j>>2]=(c[j>>2]|0)+((b[k>>1]|0)+1<<1);c[(c[h>>2]|0)+4>>2]=c[j>>2];c[j>>2]=(c[j>>2]|0)+(b[k>>1]<<1);c[(c[h>>2]|0)+28>>2]=c[j>>2];b[(c[h>>2]|0)+52>>1]=b[k>>1]|0;b[(c[h>>2]|0)+50>>1]=(b[k>>1]|0)-1;c[c[m>>2]>>2]=(c[h>>2]|0)+(c[l>>2]|0);o=c[h>>2]|0;i=g;return o|0}function pv(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;h=i;i=i+32|0;f=h+8|0;j=h+20|0;e=h+16|0;g=h;c[j>>2]=a;c[e>>2]=b;a=g;c[a>>2]=0;c[a+4>>2]=0;if(!(c[e>>2]|0)){b=f;c[b>>2]=0;c[b+4>>2]=0;b=f;a=b;a=c[a>>2]|0;b=b+4|0;b=c[b>>2]|0;D=b;i=h;return a|0}a=c[j>>2]|0;b=c[e>>2]|0;if((d[c[e>>2]>>0]|0|0)==154){a=_u(a,c[b+28>>2]|0)|0;j=g;c[j>>2]=a;c[j+4>>2]=D;j=g;a=c[j+4>>2]|0;b=f;c[b>>2]=c[j>>2];c[b+4>>2]=a;b=f;a=b;a=c[a>>2]|0;b=b+4|0;b=c[b>>2]|0;D=b;i=h;return a|0}l=pv(a,c[b+16>>2]|0)|0;k=g;c[k>>2]=l;c[k+4>>2]=D;k=pv(c[j>>2]|0,c[(c[e>>2]|0)+12>>2]|0)|0;l=g;a=c[l+4>>2]|D;b=g;c[b>>2]=c[l>>2]|k;c[b+4>>2]=a;b=c[j>>2]|0;j=(c[e>>2]|0)+20|0;if(c[(c[e>>2]|0)+4>>2]&2048){a=qv(b,c[j>>2]|0)|0;b=g;k=c[b+4>>2]|D;l=g;c[l>>2]=c[b>>2]|a;c[l+4>>2]=k}else{a=Zu(b,c[j>>2]|0)|0;b=g;k=c[b+4>>2]|D;l=g;c[l>>2]=c[b>>2]|a;c[l+4>>2]=k}a=g;l=c[a+4>>2]|0;k=f;c[k>>2]=c[a>>2];c[k+4>>2]=l;k=f;l=k;l=c[l>>2]|0;k=k+4|0;k=c[k>>2]|0;D=k;i=h;return l|0}function qv(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;e=i;i=i+32|0;j=e+20|0;g=e+16|0;d=e;h=e+12|0;f=e+8|0;c[j>>2]=a;c[g>>2]=b;a=d;c[a>>2]=0;c[a+4>>2]=0;while(1){if(!(c[g>>2]|0))break;c[h>>2]=c[(c[g>>2]|0)+32>>2];k=Zu(c[j>>2]|0,c[c[g>>2]>>2]|0)|0;l=d;b=c[l+4>>2]|D;a=d;c[a>>2]=c[l>>2]|k;c[a+4>>2]=b;a=Zu(c[j>>2]|0,c[(c[g>>2]|0)+40>>2]|0)|0;b=d;k=c[b+4>>2]|D;l=d;c[l>>2]=c[b>>2]|a;c[l+4>>2]=k;l=Zu(c[j>>2]|0,c[(c[g>>2]|0)+48>>2]|0)|0;k=d;a=c[k+4>>2]|D;b=d;c[b>>2]=c[k>>2]|l;c[b+4>>2]=a;b=pv(c[j>>2]|0,c[(c[g>>2]|0)+36>>2]|0)|0;a=d;l=c[a+4>>2]|D;k=d;c[k>>2]=c[a>>2]|b;c[k+4>>2]=l;k=pv(c[j>>2]|0,c[(c[g>>2]|0)+44>>2]|0)|0;l=d;b=c[l+4>>2]|D;a=d;c[a>>2]=c[l>>2]|k;c[a+4>>2]=b;a:do if(c[h>>2]|0){c[f>>2]=0;while(1){if((c[f>>2]|0)>=(c[c[h>>2]>>2]|0))break a;k=qv(c[j>>2]|0,c[(c[h>>2]|0)+8+((c[f>>2]|0)*72|0)+20>>2]|0)|0;l=d;b=c[l+4>>2]|D;a=d;c[a>>2]=c[l>>2]|k;c[a+4>>2]=b;a=pv(c[j>>2]|0,c[(c[h>>2]|0)+8+((c[f>>2]|0)*72|0)+44>>2]|0)|0;b=d;k=c[b+4>>2]|D;l=d;c[l>>2]=c[b>>2]|a;c[l+4>>2]=k;c[f>>2]=(c[f>>2]|0)+1}}while(0);c[g>>2]=c[(c[g>>2]|0)+52>>2]}l=d;D=c[l+4>>2]|0;i=e;return c[l>>2]|0}function rv(a,c){a=a|0;c=c|0;var e=0,f=0,g=0,h=0;e=i;i=i+16|0;f=e+4|0;g=e+2|0;h=e;b[g>>1]=a;b[h>>1]=c;if((b[g>>1]|0)>=(b[h>>1]|0)){c=b[g>>1]|0;if((b[g>>1]|0)>((b[h>>1]|0)+49|0)){b[f>>1]=c;a=b[f>>1]|0;i=e;return a|0}a=b[g>>1]|0;if((c<<16>>16|0)>((b[h>>1]|0)+31|0)){b[f>>1]=a+1;a=b[f>>1]|0;i=e;return a|0}else{b[f>>1]=a+(d[24056+((b[g>>1]|0)-(b[h>>1]|0))>>0]|0);a=b[f>>1]|0;i=e;return a|0}}else{c=b[h>>1]|0;if((b[h>>1]|0)>((b[g>>1]|0)+49|0)){b[f>>1]=c;a=b[f>>1]|0;i=e;return a|0}a=b[h>>1]|0;if((c<<16>>16|0)>((b[g>>1]|0)+31|0)){b[f>>1]=a+1;a=b[f>>1]|0;i=e;return a|0}else{b[f>>1]=a+(d[24056+((b[h>>1]|0)-(b[g>>1]|0))>>0]|0);a=b[f>>1]|0;i=e;return a|0}}return 0}function sv(f,g,h,j,k,l,m){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;var n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0;s=i;i=i+144|0;o=s+141|0;J=s+120|0;F=s+116|0;X=s+112|0;H=s+132|0;Z=s+130|0;Y=s+108|0;P=s+104|0;M=s+140|0;t=s+139|0;B=s+138|0;u=s+137|0;Q=s+136|0;E=s+135|0;R=s+128|0;z=s+126|0;N=s+124|0;O=s+100|0;p=s+96|0;y=s+92|0;I=s+88|0;A=s+84|0;x=s+80|0;V=s+76|0;G=s+72|0;K=s+68|0;w=s+64|0;L=s+60|0;r=s+40|0;v=s+32|0;S=s+24|0;W=s+16|0;U=s+56|0;T=s+52|0;C=s+134|0;_=s+48|0;$=s+8|0;q=s;c[J>>2]=f;c[F>>2]=g;c[X>>2]=h;b[H>>1]=j;b[Z>>1]=k;c[Y>>2]=l;c[P>>2]=m;c[x>>2]=0;c[L>>2]=c[c[c[J>>2]>>2]>>2];f=r;c[f>>2]=0;c[f+4>>2]=0;if((e[Z>>1]|0)!=0?(e[(c[L>>2]|0)+60>>1]&128|0)!=0:0){a[o>>0]=0;f=a[o>>0]|0;i=s;return f|0}b[N>>1]=c[c[F>>2]>>2];if((e[N>>1]|0)>63){a[o>>0]=0;f=a[o>>0]|0;i=s;return f|0}a[u>>0]=1;g=$E(1,0,e[N>>1]|0)|0;g=ZE(g|0,D|0,1,0)|0;f=v;c[f>>2]=g;c[f+4>>2]=D;f=S;c[f>>2]=0;c[f+4>>2]=0;f=W;c[f>>2]=0;c[f+4>>2]=0;c[O>>2]=0;while(1){if(!(d[u>>0]|0))break;g=r;j=c[g+4>>2]|0;f=v;h=c[f+4>>2]|0;if(!(j>>>0>>0|((j|0)==(h|0)?(c[g>>2]|0)>>>0<(c[f>>2]|0)>>>0:0)))break;if((c[O>>2]|0)>(e[Z>>1]|0))break;if((c[O>>2]|0)>0){h=(c[x>>2]|0)+8|0;j=W;g=c[j+4>>2]|c[h+4>>2];f=W;c[f>>2]=c[j>>2]|c[h>>2];c[f+4>>2]=g}if((c[O>>2]|0)<(e[Z>>1]|0))m=c[(c[(c[X>>2]|0)+24>>2]|0)+(c[O>>2]<<2)>>2]|0;else m=c[Y>>2]|0;c[x>>2]=m;m=c[x>>2]|0;if(c[(c[x>>2]|0)+36>>2]&1024){n=16;break}c[I>>2]=c[(c[(c[J>>2]|0)+4>>2]|0)+8+((d[m+16>>0]|0)*72|0)+40>>2];c[p>>2]=0;while(1){if((c[p>>2]|0)>=(e[N>>1]|0))break;g=$E(1,0,c[p>>2]|0)|0;f=r;do if(((!((g&c[f>>2]|0)!=0?1:(D&c[f+4>>2]|0)!=0)?(c[G>>2]=iq(c[(c[(c[F>>2]|0)+4>>2]|0)+((c[p>>2]|0)*20|0)>>2]|0)|0,(d[c[G>>2]>>0]|0)==154):0)?(c[(c[G>>2]|0)+28>>2]|0)==(c[I>>2]|0):0)?(f=W,c[V>>2]=hv((c[J>>2]|0)+328|0,c[I>>2]|0,b[(c[G>>2]|0)+32>>1]|0,~c[f>>2],~c[f+4>>2],130,0)|0,(c[V>>2]|0)!=0):0){if((e[(c[V>>2]|0)+18>>1]&2|0)!=0?(b[(c[G>>2]|0)+32>>1]|0)>=0:0){c[K>>2]=cq(c[c[J>>2]>>2]|0,c[(c[(c[F>>2]|0)+4>>2]|0)+((c[p>>2]|0)*20|0)>>2]|0)|0;if(!(c[K>>2]|0))c[K>>2]=c[(c[L>>2]|0)+8>>2];c[U>>2]=c[c[K>>2]>>2];c[K>>2]=cq(c[c[J>>2]>>2]|0,c[c[V>>2]>>2]|0)|0;if(!(c[K>>2]|0))c[K>>2]=c[(c[L>>2]|0)+8>>2];c[T>>2]=c[c[K>>2]>>2];if(xc(c[U>>2]|0,c[T>>2]|0)|0)break}h=$E(1,0,c[p>>2]|0)|0;j=r;g=c[j+4>>2]|D;f=r;c[f>>2]=c[j>>2]|h;c[f+4>>2]=g}while(0);c[p>>2]=(c[p>>2]|0)+1}if(!(c[(c[x>>2]|0)+36>>2]&4096)){if(c[(c[x>>2]|0)+36>>2]&256){c[w>>2]=0;b[R>>1]=0;b[z>>1]=1}else{f=c[(c[x>>2]|0)+28>>2]|0;c[w>>2]=f;if(!f){n=38;break}if((d[(c[w>>2]|0)+55>>0]|0)>>>2&1){n=38;break}b[R>>1]=b[(c[w>>2]|0)+50>>1]|0;b[z>>1]=b[(c[w>>2]|0)+52>>1]|0;a[u>>0]=(d[(c[w>>2]|0)+54>>0]|0)!=0}a[M>>0]=0;a[t>>0]=0;a[Q>>0]=0;c[y>>2]=0;while(1){if((c[y>>2]|0)>=(e[z>>1]|0))break;if(((c[y>>2]|0)<(e[(c[x>>2]|0)+24>>1]|0)?(e[(c[x>>2]|0)+26>>1]|0)==0:0)?(f=e[(c[(c[(c[x>>2]|0)+44>>2]|0)+(c[y>>2]<<2)>>2]|0)+18>>1]|0,c[p>>2]=f,(f&130|0)!=0):0){if(c[p>>2]&128)a[u>>0]=0}else{if(c[w>>2]|0){c[A>>2]=b[(c[(c[w>>2]|0)+4>>2]|0)+(c[y>>2]<<1)>>1];a[B>>0]=a[(c[(c[w>>2]|0)+28>>2]|0)+(c[y>>2]|0)>>0]|0;if((c[A>>2]|0)==(b[(c[(c[w>>2]|0)+12>>2]|0)+36>>1]|0))c[A>>2]=-1}else{c[A>>2]=-1;a[B>>0]=0}do if((d[u>>0]|0)!=0&(c[A>>2]|0)>=0?(c[y>>2]|0)>=(e[(c[x>>2]|0)+24>>1]|0):0){if(d[(c[(c[(c[w>>2]|0)+12>>2]|0)+4>>2]|0)+((c[A>>2]|0)*24|0)+20>>0]|0)break;a[u>>0]=0}while(0);a[C>>0]=1;a[E>>0]=0;c[p>>2]=0;a:while(1){if(!(d[C>>0]|0))break;if((c[p>>2]|0)>=(e[N>>1]|0))break;g=$E(1,0,c[p>>2]|0)|0;f=r;do if(!((g&c[f>>2]|0)!=0?1:(D&c[f+4>>2]|0)!=0)){c[G>>2]=iq(c[(c[(c[F>>2]|0)+4>>2]|0)+((c[p>>2]|0)*20|0)>>2]|0)|0;if(!(e[H>>1]&768))a[C>>0]=0;if((d[c[G>>2]>>0]|0)!=154)break;if((c[(c[G>>2]|0)+28>>2]|0)!=(c[I>>2]|0))break;if((b[(c[G>>2]|0)+32>>1]|0)!=(c[A>>2]|0))break;if((c[A>>2]|0)<0){n=68;break a}c[K>>2]=cq(c[c[J>>2]>>2]|0,c[(c[(c[F>>2]|0)+4>>2]|0)+((c[p>>2]|0)*20|0)>>2]|0)|0;if(!(c[K>>2]|0))c[K>>2]=c[(c[L>>2]|0)+8>>2];if(!(xc(c[c[K>>2]>>2]|0,c[(c[(c[w>>2]|0)+32>>2]|0)+(c[y>>2]<<2)>>2]|0)|0)){n=68;break a}}while(0);c[p>>2]=(c[p>>2]|0)+1}if((n|0)==68){n=0;a[E>>0]=1}do if(d[E>>0]|0){if(e[H>>1]&256)break;if(a[M>>0]|0){if((d[t>>0]^d[B>>0]|0)==(d[(c[(c[F>>2]|0)+4>>2]|0)+((c[p>>2]|0)*20|0)+12>>0]|0))break;a[E>>0]=0;break}a[t>>0]=d[B>>0]^d[(c[(c[F>>2]|0)+4>>2]|0)+((c[p>>2]|0)*20|0)+12>>0];if(a[t>>0]|0){h=$E(1,0,c[O>>2]|0)|0;f=c[P>>2]|0;j=f;g=c[j+4>>2]|D;c[f>>2]=c[j>>2]|h;c[f+4>>2]=g}a[M>>0]=1}while(0);if(!(a[E>>0]|0)){n=82;break}if((c[A>>2]|0)<0)a[Q>>0]=1;h=$E(1,0,c[p>>2]|0)|0;j=r;g=c[j+4>>2]|D;f=r;c[f>>2]=c[j>>2]|h;c[f+4>>2]=g}c[y>>2]=(c[y>>2]|0)+1}do if((n|0)==82){n=0;if((c[y>>2]|0)!=0?(c[y>>2]|0)>=(e[R>>1]|0):0)break;a[u>>0]=0}while(0);if(a[Q>>0]|0)a[u>>0]=1}b:do if(a[u>>0]|0){h=(c[x>>2]|0)+8|0;j=S;g=c[j+4>>2]|c[h+4>>2];f=S;c[f>>2]=c[j>>2]|c[h>>2];c[f+4>>2]=g;c[p>>2]=0;while(1){if((c[p>>2]|0)>=(e[N>>1]|0))break b;g=$E(1,0,c[p>>2]|0)|0;f=r;do if(!((g&c[f>>2]|0)!=0?1:(D&c[f+4>>2]|0)!=0)){c[_>>2]=c[(c[(c[F>>2]|0)+4>>2]|0)+((c[p>>2]|0)*20|0)>>2];g=pv((c[J>>2]|0)+68|0,c[_>>2]|0)|0;f=$;c[f>>2]=g;c[f+4>>2]=D;f=$;if((c[f>>2]|0)==0&(c[f+4>>2]|0)==0?(Vs(c[_>>2]|0)|0)==0:0)break;g=$;f=S;if((c[g>>2]&~c[f>>2]|0)==0?(c[g+4>>2]&~c[f+4>>2]|0)==0:0){h=$E(1,0,c[p>>2]|0)|0;j=r;g=c[j+4>>2]|D;f=r;c[f>>2]=c[j>>2]|h;c[f+4>>2]=g}}while(0);c[p>>2]=(c[p>>2]|0)+1}}while(0);c[O>>2]=(c[O>>2]|0)+1}if((n|0)==16){if(a[m+29>>0]|0){h=v;g=c[h+4>>2]|0;f=r;c[f>>2]=c[h>>2];c[f+4>>2]=g}}else if((n|0)==38){a[o>>0]=0;f=a[o>>0]|0;i=s;return f|0}g=r;f=v;if((c[g>>2]|0)==(c[f>>2]|0)?(c[g+4>>2]|0)==(c[f+4>>2]|0):0){a[o>>0]=b[N>>1];f=a[o>>0]|0;i=s;return f|0}if(a[u>>0]|0){a[o>>0]=-1;f=a[o>>0]|0;i=s;return f|0}c[p>>2]=(e[N>>1]|0)-1;while(1){if((c[p>>2]|0)<=0){n=106;break}g=$E(1,0,c[p>>2]|0)|0;g=ZE(g|0,D|0,1,0)|0;h=q;c[h>>2]=g;c[h+4>>2]=D;h=r;g=q;f=q;t=c[p>>2]|0;if((c[h>>2]&c[g>>2]|0)==(c[f>>2]|0)?(c[h+4>>2]&c[g+4>>2]|0)==(c[f+4>>2]|0):0){n=104;break}c[p>>2]=t+ -1}if((n|0)==104){a[o>>0]=t;f=a[o>>0]|0;i=s;return f|0}else if((n|0)==106){a[o>>0]=0;f=a[o>>0]|0;i=s;return f|0}return 0}function tv(a,d,f,g){a=a|0;d=d|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0;h=i;i=i+32|0;k=h+8|0;m=h+16|0;n=h+4|0;o=h;l=h+14|0;j=h+12|0;c[k>>2]=a;b[m>>1]=d;c[n>>2]=f;c[o>>2]=g;a=(((c[n>>2]|0)-(c[o>>2]|0)|0)*100|0)/(c[n>>2]|0)|0;b[l>>1]=((dq(a,((a|0)<0)<<31>>31)|0)<<16>>16)-66;a=b[m>>1]|0;a=a+((uv(b[m>>1]|0)|0)<<16>>16)|0;b[j>>1]=a+(b[l>>1]|0)+16;if(!(e[(c[k>>2]|0)+34>>1]&1024)){o=b[j>>1]|0;i=h;return o|0}b[j>>1]=(b[j>>1]|0)+16;o=b[j>>1]|0;i=h;return o|0}function uv(a){a=a|0;var c=0,d=0;c=i;i=i+16|0;d=c;b[d>>1]=a;if((b[d>>1]|0)<=10){d=0;d=d&65535;i=c;return d|0}d=b[d>>1]|0;d=((dq(d,((d|0)<0)<<31>>31)|0)<<16>>16)-33|0;d=d&65535;i=c;return d|0}function vv(f,g,j){f=f|0;g=g|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;y=i;i=i+112|0;H=y+8|0;m=y+96|0;r=y+92|0;k=y;J=y+88|0;z=y+84|0;C=y+80|0;I=y+76|0;A=y+72|0;n=y+68|0;o=y+64|0;x=y+60|0;v=y+56|0;D=y+52|0;t=y+48|0;B=y+44|0;w=y+40|0;s=y+36|0;u=y+32|0;F=y+28|0;G=y+24|0;E=y+20|0;q=y+16|0;p=y+12|0;c[r>>2]=f;f=k;c[f>>2]=g;c[f+4>>2]=j;c[F>>2]=0;c[G>>2]=0;c[p>>2]=0;c[J>>2]=c[c[r>>2]>>2];c[z>>2]=c[c[J>>2]>>2];c[n>>2]=c[c[z>>2]>>2];c[C>>2]=c[(c[r>>2]|0)+4>>2];c[q>>2]=c[(c[r>>2]|0)+12>>2];c[I>>2]=(c[(c[J>>2]|0)+4>>2]|0)+8+((d[(c[q>>2]|0)+16>>0]|0)*72|0);c[A>>2]=c[(c[I>>2]|0)+16>>2];c[o>>2]=Nv(c[z>>2]|0,c[C>>2]|0,c[I>>2]|0,c[(c[r>>2]|0)+8>>2]|0)|0;if(!(c[o>>2]|0)){c[m>>2]=7;J=c[m>>2]|0;i=y;return J|0}J=c[q>>2]|0;c[J>>2]=0;c[J+4>>2]=0;b[(c[q>>2]|0)+18>>1]=0;c[(c[q>>2]|0)+36>>2]=1024;b[(c[q>>2]|0)+40>>1]=0;a[(c[q>>2]|0)+28>>0]=0;c[v>>2]=c[(c[o>>2]|0)+16>>2];c[u>>2]=c[c[o>>2]>>2];if(nv(c[n>>2]|0,c[q>>2]|0,c[u>>2]|0)|0){Xb(c[n>>2]|0,c[o>>2]|0);c[m>>2]=7;J=c[m>>2]|0;i=y;return J|0}c[E>>2]=0;a:while(1){if((c[E>>2]|0)>3)break;if(((c[F>>2]|0)==0?(c[E>>2]&1|0)!=0:0)?(c[E>>2]=(c[E>>2]|0)+1,(c[E>>2]|0)>3):0)break;if((c[G>>2]|0)==0&(c[E>>2]|0)>1)break;c[x>>2]=c[(c[o>>2]|0)+4>>2];c[t>>2]=0;while(1){if((c[t>>2]|0)>=(c[c[o>>2]>>2]|0))break;c[B>>2]=c[(c[x>>2]|0)+8>>2];c[D>>2]=(c[(c[C>>2]|0)+20>>2]|0)+((c[B>>2]|0)*48|0);j=c[E>>2]|0;do if((j|0)==2)a[(c[x>>2]|0)+5>>0]=(e[(c[D>>2]|0)+18>>1]&1|0)==0;else if((j|0)==1){J=(c[D>>2]|0)+32|0;a[(c[x>>2]|0)+5>>0]=(c[J>>2]|0)==0&(c[J+4>>2]|0)==0&1}else if(!j){a[(c[x>>2]|0)+5>>0]=0;if(e[(c[D>>2]|0)+18>>1]&1)c[F>>2]=1;J=(c[D>>2]|0)+32|0;if((c[J>>2]|0)!=0|(c[J+4>>2]|0)!=0){c[G>>2]=1;break}if(!(e[(c[D>>2]|0)+18>>1]&1))a[(c[x>>2]|0)+5>>0]=1}else a[(c[x>>2]|0)+5>>0]=1;while(0);c[t>>2]=(c[t>>2]|0)+1;c[x>>2]=(c[x>>2]|0)+12}_E(c[v>>2]|0,0,c[c[o>>2]>>2]<<3|0)|0;if(c[(c[o>>2]|0)+28>>2]|0)hc(c[(c[o>>2]|0)+24>>2]|0);c[(c[o>>2]|0)+24>>2]=0;c[(c[o>>2]|0)+20>>2]=0;c[(c[o>>2]|0)+28>>2]=0;c[(c[o>>2]|0)+32>>2]=0;h[(c[o>>2]|0)+40>>3]=5.0e+98;J=(c[o>>2]|0)+48|0;c[J>>2]=25;c[J+4>>2]=0;c[p>>2]=Ov(c[z>>2]|0,c[A>>2]|0,c[o>>2]|0)|0;if(c[p>>2]|0)break;c[x>>2]=c[(c[o>>2]|0)+4>>2];f=k;I=c[f+4>>2]|0;J=c[q>>2]|0;c[J>>2]=c[f>>2];c[J+4>>2]=I;c[s>>2]=-1;c[t>>2]=0;while(1){if((c[t>>2]|0)>=(c[u>>2]|0))break;c[(c[(c[q>>2]|0)+44>>2]|0)+(c[t>>2]<<2)>>2]=0;c[t>>2]=(c[t>>2]|0)+1}b[(c[q>>2]|0)+30>>1]=0;c[t>>2]=0;while(1){if((c[t>>2]|0)>=(c[u>>2]|0))break;J=(c[(c[v>>2]|0)+(c[t>>2]<<3)>>2]|0)-1|0;c[w>>2]=J;if((J|0)>=0){c[B>>2]=c[(c[x>>2]|0)+8>>2];if((c[B>>2]|0)<0?1:(c[w>>2]|0)>=(c[u>>2]|0)){l=36;break a}if((c[B>>2]|0)>=(c[(c[C>>2]|0)+12>>2]|0)){l=36;break a}if(c[(c[(c[q>>2]|0)+44>>2]|0)+(c[w>>2]<<2)>>2]|0){l=36;break a}c[D>>2]=(c[(c[C>>2]|0)+20>>2]|0)+((c[B>>2]|0)*48|0);f=(c[D>>2]|0)+32|0;J=c[q>>2]|0;g=J;I=c[g+4>>2]|c[f+4>>2];c[J>>2]=c[g>>2]|c[f>>2];c[J+4>>2]=I;c[(c[(c[q>>2]|0)+44>>2]|0)+(c[w>>2]<<2)>>2]=c[D>>2];if((c[w>>2]|0)>(c[s>>2]|0))c[s>>2]=c[w>>2];if((c[w>>2]|0)<16?(d[(c[v>>2]|0)+(c[t>>2]<<3)+4>>0]|0)!=0:0){J=(c[q>>2]|0)+30|0;b[J>>1]=e[J>>1]|1<>2]}if(e[(c[D>>2]|0)+18>>1]&1){if(!(d[(c[v>>2]|0)+(c[t>>2]<<3)+4>>0]|0))break;c[(c[o>>2]|0)+32>>2]=0}}c[t>>2]=(c[t>>2]|0)+1;c[x>>2]=(c[x>>2]|0)+12}if((c[t>>2]|0)>=(c[u>>2]|0)){b[(c[q>>2]|0)+40>>1]=(c[s>>2]|0)+1;c[(c[q>>2]|0)+24>>2]=c[(c[o>>2]|0)+20>>2];a[(c[q>>2]|0)+28>>0]=c[(c[o>>2]|0)+28>>2];c[(c[o>>2]|0)+28>>2]=0;c[(c[q>>2]|0)+32>>2]=c[(c[o>>2]|0)+24>>2];if(c[(c[o>>2]|0)+32>>2]|0)j=c[(c[o>>2]|0)+8>>2]|0;else j=0;a[(c[q>>2]|0)+29>>0]=j;b[(c[q>>2]|0)+18>>1]=0;J=Pv(+h[(c[o>>2]|0)+40>>3])|0;b[(c[q>>2]|0)+20>>1]=J;J=(c[o>>2]|0)+48|0;J=dq(c[J>>2]|0,c[J+4>>2]|0)|0;b[(c[q>>2]|0)+22>>1]=J;Av(c[r>>2]|0,c[q>>2]|0)|0;if(a[(c[q>>2]|0)+28>>0]|0){hc(c[(c[q>>2]|0)+32>>2]|0);a[(c[q>>2]|0)+28>>0]=0}}c[E>>2]=(c[E>>2]|0)+1}if((l|0)==36){c[p>>2]=1;J=c[z>>2]|0;c[H>>2]=c[c[A>>2]>>2];Se(J,24088,H)}if(c[(c[o>>2]|0)+28>>2]|0)hc(c[(c[o>>2]|0)+24>>2]|0);Xb(c[n>>2]|0,c[o>>2]|0);c[m>>2]=c[p>>2];J=c[m>>2]|0;i=y;return J|0}function wv(f,g,h){f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,E=0,F=0;k=i;i=i+144|0;n=k+128|0;m=k+8|0;r=k+124|0;v=k+120|0;A=k+64|0;C=k+140|0;B=k+136|0;F=k+56|0;o=k+52|0;z=k+48|0;j=k+44|0;s=k+40|0;p=k+36|0;t=k+134|0;x=k+132|0;q=k+32|0;u=k+28|0;E=k+24|0;w=k+20|0;y=k+16|0;l=k;c[n>>2]=f;f=m;c[f>>2]=g;c[f+4>>2]=h;b[B>>1]=-1;c[j>>2]=0;c[s>>2]=1;c[z>>2]=c[(c[n>>2]|0)+12>>2];c[r>>2]=c[c[n>>2]>>2];c[F>>2]=c[(c[r>>2]|0)+4>>2];c[o>>2]=(c[F>>2]|0)+8+((d[(c[z>>2]|0)+16>>0]|0)*72|0);c[u>>2]=c[(c[o>>2]|0)+16>>2];c[q>>2]=c[(c[n>>2]|0)+4>>2];do if(c[(c[o>>2]|0)+68>>2]|0)c[v>>2]=c[(c[o>>2]|0)+68>>2];else{if(d[(c[u>>2]|0)+44>>0]&32){c[v>>2]=c[(c[u>>2]|0)+8>>2];break}g=A+0|0;h=g+56|0;do{c[g>>2]=0;g=g+4|0}while((g|0)<(h|0));b[A+50>>1]=1;b[A+52>>1]=1;c[A+4>>2]=B;c[A+8>>2]=C;a[A+54>>0]=5;c[A+12>>2]=c[u>>2];b[A+48>>1]=b[(c[u>>2]|0)+42>>1]|0;b[C>>1]=b[(c[u>>2]|0)+28>>1]|0;b[C+2>>1]=0;c[E>>2]=c[(c[(c[o>>2]|0)+16>>2]|0)+8>>2];if(!(a[(c[o>>2]|0)+37>>0]&1))c[A+20>>2]=c[E>>2];c[v>>2]=A}while(0);b[t>>1]=b[(c[u>>2]|0)+28>>1]|0;b[x>>1]=uv(b[t>>1]|0)|0;a:do if((((((((c[(c[n>>2]|0)+16>>2]|0)==0?(c[(c[c[c[r>>2]>>2]>>2]|0)+24>>2]&1048576|0)!=0:0)?(c[(c[o>>2]|0)+68>>2]|0)==0:0)?((d[(c[o>>2]|0)+37>>0]|0)>>>2&1|0)==0:0)?(a[(c[o>>2]|0)+37>>0]&1|0)==0:0)?(d[(c[u>>2]|0)+44>>0]&32|0)==0:0)?((d[(c[o>>2]|0)+37>>0]|0)>>>1&1|0)==0:0)?((d[(c[o>>2]|0)+37>>0]|0)>>>3&1|0)==0:0){c[y>>2]=(c[(c[q>>2]|0)+20>>2]|0)+((c[(c[q>>2]|0)+12>>2]|0)*48|0);c[w>>2]=c[(c[q>>2]|0)+20>>2];while(1){if(c[j>>2]|0)break a;if((c[w>>2]|0)>>>0>=(c[y>>2]|0)>>>0)break a;f=(c[w>>2]|0)+32|0;F=(c[z>>2]|0)+8|0;if(!((c[f>>2]&c[F>>2]|0)!=0?1:(c[f+4>>2]&c[F+4>>2]|0)!=0)?(mv(c[w>>2]|0,c[o>>2]|0,0,0)|0)!=0:0){b[(c[z>>2]|0)+24>>1]=1;b[(c[z>>2]|0)+26>>1]=0;c[(c[z>>2]|0)+28>>2]=0;b[(c[z>>2]|0)+40>>1]=1;c[c[(c[z>>2]|0)+44>>2]>>2]=c[w>>2];b[(c[z>>2]|0)+18>>1]=(b[x>>1]|0)+(b[t>>1]|0)+4;if((c[(c[u>>2]|0)+12>>2]|0)==0?(d[(c[u>>2]|0)+44>>0]&2|0)==0:0){F=(c[z>>2]|0)+18|0;b[F>>1]=(b[F>>1]|0)+24}b[(c[z>>2]|0)+22>>1]=43;h=rv(b[x>>1]|0,b[(c[z>>2]|0)+22>>1]|0)|0;b[(c[z>>2]|0)+20>>1]=h;c[(c[z>>2]|0)+36>>2]=16384;h=m;g=(c[w>>2]|0)+32|0;f=c[h+4>>2]|c[g+4>>2];F=c[z>>2]|0;c[F>>2]=c[h>>2]|c[g>>2];c[F+4>>2]=f;c[j>>2]=Av(c[n>>2]|0,c[z>>2]|0)|0}c[w>>2]=(c[w>>2]|0)+48}}while(0);b:while(1){if(!((c[j>>2]|0)==0&(c[v>>2]|0)!=0)){l=47;break}if(!((c[(c[v>>2]|0)+36>>2]|0)!=0?(Fv(c[(c[o>>2]|0)+40>>2]|0,c[q>>2]|0,c[(c[v>>2]|0)+36>>2]|0)|0)==0:0)){b[t>>1]=b[c[(c[v>>2]|0)+8>>2]>>1]|0;b[(c[z>>2]|0)+24>>1]=0;b[(c[z>>2]|0)+26>>1]=0;b[(c[z>>2]|0)+40>>1]=0;a[(c[z>>2]|0)+17>>0]=0;b[(c[z>>2]|0)+18>>1]=0;g=m;f=c[g+4>>2]|0;F=c[z>>2]|0;c[F>>2]=c[g>>2];c[F+4>>2]=f;b[(c[z>>2]|0)+22>>1]=b[t>>1]|0;c[(c[z>>2]|0)+28>>2]=c[v>>2];c[p>>2]=Gv(c[n>>2]|0,c[v>>2]|0,c[(c[o>>2]|0)+40>>2]|0)|0;do if((c[(c[v>>2]|0)+44>>2]|0)<=0){c[(c[z>>2]|0)+36>>2]=256;a[(c[z>>2]|0)+17>>0]=(c[p>>2]|0)!=0?c[s>>2]|0:0;b[(c[z>>2]|0)+20>>1]=(b[t>>1]|0)+16;Hv(c[q>>2]|0,c[z>>2]|0,b[t>>1]|0);c[j>>2]=Av(c[n>>2]|0,c[z>>2]|0)|0;b[(c[z>>2]|0)+22>>1]=b[t>>1]|0;if(c[j>>2]|0){l=47;break b}}else{if((d[(c[v>>2]|0)+55>>0]|0)>>>5&1){c[(c[z>>2]|0)+36>>2]=576;F=l;c[F>>2]=0;c[F+4>>2]=0}else{f=(c[o>>2]|0)+56|0;h=c[f>>2]|0;f=c[f+4>>2]|0;g=Iv(c[v>>2]|0)|0;F=l;c[F>>2]=h&~g;c[F+4>>2]=f&~D;F=l;c[(c[z>>2]|0)+36>>2]=(c[F>>2]|0)==0&(c[F+4>>2]|0)==0?576:512}if((c[p>>2]|0)==0?(d[(c[u>>2]|0)+44>>0]&32|0)==0:0){F=l;if(!((c[F>>2]|0)==0&(c[F+4>>2]|0)==0))break;if((d[(c[v>>2]|0)+55>>0]|0)>>>2&1)break;if((b[(c[v>>2]|0)+48>>1]|0)>=(b[(c[u>>2]|0)+42>>1]|0))break;if(e[(c[r>>2]|0)+34>>1]&4)break;if(!(c[9664]|0))break;if(e[(c[c[c[r>>2]>>2]>>2]|0)+60>>1]&64)break}a[(c[z>>2]|0)+17>>0]=(c[p>>2]|0)!=0?c[s>>2]|0:0;b[(c[z>>2]|0)+20>>1]=(b[t>>1]|0)+1+(((b[(c[v>>2]|0)+48>>1]|0)*15|0)/(b[(c[u>>2]|0)+42>>1]|0)|0);F=l;if((c[F>>2]|0)!=0|(c[F+4>>2]|0)!=0){F=rv(b[(c[z>>2]|0)+20>>1]|0,(b[t>>1]|0)+16&65535)|0;b[(c[z>>2]|0)+20>>1]=F}Hv(c[q>>2]|0,c[z>>2]|0,b[t>>1]|0);c[j>>2]=Av(c[n>>2]|0,c[z>>2]|0)|0;b[(c[z>>2]|0)+22>>1]=b[t>>1]|0;if(c[j>>2]|0){l=47;break b}}while(0);c[j>>2]=Jv(c[n>>2]|0,c[o>>2]|0,c[v>>2]|0,0)|0;if(c[(c[o>>2]|0)+68>>2]|0){l=47;break}}c[v>>2]=c[(c[v>>2]|0)+20>>2];c[s>>2]=(c[s>>2]|0)+1}if((l|0)==47){i=k;return c[j>>2]|0}return 0}function xv(f,g,h){f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;t=i;i=i+672|0;x=t+660|0;l=t+576|0;F=t+656|0;p=t+652|0;m=t+648|0;q=t+644|0;s=t+640|0;r=t+636|0;o=t+632|0;B=t+168|0;y=t+612|0;D=t+112|0;j=t+56|0;n=t+608|0;u=t+604|0;v=t+600|0;A=t+596|0;w=t+592|0;C=t+588|0;E=t+584|0;z=t;c[x>>2]=f;f=l;c[f>>2]=g;c[f+4>>2]=h;c[F>>2]=c[c[x>>2]>>2];c[r>>2]=0;c[p>>2]=c[(c[x>>2]|0)+4>>2];c[s>>2]=(c[(c[p>>2]|0)+20>>2]|0)+((c[(c[p>>2]|0)+12>>2]|0)*48|0);c[m>>2]=c[(c[x>>2]|0)+12>>2];g=D+0|0;h=g+56|0;do{c[g>>2]=0;g=g+4|0}while((g|0)<(h|0));c[n>>2]=(c[(c[F>>2]|0)+4>>2]|0)+8+((d[(c[m>>2]|0)+16>>0]|0)*72|0);c[o>>2]=c[(c[n>>2]|0)+40>>2];c[q>>2]=c[(c[p>>2]|0)+20>>2];while(1){if(!((c[r>>2]|0)==0?(c[q>>2]|0)>>>0<(c[s>>2]|0)>>>0:0))break;a:do if((e[(c[q>>2]|0)+18>>1]&256|0)!=0?(g=(c[(c[q>>2]|0)+12>>2]|0)+408|0,f=(c[m>>2]|0)+8|0,(c[g>>2]&c[f>>2]|0)!=0?1:(c[g+4>>2]&c[f+4>>2]|0)!=0):0){c[u>>2]=c[(c[q>>2]|0)+12>>2];c[v>>2]=(c[(c[u>>2]|0)+20>>2]|0)+((c[(c[u>>2]|0)+12>>2]|0)*48|0);c[w>>2]=1;f=c[x>>2]|0;c[y+0>>2]=c[f+0>>2];c[y+4>>2]=c[f+4>>2];c[y+8>>2]=c[f+8>>2];c[y+12>>2]=c[f+12>>2];c[y+16>>2]=c[f+16>>2];c[y+8>>2]=0;c[y+16>>2]=j;c[A>>2]=c[(c[u>>2]|0)+20>>2];b:while(1){if((c[A>>2]|0)>>>0>=(c[v>>2]|0)>>>0)break;F=c[A>>2]|0;if(!(e[(c[A>>2]|0)+18>>1]&512)){if((c[F+8>>2]|0)==(c[o>>2]|0)){c[B>>2]=c[c[p>>2]>>2];c[B+4>>2]=c[p>>2];a[B+8>>0]=72;c[B+12>>2]=1;c[B+20>>2]=c[A>>2];c[y+4>>2]=B;k=11}}else{c[y+4>>2]=c[F+12>>2];k=11}c:do if((k|0)==11){k=0;b[j>>1]=0;F=l;h=c[F>>2]|0;F=c[F+4>>2]|0;if(d[(c[(c[n>>2]|0)+16>>2]|0)+44>>0]&16)c[r>>2]=vv(y,h,F)|0;else c[r>>2]=wv(y,h,F)|0;if(!(c[r>>2]|0)){f=l;c[r>>2]=xv(y,c[f>>2]|0,c[f+4>>2]|0)|0}if(!(e[j>>1]|0)){k=17;break b}if(c[w>>2]|0){yv(D,j);c[w>>2]=0;break}yv(z,D);b[D>>1]=0;c[C>>2]=0;while(1){if((c[C>>2]|0)>=(e[z>>1]|0))break c;c[E>>2]=0;while(1){F=c[C>>2]|0;if((c[E>>2]|0)>=(e[j>>1]|0))break;f=z+8+(F<<4)|0;g=j+8+(c[E>>2]<<4)|0;h=c[f>>2]|c[g>>2];g=c[f+4>>2]|c[g+4>>2];f=rv(b[z+8+(c[C>>2]<<4)+8>>1]|0,b[j+8+(c[E>>2]<<4)+8>>1]|0)|0;zv(D,h,g,f,rv(b[z+8+(c[C>>2]<<4)+10>>1]|0,b[j+8+(c[E>>2]<<4)+10>>1]|0)|0)|0;c[E>>2]=(c[E>>2]|0)+1}c[C>>2]=F+1}}while(0);c[A>>2]=(c[A>>2]|0)+48}if((k|0)==17){k=0;b[D>>1]=0}b[(c[m>>2]|0)+40>>1]=1;c[c[(c[m>>2]|0)+44>>2]>>2]=c[q>>2];c[(c[m>>2]|0)+36>>2]=8192;b[(c[m>>2]|0)+18>>1]=0;a[(c[m>>2]|0)+17>>0]=0;f=(c[m>>2]|0)+24|0;c[f+0>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[C>>2]=0;while(1){if(c[r>>2]|0)break a;if((c[C>>2]|0)>=(e[D>>1]|0))break a;b[(c[m>>2]|0)+20>>1]=(b[D+8+(c[C>>2]<<4)+8>>1]|0)+1;b[(c[m>>2]|0)+22>>1]=b[D+8+(c[C>>2]<<4)+10>>1]|0;h=D+8+(c[C>>2]<<4)|0;g=c[h+4>>2]|0;f=c[m>>2]|0;c[f>>2]=c[h>>2];c[f+4>>2]=g;c[r>>2]=Av(c[x>>2]|0,c[m>>2]|0)|0;c[C>>2]=(c[C>>2]|0)+1}}while(0);c[q>>2]=(c[q>>2]|0)+48}i=t;return c[r>>2]|0}function yv(a,d){a=a|0;d=d|0;var f=0,g=0,h=0;f=i;i=i+16|0;g=f+4|0;h=f;c[g>>2]=a;c[h>>2]=d;b[c[g>>2]>>1]=b[c[h>>2]>>1]|0;dF((c[g>>2]|0)+8|0,(c[h>>2]|0)+8|0,(e[c[g>>2]>>1]|0)<<4|0)|0;i=f;return}function zv(a,d,f,g,h){a=a|0;d=d|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;k=i;i=i+32|0;q=k+16|0;p=k+12|0;n=k;o=k+24|0;l=k+22|0;j=k+20|0;m=k+8|0;c[p>>2]=a;a=n;c[a>>2]=d;c[a+4>>2]=f;b[o>>1]=g;b[l>>1]=h;b[j>>1]=b[c[p>>2]>>1]|0;c[m>>2]=(c[p>>2]|0)+8;while(1){if((e[j>>1]|0)<=0){r=9;break}if((b[o>>1]|0)<=(b[(c[m>>2]|0)+8>>1]|0)?(f=n,d=c[m>>2]|0,a=n,(c[f>>2]&c[d>>2]|0)==(c[a>>2]|0)?(c[f+4>>2]&c[d+4>>2]|0)==(c[a+4>>2]|0):0):0)break;if((b[(c[m>>2]|0)+8>>1]|0)<=(b[o>>1]|0)?(f=c[m>>2]|0,d=n,a=c[m>>2]|0,(c[f>>2]&c[d>>2]|0)==(c[a>>2]|0)?(c[f+4>>2]&c[d+4>>2]|0)==(c[a+4>>2]|0):0):0){r=7;break}b[j>>1]=(b[j>>1]|0)+ -1<<16>>16;c[m>>2]=(c[m>>2]|0)+16}if((r|0)==7){c[q>>2]=0;a=c[q>>2]|0;i=k;return a|0}do if((r|0)==9){r=c[p>>2]|0;if((e[c[p>>2]>>1]|0)<3){a=b[r>>1]|0;b[r>>1]=a+1<<16>>16;c[m>>2]=(c[p>>2]|0)+8+((a&65535)<<4);b[(c[m>>2]|0)+10>>1]=b[l>>1]|0;break}c[m>>2]=r+8;b[j>>1]=1;while(1){r=b[(c[m>>2]|0)+8>>1]|0;if((e[j>>1]|0)>=(e[c[p>>2]>>1]|0))break;if((r|0)>(b[(c[p>>2]|0)+8+(e[j>>1]<<4)+8>>1]|0))c[m>>2]=(c[p>>2]|0)+8+(e[j>>1]<<4);b[j>>1]=(b[j>>1]|0)+1<<16>>16}if((r|0)<=(b[o>>1]|0)){c[q>>2]=0;a=c[q>>2]|0;i=k;return a|0}}while(0);f=n;d=c[f+4>>2]|0;a=c[m>>2]|0;c[a>>2]=c[f>>2];c[a+4>>2]=d;b[(c[m>>2]|0)+8>>1]=b[o>>1]|0;if((b[(c[m>>2]|0)+10>>1]|0)>(b[l>>1]|0))b[(c[m>>2]|0)+10>>1]=b[l>>1]|0;c[q>>2]=1;a=c[q>>2]|0;i=k;return a|0}function Av(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;k=i;i=i+48|0;f=k+36|0;h=k+32|0;g=k+28|0;l=k+24|0;e=k+20|0;p=k+16|0;j=k+12|0;n=k+8|0;o=k+4|0;m=k;c[h>>2]=a;c[g>>2]=d;c[p>>2]=c[c[h>>2]>>2];c[j>>2]=c[c[c[p>>2]>>2]>>2];if(c[(c[h>>2]|0)+16>>2]|0){a=c[g>>2]|0;zv(c[(c[h>>2]|0)+16>>2]|0,c[a>>2]|0,c[a+4>>2]|0,b[(c[g>>2]|0)+20>>1]|0,b[(c[g>>2]|0)+22>>1]|0)|0;c[f>>2]=0;a=c[f>>2]|0;i=k;return a|0}Bv(c[(c[p>>2]|0)+16>>2]|0,c[g>>2]|0);c[l>>2]=Cv((c[p>>2]|0)+16|0,c[g>>2]|0)|0;if(!(c[l>>2]|0)){c[f>>2]=0;a=c[f>>2]|0;i=k;return a|0}c[e>>2]=c[c[l>>2]>>2];a:do if(!(c[e>>2]|0)){a=Qe(c[j>>2]|0,72,0)|0;c[e>>2]=a;c[c[l>>2]>>2]=a;if(c[e>>2]|0){Ou(c[e>>2]|0);c[(c[e>>2]|0)+48>>2]=0;break}c[f>>2]=7;a=c[f>>2]|0;i=k;return a|0}else{c[n>>2]=(c[e>>2]|0)+48;while(1){if(!(c[c[n>>2]>>2]|0))break a;c[n>>2]=Cv(c[n>>2]|0,c[g>>2]|0)|0;if(!(c[n>>2]|0))break a;c[o>>2]=c[c[n>>2]>>2];if(!(c[o>>2]|0))break a;c[c[n>>2]>>2]=c[(c[o>>2]|0)+48>>2];Lu(c[j>>2]|0,c[o>>2]|0)}}while(0);Dv(c[j>>2]|0,c[e>>2]|0,c[g>>2]|0)|0;if(((c[(c[e>>2]|0)+36>>2]&1024|0)==0?(c[m>>2]=c[(c[e>>2]|0)+28>>2],(c[m>>2]|0)!=0):0)?(c[(c[m>>2]|0)+44>>2]|0)==0:0)c[(c[e>>2]|0)+28>>2]=0;c[f>>2]=0;a=c[f>>2]|0;i=k;return a|0}function Bv(a,e){a=a|0;e=e|0;var f=0,g=0,h=0;f=i;i=i+16|0;g=f+4|0;h=f;c[g>>2]=a;c[h>>2]=e;if(!(c[(c[h>>2]|0)+36>>2]&512)){i=f;return}if(!((c[g>>2]|0)!=0?(c[(c[h>>2]|0)+36>>2]&32768|0)==0:0)){i=f;return}do{do if(((d[(c[g>>2]|0)+16>>0]|0)==(d[(c[h>>2]|0)+16>>0]|0)?(c[(c[g>>2]|0)+36>>2]&512|0)!=0:0)?(c[(c[g>>2]|0)+36>>2]&32768|0)==0:0){if(Ev(c[g>>2]|0,c[h>>2]|0)|0){b[(c[h>>2]|0)+20>>1]=b[(c[g>>2]|0)+20>>1]|0;b[(c[h>>2]|0)+22>>1]=(b[(c[g>>2]|0)+22>>1]|0)-1;break}if(Ev(c[h>>2]|0,c[g>>2]|0)|0){b[(c[h>>2]|0)+20>>1]=b[(c[g>>2]|0)+20>>1]|0;b[(c[h>>2]|0)+22>>1]=(b[(c[g>>2]|0)+22>>1]|0)+1}}while(0);c[g>>2]=c[(c[g>>2]|0)+48>>2]}while((c[g>>2]|0)!=0);i=f;return}function Cv(a,e){a=a|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;h=i;i=i+16|0;g=h+12|0;f=h+8|0;k=h+4|0;j=h;c[f>>2]=a;c[k>>2]=e;c[j>>2]=c[c[f>>2]>>2];while(1){if(!(c[j>>2]|0)){e=18;break}if((d[(c[j>>2]|0)+16>>0]|0)==(d[(c[k>>2]|0)+16>>0]|0)?(d[(c[j>>2]|0)+17>>0]|0)==(d[(c[k>>2]|0)+17>>0]|0):0){if((((c[(c[j>>2]|0)+36>>2]&16384|0)!=0?(c[(c[k>>2]|0)+36>>2]&512|0)!=0:0)?(c[(c[k>>2]|0)+36>>2]&1|0)!=0:0)?(l=c[j>>2]|0,e=c[k>>2]|0,a=c[k>>2]|0,(c[l>>2]&c[e>>2]|0)==(c[a>>2]|0)?(c[l+4>>2]&c[e+4>>2]|0)==(c[a+4>>2]|0):0):0){e=18;break}e=c[j>>2]|0;a=c[k>>2]|0;l=c[j>>2]|0;if(((((c[e>>2]&c[a>>2]|0)==(c[l>>2]|0)?(c[e+4>>2]&c[a+4>>2]|0)==(c[l+4>>2]|0):0)?(b[(c[j>>2]|0)+18>>1]|0)<=(b[(c[k>>2]|0)+18>>1]|0):0)?(b[(c[j>>2]|0)+20>>1]|0)<=(b[(c[k>>2]|0)+20>>1]|0):0)?(b[(c[j>>2]|0)+22>>1]|0)<=(b[(c[k>>2]|0)+22>>1]|0):0){e=13;break}e=c[j>>2]|0;a=c[k>>2]|0;l=c[k>>2]|0;if((((c[e>>2]&c[a>>2]|0)==(c[l>>2]|0)?(c[e+4>>2]&c[a+4>>2]|0)==(c[l+4>>2]|0):0)?(b[(c[j>>2]|0)+20>>1]|0)>=(b[(c[k>>2]|0)+20>>1]|0):0)?(b[(c[j>>2]|0)+22>>1]|0)>=(b[(c[k>>2]|0)+22>>1]|0):0){e=18;break}}c[f>>2]=(c[j>>2]|0)+48;c[j>>2]=c[c[f>>2]>>2]}if((e|0)==13){c[g>>2]=0;l=c[g>>2]|0;i=h;return l|0}else if((e|0)==18){c[g>>2]=c[f>>2];l=c[g>>2]|0;i=h;return l|0}return 0}function Dv(d,f,g){d=d|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0;k=i;i=i+16|0;h=k+12|0;n=k+8|0;l=k+4|0;j=k;c[n>>2]=d;c[l>>2]=f;c[j>>2]=g;Nu(c[n>>2]|0,c[l>>2]|0);n=(nv(c[n>>2]|0,c[l>>2]|0,e[(c[j>>2]|0)+40>>1]|0)|0)!=0;d=c[l>>2]|0;if(n){n=d+24|0;c[n+0>>2]=0;c[n+4>>2]=0;c[n+8>>2]=0;c[h>>2]=7;n=c[h>>2]|0;i=k;return n|0}f=c[j>>2]|0;n=d+0|0;m=f+0|0;g=n+40|0;do{c[n>>2]=c[m>>2];n=n+4|0;m=m+4|0}while((n|0)<(g|0));b[d+40>>1]=b[f+40>>1]|0;dF(c[(c[l>>2]|0)+44>>2]|0,c[(c[j>>2]|0)+44>>2]|0,(e[(c[l>>2]|0)+40>>1]|0)<<2|0)|0;l=c[j>>2]|0;if(!(c[(c[j>>2]|0)+36>>2]&1024)){if(c[l+36>>2]&16384)c[(c[j>>2]|0)+28>>2]=0}else a[l+28>>0]=0;c[h>>2]=0;n=c[h>>2]|0;i=k;return n|0}function Ev(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,j=0,k=0,l=0;f=i;i=i+32|0;g=f+16|0;h=f+12|0;k=f+8|0;j=f+4|0;l=f;c[h>>2]=a;c[k>>2]=d;if((e[(c[h>>2]|0)+40>>1]|0)>=(e[(c[k>>2]|0)+40>>1]|0)){c[g>>2]=0;a=c[g>>2]|0;i=f;return a|0}if((b[(c[h>>2]|0)+20>>1]|0)>=(b[(c[k>>2]|0)+20>>1]|0)){if((b[(c[h>>2]|0)+20>>1]|0)>(b[(c[k>>2]|0)+20>>1]|0)){c[g>>2]=0;a=c[g>>2]|0;i=f;return a|0}if((b[(c[h>>2]|0)+22>>1]|0)>(b[(c[k>>2]|0)+22>>1]|0)){c[g>>2]=0;a=c[g>>2]|0;i=f;return a|0}}c[j>>2]=(e[(c[h>>2]|0)+40>>1]|0)-1;while(1){if((c[j>>2]|0)<0){d=17;break}c[l>>2]=(e[(c[k>>2]|0)+40>>1]|0)-1;while(1){if((c[l>>2]|0)<0)break;if((c[(c[(c[k>>2]|0)+44>>2]|0)+(c[l>>2]<<2)>>2]|0)==(c[(c[(c[h>>2]|0)+44>>2]|0)+(c[j>>2]<<2)>>2]|0))break;c[l>>2]=(c[l>>2]|0)+ -1}if((c[l>>2]|0)<0){d=15;break}c[j>>2]=(c[j>>2]|0)+ -1}if((d|0)==15){c[g>>2]=0;a=c[g>>2]|0;i=f;return a|0}else if((d|0)==17){c[g>>2]=1;a=c[g>>2]|0;i=f;return a|0}return 0}function Fv(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;e=i;i=i+32|0;f=e+20|0;g=e+16|0;l=e+12|0;j=e+8|0;k=e+4|0;h=e;c[g>>2]=a;c[l>>2]=b;c[j>>2]=d;c[k>>2]=0;c[h>>2]=c[(c[l>>2]|0)+20>>2];while(1){if((c[k>>2]|0)>=(c[(c[l>>2]|0)+12>>2]|0)){g=6;break}if(Mv(c[c[h>>2]>>2]|0,c[j>>2]|0,c[g>>2]|0)|0){g=4;break}c[k>>2]=(c[k>>2]|0)+1;c[h>>2]=(c[h>>2]|0)+48}if((g|0)==4){c[f>>2]=1;a=c[f>>2]|0;i=e;return a|0}else if((g|0)==6){c[f>>2]=0;a=c[f>>2]|0;i=e;return a|0}return 0}function Gv(a,f,g){a=a|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;j=i;i=i+32|0;h=j+28|0;q=j+24|0;m=j+20|0;k=j+16|0;o=j+12|0;p=j+8|0;l=j+4|0;n=j;c[q>>2]=a;c[m>>2]=f;c[k>>2]=g;if((d[(c[m>>2]|0)+55>>0]|0)>>>2&1){c[h>>2]=0;a=c[h>>2]|0;i=j;return a|0}a=c[(c[c[q>>2]>>2]|0)+8>>2]|0;c[o>>2]=a;if(!a){c[h>>2]=0;a=c[h>>2]|0;i=j;return a|0}c[p>>2]=0;a:while(1){if((c[p>>2]|0)>=(c[c[o>>2]>>2]|0)){k=18;break}c[n>>2]=iq(c[(c[(c[o>>2]|0)+4>>2]|0)+((c[p>>2]|0)*20|0)>>2]|0)|0;if((d[c[n>>2]>>0]|0)!=154){k=8;break}b:do if((c[(c[n>>2]|0)+28>>2]|0)==(c[k>>2]|0)){if((b[(c[n>>2]|0)+32>>1]|0)<0){k=11;break a}c[l>>2]=0;while(1){if((c[l>>2]|0)>=(e[(c[m>>2]|0)+50>>1]|0))break b;if((b[(c[n>>2]|0)+32>>1]|0)==(b[(c[(c[m>>2]|0)+4>>2]|0)+(c[l>>2]<<1)>>1]|0)){k=15;break a}c[l>>2]=(c[l>>2]|0)+1}}while(0);c[p>>2]=(c[p>>2]|0)+1}if((k|0)==8){c[h>>2]=0;a=c[h>>2]|0;i=j;return a|0}else if((k|0)==11){c[h>>2]=1;a=c[h>>2]|0;i=j;return a|0}else if((k|0)==15){c[h>>2]=1;a=c[h>>2]|0;i=j;return a|0}else if((k|0)==18){c[h>>2]=0;a=c[h>>2]|0;i=j;return a|0}return 0}function Hv(a,f,g){a=a|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;n=i;i=i+48|0;p=n+32|0;j=n+28|0;k=n+36|0;m=n+24|0;o=n+20|0;q=n;r=n+16|0;h=n+12|0;l=n+8|0;c[p>>2]=a;c[j>>2]=f;b[k>>1]=g;s=c[j>>2]|0;g=(c[j>>2]|0)+8|0;f=~(c[s+4>>2]|c[g+4>>2]);a=q;c[a>>2]=~(c[s>>2]|c[g>>2]);c[a+4>>2]=f;c[l>>2]=0;c[r>>2]=c[(c[p>>2]|0)+12>>2];c[m>>2]=c[(c[p>>2]|0)+20>>2];while(1){if((c[r>>2]|0)<=0)break;if(d[(c[m>>2]|0)+20>>0]&2)break;a=(c[m>>2]|0)+40|0;s=(c[j>>2]|0)+8|0;do if(!((c[a>>2]&c[s>>2]|0)==0?(c[a+4>>2]&c[s+4>>2]|0)==0:0)?(a=(c[m>>2]|0)+40|0,s=q,!((c[a>>2]&c[s>>2]|0)!=0?1:(c[a+4>>2]&c[s+4>>2]|0)!=0)):0){c[h>>2]=(e[(c[j>>2]|0)+40>>1]|0)-1;while(1){if((c[h>>2]|0)<0)break;c[o>>2]=c[(c[(c[j>>2]|0)+44>>2]|0)+(c[h>>2]<<2)>>2];if(c[o>>2]|0){if((c[o>>2]|0)==(c[m>>2]|0))break;if((c[(c[o>>2]|0)+4>>2]|0)>=0?((c[(c[p>>2]|0)+20>>2]|0)+((c[(c[o>>2]|0)+4>>2]|0)*48|0)|0)==(c[m>>2]|0):0)break}c[h>>2]=(c[h>>2]|0)+ -1}if((c[h>>2]|0)<0){if((b[(c[m>>2]|0)+16>>1]|0)<=0){s=(c[j>>2]|0)+22|0;b[s>>1]=(b[s>>1]|0)+(b[(c[m>>2]|0)+16>>1]|0);break}s=(c[j>>2]|0)+22|0;b[s>>1]=(b[s>>1]|0)+ -1<<16>>16;if(e[(c[m>>2]|0)+18>>1]&2)c[l>>2]=(c[l>>2]|0)+1}}while(0);c[r>>2]=(c[r>>2]|0)+ -1;c[m>>2]=(c[m>>2]|0)+48}if(!(c[l>>2]|0)){i=n;return}if((b[(c[j>>2]|0)+22>>1]|0)<=((b[k>>1]|0)-10|0)){i=n;return}b[(c[j>>2]|0)+22>>1]=(b[k>>1]|0)-10;i=n;return}function Iv(a){a=a|0;var d=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;f=i;i=i+32|0;g=f+16|0;d=f;h=f+12|0;j=f+8|0;c[g>>2]=a;a=d;c[a>>2]=0;c[a+4>>2]=0;c[h>>2]=(e[(c[g>>2]|0)+52>>1]|0)-1;while(1){if((c[h>>2]|0)<0)break;c[j>>2]=b[(c[(c[g>>2]|0)+4>>2]|0)+(c[h>>2]<<1)>>1];if((c[j>>2]|0)>=0&(c[j>>2]|0)<63){l=$E(1,0,c[j>>2]|0)|0;m=d;k=c[m+4>>2]|D;a=d;c[a>>2]=c[m>>2]|l;c[a+4>>2]=k}c[h>>2]=(c[h>>2]|0)+ -1}m=d;D=c[m+4>>2]|0;i=f;return c[m>>2]|0}function Jv(f,g,h,j){f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0;C=i;i=i+224|0;y=C+188|0;k=C+184|0;F=C+180|0;D=C+176|0;E=C+212|0;P=C+172|0;x=C+168|0;J=C+164|0;n=C+160|0;w=C+156|0;O=C+152|0;K=C+40|0;m=C;s=C+210|0;o=C+208|0;p=C+206|0;q=C+36|0;r=C+204|0;v=C+32|0;t=C+28|0;M=C+202|0;H=C+200|0;A=C+24|0;z=C+20|0;N=C+198|0;I=C+196|0;G=C+194|0;L=C+192|0;B=C+16|0;l=C+12|0;u=C+8|0;c[k>>2]=f;c[F>>2]=g;c[D>>2]=h;b[E>>1]=j;c[P>>2]=c[c[k>>2]>>2];c[x>>2]=c[c[P>>2]>>2];c[J>>2]=c[c[x>>2]>>2];c[t>>2]=0;c[A>>2]=0;c[z>>2]=0;c[n>>2]=c[(c[k>>2]|0)+12>>2];if(a[(c[J>>2]|0)+64>>0]|0){c[y>>2]=7;P=c[y>>2]|0;i=C;return P|0}do if(c[(c[n>>2]|0)+36>>2]&32)c[O>>2]=24;else{if((c[(c[D>>2]|0)+44>>2]|0)>0?(d[(c[F>>2]|0)+36>>0]&8|0)==0:0){c[O>>2]=191;break}c[O>>2]=63}while(0);if((d[(c[D>>2]|0)+55>>0]|0)>>>2&1)c[O>>2]=c[O>>2]&-61;c[v>>2]=b[(c[(c[D>>2]|0)+4>>2]|0)+(e[(c[n>>2]|0)+24>>1]<<1)>>1];c[w>>2]=iv(K,c[(c[k>>2]|0)+4>>2]|0,c[(c[F>>2]|0)+40>>2]|0,c[v>>2]|0,c[O>>2]|0,c[D>>2]|0)|0;b[o>>1]=b[(c[n>>2]|0)+24>>1]|0;b[p>>1]=b[(c[n>>2]|0)+26>>1]|0;b[s>>1]=b[(c[n>>2]|0)+40>>1]|0;c[q>>2]=c[(c[n>>2]|0)+36>>2];g=c[n>>2]|0;f=c[g+4>>2]|0;P=m;c[P>>2]=c[g>>2];c[P+4>>2]=f;b[r>>1]=b[(c[n>>2]|0)+22>>1]|0;b[(c[n>>2]|0)+18>>1]=0;b[M>>1]=b[c[(c[D>>2]|0)+8>>2]>>1]|0;b[H>>1]=uv(b[M>>1]|0)|0;if((((e[o>>1]|0)==(e[p>>1]|0)?((e[o>>1]|0)+1|0)<(e[(c[D>>2]|0)+50>>1]|0):0)?(b[(c[(c[D>>2]|0)+8>>2]|0)+((e[o>>1]|0)+1<<1)>>1]|0)>=42:0)?(P=nv(c[J>>2]|0,c[n>>2]|0,(e[(c[n>>2]|0)+40>>1]|0)+1|0)|0,c[t>>2]=P,(P|0)==0):0){f=(c[n>>2]|0)+24|0;b[f>>1]=(b[f>>1]|0)+1<<16>>16;f=(c[n>>2]|0)+26|0;b[f>>1]=(b[f>>1]|0)+1<<16>>16;f=(c[n>>2]|0)+40|0;P=b[f>>1]|0;b[f>>1]=P+1<<16>>16;c[(c[(c[n>>2]|0)+44>>2]|0)+((P&65535)<<2)>>2]=0;P=(c[n>>2]|0)+36|0;c[P>>2]=c[P>>2]|32768;b[N>>1]=(b[(c[(c[D>>2]|0)+8>>2]|0)+(e[o>>1]<<1)>>1]|0)-(b[(c[(c[D>>2]|0)+8>>2]|0)+((e[o>>1]|0)+1<<1)>>1]|0);if(c[w>>2]|0)b[N>>1]=(b[N>>1]|0)+10;P=(c[n>>2]|0)+22|0;b[P>>1]=(b[P>>1]|0)-(b[N>>1]|0);b[N>>1]=(b[N>>1]|0)+5;Jv(c[k>>2]|0,c[F>>2]|0,c[D>>2]|0,(b[N>>1]|0)+(b[E>>1]|0)&65535)|0;b[(c[n>>2]|0)+22>>1]=b[r>>1]|0;b[(c[n>>2]|0)+24>>1]=b[o>>1]|0;b[(c[n>>2]|0)+26>>1]=b[p>>1]|0}while(1){if(!((c[t>>2]|0)==0&(c[w>>2]|0)!=0))break;b[I>>1]=b[(c[w>>2]|0)+18>>1]|0;c[B>>2]=0;if((e[I>>1]|0)!=128?(d[(c[w>>2]|0)+20>>0]&0|0)==0:0)j=23;else j=21;if(((j|0)==21?(j=0,(c[v>>2]|0)>=0):0)?(d[(c[(c[(c[F>>2]|0)+16>>2]|0)+4>>2]|0)+((c[v>>2]|0)*24|0)+20>>0]|0)==0:0)j=23;if((j|0)==23?(0,f=(c[w>>2]|0)+32|0,P=(c[n>>2]|0)+8|0,!((c[f>>2]&c[P>>2]|0)!=0?1:(c[f+4>>2]&c[P+4>>2]|0)!=0)):0){c[(c[n>>2]|0)+36>>2]=c[q>>2];b[(c[n>>2]|0)+24>>1]=b[o>>1]|0;b[(c[n>>2]|0)+40>>1]=b[s>>1]|0;if(nv(c[J>>2]|0,c[n>>2]|0,(e[(c[n>>2]|0)+40>>1]|0)+1|0)|0)break;h=c[w>>2]|0;g=(c[n>>2]|0)+40|0;O=b[g>>1]|0;b[g>>1]=O+1<<16>>16;c[(c[(c[n>>2]|0)+44>>2]|0)+((O&65535)<<2)>>2]=h;O=m;h=(c[w>>2]|0)+32|0;g=(c[n>>2]|0)+8|0;f=(c[O+4>>2]|c[h+4>>2])&~c[g+4>>2];P=c[n>>2]|0;c[P>>2]=(c[O>>2]|c[h>>2])&~c[g>>2];c[P+4>>2]=f;do if(e[I>>1]&1){c[l>>2]=c[c[w>>2]>>2];P=(c[n>>2]|0)+36|0;c[P>>2]=c[P>>2]|4;if(c[(c[l>>2]|0)+4>>2]&2048){c[B>>2]=46;break}if((c[(c[l>>2]|0)+20>>2]|0)!=0?(c[c[(c[l>>2]|0)+20>>2]>>2]|0)!=0:0){P=c[c[(c[l>>2]|0)+20>>2]>>2]|0;c[B>>2]=(dq(P,((P|0)<0)<<31>>31)|0)<<16>>16}}else if(e[I>>1]&2){P=(c[n>>2]|0)+36|0;c[P>>2]=c[P>>2]|1;if((c[v>>2]|0)>=0){if(b[E>>1]|0)break;if((e[(c[n>>2]|0)+24>>1]|0)!=((e[(c[D>>2]|0)+50>>1]|0)-1|0))break}if((c[v>>2]|0)>=0?(d[(c[D>>2]|0)+54>>0]|0)==0:0){P=(c[n>>2]|0)+36|0;c[P>>2]=c[P>>2]|65536;break}P=(c[n>>2]|0)+36|0;c[P>>2]=c[P>>2]|4096;break}else{if(e[I>>1]&128){P=(c[n>>2]|0)+36|0;c[P>>2]=c[P>>2]|8;break}j=(c[n>>2]|0)+36|0;N=c[j>>2]|0;if(e[I>>1]&36){c[j>>2]=N|34;c[z>>2]=c[w>>2];c[A>>2]=0;break}c[j>>2]=N|18;c[A>>2]=c[w>>2];if(c[(c[n>>2]|0)+36>>2]&32)j=c[(c[(c[n>>2]|0)+44>>2]|0)+((e[(c[n>>2]|0)+40>>1]|0)-2<<2)>>2]|0;else j=0;c[z>>2]=j;break}while(0);do if(!(c[(c[n>>2]|0)+36>>2]&2)){f=(c[n>>2]|0)+24|0;P=(b[f>>1]|0)+1<<16>>16;b[f>>1]=P;c[u>>2]=P&65535;if((c[v>>2]|0)>=0?(b[(c[w>>2]|0)+16>>1]|0)<=0:0){P=(c[n>>2]|0)+22|0;b[P>>1]=(b[P>>1]|0)+(b[(c[w>>2]|0)+16>>1]|0);P=(c[n>>2]|0)+22|0;b[P>>1]=(b[P>>1]|0)-(c[B>>2]|0);break}P=(c[n>>2]|0)+22|0;b[P>>1]=(b[P>>1]|0)+((b[(c[(c[D>>2]|0)+8>>2]|0)+(c[u>>2]<<1)>>1]|0)-(b[(c[(c[D>>2]|0)+8>>2]|0)+((c[u>>2]|0)-1<<1)>>1]|0));if(e[I>>1]&128){P=(c[n>>2]|0)+22|0;b[P>>1]=(b[P>>1]|0)+10}}else Kv(c[x>>2]|0,c[k>>2]|0,c[z>>2]|0,c[A>>2]|0,c[n>>2]|0)|0;while(0);b[G>>1]=(b[(c[n>>2]|0)+22>>1]|0)+1+(((b[(c[D>>2]|0)+48>>1]|0)*15|0)/(b[(c[(c[F>>2]|0)+16>>2]|0)+42>>1]|0)|0);P=rv(b[H>>1]|0,b[G>>1]|0)|0;b[(c[n>>2]|0)+20>>1]=P;if(!(c[(c[n>>2]|0)+36>>2]&320)){P=rv(b[(c[n>>2]|0)+20>>1]|0,(b[(c[n>>2]|0)+22>>1]|0)+16&65535)|0;b[(c[n>>2]|0)+20>>1]=P}b[L>>1]=b[(c[n>>2]|0)+22>>1]|0;P=(c[n>>2]|0)+20|0;b[P>>1]=(b[P>>1]|0)+((b[E>>1]|0)+(c[B>>2]|0));P=(c[n>>2]|0)+22|0;b[P>>1]=(b[P>>1]|0)+((b[E>>1]|0)+(c[B>>2]|0));Hv(c[(c[k>>2]|0)+4>>2]|0,c[n>>2]|0,b[M>>1]|0);c[t>>2]=Av(c[k>>2]|0,c[n>>2]|0)|0;if(c[(c[n>>2]|0)+36>>2]&2)b[(c[n>>2]|0)+22>>1]=b[r>>1]|0;else b[(c[n>>2]|0)+22>>1]=b[L>>1]|0;if((c[(c[n>>2]|0)+36>>2]&16|0)==0?(e[(c[n>>2]|0)+24>>1]|0)<(e[(c[D>>2]|0)+52>>1]|0):0)Jv(c[k>>2]|0,c[F>>2]|0,c[D>>2]|0,(b[E>>1]|0)+(c[B>>2]|0)&65535)|0;b[(c[n>>2]|0)+22>>1]=b[r>>1]|0}c[w>>2]=jv(K)|0}g=m;f=c[g+4>>2]|0;P=c[n>>2]|0;c[P>>2]=c[g>>2];c[P+4>>2]=f;b[(c[n>>2]|0)+24>>1]=b[o>>1]|0;b[(c[n>>2]|0)+26>>1]=b[p>>1]|0;c[(c[n>>2]|0)+36>>2]=c[q>>2];b[(c[n>>2]|0)+22>>1]=b[r>>1]|0;b[(c[n>>2]|0)+40>>1]=b[s>>1]|0;c[y>>2]=c[t>>2];P=c[y>>2]|0;i=C;return P|0}function Kv(a,d,e,f,g){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0;l=i;i=i+32|0;h=l+16|0;o=l+12|0;j=l+8|0;k=l+4|0;n=l;m=l+28|0;c[l+24>>2]=a;c[l+20>>2]=d;c[h>>2]=e;c[o>>2]=f;c[j>>2]=g;c[k>>2]=0;c[n>>2]=b[(c[j>>2]|0)+22>>1];b[m>>1]=Lv(c[h>>2]|0,c[n>>2]&65535)|0;b[m>>1]=Lv(c[o>>2]|0,b[m>>1]|0)|0;if((c[h>>2]|0)!=0&(c[o>>2]|0)!=0)b[m>>1]=(b[m>>1]|0)-20;c[n>>2]=(c[n>>2]|0)-(((c[h>>2]|0)!=0&1)+((c[o>>2]|0)!=0&1));if((b[m>>1]|0)<10)b[m>>1]=10;if((b[m>>1]|0)>=(c[n>>2]|0)){d=c[n>>2]|0;d=d&65535;a=c[j>>2]|0;a=a+22|0;b[a>>1]=d;a=c[k>>2]|0;i=l;return a|0}c[n>>2]=b[m>>1];d=c[n>>2]|0;d=d&65535;a=c[j>>2]|0;a=a+22|0;b[a>>1]=d;a=c[k>>2]|0;i=l;return a|0}function Lv(a,e){a=a|0;e=e|0;var f=0,g=0,h=0,j=0;g=i;i=i+16|0;h=g;j=g+6|0;f=g+4|0;c[h>>2]=a;b[j>>1]=e;b[f>>1]=b[j>>1]|0;do if(c[h>>2]|0){e=c[h>>2]|0;if((b[(c[h>>2]|0)+16>>1]|0)<=0){b[f>>1]=(b[f>>1]|0)+(b[e+16>>1]|0);break}if(!(d[e+20>>0]&0))b[f>>1]=(b[f>>1]|0)-20}while(0);i=g;return b[f>>1]|0}function Mv(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;f=i;i=i+16|0;g=f+12|0;j=f+8|0;h=f+4|0;k=f;c[j>>2]=a;c[h>>2]=b;c[k>>2]=e;if(!(Dq(c[j>>2]|0,c[h>>2]|0,c[k>>2]|0)|0)){c[g>>2]=1;a=c[g>>2]|0;i=f;return a|0}do if((d[c[h>>2]>>0]|0|0)==71){if((Mv(c[j>>2]|0,c[(c[h>>2]|0)+12>>2]|0,c[k>>2]|0)|0)==0?(Mv(c[j>>2]|0,c[(c[h>>2]|0)+16>>2]|0,c[k>>2]|0)|0)==0:0)break;c[g>>2]=1;a=c[g>>2]|0;i=f;return a|0}while(0);if((((d[c[h>>2]>>0]|0|0)==77?(Dq(c[(c[j>>2]|0)+12>>2]|0,c[(c[h>>2]|0)+12>>2]|0,c[k>>2]|0)|0)==0:0)?(d[c[j>>2]>>0]|0|0)!=76:0)?(d[c[j>>2]>>0]|0|0)!=73:0){c[g>>2]=1;a=c[g>>2]|0;i=f;return a|0}c[g>>2]=0;a=c[g>>2]|0;i=f;return a|0}function Nv(f,g,h,j){f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;n=i;i=i+80|0;l=n;m=n+68|0;v=n+64|0;u=n+60|0;t=n+56|0;C=n+52|0;o=n+48|0;r=n+44|0;w=n+40|0;q=n+36|0;x=n+32|0;z=n+28|0;p=n+24|0;y=n+20|0;k=n+16|0;A=n+12|0;B=n+8|0;s=n+72|0;D=n+4|0;c[v>>2]=f;c[u>>2]=g;c[t>>2]=h;c[C>>2]=j;c[w>>2]=0;c[o>>2]=0;c[p>>2]=c[(c[u>>2]|0)+20>>2];while(1){if((c[o>>2]|0)>=(c[(c[u>>2]|0)+12>>2]|0))break;if(((c[(c[p>>2]|0)+8>>2]|0)==(c[(c[t>>2]|0)+40>>2]|0)?(e[(c[p>>2]|0)+18>>1]&-1153|0)!=0:0)?(d[(c[p>>2]|0)+20>>0]&0|0)==0:0)c[w>>2]=(c[w>>2]|0)+1;c[o>>2]=(c[o>>2]|0)+1;c[p>>2]=(c[p>>2]|0)+48}c[y>>2]=0;if(c[C>>2]|0){c[A>>2]=c[c[C>>2]>>2];c[o>>2]=0;while(1){if((c[o>>2]|0)>=(c[A>>2]|0))break;c[B>>2]=c[(c[(c[C>>2]|0)+4>>2]|0)+((c[o>>2]|0)*20|0)>>2];if((d[c[B>>2]>>0]|0)!=154)break;if((c[(c[B>>2]|0)+28>>2]|0)!=(c[(c[t>>2]|0)+40>>2]|0))break;c[o>>2]=(c[o>>2]|0)+1}if((c[o>>2]|0)==(c[A>>2]|0))c[y>>2]=c[A>>2]}c[k>>2]=se(c[c[v>>2]>>2]|0,56+((c[w>>2]|0)*20|0)+(c[y>>2]<<3)|0,0)|0;if(!(c[k>>2]|0)){Se(c[v>>2]|0,5400,l);c[m>>2]=0;f=c[m>>2]|0;i=n;return f|0}c[q>>2]=(c[k>>2]|0)+56;c[x>>2]=(c[q>>2]|0)+((c[w>>2]|0)*12|0);c[z>>2]=(c[x>>2]|0)+(c[y>>2]<<3);c[c[k>>2]>>2]=c[w>>2];c[(c[k>>2]|0)+8>>2]=c[y>>2];c[(c[k>>2]|0)+4>>2]=c[q>>2];c[(c[k>>2]|0)+12>>2]=c[x>>2];c[(c[k>>2]|0)+16>>2]=c[z>>2];c[r>>2]=0;c[o>>2]=0;c[p>>2]=c[(c[u>>2]|0)+20>>2];while(1){if((c[o>>2]|0)>=(c[(c[u>>2]|0)+12>>2]|0))break;if(((c[(c[p>>2]|0)+8>>2]|0)==(c[(c[t>>2]|0)+40>>2]|0)?(e[(c[p>>2]|0)+18>>1]&-1153|0)!=0:0)?(d[(c[p>>2]|0)+20>>0]&0|0)==0:0){c[(c[q>>2]|0)+((c[r>>2]|0)*12|0)>>2]=c[(c[p>>2]|0)+12>>2];c[(c[q>>2]|0)+((c[r>>2]|0)*12|0)+8>>2]=c[o>>2];f=b[(c[p>>2]|0)+18>>1]&255;a[s>>0]=f;a[s>>0]=(d[s>>0]|0)==1?2:f;a[(c[q>>2]|0)+((c[r>>2]|0)*12|0)+4>>0]=a[s>>0]|0;c[r>>2]=(c[r>>2]|0)+1}c[o>>2]=(c[o>>2]|0)+1;c[p>>2]=(c[p>>2]|0)+48}c[o>>2]=0;while(1){if((c[o>>2]|0)>=(c[y>>2]|0))break;c[D>>2]=c[(c[(c[C>>2]|0)+4>>2]|0)+((c[o>>2]|0)*20|0)>>2];c[(c[x>>2]|0)+(c[o>>2]<<3)>>2]=b[(c[D>>2]|0)+32>>1];a[(c[x>>2]|0)+(c[o>>2]<<3)+4>>0]=a[(c[(c[C>>2]|0)+4>>2]|0)+((c[o>>2]|0)*20|0)+12>>0]|0;c[o>>2]=(c[o>>2]|0)+1}c[m>>2]=c[k>>2];f=c[m>>2]|0;i=n;return f|0}function Ov(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;l=i;i=i+32|0;j=l;g=l+24|0;h=l+20|0;k=l+16|0;m=l+12|0;f=l+8|0;n=l+4|0;c[g>>2]=b;c[h>>2]=d;c[k>>2]=e;c[m>>2]=c[(Rp(c[c[g>>2]>>2]|0,c[h>>2]|0)|0)+8>>2];c[n>>2]=zb[c[(c[c[m>>2]>>2]|0)+12>>2]&63](c[m>>2]|0,c[k>>2]|0)|0;do if(c[n>>2]|0){if((c[n>>2]|0)==7){a[(c[c[g>>2]>>2]|0)+64>>0]=1;break}e=c[g>>2]|0;if(c[(c[m>>2]|0)+8>>2]|0){c[j>>2]=c[(c[m>>2]|0)+8>>2];Se(e,1200,j);break}else{c[j>>2]=ge(c[n>>2]|0)|0;Se(e,1200,j);break}}while(0);hc(c[(c[m>>2]|0)+8>>2]|0);c[(c[m>>2]|0)+8>>2]=0;c[f>>2]=0;while(1){if((c[f>>2]|0)>=(c[c[k>>2]>>2]|0))break;if((a[(c[(c[k>>2]|0)+4>>2]|0)+((c[f>>2]|0)*12|0)+5>>0]|0)==0?(c[(c[(c[k>>2]|0)+16>>2]|0)+(c[f>>2]<<3)>>2]|0)>0:0){b=c[g>>2]|0;c[j>>2]=c[c[h>>2]>>2];Se(b,24120,j)}c[f>>2]=(c[f>>2]|0)+1}i=l;return c[(c[g>>2]|0)+64>>2]|0}function Pv(a){a=+a;var d=0,e=0,f=0,g=0,j=0;d=i;i=i+32|0;e=d+18|0;f=d+8|0;g=d;j=d+16|0;h[f>>3]=a;if(+h[f>>3]<=1.0){b[e>>1]=0;j=b[e>>1]|0;i=d;return j|0}if(+h[f>>3]<=2.0e9){a=+h[f>>3];b[e>>1]=dq(~~a>>>0,+O(a)>=1.0?a>0.0?(ca(+N(a/4294967296.0),4294967295.0)|0)>>>0:~~+_((a- +(~~a>>>0))/4294967296.0)>>>0:0)|0;j=b[e>>1]|0;i=d;return j|0}else{c[g+0>>2]=c[f+0>>2];c[g+4>>2]=c[f+4>>2];g=cF(c[g>>2]|0,c[g+4>>2]|0,52)|0;g=ZE(g|0,D|0,1022,0)|0;b[j>>1]=g;b[e>>1]=(b[j>>1]|0)*10;j=b[e>>1]|0;i=d;return j|0}return 0}function Qv(a,e,f,g,h){a=a|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;j=i;i=i+48|0;l=j+36|0;p=j+32|0;q=j+28|0;t=j+24|0;r=j+20|0;s=j+16|0;k=j+12|0;o=j+8|0;m=j+4|0;n=j;c[p>>2]=a;c[q>>2]=e;c[t>>2]=f;c[r>>2]=g;c[s>>2]=h;c[o>>2]=c[(c[(c[r>>2]|0)+32>>2]|0)+(c[s>>2]<<2)>>2];c[k>>2]=0;while(1){if((c[k>>2]|0)>=(c[c[q>>2]>>2]|0)){m=10;break}c[m>>2]=iq(c[(c[(c[q>>2]|0)+4>>2]|0)+((c[k>>2]|0)*20|0)>>2]|0)|0;if(((((d[c[m>>2]>>0]|0)==154?(b[(c[m>>2]|0)+32>>1]|0)==(b[(c[(c[r>>2]|0)+4>>2]|0)+(c[s>>2]<<1)>>1]|0):0)?(c[(c[m>>2]|0)+28>>2]|0)==(c[t>>2]|0):0)?(c[n>>2]=cq(c[p>>2]|0,c[(c[(c[q>>2]|0)+4>>2]|0)+((c[k>>2]|0)*20|0)>>2]|0)|0,(c[n>>2]|0)!=0):0)?0==(xc(c[c[n>>2]>>2]|0,c[o>>2]|0)|0):0){m=8;break}c[k>>2]=(c[k>>2]|0)+1}if((m|0)==8){c[l>>2]=c[k>>2];a=c[l>>2]|0;i=j;return a|0}else if((m|0)==10){c[l>>2]=-1;a=c[l>>2]|0;i=j;return a|0}return 0}function Rv(f,g,h){f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0;I=i;i=i+208|0;K=I+188|0;v=I+184|0;j=I+180|0;aa=I+176|0;E=I+172|0;V=I+168|0;q=I+164|0;y=I+40|0;A=I+32|0;z=I+24|0;s=I+160|0;u=I+156|0;p=I+152|0;O=I+148|0;t=I+144|0;G=I+140|0;$=I+16|0;w=I+136|0;N=I+132|0;C=I+194|0;x=I+128|0;l=I+124|0;B=I+192|0;F=I+120|0;Q=I+116|0;P=I+112|0;R=I+108|0;S=I+104|0;r=I+100|0;m=I+96|0;k=I+92|0;L=I+88|0;J=I+84|0;M=I+80|0;H=I+72|0;o=I+196|0;n=I+68|0;Y=I+64|0;T=I+60|0;U=I+56|0;_=I+52|0;X=I+8|0;W=I;Z=I+48|0;c[K>>2]=f;c[v>>2]=g;c[j>>2]=h;c[aa>>2]=c[c[v>>2]>>2];f=z;c[f>>2]=0;c[f+4>>2]=0;c[s>>2]=0;c[u>>2]=0;c[p>>2]=0;c[t>>2]=c[c[aa>>2]>>2];c[G>>2]=c[c[t>>2]>>2];if(a[(c[G>>2]|0)+64>>0]|0){i=I;return}c[E>>2]=(c[(c[v>>2]|0)+20>>2]|0)+((c[j>>2]|0)*48|0);c[V>>2]=(c[aa>>2]|0)+68;c[q>>2]=c[c[E>>2]>>2];g=pv(c[V>>2]|0,c[(c[q>>2]|0)+12>>2]|0)|0;f=y;c[f>>2]=g;c[f+4>>2]=D;c[O>>2]=d[c[q>>2]>>0];do if((c[O>>2]|0)==75){aa=c[V>>2]|0;h=(c[q>>2]|0)+20|0;if(c[(c[q>>2]|0)+4>>2]&2048){g=qv(aa,c[h>>2]|0)|0;f=(c[E>>2]|0)+32|0;c[f>>2]=g;c[f+4>>2]=D;break}else{g=Zu(aa,c[h>>2]|0)|0;f=(c[E>>2]|0)+32|0;c[f>>2]=g;c[f+4>>2]=D;break}}else if((c[O>>2]|0)==76){f=(c[E>>2]|0)+32|0;c[f>>2]=0;c[f+4>>2]=0;break}else{g=pv(c[V>>2]|0,c[(c[q>>2]|0)+16>>2]|0)|0;f=(c[E>>2]|0)+32|0;c[f>>2]=g;c[f+4>>2]=D;break}while(0);g=pv(c[V>>2]|0,c[q>>2]|0)|0;f=A;c[f>>2]=g;c[f+4>>2]=D;if(c[(c[q>>2]|0)+4>>2]&1){h=_u(c[V>>2]|0,b[(c[q>>2]|0)+36>>1]|0)|0;aa=$;c[aa>>2]=h;c[aa+4>>2]=D;aa=$;h=A;f=c[h+4>>2]|c[aa+4>>2];g=A;c[g>>2]=c[h>>2]|c[aa>>2];c[g+4>>2]=f;g=$;g=ZE(c[g>>2]|0,c[g+4>>2]|0,1,0)|0;f=z;c[f>>2]=g;c[f+4>>2]=D}g=A;$=c[g+4>>2]|0;f=(c[E>>2]|0)+40|0;c[f>>2]=c[g>>2];c[f+4>>2]=$;c[(c[E>>2]|0)+8>>2]=-1;c[(c[E>>2]|0)+4>>2]=-1;b[(c[E>>2]|0)+18>>1]=0;f=(Sv(c[O>>2]|0)|0)!=0;$=c[q>>2]|0;do if(f){c[w>>2]=iq(c[$+12>>2]|0)|0;c[N>>2]=iq(c[(c[q>>2]|0)+16>>2]|0)|0;g=(c[E>>2]|0)+32|0;f=y;b[C>>1]=((c[g>>2]&c[f>>2]|0)==0?(c[g+4>>2]&c[f+4>>2]|0)==0:0)?4095:1024;if((d[c[w>>2]>>0]|0)==154){c[(c[E>>2]|0)+8>>2]=c[(c[w>>2]|0)+28>>2];c[(c[E>>2]|0)+12>>2]=b[(c[w>>2]|0)+32>>1];f=(Tv(c[O>>2]|0)|0)&65535;b[(c[E>>2]|0)+18>>1]=f&e[C>>1]}if((c[N>>2]|0)!=0?(d[c[N>>2]>>0]|0)==154:0){b[B>>1]=0;if((c[(c[E>>2]|0)+8>>2]|0)>=0){c[l>>2]=Bq(c[G>>2]|0,c[q>>2]|0,0)|0;if(a[(c[G>>2]|0)+64>>0]|0){wn(c[G>>2]|0,c[l>>2]|0);i=I;return}c[F>>2]=Uv(c[v>>2]|0,c[l>>2]|0,3)|0;if(!(c[F>>2]|0)){i=I;return}c[x>>2]=(c[(c[v>>2]|0)+20>>2]|0)+((c[F>>2]|0)*48|0);c[(c[x>>2]|0)+4>>2]=c[j>>2];c[E>>2]=(c[(c[v>>2]|0)+20>>2]|0)+((c[j>>2]|0)*48|0);a[(c[E>>2]|0)+21>>0]=1;f=(c[E>>2]|0)+20|0;a[f>>0]=d[f>>0]|8;if(((d[c[q>>2]>>0]|0)==79?(c[(c[q>>2]|0)+4>>2]&1|0)==0:0)?(e[(c[G>>2]|0)+60>>1]&512|0)==0:0){f=(c[E>>2]|0)+18|0;b[f>>1]=e[f>>1]|1024;b[B>>1]=1024}}else{c[l>>2]=c[q>>2];c[x>>2]=c[E>>2]}Vv(c[t>>2]|0,c[l>>2]|0);c[w>>2]=iq(c[(c[l>>2]|0)+12>>2]|0)|0;c[(c[x>>2]|0)+8>>2]=c[(c[w>>2]|0)+28>>2];c[(c[x>>2]|0)+12>>2]=b[(c[w>>2]|0)+32>>1];h=y;f=z;g=c[h+4>>2]|c[f+4>>2];aa=(c[x>>2]|0)+32|0;c[aa>>2]=c[h>>2]|c[f>>2];c[aa+4>>2]=g;aa=A;g=c[aa+4>>2]|0;f=(c[x>>2]|0)+40|0;c[f>>2]=c[aa>>2];c[f+4>>2]=g;f=(Tv(d[c[l>>2]>>0]|0)|0)&65535;b[(c[x>>2]|0)+18>>1]=f+(e[B>>1]|0)&e[C>>1]}}else{if((d[$>>0]|0)==74?(d[(c[v>>2]|0)+8>>0]|0)==72:0){c[Q>>2]=c[(c[q>>2]|0)+20>>2];c[P>>2]=0;while(1){if((c[P>>2]|0)>=2)break;aa=c[t>>2]|0;g=d[24168+(c[P>>2]|0)>>0]|0;f=Bq(c[G>>2]|0,c[(c[q>>2]|0)+12>>2]|0,0)|0;c[R>>2]=Rn(aa,g,f,Bq(c[G>>2]|0,c[(c[(c[Q>>2]|0)+4>>2]|0)+((c[P>>2]|0)*20|0)>>2]|0,0)|0,0)|0;Wv(c[R>>2]|0,c[q>>2]|0);c[S>>2]=Uv(c[v>>2]|0,c[R>>2]|0,3)|0;Rv(c[K>>2]|0,c[v>>2]|0,c[S>>2]|0);c[E>>2]=(c[(c[v>>2]|0)+20>>2]|0)+((c[j>>2]|0)*48|0);c[(c[(c[v>>2]|0)+20>>2]|0)+((c[S>>2]|0)*48|0)+4>>2]=c[j>>2];c[P>>2]=(c[P>>2]|0)+1}a[(c[E>>2]|0)+21>>0]=2;break}if((d[c[q>>2]>>0]|0)==71){Xv(c[K>>2]|0,c[v>>2]|0,c[j>>2]|0);c[E>>2]=(c[(c[v>>2]|0)+20>>2]|0)+((c[j>>2]|0)*48|0)}}while(0);if((d[(c[v>>2]|0)+8>>0]|0)==72?(Yv(c[t>>2]|0,c[q>>2]|0,s,u,p)|0)!=0:0){c[r>>2]=c[(c[(c[(c[q>>2]|0)+20>>2]|0)+4>>2]|0)+20>>2];c[m>>2]=Bq(c[G>>2]|0,c[s>>2]|0,0)|0;if(!(a[(c[G>>2]|0)+64>>0]|0)){f=(Mb(c[(c[m>>2]|0)+8>>2]|0)|0)-1|0;c[n>>2]=(c[(c[m>>2]|0)+8>>2]|0)+f;a[o>>0]=a[c[n>>2]>>0]|0;if(c[p>>2]|0){if((d[o>>0]|0)==64)c[u>>2]=0;a[o>>0]=a[440+(d[o>>0]|0)>>0]|0}a[c[n>>2]>>0]=(d[o>>0]|0)+1}c[H>>2]=(c[p>>2]|0)!=0?3336:3320;c[H+4>>2]=6;c[k>>2]=Bq(c[G>>2]|0,c[r>>2]|0,0)|0;f=c[t>>2]|0;g=uo(c[t>>2]|0,c[k>>2]|0,H)|0;c[k>>2]=Rn(f,83,g,c[s>>2]|0,0)|0;Wv(c[k>>2]|0,c[q>>2]|0);c[J>>2]=Uv(c[v>>2]|0,c[k>>2]|0,3)|0;Rv(c[K>>2]|0,c[v>>2]|0,c[J>>2]|0);c[L>>2]=Bq(c[G>>2]|0,c[r>>2]|0,0)|0;g=c[t>>2]|0;f=uo(c[t>>2]|0,c[L>>2]|0,H)|0;c[L>>2]=Rn(g,82,f,c[m>>2]|0,0)|0;Wv(c[L>>2]|0,c[q>>2]|0);c[M>>2]=Uv(c[v>>2]|0,c[L>>2]|0,3)|0;Rv(c[K>>2]|0,c[v>>2]|0,c[M>>2]|0);c[E>>2]=(c[(c[v>>2]|0)+20>>2]|0)+((c[j>>2]|0)*48|0);if(c[u>>2]|0){c[(c[(c[v>>2]|0)+20>>2]|0)+((c[J>>2]|0)*48|0)+4>>2]=c[j>>2];c[(c[(c[v>>2]|0)+20>>2]|0)+((c[M>>2]|0)*48|0)+4>>2]=c[j>>2];a[(c[E>>2]|0)+21>>0]=2}}if((Zv(c[q>>2]|0)|0)!=0?(c[T>>2]=c[c[(c[(c[q>>2]|0)+20>>2]|0)+4>>2]>>2],c[U>>2]=c[(c[(c[(c[q>>2]|0)+20>>2]|0)+4>>2]|0)+20>>2],g=pv(c[V>>2]|0,c[T>>2]|0)|0,f=W,c[f>>2]=g,c[f+4>>2]=D,f=pv(c[V>>2]|0,c[U>>2]|0)|0,g=X,c[g>>2]=f,c[g+4>>2]=D,g=W,f=X,(c[g>>2]&c[f>>2]|0)==0?(c[g+4>>2]&c[f+4>>2]|0)==0:0):0){f=c[t>>2]|0;c[Z>>2]=Rn(f,51,0,Bq(c[G>>2]|0,c[T>>2]|0,0)|0,0)|0;c[Y>>2]=Uv(c[v>>2]|0,c[Z>>2]|0,3)|0;c[_>>2]=(c[(c[v>>2]|0)+20>>2]|0)+((c[Y>>2]|0)*48|0);f=W;g=c[f+4>>2]|0;aa=(c[_>>2]|0)+32|0;c[aa>>2]=c[f>>2];c[aa+4>>2]=g;c[(c[_>>2]|0)+8>>2]=c[(c[U>>2]|0)+28>>2];c[(c[_>>2]|0)+12>>2]=b[(c[U>>2]|0)+32>>1];b[(c[_>>2]|0)+18>>1]=64;c[(c[_>>2]|0)+4>>2]=c[j>>2];c[E>>2]=(c[(c[v>>2]|0)+20>>2]|0)+((c[j>>2]|0)*48|0);a[(c[E>>2]|0)+21>>0]=1;aa=(c[E>>2]|0)+20|0;a[aa>>0]=d[aa>>0]|8;aa=(c[E>>2]|0)+40|0;g=c[aa+4>>2]|0;f=(c[_>>2]|0)+40|0;c[f>>2]=c[aa>>2];c[f+4>>2]=g}aa=z;f=(c[E>>2]|0)+32|0;h=f;g=c[h+4>>2]|c[aa+4>>2];c[f>>2]=c[h>>2]|c[aa>>2];c[f+4>>2]=g;i=I;return}function Sv(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;if((c[d>>2]|0)!=75?!((c[d>>2]|0)>=79&(c[d>>2]|0)<=83):0)a=(c[d>>2]|0)==76;else a=1;i=b;return a&1|0}function Tv(a){a=a|0;var d=0,e=0,f=0;e=i;i=i+16|0;f=e;d=e+4|0;c[f>>2]=a;do if((c[f>>2]|0)!=75)if((c[f>>2]|0)==76){b[d>>1]=128;break}else{b[d>>1]=2<<(c[f>>2]|0)-79;break}else b[d>>1]=1;while(0);i=e;return b[d>>1]|0}function Uv(e,f,g){e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;o=i;i=i+32|0;h=o+24|0;l=o+20|0;n=o+16|0;k=o+28|0;j=o+12|0;m=o+8|0;q=o+4|0;p=o;c[l>>2]=e;c[n>>2]=f;a[k>>0]=g;do if((c[(c[l>>2]|0)+12>>2]|0)>=(c[(c[l>>2]|0)+16>>2]|0)){c[q>>2]=c[(c[l>>2]|0)+20>>2];c[p>>2]=c[c[c[c[l>>2]>>2]>>2]>>2];e=Qe(c[p>>2]|0,(c[(c[l>>2]|0)+16>>2]|0)*48<<1,0)|0;c[(c[l>>2]|0)+20>>2]=e;if(c[(c[l>>2]|0)+20>>2]|0){dF(c[(c[l>>2]|0)+20>>2]|0,c[q>>2]|0,(c[(c[l>>2]|0)+12>>2]|0)*48|0)|0;if((c[q>>2]|0)!=((c[l>>2]|0)+24|0))Xb(c[p>>2]|0,c[q>>2]|0);e=((Bk(c[p>>2]|0,c[(c[l>>2]|0)+20>>2]|0)|0)>>>0)/48|0;c[(c[l>>2]|0)+16>>2]=e;break}if((d[k>>0]|0)&1)wn(c[p>>2]|0,c[n>>2]|0);c[(c[l>>2]|0)+20>>2]=c[q>>2];c[h>>2]=0;e=c[h>>2]|0;i=o;return e|0}while(0);f=(c[l>>2]|0)+12|0;e=c[f>>2]|0;c[f>>2]=e+1;c[m>>2]=e;c[j>>2]=(c[(c[l>>2]|0)+20>>2]|0)+(e*48|0);if((c[n>>2]|0)!=0?(c[(c[n>>2]|0)+4>>2]&262144|0)!=0:0){e=c[(c[n>>2]|0)+28>>2]|0;e=((dq(e,((e|0)<0)<<31>>31)|0)<<16>>16)-99&65535;b[(c[j>>2]|0)+16>>1]=e}else b[(c[j>>2]|0)+16>>1]=1;e=iq(c[n>>2]|0)|0;c[c[j>>2]>>2]=e;a[(c[j>>2]|0)+20>>0]=a[k>>0]|0;c[(c[j>>2]|0)+24>>2]=c[l>>2];c[(c[j>>2]|0)+4>>2]=-1;c[h>>2]=c[m>>2];e=c[h>>2]|0;i=o;return e|0}function Vv(f,g){f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0;h=i;i=i+16|0;l=h+8|0;j=h+4|0;m=h+14|0;n=h+12|0;k=h;c[l>>2]=f;c[j>>2]=g;b[m>>1]=c[(c[(c[j>>2]|0)+16>>2]|0)+4>>2]&256;b[n>>1]=c[(c[(c[j>>2]|0)+12>>2]|0)+4>>2]&256;do if((e[m>>1]|0)==(e[n>>1]|0)){if(b[m>>1]|0){n=(c[(c[j>>2]|0)+16>>2]|0)+4|0;c[n>>2]=c[n>>2]&-257;break}if(cq(c[l>>2]|0,c[(c[j>>2]|0)+12>>2]|0)|0){n=(c[(c[j>>2]|0)+12>>2]|0)+4|0;c[n>>2]=c[n>>2]|256}}while(0);c[k>>2]=c[(c[j>>2]|0)+16>>2];c[(c[j>>2]|0)+16>>2]=c[(c[j>>2]|0)+12>>2];c[(c[j>>2]|0)+12>>2]=c[k>>2];if((d[c[j>>2]>>0]|0)<80){i=h;return}a[c[j>>2]>>0]=((d[c[j>>2]>>0]|0)-80^2)+80;i=h;return}function Wv(a,d){a=a|0;d=d|0;var e=0,f=0,g=0;e=i;i=i+16|0;f=e+4|0;g=e;c[f>>2]=a;c[g>>2]=d;if(!(c[f>>2]|0)){i=e;return}a=(c[f>>2]|0)+4|0;c[a>>2]=c[a>>2]|c[(c[g>>2]|0)+4>>2]&1;b[(c[f>>2]|0)+36>>1]=b[(c[g>>2]|0)+36>>1]|0;i=e;return}function Xv(f,g,h){f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0;C=i;i=i+144|0;q=C+140|0;o=C+136|0;r=C+132|0;y=C+128|0;w=C+124|0;t=C+120|0;s=C+116|0;m=C+112|0;z=C+108|0;A=C+104|0;x=C+100|0;P=C+96|0;j=C+24|0;K=C+16|0;J=C+92|0;M=C+88|0;N=C+84|0;L=C+80|0;O=C+8|0;Q=C;R=C+76|0;B=C+72|0;G=C+68|0;E=C+64|0;F=C+60|0;I=C+56|0;H=C+52|0;v=C+48|0;n=C+44|0;u=C+40|0;l=C+36|0;p=C+32|0;c[q>>2]=f;c[o>>2]=g;c[r>>2]=h;c[y>>2]=c[c[o>>2]>>2];c[w>>2]=c[c[y>>2]>>2];c[t>>2]=c[c[w>>2]>>2];c[s>>2]=(c[(c[o>>2]|0)+20>>2]|0)+((c[r>>2]|0)*48|0);c[m>>2]=c[c[s>>2]>>2];f=se(c[t>>2]|0,416,0)|0;c[P>>2]=f;c[(c[s>>2]|0)+12>>2]=f;if(!(c[P>>2]|0)){i=C;return}f=(c[s>>2]|0)+20|0;a[f>>0]=d[f>>0]|16;c[A>>2]=c[P>>2];Ru(c[A>>2]|0,c[y>>2]|0);Su(c[A>>2]|0,c[m>>2]|0,71);Uu(c[q>>2]|0,c[A>>2]|0);if(a[(c[t>>2]|0)+64>>0]|0){i=C;return}f=K;c[f>>2]=-1;c[f+4>>2]=-1;f=j;c[f>>2]=-1;c[f+4>>2]=-1;c[z>>2]=(c[(c[A>>2]|0)+12>>2]|0)-1;c[x>>2]=c[(c[A>>2]|0)+20>>2];while(1){f=K;if(!((c[z>>2]|0)>=0&((c[f>>2]|0)!=0|(c[f+4>>2]|0)!=0)))break;do if(!(e[(c[x>>2]|0)+18>>1]&255)){f=j;c[f>>2]=0;c[f+4>>2]=0;c[J>>2]=Qe(c[t>>2]|0,408,0)|0;if(c[J>>2]|0){f=O;c[f>>2]=0;c[f+4>>2]=0;c[(c[x>>2]|0)+12>>2]=c[J>>2];f=(c[x>>2]|0)+20|0;a[f>>0]=d[f>>0]|32;b[(c[x>>2]|0)+18>>1]=512;c[M>>2]=c[J>>2];Ru(c[M>>2]|0,c[c[o>>2]>>2]|0);Su(c[M>>2]|0,c[c[x>>2]>>2]|0,72);Uu(c[q>>2]|0,c[M>>2]|0);c[(c[M>>2]|0)+4>>2]=c[o>>2];a:do if(!(a[(c[t>>2]|0)+64>>0]|0)){c[L>>2]=0;c[N>>2]=c[(c[M>>2]|0)+20>>2];while(1){if((c[L>>2]|0)>=(c[(c[M>>2]|0)+12>>2]|0))break a;if(Sv(d[c[c[N>>2]>>2]>>0]|0)|0){h=_u((c[y>>2]|0)+68|0,c[(c[N>>2]|0)+8>>2]|0)|0;S=O;g=c[S+4>>2]|D;f=O;c[f>>2]=c[S>>2]|h;c[f+4>>2]=g}c[L>>2]=(c[L>>2]|0)+1;c[N>>2]=(c[N>>2]|0)+48}}while(0);g=O;h=K;f=c[h+4>>2]&c[g+4>>2];S=K;c[S>>2]=c[h>>2]&c[g>>2];c[S+4>>2]=f}}else if(!(d[(c[x>>2]|0)+20>>0]&8)){f=_u((c[y>>2]|0)+68|0,c[(c[x>>2]|0)+8>>2]|0)|0;S=Q;c[S>>2]=f;c[S+4>>2]=D;if(d[(c[x>>2]|0)+20>>0]&2){c[R>>2]=(c[(c[A>>2]|0)+20>>2]|0)+((c[(c[x>>2]|0)+4>>2]|0)*48|0);g=_u((c[y>>2]|0)+68|0,c[(c[R>>2]|0)+8>>2]|0)|0;h=Q;f=c[h+4>>2]|D;S=Q;c[S>>2]=c[h>>2]|g;c[S+4>>2]=f}g=Q;h=K;f=c[h+4>>2]&c[g+4>>2];S=K;c[S>>2]=c[h>>2]&c[g>>2];c[S+4>>2]=f;if(!(e[(c[x>>2]|0)+18>>1]&2)){S=j;c[S>>2]=0;c[S+4>>2]=0;break}else{g=Q;h=j;f=c[h+4>>2]&c[g+4>>2];S=j;c[S>>2]=c[h>>2]&c[g>>2];c[S+4>>2]=f;break}}while(0);c[z>>2]=(c[z>>2]|0)+ -1;c[x>>2]=(c[x>>2]|0)+48}g=K;f=c[g+4>>2]|0;S=(c[P>>2]|0)+408|0;c[S>>2]=c[g>>2];c[S+4>>2]=f;S=K;b[(c[s>>2]|0)+18>>1]=(c[S>>2]|0)==0&(c[S+4>>2]|0)==0?0:256;S=j;if(!((c[S>>2]|0)!=0|(c[S+4>>2]|0)!=0)){i=C;return}c[B>>2]=0;c[G>>2]=-1;c[E>>2]=-1;c[F>>2]=0;c[F>>2]=0;while(1){if((c[F>>2]|0)>=2|(c[B>>2]|0)!=0)break;c[x>>2]=c[(c[A>>2]|0)+20>>2];c[z>>2]=(c[(c[A>>2]|0)+12>>2]|0)-1;while(1){if((c[z>>2]|0)<0)break;S=(c[x>>2]|0)+20|0;a[S>>0]=d[S>>0]&-65;if((c[(c[x>>2]|0)+8>>2]|0)!=(c[E>>2]|0)?(S=j,g=c[S>>2]|0,S=c[S+4>>2]|0,f=_u((c[y>>2]|0)+68|0,c[(c[x>>2]|0)+8>>2]|0)|0,!((g&f|0)==0&(S&D|0)==0)):0){k=28;break}c[z>>2]=(c[z>>2]|0)+ -1;c[x>>2]=(c[x>>2]|0)+48}if((k|0)==28){k=0;c[G>>2]=c[(c[x>>2]|0)+12>>2];c[E>>2]=c[(c[x>>2]|0)+8>>2]}if((c[z>>2]|0)<0)break;c[B>>2]=1;while(1){if(!((c[z>>2]|0)>=0&(c[B>>2]|0)!=0))break;J=c[x>>2]|0;do if((c[(c[x>>2]|0)+8>>2]|0)!=(c[E>>2]|0)){S=J+20|0;a[S>>0]=d[S>>0]&-65}else{if((c[J+12>>2]|0)!=(c[G>>2]|0)){c[B>>2]=0;break}c[H>>2]=(bq(c[(c[c[x>>2]>>2]|0)+16>>2]|0)|0)<<24>>24;c[I>>2]=(bq(c[(c[c[x>>2]>>2]|0)+12>>2]|0)|0)<<24>>24;if((c[H>>2]|0)!=0?(c[H>>2]|0)!=(c[I>>2]|0):0){c[B>>2]=0;break}S=(c[x>>2]|0)+20|0;a[S>>0]=d[S>>0]|64}while(0);c[z>>2]=(c[z>>2]|0)+ -1;c[x>>2]=(c[x>>2]|0)+48}c[F>>2]=(c[F>>2]|0)+1}if(!(c[B>>2]|0)){i=C;return}c[n>>2]=0;c[u>>2]=0;c[z>>2]=(c[(c[A>>2]|0)+12>>2]|0)-1;c[x>>2]=c[(c[A>>2]|0)+20>>2];while(1){if((c[z>>2]|0)<0)break;if(d[(c[x>>2]|0)+20>>0]&64){c[v>>2]=Bq(c[t>>2]|0,c[(c[c[x>>2]>>2]|0)+16>>2]|0,0)|0;c[n>>2]=eo(c[c[y>>2]>>2]|0,c[n>>2]|0,c[v>>2]|0)|0;c[u>>2]=c[(c[c[x>>2]>>2]|0)+12>>2]}c[z>>2]=(c[z>>2]|0)+ -1;c[x>>2]=(c[x>>2]|0)+48}c[v>>2]=Bq(c[t>>2]|0,c[u>>2]|0,0)|0;c[l>>2]=Rn(c[w>>2]|0,75,c[v>>2]|0,0,0)|0;if(c[l>>2]|0){Wv(c[l>>2]|0,c[m>>2]|0);c[(c[l>>2]|0)+20>>2]=c[n>>2];c[p>>2]=Uv(c[o>>2]|0,c[l>>2]|0,3)|0;Rv(c[q>>2]|0,c[o>>2]|0,c[p>>2]|0);c[s>>2]=(c[(c[o>>2]|0)+20>>2]|0)+((c[r>>2]|0)*48|0);c[(c[(c[o>>2]|0)+20>>2]|0)+((c[p>>2]|0)*48|0)+4>>2]=c[r>>2];a[(c[s>>2]|0)+21>>0]=1}else sn(c[t>>2]|0,c[n>>2]|0);b[(c[s>>2]|0)+18>>1]=2048;i=C;return}function Yv(e,f,g,h,j){e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;x=i;i=i+96|0;s=x+76|0;o=x+72|0;E=x+68|0;t=x+64|0;r=x+60|0;F=x+56|0;n=x+52|0;q=x+48|0;D=x+44|0;C=x+40|0;z=x+36|0;v=x+32|0;y=x+80|0;w=x+28|0;m=x+24|0;u=x+20|0;B=x+16|0;A=x+12|0;k=x+8|0;p=x+4|0;l=x;c[o>>2]=e;c[E>>2]=f;c[t>>2]=g;c[r>>2]=h;c[F>>2]=j;c[n>>2]=0;c[w>>2]=c[c[o>>2]>>2];c[m>>2]=0;if(!(_v(c[w>>2]|0,c[E>>2]|0,c[F>>2]|0,y)|0)){c[s>>2]=0;F=c[s>>2]|0;i=x;return F|0}c[C>>2]=c[(c[E>>2]|0)+20>>2];c[D>>2]=c[(c[(c[C>>2]|0)+4>>2]|0)+20>>2];if(((d[c[D>>2]>>0]|0)==154?((bq(c[D>>2]|0)|0)<<24>>24|0)==66:0)?(d[(c[(c[D>>2]|0)+44>>2]|0)+44>>0]&16|0)==0:0){c[q>>2]=iq(c[c[(c[C>>2]|0)+4>>2]>>2]|0)|0;c[u>>2]=d[c[q>>2]>>0];if((c[u>>2]|0)!=135){if((c[u>>2]|0)==97)c[n>>2]=c[(c[q>>2]|0)+8>>2]}else{c[B>>2]=c[(c[o>>2]|0)+476>>2];c[A>>2]=b[(c[q>>2]|0)+32>>1];c[m>>2]=$v(c[B>>2]|0,c[A>>2]|0,65)|0;if((c[m>>2]|0)!=0?(Nd(c[m>>2]|0)|0)==3:0)c[n>>2]=Ed(c[m>>2]|0)|0;aw(c[(c[o>>2]|0)+8>>2]|0,c[A>>2]|0)}do if(c[n>>2]|0){c[v>>2]=0;while(1){F=a[(c[n>>2]|0)+(c[v>>2]|0)>>0]|0;c[z>>2]=F;if(((F|0)!=0?(c[z>>2]|0)!=(a[y>>0]|0):0)?(c[z>>2]|0)!=(a[y+1>>0]|0):0)A=(c[z>>2]|0)!=(a[y+2>>0]|0);else A=0;j=c[v>>2]|0;if(!A)break;c[v>>2]=j+1}if((j|0)!=0?255!=(d[(c[n>>2]|0)+((c[v>>2]|0)-1)>>0]|0):0){if((c[z>>2]|0)==(a[y>>0]|0))y=(a[(c[n>>2]|0)+((c[v>>2]|0)+1)>>0]|0)==0;else y=0;c[c[r>>2]>>2]=y&1;c[k>>2]=ho(c[w>>2]|0,97,c[n>>2]|0)|0;if(c[k>>2]|0)a[(c[(c[k>>2]|0)+8>>2]|0)+(c[v>>2]|0)>>0]=0;c[c[t>>2]>>2]=c[k>>2];if((c[u>>2]|0)!=135)break;c[p>>2]=c[(c[o>>2]|0)+8>>2];aw(c[p>>2]|0,b[(c[q>>2]|0)+32>>1]|0);if(!(c[c[r>>2]>>2]|0))break;if(!(a[(c[(c[q>>2]|0)+8>>2]|0)+1>>0]|0))break;c[l>>2]=kp(c[o>>2]|0)|0;Qs(c[o>>2]|0,c[q>>2]|0,c[l>>2]|0)|0;F=c[p>>2]|0;af(F,(Mr(c[p>>2]|0)|0)-1|0,0);lp(c[o>>2]|0,c[l>>2]|0);break}c[n>>2]=0}while(0);tf(c[m>>2]|0);c[s>>2]=(c[n>>2]|0)!=0&1;F=c[s>>2]|0;i=x;return F|0}c[s>>2]=0;F=c[s>>2]|0;i=x;return F|0}function Zv(a){a=a|0;var b=0,e=0,f=0,g=0;e=i;i=i+16|0;b=e+8|0;g=e+4|0;f=e;c[g>>2]=a;do if((d[c[g>>2]>>0]|0|0)==153){if(xc(c[(c[g>>2]|0)+8>>2]|0,21512)|0){c[b>>2]=0;break}c[f>>2]=c[(c[g>>2]|0)+20>>2];if((c[c[f>>2]>>2]|0)!=2){c[b>>2]=0;break}if((d[c[(c[(c[f>>2]|0)+4>>2]|0)+20>>2]>>0]|0|0)!=154){c[b>>2]=0;break}else{c[b>>2]=1;break}}else c[b>>2]=0;while(0);i=e;return c[b>>2]|0}function _v(b,f,g,h){b=b|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0;n=i;i=i+32|0;k=n+20|0;p=n+16|0;o=n+12|0;l=n+8|0;j=n+4|0;m=n;c[p>>2]=b;c[o>>2]=f;c[l>>2]=g;c[j>>2]=h;if(((d[c[o>>2]>>0]|0|0)==153?(c[(c[o>>2]|0)+20>>2]|0)!=0:0)?(c[c[(c[o>>2]|0)+20>>2]>>2]|0)==2:0){f=c[p>>2]|0;b=c[(c[o>>2]|0)+8>>2]|0;c[m>>2]=Sf(f,b,Mb(c[(c[o>>2]|0)+8>>2]|0)|0,2,1,0)|0;if((c[m>>2]|0)!=0?((e[(c[m>>2]|0)+2>>1]|0)&4|0)!=0:0){b=c[j>>2]|0;f=c[(c[m>>2]|0)+4>>2]|0;a[b+0>>0]=a[f+0>>0]|0;a[b+1>>0]=a[f+1>>0]|0;a[b+2>>0]=a[f+2>>0]|0;c[c[l>>2]>>2]=((e[(c[m>>2]|0)+2>>1]|0)&8|0)==0&1;c[k>>2]=1;b=c[k>>2]|0;i=n;return b|0}c[k>>2]=0;b=c[k>>2]|0;i=n;return b|0}c[k>>2]=0;b=c[k>>2]|0;i=n;return b|0}function $v(b,d,f){b=b|0;d=d|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;m=i;i=i+32|0;l=m+16|0;k=m+12|0;n=m+8|0;j=m+20|0;h=m+4|0;g=m;c[k>>2]=b;c[n>>2]=d;a[j>>0]=f;if((c[k>>2]|0)!=0?(c[h>>2]=(c[(c[k>>2]|0)+60>>2]|0)+(((c[n>>2]|0)-1|0)*40|0),0==((e[(c[h>>2]|0)+8>>1]|0)&1|0)):0){c[g>>2]=rf(c[c[k>>2]>>2]|0)|0;if(c[g>>2]|0){ce(c[g>>2]|0,c[h>>2]|0)|0;Dp(c[g>>2]|0,a[j>>0]|0,1)}c[l>>2]=c[g>>2];b=c[l>>2]|0;i=m;return b|0}c[l>>2]=0;b=c[l>>2]|0;i=m;return b|0}function aw(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;if((c[f>>2]|0)>32){c[(c[e>>2]|0)+188>>2]=-1;i=d;return}else{a=(c[e>>2]|0)+188|0;c[a>>2]=c[a>>2]|1<<(c[f>>2]|0)-1;i=d;return}}function bw(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;l=i;i=i+32|0;f=l;k=l+24|0;h=l+20|0;m=l+16|0;g=l+12|0;j=l+8|0;c[k>>2]=a;c[h>>2]=d;c[m>>2]=e;e=c[c[k>>2]>>2]|0;d=c[c[m>>2]>>2]|0;if((b[(c[m>>2]|0)+36>>1]|0)>=0){m=c[(c[(c[m>>2]|0)+4>>2]|0)+((b[(c[m>>2]|0)+36>>1]|0)*24|0)>>2]|0;c[f>>2]=d;c[f+4>>2]=m;c[g>>2]=Te(e,17448,f)|0;c[j>>2]=1555;m=c[k>>2]|0;e=c[j>>2]|0;d=c[h>>2]|0;a=c[g>>2]|0;ts(m,e,d,a,-1,2);i=l;return}else{c[f>>2]=d;c[g>>2]=Te(e,24432,f)|0;c[j>>2]=2579;m=c[k>>2]|0;e=c[j>>2]|0;d=c[h>>2]|0;a=c[g>>2]|0;ts(m,e,d,a,-1,2);i=l;return}}function cw(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;f=i;i=i+32|0;g=f+20|0;n=f+16|0;j=f+12|0;l=f+8|0;m=f+4|0;k=f;c[n>>2]=a;c[j>>2]=b;c[l>>2]=d;c[m>>2]=e;a:do if(c[(c[c[n>>2]>>2]|0)+24>>2]&524288){e=c[j>>2]|0;if(!(c[l>>2]|0)){if(Up(e)|0)h=1;else h=(c[(c[j>>2]|0)+16>>2]|0)!=0;c[g>>2]=h&1;n=c[g>>2]|0;i=f;return n|0}c[k>>2]=c[e+16>>2];while(1){e=c[j>>2]|0;if(!(c[k>>2]|0))break;if(Bu(e,c[k>>2]|0,c[l>>2]|0,c[m>>2]|0)|0){h=9;break}c[k>>2]=c[(c[k>>2]|0)+4>>2]}if((h|0)==9){c[g>>2]=1;n=c[g>>2]|0;i=f;return n|0}c[k>>2]=Up(e)|0;while(1){if(!(c[k>>2]|0))break a;if(Du(c[j>>2]|0,c[k>>2]|0,c[l>>2]|0,c[m>>2]|0)|0)break;c[k>>2]=c[(c[k>>2]|0)+12>>2]}c[g>>2]=1;n=c[g>>2]|0;i=f;return n|0}while(0);c[g>>2]=0;n=c[g>>2]|0;i=f;return n|0}function dw(b){b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=b;b=c[f>>2]|0;if(c[(c[f>>2]|0)+408>>2]|0)b=c[b+408>>2]|0;c[e>>2]=b;a[(c[e>>2]|0)+20>>0]=1;i=d;return}function ew(e,f,g,h,j,k,l,m,n,o){e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;var p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;x=i;i=i+64|0;D=x+44|0;r=x+40|0;t=x+36|0;z=x+32|0;F=x+28|0;A=x+24|0;B=x+48|0;G=x+53|0;u=x+52|0;H=x+51|0;w=x+20|0;s=x+16|0;v=x+12|0;y=x+50|0;E=x+8|0;p=x+4|0;C=x;c[D>>2]=e;c[r>>2]=f;c[t>>2]=g;c[z>>2]=h;c[F>>2]=j;c[A>>2]=k;b[B>>1]=l;a[G>>0]=m;a[u>>0]=n;a[H>>0]=o;c[w>>2]=c[(c[D>>2]|0)+8>>2];c[s>>2]=0;c[v>>2]=Nr(c[w>>2]|0)|0;a[y>>0]=(d[(c[r>>2]|0)+44>>0]&32|0)==0?70:68;if(!(a[H>>0]|0))We(c[w>>2]|0,d[y>>0]|0,c[z>>2]|0,c[v>>2]|0,c[A>>2]|0,b[B>>1]|0)|0;H=(cw(c[D>>2]|0,c[r>>2]|0,0,0)|0)!=0;if(H|(c[t>>2]|0)!=0){c[E>>2]=gw(c[D>>2]|0,c[t>>2]|0,0,0,3,c[r>>2]|0,d[u>>0]|0)|0;H=hw(c[D>>2]|0,c[r>>2]|0)|0;c[E>>2]=c[E>>2]|H;c[s>>2]=(c[(c[D>>2]|0)+72>>2]|0)+1;H=(c[D>>2]|0)+72|0;c[H>>2]=(c[H>>2]|0)+(1+(b[(c[r>>2]|0)+38>>1]|0));fp(c[w>>2]|0,33,c[A>>2]|0,c[s>>2]|0)|0;c[p>>2]=0;while(1){if((c[p>>2]|0)>=(b[(c[r>>2]|0)+38>>1]|0))break;if((c[E>>2]|0)!=-1){if((c[p>>2]|0)<=31?(c[E>>2]&1<>2]|0)!=0:0)q=9}else q=9;if((q|0)==9){q=0;zs(c[w>>2]|0,c[r>>2]|0,c[z>>2]|0,c[p>>2]|0,(c[s>>2]|0)+(c[p>>2]|0)+1|0)}c[p>>2]=(c[p>>2]|0)+1}c[C>>2]=Mr(c[w>>2]|0)|0;tu(c[D>>2]|0,c[t>>2]|0,109,0,1,c[r>>2]|0,c[s>>2]|0,d[u>>0]|0,c[v>>2]|0);H=c[C>>2]|0;if((H|0)<(Mr(c[w>>2]|0)|0))We(c[w>>2]|0,d[y>>0]|0,c[z>>2]|0,c[v>>2]|0,c[A>>2]|0,b[B>>1]|0)|0;yu(c[D>>2]|0,c[r>>2]|0,c[s>>2]|0,0,0,0)}if(c[(c[r>>2]|0)+12>>2]|0){g=c[D>>2]|0;h=c[r>>2]|0;j=c[s>>2]|0;iw(g,h,0,j,0,0);j=c[D>>2]|0;h=c[t>>2]|0;g=c[r>>2]|0;f=c[s>>2]|0;H=a[u>>0]|0;H=H&255;e=c[v>>2]|0;tu(j,h,109,0,2,g,f,H,e);e=c[w>>2]|0;H=c[v>>2]|0;Pr(e,H);i=x;return}fw(c[D>>2]|0,c[r>>2]|0,c[z>>2]|0,c[F>>2]|0,0);fp(c[w>>2]|0,95,c[z>>2]|0,(d[G>>0]|0)!=0?1:0)|0;if(!(a[G>>0]|0)){g=c[D>>2]|0;h=c[r>>2]|0;j=c[s>>2]|0;iw(g,h,0,j,0,0);j=c[D>>2]|0;h=c[t>>2]|0;g=c[r>>2]|0;f=c[s>>2]|0;H=a[u>>0]|0;H=H&255;e=c[v>>2]|0;tu(j,h,109,0,2,g,f,H,e);e=c[w>>2]|0;H=c[v>>2]|0;Pr(e,H);i=x;return}bf(c[w>>2]|0,-1,c[c[r>>2]>>2]|0,0);g=c[D>>2]|0;h=c[r>>2]|0;j=c[s>>2]|0;iw(g,h,0,j,0,0);j=c[D>>2]|0;h=c[t>>2]|0;g=c[r>>2]|0;f=c[s>>2]|0;H=a[u>>0]|0;H=H&255;e=c[v>>2]|0;tu(j,h,109,0,2,g,f,H,e);e=c[w>>2]|0;H=c[v>>2]|0;Pr(e,H);i=x;return}function fw(a,e,f,g,h){a=a|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;u=i;i=i+48|0;l=u+44|0;w=u+40|0;n=u+36|0;v=u+32|0;s=u+28|0;t=u+24|0;q=u+20|0;o=u+16|0;m=u+12|0;p=u+8|0;j=u+4|0;r=u;c[l>>2]=a;c[w>>2]=e;c[n>>2]=f;c[v>>2]=g;c[s>>2]=h;c[q>>2]=-1;c[p>>2]=0;c[j>>2]=c[(c[l>>2]|0)+8>>2];if(!((d[(c[w>>2]|0)+44>>0]|0)&32))h=0;else h=Zr(c[w>>2]|0)|0;c[r>>2]=h;c[t>>2]=0;c[m>>2]=c[(c[w>>2]|0)+8>>2];while(1){if(!(c[m>>2]|0))break;if(!((c[s>>2]|0)!=0?(c[(c[s>>2]|0)+(c[t>>2]<<2)>>2]|0)==0:0))k=7;if((k|0)==7?(k=0,(c[m>>2]|0)!=(c[r>>2]|0)):0){c[q>>2]=ps(c[l>>2]|0,c[m>>2]|0,c[n>>2]|0,0,1,o,c[p>>2]|0,c[q>>2]|0)|0;w=c[m>>2]|0;if((d[(c[m>>2]|0)+55>>0]|0)>>>3&1)w=b[w+50>>1]|0;else w=b[w+52>>1]|0;ip(c[j>>2]|0,111,(c[v>>2]|0)+(c[t>>2]|0)|0,c[q>>2]|0,w&65535)|0;qs(c[l>>2]|0,c[o>>2]|0);c[p>>2]=c[m>>2]}c[t>>2]=(c[t>>2]|0)+1;c[m>>2]=c[(c[m>>2]|0)+20>>2]}i=u;return}function gw(a,b,e,f,g,h,j){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;s=i;i=i+48|0;o=s+40|0;v=s+36|0;k=s+32|0;n=s+28|0;u=s+24|0;q=s+20|0;r=s+16|0;t=s+12|0;l=s+8|0;p=s+4|0;m=s;c[o>>2]=a;c[v>>2]=b;c[k>>2]=e;c[n>>2]=f;c[u>>2]=g;c[q>>2]=h;c[r>>2]=j;c[t>>2]=(c[k>>2]|0)!=0?110:109;c[l>>2]=0;c[p>>2]=c[v>>2];while(1){if(!(c[p>>2]|0))break;if((((d[(c[p>>2]|0)+8>>0]|0|0)==(c[t>>2]|0)?(c[u>>2]&(d[(c[p>>2]|0)+9>>0]|0)|0)!=0:0)?(ex(c[(c[p>>2]|0)+16>>2]|0,c[k>>2]|0)|0)!=0:0)?(c[m>>2]=lw(c[o>>2]|0,c[p>>2]|0,c[q>>2]|0,c[r>>2]|0)|0,(c[m>>2]|0)!=0):0)c[l>>2]=c[l>>2]|c[(c[m>>2]|0)+16+(c[n>>2]<<2)>>2];c[p>>2]=c[(c[p>>2]|0)+32>>2]}i=s;return c[l>>2]|0}function hw(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;k=i;i=i+32|0;j=k+20|0;f=k+16|0;g=k+12|0;l=k+8|0;m=k+4|0;h=k;c[j>>2]=a;c[f>>2]=d;c[g>>2]=0;if(!(c[(c[c[j>>2]>>2]|0)+24>>2]&524288)){a=c[g>>2]|0;i=k;return a|0}c[l>>2]=c[(c[f>>2]|0)+16>>2];while(1){if(!(c[l>>2]|0))break;c[m>>2]=0;while(1){if((c[m>>2]|0)>=(c[(c[l>>2]|0)+20>>2]|0))break;if((c[(c[l>>2]|0)+36+(c[m>>2]<<3)>>2]|0)>31)d=-1;else d=1<>2]|0)+36+(c[m>>2]<<3)>>2];c[g>>2]=c[g>>2]|d;c[m>>2]=(c[m>>2]|0)+1}c[l>>2]=c[(c[l>>2]|0)+4>>2]}c[l>>2]=Up(c[f>>2]|0)|0;while(1){if(!(c[l>>2]|0))break;c[h>>2]=0;$t(c[j>>2]|0,c[f>>2]|0,c[l>>2]|0,h,0)|0;a:do if(c[h>>2]|0){c[m>>2]=0;while(1){if((c[m>>2]|0)>=(e[(c[h>>2]|0)+50>>1]|0))break a;if((b[(c[(c[h>>2]|0)+4>>2]|0)+(c[m>>2]<<1)>>1]|0)>31)d=-1;else d=1<>2]|0)+4>>2]|0)+(c[m>>2]<<1)>>1];c[g>>2]=c[g>>2]|d;c[m>>2]=(c[m>>2]|0)+1}}while(0);c[l>>2]=c[(c[l>>2]|0)+12>>2]}a=c[g>>2]|0;i=k;return a|0}function iw(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;q=i;i=i+32|0;k=q+28|0;m=q+24|0;p=q+20|0;n=q+16|0;h=q+12|0;r=q+8|0;o=q+4|0;l=q;c[k>>2]=a;c[m>>2]=b;c[p>>2]=d;c[n>>2]=e;c[h>>2]=f;c[r>>2]=g;if(!(c[(c[c[k>>2]>>2]|0)+24>>2]&524288)){i=q;return}c[o>>2]=Up(c[m>>2]|0)|0;while(1){if(!(c[o>>2]|0))break;if(!((c[h>>2]|0)!=0?(Du(c[m>>2]|0,c[o>>2]|0,c[h>>2]|0,c[r>>2]|0)|0)==0:0))j=6;if((j|0)==6?(j=0,c[l>>2]=jw(c[k>>2]|0,c[m>>2]|0,c[o>>2]|0,c[p>>2]|0)|0,(c[l>>2]|0)!=0):0)kw(c[k>>2]|0,c[l>>2]|0,c[m>>2]|0,c[n>>2]|0,2,0);c[o>>2]=c[(c[o>>2]|0)+12>>2]}i=q;return}function jw(e,f,g,h){e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0;q=i;i=i+144|0;l=q+136|0;w=q+132|0;r=q+128|0;j=q+124|0;p=q+120|0;D=q+116|0;C=q+112|0;n=q+108|0;m=q+104|0;B=q+140|0;y=q+100|0;x=q+96|0;M=q+92|0;E=q+88|0;o=q+84|0;t=q+80|0;u=q+76|0;v=q+72|0;N=q+68|0;H=q+64|0;I=q+56|0;F=q+48|0;L=q+40|0;G=q+32|0;K=q+28|0;J=q+24|0;s=q+20|0;O=q+16|0;A=q+8|0;z=q;c[w>>2]=e;c[r>>2]=f;c[j>>2]=g;c[p>>2]=h;c[D>>2]=c[c[w>>2]>>2];c[m>>2]=(c[p>>2]|0)!=0&1;c[C>>2]=d[(c[j>>2]|0)+25+(c[m>>2]|0)>>0];c[n>>2]=c[(c[j>>2]|0)+28+(c[m>>2]<<2)>>2];if(!((c[C>>2]|0)==0|(c[n>>2]|0)!=0)){c[M>>2]=0;c[E>>2]=0;c[o>>2]=0;c[t>>2]=0;c[u>>2]=0;c[v>>2]=0;c[H>>2]=0;if($t(c[w>>2]|0,c[r>>2]|0,c[j>>2]|0,M,E)|0){c[l>>2]=0;e=c[l>>2]|0;i=q;return e|0}c[N>>2]=0;while(1){if((c[N>>2]|0)>=(c[(c[j>>2]|0)+20>>2]|0))break;c[I+0>>2]=c[6094];c[I+4>>2]=c[6095];c[F+0>>2]=c[6096];c[F+4>>2]=c[6097];if(c[E>>2]|0)h=c[(c[E>>2]|0)+(c[N>>2]<<2)>>2]|0;else h=c[(c[j>>2]|0)+36>>2]|0;c[K>>2]=h;if(c[M>>2]|0)h=c[(c[(c[r>>2]|0)+4>>2]|0)+((b[(c[(c[M>>2]|0)+4>>2]|0)+(c[N>>2]<<1)>>1]|0)*24|0)>>2]|0;else h=24392;c[G>>2]=h;c[L>>2]=c[(c[(c[c[j>>2]>>2]|0)+4>>2]|0)+((c[K>>2]|0)*24|0)>>2];c[G+4>>2]=Mb(c[G>>2]|0)|0;c[L+4>>2]=Mb(c[L>>2]|0)|0;f=c[w>>2]|0;g=c[w>>2]|0;e=Rn(c[w>>2]|0,27,0,0,I)|0;e=Rn(g,122,e,Rn(c[w>>2]|0,27,0,0,G)|0,0)|0;c[J>>2]=Rn(f,79,e,Rn(c[w>>2]|0,27,0,0,L)|0,0)|0;c[t>>2]=mr(c[D>>2]|0,c[t>>2]|0,c[J>>2]|0)|0;if(c[p>>2]|0){h=c[w>>2]|0;f=c[w>>2]|0;g=Rn(c[w>>2]|0,27,0,0,I)|0;g=Rn(f,122,g,Rn(c[w>>2]|0,27,0,0,G)|0,0)|0;f=c[w>>2]|0;e=Rn(c[w>>2]|0,27,0,0,F)|0;c[J>>2]=Rn(h,73,g,Rn(f,122,e,Rn(c[w>>2]|0,27,0,0,G)|0,0)|0,0)|0;c[H>>2]=mr(c[D>>2]|0,c[H>>2]|0,c[J>>2]|0)|0}if((c[C>>2]|0)!=6?(c[C>>2]|0)!=9|(c[p>>2]|0)!=0:0){do if((c[C>>2]|0)!=9){if((c[C>>2]|0)!=8){c[s>>2]=Rn(c[w>>2]|0,101,0,0,0)|0;break}c[O>>2]=c[(c[(c[c[j>>2]>>2]|0)+4>>2]|0)+((c[K>>2]|0)*24|0)+4>>2];if(c[O>>2]|0){c[s>>2]=Bq(c[D>>2]|0,c[O>>2]|0,0)|0;break}else{c[s>>2]=Rn(c[w>>2]|0,101,0,0,0)|0;break}}else{f=c[w>>2]|0;e=Rn(c[w>>2]|0,27,0,0,F)|0;c[s>>2]=Rn(f,122,e,Rn(c[w>>2]|0,27,0,0,G)|0,0)|0}while(0);c[u>>2]=eo(c[w>>2]|0,c[u>>2]|0,c[s>>2]|0)|0;fo(c[w>>2]|0,c[u>>2]|0,L,0)}c[N>>2]=(c[N>>2]|0)+1}Xb(c[D>>2]|0,c[E>>2]|0);c[y>>2]=c[c[c[j>>2]>>2]>>2];c[x>>2]=Mb(c[y>>2]|0)|0;if((c[C>>2]|0)==6){c[A>>2]=c[y>>2];c[A+4>>2]=c[x>>2];c[z>>2]=ho(c[D>>2]|0,57,24400)|0;if(c[z>>2]|0)a[(c[z>>2]|0)+1>>0]=2;g=c[w>>2]|0;f=eo(c[w>>2]|0,0,c[z>>2]|0)|0;e=ko(c[D>>2]|0,0,A,0)|0;c[v>>2]=co(g,f,e,c[t>>2]|0,0,0,0,0,0,0)|0;c[t>>2]=0}a[B>>0]=a[(c[D>>2]|0)+250>>0]|0;a[(c[D>>2]|0)+250>>0]=0;c[n>>2]=se(c[D>>2]|0,77+(c[x>>2]|0)|0,0)|0;if((c[n>>2]|0)!=0?(e=(c[n>>2]|0)+36|0,c[(c[n>>2]|0)+28>>2]=e,c[o>>2]=e,c[(c[o>>2]|0)+12>>2]=(c[o>>2]|0)+40,c[(c[o>>2]|0)+16>>2]=c[x>>2],dF(c[(c[o>>2]|0)+12>>2]|0,c[y>>2]|0,c[x>>2]|0)|0,e=Bq(c[D>>2]|0,c[t>>2]|0,1)|0,c[(c[o>>2]|0)+20>>2]=e,e=Jq(c[D>>2]|0,c[u>>2]|0,1)|0,c[(c[o>>2]|0)+24>>2]=e,e=Wp(c[D>>2]|0,c[v>>2]|0,1)|0,c[(c[o>>2]|0)+8>>2]=e,(c[H>>2]|0)!=0):0){c[H>>2]=Rn(c[w>>2]|0,19,c[H>>2]|0,0,0)|0;e=Bq(c[D>>2]|0,c[H>>2]|0,1)|0;c[(c[n>>2]|0)+12>>2]=e}a[(c[D>>2]|0)+250>>0]=a[B>>0]|0;wn(c[D>>2]|0,c[t>>2]|0);wn(c[D>>2]|0,c[H>>2]|0);sn(c[D>>2]|0,c[u>>2]|0);tn(c[D>>2]|0,c[v>>2]|0);if((d[(c[D>>2]|0)+64>>0]|0)==1){dx(c[D>>2]|0,c[n>>2]|0);c[l>>2]=0;e=c[l>>2]|0;i=q;return e|0}s=c[C>>2]|0;if((s|0)==6)a[c[o>>2]>>0]=119;else if((s|0)==9?(c[p>>2]|0)==0:0)a[c[o>>2]>>0]=109;else k=37;if((k|0)==37)a[c[o>>2]>>0]=110;c[(c[o>>2]|0)+4>>2]=c[n>>2];c[(c[n>>2]|0)+20>>2]=c[(c[r>>2]|0)+68>>2];c[(c[n>>2]|0)+24>>2]=c[(c[r>>2]|0)+68>>2];c[(c[j>>2]|0)+28+(c[m>>2]<<2)>>2]=c[n>>2];a[(c[n>>2]|0)+8>>0]=(c[p>>2]|0)!=0?110:109}c[l>>2]=c[n>>2];e=c[l>>2]|0;i=q;return e|0}function kw(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;o=i;i=i+48|0;n=o+32|0;p=o+28|0;r=o+24|0;l=o+20|0;q=o+16|0;m=o+12|0;k=o+8|0;h=o+4|0;j=o;c[n>>2]=a;c[p>>2]=b;c[r>>2]=d;c[l>>2]=e;c[q>>2]=f;c[m>>2]=g;c[k>>2]=dp(c[n>>2]|0)|0;c[h>>2]=lw(c[n>>2]|0,c[p>>2]|0,c[r>>2]|0,c[q>>2]|0)|0;if(!(c[h>>2]|0)){i=o;return}if(c[c[p>>2]>>2]|0)g=0==(c[(c[c[n>>2]>>2]|0)+24>>2]&262144|0);else g=0;c[j>>2]=g&1;b=c[k>>2]|0;a=c[l>>2]|0;q=c[m>>2]|0;d=(c[n>>2]|0)+72|0;r=(c[d>>2]|0)+1|0;c[d>>2]=r;ip(b,131,a,q,r)|0;bf(c[k>>2]|0,-1,c[(c[h>>2]|0)+8>>2]|0,-18);Xe(c[k>>2]|0,c[j>>2]&255);i=o;return}function lw(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;g=i;i=i+32|0;h=g+20|0;j=g+16|0;k=g+12|0;f=g+8|0;m=g+4|0;l=g;c[h>>2]=a;c[j>>2]=b;c[k>>2]=d;c[f>>2]=e;e=c[h>>2]|0;if(c[(c[h>>2]|0)+408>>2]|0)e=c[e+408>>2]|0;c[m>>2]=e;c[l>>2]=c[(c[m>>2]|0)+528>>2];while(1){if(!(c[l>>2]|0))break;if((c[c[l>>2]>>2]|0)==(c[j>>2]|0)?(c[(c[l>>2]|0)+12>>2]|0)==(c[f>>2]|0):0)break;c[l>>2]=c[(c[l>>2]|0)+4>>2]}if(c[l>>2]|0){a=c[l>>2]|0;i=g;return a|0}c[l>>2]=mw(c[h>>2]|0,c[j>>2]|0,c[k>>2]|0,c[f>>2]|0)|0;a=c[l>>2]|0;i=g;return a|0}function mw(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;q=i;i=i+96|0;j=q;s=q+84|0;w=q+80|0;l=q+76|0;u=q+72|0;p=q+68|0;v=q+64|0;k=q+60|0;t=q+56|0;m=q+52|0;r=q+48|0;n=q+16|0;x=q+12|0;o=q+8|0;h=q+4|0;c[w>>2]=b;c[l>>2]=e;c[u>>2]=f;c[p>>2]=g;g=c[w>>2]|0;if(c[(c[w>>2]|0)+408>>2]|0)g=c[g+408>>2]|0;c[v>>2]=g;c[k>>2]=c[c[w>>2]>>2];c[m>>2]=0;c[x>>2]=0;c[h>>2]=0;c[t>>2]=se(c[k>>2]|0,24,0)|0;if(!(c[t>>2]|0)){c[s>>2]=0;b=c[s>>2]|0;i=q;return b|0}c[(c[t>>2]|0)+4>>2]=c[(c[v>>2]|0)+528>>2];c[(c[v>>2]|0)+528>>2]=c[t>>2];b=se(c[k>>2]|0,28,0)|0;c[x>>2]=b;c[(c[t>>2]|0)+8>>2]=b;if(!(c[x>>2]|0)){c[s>>2]=0;b=c[s>>2]|0;i=q;return b|0}nw(c[(c[v>>2]|0)+8>>2]|0,c[x>>2]|0);c[c[t>>2]>>2]=c[l>>2];c[(c[t>>2]|0)+12>>2]=c[p>>2];c[(c[t>>2]|0)+16>>2]=-1;c[(c[t>>2]|0)+20>>2]=-1;c[o>>2]=se(c[k>>2]|0,536,0)|0;if(!(c[o>>2]|0)){c[s>>2]=0;b=c[s>>2]|0;i=q;return b|0}c[n+0>>2]=0;c[n+4>>2]=0;c[n+8>>2]=0;c[n+12>>2]=0;c[n+16>>2]=0;c[n+20>>2]=0;c[n+24>>2]=0;c[n+28>>2]=0;c[n>>2]=c[o>>2];c[c[o>>2]>>2]=c[k>>2];c[(c[o>>2]|0)+412>>2]=c[u>>2];c[(c[o>>2]|0)+408>>2]=c[v>>2];c[(c[o>>2]|0)+492>>2]=c[c[l>>2]>>2];a[(c[o>>2]|0)+436>>0]=a[(c[l>>2]|0)+8>>0]|0;c[(c[o>>2]|0)+424>>2]=c[(c[w>>2]|0)+424>>2];c[r>>2]=dp(c[o>>2]|0)|0;if(c[r>>2]|0){e=c[r>>2]|0;b=c[k>>2]|0;c[j>>2]=c[c[l>>2]>>2];bf(e,-1,Te(b,24176,j)|0,-1);if(c[(c[l>>2]|0)+12>>2]|0){c[m>>2]=Bq(c[k>>2]|0,c[(c[l>>2]|0)+12>>2]|0,0)|0;if(0==(vq(n,c[m>>2]|0)|0)?(d[(c[k>>2]|0)+64>>0]|0|0)==0:0){c[h>>2]=Nr(c[r>>2]|0)|0;xs(c[o>>2]|0,c[m>>2]|0,c[h>>2]|0,16)}wn(c[k>>2]|0,c[m>>2]|0)}ow(c[o>>2]|0,c[(c[l>>2]|0)+28>>2]|0,c[p>>2]|0)|0;if(c[h>>2]|0)Pr(c[r>>2]|0,c[h>>2]|0);mp(c[r>>2]|0,24)|0;pw(c[w>>2]|0,c[o>>2]|0);if(!(d[(c[k>>2]|0)+64>>0]|0)){b=qw(c[r>>2]|0,(c[x>>2]|0)+4|0,(c[v>>2]|0)+392|0)|0;c[c[x>>2]>>2]=b}c[(c[x>>2]|0)+8>>2]=c[(c[o>>2]|0)+72>>2];c[(c[x>>2]|0)+12>>2]=c[(c[o>>2]|0)+68>>2];c[(c[x>>2]|0)+16>>2]=c[(c[o>>2]|0)+80>>2];c[(c[x>>2]|0)+20>>2]=c[l>>2];c[(c[t>>2]|0)+16>>2]=c[(c[o>>2]|0)+428>>2];c[(c[t>>2]|0)+20>>2]=c[(c[o>>2]|0)+432>>2];qn(c[r>>2]|0)}ef(c[o>>2]|0);Xb(c[k>>2]|0,c[o>>2]|0);c[s>>2]=c[t>>2];b=c[s>>2]|0;i=q;return b|0}function nw(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;c[(c[f>>2]|0)+24>>2]=c[(c[e>>2]|0)+192>>2];c[(c[e>>2]|0)+192>>2]=c[f>>2];i=d;return}function ow(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;m=i;i=i+48|0;k=m+44|0;p=m+40|0;o=m+36|0;j=m+32|0;h=m+28|0;l=m+24|0;n=m+4|0;g=m;c[k>>2]=b;c[p>>2]=e;c[o>>2]=f;c[h>>2]=c[(c[k>>2]|0)+8>>2];c[l>>2]=c[c[k>>2]>>2];c[j>>2]=c[p>>2];while(1){if(!(c[j>>2]|0))break;if((c[o>>2]|0)==10)f=a[(c[j>>2]|0)+1>>0]|0;else f=c[o>>2]&255;a[(c[k>>2]|0)+437>>0]=f;f=d[c[j>>2]>>0]|0;if((f|0)==109){b=c[k>>2]|0;p=cx(c[k>>2]|0,c[j>>2]|0)|0;no(b,p,Bq(c[l>>2]|0,c[(c[j>>2]|0)+20>>2]|0,0)|0)}else if((f|0)==108){f=c[k>>2]|0;e=cx(c[k>>2]|0,c[j>>2]|0)|0;b=Wp(c[l>>2]|0,c[(c[j>>2]|0)+8>>2]|0,0)|0;p=yr(c[l>>2]|0,c[(c[j>>2]|0)+28>>2]|0)|0;qo(f,e,b,p,d[(c[k>>2]|0)+437>>0]|0)}else if((f|0)==110){f=c[k>>2]|0;e=cx(c[k>>2]|0,c[j>>2]|0)|0;b=Jq(c[l>>2]|0,c[(c[j>>2]|0)+24>>2]|0,0)|0;p=Bq(c[l>>2]|0,c[(c[j>>2]|0)+20>>2]|0,0)|0;po(f,e,b,p,d[(c[k>>2]|0)+437>>0]|0)}else{c[g>>2]=Wp(c[l>>2]|0,c[(c[j>>2]|0)+8>>2]|0,0)|0;$s(n,4,0);ao(c[k>>2]|0,c[g>>2]|0,n)|0;tn(c[l>>2]|0,c[g>>2]|0)}if((d[c[j>>2]>>0]|0|0)!=119)mp(c[h>>2]|0,98)|0;c[j>>2]=c[(c[j>>2]|0)+32>>2]}i=m;return 0}function pw(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;e=d+4|0;f=d;c[e>>2]=a;c[f>>2]=b;b=c[f>>2]|0;if(!(c[(c[e>>2]|0)+64>>2]|0)){c[(c[e>>2]|0)+4>>2]=c[b+4>>2];c[(c[e>>2]|0)+64>>2]=c[(c[f>>2]|0)+64>>2];i=d;return}else{Xb(c[b>>2]|0,c[(c[f>>2]|0)+4>>2]|0);i=d;return}}function qw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;f=i;i=i+16|0;g=f+12|0;h=f+8|0;j=f+4|0;e=f;c[g>>2]=a;c[h>>2]=b;c[j>>2]=d;c[e>>2]=c[(c[g>>2]|0)+4>>2];rw(c[g>>2]|0,c[j>>2]|0);c[c[h>>2]>>2]=c[(c[g>>2]|0)+32>>2];c[(c[g>>2]|0)+4>>2]=0;i=f;return c[e>>2]|0}function rw(e,f){e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;m=i;i=i+48|0;n=m+28|0;l=m+24|0;r=m+20|0;k=m+16|0;o=m+12|0;j=m+8|0;g=m+4|0;p=m+32|0;q=m;c[n>>2]=e;c[l>>2]=f;c[k>>2]=c[c[l>>2]>>2];c[j>>2]=c[(c[n>>2]|0)+24>>2];c[g>>2]=c[(c[j>>2]|0)+112>>2];e=(c[n>>2]|0)+88|0;b[e>>1]=b[e>>1]&-257|256;e=(c[n>>2]|0)+88|0;b[e>>1]=b[e>>1]&-513;c[o>>2]=c[(c[n>>2]|0)+4>>2];c[r>>2]=(c[(c[n>>2]|0)+32>>2]|0)-1;while(1){if((c[r>>2]|0)<0)break;a[p>>0]=a[c[o>>2]>>0]|0;switch(d[p>>0]|0|0){case 6:case 8:{c[(c[o>>2]|0)+16>>2]=47;a[(c[o>>2]|0)+1>>0]=-19;break};case 2:case 3:{h=8;break};case 10:case 1:{if((d[(c[o>>2]|0)+3>>0]|0|0)>(c[k>>2]|0))c[k>>2]=d[(c[o>>2]|0)+3>>0];break};case 12:case 13:case 11:{e=(c[n>>2]|0)+88|0;b[e>>1]=b[e>>1]&-257;e=(c[n>>2]|0)+88|0;b[e>>1]=b[e>>1]&-513|512;break};case 14:{c[q>>2]=c[(c[o>>2]|0)+ -20+4>>2];if((c[q>>2]|0)>(c[k>>2]|0))c[k>>2]=c[q>>2];break};case 15:{if((c[(c[o>>2]|0)+8>>2]|0)>(c[k>>2]|0))c[k>>2]=c[(c[o>>2]|0)+8>>2];break};case 4:{if(c[(c[o>>2]|0)+8>>2]|0){h=(c[n>>2]|0)+88|0;b[h>>1]=b[h>>1]&-257;h=8}else h=8;break};case 5:case 7:case 9:{c[(c[o>>2]|0)+16>>2]=46;a[(c[o>>2]|0)+1>>0]=-19;break};default:{}}if((h|0)==8){h=0;e=(c[n>>2]|0)+88|0;b[e>>1]=b[e>>1]&-513|512}a[(c[o>>2]|0)+2>>0]=a[24192+(d[p>>0]|0)>>0]|0;if(((d[(c[o>>2]|0)+2>>0]|0)&1|0)!=0?(c[(c[o>>2]|0)+8>>2]|0)<0:0)c[(c[o>>2]|0)+8>>2]=c[(c[g>>2]|0)+(-1-(c[(c[o>>2]|0)+8>>2]|0)<<2)>>2];c[r>>2]=(c[r>>2]|0)+ -1;c[o>>2]=(c[o>>2]|0)+20}Xb(c[c[n>>2]>>2]|0,c[(c[j>>2]|0)+112>>2]|0);c[(c[j>>2]|0)+112>>2]=0;c[(c[j>>2]|0)+108>>2]=0;c[c[l>>2]>>2]=c[k>>2];i=m;return}function sw(f,g){f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0;h=i;i=i+16|0;j=h+12|0;l=h+8|0;k=h+4|0;m=h;c[l>>2]=f;c[k>>2]=g;b[(c[l>>2]|0)+44>>1]=0;g=(c[l>>2]|0)+72|0;a[g>>0]=d[g>>0]&-7;c[c[k>>2]>>2]=0;g=c[l>>2]|0;if((d[(c[l>>2]|0)+73>>0]|0)!=1){c[j>>2]=ax(g,c[k>>2]|0)|0;f=c[j>>2]|0;i=h;return f|0}c[m>>2]=c[(c[l>>2]|0)+120+(b[g+76>>1]<<2)>>2];g=(c[l>>2]|0)+78+(b[(c[l>>2]|0)+76>>1]<<1)|0;f=(b[g>>1]|0)+1<<16>>16;b[g>>1]=f;if((f&65535|0)>=(e[(c[m>>2]|0)+18>>1]|0)){f=(c[l>>2]|0)+78+(b[(c[l>>2]|0)+76>>1]<<1)|0;b[f>>1]=(b[f>>1]|0)+ -1<<16>>16;c[j>>2]=ax(c[l>>2]|0,c[k>>2]|0)|0;f=c[j>>2]|0;i=h;return f|0}if(a[(c[m>>2]|0)+5>>0]|0){c[j>>2]=0;f=c[j>>2]|0;i=h;return f|0}else{c[j>>2]=bx(c[l>>2]|0)|0;f=c[j>>2]|0;i=h;return f|0}return 0}function tw(f,g){f=f|0;g=g|0;var h=0,j=0,k=0,l=0;h=i;i=i+16|0;j=h+8|0;k=h+4|0;l=h;c[k>>2]=f;c[l>>2]=g;c[c[l>>2]>>2]=0;f=(c[k>>2]|0)+72|0;a[f>>0]=d[f>>0]&-15;b[(c[k>>2]|0)+44>>1]=0;if(((d[(c[k>>2]|0)+73>>0]|0)==1?(e[(c[k>>2]|0)+78+(b[(c[k>>2]|0)+76>>1]<<1)>>1]|0)!=0:0)?(d[(c[(c[k>>2]|0)+120+(b[(c[k>>2]|0)+76>>1]<<2)>>2]|0)+5>>0]|0)!=0:0){f=(c[k>>2]|0)+78+(b[(c[k>>2]|0)+76>>1]<<1)|0;b[f>>1]=(b[f>>1]|0)+ -1<<16>>16;c[j>>2]=0;f=c[j>>2]|0;i=h;return f|0}c[j>>2]=uw(c[k>>2]|0,c[l>>2]|0)|0;f=c[j>>2]|0;i=h;return f|0}function uw(f,g){f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;k=i;i=i+32|0;j=k+20|0;m=k+16|0;l=k+12|0;n=k+8|0;o=k+4|0;p=k;c[m>>2]=f;c[l>>2]=g;if((d[(c[m>>2]|0)+73>>0]|0)!=1){if((d[(c[m>>2]|0)+73>>0]|0)>=3)g=vw(c[m>>2]|0)|0;else g=0;c[n>>2]=g;if(c[n>>2]|0){c[j>>2]=c[n>>2];f=c[j>>2]|0;i=k;return f|0}if(!(d[(c[m>>2]|0)+73>>0]|0)){c[c[l>>2]>>2]=1;c[j>>2]=0;f=c[j>>2]|0;i=k;return f|0}if((c[(c[m>>2]|0)+68>>2]|0)!=0?(a[(c[m>>2]|0)+73>>0]=1,f=(c[(c[m>>2]|0)+68>>2]|0)<0,c[(c[m>>2]|0)+68>>2]=0,f):0){c[j>>2]=0;f=c[j>>2]|0;i=k;return f|0}}c[o>>2]=c[(c[m>>2]|0)+120+(b[(c[m>>2]|0)+76>>1]<<2)>>2];do if(a[(c[o>>2]|0)+5>>0]|0){while(1){p=b[(c[m>>2]|0)+76>>1]|0;if(e[(c[m>>2]|0)+78+(b[(c[m>>2]|0)+76>>1]<<1)>>1]|0)break;g=c[m>>2]|0;if(!p){h=17;break}yw(g)}if((h|0)==17){a[g+73>>0]=0;c[c[l>>2]>>2]=1;c[j>>2]=0;f=c[j>>2]|0;i=k;return f|0}f=(c[m>>2]|0)+78+(p<<1)|0;b[f>>1]=(b[f>>1]|0)+ -1<<16>>16;c[o>>2]=c[(c[m>>2]|0)+120+(b[(c[m>>2]|0)+76>>1]<<2)>>2];if((d[(c[o>>2]|0)+2>>0]|0)!=0?(a[(c[o>>2]|0)+5>>0]|0)==0:0){c[n>>2]=tw(c[m>>2]|0,c[l>>2]|0)|0;break}c[n>>2]=0}else{c[p>>2]=e[(c[m>>2]|0)+78+(b[(c[m>>2]|0)+76>>1]<<1)>>1];f=c[m>>2]|0;c[n>>2]=ww(f,Hh((c[(c[o>>2]|0)+56>>2]|0)+(e[(c[o>>2]|0)+20>>1]&(d[(c[(c[o>>2]|0)+64>>2]|0)+(c[p>>2]<<1)>>0]<<8|d[(c[(c[o>>2]|0)+64>>2]|0)+(c[p>>2]<<1)+1>>0]))|0)|0)|0;if(!(c[n>>2]|0)){c[n>>2]=xw(c[m>>2]|0)|0;break}c[j>>2]=c[n>>2];f=c[j>>2]|0;i=k;return f|0}while(0);c[j>>2]=c[n>>2];f=c[j>>2]|0;i=k;return f|0}function vw(b){b=b|0;var e=0,f=0,g=0,h=0;e=i;i=i+16|0;f=e+8|0;h=e+4|0;g=e;c[h>>2]=b;b=c[h>>2]|0;if((d[(c[h>>2]|0)+73>>0]|0|0)==4){c[f>>2]=c[b+68>>2];b=c[f>>2]|0;i=e;return b|0}a[b+73>>0]=0;b=(c[h>>2]|0)+48|0;c[g>>2]=Dw(c[h>>2]|0,c[(c[h>>2]|0)+56>>2]|0,c[b>>2]|0,c[b+4>>2]|0,0,(c[h>>2]|0)+68|0)|0;if(((c[g>>2]|0)==0?(hc(c[(c[h>>2]|0)+56>>2]|0),c[(c[h>>2]|0)+56>>2]=0,(c[(c[h>>2]|0)+68>>2]|0)!=0):0)?(d[(c[h>>2]|0)+73>>0]|0|0)==1:0)a[(c[h>>2]|0)+73>>0]=2;c[f>>2]=c[g>>2];b=c[f>>2]|0;i=e;return b|0}function ww(f,g){f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;h=i;i=i+32|0;j=h+24|0;m=h+20|0;p=h+16|0;k=h+12|0;n=h+8|0;l=h+4|0;o=h;c[m>>2]=f;c[p>>2]=g;c[n>>2]=b[(c[m>>2]|0)+76>>1];c[o>>2]=c[(c[m>>2]|0)+4>>2];if((b[(c[m>>2]|0)+76>>1]|0)>=19){c[j>>2]=kj(56561)|0;f=c[j>>2]|0;i=h;return f|0}c[k>>2]=zw(c[o>>2]|0,c[p>>2]|0,l,(d[(c[m>>2]|0)+72>>0]&1|0)==0?2:0)|0;if(c[k>>2]|0){c[j>>2]=c[k>>2];f=c[j>>2]|0;i=h;return f|0}c[(c[m>>2]|0)+120+((c[n>>2]|0)+1<<2)>>2]=c[l>>2];b[(c[m>>2]|0)+78+((c[n>>2]|0)+1<<1)>>1]=0;f=(c[m>>2]|0)+76|0;b[f>>1]=(b[f>>1]|0)+1<<16>>16;b[(c[m>>2]|0)+44>>1]=0;f=(c[m>>2]|0)+72|0;a[f>>0]=d[f>>0]&-7;if((e[(c[l>>2]|0)+18>>1]|0)>=1?(d[(c[l>>2]|0)+2>>0]|0)==(d[(c[(c[m>>2]|0)+120+(c[n>>2]<<2)>>2]|0)+2>>0]|0):0){c[j>>2]=0;f=c[j>>2]|0;i=h;return f|0}c[j>>2]=kj(56573)|0;f=c[j>>2]|0;i=h;return f|0}function xw(f){f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;j=i;i=i+32|0;h=j+16|0;g=j+12|0;m=j+8|0;k=j+4|0;l=j;c[g>>2]=f;c[k>>2]=0;c[l>>2]=0;while(1){n=c[(c[g>>2]|0)+120+(b[(c[g>>2]|0)+76>>1]<<2)>>2]|0;c[l>>2]=n;f=c[l>>2]|0;if(!((a[n+5>>0]|0)!=0^1)){l=5;break}c[m>>2]=Hh((c[(c[l>>2]|0)+56>>2]|0)+((d[f+6>>0]|0)+8)|0)|0;b[(c[g>>2]|0)+78+(b[(c[g>>2]|0)+76>>1]<<1)>>1]=b[(c[l>>2]|0)+18>>1]|0;c[k>>2]=ww(c[g>>2]|0,c[m>>2]|0)|0;if(c[k>>2]|0){l=4;break}}if((l|0)==4){c[h>>2]=c[k>>2];n=c[h>>2]|0;i=j;return n|0}else if((l|0)==5){b[(c[g>>2]|0)+78+(b[(c[g>>2]|0)+76>>1]<<1)>>1]=(e[f+18>>1]|0)-1;c[h>>2]=0;n=c[h>>2]|0;i=j;return n|0}return 0}function yw(e){e=e|0;var f=0,g=0;f=i;i=i+16|0;g=f;c[g>>2]=e;Rk(c[(c[g>>2]|0)+120+(b[(c[g>>2]|0)+76>>1]<<2)>>2]|0);e=(c[g>>2]|0)+76|0;b[e>>1]=(b[e>>1]|0)+ -1<<16>>16;b[(c[g>>2]|0)+44>>1]=0;e=(c[g>>2]|0)+72|0;a[e>>0]=d[e>>0]&-7;i=f;return}function zw(a,b,e,f){a=a|0;b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;g=i;i=i+32|0;m=g+16|0;l=g+12|0;j=g+8|0;k=g+4|0;h=g;c[m>>2]=a;c[l>>2]=b;c[j>>2]=e;c[k>>2]=f;a=c[l>>2]|0;if(a>>>0<=(Aw(c[m>>2]|0)|0)>>>0){c[h>>2]=Bw(c[m>>2]|0,c[l>>2]|0,c[j>>2]|0,c[k>>2]|0)|0;if(((c[h>>2]|0)==0?(d[c[c[j>>2]>>2]>>0]|0|0)==0:0)?(c[h>>2]=Sj(c[c[j>>2]>>2]|0)|0,(c[h>>2]|0)!=0):0)Rk(c[c[j>>2]>>2]|0)}else c[h>>2]=kj(53903)|0;i=g;return c[h>>2]|0}function Aw(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;i=d;return c[(c[b>>2]|0)+44>>2]|0}function Bw(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;k=i;i=i+32|0;g=k+24|0;f=k+20|0;l=k+16|0;j=k+12|0;n=k+8|0;h=k+4|0;m=k;c[f>>2]=a;c[l>>2]=b;c[j>>2]=d;c[n>>2]=e;c[h>>2]=Xc(c[c[f>>2]>>2]|0,c[l>>2]|0,m,c[n>>2]|0)|0;if(c[h>>2]|0){c[g>>2]=c[h>>2];n=c[g>>2]|0;i=k;return n|0}else{n=Cw(c[m>>2]|0,c[l>>2]|0,c[f>>2]|0)|0;c[c[j>>2]>>2]=n;c[g>>2]=0;n=c[g>>2]|0;i=k;return n|0}return 0}function Cw(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;g=i;i=i+16|0;k=g+12|0;h=g+8|0;j=g+4|0;f=g;c[k>>2]=b;c[h>>2]=d;c[j>>2]=e;c[f>>2]=Qj(c[k>>2]|0)|0;b=Zc(c[k>>2]|0)|0;c[(c[f>>2]|0)+56>>2]=b;c[(c[f>>2]|0)+68>>2]=c[k>>2];c[(c[f>>2]|0)+52>>2]=c[j>>2];c[(c[f>>2]|0)+72>>2]=c[h>>2];a[(c[f>>2]|0)+6>>0]=(c[(c[f>>2]|0)+72>>2]|0)==1?100:0;i=g;return c[f>>2]|0}function Dw(a,b,d,f,g,h){a=a|0;b=b|0;d=d|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;q=i;i=i+240|0;k=q+36|0;l=q+32|0;s=q+28|0;n=q;p=q+24|0;j=q+20|0;r=q+16|0;o=q+12|0;m=q+8|0;c[l>>2]=a;c[s>>2]=b;a=n;c[a>>2]=d;c[a+4>>2]=f;c[p>>2]=g;c[j>>2]=h;c[m>>2]=0;if(c[s>>2]|0){c[o>>2]=Ew(c[(c[l>>2]|0)+16>>2]|0,q+40|0,200,m)|0;if(!(c[o>>2]|0)){c[k>>2]=7;a=c[k>>2]|0;i=q;return a|0}Fw(c[(c[l>>2]|0)+16>>2]|0,c[n>>2]|0,c[s>>2]|0,c[o>>2]|0);if(!(e[(c[o>>2]|0)+4>>1]|0)){Xb(c[(c[(c[l>>2]|0)+16>>2]|0)+12>>2]|0,c[m>>2]|0);c[k>>2]=kj(52917)|0;a=c[k>>2]|0;i=q;return a|0}}else c[o>>2]=0;a=n;c[r>>2]=Gw(c[l>>2]|0,c[o>>2]|0,c[a>>2]|0,c[a+4>>2]|0,c[p>>2]|0,c[j>>2]|0)|0;if(c[m>>2]|0)Xb(c[(c[(c[l>>2]|0)+16>>2]|0)+12>>2]|0,c[m>>2]|0);c[k>>2]=c[r>>2];a=c[k>>2]|0;i=q;return a|0}function Ew(a,d,f,g){a=a|0;d=d|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;n=i;i=i+32|0;j=n+28|0;l=n+24|0;p=n+20|0;q=n+16|0;m=n+12|0;k=n+8|0;o=n+4|0;h=n;c[l>>2]=a;c[p>>2]=d;c[q>>2]=f;c[m>>2]=g;c[o>>2]=8-(c[p>>2]&7)&7;c[h>>2]=24+(((e[(c[l>>2]|0)+6>>1]|0)+1|0)*40|0);if((c[h>>2]|0)>((c[q>>2]|0)+(c[o>>2]|0)|0)){q=c[h>>2]|0;c[k>>2]=Qe(c[(c[l>>2]|0)+12>>2]|0,q,((q|0)<0)<<31>>31)|0;c[c[m>>2]>>2]=c[k>>2];if(!(c[k>>2]|0)){c[j>>2]=0;q=c[j>>2]|0;i=n;return q|0}}else{c[k>>2]=(c[p>>2]|0)+(c[o>>2]|0);c[c[m>>2]>>2]=0}c[(c[k>>2]|0)+8>>2]=(c[k>>2]|0)+24;c[c[k>>2]>>2]=c[l>>2];b[(c[k>>2]|0)+4>>1]=(e[(c[l>>2]|0)+6>>1]|0)+1;c[j>>2]=c[k>>2];q=c[j>>2]|0;i=n;return q|0}function Fw(f,g,h,j){f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;k=i;i=i+48|0;o=k+36|0;p=k+32|0;v=k+28|0;l=k+24|0;q=k+20|0;r=k+16|0;t=k+12|0;m=k+40|0;u=k+8|0;n=k+4|0;s=k;c[o>>2]=f;c[p>>2]=g;c[v>>2]=h;c[l>>2]=j;c[q>>2]=c[v>>2];c[n>>2]=c[(c[l>>2]|0)+8>>2];a[(c[l>>2]|0)+6>>0]=0;j=c[q>>2]|0;if((d[c[q>>2]>>0]|0|0)<128){c[u>>2]=d[j>>0];j=1}else j=(Rw(j,u)|0)&255;c[t>>2]=j&255;c[r>>2]=c[u>>2];b[m>>1]=0;while(1){if((c[t>>2]|0)>>>0>=(c[u>>2]|0)>>>0){n=11;break}if((c[r>>2]|0)>(c[p>>2]|0)){n=11;break}j=(c[q>>2]|0)+(c[t>>2]|0)|0;if((d[(c[q>>2]|0)+(c[t>>2]|0)>>0]|0|0)<128){c[s>>2]=d[j>>0];j=1}else j=(Rw(j,s)|0)&255;c[t>>2]=(c[t>>2]|0)+(j&255);a[(c[n>>2]|0)+10>>0]=a[(c[o>>2]|0)+4>>0]|0;c[(c[n>>2]|0)+32>>2]=c[(c[o>>2]|0)+12>>2];c[(c[n>>2]|0)+24>>2]=0;v=Xw((c[q>>2]|0)+(c[r>>2]|0)|0,c[s>>2]|0,c[n>>2]|0)|0;c[r>>2]=(c[r>>2]|0)+v;c[n>>2]=(c[n>>2]|0)+40;v=(b[m>>1]|0)+1<<16>>16;b[m>>1]=v;if((v&65535|0)>=(e[(c[l>>2]|0)+4>>1]|0|0)){n=11;break}}if((n|0)==11){b[(c[l>>2]|0)+4>>1]=b[m>>1]|0;i=k;return}}function Gw(f,g,h,j,k,l){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;z=i;i=i+96|0;w=z+80|0;D=z+76|0;B=z+72|0;s=z+8|0;F=z+68|0;o=z+64|0;p=z+60|0;n=z+56|0;v=z+52|0;m=z+48|0;u=z+44|0;y=z+40|0;x=z+36|0;t=z+32|0;q=z+28|0;r=z;A=z+24|0;C=z+20|0;E=z+16|0;c[D>>2]=f;c[B>>2]=g;f=s;c[f>>2]=h;c[f+4>>2]=j;c[F>>2]=k;c[o>>2]=l;if(((d[(c[D>>2]|0)+73>>0]|0)==1?(d[(c[D>>2]|0)+72>>0]&2|0)!=0:0)?(d[(c[(c[D>>2]|0)+120>>2]|0)+2>>0]|0)!=0:0){g=(c[D>>2]|0)+24|0;f=s;if((c[g>>2]|0)==(c[f>>2]|0)?(c[g+4>>2]|0)==(c[f+4>>2]|0):0){c[c[o>>2]>>2]=0;c[w>>2]=0;f=c[w>>2]|0;i=z;return f|0}if((d[(c[D>>2]|0)+72>>0]&8|0)!=0?(g=(c[D>>2]|0)+24|0,j=c[g+4>>2]|0,f=s,h=c[f+4>>2]|0,(j|0)<(h|0)|((j|0)==(h|0)?(c[g>>2]|0)>>>0<(c[f>>2]|0)>>>0:0)):0){c[c[o>>2]>>2]=-1;c[w>>2]=0;f=c[w>>2]|0;i=z;return f|0}}if(c[B>>2]|0){c[n>>2]=Hw(c[B>>2]|0)|0;a[(c[B>>2]|0)+7>>0]=0}else c[n>>2]=0;c[p>>2]=Iw(c[D>>2]|0)|0;if(c[p>>2]|0){c[w>>2]=c[p>>2];f=c[w>>2]|0;i=z;return f|0}if(!(d[(c[D>>2]|0)+73>>0]|0)){c[c[o>>2]>>2]=-1;c[w>>2]=0;f=c[w>>2]|0;i=z;return f|0}a:do{c[t>>2]=c[(c[D>>2]|0)+120+(b[(c[D>>2]|0)+76>>1]<<2)>>2];c[v>>2]=0;c[m>>2]=(e[(c[t>>2]|0)+18>>1]|0)-1;c[u>>2]=c[m>>2]>>1-(c[F>>2]|0);b[(c[D>>2]|0)+78+(b[(c[D>>2]|0)+76>>1]<<1)>>1]=c[u>>2];b:do if(!(c[n>>2]|0)){while(1){c[q>>2]=(c[(c[t>>2]|0)+56>>2]|0)+(e[(c[t>>2]|0)+20>>1]&(d[(c[(c[t>>2]|0)+64>>2]|0)+(c[u>>2]<<1)>>0]<<8|d[(c[(c[t>>2]|0)+64>>2]|0)+(c[u>>2]<<1)+1>>0]))+(d[(c[t>>2]|0)+7>>0]|0);c:do if(a[(c[t>>2]|0)+3>>0]|0)while(1){f=c[q>>2]|0;c[q>>2]=f+1;if(128>(d[f>>0]|0))break c;if((c[q>>2]|0)>>>0>=(c[(c[t>>2]|0)+60>>2]|0)>>>0){l=20;break a}}while(0);Jw(c[q>>2]|0,r)|0;g=r;j=c[g+4>>2]|0;f=s;h=c[f+4>>2]|0;if((j|0)<(h|0)|((j|0)==(h|0)?(c[g>>2]|0)>>>0<(c[f>>2]|0)>>>0:0)){c[v>>2]=(c[u>>2]|0)+1;if((c[v>>2]|0)>(c[m>>2]|0)){l=23;break}}else{g=r;j=c[g+4>>2]|0;f=s;h=c[f+4>>2]|0;if(!((j|0)>(h|0)|((j|0)==(h|0)?(c[g>>2]|0)>>>0>(c[f>>2]|0)>>>0:0))){l=27;break}c[m>>2]=(c[u>>2]|0)-1;if((c[v>>2]|0)>(c[m>>2]|0)){l=26;break}}c[u>>2]=(c[v>>2]|0)+(c[m>>2]|0)>>1}if((l|0)==23){c[y>>2]=-1;l=49;break}else if((l|0)==26){c[y>>2]=1;l=49;break}else if((l|0)==27){l=0;h=(c[D>>2]|0)+72|0;a[h>>0]=d[h>>0]|2;h=r;g=c[h+4>>2]|0;f=(c[D>>2]|0)+24|0;c[f>>2]=c[h>>2];c[f+4>>2]=g;b[(c[D>>2]|0)+78+(b[(c[D>>2]|0)+76>>1]<<1)>>1]=c[u>>2];if(a[(c[t>>2]|0)+5>>0]|0){l=29;break a}c[v>>2]=c[u>>2];break}}else while(1){c[q>>2]=(c[(c[t>>2]|0)+56>>2]|0)+(e[(c[t>>2]|0)+20>>1]&(d[(c[(c[t>>2]|0)+64>>2]|0)+(c[u>>2]<<1)>>0]<<8|d[(c[(c[t>>2]|0)+64>>2]|0)+(c[u>>2]<<1)+1>>0]))+(d[(c[t>>2]|0)+7>>0]|0);c[A>>2]=d[c[q>>2]>>0];do if((c[A>>2]|0)<=(d[(c[t>>2]|0)+8>>0]|0))c[y>>2]=pb[c[n>>2]&31](c[A>>2]|0,(c[q>>2]|0)+1|0,c[B>>2]|0)|0;else{if((d[(c[q>>2]|0)+1>>0]&128|0)==0?(f=((c[A>>2]&127)<<7)+(d[(c[q>>2]|0)+1>>0]|0)|0,c[A>>2]=f,(f|0)<=(e[(c[t>>2]|0)+10>>1]|0)):0){c[y>>2]=pb[c[n>>2]&31](c[A>>2]|0,(c[q>>2]|0)+2|0,c[B>>2]|0)|0;break}c[E>>2]=(c[q>>2]|0)+(0-(d[(c[t>>2]|0)+7>>0]|0));Kw(c[t>>2]|0,c[E>>2]|0,(c[D>>2]|0)+24|0);c[A>>2]=c[(c[D>>2]|0)+24>>2];f=c[A>>2]|0;c[C>>2]=gc(f,((f|0)<0)<<31>>31)|0;if(!(c[C>>2]|0)){l=37;break a}b[(c[D>>2]|0)+78+(b[(c[D>>2]|0)+76>>1]<<1)>>1]=c[u>>2];c[p>>2]=Lw(c[D>>2]|0,0,c[A>>2]|0,c[C>>2]|0,2)|0;if(c[p>>2]|0){l=39;break a}c[y>>2]=pb[c[n>>2]&31](c[A>>2]|0,c[C>>2]|0,c[B>>2]|0)|0;hc(c[C>>2]|0)}while(0);if((c[y>>2]|0)<0)c[v>>2]=(c[u>>2]|0)+1;else{if((c[y>>2]|0)<=0){l=45;break a}c[m>>2]=(c[u>>2]|0)-1}if((c[v>>2]|0)>(c[m>>2]|0)){l=49;break b}c[u>>2]=(c[v>>2]|0)+(c[m>>2]|0)>>1}while(0);if((l|0)==49?(l=0,(a[(c[t>>2]|0)+5>>0]|0)!=0):0){l=50;break}k=c[t>>2]|0;if((c[v>>2]|0)>=(e[(c[t>>2]|0)+18>>1]|0))c[x>>2]=Hh((c[(c[t>>2]|0)+56>>2]|0)+((d[k+6>>0]|0)+8)|0)|0;else c[x>>2]=Hh((c[k+56>>2]|0)+(e[(c[t>>2]|0)+20>>1]&(d[(c[(c[t>>2]|0)+64>>2]|0)+(c[v>>2]<<1)>>0]<<8|d[(c[(c[t>>2]|0)+64>>2]|0)+(c[v>>2]<<1)+1>>0]))|0)|0;b[(c[D>>2]|0)+78+(b[(c[D>>2]|0)+76>>1]<<1)>>1]=c[v>>2];c[p>>2]=ww(c[D>>2]|0,c[x>>2]|0)|0}while((c[p>>2]|0)==0);if((l|0)==20){c[w>>2]=kj(56945)|0;f=c[w>>2]|0;i=z;return f|0}else if((l|0)==29){c[c[o>>2]>>2]=0;c[p>>2]=0}else if((l|0)==37)c[p>>2]=7;else if((l|0)==39)hc(c[C>>2]|0);else if((l|0)==45){c[c[o>>2]>>2]=0;c[p>>2]=0;b[(c[D>>2]|0)+78+(b[(c[D>>2]|0)+76>>1]<<1)>>1]=c[u>>2];if(a[(c[B>>2]|0)+7>>0]|0)c[p>>2]=11}else if((l|0)==50){b[(c[D>>2]|0)+78+(b[(c[D>>2]|0)+76>>1]<<1)>>1]=c[u>>2];c[c[o>>2]>>2]=c[y>>2];c[p>>2]=0}b[(c[D>>2]|0)+44>>1]=0;f=(c[D>>2]|0)+72|0;a[f>>0]=d[f>>0]&-7;c[w>>2]=c[p>>2];f=c[w>>2]|0;i=z;return f|0}function Hw(b){b=b|0;var d=0,f=0,g=0,h=0;f=i;i=i+16|0;d=f+8|0;h=f+4|0;g=f;c[h>>2]=b;if(((e[(c[c[h>>2]>>2]|0)+6>>1]|0)+(e[(c[c[h>>2]>>2]|0)+8>>1]|0)|0)<=13){c[g>>2]=e[(c[(c[h>>2]|0)+8>>2]|0)+8>>1];b=(c[h>>2]|0)+12|0;if(a[c[(c[c[h>>2]>>2]|0)+16>>2]>>0]|0){c[b>>2]=1;c[(c[h>>2]|0)+16>>2]=-1}else{c[b>>2]=-1;c[(c[h>>2]|0)+16>>2]=1}if(c[g>>2]&4){c[d>>2]=15;b=c[d>>2]|0;i=f;return b|0}if((c[g>>2]&25|0)==0?(c[(c[c[h>>2]>>2]|0)+20>>2]|0)==0:0){c[d>>2]=16;b=c[d>>2]|0;i=f;return b|0}}c[d>>2]=17;b=c[d>>2]|0;i=f;return b|0}function Iw(f){f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;j=i;i=i+32|0;h=j+16|0;k=j+12|0;l=j+8|0;g=j+4|0;m=j;c[k>>2]=f;c[g>>2]=0;do if((d[(c[k>>2]|0)+73>>0]|0)>=3){f=c[k>>2]|0;if((d[(c[k>>2]|0)+73>>0]|0)!=4){Qk(f);break}c[h>>2]=c[f+68>>2];f=c[h>>2]|0;i=j;return f|0}while(0);a:do if((b[(c[k>>2]|0)+76>>1]|0)>=0)while(1){if(!(b[(c[k>>2]|0)+76>>1]|0))break a;n=(c[k>>2]|0)+76|0;f=b[n>>1]|0;b[n>>1]=f+ -1<<16>>16;Rk(c[(c[k>>2]|0)+120+(f<<16>>16<<2)>>2]|0)}else{f=c[k>>2]|0;if(!(c[(c[k>>2]|0)+60>>2]|0)){a[f+73>>0]=0;c[h>>2]=0;n=c[h>>2]|0;i=j;return n|0}c[g>>2]=zw(c[(c[f>>2]|0)+4>>2]|0,c[(c[k>>2]|0)+60>>2]|0,(c[k>>2]|0)+120|0,(d[(c[k>>2]|0)+72>>0]&1|0)==0?2:0)|0;f=c[k>>2]|0;if(!(c[g>>2]|0)){b[f+76>>1]=0;break}a[f+73>>0]=0;c[h>>2]=c[g>>2];n=c[h>>2]|0;i=j;return n|0}while(0);c[l>>2]=c[(c[k>>2]|0)+120>>2];if((d[c[l>>2]>>0]|0)!=0?((c[(c[k>>2]|0)+16>>2]|0)==0|0)==(d[(c[l>>2]|0)+2>>0]|0):0){b[(c[k>>2]|0)+78>>1]=0;b[(c[k>>2]|0)+44>>1]=0;n=(c[k>>2]|0)+72|0;a[n>>0]=d[n>>0]&-15;do if((e[(c[l>>2]|0)+18>>1]|0)>0)a[(c[k>>2]|0)+73>>0]=1;else{if(a[(c[l>>2]|0)+5>>0]|0){a[(c[k>>2]|0)+73>>0]=0;break}if((c[(c[l>>2]|0)+72>>2]|0)==1){c[m>>2]=Hh((c[(c[l>>2]|0)+56>>2]|0)+((d[(c[l>>2]|0)+6>>0]|0)+8)|0)|0;a[(c[k>>2]|0)+73>>0]=1;c[g>>2]=ww(c[k>>2]|0,c[m>>2]|0)|0;break}c[h>>2]=kj(56709)|0;n=c[h>>2]|0;i=j;return n|0}while(0);c[h>>2]=c[g>>2];n=c[h>>2]|0;i=j;return n|0}c[h>>2]=kj(56698)|0;n=c[h>>2]|0;i=j;return n|0} + + + +function Jw(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;k=i;i=i+32|0;g=k+20|0;m=k+16|0;j=k+12|0;h=k+8|0;f=k+4|0;l=k;c[m>>2]=b;c[j>>2]=e;c[h>>2]=d[c[m>>2]>>0];if(!(c[h>>2]&128)){b=c[j>>2]|0;c[b>>2]=c[h>>2];c[b+4>>2]=0;a[g>>0]=1;b=a[g>>0]|0;i=k;return b|0}c[m>>2]=(c[m>>2]|0)+1;c[f>>2]=d[c[m>>2]>>0];if(!(c[f>>2]&128)){c[h>>2]=c[h>>2]&127;c[h>>2]=c[h>>2]<<7;c[h>>2]=c[h>>2]|c[f>>2];b=c[j>>2]|0;c[b>>2]=c[h>>2];c[b+4>>2]=0;a[g>>0]=2;b=a[g>>0]|0;i=k;return b|0}c[m>>2]=(c[m>>2]|0)+1;c[h>>2]=c[h>>2]<<14;c[h>>2]=c[h>>2]|(d[c[m>>2]>>0]|0);b=(c[h>>2]&128|0)!=0;c[h>>2]=c[h>>2]&2080895;if(!b){c[f>>2]=c[f>>2]&127;c[f>>2]=c[f>>2]<<7;c[h>>2]=c[h>>2]|c[f>>2];b=c[j>>2]|0;c[b>>2]=c[h>>2];c[b+4>>2]=0;a[g>>0]=3;b=a[g>>0]|0;i=k;return b|0}c[m>>2]=(c[m>>2]|0)+1;c[f>>2]=c[f>>2]<<14;c[f>>2]=c[f>>2]|(d[c[m>>2]>>0]|0);b=(c[f>>2]&128|0)!=0;c[f>>2]=c[f>>2]&2080895;e=c[h>>2]|0;if(!b){c[h>>2]=e<<7;c[h>>2]=c[h>>2]|c[f>>2];b=c[j>>2]|0;c[b>>2]=c[h>>2];c[b+4>>2]=0;a[g>>0]=4;b=a[g>>0]|0;i=k;return b|0}c[l>>2]=e;c[m>>2]=(c[m>>2]|0)+1;c[h>>2]=c[h>>2]<<14;c[h>>2]=c[h>>2]|(d[c[m>>2]>>0]|0);if(!(c[h>>2]&128)){c[f>>2]=c[f>>2]<<7;c[h>>2]=c[h>>2]|c[f>>2];c[l>>2]=(c[l>>2]|0)>>>18;e=c[l>>2]|0;b=c[j>>2]|0;c[b>>2]=c[h>>2];c[b+4>>2]=e;a[g>>0]=5;b=a[g>>0]|0;i=k;return b|0}c[l>>2]=c[l>>2]<<7;c[l>>2]=c[l>>2]|c[f>>2];c[m>>2]=(c[m>>2]|0)+1;c[f>>2]=c[f>>2]<<14;c[f>>2]=c[f>>2]|(d[c[m>>2]>>0]|0);if(!(c[f>>2]&128)){c[h>>2]=c[h>>2]&2080895;c[h>>2]=c[h>>2]<<7;c[h>>2]=c[h>>2]|c[f>>2];c[l>>2]=(c[l>>2]|0)>>>18;e=c[l>>2]|0;b=c[j>>2]|0;c[b>>2]=c[h>>2];c[b+4>>2]=e;a[g>>0]=6;b=a[g>>0]|0;i=k;return b|0}c[m>>2]=(c[m>>2]|0)+1;c[h>>2]=c[h>>2]<<14;c[h>>2]=c[h>>2]|(d[c[m>>2]>>0]|0);e=c[h>>2]|0;if(!(c[h>>2]&128)){c[h>>2]=e&-266354561;c[f>>2]=c[f>>2]&2080895;c[f>>2]=c[f>>2]<<7;c[h>>2]=c[h>>2]|c[f>>2];c[l>>2]=(c[l>>2]|0)>>>11;e=c[l>>2]|0;b=c[j>>2]|0;c[b>>2]=c[h>>2];c[b+4>>2]=e;a[g>>0]=7;b=a[g>>0]|0;i=k;return b|0}c[h>>2]=e&2080895;c[m>>2]=(c[m>>2]|0)+1;c[f>>2]=c[f>>2]<<14;c[f>>2]=c[f>>2]|(d[c[m>>2]>>0]|0);if(c[f>>2]&128){c[m>>2]=(c[m>>2]|0)+1;c[h>>2]=c[h>>2]<<15;c[h>>2]=c[h>>2]|(d[c[m>>2]>>0]|0);c[f>>2]=c[f>>2]&2080895;c[f>>2]=c[f>>2]<<8;c[h>>2]=c[h>>2]|c[f>>2];c[l>>2]=c[l>>2]<<4;c[f>>2]=d[(c[m>>2]|0)+ -4>>0];c[f>>2]=c[f>>2]&127;c[f>>2]=(c[f>>2]|0)>>>3;c[l>>2]=c[l>>2]|c[f>>2];e=c[l>>2]|0;b=c[j>>2]|0;c[b>>2]=c[h>>2];c[b+4>>2]=e;a[g>>0]=9;b=a[g>>0]|0;i=k;return b|0}else{c[f>>2]=c[f>>2]&-266354561;c[h>>2]=c[h>>2]<<7;c[h>>2]=c[h>>2]|c[f>>2];c[l>>2]=(c[l>>2]|0)>>>4;e=c[l>>2]|0;b=c[j>>2]|0;c[b>>2]=c[h>>2];c[b+4>>2]=e;a[g>>0]=8;b=a[g>>0]|0;i=k;return b|0}return 0}function Kw(f,g,h){f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;l=i;i=i+32|0;o=l+28|0;n=l+24|0;k=l+20|0;m=l+16|0;r=l+12|0;p=l+8|0;q=l+4|0;j=l;c[o>>2]=f;c[n>>2]=g;c[k>>2]=h;if(a[(c[o>>2]|0)+3>>0]|0){h=c[n>>2]|0;g=c[n>>2]|0;if((d[c[n>>2]>>0]|0)<128){c[r>>2]=d[g>>0];g=1}else g=(Rw(g,r)|0)&255;c[m>>2]=h+(g&255);f=(Jw(c[m>>2]|0,c[k>>2]|0)|0)&255;c[m>>2]=(c[m>>2]|0)+f}else{h=c[n>>2]|0;if(a[(c[o>>2]|0)+4>>0]|0){f=4+((Jw(h+4|0,c[k>>2]|0)|0)&255)&65535;b[(c[k>>2]|0)+20>>1]=f;c[(c[k>>2]|0)+12>>2]=0;b[(c[k>>2]|0)+16>>1]=0;b[(c[k>>2]|0)+18>>1]=0;c[(c[k>>2]|0)+8>>2]=0;i=l;return}c[m>>2]=h+(d[(c[o>>2]|0)+7>>0]|0);h=c[m>>2]|0;if((d[c[m>>2]>>0]|0)<128){c[r>>2]=d[h>>0];h=1}else h=(Rw(h,r)|0)&255;c[m>>2]=(c[m>>2]|0)+(h&255);f=c[k>>2]|0;c[f>>2]=c[r>>2];c[f+4>>2]=0}c[(c[k>>2]|0)+12>>2]=c[r>>2];c[(c[k>>2]|0)+8>>2]=c[m>>2];if((c[r>>2]|0)>>>0<=(e[(c[o>>2]|0)+10>>1]|0)>>>0){b[(c[k>>2]|0)+20>>1]=(c[r>>2]|0)+((c[m>>2]|0)-(c[n>>2]|0)&65535);if((e[(c[k>>2]|0)+20>>1]|0)<4)b[(c[k>>2]|0)+20>>1]=4;b[(c[k>>2]|0)+16>>1]=c[r>>2];b[(c[k>>2]|0)+18>>1]=0;i=l;return}c[p>>2]=e[(c[o>>2]|0)+12>>1];c[q>>2]=e[(c[o>>2]|0)+10>>1];c[j>>2]=(c[p>>2]|0)+((((c[r>>2]|0)-(c[p>>2]|0)|0)>>>0)%(((c[(c[(c[o>>2]|0)+52>>2]|0)+36>>2]|0)-4|0)>>>0)|0);if((c[j>>2]|0)<=(c[q>>2]|0))b[(c[k>>2]|0)+16>>1]=c[j>>2];else b[(c[k>>2]|0)+16>>1]=c[p>>2];b[(c[k>>2]|0)+18>>1]=(c[(c[k>>2]|0)+8>>2]|0)+(e[(c[k>>2]|0)+16>>1]|0)-(c[n>>2]|0);b[(c[k>>2]|0)+20>>1]=(e[(c[k>>2]|0)+18>>1]|0)+4;i=l;return}function Lw(f,g,h,j,k){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;m=i;i=i+80|0;w=m+72|0;t=m+68|0;q=m+64|0;o=m+60|0;A=m+56|0;z=m+52|0;y=m+48|0;n=m+44|0;s=m+40|0;C=m+36|0;x=m+32|0;E=m+28|0;B=m+24|0;r=m+20|0;p=m+16|0;u=m+12|0;v=m+8|0;l=m+4|0;D=m;c[t>>2]=f;c[q>>2]=g;c[o>>2]=h;c[A>>2]=j;c[z>>2]=k;c[n>>2]=0;c[s>>2]=0;c[C>>2]=c[(c[t>>2]|0)+120+(b[(c[t>>2]|0)+76>>1]<<2)>>2];c[x>>2]=c[(c[t>>2]|0)+4>>2];if(!(e[(c[t>>2]|0)+44>>1]|0)){c[E>>2]=b[(c[t>>2]|0)+76>>1];Mw(c[(c[t>>2]|0)+120+(c[E>>2]<<2)>>2]|0,e[(c[t>>2]|0)+78+(c[E>>2]<<1)>>1]|0,(c[t>>2]|0)+24|0);f=(c[t>>2]|0)+72|0;a[f>>0]=d[f>>0]|2}c[y>>2]=c[(c[t>>2]|0)+32>>2];if(((c[y>>2]|0)+(e[(c[t>>2]|0)+40>>1]|0)|0)>>>0>((c[(c[C>>2]|0)+56>>2]|0)+(c[(c[x>>2]|0)+36>>2]|0)|0)>>>0){c[w>>2]=kj(56278)|0;f=c[w>>2]|0;i=m;return f|0}if((c[q>>2]|0)>>>0<(e[(c[t>>2]|0)+40>>1]|0)>>>0){c[B>>2]=c[o>>2];if(((c[B>>2]|0)+(c[q>>2]|0)|0)>>>0>(e[(c[t>>2]|0)+40>>1]|0)>>>0)c[B>>2]=(e[(c[t>>2]|0)+40>>1]|0)-(c[q>>2]|0);c[n>>2]=Nw((c[y>>2]|0)+(c[q>>2]|0)|0,c[A>>2]|0,c[B>>2]|0,c[z>>2]&1,c[(c[C>>2]|0)+68>>2]|0)|0;c[q>>2]=0;c[A>>2]=(c[A>>2]|0)+(c[B>>2]|0);c[o>>2]=(c[o>>2]|0)-(c[B>>2]|0)}else c[q>>2]=(c[q>>2]|0)-(e[(c[t>>2]|0)+40>>1]|0);a:do if((c[n>>2]|0)==0&(c[o>>2]|0)>>>0>0){c[r>>2]=(c[(c[x>>2]|0)+36>>2]|0)-4;c[p>>2]=Hh((c[y>>2]|0)+(e[(c[t>>2]|0)+40>>1]|0)|0)|0;if((c[z>>2]|0)!=2?(d[(c[t>>2]|0)+72>>0]&4|0)==0:0){c[u>>2]=(((c[(c[t>>2]|0)+36>>2]|0)-(e[(c[t>>2]|0)+40>>1]|0)+(c[r>>2]|0)-1|0)>>>0)/((c[r>>2]|0)>>>0)|0;do if((c[u>>2]|0)>(c[(c[t>>2]|0)+64>>2]|0)){c[v>>2]=Fk(c[c[c[t>>2]>>2]>>2]|0,c[(c[t>>2]|0)+20>>2]|0,c[u>>2]<<1<<2,0)|0;if(!(c[v>>2]|0)){c[n>>2]=7;break}else{c[(c[t>>2]|0)+64>>2]=c[u>>2]<<1;c[(c[t>>2]|0)+20>>2]=c[v>>2];break}}while(0);if(!(c[n>>2]|0)){_E(c[(c[t>>2]|0)+20>>2]|0,0,c[u>>2]<<2|0)|0;f=(c[t>>2]|0)+72|0;a[f>>0]=d[f>>0]|4}}if((d[(c[t>>2]|0)+72>>0]&4|0)!=0?(c[(c[(c[t>>2]|0)+20>>2]|0)+((((c[q>>2]|0)>>>0)/((c[r>>2]|0)>>>0)|0)<<2)>>2]|0)!=0:0){c[s>>2]=((c[q>>2]|0)>>>0)/((c[r>>2]|0)>>>0)|0;c[p>>2]=c[(c[(c[t>>2]|0)+20>>2]|0)+(c[s>>2]<<2)>>2];c[q>>2]=((c[q>>2]|0)>>>0)%((c[r>>2]|0)>>>0)|0}while(1){if(!((c[n>>2]|0)==0&(c[o>>2]|0)>>>0>0&(c[p>>2]|0)!=0))break a;if(d[(c[t>>2]|0)+72>>0]&4)c[(c[(c[t>>2]|0)+20>>2]|0)+(c[s>>2]<<2)>>2]=c[p>>2];if((c[q>>2]|0)>>>0>=(c[r>>2]|0)>>>0){if(c[(c[(c[t>>2]|0)+20>>2]|0)+((c[s>>2]|0)+1<<2)>>2]|0)c[p>>2]=c[(c[(c[t>>2]|0)+20>>2]|0)+((c[s>>2]|0)+1<<2)>>2];else c[n>>2]=Ow(c[x>>2]|0,c[p>>2]|0,0,p)|0;c[q>>2]=(c[q>>2]|0)-(c[r>>2]|0)}else{c[l>>2]=c[o>>2];if(((c[l>>2]|0)+(c[q>>2]|0)|0)>>>0>(c[r>>2]|0)>>>0)c[l>>2]=(c[r>>2]|0)-(c[q>>2]|0);c[n>>2]=Xc(c[c[x>>2]>>2]|0,c[p>>2]|0,D,(c[z>>2]&1|0)==0?2:0)|0;if(!(c[n>>2]|0)){c[y>>2]=Zc(c[D>>2]|0)|0;c[p>>2]=Hh(c[y>>2]|0)|0;c[n>>2]=Nw((c[y>>2]|0)+((c[q>>2]|0)+4)|0,c[A>>2]|0,c[l>>2]|0,c[z>>2]&1,c[D>>2]|0)|0;_c(c[D>>2]|0);c[q>>2]=0}c[o>>2]=(c[o>>2]|0)-(c[l>>2]|0);c[A>>2]=(c[A>>2]|0)+(c[l>>2]|0)}c[s>>2]=(c[s>>2]|0)+1}}while(0);if((c[n>>2]|0)==0&(c[o>>2]|0)>>>0>0){c[w>>2]=kj(56431)|0;f=c[w>>2]|0;i=m;return f|0}else{c[w>>2]=c[n>>2];f=c[w>>2]|0;i=m;return f|0}return 0}function Mw(a,b,f){a=a|0;b=b|0;f=f|0;var g=0,h=0,j=0,k=0;g=i;i=i+16|0;k=g+8|0;j=g+4|0;h=g;c[k>>2]=a;c[j>>2]=b;c[h>>2]=f;Kw(c[k>>2]|0,(c[(c[k>>2]|0)+56>>2]|0)+((e[(c[k>>2]|0)+20>>1]|0)&((d[(c[(c[k>>2]|0)+64>>2]|0)+(c[j>>2]<<1)>>0]|0)<<8|(d[(c[(c[k>>2]|0)+64>>2]|0)+(c[j>>2]<<1)+1>>0]|0)))|0,c[h>>2]|0);i=g;return}function Nw(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;m=i;i=i+32|0;h=m+24|0;l=m+20|0;k=m+16|0;j=m+12|0;o=m+8|0;n=m+4|0;g=m;c[l>>2]=a;c[k>>2]=b;c[j>>2]=d;c[o>>2]=e;c[n>>2]=f;do if(c[o>>2]|0){c[g>>2]=gd(c[n>>2]|0)|0;if(!(c[g>>2]|0)){dF(c[l>>2]|0,c[k>>2]|0,c[j>>2]|0)|0;break}c[h>>2]=c[g>>2];o=c[h>>2]|0;i=m;return o|0}else dF(c[k>>2]|0,c[l>>2]|0,c[j>>2]|0)|0;while(0);c[h>>2]=0;o=c[h>>2]|0;i=m;return o|0}function Ow(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;h=i;i=i+48|0;o=h+32|0;p=h+28|0;k=h+24|0;m=h+20|0;q=h+16|0;l=h+12|0;j=h+8|0;r=h+4|0;n=h;s=h+36|0;c[o>>2]=b;c[p>>2]=e;c[k>>2]=f;c[m>>2]=g;c[q>>2]=0;c[l>>2]=0;c[j>>2]=0;if(a[(c[o>>2]|0)+17>>0]|0){c[n>>2]=(c[p>>2]|0)+1;while(1){b=Pw(c[o>>2]|0,c[n>>2]|0)|0;if((b|0)==(c[n>>2]|0))f=1;else f=(c[n>>2]|0)==((((c[282]|0)>>>0)/((c[(c[o>>2]|0)+32>>2]|0)>>>0)|0)+1|0);g=c[n>>2]|0;if(!f)break;c[n>>2]=g+1}if(((g>>>0<=(Aw(c[o>>2]|0)|0)>>>0?(c[j>>2]=Qw(c[o>>2]|0,c[n>>2]|0,s,r)|0,(c[j>>2]|0)==0):0)?(d[s>>0]|0)==4:0)?(c[r>>2]|0)==(c[p>>2]|0):0){c[q>>2]=c[n>>2];c[j>>2]=101}}if((c[j>>2]|0)==0?(c[j>>2]=Bw(c[o>>2]|0,c[p>>2]|0,l,(c[k>>2]|0)==0?2:0)|0,(c[j>>2]|0)==0):0)c[q>>2]=Hh(c[(c[l>>2]|0)+56>>2]|0)|0;c[c[m>>2]>>2]=c[q>>2];l=c[l>>2]|0;if(c[k>>2]|0){c[c[k>>2]>>2]=l;e=c[j>>2]|0;e=(e|0)==101;b=c[j>>2]|0;b=e?0:b;i=h;return b|0}else{Rk(l);e=c[j>>2]|0;e=(e|0)==101;b=c[j>>2]|0;b=e?0:b;i=h;return b|0}return 0}function Pw(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;d=i;i=i+32|0;e=d+20|0;g=d+16|0;j=d+12|0;h=d+8|0;k=d+4|0;f=d;c[g>>2]=a;c[j>>2]=b;if((c[j>>2]|0)>>>0<2){c[e>>2]=0;a=c[e>>2]|0;i=d;return a|0}c[h>>2]=(((c[(c[g>>2]|0)+36>>2]|0)>>>0)/5|0)+1;c[k>>2]=(((c[j>>2]|0)-2|0)>>>0)/((c[h>>2]|0)>>>0)|0;c[f>>2]=($(c[k>>2]|0,c[h>>2]|0)|0)+2;if((c[f>>2]|0)==((((c[282]|0)>>>0)/((c[(c[g>>2]|0)+32>>2]|0)>>>0)|0)+1|0))c[f>>2]=(c[f>>2]|0)+1;c[e>>2]=c[f>>2];a=c[e>>2]|0;i=d;return a|0}function Qw(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;o=i;i=i+48|0;j=o+36|0;s=o+32|0;q=o+28|0;h=o+24|0;p=o+20|0;l=o+16|0;r=o+12|0;m=o+8|0;n=o+4|0;k=o;c[s>>2]=b;c[q>>2]=e;c[h>>2]=f;c[p>>2]=g;c[r>>2]=Pw(c[s>>2]|0,c[q>>2]|0)|0;c[k>>2]=Xc(c[c[s>>2]>>2]|0,c[r>>2]|0,l,0)|0;if(c[k>>2]|0){c[j>>2]=c[k>>2];s=c[j>>2]|0;i=o;return s|0}c[m>>2]=Zc(c[l>>2]|0)|0;c[n>>2]=((c[q>>2]|0)-(c[r>>2]|0)-1|0)*5;if((c[n>>2]|0)<0){_c(c[l>>2]|0);c[j>>2]=kj(53113)|0;s=c[j>>2]|0;i=o;return s|0}a[c[h>>2]>>0]=a[(c[m>>2]|0)+(c[n>>2]|0)>>0]|0;if(c[p>>2]|0){s=Hh((c[m>>2]|0)+((c[n>>2]|0)+1)|0)|0;c[c[p>>2]>>2]=s}_c(c[l>>2]|0);if((d[c[h>>2]>>0]|0|0)>=1?(d[c[h>>2]>>0]|0|0)<=5:0){c[j>>2]=0;s=c[j>>2]|0;i=o;return s|0}c[j>>2]=kj(53121)|0;s=c[j>>2]|0;i=o;return s|0}function Rw(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;f=i;i=i+32|0;g=f+25|0;l=f+20|0;h=f+16|0;k=f+12|0;j=f+8|0;m=f;n=f+24|0;c[l>>2]=b;c[h>>2]=e;c[k>>2]=d[c[l>>2]>>0];c[l>>2]=(c[l>>2]|0)+1;c[j>>2]=d[c[l>>2]>>0];if(!(c[j>>2]&128)){c[k>>2]=c[k>>2]&127;c[k>>2]=c[k>>2]<<7;c[c[h>>2]>>2]=c[k>>2]|c[j>>2];a[g>>0]=2;b=a[g>>0]|0;i=f;return b|0}c[l>>2]=(c[l>>2]|0)+1;c[k>>2]=c[k>>2]<<14;c[k>>2]=c[k>>2]|(d[c[l>>2]>>0]|0);if(!(c[k>>2]&128)){c[k>>2]=c[k>>2]&2080895;c[j>>2]=c[j>>2]&127;c[j>>2]=c[j>>2]<<7;c[c[h>>2]>>2]=c[k>>2]|c[j>>2];a[g>>0]=3;b=a[g>>0]|0;i=f;return b|0}c[l>>2]=(c[l>>2]|0)+ -2;a[n>>0]=Jw(c[l>>2]|0,m)|0;b=m;if(0!=(c[b+4>>2]|0)?1:(c[m>>2]|0)!=(c[b>>2]|0))c[c[h>>2]>>2]=-1;else c[c[h>>2]>>2]=c[m>>2];a[g>>0]=a[n>>0]|0;b=a[g>>0]|0;i=f;return b|0}function Sw(b,f,g){b=b|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;j=i;i=i+64|0;h=j+52|0;k=j+48|0;l=j+44|0;m=j+40|0;q=j+36|0;t=j+32|0;n=j+28|0;r=j+24|0;s=j+16|0;o=j+8|0;p=j;c[k>>2]=b;c[l>>2]=f;c[m>>2]=g;c[q>>2]=(c[l>>2]|0)+(d[c[l>>2]>>0]&63);c[t>>2]=d[(c[l>>2]|0)+1>>0];g=c[(c[m>>2]|0)+8>>2]|0;f=c[g+4>>2]|0;b=o;c[b>>2]=c[g>>2];c[b+4>>2]=f;do switch(c[t>>2]|0){case 5:{b=a[c[q>>2]>>0]<<8|d[(c[q>>2]|0)+1>>0];t=p;c[t>>2]=bF(d[(c[q>>2]|0)+2>>0]<<24|d[(c[q>>2]|0)+3>>0]<<16|d[(c[q>>2]|0)+4>>0]<<8|d[(c[q>>2]|0)+5>>0]|0,0,lF(0,1,b|0,((b|0)<0)<<31>>31|0)|0,D|0)|0;c[t+4>>2]=D;break};case 3:{b=a[c[q>>2]>>0]<<16|d[(c[q>>2]|0)+1>>0]<<8|d[(c[q>>2]|0)+2>>0];t=p;c[t>>2]=b;c[t+4>>2]=((b|0)<0)<<31>>31;break};case 2:{b=a[c[q>>2]>>0]<<8|d[(c[q>>2]|0)+1>>0];t=p;c[t>>2]=b;c[t+4>>2]=((b|0)<0)<<31>>31;break};case 7:case 0:{c[h>>2]=Uw(c[k>>2]|0,c[l>>2]|0,c[m>>2]|0)|0;t=c[h>>2]|0;i=j;return t|0};case 4:{c[r>>2]=d[c[q>>2]>>0]<<24|d[(c[q>>2]|0)+1>>0]<<16|d[(c[q>>2]|0)+2>>0]<<8|d[(c[q>>2]|0)+3>>0];b=c[r>>2]|0;t=p;c[t>>2]=b;c[t+4>>2]=((b|0)<0)<<31>>31;break};case 6:{b=s;c[b>>2]=d[c[q>>2]>>0]<<24|d[(c[q>>2]|0)+1>>0]<<16|d[(c[q>>2]|0)+2>>0]<<8|d[(c[q>>2]|0)+3>>0];c[b+4>>2]=0;b=c[s>>2]|0;f=s;c[f>>2]=d[(c[q>>2]|0)+4>>0]<<24|d[(c[q>>2]|0)+5>>0]<<16|d[(c[q>>2]|0)+6>>0]<<8|d[(c[q>>2]|0)+7>>0];c[f+4>>2]=b;f=s;b=c[f+4>>2]|0;t=p;c[t>>2]=c[f>>2];c[t+4>>2]=b;break};case 9:{t=p;c[t>>2]=1;c[t+4>>2]=0;break};case 8:{t=p;c[t>>2]=0;c[t+4>>2]=0;break};case 1:{b=a[c[q>>2]>>0]|0;t=p;c[t>>2]=b;c[t+4>>2]=((b|0)<0)<<31>>31;break};default:{c[h>>2]=Uw(c[k>>2]|0,c[l>>2]|0,c[m>>2]|0)|0;t=c[h>>2]|0;i=j;return t|0}}while(0);b=o;s=c[b+4>>2]|0;t=p;f=c[t+4>>2]|0;do if(!((s|0)>(f|0)|((s|0)==(f|0)?(c[b>>2]|0)>>>0>(c[t>>2]|0)>>>0:0))){b=o;s=c[b+4>>2]|0;t=p;f=c[t+4>>2]|0;o=c[m>>2]|0;if((s|0)<(f|0)|((s|0)==(f|0)?(c[b>>2]|0)>>>0<(c[t>>2]|0)>>>0:0)){c[n>>2]=c[o+16>>2];break}if((e[o+4>>1]|0)>1){c[n>>2]=Vw(c[k>>2]|0,c[l>>2]|0,c[m>>2]|0,1)|0;break}else{c[n>>2]=a[(c[m>>2]|0)+6>>0];break}}else c[n>>2]=c[(c[m>>2]|0)+12>>2];while(0);c[h>>2]=c[n>>2];t=c[h>>2]|0;i=j;return t|0}function Tw(b,f,g){b=b|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;h=i;i=i+48|0;j=h+36|0;m=h+32|0;l=h+28|0;q=h+24|0;n=h+20|0;s=h+16|0;k=h+12|0;p=h+8|0;o=h+4|0;r=h;c[m>>2]=b;c[l>>2]=f;c[q>>2]=g;c[n>>2]=c[l>>2];g=(c[n>>2]|0)+1|0;if((d[(c[n>>2]|0)+1>>0]|0)<128)c[s>>2]=d[g>>0];else Rw(g,s)|0;do if((c[s>>2]|0)>=12){if(!(c[s>>2]&1)){c[k>>2]=c[(c[q>>2]|0)+16>>2];break}c[r>>2]=d[c[n>>2]>>0];c[o>>2]=((c[s>>2]|0)-12|0)/2|0;if(((c[r>>2]|0)+(c[o>>2]|0)|0)>(c[m>>2]|0)){b=(kj(67026)|0)&255;a[(c[q>>2]|0)+7>>0]=b;c[j>>2]=0;b=c[j>>2]|0;i=h;return b|0}if((c[(c[(c[q>>2]|0)+8>>2]|0)+12>>2]|0)<(c[o>>2]|0))s=c[(c[(c[q>>2]|0)+8>>2]|0)+12>>2]|0;else s=c[o>>2]|0;c[p>>2]=s;c[k>>2]=TE((c[n>>2]|0)+(c[r>>2]|0)|0,c[(c[(c[q>>2]|0)+8>>2]|0)+16>>2]|0,c[p>>2]|0)|0;if(c[k>>2]|0){l=c[q>>2]|0;if((c[k>>2]|0)>0){c[k>>2]=c[l+16>>2];break}else{c[k>>2]=c[l+12>>2];break}}c[k>>2]=(c[o>>2]|0)-(c[(c[(c[q>>2]|0)+8>>2]|0)+12>>2]|0);if(!(c[k>>2]|0))if((e[(c[q>>2]|0)+4>>1]|0)>1){c[k>>2]=Vw(c[m>>2]|0,c[l>>2]|0,c[q>>2]|0,1)|0;break}else{c[k>>2]=a[(c[q>>2]|0)+6>>0];break}else{l=c[q>>2]|0;if((c[k>>2]|0)>0){c[k>>2]=c[l+16>>2];break}else{c[k>>2]=c[l+12>>2];break}}}else c[k>>2]=c[(c[q>>2]|0)+12>>2];while(0);c[j>>2]=c[k>>2];b=c[j>>2]|0;i=h;return b|0}function Uw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+16|0;h=e+8|0;g=e+4|0;f=e;c[h>>2]=a;c[g>>2]=b;c[f>>2]=d;a=Vw(c[h>>2]|0,c[g>>2]|0,c[f>>2]|0,0)|0;i=e;return a|0}function Vw(f,g,j,k){f=f|0;g=g|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0;p=i;i=i+160|0;o=p+148|0;A=p+144|0;K=p+140|0;l=p+136|0;J=p+132|0;q=p+128|0;E=p+124|0;B=p+120|0;v=p+116|0;m=p+112|0;C=p+108|0;n=p+104|0;H=p+100|0;s=p+40|0;I=p+96|0;r=p+92|0;G=p+32|0;t=p+24|0;u=p+16|0;x=p+8|0;w=p;F=p+88|0;z=p+84|0;y=p+80|0;c[A>>2]=f;c[K>>2]=g;c[l>>2]=j;c[J>>2]=k;c[m>>2]=0;c[C>>2]=c[(c[l>>2]|0)+8>>2];c[n>>2]=c[c[l>>2]>>2];c[H>>2]=c[K>>2];k=c[H>>2]|0;do if(c[J>>2]|0){j=(c[H>>2]|0)+1|0;if((d[k+1>>0]|0)<128){c[I>>2]=d[j>>0];k=1}else k=(Rw(j,I)|0)&255;c[v>>2]=1+(k&255);c[B>>2]=d[c[H>>2]>>0];K=c[B>>2]|0;c[q>>2]=K+(Ww(c[I>>2]|0)|0);c[E>>2]=1;c[C>>2]=(c[C>>2]|0)+40}else{I=c[H>>2]|0;if((d[k>>0]|0)<128){c[B>>2]=d[I>>0];I=1}else I=(Rw(I,B)|0)&255;c[v>>2]=I&255;c[q>>2]=c[B>>2];if((c[q>>2]|0)>>>0<=(c[A>>2]|0)>>>0){c[E>>2]=0;break}K=(kj(66745)|0)&255;a[(c[l>>2]|0)+7>>0]=K;c[o>>2]=0;K=c[o>>2]|0;i=p;return K|0}while(0);a:while(1){do if(e[(c[C>>2]|0)+8>>1]&4){c[r>>2]=d[(c[H>>2]|0)+(c[v>>2]|0)>>0];if((c[r>>2]|0)>>>0>=12){c[m>>2]=1;break}if(!(c[r>>2]|0)){c[m>>2]=-1;break}if((c[r>>2]|0)==7){K=c[C>>2]|0;h[G>>3]=+((c[K>>2]|0)>>>0)+4294967296.0*+(c[K+4>>2]|0);Xw((c[H>>2]|0)+(c[q>>2]|0)|0,c[r>>2]|0,s)|0;if(+h[s>>3]<+h[G>>3]){c[m>>2]=-1;break}if(!(+h[s>>3]>+h[G>>3]))break;c[m>>2]=1;break}else{g=Yw(c[r>>2]|0,(c[H>>2]|0)+(c[q>>2]|0)|0)|0;K=t;c[K>>2]=g;c[K+4>>2]=D;K=c[C>>2]|0;g=c[K+4>>2]|0;J=u;c[J>>2]=c[K>>2];c[J+4>>2]=g;J=t;g=c[J+4>>2]|0;K=u;f=c[K+4>>2]|0;if((g|0)<(f|0)|((g|0)==(f|0)?(c[J>>2]|0)>>>0<(c[K>>2]|0)>>>0:0)){c[m>>2]=-1;break}J=t;g=c[J+4>>2]|0;K=u;f=c[K+4>>2]|0;if(!((g|0)>(f|0)|((g|0)==(f|0)?(c[J>>2]|0)>>>0>(c[K>>2]|0)>>>0:0)))break;c[m>>2]=1;break}}else{if(e[(c[C>>2]|0)+8>>1]&8){c[r>>2]=d[(c[H>>2]|0)+(c[v>>2]|0)>>0];if((c[r>>2]|0)>>>0>=12){c[m>>2]=1;break}if(!(c[r>>2]|0)){c[m>>2]=-1;break}h[x>>3]=+h[c[C>>2]>>3];Xw((c[H>>2]|0)+(c[q>>2]|0)|0,c[r>>2]|0,s)|0;if((c[r>>2]|0)==7)h[w>>3]=+h[s>>3];else{K=s;h[w>>3]=+((c[K>>2]|0)>>>0)+4294967296.0*+(c[K+4>>2]|0)}if(+h[w>>3]<+h[x>>3]){c[m>>2]=-1;break}if(!(+h[w>>3]>+h[x>>3]))break;c[m>>2]=1;break}if(!(e[(c[C>>2]|0)+8>>1]&2)){k=d[(c[H>>2]|0)+(c[v>>2]|0)>>0]|0;if(!(e[(c[C>>2]|0)+8>>1]&16)){c[r>>2]=k;c[m>>2]=(c[r>>2]|0)!=0&1;break}I=(c[H>>2]|0)+(c[v>>2]|0)|0;if((k|0)<128)c[r>>2]=d[I>>0];else Rw(I,r)|0;if((c[r>>2]|0)>>>0>=12?(c[r>>2]&1|0)==0:0){c[z>>2]=(((c[r>>2]|0)-12|0)>>>0)/2|0;if(((c[q>>2]|0)+(c[z>>2]|0)|0)>>>0>(c[A>>2]|0)>>>0){q=63;break a}if((c[z>>2]|0)<(c[(c[C>>2]|0)+12>>2]|0))I=c[z>>2]|0;else I=c[(c[C>>2]|0)+12>>2]|0;c[y>>2]=I;c[m>>2]=TE((c[H>>2]|0)+(c[q>>2]|0)|0,c[(c[C>>2]|0)+16>>2]|0,c[y>>2]|0)|0;if(c[m>>2]|0)break;c[m>>2]=(c[z>>2]|0)-(c[(c[C>>2]|0)+12>>2]|0);break}c[m>>2]=-1;break}I=(c[H>>2]|0)+(c[v>>2]|0)|0;if((d[(c[H>>2]|0)+(c[v>>2]|0)>>0]|0)<128)c[r>>2]=d[I>>0];else Rw(I,r)|0;if((c[r>>2]|0)>>>0<12){c[m>>2]=-1;break}if(!(c[r>>2]&1)){c[m>>2]=1;break}c[s+12>>2]=(((c[r>>2]|0)-12|0)>>>0)/2|0;if(((c[q>>2]|0)+(c[s+12>>2]|0)|0)>>>0>(c[A>>2]|0)>>>0){q=47;break a}if(c[(c[n>>2]|0)+20+(c[E>>2]<<2)>>2]|0){a[s+10>>0]=a[(c[n>>2]|0)+4>>0]|0;c[s+32>>2]=c[(c[n>>2]|0)+12>>2];b[s+8>>1]=2;c[s+16>>2]=(c[H>>2]|0)+(c[q>>2]|0);c[m>>2]=cn(s,c[C>>2]|0,c[(c[n>>2]|0)+20+(c[E>>2]<<2)>>2]|0,(c[l>>2]|0)+7|0)|0;break}if((c[s+12>>2]|0)<(c[(c[C>>2]|0)+12>>2]|0))I=c[s+12>>2]|0;else I=c[(c[C>>2]|0)+12>>2]|0;c[F>>2]=I;c[m>>2]=TE((c[H>>2]|0)+(c[q>>2]|0)|0,c[(c[C>>2]|0)+16>>2]|0,c[F>>2]|0)|0;if(!(c[m>>2]|0))c[m>>2]=(c[s+12>>2]|0)-(c[(c[C>>2]|0)+12>>2]|0)}while(0);I=c[E>>2]|0;if(c[m>>2]|0){q=71;break}c[E>>2]=I+1;c[C>>2]=(c[C>>2]|0)+40;K=Ww(c[r>>2]|0)|0;c[q>>2]=(c[q>>2]|0)+K;K=Zw(c[r>>2]|0,0)|0;c[v>>2]=(c[v>>2]|0)+K;if((c[v>>2]|0)>>>0>=(c[B>>2]|0)>>>0){q=77;break}if((c[E>>2]|0)>=(e[(c[l>>2]|0)+4>>1]|0)){q=77;break}if((c[q>>2]|0)>>>0>(c[A>>2]|0)>>>0){q=77;break}}if((q|0)==47){K=(kj(66824)|0)&255;a[(c[l>>2]|0)+7>>0]=K;c[o>>2]=0;K=c[o>>2]|0;i=p;return K|0}else if((q|0)==63){K=(kj(66853)|0)&255;a[(c[l>>2]|0)+7>>0]=K;c[o>>2]=0;K=c[o>>2]|0;i=p;return K|0}else if((q|0)==71){if(a[(c[(c[n>>2]|0)+16>>2]|0)+I>>0]|0)c[m>>2]=0-(c[m>>2]|0);c[o>>2]=c[m>>2];K=c[o>>2]|0;i=p;return K|0}else if((q|0)==77){c[o>>2]=a[(c[l>>2]|0)+6>>0];K=c[o>>2]|0;i=p;return K|0}return 0}function Ww(a){a=a|0;var b=0,e=0,f=0;b=i;i=i+16|0;e=b+4|0;f=b;c[f>>2]=a;a=c[f>>2]|0;if((c[f>>2]|0)>>>0>=12){c[e>>2]=((a-12|0)>>>0)/2|0;f=c[e>>2]|0;i=b;return f|0}else{c[e>>2]=d[24360+a>>0];f=c[e>>2]|0;i=b;return f|0}return 0}function Xw(e,f,g){e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0;h=i;i=i+16|0;j=h+12|0;l=h+8|0;m=h+4|0;k=h;c[l>>2]=e;c[m>>2]=f;c[k>>2]=g;switch(c[m>>2]|0){case 4:{f=a[c[l>>2]>>0]<<24|d[(c[l>>2]|0)+1>>0]<<16|d[(c[l>>2]|0)+2>>0]<<8|d[(c[l>>2]|0)+3>>0];e=c[k>>2]|0;c[e>>2]=f;c[e+4>>2]=((f|0)<0)<<31>>31;b[(c[k>>2]|0)+8>>1]=4;c[j>>2]=4;e=c[j>>2]|0;i=h;return e|0};case 2:{f=a[c[l>>2]>>0]<<8|d[(c[l>>2]|0)+1>>0];e=c[k>>2]|0;c[e>>2]=f;c[e+4>>2]=((f|0)<0)<<31>>31;b[(c[k>>2]|0)+8>>1]=4;c[j>>2]=2;e=c[j>>2]|0;i=h;return e|0};case 9:case 8:{e=c[k>>2]|0;c[e>>2]=(c[m>>2]|0)-8;c[e+4>>2]=0;b[(c[k>>2]|0)+8>>1]=4;c[j>>2]=0;e=c[j>>2]|0;i=h;return e|0};case 3:{f=a[c[l>>2]>>0]<<16|d[(c[l>>2]|0)+1>>0]<<8|d[(c[l>>2]|0)+2>>0];e=c[k>>2]|0;c[e>>2]=f;c[e+4>>2]=((f|0)<0)<<31>>31;b[(c[k>>2]|0)+8>>1]=4;c[j>>2]=3;e=c[j>>2]|0;i=h;return e|0};case 1:{f=a[c[l>>2]>>0]|0;e=c[k>>2]|0;c[e>>2]=f;c[e+4>>2]=((f|0)<0)<<31>>31;b[(c[k>>2]|0)+8>>1]=4;c[j>>2]=1;e=c[j>>2]|0;i=h;return e|0};case 5:{e=d[(c[l>>2]|0)+2>>0]<<24|d[(c[l>>2]|0)+3>>0]<<16|d[(c[l>>2]|0)+4>>0]<<8|d[(c[l>>2]|0)+5>>0];f=a[c[l>>2]>>0]<<8|d[(c[l>>2]|0)+1>>0];f=bF(e|0,0,lF(0,1,f|0,((f|0)<0)<<31>>31|0)|0,D|0)|0;e=c[k>>2]|0;c[e>>2]=f;c[e+4>>2]=D;b[(c[k>>2]|0)+8>>1]=4;c[j>>2]=6;e=c[j>>2]|0;i=h;return e|0};case 7:case 6:{c[j>>2]=_w(c[l>>2]|0,c[m>>2]|0,c[k>>2]|0)|0;e=c[j>>2]|0;i=h;return e|0};case 0:case 11:case 10:{b[(c[k>>2]|0)+8>>1]=1;c[j>>2]=0;e=c[j>>2]|0;i=h;return e|0};default:{c[(c[k>>2]|0)+16>>2]=c[l>>2];c[(c[k>>2]|0)+12>>2]=(((c[m>>2]|0)-12|0)>>>0)/2|0;b[(c[k>>2]|0)+8>>1]=b[24352+((c[m>>2]&1)<<1)>>1]|0;c[j>>2]=c[(c[k>>2]|0)+12>>2];e=c[j>>2]|0;i=h;return e|0}}return 0}function Yw(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;g=i;i=i+32|0;f=g+8|0;l=g+24|0;h=g+20|0;j=g+16|0;k=g;c[l>>2]=b;c[h>>2]=e;switch(c[l>>2]|0){case 5:{k=d[(c[h>>2]|0)+2>>0]<<24|d[(c[h>>2]|0)+3>>0]<<16|d[(c[h>>2]|0)+4>>0]<<8|d[(c[h>>2]|0)+5>>0];l=a[c[h>>2]>>0]<<8|d[(c[h>>2]|0)+1>>0];b=f;c[b>>2]=bF(k|0,0,lF(0,1,l|0,((l|0)<0)<<31>>31|0)|0,D|0)|0;c[b+4>>2]=D;break};case 4:{c[j>>2]=d[c[h>>2]>>0]<<24|d[(c[h>>2]|0)+1>>0]<<16|d[(c[h>>2]|0)+2>>0]<<8|d[(c[h>>2]|0)+3>>0];l=c[j>>2]|0;b=f;c[b>>2]=l;c[b+4>>2]=((l|0)<0)<<31>>31;break};case 6:{b=k;c[b>>2]=d[c[h>>2]>>0]<<24|d[(c[h>>2]|0)+1>>0]<<16|d[(c[h>>2]|0)+2>>0]<<8|d[(c[h>>2]|0)+3>>0];c[b+4>>2]=0;b=c[k>>2]|0;l=k;c[l>>2]=d[(c[h>>2]|0)+4>>0]<<24|d[(c[h>>2]|0)+5>>0]<<16|d[(c[h>>2]|0)+6>>0]<<8|d[(c[h>>2]|0)+7>>0];c[l+4>>2]=b;l=c[k+4>>2]|0;b=f;c[b>>2]=c[k>>2];c[b+4>>2]=l;break};case 2:{l=a[c[h>>2]>>0]<<8|d[(c[h>>2]|0)+1>>0];b=f;c[b>>2]=l;c[b+4>>2]=((l|0)<0)<<31>>31;break};case 3:{l=a[c[h>>2]>>0]<<16|d[(c[h>>2]|0)+1>>0]<<8|d[(c[h>>2]|0)+2>>0];b=f;c[b>>2]=l;c[b+4>>2]=((l|0)<0)<<31>>31;break};case 1:case 0:{l=a[c[h>>2]>>0]|0;b=f;c[b>>2]=l;c[b+4>>2]=((l|0)<0)<<31>>31;break};default:{b=f;c[b>>2]=(c[l>>2]|0)-8;c[b+4>>2]=0}}b=f;D=c[b+4>>2]|0;i=g;return c[b>>2]|0}function Zw(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;i=i+16|0;f=d;e=d+8|0;g=f;c[g>>2]=a;c[g+4>>2]=b;c[e>>2]=0;do{c[e>>2]=(c[e>>2]|0)+1;a=f;a=cF(c[a>>2]|0,c[a+4>>2]|0,7)|0;g=f;c[g>>2]=a;c[g+4>>2]=D;g=f}while(((c[g>>2]|0)!=0|(c[g+4>>2]|0)!=0)&(c[e>>2]|0)<9);i=d;return c[e>>2]|0}function _w(a,e,f){a=a|0;e=e|0;f=f|0;var g=0,j=0,k=0,l=0,m=0,n=0;g=i;i=i+32|0;n=g+20|0;l=g+16|0;j=g+12|0;k=g;m=g+8|0;c[n>>2]=a;c[l>>2]=e;c[j>>2]=f;e=k;c[e>>2]=(d[c[n>>2]>>0]|0)<<24|(d[(c[n>>2]|0)+1>>0]|0)<<16|(d[(c[n>>2]|0)+2>>0]|0)<<8|(d[(c[n>>2]|0)+3>>0]|0);c[e+4>>2]=0;c[m>>2]=(d[(c[n>>2]|0)+4>>0]|0)<<24|(d[(c[n>>2]|0)+5>>0]|0)<<16|(d[(c[n>>2]|0)+6>>0]|0)<<8|(d[(c[n>>2]|0)+7>>0]|0);e=bF(0,c[k>>2]|0,c[m>>2]|0,0)|0;a=k;c[a>>2]=e;c[a+4>>2]=D;if((c[l>>2]|0)==6){l=k;m=c[l+4>>2]|0;n=c[j>>2]|0;c[n>>2]=c[l>>2];c[n+4>>2]=m;b[(c[j>>2]|0)+8>>1]=4;i=g;return 8}else{n=c[j>>2]|0;c[n+0>>2]=c[k+0>>2];c[n+4>>2]=c[k+4>>2];n=($w(+h[c[j>>2]>>3])|0)!=0;b[(c[j>>2]|0)+8>>1]=n?1:8;i=g;return 8}return 0}function $w(a){a=+a;var b=0,d=0,e=0,f=0,g=0;d=i;i=i+32|0;g=d+16|0;b=d+24|0;f=d+8|0;e=d;h[g>>3]=a;h[f>>3]=+h[g>>3];h[e>>3]=+h[f>>3];c[b>>2]=+h[f>>3]!=+h[e>>3]&1;i=d;return c[b>>2]|0}function ax(f,g){f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;l=i;i=i+32|0;k=l+20|0;n=l+16|0;m=l+12|0;o=l+8|0;p=l+4|0;h=l;c[n>>2]=f;c[m>>2]=g;if((d[(c[n>>2]|0)+73>>0]|0)!=1){if((d[(c[n>>2]|0)+73>>0]|0)>=3)g=vw(c[n>>2]|0)|0;else g=0;c[o>>2]=g;if(c[o>>2]|0){c[k>>2]=c[o>>2];f=c[k>>2]|0;i=l;return f|0}if(!(d[(c[n>>2]|0)+73>>0]|0)){c[c[m>>2]>>2]=1;c[k>>2]=0;f=c[k>>2]|0;i=l;return f|0}if((c[(c[n>>2]|0)+68>>2]|0)!=0?(a[(c[n>>2]|0)+73>>0]=1,f=(c[(c[n>>2]|0)+68>>2]|0)>0,c[(c[n>>2]|0)+68>>2]=0,f):0){c[k>>2]=0;f=c[k>>2]|0;i=l;return f|0}}c[h>>2]=c[(c[n>>2]|0)+120+(b[(c[n>>2]|0)+76>>1]<<2)>>2];f=(c[n>>2]|0)+78+(b[(c[n>>2]|0)+76>>1]<<1)|0;g=(b[f>>1]|0)+1<<16>>16;b[f>>1]=g;c[p>>2]=g&65535;g=(a[(c[h>>2]|0)+5>>0]|0)!=0;if((c[p>>2]|0)<(e[(c[h>>2]|0)+18>>1]|0))if(g){c[k>>2]=0;f=c[k>>2]|0;i=l;return f|0}else{c[k>>2]=bx(c[n>>2]|0)|0;f=c[k>>2]|0;i=l;return f|0}if(!g){f=c[n>>2]|0;c[o>>2]=ww(f,Hh((c[(c[h>>2]|0)+56>>2]|0)+((d[(c[h>>2]|0)+6>>0]|0)+8)|0)|0)|0;if(c[o>>2]|0){c[k>>2]=c[o>>2];f=c[k>>2]|0;i=l;return f|0}else{c[k>>2]=bx(c[n>>2]|0)|0;f=c[k>>2]|0;i=l;return f|0}}do{if(!(b[(c[n>>2]|0)+76>>1]|0)){j=17;break}yw(c[n>>2]|0);c[h>>2]=c[(c[n>>2]|0)+120+(b[(c[n>>2]|0)+76>>1]<<2)>>2]}while((e[(c[n>>2]|0)+78+(b[(c[n>>2]|0)+76>>1]<<1)>>1]|0)>=(e[(c[h>>2]|0)+18>>1]|0));if((j|0)==17){c[c[m>>2]>>2]=1;a[(c[n>>2]|0)+73>>0]=0;c[k>>2]=0;f=c[k>>2]|0;i=l;return f|0}if(a[(c[h>>2]|0)+2>>0]|0){c[k>>2]=sw(c[n>>2]|0,c[m>>2]|0)|0;f=c[k>>2]|0;i=l;return f|0}else{c[k>>2]=0;f=c[k>>2]|0;i=l;return f|0}return 0}function bx(f){f=f|0;var g=0,h=0,j=0,k=0,l=0;g=i;i=i+16|0;j=g+12|0;l=g+8|0;h=g+4|0;k=g;c[j>>2]=f;c[h>>2]=0;while(1){if(c[h>>2]|0){f=5;break}f=c[(c[j>>2]|0)+120+(b[(c[j>>2]|0)+76>>1]<<2)>>2]|0;c[k>>2]=f;if(!((a[f+5>>0]|0)!=0^1)){f=5;break}c[l>>2]=Hh((c[(c[k>>2]|0)+56>>2]|0)+(e[(c[k>>2]|0)+20>>1]&(d[(c[(c[k>>2]|0)+64>>2]|0)+(e[(c[j>>2]|0)+78+(b[(c[j>>2]|0)+76>>1]<<1)>>1]<<1)>>0]<<8|d[(c[(c[k>>2]|0)+64>>2]|0)+(e[(c[j>>2]|0)+78+(b[(c[j>>2]|0)+76>>1]<<1)>>1]<<1)+1>>0]))|0)|0;c[h>>2]=ww(c[j>>2]|0,c[l>>2]|0)|0}if((f|0)==5){i=g;return c[h>>2]|0}return 0}function cx(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0;d=i;i=i+32|0;f=d+16|0;j=d+12|0;h=d+8|0;e=d+4|0;g=d;c[f>>2]=a;c[j>>2]=b;c[e>>2]=ko(c[c[f>>2]>>2]|0,0,(c[j>>2]|0)+12|0,0)|0;if(!(c[e>>2]|0)){a=c[e>>2]|0;i=d;return a|0}c[h>>2]=Ve(c[c[f>>2]>>2]|0,c[(c[(c[j>>2]|0)+4>>2]|0)+20>>2]|0)|0;if(!((c[h>>2]|0)==0|(c[h>>2]|0)>=2)){a=c[e>>2]|0;i=d;return a|0}c[g>>2]=c[c[f>>2]>>2];a=ne(c[g>>2]|0,c[(c[(c[g>>2]|0)+16>>2]|0)+(c[h>>2]<<4)>>2]|0)|0;c[(c[e>>2]|0)+8+(((c[c[e>>2]>>2]|0)-1|0)*72|0)+4>>2]=a;a=c[e>>2]|0;i=d;return a|0}function dx(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;i=i+16|0;g=d+8|0;e=d+4|0;f=d;c[g>>2]=a;c[e>>2]=b;if(!(c[e>>2]|0)){i=d;return}c[f>>2]=c[(c[e>>2]|0)+28>>2];wn(c[g>>2]|0,c[(c[f>>2]|0)+20>>2]|0);sn(c[g>>2]|0,c[(c[f>>2]|0)+24>>2]|0);tn(c[g>>2]|0,c[(c[f>>2]|0)+8>>2]|0);wn(c[g>>2]|0,c[(c[e>>2]|0)+12>>2]|0);Xb(c[g>>2]|0,c[e>>2]|0);i=d;return}function ex(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=i;i=i+16|0;e=d+12|0;f=d+8|0;g=d+4|0;h=d;c[f>>2]=a;c[g>>2]=b;if((c[f>>2]|0)==0|(c[g>>2]|0)==0){c[e>>2]=1;a=c[e>>2]|0;i=d;return a|0}c[h>>2]=0;while(1){if((c[h>>2]|0)>=(c[c[g>>2]>>2]|0)){b=8;break}if((ir(c[f>>2]|0,c[(c[(c[g>>2]|0)+4>>2]|0)+((c[h>>2]|0)*20|0)+4>>2]|0)|0)>=0){b=6;break}c[h>>2]=(c[h>>2]|0)+1}if((b|0)==6){c[e>>2]=1;a=c[e>>2]|0;i=d;return a|0}else if((b|0)==8){c[e>>2]=0;a=c[e>>2]|0;i=d;return a|0}return 0}function fx(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;e=i;i=i+16|0;d=e+8|0;g=e+4|0;f=e;c[g>>2]=a;c[f>>2]=b;b=(c[f>>2]|0)==0;do if(c[g>>2]|0)if(b){c[d>>2]=0;break}else{c[d>>2]=(xc(c[g>>2]|0,c[f>>2]|0)|0)==0&1;break}else c[d>>2]=b&1;while(0);i=e;return c[d>>2]|0}function gx(a,f){a=a|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;g=i;i=i+16|0;h=g+12|0;k=g+8|0;j=g+4|0;l=g;c[k>>2]=a;c[j>>2]=f;if((e[(c[k>>2]|0)+50>>1]|0)!=(e[(c[j>>2]|0)+50>>1]|0)){c[h>>2]=0;a=c[h>>2]|0;i=g;return a|0}if((d[(c[k>>2]|0)+54>>0]|0)!=(d[(c[j>>2]|0)+54>>0]|0)){c[h>>2]=0;a=c[h>>2]|0;i=g;return a|0}c[l>>2]=0;while(1){if((c[l>>2]|0)>=(e[(c[j>>2]|0)+50>>1]|0)){f=14;break}if((b[(c[(c[j>>2]|0)+4>>2]|0)+(c[l>>2]<<1)>>1]|0)!=(b[(c[(c[k>>2]|0)+4>>2]|0)+(c[l>>2]<<1)>>1]|0)){f=8;break}if((d[(c[(c[j>>2]|0)+28>>2]|0)+(c[l>>2]|0)>>0]|0)!=(d[(c[(c[k>>2]|0)+28>>2]|0)+(c[l>>2]|0)>>0]|0)){f=10;break}if(!(fx(c[(c[(c[j>>2]|0)+32>>2]|0)+(c[l>>2]<<2)>>2]|0,c[(c[(c[k>>2]|0)+32>>2]|0)+(c[l>>2]<<2)>>2]|0)|0)){f=12;break}c[l>>2]=(c[l>>2]|0)+1}if((f|0)==8){c[h>>2]=0;a=c[h>>2]|0;i=g;return a|0}else if((f|0)==10){c[h>>2]=0;a=c[h>>2]|0;i=g;return a|0}else if((f|0)==12){c[h>>2]=0;a=c[h>>2]|0;i=g;return a|0}else if((f|0)==14)if(Dq(c[(c[j>>2]|0)+36>>2]|0,c[(c[k>>2]|0)+36>>2]|0,-1)|0){c[h>>2]=0;a=c[h>>2]|0;i=g;return a|0}else{c[h>>2]=1;a=c[h>>2]|0;i=g;return a|0}return 0}function hx(a,d,e,f,g,h,j,k){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;l=i;i=i+96|0;z=l+88|0;y=l+84|0;v=l+80|0;C=l+76|0;A=l+72|0;D=l+68|0;m=l+64|0;q=l+60|0;n=l+56|0;x=l+52|0;u=l+48|0;E=l+44|0;r=l+40|0;w=l+36|0;s=l+32|0;o=l+28|0;t=l+24|0;p=l+20|0;B=l;c[z>>2]=a;c[y>>2]=d;c[v>>2]=e;c[C>>2]=f;c[A>>2]=g;c[D>>2]=h;c[m>>2]=j;c[q>>2]=k;c[n>>2]=c[(c[z>>2]|0)+8>>2];c[x>>2]=0;c[u>>2]=0;c[t>>2]=c[c[z>>2]>>2];c[p>>2]=Rp(c[t>>2]|0,c[v>>2]|0)|0;a=c[z>>2]|0;c[x>>2]=eo(a,0,ho(c[t>>2]|0,27,24560)|0)|0;if(c[A>>2]|0){d=c[z>>2]|0;a=c[x>>2]|0;c[x>>2]=eo(d,a,Bq(c[t>>2]|0,c[A>>2]|0,0)|0)|0}c[w>>2]=0;while(1){if((c[w>>2]|0)>=(b[(c[v>>2]|0)+38>>1]|0))break;j=c[t>>2]|0;k=c[w>>2]|0;if((c[(c[D>>2]|0)+(c[w>>2]<<2)>>2]|0)>=0)c[E>>2]=Bq(j,c[(c[(c[C>>2]|0)+4>>2]|0)+((c[(c[D>>2]|0)+(k<<2)>>2]|0)*20|0)>>2]|0,0)|0;else c[E>>2]=ho(j,27,c[(c[(c[v>>2]|0)+4>>2]|0)+(k*24|0)>>2]|0)|0;c[x>>2]=eo(c[z>>2]|0,c[x>>2]|0,c[E>>2]|0)|0;c[w>>2]=(c[w>>2]|0)+1}c[u>>2]=co(c[z>>2]|0,c[x>>2]|0,c[y>>2]|0,c[m>>2]|0,0,0,0,0,0,0)|0;a=(c[z>>2]|0)+68|0;d=c[a>>2]|0;c[a>>2]=d+1;c[r>>2]=d;fp(c[n>>2]|0,57,c[r>>2]|0,(b[(c[v>>2]|0)+38>>1]|0)+1+((c[A>>2]|0)!=0&1)|0)|0;Xe(c[n>>2]|0,8);$s(B,14,c[r>>2]|0);ao(c[z>>2]|0,c[u>>2]|0,B)|0;d=(c[z>>2]|0)+72|0;a=(c[d>>2]|0)+1|0;c[d>>2]=a;c[o>>2]=a;a=(c[z>>2]|0)+72|0;c[a>>2]=(c[a>>2]|0)+((b[(c[v>>2]|0)+38>>1]|0)+1);c[s>>2]=fp(c[n>>2]|0,108,c[r>>2]|0,0)|0;ip(c[n>>2]|0,47,c[r>>2]|0,0,c[o>>2]|0)|0;ip(c[n>>2]|0,47,c[r>>2]|0,(c[A>>2]|0)!=0?1:0,(c[o>>2]|0)+1|0)|0;c[w>>2]=0;while(1){if((c[w>>2]|0)>=(b[(c[v>>2]|0)+38>>1]|0))break;ip(c[n>>2]|0,47,c[r>>2]|0,(c[w>>2]|0)+1+((c[A>>2]|0)!=0&1)|0,(c[o>>2]|0)+2+(c[w>>2]|0)|0)|0;c[w>>2]=(c[w>>2]|0)+1}wu(c[z>>2]|0,c[v>>2]|0);hp(c[n>>2]|0,15,0,(b[(c[v>>2]|0)+38>>1]|0)+2|0,c[o>>2]|0,c[p>>2]|0,-10)|0;Xe(c[n>>2]|0,((c[q>>2]|0)==10?2:c[q>>2]|0)&255);Sp(c[z>>2]|0);fp(c[n>>2]|0,9,c[r>>2]|0,(c[s>>2]|0)+1|0)|0;zp(c[n>>2]|0,c[s>>2]|0);fp(c[n>>2]|0,61,c[r>>2]|0,0)|0;tn(c[t>>2]|0,c[u>>2]|0);i=l;return}function ix(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+16|0;f=e+8|0;h=e+4|0;g=e;c[f>>2]=a;c[h>>2]=b;c[g>>2]=d;c[(c[h>>2]|0)+4>>2]=c[f>>2];c[c[h>>2]>>2]=c[(c[f>>2]|0)+492>>2];c[(c[f>>2]|0)+492>>2]=c[g>>2];i=e;return}function jx(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;m=i;i=i+64|0;k=m+48|0;p=m+44|0;f=m+40|0;l=m+36|0;j=m+16|0;g=m+12|0;n=m+8|0;h=m+4|0;o=m;c[k>>2]=a;c[p>>2]=b;c[f>>2]=d;c[l>>2]=e;c[h>>2]=c[c[k>>2]>>2];c[o>>2]=Ve(c[h>>2]|0,c[(c[p>>2]|0)+68>>2]|0)|0;c[f>>2]=Bq(c[h>>2]|0,c[f>>2]|0,0)|0;c[n>>2]=ko(c[h>>2]|0,0,0,0)|0;if(c[n>>2]|0){a=ne(c[h>>2]|0,c[c[p>>2]>>2]|0)|0;c[(c[n>>2]|0)+16>>2]=a;a=ne(c[h>>2]|0,c[(c[(c[h>>2]|0)+16>>2]|0)+(c[o>>2]<<4)>>2]|0)|0;c[(c[n>>2]|0)+12>>2]=a}c[g>>2]=co(c[k>>2]|0,0,c[n>>2]|0,c[f>>2]|0,0,0,0,0,0,0)|0;$s(j,12,c[l>>2]|0);ao(c[k>>2]|0,c[g>>2]|0,j)|0;tn(c[h>>2]|0,c[g>>2]|0);i=m;return}function kx(a,b){a=a|0;b=b|0;var e=0,f=0,g=0;f=i;i=i+16|0;e=f+4|0;g=f;c[e>>2]=a;c[g>>2]=b;a=c[g>>2]|0;b=(c[e>>2]|0)+60|0;c[a+0>>2]=c[b+0>>2];c[a+4>>2]=c[b+4>>2];i=f;return d[(c[e>>2]|0)+38>>0]|0|0}function lx(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;if(!(c[(c[d>>2]|0)+4>>2]|0)){i=b;return}c[(c[(c[d>>2]|0)+4>>2]|0)+492>>2]=c[c[d>>2]>>2];c[(c[d>>2]|0)+4>>2]=0;i=b;return}function mx(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;g=i;i=i+48|0;f=g+32|0;o=g+28|0;l=g+24|0;k=g+20|0;j=g+16|0;h=g+12|0;m=g+8|0;p=g+4|0;n=g;c[o>>2]=a;c[l>>2]=b;c[k>>2]=d;c[j>>2]=e;do if(((c[c[l>>2]>>2]|0)+(c[k>>2]|0)|0)>>>0>(c[(c[l>>2]|0)+4>>2]|0)>>>0){c[p>>2]=(c[c[l>>2]>>2]|0)+(c[k>>2]|0);c[m>>2]=Fk(c[o>>2]|0,c[l>>2]|0,80+(((c[p>>2]|0)-1|0)*72|0)|0,0)|0;if(c[m>>2]|0){c[l>>2]=c[m>>2];c[n>>2]=((((Bk(c[o>>2]|0,c[m>>2]|0)|0)-80|0)>>>0)/72|0)+1;c[(c[l>>2]|0)+4>>2]=c[n>>2];break}c[f>>2]=c[l>>2];a=c[f>>2]|0;i=g;return a|0}while(0);c[h>>2]=(c[c[l>>2]>>2]|0)-1;while(1){if((c[h>>2]|0)<(c[j>>2]|0))break;e=(c[l>>2]|0)+8+(((c[h>>2]|0)+(c[k>>2]|0)|0)*72|0)+0|0;n=(c[l>>2]|0)+8+((c[h>>2]|0)*72|0)+0|0;m=e+72|0;do{c[e>>2]=c[n>>2];e=e+4|0;n=n+4|0}while((e|0)<(m|0));c[h>>2]=(c[h>>2]|0)+ -1}a=c[l>>2]|0;c[a>>2]=(c[a>>2]|0)+(c[k>>2]|0);_E((c[l>>2]|0)+8+((c[j>>2]|0)*72|0)|0,0,(c[k>>2]|0)*72|0)|0;c[h>>2]=c[j>>2];while(1){if((c[h>>2]|0)>=((c[j>>2]|0)+(c[k>>2]|0)|0))break;c[(c[l>>2]|0)+8+((c[h>>2]|0)*72|0)+40>>2]=-1;c[h>>2]=(c[h>>2]|0)+1}c[f>>2]=c[l>>2];a=c[f>>2]|0;i=g;return a|0}function nx(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0;f=i;i=i+32|0;h=f;g=f+20|0;j=f+16|0;m=f+12|0;l=f+8|0;k=f+4|0;c[j>>2]=a;c[m>>2]=b;c[l>>2]=e;c[k>>2]=d[c[m>>2]>>0];if((c[l>>2]|0)>1?(c[k>>2]|0)==10|(c[k>>2]|0)==11:0){Se(c[j>>2]|0,25392,h);c[g>>2]=1;m=c[g>>2]|0;i=f;return m|0}c[g>>2]=0;m=c[g>>2]|0;i=f;return m|0}function ox(a){a=a|0;var b=0,d=0,e=0;d=i;i=i+16|0;e=d+4|0;b=d;c[e>>2]=a;c[b>>2]=0;sr(c[e>>2]|0,b);i=d;return c[b>>2]|0}function px(f,g,h,j,k){f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0;E=i;i=i+128|0;x=E+112|0;I=E+108|0;H=E+104|0;l=E+100|0;s=E+96|0;C=E+92|0;Q=E+88|0;p=E+84|0;r=E+80|0;o=E+76|0;w=E+72|0;y=E+68|0;u=E+64|0;q=E+60|0;t=E+56|0;m=E+52|0;B=E+48|0;n=E+44|0;P=E+40|0;M=E+36|0;O=E+32|0;J=E+28|0;K=E+24|0;L=E+20|0;F=E+16|0;G=E+12|0;z=E+8|0;v=E+116|0;A=E+4|0;D=E;c[I>>2]=f;c[H>>2]=g;c[l>>2]=h;c[s>>2]=j;c[C>>2]=k;c[Q>>2]=c[(c[I>>2]|0)+492>>2];c[n>>2]=c[c[I>>2]>>2];if(e[(c[n>>2]|0)+60>>1]&1){c[x>>2]=0;Q=c[x>>2]|0;i=E;return Q|0}c[w>>2]=c[(c[H>>2]|0)+32>>2];c[B>>2]=(c[w>>2]|0)+8+((c[l>>2]|0)*72|0);c[q>>2]=c[(c[B>>2]|0)+40>>2];c[r>>2]=c[(c[B>>2]|0)+20>>2];if((c[s>>2]|0)!=0&(c[C>>2]|0)!=0){c[x>>2]=0;Q=c[x>>2]|0;i=E;return Q|0}if((c[C>>2]|0)!=0?(c[c[w>>2]>>2]|0)>1:0){c[x>>2]=0;Q=c[x>>2]|0;i=E;return Q|0}c[y>>2]=c[(c[r>>2]|0)+32>>2];if((c[(c[r>>2]|0)+60>>2]|0)!=0?(c[(c[H>>2]|0)+60>>2]|0)!=0:0){c[x>>2]=0;Q=c[x>>2]|0;i=E;return Q|0}if(c[(c[r>>2]|0)+64>>2]|0){c[x>>2]=0;Q=c[x>>2]|0;i=E;return Q|0}if((e[(c[H>>2]|0)+6>>1]&64|0)!=0?(c[(c[r>>2]|0)+60>>2]|0)!=0:0){c[x>>2]=0;Q=c[x>>2]|0;i=E;return Q|0}if(!(c[c[y>>2]>>2]|0)){c[x>>2]=0;Q=c[x>>2]|0;i=E;return Q|0}if(e[(c[r>>2]|0)+6>>1]&1){c[x>>2]=0;Q=c[x>>2]|0;i=E;return Q|0}if((c[(c[r>>2]|0)+60>>2]|0)!=0?(c[s>>2]|0)!=0?1:(c[c[w>>2]>>2]|0)>1:0){c[x>>2]=0;Q=c[x>>2]|0;i=E;return Q|0}if((c[C>>2]|0)!=0?(e[(c[H>>2]|0)+6>>1]&1|0)!=0:0){c[x>>2]=0;Q=c[x>>2]|0;i=E;return Q|0}if((c[(c[H>>2]|0)+48>>2]|0)!=0?(c[(c[r>>2]|0)+48>>2]|0)!=0:0){c[x>>2]=0;Q=c[x>>2]|0;i=E;return Q|0}if((c[s>>2]|0)!=0?(c[(c[r>>2]|0)+48>>2]|0)!=0:0){c[x>>2]=0;Q=c[x>>2]|0;i=E;return Q|0}if((c[(c[r>>2]|0)+60>>2]|0)!=0?(c[(c[H>>2]|0)+36>>2]|0)!=0:0){c[x>>2]=0;Q=c[x>>2]|0;i=E;return Q|0}if((c[(c[r>>2]|0)+60>>2]|0)!=0?(e[(c[H>>2]|0)+6>>1]&1|0)!=0:0){c[x>>2]=0;Q=c[x>>2]|0;i=E;return Q|0}if(e[(c[r>>2]|0)+6>>1]&6144){c[x>>2]=0;Q=c[x>>2]|0;i=E;return Q|0}if((e[(c[H>>2]|0)+6>>1]&2048|0)!=0?(c[(c[r>>2]|0)+52>>2]|0)!=0:0){c[x>>2]=0;Q=c[x>>2]|0;i=E;return Q|0}if(d[(c[B>>2]|0)+36>>0]&32){c[x>>2]=0;Q=c[x>>2]|0;i=E;return Q|0}a:do if(c[(c[r>>2]|0)+52>>2]|0){if(c[(c[r>>2]|0)+48>>2]|0){c[x>>2]=0;Q=c[x>>2]|0;i=E;return Q|0}do if(!(c[s>>2]|0)){if(e[(c[H>>2]|0)+6>>1]&1)break;if((c[c[w>>2]>>2]|0)!=1)break;c[o>>2]=c[r>>2];while(1){if(!(c[o>>2]|0))break;if(e[(c[o>>2]|0)+6>>1]&5){N=58;break}if((c[(c[o>>2]|0)+52>>2]|0)!=0?(d[(c[o>>2]|0)+4>>0]|0)!=116:0){N=58;break}if((c[c[(c[o>>2]|0)+32>>2]>>2]|0)<1){N=58;break}if((c[c[c[r>>2]>>2]>>2]|0)!=(c[c[c[o>>2]>>2]>>2]|0)){N=58;break}c[o>>2]=c[(c[o>>2]|0)+52>>2]}if((N|0)==58){c[x>>2]=0;Q=c[x>>2]|0;i=E;return Q|0}if(!(c[(c[H>>2]|0)+48>>2]|0))break a;c[P>>2]=0;while(1){if((c[P>>2]|0)>=(c[c[(c[H>>2]|0)+48>>2]>>2]|0))break a;if(!(e[(c[(c[(c[H>>2]|0)+48>>2]|0)+4>>2]|0)+((c[P>>2]|0)*20|0)+16>>1]|0))break;c[P>>2]=(c[P>>2]|0)+1}c[x>>2]=0;Q=c[x>>2]|0;i=E;return Q|0}while(0);c[x>>2]=0;Q=c[x>>2]|0;i=E;return Q|0}while(0);c[(c[I>>2]|0)+492>>2]=c[(c[B>>2]|0)+8>>2];ap(c[I>>2]|0,21,0,0,0)|0;c[(c[I>>2]|0)+492>>2]=c[Q>>2];c[r>>2]=c[(c[r>>2]|0)+52>>2];while(1){if(!(c[r>>2]|0))break;c[O>>2]=c[(c[H>>2]|0)+48>>2];c[J>>2]=c[(c[H>>2]|0)+60>>2];c[K>>2]=c[(c[H>>2]|0)+64>>2];c[L>>2]=c[(c[H>>2]|0)+52>>2];c[(c[H>>2]|0)+48>>2]=0;c[(c[H>>2]|0)+32>>2]=0;c[(c[H>>2]|0)+52>>2]=0;c[(c[H>>2]|0)+60>>2]=0;c[(c[H>>2]|0)+64>>2]=0;c[M>>2]=Wp(c[n>>2]|0,c[H>>2]|0,0)|0;c[(c[H>>2]|0)+64>>2]=c[K>>2];c[(c[H>>2]|0)+60>>2]=c[J>>2];c[(c[H>>2]|0)+48>>2]=c[O>>2];c[(c[H>>2]|0)+32>>2]=c[w>>2];a[(c[H>>2]|0)+4>>0]=116;f=c[L>>2]|0;if(!(c[M>>2]|0))c[(c[H>>2]|0)+52>>2]=f;else{c[(c[M>>2]|0)+52>>2]=f;if(c[L>>2]|0)c[(c[L>>2]|0)+56>>2]=c[M>>2];c[(c[M>>2]|0)+56>>2]=c[H>>2];c[(c[H>>2]|0)+52>>2]=c[M>>2]}if(a[(c[n>>2]|0)+64>>0]|0){N=74;break}c[r>>2]=c[(c[r>>2]|0)+52>>2]}if((N|0)==74){c[x>>2]=1;Q=c[x>>2]|0;i=E;return Q|0}Q=c[(c[B>>2]|0)+20>>2]|0;c[o>>2]=Q;c[r>>2]=Q;Xb(c[n>>2]|0,c[(c[B>>2]|0)+4>>2]|0);Xb(c[n>>2]|0,c[(c[B>>2]|0)+8>>2]|0);Xb(c[n>>2]|0,c[(c[B>>2]|0)+12>>2]|0);c[(c[B>>2]|0)+4>>2]=0;c[(c[B>>2]|0)+8>>2]=0;c[(c[B>>2]|0)+12>>2]=0;c[(c[B>>2]|0)+20>>2]=0;if(c[(c[B>>2]|0)+16>>2]|0){c[F>>2]=c[(c[B>>2]|0)+16>>2];if((e[(c[F>>2]|0)+40>>1]|0)==1){J=c[I>>2]|0;if(c[(c[I>>2]|0)+408>>2]|0)J=c[J+408>>2]|0;c[G>>2]=J;c[(c[F>>2]|0)+72>>2]=c[(c[G>>2]|0)+524>>2];c[(c[G>>2]|0)+524>>2]=c[F>>2]}else{Q=(c[F>>2]|0)+40|0;b[Q>>1]=(b[Q>>1]|0)+ -1<<16>>16}c[(c[B>>2]|0)+16>>2]=0}c[p>>2]=c[H>>2];while(1){if(!(c[p>>2]|0))break;a[v>>0]=0;c[y>>2]=c[(c[r>>2]|0)+32>>2];c[z>>2]=c[c[y>>2]>>2];c[w>>2]=c[(c[p>>2]|0)+32>>2];if(!(c[w>>2]|0)){Q=ko(c[n>>2]|0,0,0,0)|0;c[(c[p>>2]|0)+32>>2]=Q;c[w>>2]=Q;if(!(c[w>>2]|0))break}else a[v>>0]=a[(c[B>>2]|0)+36>>0]|0;if((c[z>>2]|0)>1?(Q=mx(c[n>>2]|0,c[w>>2]|0,(c[z>>2]|0)-1|0,(c[l>>2]|0)+1|0)|0,c[w>>2]=Q,c[(c[p>>2]|0)+32>>2]=Q,(a[(c[n>>2]|0)+64>>0]|0)!=0):0)break;c[t>>2]=0;while(1){if((c[t>>2]|0)>=(c[z>>2]|0))break;xn(c[n>>2]|0,c[(c[w>>2]|0)+8+(((c[t>>2]|0)+(c[l>>2]|0)|0)*72|0)+48>>2]|0);H=(c[w>>2]|0)+8+(((c[t>>2]|0)+(c[l>>2]|0)|0)*72|0)+0|0;G=(c[y>>2]|0)+8+((c[t>>2]|0)*72|0)+0|0;F=H+72|0;do{c[H>>2]=c[G>>2];H=H+4|0;G=G+4|0}while((H|0)<(F|0));H=(c[y>>2]|0)+8+((c[t>>2]|0)*72|0)+0|0;F=H+72|0;do{c[H>>2]=0;H=H+4|0}while((H|0)<(F|0));c[t>>2]=(c[t>>2]|0)+1}a[(c[w>>2]|0)+8+((c[l>>2]|0)*72|0)+36>>0]=a[v>>0]|0;c[u>>2]=c[c[p>>2]>>2];c[t>>2]=0;while(1){if((c[t>>2]|0)>=(c[c[u>>2]>>2]|0))break;if(!(c[(c[(c[u>>2]|0)+4>>2]|0)+((c[t>>2]|0)*20|0)+4>>2]|0)){c[A>>2]=ne(c[n>>2]|0,c[(c[(c[u>>2]|0)+4>>2]|0)+((c[t>>2]|0)*20|0)+8>>2]|0)|0;sm(c[A>>2]|0)|0;c[(c[(c[u>>2]|0)+4>>2]|0)+((c[t>>2]|0)*20|0)+4>>2]=c[A>>2]}c[t>>2]=(c[t>>2]|0)+1}ay(c[n>>2]|0,c[c[p>>2]>>2]|0,c[q>>2]|0,c[c[r>>2]>>2]|0);if(c[s>>2]|0){ay(c[n>>2]|0,c[(c[p>>2]|0)+40>>2]|0,c[q>>2]|0,c[c[r>>2]>>2]|0);Q=by(c[n>>2]|0,c[(c[p>>2]|0)+44>>2]|0,c[q>>2]|0,c[c[r>>2]>>2]|0)|0;c[(c[p>>2]|0)+44>>2]=Q}do if(c[(c[r>>2]|0)+48>>2]|0){c[D>>2]=c[(c[r>>2]|0)+48>>2];c[t>>2]=0;while(1){if((c[t>>2]|0)>=(c[c[D>>2]>>2]|0))break;b[(c[(c[D>>2]|0)+4>>2]|0)+((c[t>>2]|0)*20|0)+16>>1]=0;c[t>>2]=(c[t>>2]|0)+1}c[(c[p>>2]|0)+48>>2]=c[D>>2];c[(c[r>>2]|0)+48>>2]=0}else{if(!(c[(c[p>>2]|0)+48>>2]|0))break;ay(c[n>>2]|0,c[(c[p>>2]|0)+48>>2]|0,c[q>>2]|0,c[c[r>>2]>>2]|0)}while(0);if(c[(c[r>>2]|0)+36>>2]|0)c[m>>2]=Bq(c[n>>2]|0,c[(c[r>>2]|0)+36>>2]|0,0)|0;else c[m>>2]=0;if(c[C>>2]|0){c[(c[p>>2]|0)+44>>2]=c[(c[p>>2]|0)+36>>2];c[(c[p>>2]|0)+36>>2]=c[m>>2];g=by(c[n>>2]|0,c[(c[p>>2]|0)+44>>2]|0,c[q>>2]|0,c[c[r>>2]>>2]|0)|0;c[(c[p>>2]|0)+44>>2]=g;g=c[n>>2]|0;Q=c[(c[p>>2]|0)+44>>2]|0;Q=mr(g,Q,Bq(c[n>>2]|0,c[(c[r>>2]|0)+44>>2]|0,0)|0)|0;c[(c[p>>2]|0)+44>>2]=Q;Q=Jq(c[n>>2]|0,c[(c[r>>2]|0)+40>>2]|0,0)|0;c[(c[p>>2]|0)+40>>2]=Q}else{Q=by(c[n>>2]|0,c[(c[p>>2]|0)+36>>2]|0,c[q>>2]|0,c[c[r>>2]>>2]|0)|0;c[(c[p>>2]|0)+36>>2]=Q;Q=mr(c[n>>2]|0,c[(c[p>>2]|0)+36>>2]|0,c[m>>2]|0)|0;c[(c[p>>2]|0)+36>>2]=Q}Q=(c[p>>2]|0)+6|0;b[Q>>1]=e[Q>>1]|e[(c[r>>2]|0)+6>>1]&1;if(c[(c[r>>2]|0)+60>>2]|0){c[(c[p>>2]|0)+60>>2]=c[(c[r>>2]|0)+60>>2];c[(c[r>>2]|0)+60>>2]=0}c[p>>2]=c[(c[p>>2]|0)+52>>2];c[r>>2]=c[(c[r>>2]|0)+52>>2]}tn(c[n>>2]|0,c[o>>2]|0);c[x>>2]=1;Q=c[x>>2]|0;i=E;return Q|0}function qx(b){b=b|0;var d=0,e=0;d=i;i=i+16|0;e=d;c[e>>2]=b;a[(c[e>>2]|0)+19>>0]=0;c[(c[e>>2]|0)+56>>2]=0;i=d;return}function rx(f,g,h){f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0;q=i;i=i+224|0;G=q;p=q+212|0;s=q+208|0;o=q+204|0;m=q+200|0;j=q+196|0;C=q+192|0;z=q+188|0;n=q+168|0;k=q+164|0;l=q+160|0;x=q+156|0;y=q+152|0;A=q+148|0;B=q+144|0;r=q+140|0;M=q+216|0;L=q+136|0;J=q+132|0;K=q+128|0;O=q+124|0;N=q+104|0;F=q+100|0;E=q+96|0;H=q+92|0;I=q+88|0;R=q+84|0;U=q+80|0;Q=q+76|0;P=q+72|0;T=q+68|0;X=q+64|0;Y=q+60|0;Z=q+56|0;_=q+36|0;S=q+32|0;V=q+28|0;t=q+24|0;u=q+20|0;W=q+16|0;v=q+12|0;w=q+8|0;$=q+4|0;c[s>>2]=f;c[o>>2]=g;c[m>>2]=h;c[j>>2]=0;c[k>>2]=0;c[x>>2]=0;c[y>>2]=0;c[l>>2]=c[c[s>>2]>>2];c[C>>2]=c[(c[o>>2]|0)+52>>2];f=c[m>>2]|0;c[n+0>>2]=c[f+0>>2];c[n+4>>2]=c[f+4>>2];c[n+8>>2]=c[f+8>>2];c[n+12>>2]=c[f+12>>2];c[n+16>>2]=c[f+16>>2];a:do if(!(c[(c[C>>2]|0)+48>>2]|0)){h=c[s>>2]|0;if(c[(c[C>>2]|0)+60>>2]|0){c[G>>2]=Vx(d[(c[o>>2]|0)+4>>0]|0)|0;Se(h,25096,G);c[j>>2]=1;break}c[z>>2]=dp(h)|0;if((d[n>>0]|0|0)==12){fp(c[z>>2]|0,57,c[n+4>>2]|0,c[c[c[o>>2]>>2]>>2]|0)|0;Xe(c[z>>2]|0,8);a[n>>0]=14}h=e[(c[o>>2]|0)+6>>1]|0;if((c[c[c[o>>2]>>2]>>2]|0)!=(c[c[c[C>>2]>>2]>>2]|0)){r=c[s>>2]|0;if(h&128)Se(r,25144,G);else{c[G>>2]=Vx(d[(c[o>>2]|0)+4>>0]|0)|0;Se(r,25192,G)}c[j>>2]=1;break}do if(!(h&2048)){if(c[(c[o>>2]|0)+48>>2]|0){c[p>>2]=Xx(c[s>>2]|0,c[o>>2]|0,c[m>>2]|0)|0;f=c[p>>2]|0;i=q;return f|0}G=d[(c[o>>2]|0)+4>>0]|0;if((G|0)==116){c[A>>2]=0;c[(c[C>>2]|0)+8>>2]=c[(c[o>>2]|0)+8>>2];c[(c[C>>2]|0)+12>>2]=c[(c[o>>2]|0)+12>>2];c[(c[C>>2]|0)+60>>2]=c[(c[o>>2]|0)+60>>2];c[(c[C>>2]|0)+64>>2]=c[(c[o>>2]|0)+64>>2];c[x>>2]=c[(c[s>>2]|0)+468>>2];c[j>>2]=ao(c[s>>2]|0,c[C>>2]|0,n)|0;c[(c[o>>2]|0)+60>>2]=0;c[(c[o>>2]|0)+64>>2]=0;if(c[j>>2]|0)break a;c[(c[o>>2]|0)+52>>2]=0;c[(c[o>>2]|0)+8>>2]=c[(c[C>>2]|0)+8>>2];c[(c[o>>2]|0)+12>>2]=c[(c[C>>2]|0)+12>>2];if(c[(c[o>>2]|0)+8>>2]|0)c[A>>2]=Ir(c[z>>2]|0,139,c[(c[o>>2]|0)+8>>2]|0)|0;c[y>>2]=c[(c[s>>2]|0)+468>>2];c[j>>2]=ao(c[s>>2]|0,c[o>>2]|0,n)|0;c[k>>2]=c[(c[o>>2]|0)+52>>2];c[(c[o>>2]|0)+52>>2]=c[C>>2];g=(c[C>>2]|0)+24|0;f=(c[o>>2]|0)+24|0;h=f;g=bF(c[h>>2]|0,c[h+4>>2]|0,c[g>>2]|0,c[g+4>>2]|0)|0;c[f>>2]=g;c[f+4>>2]=D;if(((c[(c[C>>2]|0)+60>>2]|0)!=0?(f=(yq(c[(c[C>>2]|0)+60>>2]|0,B)|0)!=0,f&(c[B>>2]|0)>0):0)?(g=(c[o>>2]|0)+24|0,_=c[g+4>>2]|0,f=c[B>>2]|0,h=((f|0)<0)<<31>>31,_>>>0>h>>>0|((_|0)==(h|0)?(c[g>>2]|0)>>>0>f>>>0:0)):0){g=c[B>>2]|0;f=(c[o>>2]|0)+24|0;c[f>>2]=g;c[f+4>>2]=((g|0)<0)<<31>>31}if(!(c[A>>2]|0))break;zp(c[z>>2]|0,c[A>>2]|0);break}else if((G|0)==115|(G|0)==117){a[M>>0]=0;c[L>>2]=1;if((d[n>>0]|0|0)==(c[L>>2]|0))c[r>>2]=c[n+4>>2];else{g=(c[s>>2]|0)+68|0;f=c[g>>2]|0;c[g>>2]=f+1;c[r>>2]=f;c[O>>2]=fp(c[z>>2]|0,57,c[r>>2]|0,0)|0;c[(c[o>>2]|0)+16>>2]=c[O>>2];f=(dr(c[o>>2]|0)|0)+6|0;b[f>>1]=e[f>>1]|0|8}$s(N,c[L>>2]|0,c[r>>2]|0);c[x>>2]=c[(c[s>>2]|0)+468>>2];c[j>>2]=ao(c[s>>2]|0,c[C>>2]|0,N)|0;if(c[j>>2]|0)break a;if((d[(c[o>>2]|0)+4>>0]|0|0)==117)a[M>>0]=2;else a[M>>0]=1;c[(c[o>>2]|0)+52>>2]=0;c[J>>2]=c[(c[o>>2]|0)+60>>2];c[(c[o>>2]|0)+60>>2]=0;c[K>>2]=c[(c[o>>2]|0)+64>>2];c[(c[o>>2]|0)+64>>2]=0;a[N>>0]=a[M>>0]|0;c[y>>2]=c[(c[s>>2]|0)+468>>2];c[j>>2]=ao(c[s>>2]|0,c[o>>2]|0,N)|0;sn(c[l>>2]|0,c[(c[o>>2]|0)+48>>2]|0);c[k>>2]=c[(c[o>>2]|0)+52>>2];c[(c[o>>2]|0)+52>>2]=c[C>>2];c[(c[o>>2]|0)+48>>2]=0;if((d[(c[o>>2]|0)+4>>0]|0|0)==115){g=(c[C>>2]|0)+24|0;f=(c[o>>2]|0)+24|0;h=f;g=bF(c[h>>2]|0,c[h+4>>2]|0,c[g>>2]|0,c[g+4>>2]|0)|0;c[f>>2]=g;c[f+4>>2]=D}wn(c[l>>2]|0,c[(c[o>>2]|0)+60>>2]|0);c[(c[o>>2]|0)+60>>2]=c[J>>2];c[(c[o>>2]|0)+64>>2]=c[K>>2];c[(c[o>>2]|0)+8>>2]=0;c[(c[o>>2]|0)+12>>2]=0;if((d[n>>0]|0|0)==(c[L>>2]|0))break;if((d[n>>0]|0|0)==9){c[I>>2]=c[o>>2];while(1){if(!(c[(c[I>>2]|0)+52>>2]|0))break;c[I>>2]=c[(c[I>>2]|0)+52>>2]}Mx(c[s>>2]|0,0,c[c[I>>2]>>2]|0)}c[E>>2]=Nr(c[z>>2]|0)|0;c[F>>2]=Nr(c[z>>2]|0)|0;tx(c[s>>2]|0,c[o>>2]|0,c[E>>2]|0);fp(c[z>>2]|0,108,c[r>>2]|0,c[E>>2]|0)|0;c[H>>2]=Mr(c[z>>2]|0)|0;xx(c[s>>2]|0,c[o>>2]|0,c[c[o>>2]>>2]|0,c[r>>2]|0,0,0,n,c[F>>2]|0,c[E>>2]|0);Pr(c[z>>2]|0,c[F>>2]|0);fp(c[z>>2]|0,9,c[r>>2]|0,c[H>>2]|0)|0;Pr(c[z>>2]|0,c[E>>2]|0);fp(c[z>>2]|0,61,c[r>>2]|0,0)|0;break}else{f=(c[s>>2]|0)+68|0;g=c[f>>2]|0;c[f>>2]=g+1;c[R>>2]=g;g=(c[s>>2]|0)+68|0;f=c[g>>2]|0;c[g>>2]=f+1;c[U>>2]=f;c[Z>>2]=fp(c[z>>2]|0,57,c[R>>2]|0,0)|0;c[(c[o>>2]|0)+16>>2]=c[Z>>2];f=(dr(c[o>>2]|0)|0)+6|0;b[f>>1]=e[f>>1]|0|8;$s(_,1,c[R>>2]|0);c[x>>2]=c[(c[s>>2]|0)+468>>2];c[j>>2]=ao(c[s>>2]|0,c[C>>2]|0,_)|0;if(c[j>>2]|0)break a;c[Z>>2]=fp(c[z>>2]|0,57,c[U>>2]|0,0)|0;c[(c[o>>2]|0)+20>>2]=c[Z>>2];c[(c[o>>2]|0)+52>>2]=0;c[X>>2]=c[(c[o>>2]|0)+60>>2];c[(c[o>>2]|0)+60>>2]=0;c[Y>>2]=c[(c[o>>2]|0)+64>>2];c[(c[o>>2]|0)+64>>2]=0;c[_+4>>2]=c[U>>2];c[y>>2]=c[(c[s>>2]|0)+468>>2];c[j>>2]=ao(c[s>>2]|0,c[o>>2]|0,_)|0;c[k>>2]=c[(c[o>>2]|0)+52>>2];c[(c[o>>2]|0)+52>>2]=c[C>>2];g=(c[o>>2]|0)+24|0;_=c[g+4>>2]|0;f=(c[C>>2]|0)+24|0;h=c[f+4>>2]|0;if(_>>>0>h>>>0|((_|0)==(h|0)?(c[g>>2]|0)>>>0>(c[f>>2]|0)>>>0:0)){h=(c[C>>2]|0)+24|0;g=c[h+4>>2]|0;f=(c[o>>2]|0)+24|0;c[f>>2]=c[h>>2];c[f+4>>2]=g}wn(c[l>>2]|0,c[(c[o>>2]|0)+60>>2]|0);c[(c[o>>2]|0)+60>>2]=c[X>>2];c[(c[o>>2]|0)+64>>2]=c[Y>>2];if((d[n>>0]|0|0)==9){c[V>>2]=c[o>>2];while(1){if(!(c[(c[V>>2]|0)+52>>2]|0))break;c[V>>2]=c[(c[V>>2]|0)+52>>2]}Mx(c[s>>2]|0,0,c[c[V>>2]>>2]|0)}c[P>>2]=Nr(c[z>>2]|0)|0;c[Q>>2]=Nr(c[z>>2]|0)|0;tx(c[s>>2]|0,c[o>>2]|0,c[P>>2]|0);fp(c[z>>2]|0,108,c[R>>2]|0,c[P>>2]|0)|0;c[S>>2]=kp(c[s>>2]|0)|0;c[T>>2]=fp(c[z>>2]|0,101,c[R>>2]|0,c[S>>2]|0)|0;We(c[z>>2]|0,68,c[U>>2]|0,c[Q>>2]|0,c[S>>2]|0,0)|0;lp(c[s>>2]|0,c[S>>2]|0);xx(c[s>>2]|0,c[o>>2]|0,c[c[o>>2]>>2]|0,c[R>>2]|0,0,0,n,c[Q>>2]|0,c[P>>2]|0);Pr(c[z>>2]|0,c[Q>>2]|0);fp(c[z>>2]|0,9,c[R>>2]|0,c[T>>2]|0)|0;Pr(c[z>>2]|0,c[P>>2]|0);fp(c[z>>2]|0,61,c[U>>2]|0,0)|0;fp(c[z>>2]|0,61,c[R>>2]|0,0)|0;break}}else Wx(c[s>>2]|0,c[o>>2]|0,n);while(0);Yx(c[s>>2]|0,d[(c[o>>2]|0)+4>>0]|0,c[x>>2]|0,c[y>>2]|0,(d[(c[o>>2]|0)+4>>0]|0|0)!=116&1);if((e[(c[o>>2]|0)+6>>1]|0)&8){c[w>>2]=c[c[c[o>>2]>>2]>>2];c[u>>2]=Xr(c[l>>2]|0,c[w>>2]|0,1)|0;if(!(c[u>>2]|0)){c[j>>2]=7;break}c[t>>2]=0;c[v>>2]=(c[u>>2]|0)+20;while(1){if((c[t>>2]|0)>=(c[w>>2]|0))break;f=Zx(c[s>>2]|0,c[o>>2]|0,c[t>>2]|0)|0;c[c[v>>2]>>2]=f;if(!(c[c[v>>2]>>2]|0))c[c[v>>2]>>2]=c[(c[l>>2]|0)+8>>2];c[t>>2]=(c[t>>2]|0)+1;c[v>>2]=(c[v>>2]|0)+4}c[W>>2]=c[o>>2];while(1){if(!(c[W>>2]|0))break;c[t>>2]=0;while(1){if((c[t>>2]|0)>=2)break;c[$>>2]=c[(c[W>>2]|0)+16+(c[t>>2]<<2)>>2];if((c[$>>2]|0)<0)break;$e(c[z>>2]|0,c[$>>2]|0,c[w>>2]|0);g=c[z>>2]|0;f=c[$>>2]|0;bf(g,f,Yr(c[u>>2]|0)|0,-6);c[(c[W>>2]|0)+16+(c[t>>2]<<2)>>2]=-1;c[t>>2]=(c[t>>2]|0)+1}c[W>>2]=c[(c[W>>2]|0)+52>>2]}eh(c[u>>2]|0)}}else{f=c[s>>2]|0;c[G>>2]=Vx(d[(c[o>>2]|0)+4>>0]|0)|0;Se(f,25048,G);c[j>>2]=1}while(0);c[(c[m>>2]|0)+8>>2]=c[n+8>>2];c[(c[m>>2]|0)+12>>2]=c[n+12>>2];tn(c[l>>2]|0,c[k>>2]|0);c[p>>2]=c[j>>2];f=c[p>>2]|0;i=q;return f|0}function sx(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;n=i;i=i+48|0;l=n+36|0;q=n+32|0;p=n+28|0;r=n+24|0;o=n+20|0;h=n+16|0;m=n+12|0;j=n+8|0;g=n+4|0;k=n;c[l>>2]=b;c[q>>2]=d;c[p>>2]=e;c[r>>2]=f;c[j>>2]=c[c[l>>2]>>2];c[o>>2]=c[c[q>>2]>>2];c[h>>2]=Xr(c[j>>2]|0,(c[o>>2]|0)+(c[r>>2]|0)-(c[p>>2]|0)|0,1)|0;if(!(c[h>>2]|0)){r=c[h>>2]|0;i=n;return r|0}c[g>>2]=c[p>>2];c[m>>2]=(c[(c[q>>2]|0)+4>>2]|0)+((c[p>>2]|0)*20|0);while(1){if((c[g>>2]|0)>=(c[o>>2]|0))break;c[k>>2]=cq(c[l>>2]|0,c[c[m>>2]>>2]|0)|0;if(!(c[k>>2]|0))c[k>>2]=c[(c[j>>2]|0)+8>>2];c[(c[h>>2]|0)+20+((c[g>>2]|0)-(c[p>>2]|0)<<2)>>2]=c[k>>2];a[(c[(c[h>>2]|0)+16>>2]|0)+((c[g>>2]|0)-(c[p>>2]|0))>>0]=a[(c[m>>2]|0)+12>>0]|0;c[g>>2]=(c[g>>2]|0)+1;c[m>>2]=(c[m>>2]|0)+20}r=c[h>>2]|0;i=n;return r|0}function tx(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;k=i;i=i+32|0;l=k+28|0;f=k+24|0;h=k+20|0;g=k+16|0;e=k+12|0;m=k+8|0;n=k+4|0;j=k;c[l>>2]=a;c[f>>2]=b;c[h>>2]=d;c[g>>2]=0;c[e>>2]=0;if(c[(c[f>>2]|0)+8>>2]|0){i=k;return}cu(c[l>>2]|0);if(!(c[(c[f>>2]|0)+60>>2]|0)){i=k;return}b=(c[l>>2]|0)+72|0;a=(c[b>>2]|0)+1|0;c[b>>2]=a;c[e>>2]=a;c[(c[f>>2]|0)+8>>2]=a;c[g>>2]=dp(c[l>>2]|0)|0;do if(yq(c[(c[f>>2]|0)+60>>2]|0,j)|0){fp(c[g>>2]|0,25,c[j>>2]|0,c[e>>2]|0)|0;if(!(c[j>>2]|0)){fp(c[g>>2]|0,16,0,c[h>>2]|0)|0;break}if((c[j>>2]|0)>=0?(b=(c[f>>2]|0)+24|0,d=c[b+4>>2]|0,a=c[j>>2]|0,h=((a|0)<0)<<31>>31,d>>>0>h>>>0|((d|0)==(h|0)?(c[b>>2]|0)>>>0>a>>>0:0)):0){b=c[j>>2]|0;a=(c[f>>2]|0)+24|0;c[a>>2]=b;c[a+4>>2]=((b|0)<0)<<31>>31}}else{Os(c[l>>2]|0,c[(c[f>>2]|0)+60>>2]|0,c[e>>2]|0);Ir(c[g>>2]|0,38,c[e>>2]|0)|0;fp(c[g>>2]|0,139,c[e>>2]|0,c[h>>2]|0)|0}while(0);if(!(c[(c[f>>2]|0)+64>>2]|0)){i=k;return}b=(c[l>>2]|0)+72|0;a=(c[b>>2]|0)+1|0;c[b>>2]=a;c[m>>2]=a;c[(c[f>>2]|0)+12>>2]=a;a=(c[l>>2]|0)+72|0;c[a>>2]=(c[a>>2]|0)+1;Os(c[l>>2]|0,c[(c[f>>2]|0)+64>>2]|0,c[m>>2]|0);Ir(c[g>>2]|0,38,c[m>>2]|0)|0;c[n>>2]=Ir(c[g>>2]|0,137,c[m>>2]|0)|0;fp(c[g>>2]|0,25,0,c[m>>2]|0)|0;zp(c[g>>2]|0,c[n>>2]|0);ip(c[g>>2]|0,89,c[e>>2]|0,c[m>>2]|0,(c[m>>2]|0)+1|0)|0;c[n>>2]=Ir(c[g>>2]|0,137,c[e>>2]|0)|0;fp(c[g>>2]|0,25,-1,(c[m>>2]|0)+1|0)|0;zp(c[g>>2]|0,c[n>>2]|0);i=k;return}function ux(a){a=a|0;var d=0,e=0;d=i;i=i+16|0;e=d;c[e>>2]=a;a=Zt(b[(c[e>>2]|0)+32>>1]|0)|0;i=d;return a|0}function vx(a){a=a|0;var b=0,e=0;e=i;i=i+16|0;b=e;c[b>>2]=a;i=e;return d[(c[b>>2]|0)+40>>0]|0|0}function wx(b){b=b|0;var d=0,e=0;e=i;i=i+16|0;d=e;c[d>>2]=b;i=e;return a[(c[d>>2]|0)+36>>0]|0}function xx(b,f,g,h,j,k,l,m,n){b=b|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;var o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0;r=i;i=i+128|0;q=r+124|0;s=r+120|0;P=r+116|0;U=r+112|0;t=r+108|0;R=r+104|0;x=r+100|0;J=r+96|0;o=r+92|0;p=r+88|0;H=r+84|0;T=r+80|0;u=r+76|0;z=r+72|0;v=r+68|0;y=r+64|0;w=r+60|0;S=r+56|0;K=r+52|0;L=r+48|0;O=r+44|0;M=r+40|0;B=r+36|0;Q=r+32|0;A=r+28|0;E=r+24|0;I=r+20|0;F=r+16|0;G=r+12|0;N=r+8|0;C=r+4|0;D=r;c[q>>2]=b;c[s>>2]=f;c[P>>2]=g;c[U>>2]=h;c[t>>2]=j;c[R>>2]=k;c[x>>2]=l;c[J>>2]=m;c[o>>2]=n;c[p>>2]=c[(c[q>>2]|0)+8>>2];c[z>>2]=d[c[x>>2]>>0];c[v>>2]=c[(c[x>>2]|0)+4>>2];c[w>>2]=0;if(c[R>>2]|0)n=d[(c[R>>2]|0)+1>>0]|0;else n=0;c[T>>2]=n;if((c[t>>2]|0)!=0?(c[c[t>>2]>>2]|0)==0:0)c[t>>2]=0;if(!((c[t>>2]|0)!=0|(c[T>>2]|0)!=0))Ox(c[p>>2]|0,c[(c[s>>2]|0)+12>>2]|0,c[J>>2]|0);c[y>>2]=c[c[P>>2]>>2];if(c[(c[x>>2]|0)+8>>2]|0){if(((c[(c[x>>2]|0)+8>>2]|0)+(c[y>>2]|0)|0)>(c[(c[q>>2]|0)+72>>2]|0)){b=(c[q>>2]|0)+72|0;c[b>>2]=(c[b>>2]|0)+(c[y>>2]|0)}}else{if(c[t>>2]|0){c[w>>2]=c[c[c[t>>2]>>2]>>2];if(!((d[(c[t>>2]|0)+24>>0]|0)&1))c[w>>2]=(c[w>>2]|0)+1;b=(c[q>>2]|0)+72|0;c[b>>2]=(c[b>>2]|0)+(c[w>>2]|0)}c[(c[x>>2]|0)+8>>2]=(c[(c[q>>2]|0)+72>>2]|0)+1;b=(c[q>>2]|0)+72|0;c[b>>2]=(c[b>>2]|0)+(c[y>>2]|0)}c[(c[x>>2]|0)+12>>2]=c[y>>2];c[u>>2]=c[(c[x>>2]|0)+8>>2];a:do if((c[U>>2]|0)<0){if((c[z>>2]|0)!=3){if((c[z>>2]|0)==9)U=1;else U=(c[z>>2]|0)==13;Ws(c[q>>2]|0,c[P>>2]|0,c[u>>2]|0,(U?1:0)&255)|0}}else{c[H>>2]=0;while(1){if((c[H>>2]|0)>=(c[y>>2]|0))break a;ip(c[p>>2]|0,47,c[U>>2]|0,c[H>>2]|0,(c[u>>2]|0)+(c[H>>2]|0)|0)|0;c[H>>2]=(c[H>>2]|0)+1}}while(0);if(c[T>>2]|0){T=d[(c[R>>2]|0)+1>>0]|0;if((T|0)==1)cf(c[p>>2]|0,c[(c[R>>2]|0)+8>>2]|0);else if((T|0)==2){c[L>>2]=(c[(c[q>>2]|0)+72>>2]|0)+1;b=(c[q>>2]|0)+72|0;c[b>>2]=(c[b>>2]|0)+(c[y>>2]|0);cf(c[p>>2]|0,c[(c[R>>2]|0)+8>>2]|0);c[S>>2]=dt(c[p>>2]|0,c[(c[R>>2]|0)+8>>2]|0)|0;a[c[S>>2]>>0]=28;c[(c[S>>2]|0)+4>>2]=1;c[(c[S>>2]|0)+8>>2]=c[L>>2];b=Mr(c[p>>2]|0)|0;c[K>>2]=b+(c[y>>2]|0);c[H>>2]=0;while(1){if((c[H>>2]|0)>=(c[y>>2]|0))break;c[O>>2]=cq(c[q>>2]|0,c[(c[(c[P>>2]|0)+4>>2]|0)+((c[H>>2]|0)*20|0)>>2]|0)|0;S=c[p>>2]|0;R=(c[u>>2]|0)+(c[H>>2]|0)|0;if((c[H>>2]|0)<((c[y>>2]|0)-1|0))ip(S,78,R,c[K>>2]|0,(c[L>>2]|0)+(c[H>>2]|0)|0)|0;else ip(S,79,R,c[J>>2]|0,(c[L>>2]|0)+(c[H>>2]|0)|0)|0;bf(c[p>>2]|0,-1,c[O>>2]|0,-4);Xe(c[p>>2]|0,-128);c[H>>2]=(c[H>>2]|0)+1}ip(c[p>>2]|0,33,c[u>>2]|0,c[L>>2]|0,(c[y>>2]|0)-1|0)|0}else Px(c[q>>2]|0,c[(c[R>>2]|0)+4>>2]|0,c[J>>2]|0,c[y>>2]|0,c[u>>2]|0);if(!(c[t>>2]|0))Ox(c[p>>2]|0,c[(c[s>>2]|0)+12>>2]|0,c[J>>2]|0)}b:do switch(c[z>>2]|0){case 11:{y=kt(c[c[(c[P>>2]|0)+4>>2]>>2]|0,a[(c[x>>2]|0)+1>>0]|0)|0;a[(c[x>>2]|0)+1>>0]=y;y=c[q>>2]|0;if(c[t>>2]|0){Ux(y,c[t>>2]|0,c[s>>2]|0,c[u>>2]|0,1,c[w>>2]|0);break b}else{c[E>>2]=kp(y)|0;hp(c[p>>2]|0,49,c[u>>2]|0,1,c[E>>2]|0,(c[x>>2]|0)+1|0,1)|0;Us(c[q>>2]|0,c[u>>2]|0,1);fp(c[p>>2]|0,110,c[v>>2]|0,c[E>>2]|0)|0;lp(c[q>>2]|0,c[E>>2]|0);break b}};case 9:case 13:{if(c[t>>2]|0){Ux(c[q>>2]|0,c[t>>2]|0,c[s>>2]|0,c[u>>2]|0,c[y>>2]|0,c[w>>2]|0);break b}v=c[p>>2]|0;if((c[z>>2]|0)==13){Ir(v,22,c[(c[x>>2]|0)+4>>2]|0)|0;break b}else{fp(v,35,c[u>>2]|0,c[y>>2]|0)|0;Us(c[q>>2]|0,c[u>>2]|0,c[y>>2]|0);break b}};case 3:{fp(c[p>>2]|0,25,1,c[v>>2]|0)|0;break};case 10:{if(c[t>>2]|0)Ux(c[q>>2]|0,c[t>>2]|0,c[s>>2]|0,c[u>>2]|0,1,c[w>>2]|0);break};case 12:case 14:case 6:case 5:{c[B>>2]=ys(c[q>>2]|0,(c[w>>2]|0)+1|0)|0;ip(c[p>>2]|0,49,c[u>>2]|0,c[y>>2]|0,(c[B>>2]|0)+(c[w>>2]|0)|0)|0;if((c[z>>2]|0)==6){c[Q>>2]=(Mr(c[p>>2]|0)|0)+4;We(c[p>>2]|0,69,(c[v>>2]|0)+1|0,c[Q>>2]|0,c[B>>2]|0,0)|0;fp(c[p>>2]|0,110,(c[v>>2]|0)+1|0,c[B>>2]|0)|0}u=c[q>>2]|0;if(c[t>>2]|0)Ux(u,c[t>>2]|0,c[s>>2]|0,(c[B>>2]|0)+(c[w>>2]|0)|0,1,c[w>>2]|0);else{c[A>>2]=kp(u)|0;fp(c[p>>2]|0,74,c[v>>2]|0,c[A>>2]|0)|0;ip(c[p>>2]|0,75,c[v>>2]|0,c[B>>2]|0,c[A>>2]|0)|0;Xe(c[p>>2]|0,8);lp(c[q>>2]|0,c[A>>2]|0)}Bs(c[q>>2]|0,c[B>>2]|0,(c[w>>2]|0)+1|0);break};case 7:case 8:{c[C>>2]=0;c[D>>2]=c[(c[x>>2]|0)+16>>2];c[I>>2]=c[c[D>>2]>>2];c[F>>2]=kp(c[q>>2]|0)|0;c[G>>2]=ys(c[q>>2]|0,(c[I>>2]|0)+2|0)|0;c[N>>2]=(c[G>>2]|0)+(c[I>>2]|0)+1;if((c[z>>2]|0)==8)c[C>>2]=We(c[p>>2]|0,69,(c[v>>2]|0)+1|0,0,c[u>>2]|0,c[y>>2]|0)|0;ip(c[p>>2]|0,49,c[u>>2]|0,c[y>>2]|0,c[N>>2]|0)|0;if((c[z>>2]|0)==8){fp(c[p>>2]|0,110,(c[v>>2]|0)+1|0,c[N>>2]|0)|0;Xe(c[p>>2]|0,16)}c[H>>2]=0;while(1){w=c[p>>2]|0;if((c[H>>2]|0)>=(c[I>>2]|0))break;fp(w,34,(c[u>>2]|0)+(e[(c[(c[D>>2]|0)+4>>2]|0)+((c[H>>2]|0)*20|0)+16>>1]|0)-1|0,(c[G>>2]|0)+(c[H>>2]|0)|0)|0;c[H>>2]=(c[H>>2]|0)+1}fp(w,73,c[v>>2]|0,(c[G>>2]|0)+(c[I>>2]|0)|0)|0;ip(c[p>>2]|0,49,c[G>>2]|0,(c[I>>2]|0)+2|0,c[F>>2]|0)|0;fp(c[p>>2]|0,110,c[v>>2]|0,c[F>>2]|0)|0;if(c[C>>2]|0)zp(c[p>>2]|0,c[C>>2]|0);lp(c[q>>2]|0,c[F>>2]|0);Bs(c[q>>2]|0,c[G>>2]|0,(c[I>>2]|0)+2|0);break};case 2:{ip(c[p>>2]|0,111,c[v>>2]|0,c[u>>2]|0,c[y>>2]|0)|0;break};case 1:{c[M>>2]=kp(c[q>>2]|0)|0;ip(c[p>>2]|0,49,c[u>>2]|0,c[y>>2]|0,c[M>>2]|0)|0;fp(c[p>>2]|0,110,c[v>>2]|0,c[M>>2]|0)|0;lp(c[q>>2]|0,c[M>>2]|0);break};default:{}}while(0);if(c[t>>2]|0){i=r;return}if(!(c[(c[s>>2]|0)+8>>2]|0)){i=r;return}ip(c[p>>2]|0,139,c[(c[s>>2]|0)+8>>2]|0,c[o>>2]|0,-1)|0;i=r;return}function yx(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;i=d;return c[(c[b>>2]|0)+48>>2]|0}function zx(a){a=a|0;var b=0,d=0;d=i;i=i+16|0;b=d;c[b>>2]=a;i=d;return c[(c[b>>2]|0)+52>>2]|0}function Ax(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=i;i=i+16|0;g=d+12|0;f=d+8|0;h=d+4|0;e=d;c[g>>2]=a;c[f>>2]=b;if(!(c[f>>2]|0)){i=d;return}c[h>>2]=c[(c[f>>2]|0)+4>>2];c[e>>2]=0;while(1){if((c[e>>2]|0)>=(c[c[f>>2]>>2]|0))break;Bx(c[g>>2]|0,c[c[h>>2]>>2]|0);c[e>>2]=(c[e>>2]|0)+1;c[h>>2]=(c[h>>2]|0)+20}i=d;return}function Bx(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;i=i+32|0;g=d+28|0;e=d+24|0;f=d;c[g>>2]=a;c[e>>2]=b;c[f+0>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[f+16>>2]=0;c[f+20>>2]=0;c[f>>2]=48;c[f+4>>2]=49;c[f+20>>2]=c[g>>2];sq(f,c[e>>2]|0)|0;i=d;return}function Cx(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0;e=i;i=i+32|0;j=e;f=e+16|0;h=e+12|0;g=e+8|0;k=e+4|0;c[f>>2]=a;c[h>>2]=b;if((d[(c[f>>2]|0)+450>>0]|0|0)!=2){i=e;return}c[g>>2]=c[(c[f>>2]|0)+8>>2];a=c[c[f>>2]>>2]|0;c[j>>2]=c[h>>2];c[k>>2]=Te(a,25024,j)|0;hp(c[g>>2]|0,155,c[(c[f>>2]|0)+464>>2]|0,0,0,c[k>>2]|0,-1)|0;i=e;return}function Dx(a){a=a|0;var b=0,e=0;e=i;i=i+16|0;b=e;c[b>>2]=a;i=e;return d[(c[b>>2]|0)+37>>0]|0|0}function Ex(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;f=i;i=i+16|0;j=f+12|0;h=f+8|0;k=f+4|0;g=f;c[j>>2]=a;c[h>>2]=b;c[k>>2]=d;c[g>>2]=e;ip(c[(c[j>>2]|0)+8>>2]|0,32,c[h>>2]|0,c[k>>2]|0,c[g>>2]|0)|0;Cs(c[j>>2]|0,c[h>>2]|0,c[g>>2]|0);i=f;return}function Fx(b,d){b=b|0;d=d|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;o=i;i=i+64|0;h=o+56|0;g=o+52|0;m=o+48|0;k=o+44|0;n=o+40|0;j=o+36|0;u=o+32|0;l=o+28|0;q=o+24|0;v=o+20|0;t=o+16|0;s=o+12|0;f=o+8|0;r=o+4|0;p=o;c[h>>2]=b;c[g>>2]=d;c[m>>2]=c[(c[h>>2]|0)+8>>2];c[n>>2]=0;c[j>>2]=0;a[c[g>>2]>>0]=1;c[k>>2]=0;c[u>>2]=c[(c[g>>2]|0)+40>>2];while(1){if((c[k>>2]|0)>=(c[(c[g>>2]|0)+44>>2]|0))break;c[v>>2]=0;c[s>>2]=c[(c[c[u>>2]>>2]|0)+20>>2];if(c[s>>2]|0){c[q>>2]=c[c[s>>2]>>2];c[t>>2]=ys(c[h>>2]|0,c[q>>2]|0)|0;Ws(c[h>>2]|0,c[s>>2]|0,c[t>>2]|0,1)|0}else{c[q>>2]=0;c[t>>2]=0}if((c[(c[u>>2]|0)+12>>2]|0)>=0){c[v>>2]=Nr(c[m>>2]|0)|0;Px(c[h>>2]|0,c[(c[u>>2]|0)+12>>2]|0,c[v>>2]|0,1,c[t>>2]|0)}if((e[(c[(c[u>>2]|0)+4>>2]|0)+2>>1]|0)&32){c[f>>2]=0;c[p>>2]=0;c[r>>2]=c[(c[s>>2]|0)+4>>2];while(1){if(c[f>>2]|0)break;if((c[p>>2]|0)>=(c[q>>2]|0))break;c[f>>2]=cq(c[h>>2]|0,c[c[r>>2]>>2]|0)|0;c[p>>2]=(c[p>>2]|0)+1;c[r>>2]=(c[r>>2]|0)+20}if(!(c[f>>2]|0))c[f>>2]=c[(c[c[h>>2]>>2]|0)+8>>2];if((c[n>>2]|0)==0?(c[(c[g>>2]|0)+36>>2]|0)!=0:0){d=(c[h>>2]|0)+72|0;b=(c[d>>2]|0)+1|0;c[d>>2]=b;c[n>>2]=b}hp(c[m>>2]|0,36,c[n>>2]|0,0,0,c[f>>2]|0,-4)|0}hp(c[m>>2]|0,10,0,c[t>>2]|0,c[(c[u>>2]|0)+8>>2]|0,c[(c[u>>2]|0)+4>>2]|0,-5)|0;Xe(c[m>>2]|0,c[q>>2]&255);Us(c[h>>2]|0,c[t>>2]|0,c[q>>2]|0);Bs(c[h>>2]|0,c[t>>2]|0,c[q>>2]|0);if(c[v>>2]|0){Pr(c[m>>2]|0,c[v>>2]|0);cu(c[h>>2]|0)}c[k>>2]=(c[k>>2]|0)+1;c[u>>2]=(c[u>>2]|0)+16}if(c[n>>2]|0)c[j>>2]=Ir(c[m>>2]|0,45,c[n>>2]|0)|0;cu(c[h>>2]|0);c[k>>2]=0;c[l>>2]=c[(c[g>>2]|0)+28>>2];while(1){if((c[k>>2]|0)>=(c[(c[g>>2]|0)+36>>2]|0))break;Os(c[h>>2]|0,c[(c[l>>2]|0)+20>>2]|0,c[(c[l>>2]|0)+16>>2]|0);c[k>>2]=(c[k>>2]|0)+1;c[l>>2]=(c[l>>2]|0)+24}a[c[g>>2]>>0]=0;cu(c[h>>2]|0);if(!(c[j>>2]|0)){i=o;return}zp(c[m>>2]|0,c[j>>2]|0);i=o;return}function Gx(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;d=i;i=i+32|0;k=d+20|0;h=d+16|0;j=d+12|0;g=d+8|0;e=d+4|0;f=d;c[k>>2]=a;c[h>>2]=b;c[j>>2]=c[(c[k>>2]|0)+8>>2];c[g>>2]=0;c[e>>2]=c[(c[h>>2]|0)+40>>2];while(1){if((c[g>>2]|0)>=(c[(c[h>>2]|0)+44>>2]|0))break;c[f>>2]=c[(c[c[e>>2]>>2]|0)+20>>2];if(c[f>>2]|0)b=c[c[f>>2]>>2]|0;else b=0;hp(c[j>>2]|0,140,c[(c[e>>2]|0)+8>>2]|0,b,0,c[(c[e>>2]|0)+4>>2]|0,-5)|0;c[g>>2]=(c[g>>2]|0)+1;c[e>>2]=(c[e>>2]|0)+16}i=d;return}function Hx(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;h=i;i=i+48|0;m=h;j=h+32|0;d=h+28|0;l=h+24|0;g=h+20|0;e=h+16|0;n=h+12|0;f=h+8|0;k=h+4|0;c[j>>2]=a;c[d>>2]=b;c[l>>2]=c[(c[j>>2]|0)+8>>2];c[n>>2]=(c[(c[d>>2]|0)+44>>2]|0)+(c[(c[d>>2]|0)+32>>2]|0);if(!(c[n>>2]|0)){i=h;return}ip(c[l>>2]|0,28,0,c[(c[d>>2]|0)+16>>2]|0,c[(c[d>>2]|0)+20>>2]|0)|0;c[e>>2]=c[(c[d>>2]|0)+40>>2];c[g>>2]=0;while(1){if((c[g>>2]|0)>=(c[(c[d>>2]|0)+44>>2]|0))break;do if((c[(c[e>>2]|0)+12>>2]|0)>=0){c[f>>2]=c[c[e>>2]>>2];if((c[(c[f>>2]|0)+20>>2]|0)!=0?(c[c[(c[f>>2]|0)+20>>2]>>2]|0)==1:0){c[k>>2]=sx(c[j>>2]|0,c[(c[f>>2]|0)+20>>2]|0,0,0)|0;hp(c[l>>2]|0,57,c[(c[e>>2]|0)+12>>2]|0,0,0,c[k>>2]|0,-6)|0;break}Se(c[j>>2]|0,24968,m);c[(c[e>>2]|0)+12>>2]=-1}while(0);c[g>>2]=(c[g>>2]|0)+1;c[e>>2]=(c[e>>2]|0)+16}i=h;return}function Ix(a,b){a=a|0;b=b|0;var f=0,g=0,h=0,j=0,k=0,l=0;f=i;i=i+32|0;g=f+16|0;l=f+12|0;k=f+8|0;h=f+4|0;j=f;c[l>>2]=a;c[k>>2]=b;if((((c[(c[l>>2]|0)+36>>2]|0)==0?(c[c[c[l>>2]>>2]>>2]|0)==1:0)?(c[c[(c[l>>2]|0)+32>>2]>>2]|0)==1:0)?(c[(c[(c[l>>2]|0)+32>>2]|0)+28>>2]|0)==0:0){c[h>>2]=c[(c[(c[l>>2]|0)+32>>2]|0)+24>>2];c[j>>2]=c[c[(c[c[l>>2]>>2]|0)+4>>2]>>2];if((d[(c[h>>2]|0)+44>>0]|0)&16){c[g>>2]=0;a=c[g>>2]|0;i=f;return a|0}if((d[c[j>>2]>>0]|0|0)!=155){c[g>>2]=0;a=c[g>>2]|0;i=f;return a|0}if(!(c[(c[k>>2]|0)+44>>2]|0)){c[g>>2]=0;a=c[g>>2]|0;i=f;return a|0}if(!((e[(c[(c[(c[k>>2]|0)+40>>2]|0)+4>>2]|0)+2>>1]|0)&256)){c[g>>2]=0;a=c[g>>2]|0;i=f;return a|0}if(c[(c[j>>2]|0)+4>>2]&16){c[g>>2]=0;a=c[g>>2]|0;i=f;return a|0}else{c[g>>2]=c[h>>2];a=c[g>>2]|0;i=f;return a|0}}c[g>>2]=0;a=c[g>>2]|0;i=f;return a|0}function Jx(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;l=i;i=i+32|0;k=l;h=l+28|0;j=l+24|0;m=l+20|0;n=l+16|0;g=l+12|0;c[h>>2]=b;c[j>>2]=e;c[m>>2]=f;if((d[(c[h>>2]|0)+450>>0]|0|0)!=2){i=l;return}if(c[m>>2]|0)if(!((d[(c[j>>2]|0)+44>>0]|0)&32))f=1;else f=(a[(c[m>>2]|0)+55>>0]&3|0)==2^1;else f=0;c[n>>2]=f&1;e=c[c[h>>2]>>2]|0;f=(c[n>>2]|0)!=0?24944:1216;if(c[n>>2]|0)m=c[c[m>>2]>>2]|0;else m=1216;c[k>>2]=c[c[j>>2]>>2];c[k+4>>2]=f;c[k+8>>2]=m;c[g>>2]=Te(e,24920,k)|0;hp(c[(c[h>>2]|0)+8>>2]|0,155,c[(c[h>>2]|0)+464>>2]|0,0,0,c[g>>2]|0,-1)|0;i=l;return}function Kx(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;e=i;i=i+32|0;l=e+20|0;h=e+16|0;f=e+12|0;j=e+8|0;g=e+4|0;k=e;c[l>>2]=a;c[h>>2]=b;c[f>>2]=0;c[c[h>>2]>>2]=0;do if((((c[(c[l>>2]|0)+44>>2]|0)==1?(c[j>>2]=c[c[(c[l>>2]|0)+40>>2]>>2],c[g>>2]=c[(c[j>>2]|0)+20>>2],(c[g>>2]|0)!=0):0)?(c[c[g>>2]>>2]|0)==1:0)?(d[c[c[(c[g>>2]|0)+4>>2]>>2]>>0]|0|0)==156:0){c[k>>2]=c[(c[j>>2]|0)+8>>2];if(!(xc(c[k>>2]|0,8312)|0)){c[f>>2]=1;c[c[h>>2]>>2]=c[g>>2];break}if(!(xc(c[k>>2]|0,8320)|0)){c[f>>2]=2;c[c[h>>2]>>2]=c[g>>2]}}while(0);i=e;return c[f>>2]&255|0}function Lx(a,b,e,f,g){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;h=i;i=i+96|0;u=h+84|0;A=h+80|0;j=h+76|0;s=h+72|0;r=h+68|0;l=h+64|0;k=h+60|0;p=h+56|0;m=h+52|0;C=h+48|0;n=h+44|0;E=h+40|0;t=h+36|0;v=h+32|0;o=h+28|0;q=h+24|0;y=h+20|0;x=h+16|0;D=h+12|0;z=h+8|0;w=h+4|0;B=h;c[u>>2]=a;c[A>>2]=b;c[j>>2]=e;c[s>>2]=f;c[r>>2]=g;c[l>>2]=c[(c[u>>2]|0)+8>>2];c[k>>2]=Nr(c[l>>2]|0)|0;c[p>>2]=Nr(c[l>>2]|0)|0;c[C>>2]=0;c[E>>2]=c[c[j>>2]>>2];c[t>>2]=d[c[r>>2]>>0];c[v>>2]=c[(c[r>>2]|0)+4>>2];if(c[(c[j>>2]|0)+16>>2]|0){fp(c[l>>2]|0,17,c[(c[j>>2]|0)+12>>2]|0,c[(c[j>>2]|0)+16>>2]|0)|0;fp(c[l>>2]|0,16,0,c[k>>2]|0)|0;Pr(c[l>>2]|0,c[(c[j>>2]|0)+16>>2]|0)}c[n>>2]=c[(c[j>>2]|0)+8>>2];if((c[t>>2]|0)==9|(c[t>>2]|0)==13){c[q>>2]=0;c[o>>2]=c[(c[r>>2]|0)+8>>2];c[D>>2]=c[s>>2]}else{c[q>>2]=kp(c[u>>2]|0)|0;c[o>>2]=kp(c[u>>2]|0)|0;c[D>>2]=1}c[y>>2]=(c[c[E>>2]>>2]|0)-(c[(c[j>>2]|0)+4>>2]|0);if((d[(c[j>>2]|0)+24>>0]|0)&1){a=(c[u>>2]|0)+72|0;b=(c[a>>2]|0)+1|0;c[a>>2]=b;c[B>>2]=b;b=(c[u>>2]|0)+68|0;a=c[b>>2]|0;c[b>>2]=a+1;c[x>>2]=a;if(c[(c[j>>2]|0)+16>>2]|0)c[C>>2]=_s(c[u>>2]|0)|0;ip(c[l>>2]|0,60,c[x>>2]|0,c[B>>2]|0,(c[y>>2]|0)+1+(c[D>>2]|0)|0)|0;if(c[C>>2]|0)zp(c[l>>2]|0,c[C>>2]|0);c[m>>2]=1+(fp(c[l>>2]|0,106,c[n>>2]|0,c[k>>2]|0)|0);Ox(c[l>>2]|0,c[(c[A>>2]|0)+12>>2]|0,c[p>>2]|0);ip(c[l>>2]|0,100,c[n>>2]|0,c[B>>2]|0,c[x>>2]|0)|0;c[w>>2]=0}else{c[m>>2]=1+(fp(c[l>>2]|0,107,c[n>>2]|0,c[k>>2]|0)|0);Ox(c[l>>2]|0,c[(c[A>>2]|0)+12>>2]|0,c[p>>2]|0);c[x>>2]=c[n>>2];c[w>>2]=1}c[z>>2]=0;while(1){if((c[z>>2]|0)>=(c[D>>2]|0))break;ip(c[l>>2]|0,47,c[x>>2]|0,(c[y>>2]|0)+(c[w>>2]|0)+(c[z>>2]|0)|0,(c[o>>2]|0)+(c[z>>2]|0)|0)|0;c[z>>2]=(c[z>>2]|0)+1}w=c[t>>2]|0;do if((w|0)==12|(w|0)==14){fp(c[l>>2]|0,74,c[v>>2]|0,c[q>>2]|0)|0;ip(c[l>>2]|0,75,c[v>>2]|0,c[o>>2]|0,c[q>>2]|0)|0;Xe(c[l>>2]|0,8)}else if((w|0)==11){hp(c[l>>2]|0,49,c[o>>2]|0,1,c[q>>2]|0,(c[r>>2]|0)+1|0,1)|0;Us(c[u>>2]|0,c[o>>2]|0,1);fp(c[l>>2]|0,110,c[v>>2]|0,c[q>>2]|0)|0}else if((w|0)!=10){w=c[l>>2]|0;v=c[r>>2]|0;if((c[t>>2]|0)==9){fp(w,35,c[v+8>>2]|0,c[s>>2]|0)|0;Us(c[u>>2]|0,c[(c[r>>2]|0)+8>>2]|0,c[s>>2]|0);break}else{Ir(w,22,c[v+4>>2]|0)|0;break}}else Ex(c[u>>2]|0,c[o>>2]|0,c[v>>2]|0,1);while(0);if(c[q>>2]|0){lp(c[u>>2]|0,c[o>>2]|0);lp(c[u>>2]|0,c[q>>2]|0)}Pr(c[l>>2]|0,c[p>>2]|0);o=c[l>>2]|0;n=c[n>>2]|0;m=c[m>>2]|0;if((d[(c[j>>2]|0)+24>>0]|0)&1)fp(o,5,n,m)|0;else fp(o,9,n,m)|0;if(!(c[(c[j>>2]|0)+12>>2]|0)){b=c[l>>2]|0;a=c[k>>2]|0;Pr(b,a);i=h;return}Ir(c[l>>2]|0,18,c[(c[j>>2]|0)+12>>2]|0)|0;b=c[l>>2]|0;a=c[k>>2]|0;Pr(b,a);i=h;return}function Mx(e,f,g){e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;u=i;i=i+80|0;z=u;k=u+68|0;l=u+64|0;m=u+60|0;q=u+56|0;n=u+52|0;s=u+48|0;x=u+44|0;w=u+40|0;v=u+36|0;o=u+32|0;p=u+28|0;t=u+24|0;h=u+20|0;r=u+16|0;y=u+12|0;A=u+8|0;c[k>>2]=e;c[l>>2]=f;c[m>>2]=g;c[q>>2]=c[(c[k>>2]|0)+8>>2];c[x>>2]=c[c[k>>2]>>2];if(a[(c[k>>2]|0)+450>>0]|0){i=u;return}if((c[q>>2]|0)==0?1:(d[(c[k>>2]|0)+16>>0]|0)!=0){i=u;return}if(d[(c[x>>2]|0)+64>>0]|0){i=u;return}a[(c[k>>2]|0)+16>>0]=1;c[w>>2]=(c[(c[x>>2]|0)+24>>2]&32|0)!=0&1;c[v>>2]=(c[(c[x>>2]|0)+24>>2]&64|0)!=0&1;Nt(c[q>>2]|0,c[c[m>>2]>>2]|0);c[n>>2]=0;while(1){if((c[n>>2]|0)>=(c[c[m>>2]>>2]|0))break;c[o>>2]=c[(c[(c[m>>2]|0)+4>>2]|0)+((c[n>>2]|0)*20|0)>>2];do if(c[o>>2]|0){if(c[(c[(c[m>>2]|0)+4>>2]|0)+((c[n>>2]|0)*20|0)+4>>2]|0){c[p>>2]=c[(c[(c[m>>2]|0)+4>>2]|0)+((c[n>>2]|0)*20|0)+4>>2];Ot(c[q>>2]|0,c[n>>2]|0,0,c[p>>2]|0,-1)|0;break}if((d[c[o>>2]>>0]|0)==154){if(!(c[l>>2]|0))j=26}else if(!((c[l>>2]|0)!=0?(d[c[o>>2]>>0]|0)==156:0))j=26;if((j|0)==26){j=0;c[A>>2]=c[(c[(c[m>>2]|0)+4>>2]|0)+((c[n>>2]|0)*20|0)+8>>2];g=c[x>>2]|0;if(!(c[A>>2]|0)){c[z>>2]=(c[n>>2]|0)+1;g=Te(g,24904,z)|0}else g=ne(g,c[A>>2]|0)|0;c[A>>2]=g;Ot(c[q>>2]|0,c[n>>2]|0,0,c[A>>2]|0,16)|0;break}c[r>>2]=b[(c[o>>2]|0)+32>>1];c[s>>2]=0;while(1){if((c[s>>2]|0)>=(c[c[l>>2]>>2]|0))break;if((c[(c[l>>2]|0)+8+((c[s>>2]|0)*72|0)+40>>2]|0)==(c[(c[o>>2]|0)+28>>2]|0))break;c[s>>2]=(c[s>>2]|0)+1}c[t>>2]=c[(c[l>>2]|0)+8+((c[s>>2]|0)*72|0)+16>>2];if((c[r>>2]|0)<0)c[r>>2]=b[(c[t>>2]|0)+36>>1];if((c[r>>2]|0)<0)c[h>>2]=9992;else c[h>>2]=c[(c[(c[t>>2]|0)+4>>2]|0)+((c[r>>2]|0)*24|0)>>2];if(!((c[v>>2]|0)!=0|(c[w>>2]|0)!=0)){f=c[q>>2]|0;e=c[n>>2]|0;Ot(f,e,0,ne(c[x>>2]|0,c[(c[(c[m>>2]|0)+4>>2]|0)+((c[n>>2]|0)*20|0)+8>>2]|0)|0,16)|0;break}if(c[w>>2]|0){c[y>>2]=0;e=c[x>>2]|0;f=c[h>>2]|0;c[z>>2]=c[c[t>>2]>>2];c[z+4>>2]=f;c[y>>2]=Te(e,17448,z)|0;Ot(c[q>>2]|0,c[n>>2]|0,0,c[y>>2]|0,16)|0;break}else{Ot(c[q>>2]|0,c[n>>2]|0,0,c[h>>2]|0,-1)|0;break}}while(0);c[n>>2]=(c[n>>2]|0)+1}Nx(c[k>>2]|0,c[l>>2]|0,c[m>>2]|0);i=u;return}function Nx(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;e=i;i=i+64|0;m=e+56|0;n=e+52|0;g=e+48|0;l=e+44|0;f=e+40|0;j=e+8|0;h=e+4|0;k=e;c[m>>2]=a;c[n>>2]=b;c[g>>2]=d;c[l>>2]=c[(c[m>>2]|0)+8>>2];c[j+4>>2]=c[n>>2];c[j>>2]=c[m>>2];c[f>>2]=0;while(1){if((c[f>>2]|0)>=(c[c[g>>2]>>2]|0))break;c[h>>2]=c[(c[(c[g>>2]|0)+4>>2]|0)+((c[f>>2]|0)*20|0)>>2];c[k>>2]=aq(j,c[h>>2]|0,0)|0;Ot(c[l>>2]|0,c[f>>2]|0,1,c[k>>2]|0,-1)|0;c[f>>2]=(c[f>>2]|0)+1}i=e;return}function Ox(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;i=i+16|0;f=e+12|0;g=e+8|0;j=e+4|0;h=e;c[f>>2]=a;c[g>>2]=b;c[j>>2]=d;if((c[g>>2]|0)<=0){i=e;return}c[h>>2]=ip(c[f>>2]|0,138,c[g>>2]|0,0,-1)|0;fp(c[f>>2]|0,16,0,c[j>>2]|0)|0;zp(c[f>>2]|0,c[h>>2]|0);i=e;return}function Px(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;g=i;i=i+32|0;j=g+24|0;k=g+20|0;o=g+16|0;m=g+12|0;n=g+8|0;l=g+4|0;h=g;c[j>>2]=a;c[k>>2]=b;c[o>>2]=d;c[m>>2]=e;c[n>>2]=f;c[l>>2]=c[(c[j>>2]|0)+8>>2];c[h>>2]=kp(c[j>>2]|0)|0;We(c[l>>2]|0,69,c[k>>2]|0,c[o>>2]|0,c[n>>2]|0,c[m>>2]|0)|0;ip(c[l>>2]|0,49,c[n>>2]|0,c[m>>2]|0,c[h>>2]|0)|0;fp(c[l>>2]|0,110,c[k>>2]|0,c[h>>2]|0)|0;lp(c[j>>2]|0,c[h>>2]|0);i=g;return}function Qx(f,g){f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;m=i;i=i+80|0;l=m+64|0;u=m+60|0;j=m+56|0;o=m+52|0;q=m+48|0;k=m+44|0;A=m+40|0;p=m+36|0;z=m+32|0;s=m+28|0;y=m+24|0;v=m+20|0;w=m+16|0;x=m+12|0;t=m+8|0;r=m+4|0;h=m;n=m+68|0;c[u>>2]=f;c[j>>2]=g;c[q>>2]=c[(c[u>>2]|0)+20>>2];c[k>>2]=c[c[q>>2]>>2];c[A>>2]=c[(c[q>>2]|0)+4>>2];c[p>>2]=c[(c[q>>2]|0)+12>>2];g=d[c[j>>2]>>0]|0;if((g|0)==155){if((e[(c[q>>2]|0)+28>>1]&8|0)==0?(c[(c[u>>2]|0)+16>>2]|0)==(d[(c[j>>2]|0)+38>>0]|0):0){c[h>>2]=c[(c[p>>2]|0)+40>>2];c[o>>2]=0;while(1){if((c[o>>2]|0)>=(c[(c[p>>2]|0)+44>>2]|0))break;if(!(Dq(c[c[h>>2]>>2]|0,c[j>>2]|0,-1)|0))break;c[o>>2]=(c[o>>2]|0)+1;c[h>>2]=(c[h>>2]|0)+16}do if((c[o>>2]|0)>=(c[(c[p>>2]|0)+44>>2]|0)?(a[n>>0]=a[(c[(c[(c[c[k>>2]>>2]|0)+16>>2]|0)+12>>2]|0)+77>>0]|0,c[o>>2]=Tx(c[c[k>>2]>>2]|0,c[p>>2]|0)|0,(c[o>>2]|0)>=0):0){c[h>>2]=(c[(c[p>>2]|0)+40>>2]|0)+(c[o>>2]<<4);c[c[h>>2]>>2]=c[j>>2];r=(c[k>>2]|0)+72|0;q=(c[r>>2]|0)+1|0;c[r>>2]=q;c[(c[h>>2]|0)+8>>2]=q;q=c[c[k>>2]>>2]|0;r=c[(c[j>>2]|0)+8>>2]|0;s=Mb(c[(c[j>>2]|0)+8>>2]|0)|0;if(c[(c[j>>2]|0)+20>>2]|0)t=c[c[(c[j>>2]|0)+20>>2]>>2]|0;else t=0;f=Sf(q,r,s,t,a[n>>0]|0,0)|0;c[(c[h>>2]|0)+4>>2]=f;if(c[(c[j>>2]|0)+4>>2]&16){g=(c[k>>2]|0)+68|0;f=c[g>>2]|0;c[g>>2]=f+1;c[(c[h>>2]|0)+12>>2]=f;break}else{c[(c[h>>2]|0)+12>>2]=-1;break}}while(0);b[(c[j>>2]|0)+34>>1]=c[o>>2];c[(c[j>>2]|0)+40>>2]=c[p>>2];c[l>>2]=1;f=c[l>>2]|0;i=m;return f|0}c[l>>2]=0;f=c[l>>2]|0;i=m;return f|0}else if((g|0)==154|(g|0)==156){a:do if(c[A>>2]|0){c[z>>2]=(c[A>>2]|0)+8;c[o>>2]=0;while(1){if((c[o>>2]|0)>=(c[c[A>>2]>>2]|0))break a;if((c[(c[j>>2]|0)+28>>2]|0)==(c[(c[z>>2]|0)+40>>2]|0))break;c[o>>2]=(c[o>>2]|0)+1;c[z>>2]=(c[z>>2]|0)+72}c[s>>2]=c[(c[p>>2]|0)+28>>2];c[y>>2]=0;while(1){if((c[y>>2]|0)>=(c[(c[p>>2]|0)+32>>2]|0))break;if((c[(c[s>>2]|0)+4>>2]|0)==(c[(c[j>>2]|0)+28>>2]|0)?(c[(c[s>>2]|0)+8>>2]|0)==(b[(c[j>>2]|0)+32>>1]|0):0)break;c[y>>2]=(c[y>>2]|0)+1;c[s>>2]=(c[s>>2]|0)+24}if((c[y>>2]|0)>=(c[(c[p>>2]|0)+32>>2]|0)?(f=Sx(c[c[k>>2]>>2]|0,c[p>>2]|0)|0,c[y>>2]=f,(f|0)>=0):0){c[s>>2]=(c[(c[p>>2]|0)+28>>2]|0)+((c[y>>2]|0)*24|0);c[c[s>>2]>>2]=c[(c[j>>2]|0)+44>>2];c[(c[s>>2]|0)+4>>2]=c[(c[j>>2]|0)+28>>2];c[(c[s>>2]|0)+8>>2]=b[(c[j>>2]|0)+32>>1];g=(c[k>>2]|0)+72|0;f=(c[g>>2]|0)+1|0;c[g>>2]=f;c[(c[s>>2]|0)+16>>2]=f;c[(c[s>>2]|0)+12>>2]=-1;c[(c[s>>2]|0)+20>>2]=c[j>>2];b:do if(c[(c[p>>2]|0)+24>>2]|0){c[x>>2]=c[(c[p>>2]|0)+24>>2];c[t>>2]=c[(c[x>>2]|0)+4>>2];c[w>>2]=c[c[x>>2]>>2];c[v>>2]=0;while(1){if((c[v>>2]|0)>=(c[w>>2]|0))break b;c[r>>2]=c[c[t>>2]>>2];if(((d[c[r>>2]>>0]|0)==154?(c[(c[r>>2]|0)+28>>2]|0)==(c[(c[j>>2]|0)+28>>2]|0):0)?(b[(c[r>>2]|0)+32>>1]|0)==(b[(c[j>>2]|0)+32>>1]|0):0)break;c[v>>2]=(c[v>>2]|0)+1;c[t>>2]=(c[t>>2]|0)+20}c[(c[s>>2]|0)+12>>2]=c[v>>2]}while(0);if((c[(c[s>>2]|0)+12>>2]|0)<0){g=(c[p>>2]|0)+12|0;f=c[g>>2]|0;c[g>>2]=f+1;c[(c[s>>2]|0)+12>>2]=f}}c[(c[j>>2]|0)+40>>2]=c[p>>2];a[c[j>>2]>>0]=-100;b[(c[j>>2]|0)+34>>1]=c[y>>2]}while(0);c[l>>2]=1;f=c[l>>2]|0;i=m;return f|0}else{c[l>>2]=0;f=c[l>>2]|0;i=m;return f|0}return 0}function Rx(a,b){a=a|0;b=b|0;var d=0;d=i;i=i+16|0;c[d+4>>2]=a;c[d>>2]=b;i=d;return 0}function Sx(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;e=i;i=i+16|0;g=e+8|0;f=e+4|0;d=e;c[g>>2]=a;c[f>>2]=b;a=ku(c[g>>2]|0,c[(c[f>>2]|0)+28>>2]|0,24,(c[f>>2]|0)+32|0,d)|0;c[(c[f>>2]|0)+28>>2]=a;i=e;return c[d>>2]|0}function Tx(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;e=i;i=i+16|0;g=e+8|0;f=e+4|0;d=e;c[g>>2]=a;c[f>>2]=b;a=ku(c[g>>2]|0,c[(c[f>>2]|0)+40>>2]|0,16,(c[f>>2]|0)+44|0,d)|0;c[(c[f>>2]|0)+40>>2]=a;i=e;return c[d>>2]|0}function Ux(b,f,g,h,j,k){b=b|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;q=i;i=i+96|0;w=q+88|0;o=q+84|0;m=q+80|0;H=q+76|0;t=q+72|0;I=q+68|0;n=q+64|0;D=q+60|0;C=q+56|0;G=q+52|0;A=q+48|0;E=q+44|0;x=q+40|0;v=q+36|0;B=q+32|0;z=q+28|0;y=q+24|0;u=q+20|0;s=q+16|0;F=q+12|0;r=q+8|0;l=q+4|0;p=q;c[w>>2]=b;c[o>>2]=f;c[m>>2]=g;c[H>>2]=h;c[t>>2]=j;c[I>>2]=k;c[n>>2]=c[(c[w>>2]|0)+8>>2];c[D>>2]=(d[(c[o>>2]|0)+24>>0]&1|0)==0&1;c[C>>2]=c[c[c[o>>2]>>2]>>2];c[G>>2]=(c[C>>2]|0)+(c[D>>2]|0)+(c[t>>2]|0);f=(c[w>>2]|0)+72|0;b=(c[f>>2]|0)+1|0;c[f>>2]=b;c[E>>2]=b;c[x>>2]=c[(c[o>>2]|0)+4>>2];if(c[I>>2]|0)c[A>>2]=(c[H>>2]|0)-(c[C>>2]|0)-(c[D>>2]|0);else{c[A>>2]=(c[(c[w>>2]|0)+72>>2]|0)+1;b=(c[w>>2]|0)+72|0;c[b>>2]=(c[b>>2]|0)+(c[G>>2]|0)}Ws(c[w>>2]|0,c[c[o>>2]>>2]|0,c[A>>2]|0,1)|0;if(c[D>>2]|0)fp(c[n>>2]|0,73,c[(c[o>>2]|0)+8>>2]|0,(c[A>>2]|0)+(c[C>>2]|0)|0)|0;if(!(c[I>>2]|0))Ex(c[w>>2]|0,c[H>>2]|0,(c[A>>2]|0)+(c[C>>2]|0)+(c[D>>2]|0)|0,c[t>>2]|0);ip(c[n>>2]|0,49,(c[A>>2]|0)+(c[x>>2]|0)|0,(c[G>>2]|0)-(c[x>>2]|0)|0,c[E>>2]|0)|0;do if((c[x>>2]|0)>0){c[B>>2]=(c[(c[w>>2]|0)+72>>2]|0)+1;k=(c[w>>2]|0)+72|0;c[k>>2]=(c[k>>2]|0)+(c[(c[o>>2]|0)+4>>2]|0);c[s>>2]=(c[C>>2]|0)-(c[(c[o>>2]|0)+4>>2]|0)+(c[D>>2]|0);k=c[n>>2]|0;if(c[D>>2]|0)c[z>>2]=Ir(k,46,(c[A>>2]|0)+(c[C>>2]|0)|0)|0;else c[z>>2]=Ir(k,59,c[(c[o>>2]|0)+8>>2]|0)|0;ip(c[n>>2]|0,42,c[B>>2]|0,c[A>>2]|0,c[(c[o>>2]|0)+4>>2]|0)|0;c[u>>2]=dt(c[n>>2]|0,c[(c[o>>2]|0)+20>>2]|0)|0;if(a[(c[c[w>>2]>>2]|0)+64>>0]|0){i=q;return}else{c[(c[u>>2]|0)+8>>2]=(c[s>>2]|0)+(c[t>>2]|0);c[F>>2]=c[(c[u>>2]|0)+16>>2];_E(c[(c[F>>2]|0)+16>>2]|0,0,e[(c[F>>2]|0)+6>>1]|0)|0;bf(c[n>>2]|0,-1,c[F>>2]|0,-6);f=sx(c[w>>2]|0,c[c[o>>2]>>2]|0,c[x>>2]|0,1)|0;c[(c[u>>2]|0)+16>>2]=f;c[y>>2]=Mr(c[n>>2]|0)|0;ip(c[n>>2]|0,43,(c[y>>2]|0)+1|0,0,(c[y>>2]|0)+1|0)|0;f=Nr(c[n>>2]|0)|0;c[(c[o>>2]|0)+16>>2]=f;f=(c[w>>2]|0)+72|0;b=(c[f>>2]|0)+1|0;c[f>>2]=b;c[(c[o>>2]|0)+12>>2]=b;fp(c[n>>2]|0,17,c[(c[o>>2]|0)+12>>2]|0,c[(c[o>>2]|0)+16>>2]|0)|0;Ir(c[n>>2]|0,119,c[(c[o>>2]|0)+8>>2]|0)|0;zp(c[n>>2]|0,c[z>>2]|0);Ex(c[w>>2]|0,c[A>>2]|0,c[B>>2]|0,c[(c[o>>2]|0)+4>>2]|0);zp(c[n>>2]|0,c[y>>2]|0);break}}while(0);if(d[(c[o>>2]|0)+24>>0]&1)c[v>>2]=109;else c[v>>2]=110;fp(c[n>>2]|0,c[v>>2]|0,c[(c[o>>2]|0)+8>>2]|0,c[E>>2]|0)|0;if(!(c[(c[m>>2]|0)+8>>2]|0)){i=q;return}s=c[m>>2]|0;if(c[(c[m>>2]|0)+12>>2]|0)c[p>>2]=(c[s+12>>2]|0)+1;else c[p>>2]=c[s+8>>2];c[r>>2]=Ir(c[n>>2]|0,139,c[p>>2]|0)|0;fp(c[n>>2]|0,37,c[p>>2]|0,-1)|0;c[l>>2]=mp(c[n>>2]|0,16)|0;zp(c[n>>2]|0,c[r>>2]|0);Ir(c[n>>2]|0,105,c[(c[o>>2]|0)+8>>2]|0)|0;Ir(c[n>>2]|0,95,c[(c[o>>2]|0)+8>>2]|0)|0;zp(c[n>>2]|0,c[l>>2]|0);i=q;return}function Vx(a){a=a|0;var b=0,d=0,e=0;d=i;i=i+16|0;e=d+4|0;b=d;c[e>>2]=a;a=c[e>>2]|0;if((a|0)==117)c[b>>2]=25376;else if((a|0)==118)c[b>>2]=25360;else if((a|0)==116)c[b>>2]=25344;else c[b>>2]=25384;i=d;return c[b>>2]|0}function Wx(a,f,g){a=a|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;x=i;i=i+112|0;n=x+108|0;o=x+104|0;q=x+100|0;H=x+96|0;D=x+92|0;t=x+88|0;y=x+84|0;v=x+80|0;l=x+76|0;r=x+72|0;p=x+68|0;u=x+64|0;k=x+60|0;B=x+56|0;E=x+52|0;z=x+32|0;G=x+28|0;A=x+24|0;h=x+20|0;w=x+16|0;j=x+12|0;s=x+8|0;m=x+4|0;C=x;c[n>>2]=a;c[o>>2]=f;c[q>>2]=g;c[H>>2]=c[(c[o>>2]|0)+32>>2];c[D>>2]=c[c[c[o>>2]>>2]>>2];c[t>>2]=c[(c[n>>2]|0)+8>>2];c[y>>2]=c[(c[o>>2]|0)+52>>2];c[p>>2]=0;c[B>>2]=0;c[E>>2]=5;if(ap(c[n>>2]|0,33,0,0,0)|0){i=x;return}c[r>>2]=Nr(c[t>>2]|0)|0;tx(c[n>>2]|0,c[o>>2]|0,c[r>>2]|0);c[w>>2]=c[(c[o>>2]|0)+60>>2];c[j>>2]=c[(c[o>>2]|0)+64>>2];c[s>>2]=c[(c[o>>2]|0)+8>>2];c[m>>2]=c[(c[o>>2]|0)+12>>2];c[(c[o>>2]|0)+64>>2]=0;c[(c[o>>2]|0)+60>>2]=0;c[(c[o>>2]|0)+12>>2]=0;c[(c[o>>2]|0)+8>>2]=0;c[h>>2]=c[(c[o>>2]|0)+48>>2];c[G>>2]=0;while(1){if((c[G>>2]|0)>=(c[c[H>>2]>>2]|0))break;g=c[G>>2]|0;if((d[(c[H>>2]|0)+8+((c[G>>2]|0)*72|0)+37>>0]|0)>>>3&1){F=5;break}c[G>>2]=g+1}if((F|0)==5)c[p>>2]=c[(c[H>>2]|0)+8+(g*72|0)+40>>2];a=(c[n>>2]|0)+68|0;F=c[a>>2]|0;c[a>>2]=F+1;c[k>>2]=F;F=(c[h>>2]|0)!=0;if((d[(c[o>>2]|0)+4>>0]|0|0)==115){c[E>>2]=F?8:6;f=(c[n>>2]|0)+68|0;a=c[f>>2]|0;c[f>>2]=a+1;c[B>>2]=a}else c[E>>2]=F?7:5;$s(z,c[E>>2]|0,c[k>>2]|0);f=(c[n>>2]|0)+72|0;a=(c[f>>2]|0)+1|0;c[f>>2]=a;c[u>>2]=a;ip(c[t>>2]|0,60,c[p>>2]|0,c[u>>2]|0,c[D>>2]|0)|0;if(c[h>>2]|0){c[C>>2]=_x(c[n>>2]|0,c[o>>2]|0,1)|0;hp(c[t>>2]|0,57,c[k>>2]|0,(c[c[h>>2]>>2]|0)+2|0,0,c[C>>2]|0,-6)|0;c[z+16>>2]=c[h>>2]}else fp(c[t>>2]|0,57,c[k>>2]|0,c[D>>2]|0)|0;if(c[B>>2]|0){a=fp(c[t>>2]|0,57,c[B>>2]|0,0)|0;c[(c[o>>2]|0)+16>>2]=a;a=(c[o>>2]|0)+6|0;b[a>>1]=e[a>>1]|0|8}c[(c[o>>2]|0)+48>>2]=0;c[(c[y>>2]|0)+56>>2]=0;c[A>>2]=ao(c[n>>2]|0,c[y>>2]|0,z)|0;c[(c[y>>2]|0)+56>>2]=c[o>>2];if(!(c[A>>2]|0)){c[v>>2]=fp(c[t>>2]|0,108,c[k>>2]|0,c[r>>2]|0)|0;Ir(c[t>>2]|0,104,c[p>>2]|0)|0;B=c[t>>2]|0;A=c[k>>2]|0;if(c[h>>2]|0)ip(B,47,A,(c[c[h>>2]>>2]|0)+1|0,c[u>>2]|0)|0;else fp(B,102,A,c[u>>2]|0)|0;Ir(c[t>>2]|0,95,c[k>>2]|0)|0;c[l>>2]=Nr(c[t>>2]|0)|0;Ox(c[t>>2]|0,c[m>>2]|0,c[l>>2]|0);xx(c[n>>2]|0,c[o>>2]|0,c[c[o>>2]>>2]|0,c[p>>2]|0,0,0,c[q>>2]|0,c[l>>2]|0,c[r>>2]|0);if(c[s>>2]|0)ip(c[t>>2]|0,139,c[s>>2]|0,c[r>>2]|0,-1)|0;Pr(c[t>>2]|0,c[l>>2]|0);c[(c[o>>2]|0)+52>>2]=0;ao(c[n>>2]|0,c[o>>2]|0,z)|0;c[(c[o>>2]|0)+52>>2]=c[y>>2];fp(c[t>>2]|0,16,0,c[v>>2]|0)|0;Pr(c[t>>2]|0,c[r>>2]|0)}sn(c[c[n>>2]>>2]|0,c[(c[o>>2]|0)+48>>2]|0);c[(c[o>>2]|0)+48>>2]=c[h>>2];c[(c[o>>2]|0)+60>>2]=c[w>>2];c[(c[o>>2]|0)+64>>2]=c[j>>2];i=x;return}function Xx(f,g,h){f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0;X=i;i=i+224|0;W=X+212|0;A=X+208|0;l=X+204|0;C=X+200|0;_=X+196|0;ba=X+192|0;m=X+188|0;n=X+184|0;G=X+164|0;B=X+144|0;r=X+140|0;y=X+136|0;H=X+132|0;L=X+128|0;o=X+124|0;w=X+120|0;p=X+116|0;x=X+112|0;J=X+108|0;v=X+104|0;E=X+100|0;q=X+96|0;Q=X+92|0;R=X+88|0;k=X+84|0;O=X+80|0;j=X+76|0;M=X+72|0;N=X+68|0;s=X+64|0;u=X+60|0;I=X+56|0;t=X+52|0;z=X+48|0;S=X+44|0;F=X+40|0;Z=X+36|0;T=X+32|0;U=X+28|0;K=X+24|0;P=X+20|0;ca=X+16|0;aa=X+12|0;Y=X+8|0;$=X+4|0;V=X;c[A>>2]=f;c[l>>2]=g;c[C>>2]=h;c[x>>2]=0;c[z>>2]=0;c[F>>2]=c[c[A>>2]>>2];c[n>>2]=c[(c[A>>2]|0)+8>>2];c[u>>2]=Nr(c[n>>2]|0)|0;c[s>>2]=Nr(c[n>>2]|0)|0;c[t>>2]=d[(c[l>>2]|0)+4>>0];c[m>>2]=c[(c[l>>2]|0)+52>>2];c[Z>>2]=c[(c[l>>2]|0)+48>>2];c[T>>2]=c[c[Z>>2]>>2];a:do if((c[t>>2]|0)!=116){c[_>>2]=1;while(1){if(d[(c[F>>2]|0)+64>>0]|0)break a;if((c[_>>2]|0)>(c[c[c[l>>2]>>2]>>2]|0))break a;c[ba>>2]=0;c[ca>>2]=c[(c[Z>>2]|0)+4>>2];while(1){if((c[ba>>2]|0)>=(c[T>>2]|0))break;if((e[(c[ca>>2]|0)+16>>1]|0|0)==(c[_>>2]|0))break;c[ba>>2]=(c[ba>>2]|0)+1;c[ca>>2]=(c[ca>>2]|0)+20}if((c[ba>>2]|0)==(c[T>>2]|0)){c[aa>>2]=ho(c[F>>2]|0,132,0)|0;if(!(c[aa>>2]|0))break;f=(c[aa>>2]|0)+4|0;c[f>>2]=c[f>>2]|1024;c[(c[aa>>2]|0)+8>>2]=c[_>>2];c[Z>>2]=eo(c[A>>2]|0,c[Z>>2]|0,c[aa>>2]|0)|0;if(c[Z>>2]|0){g=c[_>>2]&65535;f=c[T>>2]|0;c[T>>2]=f+1;b[(c[(c[Z>>2]|0)+4>>2]|0)+(f*20|0)+16>>1]=g}}c[_>>2]=(c[_>>2]|0)+1}c[W>>2]=7;f=c[W>>2]|0;i=X;return f|0}while(0);c[U>>2]=Qe(c[F>>2]|0,c[T>>2]<<2,0)|0;if(c[U>>2]|0){c[_>>2]=0;c[Y>>2]=c[(c[Z>>2]|0)+4>>2];while(1){if((c[_>>2]|0)>=(c[T>>2]|0))break;c[(c[U>>2]|0)+(c[_>>2]<<2)>>2]=(e[(c[Y>>2]|0)+16>>1]|0)-1;c[_>>2]=(c[_>>2]|0)+1;c[Y>>2]=(c[Y>>2]|0)+20}c[S>>2]=_x(c[A>>2]|0,c[l>>2]|0,1)|0}else c[S>>2]=0;c[(c[l>>2]|0)+48>>2]=c[Z>>2];f=Jq(c[c[A>>2]>>2]|0,c[Z>>2]|0,0)|0;c[(c[m>>2]|0)+48>>2]=f;b:do if((c[t>>2]|0)!=116){c[$>>2]=c[c[c[l>>2]>>2]>>2];c[j>>2]=(c[(c[A>>2]|0)+72>>2]|0)+1;f=(c[A>>2]|0)+72|0;c[f>>2]=(c[f>>2]|0)+((c[$>>2]|0)+1);fp(c[n>>2]|0,25,0,c[j>>2]|0)|0;c[z>>2]=Xr(c[F>>2]|0,c[$>>2]|0,1)|0;if(c[z>>2]|0){c[_>>2]=0;while(1){if((c[_>>2]|0)>=(c[$>>2]|0))break b;f=Zx(c[A>>2]|0,c[l>>2]|0,c[_>>2]|0)|0;c[(c[z>>2]|0)+20+(c[_>>2]<<2)>>2]=f;a[(c[(c[z>>2]|0)+16>>2]|0)+(c[_>>2]|0)>>0]=0;c[_>>2]=(c[_>>2]|0)+1}}}else c[j>>2]=0;while(0);c[(c[l>>2]|0)+52>>2]=0;c[(c[m>>2]|0)+56>>2]=0;Lq(c[A>>2]|0,c[l>>2]|0,c[(c[l>>2]|0)+48>>2]|0,16480)|0;if(!(c[(c[m>>2]|0)+52>>2]|0))Lq(c[A>>2]|0,c[m>>2]|0,c[(c[m>>2]|0)+48>>2]|0,16480)|0;tx(c[A>>2]|0,c[l>>2]|0,c[u>>2]|0);if((c[t>>2]|0)==116?(c[(c[l>>2]|0)+8>>2]|0)!=0:0){Y=(c[A>>2]|0)+72|0;f=(c[Y>>2]|0)+1|0;c[Y>>2]=f;c[k>>2]=f;f=(c[A>>2]|0)+72|0;Y=(c[f>>2]|0)+1|0;c[f>>2]=Y;c[O>>2]=Y;Y=c[l>>2]|0;if(c[(c[l>>2]|0)+12>>2]|0)Y=(c[Y+12>>2]|0)+1|0;else Y=c[Y+8>>2]|0;fp(c[n>>2]|0,33,Y,c[k>>2]|0)|0;fp(c[n>>2]|0,33,c[k>>2]|0,c[O>>2]|0)|0}else{c[O>>2]=0;c[k>>2]=0}wn(c[F>>2]|0,c[(c[l>>2]|0)+60>>2]|0);c[(c[l>>2]|0)+60>>2]=0;wn(c[F>>2]|0,c[(c[l>>2]|0)+64>>2]|0);c[(c[l>>2]|0)+64>>2]=0;f=(c[A>>2]|0)+72|0;g=(c[f>>2]|0)+1|0;c[f>>2]=g;c[r>>2]=g;g=(c[A>>2]|0)+72|0;f=(c[g>>2]|0)+1|0;c[g>>2]=f;c[y>>2]=f;f=(c[A>>2]|0)+72|0;g=(c[f>>2]|0)+1|0;c[f>>2]=g;c[o>>2]=g;g=(c[A>>2]|0)+72|0;f=(c[g>>2]|0)+1|0;c[g>>2]=f;c[w>>2]=f;$s(G,13,c[r>>2]|0);$s(B,13,c[y>>2]|0);c[H>>2]=(Mr(c[n>>2]|0)|0)+1;c[I>>2]=ip(c[n>>2]|0,20,c[r>>2]|0,0,c[H>>2]|0)|0;c[(c[m>>2]|0)+8>>2]=c[k>>2];c[K>>2]=c[(c[A>>2]|0)+468>>2];ao(c[A>>2]|0,c[m>>2]|0,G)|0;Ir(c[n>>2]|0,21,c[r>>2]|0)|0;zp(c[n>>2]|0,c[I>>2]|0);c[L>>2]=(Mr(c[n>>2]|0)|0)+1;c[I>>2]=ip(c[n>>2]|0,20,c[y>>2]|0,0,c[L>>2]|0)|0;c[M>>2]=c[(c[l>>2]|0)+8>>2];c[N>>2]=c[(c[l>>2]|0)+12>>2];c[(c[l>>2]|0)+8>>2]=c[O>>2];c[(c[l>>2]|0)+12>>2]=0;c[P>>2]=c[(c[A>>2]|0)+468>>2];ao(c[A>>2]|0,c[l>>2]|0,B)|0;c[(c[l>>2]|0)+8>>2]=c[M>>2];c[(c[l>>2]|0)+12>>2]=c[N>>2];Ir(c[n>>2]|0,21,c[y>>2]|0)|0;c[p>>2]=$x(c[A>>2]|0,c[l>>2]|0,G,c[C>>2]|0,c[o>>2]|0,c[j>>2]|0,c[z>>2]|0,c[u>>2]|0)|0;if((c[t>>2]|0)==116|(c[t>>2]|0)==115)c[x>>2]=$x(c[A>>2]|0,c[l>>2]|0,B,c[C>>2]|0,c[w>>2]|0,c[j>>2]|0,c[z>>2]|0,c[u>>2]|0)|0;eh(c[z>>2]|0);if((c[t>>2]|0)==117|(c[t>>2]|0)==118){f=c[u>>2]|0;c[J>>2]=f;c[v>>2]=f}else{c[J>>2]=fp(c[n>>2]|0,17,c[w>>2]|0,c[x>>2]|0)|0;c[v>>2]=fp(c[n>>2]|0,22,c[y>>2]|0,c[u>>2]|0)|0;fp(c[n>>2]|0,16,0,c[J>>2]|0)|0;g=(c[m>>2]|0)+24|0;f=(c[l>>2]|0)+24|0;ca=f;g=bF(c[ca>>2]|0,c[ca+4>>2]|0,c[g>>2]|0,c[g+4>>2]|0)|0;c[f>>2]=g;c[f+4>>2]=D}if((c[t>>2]|0)==118){c[E>>2]=c[J>>2];g=(c[l>>2]|0)+24|0;ba=c[g+4>>2]|0;f=(c[m>>2]|0)+24|0;ca=c[f+4>>2]|0;if(ba>>>0>ca>>>0|((ba|0)==(ca|0)?(c[g>>2]|0)>>>0>(c[f>>2]|0)>>>0:0)){ca=(c[m>>2]|0)+24|0;g=c[ca+4>>2]|0;f=(c[l>>2]|0)+24|0;c[f>>2]=c[ca>>2];c[f+4>>2]=g}}else{c[E>>2]=fp(c[n>>2]|0,17,c[o>>2]|0,c[p>>2]|0)|0;fp(c[n>>2]|0,22,c[r>>2]|0,c[u>>2]|0)|0;fp(c[n>>2]|0,16,0,c[E>>2]|0)|0}c[q>>2]=fp(c[n>>2]|0,17,c[o>>2]|0,c[p>>2]|0)|0;fp(c[n>>2]|0,22,c[r>>2]|0,c[J>>2]|0)|0;fp(c[n>>2]|0,16,0,c[s>>2]|0)|0;do if((c[t>>2]|0)!=116)if((c[t>>2]|0)==118){c[Q>>2]=c[q>>2];c[q>>2]=(c[q>>2]|0)+1;break}else{c[Q>>2]=fp(c[n>>2]|0,22,c[r>>2]|0,c[J>>2]|0)|0;fp(c[n>>2]|0,16,0,c[s>>2]|0)|0;break}else c[Q>>2]=c[q>>2];while(0);c[R>>2]=Mr(c[n>>2]|0)|0;if((c[t>>2]|0)==116|(c[t>>2]|0)==115)fp(c[n>>2]|0,17,c[w>>2]|0,c[x>>2]|0)|0;fp(c[n>>2]|0,22,c[y>>2]|0,c[E>>2]|0)|0;fp(c[n>>2]|0,16,0,c[s>>2]|0)|0;zp(c[n>>2]|0,c[I>>2]|0);fp(c[n>>2]|0,22,c[r>>2]|0,c[v>>2]|0)|0;fp(c[n>>2]|0,22,c[y>>2]|0,c[E>>2]|0)|0;Pr(c[n>>2]|0,c[s>>2]|0);hp(c[n>>2]|0,41,0,0,0,c[U>>2]|0,-15)|0;hp(c[n>>2]|0,42,c[G+8>>2]|0,c[B+8>>2]|0,c[T>>2]|0,c[S>>2]|0,-6)|0;Xe(c[n>>2]|0,1);ip(c[n>>2]|0,43,c[q>>2]|0,c[Q>>2]|0,c[R>>2]|0)|0;Pr(c[n>>2]|0,c[u>>2]|0);if((d[c[C>>2]>>0]|0|0)==9){c[V>>2]=c[m>>2];while(1){if(!(c[(c[V>>2]|0)+52>>2]|0))break;c[V>>2]=c[(c[V>>2]|0)+52>>2]}Mx(c[A>>2]|0,0,c[c[V>>2]>>2]|0)}if(c[(c[l>>2]|0)+52>>2]|0)tn(c[F>>2]|0,c[(c[l>>2]|0)+52>>2]|0);c[(c[l>>2]|0)+52>>2]=c[m>>2];c[(c[m>>2]|0)+56>>2]=c[l>>2];Yx(c[A>>2]|0,d[(c[l>>2]|0)+4>>0]|0,c[K>>2]|0,c[P>>2]|0,0);c[W>>2]=0;f=c[W>>2]|0;i=X;return f|0}function Yx(a,b,e,f,g){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;o=i;i=i+48|0;p=o;j=o+40|0;h=o+36|0;l=o+32|0;m=o+28|0;n=o+24|0;k=o+20|0;q=o+16|0;c[j>>2]=a;c[h>>2]=b;c[l>>2]=e;c[m>>2]=f;c[n>>2]=g;if((d[(c[j>>2]|0)+450>>0]|0|0)!=2){i=o;return}c[k>>2]=c[(c[j>>2]|0)+8>>2];a=c[c[j>>2]>>2]|0;l=c[l>>2]|0;f=c[m>>2]|0;e=(c[n>>2]|0)!=0?25320:1216;b=Vx(c[h>>2]|0)|0;c[p>>2]=l;c[p+4>>2]=f;c[p+8>>2]=e;c[p+12>>2]=b;c[q>>2]=Te(a,25280,p)|0;hp(c[k>>2]|0,155,c[(c[j>>2]|0)+464>>2]|0,0,0,c[q>>2]|0,-1)|0;i=o;return}function Zx(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;f=i;i=i+16|0;g=f+12|0;h=f+8|0;j=f+4|0;e=f;c[g>>2]=a;c[h>>2]=b;c[j>>2]=d;if(c[(c[h>>2]|0)+52>>2]|0)c[e>>2]=Zx(c[g>>2]|0,c[(c[h>>2]|0)+52>>2]|0,c[j>>2]|0)|0;else c[e>>2]=0;if(c[e>>2]|0){a=c[e>>2]|0;i=f;return a|0}if((c[j>>2]|0)>=(c[c[c[h>>2]>>2]>>2]|0)){a=c[e>>2]|0;i=f;return a|0}c[e>>2]=cq(c[g>>2]|0,c[(c[(c[c[h>>2]>>2]|0)+4>>2]|0)+((c[j>>2]|0)*20|0)>>2]|0)|0;a=c[e>>2]|0;i=f;return a|0}function _x(b,d,f){b=b|0;d=d|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;n=i;i=i+48|0;p=n+40|0;l=n+36|0;s=n+32|0;h=n+28|0;q=n+24|0;r=n+20|0;m=n+16|0;o=n+12|0;g=n+8|0;j=n+4|0;k=n;c[p>>2]=b;c[l>>2]=d;c[s>>2]=f;c[h>>2]=c[(c[l>>2]|0)+48>>2];c[q>>2]=c[c[(c[l>>2]|0)+48>>2]>>2];c[r>>2]=c[c[p>>2]>>2];c[m>>2]=Xr(c[r>>2]|0,(c[q>>2]|0)+(c[s>>2]|0)|0,1)|0;if(!(c[m>>2]|0)){s=c[m>>2]|0;i=n;return s|0}c[o>>2]=0;while(1){if((c[o>>2]|0)>=(c[q>>2]|0))break;c[g>>2]=(c[(c[h>>2]|0)+4>>2]|0)+((c[o>>2]|0)*20|0);c[j>>2]=c[c[g>>2]>>2];f=c[p>>2]|0;if(c[(c[j>>2]|0)+4>>2]&256)c[k>>2]=cq(f,c[j>>2]|0)|0;else{c[k>>2]=Zx(f,c[l>>2]|0,(e[(c[g>>2]|0)+16>>1]|0)-1|0)|0;if(!(c[k>>2]|0))c[k>>2]=c[(c[r>>2]|0)+8>>2];s=Oq(c[p>>2]|0,c[j>>2]|0,c[c[k>>2]>>2]|0)|0;c[(c[(c[h>>2]|0)+4>>2]|0)+((c[o>>2]|0)*20|0)>>2]=s}c[(c[m>>2]|0)+20+(c[o>>2]<<2)>>2]=c[k>>2];a[(c[(c[m>>2]|0)+16>>2]|0)+(c[o>>2]|0)>>0]=a[(c[(c[h>>2]|0)+4>>2]|0)+((c[o>>2]|0)*20|0)+12>>0]|0;c[o>>2]=(c[o>>2]|0)+1}s=c[m>>2]|0;i=n;return s|0}function $x(b,e,f,g,h,j,k,l){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;n=i;i=i+80|0;y=n+64|0;u=n+60|0;o=n+56|0;x=n+52|0;m=n+48|0;s=n+44|0;A=n+40|0;D=n+36|0;q=n+32|0;p=n+28|0;r=n+24|0;t=n+20|0;B=n+16|0;C=n+12|0;v=n+8|0;w=n+4|0;z=n;c[u>>2]=b;c[o>>2]=e;c[x>>2]=f;c[m>>2]=g;c[s>>2]=h;c[A>>2]=j;c[D>>2]=k;c[q>>2]=l;c[p>>2]=c[(c[u>>2]|0)+8>>2];c[t>>2]=Mr(c[p>>2]|0)|0;c[r>>2]=Nr(c[p>>2]|0)|0;if(c[A>>2]|0){c[B>>2]=Ir(c[p>>2]|0,46,c[A>>2]|0)|0;g=c[p>>2]|0;f=c[(c[x>>2]|0)+8>>2]|0;e=(c[A>>2]|0)+1|0;b=c[(c[x>>2]|0)+12>>2]|0;c[C>>2]=hp(g,42,f,e,b,Yr(c[D>>2]|0)|0,-6)|0;ip(c[p>>2]|0,43,(c[C>>2]|0)+2|0,c[r>>2]|0,(c[C>>2]|0)+2|0)|0;zp(c[p>>2]|0,c[B>>2]|0);ip(c[p>>2]|0,33,c[(c[x>>2]|0)+8>>2]|0,(c[A>>2]|0)+1|0,(c[(c[x>>2]|0)+12>>2]|0)-1|0)|0;fp(c[p>>2]|0,25,1,c[A>>2]|0)|0}if(a[(c[c[u>>2]>>2]|0)+64>>0]|0){c[y>>2]=0;b=c[y>>2]|0;i=n;return b|0}Ox(c[p>>2]|0,c[(c[o>>2]|0)+12>>2]|0,c[r>>2]|0);switch(d[c[m>>2]>>0]|0){case 12:case 14:{c[v>>2]=kp(c[u>>2]|0)|0;c[w>>2]=kp(c[u>>2]|0)|0;ip(c[p>>2]|0,49,c[(c[x>>2]|0)+8>>2]|0,c[(c[x>>2]|0)+12>>2]|0,c[v>>2]|0)|0;fp(c[p>>2]|0,74,c[(c[m>>2]|0)+4>>2]|0,c[w>>2]|0)|0;ip(c[p>>2]|0,75,c[(c[m>>2]|0)+4>>2]|0,c[v>>2]|0,c[w>>2]|0)|0;Xe(c[p>>2]|0,8);lp(c[u>>2]|0,c[w>>2]|0);lp(c[u>>2]|0,c[v>>2]|0);break};case 13:{if(!(c[(c[m>>2]|0)+8>>2]|0)){b=ys(c[u>>2]|0,c[(c[x>>2]|0)+12>>2]|0)|0;c[(c[m>>2]|0)+8>>2]=b;c[(c[m>>2]|0)+12>>2]=c[(c[x>>2]|0)+12>>2]}Ex(c[u>>2]|0,c[(c[x>>2]|0)+8>>2]|0,c[(c[m>>2]|0)+8>>2]|0,c[(c[m>>2]|0)+12>>2]|0);Ir(c[p>>2]|0,22,c[(c[m>>2]|0)+4>>2]|0)|0;break};case 11:{b=kt(c[c[(c[c[o>>2]>>2]|0)+4>>2]>>2]|0,a[(c[m>>2]|0)+1>>0]|0)|0;a[(c[m>>2]|0)+1>>0]=b;c[z>>2]=kp(c[u>>2]|0)|0;hp(c[p>>2]|0,49,c[(c[x>>2]|0)+8>>2]|0,1,c[z>>2]|0,(c[m>>2]|0)+1|0,1)|0;Us(c[u>>2]|0,c[(c[x>>2]|0)+8>>2]|0,1);fp(c[p>>2]|0,110,c[(c[m>>2]|0)+4>>2]|0,c[z>>2]|0)|0;lp(c[u>>2]|0,c[z>>2]|0);break};case 10:{Ex(c[u>>2]|0,c[(c[x>>2]|0)+8>>2]|0,c[(c[m>>2]|0)+4>>2]|0,1);break};default:{fp(c[p>>2]|0,35,c[(c[x>>2]|0)+8>>2]|0,c[(c[x>>2]|0)+12>>2]|0)|0;Us(c[u>>2]|0,c[(c[x>>2]|0)+8>>2]|0,c[(c[x>>2]|0)+12>>2]|0)}}if(c[(c[o>>2]|0)+8>>2]|0)ip(c[p>>2]|0,139,c[(c[o>>2]|0)+8>>2]|0,c[q>>2]|0,-1)|0;Pr(c[p>>2]|0,c[r>>2]|0);Ir(c[p>>2]|0,18,c[s>>2]|0)|0;c[y>>2]=c[t>>2];b=c[y>>2]|0;i=n;return b|0}function ay(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;f=i;i=i+32|0;j=f+16|0;h=f+12|0;k=f+8|0;l=f+4|0;g=f;c[j>>2]=a;c[h>>2]=b;c[k>>2]=d;c[l>>2]=e;if(!(c[h>>2]|0)){i=f;return}c[g>>2]=0;while(1){if((c[g>>2]|0)>=(c[c[h>>2]>>2]|0))break;a=by(c[j>>2]|0,c[(c[(c[h>>2]|0)+4>>2]|0)+((c[g>>2]|0)*20|0)>>2]|0,c[k>>2]|0,c[l>>2]|0)|0;c[(c[(c[h>>2]|0)+4>>2]|0)+((c[g>>2]|0)*20|0)>>2]=a;c[g>>2]=(c[g>>2]|0)+1}i=f;return}function by(e,f,g,h){e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;n=i;i=i+32|0;k=n+20|0;q=n+16|0;l=n+12|0;j=n+8|0;m=n+4|0;p=n;c[q>>2]=e;c[l>>2]=f;c[j>>2]=g;c[m>>2]=h;if(!(c[l>>2]|0)){c[k>>2]=0;e=c[k>>2]|0;i=n;return e|0}do if((d[c[l>>2]>>0]|0)==154?(c[(c[l>>2]|0)+28>>2]|0)==(c[j>>2]|0):0)if((b[(c[l>>2]|0)+32>>1]|0)<0){a[c[l>>2]>>0]=101;break}else{c[p>>2]=Bq(c[q>>2]|0,c[(c[(c[m>>2]|0)+4>>2]|0)+((b[(c[l>>2]|0)+32>>1]|0)*20|0)>>2]|0,0)|0;wn(c[q>>2]|0,c[l>>2]|0);c[l>>2]=c[p>>2];break}else o=8;while(0);do if((o|0)==8){p=by(c[q>>2]|0,c[(c[l>>2]|0)+12>>2]|0,c[j>>2]|0,c[m>>2]|0)|0;c[(c[l>>2]|0)+12>>2]=p;p=by(c[q>>2]|0,c[(c[l>>2]|0)+16>>2]|0,c[j>>2]|0,c[m>>2]|0)|0;c[(c[l>>2]|0)+16>>2]=p;p=c[q>>2]|0;o=(c[l>>2]|0)+20|0;if(c[(c[l>>2]|0)+4>>2]&2048){cy(p,c[o>>2]|0,c[j>>2]|0,c[m>>2]|0);break}else{ay(p,c[o>>2]|0,c[j>>2]|0,c[m>>2]|0);break}}while(0);c[k>>2]=c[l>>2];e=c[k>>2]|0;i=n;return e|0}function cy(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;l=i;i=i+32|0;h=l+24|0;n=l+20|0;k=l+16|0;f=l+12|0;m=l+8|0;j=l+4|0;g=l;c[h>>2]=a;c[n>>2]=b;c[k>>2]=d;c[f>>2]=e;if(!(c[n>>2]|0)){i=l;return}ay(c[h>>2]|0,c[c[n>>2]>>2]|0,c[k>>2]|0,c[f>>2]|0);ay(c[h>>2]|0,c[(c[n>>2]|0)+40>>2]|0,c[k>>2]|0,c[f>>2]|0);ay(c[h>>2]|0,c[(c[n>>2]|0)+48>>2]|0,c[k>>2]|0,c[f>>2]|0);a=by(c[h>>2]|0,c[(c[n>>2]|0)+44>>2]|0,c[k>>2]|0,c[f>>2]|0)|0;c[(c[n>>2]|0)+44>>2]=a;a=by(c[h>>2]|0,c[(c[n>>2]|0)+36>>2]|0,c[k>>2]|0,c[f>>2]|0)|0;c[(c[n>>2]|0)+36>>2]=a;cy(c[h>>2]|0,c[(c[n>>2]|0)+52>>2]|0,c[k>>2]|0,c[f>>2]|0);c[m>>2]=c[(c[n>>2]|0)+32>>2];if(!(c[m>>2]|0)){i=l;return}c[g>>2]=c[c[m>>2]>>2];c[j>>2]=(c[m>>2]|0)+8;while(1){if((c[g>>2]|0)<=0)break;cy(c[h>>2]|0,c[(c[j>>2]|0)+20>>2]|0,c[k>>2]|0,c[f>>2]|0);c[g>>2]=(c[g>>2]|0)+ -1;c[j>>2]=(c[j>>2]|0)+72}i=l;return}function dy(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;l=i;i=i+32|0;k=l+24|0;m=l+20|0;h=l+16|0;g=l+12|0;n=l+8|0;o=l+4|0;j=l;c[k>>2]=b;c[m>>2]=e;c[h>>2]=f;c[g>>2]=c[c[k>>2]>>2];if(!(c[(c[g>>2]|0)+24>>2]&524288)){i=l;return}if((d[(c[h>>2]|0)+44>>0]|0)&16){i=l;return}if(c[(c[h>>2]|0)+12>>2]|0){i=l;return}c[n>>2]=0;c[o>>2]=dp(c[k>>2]|0)|0;do if(!(Up(c[h>>2]|0)|0)){c[j>>2]=c[(c[h>>2]|0)+16>>2];while(1){if(!(c[j>>2]|0))break;if(d[(c[j>>2]|0)+24>>0]|0)break;if(c[(c[g>>2]|0)+24>>2]&16777216)break;c[j>>2]=c[(c[j>>2]|0)+4>>2]}if(c[j>>2]|0){c[n>>2]=Nr(c[o>>2]|0)|0;fp(c[o>>2]|0,135,1,c[n>>2]|0)|0;break}else{i=l;return}}while(0);a[(c[k>>2]|0)+438>>0]=1;b=c[k>>2]|0;no(b,wr(c[g>>2]|0,c[m>>2]|0,0)|0,0);a[(c[k>>2]|0)+438>>0]=0;if(!(c[(c[g>>2]|0)+24>>2]&16777216)){b=c[o>>2]|0;fp(b,135,0,(Mr(c[o>>2]|0)|0)+2|0)|0;ts(c[k>>2]|0,787,2,0,-2,4)}if(!(c[n>>2]|0)){i=l;return}Pr(c[o>>2]|0,c[n>>2]|0);i=l;return}function ey(a,b,e,f){a=a|0;b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;m=i;i=i+48|0;o=m;k=m+40|0;j=m+36|0;h=m+32|0;p=m+28|0;n=m+24|0;l=m+20|0;q=m+16|0;g=m+12|0;c[k>>2]=a;c[j>>2]=b;c[h>>2]=e;c[p>>2]=f;c[l>>2]=c[c[k>>2]>>2];c[g>>2]=(c[(c[l>>2]|0)+16>>2]|0)+(c[h>>2]<<4);c[n>>2]=dp(c[k>>2]|0)|0;pp(c[k>>2]|0,1,c[h>>2]|0);if((d[(c[j>>2]|0)+44>>0]|0)&16)mp(c[n>>2]|0,144)|0;c[q>>2]=wp(c[k>>2]|0,c[j>>2]|0)|0;while(1){if(!(c[q>>2]|0))break;Bt(c[k>>2]|0,c[q>>2]|0);c[q>>2]=c[(c[q>>2]|0)+32>>2]}if((d[(c[j>>2]|0)+44>>0]|0)&8){a=c[k>>2]|0;b=c[c[j>>2]>>2]|0;c[o>>2]=c[c[g>>2]>>2];c[o+4>>2]=b;cp(a,25632,o)}a=c[k>>2]|0;e=(c[h>>2]|0)==1?14904:14928;b=c[c[j>>2]>>2]|0;c[o>>2]=c[c[g>>2]>>2];c[o+4>>2]=e;c[o+8>>2]=b;cp(a,25680,o);if((c[p>>2]|0)==0?((d[(c[j>>2]|0)+44>>0]|0)&16|0)==0:0)fy(c[k>>2]|0,c[j>>2]|0);if(!((d[(c[j>>2]|0)+44>>0]|0)&16)){e=c[n>>2]|0;b=c[h>>2]|0;a=c[j>>2]|0;a=c[a>>2]|0;hp(e,124,b,0,0,a,0)|0;a=c[k>>2]|0;b=c[h>>2]|0;ep(a,b);b=c[l>>2]|0;a=c[h>>2]|0;gy(b,a);i=m;return}hp(c[n>>2]|0,146,c[h>>2]|0,0,0,c[c[j>>2]>>2]|0,0)|0;e=c[n>>2]|0;b=c[h>>2]|0;a=c[j>>2]|0;a=c[a>>2]|0;hp(e,124,b,0,0,a,0)|0;a=c[k>>2]|0;b=c[h>>2]|0;ep(a,b);b=c[l>>2]|0;a=c[h>>2]|0;gy(b,a);i=m;return}function fy(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;k=i;i=i+32|0;m=k+28|0;d=k+24|0;l=k+20|0;j=k+16|0;g=k+12|0;f=k+8|0;h=k+4|0;n=k;c[m>>2]=a;c[d>>2]=b;c[l>>2]=c[(c[d>>2]|0)+32>>2];c[j>>2]=0;while(1){c[f>>2]=0;if(!((c[j>>2]|0)!=0?(c[l>>2]|0)>=(c[j>>2]|0):0))c[f>>2]=c[l>>2];c[g>>2]=c[(c[d>>2]|0)+8>>2];while(1){if(!(c[g>>2]|0))break;c[h>>2]=c[(c[g>>2]|0)+44>>2];if(!((c[j>>2]|0)!=0?(c[h>>2]|0)>=(c[j>>2]|0):0))e=9;if((e|0)==9?(e=0,(c[h>>2]|0)>(c[f>>2]|0)):0)c[f>>2]=c[h>>2];c[g>>2]=c[(c[g>>2]|0)+20>>2]}if(!(c[f>>2]|0))break;c[n>>2]=Ve(c[c[m>>2]>>2]|0,c[(c[d>>2]|0)+68>>2]|0)|0;ju(c[m>>2]|0,c[f>>2]|0,c[n>>2]|0);c[j>>2]=c[f>>2]}i=k;return}function gy(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,j=0,k=0;f=i;i=i+16|0;g=f+12|0;h=f+8|0;j=f+4|0;k=f;c[g>>2]=a;c[h>>2]=d;if(((e[(c[(c[(c[g>>2]|0)+16>>2]|0)+(c[h>>2]<<4)+12>>2]|0)+78>>1]|0)&2|0)!=2){i=f;return}c[j>>2]=c[(c[(c[(c[g>>2]|0)+16>>2]|0)+(c[h>>2]<<4)+12>>2]|0)+16>>2];while(1){if(!(c[j>>2]|0))break;c[k>>2]=c[(c[j>>2]|0)+8>>2];if(c[(c[k>>2]|0)+12>>2]|0){hy(c[g>>2]|0,c[k>>2]|0);c[(c[k>>2]|0)+4>>2]=0;b[(c[k>>2]|0)+38>>1]=0}c[j>>2]=c[c[j>>2]>>2]}a=(c[(c[(c[g>>2]|0)+16>>2]|0)+(c[h>>2]<<4)+12>>2]|0)+78|0;b[a>>1]=(e[a>>1]|0)&-3;i=f;return}function hy(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;i=i+16|0;g=e+12|0;f=e+8|0;h=e+4|0;j=e;c[g>>2]=a;c[f>>2]=d;a=c[(c[f>>2]|0)+4>>2]|0;c[j>>2]=a;if(!a){i=e;return}c[h>>2]=0;while(1){d=c[g>>2]|0;if((c[h>>2]|0)>=(b[(c[f>>2]|0)+38>>1]|0))break;Xb(d,c[c[j>>2]>>2]|0);wn(c[g>>2]|0,c[(c[j>>2]|0)+4>>2]|0);Xb(c[g>>2]|0,c[(c[j>>2]|0)+8>>2]|0);Xb(c[g>>2]|0,c[(c[j>>2]|0)+12>>2]|0);Xb(c[g>>2]|0,c[(c[j>>2]|0)+16>>2]|0);c[h>>2]=(c[h>>2]|0)+1;c[j>>2]=(c[j>>2]|0)+24}Xb(d,c[(c[f>>2]|0)+4>>2]|0);i=e;return}function iy(a,d,e,f,g){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;h=i;i=i+144|0;k=h+136|0;j=h+132|0;m=h+128|0;n=h+124|0;o=h+120|0;p=h;l=h+88|0;q=h+80|0;c[k>>2]=a;c[j>>2]=d;c[m>>2]=e;c[n>>2]=f;c[o>>2]=g;c[l+0>>2]=0;c[l+4>>2]=0;c[l+8>>2]=0;c[l+12>>2]=0;c[l+16>>2]=0;c[l+20>>2]=0;c[l+24>>2]=0;c[l+28>>2]=0;f=p+0|0;g=f+80|0;do{c[f>>2]=0;f=f+4|0}while((f|0)<(g|0));c[p>>2]=1;c[p+16>>2]=c[c[j>>2]>>2];c[p+24>>2]=c[j>>2];c[p+48>>2]=-1;c[l>>2]=c[k>>2];c[l+4>>2]=p;b[l+28>>1]=c[m>>2];a=(vq(l,c[n>>2]|0)|0)==0;if(!(a&(c[o>>2]|0)!=0)){i=h;return}c[q>>2]=0;while(1){if((c[q>>2]|0)>=(c[c[o>>2]>>2]|0)){j=6;break}if(vq(l,c[(c[(c[o>>2]|0)+4>>2]|0)+((c[q>>2]|0)*20|0)>>2]|0)|0){j=6;break}c[q>>2]=(c[q>>2]|0)+1}if((j|0)==6){i=h;return}}function jy(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;g=i;i=i+16|0;f=g+12|0;j=g+8|0;k=g+4|0;h=g;c[j>>2]=a;c[k>>2]=d;c[h>>2]=e;while(1){a=c[k>>2]|0;c[k>>2]=a+ -1;if((a|0)<=0){e=5;break}d=c[h>>2]|0;a=c[j>>2]|0;c[j>>2]=a+2;if((d|0)==(b[a>>1]|0)){e=4;break}}if((e|0)==4){c[f>>2]=1;a=c[f>>2]|0;i=g;return a|0}else if((e|0)==5){c[f>>2]=0;a=c[f>>2]|0;i=g;return a|0}return 0}function ky(a){a=a|0;var f=0,g=0,h=0,j=0,k=0,l=0;h=i;i=i+32|0;g=h+12|0;f=h+8|0;k=h+4|0;j=h;l=h+16|0;c[g>>2]=a;c[f>>2]=0;c[j>>2]=c[(c[(c[g>>2]|0)+12>>2]|0)+4>>2];c[k>>2]=0;while(1){if((c[k>>2]|0)>=(e[(c[g>>2]|0)+52>>1]|0))break;b[l>>1]=b[(c[(c[g>>2]|0)+4>>2]|0)+(c[k>>2]<<1)>>1]|0;if((b[l>>1]|0)<0)a=1;else a=d[(c[j>>2]|0)+((b[(c[(c[g>>2]|0)+4>>2]|0)+(c[k>>2]<<1)>>1]|0)*24|0)+22>>0]|0;c[f>>2]=(c[f>>2]|0)+a;c[k>>2]=(c[k>>2]|0)+1}a=dq(c[f>>2]<<2,0)|0;b[(c[g>>2]|0)+48>>1]=a;i=h;return}function ly(a,b){a=a|0;b=b|0;var e=0,f=0,g=0;g=i;i=i+16|0;e=g+4|0;f=g;c[e>>2]=a;c[f>>2]=b;my(c[e>>2]|0,c[f>>2]|0);if(!((c[e>>2]|0)!=0?(c[(c[e>>2]|0)+520>>2]|0)!=0:0))eh(c[(c[f>>2]|0)+40>>2]|0);wn(c[e>>2]|0,c[(c[f>>2]|0)+36>>2]|0);Xb(c[e>>2]|0,c[(c[f>>2]|0)+16>>2]|0);if(!((d[(c[f>>2]|0)+55>>0]|0)>>>4&1)){e=c[e>>2]|0;a=c[f>>2]|0;Xb(e,a);i=g;return}Xb(c[e>>2]|0,c[(c[f>>2]|0)+32>>2]|0);e=c[e>>2]|0;a=c[f>>2]|0;Xb(e,a);i=g;return}function my(a,b){a=a|0;b=b|0;var d=0;d=i;i=i+16|0;c[d+4>>2]=a;c[d>>2]=b;i=d;return}function ny(b,e){b=b|0;e=e|0;var f=0,g=0,h=0;f=i;i=i+16|0;h=f;g=f+4|0;c[h>>2]=b;a[g>>0]=e;b=et(c[h>>2]|0,3+(d[g>>0]|0)|0)|0;i=f;return b|0}function oy(f,g){f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;p=i;i=i+48|0;r=p+40|0;q=p+36|0;l=p+32|0;m=p+28|0;o=p+24|0;n=p+20|0;t=p+16|0;h=p+12|0;u=p+8|0;s=p+4|0;k=p;c[r>>2]=f;c[q>>2]=g;c[h>>2]=c[c[r>>2]>>2];c[u>>2]=c[(c[r>>2]|0)+8>>2];if(c[(c[r>>2]|0)+416>>2]|0)a[(dt(c[u>>2]|0,c[(c[r>>2]|0)+416>>2]|0)|0)>>0]=120;if(c[(c[r>>2]|0)+420>>2]|0)a[(dt(c[u>>2]|0,c[(c[r>>2]|0)+420>>2]|0)|0)>>0]=16;do if((b[(c[q>>2]|0)+36>>1]|0)>=0){c[s>>2]=eo(c[r>>2]|0,0,0)|0;if(!(c[s>>2]|0)){i=p;return}f=ne(c[c[r>>2]>>2]|0,c[(c[(c[q>>2]|0)+4>>2]|0)+((b[(c[q>>2]|0)+36>>1]|0)*24|0)>>2]|0)|0;c[(c[(c[s>>2]|0)+4>>2]|0)+4>>2]=f;a[(c[(c[s>>2]|0)+4>>2]|0)+12>>0]=a[(c[r>>2]|0)+448>>0]|0;c[m>>2]=Vn(c[r>>2]|0,0,0,0,c[s>>2]|0,d[(c[q>>2]|0)+45>>0]|0,0,0,0,0)|0;if(!(c[m>>2]|0)){i=p;return}else{f=(c[m>>2]|0)+55|0;a[f>>0]=a[f>>0]&-4|2;b[(c[q>>2]|0)+36>>1]=-1;break}}else c[m>>2]=Zr(c[q>>2]|0)|0;while(0);f=(c[m>>2]|0)+55|0;a[f>>0]=a[f>>0]&-33|32;c[o>>2]=e[(c[m>>2]|0)+50>>1];c[n>>2]=0;while(1){if((c[n>>2]|0)>=(c[o>>2]|0))break;a[(c[(c[q>>2]|0)+4>>2]|0)+((b[(c[(c[m>>2]|0)+4>>2]|0)+(c[n>>2]<<1)>>1]|0)*24|0)+20>>0]=1;c[n>>2]=(c[n>>2]|0)+1}f=(c[m>>2]|0)+55|0;a[f>>0]=a[f>>0]&-9|8;c[(c[m>>2]|0)+44>>2]=c[(c[q>>2]|0)+32>>2];c[l>>2]=c[(c[q>>2]|0)+8>>2];a:while(1){if(!(c[l>>2]|0))break;b:do if((a[(c[l>>2]|0)+55>>0]&3|0)!=2){c[k>>2]=0;c[n>>2]=0;while(1){if((c[n>>2]|0)>=(c[o>>2]|0))break;if(!(jy(c[(c[l>>2]|0)+4>>2]|0,e[(c[l>>2]|0)+50>>1]|0,b[(c[(c[m>>2]|0)+4>>2]|0)+(c[n>>2]<<1)>>1]|0)|0))c[k>>2]=(c[k>>2]|0)+1;c[n>>2]=(c[n>>2]|0)+1}if(!(c[k>>2]|0)){b[(c[l>>2]|0)+52>>1]=b[(c[l>>2]|0)+50>>1]|0;break}if(ty(c[h>>2]|0,c[l>>2]|0,(e[(c[l>>2]|0)+50>>1]|0)+(c[k>>2]|0)|0)|0){j=38;break a}c[n>>2]=0;c[t>>2]=e[(c[l>>2]|0)+50>>1];while(1){if((c[n>>2]|0)>=(c[o>>2]|0))break b;if(!(jy(c[(c[l>>2]|0)+4>>2]|0,e[(c[l>>2]|0)+50>>1]|0,b[(c[(c[m>>2]|0)+4>>2]|0)+(c[n>>2]<<1)>>1]|0)|0)){b[(c[(c[l>>2]|0)+4>>2]|0)+(c[t>>2]<<1)>>1]=b[(c[(c[m>>2]|0)+4>>2]|0)+(c[n>>2]<<1)>>1]|0;c[(c[(c[l>>2]|0)+32>>2]|0)+(c[t>>2]<<2)>>2]=c[(c[(c[m>>2]|0)+32>>2]|0)+(c[n>>2]<<2)>>2];c[t>>2]=(c[t>>2]|0)+1}c[n>>2]=(c[n>>2]|0)+1}}while(0);c[l>>2]=c[(c[l>>2]|0)+20>>2]}if((j|0)==38){i=p;return}if((c[o>>2]|0)>=(b[(c[q>>2]|0)+38>>1]|0)){b[(c[m>>2]|0)+52>>1]=b[(c[q>>2]|0)+38>>1]|0;i=p;return}if(ty(c[h>>2]|0,c[m>>2]|0,b[(c[q>>2]|0)+38>>1]|0)|0){i=p;return}c[n>>2]=0;c[t>>2]=c[o>>2];while(1){if((c[n>>2]|0)>=(b[(c[q>>2]|0)+38>>1]|0))break;if(!(jy(c[(c[m>>2]|0)+4>>2]|0,c[t>>2]|0,c[n>>2]|0)|0)){b[(c[(c[m>>2]|0)+4>>2]|0)+(c[t>>2]<<1)>>1]=c[n>>2];c[(c[(c[m>>2]|0)+32>>2]|0)+(c[t>>2]<<2)>>2]=3320;c[t>>2]=(c[t>>2]|0)+1}c[n>>2]=(c[n>>2]|0)+1}i=p;return}function py(a){a=a|0;var e=0,f=0,g=0,h=0,j=0;g=i;i=i+16|0;f=g+12|0;e=g+8|0;j=g+4|0;h=g;c[f>>2]=a;c[e>>2]=0;c[h>>2]=b[(c[f>>2]|0)+38>>1];c[j>>2]=c[(c[f>>2]|0)+4>>2];while(1){if((c[h>>2]|0)<=0)break;c[e>>2]=(c[e>>2]|0)+(d[(c[j>>2]|0)+22>>0]|0);c[h>>2]=(c[h>>2]|0)+ -1;c[j>>2]=(c[j>>2]|0)+24}if((b[(c[f>>2]|0)+36>>1]|0)>=0){h=c[e>>2]|0;h=h<<2;h=dq(h,0)|0;j=c[f>>2]|0;j=j+42|0;b[j>>1]=h;i=g;return}c[e>>2]=(c[e>>2]|0)+1;h=c[e>>2]|0;h=h<<2;h=dq(h,0)|0;j=c[f>>2]|0;j=j+42|0;b[j>>1]=h;i=g;return}function qy(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;h=i;i=i+64|0;k=h;n=h+52|0;u=h+48|0;o=h+44|0;g=h+40|0;f=h+36|0;m=h+32|0;l=h+28|0;p=h+24|0;q=h+20|0;j=h+16|0;r=h+12|0;t=h+8|0;s=h+4|0;c[u>>2]=d;c[o>>2]=e;c[m>>2]=0;c[r>>2]=c[(c[o>>2]|0)+4>>2];c[g>>2]=0;while(1){if((c[g>>2]|0)>=(b[(c[o>>2]|0)+38>>1]|0))break;d=(ry(c[c[r>>2]>>2]|0)|0)+5|0;c[m>>2]=(c[m>>2]|0)+d;c[g>>2]=(c[g>>2]|0)+1;c[r>>2]=(c[r>>2]|0)+24}d=ry(c[c[o>>2]>>2]|0)|0;c[m>>2]=(c[m>>2]|0)+d;if((c[m>>2]|0)<50){c[p>>2]=1216;c[q>>2]=9776;c[j>>2]=23976}else{c[p>>2]=26904;c[q>>2]=26912;c[j>>2]=26920}c[m>>2]=(c[m>>2]|0)+(35+((b[(c[o>>2]|0)+38>>1]|0)*6|0));d=c[m>>2]|0;c[l>>2]=Qe(0,d,((d|0)<0)<<31>>31)|0;if(!(c[l>>2]|0)){a[(c[u>>2]|0)+64>>0]=1;c[n>>2]=0;d=c[n>>2]|0;i=h;return d|0}sc(c[m>>2]|0,c[l>>2]|0,26928,k)|0;c[f>>2]=Mb(c[l>>2]|0)|0;sy(c[l>>2]|0,f,c[c[o>>2]>>2]|0);d=c[f>>2]|0;c[f>>2]=d+1;a[(c[l>>2]|0)+d>>0]=40;c[r>>2]=c[(c[o>>2]|0)+4>>2];c[g>>2]=0;while(1){e=(c[m>>2]|0)-(c[f>>2]|0)|0;u=(c[l>>2]|0)+(c[f>>2]|0)|0;if((c[g>>2]|0)>=(b[(c[o>>2]|0)+38>>1]|0))break;sc(e,u,c[p>>2]|0,k)|0;d=Mb((c[l>>2]|0)+(c[f>>2]|0)|0)|0;c[f>>2]=(c[f>>2]|0)+d;c[p>>2]=c[q>>2];sy(c[l>>2]|0,f,c[c[r>>2]>>2]|0);c[s>>2]=c[26944+((a[(c[r>>2]|0)+21>>0]|0)-65<<2)>>2];c[t>>2]=Mb(c[s>>2]|0)|0;dF((c[l>>2]|0)+(c[f>>2]|0)|0,c[s>>2]|0,c[t>>2]|0)|0;c[f>>2]=(c[f>>2]|0)+(c[t>>2]|0);c[g>>2]=(c[g>>2]|0)+1;c[r>>2]=(c[r>>2]|0)+24}c[k>>2]=c[j>>2];sc(e,u,1200,k)|0;c[n>>2]=c[l>>2];d=c[n>>2]|0;i=h;return d|0}function ry(b){b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=b;c[e>>2]=0;while(1){if(!(a[c[f>>2]>>0]|0))break;if((a[c[f>>2]>>0]|0)==34)c[e>>2]=(c[e>>2]|0)+1;c[e>>2]=(c[e>>2]|0)+1;c[f>>2]=(c[f>>2]|0)+1}i=d;return(c[e>>2]|0)+2|0}function sy(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;k=i;i=i+32|0;h=k+24|0;j=k+20|0;o=k+16|0;m=k+12|0;l=k+8|0;n=k+4|0;g=k;c[h>>2]=b;c[j>>2]=e;c[o>>2]=f;c[m>>2]=c[o>>2];c[l>>2]=c[c[j>>2]>>2];c[n>>2]=0;while(1){if(!(a[(c[m>>2]|0)+(c[n>>2]|0)>>0]|0))break;if((d[1224+(d[(c[m>>2]|0)+(c[n>>2]|0)>>0]|0)>>0]&6|0)==0?(d[(c[m>>2]|0)+(c[n>>2]|0)>>0]|0)!=95:0)break;c[n>>2]=(c[n>>2]|0)+1}if(((d[1224+(d[c[m>>2]>>0]|0)>>0]&4|0)==0?(lg(c[m>>2]|0,c[n>>2]|0)|0)==27:0)?(d[(c[m>>2]|0)+(c[n>>2]|0)>>0]|0)==0:0)f=(c[n>>2]|0)==0;else f=1;c[g>>2]=f&1;if(c[g>>2]|0){o=c[l>>2]|0;c[l>>2]=o+1;a[(c[h>>2]|0)+o>>0]=34}c[n>>2]=0;while(1){if(!(a[(c[m>>2]|0)+(c[n>>2]|0)>>0]|0))break;b=a[(c[m>>2]|0)+(c[n>>2]|0)>>0]|0;o=c[l>>2]|0;c[l>>2]=o+1;a[(c[h>>2]|0)+o>>0]=b;if((d[(c[m>>2]|0)+(c[n>>2]|0)>>0]|0)==34){o=c[l>>2]|0;c[l>>2]=o+1;a[(c[h>>2]|0)+o>>0]=34}c[n>>2]=(c[n>>2]|0)+1}if(!(c[g>>2]|0)){b=c[l>>2]|0;o=c[h>>2]|0;b=o+b|0;a[b>>0]=0;b=c[l>>2]|0;o=c[j>>2]|0;c[o>>2]=b;i=k;return}b=c[l>>2]|0;c[l>>2]=b+1;a[(c[h>>2]|0)+b>>0]=34;b=c[l>>2]|0;o=c[h>>2]|0;b=o+b|0;a[b>>0]=0;b=c[l>>2]|0;o=c[j>>2]|0;c[o>>2]=b;i=k;return}function ty(d,f,g){d=d|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0;h=i;i=i+32|0;j=h+20|0;o=h+16|0;l=h+12|0;m=h+8|0;k=h+4|0;n=h;c[o>>2]=d;c[l>>2]=f;c[m>>2]=g;if((e[(c[l>>2]|0)+52>>1]|0|0)>=(c[m>>2]|0)){c[j>>2]=0;d=c[j>>2]|0;i=h;return d|0}c[n>>2]=(c[m>>2]|0)*7;d=c[n>>2]|0;c[k>>2]=se(c[o>>2]|0,d,((d|0)<0)<<31>>31)|0;if(!(c[k>>2]|0)){c[j>>2]=7;d=c[j>>2]|0;i=h;return d|0}else{dF(c[k>>2]|0,c[(c[l>>2]|0)+32>>2]|0,(e[(c[l>>2]|0)+52>>1]|0)<<2|0)|0;c[(c[l>>2]|0)+32>>2]=c[k>>2];c[k>>2]=(c[k>>2]|0)+(c[m>>2]<<2);dF(c[k>>2]|0,c[(c[l>>2]|0)+4>>2]|0,(e[(c[l>>2]|0)+52>>1]|0)<<1|0)|0;c[(c[l>>2]|0)+4>>2]=c[k>>2];c[k>>2]=(c[k>>2]|0)+(c[m>>2]<<1);dF(c[k>>2]|0,c[(c[l>>2]|0)+28>>2]|0,e[(c[l>>2]|0)+52>>1]|0|0)|0;c[(c[l>>2]|0)+28>>2]=c[k>>2];b[(c[l>>2]|0)+52>>1]=c[m>>2];d=(c[l>>2]|0)+55|0;a[d>>0]=a[d>>0]&-17|16;c[j>>2]=0;d=c[j>>2]|0;i=h;return d|0}return 0}function uy(a){a=a|0;var b=0,e=0,f=0,g=0,h=0,j=0;b=i;i=i+32|0;f=b+16|0;e=b+12|0;j=b+8|0;g=b+4|0;h=b;c[f>>2]=a;c[j>>2]=dp(c[f>>2]|0)|0;c[e>>2]=0;while(1){if((c[e>>2]|0)>=(c[(c[f>>2]|0)+396>>2]|0))break;c[g>>2]=(c[(c[f>>2]|0)+400>>2]|0)+(c[e>>2]<<4);c[h>>2]=c[c[g>>2]>>2];hp(c[j>>2]|0,143,c[h>>2]|0,c[(c[g>>2]|0)+4>>2]|0,d[(c[g>>2]|0)+8>>0]|0,c[(c[g>>2]|0)+12>>2]|0,-2)|0;c[e>>2]=(c[e>>2]|0)+1}i=b;return}function vy(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0;b=i;i=i+32|0;h=b+24|0;d=b+20|0;e=b+16|0;f=b+12|0;g=b+8|0;k=b+4|0;j=b;c[h>>2]=a;c[e>>2]=c[c[h>>2]>>2];c[j>>2]=c[(c[h>>2]|0)+8>>2];c[d>>2]=c[(c[h>>2]|0)+404>>2];while(1){if(!(c[d>>2]|0))break;c[f>>2]=(c[(c[e>>2]|0)+16>>2]|0)+(c[(c[d>>2]|0)+8>>2]<<4);c[g>>2]=c[(c[d>>2]|0)+12>>2];Kr(c[h>>2]|0,0,c[(c[d>>2]|0)+8>>2]|0,c[(c[(c[f>>2]|0)+12>>2]|0)+72>>2]|0,54);ip(c[j>>2]|0,28,0,c[g>>2]|0,(c[g>>2]|0)+1|0)|0;c[k>>2]=Mr(c[j>>2]|0)|0;hp(c[j>>2]|0,97,0,(c[g>>2]|0)-1|0,0,c[c[(c[d>>2]|0)+4>>2]>>2]|0,0)|0;fp(c[j>>2]|0,108,0,(c[k>>2]|0)+9|0)|0;ip(c[j>>2]|0,47,0,0,c[g>>2]|0)|0;ip(c[j>>2]|0,78,(c[g>>2]|0)-1|0,(c[k>>2]|0)+7|0,c[g>>2]|0)|0;Xe(c[j>>2]|0,16);fp(c[j>>2]|0,103,0,(c[g>>2]|0)+1|0)|0;ip(c[j>>2]|0,47,0,1,c[g>>2]|0)|0;fp(c[j>>2]|0,16,0,(c[k>>2]|0)+9|0)|0;fp(c[j>>2]|0,9,0,(c[k>>2]|0)+2|0)|0;fp(c[j>>2]|0,25,0,c[g>>2]|0)|0;mp(c[j>>2]|0,61)|0;c[d>>2]=c[c[d>>2]>>2]}i=b;return}function wy(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=i;i=i+16|0;e=g;f=g+12|0;d=g+4|0;c[f>>2]=a;c[g+8>>2]=b;c[d>>2]=c[(c[f>>2]|0)+8>>2];a=c[f>>2]|0;c[a>>2]=(c[a>>2]|0)+ -1;while(1){if((c[c[f>>2]>>2]|0)<0)break;zn(c[f>>2]|0)|0}Se(c[d>>2]|0,27184,e);c[(c[f>>2]|0)+8>>2]=c[d>>2];i=g;return}function xy(b,e,f,g,h,j,k){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;l=i;i=i+80|0;p=l;m=l+76|0;z=l+72|0;C=l+68|0;t=l+64|0;F=l+60|0;y=l+56|0;B=l+52|0;n=l+48|0;o=l+44|0;q=l+40|0;u=l+36|0;G=l+32|0;E=l+28|0;A=l+24|0;D=l+20|0;w=l+16|0;v=l+12|0;x=l+8|0;r=l+4|0;c[m>>2]=b;c[z>>2]=e;c[C>>2]=f;c[t>>2]=g;c[F>>2]=h;c[y>>2]=j;c[B>>2]=k;c[o>>2]=0;c[q>>2]=0;c[n>>2]=se(c[m>>2]|0,536,0)|0;if(!(c[n>>2]|0)){c[q>>2]=7;b=c[n>>2]|0;ef(b);b=c[m>>2]|0;e=c[n>>2]|0;Xb(b,e);e=c[m>>2]|0;b=c[q>>2]|0;b=wd(e,b)|0;c[q>>2]=b;b=c[q>>2]|0;i=l;return b|0}c[(c[n>>2]|0)+476>>2]=c[F>>2];c[u>>2]=0;while(1){if((c[u>>2]|0)>=(c[(c[m>>2]|0)+20>>2]|0))break;c[G>>2]=c[(c[(c[m>>2]|0)+16>>2]|0)+(c[u>>2]<<4)+4>>2];if((c[G>>2]|0)!=0?(c[q>>2]=yy(c[G>>2]|0)|0,(c[q>>2]|0)!=0):0){s=7;break}c[u>>2]=(c[u>>2]|0)+1}if((s|0)==7){c[E>>2]=c[(c[(c[m>>2]|0)+16>>2]|0)+(c[u>>2]<<4)>>2];e=c[m>>2]|0;b=c[q>>2]|0;c[p>>2]=c[E>>2];Lc(e,b,30936,p);b=c[n>>2]|0;ef(b);b=c[m>>2]|0;e=c[n>>2]|0;Xb(b,e);e=c[m>>2]|0;b=c[q>>2]|0;b=wd(e,b)|0;c[q>>2]=b;b=c[q>>2]|0;i=l;return b|0}Lk(c[m>>2]|0);c[c[n>>2]>>2]=c[m>>2];c[(c[n>>2]|0)+424>>2]=0;do if((c[C>>2]|0)>=0){if((c[C>>2]|0)!=0?(a[(c[z>>2]|0)+((c[C>>2]|0)-1)>>0]|0)==0:0){s=17;break}c[D>>2]=c[(c[m>>2]|0)+92>>2];f=c[m>>2]|0;if((c[C>>2]|0)>(c[D>>2]|0)){Lc(f,18,30968,p);c[q>>2]=wd(c[m>>2]|0,18)|0;b=c[n>>2]|0;ef(b);b=c[m>>2]|0;e=c[n>>2]|0;Xb(b,e);e=c[m>>2]|0;b=c[q>>2]|0;b=wd(e,b)|0;c[q>>2]=b;b=c[q>>2]|0;i=l;return b|0}b=c[C>>2]|0;c[A>>2]=rm(f,c[z>>2]|0,b,((b|0)<0)<<31>>31)|0;if(c[A>>2]|0){qf(c[n>>2]|0,c[A>>2]|0,o)|0;Xb(c[m>>2]|0,c[A>>2]|0);c[(c[n>>2]|0)+480>>2]=(c[z>>2]|0)+((c[(c[n>>2]|0)+480>>2]|0)-(c[A>>2]|0));break}else{c[(c[n>>2]|0)+480>>2]=(c[z>>2]|0)+(c[C>>2]|0);break}}else s=17;while(0);if((s|0)==17)qf(c[n>>2]|0,c[z>>2]|0,o)|0;if(a[(c[m>>2]|0)+64>>0]|0)c[(c[n>>2]|0)+12>>2]=7;if((c[(c[n>>2]|0)+12>>2]|0)==101)c[(c[n>>2]|0)+12>>2]=0;if(a[(c[n>>2]|0)+17>>0]|0)zy(c[n>>2]|0);if(a[(c[m>>2]|0)+64>>0]|0)c[(c[n>>2]|0)+12>>2]=7;if(c[B>>2]|0)c[c[B>>2]>>2]=c[(c[n>>2]|0)+480>>2];c[q>>2]=c[(c[n>>2]|0)+12>>2];a:do if(((c[q>>2]|0)==0?(c[(c[n>>2]|0)+8>>2]|0)!=0:0)?(d[(c[n>>2]|0)+450>>0]|0)!=0:0){A=c[(c[n>>2]|0)+8>>2]|0;if((d[(c[n>>2]|0)+450>>0]|0)==2){Nt(A,4);c[w>>2]=8;c[v>>2]=12}else{Nt(A,8);c[w>>2]=0;c[v>>2]=8}c[u>>2]=c[w>>2];while(1){if((c[u>>2]|0)>=(c[v>>2]|0))break a;Ot(c[(c[n>>2]|0)+8>>2]|0,(c[u>>2]|0)-(c[w>>2]|0)|0,0,c[30992+(c[u>>2]<<2)>>2]|0,0)|0;c[u>>2]=(c[u>>2]|0)+1}}while(0);if(!(d[(c[m>>2]|0)+145>>0]|0)){c[x>>2]=c[(c[n>>2]|0)+8>>2];Ay(c[x>>2]|0,c[z>>2]|0,(c[(c[n>>2]|0)+480>>2]|0)-(c[z>>2]|0)|0,c[t>>2]|0)}do if(c[(c[n>>2]|0)+8>>2]|0){if((c[q>>2]|0)==0?(d[(c[m>>2]|0)+64>>0]|0)==0:0){s=43;break}vd(c[(c[n>>2]|0)+8>>2]|0)|0}else s=43;while(0);if((s|0)==43)c[c[y>>2]>>2]=c[(c[n>>2]|0)+8>>2];t=c[m>>2]|0;s=c[q>>2]|0;if(c[o>>2]|0){c[p>>2]=c[o>>2];Lc(t,s,1200,p);Xb(c[m>>2]|0,c[o>>2]|0)}else Nc(t,s);while(1){if(!(c[(c[n>>2]|0)+528>>2]|0))break;c[r>>2]=c[(c[n>>2]|0)+528>>2];c[(c[n>>2]|0)+528>>2]=c[(c[r>>2]|0)+4>>2];Xb(c[m>>2]|0,c[r>>2]|0)}b=c[n>>2]|0;ef(b);b=c[m>>2]|0;e=c[n>>2]|0;Xb(b,e);e=c[m>>2]|0;b=c[q>>2]|0;b=wd(e,b)|0;c[q>>2]=b;b=c[q>>2]|0;i=l;return b|0}function yy(a){a=a|0;var b=0,d=0,e=0;d=i;i=i+16|0;e=d+4|0;b=d;c[e>>2]=a;Pc(c[e>>2]|0);c[b>>2]=By(c[e>>2]|0,1,1)|0;i=d;return c[b>>2]|0}function zy(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0;d=i;i=i+32|0;l=d+24|0;g=d+20|0;h=d+16|0;k=d+12|0;f=d+8|0;j=d+4|0;e=d;c[l>>2]=b;c[g>>2]=c[c[l>>2]>>2];c[h>>2]=0;while(1){if((c[h>>2]|0)>=(c[(c[g>>2]|0)+20>>2]|0)){b=14;break}c[j>>2]=0;c[e>>2]=c[(c[(c[g>>2]|0)+16>>2]|0)+(c[h>>2]<<4)+4>>2];if(c[e>>2]|0){if(!(Tc(c[e>>2]|0)|0)){c[k>>2]=Rc(c[e>>2]|0,0)|0;if((c[k>>2]|0)==7|(c[k>>2]|0)==3082)a[(c[g>>2]|0)+64>>0]=1;if(c[k>>2]|0){b=14;break}c[j>>2]=1}Sc(c[e>>2]|0,1,f);if((c[f>>2]|0)!=(c[c[(c[(c[g>>2]|0)+16>>2]|0)+(c[h>>2]<<4)+12>>2]>>2]|0)){as(c[g>>2]|0,c[h>>2]|0);c[(c[l>>2]|0)+12>>2]=17}if(c[j>>2]|0)gs(c[e>>2]|0)|0}c[h>>2]=(c[h>>2]|0)+1}if((b|0)==14){i=d;return}}function Ay(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;g=i;i=i+16|0;j=g+12|0;k=g+8|0;h=g+4|0;l=g;c[j>>2]=a;c[k>>2]=d;c[h>>2]=e;c[l>>2]=f;if(!(c[j>>2]|0)){i=g;return}a=c[h>>2]|0;a=rm(c[c[j>>2]>>2]|0,c[k>>2]|0,a,((a|0)<0)<<31>>31)|0;c[(c[j>>2]|0)+168>>2]=a;a=(c[j>>2]|0)+88|0;b[a>>1]=b[a>>1]&-1025|(c[l>>2]&1)<<10&65535;i=g;return}function By(f,g,h){f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;o=i;i=i+32|0;l=o+16|0;n=o+12|0;j=o+8|0;p=o+20|0;q=o+4|0;m=o;c[n>>2]=f;c[j>>2]=g;a[p>>0]=h;c[q>>2]=c[(c[n>>2]|0)+4>>2];if(!(a[(c[n>>2]|0)+9>>0]|0)){c[l>>2]=0;f=c[l>>2]|0;i=o;return f|0}if((c[(c[q>>2]|0)+76>>2]|0)!=(c[n>>2]|0)?(e[(c[q>>2]|0)+22>>1]&32|0)!=0:0){c[l>>2]=262;f=c[l>>2]|0;i=o;return f|0}c[m>>2]=c[(c[q>>2]|0)+72>>2];while(1){if(!(c[m>>2]|0)){k=15;break}if(((c[c[m>>2]>>2]|0)!=(c[n>>2]|0)?(c[(c[m>>2]|0)+4>>2]|0)==(c[j>>2]|0):0)?(d[(c[m>>2]|0)+8>>0]|0)!=(d[p>>0]|0):0)break;c[m>>2]=c[(c[m>>2]|0)+12>>2]}if((k|0)==15){c[l>>2]=0;f=c[l>>2]|0;i=o;return f|0}if((d[p>>0]|0)==2){f=(c[q>>2]|0)+22|0;b[f>>1]=e[f>>1]|64}c[l>>2]=262;f=c[l>>2]|0;i=o;return f|0}function Cy(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,j=0,k=0,l=0;f=i;i=i+224|0;g=f+220|0;h=f+216|0;l=f;k=f+212|0;j=f+208|0;c[g>>2]=a;c[h>>2]=d;dF(l|0,c[g>>2]|0,208)|0;dF(c[g>>2]|0,c[h>>2]|0,208)|0;dF(c[h>>2]|0,l|0,208)|0;c[k>>2]=c[(c[g>>2]|0)+52>>2];c[(c[g>>2]|0)+52>>2]=c[(c[h>>2]|0)+52>>2];c[(c[h>>2]|0)+52>>2]=c[k>>2];c[k>>2]=c[(c[g>>2]|0)+48>>2];c[(c[g>>2]|0)+48>>2]=c[(c[h>>2]|0)+48>>2];c[(c[h>>2]|0)+48>>2]=c[k>>2];c[j>>2]=c[(c[g>>2]|0)+168>>2];c[(c[g>>2]|0)+168>>2]=c[(c[h>>2]|0)+168>>2];c[(c[h>>2]|0)+168>>2]=c[j>>2];a=(c[h>>2]|0)+88|0;b[a>>1]=b[a>>1]&-1025|((e[(c[g>>2]|0)+88>>1]|0)>>>10&1)<<10&65535;i=f;return}function Dy(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;c[(c[d>>2]|0)+80>>2]=0;i=b;return}function Ey(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;j=i;i=i+32|0;f=j+20|0;k=j+16|0;e=j+12|0;g=j+8|0;h=j+4|0;d=j;c[f>>2]=a;c[k>>2]=b;c[e>>2]=c[(c[k>>2]|0)+16>>2];while(1){if(!(c[e>>2]|0))break;if(!((c[f>>2]|0)!=0?(c[(c[f>>2]|0)+520>>2]|0)!=0:0)){b=c[(c[e>>2]|0)+12>>2]|0;if(c[(c[e>>2]|0)+16>>2]|0)c[(c[(c[e>>2]|0)+16>>2]|0)+12>>2]=b;else{c[h>>2]=b;b=c[e>>2]|0;if(c[h>>2]|0)b=c[(c[b+12>>2]|0)+8>>2]|0;else b=c[b+8>>2]|0;c[d>>2]=b;gh((c[(c[k>>2]|0)+68>>2]|0)+56|0,c[d>>2]|0,c[h>>2]|0)|0}if(c[(c[e>>2]|0)+12>>2]|0)c[(c[(c[e>>2]|0)+12>>2]|0)+16>>2]=c[(c[e>>2]|0)+16>>2]}dx(c[f>>2]|0,c[(c[e>>2]|0)+28>>2]|0);dx(c[f>>2]|0,c[(c[e>>2]|0)+32>>2]|0);c[g>>2]=c[(c[e>>2]|0)+4>>2];Xb(c[f>>2]|0,c[e>>2]|0);c[e>>2]=c[g>>2]}i=j;return}function Fy(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=i;i=i+16|0;e=d+8|0;f=d+4|0;g=d;c[e>>2]=a;c[f>>2]=b;if(!((c[e>>2]|0)!=0?(c[(c[e>>2]|0)+520>>2]|0)!=0:0))Gy(0,c[f>>2]|0)|0;if(!(c[(c[f>>2]|0)+56>>2]|0)){i=d;return}c[g>>2]=0;while(1){if((c[g>>2]|0)>=(c[(c[f>>2]|0)+52>>2]|0))break;if((c[g>>2]|0)!=1)Xb(c[e>>2]|0,c[(c[(c[f>>2]|0)+56>>2]|0)+(c[g>>2]<<2)>>2]|0);c[g>>2]=(c[g>>2]|0)+1}Xb(c[e>>2]|0,c[(c[f>>2]|0)+56>>2]|0);i=d;return}function Gy(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;d=i;i=i+32|0;k=d+20|0;g=d+16|0;e=d+12|0;f=d+8|0;h=d+4|0;j=d;c[k>>2]=a;c[g>>2]=b;c[e>>2]=0;c[f>>2]=c[(c[g>>2]|0)+60>>2];c[(c[g>>2]|0)+60>>2]=0;while(1){if(!(c[f>>2]|0))break;c[h>>2]=c[c[f>>2]>>2];c[j>>2]=c[(c[f>>2]|0)+24>>2];if((c[h>>2]|0)==(c[k>>2]|0)){c[e>>2]=c[f>>2];c[(c[g>>2]|0)+60>>2]=c[e>>2];c[(c[e>>2]|0)+24>>2]=0}else{c[(c[f>>2]|0)+24>>2]=c[(c[h>>2]|0)+332>>2];c[(c[h>>2]|0)+332>>2]=c[f>>2]}c[f>>2]=c[j>>2]}i=d;return c[e>>2]|0}function Hy(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;i=i+16|0;j=e+12|0;g=e+8|0;h=e+4|0;f=e;c[j>>2]=a;c[g>>2]=b;c[h>>2]=d;c[f>>2]=c[(c[j>>2]|0)+8>>2];while(1){if(!(c[f>>2]|0))break;if((c[f>>2]|0)!=(c[h>>2]|0)){if(!(c[g>>2]|0))break;if((c[(c[f>>2]|0)+60>>2]|0)==(c[g>>2]|0))break}c[f>>2]=c[(c[f>>2]|0)+8>>2]}if(!(c[f>>2]|0)){j=0;i=e;return j|0}j=Iy(c[f>>2]|0,c[g>>2]|0,c[h>>2]|0)|0;i=e;return j|0}function Iy(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;h=i;i=i+32|0;f=h+16|0;l=h+12|0;j=h+8|0;k=h+4|0;g=h;c[l>>2]=a;c[j>>2]=b;c[k>>2]=e;a:while(1){do if((c[l>>2]|0)!=(c[k>>2]|0)){if(0!=(c[j>>2]|0)?(c[(c[l>>2]|0)+60>>2]|0)!=(c[j>>2]|0):0)break;e=c[l>>2]|0;if((d[(c[l>>2]|0)+73>>0]|0|0)==1){c[g>>2]=Jy(e)|0;if(c[g>>2]|0){j=7;break a}else break}else{Ky(e);break}}while(0);c[l>>2]=c[(c[l>>2]|0)+8>>2];if(!(c[l>>2]|0)){j=10;break}}if((j|0)==7){c[f>>2]=c[g>>2];a=c[f>>2]|0;i=h;return a|0}else if((j|0)==10){c[f>>2]=0;a=c[f>>2]|0;i=h;return a|0}return 0}function Jy(b){b=b|0;var e=0,f=0,g=0,h=0;g=i;i=i+16|0;e=g+8|0;f=g+4|0;h=g;c[e>>2]=b;c[f>>2]=Ly(c[e>>2]|0,(c[e>>2]|0)+48|0)|0;do if(!(d[(c[(c[e>>2]|0)+120>>2]|0)+2>>0]|0)){b=(c[e>>2]|0)+48|0;c[h>>2]=gc(c[b>>2]|0,c[b+4>>2]|0)|0;if(!(c[h>>2]|0)){c[f>>2]=7;break}c[f>>2]=My(c[e>>2]|0,0,c[(c[e>>2]|0)+48>>2]|0,c[h>>2]|0)|0;b=c[h>>2]|0;if(!(c[f>>2]|0)){c[(c[e>>2]|0)+56>>2]=b;break}else{hc(b);break}}while(0);if(c[f>>2]|0){h=c[e>>2]|0;h=h+72|0;b=a[h>>0]|0;b=b&255;b=b&-5;b=b&255;a[h>>0]=b;h=c[f>>2]|0;i=g;return h|0}Ky(c[e>>2]|0);a[(c[e>>2]|0)+73>>0]=3;h=c[e>>2]|0;h=h+72|0;b=a[h>>0]|0;b=b&255;b=b&-5;b=b&255;a[h>>0]=b;h=c[f>>2]|0;i=g;return h|0}function Ky(a){a=a|0;var d=0,e=0,f=0;e=i;i=i+16|0;d=e+4|0;f=e;c[d>>2]=a;c[f>>2]=0;while(1){if((c[f>>2]|0)>(b[(c[d>>2]|0)+76>>1]|0))break;Rk(c[(c[d>>2]|0)+120+(c[f>>2]<<2)>>2]|0);c[(c[d>>2]|0)+120+(c[f>>2]<<2)>>2]=0;c[f>>2]=(c[f>>2]|0)+1}b[(c[d>>2]|0)+76>>1]=-1;i=e;return}function Ly(f,g){f=f|0;g=g|0;var h=0,j=0,k=0,l=0;h=i;i=i+16|0;k=h+8|0;j=h+4|0;l=h;c[k>>2]=f;c[j>>2]=g;if(!(e[(c[k>>2]|0)+44>>1]|0)){c[l>>2]=b[(c[k>>2]|0)+76>>1];Mw(c[(c[k>>2]|0)+120+(c[l>>2]<<2)>>2]|0,e[(c[k>>2]|0)+78+(c[l>>2]<<1)>>1]|0,(c[k>>2]|0)+24|0);f=(c[k>>2]|0)+72|0;a[f>>0]=d[f>>0]|2}k=(c[k>>2]|0)+24|0;l=c[k+4>>2]|0;f=c[j>>2]|0;c[f>>2]=c[k>>2];c[f+4>>2]=l;i=h;return 0}function My(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;f=i;i=i+16|0;k=f+12|0;j=f+8|0;h=f+4|0;g=f;c[k>>2]=a;c[j>>2]=b;c[h>>2]=d;c[g>>2]=e;a=Lw(c[k>>2]|0,c[j>>2]|0,c[h>>2]|0,c[g>>2]|0,0)|0;i=f;return a|0}function Ny(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;m=i;i=i+32|0;h=m+20|0;j=m+16|0;l=m+12|0;k=m+8|0;n=m+4|0;g=m;c[j>>2]=a;c[l>>2]=b;c[k>>2]=d;c[n>>2]=e;c[g>>2]=f;if(c[j>>2]|0){c[h>>2]=c[j>>2];a=c[h>>2]|0;i=m;return a|0}c[l>>2]=(c[l>>2]|0)+7&-8;if(((c[c[k>>2]>>2]|0)+(c[l>>2]|0)|0)>>>0<=(c[n>>2]|0)>>>0){c[j>>2]=c[c[k>>2]>>2];a=c[k>>2]|0;c[a>>2]=(c[a>>2]|0)+(c[l>>2]|0)}else{a=c[g>>2]|0;c[a>>2]=(c[a>>2]|0)+(c[l>>2]|0)}c[h>>2]=c[j>>2];a=c[h>>2]|0;i=m;return a|0}function Oy(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;i=i+16|0;f=e+12|0;j=e+8|0;h=e+4|0;g=e;c[f>>2]=a;c[j>>2]=b;c[h>>2]=d;a:do if(c[h>>2]|0)switch(c[j>>2]|0){case-5:{Py(c[f>>2]|0,c[h>>2]|0);break a};case-6:{if(c[(c[f>>2]|0)+520>>2]|0)break a;eh(c[h>>2]|0);break a};case-11:{if(c[(c[f>>2]|0)+520>>2]|0)break a;hc(c[h>>2]|0);break a};case-8:{d=c[h>>2]|0;if(!(c[(c[f>>2]|0)+520>>2]|0)){tf(d);break a}c[g>>2]=d;if(c[(c[g>>2]|0)+24>>2]|0)Xb(c[f>>2]|0,c[(c[g>>2]|0)+20>>2]|0);Xb(c[f>>2]|0,c[g>>2]|0);break a};case-10:{if(c[(c[f>>2]|0)+520>>2]|0)break a;Nk(c[h>>2]|0);break a};case-15:case-1:case-13:case-12:{Xb(c[f>>2]|0,c[h>>2]|0);break a};default:break a}while(0);i=e;return}function Py(a,b){a=a|0;b=b|0;var d=0,f=0,g=0;d=i;i=i+16|0;f=d+4|0;g=d;c[f>>2]=a;c[g>>2]=b;if(!(c[g>>2]|0)){i=d;return}if(!((e[(c[g>>2]|0)+2>>1]|0)&16)){i=d;return}Xb(c[f>>2]|0,c[g>>2]|0);i=d;return}function Qy(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;a=(c[d>>2]|0)+12|0;c[a>>2]=(c[a>>2]|0)+1;i=b;return}function Ry(a,d){a=a|0;d=d|0;var e=0,f=0,g=0;f=i;i=i+16|0;g=f+4|0;e=f;c[g>>2]=a;c[e>>2]=d;Bd(c[g>>2]|0);g=(c[g>>2]|0)+0|0;a=(c[e>>2]|0)+0|0;d=g+40|0;do{c[g>>2]=c[a>>2];g=g+4|0;a=a+4|0}while((g|0)<(d|0));b[(c[e>>2]|0)+8>>1]=1;c[(c[e>>2]|0)+24>>2]=0;i=f;return}function Sy(){return 31224}function Ty(f){f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;l=i;i=i+64|0;k=l;g=l+60|0;j=l+56|0;w=l+52|0;p=l+48|0;s=l+44|0;t=l+40|0;q=l+36|0;u=l+32|0;h=l+28|0;n=l+24|0;o=l+20|0;m=l+16|0;v=l+12|0;x=l+8|0;r=l+4|0;c[j>>2]=f;c[p>>2]=0;c[s>>2]=0;c[t>>2]=0;c[q>>2]=c[c[j>>2]>>2];c[h>>2]=0;c[n>>2]=(c[(c[j>>2]|0)+8>>2]|0)+40;hu(c[n>>2]|0,8);c[(c[j>>2]|0)+20>>2]=0;if((c[(c[j>>2]|0)+80>>2]|0)==7){a[(c[q>>2]|0)+64>>0]=1;c[g>>2]=1;x=c[g>>2]|0;i=l;return x|0}c[w>>2]=c[(c[j>>2]|0)+32>>2];a:do if((b[(c[j>>2]|0)+88>>1]&3|0)==1){c[t>>2]=(c[(c[j>>2]|0)+8>>2]|0)+360;if(e[(c[t>>2]|0)+8>>1]&16){c[p>>2]=((c[(c[t>>2]|0)+12>>2]|0)>>>0)/4|0;c[s>>2]=c[(c[t>>2]|0)+16>>2]}c[u>>2]=0;while(1){if((c[u>>2]|0)>=(c[p>>2]|0))break a;c[w>>2]=(c[w>>2]|0)+(c[(c[(c[s>>2]|0)+(c[u>>2]<<2)>>2]|0)+4>>2]|0);c[u>>2]=(c[u>>2]|0)+1}}while(0);do{y=(c[j>>2]|0)+76|0;f=c[y>>2]|0;c[y>>2]=f+1;c[u>>2]=f;if((c[u>>2]|0)>=(c[w>>2]|0))break;if((b[(c[j>>2]|0)+88>>1]&3|0)!=2)break}while((d[(c[(c[j>>2]|0)+4>>2]|0)+((c[u>>2]|0)*20|0)>>0]|0)!=155);do if((c[u>>2]|0)>=(c[w>>2]|0)){c[(c[j>>2]|0)+80>>2]=0;c[h>>2]=101}else{if(c[(c[q>>2]|0)+240>>2]|0){c[(c[j>>2]|0)+80>>2]=9;c[h>>2]=1;x=(c[j>>2]|0)+44|0;y=c[q>>2]|0;c[k>>2]=ge(c[(c[j>>2]|0)+80>>2]|0)|0;pn(x,y,1200,k);break}if((c[u>>2]|0)<(c[(c[j>>2]|0)+32>>2]|0))c[m>>2]=(c[(c[j>>2]|0)+4>>2]|0)+((c[u>>2]|0)*20|0);else{c[u>>2]=(c[u>>2]|0)-(c[(c[j>>2]|0)+32>>2]|0);c[v>>2]=0;while(1){if((c[u>>2]|0)<(c[(c[(c[s>>2]|0)+(c[v>>2]<<2)>>2]|0)+4>>2]|0))break;c[u>>2]=(c[u>>2]|0)-(c[(c[(c[s>>2]|0)+(c[v>>2]<<2)>>2]|0)+4>>2]|0);c[v>>2]=(c[v>>2]|0)+1}c[m>>2]=(c[c[(c[s>>2]|0)+(c[v>>2]<<2)>>2]>>2]|0)+((c[u>>2]|0)*20|0)}if((b[(c[j>>2]|0)+88>>1]&3|0)==1?(b[(c[n>>2]|0)+8>>1]=4,w=c[u>>2]|0,y=c[n>>2]|0,c[y>>2]=w,c[y+4>>2]=((w|0)<0)<<31>>31,c[n>>2]=(c[n>>2]|0)+40,b[(c[n>>2]|0)+8>>1]=2562,y=XC(d[c[m>>2]>>0]|0)|0,c[(c[n>>2]|0)+16>>2]=y,y=Mb(c[(c[n>>2]|0)+16>>2]|0)|0,c[(c[n>>2]|0)+12>>2]=y,a[(c[n>>2]|0)+10>>0]=1,c[n>>2]=(c[n>>2]|0)+40,(a[(c[m>>2]|0)+1>>0]|0)==-18):0){c[x>>2]=(c[p>>2]|0)+1<<2;c[r>>2]=0;while(1){if((c[r>>2]|0)>=(c[p>>2]|0))break;if((c[(c[s>>2]|0)+(c[r>>2]<<2)>>2]|0)==(c[(c[m>>2]|0)+16>>2]|0))break;c[r>>2]=(c[r>>2]|0)+1}if((c[r>>2]|0)==(c[p>>2]|0)?0==(Dk(c[t>>2]|0,c[x>>2]|0,(c[p>>2]|0)!=0&1)|0):0){c[s>>2]=c[(c[t>>2]|0)+16>>2];x=c[(c[m>>2]|0)+16>>2]|0;y=c[p>>2]|0;c[p>>2]=y+1;c[(c[s>>2]|0)+(y<<2)>>2]=x;y=(c[t>>2]|0)+8|0;b[y>>1]=e[y>>1]|16;c[(c[t>>2]|0)+12>>2]=c[p>>2]<<2}}b[(c[n>>2]|0)+8>>1]=4;x=c[(c[m>>2]|0)+4>>2]|0;y=c[n>>2]|0;c[y>>2]=x;c[y+4>>2]=((x|0)<0)<<31>>31;c[n>>2]=(c[n>>2]|0)+40;b[(c[n>>2]|0)+8>>1]=4;y=c[(c[m>>2]|0)+8>>2]|0;x=c[n>>2]|0;c[x>>2]=y;c[x+4>>2]=((y|0)<0)<<31>>31;c[n>>2]=(c[n>>2]|0)+40;b[(c[n>>2]|0)+8>>1]=4;x=c[(c[m>>2]|0)+12>>2]|0;y=c[n>>2]|0;c[y>>2]=x;c[y+4>>2]=((x|0)<0)<<31>>31;c[n>>2]=(c[n>>2]|0)+40;if(Lp(c[n>>2]|0,32)|0){c[g>>2]=1;y=c[g>>2]|0;i=l;return y|0}b[(c[n>>2]|0)+8>>1]=514;c[o>>2]=YC(c[m>>2]|0,c[(c[n>>2]|0)+16>>2]|0,32)|0;p=c[n>>2]|0;if((c[o>>2]|0)!=(c[(c[n>>2]|0)+16>>2]|0))Vd(p,c[o>>2]|0,-1,1,0)|0;else{y=Mb(c[p+16>>2]|0)|0;c[(c[n>>2]|0)+12>>2]=y;a[(c[n>>2]|0)+10>>0]=1}c[n>>2]=(c[n>>2]|0)+40;do if((b[(c[j>>2]|0)+88>>1]&3|0)==1){if(!(Lp(c[n>>2]|0,4)|0)){b[(c[n>>2]|0)+8>>1]=514;c[(c[n>>2]|0)+12>>2]=2;y=c[(c[n>>2]|0)+16>>2]|0;c[k>>2]=d[(c[m>>2]|0)+3>>0];sc(3,y,34488,k)|0;a[(c[n>>2]|0)+10>>0]=1;c[n>>2]=(c[n>>2]|0)+40;b[(c[n>>2]|0)+8>>1]=1;break}c[g>>2]=1;y=c[g>>2]|0;i=l;return y|0}while(0);b[(c[j>>2]|0)+84>>1]=8-((b[(c[j>>2]|0)+88>>1]&3)-1<<2);c[(c[j>>2]|0)+20>>2]=(c[(c[j>>2]|0)+8>>2]|0)+40;c[(c[j>>2]|0)+80>>2]=0;c[h>>2]=100}while(0);c[g>>2]=c[h>>2];y=c[g>>2]|0;i=l;return y|0}function Uy(f){f=f|0;var g=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,$=0,aa=0,ba=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,qb=0,rb=0,tb=0,wb=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Nb=0,Ob=0,Pb=0,Qb=0,Rb=0,Tb=0,Ub=0,Vb=0,Wb=0,Yb=0,Zb=0,_b=0,$b=0,ac=0,bc=0,cc=0,dc=0,ec=0,fc=0,gc=0,hc=0,ic=0,jc=0,kc=0,lc=0,mc=0,nc=0,oc=0,pc=0,qc=0,rc=0,sc=0,uc=0,wc=0,yc=0,zc=0,Ac=0,Bc=0,Cc=0,Dc=0,Ec=0,Fc=0,Gc=0,Hc=0,Ic=0,Jc=0,Kc=0,Lc=0,Mc=0,Nc=0,Oc=0,Pc=0,Qc=0,Tc=0,Uc=0,Xc=0,Yc=0,Zc=0,_c=0,$c=0,ad=0,ed=0,fd=0,gd=0,hd=0,id=0,jd=0,kd=0,ld=0,md=0,nd=0,od=0,pd=0,qd=0,rd=0,sd=0,td=0,ud=0,vd=0,wd=0,xd=0,yd=0,zd=0,Ad=0,Cd=0,Fd=0,Gd=0,Hd=0,Jd=0,Ld=0,Md=0,Nd=0,Od=0,Pd=0,Qd=0,Rd=0,Sd=0,Td=0,Ud=0,Wd=0,Yd=0,Zd=0,$d=0,ae=0,be=0,ce=0,de=0,ee=0,fe=0,he=0,ie=0,je=0,ke=0,le=0,me=0,oe=0,pe=0,qe=0,re=0,te=0,ue=0,ve=0,we=0,xe=0,ye=0,ze=0,Ae=0,Be=0,Ce=0,De=0,Ee=0,Fe=0,Ge=0,He=0,Ie=0,Je=0,Ke=0,Le=0,Me=0,Ne=0,Oe=0,Re=0,Se=0,Ue=0,Ve=0,We=0,Xe=0,Ye=0,Ze=0,_e=0,$e=0,af=0,bf=0,cf=0,df=0,ef=0,hf=0,jf=0,lf=0,mf=0,nf=0,of=0,pf=0,qf=0,rf=0,sf=0,tf=0,uf=0,vf=0,wf=0,xf=0,yf=0,zf=0,Af=0,Bf=0,Cf=0,Df=0,Ef=0,Ff=0,Gf=0,Hf=0,If=0.0;m=i;i=i+1696|0;g=m+256|0;k=m+1464|0;n=m+1460|0;u=m+1456|0;p=m+1452|0;l=m+1448|0;q=m+1444|0;nc=m+1680|0;x=m+1679|0;qa=m+1440|0;o=m+1436|0;ba=m+1432|0;$c=m+1428|0;jf=m+1424|0;I=m+1420|0;y=m+1416|0;w=m+1412|0;ia=m+1408|0;r=m+248|0;v=m+1404|0;C=m+1400|0;j=m+1396|0;s=m+1392|0;ef=m+1388|0;z=m+1384|0;A=m+1480|0;B=m+1380|0;ea=m+1376|0;fa=m+1372|0;ga=m+1368|0;ha=m+1364|0;lf=m+1360|0;mf=m+1356|0;da=m+240|0;Y=m+1678|0;aa=m+1478|0;Z=m+1476|0;$=m+1474|0;W=m+232|0;X=m+224|0;V=m+216|0;U=m+208|0;T=m+1352|0;S=m+1348|0;P=m+1320|0;R=m+1316|0;Q=m+1312|0;E=m+200|0;H=m+192|0;F=m+184|0;G=m+1677|0;J=m+1308|0;M=m+1676|0;K=m+1472|0;L=m+1470|0;ra=m+1304|0;la=m+1300|0;oa=m+1296|0;pa=m+1292|0;ka=m+1288|0;ja=m+1284|0;ma=m+1280|0;na=m+1276|0;sa=m+1272|0;ta=m+1268|0;ua=m+1264|0;Ga=m+176|0;va=m+1260|0;ya=m+1256|0;Fa=m+1252|0;za=m+1248|0;Ea=m+1244|0;of=m+1240|0;Ba=m+1236|0;nf=m+136|0;Da=m+1232|0;pf=m+1228|0;qf=m+1224|0;xa=m+1220|0;sf=m+1216|0;wa=m+1212|0;rf=m+1208|0;Ca=m+1468|0;Aa=m+1204|0;Ha=m+1200|0;Ia=m+1675|0;Pa=m+1196|0;Ja=m+1192|0;Ra=m+128|0;Ma=m+1188|0;Qa=m+120|0;Va=m+1184|0;Sa=m+1180|0;Ka=m+1176|0;Oa=m+1172|0;Ta=m+1168|0;Ya=m+1164|0;Xa=m+1160|0;Wa=m+1156|0;La=m+1152|0;Na=m+1148|0;Ua=m+1144|0;_a=m+112|0;Za=m+1140|0;fb=m+1136|0;bb=m+1132|0;$a=m+1128|0;ab=m+1124|0;cb=m+1120|0;hb=m+1116|0;gb=m+1112|0;eb=m+1108|0;ib=m+1104|0;db=m+1100|0;jb=m+1096|0;lb=m+1092|0;kb=m+1088|0;mb=m+1084|0;nb=m+1080|0;ob=m+1076|0;tb=m+1072|0;qb=m+1068|0;rb=m+1064|0;wb=m+1060|0;Bb=m+1056|0;yf=m+1052|0;xf=m+1048|0;uf=m+1044|0;zf=m+1040|0;wf=m+1036|0;vf=m+1032|0;tf=m+1028|0;Af=m+1024|0;Cb=m+1020|0;Eb=m+1016|0;Db=m+1012|0;Fb=m+1008|0;Gb=m+1004|0;Hb=m+1e3|0;Lb=m+996|0;Ib=m+992|0;Kb=m+988|0;Nb=m+968|0;Ob=m+964|0;Jb=m+104|0;Pb=m+960|0;Tb=m+956|0;Yb=m+952|0;Rb=m+948|0;Qb=m+944|0;Ub=m+940|0;Vb=m+936|0;Wb=m+916|0;Zb=m+1484|0;$b=m+912|0;ac=m+908|0;_b=m+904|0;bc=m+96|0;cc=m+88|0;ec=m+900|0;hc=m+896|0;gc=m+892|0;dc=m+888|0;fc=m+884|0;t=m+880|0;qc=m+876|0;mc=m+80|0;ic=m+872|0;oc=m+868|0;pc=m+864|0;jc=m+860|0;kc=m+856|0;lc=m+852|0;rc=m+848|0;sc=m+844|0;wc=m+840|0;uc=m+836|0;yc=m+832|0;Bc=m+828|0;Ac=m+824|0;zc=m+820|0;Cc=m+72|0;Gc=m+816|0;Dc=m+64|0;Ec=m+812|0;Fc=m+808|0;Kc=m+804|0;Hc=m+800|0;Ic=m+796|0;Jc=m+792|0;Cf=m+788|0;Df=m+784|0;Bf=m+780|0;Lc=m+776|0;Mc=m+772|0;Nc=m+768|0;Oc=m+764|0;Qc=m+760|0;Pc=m+756|0;Yc=m+752|0;Zc=m+748|0;hf=m+744|0;_c=m+724|0;Uc=m+720|0;Xc=m+716|0;Tc=m+56|0;fd=m+712|0;ad=m+708|0;ed=m+688|0;hd=m+684|0;id=m+680|0;jd=m+676|0;gd=m+672|0;ld=m+668|0;kd=m+664|0;nd=m+660|0;od=m+656|0;md=m+652|0;rd=m+648|0;sd=m+644|0;pd=m+640|0;qd=m+624|0;vd=m+616|0;ud=m+612|0;yd=m+608|0;xd=m+604|0;td=m+600|0;wd=m+596|0;zd=m+48|0;Ad=m+592|0;Cd=m+588|0;Hd=m+584|0;Nd=m+580|0;Fd=m+576|0;Md=m+572|0;Ld=m+568|0;Gd=m+564|0;Jd=m+560|0;Od=m+556|0;Pd=m+552|0;Qd=m+548|0;Rd=m+544|0;Yd=m+540|0;Td=m+536|0;Wd=m+532|0;$d=m+528|0;Sd=m+8|0;Ud=m+500|0;Zd=m+496|0;ae=m+492|0;he=m+488|0;ie=m+476|0;je=m+472|0;de=m+468|0;be=m+464|0;ce=m+460|0;ee=m+456|0;fe=m+452|0;ke=m+448|0;oe=m+1483|0;me=m+444|0;le=m+440|0;pe=m+436|0;re=m+432|0;qe=m+428|0;ue=m+424|0;te=m+420|0;Ae=m+416|0;ze=m+412|0;xe=m+408|0;Fe=m+404|0;Ee=m+400|0;ye=m+396|0;Ce=m+392|0;ve=m+388|0;we=m+384|0;De=m+380|0;Be=m+376|0;Je=m+372|0;Ke=m+368|0;Ge=m+364|0;He=m+336|0;Ie=m+332|0;Se=m+328|0;Oe=m+324|0;Ne=m+320|0;Re=m+316|0;Le=m+312|0;Me=m+308|0;We=m+304|0;Ve=m+300|0;Xe=m+296|0;_e=m+292|0;Ue=m;Ye=m+288|0;$e=m+284|0;Ze=m+1482|0;cf=m+280|0;bf=m+276|0;af=m+272|0;df=m+268|0;c[k>>2]=f;c[n>>2]=0;c[u>>2]=c[(c[k>>2]|0)+4>>2];c[l>>2]=0;c[q>>2]=c[c[k>>2]>>2];a[nc>>0]=0;a[x>>0]=a[(c[(c[(c[q>>2]|0)+16>>2]|0)+12>>2]|0)+77>>0]|0;c[qa>>2]=0;c[o>>2]=0;c[ba>>2]=0;c[$c>>2]=c[(c[k>>2]|0)+8>>2];c[jf>>2]=0;c[I>>2]=0;c[y>>2]=0;c[w>>2]=0;c[ia>>2]=0;f=(c[q>>2]|0)+32|0;Ff=c[f+4>>2]|0;Gf=r;c[Gf>>2]=c[f>>2];c[Gf+4>>2]=Ff;a:do if((c[(c[k>>2]|0)+80>>2]|0)==7)Ef=871;else{c[(c[k>>2]|0)+80>>2]=0;Gf=(c[k>>2]|0)+136|0;c[Gf>>2]=0;c[Gf+4>>2]=0;c[(c[k>>2]|0)+20>>2]=0;c[(c[q>>2]|0)+452>>2]=0;b:do if(!(c[(c[q>>2]|0)+240>>2]|0)){do if(c[(c[q>>2]|0)+292>>2]|0){c[ba>>2]=c[(c[k>>2]|0)+124>>2];f=c[(c[q>>2]|0)+300>>2]|0;if(!(c[ba>>2]|0)){c[ba>>2]=f;break}else{c[ba>>2]=((c[ba>>2]|0)>>>0)%(f>>>0)|0;break}}while(0);c[n>>2]=c[(c[k>>2]|0)+76>>2];c:while(1){if(c[l>>2]|0)break a;if(a[(c[q>>2]|0)+64>>0]|0){Ef=871;break a}c[o>>2]=(c[o>>2]|0)+1;c[p>>2]=(c[u>>2]|0)+((c[n>>2]|0)*20|0);if(d[(c[p>>2]|0)+2>>0]&2){c[w>>2]=(c[$c>>2]|0)+((c[(c[p>>2]|0)+8>>2]|0)*40|0);if(e[(c[w>>2]|0)+8>>1]&9312)_d(c[w>>2]|0);b[(c[w>>2]|0)+8>>1]=4}d:do switch(d[c[p>>2]>>0]|0){case 27:{Ef=57;break};case 21:{c[jf>>2]=(c[$c>>2]|0)+((c[(c[p>>2]|0)+4>>2]|0)*40|0);c[v>>2]=(c[u>>2]|0)+((c[c[jf>>2]>>2]|0)*20|0);c[n>>2]=(c[(c[v>>2]|0)+8>>2]|0)-1;b[(c[jf>>2]|0)+8>>1]=128;break};case 26:{f=c[(c[p>>2]|0)+16>>2]|0;Ff=c[f+4>>2]|0;Gf=c[w>>2]|0;c[Gf>>2]=c[f>>2];c[Gf+4>>2]=Ff;break};case 133:{b[(c[w>>2]|0)+8>>1]=8;h[c[w>>2]>>3]=+h[c[(c[p>>2]|0)+16>>2]>>3];break};case 97:{a[c[p>>2]>>0]=27;Gf=Mb(c[(c[p>>2]|0)+16>>2]|0)|0;c[(c[p>>2]|0)+4>>2]=Gf;if((d[x>>0]|0)!=1){c[l>>2]=Vd(c[w>>2]|0,c[(c[p>>2]|0)+16>>2]|0,-1,1,0)|0;if((c[l>>2]|0)==18){Ef=870;break c}if(yk(c[w>>2]|0,d[x>>0]|0)|0){Ef=871;break a}c[(c[w>>2]|0)+24>>2]=0;Gf=(c[w>>2]|0)+8|0;b[Gf>>1]=e[Gf>>1]|2048;if((a[(c[p>>2]|0)+1>>0]|0)==-1)Xb(c[q>>2]|0,c[(c[p>>2]|0)+16>>2]|0);a[(c[p>>2]|0)+1>>0]=-1;c[(c[p>>2]|0)+16>>2]=c[(c[w>>2]|0)+16>>2];c[(c[p>>2]|0)+4>>2]=c[(c[w>>2]|0)+12>>2]}if((c[(c[p>>2]|0)+4>>2]|0)>(c[(c[q>>2]|0)+88>>2]|0)){Ef=870;break c}else Ef=57;break};case 16:{c[n>>2]=(c[(c[p>>2]|0)+8>>2]|0)-1;Ef=16;break};case 25:{Ff=c[(c[p>>2]|0)+4>>2]|0;Gf=c[w>>2]|0;c[Gf>>2]=Ff;c[Gf+4>>2]=((Ff|0)<0)<<31>>31;break};case 23:{c[y>>2]=(c[$c>>2]|0)+((c[(c[p>>2]|0)+12>>2]|0)*40|0);if(e[(c[y>>2]|0)+8>>1]&1)Ef=28;break};case 28:{c[z>>2]=(c[(c[p>>2]|0)+12>>2]|0)-(c[(c[p>>2]|0)+8>>2]|0);Gf=((c[(c[p>>2]|0)+4>>2]|0)!=0?257:1)&65535;b[A>>1]=Gf;b[(c[w>>2]|0)+8>>1]=Gf;while(1){if((c[z>>2]|0)<=0)break d;c[w>>2]=(c[w>>2]|0)+40;_d(c[w>>2]|0);b[(c[w>>2]|0)+8>>1]=b[A>>1]|0;c[z>>2]=(c[z>>2]|0)+ -1}};case 30:{Vd(c[w>>2]|0,c[(c[p>>2]|0)+16>>2]|0,c[(c[p>>2]|0)+4>>2]|0,0,0)|0;a[(c[w>>2]|0)+10>>0]=a[x>>0]|0;break};case 31:{c[B>>2]=(c[(c[k>>2]|0)+60>>2]|0)+(((c[(c[p>>2]|0)+4>>2]|0)-1|0)*40|0);if(az(c[B>>2]|0)|0){Ef=870;break c}fn(c[w>>2]|0,c[B>>2]|0,2048);break};case 22:{c[jf>>2]=(c[$c>>2]|0)+((c[(c[p>>2]|0)+4>>2]|0)*40|0);b[(c[jf>>2]|0)+8>>1]=4;c[C>>2]=c[c[jf>>2]>>2];Ff=c[n>>2]|0;Gf=c[jf>>2]|0;c[Gf>>2]=Ff;c[Gf+4>>2]=((Ff|0)<0)<<31>>31;c[n>>2]=c[C>>2];break};case 17:{c[jf>>2]=(c[$c>>2]|0)+((c[(c[p>>2]|0)+4>>2]|0)*40|0);b[(c[jf>>2]|0)+8>>1]=4;Ff=c[n>>2]|0;Gf=c[jf>>2]|0;c[Gf>>2]=Ff;c[Gf+4>>2]=((Ff|0)<0)<<31>>31;c[n>>2]=(c[(c[p>>2]|0)+8>>2]|0)-1;break};case 88:case 87:case 86:case 85:{c[jf>>2]=(c[$c>>2]|0)+((c[(c[p>>2]|0)+4>>2]|0)*40|0);c[I>>2]=(c[$c>>2]|0)+((c[(c[p>>2]|0)+8>>2]|0)*40|0);c[w>>2]=(c[$c>>2]|0)+((c[(c[p>>2]|0)+12>>2]|0)*40|0);if((e[(c[jf>>2]|0)+8>>1]|e[(c[I>>2]|0)+8>>1])&1){_d(c[w>>2]|0);break d}Gf=Kd(c[I>>2]|0)|0;Ff=E;c[Ff>>2]=Gf;c[Ff+4>>2]=D;Ff=Kd(c[jf>>2]|0)|0;Gf=F;c[Gf>>2]=Ff;c[Gf+4>>2]=D;a[G>>0]=a[c[p>>2]>>0]|0;do if((d[G>>0]|0)!=85){Ff=F;f=c[Ff>>2]|0;Ff=c[Ff+4>>2]|0;if((d[G>>0]|0)==86){Hf=E;Ff=c[Hf+4>>2]|Ff;Gf=E;c[Gf>>2]=c[Hf>>2]|f;c[Gf+4>>2]=Ff;break}if((f|0)!=0|(Ff|0)!=0){if((c[F+4>>2]|0)<0){a[G>>0]=175-(d[G>>0]|0);Hf=F;Gf=c[Hf+4>>2]|0;if((Gf|0)>-1|(Gf|0)==-1&(c[Hf>>2]|0)>>>0>4294967232){Ff=F;Ff=ZE(0,0,c[Ff>>2]|0,c[Ff+4>>2]|0)|0;f=D}else{Ff=64;f=0}Hf=F;c[Hf>>2]=Ff;c[Hf+4>>2]=f}Hf=F;Gf=c[Hf+4>>2]|0;if((Gf|0)>0|(Gf|0)==0&(c[Hf>>2]|0)>>>0>=64){Hf=E;Gf=c[Hf+4>>2]|0;if((Gf|0)>0|(Gf|0)==0&(c[Hf>>2]|0)>>>0>=0)f=1;else f=(d[G>>0]|0)==87;Gf=f?0:-1;Hf=E;c[Hf>>2]=Gf;c[Hf+4>>2]=((Gf|0)<0)<<31>>31;break}c[H+0>>2]=c[E+0>>2];c[H+4>>2]=c[E+4>>2];f=c[F>>2]|0;Ff=H;Gf=c[Ff>>2]|0;Ff=c[Ff+4>>2]|0;if((d[G>>0]|0)!=87){Gf=cF(Gf|0,Ff|0,f|0)|0;Hf=H;c[Hf>>2]=Gf;c[Hf+4>>2]=D;if((c[E+4>>2]|0)<0){Ff=F;Ff=ZE(64,0,c[Ff>>2]|0,c[Ff+4>>2]|0)|0;Ff=$E(-1,-1,Ff|0)|0;f=H;Gf=c[f+4>>2]|D;Hf=H;c[Hf>>2]=c[f>>2]|Ff;c[Hf+4>>2]=Gf}}else{Gf=$E(Gf|0,Ff|0,f|0)|0;Hf=H;c[Hf>>2]=Gf;c[Hf+4>>2]=D}c[E+0>>2]=c[H+0>>2];c[E+4>>2]=c[H+4>>2]}}else{Ff=F;f=E;Gf=c[f+4>>2]&c[Ff+4>>2];Hf=E;c[Hf>>2]=c[f>>2]&c[Ff>>2];c[Hf+4>>2]=Gf}while(0);Ff=E;Gf=c[Ff+4>>2]|0;Hf=c[w>>2]|0;c[Hf>>2]=c[Ff>>2];c[Hf+4>>2]=Gf;b[(c[w>>2]|0)+8>>1]=e[(c[w>>2]|0)+8>>1]&-16896|4;break};case 29:{c[w>>2]=(c[$c>>2]|0)+((c[(c[p>>2]|0)+4>>2]|0)*40|0);b[(c[w>>2]|0)+8>>1]=(e[(c[w>>2]|0)+8>>1]|1)&-129;break};case 24:{Ef=28;break};case 37:{c[jf>>2]=(c[$c>>2]|0)+((c[(c[p>>2]|0)+4>>2]|0)*40|0);Mp(c[jf>>2]|0)|0;Gf=c[(c[p>>2]|0)+8>>2]|0;Hf=c[jf>>2]|0;Ff=Hf;Gf=bF(c[Ff>>2]|0,c[Ff+4>>2]|0,Gf|0,((Gf|0)<0)<<31>>31|0)|0;c[Hf>>2]=Gf;c[Hf+4>>2]=D;break};case 38:{c[jf>>2]=(c[$c>>2]|0)+((c[(c[p>>2]|0)+4>>2]|0)*40|0);if((e[(c[jf>>2]|0)+8>>1]&4|0)==0?(Jp(c[jf>>2]|0,67,a[x>>0]|0),(e[(c[jf>>2]|0)+8>>1]&4|0)==0):0){if(!(c[(c[p>>2]|0)+8>>2]|0)){Ef=167;break c}c[n>>2]=(c[(c[p>>2]|0)+8>>2]|0)-1;break d}b[(c[jf>>2]|0)+8>>1]=e[(c[jf>>2]|0)+8>>1]&-16896|4;break};case 40:{c[jf>>2]=(c[$c>>2]|0)+((c[(c[p>>2]|0)+4>>2]|0)*40|0);if(e[(c[jf>>2]|0)+8>>1]&16384)f=Dd(c[jf>>2]|0)|0;else f=0;c[l>>2]=f;Cp(c[jf>>2]|0,c[(c[p>>2]|0)+8>>2]&255,a[x>>0]|0);break};case 39:{c[jf>>2]=(c[$c>>2]|0)+((c[(c[p>>2]|0)+4>>2]|0)*40|0);if(e[(c[jf>>2]|0)+8>>1]&4)Np(c[jf>>2]|0)|0;break};case 83:case 80:case 81:case 82:case 78:case 79:{c[jf>>2]=(c[$c>>2]|0)+((c[(c[p>>2]|0)+4>>2]|0)*40|0);c[y>>2]=(c[$c>>2]|0)+((c[(c[p>>2]|0)+12>>2]|0)*40|0);b[K>>1]=b[(c[jf>>2]|0)+8>>1]|0;b[L>>1]=b[(c[y>>2]|0)+8>>1]|0;f=d[(c[p>>2]|0)+3>>0]|0;do if((e[K>>1]|e[L>>1])&1){if(!(f&128)){f=c[p>>2]|0;if(d[(c[p>>2]|0)+3>>0]&32){c[w>>2]=(c[$c>>2]|0)+((c[f+8>>2]|0)*40|0);b[(c[w>>2]|0)+8>>1]=e[(c[w>>2]|0)+8>>1]&-16896|1;break d}if(!(d[f+3>>0]&16))break d;c[n>>2]=(c[(c[p>>2]|0)+8>>2]|0)-1;break d}if(((e[K>>1]&1|0)!=0?(e[L>>1]&1|0)!=0:0)?(e[L>>1]&256|0)==0:0){c[J>>2]=0;break}c[J>>2]=1}else{a[M>>0]=f&71;if((a[M>>0]|0)>=67){if((e[(c[jf>>2]|0)+8>>1]&14|0)==2)Pe(c[jf>>2]|0,0);if((e[(c[y>>2]|0)+8>>1]&14|0)==2)Pe(c[y>>2]|0,0)}else if((a[M>>0]|0)==66){if((e[(c[jf>>2]|0)+8>>1]&2|0)==0?(e[(c[jf>>2]|0)+8>>1]&12|0)!=0:0)Kp(c[jf>>2]|0,a[x>>0]|0,1)|0;if((e[(c[y>>2]|0)+8>>1]&2|0)==0?(e[(c[y>>2]|0)+8>>1]&12|0)!=0:0)Kp(c[y>>2]|0,a[x>>0]|0,1)|0}if(e[(c[jf>>2]|0)+8>>1]&16384){Dd(c[jf>>2]|0)|0;b[K>>1]=e[K>>1]&-16385}if(e[(c[y>>2]|0)+8>>1]&16384){Dd(c[y>>2]|0)|0;b[L>>1]=e[L>>1]&-16385}if(a[(c[q>>2]|0)+64>>0]|0){Ef=871;break a}c[J>>2]=bn(c[y>>2]|0,c[jf>>2]|0,c[(c[p>>2]|0)+16>>2]|0)|0}while(0);switch(d[c[p>>2]>>0]|0){case 79:{c[J>>2]=(c[J>>2]|0)==0&1;break};case 78:{c[J>>2]=(c[J>>2]|0)!=0&1;break};case 81:{c[J>>2]=(c[J>>2]|0)<=0&1;break};case 80:{c[J>>2]=(c[J>>2]|0)>0&1;break};case 82:{c[J>>2]=(c[J>>2]|0)<0&1;break};default:c[J>>2]=(c[J>>2]|0)>=0&1}if(!(d[(c[p>>2]|0)+3>>0]&32)){if(c[J>>2]|0)c[n>>2]=(c[(c[p>>2]|0)+8>>2]|0)-1}else{c[w>>2]=(c[$c>>2]|0)+((c[(c[p>>2]|0)+8>>2]|0)*40|0);b[(c[w>>2]|0)+8>>1]=e[(c[w>>2]|0)+8>>1]&-16896|4;Gf=c[J>>2]|0;Hf=c[w>>2]|0;c[Hf>>2]=Gf;c[Hf+4>>2]=((Gf|0)<0)<<31>>31}b[(c[jf>>2]|0)+8>>1]=b[K>>1]|0;b[(c[y>>2]|0)+8>>1]=b[L>>1]|0;break};case 1:{c[Q>>2]=d[(c[p>>2]|0)+3>>0];c[R>>2]=c[(c[k>>2]|0)+12>>2];c[P>>2]=(c[$c>>2]|0)+((c[(c[p>>2]|0)+12>>2]|0)*40|0);c[S>>2]=(c[$c>>2]|0)+((c[(c[p>>2]|0)+8>>2]|0)*40|0);c[T>>2]=0;while(1){if((c[T>>2]|0)>=(c[Q>>2]|0))break;c[(c[R>>2]|0)+(c[T>>2]<<2)>>2]=c[S>>2];if((e[(c[S>>2]|0)+8>>1]&4096|0)!=0?(Ak(c[S>>2]|0)|0)!=0:0){Ef=871;break a}c[T>>2]=(c[T>>2]|0)+1;c[S>>2]=(c[S>>2]|0)+40}c[P+4>>2]=c[(c[p>>2]|0)+16>>2];c[P+16>>2]=c[n>>2];c[P+12>>2]=c[k>>2];b[(c[P>>2]|0)+8>>1]=e[(c[P>>2]|0)+8>>1]&-16896|1;a[P+25>>0]=0;Hf=r;Gf=c[Hf+4>>2]|0;Ff=(c[q>>2]|0)+32|0;c[Ff>>2]=c[Hf>>2];c[Ff+4>>2]=Gf;vb[c[(c[P+4>>2]|0)+12>>2]&63](P,c[Q>>2]|0,c[R>>2]|0);Ff=(c[q>>2]|0)+32|0;Gf=c[Ff+4>>2]|0;Hf=r;c[Hf>>2]=c[Ff>>2];c[Hf+4>>2]=Gf;if(a[P+25>>0]|0){if(c[P+20>>2]|0){Gf=(c[k>>2]|0)+44|0;Hf=c[q>>2]|0;c[g>>2]=Ed(c[P>>2]|0)|0;pn(Gf,Hf,1200,g);c[l>>2]=c[P+20>>2]}hz(c[k>>2]|0,c[n>>2]|0,c[(c[p>>2]|0)+4>>2]|0)}yk(c[P>>2]|0,d[x>>0]|0)|0;if(az(c[P>>2]|0)|0){Ef=870;break c}break};case 36:{if(c[(c[p>>2]|0)+4>>2]|0)Xd((c[$c>>2]|0)+((c[(c[p>>2]|0)+4>>2]|0)*40|0)|0,0,0);break};case 93:case 92:case 91:case 90:case 89:{c[jf>>2]=(c[$c>>2]|0)+((c[(c[p>>2]|0)+4>>2]|0)*40|0);b[Z>>1]=ez(c[jf>>2]|0)|0;c[I>>2]=(c[$c>>2]|0)+((c[(c[p>>2]|0)+8>>2]|0)*40|0);b[$>>1]=ez(c[I>>2]|0)|0;c[w>>2]=(c[$c>>2]|0)+((c[(c[p>>2]|0)+12>>2]|0)*40|0);b[aa>>1]=e[(c[jf>>2]|0)+8>>1]|e[(c[I>>2]|0)+8>>1];e:do if(!(e[aa>>1]&1)){do if(e[Z>>1]&e[$>>1]&4){f=c[jf>>2]|0;Hf=c[f+4>>2]|0;Gf=W;c[Gf>>2]=c[f>>2];c[Gf+4>>2]=Hf;Gf=c[I>>2]|0;Hf=c[Gf+4>>2]|0;f=X;c[f>>2]=c[Gf>>2];c[f+4>>2]=Hf;a[Y>>0]=1;f=d[c[p>>2]>>0]|0;if((f|0)==89){Hf=W;if(_m(X,c[Hf>>2]|0,c[Hf+4>>2]|0)|0)break}else if((f|0)==90){Hf=W;if(fz(X,c[Hf>>2]|0,c[Hf+4>>2]|0)|0)break}else if((f|0)==91){Hf=W;if(gz(X,c[Hf>>2]|0,c[Hf+4>>2]|0)|0)break}else if((f|0)==92){Hf=W;if((c[Hf>>2]|0)==0&(c[Hf+4>>2]|0)==0)break e;Gf=W;Hf=X;if(((c[Gf>>2]|0)==-1?(c[Gf+4>>2]|0)==-1:0)&((c[Hf>>2]|0)==0?(c[Hf+4>>2]|0)==-2147483648:0))break;Gf=W;Hf=X;Gf=jF(c[Hf>>2]|0,c[Hf+4>>2]|0,c[Gf>>2]|0,c[Gf+4>>2]|0)|0;Hf=X;c[Hf>>2]=Gf;c[Hf+4>>2]=D}else{Hf=W;if((c[Hf>>2]|0)==0&(c[Hf+4>>2]|0)==0)break e;Hf=W;if((c[Hf>>2]|0)==-1?(c[Hf+4>>2]|0)==-1:0){Hf=W;c[Hf>>2]=1;c[Hf+4>>2]=0}Gf=W;Hf=X;Gf=kF(c[Hf>>2]|0,c[Hf+4>>2]|0,c[Gf>>2]|0,c[Gf+4>>2]|0)|0;Hf=X;c[Hf>>2]=Gf;c[Hf+4>>2]=D}Ff=X;Gf=c[Ff+4>>2]|0;Hf=c[w>>2]|0;c[Hf>>2]=c[Ff>>2];c[Hf+4>>2]=Gf;b[(c[w>>2]|0)+8>>1]=e[(c[w>>2]|0)+8>>1]&-16896|4;break d}else a[Y>>0]=0;while(0);h[V>>3]=+Id(c[jf>>2]|0);h[U>>3]=+Id(c[I>>2]|0);f=d[c[p>>2]>>0]|0;if((f|0)==89)h[U>>3]=+h[U>>3]+ +h[V>>3];else if((f|0)==90)h[U>>3]=+h[U>>3]- +h[V>>3];else if((f|0)==91)h[U>>3]=+h[U>>3]*+h[V>>3];else if((f|0)==92){if(+h[V>>3]==0.0)break;h[U>>3]=+h[U>>3]/+h[V>>3]}else{If=+h[V>>3];Hf=+O(If)>=1.0?If>0.0?(ca(+N(If/4294967296.0),4294967295.0)|0)>>>0:~~+_((If- +(~~If>>>0))/4294967296.0)>>>0:0;Gf=W;c[Gf>>2]=~~If>>>0;c[Gf+4>>2]=Hf;If=+h[U>>3];Gf=+O(If)>=1.0?If>0.0?(ca(+N(If/4294967296.0),4294967295.0)|0)>>>0:~~+_((If- +(~~If>>>0))/4294967296.0)>>>0:0;Hf=X;c[Hf>>2]=~~If>>>0;c[Hf+4>>2]=Gf;Hf=W;if((c[Hf>>2]|0)==0&(c[Hf+4>>2]|0)==0)break;Hf=W;if((c[Hf>>2]|0)==-1?(c[Hf+4>>2]|0)==-1:0){Hf=W;c[Hf>>2]=1;c[Hf+4>>2]=0}Gf=X;Hf=W;Hf=kF(c[Gf>>2]|0,c[Gf+4>>2]|0,c[Hf>>2]|0,c[Hf+4>>2]|0)|0;h[U>>3]=+(Hf>>>0)+4294967296.0*+(D|0)}if(!($w(+h[U>>3])|0)){h[c[w>>2]>>3]=+h[U>>3];b[(c[w>>2]|0)+8>>1]=e[(c[w>>2]|0)+8>>1]&-16896|8;if((a[Y>>0]|0)!=0?1:((e[Z>>1]|e[$>>1])&8|0)!=0)break d;Hp(c[w>>2]|0);break d}}while(0);_d(c[w>>2]|0);break};case 34:{c[jf>>2]=(c[$c>>2]|0)+((c[(c[p>>2]|0)+4>>2]|0)*40|0);c[w>>2]=(c[$c>>2]|0)+((c[(c[p>>2]|0)+8>>2]|0)*40|0);fn(c[w>>2]|0,c[jf>>2]|0,4096);break};case 35:{if(((c[(c[q>>2]|0)+292>>2]|0)!=0?(c[o>>2]|0)>>>0>=(c[ba>>2]|0)>>>0:0)?(ub[c[(c[q>>2]|0)+292>>2]&31](c[(c[q>>2]|0)+296>>2]|0)|0)!=0:0){Ef=76;break c}Hf=bz(c[k>>2]|0,0)|0;c[l>>2]=Hf;if(0==(Hf|0)?(c[l>>2]=cz(c[k>>2]|0,1)|0,(c[l>>2]|0)==0):0){Ef=79;break c}break};case 94:{c[jf>>2]=(c[$c>>2]|0)+((c[(c[p>>2]|0)+4>>2]|0)*40|0);c[I>>2]=(c[$c>>2]|0)+((c[(c[p>>2]|0)+8>>2]|0)*40|0);c[w>>2]=(c[$c>>2]|0)+((c[(c[p>>2]|0)+12>>2]|0)*40|0);if((e[(c[jf>>2]|0)+8>>1]|e[(c[I>>2]|0)+8>>1])&1){_d(c[w>>2]|0);break d}if((e[(c[jf>>2]|0)+8>>1]&16384|0)!=0?(Dd(c[jf>>2]|0)|0)!=0:0){Ef=871;break a}if((e[(c[I>>2]|0)+8>>1]&16384|0)!=0?(Dd(c[I>>2]|0)|0)!=0:0){Ef=871;break a}if((e[(c[jf>>2]|0)+8>>1]&18|0)==0?(Kp(c[jf>>2]|0,a[x>>0]|0,0)|0)!=0:0){Ef=871;break a}if((e[(c[I>>2]|0)+8>>1]&18|0)==0?(Kp(c[I>>2]|0,a[x>>0]|0,0)|0)!=0:0){Ef=871;break a}f=(c[(c[jf>>2]|0)+12>>2]|0)+(c[(c[I>>2]|0)+12>>2]|0)|0;Gf=da;c[Gf>>2]=f;c[Gf+4>>2]=((f|0)<0)<<31>>31;Gf=da;f=c[Gf+4>>2]|0;Hf=c[(c[q>>2]|0)+88>>2]|0;Ff=((Hf|0)<0)<<31>>31;if((f|0)>(Ff|0)|((f|0)==(Ff|0)?(c[Gf>>2]|0)>>>0>Hf>>>0:0)){Ef=870;break c}if(Dk(c[w>>2]|0,(c[da>>2]|0)+2|0,(c[w>>2]|0)==(c[I>>2]|0)&1)|0){Ef=871;break a}b[(c[w>>2]|0)+8>>1]=e[(c[w>>2]|0)+8>>1]&-16896|2;if((c[w>>2]|0)!=(c[I>>2]|0))dF(c[(c[w>>2]|0)+16>>2]|0,c[(c[I>>2]|0)+16>>2]|0,c[(c[I>>2]|0)+12>>2]|0)|0;dF((c[(c[w>>2]|0)+16>>2]|0)+(c[(c[I>>2]|0)+12>>2]|0)|0,c[(c[jf>>2]|0)+16>>2]|0,c[(c[jf>>2]|0)+12>>2]|0)|0;a[(c[(c[w>>2]|0)+16>>2]|0)+(c[da>>2]|0)>>0]=0;Hf=da;Hf=bF(c[Hf>>2]|0,c[Hf+4>>2]|0,1,0)|0;a[(c[(c[w>>2]|0)+16>>2]|0)+Hf>>0]=0;Hf=(c[w>>2]|0)+8|0;b[Hf>>1]=e[Hf>>1]|512;c[(c[w>>2]|0)+12>>2]=c[da>>2];a[(c[w>>2]|0)+10>>0]=a[x>>0]|0;break};case 20:{c[w>>2]=(c[$c>>2]|0)+((c[(c[p>>2]|0)+4>>2]|0)*40|0);Gf=(c[(c[p>>2]|0)+12>>2]|0)-1|0;Hf=c[w>>2]|0;c[Hf>>2]=Gf;c[Hf+4>>2]=((Gf|0)<0)<<31>>31;b[(c[w>>2]|0)+8>>1]=4;if(c[(c[p>>2]|0)+8>>2]|0)c[n>>2]=(c[(c[p>>2]|0)+8>>2]|0)-1;break};case 18:{c[jf>>2]=(c[$c>>2]|0)+((c[(c[p>>2]|0)+4>>2]|0)*40|0);c[n>>2]=c[c[jf>>2]>>2];b[(c[jf>>2]|0)+8>>1]=128;break};case 32:{c[ea>>2]=c[(c[p>>2]|0)+12>>2];c[fa>>2]=c[(c[p>>2]|0)+4>>2];c[ga>>2]=c[(c[p>>2]|0)+8>>2];c[jf>>2]=(c[$c>>2]|0)+((c[fa>>2]|0)*40|0);c[w>>2]=(c[$c>>2]|0)+((c[ga>>2]|0)*40|0);do{Ry(c[w>>2]|0,c[jf>>2]|0);c[jf>>2]=(c[jf>>2]|0)+40;c[w>>2]=(c[w>>2]|0)+40;Hf=(c[ea>>2]|0)+ -1|0;c[ea>>2]=Hf}while((Hf|0)!=0);break};case 33:{c[ha>>2]=c[(c[p>>2]|0)+12>>2];c[jf>>2]=(c[$c>>2]|0)+((c[(c[p>>2]|0)+4>>2]|0)*40|0);c[w>>2]=(c[$c>>2]|0)+((c[(c[p>>2]|0)+8>>2]|0)*40|0);while(1){fn(c[w>>2]|0,c[jf>>2]|0,4096);if((e[(c[w>>2]|0)+8>>1]&4096|0)!=0?(Ak(c[w>>2]|0)|0)!=0:0){Ef=871;break a}Hf=c[ha>>2]|0;c[ha>>2]=Hf+ -1;if(!Hf)break d;c[w>>2]=(c[w>>2]|0)+40;c[jf>>2]=(c[jf>>2]|0)+40}};case 41:{c[ia>>2]=c[(c[p>>2]|0)+16>>2];break};case 42:{if(!(d[(c[p>>2]|0)+3>>0]&1))c[ia>>2]=0;c[ra>>2]=c[(c[p>>2]|0)+12>>2];c[ka>>2]=c[(c[p>>2]|0)+16>>2];c[oa>>2]=c[(c[p>>2]|0)+4>>2];c[pa>>2]=c[(c[p>>2]|0)+8>>2];c[la>>2]=0;while(1){if((c[la>>2]|0)>=(c[ra>>2]|0))break;f=c[la>>2]|0;if(c[ia>>2]|0)f=c[(c[ia>>2]|0)+(f<<2)>>2]|0;c[ja>>2]=f;c[ma>>2]=c[(c[ka>>2]|0)+20+(c[la>>2]<<2)>>2];c[na>>2]=d[(c[(c[ka>>2]|0)+16>>2]|0)+(c[la>>2]|0)>>0];c[qa>>2]=bn((c[$c>>2]|0)+(((c[oa>>2]|0)+(c[ja>>2]|0)|0)*40|0)|0,(c[$c>>2]|0)+(((c[pa>>2]|0)+(c[ja>>2]|0)|0)*40|0)|0,c[ma>>2]|0)|0;if(c[qa>>2]|0){Ef=224;break}c[la>>2]=(c[la>>2]|0)+1}if((Ef|0)==224?(Ef=0,(c[na>>2]|0)!=0):0)c[qa>>2]=0-(c[qa>>2]|0);c[ia>>2]=0;break};case 43:{if((c[qa>>2]|0)<0){c[n>>2]=(c[(c[p>>2]|0)+4>>2]|0)-1;break d}f=c[p>>2]|0;if(!(c[qa>>2]|0)){c[n>>2]=(c[f+8>>2]|0)-1;break d}else{c[n>>2]=(c[f+12>>2]|0)-1;break d}};case 71:case 72:{c[jf>>2]=(c[$c>>2]|0)+((c[(c[p>>2]|0)+4>>2]|0)*40|0);if(e[(c[jf>>2]|0)+8>>1]&1)c[sa>>2]=2;else{Hf=Kd(c[jf>>2]|0)|0;c[sa>>2]=((Hf|0)!=0|(D|0)!=0)&1}c[I>>2]=(c[$c>>2]|0)+((c[(c[p>>2]|0)+8>>2]|0)*40|0);if(e[(c[I>>2]|0)+8>>1]&1)c[ta>>2]=2;else{Hf=Kd(c[I>>2]|0)|0;c[ta>>2]=((Hf|0)!=0|(D|0)!=0)&1}f=((c[sa>>2]|0)*3|0)+(c[ta>>2]|0)|0;if((d[c[p>>2]>>0]|0)==72)c[sa>>2]=d[31408+f>>0];else c[sa>>2]=d[31424+f>>0];c[w>>2]=(c[$c>>2]|0)+((c[(c[p>>2]|0)+12>>2]|0)*40|0);if((c[sa>>2]|0)==2){b[(c[w>>2]|0)+8>>1]=e[(c[w>>2]|0)+8>>1]&-16896|1;break d}else{Gf=c[sa>>2]|0;Hf=c[w>>2]|0;c[Hf>>2]=Gf;c[Hf+4>>2]=((Gf|0)<0)<<31>>31;b[(c[w>>2]|0)+8>>1]=e[(c[w>>2]|0)+8>>1]&-16896|4;break d}};case 19:{c[jf>>2]=(c[$c>>2]|0)+((c[(c[p>>2]|0)+4>>2]|0)*40|0);c[w>>2]=(c[$c>>2]|0)+((c[(c[p>>2]|0)+8>>2]|0)*40|0);_d(c[w>>2]|0);if(!(e[(c[jf>>2]|0)+8>>1]&1)){b[(c[w>>2]|0)+8>>1]=4;Gf=Kd(c[jf>>2]|0)|0;Gf=(((Gf|0)!=0|(D|0)!=0)^1)&1;Hf=c[w>>2]|0;c[Hf>>2]=Gf;c[Hf+4>>2]=((Gf|0)<0)<<31>>31}break};case 96:{c[jf>>2]=(c[$c>>2]|0)+((c[(c[p>>2]|0)+4>>2]|0)*40|0);c[w>>2]=(c[$c>>2]|0)+((c[(c[p>>2]|0)+8>>2]|0)*40|0);_d(c[w>>2]|0);if(!(e[(c[jf>>2]|0)+8>>1]&1)){b[(c[w>>2]|0)+8>>1]=4;Gf=Kd(c[jf>>2]|0)|0;Hf=c[w>>2]|0;c[Hf>>2]=~Gf;c[Hf+4>>2]=~D}break};case 44:{f=c[p>>2]|0;if(a[(c[(c[k>>2]|0)+200>>2]|0)+(c[(c[p>>2]|0)+4>>2]|0)>>0]|0){c[n>>2]=(c[f+8>>2]|0)-1;break d}else{a[(c[(c[k>>2]|0)+200>>2]|0)+(c[f+4>>2]|0)>>0]=1;break d}};case 46:case 45:{c[jf>>2]=(c[$c>>2]|0)+((c[(c[p>>2]|0)+4>>2]|0)*40|0);if(!(e[(c[jf>>2]|0)+8>>1]&1)){c[ua>>2]=+Id(c[jf>>2]|0)!=0.0&1;if((d[c[p>>2]>>0]|0)==46)c[ua>>2]=((c[ua>>2]|0)!=0^1)&1}else c[ua>>2]=c[(c[p>>2]|0)+12>>2];if(c[ua>>2]|0)c[n>>2]=(c[(c[p>>2]|0)+8>>2]|0)-1;break};case 76:{c[jf>>2]=(c[$c>>2]|0)+((c[(c[p>>2]|0)+4>>2]|0)*40|0);if(e[(c[jf>>2]|0)+8>>1]&1)c[n>>2]=(c[(c[p>>2]|0)+8>>2]|0)-1;break};case 77:{c[jf>>2]=(c[$c>>2]|0)+((c[(c[p>>2]|0)+4>>2]|0)*40|0);if(!(e[(c[jf>>2]|0)+8>>1]&1))c[n>>2]=(c[(c[p>>2]|0)+8>>2]|0)-1;break};case 47:{c[va>>2]=c[(c[p>>2]|0)+8>>2];c[Ba>>2]=(c[$c>>2]|0)+((c[(c[p>>2]|0)+12>>2]|0)*40|0);c[ya>>2]=c[(c[(c[k>>2]|0)+56>>2]|0)+(c[(c[p>>2]|0)+4>>2]<<2)>>2];c[za>>2]=c[(c[ya>>2]|0)+80>>2];c[Fa>>2]=c[c[ya>>2]>>2];c[l>>2]=iz(c[ya>>2]|0)|0;if(c[l>>2]|0)break c;f=c[ya>>2]|0;f:do if((c[(c[ya>>2]|0)+60>>2]|0)==(c[(c[k>>2]|0)+72>>2]|0))if((e[f+22>>1]|0)<=(c[va>>2]|0))Ef=284;else Ef=308;else{do if(a[f+25>>0]|0)if(!(c[Fa>>2]|0)){c[Aa>>2]=(c[$c>>2]|0)+((c[(c[ya>>2]|0)+16>>2]|0)*40|0);Hf=c[(c[Aa>>2]|0)+12>>2]|0;c[wa>>2]=Hf;c[(c[ya>>2]|0)+68>>2]=Hf;c[(c[ya>>2]|0)+64>>2]=Hf;c[(c[ya>>2]|0)+76>>2]=c[(c[Aa>>2]|0)+16>>2];break}else{_d(c[Ba>>2]|0);break f}else{f=c[Fa>>2]|0;if(!((d[(c[ya>>2]|0)+27>>0]|0)>>>2&1)){Ly(f,Ga)|0;Hf=jz(c[Fa>>2]|0,wa)|0;c[(c[ya>>2]|0)+76>>2]=Hf;c[(c[ya>>2]|0)+64>>2]=c[Ga>>2]}else{kz(f,(c[ya>>2]|0)+64|0)|0;Hf=lz(c[Fa>>2]|0,wa)|0;c[(c[ya>>2]|0)+76>>2]=Hf}if((c[(c[ya>>2]|0)+64>>2]|0)>>>0<=(c[wa>>2]|0)>>>0)c[(c[ya>>2]|0)+68>>2]=c[(c[ya>>2]|0)+64>>2];else c[(c[ya>>2]|0)+68>>2]=c[wa>>2];if((c[(c[ya>>2]|0)+64>>2]|0)>>>0>(c[(c[q>>2]|0)+88>>2]|0)>>>0){Ef=870;break c}}while(0);c[(c[ya>>2]|0)+60>>2]=c[(c[k>>2]|0)+72>>2];f=c[(c[ya>>2]|0)+76>>2]|0;if((d[c[(c[ya>>2]|0)+76>>2]>>0]|0)<128){c[xa>>2]=d[f>>0];f=1}else f=(Rw(f,xa)|0)&255;c[(c[ya>>2]|0)+72>>2]=f&255;b[(c[ya>>2]|0)+22>>1]=0;c[c[za>>2]>>2]=c[xa>>2];if((c[xa>>2]|0)>>>0<=98307?(c[xa>>2]|0)>>>0<=(c[(c[ya>>2]|0)+64>>2]|0)>>>0:0){if((c[wa>>2]|0)>>>0>=(c[xa>>2]|0)>>>0){Ef=284;break}c[(c[ya>>2]|0)+76>>2]=0;c[(c[ya>>2]|0)+68>>2]=0;Ef=284;break}c[l>>2]=kj(71391)|0;break d}while(0);do if((Ef|0)==284){Ef=0;do if((c[(c[ya>>2]|0)+72>>2]|0)>>>0<(c[c[za>>2]>>2]|0)>>>0){if(!(c[(c[ya>>2]|0)+76>>2]|0)){Ff=nf+0|0;f=Ff+40|0;do{c[Ff>>2]=0;Ff=Ff+4|0}while((Ff|0)<(f|0));c[l>>2]=mz(c[Fa>>2]|0,0,c[c[za>>2]>>2]|0,(((d[(c[ya>>2]|0)+27>>0]|0)>>>2&1|0)!=0^1)&1,nf)|0;if(c[l>>2]|0)break d;c[Da>>2]=c[nf+16>>2]}else c[Da>>2]=c[(c[ya>>2]|0)+76>>2];c[of>>2]=e[(c[ya>>2]|0)+22>>1];c[xa>>2]=c[(c[za>>2]|0)+(c[of>>2]<<2)>>2];c[pf>>2]=(c[Da>>2]|0)+(c[(c[ya>>2]|0)+72>>2]|0);c[qf>>2]=(c[Da>>2]|0)+(c[c[za>>2]>>2]|0);do{f=c[pf>>2]|0;if((d[c[pf>>2]>>0]|0)<128){c[rf>>2]=d[f>>0];c[pf>>2]=(c[pf>>2]|0)+1}else{Hf=(Rw(f,rf)|0)&255;c[pf>>2]=(c[pf>>2]|0)+Hf}c[(c[ya>>2]|0)+84+(c[of>>2]<<2)>>2]=c[rf>>2];c[sf>>2]=Ww(c[rf>>2]|0)|0;c[xa>>2]=(c[xa>>2]|0)+(c[sf>>2]|0);if((c[xa>>2]|0)>>>0<(c[sf>>2]|0)>>>0){Ef=294;break}c[of>>2]=(c[of>>2]|0)+1;c[(c[za>>2]|0)+(c[of>>2]<<2)>>2]=c[xa>>2];if((c[of>>2]|0)>(c[va>>2]|0))break}while((c[pf>>2]|0)>>>0<(c[qf>>2]|0)>>>0);if((Ef|0)==294){Ef=0;c[pf>>2]=(c[qf>>2]|0)+1}b[(c[ya>>2]|0)+22>>1]=c[of>>2];c[(c[ya>>2]|0)+72>>2]=(c[pf>>2]|0)-(c[Da>>2]|0);if(!(c[(c[ya>>2]|0)+76>>2]|0)){Bd(nf);b[nf+8>>1]=1}if((c[pf>>2]|0)>>>0>=(c[qf>>2]|0)>>>0){if((c[pf>>2]|0)>>>0<=(c[qf>>2]|0)>>>0?(c[xa>>2]|0)==(c[(c[ya>>2]|0)+64>>2]|0):0)Ef=302}else Ef=302;if((Ef|0)==302?(Ef=0,(c[xa>>2]|0)>>>0<=(c[(c[ya>>2]|0)+64>>2]|0)>>>0):0)break;c[l>>2]=kj(71475)|0;break d}while(0);if((e[(c[ya>>2]|0)+22>>1]|0)<=(c[va>>2]|0)){f=c[Ba>>2]|0;if((a[(c[p>>2]|0)+1>>0]|0)==-8){fn(f,c[(c[p>>2]|0)+16>>2]|0,2048);break}else{_d(f);break}}else Ef=308}while(0);if((Ef|0)==308){Ef=0;if(e[(c[Ba>>2]|0)+8>>1]&9312)_d(c[Ba>>2]|0);c[rf>>2]=c[(c[ya>>2]|0)+84+(c[va>>2]<<2)>>2];do if((c[(c[ya>>2]|0)+68>>2]|0)>>>0>=(c[(c[za>>2]|0)+((c[va>>2]|0)+1<<2)>>2]|0)>>>0)Xw((c[(c[ya>>2]|0)+76>>2]|0)+(c[(c[za>>2]|0)+(c[va>>2]<<2)>>2]|0)|0,c[rf>>2]|0,c[Ba>>2]|0)|0;else{do if(d[(c[p>>2]|0)+3>>0]&192){if((c[rf>>2]|0)>>>0>=12?(c[rf>>2]&1|0)==0:0)break;if(!(d[(c[p>>2]|0)+3>>0]&128))Ef=316}else Ef=316;while(0);if((Ef|0)==316?(Ef=0,Hf=Ww(c[rf>>2]|0)|0,c[Ea>>2]=Hf,(Hf|0)!=0):0){c[l>>2]=mz(c[Fa>>2]|0,c[(c[za>>2]|0)+(c[va>>2]<<2)>>2]|0,c[Ea>>2]|0,(((d[(c[ya>>2]|0)+27>>0]|0)>>>2&1|0)!=0^1)&1,c[Ba>>2]|0)|0;if(c[l>>2]|0)break d;Xw(c[(c[Ba>>2]|0)+16>>2]|0,c[rf>>2]|0,c[Ba>>2]|0)|0;Hf=(c[Ba>>2]|0)+8|0;b[Hf>>1]=e[Hf>>1]&-4097;break}if((c[rf>>2]|0)>>>0<=13)f=Ga;else f=0;Xw(f,c[rf>>2]|0,c[Ba>>2]|0)|0}while(0);a[(c[Ba>>2]|0)+10>>0]=a[x>>0]|0}if((e[(c[Ba>>2]|0)+8>>1]&4096|0)!=0?(c[(c[Ba>>2]|0)+16>>2]|0)!=0:0){b[Ca>>1]=e[(c[Ba>>2]|0)+8>>1]&18;c[Da>>2]=c[(c[Ba>>2]|0)+16>>2];c[Ea>>2]=c[(c[Ba>>2]|0)+12>>2];if(Lp(c[Ba>>2]|0,(c[Ea>>2]|0)+2|0)|0){Ef=871;break a}dF(c[(c[Ba>>2]|0)+16>>2]|0,c[Da>>2]|0,c[Ea>>2]|0)|0;a[(c[(c[Ba>>2]|0)+16>>2]|0)+(c[Ea>>2]|0)>>0]=0;a[(c[(c[Ba>>2]|0)+16>>2]|0)+((c[Ea>>2]|0)+1)>>0]=0;b[(c[Ba>>2]|0)+8>>1]=e[Ca>>1]|512}break};case 48:{c[Ha>>2]=c[(c[p>>2]|0)+16>>2];c[jf>>2]=(c[$c>>2]|0)+((c[(c[p>>2]|0)+4>>2]|0)*40|0);while(1){Hf=c[Ha>>2]|0;c[Ha>>2]=Hf+1;Hf=a[Hf>>0]|0;a[Ia>>0]=Hf;if(!(Hf<<24>>24))break d;Jp(c[jf>>2]|0,a[Ia>>0]|0,a[x>>0]|0);c[jf>>2]=(c[jf>>2]|0)+40}};case 49:{Hf=Ra;c[Hf>>2]=0;c[Hf+4>>2]=0;c[Ma>>2]=0;c[Va>>2]=0;c[Ya>>2]=c[(c[p>>2]|0)+4>>2];c[Xa>>2]=c[(c[p>>2]|0)+16>>2];c[Oa>>2]=(c[$c>>2]|0)+((c[Ya>>2]|0)*40|0);c[Ya>>2]=c[(c[p>>2]|0)+8>>2];c[Ta>>2]=(c[Oa>>2]|0)+(((c[Ya>>2]|0)-1|0)*40|0);c[Wa>>2]=d[(c[k>>2]|0)+87>>0];c[w>>2]=(c[$c>>2]|0)+((c[(c[p>>2]|0)+12>>2]|0)*40|0);if(c[Xa>>2]|0){c[Ja>>2]=c[Oa>>2];do{Gf=c[Ja>>2]|0;c[Ja>>2]=Gf+40;Hf=c[Xa>>2]|0;c[Xa>>2]=Hf+1;Jp(Gf,a[Hf>>0]|0,a[x>>0]|0)}while((a[c[Xa>>2]>>0]|0)!=0)}c[Ja>>2]=c[Ta>>2];do{Hf=nz(c[Ja>>2]|0,c[Wa>>2]|0)|0;c[Ka>>2]=Hf;c[(c[Ja>>2]|0)+28>>2]=Hf;c[Ua>>2]=Ww(c[Ka>>2]|0)|0;do if(e[(c[Ja>>2]|0)+8>>1]&16384){Hf=Ra;f=c[Ja>>2]|0;if((c[Hf>>2]|0)!=0|(c[Hf+4>>2]|0)!=0){Dd(f)|0;break}else{c[Va>>2]=(c[Va>>2]|0)+(c[f>>2]|0);c[Ua>>2]=(c[Ua>>2]|0)-(c[c[Ja>>2]>>2]|0);break}}while(0);Gf=c[Ua>>2]|0;Hf=Ra;Gf=bF(c[Hf>>2]|0,c[Hf+4>>2]|0,Gf|0,((Gf|0)<0)<<31>>31|0)|0;Hf=Ra;c[Hf>>2]=Gf;c[Hf+4>>2]=D;if((c[Ka>>2]|0)>>>0<=127)f=1;else f=Zw(c[Ka>>2]|0,0)|0;c[Ma>>2]=(c[Ma>>2]|0)+f;Hf=(c[Ja>>2]|0)+ -40|0;c[Ja>>2]=Hf}while(Hf>>>0>=(c[Oa>>2]|0)>>>0);f=c[Ma>>2]|0;if((c[Ma>>2]|0)>126){c[Sa>>2]=Zw(f,((f|0)<0)<<31>>31)|0;c[Ma>>2]=(c[Ma>>2]|0)+(c[Sa>>2]|0);Gf=c[Sa>>2]|0;Hf=c[Ma>>2]|0;if((Gf|0)<(Zw(Hf,((Hf|0)<0)<<31>>31)|0))c[Ma>>2]=(c[Ma>>2]|0)+1}else c[Ma>>2]=f+1;Gf=c[Ma>>2]|0;f=Ra;f=bF(Gf|0,((Gf|0)<0)<<31>>31|0,c[f>>2]|0,c[f+4>>2]|0)|0;Gf=Qa;c[Gf>>2]=f;c[Gf+4>>2]=D;Gf=Qa;f=c[Gf+4>>2]|0;Hf=c[(c[q>>2]|0)+88>>2]|0;Ff=((Hf|0)<0)<<31>>31;if((f|0)>(Ff|0)|((f|0)==(Ff|0)?(c[Gf>>2]|0)>>>0>Hf>>>0:0)){Ef=870;break c}if(Lp(c[w>>2]|0,c[Qa>>2]|0)|0){Ef=871;break a}c[Pa>>2]=c[(c[w>>2]|0)+16>>2];if((c[Ma>>2]|0)>>>0<128){a[c[Pa>>2]>>0]=c[Ma>>2];f=1}else{f=c[Ma>>2]|0;f=oz(c[Pa>>2]|0,f,((f|0)<0)<<31>>31)|0}c[La>>2]=f&255;c[Na>>2]=c[Ma>>2];c[Ja>>2]=c[Oa>>2];do{c[Ka>>2]=c[(c[Ja>>2]|0)+28>>2];if((c[Ka>>2]|0)>>>0<128){a[(c[Pa>>2]|0)+(c[La>>2]|0)>>0]=c[Ka>>2];f=1}else f=oz((c[Pa>>2]|0)+(c[La>>2]|0)|0,c[Ka>>2]|0,0)|0;c[La>>2]=(c[La>>2]|0)+(f&255);Hf=pz((c[Pa>>2]|0)+(c[Na>>2]|0)|0,c[Ja>>2]|0,c[Ka>>2]|0)|0;c[Na>>2]=(c[Na>>2]|0)+Hf;Hf=(c[Ja>>2]|0)+40|0;c[Ja>>2]=Hf}while(Hf>>>0<=(c[Ta>>2]|0)>>>0);c[(c[w>>2]|0)+12>>2]=c[Qa>>2];b[(c[w>>2]|0)+8>>1]=16;if(c[Va>>2]|0){c[c[w>>2]>>2]=c[Va>>2];Hf=(c[w>>2]|0)+8|0;b[Hf>>1]=e[Hf>>1]|16384}a[(c[w>>2]|0)+10>>0]=1;break};case 50:{c[Za>>2]=c[c[(c[(c[k>>2]|0)+56>>2]|0)+(c[(c[p>>2]|0)+4>>2]<<2)>>2]>>2];Ff=_a;c[Ff>>2]=0;c[Ff+4>>2]=0;c[l>>2]=qz(c[Za>>2]|0,_a)|0;Ff=_a;Gf=c[Ff+4>>2]|0;Hf=c[w>>2]|0;c[Hf>>2]=c[Ff>>2];c[Hf+4>>2]=Gf;break};case 2:{c[fb>>2]=c[(c[p>>2]|0)+4>>2];c[bb>>2]=c[(c[p>>2]|0)+16>>2];if(!(c[fb>>2]|0)){if((c[(c[q>>2]|0)+156>>2]|0)>0){pn((c[k>>2]|0)+44|0,c[q>>2]|0,31440,g);c[l>>2]=5;break d}c[$a>>2]=Mb(c[bb>>2]|0)|0;c[l>>2]=rz(c[q>>2]|0,0,(c[(c[q>>2]|0)+500>>2]|0)+(c[(c[q>>2]|0)+496>>2]|0)|0)|0;if(c[l>>2]|0)break c;c[ab>>2]=Qe(c[q>>2]|0,33+(c[$a>>2]|0)|0,0)|0;if(!(c[ab>>2]|0))break d;c[c[ab>>2]>>2]=(c[ab>>2]|0)+32;dF(c[c[ab>>2]>>2]|0,c[bb>>2]|0,(c[$a>>2]|0)+1|0)|0;f=c[q>>2]|0;if(a[(c[q>>2]|0)+62>>0]|0){a[f+62>>0]=0;a[(c[q>>2]|0)+69>>0]=1}else{Hf=f+496|0;c[Hf>>2]=(c[Hf>>2]|0)+1}c[(c[ab>>2]|0)+24>>2]=c[(c[q>>2]|0)+488>>2];c[(c[q>>2]|0)+488>>2]=c[ab>>2];Hf=(c[q>>2]|0)+504|0;Gf=c[Hf+4>>2]|0;Ff=(c[ab>>2]|0)+8|0;c[Ff>>2]=c[Hf>>2];c[Ff+4>>2]=Gf;Ff=(c[q>>2]|0)+512|0;Gf=c[Ff+4>>2]|0;Hf=(c[ab>>2]|0)+16|0;c[Hf>>2]=c[Ff>>2];c[Hf+4>>2]=Gf;break d}c[gb>>2]=0;c[cb>>2]=c[(c[q>>2]|0)+488>>2];while(1){if(!(c[cb>>2]|0))break;if(!(xc(c[c[cb>>2]>>2]|0,c[bb>>2]|0)|0))break;c[gb>>2]=(c[gb>>2]|0)+1;c[cb>>2]=c[(c[cb>>2]|0)+24>>2]}if(!(c[cb>>2]|0)){Gf=(c[k>>2]|0)+44|0;Hf=c[q>>2]|0;c[g>>2]=c[bb>>2];pn(Gf,Hf,31496,g);c[l>>2]=1;break d}if((c[fb>>2]|0)==1?(c[(c[q>>2]|0)+156>>2]|0)>0:0){pn((c[k>>2]|0)+44|0,c[q>>2]|0,31520,g);c[l>>2]=5;break d}if(!(c[(c[cb>>2]|0)+24>>2]|0))f=(d[(c[q>>2]|0)+69>>0]|0)!=0;else f=0;c[ib>>2]=f&1;if(!((c[ib>>2]|0)!=0&(c[fb>>2]|0)==1)){c[gb>>2]=(c[(c[q>>2]|0)+496>>2]|0)-(c[gb>>2]|0)-1;g:do if((c[fb>>2]|0)==2){c[db>>2]=(c[(c[q>>2]|0)+24>>2]&2|0)!=0&1;c[eb>>2]=0;while(1){if((c[eb>>2]|0)>=(c[(c[q>>2]|0)+20>>2]|0))break g;c[l>>2]=sz(c[(c[(c[q>>2]|0)+16>>2]|0)+(c[eb>>2]<<4)+4>>2]|0,516,(c[db>>2]|0)==0&1)|0;if(c[l>>2]|0)break c;c[eb>>2]=(c[eb>>2]|0)+1}}else c[db>>2]=0;while(0);c[eb>>2]=0;while(1){if((c[eb>>2]|0)>=(c[(c[q>>2]|0)+20>>2]|0))break;c[l>>2]=tz(c[(c[(c[q>>2]|0)+16>>2]|0)+(c[eb>>2]<<4)+4>>2]|0,c[fb>>2]|0,c[gb>>2]|0)|0;if(c[l>>2]|0)break c;c[eb>>2]=(c[eb>>2]|0)+1}if(c[db>>2]|0){gf(c[q>>2]|0);cd(c[q>>2]|0);c[(c[q>>2]|0)+24>>2]=c[(c[q>>2]|0)+24>>2]|2}}else{Hf=bz(c[k>>2]|0,1)|0;c[l>>2]=Hf;if(Hf){Ef=869;break c}a[(c[q>>2]|0)+62>>0]=1;if(($y(c[k>>2]|0)|0)==5){Ef=381;break c}a[(c[q>>2]|0)+69>>0]=0;c[l>>2]=c[(c[k>>2]|0)+80>>2]}while(1){if((c[(c[q>>2]|0)+488>>2]|0)==(c[cb>>2]|0))break;c[hb>>2]=c[(c[q>>2]|0)+488>>2];c[(c[q>>2]|0)+488>>2]=c[(c[hb>>2]|0)+24>>2];Xb(c[q>>2]|0,c[hb>>2]|0);Hf=(c[q>>2]|0)+496|0;c[Hf>>2]=(c[Hf>>2]|0)+ -1}f=c[cb>>2]|0;if((c[fb>>2]|0)==1){c[(c[q>>2]|0)+488>>2]=c[f+24>>2];Xb(c[q>>2]|0,c[cb>>2]|0);if(!(c[ib>>2]|0)){Hf=(c[q>>2]|0)+496|0;c[Hf>>2]=(c[Hf>>2]|0)+ -1}}else{Hf=f+8|0;Gf=c[Hf+4>>2]|0;Ff=(c[q>>2]|0)+504|0;c[Ff>>2]=c[Hf>>2];c[Ff+4>>2]=Gf;Ff=(c[cb>>2]|0)+16|0;Gf=c[Ff+4>>2]|0;Hf=(c[q>>2]|0)+512|0;c[Hf>>2]=c[Ff>>2];c[Hf+4>>2]=Gf}if((c[ib>>2]|0)==0?(c[l>>2]=rz(c[q>>2]|0,c[fb>>2]|0,c[gb>>2]|0)|0,(c[l>>2]|0)!=0):0)break c;break};case 3:{c[jb>>2]=c[(c[p>>2]|0)+4>>2];c[lb>>2]=c[(c[p>>2]|0)+8>>2];if(c[jb>>2]|0)f=(a[(c[q>>2]|0)+62>>0]|0)!=0^1;else f=0;c[kb>>2]=f&1;if(!((c[kb>>2]|0)==0|(c[lb>>2]|0)!=0)?(c[(c[q>>2]|0)+156>>2]|0)>0:0){pn((c[k>>2]|0)+44|0,c[q>>2]|0,31576,g);c[l>>2]=5;break d}if((c[jb>>2]|0)!=(d[(c[q>>2]|0)+62>>0]|0)){Ef=409;break c}if(c[jb>>2]|0)f=(c[lb>>2]|0)!=0?31680:31728;else f=31632;pn((c[k>>2]|0)+44|0,c[q>>2]|0,f,g);c[l>>2]=1;break};case 4:{if((c[(c[p>>2]|0)+8>>2]|0)!=0?(c[(c[q>>2]|0)+24>>2]&33554432|0)!=0:0){Ef=422;break c}c[mb>>2]=c[(c[(c[q>>2]|0)+16>>2]|0)+(c[(c[p>>2]|0)+4>>2]<<4)+4>>2];if(c[mb>>2]|0){c[l>>2]=Rc(c[mb>>2]|0,c[(c[p>>2]|0)+8>>2]|0)|0;if((c[l>>2]|0)==5){Ef=425;break c}if(c[l>>2]|0)break c;do if((c[(c[p>>2]|0)+8>>2]|0)!=0?((e[(c[k>>2]|0)+88>>1]|0)>>>7&1|0)!=0:0){if((d[(c[q>>2]|0)+62>>0]|0)!=0?(c[(c[q>>2]|0)+152>>2]|0)<=1:0)break;if(!(c[(c[k>>2]|0)+104>>2]|0)){Hf=(c[q>>2]|0)+500|0;c[Hf>>2]=(c[Hf>>2]|0)+1;c[(c[k>>2]|0)+104>>2]=(c[(c[q>>2]|0)+496>>2]|0)+(c[(c[q>>2]|0)+500>>2]|0)}c[l>>2]=rz(c[q>>2]|0,0,(c[(c[k>>2]|0)+104>>2]|0)-1|0)|0;if(!(c[l>>2]|0))c[l>>2]=uz(c[mb>>2]|0,c[(c[k>>2]|0)+104>>2]|0)|0;Hf=(c[q>>2]|0)+504|0;Gf=c[Hf+4>>2]|0;Ff=(c[k>>2]|0)+152|0;c[Ff>>2]=c[Hf>>2];c[Ff+4>>2]=Gf;Ff=(c[q>>2]|0)+512|0;Gf=c[Ff+4>>2]|0;Hf=(c[k>>2]|0)+160|0;c[Hf>>2]=c[Ff>>2];c[Hf+4>>2]=Gf}while(0);Sc(c[mb>>2]|0,1,nb);c[ob>>2]=c[(c[(c[(c[q>>2]|0)+16>>2]|0)+(c[(c[p>>2]|0)+4>>2]<<4)+12>>2]|0)+4>>2]}else{c[nb>>2]=0;c[ob>>2]=0}if(d[(c[p>>2]|0)+3>>0]|0){if((c[nb>>2]|0)==(c[(c[p>>2]|0)+12>>2]|0)?(c[ob>>2]|0)==(c[(c[p>>2]|0)+16>>2]|0):0)break d;Xb(c[q>>2]|0,c[(c[k>>2]|0)+44>>2]|0);Hf=ne(c[q>>2]|0,5664)|0;c[(c[k>>2]|0)+44>>2]=Hf;if((c[c[(c[(c[q>>2]|0)+16>>2]|0)+(c[(c[p>>2]|0)+4>>2]<<4)+12>>2]>>2]|0)!=(c[nb>>2]|0))as(c[q>>2]|0,c[(c[p>>2]|0)+4>>2]|0);Hf=(c[k>>2]|0)+88|0;b[Hf>>1]=b[Hf>>1]&-33|32;c[l>>2]=17}break};case 51:{c[qb>>2]=c[(c[p>>2]|0)+4>>2];c[rb>>2]=c[(c[p>>2]|0)+12>>2];Sc(c[(c[(c[q>>2]|0)+16>>2]|0)+(c[qb>>2]<<4)+4>>2]|0,c[rb>>2]|0,tb);Gf=c[tb>>2]|0;Hf=c[w>>2]|0;c[Hf>>2]=Gf;c[Hf+4>>2]=((Gf|0)<0)<<31>>31;break};case 52:{c[wb>>2]=(c[(c[q>>2]|0)+16>>2]|0)+(c[(c[p>>2]|0)+4>>2]<<4);c[y>>2]=(c[$c>>2]|0)+((c[(c[p>>2]|0)+12>>2]|0)*40|0);Mp(c[y>>2]|0)|0;c[l>>2]=bd(c[(c[wb>>2]|0)+4>>2]|0,c[(c[p>>2]|0)+8>>2]|0,c[c[y>>2]>>2]|0)|0;if((c[(c[p>>2]|0)+8>>2]|0)!=1){if((c[(c[p>>2]|0)+8>>2]|0)==2)a[(c[(c[wb>>2]|0)+12>>2]|0)+76>>0]=c[c[y>>2]>>2]}else{c[c[(c[wb>>2]|0)+12>>2]>>2]=c[c[y>>2]>>2];Hf=(c[q>>2]|0)+24|0;c[Hf>>2]=c[Hf>>2]|2}if((c[(c[p>>2]|0)+4>>2]|0)==1){gf(c[q>>2]|0);Hf=(c[k>>2]|0)+88|0;b[Hf>>1]=b[Hf>>1]&-33}break};case 55:case 54:{Ef=453;break};case 53:{c[Bb>>2]=c[(c[(c[k>>2]|0)+56>>2]|0)+(c[(c[p>>2]|0)+4>>2]<<2)>>2];if(!((c[Bb>>2]|0)!=0?(c[(c[Bb>>2]|0)+28>>2]|0)==(c[(c[p>>2]|0)+8>>2]|0):0))Ef=453;break};case 57:case 56:{c[Cb>>2]=vz(c[k>>2]|0,c[(c[p>>2]|0)+4>>2]|0,c[(c[p>>2]|0)+8>>2]|0,-1,1)|0;if(!(c[Cb>>2]|0)){Ef=871;break a}a[(c[Cb>>2]|0)+25>>0]=1;Hf=(c[Cb>>2]|0)+27|0;a[Hf>>0]=a[Hf>>0]&-2|1;c[l>>2]=rh(c[c[q>>2]>>2]|0,0,c[q>>2]|0,(c[Cb>>2]|0)+4|0,5|d[(c[p>>2]|0)+3>>0],1054)|0;if(!(c[l>>2]|0))c[l>>2]=Rc(c[(c[Cb>>2]|0)+4>>2]|0,1)|0;do if(!(c[l>>2]|0)){Hf=c[(c[p>>2]|0)+16>>2]|0;c[Eb>>2]=Hf;f=c[(c[Cb>>2]|0)+4>>2]|0;if(!Hf){c[l>>2]=wz(f,1,1,0,c[c[Cb>>2]>>2]|0)|0;Hf=(c[Cb>>2]|0)+27|0;a[Hf>>0]=a[Hf>>0]&-5|4;break}c[l>>2]=yz(f,Db,2|d[(c[p>>2]|0)+3>>0])|0;if(!(c[l>>2]|0)){c[(c[Cb>>2]|0)+8>>2]=c[Eb>>2];c[l>>2]=wz(c[(c[Cb>>2]|0)+4>>2]|0,c[Db>>2]|0,1,c[Eb>>2]|0,c[c[Cb>>2]>>2]|0)|0}Hf=(c[Cb>>2]|0)+27|0;a[Hf>>0]=a[Hf>>0]&-5}while(0);Hf=(c[Cb>>2]|0)+27|0;a[Hf>>0]=a[Hf>>0]&-9|((d[(c[p>>2]|0)+3>>0]|0)!=8&1)<<3&255;break};case 58:{c[Fb>>2]=vz(c[k>>2]|0,c[(c[p>>2]|0)+4>>2]|0,c[(c[p>>2]|0)+8>>2]|0,-1,1)|0;if(!(c[Fb>>2]|0)){Ef=871;break a}c[(c[Fb>>2]|0)+8>>2]=c[(c[p>>2]|0)+16>>2];c[l>>2]=zz(c[q>>2]|0,c[(c[p>>2]|0)+12>>2]|0,c[Fb>>2]|0)|0;break};case 59:{c[Gb>>2]=c[(c[(c[k>>2]|0)+56>>2]|0)+(c[(c[p>>2]|0)+4>>2]<<2)>>2];Ff=(c[Gb>>2]|0)+40|0;Hf=Ff;Gf=c[Hf>>2]|0;Hf=c[Hf+4>>2]|0;f=bF(Gf|0,Hf|0,1,0)|0;c[Ff>>2]=f;c[Ff+4>>2]=D;if((Gf|0)==0&(Hf|0)==0)c[n>>2]=(c[(c[p>>2]|0)+8>>2]|0)-1;break};case 60:{c[Hb>>2]=vz(c[k>>2]|0,c[(c[p>>2]|0)+4>>2]|0,c[(c[p>>2]|0)+12>>2]|0,-1,0)|0;if(!(c[Hb>>2]|0)){Ef=871;break a}a[(c[Hb>>2]|0)+25>>0]=1;c[(c[Hb>>2]|0)+16>>2]=c[(c[p>>2]|0)+8>>2];Hf=(c[Hb>>2]|0)+27|0;a[Hf>>0]=a[Hf>>0]&-5|4;break};case 61:{Az(c[k>>2]|0,c[(c[(c[k>>2]|0)+56>>2]|0)+(c[(c[p>>2]|0)+4>>2]<<2)>>2]|0);c[(c[(c[k>>2]|0)+56>>2]|0)+(c[(c[p>>2]|0)+4>>2]<<2)>>2]=0;break};case 65:case 64:case 63:case 62:{c[Kb>>2]=c[(c[(c[k>>2]|0)+56>>2]|0)+(c[(c[p>>2]|0)+4>>2]<<2)>>2];c[Ib>>2]=d[c[p>>2]>>0];a[(c[Kb>>2]|0)+25>>0]=0;f=c[p>>2]|0;if((d[(c[Kb>>2]|0)+27>>0]|0)>>>2&1){c[y>>2]=(c[$c>>2]|0)+((c[f+12>>2]|0)*40|0);if((e[(c[y>>2]|0)+8>>1]&14|0)==2)Pe(c[y>>2]|0,0);Gf=Kd(c[y>>2]|0)|0;Hf=Jb;c[Hf>>2]=Gf;c[Hf+4>>2]=D;do if(!(e[(c[y>>2]|0)+8>>1]&4)){if(!(e[(c[y>>2]|0)+8>>1]&8)){c[n>>2]=(c[(c[p>>2]|0)+8>>2]|0)-1;break d}Hf=Jb;if(+h[c[y>>2]>>3]<+((c[Hf>>2]|0)>>>0)+4294967296.0*+(c[Hf+4>>2]|0)){if((c[Ib>>2]&1|0)!=1)break;c[Ib>>2]=(c[Ib>>2]|0)+ -1;break}Hf=Jb;if(+h[c[y>>2]>>3]>+((c[Hf>>2]|0)>>>0)+4294967296.0*+(c[Hf+4>>2]|0)?(c[Ib>>2]&1|0)==0:0)c[Ib>>2]=(c[Ib>>2]|0)+1}while(0);Ff=Jb;c[l>>2]=Gw(c[c[Kb>>2]>>2]|0,0,c[Ff>>2]|0,c[Ff+4>>2]|0,0,Lb)|0;Ff=Jb;Gf=c[Ff+4>>2]|0;Hf=(c[Kb>>2]|0)+48|0;c[Hf>>2]=c[Ff>>2];c[Hf+4>>2]=Gf;if(c[l>>2]|0)break c}else{c[Ob>>2]=c[f+16>>2];c[Nb>>2]=c[(c[Kb>>2]|0)+8>>2];b[Nb+4>>1]=c[Ob>>2];a[Nb+6>>0]=(1&(c[Ib>>2]|0)-62|0)!=0?-1:1;c[Nb+8>>2]=(c[$c>>2]|0)+((c[(c[p>>2]|0)+12>>2]|0)*40|0);if(e[(c[Nb+8>>2]|0)+8>>1]&16384)Dd(c[Nb+8>>2]|0)|0;c[l>>2]=Gw(c[c[Kb>>2]>>2]|0,Nb,0,0,0,Lb)|0;if(c[l>>2]|0)break c}a[(c[Kb>>2]|0)+26>>0]=0;c[(c[Kb>>2]|0)+60>>2]=0;f=c[Lb>>2]|0;do if((c[Ib>>2]|0)>=64){if((f|0)>=0?!((c[Lb>>2]|0)==0&(c[Ib>>2]|0)==65):0){c[Lb>>2]=0;break}c[Lb>>2]=0;c[l>>2]=sw(c[c[Kb>>2]>>2]|0,Lb)|0;if(c[l>>2]|0)break c}else{if((f|0)<=0?!((c[Lb>>2]|0)==0&(c[Ib>>2]|0)==62):0){c[Lb>>2]=Bz(c[c[Kb>>2]>>2]|0)|0;break}c[Lb>>2]=0;c[l>>2]=tw(c[c[Kb>>2]>>2]|0,Lb)|0;if(c[l>>2]|0)break c}while(0);if(c[Lb>>2]|0)c[n>>2]=(c[(c[p>>2]|0)+8>>2]|0)-1;break};case 66:{c[Pb>>2]=c[(c[(c[k>>2]|0)+56>>2]|0)+(c[(c[p>>2]|0)+4>>2]<<2)>>2];a[(c[Pb>>2]|0)+25>>0]=0;c[I>>2]=(c[$c>>2]|0)+((c[(c[p>>2]|0)+8>>2]|0)*40|0);Gf=Kd(c[I>>2]|0)|0;Hf=(c[Pb>>2]|0)+48|0;c[Hf>>2]=Gf;c[Hf+4>>2]=D;a[(c[Pb>>2]|0)+26>>0]=1;break};case 69:case 68:case 67:{c[Rb>>2]=c[(c[(c[k>>2]|0)+56>>2]|0)+(c[(c[p>>2]|0)+4>>2]<<2)>>2];c[y>>2]=(c[$c>>2]|0)+((c[(c[p>>2]|0)+12>>2]|0)*40|0);c[Ub>>2]=0;f=c[(c[Rb>>2]|0)+8>>2]|0;if((c[(c[p>>2]|0)+16>>2]|0)>0){c[Wb>>2]=f;b[Wb+4>>1]=c[(c[p>>2]|0)+16>>2];c[Wb+8>>2]=c[y>>2];c[Yb>>2]=0;while(1){if((c[Yb>>2]|0)>=(e[Wb+4>>1]|0))break;if(e[(c[Wb+8>>2]|0)+((c[Yb>>2]|0)*40|0)+8>>1]&16384)Dd((c[Wb+8>>2]|0)+((c[Yb>>2]|0)*40|0)|0)|0;c[Yb>>2]=(c[Yb>>2]|0)+1}c[Vb>>2]=Wb}else{c[Vb>>2]=Ew(f,Zb,191,Ub)|0;if(!(c[Vb>>2]|0)){Ef=871;break a}Fw(c[(c[Rb>>2]|0)+8>>2]|0,c[(c[y>>2]|0)+12>>2]|0,c[(c[y>>2]|0)+16>>2]|0,c[Vb>>2]|0)}a[(c[Vb>>2]|0)+6>>0]=0;h:do if((d[c[p>>2]>>0]|0)==67){c[Yb>>2]=0;while(1){if((c[Yb>>2]|0)>=(e[Wb+4>>1]|0))break h;if(e[(c[Wb+8>>2]|0)+((c[Yb>>2]|0)*40|0)+8>>1]&1)break;c[Yb>>2]=(c[Yb>>2]|0)+1}c[n>>2]=(c[(c[p>>2]|0)+8>>2]|0)-1}while(0);c[l>>2]=Gw(c[c[Rb>>2]>>2]|0,c[Vb>>2]|0,0,0,0,Qb)|0;if(!(c[(c[p>>2]|0)+16>>2]|0))Xb(c[q>>2]|0,c[Ub>>2]|0);if(!(c[l>>2]|0)){c[(c[Rb>>2]|0)+12>>2]=c[Qb>>2];c[Tb>>2]=(c[Qb>>2]|0)==0&1;a[(c[Rb>>2]|0)+25>>0]=1-(c[Tb>>2]|0);a[(c[Rb>>2]|0)+26>>0]=0;c[(c[Rb>>2]|0)+60>>2]=0;f=(c[Tb>>2]|0)!=0;if((d[c[p>>2]>>0]|0)==69){if(!f)break d;c[n>>2]=(c[(c[p>>2]|0)+8>>2]|0)-1;break d}else{if(f)break d;c[n>>2]=(c[(c[p>>2]|0)+8>>2]|0)-1;break d}}break};case 73:{Hf=(c[(c[(c[k>>2]|0)+56>>2]|0)+(c[(c[p>>2]|0)+4>>2]<<2)>>2]|0)+40|0;Gf=Hf;Ff=c[Gf>>2]|0;Gf=c[Gf+4>>2]|0;f=bF(Ff|0,Gf|0,1,0)|0;c[Hf>>2]=f;c[Hf+4>>2]=D;Hf=c[w>>2]|0;c[Hf>>2]=Ff;c[Hf+4>>2]=Gf;break};case 70:{c[y>>2]=(c[$c>>2]|0)+((c[(c[p>>2]|0)+12>>2]|0)*40|0);c[$b>>2]=c[(c[(c[k>>2]|0)+56>>2]|0)+(c[(c[p>>2]|0)+4>>2]<<2)>>2];c[ac>>2]=c[c[$b>>2]>>2];c[_b>>2]=0;Hf=c[y>>2]|0;Gf=c[Hf+4>>2]|0;Ff=bc;c[Ff>>2]=c[Hf>>2];c[Ff+4>>2]=Gf;Ff=bc;c[l>>2]=Gw(c[ac>>2]|0,0,c[Ff>>2]|0,c[Ff+4>>2]|0,0,_b)|0;Ff=bc;Gf=c[Ff+4>>2]|0;Hf=(c[$b>>2]|0)+48|0;c[Hf>>2]=c[Ff>>2];c[Hf+4>>2]=Gf;a[(c[$b>>2]|0)+25>>0]=0;c[(c[$b>>2]|0)+60>>2]=0;a[(c[$b>>2]|0)+26>>0]=0;if(c[_b>>2]|0)c[n>>2]=(c[(c[p>>2]|0)+8>>2]|0)-1;c[(c[$b>>2]|0)+12>>2]=c[_b>>2];break};case 74:{Hf=cc;c[Hf>>2]=0;c[Hf+4>>2]=0;c[hc>>2]=0;c[ec>>2]=c[(c[(c[k>>2]|0)+56>>2]|0)+(c[(c[p>>2]|0)+4>>2]<<2)>>2];if(c[c[ec>>2]>>2]|0){do if(!((d[(c[ec>>2]|0)+27>>0]|0)>>>1&1)){c[l>>2]=Cz(c[c[ec>>2]>>2]|0,hc)|0;if(c[l>>2]|0)break c;if(c[hc>>2]|0){Hf=cc;c[Hf>>2]=1;c[Hf+4>>2]=0;break}c[l>>2]=Ly(c[c[ec>>2]>>2]|0,cc)|0;Hf=cc;Gf=c[Hf+4>>2]|0;if((Gf|0)>2147483647|(Gf|0)==2147483647&(c[Hf>>2]|0)>>>0>=4294967295){Hf=(c[ec>>2]|0)+27|0;a[Hf>>0]=a[Hf>>0]&-3|2;break}else{Gf=cc;Gf=bF(c[Gf>>2]|0,c[Gf+4>>2]|0,1,0)|0;Hf=cc;c[Hf>>2]=Gf;c[Hf+4>>2]=D;break}}while(0);if(c[(c[p>>2]|0)+12>>2]|0){if(c[(c[k>>2]|0)+176>>2]|0){c[fc>>2]=c[(c[k>>2]|0)+176>>2];while(1){if(!(c[(c[fc>>2]|0)+4>>2]|0))break;c[fc>>2]=c[(c[fc>>2]|0)+4>>2]}c[dc>>2]=(c[(c[fc>>2]|0)+12>>2]|0)+((c[(c[p>>2]|0)+12>>2]|0)*40|0)}else c[dc>>2]=(c[$c>>2]|0)+((c[(c[p>>2]|0)+12>>2]|0)*40|0);Mp(c[dc>>2]|0)|0;Hf=c[dc>>2]|0;if((c[Hf>>2]|0)==-1?(c[Hf+4>>2]|0)==2147483647:0){Ef=557;break c}if((d[(c[ec>>2]|0)+27>>0]|0)>>>1&1){Ef=557;break c}f=cc;Gf=c[f>>2]|0;f=c[f+4>>2]|0;Hf=c[dc>>2]|0;Hf=bF(c[Hf>>2]|0,c[Hf+4>>2]|0,1,0)|0;Ff=D;if((f|0)<(Ff|0)|(f|0)==(Ff|0)&Gf>>>0>>0){Gf=c[dc>>2]|0;Gf=bF(c[Gf>>2]|0,c[Gf+4>>2]|0,1,0)|0;Hf=cc;c[Hf>>2]=Gf;c[Hf+4>>2]=D}Ff=cc;Gf=c[Ff+4>>2]|0;Hf=c[dc>>2]|0;c[Hf>>2]=c[Ff>>2];c[Hf+4>>2]=Gf}if((d[(c[ec>>2]|0)+27>>0]|0)>>>1&1){c[gc>>2]=0;do{vc(8,cc);Ff=cc;Hf=c[Ff+4>>2]&1073741823;Gf=cc;c[Gf>>2]=c[Ff>>2];c[Gf+4>>2]=Hf;Gf=cc;Gf=bF(c[Gf>>2]|0,c[Gf+4>>2]|0,1,0)|0;Hf=cc;c[Hf>>2]=Gf;c[Hf+4>>2]=D;Hf=cc;Hf=Gw(c[c[ec>>2]>>2]|0,0,c[Hf>>2]|0,c[Hf+4>>2]|0,0,hc)|0;c[l>>2]=Hf;if(!((Hf|0)==0&(c[hc>>2]|0)==0))break;Hf=(c[gc>>2]|0)+1|0;c[gc>>2]=Hf}while((Hf|0)<100);if((c[l>>2]|0)==0&(c[hc>>2]|0)==0){Ef=566;break c}}a[(c[ec>>2]|0)+26>>0]=0;c[(c[ec>>2]|0)+60>>2]=0}Ff=cc;Gf=c[Ff+4>>2]|0;Hf=c[w>>2]|0;c[Hf>>2]=c[Ff>>2];c[Hf+4>>2]=Gf;break};case 84:case 75:{c[t>>2]=(c[$c>>2]|0)+((c[(c[p>>2]|0)+8>>2]|0)*40|0);c[ic>>2]=c[(c[(c[k>>2]|0)+56>>2]|0)+(c[(c[p>>2]|0)+4>>2]<<2)>>2];f=c[(c[p>>2]|0)+12>>2]|0;if((d[c[p>>2]>>0]|0)==75){c[qc>>2]=(c[$c>>2]|0)+(f*40|0);Ff=c[qc>>2]|0;Gf=c[Ff+4>>2]|0;Hf=mc;c[Hf>>2]=c[Ff>>2];c[Hf+4>>2]=Gf}else{Hf=mc;c[Hf>>2]=f;c[Hf+4>>2]=((f|0)<0)<<31>>31}if(d[(c[p>>2]|0)+3>>0]&1){Hf=(c[k>>2]|0)+92|0;c[Hf>>2]=(c[Hf>>2]|0)+1}if(d[(c[p>>2]|0)+3>>0]&2){Gf=mc;Ff=c[Gf>>2]|0;Gf=c[Gf+4>>2]|0;Hf=r;c[Hf>>2]=Ff;c[Hf+4>>2]=Gf;Hf=(c[q>>2]|0)+32|0;c[Hf>>2]=Ff;c[Hf+4>>2]=Gf}if(e[(c[t>>2]|0)+8>>1]&1){c[(c[t>>2]|0)+16>>2]=0;c[(c[t>>2]|0)+12>>2]=0}if(d[(c[p>>2]|0)+3>>0]&16)f=c[(c[ic>>2]|0)+12>>2]|0;else f=0;c[pc>>2]=f;if(e[(c[t>>2]|0)+8>>1]&16384)c[oc>>2]=c[c[t>>2]>>2];else c[oc>>2]=0;Hf=mc;c[l>>2]=Dz(c[c[ic>>2]>>2]|0,0,c[Hf>>2]|0,c[Hf+4>>2]|0,c[(c[t>>2]|0)+16>>2]|0,c[(c[t>>2]|0)+12>>2]|0,c[oc>>2]|0,(d[(c[p>>2]|0)+3>>0]&8|0)!=0&1,c[pc>>2]|0)|0;a[(c[ic>>2]|0)+26>>0]=0;c[(c[ic>>2]|0)+60>>2]=0;if(((c[l>>2]|0)==0?(c[(c[q>>2]|0)+208>>2]|0)!=0:0)?(c[(c[p>>2]|0)+16>>2]|0)!=0:0){c[jc>>2]=c[(c[(c[q>>2]|0)+16>>2]|0)+(a[(c[ic>>2]|0)+24>>0]<<4)>>2];c[kc>>2]=c[(c[p>>2]|0)+16>>2];c[lc>>2]=(d[(c[p>>2]|0)+3>>0]&4|0)!=0?23:18;Hf=mc;yb[c[(c[q>>2]|0)+208>>2]&0](c[(c[q>>2]|0)+204>>2]|0,c[lc>>2]|0,c[jc>>2]|0,c[kc>>2]|0,c[Hf>>2]|0,c[Hf+4>>2]|0)}break};case 95:{c[rc>>2]=c[(c[(c[k>>2]|0)+56>>2]|0)+(c[(c[p>>2]|0)+4>>2]<<2)>>2];c[l>>2]=Ez(c[c[rc>>2]>>2]|0)|0;c[(c[rc>>2]|0)+60>>2]=0;if((((c[l>>2]|0)==0?(c[(c[q>>2]|0)+208>>2]|0)!=0:0)?(c[(c[p>>2]|0)+16>>2]|0)!=0:0)?((d[(c[rc>>2]|0)+27>>0]|0)>>>2&1|0)!=0:0){Hf=(c[rc>>2]|0)+48|0;yb[c[(c[q>>2]|0)+208>>2]&0](c[(c[q>>2]|0)+204>>2]|0,9,c[(c[(c[q>>2]|0)+16>>2]|0)+(a[(c[rc>>2]|0)+24>>0]<<4)>>2]|0,c[(c[p>>2]|0)+16>>2]|0,c[Hf>>2]|0,c[Hf+4>>2]|0)}if(c[(c[p>>2]|0)+8>>2]&1){Hf=(c[k>>2]|0)+92|0;c[Hf>>2]=(c[Hf>>2]|0)+1}break};case 98:{Zy(c[q>>2]|0,c[(c[k>>2]|0)+92>>2]|0);c[(c[k>>2]|0)+92>>2]=0;break};case 99:{c[sc>>2]=c[(c[(c[k>>2]|0)+56>>2]|0)+(c[(c[p>>2]|0)+4>>2]<<2)>>2];c[y>>2]=(c[$c>>2]|0)+((c[(c[p>>2]|0)+12>>2]|0)*40|0);c[uc>>2]=c[(c[p>>2]|0)+16>>2];c[wc>>2]=0;c[l>>2]=Fz(c[sc>>2]|0,c[y>>2]|0,c[uc>>2]|0,wc)|0;if(c[wc>>2]|0)c[n>>2]=(c[(c[p>>2]|0)+8>>2]|0)-1;break};case 100:{c[w>>2]=(c[$c>>2]|0)+((c[(c[p>>2]|0)+8>>2]|0)*40|0);c[yc>>2]=c[(c[(c[k>>2]|0)+56>>2]|0)+(c[(c[p>>2]|0)+4>>2]<<2)>>2];c[l>>2]=Gz(c[yc>>2]|0,c[w>>2]|0)|0;c[(c[(c[(c[k>>2]|0)+56>>2]|0)+(c[(c[p>>2]|0)+12>>2]<<2)>>2]|0)+60>>2]=0;break};case 102:case 101:{c[w>>2]=(c[$c>>2]|0)+((c[(c[p>>2]|0)+8>>2]|0)*40|0);c[Bc>>2]=c[(c[(c[k>>2]|0)+56>>2]|0)+(c[(c[p>>2]|0)+4>>2]<<2)>>2];c[Ac>>2]=c[c[Bc>>2]>>2];f=c[Ac>>2]|0;if((d[(c[Bc>>2]|0)+27>>0]|0)>>>2&1){kz(f,zc)|0;if((c[zc>>2]|0)>>>0>(c[(c[q>>2]|0)+88>>2]|0)>>>0){Ef=870;break c}}else{Ly(f,Cc)|0;Gf=Cc;f=c[Gf+4>>2]|0;Hf=c[(c[q>>2]|0)+88>>2]|0;Ff=((Hf|0)<0)<<31>>31;if((f|0)>(Ff|0)|((f|0)==(Ff|0)?(c[Gf>>2]|0)>>>0>Hf>>>0:0)){Ef=870;break c}c[zc>>2]=c[Cc>>2]}if(Lp(c[w>>2]|0,(c[zc>>2]|0)>>>0>32?c[zc>>2]|0:32)|0){Ef=871;break a}c[(c[w>>2]|0)+12>>2]=c[zc>>2];b[(c[w>>2]|0)+8>>1]=e[(c[w>>2]|0)+8>>1]&-16896|16;Gf=c[Ac>>2]|0;Ff=c[zc>>2]|0;f=c[(c[w>>2]|0)+16>>2]|0;if(!((d[(c[Bc>>2]|0)+27>>0]|0)>>>2&1))c[l>>2]=My(Gf,0,Ff,f)|0;else c[l>>2]=ff(Gf,0,Ff,f)|0;a[(c[w>>2]|0)+10>>0]=1;break};case 103:{c[Gc>>2]=c[(c[(c[k>>2]|0)+56>>2]|0)+(c[(c[p>>2]|0)+4>>2]<<2)>>2];if(a[(c[Gc>>2]|0)+25>>0]|0){b[(c[w>>2]|0)+8>>1]=1;break d}f=c[Gc>>2]|0;do if(!(a[(c[Gc>>2]|0)+26>>0]|0)){Ff=c[Gc>>2]|0;if(c[f+32>>2]|0){c[Ec>>2]=c[c[Ff+32>>2]>>2];c[Fc>>2]=c[c[Ec>>2]>>2];c[l>>2]=zb[c[(c[Fc>>2]|0)+48>>2]&63](c[(c[Gc>>2]|0)+32>>2]|0,Dc)|0;Hz(c[k>>2]|0,c[Ec>>2]|0);break}c[l>>2]=Iz(Ff)|0;if(c[l>>2]|0)break c;if(a[(c[Gc>>2]|0)+25>>0]|0){b[(c[w>>2]|0)+8>>1]=1;break d}else{c[l>>2]=Ly(c[c[Gc>>2]>>2]|0,Dc)|0;break}}else{Ff=f+48|0;Gf=c[Ff+4>>2]|0;Hf=Dc;c[Hf>>2]=c[Ff>>2];c[Hf+4>>2]=Gf}while(0);Ff=Dc;Gf=c[Ff+4>>2]|0;Hf=c[w>>2]|0;c[Hf>>2]=c[Ff>>2];c[Hf+4>>2]=Gf;break};case 105:{c[Hc>>2]=c[(c[(c[k>>2]|0)+56>>2]|0)+(c[(c[p>>2]|0)+4>>2]<<2)>>2];c[Ic>>2]=c[c[Hc>>2]>>2];c[Jc>>2]=0;c[l>>2]=Cz(c[Ic>>2]|0,Jc)|0;a[(c[Hc>>2]|0)+25>>0]=c[Jc>>2];a[(c[Hc>>2]|0)+26>>0]=0;c[(c[Hc>>2]|0)+60>>2]=0;if((c[Jc>>2]|0)!=0?(c[(c[p>>2]|0)+8>>2]|0)>0:0)c[n>>2]=(c[(c[p>>2]|0)+8>>2]|0)-1;break};case 104:{c[Kc>>2]=c[(c[(c[k>>2]|0)+56>>2]|0)+(c[(c[p>>2]|0)+4>>2]<<2)>>2];a[(c[Kc>>2]|0)+25>>0]=1;c[(c[Kc>>2]|0)+60>>2]=0;if(c[c[Kc>>2]>>2]|0)Qk(c[c[Kc>>2]>>2]|0);break};case 107:case 106:{Ef=(c[k>>2]|0)+116|0;c[Ef>>2]=(c[Ef>>2]|0)+1;Ef=623;break};case 108:{Ef=623;break};case 5:{c[Lc>>2]=c[(c[(c[k>>2]|0)+56>>2]|0)+(c[(c[p>>2]|0)+4>>2]<<2)>>2];c[Mc>>2]=0;c[l>>2]=Lz(c[q>>2]|0,c[Lc>>2]|0,Mc)|0;Ef=631;break};case 7:case 6:{if(c[(c[(c[k>>2]|0)+56>>2]|0)+(c[(c[p>>2]|0)+4>>2]<<2)>>2]|0)Ef=630;break};case 9:case 8:{Ef=630;break};case 110:case 109:{c[Nc>>2]=c[(c[(c[k>>2]|0)+56>>2]|0)+(c[(c[p>>2]|0)+4>>2]<<2)>>2];c[I>>2]=(c[$c>>2]|0)+((c[(c[p>>2]|0)+8>>2]|0)*40|0);c[Oc>>2]=c[c[Nc>>2]>>2];if(d[(c[p>>2]|0)+3>>0]&1){Hf=(c[k>>2]|0)+92|0;c[Hf>>2]=(c[Hf>>2]|0)+1}if(e[(c[I>>2]|0)+8>>1]&16384)f=Dd(c[I>>2]|0)|0;else f=0;c[l>>2]=f;if(!(c[l>>2]|0)){if(c[(c[Nc>>2]|0)+56>>2]|0){c[l>>2]=Mz(c[Nc>>2]|0,c[I>>2]|0)|0;break d}c[Qc>>2]=c[(c[I>>2]|0)+12>>2];c[Pc>>2]=c[(c[I>>2]|0)+16>>2];f=c[Qc>>2]|0;if(d[(c[p>>2]|0)+3>>0]&16)Ff=c[(c[Nc>>2]|0)+12>>2]|0;else Ff=0;c[l>>2]=Dz(c[Oc>>2]|0,c[Pc>>2]|0,f,((f|0)<0)<<31>>31,1216,0,0,c[(c[p>>2]|0)+12>>2]|0,Ff)|0;c[(c[Nc>>2]|0)+60>>2]=0}break};case 112:{c[Xc>>2]=c[(c[(c[k>>2]|0)+56>>2]|0)+(c[(c[p>>2]|0)+4>>2]<<2)>>2];c[Uc>>2]=c[c[Xc>>2]>>2];b[(c[w>>2]|0)+8>>1]=1;c[l>>2]=Iz(c[Xc>>2]|0)|0;if(c[l>>2]|0)break c;if(!(a[(c[Xc>>2]|0)+25>>0]|0)){Hf=Tc;c[Hf>>2]=0;c[Hf+4>>2]=0;c[l>>2]=Nz(c[q>>2]|0,c[Uc>>2]|0,Tc)|0;if(c[l>>2]|0)break c;Ff=Tc;Gf=c[Ff+4>>2]|0;Hf=c[w>>2]|0;c[Hf>>2]=c[Ff>>2];c[Hf+4>>2]=Gf;b[(c[w>>2]|0)+8>>1]=4}break};case 111:{c[Yc>>2]=c[(c[(c[k>>2]|0)+56>>2]|0)+(c[(c[p>>2]|0)+4>>2]<<2)>>2];c[Zc>>2]=c[c[Yc>>2]>>2];c[_c>>2]=c[(c[Yc>>2]|0)+8>>2];b[_c+4>>1]=c[(c[p>>2]|0)+12>>2];a[_c+6>>0]=0;c[_c+8>>2]=(c[$c>>2]|0)+((c[(c[p>>2]|0)+8>>2]|0)*40|0);c[l>>2]=Gw(c[Zc>>2]|0,_c,0,0,0,hf)|0;if((c[l>>2]|0)==0&(c[hf>>2]|0)==0)c[l>>2]=Ez(c[Zc>>2]|0)|0;c[(c[Yc>>2]|0)+60>>2]=0;break};case 116:case 115:case 114:case 113:{c[fd>>2]=c[(c[(c[k>>2]|0)+56>>2]|0)+(c[(c[p>>2]|0)+4>>2]<<2)>>2];c[ed>>2]=c[(c[fd>>2]|0)+8>>2];b[ed+4>>1]=c[(c[p>>2]|0)+16>>2];f=ed+6|0;if((d[c[p>>2]>>0]|0)<115)a[f>>0]=-1;else a[f>>0]=0;c[ed+8>>2]=(c[$c>>2]|0)+((c[(c[p>>2]|0)+12>>2]|0)*40|0);c[ad>>2]=0;c[l>>2]=Oz(c[q>>2]|0,c[fd>>2]|0,ed,ad)|0;f=c[ad>>2]|0;if((d[c[p>>2]>>0]&1|0)==1)c[ad>>2]=0-f;else c[ad>>2]=f+1;if((c[ad>>2]|0)>0)c[n>>2]=(c[(c[p>>2]|0)+8>>2]|0)-1;break};case 117:{c[id>>2]=0;c[jd>>2]=c[(c[q>>2]|0)+4>>2];while(1){if(!(c[jd>>2]|0))break;if((((c[(c[jd>>2]|0)+40>>2]|0)==-1108210269?((e[(c[jd>>2]|0)+88>>1]|0)>>>9&1|0)!=0:0)?((e[(c[jd>>2]|0)+88>>1]|0)>>>2&3|0)<2:0)?(c[(c[jd>>2]|0)+76>>2]|0)>=0:0)c[id>>2]=(c[id>>2]|0)+1;c[jd>>2]=c[(c[jd>>2]|0)+52>>2]}b[(c[w>>2]|0)+8>>1]=1;if((c[id>>2]|0)>1){c[l>>2]=6;a[(c[k>>2]|0)+86>>0]=2;break d}c[gd>>2]=c[(c[p>>2]|0)+12>>2];c[hd>>2]=0;c[l>>2]=Pz(c[(c[(c[q>>2]|0)+16>>2]|0)+(c[gd>>2]<<4)+4>>2]|0,c[(c[p>>2]|0)+4>>2]|0,hd)|0;b[(c[w>>2]|0)+8>>1]=4;Gf=c[hd>>2]|0;Hf=c[w>>2]|0;c[Hf>>2]=Gf;c[Hf+4>>2]=((Gf|0)<0)<<31>>31;if((c[l>>2]|0)==0&(c[hd>>2]|0)!=0){Qz(c[q>>2]|0,c[gd>>2]|0,c[hd>>2]|0,c[(c[p>>2]|0)+4>>2]|0);a[nc>>0]=(c[gd>>2]|0)+1}break};case 119:{c[kd>>2]=c[(c[(c[k>>2]|0)+56>>2]|0)+(c[(c[p>>2]|0)+4>>2]<<2)>>2];if(c[(c[kd>>2]|0)+56>>2]|0){Sz(c[q>>2]|0,c[(c[kd>>2]|0)+56>>2]|0);break d}else{c[l>>2]=Tz(c[c[kd>>2]>>2]|0)|0;break d}};case 118:{c[ld>>2]=0;c[l>>2]=Rz(c[(c[(c[q>>2]|0)+16>>2]|0)+(c[(c[p>>2]|0)+8>>2]<<4)+4>>2]|0,c[(c[p>>2]|0)+4>>2]|0,(c[(c[p>>2]|0)+12>>2]|0)!=0?ld:0)|0;if((c[(c[p>>2]|0)+12>>2]|0)!=0?(Hf=(c[k>>2]|0)+92|0,c[Hf>>2]=(c[Hf>>2]|0)+(c[ld>>2]|0),(c[(c[p>>2]|0)+12>>2]|0)>0):0){Gf=c[ld>>2]|0;Hf=(c[$c>>2]|0)+((c[(c[p>>2]|0)+12>>2]|0)*40|0)|0;Ff=Hf;Gf=bF(c[Ff>>2]|0,c[Ff+4>>2]|0,Gf|0,((Gf|0)<0)<<31>>31|0)|0;c[Hf>>2]=Gf;c[Hf+4>>2]=D}break};case 121:case 120:{c[nd>>2]=0;c[md>>2]=(c[(c[q>>2]|0)+16>>2]|0)+(c[(c[p>>2]|0)+4>>2]<<4);if((d[c[p>>2]>>0]|0)==121)c[od>>2]=1;else c[od>>2]=2;c[l>>2]=yz(c[(c[md>>2]|0)+4>>2]|0,nd,c[od>>2]|0)|0;Gf=c[nd>>2]|0;Hf=c[w>>2]|0;c[Hf>>2]=Gf;c[Hf+4>>2]=((Gf|0)<0)<<31>>31;break};case 123:{c[l>>2]=fs(c[q>>2]|0,c[(c[p>>2]|0)+4>>2]|0)|0;break};case 124:{Uz(c[q>>2]|0,c[(c[p>>2]|0)+4>>2]|0,c[(c[p>>2]|0)+16>>2]|0);break};case 122:{c[rd>>2]=c[(c[p>>2]|0)+4>>2];c[sd>>2]=(c[rd>>2]|0)==1?14904:14928;c[qd>>2]=c[q>>2];c[qd+8>>2]=c[(c[p>>2]|0)+4>>2];c[qd+4>>2]=(c[k>>2]|0)+44;Hf=c[q>>2]|0;Ff=c[sd>>2]|0;Gf=c[(c[p>>2]|0)+16>>2]|0;c[g>>2]=c[(c[(c[q>>2]|0)+16>>2]|0)+(c[rd>>2]<<4)>>2];c[g+4>>2]=Ff;c[g+8>>2]=Gf;c[pd>>2]=Te(Hf,31776,g)|0;if(!(c[pd>>2]|0))c[l>>2]=7;else{a[(c[q>>2]|0)+145>>0]=1;c[qd+12>>2]=0;c[l>>2]=kf(c[q>>2]|0,c[pd>>2]|0,6,qd,0)|0;if(!(c[l>>2]|0))c[l>>2]=c[qd+12>>2];Xb(c[q>>2]|0,c[pd>>2]|0);a[(c[q>>2]|0)+145>>0]=0}if(c[l>>2]|0)cd(c[q>>2]|0);if((c[l>>2]|0)==7){Ef=871;break a}break};case 126:{Wz(c[q>>2]|0,c[(c[p>>2]|0)+4>>2]|0,c[(c[p>>2]|0)+16>>2]|0);break};case 127:{c[vd>>2]=c[(c[p>>2]|0)+8>>2];c[ud>>2]=Qe(c[q>>2]|0,(c[vd>>2]|0)+1<<2,0)|0;if(!(c[ud>>2]|0)){Ef=871;break a}c[wd>>2]=(c[$c>>2]|0)+((c[(c[p>>2]|0)+12>>2]|0)*40|0);c[jf>>2]=(c[$c>>2]|0)+((c[(c[p>>2]|0)+4>>2]|0)*40|0);c[yd>>2]=0;while(1){f=c[yd>>2]|0;if((c[yd>>2]|0)>=(c[vd>>2]|0))break;Hf=Kd((c[jf>>2]|0)+(f*40|0)|0)|0;c[(c[ud>>2]|0)+(c[yd>>2]<<2)>>2]=Hf;c[yd>>2]=(c[yd>>2]|0)+1}c[(c[ud>>2]|0)+(f<<2)>>2]=0;c[td>>2]=Xz(c[(c[(c[q>>2]|0)+16>>2]|0)+(d[(c[p>>2]|0)+3>>0]<<4)+4>>2]|0,c[ud>>2]|0,c[vd>>2]|0,c[c[wd>>2]>>2]|0,xd)|0;Xb(c[q>>2]|0,c[ud>>2]|0);Gf=c[xd>>2]|0;Hf=c[wd>>2]|0;Ff=Hf;Gf=ZE(c[Ff>>2]|0,c[Ff+4>>2]|0,Gf|0,((Gf|0)<0)<<31>>31|0)|0;c[Hf>>2]=Gf;c[Hf+4>>2]=D;_d(c[jf>>2]|0);if(c[xd>>2]|0){if(!(c[td>>2]|0)){Ef=871;break a}Vd(c[jf>>2]|0,c[td>>2]|0,-1,1,13)|0}yk(c[jf>>2]|0,d[x>>0]|0)|0;break};case 125:{Vz(c[q>>2]|0,c[(c[p>>2]|0)+4>>2]|0,c[(c[p>>2]|0)+16>>2]|0);break};case 128:{c[jf>>2]=(c[$c>>2]|0)+((c[(c[p>>2]|0)+4>>2]|0)*40|0);c[I>>2]=(c[$c>>2]|0)+((c[(c[p>>2]|0)+8>>2]|0)*40|0);if((e[(c[jf>>2]|0)+8>>1]&32|0)==0?(Yz(c[jf>>2]|0),(e[(c[jf>>2]|0)+8>>1]&32|0)==0):0){Ef=871;break a}Hf=c[I>>2]|0;Zz(c[c[jf>>2]>>2]|0,c[Hf>>2]|0,c[Hf+4>>2]|0);break};case 129:{c[jf>>2]=(c[$c>>2]|0)+((c[(c[p>>2]|0)+4>>2]|0)*40|0);if((e[(c[jf>>2]|0)+8>>1]&32|0)!=0?(_z(c[c[jf>>2]>>2]|0,zd)|0)!=0:0){Ef=zd;Xd((c[$c>>2]|0)+((c[(c[p>>2]|0)+12>>2]|0)*40|0)|0,c[Ef>>2]|0,c[Ef+4>>2]|0);Ef=16;break d}_d(c[jf>>2]|0);c[n>>2]=(c[(c[p>>2]|0)+8>>2]|0)-1;Ef=16;break};case 130:{c[jf>>2]=(c[$c>>2]|0)+((c[(c[p>>2]|0)+4>>2]|0)*40|0);c[y>>2]=(c[$c>>2]|0)+((c[(c[p>>2]|0)+12>>2]|0)*40|0);c[Ad>>2]=c[(c[p>>2]|0)+16>>2];if((e[(c[jf>>2]|0)+8>>1]&32|0)==0?(Yz(c[jf>>2]|0),(e[(c[jf>>2]|0)+8>>1]&32|0)==0):0){Ef=871;break a}if((c[Ad>>2]|0)!=0?(Hf=c[y>>2]|0,c[Cd>>2]=$z(c[c[jf>>2]>>2]|0,c[Ad>>2]|0,c[Hf>>2]|0,c[Hf+4>>2]|0)|0,(c[Cd>>2]|0)!=0):0){c[n>>2]=(c[(c[p>>2]|0)+8>>2]|0)-1;break d}if((c[Ad>>2]|0)>=0){Hf=c[y>>2]|0;Zz(c[c[jf>>2]>>2]|0,c[Hf>>2]|0,c[Hf+4>>2]|0)}break};case 131:{c[Jd>>2]=c[(c[p>>2]|0)+16>>2];c[Fd>>2]=(c[$c>>2]|0)+((c[(c[p>>2]|0)+12>>2]|0)*40|0);if(a[(c[p>>2]|0)+3>>0]|0){c[Od>>2]=c[(c[Jd>>2]|0)+20>>2];c[Gd>>2]=c[(c[k>>2]|0)+176>>2];while(1){if(!(c[Gd>>2]|0))break;if((c[(c[Gd>>2]|0)+24>>2]|0)==(c[Od>>2]|0))break;c[Gd>>2]=c[(c[Gd>>2]|0)+4>>2]}if(c[Gd>>2]|0)break d}if((c[(c[k>>2]|0)+184>>2]|0)>=(c[(c[q>>2]|0)+128>>2]|0)){c[l>>2]=1;pn((c[k>>2]|0)+44|0,c[q>>2]|0,31840,g);break d}i:do if(!(e[(c[Fd>>2]|0)+8>>1]&64)){c[Hd>>2]=(c[(c[Jd>>2]|0)+8>>2]|0)+(c[(c[Jd>>2]|0)+12>>2]|0);c[Nd>>2]=72+((c[Hd>>2]|0)*40|0)+(c[(c[Jd>>2]|0)+12>>2]<<2)+(c[(c[Jd>>2]|0)+16>>2]|0);Hf=c[Nd>>2]|0;c[Gd>>2]=se(c[q>>2]|0,Hf,((Hf|0)<0)<<31>>31)|0;if(!(c[Gd>>2]|0)){Ef=871;break a}Bd(c[Fd>>2]|0);b[(c[Fd>>2]|0)+8>>1]=64;c[c[Fd>>2]>>2]=c[Gd>>2];c[c[Gd>>2]>>2]=c[k>>2];c[(c[Gd>>2]|0)+60>>2]=c[Hd>>2];c[(c[Gd>>2]|0)+64>>2]=c[(c[Jd>>2]|0)+12>>2];c[(c[Gd>>2]|0)+44>>2]=c[n>>2];c[(c[Gd>>2]|0)+12>>2]=c[(c[k>>2]|0)+8>>2];c[(c[Gd>>2]|0)+52>>2]=c[(c[k>>2]|0)+28>>2];c[(c[Gd>>2]|0)+20>>2]=c[(c[k>>2]|0)+56>>2];c[(c[Gd>>2]|0)+40>>2]=c[(c[k>>2]|0)+36>>2];c[(c[Gd>>2]|0)+8>>2]=c[(c[k>>2]|0)+4>>2];c[(c[Gd>>2]|0)+48>>2]=c[(c[k>>2]|0)+32>>2];c[(c[Gd>>2]|0)+24>>2]=c[(c[Jd>>2]|0)+20>>2];c[(c[Gd>>2]|0)+16>>2]=c[(c[k>>2]|0)+200>>2];c[(c[Gd>>2]|0)+56>>2]=c[(c[k>>2]|0)+196>>2];c[Ld>>2]=(c[Gd>>2]|0)+72+((c[(c[Gd>>2]|0)+60>>2]|0)*40|0);c[Md>>2]=(c[Gd>>2]|0)+72;while(1){if((c[Md>>2]|0)==(c[Ld>>2]|0))break i;b[(c[Md>>2]|0)+8>>1]=128;c[(c[Md>>2]|0)+32>>2]=c[q>>2];c[Md>>2]=(c[Md>>2]|0)+40}}else c[Gd>>2]=c[c[Fd>>2]>>2];while(0);Ff=(c[k>>2]|0)+184|0;c[Ff>>2]=(c[Ff>>2]|0)+1;c[(c[Gd>>2]|0)+4>>2]=c[(c[k>>2]|0)+176>>2];Ff=r;Gf=c[Ff+4>>2]|0;Hf=(c[Gd>>2]|0)+32|0;c[Hf>>2]=c[Ff>>2];c[Hf+4>>2]=Gf;c[(c[Gd>>2]|0)+68>>2]=c[(c[k>>2]|0)+92>>2];c[(c[k>>2]|0)+92>>2]=0;c[(c[k>>2]|0)+176>>2]=c[Gd>>2];Hf=(c[Gd>>2]|0)+72+ -40|0;c[$c>>2]=Hf;c[(c[k>>2]|0)+8>>2]=Hf;c[(c[k>>2]|0)+28>>2]=c[(c[Gd>>2]|0)+60>>2];c[(c[k>>2]|0)+36>>2]=c[(c[Gd>>2]|0)+64>>2]&65535;c[(c[k>>2]|0)+56>>2]=(c[$c>>2]|0)+(((c[(c[k>>2]|0)+28>>2]|0)+1|0)*40|0);Hf=c[c[Jd>>2]>>2]|0;c[u>>2]=Hf;c[(c[k>>2]|0)+4>>2]=Hf;c[(c[k>>2]|0)+32>>2]=c[(c[Jd>>2]|0)+4>>2];c[(c[k>>2]|0)+200>>2]=(c[(c[k>>2]|0)+56>>2]|0)+(c[(c[k>>2]|0)+36>>2]<<2);c[(c[k>>2]|0)+196>>2]=c[(c[Jd>>2]|0)+16>>2];c[n>>2]=-1;_E(c[(c[k>>2]|0)+200>>2]|0,0,c[(c[k>>2]|0)+196>>2]|0)|0;break};case 132:{c[Pd>>2]=c[(c[k>>2]|0)+176>>2];c[Qd>>2]=(c[(c[Pd>>2]|0)+12>>2]|0)+(((c[(c[p>>2]|0)+4>>2]|0)+(c[(c[(c[Pd>>2]|0)+8>>2]|0)+((c[(c[Pd>>2]|0)+44>>2]|0)*20|0)+4>>2]|0)|0)*40|0);fn(c[w>>2]|0,c[Qd>>2]|0,4096);break};case 134:{Ff=c[p>>2]|0;if(c[(c[q>>2]|0)+24>>2]&16777216){Gf=c[Ff+8>>2]|0;Hf=(c[q>>2]|0)+512|0;Ff=Hf;Gf=bF(c[Ff>>2]|0,c[Ff+4>>2]|0,Gf|0,((Gf|0)<0)<<31>>31|0)|0;c[Hf>>2]=Gf;c[Hf+4>>2]=D;break d}f=c[(c[p>>2]|0)+8>>2]|0;Gf=((f|0)<0)<<31>>31;if(c[Ff+4>>2]|0){Hf=(c[q>>2]|0)+504|0;Ff=Hf;Gf=bF(c[Ff>>2]|0,c[Ff+4>>2]|0,f|0,Gf|0)|0;c[Hf>>2]=Gf;c[Hf+4>>2]=D;break d}else{Hf=(c[k>>2]|0)+144|0;Ff=Hf;Gf=bF(c[Ff>>2]|0,c[Ff+4>>2]|0,f|0,Gf|0)|0;c[Hf>>2]=Gf;c[Hf+4>>2]=D;break d}};case 135:if(c[(c[p>>2]|0)+4>>2]|0){Hf=(c[q>>2]|0)+504|0;if(!((c[Hf>>2]|0)==0&(c[Hf+4>>2]|0)==0))break d;Hf=(c[q>>2]|0)+512|0;if(!((c[Hf>>2]|0)==0&(c[Hf+4>>2]|0)==0))break d;c[n>>2]=(c[(c[p>>2]|0)+8>>2]|0)-1;break d}else{Hf=(c[k>>2]|0)+144|0;if(!((c[Hf>>2]|0)==0&(c[Hf+4>>2]|0)==0))break d;Hf=(c[q>>2]|0)+512|0;if(!((c[Hf>>2]|0)==0&(c[Hf+4>>2]|0)==0))break d;c[n>>2]=(c[(c[p>>2]|0)+8>>2]|0)-1;break d};case 136:{if(c[(c[k>>2]|0)+176>>2]|0){c[Rd>>2]=c[(c[k>>2]|0)+176>>2];while(1){if(!(c[(c[Rd>>2]|0)+4>>2]|0))break;c[Rd>>2]=c[(c[Rd>>2]|0)+4>>2]}c[jf>>2]=(c[(c[Rd>>2]|0)+12>>2]|0)+((c[(c[p>>2]|0)+4>>2]|0)*40|0)}else c[jf>>2]=(c[$c>>2]|0)+((c[(c[p>>2]|0)+4>>2]|0)*40|0);Mp(c[jf>>2]|0)|0;c[I>>2]=(c[$c>>2]|0)+((c[(c[p>>2]|0)+8>>2]|0)*40|0);Mp(c[I>>2]|0)|0;Gf=c[jf>>2]|0;f=c[Gf+4>>2]|0;Hf=c[I>>2]|0;Ff=c[Hf+4>>2]|0;if((f|0)<(Ff|0)|((f|0)==(Ff|0)?(c[Gf>>2]|0)>>>0<(c[Hf>>2]|0)>>>0:0)){Ff=c[I>>2]|0;Gf=c[Ff+4>>2]|0;Hf=c[jf>>2]|0;c[Hf>>2]=c[Ff>>2];c[Hf+4>>2]=Gf}break};case 137:{c[jf>>2]=(c[$c>>2]|0)+((c[(c[p>>2]|0)+4>>2]|0)*40|0);Hf=c[jf>>2]|0;Gf=c[Hf+4>>2]|0;if((Gf|0)>0|(Gf|0)==0&(c[Hf>>2]|0)>>>0>0)c[n>>2]=(c[(c[p>>2]|0)+8>>2]|0)-1;break};case 138:{c[jf>>2]=(c[$c>>2]|0)+((c[(c[p>>2]|0)+4>>2]|0)*40|0);Gf=c[(c[p>>2]|0)+12>>2]|0;Hf=c[jf>>2]|0;Ff=Hf;Gf=bF(c[Ff>>2]|0,c[Ff+4>>2]|0,Gf|0,((Gf|0)<0)<<31>>31|0)|0;c[Hf>>2]=Gf;c[Hf+4>>2]=D;if((c[(c[jf>>2]|0)+4>>2]|0)<0)c[n>>2]=(c[(c[p>>2]|0)+8>>2]|0)-1;break};case 139:{c[jf>>2]=(c[$c>>2]|0)+((c[(c[p>>2]|0)+4>>2]|0)*40|0);Gf=c[(c[p>>2]|0)+12>>2]|0;Hf=c[jf>>2]|0;Ff=Hf;Gf=bF(c[Ff>>2]|0,c[Ff+4>>2]|0,Gf|0,((Gf|0)<0)<<31>>31|0)|0;c[Hf>>2]=Gf;c[Hf+4>>2]=D;Hf=c[jf>>2]|0;if((c[Hf>>2]|0)==0&(c[Hf+4>>2]|0)==0)c[n>>2]=(c[(c[p>>2]|0)+8>>2]|0)-1;break};case 10:{c[Yd>>2]=d[(c[p>>2]|0)+3>>0];c[$d>>2]=(c[$c>>2]|0)+((c[(c[p>>2]|0)+8>>2]|0)*40|0);c[Zd>>2]=c[(c[k>>2]|0)+12>>2];c[Td>>2]=0;while(1){if((c[Td>>2]|0)>=(c[Yd>>2]|0))break;c[(c[Zd>>2]|0)+(c[Td>>2]<<2)>>2]=c[$d>>2];c[Td>>2]=(c[Td>>2]|0)+1;c[$d>>2]=(c[$d>>2]|0)+40}c[Ud+4>>2]=c[(c[p>>2]|0)+16>>2];Hf=(c[$c>>2]|0)+((c[(c[p>>2]|0)+12>>2]|0)*40|0)|0;c[Wd>>2]=Hf;c[Ud+8>>2]=Hf;Hf=(c[Wd>>2]|0)+12|0;c[Hf>>2]=(c[Hf>>2]|0)+1;en(Sd,c[q>>2]|0,1);c[Ud>>2]=Sd;c[Ud+20>>2]=0;c[Ud+12>>2]=c[k>>2];c[Ud+16>>2]=c[n>>2];a[Ud+24>>0]=0;vb[c[(c[Ud+4>>2]|0)+16>>2]&63](Ud,c[Yd>>2]|0,c[Zd>>2]|0);if(c[Ud+20>>2]|0){Gf=(c[k>>2]|0)+44|0;Hf=c[q>>2]|0;c[g>>2]=Ed(Sd)|0;pn(Gf,Hf,1200,g);c[l>>2]=c[Ud+20>>2]}if((a[Ud+24>>0]|0)!=0?(c[Td>>2]=c[(c[p>>2]|0)+ -20+4>>2],(c[Td>>2]|0)!=0):0)Xd((c[$c>>2]|0)+((c[Td>>2]|0)*40|0)|0,1,0);Bd(Sd);break};case 140:{c[ae>>2]=(c[$c>>2]|0)+((c[(c[p>>2]|0)+4>>2]|0)*40|0);c[l>>2]=hn(c[ae>>2]|0,c[(c[p>>2]|0)+16>>2]|0)|0;if(c[l>>2]|0){Gf=(c[k>>2]|0)+44|0;Hf=c[q>>2]|0;c[g>>2]=Ed(c[ae>>2]|0)|0;pn(Gf,Hf,1200,g)}yk(c[ae>>2]|0,d[x>>0]|0)|0;if(az(c[ae>>2]|0)|0){Ef=870;break c}break};case 12:{c[ce>>2]=c[(c[p>>2]|0)+12>>2];c[de>>2]=c[(c[(c[q>>2]|0)+16>>2]|0)+(c[(c[p>>2]|0)+4>>2]<<4)+4>>2];c[be>>2]=Sb(c[de>>2]|0)|0;c[ee>>2]=Vc(c[be>>2]|0)|0;if((c[ce>>2]|0)==-1)c[ce>>2]=c[ee>>2];if(!(aA(c[be>>2]|0)|0))c[ce>>2]=c[ee>>2];c[fe>>2]=ug(c[be>>2]|0,1)|0;do if((c[ce>>2]|0)==5){if((Mb(c[fe>>2]|0)|0)!=0?(bA(c[be>>2]|0)|0)!=0:0)break;c[ce>>2]=c[ee>>2]}while(0);do if((c[ce>>2]|0)!=(c[ee>>2]|0)?(c[ee>>2]|0)==5|(c[ce>>2]|0)==5:0){if((a[(c[q>>2]|0)+62>>0]|0)!=0?(c[(c[q>>2]|0)+152>>2]|0)<=1:0){do if((c[ee>>2]|0)==5){c[l>>2]=cA(c[be>>2]|0)|0;if(c[l>>2]|0)break;dA(c[be>>2]|0,c[ce>>2]|0)|0}else{if((c[ee>>2]|0)!=4)break;dA(c[be>>2]|0,2)|0}while(0);if(c[l>>2]|0)break;c[l>>2]=dd(c[de>>2]|0,(c[ce>>2]|0)==5?2:1)|0;break}c[l>>2]=1;Gf=(c[k>>2]|0)+44|0;Hf=c[q>>2]|0;c[g>>2]=(c[ce>>2]|0)==5?31936:31944;pn(Gf,Hf,31880,g);break d}while(0);if(c[l>>2]|0)c[ce>>2]=c[ee>>2];c[ce>>2]=dA(c[be>>2]|0,c[ce>>2]|0)|0;c[w>>2]=(c[$c>>2]|0)+((c[(c[p>>2]|0)+8>>2]|0)*40|0);b[(c[w>>2]|0)+8>>1]=2562;Hf=Rt(c[ce>>2]|0)|0;c[(c[w>>2]|0)+16>>2]=Hf;Hf=Mb(c[(c[w>>2]|0)+16>>2]|0)|0;c[(c[w>>2]|0)+12>>2]=Hf;a[(c[w>>2]|0)+10>>0]=1;yk(c[w>>2]|0,d[x>>0]|0)|0;break};case 11:{c[ie>>2]=0;c[ie+8>>2]=-1;c[ie+4>>2]=-1;c[l>>2]=Zf(c[q>>2]|0,c[(c[p>>2]|0)+4>>2]|0,c[(c[p>>2]|0)+8>>2]|0,ie+4|0,ie+8|0)|0;if((c[l>>2]|0)==5){c[l>>2]=0;c[ie>>2]=1}c[he>>2]=0;c[je>>2]=(c[$c>>2]|0)+((c[(c[p>>2]|0)+12>>2]|0)*40|0);while(1){if((c[he>>2]|0)>=3)break d;Hf=c[ie+(c[he>>2]<<2)>>2]|0;Xd(c[je>>2]|0,Hf,((Hf|0)<0)<<31>>31);c[he>>2]=(c[he>>2]|0)+1;c[je>>2]=(c[je>>2]|0)+40}};case 141:{c[ke>>2]=c[(c[(c[q>>2]|0)+16>>2]|0)+(c[(c[p>>2]|0)+4>>2]<<4)+4>>2];c[l>>2]=fA(c[ke>>2]|0)|0;if((c[l>>2]|0)==101){c[n>>2]=(c[(c[p>>2]|0)+8>>2]|0)-1;c[l>>2]=0}break};case 142:if(c[(c[p>>2]|0)+4>>2]|0){Hf=(c[k>>2]|0)+88|0;b[Hf>>1]=b[Hf>>1]&-33|32;break d}else{gf(c[q>>2]|0);break d};case 13:{c[l>>2]=eA((c[k>>2]|0)+44|0,c[q>>2]|0)|0;break};case 143:{a[oe>>0]=c[(c[p>>2]|0)+12>>2];if((d[oe>>0]|0)==0?0!=(c[(c[q>>2]|0)+24>>2]&16384|0):0)break d;c[me>>2]=c[(c[p>>2]|0)+4>>2];c[l>>2]=gA(c[(c[(c[q>>2]|0)+16>>2]|0)+(c[me>>2]<<4)+4>>2]|0,c[(c[p>>2]|0)+8>>2]|0,a[oe>>0]|0)|0;if((c[l>>2]&255|0)==6){c[le>>2]=c[(c[p>>2]|0)+16>>2];Gf=(c[k>>2]|0)+44|0;Hf=c[q>>2]|0;c[g>>2]=c[le>>2];pn(Gf,Hf,31952,g)}break};case 145:{c[l>>2]=iA(c[q>>2]|0,c[(c[p>>2]|0)+4>>2]|0,c[(c[p>>2]|0)+16>>2]|0,(c[k>>2]|0)+44|0)|0;break};case 146:{Hf=(c[k>>2]|0)+88|0;b[Hf>>1]=b[Hf>>1]&-13|8;c[l>>2]=jA(c[q>>2]|0,c[(c[p>>2]|0)+4>>2]|0,c[(c[p>>2]|0)+16>>2]|0)|0;Hf=(c[k>>2]|0)+88|0;b[Hf>>1]=b[Hf>>1]&-13;break};case 144:{c[pe>>2]=c[(c[p>>2]|0)+16>>2];c[l>>2]=hA(c[q>>2]|0,c[pe>>2]|0)|0;if(c[pe>>2]|0)Hz(c[k>>2]|0,c[(c[pe>>2]|0)+8>>2]|0);break};case 147:{c[re>>2]=0;c[qe>>2]=0;c[ue>>2]=c[(c[(c[p>>2]|0)+16>>2]|0)+8>>2];c[te>>2]=c[c[ue>>2]>>2];c[l>>2]=zb[c[(c[te>>2]|0)+24>>2]&63](c[ue>>2]|0,qe)|0;Hz(c[k>>2]|0,c[ue>>2]|0);if(!(c[l>>2]|0)){c[c[qe>>2]>>2]=c[ue>>2];c[re>>2]=vz(c[k>>2]|0,c[(c[p>>2]|0)+4>>2]|0,0,-1,0)|0;if(c[re>>2]|0){c[(c[re>>2]|0)+32>>2]=c[qe>>2];break d}else{a[(c[q>>2]|0)+64>>0]=1;ub[c[(c[te>>2]|0)+28>>2]&31](c[qe>>2]|0)|0;break d}}break};case 14:{c[Fe>>2]=(c[$c>>2]|0)+((c[(c[p>>2]|0)+12>>2]|0)*40|0);c[Ee>>2]=(c[Fe>>2]|0)+40;c[ve>>2]=c[(c[(c[k>>2]|0)+56>>2]|0)+(c[(c[p>>2]|0)+4>>2]<<2)>>2];c[ye>>2]=c[(c[ve>>2]|0)+32>>2];c[Ce>>2]=c[c[ye>>2]>>2];c[xe>>2]=c[c[Ce>>2]>>2];c[Ae>>2]=c[c[Ee>>2]>>2];c[ze>>2]=c[c[Fe>>2]>>2];c[we>>2]=0;c[Be>>2]=c[(c[k>>2]|0)+12>>2];c[De>>2]=0;while(1){if((c[De>>2]|0)>=(c[Ae>>2]|0))break;c[(c[Be>>2]|0)+(c[De>>2]<<2)>>2]=(c[Ee>>2]|0)+(((c[De>>2]|0)+1|0)*40|0);c[De>>2]=(c[De>>2]|0)+1}Hf=(c[k>>2]|0)+88|0;b[Hf>>1]=b[Hf>>1]&-13|4;c[l>>2]=Ab[c[(c[xe>>2]|0)+32>>2]&15](c[ye>>2]|0,c[ze>>2]|0,c[(c[p>>2]|0)+16>>2]|0,c[Ae>>2]|0,c[Be>>2]|0)|0;Hf=(c[k>>2]|0)+88|0;b[Hf>>1]=b[Hf>>1]&-13;Hz(c[k>>2]|0,c[Ce>>2]|0);if(!(c[l>>2]|0))c[we>>2]=ub[c[(c[xe>>2]|0)+40>>2]&31](c[ye>>2]|0)|0;if(c[we>>2]|0)c[n>>2]=(c[(c[p>>2]|0)+8>>2]|0)-1;a[(c[ve>>2]|0)+25>>0]=0;break};case 148:{c[Ie>>2]=c[(c[(c[k>>2]|0)+56>>2]|0)+(c[(c[p>>2]|0)+4>>2]<<2)>>2];c[Ge>>2]=(c[$c>>2]|0)+((c[(c[p>>2]|0)+12>>2]|0)*40|0);if(a[(c[Ie>>2]|0)+25>>0]|0){_d(c[Ge>>2]|0);break d}c[Je>>2]=c[c[(c[Ie>>2]|0)+32>>2]>>2];c[Ke>>2]=c[c[Je>>2]>>2];c[He+0>>2]=0;c[He+4>>2]=0;c[He+8>>2]=0;c[He+12>>2]=0;c[He+16>>2]=0;c[He+20>>2]=0;c[He+24>>2]=0;c[He>>2]=c[Ge>>2];b[(c[Ge>>2]|0)+8>>1]=e[(c[Ge>>2]|0)+8>>1]&-16896|1;c[l>>2]=pb[c[(c[Ke>>2]|0)+44>>2]&31](c[(c[Ie>>2]|0)+32>>2]|0,He,c[(c[p>>2]|0)+8>>2]|0)|0;Hz(c[k>>2]|0,c[Je>>2]|0);if(c[He+20>>2]|0)c[l>>2]=c[He+20>>2];yk(c[Ge>>2]|0,d[x>>0]|0)|0;if(az(c[Ge>>2]|0)|0){Ef=870;break c}break};case 150:{c[Le>>2]=c[(c[(c[p>>2]|0)+16>>2]|0)+8>>2];c[Me>>2]=(c[$c>>2]|0)+((c[(c[p>>2]|0)+4>>2]|0)*40|0);c[l>>2]=yk(c[Me>>2]|0,1)|0;if(!(c[l>>2]|0)){c[l>>2]=zb[c[(c[c[Le>>2]>>2]|0)+76>>2]&63](c[Le>>2]|0,c[(c[Me>>2]|0)+16>>2]|0)|0;Hz(c[k>>2]|0,c[Le>>2]|0);Hf=(c[k>>2]|0)+88|0;b[Hf>>1]=b[Hf>>1]&-33}break};case 149:{c[Ne>>2]=0;c[Re>>2]=c[(c[(c[k>>2]|0)+56>>2]|0)+(c[(c[p>>2]|0)+4>>2]<<2)>>2];if(!(a[(c[Re>>2]|0)+25>>0]|0)){c[Se>>2]=c[c[(c[Re>>2]|0)+32>>2]>>2];c[Oe>>2]=c[c[Se>>2]>>2];Hf=(c[k>>2]|0)+88|0;b[Hf>>1]=b[Hf>>1]&-13|4;c[l>>2]=ub[c[(c[Oe>>2]|0)+36>>2]&31](c[(c[Re>>2]|0)+32>>2]|0)|0;Hf=(c[k>>2]|0)+88|0;b[Hf>>1]=b[Hf>>1]&-13;Hz(c[k>>2]|0,c[Se>>2]|0);if(!(c[l>>2]|0))c[Ne>>2]=ub[c[(c[Oe>>2]|0)+40>>2]&31](c[(c[Re>>2]|0)+32>>2]|0)|0;if(c[Ne>>2]|0)Ef=16;else{c[n>>2]=(c[(c[p>>2]|0)+8>>2]|0)-1;Ef=16}}break};case 15:{c[We>>2]=c[(c[(c[p>>2]|0)+16>>2]|0)+8>>2];c[Ve>>2]=c[c[We>>2]>>2];c[Xe>>2]=c[(c[p>>2]|0)+8>>2];if(c[(c[Ve>>2]|0)+52>>2]|0){a[Ze>>0]=a[(c[q>>2]|0)+68>>0]|0;c[Ye>>2]=c[(c[k>>2]|0)+12>>2];c[$e>>2]=(c[$c>>2]|0)+((c[(c[p>>2]|0)+12>>2]|0)*40|0);c[_e>>2]=0;while(1){if((c[_e>>2]|0)>=(c[Xe>>2]|0))break;c[(c[Ye>>2]|0)+(c[_e>>2]<<2)>>2]=c[$e>>2];c[$e>>2]=(c[$e>>2]|0)+40;c[_e>>2]=(c[_e>>2]|0)+1}a[(c[q>>2]|0)+68>>0]=a[(c[p>>2]|0)+3>>0]|0;c[l>>2]=xb[c[(c[Ve>>2]|0)+52>>2]&7](c[We>>2]|0,c[Xe>>2]|0,c[Ye>>2]|0,Ue)|0;a[(c[q>>2]|0)+68>>0]=a[Ze>>0]|0;Hz(c[k>>2]|0,c[We>>2]|0);if((c[l>>2]|0)==0?(c[(c[p>>2]|0)+4>>2]|0)!=0:0){Gf=Ue;Ff=c[Gf>>2]|0;Gf=c[Gf+4>>2]|0;Hf=r;c[Hf>>2]=Ff;c[Hf+4>>2]=Gf;Hf=(c[q>>2]|0)+32|0;c[Hf>>2]=Ff;c[Hf+4>>2]=Gf}if((c[l>>2]&255|0)==19?(d[(c[(c[p>>2]|0)+16>>2]|0)+16>>0]|0)!=0:0){if((d[(c[p>>2]|0)+3>>0]|0)==4){c[l>>2]=0;break d}if((d[(c[p>>2]|0)+3>>0]|0)==5)f=2;else f=d[(c[p>>2]|0)+3>>0]|0;a[(c[k>>2]|0)+86>>0]=f;break d}Hf=(c[k>>2]|0)+92|0;c[Hf>>2]=(c[Hf>>2]|0)+1}break};case 153:{if(c[(c[p>>2]|0)+8>>2]|0)c[n>>2]=(c[(c[p>>2]|0)+8>>2]|0)-1;if((c[(c[q>>2]|0)+172>>2]|0)!=0?((e[(c[k>>2]|0)+88>>1]|0)>>>11&1|0)==0:0){if(c[(c[p>>2]|0)+16>>2]|0)f=c[(c[p>>2]|0)+16>>2]|0;else f=c[(c[k>>2]|0)+168>>2]|0;c[af>>2]=f;if(f){c[df>>2]=lA(c[k>>2]|0,c[af>>2]|0)|0;sb[c[(c[q>>2]|0)+172>>2]&7](c[(c[q>>2]|0)+176>>2]|0,c[df>>2]|0);Xb(c[q>>2]|0,c[df>>2]|0)}}break};case 151:{Gf=Wc(c[(c[(c[q>>2]|0)+16>>2]|0)+(c[(c[p>>2]|0)+4>>2]<<4)+4>>2]|0)|0;Hf=c[w>>2]|0;c[Hf>>2]=Gf;c[Hf+4>>2]=0;break};case 152:{c[bf>>2]=c[(c[(c[q>>2]|0)+16>>2]|0)+(c[(c[p>>2]|0)+4>>2]<<4)+4>>2];c[cf>>2]=0;if((c[(c[p>>2]|0)+12>>2]|0)!=0?(c[cf>>2]=Wc(c[bf>>2]|0)|0,(c[cf>>2]|0)>>>0<(c[(c[p>>2]|0)+12>>2]|0)>>>0):0)c[cf>>2]=c[(c[p>>2]|0)+12>>2];Gf=kA(c[bf>>2]|0,c[cf>>2]|0)|0;Hf=c[w>>2]|0;c[Hf>>2]=Gf;c[Hf+4>>2]=((Gf|0)<0)<<31>>31;break};default:{}}while(0);do if((Ef|0)==28){Ef=0;if(c[(c[p>>2]|0)+4>>2]|0){Ef=33;break c}if(!(c[(c[k>>2]|0)+176>>2]|0)){Ef=33;break c}c[ef>>2]=c[(c[k>>2]|0)+176>>2];c[(c[k>>2]|0)+176>>2]=c[(c[ef>>2]|0)+4>>2];Ff=(c[k>>2]|0)+184|0;c[Ff>>2]=(c[Ff>>2]|0)+ -1;Zy(c[q>>2]|0,c[(c[k>>2]|0)+92>>2]|0);c[n>>2]=_y(c[ef>>2]|0)|0;Ff=(c[q>>2]|0)+32|0;Gf=c[Ff+4>>2]|0;Hf=r;c[Hf>>2]=c[Ff>>2];c[Hf+4>>2]=Gf;if((c[(c[p>>2]|0)+8>>2]|0)==4)c[n>>2]=(c[(c[(c[k>>2]|0)+4>>2]|0)+((c[n>>2]|0)*20|0)+8>>2]|0)-1;c[u>>2]=c[(c[k>>2]|0)+4>>2];c[$c>>2]=c[(c[k>>2]|0)+8>>2]}else if((Ef|0)==57){Ef=0;b[(c[w>>2]|0)+8>>1]=2562;c[(c[w>>2]|0)+16>>2]=c[(c[p>>2]|0)+16>>2];c[(c[w>>2]|0)+12>>2]=c[(c[p>>2]|0)+4>>2];a[(c[w>>2]|0)+10>>0]=a[x>>0]|0}else if((Ef|0)==453){Ef=0;if((e[(c[k>>2]|0)+88>>1]|0)>>>5&1){c[l>>2]=516;break}c[yf>>2]=0;c[xf>>2]=0;c[uf>>2]=c[(c[p>>2]|0)+8>>2];c[zf>>2]=c[(c[p>>2]|0)+12>>2];c[Af>>2]=(c[(c[q>>2]|0)+16>>2]|0)+(c[zf>>2]<<4);c[vf>>2]=c[(c[Af>>2]|0)+4>>2];if((d[c[p>>2]>>0]|0)==55){c[wf>>2]=1;if((d[(c[(c[Af>>2]|0)+12>>2]|0)+76>>0]|0)<(d[(c[k>>2]|0)+87>>0]|0))a[(c[k>>2]|0)+87>>0]=a[(c[(c[Af>>2]|0)+12>>2]|0)+76>>0]|0}else c[wf>>2]=0;if((d[(c[p>>2]|0)+3>>0]&2|0)!=0?(c[I>>2]=(c[$c>>2]|0)+((c[uf>>2]|0)*40|0),Mp(c[I>>2]|0)|0,c[uf>>2]=c[c[I>>2]>>2],(c[uf>>2]|0)<2):0){Ef=461;break c}f=c[p>>2]|0;if((a[(c[p>>2]|0)+1>>0]|0)!=-6){if((a[f+1>>0]|0)==-14)c[yf>>2]=c[(c[p>>2]|0)+16>>2]}else{c[xf>>2]=c[f+16>>2];c[yf>>2]=(e[(c[xf>>2]|0)+6>>1]|0)+(e[(c[xf>>2]|0)+8>>1]|0)}c[tf>>2]=vz(c[k>>2]|0,c[(c[p>>2]|0)+4>>2]|0,c[yf>>2]|0,c[zf>>2]|0,1)|0;if(!(c[tf>>2]|0)){Ef=871;break a}a[(c[tf>>2]|0)+25>>0]=1;Hf=(c[tf>>2]|0)+27|0;a[Hf>>0]=a[Hf>>0]&-9|8;c[(c[tf>>2]|0)+28>>2]=c[uf>>2];c[l>>2]=wz(c[vf>>2]|0,c[uf>>2]|0,c[wf>>2]|0,c[xf>>2]|0,c[c[tf>>2]>>2]|0)|0;c[(c[tf>>2]|0)+8>>2]=c[xf>>2];xz(c[c[tf>>2]>>2]|0,d[(c[p>>2]|0)+3>>0]&1);Hf=(c[tf>>2]|0)+27|0;a[Hf>>0]=a[Hf>>0]&-5|((a[(c[p>>2]|0)+1>>0]|0)!=-6&1)<<2&255}else if((Ef|0)==623){Ef=0;c[Cf>>2]=c[(c[(c[k>>2]|0)+56>>2]|0)+(c[(c[p>>2]|0)+4>>2]<<2)>>2];c[Bf>>2]=1;f=c[Cf>>2]|0;if(c[(c[Cf>>2]|0)+56>>2]|0)c[l>>2]=Jz(f,Bf)|0;else{c[Df>>2]=c[f>>2];c[l>>2]=Kz(c[Df>>2]|0,Bf)|0;a[(c[Cf>>2]|0)+26>>0]=0;c[(c[Cf>>2]|0)+60>>2]=0}a[(c[Cf>>2]|0)+25>>0]=c[Bf>>2];if(c[Bf>>2]|0)c[n>>2]=(c[(c[p>>2]|0)+8>>2]|0)-1}else if((Ef|0)==630){c[Lc>>2]=c[(c[(c[k>>2]|0)+56>>2]|0)+(c[(c[p>>2]|0)+4>>2]<<2)>>2];c[Mc>>2]=c[(c[p>>2]|0)+12>>2];c[l>>2]=zb[c[(c[p>>2]|0)+16>>2]&63](c[c[Lc>>2]>>2]|0,Mc)|0;Ef=631}while(0);do if((Ef|0)==631){c[(c[Lc>>2]|0)+60>>2]=0;Ef=(c[Lc>>2]|0)+25|0;if(!(c[Mc>>2]|0)){a[Ef>>0]=0;c[n>>2]=(c[(c[p>>2]|0)+8>>2]|0)-1;Ef=(c[k>>2]|0)+108+(d[(c[p>>2]|0)+3>>0]<<2)|0;c[Ef>>2]=(c[Ef>>2]|0)+1;Ef=16;break}else{a[Ef>>0]=1;Ef=16;break}}while(0);if((Ef|0)==16){Ef=0;if(c[(c[q>>2]|0)+240>>2]|0)break b;if(((c[(c[q>>2]|0)+292>>2]|0)!=0?(c[o>>2]|0)>>>0>=(c[ba>>2]|0)>>>0:0)?(c[ba>>2]=(c[o>>2]|0)+(c[(c[q>>2]|0)+300>>2]|0)-(((c[o>>2]|0)>>>0)%((c[(c[q>>2]|0)+300>>2]|0)>>>0)|0),(ub[c[(c[q>>2]|0)+292>>2]&31](c[(c[q>>2]|0)+296>>2]|0)|0)!=0):0){Ef=20;break}}c[n>>2]=(c[n>>2]|0)+1}switch(Ef|0){case 20:{c[l>>2]=9;break a};case 33:{c[(c[k>>2]|0)+80>>2]=c[(c[p>>2]|0)+4>>2];a[(c[k>>2]|0)+86>>0]=c[(c[p>>2]|0)+8>>2];c[(c[k>>2]|0)+76>>2]=c[n>>2];if(c[(c[k>>2]|0)+80>>2]|0){if(a[(c[p>>2]|0)+3>>0]|0)c[j>>2]=c[31264+((d[(c[p>>2]|0)+3>>0]|0)-1<<2)>>2];else c[j>>2]=0;c[s>>2]=31328;if((c[j>>2]|0)!=0?(c[(c[p>>2]|0)+16>>2]|0)!=0:0){Gf=(c[k>>2]|0)+44|0;Hf=c[q>>2]|0;Ff=c[(c[p>>2]|0)+16>>2]|0;c[g>>2]=c[j>>2];c[g+4>>2]=Ff;pn(Gf,Hf,31352,g)}else Ef=40;do if((Ef|0)==40){u=(c[k>>2]|0)+44|0;t=c[q>>2]|0;if(c[(c[p>>2]|0)+16>>2]|0){c[g>>2]=c[(c[p>>2]|0)+16>>2];pn(u,t,1200,g);break}else{c[g>>2]=c[j>>2];pn(u,t,31384,g);break}}while(0);Gf=c[(c[p>>2]|0)+4>>2]|0;Hf=c[s>>2]|0;f=c[(c[k>>2]|0)+168>>2]|0;Ff=c[(c[k>>2]|0)+44>>2]|0;c[g>>2]=c[n>>2];c[g+4>>2]=f;c[g+8>>2]=Ff;tc(Gf,Hf,g)}c[l>>2]=$y(c[k>>2]|0)|0;if((c[l>>2]|0)==5){c[l>>2]=5;c[(c[k>>2]|0)+80>>2]=5;Hf=r;f=Hf;f=c[f>>2]|0;Hf=Hf+4|0;Hf=c[Hf>>2]|0;Gf=c[q>>2]|0;Gf=Gf+32|0;Ff=Gf;c[Ff>>2]=f;Gf=Gf+4|0;c[Gf>>2]=Hf;Gf=c[o>>2]|0;Hf=c[k>>2]|0;Hf=Hf+108|0;Hf=Hf+16|0;Ff=c[Hf>>2]|0;Gf=Ff+Gf|0;c[Hf>>2]=Gf;Hf=c[l>>2]|0;i=m;return Hf|0}else{c[l>>2]=(c[(c[k>>2]|0)+80>>2]|0)!=0?1:101;Hf=r;f=Hf;f=c[f>>2]|0;Hf=Hf+4|0;Hf=c[Hf>>2]|0;Gf=c[q>>2]|0;Gf=Gf+32|0;Ff=Gf;c[Ff>>2]=f;Gf=Gf+4|0;c[Gf>>2]=Hf;Gf=c[o>>2]|0;Hf=c[k>>2]|0;Hf=Hf+108|0;Hf=Hf+16|0;Ff=c[Hf>>2]|0;Gf=Ff+Gf|0;c[Hf>>2]=Gf;Hf=c[l>>2]|0;i=m;return Hf|0}};case 76:{c[l>>2]=9;break a};case 79:{c[(c[k>>2]|0)+72>>2]=(c[(c[k>>2]|0)+72>>2]|0)+2|1;Hf=(c[$c>>2]|0)+((c[(c[p>>2]|0)+4>>2]|0)*40|0)|0;c[(c[k>>2]|0)+20>>2]=Hf;c[lf>>2]=Hf;c[mf>>2]=0;while(1){if((c[mf>>2]|0)>=(c[(c[p>>2]|0)+8>>2]|0))break;if((e[(c[lf>>2]|0)+((c[mf>>2]|0)*40|0)+8>>1]&4096|0)!=0?(Ak((c[lf>>2]|0)+((c[mf>>2]|0)*40|0)|0)|0)!=0:0){Ef=871;break a}dz((c[lf>>2]|0)+((c[mf>>2]|0)*40|0)|0)|0;c[mf>>2]=(c[mf>>2]|0)+1}if(a[(c[q>>2]|0)+64>>0]|0){Ef=871;break a}c[(c[k>>2]|0)+76>>2]=(c[n>>2]|0)+1;c[l>>2]=100;Hf=r;f=Hf;f=c[f>>2]|0;Hf=Hf+4|0;Hf=c[Hf>>2]|0;Gf=c[q>>2]|0;Gf=Gf+32|0;Ff=Gf;c[Ff>>2]=f;Gf=Gf+4|0;c[Gf>>2]=Hf;Gf=c[o>>2]|0;Hf=c[k>>2]|0;Hf=Hf+108|0;Hf=Hf+16|0;Ff=c[Hf>>2]|0;Gf=Ff+Gf|0;c[Hf>>2]=Gf;Hf=c[l>>2]|0;i=m;return Hf|0};case 167:{c[l>>2]=20;break};case 381:{c[(c[k>>2]|0)+76>>2]=c[n>>2];a[(c[q>>2]|0)+62>>0]=0;c[l>>2]=5;c[(c[k>>2]|0)+80>>2]=5;Hf=r;f=Hf;f=c[f>>2]|0;Hf=Hf+4|0;Hf=c[Hf>>2]|0;Gf=c[q>>2]|0;Gf=Gf+32|0;Ff=Gf;c[Ff>>2]=f;Gf=Gf+4|0;c[Gf>>2]=Hf;Gf=c[o>>2]|0;Hf=c[k>>2]|0;Hf=Hf+108|0;Hf=Hf+16|0;Ff=c[Hf>>2]|0;Gf=Ff+Gf|0;c[Hf>>2]=Gf;Hf=c[l>>2]|0;i=m;return Hf|0};case 409:{if(!(c[lb>>2]|0)){Hf=bz(c[k>>2]|0,1)|0;c[l>>2]=Hf;if(Hf){Hf=r;f=Hf;f=c[f>>2]|0;Hf=Hf+4|0;Hf=c[Hf>>2]|0;Gf=c[q>>2]|0;Gf=Gf+32|0;Ff=Gf;c[Ff>>2]=f;Gf=Gf+4|0;c[Gf>>2]=Hf;Gf=c[o>>2]|0;Hf=c[k>>2]|0;Hf=Hf+108|0;Hf=Hf+16|0;Ff=c[Hf>>2]|0;Gf=Ff+Gf|0;c[Hf>>2]=Gf;Hf=c[l>>2]|0;i=m;return Hf|0}a[(c[q>>2]|0)+62>>0]=c[jb>>2];if(($y(c[k>>2]|0)|0)==5){c[(c[k>>2]|0)+76>>2]=c[n>>2];a[(c[q>>2]|0)+62>>0]=1-(c[jb>>2]|0);c[l>>2]=5;c[(c[k>>2]|0)+80>>2]=5;Hf=r;f=Hf;f=c[f>>2]|0;Hf=Hf+4|0;Hf=c[Hf>>2]|0;Gf=c[q>>2]|0;Gf=Gf+32|0;Ff=Gf;c[Ff>>2]=f;Gf=Gf+4|0;c[Gf>>2]=Hf;Gf=c[o>>2]|0;Hf=c[k>>2]|0;Hf=Hf+108|0;Hf=Hf+16|0;Ff=c[Hf>>2]|0;Gf=Ff+Gf|0;c[Hf>>2]=Gf;Hf=c[l>>2]|0;i=m;return Hf|0}}else{Ik(c[q>>2]|0,516);a[(c[q>>2]|0)+62>>0]=1}Jk(c[q>>2]|0);if(!(c[(c[k>>2]|0)+80>>2]|0)){c[l>>2]=101;Hf=r;f=Hf;f=c[f>>2]|0;Hf=Hf+4|0;Hf=c[Hf>>2]|0;Gf=c[q>>2]|0;Gf=Gf+32|0;Ff=Gf;c[Ff>>2]=f;Gf=Gf+4|0;c[Gf>>2]=Hf;Gf=c[o>>2]|0;Hf=c[k>>2]|0;Hf=Hf+108|0;Hf=Hf+16|0;Ff=c[Hf>>2]|0;Gf=Ff+Gf|0;c[Hf>>2]=Gf;Hf=c[l>>2]|0;i=m;return Hf|0}else{c[l>>2]=1;Hf=r;f=Hf;f=c[f>>2]|0;Hf=Hf+4|0;Hf=c[Hf>>2]|0;Gf=c[q>>2]|0;Gf=Gf+32|0;Ff=Gf;c[Ff>>2]=f;Gf=Gf+4|0;c[Gf>>2]=Hf;Gf=c[o>>2]|0;Hf=c[k>>2]|0;Hf=Hf+108|0;Hf=Hf+16|0;Ff=c[Hf>>2]|0;Gf=Ff+Gf|0;c[Hf>>2]=Gf;Hf=c[l>>2]|0;i=m;return Hf|0}};case 422:{c[l>>2]=8;break};case 425:{c[(c[k>>2]|0)+76>>2]=c[n>>2];c[l>>2]=5;c[(c[k>>2]|0)+80>>2]=5;Hf=r;f=Hf;f=c[f>>2]|0;Hf=Hf+4|0;Hf=c[Hf>>2]|0;Gf=c[q>>2]|0;Gf=Gf+32|0;Ff=Gf;c[Ff>>2]=f;Gf=Gf+4|0;c[Gf>>2]=Hf;Gf=c[o>>2]|0;Hf=c[k>>2]|0;Hf=Hf+108|0;Hf=Hf+16|0;Ff=c[Hf>>2]|0;Gf=Ff+Gf|0;c[Hf>>2]=Gf;Hf=c[l>>2]|0;i=m;return Hf|0};case 461:{c[l>>2]=kj(72320)|0;break};case 557:{c[l>>2]=13;break};case 566:{c[l>>2]=13;break};case 869:{Hf=r;f=Hf;f=c[f>>2]|0;Hf=Hf+4|0;Hf=c[Hf>>2]|0;Gf=c[q>>2]|0;Gf=Gf+32|0;Ff=Gf;c[Ff>>2]=f;Gf=Gf+4|0;c[Gf>>2]=Hf;Gf=c[o>>2]|0;Hf=c[k>>2]|0;Hf=Hf+108|0;Hf=Hf+16|0;Ff=c[Hf>>2]|0;Gf=Ff+Gf|0;c[Hf>>2]=Gf;Hf=c[l>>2]|0;i=m;return Hf|0};case 870:{pn((c[k>>2]|0)+44|0,c[q>>2]|0,1176,g);c[l>>2]=18;break a}}if(a[(c[q>>2]|0)+64>>0]|0)c[l>>2]=7;if((c[l>>2]|0)==3082)break a;Gf=(c[k>>2]|0)+44|0;Hf=c[q>>2]|0;c[g>>2]=ge(c[l>>2]|0)|0;pn(Gf,Hf,1200,g);break a}while(0);c[l>>2]=9;c[(c[k>>2]|0)+80>>2]=c[l>>2];Gf=(c[k>>2]|0)+44|0;Hf=c[q>>2]|0;c[g>>2]=ge(c[l>>2]|0)|0;pn(Gf,Hf,1200,g)}while(0);if((Ef|0)==871){a[(c[q>>2]|0)+64>>0]=1;pn((c[k>>2]|0)+44|0,c[q>>2]|0,5400,g);c[l>>2]=7}c[(c[k>>2]|0)+80>>2]=c[l>>2];Hf=c[l>>2]|0;Ff=c[(c[k>>2]|0)+168>>2]|0;Gf=c[(c[k>>2]|0)+44>>2]|0;c[g>>2]=c[n>>2];c[g+4>>2]=Ff;c[g+8>>2]=Gf;tc(Hf,31984,g);$y(c[k>>2]|0)|0;if((c[l>>2]|0)==3082)a[(c[q>>2]|0)+64>>0]=1;c[l>>2]=1;if((d[nc>>0]|0)<=0){Hf=r;f=Hf;f=c[f>>2]|0;Hf=Hf+4|0;Hf=c[Hf>>2]|0;Gf=c[q>>2]|0;Gf=Gf+32|0;Ff=Gf;c[Ff>>2]=f;Gf=Gf+4|0;c[Gf>>2]=Hf;Gf=c[o>>2]|0;Hf=c[k>>2]|0;Hf=Hf+108|0;Hf=Hf+16|0;Ff=c[Hf>>2]|0;Gf=Ff+Gf|0;c[Hf>>2]=Gf;Hf=c[l>>2]|0;i=m;return Hf|0}as(c[q>>2]|0,(d[nc>>0]|0)-1|0);Hf=r;f=Hf;f=c[f>>2]|0;Hf=Hf+4|0;Hf=c[Hf>>2]|0;Gf=c[q>>2]|0;Gf=Gf+32|0;Ff=Gf;c[Ff>>2]=f;Gf=Gf+4|0;c[Gf>>2]=Hf;Gf=c[o>>2]|0;Hf=c[k>>2]|0;Hf=Hf+108|0;Hf=Hf+16|0;Ff=c[Hf>>2]|0;Gf=Ff+Gf|0;c[Hf>>2]=Gf;Hf=c[l>>2]|0;i=m;return Hf|0}function Vy(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;b=i;i=i+32|0;g=b+16|0;d=b+12|0;h=b+8|0;e=b+4|0;f=b;c[g>>2]=a;c[d>>2]=0;c[h>>2]=0;while(1){if((c[h>>2]|0)>=(c[(c[g>>2]|0)+20>>2]|0))break;c[e>>2]=c[(c[(c[g>>2]|0)+16>>2]|0)+(c[h>>2]<<4)+4>>2];if((c[e>>2]|0)!=0?(c[f>>2]=Xy(Sb(c[e>>2]|0)|0)|0,((c[f>>2]|0)>0?(c[(c[g>>2]|0)+212>>2]|0)!=0:0)&(c[d>>2]|0)==0):0)c[d>>2]=xb[c[(c[g>>2]|0)+212>>2]&7](c[(c[g>>2]|0)+216>>2]|0,c[g>>2]|0,c[(c[(c[g>>2]|0)+16>>2]|0)+(c[h>>2]<<4)>>2]|0,c[f>>2]|0)|0;c[h>>2]=(c[h>>2]|0)+1}i=b;return c[d>>2]|0}function Wy(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;d=i;i=i+16|0;g=d+8|0;f=d+4|0;e=d;h=d+12|0;c[g>>2]=b;c[f>>2]=c[c[g>>2]>>2];c[e>>2]=c[(c[g>>2]|0)+80>>2];b=c[f>>2]|0;if(!(c[(c[g>>2]|0)+44>>2]|0)){Nc(b,c[e>>2]|0);b=c[e>>2]|0;i=d;return b|0}a[h>>0]=a[b+64>>0]|0;kh();if(!(c[(c[f>>2]|0)+232>>2]|0)){b=rf(c[f>>2]|0)|0;c[(c[f>>2]|0)+232>>2]=b}sf(c[(c[f>>2]|0)+232>>2]|0,-1,c[(c[g>>2]|0)+44>>2]|0,1,-1);lh();a[(c[f>>2]|0)+64>>0]=a[h>>0]|0;c[(c[f>>2]|0)+52>>2]=c[e>>2];b=c[e>>2]|0;i=d;return b|0}function Xy(a){a=a|0;var b=0,d=0;b=i;i=i+16|0;d=b;c[d>>2]=a;a=Yy(c[(c[d>>2]|0)+208>>2]|0)|0;i=b;return a|0}function Yy(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+16|0;e=b+4|0;d=b;c[e>>2]=a;c[d>>2]=0;if(!(c[e>>2]|0)){e=c[d>>2]|0;i=b;return e|0}c[d>>2]=c[(c[e>>2]|0)+12>>2];c[(c[e>>2]|0)+12>>2]=0;e=c[d>>2]|0;i=b;return e|0}function Zy(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;c[(c[f>>2]|0)+80>>2]=c[e>>2];a=(c[f>>2]|0)+84|0;c[a>>2]=(c[a>>2]|0)+(c[e>>2]|0);i=d;return}function _y(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;d=i;i=i+16|0;b=d+4|0;e=d;c[b>>2]=a;c[e>>2]=c[c[b>>2]>>2];c[(c[e>>2]|0)+200>>2]=c[(c[b>>2]|0)+16>>2];c[(c[e>>2]|0)+196>>2]=c[(c[b>>2]|0)+56>>2];c[(c[e>>2]|0)+4>>2]=c[(c[b>>2]|0)+8>>2];c[(c[e>>2]|0)+32>>2]=c[(c[b>>2]|0)+48>>2];c[(c[e>>2]|0)+8>>2]=c[(c[b>>2]|0)+12>>2];c[(c[e>>2]|0)+28>>2]=c[(c[b>>2]|0)+52>>2];c[(c[e>>2]|0)+56>>2]=c[(c[b>>2]|0)+20>>2];c[(c[e>>2]|0)+36>>2]=c[(c[b>>2]|0)+40>>2];g=(c[b>>2]|0)+32|0;f=c[g+4>>2]|0;a=(c[c[e>>2]>>2]|0)+32|0;c[a>>2]=c[g>>2];c[a+4>>2]=f;c[(c[e>>2]|0)+92>>2]=c[(c[b>>2]|0)+68>>2];i=d;return c[(c[b>>2]|0)+44>>2]|0}function $y(b){b=b|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;f=i;i=i+32|0;k=f+24|0;j=f+20|0;o=f+16|0;h=f+12|0;n=f+8|0;g=f+4|0;l=f;c[j>>2]=b;c[h>>2]=c[c[j>>2]>>2];if(a[(c[c[j>>2]>>2]|0)+64>>0]|0)c[(c[j>>2]|0)+80>>2]=7;if(c[(c[j>>2]|0)+200>>2]|0)_E(c[(c[j>>2]|0)+200>>2]|0,0,c[(c[j>>2]|0)+196>>2]|0)|0;OC(c[j>>2]|0);if((c[(c[j>>2]|0)+40>>2]|0)!=-1108210269){c[k>>2]=0;b=c[k>>2]|0;i=f;return b|0}if((c[(c[j>>2]|0)+76>>2]|0)>=0?((e[(c[j>>2]|0)+88>>1]|0)>>>9&1|0)!=0:0){c[g>>2]=0;c[n>>2]=c[(c[j>>2]|0)+80>>2]&255;if((c[n>>2]|0)==7|(c[n>>2]|0)==10|(c[n>>2]|0)==9)b=1;else b=(c[n>>2]|0)==13;c[l>>2]=b&1;do if((c[l>>2]|0)!=0?(c[n>>2]|0)!=9?1:((e[(c[j>>2]|0)+88>>1]|0)>>>8&1|0)==0:0){if((c[n>>2]|0)==7|(c[n>>2]|0)==13?((e[(c[j>>2]|0)+88>>1]|0)>>>7&1|0)!=0:0){c[g>>2]=2;break}Ik(c[h>>2]|0,516);Jk(c[h>>2]|0);a[(c[h>>2]|0)+62>>0]=1}while(0);if(!(c[(c[j>>2]|0)+80>>2]|0))bz(c[j>>2]|0,0)|0;if((c[(c[h>>2]|0)+304>>2]|0)>0?(c[(c[h>>2]|0)+328>>2]|0)==0:0)m=38;else if((d[(c[h>>2]|0)+62>>0]|0)!=0?(c[(c[h>>2]|0)+156>>2]|0)==(((e[(c[j>>2]|0)+88>>1]|0)>>>8&1|0)==0|0):0){if((c[(c[j>>2]|0)+80>>2]|0)!=0?(c[l>>2]|0)!=0?1:(d[(c[j>>2]|0)+86>>0]|0)!=3:0)Ik(c[h>>2]|0,0);else m=25;do if((m|0)==25){c[o>>2]=bz(c[j>>2]|0,1)|0;do if(c[o>>2]|0){if(!((e[(c[j>>2]|0)+88>>1]|0)>>>8&1)){c[o>>2]=787;break}c[k>>2]=1;b=c[k>>2]|0;i=f;return b|0}else c[o>>2]=PC(c[h>>2]|0,c[j>>2]|0)|0;while(0);if((c[o>>2]|0)==5?((e[(c[j>>2]|0)+88>>1]|0)>>>8&1|0)!=0:0){c[k>>2]=5;b=c[k>>2]|0;i=f;return b|0}if(c[o>>2]|0){c[(c[j>>2]|0)+80>>2]=c[o>>2];Ik(c[h>>2]|0,0);break}else{b=(c[h>>2]|0)+504|0;c[b>>2]=0;c[b+4>>2]=0;b=(c[h>>2]|0)+512|0;c[b>>2]=0;c[b+4>>2]=0;b=(c[h>>2]|0)+24|0;c[b>>2]=c[b>>2]&-16777217;bs(c[h>>2]|0);break}}while(0);c[(c[h>>2]|0)+500>>2]=0}else m=38;do if((m|0)==38?(c[g>>2]|0)==0:0){if((c[(c[j>>2]|0)+80>>2]|0)!=0?(d[(c[j>>2]|0)+86>>0]|0)!=3:0)if((d[(c[j>>2]|0)+86>>0]|0)==2){c[g>>2]=2;break}else{Ik(c[h>>2]|0,516);Jk(c[h>>2]|0);a[(c[h>>2]|0)+62>>0]=1;break}c[g>>2]=1}while(0);if((c[g>>2]|0)!=0?(c[o>>2]=cz(c[j>>2]|0,c[g>>2]|0)|0,(c[o>>2]|0)!=0):0){if(!((c[(c[j>>2]|0)+80>>2]|0)!=0?(c[(c[j>>2]|0)+80>>2]&255|0)!=19:0)){c[(c[j>>2]|0)+80>>2]=c[o>>2];Xb(c[h>>2]|0,c[(c[j>>2]|0)+44>>2]|0);c[(c[j>>2]|0)+44>>2]=0}Ik(c[h>>2]|0,516);Jk(c[h>>2]|0);a[(c[h>>2]|0)+62>>0]=1}if((e[(c[j>>2]|0)+88>>1]|0)>>>4&1){l=c[h>>2]|0;if((c[g>>2]|0)!=2)Zy(l,c[(c[j>>2]|0)+92>>2]|0);else Zy(l,0);c[(c[j>>2]|0)+92>>2]=0}}if((c[(c[j>>2]|0)+76>>2]|0)>=0){b=(c[h>>2]|0)+148|0;c[b>>2]=(c[b>>2]|0)+ -1;if(!((e[(c[j>>2]|0)+88>>1]|0)>>>8&1)){b=(c[h>>2]|0)+156|0;c[b>>2]=(c[b>>2]|0)+ -1}if((e[(c[j>>2]|0)+88>>1]|0)>>>9&1){b=(c[h>>2]|0)+152|0;c[b>>2]=(c[b>>2]|0)+ -1}}c[(c[j>>2]|0)+40>>2]=1369188723;if(a[(c[c[j>>2]>>2]|0)+64>>0]|0)c[(c[j>>2]|0)+80>>2]=7;c[k>>2]=(c[(c[j>>2]|0)+80>>2]|0)==5?5:0;b=c[k>>2]|0;i=f;return b|0}function az(a){a=a|0;var b=0,d=0,f=0,g=0;b=i;i=i+16|0;d=b+8|0;g=b+4|0;f=b;c[g>>2]=a;if(!((e[(c[g>>2]|0)+8>>1]|0)&18)){c[d>>2]=0;g=c[d>>2]|0;i=b;return g|0}c[f>>2]=c[(c[g>>2]|0)+12>>2];if((e[(c[g>>2]|0)+8>>1]|0)&16384)c[f>>2]=(c[f>>2]|0)+(c[c[g>>2]>>2]|0);c[d>>2]=(c[f>>2]|0)>(c[(c[(c[g>>2]|0)+32>>2]|0)+88>>2]|0)&1;g=c[d>>2]|0;i=b;return g|0}function bz(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0;k=i;i=i+32|0;h=k;j=k+16|0;f=k+12|0;l=k+8|0;g=k+4|0;c[f>>2]=b;c[l>>2]=d;c[g>>2]=c[c[f>>2]>>2];if(!((c[l>>2]|0)!=0?(d=(c[g>>2]|0)+504|0,b=(c[g>>2]|0)+512|0,b=bF(c[d>>2]|0,c[d+4>>2]|0,c[b>>2]|0,c[b+4>>2]|0)|0,d=D,(d|0)>0|(d|0)==0&b>>>0>0):0))e=3;do if((e|0)==3){if((c[l>>2]|0)==0?(b=(c[f>>2]|0)+144|0,d=c[b+4>>2]|0,(d|0)>0|(d|0)==0&(c[b>>2]|0)>>>0>0):0)break;c[j>>2]=0;b=c[j>>2]|0;i=k;return b|0}while(0);c[(c[f>>2]|0)+80>>2]=787;a[(c[f>>2]|0)+86>>0]=2;pn((c[f>>2]|0)+44|0,c[g>>2]|0,24400,h);c[j>>2]=1;b=c[j>>2]|0;i=k;return b|0}function cz(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;h=i;i=i+32|0;g=h+28|0;d=h+24|0;f=h+20|0;e=h+16|0;k=h+12|0;m=h+8|0;j=h+4|0;l=h;c[g>>2]=a;c[d>>2]=b;c[f>>2]=c[c[g>>2]>>2];c[e>>2]=0;if(!(c[(c[f>>2]|0)+500>>2]|0)){a=c[e>>2]|0;i=h;return a|0}if(!(c[(c[g>>2]|0)+104>>2]|0)){a=c[e>>2]|0;i=h;return a|0}c[m>>2]=(c[(c[g>>2]|0)+104>>2]|0)-1;c[k>>2]=0;while(1){if((c[k>>2]|0)>=(c[(c[f>>2]|0)+20>>2]|0))break;c[j>>2]=0;c[l>>2]=c[(c[(c[f>>2]|0)+16>>2]|0)+(c[k>>2]<<4)+4>>2];if(c[l>>2]|0){if((c[d>>2]|0)==2)c[j>>2]=tz(c[l>>2]|0,2,c[m>>2]|0)|0;if(!(c[j>>2]|0))c[j>>2]=tz(c[l>>2]|0,1,c[m>>2]|0)|0;if(!(c[e>>2]|0))c[e>>2]=c[j>>2]}c[k>>2]=(c[k>>2]|0)+1}a=(c[f>>2]|0)+500|0;c[a>>2]=(c[a>>2]|0)+ -1;c[(c[g>>2]|0)+104>>2]=0;if(!(c[e>>2]|0)){if((c[d>>2]|0)==2)c[e>>2]=rz(c[f>>2]|0,2,c[m>>2]|0)|0;if(!(c[e>>2]|0))c[e>>2]=rz(c[f>>2]|0,1,c[m>>2]|0)|0}if((c[d>>2]|0)!=2){a=c[e>>2]|0;i=h;return a|0}a=(c[g>>2]|0)+152|0;m=c[a+4>>2]|0;l=(c[f>>2]|0)+504|0;c[l>>2]=c[a>>2];c[l+4>>2]=m;l=(c[g>>2]|0)+160|0;m=c[l+4>>2]|0;a=(c[f>>2]|0)+512|0;c[a>>2]=c[l>>2];c[a+4>>2]=m;a=c[e>>2]|0;i=h;return a|0}function dz(a){a=a|0;var b=0,d=0,f=0;b=i;i=i+16|0;d=b+4|0;f=b;c[f>>2]=a;if(((e[(c[f>>2]|0)+8>>1]|0)&514|0)!=2){c[d>>2]=0;f=c[d>>2]|0;i=b;return f|0}else{c[d>>2]=NC(c[f>>2]|0)|0;f=c[d>>2]|0;i=b;return f|0}return 0}function ez(a){a=a|0;var d=0,f=0,g=0;f=i;i=i+16|0;d=f+4|0;g=f;c[g>>2]=a;a=e[(c[g>>2]|0)+8>>1]|0;do if(!((e[(c[g>>2]|0)+8>>1]|0)&12))if(a&18){b[d>>1]=MC(c[g>>2]|0)|0;break}else{b[d>>1]=0;break}else b[d>>1]=a&12;while(0);i=f;return b[d>>1]|0}function fz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=i;i=i+16|0;f=e+12|0;h=e+8|0;g=e;c[h>>2]=a;a=g;c[a>>2]=b;c[a+4>>2]=d;a=g;d=c[h>>2]|0;if(!((c[a>>2]|0)==0?(c[a+4>>2]|0)==-2147483648:0)){a=g;a=ZE(0,0,c[a>>2]|0,c[a+4>>2]|0)|0;c[f>>2]=_m(d,a,D)|0;a=c[f>>2]|0;i=e;return a|0}a=d;b=c[a+4>>2]|0;if((b|0)>0|(b|0)==0&(c[a>>2]|0)>>>0>=0){c[f>>2]=1;a=c[f>>2]|0;i=e;return a|0}else{b=g;a=c[h>>2]|0;d=a;b=ZE(c[d>>2]|0,c[d+4>>2]|0,c[b>>2]|0,c[b+4>>2]|0)|0;c[a>>2]=b;c[a+4>>2]=D;c[f>>2]=0;a=c[f>>2]|0;i=e;return a|0}return 0}function gz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;f=i;i=i+64|0;k=f+60|0;h=f+56|0;m=f+48|0;o=f+40|0;n=f+32|0;j=f+24|0;l=f+16|0;e=f+8|0;g=f;c[h>>2]=a;a=m;c[a>>2]=b;c[a+4>>2]=d;b=c[h>>2]|0;d=c[b+4>>2]|0;a=o;c[a>>2]=c[b>>2];c[a+4>>2]=d;a=o;a=jF(c[a>>2]|0,c[a+4>>2]|0,0,1)|0;d=n;c[d>>2]=a;c[d+4>>2]=D;d=o;d=kF(c[d>>2]|0,c[d+4>>2]|0,0,1)|0;a=j;c[a>>2]=d;c[a+4>>2]=D;a=m;a=jF(c[a>>2]|0,c[a+4>>2]|0,0,1)|0;d=l;c[d>>2]=a;c[d+4>>2]=D;d=m;d=kF(c[d>>2]|0,c[d+4>>2]|0,0,1)|0;a=e;c[a>>2]=d;c[a+4>>2]=D;a=n;d=l;d=(c[d>>2]|0)==0&(c[d+4>>2]|0)==0;do if((c[a>>2]|0)==0&(c[a+4>>2]|0)==0){if(!d){o=j;a=l;a=lF(c[o>>2]|0,c[o+4>>2]|0,c[a>>2]|0,c[a+4>>2]|0)|0;o=g;c[o>>2]=a;c[o+4>>2]=D;break}a=m;o=c[h>>2]|0;b=o;a=lF(c[b>>2]|0,c[b+4>>2]|0,c[a>>2]|0,c[a+4>>2]|0)|0;c[o>>2]=a;c[o+4>>2]=D;c[k>>2]=0;o=c[k>>2]|0;i=f;return o|0}else{if(d){o=n;a=e;a=lF(c[o>>2]|0,c[o+4>>2]|0,c[a>>2]|0,c[a+4>>2]|0)|0;o=g;c[o>>2]=a;c[o+4>>2]=D;break}c[k>>2]=1;o=c[k>>2]|0;i=f;return o|0}while(0);b=g;d=c[b+4>>2]|0;o=g;a=c[o+4>>2]|0;if((d|0)<-1|(d|0)==-1&(c[b>>2]|0)>>>0<2147483648|((a|0)>0|(a|0)==0&(c[o>>2]|0)>>>0>=2147483648)){c[k>>2]=1;o=c[k>>2]|0;i=f;return o|0}o=g;o=lF(c[o>>2]|0,c[o+4>>2]|0,0,1)|0;a=g;c[a>>2]=o;c[a+4>>2]=D;a=j;o=e;o=lF(c[a>>2]|0,c[a+4>>2]|0,c[o>>2]|0,c[o+4>>2]|0)|0;if(_m(g,o,D)|0){c[k>>2]=1;o=c[k>>2]|0;i=f;return o|0}else{b=g;a=c[b+4>>2]|0;o=c[h>>2]|0;c[o>>2]=c[b>>2];c[o+4>>2]=a;c[k>>2]=0;o=c[k>>2]|0;i=f;return o|0}return 0}function hz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0;e=i;i=i+32|0;k=e+16|0;j=e+12|0;g=e+8|0;h=e+4|0;f=e;c[k>>2]=a;c[j>>2]=b;c[g>>2]=d;c[h>>2]=(c[k>>2]|0)+204;a:while(1){if(!(c[c[h>>2]>>2]|0))break;c[f>>2]=c[c[h>>2]>>2];do if((c[j>>2]|0)>=0){if((c[c[f>>2]>>2]|0)==(c[j>>2]|0)){if((c[(c[f>>2]|0)+4>>2]|0)>31)break;if(!(c[g>>2]&1<>2]|0)+4>>2]))break}c[h>>2]=(c[f>>2]|0)+16;continue a}while(0);if(c[(c[f>>2]|0)+12>>2]|0)rb[c[(c[f>>2]|0)+12>>2]&31](c[(c[f>>2]|0)+8>>2]|0);c[c[h>>2]>>2]=c[(c[f>>2]|0)+16>>2];Xb(c[c[k>>2]>>2]|0,c[f>>2]|0)}i=e;return}function iz(b){b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;e=d+4|0;f=d;c[f>>2]=b;b=c[f>>2]|0;do if(a[(c[f>>2]|0)+26>>0]|0)c[e>>2]=LC(b)|0;else{if((c[b>>2]|0)!=0?(iC(c[c[f>>2]>>2]|0)|0)!=0:0){c[e>>2]=jC(c[f>>2]|0)|0;break}c[e>>2]=0}while(0);i=d;return c[e>>2]|0}function jz(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;a=KC(c[f>>2]|0,c[e>>2]|0)|0;i=d;return a|0}function kz(f,g){f=f|0;g=g|0;var h=0,j=0,k=0,l=0;h=i;i=i+16|0;k=h+8|0;j=h+4|0;l=h;c[k>>2]=f;c[j>>2]=g;if(e[(c[k>>2]|0)+44>>1]|0){l=c[k>>2]|0;l=l+24|0;l=l+12|0;l=c[l>>2]|0;f=c[j>>2]|0;c[f>>2]=l;i=h;return 0}c[l>>2]=b[(c[k>>2]|0)+76>>1];Mw(c[(c[k>>2]|0)+120+(c[l>>2]<<2)>>2]|0,e[(c[k>>2]|0)+78+(c[l>>2]<<1)>>1]|0,(c[k>>2]|0)+24|0);l=(c[k>>2]|0)+72|0;a[l>>0]=d[l>>0]|2;l=c[k>>2]|0;l=l+24|0;l=l+12|0;l=c[l>>2]|0;f=c[j>>2]|0;c[f>>2]=l;i=h;return 0}function lz(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+16|0;f=d+4|0;e=d;c[f>>2]=a;c[e>>2]=b;a=KC(c[f>>2]|0,c[e>>2]|0)|0;i=d;return a|0}function mz(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;m=i;i=i+32|0;q=m+28|0;o=m+24|0;k=m+20|0;n=m+16|0;j=m+12|0;r=m+8|0;p=m+4|0;l=m;c[q>>2]=d;c[o>>2]=e;c[k>>2]=f;c[n>>2]=g;c[j>>2]=h;c[p>>2]=0;c[l>>2]=0;h=c[q>>2]|0;if(c[n>>2]|0)c[r>>2]=jz(h,p)|0;else c[r>>2]=lz(h,p)|0;if(((c[o>>2]|0)+(c[k>>2]|0)|0)>>>0<=(c[p>>2]|0)>>>0){c[(c[j>>2]|0)+16>>2]=(c[r>>2]|0)+(c[o>>2]|0);b[(c[j>>2]|0)+8>>1]=4112;c[(c[j>>2]|0)+12>>2]=c[k>>2];d=c[l>>2]|0;i=m;return d|0}b[(c[j>>2]|0)+8>>1]=1;d=Lp(c[j>>2]|0,(c[k>>2]|0)+2|0)|0;c[l>>2]=d;if(d){d=c[l>>2]|0;i=m;return d|0}p=c[q>>2]|0;r=c[o>>2]|0;q=c[k>>2]|0;o=c[(c[j>>2]|0)+16>>2]|0;if(c[n>>2]|0)c[l>>2]=My(p,r,q,o)|0;else c[l>>2]=ff(p,r,q,o)|0;if(!(c[l>>2]|0)){a[(c[(c[j>>2]|0)+16>>2]|0)+(c[k>>2]|0)>>0]=0;a[(c[(c[j>>2]|0)+16>>2]|0)+((c[k>>2]|0)+1)>>0]=0;b[(c[j>>2]|0)+8>>1]=528;c[(c[j>>2]|0)+12>>2]=c[k>>2];d=c[l>>2]|0;i=m;return d|0}else{Bd(c[j>>2]|0);d=c[l>>2]|0;i=m;return d|0}return 0}function nz(a,b){a=a|0;b=b|0;var d=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;f=i;i=i+48|0;d=f+32|0;k=f+28|0;j=f+24|0;m=f+20|0;l=f+16|0;h=f+8|0;g=f;c[k>>2]=a;c[j>>2]=b;c[m>>2]=e[(c[k>>2]|0)+8>>1];if(c[m>>2]&1){c[d>>2]=0;a=c[d>>2]|0;i=f;return a|0}if(!(c[m>>2]&4)){if(c[m>>2]&8){c[d>>2]=7;a=c[d>>2]|0;i=f;return a|0}c[l>>2]=c[(c[k>>2]|0)+12>>2];if(c[m>>2]&16384)c[l>>2]=(c[l>>2]|0)+(c[c[k>>2]>>2]|0);c[d>>2]=(c[l>>2]<<1)+12+((c[m>>2]&2|0)!=0&1);a=c[d>>2]|0;i=f;return a|0}a=c[k>>2]|0;k=c[a+4>>2]|0;b=h;c[b>>2]=c[a>>2];c[b+4>>2]=k;b=h;k=c[b>>2]|0;b=c[b+4>>2]|0;do if((c[h+4>>2]|0)<0){if(!((b|0)<-32768|(b|0)==-32768&k>>>0<1)){m=h;m=ZE(0,0,c[m>>2]|0,c[m+4>>2]|0)|0;a=g;c[a>>2]=m;c[a+4>>2]=D;break}c[d>>2]=6;a=c[d>>2]|0;i=f;return a|0}else{a=g;c[a>>2]=k;c[a+4>>2]=b}while(0);a=g;m=c[a+4>>2]|0;if(m>>>0<0|(m|0)==0&(c[a>>2]|0)>>>0<=127){a=h;if((0==(c[a+4>>2]|0)?(c[h>>2]&1|0)==(c[a>>2]|0):0)&(c[j>>2]|0)>=4)g=8+(c[g>>2]|0)|0;else g=1;c[d>>2]=g;a=c[d>>2]|0;i=f;return a|0}a=g;m=c[a+4>>2]|0;if(m>>>0<0|(m|0)==0&(c[a>>2]|0)>>>0<=32767){c[d>>2]=2;a=c[d>>2]|0;i=f;return a|0}a=g;m=c[a+4>>2]|0;if(m>>>0<0|(m|0)==0&(c[a>>2]|0)>>>0<=8388607){c[d>>2]=3;a=c[d>>2]|0;i=f;return a|0}a=g;m=c[a+4>>2]|0;if(m>>>0<0|(m|0)==0&(c[a>>2]|0)>>>0<=2147483647){c[d>>2]=4;a=c[d>>2]|0;i=f;return a|0}a=g;m=c[a+4>>2]|0;if(m>>>0<32767|(m|0)==32767&(c[a>>2]|0)>>>0<=4294967295){c[d>>2]=5;a=c[d>>2]|0;i=f;return a|0}else{c[d>>2]=6;a=c[d>>2]|0;i=f;return a|0}return 0}function oz(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;f=i;i=i+16|0;g=f+12|0;h=f+8|0;j=f;c[h>>2]=b;b=j;c[b>>2]=d;c[b+4>>2]=e;b=j;k=c[b+4>>2]|0;d=j;e=c[d>>2]|0;d=c[d+4>>2]|0;if(k>>>0<0|(k|0)==0&(c[b>>2]|0)>>>0<=127){a[c[h>>2]>>0]=e&127;c[g>>2]=1;k=c[g>>2]|0;i=f;return k|0}if(d>>>0<0|(d|0)==0&e>>>0<=16383){k=j;k=cF(c[k>>2]|0,c[k+4>>2]|0,7)|0;a[c[h>>2]>>0]=k&127|128;a[(c[h>>2]|0)+1>>0]=c[j>>2]&127;c[g>>2]=2;k=c[g>>2]|0;i=f;return k|0}else{k=j;c[g>>2]=JC(c[h>>2]|0,c[k>>2]|0,c[k+4>>2]|0)|0;k=c[g>>2]|0;i=f;return k|0}return 0}function pz(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;l=i;i=i+32|0;g=l+28|0;k=l+24|0;j=l+20|0;n=l+16|0;h=l+12|0;f=l;m=l+8|0;c[k>>2]=b;c[j>>2]=d;c[n>>2]=e;e=c[n>>2]|0;if(!((c[n>>2]|0)>>>0<=7&(c[n>>2]|0)>>>0>0))if(e>>>0>=12){c[h>>2]=c[(c[j>>2]|0)+12>>2];dF(c[k>>2]|0,c[(c[j>>2]|0)+16>>2]|0,c[h>>2]|0)|0;c[g>>2]=c[h>>2];b=c[g>>2]|0;i=l;return b|0}else{c[g>>2]=0;b=c[g>>2]|0;i=l;return b|0}if((e|0)==7){b=c[j>>2]|0;c[f+0>>2]=c[b+0>>2];c[f+4>>2]=c[b+4>>2]}else{e=c[j>>2]|0;d=c[e+4>>2]|0;b=f;c[b>>2]=c[e>>2];c[b+4>>2]=d}b=Ww(c[n>>2]|0)|0;c[m>>2]=b;c[h>>2]=b;do{b=c[f>>2]&255;d=(c[m>>2]|0)+ -1|0;c[m>>2]=d;a[(c[k>>2]|0)+d>>0]=b;d=f;d=cF(c[d>>2]|0,c[d+4>>2]|0,8)|0;b=f;c[b>>2]=d;c[b+4>>2]=D}while((c[m>>2]|0)!=0);c[g>>2]=c[h>>2];b=c[g>>2]|0;i=l;return b|0}function qz(f,g){f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;l=i;i=i+32|0;h=l+28|0;o=l+24|0;j=l+20|0;k=l;m=l+16|0;n=l+12|0;p=l+8|0;c[o>>2]=f;c[j>>2]=g;f=k;c[f>>2]=0;c[f+4>>2]=0;if(!(c[(c[o>>2]|0)+60>>2]|0)){f=c[j>>2]|0;c[f>>2]=0;c[f+4>>2]=0;c[h>>2]=0;f=c[h>>2]|0;i=l;return f|0}c[m>>2]=Iw(c[o>>2]|0)|0;a:while(1){if(c[m>>2]|0){n=16;break}c[p>>2]=c[(c[o>>2]|0)+120+(b[(c[o>>2]|0)+76>>1]<<2)>>2];if(!((d[(c[p>>2]|0)+5>>0]|0)==0?(a[(c[p>>2]|0)+2>>0]|0)!=0:0)){g=k;g=bF(c[g>>2]|0,c[g+4>>2]|0,e[(c[p>>2]|0)+18>>1]|0,0)|0;f=k;c[f>>2]=g;c[f+4>>2]=D}if(a[(c[p>>2]|0)+5>>0]|0){do{if(!(b[(c[o>>2]|0)+76>>1]|0)){n=10;break a}yw(c[o>>2]|0)}while((e[(c[o>>2]|0)+78+(b[(c[o>>2]|0)+76>>1]<<1)>>1]|0)>=(e[(c[(c[o>>2]|0)+120+(b[(c[o>>2]|0)+76>>1]<<2)>>2]|0)+18>>1]|0));f=(c[o>>2]|0)+78+(b[(c[o>>2]|0)+76>>1]<<1)|0;b[f>>1]=(b[f>>1]|0)+1<<16>>16;c[p>>2]=c[(c[o>>2]|0)+120+(b[(c[o>>2]|0)+76>>1]<<2)>>2]}c[n>>2]=e[(c[o>>2]|0)+78+(b[(c[o>>2]|0)+76>>1]<<1)>>1];f=c[o>>2]|0;g=c[p>>2]|0;if((c[n>>2]|0)==(e[(c[p>>2]|0)+18>>1]|0)){c[m>>2]=ww(f,Hh((c[(c[p>>2]|0)+56>>2]|0)+((d[g+6>>0]|0)+8)|0)|0)|0;continue}else{c[m>>2]=ww(f,Hh((c[g+56>>2]|0)+(e[(c[p>>2]|0)+20>>1]&(d[(c[(c[p>>2]|0)+64>>2]|0)+(c[n>>2]<<1)>>0]<<8|d[(c[(c[p>>2]|0)+64>>2]|0)+(c[n>>2]<<1)+1>>0]))|0)|0)|0;continue}}if((n|0)==10){p=k;g=c[p+4>>2]|0;f=c[j>>2]|0;c[f>>2]=c[p>>2];c[f+4>>2]=g;c[h>>2]=0;f=c[h>>2]|0;i=l;return f|0}else if((n|0)==16){c[h>>2]=c[m>>2];f=c[h>>2]|0;i=l;return f|0}return 0}function rz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;f=i;i=i+32|0;m=f+28|0;g=f+24|0;k=f+20|0;e=f+16|0;n=f+12|0;j=f+8|0;l=f+4|0;h=f;c[m>>2]=a;c[g>>2]=b;c[k>>2]=d;c[e>>2]=0;if(!(c[(c[m>>2]|0)+328>>2]|0)){a=c[e>>2]|0;i=f;return a|0}c[n>>2]=0;while(1){if(c[e>>2]|0){g=15;break}if((c[n>>2]|0)>=(c[(c[m>>2]|0)+304>>2]|0)){g=15;break}c[j>>2]=c[(c[(c[m>>2]|0)+328>>2]|0)+(c[n>>2]<<2)>>2];c[l>>2]=c[c[(c[j>>2]|0)+4>>2]>>2];if((c[(c[j>>2]|0)+8>>2]|0)!=0?(c[c[l>>2]>>2]|0)>=2:0){d=c[g>>2]|0;if((d|0)==2)c[h>>2]=c[(c[l>>2]|0)+88>>2];else if(!d){c[h>>2]=c[(c[l>>2]|0)+80>>2];c[(c[j>>2]|0)+20>>2]=(c[k>>2]|0)+1}else c[h>>2]=c[(c[l>>2]|0)+84>>2];if((c[h>>2]|0)!=0?(c[(c[j>>2]|0)+20>>2]|0)>(c[k>>2]|0):0)c[e>>2]=zb[c[h>>2]&63](c[(c[j>>2]|0)+8>>2]|0,c[k>>2]|0)|0}c[n>>2]=(c[n>>2]|0)+1}if((g|0)==15){a=c[e>>2]|0;i=f;return a|0}return 0}function sz(e,f,g){e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;n=i;i=i+32|0;l=n+20|0;o=n+16|0;p=n+12|0;m=n+8|0;k=n+4|0;h=n;c[l>>2]=e;c[o>>2]=f;c[p>>2]=g;c[k>>2]=0;if(!(c[l>>2]|0)){e=c[k>>2]|0;i=n;return e|0}Pc(c[l>>2]|0);c[m>>2]=c[(c[(c[l>>2]|0)+4>>2]|0)+8>>2];while(1){if(!(c[m>>2]|0)){j=14;break}if((c[p>>2]|0)!=0?(d[(c[m>>2]|0)+72>>0]&1|0)==0:0){if((d[(c[m>>2]|0)+73>>0]|0)==1?(c[k>>2]=Jy(c[m>>2]|0)|0,(c[k>>2]|0)!=0):0)break}else{Qk(c[m>>2]|0);a[(c[m>>2]|0)+73>>0]=4;c[(c[m>>2]|0)+68>>2]=c[o>>2]}c[h>>2]=0;while(1){if((c[h>>2]|0)>(b[(c[m>>2]|0)+76>>1]|0))break;Rk(c[(c[m>>2]|0)+120+(c[h>>2]<<2)>>2]|0);c[(c[m>>2]|0)+120+(c[h>>2]<<2)>>2]=0;c[h>>2]=(c[h>>2]|0)+1}c[m>>2]=c[(c[m>>2]|0)+8>>2]}if((j|0)==14){e=c[k>>2]|0;i=n;return e|0}sz(c[l>>2]|0,c[k>>2]|0,0)|0;e=c[k>>2]|0;i=n;return e|0}function tz(a,b,f){a=a|0;b=b|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;g=i;i=i+32|0;j=g+16|0;l=g+12|0;m=g+8|0;h=g+4|0;k=g;c[j>>2]=a;c[l>>2]=b;c[m>>2]=f;c[h>>2]=0;if(!(c[j>>2]|0)){a=c[h>>2]|0;i=g;return a|0}if((d[(c[j>>2]|0)+8>>0]|0|0)!=2){a=c[h>>2]|0;i=g;return a|0}c[k>>2]=c[(c[j>>2]|0)+4>>2];Pc(c[j>>2]|0);c[h>>2]=si(c[c[k>>2]>>2]|0,c[l>>2]|0,c[m>>2]|0)|0;if(c[h>>2]|0){a=c[h>>2]|0;i=g;return a|0}if((c[m>>2]|0)<0?((e[(c[k>>2]|0)+22>>1]|0)&8|0)!=0:0)c[(c[k>>2]|0)+44>>2]=0;c[h>>2]=IC(c[k>>2]|0)|0;a=Hh((c[(c[(c[k>>2]|0)+12>>2]|0)+56>>2]|0)+28|0)|0;c[(c[k>>2]|0)+44>>2]=a;a=c[h>>2]|0;i=g;return a|0}function uz(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;e=i;i=i+16|0;h=e+12|0;f=e+8|0;d=e+4|0;g=e;c[h>>2]=a;c[f>>2]=b;c[g>>2]=c[(c[h>>2]|0)+4>>2];Pc(c[h>>2]|0);c[d>>2]=GC(c[c[g>>2]>>2]|0,c[f>>2]|0)|0;i=e;return c[d>>2]|0}function vz(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;j=i;i=i+32|0;q=j+28|0;r=j+24|0;l=j+20|0;k=j+16|0;m=j+12|0;n=j+8|0;p=j+4|0;o=j;c[q>>2]=d;c[r>>2]=e;c[l>>2]=f;c[k>>2]=g;c[m>>2]=h;c[n>>2]=(c[(c[q>>2]|0)+8>>2]|0)+(((c[(c[q>>2]|0)+28>>2]|0)-(c[r>>2]|0)|0)*40|0);c[o>>2]=0;g=88+(c[l>>2]<<3)|0;if(c[m>>2]|0)h=EC()|0;else h=0;c[p>>2]=g+h;if(c[(c[(c[q>>2]|0)+56>>2]|0)+(c[r>>2]<<2)>>2]|0){Az(c[q>>2]|0,c[(c[(c[q>>2]|0)+56>>2]|0)+(c[r>>2]<<2)>>2]|0);c[(c[(c[q>>2]|0)+56>>2]|0)+(c[r>>2]<<2)>>2]=0}if(Lp(c[n>>2]|0,c[p>>2]|0)|0){d=c[o>>2]|0;i=j;return d|0}p=c[(c[n>>2]|0)+16>>2]|0;c[o>>2]=p;c[(c[(c[q>>2]|0)+56>>2]|0)+(c[r>>2]<<2)>>2]=p;q=(c[o>>2]|0)+0|0;p=q+88|0;do{c[q>>2]=0;q=q+4|0}while((q|0)<(p|0));a[(c[o>>2]|0)+24>>0]=c[k>>2];b[(c[o>>2]|0)+20>>1]=c[l>>2];c[(c[o>>2]|0)+80>>2]=(c[o>>2]|0)+84+(c[l>>2]<<2);if(!(c[m>>2]|0)){d=c[o>>2]|0;i=j;return d|0}c[c[o>>2]>>2]=(c[(c[n>>2]|0)+16>>2]|0)+(88+(c[l>>2]<<3));FC(c[c[o>>2]>>2]|0);d=c[o>>2]|0;i=j;return d|0}function wz(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0;h=i;i=i+32|0;n=h+20|0;m=h+16|0;l=h+12|0;k=h+8|0;j=h+4|0;g=h;c[n>>2]=a;c[m>>2]=b;c[l>>2]=d;c[k>>2]=e;c[j>>2]=f;Pc(c[n>>2]|0);c[g>>2]=CC(c[n>>2]|0,c[m>>2]|0,c[l>>2]|0,c[k>>2]|0,c[j>>2]|0)|0;i=h;return c[g>>2]|0}function xz(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=i;i=i+16|0;f=e+4|0;g=e;c[f>>2]=b;c[g>>2]=d;a[(c[f>>2]|0)+74>>0]=c[g>>2];i=e;return}function yz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;f=i;i=i+16|0;j=f+12|0;h=f+8|0;g=f+4|0;e=f;c[j>>2]=a;c[h>>2]=b;c[g>>2]=d;Pc(c[j>>2]|0);c[e>>2]=BC(c[j>>2]|0,c[h>>2]|0,c[g>>2]|0)|0;i=f;return c[e>>2]|0}function zz(f,g,h){f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;q=i;i=i+48|0;n=q+44|0;r=q+40|0;u=q+36|0;l=q+32|0;p=q+28|0;o=q+24|0;m=q+20|0;s=q+16|0;v=q+12|0;t=q+8|0;k=q+4|0;j=q;c[n>>2]=f;c[r>>2]=g;c[u>>2]=h;c[k>>2]=0;c[v>>2]=24+((e[(c[(c[u>>2]|0)+8>>2]|0)+6>>1]|0)-1<<2);c[t>>2]=128;f=(c[t>>2]|0)+(c[v>>2]|0)|0;c[m>>2]=se(c[n>>2]|0,f,((f|0)<0)<<31>>31)|0;c[(c[u>>2]|0)+56>>2]=c[m>>2];if(!(c[m>>2]|0)){c[k>>2]=7;f=c[k>>2]|0;i=q;return f|0}f=(c[m>>2]|0)+(c[t>>2]|0)|0;c[s>>2]=f;c[(c[m>>2]|0)+28>>2]=f;dF(c[s>>2]|0,c[(c[u>>2]|0)+8>>2]|0,c[v>>2]|0)|0;c[(c[s>>2]|0)+12>>2]=0;if(c[r>>2]|0)b[(c[s>>2]|0)+6>>1]=c[r>>2];f=Uc(c[(c[(c[n>>2]|0)+16>>2]|0)+4>>2]|0)|0;c[l>>2]=f;c[(c[m>>2]|0)+12>>2]=f;a[(c[m>>2]|0)+59>>0]=1;a[(c[m>>2]|0)+57>>0]=(d[(c[m>>2]|0)+59>>0]|0|0)>1;c[(c[m>>2]|0)+24>>2]=c[n>>2];c[p>>2]=0;while(1){if((c[p>>2]|0)>=(d[(c[m>>2]|0)+59>>0]|0|0))break;c[j>>2]=(c[m>>2]|0)+64+(c[p>>2]<<6);c[(c[j>>2]|0)+8>>2]=c[m>>2];c[p>>2]=(c[p>>2]|0)+1}if(xh(c[n>>2]|0)|0){f=c[k>>2]|0;i=q;return f|0}c[c[m>>2]>>2]=(c[l>>2]|0)*10;f=c[(c[(c[(c[n>>2]|0)+16>>2]|0)+12>>2]|0)+80>>2]|0;c[o>>2]=f;c[o>>2]=(c[o>>2]|0)<10?10:f;f=$(c[o>>2]|0,c[l>>2]|0)|0;c[(c[m>>2]|0)+4>>2]=f;if(c[9708]|0){f=c[k>>2]|0;i=q;return f|0}c[(c[m>>2]|0)+52>>2]=c[l>>2];f=c[l>>2]|0;f=gc(f,((f|0)<0)<<31>>31)|0;c[(c[m>>2]|0)+40>>2]=f;if(c[(c[m>>2]|0)+40>>2]|0){f=c[k>>2]|0;i=q;return f|0}c[k>>2]=7;f=c[k>>2]|0;i=q;return f|0}function Az(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;i=i+16|0;j=e+12|0;f=e+8|0;g=e+4|0;h=e;c[j>>2]=a;c[f>>2]=d;if(!(c[f>>2]|0)){i=e;return}AC(c[c[j>>2]>>2]|0,c[f>>2]|0);d=c[f>>2]|0;if(c[(c[f>>2]|0)+4>>2]|0){Kk(c[d+4>>2]|0)|0;i=e;return}a=c[f>>2]|0;if(c[d>>2]|0){Ok(c[a>>2]|0)|0;i=e;return}if(!(c[a+32>>2]|0)){i=e;return}c[g>>2]=c[(c[f>>2]|0)+32>>2];c[h>>2]=c[c[c[g>>2]>>2]>>2];a=(c[j>>2]|0)+88|0;b[a>>1]=b[a>>1]&-13|4;ub[c[(c[h>>2]|0)+28>>2]&31](c[g>>2]|0)|0;a=(c[j>>2]|0)+88|0;b[a>>1]=b[a>>1]&-13;i=e;return}function Bz(a){a=a|0;var b=0,e=0;e=i;i=i+16|0;b=e;c[b>>2]=a;i=e;return 1!=(d[(c[b>>2]|0)+73>>0]|0|0)|0}function Cz(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;f=i;i=i+16|0;g=f+12|0;j=f+8|0;k=f+4|0;h=f;c[j>>2]=b;c[k>>2]=e;if(1==(d[(c[j>>2]|0)+73>>0]|0|0)?((d[(c[j>>2]|0)+72>>0]|0)&8|0)!=0:0){c[g>>2]=0;b=c[g>>2]|0;i=f;return b|0}c[h>>2]=Iw(c[j>>2]|0)|0;do if(!(c[h>>2]|0)){e=c[k>>2]|0;if(!(d[(c[j>>2]|0)+73>>0]|0)){c[e>>2]=1;break}c[e>>2]=0;c[h>>2]=xw(c[j>>2]|0)|0;j=(c[j>>2]|0)+72|0;e=d[j>>0]|0;if(!(c[h>>2]|0)){a[j>>0]=e|8;break}else{a[j>>0]=e&-9;break}}while(0);c[g>>2]=c[h>>2];b=c[g>>2]|0;i=f;return b|0} + + + +function XE(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;d=i;h=a+b|0;l=c[a+4>>2]|0;do if(!(l&1)){p=c[a>>2]|0;if(!(l&3)){i=d;return}l=a+(0-p)|0;m=p+b|0;r=c[9754]|0;if(l>>>0>>0)db();if((l|0)==(c[9755]|0)){e=a+(b+4)|0;n=c[e>>2]|0;if((n&3|0)!=3){e=l;n=m;break}c[9752]=m;c[e>>2]=n&-2;c[a+(4-p)>>2]=m|1;c[h>>2]=m;i=d;return}s=p>>>3;if(p>>>0<256){e=c[a+(8-p)>>2]|0;n=c[a+(12-p)>>2]|0;o=39040+(s<<1<<2)|0;if((e|0)!=(o|0)){if(e>>>0>>0)db();if((c[e+12>>2]|0)!=(l|0))db()}if((n|0)==(e|0)){c[9750]=c[9750]&~(1<>>0>>0)db();o=n+8|0;if((c[o>>2]|0)==(l|0))q=o;else db()}else q=n+8|0;c[e+12>>2]=n;c[q>>2]=e;e=l;n=m;break}q=c[a+(24-p)>>2]|0;s=c[a+(12-p)>>2]|0;do if((s|0)==(l|0)){u=16-p|0;t=a+(u+4)|0;s=c[t>>2]|0;if(!s){t=a+u|0;s=c[t>>2]|0;if(!s){o=0;break}}while(1){v=s+20|0;u=c[v>>2]|0;if(u){s=u;t=v;continue}u=s+16|0;v=c[u>>2]|0;if(!v)break;else{s=v;t=u}}if(t>>>0>>0)db();else{c[t>>2]=0;o=s;break}}else{t=c[a+(8-p)>>2]|0;if(t>>>0>>0)db();r=t+12|0;if((c[r>>2]|0)!=(l|0))db();u=s+8|0;if((c[u>>2]|0)==(l|0)){c[r>>2]=s;c[u>>2]=t;o=s;break}else db()}while(0);if(q){s=c[a+(28-p)>>2]|0;r=39304+(s<<2)|0;if((l|0)==(c[r>>2]|0)){c[r>>2]=o;if(!o){c[9751]=c[9751]&~(1<>>0<(c[9754]|0)>>>0)db();r=q+16|0;if((c[r>>2]|0)==(l|0))c[r>>2]=o;else c[q+20>>2]=o;if(!o){e=l;n=m;break}}r=c[9754]|0;if(o>>>0>>0)db();c[o+24>>2]=q;p=16-p|0;q=c[a+p>>2]|0;do if(q)if(q>>>0>>0)db();else{c[o+16>>2]=q;c[q+24>>2]=o;break}while(0);p=c[a+(p+4)>>2]|0;if(p)if(p>>>0<(c[9754]|0)>>>0)db();else{c[o+20>>2]=p;c[p+24>>2]=o;e=l;n=m;break}else{e=l;n=m}}else{e=l;n=m}}else{e=a;n=b}while(0);l=c[9754]|0;if(h>>>0>>0)db();m=a+(b+4)|0;o=c[m>>2]|0;if(!(o&2)){if((h|0)==(c[9756]|0)){v=(c[9753]|0)+n|0;c[9753]=v;c[9756]=e;c[e+4>>2]=v|1;if((e|0)!=(c[9755]|0)){i=d;return}c[9755]=0;c[9752]=0;i=d;return}if((h|0)==(c[9755]|0)){v=(c[9752]|0)+n|0;c[9752]=v;c[9755]=e;c[e+4>>2]=v|1;c[e+v>>2]=v;i=d;return}n=(o&-8)+n|0;m=o>>>3;do if(o>>>0>=256){k=c[a+(b+24)>>2]|0;o=c[a+(b+12)>>2]|0;do if((o|0)==(h|0)){o=a+(b+20)|0;m=c[o>>2]|0;if(!m){o=a+(b+16)|0;m=c[o>>2]|0;if(!m){j=0;break}}while(1){p=m+20|0;q=c[p>>2]|0;if(q){m=q;o=p;continue}q=m+16|0;p=c[q>>2]|0;if(!p)break;else{m=p;o=q}}if(o>>>0>>0)db();else{c[o>>2]=0;j=m;break}}else{m=c[a+(b+8)>>2]|0;if(m>>>0>>0)db();p=m+12|0;if((c[p>>2]|0)!=(h|0))db();l=o+8|0;if((c[l>>2]|0)==(h|0)){c[p>>2]=o;c[l>>2]=m;j=o;break}else db()}while(0);if(k){m=c[a+(b+28)>>2]|0;l=39304+(m<<2)|0;if((h|0)==(c[l>>2]|0)){c[l>>2]=j;if(!j){c[9751]=c[9751]&~(1<>>0<(c[9754]|0)>>>0)db();l=k+16|0;if((c[l>>2]|0)==(h|0))c[l>>2]=j;else c[k+20>>2]=j;if(!j)break}h=c[9754]|0;if(j>>>0>>0)db();c[j+24>>2]=k;k=c[a+(b+16)>>2]|0;do if(k)if(k>>>0>>0)db();else{c[j+16>>2]=k;c[k+24>>2]=j;break}while(0);h=c[a+(b+20)>>2]|0;if(h)if(h>>>0<(c[9754]|0)>>>0)db();else{c[j+20>>2]=h;c[h+24>>2]=j;break}}}else{j=c[a+(b+8)>>2]|0;a=c[a+(b+12)>>2]|0;b=39040+(m<<1<<2)|0;if((j|0)!=(b|0)){if(j>>>0>>0)db();if((c[j+12>>2]|0)!=(h|0))db()}if((a|0)==(j|0)){c[9750]=c[9750]&~(1<>>0>>0)db();b=a+8|0;if((c[b>>2]|0)==(h|0))k=b;else db()}else k=a+8|0;c[j+12>>2]=a;c[k>>2]=j}while(0);c[e+4>>2]=n|1;c[e+n>>2]=n;if((e|0)==(c[9755]|0)){c[9752]=n;i=d;return}}else{c[m>>2]=o&-2;c[e+4>>2]=n|1;c[e+n>>2]=n}b=n>>>3;if(n>>>0<256){a=b<<1;h=39040+(a<<2)|0;j=c[9750]|0;b=1<>2]|0;if(j>>>0<(c[9754]|0)>>>0)db();else{g=a;f=j}}else{c[9750]=j|b;g=39040+(a+2<<2)|0;f=h}c[g>>2]=e;c[f+12>>2]=e;c[e+8>>2]=f;c[e+12>>2]=h;i=d;return}f=n>>>8;if(f)if(n>>>0>16777215)f=31;else{u=(f+1048320|0)>>>16&8;v=f<>>16&4;v=v<>>16&2;f=14-(t|u|f)+(v<>>15)|0;f=n>>>(f+7|0)&1|f<<1}else f=0;g=39304+(f<<2)|0;c[e+28>>2]=f;c[e+20>>2]=0;c[e+16>>2]=0;a=c[9751]|0;h=1<>2]=e;c[e+24>>2]=g;c[e+12>>2]=e;c[e+8>>2]=e;i=d;return}g=c[g>>2]|0;if((f|0)==31)f=0;else f=25-(f>>>1)|0;a:do if((c[g+4>>2]&-8|0)!=(n|0)){f=n<>>31<<2)+16|0;g=c[h>>2]|0;if(!g)break;if((c[g+4>>2]&-8|0)==(n|0))break a;else{f=f<<1;a=g}}if(h>>>0<(c[9754]|0)>>>0)db();c[h>>2]=e;c[e+24>>2]=a;c[e+12>>2]=e;c[e+8>>2]=e;i=d;return}while(0);f=g+8|0;h=c[f>>2]|0;v=c[9754]|0;if(!(g>>>0>=v>>>0&h>>>0>=v>>>0))db();c[h+12>>2]=e;c[f>>2]=e;c[e+8>>2]=h;c[e+12>>2]=g;c[e+24>>2]=0;i=d;return}function YE(){}function ZE(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;b=b-d-(c>>>0>a>>>0|0)>>>0;return(D=b,a-c>>>0|0)|0}function _E(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;f=b+e|0;if((e|0)>=20){d=d&255;i=b&3;h=d|d<<8|d<<16|d<<24;g=f&~3;if(i){i=b+4-i|0;while((b|0)<(i|0)){a[b>>0]=d;b=b+1|0}}while((b|0)<(g|0)){c[b>>2]=h;b=b+4|0}}while((b|0)<(f|0)){a[b>>0]=d;b=b+1|0}return b-e|0}function $E(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){D=b<>>32-c;return a<>0]|0)c=c+1|0;return c-b|0}function bF(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;c=a+c>>>0;return(D=b+d+(c>>>0>>0|0)>>>0,c|0)|0}function cF(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){D=b>>>c;return a>>>c|(b&(1<>>c-32|0}function dF(b,d,e){b=b|0;d=d|0;e=e|0;var f=0;if((e|0)>=4096)return Na(b|0,d|0,e|0)|0;f=b|0;if((b&3)==(d&3)){while(b&3){if(!e)return f|0;a[b>>0]=a[d>>0]|0;b=b+1|0;d=d+1|0;e=e-1|0}while((e|0)>=4){c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0;e=e-4|0}}while((e|0)>0){a[b>>0]=a[d>>0]|0;b=b+1|0;d=d+1|0;e=e-1|0}return f|0}function eF(b,c,d){b=b|0;c=c|0;d=d|0;var e=0;if((c|0)<(b|0)&(b|0)<(c+d|0)){e=b;c=c+d|0;b=b+d|0;while((d|0)>0){b=b-1|0;c=c-1|0;d=d-1|0;a[b>>0]=a[c>>0]|0}b=e}else dF(b,c,d)|0;return b|0}function fF(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){D=b>>c;return a>>>c|(b&(1<>c-32|0}function gF(b){b=b|0;var c=0;c=a[n+(b>>>24)>>0]|0;if((c|0)<8)return c|0;c=a[n+(b>>16&255)>>0]|0;if((c|0)<8)return c+8|0;c=a[n+(b>>8&255)>>0]|0;if((c|0)<8)return c+16|0;return(a[n+(b&255)>>0]|0)+24|0}function hF(b){b=b|0;var c=0;c=a[m+(b&255)>>0]|0;if((c|0)<8)return c|0;c=a[m+(b>>8&255)>>0]|0;if((c|0)<8)return c+8|0;c=a[m+(b>>16&255)>>0]|0;if((c|0)<8)return c+16|0;return(a[m+(b>>>24)>>0]|0)+24|0}function iF(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;f=a&65535;d=b&65535;c=$(d,f)|0;e=a>>>16;d=(c>>>16)+($(d,e)|0)|0;b=b>>>16;a=$(b,f)|0;return(D=(d>>>16)+($(b,e)|0)+(((d&65535)+a|0)>>>16)|0,d+a<<16|c&65535|0)|0}function jF(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=b>>31|((b|0)<0?-1:0)<<1;i=((b|0)<0?-1:0)>>31|((b|0)<0?-1:0)<<1;f=d>>31|((d|0)<0?-1:0)<<1;e=((d|0)<0?-1:0)>>31|((d|0)<0?-1:0)<<1;h=ZE(j^a,i^b,j,i)|0;g=D;b=f^j;a=e^i;a=ZE((oF(h,g,ZE(f^c,e^d,f,e)|0,D,0)|0)^b,D^a,b,a)|0;return a|0}function kF(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;f=i;i=i+8|0;j=f|0;h=b>>31|((b|0)<0?-1:0)<<1;g=((b|0)<0?-1:0)>>31|((b|0)<0?-1:0)<<1;l=e>>31|((e|0)<0?-1:0)<<1;k=((e|0)<0?-1:0)>>31|((e|0)<0?-1:0)<<1;b=ZE(h^a,g^b,h,g)|0;a=D;oF(b,a,ZE(l^d,k^e,l,k)|0,D,j)|0;a=ZE(c[j>>2]^h,c[j+4>>2]^g,h,g)|0;b=D;i=f;return(D=b,a)|0}function lF(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=a;f=c;a=iF(e,f)|0;c=D;return(D=($(b,f)|0)+($(d,e)|0)+c|c&0,a|0|0)|0}function mF(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;a=oF(a,b,c,d,0)|0;return a|0}function nF(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=i;i=i+8|0;f=g|0;oF(a,b,d,e,f)|0;i=g;return(D=c[f+4>>2]|0,c[f>>2]|0)|0}function oF(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;h=a;j=b;i=j;l=d;g=e;k=g;if(!i){g=(f|0)!=0;if(!k){if(g){c[f>>2]=(h>>>0)%(l>>>0);c[f+4>>2]=0}k=0;m=(h>>>0)/(l>>>0)>>>0;return(D=k,m)|0}else{if(!g){l=0;m=0;return(D=l,m)|0}c[f>>2]=a|0;c[f+4>>2]=b&0;l=0;m=0;return(D=l,m)|0}}m=(k|0)==0;do if(l){if(!m){k=(gF(k|0)|0)-(gF(i|0)|0)|0;if(k>>>0<=31){m=k+1|0;l=31-k|0;a=k-31>>31;j=m;b=h>>>(m>>>0)&a|i<>>(m>>>0)&a;k=0;l=h<>2]=a|0;c[f+4>>2]=j|b&0;l=0;m=0;return(D=l,m)|0}k=l-1|0;if(k&l){l=(gF(l|0)|0)+33-(gF(i|0)|0)|0;p=64-l|0;m=32-l|0;n=m>>31;o=l-32|0;a=o>>31;j=l;b=m-1>>31&i>>>(o>>>0)|(i<>>(l>>>0))&a;a=a&i>>>(l>>>0);k=h<>>(o>>>0))&n|h<>31;break}if(f){c[f>>2]=k&h;c[f+4>>2]=0}if((l|0)==1){o=j|b&0;p=a|0|0;return(D=o,p)|0}else{p=hF(l|0)|0;o=i>>>(p>>>0)|0;p=i<<32-p|h>>>(p>>>0)|0;return(D=o,p)|0}}else{if(m){if(f){c[f>>2]=(i>>>0)%(l>>>0);c[f+4>>2]=0}o=0;p=(i>>>0)/(l>>>0)>>>0;return(D=o,p)|0}if(!h){if(f){c[f>>2]=0;c[f+4>>2]=(i>>>0)%(k>>>0)}o=0;p=(i>>>0)/(k>>>0)>>>0;return(D=o,p)|0}l=k-1|0;if(!(l&k)){if(f){c[f>>2]=a|0;c[f+4>>2]=l&i|b&0}o=0;p=i>>>((hF(k|0)|0)>>>0);return(D=o,p)|0}k=(gF(k|0)|0)-(gF(i|0)|0)|0;if(k>>>0<=30){a=k+1|0;l=31-k|0;j=a;b=i<>>(a>>>0);a=i>>>(a>>>0);k=0;l=h<>2]=a|0;c[f+4>>2]=j|b&0;o=0;p=0;return(D=o,p)|0}while(0);if(!j){g=l;e=0;i=0}else{h=d|0|0;g=g|e&0;e=bF(h,g,-1,-1)|0;d=D;i=0;do{m=l;l=k>>>31|l<<1;k=i|k<<1;m=b<<1|m>>>31|0;n=b>>>31|a<<1|0;ZE(e,d,m,n)|0;p=D;o=p>>31|((p|0)<0?-1:0)<<1;i=o&1;b=ZE(m,n,o&h,(((p|0)<0?-1:0)>>31|((p|0)<0?-1:0)<<1)&g)|0;a=D;j=j-1|0}while((j|0)!=0);g=l;e=0}h=0;if(f){c[f>>2]=b;c[f+4>>2]=a}o=(k|0)>>>31|(g|h)<<1|(h<<1|k>>>31)&0|e;p=(k<<1|0>>>31)&-2|i;return(D=o,p)|0}function pF(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return pb[a&31](b|0,c|0,d|0)|0}function qF(a){a=a|0;return qb[a&1]()|0}function rF(a,b){a=a|0;b=b|0;rb[a&31](b|0)}function sF(a,b,c){a=a|0;b=b|0;c=c|0;sb[a&7](b|0,c|0)}function tF(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;return tb[a&1](b|0,c|0,d|0,e|0,f|0,g|0)|0}function uF(a,b){a=a|0;b=b|0;return ub[a&31](b|0)|0}function vF(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;vb[a&63](b|0,c|0,d|0)}function wF(a){a=a|0;wb[a&0]()}function xF(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return xb[a&7](b|0,c|0,d|0,e|0)|0}function yF(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;yb[a&0](b|0,c|0,d|0,e|0,f|0,g|0)}function zF(a,b,c){a=a|0;b=b|0;c=c|0;return zb[a&63](b|0,c|0)|0}function AF(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return Ab[a&15](b|0,c|0,d|0,e|0,f|0)|0}function BF(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;Bb[a&3](b|0,c|0,d|0,e|0)}function CF(a,b,c){a=a|0;b=b|0;c=c|0;aa(0);return 0}function DF(a,b,c){a=a|0;b=b|0;c=c|0;return Ca(a|0,b|0,c|0)|0}function EF(a,b,c){a=a|0;b=b|0;c=c|0;return mb(a|0,b|0,c|0)|0}function FF(a,b,c){a=a|0;b=b|0;c=c|0;return Wa(a|0,b|0,c|0)|0}function GF(){aa(1);return 0}function HF(a){a=a|0;aa(2)}function IF(a,b){a=a|0;b=b|0;aa(3)}function JF(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;aa(4);return 0}function KF(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return jb(a|0,b|0,c|0,d|0,e|0,f|0)|0}function LF(a){a=a|0;aa(5);return 0}function MF(a){a=a|0;return lb(a|0)|0}function NF(a){a=a|0;return Oa(a|0)|0}function OF(a){a=a|0;return Aa(a|0)|0}function PF(a,b,c){a=a|0;b=b|0;c=c|0;aa(6)}function QF(){aa(7)}function RF(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;aa(8);return 0}function SF(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;aa(9)}function TF(a,b){a=a|0;b=b|0;aa(10);return 0}function UF(a,b){a=a|0;b=b|0;return xa(a|0,b|0)|0}function VF(a,b){a=a|0;b=b|0;return ta(a|0,b|0)|0}function WF(a,b){a=a|0;b=b|0;return Za(a|0,b|0)|0}function XF(a,b){a=a|0;b=b|0;return ya(a|0,b|0)|0}function YF(a,b){a=a|0;b=b|0;return Sa(a|0,b|0)|0}function ZF(a,b){a=a|0;b=b|0;return Qa(a|0,b|0)|0}function _F(a,b){a=a|0;b=b|0;return Ta(a|0,b|0)|0}function $F(a,b){a=a|0;b=b|0;return ib(a|0,b|0)|0}function aG(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;aa(11);return 0}function bG(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;aa(12)} + + + + +// EMSCRIPTEN_END_FUNCS +var pb=[CF,Ac,Dc,Gc,Ic,ni,al,dl,BD,HD,VD,DF,EF,FF,XD,Sw,Tw,Uw,CF,CF,CF,CF,CF,CF,CF,CF,CF,CF,CF,CF,CF,CF];var qb=[GF,YD];var rb=[HF,$k,hl,il,ul,zl,Dl,dm,em,fm,hm,jm,LD,hc,Bh,wh,Vr,HF,HF,HF,HF,HF,HF,HF,HF,HF,HF,HF,HF,HF,HF,HF];var sb=[IF,bl,gl,cr,mq,IF,IF,IF];var tb=[JF,KF];var ub=[LF,ki,_k,cl,tl,wl,xl,yl,yD,ID,JD,MF,NF,OF,mE,vE,Tb,Ed,Fh,LF,LF,LF,LF,LF,LF,LF,LF,LF,LF,LF,LF,LF];var vb=[PF,el,Al,Bl,Cl,El,Fl,Gl,Hl,Il,Jl,Kl,Ll,Ml,Nl,Ol,Pl,Ql,Rl,Sl,Tl,Ul,Vl,Wl,Xl,Yl,Zl,_l,$l,am,bm,cm,gm,im,km,nm,om,pm,tm,um,vm,wm,xm,ym,zm,Am,Ur,Sr,Rr,rt,ut,Tf,PF,PF,PF,PF,PF,PF,PF,PF,PF,PF,PF,PF];var wb=[QF];var xb=[RF,Bc,Cc,KD,OD,Wf,cs,is];var yb=[SF];var zb=[TF,Ec,Fc,Hc,Jc,Kc,GE,lE,xD,oi,pi,vl,CD,DD,ED,FD,GD,MD,UF,VF,WF,XF,YF,ZF,WD,_F,$F,nE,oE,pE,wE,xE,yE,gc,Pf,Wj,Yi,nq,ar,br,tq,uq,Pq,Wq,ft,gt,sw,tw,Qx,Rx,TF,TF,TF,TF,TF,TF,TF,TF,TF,TF,TF,TF,TF,TF];var Ab=[aG,zc,li,mi,zD,AD,ND,zE,oh,ph,aG,aG,aG,aG,aG,aG];var Bb=[bG,fl,dc,bG];return{_strlen:aF,_sqlite3_column_name:Ce,_sqlite3_reset:xd,_sqlite3_column_type:Be,_sqlite3_exec:kf,_sqlite3_step:je,_bitshift64Lshr:cF,_sqlite3_prepare_v2:mf,_sqlite3_close_v2:Mf,_sqlite3_open:cg,_bitshift64Shl:$E,_sqlite3_column_bytes:ye,_sqlite3_bind_int:Ie,_sqlite3_bind_blob:Ee,_memset:_E,_memcpy:dF,_sqlite3_column_blob:ve,_sqlite3_bind_parameter_index:Le,_i64Subtract:ZE,_sqlite3_column_text:Ae,_realloc:SE,_i64Add:bF,_sqlite3_finalize:td,_sqlite3_column_double:ze,_sqlite3_errmsg:nf,_sqlite3_data_count:ue,_sqlite3_bind_text:Ke,_sqlite3_bind_double:Ge,_free:RE,_memmove:eF,_sqlite3_free:hc,_sqlite3_clear_bindings:Ad,_malloc:QE,runPostSets:YE,stackAlloc:Cb,stackSave:Db,stackRestore:Eb,setThrew:Fb,setTempRet0:Ib,getTempRet0:Jb,dynCall_iiii:pF,dynCall_i:qF,dynCall_vi:rF,dynCall_vii:sF,dynCall_iiiiiii:tF,dynCall_ii:uF,dynCall_viii:vF,dynCall_v:wF,dynCall_iiiii:xF,dynCall_viiiiii:yF,dynCall_iii:zF,dynCall_iiiiii:AF,dynCall_viiii:BF}}) + + +// EMSCRIPTEN_END_ASM +(r.ie,r.je,M),Ob=r._strlen=T._strlen;r._sqlite3_column_name=T._sqlite3_column_name;r._sqlite3_reset=T._sqlite3_reset;r._sqlite3_column_type=T._sqlite3_column_type;r._sqlite3_exec=T._sqlite3_exec;r._sqlite3_step=T._sqlite3_step;var xc=r._bitshift64Lshr=T._bitshift64Lshr;r._sqlite3_prepare_v2=T._sqlite3_prepare_v2;r._sqlite3_close_v2=T._sqlite3_close_v2;r._sqlite3_open=T._sqlite3_open;var Mb=r._bitshift64Shl=T._bitshift64Shl;r._sqlite3_column_bytes=T._sqlite3_column_bytes; +r._sqlite3_bind_int=T._sqlite3_bind_int;r._sqlite3_bind_blob=T._sqlite3_bind_blob;var Kb=r._memset=T._memset,Cc=r._memcpy=T._memcpy;r._sqlite3_column_blob=T._sqlite3_column_blob;r._sqlite3_bind_parameter_index=T._sqlite3_bind_parameter_index;var Jb=r._i64Subtract=T._i64Subtract;r._sqlite3_column_text=T._sqlite3_column_text;r._realloc=T._realloc;var Pb=r._i64Add=T._i64Add;r._sqlite3_finalize=T._sqlite3_finalize;r._sqlite3_column_double=T._sqlite3_column_double;r._sqlite3_errmsg=T._sqlite3_errmsg; +r._sqlite3_data_count=T._sqlite3_data_count;r._sqlite3_bind_text=T._sqlite3_bind_text;r._sqlite3_bind_double=T._sqlite3_bind_double;var Ka=r._free=T._free,Ec=r._memmove=T._memmove;r._sqlite3_free=T._sqlite3_free;r._sqlite3_clear_bindings=T._sqlite3_clear_bindings;var Ia=r._malloc=T._malloc;r.runPostSets=T.runPostSets;r.dynCall_iiii=T.dynCall_iiii;r.dynCall_i=T.dynCall_i;r.dynCall_vi=T.dynCall_vi;r.dynCall_vii=T.dynCall_vii;r.dynCall_iiiiiii=T.dynCall_iiiiiii;r.dynCall_ii=T.dynCall_ii; +r.dynCall_viii=T.dynCall_viii;r.dynCall_v=T.dynCall_v;r.dynCall_iiiii=T.dynCall_iiiii;r.dynCall_viiiiii=T.dynCall_viiiiii;r.dynCall_iii=T.dynCall_iii;r.dynCall_iiiiii=T.dynCall_iiiiii;r.dynCall_viiii=T.dynCall_viiii;w.Ma=T.stackAlloc;w.Xb=T.stackSave;w.Wb=T.stackRestore;w.Lf=T.setTempRet0;w.Ye=T.getTempRet0;function U(a,b){a!=l&&("number"==typeof a?this.da(a):b==l&&"string"!=typeof a?this.S(a,256):this.S(a,b))}function Kc(){return new U(l)} +function Lc(a,b){var c=Mc[a.charCodeAt(b)];return c==l?-1:c}function Nc(a){var b=Kc();b.Aa(a);return b}function V(a,b){this.H=a|0;this.M=b|0}V.Tc={};V.Aa=function(a){if(-128<=a&&128>a){var b=V.Tc[a];if(b)return b}b=new V(a|0,0>a?-1:0);-128<=a&&128>a&&(V.Tc[a]=b);return b};V.da=function(a){return isNaN(a)||!isFinite(a)?V.ZERO:a<=-V.Vc?V.MIN_VALUE:a+1>=V.Vc?V.MAX_VALUE:0>a?V.da(-a).K():new V(a%V.ya|0,a/V.ya|0)};V.qa=function(a,b){return new V(a,b)}; +V.S=function(a,b){0==a.length&&e(Error("number format error: empty string"));var c=b||10;(2>c||36i?(i=V.da(Math.pow(c,i)),f=f.multiply(i).add(V.da(j))):(f=f.multiply(d),f=f.add(V.da(j)))}return f};V.bc=65536; +V.gi=16777216;V.ya=V.bc*V.bc;V.hi=V.ya/2;V.ii=V.ya*V.bc;V.ce=V.ya*V.ya;V.Vc=V.ce/2;V.ZERO=V.Aa(0);V.ONE=V.Aa(1);V.Uc=V.Aa(-1);V.MAX_VALUE=V.qa(-1,2147483647);V.MIN_VALUE=V.qa(0,-2147483648);V.be=V.Aa(16777216);q=V.prototype;q.Zb=function(){return this.M*V.ya+this.Ue()}; +q.toString=function(a){a=a||10;(2>a||36h.length;)h="0"+h;d=""+h+d}};q.Ue=function(){return 0<=this.H?this.H:V.ya+this.H}; +q.Ja=function(){return 0==this.M&&0==this.H};q.Y=function(){return 0>this.M};q.zd=function(){return 1==(this.H&1)};q.ba=function(a){return this.M==a.M&&this.H==a.H};q.Bd=function(){return 0>this.lc(V.be)};q.af=function(a){return 0>>16,c=this.M&65535,d=this.H>>>16,f=a.M>>>16,h=a.M&65535,i=a.H>>>16,j;j=0+((this.H&65535)+(a.H&65535));a=0+(j>>>16);a+=d+i;d=0+(a>>>16);d+=c+h;c=0+(d>>>16);c=c+(b+f)&65535;return V.qa((a&65535)<<16|j&65535,c<<16|d&65535)};q.rb=function(a){return this.add(a.K())}; +q.multiply=function(a){if(this.Ja()||a.Ja())return V.ZERO;if(this.ba(V.MIN_VALUE))return a.zd()?V.MIN_VALUE:V.ZERO;if(a.ba(V.MIN_VALUE))return this.zd()?V.MIN_VALUE:V.ZERO;if(this.Y())return a.Y()?this.K().multiply(a.K()):this.K().multiply(a).K();if(a.Y())return this.multiply(a.K()).K();if(this.Bd()&&a.Bd())return V.da(this.Zb()*a.Zb());var b=this.M>>>16,c=this.M&65535,d=this.H>>>16,f=this.H&65535,h=a.M>>>16,i=a.M&65535,j=a.H>>>16,a=a.H&65535,x,p,A,t;t=0+f*a;A=0+(t>>>16);A+=d*a;p=0+(A>>>16);A=(A& +65535)+f*j;p+=A>>>16;A&=65535;p+=c*a;x=0+(p>>>16);p=(p&65535)+d*j;x+=p>>>16;p&=65535;p+=f*i;x+=p>>>16;p&=65535;x=x+(b*a+c*j+d*i+f*h)&65535;return V.qa(A<<16|t&65535,x<<16|p)}; +q.Ga=function(a){a.Ja()&&e(Error("division by zero"));if(this.Ja())return V.ZERO;if(this.ba(V.MIN_VALUE)){if(a.ba(V.ONE)||a.ba(V.Uc))return V.MIN_VALUE;if(a.ba(V.MIN_VALUE))return V.ONE;var b=this.Mf().Ga(a).shiftLeft(1);if(b.ba(V.ZERO))return a.Y()?V.ONE:V.Uc;var c=this.rb(a.multiply(b));return b.add(c.Ga(a))}if(a.ba(V.MIN_VALUE))return V.ZERO;if(this.Y())return a.Y()?this.K().Ga(a.K()):this.K().Ga(a).K();if(a.Y())return this.Ga(a.K()).K();for(var d=V.ZERO,c=this;c.bf(a);){for(var b=Math.max(1,Math.floor(c.Zb()/ +a.Zb())),f=Math.ceil(Math.log(b)/Math.LN2),f=48>=f?1:Math.pow(2,f-48),h=V.da(b),i=h.multiply(a);i.Y()||i.af(c);)b-=f,h=V.da(b),i=h.multiply(a);h.Ja()&&(h=V.ONE);d=d.add(h);c=c.rb(i)}return d};q.uf=function(){return V.qa(~this.H,~this.M)};q.shiftLeft=function(a){a&=63;if(0==a)return this;var b=this.H;return 32>a?V.qa(b<>>32-a):V.qa(0,b<a?V.qa(this.H>>>a|b<<32-a,b>>a):V.qa(b>>a-32,0<=b?0:-1)};q=U.prototype; +q.hc=function(a,b,c,d){for(var f=0,h=0;0<=--d;){var i=a*this[f++]+b[c]+h,h=Math.floor(i/67108864);b[c++]=i&67108863}return h};q.A=26;q.la=67108863;q.ab=67108864;q.Wd=Math.pow(2,52);q.Rc=26;q.Sc=0;var Mc=[],Oc,W;Oc=48;for(W=0;9>=W;++W)Mc[Oc++]=W;Oc=97;for(W=10;36>W;++W)Mc[Oc++]=W;Oc=65;for(W=10;36>W;++W)Mc[Oc++]=W;q=U.prototype;q.copyTo=function(a){for(var b=this.g-1;0<=b;--b)a[b]=this[b];a.g=this.g;a.u=this.u};q.Aa=function(a){this.g=1;this.u=0>a?-1:0;0a?this[0]=a+DV:this.g=0}; +q.S=function(a,b){var c;if(16==b)c=4;else if(8==b)c=3;else if(256==b)c=8;else if(2==b)c=1;else if(32==b)c=5;else if(4==b)c=2;else{this.Qe(a,b);return}this.u=this.g=0;for(var d=a.length,f=m,h=0;0<=--d;){var i=8==c?a[d]&255:Lc(a,d);0>i?"-"==a.charAt(d)&&(f=k):(f=m,0==h?this[this.g++]=i:h+c>this.A?(this[this.g-1]|=(i&(1<>this.A-h):this[this.g-1]|=i<=this.A&&(h-=this.A))}8==c&&0!=(a[0]&128)&&(this.u=-1,0>d|i,i=(this[j]&f)<=this.g)b.g=0;else{var d=a%this.A,f=this.A-d,h=(1<>d;for(var i=c+1;i>d;0>=this.A;if(a.g>=this.A;d+=this.u}else{for(d+=this.u;c>=this.A;d-=a.u}b.u=0>d?-1:0;-1>d?b[c++]=this.ab+d:0=d.g)){var f=this.abs();if(f.g>>16))j=p,x+=16;if(0!=(p=j>>8))j=p,x+=8;if(0!=(p=j>>4))j=p,x+=4;if(0!=(p=j>>2))j=p,x+=2;0!=j>>1&&(x+=1);j=this.A-x;0>this.Sc:0);x=this.Wd/p;p=(1<i&&U.ZERO.ka(c,c)}}}}; +q.toString=function(a){if(0>this.u)return"-"+this.K().toString(a);if(16==a)a=4;else if(8==a)a=3;else if(2==a)a=1;else if(32==a)a=5;else if(4==a)a=2;else return this.Of(a);var b=(1<>i))d=k,f="0123456789abcdefghijklmnopqrstuvwxyz".charAt(c);for(;0<=h;)i>(i+=this.A-a)):(c=this[h]>>(i-=a)&b,0>=i&&(i+=this.A,--h)),0this.u?this.K():this};q.Fb=function(a){var b=this.u-a.u;if(0!=b)return b;var c=this.g,b=c-a.g;if(0!=b)return 0>this.u?-b:b;for(;0<=--c;)if(0!=(b=this[c]-a[c]))return b;return 0};U.ZERO=Nc(0);U.ONE=Nc(1);q=U.prototype; +q.Qe=function(a,b){this.Aa(0);b==l&&(b=10);for(var c=this.Db(b),d=Math.pow(b,c),f=m,h=0,i=0,j=0;jx?"-"==a.charAt(j)&&0==this.Hc()&&(f=k):(i=b*i+x,++h>=c&&(this.fd(d),this.ed(i),i=h=0))}0this.u?-1:0>=this.g||1==this.g&&0>=this[0]?0:1};q.fd=function(a){this[this.g]=this.hc(a-1,this,0,this.g);++this.g;this.za()}; +q.ed=function(a){var b=0;if(0!=a){for(;this.g<=b;)this[this.g++]=0;for(this[b]+=a;this[b]>=this.ab;)this[b]-=this.ab,++b>=this.g&&(this[this.g++]=0),++this[b]}};q.Of=function(a){a==l&&(a=10);if(0==this.Hc()||2>a||36this.u){if(1==this.g)return this[0]-this.ab;if(0==this.g)return-1}else{if(1==this.g)return this[0];if(0==this.g)return 0}return(this[1]&(1<<32-this.A)-1)<>=this.A;if(a.g>=this.A;d+=this.u}else{for(d+=this.u;c>=this.A;d+=a.u}b.u=0>d?-1:0;0d&&(b[c++]=this.ab+d);b.g=c;b.za()}; +var X={abs:function(a,b){var c=new V(a,b),c=c.Y()?c.K():c;E[ib>>2]=c.H;E[ib+4>>2]=c.M},kd:function(){X.Je||(X.Je=k,X.Md=new U,X.Md.S("4294967296",10),X.Jc=new U,X.Jc.S("18446744073709551616",10),X.Xi=new U,X.Yi=new U)},Oi:function(a,b){var c=new U;c.S(b.toString(),10);var d=new U;c.qf(d);c=new U;c.S(a.toString(),10);var f=new U;c.dc(d,f);return f},stringify:function(a,b,c){a=(new V(a,b)).toString();c&&"-"==a[0]&&(X.kd(),c=new U,c.S(a,10),a=new U,X.Jc.dc(c,a),a=a.toString(10));return a},S:function(a, +b,c,d,f){X.kd();var h=new U;h.S(a,b);a=new U;a.S(c,10);c=new U;c.S(d,10);f&&0>h.Fb(U.ZERO)&&(d=new U,h.dc(X.Jc,d),h=d);d=m;0>h.Fb(a)?(h=a,d=k):0>2]=h.H;E[ib+4>>2]=h.M;d&&e("range error")}}; +if(hb)if("function"===typeof r.locateFile?hb=r.locateFile(hb):r.memoryInitializerPrefixURL&&(hb=r.memoryInitializerPrefixURL+hb),s||ga){var Pc=r.readBinary(hb);K.set(Pc,Oa)}else fb(),Ib(hb,function(a){K.set(a,Oa);gb()},function(){e("could not load memory initializer "+hb)});function ka(a){this.name="ExitStatus";this.message="Program terminated with exit("+a+")";this.status=a}ka.prototype=Error();var Qc,Rc=l,eb=function Sc(){!r.calledRun&&Tc&&Uc();r.calledRun||(eb=Sc)}; +r.callMain=r.ri=function(a){function b(){for(var a=0;3>a;a++)d.push(0)}u(0==cb,"cannot call main when async dependencies remain! (listen on __ATMAIN__)");u(0==Ua.length,"cannot call main when preRun functions remain to be called");a=a||[];Za||(Za=k,Ta(Va));var c=a.length+1,d=[H(N(r.thisProgram),"i8",F)];b();for(var f=0;fd;a=0<=d?++f:--f)c[a]=D[b+a];return c};$.prototype.get=function(a){var b,c,d;a!=l&&this.bind(a)&&this.step();d=[];a=b=0;for(c=kd(this.L);0<=c?bc;a=0<=c?++b:--b)switch(jd(this.L,a)){case Y.Xd:case Y.FLOAT:d.push(this.We(a));break;case Y.ae:d.push(this.Xe(a));break;case Y.Nd:d.push(this.getBlob(a));break;default:d.push(l)}return d}; +$.prototype.getColumnNames=function(){var a,b,c,d;d=[];a=b=0;for(c=kd(this.L);0<=c?bc;a=0<=c?++b:--b)d.push(hd(this.L,a));return d};$.prototype.getAsObject=function(a){var b,c,d,f,h,i;f=this.get(a);c=this.getColumnNames();d={};a=h=0;for(i=c.length;h>>0);a!=l&&z.Gb("/",this.filename,a,k,k);this.handleError(od(this.filename,Z));this.db=Ga(Z,"i32");this.Yb={}} +ud.prototype.run=function(a,b){var c;this.db||e("Database closed");b?(c=this.prepare(a,b),c.step(),c.free()):this.handleError(md(this.db,a,0,0,Z));return this}; +ud.prototype.exec=function(a){var b,c,d,f,h;this.db||e("Database closed");f=w.Xb();c=w.Ma(a.length<<3);xa(a,c);a=w.Ma(4);for(d=[];Ga(c,"i8")!==Wc;)if(ya(Z,0,"i32"),ya(a,0,"i32"),this.handleError(qd(this.db,c,-1,Z,a)),b=Ga(Z,"i32"),c=Ga(a,"i32"),b!==Wc){h=new $(b,this);for(b=l;h.step();)b===l&&(b={columns:h.getColumnNames(),values:[]},d.push(b)),b.values.push(h.get());h.free()}w.Wb(f);return d}; +ud.prototype.each=function(a,b,c,d){"function"===typeof b&&(d=c,c=b,b=g);for(a=this.prepare(a,b);a.step();)c(a.getAsObject());a.free();if("function"===typeof d)return d()};ud.prototype.prepare=function(a,b){var c,d;ya(Z,0,"i32");this.handleError(pd(this.db,a,-1,Z,Wc));c=Ga(Z,"i32");c===Wc&&e("Nothing to prepare");d=new $(c,this);b!=l&&d.bind(b);return this.Yb[c]=d}; +ud.prototype["export"]=function(){var a,b,c;c=this.Yb;for(b in c)a=c[b],a.free();this.handleError(dd(this.db));a=z.Ef(this.filename,{encoding:"binary"});this.handleError(od(this.filename,Z));this.db=Ga(Z,"i32");return a};ud.prototype.close=function(){var a,b,c;c=this.Yb;for(b in c)a=c[b],a.free();this.handleError(dd(this.db));z.Da("/"+this.filename);return this.db=l};ud.prototype.handleError=function(a){if(a===Y.Bb)return l;a=ld(this.db);e(Error(a))};Database=ud; +od=r.cwrap("sqlite3_open","number",["string","number"]);dd=r.cwrap("sqlite3_close_v2","number",["number"]);md=r.cwrap("sqlite3_exec","number",["number","string","number","number","number"]);r.cwrap("sqlite3_free","",["number"]);pd=r.cwrap("sqlite3_prepare_v2","number",["number","string","number","number","number"]);qd=r.cwrap("sqlite3_prepare_v2","number",["number","number","number","number","number"]);bd=r.cwrap("sqlite3_bind_text","number",["number","number","number","number","number"]); +Yc=r.cwrap("sqlite3_bind_blob","number",["number","number","number","number","number"]);Zc=r.cwrap("sqlite3_bind_double","number",["number","number","number"]);$c=r.cwrap("sqlite3_bind_int","number",["number","number","number"]);ad=r.cwrap("sqlite3_bind_parameter_index","number",["number","string"]);td=r.cwrap("sqlite3_step","number",["number"]);ld=r.cwrap("sqlite3_errmsg","string",["number"]);kd=r.cwrap("sqlite3_data_count","number",["number"]); +gd=r.cwrap("sqlite3_column_double","number",["number","number"]);id=r.cwrap("sqlite3_column_text","string",["number","number"]);ed=r.cwrap("sqlite3_column_blob","number",["number","number"]);fd=r.cwrap("sqlite3_column_bytes","number",["number","number"]);jd=r.cwrap("sqlite3_column_type","number",["number","number"]);hd=r.cwrap("sqlite3_column_name","string",["number","number"]);rd=r.cwrap("sqlite3_reset","number",["number"]);cd=r.cwrap("sqlite3_clear_bindings","number",["number"]); +nd=r.cwrap("sqlite3_finalize","number",["number"]);this.SQL={Database:Database};for(Xc in this.SQL)r[Xc]=this.SQL[Xc];Wc=0;Y.Bb=0;Y.xh=1;Y.Oh=2;Y.$h=3;Y.Sf=4;Y.Uf=5;Y.Rh=6;Y.Vh=7;Y.ci=8;Y.Ph=9;Y.Qh=10;Y.Xf=11;Y.Xh=12;Y.Nh=13;Y.Vf=14;Y.ai=15;Y.EMPTY=16;Y.di=17;Y.fi=18;Y.Wf=19;Y.Sh=20;Y.Th=21;Y.Uh=22;Y.Tf=23;Y.Mh=24;Y.bi=25;Y.Wh=26;Y.Yh=27;Y.ji=28;Y.$d=100;Y.DONE=101;Y.Xd=1;Y.FLOAT=2;Y.ae=3;Y.Nd=4;Y.Zh=5; + +return this['SQL']; +})(); +if (typeof module !== 'undefined') module.exports = SQL; +if (typeof define === 'function') define(SQL); diff --git a/src/main/webapp/static/alasql/xlsx.core.min.js b/src/main/webapp/static/alasql/xlsx.core.min.js new file mode 100644 index 0000000000000000000000000000000000000000..7af1be2f6fee5b9bb2d510baf86e4ced9633f0e1 --- /dev/null +++ b/src/main/webapp/static/alasql/xlsx.core.min.js @@ -0,0 +1,9 @@ +/* xlsx.js (C) 2013-2014 SheetJS -- http://sheetjs.com */ +!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var f;"undefined"!=typeof window?f=window:"undefined"!=typeof global?f=global:"undefined"!=typeof self&&(f=self),f.JSZip=e()}}(function(){var define,module,exports;return 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 a(o,!0);if(i)return i(o,!0);throw new Error("Cannot find module '"+o+"'")}var f=n[o]={exports:{}};t[o][0].call(f.exports,function(e){var n=t[o][1][e];return s(n?n:e)},f,f.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o>2;enc2=(chr1&3)<<4|chr2>>4;enc3=(chr2&15)<<2|chr3>>6;enc4=chr3&63;if(isNaN(chr2)){enc3=enc4=64}else if(isNaN(chr3)){enc4=64}output=output+_keyStr.charAt(enc1)+_keyStr.charAt(enc2)+_keyStr.charAt(enc3)+_keyStr.charAt(enc4)}return output};exports.decode=function(input,utf8){var output="";var chr1,chr2,chr3;var enc1,enc2,enc3,enc4;var i=0;input=input.replace(/[^A-Za-z0-9\+\/\=]/g,"");while(i>4;chr2=(enc2&15)<<4|enc3>>2;chr3=(enc3&3)<<6|enc4;output=output+String.fromCharCode(chr1);if(enc3!=64){output=output+String.fromCharCode(chr2)}if(enc4!=64){output=output+String.fromCharCode(chr3)}}return output}},{}],2:[function(_dereq_,module,exports){"use strict";function CompressedObject(){this.compressedSize=0;this.uncompressedSize=0;this.crc32=0;this.compressionMethod=null;this.compressedContent=null}CompressedObject.prototype={getContent:function(){return null},getCompressedContent:function(){return null}};module.exports=CompressedObject},{}],3:[function(_dereq_,module,exports){"use strict";exports.STORE={magic:"\x00\x00",compress:function(content){return content},uncompress:function(content){return content},compressInputType:null,uncompressInputType:null};exports.DEFLATE=_dereq_("./flate")},{"./flate":8}],4:[function(_dereq_,module,exports){"use strict";var utils=_dereq_("./utils");var table=[0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021,3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,853044451,1172266101,3705015759,2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527,1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,4240017532,1658658271,366619977,2362670323,4224994405,1303535960,984961486,2747007092,3569037538,1256170817,1037604311,2765210733,3554079995,1131014506,879679996,2909243462,3663771856,1141124467,855842277,2852801631,3708648649,1342533948,654459306,3188396048,3373015174,1466479909,544179635,3110523913,3462522015,1591671054,702138776,2966460450,3352799412,1504918807,783551873,3082640443,3233442989,3988292384,2596254646,62317068,1957810842,3939845945,2647816111,81470997,1943803523,3814918930,2489596804,225274430,2053790376,3826175755,2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626,1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,2998733608,733239954,1555261956,3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692,2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,2932959818,3654703836,1088359270,936918e3,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614,3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117];module.exports=function crc32(input,crc){if(typeof input==="undefined"||!input.length){return 0}var isArray=utils.getTypeOf(input)!=="string";if(typeof crc=="undefined"){crc=0}var x=0;var y=0;var b=0;crc=crc^-1;for(var i=0,iTop=input.length;i>>8^x}return crc^-1}},{"./utils":21}],5:[function(_dereq_,module,exports){"use strict";var utils=_dereq_("./utils");function DataReader(data){this.data=null;this.length=0;this.index=0}DataReader.prototype={checkOffset:function(offset){this.checkIndex(this.index+offset)},checkIndex:function(newIndex){if(this.length=this.index;i--){result=(result<<8)+this.byteAt(i)}this.index+=size;return result},readString:function(size){return utils.transformTo("string",this.readData(size))},readData:function(size){},lastIndexOfSignature:function(sig){},readDate:function(){var dostime=this.readInt(4);return new Date((dostime>>25&127)+1980,(dostime>>21&15)-1,dostime>>16&31,dostime>>11&31,dostime>>5&63,(dostime&31)<<1)}};module.exports=DataReader},{"./utils":21}],6:[function(_dereq_,module,exports){"use strict";exports.base64=false;exports.binary=false;exports.dir=false;exports.createFolders=false;exports.date=null;exports.compression=null;exports.comment=null},{}],7:[function(_dereq_,module,exports){"use strict";var utils=_dereq_("./utils");exports.string2binary=function(str){return utils.string2binary(str)};exports.string2Uint8Array=function(str){return utils.transformTo("uint8array",str)};exports.uint8Array2String=function(array){return utils.transformTo("string",array)};exports.string2Blob=function(str){var buffer=utils.transformTo("arraybuffer",str);return utils.arrayBuffer2Blob(buffer)};exports.arrayBuffer2Blob=function(buffer){return utils.arrayBuffer2Blob(buffer)};exports.transformTo=function(outputType,input){return utils.transformTo(outputType,input)};exports.getTypeOf=function(input){return utils.getTypeOf(input)};exports.checkSupport=function(type){return utils.checkSupport(type)};exports.MAX_VALUE_16BITS=utils.MAX_VALUE_16BITS;exports.MAX_VALUE_32BITS=utils.MAX_VALUE_32BITS;exports.pretty=function(str){return utils.pretty(str)};exports.findCompression=function(compressionMethod){return utils.findCompression(compressionMethod)};exports.isRegExp=function(object){return utils.isRegExp(object)}},{"./utils":21}],8:[function(_dereq_,module,exports){"use strict";var USE_TYPEDARRAY=typeof Uint8Array!=="undefined"&&typeof Uint16Array!=="undefined"&&typeof Uint32Array!=="undefined";var pako=_dereq_("pako");exports.uncompressInputType=USE_TYPEDARRAY?"uint8array":"array";exports.compressInputType=USE_TYPEDARRAY?"uint8array":"array";exports.magic="\b\x00";exports.compress=function(input){return pako.deflateRaw(input)};exports.uncompress=function(input){return pako.inflateRaw(input)}},{pako:24}],9:[function(_dereq_,module,exports){"use strict";var base64=_dereq_("./base64");function JSZip(data,options){if(!(this instanceof JSZip))return new JSZip(data,options);this.files={};this.comment=null;this.root="";if(data){this.load(data,options)}this.clone=function(){var newObj=new JSZip;for(var i in this){if(typeof this[i]!=="function"){newObj[i]=this[i]}}return newObj}}JSZip.prototype=_dereq_("./object");JSZip.prototype.load=_dereq_("./load");JSZip.support=_dereq_("./support");JSZip.defaults=_dereq_("./defaults");JSZip.utils=_dereq_("./deprecatedPublicUtils");JSZip.base64={encode:function(input){return base64.encode(input)},decode:function(input){return base64.decode(input)}};JSZip.compressions=_dereq_("./compressions");module.exports=JSZip},{"./base64":1,"./compressions":3,"./defaults":6,"./deprecatedPublicUtils":7,"./load":10,"./object":13,"./support":17}],10:[function(_dereq_,module,exports){"use strict";var base64=_dereq_("./base64");var ZipEntries=_dereq_("./zipEntries");module.exports=function(data,options){var files,zipEntries,i,input;options=options||{};if(options.base64){data=base64.decode(data)}zipEntries=new ZipEntries(data,options);files=zipEntries.files;for(i=0;i>>8}return hex};var extend=function(){var result={},i,attr;for(i=0;i0?path.substring(0,lastSlash):""};var folderAdd=function(name,createFolders){if(name.slice(-1)!="/"){name+="/"}createFolders=typeof createFolders!=="undefined"?createFolders:false;if(!this.files[name]){fileAdd.call(this,name,null,{dir:true,createFolders:createFolders})}return this.files[name]};var generateCompressedObjectFrom=function(file,compression){var result=new CompressedObject,content;if(file._data instanceof CompressedObject){result.uncompressedSize=file._data.uncompressedSize;result.crc32=file._data.crc32;if(result.uncompressedSize===0||file.dir){compression=compressions["STORE"];result.compressedContent="";result.crc32=0}else if(file._data.compressionMethod===compression.magic){result.compressedContent=file._data.getCompressedContent()}else{content=file._data.getContent();result.compressedContent=compression.compress(utils.transformTo(compression.compressInputType,content))}}else{content=getBinaryData(file);if(!content||content.length===0||file.dir){compression=compressions["STORE"];content=""}result.uncompressedSize=content.length;result.crc32=crc32(content);result.compressedContent=compression.compress(utils.transformTo(compression.compressInputType,content))}result.compressedSize=result.compressedContent.length;result.compressionMethod=compression.magic;return result};var generateZipParts=function(name,file,compressedObject,offset){var data=compressedObject.compressedContent,utfEncodedFileName=utils.transformTo("string",utf8.utf8encode(file.name)),comment=file.comment||"",utfEncodedComment=utils.transformTo("string",utf8.utf8encode(comment)),useUTF8ForFileName=utfEncodedFileName.length!==file.name.length,useUTF8ForComment=utfEncodedComment.length!==comment.length,o=file.options,dosTime,dosDate,extraFields="",unicodePathExtraField="",unicodeCommentExtraField="",dir,date;if(file._initialMetadata.dir!==file.dir){dir=file.dir}else{dir=o.dir}if(file._initialMetadata.date!==file.date){date=file.date}else{date=o.date}dosTime=date.getHours();dosTime=dosTime<<6;dosTime=dosTime|date.getMinutes();dosTime=dosTime<<5;dosTime=dosTime|date.getSeconds()/2;dosDate=date.getFullYear()-1980;dosDate=dosDate<<4;dosDate=dosDate|date.getMonth()+1;dosDate=dosDate<<5;dosDate=dosDate|date.getDate();if(useUTF8ForFileName){unicodePathExtraField=decToHex(1,1)+decToHex(crc32(utfEncodedFileName),4)+utfEncodedFileName;extraFields+="up"+decToHex(unicodePathExtraField.length,2)+unicodePathExtraField}if(useUTF8ForComment){unicodeCommentExtraField=decToHex(1,1)+decToHex(this.crc32(utfEncodedComment),4)+utfEncodedComment;extraFields+="uc"+decToHex(unicodeCommentExtraField.length,2)+unicodeCommentExtraField}var header="";header+="\n\x00";header+=useUTF8ForFileName||useUTF8ForComment?"\x00\b":"\x00\x00";header+=compressedObject.compressionMethod;header+=decToHex(dosTime,2);header+=decToHex(dosDate,2);header+=decToHex(compressedObject.crc32,4);header+=decToHex(compressedObject.compressedSize,4);header+=decToHex(compressedObject.uncompressedSize,4);header+=decToHex(utfEncodedFileName.length,2);header+=decToHex(extraFields.length,2);var fileRecord=signature.LOCAL_FILE_HEADER+header+utfEncodedFileName+extraFields;var dirRecord=signature.CENTRAL_FILE_HEADER+"\x00"+header+decToHex(utfEncodedComment.length,2)+"\x00\x00"+"\x00\x00"+(dir===true?"\x00\x00\x00":"\x00\x00\x00\x00")+decToHex(offset,4)+utfEncodedFileName+extraFields+utfEncodedComment;return{fileRecord:fileRecord,dirRecord:dirRecord,compressedObject:compressedObject}};var out={load:function(stream,options){throw new Error("Load method is not defined. Is the file jszip-load.js included ?")},filter:function(search){var result=[],filename,relativePath,file,fileClone;for(filename in this.files){if(!this.files.hasOwnProperty(filename)){continue}file=this.files[filename];fileClone=new ZipObject(file.name,file._data,extend(file.options));relativePath=filename.slice(this.root.length,filename.length);if(filename.slice(0,this.root.length)===this.root&&search(relativePath,fileClone)){result.push(fileClone)}}return result},file:function(name,data,o){if(arguments.length===1){if(utils.isRegExp(name)){var regexp=name;return this.filter(function(relativePath,file){return!file.dir&®exp.test(relativePath)})}else{return this.filter(function(relativePath,file){return!file.dir&&relativePath===name})[0]||null}}else{name=this.root+name;fileAdd.call(this,name,data,o)}return this},folder:function(arg){if(!arg){return this}if(utils.isRegExp(arg)){return this.filter(function(relativePath,file){return file.dir&&arg.test(relativePath)})}var name=this.root+arg;var newFolder=folderAdd.call(this,name);var ret=this.clone();ret.root=newFolder.name;return ret},remove:function(name){name=this.root+name;var file=this.files[name];if(!file){if(name.slice(-1)!="/"){name+="/"}file=this.files[name]}if(file&&!file.dir){delete this.files[name]}else{var kids=this.filter(function(relativePath,file){return file.name.slice(0,name.length)===name});for(var i=0;i=0;--i){if(this.data[i]===sig0&&this.data[i+1]===sig1&&this.data[i+2]===sig2&&this.data[i+3]===sig3){return i}}return-1};Uint8ArrayReader.prototype.readData=function(size){this.checkOffset(size);if(size===0){return new Uint8Array(0)}var result=this.data.subarray(this.index,this.index+size);this.index+=size;return result};module.exports=Uint8ArrayReader},{"./dataReader":5}],19:[function(_dereq_,module,exports){"use strict";var utils=_dereq_("./utils");var Uint8ArrayWriter=function(length){this.data=new Uint8Array(length);this.index=0};Uint8ArrayWriter.prototype={append:function(input){if(input.length!==0){input=utils.transformTo("uint8array",input);this.data.set(input,this.index);this.index+=input.length}},finalize:function(){return this.data}};module.exports=Uint8ArrayWriter},{"./utils":21}],20:[function(_dereq_,module,exports){"use strict";var utils=_dereq_("./utils");var support=_dereq_("./support");var nodeBuffer=_dereq_("./nodeBuffer");var _utf8len=new Array(256);for(var i=0;i<256;i++){_utf8len[i]=i>=252?6:i>=248?5:i>=240?4:i>=224?3:i>=192?2:1}_utf8len[254]=_utf8len[254]=1;var string2buf=function(str){var buf,c,c2,m_pos,i,str_len=str.length,buf_len=0;for(m_pos=0;m_pos>>6;buf[i++]=128|c&63}else if(c<65536){buf[i++]=224|c>>>12;buf[i++]=128|c>>>6&63;buf[i++]=128|c&63}else{buf[i++]=240|c>>>18;buf[i++]=128|c>>>12&63;buf[i++]=128|c>>>6&63;buf[i++]=128|c&63}}return buf};var utf8border=function(buf,max){var pos;max=max||buf.length;if(max>buf.length){max=buf.length}pos=max-1;while(pos>=0&&(buf[pos]&192)===128){pos--}if(pos<0){return max}if(pos===0){return max}return pos+_utf8len[buf[pos]]>max?pos:max};var buf2string=function(buf){var str,i,out,c,c_len;var len=buf.length;var utf16buf=new Array(len*2);for(out=0,i=0;i4){utf16buf[out++]=65533;i+=c_len-1;continue}c&=c_len===2?31:c_len===3?15:7;while(c_len>1&&i1){utf16buf[out++]=65533;continue}if(c<65536){utf16buf[out++]=c}else{c-=65536;utf16buf[out++]=55296|c>>10&1023;utf16buf[out++]=56320|c&1023}}if(utf16buf.length!==out){if(utf16buf.subarray){utf16buf=utf16buf.subarray(0,out)}else{utf16buf.length=out}}return utils.applyFromCharCode(utf16buf)};exports.utf8encode=function utf8encode(str){if(support.nodebuffer){return nodeBuffer(str,"utf-8")}return string2buf(str)};exports.utf8decode=function utf8decode(buf){if(support.nodebuffer){return utils.transformTo("nodebuffer",buf).toString("utf-8")}buf=utils.transformTo(support.uint8array?"uint8array":"array",buf);var result=[],k=0,len=buf.length,chunk=65536;while(k1){try{if(type==="array"||type==="nodebuffer"){result.push(String.fromCharCode.apply(null,array.slice(k,Math.min(k+chunk,len))))}else{result.push(String.fromCharCode.apply(null,array.subarray(k,Math.min(k+chunk,len))))}k+=chunk}catch(e){chunk=Math.floor(chunk/2)}}return result.join("")}exports.applyFromCharCode=arrayLikeToString;function arrayLikeToArrayLike(arrayFrom,arrayTo){for(var i=0;i1){throw new Error("Multi-volumes zip are not supported")}},readLocalFiles:function(){var i,file;for(i=0;i0){opt.windowBits=-opt.windowBits}else if(opt.gzip&&opt.windowBits>0&&opt.windowBits<16){opt.windowBits+=16}this.err=0;this.msg="";this.ended=false;this.chunks=[];this.strm=new zstream;this.strm.avail_out=0;var status=zlib_deflate.deflateInit2(this.strm,opt.level,opt.method,opt.windowBits,opt.memLevel,opt.strategy);if(status!==Z_OK){throw new Error(msg[status])}if(opt.header){zlib_deflate.deflateSetHeader(this.strm,opt.header)}};Deflate.prototype.push=function(data,mode){var strm=this.strm;var chunkSize=this.options.chunkSize;var status,_mode;if(this.ended){return false}_mode=mode===~~mode?mode:mode===true?Z_FINISH:Z_NO_FLUSH;if(typeof data==="string"){strm.input=strings.string2buf(data)}else{strm.input=data}strm.next_in=0;strm.avail_in=strm.input.length;do{if(strm.avail_out===0){strm.output=new utils.Buf8(chunkSize);strm.next_out=0;strm.avail_out=chunkSize}status=zlib_deflate.deflate(strm,_mode);if(status!==Z_STREAM_END&&status!==Z_OK){this.onEnd(status);this.ended=true;return false}if(strm.avail_out===0||strm.avail_in===0&&_mode===Z_FINISH){if(this.options.to==="string"){this.onData(strings.buf2binstring(utils.shrinkBuf(strm.output,strm.next_out)))}else{this.onData(utils.shrinkBuf(strm.output,strm.next_out))}}}while((strm.avail_in>0||strm.avail_out===0)&&status!==Z_STREAM_END);if(_mode===Z_FINISH){status=zlib_deflate.deflateEnd(this.strm);this.onEnd(status);this.ended=true;return status===Z_OK}return true};Deflate.prototype.onData=function(chunk){this.chunks.push(chunk)};Deflate.prototype.onEnd=function(status){if(status===Z_OK){if(this.options.to==="string"){this.result=this.chunks.join("")}else{this.result=utils.flattenChunks(this.chunks)}}this.chunks=[];this.err=status;this.msg=this.strm.msg};function deflate(input,options){var deflator=new Deflate(options);deflator.push(input,true);if(deflator.err){throw deflator.msg}return deflator.result}function deflateRaw(input,options){options=options||{};options.raw=true;return deflate(input,options)}function gzip(input,options){options=options||{};options.gzip=true;return deflate(input,options)}exports.Deflate=Deflate;exports.deflate=deflate;exports.deflateRaw=deflateRaw;exports.gzip=gzip},{"./utils/common":27,"./utils/strings":28,"./zlib/deflate.js":32,"./zlib/messages":37,"./zlib/zstream":39}],26:[function(_dereq_,module,exports){"use strict";var zlib_inflate=_dereq_("./zlib/inflate.js");var utils=_dereq_("./utils/common");var strings=_dereq_("./utils/strings");var c=_dereq_("./zlib/constants");var msg=_dereq_("./zlib/messages");var zstream=_dereq_("./zlib/zstream");var gzheader=_dereq_("./zlib/gzheader");var Inflate=function(options){this.options=utils.assign({chunkSize:16384,windowBits:0,to:""},options||{});var opt=this.options;if(opt.raw&&opt.windowBits>=0&&opt.windowBits<16){opt.windowBits=-opt.windowBits;if(opt.windowBits===0){opt.windowBits=-15}}if(opt.windowBits>=0&&opt.windowBits<16&&!(options&&options.windowBits)){opt.windowBits+=32}if(opt.windowBits>15&&opt.windowBits<48){if((opt.windowBits&15)===0){opt.windowBits|=15}}this.err=0;this.msg="";this.ended=false;this.chunks=[];this.strm=new zstream;this.strm.avail_out=0;var status=zlib_inflate.inflateInit2(this.strm,opt.windowBits);if(status!==c.Z_OK){throw new Error(msg[status])}this.header=new gzheader;zlib_inflate.inflateGetHeader(this.strm,this.header)};Inflate.prototype.push=function(data,mode){var strm=this.strm;var chunkSize=this.options.chunkSize;var status,_mode;var next_out_utf8,tail,utf8str;if(this.ended){return false}_mode=mode===~~mode?mode:mode===true?c.Z_FINISH:c.Z_NO_FLUSH;if(typeof data==="string"){strm.input=strings.binstring2buf(data)}else{strm.input=data}strm.next_in=0;strm.avail_in=strm.input.length;do{if(strm.avail_out===0){strm.output=new utils.Buf8(chunkSize);strm.next_out=0;strm.avail_out=chunkSize}status=zlib_inflate.inflate(strm,c.Z_NO_FLUSH);if(status!==c.Z_STREAM_END&&status!==c.Z_OK){this.onEnd(status);this.ended=true;return false}if(strm.next_out){if(strm.avail_out===0||status===c.Z_STREAM_END||strm.avail_in===0&&_mode===c.Z_FINISH){if(this.options.to==="string"){next_out_utf8=strings.utf8border(strm.output,strm.next_out);tail=strm.next_out-next_out_utf8;utf8str=strings.buf2string(strm.output,next_out_utf8);strm.next_out=tail;strm.avail_out=chunkSize-tail;if(tail){utils.arraySet(strm.output,strm.output,next_out_utf8,tail,0)}this.onData(utf8str)}else{this.onData(utils.shrinkBuf(strm.output,strm.next_out))}}}}while(strm.avail_in>0&&status!==c.Z_STREAM_END);if(status===c.Z_STREAM_END){_mode=c.Z_FINISH}if(_mode===c.Z_FINISH){status=zlib_inflate.inflateEnd(this.strm);this.onEnd(status);this.ended=true;return status===c.Z_OK}return true};Inflate.prototype.onData=function(chunk){this.chunks.push(chunk)};Inflate.prototype.onEnd=function(status){if(status===c.Z_OK){if(this.options.to==="string"){this.result=this.chunks.join("")}else{this.result=utils.flattenChunks(this.chunks)}}this.chunks=[];this.err=status;this.msg=this.strm.msg};function inflate(input,options){var inflator=new Inflate(options);inflator.push(input,true);if(inflator.err){throw inflator.msg}return inflator.result}function inflateRaw(input,options){options=options||{};options.raw=true;return inflate(input,options)}exports.Inflate=Inflate;exports.inflate=inflate;exports.inflateRaw=inflateRaw;exports.ungzip=inflate},{"./utils/common":27,"./utils/strings":28,"./zlib/constants":30,"./zlib/gzheader":33,"./zlib/inflate.js":35,"./zlib/messages":37,"./zlib/zstream":39}],27:[function(_dereq_,module,exports){"use strict";var TYPED_OK=typeof Uint8Array!=="undefined"&&typeof Uint16Array!=="undefined"&&typeof Int32Array!=="undefined";exports.assign=function(obj){var sources=Array.prototype.slice.call(arguments,1);while(sources.length){var source=sources.shift();if(!source){continue}if(typeof source!=="object"){throw new TypeError(source+"must be non-object")}for(var p in source){if(source.hasOwnProperty(p)){obj[p]=source[p]}}}return obj};exports.shrinkBuf=function(buf,size){if(buf.length===size){return buf}if(buf.subarray){return buf.subarray(0,size)}buf.length=size;return buf};var fnTyped={arraySet:function(dest,src,src_offs,len,dest_offs){if(src.subarray&&dest.subarray){dest.set(src.subarray(src_offs,src_offs+len),dest_offs);return}for(var i=0;i=252?6:i>=248?5:i>=240?4:i>=224?3:i>=192?2:1}_utf8len[254]=_utf8len[254]=1;exports.string2buf=function(str){var buf,c,c2,m_pos,i,str_len=str.length,buf_len=0;for(m_pos=0;m_pos>>6;buf[i++]=128|c&63}else if(c<65536){buf[i++]=224|c>>>12;buf[i++]=128|c>>>6&63;buf[i++]=128|c&63}else{buf[i++]=240|c>>>18;buf[i++]=128|c>>>12&63;buf[i++]=128|c>>>6&63;buf[i++]=128|c&63}}return buf};function buf2binstring(buf,len){if(len<65537){if(buf.subarray&&STR_APPLY_UIA_OK||!buf.subarray&&STR_APPLY_OK){return String.fromCharCode.apply(null,utils.shrinkBuf(buf,len))}}var result="";for(var i=0;i4){utf16buf[out++]=65533;i+=c_len-1;continue}c&=c_len===2?31:c_len===3?15:7;while(c_len>1&&i1){utf16buf[out++]=65533;continue}if(c<65536){utf16buf[out++]=c}else{c-=65536;utf16buf[out++]=55296|c>>10&1023;utf16buf[out++]=56320|c&1023}}return buf2binstring(utf16buf,out)};exports.utf8border=function(buf,max){var pos;max=max||buf.length;if(max>buf.length){max=buf.length}pos=max-1;while(pos>=0&&(buf[pos]&192)===128){pos--}if(pos<0){return max}if(pos===0){return max}return pos+_utf8len[buf[pos]]>max?pos:max}},{"./common":27}],29:[function(_dereq_,module,exports){"use strict";function adler32(adler,buf,len,pos){var s1=adler&65535|0,s2=adler>>>16&65535|0,n=0;while(len!==0){n=len>2e3?2e3:len;len-=n;do{s1=s1+buf[pos++]|0;s2=s2+s1|0}while(--n);s1%=65521;s2%=65521}return s1|s2<<16|0}module.exports=adler32},{}],30:[function(_dereq_,module,exports){module.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},{}],31:[function(_dereq_,module,exports){"use strict";function makeTable(){var c,table=[];for(var n=0;n<256;n++){c=n;for(var k=0;k<8;k++){c=c&1?3988292384^c>>>1:c>>>1}table[n]=c}return table}var crcTable=makeTable();function crc32(crc,buf,len,pos){var t=crcTable,end=pos+len;crc=crc^-1;for(var i=pos;i>>8^t[(crc^buf[i])&255]}return crc^-1}module.exports=crc32},{}],32:[function(_dereq_,module,exports){"use strict";var utils=_dereq_("../utils/common");var trees=_dereq_("./trees");var adler32=_dereq_("./adler32");var crc32=_dereq_("./crc32");var msg=_dereq_("./messages");var Z_NO_FLUSH=0;var Z_PARTIAL_FLUSH=1;var Z_FULL_FLUSH=3;var Z_FINISH=4;var Z_BLOCK=5;var Z_OK=0;var Z_STREAM_END=1;var Z_STREAM_ERROR=-2;var Z_DATA_ERROR=-3;var Z_BUF_ERROR=-5;var Z_DEFAULT_COMPRESSION=-1;var Z_FILTERED=1;var Z_HUFFMAN_ONLY=2;var Z_RLE=3;var Z_FIXED=4;var Z_DEFAULT_STRATEGY=0;var Z_UNKNOWN=2;var Z_DEFLATED=8;var MAX_MEM_LEVEL=9;var MAX_WBITS=15;var DEF_MEM_LEVEL=8;var LENGTH_CODES=29;var LITERALS=256;var L_CODES=LITERALS+1+LENGTH_CODES;var D_CODES=30;var BL_CODES=19;var HEAP_SIZE=2*L_CODES+1;var MAX_BITS=15;var MIN_MATCH=3;var MAX_MATCH=258;var MIN_LOOKAHEAD=MAX_MATCH+MIN_MATCH+1;var PRESET_DICT=32;var INIT_STATE=42;var EXTRA_STATE=69;var NAME_STATE=73;var COMMENT_STATE=91;var HCRC_STATE=103;var BUSY_STATE=113;var FINISH_STATE=666;var BS_NEED_MORE=1;var BS_BLOCK_DONE=2;var BS_FINISH_STARTED=3;var BS_FINISH_DONE=4;var OS_CODE=3;function err(strm,errorCode){strm.msg=msg[errorCode];return errorCode}function rank(f){return(f<<1)-(f>4?9:0)}function zero(buf){var len=buf.length;while(--len>=0){buf[len]=0}}function flush_pending(strm){var s=strm.state;var len=s.pending;if(len>strm.avail_out){len=strm.avail_out}if(len===0){return}utils.arraySet(strm.output,s.pending_buf,s.pending_out,len,strm.next_out);strm.next_out+=len;s.pending_out+=len;strm.total_out+=len;strm.avail_out-=len;s.pending-=len;if(s.pending===0){s.pending_out=0}}function flush_block_only(s,last){trees._tr_flush_block(s,s.block_start>=0?s.block_start:-1,s.strstart-s.block_start,last);s.block_start=s.strstart;flush_pending(s.strm)}function put_byte(s,b){s.pending_buf[s.pending++]=b}function putShortMSB(s,b){s.pending_buf[s.pending++]=b>>>8&255;s.pending_buf[s.pending++]=b&255}function read_buf(strm,buf,start,size){var len=strm.avail_in;if(len>size){len=size}if(len===0){return 0}strm.avail_in-=len;utils.arraySet(buf,strm.input,strm.next_in,len,start);if(strm.state.wrap===1){strm.adler=adler32(strm.adler,buf,len,start)}else if(strm.state.wrap===2){strm.adler=crc32(strm.adler,buf,len,start)}strm.next_in+=len;strm.total_in+=len;return len}function longest_match(s,cur_match){var chain_length=s.max_chain_length;var scan=s.strstart;var match;var len;var best_len=s.prev_length;var nice_match=s.nice_match;var limit=s.strstart>s.w_size-MIN_LOOKAHEAD?s.strstart-(s.w_size-MIN_LOOKAHEAD):0;var _win=s.window;var wmask=s.w_mask;var prev=s.prev;var strend=s.strstart+MAX_MATCH;var scan_end1=_win[scan+best_len-1];var scan_end=_win[scan+best_len];if(s.prev_length>=s.good_match){chain_length>>=2}if(nice_match>s.lookahead){nice_match=s.lookahead}do{match=cur_match;if(_win[match+best_len]!==scan_end||_win[match+best_len-1]!==scan_end1||_win[match]!==_win[scan]||_win[++match]!==_win[scan+1]){continue}scan+=2;match++;do{}while(_win[++scan]===_win[++match]&&_win[++scan]===_win[++match]&&_win[++scan]===_win[++match]&&_win[++scan]===_win[++match]&&_win[++scan]===_win[++match]&&_win[++scan]===_win[++match]&&_win[++scan]===_win[++match]&&_win[++scan]===_win[++match]&&scanbest_len){s.match_start=cur_match;best_len=len;if(len>=nice_match){break}scan_end1=_win[scan+best_len-1];scan_end=_win[scan+best_len]}}while((cur_match=prev[cur_match&wmask])>limit&&--chain_length!==0);if(best_len<=s.lookahead){return best_len}return s.lookahead}function fill_window(s){var _w_size=s.w_size;var p,n,m,more,str;do{more=s.window_size-s.lookahead-s.strstart;if(s.strstart>=_w_size+(_w_size-MIN_LOOKAHEAD)){utils.arraySet(s.window,s.window,_w_size,_w_size,0);s.match_start-=_w_size;s.strstart-=_w_size;s.block_start-=_w_size;n=s.hash_size;p=n;do{m=s.head[--p];s.head[p]=m>=_w_size?m-_w_size:0}while(--n);n=_w_size;p=n;do{m=s.prev[--p];s.prev[p]=m>=_w_size?m-_w_size:0}while(--n);more+=_w_size}if(s.strm.avail_in===0){break}n=read_buf(s.strm,s.window,s.strstart+s.lookahead,more);s.lookahead+=n;if(s.lookahead+s.insert>=MIN_MATCH){str=s.strstart-s.insert;s.ins_h=s.window[str];s.ins_h=(s.ins_h<s.pending_buf_size-5){max_block_size=s.pending_buf_size-5}for(;;){if(s.lookahead<=1){fill_window(s);if(s.lookahead===0&&flush===Z_NO_FLUSH){return BS_NEED_MORE}if(s.lookahead===0){break}}s.strstart+=s.lookahead;s.lookahead=0;var max_start=s.block_start+max_block_size;if(s.strstart===0||s.strstart>=max_start){s.lookahead=s.strstart-max_start;s.strstart=max_start;flush_block_only(s,false);if(s.strm.avail_out===0){return BS_NEED_MORE}}if(s.strstart-s.block_start>=s.w_size-MIN_LOOKAHEAD){flush_block_only(s,false);if(s.strm.avail_out===0){return BS_NEED_MORE}}}s.insert=0;if(flush===Z_FINISH){flush_block_only(s,true);if(s.strm.avail_out===0){return BS_FINISH_STARTED}return BS_FINISH_DONE}if(s.strstart>s.block_start){flush_block_only(s,false);if(s.strm.avail_out===0){return BS_NEED_MORE}}return BS_NEED_MORE}function deflate_fast(s,flush){var hash_head;var bflush;for(;;){if(s.lookahead=MIN_MATCH){s.ins_h=(s.ins_h<=MIN_MATCH){bflush=trees._tr_tally(s,s.strstart-s.match_start,s.match_length-MIN_MATCH);s.lookahead-=s.match_length;if(s.match_length<=s.max_lazy_match&&s.lookahead>=MIN_MATCH){s.match_length--;do{s.strstart++;s.ins_h=(s.ins_h<=MIN_MATCH){s.ins_h=(s.ins_h<4096)){s.match_length=MIN_MATCH-1}}if(s.prev_length>=MIN_MATCH&&s.match_length<=s.prev_length){max_insert=s.strstart+s.lookahead-MIN_MATCH;bflush=trees._tr_tally(s,s.strstart-1-s.prev_match,s.prev_length-MIN_MATCH);s.lookahead-=s.prev_length-1;s.prev_length-=2;do{if(++s.strstart<=max_insert){s.ins_h=(s.ins_h<=MIN_MATCH&&s.strstart>0){scan=s.strstart-1;prev=_win[scan];if(prev===_win[++scan]&&prev===_win[++scan]&&prev===_win[++scan]){strend=s.strstart+MAX_MATCH;do{}while(prev===_win[++scan]&&prev===_win[++scan]&&prev===_win[++scan]&&prev===_win[++scan]&&prev===_win[++scan]&&prev===_win[++scan]&&prev===_win[++scan]&&prev===_win[++scan]&&scans.lookahead){s.match_length=s.lookahead}}}if(s.match_length>=MIN_MATCH){bflush=trees._tr_tally(s,1,s.match_length-MIN_MATCH);s.lookahead-=s.match_length;s.strstart+=s.match_length;s.match_length=0}else{bflush=trees._tr_tally(s,0,s.window[s.strstart]);s.lookahead--;s.strstart++}if(bflush){flush_block_only(s,false);if(s.strm.avail_out===0){return BS_NEED_MORE}}}s.insert=0;if(flush===Z_FINISH){flush_block_only(s,true);if(s.strm.avail_out===0){return BS_FINISH_STARTED}return BS_FINISH_DONE}if(s.last_lit){flush_block_only(s,false);if(s.strm.avail_out===0){return BS_NEED_MORE}}return BS_BLOCK_DONE}function deflate_huff(s,flush){var bflush; +for(;;){if(s.lookahead===0){fill_window(s);if(s.lookahead===0){if(flush===Z_NO_FLUSH){return BS_NEED_MORE}break}}s.match_length=0;bflush=trees._tr_tally(s,0,s.window[s.strstart]);s.lookahead--;s.strstart++;if(bflush){flush_block_only(s,false);if(s.strm.avail_out===0){return BS_NEED_MORE}}}s.insert=0;if(flush===Z_FINISH){flush_block_only(s,true);if(s.strm.avail_out===0){return BS_FINISH_STARTED}return BS_FINISH_DONE}if(s.last_lit){flush_block_only(s,false);if(s.strm.avail_out===0){return BS_NEED_MORE}}return BS_BLOCK_DONE}var Config=function(good_length,max_lazy,nice_length,max_chain,func){this.good_length=good_length;this.max_lazy=max_lazy;this.nice_length=nice_length;this.max_chain=max_chain;this.func=func};var configuration_table;configuration_table=[new Config(0,0,0,0,deflate_stored),new Config(4,4,8,4,deflate_fast),new Config(4,5,16,8,deflate_fast),new Config(4,6,32,32,deflate_fast),new Config(4,4,16,16,deflate_slow),new Config(8,16,32,32,deflate_slow),new Config(8,16,128,128,deflate_slow),new Config(8,32,128,256,deflate_slow),new Config(32,128,258,1024,deflate_slow),new Config(32,258,258,4096,deflate_slow)];function lm_init(s){s.window_size=2*s.w_size;zero(s.head);s.max_lazy_match=configuration_table[s.level].max_lazy;s.good_match=configuration_table[s.level].good_length;s.nice_match=configuration_table[s.level].nice_length;s.max_chain_length=configuration_table[s.level].max_chain;s.strstart=0;s.block_start=0;s.lookahead=0;s.insert=0;s.match_length=s.prev_length=MIN_MATCH-1;s.match_available=0;s.ins_h=0}function DeflateState(){this.strm=null;this.status=0;this.pending_buf=null;this.pending_buf_size=0;this.pending_out=0;this.pending=0;this.wrap=0;this.gzhead=null;this.gzindex=0;this.method=Z_DEFLATED;this.last_flush=-1;this.w_size=0;this.w_bits=0;this.w_mask=0;this.window=null;this.window_size=0;this.prev=null;this.head=null;this.ins_h=0;this.hash_size=0;this.hash_bits=0;this.hash_mask=0;this.hash_shift=0;this.block_start=0;this.match_length=0;this.prev_match=0;this.match_available=0;this.strstart=0;this.match_start=0;this.lookahead=0;this.prev_length=0;this.max_chain_length=0;this.max_lazy_match=0;this.level=0;this.strategy=0;this.good_match=0;this.nice_match=0;this.dyn_ltree=new utils.Buf16(HEAP_SIZE*2);this.dyn_dtree=new utils.Buf16((2*D_CODES+1)*2);this.bl_tree=new utils.Buf16((2*BL_CODES+1)*2);zero(this.dyn_ltree);zero(this.dyn_dtree);zero(this.bl_tree);this.l_desc=null;this.d_desc=null;this.bl_desc=null;this.bl_count=new utils.Buf16(MAX_BITS+1);this.heap=new utils.Buf16(2*L_CODES+1);zero(this.heap);this.heap_len=0;this.heap_max=0;this.depth=new utils.Buf16(2*L_CODES+1);zero(this.depth);this.l_buf=0;this.lit_bufsize=0;this.last_lit=0;this.d_buf=0;this.opt_len=0;this.static_len=0;this.matches=0;this.insert=0;this.bi_buf=0;this.bi_valid=0}function deflateResetKeep(strm){var s;if(!strm||!strm.state){return err(strm,Z_STREAM_ERROR)}strm.total_in=strm.total_out=0;strm.data_type=Z_UNKNOWN;s=strm.state;s.pending=0;s.pending_out=0;if(s.wrap<0){s.wrap=-s.wrap}s.status=s.wrap?INIT_STATE:BUSY_STATE;strm.adler=s.wrap===2?0:1;s.last_flush=Z_NO_FLUSH;trees._tr_init(s);return Z_OK}function deflateReset(strm){var ret=deflateResetKeep(strm);if(ret===Z_OK){lm_init(strm.state)}return ret}function deflateSetHeader(strm,head){if(!strm||!strm.state){return Z_STREAM_ERROR}if(strm.state.wrap!==2){return Z_STREAM_ERROR}strm.state.gzhead=head;return Z_OK}function deflateInit2(strm,level,method,windowBits,memLevel,strategy){if(!strm){return Z_STREAM_ERROR}var wrap=1;if(level===Z_DEFAULT_COMPRESSION){level=6}if(windowBits<0){wrap=0;windowBits=-windowBits}else if(windowBits>15){wrap=2;windowBits-=16}if(memLevel<1||memLevel>MAX_MEM_LEVEL||method!==Z_DEFLATED||windowBits<8||windowBits>15||level<0||level>9||strategy<0||strategy>Z_FIXED){return err(strm,Z_STREAM_ERROR)}if(windowBits===8){windowBits=9}var s=new DeflateState;strm.state=s;s.strm=strm;s.wrap=wrap;s.gzhead=null;s.w_bits=windowBits;s.w_size=1<>1;s.l_buf=(1+2)*s.lit_bufsize;s.level=level;s.strategy=strategy;s.method=method;return deflateReset(strm)}function deflateInit(strm,level){return deflateInit2(strm,level,Z_DEFLATED,MAX_WBITS,DEF_MEM_LEVEL,Z_DEFAULT_STRATEGY)}function deflate(strm,flush){var old_flush,s;var beg,val;if(!strm||!strm.state||flush>Z_BLOCK||flush<0){return strm?err(strm,Z_STREAM_ERROR):Z_STREAM_ERROR}s=strm.state;if(!strm.output||!strm.input&&strm.avail_in!==0||s.status===FINISH_STATE&&flush!==Z_FINISH){return err(strm,strm.avail_out===0?Z_BUF_ERROR:Z_STREAM_ERROR)}s.strm=strm;old_flush=s.last_flush;s.last_flush=flush;if(s.status===INIT_STATE){if(s.wrap===2){strm.adler=0;put_byte(s,31);put_byte(s,139);put_byte(s,8);if(!s.gzhead){put_byte(s,0);put_byte(s,0);put_byte(s,0);put_byte(s,0);put_byte(s,0);put_byte(s,s.level===9?2:s.strategy>=Z_HUFFMAN_ONLY||s.level<2?4:0);put_byte(s,OS_CODE);s.status=BUSY_STATE}else{put_byte(s,(s.gzhead.text?1:0)+(s.gzhead.hcrc?2:0)+(!s.gzhead.extra?0:4)+(!s.gzhead.name?0:8)+(!s.gzhead.comment?0:16));put_byte(s,s.gzhead.time&255);put_byte(s,s.gzhead.time>>8&255);put_byte(s,s.gzhead.time>>16&255);put_byte(s,s.gzhead.time>>24&255);put_byte(s,s.level===9?2:s.strategy>=Z_HUFFMAN_ONLY||s.level<2?4:0);put_byte(s,s.gzhead.os&255);if(s.gzhead.extra&&s.gzhead.extra.length){put_byte(s,s.gzhead.extra.length&255);put_byte(s,s.gzhead.extra.length>>8&255)}if(s.gzhead.hcrc){strm.adler=crc32(strm.adler,s.pending_buf,s.pending,0)}s.gzindex=0;s.status=EXTRA_STATE}}else{var header=Z_DEFLATED+(s.w_bits-8<<4)<<8;var level_flags=-1;if(s.strategy>=Z_HUFFMAN_ONLY||s.level<2){level_flags=0}else if(s.level<6){level_flags=1}else if(s.level===6){level_flags=2}else{level_flags=3}header|=level_flags<<6;if(s.strstart!==0){header|=PRESET_DICT}header+=31-header%31;s.status=BUSY_STATE;putShortMSB(s,header);if(s.strstart!==0){putShortMSB(s,strm.adler>>>16);putShortMSB(s,strm.adler&65535)}strm.adler=1}}if(s.status===EXTRA_STATE){if(s.gzhead.extra){beg=s.pending;while(s.gzindex<(s.gzhead.extra.length&65535)){if(s.pending===s.pending_buf_size){if(s.gzhead.hcrc&&s.pending>beg){strm.adler=crc32(strm.adler,s.pending_buf,s.pending-beg,beg)}flush_pending(strm);beg=s.pending;if(s.pending===s.pending_buf_size){break}}put_byte(s,s.gzhead.extra[s.gzindex]&255);s.gzindex++}if(s.gzhead.hcrc&&s.pending>beg){strm.adler=crc32(strm.adler,s.pending_buf,s.pending-beg,beg)}if(s.gzindex===s.gzhead.extra.length){s.gzindex=0;s.status=NAME_STATE}}else{s.status=NAME_STATE}}if(s.status===NAME_STATE){if(s.gzhead.name){beg=s.pending;do{if(s.pending===s.pending_buf_size){if(s.gzhead.hcrc&&s.pending>beg){strm.adler=crc32(strm.adler,s.pending_buf,s.pending-beg,beg)}flush_pending(strm);beg=s.pending;if(s.pending===s.pending_buf_size){val=1;break}}if(s.gzindexbeg){strm.adler=crc32(strm.adler,s.pending_buf,s.pending-beg,beg)}if(val===0){s.gzindex=0;s.status=COMMENT_STATE}}else{s.status=COMMENT_STATE}}if(s.status===COMMENT_STATE){if(s.gzhead.comment){beg=s.pending;do{if(s.pending===s.pending_buf_size){if(s.gzhead.hcrc&&s.pending>beg){strm.adler=crc32(strm.adler,s.pending_buf,s.pending-beg,beg)}flush_pending(strm);beg=s.pending;if(s.pending===s.pending_buf_size){val=1;break}}if(s.gzindexbeg){strm.adler=crc32(strm.adler,s.pending_buf,s.pending-beg,beg)}if(val===0){s.status=HCRC_STATE}}else{s.status=HCRC_STATE}}if(s.status===HCRC_STATE){if(s.gzhead.hcrc){if(s.pending+2>s.pending_buf_size){flush_pending(strm)}if(s.pending+2<=s.pending_buf_size){put_byte(s,strm.adler&255);put_byte(s,strm.adler>>8&255);strm.adler=0;s.status=BUSY_STATE}}else{s.status=BUSY_STATE}}if(s.pending!==0){flush_pending(strm);if(strm.avail_out===0){s.last_flush=-1;return Z_OK}}else if(strm.avail_in===0&&rank(flush)<=rank(old_flush)&&flush!==Z_FINISH){return err(strm,Z_BUF_ERROR)}if(s.status===FINISH_STATE&&strm.avail_in!==0){return err(strm,Z_BUF_ERROR)}if(strm.avail_in!==0||s.lookahead!==0||flush!==Z_NO_FLUSH&&s.status!==FINISH_STATE){var bstate=s.strategy===Z_HUFFMAN_ONLY?deflate_huff(s,flush):s.strategy===Z_RLE?deflate_rle(s,flush):configuration_table[s.level].func(s,flush);if(bstate===BS_FINISH_STARTED||bstate===BS_FINISH_DONE){s.status=FINISH_STATE}if(bstate===BS_NEED_MORE||bstate===BS_FINISH_STARTED){if(strm.avail_out===0){s.last_flush=-1}return Z_OK}if(bstate===BS_BLOCK_DONE){if(flush===Z_PARTIAL_FLUSH){trees._tr_align(s)}else if(flush!==Z_BLOCK){trees._tr_stored_block(s,0,0,false);if(flush===Z_FULL_FLUSH){zero(s.head);if(s.lookahead===0){s.strstart=0;s.block_start=0;s.insert=0}}}flush_pending(strm);if(strm.avail_out===0){s.last_flush=-1;return Z_OK}}}if(flush!==Z_FINISH){return Z_OK}if(s.wrap<=0){return Z_STREAM_END}if(s.wrap===2){put_byte(s,strm.adler&255);put_byte(s,strm.adler>>8&255);put_byte(s,strm.adler>>16&255);put_byte(s,strm.adler>>24&255);put_byte(s,strm.total_in&255);put_byte(s,strm.total_in>>8&255);put_byte(s,strm.total_in>>16&255);put_byte(s,strm.total_in>>24&255)}else{putShortMSB(s,strm.adler>>>16);putShortMSB(s,strm.adler&65535)}flush_pending(strm);if(s.wrap>0){s.wrap=-s.wrap}return s.pending!==0?Z_OK:Z_STREAM_END}function deflateEnd(strm){var status;if(!strm||!strm.state){return Z_STREAM_ERROR}status=strm.state.status;if(status!==INIT_STATE&&status!==EXTRA_STATE&&status!==NAME_STATE&&status!==COMMENT_STATE&&status!==HCRC_STATE&&status!==BUSY_STATE&&status!==FINISH_STATE){return err(strm,Z_STREAM_ERROR)}strm.state=null;return status===BUSY_STATE?err(strm,Z_DATA_ERROR):Z_OK}exports.deflateInit=deflateInit;exports.deflateInit2=deflateInit2;exports.deflateReset=deflateReset;exports.deflateResetKeep=deflateResetKeep;exports.deflateSetHeader=deflateSetHeader;exports.deflate=deflate;exports.deflateEnd=deflateEnd;exports.deflateInfo="pako deflate (from Nodeca project)"},{"../utils/common":27,"./adler32":29,"./crc32":31,"./messages":37,"./trees":38}],33:[function(_dereq_,module,exports){"use strict";function GZheader(){this.text=0;this.time=0;this.xflags=0;this.os=0;this.extra=null;this.extra_len=0;this.name="";this.comment="";this.hcrc=0;this.done=false}module.exports=GZheader},{}],34:[function(_dereq_,module,exports){"use strict";var BAD=30;var TYPE=12;module.exports=function inflate_fast(strm,start){var state;var _in;var last;var _out;var beg;var end;var dmax;var wsize;var whave;var wnext;var window;var hold;var bits;var lcode;var dcode;var lmask;var dmask;var here;var op;var len;var dist;var from;var from_source;var input,output;state=strm.state;_in=strm.next_in;input=strm.input;last=_in+(strm.avail_in-5);_out=strm.next_out;output=strm.output;beg=_out-(start-strm.avail_out);end=_out+(strm.avail_out-257);dmax=state.dmax;wsize=state.wsize;whave=state.whave;wnext=state.wnext;window=state.window;hold=state.hold;bits=state.bits;lcode=state.lencode;dcode=state.distcode;lmask=(1<>>24;hold>>>=op;bits-=op;op=here>>>16&255;if(op===0){output[_out++]=here&65535}else if(op&16){len=here&65535;op&=15;if(op){if(bits>>=op;bits-=op}if(bits<15){hold+=input[_in++]<>>24;hold>>>=op;bits-=op;op=here>>>16&255;if(op&16){dist=here&65535;op&=15;if(bitsdmax){strm.msg="invalid distance too far back";state.mode=BAD;break top}hold>>>=op;bits-=op;op=_out-beg;if(dist>op){op=dist-op;if(op>whave){if(state.sane){strm.msg="invalid distance too far back";state.mode=BAD;break top}}from=0;from_source=window;if(wnext===0){from+=wsize-op;if(op2){output[_out++]=from_source[from++];output[_out++]=from_source[from++];output[_out++]=from_source[from++];len-=3}if(len){output[_out++]=from_source[from++];if(len>1){output[_out++]=from_source[from++]}}}else{from=_out-dist;do{output[_out++]=output[from++];output[_out++]=output[from++];output[_out++]=output[from++];len-=3}while(len>2);if(len){output[_out++]=output[from++];if(len>1){output[_out++]=output[from++]}}}}else if((op&64)===0){here=dcode[(here&65535)+(hold&(1<>3;_in-=len;bits-=len<<3;hold&=(1<>>24&255)+(q>>>8&65280)+((q&65280)<<8)+((q&255)<<24)}function InflateState(){this.mode=0;this.last=false;this.wrap=0;this.havedict=false;this.flags=0;this.dmax=0;this.check=0;this.total=0;this.head=null;this.wbits=0;this.wsize=0;this.whave=0;this.wnext=0;this.window=null;this.hold=0;this.bits=0;this.length=0;this.offset=0;this.extra=0;this.lencode=null;this.distcode=null;this.lenbits=0;this.distbits=0;this.ncode=0;this.nlen=0;this.ndist=0;this.have=0;this.next=null;this.lens=new utils.Buf16(320);this.work=new utils.Buf16(288);this.lendyn=null;this.distdyn=null;this.sane=0;this.back=0;this.was=0}function inflateResetKeep(strm){var state;if(!strm||!strm.state){return Z_STREAM_ERROR}state=strm.state;strm.total_in=strm.total_out=state.total=0;strm.msg="";if(state.wrap){strm.adler=state.wrap&1}state.mode=HEAD;state.last=0;state.havedict=0;state.dmax=32768;state.head=null;state.hold=0;state.bits=0;state.lencode=state.lendyn=new utils.Buf32(ENOUGH_LENS);state.distcode=state.distdyn=new utils.Buf32(ENOUGH_DISTS);state.sane=1;state.back=-1;return Z_OK}function inflateReset(strm){var state;if(!strm||!strm.state){return Z_STREAM_ERROR}state=strm.state;state.wsize=0;state.whave=0;state.wnext=0;return inflateResetKeep(strm)}function inflateReset2(strm,windowBits){var wrap;var state;if(!strm||!strm.state){return Z_STREAM_ERROR}state=strm.state;if(windowBits<0){wrap=0;windowBits=-windowBits}else{wrap=(windowBits>>4)+1;if(windowBits<48){windowBits&=15}}if(windowBits&&(windowBits<8||windowBits>15)){return Z_STREAM_ERROR}if(state.window!==null&&state.wbits!==windowBits){state.window=null}state.wrap=wrap;state.wbits=windowBits;return inflateReset(strm)}function inflateInit2(strm,windowBits){var ret;var state;if(!strm){return Z_STREAM_ERROR}state=new InflateState;strm.state=state;state.window=null;ret=inflateReset2(strm,windowBits);if(ret!==Z_OK){strm.state=null}return ret}function inflateInit(strm){return inflateInit2(strm,DEF_WBITS)}var virgin=true;var lenfix,distfix;function fixedtables(state){if(virgin){var sym;lenfix=new utils.Buf32(512);distfix=new utils.Buf32(32);sym=0;while(sym<144){state.lens[sym++]=8}while(sym<256){state.lens[sym++]=9}while(sym<280){state.lens[sym++]=7}while(sym<288){state.lens[sym++]=8}inflate_table(LENS,state.lens,0,288,lenfix,0,state.work,{bits:9});sym=0;while(sym<32){state.lens[sym++]=5}inflate_table(DISTS,state.lens,0,32,distfix,0,state.work,{bits:5});virgin=false}state.lencode=lenfix;state.lenbits=9;state.distcode=distfix;state.distbits=5}function updatewindow(strm,src,end,copy){var dist;var state=strm.state;if(state.window===null){state.wsize=1<=state.wsize){utils.arraySet(state.window,src,end-state.wsize,state.wsize,0);state.wnext=0;state.whave=state.wsize}else{dist=state.wsize-state.wnext;if(dist>copy){dist=copy}utils.arraySet(state.window,src,end-copy,dist,state.wnext);copy-=dist;if(copy){utils.arraySet(state.window,src,end-copy,copy,0);state.wnext=copy;state.whave=state.wsize}else{state.wnext+=dist;if(state.wnext===state.wsize){state.wnext=0}if(state.whave>>8&255;state.check=crc32(state.check,hbuf,2,0);hold=0;bits=0;state.mode=FLAGS;break}state.flags=0;if(state.head){state.head.done=false}if(!(state.wrap&1)||(((hold&255)<<8)+(hold>>8))%31){strm.msg="incorrect header check";state.mode=BAD;break}if((hold&15)!==Z_DEFLATED){strm.msg="unknown compression method";state.mode=BAD;break}hold>>>=4;bits-=4;len=(hold&15)+8;if(state.wbits===0){state.wbits=len}else if(len>state.wbits){strm.msg="invalid window size";state.mode=BAD;break}state.dmax=1<>8&1}if(state.flags&512){hbuf[0]=hold&255;hbuf[1]=hold>>>8&255;state.check=crc32(state.check,hbuf,2,0)}hold=0;bits=0;state.mode=TIME;case TIME:while(bits<32){if(have===0){break inf_leave}have--;hold+=input[next++]<>>8&255;hbuf[2]=hold>>>16&255;hbuf[3]=hold>>>24&255;state.check=crc32(state.check,hbuf,4,0)}hold=0;bits=0;state.mode=OS;case OS:while(bits<16){if(have===0){break inf_leave}have--;hold+=input[next++]<>8}if(state.flags&512){hbuf[0]=hold&255;hbuf[1]=hold>>>8&255;state.check=crc32(state.check,hbuf,2,0)}hold=0;bits=0;state.mode=EXLEN;case EXLEN:if(state.flags&1024){while(bits<16){if(have===0){break inf_leave}have--;hold+=input[next++]<>>8&255;state.check=crc32(state.check,hbuf,2,0)}hold=0;bits=0}else if(state.head){state.head.extra=null}state.mode=EXTRA;case EXTRA:if(state.flags&1024){copy=state.length;if(copy>have){copy=have}if(copy){if(state.head){len=state.head.extra_len-state.length;if(!state.head.extra){state.head.extra=new Array(state.head.extra_len)}utils.arraySet(state.head.extra,input,next,copy,len)}if(state.flags&512){state.check=crc32(state.check,input,copy,next)}have-=copy;next+=copy;state.length-=copy}if(state.length){break inf_leave}}state.length=0;state.mode=NAME;case NAME:if(state.flags&2048){if(have===0){break inf_leave}copy=0;do{len=input[next+copy++];if(state.head&&len&&state.length<65536){state.head.name+=String.fromCharCode(len)}}while(len&©>9&1;state.head.done=true}strm.adler=state.check=0;state.mode=TYPE;break;case DICTID:while(bits<32){if(have===0){break inf_leave}have--;hold+=input[next++]<>>=bits&7;bits-=bits&7;state.mode=CHECK;break}while(bits<3){if(have===0){break inf_leave}have--;hold+=input[next++]<>>=1;bits-=1;switch(hold&3){case 0:state.mode=STORED;break;case 1:fixedtables(state);state.mode=LEN_;if(flush===Z_TREES){hold>>>=2;bits-=2;break inf_leave}break;case 2:state.mode=TABLE;break;case 3:strm.msg="invalid block type";state.mode=BAD}hold>>>=2;bits-=2;break;case STORED:hold>>>=bits&7;bits-=bits&7;while(bits<32){if(have===0){break inf_leave}have--;hold+=input[next++]<>>16^65535)){strm.msg="invalid stored block lengths";state.mode=BAD;break}state.length=hold&65535;hold=0;bits=0;state.mode=COPY_;if(flush===Z_TREES){break inf_leave}case COPY_:state.mode=COPY;case COPY:copy=state.length;if(copy){if(copy>have){copy=have}if(copy>left){copy=left}if(copy===0){break inf_leave}utils.arraySet(output,input,next,copy,put);have-=copy;next+=copy;left-=copy;put+=copy;state.length-=copy;break}state.mode=TYPE;break;case TABLE:while(bits<14){if(have===0){break inf_leave}have--;hold+=input[next++]<>>=5;bits-=5;state.ndist=(hold&31)+1;hold>>>=5;bits-=5;state.ncode=(hold&15)+4;hold>>>=4;bits-=4;if(state.nlen>286||state.ndist>30){strm.msg="too many length or distance symbols";state.mode=BAD;break}state.have=0;state.mode=LENLENS;case LENLENS:while(state.have>>=3;bits-=3}while(state.have<19){state.lens[order[state.have++]]=0}state.lencode=state.lendyn;state.lenbits=7;opts={bits:state.lenbits};ret=inflate_table(CODES,state.lens,0,19,state.lencode,0,state.work,opts);state.lenbits=opts.bits;if(ret){strm.msg="invalid code lengths set";state.mode=BAD;break}state.have=0;state.mode=CODELENS;case CODELENS:while(state.have>>24;here_op=here>>>16&255;here_val=here&65535;if(here_bits<=bits){break}if(have===0){break inf_leave}have--;hold+=input[next++]<>>=here_bits;bits-=here_bits;state.lens[state.have++]=here_val}else{if(here_val===16){n=here_bits+2;while(bits>>=here_bits;bits-=here_bits;if(state.have===0){strm.msg="invalid bit length repeat";state.mode=BAD;break}len=state.lens[state.have-1];copy=3+(hold&3);hold>>>=2;bits-=2}else if(here_val===17){n=here_bits+3;while(bits>>=here_bits;bits-=here_bits;len=0;copy=3+(hold&7);hold>>>=3;bits-=3}else{n=here_bits+7;while(bits>>=here_bits;bits-=here_bits;len=0;copy=11+(hold&127);hold>>>=7;bits-=7}if(state.have+copy>state.nlen+state.ndist){strm.msg="invalid bit length repeat";state.mode=BAD;break}while(copy--){state.lens[state.have++]=len}}}if(state.mode===BAD){break}if(state.lens[256]===0){strm.msg="invalid code -- missing end-of-block";state.mode=BAD;break}state.lenbits=9;opts={bits:state.lenbits};ret=inflate_table(LENS,state.lens,0,state.nlen,state.lencode,0,state.work,opts);state.lenbits=opts.bits;if(ret){strm.msg="invalid literal/lengths set";state.mode=BAD;break}state.distbits=6;state.distcode=state.distdyn;opts={bits:state.distbits};ret=inflate_table(DISTS,state.lens,state.nlen,state.ndist,state.distcode,0,state.work,opts);state.distbits=opts.bits;if(ret){strm.msg="invalid distances set";state.mode=BAD;break}state.mode=LEN_;if(flush===Z_TREES){break inf_leave}case LEN_:state.mode=LEN;case LEN:if(have>=6&&left>=258){strm.next_out=put;strm.avail_out=left;strm.next_in=next;strm.avail_in=have;state.hold=hold;state.bits=bits;inflate_fast(strm,_out);put=strm.next_out;output=strm.output;left=strm.avail_out;next=strm.next_in;input=strm.input;have=strm.avail_in;hold=state.hold;bits=state.bits;if(state.mode===TYPE){state.back=-1}break}state.back=0;for(;;){here=state.lencode[hold&(1<>>24;here_op=here>>>16&255;here_val=here&65535;if(here_bits<=bits){break}if(have===0){break inf_leave}have--;hold+=input[next++]<>last_bits)];here_bits=here>>>24;here_op=here>>>16&255;here_val=here&65535;if(last_bits+here_bits<=bits){break}if(have===0){break inf_leave}have--;hold+=input[next++]<>>=last_bits;bits-=last_bits;state.back+=last_bits}hold>>>=here_bits;bits-=here_bits;state.back+=here_bits;state.length=here_val;if(here_op===0){state.mode=LIT;break}if(here_op&32){state.back=-1;state.mode=TYPE;break}if(here_op&64){strm.msg="invalid literal/length code";state.mode=BAD;break}state.extra=here_op&15;state.mode=LENEXT;case LENEXT:if(state.extra){n=state.extra;while(bits>>=state.extra;bits-=state.extra;state.back+=state.extra}state.was=state.length;state.mode=DIST;case DIST:for(;;){here=state.distcode[hold&(1<>>24;here_op=here>>>16&255;here_val=here&65535;if(here_bits<=bits){break}if(have===0){break inf_leave}have--;hold+=input[next++]<>last_bits)];here_bits=here>>>24;here_op=here>>>16&255;here_val=here&65535;if(last_bits+here_bits<=bits){break}if(have===0){break inf_leave}have--;hold+=input[next++]<>>=last_bits;bits-=last_bits;state.back+=last_bits}hold>>>=here_bits;bits-=here_bits;state.back+=here_bits;if(here_op&64){strm.msg="invalid distance code";state.mode=BAD;break}state.offset=here_val;state.extra=here_op&15;state.mode=DISTEXT;case DISTEXT:if(state.extra){n=state.extra;while(bits>>=state.extra;bits-=state.extra;state.back+=state.extra}if(state.offset>state.dmax){strm.msg="invalid distance too far back";state.mode=BAD;break}state.mode=MATCH;case MATCH:if(left===0){break inf_leave}copy=_out-left;if(state.offset>copy){copy=state.offset-copy;if(copy>state.whave){if(state.sane){strm.msg="invalid distance too far back";state.mode=BAD;break}}if(copy>state.wnext){copy-=state.wnext;from=state.wsize-copy}else{from=state.wnext-copy}if(copy>state.length){copy=state.length}from_source=state.window}else{from_source=output;from=put-state.offset;copy=state.length}if(copy>left){copy=left}left-=copy;state.length-=copy;do{output[put++]=from_source[from++]}while(--copy);if(state.length===0){state.mode=LEN}break;case LIT:if(left===0){break inf_leave}output[put++]=state.length;left--;state.mode=LEN;break;case CHECK:if(state.wrap){while(bits<32){if(have===0){break inf_leave}have--;hold|=input[next++]<=1;max--){if(count[max]!==0){break}}if(root>max){root=max}if(max===0){table[table_index++]=1<<24|64<<16|0;table[table_index++]=1<<24|64<<16|0;opts.bits=1;return 0}for(min=1;min0&&(type===CODES||max!==1)){return-1}offs[1]=0;for(len=1;lenENOUGH_LENS||type===DISTS&&used>ENOUGH_DISTS){return 1}var i=0;for(;;){i++;here_bits=len-drop;if(work[sym]end){here_op=extra[extra_index+work[sym]];here_val=base[base_index+work[sym]]}else{here_op=32+64;here_val=0}incr=1<>drop)+fill]=here_bits<<24|here_op<<16|here_val|0}while(fill!==0);incr=1<>=1}if(incr!==0){huff&=incr-1;huff+=incr}else{huff=0}sym++;if(--count[len]===0){if(len===max){break}len=lens[lens_index+work[sym]]}if(len>root&&(huff&mask)!==low){if(drop===0){drop=root}next+=min;curr=len-drop;left=1<ENOUGH_LENS||type===DISTS&&used>ENOUGH_DISTS){return 1}low=huff&mask;table[low]=root<<24|curr<<16|next-table_index|0}}if(huff!==0){table[next+huff]=len-drop<<24|64<<16|0}opts.bits=root;return 0}},{"../utils/common":27}],37:[function(_dereq_,module,exports){"use strict";module.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}},{}],38:[function(_dereq_,module,exports){"use strict";var utils=_dereq_("../utils/common");var Z_FIXED=4;var Z_BINARY=0;var Z_TEXT=1;var Z_UNKNOWN=2;function zero(buf){var len=buf.length;while(--len>=0){buf[len]=0}}var STORED_BLOCK=0;var STATIC_TREES=1;var DYN_TREES=2;var MIN_MATCH=3;var MAX_MATCH=258;var LENGTH_CODES=29;var LITERALS=256;var L_CODES=LITERALS+1+LENGTH_CODES;var D_CODES=30;var BL_CODES=19;var HEAP_SIZE=2*L_CODES+1;var MAX_BITS=15;var Buf_size=16;var MAX_BL_BITS=7;var END_BLOCK=256;var REP_3_6=16;var REPZ_3_10=17;var REPZ_11_138=18;var extra_lbits=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0];var extra_dbits=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13];var extra_blbits=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7];var bl_order=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];var DIST_CODE_LEN=512;var static_ltree=new Array((L_CODES+2)*2);zero(static_ltree);var static_dtree=new Array(D_CODES*2);zero(static_dtree);var _dist_code=new Array(DIST_CODE_LEN);zero(_dist_code);var _length_code=new Array(MAX_MATCH-MIN_MATCH+1);zero(_length_code);var base_length=new Array(LENGTH_CODES);zero(base_length);var base_dist=new Array(D_CODES);zero(base_dist);var StaticTreeDesc=function(static_tree,extra_bits,extra_base,elems,max_length){this.static_tree=static_tree;this.extra_bits=extra_bits;this.extra_base=extra_base;this.elems=elems;this.max_length=max_length;this.has_stree=static_tree&&static_tree.length};var static_l_desc;var static_d_desc;var static_bl_desc;var TreeDesc=function(dyn_tree,stat_desc){this.dyn_tree=dyn_tree;this.max_code=0;this.stat_desc=stat_desc};function d_code(dist){return dist<256?_dist_code[dist]:_dist_code[256+(dist>>>7)]}function put_short(s,w){s.pending_buf[s.pending++]=w&255;s.pending_buf[s.pending++]=w>>>8&255}function send_bits(s,value,length){if(s.bi_valid>Buf_size-length){s.bi_buf|=value<>Buf_size-s.bi_valid;s.bi_valid+=length-Buf_size}else{s.bi_buf|=value<>>=1;res<<=1}while(--len>0);return res>>>1}function bi_flush(s){if(s.bi_valid===16){put_short(s,s.bi_buf);s.bi_buf=0;s.bi_valid=0}else if(s.bi_valid>=8){s.pending_buf[s.pending++]=s.bi_buf&255;s.bi_buf>>=8;s.bi_valid-=8}}function gen_bitlen(s,desc){var tree=desc.dyn_tree;var max_code=desc.max_code;var stree=desc.stat_desc.static_tree;var has_stree=desc.stat_desc.has_stree;var extra=desc.stat_desc.extra_bits;var base=desc.stat_desc.extra_base;var max_length=desc.stat_desc.max_length;var h;var n,m;var bits;var xbits;var f;var overflow=0;for(bits=0;bits<=MAX_BITS;bits++){s.bl_count[bits]=0}tree[s.heap[s.heap_max]*2+1]=0;for(h=s.heap_max+1;hmax_length){bits=max_length;overflow++}tree[n*2+1]=bits;if(n>max_code){continue}s.bl_count[bits]++;xbits=0;if(n>=base){xbits=extra[n-base]}f=tree[n*2];s.opt_len+=f*(bits+xbits);if(has_stree){s.static_len+=f*(stree[n*2+1]+xbits)}}if(overflow===0){return}do{bits=max_length-1;while(s.bl_count[bits]===0){bits--}s.bl_count[bits]--;s.bl_count[bits+1]+=2;s.bl_count[max_length]--;overflow-=2}while(overflow>0);for(bits=max_length;bits!==0;bits--){n=s.bl_count[bits];while(n!==0){m=s.heap[--h];if(m>max_code){continue}if(tree[m*2+1]!==bits){s.opt_len+=(bits-tree[m*2+1])*tree[m*2];tree[m*2+1]=bits}n--}}}function gen_codes(tree,max_code,bl_count){var next_code=new Array(MAX_BITS+1);var code=0;var bits;var n;for(bits=1;bits<=MAX_BITS;bits++){next_code[bits]=code=code+bl_count[bits-1]<<1}for(n=0;n<=max_code;n++){var len=tree[n*2+1];if(len===0){continue}tree[n*2]=bi_reverse(next_code[len]++,len)}}function tr_static_init(){var n;var bits;var length;var code;var dist;var bl_count=new Array(MAX_BITS+1);length=0;for(code=0;code>=7;for(;code8){put_short(s,s.bi_buf)}else if(s.bi_valid>0){s.pending_buf[s.pending++]=s.bi_buf}s.bi_buf=0;s.bi_valid=0}function copy_block(s,buf,len,header){bi_windup(s);if(header){put_short(s,len);put_short(s,~len)}utils.arraySet(s.pending_buf,s.window,buf,len,s.pending);s.pending+=len}function smaller(tree,n,m,depth){var _n2=n*2;var _m2=m*2;return tree[_n2]>1;n>=1;n--){pqdownheap(s,tree,n)}node=elems;do{n=s.heap[1];s.heap[1]=s.heap[s.heap_len--];pqdownheap(s,tree,1);m=s.heap[1];s.heap[--s.heap_max]=n;s.heap[--s.heap_max]=m;tree[node*2]=tree[n*2]+tree[m*2];s.depth[node]=(s.depth[n]>=s.depth[m]?s.depth[n]:s.depth[m])+1;tree[n*2+1]=tree[m*2+1]=node;s.heap[1]=node++;pqdownheap(s,tree,1)}while(s.heap_len>=2);s.heap[--s.heap_max]=s.heap[1];gen_bitlen(s,desc);gen_codes(tree,max_code,s.bl_count)}function scan_tree(s,tree,max_code){var n;var prevlen=-1;var curlen;var nextlen=tree[0*2+1];var count=0;var max_count=7;var min_count=4;if(nextlen===0){max_count=138;min_count=3}tree[(max_code+1)*2+1]=65535;for(n=0;n<=max_code;n++){curlen=nextlen;nextlen=tree[(n+1)*2+1];if(++count=3;max_blindex--){if(s.bl_tree[bl_order[max_blindex]*2+1]!==0){break}}s.opt_len+=3*(max_blindex+1)+5+5+4;return max_blindex}function send_all_trees(s,lcodes,dcodes,blcodes){var rank;send_bits(s,lcodes-257,5);send_bits(s,dcodes-1,5);send_bits(s,blcodes-4,4);for(rank=0;rank>>=1){if(black_mask&1&&s.dyn_ltree[n*2]!==0){return Z_BINARY}}if(s.dyn_ltree[9*2]!==0||s.dyn_ltree[10*2]!==0||s.dyn_ltree[13*2]!==0){return Z_TEXT}for(n=32;n0){if(s.strm.data_type===Z_UNKNOWN){s.strm.data_type=detect_data_type(s)}build_tree(s,s.l_desc);build_tree(s,s.d_desc);max_blindex=build_bl_tree(s);opt_lenb=s.opt_len+3+7>>>3;static_lenb=s.static_len+3+7>>>3;if(static_lenb<=opt_lenb){opt_lenb=static_lenb}}else{opt_lenb=static_lenb=stored_len+5}if(stored_len+4<=opt_lenb&&buf!==-1){_tr_stored_block(s,buf,stored_len,last)}else if(s.strategy===Z_FIXED||static_lenb===opt_lenb){send_bits(s,(STATIC_TREES<<1)+(last?1:0),3);compress_block(s,static_ltree,static_dtree)}else{send_bits(s,(DYN_TREES<<1)+(last?1:0),3);send_all_trees(s,s.l_desc.max_code+1,s.d_desc.max_code+1,max_blindex+1);compress_block(s,s.dyn_ltree,s.dyn_dtree)}init_block(s);if(last){bi_windup(s)}}function _tr_tally(s,dist,lc){s.pending_buf[s.d_buf+s.last_lit*2]=dist>>>8&255;s.pending_buf[s.d_buf+s.last_lit*2+1]=dist&255;s.pending_buf[s.l_buf+s.last_lit]=lc&255;s.last_lit++;if(dist===0){s.dyn_ltree[lc*2]++}else{s.matches++;dist--;s.dyn_ltree[(_length_code[lc]+LITERALS+1)*2]++;s.dyn_dtree[d_code(dist)*2]++}return s.last_lit===s.lit_bufsize-1}exports._tr_init=_tr_init;exports._tr_stored_block=_tr_stored_block;exports._tr_flush_block=_tr_flush_block;exports._tr_tally=_tr_tally;exports._tr_align=_tr_align},{"../utils/common":27}],39:[function(_dereq_,module,exports){"use strict";function ZStream(){this.input=null;this.next_in=0;this.avail_in=0;this.total_in=0;this.output=null;this.next_out=0;this.avail_out=0;this.total_out=0;this.msg="";this.state=null;this.data_type=2;this.adler=0}module.exports=ZStream},{}]},{},[9])(9)});var XLSX={};(function(XLSX){XLSX.version="0.7.12";var current_codepage=1252,current_cptable;if(typeof module!=="undefined"&&typeof require!=="undefined"){if(typeof cptable==="undefined")cptable=require("./dist/cpexcel");current_cptable=cptable[current_codepage]}function reset_cp(){set_cp(1252)}var set_cp=function(cp){current_codepage=cp};function char_codes(data){var o=[];for(var i=0,len=data.length;i=0)o+=x.charAt(i--);return o}function fill(c,l){var o="";while(o.length=d?t:fill("0",d-t.length)+t}function pad_(v,d){var t=""+v;return t.length>=d?t:fill(" ",d-t.length)+t}function rpad_(v,d){var t=""+v;return t.length>=d?t:t+fill(" ",d-t.length)}function pad0r1(v,d){var t=""+Math.round(v);return t.length>=d?t:fill("0",d-t.length)+t}function pad0r2(v,d){var t=""+v;return t.length>=d?t:fill("0",d-t.length)+t}var p2_32=Math.pow(2,32);function pad0r(v,d){if(v>p2_32||v<-p2_32)return pad0r1(v,d);var i=Math.round(v);return pad0r2(i,d)}function isgeneral(s,i){return s.length>=7+i&&(s.charCodeAt(i)|32)===103&&(s.charCodeAt(i+1)|32)===101&&(s.charCodeAt(i+2)|32)===110&&(s.charCodeAt(i+3)|32)===101&&(s.charCodeAt(i+4)|32)===114&&(s.charCodeAt(i+5)|32)===97&&(s.charCodeAt(i+6)|32)===108}var opts_fmt=[["date1904",0],["output",""],["WTF",false]];function fixopts(o){for(var y=0;y!=opts_fmt.length;++y)if(o[opts_fmt[y][0]]===undefined)o[opts_fmt[y][0]]=opts_fmt[y][1]}SSF.opts=opts_fmt;var table_fmt={0:"General",1:"0",2:"0.00",3:"#,##0",4:"#,##0.00",9:"0%",10:"0.00%",11:"0.00E+00",12:"# ?/?",13:"# ??/??",14:"m/d/yy",15:"d-mmm-yy",16:"d-mmm",17:"mmm-yy",18:"h:mm AM/PM",19:"h:mm:ss AM/PM",20:"h:mm",21:"h:mm:ss",22:"m/d/yy h:mm",37:"#,##0 ;(#,##0)",38:"#,##0 ;[Red](#,##0)",39:"#,##0.00;(#,##0.00)",40:"#,##0.00;[Red](#,##0.00)",45:"mm:ss",46:"[h]:mm:ss",47:"mmss.0",48:"##0.0E+0",49:"@",56:'"上午/下午 "hh"時"mm"分"ss"秒 "',65535:"General"};var days=[["Sun","Sunday"],["Mon","Monday"],["Tue","Tuesday"],["Wed","Wednesday"],["Thu","Thursday"],["Fri","Friday"],["Sat","Saturday"]];var months=[["J","Jan","January"],["F","Feb","February"],["M","Mar","March"],["A","Apr","April"],["M","May","May"],["J","Jun","June"],["J","Jul","July"],["A","Aug","August"],["S","Sep","September"],["O","Oct","October"],["N","Nov","November"],["D","Dec","December"]];function frac(x,D,mixed){var sgn=x<0?-1:1;var B=x*sgn;var P_2=0,P_1=1,P=0;var Q_2=1,Q_1=0,Q=0;var A=Math.floor(B);while(Q_1D){Q=Q_1;P=P_1}if(Q>D){Q=Q_2;P=P_2}if(!mixed)return[0,sgn*P,Q];if(Q===0)throw"Unexpected state: "+P+" "+P_1+" "+P_2+" "+Q+" "+Q_1+" "+Q_2;var q=Math.floor(sgn*P/Q);return[q,sgn*P-q*Q,Q]}function general_fmt_int(v,opts){return""+v}SSF._general_int=general_fmt_int;var general_fmt_num=function make_general_fmt_num(){var gnr1=/\.(\d*[1-9])0+$/,gnr2=/\.0*$/,gnr4=/\.(\d*[1-9])0+/,gnr5=/\.0*[Ee]/,gnr6=/(E[+-])(\d)$/;function gfn2(v){var w=v<0?12:11;var o=gfn5(v.toFixed(12));if(o.length<=w)return o;o=v.toPrecision(10);if(o.length<=w)return o;return v.toExponential(5)}function gfn3(v){var o=v.toFixed(11).replace(gnr1,".$1");if(o.length>(v<0?12:11))o=v.toPrecision(6);return o}function gfn4(o){for(var i=0;i!=o.length;++i)if((o.charCodeAt(i)|32)===101)return o.replace(gnr4,".$1").replace(gnr5,"E").replace("e","E").replace(gnr6,"$10$2");return o}function gfn5(o){return o.indexOf(".")>-1?o.replace(gnr2,"").replace(gnr1,".$1"):o}return function general_fmt_num(v,opts){var V=Math.floor(Math.log(Math.abs(v))*Math.LOG10E),o;if(V>=-4&&V<=-1)o=v.toPrecision(10+V);else if(Math.abs(V)<=9)o=gfn2(v);else if(V===10)o=v.toFixed(10).substr(0,12);else o=gfn3(v);return gfn5(gfn4(o))}}();SSF._general_num=general_fmt_num;function general_fmt(v,opts){switch(typeof v){case"string":return v;case"boolean":return v?"TRUE":"FALSE";case"number":return(v|0)===v?general_fmt_int(v,opts):general_fmt_num(v,opts)}throw new Error("unsupported value in General format: "+v)}SSF._general=general_fmt;function fix_hijri(date,o){return 0}function parse_date_code(v,opts,b2){if(v>2958465||v<0)return null;var date=v|0,time=Math.floor(86400*(v-date)),dow=0;var dout=[];var out={D:date,T:time,u:86400*(v-date)-time,y:0,m:0,d:0,H:0,M:0,S:0,q:0};if(Math.abs(out.u)<1e-6)out.u=0;fixopts(opts!=null?opts:opts=[]);if(opts.date1904)date+=1462;if(out.u>.999){out.u=0;if(++time==86400){time=0;++date}}if(date===60){dout=b2?[1317,10,29]:[1900,2,29];dow=3}else if(date===0){dout=b2?[1317,8,29]:[1900,1,0];dow=6}else{if(date>60)--date;var d=new Date(1900,0,1);d.setDate(d.getDate()+date-1);dout=[d.getFullYear(),d.getMonth()+1,d.getDate()];dow=d.getDay();if(date<60)dow=(dow+6)%7;if(b2)dow=fix_hijri(d,dout)}out.y=dout[0];out.m=dout[1];out.d=dout[2];out.S=time%60;time=Math.floor(time/60);out.M=time%60;time=Math.floor(time/60);out.H=time;out.q=dow;return out}SSF.parse_date_code=parse_date_code;function write_date(type,fmt,val,ss0){var o="",ss=0,tt=0,y=val.y,out,outl=0;switch(type){case 98:y=val.y+543;case 121:switch(fmt.length){case 1:case 2:out=y%100;outl=2;break;default:out=y%1e4;outl=4;break}break;case 109:switch(fmt.length){case 1:case 2:out=val.m;outl=fmt.length;break;case 3:return months[val.m-1][1];case 5:return months[val.m-1][0];default:return months[val.m-1][2]}break;case 100:switch(fmt.length){case 1:case 2:out=val.d;outl=fmt.length;break;case 3:return days[val.q][0];default:return days[val.q][1]}break;case 104:switch(fmt.length){case 1:case 2:out=1+(val.H+11)%12;outl=fmt.length;break;default:throw"bad hour format: "+fmt}break;case 72:switch(fmt.length){case 1:case 2:out=val.H;outl=fmt.length;break;default:throw"bad hour format: "+fmt}break;case 77:switch(fmt.length){case 1:case 2:out=val.M;outl=fmt.length;break;default:throw"bad minute format: "+fmt}break;case 115:if(val.u===0)switch(fmt){case"s":case"ss":return pad0(val.S,fmt.length);case".0":case".00":case".000":}switch(fmt){case"s":case"ss":case".0":case".00":case".000":if(ss0>=2)tt=ss0===3?1e3:100;else tt=ss0===1?10:1;ss=Math.round(tt*(val.S+val.u));if(ss>=60*tt)ss=0;if(fmt==="s")return ss===0?"0":""+ss/tt;o=pad0(ss,2+ss0);if(fmt==="ss")return o.substr(0,2);return"."+o.substr(2,fmt.length-1);default:throw"bad second format: "+fmt}case 90:switch(fmt){case"[h]":case"[hh]":out=val.D*24+val.H;break;case"[m]":case"[mm]":out=(val.D*24+val.H)*60+val.M;break;case"[s]":case"[ss]":out=((val.D*24+val.H)*60+val.M)*60+Math.round(val.S+val.u);break;default:throw"bad abstime format: "+fmt}outl=fmt.length===3?1:2;break;case 101:out=y;outl=1}if(outl>0)return pad0(out,outl);else return""}function commaify(s){if(s.length<=3)return s;var j=s.length%3,o=s.substr(0,j);for(;j!=s.length;j+=3)o+=(o.length>0?",":"")+s.substr(j,3);return o}var write_num=function make_write_num(){var pct1=/%/g;function write_num_pct(type,fmt,val){var sfmt=fmt.replace(pct1,""),mul=fmt.length-sfmt.length;return write_num(type,sfmt,val*Math.pow(10,2*mul))+fill("%",mul)}function write_num_cm(type,fmt,val){var idx=fmt.length-1;while(fmt.charCodeAt(idx-1)===44)--idx;return write_num(type,fmt.substr(0,idx),val/Math.pow(10,3*(fmt.length-idx)))}function write_num_exp(fmt,val){var o;var idx=fmt.indexOf("E")-fmt.indexOf(".")-1;if(fmt.match(/^#+0.0E\+0$/)){var period=fmt.indexOf(".");if(period===-1)period=fmt.indexOf("E");var ee=Math.floor(Math.log(Math.abs(val))*Math.LOG10E)%period;if(ee<0)ee+=period;o=(val/Math.pow(10,ee)).toPrecision(idx+1+(period+ee)%period);if(o.indexOf("e")===-1){var fakee=Math.floor(Math.log(Math.abs(val))*Math.LOG10E);if(o.indexOf(".")===-1)o=o[0]+"."+o.substr(1)+"E+"+(fakee-o.length+ee);else o+="E+"+(fakee-ee);while(o.substr(0,2)==="0."){o=o[0]+o.substr(2,period)+"."+o.substr(2+period);o=o.replace(/^0+([1-9])/,"$1").replace(/^0+\./,"0.")}o=o.replace(/\+-/,"-")}o=o.replace(/^([+-]?)(\d*)\.(\d*)[Ee]/,function($$,$1,$2,$3){return $1+$2+$3.substr(0,(period+ee)%period)+"."+$3.substr(ee)+"E"})}else o=val.toExponential(idx);if(fmt.match(/E\+00$/)&&o.match(/e[+-]\d$/))o=o.substr(0,o.length-1)+"0"+o[o.length-1];if(fmt.match(/E\-/)&&o.match(/e\+/))o=o.replace(/e\+/,"e");return o.replace("e","E")}var frac1=/# (\?+)( ?)\/( ?)(\d+)/;function write_num_f1(r,aval,sign){var den=parseInt(r[4]),rr=Math.round(aval*den),base=Math.floor(rr/den);var myn=rr-base*den,myd=den;return sign+(base===0?"":""+base)+" "+(myn===0?fill(" ",r[1].length+1+r[4].length):pad_(myn,r[1].length)+r[2]+"/"+r[3]+pad0(myd,r[4].length))}function write_num_f2(r,aval,sign){return sign+(aval===0?"":""+aval)+fill(" ",r[1].length+2+r[4].length)}var dec1=/^#*0*\.(0+)/;var closeparen=/\).*[0#]/;var phone=/\(###\) ###\\?-####/;function hashq(str){var o="",cc;for(var i=0;i!=str.length;++i)switch(cc=str.charCodeAt(i)){case 35:break;case 63:o+=" ";break;case 48:o+="0";break;default:o+=String.fromCharCode(cc)}return o}function rnd(val,d){var dd=Math.pow(10,d);return""+Math.round(val*dd)/dd}function dec(val,d){return Math.round((val-Math.floor(val))*Math.pow(10,d))}function flr(val){if(val<2147483647&&val>-2147483648)return""+(val>=0?val|0:val-1|0);return""+Math.floor(val)}function write_num_flt(type,fmt,val){if(type.charCodeAt(0)===40&&!fmt.match(closeparen)){var ffmt=fmt.replace(/\( */,"").replace(/ \)/,"").replace(/\)/,"");if(val>=0)return write_num_flt("n",ffmt,val);return"("+write_num_flt("n",ffmt,-val)+")"}if(fmt.charCodeAt(fmt.length-1)===44)return write_num_cm(type,fmt,val);if(fmt.indexOf("%")!==-1)return write_num_pct(type,fmt,val);if(fmt.indexOf("E")!==-1)return write_num_exp(fmt,val);if(fmt.charCodeAt(0)===36)return"$"+write_num_flt(type,fmt.substr(fmt[1]==" "?2:1),val);var o,oo;var r,ri,ff,aval=Math.abs(val),sign=val<0?"-":"";if(fmt.match(/^00+$/))return sign+pad0r(aval,fmt.length);if(fmt.match(/^[#?]+$/)){o=pad0r(val,0);if(o==="0")o="";return o.length>fmt.length?o:hashq(fmt.substr(0,fmt.length-o.length))+o}if((r=fmt.match(frac1))!==null)return write_num_f1(r,aval,sign);if(fmt.match(/^#+0+$/)!==null)return sign+pad0r(aval,fmt.length-fmt.indexOf("0"));if((r=fmt.match(dec1))!==null){o=rnd(val,r[1].length).replace(/^([^\.]+)$/,"$1."+r[1]).replace(/\.$/,"."+r[1]).replace(/\.(\d*)$/,function($$,$1){return"."+$1+fill("0",r[1].length-$1.length)});return fmt.indexOf("0.")!==-1?o:o.replace(/^0\./,".")}fmt=fmt.replace(/^#+([0.])/,"$1");if((r=fmt.match(/^(0*)\.(#*)$/))!==null){return sign+rnd(aval,r[2].length).replace(/\.(\d*[1-9])0*$/,".$1").replace(/^(-?\d*)$/,"$1.").replace(/^0\./,r[1].length?"0.":".")}if((r=fmt.match(/^#,##0(\.?)$/))!==null)return sign+commaify(pad0r(aval,0));if((r=fmt.match(/^#,##0\.([#0]*0)$/))!==null){return val<0?"-"+write_num_flt(type,fmt,-val):commaify(""+Math.floor(val))+"."+pad0(dec(val,r[1].length),r[1].length)}if((r=fmt.match(/^#,#*,#0/))!==null)return write_num_flt(type,fmt.replace(/^#,#*,/,""),val);if((r=fmt.match(/^([0#]+)(\\?-([0#]+))+$/))!==null){o=_strrev(write_num_flt(type,fmt.replace(/[\\-]/g,""),val));ri=0;return _strrev(_strrev(fmt.replace(/\\/g,"")).replace(/[0#]/g,function(x){return ri=0)return write_num_int("n",ffmt,val);return"("+write_num_int("n",ffmt,-val)+")"}if(fmt.charCodeAt(fmt.length-1)===44)return write_num_cm2(type,fmt,val);if(fmt.indexOf("%")!==-1)return write_num_pct2(type,fmt,val);if(fmt.indexOf("E")!==-1)return write_num_exp2(fmt,val);if(fmt.charCodeAt(0)===36)return"$"+write_num_int(type,fmt.substr(fmt[1]==" "?2:1),val);var o;var r,ri,ff,aval=Math.abs(val),sign=val<0?"-":"";if(fmt.match(/^00+$/))return sign+pad0(aval,fmt.length);if(fmt.match(/^[#?]+$/)){o=""+val;if(val===0)o="";return o.length>fmt.length?o:hashq(fmt.substr(0,fmt.length-o.length))+o}if((r=fmt.match(frac1))!==null)return write_num_f2(r,aval,sign);if(fmt.match(/^#+0+$/)!==null)return sign+pad0(aval,fmt.length-fmt.indexOf("0"));if((r=fmt.match(dec1))!==null){o=(""+val).replace(/^([^\.]+)$/,"$1."+r[1]).replace(/\.$/,"."+r[1]).replace(/\.(\d*)$/,function($$,$1){return"."+$1+fill("0",r[1].length-$1.length)});return fmt.indexOf("0.")!==-1?o:o.replace(/^0\./,".")}fmt=fmt.replace(/^#+([0.])/,"$1");if((r=fmt.match(/^(0*)\.(#*)$/))!==null){return sign+(""+aval).replace(/\.(\d*[1-9])0*$/,".$1").replace(/^(-?\d*)$/,"$1.").replace(/^0\./,r[1].length?"0.":".")}if((r=fmt.match(/^#,##0(\.?)$/))!==null)return sign+commaify(""+aval);if((r=fmt.match(/^#,##0\.([#0]*0)$/))!==null){return val<0?"-"+write_num_int(type,fmt,-val):commaify(""+val)+"."+fill("0",r[1].length)}if((r=fmt.match(/^#,#*,#0/))!==null)return write_num_int(type,fmt.replace(/^#,#*,/,""),val);if((r=fmt.match(/^([0#]+)(\\?-([0#]+))+$/))!==null){o=_strrev(write_num_int(type,fmt.replace(/[\\-]/g,""),val));ri=0;return _strrev(_strrev(fmt.replace(/\\/g,"")).replace(/[0#]/g,function(x){return ri=12?"P":"A";q.t="T";hr="h";i+=3}else if(fmt.substr(i,5)==="AM/PM"){if(dt!=null)q.v=dt.H>=12?"PM":"AM";q.t="T";i+=5;hr="h"}else{q.t="t";++i}if(dt==null&&q.t==="T")return"";out[out.length]=q;lst=c;break;case"[":o=c;while(fmt[i++]!=="]"&&i-1||c=="\\"&&fmt[i+1]=="-"&&"0#".indexOf(fmt[i+2])>-1)o+=c;out[out.length]={t:"n",v:o};break;case"?":o=c;while(fmt[++i]===c)o+=c;q={t:c,v:o};out[out.length]=q;lst=c;break;case"*":++i;if(fmt[i]==" "||fmt[i]=="*")++i;break;case"(":case")":out[out.length]={t:flen===1?"t":c,v:c};++i;break;case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":o=c;while("0123456789".indexOf(fmt[++i])>-1)o+=fmt[i];out[out.length]={t:"D",v:o};break;case" ":out[out.length]={t:c,v:c};++i;break;default:if(",$-+/():!^&'~{}<>=€acfijklopqrtuvwxz".indexOf(c)===-1)throw new Error("unrecognized character "+c+" in "+fmt);out[out.length]={t:"t",v:c};++i;break}}var bt=0,ss0=0,ssm;for(i=out.length-1,lst="t";i>=0;--i){switch(out[i].t){case"h":case"H":out[i].t=hr;lst="h";if(bt<1)bt=1;break;case"s":if(ssm=out[i].v.match(/\.0+$/))ss0=Math.max(ss0,ssm[0].length-1);if(bt<3)bt=3;case"d":case"y":case"M":case"e":lst=out[i].t;break;case"m":if(lst==="s"){out[i].t="M";if(bt<2)bt=2}break;case"X":if(out[i].v==="B2");break;case"Z":if(bt<1&&out[i].v.match(/[Hh]/))bt=1;if(bt<2&&out[i].v.match(/[Mm]/))bt=2;if(bt<3&&out[i].v.match(/[Ss]/))bt=3}}switch(bt){case 0:break;case 1:if(dt.u>=.5){dt.u=0;++dt.S}if(dt.S>=60){dt.S=0;++dt.M}if(dt.M>=60){dt.M=0;++dt.H}break;case 2:if(dt.u>=.5){dt.u=0;++dt.S}if(dt.S>=60){dt.S=0;++dt.M}break}var nstr="",jj;for(i=0;i-1||out[jj].v===" "&&out[jj+1]!=null&&out[jj+1].t=="?"))){out[i].v+=out[jj].v;out[jj]=undefined;++jj}nstr+=out[i].v;i=jj-1;break;case"G":out[i].t="t";out[i].v=general_fmt(v,opts);break}}var vv="",myv,ostr;if(nstr.length>0){myv=v<0&&nstr.charCodeAt(0)===45?-v:v;ostr=write_num(nstr.charCodeAt(0)===40?"(":"n",nstr,myv);jj=ostr.length-1;var decpt=out.length;for(i=0;i-1){decpt=i;break}var lasti=out.length;if(decpt===out.length&&ostr.indexOf("E")===-1){for(i=out.length-1;i>=0;--i){if(out[i]==null||"n?(".indexOf(out[i].t)===-1)continue;if(jj>=out[i].v.length-1){jj-=out[i].v.length;out[i].v=ostr.substr(jj+1,out[i].v.length)}else if(jj<0)out[i].v="";else{out[i].v=ostr.substr(0,jj+1);jj=-1}out[i].t="t";lasti=i}if(jj>=0&&lasti=0;--i){if(out[i]==null||"n?(".indexOf(out[i].t)===-1)continue;j=out[i].v.indexOf(".")>-1&&i===decpt?out[i].v.indexOf(".")-1:out[i].v.length-1;vv=out[i].v.substr(j+1);for(;j>=0;--j){if(jj>=0&&(out[i].v[j]==="0"||out[i].v[j]==="#"))vv=ostr[jj--]+vv}out[i].v=vv;out[i].t="t";lasti=i}if(jj>=0&&lasti-1&&i===decpt?out[i].v.indexOf(".")+1:0;vv=out[i].v.substr(0,j);for(;j-1){myv=flen>1&&v<0&&i>0&&out[i-1].v==="-"?-v:v;out[i].v=write_num(out[i].t,out[i].v,myv);out[i].t="t"}var retval="";for(i=0;i!==out.length;++i)if(out[i]!=null)retval+=out[i].v;return retval}SSF._eval=eval_fmt;var cfregex=/\[[=<>]/;var cfregex2=/\[([=<>]*)(-?\d+\.?\d*)\]/;function chkcond(v,rr){if(rr==null)return false;var thresh=parseFloat(rr[2]);switch(rr[1]){case"=":if(v==thresh)return true;break;case">":if(v>thresh)return true;break;case"<":if(v":if(v!=thresh)return true;break;case">=":if(v>=thresh)return true;break;case"<=":if(v<=thresh)return true;break}return false}function choose_fmt(f,v){var fmt=split_fmt(f);var l=fmt.length,lat=fmt[l-1].indexOf("@");if(l<4&&lat>-1)--l;if(fmt.length>4)throw"cannot find right format for |"+fmt+"|";if(typeof v!=="number")return[4,fmt.length===4||lat>-1?fmt[fmt.length-1]:"@"];switch(fmt.length){case 1:fmt=lat>-1?["General","General","General",fmt[0]]:[fmt[0],fmt[0],fmt[0],"@"];break;case 2:fmt=lat>-1?[fmt[0],fmt[0],fmt[0],fmt[1]]:[fmt[0],fmt[1],fmt[0],"@"];break;case 3:fmt=lat>-1?[fmt[0],fmt[1],fmt[0],fmt[2]]:[fmt[0],fmt[1],fmt[2],"@"];break;case 4:break}var ff=v>0?fmt[0]:v<0?fmt[1]:fmt[2];if(fmt[0].indexOf("[")===-1&&fmt[1].indexOf("[")===-1)return[l,ff];if(fmt[0].match(cfregex)!=null||fmt[1].match(cfregex)!=null){var m1=fmt[0].match(cfregex2);var m2=fmt[1].match(cfregex2);return chkcond(v,m1)?[l,fmt[0]]:chkcond(v,m2)?[l,fmt[1]]:[l,fmt[m1!=null&&m2!=null?2:1]]}return[l,ff]}function format(fmt,v,o){fixopts(o!=null?o:o=[]);var sfmt="";switch(typeof fmt){case"string":sfmt=fmt;break;case"number":sfmt=(o.table!=null?o.table:table_fmt)[fmt];break}if(isgeneral(sfmt,0))return general_fmt(v,o);var f=choose_fmt(sfmt,v);if(isgeneral(f[1]))return general_fmt(v,o);if(v===true)v="TRUE";else if(v===false)v="FALSE";else if(v===""||v==null)return"";return eval_fmt(f[1],v,o,f[0])}SSF._table=table_fmt;SSF.load=function load_entry(fmt,idx){table_fmt[idx]=fmt};SSF.format=format;SSF.get_table=function get_table(){return table_fmt};SSF.load_table=function load_table(tbl){for(var i=0;i!=392;++i)if(tbl[i]!==undefined)SSF.load(tbl[i],i)}};make_ssf(SSF);function isval(x){return x!==undefined&&x!==null}function keys(o){return Object.keys(o)}function evert_key(obj,key){var o=[],K=keys(obj);for(var i=0;i!==K.length;++i)o[obj[K[i]][key]]=K[i];return o}function evert(obj){var o=[],K=keys(obj);for(var i=0;i!==K.length;++i)o[obj[K[i]]]=K[i];return o}function evert_num(obj){var o=[],K=keys(obj);for(var i=0;i!==K.length;++i)o[obj[K[i]]]=parseInt(K[i],10);return o}function evert_arr(obj){var o=[],K=keys(obj);for(var i=0;i!==K.length;++i){if(o[obj[K[i]]]==null)o[obj[K[i]]]=[];o[obj[K[i]]].push(K[i])}return o}function datenum(v,date1904){if(date1904)v+=1462;var epoch=Date.parse(v);return(epoch+22091616e5)/(24*60*60*1e3)}function cc2str(arr){var o="";for(var i=0;i!=arr.length;++i)o+=String.fromCharCode(arr[i]);return o}var has_buf=typeof Buffer!=="undefined";function getdata(data){if(!data)return null;if(data.name.substr(-4)===".bin"){if(data.data)return char_codes(data.data);if(data.asNodeBuffer&&has_buf)return data.asNodeBuffer();if(data._data&&data._data.getContent)return Array.prototype.slice.call(data._data.getContent())}else{if(data.data)return data.name.substr(-4)!==".bin"?debom_xml(data.data):char_codes(data.data);if(data.asNodeBuffer&&has_buf)return debom_xml(data.asNodeBuffer().toString("binary"));if(data.asBinary)return debom_xml(data.asBinary());if(data._data&&data._data.getContent)return debom_xml(cc2str(Array.prototype.slice.call(data._data.getContent(),0)))}return null}function safegetzipfile(zip,file){var f=file;if(zip.files[f])return zip.files[f];f=file.toLowerCase();if(zip.files[f])return zip.files[f];f=f.replace(/\//g,"\\");if(zip.files[f])return zip.files[f];return null}function getzipfile(zip,file){var o=safegetzipfile(zip,file);if(o==null)throw new Error("Cannot find file "+file+" in zip");return o}function getzipdata(zip,file,safe){if(!safe)return getdata(getzipfile(zip,file));if(!file)return null;try{return getzipdata(zip,file)}catch(e){return null}}var _fs,jszip;if(typeof JSZip!=="undefined")jszip=JSZip;if(typeof exports!=="undefined"){if(typeof module!=="undefined"&&module.exports){if(has_buf&&typeof jszip==="undefined")jszip=require("js"+"zip");if(typeof jszip==="undefined")jszip=require("./js"+"zip").JSZip;_fs=require("f"+"s")}}var attregexg=/\b[\w:]+=["'][^"]*['"]/g;var tagregex=/<[^>]*>/g;var nsregex=/<\w*:/,nsregex2=/<(\/?)\w+:/;function parsexmltag(tag,skip_root){var z=[];var eq=0,c=0;for(;eq!==tag.length;++eq)if((c=tag.charCodeAt(eq))===32||c===10||c===13)break;if(!skip_root)z[0]=tag.substr(0,eq);if(eq===tag.length)return z;var m=tag.match(attregexg),j=0,w="",v="",i=0,q="",cc="";if(m)for(i=0;i!=m.length;++i){cc=m[i];for(c=0;c!=cc.length;++c)if(cc.charCodeAt(c)===61)break;q=cc.substr(0,c);v=cc.substring(c+2,cc.length-1);for(j=0;j!=q.length;++j)if(q.charCodeAt(j)===58)break;if(j===q.length)z[q]=v;else z[(j===5&&q.substr(0,5)==="xmlns"?"xmlns":"")+q.substr(j+1)]=v}return z}function strip_ns(x){return x.replace(nsregex2,"<$1")}var encodings={""":'"',"'":"'",">":">","<":"<","&":"&"};var rencoding=evert(encodings);var rencstr="&<>'\"".split("");var encregex=/&[a-z]*;/g,coderegex=/_x([\da-fA-F]+)_/g;function unescapexml(text){var s=text+"";return s.replace(encregex,function($$){return encodings[$$]}).replace(coderegex,function(m,c){return String.fromCharCode(parseInt(c,16))})}var decregex=/[&<>'"]/g,charegex=/[\u0000-\u0008\u000b-\u001f]/g;function escapexml(text){var s=text+"";return s.replace(decregex,function(y){return rencoding[y]}).replace(charegex,function(s){return"_x"+("000"+s.charCodeAt(0).toString(16)).substr(-4)+"_"})}function parsexmlbool(value,tag){switch(value){case"1":case"true":case"TRUE":return true;default:return false}}var utf8read=function utf8reada(orig){var out="",i=0,c=0,d=0,e=0,f=0,w=0;while(i191&&c<224){out+=String.fromCharCode((c&31)<<6|d&63);continue}e=orig.charCodeAt(i++);if(c<240){out+=String.fromCharCode((c&15)<<12|(d&63)<<6|e&63);continue}f=orig.charCodeAt(i++);w=((c&7)<<18|(d&63)<<12|(e&63)<<6|f&63)-65536;out+=String.fromCharCode(55296+(w>>>10&1023));out+=String.fromCharCode(56320+(w&1023))}return out};if(has_buf){var utf8readb=function utf8readb(data){var out=new Buffer(2*data.length),w,i,j=1,k=0,ww=0,c;for(i=0;i>>10&1023);w=56320+(w&1023)}if(ww!==0){out[k++]=ww&255;out[k++]=ww>>>8;ww=0}out[k++]=w%256;out[k++]=w>>>8}out.length=k;return out.toString("ucs2")};var corpus="foo bar baz☃🍣";if(utf8read(corpus)==utf8readb(corpus))utf8read=utf8readb;var utf8readc=function utf8readc(data){return Buffer(data,"binary").toString("utf8")};if(utf8read(corpus)==utf8readc(corpus))utf8read=utf8readc}var matchtag=function(){var mtcache={};return function matchtag(f,g){var t=f+"|"+g;if(mtcache[t]!==undefined)return mtcache[t];return mtcache[t]=new RegExp("<(?:\\w+:)?"+f+'(?: xml:space="preserve")?(?:[^>]*)>([^☃]*)",g||"")}}();var vtregex=function(){var vt_cache={};return function vt_regex(bt){if(vt_cache[bt]!==undefined)return vt_cache[bt];return vt_cache[bt]=new RegExp("(.*?)","g")}}();var vtvregex=/<\/?vt:variant>/g,vtmregex=/]*)>(.*)"+g+""}function wxt_helper(h){return keys(h).map(function(k){return" "+k+'="'+h[k]+'"'}).join("")}function writextag(f,g,h){return"<"+f+(isval(h)?wxt_helper(h):"")+(isval(g)?(g.match(wtregex)?' xml:space="preserve"':"")+">"+g+""}function write_w3cdtf(d,t){try{return d.toISOString().replace(/\.\d*/,"")}catch(e){if(t)throw e}}function write_vt(s){switch(typeof s){case"string":return writextag("vt:lpwstr",s);case"number":return writextag((s|0)==s?"vt:i4":"vt:r8",String(s));case"boolean":return writextag("vt:bool",s?"true":"false")}if(s instanceof Date)return writextag("vt:filetime",write_w3cdtf(s));throw new Error("Unable to serialize "+s)}var XML_HEADER='\r\n';var XMLNS={dc:"http://purl.org/dc/elements/1.1/",dcterms:"http://purl.org/dc/terms/",dcmitype:"http://purl.org/dc/dcmitype/",mx:"http://schemas.microsoft.com/office/mac/excel/2008/main",r:"http://schemas.openxmlformats.org/officeDocument/2006/relationships",sjs:"http://schemas.openxmlformats.org/package/2006/sheetjs/core-properties",vt:"http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes",xsi:"http://www.w3.org/2001/XMLSchema-instance",xsd:"http://www.w3.org/2001/XMLSchema"};XMLNS.main=["http://schemas.openxmlformats.org/spreadsheetml/2006/main","http://purl.oclc.org/ooxml/spreadsheetml/main","http://schemas.microsoft.com/office/excel/2006/main","http://schemas.microsoft.com/office/excel/2006/2"];function readIEEE754(buf,idx,isLE,nl,ml){if(isLE===undefined)isLE=true;if(!nl)nl=8;if(!ml&&nl===8)ml=52;var e,m,el=nl*8-ml-1,eMax=(1<>1;var bits=-7,d=isLE?-1:1,i=isLE?nl-1:0,s=buf[idx+i];i+=d;e=s&(1<<-bits)-1;s>>>=-bits;bits+=el;for(;bits>0;e=e*256+buf[idx+i],i+=d,bits-=8);m=e&(1<<-bits)-1;e>>>=-bits;bits+=ml;for(;bits>0;m=m*256+buf[idx+i],i+=d,bits-=8);if(e===eMax)return m?NaN:(s?-1:1)*Infinity;else if(e===0)e=1-eBias;else{m=m+Math.pow(2,ml);e=e-eBias}return(s?-1:1)*m*Math.pow(2,e-ml)}var __toBuffer,___toBuffer;__toBuffer=___toBuffer=function toBuffer_(bufs){var x=[];for(var i=0;i0&&Buffer.isBuffer(bufs[0][0])?Buffer.concat(bufs[0]):___toBuffer(bufs)};__double=function double_(b,i){if(Buffer.isBuffer(b))return b.readDoubleLE(i);return ___double(b,i)};is_buf=function is_buf_b(a){return Buffer.isBuffer(a)||Array.isArray(a)}}var __readUInt8=function(b,idx){return b[idx]};var __readUInt16LE=function(b,idx){return b[idx+1]*(1<<8)+b[idx]};var __readInt16LE=function(b,idx){var u=b[idx+1]*(1<<8)+b[idx];return u<32768?u:(65535-u+1)*-1};var __readUInt32LE=function(b,idx){return b[idx+3]*(1<<24)+(b[idx+2]<<16)+(b[idx+1]<<8)+b[idx]};var __readInt32LE=function(b,idx){return b[idx+3]<<24|b[idx+2]<<16|b[idx+1]<<8|b[idx]};function ReadShift(size,t){var o="",oo=[],w,vv,i,loc;if(t==="dbcs"){loc=this.l;if(has_buf&&Buffer.isBuffer(this))o=this.slice(this.l,this.l+2*size).toString("utf16le");else for(i=0;i!=size;++i){o+=String.fromCharCode(__readUInt16LE(this,loc));loc+=2}size*=2}else switch(size){case 1:o=__readUInt8(this,this.l);break;case 2:o=(t==="i"?__readInt16LE:__readUInt16LE)(this,this.l);break;case 4:o=__readUInt32LE(this,this.l);break;case 8:if(t==="f"){o=__double(this,this.l);break}}this.l+=size;return o}function WriteShift(t,val,f){var size,i;if(f==="dbcs"){for(i=0;i!=val.length;++i)this.writeUInt16LE(val.charCodeAt(i),this.l+2*i);size=2*val.length}else switch(t){case 1:size=1;this[this.l]=val&255;break;case 3:size=3;this[this.l+2]=val&255;val>>>=8;this[this.l+1]=val&255;val>>>=8;this[this.l]=val&255;break;case 4:size=4;this.writeUInt32LE(val,this.l);break;case 8:size=8;if(f==="f"){this.writeDoubleLE(val,this.l);break}case 16:break;case-4:size=4;this.writeInt32LE(val,this.l);break}this.l+=size;return this}function prep_blob(blob,pos){blob.l=pos;blob.read_shift=ReadShift;blob.write_shift=WriteShift}function parsenoop(blob,length){blob.l+=length}function writenoop(blob,length){blob.l+=length}function new_buf(sz){var o=has_buf?new Buffer(sz):new Array(sz);prep_blob(o,0);return o}function recordhopper(data,cb,opts){var tmpbyte,cntbyte,length;prep_blob(data,data.l||0);while(data.l0)bufs.push(curbuf);curbuf=null};var next=function ba_next(sz){if(sz=128?1:0)+1+length;if(length>=128)++l;if(length>=16384)++l;if(length>=2097152)++l;var o=ba.next(l);if(t<=127)o.write_shift(1,t);else{o.write_shift(1,(t&127)+128);o.write_shift(1,t>>7)}for(var i=0;i!=4;++i){if(length>=128){o.write_shift(1,(length&127)+128);length>>=7}else{o.write_shift(1,length);break}}if(length>0&&is_buf(payload))ba.push(payload)}function parse_StrRun(data,length){return{ich:data.read_shift(2),ifnt:data.read_shift(2)}}function parse_RichStr(data,length){var start=data.l;var flags=data.read_shift(1);var str=parse_XLWideString(data);var rgsStrRun=[];var z={t:str,h:str};if((flags&1)!==0){var dwSizeStrRun=data.read_shift(4);for(var i=0;i!=dwSizeStrRun;++i)rgsStrRun.push(parse_StrRun(data));z.r=rgsStrRun}else z.r=""+escapexml(str)+"";if((flags&2)!==0){}data.l=start+length;return z}function write_RichStr(str,o){if(o==null)o=new_buf(5+2*str.t.length);o.write_shift(1,0);write_XLWideString(str.t,o);return o}function parse_Cell(data){var col=data.read_shift(4);var iStyleRef=data.read_shift(2);iStyleRef+=data.read_shift(1)<<16;var fPhShow=data.read_shift(1);return{c:col,iStyleRef:iStyleRef}}function write_Cell(cell,o){if(o==null)o=new_buf(8);o.write_shift(-4,cell.c);o.write_shift(3,cell.iStyleRef===undefined?cell.iStyleRef:cell.s);o.write_shift(1,0);return o}function parse_CodeName(data,length){return parse_XLWideString(data,length)}function parse_XLNullableWideString(data){var cchCharacters=data.read_shift(4);return cchCharacters===0||cchCharacters===4294967295?"":data.read_shift(cchCharacters,"dbcs")}function write_XLNullableWideString(data,o){if(!o)o=new_buf(127);o.write_shift(4,data.length>0?data.length:4294967295);if(data.length>0)o.write_shift(0,data,"dbcs");return o}function parse_XLWideString(data){var cchCharacters=data.read_shift(4);return cchCharacters===0?"":data.read_shift(cchCharacters,"dbcs")}function write_XLWideString(data,o){if(o==null)o=new_buf(4+2*data.length);o.write_shift(4,data.length);if(data.length>0)o.write_shift(0,data,"dbcs");return o}var parse_RelID=parse_XLNullableWideString;var write_RelID=write_XLNullableWideString;function parse_RkNumber(data){var b=data.slice(data.l,data.l+4);var fX100=b[0]&1,fInt=b[0]&2;data.l+=4;b[0]&=252;var RK=fInt===0?__double([0,0,0,0,b[0],b[1],b[2],b[3]],0):__readInt32LE(b,0)>>2;return fX100?RK/100:RK}function parse_UncheckedRfX(data){var cell={s:{},e:{}};cell.s.r=data.read_shift(4);cell.e.r=data.read_shift(4);cell.s.c=data.read_shift(4);cell.e.c=data.read_shift(4);return cell}function write_UncheckedRfX(r,o){if(!o)o=new_buf(16);o.write_shift(4,r.s.r);o.write_shift(4,r.e.r);o.write_shift(4,r.s.c);o.write_shift(4,r.e.c);return o}function parse_Xnum(data,length){return data.read_shift(8,"f")}function write_Xnum(data,o){return(o||new_buf(8)).write_shift(8,"f",data)}var BErr={0:"#NULL!",7:"#DIV/0!",15:"#VALUE!",23:"#REF!",29:"#NAME?",36:"#NUM!",42:"#N/A",43:"#GETTING_DATA",255:"#WTF?"};var RBErr=evert_num(BErr);function parse_BrtColor(data,length){var out={};var d=data.read_shift(1);out.fValidRGB=d&1;out.xColorType=d>>>1;out.index=data.read_shift(1);out.nTintAndShade=data.read_shift(2,"i");out.bRed=data.read_shift(1);out.bGreen=data.read_shift(1);out.bBlue=data.read_shift(1);out.bAlpha=data.read_shift(1)}function parse_FontFlags(data,length){var d=data.read_shift(1);data.l++;var out={fItalic:d&2,fStrikeout:d&8,fOutline:d&16,fShadow:d&32,fCondense:d&64,fExtend:d&128};return out}var ct2type={"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml":"workbooks","application/vnd.ms-excel.binIndexWs":"TODO","application/vnd.ms-excel.chartsheet":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml":"TODO","application/vnd.ms-excel.dialogsheet":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml":"TODO","application/vnd.ms-excel.macrosheet":"TODO","application/vnd.ms-excel.macrosheet+xml":"TODO","application/vnd.ms-excel.intlmacrosheet":"TODO","application/vnd.ms-excel.binIndexMs":"TODO","application/vnd.openxmlformats-package.core-properties+xml":"coreprops","application/vnd.openxmlformats-officedocument.custom-properties+xml":"custprops","application/vnd.openxmlformats-officedocument.extended-properties+xml":"extprops","application/vnd.openxmlformats-officedocument.customXmlProperties+xml":"TODO","application/vnd.ms-excel.comments":"comments","application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml":"comments","application/vnd.ms-excel.pivotTable":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.pivotTable+xml":"TODO","application/vnd.ms-excel.calcChain":"calcchains","application/vnd.openxmlformats-officedocument.spreadsheetml.calcChain+xml":"calcchains","application/vnd.openxmlformats-officedocument.spreadsheetml.printerSettings":"TODO","application/vnd.ms-office.activeX":"TODO","application/vnd.ms-office.activeX+xml":"TODO","application/vnd.ms-excel.attachedToolbars":"TODO","application/vnd.ms-excel.connections":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml":"TODO","application/vnd.ms-excel.externalLink":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.externalLink+xml":"TODO","application/vnd.ms-excel.sheetMetadata":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.sheetMetadata+xml":"TODO","application/vnd.ms-excel.pivotCacheDefinition":"TODO","application/vnd.ms-excel.pivotCacheRecords":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheDefinition+xml":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheRecords+xml":"TODO","application/vnd.ms-excel.queryTable":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.queryTable+xml":"TODO","application/vnd.ms-excel.userNames":"TODO","application/vnd.ms-excel.revisionHeaders":"TODO","application/vnd.ms-excel.revisionLog":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.revisionHeaders+xml":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.revisionLog+xml":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.userNames+xml":"TODO","application/vnd.ms-excel.tableSingleCells":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.tableSingleCells+xml":"TODO","application/vnd.ms-excel.slicer":"TODO","application/vnd.ms-excel.slicerCache":"TODO","application/vnd.ms-excel.slicer+xml":"TODO","application/vnd.ms-excel.slicerCache+xml":"TODO","application/vnd.ms-excel.wsSortMap":"TODO","application/vnd.ms-excel.table":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml":"TODO","application/vnd.openxmlformats-officedocument.theme+xml":"themes","application/vnd.ms-excel.Timeline+xml":"TODO","application/vnd.ms-excel.TimelineCache+xml":"TODO","application/vnd.ms-office.vbaProject":"vba","application/vnd.ms-office.vbaProjectSignature":"vba","application/vnd.ms-office.volatileDependencies":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.volatileDependencies+xml":"TODO","application/vnd.ms-excel.controlproperties+xml":"TODO","application/vnd.openxmlformats-officedocument.model+data":"TODO","application/vnd.ms-excel.Survey+xml":"TODO","application/vnd.openxmlformats-officedocument.drawing+xml":"TODO","application/vnd.openxmlformats-officedocument.drawingml.chart+xml":"TODO","application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml":"TODO","application/vnd.openxmlformats-officedocument.drawingml.diagramColors+xml":"TODO","application/vnd.openxmlformats-officedocument.drawingml.diagramData+xml":"TODO","application/vnd.openxmlformats-officedocument.drawingml.diagramLayout+xml":"TODO","application/vnd.openxmlformats-officedocument.drawingml.diagramStyle+xml":"TODO","application/vnd.openxmlformats-officedocument.vmlDrawing":"TODO","application/vnd.openxmlformats-package.relationships+xml":"rels","application/vnd.openxmlformats-officedocument.oleObject":"TODO",sheet:"js"};var CT_LIST=function(){var o={workbooks:{xlsx:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml",xlsm:"application/vnd.ms-excel.sheet.macroEnabled.main+xml",xlsb:"application/vnd.ms-excel.sheet.binary.macroEnabled.main",xltx:"application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml"},strs:{xlsx:"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml",xlsb:"application/vnd.ms-excel.sharedStrings"},sheets:{xlsx:"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml",xlsb:"application/vnd.ms-excel.worksheet"},styles:{xlsx:"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml",xlsb:"application/vnd.ms-excel.styles"}};keys(o).forEach(function(k){if(!o[k].xlsm)o[k].xlsm=o[k].xlsx});keys(o).forEach(function(k){keys(o[k]).forEach(function(v){ct2type[o[k][v]]=k})});return o}();var type2ct=evert_arr(ct2type);XMLNS.CT="http://schemas.openxmlformats.org/package/2006/content-types";function parse_ct(data,opts){var ctext={};if(!data||!data.match)return data;var ct={workbooks:[],sheets:[],calcchains:[],themes:[],styles:[],coreprops:[],extprops:[],custprops:[],strs:[],comments:[],vba:[],TODO:[],rels:[],xmlns:""};(data.match(tagregex)||[]).forEach(function(x){var y=parsexmltag(x);switch(y[0].replace(nsregex,"<")){case"0?ct.calcchains[0]:"";ct.sst=ct.strs.length>0?ct.strs[0]:"";ct.style=ct.styles.length>0?ct.styles[0]:"";ct.defaults=ctext;delete ct.calcchains;return ct}var CTYPE_XML_ROOT=writextag("Types",null,{xmlns:XMLNS.CT,"xmlns:xsd":XMLNS.xsd,"xmlns:xsi":XMLNS.xsi});var CTYPE_DEFAULTS=[["xml","application/xml"],["bin","application/vnd.ms-excel.sheet.binary.macroEnabled.main"],["rels",type2ct.rels[0]]].map(function(x){return writextag("Default",null,{Extension:x[0],ContentType:x[1]})});function write_ct(ct,opts){var o=[],v;o[o.length]=XML_HEADER;o[o.length]=CTYPE_XML_ROOT;o=o.concat(CTYPE_DEFAULTS);var f1=function(w){if(ct[w]&&ct[w].length>0){v=ct[w][0];o[o.length]=writextag("Override",null,{PartName:(v[0]=="/"?"":"/")+v,ContentType:CT_LIST[w][opts.bookType||"xlsx"]})}};var f2=function(w){ct[w].forEach(function(v){o[o.length]=writextag("Override",null,{PartName:(v[0]=="/"?"":"/")+v,ContentType:CT_LIST[w][opts.bookType||"xlsx"]})})};var f3=function(t){(ct[t]||[]).forEach(function(v){o[o.length]=writextag("Override",null,{PartName:(v[0]=="/"?"":"/")+v,ContentType:type2ct[t][0]})})};f1("workbooks");f2("sheets");f3("themes");["strs","styles"].forEach(f1);["coreprops","extprops","custprops"].forEach(f3);if(o.length>2){o[o.length]="";o[1]=o[1].replace("/>",">")}return o.join("")}var RELS={WB:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument",SHEET:"http://sheetjs.openxmlformats.org/officeDocument/2006/relationships/officeDocument"};function parse_rels(data,currentFilePath){if(!data)return data;if(currentFilePath.charAt(0)!=="/"){currentFilePath="/"+currentFilePath}var rels={};var hash={};var resolveRelativePathIntoAbsolute=function(to){var toksFrom=currentFilePath.split("/");toksFrom.pop();var toksTo=to.split("/");var reversed=[];while(toksTo.length!==0){var tokTo=toksTo.shift();if(tokTo===".."){toksFrom.pop()}else if(tokTo!=="."){toksFrom.push(tokTo)}}return toksFrom.join("/")};data.match(tagregex).forEach(function(x){var y=parsexmltag(x);if(y[0]==="2){o[o.length]="";o[1]=o[1].replace("/>",">")}return o.join("")}var CORE_PROPS=[["cp:category","Category"],["cp:contentStatus","ContentStatus"],["cp:keywords","Keywords"],["cp:lastModifiedBy","LastAuthor"],["cp:lastPrinted","LastPrinted"],["cp:revision","RevNumber"],["cp:version","Version"],["dc:creator","Author"],["dc:description","Comments"],["dc:identifier","Identifier"],["dc:language","Language"],["dc:subject","Subject"],["dc:title","Title"],["dcterms:created","CreatedDate","date"],["dcterms:modified","ModifiedDate","date"]];XMLNS.CORE_PROPS="http://schemas.openxmlformats.org/package/2006/metadata/core-properties";RELS.CORE_PROPS="http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties";var CORE_PROPS_REGEX=function(){var r=new Array(CORE_PROPS.length);for(var i=0;i]*>(.*)")}return r}();function parse_core_props(data){var p={};for(var i=0;i0)p[f[1]]=cur[1];if(f[2]==="date"&&p[f[1]])p[f[1]]=new Date(p[f[1]])}return p}var CORE_PROPS_XML_ROOT=writextag("cp:coreProperties",null,{"xmlns:cp":XMLNS.CORE_PROPS,"xmlns:dc":XMLNS.dc,"xmlns:dcterms":XMLNS.dcterms,"xmlns:dcmitype":XMLNS.dcmitype,"xmlns:xsi":XMLNS.xsi});function cp_doit(f,g,h,o,p){if(p[f]!=null||g==null||g==="")return;p[f]=g;o[o.length]=h?writextag(f,g,h):writetag(f,g)}function write_core_props(cp,opts){var o=[XML_HEADER,CORE_PROPS_XML_ROOT],p={};if(!cp)return o.join("");if(cp.CreatedDate!=null)cp_doit("dcterms:created",typeof cp.CreatedDate==="string"?cp.CreatedDate:write_w3cdtf(cp.CreatedDate,opts.WTF),{"xsi:type":"dcterms:W3CDTF"},o,p);if(cp.ModifiedDate!=null)cp_doit("dcterms:modified",typeof cp.ModifiedDate==="string"?cp.ModifiedDate:write_w3cdtf(cp.ModifiedDate,opts.WTF),{"xsi:type":"dcterms:W3CDTF"},o,p);for(var i=0;i!=CORE_PROPS.length;++i){var f=CORE_PROPS[i];cp_doit(f[0],cp[f[1]],null,o,p)}if(o.length>2){o[o.length]="";o[1]=o[1].replace("/>",">")}return o.join("")}var EXT_PROPS=[["Application","Application","string"],["AppVersion","AppVersion","string"],["Company","Company","string"],["DocSecurity","DocSecurity","string"],["Manager","Manager","string"],["HyperlinksChanged","HyperlinksChanged","bool"],["SharedDoc","SharedDoc","bool"],["LinksUpToDate","LinksUpToDate","bool"],["ScaleCrop","ScaleCrop","bool"],["HeadingPairs","HeadingPairs","raw"],["TitlesOfParts","TitlesOfParts","raw"]];XMLNS.EXT_PROPS="http://schemas.openxmlformats.org/officeDocument/2006/extended-properties";RELS.EXT_PROPS="http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties";function parse_ext_props(data,p){var q={};if(!p)p={};EXT_PROPS.forEach(function(f){switch(f[2]){case"string":p[f[1]]=(data.match(matchtag(f[0]))||[])[1];break;case"bool":p[f[1]]=(data.match(matchtag(f[0]))||[])[1]==="true";break;case"raw":var cur=data.match(new RegExp("<"+f[0]+"[^>]*>(.*)"));if(cur&&cur.length>0)q[f[1]]=cur[1];break}});if(q.HeadingPairs&&q.TitlesOfParts){var v=parseVector(q.HeadingPairs);var j=0,widx=0;for(var i=0;i!==v.length;++i){switch(v[i].v){case"Worksheets":widx=j;p.Worksheets=+v[++i].v;break;case"Named Ranges":++i;break}}var parts=parseVector(q.TitlesOfParts).map(function(x){return utf8read(x.v)});p.SheetNames=parts.slice(widx,widx+p.Worksheets)}return p}var EXT_PROPS_XML_ROOT=writextag("Properties",null,{xmlns:XMLNS.EXT_PROPS,"xmlns:vt":XMLNS.vt});function write_ext_props(cp,opts){var o=[],p={},W=writextag;if(!cp)cp={};cp.Application="SheetJS";o[o.length]=XML_HEADER;o[o.length]=EXT_PROPS_XML_ROOT;EXT_PROPS.forEach(function(f){if(cp[f[1]]===undefined)return;var v;switch(f[2]){case"string":v=cp[f[1]];break;case"bool":v=cp[f[1]]?"true":"false";break}if(v!==undefined)o[o.length]=W(f[0],v)});o[o.length]=W("HeadingPairs",W("vt:vector",W("vt:variant","Worksheets")+W("vt:variant",W("vt:i4",String(cp.Worksheets))),{size:2,baseType:"variant"}));o[o.length]=W("TitlesOfParts",W("vt:vector",cp.SheetNames.map(function(s){return""+s+""}).join(""),{size:cp.Worksheets,baseType:"lpstr"}));if(o.length>2){o[o.length]="";o[1]=o[1].replace("/>",">")}return o.join("")}XMLNS.CUST_PROPS="http://schemas.openxmlformats.org/officeDocument/2006/custom-properties";RELS.CUST_PROPS="http://schemas.openxmlformats.org/officeDocument/2006/relationships/custom-properties";var custregex=/<[^>]+>[^<]*/g;function parse_cust_props(data,opts){var p={},name;var m=data.match(custregex);if(m)for(var i=0;i!=m.length;++i){var x=m[i],y=parsexmltag(x);switch(y[0]){case"":name=null;break;default:if(x.indexOf("");var type=toks[0].substring(4),text=toks[1];switch(type){case"lpstr":case"lpwstr":case"bstr":case"lpwstr":p[name]=unescapexml(text);break;case"bool":p[name]=parsexmlbool(text,"");break;case"i1":case"i2":case"i4":case"i8":case"int":case"uint":p[name]=parseInt(text,10);break;case"r4":case"r8":case"decimal":p[name]=parseFloat(text);break;case"filetime":case"date":p[name]=new Date(text);break;case"cy":case"error":p[name]=unescapexml(text);break;default:if(typeof console!=="undefined")console.warn("Unexpected",x,type,toks)}}else if(x.substr(0,2)==="2){o[o.length]="";o[1]=o[1].replace("/>",">")}return o.join("")}var CS2CP={0:1252,1:65001,2:65001,77:1e4,128:932,129:949,130:1361,134:936,136:950,161:1253,162:1254,163:1258,177:1255,178:1256,186:1257,204:1251,222:874,238:1250,255:1252,69:6969};var parse_rs=function parse_rs_factory(){var tregex=matchtag("t"),rpregex=matchtag("rPr"),rregex=//g,rend=/<\/r>/,nlregex=/\r\n/g;var parse_rpr=function parse_rpr(rpr,intro,outro){var font={},cp=65001;var m=rpr.match(tagregex),i=0;if(m)for(;i!=m.length;++i){var y=parsexmltag(m[i]);switch(y[0]){case"":break;case"":break;case"":font.strike=1;break;case"":break;case"":font.u=1;break;case"":break;case"":font.b=1;break;case"":break;case"":font.i=1;break;case"":break;case"');outro.push("");return cp};function parse_r(r){var terms=[[],"",[]];var t=r.match(tregex),cp=65001;if(!isval(t))return"";terms[1]=t[1];var rpr=r.match(rpregex);if(isval(rpr))cp=parse_rpr(rpr[1],terms[0],terms[2]);return terms[0].join("")+terms[1].replace(nlregex,"
")+terms[2].join("")}return function parse_rs(rs){return rs.replace(rregex,"").split(rend).map(parse_r).join("")}}();var sitregex=/]*>([^<]*)<\/t>/g,sirregex=//;function parse_si(x,opts){var html=opts?opts.cellHTML:true;var z={};if(!x)return null;var y;if(x.charCodeAt(1)===116){z.t=utf8read(unescapexml(x.substr(x.indexOf(">")+1).split(/<\/t>/)[0]));z.r=x;if(html)z.h=z.t}else if(y=x.match(sirregex)){z.r=x;z.t=utf8read(unescapexml(x.match(sitregex).join("").replace(tagregex,"")));if(html)z.h=parse_rs(x)}return z}var sstr0=/]*)>([\s\S]*)<\/sst>/;var sstr1=/<(?:si|sstItem)>/g;var sstr2=/<\/(?:si|sstItem)>/;function parse_sst_xml(data,opts){var s=[],ss;var sst=data.match(sstr0);if(isval(sst)){ss=sst[2].replace(sstr1,"").split(sstr2);for(var i=0;i!=ss.length;++i){var o=parse_si(ss[i],opts);if(o!=null)s[s.length]=o}sst=parsexmltag(sst[1]);s.Count=sst.count;s.Unique=sst.uniqueCount}return s}RELS.SST="http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings";var straywsregex=/^\s|\s$|[\t\n\r]/;function write_sst_xml(sst,opts){if(!opts.bookSST)return"";var o=[XML_HEADER];o[o.length]=writextag("sst",null,{xmlns:XMLNS.main[0],count:sst.Count,uniqueCount:sst.Unique});for(var i=0;i!=sst.length;++i){if(sst[i]==null)continue;var s=sst[i];var sitag="";if(s.r)sitag+=s.r;else{sitag+=""}sitag+="";o[o.length]=sitag}if(o.length>2){o[o.length]="";o[1]=o[1].replace("/>",">")}return o.join("")}function parse_BrtBeginSst(data,length){return[data.read_shift(4),data.read_shift(4)]}function parse_sst_bin(data,opts){var s=[];var pass=false;recordhopper(data,function hopper_sst(val,R,RT){switch(R.n){case"BrtBeginSst":s.Count=val[0];s.Unique=val[1];break;case"BrtSSTItem":s.push(val);break;case"BrtEndSst":return true;case"BrtFRTBegin":pass=true;break;case"BrtFRTEnd":pass=false;break;default:if(!pass||opts.WTF)throw new Error("Unexpected record "+RT+" "+R.n)}});return s}function write_BrtBeginSst(sst,o){if(!o)o=new_buf(8);o.write_shift(4,sst.Count);o.write_shift(4,sst.Unique);return o}var write_BrtSSTItem=write_RichStr;function write_sst_bin(sst,opts){var ba=buf_array();write_record(ba,"BrtBeginSst",write_BrtBeginSst(sst));for(var i=0;i255?255:rgb[i]<0?0:rgb[i]);return o.toString(16).toUpperCase().substr(1)}function rgb2HSL(rgb){var R=rgb[0]/255,G=rgb[1]/255,B=rgb[2]/255;var M=Math.max(R,G,B),m=Math.min(R,G,B),C=M-m;if(C===0)return[0,0,R];var H6=0,S=0,L2=M+m;S=C/(L2>1?2-L2:L2);switch(M){case R:H6=((G-B)/C+6)%6;break;case G:H6=(B-R)/C+2;break;case B:H6=(R-G)/C+4;break}return[H6/6,S,L2/2]}function hsl2RGB(hsl){var H=hsl[0],S=hsl[1],L=hsl[2];var C=S*2*(L<.5?L:1-L),m=L-C/2;var rgb=[m,m,m],h6=6*H;var X;if(S!==0)switch(h6|0){case 0:case 6:X=C*h6;rgb[0]+=C;rgb[1]+=X;break;case 1:X=C*(2-h6);rgb[0]+=X;rgb[1]+=C;break;case 2:X=C*(h6-2);rgb[1]+=C;rgb[2]+=X;break;case 3:X=C*(4-h6);rgb[1]+=X;rgb[2]+=C;break;case 4:X=C*(h6-4);rgb[2]+=C;rgb[0]+=X;break;case 5:X=C*(6-h6);rgb[2]+=X;rgb[0]+=C;break}for(var i=0;i!=3;++i)rgb[i]=Math.round(rgb[i]*255);return rgb}function rgb_tint(hex,tint){if(tint===0)return hex;var hsl=rgb2HSL(hex2RGB(hex));if(tint<0)hsl[2]=hsl[2]*(1+tint);else hsl[2]=1-(1-hsl[2])*(1-tint);return rgb2Hex(hsl2RGB(hsl))}var DEF_MDW=7,MAX_MDW=15,MIN_MDW=1,MDW=DEF_MDW;function width2px(width){return(width+(128/MDW|0)/256)*MDW|0}function px2char(px){return((px-5)/MDW*100+.5|0)/100}function char2width(chr){return((chr*MDW+5)/MDW*256|0)/256}function cycle_width(collw){return char2width(px2char(width2px(collw)))}function find_mdw(collw,coll){if(cycle_width(collw)!=collw){for(MDW=DEF_MDW;MDW>MIN_MDW;--MDW)if(cycle_width(collw)===collw)break;if(MDW===MIN_MDW)for(MDW=DEF_MDW+1;MDW":case"":break;case"":break;case"":styles.Fills.push(fill);fill={};break;case"":case"":break;case"":case"":break;case"":case"":break;default:if(opts.WTF)throw"unrecognized "+y[0]+" in fills"}})}function parse_numFmts(t,opts){styles.NumberFmt=[];var k=keys(SSF._table);for(var i=0;i":case"":case"":break;case"0)SSF.load(f,j)}break;default:if(opts.WTF)throw"unrecognized "+y[0]+" in numFmts"}}}function write_numFmts(NF,opts){var o=[""];[[5,8],[23,26],[41,44],[63,66],[164,392]].forEach(function(r){for(var i=r[0];i<=r[1];++i)if(NF[i]!==undefined)o[o.length]=writextag("numFmt",null,{numFmtId:i,formatCode:escapexml(NF[i])})});if(o.length===1)return"";o[o.length]="";o[0]=writextag("numFmts",null,{count:o.length-2}).replace("/>",">");return o.join("")}function parse_cellXfs(t,opts){styles.CellXf=[];t[0].match(tagregex).forEach(function(x){var y=parsexmltag(x);switch(y[0]){case"":case"":case"":break;case"":break;case"":break;case"":case"":break;case"":break;case"";if(o.length===2)return"";o[0]=writextag("cellXfs",null,{count:o.length-2}).replace("/>",">");return o.join("")}var parse_sty_xml=function make_pstyx(){var numFmtRegex=/]*)>.*<\/numFmts>/;var cellXfRegex=/]*)>.*<\/cellXfs>/;var fillsRegex=/]*)>.*<\/fills>/;return function parse_sty_xml(data,opts){var t;if(t=data.match(numFmtRegex))parse_numFmts(t,opts);if(t=data.match(fillsRegex))parse_fills(t,opts);if(t=data.match(cellXfRegex))parse_cellXfs(t,opts);return styles}}();var STYLES_XML_ROOT=writextag("styleSheet",null,{xmlns:XMLNS.main[0],"xmlns:vt":XMLNS.vt});RELS.STY="http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles";function write_sty_xml(wb,opts){var o=[XML_HEADER,STYLES_XML_ROOT],w;if((w=write_numFmts(wb.SSF))!=null)o[o.length]=w;o[o.length]='';o[o.length]='';o[o.length]='';o[o.length]='';if(w=write_cellXfs(opts.cellXfs))o[o.length]=w;o[o.length]='';o[o.length]='';o[o.length]='';if(o.length>2){o[o.length]="";o[1]=o[1].replace("/>",">")}return o.join("")}function parse_BrtFmt(data,length){var ifmt=data.read_shift(2);var stFmtCode=parse_XLWideString(data,length-2);return[ifmt,stFmtCode]}function parse_BrtFont(data,length){var out={flags:{}};out.dyHeight=data.read_shift(2);out.grbit=parse_FontFlags(data,2);out.bls=data.read_shift(2);out.sss=data.read_shift(2);out.uls=data.read_shift(1);out.bFamily=data.read_shift(1);out.bCharSet=data.read_shift(1);data.l++;out.brtColor=parse_BrtColor(data,8);out.bFontScheme=data.read_shift(1);out.name=parse_XLWideString(data,length-21);out.flags.Bold=out.bls===700;out.flags.Italic=out.grbit.fItalic;out.flags.Strikeout=out.grbit.fStrikeout;out.flags.Outline=out.grbit.fOutline;out.flags.Shadow=out.grbit.fShadow;out.flags.Condense=out.grbit.fCondense;out.flags.Extend=out.grbit.fExtend;out.flags.Sub=out.sss&2;out.flags.Sup=out.sss&1;return out}function parse_BrtXF(data,length){var ixfeParent=data.read_shift(2);var ifmt=data.read_shift(2);parsenoop(data,length-4);return{ixfe:ixfeParent,ifmt:ifmt}}function parse_sty_bin(data,opts){styles.NumberFmt=[];for(var y in SSF._table)styles.NumberFmt[y]=SSF._table[y];styles.CellXf=[];var state="";var pass=false;recordhopper(data,function hopper_sty(val,R,RT){switch(R.n){case"BrtFmt":styles.NumberFmt[val[0]]=val[1];SSF.load(val[1],val[0]);break;case"BrtFont":break;case"BrtKnownFonts":break;case"BrtFill":break;case"BrtBorder":break;case"BrtXF":if(state==="CELLXFS"){styles.CellXf.push(val)}break;case"BrtStyle":break;case"BrtDXF":break;case"BrtMRUColor":break;case"BrtIndexedColor":break;case"BrtBeginStyleSheet":break;case"BrtEndStyleSheet":break;case"BrtBeginTableStyle":break;case"BrtTableStyleElement":break;case"BrtEndTableStyle":break;case"BrtBeginFmts":state="FMTS";break;case"BrtEndFmts":state="";break;case"BrtBeginFonts":state="FONTS";break;case"BrtEndFonts":state="";break;case"BrtACBegin":state="ACFONTS";break;case"BrtACEnd":state="";break;case"BrtBeginFills":state="FILLS";break;case"BrtEndFills":state="";break;case"BrtBeginBorders":state="BORDERS";break;case"BrtEndBorders":state="";break;case"BrtBeginCellStyleXFs":state="CELLSTYLEXFS";break;case"BrtEndCellStyleXFs":state="";break;case"BrtBeginCellXFs":state="CELLXFS";break;case"BrtEndCellXFs":state="";break;case"BrtBeginStyles":state="STYLES";break;case"BrtEndStyles":state="";break;case"BrtBeginDXFs":state="DXFS";break;case"BrtEndDXFs":state="";break;case"BrtBeginTableStyles":state="TABLESTYLES";break;case"BrtEndTableStyles":state="";break;case"BrtBeginColorPalette":state="COLORPALETTE";break;case"BrtEndColorPalette":state="";break;case"BrtBeginIndexedColors":state="INDEXEDCOLORS";break;case"BrtEndIndexedColors":state="";break;case"BrtBeginMRUColors":state="MRUCOLORS";break;case"BrtEndMRUColors":state="";break;case"BrtFRTBegin":pass=true;break;case"BrtFRTEnd":pass=false;break;case"BrtBeginStyleSheetExt14":break;case"BrtBeginSlicerStyles":break;case"BrtEndSlicerStyles":break;case"BrtBeginTimelineStylesheetExt15":break;case"BrtEndTimelineStylesheetExt15":break;case"BrtBeginTimelineStyles":break;case"BrtEndTimelineStyles":break;case"BrtEndStyleSheetExt14":break;default:if(!pass||opts.WTF)throw new Error("Unexpected record "+RT+" "+R.n)}});return styles}function write_sty_bin(data,opts){var ba=buf_array();write_record(ba,"BrtBeginStyleSheet");write_record(ba,"BrtEndStyleSheet");return ba.end()}RELS.THEME="http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme";function parse_clrScheme(t,opts){themes.themeElements.clrScheme=[];var color={};t[0].match(tagregex).forEach(function(x){var y=parsexmltag(x);switch(y[0]){case"":break;case"":case"":case"":case"":case"":case"":case"":case"":case"":case"":case"":case"":case"":case"":case"":case"":case"":case"":case"":case"":case"":case"":case"":case"":if(y[0][1]==="/"){themes.themeElements.clrScheme.push(color);color={}}else{color.name=y[0].substring(3,y[0].length-1)}break;default:if(opts.WTF)throw"unrecognized "+y[0]+" in clrScheme"}})}function parse_fontScheme(t,opts){}function parse_fmtScheme(t,opts){}var clrsregex=/]*)>[^\u2603]*<\/a:clrScheme>/;var fntsregex=/]*)>[^\u2603]*<\/a:fontScheme>/;var fmtsregex=/]*)>[^\u2603]*<\/a:fmtScheme>/;function parse_themeElements(data,opts){themes.themeElements={};var t;[["clrScheme",clrsregex,parse_clrScheme],["fontScheme",fntsregex,parse_fontScheme],["fmtScheme",fmtsregex,parse_fmtScheme]].forEach(function(m){if(!(t=data.match(m[1])))throw m[0]+" not found in themeElements";m[2](t,opts)})}var themeltregex=/]*)>[^\u2603]*<\/a:themeElements>/;function parse_theme_xml(data,opts){if(!data||data.length===0)return themes;var t;if(!(t=data.match(themeltregex)))throw"themeElements not found in theme";parse_themeElements(t[0],opts);return themes}function write_theme(){return'\n'}function parse_cc_xml(data,opts){var d=[];var l=0,i=1;(data.match(tagregex)||[]).forEach(function(x){var y=parsexmltag(x);switch(y[0]){case"":case"":break;case"thisCell.r)range.s.r=thisCell.r;if(range.e.rthisCell.c)range.s.c=thisCell.c;if(range.e.c/))return[];var authors=[];var commentList=[];data.match(/<(?:\w+:)?authors>([^\u2603]*)<\/(?:\w+:)?authors>/)[1].split(/<\/\w*:?author>/).forEach(function(x){if(x===""||x.trim()==="")return;authors.push(x.match(/<(?:\w+:)?author[^>]*>(.*)/)[1])});(data.match(/<(?:\w+:)?commentList>([^\u2603]*)<\/(?:\w+:)?commentList>/)||["",""])[1].split(/<\/\w*:?comment>/).forEach(function(x,index){if(x===""||x.trim()==="")return;var y=parsexmltag(x.match(/<(?:\w+:)?comment[^>]*>/)[0]);var comment={author:y.authorId&&authors[y.authorId]?authors[y.authorId]:undefined,ref:y.ref,guid:y.guid}; +var cell=decode_cell(y.ref);if(opts.sheetRows&&opts.sheetRows<=cell.r)return;var textMatch=x.match(/([^\u2603]*)<\/text>/);if(!textMatch||!textMatch[1])return;var rt=parse_si(textMatch[1]);comment.r=rt.r;comment.t=rt.t;if(opts.cellHTML)comment.h=rt.h;commentList.push(comment)});return commentList}function write_comments_xml(data,opts){}function parse_BrtBeginComment(data,length){var out={};out.iauthor=data.read_shift(4);var rfx=parse_UncheckedRfX(data,16);out.rfx=rfx.s;out.ref=encode_cell(rfx.s);data.l+=16;return out}var parse_BrtCommentAuthor=parse_XLWideString;var parse_BrtCommentText=parse_RichStr;function parse_comments_bin(data,opts){var out=[];var authors=[];var c={};var pass=false;recordhopper(data,function hopper_cmnt(val,R,RT){switch(R.n){case"BrtCommentAuthor":authors.push(val);break;case"BrtBeginComment":c=val;break;case"BrtCommentText":c.t=val.t;c.h=val.h;c.r=val.r;break;case"BrtEndComment":c.author=authors[c.iauthor];delete c.iauthor;if(opts.sheetRows&&opts.sheetRows<=c.rfx.r)break;delete c.rfx;out.push(c);break;case"BrtBeginComments":break;case"BrtEndComments":break;case"BrtBeginCommentAuthors":break;case"BrtEndCommentAuthors":break;case"BrtBeginCommentList":break;case"BrtEndCommentList":break;default:if(!pass||opts.WTF)throw new Error("Unexpected record "+RT+" "+R.n)}});return out}function write_comments_bin(data,opts){}function parse_CellParsedFormula(data,length){var cce=data.read_shift(4);return parsenoop(data,length-4)}var strs={};var _ssfopts={};RELS.WS="http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet";function get_sst_id(sst,str){for(var i=0,len=sst.length;i=0&&d.s.c>=0)ws["!ref"]=encode_range(d)}var mergecregex=//g;var sheetdataregex=/<(?:\w+:)?sheetData>([^\u2603]*)<\/(?:\w+:)?sheetData>/;var hlinkregex=/]*\/>/g;var dimregex=/"(\w*:\w*)"/;var colregex=/]*\/>/g;function parse_ws_xml(data,opts,rels){if(!data)return data;var s={};var ridx=data.indexOf("0){var ref=data.substr(ridx,50).match(dimregex);if(ref!=null)parse_ws_xml_dim(s,ref[1])}var mergecells=[];if(data.indexOf("")!==-1){var merges=data.match(mergecregex);for(ridx=0;ridx!=merges.length;++ridx)mergecells[ridx]=safe_decode_range(merges[ridx].substr(merges[ridx].indexOf('"')+1))}var columns=[];if(opts.cellStyles&&data.indexOf("")!==-1){var cols=data.match(colregex);parse_ws_xml_cols(columns,cols)}var refguess={s:{r:1e6,c:1e6},e:{r:0,c:0}};var mtch=data.match(sheetdataregex);if(mtch)parse_ws_xml_data(mtch[1],s,opts,refguess);if(data.indexOf("")!==-1)parse_ws_xml_hlinks(s,data.match(hlinkregex),rels);if(!s["!ref"]&&refguess.e.c>=refguess.s.c&&refguess.e.r>=refguess.s.r)s["!ref"]=encode_range(refguess);if(opts.sheetRows>0&&s["!ref"]){var tmpref=safe_decode_range(s["!ref"]);if(opts.sheetRows<+tmpref.e.r){tmpref.e.r=opts.sheetRows-1;if(tmpref.e.r>refguess.e.r)tmpref.e.r=refguess.e.r;if(tmpref.e.rrefguess.e.c)tmpref.e.c=refguess.e.c;if(tmpref.e.c0)s["!merges"]=mergecells;if(columns.length>0)s["!cols"]=columns;return s}function write_ws_xml_merges(merges){if(merges.length==0)return"";var o='';for(var i=0;i!=merges.length;++i)o+='';return o+""}function parse_ws_xml_hlinks(s,data,rels){for(var i=0;i!=data.length;++i){var val=parsexmltag(data[i],true);if(!val.ref)return;var rel=rels["!id"][val.id];if(rel){val.Target=rel.Target;if(val.location)val.Target+="#"+val.location;val.Rel=rel}var rng=safe_decode_range(val.ref);for(var R=rng.s.r;R<=rng.e.r;++R)for(var C=rng.s.c;C<=rng.e.c;++C){var addr=encode_cell({c:C,r:R});if(!s[addr])s[addr]={t:"stub",v:undefined};s[addr].l=val}}}function parse_ws_xml_cols(columns,cols){var seencol=false;for(var coli=0;coli!=cols.length;++coli){var coll=parsexmltag(cols[coli],true);var colm=parseInt(coll.min,10)-1,colM=parseInt(coll.max,10)-1;delete coll.min;delete coll.max;if(!seencol&&coll.width){seencol=true;find_mdw(+coll.width,coll)}if(coll.width){coll.wpx=width2px(+coll.width);coll.wch=px2char(coll.wpx);coll.MDW=MDW}while(colm<=colM)columns[colm++]=coll}}function write_ws_xml_cols(ws,cols){var o=[""],col,width;for(var i=0;i!=cols.length;++i){if(!(col=cols[i]))continue;var p={min:i+1,max:i+1};width=-1;if(col.wpx)width=px2char(col.wpx);else if(col.wch)width=col.wch;if(width>-1){p.width=char2width(width);p.customWidth=1}o[o.length]=writextag("col",null,p)}o[o.length]="";return o.join("")}function write_ws_xml_cell(cell,ref,ws,opts,idx,wb){if(cell.v===undefined)return"";var vv="";var oldt=cell.t,oldv=cell.v;switch(cell.t){case"b":vv=cell.v?"1":"0";break;case"n":vv=""+cell.v;break;case"e":vv=BErr[cell.v];break;case"d":if(opts.cellDates)vv=new Date(cell.v).toISOString();else{cell.t="n";vv=""+(cell.v=datenum(cell.v));if(typeof cell.z==="undefined")cell.z=SSF._table[14]}break;default:vv=cell.v;break}var v=writetag("v",escapexml(vv)),o={r:ref};var os=get_cell_style(opts.cellXfs,cell,opts);if(os!==0)o.s=os;switch(cell.t){case"n":break;case"d":o.t="d";break;case"b":o.t="b";break;case"e":o.t="e";break;default:if(opts.bookSST){v=writetag("v",""+get_sst_id(opts.Strings,cell.v));o.t="s";break}o.t="str";break}if(cell.t!=oldt){cell.t=oldt;cell.v=oldv}return writextag("c",v,o)}var parse_ws_xml_data=function parse_ws_xml_data_factory(){var cellregex=/<(?:\w+:)?c[ >]/,rowregex=/<\/(?:\w+:)?row>/;var rregex=/r=["']([^"']*)["']/,isregex=/([\S\s]*?)<\/is>/;var match_v=matchtag("v"),match_f=matchtag("f");return function parse_ws_xml_data(sdata,s,opts,guess){var ri=0,x="",cells=[],cref=[],idx=0,i=0,cc=0,d="",p;var tag,tagr=0,tagc=0;var sstr;var fmtid=0,fillid=0,do_format=Array.isArray(styles.CellXf),cf;for(var marr=sdata.split(rowregex),mt=0,marrlen=marr.length;mt!=marrlen;++mt){x=marr[mt].trim();var xlen=x.length;if(xlen===0)continue;for(ri=0;ritagr-1)guess.s.r=tagr-1;if(guess.e.r":"")+x;if(cref!==null&&cref.length===2){idx=0;d=cref[1];for(i=0;i!=d.length;++i){if((cc=d.charCodeAt(i)-64)<1||cc>26)break;idx=26*idx+cc}--idx;tagc=idx}else++tagc;for(i=0;i!=x.length;++i)if(x.charCodeAt(i)===62)break;++i;tag=parsexmltag(x.substr(0,i),true);if(!tag.r)tag.r=utils.encode_cell({r:tagr-1,c:tagc});d=x.substr(i);p={t:""};if((cref=d.match(match_v))!==null&&cref[1]!=="")p.v=unescapexml(cref[1]);if(opts.cellFormula&&(cref=d.match(match_f))!==null)p.f=unescapexml(cref[1]);if(tag.t===undefined&&p.v===undefined){if(!opts.sheetStubs)continue;p.t="stub"}else p.t=tag.t||"n";if(guess.s.c>idx)guess.s.c=idx;if(guess.e.c0)o[o.length]=writextag("row",r.join(""),{r:rr})}return o.join("")}var WS_XML_ROOT=writextag("worksheet",null,{xmlns:XMLNS.main[0],"xmlns:r":XMLNS.r});function write_ws_xml(idx,opts,wb){var o=[XML_HEADER,WS_XML_ROOT];var s=wb.SheetNames[idx],sidx=0,rdata="";var ws=wb.Sheets[s];if(ws===undefined)ws={};var ref=ws["!ref"];if(ref===undefined)ref="A1";o[o.length]=writextag("dimension",null,{ref:ref});if(ws["!cols"]!==undefined&&ws["!cols"].length>0)o[o.length]=write_ws_xml_cols(ws,ws["!cols"]);o[sidx=o.length]="";if(ws["!ref"]!==undefined){rdata=write_ws_xml_data(ws,opts,idx,wb);if(rdata.length>0)o[o.length]=rdata}if(o.length>sidx+1){o[o.length]="";o[sidx]=o[sidx].replace("/>",">")}if(ws["!merges"]!==undefined&&ws["!merges"].length>0)o[o.length]=write_ws_xml_merges(ws["!merges"]);if(o.length>2){o[o.length]="";o[1]=o[1].replace("/>",">")}return o.join("")}function parse_BrtRowHdr(data,length){var z=[];z.r=data.read_shift(4);data.l+=length-4;return z}var parse_BrtWsDim=parse_UncheckedRfX;var write_BrtWsDim=write_UncheckedRfX;function parse_BrtWsProp(data,length){var z={};data.l+=19;z.name=parse_CodeName(data,length-19);return z}function parse_BrtCellBlank(data,length){var cell=parse_Cell(data);return[cell]}function write_BrtCellBlank(cell,val,o){if(o==null)o=new_buf(8);return write_Cell(val,o)}function parse_BrtCellBool(data,length){var cell=parse_Cell(data);var fBool=data.read_shift(1);return[cell,fBool,"b"]}function parse_BrtCellError(data,length){var cell=parse_Cell(data);var fBool=data.read_shift(1);return[cell,fBool,"e"]}function parse_BrtCellIsst(data,length){var cell=parse_Cell(data);var isst=data.read_shift(4);return[cell,isst,"s"]}function parse_BrtCellReal(data,length){var cell=parse_Cell(data);var value=parse_Xnum(data);return[cell,value,"n"]}function parse_BrtCellRk(data,length){var cell=parse_Cell(data);var value=parse_RkNumber(data);return[cell,value,"n"]}function parse_BrtCellSt(data,length){var cell=parse_Cell(data);var value=parse_XLWideString(data);return[cell,value,"str"]}function parse_BrtFmlaBool(data,length,opts){var cell=parse_Cell(data);var value=data.read_shift(1);var o=[cell,value,"b"];if(opts.cellFormula){var formula=parse_CellParsedFormula(data,length-9);o[3]=""}else data.l+=length-9;return o}function parse_BrtFmlaError(data,length,opts){var cell=parse_Cell(data);var value=data.read_shift(1);var o=[cell,value,"e"];if(opts.cellFormula){var formula=parse_CellParsedFormula(data,length-9);o[3]=""}else data.l+=length-9;return o}function parse_BrtFmlaNum(data,length,opts){var cell=parse_Cell(data);var value=parse_Xnum(data);var o=[cell,value,"n"];if(opts.cellFormula){var formula=parse_CellParsedFormula(data,length-16);o[3]=""}else data.l+=length-16;return o}function parse_BrtFmlaString(data,length,opts){var start=data.l;var cell=parse_Cell(data);var value=parse_XLWideString(data);var o=[cell,value,"str"];if(opts.cellFormula){var formula=parse_CellParsedFormula(data,start+length-data.l)}else data.l=start+length;return o}var parse_BrtMergeCell=parse_UncheckedRfX;function parse_BrtHLink(data,length,opts){var end=data.l+length;var rfx=parse_UncheckedRfX(data,16);var relId=parse_XLNullableWideString(data);var loc=parse_XLWideString(data);var tooltip=parse_XLWideString(data);var display=parse_XLWideString(data);data.l=end;return{rfx:rfx,relId:relId,loc:loc,tooltip:tooltip,display:display}}function parse_ws_bin(data,opts,rels){if(!data)return data;if(!rels)rels={"!id":{}};var s={};var ref;var refguess={s:{r:1e6,c:1e6},e:{r:0,c:0}};var pass=false,end=false;var row,p,cf,R,C,addr,sstr,rr;var mergecells=[];recordhopper(data,function ws_parse(val,R){if(end)return;switch(R.n){case"BrtWsDim":ref=val;break;case"BrtRowHdr":row=val;if(opts.sheetRows&&opts.sheetRows<=row.r)end=true;rr=encode_row(row.r);break;case"BrtFmlaBool":case"BrtFmlaError":case"BrtFmlaNum":case"BrtFmlaString":case"BrtCellBool":case"BrtCellError":case"BrtCellIsst":case"BrtCellReal":case"BrtCellRk":case"BrtCellSt":p={t:val[2]};switch(val[2]){case"n":p.v=val[1];break;case"s":sstr=strs[val[1]];p.v=sstr.t;p.r=sstr.r;break;case"b":p.v=val[1]?true:false;break;case"e":p.v=val[1];p.w=BErr[p.v];break;case"str":p.t="s";p.v=utf8read(val[1]);break}if(opts.cellFormula&&val.length>3)p.f=val[3];if(cf=styles.CellXf[val[0].iStyleRef])safe_format(p,cf.ifmt,null,opts);s[encode_col(C=val[0].c)+rr]=p;if(refguess.s.r>row.r)refguess.s.r=row.r;if(refguess.s.c>C)refguess.s.c=C;if(refguess.e.rrow.r)refguess.s.r=row.r;if(refguess.s.c>C)refguess.s.c=C;if(refguess.e.r0||ref.e.c>0||ref.s.r>0||ref.s.c>0))s["!ref"]=encode_range(ref);if(opts.sheetRows&&s["!ref"]){var tmpref=safe_decode_range(s["!ref"]);if(opts.sheetRows<+tmpref.e.r){tmpref.e.r=opts.sheetRows-1;if(tmpref.e.r>refguess.e.r)tmpref.e.r=refguess.e.r;if(tmpref.e.rrefguess.e.c)tmpref.e.c=refguess.e.c;if(tmpref.e.c0)s["!merges"]=mergecells;return s}function write_ws_bin_cell(ba,cell,R,C,opts){if(cell.v===undefined)return"";var vv="";switch(cell.t){case"b":vv=cell.v?"1":"0";break;case"n":case"e":vv=""+cell.v;break;default:vv=cell.v;break}var o={r:R,c:C};o.s=get_cell_style(opts.cellXfs,cell,opts);switch(cell.t){case"s":case"str":if(opts.bookSST){vv=get_sst_id(opts.Strings,cell.v);o.t="s";break}o.t="str";break;case"n":break;case"b":o.t="b";break;case"e":o.t="e";break}write_record(ba,"BrtCellBlank",write_BrtCellBlank(cell,o))}function write_CELLTABLE(ba,ws,idx,opts,wb){var range=safe_decode_range(ws["!ref"]||"A1"),ref,rr="",cols=[];write_record(ba,"BrtBeginSheetData");for(var R=range.s.r;R<=range.e.r;++R){rr=encode_row(R);for(var C=range.s.c;C<=range.e.c;++C){if(R===range.s.r)cols[C]=encode_col(C);ref=cols[C]+rr;if(!ws[ref])continue;write_ws_bin_cell(ba,ws[ref],R,C,opts)}}write_record(ba,"BrtEndSheetData")}function write_ws_bin(idx,opts,wb){var ba=buf_array();var s=wb.SheetNames[idx],ws=wb.Sheets[s]||{};var r=safe_decode_range(ws["!ref"]||"A1");write_record(ba,"BrtBeginSheet");write_record(ba,"BrtWsDim",write_BrtWsDim(r));write_CELLTABLE(ba,ws,idx,opts,wb);write_record(ba,"BrtEndSheet");return ba.end()}var WBPropsDef=[["allowRefreshQuery","0"],["autoCompressPictures","1"],["backupFile","0"],["checkCompatibility","0"],["codeName",""],["date1904","0"],["dateCompatibility","1"],["filterPrivacy","0"],["hidePivotFieldList","0"],["promptedSolutions","0"],["publishItems","0"],["refreshAllConnections",false],["saveExternalLinkValues","1"],["showBorderUnselectedTables","1"],["showInkAnnotation","1"],["showObjects","all"],["showPivotChartFilter","0"]];var WBViewDef=[["activeTab","0"],["autoFilterDateGrouping","1"],["firstSheet","0"],["minimized","0"],["showHorizontalScroll","1"],["showSheetTabs","1"],["showVerticalScroll","1"],["tabRatio","600"],["visibility","visible"]];var SheetDef=[["state","visible"]];var CalcPrDef=[["calcCompleted","true"],["calcMode","auto"],["calcOnSave","true"],["concurrentCalc","true"],["fullCalcOnLoad","false"],["fullPrecision","true"],["iterate","false"],["iterateCount","100"],["iterateDelta","0.001"],["refMode","A1"]];var CustomWBViewDef=[["autoUpdate","false"],["changesSavedWin","false"],["includeHiddenRowCol","true"],["includePrintSettings","true"],["maximized","false"],["minimized","false"],["onlySync","false"],["personalView","false"],["showComments","commIndicator"],["showFormulaBar","true"],["showHorizontalScroll","true"],["showObjects","all"],["showSheetTabs","true"],["showStatusbar","true"],["showVerticalScroll","true"],["tabRatio","600"],["xWindow","0"],["yWindow","0"]];function push_defaults_array(target,defaults){for(var j=0;j!=target.length;++j){var w=target[j];for(var i=0;i!=defaults.length;++i){var z=defaults[i];if(w[z[0]]==null)w[z[0]]=z[1]}}}function push_defaults(target,defaults){for(var i=0;i!=defaults.length;++i){var z=defaults[i];if(target[z[0]]==null)target[z[0]]=z[1]}}function parse_wb_defaults(wb){push_defaults(wb.WBProps,WBPropsDef);push_defaults(wb.CalcPr,CalcPrDef);push_defaults_array(wb.WBView,WBViewDef);push_defaults_array(wb.Sheets,SheetDef);_ssfopts.date1904=parsexmlbool(wb.WBProps.date1904,"date1904")}var wbnsregex=/<\w+:workbook/;function parse_wb_xml(data,opts){var wb={AppVersion:{},WBProps:{},WBView:[],Sheets:[],CalcPr:{},xmlns:""};var pass=false,xmlns="xmlns";data.match(tagregex).forEach(function xml_wb(x){var y=parsexmltag(x);switch(strip_ns(y[0])){case"":break;case"":break;case"":break;case"":delete y[0];wb.WBProps=y;break;case"":break;case"":case"":break;case"":case"":break;case"":break;case"":case"":break;case"":break;case"":case"":pass=false;break;case"":case"":break;case"":delete y[0];wb.CalcPr=y;break;case"":case"":case"":break;case"":case"":case"":break;case"":case"":break;case"":break;case"":break;case"":case"":break;case"":case"":case"":break;case"":pass=false;break;case"":pass=false;break;default:if(!pass&&opts.WTF)throw"unrecognized "+y[0]+" in workbook"}});if(XMLNS.main.indexOf(wb.xmlns)===-1)throw new Error("Unknown Namespace: "+wb.xmlns);parse_wb_defaults(wb);return wb}var WB_XML_ROOT=writextag("workbook",null,{xmlns:XMLNS.main[0],"xmlns:r":XMLNS.r});function safe1904(wb){try{return parsexmlbool(wb.Workbook.WBProps.date1904)?"true":"false"}catch(e){return"false"}}function write_wb_xml(wb,opts){var o=[XML_HEADER];o[o.length]=WB_XML_ROOT;o[o.length]=writextag("workbookPr",null,{date1904:safe1904(wb)});o[o.length]="";for(var i=0;i!=wb.SheetNames.length;++i)o[o.length]=writextag("sheet",null,{name:wb.SheetNames[i].substr(0,31),sheetId:""+(i+1),"r:id":"rId"+(i+1)});o[o.length]="";if(o.length>2){o[o.length]="";o[1]=o[1].replace("/>",">")}return o.join("")}function parse_BrtBundleSh(data,length){var z={};z.hsState=data.read_shift(4);z.iTabID=data.read_shift(4);z.strRelID=parse_RelID(data,length-8);z.name=parse_XLWideString(data);return z}function write_BrtBundleSh(data,o){if(!o)o=new_buf(127);o.write_shift(4,data.hsState);o.write_shift(4,data.iTabID);write_RelID(data.strRelID,o);write_XLWideString(data.name.substr(0,31),o);return o}function parse_BrtWbProp(data,length){data.read_shift(4);var dwThemeVersion=data.read_shift(4);var strName=length>8?parse_XLWideString(data):"";return[dwThemeVersion,strName]}function write_BrtWbProp(data,o){if(!o)o=new_buf(8);o.write_shift(4,0);o.write_shift(4,0);return o}function parse_BrtFRTArchID$(data,length){var o={};data.read_shift(4);o.ArchID=data.read_shift(4);data.l+=length-8;return o}function parse_wb_bin(data,opts){var wb={AppVersion:{},WBProps:{},WBView:[],Sheets:[],CalcPr:{},xmlns:""};var pass=false,z;recordhopper(data,function hopper_wb(val,R){switch(R.n){case"BrtBundleSh":wb.Sheets.push(val);break;case"BrtBeginBook":break;case"BrtFileVersion":break;case"BrtWbProp":break;case"BrtACBegin":break;case"BrtAbsPath15":break;case"BrtACEnd":break;case"BrtWbFactoid":break;case"BrtBookProtection":break;case"BrtBeginBookViews":break;case"BrtBookView":break;case"BrtEndBookViews":break;case"BrtBeginBundleShs":break;case"BrtEndBundleShs":break;case"BrtBeginFnGroup":break;case"BrtEndFnGroup":break;case"BrtBeginExternals":break;case"BrtSupSelf":break;case"BrtSupBookSrc":break;case"BrtExternSheet":break;case"BrtEndExternals":break;case"BrtName":break;case"BrtCalcProp":break;case"BrtUserBookView":break;case"BrtBeginPivotCacheIDs":break;case"BrtBeginPivotCacheID":break;case"BrtEndPivotCacheID":break;case"BrtEndPivotCacheIDs":break;case"BrtWebOpt":break;case"BrtFileRecover":break;case"BrtFileSharing":break;case"BrtBeginSmartTagTypes":break;case"BrtSmartTagType":break;case"BrtEndSmartTagTypes":break;case"BrtFRTBegin":pass=true;break;case"BrtFRTArchID$":break;case"BrtWorkBookPr15":break;case"BrtFRTEnd":pass=false;break;case"BrtEndBook":break;default:if(!pass||opts.WTF)throw new Error("Unexpected record "+R.n)}});parse_wb_defaults(wb);return wb}function write_BUNDLESHS(ba,wb,opts){write_record(ba,"BrtBeginBundleShs");for(var idx=0;idx!=wb.SheetNames.length;++idx){var d={hsState:0,iTabID:idx+1,strRelID:"rId"+(idx+1),name:wb.SheetNames[idx]};write_record(ba,"BrtBundleSh",write_BrtBundleSh(d))}write_record(ba,"BrtEndBundleShs")}function write_BrtFileVersion(data,o){if(!o)o=new_buf(127);for(var i=0;i!=4;++i)o.write_shift(4,0);write_XLWideString("SheetJS",o);write_XLWideString(XLSX.version,o);write_XLWideString(XLSX.version,o);write_XLWideString("7262",o);o.length=o.l;return o}function write_BOOKVIEWS(ba,wb,opts){write_record(ba,"BrtBeginBookViews");write_record(ba,"BrtEndBookViews")}function write_BrtCalcProp(data,o){if(!o)o=new_buf(26);o.write_shift(4,0);o.write_shift(4,1);o.write_shift(4,0);write_Xnum(0,o);o.write_shift(-4,1023);o.write_shift(1,51);o.write_shift(1,0);return o}function write_BrtFileRecover(data,o){if(!o)o=new_buf(1);o.write_shift(1,0);return o}function write_wb_bin(wb,opts){var ba=buf_array();write_record(ba,"BrtBeginBook");write_record(ba,"BrtFileVersion",write_BrtFileVersion());write_record(ba,"BrtWbProp",write_BrtWbProp());write_BOOKVIEWS(ba,wb,opts);write_BUNDLESHS(ba,wb,opts);write_record(ba,"BrtCalcProp",write_BrtCalcProp());write_record(ba,"BrtFileRecover",write_BrtFileRecover());write_record(ba,"BrtEndBook");return ba.end()}function parse_wb(data,name,opts){return(name.substr(-4)===".bin"?parse_wb_bin:parse_wb_xml)(data,opts)}function parse_ws(data,name,opts,rels){return(name.substr(-4)===".bin"?parse_ws_bin:parse_ws_xml)(data,opts,rels)}function parse_sty(data,name,opts){return(name.substr(-4)===".bin"?parse_sty_bin:parse_sty_xml)(data,opts)}function parse_theme(data,name,opts){return parse_theme_xml(data,opts)}function parse_sst(data,name,opts){return(name.substr(-4)===".bin"?parse_sst_bin:parse_sst_xml)(data,opts)}function parse_cmnt(data,name,opts){return(name.substr(-4)===".bin"?parse_comments_bin:parse_comments_xml)(data,opts)}function parse_cc(data,name,opts){return(name.substr(-4)===".bin"?parse_cc_bin:parse_cc_xml)(data,opts)}function write_wb(wb,name,opts){return(name.substr(-4)===".bin"?write_wb_bin:write_wb_xml)(wb,opts)}function write_ws(data,name,opts,wb){return(name.substr(-4)===".bin"?write_ws_bin:write_ws_xml)(data,opts,wb)}function write_sty(data,name,opts){return(name.substr(-4)===".bin"?write_sty_bin:write_sty_xml)(data,opts)}function write_sst(data,name,opts){return(name.substr(-4)===".bin"?write_sst_bin:write_sst_xml)(data,opts)}var RecordEnum={0:{n:"BrtRowHdr",f:parse_BrtRowHdr},1:{n:"BrtCellBlank",f:parse_BrtCellBlank},2:{n:"BrtCellRk",f:parse_BrtCellRk},3:{n:"BrtCellError",f:parse_BrtCellError},4:{n:"BrtCellBool",f:parse_BrtCellBool},5:{n:"BrtCellReal",f:parse_BrtCellReal},6:{n:"BrtCellSt",f:parse_BrtCellSt},7:{n:"BrtCellIsst",f:parse_BrtCellIsst},8:{n:"BrtFmlaString",f:parse_BrtFmlaString},9:{n:"BrtFmlaNum",f:parse_BrtFmlaNum},10:{n:"BrtFmlaBool",f:parse_BrtFmlaBool},11:{n:"BrtFmlaError",f:parse_BrtFmlaError},16:{n:"BrtFRTArchID$",f:parse_BrtFRTArchID$},19:{n:"BrtSSTItem",f:parse_RichStr},20:{n:"BrtPCDIMissing",f:parsenoop},21:{n:"BrtPCDINumber",f:parsenoop},22:{n:"BrtPCDIBoolean",f:parsenoop},23:{n:"BrtPCDIError",f:parsenoop},24:{n:"BrtPCDIString",f:parsenoop},25:{n:"BrtPCDIDatetime",f:parsenoop},26:{n:"BrtPCDIIndex",f:parsenoop},27:{n:"BrtPCDIAMissing",f:parsenoop},28:{n:"BrtPCDIANumber",f:parsenoop},29:{n:"BrtPCDIABoolean",f:parsenoop},30:{n:"BrtPCDIAError",f:parsenoop},31:{n:"BrtPCDIAString",f:parsenoop},32:{n:"BrtPCDIADatetime",f:parsenoop},33:{n:"BrtPCRRecord",f:parsenoop},34:{n:"BrtPCRRecordDt",f:parsenoop},35:{n:"BrtFRTBegin",f:parsenoop},36:{n:"BrtFRTEnd",f:parsenoop},37:{n:"BrtACBegin",f:parsenoop},38:{n:"BrtACEnd",f:parsenoop},39:{n:"BrtName",f:parsenoop},40:{n:"BrtIndexRowBlock",f:parsenoop},42:{n:"BrtIndexBlock",f:parsenoop},43:{n:"BrtFont",f:parse_BrtFont},44:{n:"BrtFmt",f:parse_BrtFmt},45:{n:"BrtFill",f:parsenoop},46:{n:"BrtBorder",f:parsenoop},47:{n:"BrtXF",f:parse_BrtXF},48:{n:"BrtStyle",f:parsenoop},49:{n:"BrtCellMeta",f:parsenoop},50:{n:"BrtValueMeta",f:parsenoop},51:{n:"BrtMdb",f:parsenoop},52:{n:"BrtBeginFmd",f:parsenoop},53:{n:"BrtEndFmd",f:parsenoop},54:{n:"BrtBeginMdx",f:parsenoop},55:{n:"BrtEndMdx",f:parsenoop},56:{n:"BrtBeginMdxTuple",f:parsenoop},57:{n:"BrtEndMdxTuple",f:parsenoop},58:{n:"BrtMdxMbrIstr",f:parsenoop},59:{n:"BrtStr",f:parsenoop},60:{n:"BrtColInfo",f:parsenoop},62:{n:"BrtCellRString",f:parsenoop},63:{n:"BrtCalcChainItem$",f:parse_BrtCalcChainItem$},64:{n:"BrtDVal",f:parsenoop},65:{n:"BrtSxvcellNum",f:parsenoop},66:{n:"BrtSxvcellStr",f:parsenoop},67:{n:"BrtSxvcellBool",f:parsenoop},68:{n:"BrtSxvcellErr",f:parsenoop},69:{n:"BrtSxvcellDate",f:parsenoop},70:{n:"BrtSxvcellNil",f:parsenoop},128:{n:"BrtFileVersion",f:parsenoop},129:{n:"BrtBeginSheet",f:parsenoop},130:{n:"BrtEndSheet",f:parsenoop},131:{n:"BrtBeginBook",f:parsenoop,p:0},132:{n:"BrtEndBook",f:parsenoop},133:{n:"BrtBeginWsViews",f:parsenoop},134:{n:"BrtEndWsViews",f:parsenoop},135:{n:"BrtBeginBookViews",f:parsenoop},136:{n:"BrtEndBookViews",f:parsenoop},137:{n:"BrtBeginWsView",f:parsenoop},138:{n:"BrtEndWsView",f:parsenoop},139:{n:"BrtBeginCsViews",f:parsenoop},140:{n:"BrtEndCsViews",f:parsenoop},141:{n:"BrtBeginCsView",f:parsenoop},142:{n:"BrtEndCsView",f:parsenoop},143:{n:"BrtBeginBundleShs",f:parsenoop},144:{n:"BrtEndBundleShs",f:parsenoop},145:{n:"BrtBeginSheetData",f:parsenoop},146:{n:"BrtEndSheetData",f:parsenoop},147:{n:"BrtWsProp",f:parse_BrtWsProp},148:{n:"BrtWsDim",f:parse_BrtWsDim,p:16},151:{n:"BrtPane",f:parsenoop},152:{n:"BrtSel",f:parsenoop},153:{n:"BrtWbProp",f:parse_BrtWbProp},154:{n:"BrtWbFactoid",f:parsenoop},155:{n:"BrtFileRecover",f:parsenoop},156:{n:"BrtBundleSh",f:parse_BrtBundleSh},157:{n:"BrtCalcProp",f:parsenoop},158:{n:"BrtBookView",f:parsenoop},159:{n:"BrtBeginSst",f:parse_BrtBeginSst},160:{n:"BrtEndSst",f:parsenoop},161:{n:"BrtBeginAFilter",f:parsenoop},162:{n:"BrtEndAFilter",f:parsenoop},163:{n:"BrtBeginFilterColumn",f:parsenoop},164:{n:"BrtEndFilterColumn",f:parsenoop},165:{n:"BrtBeginFilters",f:parsenoop},166:{n:"BrtEndFilters",f:parsenoop},167:{n:"BrtFilter",f:parsenoop},168:{n:"BrtColorFilter",f:parsenoop},169:{n:"BrtIconFilter",f:parsenoop},170:{n:"BrtTop10Filter",f:parsenoop},171:{n:"BrtDynamicFilter",f:parsenoop},172:{n:"BrtBeginCustomFilters",f:parsenoop},173:{n:"BrtEndCustomFilters",f:parsenoop},174:{n:"BrtCustomFilter",f:parsenoop},175:{n:"BrtAFilterDateGroupItem",f:parsenoop},176:{n:"BrtMergeCell",f:parse_BrtMergeCell},177:{n:"BrtBeginMergeCells",f:parsenoop},178:{n:"BrtEndMergeCells",f:parsenoop},179:{n:"BrtBeginPivotCacheDef",f:parsenoop},180:{n:"BrtEndPivotCacheDef",f:parsenoop},181:{n:"BrtBeginPCDFields",f:parsenoop},182:{n:"BrtEndPCDFields",f:parsenoop},183:{n:"BrtBeginPCDField",f:parsenoop},184:{n:"BrtEndPCDField",f:parsenoop},185:{n:"BrtBeginPCDSource",f:parsenoop},186:{n:"BrtEndPCDSource",f:parsenoop},187:{n:"BrtBeginPCDSRange",f:parsenoop},188:{n:"BrtEndPCDSRange",f:parsenoop},189:{n:"BrtBeginPCDFAtbl",f:parsenoop},190:{n:"BrtEndPCDFAtbl",f:parsenoop},191:{n:"BrtBeginPCDIRun",f:parsenoop},192:{n:"BrtEndPCDIRun",f:parsenoop},193:{n:"BrtBeginPivotCacheRecords",f:parsenoop},194:{n:"BrtEndPivotCacheRecords",f:parsenoop},195:{n:"BrtBeginPCDHierarchies",f:parsenoop},196:{n:"BrtEndPCDHierarchies",f:parsenoop},197:{n:"BrtBeginPCDHierarchy",f:parsenoop},198:{n:"BrtEndPCDHierarchy",f:parsenoop},199:{n:"BrtBeginPCDHFieldsUsage",f:parsenoop},200:{n:"BrtEndPCDHFieldsUsage",f:parsenoop},201:{n:"BrtBeginExtConnection",f:parsenoop},202:{n:"BrtEndExtConnection",f:parsenoop},203:{n:"BrtBeginECDbProps",f:parsenoop},204:{n:"BrtEndECDbProps",f:parsenoop},205:{n:"BrtBeginECOlapProps",f:parsenoop},206:{n:"BrtEndECOlapProps",f:parsenoop},207:{n:"BrtBeginPCDSConsol",f:parsenoop},208:{n:"BrtEndPCDSConsol",f:parsenoop},209:{n:"BrtBeginPCDSCPages",f:parsenoop},210:{n:"BrtEndPCDSCPages",f:parsenoop},211:{n:"BrtBeginPCDSCPage",f:parsenoop},212:{n:"BrtEndPCDSCPage",f:parsenoop},213:{n:"BrtBeginPCDSCPItem",f:parsenoop},214:{n:"BrtEndPCDSCPItem",f:parsenoop},215:{n:"BrtBeginPCDSCSets",f:parsenoop},216:{n:"BrtEndPCDSCSets",f:parsenoop},217:{n:"BrtBeginPCDSCSet",f:parsenoop},218:{n:"BrtEndPCDSCSet",f:parsenoop},219:{n:"BrtBeginPCDFGroup",f:parsenoop},220:{n:"BrtEndPCDFGroup",f:parsenoop},221:{n:"BrtBeginPCDFGItems",f:parsenoop},222:{n:"BrtEndPCDFGItems",f:parsenoop},223:{n:"BrtBeginPCDFGRange",f:parsenoop},224:{n:"BrtEndPCDFGRange",f:parsenoop},225:{n:"BrtBeginPCDFGDiscrete",f:parsenoop},226:{n:"BrtEndPCDFGDiscrete",f:parsenoop},227:{n:"BrtBeginPCDSDTupleCache",f:parsenoop},228:{n:"BrtEndPCDSDTupleCache",f:parsenoop},229:{n:"BrtBeginPCDSDTCEntries",f:parsenoop},230:{n:"BrtEndPCDSDTCEntries",f:parsenoop},231:{n:"BrtBeginPCDSDTCEMembers",f:parsenoop},232:{n:"BrtEndPCDSDTCEMembers",f:parsenoop},233:{n:"BrtBeginPCDSDTCEMember",f:parsenoop},234:{n:"BrtEndPCDSDTCEMember",f:parsenoop},235:{n:"BrtBeginPCDSDTCQueries",f:parsenoop},236:{n:"BrtEndPCDSDTCQueries",f:parsenoop},237:{n:"BrtBeginPCDSDTCQuery",f:parsenoop},238:{n:"BrtEndPCDSDTCQuery",f:parsenoop},239:{n:"BrtBeginPCDSDTCSets",f:parsenoop},240:{n:"BrtEndPCDSDTCSets",f:parsenoop},241:{n:"BrtBeginPCDSDTCSet",f:parsenoop},242:{n:"BrtEndPCDSDTCSet",f:parsenoop},243:{n:"BrtBeginPCDCalcItems",f:parsenoop},244:{n:"BrtEndPCDCalcItems",f:parsenoop},245:{n:"BrtBeginPCDCalcItem",f:parsenoop},246:{n:"BrtEndPCDCalcItem",f:parsenoop},247:{n:"BrtBeginPRule",f:parsenoop},248:{n:"BrtEndPRule",f:parsenoop},249:{n:"BrtBeginPRFilters",f:parsenoop},250:{n:"BrtEndPRFilters",f:parsenoop},251:{n:"BrtBeginPRFilter",f:parsenoop},252:{n:"BrtEndPRFilter",f:parsenoop},253:{n:"BrtBeginPNames",f:parsenoop},254:{n:"BrtEndPNames",f:parsenoop},255:{n:"BrtBeginPName",f:parsenoop},256:{n:"BrtEndPName",f:parsenoop},257:{n:"BrtBeginPNPairs",f:parsenoop},258:{n:"BrtEndPNPairs",f:parsenoop},259:{n:"BrtBeginPNPair",f:parsenoop},260:{n:"BrtEndPNPair",f:parsenoop},261:{n:"BrtBeginECWebProps",f:parsenoop},262:{n:"BrtEndECWebProps",f:parsenoop},263:{n:"BrtBeginEcWpTables",f:parsenoop},264:{n:"BrtEndECWPTables",f:parsenoop},265:{n:"BrtBeginECParams",f:parsenoop},266:{n:"BrtEndECParams",f:parsenoop},267:{n:"BrtBeginECParam",f:parsenoop},268:{n:"BrtEndECParam",f:parsenoop},269:{n:"BrtBeginPCDKPIs",f:parsenoop},270:{n:"BrtEndPCDKPIs",f:parsenoop},271:{n:"BrtBeginPCDKPI",f:parsenoop},272:{n:"BrtEndPCDKPI",f:parsenoop},273:{n:"BrtBeginDims",f:parsenoop},274:{n:"BrtEndDims",f:parsenoop},275:{n:"BrtBeginDim",f:parsenoop},276:{n:"BrtEndDim",f:parsenoop},277:{n:"BrtIndexPartEnd",f:parsenoop},278:{n:"BrtBeginStyleSheet",f:parsenoop},279:{n:"BrtEndStyleSheet",f:parsenoop},280:{n:"BrtBeginSXView",f:parsenoop},281:{n:"BrtEndSXVI",f:parsenoop},282:{n:"BrtBeginSXVI",f:parsenoop},283:{n:"BrtBeginSXVIs",f:parsenoop},284:{n:"BrtEndSXVIs",f:parsenoop},285:{n:"BrtBeginSXVD",f:parsenoop},286:{n:"BrtEndSXVD",f:parsenoop},287:{n:"BrtBeginSXVDs",f:parsenoop},288:{n:"BrtEndSXVDs",f:parsenoop},289:{n:"BrtBeginSXPI",f:parsenoop},290:{n:"BrtEndSXPI",f:parsenoop},291:{n:"BrtBeginSXPIs",f:parsenoop},292:{n:"BrtEndSXPIs",f:parsenoop},293:{n:"BrtBeginSXDI",f:parsenoop},294:{n:"BrtEndSXDI",f:parsenoop},295:{n:"BrtBeginSXDIs",f:parsenoop},296:{n:"BrtEndSXDIs",f:parsenoop},297:{n:"BrtBeginSXLI",f:parsenoop},298:{n:"BrtEndSXLI",f:parsenoop},299:{n:"BrtBeginSXLIRws",f:parsenoop},300:{n:"BrtEndSXLIRws",f:parsenoop},301:{n:"BrtBeginSXLICols",f:parsenoop},302:{n:"BrtEndSXLICols",f:parsenoop},303:{n:"BrtBeginSXFormat",f:parsenoop},304:{n:"BrtEndSXFormat",f:parsenoop},305:{n:"BrtBeginSXFormats",f:parsenoop},306:{n:"BrtEndSxFormats",f:parsenoop},307:{n:"BrtBeginSxSelect",f:parsenoop},308:{n:"BrtEndSxSelect",f:parsenoop},309:{n:"BrtBeginISXVDRws",f:parsenoop},310:{n:"BrtEndISXVDRws",f:parsenoop},311:{n:"BrtBeginISXVDCols",f:parsenoop},312:{n:"BrtEndISXVDCols",f:parsenoop},313:{n:"BrtEndSXLocation",f:parsenoop},314:{n:"BrtBeginSXLocation",f:parsenoop},315:{n:"BrtEndSXView",f:parsenoop},316:{n:"BrtBeginSXTHs",f:parsenoop},317:{n:"BrtEndSXTHs",f:parsenoop},318:{n:"BrtBeginSXTH",f:parsenoop},319:{n:"BrtEndSXTH",f:parsenoop},320:{n:"BrtBeginISXTHRws",f:parsenoop},321:{n:"BrtEndISXTHRws",f:parsenoop},322:{n:"BrtBeginISXTHCols",f:parsenoop},323:{n:"BrtEndISXTHCols",f:parsenoop},324:{n:"BrtBeginSXTDMPS",f:parsenoop},325:{n:"BrtEndSXTDMPs",f:parsenoop},326:{n:"BrtBeginSXTDMP",f:parsenoop},327:{n:"BrtEndSXTDMP",f:parsenoop},328:{n:"BrtBeginSXTHItems",f:parsenoop},329:{n:"BrtEndSXTHItems",f:parsenoop},330:{n:"BrtBeginSXTHItem",f:parsenoop},331:{n:"BrtEndSXTHItem",f:parsenoop},332:{n:"BrtBeginMetadata",f:parsenoop},333:{n:"BrtEndMetadata",f:parsenoop},334:{n:"BrtBeginEsmdtinfo",f:parsenoop},335:{n:"BrtMdtinfo",f:parsenoop},336:{n:"BrtEndEsmdtinfo",f:parsenoop},337:{n:"BrtBeginEsmdb",f:parsenoop},338:{n:"BrtEndEsmdb",f:parsenoop},339:{n:"BrtBeginEsfmd",f:parsenoop},340:{n:"BrtEndEsfmd",f:parsenoop},341:{n:"BrtBeginSingleCells",f:parsenoop},342:{n:"BrtEndSingleCells",f:parsenoop},343:{n:"BrtBeginList",f:parsenoop},344:{n:"BrtEndList",f:parsenoop},345:{n:"BrtBeginListCols",f:parsenoop},346:{n:"BrtEndListCols",f:parsenoop},347:{n:"BrtBeginListCol",f:parsenoop},348:{n:"BrtEndListCol",f:parsenoop},349:{n:"BrtBeginListXmlCPr",f:parsenoop},350:{n:"BrtEndListXmlCPr",f:parsenoop},351:{n:"BrtListCCFmla",f:parsenoop},352:{n:"BrtListTrFmla",f:parsenoop},353:{n:"BrtBeginExternals",f:parsenoop},354:{n:"BrtEndExternals",f:parsenoop},355:{n:"BrtSupBookSrc",f:parsenoop},357:{n:"BrtSupSelf",f:parsenoop},358:{n:"BrtSupSame",f:parsenoop},359:{n:"BrtSupTabs",f:parsenoop},360:{n:"BrtBeginSupBook",f:parsenoop},361:{n:"BrtPlaceholderName",f:parsenoop},362:{n:"BrtExternSheet",f:parsenoop},363:{n:"BrtExternTableStart",f:parsenoop},364:{n:"BrtExternTableEnd",f:parsenoop},366:{n:"BrtExternRowHdr",f:parsenoop},367:{n:"BrtExternCellBlank",f:parsenoop},368:{n:"BrtExternCellReal",f:parsenoop},369:{n:"BrtExternCellBool",f:parsenoop},370:{n:"BrtExternCellError",f:parsenoop},371:{n:"BrtExternCellString",f:parsenoop},372:{n:"BrtBeginEsmdx",f:parsenoop},373:{n:"BrtEndEsmdx",f:parsenoop},374:{n:"BrtBeginMdxSet",f:parsenoop},375:{n:"BrtEndMdxSet",f:parsenoop},376:{n:"BrtBeginMdxMbrProp",f:parsenoop},377:{n:"BrtEndMdxMbrProp",f:parsenoop},378:{n:"BrtBeginMdxKPI",f:parsenoop},379:{n:"BrtEndMdxKPI",f:parsenoop},380:{n:"BrtBeginEsstr",f:parsenoop},381:{n:"BrtEndEsstr",f:parsenoop},382:{n:"BrtBeginPRFItem",f:parsenoop},383:{n:"BrtEndPRFItem",f:parsenoop},384:{n:"BrtBeginPivotCacheIDs",f:parsenoop},385:{n:"BrtEndPivotCacheIDs",f:parsenoop},386:{n:"BrtBeginPivotCacheID",f:parsenoop},387:{n:"BrtEndPivotCacheID",f:parsenoop},388:{n:"BrtBeginISXVIs",f:parsenoop},389:{n:"BrtEndISXVIs",f:parsenoop},390:{n:"BrtBeginColInfos",f:parsenoop},391:{n:"BrtEndColInfos",f:parsenoop},392:{n:"BrtBeginRwBrk",f:parsenoop},393:{n:"BrtEndRwBrk",f:parsenoop},394:{n:"BrtBeginColBrk",f:parsenoop},395:{n:"BrtEndColBrk",f:parsenoop},396:{n:"BrtBrk",f:parsenoop},397:{n:"BrtUserBookView",f:parsenoop},398:{n:"BrtInfo",f:parsenoop},399:{n:"BrtCUsr",f:parsenoop},400:{n:"BrtUsr",f:parsenoop},401:{n:"BrtBeginUsers",f:parsenoop},403:{n:"BrtEOF",f:parsenoop},404:{n:"BrtUCR",f:parsenoop},405:{n:"BrtRRInsDel",f:parsenoop},406:{n:"BrtRREndInsDel",f:parsenoop},407:{n:"BrtRRMove",f:parsenoop},408:{n:"BrtRREndMove",f:parsenoop},409:{n:"BrtRRChgCell",f:parsenoop},410:{n:"BrtRREndChgCell",f:parsenoop},411:{n:"BrtRRHeader",f:parsenoop},412:{n:"BrtRRUserView",f:parsenoop},413:{n:"BrtRRRenSheet",f:parsenoop},414:{n:"BrtRRInsertSh",f:parsenoop},415:{n:"BrtRRDefName",f:parsenoop},416:{n:"BrtRRNote",f:parsenoop},417:{n:"BrtRRConflict",f:parsenoop},418:{n:"BrtRRTQSIF",f:parsenoop},419:{n:"BrtRRFormat",f:parsenoop},420:{n:"BrtRREndFormat",f:parsenoop},421:{n:"BrtRRAutoFmt",f:parsenoop},422:{n:"BrtBeginUserShViews",f:parsenoop},423:{n:"BrtBeginUserShView",f:parsenoop},424:{n:"BrtEndUserShView",f:parsenoop},425:{n:"BrtEndUserShViews",f:parsenoop},426:{n:"BrtArrFmla",f:parsenoop},427:{n:"BrtShrFmla",f:parsenoop},428:{n:"BrtTable",f:parsenoop},429:{n:"BrtBeginExtConnections",f:parsenoop},430:{n:"BrtEndExtConnections",f:parsenoop},431:{n:"BrtBeginPCDCalcMems",f:parsenoop},432:{n:"BrtEndPCDCalcMems",f:parsenoop},433:{n:"BrtBeginPCDCalcMem",f:parsenoop},434:{n:"BrtEndPCDCalcMem",f:parsenoop},435:{n:"BrtBeginPCDHGLevels",f:parsenoop},436:{n:"BrtEndPCDHGLevels",f:parsenoop},437:{n:"BrtBeginPCDHGLevel",f:parsenoop},438:{n:"BrtEndPCDHGLevel",f:parsenoop},439:{n:"BrtBeginPCDHGLGroups",f:parsenoop},440:{n:"BrtEndPCDHGLGroups",f:parsenoop},441:{n:"BrtBeginPCDHGLGroup",f:parsenoop},442:{n:"BrtEndPCDHGLGroup",f:parsenoop},443:{n:"BrtBeginPCDHGLGMembers",f:parsenoop},444:{n:"BrtEndPCDHGLGMembers",f:parsenoop},445:{n:"BrtBeginPCDHGLGMember",f:parsenoop},446:{n:"BrtEndPCDHGLGMember",f:parsenoop},447:{n:"BrtBeginQSI",f:parsenoop},448:{n:"BrtEndQSI",f:parsenoop},449:{n:"BrtBeginQSIR",f:parsenoop},450:{n:"BrtEndQSIR",f:parsenoop},451:{n:"BrtBeginDeletedNames",f:parsenoop},452:{n:"BrtEndDeletedNames",f:parsenoop},453:{n:"BrtBeginDeletedName",f:parsenoop},454:{n:"BrtEndDeletedName",f:parsenoop},455:{n:"BrtBeginQSIFs",f:parsenoop},456:{n:"BrtEndQSIFs",f:parsenoop},457:{n:"BrtBeginQSIF",f:parsenoop},458:{n:"BrtEndQSIF",f:parsenoop},459:{n:"BrtBeginAutoSortScope",f:parsenoop},460:{n:"BrtEndAutoSortScope",f:parsenoop},461:{n:"BrtBeginConditionalFormatting",f:parsenoop},462:{n:"BrtEndConditionalFormatting",f:parsenoop},463:{n:"BrtBeginCFRule",f:parsenoop},464:{n:"BrtEndCFRule",f:parsenoop},465:{n:"BrtBeginIconSet",f:parsenoop},466:{n:"BrtEndIconSet",f:parsenoop},467:{n:"BrtBeginDatabar",f:parsenoop},468:{n:"BrtEndDatabar",f:parsenoop},469:{n:"BrtBeginColorScale",f:parsenoop},470:{n:"BrtEndColorScale",f:parsenoop},471:{n:"BrtCFVO",f:parsenoop},472:{n:"BrtExternValueMeta",f:parsenoop},473:{n:"BrtBeginColorPalette",f:parsenoop},474:{n:"BrtEndColorPalette",f:parsenoop},475:{n:"BrtIndexedColor",f:parsenoop},476:{n:"BrtMargins",f:parsenoop},477:{n:"BrtPrintOptions",f:parsenoop},478:{n:"BrtPageSetup",f:parsenoop},479:{n:"BrtBeginHeaderFooter",f:parsenoop},480:{n:"BrtEndHeaderFooter",f:parsenoop},481:{n:"BrtBeginSXCrtFormat",f:parsenoop},482:{n:"BrtEndSXCrtFormat",f:parsenoop},483:{n:"BrtBeginSXCrtFormats",f:parsenoop},484:{n:"BrtEndSXCrtFormats",f:parsenoop},485:{n:"BrtWsFmtInfo",f:parsenoop},486:{n:"BrtBeginMgs",f:parsenoop},487:{n:"BrtEndMGs",f:parsenoop},488:{n:"BrtBeginMGMaps",f:parsenoop},489:{n:"BrtEndMGMaps",f:parsenoop},490:{n:"BrtBeginMG",f:parsenoop},491:{n:"BrtEndMG",f:parsenoop},492:{n:"BrtBeginMap",f:parsenoop},493:{n:"BrtEndMap",f:parsenoop},494:{n:"BrtHLink",f:parse_BrtHLink},495:{n:"BrtBeginDCon",f:parsenoop},496:{n:"BrtEndDCon",f:parsenoop},497:{n:"BrtBeginDRefs",f:parsenoop},498:{n:"BrtEndDRefs",f:parsenoop},499:{n:"BrtDRef",f:parsenoop},500:{n:"BrtBeginScenMan",f:parsenoop},501:{n:"BrtEndScenMan",f:parsenoop},502:{n:"BrtBeginSct",f:parsenoop},503:{n:"BrtEndSct",f:parsenoop},504:{n:"BrtSlc",f:parsenoop},505:{n:"BrtBeginDXFs",f:parsenoop},506:{n:"BrtEndDXFs",f:parsenoop},507:{n:"BrtDXF",f:parsenoop},508:{n:"BrtBeginTableStyles",f:parsenoop},509:{n:"BrtEndTableStyles",f:parsenoop},510:{n:"BrtBeginTableStyle",f:parsenoop},511:{n:"BrtEndTableStyle",f:parsenoop},512:{n:"BrtTableStyleElement",f:parsenoop},513:{n:"BrtTableStyleClient",f:parsenoop},514:{n:"BrtBeginVolDeps",f:parsenoop},515:{n:"BrtEndVolDeps",f:parsenoop},516:{n:"BrtBeginVolType",f:parsenoop},517:{n:"BrtEndVolType",f:parsenoop},518:{n:"BrtBeginVolMain",f:parsenoop},519:{n:"BrtEndVolMain",f:parsenoop},520:{n:"BrtBeginVolTopic",f:parsenoop},521:{n:"BrtEndVolTopic",f:parsenoop},522:{n:"BrtVolSubtopic",f:parsenoop},523:{n:"BrtVolRef",f:parsenoop},524:{n:"BrtVolNum",f:parsenoop},525:{n:"BrtVolErr",f:parsenoop},526:{n:"BrtVolStr",f:parsenoop},527:{n:"BrtVolBool",f:parsenoop},528:{n:"BrtBeginCalcChain$",f:parsenoop},529:{n:"BrtEndCalcChain$",f:parsenoop},530:{n:"BrtBeginSortState",f:parsenoop},531:{n:"BrtEndSortState",f:parsenoop},532:{n:"BrtBeginSortCond",f:parsenoop},533:{n:"BrtEndSortCond",f:parsenoop},534:{n:"BrtBookProtection",f:parsenoop},535:{n:"BrtSheetProtection",f:parsenoop},536:{n:"BrtRangeProtection",f:parsenoop},537:{n:"BrtPhoneticInfo",f:parsenoop},538:{n:"BrtBeginECTxtWiz",f:parsenoop},539:{n:"BrtEndECTxtWiz",f:parsenoop},540:{n:"BrtBeginECTWFldInfoLst",f:parsenoop},541:{n:"BrtEndECTWFldInfoLst",f:parsenoop},542:{n:"BrtBeginECTwFldInfo",f:parsenoop},548:{n:"BrtFileSharing",f:parsenoop},549:{n:"BrtOleSize",f:parsenoop},550:{n:"BrtDrawing",f:parsenoop},551:{n:"BrtLegacyDrawing",f:parsenoop},552:{n:"BrtLegacyDrawingHF",f:parsenoop},553:{n:"BrtWebOpt",f:parsenoop},554:{n:"BrtBeginWebPubItems",f:parsenoop},555:{n:"BrtEndWebPubItems",f:parsenoop},556:{n:"BrtBeginWebPubItem",f:parsenoop},557:{n:"BrtEndWebPubItem",f:parsenoop},558:{n:"BrtBeginSXCondFmt",f:parsenoop},559:{n:"BrtEndSXCondFmt",f:parsenoop},560:{n:"BrtBeginSXCondFmts",f:parsenoop},561:{n:"BrtEndSXCondFmts",f:parsenoop},562:{n:"BrtBkHim",f:parsenoop},564:{n:"BrtColor",f:parsenoop},565:{n:"BrtBeginIndexedColors",f:parsenoop},566:{n:"BrtEndIndexedColors",f:parsenoop},569:{n:"BrtBeginMRUColors",f:parsenoop},570:{n:"BrtEndMRUColors",f:parsenoop},572:{n:"BrtMRUColor",f:parsenoop},573:{n:"BrtBeginDVals",f:parsenoop},574:{n:"BrtEndDVals",f:parsenoop},577:{n:"BrtSupNameStart",f:parsenoop},578:{n:"BrtSupNameValueStart",f:parsenoop},579:{n:"BrtSupNameValueEnd",f:parsenoop},580:{n:"BrtSupNameNum",f:parsenoop},581:{n:"BrtSupNameErr",f:parsenoop},582:{n:"BrtSupNameSt",f:parsenoop},583:{n:"BrtSupNameNil",f:parsenoop},584:{n:"BrtSupNameBool",f:parsenoop},585:{n:"BrtSupNameFmla",f:parsenoop},586:{n:"BrtSupNameBits",f:parsenoop},587:{n:"BrtSupNameEnd",f:parsenoop},588:{n:"BrtEndSupBook",f:parsenoop},589:{n:"BrtCellSmartTagProperty",f:parsenoop},590:{n:"BrtBeginCellSmartTag",f:parsenoop},591:{n:"BrtEndCellSmartTag",f:parsenoop},592:{n:"BrtBeginCellSmartTags",f:parsenoop},593:{n:"BrtEndCellSmartTags",f:parsenoop},594:{n:"BrtBeginSmartTags",f:parsenoop},595:{n:"BrtEndSmartTags",f:parsenoop},596:{n:"BrtSmartTagType",f:parsenoop},597:{n:"BrtBeginSmartTagTypes",f:parsenoop},598:{n:"BrtEndSmartTagTypes",f:parsenoop},599:{n:"BrtBeginSXFilters",f:parsenoop},600:{n:"BrtEndSXFilters",f:parsenoop},601:{n:"BrtBeginSXFILTER",f:parsenoop},602:{n:"BrtEndSXFilter",f:parsenoop},603:{n:"BrtBeginFills",f:parsenoop},604:{n:"BrtEndFills",f:parsenoop},605:{n:"BrtBeginCellWatches",f:parsenoop},606:{n:"BrtEndCellWatches",f:parsenoop},607:{n:"BrtCellWatch",f:parsenoop},608:{n:"BrtBeginCRErrs",f:parsenoop},609:{n:"BrtEndCRErrs",f:parsenoop},610:{n:"BrtCrashRecErr",f:parsenoop},611:{n:"BrtBeginFonts",f:parsenoop},612:{n:"BrtEndFonts",f:parsenoop},613:{n:"BrtBeginBorders",f:parsenoop},614:{n:"BrtEndBorders",f:parsenoop},615:{n:"BrtBeginFmts",f:parsenoop},616:{n:"BrtEndFmts",f:parsenoop},617:{n:"BrtBeginCellXFs",f:parsenoop},618:{n:"BrtEndCellXFs",f:parsenoop},619:{n:"BrtBeginStyles",f:parsenoop},620:{n:"BrtEndStyles",f:parsenoop},625:{n:"BrtBigName",f:parsenoop},626:{n:"BrtBeginCellStyleXFs",f:parsenoop},627:{n:"BrtEndCellStyleXFs",f:parsenoop},628:{n:"BrtBeginComments",f:parsenoop},629:{n:"BrtEndComments",f:parsenoop},630:{n:"BrtBeginCommentAuthors",f:parsenoop},631:{n:"BrtEndCommentAuthors",f:parsenoop},632:{n:"BrtCommentAuthor",f:parse_BrtCommentAuthor},633:{n:"BrtBeginCommentList",f:parsenoop},634:{n:"BrtEndCommentList",f:parsenoop},635:{n:"BrtBeginComment",f:parse_BrtBeginComment},636:{n:"BrtEndComment",f:parsenoop},637:{n:"BrtCommentText",f:parse_BrtCommentText},638:{n:"BrtBeginOleObjects",f:parsenoop},639:{n:"BrtOleObject",f:parsenoop},640:{n:"BrtEndOleObjects",f:parsenoop},641:{n:"BrtBeginSxrules",f:parsenoop},642:{n:"BrtEndSxRules",f:parsenoop},643:{n:"BrtBeginActiveXControls",f:parsenoop},644:{n:"BrtActiveX",f:parsenoop},645:{n:"BrtEndActiveXControls",f:parsenoop},646:{n:"BrtBeginPCDSDTCEMembersSortBy",f:parsenoop},648:{n:"BrtBeginCellIgnoreECs",f:parsenoop},649:{n:"BrtCellIgnoreEC",f:parsenoop},650:{n:"BrtEndCellIgnoreECs",f:parsenoop},651:{n:"BrtCsProp",f:parsenoop},652:{n:"BrtCsPageSetup",f:parsenoop},653:{n:"BrtBeginUserCsViews",f:parsenoop},654:{n:"BrtEndUserCsViews",f:parsenoop},655:{n:"BrtBeginUserCsView",f:parsenoop},656:{n:"BrtEndUserCsView",f:parsenoop},657:{n:"BrtBeginPcdSFCIEntries",f:parsenoop},658:{n:"BrtEndPCDSFCIEntries",f:parsenoop},659:{n:"BrtPCDSFCIEntry",f:parsenoop},660:{n:"BrtBeginListParts",f:parsenoop},661:{n:"BrtListPart",f:parsenoop},662:{n:"BrtEndListParts",f:parsenoop},663:{n:"BrtSheetCalcProp",f:parsenoop},664:{n:"BrtBeginFnGroup",f:parsenoop},665:{n:"BrtFnGroup",f:parsenoop},666:{n:"BrtEndFnGroup",f:parsenoop},667:{n:"BrtSupAddin",f:parsenoop},668:{n:"BrtSXTDMPOrder",f:parsenoop},669:{n:"BrtCsProtection",f:parsenoop},671:{n:"BrtBeginWsSortMap",f:parsenoop},672:{n:"BrtEndWsSortMap",f:parsenoop},673:{n:"BrtBeginRRSort",f:parsenoop},674:{n:"BrtEndRRSort",f:parsenoop},675:{n:"BrtRRSortItem",f:parsenoop},676:{n:"BrtFileSharingIso",f:parsenoop},677:{n:"BrtBookProtectionIso",f:parsenoop},678:{n:"BrtSheetProtectionIso",f:parsenoop},679:{n:"BrtCsProtectionIso",f:parsenoop},680:{n:"BrtRangeProtectionIso",f:parsenoop},1024:{n:"BrtRwDescent",f:parsenoop},1025:{n:"BrtKnownFonts",f:parsenoop},1026:{n:"BrtBeginSXTupleSet",f:parsenoop},1027:{n:"BrtEndSXTupleSet",f:parsenoop},1028:{n:"BrtBeginSXTupleSetHeader",f:parsenoop},1029:{n:"BrtEndSXTupleSetHeader",f:parsenoop},1030:{n:"BrtSXTupleSetHeaderItem",f:parsenoop},1031:{n:"BrtBeginSXTupleSetData",f:parsenoop},1032:{n:"BrtEndSXTupleSetData",f:parsenoop},1033:{n:"BrtBeginSXTupleSetRow",f:parsenoop},1034:{n:"BrtEndSXTupleSetRow",f:parsenoop},1035:{n:"BrtSXTupleSetRowItem",f:parsenoop},1036:{n:"BrtNameExt",f:parsenoop},1037:{n:"BrtPCDH14",f:parsenoop},1038:{n:"BrtBeginPCDCalcMem14",f:parsenoop},1039:{n:"BrtEndPCDCalcMem14",f:parsenoop},1040:{n:"BrtSXTH14",f:parsenoop},1041:{n:"BrtBeginSparklineGroup",f:parsenoop},1042:{n:"BrtEndSparklineGroup",f:parsenoop},1043:{n:"BrtSparkline",f:parsenoop},1044:{n:"BrtSXDI14",f:parsenoop},1045:{n:"BrtWsFmtInfoEx14",f:parsenoop},1046:{n:"BrtBeginConditionalFormatting14",f:parsenoop},1047:{n:"BrtEndConditionalFormatting14",f:parsenoop},1048:{n:"BrtBeginCFRule14",f:parsenoop},1049:{n:"BrtEndCFRule14",f:parsenoop},1050:{n:"BrtCFVO14",f:parsenoop},1051:{n:"BrtBeginDatabar14",f:parsenoop},1052:{n:"BrtBeginIconSet14",f:parsenoop},1053:{n:"BrtDVal14",f:parsenoop},1054:{n:"BrtBeginDVals14",f:parsenoop},1055:{n:"BrtColor14",f:parsenoop},1056:{n:"BrtBeginSparklines",f:parsenoop},1057:{n:"BrtEndSparklines",f:parsenoop},1058:{n:"BrtBeginSparklineGroups",f:parsenoop},1059:{n:"BrtEndSparklineGroups",f:parsenoop},1061:{n:"BrtSXVD14",f:parsenoop},1062:{n:"BrtBeginSxview14",f:parsenoop},1063:{n:"BrtEndSxview14",f:parsenoop},1066:{n:"BrtBeginPCD14",f:parsenoop},1067:{n:"BrtEndPCD14",f:parsenoop},1068:{n:"BrtBeginExtConn14",f:parsenoop},1069:{n:"BrtEndExtConn14",f:parsenoop},1070:{n:"BrtBeginSlicerCacheIDs",f:parsenoop},1071:{n:"BrtEndSlicerCacheIDs",f:parsenoop},1072:{n:"BrtBeginSlicerCacheID",f:parsenoop},1073:{n:"BrtEndSlicerCacheID",f:parsenoop},1075:{n:"BrtBeginSlicerCache",f:parsenoop},1076:{n:"BrtEndSlicerCache",f:parsenoop},1077:{n:"BrtBeginSlicerCacheDef",f:parsenoop},1078:{n:"BrtEndSlicerCacheDef",f:parsenoop},1079:{n:"BrtBeginSlicersEx",f:parsenoop},1080:{n:"BrtEndSlicersEx",f:parsenoop},1081:{n:"BrtBeginSlicerEx",f:parsenoop},1082:{n:"BrtEndSlicerEx",f:parsenoop},1083:{n:"BrtBeginSlicer",f:parsenoop},1084:{n:"BrtEndSlicer",f:parsenoop},1085:{n:"BrtSlicerCachePivotTables",f:parsenoop},1086:{n:"BrtBeginSlicerCacheOlapImpl",f:parsenoop},1087:{n:"BrtEndSlicerCacheOlapImpl",f:parsenoop},1088:{n:"BrtBeginSlicerCacheLevelsData",f:parsenoop},1089:{n:"BrtEndSlicerCacheLevelsData",f:parsenoop},1090:{n:"BrtBeginSlicerCacheLevelData",f:parsenoop},1091:{n:"BrtEndSlicerCacheLevelData",f:parsenoop},1092:{n:"BrtBeginSlicerCacheSiRanges",f:parsenoop},1093:{n:"BrtEndSlicerCacheSiRanges",f:parsenoop},1094:{n:"BrtBeginSlicerCacheSiRange",f:parsenoop},1095:{n:"BrtEndSlicerCacheSiRange",f:parsenoop},1096:{n:"BrtSlicerCacheOlapItem",f:parsenoop},1097:{n:"BrtBeginSlicerCacheSelections",f:parsenoop},1098:{n:"BrtSlicerCacheSelection",f:parsenoop},1099:{n:"BrtEndSlicerCacheSelections",f:parsenoop},1100:{n:"BrtBeginSlicerCacheNative",f:parsenoop},1101:{n:"BrtEndSlicerCacheNative",f:parsenoop},1102:{n:"BrtSlicerCacheNativeItem",f:parsenoop},1103:{n:"BrtRangeProtection14",f:parsenoop},1104:{n:"BrtRangeProtectionIso14",f:parsenoop},1105:{n:"BrtCellIgnoreEC14",f:parsenoop},1111:{n:"BrtList14",f:parsenoop},1112:{n:"BrtCFIcon",f:parsenoop},1113:{n:"BrtBeginSlicerCachesPivotCacheIDs",f:parsenoop},1114:{n:"BrtEndSlicerCachesPivotCacheIDs",f:parsenoop},1115:{n:"BrtBeginSlicers",f:parsenoop},1116:{n:"BrtEndSlicers",f:parsenoop},1117:{n:"BrtWbProp14",f:parsenoop},1118:{n:"BrtBeginSXEdit",f:parsenoop},1119:{n:"BrtEndSXEdit",f:parsenoop},1120:{n:"BrtBeginSXEdits",f:parsenoop},1121:{n:"BrtEndSXEdits",f:parsenoop},1122:{n:"BrtBeginSXChange",f:parsenoop},1123:{n:"BrtEndSXChange",f:parsenoop},1124:{n:"BrtBeginSXChanges",f:parsenoop},1125:{n:"BrtEndSXChanges",f:parsenoop},1126:{n:"BrtSXTupleItems",f:parsenoop},1128:{n:"BrtBeginSlicerStyle",f:parsenoop},1129:{n:"BrtEndSlicerStyle",f:parsenoop},1130:{n:"BrtSlicerStyleElement",f:parsenoop},1131:{n:"BrtBeginStyleSheetExt14",f:parsenoop},1132:{n:"BrtEndStyleSheetExt14",f:parsenoop},1133:{n:"BrtBeginSlicerCachesPivotCacheID",f:parsenoop},1134:{n:"BrtEndSlicerCachesPivotCacheID",f:parsenoop},1135:{n:"BrtBeginConditionalFormattings",f:parsenoop},1136:{n:"BrtEndConditionalFormattings",f:parsenoop},1137:{n:"BrtBeginPCDCalcMemExt",f:parsenoop},1138:{n:"BrtEndPCDCalcMemExt",f:parsenoop},1139:{n:"BrtBeginPCDCalcMemsExt",f:parsenoop},1140:{n:"BrtEndPCDCalcMemsExt",f:parsenoop},1141:{n:"BrtPCDField14",f:parsenoop},1142:{n:"BrtBeginSlicerStyles",f:parsenoop},1143:{n:"BrtEndSlicerStyles",f:parsenoop},1144:{n:"BrtBeginSlicerStyleElements",f:parsenoop},1145:{n:"BrtEndSlicerStyleElements",f:parsenoop},1146:{n:"BrtCFRuleExt",f:parsenoop},1147:{n:"BrtBeginSXCondFmt14",f:parsenoop},1148:{n:"BrtEndSXCondFmt14",f:parsenoop},1149:{n:"BrtBeginSXCondFmts14",f:parsenoop},1150:{n:"BrtEndSXCondFmts14",f:parsenoop},1152:{n:"BrtBeginSortCond14",f:parsenoop},1153:{n:"BrtEndSortCond14",f:parsenoop},1154:{n:"BrtEndDVals14",f:parsenoop},1155:{n:"BrtEndIconSet14",f:parsenoop},1156:{n:"BrtEndDatabar14",f:parsenoop},1157:{n:"BrtBeginColorScale14",f:parsenoop},1158:{n:"BrtEndColorScale14",f:parsenoop},1159:{n:"BrtBeginSxrules14",f:parsenoop},1160:{n:"BrtEndSxrules14",f:parsenoop},1161:{n:"BrtBeginPRule14",f:parsenoop},1162:{n:"BrtEndPRule14",f:parsenoop},1163:{n:"BrtBeginPRFilters14",f:parsenoop},1164:{n:"BrtEndPRFilters14",f:parsenoop},1165:{n:"BrtBeginPRFilter14",f:parsenoop},1166:{n:"BrtEndPRFilter14",f:parsenoop},1167:{n:"BrtBeginPRFItem14",f:parsenoop},1168:{n:"BrtEndPRFItem14",f:parsenoop},1169:{n:"BrtBeginCellIgnoreECs14",f:parsenoop},1170:{n:"BrtEndCellIgnoreECs14",f:parsenoop},1171:{n:"BrtDxf14",f:parsenoop},1172:{n:"BrtBeginDxF14s",f:parsenoop},1173:{n:"BrtEndDxf14s",f:parsenoop},1177:{n:"BrtFilter14",f:parsenoop},1178:{n:"BrtBeginCustomFilters14",f:parsenoop},1180:{n:"BrtCustomFilter14",f:parsenoop},1181:{n:"BrtIconFilter14",f:parsenoop},1182:{n:"BrtPivotCacheConnectionName",f:parsenoop},2048:{n:"BrtBeginDecoupledPivotCacheIDs",f:parsenoop},2049:{n:"BrtEndDecoupledPivotCacheIDs",f:parsenoop},2050:{n:"BrtDecoupledPivotCacheID",f:parsenoop},2051:{n:"BrtBeginPivotTableRefs",f:parsenoop},2052:{n:"BrtEndPivotTableRefs",f:parsenoop},2053:{n:"BrtPivotTableRef",f:parsenoop},2054:{n:"BrtSlicerCacheBookPivotTables",f:parsenoop},2055:{n:"BrtBeginSxvcells",f:parsenoop},2056:{n:"BrtEndSxvcells",f:parsenoop},2057:{n:"BrtBeginSxRow",f:parsenoop},2058:{n:"BrtEndSxRow",f:parsenoop},2060:{n:"BrtPcdCalcMem15",f:parsenoop},2067:{n:"BrtQsi15",f:parsenoop},2068:{n:"BrtBeginWebExtensions",f:parsenoop},2069:{n:"BrtEndWebExtensions",f:parsenoop},2070:{n:"BrtWebExtension",f:parsenoop},2071:{n:"BrtAbsPath15",f:parsenoop},2072:{n:"BrtBeginPivotTableUISettings",f:parsenoop},2073:{n:"BrtEndPivotTableUISettings",f:parsenoop},2075:{n:"BrtTableSlicerCacheIDs",f:parsenoop},2076:{n:"BrtTableSlicerCacheID",f:parsenoop},2077:{n:"BrtBeginTableSlicerCache",f:parsenoop},2078:{n:"BrtEndTableSlicerCache",f:parsenoop},2079:{n:"BrtSxFilter15",f:parsenoop},2080:{n:"BrtBeginTimelineCachePivotCacheIDs",f:parsenoop},2081:{n:"BrtEndTimelineCachePivotCacheIDs",f:parsenoop},2082:{n:"BrtTimelineCachePivotCacheID",f:parsenoop},2083:{n:"BrtBeginTimelineCacheIDs",f:parsenoop},2084:{n:"BrtEndTimelineCacheIDs",f:parsenoop},2085:{n:"BrtBeginTimelineCacheID",f:parsenoop},2086:{n:"BrtEndTimelineCacheID",f:parsenoop},2087:{n:"BrtBeginTimelinesEx",f:parsenoop},2088:{n:"BrtEndTimelinesEx",f:parsenoop},2089:{n:"BrtBeginTimelineEx",f:parsenoop},2090:{n:"BrtEndTimelineEx",f:parsenoop},2091:{n:"BrtWorkBookPr15",f:parsenoop},2092:{n:"BrtPCDH15",f:parsenoop},2093:{n:"BrtBeginTimelineStyle",f:parsenoop},2094:{n:"BrtEndTimelineStyle",f:parsenoop},2095:{n:"BrtTimelineStyleElement",f:parsenoop},2096:{n:"BrtBeginTimelineStylesheetExt15",f:parsenoop},2097:{n:"BrtEndTimelineStylesheetExt15",f:parsenoop},2098:{n:"BrtBeginTimelineStyles",f:parsenoop},2099:{n:"BrtEndTimelineStyles",f:parsenoop},2100:{n:"BrtBeginTimelineStyleElements",f:parsenoop},2101:{n:"BrtEndTimelineStyleElements",f:parsenoop},2102:{n:"BrtDxf15",f:parsenoop},2103:{n:"BrtBeginDxfs15",f:parsenoop},2104:{n:"brtEndDxfs15",f:parsenoop},2105:{n:"BrtSlicerCacheHideItemsWithNoData",f:parsenoop},2106:{n:"BrtBeginItemUniqueNames",f:parsenoop},2107:{n:"BrtEndItemUniqueNames",f:parsenoop},2108:{n:"BrtItemUniqueName",f:parsenoop},2109:{n:"BrtBeginExtConn15",f:parsenoop},2110:{n:"BrtEndExtConn15",f:parsenoop},2111:{n:"BrtBeginOledbPr15",f:parsenoop},2112:{n:"BrtEndOledbPr15",f:parsenoop},2113:{n:"BrtBeginDataFeedPr15",f:parsenoop},2114:{n:"BrtEndDataFeedPr15",f:parsenoop},2115:{n:"BrtTextPr15",f:parsenoop},2116:{n:"BrtRangePr15",f:parsenoop},2117:{n:"BrtDbCommand15",f:parsenoop},2118:{n:"BrtBeginDbTables15",f:parsenoop},2119:{n:"BrtEndDbTables15",f:parsenoop},2120:{n:"BrtDbTable15",f:parsenoop},2121:{n:"BrtBeginDataModel",f:parsenoop},2122:{n:"BrtEndDataModel",f:parsenoop},2123:{n:"BrtBeginModelTables",f:parsenoop},2124:{n:"BrtEndModelTables",f:parsenoop},2125:{n:"BrtModelTable",f:parsenoop},2126:{n:"BrtBeginModelRelationships",f:parsenoop},2127:{n:"BrtEndModelRelationships",f:parsenoop},2128:{n:"BrtModelRelationship",f:parsenoop},2129:{n:"BrtBeginECTxtWiz15",f:parsenoop},2130:{n:"BrtEndECTxtWiz15",f:parsenoop},2131:{n:"BrtBeginECTWFldInfoLst15",f:parsenoop},2132:{n:"BrtEndECTWFldInfoLst15",f:parsenoop},2133:{n:"BrtBeginECTWFldInfo15",f:parsenoop},2134:{n:"BrtFieldListActiveItem",f:parsenoop},2135:{n:"BrtPivotCacheIdVersion",f:parsenoop},2136:{n:"BrtSXDI15",f:parsenoop},65535:{n:"",f:parsenoop}}; +var evert_RE=evert_key(RecordEnum,"n");function parse_ods(zip,opts){if(typeof module!=="undefined"&&typeof require!=="undefined"&&typeof ODS==="undefined")ODS=require("./dist/od"+"s");if(typeof ODS==="undefined"||!ODS.parse_ods)throw new Error("Unsupported ODS");return ODS.parse_ods(zip,opts)}function fix_opts_func(defaults){return function fix_opts(opts){for(var i=0;i!=defaults.length;++i){var d=defaults[i];if(opts[d[0]]===undefined)opts[d[0]]=d[1];if(d[2]==="n")opts[d[0]]=Number(opts[d[0]])}}}var fix_read_opts=fix_opts_func([["cellNF",false],["cellHTML",true],["cellFormula",true],["cellStyles",false],["cellDates",false],["sheetStubs",false],["sheetRows",0,"n"],["bookDeps",false],["bookSheets",false],["bookProps",false],["bookFiles",false],["bookVBA",false],["WTF",false]]);var fix_write_opts=fix_opts_func([["cellDates",false],["bookSST",false],["bookType","xlsx"],["WTF",false]]);function safe_parse_wbrels(wbrels,sheets){if(!wbrels)return 0;try{wbrels=sheets.map(function pwbr(w){return[w.name,wbrels["!id"][w.id].Target]})}catch(e){return null}return!wbrels||wbrels.length===0?null:wbrels}function safe_parse_ws(zip,path,relsPath,sheet,sheetRels,sheets,opts){try{sheetRels[sheet]=parse_rels(getzipdata(zip,relsPath,true),path);sheets[sheet]=parse_ws(getzipdata(zip,path),path,opts,sheetRels[sheet])}catch(e){if(opts.WTF)throw e}}var nodirs=function nodirs(x){return x.substr(-1)!="/"};function parse_zip(zip,opts){make_ssf(SSF);opts=opts||{};fix_read_opts(opts);reset_cp();if(safegetzipfile(zip,"META-INF/manifest.xml"))return parse_ods(zip,opts);var entries=keys(zip.files).filter(nodirs).sort();var dir=parse_ct(getzipdata(zip,"[Content_Types].xml"),opts);var xlsb=false;var sheets,binname;if(dir.workbooks.length===0){binname="xl/workbook.xml";if(getzipdata(zip,binname,true))dir.workbooks.push(binname)}if(dir.workbooks.length===0){binname="xl/workbook.bin";if(!getzipfile(zip,binname,true))throw new Error("Could not find workbook");dir.workbooks.push(binname);xlsb=true}if(dir.workbooks[0].substr(-3)=="bin")xlsb=true;if(xlsb)set_cp(1200);if(!opts.bookSheets&&!opts.bookProps){strs=[];if(dir.sst)strs=parse_sst(getzipdata(zip,dir.sst.replace(/^\//,"")),dir.sst,opts);styles={};if(dir.style)styles=parse_sty(getzipdata(zip,dir.style.replace(/^\//,"")),dir.style,opts);themes={};if(opts.cellStyles&&dir.themes.length)themes=parse_theme(getzipdata(zip,dir.themes[0].replace(/^\//,""),true),dir.themes[0],opts)}var wb=parse_wb(getzipdata(zip,dir.workbooks[0].replace(/^\//,"")),dir.workbooks[0],opts);var props={},propdata="";if(dir.coreprops.length!==0){propdata=getzipdata(zip,dir.coreprops[0].replace(/^\//,""),true);if(propdata)props=parse_core_props(propdata);if(dir.extprops.length!==0){propdata=getzipdata(zip,dir.extprops[0].replace(/^\//,""),true);if(propdata)parse_ext_props(propdata,props)}}var custprops={};if(!opts.bookSheets||opts.bookProps){if(dir.custprops.length!==0){propdata=getzipdata(zip,dir.custprops[0].replace(/^\//,""),true);if(propdata)custprops=parse_cust_props(propdata,opts)}}var out={};if(opts.bookSheets||opts.bookProps){if(props.Worksheets&&props.SheetNames.length>0)sheets=props.SheetNames;else if(wb.Sheets)sheets=wb.Sheets.map(function pluck(x){return x.name});if(opts.bookProps){out.Props=props;out.Custprops=custprops}if(typeof sheets!=="undefined")out.SheetNames=sheets;if(opts.bookSheets?out.SheetNames:opts.bookProps)return out}sheets={};var deps={};if(opts.bookDeps&&dir.calcchain)deps=parse_cc(getzipdata(zip,dir.calcchain.replace(/^\//,"")),dir.calcchain,opts);var i=0;var sheetRels={};var path,relsPath;if(!props.Worksheets){var wbsheets=wb.Sheets;props.Worksheets=wbsheets.length;props.SheetNames=[];for(var j=0;j!=wbsheets.length;++j){props.SheetNames[j]=wbsheets[j].name}}var wbext=xlsb?"bin":"xml";var wbrelsfile="xl/_rels/workbook."+wbext+".rels";var wbrels=parse_rels(getzipdata(zip,wbrelsfile,true),wbrelsfile);if(wbrels)wbrels=safe_parse_wbrels(wbrels,wb.Sheets);var nmode=getzipdata(zip,"xl/worksheets/sheet.xml",true)?1:0;for(i=0;i!=props.Worksheets;++i){if(wbrels)path="xl/"+wbrels[i][1].replace(/[\/]?xl\//,"");else{path="xl/worksheets/sheet"+(i+1-nmode)+"."+wbext;path=path.replace(/sheet0\./,"sheet.")}relsPath=path.replace(/^(.*)(\/)([^\/]*)$/,"$1/_rels/$3.rels");safe_parse_ws(zip,path,relsPath,props.SheetNames[i],sheetRels,sheets,opts)}if(dir.comments)parse_comments(zip,dir.comments,sheets,sheetRels,opts);out={Directory:dir,Workbook:wb,Props:props,Custprops:custprops,Deps:deps,Sheets:sheets,SheetNames:props.SheetNames,Strings:strs,Styles:styles,Themes:themes,SSF:SSF.get_table()};if(opts.bookFiles){out.keys=entries;out.files=zip.files}if(opts.bookVBA){if(dir.vba.length>0)out.vbaraw=getzipdata(zip,dir.vba[0],true);else if(dir.defaults.bin==="application/vnd.ms-office.vbaProject")out.vbaraw=getzipdata(zip,"xl/vbaProject.bin",true)}return out}function add_rels(rels,rId,f,type,relobj){if(!relobj)relobj={};if(!rels["!id"])rels["!id"]={};relobj.Id="rId"+rId;relobj.Type=type;relobj.Target=f;if(rels["!id"][relobj.Id])throw new Error("Cannot rewrite rId "+rId);rels["!id"][relobj.Id]=relobj;rels[("/"+relobj.Target).replace("//","/")]=relobj}function write_zip(wb,opts){if(wb&&!wb.SSF){wb.SSF=SSF.get_table()}if(wb&&wb.SSF){make_ssf(SSF);SSF.load_table(wb.SSF);opts.revssf=evert_num(wb.SSF);opts.revssf[wb.SSF[65535]]=0}opts.rels={};opts.wbrels={};opts.Strings=[];opts.Strings.Count=0;opts.Strings.Unique=0;var wbext=opts.bookType=="xlsb"?"bin":"xml";var ct={workbooks:[],sheets:[],calcchains:[],themes:[],styles:[],coreprops:[],extprops:[],custprops:[],strs:[],comments:[],vba:[],TODO:[],rels:[],xmlns:""};fix_write_opts(opts=opts||{});var zip=new jszip;var f="",rId=0;opts.cellXfs=[];get_cell_style(opts.cellXfs,{},{revssf:{General:0}});f="docProps/core.xml";zip.file(f,write_core_props(wb.Props,opts));ct.coreprops.push(f);add_rels(opts.rels,2,f,RELS.CORE_PROPS);f="docProps/app.xml";if(!wb.Props)wb.Props={};wb.Props.SheetNames=wb.SheetNames;wb.Props.Worksheets=wb.SheetNames.length;zip.file(f,write_ext_props(wb.Props,opts));ct.extprops.push(f);add_rels(opts.rels,3,f,RELS.EXT_PROPS);if(wb.Custprops!==wb.Props&&keys(wb.Custprops||{}).length>0){f="docProps/custom.xml";zip.file(f,write_cust_props(wb.Custprops,opts));ct.custprops.push(f);add_rels(opts.rels,4,f,RELS.CUST_PROPS)}f="xl/workbook."+wbext;zip.file(f,write_wb(wb,f,opts));ct.workbooks.push(f);add_rels(opts.rels,1,f,RELS.WB);for(rId=1;rId<=wb.SheetNames.length;++rId){f="xl/worksheets/sheet"+rId+"."+wbext;zip.file(f,write_ws(rId-1,f,opts,wb));ct.sheets.push(f);add_rels(opts.wbrels,rId,"worksheets/sheet"+rId+"."+wbext,RELS.WS)}if(opts.Strings!=null&&opts.Strings.length>0){f="xl/sharedStrings."+wbext;zip.file(f,write_sst(opts.Strings,f,opts));ct.strs.push(f);add_rels(opts.wbrels,++rId,"sharedStrings."+wbext,RELS.SST)}f="xl/theme/theme1.xml";zip.file(f,write_theme());ct.themes.push(f);add_rels(opts.wbrels,++rId,"theme/theme1.xml",RELS.THEME);f="xl/styles."+wbext;zip.file(f,write_sty(wb,f,opts));ct.styles.push(f);add_rels(opts.wbrels,++rId,"styles."+wbext,RELS.STY);zip.file("[Content_Types].xml",write_ct(ct,opts));zip.file("_rels/.rels",write_rels(opts.rels));zip.file("xl/_rels/workbook."+wbext+".rels",write_rels(opts.wbrels));return zip}function readSync(data,opts){var zip,d=data;var o=opts||{};if(!o.type)o.type=has_buf&&Buffer.isBuffer(data)?"buffer":"base64";switch(o.type){case"base64":zip=new jszip(d,{base64:true});break;case"binary":zip=new jszip(d,{base64:false});break;case"buffer":zip=new jszip(d);break;case"file":zip=new jszip(d=_fs.readFileSync(data));break;default:throw new Error("Unrecognized type "+o.type)}return parse_zip(zip,o)}function readFileSync(data,opts){var o=opts||{};o.type="file";return readSync(data,o)}function writeSync(wb,opts){var o=opts||{};var z=write_zip(wb,o);switch(o.type){case"base64":return z.generate({type:"base64"});case"binary":return z.generate({type:"string"});case"buffer":return z.generate({type:"nodebuffer"});case"file":return _fs.writeFileSync(o.file,z.generate({type:"nodebuffer"}));default:throw new Error("Unrecognized type "+o.type)}}function writeFileSync(wb,filename,opts){var o=opts||{};o.type="file";o.file=filename;switch(o.file.substr(-5).toLowerCase()){case".xlsm":o.bookType="xlsm";break;case".xlsb":o.bookType="xlsb";break}return writeSync(wb,o)}function decode_row(rowstr){return parseInt(unfix_row(rowstr),10)-1}function encode_row(row){return""+(row+1)}function fix_row(cstr){return cstr.replace(/([A-Z]|^)(\d+)$/,"$1$$$2")}function unfix_row(cstr){return cstr.replace(/\$(\d+)$/,"$1")}function decode_col(colstr){var c=unfix_col(colstr),d=0,i=0;for(;i!==c.length;++i)d=26*d+c.charCodeAt(i)-64;return d-1}function encode_col(col){var s="";for(++col;col;col=Math.floor((col-1)/26))s=String.fromCharCode((col-1)%26+65)+s;return s}function fix_col(cstr){return cstr.replace(/^([A-Z])/,"$$$1")}function unfix_col(cstr){return cstr.replace(/^\$([A-Z])/,"$1")}function split_cell(cstr){return cstr.replace(/(\$?[A-Z]*)(\$?\d*)/,"$1,$2").split(",")}function decode_cell(cstr){var splt=split_cell(cstr);return{c:decode_col(splt[0]),r:decode_row(splt[1])}}function encode_cell(cell){return encode_col(cell.c)+encode_row(cell.r)}function fix_cell(cstr){return fix_col(fix_row(cstr))}function unfix_cell(cstr){return unfix_col(unfix_row(cstr))}function decode_range(range){var x=range.split(":").map(decode_cell);return{s:x[0],e:x[x.length-1]}}function encode_range(cs,ce){if(ce===undefined||typeof ce==="number")return encode_range(cs.s,cs.e);if(typeof cs!=="string")cs=encode_cell(cs);if(typeof ce!=="string")ce=encode_cell(ce);return cs==ce?cs:cs+":"+ce}function safe_decode_range(range){var o={s:{c:0,r:0},e:{c:0,r:0}};var idx=0,i=0,cc=0;var len=range.length;for(idx=0;i26)break;idx=26*idx+cc}o.s.c=--idx;for(idx=0;i9)break;idx=10*idx+cc}o.s.r=--idx;if(i===len||range.charCodeAt(++i)===58){o.e.c=o.s.c;o.e.r=o.s.r;return o}for(idx=0;i!=len;++i){if((cc=range.charCodeAt(i)-64)<1||cc>26)break;idx=26*idx+cc}o.e.c=--idx;for(idx=0;i!=len;++i){if((cc=range.charCodeAt(i)-48)<0||cc>9)break;idx=10*idx+cc}o.e.r=--idx;return o}function safe_format_cell(cell,v){if(cell.z!==undefined)try{return cell.w=SSF.format(cell.z,v)}catch(e){}if(!cell.XF)return v;try{return cell.w=SSF.format(cell.XF.ifmt||0,v)}catch(e){return""+v}}function format_cell(cell,v){if(cell==null||cell.t==null)return"";if(cell.w!==undefined)return cell.w;if(v===undefined)return safe_format_cell(cell,cell.v);return safe_format_cell(cell,v)}function sheet_to_json(sheet,opts){var val,row,range,header=0,offset=1,r,hdr=[],isempty,R,C,v;var o=opts!=null?opts:{};var raw=o.raw;if(sheet==null||sheet["!ref"]==null)return[];range=o.range!==undefined?o.range:sheet["!ref"];if(o.header===1)header=1;else if(o.header==="A")header=2;else if(Array.isArray(o.header))header=3;switch(typeof range){case"string":r=safe_decode_range(range);break;case"number":r=safe_decode_range(sheet["!ref"]);r.s.r=range;break;default:r=range}if(header>0)offset=0;var rr=encode_row(r.s.r);var cols=new Array(r.e.c-r.s.c+1);var out=new Array(r.e.r-r.s.r-offset+1);var outi=0;for(C=r.s.c;C<=r.e.c;++C){cols[C]=encode_col(C);val=sheet[cols[C]+rr];switch(header){case 1:hdr[C]=C;break;case 2:hdr[C]=cols[C];break;case 3:hdr[C]=o.header[C-r.s.c];break;default:if(val===undefined)continue;hdr[C]=format_cell(val)}}for(R=r.s.r+offset;R<=r.e.r;++R){rr=encode_row(R);isempty=true;row=header===1?[]:Object.create({__rowNum__:R});for(C=r.s.c;C<=r.e.c;++C){val=sheet[cols[C]+rr];if(val===undefined||val.t===undefined)continue;v=val.v;switch(val.t){case"e":continue;case"s":break;case"b":case"n":break;default:throw"unrecognized type "+val.t}if(v!==undefined){row[hdr[C]]=raw?v:format_cell(val,v);isempty=false}}if(isempty===false)out[outi++]=row}out.length=outi;return out}function sheet_to_row_object_array(sheet,opts){return sheet_to_json(sheet,opts!=null?opts:{})}function sheet_to_csv(sheet,opts){var out="",txt="",qreg=/"/g;var o=opts==null?{}:opts;if(sheet==null||sheet["!ref"]==null)return"";var r=safe_decode_range(sheet["!ref"]);var FS=o.FS!==undefined?o.FS:",",fs=FS.charCodeAt(0);var RS=o.RS!==undefined?o.RS:"\n",rs=RS.charCodeAt(0);var row="",rr="",cols=[];var i=0,cc=0,val;var R=0,C=0;for(C=r.s.c;C<=r.e.c;++C)cols[C]=encode_col(C);for(R=r.s.r;R<=r.e.r;++R){row="";rr=encode_row(R);for(C=r.s.c;C<=r.e.c;++C){val=sheet[cols[C]+rr];txt=val!==undefined?""+format_cell(val):"";for(i=0,cc=0;i!==txt.length;++i)if((cc=txt.charCodeAt(i))===fs||cc===rs||cc===34){txt='"'+txt.replace(qreg,'""')+'"';break}row+=(C===r.s.c?"":FS)+txt}out+=row+RS}return out}var make_csv=sheet_to_csv;function sheet_to_formulae(sheet){var cmds,y="",x,val="";if(sheet==null||sheet["!ref"]==null)return"";var r=safe_decode_range(sheet["!ref"]),rr="",cols=[],C;cmds=new Array((r.e.r-r.s.r+1)*(r.e.c-r.s.c+1));var i=0;for(C=r.s.c;C<=r.e.c;++C)cols[C]=encode_col(C);for(var R=r.s.r;R<=r.e.r;++R){rr=encode_row(R);for(C=r.s.c;C<=r.e.c;++C){y=cols[C]+rr;x=sheet[y];val="";if(x===undefined)continue;if(x.f!=null)val=x.f;else if(x.w!==undefined)val="'"+x.w;else if(x.v===undefined)continue;else val=""+x.v;cmds[i++]=y+"="+val}}cmds.length=i;return cmds}var utils={encode_col:encode_col,encode_row:encode_row,encode_cell:encode_cell,encode_range:encode_range,decode_col:decode_col,decode_row:decode_row,split_cell:split_cell,decode_cell:decode_cell,decode_range:decode_range,format_cell:format_cell,get_formulae:sheet_to_formulae,make_csv:sheet_to_csv,make_json:sheet_to_json,make_formulae:sheet_to_formulae,sheet_to_csv:sheet_to_csv,sheet_to_json:sheet_to_json,sheet_to_formulae:sheet_to_formulae,sheet_to_row_object_array:sheet_to_row_object_array};XLSX.parseZip=parse_zip;XLSX.read=readSync;XLSX.readFile=readFileSync;XLSX.write=writeSync;XLSX.writeFile=writeFileSync;XLSX.utils=utils;XLSX.SSF=SSF})(typeof exports!=="undefined"?exports:XLSX); diff --git a/src/main/webapp/static/common/common-constant.js b/src/main/webapp/static/common/common-constant.js new file mode 100644 index 0000000000000000000000000000000000000000..c94b749ec2ddf93b6974f050d07ff30e84d3db16 --- /dev/null +++ b/src/main/webapp/static/common/common-constant.js @@ -0,0 +1 @@ +var page_size = 3; \ No newline at end of file diff --git a/src/main/webapp/static/common/common.js b/src/main/webapp/static/common/common.js new file mode 100644 index 0000000000000000000000000000000000000000..aa7d8c7fdf88186647fa7f5f13433aba423d6741 --- /dev/null +++ b/src/main/webapp/static/common/common.js @@ -0,0 +1,13 @@ + +/** + * 获取时间字符串 + * @returns + */ +function getDateString() { + var date = new Date(), + dateString = date.getFullYear().toString() + (date.getMonth()+1).toString() + + date.getDate().toString() + date.getHours().toString() + date.getMinutes().toString() + + date.getSeconds().toString(); + + return dateString; +} \ No newline at end of file diff --git a/src/main/webapp/static/dateFormat/README.md b/src/main/webapp/static/dateFormat/README.md new file mode 100644 index 0000000000000000000000000000000000000000..3f92280900832538cca191c8f04233dafd0992fb --- /dev/null +++ b/src/main/webapp/static/dateFormat/README.md @@ -0,0 +1,74 @@ +# JavaScript Date Format + +通过格式规则对日期时间的数据进行格式化,显示更加友好并且自由组合的方式。 + +***声明:从 v0.9.7 开始我将对外的接口进行了更改,并且增加了一个新的接口[`lang`](#加载语言包)。如果你在之前使用过,则需要你找到你相关代码处,将引用的代码改为这样:`require('dateFormat').dateFormat`。对此破坏性更新我感到抱歉,当然如果你并不需要为不同的语言设置的话则完全没有必要进行升级,另外你也可以通过修改源代码的方式对语言进行设置。因此升级并不是必须的途径。再次抱歉。谢谢你的使用!*** + +eg. + + yyyy-mm-dd => 2017-01-24 + mm/dd/yyyy => 01/24/2017 + YYYY => 二〇一七(年) + YY => 一七(年) + MMMM => 十一(月) + DDDD => 二十四(日) + W => (周)二 + HH:MM:ss => 16:24:56 (24小时制) + hh:MM:ss => 04:24:56 (12小时制) + +### Usage + +```js +var dateFormat = require('dateFormat').dateFormat; +console.log(dateFormat(new Date(), 'yyyy-mm-dd HH:MM:ss')); +// 2017/01/24 16:24:56 + +console.log(dateFormat(new Date(), '星期W HH:MM:ss mm/dd/yyyy')); +// 星期二 16:24:56 01/24/2017 + +console.log(dateFormat(new Date(), 'YYYY年MMMM月DDDD日 H点M分s秒')); +// 二〇一七年一月二十四日 16点24分56秒 +``` +自由组合,就是这么简单。 + +### 特殊的格式规则`Ln-` + +n 表示从1到6的级别,各自对应:秒,分钟,小时,天,月,年 + +使用此格式表示对于小于等于指定级别的时间将显示为近时值,比如当前时间为2017年1月24日16点32分, +如果将2017年1月24日16时30分的日期用`L2-yyyy/mm/dd`格式规则进行转换那么得出的结果是显示`2分钟前`,如果我们将 L2 改成 L1 那么此处将会按后面的`yyyy/mm/dd`显示`2017/01/24`。 + +通过这个规则可以让你轻松获得 多少秒前、多少分钟前 的友好体验,并且不用担心时间近值超过级别之后会被显示成比如 26小时前 这种乌龙日期。 + +eg. + +```js +var dateFormat = require('dateFormat').dateFormat; +console.log(dateFormat(new Date('2017/01/24 16:30'), 'L2-yyyy-mm-dd')); +// 2分钟前 or 2017-01-24 +``` + +### 加载语言包 + +> 0.9.7+ + +考虑到一个国际化的问题,也许进行的项目并不一定都是中文环境,比如说做的国外项目也不是不可能。 + +因此添加了一个新的开放接口,用来设置不同的语言(默认中文)。现在你可以使用英文的月份,周几等英文文字的日期描述。 +规则使用的是大写的标识按照示例里显示中文的一样就可以了。 + +```js +var setLang = require('dateFormat').lang; +var langObject = require('lang'); +setLang(langObject); +console.log(dateFormat(new Date(),'W MMMM DDDD YYYY HH:MM:ss')); +// Mon Jan 30 2017 19:54:02 +``` + +## Author + +© AngusYoung + +E-mail: + +Home: http://mrxcool.com \ No newline at end of file diff --git a/src/main/webapp/static/dateFormat/dateFormat.js b/src/main/webapp/static/dateFormat/dateFormat.js new file mode 100644 index 0000000000000000000000000000000000000000..01cdd65ac0b4b07fecf4e65f10955b813b8f1bb8 --- /dev/null +++ b/src/main/webapp/static/dateFormat/dateFormat.js @@ -0,0 +1,197 @@ +/*!* + * @Author Angus + * @Description JavaScript Date Format + * @Since 2017/1/24 + */ + +'use strict'; + +(function (root, factory) { + if (typeof define === 'function' && define.amd) { + define(factory); + } + else if (typeof module != 'undefined') { + module.exports = factory(); + } + else { + var _factory = factory(); + root.dateFormat = _factory.dateFormat; + root.setLang = _factory.lang; + } +})(this, function () { + + var oLangDict = { + years : ['〇', '一', '二', '三', '四', '五', '六', '七', '八', '九'], + months: ['一', '二', '三', '四', '五', '六', '七', '八', '九', '十', '十一', '十二'], + days : ['十', '一', '二', '三', '四', '五', '六', '七', '八', '九'], + weeks : ['日', '一', '二', '三', '四', '五', '六'], + units : ['秒', '分钟', '小时', '天', '个月', '年'], + now : '刚刚', + ago : '前' + }; + + function setLang(oLang) { + oLangDict = oLang; + } + + /** + * @param dDate 日期数据 + * @param sPattern 格式字符串 + */ + function mDateFormat(dDate, sPattern) { + // 年 + sPattern = sPattern.replace(/y+/g, function (s) { + var _year = dDate.getFullYear().toString(); + return _year.substr(_year.length - s.length, s.length); + }); + sPattern = sPattern.replace(/Y{2,4}/g, function (s) { + var _year_array = oLangDict.years; + var _year = dDate.getFullYear().toString(); + if (s.length === 3) { + return s; + } + else { + _year = _year.replace(/\d/g, function (s) { + return _year_array[s]; + }); + return _year.substr(_year.length - s.length, s.length); + } + }); + + // 月 + sPattern = sPattern.replace(/m+/g, function (s) { + var _month = (dDate.getMonth() + 1).toString(); + if (s.length > 1) { + return _month.length === 1 ? '0' + _month : _month; + } + else { + return _month; + } + }); + sPattern = sPattern.replace(/M{4}/g, function () { + var _month = dDate.getMonth().toString(); + var _month_array = oLangDict.months; + return _month_array[_month]; + }); + + // 日 + sPattern = sPattern.replace(/d+/g, function (s) { + var _day = dDate.getDate().toString(); + if (s.length > 1) { + return _day.length === 1 ? '0' + _day : _day; + } + else { + return _day; + } + }); + sPattern = sPattern.replace(/D{4}/g, function () { + var _day = dDate.getDate().toString(); + var _day_array = oLangDict.days; + if (_day.length > 1) { + var _day_split = _day.split(''); + var _cn_day = _day_array[0] + (_day_split[1] == '0' ? '' : _day_array[_day_split[1]]); + if (_day_split[0] != '1') { + _cn_day = _day_array[_day_split[0]] + _cn_day; + } + return _cn_day; + } + else { + return _day_array[_day]; + } + }); + + // 时 + sPattern = sPattern.replace(/H+/g, function (s) { + var _hour = dDate.getHours().toString(); + if (s.length > 1) { + return _hour.length === 1 ? '0' + _hour : _hour; + } + else { + return _hour; + } + }); + sPattern = sPattern.replace(/h+/g, function (s) { + var _hour = dDate.getHours(); + _hour = (_hour > 12 ? _hour - 12 : _hour).toString(); + if (s.length > 1) { + return _hour.length === 1 ? ('0' + _hour) : _hour; + } + else { + return _hour; + } + }); + + // 分 + sPattern = sPattern.replace(/M+/g, function (s) { + var _minute = dDate.getMinutes().toString(); + if (s.length > 1) { + return _minute.length === 1 ? '0' + _minute : _minute; + } + else { + return _minute; + } + }); + + // 秒 + sPattern = sPattern.replace(/s+/g, function (s) { + var _second = dDate.getSeconds().toString(); + if (s.length > 1) { + return _second.length === 1 ? '0' + _second : _second; + } + else { + return _second; + } + }); + + // 周 + sPattern = sPattern.replace(/w/gi, function () { + var _week_array = oLangDict.weeks; + var _week = dDate.getDay(); + return _week_array[_week]; + }); + + // 之前 + sPattern = sPattern.replace(/L(\d)?(?:-([^L]*))?$/g, function (sStr, $1, $2) { + // L(\d)?(?:-([^L]*))? + var dNow = new Date().getTime(); + var dTime = dDate.getTime(); + var nTimeDiff = dNow - dTime; + + var aClock = [1000, 60, 60, 24, 30, 12, 2]; + // 单位比时间范围少一项,因为在最后一项的时候将会显示具体时间不需要加单位 + var aUnit = oLangDict.units; + var aEqClock = aClock.slice(0, parseInt($1 || 5, 10) + 1); + // console.log(aEqClock); + var oTime = { + time: mDateFormat(dDate, $2 || 'yyyy/mm/dd'), + unit: '' + }; + + if (nTimeDiff >= 0 && nTimeDiff < 999) { + return oLangDict.now; + } + else if (nTimeDiff > 999) { + for (var i = 0; i < aEqClock.length; i++) { + nTimeDiff = Math.floor(nTimeDiff / aEqClock[i]); + // console.log('=> %s%s\n 下一级别单位【%s】换算值:%s', nTimeDiff, aUnit[i], aUnit[i + 1], aClock[i + 1]); + if ((nTimeDiff < aEqClock[i + 1])) { + oTime = { + time: nTimeDiff, + unit: aUnit[i] + }; + break; + } + } + } + + return oTime.time + (oTime.unit ? oTime.unit + oLangDict.ago : ''); + }); + + return sPattern; + } + + return { + dateFormat: mDateFormat, + lang : setLang + }; +}); \ No newline at end of file diff --git a/src/main/webapp/static/dateFormat/dateFormat.min.js b/src/main/webapp/static/dateFormat/dateFormat.min.js new file mode 100644 index 0000000000000000000000000000000000000000..d5e75d4cde4bc0f1adb632154366d5e2fe0531dc --- /dev/null +++ b/src/main/webapp/static/dateFormat/dateFormat.min.js @@ -0,0 +1,6 @@ +/*!* + * @Author Angus + * @Description JavaScript Date Format + * @Since 2017/1/24 + */ +"use strict";!function(t,e){if("function"==typeof define&&define.amd)define(e);else if("undefined"!=typeof module)module.exports=e();else{var n=e();t.dateFormat=n.dateFormat,t.setLang=n.lang}}(this,function(){function t(t){n=t}function e(t,r){return r=r.replace(/y+/g,function(e){var n=t.getFullYear().toString();return n.substr(n.length-e.length,e.length)}),r=r.replace(/Y{2,4}/g,function(e){var r=n.years,g=t.getFullYear().toString();return 3===e.length?e:(g=g.replace(/\d/g,function(t){return r[t]}),g.substr(g.length-e.length,e.length))}),r=r.replace(/m+/g,function(e){var n=(t.getMonth()+1).toString();return e.length>1&&1===n.length?"0"+n:n}),r=r.replace(/M{4}/g,function(){var e=t.getMonth().toString(),r=n.months;return r[e]}),r=r.replace(/d+/g,function(e){var n=t.getDate().toString();return e.length>1&&1===n.length?"0"+n:n}),r=r.replace(/D{4}/g,function(){var e=t.getDate().toString(),r=n.days;if(e.length>1){var g=e.split(""),i=r[0]+("0"==g[1]?"":r[g[1]]);return"1"!=g[0]&&(i=r[g[0]]+i),i}return r[e]}),r=r.replace(/H+/g,function(e){var n=t.getHours().toString();return e.length>1&&1===n.length?"0"+n:n}),r=r.replace(/h+/g,function(e){var n=t.getHours();return n=(n>12?n-12:n).toString(),e.length>1&&1===n.length?"0"+n:n}),r=r.replace(/M+/g,function(e){var n=t.getMinutes().toString();return e.length>1&&1===n.length?"0"+n:n}),r=r.replace(/s+/g,function(e){var n=t.getSeconds().toString();return e.length>1&&1===n.length?"0"+n:n}),r=r.replace(/w/gi,function(){var e=n.weeks,r=t.getDay();return e[r]}),r=r.replace(/L(\d)?(?:-([^L]*))?$/g,function(r,g,i){var a=(new Date).getTime(),u=t.getTime(),o=a-u,l=[1e3,60,60,24,30,12,2],c=n.units,f=l.slice(0,parseInt(g||5,10)+1),s={time:e(t,i||"yyyy/mm/dd"),unit:""};if(o>=0&&o<999)return n.now;if(o>999)for(var h=0;h + * @Description Date of English words + * @Since 2017/1/30 + */ + +(function (root, factory) { + if (typeof define === 'function' && define.amd) { + define(factory); + } + else if (typeof module != 'undefined') { + module.exports = factory(); + } + else { + root.enLang = factory(); + } +})(this, function () { + return { + years : ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'], + months: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], + days : ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'], + weeks : ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], + units : ['s', 'm', 'h', 'd', 'month', 'year'], + now : 'just now', + ago : 'ago' + } +}); \ No newline at end of file diff --git a/src/main/webapp/static/easyUI/easyloader.js b/src/main/webapp/static/easyUI/easyloader.js new file mode 100644 index 0000000000000000000000000000000000000000..edf4b5ebcc8d6497e0ed27d520d3408c0cff2825 --- /dev/null +++ b/src/main/webapp/static/easyUI/easyloader.js @@ -0,0 +1,190 @@ +/** + * jQuery EasyUI 1.5.2 + * + * Copyright (c) 2009-2017 www.jeasyui.com. All rights reserved. + * + * Licensed under the freeware license: http://www.jeasyui.com/license_freeware.php + * To use it on other terms please contact us: info@jeasyui.com + * + */ +(function(){ +var _1={draggable:{js:"jquery.draggable.js"},droppable:{js:"jquery.droppable.js"},resizable:{js:"jquery.resizable.js"},linkbutton:{js:"jquery.linkbutton.js",css:"linkbutton.css"},progressbar:{js:"jquery.progressbar.js",css:"progressbar.css"},tooltip:{js:"jquery.tooltip.js",css:"tooltip.css"},pagination:{js:"jquery.pagination.js",css:"pagination.css",dependencies:["linkbutton"]},datagrid:{js:"jquery.datagrid.js",css:"datagrid.css",dependencies:["panel","resizable","linkbutton","pagination"]},treegrid:{js:"jquery.treegrid.js",css:"tree.css",dependencies:["datagrid"]},propertygrid:{js:"jquery.propertygrid.js",css:"propertygrid.css",dependencies:["datagrid"]},datalist:{js:"jquery.datalist.js",css:"datalist.css",dependencies:["datagrid"]},panel:{js:"jquery.panel.js",css:"panel.css"},window:{js:"jquery.window.js",css:"window.css",dependencies:["resizable","draggable","panel"]},dialog:{js:"jquery.dialog.js",css:"dialog.css",dependencies:["linkbutton","window"]},messager:{js:"jquery.messager.js",css:"messager.css",dependencies:["linkbutton","dialog","progressbar"]},layout:{js:"jquery.layout.js",css:"layout.css",dependencies:["resizable","panel"]},form:{js:"jquery.form.js"},menu:{js:"jquery.menu.js",css:"menu.css"},tabs:{js:"jquery.tabs.js",css:"tabs.css",dependencies:["panel","linkbutton"]},menubutton:{js:"jquery.menubutton.js",css:"menubutton.css",dependencies:["linkbutton","menu"]},splitbutton:{js:"jquery.splitbutton.js",css:"splitbutton.css",dependencies:["menubutton"]},switchbutton:{js:"jquery.switchbutton.js",css:"switchbutton.css"},accordion:{js:"jquery.accordion.js",css:"accordion.css",dependencies:["panel"]},calendar:{js:"jquery.calendar.js",css:"calendar.css"},textbox:{js:"jquery.textbox.js",css:"textbox.css",dependencies:["validatebox","linkbutton"]},passwordbox:{js:"jquery.passwordbox.js",css:"passwordbox.css",dependencies:["textbox"]},filebox:{js:"jquery.filebox.js",css:"filebox.css",dependencies:["textbox"]},combo:{js:"jquery.combo.js",css:"combo.css",dependencies:["panel","textbox"]},combobox:{js:"jquery.combobox.js",css:"combobox.css",dependencies:["combo"]},combotree:{js:"jquery.combotree.js",dependencies:["combo","tree"]},combogrid:{js:"jquery.combogrid.js",dependencies:["combo","datagrid"]},combotreegrid:{js:"jquery.combotreegrid.js",dependencies:["combo","treegrid"]},tagbox:{js:"jquery.tagbox.js",dependencies:["combobox"]},validatebox:{js:"jquery.validatebox.js",css:"validatebox.css",dependencies:["tooltip"]},numberbox:{js:"jquery.numberbox.js",dependencies:["textbox"]},searchbox:{js:"jquery.searchbox.js",css:"searchbox.css",dependencies:["menubutton","textbox"]},spinner:{js:"jquery.spinner.js",css:"spinner.css",dependencies:["textbox"]},numberspinner:{js:"jquery.numberspinner.js",dependencies:["spinner","numberbox"]},timespinner:{js:"jquery.timespinner.js",dependencies:["spinner"]},tree:{js:"jquery.tree.js",css:"tree.css",dependencies:["draggable","droppable"]},datebox:{js:"jquery.datebox.js",css:"datebox.css",dependencies:["calendar","combo"]},datetimebox:{js:"jquery.datetimebox.js",dependencies:["datebox","timespinner"]},slider:{js:"jquery.slider.js",dependencies:["draggable"]},parser:{js:"jquery.parser.js"},mobile:{js:"jquery.mobile.js"}}; +var _2={"af":"easyui-lang-af.js","ar":"easyui-lang-ar.js","bg":"easyui-lang-bg.js","ca":"easyui-lang-ca.js","cs":"easyui-lang-cs.js","cz":"easyui-lang-cz.js","da":"easyui-lang-da.js","de":"easyui-lang-de.js","el":"easyui-lang-el.js","en":"easyui-lang-en.js","es":"easyui-lang-es.js","fr":"easyui-lang-fr.js","it":"easyui-lang-it.js","jp":"easyui-lang-jp.js","nl":"easyui-lang-nl.js","pl":"easyui-lang-pl.js","pt_BR":"easyui-lang-pt_BR.js","ru":"easyui-lang-ru.js","sv_SE":"easyui-lang-sv_SE.js","tr":"easyui-lang-tr.js","zh_CN":"easyui-lang-zh_CN.js","zh_TW":"easyui-lang-zh_TW.js"}; +var _3={}; +function _4(_5,_6){ +var _7=false; +var _8=document.createElement("script"); +_8.type="text/javascript"; +_8.language="javascript"; +_8.src=_5; +_8.onload=_8.onreadystatechange=function(){ +if(!_7&&(!_8.readyState||_8.readyState=="loaded"||_8.readyState=="complete")){ +_7=true; +_8.onload=_8.onreadystatechange=null; +if(_6){ +_6.call(_8); +} +} +}; +document.getElementsByTagName("head")[0].appendChild(_8); +}; +function _9(_a,_b){ +_4(_a,function(){ +document.getElementsByTagName("head")[0].removeChild(this); +if(_b){ +_b(); +} +}); +}; +function _c(_d,_e){ +var _f=document.createElement("link"); +_f.rel="stylesheet"; +_f.type="text/css"; +_f.media="screen"; +_f.href=_d; +document.getElementsByTagName("head")[0].appendChild(_f); +if(_e){ +_e.call(_f); +} +}; +function _10(_11,_12){ +_3[_11]="loading"; +var _13=_1[_11]; +var _14="loading"; +var _15=(easyloader.css&&_13["css"])?"loading":"loaded"; +if(easyloader.css&&_13["css"]){ +if(/^http/i.test(_13["css"])){ +var url=_13["css"]; +}else{ +var url=easyloader.base+"themes/"+easyloader.theme+"/"+_13["css"]; +} +_c(url,function(){ +_15="loaded"; +if(_14=="loaded"&&_15=="loaded"){ +_16(); +} +}); +} +if(/^http/i.test(_13["js"])){ +var url=_13["js"]; +}else{ +var url=easyloader.base+"plugins/"+_13["js"]; +} +_4(url,function(){ +_14="loaded"; +if(_14=="loaded"&&_15=="loaded"){ +_16(); +} +}); +function _16(){ +_3[_11]="loaded"; +easyloader.onProgress(_11); +if(_12){ +_12(); +} +}; +}; +function _17(_18,_19){ +var mm=[]; +var _1a=false; +if(typeof _18=="string"){ +add(_18); +}else{ +for(var i=0;i<_18.length;i++){ +add(_18[i]); +} +} +function add(_1b){ +if(!_1[_1b]){ +return; +} +var d=_1[_1b]["dependencies"]; +if(d){ +for(var i=0;i=0;i--){ +_9.unshift(_a.children[i]); +} +} +} +}}; +$.parser={auto:true,onComplete:function(_b){ +},plugins:["draggable","droppable","resizable","pagination","tooltip","linkbutton","menu","menubutton","splitbutton","switchbutton","progressbar","tree","textbox","passwordbox","filebox","combo","combobox","combotree","combogrid","combotreegrid","tagbox","numberbox","validatebox","searchbox","spinner","numberspinner","timespinner","datetimespinner","calendar","datebox","datetimebox","slider","layout","panel","datagrid","propertygrid","treegrid","datalist","tabs","accordion","window","dialog","form"],parse:function(_c){ +var aa=[]; +for(var i=0;i<$.parser.plugins.length;i++){ +var _d=$.parser.plugins[i]; +var r=$(".easyui-"+_d,_c); +if(r.length){ +if(r[_d]){ +r.each(function(){ +$(this)[_d]($.data(this,"options")||{}); +}); +}else{ +aa.push({name:_d,jq:r}); +} +} +} +if(aa.length&&window.easyloader){ +var _e=[]; +for(var i=0;i=0){ +v=Math.floor((_12.width()-_13)*v/100); +}else{ +v=Math.floor((_12.height()-_13)*v/100); +} +}else{ +v=parseInt(v)||undefined; +} +return v; +},parseOptions:function(_15,_16){ +var t=$(_15); +var _17={}; +var s=$.trim(t.attr("data-options")); +if(s){ +if(s.substring(0,1)!="{"){ +s="{"+s+"}"; +} +_17=(new Function("return "+s))(); +} +$.map(["width","height","left","top","minWidth","maxWidth","minHeight","maxHeight"],function(p){ +var pv=$.trim(_15.style[p]||""); +if(pv){ +if(pv.indexOf("%")==-1){ +pv=parseInt(pv); +if(isNaN(pv)){ +pv=undefined; +} +} +_17[p]=pv; +} +}); +if(_16){ +var _18={}; +for(var i=0;i<_16.length;i++){ +var pp=_16[i]; +if(typeof pp=="string"){ +_18[pp]=t.attr(pp); +}else{ +for(var _19 in pp){ +var _1a=pp[_19]; +if(_1a=="boolean"){ +_18[_19]=t.attr(_19)?(t.attr(_19)=="true"):undefined; +}else{ +if(_1a=="number"){ +_18[_19]=t.attr(_19)=="0"?0:parseFloat(t.attr(_19))||undefined; +} +} +} +} +} +$.extend(_17,_18); +} +return _17; +}}; +$(function(){ +var d=$("

").appendTo("body"); +$._boxModel=d.outerWidth()!=100; +d.remove(); +d=$("
").appendTo("body"); +$._positionFixed=(d.css("position")=="fixed"); +d.remove(); +if(!window.easyloader&&$.parser.auto){ +$.parser.parse(); +} +}); +$.fn._outerWidth=function(_1b){ +if(_1b==undefined){ +if(this[0]==window){ +return this.width()||document.body.clientWidth; +} +return this.outerWidth()||0; +} +return this._size("width",_1b); +}; +$.fn._outerHeight=function(_1c){ +if(_1c==undefined){ +if(this[0]==window){ +return this.height()||document.body.clientHeight; +} +return this.outerHeight()||0; +} +return this._size("height",_1c); +}; +$.fn._scrollLeft=function(_1d){ +if(_1d==undefined){ +return this.scrollLeft(); +}else{ +return this.each(function(){ +$(this).scrollLeft(_1d); +}); +} +}; +$.fn._propAttr=$.fn.prop||$.fn.attr; +$.fn._size=function(_1e,_1f){ +if(typeof _1e=="string"){ +if(_1e=="clear"){ +return this.each(function(){ +$(this).css({width:"",minWidth:"",maxWidth:"",height:"",minHeight:"",maxHeight:""}); +}); +}else{ +if(_1e=="fit"){ +return this.each(function(){ +_20(this,this.tagName=="BODY"?$("body"):$(this).parent(),true); +}); +}else{ +if(_1e=="unfit"){ +return this.each(function(){ +_20(this,$(this).parent(),false); +}); +}else{ +if(_1f==undefined){ +return _21(this[0],_1e); +}else{ +return this.each(function(){ +_21(this,_1e,_1f); +}); +} +} +} +} +}else{ +return this.each(function(){ +_1f=_1f||$(this).parent(); +$.extend(_1e,_20(this,_1f,_1e.fit)||{}); +var r1=_22(this,"width",_1f,_1e); +var r2=_22(this,"height",_1f,_1e); +if(r1||r2){ +$(this).addClass("easyui-fluid"); +}else{ +$(this).removeClass("easyui-fluid"); +} +}); +} +function _20(_23,_24,fit){ +if(!_24.length){ +return false; +} +var t=$(_23)[0]; +var p=_24[0]; +var _25=p.fcount||0; +if(fit){ +if(!t.fitted){ +t.fitted=true; +p.fcount=_25+1; +$(p).addClass("panel-noscroll"); +if(p.tagName=="BODY"){ +$("html").addClass("panel-fit"); +} +} +return {width:($(p).width()||1),height:($(p).height()||1)}; +}else{ +if(t.fitted){ +t.fitted=false; +p.fcount=_25-1; +if(p.fcount==0){ +$(p).removeClass("panel-noscroll"); +if(p.tagName=="BODY"){ +$("html").removeClass("panel-fit"); +} +} +} +return false; +} +}; +function _22(_26,_27,_28,_29){ +var t=$(_26); +var p=_27; +var p1=p.substr(0,1).toUpperCase()+p.substr(1); +var min=$.parser.parseValue("min"+p1,_29["min"+p1],_28); +var max=$.parser.parseValue("max"+p1,_29["max"+p1],_28); +var val=$.parser.parseValue(p,_29[p],_28); +var _2a=(String(_29[p]||"").indexOf("%")>=0?true:false); +if(!isNaN(val)){ +var v=Math.min(Math.max(val,min||0),max||99999); +if(!_2a){ +_29[p]=v; +} +t._size("min"+p1,""); +t._size("max"+p1,""); +t._size(p,v); +}else{ +t._size(p,""); +t._size("min"+p1,min); +t._size("max"+p1,max); +} +return _2a||_29.fit; +}; +function _21(_2b,_2c,_2d){ +var t=$(_2b); +if(_2d==undefined){ +_2d=parseInt(_2b.style[_2c]); +if(isNaN(_2d)){ +return undefined; +} +if($._boxModel){ +_2d+=_2e(); +} +return _2d; +}else{ +if(_2d===""){ +t.css(_2c,""); +}else{ +if($._boxModel){ +_2d-=_2e(); +if(_2d<0){ +_2d=0; +} +} +t.css(_2c,_2d+"px"); +} +} +function _2e(){ +if(_2c.toLowerCase().indexOf("width")>=0){ +return t.outerWidth()-t.width(); +}else{ +return t.outerHeight()-t.height(); +} +}; +}; +}; +})(jQuery); +(function($){ +var _2f=null; +var _30=null; +var _31=false; +function _32(e){ +if(e.touches.length!=1){ +return; +} +if(!_31){ +_31=true; +dblClickTimer=setTimeout(function(){ +_31=false; +},500); +}else{ +clearTimeout(dblClickTimer); +_31=false; +_33(e,"dblclick"); +} +_2f=setTimeout(function(){ +_33(e,"contextmenu",3); +},1000); +_33(e,"mousedown"); +if($.fn.draggable.isDragging||$.fn.resizable.isResizing){ +e.preventDefault(); +} +}; +function _34(e){ +if(e.touches.length!=1){ +return; +} +if(_2f){ +clearTimeout(_2f); +} +_33(e,"mousemove"); +if($.fn.draggable.isDragging||$.fn.resizable.isResizing){ +e.preventDefault(); +} +}; +function _35(e){ +if(_2f){ +clearTimeout(_2f); +} +_33(e,"mouseup"); +if($.fn.draggable.isDragging||$.fn.resizable.isResizing){ +e.preventDefault(); +} +}; +function _33(e,_36,_37){ +var _38=new $.Event(_36); +_38.pageX=e.changedTouches[0].pageX; +_38.pageY=e.changedTouches[0].pageY; +_38.which=_37||1; +$(e.target).trigger(_38); +}; +if(document.addEventListener){ +document.addEventListener("touchstart",_32,true); +document.addEventListener("touchmove",_34,true); +document.addEventListener("touchend",_35,true); +} +})(jQuery); +(function($){ +function _39(e){ +var _3a=$.data(e.data.target,"draggable"); +var _3b=_3a.options; +var _3c=_3a.proxy; +var _3d=e.data; +var _3e=_3d.startLeft+e.pageX-_3d.startX; +var top=_3d.startTop+e.pageY-_3d.startY; +if(_3c){ +if(_3c.parent()[0]==document.body){ +if(_3b.deltaX!=null&&_3b.deltaX!=undefined){ +_3e=e.pageX+_3b.deltaX; +}else{ +_3e=e.pageX-e.data.offsetWidth; +} +if(_3b.deltaY!=null&&_3b.deltaY!=undefined){ +top=e.pageY+_3b.deltaY; +}else{ +top=e.pageY-e.data.offsetHeight; +} +}else{ +if(_3b.deltaX!=null&&_3b.deltaX!=undefined){ +_3e+=e.data.offsetWidth+_3b.deltaX; +} +if(_3b.deltaY!=null&&_3b.deltaY!=undefined){ +top+=e.data.offsetHeight+_3b.deltaY; +} +} +} +if(e.data.parent!=document.body){ +_3e+=$(e.data.parent).scrollLeft(); +top+=$(e.data.parent).scrollTop(); +} +if(_3b.axis=="h"){ +_3d.left=_3e; +}else{ +if(_3b.axis=="v"){ +_3d.top=top; +}else{ +_3d.left=_3e; +_3d.top=top; +} +} +}; +function _3f(e){ +var _40=$.data(e.data.target,"draggable"); +var _41=_40.options; +var _42=_40.proxy; +if(!_42){ +_42=$(e.data.target); +} +_42.css({left:e.data.left,top:e.data.top}); +$("body").css("cursor",_41.cursor); +}; +function _43(e){ +if(!$.fn.draggable.isDragging){ +return false; +} +var _44=$.data(e.data.target,"draggable"); +var _45=_44.options; +var _46=$(".droppable:visible").filter(function(){ +return e.data.target!=this; +}).filter(function(){ +var _47=$.data(this,"droppable").options.accept; +if(_47){ +return $(_47).filter(function(){ +return this==e.data.target; +}).length>0; +}else{ +return true; +} +}); +_44.droppables=_46; +var _48=_44.proxy; +if(!_48){ +if(_45.proxy){ +if(_45.proxy=="clone"){ +_48=$(e.data.target).clone().insertAfter(e.data.target); +}else{ +_48=_45.proxy.call(e.data.target,e.data.target); +} +_44.proxy=_48; +}else{ +_48=$(e.data.target); +} +} +_48.css("position","absolute"); +_39(e); +_3f(e); +_45.onStartDrag.call(e.data.target,e); +return false; +}; +function _49(e){ +if(!$.fn.draggable.isDragging){ +return false; +} +var _4a=$.data(e.data.target,"draggable"); +_39(e); +if(_4a.options.onDrag.call(e.data.target,e)!=false){ +_3f(e); +} +var _4b=e.data.target; +_4a.droppables.each(function(){ +var _4c=$(this); +if(_4c.droppable("options").disabled){ +return; +} +var p2=_4c.offset(); +if(e.pageX>p2.left&&e.pageXp2.top&&e.pageYp2.left&&e.pageXp2.top&&e.pageY_62.options.edge; +}; +}); +}; +$.fn.draggable.methods={options:function(jq){ +return $.data(jq[0],"draggable").options; +},proxy:function(jq){ +return $.data(jq[0],"draggable").proxy; +},enable:function(jq){ +return jq.each(function(){ +$(this).draggable({disabled:false}); +}); +},disable:function(jq){ +return jq.each(function(){ +$(this).draggable({disabled:true}); +}); +}}; +$.fn.draggable.parseOptions=function(_67){ +var t=$(_67); +return $.extend({},$.parser.parseOptions(_67,["cursor","handle","axis",{"revert":"boolean","deltaX":"number","deltaY":"number","edge":"number","delay":"number"}]),{disabled:(t.attr("disabled")?true:undefined)}); +}; +$.fn.draggable.defaults={proxy:null,revert:false,cursor:"move",deltaX:null,deltaY:null,handle:null,disabled:false,edge:0,axis:null,delay:100,onBeforeDrag:function(e){ +},onStartDrag:function(e){ +},onDrag:function(e){ +},onStopDrag:function(e){ +}}; +$.fn.draggable.isDragging=false; +})(jQuery); +(function($){ +function _68(_69){ +$(_69).addClass("droppable"); +$(_69).bind("_dragenter",function(e,_6a){ +$.data(_69,"droppable").options.onDragEnter.apply(_69,[e,_6a]); +}); +$(_69).bind("_dragleave",function(e,_6b){ +$.data(_69,"droppable").options.onDragLeave.apply(_69,[e,_6b]); +}); +$(_69).bind("_dragover",function(e,_6c){ +$.data(_69,"droppable").options.onDragOver.apply(_69,[e,_6c]); +}); +$(_69).bind("_drop",function(e,_6d){ +$.data(_69,"droppable").options.onDrop.apply(_69,[e,_6d]); +}); +}; +$.fn.droppable=function(_6e,_6f){ +if(typeof _6e=="string"){ +return $.fn.droppable.methods[_6e](this,_6f); +} +_6e=_6e||{}; +return this.each(function(){ +var _70=$.data(this,"droppable"); +if(_70){ +$.extend(_70.options,_6e); +}else{ +_68(this); +$.data(this,"droppable",{options:$.extend({},$.fn.droppable.defaults,$.fn.droppable.parseOptions(this),_6e)}); +} +}); +}; +$.fn.droppable.methods={options:function(jq){ +return $.data(jq[0],"droppable").options; +},enable:function(jq){ +return jq.each(function(){ +$(this).droppable({disabled:false}); +}); +},disable:function(jq){ +return jq.each(function(){ +$(this).droppable({disabled:true}); +}); +}}; +$.fn.droppable.parseOptions=function(_71){ +var t=$(_71); +return $.extend({},$.parser.parseOptions(_71,["accept"]),{disabled:(t.attr("disabled")?true:undefined)}); +}; +$.fn.droppable.defaults={accept:null,disabled:false,onDragEnter:function(e,_72){ +},onDragOver:function(e,_73){ +},onDragLeave:function(e,_74){ +},onDrop:function(e,_75){ +}}; +})(jQuery); +(function($){ +$.fn.resizable=function(_76,_77){ +if(typeof _76=="string"){ +return $.fn.resizable.methods[_76](this,_77); +} +function _78(e){ +var _79=e.data; +var _7a=$.data(_79.target,"resizable").options; +if(_79.dir.indexOf("e")!=-1){ +var _7b=_79.startWidth+e.pageX-_79.startX; +_7b=Math.min(Math.max(_7b,_7a.minWidth),_7a.maxWidth); +_79.width=_7b; +} +if(_79.dir.indexOf("s")!=-1){ +var _7c=_79.startHeight+e.pageY-_79.startY; +_7c=Math.min(Math.max(_7c,_7a.minHeight),_7a.maxHeight); +_79.height=_7c; +} +if(_79.dir.indexOf("w")!=-1){ +var _7b=_79.startWidth-e.pageX+_79.startX; +_7b=Math.min(Math.max(_7b,_7a.minWidth),_7a.maxWidth); +_79.width=_7b; +_79.left=_79.startLeft+_79.startWidth-_79.width; +} +if(_79.dir.indexOf("n")!=-1){ +var _7c=_79.startHeight-e.pageY+_79.startY; +_7c=Math.min(Math.max(_7c,_7a.minHeight),_7a.maxHeight); +_79.height=_7c; +_79.top=_79.startTop+_79.startHeight-_79.height; +} +}; +function _7d(e){ +var _7e=e.data; +var t=$(_7e.target); +t.css({left:_7e.left,top:_7e.top}); +if(t.outerWidth()!=_7e.width){ +t._outerWidth(_7e.width); +} +if(t.outerHeight()!=_7e.height){ +t._outerHeight(_7e.height); +} +}; +function _7f(e){ +$.fn.resizable.isResizing=true; +$.data(e.data.target,"resizable").options.onStartResize.call(e.data.target,e); +return false; +}; +function _80(e){ +_78(e); +if($.data(e.data.target,"resizable").options.onResize.call(e.data.target,e)!=false){ +_7d(e); +} +return false; +}; +function _81(e){ +$.fn.resizable.isResizing=false; +_78(e,true); +_7d(e); +$.data(e.data.target,"resizable").options.onStopResize.call(e.data.target,e); +$(document).unbind(".resizable"); +$("body").css("cursor",""); +return false; +}; +return this.each(function(){ +var _82=null; +var _83=$.data(this,"resizable"); +if(_83){ +$(this).unbind(".resizable"); +_82=$.extend(_83.options,_76||{}); +}else{ +_82=$.extend({},$.fn.resizable.defaults,$.fn.resizable.parseOptions(this),_76||{}); +$.data(this,"resizable",{options:_82}); +} +if(_82.disabled==true){ +return; +} +$(this).bind("mousemove.resizable",{target:this},function(e){ +if($.fn.resizable.isResizing){ +return; +} +var dir=_84(e); +if(dir==""){ +$(e.data.target).css("cursor",""); +}else{ +$(e.data.target).css("cursor",dir+"-resize"); +} +}).bind("mouseleave.resizable",{target:this},function(e){ +$(e.data.target).css("cursor",""); +}).bind("mousedown.resizable",{target:this},function(e){ +var dir=_84(e); +if(dir==""){ +return; +} +function _85(css){ +var val=parseInt($(e.data.target).css(css)); +if(isNaN(val)){ +return 0; +}else{ +return val; +} +}; +var _86={target:e.data.target,dir:dir,startLeft:_85("left"),startTop:_85("top"),left:_85("left"),top:_85("top"),startX:e.pageX,startY:e.pageY,startWidth:$(e.data.target).outerWidth(),startHeight:$(e.data.target).outerHeight(),width:$(e.data.target).outerWidth(),height:$(e.data.target).outerHeight(),deltaWidth:$(e.data.target).outerWidth()-$(e.data.target).width(),deltaHeight:$(e.data.target).outerHeight()-$(e.data.target).height()}; +$(document).bind("mousedown.resizable",_86,_7f); +$(document).bind("mousemove.resizable",_86,_80); +$(document).bind("mouseup.resizable",_86,_81); +$("body").css("cursor",dir+"-resize"); +}); +function _84(e){ +var tt=$(e.data.target); +var dir=""; +var _87=tt.offset(); +var _88=tt.outerWidth(); +var _89=tt.outerHeight(); +var _8a=_82.edge; +if(e.pageY>_87.top&&e.pageY<_87.top+_8a){ +dir+="n"; +}else{ +if(e.pageY<_87.top+_89&&e.pageY>_87.top+_89-_8a){ +dir+="s"; +} +} +if(e.pageX>_87.left&&e.pageX<_87.left+_8a){ +dir+="w"; +}else{ +if(e.pageX<_87.left+_88&&e.pageX>_87.left+_88-_8a){ +dir+="e"; +} +} +var _8b=_82.handles.split(","); +for(var i=0;i<_8b.length;i++){ +var _8c=_8b[i].replace(/(^\s*)|(\s*$)/g,""); +if(_8c=="all"||_8c==dir){ +return dir; +} +} +return ""; +}; +}); +}; +$.fn.resizable.methods={options:function(jq){ +return $.data(jq[0],"resizable").options; +},enable:function(jq){ +return jq.each(function(){ +$(this).resizable({disabled:false}); +}); +},disable:function(jq){ +return jq.each(function(){ +$(this).resizable({disabled:true}); +}); +}}; +$.fn.resizable.parseOptions=function(_8d){ +var t=$(_8d); +return $.extend({},$.parser.parseOptions(_8d,["handles",{minWidth:"number",minHeight:"number",maxWidth:"number",maxHeight:"number",edge:"number"}]),{disabled:(t.attr("disabled")?true:undefined)}); +}; +$.fn.resizable.defaults={disabled:false,handles:"n, e, s, w, ne, se, sw, nw, all",minWidth:10,minHeight:10,maxWidth:10000,maxHeight:10000,edge:5,onStartResize:function(e){ +},onResize:function(e){ +},onStopResize:function(e){ +}}; +$.fn.resizable.isResizing=false; +})(jQuery); +(function($){ +function _8e(_8f,_90){ +var _91=$.data(_8f,"linkbutton").options; +if(_90){ +$.extend(_91,_90); +} +if(_91.width||_91.height||_91.fit){ +var btn=$(_8f); +var _92=btn.parent(); +var _93=btn.is(":visible"); +if(!_93){ +var _94=$("
").insertBefore(_8f); +var _95={position:btn.css("position"),display:btn.css("display"),left:btn.css("left")}; +btn.appendTo("body"); +btn.css({position:"absolute",display:"inline-block",left:-20000}); +} +btn._size(_91,_92); +var _96=btn.find(".l-btn-left"); +_96.css("margin-top",0); +_96.css("margin-top",parseInt((btn.height()-_96.height())/2)+"px"); +if(!_93){ +btn.insertAfter(_94); +btn.css(_95); +_94.remove(); +} +} +}; +function _97(_98){ +var _99=$.data(_98,"linkbutton").options; +var t=$(_98).empty(); +t.addClass("l-btn").removeClass("l-btn-plain l-btn-selected l-btn-plain-selected l-btn-outline"); +t.removeClass("l-btn-small l-btn-medium l-btn-large").addClass("l-btn-"+_99.size); +if(_99.plain){ +t.addClass("l-btn-plain"); +} +if(_99.outline){ +t.addClass("l-btn-outline"); +} +if(_99.selected){ +t.addClass(_99.plain?"l-btn-selected l-btn-plain-selected":"l-btn-selected"); +} +t.attr("group",_99.group||""); +t.attr("id",_99.id||""); +var _9a=$("").appendTo(t); +if(_99.text){ +$("").html(_99.text).appendTo(_9a); +}else{ +$(" ").appendTo(_9a); +} +if(_99.iconCls){ +$(" ").addClass(_99.iconCls).appendTo(_9a); +_9a.addClass("l-btn-icon-"+_99.iconAlign); +} +t.unbind(".linkbutton").bind("focus.linkbutton",function(){ +if(!_99.disabled){ +$(this).addClass("l-btn-focus"); +} +}).bind("blur.linkbutton",function(){ +$(this).removeClass("l-btn-focus"); +}).bind("click.linkbutton",function(){ +if(!_99.disabled){ +if(_99.toggle){ +if(_99.selected){ +$(this).linkbutton("unselect"); +}else{ +$(this).linkbutton("select"); +} +} +_99.onClick.call(this); +} +}); +_9b(_98,_99.selected); +_9c(_98,_99.disabled); +}; +function _9b(_9d,_9e){ +var _9f=$.data(_9d,"linkbutton").options; +if(_9e){ +if(_9f.group){ +$("a.l-btn[group=\""+_9f.group+"\"]").each(function(){ +var o=$(this).linkbutton("options"); +if(o.toggle){ +$(this).removeClass("l-btn-selected l-btn-plain-selected"); +o.selected=false; +} +}); +} +$(_9d).addClass(_9f.plain?"l-btn-selected l-btn-plain-selected":"l-btn-selected"); +_9f.selected=true; +}else{ +if(!_9f.group){ +$(_9d).removeClass("l-btn-selected l-btn-plain-selected"); +_9f.selected=false; +} +} +}; +function _9c(_a0,_a1){ +var _a2=$.data(_a0,"linkbutton"); +var _a3=_a2.options; +$(_a0).removeClass("l-btn-disabled l-btn-plain-disabled"); +if(_a1){ +_a3.disabled=true; +var _a4=$(_a0).attr("href"); +if(_a4){ +_a2.href=_a4; +$(_a0).attr("href","javascript:;"); +} +if(_a0.onclick){ +_a2.onclick=_a0.onclick; +_a0.onclick=null; +} +_a3.plain?$(_a0).addClass("l-btn-disabled l-btn-plain-disabled"):$(_a0).addClass("l-btn-disabled"); +}else{ +_a3.disabled=false; +if(_a2.href){ +$(_a0).attr("href",_a2.href); +} +if(_a2.onclick){ +_a0.onclick=_a2.onclick; +} +} +}; +$.fn.linkbutton=function(_a5,_a6){ +if(typeof _a5=="string"){ +return $.fn.linkbutton.methods[_a5](this,_a6); +} +_a5=_a5||{}; +return this.each(function(){ +var _a7=$.data(this,"linkbutton"); +if(_a7){ +$.extend(_a7.options,_a5); +}else{ +$.data(this,"linkbutton",{options:$.extend({},$.fn.linkbutton.defaults,$.fn.linkbutton.parseOptions(this),_a5)}); +$(this).removeAttr("disabled"); +$(this).bind("_resize",function(e,_a8){ +if($(this).hasClass("easyui-fluid")||_a8){ +_8e(this); +} +return false; +}); +} +_97(this); +_8e(this); +}); +}; +$.fn.linkbutton.methods={options:function(jq){ +return $.data(jq[0],"linkbutton").options; +},resize:function(jq,_a9){ +return jq.each(function(){ +_8e(this,_a9); +}); +},enable:function(jq){ +return jq.each(function(){ +_9c(this,false); +}); +},disable:function(jq){ +return jq.each(function(){ +_9c(this,true); +}); +},select:function(jq){ +return jq.each(function(){ +_9b(this,true); +}); +},unselect:function(jq){ +return jq.each(function(){ +_9b(this,false); +}); +}}; +$.fn.linkbutton.parseOptions=function(_aa){ +var t=$(_aa); +return $.extend({},$.parser.parseOptions(_aa,["id","iconCls","iconAlign","group","size","text",{plain:"boolean",toggle:"boolean",selected:"boolean",outline:"boolean"}]),{disabled:(t.attr("disabled")?true:undefined),text:($.trim(t.html())||undefined),iconCls:(t.attr("icon")||t.attr("iconCls"))}); +}; +$.fn.linkbutton.defaults={id:null,disabled:false,toggle:false,selected:false,outline:false,group:null,plain:false,text:"",iconCls:null,iconAlign:"left",size:"small",onClick:function(){ +}}; +})(jQuery); +(function($){ +function _ab(_ac){ +var _ad=$.data(_ac,"pagination"); +var _ae=_ad.options; +var bb=_ad.bb={}; +var _af=$(_ac).addClass("pagination").html("
"); +var tr=_af.find("tr"); +var aa=$.extend([],_ae.layout); +if(!_ae.showPageList){ +_b0(aa,"list"); +} +if(!_ae.showPageInfo){ +_b0(aa,"info"); +} +if(!_ae.showRefresh){ +_b0(aa,"refresh"); +} +if(aa[0]=="sep"){ +aa.shift(); +} +if(aa[aa.length-1]=="sep"){ +aa.pop(); +} +for(var _b1=0;_b1"); +ps.bind("change",function(){ +_ae.pageSize=parseInt($(this).val()); +_ae.onChangePageSize.call(_ac,_ae.pageSize); +_b8(_ac,_ae.pageNumber); +}); +for(var i=0;i<_ae.pageList.length;i++){ +$("").text(_ae.pageList[i]).appendTo(ps); +} +$("").append(ps).appendTo(tr); +}else{ +if(_b2=="sep"){ +$("
").appendTo(tr); +}else{ +if(_b2=="first"){ +bb.first=_b3("first"); +}else{ +if(_b2=="prev"){ +bb.prev=_b3("prev"); +}else{ +if(_b2=="next"){ +bb.next=_b3("next"); +}else{ +if(_b2=="last"){ +bb.last=_b3("last"); +}else{ +if(_b2=="manual"){ +$("").html(_ae.beforePageText).appendTo(tr).wrap(""); +bb.num=$("").appendTo(tr).wrap(""); +bb.num.unbind(".pagination").bind("keydown.pagination",function(e){ +if(e.keyCode==13){ +var _b4=parseInt($(this).val())||1; +_b8(_ac,_b4); +return false; +} +}); +bb.after=$("").appendTo(tr).wrap(""); +}else{ +if(_b2=="refresh"){ +bb.refresh=_b3("refresh"); +}else{ +if(_b2=="links"){ +$("").appendTo(tr); +}else{ +if(_b2=="info"){ +if(_b1==aa.length-1){ +$("
").appendTo(_af); +$("
").appendTo(_af); +}else{ +$("
").appendTo(tr); +} +} +} +} +} +} +} +} +} +} +} +} +if(_ae.buttons){ +$("
").appendTo(tr); +if($.isArray(_ae.buttons)){ +for(var i=0;i<_ae.buttons.length;i++){ +var btn=_ae.buttons[i]; +if(btn=="-"){ +$("
").appendTo(tr); +}else{ +var td=$("").appendTo(tr); +var a=$("
").appendTo(td); +a[0].onclick=eval(btn.handler||function(){ +}); +a.linkbutton($.extend({},btn,{plain:true})); +} +} +}else{ +var td=$("").appendTo(tr); +$(_ae.buttons).appendTo(td).show(); +} +} +function _b3(_b5){ +var btn=_ae.nav[_b5]; +var a=$("").appendTo(tr); +a.wrap(""); +a.linkbutton({iconCls:btn.iconCls,plain:true}).unbind(".pagination").bind("click.pagination",function(){ +btn.handler.call(_ac); +}); +return a; +}; +function _b0(aa,_b6){ +var _b7=$.inArray(_b6,aa); +if(_b7>=0){ +aa.splice(_b7,1); +} +return aa; +}; +}; +function _b8(_b9,_ba){ +var _bb=$.data(_b9,"pagination").options; +_bc(_b9,{pageNumber:_ba}); +_bb.onSelectPage.call(_b9,_bb.pageNumber,_bb.pageSize); +}; +function _bc(_bd,_be){ +var _bf=$.data(_bd,"pagination"); +var _c0=_bf.options; +var bb=_bf.bb; +$.extend(_c0,_be||{}); +var ps=$(_bd).find("select.pagination-page-list"); +if(ps.length){ +ps.val(_c0.pageSize+""); +_c0.pageSize=parseInt(ps.val()); +} +var _c1=Math.ceil(_c0.total/_c0.pageSize)||1; +if(_c0.pageNumber<1){ +_c0.pageNumber=1; +} +if(_c0.pageNumber>_c1){ +_c0.pageNumber=_c1; +} +if(_c0.total==0){ +_c0.pageNumber=0; +_c1=0; +} +if(bb.num){ +bb.num.val(_c0.pageNumber); +} +if(bb.after){ +bb.after.html(_c0.afterPageText.replace(/{pages}/,_c1)); +} +var td=$(_bd).find("td.pagination-links"); +if(td.length){ +td.empty(); +var _c2=_c0.pageNumber-Math.floor(_c0.links/2); +if(_c2<1){ +_c2=1; +} +var _c3=_c2+_c0.links-1; +if(_c3>_c1){ +_c3=_c1; +} +_c2=_c3-_c0.links+1; +if(_c2<1){ +_c2=1; +} +for(var i=_c2;i<=_c3;i++){ +var a=$("").appendTo(td); +a.linkbutton({plain:true,text:i}); +if(i==_c0.pageNumber){ +a.linkbutton("select"); +}else{ +a.unbind(".pagination").bind("click.pagination",{pageNumber:i},function(e){ +_b8(_bd,e.data.pageNumber); +}); +} +} +} +var _c4=_c0.displayMsg; +_c4=_c4.replace(/{from}/,_c0.total==0?0:_c0.pageSize*(_c0.pageNumber-1)+1); +_c4=_c4.replace(/{to}/,Math.min(_c0.pageSize*(_c0.pageNumber),_c0.total)); +_c4=_c4.replace(/{total}/,_c0.total); +$(_bd).find("div.pagination-info").html(_c4); +if(bb.first){ +bb.first.linkbutton({disabled:((!_c0.total)||_c0.pageNumber==1)}); +} +if(bb.prev){ +bb.prev.linkbutton({disabled:((!_c0.total)||_c0.pageNumber==1)}); +} +if(bb.next){ +bb.next.linkbutton({disabled:(_c0.pageNumber==_c1)}); +} +if(bb.last){ +bb.last.linkbutton({disabled:(_c0.pageNumber==_c1)}); +} +_c5(_bd,_c0.loading); +}; +function _c5(_c6,_c7){ +var _c8=$.data(_c6,"pagination"); +var _c9=_c8.options; +_c9.loading=_c7; +if(_c9.showRefresh&&_c8.bb.refresh){ +_c8.bb.refresh.linkbutton({iconCls:(_c9.loading?"pagination-loading":"pagination-load")}); +} +}; +$.fn.pagination=function(_ca,_cb){ +if(typeof _ca=="string"){ +return $.fn.pagination.methods[_ca](this,_cb); +} +_ca=_ca||{}; +return this.each(function(){ +var _cc; +var _cd=$.data(this,"pagination"); +if(_cd){ +_cc=$.extend(_cd.options,_ca); +}else{ +_cc=$.extend({},$.fn.pagination.defaults,$.fn.pagination.parseOptions(this),_ca); +$.data(this,"pagination",{options:_cc}); +} +_ab(this); +_bc(this); +}); +}; +$.fn.pagination.methods={options:function(jq){ +return $.data(jq[0],"pagination").options; +},loading:function(jq){ +return jq.each(function(){ +_c5(this,true); +}); +},loaded:function(jq){ +return jq.each(function(){ +_c5(this,false); +}); +},refresh:function(jq,_ce){ +return jq.each(function(){ +_bc(this,_ce); +}); +},select:function(jq,_cf){ +return jq.each(function(){ +_b8(this,_cf); +}); +}}; +$.fn.pagination.parseOptions=function(_d0){ +var t=$(_d0); +return $.extend({},$.parser.parseOptions(_d0,[{total:"number",pageSize:"number",pageNumber:"number",links:"number"},{loading:"boolean",showPageList:"boolean",showPageInfo:"boolean",showRefresh:"boolean"}]),{pageList:(t.attr("pageList")?eval(t.attr("pageList")):undefined)}); +}; +$.fn.pagination.defaults={total:1,pageSize:10,pageNumber:1,pageList:[10,20,30,50],loading:false,buttons:null,showPageList:true,showPageInfo:true,showRefresh:true,links:10,layout:["list","sep","first","prev","sep","manual","sep","next","last","sep","refresh","info"],onSelectPage:function(_d1,_d2){ +},onBeforeRefresh:function(_d3,_d4){ +},onRefresh:function(_d5,_d6){ +},onChangePageSize:function(_d7){ +},beforePageText:"Page",afterPageText:"of {pages}",displayMsg:"Displaying {from} to {to} of {total} items",nav:{first:{iconCls:"pagination-first",handler:function(){ +var _d8=$(this).pagination("options"); +if(_d8.pageNumber>1){ +$(this).pagination("select",1); +} +}},prev:{iconCls:"pagination-prev",handler:function(){ +var _d9=$(this).pagination("options"); +if(_d9.pageNumber>1){ +$(this).pagination("select",_d9.pageNumber-1); +} +}},next:{iconCls:"pagination-next",handler:function(){ +var _da=$(this).pagination("options"); +var _db=Math.ceil(_da.total/_da.pageSize); +if(_da.pageNumber<_db){ +$(this).pagination("select",_da.pageNumber+1); +} +}},last:{iconCls:"pagination-last",handler:function(){ +var _dc=$(this).pagination("options"); +var _dd=Math.ceil(_dc.total/_dc.pageSize); +if(_dc.pageNumber<_dd){ +$(this).pagination("select",_dd); +} +}},refresh:{iconCls:"pagination-refresh",handler:function(){ +var _de=$(this).pagination("options"); +if(_de.onBeforeRefresh.call(this,_de.pageNumber,_de.pageSize)!=false){ +$(this).pagination("select",_de.pageNumber); +_de.onRefresh.call(this,_de.pageNumber,_de.pageSize); +} +}}}}; +})(jQuery); +(function($){ +function _df(_e0){ +var _e1=$(_e0); +_e1.addClass("tree"); +return _e1; +}; +function _e2(_e3){ +var _e4=$.data(_e3,"tree").options; +$(_e3).unbind().bind("mouseover",function(e){ +var tt=$(e.target); +var _e5=tt.closest("div.tree-node"); +if(!_e5.length){ +return; +} +_e5.addClass("tree-node-hover"); +if(tt.hasClass("tree-hit")){ +if(tt.hasClass("tree-expanded")){ +tt.addClass("tree-expanded-hover"); +}else{ +tt.addClass("tree-collapsed-hover"); +} +} +e.stopPropagation(); +}).bind("mouseout",function(e){ +var tt=$(e.target); +var _e6=tt.closest("div.tree-node"); +if(!_e6.length){ +return; +} +_e6.removeClass("tree-node-hover"); +if(tt.hasClass("tree-hit")){ +if(tt.hasClass("tree-expanded")){ +tt.removeClass("tree-expanded-hover"); +}else{ +tt.removeClass("tree-collapsed-hover"); +} +} +e.stopPropagation(); +}).bind("click",function(e){ +var tt=$(e.target); +var _e7=tt.closest("div.tree-node"); +if(!_e7.length){ +return; +} +if(tt.hasClass("tree-hit")){ +_145(_e3,_e7[0]); +return false; +}else{ +if(tt.hasClass("tree-checkbox")){ +_10c(_e3,_e7[0]); +return false; +}else{ +_188(_e3,_e7[0]); +_e4.onClick.call(_e3,_ea(_e3,_e7[0])); +} +} +e.stopPropagation(); +}).bind("dblclick",function(e){ +var _e8=$(e.target).closest("div.tree-node"); +if(!_e8.length){ +return; +} +_188(_e3,_e8[0]); +_e4.onDblClick.call(_e3,_ea(_e3,_e8[0])); +e.stopPropagation(); +}).bind("contextmenu",function(e){ +var _e9=$(e.target).closest("div.tree-node"); +if(!_e9.length){ +return; +} +_e4.onContextMenu.call(_e3,e,_ea(_e3,_e9[0])); +e.stopPropagation(); +}); +}; +function _eb(_ec){ +var _ed=$.data(_ec,"tree").options; +_ed.dnd=false; +var _ee=$(_ec).find("div.tree-node"); +_ee.draggable("disable"); +_ee.css("cursor","pointer"); +}; +function _ef(_f0){ +var _f1=$.data(_f0,"tree"); +var _f2=_f1.options; +var _f3=_f1.tree; +_f1.disabledNodes=[]; +_f2.dnd=true; +_f3.find("div.tree-node").draggable({disabled:false,revert:true,cursor:"pointer",proxy:function(_f4){ +var p=$("
").appendTo("body"); +p.html(" "+$(_f4).find(".tree-title").html()); +p.hide(); +return p; +},deltaX:15,deltaY:15,onBeforeDrag:function(e){ +if(_f2.onBeforeDrag.call(_f0,_ea(_f0,this))==false){ +return false; +} +if($(e.target).hasClass("tree-hit")||$(e.target).hasClass("tree-checkbox")){ +return false; +} +if(e.which!=1){ +return false; +} +var _f5=$(this).find("span.tree-indent"); +if(_f5.length){ +e.data.offsetWidth-=_f5.length*_f5.width(); +} +},onStartDrag:function(e){ +$(this).next("ul").find("div.tree-node").each(function(){ +$(this).droppable("disable"); +_f1.disabledNodes.push(this); +}); +$(this).draggable("proxy").css({left:-10000,top:-10000}); +_f2.onStartDrag.call(_f0,_ea(_f0,this)); +var _f6=_ea(_f0,this); +if(_f6.id==undefined){ +_f6.id="easyui_tree_node_id_temp"; +_12c(_f0,_f6); +} +_f1.draggingNodeId=_f6.id; +},onDrag:function(e){ +var x1=e.pageX,y1=e.pageY,x2=e.data.startX,y2=e.data.startY; +var d=Math.sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)); +if(d>3){ +$(this).draggable("proxy").show(); +} +this.pageY=e.pageY; +},onStopDrag:function(){ +for(var i=0;i<_f1.disabledNodes.length;i++){ +$(_f1.disabledNodes[i]).droppable("enable"); +} +_f1.disabledNodes=[]; +var _f7=_182(_f0,_f1.draggingNodeId); +if(_f7&&_f7.id=="easyui_tree_node_id_temp"){ +_f7.id=""; +_12c(_f0,_f7); +} +_f2.onStopDrag.call(_f0,_f7); +}}).droppable({accept:"div.tree-node",onDragEnter:function(e,_f8){ +if(_f2.onDragEnter.call(_f0,this,_f9(_f8))==false){ +_fa(_f8,false); +$(this).removeClass("tree-node-append tree-node-top tree-node-bottom"); +$(this).droppable("disable"); +_f1.disabledNodes.push(this); +} +},onDragOver:function(e,_fb){ +if($(this).droppable("options").disabled){ +return; +} +var _fc=_fb.pageY; +var top=$(this).offset().top; +var _fd=top+$(this).outerHeight(); +_fa(_fb,true); +$(this).removeClass("tree-node-append tree-node-top tree-node-bottom"); +if(_fc>top+(_fd-top)/2){ +if(_fd-_fc<5){ +$(this).addClass("tree-node-bottom"); +}else{ +$(this).addClass("tree-node-append"); +} +}else{ +if(_fc-top<5){ +$(this).addClass("tree-node-top"); +}else{ +$(this).addClass("tree-node-append"); +} +} +if(_f2.onDragOver.call(_f0,this,_f9(_fb))==false){ +_fa(_fb,false); +$(this).removeClass("tree-node-append tree-node-top tree-node-bottom"); +$(this).droppable("disable"); +_f1.disabledNodes.push(this); +} +},onDragLeave:function(e,_fe){ +_fa(_fe,false); +$(this).removeClass("tree-node-append tree-node-top tree-node-bottom"); +_f2.onDragLeave.call(_f0,this,_f9(_fe)); +},onDrop:function(e,_ff){ +var dest=this; +var _100,_101; +if($(this).hasClass("tree-node-append")){ +_100=_102; +_101="append"; +}else{ +_100=_103; +_101=$(this).hasClass("tree-node-top")?"top":"bottom"; +} +if(_f2.onBeforeDrop.call(_f0,dest,_f9(_ff),_101)==false){ +$(this).removeClass("tree-node-append tree-node-top tree-node-bottom"); +return; +} +_100(_ff,dest,_101); +$(this).removeClass("tree-node-append tree-node-top tree-node-bottom"); +}}); +function _f9(_104,pop){ +return $(_104).closest("ul.tree").tree(pop?"pop":"getData",_104); +}; +function _fa(_105,_106){ +var icon=$(_105).draggable("proxy").find("span.tree-dnd-icon"); +icon.removeClass("tree-dnd-yes tree-dnd-no").addClass(_106?"tree-dnd-yes":"tree-dnd-no"); +}; +function _102(_107,dest){ +if(_ea(_f0,dest).state=="closed"){ +_13d(_f0,dest,function(){ +_108(); +}); +}else{ +_108(); +} +function _108(){ +var node=_f9(_107,true); +$(_f0).tree("append",{parent:dest,data:[node]}); +_f2.onDrop.call(_f0,dest,node,"append"); +}; +}; +function _103(_109,dest,_10a){ +var _10b={}; +if(_10a=="top"){ +_10b.before=dest; +}else{ +_10b.after=dest; +} +var node=_f9(_109,true); +_10b.data=node; +$(_f0).tree("insert",_10b); +_f2.onDrop.call(_f0,dest,node,_10a); +}; +}; +function _10c(_10d,_10e,_10f,_110){ +var _111=$.data(_10d,"tree"); +var opts=_111.options; +if(!opts.checkbox){ +return; +} +var _112=_ea(_10d,_10e); +if(!_112.checkState){ +return; +} +var ck=$(_10e).find(".tree-checkbox"); +if(_10f==undefined){ +if(ck.hasClass("tree-checkbox1")){ +_10f=false; +}else{ +if(ck.hasClass("tree-checkbox0")){ +_10f=true; +}else{ +if(_112._checked==undefined){ +_112._checked=$(_10e).find(".tree-checkbox").hasClass("tree-checkbox1"); +} +_10f=!_112._checked; +} +} +} +_112._checked=_10f; +if(_10f){ +if(ck.hasClass("tree-checkbox1")){ +return; +} +}else{ +if(ck.hasClass("tree-checkbox0")){ +return; +} +} +if(!_110){ +if(opts.onBeforeCheck.call(_10d,_112,_10f)==false){ +return; +} +} +if(opts.cascadeCheck){ +_113(_10d,_112,_10f); +_114(_10d,_112); +}else{ +_115(_10d,_112,_10f?"1":"0"); +} +if(!_110){ +opts.onCheck.call(_10d,_112,_10f); +} +}; +function _113(_116,_117,_118){ +var opts=$.data(_116,"tree").options; +var flag=_118?1:0; +_115(_116,_117,flag); +if(opts.deepCheck){ +$.easyui.forEach(_117.children||[],true,function(n){ +_115(_116,n,flag); +}); +}else{ +var _119=[]; +if(_117.children&&_117.children.length){ +_119.push(_117); +} +$.easyui.forEach(_117.children||[],true,function(n){ +if(!n.hidden){ +_115(_116,n,flag); +if(n.children&&n.children.length){ +_119.push(n); +} +} +}); +for(var i=_119.length-1;i>=0;i--){ +var node=_119[i]; +_115(_116,node,_11a(node)); +} +} +}; +function _115(_11b,_11c,flag){ +var opts=$.data(_11b,"tree").options; +if(!_11c.checkState||flag==undefined){ +return; +} +if(_11c.hidden&&!opts.deepCheck){ +return; +} +var ck=$("#"+_11c.domId).find(".tree-checkbox"); +_11c.checkState=["unchecked","checked","indeterminate"][flag]; +_11c.checked=(_11c.checkState=="checked"); +ck.removeClass("tree-checkbox0 tree-checkbox1 tree-checkbox2"); +ck.addClass("tree-checkbox"+flag); +}; +function _114(_11d,_11e){ +var pd=_11f(_11d,$("#"+_11e.domId)[0]); +if(pd){ +_115(_11d,pd,_11a(pd)); +_114(_11d,pd); +} +}; +function _11a(row){ +var c0=0; +var c1=0; +var len=0; +$.easyui.forEach(row.children||[],false,function(r){ +if(r.checkState){ +len++; +if(r.checkState=="checked"){ +c1++; +}else{ +if(r.checkState=="unchecked"){ +c0++; +} +} +} +}); +if(len==0){ +return undefined; +} +var flag=0; +if(c0==len){ +flag=0; +}else{ +if(c1==len){ +flag=1; +}else{ +flag=2; +} +} +return flag; +}; +function _120(_121,_122){ +var opts=$.data(_121,"tree").options; +if(!opts.checkbox){ +return; +} +var node=$(_122); +var ck=node.find(".tree-checkbox"); +var _123=_ea(_121,_122); +if(opts.view.hasCheckbox(_121,_123)){ +if(!ck.length){ +_123.checkState=_123.checkState||"unchecked"; +$("").insertBefore(node.find(".tree-title")); +} +if(_123.checkState=="checked"){ +_10c(_121,_122,true,true); +}else{ +if(_123.checkState=="unchecked"){ +_10c(_121,_122,false,true); +}else{ +var flag=_11a(_123); +if(flag===0){ +_10c(_121,_122,false,true); +}else{ +if(flag===1){ +_10c(_121,_122,true,true); +} +} +} +} +}else{ +ck.remove(); +_123.checkState=undefined; +_123.checked=undefined; +_114(_121,_123); +} +}; +function _124(_125,ul,data,_126,_127){ +var _128=$.data(_125,"tree"); +var opts=_128.options; +var _129=$(ul).prevAll("div.tree-node:first"); +data=opts.loadFilter.call(_125,data,_129[0]); +var _12a=_12b(_125,"domId",_129.attr("id")); +if(!_126){ +_12a?_12a.children=data:_128.data=data; +$(ul).empty(); +}else{ +if(_12a){ +_12a.children?_12a.children=_12a.children.concat(data):_12a.children=data; +}else{ +_128.data=_128.data.concat(data); +} +} +opts.view.render.call(opts.view,_125,ul,data); +if(opts.dnd){ +_ef(_125); +} +if(_12a){ +_12c(_125,_12a); +} +for(var i=0;i<_128.tmpIds.length;i++){ +_10c(_125,$("#"+_128.tmpIds[i])[0],true,true); +} +_128.tmpIds=[]; +setTimeout(function(){ +_12d(_125,_125); +},0); +if(!_127){ +opts.onLoadSuccess.call(_125,_12a,data); +} +}; +function _12d(_12e,ul,_12f){ +var opts=$.data(_12e,"tree").options; +if(opts.lines){ +$(_12e).addClass("tree-lines"); +}else{ +$(_12e).removeClass("tree-lines"); +return; +} +if(!_12f){ +_12f=true; +$(_12e).find("span.tree-indent").removeClass("tree-line tree-join tree-joinbottom"); +$(_12e).find("div.tree-node").removeClass("tree-node-last tree-root-first tree-root-one"); +var _130=$(_12e).tree("getRoots"); +if(_130.length>1){ +$(_130[0].target).addClass("tree-root-first"); +}else{ +if(_130.length==1){ +$(_130[0].target).addClass("tree-root-one"); +} +} +} +$(ul).children("li").each(function(){ +var node=$(this).children("div.tree-node"); +var ul=node.next("ul"); +if(ul.length){ +if($(this).next().length){ +_131(node); +} +_12d(_12e,ul,_12f); +}else{ +_132(node); +} +}); +var _133=$(ul).children("li:last").children("div.tree-node").addClass("tree-node-last"); +_133.children("span.tree-join").removeClass("tree-join").addClass("tree-joinbottom"); +function _132(node,_134){ +var icon=node.find("span.tree-icon"); +icon.prev("span.tree-indent").addClass("tree-join"); +}; +function _131(node){ +var _135=node.find("span.tree-indent, span.tree-hit").length; +node.next().find("div.tree-node").each(function(){ +$(this).children("span:eq("+(_135-1)+")").addClass("tree-line"); +}); +}; +}; +function _136(_137,ul,_138,_139){ +var opts=$.data(_137,"tree").options; +_138=$.extend({},opts.queryParams,_138||{}); +var _13a=null; +if(_137!=ul){ +var node=$(ul).prev(); +_13a=_ea(_137,node[0]); +} +if(opts.onBeforeLoad.call(_137,_13a,_138)==false){ +return; +} +var _13b=$(ul).prev().children("span.tree-folder"); +_13b.addClass("tree-loading"); +var _13c=opts.loader.call(_137,_138,function(data){ +_13b.removeClass("tree-loading"); +_124(_137,ul,data); +if(_139){ +_139(); +} +},function(){ +_13b.removeClass("tree-loading"); +opts.onLoadError.apply(_137,arguments); +if(_139){ +_139(); +} +}); +if(_13c==false){ +_13b.removeClass("tree-loading"); +} +}; +function _13d(_13e,_13f,_140){ +var opts=$.data(_13e,"tree").options; +var hit=$(_13f).children("span.tree-hit"); +if(hit.length==0){ +return; +} +if(hit.hasClass("tree-expanded")){ +return; +} +var node=_ea(_13e,_13f); +if(opts.onBeforeExpand.call(_13e,node)==false){ +return; +} +hit.removeClass("tree-collapsed tree-collapsed-hover").addClass("tree-expanded"); +hit.next().addClass("tree-folder-open"); +var ul=$(_13f).next(); +if(ul.length){ +if(opts.animate){ +ul.slideDown("normal",function(){ +node.state="open"; +opts.onExpand.call(_13e,node); +if(_140){ +_140(); +} +}); +}else{ +ul.css("display","block"); +node.state="open"; +opts.onExpand.call(_13e,node); +if(_140){ +_140(); +} +} +}else{ +var _141=$("
    ").insertAfter(_13f); +_136(_13e,_141[0],{id:node.id},function(){ +if(_141.is(":empty")){ +_141.remove(); +} +if(opts.animate){ +_141.slideDown("normal",function(){ +node.state="open"; +opts.onExpand.call(_13e,node); +if(_140){ +_140(); +} +}); +}else{ +_141.css("display","block"); +node.state="open"; +opts.onExpand.call(_13e,node); +if(_140){ +_140(); +} +} +}); +} +}; +function _142(_143,_144){ +var opts=$.data(_143,"tree").options; +var hit=$(_144).children("span.tree-hit"); +if(hit.length==0){ +return; +} +if(hit.hasClass("tree-collapsed")){ +return; +} +var node=_ea(_143,_144); +if(opts.onBeforeCollapse.call(_143,node)==false){ +return; +} +hit.removeClass("tree-expanded tree-expanded-hover").addClass("tree-collapsed"); +hit.next().removeClass("tree-folder-open"); +var ul=$(_144).next(); +if(opts.animate){ +ul.slideUp("normal",function(){ +node.state="closed"; +opts.onCollapse.call(_143,node); +}); +}else{ +ul.css("display","none"); +node.state="closed"; +opts.onCollapse.call(_143,node); +} +}; +function _145(_146,_147){ +var hit=$(_147).children("span.tree-hit"); +if(hit.length==0){ +return; +} +if(hit.hasClass("tree-expanded")){ +_142(_146,_147); +}else{ +_13d(_146,_147); +} +}; +function _148(_149,_14a){ +var _14b=_14c(_149,_14a); +if(_14a){ +_14b.unshift(_ea(_149,_14a)); +} +for(var i=0;i<_14b.length;i++){ +_13d(_149,_14b[i].target); +} +}; +function _14d(_14e,_14f){ +var _150=[]; +var p=_11f(_14e,_14f); +while(p){ +_150.unshift(p); +p=_11f(_14e,p.target); +} +for(var i=0;i<_150.length;i++){ +_13d(_14e,_150[i].target); +} +}; +function _151(_152,_153){ +var c=$(_152).parent(); +while(c[0].tagName!="BODY"&&c.css("overflow-y")!="auto"){ +c=c.parent(); +} +var n=$(_153); +var ntop=n.offset().top; +if(c[0].tagName!="BODY"){ +var ctop=c.offset().top; +if(ntopctop+c.outerHeight()-18){ +c.scrollTop(c.scrollTop()+ntop+n.outerHeight()-ctop-c.outerHeight()+18); +} +} +}else{ +c.scrollTop(ntop); +} +}; +function _154(_155,_156){ +var _157=_14c(_155,_156); +if(_156){ +_157.unshift(_ea(_155,_156)); +} +for(var i=0;i<_157.length;i++){ +_142(_155,_157[i].target); +} +}; +function _158(_159,_15a){ +var node=$(_15a.parent); +var data=_15a.data; +if(!data){ +return; +} +data=$.isArray(data)?data:[data]; +if(!data.length){ +return; +} +var ul; +if(node.length==0){ +ul=$(_159); +}else{ +if(_15b(_159,node[0])){ +var _15c=node.find("span.tree-icon"); +_15c.removeClass("tree-file").addClass("tree-folder tree-folder-open"); +var hit=$("").insertBefore(_15c); +if(hit.prev().length){ +hit.prev().remove(); +} +} +ul=node.next(); +if(!ul.length){ +ul=$("
      ").insertAfter(node); +} +} +_124(_159,ul[0],data,true,true); +}; +function _15d(_15e,_15f){ +var ref=_15f.before||_15f.after; +var _160=_11f(_15e,ref); +var data=_15f.data; +if(!data){ +return; +} +data=$.isArray(data)?data:[data]; +if(!data.length){ +return; +} +_158(_15e,{parent:(_160?_160.target:null),data:data}); +var _161=_160?_160.children:$(_15e).tree("getRoots"); +for(var i=0;i<_161.length;i++){ +if(_161[i].domId==$(ref).attr("id")){ +for(var j=data.length-1;j>=0;j--){ +_161.splice((_15f.before?i:(i+1)),0,data[j]); +} +_161.splice(_161.length-data.length,data.length); +break; +} +} +var li=$(); +for(var i=0;i").prependTo(node); +node.next().remove(); +} +_12c(_163,_165); +} +_12d(_163,_163); +function del(_166){ +var id=$(_166).attr("id"); +var _167=_11f(_163,_166); +var cc=_167?_167.children:$.data(_163,"tree").data; +for(var i=0;i").appendTo(nt); +_191.val(node.text).focus(); +_191.width(_190+20); +_191._outerHeight(18); +_191.bind("click",function(e){ +return false; +}).bind("mousedown",function(e){ +e.stopPropagation(); +}).bind("mousemove",function(e){ +e.stopPropagation(); +}).bind("keydown",function(e){ +if(e.keyCode==13){ +_192(_18e,_18f); +return false; +}else{ +if(e.keyCode==27){ +_196(_18e,_18f); +return false; +} +} +}).bind("blur",function(e){ +e.stopPropagation(); +_192(_18e,_18f); +}); +}; +function _192(_193,_194){ +var opts=$.data(_193,"tree").options; +$(_194).css("position",""); +var _195=$(_194).find("input.tree-editor"); +var val=_195.val(); +_195.remove(); +var node=_ea(_193,_194); +node.text=val; +_12c(_193,node); +opts.onAfterEdit.call(_193,node); +}; +function _196(_197,_198){ +var opts=$.data(_197,"tree").options; +$(_198).css("position",""); +$(_198).find("input.tree-editor").remove(); +var node=_ea(_197,_198); +_12c(_197,node); +opts.onCancelEdit.call(_197,node); +}; +function _199(_19a,q){ +var _19b=$.data(_19a,"tree"); +var opts=_19b.options; +var ids={}; +$.easyui.forEach(_19b.data,true,function(node){ +if(opts.filter.call(_19a,q,node)){ +$("#"+node.domId).removeClass("tree-node-hidden"); +ids[node.domId]=1; +node.hidden=false; +}else{ +$("#"+node.domId).addClass("tree-node-hidden"); +node.hidden=true; +} +}); +for(var id in ids){ +_19c(id); +} +function _19c(_19d){ +var p=$(_19a).tree("getParent",$("#"+_19d)[0]); +while(p){ +$(p.target).removeClass("tree-node-hidden"); +p.hidden=false; +p=$(_19a).tree("getParent",p.target); +} +}; +}; +$.fn.tree=function(_19e,_19f){ +if(typeof _19e=="string"){ +return $.fn.tree.methods[_19e](this,_19f); +} +var _19e=_19e||{}; +return this.each(function(){ +var _1a0=$.data(this,"tree"); +var opts; +if(_1a0){ +opts=$.extend(_1a0.options,_19e); +_1a0.options=opts; +}else{ +opts=$.extend({},$.fn.tree.defaults,$.fn.tree.parseOptions(this),_19e); +$.data(this,"tree",{options:opts,tree:_df(this),data:[],tmpIds:[]}); +var data=$.fn.tree.parseData(this); +if(data.length){ +_124(this,this,data); +} +} +_e2(this); +if(opts.data){ +_124(this,this,$.extend(true,[],opts.data)); +} +_136(this,this); +}); +}; +$.fn.tree.methods={options:function(jq){ +return $.data(jq[0],"tree").options; +},loadData:function(jq,data){ +return jq.each(function(){ +_124(this,this,data); +}); +},getNode:function(jq,_1a1){ +return _ea(jq[0],_1a1); +},getData:function(jq,_1a2){ +return _17d(jq[0],_1a2); +},reload:function(jq,_1a3){ +return jq.each(function(){ +if(_1a3){ +var node=$(_1a3); +var hit=node.children("span.tree-hit"); +hit.removeClass("tree-expanded tree-expanded-hover").addClass("tree-collapsed"); +node.next().remove(); +_13d(this,_1a3); +}else{ +$(this).empty(); +_136(this,this); +} +}); +},getRoot:function(jq,_1a4){ +return _16a(jq[0],_1a4); +},getRoots:function(jq){ +return _16e(jq[0]); +},getParent:function(jq,_1a5){ +return _11f(jq[0],_1a5); +},getChildren:function(jq,_1a6){ +return _14c(jq[0],_1a6); +},getChecked:function(jq,_1a7){ +return _177(jq[0],_1a7); +},getSelected:function(jq){ +return _17b(jq[0]); +},isLeaf:function(jq,_1a8){ +return _15b(jq[0],_1a8); +},find:function(jq,id){ +return _182(jq[0],id); +},select:function(jq,_1a9){ +return jq.each(function(){ +_188(this,_1a9); +}); +},check:function(jq,_1aa){ +return jq.each(function(){ +_10c(this,_1aa,true); +}); +},uncheck:function(jq,_1ab){ +return jq.each(function(){ +_10c(this,_1ab,false); +}); +},collapse:function(jq,_1ac){ +return jq.each(function(){ +_142(this,_1ac); +}); +},expand:function(jq,_1ad){ +return jq.each(function(){ +_13d(this,_1ad); +}); +},collapseAll:function(jq,_1ae){ +return jq.each(function(){ +_154(this,_1ae); +}); +},expandAll:function(jq,_1af){ +return jq.each(function(){ +_148(this,_1af); +}); +},expandTo:function(jq,_1b0){ +return jq.each(function(){ +_14d(this,_1b0); +}); +},scrollTo:function(jq,_1b1){ +return jq.each(function(){ +_151(this,_1b1); +}); +},toggle:function(jq,_1b2){ +return jq.each(function(){ +_145(this,_1b2); +}); +},append:function(jq,_1b3){ +return jq.each(function(){ +_158(this,_1b3); +}); +},insert:function(jq,_1b4){ +return jq.each(function(){ +_15d(this,_1b4); +}); +},remove:function(jq,_1b5){ +return jq.each(function(){ +_162(this,_1b5); +}); +},pop:function(jq,_1b6){ +var node=jq.tree("getData",_1b6); +jq.tree("remove",_1b6); +return node; +},update:function(jq,_1b7){ +return jq.each(function(){ +_12c(this,$.extend({},_1b7,{checkState:_1b7.checked?"checked":(_1b7.checked===false?"unchecked":undefined)})); +}); +},enableDnd:function(jq){ +return jq.each(function(){ +_ef(this); +}); +},disableDnd:function(jq){ +return jq.each(function(){ +_eb(this); +}); +},beginEdit:function(jq,_1b8){ +return jq.each(function(){ +_18d(this,_1b8); +}); +},endEdit:function(jq,_1b9){ +return jq.each(function(){ +_192(this,_1b9); +}); +},cancelEdit:function(jq,_1ba){ +return jq.each(function(){ +_196(this,_1ba); +}); +},doFilter:function(jq,q){ +return jq.each(function(){ +_199(this,q); +}); +}}; +$.fn.tree.parseOptions=function(_1bb){ +var t=$(_1bb); +return $.extend({},$.parser.parseOptions(_1bb,["url","method",{checkbox:"boolean",cascadeCheck:"boolean",onlyLeafCheck:"boolean"},{animate:"boolean",lines:"boolean",dnd:"boolean"}])); +}; +$.fn.tree.parseData=function(_1bc){ +var data=[]; +_1bd(data,$(_1bc)); +return data; +function _1bd(aa,tree){ +tree.children("li").each(function(){ +var node=$(this); +var item=$.extend({},$.parser.parseOptions(this,["id","iconCls","state"]),{checked:(node.attr("checked")?true:undefined)}); +item.text=node.children("span").html(); +if(!item.text){ +item.text=node.html(); +} +var _1be=node.children("ul"); +if(_1be.length){ +item.children=[]; +_1bd(item.children,_1be); +} +aa.push(item); +}); +}; +}; +var _1bf=1; +var _1c0={render:function(_1c1,ul,data){ +var _1c2=$.data(_1c1,"tree"); +var opts=_1c2.options; +var _1c3=$(ul).prev(".tree-node"); +var _1c4=_1c3.length?$(_1c1).tree("getNode",_1c3[0]):null; +var _1c5=_1c3.find("span.tree-indent, span.tree-hit").length; +var cc=_1c6.call(this,_1c5,data); +$(ul).append(cc.join("")); +function _1c6(_1c7,_1c8){ +var cc=[]; +for(var i=0;i<_1c8.length;i++){ +var item=_1c8[i]; +if(item.state!="open"&&item.state!="closed"){ +item.state="open"; +} +item.domId="_easyui_tree_"+_1bf++; +cc.push("
    • "); +cc.push("
      "); +for(var j=0;j<_1c7;j++){ +cc.push(""); +} +if(item.state=="closed"){ +cc.push(""); +cc.push(""); +}else{ +if(item.children&&item.children.length){ +cc.push(""); +cc.push(""); +}else{ +cc.push(""); +cc.push(""); +} +} +if(this.hasCheckbox(_1c1,item)){ +var flag=0; +if(_1c4&&_1c4.checkState=="checked"&&opts.cascadeCheck){ +flag=1; +item.checked=true; +}else{ +if(item.checked){ +$.easyui.addArrayItem(_1c2.tmpIds,item.domId); +} +} +item.checkState=flag?"checked":"unchecked"; +cc.push(""); +}else{ +item.checkState=undefined; +item.checked=undefined; +} +cc.push(""+opts.formatter.call(_1c1,item)+""); +cc.push("
      "); +if(item.children&&item.children.length){ +var tmp=_1c6.call(this,_1c7+1,item.children); +cc.push("
        "); +cc=cc.concat(tmp); +cc.push("
      "); +} +cc.push("
    • "); +} +return cc; +}; +},hasCheckbox:function(_1c9,item){ +var _1ca=$.data(_1c9,"tree"); +var opts=_1ca.options; +if(opts.checkbox){ +if($.isFunction(opts.checkbox)){ +if(opts.checkbox.call(_1c9,item)){ +return true; +}else{ +return false; +} +}else{ +if(opts.onlyLeafCheck){ +if(item.state=="open"&&!(item.children&&item.children.length)){ +return true; +} +}else{ +return true; +} +} +} +return false; +}}; +$.fn.tree.defaults={url:null,method:"post",animate:false,checkbox:false,cascadeCheck:true,onlyLeafCheck:false,lines:false,dnd:false,data:null,queryParams:{},formatter:function(node){ +return node.text; +},filter:function(q,node){ +var qq=[]; +$.map($.isArray(q)?q:[q],function(q){ +q=$.trim(q); +if(q){ +qq.push(q); +} +}); +for(var i=0;i=0){ +return true; +} +} +return !qq.length; +},loader:function(_1cc,_1cd,_1ce){ +var opts=$(this).tree("options"); +if(!opts.url){ +return false; +} +$.ajax({type:opts.method,url:opts.url,data:_1cc,dataType:"json",success:function(data){ +_1cd(data); +},error:function(){ +_1ce.apply(this,arguments); +}}); +},loadFilter:function(data,_1cf){ +return data; +},view:_1c0,onBeforeLoad:function(node,_1d0){ +},onLoadSuccess:function(node,data){ +},onLoadError:function(){ +},onClick:function(node){ +},onDblClick:function(node){ +},onBeforeExpand:function(node){ +},onExpand:function(node){ +},onBeforeCollapse:function(node){ +},onCollapse:function(node){ +},onBeforeCheck:function(node,_1d1){ +},onCheck:function(node,_1d2){ +},onBeforeSelect:function(node){ +},onSelect:function(node){ +},onContextMenu:function(e,node){ +},onBeforeDrag:function(node){ +},onStartDrag:function(node){ +},onStopDrag:function(node){ +},onDragEnter:function(_1d3,_1d4){ +},onDragOver:function(_1d5,_1d6){ +},onDragLeave:function(_1d7,_1d8){ +},onBeforeDrop:function(_1d9,_1da,_1db){ +},onDrop:function(_1dc,_1dd,_1de){ +},onBeforeEdit:function(node){ +},onAfterEdit:function(node){ +},onCancelEdit:function(node){ +}}; +})(jQuery); +(function($){ +function init(_1df){ +$(_1df).addClass("progressbar"); +$(_1df).html("
      "); +$(_1df).bind("_resize",function(e,_1e0){ +if($(this).hasClass("easyui-fluid")||_1e0){ +_1e1(_1df); +} +return false; +}); +return $(_1df); +}; +function _1e1(_1e2,_1e3){ +var opts=$.data(_1e2,"progressbar").options; +var bar=$.data(_1e2,"progressbar").bar; +if(_1e3){ +opts.width=_1e3; +} +bar._size(opts); +bar.find("div.progressbar-text").css("width",bar.width()); +bar.find("div.progressbar-text,div.progressbar-value").css({height:bar.height()+"px",lineHeight:bar.height()+"px"}); +}; +$.fn.progressbar=function(_1e4,_1e5){ +if(typeof _1e4=="string"){ +var _1e6=$.fn.progressbar.methods[_1e4]; +if(_1e6){ +return _1e6(this,_1e5); +} +} +_1e4=_1e4||{}; +return this.each(function(){ +var _1e7=$.data(this,"progressbar"); +if(_1e7){ +$.extend(_1e7.options,_1e4); +}else{ +_1e7=$.data(this,"progressbar",{options:$.extend({},$.fn.progressbar.defaults,$.fn.progressbar.parseOptions(this),_1e4),bar:init(this)}); +} +$(this).progressbar("setValue",_1e7.options.value); +_1e1(this); +}); +}; +$.fn.progressbar.methods={options:function(jq){ +return $.data(jq[0],"progressbar").options; +},resize:function(jq,_1e8){ +return jq.each(function(){ +_1e1(this,_1e8); +}); +},getValue:function(jq){ +return $.data(jq[0],"progressbar").options.value; +},setValue:function(jq,_1e9){ +if(_1e9<0){ +_1e9=0; +} +if(_1e9>100){ +_1e9=100; +} +return jq.each(function(){ +var opts=$.data(this,"progressbar").options; +var text=opts.text.replace(/{value}/,_1e9); +var _1ea=opts.value; +opts.value=_1e9; +$(this).find("div.progressbar-value").width(_1e9+"%"); +$(this).find("div.progressbar-text").html(text); +if(_1ea!=_1e9){ +opts.onChange.call(this,_1e9,_1ea); +} +}); +}}; +$.fn.progressbar.parseOptions=function(_1eb){ +return $.extend({},$.parser.parseOptions(_1eb,["width","height","text",{value:"number"}])); +}; +$.fn.progressbar.defaults={width:"auto",height:22,value:0,text:"{value}%",onChange:function(_1ec,_1ed){ +}}; +})(jQuery); +(function($){ +function init(_1ee){ +$(_1ee).addClass("tooltip-f"); +}; +function _1ef(_1f0){ +var opts=$.data(_1f0,"tooltip").options; +$(_1f0).unbind(".tooltip").bind(opts.showEvent+".tooltip",function(e){ +$(_1f0).tooltip("show",e); +}).bind(opts.hideEvent+".tooltip",function(e){ +$(_1f0).tooltip("hide",e); +}).bind("mousemove.tooltip",function(e){ +if(opts.trackMouse){ +opts.trackMouseX=e.pageX; +opts.trackMouseY=e.pageY; +$(_1f0).tooltip("reposition"); +} +}); +}; +function _1f1(_1f2){ +var _1f3=$.data(_1f2,"tooltip"); +if(_1f3.showTimer){ +clearTimeout(_1f3.showTimer); +_1f3.showTimer=null; +} +if(_1f3.hideTimer){ +clearTimeout(_1f3.hideTimer); +_1f3.hideTimer=null; +} +}; +function _1f4(_1f5){ +var _1f6=$.data(_1f5,"tooltip"); +if(!_1f6||!_1f6.tip){ +return; +} +var opts=_1f6.options; +var tip=_1f6.tip; +var pos={left:-100000,top:-100000}; +if($(_1f5).is(":visible")){ +pos=_1f7(opts.position); +if(opts.position=="top"&&pos.top<0){ +pos=_1f7("bottom"); +}else{ +if((opts.position=="bottom")&&(pos.top+tip._outerHeight()>$(window)._outerHeight()+$(document).scrollTop())){ +pos=_1f7("top"); +} +} +if(pos.left<0){ +if(opts.position=="left"){ +pos=_1f7("right"); +}else{ +$(_1f5).tooltip("arrow").css("left",tip._outerWidth()/2+pos.left); +pos.left=0; +} +}else{ +if(pos.left+tip._outerWidth()>$(window)._outerWidth()+$(document)._scrollLeft()){ +if(opts.position=="right"){ +pos=_1f7("left"); +}else{ +var left=pos.left; +pos.left=$(window)._outerWidth()+$(document)._scrollLeft()-tip._outerWidth(); +$(_1f5).tooltip("arrow").css("left",tip._outerWidth()/2-(pos.left-left)); +} +} +} +} +tip.css({left:pos.left,top:pos.top,zIndex:(opts.zIndex!=undefined?opts.zIndex:($.fn.window?$.fn.window.defaults.zIndex++:""))}); +opts.onPosition.call(_1f5,pos.left,pos.top); +function _1f7(_1f8){ +opts.position=_1f8||"bottom"; +tip.removeClass("tooltip-top tooltip-bottom tooltip-left tooltip-right").addClass("tooltip-"+opts.position); +var left,top; +var _1f9=$.isFunction(opts.deltaX)?opts.deltaX.call(_1f5,opts.position):opts.deltaX; +var _1fa=$.isFunction(opts.deltaY)?opts.deltaY.call(_1f5,opts.position):opts.deltaY; +if(opts.trackMouse){ +t=$(); +left=opts.trackMouseX+_1f9; +top=opts.trackMouseY+_1fa; +}else{ +var t=$(_1f5); +left=t.offset().left+_1f9; +top=t.offset().top+_1fa; +} +switch(opts.position){ +case "right": +left+=t._outerWidth()+12+(opts.trackMouse?12:0); +top-=(tip._outerHeight()-t._outerHeight())/2; +break; +case "left": +left-=tip._outerWidth()+12+(opts.trackMouse?12:0); +top-=(tip._outerHeight()-t._outerHeight())/2; +break; +case "top": +left-=(tip._outerWidth()-t._outerWidth())/2; +top-=tip._outerHeight()+12+(opts.trackMouse?12:0); +break; +case "bottom": +left-=(tip._outerWidth()-t._outerWidth())/2; +top+=t._outerHeight()+12+(opts.trackMouse?12:0); +break; +} +return {left:left,top:top}; +}; +}; +function _1fb(_1fc,e){ +var _1fd=$.data(_1fc,"tooltip"); +var opts=_1fd.options; +var tip=_1fd.tip; +if(!tip){ +tip=$("
      "+"
      "+"
      "+"
      "+"
      ").appendTo("body"); +_1fd.tip=tip; +_1fe(_1fc); +} +_1f1(_1fc); +_1fd.showTimer=setTimeout(function(){ +$(_1fc).tooltip("reposition"); +tip.show(); +opts.onShow.call(_1fc,e); +var _1ff=tip.children(".tooltip-arrow-outer"); +var _200=tip.children(".tooltip-arrow"); +var bc="border-"+opts.position+"-color"; +_1ff.add(_200).css({borderTopColor:"",borderBottomColor:"",borderLeftColor:"",borderRightColor:""}); +_1ff.css(bc,tip.css(bc)); +_200.css(bc,tip.css("backgroundColor")); +},opts.showDelay); +}; +function _201(_202,e){ +var _203=$.data(_202,"tooltip"); +if(_203&&_203.tip){ +_1f1(_202); +_203.hideTimer=setTimeout(function(){ +_203.tip.hide(); +_203.options.onHide.call(_202,e); +},_203.options.hideDelay); +} +}; +function _1fe(_204,_205){ +var _206=$.data(_204,"tooltip"); +var opts=_206.options; +if(_205){ +opts.content=_205; +} +if(!_206.tip){ +return; +} +var cc=typeof opts.content=="function"?opts.content.call(_204):opts.content; +_206.tip.children(".tooltip-content").html(cc); +opts.onUpdate.call(_204,cc); +}; +function _207(_208){ +var _209=$.data(_208,"tooltip"); +if(_209){ +_1f1(_208); +var opts=_209.options; +if(_209.tip){ +_209.tip.remove(); +} +if(opts._title){ +$(_208).attr("title",opts._title); +} +$.removeData(_208,"tooltip"); +$(_208).unbind(".tooltip").removeClass("tooltip-f"); +opts.onDestroy.call(_208); +} +}; +$.fn.tooltip=function(_20a,_20b){ +if(typeof _20a=="string"){ +return $.fn.tooltip.methods[_20a](this,_20b); +} +_20a=_20a||{}; +return this.each(function(){ +var _20c=$.data(this,"tooltip"); +if(_20c){ +$.extend(_20c.options,_20a); +}else{ +$.data(this,"tooltip",{options:$.extend({},$.fn.tooltip.defaults,$.fn.tooltip.parseOptions(this),_20a)}); +init(this); +} +_1ef(this); +_1fe(this); +}); +}; +$.fn.tooltip.methods={options:function(jq){ +return $.data(jq[0],"tooltip").options; +},tip:function(jq){ +return $.data(jq[0],"tooltip").tip; +},arrow:function(jq){ +return jq.tooltip("tip").children(".tooltip-arrow-outer,.tooltip-arrow"); +},show:function(jq,e){ +return jq.each(function(){ +_1fb(this,e); +}); +},hide:function(jq,e){ +return jq.each(function(){ +_201(this,e); +}); +},update:function(jq,_20d){ +return jq.each(function(){ +_1fe(this,_20d); +}); +},reposition:function(jq){ +return jq.each(function(){ +_1f4(this); +}); +},destroy:function(jq){ +return jq.each(function(){ +_207(this); +}); +}}; +$.fn.tooltip.parseOptions=function(_20e){ +var t=$(_20e); +var opts=$.extend({},$.parser.parseOptions(_20e,["position","showEvent","hideEvent","content",{trackMouse:"boolean",deltaX:"number",deltaY:"number",showDelay:"number",hideDelay:"number"}]),{_title:t.attr("title")}); +t.attr("title",""); +if(!opts.content){ +opts.content=opts._title; +} +return opts; +}; +$.fn.tooltip.defaults={position:"bottom",content:null,trackMouse:false,deltaX:0,deltaY:0,showEvent:"mouseenter",hideEvent:"mouseleave",showDelay:200,hideDelay:100,onShow:function(e){ +},onHide:function(e){ +},onUpdate:function(_20f){ +},onPosition:function(left,top){ +},onDestroy:function(){ +}}; +})(jQuery); +(function($){ +$.fn._remove=function(){ +return this.each(function(){ +$(this).remove(); +try{ +this.outerHTML=""; +} +catch(err){ +} +}); +}; +function _210(node){ +node._remove(); +}; +function _211(_212,_213){ +var _214=$.data(_212,"panel"); +var opts=_214.options; +var _215=_214.panel; +var _216=_215.children(".panel-header"); +var _217=_215.children(".panel-body"); +var _218=_215.children(".panel-footer"); +var _219=(opts.halign=="left"||opts.halign=="right"); +if(_213){ +$.extend(opts,{width:_213.width,height:_213.height,minWidth:_213.minWidth,maxWidth:_213.maxWidth,minHeight:_213.minHeight,maxHeight:_213.maxHeight,left:_213.left,top:_213.top}); +} +_215._size(opts); +if(!_219){ +_216._outerWidth(_215.width()); +} +_217._outerWidth(_215.width()); +if(!isNaN(parseInt(opts.height))){ +if(_219){ +if(opts.header){ +var _21a=$(opts.header)._outerWidth(); +}else{ +_216.css("width",""); +var _21a=_216._outerWidth(); +} +var _21b=_216.find(".panel-title"); +_21a+=Math.min(_21b._outerWidth(),_21b._outerHeight()); +var _21c=_215.height(); +_216._outerWidth(_21a)._outerHeight(_21c); +_21b._outerWidth(_216.height()); +_217._outerWidth(_215.width()-_21a-_218._outerWidth())._outerHeight(_21c); +_218._outerHeight(_21c); +_217.css({left:"",right:""}).css(opts.halign,(_216.position()[opts.halign]+_21a)+"px"); +opts.panelCssWidth=_215.css("width"); +if(opts.collapsed){ +_215._outerWidth(_21a+_218._outerWidth()); +} +}else{ +_217._outerHeight(_215.height()-_216._outerHeight()-_218._outerHeight()); +} +}else{ +_217.css("height",""); +var min=$.parser.parseValue("minHeight",opts.minHeight,_215.parent()); +var max=$.parser.parseValue("maxHeight",opts.maxHeight,_215.parent()); +var _21d=_216._outerHeight()+_218._outerHeight()+_215._outerHeight()-_215.height(); +_217._size("minHeight",min?(min-_21d):""); +_217._size("maxHeight",max?(max-_21d):""); +} +_215.css({height:(_219?undefined:""),minHeight:"",maxHeight:"",left:opts.left,top:opts.top}); +opts.onResize.apply(_212,[opts.width,opts.height]); +$(_212).panel("doLayout"); +}; +function _21e(_21f,_220){ +var _221=$.data(_21f,"panel"); +var opts=_221.options; +var _222=_221.panel; +if(_220){ +if(_220.left!=null){ +opts.left=_220.left; +} +if(_220.top!=null){ +opts.top=_220.top; +} +} +_222.css({left:opts.left,top:opts.top}); +_222.find(".tooltip-f").each(function(){ +$(this).tooltip("reposition"); +}); +opts.onMove.apply(_21f,[opts.left,opts.top]); +}; +function _223(_224){ +$(_224).addClass("panel-body")._size("clear"); +var _225=$("
      ").insertBefore(_224); +_225[0].appendChild(_224); +_225.bind("_resize",function(e,_226){ +if($(this).hasClass("easyui-fluid")||_226){ +_211(_224); +} +return false; +}); +return _225; +}; +function _227(_228){ +var _229=$.data(_228,"panel"); +var opts=_229.options; +var _22a=_229.panel; +_22a.css(opts.style); +_22a.addClass(opts.cls); +_22a.removeClass("panel-hleft panel-hright").addClass("panel-h"+opts.halign); +_22b(); +_22c(); +var _22d=$(_228).panel("header"); +var body=$(_228).panel("body"); +var _22e=$(_228).siblings(".panel-footer"); +if(opts.border){ +_22d.removeClass("panel-header-noborder"); +body.removeClass("panel-body-noborder"); +_22e.removeClass("panel-footer-noborder"); +}else{ +_22d.addClass("panel-header-noborder"); +body.addClass("panel-body-noborder"); +_22e.addClass("panel-footer-noborder"); +} +_22d.addClass(opts.headerCls); +body.addClass(opts.bodyCls); +$(_228).attr("id",opts.id||""); +if(opts.content){ +$(_228).panel("clear"); +$(_228).html(opts.content); +$.parser.parse($(_228)); +} +function _22b(){ +if(opts.noheader||(!opts.title&&!opts.header)){ +_210(_22a.children(".panel-header")); +_22a.children(".panel-body").addClass("panel-body-noheader"); +}else{ +if(opts.header){ +$(opts.header).addClass("panel-header").prependTo(_22a); +}else{ +var _22f=_22a.children(".panel-header"); +if(!_22f.length){ +_22f=$("
      ").prependTo(_22a); +} +if(!$.isArray(opts.tools)){ +_22f.find("div.panel-tool .panel-tool-a").appendTo(opts.tools); +} +_22f.empty(); +var _230=$("
      ").html(opts.title).appendTo(_22f); +if(opts.iconCls){ +_230.addClass("panel-with-icon"); +$("
      ").addClass(opts.iconCls).appendTo(_22f); +} +if(opts.halign=="left"||opts.halign=="right"){ +_230.addClass("panel-title-"+opts.titleDirection); +} +var tool=$("
      ").appendTo(_22f); +tool.bind("click",function(e){ +e.stopPropagation(); +}); +if(opts.tools){ +if($.isArray(opts.tools)){ +$.map(opts.tools,function(t){ +_231(tool,t.iconCls,eval(t.handler)); +}); +}else{ +$(opts.tools).children().each(function(){ +$(this).addClass($(this).attr("iconCls")).addClass("panel-tool-a").appendTo(tool); +}); +} +} +if(opts.collapsible){ +_231(tool,"panel-tool-collapse",function(){ +if(opts.collapsed==true){ +_251(_228,true); +}else{ +_242(_228,true); +} +}); +} +if(opts.minimizable){ +_231(tool,"panel-tool-min",function(){ +_257(_228); +}); +} +if(opts.maximizable){ +_231(tool,"panel-tool-max",function(){ +if(opts.maximized==true){ +_25a(_228); +}else{ +_241(_228); +} +}); +} +if(opts.closable){ +_231(tool,"panel-tool-close",function(){ +_243(_228); +}); +} +} +_22a.children("div.panel-body").removeClass("panel-body-noheader"); +} +}; +function _231(c,icon,_232){ +var a=$("").addClass(icon).appendTo(c); +a.bind("click",_232); +}; +function _22c(){ +if(opts.footer){ +$(opts.footer).addClass("panel-footer").appendTo(_22a); +$(_228).addClass("panel-body-nobottom"); +}else{ +_22a.children(".panel-footer").remove(); +$(_228).removeClass("panel-body-nobottom"); +} +}; +}; +function _233(_234,_235){ +var _236=$.data(_234,"panel"); +var opts=_236.options; +if(_237){ +opts.queryParams=_235; +} +if(!opts.href){ +return; +} +if(!_236.isLoaded||!opts.cache){ +var _237=$.extend({},opts.queryParams); +if(opts.onBeforeLoad.call(_234,_237)==false){ +return; +} +_236.isLoaded=false; +if(opts.loadingMessage){ +$(_234).panel("clear"); +$(_234).html($("
      ").html(opts.loadingMessage)); +} +opts.loader.call(_234,_237,function(data){ +var _238=opts.extractor.call(_234,data); +$(_234).panel("clear"); +$(_234).html(_238); +$.parser.parse($(_234)); +opts.onLoad.apply(_234,arguments); +_236.isLoaded=true; +},function(){ +opts.onLoadError.apply(_234,arguments); +}); +} +}; +function _239(_23a){ +var t=$(_23a); +t.find(".combo-f").each(function(){ +$(this).combo("destroy"); +}); +t.find(".m-btn").each(function(){ +$(this).menubutton("destroy"); +}); +t.find(".s-btn").each(function(){ +$(this).splitbutton("destroy"); +}); +t.find(".tooltip-f").each(function(){ +$(this).tooltip("destroy"); +}); +t.children("div").each(function(){ +$(this)._size("unfit"); +}); +t.empty(); +}; +function _23b(_23c){ +$(_23c).panel("doLayout",true); +}; +function _23d(_23e,_23f){ +var opts=$.data(_23e,"panel").options; +var _240=$.data(_23e,"panel").panel; +if(_23f!=true){ +if(opts.onBeforeOpen.call(_23e)==false){ +return; +} +} +_240.stop(true,true); +if($.isFunction(opts.openAnimation)){ +opts.openAnimation.call(_23e,cb); +}else{ +switch(opts.openAnimation){ +case "slide": +_240.slideDown(opts.openDuration,cb); +break; +case "fade": +_240.fadeIn(opts.openDuration,cb); +break; +case "show": +_240.show(opts.openDuration,cb); +break; +default: +_240.show(); +cb(); +} +} +function cb(){ +opts.closed=false; +opts.minimized=false; +var tool=_240.children(".panel-header").find("a.panel-tool-restore"); +if(tool.length){ +opts.maximized=true; +} +opts.onOpen.call(_23e); +if(opts.maximized==true){ +opts.maximized=false; +_241(_23e); +} +if(opts.collapsed==true){ +opts.collapsed=false; +_242(_23e); +} +if(!opts.collapsed){ +_233(_23e); +_23b(_23e); +} +}; +}; +function _243(_244,_245){ +var _246=$.data(_244,"panel"); +var opts=_246.options; +var _247=_246.panel; +if(_245!=true){ +if(opts.onBeforeClose.call(_244)==false){ +return; +} +} +_247.find(".tooltip-f").each(function(){ +$(this).tooltip("hide"); +}); +_247.stop(true,true); +_247._size("unfit"); +if($.isFunction(opts.closeAnimation)){ +opts.closeAnimation.call(_244,cb); +}else{ +switch(opts.closeAnimation){ +case "slide": +_247.slideUp(opts.closeDuration,cb); +break; +case "fade": +_247.fadeOut(opts.closeDuration,cb); +break; +case "hide": +_247.hide(opts.closeDuration,cb); +break; +default: +_247.hide(); +cb(); +} +} +function cb(){ +opts.closed=true; +opts.onClose.call(_244); +}; +}; +function _248(_249,_24a){ +var _24b=$.data(_249,"panel"); +var opts=_24b.options; +var _24c=_24b.panel; +if(_24a!=true){ +if(opts.onBeforeDestroy.call(_249)==false){ +return; +} +} +$(_249).panel("clear").panel("clear","footer"); +_210(_24c); +opts.onDestroy.call(_249); +}; +function _242(_24d,_24e){ +var opts=$.data(_24d,"panel").options; +var _24f=$.data(_24d,"panel").panel; +var body=_24f.children(".panel-body"); +var _250=_24f.children(".panel-header"); +var tool=_250.find("a.panel-tool-collapse"); +if(opts.collapsed==true){ +return; +} +body.stop(true,true); +if(opts.onBeforeCollapse.call(_24d)==false){ +return; +} +tool.addClass("panel-tool-expand"); +if(_24e==true){ +if(opts.halign=="left"||opts.halign=="right"){ +_24f.animate({width:_250._outerWidth()+_24f.children(".panel-footer")._outerWidth()},function(){ +cb(); +}); +}else{ +body.slideUp("normal",function(){ +cb(); +}); +} +}else{ +if(opts.halign=="left"||opts.halign=="right"){ +_24f._outerWidth(_250._outerWidth()+_24f.children(".panel-footer")._outerWidth()); +} +cb(); +} +function cb(){ +body.hide(); +opts.collapsed=true; +opts.onCollapse.call(_24d); +}; +}; +function _251(_252,_253){ +var opts=$.data(_252,"panel").options; +var _254=$.data(_252,"panel").panel; +var body=_254.children(".panel-body"); +var tool=_254.children(".panel-header").find("a.panel-tool-collapse"); +if(opts.collapsed==false){ +return; +} +body.stop(true,true); +if(opts.onBeforeExpand.call(_252)==false){ +return; +} +tool.removeClass("panel-tool-expand"); +if(_253==true){ +if(opts.halign=="left"||opts.halign=="right"){ +body.show(); +_254.animate({width:opts.panelCssWidth},function(){ +cb(); +}); +}else{ +body.slideDown("normal",function(){ +cb(); +}); +} +}else{ +if(opts.halign=="left"||opts.halign=="right"){ +_254.css("width",opts.panelCssWidth); +} +cb(); +} +function cb(){ +body.show(); +opts.collapsed=false; +opts.onExpand.call(_252); +_233(_252); +_23b(_252); +}; +}; +function _241(_255){ +var opts=$.data(_255,"panel").options; +var _256=$.data(_255,"panel").panel; +var tool=_256.children(".panel-header").find("a.panel-tool-max"); +if(opts.maximized==true){ +return; +} +tool.addClass("panel-tool-restore"); +if(!$.data(_255,"panel").original){ +$.data(_255,"panel").original={width:opts.width,height:opts.height,left:opts.left,top:opts.top,fit:opts.fit}; +} +opts.left=0; +opts.top=0; +opts.fit=true; +_211(_255); +opts.minimized=false; +opts.maximized=true; +opts.onMaximize.call(_255); +}; +function _257(_258){ +var opts=$.data(_258,"panel").options; +var _259=$.data(_258,"panel").panel; +_259._size("unfit"); +_259.hide(); +opts.minimized=true; +opts.maximized=false; +opts.onMinimize.call(_258); +}; +function _25a(_25b){ +var opts=$.data(_25b,"panel").options; +var _25c=$.data(_25b,"panel").panel; +var tool=_25c.children(".panel-header").find("a.panel-tool-max"); +if(opts.maximized==false){ +return; +} +_25c.show(); +tool.removeClass("panel-tool-restore"); +$.extend(opts,$.data(_25b,"panel").original); +_211(_25b); +opts.minimized=false; +opts.maximized=false; +$.data(_25b,"panel").original=null; +opts.onRestore.call(_25b); +}; +function _25d(_25e,_25f){ +$.data(_25e,"panel").options.title=_25f; +$(_25e).panel("header").find("div.panel-title").html(_25f); +}; +var _260=null; +$(window).unbind(".panel").bind("resize.panel",function(){ +if(_260){ +clearTimeout(_260); +} +_260=setTimeout(function(){ +var _261=$("body.layout"); +if(_261.length){ +_261.layout("resize"); +$("body").children(".easyui-fluid:visible").each(function(){ +$(this).triggerHandler("_resize"); +}); +}else{ +$("body").panel("doLayout"); +} +_260=null; +},100); +}); +$.fn.panel=function(_262,_263){ +if(typeof _262=="string"){ +return $.fn.panel.methods[_262](this,_263); +} +_262=_262||{}; +return this.each(function(){ +var _264=$.data(this,"panel"); +var opts; +if(_264){ +opts=$.extend(_264.options,_262); +_264.isLoaded=false; +}else{ +opts=$.extend({},$.fn.panel.defaults,$.fn.panel.parseOptions(this),_262); +$(this).attr("title",""); +_264=$.data(this,"panel",{options:opts,panel:_223(this),isLoaded:false}); +} +_227(this); +$(this).show(); +if(opts.doSize==true){ +_264.panel.css("display","block"); +_211(this); +} +if(opts.closed==true||opts.minimized==true){ +_264.panel.hide(); +}else{ +_23d(this); +} +}); +}; +$.fn.panel.methods={options:function(jq){ +return $.data(jq[0],"panel").options; +},panel:function(jq){ +return $.data(jq[0],"panel").panel; +},header:function(jq){ +return $.data(jq[0],"panel").panel.children(".panel-header"); +},footer:function(jq){ +return jq.panel("panel").children(".panel-footer"); +},body:function(jq){ +return $.data(jq[0],"panel").panel.children(".panel-body"); +},setTitle:function(jq,_265){ +return jq.each(function(){ +_25d(this,_265); +}); +},open:function(jq,_266){ +return jq.each(function(){ +_23d(this,_266); +}); +},close:function(jq,_267){ +return jq.each(function(){ +_243(this,_267); +}); +},destroy:function(jq,_268){ +return jq.each(function(){ +_248(this,_268); +}); +},clear:function(jq,type){ +return jq.each(function(){ +_239(type=="footer"?$(this).panel("footer"):this); +}); +},refresh:function(jq,href){ +return jq.each(function(){ +var _269=$.data(this,"panel"); +_269.isLoaded=false; +if(href){ +if(typeof href=="string"){ +_269.options.href=href; +}else{ +_269.options.queryParams=href; +} +} +_233(this); +}); +},resize:function(jq,_26a){ +return jq.each(function(){ +_211(this,_26a); +}); +},doLayout:function(jq,all){ +return jq.each(function(){ +_26b(this,"body"); +_26b($(this).siblings(".panel-footer")[0],"footer"); +function _26b(_26c,type){ +if(!_26c){ +return; +} +var _26d=_26c==$("body")[0]; +var s=$(_26c).find("div.panel:visible,div.accordion:visible,div.tabs-container:visible,div.layout:visible,.easyui-fluid:visible").filter(function(_26e,el){ +var p=$(el).parents(".panel-"+type+":first"); +return _26d?p.length==0:p[0]==_26c; +}); +s.each(function(){ +$(this).triggerHandler("_resize",[all||false]); +}); +}; +}); +},move:function(jq,_26f){ +return jq.each(function(){ +_21e(this,_26f); +}); +},maximize:function(jq){ +return jq.each(function(){ +_241(this); +}); +},minimize:function(jq){ +return jq.each(function(){ +_257(this); +}); +},restore:function(jq){ +return jq.each(function(){ +_25a(this); +}); +},collapse:function(jq,_270){ +return jq.each(function(){ +_242(this,_270); +}); +},expand:function(jq,_271){ +return jq.each(function(){ +_251(this,_271); +}); +}}; +$.fn.panel.parseOptions=function(_272){ +var t=$(_272); +var hh=t.children(".panel-header,header"); +var ff=t.children(".panel-footer,footer"); +return $.extend({},$.parser.parseOptions(_272,["id","width","height","left","top","title","iconCls","cls","headerCls","bodyCls","tools","href","method","header","footer","halign","titleDirection",{cache:"boolean",fit:"boolean",border:"boolean",noheader:"boolean"},{collapsible:"boolean",minimizable:"boolean",maximizable:"boolean"},{closable:"boolean",collapsed:"boolean",minimized:"boolean",maximized:"boolean",closed:"boolean"},"openAnimation","closeAnimation",{openDuration:"number",closeDuration:"number"},]),{loadingMessage:(t.attr("loadingMessage")!=undefined?t.attr("loadingMessage"):undefined),header:(hh.length?hh.removeClass("panel-header"):undefined),footer:(ff.length?ff.removeClass("panel-footer"):undefined)}); +}; +$.fn.panel.defaults={id:null,title:null,iconCls:null,width:"auto",height:"auto",left:null,top:null,cls:null,headerCls:null,bodyCls:null,style:{},href:null,cache:true,fit:false,border:true,doSize:true,noheader:false,content:null,halign:"top",titleDirection:"down",collapsible:false,minimizable:false,maximizable:false,closable:false,collapsed:false,minimized:false,maximized:false,closed:false,openAnimation:false,openDuration:400,closeAnimation:false,closeDuration:400,tools:null,footer:null,header:null,queryParams:{},method:"get",href:null,loadingMessage:"Loading...",loader:function(_273,_274,_275){ +var opts=$(this).panel("options"); +if(!opts.href){ +return false; +} +$.ajax({type:opts.method,url:opts.href,cache:false,data:_273,dataType:"html",success:function(data){ +_274(data); +},error:function(){ +_275.apply(this,arguments); +}}); +},extractor:function(data){ +var _276=/]*>((.|[\n\r])*)<\/body>/im; +var _277=_276.exec(data); +if(_277){ +return _277[1]; +}else{ +return data; +} +},onBeforeLoad:function(_278){ +},onLoad:function(){ +},onLoadError:function(){ +},onBeforeOpen:function(){ +},onOpen:function(){ +},onBeforeClose:function(){ +},onClose:function(){ +},onBeforeDestroy:function(){ +},onDestroy:function(){ +},onResize:function(_279,_27a){ +},onMove:function(left,top){ +},onMaximize:function(){ +},onRestore:function(){ +},onMinimize:function(){ +},onBeforeCollapse:function(){ +},onBeforeExpand:function(){ +},onCollapse:function(){ +},onExpand:function(){ +}}; +})(jQuery); +(function($){ +function _27b(_27c,_27d){ +var _27e=$.data(_27c,"window"); +if(_27d){ +if(_27d.left!=null){ +_27e.options.left=_27d.left; +} +if(_27d.top!=null){ +_27e.options.top=_27d.top; +} +} +$(_27c).panel("move",_27e.options); +if(_27e.shadow){ +_27e.shadow.css({left:_27e.options.left,top:_27e.options.top}); +} +}; +function _27f(_280,_281){ +var opts=$.data(_280,"window").options; +var pp=$(_280).window("panel"); +var _282=pp._outerWidth(); +if(opts.inline){ +var _283=pp.parent(); +opts.left=Math.ceil((_283.width()-_282)/2+_283.scrollLeft()); +}else{ +opts.left=Math.ceil(($(window)._outerWidth()-_282)/2+$(document).scrollLeft()); +} +if(_281){ +_27b(_280); +} +}; +function _284(_285,_286){ +var opts=$.data(_285,"window").options; +var pp=$(_285).window("panel"); +var _287=pp._outerHeight(); +if(opts.inline){ +var _288=pp.parent(); +opts.top=Math.ceil((_288.height()-_287)/2+_288.scrollTop()); +}else{ +opts.top=Math.ceil(($(window)._outerHeight()-_287)/2+$(document).scrollTop()); +} +if(_286){ +_27b(_285); +} +}; +function _289(_28a){ +var _28b=$.data(_28a,"window"); +var opts=_28b.options; +var win=$(_28a).panel($.extend({},_28b.options,{border:false,doSize:true,closed:true,cls:"window "+(!opts.border?"window-thinborder window-noborder ":(opts.border=="thin"?"window-thinborder ":""))+(opts.cls||""),headerCls:"window-header "+(opts.headerCls||""),bodyCls:"window-body "+(opts.noheader?"window-body-noheader ":" ")+(opts.bodyCls||""),onBeforeDestroy:function(){ +if(opts.onBeforeDestroy.call(_28a)==false){ +return false; +} +if(_28b.shadow){ +_28b.shadow.remove(); +} +if(_28b.mask){ +_28b.mask.remove(); +} +},onClose:function(){ +if(_28b.shadow){ +_28b.shadow.hide(); +} +if(_28b.mask){ +_28b.mask.hide(); +} +opts.onClose.call(_28a); +},onOpen:function(){ +if(_28b.mask){ +_28b.mask.css($.extend({display:"block",zIndex:$.fn.window.defaults.zIndex++},$.fn.window.getMaskSize(_28a))); +} +if(_28b.shadow){ +_28b.shadow.css({display:"block",zIndex:$.fn.window.defaults.zIndex++,left:opts.left,top:opts.top,width:_28b.window._outerWidth(),height:_28b.window._outerHeight()}); +} +_28b.window.css("z-index",$.fn.window.defaults.zIndex++); +opts.onOpen.call(_28a); +},onResize:function(_28c,_28d){ +var _28e=$(this).panel("options"); +$.extend(opts,{width:_28e.width,height:_28e.height,left:_28e.left,top:_28e.top}); +if(_28b.shadow){ +_28b.shadow.css({left:opts.left,top:opts.top,width:_28b.window._outerWidth(),height:_28b.window._outerHeight()}); +} +opts.onResize.call(_28a,_28c,_28d); +},onMinimize:function(){ +if(_28b.shadow){ +_28b.shadow.hide(); +} +if(_28b.mask){ +_28b.mask.hide(); +} +_28b.options.onMinimize.call(_28a); +},onBeforeCollapse:function(){ +if(opts.onBeforeCollapse.call(_28a)==false){ +return false; +} +if(_28b.shadow){ +_28b.shadow.hide(); +} +},onExpand:function(){ +if(_28b.shadow){ +_28b.shadow.show(); +} +opts.onExpand.call(_28a); +}})); +_28b.window=win.panel("panel"); +if(_28b.mask){ +_28b.mask.remove(); +} +if(opts.modal){ +_28b.mask=$("
      ").insertAfter(_28b.window); +} +if(_28b.shadow){ +_28b.shadow.remove(); +} +if(opts.shadow){ +_28b.shadow=$("
      ").insertAfter(_28b.window); +} +var _28f=opts.closed; +if(opts.left==null){ +_27f(_28a); +} +if(opts.top==null){ +_284(_28a); +} +_27b(_28a); +if(!_28f){ +win.window("open"); +} +}; +function _290(left,top,_291,_292){ +var _293=this; +var _294=$.data(_293,"window"); +var opts=_294.options; +if(!opts.constrain){ +return {}; +} +if($.isFunction(opts.constrain)){ +return opts.constrain.call(_293,left,top,_291,_292); +} +var win=$(_293).window("window"); +var _295=opts.inline?win.parent():$(window); +if(left<0){ +left=0; +} +if(top<_295.scrollTop()){ +top=_295.scrollTop(); +} +if(left+_291>_295.width()){ +if(_291==win.outerWidth()){ +left=_295.width()-_291; +}else{ +_291=_295.width()-left; +} +} +if(top-_295.scrollTop()+_292>_295.height()){ +if(_292==win.outerHeight()){ +top=_295.height()-_292+_295.scrollTop(); +}else{ +_292=_295.height()-top+_295.scrollTop(); +} +} +return {left:left,top:top,width:_291,height:_292}; +}; +function _296(_297){ +var _298=$.data(_297,"window"); +_298.window.draggable({handle:">div.panel-header>div.panel-title",disabled:_298.options.draggable==false,onBeforeDrag:function(e){ +if(_298.mask){ +_298.mask.css("z-index",$.fn.window.defaults.zIndex++); +} +if(_298.shadow){ +_298.shadow.css("z-index",$.fn.window.defaults.zIndex++); +} +_298.window.css("z-index",$.fn.window.defaults.zIndex++); +},onStartDrag:function(e){ +_299(e); +},onDrag:function(e){ +_29a(e); +return false; +},onStopDrag:function(e){ +_29b(e,"move"); +}}); +_298.window.resizable({disabled:_298.options.resizable==false,onStartResize:function(e){ +_299(e); +},onResize:function(e){ +_29a(e); +return false; +},onStopResize:function(e){ +_29b(e,"resize"); +}}); +function _299(e){ +if(_298.pmask){ +_298.pmask.remove(); +} +_298.pmask=$("
      ").insertAfter(_298.window); +_298.pmask.css({display:"none",zIndex:$.fn.window.defaults.zIndex++,left:e.data.left,top:e.data.top,width:_298.window._outerWidth(),height:_298.window._outerHeight()}); +if(_298.proxy){ +_298.proxy.remove(); +} +_298.proxy=$("
      ").insertAfter(_298.window); +_298.proxy.css({display:"none",zIndex:$.fn.window.defaults.zIndex++,left:e.data.left,top:e.data.top}); +_298.proxy._outerWidth(e.data.width)._outerHeight(e.data.height); +_298.proxy.hide(); +setTimeout(function(){ +if(_298.pmask){ +_298.pmask.show(); +} +if(_298.proxy){ +_298.proxy.show(); +} +},500); +}; +function _29a(e){ +$.extend(e.data,_290.call(_297,e.data.left,e.data.top,e.data.width,e.data.height)); +_298.pmask.show(); +_298.proxy.css({display:"block",left:e.data.left,top:e.data.top}); +_298.proxy._outerWidth(e.data.width); +_298.proxy._outerHeight(e.data.height); +}; +function _29b(e,_29c){ +$.extend(e.data,_290.call(_297,e.data.left,e.data.top,e.data.width+0.1,e.data.height+0.1)); +$(_297).window(_29c,e.data); +_298.pmask.remove(); +_298.pmask=null; +_298.proxy.remove(); +_298.proxy=null; +}; +}; +$(function(){ +if(!$._positionFixed){ +$(window).resize(function(){ +$("body>div.window-mask:visible").css({width:"",height:""}); +setTimeout(function(){ +$("body>div.window-mask:visible").css($.fn.window.getMaskSize()); +},50); +}); +} +}); +$.fn.window=function(_29d,_29e){ +if(typeof _29d=="string"){ +var _29f=$.fn.window.methods[_29d]; +if(_29f){ +return _29f(this,_29e); +}else{ +return this.panel(_29d,_29e); +} +} +_29d=_29d||{}; +return this.each(function(){ +var _2a0=$.data(this,"window"); +if(_2a0){ +$.extend(_2a0.options,_29d); +}else{ +_2a0=$.data(this,"window",{options:$.extend({},$.fn.window.defaults,$.fn.window.parseOptions(this),_29d)}); +if(!_2a0.options.inline){ +document.body.appendChild(this); +} +} +_289(this); +_296(this); +}); +}; +$.fn.window.methods={options:function(jq){ +var _2a1=jq.panel("options"); +var _2a2=$.data(jq[0],"window").options; +return $.extend(_2a2,{closed:_2a1.closed,collapsed:_2a1.collapsed,minimized:_2a1.minimized,maximized:_2a1.maximized}); +},window:function(jq){ +return $.data(jq[0],"window").window; +},move:function(jq,_2a3){ +return jq.each(function(){ +_27b(this,_2a3); +}); +},hcenter:function(jq){ +return jq.each(function(){ +_27f(this,true); +}); +},vcenter:function(jq){ +return jq.each(function(){ +_284(this,true); +}); +},center:function(jq){ +return jq.each(function(){ +_27f(this); +_284(this); +_27b(this); +}); +}}; +$.fn.window.getMaskSize=function(_2a4){ +var _2a5=$(_2a4).data("window"); +if(_2a5&&_2a5.options.inline){ +return {}; +}else{ +if($._positionFixed){ +return {position:"fixed"}; +}else{ +return {width:$(document).width(),height:$(document).height()}; +} +} +}; +$.fn.window.parseOptions=function(_2a6){ +return $.extend({},$.fn.panel.parseOptions(_2a6),$.parser.parseOptions(_2a6,[{draggable:"boolean",resizable:"boolean",shadow:"boolean",modal:"boolean",inline:"boolean"}])); +}; +$.fn.window.defaults=$.extend({},$.fn.panel.defaults,{zIndex:9000,draggable:true,resizable:true,shadow:true,modal:false,border:true,inline:false,title:"New Window",collapsible:true,minimizable:true,maximizable:true,closable:true,closed:false,constrain:false}); +})(jQuery); +(function($){ +function _2a7(_2a8){ +var opts=$.data(_2a8,"dialog").options; +opts.inited=false; +$(_2a8).window($.extend({},opts,{onResize:function(w,h){ +if(opts.inited){ +_2ad(this); +opts.onResize.call(this,w,h); +} +}})); +var win=$(_2a8).window("window"); +if(opts.toolbar){ +if($.isArray(opts.toolbar)){ +$(_2a8).siblings("div.dialog-toolbar").remove(); +var _2a9=$("
      ").appendTo(win); +var tr=_2a9.find("tr"); +for(var i=0;i
      ").appendTo(tr); +}else{ +var td=$("").appendTo(tr); +var tool=$("").appendTo(td); +tool[0].onclick=eval(btn.handler||function(){ +}); +tool.linkbutton($.extend({},btn,{plain:true})); +} +} +}else{ +$(opts.toolbar).addClass("dialog-toolbar").appendTo(win); +$(opts.toolbar).show(); +} +}else{ +$(_2a8).siblings("div.dialog-toolbar").remove(); +} +if(opts.buttons){ +if($.isArray(opts.buttons)){ +$(_2a8).siblings("div.dialog-button").remove(); +var _2aa=$("
      ").appendTo(win); +for(var i=0;i").appendTo(_2aa); +if(p.handler){ +_2ab[0].onclick=p.handler; +} +_2ab.linkbutton(p); +} +}else{ +$(opts.buttons).addClass("dialog-button").appendTo(win); +$(opts.buttons).show(); +} +}else{ +$(_2a8).siblings("div.dialog-button").remove(); +} +opts.inited=true; +var _2ac=opts.closed; +win.show(); +$(_2a8).window("resize"); +if(_2ac){ +win.hide(); +} +}; +function _2ad(_2ae,_2af){ +var t=$(_2ae); +var opts=t.dialog("options"); +var _2b0=opts.noheader; +var tb=t.siblings(".dialog-toolbar"); +var bb=t.siblings(".dialog-button"); +tb.insertBefore(_2ae).css({borderTopWidth:(_2b0?1:0),top:(_2b0?tb.length:0)}); +bb.insertAfter(_2ae); +tb.add(bb)._outerWidth(t._outerWidth()).find(".easyui-fluid:visible").each(function(){ +$(this).triggerHandler("_resize"); +}); +var _2b1=tb._outerHeight()+bb._outerHeight(); +if(!isNaN(parseInt(opts.height))){ +t._outerHeight(t._outerHeight()-_2b1); +}else{ +var _2b2=t._size("min-height"); +if(_2b2){ +t._size("min-height",_2b2-_2b1); +} +var _2b3=t._size("max-height"); +if(_2b3){ +t._size("max-height",_2b3-_2b1); +} +} +var _2b4=$.data(_2ae,"window").shadow; +if(_2b4){ +var cc=t.panel("panel"); +_2b4.css({width:cc._outerWidth(),height:cc._outerHeight()}); +} +}; +$.fn.dialog=function(_2b5,_2b6){ +if(typeof _2b5=="string"){ +var _2b7=$.fn.dialog.methods[_2b5]; +if(_2b7){ +return _2b7(this,_2b6); +}else{ +return this.window(_2b5,_2b6); +} +} +_2b5=_2b5||{}; +return this.each(function(){ +var _2b8=$.data(this,"dialog"); +if(_2b8){ +$.extend(_2b8.options,_2b5); +}else{ +$.data(this,"dialog",{options:$.extend({},$.fn.dialog.defaults,$.fn.dialog.parseOptions(this),_2b5)}); +} +_2a7(this); +}); +}; +$.fn.dialog.methods={options:function(jq){ +var _2b9=$.data(jq[0],"dialog").options; +var _2ba=jq.panel("options"); +$.extend(_2b9,{width:_2ba.width,height:_2ba.height,left:_2ba.left,top:_2ba.top,closed:_2ba.closed,collapsed:_2ba.collapsed,minimized:_2ba.minimized,maximized:_2ba.maximized}); +return _2b9; +},dialog:function(jq){ +return jq.window("window"); +}}; +$.fn.dialog.parseOptions=function(_2bb){ +var t=$(_2bb); +return $.extend({},$.fn.window.parseOptions(_2bb),$.parser.parseOptions(_2bb,["toolbar","buttons"]),{toolbar:(t.children(".dialog-toolbar").length?t.children(".dialog-toolbar").removeClass("dialog-toolbar"):undefined),buttons:(t.children(".dialog-button").length?t.children(".dialog-button").removeClass("dialog-button"):undefined)}); +}; +$.fn.dialog.defaults=$.extend({},$.fn.window.defaults,{title:"New Dialog",collapsible:false,minimizable:false,maximizable:false,resizable:false,toolbar:null,buttons:null}); +})(jQuery); +(function($){ +function _2bc(){ +$(document).unbind(".messager").bind("keydown.messager",function(e){ +if(e.keyCode==27){ +$("body").children("div.messager-window").children("div.messager-body").each(function(){ +$(this).dialog("close"); +}); +}else{ +if(e.keyCode==9){ +var win=$("body").children("div.messager-window"); +if(!win.length){ +return; +} +var _2bd=win.find(".messager-input,.messager-button .l-btn"); +for(var i=0;i<_2bd.length;i++){ +if($(_2bd[i]).is(":focus")){ +$(_2bd[i>=_2bd.length-1?0:i+1]).focus(); +return false; +} +} +}else{ +if(e.keyCode==13){ +var _2be=$(e.target).closest("input.messager-input"); +if(_2be.length){ +var dlg=_2be.closest(".messager-body"); +_2bf(dlg,_2be.val()); +} +} +} +} +}); +}; +function _2c0(){ +$(document).unbind(".messager"); +}; +function _2c1(_2c2){ +var opts=$.extend({},$.messager.defaults,{modal:false,shadow:false,draggable:false,resizable:false,closed:true,style:{left:"",top:"",right:0,zIndex:$.fn.window.defaults.zIndex++,bottom:-document.body.scrollTop-document.documentElement.scrollTop},title:"",width:250,height:100,minHeight:0,showType:"slide",showSpeed:600,content:_2c2.msg,timeout:4000},_2c2); +var dlg=$("
      ").appendTo("body"); +dlg.dialog($.extend({},opts,{noheader:(opts.title?false:true),openAnimation:(opts.showType),closeAnimation:(opts.showType=="show"?"hide":opts.showType),openDuration:opts.showSpeed,closeDuration:opts.showSpeed,onOpen:function(){ +dlg.dialog("dialog").hover(function(){ +if(opts.timer){ +clearTimeout(opts.timer); +} +},function(){ +_2c3(); +}); +_2c3(); +function _2c3(){ +if(opts.timeout>0){ +opts.timer=setTimeout(function(){ +if(dlg.length&&dlg.data("dialog")){ +dlg.dialog("close"); +} +},opts.timeout); +} +}; +if(_2c2.onOpen){ +_2c2.onOpen.call(this); +}else{ +opts.onOpen.call(this); +} +},onClose:function(){ +if(opts.timer){ +clearTimeout(opts.timer); +} +if(_2c2.onClose){ +_2c2.onClose.call(this); +}else{ +opts.onClose.call(this); +} +dlg.dialog("destroy"); +}})); +dlg.dialog("dialog").css(opts.style); +dlg.dialog("open"); +return dlg; +}; +function _2c4(_2c5){ +_2bc(); +var dlg=$("
      ").appendTo("body"); +dlg.dialog($.extend({},_2c5,{noheader:(_2c5.title?false:true),onClose:function(){ +_2c0(); +if(_2c5.onClose){ +_2c5.onClose.call(this); +} +setTimeout(function(){ +dlg.dialog("destroy"); +},100); +}})); +var win=dlg.dialog("dialog").addClass("messager-window"); +win.find(".dialog-button").addClass("messager-button").find("a:first").focus(); +return dlg; +}; +function _2bf(dlg,_2c6){ +dlg.dialog("close"); +dlg.dialog("options").fn(_2c6); +}; +$.messager={show:function(_2c7){ +return _2c1(_2c7); +},alert:function(_2c8,msg,icon,fn){ +var opts=typeof _2c8=="object"?_2c8:{title:_2c8,msg:msg,icon:icon,fn:fn}; +var cls=opts.icon?"messager-icon messager-"+opts.icon:""; +opts=$.extend({},$.messager.defaults,{content:"
      "+"
      "+opts.msg+"
      "+"
      "},opts); +if(!opts.buttons){ +opts.buttons=[{text:opts.ok,onClick:function(){ +_2bf(dlg); +}}]; +} +var dlg=_2c4(opts); +return dlg; +},confirm:function(_2c9,msg,fn){ +var opts=typeof _2c9=="object"?_2c9:{title:_2c9,msg:msg,fn:fn}; +opts=$.extend({},$.messager.defaults,{content:"
      "+"
      "+opts.msg+"
      "+"
      "},opts); +if(!opts.buttons){ +opts.buttons=[{text:opts.ok,onClick:function(){ +_2bf(dlg,true); +}},{text:opts.cancel,onClick:function(){ +_2bf(dlg,false); +}}]; +} +var dlg=_2c4(opts); +return dlg; +},prompt:function(_2ca,msg,fn){ +var opts=typeof _2ca=="object"?_2ca:{title:_2ca,msg:msg,fn:fn}; +opts=$.extend({},$.messager.defaults,{content:"
      "+"
      "+opts.msg+"
      "+"
      "+"
      "+"
      "},opts); +if(!opts.buttons){ +opts.buttons=[{text:opts.ok,onClick:function(){ +_2bf(dlg,dlg.find(".messager-input").val()); +}},{text:opts.cancel,onClick:function(){ +_2bf(dlg); +}}]; +} +var dlg=_2c4(opts); +dlg.find(".messager-input").focus(); +return dlg; +},progress:function(_2cb){ +var _2cc={bar:function(){ +return $("body>div.messager-window").find("div.messager-p-bar"); +},close:function(){ +var dlg=$("body>div.messager-window>div.messager-body:has(div.messager-progress)"); +if(dlg.length){ +dlg.dialog("close"); +} +}}; +if(typeof _2cb=="string"){ +var _2cd=_2cc[_2cb]; +return _2cd(); +} +_2cb=_2cb||{}; +var opts=$.extend({},{title:"",minHeight:0,content:undefined,msg:"",text:undefined,interval:300},_2cb); +var dlg=_2c4($.extend({},$.messager.defaults,{content:"
      "+opts.msg+"
      ",closable:false,doSize:false},opts,{onClose:function(){ +if(this.timer){ +clearInterval(this.timer); +} +if(_2cb.onClose){ +_2cb.onClose.call(this); +}else{ +$.messager.defaults.onClose.call(this); +} +}})); +var bar=dlg.find("div.messager-p-bar"); +bar.progressbar({text:opts.text}); +dlg.dialog("resize"); +if(opts.interval){ +dlg[0].timer=setInterval(function(){ +var v=bar.progressbar("getValue"); +v+=10; +if(v>100){ +v=0; +} +bar.progressbar("setValue",v); +},opts.interval); +} +return dlg; +}}; +$.messager.defaults=$.extend({},$.fn.dialog.defaults,{ok:"Ok",cancel:"Cancel",width:300,height:"auto",minHeight:150,modal:true,collapsible:false,minimizable:false,maximizable:false,resizable:false,fn:function(){ +}}); +})(jQuery); +(function($){ +function _2ce(_2cf,_2d0){ +var _2d1=$.data(_2cf,"accordion"); +var opts=_2d1.options; +var _2d2=_2d1.panels; +var cc=$(_2cf); +var _2d3=(opts.halign=="left"||opts.halign=="right"); +cc.children(".panel-last").removeClass("panel-last"); +cc.children(".panel:last").addClass("panel-last"); +if(_2d0){ +$.extend(opts,{width:_2d0.width,height:_2d0.height}); +} +cc._size(opts); +var _2d4=0; +var _2d5="auto"; +var _2d6=cc.find(">.panel>.accordion-header"); +if(_2d6.length){ +if(_2d3){ +$(_2d2[0]).panel("resize",{width:cc.width(),height:cc.height()}); +_2d4=$(_2d6[0])._outerWidth(); +}else{ +_2d4=$(_2d6[0]).css("height","")._outerHeight(); +} +} +if(!isNaN(parseInt(opts.height))){ +if(_2d3){ +_2d5=cc.width()-_2d4*_2d6.length; +}else{ +_2d5=cc.height()-_2d4*_2d6.length; +} +} +_2d7(true,_2d5-_2d7(false)); +function _2d7(_2d8,_2d9){ +var _2da=0; +for(var i=0;i<_2d2.length;i++){ +var p=_2d2[i]; +if(_2d3){ +var h=p.panel("header")._outerWidth(_2d4); +}else{ +var h=p.panel("header")._outerHeight(_2d4); +} +if(p.panel("options").collapsible==_2d8){ +var _2db=isNaN(_2d9)?undefined:(_2d9+_2d4*h.length); +if(_2d3){ +p.panel("resize",{height:cc.height(),width:(_2d8?_2db:undefined)}); +_2da+=p.panel("panel")._outerWidth()-_2d4*h.length; +}else{ +p.panel("resize",{width:cc.width(),height:(_2d8?_2db:undefined)}); +_2da+=p.panel("panel").outerHeight()-_2d4*h.length; +} +} +} +return _2da; +}; +}; +function _2dc(_2dd,_2de,_2df,all){ +var _2e0=$.data(_2dd,"accordion").panels; +var pp=[]; +for(var i=0;i<_2e0.length;i++){ +var p=_2e0[i]; +if(_2de){ +if(p.panel("options")[_2de]==_2df){ +pp.push(p); +} +}else{ +if(p[0]==$(_2df)[0]){ +return i; +} +} +} +if(_2de){ +return all?pp:(pp.length?pp[0]:null); +}else{ +return -1; +} +}; +function _2e1(_2e2){ +return _2dc(_2e2,"collapsed",false,true); +}; +function _2e3(_2e4){ +var pp=_2e1(_2e4); +return pp.length?pp[0]:null; +}; +function _2e5(_2e6,_2e7){ +return _2dc(_2e6,null,_2e7); +}; +function _2e8(_2e9,_2ea){ +var _2eb=$.data(_2e9,"accordion").panels; +if(typeof _2ea=="number"){ +if(_2ea<0||_2ea>=_2eb.length){ +return null; +}else{ +return _2eb[_2ea]; +} +} +return _2dc(_2e9,"title",_2ea); +}; +function _2ec(_2ed){ +var opts=$.data(_2ed,"accordion").options; +var cc=$(_2ed); +if(opts.border){ +cc.removeClass("accordion-noborder"); +}else{ +cc.addClass("accordion-noborder"); +} +}; +function init(_2ee){ +var _2ef=$.data(_2ee,"accordion"); +var cc=$(_2ee); +cc.addClass("accordion"); +_2ef.panels=[]; +cc.children("div").each(function(){ +var opts=$.extend({},$.parser.parseOptions(this),{selected:($(this).attr("selected")?true:undefined)}); +var pp=$(this); +_2ef.panels.push(pp); +_2f1(_2ee,pp,opts); +}); +cc.bind("_resize",function(e,_2f0){ +if($(this).hasClass("easyui-fluid")||_2f0){ +_2ce(_2ee); +} +return false; +}); +}; +function _2f1(_2f2,pp,_2f3){ +var opts=$.data(_2f2,"accordion").options; +pp.panel($.extend({},{collapsible:true,minimizable:false,maximizable:false,closable:false,doSize:false,collapsed:true,headerCls:"accordion-header",bodyCls:"accordion-body",halign:opts.halign},_2f3,{onBeforeExpand:function(){ +if(_2f3.onBeforeExpand){ +if(_2f3.onBeforeExpand.call(this)==false){ +return false; +} +} +if(!opts.multiple){ +var all=$.grep(_2e1(_2f2),function(p){ +return p.panel("options").collapsible; +}); +for(var i=0;i.panel-last>.accordion-header").removeClass("accordion-header-border"); +if(_2f3.onExpand){ +_2f3.onExpand.call(this); +} +opts.onSelect.call(_2f2,$(this).panel("options").title,_2e5(_2f2,this)); +},onBeforeCollapse:function(){ +if(_2f3.onBeforeCollapse){ +if(_2f3.onBeforeCollapse.call(this)==false){ +return false; +} +} +$(_2f2).find(">.panel-last>.accordion-header").addClass("accordion-header-border"); +var _2f5=$(this).panel("header"); +_2f5.removeClass("accordion-header-selected"); +_2f5.find(".accordion-collapse").addClass("accordion-expand"); +},onCollapse:function(){ +if(isNaN(parseInt(opts.height))){ +$(_2f2).find(">.panel-last>.accordion-header").removeClass("accordion-header-border"); +} +if(_2f3.onCollapse){ +_2f3.onCollapse.call(this); +} +opts.onUnselect.call(_2f2,$(this).panel("options").title,_2e5(_2f2,this)); +}})); +var _2f6=pp.panel("header"); +var tool=_2f6.children("div.panel-tool"); +tool.children("a.panel-tool-collapse").hide(); +var t=$("").addClass("accordion-collapse accordion-expand").appendTo(tool); +t.bind("click",function(){ +_2f7(pp); +return false; +}); +pp.panel("options").collapsible?t.show():t.hide(); +if(opts.halign=="left"||opts.halign=="right"){ +t.hide(); +} +_2f6.click(function(){ +_2f7(pp); +return false; +}); +function _2f7(p){ +var _2f8=p.panel("options"); +if(_2f8.collapsible){ +var _2f9=_2e5(_2f2,p); +if(_2f8.collapsed){ +_2fa(_2f2,_2f9); +}else{ +_2fb(_2f2,_2f9); +} +} +}; +}; +function _2fa(_2fc,_2fd){ +var p=_2e8(_2fc,_2fd); +if(!p){ +return; +} +_2fe(_2fc); +var opts=$.data(_2fc,"accordion").options; +p.panel("expand",opts.animate); +}; +function _2fb(_2ff,_300){ +var p=_2e8(_2ff,_300); +if(!p){ +return; +} +_2fe(_2ff); +var opts=$.data(_2ff,"accordion").options; +p.panel("collapse",opts.animate); +}; +function _301(_302){ +var opts=$.data(_302,"accordion").options; +$(_302).find(">.panel-last>.accordion-header").addClass("accordion-header-border"); +var p=_2dc(_302,"selected",true); +if(p){ +_303(_2e5(_302,p)); +}else{ +_303(opts.selected); +} +function _303(_304){ +var _305=opts.animate; +opts.animate=false; +_2fa(_302,_304); +opts.animate=_305; +}; +}; +function _2fe(_306){ +var _307=$.data(_306,"accordion").panels; +for(var i=0;i<_307.length;i++){ +_307[i].stop(true,true); +} +}; +function add(_308,_309){ +var _30a=$.data(_308,"accordion"); +var opts=_30a.options; +var _30b=_30a.panels; +if(_309.selected==undefined){ +_309.selected=true; +} +_2fe(_308); +var pp=$("
      ").appendTo(_308); +_30b.push(pp); +_2f1(_308,pp,_309); +_2ce(_308); +opts.onAdd.call(_308,_309.title,_30b.length-1); +if(_309.selected){ +_2fa(_308,_30b.length-1); +} +}; +function _30c(_30d,_30e){ +var _30f=$.data(_30d,"accordion"); +var opts=_30f.options; +var _310=_30f.panels; +_2fe(_30d); +var _311=_2e8(_30d,_30e); +var _312=_311.panel("options").title; +var _313=_2e5(_30d,_311); +if(!_311){ +return; +} +if(opts.onBeforeRemove.call(_30d,_312,_313)==false){ +return; +} +_310.splice(_313,1); +_311.panel("destroy"); +if(_310.length){ +_2ce(_30d); +var curr=_2e3(_30d); +if(!curr){ +_2fa(_30d,0); +} +} +opts.onRemove.call(_30d,_312,_313); +}; +$.fn.accordion=function(_314,_315){ +if(typeof _314=="string"){ +return $.fn.accordion.methods[_314](this,_315); +} +_314=_314||{}; +return this.each(function(){ +var _316=$.data(this,"accordion"); +if(_316){ +$.extend(_316.options,_314); +}else{ +$.data(this,"accordion",{options:$.extend({},$.fn.accordion.defaults,$.fn.accordion.parseOptions(this),_314),accordion:$(this).addClass("accordion"),panels:[]}); +init(this); +} +_2ec(this); +_2ce(this); +_301(this); +}); +}; +$.fn.accordion.methods={options:function(jq){ +return $.data(jq[0],"accordion").options; +},panels:function(jq){ +return $.data(jq[0],"accordion").panels; +},resize:function(jq,_317){ +return jq.each(function(){ +_2ce(this,_317); +}); +},getSelections:function(jq){ +return _2e1(jq[0]); +},getSelected:function(jq){ +return _2e3(jq[0]); +},getPanel:function(jq,_318){ +return _2e8(jq[0],_318); +},getPanelIndex:function(jq,_319){ +return _2e5(jq[0],_319); +},select:function(jq,_31a){ +return jq.each(function(){ +_2fa(this,_31a); +}); +},unselect:function(jq,_31b){ +return jq.each(function(){ +_2fb(this,_31b); +}); +},add:function(jq,_31c){ +return jq.each(function(){ +add(this,_31c); +}); +},remove:function(jq,_31d){ +return jq.each(function(){ +_30c(this,_31d); +}); +}}; +$.fn.accordion.parseOptions=function(_31e){ +var t=$(_31e); +return $.extend({},$.parser.parseOptions(_31e,["width","height","halign",{fit:"boolean",border:"boolean",animate:"boolean",multiple:"boolean",selected:"number"}])); +}; +$.fn.accordion.defaults={width:"auto",height:"auto",fit:false,border:true,animate:true,multiple:false,selected:0,halign:"top",onSelect:function(_31f,_320){ +},onUnselect:function(_321,_322){ +},onAdd:function(_323,_324){ +},onBeforeRemove:function(_325,_326){ +},onRemove:function(_327,_328){ +}}; +})(jQuery); +(function($){ +function _329(c){ +var w=0; +$(c).children().each(function(){ +w+=$(this).outerWidth(true); +}); +return w; +}; +function _32a(_32b){ +var opts=$.data(_32b,"tabs").options; +if(opts.tabPosition=="left"||opts.tabPosition=="right"||!opts.showHeader){ +return; +} +var _32c=$(_32b).children("div.tabs-header"); +var tool=_32c.children("div.tabs-tool:not(.tabs-tool-hidden)"); +var _32d=_32c.children("div.tabs-scroller-left"); +var _32e=_32c.children("div.tabs-scroller-right"); +var wrap=_32c.children("div.tabs-wrap"); +var _32f=_32c.outerHeight(); +if(opts.plain){ +_32f-=_32f-_32c.height(); +} +tool._outerHeight(_32f); +var _330=_329(_32c.find("ul.tabs")); +var _331=_32c.width()-tool._outerWidth(); +if(_330>_331){ +_32d.add(_32e).show()._outerHeight(_32f); +if(opts.toolPosition=="left"){ +tool.css({left:_32d.outerWidth(),right:""}); +wrap.css({marginLeft:_32d.outerWidth()+tool._outerWidth(),marginRight:_32e._outerWidth(),width:_331-_32d.outerWidth()-_32e.outerWidth()}); +}else{ +tool.css({left:"",right:_32e.outerWidth()}); +wrap.css({marginLeft:_32d.outerWidth(),marginRight:_32e.outerWidth()+tool._outerWidth(),width:_331-_32d.outerWidth()-_32e.outerWidth()}); +} +}else{ +_32d.add(_32e).hide(); +if(opts.toolPosition=="left"){ +tool.css({left:0,right:""}); +wrap.css({marginLeft:tool._outerWidth(),marginRight:0,width:_331}); +}else{ +tool.css({left:"",right:0}); +wrap.css({marginLeft:0,marginRight:tool._outerWidth(),width:_331}); +} +} +}; +function _332(_333){ +var opts=$.data(_333,"tabs").options; +var _334=$(_333).children("div.tabs-header"); +if(opts.tools){ +if(typeof opts.tools=="string"){ +$(opts.tools).addClass("tabs-tool").appendTo(_334); +$(opts.tools).show(); +}else{ +_334.children("div.tabs-tool").remove(); +var _335=$("
      ").appendTo(_334); +var tr=_335.find("tr"); +for(var i=0;i").appendTo(tr); +var tool=$("").appendTo(td); +tool[0].onclick=eval(opts.tools[i].handler||function(){ +}); +tool.linkbutton($.extend({},opts.tools[i],{plain:true})); +} +} +}else{ +_334.children("div.tabs-tool").remove(); +} +}; +function _336(_337,_338){ +var _339=$.data(_337,"tabs"); +var opts=_339.options; +var cc=$(_337); +if(!opts.doSize){ +return; +} +if(_338){ +$.extend(opts,{width:_338.width,height:_338.height}); +} +cc._size(opts); +var _33a=cc.children("div.tabs-header"); +var _33b=cc.children("div.tabs-panels"); +var wrap=_33a.find("div.tabs-wrap"); +var ul=wrap.find(".tabs"); +ul.children("li").removeClass("tabs-first tabs-last"); +ul.children("li:first").addClass("tabs-first"); +ul.children("li:last").addClass("tabs-last"); +if(opts.tabPosition=="left"||opts.tabPosition=="right"){ +_33a._outerWidth(opts.showHeader?opts.headerWidth:0); +_33b._outerWidth(cc.width()-_33a.outerWidth()); +_33a.add(_33b)._size("height",isNaN(parseInt(opts.height))?"":cc.height()); +wrap._outerWidth(_33a.width()); +ul._outerWidth(wrap.width()).css("height",""); +}else{ +_33a.children("div.tabs-scroller-left,div.tabs-scroller-right,div.tabs-tool:not(.tabs-tool-hidden)").css("display",opts.showHeader?"block":"none"); +_33a._outerWidth(cc.width()).css("height",""); +if(opts.showHeader){ +_33a.css("background-color",""); +wrap.css("height",""); +}else{ +_33a.css("background-color","transparent"); +_33a._outerHeight(0); +wrap._outerHeight(0); +} +ul._outerHeight(opts.tabHeight).css("width",""); +ul._outerHeight(ul.outerHeight()-ul.height()-1+opts.tabHeight).css("width",""); +_33b._size("height",isNaN(parseInt(opts.height))?"":(cc.height()-_33a.outerHeight())); +_33b._size("width",cc.width()); +} +if(_339.tabs.length){ +var d1=ul.outerWidth(true)-ul.width(); +var li=ul.children("li:first"); +var d2=li.outerWidth(true)-li.width(); +var _33c=_33a.width()-_33a.children(".tabs-tool:not(.tabs-tool-hidden)")._outerWidth(); +var _33d=Math.floor((_33c-d1-d2*_339.tabs.length)/_339.tabs.length); +$.map(_339.tabs,function(p){ +_33e(p,(opts.justified&&$.inArray(opts.tabPosition,["top","bottom"])>=0)?_33d:undefined); +}); +if(opts.justified&&$.inArray(opts.tabPosition,["top","bottom"])>=0){ +var _33f=_33c-d1-_329(ul); +_33e(_339.tabs[_339.tabs.length-1],_33d+_33f); +} +} +_32a(_337); +function _33e(p,_340){ +var _341=p.panel("options"); +var p_t=_341.tab.find("a.tabs-inner"); +var _340=_340?_340:(parseInt(_341.tabWidth||opts.tabWidth||undefined)); +if(_340){ +p_t._outerWidth(_340); +}else{ +p_t.css("width",""); +} +p_t._outerHeight(opts.tabHeight); +p_t.css("lineHeight",p_t.height()+"px"); +p_t.find(".easyui-fluid:visible").triggerHandler("_resize"); +}; +}; +function _342(_343){ +var opts=$.data(_343,"tabs").options; +var tab=_344(_343); +if(tab){ +var _345=$(_343).children("div.tabs-panels"); +var _346=opts.width=="auto"?"auto":_345.width(); +var _347=opts.height=="auto"?"auto":_345.height(); +tab.panel("resize",{width:_346,height:_347}); +} +}; +function _348(_349){ +var tabs=$.data(_349,"tabs").tabs; +var cc=$(_349).addClass("tabs-container"); +var _34a=$("
      ").insertBefore(cc); +cc.children("div").each(function(){ +_34a[0].appendChild(this); +}); +cc[0].appendChild(_34a[0]); +$("
      "+"
      "+"
      "+"
      "+"
        "+"
        "+"
        ").prependTo(_349); +cc.children("div.tabs-panels").children("div").each(function(i){ +var opts=$.extend({},$.parser.parseOptions(this),{disabled:($(this).attr("disabled")?true:undefined),selected:($(this).attr("selected")?true:undefined)}); +_357(_349,opts,$(this)); +}); +cc.children("div.tabs-header").find(".tabs-scroller-left, .tabs-scroller-right").hover(function(){ +$(this).addClass("tabs-scroller-over"); +},function(){ +$(this).removeClass("tabs-scroller-over"); +}); +cc.bind("_resize",function(e,_34b){ +if($(this).hasClass("easyui-fluid")||_34b){ +_336(_349); +_342(_349); +} +return false; +}); +}; +function _34c(_34d){ +var _34e=$.data(_34d,"tabs"); +var opts=_34e.options; +$(_34d).children("div.tabs-header").unbind().bind("click",function(e){ +if($(e.target).hasClass("tabs-scroller-left")){ +$(_34d).tabs("scrollBy",-opts.scrollIncrement); +}else{ +if($(e.target).hasClass("tabs-scroller-right")){ +$(_34d).tabs("scrollBy",opts.scrollIncrement); +}else{ +var li=$(e.target).closest("li"); +if(li.hasClass("tabs-disabled")){ +return false; +} +var a=$(e.target).closest("a.tabs-close"); +if(a.length){ +_370(_34d,_34f(li)); +}else{ +if(li.length){ +var _350=_34f(li); +var _351=_34e.tabs[_350].panel("options"); +if(_351.collapsible){ +_351.closed?_367(_34d,_350):_384(_34d,_350); +}else{ +_367(_34d,_350); +} +} +} +return false; +} +} +}).bind("contextmenu",function(e){ +var li=$(e.target).closest("li"); +if(li.hasClass("tabs-disabled")){ +return; +} +if(li.length){ +opts.onContextMenu.call(_34d,e,li.find("span.tabs-title").html(),_34f(li)); +} +}); +function _34f(li){ +var _352=0; +li.parent().children("li").each(function(i){ +if(li[0]==this){ +_352=i; +return false; +} +}); +return _352; +}; +}; +function _353(_354){ +var opts=$.data(_354,"tabs").options; +var _355=$(_354).children("div.tabs-header"); +var _356=$(_354).children("div.tabs-panels"); +_355.removeClass("tabs-header-top tabs-header-bottom tabs-header-left tabs-header-right"); +_356.removeClass("tabs-panels-top tabs-panels-bottom tabs-panels-left tabs-panels-right"); +if(opts.tabPosition=="top"){ +_355.insertBefore(_356); +}else{ +if(opts.tabPosition=="bottom"){ +_355.insertAfter(_356); +_355.addClass("tabs-header-bottom"); +_356.addClass("tabs-panels-top"); +}else{ +if(opts.tabPosition=="left"){ +_355.addClass("tabs-header-left"); +_356.addClass("tabs-panels-right"); +}else{ +if(opts.tabPosition=="right"){ +_355.addClass("tabs-header-right"); +_356.addClass("tabs-panels-left"); +} +} +} +} +if(opts.plain==true){ +_355.addClass("tabs-header-plain"); +}else{ +_355.removeClass("tabs-header-plain"); +} +_355.removeClass("tabs-header-narrow").addClass(opts.narrow?"tabs-header-narrow":""); +var tabs=_355.find(".tabs"); +tabs.removeClass("tabs-pill").addClass(opts.pill?"tabs-pill":""); +tabs.removeClass("tabs-narrow").addClass(opts.narrow?"tabs-narrow":""); +tabs.removeClass("tabs-justified").addClass(opts.justified?"tabs-justified":""); +if(opts.border==true){ +_355.removeClass("tabs-header-noborder"); +_356.removeClass("tabs-panels-noborder"); +}else{ +_355.addClass("tabs-header-noborder"); +_356.addClass("tabs-panels-noborder"); +} +opts.doSize=true; +}; +function _357(_358,_359,pp){ +_359=_359||{}; +var _35a=$.data(_358,"tabs"); +var tabs=_35a.tabs; +if(_359.index==undefined||_359.index>tabs.length){ +_359.index=tabs.length; +} +if(_359.index<0){ +_359.index=0; +} +var ul=$(_358).children("div.tabs-header").find("ul.tabs"); +var _35b=$(_358).children("div.tabs-panels"); +var tab=$("
      • "+""+""+""+""+"
      • "); +if(!pp){ +pp=$("
        "); +} +if(_359.index>=tabs.length){ +tab.appendTo(ul); +pp.appendTo(_35b); +tabs.push(pp); +}else{ +tab.insertBefore(ul.children("li:eq("+_359.index+")")); +pp.insertBefore(_35b.children("div.panel:eq("+_359.index+")")); +tabs.splice(_359.index,0,pp); +} +pp.panel($.extend({},_359,{tab:tab,border:false,noheader:true,closed:true,doSize:false,iconCls:(_359.icon?_359.icon:undefined),onLoad:function(){ +if(_359.onLoad){ +_359.onLoad.call(this,arguments); +} +_35a.options.onLoad.call(_358,$(this)); +},onBeforeOpen:function(){ +if(_359.onBeforeOpen){ +if(_359.onBeforeOpen.call(this)==false){ +return false; +} +} +var p=$(_358).tabs("getSelected"); +if(p){ +if(p[0]!=this){ +$(_358).tabs("unselect",_362(_358,p)); +p=$(_358).tabs("getSelected"); +if(p){ +return false; +} +}else{ +_342(_358); +return false; +} +} +var _35c=$(this).panel("options"); +_35c.tab.addClass("tabs-selected"); +var wrap=$(_358).find(">div.tabs-header>div.tabs-wrap"); +var left=_35c.tab.position().left; +var _35d=left+_35c.tab.outerWidth(); +if(left<0||_35d>wrap.width()){ +var _35e=left-(wrap.width()-_35c.tab.width())/2; +$(_358).tabs("scrollBy",_35e); +}else{ +$(_358).tabs("scrollBy",0); +} +var _35f=$(this).panel("panel"); +_35f.css("display","block"); +_342(_358); +_35f.css("display","none"); +},onOpen:function(){ +if(_359.onOpen){ +_359.onOpen.call(this); +} +var _360=$(this).panel("options"); +_35a.selectHis.push(_360.title); +_35a.options.onSelect.call(_358,_360.title,_362(_358,this)); +},onBeforeClose:function(){ +if(_359.onBeforeClose){ +if(_359.onBeforeClose.call(this)==false){ +return false; +} +} +$(this).panel("options").tab.removeClass("tabs-selected"); +},onClose:function(){ +if(_359.onClose){ +_359.onClose.call(this); +} +var _361=$(this).panel("options"); +_35a.options.onUnselect.call(_358,_361.title,_362(_358,this)); +}})); +$(_358).tabs("update",{tab:pp,options:pp.panel("options"),type:"header"}); +}; +function _363(_364,_365){ +var _366=$.data(_364,"tabs"); +var opts=_366.options; +if(_365.selected==undefined){ +_365.selected=true; +} +_357(_364,_365); +opts.onAdd.call(_364,_365.title,_365.index); +if(_365.selected){ +_367(_364,_365.index); +} +}; +function _368(_369,_36a){ +_36a.type=_36a.type||"all"; +var _36b=$.data(_369,"tabs").selectHis; +var pp=_36a.tab; +var opts=pp.panel("options"); +var _36c=opts.title; +$.extend(opts,_36a.options,{iconCls:(_36a.options.icon?_36a.options.icon:undefined)}); +if(_36a.type=="all"||_36a.type=="body"){ +pp.panel(); +} +if(_36a.type=="all"||_36a.type=="header"){ +var tab=opts.tab; +if(opts.header){ +tab.find(".tabs-inner").html($(opts.header)); +}else{ +var _36d=tab.find("span.tabs-title"); +var _36e=tab.find("span.tabs-icon"); +_36d.html(opts.title); +_36e.attr("class","tabs-icon"); +tab.find("a.tabs-close").remove(); +if(opts.closable){ +_36d.addClass("tabs-closable"); +$("").appendTo(tab); +}else{ +_36d.removeClass("tabs-closable"); +} +if(opts.iconCls){ +_36d.addClass("tabs-with-icon"); +_36e.addClass(opts.iconCls); +}else{ +_36d.removeClass("tabs-with-icon"); +} +if(opts.tools){ +var _36f=tab.find("span.tabs-p-tool"); +if(!_36f.length){ +var _36f=$("").insertAfter(tab.find("a.tabs-inner")); +} +if($.isArray(opts.tools)){ +_36f.empty(); +for(var i=0;i").appendTo(_36f); +t.addClass(opts.tools[i].iconCls); +if(opts.tools[i].handler){ +t.bind("click",{handler:opts.tools[i].handler},function(e){ +if($(this).parents("li").hasClass("tabs-disabled")){ +return; +} +e.data.handler.call(this); +}); +} +} +}else{ +$(opts.tools).children().appendTo(_36f); +} +var pr=_36f.children().length*12; +if(opts.closable){ +pr+=8; +_36f.css("right",""); +}else{ +pr-=3; +_36f.css("right","5px"); +} +_36d.css("padding-right",pr+"px"); +}else{ +tab.find("span.tabs-p-tool").remove(); +_36d.css("padding-right",""); +} +} +if(_36c!=opts.title){ +for(var i=0;i<_36b.length;i++){ +if(_36b[i]==_36c){ +_36b[i]=opts.title; +} +} +} +} +if(opts.disabled){ +opts.tab.addClass("tabs-disabled"); +}else{ +opts.tab.removeClass("tabs-disabled"); +} +_336(_369); +$.data(_369,"tabs").options.onUpdate.call(_369,opts.title,_362(_369,pp)); +}; +function _370(_371,_372){ +var opts=$.data(_371,"tabs").options; +var tabs=$.data(_371,"tabs").tabs; +var _373=$.data(_371,"tabs").selectHis; +if(!_374(_371,_372)){ +return; +} +var tab=_375(_371,_372); +var _376=tab.panel("options").title; +var _377=_362(_371,tab); +if(opts.onBeforeClose.call(_371,_376,_377)==false){ +return; +} +var tab=_375(_371,_372,true); +tab.panel("options").tab.remove(); +tab.panel("destroy"); +opts.onClose.call(_371,_376,_377); +_336(_371); +for(var i=0;i<_373.length;i++){ +if(_373[i]==_376){ +_373.splice(i,1); +i--; +} +} +var _378=_373.pop(); +if(_378){ +_367(_371,_378); +}else{ +if(tabs.length){ +_367(_371,0); +} +} +}; +function _375(_379,_37a,_37b){ +var tabs=$.data(_379,"tabs").tabs; +var tab=null; +if(typeof _37a=="number"){ +if(_37a>=0&&_37a"); +for(var i=0;i.tabs-header>.tabs-tool"); +if(_38f){ +tool.removeClass("tabs-tool-hidden").show(); +}else{ +tool.addClass("tabs-tool-hidden").hide(); +} +$(_38e).tabs("resize").tabs("scrollBy",0); +}; +$.fn.tabs=function(_390,_391){ +if(typeof _390=="string"){ +return $.fn.tabs.methods[_390](this,_391); +} +_390=_390||{}; +return this.each(function(){ +var _392=$.data(this,"tabs"); +if(_392){ +$.extend(_392.options,_390); +}else{ +$.data(this,"tabs",{options:$.extend({},$.fn.tabs.defaults,$.fn.tabs.parseOptions(this),_390),tabs:[],selectHis:[]}); +_348(this); +} +_332(this); +_353(this); +_336(this); +_34c(this); +_37e(this); +}); +}; +$.fn.tabs.methods={options:function(jq){ +var cc=jq[0]; +var opts=$.data(cc,"tabs").options; +var s=_344(cc); +opts.selected=s?_362(cc,s):-1; +return opts; +},tabs:function(jq){ +return $.data(jq[0],"tabs").tabs; +},resize:function(jq,_393){ +return jq.each(function(){ +_336(this,_393); +_342(this); +}); +},add:function(jq,_394){ +return jq.each(function(){ +_363(this,_394); +}); +},close:function(jq,_395){ +return jq.each(function(){ +_370(this,_395); +}); +},getTab:function(jq,_396){ +return _375(jq[0],_396); +},getTabIndex:function(jq,tab){ +return _362(jq[0],tab); +},getSelected:function(jq){ +return _344(jq[0]); +},select:function(jq,_397){ +return jq.each(function(){ +_367(this,_397); +}); +},unselect:function(jq,_398){ +return jq.each(function(){ +_384(this,_398); +}); +},exists:function(jq,_399){ +return _374(jq[0],_399); +},update:function(jq,_39a){ +return jq.each(function(){ +_368(this,_39a); +}); +},enableTab:function(jq,_39b){ +return jq.each(function(){ +var opts=$(this).tabs("getTab",_39b).panel("options"); +opts.tab.removeClass("tabs-disabled"); +opts.disabled=false; +}); +},disableTab:function(jq,_39c){ +return jq.each(function(){ +var opts=$(this).tabs("getTab",_39c).panel("options"); +opts.tab.addClass("tabs-disabled"); +opts.disabled=true; +}); +},showHeader:function(jq){ +return jq.each(function(){ +_38a(this,true); +}); +},hideHeader:function(jq){ +return jq.each(function(){ +_38a(this,false); +}); +},showTool:function(jq){ +return jq.each(function(){ +_38d(this,true); +}); +},hideTool:function(jq){ +return jq.each(function(){ +_38d(this,false); +}); +},scrollBy:function(jq,_39d){ +return jq.each(function(){ +var opts=$(this).tabs("options"); +var wrap=$(this).find(">div.tabs-header>div.tabs-wrap"); +var pos=Math.min(wrap._scrollLeft()+_39d,_39e()); +wrap.animate({scrollLeft:pos},opts.scrollDuration); +function _39e(){ +var w=0; +var ul=wrap.children("ul"); +ul.children("li").each(function(){ +w+=$(this).outerWidth(true); +}); +return w-wrap.width()+(ul.outerWidth()-ul.width()); +}; +}); +}}; +$.fn.tabs.parseOptions=function(_39f){ +return $.extend({},$.parser.parseOptions(_39f,["tools","toolPosition","tabPosition",{fit:"boolean",border:"boolean",plain:"boolean"},{headerWidth:"number",tabWidth:"number",tabHeight:"number",selected:"number"},{showHeader:"boolean",justified:"boolean",narrow:"boolean",pill:"boolean"}])); +}; +$.fn.tabs.defaults={width:"auto",height:"auto",headerWidth:150,tabWidth:"auto",tabHeight:27,selected:0,showHeader:true,plain:false,fit:false,border:true,justified:false,narrow:false,pill:false,tools:null,toolPosition:"right",tabPosition:"top",scrollIncrement:100,scrollDuration:400,onLoad:function(_3a0){ +},onSelect:function(_3a1,_3a2){ +},onUnselect:function(_3a3,_3a4){ +},onBeforeClose:function(_3a5,_3a6){ +},onClose:function(_3a7,_3a8){ +},onAdd:function(_3a9,_3aa){ +},onUpdate:function(_3ab,_3ac){ +},onContextMenu:function(e,_3ad,_3ae){ +}}; +})(jQuery); +(function($){ +var _3af=false; +function _3b0(_3b1,_3b2){ +var _3b3=$.data(_3b1,"layout"); +var opts=_3b3.options; +var _3b4=_3b3.panels; +var cc=$(_3b1); +if(_3b2){ +$.extend(opts,{width:_3b2.width,height:_3b2.height}); +} +if(_3b1.tagName.toLowerCase()=="body"){ +cc._size("fit"); +}else{ +cc._size(opts); +} +var cpos={top:0,left:0,width:cc.width(),height:cc.height()}; +_3b5(_3b6(_3b4.expandNorth)?_3b4.expandNorth:_3b4.north,"n"); +_3b5(_3b6(_3b4.expandSouth)?_3b4.expandSouth:_3b4.south,"s"); +_3b7(_3b6(_3b4.expandEast)?_3b4.expandEast:_3b4.east,"e"); +_3b7(_3b6(_3b4.expandWest)?_3b4.expandWest:_3b4.west,"w"); +_3b4.center.panel("resize",cpos); +function _3b5(pp,type){ +if(!pp.length||!_3b6(pp)){ +return; +} +var opts=pp.panel("options"); +pp.panel("resize",{width:cc.width(),height:opts.height}); +var _3b8=pp.panel("panel").outerHeight(); +pp.panel("move",{left:0,top:(type=="n"?0:cc.height()-_3b8)}); +cpos.height-=_3b8; +if(type=="n"){ +cpos.top+=_3b8; +if(!opts.split&&opts.border){ +cpos.top--; +} +} +if(!opts.split&&opts.border){ +cpos.height++; +} +}; +function _3b7(pp,type){ +if(!pp.length||!_3b6(pp)){ +return; +} +var opts=pp.panel("options"); +pp.panel("resize",{width:opts.width,height:cpos.height}); +var _3b9=pp.panel("panel").outerWidth(); +pp.panel("move",{left:(type=="e"?cc.width()-_3b9:0),top:cpos.top}); +cpos.width-=_3b9; +if(type=="w"){ +cpos.left+=_3b9; +if(!opts.split&&opts.border){ +cpos.left--; +} +} +if(!opts.split&&opts.border){ +cpos.width++; +} +}; +}; +function init(_3ba){ +var cc=$(_3ba); +cc.addClass("layout"); +function _3bb(el){ +var _3bc=$.fn.layout.parsePanelOptions(el); +if("north,south,east,west,center".indexOf(_3bc.region)>=0){ +_3bf(_3ba,_3bc,el); +} +}; +var opts=cc.layout("options"); +var _3bd=opts.onAdd; +opts.onAdd=function(){ +}; +cc.find(">div,>form>div").each(function(){ +_3bb(this); +}); +opts.onAdd=_3bd; +cc.append("
        "); +cc.bind("_resize",function(e,_3be){ +if($(this).hasClass("easyui-fluid")||_3be){ +_3b0(_3ba); +} +return false; +}); +}; +function _3bf(_3c0,_3c1,el){ +_3c1.region=_3c1.region||"center"; +var _3c2=$.data(_3c0,"layout").panels; +var cc=$(_3c0); +var dir=_3c1.region; +if(_3c2[dir].length){ +return; +} +var pp=$(el); +if(!pp.length){ +pp=$("
        ").appendTo(cc); +} +var _3c3=$.extend({},$.fn.layout.paneldefaults,{width:(pp.length?parseInt(pp[0].style.width)||pp.outerWidth():"auto"),height:(pp.length?parseInt(pp[0].style.height)||pp.outerHeight():"auto"),doSize:false,collapsible:true,onOpen:function(){ +var tool=$(this).panel("header").children("div.panel-tool"); +tool.children("a.panel-tool-collapse").hide(); +var _3c4={north:"up",south:"down",east:"right",west:"left"}; +if(!_3c4[dir]){ +return; +} +var _3c5="layout-button-"+_3c4[dir]; +var t=tool.children("a."+_3c5); +if(!t.length){ +t=$("").addClass(_3c5).appendTo(tool); +t.bind("click",{dir:dir},function(e){ +_3dc(_3c0,e.data.dir); +return false; +}); +} +$(this).panel("options").collapsible?t.show():t.hide(); +}},_3c1,{cls:((_3c1.cls||"")+" layout-panel layout-panel-"+dir),bodyCls:((_3c1.bodyCls||"")+" layout-body")}); +pp.panel(_3c3); +_3c2[dir]=pp; +var _3c6={north:"s",south:"n",east:"w",west:"e"}; +var _3c7=pp.panel("panel"); +if(pp.panel("options").split){ +_3c7.addClass("layout-split-"+dir); +} +_3c7.resizable($.extend({},{handles:(_3c6[dir]||""),disabled:(!pp.panel("options").split),onStartResize:function(e){ +_3af=true; +if(dir=="north"||dir=="south"){ +var _3c8=$(">div.layout-split-proxy-v",_3c0); +}else{ +var _3c8=$(">div.layout-split-proxy-h",_3c0); +} +var top=0,left=0,_3c9=0,_3ca=0; +var pos={display:"block"}; +if(dir=="north"){ +pos.top=parseInt(_3c7.css("top"))+_3c7.outerHeight()-_3c8.height(); +pos.left=parseInt(_3c7.css("left")); +pos.width=_3c7.outerWidth(); +pos.height=_3c8.height(); +}else{ +if(dir=="south"){ +pos.top=parseInt(_3c7.css("top")); +pos.left=parseInt(_3c7.css("left")); +pos.width=_3c7.outerWidth(); +pos.height=_3c8.height(); +}else{ +if(dir=="east"){ +pos.top=parseInt(_3c7.css("top"))||0; +pos.left=parseInt(_3c7.css("left"))||0; +pos.width=_3c8.width(); +pos.height=_3c7.outerHeight(); +}else{ +if(dir=="west"){ +pos.top=parseInt(_3c7.css("top"))||0; +pos.left=_3c7.outerWidth()-_3c8.width(); +pos.width=_3c8.width(); +pos.height=_3c7.outerHeight(); +} +} +} +} +_3c8.css(pos); +$("
        ").css({left:0,top:0,width:cc.width(),height:cc.height()}).appendTo(cc); +},onResize:function(e){ +if(dir=="north"||dir=="south"){ +var _3cb=_3cc(this); +$(this).resizable("options").maxHeight=_3cb; +var _3cd=$(">div.layout-split-proxy-v",_3c0); +var top=dir=="north"?e.data.height-_3cd.height():$(_3c0).height()-e.data.height; +_3cd.css("top",top); +}else{ +var _3ce=_3cc(this); +$(this).resizable("options").maxWidth=_3ce; +var _3cd=$(">div.layout-split-proxy-h",_3c0); +var left=dir=="west"?e.data.width-_3cd.width():$(_3c0).width()-e.data.width; +_3cd.css("left",left); +} +return false; +},onStopResize:function(e){ +cc.children("div.layout-split-proxy-v,div.layout-split-proxy-h").hide(); +pp.panel("resize",e.data); +_3b0(_3c0); +_3af=false; +cc.find(">div.layout-mask").remove(); +}},_3c1)); +cc.layout("options").onAdd.call(_3c0,dir); +function _3cc(p){ +var _3cf="expand"+dir.substring(0,1).toUpperCase()+dir.substring(1); +var _3d0=_3c2["center"]; +var _3d1=(dir=="north"||dir=="south")?"minHeight":"minWidth"; +var _3d2=(dir=="north"||dir=="south")?"maxHeight":"maxWidth"; +var _3d3=(dir=="north"||dir=="south")?"_outerHeight":"_outerWidth"; +var _3d4=$.parser.parseValue(_3d2,_3c2[dir].panel("options")[_3d2],$(_3c0)); +var _3d5=$.parser.parseValue(_3d1,_3d0.panel("options")[_3d1],$(_3c0)); +var _3d6=_3d0.panel("panel")[_3d3]()-_3d5; +if(_3b6(_3c2[_3cf])){ +_3d6+=_3c2[_3cf][_3d3]()-1; +}else{ +_3d6+=$(p)[_3d3](); +} +if(_3d6>_3d4){ +_3d6=_3d4; +} +return _3d6; +}; +}; +function _3d7(_3d8,_3d9){ +var _3da=$.data(_3d8,"layout").panels; +if(_3da[_3d9].length){ +_3da[_3d9].panel("destroy"); +_3da[_3d9]=$(); +var _3db="expand"+_3d9.substring(0,1).toUpperCase()+_3d9.substring(1); +if(_3da[_3db]){ +_3da[_3db].panel("destroy"); +_3da[_3db]=undefined; +} +$(_3d8).layout("options").onRemove.call(_3d8,_3d9); +} +}; +function _3dc(_3dd,_3de,_3df){ +if(_3df==undefined){ +_3df="normal"; +} +var _3e0=$.data(_3dd,"layout").panels; +var p=_3e0[_3de]; +var _3e1=p.panel("options"); +if(_3e1.onBeforeCollapse.call(p)==false){ +return; +} +var _3e2="expand"+_3de.substring(0,1).toUpperCase()+_3de.substring(1); +if(!_3e0[_3e2]){ +_3e0[_3e2]=_3e3(_3de); +var ep=_3e0[_3e2].panel("panel"); +if(!_3e1.expandMode){ +ep.css("cursor","default"); +}else{ +ep.bind("click",function(){ +if(_3e1.expandMode=="dock"){ +_3ef(_3dd,_3de); +}else{ +p.panel("expand",false).panel("open"); +var _3e4=_3e5(); +p.panel("resize",_3e4.collapse); +p.panel("panel").animate(_3e4.expand,function(){ +$(this).unbind(".layout").bind("mouseleave.layout",{region:_3de},function(e){ +if(_3af==true){ +return; +} +if($("body>div.combo-p>div.combo-panel:visible").length){ +return; +} +_3dc(_3dd,e.data.region); +}); +$(_3dd).layout("options").onExpand.call(_3dd,_3de); +}); +} +return false; +}); +} +} +var _3e6=_3e5(); +if(!_3b6(_3e0[_3e2])){ +_3e0.center.panel("resize",_3e6.resizeC); +} +p.panel("panel").animate(_3e6.collapse,_3df,function(){ +p.panel("collapse",false).panel("close"); +_3e0[_3e2].panel("open").panel("resize",_3e6.expandP); +$(this).unbind(".layout"); +$(_3dd).layout("options").onCollapse.call(_3dd,_3de); +}); +function _3e3(dir){ +var _3e7={"east":"left","west":"right","north":"down","south":"up"}; +var isns=(_3e1.region=="north"||_3e1.region=="south"); +var icon="layout-button-"+_3e7[dir]; +var p=$("
        ").appendTo(_3dd); +p.panel($.extend({},$.fn.layout.paneldefaults,{cls:("layout-expand layout-expand-"+dir),title:" ",titleDirection:_3e1.titleDirection,iconCls:(_3e1.hideCollapsedContent?null:_3e1.iconCls),closed:true,minWidth:0,minHeight:0,doSize:false,region:_3e1.region,collapsedSize:_3e1.collapsedSize,noheader:(!isns&&_3e1.hideExpandTool),tools:((isns&&_3e1.hideExpandTool)?null:[{iconCls:icon,handler:function(){ +_3ef(_3dd,_3de); +return false; +}}]),onResize:function(){ +var _3e8=$(this).children(".layout-expand-title"); +if(_3e8.length){ +_3e8._outerWidth($(this).height()); +var left=($(this).width()-Math.min(_3e8._outerWidth(),_3e8._outerHeight()))/2; +var top=Math.max(_3e8._outerWidth(),_3e8._outerHeight()); +if(_3e8.hasClass("layout-expand-title-down")){ +left+=Math.min(_3e8._outerWidth(),_3e8._outerHeight()); +top=0; +} +_3e8.css({left:(left+"px"),top:(top+"px")}); +} +}})); +if(!_3e1.hideCollapsedContent){ +var _3e9=typeof _3e1.collapsedContent=="function"?_3e1.collapsedContent.call(p[0],_3e1.title):_3e1.collapsedContent; +isns?p.panel("setTitle",_3e9):p.html(_3e9); +} +p.panel("panel").hover(function(){ +$(this).addClass("layout-expand-over"); +},function(){ +$(this).removeClass("layout-expand-over"); +}); +return p; +}; +function _3e5(){ +var cc=$(_3dd); +var _3ea=_3e0.center.panel("options"); +var _3eb=_3e1.collapsedSize; +if(_3de=="east"){ +var _3ec=p.panel("panel")._outerWidth(); +var _3ed=_3ea.width+_3ec-_3eb; +if(_3e1.split||!_3e1.border){ +_3ed++; +} +return {resizeC:{width:_3ed},expand:{left:cc.width()-_3ec},expandP:{top:_3ea.top,left:cc.width()-_3eb,width:_3eb,height:_3ea.height},collapse:{left:cc.width(),top:_3ea.top,height:_3ea.height}}; +}else{ +if(_3de=="west"){ +var _3ec=p.panel("panel")._outerWidth(); +var _3ed=_3ea.width+_3ec-_3eb; +if(_3e1.split||!_3e1.border){ +_3ed++; +} +return {resizeC:{width:_3ed,left:_3eb-1},expand:{left:0},expandP:{left:0,top:_3ea.top,width:_3eb,height:_3ea.height},collapse:{left:-_3ec,top:_3ea.top,height:_3ea.height}}; +}else{ +if(_3de=="north"){ +var _3ee=p.panel("panel")._outerHeight(); +var hh=_3ea.height; +if(!_3b6(_3e0.expandNorth)){ +hh+=_3ee-_3eb+((_3e1.split||!_3e1.border)?1:0); +} +_3e0.east.add(_3e0.west).add(_3e0.expandEast).add(_3e0.expandWest).panel("resize",{top:_3eb-1,height:hh}); +return {resizeC:{top:_3eb-1,height:hh},expand:{top:0},expandP:{top:0,left:0,width:cc.width(),height:_3eb},collapse:{top:-_3ee,width:cc.width()}}; +}else{ +if(_3de=="south"){ +var _3ee=p.panel("panel")._outerHeight(); +var hh=_3ea.height; +if(!_3b6(_3e0.expandSouth)){ +hh+=_3ee-_3eb+((_3e1.split||!_3e1.border)?1:0); +} +_3e0.east.add(_3e0.west).add(_3e0.expandEast).add(_3e0.expandWest).panel("resize",{height:hh}); +return {resizeC:{height:hh},expand:{top:cc.height()-_3ee},expandP:{top:cc.height()-_3eb,left:0,width:cc.width(),height:_3eb},collapse:{top:cc.height(),width:cc.width()}}; +} +} +} +} +}; +}; +function _3ef(_3f0,_3f1){ +var _3f2=$.data(_3f0,"layout").panels; +var p=_3f2[_3f1]; +var _3f3=p.panel("options"); +if(_3f3.onBeforeExpand.call(p)==false){ +return; +} +var _3f4="expand"+_3f1.substring(0,1).toUpperCase()+_3f1.substring(1); +if(_3f2[_3f4]){ +_3f2[_3f4].panel("close"); +p.panel("panel").stop(true,true); +p.panel("expand",false).panel("open"); +var _3f5=_3f6(); +p.panel("resize",_3f5.collapse); +p.panel("panel").animate(_3f5.expand,function(){ +_3b0(_3f0); +$(_3f0).layout("options").onExpand.call(_3f0,_3f1); +}); +} +function _3f6(){ +var cc=$(_3f0); +var _3f7=_3f2.center.panel("options"); +if(_3f1=="east"&&_3f2.expandEast){ +return {collapse:{left:cc.width(),top:_3f7.top,height:_3f7.height},expand:{left:cc.width()-p.panel("panel")._outerWidth()}}; +}else{ +if(_3f1=="west"&&_3f2.expandWest){ +return {collapse:{left:-p.panel("panel")._outerWidth(),top:_3f7.top,height:_3f7.height},expand:{left:0}}; +}else{ +if(_3f1=="north"&&_3f2.expandNorth){ +return {collapse:{top:-p.panel("panel")._outerHeight(),width:cc.width()},expand:{top:0}}; +}else{ +if(_3f1=="south"&&_3f2.expandSouth){ +return {collapse:{top:cc.height(),width:cc.width()},expand:{top:cc.height()-p.panel("panel")._outerHeight()}}; +} +} +} +} +}; +}; +function _3b6(pp){ +if(!pp){ +return false; +} +if(pp.length){ +return pp.panel("panel").is(":visible"); +}else{ +return false; +} +}; +function _3f8(_3f9){ +var _3fa=$.data(_3f9,"layout"); +var opts=_3fa.options; +var _3fb=_3fa.panels; +var _3fc=opts.onCollapse; +opts.onCollapse=function(){ +}; +_3fd("east"); +_3fd("west"); +_3fd("north"); +_3fd("south"); +opts.onCollapse=_3fc; +function _3fd(_3fe){ +var p=_3fb[_3fe]; +if(p.length&&p.panel("options").collapsed){ +_3dc(_3f9,_3fe,0); +} +}; +}; +function _3ff(_400,_401,_402){ +var p=$(_400).layout("panel",_401); +p.panel("options").split=_402; +var cls="layout-split-"+_401; +var _403=p.panel("panel").removeClass(cls); +if(_402){ +_403.addClass(cls); +} +_403.resizable({disabled:(!_402)}); +_3b0(_400); +}; +$.fn.layout=function(_404,_405){ +if(typeof _404=="string"){ +return $.fn.layout.methods[_404](this,_405); +} +_404=_404||{}; +return this.each(function(){ +var _406=$.data(this,"layout"); +if(_406){ +$.extend(_406.options,_404); +}else{ +var opts=$.extend({},$.fn.layout.defaults,$.fn.layout.parseOptions(this),_404); +$.data(this,"layout",{options:opts,panels:{center:$(),north:$(),south:$(),east:$(),west:$()}}); +init(this); +} +_3b0(this); +_3f8(this); +}); +}; +$.fn.layout.methods={options:function(jq){ +return $.data(jq[0],"layout").options; +},resize:function(jq,_407){ +return jq.each(function(){ +_3b0(this,_407); +}); +},panel:function(jq,_408){ +return $.data(jq[0],"layout").panels[_408]; +},collapse:function(jq,_409){ +return jq.each(function(){ +_3dc(this,_409); +}); +},expand:function(jq,_40a){ +return jq.each(function(){ +_3ef(this,_40a); +}); +},add:function(jq,_40b){ +return jq.each(function(){ +_3bf(this,_40b); +_3b0(this); +if($(this).layout("panel",_40b.region).panel("options").collapsed){ +_3dc(this,_40b.region,0); +} +}); +},remove:function(jq,_40c){ +return jq.each(function(){ +_3d7(this,_40c); +_3b0(this); +}); +},split:function(jq,_40d){ +return jq.each(function(){ +_3ff(this,_40d,true); +}); +},unsplit:function(jq,_40e){ +return jq.each(function(){ +_3ff(this,_40e,false); +}); +}}; +$.fn.layout.parseOptions=function(_40f){ +return $.extend({},$.parser.parseOptions(_40f,[{fit:"boolean"}])); +}; +$.fn.layout.defaults={fit:false,onExpand:function(_410){ +},onCollapse:function(_411){ +},onAdd:function(_412){ +},onRemove:function(_413){ +}}; +$.fn.layout.parsePanelOptions=function(_414){ +var t=$(_414); +return $.extend({},$.fn.panel.parseOptions(_414),$.parser.parseOptions(_414,["region",{split:"boolean",collpasedSize:"number",minWidth:"number",minHeight:"number",maxWidth:"number",maxHeight:"number"}])); +}; +$.fn.layout.paneldefaults=$.extend({},$.fn.panel.defaults,{region:null,split:false,collapsedSize:28,expandMode:"float",hideExpandTool:false,hideCollapsedContent:true,collapsedContent:function(_415){ +var p=$(this); +var opts=p.panel("options"); +if(opts.region=="north"||opts.region=="south"){ +return _415; +} +var cc=[]; +if(opts.iconCls){ +cc.push("
        "); +} +cc.push("
        "); +cc.push(_415); +cc.push("
        "); +return cc.join(""); +},minWidth:10,minHeight:10,maxWidth:10000,maxHeight:10000}); +})(jQuery); +(function($){ +$(function(){ +$(document).unbind(".menu").bind("mousedown.menu",function(e){ +var m=$(e.target).closest("div.menu,div.combo-p"); +if(m.length){ +return; +} +$("body>div.menu-top:visible").not(".menu-inline").menu("hide"); +_416($("body>div.menu:visible").not(".menu-inline")); +}); +}); +function init(_417){ +var opts=$.data(_417,"menu").options; +$(_417).addClass("menu-top"); +opts.inline?$(_417).addClass("menu-inline"):$(_417).appendTo("body"); +$(_417).bind("_resize",function(e,_418){ +if($(this).hasClass("easyui-fluid")||_418){ +$(_417).menu("resize",_417); +} +return false; +}); +var _419=_41a($(_417)); +for(var i=0;i<_419.length;i++){ +_41d(_417,_419[i]); +} +function _41a(menu){ +var _41b=[]; +menu.addClass("menu"); +_41b.push(menu); +if(!menu.hasClass("menu-content")){ +menu.children("div").each(function(){ +var _41c=$(this).children("div"); +if(_41c.length){ +_41c.appendTo("body"); +this.submenu=_41c; +var mm=_41a(_41c); +_41b=_41b.concat(mm); +} +}); +} +return _41b; +}; +}; +function _41d(_41e,div){ +var menu=$(div).addClass("menu"); +if(!menu.data("menu")){ +menu.data("menu",{options:$.parser.parseOptions(menu[0],["width","height"])}); +} +if(!menu.hasClass("menu-content")){ +menu.children("div").each(function(){ +_41f(_41e,this); +}); +$("
        ").prependTo(menu); +} +_420(_41e,menu); +if(!menu.hasClass("menu-inline")){ +menu.hide(); +} +_421(_41e,menu); +}; +function _41f(_422,div,_423){ +var item=$(div); +var _424=$.extend({},$.parser.parseOptions(item[0],["id","name","iconCls","href",{separator:"boolean"}]),{disabled:(item.attr("disabled")?true:undefined),text:$.trim(item.html()),onclick:item[0].onclick},_423||{}); +_424.onclick=_424.onclick||_424.handler||null; +item.data("menuitem",{options:_424}); +if(_424.separator){ +item.addClass("menu-sep"); +} +if(!item.hasClass("menu-sep")){ +item.addClass("menu-item"); +item.empty().append($("
        ").html(_424.text)); +if(_424.iconCls){ +$("
        ").addClass(_424.iconCls).appendTo(item); +} +if(_424.id){ +item.attr("id",_424.id); +} +if(_424.onclick){ +if(typeof _424.onclick=="string"){ +item.attr("onclick",_424.onclick); +}else{ +item[0].onclick=eval(_424.onclick); +} +} +if(_424.disabled){ +_425(_422,item[0],true); +} +if(item[0].submenu){ +$("
        ").appendTo(item); +} +} +}; +function _420(_426,menu){ +var opts=$.data(_426,"menu").options; +var _427=menu.attr("style")||""; +var _428=menu.is(":visible"); +menu.css({display:"block",left:-10000,height:"auto",overflow:"hidden"}); +menu.find(".menu-item").each(function(){ +$(this)._outerHeight(opts.itemHeight); +$(this).find(".menu-text").css({height:(opts.itemHeight-2)+"px",lineHeight:(opts.itemHeight-2)+"px"}); +}); +menu.removeClass("menu-noline").addClass(opts.noline?"menu-noline":""); +var _429=menu.data("menu").options; +var _42a=_429.width; +var _42b=_429.height; +if(isNaN(parseInt(_42a))){ +_42a=0; +menu.find("div.menu-text").each(function(){ +if(_42a<$(this).outerWidth()){ +_42a=$(this).outerWidth(); +} +}); +_42a=_42a?_42a+40:""; +} +var _42c=menu.outerHeight(); +if(isNaN(parseInt(_42b))){ +_42b=_42c; +if(menu.hasClass("menu-top")&&opts.alignTo){ +var at=$(opts.alignTo); +var h1=at.offset().top-$(document).scrollTop(); +var h2=$(window)._outerHeight()+$(document).scrollTop()-at.offset().top-at._outerHeight(); +_42b=Math.min(_42b,Math.max(h1,h2)); +}else{ +if(_42b>$(window)._outerHeight()){ +_42b=$(window).height(); +} +} +} +menu.attr("style",_427); +menu.show(); +menu._size($.extend({},_429,{width:_42a,height:_42b,minWidth:_429.minWidth||opts.minWidth,maxWidth:_429.maxWidth||opts.maxWidth})); +menu.find(".easyui-fluid").triggerHandler("_resize",[true]); +menu.css("overflow",menu.outerHeight()<_42c?"auto":"hidden"); +menu.children("div.menu-line")._outerHeight(_42c-2); +if(!_428){ +menu.hide(); +} +}; +function _421(_42d,menu){ +var _42e=$.data(_42d,"menu"); +var opts=_42e.options; +menu.unbind(".menu"); +for(var _42f in opts.events){ +menu.bind(_42f+".menu",{target:_42d},opts.events[_42f]); +} +}; +function _430(e){ +var _431=e.data.target; +var _432=$.data(_431,"menu"); +if(_432.timer){ +clearTimeout(_432.timer); +_432.timer=null; +} +}; +function _433(e){ +var _434=e.data.target; +var _435=$.data(_434,"menu"); +if(_435.options.hideOnUnhover){ +_435.timer=setTimeout(function(){ +_436(_434,$(_434).hasClass("menu-inline")); +},_435.options.duration); +} +}; +function _437(e){ +var _438=e.data.target; +var item=$(e.target).closest(".menu-item"); +if(item.length){ +item.siblings().each(function(){ +if(this.submenu){ +_416(this.submenu); +} +$(this).removeClass("menu-active"); +}); +item.addClass("menu-active"); +if(item.hasClass("menu-item-disabled")){ +item.addClass("menu-active-disabled"); +return; +} +var _439=item[0].submenu; +if(_439){ +$(_438).menu("show",{menu:_439,parent:item}); +} +} +}; +function _43a(e){ +var item=$(e.target).closest(".menu-item"); +if(item.length){ +item.removeClass("menu-active menu-active-disabled"); +var _43b=item[0].submenu; +if(_43b){ +if(e.pageX>=parseInt(_43b.css("left"))){ +item.addClass("menu-active"); +}else{ +_416(_43b); +} +}else{ +item.removeClass("menu-active"); +} +} +}; +function _43c(e){ +var _43d=e.data.target; +var item=$(e.target).closest(".menu-item"); +if(item.length){ +var opts=$(_43d).data("menu").options; +var _43e=item.data("menuitem").options; +if(_43e.disabled){ +return; +} +if(!item[0].submenu){ +_436(_43d,opts.inline); +if(_43e.href){ +location.href=_43e.href; +} +} +item.trigger("mouseenter"); +opts.onClick.call(_43d,$(_43d).menu("getItem",item[0])); +} +}; +function _436(_43f,_440){ +var _441=$.data(_43f,"menu"); +if(_441){ +if($(_43f).is(":visible")){ +_416($(_43f)); +if(_440){ +$(_43f).show(); +}else{ +_441.options.onHide.call(_43f); +} +} +} +return false; +}; +function _442(_443,_444){ +_444=_444||{}; +var left,top; +var opts=$.data(_443,"menu").options; +var menu=$(_444.menu||_443); +$(_443).menu("resize",menu[0]); +if(menu.hasClass("menu-top")){ +$.extend(opts,_444); +left=opts.left; +top=opts.top; +if(opts.alignTo){ +var at=$(opts.alignTo); +left=at.offset().left; +top=at.offset().top+at._outerHeight(); +if(opts.align=="right"){ +left+=at.outerWidth()-menu.outerWidth(); +} +} +if(left+menu.outerWidth()>$(window)._outerWidth()+$(document)._scrollLeft()){ +left=$(window)._outerWidth()+$(document).scrollLeft()-menu.outerWidth()-5; +} +if(left<0){ +left=0; +} +top=_445(top,opts.alignTo); +}else{ +var _446=_444.parent; +left=_446.offset().left+_446.outerWidth()-2; +if(left+menu.outerWidth()+5>$(window)._outerWidth()+$(document).scrollLeft()){ +left=_446.offset().left-menu.outerWidth()+2; +} +top=_445(_446.offset().top-3); +} +function _445(top,_447){ +if(top+menu.outerHeight()>$(window)._outerHeight()+$(document).scrollTop()){ +if(_447){ +top=$(_447).offset().top-menu._outerHeight(); +}else{ +top=$(window)._outerHeight()+$(document).scrollTop()-menu.outerHeight(); +} +} +if(top<0){ +top=0; +} +return top; +}; +menu.css(opts.position.call(_443,menu[0],left,top)); +menu.show(0,function(){ +if(!menu[0].shadow){ +menu[0].shadow=$("
        ").insertAfter(menu); +} +menu[0].shadow.css({display:(menu.hasClass("menu-inline")?"none":"block"),zIndex:$.fn.menu.defaults.zIndex++,left:menu.css("left"),top:menu.css("top"),width:menu.outerWidth(),height:menu.outerHeight()}); +menu.css("z-index",$.fn.menu.defaults.zIndex++); +if(menu.hasClass("menu-top")){ +opts.onShow.call(_443); +} +}); +}; +function _416(menu){ +if(menu&&menu.length){ +_448(menu); +menu.find("div.menu-item").each(function(){ +if(this.submenu){ +_416(this.submenu); +} +$(this).removeClass("menu-active"); +}); +} +function _448(m){ +m.stop(true,true); +if(m[0].shadow){ +m[0].shadow.hide(); +} +m.hide(); +}; +}; +function _449(_44a,text){ +var _44b=null; +var tmp=$("
        "); +function find(menu){ +menu.children("div.menu-item").each(function(){ +var item=$(_44a).menu("getItem",this); +var s=tmp.empty().html(item.text).text(); +if(text==$.trim(s)){ +_44b=item; +}else{ +if(this.submenu&&!_44b){ +find(this.submenu); +} +} +}); +}; +find($(_44a)); +tmp.remove(); +return _44b; +}; +function _425(_44c,_44d,_44e){ +var t=$(_44d); +if(t.hasClass("menu-item")){ +var opts=t.data("menuitem").options; +opts.disabled=_44e; +if(_44e){ +t.addClass("menu-item-disabled"); +t[0].onclick=null; +}else{ +t.removeClass("menu-item-disabled"); +t[0].onclick=opts.onclick; +} +} +}; +function _44f(_450,_451){ +var opts=$.data(_450,"menu").options; +var menu=$(_450); +if(_451.parent){ +if(!_451.parent.submenu){ +var _452=$("
        ").appendTo("body"); +_451.parent.submenu=_452; +$("
        ").appendTo(_451.parent); +_41d(_450,_452); +} +menu=_451.parent.submenu; +} +var div=$("
        ").appendTo(menu); +_41f(_450,div,_451); +}; +function _453(_454,_455){ +function _456(el){ +if(el.submenu){ +el.submenu.children("div.menu-item").each(function(){ +_456(this); +}); +var _457=el.submenu[0].shadow; +if(_457){ +_457.remove(); +} +el.submenu.remove(); +} +$(el).remove(); +}; +_456(_455); +}; +function _458(_459,_45a,_45b){ +var menu=$(_45a).parent(); +if(_45b){ +$(_45a).show(); +}else{ +$(_45a).hide(); +} +_420(_459,menu); +}; +function _45c(_45d){ +$(_45d).children("div.menu-item").each(function(){ +_453(_45d,this); +}); +if(_45d.shadow){ +_45d.shadow.remove(); +} +$(_45d).remove(); +}; +$.fn.menu=function(_45e,_45f){ +if(typeof _45e=="string"){ +return $.fn.menu.methods[_45e](this,_45f); +} +_45e=_45e||{}; +return this.each(function(){ +var _460=$.data(this,"menu"); +if(_460){ +$.extend(_460.options,_45e); +}else{ +_460=$.data(this,"menu",{options:$.extend({},$.fn.menu.defaults,$.fn.menu.parseOptions(this),_45e)}); +init(this); +} +$(this).css({left:_460.options.left,top:_460.options.top}); +}); +}; +$.fn.menu.methods={options:function(jq){ +return $.data(jq[0],"menu").options; +},show:function(jq,pos){ +return jq.each(function(){ +_442(this,pos); +}); +},hide:function(jq){ +return jq.each(function(){ +_436(this); +}); +},destroy:function(jq){ +return jq.each(function(){ +_45c(this); +}); +},setText:function(jq,_461){ +return jq.each(function(){ +var item=$(_461.target).data("menuitem").options; +item.text=_461.text; +$(_461.target).children("div.menu-text").html(_461.text); +}); +},setIcon:function(jq,_462){ +return jq.each(function(){ +var item=$(_462.target).data("menuitem").options; +item.iconCls=_462.iconCls; +$(_462.target).children("div.menu-icon").remove(); +if(_462.iconCls){ +$("
        ").addClass(_462.iconCls).appendTo(_462.target); +} +}); +},getItem:function(jq,_463){ +var item=$(_463).data("menuitem").options; +return $.extend({},item,{target:$(_463)[0]}); +},findItem:function(jq,text){ +return _449(jq[0],text); +},appendItem:function(jq,_464){ +return jq.each(function(){ +_44f(this,_464); +}); +},removeItem:function(jq,_465){ +return jq.each(function(){ +_453(this,_465); +}); +},enableItem:function(jq,_466){ +return jq.each(function(){ +_425(this,_466,false); +}); +},disableItem:function(jq,_467){ +return jq.each(function(){ +_425(this,_467,true); +}); +},showItem:function(jq,_468){ +return jq.each(function(){ +_458(this,_468,true); +}); +},hideItem:function(jq,_469){ +return jq.each(function(){ +_458(this,_469,false); +}); +},resize:function(jq,_46a){ +return jq.each(function(){ +_420(this,_46a?$(_46a):$(this)); +}); +}}; +$.fn.menu.parseOptions=function(_46b){ +return $.extend({},$.parser.parseOptions(_46b,[{minWidth:"number",itemHeight:"number",duration:"number",hideOnUnhover:"boolean"},{fit:"boolean",inline:"boolean",noline:"boolean"}])); +}; +$.fn.menu.defaults={zIndex:110000,left:0,top:0,alignTo:null,align:"left",minWidth:120,itemHeight:22,duration:100,hideOnUnhover:true,inline:false,fit:false,noline:false,events:{mouseenter:_430,mouseleave:_433,mouseover:_437,mouseout:_43a,click:_43c},position:function(_46c,left,top){ +return {left:left,top:top}; +},onShow:function(){ +},onHide:function(){ +},onClick:function(item){ +}}; +})(jQuery); +(function($){ +function init(_46d){ +var opts=$.data(_46d,"menubutton").options; +var btn=$(_46d); +btn.linkbutton(opts); +if(opts.hasDownArrow){ +btn.removeClass(opts.cls.btn1+" "+opts.cls.btn2).addClass("m-btn"); +btn.removeClass("m-btn-small m-btn-medium m-btn-large").addClass("m-btn-"+opts.size); +var _46e=btn.find(".l-btn-left"); +$("").addClass(opts.cls.arrow).appendTo(_46e); +$("").addClass("m-btn-line").appendTo(_46e); +} +$(_46d).menubutton("resize"); +if(opts.menu){ +$(opts.menu).menu({duration:opts.duration}); +var _46f=$(opts.menu).menu("options"); +var _470=_46f.onShow; +var _471=_46f.onHide; +$.extend(_46f,{onShow:function(){ +var _472=$(this).menu("options"); +var btn=$(_472.alignTo); +var opts=btn.menubutton("options"); +btn.addClass((opts.plain==true)?opts.cls.btn2:opts.cls.btn1); +_470.call(this); +},onHide:function(){ +var _473=$(this).menu("options"); +var btn=$(_473.alignTo); +var opts=btn.menubutton("options"); +btn.removeClass((opts.plain==true)?opts.cls.btn2:opts.cls.btn1); +_471.call(this); +}}); +} +}; +function _474(_475){ +var opts=$.data(_475,"menubutton").options; +var btn=$(_475); +var t=btn.find("."+opts.cls.trigger); +if(!t.length){ +t=btn; +} +t.unbind(".menubutton"); +var _476=null; +t.bind("click.menubutton",function(){ +if(!_477()){ +_478(_475); +return false; +} +}).bind("mouseenter.menubutton",function(){ +if(!_477()){ +_476=setTimeout(function(){ +_478(_475); +},opts.duration); +return false; +} +}).bind("mouseleave.menubutton",function(){ +if(_476){ +clearTimeout(_476); +} +$(opts.menu).triggerHandler("mouseleave"); +}); +function _477(){ +return $(_475).linkbutton("options").disabled; +}; +}; +function _478(_479){ +var opts=$(_479).menubutton("options"); +if(opts.disabled||!opts.menu){ +return; +} +$("body>div.menu-top").menu("hide"); +var btn=$(_479); +var mm=$(opts.menu); +if(mm.length){ +mm.menu("options").alignTo=btn; +mm.menu("show",{alignTo:btn,align:opts.menuAlign}); +} +btn.blur(); +}; +$.fn.menubutton=function(_47a,_47b){ +if(typeof _47a=="string"){ +var _47c=$.fn.menubutton.methods[_47a]; +if(_47c){ +return _47c(this,_47b); +}else{ +return this.linkbutton(_47a,_47b); +} +} +_47a=_47a||{}; +return this.each(function(){ +var _47d=$.data(this,"menubutton"); +if(_47d){ +$.extend(_47d.options,_47a); +}else{ +$.data(this,"menubutton",{options:$.extend({},$.fn.menubutton.defaults,$.fn.menubutton.parseOptions(this),_47a)}); +$(this).removeAttr("disabled"); +} +init(this); +_474(this); +}); +}; +$.fn.menubutton.methods={options:function(jq){ +var _47e=jq.linkbutton("options"); +return $.extend($.data(jq[0],"menubutton").options,{toggle:_47e.toggle,selected:_47e.selected,disabled:_47e.disabled}); +},destroy:function(jq){ +return jq.each(function(){ +var opts=$(this).menubutton("options"); +if(opts.menu){ +$(opts.menu).menu("destroy"); +} +$(this).remove(); +}); +}}; +$.fn.menubutton.parseOptions=function(_47f){ +var t=$(_47f); +return $.extend({},$.fn.linkbutton.parseOptions(_47f),$.parser.parseOptions(_47f,["menu",{plain:"boolean",hasDownArrow:"boolean",duration:"number"}])); +}; +$.fn.menubutton.defaults=$.extend({},$.fn.linkbutton.defaults,{plain:true,hasDownArrow:true,menu:null,menuAlign:"left",duration:100,cls:{btn1:"m-btn-active",btn2:"m-btn-plain-active",arrow:"m-btn-downarrow",trigger:"m-btn"}}); +})(jQuery); +(function($){ +function init(_480){ +var opts=$.data(_480,"splitbutton").options; +$(_480).menubutton(opts); +$(_480).addClass("s-btn"); +}; +$.fn.splitbutton=function(_481,_482){ +if(typeof _481=="string"){ +var _483=$.fn.splitbutton.methods[_481]; +if(_483){ +return _483(this,_482); +}else{ +return this.menubutton(_481,_482); +} +} +_481=_481||{}; +return this.each(function(){ +var _484=$.data(this,"splitbutton"); +if(_484){ +$.extend(_484.options,_481); +}else{ +$.data(this,"splitbutton",{options:$.extend({},$.fn.splitbutton.defaults,$.fn.splitbutton.parseOptions(this),_481)}); +$(this).removeAttr("disabled"); +} +init(this); +}); +}; +$.fn.splitbutton.methods={options:function(jq){ +var _485=jq.menubutton("options"); +var _486=$.data(jq[0],"splitbutton").options; +$.extend(_486,{disabled:_485.disabled,toggle:_485.toggle,selected:_485.selected}); +return _486; +}}; +$.fn.splitbutton.parseOptions=function(_487){ +var t=$(_487); +return $.extend({},$.fn.linkbutton.parseOptions(_487),$.parser.parseOptions(_487,["menu",{plain:"boolean",duration:"number"}])); +}; +$.fn.splitbutton.defaults=$.extend({},$.fn.linkbutton.defaults,{plain:true,menu:null,duration:100,cls:{btn1:"m-btn-active s-btn-active",btn2:"m-btn-plain-active s-btn-plain-active",arrow:"m-btn-downarrow",trigger:"m-btn-line"}}); +})(jQuery); +(function($){ +function init(_488){ +var _489=$(""+""+""+""+""+""+""+"").insertAfter(_488); +var t=$(_488); +t.addClass("switchbutton-f").hide(); +var name=t.attr("name"); +if(name){ +t.removeAttr("name").attr("switchbuttonName",name); +_489.find(".switchbutton-value").attr("name",name); +} +_489.bind("_resize",function(e,_48a){ +if($(this).hasClass("easyui-fluid")||_48a){ +_48b(_488); +} +return false; +}); +return _489; +}; +function _48b(_48c,_48d){ +var _48e=$.data(_48c,"switchbutton"); +var opts=_48e.options; +var _48f=_48e.switchbutton; +if(_48d){ +$.extend(opts,_48d); +} +var _490=_48f.is(":visible"); +if(!_490){ +_48f.appendTo("body"); +} +_48f._size(opts); +var w=_48f.width(); +var h=_48f.height(); +var w=_48f.outerWidth(); +var h=_48f.outerHeight(); +var _491=parseInt(opts.handleWidth)||_48f.height(); +var _492=w*2-_491; +_48f.find(".switchbutton-inner").css({width:_492+"px",height:h+"px",lineHeight:h+"px"}); +_48f.find(".switchbutton-handle")._outerWidth(_491)._outerHeight(h).css({marginLeft:-_491/2+"px"}); +_48f.find(".switchbutton-on").css({width:(w-_491/2)+"px",textIndent:(opts.reversed?"":"-")+_491/2+"px"}); +_48f.find(".switchbutton-off").css({width:(w-_491/2)+"px",textIndent:(opts.reversed?"-":"")+_491/2+"px"}); +opts.marginWidth=w-_491; +_493(_48c,opts.checked,false); +if(!_490){ +_48f.insertAfter(_48c); +} +}; +function _494(_495){ +var _496=$.data(_495,"switchbutton"); +var opts=_496.options; +var _497=_496.switchbutton; +var _498=_497.find(".switchbutton-inner"); +var on=_498.find(".switchbutton-on").html(opts.onText); +var off=_498.find(".switchbutton-off").html(opts.offText); +var _499=_498.find(".switchbutton-handle").html(opts.handleText); +if(opts.reversed){ +off.prependTo(_498); +on.insertAfter(_499); +}else{ +on.prependTo(_498); +off.insertAfter(_499); +} +_497.find(".switchbutton-value")._propAttr("checked",opts.checked); +_497.removeClass("switchbutton-disabled").addClass(opts.disabled?"switchbutton-disabled":""); +_497.removeClass("switchbutton-reversed").addClass(opts.reversed?"switchbutton-reversed":""); +_493(_495,opts.checked); +_49a(_495,opts.readonly); +$(_495).switchbutton("setValue",opts.value); +}; +function _493(_49b,_49c,_49d){ +var _49e=$.data(_49b,"switchbutton"); +var opts=_49e.options; +opts.checked=_49c; +var _49f=_49e.switchbutton.find(".switchbutton-inner"); +var _4a0=_49f.find(".switchbutton-on"); +var _4a1=opts.reversed?(opts.checked?opts.marginWidth:0):(opts.checked?0:opts.marginWidth); +var dir=_4a0.css("float").toLowerCase(); +var css={}; +css["margin-"+dir]=-_4a1+"px"; +_49d?_49f.animate(css,200):_49f.css(css); +var _4a2=_49f.find(".switchbutton-value"); +var ck=_4a2.is(":checked"); +$(_49b).add(_4a2)._propAttr("checked",opts.checked); +if(ck!=opts.checked){ +opts.onChange.call(_49b,opts.checked); +} +}; +function _4a3(_4a4,_4a5){ +var _4a6=$.data(_4a4,"switchbutton"); +var opts=_4a6.options; +var _4a7=_4a6.switchbutton; +var _4a8=_4a7.find(".switchbutton-value"); +if(_4a5){ +opts.disabled=true; +$(_4a4).add(_4a8).attr("disabled","disabled"); +_4a7.addClass("switchbutton-disabled"); +}else{ +opts.disabled=false; +$(_4a4).add(_4a8).removeAttr("disabled"); +_4a7.removeClass("switchbutton-disabled"); +} +}; +function _49a(_4a9,mode){ +var _4aa=$.data(_4a9,"switchbutton"); +var opts=_4aa.options; +opts.readonly=mode==undefined?true:mode; +_4aa.switchbutton.removeClass("switchbutton-readonly").addClass(opts.readonly?"switchbutton-readonly":""); +}; +function _4ab(_4ac){ +var _4ad=$.data(_4ac,"switchbutton"); +var opts=_4ad.options; +_4ad.switchbutton.unbind(".switchbutton").bind("click.switchbutton",function(){ +if(!opts.disabled&&!opts.readonly){ +_493(_4ac,opts.checked?false:true,true); +} +}); +}; +$.fn.switchbutton=function(_4ae,_4af){ +if(typeof _4ae=="string"){ +return $.fn.switchbutton.methods[_4ae](this,_4af); +} +_4ae=_4ae||{}; +return this.each(function(){ +var _4b0=$.data(this,"switchbutton"); +if(_4b0){ +$.extend(_4b0.options,_4ae); +}else{ +_4b0=$.data(this,"switchbutton",{options:$.extend({},$.fn.switchbutton.defaults,$.fn.switchbutton.parseOptions(this),_4ae),switchbutton:init(this)}); +} +_4b0.options.originalChecked=_4b0.options.checked; +_494(this); +_48b(this); +_4ab(this); +}); +}; +$.fn.switchbutton.methods={options:function(jq){ +var _4b1=jq.data("switchbutton"); +return $.extend(_4b1.options,{value:_4b1.switchbutton.find(".switchbutton-value").val()}); +},resize:function(jq,_4b2){ +return jq.each(function(){ +_48b(this,_4b2); +}); +},enable:function(jq){ +return jq.each(function(){ +_4a3(this,false); +}); +},disable:function(jq){ +return jq.each(function(){ +_4a3(this,true); +}); +},readonly:function(jq,mode){ +return jq.each(function(){ +_49a(this,mode); +}); +},check:function(jq){ +return jq.each(function(){ +_493(this,true); +}); +},uncheck:function(jq){ +return jq.each(function(){ +_493(this,false); +}); +},clear:function(jq){ +return jq.each(function(){ +_493(this,false); +}); +},reset:function(jq){ +return jq.each(function(){ +var opts=$(this).switchbutton("options"); +_493(this,opts.originalChecked); +}); +},setValue:function(jq,_4b3){ +return jq.each(function(){ +$(this).val(_4b3); +$.data(this,"switchbutton").switchbutton.find(".switchbutton-value").val(_4b3); +}); +}}; +$.fn.switchbutton.parseOptions=function(_4b4){ +var t=$(_4b4); +return $.extend({},$.parser.parseOptions(_4b4,["onText","offText","handleText",{handleWidth:"number",reversed:"boolean"}]),{value:(t.val()||undefined),checked:(t.attr("checked")?true:undefined),disabled:(t.attr("disabled")?true:undefined),readonly:(t.attr("readonly")?true:undefined)}); +}; +$.fn.switchbutton.defaults={handleWidth:"auto",width:60,height:26,checked:false,disabled:false,readonly:false,reversed:false,onText:"ON",offText:"OFF",handleText:"",value:"on",onChange:function(_4b5){ +}}; +})(jQuery); +(function($){ +function init(_4b6){ +$(_4b6).addClass("validatebox-text"); +}; +function _4b7(_4b8){ +var _4b9=$.data(_4b8,"validatebox"); +_4b9.validating=false; +if(_4b9.vtimer){ +clearTimeout(_4b9.vtimer); +} +if(_4b9.ftimer){ +clearTimeout(_4b9.ftimer); +} +$(_4b8).tooltip("destroy"); +$(_4b8).unbind(); +$(_4b8).remove(); +}; +function _4ba(_4bb){ +var opts=$.data(_4bb,"validatebox").options; +$(_4bb).unbind(".validatebox"); +if(opts.novalidate||opts.disabled){ +return; +} +for(var _4bc in opts.events){ +$(_4bb).bind(_4bc+".validatebox",{target:_4bb},opts.events[_4bc]); +} +}; +function _4bd(e){ +var _4be=e.data.target; +var _4bf=$.data(_4be,"validatebox"); +var opts=_4bf.options; +if($(_4be).attr("readonly")){ +return; +} +_4bf.validating=true; +_4bf.value=opts.val(_4be); +(function(){ +if(!$(_4be).is(":visible")){ +_4bf.validating=false; +} +if(_4bf.validating){ +var _4c0=opts.val(_4be); +if(_4bf.value!=_4c0){ +_4bf.value=_4c0; +if(_4bf.vtimer){ +clearTimeout(_4bf.vtimer); +} +_4bf.vtimer=setTimeout(function(){ +$(_4be).validatebox("validate"); +},opts.delay); +}else{ +if(_4bf.message){ +opts.err(_4be,_4bf.message); +} +} +_4bf.ftimer=setTimeout(arguments.callee,opts.interval); +} +})(); +}; +function _4c1(e){ +var _4c2=e.data.target; +var _4c3=$.data(_4c2,"validatebox"); +var opts=_4c3.options; +_4c3.validating=false; +if(_4c3.vtimer){ +clearTimeout(_4c3.vtimer); +_4c3.vtimer=undefined; +} +if(_4c3.ftimer){ +clearTimeout(_4c3.ftimer); +_4c3.ftimer=undefined; +} +if(opts.validateOnBlur){ +setTimeout(function(){ +$(_4c2).validatebox("validate"); +},0); +} +opts.err(_4c2,_4c3.message,"hide"); +}; +function _4c4(e){ +var _4c5=e.data.target; +var _4c6=$.data(_4c5,"validatebox"); +_4c6.options.err(_4c5,_4c6.message,"show"); +}; +function _4c7(e){ +var _4c8=e.data.target; +var _4c9=$.data(_4c8,"validatebox"); +if(!_4c9.validating){ +_4c9.options.err(_4c8,_4c9.message,"hide"); +} +}; +function _4ca(_4cb,_4cc,_4cd){ +var _4ce=$.data(_4cb,"validatebox"); +var opts=_4ce.options; +var t=$(_4cb); +if(_4cd=="hide"||!_4cc){ +t.tooltip("hide"); +}else{ +if((t.is(":focus")&&_4ce.validating)||_4cd=="show"){ +t.tooltip($.extend({},opts.tipOptions,{content:_4cc,position:opts.tipPosition,deltaX:opts.deltaX,deltaY:opts.deltaY})).tooltip("show"); +} +} +}; +function _4cf(_4d0){ +var _4d1=$.data(_4d0,"validatebox"); +var opts=_4d1.options; +var box=$(_4d0); +opts.onBeforeValidate.call(_4d0); +var _4d2=_4d3(); +_4d2?box.removeClass("validatebox-invalid"):box.addClass("validatebox-invalid"); +opts.err(_4d0,_4d1.message); +opts.onValidate.call(_4d0,_4d2); +return _4d2; +function _4d4(msg){ +_4d1.message=msg; +}; +function _4d5(_4d6,_4d7){ +var _4d8=opts.val(_4d0); +var _4d9=/([a-zA-Z_]+)(.*)/.exec(_4d6); +var rule=opts.rules[_4d9[1]]; +if(rule&&_4d8){ +var _4da=_4d7||opts.validParams||eval(_4d9[2]); +if(!rule["validator"].call(_4d0,_4d8,_4da)){ +var _4db=rule["message"]; +if(_4da){ +for(var i=0;i<_4da.length;i++){ +_4db=_4db.replace(new RegExp("\\{"+i+"\\}","g"),_4da[i]); +} +} +_4d4(opts.invalidMessage||_4db); +return false; +} +} +return true; +}; +function _4d3(){ +_4d4(""); +if(!opts._validateOnCreate){ +setTimeout(function(){ +opts._validateOnCreate=true; +},0); +return true; +} +if(opts.novalidate||opts.disabled){ +return true; +} +if(opts.required){ +if(opts.val(_4d0)==""){ +_4d4(opts.missingMessage); +return false; +} +} +if(opts.validType){ +if($.isArray(opts.validType)){ +for(var i=0;i=_4ee[0]&&len<=_4ee[1]; +},message:"Please enter a value between {0} and {1}."},remote:{validator:function(_4ef,_4f0){ +var data={}; +data[_4f0[1]]=_4ef; +var _4f1=$.ajax({url:_4f0[0],dataType:"json",data:data,async:false,cache:false,type:"post"}).responseText; +return _4f1=="true"; +},message:"Please fix this field."}},onBeforeValidate:function(){ +},onValidate:function(_4f2){ +}}; +})(jQuery); +(function($){ +var _4f3=0; +function init(_4f4){ +$(_4f4).addClass("textbox-f").hide(); +var span=$(""+""+""+"").insertAfter(_4f4); +var name=$(_4f4).attr("name"); +if(name){ +span.find("input.textbox-value").attr("name",name); +$(_4f4).removeAttr("name").attr("textboxName",name); +} +return span; +}; +function _4f5(_4f6){ +var _4f7=$.data(_4f6,"textbox"); +var opts=_4f7.options; +var tb=_4f7.textbox; +var _4f8="_easyui_textbox_input"+(++_4f3); +tb.addClass(opts.cls); +tb.find(".textbox-text").remove(); +if(opts.multiline){ +$("").prependTo(tb); +}else{ +$("").prependTo(tb); +} +$("#"+_4f8).attr("tabindex",$(_4f6).attr("tabindex")||"").css("text-align",_4f6.style.textAlign||""); +tb.find(".textbox-addon").remove(); +var bb=opts.icons?$.extend(true,[],opts.icons):[]; +if(opts.iconCls){ +bb.push({iconCls:opts.iconCls,disabled:true}); +} +if(bb.length){ +var bc=$("").prependTo(tb); +bc.addClass("textbox-addon-"+opts.iconAlign); +for(var i=0;i"); +} +} +tb.find(".textbox-button").remove(); +if(opts.buttonText||opts.buttonIcon){ +var btn=$("").prependTo(tb); +btn.addClass("textbox-button-"+opts.buttonAlign).linkbutton({text:opts.buttonText,iconCls:opts.buttonIcon,onClick:function(){ +var t=$(this).parent().prev(); +t.textbox("options").onClickButton.call(t[0]); +}}); +} +if(opts.label){ +if(typeof opts.label=="object"){ +_4f7.label=$(opts.label); +_4f7.label.attr("for",_4f8); +}else{ +$(_4f7.label).remove(); +_4f7.label=$("").html(opts.label); +_4f7.label.css("textAlign",opts.labelAlign).attr("for",_4f8); +if(opts.labelPosition=="after"){ +_4f7.label.insertAfter(tb); +}else{ +_4f7.label.insertBefore(_4f6); +} +_4f7.label.removeClass("textbox-label-left textbox-label-right textbox-label-top"); +_4f7.label.addClass("textbox-label-"+opts.labelPosition); +} +}else{ +$(_4f7.label).remove(); +} +_4f9(_4f6); +_4fa(_4f6,opts.disabled); +_4fb(_4f6,opts.readonly); +}; +function _4fc(_4fd){ +var _4fe=$.data(_4fd,"textbox"); +var tb=_4fe.textbox; +tb.find(".textbox-text").validatebox("destroy"); +tb.remove(); +$(_4fe.label).remove(); +$(_4fd).remove(); +}; +function _4ff(_500,_501){ +var _502=$.data(_500,"textbox"); +var opts=_502.options; +var tb=_502.textbox; +var _503=tb.parent(); +if(_501){ +if(typeof _501=="object"){ +$.extend(opts,_501); +}else{ +opts.width=_501; +} +} +if(isNaN(parseInt(opts.width))){ +var c=$(_500).clone(); +c.css("visibility","hidden"); +c.insertAfter(_500); +opts.width=c.outerWidth(); +c.remove(); +} +var _504=tb.is(":visible"); +if(!_504){ +tb.appendTo("body"); +} +var _505=tb.find(".textbox-text"); +var btn=tb.find(".textbox-button"); +var _506=tb.find(".textbox-addon"); +var _507=_506.find(".textbox-icon"); +if(opts.height=="auto"){ +_505.css({margin:"",paddingTop:"",paddingBottom:"",height:"",lineHeight:""}); +} +tb._size(opts,_503); +if(opts.label&&opts.labelPosition){ +if(opts.labelPosition=="top"){ +_502.label._size({width:opts.labelWidth=="auto"?tb.outerWidth():opts.labelWidth},tb); +if(opts.height!="auto"){ +tb._size("height",tb.outerHeight()-_502.label.outerHeight()); +} +}else{ +_502.label._size({width:opts.labelWidth,height:tb.outerHeight()},tb); +if(!opts.multiline){ +_502.label.css("lineHeight",_502.label.height()+"px"); +} +tb._size("width",tb.outerWidth()-_502.label.outerWidth()); +} +} +if(opts.buttonAlign=="left"||opts.buttonAlign=="right"){ +btn.linkbutton("resize",{height:tb.height()}); +}else{ +btn.linkbutton("resize",{width:"100%"}); +} +var _508=tb.width()-_507.length*opts.iconWidth-_509("left")-_509("right"); +var _50a=opts.height=="auto"?_505.outerHeight():(tb.height()-_509("top")-_509("bottom")); +_506.css(opts.iconAlign,_509(opts.iconAlign)+"px"); +_506.css("top",_509("top")+"px"); +_507.css({width:opts.iconWidth+"px",height:_50a+"px"}); +_505.css({paddingLeft:(_500.style.paddingLeft||""),paddingRight:(_500.style.paddingRight||""),marginLeft:_50b("left"),marginRight:_50b("right"),marginTop:_509("top"),marginBottom:_509("bottom")}); +if(opts.multiline){ +_505.css({paddingTop:(_500.style.paddingTop||""),paddingBottom:(_500.style.paddingBottom||"")}); +_505._outerHeight(_50a); +}else{ +_505.css({paddingTop:0,paddingBottom:0,height:_50a+"px",lineHeight:_50a+"px"}); +} +_505._outerWidth(_508); +opts.onResizing.call(_500,opts.width,opts.height); +if(!_504){ +tb.insertAfter(_500); +} +opts.onResize.call(_500,opts.width,opts.height); +function _50b(_50c){ +return (opts.iconAlign==_50c?_506._outerWidth():0)+_509(_50c); +}; +function _509(_50d){ +var w=0; +btn.filter(".textbox-button-"+_50d).each(function(){ +if(_50d=="left"||_50d=="right"){ +w+=$(this).outerWidth(); +}else{ +w+=$(this).outerHeight(); +} +}); +return w; +}; +}; +function _4f9(_50e){ +var opts=$(_50e).textbox("options"); +var _50f=$(_50e).textbox("textbox"); +_50f.validatebox($.extend({},opts,{deltaX:function(_510){ +return $(_50e).textbox("getTipX",_510); +},deltaY:function(_511){ +return $(_50e).textbox("getTipY",_511); +},onBeforeValidate:function(){ +opts.onBeforeValidate.call(_50e); +var box=$(this); +if(!box.is(":focus")){ +if(box.val()!==opts.value){ +opts.oldInputValue=box.val(); +box.val(opts.value); +} +} +},onValidate:function(_512){ +var box=$(this); +if(opts.oldInputValue!=undefined){ +box.val(opts.oldInputValue); +opts.oldInputValue=undefined; +} +var tb=box.parent(); +if(_512){ +tb.removeClass("textbox-invalid"); +}else{ +tb.addClass("textbox-invalid"); +} +opts.onValidate.call(_50e,_512); +}})); +}; +function _513(_514){ +var _515=$.data(_514,"textbox"); +var opts=_515.options; +var tb=_515.textbox; +var _516=tb.find(".textbox-text"); +_516.attr("placeholder",opts.prompt); +_516.unbind(".textbox"); +$(_515.label).unbind(".textbox"); +if(!opts.disabled&&!opts.readonly){ +if(_515.label){ +$(_515.label).bind("click.textbox",function(e){ +if(!opts.hasFocusMe){ +_516.focus(); +$(_514).textbox("setSelectionRange",{start:0,end:_516.val().length}); +} +}); +} +_516.bind("blur.textbox",function(e){ +if(!tb.hasClass("textbox-focused")){ +return; +} +opts.value=$(this).val(); +if(opts.value==""){ +$(this).val(opts.prompt).addClass("textbox-prompt"); +}else{ +$(this).removeClass("textbox-prompt"); +} +tb.removeClass("textbox-focused"); +}).bind("focus.textbox",function(e){ +opts.hasFocusMe=true; +if(tb.hasClass("textbox-focused")){ +return; +} +if($(this).val()!=opts.value){ +$(this).val(opts.value); +} +$(this).removeClass("textbox-prompt"); +tb.addClass("textbox-focused"); +}); +for(var _517 in opts.inputEvents){ +_516.bind(_517+".textbox",{target:_514},opts.inputEvents[_517]); +} +} +var _518=tb.find(".textbox-addon"); +_518.unbind().bind("click",{target:_514},function(e){ +var icon=$(e.target).closest("a.textbox-icon:not(.textbox-icon-disabled)"); +if(icon.length){ +var _519=parseInt(icon.attr("icon-index")); +var conf=opts.icons[_519]; +if(conf&&conf.handler){ +conf.handler.call(icon[0],e); +} +opts.onClickIcon.call(_514,_519); +} +}); +_518.find(".textbox-icon").each(function(_51a){ +var conf=opts.icons[_51a]; +var icon=$(this); +if(!conf||conf.disabled||opts.disabled||opts.readonly){ +icon.addClass("textbox-icon-disabled"); +}else{ +icon.removeClass("textbox-icon-disabled"); +} +}); +var btn=tb.find(".textbox-button"); +btn.linkbutton((opts.disabled||opts.readonly)?"disable":"enable"); +tb.unbind(".textbox").bind("_resize.textbox",function(e,_51b){ +if($(this).hasClass("easyui-fluid")||_51b){ +_4ff(_514); +} +return false; +}); +}; +function _4fa(_51c,_51d){ +var _51e=$.data(_51c,"textbox"); +var opts=_51e.options; +var tb=_51e.textbox; +var _51f=tb.find(".textbox-text"); +var ss=$(_51c).add(tb.find(".textbox-value")); +opts.disabled=_51d; +if(opts.disabled){ +_51f.blur(); +_51f.validatebox("disable"); +tb.addClass("textbox-disabled"); +ss.attr("disabled","disabled"); +$(_51e.label).addClass("textbox-label-disabled"); +}else{ +_51f.validatebox("enable"); +tb.removeClass("textbox-disabled"); +ss.removeAttr("disabled"); +$(_51e.label).removeClass("textbox-label-disabled"); +} +}; +function _4fb(_520,mode){ +var _521=$.data(_520,"textbox"); +var opts=_521.options; +var tb=_521.textbox; +var _522=tb.find(".textbox-text"); +opts.readonly=mode==undefined?true:mode; +if(opts.readonly){ +_522.triggerHandler("blur.textbox"); +} +_522.validatebox("readonly",opts.readonly); +tb.removeClass("textbox-readonly").addClass(opts.readonly?"textbox-readonly":""); +}; +$.fn.textbox=function(_523,_524){ +if(typeof _523=="string"){ +var _525=$.fn.textbox.methods[_523]; +if(_525){ +return _525(this,_524); +}else{ +return this.each(function(){ +var _526=$(this).textbox("textbox"); +_526.validatebox(_523,_524); +}); +} +} +_523=_523||{}; +return this.each(function(){ +var _527=$.data(this,"textbox"); +if(_527){ +$.extend(_527.options,_523); +if(_523.value!=undefined){ +_527.options.originalValue=_523.value; +} +}else{ +_527=$.data(this,"textbox",{options:$.extend({},$.fn.textbox.defaults,$.fn.textbox.parseOptions(this),_523),textbox:init(this)}); +_527.options.originalValue=_527.options.value; +} +_4f5(this); +_513(this); +if(_527.options.doSize){ +_4ff(this); +} +var _528=_527.options.value; +_527.options.value=""; +$(this).textbox("initValue",_528); +}); +}; +$.fn.textbox.methods={options:function(jq){ +return $.data(jq[0],"textbox").options; +},cloneFrom:function(jq,from){ +return jq.each(function(){ +var t=$(this); +if(t.data("textbox")){ +return; +} +if(!$(from).data("textbox")){ +$(from).textbox(); +} +var opts=$.extend(true,{},$(from).textbox("options")); +var name=t.attr("name")||""; +t.addClass("textbox-f").hide(); +t.removeAttr("name").attr("textboxName",name); +var span=$(from).next().clone().insertAfter(t); +var _529="_easyui_textbox_input"+(++_4f3); +span.find(".textbox-value").attr("name",name); +span.find(".textbox-text").attr("id",_529); +var _52a=$($(from).textbox("label")).clone(); +if(_52a.length){ +_52a.attr("for",_529); +if(opts.labelPosition=="after"){ +_52a.insertAfter(t.next()); +}else{ +_52a.insertBefore(t); +} +} +$.data(this,"textbox",{options:opts,textbox:span,label:(_52a.length?_52a:undefined)}); +var _52b=$(from).textbox("button"); +if(_52b.length){ +t.textbox("button").linkbutton($.extend(true,{},_52b.linkbutton("options"))); +} +_513(this); +_4f9(this); +}); +},textbox:function(jq){ +return $.data(jq[0],"textbox").textbox.find(".textbox-text"); +},button:function(jq){ +return $.data(jq[0],"textbox").textbox.find(".textbox-button"); +},label:function(jq){ +return $.data(jq[0],"textbox").label; +},destroy:function(jq){ +return jq.each(function(){ +_4fc(this); +}); +},resize:function(jq,_52c){ +return jq.each(function(){ +_4ff(this,_52c); +}); +},disable:function(jq){ +return jq.each(function(){ +_4fa(this,true); +_513(this); +}); +},enable:function(jq){ +return jq.each(function(){ +_4fa(this,false); +_513(this); +}); +},readonly:function(jq,mode){ +return jq.each(function(){ +_4fb(this,mode); +_513(this); +}); +},isValid:function(jq){ +return jq.textbox("textbox").validatebox("isValid"); +},clear:function(jq){ +return jq.each(function(){ +$(this).textbox("setValue",""); +}); +},setText:function(jq,_52d){ +return jq.each(function(){ +var opts=$(this).textbox("options"); +var _52e=$(this).textbox("textbox"); +_52d=_52d==undefined?"":String(_52d); +if($(this).textbox("getText")!=_52d){ +_52e.val(_52d); +} +opts.value=_52d; +if(!_52e.is(":focus")){ +if(_52d){ +_52e.removeClass("textbox-prompt"); +}else{ +_52e.val(opts.prompt).addClass("textbox-prompt"); +} +} +$(this).textbox("validate"); +}); +},initValue:function(jq,_52f){ +return jq.each(function(){ +var _530=$.data(this,"textbox"); +$(this).textbox("setText",_52f); +_530.textbox.find(".textbox-value").val(_52f); +$(this).val(_52f); +}); +},setValue:function(jq,_531){ +return jq.each(function(){ +var opts=$.data(this,"textbox").options; +var _532=$(this).textbox("getValue"); +$(this).textbox("initValue",_531); +if(_532!=_531){ +opts.onChange.call(this,_531,_532); +$(this).closest("form").trigger("_change",[this]); +} +}); +},getText:function(jq){ +var _533=jq.textbox("textbox"); +if(_533.is(":focus")){ +return _533.val(); +}else{ +return jq.textbox("options").value; +} +},getValue:function(jq){ +return jq.data("textbox").textbox.find(".textbox-value").val(); +},reset:function(jq){ +return jq.each(function(){ +var opts=$(this).textbox("options"); +$(this).textbox("textbox").val(opts.originalValue); +$(this).textbox("setValue",opts.originalValue); +}); +},getIcon:function(jq,_534){ +return jq.data("textbox").textbox.find(".textbox-icon:eq("+_534+")"); +},getTipX:function(jq,_535){ +var _536=jq.data("textbox"); +var opts=_536.options; +var tb=_536.textbox; +var _537=tb.find(".textbox-text"); +var _535=_535||opts.tipPosition; +var p1=tb.offset(); +var p2=_537.offset(); +var w1=tb.outerWidth(); +var w2=_537.outerWidth(); +if(_535=="right"){ +return w1-w2-p2.left+p1.left; +}else{ +if(_535=="left"){ +return p1.left-p2.left; +}else{ +return (w1-w2-p2.left+p1.left)/2-(p2.left-p1.left)/2; +} +} +},getTipY:function(jq,_538){ +var _539=jq.data("textbox"); +var opts=_539.options; +var tb=_539.textbox; +var _53a=tb.find(".textbox-text"); +var _538=_538||opts.tipPosition; +var p1=tb.offset(); +var p2=_53a.offset(); +var h1=tb.outerHeight(); +var h2=_53a.outerHeight(); +if(_538=="left"||_538=="right"){ +return (h1-h2-p2.top+p1.top)/2-(p2.top-p1.top)/2; +}else{ +if(_538=="bottom"){ +return (h1-h2-p2.top+p1.top); +}else{ +return (p1.top-p2.top); +} +} +},getSelectionStart:function(jq){ +return jq.textbox("getSelectionRange").start; +},getSelectionRange:function(jq){ +var _53b=jq.textbox("textbox")[0]; +var _53c=0; +var end=0; +if(typeof _53b.selectionStart=="number"){ +_53c=_53b.selectionStart; +end=_53b.selectionEnd; +}else{ +if(_53b.createTextRange){ +var s=document.selection.createRange(); +var _53d=_53b.createTextRange(); +_53d.setEndPoint("EndToStart",s); +_53c=_53d.text.length; +end=_53c+s.text.length; +} +} +return {start:_53c,end:end}; +},setSelectionRange:function(jq,_53e){ +return jq.each(function(){ +var _53f=$(this).textbox("textbox")[0]; +var _540=_53e.start; +var end=_53e.end; +if(_53f.setSelectionRange){ +_53f.setSelectionRange(_540,end); +}else{ +if(_53f.createTextRange){ +var _541=_53f.createTextRange(); +_541.collapse(); +_541.moveEnd("character",end); +_541.moveStart("character",_540); +_541.select(); +} +} +}); +}}; +$.fn.textbox.parseOptions=function(_542){ +var t=$(_542); +return $.extend({},$.fn.validatebox.parseOptions(_542),$.parser.parseOptions(_542,["prompt","iconCls","iconAlign","buttonText","buttonIcon","buttonAlign","label","labelPosition","labelAlign",{multiline:"boolean",iconWidth:"number",labelWidth:"number"}]),{value:(t.val()||undefined),type:(t.attr("type")?t.attr("type"):undefined)}); +}; +$.fn.textbox.defaults=$.extend({},$.fn.validatebox.defaults,{doSize:true,width:"auto",height:"auto",cls:null,prompt:"",value:"",type:"text",multiline:false,icons:[],iconCls:null,iconAlign:"right",iconWidth:18,buttonText:"",buttonIcon:null,buttonAlign:"right",label:null,labelWidth:"auto",labelPosition:"before",labelAlign:"left",inputEvents:{blur:function(e){ +var t=$(e.data.target); +var opts=t.textbox("options"); +if(t.textbox("getValue")!=opts.value){ +t.textbox("setValue",opts.value); +} +},keydown:function(e){ +if(e.keyCode==13){ +var t=$(e.data.target); +t.textbox("setValue",t.textbox("getText")); +} +}},onChange:function(_543,_544){ +},onResizing:function(_545,_546){ +},onResize:function(_547,_548){ +},onClickButton:function(){ +},onClickIcon:function(_549){ +}}); +})(jQuery); +(function($){ +function _54a(_54b){ +var _54c=$.data(_54b,"passwordbox"); +var opts=_54c.options; +var _54d=$.extend(true,[],opts.icons); +if(opts.showEye){ +_54d.push({iconCls:"passwordbox-open",handler:function(e){ +opts.revealed=!opts.revealed; +_54e(_54b); +}}); +} +$(_54b).addClass("passwordbox-f").textbox($.extend({},opts,{icons:_54d})); +_54e(_54b); +}; +function _54f(_550,_551,all){ +var t=$(_550); +var opts=t.passwordbox("options"); +if(opts.revealed){ +t.textbox("setValue",_551); +return; +} +var _552=unescape(opts.passwordChar); +var cc=_551.split(""); +var vv=t.passwordbox("getValue").split(""); +for(var i=0;i").appendTo(btn); +if(btn.linkbutton("options").disabled){ +file.attr("disabled","disabled"); +}else{ +file.removeAttr("disabled"); +} +} +}; +function _568(_569){ +var _56a=$.data(_569,"filebox"); +var opts=_56a.options; +_56a.filebox.find(".textbox-value").remove(); +opts.oldValue=""; +var file=$("").appendTo(_56a.filebox); +file.attr("id",opts.fileboxId).attr("name",$(_569).attr("textboxName")||""); +file.attr("accept",opts.accept); +file.attr("capture",opts.capture); +if(opts.multiple){ +file.attr("multiple","multiple"); +} +file.change(function(){ +var _56b=this.value; +if(this.files){ +_56b=$.map(this.files,function(file){ +return file.name; +}).join(opts.separator); +} +$(_569).filebox("setText",_56b); +opts.onChange.call(_569,_56b,opts.oldValue); +opts.oldValue=_56b; +}); +return file; +}; +$.fn.filebox=function(_56c,_56d){ +if(typeof _56c=="string"){ +var _56e=$.fn.filebox.methods[_56c]; +if(_56e){ +return _56e(this,_56d); +}else{ +return this.textbox(_56c,_56d); +} +} +_56c=_56c||{}; +return this.each(function(){ +var _56f=$.data(this,"filebox"); +if(_56f){ +$.extend(_56f.options,_56c); +}else{ +$.data(this,"filebox",{options:$.extend({},$.fn.filebox.defaults,$.fn.filebox.parseOptions(this),_56c)}); +} +_565(this); +}); +}; +$.fn.filebox.methods={options:function(jq){ +var opts=jq.textbox("options"); +return $.extend($.data(jq[0],"filebox").options,{width:opts.width,value:opts.value,originalValue:opts.originalValue,disabled:opts.disabled,readonly:opts.readonly}); +},clear:function(jq){ +return jq.each(function(){ +$(this).textbox("clear"); +_568(this); +}); +},reset:function(jq){ +return jq.each(function(){ +$(this).filebox("clear"); +}); +},setValue:function(jq){ +return jq; +},setValues:function(jq){ +return jq; +}}; +$.fn.filebox.parseOptions=function(_570){ +var t=$(_570); +return $.extend({},$.fn.textbox.parseOptions(_570),$.parser.parseOptions(_570,["accept","capture","separator"]),{multiple:(t.attr("multiple")?true:undefined)}); +}; +$.fn.filebox.defaults=$.extend({},$.fn.textbox.defaults,{buttonIcon:null,buttonText:"Choose File",buttonAlign:"right",inputEvents:{},accept:"",capture:"",separator:",",multiple:false}); +})(jQuery); +(function($){ +function _571(_572){ +var _573=$.data(_572,"searchbox"); +var opts=_573.options; +var _574=$.extend(true,[],opts.icons); +_574.push({iconCls:"searchbox-button",handler:function(e){ +var t=$(e.data.target); +var opts=t.searchbox("options"); +opts.searcher.call(e.data.target,t.searchbox("getValue"),t.searchbox("getName")); +}}); +_575(); +var _576=_577(); +$(_572).addClass("searchbox-f").textbox($.extend({},opts,{icons:_574,buttonText:(_576?_576.text:"")})); +$(_572).attr("searchboxName",$(_572).attr("textboxName")); +_573.searchbox=$(_572).next(); +_573.searchbox.addClass("searchbox"); +_578(_576); +function _575(){ +if(opts.menu){ +_573.menu=$(opts.menu).menu(); +var _579=_573.menu.menu("options"); +var _57a=_579.onClick; +_579.onClick=function(item){ +_578(item); +_57a.call(this,item); +}; +}else{ +if(_573.menu){ +_573.menu.menu("destroy"); +} +_573.menu=null; +} +}; +function _577(){ +if(_573.menu){ +var item=_573.menu.children("div.menu-item:first"); +_573.menu.children("div.menu-item").each(function(){ +var _57b=$.extend({},$.parser.parseOptions(this),{selected:($(this).attr("selected")?true:undefined)}); +if(_57b.selected){ +item=$(this); +return false; +} +}); +return _573.menu.menu("getItem",item[0]); +}else{ +return null; +} +}; +function _578(item){ +if(!item){ +return; +} +$(_572).textbox("button").menubutton({text:item.text,iconCls:(item.iconCls||null),menu:_573.menu,menuAlign:opts.buttonAlign,plain:false}); +_573.searchbox.find("input.textbox-value").attr("name",item.name||item.text); +$(_572).searchbox("resize"); +}; +}; +$.fn.searchbox=function(_57c,_57d){ +if(typeof _57c=="string"){ +var _57e=$.fn.searchbox.methods[_57c]; +if(_57e){ +return _57e(this,_57d); +}else{ +return this.textbox(_57c,_57d); +} +} +_57c=_57c||{}; +return this.each(function(){ +var _57f=$.data(this,"searchbox"); +if(_57f){ +$.extend(_57f.options,_57c); +}else{ +$.data(this,"searchbox",{options:$.extend({},$.fn.searchbox.defaults,$.fn.searchbox.parseOptions(this),_57c)}); +} +_571(this); +}); +}; +$.fn.searchbox.methods={options:function(jq){ +var opts=jq.textbox("options"); +return $.extend($.data(jq[0],"searchbox").options,{width:opts.width,value:opts.value,originalValue:opts.originalValue,disabled:opts.disabled,readonly:opts.readonly}); +},menu:function(jq){ +return $.data(jq[0],"searchbox").menu; +},getName:function(jq){ +return $.data(jq[0],"searchbox").searchbox.find("input.textbox-value").attr("name"); +},selectName:function(jq,name){ +return jq.each(function(){ +var menu=$.data(this,"searchbox").menu; +if(menu){ +menu.children("div.menu-item").each(function(){ +var item=menu.menu("getItem",this); +if(item.name==name){ +$(this).triggerHandler("click"); +return false; +} +}); +} +}); +},destroy:function(jq){ +return jq.each(function(){ +var menu=$(this).searchbox("menu"); +if(menu){ +menu.menu("destroy"); +} +$(this).textbox("destroy"); +}); +}}; +$.fn.searchbox.parseOptions=function(_580){ +var t=$(_580); +return $.extend({},$.fn.textbox.parseOptions(_580),$.parser.parseOptions(_580,["menu"]),{searcher:(t.attr("searcher")?eval(t.attr("searcher")):undefined)}); +}; +$.fn.searchbox.defaults=$.extend({},$.fn.textbox.defaults,{inputEvents:$.extend({},$.fn.textbox.defaults.inputEvents,{keydown:function(e){ +if(e.keyCode==13){ +e.preventDefault(); +var t=$(e.data.target); +var opts=t.searchbox("options"); +t.searchbox("setValue",$(this).val()); +opts.searcher.call(e.data.target,t.searchbox("getValue"),t.searchbox("getName")); +return false; +} +}}),buttonAlign:"left",menu:null,searcher:function(_581,name){ +}}); +})(jQuery); +(function($){ +function _582(_583,_584){ +var opts=$.data(_583,"form").options; +$.extend(opts,_584||{}); +var _585=$.extend({},opts.queryParams); +if(opts.onSubmit.call(_583,_585)==false){ +return; +} +var _586=$(_583).find(".textbox-text:focus"); +_586.triggerHandler("blur"); +_586.focus(); +var _587=null; +if(opts.dirty){ +var ff=[]; +$.map(opts.dirtyFields,function(f){ +if($(f).hasClass("textbox-f")){ +$(f).next().find(".textbox-value").each(function(){ +ff.push(this); +}); +}else{ +ff.push(f); +} +}); +_587=$(_583).find("input[name]:enabled,textarea[name]:enabled,select[name]:enabled").filter(function(){ +return $.inArray(this,ff)==-1; +}); +_587.attr("disabled","disabled"); +} +if(opts.ajax){ +if(opts.iframe){ +_588(_583,_585); +}else{ +if(window.FormData!==undefined){ +_589(_583,_585); +}else{ +_588(_583,_585); +} +} +}else{ +$(_583).submit(); +} +if(opts.dirty){ +_587.removeAttr("disabled"); +} +}; +function _588(_58a,_58b){ +var opts=$.data(_58a,"form").options; +var _58c="easyui_frame_"+(new Date().getTime()); +var _58d=$("").appendTo("body"); +_58d.attr("src",window.ActiveXObject?"javascript:false":"about:blank"); +_58d.css({position:"absolute",top:-1000,left:-1000}); +_58d.bind("load",cb); +_58e(_58b); +function _58e(_58f){ +var form=$(_58a); +if(opts.url){ +form.attr("action",opts.url); +} +var t=form.attr("target"),a=form.attr("action"); +form.attr("target",_58c); +var _590=$(); +try{ +for(var n in _58f){ +var _591=$("").val(_58f[n]).appendTo(form); +_590=_590.add(_591); +} +_592(); +form[0].submit(); +} +finally{ +form.attr("action",a); +t?form.attr("target",t):form.removeAttr("target"); +_590.remove(); +} +}; +function _592(){ +var f=$("#"+_58c); +if(!f.length){ +return; +} +try{ +var s=f.contents()[0].readyState; +if(s&&s.toLowerCase()=="uninitialized"){ +setTimeout(_592,100); +} +} +catch(e){ +cb(); +} +}; +var _593=10; +function cb(){ +var f=$("#"+_58c); +if(!f.length){ +return; +} +f.unbind(); +var data=""; +try{ +var body=f.contents().find("body"); +data=body.html(); +if(data==""){ +if(--_593){ +setTimeout(cb,100); +return; +} +} +var ta=body.find(">textarea"); +if(ta.length){ +data=ta.val(); +}else{ +var pre=body.find(">pre"); +if(pre.length){ +data=pre.html(); +} +} +} +catch(e){ +} +opts.success.call(_58a,data); +setTimeout(function(){ +f.unbind(); +f.remove(); +},100); +}; +}; +function _589(_594,_595){ +var opts=$.data(_594,"form").options; +var _596=new FormData($(_594)[0]); +for(var name in _595){ +_596.append(name,_595[name]); +} +$.ajax({url:opts.url,type:"post",xhr:function(){ +var xhr=$.ajaxSettings.xhr(); +if(xhr.upload){ +xhr.upload.addEventListener("progress",function(e){ +if(e.lengthComputable){ +var _597=e.total; +var _598=e.loaded||e.position; +var _599=Math.ceil(_598*100/_597); +opts.onProgress.call(_594,_599); +} +},false); +} +return xhr; +},data:_596,dataType:"html",cache:false,contentType:false,processData:false,complete:function(res){ +opts.success.call(_594,res.responseText); +}}); +}; +function load(_59a,data){ +var opts=$.data(_59a,"form").options; +if(typeof data=="string"){ +var _59b={}; +if(opts.onBeforeLoad.call(_59a,_59b)==false){ +return; +} +$.ajax({url:data,data:_59b,dataType:"json",success:function(data){ +_59c(data); +},error:function(){ +opts.onLoadError.apply(_59a,arguments); +}}); +}else{ +_59c(data); +} +function _59c(data){ +var form=$(_59a); +for(var name in data){ +var val=data[name]; +if(!_59d(name,val)){ +if(!_59e(name,val)){ +form.find("input[name=\""+name+"\"]").val(val); +form.find("textarea[name=\""+name+"\"]").val(val); +form.find("select[name=\""+name+"\"]").val(val); +} +} +} +opts.onLoadSuccess.call(_59a,data); +form.form("validate"); +}; +function _59d(name,val){ +var cc=$(_59a).find("[switchbuttonName=\""+name+"\"]"); +if(cc.length){ +cc.switchbutton("uncheck"); +cc.each(function(){ +if(_59f($(this).switchbutton("options").value,val)){ +$(this).switchbutton("check"); +} +}); +return true; +} +cc=$(_59a).find("input[name=\""+name+"\"][type=radio], input[name=\""+name+"\"][type=checkbox]"); +if(cc.length){ +cc._propAttr("checked",false); +cc.each(function(){ +if(_59f($(this).val(),val)){ +$(this)._propAttr("checked",true); +} +}); +return true; +} +return false; +}; +function _59f(v,val){ +if(v==String(val)||$.inArray(v,$.isArray(val)?val:[val])>=0){ +return true; +}else{ +return false; +} +}; +function _59e(name,val){ +var _5a0=$(_59a).find("[textboxName=\""+name+"\"],[sliderName=\""+name+"\"]"); +if(_5a0.length){ +for(var i=0;i=0;i--){ +var type=opts.fieldTypes[i]; +var _5a8=form.find("."+type+"-f"); +if(_5a8.length&&_5a8[type]){ +_5a8[type]("reset"); +} +} +form.form("validate"); +}; +function _5a9(_5aa){ +var _5ab=$.data(_5aa,"form").options; +$(_5aa).unbind(".form"); +if(_5ab.ajax){ +$(_5aa).bind("submit.form",function(){ +setTimeout(function(){ +_582(_5aa,_5ab); +},0); +return false; +}); +} +$(_5aa).bind("_change.form",function(e,t){ +if($.inArray(t,_5ab.dirtyFields)==-1){ +_5ab.dirtyFields.push(t); +} +_5ab.onChange.call(this,t); +}).bind("change.form",function(e){ +var t=e.target; +if(!$(t).hasClass("textbox-text")){ +if($.inArray(t,_5ab.dirtyFields)==-1){ +_5ab.dirtyFields.push(t); +} +_5ab.onChange.call(this,t); +} +}); +_5ac(_5aa,_5ab.novalidate); +}; +function _5ad(_5ae,_5af){ +_5af=_5af||{}; +var _5b0=$.data(_5ae,"form"); +if(_5b0){ +$.extend(_5b0.options,_5af); +}else{ +$.data(_5ae,"form",{options:$.extend({},$.fn.form.defaults,$.fn.form.parseOptions(_5ae),_5af)}); +} +}; +function _5b1(_5b2){ +if($.fn.validatebox){ +var t=$(_5b2); +t.find(".validatebox-text:not(:disabled)").validatebox("validate"); +var _5b3=t.find(".validatebox-invalid"); +_5b3.filter(":not(:disabled):first").focus(); +return _5b3.length==0; +} +return true; +}; +function _5ac(_5b4,_5b5){ +var opts=$.data(_5b4,"form").options; +opts.novalidate=_5b5; +$(_5b4).find(".validatebox-text:not(:disabled)").validatebox(_5b5?"disableValidation":"enableValidation"); +}; +$.fn.form=function(_5b6,_5b7){ +if(typeof _5b6=="string"){ +this.each(function(){ +_5ad(this); +}); +return $.fn.form.methods[_5b6](this,_5b7); +} +return this.each(function(){ +_5ad(this,_5b6); +_5a9(this); +}); +}; +$.fn.form.methods={options:function(jq){ +return $.data(jq[0],"form").options; +},submit:function(jq,_5b8){ +return jq.each(function(){ +_582(this,_5b8); +}); +},load:function(jq,data){ +return jq.each(function(){ +load(this,data); +}); +},clear:function(jq){ +return jq.each(function(){ +_5a2(this); +}); +},reset:function(jq){ +return jq.each(function(){ +_5a6(this); +}); +},validate:function(jq){ +return _5b1(jq[0]); +},disableValidation:function(jq){ +return jq.each(function(){ +_5ac(this,true); +}); +},enableValidation:function(jq){ +return jq.each(function(){ +_5ac(this,false); +}); +},resetValidation:function(jq){ +return jq.each(function(){ +$(this).find(".validatebox-text:not(:disabled)").validatebox("resetValidation"); +}); +},resetDirty:function(jq){ +return jq.each(function(){ +$(this).form("options").dirtyFields=[]; +}); +}}; +$.fn.form.parseOptions=function(_5b9){ +var t=$(_5b9); +return $.extend({},$.parser.parseOptions(_5b9,[{ajax:"boolean",dirty:"boolean"}]),{url:(t.attr("action")?t.attr("action"):undefined)}); +}; +$.fn.form.defaults={fieldTypes:["combobox","combotree","combogrid","combotreegrid","datetimebox","datebox","combo","datetimespinner","timespinner","numberspinner","spinner","slider","searchbox","numberbox","passwordbox","filebox","textbox","switchbutton"],novalidate:false,ajax:true,iframe:true,dirty:false,dirtyFields:[],url:null,queryParams:{},onSubmit:function(_5ba){ +return $(this).form("validate"); +},onProgress:function(_5bb){ +},success:function(data){ +},onBeforeLoad:function(_5bc){ +},onLoadSuccess:function(data){ +},onLoadError:function(){ +},onChange:function(_5bd){ +}}; +})(jQuery); +(function($){ +function _5be(_5bf){ +var _5c0=$.data(_5bf,"numberbox"); +var opts=_5c0.options; +$(_5bf).addClass("numberbox-f").textbox(opts); +$(_5bf).textbox("textbox").css({imeMode:"disabled"}); +$(_5bf).attr("numberboxName",$(_5bf).attr("textboxName")); +_5c0.numberbox=$(_5bf).next(); +_5c0.numberbox.addClass("numberbox"); +var _5c1=opts.parser.call(_5bf,opts.value); +var _5c2=opts.formatter.call(_5bf,_5c1); +$(_5bf).numberbox("initValue",_5c1).numberbox("setText",_5c2); +}; +function _5c3(_5c4,_5c5){ +var _5c6=$.data(_5c4,"numberbox"); +var opts=_5c6.options; +opts.value=parseFloat(_5c5); +var _5c5=opts.parser.call(_5c4,_5c5); +var text=opts.formatter.call(_5c4,_5c5); +opts.value=_5c5; +$(_5c4).textbox("setText",text).textbox("setValue",_5c5); +text=opts.formatter.call(_5c4,$(_5c4).textbox("getValue")); +$(_5c4).textbox("setText",text); +}; +$.fn.numberbox=function(_5c7,_5c8){ +if(typeof _5c7=="string"){ +var _5c9=$.fn.numberbox.methods[_5c7]; +if(_5c9){ +return _5c9(this,_5c8); +}else{ +return this.textbox(_5c7,_5c8); +} +} +_5c7=_5c7||{}; +return this.each(function(){ +var _5ca=$.data(this,"numberbox"); +if(_5ca){ +$.extend(_5ca.options,_5c7); +}else{ +_5ca=$.data(this,"numberbox",{options:$.extend({},$.fn.numberbox.defaults,$.fn.numberbox.parseOptions(this),_5c7)}); +} +_5be(this); +}); +}; +$.fn.numberbox.methods={options:function(jq){ +var opts=jq.data("textbox")?jq.textbox("options"):{}; +return $.extend($.data(jq[0],"numberbox").options,{width:opts.width,originalValue:opts.originalValue,disabled:opts.disabled,readonly:opts.readonly}); +},fix:function(jq){ +return jq.each(function(){ +var opts=$(this).numberbox("options"); +opts.value=null; +var _5cb=opts.parser.call(this,$(this).numberbox("getText")); +$(this).numberbox("setValue",_5cb); +}); +},setValue:function(jq,_5cc){ +return jq.each(function(){ +_5c3(this,_5cc); +}); +},clear:function(jq){ +return jq.each(function(){ +$(this).textbox("clear"); +$(this).numberbox("options").value=""; +}); +},reset:function(jq){ +return jq.each(function(){ +$(this).textbox("reset"); +$(this).numberbox("setValue",$(this).numberbox("getValue")); +}); +}}; +$.fn.numberbox.parseOptions=function(_5cd){ +var t=$(_5cd); +return $.extend({},$.fn.textbox.parseOptions(_5cd),$.parser.parseOptions(_5cd,["decimalSeparator","groupSeparator","suffix",{min:"number",max:"number",precision:"number"}]),{prefix:(t.attr("prefix")?t.attr("prefix"):undefined)}); +}; +$.fn.numberbox.defaults=$.extend({},$.fn.textbox.defaults,{inputEvents:{keypress:function(e){ +var _5ce=e.data.target; +var opts=$(_5ce).numberbox("options"); +return opts.filter.call(_5ce,e); +},blur:function(e){ +$(e.data.target).numberbox("fix"); +},keydown:function(e){ +if(e.keyCode==13){ +$(e.data.target).numberbox("fix"); +} +}},min:null,max:null,precision:0,decimalSeparator:".",groupSeparator:"",prefix:"",suffix:"",filter:function(e){ +var opts=$(this).numberbox("options"); +var s=$(this).numberbox("getText"); +if(e.metaKey||e.ctrlKey){ +return true; +} +if($.inArray(String(e.which),["46","8","13","0"])>=0){ +return true; +} +var tmp=$(""); +tmp.html(String.fromCharCode(e.which)); +var c=tmp.text(); +tmp.remove(); +if(!c){ +return true; +} +if(c=="-"||c==opts.decimalSeparator){ +return (s.indexOf(c)==-1)?true:false; +}else{ +if(c==opts.groupSeparator){ +return true; +}else{ +if("0123456789".indexOf(c)>=0){ +return true; +}else{ +return false; +} +} +} +},formatter:function(_5cf){ +if(!_5cf){ +return _5cf; +} +_5cf=_5cf+""; +var opts=$(this).numberbox("options"); +var s1=_5cf,s2=""; +var dpos=_5cf.indexOf("."); +if(dpos>=0){ +s1=_5cf.substring(0,dpos); +s2=_5cf.substring(dpos+1,_5cf.length); +} +if(opts.groupSeparator){ +var p=/(\d+)(\d{3})/; +while(p.test(s1)){ +s1=s1.replace(p,"$1"+opts.groupSeparator+"$2"); +} +} +if(s2){ +return opts.prefix+s1+opts.decimalSeparator+s2+opts.suffix; +}else{ +return opts.prefix+s1+opts.suffix; +} +},parser:function(s){ +s=s+""; +var opts=$(this).numberbox("options"); +if(opts.prefix){ +s=$.trim(s.replace(new RegExp("\\"+$.trim(opts.prefix),"g"),"")); +} +if(opts.suffix){ +s=$.trim(s.replace(new RegExp("\\"+$.trim(opts.suffix),"g"),"")); +} +if(parseFloat(s)!=opts.value){ +if(opts.groupSeparator){ +s=$.trim(s.replace(new RegExp("\\"+opts.groupSeparator,"g"),"")); +} +if(opts.decimalSeparator){ +s=$.trim(s.replace(new RegExp("\\"+opts.decimalSeparator,"g"),".")); +} +s=s.replace(/\s/g,""); +} +var val=parseFloat(s).toFixed(opts.precision); +if(isNaN(val)){ +val=""; +}else{ +if(typeof (opts.min)=="number"&&valopts.max){ +val=opts.max.toFixed(opts.precision); +} +} +} +return val; +}}); +})(jQuery); +(function($){ +function _5d0(_5d1,_5d2){ +var opts=$.data(_5d1,"calendar").options; +var t=$(_5d1); +if(_5d2){ +$.extend(opts,{width:_5d2.width,height:_5d2.height}); +} +t._size(opts,t.parent()); +t.find(".calendar-body")._outerHeight(t.height()-t.find(".calendar-header")._outerHeight()); +if(t.find(".calendar-menu").is(":visible")){ +_5d3(_5d1); +} +}; +function init(_5d4){ +$(_5d4).addClass("calendar").html("
        "+"
        "+"
        "+"
        "+"
        "+"
        "+""+"
        "+"
        "+"
        "+"
        "+"
        "+""+""+""+"
        "+"
        "+"
        "+"
        "+"
        "); +$(_5d4).bind("_resize",function(e,_5d5){ +if($(this).hasClass("easyui-fluid")||_5d5){ +_5d0(_5d4); +} +return false; +}); +}; +function _5d6(_5d7){ +var opts=$.data(_5d7,"calendar").options; +var menu=$(_5d7).find(".calendar-menu"); +menu.find(".calendar-menu-year").unbind(".calendar").bind("keypress.calendar",function(e){ +if(e.keyCode==13){ +_5d8(true); +} +}); +$(_5d7).unbind(".calendar").bind("mouseover.calendar",function(e){ +var t=_5d9(e.target); +if(t.hasClass("calendar-nav")||t.hasClass("calendar-text")||(t.hasClass("calendar-day")&&!t.hasClass("calendar-disabled"))){ +t.addClass("calendar-nav-hover"); +} +}).bind("mouseout.calendar",function(e){ +var t=_5d9(e.target); +if(t.hasClass("calendar-nav")||t.hasClass("calendar-text")||(t.hasClass("calendar-day")&&!t.hasClass("calendar-disabled"))){ +t.removeClass("calendar-nav-hover"); +} +}).bind("click.calendar",function(e){ +var t=_5d9(e.target); +if(t.hasClass("calendar-menu-next")||t.hasClass("calendar-nextyear")){ +_5da(1); +}else{ +if(t.hasClass("calendar-menu-prev")||t.hasClass("calendar-prevyear")){ +_5da(-1); +}else{ +if(t.hasClass("calendar-menu-month")){ +menu.find(".calendar-selected").removeClass("calendar-selected"); +t.addClass("calendar-selected"); +_5d8(true); +}else{ +if(t.hasClass("calendar-prevmonth")){ +_5db(-1); +}else{ +if(t.hasClass("calendar-nextmonth")){ +_5db(1); +}else{ +if(t.hasClass("calendar-text")){ +if(menu.is(":visible")){ +menu.hide(); +}else{ +_5d3(_5d7); +} +}else{ +if(t.hasClass("calendar-day")){ +if(t.hasClass("calendar-disabled")){ +return; +} +var _5dc=opts.current; +t.closest("div.calendar-body").find(".calendar-selected").removeClass("calendar-selected"); +t.addClass("calendar-selected"); +var _5dd=t.attr("abbr").split(","); +var y=parseInt(_5dd[0]); +var m=parseInt(_5dd[1]); +var d=parseInt(_5dd[2]); +opts.current=new Date(y,m-1,d); +opts.onSelect.call(_5d7,opts.current); +if(!_5dc||_5dc.getTime()!=opts.current.getTime()){ +opts.onChange.call(_5d7,opts.current,_5dc); +} +if(opts.year!=y||opts.month!=m){ +opts.year=y; +opts.month=m; +show(_5d7); +} +} +} +} +} +} +} +} +}); +function _5d9(t){ +var day=$(t).closest(".calendar-day"); +if(day.length){ +return day; +}else{ +return $(t); +} +}; +function _5d8(_5de){ +var menu=$(_5d7).find(".calendar-menu"); +var year=menu.find(".calendar-menu-year").val(); +var _5df=menu.find(".calendar-selected").attr("abbr"); +if(!isNaN(year)){ +opts.year=parseInt(year); +opts.month=parseInt(_5df); +show(_5d7); +} +if(_5de){ +menu.hide(); +} +}; +function _5da(_5e0){ +opts.year+=_5e0; +show(_5d7); +menu.find(".calendar-menu-year").val(opts.year); +}; +function _5db(_5e1){ +opts.month+=_5e1; +if(opts.month>12){ +opts.year++; +opts.month=1; +}else{ +if(opts.month<1){ +opts.year--; +opts.month=12; +} +} +show(_5d7); +menu.find("td.calendar-selected").removeClass("calendar-selected"); +menu.find("td:eq("+(opts.month-1)+")").addClass("calendar-selected"); +}; +}; +function _5d3(_5e2){ +var opts=$.data(_5e2,"calendar").options; +$(_5e2).find(".calendar-menu").show(); +if($(_5e2).find(".calendar-menu-month-inner").is(":empty")){ +$(_5e2).find(".calendar-menu-month-inner").empty(); +var t=$("
        ").appendTo($(_5e2).find(".calendar-menu-month-inner")); +var idx=0; +for(var i=0;i<3;i++){ +var tr=$("").appendTo(t); +for(var j=0;j<4;j++){ +$("").html(opts.months[idx++]).attr("abbr",idx).appendTo(tr); +} +} +} +var body=$(_5e2).find(".calendar-body"); +var sele=$(_5e2).find(".calendar-menu"); +var _5e3=sele.find(".calendar-menu-year-inner"); +var _5e4=sele.find(".calendar-menu-month-inner"); +_5e3.find("input").val(opts.year).focus(); +_5e4.find("td.calendar-selected").removeClass("calendar-selected"); +_5e4.find("td:eq("+(opts.month-1)+")").addClass("calendar-selected"); +sele._outerWidth(body._outerWidth()); +sele._outerHeight(body._outerHeight()); +_5e4._outerHeight(sele.height()-_5e3._outerHeight()); +}; +function _5e5(_5e6,year,_5e7){ +var opts=$.data(_5e6,"calendar").options; +var _5e8=[]; +var _5e9=new Date(year,_5e7,0).getDate(); +for(var i=1;i<=_5e9;i++){ +_5e8.push([year,_5e7,i]); +} +var _5ea=[],week=[]; +var _5eb=-1; +while(_5e8.length>0){ +var date=_5e8.shift(); +week.push(date); +var day=new Date(date[0],date[1]-1,date[2]).getDay(); +if(_5eb==day){ +day=0; +}else{ +if(day==(opts.firstDay==0?7:opts.firstDay)-1){ +_5ea.push(week); +week=[]; +} +} +_5eb=day; +} +if(week.length){ +_5ea.push(week); +} +var _5ec=_5ea[0]; +if(_5ec.length<7){ +while(_5ec.length<7){ +var _5ed=_5ec[0]; +var date=new Date(_5ed[0],_5ed[1]-1,_5ed[2]-1); +_5ec.unshift([date.getFullYear(),date.getMonth()+1,date.getDate()]); +} +}else{ +var _5ed=_5ec[0]; +var week=[]; +for(var i=1;i<=7;i++){ +var date=new Date(_5ed[0],_5ed[1]-1,_5ed[2]-i); +week.unshift([date.getFullYear(),date.getMonth()+1,date.getDate()]); +} +_5ea.unshift(week); +} +var _5ee=_5ea[_5ea.length-1]; +while(_5ee.length<7){ +var _5ef=_5ee[_5ee.length-1]; +var date=new Date(_5ef[0],_5ef[1]-1,_5ef[2]+1); +_5ee.push([date.getFullYear(),date.getMonth()+1,date.getDate()]); +} +if(_5ea.length<6){ +var _5ef=_5ee[_5ee.length-1]; +var week=[]; +for(var i=1;i<=7;i++){ +var date=new Date(_5ef[0],_5ef[1]-1,_5ef[2]+i); +week.push([date.getFullYear(),date.getMonth()+1,date.getDate()]); +} +_5ea.push(week); +} +return _5ea; +}; +function show(_5f0){ +var opts=$.data(_5f0,"calendar").options; +if(opts.current&&!opts.validator.call(_5f0,opts.current)){ +opts.current=null; +} +var now=new Date(); +var _5f1=now.getFullYear()+","+(now.getMonth()+1)+","+now.getDate(); +var _5f2=opts.current?(opts.current.getFullYear()+","+(opts.current.getMonth()+1)+","+opts.current.getDate()):""; +var _5f3=6-opts.firstDay; +var _5f4=_5f3+1; +if(_5f3>=7){ +_5f3-=7; +} +if(_5f4>=7){ +_5f4-=7; +} +$(_5f0).find(".calendar-title span").html(opts.months[opts.month-1]+" "+opts.year); +var body=$(_5f0).find("div.calendar-body"); +body.children("table").remove(); +var data=[""]; +data.push(""); +if(opts.showWeek){ +data.push(""); +} +for(var i=opts.firstDay;i"+opts.weeks[i]+""); +} +for(var i=0;i"+opts.weeks[i]+""); +} +data.push(""); +data.push(""); +var _5f5=_5e5(_5f0,opts.year,opts.month); +for(var i=0;i<_5f5.length;i++){ +var week=_5f5[i]; +var cls=""; +if(i==0){ +cls="calendar-first"; +}else{ +if(i==_5f5.length-1){ +cls="calendar-last"; +} +} +data.push(""); +if(opts.showWeek){ +var _5f6=opts.getWeekNumber(new Date(week[0][0],parseInt(week[0][1])-1,week[0][2])); +data.push(""); +} +for(var j=0;j"+d+""); +} +data.push(""); +} +data.push(""); +data.push("
        "+opts.weekNumberHeader+"
        "+_5f6+"
        "); +body.append(data.join("")); +body.children("table.calendar-dtable").prependTo(body); +opts.onNavigate.call(_5f0,opts.year,opts.month); +}; +$.fn.calendar=function(_5fa,_5fb){ +if(typeof _5fa=="string"){ +return $.fn.calendar.methods[_5fa](this,_5fb); +} +_5fa=_5fa||{}; +return this.each(function(){ +var _5fc=$.data(this,"calendar"); +if(_5fc){ +$.extend(_5fc.options,_5fa); +}else{ +_5fc=$.data(this,"calendar",{options:$.extend({},$.fn.calendar.defaults,$.fn.calendar.parseOptions(this),_5fa)}); +init(this); +} +if(_5fc.options.border==false){ +$(this).addClass("calendar-noborder"); +} +_5d0(this); +_5d6(this); +show(this); +$(this).find("div.calendar-menu").hide(); +}); +}; +$.fn.calendar.methods={options:function(jq){ +return $.data(jq[0],"calendar").options; +},resize:function(jq,_5fd){ +return jq.each(function(){ +_5d0(this,_5fd); +}); +},moveTo:function(jq,date){ +return jq.each(function(){ +if(!date){ +var now=new Date(); +$(this).calendar({year:now.getFullYear(),month:now.getMonth()+1,current:date}); +return; +} +var opts=$(this).calendar("options"); +if(opts.validator.call(this,date)){ +var _5fe=opts.current; +$(this).calendar({year:date.getFullYear(),month:date.getMonth()+1,current:date}); +if(!_5fe||_5fe.getTime()!=date.getTime()){ +opts.onChange.call(this,opts.current,_5fe); +} +} +}); +}}; +$.fn.calendar.parseOptions=function(_5ff){ +var t=$(_5ff); +return $.extend({},$.parser.parseOptions(_5ff,["weekNumberHeader",{firstDay:"number",fit:"boolean",border:"boolean",showWeek:"boolean"}])); +}; +$.fn.calendar.defaults={width:180,height:180,fit:false,border:true,showWeek:false,firstDay:0,weeks:["S","M","T","W","T","F","S"],months:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],year:new Date().getFullYear(),month:new Date().getMonth()+1,current:(function(){ +var d=new Date(); +return new Date(d.getFullYear(),d.getMonth(),d.getDate()); +})(),weekNumberHeader:"",getWeekNumber:function(date){ +var _600=new Date(date.getTime()); +_600.setDate(_600.getDate()+4-(_600.getDay()||7)); +var time=_600.getTime(); +_600.setMonth(0); +_600.setDate(1); +return Math.floor(Math.round((time-_600)/86400000)/7)+1; +},formatter:function(date){ +return date.getDate(); +},styler:function(date){ +return ""; +},validator:function(date){ +return true; +},onSelect:function(date){ +},onChange:function(_601,_602){ +},onNavigate:function(year,_603){ +}}; +})(jQuery); +(function($){ +function _604(_605){ +var _606=$.data(_605,"spinner"); +var opts=_606.options; +var _607=$.extend(true,[],opts.icons); +if(opts.spinAlign=="left"||opts.spinAlign=="right"){ +opts.spinArrow=true; +opts.iconAlign=opts.spinAlign; +var _608={iconCls:"spinner-arrow",handler:function(e){ +var spin=$(e.target).closest(".spinner-arrow-up,.spinner-arrow-down"); +_612(e.data.target,spin.hasClass("spinner-arrow-down")); +}}; +if(opts.spinAlign=="left"){ +_607.unshift(_608); +}else{ +_607.push(_608); +} +}else{ +opts.spinArrow=false; +if(opts.spinAlign=="vertical"){ +if(opts.buttonAlign!="top"){ +opts.buttonAlign="bottom"; +} +opts.clsLeft="textbox-button-bottom"; +opts.clsRight="textbox-button-top"; +}else{ +opts.clsLeft="textbox-button-left"; +opts.clsRight="textbox-button-right"; +} +} +$(_605).addClass("spinner-f").textbox($.extend({},opts,{icons:_607,doSize:false,onResize:function(_609,_60a){ +if(!opts.spinArrow){ +var span=$(this).next(); +var btn=span.find(".textbox-button:not(.spinner-button)"); +if(btn.length){ +var _60b=btn.outerWidth(); +var _60c=btn.outerHeight(); +var _60d=span.find(".spinner-button."+opts.clsLeft); +var _60e=span.find(".spinner-button."+opts.clsRight); +if(opts.buttonAlign=="right"){ +_60e.css("marginRight",_60b+"px"); +}else{ +if(opts.buttonAlign=="left"){ +_60d.css("marginLeft",_60b+"px"); +}else{ +if(opts.buttonAlign=="top"){ +_60e.css("marginTop",_60c+"px"); +}else{ +_60d.css("marginBottom",_60c+"px"); +} +} +} +} +} +opts.onResize.call(this,_609,_60a); +}})); +$(_605).attr("spinnerName",$(_605).attr("textboxName")); +_606.spinner=$(_605).next(); +_606.spinner.addClass("spinner"); +if(opts.spinArrow){ +var _60f=_606.spinner.find(".spinner-arrow"); +_60f.append(""); +_60f.append(""); +}else{ +var _610=$("").addClass(opts.clsLeft).appendTo(_606.spinner); +var _611=$("").addClass(opts.clsRight).appendTo(_606.spinner); +_610.linkbutton({iconCls:opts.reversed?"spinner-button-up":"spinner-button-down",onClick:function(){ +_612(_605,!opts.reversed); +}}); +_611.linkbutton({iconCls:opts.reversed?"spinner-button-down":"spinner-button-up",onClick:function(){ +_612(_605,opts.reversed); +}}); +if(opts.disabled){ +$(_605).spinner("disable"); +} +if(opts.readonly){ +$(_605).spinner("readonly"); +} +} +$(_605).spinner("resize"); +}; +function _612(_613,down){ +var opts=$(_613).spinner("options"); +opts.spin.call(_613,down); +opts[down?"onSpinDown":"onSpinUp"].call(_613); +$(_613).spinner("validate"); +}; +$.fn.spinner=function(_614,_615){ +if(typeof _614=="string"){ +var _616=$.fn.spinner.methods[_614]; +if(_616){ +return _616(this,_615); +}else{ +return this.textbox(_614,_615); +} +} +_614=_614||{}; +return this.each(function(){ +var _617=$.data(this,"spinner"); +if(_617){ +$.extend(_617.options,_614); +}else{ +_617=$.data(this,"spinner",{options:$.extend({},$.fn.spinner.defaults,$.fn.spinner.parseOptions(this),_614)}); +} +_604(this); +}); +}; +$.fn.spinner.methods={options:function(jq){ +var opts=jq.textbox("options"); +return $.extend($.data(jq[0],"spinner").options,{width:opts.width,value:opts.value,originalValue:opts.originalValue,disabled:opts.disabled,readonly:opts.readonly}); +}}; +$.fn.spinner.parseOptions=function(_618){ +return $.extend({},$.fn.textbox.parseOptions(_618),$.parser.parseOptions(_618,["min","max","spinAlign",{increment:"number",reversed:"boolean"}])); +}; +$.fn.spinner.defaults=$.extend({},$.fn.textbox.defaults,{min:null,max:null,increment:1,spinAlign:"right",reversed:false,spin:function(down){ +},onSpinUp:function(){ +},onSpinDown:function(){ +}}); +})(jQuery); +(function($){ +function _619(_61a){ +$(_61a).addClass("numberspinner-f"); +var opts=$.data(_61a,"numberspinner").options; +$(_61a).numberbox($.extend({},opts,{doSize:false})).spinner(opts); +$(_61a).numberbox("setValue",opts.value); +}; +function _61b(_61c,down){ +var opts=$.data(_61c,"numberspinner").options; +var v=parseFloat($(_61c).numberbox("getValue")||opts.value)||0; +if(down){ +v-=opts.increment; +}else{ +v+=opts.increment; +} +$(_61c).numberbox("setValue",v); +}; +$.fn.numberspinner=function(_61d,_61e){ +if(typeof _61d=="string"){ +var _61f=$.fn.numberspinner.methods[_61d]; +if(_61f){ +return _61f(this,_61e); +}else{ +return this.numberbox(_61d,_61e); +} +} +_61d=_61d||{}; +return this.each(function(){ +var _620=$.data(this,"numberspinner"); +if(_620){ +$.extend(_620.options,_61d); +}else{ +$.data(this,"numberspinner",{options:$.extend({},$.fn.numberspinner.defaults,$.fn.numberspinner.parseOptions(this),_61d)}); +} +_619(this); +}); +}; +$.fn.numberspinner.methods={options:function(jq){ +var opts=jq.numberbox("options"); +return $.extend($.data(jq[0],"numberspinner").options,{width:opts.width,value:opts.value,originalValue:opts.originalValue,disabled:opts.disabled,readonly:opts.readonly}); +}}; +$.fn.numberspinner.parseOptions=function(_621){ +return $.extend({},$.fn.spinner.parseOptions(_621),$.fn.numberbox.parseOptions(_621),{}); +}; +$.fn.numberspinner.defaults=$.extend({},$.fn.spinner.defaults,$.fn.numberbox.defaults,{spin:function(down){ +_61b(this,down); +}}); +})(jQuery); +(function($){ +function _622(_623){ +var opts=$.data(_623,"timespinner").options; +$(_623).addClass("timespinner-f").spinner(opts); +var _624=opts.formatter.call(_623,opts.parser.call(_623,opts.value)); +$(_623).timespinner("initValue",_624); +}; +function _625(e){ +var _626=e.data.target; +var opts=$.data(_626,"timespinner").options; +var _627=$(_626).timespinner("getSelectionStart"); +for(var i=0;i=_628[0]&&_627<=_628[1]){ +_629(_626,i); +return; +} +} +}; +function _629(_62a,_62b){ +var opts=$.data(_62a,"timespinner").options; +if(_62b!=undefined){ +opts.highlight=_62b; +} +var _62c=opts.selections[opts.highlight]; +if(_62c){ +var tb=$(_62a).timespinner("textbox"); +$(_62a).timespinner("setSelectionRange",{start:_62c[0],end:_62c[1]}); +tb.focus(); +} +}; +function _62d(_62e,_62f){ +var opts=$.data(_62e,"timespinner").options; +var _62f=opts.parser.call(_62e,_62f); +var text=opts.formatter.call(_62e,_62f); +$(_62e).spinner("setValue",text); +}; +function _630(_631,down){ +var opts=$.data(_631,"timespinner").options; +var s=$(_631).timespinner("getValue"); +var _632=opts.selections[opts.highlight]; +var s1=s.substring(0,_632[0]); +var s2=s.substring(_632[0],_632[1]); +var s3=s.substring(_632[1]); +var v=s1+((parseInt(s2,10)||0)+opts.increment*(down?-1:1))+s3; +$(_631).timespinner("setValue",v); +_629(_631); +}; +$.fn.timespinner=function(_633,_634){ +if(typeof _633=="string"){ +var _635=$.fn.timespinner.methods[_633]; +if(_635){ +return _635(this,_634); +}else{ +return this.spinner(_633,_634); +} +} +_633=_633||{}; +return this.each(function(){ +var _636=$.data(this,"timespinner"); +if(_636){ +$.extend(_636.options,_633); +}else{ +$.data(this,"timespinner",{options:$.extend({},$.fn.timespinner.defaults,$.fn.timespinner.parseOptions(this),_633)}); +} +_622(this); +}); +}; +$.fn.timespinner.methods={options:function(jq){ +var opts=jq.data("spinner")?jq.spinner("options"):{}; +return $.extend($.data(jq[0],"timespinner").options,{width:opts.width,value:opts.value,originalValue:opts.originalValue,disabled:opts.disabled,readonly:opts.readonly}); +},setValue:function(jq,_637){ +return jq.each(function(){ +_62d(this,_637); +}); +},getHours:function(jq){ +var opts=$.data(jq[0],"timespinner").options; +var vv=jq.timespinner("getValue").split(opts.separator); +return parseInt(vv[0],10); +},getMinutes:function(jq){ +var opts=$.data(jq[0],"timespinner").options; +var vv=jq.timespinner("getValue").split(opts.separator); +return parseInt(vv[1],10); +},getSeconds:function(jq){ +var opts=$.data(jq[0],"timespinner").options; +var vv=jq.timespinner("getValue").split(opts.separator); +return parseInt(vv[2],10)||0; +}}; +$.fn.timespinner.parseOptions=function(_638){ +return $.extend({},$.fn.spinner.parseOptions(_638),$.parser.parseOptions(_638,["separator",{showSeconds:"boolean",highlight:"number"}])); +}; +$.fn.timespinner.defaults=$.extend({},$.fn.spinner.defaults,{inputEvents:$.extend({},$.fn.spinner.defaults.inputEvents,{click:function(e){ +_625.call(this,e); +},blur:function(e){ +var t=$(e.data.target); +t.timespinner("setValue",t.timespinner("getText")); +},keydown:function(e){ +if(e.keyCode==13){ +var t=$(e.data.target); +t.timespinner("setValue",t.timespinner("getText")); +} +}}),formatter:function(date){ +if(!date){ +return ""; +} +var opts=$(this).timespinner("options"); +var tt=[_639(date.getHours()),_639(date.getMinutes())]; +if(opts.showSeconds){ +tt.push(_639(date.getSeconds())); +} +return tt.join(opts.separator); +function _639(_63a){ +return (_63a<10?"0":"")+_63a; +}; +},parser:function(s){ +var opts=$(this).timespinner("options"); +var date=_63b(s); +if(date){ +var min=_63b(opts.min); +var max=_63b(opts.max); +if(min&&min>date){ +date=min; +} +if(max&&max"]; +for(var i=0;i<_650.length;i++){ +_64f.cache[_650[i][0]]={width:_650[i][1]}; +} +var _651=0; +for(var s in _64f.cache){ +var item=_64f.cache[s]; +item.index=_651++; +ss.push(s+"{width:"+item.width+"}"); +} +ss.push(""); +$(ss.join("\n")).appendTo(cc); +cc.children("style[easyui]:not(:last)").remove(); +},getRule:function(_652){ +var _653=cc.children("style[easyui]:last")[0]; +var _654=_653.styleSheet?_653.styleSheet:(_653.sheet||document.styleSheets[document.styleSheets.length-1]); +var _655=_654.cssRules||_654.rules; +return _655[_652]; +},set:function(_656,_657){ +var item=_64f.cache[_656]; +if(item){ +item.width=_657; +var rule=this.getRule(item.index); +if(rule){ +rule.style["width"]=_657; +} +} +},remove:function(_658){ +var tmp=[]; +for(var s in _64f.cache){ +if(s.indexOf(_658)==-1){ +tmp.push([s,_64f.cache[s].width]); +} +} +_64f.cache={}; +this.add(tmp); +},dirty:function(_659){ +if(_659){ +_64f.dirty.push(_659); +} +},clean:function(){ +for(var i=0;i<_64f.dirty.length;i++){ +this.remove(_64f.dirty[i]); +} +_64f.dirty=[]; +}}; +}; +function _65a(_65b,_65c){ +var _65d=$.data(_65b,"datagrid"); +var opts=_65d.options; +var _65e=_65d.panel; +if(_65c){ +$.extend(opts,_65c); +} +if(opts.fit==true){ +var p=_65e.panel("panel").parent(); +opts.width=p.width(); +opts.height=p.height(); +} +_65e.panel("resize",opts); +}; +function _65f(_660){ +var _661=$.data(_660,"datagrid"); +var opts=_661.options; +var dc=_661.dc; +var wrap=_661.panel; +var _662=wrap.width(); +var _663=wrap.height(); +var view=dc.view; +var _664=dc.view1; +var _665=dc.view2; +var _666=_664.children("div.datagrid-header"); +var _667=_665.children("div.datagrid-header"); +var _668=_666.find("table"); +var _669=_667.find("table"); +view.width(_662); +var _66a=_666.children("div.datagrid-header-inner").show(); +_664.width(_66a.find("table").width()); +if(!opts.showHeader){ +_66a.hide(); +} +_665.width(_662-_664._outerWidth()); +_664.children()._outerWidth(_664.width()); +_665.children()._outerWidth(_665.width()); +var all=_666.add(_667).add(_668).add(_669); +all.css("height",""); +var hh=Math.max(_668.height(),_669.height()); +all._outerHeight(hh); +view.children(".datagrid-empty").css("top",hh+"px"); +dc.body1.add(dc.body2).children("table.datagrid-btable-frozen").css({position:"absolute",top:dc.header2._outerHeight()}); +var _66b=dc.body2.children("table.datagrid-btable-frozen")._outerHeight(); +var _66c=_66b+_667._outerHeight()+_665.children(".datagrid-footer")._outerHeight(); +wrap.children(":not(.datagrid-view,.datagrid-mask,.datagrid-mask-msg)").each(function(){ +_66c+=$(this)._outerHeight(); +}); +var _66d=wrap.outerHeight()-wrap.height(); +var _66e=wrap._size("minHeight")||""; +var _66f=wrap._size("maxHeight")||""; +_664.add(_665).children("div.datagrid-body").css({marginTop:_66b,height:(isNaN(parseInt(opts.height))?"":(_663-_66c)),minHeight:(_66e?_66e-_66d-_66c:""),maxHeight:(_66f?_66f-_66d-_66c:"")}); +view.height(_665.height()); +}; +function _670(_671,_672,_673){ +var rows=$.data(_671,"datagrid").data.rows; +var opts=$.data(_671,"datagrid").options; +var dc=$.data(_671,"datagrid").dc; +if(!dc.body1.is(":empty")&&(!opts.nowrap||opts.autoRowHeight||_673)){ +if(_672!=undefined){ +var tr1=opts.finder.getTr(_671,_672,"body",1); +var tr2=opts.finder.getTr(_671,_672,"body",2); +_674(tr1,tr2); +}else{ +var tr1=opts.finder.getTr(_671,0,"allbody",1); +var tr2=opts.finder.getTr(_671,0,"allbody",2); +_674(tr1,tr2); +if(opts.showFooter){ +var tr1=opts.finder.getTr(_671,0,"allfooter",1); +var tr2=opts.finder.getTr(_671,0,"allfooter",2); +_674(tr1,tr2); +} +} +} +_65f(_671); +if(opts.height=="auto"){ +var _675=dc.body1.parent(); +var _676=dc.body2; +var _677=_678(_676); +var _679=_677.height; +if(_677.width>_676.width()){ +_679+=18; +} +_679-=parseInt(_676.css("marginTop"))||0; +_675.height(_679); +_676.height(_679); +dc.view.height(dc.view2.height()); +} +dc.body2.triggerHandler("scroll"); +function _674(trs1,trs2){ +for(var i=0;i"); +} +_681(true); +_681(false); +_65f(_67e); +function _681(_682){ +var _683=_682?1:2; +var tr=opts.finder.getTr(_67e,_67f,"body",_683); +(_682?dc.body1:dc.body2).children("table.datagrid-btable-frozen").append(tr); +}; +}; +function _684(_685,_686){ +function _687(){ +var _688=[]; +var _689=[]; +$(_685).children("thead").each(function(){ +var opt=$.parser.parseOptions(this,[{frozen:"boolean"}]); +$(this).find("tr").each(function(){ +var cols=[]; +$(this).find("th").each(function(){ +var th=$(this); +var col=$.extend({},$.parser.parseOptions(this,["id","field","align","halign","order","width",{sortable:"boolean",checkbox:"boolean",resizable:"boolean",fixed:"boolean"},{rowspan:"number",colspan:"number"}]),{title:(th.html()||undefined),hidden:(th.attr("hidden")?true:undefined),formatter:(th.attr("formatter")?eval(th.attr("formatter")):undefined),styler:(th.attr("styler")?eval(th.attr("styler")):undefined),sorter:(th.attr("sorter")?eval(th.attr("sorter")):undefined)}); +if(col.width&&String(col.width).indexOf("%")==-1){ +col.width=parseInt(col.width); +} +if(th.attr("editor")){ +var s=$.trim(th.attr("editor")); +if(s.substr(0,1)=="{"){ +col.editor=eval("("+s+")"); +}else{ +col.editor=s; +} +} +cols.push(col); +}); +opt.frozen?_688.push(cols):_689.push(cols); +}); +}); +return [_688,_689]; +}; +var _68a=$("
        "+"
        "+"
        "+"
        "+"
        "+"
        "+"
        "+"
        "+"
        "+"
        "+""+"
        "+"
        "+"
        "+"
        "+"
        "+"
        "+"
        "+"
        "+""+"
        "+"
        "+"
        "+"
        ").insertAfter(_685); +_68a.panel({doSize:false,cls:"datagrid"}); +$(_685).addClass("datagrid-f").hide().appendTo(_68a.children("div.datagrid-view")); +var cc=_687(); +var view=_68a.children("div.datagrid-view"); +var _68b=view.children("div.datagrid-view1"); +var _68c=view.children("div.datagrid-view2"); +return {panel:_68a,frozenColumns:cc[0],columns:cc[1],dc:{view:view,view1:_68b,view2:_68c,header1:_68b.children("div.datagrid-header").children("div.datagrid-header-inner"),header2:_68c.children("div.datagrid-header").children("div.datagrid-header-inner"),body1:_68b.children("div.datagrid-body").children("div.datagrid-body-inner"),body2:_68c.children("div.datagrid-body"),footer1:_68b.children("div.datagrid-footer").children("div.datagrid-footer-inner"),footer2:_68c.children("div.datagrid-footer").children("div.datagrid-footer-inner")}}; +}; +function _68d(_68e){ +var _68f=$.data(_68e,"datagrid"); +var opts=_68f.options; +var dc=_68f.dc; +var _690=_68f.panel; +_68f.ss=$(_68e).datagrid("createStyleSheet"); +_690.panel($.extend({},opts,{id:null,doSize:false,onResize:function(_691,_692){ +if($.data(_68e,"datagrid")){ +_65f(_68e); +$(_68e).datagrid("fitColumns"); +opts.onResize.call(_690,_691,_692); +} +},onExpand:function(){ +if($.data(_68e,"datagrid")){ +$(_68e).datagrid("fixRowHeight").datagrid("fitColumns"); +opts.onExpand.call(_690); +} +}})); +_68f.rowIdPrefix="datagrid-row-r"+(++_645); +_68f.cellClassPrefix="datagrid-cell-c"+_645; +_693(dc.header1,opts.frozenColumns,true); +_693(dc.header2,opts.columns,false); +_694(); +dc.header1.add(dc.header2).css("display",opts.showHeader?"block":"none"); +dc.footer1.add(dc.footer2).css("display",opts.showFooter?"block":"none"); +if(opts.toolbar){ +if($.isArray(opts.toolbar)){ +$("div.datagrid-toolbar",_690).remove(); +var tb=$("
        ").prependTo(_690); +var tr=tb.find("tr"); +for(var i=0;i
        ").appendTo(tr); +}else{ +var td=$("").appendTo(tr); +var tool=$("").appendTo(td); +tool[0].onclick=eval(btn.handler||function(){ +}); +tool.linkbutton($.extend({},btn,{plain:true})); +} +} +}else{ +$(opts.toolbar).addClass("datagrid-toolbar").prependTo(_690); +$(opts.toolbar).show(); +} +}else{ +$("div.datagrid-toolbar",_690).remove(); +} +$("div.datagrid-pager",_690).remove(); +if(opts.pagination){ +var _695=$("
        "); +if(opts.pagePosition=="bottom"){ +_695.appendTo(_690); +}else{ +if(opts.pagePosition=="top"){ +_695.addClass("datagrid-pager-top").prependTo(_690); +}else{ +var ptop=$("
        ").prependTo(_690); +_695.appendTo(_690); +_695=_695.add(ptop); +} +} +_695.pagination({total:0,pageNumber:opts.pageNumber,pageSize:opts.pageSize,pageList:opts.pageList,onSelectPage:function(_696,_697){ +opts.pageNumber=_696||1; +opts.pageSize=_697; +_695.pagination("refresh",{pageNumber:_696,pageSize:_697}); +_6df(_68e); +}}); +opts.pageSize=_695.pagination("options").pageSize; +} +function _693(_698,_699,_69a){ +if(!_699){ +return; +} +$(_698).show(); +$(_698).empty(); +var tmp=$("
        ").appendTo("body"); +tmp._outerWidth(99); +var _69b=100-parseInt(tmp[0].style.width); +tmp.remove(); +var _69c=[]; +var _69d=[]; +var _69e=[]; +if(opts.sortName){ +_69c=opts.sortName.split(","); +_69d=opts.sortOrder.split(","); +} +var t=$("
        ").appendTo(_698); +for(var i=0;i<_699.length;i++){ +var tr=$("").appendTo($("tbody",t)); +var cols=_699[i]; +for(var j=0;j").appendTo(tr); +if(col.checkbox){ +td.attr("field",col.field); +$("
        ").html("").appendTo(td); +}else{ +if(col.field){ +td.attr("field",col.field); +td.append("
        "); +td.find("span:first").html(col.title); +var cell=td.find("div.datagrid-cell"); +var pos=_646(_69c,col.field); +if(pos>=0){ +cell.addClass("datagrid-sort-"+_69d[pos]); +} +if(col.sortable){ +cell.addClass("datagrid-sort"); +} +if(col.resizable==false){ +cell.attr("resizable","false"); +} +if(col.width){ +var _69f=$.parser.parseValue("width",col.width,dc.view,opts.scrollbarSize+(opts.rownumbers?opts.rownumberWidth:0)); +col.deltaWidth=_69b; +col.boxWidth=_69f-_69b; +}else{ +col.auto=true; +} +cell.css("text-align",(col.halign||col.align||"")); +col.cellClass=_68f.cellClassPrefix+"-"+col.field.replace(/[\.|\s]/g,"-"); +cell.addClass(col.cellClass); +}else{ +$("
        ").html(col.title).appendTo(td); +} +} +if(col.hidden){ +td.hide(); +_69e.push(col.field); +} +} +} +if(_69a&&opts.rownumbers){ +var td=$("
        "); +if($("tr",t).length==0){ +td.wrap("").parent().appendTo($("tbody",t)); +}else{ +td.prependTo($("tr:first",t)); +} +} +for(var i=0;i<_69e.length;i++){ +_6e1(_68e,_69e[i],-1); +} +}; +function _694(){ +var _6a0=[[".datagrid-header-rownumber",(opts.rownumberWidth-1)+"px"],[".datagrid-cell-rownumber",(opts.rownumberWidth-1)+"px"]]; +var _6a1=_6a2(_68e,true).concat(_6a2(_68e)); +for(var i=0;i<_6a1.length;i++){ +var col=_6a3(_68e,_6a1[i]); +if(col&&!col.checkbox){ +_6a0.push(["."+col.cellClass,col.boxWidth?col.boxWidth+"px":"auto"]); +} +} +_68f.ss.add(_6a0); +_68f.ss.dirty(_68f.cellSelectorPrefix); +_68f.cellSelectorPrefix="."+_68f.cellClassPrefix; +}; +}; +function _6a4(_6a5){ +var _6a6=$.data(_6a5,"datagrid"); +var _6a7=_6a6.panel; +var opts=_6a6.options; +var dc=_6a6.dc; +var _6a8=dc.header1.add(dc.header2); +_6a8.unbind(".datagrid"); +for(var _6a9 in opts.headerEvents){ +_6a8.bind(_6a9+".datagrid",opts.headerEvents[_6a9]); +} +var _6aa=_6a8.find("div.datagrid-cell"); +var _6ab=opts.resizeHandle=="right"?"e":(opts.resizeHandle=="left"?"w":"e,w"); +_6aa.each(function(){ +$(this).resizable({handles:_6ab,disabled:($(this).attr("resizable")?$(this).attr("resizable")=="false":false),minWidth:25,onStartResize:function(e){ +_6a6.resizing=true; +_6a8.css("cursor",$("body").css("cursor")); +if(!_6a6.proxy){ +_6a6.proxy=$("
        ").appendTo(dc.view); +} +_6a6.proxy.css({left:e.pageX-$(_6a7).offset().left-1,display:"none"}); +setTimeout(function(){ +if(_6a6.proxy){ +_6a6.proxy.show(); +} +},500); +},onResize:function(e){ +_6a6.proxy.css({left:e.pageX-$(_6a7).offset().left-1,display:"block"}); +return false; +},onStopResize:function(e){ +_6a8.css("cursor",""); +$(this).css("height",""); +var _6ac=$(this).parent().attr("field"); +var col=_6a3(_6a5,_6ac); +col.width=$(this)._outerWidth(); +col.boxWidth=col.width-col.deltaWidth; +col.auto=undefined; +$(this).css("width",""); +$(_6a5).datagrid("fixColumnSize",_6ac); +_6a6.proxy.remove(); +_6a6.proxy=null; +if($(this).parents("div:first.datagrid-header").parent().hasClass("datagrid-view1")){ +_65f(_6a5); +} +$(_6a5).datagrid("fitColumns"); +opts.onResizeColumn.call(_6a5,_6ac,col.width); +setTimeout(function(){ +_6a6.resizing=false; +},0); +}}); +}); +var bb=dc.body1.add(dc.body2); +bb.unbind(); +for(var _6a9 in opts.rowEvents){ +bb.bind(_6a9,opts.rowEvents[_6a9]); +} +dc.body1.bind("mousewheel DOMMouseScroll",function(e){ +e.preventDefault(); +var e1=e.originalEvent||window.event; +var _6ad=e1.wheelDelta||e1.detail*(-1); +if("deltaY" in e1){ +_6ad=e1.deltaY*-1; +} +var dg=$(e.target).closest("div.datagrid-view").children(".datagrid-f"); +var dc=dg.data("datagrid").dc; +dc.body2.scrollTop(dc.body2.scrollTop()-_6ad); +}); +dc.body2.bind("scroll",function(){ +var b1=dc.view1.children("div.datagrid-body"); +b1.scrollTop($(this).scrollTop()); +var c1=dc.body1.children(":first"); +var c2=dc.body2.children(":first"); +if(c1.length&&c2.length){ +var top1=c1.offset().top; +var top2=c2.offset().top; +if(top1!=top2){ +b1.scrollTop(b1.scrollTop()+top1-top2); +} +} +dc.view2.children("div.datagrid-header,div.datagrid-footer")._scrollLeft($(this)._scrollLeft()); +dc.body2.children("table.datagrid-btable-frozen").css("left",-$(this)._scrollLeft()); +}); +}; +function _6ae(_6af){ +return function(e){ +var td=$(e.target).closest("td[field]"); +if(td.length){ +var _6b0=_6b1(td); +if(!$(_6b0).data("datagrid").resizing&&_6af){ +td.addClass("datagrid-header-over"); +}else{ +td.removeClass("datagrid-header-over"); +} +} +}; +}; +function _6b2(e){ +var _6b3=_6b1(e.target); +var opts=$(_6b3).datagrid("options"); +var ck=$(e.target).closest("input[type=checkbox]"); +if(ck.length){ +if(opts.singleSelect&&opts.selectOnCheck){ +return false; +} +if(ck.is(":checked")){ +_6b4(_6b3); +}else{ +_6b5(_6b3); +} +e.stopPropagation(); +}else{ +var cell=$(e.target).closest(".datagrid-cell"); +if(cell.length){ +var p1=cell.offset().left+5; +var p2=cell.offset().left+cell._outerWidth()-5; +if(e.pageXp1){ +_6b6(_6b3,cell.parent().attr("field")); +} +} +} +}; +function _6b7(e){ +var _6b8=_6b1(e.target); +var opts=$(_6b8).datagrid("options"); +var cell=$(e.target).closest(".datagrid-cell"); +if(cell.length){ +var p1=cell.offset().left+5; +var p2=cell.offset().left+cell._outerWidth()-5; +var cond=opts.resizeHandle=="right"?(e.pageX>p2):(opts.resizeHandle=="left"?(e.pageXp2)); +if(cond){ +var _6b9=cell.parent().attr("field"); +var col=_6a3(_6b8,_6b9); +if(col.resizable==false){ +return; +} +$(_6b8).datagrid("autoSizeColumn",_6b9); +col.auto=false; +} +} +}; +function _6ba(e){ +var _6bb=_6b1(e.target); +var opts=$(_6bb).datagrid("options"); +var td=$(e.target).closest("td[field]"); +opts.onHeaderContextMenu.call(_6bb,e,td.attr("field")); +}; +function _6bc(_6bd){ +return function(e){ +var tr=_6be(e.target); +if(!tr){ +return; +} +var _6bf=_6b1(tr); +if($.data(_6bf,"datagrid").resizing){ +return; +} +var _6c0=_6c1(tr); +if(_6bd){ +_6c2(_6bf,_6c0); +}else{ +var opts=$.data(_6bf,"datagrid").options; +opts.finder.getTr(_6bf,_6c0).removeClass("datagrid-row-over"); +} +}; +}; +function _6c3(e){ +var tr=_6be(e.target); +if(!tr){ +return; +} +var _6c4=_6b1(tr); +var opts=$.data(_6c4,"datagrid").options; +var _6c5=_6c1(tr); +var tt=$(e.target); +if(tt.parent().hasClass("datagrid-cell-check")){ +if(opts.singleSelect&&opts.selectOnCheck){ +tt._propAttr("checked",!tt.is(":checked")); +_6c6(_6c4,_6c5); +}else{ +if(tt.is(":checked")){ +tt._propAttr("checked",false); +_6c6(_6c4,_6c5); +}else{ +tt._propAttr("checked",true); +_6c7(_6c4,_6c5); +} +} +}else{ +var row=opts.finder.getRow(_6c4,_6c5); +var td=tt.closest("td[field]",tr); +if(td.length){ +var _6c8=td.attr("field"); +opts.onClickCell.call(_6c4,_6c5,_6c8,row[_6c8]); +} +if(opts.singleSelect==true){ +_6c9(_6c4,_6c5); +}else{ +if(opts.ctrlSelect){ +if(e.metaKey||e.ctrlKey){ +if(tr.hasClass("datagrid-row-selected")){ +_6ca(_6c4,_6c5); +}else{ +_6c9(_6c4,_6c5); +} +}else{ +if(e.shiftKey){ +$(_6c4).datagrid("clearSelections"); +var _6cb=Math.min(opts.lastSelectedIndex||0,_6c5); +var _6cc=Math.max(opts.lastSelectedIndex||0,_6c5); +for(var i=_6cb;i<=_6cc;i++){ +_6c9(_6c4,i); +} +}else{ +$(_6c4).datagrid("clearSelections"); +_6c9(_6c4,_6c5); +opts.lastSelectedIndex=_6c5; +} +} +}else{ +if(tr.hasClass("datagrid-row-selected")){ +_6ca(_6c4,_6c5); +}else{ +_6c9(_6c4,_6c5); +} +} +} +opts.onClickRow.apply(_6c4,_649(_6c4,[_6c5,row])); +} +}; +function _6cd(e){ +var tr=_6be(e.target); +if(!tr){ +return; +} +var _6ce=_6b1(tr); +var opts=$.data(_6ce,"datagrid").options; +var _6cf=_6c1(tr); +var row=opts.finder.getRow(_6ce,_6cf); +var td=$(e.target).closest("td[field]",tr); +if(td.length){ +var _6d0=td.attr("field"); +opts.onDblClickCell.call(_6ce,_6cf,_6d0,row[_6d0]); +} +opts.onDblClickRow.apply(_6ce,_649(_6ce,[_6cf,row])); +}; +function _6d1(e){ +var tr=_6be(e.target); +if(tr){ +var _6d2=_6b1(tr); +var opts=$.data(_6d2,"datagrid").options; +var _6d3=_6c1(tr); +var row=opts.finder.getRow(_6d2,_6d3); +opts.onRowContextMenu.call(_6d2,e,_6d3,row); +}else{ +var body=_6be(e.target,".datagrid-body"); +if(body){ +var _6d2=_6b1(body); +var opts=$.data(_6d2,"datagrid").options; +opts.onRowContextMenu.call(_6d2,e,-1,null); +} +} +}; +function _6b1(t){ +return $(t).closest("div.datagrid-view").children(".datagrid-f")[0]; +}; +function _6be(t,_6d4){ +var tr=$(t).closest(_6d4||"tr.datagrid-row"); +if(tr.length&&tr.parent().length){ +return tr; +}else{ +return undefined; +} +}; +function _6c1(tr){ +if(tr.attr("datagrid-row-index")){ +return parseInt(tr.attr("datagrid-row-index")); +}else{ +return tr.attr("node-id"); +} +}; +function _6b6(_6d5,_6d6){ +var _6d7=$.data(_6d5,"datagrid"); +var opts=_6d7.options; +_6d6=_6d6||{}; +var _6d8={sortName:opts.sortName,sortOrder:opts.sortOrder}; +if(typeof _6d6=="object"){ +$.extend(_6d8,_6d6); +} +var _6d9=[]; +var _6da=[]; +if(_6d8.sortName){ +_6d9=_6d8.sortName.split(","); +_6da=_6d8.sortOrder.split(","); +} +if(typeof _6d6=="string"){ +var _6db=_6d6; +var col=_6a3(_6d5,_6db); +if(!col.sortable||_6d7.resizing){ +return; +} +var _6dc=col.order||"asc"; +var pos=_646(_6d9,_6db); +if(pos>=0){ +var _6dd=_6da[pos]=="asc"?"desc":"asc"; +if(opts.multiSort&&_6dd==_6dc){ +_6d9.splice(pos,1); +_6da.splice(pos,1); +}else{ +_6da[pos]=_6dd; +} +}else{ +if(opts.multiSort){ +_6d9.push(_6db); +_6da.push(_6dc); +}else{ +_6d9=[_6db]; +_6da=[_6dc]; +} +} +_6d8.sortName=_6d9.join(","); +_6d8.sortOrder=_6da.join(","); +} +if(opts.onBeforeSortColumn.call(_6d5,_6d8.sortName,_6d8.sortOrder)==false){ +return; +} +$.extend(opts,_6d8); +var dc=_6d7.dc; +var _6de=dc.header1.add(dc.header2); +_6de.find("div.datagrid-cell").removeClass("datagrid-sort-asc datagrid-sort-desc"); +for(var i=0;i<_6d9.length;i++){ +var col=_6a3(_6d5,_6d9[i]); +_6de.find("div."+col.cellClass).addClass("datagrid-sort-"+_6da[i]); +} +if(opts.remoteSort){ +_6df(_6d5); +}else{ +_6e0(_6d5,$(_6d5).datagrid("getData")); +} +opts.onSortColumn.call(_6d5,opts.sortName,opts.sortOrder); +}; +function _6e1(_6e2,_6e3,_6e4){ +_6e5(true); +_6e5(false); +function _6e5(_6e6){ +var aa=_6e7(_6e2,_6e6); +if(aa.length){ +var _6e8=aa[aa.length-1]; +var _6e9=_646(_6e8,_6e3); +if(_6e9>=0){ +for(var _6ea=0;_6ea=_6ef.find("table").width()){ +dc.body2.css("overflow-x","hidden"); +} +function _6f2(){ +if(!opts.fitColumns){ +return; +} +if(!_6ee.leftWidth){ +_6ee.leftWidth=0; +} +var _6f3=0; +var cc=[]; +var _6f4=_6a2(_6ed,false); +for(var i=0;i<_6f4.length;i++){ +var col=_6a3(_6ed,_6f4[i]); +if(_6f5(col)){ +_6f3+=col.width; +cc.push({field:col.field,col:col,addingWidth:0}); +} +} +if(!_6f3){ +return; +} +cc[cc.length-1].addingWidth-=_6ee.leftWidth; +var _6f6=_6ef.children("div.datagrid-header-inner").show(); +var _6f7=_6ef.width()-_6ef.find("table").width()-opts.scrollbarSize+_6ee.leftWidth; +var rate=_6f7/_6f3; +if(!opts.showHeader){ +_6f6.hide(); +} +for(var i=0;i0){ +c.col.boxWidth+=c.addingWidth; +c.col.width+=c.addingWidth; +} +} +_6ee.leftWidth=_6f7; +$(_6ed).datagrid("fixColumnSize"); +}; +function _6f1(){ +var _6f9=false; +var _6fa=_6a2(_6ed,true).concat(_6a2(_6ed,false)); +$.map(_6fa,function(_6fb){ +var col=_6a3(_6ed,_6fb); +if(String(col.width||"").indexOf("%")>=0){ +var _6fc=$.parser.parseValue("width",col.width,dc.view,opts.scrollbarSize+(opts.rownumbers?opts.rownumberWidth:0))-col.deltaWidth; +if(_6fc>0){ +col.boxWidth=_6fc; +_6f9=true; +} +} +}); +if(_6f9){ +$(_6ed).datagrid("fixColumnSize"); +} +}; +function _6f0(fit){ +var _6fd=dc.header1.add(dc.header2).find(".datagrid-cell-group"); +if(_6fd.length){ +_6fd.each(function(){ +$(this)._outerWidth(fit?$(this).parent().width():10); +}); +if(fit){ +_65f(_6ed); +} +} +}; +function _6f5(col){ +if(String(col.width||"").indexOf("%")>=0){ +return false; +} +if(!col.hidden&&!col.checkbox&&!col.auto&&!col.fixed){ +return true; +} +}; +}; +function _6fe(_6ff,_700){ +var _701=$.data(_6ff,"datagrid"); +var opts=_701.options; +var dc=_701.dc; +var tmp=$("
        ").appendTo("body"); +if(_700){ +_65a(_700); +$(_6ff).datagrid("fitColumns"); +}else{ +var _702=false; +var _703=_6a2(_6ff,true).concat(_6a2(_6ff,false)); +for(var i=0;i<_703.length;i++){ +var _700=_703[i]; +var col=_6a3(_6ff,_700); +if(col.auto){ +_65a(_700); +_702=true; +} +} +if(_702){ +$(_6ff).datagrid("fitColumns"); +} +} +tmp.remove(); +function _65a(_704){ +var _705=dc.view.find("div.datagrid-header td[field=\""+_704+"\"] div.datagrid-cell"); +_705.css("width",""); +var col=$(_6ff).datagrid("getColumnOption",_704); +col.width=undefined; +col.boxWidth=undefined; +col.auto=true; +$(_6ff).datagrid("fixColumnSize",_704); +var _706=Math.max(_707("header"),_707("allbody"),_707("allfooter"))+1; +_705._outerWidth(_706-1); +col.width=_706; +col.boxWidth=parseInt(_705[0].style.width); +col.deltaWidth=_706-col.boxWidth; +_705.css("width",""); +$(_6ff).datagrid("fixColumnSize",_704); +opts.onResizeColumn.call(_6ff,_704,col.width); +function _707(type){ +var _708=0; +if(type=="header"){ +_708=_709(_705); +}else{ +opts.finder.getTr(_6ff,0,type).find("td[field=\""+_704+"\"] div.datagrid-cell").each(function(){ +var w=_709($(this)); +if(_7081){ +var col=_6a3(_712,td.attr("field")); +var _714=col.boxWidth+col.deltaWidth-1; +for(var i=1;i<_713;i++){ +td=td.next(); +col=_6a3(_712,td.attr("field")); +_714+=col.boxWidth+col.deltaWidth; +} +$(this).children("div.datagrid-cell")._outerWidth(_714); +} +}); +}; +function _710(_715){ +var dc=$.data(_715,"datagrid").dc; +dc.view.find("div.datagrid-editable").each(function(){ +var cell=$(this); +var _716=cell.parent().attr("field"); +var col=$(_715).datagrid("getColumnOption",_716); +cell._outerWidth(col.boxWidth+col.deltaWidth-1); +var ed=$.data(this,"datagrid.editor"); +if(ed.actions.resize){ +ed.actions.resize(ed.target,cell.width()); +} +}); +}; +function _6a3(_717,_718){ +function find(_719){ +if(_719){ +for(var i=0;i<_719.length;i++){ +var cc=_719[i]; +for(var j=0;j=0){ +var _722=col.field||col.id||""; +for(var c=0;c<(col.colspan||1);c++){ +for(var r=0;r<(col.rowspan||1);r++){ +aa[_71f+r][_720]=_722; +} +_720++; +} +} +}); +} +return aa; +function _71e(){ +var _723=0; +$.map(_71c[0]||[],function(col){ +_723+=col.colspan||1; +}); +return _723; +}; +function _721(a){ +for(var i=0;ib?1:-1); +}; +r=_72a(r1[sn],r2[sn])*(so=="asc"?1:-1); +if(r!=0){ +return r; +} +} +return r; +}); +} +if(opts.view.onBeforeRender){ +opts.view.onBeforeRender.call(opts.view,_726,data.rows); +} +opts.view.render.call(opts.view,_726,dc.body2,false); +opts.view.render.call(opts.view,_726,dc.body1,true); +if(opts.showFooter){ +opts.view.renderFooter.call(opts.view,_726,dc.footer2,false); +opts.view.renderFooter.call(opts.view,_726,dc.footer1,true); +} +if(opts.view.onAfterRender){ +opts.view.onAfterRender.call(opts.view,_726); +} +_727.ss.clean(); +var _72b=$(_726).datagrid("getPager"); +if(_72b.length){ +var _72c=_72b.pagination("options"); +if(_72c.total!=data.total){ +_72b.pagination("refresh",{total:data.total}); +if(opts.pageNumber!=_72c.pageNumber&&_72c.pageNumber>0){ +opts.pageNumber=_72c.pageNumber; +_6df(_726); +} +} +} +_670(_726); +dc.body2.triggerHandler("scroll"); +$(_726).datagrid("setSelectionState"); +$(_726).datagrid("autoSizeColumn"); +opts.onLoadSuccess.call(_726,data); +}; +function _72d(_72e){ +var _72f=$.data(_72e,"datagrid"); +var opts=_72f.options; +var dc=_72f.dc; +dc.header1.add(dc.header2).find("input[type=checkbox]")._propAttr("checked",false); +if(opts.idField){ +var _730=$.data(_72e,"treegrid")?true:false; +var _731=opts.onSelect; +var _732=opts.onCheck; +opts.onSelect=opts.onCheck=function(){ +}; +var rows=opts.finder.getRows(_72e); +for(var i=0;i_743.height()-_744){ +_743.scrollTop(_743.scrollTop()+top+tr._outerHeight()-_743.height()+_744); +} +} +} +}; +function _6c2(_746,_747){ +var _748=$.data(_746,"datagrid"); +var opts=_748.options; +opts.finder.getTr(_746,_748.highlightIndex).removeClass("datagrid-row-over"); +opts.finder.getTr(_746,_747).addClass("datagrid-row-over"); +_748.highlightIndex=_747; +}; +function _6c9(_749,_74a,_74b,_74c){ +var _74d=$.data(_749,"datagrid"); +var opts=_74d.options; +var row=opts.finder.getRow(_749,_74a); +if(!row){ +return; +} +if(opts.onBeforeSelect.apply(_749,_649(_749,[_74a,row]))==false){ +return; +} +if(opts.singleSelect){ +_74e(_749,true); +_74d.selectedRows=[]; +} +if(!_74b&&opts.checkOnSelect){ +_6c6(_749,_74a,true); +} +if(opts.idField){ +_648(_74d.selectedRows,opts.idField,row); +} +opts.finder.getTr(_749,_74a).addClass("datagrid-row-selected"); +opts.onSelect.apply(_749,_649(_749,[_74a,row])); +if(!_74c&&opts.scrollOnSelect){ +_73e(_749,_74a); +} +}; +function _6ca(_74f,_750,_751){ +var _752=$.data(_74f,"datagrid"); +var dc=_752.dc; +var opts=_752.options; +var row=opts.finder.getRow(_74f,_750); +if(!row){ +return; +} +if(opts.onBeforeUnselect.apply(_74f,_649(_74f,[_750,row]))==false){ +return; +} +if(!_751&&opts.checkOnSelect){ +_6c7(_74f,_750,true); +} +opts.finder.getTr(_74f,_750).removeClass("datagrid-row-selected"); +if(opts.idField){ +_647(_752.selectedRows,opts.idField,row[opts.idField]); +} +opts.onUnselect.apply(_74f,_649(_74f,[_750,row])); +}; +function _753(_754,_755){ +var _756=$.data(_754,"datagrid"); +var opts=_756.options; +var rows=opts.finder.getRows(_754); +var _757=$.data(_754,"datagrid").selectedRows; +if(!_755&&opts.checkOnSelect){ +_6b4(_754,true); +} +opts.finder.getTr(_754,"","allbody").addClass("datagrid-row-selected"); +if(opts.idField){ +for(var _758=0;_758"); +cell.children("table").bind("click dblclick contextmenu",function(e){ +e.stopPropagation(); +}); +$.data(cell[0],"datagrid.editor",{actions:_78d,target:_78d.init(cell.find("td"),$.extend({height:opts.editorHeight},_78c)),field:_78a,type:_78b,oldHtml:_78e}); +} +} +}); +_670(_788,_789,true); +}; +function _77f(_790,_791){ +var opts=$.data(_790,"datagrid").options; +var tr=opts.finder.getTr(_790,_791); +tr.children("td").each(function(){ +var cell=$(this).find("div.datagrid-editable"); +if(cell.length){ +var ed=$.data(cell[0],"datagrid.editor"); +if(ed.actions.destroy){ +ed.actions.destroy(ed.target); +} +cell.html(ed.oldHtml); +$.removeData(cell[0],"datagrid.editor"); +cell.removeClass("datagrid-editable"); +cell.css("width",""); +} +}); +}; +function _772(_792,_793){ +var tr=$.data(_792,"datagrid").options.finder.getTr(_792,_793); +if(!tr.hasClass("datagrid-row-editing")){ +return true; +} +var vbox=tr.find(".validatebox-text"); +vbox.validatebox("validate"); +vbox.trigger("mouseleave"); +var _794=tr.find(".validatebox-invalid"); +return _794.length==0; +}; +function _795(_796,_797){ +var _798=$.data(_796,"datagrid").insertedRows; +var _799=$.data(_796,"datagrid").deletedRows; +var _79a=$.data(_796,"datagrid").updatedRows; +if(!_797){ +var rows=[]; +rows=rows.concat(_798); +rows=rows.concat(_799); +rows=rows.concat(_79a); +return rows; +}else{ +if(_797=="inserted"){ +return _798; +}else{ +if(_797=="deleted"){ +return _799; +}else{ +if(_797=="updated"){ +return _79a; +} +} +} +} +return []; +}; +function _79b(_79c,_79d){ +var _79e=$.data(_79c,"datagrid"); +var opts=_79e.options; +var data=_79e.data; +var _79f=_79e.insertedRows; +var _7a0=_79e.deletedRows; +$(_79c).datagrid("cancelEdit",_79d); +var row=opts.finder.getRow(_79c,_79d); +if(_646(_79f,row)>=0){ +_647(_79f,row); +}else{ +_7a0.push(row); +} +_647(_79e.selectedRows,opts.idField,row[opts.idField]); +_647(_79e.checkedRows,opts.idField,row[opts.idField]); +opts.view.deleteRow.call(opts.view,_79c,_79d); +if(opts.height=="auto"){ +_670(_79c); +} +$(_79c).datagrid("getPager").pagination("refresh",{total:data.total}); +}; +function _7a1(_7a2,_7a3){ +var data=$.data(_7a2,"datagrid").data; +var view=$.data(_7a2,"datagrid").options.view; +var _7a4=$.data(_7a2,"datagrid").insertedRows; +view.insertRow.call(view,_7a2,_7a3.index,_7a3.row); +_7a4.push(_7a3.row); +$(_7a2).datagrid("getPager").pagination("refresh",{total:data.total}); +}; +function _7a5(_7a6,row){ +var data=$.data(_7a6,"datagrid").data; +var view=$.data(_7a6,"datagrid").options.view; +var _7a7=$.data(_7a6,"datagrid").insertedRows; +view.insertRow.call(view,_7a6,null,row); +_7a7.push(row); +$(_7a6).datagrid("getPager").pagination("refresh",{total:data.total}); +}; +function _7a8(_7a9,_7aa){ +var _7ab=$.data(_7a9,"datagrid"); +var opts=_7ab.options; +var row=opts.finder.getRow(_7a9,_7aa.index); +var _7ac=false; +_7aa.row=_7aa.row||{}; +for(var _7ad in _7aa.row){ +if(row[_7ad]!==_7aa.row[_7ad]){ +_7ac=true; +break; +} +} +if(_7ac){ +if(_646(_7ab.insertedRows,row)==-1){ +if(_646(_7ab.updatedRows,row)==-1){ +_7ab.updatedRows.push(row); +} +} +opts.view.updateRow.call(opts.view,_7a9,_7aa.index,_7aa.row); +} +}; +function _7ae(_7af){ +var _7b0=$.data(_7af,"datagrid"); +var data=_7b0.data; +var rows=data.rows; +var _7b1=[]; +for(var i=0;i=0){ +(_7be=="s"?_6c9:_6c6)(_7b5,_7bf,true); +} +} +}; +for(var i=0;i0){ +$(this).datagrid("loadData",data); +}else{ +opts.view.setEmptyMsg(this); +$(this).datagrid("autoSizeColumn"); +} +} +_6df(this); +}); +}; +function _7cf(_7d0){ +var _7d1={}; +$.map(_7d0,function(name){ +_7d1[name]=_7d2(name); +}); +return _7d1; +function _7d2(name){ +function isA(_7d3){ +return $.data($(_7d3)[0],name)!=undefined; +}; +return {init:function(_7d4,_7d5){ +var _7d6=$("").appendTo(_7d4); +if(_7d6[name]&&name!="text"){ +return _7d6[name](_7d5); +}else{ +return _7d6; +} +},destroy:function(_7d7){ +if(isA(_7d7,name)){ +$(_7d7)[name]("destroy"); +} +},getValue:function(_7d8){ +if(isA(_7d8,name)){ +var opts=$(_7d8)[name]("options"); +if(opts.multiple){ +return $(_7d8)[name]("getValues").join(opts.separator); +}else{ +return $(_7d8)[name]("getValue"); +} +}else{ +return $(_7d8).val(); +} +},setValue:function(_7d9,_7da){ +if(isA(_7d9,name)){ +var opts=$(_7d9)[name]("options"); +if(opts.multiple){ +if(_7da){ +$(_7d9)[name]("setValues",_7da.split(opts.separator)); +}else{ +$(_7d9)[name]("clear"); +} +}else{ +$(_7d9)[name]("setValue",_7da); +} +}else{ +$(_7d9).val(_7da); +} +},resize:function(_7db,_7dc){ +if(isA(_7db,name)){ +$(_7db)[name]("resize",_7dc); +}else{ +$(_7db)._size({width:_7dc,height:$.fn.datagrid.defaults.editorHeight}); +} +}}; +}; +}; +var _7dd=$.extend({},_7cf(["text","textbox","passwordbox","filebox","numberbox","numberspinner","combobox","combotree","combogrid","combotreegrid","datebox","datetimebox","timespinner","datetimespinner"]),{textarea:{init:function(_7de,_7df){ +var _7e0=$("").appendTo(_7de); +_7e0.css("vertical-align","middle")._outerHeight(_7df.height); +return _7e0; +},getValue:function(_7e1){ +return $(_7e1).val(); +},setValue:function(_7e2,_7e3){ +$(_7e2).val(_7e3); +},resize:function(_7e4,_7e5){ +$(_7e4)._outerWidth(_7e5); +}},checkbox:{init:function(_7e6,_7e7){ +var _7e8=$("").appendTo(_7e6); +_7e8.val(_7e7.on); +_7e8.attr("offval",_7e7.off); +return _7e8; +},getValue:function(_7e9){ +if($(_7e9).is(":checked")){ +return $(_7e9).val(); +}else{ +return $(_7e9).attr("offval"); +} +},setValue:function(_7ea,_7eb){ +var _7ec=false; +if($(_7ea).val()==_7eb){ +_7ec=true; +} +$(_7ea)._propAttr("checked",_7ec); +}},validatebox:{init:function(_7ed,_7ee){ +var _7ef=$("").appendTo(_7ed); +_7ef.validatebox(_7ee); +return _7ef; +},destroy:function(_7f0){ +$(_7f0).validatebox("destroy"); +},getValue:function(_7f1){ +return $(_7f1).val(); +},setValue:function(_7f2,_7f3){ +$(_7f2).val(_7f3); +},resize:function(_7f4,_7f5){ +$(_7f4)._outerWidth(_7f5)._outerHeight($.fn.datagrid.defaults.editorHeight); +}}}); +$.fn.datagrid.methods={options:function(jq){ +var _7f6=$.data(jq[0],"datagrid").options; +var _7f7=$.data(jq[0],"datagrid").panel.panel("options"); +var opts=$.extend(_7f6,{width:_7f7.width,height:_7f7.height,closed:_7f7.closed,collapsed:_7f7.collapsed,minimized:_7f7.minimized,maximized:_7f7.maximized}); +return opts; +},setSelectionState:function(jq){ +return jq.each(function(){ +_72d(this); +}); +},createStyleSheet:function(jq){ +return _64b(jq[0]); +},getPanel:function(jq){ +return $.data(jq[0],"datagrid").panel; +},getPager:function(jq){ +return $.data(jq[0],"datagrid").panel.children("div.datagrid-pager"); +},getColumnFields:function(jq,_7f8){ +return _6a2(jq[0],_7f8); +},getColumnOption:function(jq,_7f9){ +return _6a3(jq[0],_7f9); +},resize:function(jq,_7fa){ +return jq.each(function(){ +_65a(this,_7fa); +}); +},load:function(jq,_7fb){ +return jq.each(function(){ +var opts=$(this).datagrid("options"); +if(typeof _7fb=="string"){ +opts.url=_7fb; +_7fb=null; +} +opts.pageNumber=1; +var _7fc=$(this).datagrid("getPager"); +_7fc.pagination("refresh",{pageNumber:1}); +_6df(this,_7fb); +}); +},reload:function(jq,_7fd){ +return jq.each(function(){ +var opts=$(this).datagrid("options"); +if(typeof _7fd=="string"){ +opts.url=_7fd; +_7fd=null; +} +_6df(this,_7fd); +}); +},reloadFooter:function(jq,_7fe){ +return jq.each(function(){ +var opts=$.data(this,"datagrid").options; +var dc=$.data(this,"datagrid").dc; +if(_7fe){ +$.data(this,"datagrid").footer=_7fe; +} +if(opts.showFooter){ +opts.view.renderFooter.call(opts.view,this,dc.footer2,false); +opts.view.renderFooter.call(opts.view,this,dc.footer1,true); +if(opts.view.onAfterRender){ +opts.view.onAfterRender.call(opts.view,this); +} +$(this).datagrid("fixRowHeight"); +} +}); +},loading:function(jq){ +return jq.each(function(){ +var opts=$.data(this,"datagrid").options; +$(this).datagrid("getPager").pagination("loading"); +if(opts.loadMsg){ +var _7ff=$(this).datagrid("getPanel"); +if(!_7ff.children("div.datagrid-mask").length){ +$("
        ").appendTo(_7ff); +var msg=$("
        ").html(opts.loadMsg).appendTo(_7ff); +msg._outerHeight(40); +msg.css({marginLeft:(-msg.outerWidth()/2),lineHeight:(msg.height()+"px")}); +} +} +}); +},loaded:function(jq){ +return jq.each(function(){ +$(this).datagrid("getPager").pagination("loaded"); +var _800=$(this).datagrid("getPanel"); +_800.children("div.datagrid-mask-msg").remove(); +_800.children("div.datagrid-mask").remove(); +}); +},fitColumns:function(jq){ +return jq.each(function(){ +_6ec(this); +}); +},fixColumnSize:function(jq,_801){ +return jq.each(function(){ +_70a(this,_801); +}); +},fixRowHeight:function(jq,_802){ +return jq.each(function(){ +_670(this,_802); +}); +},freezeRow:function(jq,_803){ +return jq.each(function(){ +_67d(this,_803); +}); +},autoSizeColumn:function(jq,_804){ +return jq.each(function(){ +_6fe(this,_804); +}); +},loadData:function(jq,data){ +return jq.each(function(){ +_6e0(this,data); +_7ae(this); +}); +},getData:function(jq){ +return $.data(jq[0],"datagrid").data; +},getRows:function(jq){ +return $.data(jq[0],"datagrid").data.rows; +},getFooterRows:function(jq){ +return $.data(jq[0],"datagrid").footer; +},getRowIndex:function(jq,id){ +return _735(jq[0],id); +},getChecked:function(jq){ +return _73b(jq[0]); +},getSelected:function(jq){ +var rows=_738(jq[0]); +return rows.length>0?rows[0]:null; +},getSelections:function(jq){ +return _738(jq[0]); +},clearSelections:function(jq){ +return jq.each(function(){ +var _805=$.data(this,"datagrid"); +var _806=_805.selectedRows; +var _807=_805.checkedRows; +_806.splice(0,_806.length); +_74e(this); +if(_805.options.checkOnSelect){ +_807.splice(0,_807.length); +} +}); +},clearChecked:function(jq){ +return jq.each(function(){ +var _808=$.data(this,"datagrid"); +var _809=_808.selectedRows; +var _80a=_808.checkedRows; +_80a.splice(0,_80a.length); +_6b5(this); +if(_808.options.selectOnCheck){ +_809.splice(0,_809.length); +} +}); +},scrollTo:function(jq,_80b){ +return jq.each(function(){ +_73e(this,_80b); +}); +},highlightRow:function(jq,_80c){ +return jq.each(function(){ +_6c2(this,_80c); +_73e(this,_80c); +}); +},selectAll:function(jq){ +return jq.each(function(){ +_753(this); +}); +},unselectAll:function(jq){ +return jq.each(function(){ +_74e(this); +}); +},selectRow:function(jq,_80d){ +return jq.each(function(){ +_6c9(this,_80d); +}); +},selectRecord:function(jq,id){ +return jq.each(function(){ +var opts=$.data(this,"datagrid").options; +if(opts.idField){ +var _80e=_735(this,id); +if(_80e>=0){ +$(this).datagrid("selectRow",_80e); +} +} +}); +},unselectRow:function(jq,_80f){ +return jq.each(function(){ +_6ca(this,_80f); +}); +},checkRow:function(jq,_810){ +return jq.each(function(){ +_6c6(this,_810); +}); +},uncheckRow:function(jq,_811){ +return jq.each(function(){ +_6c7(this,_811); +}); +},checkAll:function(jq){ +return jq.each(function(){ +_6b4(this); +}); +},uncheckAll:function(jq){ +return jq.each(function(){ +_6b5(this); +}); +},beginEdit:function(jq,_812){ +return jq.each(function(){ +_76d(this,_812); +}); +},endEdit:function(jq,_813){ +return jq.each(function(){ +_773(this,_813,false); +}); +},cancelEdit:function(jq,_814){ +return jq.each(function(){ +_773(this,_814,true); +}); +},getEditors:function(jq,_815){ +return _780(jq[0],_815); +},getEditor:function(jq,_816){ +return _784(jq[0],_816); +},refreshRow:function(jq,_817){ +return jq.each(function(){ +var opts=$.data(this,"datagrid").options; +opts.view.refreshRow.call(opts.view,this,_817); +}); +},validateRow:function(jq,_818){ +return _772(jq[0],_818); +},updateRow:function(jq,_819){ +return jq.each(function(){ +_7a8(this,_819); +}); +},appendRow:function(jq,row){ +return jq.each(function(){ +_7a5(this,row); +}); +},insertRow:function(jq,_81a){ +return jq.each(function(){ +_7a1(this,_81a); +}); +},deleteRow:function(jq,_81b){ +return jq.each(function(){ +_79b(this,_81b); +}); +},getChanges:function(jq,_81c){ +return _795(jq[0],_81c); +},acceptChanges:function(jq){ +return jq.each(function(){ +_7b2(this); +}); +},rejectChanges:function(jq){ +return jq.each(function(){ +_7b4(this); +}); +},mergeCells:function(jq,_81d){ +return jq.each(function(){ +_7c6(this,_81d); +}); +},showColumn:function(jq,_81e){ +return jq.each(function(){ +var col=$(this).datagrid("getColumnOption",_81e); +if(col.hidden){ +col.hidden=false; +$(this).datagrid("getPanel").find("td[field=\""+_81e+"\"]").show(); +_6e1(this,_81e,1); +$(this).datagrid("fitColumns"); +} +}); +},hideColumn:function(jq,_81f){ +return jq.each(function(){ +var col=$(this).datagrid("getColumnOption",_81f); +if(!col.hidden){ +col.hidden=true; +$(this).datagrid("getPanel").find("td[field=\""+_81f+"\"]").hide(); +_6e1(this,_81f,-1); +$(this).datagrid("fitColumns"); +} +}); +},sort:function(jq,_820){ +return jq.each(function(){ +_6b6(this,_820); +}); +},gotoPage:function(jq,_821){ +return jq.each(function(){ +var _822=this; +var page,cb; +if(typeof _821=="object"){ +page=_821.page; +cb=_821.callback; +}else{ +page=_821; +} +$(_822).datagrid("options").pageNumber=page; +$(_822).datagrid("getPager").pagination("refresh",{pageNumber:page}); +_6df(_822,null,function(){ +if(cb){ +cb.call(_822,page); +} +}); +}); +}}; +$.fn.datagrid.parseOptions=function(_823){ +var t=$(_823); +return $.extend({},$.fn.panel.parseOptions(_823),$.parser.parseOptions(_823,["url","toolbar","idField","sortName","sortOrder","pagePosition","resizeHandle",{sharedStyleSheet:"boolean",fitColumns:"boolean",autoRowHeight:"boolean",striped:"boolean",nowrap:"boolean"},{rownumbers:"boolean",singleSelect:"boolean",ctrlSelect:"boolean",checkOnSelect:"boolean",selectOnCheck:"boolean"},{pagination:"boolean",pageSize:"number",pageNumber:"number"},{multiSort:"boolean",remoteSort:"boolean",showHeader:"boolean",showFooter:"boolean"},{scrollbarSize:"number",scrollOnSelect:"boolean"}]),{pageList:(t.attr("pageList")?eval(t.attr("pageList")):undefined),loadMsg:(t.attr("loadMsg")!=undefined?t.attr("loadMsg"):undefined),rowStyler:(t.attr("rowStyler")?eval(t.attr("rowStyler")):undefined)}); +}; +$.fn.datagrid.parseData=function(_824){ +var t=$(_824); +var data={total:0,rows:[]}; +var _825=t.datagrid("getColumnFields",true).concat(t.datagrid("getColumnFields",false)); +t.find("tbody tr").each(function(){ +data.total++; +var row={}; +$.extend(row,$.parser.parseOptions(this,["iconCls","state"])); +for(var i=0;i<_825.length;i++){ +row[_825[i]]=$(this).find("td:eq("+i+")").html(); +} +data.rows.push(row); +}); +return data; +}; +var _826={render:function(_827,_828,_829){ +var rows=$(_827).datagrid("getRows"); +$(_828).html(this.renderTable(_827,0,rows,_829)); +},renderFooter:function(_82a,_82b,_82c){ +var opts=$.data(_82a,"datagrid").options; +var rows=$.data(_82a,"datagrid").footer||[]; +var _82d=$(_82a).datagrid("getColumnFields",_82c); +var _82e=[""]; +for(var i=0;i"); +_82e.push(this.renderRow.call(this,_82a,_82d,_82c,i,rows[i])); +_82e.push(""); +} +_82e.push("
        "); +$(_82b).html(_82e.join("")); +},renderTable:function(_82f,_830,rows,_831){ +var _832=$.data(_82f,"datagrid"); +var opts=_832.options; +if(_831){ +if(!(opts.rownumbers||(opts.frozenColumns&&opts.frozenColumns.length))){ +return ""; +} +} +var _833=$(_82f).datagrid("getColumnFields",_831); +var _834=[""]; +for(var i=0;i"); +_834.push(this.renderRow.call(this,_82f,_833,_831,_830,row)); +_834.push(""); +_830++; +} +_834.push("
        "); +return _834.join(""); +},renderRow:function(_837,_838,_839,_83a,_83b){ +var opts=$.data(_837,"datagrid").options; +var cc=[]; +if(_839&&opts.rownumbers){ +var _83c=_83a+1; +if(opts.pagination){ +_83c+=(opts.pageNumber-1)*opts.pageSize; +} +cc.push("
        "+_83c+"
        "); +} +for(var i=0;i<_838.length;i++){ +var _83d=_838[i]; +var col=$(_837).datagrid("getColumnOption",_83d); +if(col){ +var _83e=_83b[_83d]; +var css=col.styler?(col.styler.call(_837,_83e,_83b,_83a)||""):""; +var cs=this.getStyleValue(css); +var cls=cs.c?"class=\""+cs.c+"\"":""; +var _83f=col.hidden?"style=\"display:none;"+cs.s+"\"":(cs.s?"style=\""+cs.s+"\"":""); +cc.push(""); +var _83f=""; +if(!col.checkbox){ +if(col.align){ +_83f+="text-align:"+col.align+";"; +} +if(!opts.nowrap){ +_83f+="white-space:normal;height:auto;"; +}else{ +if(opts.autoRowHeight){ +_83f+="height:auto;"; +} +} +} +cc.push("
        "); +if(col.checkbox){ +cc.push(""); +}else{ +if(col.formatter){ +cc.push(col.formatter(_83e,_83b,_83a)); +}else{ +cc.push(_83e); +} +} +cc.push("
        "); +cc.push(""); +} +} +return cc.join(""); +},getStyleValue:function(css){ +var _840=""; +var _841=""; +if(typeof css=="string"){ +_841=css; +}else{ +if(css){ +_840=css["class"]||""; +_841=css["style"]||""; +} +} +return {c:_840,s:_841}; +},refreshRow:function(_842,_843){ +this.updateRow.call(this,_842,_843,{}); +},updateRow:function(_844,_845,row){ +var opts=$.data(_844,"datagrid").options; +var _846=opts.finder.getRow(_844,_845); +$.extend(_846,row); +var cs=_847.call(this,_845); +var _848=cs.s; +var cls="datagrid-row "+(_845%2&&opts.striped?"datagrid-row-alt ":" ")+cs.c; +function _847(_849){ +var css=opts.rowStyler?opts.rowStyler.call(_844,_849,_846):""; +return this.getStyleValue(css); +}; +function _84a(_84b){ +var tr=opts.finder.getTr(_844,_845,"body",(_84b?1:2)); +if(!tr.length){ +return; +} +var _84c=$(_844).datagrid("getColumnFields",_84b); +var _84d=tr.find("div.datagrid-cell-check input[type=checkbox]").is(":checked"); +tr.html(this.renderRow.call(this,_844,_84c,_84b,_845,_846)); +var _84e=(tr.hasClass("datagrid-row-checked")?" datagrid-row-checked":"")+(tr.hasClass("datagrid-row-selected")?" datagrid-row-selected":""); +tr.attr("style",_848).attr("class",cls+_84e); +if(_84d){ +tr.find("div.datagrid-cell-check input[type=checkbox]")._propAttr("checked",true); +} +}; +_84a.call(this,true); +_84a.call(this,false); +$(_844).datagrid("fixRowHeight",_845); +},insertRow:function(_84f,_850,row){ +var _851=$.data(_84f,"datagrid"); +var opts=_851.options; +var dc=_851.dc; +var data=_851.data; +if(_850==undefined||_850==null){ +_850=data.rows.length; +} +if(_850>data.rows.length){ +_850=data.rows.length; +} +function _852(_853){ +var _854=_853?1:2; +for(var i=data.rows.length-1;i>=_850;i--){ +var tr=opts.finder.getTr(_84f,i,"body",_854); +tr.attr("datagrid-row-index",i+1); +tr.attr("id",_851.rowIdPrefix+"-"+_854+"-"+(i+1)); +if(_853&&opts.rownumbers){ +var _855=i+2; +if(opts.pagination){ +_855+=(opts.pageNumber-1)*opts.pageSize; +} +tr.find("div.datagrid-cell-rownumber").html(_855); +} +if(opts.striped){ +tr.removeClass("datagrid-row-alt").addClass((i+1)%2?"datagrid-row-alt":""); +} +} +}; +function _856(_857){ +var _858=_857?1:2; +var _859=$(_84f).datagrid("getColumnFields",_857); +var _85a=_851.rowIdPrefix+"-"+_858+"-"+_850; +var tr=""; +if(_850>=data.rows.length){ +if(data.rows.length){ +opts.finder.getTr(_84f,"","last",_858).after(tr); +}else{ +var cc=_857?dc.body1:dc.body2; +cc.html(""+tr+"
        "); +} +}else{ +opts.finder.getTr(_84f,_850+1,"body",_858).before(tr); +} +}; +_852.call(this,true); +_852.call(this,false); +_856.call(this,true); +_856.call(this,false); +data.total+=1; +data.rows.splice(_850,0,row); +this.setEmptyMsg(_84f); +this.refreshRow.call(this,_84f,_850); +},deleteRow:function(_85b,_85c){ +var _85d=$.data(_85b,"datagrid"); +var opts=_85d.options; +var data=_85d.data; +function _85e(_85f){ +var _860=_85f?1:2; +for(var i=_85c+1;i
        ").appendTo(_867.dc.view); +d.html(opts.emptyMsg).css("top",h+"px"); +} +} +},renderEmptyRow:function(_869){ +var cols=$.map($(_869).datagrid("getColumnFields"),function(_86a){ +return $(_869).datagrid("getColumnOption",_86a); +}); +$.map(cols,function(col){ +col.formatter1=col.formatter; +col.styler1=col.styler; +col.formatter=col.styler=undefined; +}); +var _86b=$.data(_869,"datagrid").dc.body2; +_86b.html(this.renderTable(_869,0,[{}],false)); +_86b.find("tbody *").css({height:1,borderColor:"transparent",background:"transparent"}); +var tr=_86b.find(".datagrid-row"); +tr.removeClass("datagrid-row").removeAttr("datagrid-row-index"); +tr.find(".datagrid-cell,.datagrid-cell-check").empty(); +$.map(cols,function(col){ +col.formatter=col.formatter1; +col.styler=col.styler1; +col.formatter1=col.styler1=undefined; +}); +}}; +$.fn.datagrid.defaults=$.extend({},$.fn.panel.defaults,{sharedStyleSheet:false,frozenColumns:undefined,columns:undefined,fitColumns:false,resizeHandle:"right",autoRowHeight:true,toolbar:null,striped:false,method:"post",nowrap:true,idField:null,url:null,data:null,loadMsg:"Processing, please wait ...",emptyMsg:"",rownumbers:false,singleSelect:false,ctrlSelect:false,selectOnCheck:true,checkOnSelect:true,pagination:false,pagePosition:"bottom",pageNumber:1,pageSize:10,pageList:[10,20,30,40,50],queryParams:{},sortName:null,sortOrder:"asc",multiSort:false,remoteSort:true,showHeader:true,showFooter:false,scrollOnSelect:true,scrollbarSize:18,rownumberWidth:30,editorHeight:24,headerEvents:{mouseover:_6ae(true),mouseout:_6ae(false),click:_6b2,dblclick:_6b7,contextmenu:_6ba},rowEvents:{mouseover:_6bc(true),mouseout:_6bc(false),click:_6c3,dblclick:_6cd,contextmenu:_6d1},rowStyler:function(_86c,_86d){ +},loader:function(_86e,_86f,_870){ +var opts=$(this).datagrid("options"); +if(!opts.url){ +return false; +} +$.ajax({type:opts.method,url:opts.url,data:_86e,dataType:"json",success:function(data){ +_86f(data); +},error:function(){ +_870.apply(this,arguments); +}}); +},loadFilter:function(data){ +return data; +},editors:_7dd,finder:{getTr:function(_871,_872,type,_873){ +type=type||"body"; +_873=_873||0; +var _874=$.data(_871,"datagrid"); +var dc=_874.dc; +var opts=_874.options; +if(_873==0){ +var tr1=opts.finder.getTr(_871,_872,type,1); +var tr2=opts.finder.getTr(_871,_872,type,2); +return tr1.add(tr2); +}else{ +if(type=="body"){ +var tr=$("#"+_874.rowIdPrefix+"-"+_873+"-"+_872); +if(!tr.length){ +tr=(_873==1?dc.body1:dc.body2).find(">table>tbody>tr[datagrid-row-index="+_872+"]"); +} +return tr; +}else{ +if(type=="footer"){ +return (_873==1?dc.footer1:dc.footer2).find(">table>tbody>tr[datagrid-row-index="+_872+"]"); +}else{ +if(type=="selected"){ +return (_873==1?dc.body1:dc.body2).find(">table>tbody>tr.datagrid-row-selected"); +}else{ +if(type=="highlight"){ +return (_873==1?dc.body1:dc.body2).find(">table>tbody>tr.datagrid-row-over"); +}else{ +if(type=="checked"){ +return (_873==1?dc.body1:dc.body2).find(">table>tbody>tr.datagrid-row-checked"); +}else{ +if(type=="editing"){ +return (_873==1?dc.body1:dc.body2).find(">table>tbody>tr.datagrid-row-editing"); +}else{ +if(type=="last"){ +return (_873==1?dc.body1:dc.body2).find(">table>tbody>tr[datagrid-row-index]:last"); +}else{ +if(type=="allbody"){ +return (_873==1?dc.body1:dc.body2).find(">table>tbody>tr[datagrid-row-index]"); +}else{ +if(type=="allfooter"){ +return (_873==1?dc.footer1:dc.footer2).find(">table>tbody>tr[datagrid-row-index]"); +} +} +} +} +} +} +} +} +} +} +},getRow:function(_875,p){ +var _876=(typeof p=="object")?p.attr("datagrid-row-index"):p; +return $.data(_875,"datagrid").data.rows[parseInt(_876)]; +},getRows:function(_877){ +return $(_877).datagrid("getRows"); +}},view:_826,onBeforeLoad:function(_878){ +},onLoadSuccess:function(){ +},onLoadError:function(){ +},onClickRow:function(_879,_87a){ +},onDblClickRow:function(_87b,_87c){ +},onClickCell:function(_87d,_87e,_87f){ +},onDblClickCell:function(_880,_881,_882){ +},onBeforeSortColumn:function(sort,_883){ +},onSortColumn:function(sort,_884){ +},onResizeColumn:function(_885,_886){ +},onBeforeSelect:function(_887,_888){ +},onSelect:function(_889,_88a){ +},onBeforeUnselect:function(_88b,_88c){ +},onUnselect:function(_88d,_88e){ +},onSelectAll:function(rows){ +},onUnselectAll:function(rows){ +},onBeforeCheck:function(_88f,_890){ +},onCheck:function(_891,_892){ +},onBeforeUncheck:function(_893,_894){ +},onUncheck:function(_895,_896){ +},onCheckAll:function(rows){ +},onUncheckAll:function(rows){ +},onBeforeEdit:function(_897,_898){ +},onBeginEdit:function(_899,_89a){ +},onEndEdit:function(_89b,_89c,_89d){ +},onAfterEdit:function(_89e,_89f,_8a0){ +},onCancelEdit:function(_8a1,_8a2){ +},onHeaderContextMenu:function(e,_8a3){ +},onRowContextMenu:function(e,_8a4,_8a5){ +}}); +})(jQuery); +(function($){ +var _8a6; +$(document).unbind(".propertygrid").bind("mousedown.propertygrid",function(e){ +var p=$(e.target).closest("div.datagrid-view,div.combo-panel"); +if(p.length){ +return; +} +_8a7(_8a6); +_8a6=undefined; +}); +function _8a8(_8a9){ +var _8aa=$.data(_8a9,"propertygrid"); +var opts=$.data(_8a9,"propertygrid").options; +$(_8a9).datagrid($.extend({},opts,{cls:"propertygrid",view:(opts.showGroup?opts.groupView:opts.view),onBeforeEdit:function(_8ab,row){ +if(opts.onBeforeEdit.call(_8a9,_8ab,row)==false){ +return false; +} +var dg=$(this); +var row=dg.datagrid("getRows")[_8ab]; +var col=dg.datagrid("getColumnOption","value"); +col.editor=row.editor; +},onClickCell:function(_8ac,_8ad,_8ae){ +if(_8a6!=this){ +_8a7(_8a6); +_8a6=this; +} +if(opts.editIndex!=_8ac){ +_8a7(_8a6); +$(this).datagrid("beginEdit",_8ac); +var ed=$(this).datagrid("getEditor",{index:_8ac,field:_8ad}); +if(!ed){ +ed=$(this).datagrid("getEditor",{index:_8ac,field:"value"}); +} +if(ed){ +var t=$(ed.target); +var _8af=t.data("textbox")?t.textbox("textbox"):t; +_8af.focus(); +opts.editIndex=_8ac; +} +} +opts.onClickCell.call(_8a9,_8ac,_8ad,_8ae); +},loadFilter:function(data){ +_8a7(this); +return opts.loadFilter.call(this,data); +}})); +}; +function _8a7(_8b0){ +var t=$(_8b0); +if(!t.length){ +return; +} +var opts=$.data(_8b0,"propertygrid").options; +opts.finder.getTr(_8b0,null,"editing").each(function(){ +var _8b1=parseInt($(this).attr("datagrid-row-index")); +if(t.datagrid("validateRow",_8b1)){ +t.datagrid("endEdit",_8b1); +}else{ +t.datagrid("cancelEdit",_8b1); +} +}); +opts.editIndex=undefined; +}; +$.fn.propertygrid=function(_8b2,_8b3){ +if(typeof _8b2=="string"){ +var _8b4=$.fn.propertygrid.methods[_8b2]; +if(_8b4){ +return _8b4(this,_8b3); +}else{ +return this.datagrid(_8b2,_8b3); +} +} +_8b2=_8b2||{}; +return this.each(function(){ +var _8b5=$.data(this,"propertygrid"); +if(_8b5){ +$.extend(_8b5.options,_8b2); +}else{ +var opts=$.extend({},$.fn.propertygrid.defaults,$.fn.propertygrid.parseOptions(this),_8b2); +opts.frozenColumns=$.extend(true,[],opts.frozenColumns); +opts.columns=$.extend(true,[],opts.columns); +$.data(this,"propertygrid",{options:opts}); +} +_8a8(this); +}); +}; +$.fn.propertygrid.methods={options:function(jq){ +return $.data(jq[0],"propertygrid").options; +}}; +$.fn.propertygrid.parseOptions=function(_8b6){ +return $.extend({},$.fn.datagrid.parseOptions(_8b6),$.parser.parseOptions(_8b6,[{showGroup:"boolean"}])); +}; +var _8b7=$.extend({},$.fn.datagrid.defaults.view,{render:function(_8b8,_8b9,_8ba){ +var _8bb=[]; +var _8bc=this.groups; +for(var i=0;i<_8bc.length;i++){ +_8bb.push(this.renderGroup.call(this,_8b8,i,_8bc[i],_8ba)); +} +$(_8b9).html(_8bb.join("")); +},renderGroup:function(_8bd,_8be,_8bf,_8c0){ +var _8c1=$.data(_8bd,"datagrid"); +var opts=_8c1.options; +var _8c2=$(_8bd).datagrid("getColumnFields",_8c0); +var _8c3=[]; +_8c3.push("
        "); +if((_8c0&&(opts.rownumbers||opts.frozenColumns.length))||(!_8c0&&!(opts.rownumbers||opts.frozenColumns.length))){ +_8c3.push(""); +_8c3.push(" "); +_8c3.push(""); +} +if(!_8c0){ +_8c3.push(""); +_8c3.push(opts.groupFormatter.call(_8bd,_8bf.value,_8bf.rows)); +_8c3.push(""); +} +_8c3.push("
        "); +_8c3.push(""); +var _8c4=_8bf.startIndex; +for(var j=0;j<_8bf.rows.length;j++){ +var css=opts.rowStyler?opts.rowStyler.call(_8bd,_8c4,_8bf.rows[j]):""; +var _8c5=""; +var _8c6=""; +if(typeof css=="string"){ +_8c6=css; +}else{ +if(css){ +_8c5=css["class"]||""; +_8c6=css["style"]||""; +} +} +var cls="class=\"datagrid-row "+(_8c4%2&&opts.striped?"datagrid-row-alt ":" ")+_8c5+"\""; +var _8c7=_8c6?"style=\""+_8c6+"\"":""; +var _8c8=_8c1.rowIdPrefix+"-"+(_8c0?1:2)+"-"+_8c4; +_8c3.push(""); +_8c3.push(this.renderRow.call(this,_8bd,_8c2,_8c0,_8c4,_8bf.rows[j])); +_8c3.push(""); +_8c4++; +} +_8c3.push("
        "); +return _8c3.join(""); +},bindEvents:function(_8c9){ +var _8ca=$.data(_8c9,"datagrid"); +var dc=_8ca.dc; +var body=dc.body1.add(dc.body2); +var _8cb=($.data(body[0],"events")||$._data(body[0],"events")).click[0].handler; +body.unbind("click").bind("click",function(e){ +var tt=$(e.target); +var _8cc=tt.closest("span.datagrid-row-expander"); +if(_8cc.length){ +var _8cd=_8cc.closest("div.datagrid-group").attr("group-index"); +if(_8cc.hasClass("datagrid-row-collapse")){ +$(_8c9).datagrid("collapseGroup",_8cd); +}else{ +$(_8c9).datagrid("expandGroup",_8cd); +} +}else{ +_8cb(e); +} +e.stopPropagation(); +}); +},onBeforeRender:function(_8ce,rows){ +var _8cf=$.data(_8ce,"datagrid"); +var opts=_8cf.options; +_8d0(); +var _8d1=[]; +for(var i=0;i"+".datagrid-group{height:"+opts.groupHeight+"px;overflow:hidden;font-weight:bold;border-bottom:1px solid #ccc;}"+".datagrid-group-title,.datagrid-group-expander{display:inline-block;vertical-align:bottom;height:100%;line-height:"+opts.groupHeight+"px;padding:0 4px;}"+".datagrid-group-expander{width:"+opts.expanderWidth+"px;text-align:center;padding:0}"+".datagrid-row-expander{margin:"+Math.floor((opts.groupHeight-16)/2)+"px 0;display:inline-block;width:16px;height:16px;cursor:pointer}"+""); +} +}; +}}); +$.extend($.fn.datagrid.methods,{groups:function(jq){ +return jq.datagrid("options").view.groups; +},expandGroup:function(jq,_8d8){ +return jq.each(function(){ +var view=$.data(this,"datagrid").dc.view; +var _8d9=view.find(_8d8!=undefined?"div.datagrid-group[group-index=\""+_8d8+"\"]":"div.datagrid-group"); +var _8da=_8d9.find("span.datagrid-row-expander"); +if(_8da.hasClass("datagrid-row-expand")){ +_8da.removeClass("datagrid-row-expand").addClass("datagrid-row-collapse"); +_8d9.next("table").show(); +} +$(this).datagrid("fixRowHeight"); +}); +},collapseGroup:function(jq,_8db){ +return jq.each(function(){ +var view=$.data(this,"datagrid").dc.view; +var _8dc=view.find(_8db!=undefined?"div.datagrid-group[group-index=\""+_8db+"\"]":"div.datagrid-group"); +var _8dd=_8dc.find("span.datagrid-row-expander"); +if(_8dd.hasClass("datagrid-row-collapse")){ +_8dd.removeClass("datagrid-row-collapse").addClass("datagrid-row-expand"); +_8dc.next("table").hide(); +} +$(this).datagrid("fixRowHeight"); +}); +}}); +$.extend(_8b7,{refreshGroupTitle:function(_8de,_8df){ +var _8e0=$.data(_8de,"datagrid"); +var opts=_8e0.options; +var dc=_8e0.dc; +var _8e1=this.groups[_8df]; +var span=dc.body2.children("div.datagrid-group[group-index="+_8df+"]").find("span.datagrid-group-title"); +span.html(opts.groupFormatter.call(_8de,_8e1.value,_8e1.rows)); +},insertRow:function(_8e2,_8e3,row){ +var _8e4=$.data(_8e2,"datagrid"); +var opts=_8e4.options; +var dc=_8e4.dc; +var _8e5=null; +var _8e6; +if(!_8e4.data.rows.length){ +$(_8e2).datagrid("loadData",[row]); +return; +} +for(var i=0;i_8e5.startIndex+_8e5.rows.length){ +_8e3=_8e5.startIndex+_8e5.rows.length; +} +} +$.fn.datagrid.defaults.view.insertRow.call(this,_8e2,_8e3,row); +if(_8e3>=_8e5.startIndex+_8e5.rows.length){ +_8e7(_8e3,true); +_8e7(_8e3,false); +} +_8e5.rows.splice(_8e3-_8e5.startIndex,0,row); +}else{ +_8e5={value:row[opts.groupField],rows:[row],startIndex:_8e4.data.rows.length}; +_8e6=this.groups.length; +dc.body1.append(this.renderGroup.call(this,_8e2,_8e6,_8e5,true)); +dc.body2.append(this.renderGroup.call(this,_8e2,_8e6,_8e5,false)); +this.groups.push(_8e5); +_8e4.data.rows.push(row); +} +this.refreshGroupTitle(_8e2,_8e6); +function _8e7(_8e8,_8e9){ +var _8ea=_8e9?1:2; +var _8eb=opts.finder.getTr(_8e2,_8e8-1,"body",_8ea); +var tr=opts.finder.getTr(_8e2,_8e8,"body",_8ea); +tr.insertAfter(_8eb); +}; +},updateRow:function(_8ec,_8ed,row){ +var opts=$.data(_8ec,"datagrid").options; +$.fn.datagrid.defaults.view.updateRow.call(this,_8ec,_8ed,row); +var tb=opts.finder.getTr(_8ec,_8ed,"body",2).closest("table.datagrid-btable"); +var _8ee=parseInt(tb.prev().attr("group-index")); +this.refreshGroupTitle(_8ec,_8ee); +},deleteRow:function(_8ef,_8f0){ +var _8f1=$.data(_8ef,"datagrid"); +var opts=_8f1.options; +var dc=_8f1.dc; +var body=dc.body1.add(dc.body2); +var tb=opts.finder.getTr(_8ef,_8f0,"body",2).closest("table.datagrid-btable"); +var _8f2=parseInt(tb.prev().attr("group-index")); +$.fn.datagrid.defaults.view.deleteRow.call(this,_8ef,_8f0); +var _8f3=this.groups[_8f2]; +if(_8f3.rows.length>1){ +_8f3.rows.splice(_8f0-_8f3.startIndex,1); +this.refreshGroupTitle(_8ef,_8f2); +}else{ +body.children("div.datagrid-group[group-index="+_8f2+"]").remove(); +for(var i=_8f2+1;i").insertBefore(tr.find(".tree-title")); +} +if(row.checkState=="checked"){ +_917(_92b,_92c,true,true); +}else{ +if(row.checkState=="unchecked"){ +_917(_92b,_92c,false,true); +}else{ +var flag=_929(row); +if(flag===0){ +_917(_92b,_92c,false,true); +}else{ +if(flag===1){ +_917(_92b,_92c,true,true); +} +} +} +} +}else{ +ck.remove(); +row.checkState=undefined; +row.checked=undefined; +_920(_92b,row); +} +}; +function _92d(_92e,_92f){ +var opts=$.data(_92e,"treegrid").options; +var tr1=opts.finder.getTr(_92e,_92f,"body",1); +var tr2=opts.finder.getTr(_92e,_92f,"body",2); +var _930=$(_92e).datagrid("getColumnFields",true).length+(opts.rownumbers?1:0); +var _931=$(_92e).datagrid("getColumnFields",false).length; +_932(tr1,_930); +_932(tr2,_931); +function _932(tr,_933){ +$(""+""+"
        "+""+"").insertAfter(tr); +}; +}; +function _934(_935,_936,data,_937,_938){ +var _939=$.data(_935,"treegrid"); +var opts=_939.options; +var dc=_939.dc; +data=opts.loadFilter.call(_935,data,_936); +var node=find(_935,_936); +if(node){ +var _93a=opts.finder.getTr(_935,_936,"body",1); +var _93b=opts.finder.getTr(_935,_936,"body",2); +var cc1=_93a.next("tr.treegrid-tr-tree").children("td").children("div"); +var cc2=_93b.next("tr.treegrid-tr-tree").children("td").children("div"); +if(!_937){ +node.children=[]; +} +}else{ +var cc1=dc.body1; +var cc2=dc.body2; +if(!_937){ +_939.data=[]; +} +} +if(!_937){ +cc1.empty(); +cc2.empty(); +} +if(opts.view.onBeforeRender){ +opts.view.onBeforeRender.call(opts.view,_935,_936,data); +} +opts.view.render.call(opts.view,_935,cc1,true); +opts.view.render.call(opts.view,_935,cc2,false); +if(opts.showFooter){ +opts.view.renderFooter.call(opts.view,_935,dc.footer1,true); +opts.view.renderFooter.call(opts.view,_935,dc.footer2,false); +} +if(opts.view.onAfterRender){ +opts.view.onAfterRender.call(opts.view,_935); +} +if(!_936&&opts.pagination){ +var _93c=$.data(_935,"treegrid").total; +var _93d=$(_935).datagrid("getPager"); +if(_93d.pagination("options").total!=_93c){ +_93d.pagination({total:_93c}); +} +} +_906(_935); +_90e(_935); +$(_935).treegrid("showLines"); +$(_935).treegrid("setSelectionState"); +$(_935).treegrid("autoSizeColumn"); +if(!_938){ +opts.onLoadSuccess.call(_935,node,data); +} +}; +function _905(_93e,_93f,_940,_941,_942){ +var opts=$.data(_93e,"treegrid").options; +var body=$(_93e).datagrid("getPanel").find("div.datagrid-body"); +if(_93f==undefined&&opts.queryParams){ +opts.queryParams.id=undefined; +} +if(_940){ +opts.queryParams=_940; +} +var _943=$.extend({},opts.queryParams); +if(opts.pagination){ +$.extend(_943,{page:opts.pageNumber,rows:opts.pageSize}); +} +if(opts.sortName){ +$.extend(_943,{sort:opts.sortName,order:opts.sortOrder}); +} +var row=find(_93e,_93f); +if(opts.onBeforeLoad.call(_93e,row,_943)==false){ +return; +} +var _944=body.find("tr[node-id=\""+_93f+"\"] span.tree-folder"); +_944.addClass("tree-loading"); +$(_93e).treegrid("loading"); +var _945=opts.loader.call(_93e,_943,function(data){ +_944.removeClass("tree-loading"); +$(_93e).treegrid("loaded"); +_934(_93e,_93f,data,_941); +if(_942){ +_942(); +} +},function(){ +_944.removeClass("tree-loading"); +$(_93e).treegrid("loaded"); +opts.onLoadError.apply(_93e,arguments); +if(_942){ +_942(); +} +}); +if(_945==false){ +_944.removeClass("tree-loading"); +$(_93e).treegrid("loaded"); +} +}; +function _946(_947){ +var _948=_949(_947); +return _948.length?_948[0]:null; +}; +function _949(_94a){ +return $.data(_94a,"treegrid").data; +}; +function _928(_94b,_94c){ +var row=find(_94b,_94c); +if(row._parentId){ +return find(_94b,row._parentId); +}else{ +return null; +} +}; +function _90a(_94d,_94e){ +var data=$.data(_94d,"treegrid").data; +if(_94e){ +var _94f=find(_94d,_94e); +data=_94f?(_94f.children||[]):[]; +} +var _950=[]; +$.easyui.forEach(data,true,function(node){ +_950.push(node); +}); +return _950; +}; +function _951(_952,_953){ +var opts=$.data(_952,"treegrid").options; +var tr=opts.finder.getTr(_952,_953); +var node=tr.children("td[field=\""+opts.treeField+"\"]"); +return node.find("span.tree-indent,span.tree-hit").length; +}; +function find(_954,_955){ +var _956=$.data(_954,"treegrid"); +var opts=_956.options; +var _957=null; +$.easyui.forEach(_956.data,true,function(node){ +if(node[opts.idField]==_955){ +_957=node; +return false; +} +}); +return _957; +}; +function _958(_959,_95a){ +var opts=$.data(_959,"treegrid").options; +var row=find(_959,_95a); +var tr=opts.finder.getTr(_959,_95a); +var hit=tr.find("span.tree-hit"); +if(hit.length==0){ +return; +} +if(hit.hasClass("tree-collapsed")){ +return; +} +if(opts.onBeforeCollapse.call(_959,row)==false){ +return; +} +hit.removeClass("tree-expanded tree-expanded-hover").addClass("tree-collapsed"); +hit.next().removeClass("tree-folder-open"); +row.state="closed"; +tr=tr.next("tr.treegrid-tr-tree"); +var cc=tr.children("td").children("div"); +if(opts.animate){ +cc.slideUp("normal",function(){ +$(_959).treegrid("autoSizeColumn"); +_906(_959,_95a); +opts.onCollapse.call(_959,row); +}); +}else{ +cc.hide(); +$(_959).treegrid("autoSizeColumn"); +_906(_959,_95a); +opts.onCollapse.call(_959,row); +} +}; +function _95b(_95c,_95d){ +var opts=$.data(_95c,"treegrid").options; +var tr=opts.finder.getTr(_95c,_95d); +var hit=tr.find("span.tree-hit"); +var row=find(_95c,_95d); +if(hit.length==0){ +return; +} +if(hit.hasClass("tree-expanded")){ +return; +} +if(opts.onBeforeExpand.call(_95c,row)==false){ +return; +} +hit.removeClass("tree-collapsed tree-collapsed-hover").addClass("tree-expanded"); +hit.next().addClass("tree-folder-open"); +var _95e=tr.next("tr.treegrid-tr-tree"); +if(_95e.length){ +var cc=_95e.children("td").children("div"); +_95f(cc); +}else{ +_92d(_95c,row[opts.idField]); +var _95e=tr.next("tr.treegrid-tr-tree"); +var cc=_95e.children("td").children("div"); +cc.hide(); +var _960=$.extend({},opts.queryParams||{}); +_960.id=row[opts.idField]; +_905(_95c,row[opts.idField],_960,true,function(){ +if(cc.is(":empty")){ +_95e.remove(); +}else{ +_95f(cc); +} +}); +} +function _95f(cc){ +row.state="open"; +if(opts.animate){ +cc.slideDown("normal",function(){ +$(_95c).treegrid("autoSizeColumn"); +_906(_95c,_95d); +opts.onExpand.call(_95c,row); +}); +}else{ +cc.show(); +$(_95c).treegrid("autoSizeColumn"); +_906(_95c,_95d); +opts.onExpand.call(_95c,row); +} +}; +}; +function _916(_961,_962){ +var opts=$.data(_961,"treegrid").options; +var tr=opts.finder.getTr(_961,_962); +var hit=tr.find("span.tree-hit"); +if(hit.hasClass("tree-expanded")){ +_958(_961,_962); +}else{ +_95b(_961,_962); +} +}; +function _963(_964,_965){ +var opts=$.data(_964,"treegrid").options; +var _966=_90a(_964,_965); +if(_965){ +_966.unshift(find(_964,_965)); +} +for(var i=0;i<_966.length;i++){ +_958(_964,_966[i][opts.idField]); +} +}; +function _967(_968,_969){ +var opts=$.data(_968,"treegrid").options; +var _96a=_90a(_968,_969); +if(_969){ +_96a.unshift(find(_968,_969)); +} +for(var i=0;i<_96a.length;i++){ +_95b(_968,_96a[i][opts.idField]); +} +}; +function _96b(_96c,_96d){ +var opts=$.data(_96c,"treegrid").options; +var ids=[]; +var p=_928(_96c,_96d); +while(p){ +var id=p[opts.idField]; +ids.unshift(id); +p=_928(_96c,id); +} +for(var i=0;i").insertBefore(_972); +if(hit.prev().length){ +hit.prev().remove(); +} +} +} +_934(_96f,_970.parent,_970.data,_971.data.length>0,true); +}; +function _973(_974,_975){ +var ref=_975.before||_975.after; +var opts=$.data(_974,"treegrid").options; +var _976=_928(_974,ref); +_96e(_974,{parent:(_976?_976[opts.idField]:null),data:[_975.data]}); +var _977=_976?_976.children:$(_974).treegrid("getRoots"); +for(var i=0;i<_977.length;i++){ +if(_977[i][opts.idField]==ref){ +var _978=_977[_977.length-1]; +_977.splice(_975.before?i:(i+1),0,_978); +_977.splice(_977.length-1,1); +break; +} +} +_979(true); +_979(false); +_90e(_974); +$(_974).treegrid("showLines"); +function _979(_97a){ +var _97b=_97a?1:2; +var tr=opts.finder.getTr(_974,_975.data[opts.idField],"body",_97b); +var _97c=tr.closest("table.datagrid-btable"); +tr=tr.parent().children(); +var dest=opts.finder.getTr(_974,ref,"body",_97b); +if(_975.before){ +tr.insertBefore(dest); +}else{ +var sub=dest.next("tr.treegrid-tr-tree"); +tr.insertAfter(sub.length?sub:dest); +} +_97c.remove(); +}; +}; +function _97d(_97e,_97f){ +var _980=$.data(_97e,"treegrid"); +var opts=_980.options; +var prow=_928(_97e,_97f); +$(_97e).datagrid("deleteRow",_97f); +$.easyui.removeArrayItem(_980.checkedRows,opts.idField,_97f); +_90e(_97e); +if(prow){ +_92a(_97e,prow[opts.idField]); +} +_980.total-=1; +$(_97e).datagrid("getPager").pagination("refresh",{total:_980.total}); +$(_97e).treegrid("showLines"); +}; +function _981(_982){ +var t=$(_982); +var opts=t.treegrid("options"); +if(opts.lines){ +t.treegrid("getPanel").addClass("tree-lines"); +}else{ +t.treegrid("getPanel").removeClass("tree-lines"); +return; +} +t.treegrid("getPanel").find("span.tree-indent").removeClass("tree-line tree-join tree-joinbottom"); +t.treegrid("getPanel").find("div.datagrid-cell").removeClass("tree-node-last tree-root-first tree-root-one"); +var _983=t.treegrid("getRoots"); +if(_983.length>1){ +_984(_983[0]).addClass("tree-root-first"); +}else{ +if(_983.length==1){ +_984(_983[0]).addClass("tree-root-one"); +} +} +_985(_983); +_986(_983); +function _985(_987){ +$.map(_987,function(node){ +if(node.children&&node.children.length){ +_985(node.children); +}else{ +var cell=_984(node); +cell.find(".tree-icon").prev().addClass("tree-join"); +} +}); +if(_987.length){ +var cell=_984(_987[_987.length-1]); +cell.addClass("tree-node-last"); +cell.find(".tree-join").removeClass("tree-join").addClass("tree-joinbottom"); +} +}; +function _986(_988){ +$.map(_988,function(node){ +if(node.children&&node.children.length){ +_986(node.children); +} +}); +for(var i=0;i<_988.length-1;i++){ +var node=_988[i]; +var _989=t.treegrid("getLevel",node[opts.idField]); +var tr=opts.finder.getTr(_982,node[opts.idField]); +var cc=tr.next().find("tr.datagrid-row td[field=\""+opts.treeField+"\"] div.datagrid-cell"); +cc.find("span:eq("+(_989-1)+")").addClass("tree-line"); +} +}; +function _984(node){ +var tr=opts.finder.getTr(_982,node[opts.idField]); +var cell=tr.find("td[field=\""+opts.treeField+"\"] div.datagrid-cell"); +return cell; +}; +}; +$.fn.treegrid=function(_98a,_98b){ +if(typeof _98a=="string"){ +var _98c=$.fn.treegrid.methods[_98a]; +if(_98c){ +return _98c(this,_98b); +}else{ +return this.datagrid(_98a,_98b); +} +} +_98a=_98a||{}; +return this.each(function(){ +var _98d=$.data(this,"treegrid"); +if(_98d){ +$.extend(_98d.options,_98a); +}else{ +_98d=$.data(this,"treegrid",{options:$.extend({},$.fn.treegrid.defaults,$.fn.treegrid.parseOptions(this),_98a),data:[],checkedRows:[],tmpIds:[]}); +} +_8f5(this); +if(_98d.options.data){ +$(this).treegrid("loadData",_98d.options.data); +} +_905(this); +}); +}; +$.fn.treegrid.methods={options:function(jq){ +return $.data(jq[0],"treegrid").options; +},resize:function(jq,_98e){ +return jq.each(function(){ +$(this).datagrid("resize",_98e); +}); +},fixRowHeight:function(jq,_98f){ +return jq.each(function(){ +_906(this,_98f); +}); +},loadData:function(jq,data){ +return jq.each(function(){ +_934(this,data.parent,data); +}); +},load:function(jq,_990){ +return jq.each(function(){ +$(this).treegrid("options").pageNumber=1; +$(this).treegrid("getPager").pagination({pageNumber:1}); +$(this).treegrid("reload",_990); +}); +},reload:function(jq,id){ +return jq.each(function(){ +var opts=$(this).treegrid("options"); +var _991={}; +if(typeof id=="object"){ +_991=id; +}else{ +_991=$.extend({},opts.queryParams); +_991.id=id; +} +if(_991.id){ +var node=$(this).treegrid("find",_991.id); +if(node.children){ +node.children.splice(0,node.children.length); +} +opts.queryParams=_991; +var tr=opts.finder.getTr(this,_991.id); +tr.next("tr.treegrid-tr-tree").remove(); +tr.find("span.tree-hit").removeClass("tree-expanded tree-expanded-hover").addClass("tree-collapsed"); +_95b(this,_991.id); +}else{ +_905(this,null,_991); +} +}); +},reloadFooter:function(jq,_992){ +return jq.each(function(){ +var opts=$.data(this,"treegrid").options; +var dc=$.data(this,"datagrid").dc; +if(_992){ +$.data(this,"treegrid").footer=_992; +} +if(opts.showFooter){ +opts.view.renderFooter.call(opts.view,this,dc.footer1,true); +opts.view.renderFooter.call(opts.view,this,dc.footer2,false); +if(opts.view.onAfterRender){ +opts.view.onAfterRender.call(opts.view,this); +} +$(this).treegrid("fixRowHeight"); +} +}); +},getData:function(jq){ +return $.data(jq[0],"treegrid").data; +},getFooterRows:function(jq){ +return $.data(jq[0],"treegrid").footer; +},getRoot:function(jq){ +return _946(jq[0]); +},getRoots:function(jq){ +return _949(jq[0]); +},getParent:function(jq,id){ +return _928(jq[0],id); +},getChildren:function(jq,id){ +return _90a(jq[0],id); +},getLevel:function(jq,id){ +return _951(jq[0],id); +},find:function(jq,id){ +return find(jq[0],id); +},isLeaf:function(jq,id){ +var opts=$.data(jq[0],"treegrid").options; +var tr=opts.finder.getTr(jq[0],id); +var hit=tr.find("span.tree-hit"); +return hit.length==0; +},select:function(jq,id){ +return jq.each(function(){ +$(this).datagrid("selectRow",id); +}); +},unselect:function(jq,id){ +return jq.each(function(){ +$(this).datagrid("unselectRow",id); +}); +},collapse:function(jq,id){ +return jq.each(function(){ +_958(this,id); +}); +},expand:function(jq,id){ +return jq.each(function(){ +_95b(this,id); +}); +},toggle:function(jq,id){ +return jq.each(function(){ +_916(this,id); +}); +},collapseAll:function(jq,id){ +return jq.each(function(){ +_963(this,id); +}); +},expandAll:function(jq,id){ +return jq.each(function(){ +_967(this,id); +}); +},expandTo:function(jq,id){ +return jq.each(function(){ +_96b(this,id); +}); +},append:function(jq,_993){ +return jq.each(function(){ +_96e(this,_993); +}); +},insert:function(jq,_994){ +return jq.each(function(){ +_973(this,_994); +}); +},remove:function(jq,id){ +return jq.each(function(){ +_97d(this,id); +}); +},pop:function(jq,id){ +var row=jq.treegrid("find",id); +jq.treegrid("remove",id); +return row; +},refresh:function(jq,id){ +return jq.each(function(){ +var opts=$.data(this,"treegrid").options; +opts.view.refreshRow.call(opts.view,this,id); +}); +},update:function(jq,_995){ +return jq.each(function(){ +var opts=$.data(this,"treegrid").options; +var row=_995.row; +opts.view.updateRow.call(opts.view,this,_995.id,row); +if(row.checked!=undefined){ +row=find(this,_995.id); +$.extend(row,{checkState:row.checked?"checked":(row.checked===false?"unchecked":undefined)}); +_92a(this,_995.id); +} +}); +},beginEdit:function(jq,id){ +return jq.each(function(){ +$(this).datagrid("beginEdit",id); +$(this).treegrid("fixRowHeight",id); +}); +},endEdit:function(jq,id){ +return jq.each(function(){ +$(this).datagrid("endEdit",id); +}); +},cancelEdit:function(jq,id){ +return jq.each(function(){ +$(this).datagrid("cancelEdit",id); +}); +},showLines:function(jq){ +return jq.each(function(){ +_981(this); +}); +},setSelectionState:function(jq){ +return jq.each(function(){ +$(this).datagrid("setSelectionState"); +var _996=$(this).data("treegrid"); +for(var i=0;i<_996.tmpIds.length;i++){ +_917(this,_996.tmpIds[i],true,true); +} +_996.tmpIds=[]; +}); +},getCheckedNodes:function(jq,_997){ +_997=_997||"checked"; +var rows=[]; +$.easyui.forEach(jq.data("treegrid").checkedRows,false,function(row){ +if(row.checkState==_997){ +rows.push(row); +} +}); +return rows; +},checkNode:function(jq,id){ +return jq.each(function(){ +_917(this,id,true); +}); +},uncheckNode:function(jq,id){ +return jq.each(function(){ +_917(this,id,false); +}); +},clearChecked:function(jq){ +return jq.each(function(){ +var _998=this; +var opts=$(_998).treegrid("options"); +$(_998).datagrid("clearChecked"); +$.map($(_998).treegrid("getCheckedNodes"),function(row){ +_917(_998,row[opts.idField],false,true); +}); +}); +}}; +$.fn.treegrid.parseOptions=function(_999){ +return $.extend({},$.fn.datagrid.parseOptions(_999),$.parser.parseOptions(_999,["treeField",{checkbox:"boolean",cascadeCheck:"boolean",onlyLeafCheck:"boolean"},{animate:"boolean"}])); +}; +var _99a=$.extend({},$.fn.datagrid.defaults.view,{render:function(_99b,_99c,_99d){ +var opts=$.data(_99b,"treegrid").options; +var _99e=$(_99b).datagrid("getColumnFields",_99d); +var _99f=$.data(_99b,"datagrid").rowIdPrefix; +if(_99d){ +if(!(opts.rownumbers||(opts.frozenColumns&&opts.frozenColumns.length))){ +return; +} +} +var view=this; +if(this.treeNodes&&this.treeNodes.length){ +var _9a0=_9a1.call(this,_99d,this.treeLevel,this.treeNodes); +$(_99c).append(_9a0.join("")); +} +function _9a1(_9a2,_9a3,_9a4){ +var _9a5=$(_99b).treegrid("getParent",_9a4[0][opts.idField]); +var _9a6=(_9a5?_9a5.children.length:$(_99b).treegrid("getRoots").length)-_9a4.length; +var _9a7=[""]; +for(var i=0;i<_9a4.length;i++){ +var row=_9a4[i]; +if(row.state!="open"&&row.state!="closed"){ +row.state="open"; +} +var css=opts.rowStyler?opts.rowStyler.call(_99b,row):""; +var cs=this.getStyleValue(css); +var cls="class=\"datagrid-row "+(_9a6++%2&&opts.striped?"datagrid-row-alt ":" ")+cs.c+"\""; +var _9a8=cs.s?"style=\""+cs.s+"\"":""; +var _9a9=_99f+"-"+(_9a2?1:2)+"-"+row[opts.idField]; +_9a7.push(""); +_9a7=_9a7.concat(view.renderRow.call(view,_99b,_99e,_9a2,_9a3,row)); +_9a7.push(""); +if(row.children&&row.children.length){ +var tt=_9a1.call(this,_9a2,_9a3+1,row.children); +var v=row.state=="closed"?"none":"block"; +_9a7.push(""); +} +} +_9a7.push("
        "); +_9a7=_9a7.concat(tt); +_9a7.push("
        "); +return _9a7; +}; +},renderFooter:function(_9aa,_9ab,_9ac){ +var opts=$.data(_9aa,"treegrid").options; +var rows=$.data(_9aa,"treegrid").footer||[]; +var _9ad=$(_9aa).datagrid("getColumnFields",_9ac); +var _9ae=[""]; +for(var i=0;i"); +_9ae.push(this.renderRow.call(this,_9aa,_9ad,_9ac,0,row)); +_9ae.push(""); +} +_9ae.push("
        "); +$(_9ab).html(_9ae.join("")); +},renderRow:function(_9af,_9b0,_9b1,_9b2,row){ +var _9b3=$.data(_9af,"treegrid"); +var opts=_9b3.options; +var cc=[]; +if(_9b1&&opts.rownumbers){ +cc.push("
        0
        "); +} +for(var i=0;i<_9b0.length;i++){ +var _9b4=_9b0[i]; +var col=$(_9af).datagrid("getColumnOption",_9b4); +if(col){ +var css=col.styler?(col.styler(row[_9b4],row)||""):""; +var cs=this.getStyleValue(css); +var cls=cs.c?"class=\""+cs.c+"\"":""; +var _9b5=col.hidden?"style=\"display:none;"+cs.s+"\"":(cs.s?"style=\""+cs.s+"\"":""); +cc.push(""); +var _9b5=""; +if(!col.checkbox){ +if(col.align){ +_9b5+="text-align:"+col.align+";"; +} +if(!opts.nowrap){ +_9b5+="white-space:normal;height:auto;"; +}else{ +if(opts.autoRowHeight){ +_9b5+="height:auto;"; +} +} +} +cc.push("
        "); +if(col.checkbox){ +if(row.checked){ +cc.push(""); +}else{ +var val=null; +if(col.formatter){ +val=col.formatter(row[_9b4],row); +}else{ +val=row[_9b4]; +} +if(_9b4==opts.treeField){ +for(var j=0;j<_9b2;j++){ +cc.push(""); +} +if(row.state=="closed"){ +cc.push(""); +cc.push(""); +}else{ +if(row.children&&row.children.length){ +cc.push(""); +cc.push(""); +}else{ +cc.push(""); +cc.push(""); +} +} +if(this.hasCheckbox(_9af,row)){ +var flag=0; +var crow=$.easyui.getArrayItem(_9b3.checkedRows,opts.idField,row[opts.idField]); +if(crow){ +flag=crow.checkState=="checked"?1:2; +row.checkState=crow.checkState; +row.checked=crow.checked; +$.easyui.addArrayItem(_9b3.checkedRows,opts.idField,row); +}else{ +var prow=$.easyui.getArrayItem(_9b3.checkedRows,opts.idField,row._parentId); +if(prow&&prow.checkState=="checked"&&opts.cascadeCheck){ +flag=1; +row.checked=true; +$.easyui.addArrayItem(_9b3.checkedRows,opts.idField,row); +}else{ +if(row.checked){ +$.easyui.addArrayItem(_9b3.tmpIds,row[opts.idField]); +} +} +row.checkState=flag?"checked":"unchecked"; +} +cc.push(""); +}else{ +row.checkState=undefined; +row.checked=undefined; +} +cc.push(""+val+""); +}else{ +cc.push(val); +} +} +cc.push("
        "); +cc.push(""); +} +} +return cc.join(""); +},hasCheckbox:function(_9b6,row){ +var opts=$.data(_9b6,"treegrid").options; +if(opts.checkbox){ +if($.isFunction(opts.checkbox)){ +if(opts.checkbox.call(_9b6,row)){ +return true; +}else{ +return false; +} +}else{ +if(opts.onlyLeafCheck){ +if(row.state=="open"&&!(row.children&&row.children.length)){ +return true; +} +}else{ +return true; +} +} +} +return false; +},refreshRow:function(_9b7,id){ +this.updateRow.call(this,_9b7,id,{}); +},updateRow:function(_9b8,id,row){ +var opts=$.data(_9b8,"treegrid").options; +var _9b9=$(_9b8).treegrid("find",id); +$.extend(_9b9,row); +var _9ba=$(_9b8).treegrid("getLevel",id)-1; +var _9bb=opts.rowStyler?opts.rowStyler.call(_9b8,_9b9):""; +var _9bc=$.data(_9b8,"datagrid").rowIdPrefix; +var _9bd=_9b9[opts.idField]; +function _9be(_9bf){ +var _9c0=$(_9b8).treegrid("getColumnFields",_9bf); +var tr=opts.finder.getTr(_9b8,id,"body",(_9bf?1:2)); +var _9c1=tr.find("div.datagrid-cell-rownumber").html(); +var _9c2=tr.find("div.datagrid-cell-check input[type=checkbox]").is(":checked"); +tr.html(this.renderRow(_9b8,_9c0,_9bf,_9ba,_9b9)); +tr.attr("style",_9bb||""); +tr.find("div.datagrid-cell-rownumber").html(_9c1); +if(_9c2){ +tr.find("div.datagrid-cell-check input[type=checkbox]")._propAttr("checked",true); +} +if(_9bd!=id){ +tr.attr("id",_9bc+"-"+(_9bf?1:2)+"-"+_9bd); +tr.attr("node-id",_9bd); +} +}; +_9be.call(this,true); +_9be.call(this,false); +$(_9b8).treegrid("fixRowHeight",id); +},deleteRow:function(_9c3,id){ +var opts=$.data(_9c3,"treegrid").options; +var tr=opts.finder.getTr(_9c3,id); +tr.next("tr.treegrid-tr-tree").remove(); +tr.remove(); +var _9c4=del(id); +if(_9c4){ +if(_9c4.children.length==0){ +tr=opts.finder.getTr(_9c3,_9c4[opts.idField]); +tr.next("tr.treegrid-tr-tree").remove(); +var cell=tr.children("td[field=\""+opts.treeField+"\"]").children("div.datagrid-cell"); +cell.find(".tree-icon").removeClass("tree-folder").addClass("tree-file"); +cell.find(".tree-hit").remove(); +$("").prependTo(cell); +} +} +this.setEmptyMsg(_9c3); +function del(id){ +var cc; +var _9c5=$(_9c3).treegrid("getParent",id); +if(_9c5){ +cc=_9c5.children; +}else{ +cc=$(_9c3).treegrid("getData"); +} +for(var i=0;ib?1:-1); +}; +r=_9d0(r1[sn],r2[sn])*(so=="asc"?1:-1); +if(r!=0){ +return r; +} +} +return r; +}); +for(var i=0;i"); +if(!_9f3){ +_9f6.push(""); +_9f6.push(opts.groupFormatter.call(_9f0,_9f2.value,_9f2.rows)); +_9f6.push(""); +} +_9f6.push("
        "); +_9f6.push(this.renderTable(_9f0,_9f2.startIndex,_9f2.rows,_9f3)); +return _9f6.join(""); +},groupRows:function(_9f7,rows){ +var _9f8=$.data(_9f7,"datagrid"); +var opts=_9f8.options; +var _9f9=[]; +for(var i=0;idiv.combo-p>div.combo-panel:visible").panel("close"); +}); +}); +function _a09(_a0a){ +var _a0b=$.data(_a0a,"combo"); +var opts=_a0b.options; +if(!_a0b.panel){ +_a0b.panel=$("
        ").appendTo("body"); +_a0b.panel.panel({minWidth:opts.panelMinWidth,maxWidth:opts.panelMaxWidth,minHeight:opts.panelMinHeight,maxHeight:opts.panelMaxHeight,doSize:false,closed:true,cls:"combo-p",style:{position:"absolute",zIndex:10},onOpen:function(){ +var _a0c=$(this).panel("options").comboTarget; +var _a0d=$.data(_a0c,"combo"); +if(_a0d){ +_a0d.options.onShowPanel.call(_a0c); +} +},onBeforeClose:function(){ +_a08($(this).parent()); +},onClose:function(){ +var _a0e=$(this).panel("options").comboTarget; +var _a0f=$(_a0e).data("combo"); +if(_a0f){ +_a0f.options.onHidePanel.call(_a0e); +} +}}); +} +var _a10=$.extend(true,[],opts.icons); +if(opts.hasDownArrow){ +_a10.push({iconCls:"combo-arrow",handler:function(e){ +_a14(e.data.target); +}}); +} +$(_a0a).addClass("combo-f").textbox($.extend({},opts,{icons:_a10,onChange:function(){ +}})); +$(_a0a).attr("comboName",$(_a0a).attr("textboxName")); +_a0b.combo=$(_a0a).next(); +_a0b.combo.addClass("combo"); +}; +function _a11(_a12){ +var _a13=$.data(_a12,"combo"); +var opts=_a13.options; +var p=_a13.panel; +if(p.is(":visible")){ +p.panel("close"); +} +if(!opts.cloned){ +p.panel("destroy"); +} +$(_a12).textbox("destroy"); +}; +function _a14(_a15){ +var _a16=$.data(_a15,"combo").panel; +if(_a16.is(":visible")){ +var _a17=_a16.combo("combo"); +_a18(_a17); +if(_a17!=_a15){ +$(_a15).combo("showPanel"); +} +}else{ +var p=$(_a15).closest("div.combo-p").children(".combo-panel"); +$("div.combo-panel:visible").not(_a16).not(p).panel("close"); +$(_a15).combo("showPanel"); +} +$(_a15).combo("textbox").focus(); +}; +function _a08(_a19){ +$(_a19).find(".combo-f").each(function(){ +var p=$(this).combo("panel"); +if(p.is(":visible")){ +p.panel("close"); +} +}); +}; +function _a1a(e){ +var _a1b=e.data.target; +var _a1c=$.data(_a1b,"combo"); +var opts=_a1c.options; +if(!opts.editable){ +_a14(_a1b); +}else{ +var p=$(_a1b).closest("div.combo-p").children(".combo-panel"); +$("div.combo-panel:visible").not(p).each(function(){ +var _a1d=$(this).combo("combo"); +if(_a1d!=_a1b){ +_a18(_a1d); +} +}); +} +}; +function _a1e(e){ +var _a1f=e.data.target; +var t=$(_a1f); +var _a20=t.data("combo"); +var opts=t.combo("options"); +_a20.panel.panel("options").comboTarget=_a1f; +switch(e.keyCode){ +case 38: +opts.keyHandler.up.call(_a1f,e); +break; +case 40: +opts.keyHandler.down.call(_a1f,e); +break; +case 37: +opts.keyHandler.left.call(_a1f,e); +break; +case 39: +opts.keyHandler.right.call(_a1f,e); +break; +case 13: +e.preventDefault(); +opts.keyHandler.enter.call(_a1f,e); +return false; +case 9: +case 27: +_a18(_a1f); +break; +default: +if(opts.editable){ +if(_a20.timer){ +clearTimeout(_a20.timer); +} +_a20.timer=setTimeout(function(){ +var q=t.combo("getText"); +if(_a20.previousText!=q){ +_a20.previousText=q; +t.combo("showPanel"); +opts.keyHandler.query.call(_a1f,q,e); +t.combo("validate"); +} +},opts.delay); +} +} +}; +function _a21(_a22){ +var _a23=$.data(_a22,"combo"); +var _a24=_a23.combo; +var _a25=_a23.panel; +var opts=$(_a22).combo("options"); +var _a26=_a25.panel("options"); +_a26.comboTarget=_a22; +if(_a26.closed){ +_a25.panel("panel").show().css({zIndex:($.fn.menu?$.fn.menu.defaults.zIndex++:($.fn.window?$.fn.window.defaults.zIndex++:99)),left:-999999}); +_a25.panel("resize",{width:(opts.panelWidth?opts.panelWidth:_a24._outerWidth()),height:opts.panelHeight}); +_a25.panel("panel").hide(); +_a25.panel("open"); +} +(function(){ +if(_a26.comboTarget==_a22&&_a25.is(":visible")){ +_a25.panel("move",{left:_a27(),top:_a28()}); +setTimeout(arguments.callee,200); +} +})(); +function _a27(){ +var left=_a24.offset().left; +if(opts.panelAlign=="right"){ +left+=_a24._outerWidth()-_a25._outerWidth(); +} +if(left+_a25._outerWidth()>$(window)._outerWidth()+$(document).scrollLeft()){ +left=$(window)._outerWidth()+$(document).scrollLeft()-_a25._outerWidth(); +} +if(left<0){ +left=0; +} +return left; +}; +function _a28(){ +var top=_a24.offset().top+_a24._outerHeight(); +if(top+_a25._outerHeight()>$(window)._outerHeight()+$(document).scrollTop()){ +top=_a24.offset().top-_a25._outerHeight(); +} +if(top<$(document).scrollTop()){ +top=_a24.offset().top+_a24._outerHeight(); +} +return top; +}; +}; +function _a18(_a29){ +var _a2a=$.data(_a29,"combo").panel; +_a2a.panel("close"); +}; +function _a2b(_a2c,text){ +var _a2d=$.data(_a2c,"combo"); +var _a2e=$(_a2c).textbox("getText"); +if(_a2e!=text){ +$(_a2c).textbox("setText",text); +} +_a2d.previousText=text; +}; +function _a2f(_a30){ +var _a31=$.data(_a30,"combo"); +var opts=_a31.options; +var _a32=$(_a30).next(); +var _a33=[]; +_a32.find(".textbox-value").each(function(){ +_a33.push($(this).val()); +}); +if(opts.multivalue){ +return _a33; +}else{ +return _a33.length?_a33[0].split(opts.separator):_a33; +} +}; +function _a34(_a35,_a36){ +var _a37=$.data(_a35,"combo"); +var _a38=_a37.combo; +var opts=$(_a35).combo("options"); +if(!$.isArray(_a36)){ +_a36=_a36.split(opts.separator); +} +var _a39=_a2f(_a35); +_a38.find(".textbox-value").remove(); +if(_a36.length){ +if(opts.multivalue){ +for(var i=0;i<_a36.length;i++){ +_a3a(_a36[i]); +} +}else{ +_a3a(_a36.join(opts.separator)); +} +} +function _a3a(_a3b){ +var name=$(_a35).attr("textboxName")||""; +var _a3c=$("").appendTo(_a38); +_a3c.attr("name",name); +if(opts.disabled){ +_a3c.attr("disabled","disabled"); +} +_a3c.val(_a3b); +}; +var _a3d=(function(){ +if(_a39.length!=_a36.length){ +return true; +} +for(var i=0;i<_a36.length;i++){ +if(_a36[i]!=_a39[i]){ +return true; +} +} +return false; +})(); +if(_a3d){ +$(_a35).val(_a36.join(opts.separator)); +if(opts.multiple){ +opts.onChange.call(_a35,_a36,_a39); +}else{ +opts.onChange.call(_a35,_a36[0],_a39[0]); +} +$(_a35).closest("form").trigger("_change",[_a35]); +} +}; +function _a3e(_a3f){ +var _a40=_a2f(_a3f); +return _a40[0]; +}; +function _a41(_a42,_a43){ +_a34(_a42,[_a43]); +}; +function _a44(_a45){ +var opts=$.data(_a45,"combo").options; +var _a46=opts.onChange; +opts.onChange=function(){ +}; +if(opts.multiple){ +_a34(_a45,opts.value?opts.value:[]); +}else{ +_a41(_a45,opts.value); +} +opts.onChange=_a46; +}; +$.fn.combo=function(_a47,_a48){ +if(typeof _a47=="string"){ +var _a49=$.fn.combo.methods[_a47]; +if(_a49){ +return _a49(this,_a48); +}else{ +return this.textbox(_a47,_a48); +} +} +_a47=_a47||{}; +return this.each(function(){ +var _a4a=$.data(this,"combo"); +if(_a4a){ +$.extend(_a4a.options,_a47); +if(_a47.value!=undefined){ +_a4a.options.originalValue=_a47.value; +} +}else{ +_a4a=$.data(this,"combo",{options:$.extend({},$.fn.combo.defaults,$.fn.combo.parseOptions(this),_a47),previousText:""}); +_a4a.options.originalValue=_a4a.options.value; +} +_a09(this); +_a44(this); +}); +}; +$.fn.combo.methods={options:function(jq){ +var opts=jq.textbox("options"); +return $.extend($.data(jq[0],"combo").options,{width:opts.width,height:opts.height,disabled:opts.disabled,readonly:opts.readonly}); +},cloneFrom:function(jq,from){ +return jq.each(function(){ +$(this).textbox("cloneFrom",from); +$.data(this,"combo",{options:$.extend(true,{cloned:true},$(from).combo("options")),combo:$(this).next(),panel:$(from).combo("panel")}); +$(this).addClass("combo-f").attr("comboName",$(this).attr("textboxName")); +}); +},combo:function(jq){ +return jq.closest(".combo-panel").panel("options").comboTarget; +},panel:function(jq){ +return $.data(jq[0],"combo").panel; +},destroy:function(jq){ +return jq.each(function(){ +_a11(this); +}); +},showPanel:function(jq){ +return jq.each(function(){ +_a21(this); +}); +},hidePanel:function(jq){ +return jq.each(function(){ +_a18(this); +}); +},clear:function(jq){ +return jq.each(function(){ +$(this).textbox("setText",""); +var opts=$.data(this,"combo").options; +if(opts.multiple){ +$(this).combo("setValues",[]); +}else{ +$(this).combo("setValue",""); +} +}); +},reset:function(jq){ +return jq.each(function(){ +var opts=$.data(this,"combo").options; +if(opts.multiple){ +$(this).combo("setValues",opts.originalValue); +}else{ +$(this).combo("setValue",opts.originalValue); +} +}); +},setText:function(jq,text){ +return jq.each(function(){ +_a2b(this,text); +}); +},getValues:function(jq){ +return _a2f(jq[0]); +},setValues:function(jq,_a4b){ +return jq.each(function(){ +_a34(this,_a4b); +}); +},getValue:function(jq){ +return _a3e(jq[0]); +},setValue:function(jq,_a4c){ +return jq.each(function(){ +_a41(this,_a4c); +}); +}}; +$.fn.combo.parseOptions=function(_a4d){ +var t=$(_a4d); +return $.extend({},$.fn.textbox.parseOptions(_a4d),$.parser.parseOptions(_a4d,["separator","panelAlign",{panelWidth:"number",hasDownArrow:"boolean",delay:"number",reversed:"boolean",multivalue:"boolean",selectOnNavigation:"boolean"},{panelMinWidth:"number",panelMaxWidth:"number",panelMinHeight:"number",panelMaxHeight:"number"}]),{panelHeight:(t.attr("panelHeight")=="auto"?"auto":parseInt(t.attr("panelHeight"))||undefined),multiple:(t.attr("multiple")?true:undefined)}); +}; +$.fn.combo.defaults=$.extend({},$.fn.textbox.defaults,{inputEvents:{click:_a1a,keydown:_a1e,paste:_a1e,drop:_a1e},panelWidth:null,panelHeight:200,panelMinWidth:null,panelMaxWidth:null,panelMinHeight:null,panelMaxHeight:null,panelAlign:"left",reversed:false,multiple:false,multivalue:true,selectOnNavigation:true,separator:",",hasDownArrow:true,delay:200,keyHandler:{up:function(e){ +},down:function(e){ +},left:function(e){ +},right:function(e){ +},enter:function(e){ +},query:function(q,e){ +}},onShowPanel:function(){ +},onHidePanel:function(){ +},onChange:function(_a4e,_a4f){ +}}); +})(jQuery); +(function($){ +function _a50(_a51,_a52){ +var _a53=$.data(_a51,"combobox"); +return $.easyui.indexOfArray(_a53.data,_a53.options.valueField,_a52); +}; +function _a54(_a55,_a56){ +var opts=$.data(_a55,"combobox").options; +var _a57=$(_a55).combo("panel"); +var item=opts.finder.getEl(_a55,_a56); +if(item.length){ +if(item.position().top<=0){ +var h=_a57.scrollTop()+item.position().top; +_a57.scrollTop(h); +}else{ +if(item.position().top+item.outerHeight()>_a57.height()){ +var h=_a57.scrollTop()+item.position().top+item.outerHeight()-_a57.height(); +_a57.scrollTop(h); +} +} +} +_a57.triggerHandler("scroll"); +}; +function nav(_a58,dir){ +var opts=$.data(_a58,"combobox").options; +var _a59=$(_a58).combobox("panel"); +var item=_a59.children("div.combobox-item-hover"); +if(!item.length){ +item=_a59.children("div.combobox-item-selected"); +} +item.removeClass("combobox-item-hover"); +var _a5a="div.combobox-item:visible:not(.combobox-item-disabled):first"; +var _a5b="div.combobox-item:visible:not(.combobox-item-disabled):last"; +if(!item.length){ +item=_a59.children(dir=="next"?_a5a:_a5b); +}else{ +if(dir=="next"){ +item=item.nextAll(_a5a); +if(!item.length){ +item=_a59.children(_a5a); +} +}else{ +item=item.prevAll(_a5a); +if(!item.length){ +item=_a59.children(_a5b); +} +} +} +if(item.length){ +item.addClass("combobox-item-hover"); +var row=opts.finder.getRow(_a58,item); +if(row){ +$(_a58).combobox("scrollTo",row[opts.valueField]); +if(opts.selectOnNavigation){ +_a5c(_a58,row[opts.valueField]); +} +} +} +}; +function _a5c(_a5d,_a5e,_a5f){ +var opts=$.data(_a5d,"combobox").options; +var _a60=$(_a5d).combo("getValues"); +if($.inArray(_a5e+"",_a60)==-1){ +if(opts.multiple){ +_a60.push(_a5e); +}else{ +_a60=[_a5e]; +} +_a61(_a5d,_a60,_a5f); +} +}; +function _a62(_a63,_a64){ +var opts=$.data(_a63,"combobox").options; +var _a65=$(_a63).combo("getValues"); +var _a66=$.inArray(_a64+"",_a65); +if(_a66>=0){ +_a65.splice(_a66,1); +_a61(_a63,_a65); +} +}; +function _a61(_a67,_a68,_a69){ +var opts=$.data(_a67,"combobox").options; +var _a6a=$(_a67).combo("panel"); +if(!$.isArray(_a68)){ +_a68=_a68.split(opts.separator); +} +if(!opts.multiple){ +_a68=_a68.length?[_a68[0]]:[""]; +} +var _a6b=$(_a67).combo("getValues"); +if(_a6a.is(":visible")){ +_a6a.find(".combobox-item-selected").each(function(){ +var row=opts.finder.getRow(_a67,$(this)); +if(row){ +if($.easyui.indexOfArray(_a6b,row[opts.valueField])==-1){ +$(this).removeClass("combobox-item-selected"); +} +} +}); +} +$.map(_a6b,function(v){ +if($.easyui.indexOfArray(_a68,v)==-1){ +var el=opts.finder.getEl(_a67,v); +if(el.hasClass("combobox-item-selected")){ +el.removeClass("combobox-item-selected"); +opts.onUnselect.call(_a67,opts.finder.getRow(_a67,v)); +} +} +}); +var _a6c=null; +var vv=[],ss=[]; +for(var i=0;i<_a68.length;i++){ +var v=_a68[i]; +var s=v; +var row=opts.finder.getRow(_a67,v); +if(row){ +s=row[opts.textField]; +_a6c=row; +var el=opts.finder.getEl(_a67,v); +if(!el.hasClass("combobox-item-selected")){ +el.addClass("combobox-item-selected"); +opts.onSelect.call(_a67,row); +} +} +vv.push(v); +ss.push(s); +} +if(!_a69){ +$(_a67).combo("setText",ss.join(opts.separator)); +} +if(opts.showItemIcon){ +var tb=$(_a67).combobox("textbox"); +tb.removeClass("textbox-bgicon "+opts.textboxIconCls); +if(_a6c&&_a6c.iconCls){ +tb.addClass("textbox-bgicon "+_a6c.iconCls); +opts.textboxIconCls=_a6c.iconCls; +} +} +$(_a67).combo("setValues",vv); +_a6a.triggerHandler("scroll"); +}; +function _a6d(_a6e,data,_a6f){ +var _a70=$.data(_a6e,"combobox"); +var opts=_a70.options; +_a70.data=opts.loadFilter.call(_a6e,data); +opts.view.render.call(opts.view,_a6e,$(_a6e).combo("panel"),_a70.data); +var vv=$(_a6e).combobox("getValues"); +$.easyui.forEach(_a70.data,false,function(row){ +if(row["selected"]){ +$.easyui.addArrayItem(vv,row[opts.valueField]+""); +} +}); +if(opts.multiple){ +_a61(_a6e,vv,_a6f); +}else{ +_a61(_a6e,vv.length?[vv[vv.length-1]]:[],_a6f); +} +opts.onLoadSuccess.call(_a6e,data); +}; +function _a71(_a72,url,_a73,_a74){ +var opts=$.data(_a72,"combobox").options; +if(url){ +opts.url=url; +} +_a73=$.extend({},opts.queryParams,_a73||{}); +if(opts.onBeforeLoad.call(_a72,_a73)==false){ +return; +} +opts.loader.call(_a72,_a73,function(data){ +_a6d(_a72,data,_a74); +},function(){ +opts.onLoadError.apply(this,arguments); +}); +}; +function _a75(_a76,q){ +var _a77=$.data(_a76,"combobox"); +var opts=_a77.options; +var _a78=$(); +var qq=opts.multiple?q.split(opts.separator):[q]; +if(opts.mode=="remote"){ +_a79(qq); +_a71(_a76,null,{q:q},true); +}else{ +var _a7a=$(_a76).combo("panel"); +_a7a.find(".combobox-item-hover").removeClass("combobox-item-hover"); +_a7a.find(".combobox-item,.combobox-group").hide(); +var data=_a77.data; +var vv=[]; +$.map(qq,function(q){ +q=$.trim(q); +var _a7b=q; +var _a7c=undefined; +_a78=$(); +for(var i=0;i=0){ +vv.push(v); +} +}); +t.combobox("setValues",vv); +if(!opts.multiple){ +t.combobox("hidePanel"); +} +}; +function _a81(_a82){ +var _a83=$.data(_a82,"combobox"); +var opts=_a83.options; +$(_a82).addClass("combobox-f"); +$(_a82).combo($.extend({},opts,{onShowPanel:function(){ +$(this).combo("panel").find("div.combobox-item:hidden,div.combobox-group:hidden").show(); +_a61(this,$(this).combobox("getValues"),true); +$(this).combobox("scrollTo",$(this).combobox("getValue")); +opts.onShowPanel.call(this); +}})); +var p=$(_a82).combo("panel"); +p.unbind(".combobox"); +for(var _a84 in opts.panelEvents){ +p.bind(_a84+".combobox",{target:_a82},opts.panelEvents[_a84]); +} +}; +function _a85(e){ +$(this).children("div.combobox-item-hover").removeClass("combobox-item-hover"); +var item=$(e.target).closest("div.combobox-item"); +if(!item.hasClass("combobox-item-disabled")){ +item.addClass("combobox-item-hover"); +} +e.stopPropagation(); +}; +function _a86(e){ +$(e.target).closest("div.combobox-item").removeClass("combobox-item-hover"); +e.stopPropagation(); +}; +function _a87(e){ +var _a88=$(this).panel("options").comboTarget; +if(!_a88){ +return; +} +var opts=$(_a88).combobox("options"); +var item=$(e.target).closest("div.combobox-item"); +if(!item.length||item.hasClass("combobox-item-disabled")){ +return; +} +var row=opts.finder.getRow(_a88,item); +if(!row){ +return; +} +if(opts.blurTimer){ +clearTimeout(opts.blurTimer); +opts.blurTimer=null; +} +opts.onClick.call(_a88,row); +var _a89=row[opts.valueField]; +if(opts.multiple){ +if(item.hasClass("combobox-item-selected")){ +_a62(_a88,_a89); +}else{ +_a5c(_a88,_a89); +} +}else{ +$(_a88).combobox("setValue",_a89).combobox("hidePanel"); +} +e.stopPropagation(); +}; +function _a8a(e){ +var _a8b=$(this).panel("options").comboTarget; +if(!_a8b){ +return; +} +var opts=$(_a8b).combobox("options"); +if(opts.groupPosition=="sticky"){ +var _a8c=$(this).children(".combobox-stick"); +if(!_a8c.length){ +_a8c=$("
        ").appendTo(this); +} +_a8c.hide(); +var _a8d=$(_a8b).data("combobox"); +$(this).children(".combobox-group:visible").each(function(){ +var g=$(this); +var _a8e=opts.finder.getGroup(_a8b,g); +var _a8f=_a8d.data[_a8e.startIndex+_a8e.count-1]; +var last=opts.finder.getEl(_a8b,_a8f[opts.valueField]); +if(g.position().top<0&&last.position().top>0){ +_a8c.show().html(g.html()); +return false; +} +}); +} +}; +$.fn.combobox=function(_a90,_a91){ +if(typeof _a90=="string"){ +var _a92=$.fn.combobox.methods[_a90]; +if(_a92){ +return _a92(this,_a91); +}else{ +return this.combo(_a90,_a91); +} +} +_a90=_a90||{}; +return this.each(function(){ +var _a93=$.data(this,"combobox"); +if(_a93){ +$.extend(_a93.options,_a90); +}else{ +_a93=$.data(this,"combobox",{options:$.extend({},$.fn.combobox.defaults,$.fn.combobox.parseOptions(this),_a90),data:[]}); +} +_a81(this); +if(_a93.options.data){ +_a6d(this,_a93.options.data); +}else{ +var data=$.fn.combobox.parseData(this); +if(data.length){ +_a6d(this,data); +} +} +_a71(this); +}); +}; +$.fn.combobox.methods={options:function(jq){ +var _a94=jq.combo("options"); +return $.extend($.data(jq[0],"combobox").options,{width:_a94.width,height:_a94.height,originalValue:_a94.originalValue,disabled:_a94.disabled,readonly:_a94.readonly}); +},cloneFrom:function(jq,from){ +return jq.each(function(){ +$(this).combo("cloneFrom",from); +$.data(this,"combobox",$(from).data("combobox")); +$(this).addClass("combobox-f").attr("comboboxName",$(this).attr("textboxName")); +}); +},getData:function(jq){ +return $.data(jq[0],"combobox").data; +},setValues:function(jq,_a95){ +return jq.each(function(){ +_a61(this,_a95); +}); +},setValue:function(jq,_a96){ +return jq.each(function(){ +_a61(this,$.isArray(_a96)?_a96:[_a96]); +}); +},clear:function(jq){ +return jq.each(function(){ +_a61(this,[]); +}); +},reset:function(jq){ +return jq.each(function(){ +var opts=$(this).combobox("options"); +if(opts.multiple){ +$(this).combobox("setValues",opts.originalValue); +}else{ +$(this).combobox("setValue",opts.originalValue); +} +}); +},loadData:function(jq,data){ +return jq.each(function(){ +_a6d(this,data); +}); +},reload:function(jq,url){ +return jq.each(function(){ +if(typeof url=="string"){ +_a71(this,url); +}else{ +if(url){ +var opts=$(this).combobox("options"); +opts.queryParams=url; +} +_a71(this); +} +}); +},select:function(jq,_a97){ +return jq.each(function(){ +_a5c(this,_a97); +}); +},unselect:function(jq,_a98){ +return jq.each(function(){ +_a62(this,_a98); +}); +},scrollTo:function(jq,_a99){ +return jq.each(function(){ +_a54(this,_a99); +}); +}}; +$.fn.combobox.parseOptions=function(_a9a){ +var t=$(_a9a); +return $.extend({},$.fn.combo.parseOptions(_a9a),$.parser.parseOptions(_a9a,["valueField","textField","groupField","groupPosition","mode","method","url",{showItemIcon:"boolean",limitToList:"boolean"}])); +}; +$.fn.combobox.parseData=function(_a9b){ +var data=[]; +var opts=$(_a9b).combobox("options"); +$(_a9b).children().each(function(){ +if(this.tagName.toLowerCase()=="optgroup"){ +var _a9c=$(this).attr("label"); +$(this).children().each(function(){ +_a9d(this,_a9c); +}); +}else{ +_a9d(this); +} +}); +return data; +function _a9d(el,_a9e){ +var t=$(el); +var row={}; +row[opts.valueField]=t.attr("value")!=undefined?t.attr("value"):t.text(); +row[opts.textField]=t.text(); +row["selected"]=t.is(":selected"); +row["disabled"]=t.is(":disabled"); +if(_a9e){ +opts.groupField=opts.groupField||"group"; +row[opts.groupField]=_a9e; +} +data.push(row); +}; +}; +var _a9f=0; +var _aa0={render:function(_aa1,_aa2,data){ +var _aa3=$.data(_aa1,"combobox"); +var opts=_aa3.options; +_a9f++; +_aa3.itemIdPrefix="_easyui_combobox_i"+_a9f; +_aa3.groupIdPrefix="_easyui_combobox_g"+_a9f; +_aa3.groups=[]; +var dd=[]; +var _aa4=undefined; +for(var i=0;i"); +dd.push(opts.groupFormatter?opts.groupFormatter.call(_aa1,g):g); +dd.push("
        "); +}else{ +_aa3.groups[_aa3.groups.length-1].count++; +} +}else{ +_aa4=undefined; +} +var cls="combobox-item"+(row.disabled?" combobox-item-disabled":"")+(g?" combobox-gitem":""); +dd.push("
        "); +if(opts.showItemIcon&&row.iconCls){ +dd.push(""); +} +dd.push(opts.formatter?opts.formatter.call(_aa1,row):s); +dd.push("
        "); +} +$(_aa2).html(dd.join("")); +}}; +$.fn.combobox.defaults=$.extend({},$.fn.combo.defaults,{valueField:"value",textField:"text",groupPosition:"static",groupField:null,groupFormatter:function(_aa5){ +return _aa5; +},mode:"local",method:"post",url:null,data:null,queryParams:{},showItemIcon:false,limitToList:false,view:_aa0,keyHandler:{up:function(e){ +nav(this,"prev"); +e.preventDefault(); +},down:function(e){ +nav(this,"next"); +e.preventDefault(); +},left:function(e){ +},right:function(e){ +},enter:function(e){ +_a7d(this); +},query:function(q,e){ +_a75(this,q); +}},inputEvents:$.extend({},$.fn.combo.defaults.inputEvents,{blur:function(e){ +var _aa6=e.data.target; +var opts=$(_aa6).combobox("options"); +if(opts.reversed||opts.limitToList){ +if(opts.blurTimer){ +clearTimeout(opts.blurTimer); +} +opts.blurTimer=setTimeout(function(){ +var _aa7=$(_aa6).parent().length; +if(_aa7){ +if(opts.reversed){ +$(_aa6).combobox("setValues",$(_aa6).combobox("getValues")); +}else{ +if(opts.limitToList){ +_a7d(_aa6); +} +} +opts.blurTimer=null; +} +},50); +} +}}),panelEvents:{mouseover:_a85,mouseout:_a86,click:_a87,scroll:_a8a},filter:function(q,row){ +var opts=$(this).combobox("options"); +return row[opts.textField].toLowerCase().indexOf(q.toLowerCase())>=0; +},formatter:function(row){ +var opts=$(this).combobox("options"); +return row[opts.textField]; +},loader:function(_aa8,_aa9,_aaa){ +var opts=$(this).combobox("options"); +if(!opts.url){ +return false; +} +$.ajax({type:opts.method,url:opts.url,data:_aa8,dataType:"json",success:function(data){ +_aa9(data); +},error:function(){ +_aaa.apply(this,arguments); +}}); +},loadFilter:function(data){ +return data; +},finder:{getEl:function(_aab,_aac){ +var _aad=_a50(_aab,_aac); +var id=$.data(_aab,"combobox").itemIdPrefix+"_"+_aad; +return $("#"+id); +},getGroupEl:function(_aae,_aaf){ +var _ab0=$.data(_aae,"combobox"); +var _ab1=$.easyui.indexOfArray(_ab0.groups,"value",_aaf); +var id=_ab0.groupIdPrefix+"_"+_ab1; +return $("#"+id); +},getGroup:function(_ab2,p){ +var _ab3=$.data(_ab2,"combobox"); +var _ab4=p.attr("id").substr(_ab3.groupIdPrefix.length+1); +return _ab3.groups[parseInt(_ab4)]; +},getRow:function(_ab5,p){ +var _ab6=$.data(_ab5,"combobox"); +var _ab7=(p instanceof $)?p.attr("id").substr(_ab6.itemIdPrefix.length+1):_a50(_ab5,p); +return _ab6.data[parseInt(_ab7)]; +}},onBeforeLoad:function(_ab8){ +},onLoadSuccess:function(data){ +},onLoadError:function(){ +},onSelect:function(_ab9){ +},onUnselect:function(_aba){ +},onClick:function(_abb){ +}}); +})(jQuery); +(function($){ +function _abc(_abd){ +var _abe=$.data(_abd,"combotree"); +var opts=_abe.options; +var tree=_abe.tree; +$(_abd).addClass("combotree-f"); +$(_abd).combo($.extend({},opts,{onShowPanel:function(){ +if(opts.editable){ +tree.tree("doFilter",""); +} +opts.onShowPanel.call(this); +}})); +var _abf=$(_abd).combo("panel"); +if(!tree){ +tree=$("
          ").appendTo(_abf); +_abe.tree=tree; +} +tree.tree($.extend({},opts,{checkbox:opts.multiple,onLoadSuccess:function(node,data){ +var _ac0=$(_abd).combotree("getValues"); +if(opts.multiple){ +$.map(tree.tree("getChecked"),function(node){ +$.easyui.addArrayItem(_ac0,node.id); +}); +} +_ac5(_abd,_ac0,_abe.remainText); +opts.onLoadSuccess.call(this,node,data); +},onClick:function(node){ +if(opts.multiple){ +$(this).tree(node.checked?"uncheck":"check",node.target); +}else{ +$(_abd).combo("hidePanel"); +} +_abe.remainText=false; +_ac2(_abd); +opts.onClick.call(this,node); +},onCheck:function(node,_ac1){ +_abe.remainText=false; +_ac2(_abd); +opts.onCheck.call(this,node,_ac1); +}})); +}; +function _ac2(_ac3){ +var _ac4=$.data(_ac3,"combotree"); +var opts=_ac4.options; +var tree=_ac4.tree; +var vv=[]; +if(opts.multiple){ +vv=$.map(tree.tree("getChecked"),function(node){ +return node.id; +}); +}else{ +var node=tree.tree("getSelected"); +if(node){ +vv.push(node.id); +} +} +vv=vv.concat(opts.unselectedValues); +_ac5(_ac3,vv,_ac4.remainText); +}; +function _ac5(_ac6,_ac7,_ac8){ +var _ac9=$.data(_ac6,"combotree"); +var opts=_ac9.options; +var tree=_ac9.tree; +var _aca=tree.tree("options"); +var _acb=_aca.onBeforeCheck; +var _acc=_aca.onCheck; +var _acd=_aca.onSelect; +_aca.onBeforeCheck=_aca.onCheck=_aca.onSelect=function(){ +}; +if(!$.isArray(_ac7)){ +_ac7=_ac7.split(opts.separator); +} +if(!opts.multiple){ +_ac7=_ac7.length?[_ac7[0]]:[""]; +} +var vv=$.map(_ac7,function(_ace){ +return String(_ace); +}); +tree.find("div.tree-node-selected").removeClass("tree-node-selected"); +$.map(tree.tree("getChecked"),function(node){ +if($.inArray(String(node.id),vv)==-1){ +tree.tree("uncheck",node.target); +} +}); +var ss=[]; +opts.unselectedValues=[]; +$.map(vv,function(v){ +var node=tree.tree("find",v); +if(node){ +tree.tree("check",node.target).tree("select",node.target); +ss.push(_acf(node)); +}else{ +ss.push(_ad0(v,opts.mappingRows)||v); +opts.unselectedValues.push(v); +} +}); +if(opts.multiple){ +$.map(tree.tree("getChecked"),function(node){ +var id=String(node.id); +if($.inArray(id,vv)==-1){ +vv.push(id); +ss.push(_acf(node)); +} +}); +} +_aca.onBeforeCheck=_acb; +_aca.onCheck=_acc; +_aca.onSelect=_acd; +if(!_ac8){ +var s=ss.join(opts.separator); +if($(_ac6).combo("getText")!=s){ +$(_ac6).combo("setText",s); +} +} +$(_ac6).combo("setValues",vv); +function _ad0(_ad1,a){ +var item=$.easyui.getArrayItem(a,"id",_ad1); +return item?_acf(item):undefined; +}; +function _acf(node){ +return node[opts.textField||""]||node.text; +}; +}; +function _ad2(_ad3,q){ +var _ad4=$.data(_ad3,"combotree"); +var opts=_ad4.options; +var tree=_ad4.tree; +_ad4.remainText=true; +tree.tree("doFilter",opts.multiple?q.split(opts.separator):q); +}; +function _ad5(_ad6){ +var _ad7=$.data(_ad6,"combotree"); +_ad7.remainText=false; +$(_ad6).combotree("setValues",$(_ad6).combotree("getValues")); +$(_ad6).combotree("hidePanel"); +}; +$.fn.combotree=function(_ad8,_ad9){ +if(typeof _ad8=="string"){ +var _ada=$.fn.combotree.methods[_ad8]; +if(_ada){ +return _ada(this,_ad9); +}else{ +return this.combo(_ad8,_ad9); +} +} +_ad8=_ad8||{}; +return this.each(function(){ +var _adb=$.data(this,"combotree"); +if(_adb){ +$.extend(_adb.options,_ad8); +}else{ +$.data(this,"combotree",{options:$.extend({},$.fn.combotree.defaults,$.fn.combotree.parseOptions(this),_ad8)}); +} +_abc(this); +}); +}; +$.fn.combotree.methods={options:function(jq){ +var _adc=jq.combo("options"); +return $.extend($.data(jq[0],"combotree").options,{width:_adc.width,height:_adc.height,originalValue:_adc.originalValue,disabled:_adc.disabled,readonly:_adc.readonly}); +},clone:function(jq,_add){ +var t=jq.combo("clone",_add); +t.data("combotree",{options:$.extend(true,{},jq.combotree("options")),tree:jq.combotree("tree")}); +return t; +},tree:function(jq){ +return $.data(jq[0],"combotree").tree; +},loadData:function(jq,data){ +return jq.each(function(){ +var opts=$.data(this,"combotree").options; +opts.data=data; +var tree=$.data(this,"combotree").tree; +tree.tree("loadData",data); +}); +},reload:function(jq,url){ +return jq.each(function(){ +var opts=$.data(this,"combotree").options; +var tree=$.data(this,"combotree").tree; +if(url){ +opts.url=url; +} +tree.tree({url:opts.url}); +}); +},setValues:function(jq,_ade){ +return jq.each(function(){ +var opts=$(this).combotree("options"); +if($.isArray(_ade)){ +_ade=$.map(_ade,function(_adf){ +if(_adf&&typeof _adf=="object"){ +$.easyui.addArrayItem(opts.mappingRows,"id",_adf); +return _adf.id; +}else{ +return _adf; +} +}); +} +_ac5(this,_ade); +}); +},setValue:function(jq,_ae0){ +return jq.each(function(){ +$(this).combotree("setValues",$.isArray(_ae0)?_ae0:[_ae0]); +}); +},clear:function(jq){ +return jq.each(function(){ +$(this).combotree("setValues",[]); +}); +},reset:function(jq){ +return jq.each(function(){ +var opts=$(this).combotree("options"); +if(opts.multiple){ +$(this).combotree("setValues",opts.originalValue); +}else{ +$(this).combotree("setValue",opts.originalValue); +} +}); +}}; +$.fn.combotree.parseOptions=function(_ae1){ +return $.extend({},$.fn.combo.parseOptions(_ae1),$.fn.tree.parseOptions(_ae1)); +}; +$.fn.combotree.defaults=$.extend({},$.fn.combo.defaults,$.fn.tree.defaults,{editable:false,textField:null,unselectedValues:[],mappingRows:[],keyHandler:{up:function(e){ +},down:function(e){ +},left:function(e){ +},right:function(e){ +},enter:function(e){ +_ad5(this); +},query:function(q,e){ +_ad2(this,q); +}}}); +})(jQuery); +(function($){ +function _ae2(_ae3){ +var _ae4=$.data(_ae3,"combogrid"); +var opts=_ae4.options; +var grid=_ae4.grid; +$(_ae3).addClass("combogrid-f").combo($.extend({},opts,{onShowPanel:function(){ +_af9(this,$(this).combogrid("getValues"),true); +var p=$(this).combogrid("panel"); +var _ae5=p.outerHeight()-p.height(); +var _ae6=p._size("minHeight"); +var _ae7=p._size("maxHeight"); +var dg=$(this).combogrid("grid"); +dg.datagrid("resize",{width:"100%",height:(isNaN(parseInt(opts.panelHeight))?"auto":"100%"),minHeight:(_ae6?_ae6-_ae5:""),maxHeight:(_ae7?_ae7-_ae5:"")}); +var row=dg.datagrid("getSelected"); +if(row){ +dg.datagrid("scrollTo",dg.datagrid("getRowIndex",row)); +} +opts.onShowPanel.call(this); +}})); +var _ae8=$(_ae3).combo("panel"); +if(!grid){ +grid=$("
          ").appendTo(_ae8); +_ae4.grid=grid; +} +grid.datagrid($.extend({},opts,{border:false,singleSelect:(!opts.multiple),onLoadSuccess:_ae9,onClickRow:_aea,onSelect:_aeb("onSelect"),onUnselect:_aeb("onUnselect"),onSelectAll:_aeb("onSelectAll"),onUnselectAll:_aeb("onUnselectAll")})); +function _aec(dg){ +return $(dg).closest(".combo-panel").panel("options").comboTarget||_ae3; +}; +function _ae9(data){ +var _aed=_aec(this); +var _aee=$(_aed).data("combogrid"); +var opts=_aee.options; +var _aef=$(_aed).combo("getValues"); +_af9(_aed,_aef,_aee.remainText); +opts.onLoadSuccess.call(this,data); +}; +function _aea(_af0,row){ +var _af1=_aec(this); +var _af2=$(_af1).data("combogrid"); +var opts=_af2.options; +_af2.remainText=false; +_af3.call(this); +if(!opts.multiple){ +$(_af1).combo("hidePanel"); +} +opts.onClickRow.call(this,_af0,row); +}; +function _aeb(_af4){ +return function(_af5,row){ +var _af6=_aec(this); +var opts=$(_af6).combogrid("options"); +if(_af4=="onUnselectAll"){ +if(opts.multiple){ +_af3.call(this); +} +}else{ +_af3.call(this); +} +opts[_af4].call(this,_af5,row); +}; +}; +function _af3(){ +var dg=$(this); +var _af7=_aec(dg); +var _af8=$(_af7).data("combogrid"); +var opts=_af8.options; +var vv=$.map(dg.datagrid("getSelections"),function(row){ +return row[opts.idField]; +}); +vv=vv.concat(opts.unselectedValues); +_af9(_af7,vv,_af8.remainText); +}; +}; +function nav(_afa,dir){ +var _afb=$.data(_afa,"combogrid"); +var opts=_afb.options; +var grid=_afb.grid; +var _afc=grid.datagrid("getRows").length; +if(!_afc){ +return; +} +var tr=opts.finder.getTr(grid[0],null,"highlight"); +if(!tr.length){ +tr=opts.finder.getTr(grid[0],null,"selected"); +} +var _afd; +if(!tr.length){ +_afd=(dir=="next"?0:_afc-1); +}else{ +var _afd=parseInt(tr.attr("datagrid-row-index")); +_afd+=(dir=="next"?1:-1); +if(_afd<0){ +_afd=_afc-1; +} +if(_afd>=_afc){ +_afd=0; +} +} +grid.datagrid("highlightRow",_afd); +if(opts.selectOnNavigation){ +_afb.remainText=false; +grid.datagrid("selectRow",_afd); +} +}; +function _af9(_afe,_aff,_b00){ +var _b01=$.data(_afe,"combogrid"); +var opts=_b01.options; +var grid=_b01.grid; +var _b02=$(_afe).combo("getValues"); +var _b03=$(_afe).combo("options"); +var _b04=_b03.onChange; +_b03.onChange=function(){ +}; +var _b05=grid.datagrid("options"); +var _b06=_b05.onSelect; +var _b07=_b05.onUnselectAll; +_b05.onSelect=_b05.onUnselectAll=function(){ +}; +if(!$.isArray(_aff)){ +_aff=_aff.split(opts.separator); +} +if(!opts.multiple){ +_aff=_aff.length?[_aff[0]]:[""]; +} +var vv=$.map(_aff,function(_b08){ +return String(_b08); +}); +vv=$.grep(vv,function(v,_b09){ +return _b09===$.inArray(v,vv); +}); +var _b0a=$.grep(grid.datagrid("getSelections"),function(row,_b0b){ +return $.inArray(String(row[opts.idField]),vv)>=0; +}); +grid.datagrid("clearSelections"); +grid.data("datagrid").selectedRows=_b0a; +var ss=[]; +opts.unselectedValues=[]; +$.map(vv,function(v){ +var _b0c=grid.datagrid("getRowIndex",v); +if(_b0c>=0){ +grid.datagrid("selectRow",_b0c); +}else{ +opts.unselectedValues.push(v); +} +ss.push(_b0d(v,grid.datagrid("getRows"))||_b0d(v,_b0a)||_b0d(v,opts.mappingRows)||v); +}); +$(_afe).combo("setValues",_b02); +_b03.onChange=_b04; +_b05.onSelect=_b06; +_b05.onUnselectAll=_b07; +if(!_b00){ +var s=ss.join(opts.separator); +if($(_afe).combo("getText")!=s){ +$(_afe).combo("setText",s); +} +} +$(_afe).combo("setValues",_aff); +function _b0d(_b0e,a){ +var item=$.easyui.getArrayItem(a,opts.idField,_b0e); +return item?item[opts.textField]:undefined; +}; +}; +function _b0f(_b10,q){ +var _b11=$.data(_b10,"combogrid"); +var opts=_b11.options; +var grid=_b11.grid; +_b11.remainText=true; +var qq=opts.multiple?q.split(opts.separator):[q]; +qq=$.grep(qq,function(q){ +return $.trim(q)!=""; +}); +if(opts.mode=="remote"){ +_b12(qq); +grid.datagrid("load",$.extend({},opts.queryParams,{q:q})); +}else{ +grid.datagrid("highlightRow",-1); +var rows=grid.datagrid("getRows"); +var vv=[]; +$.map(qq,function(q){ +q=$.trim(q); +var _b13=q; +_b14(opts.mappingRows,q); +_b14(grid.datagrid("getSelections"),q); +var _b15=_b14(rows,q); +if(_b15>=0){ +if(opts.reversed){ +grid.datagrid("highlightRow",_b15); +} +}else{ +$.map(rows,function(row,i){ +if(opts.filter.call(_b10,q,row)){ +grid.datagrid("highlightRow",i); +} +}); +} +}); +_b12(vv); +} +function _b14(rows,q){ +for(var i=0;i=0){ +$.easyui.addArrayItem(vv,v); +} +}); +$(_b17).combogrid("setValues",vv); +if(!opts.multiple){ +$(_b17).combogrid("hidePanel"); +} +}; +$.fn.combogrid=function(_b1a,_b1b){ +if(typeof _b1a=="string"){ +var _b1c=$.fn.combogrid.methods[_b1a]; +if(_b1c){ +return _b1c(this,_b1b); +}else{ +return this.combo(_b1a,_b1b); +} +} +_b1a=_b1a||{}; +return this.each(function(){ +var _b1d=$.data(this,"combogrid"); +if(_b1d){ +$.extend(_b1d.options,_b1a); +}else{ +_b1d=$.data(this,"combogrid",{options:$.extend({},$.fn.combogrid.defaults,$.fn.combogrid.parseOptions(this),_b1a)}); +} +_ae2(this); +}); +}; +$.fn.combogrid.methods={options:function(jq){ +var _b1e=jq.combo("options"); +return $.extend($.data(jq[0],"combogrid").options,{width:_b1e.width,height:_b1e.height,originalValue:_b1e.originalValue,disabled:_b1e.disabled,readonly:_b1e.readonly}); +},cloneFrom:function(jq,from){ +return jq.each(function(){ +$(this).combo("cloneFrom",from); +$.data(this,"combogrid",{options:$.extend(true,{cloned:true},$(from).combogrid("options")),combo:$(this).next(),panel:$(from).combo("panel"),grid:$(from).combogrid("grid")}); +}); +},grid:function(jq){ +return $.data(jq[0],"combogrid").grid; +},setValues:function(jq,_b1f){ +return jq.each(function(){ +var opts=$(this).combogrid("options"); +if($.isArray(_b1f)){ +_b1f=$.map(_b1f,function(_b20){ +if(_b20&&typeof _b20=="object"){ +$.easyui.addArrayItem(opts.mappingRows,opts.idField,_b20); +return _b20[opts.idField]; +}else{ +return _b20; +} +}); +} +_af9(this,_b1f); +}); +},setValue:function(jq,_b21){ +return jq.each(function(){ +$(this).combogrid("setValues",$.isArray(_b21)?_b21:[_b21]); +}); +},clear:function(jq){ +return jq.each(function(){ +$(this).combogrid("setValues",[]); +}); +},reset:function(jq){ +return jq.each(function(){ +var opts=$(this).combogrid("options"); +if(opts.multiple){ +$(this).combogrid("setValues",opts.originalValue); +}else{ +$(this).combogrid("setValue",opts.originalValue); +} +}); +}}; +$.fn.combogrid.parseOptions=function(_b22){ +var t=$(_b22); +return $.extend({},$.fn.combo.parseOptions(_b22),$.fn.datagrid.parseOptions(_b22),$.parser.parseOptions(_b22,["idField","textField","mode"])); +}; +$.fn.combogrid.defaults=$.extend({},$.fn.combo.defaults,$.fn.datagrid.defaults,{loadMsg:null,idField:null,textField:null,unselectedValues:[],mappingRows:[],mode:"local",keyHandler:{up:function(e){ +nav(this,"prev"); +e.preventDefault(); +},down:function(e){ +nav(this,"next"); +e.preventDefault(); +},left:function(e){ +},right:function(e){ +},enter:function(e){ +_b16(this); +},query:function(q,e){ +_b0f(this,q); +}},inputEvents:$.extend({},$.fn.combo.defaults.inputEvents,{blur:function(e){ +var _b23=e.data.target; +var opts=$(_b23).combogrid("options"); +if(opts.reversed){ +$(_b23).combogrid("setValues",$(_b23).combogrid("getValues")); +} +}}),filter:function(q,row){ +var opts=$(this).combogrid("options"); +return (row[opts.textField]||"").toLowerCase().indexOf(q.toLowerCase())>=0; +}}); +})(jQuery); +(function($){ +function _b24(_b25){ +var _b26=$.data(_b25,"combotreegrid"); +var opts=_b26.options; +$(_b25).addClass("combotreegrid-f").combo($.extend({},opts,{onShowPanel:function(){ +var p=$(this).combotreegrid("panel"); +var _b27=p.outerHeight()-p.height(); +var _b28=p._size("minHeight"); +var _b29=p._size("maxHeight"); +var dg=$(this).combotreegrid("grid"); +dg.treegrid("resize",{width:"100%",height:(isNaN(parseInt(opts.panelHeight))?"auto":"100%"),minHeight:(_b28?_b28-_b27:""),maxHeight:(_b29?_b29-_b27:"")}); +var row=dg.treegrid("getSelected"); +if(row){ +dg.treegrid("scrollTo",row[opts.idField]); +} +opts.onShowPanel.call(this); +}})); +if(!_b26.grid){ +var _b2a=$(_b25).combo("panel"); +_b26.grid=$("
          ").appendTo(_b2a); +} +_b26.grid.treegrid($.extend({},opts,{border:false,checkbox:opts.multiple,onLoadSuccess:function(row,data){ +var _b2b=$(_b25).combotreegrid("getValues"); +if(opts.multiple){ +$.map($(this).treegrid("getCheckedNodes"),function(row){ +$.easyui.addArrayItem(_b2b,row[opts.idField]); +}); +} +_b30(_b25,_b2b); +opts.onLoadSuccess.call(this,row,data); +_b26.remainText=false; +},onClickRow:function(row){ +if(opts.multiple){ +$(this).treegrid(row.checked?"uncheckNode":"checkNode",row[opts.idField]); +$(this).treegrid("unselect",row[opts.idField]); +}else{ +$(_b25).combo("hidePanel"); +} +_b2d(_b25); +opts.onClickRow.call(this,row); +},onCheckNode:function(row,_b2c){ +_b2d(_b25); +opts.onCheckNode.call(this,row,_b2c); +}})); +}; +function _b2d(_b2e){ +var _b2f=$.data(_b2e,"combotreegrid"); +var opts=_b2f.options; +var grid=_b2f.grid; +var vv=[]; +if(opts.multiple){ +vv=$.map(grid.treegrid("getCheckedNodes"),function(row){ +return row[opts.idField]; +}); +}else{ +var row=grid.treegrid("getSelected"); +if(row){ +vv.push(row[opts.idField]); +} +} +vv=vv.concat(opts.unselectedValues); +_b30(_b2e,vv); +}; +function _b30(_b31,_b32){ +var _b33=$.data(_b31,"combotreegrid"); +var opts=_b33.options; +var grid=_b33.grid; +if(!$.isArray(_b32)){ +_b32=_b32.split(opts.separator); +} +if(!opts.multiple){ +_b32=_b32.length?[_b32[0]]:[""]; +} +var vv=$.map(_b32,function(_b34){ +return String(_b34); +}); +vv=$.grep(vv,function(v,_b35){ +return _b35===$.inArray(v,vv); +}); +var _b36=grid.treegrid("getSelected"); +if(_b36){ +grid.treegrid("unselect",_b36[opts.idField]); +} +$.map(grid.treegrid("getCheckedNodes"),function(row){ +if($.inArray(String(row[opts.idField]),vv)==-1){ +grid.treegrid("uncheckNode",row[opts.idField]); +} +}); +var ss=[]; +opts.unselectedValues=[]; +$.map(vv,function(v){ +var row=grid.treegrid("find",v); +if(row){ +if(opts.multiple){ +grid.treegrid("checkNode",v); +}else{ +grid.treegrid("select",v); +} +ss.push(_b37(row)); +}else{ +ss.push(_b38(v,opts.mappingRows)||v); +opts.unselectedValues.push(v); +} +}); +if(opts.multiple){ +$.map(grid.treegrid("getCheckedNodes"),function(row){ +var id=String(row[opts.idField]); +if($.inArray(id,vv)==-1){ +vv.push(id); +ss.push(_b37(row)); +} +}); +} +if(!_b33.remainText){ +var s=ss.join(opts.separator); +if($(_b31).combo("getText")!=s){ +$(_b31).combo("setText",s); +} +} +$(_b31).combo("setValues",vv); +function _b38(_b39,a){ +var item=$.easyui.getArrayItem(a,opts.idField,_b39); +return item?_b37(item):undefined; +}; +function _b37(row){ +return row[opts.textField||""]||row[opts.treeField]; +}; +}; +function _b3a(_b3b,q){ +var _b3c=$.data(_b3b,"combotreegrid"); +var opts=_b3c.options; +var grid=_b3c.grid; +_b3c.remainText=true; +grid.treegrid("clearSelections").treegrid("clearChecked").treegrid("highlightRow",-1); +if(opts.mode=="remote"){ +$(_b3b).combotreegrid("clear"); +grid.treegrid("load",$.extend({},opts.queryParams,{q:q})); +}else{ +if(q){ +var data=grid.treegrid("getData"); +var vv=[]; +var qq=opts.multiple?q.split(opts.separator):[q]; +$.map(qq,function(q){ +q=$.trim(q); +if(q){ +var v=undefined; +$.easyui.forEach(data,true,function(row){ +if(q.toLowerCase()==String(row[opts.treeField]).toLowerCase()){ +v=row[opts.idField]; +return false; +}else{ +if(opts.filter.call(_b3b,q,row)){ +grid.treegrid("expandTo",row[opts.idField]); +grid.treegrid("highlightRow",row[opts.idField]); +return false; +} +} +}); +if(v==undefined){ +$.easyui.forEach(opts.mappingRows,false,function(row){ +if(q.toLowerCase()==String(row[opts.treeField])){ +v=row[opts.idField]; +return false; +} +}); +} +if(v!=undefined){ +vv.push(v); +} +} +}); +_b30(_b3b,vv); +_b3c.remainText=false; +} +} +}; +function _b3d(_b3e){ +_b2d(_b3e); +}; +$.fn.combotreegrid=function(_b3f,_b40){ +if(typeof _b3f=="string"){ +var _b41=$.fn.combotreegrid.methods[_b3f]; +if(_b41){ +return _b41(this,_b40); +}else{ +return this.combo(_b3f,_b40); +} +} +_b3f=_b3f||{}; +return this.each(function(){ +var _b42=$.data(this,"combotreegrid"); +if(_b42){ +$.extend(_b42.options,_b3f); +}else{ +_b42=$.data(this,"combotreegrid",{options:$.extend({},$.fn.combotreegrid.defaults,$.fn.combotreegrid.parseOptions(this),_b3f)}); +} +_b24(this); +}); +}; +$.fn.combotreegrid.methods={options:function(jq){ +var _b43=jq.combo("options"); +return $.extend($.data(jq[0],"combotreegrid").options,{width:_b43.width,height:_b43.height,originalValue:_b43.originalValue,disabled:_b43.disabled,readonly:_b43.readonly}); +},grid:function(jq){ +return $.data(jq[0],"combotreegrid").grid; +},setValues:function(jq,_b44){ +return jq.each(function(){ +var opts=$(this).combotreegrid("options"); +if($.isArray(_b44)){ +_b44=$.map(_b44,function(_b45){ +if(_b45&&typeof _b45=="object"){ +$.easyui.addArrayItem(opts.mappingRows,opts.idField,_b45); +return _b45[opts.idField]; +}else{ +return _b45; +} +}); +} +_b30(this,_b44); +}); +},setValue:function(jq,_b46){ +return jq.each(function(){ +$(this).combotreegrid("setValues",$.isArray(_b46)?_b46:[_b46]); +}); +},clear:function(jq){ +return jq.each(function(){ +$(this).combotreegrid("setValues",[]); +}); +},reset:function(jq){ +return jq.each(function(){ +var opts=$(this).combotreegrid("options"); +if(opts.multiple){ +$(this).combotreegrid("setValues",opts.originalValue); +}else{ +$(this).combotreegrid("setValue",opts.originalValue); +} +}); +}}; +$.fn.combotreegrid.parseOptions=function(_b47){ +var t=$(_b47); +return $.extend({},$.fn.combo.parseOptions(_b47),$.fn.treegrid.parseOptions(_b47),$.parser.parseOptions(_b47,["mode",{limitToGrid:"boolean"}])); +}; +$.fn.combotreegrid.defaults=$.extend({},$.fn.combo.defaults,$.fn.treegrid.defaults,{editable:false,singleSelect:true,limitToGrid:false,unselectedValues:[],mappingRows:[],mode:"local",textField:null,keyHandler:{up:function(e){ +},down:function(e){ +},left:function(e){ +},right:function(e){ +},enter:function(e){ +_b3d(this); +},query:function(q,e){ +_b3a(this,q); +}},inputEvents:$.extend({},$.fn.combo.defaults.inputEvents,{blur:function(e){ +var _b48=e.data.target; +var opts=$(_b48).combotreegrid("options"); +if(opts.limitToGrid){ +_b3d(_b48); +} +}}),filter:function(q,row){ +var opts=$(this).combotreegrid("options"); +return (row[opts.treeField]||"").toLowerCase().indexOf(q.toLowerCase())>=0; +}}); +})(jQuery); +(function($){ +function _b49(_b4a){ +var _b4b=$.data(_b4a,"tagbox"); +var opts=_b4b.options; +$(_b4a).addClass("tagbox-f").combobox($.extend({},opts,{cls:"tagbox",reversed:true,onChange:function(_b4c,_b4d){ +_b4e(); +$(this).combobox("hidePanel"); +opts.onChange.call(_b4a,_b4c,_b4d); +},onResizing:function(_b4f,_b50){ +var _b51=$(this).combobox("textbox"); +var tb=$(this).data("textbox").textbox; +tb.css({height:"",paddingLeft:_b51.css("marginLeft"),paddingRight:_b51.css("marginRight")}); +_b51.css("margin",0); +tb._size({width:opts.width},$(this).parent()); +_b64(_b4a); +_b56(this); +opts.onResizing.call(_b4a,_b4f,_b50); +},onLoadSuccess:function(data){ +_b4e(); +opts.onLoadSuccess.call(_b4a,data); +}})); +_b4e(); +_b64(_b4a); +function _b4e(){ +$(_b4a).next().find(".tagbox-label").remove(); +var _b52=$(_b4a).tagbox("textbox"); +var ss=[]; +$.map($(_b4a).tagbox("getValues"),function(_b53,_b54){ +var row=opts.finder.getRow(_b4a,_b53); +var text=opts.tagFormatter.call(_b4a,_b53,row); +var cs={}; +var css=opts.tagStyler.call(_b4a,_b53,row)||""; +if(typeof css=="string"){ +cs={s:css}; +}else{ +cs={c:css["class"]||"",s:css["style"]||""}; +} +var _b55=$("").insertBefore(_b52).html(text); +_b55.attr("tagbox-index",_b54); +_b55.attr("style",cs.s).addClass(cs.c); +$("").appendTo(_b55); +}); +_b56(_b4a); +$(_b4a).combobox("setText",""); +}; +}; +function _b56(_b57,_b58){ +var span=$(_b57).next(); +var _b59=_b58?$(_b58):span.find(".tagbox-label"); +if(_b59.length){ +var _b5a=$(_b57).tagbox("textbox"); +var _b5b=$(_b59[0]); +var _b5c=_b5b.outerHeight(true)-_b5b.outerHeight(); +var _b5d=_b5a.outerHeight()-_b5c*2; +_b59.css({height:_b5d+"px",lineHeight:_b5d+"px"}); +var _b5e=span.find(".textbox-addon").css("height","100%"); +_b5e.find(".textbox-icon").css("height","100%"); +span.find(".textbox-button").linkbutton("resize",{height:"100%"}); +} +}; +function _b5f(_b60){ +var span=$(_b60).next(); +span.unbind(".tagbox").bind("click.tagbox",function(e){ +var opts=$(_b60).tagbox("options"); +if(opts.disabled||opts.readonly){ +return; +} +if($(e.target).hasClass("tagbox-remove")){ +var _b61=parseInt($(e.target).parent().attr("tagbox-index")); +var _b62=$(_b60).tagbox("getValues"); +if(opts.onBeforeRemoveTag.call(_b60,_b62[_b61])==false){ +return; +} +opts.onRemoveTag.call(_b60,_b62[_b61]); +_b62.splice(_b61,1); +$(_b60).tagbox("setValues",_b62); +}else{ +var _b63=$(e.target).closest(".tagbox-label"); +if(_b63.length){ +var _b61=parseInt(_b63.attr("tagbox-index")); +var _b62=$(_b60).tagbox("getValues"); +opts.onClickTag.call(_b60,_b62[_b61]); +} +} +$(this).find(".textbox-text").focus(); +}).bind("keyup.tagbox",function(e){ +_b64(_b60); +}).bind("mouseover.tagbox",function(e){ +if($(e.target).closest(".textbox-button,.textbox-addon,.tagbox-label").length){ +$(this).triggerHandler("mouseleave"); +}else{ +$(this).find(".textbox-text").triggerHandler("mouseenter"); +} +}).bind("mouseleave.tagbox",function(e){ +$(this).find(".textbox-text").triggerHandler("mouseleave"); +}); +}; +function _b64(_b65){ +var opts=$(_b65).tagbox("options"); +var _b66=$(_b65).tagbox("textbox"); +var span=$(_b65).next(); +var tmp=$("").appendTo("body"); +tmp.attr("style",_b66.attr("style")); +tmp.css({position:"absolute",top:-9999,left:-9999,width:"auto",fontFamily:_b66.css("fontFamily"),fontSize:_b66.css("fontSize"),fontWeight:_b66.css("fontWeight"),whiteSpace:"nowrap"}); +var _b67=_b68(_b66.val()); +var _b69=_b68(opts.prompt||""); +tmp.remove(); +var _b6a=Math.min(Math.max(_b67,_b69)+20,span.width()); +_b66._outerWidth(_b6a); +span.find(".textbox-button").linkbutton("resize",{height:"100%"}); +function _b68(val){ +var s=val.replace(/&/g,"&").replace(/\s/g," ").replace(//g,">"); +tmp.html(s); +return tmp.outerWidth(); +}; +}; +function _b6b(_b6c){ +var t=$(_b6c); +var opts=t.tagbox("options"); +if(opts.limitToList){ +var _b6d=t.tagbox("panel"); +var item=_b6d.children("div.combobox-item-hover"); +if(item.length){ +item.removeClass("combobox-item-hover"); +var row=opts.finder.getRow(_b6c,item); +var _b6e=row[opts.valueField]; +$(_b6c).tagbox(item.hasClass("combobox-item-selected")?"unselect":"select",_b6e); +} +$(_b6c).tagbox("hidePanel"); +}else{ +var v=$.trim($(_b6c).tagbox("getText")); +if(v!==""){ +var _b6f=$(_b6c).tagbox("getValues"); +_b6f.push(v); +$(_b6c).tagbox("setValues",_b6f); +} +} +}; +function _b70(_b71,_b72){ +$(_b71).combobox("setText",""); +_b64(_b71); +$(_b71).combobox("setValues",_b72); +$(_b71).combobox("setText",""); +$(_b71).tagbox("validate"); +}; +$.fn.tagbox=function(_b73,_b74){ +if(typeof _b73=="string"){ +var _b75=$.fn.tagbox.methods[_b73]; +if(_b75){ +return _b75(this,_b74); +}else{ +return this.combobox(_b73,_b74); +} +} +_b73=_b73||{}; +return this.each(function(){ +var _b76=$.data(this,"tagbox"); +if(_b76){ +$.extend(_b76.options,_b73); +}else{ +$.data(this,"tagbox",{options:$.extend({},$.fn.tagbox.defaults,$.fn.tagbox.parseOptions(this),_b73)}); +} +_b49(this); +_b5f(this); +}); +}; +$.fn.tagbox.methods={options:function(jq){ +var _b77=jq.combobox("options"); +return $.extend($.data(jq[0],"tagbox").options,{width:_b77.width,height:_b77.height,originalValue:_b77.originalValue,disabled:_b77.disabled,readonly:_b77.readonly}); +},setValues:function(jq,_b78){ +return jq.each(function(){ +_b70(this,_b78); +}); +}}; +$.fn.tagbox.parseOptions=function(_b79){ +return $.extend({},$.fn.combobox.parseOptions(_b79),$.parser.parseOptions(_b79,[])); +}; +$.fn.tagbox.defaults=$.extend({},$.fn.combobox.defaults,{hasDownArrow:false,multiple:true,reversed:true,selectOnNavigation:false,tipOptions:$.extend({},$.fn.textbox.defaults.tipOptions,{showDelay:200}),val:function(_b7a){ +var vv=$(_b7a).parent().prev().tagbox("getValues"); +if($(_b7a).is(":focus")){ +vv.push($(_b7a).val()); +} +return vv.join(","); +},inputEvents:$.extend({},$.fn.combo.defaults.inputEvents,{blur:function(e){ +var _b7b=e.data.target; +var opts=$(_b7b).tagbox("options"); +if(opts.limitToList){ +_b6b(_b7b); +} +}}),keyHandler:$.extend({},$.fn.combobox.defaults.keyHandler,{enter:function(e){ +_b6b(this); +},query:function(q,e){ +var opts=$(this).tagbox("options"); +if(opts.limitToList){ +$.fn.combobox.defaults.keyHandler.query.call(this,q,e); +}else{ +$(this).combobox("hidePanel"); +} +}}),tagFormatter:function(_b7c,row){ +var opts=$(this).tagbox("options"); +return row?row[opts.textField]:_b7c; +},tagStyler:function(_b7d,row){ +return ""; +},onClickTag:function(_b7e){ +},onBeforeRemoveTag:function(_b7f){ +},onRemoveTag:function(_b80){ +}}); +})(jQuery); +(function($){ +function _b81(_b82){ +var _b83=$.data(_b82,"datebox"); +var opts=_b83.options; +$(_b82).addClass("datebox-f").combo($.extend({},opts,{onShowPanel:function(){ +_b84(this); +_b85(this); +_b86(this); +_b94(this,$(this).datebox("getText"),true); +opts.onShowPanel.call(this); +}})); +if(!_b83.calendar){ +var _b87=$(_b82).combo("panel").css("overflow","hidden"); +_b87.panel("options").onBeforeDestroy=function(){ +var c=$(this).find(".calendar-shared"); +if(c.length){ +c.insertBefore(c[0].pholder); +} +}; +var cc=$("
          ").prependTo(_b87); +if(opts.sharedCalendar){ +var c=$(opts.sharedCalendar); +if(!c[0].pholder){ +c[0].pholder=$("
          ").insertAfter(c); +} +c.addClass("calendar-shared").appendTo(cc); +if(!c.hasClass("calendar")){ +c.calendar(); +} +_b83.calendar=c; +}else{ +_b83.calendar=$("
          ").appendTo(cc).calendar(); +} +$.extend(_b83.calendar.calendar("options"),{fit:true,border:false,onSelect:function(date){ +var _b88=this.target; +var opts=$(_b88).datebox("options"); +_b94(_b88,opts.formatter.call(_b88,date)); +$(_b88).combo("hidePanel"); +opts.onSelect.call(_b88,date); +}}); +} +$(_b82).combo("textbox").parent().addClass("datebox"); +$(_b82).datebox("initValue",opts.value); +function _b84(_b89){ +var opts=$(_b89).datebox("options"); +var _b8a=$(_b89).combo("panel"); +_b8a.unbind(".datebox").bind("click.datebox",function(e){ +if($(e.target).hasClass("datebox-button-a")){ +var _b8b=parseInt($(e.target).attr("datebox-button-index")); +opts.buttons[_b8b].handler.call(e.target,_b89); +} +}); +}; +function _b85(_b8c){ +var _b8d=$(_b8c).combo("panel"); +if(_b8d.children("div.datebox-button").length){ +return; +} +var _b8e=$("
          ").appendTo(_b8d); +var tr=_b8e.find("tr"); +for(var i=0;i").appendTo(tr); +var btn=opts.buttons[i]; +var t=$("").html($.isFunction(btn.text)?btn.text(_b8c):btn.text).appendTo(td); +t.attr("datebox-button-index",i); +} +tr.find("td").css("width",(100/opts.buttons.length)+"%"); +}; +function _b86(_b8f){ +var _b90=$(_b8f).combo("panel"); +var cc=_b90.children("div.datebox-calendar-inner"); +_b90.children()._outerWidth(_b90.width()); +_b83.calendar.appendTo(cc); +_b83.calendar[0].target=_b8f; +if(opts.panelHeight!="auto"){ +var _b91=_b90.height(); +_b90.children().not(cc).each(function(){ +_b91-=$(this).outerHeight(); +}); +cc._outerHeight(_b91); +} +_b83.calendar.calendar("resize"); +}; +}; +function _b92(_b93,q){ +_b94(_b93,q,true); +}; +function _b95(_b96){ +var _b97=$.data(_b96,"datebox"); +var opts=_b97.options; +var _b98=_b97.calendar.calendar("options").current; +if(_b98){ +_b94(_b96,opts.formatter.call(_b96,_b98)); +$(_b96).combo("hidePanel"); +} +}; +function _b94(_b99,_b9a,_b9b){ +var _b9c=$.data(_b99,"datebox"); +var opts=_b9c.options; +var _b9d=_b9c.calendar; +_b9d.calendar("moveTo",opts.parser.call(_b99,_b9a)); +if(_b9b){ +$(_b99).combo("setValue",_b9a); +}else{ +if(_b9a){ +_b9a=opts.formatter.call(_b99,_b9d.calendar("options").current); +} +$(_b99).combo("setText",_b9a).combo("setValue",_b9a); +} +}; +$.fn.datebox=function(_b9e,_b9f){ +if(typeof _b9e=="string"){ +var _ba0=$.fn.datebox.methods[_b9e]; +if(_ba0){ +return _ba0(this,_b9f); +}else{ +return this.combo(_b9e,_b9f); +} +} +_b9e=_b9e||{}; +return this.each(function(){ +var _ba1=$.data(this,"datebox"); +if(_ba1){ +$.extend(_ba1.options,_b9e); +}else{ +$.data(this,"datebox",{options:$.extend({},$.fn.datebox.defaults,$.fn.datebox.parseOptions(this),_b9e)}); +} +_b81(this); +}); +}; +$.fn.datebox.methods={options:function(jq){ +var _ba2=jq.combo("options"); +return $.extend($.data(jq[0],"datebox").options,{width:_ba2.width,height:_ba2.height,originalValue:_ba2.originalValue,disabled:_ba2.disabled,readonly:_ba2.readonly}); +},cloneFrom:function(jq,from){ +return jq.each(function(){ +$(this).combo("cloneFrom",from); +$.data(this,"datebox",{options:$.extend(true,{},$(from).datebox("options")),calendar:$(from).datebox("calendar")}); +$(this).addClass("datebox-f"); +}); +},calendar:function(jq){ +return $.data(jq[0],"datebox").calendar; +},initValue:function(jq,_ba3){ +return jq.each(function(){ +var opts=$(this).datebox("options"); +var _ba4=opts.value; +if(_ba4){ +_ba4=opts.formatter.call(this,opts.parser.call(this,_ba4)); +} +$(this).combo("initValue",_ba4).combo("setText",_ba4); +}); +},setValue:function(jq,_ba5){ +return jq.each(function(){ +_b94(this,_ba5); +}); +},reset:function(jq){ +return jq.each(function(){ +var opts=$(this).datebox("options"); +$(this).datebox("setValue",opts.originalValue); +}); +}}; +$.fn.datebox.parseOptions=function(_ba6){ +return $.extend({},$.fn.combo.parseOptions(_ba6),$.parser.parseOptions(_ba6,["sharedCalendar"])); +}; +$.fn.datebox.defaults=$.extend({},$.fn.combo.defaults,{panelWidth:180,panelHeight:"auto",sharedCalendar:null,keyHandler:{up:function(e){ +},down:function(e){ +},left:function(e){ +},right:function(e){ +},enter:function(e){ +_b95(this); +},query:function(q,e){ +_b92(this,q); +}},currentText:"Today",closeText:"Close",okText:"Ok",buttons:[{text:function(_ba7){ +return $(_ba7).datebox("options").currentText; +},handler:function(_ba8){ +var now=new Date(); +$(_ba8).datebox("calendar").calendar({year:now.getFullYear(),month:now.getMonth()+1,current:new Date(now.getFullYear(),now.getMonth(),now.getDate())}); +_b95(_ba8); +}},{text:function(_ba9){ +return $(_ba9).datebox("options").closeText; +},handler:function(_baa){ +$(this).closest("div.combo-panel").panel("close"); +}}],formatter:function(date){ +var y=date.getFullYear(); +var m=date.getMonth()+1; +var d=date.getDate(); +return (m<10?("0"+m):m)+"/"+(d<10?("0"+d):d)+"/"+y; +},parser:function(s){ +if(!s){ +return new Date(); +} +var ss=s.split("/"); +var m=parseInt(ss[0],10); +var d=parseInt(ss[1],10); +var y=parseInt(ss[2],10); +if(!isNaN(y)&&!isNaN(m)&&!isNaN(d)){ +return new Date(y,m-1,d); +}else{ +return new Date(); +} +},onSelect:function(date){ +}}); +})(jQuery); +(function($){ +function _bab(_bac){ +var _bad=$.data(_bac,"datetimebox"); +var opts=_bad.options; +$(_bac).datebox($.extend({},opts,{onShowPanel:function(){ +var _bae=$(this).datetimebox("getValue"); +_bb4(this,_bae,true); +opts.onShowPanel.call(this); +},formatter:$.fn.datebox.defaults.formatter,parser:$.fn.datebox.defaults.parser})); +$(_bac).removeClass("datebox-f").addClass("datetimebox-f"); +$(_bac).datebox("calendar").calendar({onSelect:function(date){ +opts.onSelect.call(this.target,date); +}}); +if(!_bad.spinner){ +var _baf=$(_bac).datebox("panel"); +var p=$("
          ").insertAfter(_baf.children("div.datebox-calendar-inner")); +_bad.spinner=p.children("input"); +} +_bad.spinner.timespinner({width:opts.spinnerWidth,showSeconds:opts.showSeconds,separator:opts.timeSeparator}); +$(_bac).datetimebox("initValue",opts.value); +}; +function _bb0(_bb1){ +var c=$(_bb1).datetimebox("calendar"); +var t=$(_bb1).datetimebox("spinner"); +var date=c.calendar("options").current; +return new Date(date.getFullYear(),date.getMonth(),date.getDate(),t.timespinner("getHours"),t.timespinner("getMinutes"),t.timespinner("getSeconds")); +}; +function _bb2(_bb3,q){ +_bb4(_bb3,q,true); +}; +function _bb5(_bb6){ +var opts=$.data(_bb6,"datetimebox").options; +var date=_bb0(_bb6); +_bb4(_bb6,opts.formatter.call(_bb6,date)); +$(_bb6).combo("hidePanel"); +}; +function _bb4(_bb7,_bb8,_bb9){ +var opts=$.data(_bb7,"datetimebox").options; +$(_bb7).combo("setValue",_bb8); +if(!_bb9){ +if(_bb8){ +var date=opts.parser.call(_bb7,_bb8); +$(_bb7).combo("setText",opts.formatter.call(_bb7,date)); +$(_bb7).combo("setValue",opts.formatter.call(_bb7,date)); +}else{ +$(_bb7).combo("setText",_bb8); +} +} +var date=opts.parser.call(_bb7,_bb8); +$(_bb7).datetimebox("calendar").calendar("moveTo",date); +$(_bb7).datetimebox("spinner").timespinner("setValue",_bba(date)); +function _bba(date){ +function _bbb(_bbc){ +return (_bbc<10?"0":"")+_bbc; +}; +var tt=[_bbb(date.getHours()),_bbb(date.getMinutes())]; +if(opts.showSeconds){ +tt.push(_bbb(date.getSeconds())); +} +return tt.join($(_bb7).datetimebox("spinner").timespinner("options").separator); +}; +}; +$.fn.datetimebox=function(_bbd,_bbe){ +if(typeof _bbd=="string"){ +var _bbf=$.fn.datetimebox.methods[_bbd]; +if(_bbf){ +return _bbf(this,_bbe); +}else{ +return this.datebox(_bbd,_bbe); +} +} +_bbd=_bbd||{}; +return this.each(function(){ +var _bc0=$.data(this,"datetimebox"); +if(_bc0){ +$.extend(_bc0.options,_bbd); +}else{ +$.data(this,"datetimebox",{options:$.extend({},$.fn.datetimebox.defaults,$.fn.datetimebox.parseOptions(this),_bbd)}); +} +_bab(this); +}); +}; +$.fn.datetimebox.methods={options:function(jq){ +var _bc1=jq.datebox("options"); +return $.extend($.data(jq[0],"datetimebox").options,{originalValue:_bc1.originalValue,disabled:_bc1.disabled,readonly:_bc1.readonly}); +},cloneFrom:function(jq,from){ +return jq.each(function(){ +$(this).datebox("cloneFrom",from); +$.data(this,"datetimebox",{options:$.extend(true,{},$(from).datetimebox("options")),spinner:$(from).datetimebox("spinner")}); +$(this).removeClass("datebox-f").addClass("datetimebox-f"); +}); +},spinner:function(jq){ +return $.data(jq[0],"datetimebox").spinner; +},initValue:function(jq,_bc2){ +return jq.each(function(){ +var opts=$(this).datetimebox("options"); +var _bc3=opts.value; +if(_bc3){ +_bc3=opts.formatter.call(this,opts.parser.call(this,_bc3)); +} +$(this).combo("initValue",_bc3).combo("setText",_bc3); +}); +},setValue:function(jq,_bc4){ +return jq.each(function(){ +_bb4(this,_bc4); +}); +},reset:function(jq){ +return jq.each(function(){ +var opts=$(this).datetimebox("options"); +$(this).datetimebox("setValue",opts.originalValue); +}); +}}; +$.fn.datetimebox.parseOptions=function(_bc5){ +var t=$(_bc5); +return $.extend({},$.fn.datebox.parseOptions(_bc5),$.parser.parseOptions(_bc5,["timeSeparator","spinnerWidth",{showSeconds:"boolean"}])); +}; +$.fn.datetimebox.defaults=$.extend({},$.fn.datebox.defaults,{spinnerWidth:"100%",showSeconds:true,timeSeparator:":",keyHandler:{up:function(e){ +},down:function(e){ +},left:function(e){ +},right:function(e){ +},enter:function(e){ +_bb5(this); +},query:function(q,e){ +_bb2(this,q); +}},buttons:[{text:function(_bc6){ +return $(_bc6).datetimebox("options").currentText; +},handler:function(_bc7){ +var opts=$(_bc7).datetimebox("options"); +_bb4(_bc7,opts.formatter.call(_bc7,new Date())); +$(_bc7).datetimebox("hidePanel"); +}},{text:function(_bc8){ +return $(_bc8).datetimebox("options").okText; +},handler:function(_bc9){ +_bb5(_bc9); +}},{text:function(_bca){ +return $(_bca).datetimebox("options").closeText; +},handler:function(_bcb){ +$(_bcb).datetimebox("hidePanel"); +}}],formatter:function(date){ +var h=date.getHours(); +var M=date.getMinutes(); +var s=date.getSeconds(); +function _bcc(_bcd){ +return (_bcd<10?"0":"")+_bcd; +}; +var _bce=$(this).datetimebox("spinner").timespinner("options").separator; +var r=$.fn.datebox.defaults.formatter(date)+" "+_bcc(h)+_bce+_bcc(M); +if($(this).datetimebox("options").showSeconds){ +r+=_bce+_bcc(s); +} +return r; +},parser:function(s){ +if($.trim(s)==""){ +return new Date(); +} +var dt=s.split(" "); +var d=$.fn.datebox.defaults.parser(dt[0]); +if(dt.length<2){ +return d; +} +var _bcf=$(this).datetimebox("spinner").timespinner("options").separator; +var tt=dt[1].split(_bcf); +var hour=parseInt(tt[0],10)||0; +var _bd0=parseInt(tt[1],10)||0; +var _bd1=parseInt(tt[2],10)||0; +return new Date(d.getFullYear(),d.getMonth(),d.getDate(),hour,_bd0,_bd1); +}}); +})(jQuery); +(function($){ +function init(_bd2){ +var _bd3=$("
          "+"
          "+""+""+"
          "+"
          "+"
          "+"
          "+""+"
          ").insertAfter(_bd2); +var t=$(_bd2); +t.addClass("slider-f").hide(); +var name=t.attr("name"); +if(name){ +_bd3.find("input.slider-value").attr("name",name); +t.removeAttr("name").attr("sliderName",name); +} +_bd3.bind("_resize",function(e,_bd4){ +if($(this).hasClass("easyui-fluid")||_bd4){ +_bd5(_bd2); +} +return false; +}); +return _bd3; +}; +function _bd5(_bd6,_bd7){ +var _bd8=$.data(_bd6,"slider"); +var opts=_bd8.options; +var _bd9=_bd8.slider; +if(_bd7){ +if(_bd7.width){ +opts.width=_bd7.width; +} +if(_bd7.height){ +opts.height=_bd7.height; +} +} +_bd9._size(opts); +if(opts.mode=="h"){ +_bd9.css("height",""); +_bd9.children("div").css("height",""); +}else{ +_bd9.css("width",""); +_bd9.children("div").css("width",""); +_bd9.children("div.slider-rule,div.slider-rulelabel,div.slider-inner")._outerHeight(_bd9._outerHeight()); +} +_bda(_bd6); +}; +function _bdb(_bdc){ +var _bdd=$.data(_bdc,"slider"); +var opts=_bdd.options; +var _bde=_bdd.slider; +var aa=opts.mode=="h"?opts.rule:opts.rule.slice(0).reverse(); +if(opts.reversed){ +aa=aa.slice(0).reverse(); +} +_bdf(aa); +function _bdf(aa){ +var rule=_bde.find("div.slider-rule"); +var _be0=_bde.find("div.slider-rulelabel"); +rule.empty(); +_be0.empty(); +for(var i=0;i").appendTo(rule); +span.css((opts.mode=="h"?"left":"top"),_be1); +if(aa[i]!="|"){ +span=$("").appendTo(_be0); +span.html(aa[i]); +if(opts.mode=="h"){ +span.css({left:_be1,marginLeft:-Math.round(span.outerWidth()/2)}); +}else{ +span.css({top:_be1,marginTop:-Math.round(span.outerHeight()/2)}); +} +} +} +}; +}; +function _be2(_be3){ +var _be4=$.data(_be3,"slider"); +var opts=_be4.options; +var _be5=_be4.slider; +_be5.removeClass("slider-h slider-v slider-disabled"); +_be5.addClass(opts.mode=="h"?"slider-h":"slider-v"); +_be5.addClass(opts.disabled?"slider-disabled":""); +var _be6=_be5.find(".slider-inner"); +_be6.html(""+""); +if(opts.range){ +_be6.append(""+""); +} +_be5.find("a.slider-handle").draggable({axis:opts.mode,cursor:"pointer",disabled:opts.disabled,onDrag:function(e){ +var left=e.data.left; +var _be7=_be5.width(); +if(opts.mode!="h"){ +left=e.data.top; +_be7=_be5.height(); +} +if(left<0||left>_be7){ +return false; +}else{ +_be8(left,this); +return false; +} +},onStartDrag:function(){ +_be4.isDragging=true; +opts.onSlideStart.call(_be3,opts.value); +},onStopDrag:function(e){ +_be8(opts.mode=="h"?e.data.left:e.data.top,this); +opts.onSlideEnd.call(_be3,opts.value); +opts.onComplete.call(_be3,opts.value); +_be4.isDragging=false; +}}); +_be5.find("div.slider-inner").unbind(".slider").bind("mousedown.slider",function(e){ +if(_be4.isDragging||opts.disabled){ +return; +} +var pos=$(this).offset(); +_be8(opts.mode=="h"?(e.pageX-pos.left):(e.pageY-pos.top)); +opts.onComplete.call(_be3,opts.value); +}); +function _be8(pos,_be9){ +var _bea=_beb(_be3,pos); +var s=Math.abs(_bea%opts.step); +if(s0; +if(_bea<=v2&&_bec){ +v1=_bea; +}else{ +if(_bea>=v1&&(!_bec)){ +v2=_bea; +} +} +}else{ +if(_beav2){ +v2=_bea; +}else{ +_beaopts.max){ +_bf4=opts.max; +} +var _bf5=$("").appendTo(_bf1); +_bf5.attr("name",name); +_bf5.val(_bf4); +_bf3.push(_bf4); +var _bf6=_bf1.find(".slider-handle:eq("+i+")"); +var tip=_bf6.next(); +var pos=_bf7(_bee,_bf4); +if(opts.showTip){ +tip.show(); +tip.html(opts.tipFormatter.call(_bee,_bf4)); +}else{ +tip.hide(); +} +if(opts.mode=="h"){ +var _bf8="left:"+pos+"px;"; +_bf6.attr("style",_bf8); +tip.attr("style",_bf8+"margin-left:"+(-Math.round(tip.outerWidth()/2))+"px"); +}else{ +var _bf8="top:"+pos+"px;"; +_bf6.attr("style",_bf8); +tip.attr("style",_bf8+"margin-left:"+(-Math.round(tip.outerWidth()))+"px"); +} +} +opts.value=opts.range?_bf3:_bf3[0]; +$(_bee).val(opts.range?_bf3.join(opts.separator):_bf3[0]); +if(_bf2.join(",")!=_bf3.join(",")){ +opts.onChange.call(_bee,opts.value,(opts.range?_bf2:_bf2[0])); +} +}; +function _bda(_bf9){ +var opts=$.data(_bf9,"slider").options; +var fn=opts.onChange; +opts.onChange=function(){ +}; +_bed(_bf9,opts.value); +opts.onChange=fn; +}; +function _bf7(_bfa,_bfb){ +var _bfc=$.data(_bfa,"slider"); +var opts=_bfc.options; +var _bfd=_bfc.slider; +var size=opts.mode=="h"?_bfd.width():_bfd.height(); +var pos=opts.converter.toPosition.call(_bfa,_bfb,size); +if(opts.mode=="v"){ +pos=_bfd.height()-pos; +} +if(opts.reversed){ +pos=size-pos; +} +return pos.toFixed(0); +}; +function _beb(_bfe,pos){ +var _bff=$.data(_bfe,"slider"); +var opts=_bff.options; +var _c00=_bff.slider; +var size=opts.mode=="h"?_c00.width():_c00.height(); +var pos=opts.mode=="h"?(opts.reversed?(size-pos):pos):(opts.reversed?pos:(size-pos)); +var _c01=opts.converter.toValue.call(_bfe,pos,size); +return _c01.toFixed(0); +}; +$.fn.slider=function(_c02,_c03){ +if(typeof _c02=="string"){ +return $.fn.slider.methods[_c02](this,_c03); +} +_c02=_c02||{}; +return this.each(function(){ +var _c04=$.data(this,"slider"); +if(_c04){ +$.extend(_c04.options,_c02); +}else{ +_c04=$.data(this,"slider",{options:$.extend({},$.fn.slider.defaults,$.fn.slider.parseOptions(this),_c02),slider:init(this)}); +$(this).removeAttr("disabled"); +} +var opts=_c04.options; +opts.min=parseFloat(opts.min); +opts.max=parseFloat(opts.max); +if(opts.range){ +if(!$.isArray(opts.value)){ +opts.value=$.map(String(opts.value).split(opts.separator),function(v){ +return parseFloat(v); +}); +} +if(opts.value.length<2){ +opts.value.push(opts.max); +} +}else{ +opts.value=parseFloat(opts.value); +} +opts.step=parseFloat(opts.step); +opts.originalValue=opts.value; +_be2(this); +_bdb(this); +_bd5(this); +}); +}; +$.fn.slider.methods={options:function(jq){ +return $.data(jq[0],"slider").options; +},destroy:function(jq){ +return jq.each(function(){ +$.data(this,"slider").slider.remove(); +$(this).remove(); +}); +},resize:function(jq,_c05){ +return jq.each(function(){ +_bd5(this,_c05); +}); +},getValue:function(jq){ +return jq.slider("options").value; +},getValues:function(jq){ +return jq.slider("options").value; +},setValue:function(jq,_c06){ +return jq.each(function(){ +_bed(this,[_c06]); +}); +},setValues:function(jq,_c07){ +return jq.each(function(){ +_bed(this,_c07); +}); +},clear:function(jq){ +return jq.each(function(){ +var opts=$(this).slider("options"); +_bed(this,opts.range?[opts.min,opts.max]:[opts.min]); +}); +},reset:function(jq){ +return jq.each(function(){ +var opts=$(this).slider("options"); +$(this).slider(opts.range?"setValues":"setValue",opts.originalValue); +}); +},enable:function(jq){ +return jq.each(function(){ +$.data(this,"slider").options.disabled=false; +_be2(this); +}); +},disable:function(jq){ +return jq.each(function(){ +$.data(this,"slider").options.disabled=true; +_be2(this); +}); +}}; +$.fn.slider.parseOptions=function(_c08){ +var t=$(_c08); +return $.extend({},$.parser.parseOptions(_c08,["width","height","mode",{reversed:"boolean",showTip:"boolean",range:"boolean",min:"number",max:"number",step:"number"}]),{value:(t.val()||undefined),disabled:(t.attr("disabled")?true:undefined),rule:(t.attr("rule")?eval(t.attr("rule")):undefined)}); +}; +$.fn.slider.defaults={width:"auto",height:"auto",mode:"h",reversed:false,showTip:false,disabled:false,range:false,value:0,separator:",",min:0,max:100,step:1,rule:[],tipFormatter:function(_c09){ +return _c09; +},converter:{toPosition:function(_c0a,size){ +var opts=$(this).slider("options"); +return (_c0a-opts.min)/(opts.max-opts.min)*size; +},toValue:function(pos,size){ +var opts=$(this).slider("options"); +return opts.min+(opts.max-opts.min)*(pos/size); +}},onChange:function(_c0b,_c0c){ +},onSlideStart:function(_c0d){ +},onSlideEnd:function(_c0e){ +},onComplete:function(_c0f){ +}}; +})(jQuery); + diff --git a/src/main/webapp/static/easyUI/jquery.easyui.mobile.js b/src/main/webapp/static/easyUI/jquery.easyui.mobile.js new file mode 100644 index 0000000000000000000000000000000000000000..31f97024f8eebf87c8193be225b031cd0f9b9979 --- /dev/null +++ b/src/main/webapp/static/easyUI/jquery.easyui.mobile.js @@ -0,0 +1,141 @@ +/** + * jQuery EasyUI 1.5.2 + * + * Copyright (c) 2009-2017 www.jeasyui.com. All rights reserved. + * + * Licensed under the freeware license: http://www.jeasyui.com/license_freeware.php + * To use it on other terms please contact us: info@jeasyui.com + * + */ +(function($){ +$.fn.navpanel=function(_1,_2){ +if(typeof _1=="string"){ +var _3=$.fn.navpanel.methods[_1]; +return _3?_3(this,_2):this.panel(_1,_2); +}else{ +_1=_1||{}; +return this.each(function(){ +var _4=$.data(this,"navpanel"); +if(_4){ +$.extend(_4.options,_1); +}else{ +_4=$.data(this,"navpanel",{options:$.extend({},$.fn.navpanel.defaults,$.fn.navpanel.parseOptions(this),_1)}); +} +$(this).panel(_4.options); +}); +} +}; +$.fn.navpanel.methods={options:function(jq){ +return $.data(jq[0],"navpanel").options; +}}; +$.fn.navpanel.parseOptions=function(_5){ +return $.extend({},$.fn.panel.parseOptions(_5),$.parser.parseOptions(_5,[])); +}; +$.fn.navpanel.defaults=$.extend({},$.fn.panel.defaults,{fit:true,border:false,cls:"navpanel"}); +$.parser.plugins.push("navpanel"); +})(jQuery); +(function($){ +$(function(){ +$.mobile.init(); +}); +$.mobile={defaults:{animation:"slide",direction:"left",reverseDirections:{up:"down",down:"up",left:"right",right:"left"}},panels:[],init:function(_6){ +$.mobile.panels=[]; +var _7=$(_6||"body").children(".navpanel:visible"); +if(_7.length){ +_7.not(":first").children(".panel-body").navpanel("close"); +var p=_7.eq(0).children(".panel-body"); +$.mobile.panels.push({panel:p,animation:$.mobile.defaults.animation,direction:$.mobile.defaults.direction}); +} +$(document).unbind(".mobile").bind("click.mobile",function(e){ +var a=$(e.target).closest("a"); +if(a.length){ +var _8=$.parser.parseOptions(a[0],["animation","direction",{back:"boolean"}]); +if(_8.back){ +$.mobile.back(); +e.preventDefault(); +}else{ +var _9=$.trim(a.attr("href")); +if(/^#/.test(_9)){ +var to=$(_9); +if(to.length&&to.hasClass("panel-body")){ +$.mobile.go(to,_8.animation,_8.direction); +e.preventDefault(); +} +} +} +} +}); +$(window).unbind(".mobile").bind("hashchange.mobile",function(){ +var _a=$.mobile.panels.length; +if(_a>1){ +var _b=location.hash; +var p=$.mobile.panels[_a-2]; +if(!_b||_b=="#&"+p.panel.attr("id")){ +$.mobile._back(); +} +} +}); +},nav:function(_c,to,_d,_e){ +if(window.WebKitAnimationEvent){ +_d=_d!=undefined?_d:$.mobile.defaults.animation; +_e=_e!=undefined?_e:$.mobile.defaults.direction; +var _f="m-"+_d+(_e?"-"+_e:""); +var p1=$(_c).panel("open").panel("resize").panel("panel"); +var p2=$(to).panel("open").panel("resize").panel("panel"); +p1.add(p2).bind("webkitAnimationEnd",function(){ +$(this).unbind("webkitAnimationEnd"); +var p=$(this).children(".panel-body"); +if($(this).hasClass("m-in")){ +p.panel("open").panel("resize"); +}else{ +p.panel("close"); +} +$(this).removeClass(_f+" m-in m-out"); +}); +p2.addClass(_f+" m-in"); +p1.addClass(_f+" m-out"); +}else{ +$(to).panel("open").panel("resize"); +$(_c).panel("close"); +} +},_go:function(_10,_11,_12){ +_11=_11!=undefined?_11:$.mobile.defaults.animation; +_12=_12!=undefined?_12:$.mobile.defaults.direction; +var _13=$.mobile.panels[$.mobile.panels.length-1].panel; +var to=$(_10); +if(_13[0]!=to[0]){ +$.mobile.nav(_13,to,_11,_12); +$.mobile.panels.push({panel:to,animation:_11,direction:_12}); +} +},_back:function(){ +if($.mobile.panels.length<2){ +return; +} +var p1=$.mobile.panels.pop(); +var p2=$.mobile.panels[$.mobile.panels.length-1]; +var _14=p1.animation; +var _15=$.mobile.defaults.reverseDirections[p1.direction]||""; +$.mobile.nav(p1.panel,p2.panel,_14,_15); +},go:function(_16,_17,_18){ +_17=_17!=undefined?_17:$.mobile.defaults.animation; +_18=_18!=undefined?_18:$.mobile.defaults.direction; +location.hash="#&"+$(_16).attr("id"); +$.mobile._go(_16,_17,_18); +},back:function(){ +history.go(-1); +}}; +$.map(["validatebox","textbox","passwordbox","filebox","searchbox","combo","combobox","combogrid","combotree","combotreegrid","datebox","datetimebox","numberbox","spinner","numberspinner","timespinner","datetimespinner"],function(_19){ +if($.fn[_19]){ +$.extend($.fn[_19].defaults,{iconWidth:28,tipPosition:"bottom"}); +} +}); +$.map(["spinner","numberspinner","timespinner","datetimespinner"],function(_1a){ +if($.fn[_1a]){ +$.extend($.fn[_1a].defaults,{iconWidth:56,spinAlign:"horizontal"}); +} +}); +if($.fn.menu){ +$.extend($.fn.menu.defaults,{itemHeight:30,noline:true}); +} +})(jQuery); + diff --git a/src/main/webapp/static/easyUI/locale/easyui-lang-af.js b/src/main/webapp/static/easyUI/locale/easyui-lang-af.js new file mode 100644 index 0000000000000000000000000000000000000000..35af5bb8aa732d8627312e54be534ba261b72017 --- /dev/null +++ b/src/main/webapp/static/easyUI/locale/easyui-lang-af.js @@ -0,0 +1,44 @@ +if ($.fn.pagination){ + $.fn.pagination.defaults.beforePageText = 'Bladsy'; + $.fn.pagination.defaults.afterPageText = 'Van {pages}'; + $.fn.pagination.defaults.displayMsg = 'Wys (from) tot (to) van (total) items'; +} +if ($.fn.datagrid){ + $.fn.datagrid.defaults.loadMsg = 'Verwerking, wag asseblief ...'; +} +if ($.fn.treegrid && $.fn.datagrid){ + $.fn.treegrid.defaults.loadMsg = $.fn.datagrid.defaults.loadMsg; +} +if ($.messager){ + $.messager.defaults.ok = 'Ok'; + $.messager.defaults.cancel = 'Die styl'; +} +$.map(['validatebox','textbox','passwordbox','filebox','searchbox', + 'combo','combobox','combogrid','combotree', + 'datebox','datetimebox','numberbox', + 'spinner','numberspinner','timespinner','datetimespinner'], function(plugin){ + if ($.fn[plugin]){ + $.fn[plugin].defaults.missingMessage = 'Die veld is verpligtend.'; + } +}); +if ($.fn.validatebox){ + $.fn.validatebox.defaults.rules.email.message = "Gee 'n geldige e-pos adres."; + $.fn.validatebox.defaults.rules.url.message = "Gee 'n geldige URL nie."; + $.fn.validatebox.defaults.rules.length.message = "Voer 'n waarde tussen {0} en {1}."; +} +if ($.fn.calendar){ + $.fn.calendar.defaults.weeks = ['S','M','T','W','T','F','S']; + $.fn.calendar.defaults.months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; +} +if ($.fn.datebox){ + $.fn.datebox.defaults.currentText = 'Vandag'; + $.fn.datebox.defaults.closeText = 'Sluit'; + $.fn.datebox.defaults.okText = 'Ok'; +} +if ($.fn.datetimebox && $.fn.datebox){ + $.extend($.fn.datetimebox.defaults,{ + currentText: $.fn.datebox.defaults.currentText, + closeText: $.fn.datebox.defaults.closeText, + okText: $.fn.datebox.defaults.okText + }); +} diff --git a/src/main/webapp/static/easyUI/locale/easyui-lang-am.js b/src/main/webapp/static/easyUI/locale/easyui-lang-am.js new file mode 100644 index 0000000000000000000000000000000000000000..66e668f0d6909b3c732e1f216e69a3f6f15174f1 --- /dev/null +++ b/src/main/webapp/static/easyUI/locale/easyui-lang-am.js @@ -0,0 +1,46 @@ +if ($.fn.pagination){ + $.fn.pagination.defaults.beforePageText = 'Էջ'; + $.fn.pagination.defaults.afterPageText = 'ից {pages}'; + $.fn.pagination.defaults.displayMsg = 'Դիտել {from}-ից {to}-ը {total} գրառումից'; +} +if ($.fn.datagrid){ + $.fn.datagrid.defaults.loadMsg = 'Մշակվում է, խնդրում ենք սպասել ...'; +} +if ($.fn.treegrid && $.fn.datagrid){ + $.fn.treegrid.defaults.loadMsg = $.fn.datagrid.defaults.loadMsg; +} +if ($.messager){ + $.messager.defaults.ok = 'Այո'; + $.messager.defaults.cancel = 'Փակել'; +} +$.map(['validatebox','textbox','passwordbox','filebox','searchbox', + 'combo','combobox','combogrid','combotree', + 'datebox','datetimebox','numberbox', + 'spinner','numberspinner','timespinner','datetimespinner'], function(plugin){ + if ($.fn[plugin]){ + $.fn[plugin].defaults.missingMessage = 'Այս դաշտը պարտադիր է.'; + } +}); +if ($.fn.validatebox){ + $.fn.validatebox.defaults.rules.email.message = 'Խնդրում ենք մուտքագրել գործող e-mail հասցե.'; + $.fn.validatebox.defaults.rules.url.message = 'Խնդրում ենք մուտքագրել գործող URL.'; + $.fn.validatebox.defaults.rules.length.message = 'Խնդրում ենք մուտքագրել արժեք {0} {1}.'; + $.fn.validatebox.defaults.rules.remote.message = 'Խնդրում ենք ուղղել այս դաշտը.'; +} +if ($.fn.calendar){ + $.fn.calendar.defaults.firstDay = 1; + $.fn.calendar.defaults.weeks = ['Կ.','Ե.','Ե.','Չ.','Հ.','Ու.','Շ.']; + $.fn.calendar.defaults.months = ['Հունվար', 'Փետրվար', 'Մարտ', 'Ապրիլ', 'Մայիս', 'Հունիս', 'Հուլիս', 'Օգոստոս', 'Սեպտեմբեր', 'Հոկտեմբեր', 'Նոյեմբեր', 'Դեկտեմբեր']; +} +if ($.fn.datebox){ + $.fn.datebox.defaults.currentText = 'Այսօր'; + $.fn.datebox.defaults.closeText = 'Փակել'; + $.fn.datebox.defaults.okText = 'Այո'; +} +if ($.fn.datetimebox && $.fn.datebox){ + $.extend($.fn.datetimebox.defaults,{ + currentText: $.fn.datebox.defaults.currentText, + closeText: $.fn.datebox.defaults.closeText, + okText: $.fn.datebox.defaults.okText + }); +} diff --git a/src/main/webapp/static/easyUI/locale/easyui-lang-ar.js b/src/main/webapp/static/easyUI/locale/easyui-lang-ar.js new file mode 100644 index 0000000000000000000000000000000000000000..cf38c849ac72295c34de564f3b80830128ff2876 --- /dev/null +++ b/src/main/webapp/static/easyUI/locale/easyui-lang-ar.js @@ -0,0 +1,45 @@ +if ($.fn.pagination){ + $.fn.pagination.defaults.beforePageText = 'صفحة'; + $.fn.pagination.defaults.afterPageText = 'من {pages}'; + $.fn.pagination.defaults.displayMsg = 'عرض {from} إلى {to} من {total} عنصر'; +} +if ($.fn.datagrid){ + $.fn.datagrid.defaults.loadMsg = 'معالجة, الرجاء الإنتظار ...'; +} +if ($.fn.treegrid && $.fn.datagrid){ + $.fn.treegrid.defaults.loadMsg = $.fn.datagrid.defaults.loadMsg; +} +if ($.messager){ + $.messager.defaults.ok = 'موافق'; + $.messager.defaults.cancel = 'إلغاء'; +} +$.map(['validatebox','textbox','passwordbox','filebox','searchbox', + 'combo','combobox','combogrid','combotree', + 'datebox','datetimebox','numberbox', + 'spinner','numberspinner','timespinner','datetimespinner'], function(plugin){ + if ($.fn[plugin]){ + $.fn[plugin].defaults.missingMessage = 'هذا الحقل مطلوب.'; + } +}); +if ($.fn.validatebox){ + $.fn.validatebox.defaults.rules.email.message = 'الرجاء إدخال بريد إلكتروني صحيح.'; + $.fn.validatebox.defaults.rules.url.message = 'الرجاء إدخال رابط صحيح.'; + $.fn.validatebox.defaults.rules.length.message = 'الرجاء إدخال قيمة بين {0} و {1}.'; + $.fn.validatebox.defaults.rules.remote.message = 'الرجاء التأكد من الحقل.'; +} +if ($.fn.calendar){ + $.fn.calendar.defaults.weeks = ['S','M','T','W','T','F','S']; + $.fn.calendar.defaults.months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; +} +if ($.fn.datebox){ + $.fn.datebox.defaults.currentText = 'اليوم'; + $.fn.datebox.defaults.closeText = 'إغلاق'; + $.fn.datebox.defaults.okText = 'موافق'; +} +if ($.fn.datetimebox && $.fn.datebox){ + $.extend($.fn.datetimebox.defaults,{ + currentText: $.fn.datebox.defaults.currentText, + closeText: $.fn.datebox.defaults.closeText, + okText: $.fn.datebox.defaults.okText + }); +} diff --git a/src/main/webapp/static/easyUI/locale/easyui-lang-bg.js b/src/main/webapp/static/easyUI/locale/easyui-lang-bg.js new file mode 100644 index 0000000000000000000000000000000000000000..fc385201d7637f45388b2debad55e401633727ce --- /dev/null +++ b/src/main/webapp/static/easyUI/locale/easyui-lang-bg.js @@ -0,0 +1,44 @@ +if ($.fn.pagination){ + $.fn.pagination.defaults.beforePageText = 'Страница'; + $.fn.pagination.defaults.afterPageText = 'от {pages}'; + $.fn.pagination.defaults.displayMsg = 'Показани {from} за {to} от {total} продукти'; +} +if ($.fn.datagrid){ + $.fn.datagrid.defaults.loadMsg = 'Обработка, моля изчакайте ...'; +} +if ($.fn.treegrid && $.fn.datagrid){ + $.fn.treegrid.defaults.loadMsg = $.fn.datagrid.defaults.loadMsg; +} +if ($.messager){ + $.messager.defaults.ok = 'Добре'; + $.messager.defaults.cancel = 'Задрасквам'; +} +$.map(['validatebox','textbox','passwordbox','filebox','searchbox', + 'combo','combobox','combogrid','combotree', + 'datebox','datetimebox','numberbox', + 'spinner','numberspinner','timespinner','datetimespinner'], function(plugin){ + if ($.fn[plugin]){ + $.fn[plugin].defaults.missingMessage = 'Това поле е задължително.'; + } +}); +if ($.fn.validatebox){ + $.fn.validatebox.defaults.rules.email.message = 'Моля, въведете валиден имейл адрес.'; + $.fn.validatebox.defaults.rules.url.message = 'Моля въведете валиден URL.'; + $.fn.validatebox.defaults.rules.length.message = 'Моля, въведете стойност между {0} и {1}.'; +} +if ($.fn.calendar){ + $.fn.calendar.defaults.weeks = ['S','M','T','W','T','F','S']; + $.fn.calendar.defaults.months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; +} +if ($.fn.datebox){ + $.fn.datebox.defaults.currentText = 'Днес'; + $.fn.datebox.defaults.closeText = 'Близо'; + $.fn.datebox.defaults.okText = 'Добре'; +} +if ($.fn.datetimebox && $.fn.datebox){ + $.extend($.fn.datetimebox.defaults,{ + currentText: $.fn.datebox.defaults.currentText, + closeText: $.fn.datebox.defaults.closeText, + okText: $.fn.datebox.defaults.okText + }); +} diff --git a/src/main/webapp/static/easyUI/locale/easyui-lang-ca.js b/src/main/webapp/static/easyUI/locale/easyui-lang-ca.js new file mode 100644 index 0000000000000000000000000000000000000000..565ece78ef77e0be02a92dbdc18b0022f06e769d --- /dev/null +++ b/src/main/webapp/static/easyUI/locale/easyui-lang-ca.js @@ -0,0 +1,44 @@ +if ($.fn.pagination){ + $.fn.pagination.defaults.beforePageText = 'Pàgina'; + $.fn.pagination.defaults.afterPageText = 'de {pages}'; + $.fn.pagination.defaults.displayMsg = "Veient {from} a {to} de {total} d'articles"; +} +if ($.fn.datagrid){ + $.fn.datagrid.defaults.loadMsg = 'Elaboració, si us plau esperi ...'; +} +if ($.fn.treegrid && $.fn.datagrid){ + $.fn.treegrid.defaults.loadMsg = $.fn.datagrid.defaults.loadMsg; +} +if ($.messager){ + $.messager.defaults.ok = 'Ok'; + $.messager.defaults.cancel = 'Cancel'; +} +$.map(['validatebox','textbox','passwordbox','filebox','searchbox', + 'combo','combobox','combogrid','combotree', + 'datebox','datetimebox','numberbox', + 'spinner','numberspinner','timespinner','datetimespinner'], function(plugin){ + if ($.fn[plugin]){ + $.fn[plugin].defaults.missingMessage = 'Aquest camp és obligatori.'; + } +}); +if ($.fn.validatebox){ + $.fn.validatebox.defaults.rules.email.message = 'Introduïu una adreça de correu electrònic vàlida.'; + $.fn.validatebox.defaults.rules.url.message = 'Si us plau, introduïu un URL vàlida.'; + $.fn.validatebox.defaults.rules.length.message = 'Si us plau, introduïu un valor entre {0} i {1}.'; +} +if ($.fn.calendar){ + $.fn.calendar.defaults.weeks = ['S','M','T','W','T','F','S']; + $.fn.calendar.defaults.months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; +} +if ($.fn.datebox){ + $.fn.datebox.defaults.currentText = 'Avui'; + $.fn.datebox.defaults.closeText = 'Tancar'; + $.fn.datebox.defaults.okText = 'Ok'; +} +if ($.fn.datetimebox && $.fn.datebox){ + $.extend($.fn.datetimebox.defaults,{ + currentText: $.fn.datebox.defaults.currentText, + closeText: $.fn.datebox.defaults.closeText, + okText: $.fn.datebox.defaults.okText + }); +} diff --git a/src/main/webapp/static/easyUI/locale/easyui-lang-cs.js b/src/main/webapp/static/easyUI/locale/easyui-lang-cs.js new file mode 100644 index 0000000000000000000000000000000000000000..0c90529e2939a5c833ba060f7d2ddd8cd6de98a9 --- /dev/null +++ b/src/main/webapp/static/easyUI/locale/easyui-lang-cs.js @@ -0,0 +1,44 @@ +if ($.fn.pagination){ + $.fn.pagination.defaults.beforePageText = 'Strana'; + $.fn.pagination.defaults.afterPageText = 'z {pages}'; + $.fn.pagination.defaults.displayMsg = 'Zobrazuji {from} do {to} z {total} položky'; +} +if ($.fn.datagrid){ + $.fn.datagrid.defaults.loadMsg = 'Zpracování, čekejte prosím ...'; +} +if ($.fn.treegrid && $.fn.datagrid){ + $.fn.treegrid.defaults.loadMsg = $.fn.datagrid.defaults.loadMsg; +} +if ($.messager){ + $.messager.defaults.ok = 'Ok'; + $.messager.defaults.cancel = 'Zrušit'; +} +$.map(['validatebox','textbox','passwordbox','filebox','searchbox', + 'combo','combobox','combogrid','combotree', + 'datebox','datetimebox','numberbox', + 'spinner','numberspinner','timespinner','datetimespinner'], function(plugin){ + if ($.fn[plugin]){ + $.fn[plugin].defaults.missingMessage = 'Toto pole je vyžadováno.'; + } +}); +if ($.fn.validatebox){ + $.fn.validatebox.defaults.rules.email.message = 'Zadejte prosím platnou e-mailovou adresu.'; + $.fn.validatebox.defaults.rules.url.message = 'Zadejte prosím platnou adresu URL.'; + $.fn.validatebox.defaults.rules.length.message = 'Prosím, zadejte hodnotu mezi {0} a {1}.'; +} +if ($.fn.calendar){ + $.fn.calendar.defaults.weeks = ['S','M','T','W','T','F','S']; + $.fn.calendar.defaults.months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; +} +if ($.fn.datebox){ + $.fn.datebox.defaults.currentText = 'Dnes'; + $.fn.datebox.defaults.closeText = 'Zavřít'; + $.fn.datebox.defaults.okText = 'Ok'; +} +if ($.fn.datetimebox && $.fn.datebox){ + $.extend($.fn.datetimebox.defaults,{ + currentText: $.fn.datebox.defaults.currentText, + closeText: $.fn.datebox.defaults.closeText, + okText: $.fn.datebox.defaults.okText + }); +} diff --git a/src/main/webapp/static/easyUI/locale/easyui-lang-cz.js b/src/main/webapp/static/easyUI/locale/easyui-lang-cz.js new file mode 100644 index 0000000000000000000000000000000000000000..dc3fdff478ece810c02a8b94be9880a81b897eb1 --- /dev/null +++ b/src/main/webapp/static/easyUI/locale/easyui-lang-cz.js @@ -0,0 +1,44 @@ +if ($.fn.pagination){ + $.fn.pagination.defaults.beforePageText = 'Strana'; + $.fn.pagination.defaults.afterPageText = 'z {pages}'; + $.fn.pagination.defaults.displayMsg = 'Zobrazuji záznam {from} až {to} z {total}.'; +} +if ($.fn.datagrid){ + $.fn.datagrid.defaults.loadMsg = 'Pracuji, čekejte prosím…'; +} +if ($.fn.treegrid && $.fn.datagrid){ + $.fn.treegrid.defaults.loadMsg = $.fn.datagrid.defaults.loadMsg; +} +if ($.messager){ + $.messager.defaults.ok = 'Ok'; + $.messager.defaults.cancel = 'Zrušit'; +} +$.map(['validatebox','textbox','passwordbox','filebox','searchbox', + 'combo','combobox','combogrid','combotree', + 'datebox','datetimebox','numberbox', + 'spinner','numberspinner','timespinner','datetimespinner'], function(plugin){ + if ($.fn[plugin]){ + $.fn[plugin].defaults.missingMessage = 'Toto pole je vyžadováno.'; + } +}); +if ($.fn.validatebox){ + $.fn.validatebox.defaults.rules.email.message = 'Zadejte, prosím, platnou e-mailovou adresu.'; + $.fn.validatebox.defaults.rules.url.message = 'Zadejte, prosím, platnou adresu URL.'; + $.fn.validatebox.defaults.rules.length.message = 'Zadejte, prosím, hodnotu mezi {0} a {1}.'; +} +if ($.fn.calendar){ + $.fn.calendar.defaults.weeks = ['N','P','Ú','S','Č','P','S']; //neděle pondělí úterý středa čtvrtek pátek sobota + $.fn.calendar.defaults.months = ['led', 'únr', 'bře', 'dub', 'kvě', 'čvn', 'čvc', 'srp', 'zář', 'říj', 'lis', 'pro']; //leden únor březen duben květen červen červenec srpen září říjen listopad prosinec +} +if ($.fn.datebox){ + $.fn.datebox.defaults.currentText = 'Dnes'; + $.fn.datebox.defaults.closeText = 'Zavřít'; + $.fn.datebox.defaults.okText = 'Ok'; +} +if ($.fn.datetimebox && $.fn.datebox){ + $.extend($.fn.datetimebox.defaults,{ + currentText: $.fn.datebox.defaults.currentText, + closeText: $.fn.datebox.defaults.closeText, + okText: $.fn.datebox.defaults.okText + }); +} diff --git a/src/main/webapp/static/easyUI/locale/easyui-lang-da.js b/src/main/webapp/static/easyUI/locale/easyui-lang-da.js new file mode 100644 index 0000000000000000000000000000000000000000..bd36fc73fb8823209c3c45556af0c50df1c5cde2 --- /dev/null +++ b/src/main/webapp/static/easyUI/locale/easyui-lang-da.js @@ -0,0 +1,44 @@ +if ($.fn.pagination){ + $.fn.pagination.defaults.beforePageText = 'Page'; + $.fn.pagination.defaults.afterPageText = 'af {pages}'; + $.fn.pagination.defaults.displayMsg = 'Viser {from} til {to} af {total} poster'; +} +if ($.fn.datagrid){ + $.fn.datagrid.defaults.loadMsg = 'Behandling, vent venligst ...'; +} +if ($.fn.treegrid && $.fn.datagrid){ + $.fn.treegrid.defaults.loadMsg = $.fn.datagrid.defaults.loadMsg; +} +if ($.messager){ + $.messager.defaults.ok = 'Ok'; + $.messager.defaults.cancel = 'Annuller'; +} +$.map(['validatebox','textbox','passwordbox','filebox','searchbox', + 'combo','combobox','combogrid','combotree', + 'datebox','datetimebox','numberbox', + 'spinner','numberspinner','timespinner','datetimespinner'], function(plugin){ + if ($.fn[plugin]){ + $.fn[plugin].defaults.missingMessage = 'Dette felt er påkrævet.'; + } +}); +if ($.fn.validatebox){ + $.fn.validatebox.defaults.rules.email.message = 'Angiv en gyldig e-mail-adresse.'; + $.fn.validatebox.defaults.rules.url.message = 'Angiv en gyldig webadresse.'; + $.fn.validatebox.defaults.rules.length.message = 'Angiv en værdi mellem {0} og {1}.'; +} +if ($.fn.calendar){ + $.fn.calendar.defaults.weeks = ['S','M','T','W','T','F','S']; + $.fn.calendar.defaults.months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; +} +if ($.fn.datebox){ + $.fn.datebox.defaults.currentText = 'I dag'; + $.fn.datebox.defaults.closeText = 'Luk'; + $.fn.datebox.defaults.okText = 'Ok'; +} +if ($.fn.datetimebox && $.fn.datebox){ + $.extend($.fn.datetimebox.defaults,{ + currentText: $.fn.datebox.defaults.currentText, + closeText: $.fn.datebox.defaults.closeText, + okText: $.fn.datebox.defaults.okText + }); +} diff --git a/src/main/webapp/static/easyUI/locale/easyui-lang-de.js b/src/main/webapp/static/easyUI/locale/easyui-lang-de.js new file mode 100644 index 0000000000000000000000000000000000000000..489a74ed4fbe754179c896b4e3abad6e8af6dad9 --- /dev/null +++ b/src/main/webapp/static/easyUI/locale/easyui-lang-de.js @@ -0,0 +1,63 @@ +if ($.fn.pagination){ + $.fn.pagination.defaults.beforePageText = 'Seite'; + $.fn.pagination.defaults.afterPageText = 'von {pages}'; + $.fn.pagination.defaults.displayMsg = '{from} bis {to} von {total} Datensätzen'; +} +if ($.fn.datagrid){ + $.fn.datagrid.defaults.loadMsg = 'Verarbeitung läuft, bitte warten ...'; +} +if ($.fn.treegrid && $.fn.datagrid){ + $.fn.treegrid.defaults.loadMsg = $.fn.datagrid.defaults.loadMsg; +} +if ($.messager){ + $.messager.defaults.ok = 'OK'; + $.messager.defaults.cancel = 'Abbruch'; +} +$.map(['validatebox','textbox','passwordbox','filebox','searchbox', + 'combo','combobox','combogrid','combotree', + 'datebox','datetimebox','numberbox', + 'spinner','numberspinner','timespinner','datetimespinner'], function(plugin){ + if ($.fn[plugin]){ + $.fn[plugin].defaults.missingMessage = 'Dieses Feld wird benötigt.'; + } +}); +if ($.fn.validatebox){ + $.fn.validatebox.defaults.rules.email.message = 'Bitte geben Sie eine gültige E-Mail-Adresse ein.'; + $.fn.validatebox.defaults.rules.url.message = 'Bitte geben Sie eine gültige URL ein.'; + $.fn.validatebox.defaults.rules.length.message = 'Bitte geben Sie einen Wert zwischen {0} und {1} ein.'; +} +if ($.fn.calendar){ + $.fn.calendar.defaults.firstDay = 1; + $.fn.calendar.defaults.weeks = ['S','M','D','M','D','F','S']; + $.fn.calendar.defaults.months = ['Jan', 'Feb', 'Mär', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez']; +} +if ($.fn.datebox){ + $.fn.datebox.defaults.currentText = 'Heute'; + $.fn.datebox.defaults.closeText = 'Schließen'; + $.fn.datebox.defaults.okText = 'OK'; + $.fn.datebox.defaults.formatter = function(date){ + var y = date.getFullYear(); + var m = date.getMonth()+1; + var d = date.getDate(); + return (d<10?('0'+d):d)+'.'+(m<10?('0'+m):m)+'.'+y; + }; + $.fn.datebox.defaults.parser = function(s){ + if (!s) return new Date(); + var ss = s.split('.'); + var m = parseInt(ss[1],10); + var d = parseInt(ss[0],10); + var y = parseInt(ss[2],10); + if (!isNaN(y) && !isNaN(m) && !isNaN(d)){ + return new Date(y,m-1,d); + } else { + return new Date(); + } + }; +} +if ($.fn.datetimebox && $.fn.datebox){ + $.extend($.fn.datetimebox.defaults,{ + currentText: $.fn.datebox.defaults.currentText, + closeText: $.fn.datebox.defaults.closeText, + okText: $.fn.datebox.defaults.okText + }); +} diff --git a/src/main/webapp/static/easyUI/locale/easyui-lang-el.js b/src/main/webapp/static/easyUI/locale/easyui-lang-el.js new file mode 100644 index 0000000000000000000000000000000000000000..8497d150e660ff91d679dabb78ccaf1dc15466da --- /dev/null +++ b/src/main/webapp/static/easyUI/locale/easyui-lang-el.js @@ -0,0 +1,45 @@ +if ($.fn.pagination){ + $.fn.pagination.defaults.beforePageText = 'Σελίδα'; + $.fn.pagination.defaults.afterPageText = 'από {pages}'; + $.fn.pagination.defaults.displayMsg = 'Εμφάνιση {from} εώς {to} από {total} αντικείμενα'; +} +if ($.fn.datagrid){ + $.fn.datagrid.defaults.loadMsg = 'Γίνεται Επεξεργασία, Παρακαλώ Περιμένετε ...'; +} +if ($.fn.treegrid && $.fn.datagrid){ + $.fn.treegrid.defaults.loadMsg = $.fn.datagrid.defaults.loadMsg; +} +if ($.messager){ + $.messager.defaults.ok = 'Εντάξει'; + $.messager.defaults.cancel = 'Άκυρο'; +} +$.map(['validatebox','textbox','passwordbox','filebox','searchbox', + 'combo','combobox','combogrid','combotree', + 'datebox','datetimebox','numberbox', + 'spinner','numberspinner','timespinner','datetimespinner'], function(plugin){ + if ($.fn[plugin]){ + $.fn[plugin].defaults.missingMessage = 'Το πεδίο είναι υποχρεωτικό.'; + } +}); +if ($.fn.validatebox){ + $.fn.validatebox.defaults.rules.email.message = 'Παρακαλώ εισάγετε σωστή Ηλ.Διεύθυνση.'; + $.fn.validatebox.defaults.rules.url.message = 'Παρακαλώ εισάγετε σωστό σύνδεσμο.'; + $.fn.validatebox.defaults.rules.length.message = 'Παρακαλώ εισάγετε τιμή μεταξύ {0} και {1}.'; + $.fn.validatebox.defaults.rules.remote.message = 'Παρακαλώ διορθώστε αυτό το πεδίο.'; +} +if ($.fn.calendar){ + $.fn.calendar.defaults.weeks = ['Κυρ','Δευ','Τρι','Τετ','Πεμ','Παρ','Σαβ']; + $.fn.calendar.defaults.months = ['Ιαν', 'Φεβ', 'Μαρ', 'Απρ', 'Μαϊ', 'Ιου', 'Ιου', 'Αυγ', 'Σεπ', 'Οκτ', 'Νοε', 'Δεκ']; +} +if ($.fn.datebox){ + $.fn.datebox.defaults.currentText = 'Σήμερα'; + $.fn.datebox.defaults.closeText = 'Κλείσιμο'; + $.fn.datebox.defaults.okText = 'Εντάξει'; +} +if ($.fn.datetimebox && $.fn.datebox){ + $.extend($.fn.datetimebox.defaults,{ + currentText: $.fn.datebox.defaults.currentText, + closeText: $.fn.datebox.defaults.closeText, + okText: $.fn.datebox.defaults.okText + }); +} diff --git a/src/main/webapp/static/easyUI/locale/easyui-lang-en.js b/src/main/webapp/static/easyUI/locale/easyui-lang-en.js new file mode 100644 index 0000000000000000000000000000000000000000..b5c3d2bc184b4586d7badeab8918e5f9fc16d777 --- /dev/null +++ b/src/main/webapp/static/easyUI/locale/easyui-lang-en.js @@ -0,0 +1,45 @@ +if ($.fn.pagination){ + $.fn.pagination.defaults.beforePageText = 'Page'; + $.fn.pagination.defaults.afterPageText = 'of {pages}'; + $.fn.pagination.defaults.displayMsg = 'Displaying {from} to {to} of {total} items'; +} +if ($.fn.datagrid){ + $.fn.datagrid.defaults.loadMsg = 'Processing, please wait ...'; +} +if ($.fn.treegrid && $.fn.datagrid){ + $.fn.treegrid.defaults.loadMsg = $.fn.datagrid.defaults.loadMsg; +} +if ($.messager){ + $.messager.defaults.ok = 'Ok'; + $.messager.defaults.cancel = 'Cancel'; +} +$.map(['validatebox','textbox','passwordbox','filebox','searchbox', + 'combo','combobox','combogrid','combotree', + 'datebox','datetimebox','numberbox', + 'spinner','numberspinner','timespinner','datetimespinner'], function(plugin){ + if ($.fn[plugin]){ + $.fn[plugin].defaults.missingMessage = 'This field is required.'; + } +}); +if ($.fn.validatebox){ + $.fn.validatebox.defaults.rules.email.message = 'Please enter a valid email address.'; + $.fn.validatebox.defaults.rules.url.message = 'Please enter a valid URL.'; + $.fn.validatebox.defaults.rules.length.message = 'Please enter a value between {0} and {1}.'; + $.fn.validatebox.defaults.rules.remote.message = 'Please fix this field.'; +} +if ($.fn.calendar){ + $.fn.calendar.defaults.weeks = ['S','M','T','W','T','F','S']; + $.fn.calendar.defaults.months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; +} +if ($.fn.datebox){ + $.fn.datebox.defaults.currentText = 'Today'; + $.fn.datebox.defaults.closeText = 'Close'; + $.fn.datebox.defaults.okText = 'Ok'; +} +if ($.fn.datetimebox && $.fn.datebox){ + $.extend($.fn.datetimebox.defaults,{ + currentText: $.fn.datebox.defaults.currentText, + closeText: $.fn.datebox.defaults.closeText, + okText: $.fn.datebox.defaults.okText + }); +} diff --git a/src/main/webapp/static/easyUI/locale/easyui-lang-es.js b/src/main/webapp/static/easyUI/locale/easyui-lang-es.js new file mode 100644 index 0000000000000000000000000000000000000000..aae16cda5369848d6035362a888dde1d876a0515 --- /dev/null +++ b/src/main/webapp/static/easyUI/locale/easyui-lang-es.js @@ -0,0 +1,45 @@ +if ($.fn.pagination){ + $.fn.pagination.defaults.beforePageText = 'Página'; + $.fn.pagination.defaults.afterPageText = 'de {pages}'; + $.fn.pagination.defaults.displayMsg = 'Mostrando {from} a {to} de {total} elementos'; +} +if ($.fn.datagrid){ + $.fn.datagrid.defaults.loadMsg = 'Procesando, por favor espere ...'; +} +if ($.fn.treegrid && $.fn.datagrid){ + $.fn.treegrid.defaults.loadMsg = $.fn.datagrid.defaults.loadMsg; +} +if ($.messager){ + $.messager.defaults.ok = 'Aceptar'; + $.messager.defaults.cancel = 'Cancelar'; +} +$.map(['validatebox','textbox','passwordbox','filebox','searchbox', + 'combo','combobox','combogrid','combotree', + 'datebox','datetimebox','numberbox', + 'spinner','numberspinner','timespinner','datetimespinner'], function(plugin){ + if ($.fn[plugin]){ + $.fn[plugin].defaults.missingMessage = 'Este campo es obligatorio.'; + } +}); +if ($.fn.validatebox){ + $.fn.validatebox.defaults.rules.email.message = 'Por favor ingrese una dirección de correo válida.'; + $.fn.validatebox.defaults.rules.url.message = 'Por favor ingrese una URL válida.'; + $.fn.validatebox.defaults.rules.length.message = 'Por favor ingrese un valor entre {0} y {1}.'; + $.fn.validatebox.defaults.rules.remote.message = 'Por favor corrija este campo.'; +} +if ($.fn.calendar){ + $.fn.calendar.defaults.weeks = ['Do','Lu','Ma','Mi','Ju','Vi','Sá']; + $.fn.calendar.defaults.months = ['Ene', 'Feb', 'Mar', 'Abr', 'May', 'Jun', 'Jul', 'Ago', 'Sep', 'Oct', 'Nov', 'Dic']; +} +if ($.fn.datebox){ + $.fn.datebox.defaults.currentText = 'Hoy'; + $.fn.datebox.defaults.closeText = 'Cerrar'; + $.fn.datebox.defaults.okText = 'Aceptar'; +} +if ($.fn.datetimebox && $.fn.datebox){ + $.extend($.fn.datetimebox.defaults,{ + currentText: $.fn.datebox.defaults.currentText, + closeText: $.fn.datebox.defaults.closeText, + okText: $.fn.datebox.defaults.okText + }); +} diff --git a/src/main/webapp/static/easyUI/locale/easyui-lang-fr.js b/src/main/webapp/static/easyUI/locale/easyui-lang-fr.js new file mode 100644 index 0000000000000000000000000000000000000000..e35c4ee8be8d333599131b1618102c19d25b1d8c --- /dev/null +++ b/src/main/webapp/static/easyUI/locale/easyui-lang-fr.js @@ -0,0 +1,44 @@ +if ($.fn.pagination){ + $.fn.pagination.defaults.beforePageText = 'Page'; + $.fn.pagination.defaults.afterPageText = 'de {pages}'; + $.fn.pagination.defaults.displayMsg = 'Affichage de {from} et {to} au {total} des articles'; +} +if ($.fn.datagrid){ + $.fn.datagrid.defaults.loadMsg = "Traitement, s'il vous plaît patienter ..."; +} +if ($.fn.treegrid && $.fn.datagrid){ + $.fn.treegrid.defaults.loadMsg = $.fn.datagrid.defaults.loadMsg; +} +if ($.messager){ + $.messager.defaults.ok = 'Ok'; + $.messager.defaults.cancel = 'Annuler'; +} +$.map(['validatebox','textbox','passwordbox','filebox','searchbox', + 'combo','combobox','combogrid','combotree', + 'datebox','datetimebox','numberbox', + 'spinner','numberspinner','timespinner','datetimespinner'], function(plugin){ + if ($.fn[plugin]){ + $.fn[plugin].defaults.missingMessage = 'Ce champ est obligatoire.'; + } +}); +if ($.fn.validatebox){ + $.fn.validatebox.defaults.rules.email.message = "S'il vous plaît entrer une adresse email valide."; + $.fn.validatebox.defaults.rules.url.message = "S'il vous plaît entrer une URL valide."; + $.fn.validatebox.defaults.rules.length.message = "S'il vous plaît entrez une valeur comprise entre {0} et {1}."; +} +if ($.fn.calendar){ + $.fn.calendar.defaults.weeks = ['S','M','T','W','T','F','S']; + $.fn.calendar.defaults.months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; +} +if ($.fn.datebox){ + $.fn.datebox.defaults.currentText = "Aujourd'hui"; + $.fn.datebox.defaults.closeText = 'Fermer'; + $.fn.datebox.defaults.okText = 'Ok'; +} +if ($.fn.datetimebox && $.fn.datebox){ + $.extend($.fn.datetimebox.defaults,{ + currentText: $.fn.datebox.defaults.currentText, + closeText: $.fn.datebox.defaults.closeText, + okText: $.fn.datebox.defaults.okText + }); +} diff --git a/src/main/webapp/static/easyUI/locale/easyui-lang-it.js b/src/main/webapp/static/easyUI/locale/easyui-lang-it.js new file mode 100644 index 0000000000000000000000000000000000000000..31ca9d35562f133d8aecef36ccdfaf6664e47d8e --- /dev/null +++ b/src/main/webapp/static/easyUI/locale/easyui-lang-it.js @@ -0,0 +1,64 @@ +if ($.fn.pagination){ + $.fn.pagination.defaults.beforePageText = 'Pagina'; + $.fn.pagination.defaults.afterPageText = 'di {pages}'; + $.fn.pagination.defaults.displayMsg = 'Visualizzazione {from} a {to} di {total} elementi'; +} +if ($.fn.datagrid){ + $.fn.datagrid.defaults.loadMsg = 'In lavorazione, attendere ...'; +} +if ($.fn.treegrid && $.fn.datagrid){ + $.fn.treegrid.defaults.loadMsg = $.fn.datagrid.defaults.loadMsg; +} +if ($.messager){ + $.messager.defaults.ok = 'Ok'; + $.messager.defaults.cancel = 'Annulla'; +} +$.map(['validatebox','textbox','passwordbox','filebox','searchbox', + 'combo','combobox','combogrid','combotree', + 'datebox','datetimebox','numberbox', + 'spinner','numberspinner','timespinner','datetimespinner'], function(plugin){ + if ($.fn[plugin]){ + $.fn[plugin].defaults.missingMessage = 'Questo campo è richiesto.'; + } +}); +if ($.fn.validatebox){ + $.fn.validatebox.defaults.rules.email.message = 'Inserisci un indirizzo email valido.'; + $.fn.validatebox.defaults.rules.url.message = 'Inserisci un URL valido.'; + $.fn.validatebox.defaults.rules.length.message = 'Inserisci un valore tra {0} e {1}.'; + $.fn.validatebox.defaults.rules.remote.message = 'Correggere questo campo.'; +} +if ($.fn.calendar){ + $.fn.calendar.defaults.firstDay = 1; + $.fn.calendar.defaults.weeks = ['D','L','M','M','G','V','S']; + $.fn.calendar.defaults.months = ['Gen', 'Feb', 'Mar', 'Apr', 'Mag', 'Giu', 'Lug', 'Ago', 'Set', 'Ott', 'Nov', 'Dic']; +} +if ($.fn.datebox){ + $.fn.datebox.defaults.currentText = 'Oggi'; + $.fn.datebox.defaults.closeText = 'Chiudi'; + $.fn.datebox.defaults.okText = 'Ok'; + $.fn.datebox.defaults.formatter = function(date){ + var y = date.getFullYear(); + var m = date.getMonth()+1; + var d = date.getDate(); + return (d<10?('0'+d):d)+'/'+(m<10?('0'+m):m)+'/'+y; + }; + $.fn.datebox.defaults.parser = function(s){ + if (!s) return new Date(); + var ss = s.split('/'); + var d = parseInt(ss[0],10); + var m = parseInt(ss[1],10); + var y = parseInt(ss[2],10); + if (!isNaN(y) && !isNaN(m) && !isNaN(d)){ + return new Date(y,m-1,d); + } else { + return new Date(); + } + }; +} +if ($.fn.datetimebox && $.fn.datebox){ + $.extend($.fn.datetimebox.defaults,{ + currentText: $.fn.datebox.defaults.currentText, + closeText: $.fn.datebox.defaults.closeText, + okText: $.fn.datebox.defaults.okText + }); +} diff --git a/src/main/webapp/static/easyUI/locale/easyui-lang-jp.js b/src/main/webapp/static/easyUI/locale/easyui-lang-jp.js new file mode 100644 index 0000000000000000000000000000000000000000..188906eff4221d1ebee576efdaf41d4d4e7d32b6 --- /dev/null +++ b/src/main/webapp/static/easyUI/locale/easyui-lang-jp.js @@ -0,0 +1,45 @@ +if ($.fn.pagination){ + $.fn.pagination.defaults.beforePageText = 'ページ'; + $.fn.pagination.defaults.afterPageText = '{pages} 中'; + $.fn.pagination.defaults.displayMsg = '全 {total} アイテム中 {from} から {to} を表示中'; +} +if ($.fn.datagrid){ + $.fn.datagrid.defaults.loadMsg = '処理中です。少々お待ちください...'; +} +if ($.fn.treegrid && $.fn.datagrid){ + $.fn.treegrid.defaults.loadMsg = $.fn.datagrid.defaults.loadMsg; +} +if ($.messager){ + $.messager.defaults.ok = 'OK'; + $.messager.defaults.cancel = 'キャンセル'; +} +$.map(['validatebox','textbox','passwordbox','filebox','searchbox', + 'combo','combobox','combogrid','combotree', + 'datebox','datetimebox','numberbox', + 'spinner','numberspinner','timespinner','datetimespinner'], function(plugin){ + if ($.fn[plugin]){ + $.fn[plugin].defaults.missingMessage = '入力は必須です。'; + } +}); +if ($.fn.validatebox){ + $.fn.validatebox.defaults.rules.email.message = '正しいメールアドレスを入力してください。'; + $.fn.validatebox.defaults.rules.url.message = '正しいURLを入力してください。'; + $.fn.validatebox.defaults.rules.length.message = '{0} から {1} の範囲の正しい値を入力してください。'; + $.fn.validatebox.defaults.rules.remote.message = 'このフィールドを修正してください。'; +} +if ($.fn.calendar){ + $.fn.calendar.defaults.weeks = ['日','月','火','水','木','金','土']; + $.fn.calendar.defaults.months = ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月']; +} +if ($.fn.datebox){ + $.fn.datebox.defaults.currentText = '今日'; + $.fn.datebox.defaults.closeText = '閉じる'; + $.fn.datebox.defaults.okText = 'OK'; +} +if ($.fn.datetimebox && $.fn.datebox){ + $.extend($.fn.datetimebox.defaults,{ + currentText: $.fn.datebox.defaults.currentText, + closeText: $.fn.datebox.defaults.closeText, + okText: $.fn.datebox.defaults.okText + }); +} diff --git a/src/main/webapp/static/easyUI/locale/easyui-lang-ko.js b/src/main/webapp/static/easyUI/locale/easyui-lang-ko.js new file mode 100644 index 0000000000000000000000000000000000000000..2bdc04793a88b95a42eb52e04dc10c02d8676af3 --- /dev/null +++ b/src/main/webapp/static/easyUI/locale/easyui-lang-ko.js @@ -0,0 +1,45 @@ +if ($.fn.pagination){ + $.fn.pagination.defaults.beforePageText = '페이지'; + $.fn.pagination.defaults.afterPageText = '{pages} 중'; + $.fn.pagination.defaults.displayMsg = '전체 {total} 항목 중 {from}부터 {to}번째'; +} +if ($.fn.datagrid){ + $.fn.datagrid.defaults.loadMsg = '처리 중입니다. 잠시만 기다려 주세요...'; +} +if ($.fn.treegrid && $.fn.datagrid){ + $.fn.treegrid.defaults.loadMsg = $.fn.datagrid.defaults.loadMsg; +} +if ($.messager){ + $.messager.defaults.ok = '확인'; + $.messager.defaults.cancel = '취소'; +} +$.map(['validatebox','textbox','passwordbox','filebox','searchbox', + 'combo','combobox','combogrid','combotree', + 'datebox','datetimebox','numberbox', + 'spinner','numberspinner','timespinner','datetimespinner'], function(plugin){ + if ($.fn[plugin]){ + $.fn[plugin].defaults.missingMessage = '필수 항목입니다.'; + } +}); +if ($.fn.validatebox){ + $.fn.validatebox.defaults.rules.email.message = '올바른 메일 주소를 입력해 주세요.'; + $.fn.validatebox.defaults.rules.url.message = '올바른 URL를 입력해 주세요.'; + $.fn.validatebox.defaults.rules.length.message = '{0}에서 {1} 사이의 값을 입력해 주세요.'; + $.fn.validatebox.defaults.rules.remote.message = '이 필드를 수정해 주세요.'; +} +if ($.fn.calendar){ + $.fn.calendar.defaults.weeks = ['일','월','화','수','목','금','토']; + $.fn.calendar.defaults.months = ['1월', '2월', '3월', '4월', '5월', '6월', '7월', '8월', '9월', '10월', '11월', '12월']; +} +if ($.fn.datebox){ + $.fn.datebox.defaults.currentText = '오늘'; + $.fn.datebox.defaults.closeText = '닫기'; + $.fn.datebox.defaults.okText = '확인'; +} +if ($.fn.datetimebox && $.fn.datebox){ + $.extend($.fn.datetimebox.defaults,{ + currentText: $.fn.datebox.defaults.currentText, + closeText: $.fn.datebox.defaults.closeText, + okText: $.fn.datebox.defaults.okText + }); +} diff --git a/src/main/webapp/static/easyUI/locale/easyui-lang-nl.js b/src/main/webapp/static/easyUI/locale/easyui-lang-nl.js new file mode 100644 index 0000000000000000000000000000000000000000..851d77e58354bf63895c7141846645914dbe77ab --- /dev/null +++ b/src/main/webapp/static/easyUI/locale/easyui-lang-nl.js @@ -0,0 +1,44 @@ +if ($.fn.pagination){ + $.fn.pagination.defaults.beforePageText = 'Pagina'; + $.fn.pagination.defaults.afterPageText = 'van {pages}'; + $.fn.pagination.defaults.displayMsg = 'Tonen van {from} tot {to} van de {total} items'; +} +if ($.fn.datagrid){ + $.fn.datagrid.defaults.loadMsg = 'Verwerking, even geduld ...'; +} +if ($.fn.treegrid && $.fn.datagrid){ + $.fn.treegrid.defaults.loadMsg = $.fn.datagrid.defaults.loadMsg; +} +if ($.messager){ + $.messager.defaults.ok = 'Ok'; + $.messager.defaults.cancel = 'Annuleren'; +} +$.map(['validatebox','textbox','passwordbox','filebox','searchbox', + 'combo','combobox','combogrid','combotree', + 'datebox','datetimebox','numberbox', + 'spinner','numberspinner','timespinner','datetimespinner'], function(plugin){ + if ($.fn[plugin]){ + $.fn[plugin].defaults.missingMessage = 'Dit veld is verplicht.'; + } +}); +if ($.fn.validatebox){ + $.fn.validatebox.defaults.rules.email.message = 'Geef een geldig e-mailadres.'; + $.fn.validatebox.defaults.rules.url.message = 'Vul een geldige URL.'; + $.fn.validatebox.defaults.rules.length.message = 'Voer een waarde tussen {0} en {1}.'; +} +if ($.fn.calendar){ + $.fn.calendar.defaults.weeks = ['S','M','T','W','T','F','S']; + $.fn.calendar.defaults.months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; +} +if ($.fn.datebox){ + $.fn.datebox.defaults.currentText = 'Vandaag'; + $.fn.datebox.defaults.closeText = 'Dicht'; + $.fn.datebox.defaults.okText = 'Ok'; +} +if ($.fn.datetimebox && $.fn.datebox){ + $.extend($.fn.datetimebox.defaults,{ + currentText: $.fn.datebox.defaults.currentText, + closeText: $.fn.datebox.defaults.closeText, + okText: $.fn.datebox.defaults.okText + }); +} diff --git a/src/main/webapp/static/easyUI/locale/easyui-lang-pl.js b/src/main/webapp/static/easyUI/locale/easyui-lang-pl.js new file mode 100644 index 0000000000000000000000000000000000000000..915dc1ec3366a11c9b04c8a457397875259247b9 --- /dev/null +++ b/src/main/webapp/static/easyUI/locale/easyui-lang-pl.js @@ -0,0 +1,45 @@ +if ($.fn.pagination){ + $.fn.pagination.defaults.beforePageText = 'Strona'; + $.fn.pagination.defaults.afterPageText = 'z {pages}'; + $.fn.pagination.defaults.displayMsg = 'Wyświetlono elementy od {from} do {to} z {total}'; +} +if ($.fn.datagrid){ + $.fn.datagrid.defaults.loadMsg = 'Przetwarzanie, proszę czekać ...'; +} +if ($.fn.treegrid && $.fn.datagrid){ + $.fn.treegrid.defaults.loadMsg = $.fn.datagrid.defaults.loadMsg; +} +if ($.messager){ + $.messager.defaults.ok = 'Ok'; + $.messager.defaults.cancel = 'Cancel'; +} +$.map(['validatebox','textbox','passwordbox','filebox','searchbox', + 'combo','combobox','combogrid','combotree', + 'datebox','datetimebox','numberbox', + 'spinner','numberspinner','timespinner','datetimespinner'], function(plugin){ + if ($.fn[plugin]){ + $.fn[plugin].defaults.missingMessage = 'To pole jest wymagane.'; + } +}); +if ($.fn.validatebox){ + $.fn.validatebox.defaults.rules.email.message = 'Wprowadź poprawny adres email.'; + $.fn.validatebox.defaults.rules.url.message = 'Wprowadź poprawny adres URL.'; + $.fn.validatebox.defaults.rules.length.message = 'Wprowadź wartość z zakresu od {0} do {1}.'; + $.fn.validatebox.defaults.rules.remote.message = 'Proszę poprawić to pole.'; +} +if ($.fn.calendar){ + $.fn.calendar.defaults.weeks = ['N','P','W','Ś','C','P','S']; + $.fn.calendar.defaults.months = ['Sty', 'Lut', 'Mar', 'Kwi', 'Maj', 'Cze', 'Lip', 'Sie', 'Wrz', 'Paź', 'Lis', 'Gru']; +} +if ($.fn.datebox){ + $.fn.datebox.defaults.currentText = 'Dzisiaj'; + $.fn.datebox.defaults.closeText = 'Zamknij'; + $.fn.datebox.defaults.okText = 'Ok'; +} +if ($.fn.datetimebox && $.fn.datebox){ + $.extend($.fn.datetimebox.defaults,{ + currentText: $.fn.datebox.defaults.currentText, + closeText: $.fn.datebox.defaults.closeText, + okText: $.fn.datebox.defaults.okText + }); +} diff --git a/src/main/webapp/static/easyUI/locale/easyui-lang-pt_BR.js b/src/main/webapp/static/easyUI/locale/easyui-lang-pt_BR.js new file mode 100644 index 0000000000000000000000000000000000000000..211f36ce379714bc9cb453a302e5ab6470d7a8de --- /dev/null +++ b/src/main/webapp/static/easyUI/locale/easyui-lang-pt_BR.js @@ -0,0 +1,45 @@ +if ($.fn.pagination){ + $.fn.pagination.defaults.beforePageText = 'Página'; + $.fn.pagination.defaults.afterPageText = 'de {pages}'; + $.fn.pagination.defaults.displayMsg = 'Mostrando {from} a {to} de {total} itens'; +} +if ($.fn.datagrid){ + $.fn.datagrid.defaults.loadMsg = 'Processando, aguarde ...'; +} +if ($.fn.treegrid && $.fn.datagrid){ + $.fn.treegrid.defaults.loadMsg = $.fn.datagrid.defaults.loadMsg; +} +if ($.messager){ + $.messager.defaults.ok = 'Ok'; + $.messager.defaults.cancel = 'Cancelar'; +} +$.map(['validatebox','textbox','passwordbox','filebox','searchbox', + 'combo','combobox','combogrid','combotree', + 'datebox','datetimebox','numberbox', + 'spinner','numberspinner','timespinner','datetimespinner'], function(plugin){ + if ($.fn[plugin]){ + $.fn[plugin].defaults.missingMessage = 'Esse campo é requerido.'; + } +}); +if ($.fn.validatebox){ + $.fn.validatebox.defaults.rules.email.message = 'Insira um endereço de email válido.'; + $.fn.validatebox.defaults.rules.url.message = 'Insira uma URL válida.'; + $.fn.validatebox.defaults.rules.length.message = 'Insira uma valor entre {0} e {1}.'; + $.fn.validatebox.defaults.rules.remote.message = 'Corrija esse campo.'; +} +if ($.fn.calendar){ + $.fn.calendar.defaults.weeks = ['D','S','T','Q','Q','S','S']; + $.fn.calendar.defaults.months = ['Jan', 'Fev', 'Mar', 'Abr', 'Mai', 'Jun', 'Jul', 'Ago', 'Set', 'Out', 'Nov', 'Dez']; +} +if ($.fn.datebox){ + $.fn.datebox.defaults.currentText = 'Hoje'; + $.fn.datebox.defaults.closeText = 'Fechar'; + $.fn.datebox.defaults.okText = 'Ok'; +} +if ($.fn.datetimebox && $.fn.datebox){ + $.extend($.fn.datetimebox.defaults,{ + currentText: $.fn.datebox.defaults.currentText, + closeText: $.fn.datebox.defaults.closeText, + okText: $.fn.datebox.defaults.okText + }); +} diff --git a/src/main/webapp/static/easyUI/locale/easyui-lang-ru.js b/src/main/webapp/static/easyUI/locale/easyui-lang-ru.js new file mode 100644 index 0000000000000000000000000000000000000000..b0f8ef3b04a7f00c7241f02290adc5ba3a02bc18 --- /dev/null +++ b/src/main/webapp/static/easyUI/locale/easyui-lang-ru.js @@ -0,0 +1,46 @@ +if ($.fn.pagination){ + $.fn.pagination.defaults.beforePageText = 'Страница'; + $.fn.pagination.defaults.afterPageText = 'из {pages}'; + $.fn.pagination.defaults.displayMsg = 'Просмотр {from} до {to} из {total} записей'; +} +if ($.fn.datagrid){ + $.fn.datagrid.defaults.loadMsg = 'Обрабатывается, пожалуйста ждите ...'; +} +if ($.fn.treegrid && $.fn.datagrid){ + $.fn.treegrid.defaults.loadMsg = $.fn.datagrid.defaults.loadMsg; +} +if ($.messager){ + $.messager.defaults.ok = 'Ок'; + $.messager.defaults.cancel = 'Закрыть'; +} +$.map(['validatebox','textbox','passwordbox','filebox','searchbox', + 'combo','combobox','combogrid','combotree', + 'datebox','datetimebox','numberbox', + 'spinner','numberspinner','timespinner','datetimespinner'], function(plugin){ + if ($.fn[plugin]){ + $.fn[plugin].defaults.missingMessage = 'Это поле необходимо.'; + } +}); +if ($.fn.validatebox){ + $.fn.validatebox.defaults.rules.email.message = 'Пожалуйста введите корректный e-mail адрес.'; + $.fn.validatebox.defaults.rules.url.message = 'Пожалуйста введите корректный URL.'; + $.fn.validatebox.defaults.rules.length.message = 'Пожалуйста введите зачение между {0} и {1}.'; + $.fn.validatebox.defaults.rules.remote.message = 'Пожалуйста исправте это поле.'; +} +if ($.fn.calendar){ + $.fn.calendar.defaults.firstDay = 1; + $.fn.calendar.defaults.weeks = ['В','П','В','С','Ч','П','С']; + $.fn.calendar.defaults.months = ['Янв', 'Фев', 'Мар', 'Апр', 'Май', 'Июн', 'Июл', 'Авг', 'Сен', 'Окт', 'Ноя', 'Дек']; +} +if ($.fn.datebox){ + $.fn.datebox.defaults.currentText = 'Сегодня'; + $.fn.datebox.defaults.closeText = 'Закрыть'; + $.fn.datebox.defaults.okText = 'Ок'; +} +if ($.fn.datetimebox && $.fn.datebox){ + $.extend($.fn.datetimebox.defaults,{ + currentText: $.fn.datebox.defaults.currentText, + closeText: $.fn.datebox.defaults.closeText, + okText: $.fn.datebox.defaults.okText + }); +} diff --git a/src/main/webapp/static/easyUI/locale/easyui-lang-sv_SE.js b/src/main/webapp/static/easyUI/locale/easyui-lang-sv_SE.js new file mode 100644 index 0000000000000000000000000000000000000000..e6d1ba97162c76d73f6dad1ffdbb66bc62d62d0f --- /dev/null +++ b/src/main/webapp/static/easyUI/locale/easyui-lang-sv_SE.js @@ -0,0 +1,45 @@ +if ($.fn.pagination) { + $.fn.pagination.defaults.beforePageText = 'Sida'; + $.fn.pagination.defaults.afterPageText = 'av {pages}'; + $.fn.pagination.defaults.displayMsg = 'Visar {from} till {to} av {total} poster'; +} +if ($.fn.datagrid) { + $.fn.datagrid.defaults.loadMsg = 'Bearbetar, vänligen vänta ...'; +} +if ($.fn.treegrid && $.fn.datagrid) { + $.fn.treegrid.defaults.loadMsg = $.fn.datagrid.defaults.loadMsg; +} +if ($.messager) { + $.messager.defaults.ok = 'Ok'; + $.messager.defaults.cancel = 'Avbryt'; +} +$.map(['validatebox','textbox','passwordbox','filebox','searchbox', + 'combo','combobox','combogrid','combotree', + 'datebox','datetimebox','numberbox', + 'spinner','numberspinner','timespinner','datetimespinner'], function(plugin){ + if ($.fn[plugin]){ + $.fn[plugin].defaults.missingMessage = 'Detta fält är obligatoriskt.'; + } +}); +if ($.fn.validatebox) { + $.fn.validatebox.defaults.rules.email.message = 'Vänligen ange en korrekt e-post adress.'; + $.fn.validatebox.defaults.rules.url.message = 'Vänligen ange en korrekt URL.'; + $.fn.validatebox.defaults.rules.length.message = 'Vänligen ange ett nummer mellan {0} och {1}.'; + $.fn.validatebox.defaults.rules.remote.message = 'Vänligen åtgärda detta fält.'; +} +if ($.fn.calendar) { + $.fn.calendar.defaults.weeks = ['Sön', 'Mån', 'Tis', 'Ons', 'Tors', 'Fre', 'Lör']; + $.fn.calendar.defaults.months = ['Jan', 'Feb', 'Mar', 'Apr', 'Maj', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dec']; +} +if ($.fn.datebox) { + $.fn.datebox.defaults.currentText = 'I dag'; + $.fn.datebox.defaults.closeText = 'Stäng'; + $.fn.datebox.defaults.okText = 'Ok'; +} +if ($.fn.datetimebox && $.fn.datebox) { + $.extend($.fn.datetimebox.defaults, { + currentText: $.fn.datebox.defaults.currentText, + closeText: $.fn.datebox.defaults.closeText, + okText: $.fn.datebox.defaults.okText + }); +} diff --git a/src/main/webapp/static/easyUI/locale/easyui-lang-tr.js b/src/main/webapp/static/easyUI/locale/easyui-lang-tr.js new file mode 100644 index 0000000000000000000000000000000000000000..ac1cec1b9f27dd116f8a3b5ee4748fd23873a290 --- /dev/null +++ b/src/main/webapp/static/easyUI/locale/easyui-lang-tr.js @@ -0,0 +1,59 @@ +if ($.fn.pagination){ + $.fn.pagination.defaults.beforePageText = 'Sayfa'; + $.fn.pagination.defaults.afterPageText = ' / {pages}'; + $.fn.pagination.defaults.displayMsg = '{from} ile {to} arası gösteriliyor, toplam {total} kayıt'; +} +if ($.fn.datagrid){ + $.fn.panel.defaults.loadingMessage = "Yükleniyor..."; +} + +if ($.fn.datagrid){ + $.fn.datagrid.defaults.loadingMessage = "Yükleniyor..."; + $.fn.datagrid.defaults.loadMsg = 'İşleminiz Yapılıyor, lütfen bekleyin ...'; +} +if ($.fn.treegrid && $.fn.datagrid){ + $.fn.treegrid.defaults.loadMsg = $.fn.datagrid.defaults.loadMsg; +} +if ($.messager){ + $.messager.defaults.ok = 'Tamam'; + $.messager.defaults.cancel = 'İptal'; +} +$.map(['validatebox','textbox','passwordbox','filebox','searchbox', + 'combo','combobox','combogrid','combotree', + 'datebox','datetimebox','numberbox', + 'spinner','numberspinner','timespinner','datetimespinner'], function(plugin){ + if ($.fn[plugin]){ + $.fn[plugin].defaults.missingMessage = 'Bu alan zorunludur.'; + } +}); +if ($.fn.validatebox){ + $.fn.validatebox.defaults.rules.email.message = 'Lütfen geçerli bir email adresi giriniz.'; + $.fn.validatebox.defaults.rules.url.message = 'Lütfen geçerli bir URL giriniz.'; + $.fn.validatebox.defaults.rules.length.message = 'Lütfen {0} ile {1} arasında bir değer giriniz.'; + $.fn.validatebox.defaults.rules.remote.message = 'Lütfen bu alanı düzeltiniz.'; +} +if ($.fn.calendar){ + $.fn.calendar.defaults.weeks = ['Pz','Pt','Sa','Ça','Pe','Cu','Ct']; + $.fn.calendar.defaults.months = ['Oca', 'Şub', 'Mar', 'Nis', 'May', 'Haz', 'Tem', 'Ağu', 'Eyl', 'Eki', 'Kas', 'Ara']; +} +if ($.fn.datebox){ + $.fn.datebox.defaults.currentText = 'Bugün'; + $.fn.datebox.defaults.closeText = 'Kapat'; + $.fn.datebox.defaults.okText = 'Tamam'; +} +if ($.fn.datetimebox && $.fn.datebox){ + $.extend($.fn.datetimebox.defaults,{ + currentText: $.fn.datebox.defaults.currentText, + closeText: $.fn.datebox.defaults.closeText, + okText: $.fn.datebox.defaults.okText + }); + + $.fn.datebox.defaults.formatter=function(date){ + var y=date.getFullYear(); + var m=date.getMonth()+1; + var d=date.getDate(); + if(m<10){m="0"+m;} + if(d<10){d="0"+d;} + return d+"."+m+"."+y; + }; +} diff --git a/src/main/webapp/static/easyUI/locale/easyui-lang-zh_CN.js b/src/main/webapp/static/easyUI/locale/easyui-lang-zh_CN.js new file mode 100644 index 0000000000000000000000000000000000000000..fa9ae25b6dc40ef92daed65336d5e23525ff13bc --- /dev/null +++ b/src/main/webapp/static/easyUI/locale/easyui-lang-zh_CN.js @@ -0,0 +1,66 @@ +if ($.fn.pagination){ + $.fn.pagination.defaults.beforePageText = '第'; + $.fn.pagination.defaults.afterPageText = '共{pages}页'; + $.fn.pagination.defaults.displayMsg = '显示{from}到{to},共{total}记录'; +} +if ($.fn.datagrid){ + $.fn.datagrid.defaults.loadMsg = '正在处理,请稍待。。。'; +} +if ($.fn.treegrid && $.fn.datagrid){ + $.fn.treegrid.defaults.loadMsg = $.fn.datagrid.defaults.loadMsg; +} +if ($.messager){ + $.messager.defaults.ok = '确定'; + $.messager.defaults.cancel = '取消'; +} +$.map(['validatebox','textbox','passwordbox','filebox','searchbox', + 'combo','combobox','combogrid','combotree', + 'datebox','datetimebox','numberbox', + 'spinner','numberspinner','timespinner','datetimespinner'], function(plugin){ + if ($.fn[plugin]){ + $.fn[plugin].defaults.missingMessage = '该输入项为必输项'; + } +}); +if ($.fn.validatebox){ + $.fn.validatebox.defaults.rules.email.message = '请输入有效的电子邮件地址'; + $.fn.validatebox.defaults.rules.url.message = '请输入有效的URL地址'; + $.fn.validatebox.defaults.rules.length.message = '输入内容长度必须介于{0}和{1}之间'; + $.fn.validatebox.defaults.rules.remote.message = '请修正该字段'; +} +if ($.fn.calendar){ + $.fn.calendar.defaults.weeks = ['日','一','二','三','四','五','六']; + $.fn.calendar.defaults.months = ['一月','二月','三月','四月','五月','六月','七月','八月','九月','十月','十一月','十二月']; +} +if ($.fn.datebox){ + $.fn.datebox.defaults.currentText = '今天'; + $.fn.datebox.defaults.closeText = '关闭'; + $.fn.datebox.defaults.okText = '确定'; + $.fn.datebox.defaults.formatter = function(date){ + var y = date.getFullYear(); + var m = date.getMonth()+1; + var d = date.getDate(); + return y+'-'+(m<10?('0'+m):m)+'-'+(d<10?('0'+d):d); + }; + $.fn.datebox.defaults.parser = function(s){ + if (!s) return new Date(); + var ss = s.split('-'); + var y = parseInt(ss[0],10); + var m = parseInt(ss[1],10); + var d = parseInt(ss[2],10); + if (!isNaN(y) && !isNaN(m) && !isNaN(d)){ + return new Date(y,m-1,d); + } else { + return new Date(); + } + }; +} +if ($.fn.datetimebox && $.fn.datebox){ + $.extend($.fn.datetimebox.defaults,{ + currentText: $.fn.datebox.defaults.currentText, + closeText: $.fn.datebox.defaults.closeText, + okText: $.fn.datebox.defaults.okText + }); +} +if ($.fn.datetimespinner){ + $.fn.datetimespinner.defaults.selections = [[0,4],[5,7],[8,10],[11,13],[14,16],[17,19]] +} diff --git a/src/main/webapp/static/easyUI/locale/easyui-lang-zh_TW.js b/src/main/webapp/static/easyUI/locale/easyui-lang-zh_TW.js new file mode 100644 index 0000000000000000000000000000000000000000..d99e130b0358a18563bc52bdb6579440063887e7 --- /dev/null +++ b/src/main/webapp/static/easyUI/locale/easyui-lang-zh_TW.js @@ -0,0 +1,48 @@ +if ($.fn.pagination){ + $.fn.pagination.defaults.beforePageText = '第'; + $.fn.pagination.defaults.afterPageText = '共{pages}頁'; + $.fn.pagination.defaults.displayMsg = '顯示{from}到{to},共{total}記錄'; +} +if ($.fn.datagrid){ + $.fn.datagrid.defaults.loadMsg = '正在處理,請稍待。。。'; +} +if ($.fn.treegrid && $.fn.datagrid){ + $.fn.treegrid.defaults.loadMsg = $.fn.datagrid.defaults.loadMsg; +} +if ($.messager){ + $.messager.defaults.ok = '確定'; + $.messager.defaults.cancel = '取消'; +} +$.map(['validatebox','textbox','passwordbox','filebox','searchbox', + 'combo','combobox','combogrid','combotree', + 'datebox','datetimebox','numberbox', + 'spinner','numberspinner','timespinner','datetimespinner'], function(plugin){ + if ($.fn[plugin]){ + $.fn[plugin].defaults.missingMessage = '該輸入項為必輸項'; + } +}); +if ($.fn.validatebox){ + $.fn.validatebox.defaults.rules.email.message = '請輸入有效的電子郵件地址'; + $.fn.validatebox.defaults.rules.url.message = '請輸入有效的URL地址'; + $.fn.validatebox.defaults.rules.length.message = '輸入內容長度必須介於{0}和{1}之間'; + $.fn.validatebox.defaults.rules.remote.message = '請修正此欄位'; +} +if ($.fn.calendar){ + $.fn.calendar.defaults.weeks = ['日','一','二','三','四','五','六']; + $.fn.calendar.defaults.months = ['一月','二月','三月','四月','五月','六月','七月','八月','九月','十月','十一月','十二月']; +} +if ($.fn.datebox){ + $.fn.datebox.defaults.currentText = '今天'; + $.fn.datebox.defaults.closeText = '關閉'; + $.fn.datebox.defaults.okText = '確定'; +} +if ($.fn.datetimebox && $.fn.datebox){ + $.extend($.fn.datetimebox.defaults,{ + currentText: $.fn.datebox.defaults.currentText, + closeText: $.fn.datebox.defaults.closeText, + okText: $.fn.datebox.defaults.okText + }); +} +if ($.fn.datetimespinner){ + $.fn.datetimespinner.defaults.selections = [[0,4],[5,7],[8,10],[11,13],[14,16],[17,19]] +} diff --git a/src/main/webapp/static/easyUI/plugins/jquery.accordion.js b/src/main/webapp/static/easyUI/plugins/jquery.accordion.js new file mode 100644 index 0000000000000000000000000000000000000000..d5021f02c7a92e947394102c1c01fb4024370dc2 --- /dev/null +++ b/src/main/webapp/static/easyUI/plugins/jquery.accordion.js @@ -0,0 +1,350 @@ +/** + * jQuery EasyUI 1.5.2 + * + * Copyright (c) 2009-2017 www.jeasyui.com. All rights reserved. + * + * Licensed under the freeware license: http://www.jeasyui.com/license_freeware.php + * To use it on other terms please contact us: info@jeasyui.com + * + */ +(function($){ +function _1(_2,_3){ +var _4=$.data(_2,"accordion"); +var _5=_4.options; +var _6=_4.panels; +var cc=$(_2); +var _7=(_5.halign=="left"||_5.halign=="right"); +cc.children(".panel-last").removeClass("panel-last"); +cc.children(".panel:last").addClass("panel-last"); +if(_3){ +$.extend(_5,{width:_3.width,height:_3.height}); +} +cc._size(_5); +var _8=0; +var _9="auto"; +var _a=cc.find(">.panel>.accordion-header"); +if(_a.length){ +if(_7){ +$(_6[0]).panel("resize",{width:cc.width(),height:cc.height()}); +_8=$(_a[0])._outerWidth(); +}else{ +_8=$(_a[0]).css("height","")._outerHeight(); +} +} +if(!isNaN(parseInt(_5.height))){ +if(_7){ +_9=cc.width()-_8*_a.length; +}else{ +_9=cc.height()-_8*_a.length; +} +} +_b(true,_9-_b(false)); +function _b(_c,_d){ +var _e=0; +for(var i=0;i<_6.length;i++){ +var p=_6[i]; +if(_7){ +var h=p.panel("header")._outerWidth(_8); +}else{ +var h=p.panel("header")._outerHeight(_8); +} +if(p.panel("options").collapsible==_c){ +var _f=isNaN(_d)?undefined:(_d+_8*h.length); +if(_7){ +p.panel("resize",{height:cc.height(),width:(_c?_f:undefined)}); +_e+=p.panel("panel")._outerWidth()-_8*h.length; +}else{ +p.panel("resize",{width:cc.width(),height:(_c?_f:undefined)}); +_e+=p.panel("panel").outerHeight()-_8*h.length; +} +} +} +return _e; +}; +}; +function _10(_11,_12,_13,all){ +var _14=$.data(_11,"accordion").panels; +var pp=[]; +for(var i=0;i<_14.length;i++){ +var p=_14[i]; +if(_12){ +if(p.panel("options")[_12]==_13){ +pp.push(p); +} +}else{ +if(p[0]==$(_13)[0]){ +return i; +} +} +} +if(_12){ +return all?pp:(pp.length?pp[0]:null); +}else{ +return -1; +} +}; +function _15(_16){ +return _10(_16,"collapsed",false,true); +}; +function _17(_18){ +var pp=_15(_18); +return pp.length?pp[0]:null; +}; +function _19(_1a,_1b){ +return _10(_1a,null,_1b); +}; +function _1c(_1d,_1e){ +var _1f=$.data(_1d,"accordion").panels; +if(typeof _1e=="number"){ +if(_1e<0||_1e>=_1f.length){ +return null; +}else{ +return _1f[_1e]; +} +} +return _10(_1d,"title",_1e); +}; +function _20(_21){ +var _22=$.data(_21,"accordion").options; +var cc=$(_21); +if(_22.border){ +cc.removeClass("accordion-noborder"); +}else{ +cc.addClass("accordion-noborder"); +} +}; +function _23(_24){ +var _25=$.data(_24,"accordion"); +var cc=$(_24); +cc.addClass("accordion"); +_25.panels=[]; +cc.children("div").each(function(){ +var _26=$.extend({},$.parser.parseOptions(this),{selected:($(this).attr("selected")?true:undefined)}); +var pp=$(this); +_25.panels.push(pp); +_28(_24,pp,_26); +}); +cc.bind("_resize",function(e,_27){ +if($(this).hasClass("easyui-fluid")||_27){ +_1(_24); +} +return false; +}); +}; +function _28(_29,pp,_2a){ +var _2b=$.data(_29,"accordion").options; +pp.panel($.extend({},{collapsible:true,minimizable:false,maximizable:false,closable:false,doSize:false,collapsed:true,headerCls:"accordion-header",bodyCls:"accordion-body",halign:_2b.halign},_2a,{onBeforeExpand:function(){ +if(_2a.onBeforeExpand){ +if(_2a.onBeforeExpand.call(this)==false){ +return false; +} +} +if(!_2b.multiple){ +var all=$.grep(_15(_29),function(p){ +return p.panel("options").collapsible; +}); +for(var i=0;i.panel-last>.accordion-header").removeClass("accordion-header-border"); +if(_2a.onExpand){ +_2a.onExpand.call(this); +} +_2b.onSelect.call(_29,$(this).panel("options").title,_19(_29,this)); +},onBeforeCollapse:function(){ +if(_2a.onBeforeCollapse){ +if(_2a.onBeforeCollapse.call(this)==false){ +return false; +} +} +$(_29).find(">.panel-last>.accordion-header").addClass("accordion-header-border"); +var _2d=$(this).panel("header"); +_2d.removeClass("accordion-header-selected"); +_2d.find(".accordion-collapse").addClass("accordion-expand"); +},onCollapse:function(){ +if(isNaN(parseInt(_2b.height))){ +$(_29).find(">.panel-last>.accordion-header").removeClass("accordion-header-border"); +} +if(_2a.onCollapse){ +_2a.onCollapse.call(this); +} +_2b.onUnselect.call(_29,$(this).panel("options").title,_19(_29,this)); +}})); +var _2e=pp.panel("header"); +var _2f=_2e.children("div.panel-tool"); +_2f.children("a.panel-tool-collapse").hide(); +var t=$("").addClass("accordion-collapse accordion-expand").appendTo(_2f); +t.bind("click",function(){ +_30(pp); +return false; +}); +pp.panel("options").collapsible?t.show():t.hide(); +if(_2b.halign=="left"||_2b.halign=="right"){ +t.hide(); +} +_2e.click(function(){ +_30(pp); +return false; +}); +function _30(p){ +var _31=p.panel("options"); +if(_31.collapsible){ +var _32=_19(_29,p); +if(_31.collapsed){ +_33(_29,_32); +}else{ +_34(_29,_32); +} +} +}; +}; +function _33(_35,_36){ +var p=_1c(_35,_36); +if(!p){ +return; +} +_37(_35); +var _38=$.data(_35,"accordion").options; +p.panel("expand",_38.animate); +}; +function _34(_39,_3a){ +var p=_1c(_39,_3a); +if(!p){ +return; +} +_37(_39); +var _3b=$.data(_39,"accordion").options; +p.panel("collapse",_3b.animate); +}; +function _3c(_3d){ +var _3e=$.data(_3d,"accordion").options; +$(_3d).find(">.panel-last>.accordion-header").addClass("accordion-header-border"); +var p=_10(_3d,"selected",true); +if(p){ +_3f(_19(_3d,p)); +}else{ +_3f(_3e.selected); +} +function _3f(_40){ +var _41=_3e.animate; +_3e.animate=false; +_33(_3d,_40); +_3e.animate=_41; +}; +}; +function _37(_42){ +var _43=$.data(_42,"accordion").panels; +for(var i=0;i<_43.length;i++){ +_43[i].stop(true,true); +} +}; +function add(_44,_45){ +var _46=$.data(_44,"accordion"); +var _47=_46.options; +var _48=_46.panels; +if(_45.selected==undefined){ +_45.selected=true; +} +_37(_44); +var pp=$("
          ").appendTo(_44); +_48.push(pp); +_28(_44,pp,_45); +_1(_44); +_47.onAdd.call(_44,_45.title,_48.length-1); +if(_45.selected){ +_33(_44,_48.length-1); +} +}; +function _49(_4a,_4b){ +var _4c=$.data(_4a,"accordion"); +var _4d=_4c.options; +var _4e=_4c.panels; +_37(_4a); +var _4f=_1c(_4a,_4b); +var _50=_4f.panel("options").title; +var _51=_19(_4a,_4f); +if(!_4f){ +return; +} +if(_4d.onBeforeRemove.call(_4a,_50,_51)==false){ +return; +} +_4e.splice(_51,1); +_4f.panel("destroy"); +if(_4e.length){ +_1(_4a); +var _52=_17(_4a); +if(!_52){ +_33(_4a,0); +} +} +_4d.onRemove.call(_4a,_50,_51); +}; +$.fn.accordion=function(_53,_54){ +if(typeof _53=="string"){ +return $.fn.accordion.methods[_53](this,_54); +} +_53=_53||{}; +return this.each(function(){ +var _55=$.data(this,"accordion"); +if(_55){ +$.extend(_55.options,_53); +}else{ +$.data(this,"accordion",{options:$.extend({},$.fn.accordion.defaults,$.fn.accordion.parseOptions(this),_53),accordion:$(this).addClass("accordion"),panels:[]}); +_23(this); +} +_20(this); +_1(this); +_3c(this); +}); +}; +$.fn.accordion.methods={options:function(jq){ +return $.data(jq[0],"accordion").options; +},panels:function(jq){ +return $.data(jq[0],"accordion").panels; +},resize:function(jq,_56){ +return jq.each(function(){ +_1(this,_56); +}); +},getSelections:function(jq){ +return _15(jq[0]); +},getSelected:function(jq){ +return _17(jq[0]); +},getPanel:function(jq,_57){ +return _1c(jq[0],_57); +},getPanelIndex:function(jq,_58){ +return _19(jq[0],_58); +},select:function(jq,_59){ +return jq.each(function(){ +_33(this,_59); +}); +},unselect:function(jq,_5a){ +return jq.each(function(){ +_34(this,_5a); +}); +},add:function(jq,_5b){ +return jq.each(function(){ +add(this,_5b); +}); +},remove:function(jq,_5c){ +return jq.each(function(){ +_49(this,_5c); +}); +}}; +$.fn.accordion.parseOptions=function(_5d){ +var t=$(_5d); +return $.extend({},$.parser.parseOptions(_5d,["width","height","halign",{fit:"boolean",border:"boolean",animate:"boolean",multiple:"boolean",selected:"number"}])); +}; +$.fn.accordion.defaults={width:"auto",height:"auto",fit:false,border:true,animate:true,multiple:false,selected:0,halign:"top",onSelect:function(_5e,_5f){ +},onUnselect:function(_60,_61){ +},onAdd:function(_62,_63){ +},onBeforeRemove:function(_64,_65){ +},onRemove:function(_66,_67){ +}}; +})(jQuery); + diff --git a/src/main/webapp/static/easyUI/plugins/jquery.calendar.js b/src/main/webapp/static/easyUI/plugins/jquery.calendar.js new file mode 100644 index 0000000000000000000000000000000000000000..5811c9b20f5885fd5443ec797d00ac2d78768c27 --- /dev/null +++ b/src/main/webapp/static/easyUI/plugins/jquery.calendar.js @@ -0,0 +1,403 @@ +/** + * jQuery EasyUI 1.5.2 + * + * Copyright (c) 2009-2017 www.jeasyui.com. All rights reserved. + * + * Licensed under the freeware license: http://www.jeasyui.com/license_freeware.php + * To use it on other terms please contact us: info@jeasyui.com + * + */ +(function($){ +function _1(_2,_3){ +var _4=$.data(_2,"calendar").options; +var t=$(_2); +if(_3){ +$.extend(_4,{width:_3.width,height:_3.height}); +} +t._size(_4,t.parent()); +t.find(".calendar-body")._outerHeight(t.height()-t.find(".calendar-header")._outerHeight()); +if(t.find(".calendar-menu").is(":visible")){ +_5(_2); +} +}; +function _6(_7){ +$(_7).addClass("calendar").html("
          "+"
          "+"
          "+"
          "+"
          "+"
          "+""+"
          "+"
          "+"
          "+"
          "+"
          "+""+""+""+"
          "+"
          "+"
          "+"
          "+"
          "); +$(_7).bind("_resize",function(e,_8){ +if($(this).hasClass("easyui-fluid")||_8){ +_1(_7); +} +return false; +}); +}; +function _9(_a){ +var _b=$.data(_a,"calendar").options; +var _c=$(_a).find(".calendar-menu"); +_c.find(".calendar-menu-year").unbind(".calendar").bind("keypress.calendar",function(e){ +if(e.keyCode==13){ +_d(true); +} +}); +$(_a).unbind(".calendar").bind("mouseover.calendar",function(e){ +var t=_e(e.target); +if(t.hasClass("calendar-nav")||t.hasClass("calendar-text")||(t.hasClass("calendar-day")&&!t.hasClass("calendar-disabled"))){ +t.addClass("calendar-nav-hover"); +} +}).bind("mouseout.calendar",function(e){ +var t=_e(e.target); +if(t.hasClass("calendar-nav")||t.hasClass("calendar-text")||(t.hasClass("calendar-day")&&!t.hasClass("calendar-disabled"))){ +t.removeClass("calendar-nav-hover"); +} +}).bind("click.calendar",function(e){ +var t=_e(e.target); +if(t.hasClass("calendar-menu-next")||t.hasClass("calendar-nextyear")){ +_f(1); +}else{ +if(t.hasClass("calendar-menu-prev")||t.hasClass("calendar-prevyear")){ +_f(-1); +}else{ +if(t.hasClass("calendar-menu-month")){ +_c.find(".calendar-selected").removeClass("calendar-selected"); +t.addClass("calendar-selected"); +_d(true); +}else{ +if(t.hasClass("calendar-prevmonth")){ +_10(-1); +}else{ +if(t.hasClass("calendar-nextmonth")){ +_10(1); +}else{ +if(t.hasClass("calendar-text")){ +if(_c.is(":visible")){ +_c.hide(); +}else{ +_5(_a); +} +}else{ +if(t.hasClass("calendar-day")){ +if(t.hasClass("calendar-disabled")){ +return; +} +var _11=_b.current; +t.closest("div.calendar-body").find(".calendar-selected").removeClass("calendar-selected"); +t.addClass("calendar-selected"); +var _12=t.attr("abbr").split(","); +var y=parseInt(_12[0]); +var m=parseInt(_12[1]); +var d=parseInt(_12[2]); +_b.current=new Date(y,m-1,d); +_b.onSelect.call(_a,_b.current); +if(!_11||_11.getTime()!=_b.current.getTime()){ +_b.onChange.call(_a,_b.current,_11); +} +if(_b.year!=y||_b.month!=m){ +_b.year=y; +_b.month=m; +_19(_a); +} +} +} +} +} +} +} +} +}); +function _e(t){ +var day=$(t).closest(".calendar-day"); +if(day.length){ +return day; +}else{ +return $(t); +} +}; +function _d(_13){ +var _14=$(_a).find(".calendar-menu"); +var _15=_14.find(".calendar-menu-year").val(); +var _16=_14.find(".calendar-selected").attr("abbr"); +if(!isNaN(_15)){ +_b.year=parseInt(_15); +_b.month=parseInt(_16); +_19(_a); +} +if(_13){ +_14.hide(); +} +}; +function _f(_17){ +_b.year+=_17; +_19(_a); +_c.find(".calendar-menu-year").val(_b.year); +}; +function _10(_18){ +_b.month+=_18; +if(_b.month>12){ +_b.year++; +_b.month=1; +}else{ +if(_b.month<1){ +_b.year--; +_b.month=12; +} +} +_19(_a); +_c.find("td.calendar-selected").removeClass("calendar-selected"); +_c.find("td:eq("+(_b.month-1)+")").addClass("calendar-selected"); +}; +}; +function _5(_1a){ +var _1b=$.data(_1a,"calendar").options; +$(_1a).find(".calendar-menu").show(); +if($(_1a).find(".calendar-menu-month-inner").is(":empty")){ +$(_1a).find(".calendar-menu-month-inner").empty(); +var t=$("
          ").appendTo($(_1a).find(".calendar-menu-month-inner")); +var idx=0; +for(var i=0;i<3;i++){ +var tr=$("").appendTo(t); +for(var j=0;j<4;j++){ +$("").html(_1b.months[idx++]).attr("abbr",idx).appendTo(tr); +} +} +} +var _1c=$(_1a).find(".calendar-body"); +var _1d=$(_1a).find(".calendar-menu"); +var _1e=_1d.find(".calendar-menu-year-inner"); +var _1f=_1d.find(".calendar-menu-month-inner"); +_1e.find("input").val(_1b.year).focus(); +_1f.find("td.calendar-selected").removeClass("calendar-selected"); +_1f.find("td:eq("+(_1b.month-1)+")").addClass("calendar-selected"); +_1d._outerWidth(_1c._outerWidth()); +_1d._outerHeight(_1c._outerHeight()); +_1f._outerHeight(_1d.height()-_1e._outerHeight()); +}; +function _20(_21,_22,_23){ +var _24=$.data(_21,"calendar").options; +var _25=[]; +var _26=new Date(_22,_23,0).getDate(); +for(var i=1;i<=_26;i++){ +_25.push([_22,_23,i]); +} +var _27=[],_28=[]; +var _29=-1; +while(_25.length>0){ +var _2a=_25.shift(); +_28.push(_2a); +var day=new Date(_2a[0],_2a[1]-1,_2a[2]).getDay(); +if(_29==day){ +day=0; +}else{ +if(day==(_24.firstDay==0?7:_24.firstDay)-1){ +_27.push(_28); +_28=[]; +} +} +_29=day; +} +if(_28.length){ +_27.push(_28); +} +var _2b=_27[0]; +if(_2b.length<7){ +while(_2b.length<7){ +var _2c=_2b[0]; +var _2a=new Date(_2c[0],_2c[1]-1,_2c[2]-1); +_2b.unshift([_2a.getFullYear(),_2a.getMonth()+1,_2a.getDate()]); +} +}else{ +var _2c=_2b[0]; +var _28=[]; +for(var i=1;i<=7;i++){ +var _2a=new Date(_2c[0],_2c[1]-1,_2c[2]-i); +_28.unshift([_2a.getFullYear(),_2a.getMonth()+1,_2a.getDate()]); +} +_27.unshift(_28); +} +var _2d=_27[_27.length-1]; +while(_2d.length<7){ +var _2e=_2d[_2d.length-1]; +var _2a=new Date(_2e[0],_2e[1]-1,_2e[2]+1); +_2d.push([_2a.getFullYear(),_2a.getMonth()+1,_2a.getDate()]); +} +if(_27.length<6){ +var _2e=_2d[_2d.length-1]; +var _28=[]; +for(var i=1;i<=7;i++){ +var _2a=new Date(_2e[0],_2e[1]-1,_2e[2]+i); +_28.push([_2a.getFullYear(),_2a.getMonth()+1,_2a.getDate()]); +} +_27.push(_28); +} +return _27; +}; +function _19(_2f){ +var _30=$.data(_2f,"calendar").options; +if(_30.current&&!_30.validator.call(_2f,_30.current)){ +_30.current=null; +} +var now=new Date(); +var _31=now.getFullYear()+","+(now.getMonth()+1)+","+now.getDate(); +var _32=_30.current?(_30.current.getFullYear()+","+(_30.current.getMonth()+1)+","+_30.current.getDate()):""; +var _33=6-_30.firstDay; +var _34=_33+1; +if(_33>=7){ +_33-=7; +} +if(_34>=7){ +_34-=7; +} +$(_2f).find(".calendar-title span").html(_30.months[_30.month-1]+" "+_30.year); +var _35=$(_2f).find("div.calendar-body"); +_35.children("table").remove(); +var _36=[""]; +_36.push(""); +if(_30.showWeek){ +_36.push(""); +} +for(var i=_30.firstDay;i<_30.weeks.length;i++){ +_36.push(""); +} +for(var i=0;i<_30.firstDay;i++){ +_36.push(""); +} +_36.push(""); +_36.push(""); +var _37=_20(_2f,_30.year,_30.month); +for(var i=0;i<_37.length;i++){ +var _38=_37[i]; +var cls=""; +if(i==0){ +cls="calendar-first"; +}else{ +if(i==_37.length-1){ +cls="calendar-last"; +} +} +_36.push(""); +if(_30.showWeek){ +var _39=_30.getWeekNumber(new Date(_38[0][0],parseInt(_38[0][1])-1,_38[0][2])); +_36.push(""); +} +for(var j=0;j<_38.length;j++){ +var day=_38[j]; +var s=day[0]+","+day[1]+","+day[2]; +var _3a=new Date(day[0],parseInt(day[1])-1,day[2]); +var d=_30.formatter.call(_2f,_3a); +var css=_30.styler.call(_2f,_3a); +var _3b=""; +var _3c=""; +if(typeof css=="string"){ +_3c=css; +}else{ +if(css){ +_3b=css["class"]||""; +_3c=css["style"]||""; +} +} +var cls="calendar-day"; +if(!(_30.year==day[0]&&_30.month==day[1])){ +cls+=" calendar-other-month"; +} +if(s==_31){ +cls+=" calendar-today"; +} +if(s==_32){ +cls+=" calendar-selected"; +} +if(j==_33){ +cls+=" calendar-saturday"; +}else{ +if(j==_34){ +cls+=" calendar-sunday"; +} +} +if(j==0){ +cls+=" calendar-first"; +}else{ +if(j==_38.length-1){ +cls+=" calendar-last"; +} +} +cls+=" "+_3b; +if(!_30.validator.call(_2f,_3a)){ +cls+=" calendar-disabled"; +} +_36.push(""); +} +_36.push(""); +} +_36.push(""); +_36.push("
          "+_30.weekNumberHeader+""+_30.weeks[i]+""+_30.weeks[i]+"
          "+_39+""+d+"
          "); +_35.append(_36.join("")); +_35.children("table.calendar-dtable").prependTo(_35); +_30.onNavigate.call(_2f,_30.year,_30.month); +}; +$.fn.calendar=function(_3d,_3e){ +if(typeof _3d=="string"){ +return $.fn.calendar.methods[_3d](this,_3e); +} +_3d=_3d||{}; +return this.each(function(){ +var _3f=$.data(this,"calendar"); +if(_3f){ +$.extend(_3f.options,_3d); +}else{ +_3f=$.data(this,"calendar",{options:$.extend({},$.fn.calendar.defaults,$.fn.calendar.parseOptions(this),_3d)}); +_6(this); +} +if(_3f.options.border==false){ +$(this).addClass("calendar-noborder"); +} +_1(this); +_9(this); +_19(this); +$(this).find("div.calendar-menu").hide(); +}); +}; +$.fn.calendar.methods={options:function(jq){ +return $.data(jq[0],"calendar").options; +},resize:function(jq,_40){ +return jq.each(function(){ +_1(this,_40); +}); +},moveTo:function(jq,_41){ +return jq.each(function(){ +if(!_41){ +var now=new Date(); +$(this).calendar({year:now.getFullYear(),month:now.getMonth()+1,current:_41}); +return; +} +var _42=$(this).calendar("options"); +if(_42.validator.call(this,_41)){ +var _43=_42.current; +$(this).calendar({year:_41.getFullYear(),month:_41.getMonth()+1,current:_41}); +if(!_43||_43.getTime()!=_41.getTime()){ +_42.onChange.call(this,_42.current,_43); +} +} +}); +}}; +$.fn.calendar.parseOptions=function(_44){ +var t=$(_44); +return $.extend({},$.parser.parseOptions(_44,["weekNumberHeader",{firstDay:"number",fit:"boolean",border:"boolean",showWeek:"boolean"}])); +}; +$.fn.calendar.defaults={width:180,height:180,fit:false,border:true,showWeek:false,firstDay:0,weeks:["S","M","T","W","T","F","S"],months:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],year:new Date().getFullYear(),month:new Date().getMonth()+1,current:(function(){ +var d=new Date(); +return new Date(d.getFullYear(),d.getMonth(),d.getDate()); +})(),weekNumberHeader:"",getWeekNumber:function(_45){ +var _46=new Date(_45.getTime()); +_46.setDate(_46.getDate()+4-(_46.getDay()||7)); +var _47=_46.getTime(); +_46.setMonth(0); +_46.setDate(1); +return Math.floor(Math.round((_47-_46)/86400000)/7)+1; +},formatter:function(_48){ +return _48.getDate(); +},styler:function(_49){ +return ""; +},validator:function(_4a){ +return true; +},onSelect:function(_4b){ +},onChange:function(_4c,_4d){ +},onNavigate:function(_4e,_4f){ +}}; +})(jQuery); + diff --git a/src/main/webapp/static/easyUI/plugins/jquery.combo.js b/src/main/webapp/static/easyUI/plugins/jquery.combo.js new file mode 100644 index 0000000000000000000000000000000000000000..8d9ee99a22d08bfde1e477ed792cb44608bc8929 --- /dev/null +++ b/src/main/webapp/static/easyUI/plugins/jquery.combo.js @@ -0,0 +1,386 @@ +/** + * jQuery EasyUI 1.5.2 + * + * Copyright (c) 2009-2017 www.jeasyui.com. All rights reserved. + * + * Licensed under the freeware license: http://www.jeasyui.com/license_freeware.php + * To use it on other terms please contact us: info@jeasyui.com + * + */ +(function($){ +$(function(){ +$(document).unbind(".combo").bind("mousedown.combo mousewheel.combo",function(e){ +var p=$(e.target).closest("span.combo,div.combo-p,div.menu"); +if(p.length){ +_1(p); +return; +} +$("body>div.combo-p>div.combo-panel:visible").panel("close"); +}); +}); +function _2(_3){ +var _4=$.data(_3,"combo"); +var _5=_4.options; +if(!_4.panel){ +_4.panel=$("
          ").appendTo("body"); +_4.panel.panel({minWidth:_5.panelMinWidth,maxWidth:_5.panelMaxWidth,minHeight:_5.panelMinHeight,maxHeight:_5.panelMaxHeight,doSize:false,closed:true,cls:"combo-p",style:{position:"absolute",zIndex:10},onOpen:function(){ +var _6=$(this).panel("options").comboTarget; +var _7=$.data(_6,"combo"); +if(_7){ +_7.options.onShowPanel.call(_6); +} +},onBeforeClose:function(){ +_1($(this).parent()); +},onClose:function(){ +var _8=$(this).panel("options").comboTarget; +var _9=$(_8).data("combo"); +if(_9){ +_9.options.onHidePanel.call(_8); +} +}}); +} +var _a=$.extend(true,[],_5.icons); +if(_5.hasDownArrow){ +_a.push({iconCls:"combo-arrow",handler:function(e){ +_f(e.data.target); +}}); +} +$(_3).addClass("combo-f").textbox($.extend({},_5,{icons:_a,onChange:function(){ +}})); +$(_3).attr("comboName",$(_3).attr("textboxName")); +_4.combo=$(_3).next(); +_4.combo.addClass("combo"); +}; +function _b(_c){ +var _d=$.data(_c,"combo"); +var _e=_d.options; +var p=_d.panel; +if(p.is(":visible")){ +p.panel("close"); +} +if(!_e.cloned){ +p.panel("destroy"); +} +$(_c).textbox("destroy"); +}; +function _f(_10){ +var _11=$.data(_10,"combo").panel; +if(_11.is(":visible")){ +var _12=_11.combo("combo"); +_13(_12); +if(_12!=_10){ +$(_10).combo("showPanel"); +} +}else{ +var p=$(_10).closest("div.combo-p").children(".combo-panel"); +$("div.combo-panel:visible").not(_11).not(p).panel("close"); +$(_10).combo("showPanel"); +} +$(_10).combo("textbox").focus(); +}; +function _1(_14){ +$(_14).find(".combo-f").each(function(){ +var p=$(this).combo("panel"); +if(p.is(":visible")){ +p.panel("close"); +} +}); +}; +function _15(e){ +var _16=e.data.target; +var _17=$.data(_16,"combo"); +var _18=_17.options; +if(!_18.editable){ +_f(_16); +}else{ +var p=$(_16).closest("div.combo-p").children(".combo-panel"); +$("div.combo-panel:visible").not(p).each(function(){ +var _19=$(this).combo("combo"); +if(_19!=_16){ +_13(_19); +} +}); +} +}; +function _1a(e){ +var _1b=e.data.target; +var t=$(_1b); +var _1c=t.data("combo"); +var _1d=t.combo("options"); +_1c.panel.panel("options").comboTarget=_1b; +switch(e.keyCode){ +case 38: +_1d.keyHandler.up.call(_1b,e); +break; +case 40: +_1d.keyHandler.down.call(_1b,e); +break; +case 37: +_1d.keyHandler.left.call(_1b,e); +break; +case 39: +_1d.keyHandler.right.call(_1b,e); +break; +case 13: +e.preventDefault(); +_1d.keyHandler.enter.call(_1b,e); +return false; +case 9: +case 27: +_13(_1b); +break; +default: +if(_1d.editable){ +if(_1c.timer){ +clearTimeout(_1c.timer); +} +_1c.timer=setTimeout(function(){ +var q=t.combo("getText"); +if(_1c.previousText!=q){ +_1c.previousText=q; +t.combo("showPanel"); +_1d.keyHandler.query.call(_1b,q,e); +t.combo("validate"); +} +},_1d.delay); +} +} +}; +function _1e(_1f){ +var _20=$.data(_1f,"combo"); +var _21=_20.combo; +var _22=_20.panel; +var _23=$(_1f).combo("options"); +var _24=_22.panel("options"); +_24.comboTarget=_1f; +if(_24.closed){ +_22.panel("panel").show().css({zIndex:($.fn.menu?$.fn.menu.defaults.zIndex++:($.fn.window?$.fn.window.defaults.zIndex++:99)),left:-999999}); +_22.panel("resize",{width:(_23.panelWidth?_23.panelWidth:_21._outerWidth()),height:_23.panelHeight}); +_22.panel("panel").hide(); +_22.panel("open"); +} +(function(){ +if(_24.comboTarget==_1f&&_22.is(":visible")){ +_22.panel("move",{left:_25(),top:_26()}); +setTimeout(arguments.callee,200); +} +})(); +function _25(){ +var _27=_21.offset().left; +if(_23.panelAlign=="right"){ +_27+=_21._outerWidth()-_22._outerWidth(); +} +if(_27+_22._outerWidth()>$(window)._outerWidth()+$(document).scrollLeft()){ +_27=$(window)._outerWidth()+$(document).scrollLeft()-_22._outerWidth(); +} +if(_27<0){ +_27=0; +} +return _27; +}; +function _26(){ +var top=_21.offset().top+_21._outerHeight(); +if(top+_22._outerHeight()>$(window)._outerHeight()+$(document).scrollTop()){ +top=_21.offset().top-_22._outerHeight(); +} +if(top<$(document).scrollTop()){ +top=_21.offset().top+_21._outerHeight(); +} +return top; +}; +}; +function _13(_28){ +var _29=$.data(_28,"combo").panel; +_29.panel("close"); +}; +function _2a(_2b,_2c){ +var _2d=$.data(_2b,"combo"); +var _2e=$(_2b).textbox("getText"); +if(_2e!=_2c){ +$(_2b).textbox("setText",_2c); +} +_2d.previousText=_2c; +}; +function _2f(_30){ +var _31=$.data(_30,"combo"); +var _32=_31.options; +var _33=$(_30).next(); +var _34=[]; +_33.find(".textbox-value").each(function(){ +_34.push($(this).val()); +}); +if(_32.multivalue){ +return _34; +}else{ +return _34.length?_34[0].split(_32.separator):_34; +} +}; +function _35(_36,_37){ +var _38=$.data(_36,"combo"); +var _39=_38.combo; +var _3a=$(_36).combo("options"); +if(!$.isArray(_37)){ +_37=_37.split(_3a.separator); +} +var _3b=_2f(_36); +_39.find(".textbox-value").remove(); +if(_37.length){ +if(_3a.multivalue){ +for(var i=0;i<_37.length;i++){ +_3c(_37[i]); +} +}else{ +_3c(_37.join(_3a.separator)); +} +} +function _3c(_3d){ +var _3e=$(_36).attr("textboxName")||""; +var _3f=$("").appendTo(_39); +_3f.attr("name",_3e); +if(_3a.disabled){ +_3f.attr("disabled","disabled"); +} +_3f.val(_3d); +}; +var _40=(function(){ +if(_3b.length!=_37.length){ +return true; +} +for(var i=0;i<_37.length;i++){ +if(_37[i]!=_3b[i]){ +return true; +} +} +return false; +})(); +if(_40){ +$(_36).val(_37.join(_3a.separator)); +if(_3a.multiple){ +_3a.onChange.call(_36,_37,_3b); +}else{ +_3a.onChange.call(_36,_37[0],_3b[0]); +} +$(_36).closest("form").trigger("_change",[_36]); +} +}; +function _41(_42){ +var _43=_2f(_42); +return _43[0]; +}; +function _44(_45,_46){ +_35(_45,[_46]); +}; +function _47(_48){ +var _49=$.data(_48,"combo").options; +var _4a=_49.onChange; +_49.onChange=function(){ +}; +if(_49.multiple){ +_35(_48,_49.value?_49.value:[]); +}else{ +_44(_48,_49.value); +} +_49.onChange=_4a; +}; +$.fn.combo=function(_4b,_4c){ +if(typeof _4b=="string"){ +var _4d=$.fn.combo.methods[_4b]; +if(_4d){ +return _4d(this,_4c); +}else{ +return this.textbox(_4b,_4c); +} +} +_4b=_4b||{}; +return this.each(function(){ +var _4e=$.data(this,"combo"); +if(_4e){ +$.extend(_4e.options,_4b); +if(_4b.value!=undefined){ +_4e.options.originalValue=_4b.value; +} +}else{ +_4e=$.data(this,"combo",{options:$.extend({},$.fn.combo.defaults,$.fn.combo.parseOptions(this),_4b),previousText:""}); +_4e.options.originalValue=_4e.options.value; +} +_2(this); +_47(this); +}); +}; +$.fn.combo.methods={options:function(jq){ +var _4f=jq.textbox("options"); +return $.extend($.data(jq[0],"combo").options,{width:_4f.width,height:_4f.height,disabled:_4f.disabled,readonly:_4f.readonly}); +},cloneFrom:function(jq,_50){ +return jq.each(function(){ +$(this).textbox("cloneFrom",_50); +$.data(this,"combo",{options:$.extend(true,{cloned:true},$(_50).combo("options")),combo:$(this).next(),panel:$(_50).combo("panel")}); +$(this).addClass("combo-f").attr("comboName",$(this).attr("textboxName")); +}); +},combo:function(jq){ +return jq.closest(".combo-panel").panel("options").comboTarget; +},panel:function(jq){ +return $.data(jq[0],"combo").panel; +},destroy:function(jq){ +return jq.each(function(){ +_b(this); +}); +},showPanel:function(jq){ +return jq.each(function(){ +_1e(this); +}); +},hidePanel:function(jq){ +return jq.each(function(){ +_13(this); +}); +},clear:function(jq){ +return jq.each(function(){ +$(this).textbox("setText",""); +var _51=$.data(this,"combo").options; +if(_51.multiple){ +$(this).combo("setValues",[]); +}else{ +$(this).combo("setValue",""); +} +}); +},reset:function(jq){ +return jq.each(function(){ +var _52=$.data(this,"combo").options; +if(_52.multiple){ +$(this).combo("setValues",_52.originalValue); +}else{ +$(this).combo("setValue",_52.originalValue); +} +}); +},setText:function(jq,_53){ +return jq.each(function(){ +_2a(this,_53); +}); +},getValues:function(jq){ +return _2f(jq[0]); +},setValues:function(jq,_54){ +return jq.each(function(){ +_35(this,_54); +}); +},getValue:function(jq){ +return _41(jq[0]); +},setValue:function(jq,_55){ +return jq.each(function(){ +_44(this,_55); +}); +}}; +$.fn.combo.parseOptions=function(_56){ +var t=$(_56); +return $.extend({},$.fn.textbox.parseOptions(_56),$.parser.parseOptions(_56,["separator","panelAlign",{panelWidth:"number",hasDownArrow:"boolean",delay:"number",reversed:"boolean",multivalue:"boolean",selectOnNavigation:"boolean"},{panelMinWidth:"number",panelMaxWidth:"number",panelMinHeight:"number",panelMaxHeight:"number"}]),{panelHeight:(t.attr("panelHeight")=="auto"?"auto":parseInt(t.attr("panelHeight"))||undefined),multiple:(t.attr("multiple")?true:undefined)}); +}; +$.fn.combo.defaults=$.extend({},$.fn.textbox.defaults,{inputEvents:{click:_15,keydown:_1a,paste:_1a,drop:_1a},panelWidth:null,panelHeight:200,panelMinWidth:null,panelMaxWidth:null,panelMinHeight:null,panelMaxHeight:null,panelAlign:"left",reversed:false,multiple:false,multivalue:true,selectOnNavigation:true,separator:",",hasDownArrow:true,delay:200,keyHandler:{up:function(e){ +},down:function(e){ +},left:function(e){ +},right:function(e){ +},enter:function(e){ +},query:function(q,e){ +}},onShowPanel:function(){ +},onHidePanel:function(){ +},onChange:function(_57,_58){ +}}); +})(jQuery); + diff --git a/src/main/webapp/static/easyUI/plugins/jquery.combobox.js b/src/main/webapp/static/easyUI/plugins/jquery.combobox.js new file mode 100644 index 0000000000000000000000000000000000000000..be5f349955b6ee5c5aa50beec1fe3b625533c51c --- /dev/null +++ b/src/main/webapp/static/easyUI/plugins/jquery.combobox.js @@ -0,0 +1,587 @@ +/** + * jQuery EasyUI 1.5.2 + * + * Copyright (c) 2009-2017 www.jeasyui.com. All rights reserved. + * + * Licensed under the freeware license: http://www.jeasyui.com/license_freeware.php + * To use it on other terms please contact us: info@jeasyui.com + * + */ +(function($){ +function _1(_2,_3){ +var _4=$.data(_2,"combobox"); +return $.easyui.indexOfArray(_4.data,_4.options.valueField,_3); +}; +function _5(_6,_7){ +var _8=$.data(_6,"combobox").options; +var _9=$(_6).combo("panel"); +var _a=_8.finder.getEl(_6,_7); +if(_a.length){ +if(_a.position().top<=0){ +var h=_9.scrollTop()+_a.position().top; +_9.scrollTop(h); +}else{ +if(_a.position().top+_a.outerHeight()>_9.height()){ +var h=_9.scrollTop()+_a.position().top+_a.outerHeight()-_9.height(); +_9.scrollTop(h); +} +} +} +_9.triggerHandler("scroll"); +}; +function _b(_c,_d){ +var _e=$.data(_c,"combobox").options; +var _f=$(_c).combobox("panel"); +var _10=_f.children("div.combobox-item-hover"); +if(!_10.length){ +_10=_f.children("div.combobox-item-selected"); +} +_10.removeClass("combobox-item-hover"); +var _11="div.combobox-item:visible:not(.combobox-item-disabled):first"; +var _12="div.combobox-item:visible:not(.combobox-item-disabled):last"; +if(!_10.length){ +_10=_f.children(_d=="next"?_11:_12); +}else{ +if(_d=="next"){ +_10=_10.nextAll(_11); +if(!_10.length){ +_10=_f.children(_11); +} +}else{ +_10=_10.prevAll(_11); +if(!_10.length){ +_10=_f.children(_12); +} +} +} +if(_10.length){ +_10.addClass("combobox-item-hover"); +var row=_e.finder.getRow(_c,_10); +if(row){ +$(_c).combobox("scrollTo",row[_e.valueField]); +if(_e.selectOnNavigation){ +_13(_c,row[_e.valueField]); +} +} +} +}; +function _13(_14,_15,_16){ +var _17=$.data(_14,"combobox").options; +var _18=$(_14).combo("getValues"); +if($.inArray(_15+"",_18)==-1){ +if(_17.multiple){ +_18.push(_15); +}else{ +_18=[_15]; +} +_19(_14,_18,_16); +} +}; +function _1a(_1b,_1c){ +var _1d=$.data(_1b,"combobox").options; +var _1e=$(_1b).combo("getValues"); +var _1f=$.inArray(_1c+"",_1e); +if(_1f>=0){ +_1e.splice(_1f,1); +_19(_1b,_1e); +} +}; +function _19(_20,_21,_22){ +var _23=$.data(_20,"combobox").options; +var _24=$(_20).combo("panel"); +if(!$.isArray(_21)){ +_21=_21.split(_23.separator); +} +if(!_23.multiple){ +_21=_21.length?[_21[0]]:[""]; +} +var _25=$(_20).combo("getValues"); +if(_24.is(":visible")){ +_24.find(".combobox-item-selected").each(function(){ +var row=_23.finder.getRow(_20,$(this)); +if(row){ +if($.easyui.indexOfArray(_25,row[_23.valueField])==-1){ +$(this).removeClass("combobox-item-selected"); +} +} +}); +} +$.map(_25,function(v){ +if($.easyui.indexOfArray(_21,v)==-1){ +var el=_23.finder.getEl(_20,v); +if(el.hasClass("combobox-item-selected")){ +el.removeClass("combobox-item-selected"); +_23.onUnselect.call(_20,_23.finder.getRow(_20,v)); +} +} +}); +var _26=null; +var vv=[],ss=[]; +for(var i=0;i<_21.length;i++){ +var v=_21[i]; +var s=v; +var row=_23.finder.getRow(_20,v); +if(row){ +s=row[_23.textField]; +_26=row; +var el=_23.finder.getEl(_20,v); +if(!el.hasClass("combobox-item-selected")){ +el.addClass("combobox-item-selected"); +_23.onSelect.call(_20,row); +} +} +vv.push(v); +ss.push(s); +} +if(!_22){ +$(_20).combo("setText",ss.join(_23.separator)); +} +if(_23.showItemIcon){ +var tb=$(_20).combobox("textbox"); +tb.removeClass("textbox-bgicon "+_23.textboxIconCls); +if(_26&&_26.iconCls){ +tb.addClass("textbox-bgicon "+_26.iconCls); +_23.textboxIconCls=_26.iconCls; +} +} +$(_20).combo("setValues",vv); +_24.triggerHandler("scroll"); +}; +function _27(_28,_29,_2a){ +var _2b=$.data(_28,"combobox"); +var _2c=_2b.options; +_2b.data=_2c.loadFilter.call(_28,_29); +_2c.view.render.call(_2c.view,_28,$(_28).combo("panel"),_2b.data); +var vv=$(_28).combobox("getValues"); +$.easyui.forEach(_2b.data,false,function(row){ +if(row["selected"]){ +$.easyui.addArrayItem(vv,row[_2c.valueField]+""); +} +}); +if(_2c.multiple){ +_19(_28,vv,_2a); +}else{ +_19(_28,vv.length?[vv[vv.length-1]]:[],_2a); +} +_2c.onLoadSuccess.call(_28,_29); +}; +function _2d(_2e,url,_2f,_30){ +var _31=$.data(_2e,"combobox").options; +if(url){ +_31.url=url; +} +_2f=$.extend({},_31.queryParams,_2f||{}); +if(_31.onBeforeLoad.call(_2e,_2f)==false){ +return; +} +_31.loader.call(_2e,_2f,function(_32){ +_27(_2e,_32,_30); +},function(){ +_31.onLoadError.apply(this,arguments); +}); +}; +function _33(_34,q){ +var _35=$.data(_34,"combobox"); +var _36=_35.options; +var _37=$(); +var qq=_36.multiple?q.split(_36.separator):[q]; +if(_36.mode=="remote"){ +_38(qq); +_2d(_34,null,{q:q},true); +}else{ +var _39=$(_34).combo("panel"); +_39.find(".combobox-item-hover").removeClass("combobox-item-hover"); +_39.find(".combobox-item,.combobox-group").hide(); +var _3a=_35.data; +var vv=[]; +$.map(qq,function(q){ +q=$.trim(q); +var _3b=q; +var _3c=undefined; +_37=$(); +for(var i=0;i<_3a.length;i++){ +var row=_3a[i]; +if(_36.filter.call(_34,q,row)){ +var v=row[_36.valueField]; +var s=row[_36.textField]; +var g=row[_36.groupField]; +var _3d=_36.finder.getEl(_34,v).show(); +if(s.toLowerCase()==q.toLowerCase()){ +_3b=v; +if(_36.reversed){ +_37=_3d; +}else{ +_13(_34,v,true); +} +} +if(_36.groupField&&_3c!=g){ +_36.finder.getGroupEl(_34,g).show(); +_3c=g; +} +} +} +vv.push(_3b); +}); +_38(vv); +} +function _38(vv){ +if(_36.reversed){ +_37.addClass("combobox-item-hover"); +}else{ +_19(_34,_36.multiple?(q?vv:[]):vv,true); +} +}; +}; +function _3e(_3f){ +var t=$(_3f); +var _40=t.combobox("options"); +var _41=t.combobox("panel"); +var _42=_41.children("div.combobox-item-hover"); +if(_42.length){ +_42.removeClass("combobox-item-hover"); +var row=_40.finder.getRow(_3f,_42); +var _43=row[_40.valueField]; +if(_40.multiple){ +if(_42.hasClass("combobox-item-selected")){ +t.combobox("unselect",_43); +}else{ +t.combobox("select",_43); +} +}else{ +t.combobox("select",_43); +} +} +var vv=[]; +$.map(t.combobox("getValues"),function(v){ +if(_1(_3f,v)>=0){ +vv.push(v); +} +}); +t.combobox("setValues",vv); +if(!_40.multiple){ +t.combobox("hidePanel"); +} +}; +function _44(_45){ +var _46=$.data(_45,"combobox"); +var _47=_46.options; +$(_45).addClass("combobox-f"); +$(_45).combo($.extend({},_47,{onShowPanel:function(){ +$(this).combo("panel").find("div.combobox-item:hidden,div.combobox-group:hidden").show(); +_19(this,$(this).combobox("getValues"),true); +$(this).combobox("scrollTo",$(this).combobox("getValue")); +_47.onShowPanel.call(this); +}})); +var p=$(_45).combo("panel"); +p.unbind(".combobox"); +for(var _48 in _47.panelEvents){ +p.bind(_48+".combobox",{target:_45},_47.panelEvents[_48]); +} +}; +function _49(e){ +$(this).children("div.combobox-item-hover").removeClass("combobox-item-hover"); +var _4a=$(e.target).closest("div.combobox-item"); +if(!_4a.hasClass("combobox-item-disabled")){ +_4a.addClass("combobox-item-hover"); +} +e.stopPropagation(); +}; +function _4b(e){ +$(e.target).closest("div.combobox-item").removeClass("combobox-item-hover"); +e.stopPropagation(); +}; +function _4c(e){ +var _4d=$(this).panel("options").comboTarget; +if(!_4d){ +return; +} +var _4e=$(_4d).combobox("options"); +var _4f=$(e.target).closest("div.combobox-item"); +if(!_4f.length||_4f.hasClass("combobox-item-disabled")){ +return; +} +var row=_4e.finder.getRow(_4d,_4f); +if(!row){ +return; +} +if(_4e.blurTimer){ +clearTimeout(_4e.blurTimer); +_4e.blurTimer=null; +} +_4e.onClick.call(_4d,row); +var _50=row[_4e.valueField]; +if(_4e.multiple){ +if(_4f.hasClass("combobox-item-selected")){ +_1a(_4d,_50); +}else{ +_13(_4d,_50); +} +}else{ +$(_4d).combobox("setValue",_50).combobox("hidePanel"); +} +e.stopPropagation(); +}; +function _51(e){ +var _52=$(this).panel("options").comboTarget; +if(!_52){ +return; +} +var _53=$(_52).combobox("options"); +if(_53.groupPosition=="sticky"){ +var _54=$(this).children(".combobox-stick"); +if(!_54.length){ +_54=$("
          ").appendTo(this); +} +_54.hide(); +var _55=$(_52).data("combobox"); +$(this).children(".combobox-group:visible").each(function(){ +var g=$(this); +var _56=_53.finder.getGroup(_52,g); +var _57=_55.data[_56.startIndex+_56.count-1]; +var _58=_53.finder.getEl(_52,_57[_53.valueField]); +if(g.position().top<0&&_58.position().top>0){ +_54.show().html(g.html()); +return false; +} +}); +} +}; +$.fn.combobox=function(_59,_5a){ +if(typeof _59=="string"){ +var _5b=$.fn.combobox.methods[_59]; +if(_5b){ +return _5b(this,_5a); +}else{ +return this.combo(_59,_5a); +} +} +_59=_59||{}; +return this.each(function(){ +var _5c=$.data(this,"combobox"); +if(_5c){ +$.extend(_5c.options,_59); +}else{ +_5c=$.data(this,"combobox",{options:$.extend({},$.fn.combobox.defaults,$.fn.combobox.parseOptions(this),_59),data:[]}); +} +_44(this); +if(_5c.options.data){ +_27(this,_5c.options.data); +}else{ +var _5d=$.fn.combobox.parseData(this); +if(_5d.length){ +_27(this,_5d); +} +} +_2d(this); +}); +}; +$.fn.combobox.methods={options:function(jq){ +var _5e=jq.combo("options"); +return $.extend($.data(jq[0],"combobox").options,{width:_5e.width,height:_5e.height,originalValue:_5e.originalValue,disabled:_5e.disabled,readonly:_5e.readonly}); +},cloneFrom:function(jq,_5f){ +return jq.each(function(){ +$(this).combo("cloneFrom",_5f); +$.data(this,"combobox",$(_5f).data("combobox")); +$(this).addClass("combobox-f").attr("comboboxName",$(this).attr("textboxName")); +}); +},getData:function(jq){ +return $.data(jq[0],"combobox").data; +},setValues:function(jq,_60){ +return jq.each(function(){ +_19(this,_60); +}); +},setValue:function(jq,_61){ +return jq.each(function(){ +_19(this,$.isArray(_61)?_61:[_61]); +}); +},clear:function(jq){ +return jq.each(function(){ +_19(this,[]); +}); +},reset:function(jq){ +return jq.each(function(){ +var _62=$(this).combobox("options"); +if(_62.multiple){ +$(this).combobox("setValues",_62.originalValue); +}else{ +$(this).combobox("setValue",_62.originalValue); +} +}); +},loadData:function(jq,_63){ +return jq.each(function(){ +_27(this,_63); +}); +},reload:function(jq,url){ +return jq.each(function(){ +if(typeof url=="string"){ +_2d(this,url); +}else{ +if(url){ +var _64=$(this).combobox("options"); +_64.queryParams=url; +} +_2d(this); +} +}); +},select:function(jq,_65){ +return jq.each(function(){ +_13(this,_65); +}); +},unselect:function(jq,_66){ +return jq.each(function(){ +_1a(this,_66); +}); +},scrollTo:function(jq,_67){ +return jq.each(function(){ +_5(this,_67); +}); +}}; +$.fn.combobox.parseOptions=function(_68){ +var t=$(_68); +return $.extend({},$.fn.combo.parseOptions(_68),$.parser.parseOptions(_68,["valueField","textField","groupField","groupPosition","mode","method","url",{showItemIcon:"boolean",limitToList:"boolean"}])); +}; +$.fn.combobox.parseData=function(_69){ +var _6a=[]; +var _6b=$(_69).combobox("options"); +$(_69).children().each(function(){ +if(this.tagName.toLowerCase()=="optgroup"){ +var _6c=$(this).attr("label"); +$(this).children().each(function(){ +_6d(this,_6c); +}); +}else{ +_6d(this); +} +}); +return _6a; +function _6d(el,_6e){ +var t=$(el); +var row={}; +row[_6b.valueField]=t.attr("value")!=undefined?t.attr("value"):t.text(); +row[_6b.textField]=t.text(); +row["selected"]=t.is(":selected"); +row["disabled"]=t.is(":disabled"); +if(_6e){ +_6b.groupField=_6b.groupField||"group"; +row[_6b.groupField]=_6e; +} +_6a.push(row); +}; +}; +var _6f=0; +var _70={render:function(_71,_72,_73){ +var _74=$.data(_71,"combobox"); +var _75=_74.options; +_6f++; +_74.itemIdPrefix="_easyui_combobox_i"+_6f; +_74.groupIdPrefix="_easyui_combobox_g"+_6f; +_74.groups=[]; +var dd=[]; +var _76=undefined; +for(var i=0;i<_73.length;i++){ +var row=_73[i]; +var v=row[_75.valueField]+""; +var s=row[_75.textField]; +var g=row[_75.groupField]; +if(g){ +if(_76!=g){ +_76=g; +_74.groups.push({value:g,startIndex:i,count:1}); +dd.push("
          "); +dd.push(_75.groupFormatter?_75.groupFormatter.call(_71,g):g); +dd.push("
          "); +}else{ +_74.groups[_74.groups.length-1].count++; +} +}else{ +_76=undefined; +} +var cls="combobox-item"+(row.disabled?" combobox-item-disabled":"")+(g?" combobox-gitem":""); +dd.push("
          "); +if(_75.showItemIcon&&row.iconCls){ +dd.push(""); +} +dd.push(_75.formatter?_75.formatter.call(_71,row):s); +dd.push("
          "); +} +$(_72).html(dd.join("")); +}}; +$.fn.combobox.defaults=$.extend({},$.fn.combo.defaults,{valueField:"value",textField:"text",groupPosition:"static",groupField:null,groupFormatter:function(_77){ +return _77; +},mode:"local",method:"post",url:null,data:null,queryParams:{},showItemIcon:false,limitToList:false,view:_70,keyHandler:{up:function(e){ +_b(this,"prev"); +e.preventDefault(); +},down:function(e){ +_b(this,"next"); +e.preventDefault(); +},left:function(e){ +},right:function(e){ +},enter:function(e){ +_3e(this); +},query:function(q,e){ +_33(this,q); +}},inputEvents:$.extend({},$.fn.combo.defaults.inputEvents,{blur:function(e){ +var _78=e.data.target; +var _79=$(_78).combobox("options"); +if(_79.reversed||_79.limitToList){ +if(_79.blurTimer){ +clearTimeout(_79.blurTimer); +} +_79.blurTimer=setTimeout(function(){ +var _7a=$(_78).parent().length; +if(_7a){ +if(_79.reversed){ +$(_78).combobox("setValues",$(_78).combobox("getValues")); +}else{ +if(_79.limitToList){ +_3e(_78); +} +} +_79.blurTimer=null; +} +},50); +} +}}),panelEvents:{mouseover:_49,mouseout:_4b,click:_4c,scroll:_51},filter:function(q,row){ +var _7b=$(this).combobox("options"); +return row[_7b.textField].toLowerCase().indexOf(q.toLowerCase())>=0; +},formatter:function(row){ +var _7c=$(this).combobox("options"); +return row[_7c.textField]; +},loader:function(_7d,_7e,_7f){ +var _80=$(this).combobox("options"); +if(!_80.url){ +return false; +} +$.ajax({type:_80.method,url:_80.url,data:_7d,dataType:"json",success:function(_81){ +_7e(_81); +},error:function(){ +_7f.apply(this,arguments); +}}); +},loadFilter:function(_82){ +return _82; +},finder:{getEl:function(_83,_84){ +var _85=_1(_83,_84); +var id=$.data(_83,"combobox").itemIdPrefix+"_"+_85; +return $("#"+id); +},getGroupEl:function(_86,_87){ +var _88=$.data(_86,"combobox"); +var _89=$.easyui.indexOfArray(_88.groups,"value",_87); +var id=_88.groupIdPrefix+"_"+_89; +return $("#"+id); +},getGroup:function(_8a,p){ +var _8b=$.data(_8a,"combobox"); +var _8c=p.attr("id").substr(_8b.groupIdPrefix.length+1); +return _8b.groups[parseInt(_8c)]; +},getRow:function(_8d,p){ +var _8e=$.data(_8d,"combobox"); +var _8f=(p instanceof $)?p.attr("id").substr(_8e.itemIdPrefix.length+1):_1(_8d,p); +return _8e.data[parseInt(_8f)]; +}},onBeforeLoad:function(_90){ +},onLoadSuccess:function(_91){ +},onLoadError:function(){ +},onSelect:function(_92){ +},onUnselect:function(_93){ +},onClick:function(_94){ +}}); +})(jQuery); + diff --git a/src/main/webapp/static/easyUI/plugins/jquery.combogrid.js b/src/main/webapp/static/easyUI/plugins/jquery.combogrid.js new file mode 100644 index 0000000000000000000000000000000000000000..47c4ca7ef58386c5dfcb99776b850c7862a1d130 --- /dev/null +++ b/src/main/webapp/static/easyUI/plugins/jquery.combogrid.js @@ -0,0 +1,346 @@ +/** + * jQuery EasyUI 1.5.2 + * + * Copyright (c) 2009-2017 www.jeasyui.com. All rights reserved. + * + * Licensed under the freeware license: http://www.jeasyui.com/license_freeware.php + * To use it on other terms please contact us: info@jeasyui.com + * + */ +(function($){ +function _1(_2){ +var _3=$.data(_2,"combogrid"); +var _4=_3.options; +var _5=_3.grid; +$(_2).addClass("combogrid-f").combo($.extend({},_4,{onShowPanel:function(){ +_20(this,$(this).combogrid("getValues"),true); +var p=$(this).combogrid("panel"); +var _6=p.outerHeight()-p.height(); +var _7=p._size("minHeight"); +var _8=p._size("maxHeight"); +var dg=$(this).combogrid("grid"); +dg.datagrid("resize",{width:"100%",height:(isNaN(parseInt(_4.panelHeight))?"auto":"100%"),minHeight:(_7?_7-_6:""),maxHeight:(_8?_8-_6:"")}); +var _9=dg.datagrid("getSelected"); +if(_9){ +dg.datagrid("scrollTo",dg.datagrid("getRowIndex",_9)); +} +_4.onShowPanel.call(this); +}})); +var _a=$(_2).combo("panel"); +if(!_5){ +_5=$("
          ").appendTo(_a); +_3.grid=_5; +} +_5.datagrid($.extend({},_4,{border:false,singleSelect:(!_4.multiple),onLoadSuccess:_b,onClickRow:_c,onSelect:_d("onSelect"),onUnselect:_d("onUnselect"),onSelectAll:_d("onSelectAll"),onUnselectAll:_d("onUnselectAll")})); +function _e(dg){ +return $(dg).closest(".combo-panel").panel("options").comboTarget||_2; +}; +function _b(_f){ +var _10=_e(this); +var _11=$(_10).data("combogrid"); +var _12=_11.options; +var _13=$(_10).combo("getValues"); +_20(_10,_13,_11.remainText); +_12.onLoadSuccess.call(this,_f); +}; +function _c(_14,row){ +var _15=_e(this); +var _16=$(_15).data("combogrid"); +var _17=_16.options; +_16.remainText=false; +_18.call(this); +if(!_17.multiple){ +$(_15).combo("hidePanel"); +} +_17.onClickRow.call(this,_14,row); +}; +function _d(_19){ +return function(_1a,row){ +var _1b=_e(this); +var _1c=$(_1b).combogrid("options"); +if(_19=="onUnselectAll"){ +if(_1c.multiple){ +_18.call(this); +} +}else{ +_18.call(this); +} +_1c[_19].call(this,_1a,row); +}; +}; +function _18(){ +var dg=$(this); +var _1d=_e(dg); +var _1e=$(_1d).data("combogrid"); +var _1f=_1e.options; +var vv=$.map(dg.datagrid("getSelections"),function(row){ +return row[_1f.idField]; +}); +vv=vv.concat(_1f.unselectedValues); +_20(_1d,vv,_1e.remainText); +}; +}; +function nav(_21,dir){ +var _22=$.data(_21,"combogrid"); +var _23=_22.options; +var _24=_22.grid; +var _25=_24.datagrid("getRows").length; +if(!_25){ +return; +} +var tr=_23.finder.getTr(_24[0],null,"highlight"); +if(!tr.length){ +tr=_23.finder.getTr(_24[0],null,"selected"); +} +var _26; +if(!tr.length){ +_26=(dir=="next"?0:_25-1); +}else{ +var _26=parseInt(tr.attr("datagrid-row-index")); +_26+=(dir=="next"?1:-1); +if(_26<0){ +_26=_25-1; +} +if(_26>=_25){ +_26=0; +} +} +_24.datagrid("highlightRow",_26); +if(_23.selectOnNavigation){ +_22.remainText=false; +_24.datagrid("selectRow",_26); +} +}; +function _20(_27,_28,_29){ +var _2a=$.data(_27,"combogrid"); +var _2b=_2a.options; +var _2c=_2a.grid; +var _2d=$(_27).combo("getValues"); +var _2e=$(_27).combo("options"); +var _2f=_2e.onChange; +_2e.onChange=function(){ +}; +var _30=_2c.datagrid("options"); +var _31=_30.onSelect; +var _32=_30.onUnselectAll; +_30.onSelect=_30.onUnselectAll=function(){ +}; +if(!$.isArray(_28)){ +_28=_28.split(_2b.separator); +} +if(!_2b.multiple){ +_28=_28.length?[_28[0]]:[""]; +} +var vv=$.map(_28,function(_33){ +return String(_33); +}); +vv=$.grep(vv,function(v,_34){ +return _34===$.inArray(v,vv); +}); +var _35=$.grep(_2c.datagrid("getSelections"),function(row,_36){ +return $.inArray(String(row[_2b.idField]),vv)>=0; +}); +_2c.datagrid("clearSelections"); +_2c.data("datagrid").selectedRows=_35; +var ss=[]; +_2b.unselectedValues=[]; +$.map(vv,function(v){ +var _37=_2c.datagrid("getRowIndex",v); +if(_37>=0){ +_2c.datagrid("selectRow",_37); +}else{ +_2b.unselectedValues.push(v); +} +ss.push(_38(v,_2c.datagrid("getRows"))||_38(v,_35)||_38(v,_2b.mappingRows)||v); +}); +$(_27).combo("setValues",_2d); +_2e.onChange=_2f; +_30.onSelect=_31; +_30.onUnselectAll=_32; +if(!_29){ +var s=ss.join(_2b.separator); +if($(_27).combo("getText")!=s){ +$(_27).combo("setText",s); +} +} +$(_27).combo("setValues",_28); +function _38(_39,a){ +var _3a=$.easyui.getArrayItem(a,_2b.idField,_39); +return _3a?_3a[_2b.textField]:undefined; +}; +}; +function _3b(_3c,q){ +var _3d=$.data(_3c,"combogrid"); +var _3e=_3d.options; +var _3f=_3d.grid; +_3d.remainText=true; +var qq=_3e.multiple?q.split(_3e.separator):[q]; +qq=$.grep(qq,function(q){ +return $.trim(q)!=""; +}); +if(_3e.mode=="remote"){ +_40(qq); +_3f.datagrid("load",$.extend({},_3e.queryParams,{q:q})); +}else{ +_3f.datagrid("highlightRow",-1); +var _41=_3f.datagrid("getRows"); +var vv=[]; +$.map(qq,function(q){ +q=$.trim(q); +var _42=q; +_43(_3e.mappingRows,q); +_43(_3f.datagrid("getSelections"),q); +var _44=_43(_41,q); +if(_44>=0){ +if(_3e.reversed){ +_3f.datagrid("highlightRow",_44); +} +}else{ +$.map(_41,function(row,i){ +if(_3e.filter.call(_3c,q,row)){ +_3f.datagrid("highlightRow",i); +} +}); +} +}); +_40(vv); +} +function _43(_45,q){ +for(var i=0;i<_45.length;i++){ +var row=_45[i]; +if((row[_3e.textField]||"").toLowerCase()==q.toLowerCase()){ +vv.push(row[_3e.idField]); +return i; +} +} +return -1; +}; +function _40(vv){ +if(!_3e.reversed){ +_20(_3c,vv,true); +} +}; +}; +function _46(_47){ +var _48=$.data(_47,"combogrid"); +var _49=_48.options; +var _4a=_48.grid; +var tr=_49.finder.getTr(_4a[0],null,"highlight"); +_48.remainText=false; +if(tr.length){ +var _4b=parseInt(tr.attr("datagrid-row-index")); +if(_49.multiple){ +if(tr.hasClass("datagrid-row-selected")){ +_4a.datagrid("unselectRow",_4b); +}else{ +_4a.datagrid("selectRow",_4b); +} +}else{ +_4a.datagrid("selectRow",_4b); +} +} +var vv=[]; +$.map(_4a.datagrid("getSelections"),function(row){ +vv.push(row[_49.idField]); +}); +$.map(_49.unselectedValues,function(v){ +if($.easyui.indexOfArray(_49.mappingRows,_49.idField,v)>=0){ +$.easyui.addArrayItem(vv,v); +} +}); +$(_47).combogrid("setValues",vv); +if(!_49.multiple){ +$(_47).combogrid("hidePanel"); +} +}; +$.fn.combogrid=function(_4c,_4d){ +if(typeof _4c=="string"){ +var _4e=$.fn.combogrid.methods[_4c]; +if(_4e){ +return _4e(this,_4d); +}else{ +return this.combo(_4c,_4d); +} +} +_4c=_4c||{}; +return this.each(function(){ +var _4f=$.data(this,"combogrid"); +if(_4f){ +$.extend(_4f.options,_4c); +}else{ +_4f=$.data(this,"combogrid",{options:$.extend({},$.fn.combogrid.defaults,$.fn.combogrid.parseOptions(this),_4c)}); +} +_1(this); +}); +}; +$.fn.combogrid.methods={options:function(jq){ +var _50=jq.combo("options"); +return $.extend($.data(jq[0],"combogrid").options,{width:_50.width,height:_50.height,originalValue:_50.originalValue,disabled:_50.disabled,readonly:_50.readonly}); +},cloneFrom:function(jq,_51){ +return jq.each(function(){ +$(this).combo("cloneFrom",_51); +$.data(this,"combogrid",{options:$.extend(true,{cloned:true},$(_51).combogrid("options")),combo:$(this).next(),panel:$(_51).combo("panel"),grid:$(_51).combogrid("grid")}); +}); +},grid:function(jq){ +return $.data(jq[0],"combogrid").grid; +},setValues:function(jq,_52){ +return jq.each(function(){ +var _53=$(this).combogrid("options"); +if($.isArray(_52)){ +_52=$.map(_52,function(_54){ +if(_54&&typeof _54=="object"){ +$.easyui.addArrayItem(_53.mappingRows,_53.idField,_54); +return _54[_53.idField]; +}else{ +return _54; +} +}); +} +_20(this,_52); +}); +},setValue:function(jq,_55){ +return jq.each(function(){ +$(this).combogrid("setValues",$.isArray(_55)?_55:[_55]); +}); +},clear:function(jq){ +return jq.each(function(){ +$(this).combogrid("setValues",[]); +}); +},reset:function(jq){ +return jq.each(function(){ +var _56=$(this).combogrid("options"); +if(_56.multiple){ +$(this).combogrid("setValues",_56.originalValue); +}else{ +$(this).combogrid("setValue",_56.originalValue); +} +}); +}}; +$.fn.combogrid.parseOptions=function(_57){ +var t=$(_57); +return $.extend({},$.fn.combo.parseOptions(_57),$.fn.datagrid.parseOptions(_57),$.parser.parseOptions(_57,["idField","textField","mode"])); +}; +$.fn.combogrid.defaults=$.extend({},$.fn.combo.defaults,$.fn.datagrid.defaults,{loadMsg:null,idField:null,textField:null,unselectedValues:[],mappingRows:[],mode:"local",keyHandler:{up:function(e){ +nav(this,"prev"); +e.preventDefault(); +},down:function(e){ +nav(this,"next"); +e.preventDefault(); +},left:function(e){ +},right:function(e){ +},enter:function(e){ +_46(this); +},query:function(q,e){ +_3b(this,q); +}},inputEvents:$.extend({},$.fn.combo.defaults.inputEvents,{blur:function(e){ +var _58=e.data.target; +var _59=$(_58).combogrid("options"); +if(_59.reversed){ +$(_58).combogrid("setValues",$(_58).combogrid("getValues")); +} +}}),filter:function(q,row){ +var _5a=$(this).combogrid("options"); +return (row[_5a.textField]||"").toLowerCase().indexOf(q.toLowerCase())>=0; +}}); +})(jQuery); + diff --git a/src/main/webapp/static/easyUI/plugins/jquery.combotree.js b/src/main/webapp/static/easyUI/plugins/jquery.combotree.js new file mode 100644 index 0000000000000000000000000000000000000000..710822261ce8ff73bf3de08f96a654eb9b39e2c8 --- /dev/null +++ b/src/main/webapp/static/easyUI/plugins/jquery.combotree.js @@ -0,0 +1,237 @@ +/** + * jQuery EasyUI 1.5.2 + * + * Copyright (c) 2009-2017 www.jeasyui.com. All rights reserved. + * + * Licensed under the freeware license: http://www.jeasyui.com/license_freeware.php + * To use it on other terms please contact us: info@jeasyui.com + * + */ +(function($){ +function _1(_2){ +var _3=$.data(_2,"combotree"); +var _4=_3.options; +var _5=_3.tree; +$(_2).addClass("combotree-f"); +$(_2).combo($.extend({},_4,{onShowPanel:function(){ +if(_4.editable){ +_5.tree("doFilter",""); +} +_4.onShowPanel.call(this); +}})); +var _6=$(_2).combo("panel"); +if(!_5){ +_5=$("
            ").appendTo(_6); +_3.tree=_5; +} +_5.tree($.extend({},_4,{checkbox:_4.multiple,onLoadSuccess:function(_7,_8){ +var _9=$(_2).combotree("getValues"); +if(_4.multiple){ +$.map(_5.tree("getChecked"),function(_a){ +$.easyui.addArrayItem(_9,_a.id); +}); +} +_15(_2,_9,_3.remainText); +_4.onLoadSuccess.call(this,_7,_8); +},onClick:function(_b){ +if(_4.multiple){ +$(this).tree(_b.checked?"uncheck":"check",_b.target); +}else{ +$(_2).combo("hidePanel"); +} +_3.remainText=false; +_e(_2); +_4.onClick.call(this,_b); +},onCheck:function(_c,_d){ +_3.remainText=false; +_e(_2); +_4.onCheck.call(this,_c,_d); +}})); +}; +function _e(_f){ +var _10=$.data(_f,"combotree"); +var _11=_10.options; +var _12=_10.tree; +var vv=[]; +if(_11.multiple){ +vv=$.map(_12.tree("getChecked"),function(_13){ +return _13.id; +}); +}else{ +var _14=_12.tree("getSelected"); +if(_14){ +vv.push(_14.id); +} +} +vv=vv.concat(_11.unselectedValues); +_15(_f,vv,_10.remainText); +}; +function _15(_16,_17,_18){ +var _19=$.data(_16,"combotree"); +var _1a=_19.options; +var _1b=_19.tree; +var _1c=_1b.tree("options"); +var _1d=_1c.onBeforeCheck; +var _1e=_1c.onCheck; +var _1f=_1c.onSelect; +_1c.onBeforeCheck=_1c.onCheck=_1c.onSelect=function(){ +}; +if(!$.isArray(_17)){ +_17=_17.split(_1a.separator); +} +if(!_1a.multiple){ +_17=_17.length?[_17[0]]:[""]; +} +var vv=$.map(_17,function(_20){ +return String(_20); +}); +_1b.find("div.tree-node-selected").removeClass("tree-node-selected"); +$.map(_1b.tree("getChecked"),function(_21){ +if($.inArray(String(_21.id),vv)==-1){ +_1b.tree("uncheck",_21.target); +} +}); +var ss=[]; +_1a.unselectedValues=[]; +$.map(vv,function(v){ +var _22=_1b.tree("find",v); +if(_22){ +_1b.tree("check",_22.target).tree("select",_22.target); +ss.push(_23(_22)); +}else{ +ss.push(_24(v,_1a.mappingRows)||v); +_1a.unselectedValues.push(v); +} +}); +if(_1a.multiple){ +$.map(_1b.tree("getChecked"),function(_25){ +var id=String(_25.id); +if($.inArray(id,vv)==-1){ +vv.push(id); +ss.push(_23(_25)); +} +}); +} +_1c.onBeforeCheck=_1d; +_1c.onCheck=_1e; +_1c.onSelect=_1f; +if(!_18){ +var s=ss.join(_1a.separator); +if($(_16).combo("getText")!=s){ +$(_16).combo("setText",s); +} +} +$(_16).combo("setValues",vv); +function _24(_26,a){ +var _27=$.easyui.getArrayItem(a,"id",_26); +return _27?_23(_27):undefined; +}; +function _23(_28){ +return _28[_1a.textField||""]||_28.text; +}; +}; +function _29(_2a,q){ +var _2b=$.data(_2a,"combotree"); +var _2c=_2b.options; +var _2d=_2b.tree; +_2b.remainText=true; +_2d.tree("doFilter",_2c.multiple?q.split(_2c.separator):q); +}; +function _2e(_2f){ +var _30=$.data(_2f,"combotree"); +_30.remainText=false; +$(_2f).combotree("setValues",$(_2f).combotree("getValues")); +$(_2f).combotree("hidePanel"); +}; +$.fn.combotree=function(_31,_32){ +if(typeof _31=="string"){ +var _33=$.fn.combotree.methods[_31]; +if(_33){ +return _33(this,_32); +}else{ +return this.combo(_31,_32); +} +} +_31=_31||{}; +return this.each(function(){ +var _34=$.data(this,"combotree"); +if(_34){ +$.extend(_34.options,_31); +}else{ +$.data(this,"combotree",{options:$.extend({},$.fn.combotree.defaults,$.fn.combotree.parseOptions(this),_31)}); +} +_1(this); +}); +}; +$.fn.combotree.methods={options:function(jq){ +var _35=jq.combo("options"); +return $.extend($.data(jq[0],"combotree").options,{width:_35.width,height:_35.height,originalValue:_35.originalValue,disabled:_35.disabled,readonly:_35.readonly}); +},clone:function(jq,_36){ +var t=jq.combo("clone",_36); +t.data("combotree",{options:$.extend(true,{},jq.combotree("options")),tree:jq.combotree("tree")}); +return t; +},tree:function(jq){ +return $.data(jq[0],"combotree").tree; +},loadData:function(jq,_37){ +return jq.each(function(){ +var _38=$.data(this,"combotree").options; +_38.data=_37; +var _39=$.data(this,"combotree").tree; +_39.tree("loadData",_37); +}); +},reload:function(jq,url){ +return jq.each(function(){ +var _3a=$.data(this,"combotree").options; +var _3b=$.data(this,"combotree").tree; +if(url){ +_3a.url=url; +} +_3b.tree({url:_3a.url}); +}); +},setValues:function(jq,_3c){ +return jq.each(function(){ +var _3d=$(this).combotree("options"); +if($.isArray(_3c)){ +_3c=$.map(_3c,function(_3e){ +if(_3e&&typeof _3e=="object"){ +$.easyui.addArrayItem(_3d.mappingRows,"id",_3e); +return _3e.id; +}else{ +return _3e; +} +}); +} +_15(this,_3c); +}); +},setValue:function(jq,_3f){ +return jq.each(function(){ +$(this).combotree("setValues",$.isArray(_3f)?_3f:[_3f]); +}); +},clear:function(jq){ +return jq.each(function(){ +$(this).combotree("setValues",[]); +}); +},reset:function(jq){ +return jq.each(function(){ +var _40=$(this).combotree("options"); +if(_40.multiple){ +$(this).combotree("setValues",_40.originalValue); +}else{ +$(this).combotree("setValue",_40.originalValue); +} +}); +}}; +$.fn.combotree.parseOptions=function(_41){ +return $.extend({},$.fn.combo.parseOptions(_41),$.fn.tree.parseOptions(_41)); +}; +$.fn.combotree.defaults=$.extend({},$.fn.combo.defaults,$.fn.tree.defaults,{editable:false,textField:null,unselectedValues:[],mappingRows:[],keyHandler:{up:function(e){ +},down:function(e){ +},left:function(e){ +},right:function(e){ +},enter:function(e){ +_2e(this); +},query:function(q,e){ +_29(this,q); +}}}); +})(jQuery); + diff --git a/src/main/webapp/static/easyUI/plugins/jquery.combotreegrid.js b/src/main/webapp/static/easyUI/plugins/jquery.combotreegrid.js new file mode 100644 index 0000000000000000000000000000000000000000..26e7f6cf650e7b6ccd6758c8949e6577d3cf4ebd --- /dev/null +++ b/src/main/webapp/static/easyUI/plugins/jquery.combotreegrid.js @@ -0,0 +1,270 @@ +/** + * jQuery EasyUI 1.5.2 + * + * Copyright (c) 2009-2017 www.jeasyui.com. All rights reserved. + * + * Licensed under the freeware license: http://www.jeasyui.com/license_freeware.php + * To use it on other terms please contact us: info@jeasyui.com + * + */ +(function($){ +function _1(_2){ +var _3=$.data(_2,"combotreegrid"); +var _4=_3.options; +$(_2).addClass("combotreegrid-f").combo($.extend({},_4,{onShowPanel:function(){ +var p=$(this).combotreegrid("panel"); +var _5=p.outerHeight()-p.height(); +var _6=p._size("minHeight"); +var _7=p._size("maxHeight"); +var dg=$(this).combotreegrid("grid"); +dg.treegrid("resize",{width:"100%",height:(isNaN(parseInt(_4.panelHeight))?"auto":"100%"),minHeight:(_6?_6-_5:""),maxHeight:(_7?_7-_5:"")}); +var _8=dg.treegrid("getSelected"); +if(_8){ +dg.treegrid("scrollTo",_8[_4.idField]); +} +_4.onShowPanel.call(this); +}})); +if(!_3.grid){ +var _9=$(_2).combo("panel"); +_3.grid=$("
            ").appendTo(_9); +} +_3.grid.treegrid($.extend({},_4,{border:false,checkbox:_4.multiple,onLoadSuccess:function(_a,_b){ +var _c=$(_2).combotreegrid("getValues"); +if(_4.multiple){ +$.map($(this).treegrid("getCheckedNodes"),function(_d){ +$.easyui.addArrayItem(_c,_d[_4.idField]); +}); +} +_16(_2,_c); +_4.onLoadSuccess.call(this,_a,_b); +_3.remainText=false; +},onClickRow:function(_e){ +if(_4.multiple){ +$(this).treegrid(_e.checked?"uncheckNode":"checkNode",_e[_4.idField]); +$(this).treegrid("unselect",_e[_4.idField]); +}else{ +$(_2).combo("hidePanel"); +} +_11(_2); +_4.onClickRow.call(this,_e); +},onCheckNode:function(_f,_10){ +_11(_2); +_4.onCheckNode.call(this,_f,_10); +}})); +}; +function _11(_12){ +var _13=$.data(_12,"combotreegrid"); +var _14=_13.options; +var _15=_13.grid; +var vv=[]; +if(_14.multiple){ +vv=$.map(_15.treegrid("getCheckedNodes"),function(row){ +return row[_14.idField]; +}); +}else{ +var row=_15.treegrid("getSelected"); +if(row){ +vv.push(row[_14.idField]); +} +} +vv=vv.concat(_14.unselectedValues); +_16(_12,vv); +}; +function _16(_17,_18){ +var _19=$.data(_17,"combotreegrid"); +var _1a=_19.options; +var _1b=_19.grid; +if(!$.isArray(_18)){ +_18=_18.split(_1a.separator); +} +if(!_1a.multiple){ +_18=_18.length?[_18[0]]:[""]; +} +var vv=$.map(_18,function(_1c){ +return String(_1c); +}); +vv=$.grep(vv,function(v,_1d){ +return _1d===$.inArray(v,vv); +}); +var _1e=_1b.treegrid("getSelected"); +if(_1e){ +_1b.treegrid("unselect",_1e[_1a.idField]); +} +$.map(_1b.treegrid("getCheckedNodes"),function(row){ +if($.inArray(String(row[_1a.idField]),vv)==-1){ +_1b.treegrid("uncheckNode",row[_1a.idField]); +} +}); +var ss=[]; +_1a.unselectedValues=[]; +$.map(vv,function(v){ +var row=_1b.treegrid("find",v); +if(row){ +if(_1a.multiple){ +_1b.treegrid("checkNode",v); +}else{ +_1b.treegrid("select",v); +} +ss.push(_1f(row)); +}else{ +ss.push(_20(v,_1a.mappingRows)||v); +_1a.unselectedValues.push(v); +} +}); +if(_1a.multiple){ +$.map(_1b.treegrid("getCheckedNodes"),function(row){ +var id=String(row[_1a.idField]); +if($.inArray(id,vv)==-1){ +vv.push(id); +ss.push(_1f(row)); +} +}); +} +if(!_19.remainText){ +var s=ss.join(_1a.separator); +if($(_17).combo("getText")!=s){ +$(_17).combo("setText",s); +} +} +$(_17).combo("setValues",vv); +function _20(_21,a){ +var _22=$.easyui.getArrayItem(a,_1a.idField,_21); +return _22?_1f(_22):undefined; +}; +function _1f(row){ +return row[_1a.textField||""]||row[_1a.treeField]; +}; +}; +function _23(_24,q){ +var _25=$.data(_24,"combotreegrid"); +var _26=_25.options; +var _27=_25.grid; +_25.remainText=true; +_27.treegrid("clearSelections").treegrid("clearChecked").treegrid("highlightRow",-1); +if(_26.mode=="remote"){ +$(_24).combotreegrid("clear"); +_27.treegrid("load",$.extend({},_26.queryParams,{q:q})); +}else{ +if(q){ +var _28=_27.treegrid("getData"); +var vv=[]; +var qq=_26.multiple?q.split(_26.separator):[q]; +$.map(qq,function(q){ +q=$.trim(q); +if(q){ +var v=undefined; +$.easyui.forEach(_28,true,function(row){ +if(q.toLowerCase()==String(row[_26.treeField]).toLowerCase()){ +v=row[_26.idField]; +return false; +}else{ +if(_26.filter.call(_24,q,row)){ +_27.treegrid("expandTo",row[_26.idField]); +_27.treegrid("highlightRow",row[_26.idField]); +return false; +} +} +}); +if(v==undefined){ +$.easyui.forEach(_26.mappingRows,false,function(row){ +if(q.toLowerCase()==String(row[_26.treeField])){ +v=row[_26.idField]; +return false; +} +}); +} +if(v!=undefined){ +vv.push(v); +} +} +}); +_16(_24,vv); +_25.remainText=false; +} +} +}; +function _29(_2a){ +_11(_2a); +}; +$.fn.combotreegrid=function(_2b,_2c){ +if(typeof _2b=="string"){ +var _2d=$.fn.combotreegrid.methods[_2b]; +if(_2d){ +return _2d(this,_2c); +}else{ +return this.combo(_2b,_2c); +} +} +_2b=_2b||{}; +return this.each(function(){ +var _2e=$.data(this,"combotreegrid"); +if(_2e){ +$.extend(_2e.options,_2b); +}else{ +_2e=$.data(this,"combotreegrid",{options:$.extend({},$.fn.combotreegrid.defaults,$.fn.combotreegrid.parseOptions(this),_2b)}); +} +_1(this); +}); +}; +$.fn.combotreegrid.methods={options:function(jq){ +var _2f=jq.combo("options"); +return $.extend($.data(jq[0],"combotreegrid").options,{width:_2f.width,height:_2f.height,originalValue:_2f.originalValue,disabled:_2f.disabled,readonly:_2f.readonly}); +},grid:function(jq){ +return $.data(jq[0],"combotreegrid").grid; +},setValues:function(jq,_30){ +return jq.each(function(){ +var _31=$(this).combotreegrid("options"); +if($.isArray(_30)){ +_30=$.map(_30,function(_32){ +if(_32&&typeof _32=="object"){ +$.easyui.addArrayItem(_31.mappingRows,_31.idField,_32); +return _32[_31.idField]; +}else{ +return _32; +} +}); +} +_16(this,_30); +}); +},setValue:function(jq,_33){ +return jq.each(function(){ +$(this).combotreegrid("setValues",$.isArray(_33)?_33:[_33]); +}); +},clear:function(jq){ +return jq.each(function(){ +$(this).combotreegrid("setValues",[]); +}); +},reset:function(jq){ +return jq.each(function(){ +var _34=$(this).combotreegrid("options"); +if(_34.multiple){ +$(this).combotreegrid("setValues",_34.originalValue); +}else{ +$(this).combotreegrid("setValue",_34.originalValue); +} +}); +}}; +$.fn.combotreegrid.parseOptions=function(_35){ +var t=$(_35); +return $.extend({},$.fn.combo.parseOptions(_35),$.fn.treegrid.parseOptions(_35),$.parser.parseOptions(_35,["mode",{limitToGrid:"boolean"}])); +}; +$.fn.combotreegrid.defaults=$.extend({},$.fn.combo.defaults,$.fn.treegrid.defaults,{editable:false,singleSelect:true,limitToGrid:false,unselectedValues:[],mappingRows:[],mode:"local",textField:null,keyHandler:{up:function(e){ +},down:function(e){ +},left:function(e){ +},right:function(e){ +},enter:function(e){ +_29(this); +},query:function(q,e){ +_23(this,q); +}},inputEvents:$.extend({},$.fn.combo.defaults.inputEvents,{blur:function(e){ +var _36=e.data.target; +var _37=$(_36).combotreegrid("options"); +if(_37.limitToGrid){ +_29(_36); +} +}}),filter:function(q,row){ +var _38=$(this).combotreegrid("options"); +return (row[_38.treeField]||"").toLowerCase().indexOf(q.toLowerCase())>=0; +}}); +})(jQuery); + diff --git a/src/main/webapp/static/easyUI/plugins/jquery.datagrid.js b/src/main/webapp/static/easyUI/plugins/jquery.datagrid.js new file mode 100644 index 0000000000000000000000000000000000000000..e9deab4d6e59b183314455ee18925904c728ac3f --- /dev/null +++ b/src/main/webapp/static/easyUI/plugins/jquery.datagrid.js @@ -0,0 +1,2574 @@ +/** + * jQuery EasyUI 1.5.2 + * + * Copyright (c) 2009-2017 www.jeasyui.com. All rights reserved. + * + * Licensed under the freeware license: http://www.jeasyui.com/license_freeware.php + * To use it on other terms please contact us: info@jeasyui.com + * + */ +(function($){ +var _1=0; +function _2(a,o){ +return $.easyui.indexOfArray(a,o); +}; +function _3(a,o,id){ +$.easyui.removeArrayItem(a,o,id); +}; +function _4(a,o,r){ +$.easyui.addArrayItem(a,o,r); +}; +function _5(_6,aa){ +return $.data(_6,"treegrid")?aa.slice(1):aa; +}; +function _7(_8){ +var _9=$.data(_8,"datagrid"); +var _a=_9.options; +var _b=_9.panel; +var dc=_9.dc; +var ss=null; +if(_a.sharedStyleSheet){ +ss=typeof _a.sharedStyleSheet=="boolean"?"head":_a.sharedStyleSheet; +}else{ +ss=_b.closest("div.datagrid-view"); +if(!ss.length){ +ss=dc.view; +} +} +var cc=$(ss); +var _c=$.data(cc[0],"ss"); +if(!_c){ +_c=$.data(cc[0],"ss",{cache:{},dirty:[]}); +} +return {add:function(_d){ +var ss=[""); +$(ss.join("\n")).appendTo(cc); +cc.children("style[easyui]:not(:last)").remove(); +},getRule:function(_10){ +var _11=cc.children("style[easyui]:last")[0]; +var _12=_11.styleSheet?_11.styleSheet:(_11.sheet||document.styleSheets[document.styleSheets.length-1]); +var _13=_12.cssRules||_12.rules; +return _13[_10]; +},set:function(_14,_15){ +var _16=_c.cache[_14]; +if(_16){ +_16.width=_15; +var _17=this.getRule(_16.index); +if(_17){ +_17.style["width"]=_15; +} +} +},remove:function(_18){ +var tmp=[]; +for(var s in _c.cache){ +if(s.indexOf(_18)==-1){ +tmp.push([s,_c.cache[s].width]); +} +} +_c.cache={}; +this.add(tmp); +},dirty:function(_19){ +if(_19){ +_c.dirty.push(_19); +} +},clean:function(){ +for(var i=0;i<_c.dirty.length;i++){ +this.remove(_c.dirty[i]); +} +_c.dirty=[]; +}}; +}; +function _1a(_1b,_1c){ +var _1d=$.data(_1b,"datagrid"); +var _1e=_1d.options; +var _1f=_1d.panel; +if(_1c){ +$.extend(_1e,_1c); +} +if(_1e.fit==true){ +var p=_1f.panel("panel").parent(); +_1e.width=p.width(); +_1e.height=p.height(); +} +_1f.panel("resize",_1e); +}; +function _20(_21){ +var _22=$.data(_21,"datagrid"); +var _23=_22.options; +var dc=_22.dc; +var _24=_22.panel; +var _25=_24.width(); +var _26=_24.height(); +var _27=dc.view; +var _28=dc.view1; +var _29=dc.view2; +var _2a=_28.children("div.datagrid-header"); +var _2b=_29.children("div.datagrid-header"); +var _2c=_2a.find("table"); +var _2d=_2b.find("table"); +_27.width(_25); +var _2e=_2a.children("div.datagrid-header-inner").show(); +_28.width(_2e.find("table").width()); +if(!_23.showHeader){ +_2e.hide(); +} +_29.width(_25-_28._outerWidth()); +_28.children()._outerWidth(_28.width()); +_29.children()._outerWidth(_29.width()); +var all=_2a.add(_2b).add(_2c).add(_2d); +all.css("height",""); +var hh=Math.max(_2c.height(),_2d.height()); +all._outerHeight(hh); +_27.children(".datagrid-empty").css("top",hh+"px"); +dc.body1.add(dc.body2).children("table.datagrid-btable-frozen").css({position:"absolute",top:dc.header2._outerHeight()}); +var _2f=dc.body2.children("table.datagrid-btable-frozen")._outerHeight(); +var _30=_2f+_2b._outerHeight()+_29.children(".datagrid-footer")._outerHeight(); +_24.children(":not(.datagrid-view,.datagrid-mask,.datagrid-mask-msg)").each(function(){ +_30+=$(this)._outerHeight(); +}); +var _31=_24.outerHeight()-_24.height(); +var _32=_24._size("minHeight")||""; +var _33=_24._size("maxHeight")||""; +_28.add(_29).children("div.datagrid-body").css({marginTop:_2f,height:(isNaN(parseInt(_23.height))?"":(_26-_30)),minHeight:(_32?_32-_31-_30:""),maxHeight:(_33?_33-_31-_30:"")}); +_27.height(_29.height()); +}; +function _34(_35,_36,_37){ +var _38=$.data(_35,"datagrid").data.rows; +var _39=$.data(_35,"datagrid").options; +var dc=$.data(_35,"datagrid").dc; +if(!dc.body1.is(":empty")&&(!_39.nowrap||_39.autoRowHeight||_37)){ +if(_36!=undefined){ +var tr1=_39.finder.getTr(_35,_36,"body",1); +var tr2=_39.finder.getTr(_35,_36,"body",2); +_3a(tr1,tr2); +}else{ +var tr1=_39.finder.getTr(_35,0,"allbody",1); +var tr2=_39.finder.getTr(_35,0,"allbody",2); +_3a(tr1,tr2); +if(_39.showFooter){ +var tr1=_39.finder.getTr(_35,0,"allfooter",1); +var tr2=_39.finder.getTr(_35,0,"allfooter",2); +_3a(tr1,tr2); +} +} +} +_20(_35); +if(_39.height=="auto"){ +var _3b=dc.body1.parent(); +var _3c=dc.body2; +var _3d=_3e(_3c); +var _3f=_3d.height; +if(_3d.width>_3c.width()){ +_3f+=18; +} +_3f-=parseInt(_3c.css("marginTop"))||0; +_3b.height(_3f); +_3c.height(_3f); +dc.view.height(dc.view2.height()); +} +dc.body2.triggerHandler("scroll"); +function _3a(_40,_41){ +for(var i=0;i<_41.length;i++){ +var tr1=$(_40[i]); +var tr2=$(_41[i]); +tr1.css("height",""); +tr2.css("height",""); +var _42=Math.max(tr1.height(),tr2.height()); +tr1.css("height",_42); +tr2.css("height",_42); +} +}; +function _3e(cc){ +var _43=0; +var _44=0; +$(cc).children().each(function(){ +var c=$(this); +if(c.is(":visible")){ +_44+=c._outerHeight(); +if(_43"); +} +_4a(true); +_4a(false); +_20(_46); +function _4a(_4b){ +var _4c=_4b?1:2; +var tr=_49.finder.getTr(_46,_47,"body",_4c); +(_4b?dc.body1:dc.body2).children("table.datagrid-btable-frozen").append(tr); +}; +}; +function _4d(_4e,_4f){ +function _50(){ +var _51=[]; +var _52=[]; +$(_4e).children("thead").each(function(){ +var opt=$.parser.parseOptions(this,[{frozen:"boolean"}]); +$(this).find("tr").each(function(){ +var _53=[]; +$(this).find("th").each(function(){ +var th=$(this); +var col=$.extend({},$.parser.parseOptions(this,["id","field","align","halign","order","width",{sortable:"boolean",checkbox:"boolean",resizable:"boolean",fixed:"boolean"},{rowspan:"number",colspan:"number"}]),{title:(th.html()||undefined),hidden:(th.attr("hidden")?true:undefined),formatter:(th.attr("formatter")?eval(th.attr("formatter")):undefined),styler:(th.attr("styler")?eval(th.attr("styler")):undefined),sorter:(th.attr("sorter")?eval(th.attr("sorter")):undefined)}); +if(col.width&&String(col.width).indexOf("%")==-1){ +col.width=parseInt(col.width); +} +if(th.attr("editor")){ +var s=$.trim(th.attr("editor")); +if(s.substr(0,1)=="{"){ +col.editor=eval("("+s+")"); +}else{ +col.editor=s; +} +} +_53.push(col); +}); +opt.frozen?_51.push(_53):_52.push(_53); +}); +}); +return [_51,_52]; +}; +var _54=$("
            "+"
            "+"
            "+"
            "+"
            "+"
            "+"
            "+"
            "+"
            "+"
            "+""+"
            "+"
            "+"
            "+"
            "+"
            "+"
            "+"
            "+"
            "+""+"
            "+"
            "+"
            "+"
            ").insertAfter(_4e); +_54.panel({doSize:false,cls:"datagrid"}); +$(_4e).addClass("datagrid-f").hide().appendTo(_54.children("div.datagrid-view")); +var cc=_50(); +var _55=_54.children("div.datagrid-view"); +var _56=_55.children("div.datagrid-view1"); +var _57=_55.children("div.datagrid-view2"); +return {panel:_54,frozenColumns:cc[0],columns:cc[1],dc:{view:_55,view1:_56,view2:_57,header1:_56.children("div.datagrid-header").children("div.datagrid-header-inner"),header2:_57.children("div.datagrid-header").children("div.datagrid-header-inner"),body1:_56.children("div.datagrid-body").children("div.datagrid-body-inner"),body2:_57.children("div.datagrid-body"),footer1:_56.children("div.datagrid-footer").children("div.datagrid-footer-inner"),footer2:_57.children("div.datagrid-footer").children("div.datagrid-footer-inner")}}; +}; +function _58(_59){ +var _5a=$.data(_59,"datagrid"); +var _5b=_5a.options; +var dc=_5a.dc; +var _5c=_5a.panel; +_5a.ss=$(_59).datagrid("createStyleSheet"); +_5c.panel($.extend({},_5b,{id:null,doSize:false,onResize:function(_5d,_5e){ +if($.data(_59,"datagrid")){ +_20(_59); +$(_59).datagrid("fitColumns"); +_5b.onResize.call(_5c,_5d,_5e); +} +},onExpand:function(){ +if($.data(_59,"datagrid")){ +$(_59).datagrid("fixRowHeight").datagrid("fitColumns"); +_5b.onExpand.call(_5c); +} +}})); +_5a.rowIdPrefix="datagrid-row-r"+(++_1); +_5a.cellClassPrefix="datagrid-cell-c"+_1; +_5f(dc.header1,_5b.frozenColumns,true); +_5f(dc.header2,_5b.columns,false); +_60(); +dc.header1.add(dc.header2).css("display",_5b.showHeader?"block":"none"); +dc.footer1.add(dc.footer2).css("display",_5b.showFooter?"block":"none"); +if(_5b.toolbar){ +if($.isArray(_5b.toolbar)){ +$("div.datagrid-toolbar",_5c).remove(); +var tb=$("
            ").prependTo(_5c); +var tr=tb.find("tr"); +for(var i=0;i<_5b.toolbar.length;i++){ +var btn=_5b.toolbar[i]; +if(btn=="-"){ +$("
            ").appendTo(tr); +}else{ +var td=$("").appendTo(tr); +var _61=$("").appendTo(td); +_61[0].onclick=eval(btn.handler||function(){ +}); +_61.linkbutton($.extend({},btn,{plain:true})); +} +} +}else{ +$(_5b.toolbar).addClass("datagrid-toolbar").prependTo(_5c); +$(_5b.toolbar).show(); +} +}else{ +$("div.datagrid-toolbar",_5c).remove(); +} +$("div.datagrid-pager",_5c).remove(); +if(_5b.pagination){ +var _62=$("
            "); +if(_5b.pagePosition=="bottom"){ +_62.appendTo(_5c); +}else{ +if(_5b.pagePosition=="top"){ +_62.addClass("datagrid-pager-top").prependTo(_5c); +}else{ +var _63=$("
            ").prependTo(_5c); +_62.appendTo(_5c); +_62=_62.add(_63); +} +} +_62.pagination({total:0,pageNumber:_5b.pageNumber,pageSize:_5b.pageSize,pageList:_5b.pageList,onSelectPage:function(_64,_65){ +_5b.pageNumber=_64||1; +_5b.pageSize=_65; +_62.pagination("refresh",{pageNumber:_64,pageSize:_65}); +_bf(_59); +}}); +_5b.pageSize=_62.pagination("options").pageSize; +} +function _5f(_66,_67,_68){ +if(!_67){ +return; +} +$(_66).show(); +$(_66).empty(); +var tmp=$("
            ").appendTo("body"); +tmp._outerWidth(99); +var _69=100-parseInt(tmp[0].style.width); +tmp.remove(); +var _6a=[]; +var _6b=[]; +var _6c=[]; +if(_5b.sortName){ +_6a=_5b.sortName.split(","); +_6b=_5b.sortOrder.split(","); +} +var t=$("
            ").appendTo(_66); +for(var i=0;i<_67.length;i++){ +var tr=$("").appendTo($("tbody",t)); +var _6d=_67[i]; +for(var j=0;j<_6d.length;j++){ +var col=_6d[j]; +var _6e=""; +if(col.rowspan){ +_6e+="rowspan=\""+col.rowspan+"\" "; +} +if(col.colspan){ +_6e+="colspan=\""+col.colspan+"\" "; +if(!col.id){ +col.id=["datagrid-td-group"+_1,i,j].join("-"); +} +} +if(col.id){ +_6e+="id=\""+col.id+"\""; +} +var td=$("").appendTo(tr); +if(col.checkbox){ +td.attr("field",col.field); +$("
            ").html("").appendTo(td); +}else{ +if(col.field){ +td.attr("field",col.field); +td.append("
            "); +td.find("span:first").html(col.title); +var _6f=td.find("div.datagrid-cell"); +var pos=_2(_6a,col.field); +if(pos>=0){ +_6f.addClass("datagrid-sort-"+_6b[pos]); +} +if(col.sortable){ +_6f.addClass("datagrid-sort"); +} +if(col.resizable==false){ +_6f.attr("resizable","false"); +} +if(col.width){ +var _70=$.parser.parseValue("width",col.width,dc.view,_5b.scrollbarSize+(_5b.rownumbers?_5b.rownumberWidth:0)); +col.deltaWidth=_69; +col.boxWidth=_70-_69; +}else{ +col.auto=true; +} +_6f.css("text-align",(col.halign||col.align||"")); +col.cellClass=_5a.cellClassPrefix+"-"+col.field.replace(/[\.|\s]/g,"-"); +_6f.addClass(col.cellClass); +}else{ +$("
            ").html(col.title).appendTo(td); +} +} +if(col.hidden){ +td.hide(); +_6c.push(col.field); +} +} +} +if(_68&&_5b.rownumbers){ +var td=$("
            "); +if($("tr",t).length==0){ +td.wrap("").parent().appendTo($("tbody",t)); +}else{ +td.prependTo($("tr:first",t)); +} +} +for(var i=0;i<_6c.length;i++){ +_c1(_59,_6c[i],-1); +} +}; +function _60(){ +var _71=[[".datagrid-header-rownumber",(_5b.rownumberWidth-1)+"px"],[".datagrid-cell-rownumber",(_5b.rownumberWidth-1)+"px"]]; +var _72=_73(_59,true).concat(_73(_59)); +for(var i=0;i<_72.length;i++){ +var col=_74(_59,_72[i]); +if(col&&!col.checkbox){ +_71.push(["."+col.cellClass,col.boxWidth?col.boxWidth+"px":"auto"]); +} +} +_5a.ss.add(_71); +_5a.ss.dirty(_5a.cellSelectorPrefix); +_5a.cellSelectorPrefix="."+_5a.cellClassPrefix; +}; +}; +function _75(_76){ +var _77=$.data(_76,"datagrid"); +var _78=_77.panel; +var _79=_77.options; +var dc=_77.dc; +var _7a=dc.header1.add(dc.header2); +_7a.unbind(".datagrid"); +for(var _7b in _79.headerEvents){ +_7a.bind(_7b+".datagrid",_79.headerEvents[_7b]); +} +var _7c=_7a.find("div.datagrid-cell"); +var _7d=_79.resizeHandle=="right"?"e":(_79.resizeHandle=="left"?"w":"e,w"); +_7c.each(function(){ +$(this).resizable({handles:_7d,disabled:($(this).attr("resizable")?$(this).attr("resizable")=="false":false),minWidth:25,onStartResize:function(e){ +_77.resizing=true; +_7a.css("cursor",$("body").css("cursor")); +if(!_77.proxy){ +_77.proxy=$("
            ").appendTo(dc.view); +} +_77.proxy.css({left:e.pageX-$(_78).offset().left-1,display:"none"}); +setTimeout(function(){ +if(_77.proxy){ +_77.proxy.show(); +} +},500); +},onResize:function(e){ +_77.proxy.css({left:e.pageX-$(_78).offset().left-1,display:"block"}); +return false; +},onStopResize:function(e){ +_7a.css("cursor",""); +$(this).css("height",""); +var _7e=$(this).parent().attr("field"); +var col=_74(_76,_7e); +col.width=$(this)._outerWidth(); +col.boxWidth=col.width-col.deltaWidth; +col.auto=undefined; +$(this).css("width",""); +$(_76).datagrid("fixColumnSize",_7e); +_77.proxy.remove(); +_77.proxy=null; +if($(this).parents("div:first.datagrid-header").parent().hasClass("datagrid-view1")){ +_20(_76); +} +$(_76).datagrid("fitColumns"); +_79.onResizeColumn.call(_76,_7e,col.width); +setTimeout(function(){ +_77.resizing=false; +},0); +}}); +}); +var bb=dc.body1.add(dc.body2); +bb.unbind(); +for(var _7b in _79.rowEvents){ +bb.bind(_7b,_79.rowEvents[_7b]); +} +dc.body1.bind("mousewheel DOMMouseScroll",function(e){ +e.preventDefault(); +var e1=e.originalEvent||window.event; +var _7f=e1.wheelDelta||e1.detail*(-1); +if("deltaY" in e1){ +_7f=e1.deltaY*-1; +} +var dg=$(e.target).closest("div.datagrid-view").children(".datagrid-f"); +var dc=dg.data("datagrid").dc; +dc.body2.scrollTop(dc.body2.scrollTop()-_7f); +}); +dc.body2.bind("scroll",function(){ +var b1=dc.view1.children("div.datagrid-body"); +b1.scrollTop($(this).scrollTop()); +var c1=dc.body1.children(":first"); +var c2=dc.body2.children(":first"); +if(c1.length&&c2.length){ +var _80=c1.offset().top; +var _81=c2.offset().top; +if(_80!=_81){ +b1.scrollTop(b1.scrollTop()+_80-_81); +} +} +dc.view2.children("div.datagrid-header,div.datagrid-footer")._scrollLeft($(this)._scrollLeft()); +dc.body2.children("table.datagrid-btable-frozen").css("left",-$(this)._scrollLeft()); +}); +}; +function _82(_83){ +return function(e){ +var td=$(e.target).closest("td[field]"); +if(td.length){ +var _84=_85(td); +if(!$(_84).data("datagrid").resizing&&_83){ +td.addClass("datagrid-header-over"); +}else{ +td.removeClass("datagrid-header-over"); +} +} +}; +}; +function _86(e){ +var _87=_85(e.target); +var _88=$(_87).datagrid("options"); +var ck=$(e.target).closest("input[type=checkbox]"); +if(ck.length){ +if(_88.singleSelect&&_88.selectOnCheck){ +return false; +} +if(ck.is(":checked")){ +_89(_87); +}else{ +_8a(_87); +} +e.stopPropagation(); +}else{ +var _8b=$(e.target).closest(".datagrid-cell"); +if(_8b.length){ +var p1=_8b.offset().left+5; +var p2=_8b.offset().left+_8b._outerWidth()-5; +if(e.pageXp1){ +_8c(_87,_8b.parent().attr("field")); +} +} +} +}; +function _8d(e){ +var _8e=_85(e.target); +var _8f=$(_8e).datagrid("options"); +var _90=$(e.target).closest(".datagrid-cell"); +if(_90.length){ +var p1=_90.offset().left+5; +var p2=_90.offset().left+_90._outerWidth()-5; +var _91=_8f.resizeHandle=="right"?(e.pageX>p2):(_8f.resizeHandle=="left"?(e.pageXp2)); +if(_91){ +var _92=_90.parent().attr("field"); +var col=_74(_8e,_92); +if(col.resizable==false){ +return; +} +$(_8e).datagrid("autoSizeColumn",_92); +col.auto=false; +} +} +}; +function _93(e){ +var _94=_85(e.target); +var _95=$(_94).datagrid("options"); +var td=$(e.target).closest("td[field]"); +_95.onHeaderContextMenu.call(_94,e,td.attr("field")); +}; +function _96(_97){ +return function(e){ +var tr=_98(e.target); +if(!tr){ +return; +} +var _99=_85(tr); +if($.data(_99,"datagrid").resizing){ +return; +} +var _9a=_9b(tr); +if(_97){ +_9c(_99,_9a); +}else{ +var _9d=$.data(_99,"datagrid").options; +_9d.finder.getTr(_99,_9a).removeClass("datagrid-row-over"); +} +}; +}; +function _9e(e){ +var tr=_98(e.target); +if(!tr){ +return; +} +var _9f=_85(tr); +var _a0=$.data(_9f,"datagrid").options; +var _a1=_9b(tr); +var tt=$(e.target); +if(tt.parent().hasClass("datagrid-cell-check")){ +if(_a0.singleSelect&&_a0.selectOnCheck){ +tt._propAttr("checked",!tt.is(":checked")); +_a2(_9f,_a1); +}else{ +if(tt.is(":checked")){ +tt._propAttr("checked",false); +_a2(_9f,_a1); +}else{ +tt._propAttr("checked",true); +_a3(_9f,_a1); +} +} +}else{ +var row=_a0.finder.getRow(_9f,_a1); +var td=tt.closest("td[field]",tr); +if(td.length){ +var _a4=td.attr("field"); +_a0.onClickCell.call(_9f,_a1,_a4,row[_a4]); +} +if(_a0.singleSelect==true){ +_a5(_9f,_a1); +}else{ +if(_a0.ctrlSelect){ +if(e.metaKey||e.ctrlKey){ +if(tr.hasClass("datagrid-row-selected")){ +_a6(_9f,_a1); +}else{ +_a5(_9f,_a1); +} +}else{ +if(e.shiftKey){ +$(_9f).datagrid("clearSelections"); +var _a7=Math.min(_a0.lastSelectedIndex||0,_a1); +var _a8=Math.max(_a0.lastSelectedIndex||0,_a1); +for(var i=_a7;i<=_a8;i++){ +_a5(_9f,i); +} +}else{ +$(_9f).datagrid("clearSelections"); +_a5(_9f,_a1); +_a0.lastSelectedIndex=_a1; +} +} +}else{ +if(tr.hasClass("datagrid-row-selected")){ +_a6(_9f,_a1); +}else{ +_a5(_9f,_a1); +} +} +} +_a0.onClickRow.apply(_9f,_5(_9f,[_a1,row])); +} +}; +function _a9(e){ +var tr=_98(e.target); +if(!tr){ +return; +} +var _aa=_85(tr); +var _ab=$.data(_aa,"datagrid").options; +var _ac=_9b(tr); +var row=_ab.finder.getRow(_aa,_ac); +var td=$(e.target).closest("td[field]",tr); +if(td.length){ +var _ad=td.attr("field"); +_ab.onDblClickCell.call(_aa,_ac,_ad,row[_ad]); +} +_ab.onDblClickRow.apply(_aa,_5(_aa,[_ac,row])); +}; +function _ae(e){ +var tr=_98(e.target); +if(tr){ +var _af=_85(tr); +var _b0=$.data(_af,"datagrid").options; +var _b1=_9b(tr); +var row=_b0.finder.getRow(_af,_b1); +_b0.onRowContextMenu.call(_af,e,_b1,row); +}else{ +var _b2=_98(e.target,".datagrid-body"); +if(_b2){ +var _af=_85(_b2); +var _b0=$.data(_af,"datagrid").options; +_b0.onRowContextMenu.call(_af,e,-1,null); +} +} +}; +function _85(t){ +return $(t).closest("div.datagrid-view").children(".datagrid-f")[0]; +}; +function _98(t,_b3){ +var tr=$(t).closest(_b3||"tr.datagrid-row"); +if(tr.length&&tr.parent().length){ +return tr; +}else{ +return undefined; +} +}; +function _9b(tr){ +if(tr.attr("datagrid-row-index")){ +return parseInt(tr.attr("datagrid-row-index")); +}else{ +return tr.attr("node-id"); +} +}; +function _8c(_b4,_b5){ +var _b6=$.data(_b4,"datagrid"); +var _b7=_b6.options; +_b5=_b5||{}; +var _b8={sortName:_b7.sortName,sortOrder:_b7.sortOrder}; +if(typeof _b5=="object"){ +$.extend(_b8,_b5); +} +var _b9=[]; +var _ba=[]; +if(_b8.sortName){ +_b9=_b8.sortName.split(","); +_ba=_b8.sortOrder.split(","); +} +if(typeof _b5=="string"){ +var _bb=_b5; +var col=_74(_b4,_bb); +if(!col.sortable||_b6.resizing){ +return; +} +var _bc=col.order||"asc"; +var pos=_2(_b9,_bb); +if(pos>=0){ +var _bd=_ba[pos]=="asc"?"desc":"asc"; +if(_b7.multiSort&&_bd==_bc){ +_b9.splice(pos,1); +_ba.splice(pos,1); +}else{ +_ba[pos]=_bd; +} +}else{ +if(_b7.multiSort){ +_b9.push(_bb); +_ba.push(_bc); +}else{ +_b9=[_bb]; +_ba=[_bc]; +} +} +_b8.sortName=_b9.join(","); +_b8.sortOrder=_ba.join(","); +} +if(_b7.onBeforeSortColumn.call(_b4,_b8.sortName,_b8.sortOrder)==false){ +return; +} +$.extend(_b7,_b8); +var dc=_b6.dc; +var _be=dc.header1.add(dc.header2); +_be.find("div.datagrid-cell").removeClass("datagrid-sort-asc datagrid-sort-desc"); +for(var i=0;i<_b9.length;i++){ +var col=_74(_b4,_b9[i]); +_be.find("div."+col.cellClass).addClass("datagrid-sort-"+_ba[i]); +} +if(_b7.remoteSort){ +_bf(_b4); +}else{ +_c0(_b4,$(_b4).datagrid("getData")); +} +_b7.onSortColumn.call(_b4,_b7.sortName,_b7.sortOrder); +}; +function _c1(_c2,_c3,_c4){ +_c5(true); +_c5(false); +function _c5(_c6){ +var aa=_c7(_c2,_c6); +if(aa.length){ +var _c8=aa[aa.length-1]; +var _c9=_2(_c8,_c3); +if(_c9>=0){ +for(var _ca=0;_ca=_d0.find("table").width()){ +dc.body2.css("overflow-x","hidden"); +} +function _d3(){ +if(!_cf.fitColumns){ +return; +} +if(!_ce.leftWidth){ +_ce.leftWidth=0; +} +var _d4=0; +var cc=[]; +var _d5=_73(_cd,false); +for(var i=0;i<_d5.length;i++){ +var col=_74(_cd,_d5[i]); +if(_d6(col)){ +_d4+=col.width; +cc.push({field:col.field,col:col,addingWidth:0}); +} +} +if(!_d4){ +return; +} +cc[cc.length-1].addingWidth-=_ce.leftWidth; +var _d7=_d0.children("div.datagrid-header-inner").show(); +var _d8=_d0.width()-_d0.find("table").width()-_cf.scrollbarSize+_ce.leftWidth; +var _d9=_d8/_d4; +if(!_cf.showHeader){ +_d7.hide(); +} +for(var i=0;i0){ +c.col.boxWidth+=c.addingWidth; +c.col.width+=c.addingWidth; +} +} +_ce.leftWidth=_d8; +$(_cd).datagrid("fixColumnSize"); +}; +function _d2(){ +var _db=false; +var _dc=_73(_cd,true).concat(_73(_cd,false)); +$.map(_dc,function(_dd){ +var col=_74(_cd,_dd); +if(String(col.width||"").indexOf("%")>=0){ +var _de=$.parser.parseValue("width",col.width,dc.view,_cf.scrollbarSize+(_cf.rownumbers?_cf.rownumberWidth:0))-col.deltaWidth; +if(_de>0){ +col.boxWidth=_de; +_db=true; +} +} +}); +if(_db){ +$(_cd).datagrid("fixColumnSize"); +} +}; +function _d1(fit){ +var _df=dc.header1.add(dc.header2).find(".datagrid-cell-group"); +if(_df.length){ +_df.each(function(){ +$(this)._outerWidth(fit?$(this).parent().width():10); +}); +if(fit){ +_20(_cd); +} +} +}; +function _d6(col){ +if(String(col.width||"").indexOf("%")>=0){ +return false; +} +if(!col.hidden&&!col.checkbox&&!col.auto&&!col.fixed){ +return true; +} +}; +}; +function _e0(_e1,_e2){ +var _e3=$.data(_e1,"datagrid"); +var _e4=_e3.options; +var dc=_e3.dc; +var tmp=$("
            ").appendTo("body"); +if(_e2){ +_1a(_e2); +$(_e1).datagrid("fitColumns"); +}else{ +var _e5=false; +var _e6=_73(_e1,true).concat(_73(_e1,false)); +for(var i=0;i<_e6.length;i++){ +var _e2=_e6[i]; +var col=_74(_e1,_e2); +if(col.auto){ +_1a(_e2); +_e5=true; +} +} +if(_e5){ +$(_e1).datagrid("fitColumns"); +} +} +tmp.remove(); +function _1a(_e7){ +var _e8=dc.view.find("div.datagrid-header td[field=\""+_e7+"\"] div.datagrid-cell"); +_e8.css("width",""); +var col=$(_e1).datagrid("getColumnOption",_e7); +col.width=undefined; +col.boxWidth=undefined; +col.auto=true; +$(_e1).datagrid("fixColumnSize",_e7); +var _e9=Math.max(_ea("header"),_ea("allbody"),_ea("allfooter"))+1; +_e8._outerWidth(_e9-1); +col.width=_e9; +col.boxWidth=parseInt(_e8[0].style.width); +col.deltaWidth=_e9-col.boxWidth; +_e8.css("width",""); +$(_e1).datagrid("fixColumnSize",_e7); +_e4.onResizeColumn.call(_e1,_e7,col.width); +function _ea(_eb){ +var _ec=0; +if(_eb=="header"){ +_ec=_ed(_e8); +}else{ +_e4.finder.getTr(_e1,0,_eb).find("td[field=\""+_e7+"\"] div.datagrid-cell").each(function(){ +var w=_ed($(this)); +if(_ec1){ +var col=_74(_f8,td.attr("field")); +var _fa=col.boxWidth+col.deltaWidth-1; +for(var i=1;i<_f9;i++){ +td=td.next(); +col=_74(_f8,td.attr("field")); +_fa+=col.boxWidth+col.deltaWidth; +} +$(this).children("div.datagrid-cell")._outerWidth(_fa); +} +}); +}; +function _f6(_fb){ +var dc=$.data(_fb,"datagrid").dc; +dc.view.find("div.datagrid-editable").each(function(){ +var _fc=$(this); +var _fd=_fc.parent().attr("field"); +var col=$(_fb).datagrid("getColumnOption",_fd); +_fc._outerWidth(col.boxWidth+col.deltaWidth-1); +var ed=$.data(this,"datagrid.editor"); +if(ed.actions.resize){ +ed.actions.resize(ed.target,_fc.width()); +} +}); +}; +function _74(_fe,_ff){ +function find(_100){ +if(_100){ +for(var i=0;i<_100.length;i++){ +var cc=_100[i]; +for(var j=0;j=0){ +var _109=col.field||col.id||""; +for(var c=0;c<(col.colspan||1);c++){ +for(var r=0;r<(col.rowspan||1);r++){ +aa[_106+r][_107]=_109; +} +_107++; +} +} +}); +} +return aa; +function _105(){ +var _10a=0; +$.map(_103[0]||[],function(col){ +_10a+=col.colspan||1; +}); +return _10a; +}; +function _108(a){ +for(var i=0;ib?1:-1); +}; +r=_111(r1[sn],r2[sn])*(so=="asc"?1:-1); +if(r!=0){ +return r; +} +} +return r; +}); +} +if(opts.view.onBeforeRender){ +opts.view.onBeforeRender.call(opts.view,_10d,data.rows); +} +opts.view.render.call(opts.view,_10d,dc.body2,false); +opts.view.render.call(opts.view,_10d,dc.body1,true); +if(opts.showFooter){ +opts.view.renderFooter.call(opts.view,_10d,dc.footer2,false); +opts.view.renderFooter.call(opts.view,_10d,dc.footer1,true); +} +if(opts.view.onAfterRender){ +opts.view.onAfterRender.call(opts.view,_10d); +} +_10e.ss.clean(); +var _112=$(_10d).datagrid("getPager"); +if(_112.length){ +var _113=_112.pagination("options"); +if(_113.total!=data.total){ +_112.pagination("refresh",{total:data.total}); +if(opts.pageNumber!=_113.pageNumber&&_113.pageNumber>0){ +opts.pageNumber=_113.pageNumber; +_bf(_10d); +} +} +} +_34(_10d); +dc.body2.triggerHandler("scroll"); +$(_10d).datagrid("setSelectionState"); +$(_10d).datagrid("autoSizeColumn"); +opts.onLoadSuccess.call(_10d,data); +}; +function _114(_115){ +var _116=$.data(_115,"datagrid"); +var opts=_116.options; +var dc=_116.dc; +dc.header1.add(dc.header2).find("input[type=checkbox]")._propAttr("checked",false); +if(opts.idField){ +var _117=$.data(_115,"treegrid")?true:false; +var _118=opts.onSelect; +var _119=opts.onCheck; +opts.onSelect=opts.onCheck=function(){ +}; +var rows=opts.finder.getRows(_115); +for(var i=0;i_12a.height()-_12b){ +_12a.scrollTop(_12a.scrollTop()+top+tr._outerHeight()-_12a.height()+_12b); +} +} +} +}; +function _9c(_12d,_12e){ +var _12f=$.data(_12d,"datagrid"); +var opts=_12f.options; +opts.finder.getTr(_12d,_12f.highlightIndex).removeClass("datagrid-row-over"); +opts.finder.getTr(_12d,_12e).addClass("datagrid-row-over"); +_12f.highlightIndex=_12e; +}; +function _a5(_130,_131,_132,_133){ +var _134=$.data(_130,"datagrid"); +var opts=_134.options; +var row=opts.finder.getRow(_130,_131); +if(!row){ +return; +} +if(opts.onBeforeSelect.apply(_130,_5(_130,[_131,row]))==false){ +return; +} +if(opts.singleSelect){ +_135(_130,true); +_134.selectedRows=[]; +} +if(!_132&&opts.checkOnSelect){ +_a2(_130,_131,true); +} +if(opts.idField){ +_4(_134.selectedRows,opts.idField,row); +} +opts.finder.getTr(_130,_131).addClass("datagrid-row-selected"); +opts.onSelect.apply(_130,_5(_130,[_131,row])); +if(!_133&&opts.scrollOnSelect){ +_125(_130,_131); +} +}; +function _a6(_136,_137,_138){ +var _139=$.data(_136,"datagrid"); +var dc=_139.dc; +var opts=_139.options; +var row=opts.finder.getRow(_136,_137); +if(!row){ +return; +} +if(opts.onBeforeUnselect.apply(_136,_5(_136,[_137,row]))==false){ +return; +} +if(!_138&&opts.checkOnSelect){ +_a3(_136,_137,true); +} +opts.finder.getTr(_136,_137).removeClass("datagrid-row-selected"); +if(opts.idField){ +_3(_139.selectedRows,opts.idField,row[opts.idField]); +} +opts.onUnselect.apply(_136,_5(_136,[_137,row])); +}; +function _13a(_13b,_13c){ +var _13d=$.data(_13b,"datagrid"); +var opts=_13d.options; +var rows=opts.finder.getRows(_13b); +var _13e=$.data(_13b,"datagrid").selectedRows; +if(!_13c&&opts.checkOnSelect){ +_89(_13b,true); +} +opts.finder.getTr(_13b,"","allbody").addClass("datagrid-row-selected"); +if(opts.idField){ +for(var _13f=0;_13f"); +cell.children("table").bind("click dblclick contextmenu",function(e){ +e.stopPropagation(); +}); +$.data(cell[0],"datagrid.editor",{actions:_174,target:_174.init(cell.find("td"),$.extend({height:opts.editorHeight},_173)),field:_171,type:_172,oldHtml:_175}); +} +} +}); +_34(_16f,_170,true); +}; +function _166(_177,_178){ +var opts=$.data(_177,"datagrid").options; +var tr=opts.finder.getTr(_177,_178); +tr.children("td").each(function(){ +var cell=$(this).find("div.datagrid-editable"); +if(cell.length){ +var ed=$.data(cell[0],"datagrid.editor"); +if(ed.actions.destroy){ +ed.actions.destroy(ed.target); +} +cell.html(ed.oldHtml); +$.removeData(cell[0],"datagrid.editor"); +cell.removeClass("datagrid-editable"); +cell.css("width",""); +} +}); +}; +function _159(_179,_17a){ +var tr=$.data(_179,"datagrid").options.finder.getTr(_179,_17a); +if(!tr.hasClass("datagrid-row-editing")){ +return true; +} +var vbox=tr.find(".validatebox-text"); +vbox.validatebox("validate"); +vbox.trigger("mouseleave"); +var _17b=tr.find(".validatebox-invalid"); +return _17b.length==0; +}; +function _17c(_17d,_17e){ +var _17f=$.data(_17d,"datagrid").insertedRows; +var _180=$.data(_17d,"datagrid").deletedRows; +var _181=$.data(_17d,"datagrid").updatedRows; +if(!_17e){ +var rows=[]; +rows=rows.concat(_17f); +rows=rows.concat(_180); +rows=rows.concat(_181); +return rows; +}else{ +if(_17e=="inserted"){ +return _17f; +}else{ +if(_17e=="deleted"){ +return _180; +}else{ +if(_17e=="updated"){ +return _181; +} +} +} +} +return []; +}; +function _182(_183,_184){ +var _185=$.data(_183,"datagrid"); +var opts=_185.options; +var data=_185.data; +var _186=_185.insertedRows; +var _187=_185.deletedRows; +$(_183).datagrid("cancelEdit",_184); +var row=opts.finder.getRow(_183,_184); +if(_2(_186,row)>=0){ +_3(_186,row); +}else{ +_187.push(row); +} +_3(_185.selectedRows,opts.idField,row[opts.idField]); +_3(_185.checkedRows,opts.idField,row[opts.idField]); +opts.view.deleteRow.call(opts.view,_183,_184); +if(opts.height=="auto"){ +_34(_183); +} +$(_183).datagrid("getPager").pagination("refresh",{total:data.total}); +}; +function _188(_189,_18a){ +var data=$.data(_189,"datagrid").data; +var view=$.data(_189,"datagrid").options.view; +var _18b=$.data(_189,"datagrid").insertedRows; +view.insertRow.call(view,_189,_18a.index,_18a.row); +_18b.push(_18a.row); +$(_189).datagrid("getPager").pagination("refresh",{total:data.total}); +}; +function _18c(_18d,row){ +var data=$.data(_18d,"datagrid").data; +var view=$.data(_18d,"datagrid").options.view; +var _18e=$.data(_18d,"datagrid").insertedRows; +view.insertRow.call(view,_18d,null,row); +_18e.push(row); +$(_18d).datagrid("getPager").pagination("refresh",{total:data.total}); +}; +function _18f(_190,_191){ +var _192=$.data(_190,"datagrid"); +var opts=_192.options; +var row=opts.finder.getRow(_190,_191.index); +var _193=false; +_191.row=_191.row||{}; +for(var _194 in _191.row){ +if(row[_194]!==_191.row[_194]){ +_193=true; +break; +} +} +if(_193){ +if(_2(_192.insertedRows,row)==-1){ +if(_2(_192.updatedRows,row)==-1){ +_192.updatedRows.push(row); +} +} +opts.view.updateRow.call(opts.view,_190,_191.index,_191.row); +} +}; +function _195(_196){ +var _197=$.data(_196,"datagrid"); +var data=_197.data; +var rows=data.rows; +var _198=[]; +for(var i=0;i=0){ +(_1a5=="s"?_a5:_a2)(_19c,_1a6,true); +} +} +}; +for(var i=0;i0){ +$(this).datagrid("loadData",data); +}else{ +opts.view.setEmptyMsg(this); +$(this).datagrid("autoSizeColumn"); +} +} +_bf(this); +}); +}; +function _1b6(_1b7){ +var _1b8={}; +$.map(_1b7,function(name){ +_1b8[name]=_1b9(name); +}); +return _1b8; +function _1b9(name){ +function isA(_1ba){ +return $.data($(_1ba)[0],name)!=undefined; +}; +return {init:function(_1bb,_1bc){ +var _1bd=$("").appendTo(_1bb); +if(_1bd[name]&&name!="text"){ +return _1bd[name](_1bc); +}else{ +return _1bd; +} +},destroy:function(_1be){ +if(isA(_1be,name)){ +$(_1be)[name]("destroy"); +} +},getValue:function(_1bf){ +if(isA(_1bf,name)){ +var opts=$(_1bf)[name]("options"); +if(opts.multiple){ +return $(_1bf)[name]("getValues").join(opts.separator); +}else{ +return $(_1bf)[name]("getValue"); +} +}else{ +return $(_1bf).val(); +} +},setValue:function(_1c0,_1c1){ +if(isA(_1c0,name)){ +var opts=$(_1c0)[name]("options"); +if(opts.multiple){ +if(_1c1){ +$(_1c0)[name]("setValues",_1c1.split(opts.separator)); +}else{ +$(_1c0)[name]("clear"); +} +}else{ +$(_1c0)[name]("setValue",_1c1); +} +}else{ +$(_1c0).val(_1c1); +} +},resize:function(_1c2,_1c3){ +if(isA(_1c2,name)){ +$(_1c2)[name]("resize",_1c3); +}else{ +$(_1c2)._size({width:_1c3,height:$.fn.datagrid.defaults.editorHeight}); +} +}}; +}; +}; +var _1c4=$.extend({},_1b6(["text","textbox","passwordbox","filebox","numberbox","numberspinner","combobox","combotree","combogrid","combotreegrid","datebox","datetimebox","timespinner","datetimespinner"]),{textarea:{init:function(_1c5,_1c6){ +var _1c7=$("").appendTo(_1c5); +_1c7.css("vertical-align","middle")._outerHeight(_1c6.height); +return _1c7; +},getValue:function(_1c8){ +return $(_1c8).val(); +},setValue:function(_1c9,_1ca){ +$(_1c9).val(_1ca); +},resize:function(_1cb,_1cc){ +$(_1cb)._outerWidth(_1cc); +}},checkbox:{init:function(_1cd,_1ce){ +var _1cf=$("").appendTo(_1cd); +_1cf.val(_1ce.on); +_1cf.attr("offval",_1ce.off); +return _1cf; +},getValue:function(_1d0){ +if($(_1d0).is(":checked")){ +return $(_1d0).val(); +}else{ +return $(_1d0).attr("offval"); +} +},setValue:function(_1d1,_1d2){ +var _1d3=false; +if($(_1d1).val()==_1d2){ +_1d3=true; +} +$(_1d1)._propAttr("checked",_1d3); +}},validatebox:{init:function(_1d4,_1d5){ +var _1d6=$("").appendTo(_1d4); +_1d6.validatebox(_1d5); +return _1d6; +},destroy:function(_1d7){ +$(_1d7).validatebox("destroy"); +},getValue:function(_1d8){ +return $(_1d8).val(); +},setValue:function(_1d9,_1da){ +$(_1d9).val(_1da); +},resize:function(_1db,_1dc){ +$(_1db)._outerWidth(_1dc)._outerHeight($.fn.datagrid.defaults.editorHeight); +}}}); +$.fn.datagrid.methods={options:function(jq){ +var _1dd=$.data(jq[0],"datagrid").options; +var _1de=$.data(jq[0],"datagrid").panel.panel("options"); +var opts=$.extend(_1dd,{width:_1de.width,height:_1de.height,closed:_1de.closed,collapsed:_1de.collapsed,minimized:_1de.minimized,maximized:_1de.maximized}); +return opts; +},setSelectionState:function(jq){ +return jq.each(function(){ +_114(this); +}); +},createStyleSheet:function(jq){ +return _7(jq[0]); +},getPanel:function(jq){ +return $.data(jq[0],"datagrid").panel; +},getPager:function(jq){ +return $.data(jq[0],"datagrid").panel.children("div.datagrid-pager"); +},getColumnFields:function(jq,_1df){ +return _73(jq[0],_1df); +},getColumnOption:function(jq,_1e0){ +return _74(jq[0],_1e0); +},resize:function(jq,_1e1){ +return jq.each(function(){ +_1a(this,_1e1); +}); +},load:function(jq,_1e2){ +return jq.each(function(){ +var opts=$(this).datagrid("options"); +if(typeof _1e2=="string"){ +opts.url=_1e2; +_1e2=null; +} +opts.pageNumber=1; +var _1e3=$(this).datagrid("getPager"); +_1e3.pagination("refresh",{pageNumber:1}); +_bf(this,_1e2); +}); +},reload:function(jq,_1e4){ +return jq.each(function(){ +var opts=$(this).datagrid("options"); +if(typeof _1e4=="string"){ +opts.url=_1e4; +_1e4=null; +} +_bf(this,_1e4); +}); +},reloadFooter:function(jq,_1e5){ +return jq.each(function(){ +var opts=$.data(this,"datagrid").options; +var dc=$.data(this,"datagrid").dc; +if(_1e5){ +$.data(this,"datagrid").footer=_1e5; +} +if(opts.showFooter){ +opts.view.renderFooter.call(opts.view,this,dc.footer2,false); +opts.view.renderFooter.call(opts.view,this,dc.footer1,true); +if(opts.view.onAfterRender){ +opts.view.onAfterRender.call(opts.view,this); +} +$(this).datagrid("fixRowHeight"); +} +}); +},loading:function(jq){ +return jq.each(function(){ +var opts=$.data(this,"datagrid").options; +$(this).datagrid("getPager").pagination("loading"); +if(opts.loadMsg){ +var _1e6=$(this).datagrid("getPanel"); +if(!_1e6.children("div.datagrid-mask").length){ +$("
            ").appendTo(_1e6); +var msg=$("
            ").html(opts.loadMsg).appendTo(_1e6); +msg._outerHeight(40); +msg.css({marginLeft:(-msg.outerWidth()/2),lineHeight:(msg.height()+"px")}); +} +} +}); +},loaded:function(jq){ +return jq.each(function(){ +$(this).datagrid("getPager").pagination("loaded"); +var _1e7=$(this).datagrid("getPanel"); +_1e7.children("div.datagrid-mask-msg").remove(); +_1e7.children("div.datagrid-mask").remove(); +}); +},fitColumns:function(jq){ +return jq.each(function(){ +_cc(this); +}); +},fixColumnSize:function(jq,_1e8){ +return jq.each(function(){ +_ef(this,_1e8); +}); +},fixRowHeight:function(jq,_1e9){ +return jq.each(function(){ +_34(this,_1e9); +}); +},freezeRow:function(jq,_1ea){ +return jq.each(function(){ +_45(this,_1ea); +}); +},autoSizeColumn:function(jq,_1eb){ +return jq.each(function(){ +_e0(this,_1eb); +}); +},loadData:function(jq,data){ +return jq.each(function(){ +_c0(this,data); +_195(this); +}); +},getData:function(jq){ +return $.data(jq[0],"datagrid").data; +},getRows:function(jq){ +return $.data(jq[0],"datagrid").data.rows; +},getFooterRows:function(jq){ +return $.data(jq[0],"datagrid").footer; +},getRowIndex:function(jq,id){ +return _11c(jq[0],id); +},getChecked:function(jq){ +return _122(jq[0]); +},getSelected:function(jq){ +var rows=_11f(jq[0]); +return rows.length>0?rows[0]:null; +},getSelections:function(jq){ +return _11f(jq[0]); +},clearSelections:function(jq){ +return jq.each(function(){ +var _1ec=$.data(this,"datagrid"); +var _1ed=_1ec.selectedRows; +var _1ee=_1ec.checkedRows; +_1ed.splice(0,_1ed.length); +_135(this); +if(_1ec.options.checkOnSelect){ +_1ee.splice(0,_1ee.length); +} +}); +},clearChecked:function(jq){ +return jq.each(function(){ +var _1ef=$.data(this,"datagrid"); +var _1f0=_1ef.selectedRows; +var _1f1=_1ef.checkedRows; +_1f1.splice(0,_1f1.length); +_8a(this); +if(_1ef.options.selectOnCheck){ +_1f0.splice(0,_1f0.length); +} +}); +},scrollTo:function(jq,_1f2){ +return jq.each(function(){ +_125(this,_1f2); +}); +},highlightRow:function(jq,_1f3){ +return jq.each(function(){ +_9c(this,_1f3); +_125(this,_1f3); +}); +},selectAll:function(jq){ +return jq.each(function(){ +_13a(this); +}); +},unselectAll:function(jq){ +return jq.each(function(){ +_135(this); +}); +},selectRow:function(jq,_1f4){ +return jq.each(function(){ +_a5(this,_1f4); +}); +},selectRecord:function(jq,id){ +return jq.each(function(){ +var opts=$.data(this,"datagrid").options; +if(opts.idField){ +var _1f5=_11c(this,id); +if(_1f5>=0){ +$(this).datagrid("selectRow",_1f5); +} +} +}); +},unselectRow:function(jq,_1f6){ +return jq.each(function(){ +_a6(this,_1f6); +}); +},checkRow:function(jq,_1f7){ +return jq.each(function(){ +_a2(this,_1f7); +}); +},uncheckRow:function(jq,_1f8){ +return jq.each(function(){ +_a3(this,_1f8); +}); +},checkAll:function(jq){ +return jq.each(function(){ +_89(this); +}); +},uncheckAll:function(jq){ +return jq.each(function(){ +_8a(this); +}); +},beginEdit:function(jq,_1f9){ +return jq.each(function(){ +_154(this,_1f9); +}); +},endEdit:function(jq,_1fa){ +return jq.each(function(){ +_15a(this,_1fa,false); +}); +},cancelEdit:function(jq,_1fb){ +return jq.each(function(){ +_15a(this,_1fb,true); +}); +},getEditors:function(jq,_1fc){ +return _167(jq[0],_1fc); +},getEditor:function(jq,_1fd){ +return _16b(jq[0],_1fd); +},refreshRow:function(jq,_1fe){ +return jq.each(function(){ +var opts=$.data(this,"datagrid").options; +opts.view.refreshRow.call(opts.view,this,_1fe); +}); +},validateRow:function(jq,_1ff){ +return _159(jq[0],_1ff); +},updateRow:function(jq,_200){ +return jq.each(function(){ +_18f(this,_200); +}); +},appendRow:function(jq,row){ +return jq.each(function(){ +_18c(this,row); +}); +},insertRow:function(jq,_201){ +return jq.each(function(){ +_188(this,_201); +}); +},deleteRow:function(jq,_202){ +return jq.each(function(){ +_182(this,_202); +}); +},getChanges:function(jq,_203){ +return _17c(jq[0],_203); +},acceptChanges:function(jq){ +return jq.each(function(){ +_199(this); +}); +},rejectChanges:function(jq){ +return jq.each(function(){ +_19b(this); +}); +},mergeCells:function(jq,_204){ +return jq.each(function(){ +_1ad(this,_204); +}); +},showColumn:function(jq,_205){ +return jq.each(function(){ +var col=$(this).datagrid("getColumnOption",_205); +if(col.hidden){ +col.hidden=false; +$(this).datagrid("getPanel").find("td[field=\""+_205+"\"]").show(); +_c1(this,_205,1); +$(this).datagrid("fitColumns"); +} +}); +},hideColumn:function(jq,_206){ +return jq.each(function(){ +var col=$(this).datagrid("getColumnOption",_206); +if(!col.hidden){ +col.hidden=true; +$(this).datagrid("getPanel").find("td[field=\""+_206+"\"]").hide(); +_c1(this,_206,-1); +$(this).datagrid("fitColumns"); +} +}); +},sort:function(jq,_207){ +return jq.each(function(){ +_8c(this,_207); +}); +},gotoPage:function(jq,_208){ +return jq.each(function(){ +var _209=this; +var page,cb; +if(typeof _208=="object"){ +page=_208.page; +cb=_208.callback; +}else{ +page=_208; +} +$(_209).datagrid("options").pageNumber=page; +$(_209).datagrid("getPager").pagination("refresh",{pageNumber:page}); +_bf(_209,null,function(){ +if(cb){ +cb.call(_209,page); +} +}); +}); +}}; +$.fn.datagrid.parseOptions=function(_20a){ +var t=$(_20a); +return $.extend({},$.fn.panel.parseOptions(_20a),$.parser.parseOptions(_20a,["url","toolbar","idField","sortName","sortOrder","pagePosition","resizeHandle",{sharedStyleSheet:"boolean",fitColumns:"boolean",autoRowHeight:"boolean",striped:"boolean",nowrap:"boolean"},{rownumbers:"boolean",singleSelect:"boolean",ctrlSelect:"boolean",checkOnSelect:"boolean",selectOnCheck:"boolean"},{pagination:"boolean",pageSize:"number",pageNumber:"number"},{multiSort:"boolean",remoteSort:"boolean",showHeader:"boolean",showFooter:"boolean"},{scrollbarSize:"number",scrollOnSelect:"boolean"}]),{pageList:(t.attr("pageList")?eval(t.attr("pageList")):undefined),loadMsg:(t.attr("loadMsg")!=undefined?t.attr("loadMsg"):undefined),rowStyler:(t.attr("rowStyler")?eval(t.attr("rowStyler")):undefined)}); +}; +$.fn.datagrid.parseData=function(_20b){ +var t=$(_20b); +var data={total:0,rows:[]}; +var _20c=t.datagrid("getColumnFields",true).concat(t.datagrid("getColumnFields",false)); +t.find("tbody tr").each(function(){ +data.total++; +var row={}; +$.extend(row,$.parser.parseOptions(this,["iconCls","state"])); +for(var i=0;i<_20c.length;i++){ +row[_20c[i]]=$(this).find("td:eq("+i+")").html(); +} +data.rows.push(row); +}); +return data; +}; +var _20d={render:function(_20e,_20f,_210){ +var rows=$(_20e).datagrid("getRows"); +$(_20f).html(this.renderTable(_20e,0,rows,_210)); +},renderFooter:function(_211,_212,_213){ +var opts=$.data(_211,"datagrid").options; +var rows=$.data(_211,"datagrid").footer||[]; +var _214=$(_211).datagrid("getColumnFields",_213); +var _215=[""]; +for(var i=0;i"); +_215.push(this.renderRow.call(this,_211,_214,_213,i,rows[i])); +_215.push(""); +} +_215.push("
            "); +$(_212).html(_215.join("")); +},renderTable:function(_216,_217,rows,_218){ +var _219=$.data(_216,"datagrid"); +var opts=_219.options; +if(_218){ +if(!(opts.rownumbers||(opts.frozenColumns&&opts.frozenColumns.length))){ +return ""; +} +} +var _21a=$(_216).datagrid("getColumnFields",_218); +var _21b=[""]; +for(var i=0;i"); +_21b.push(this.renderRow.call(this,_216,_21a,_218,_217,row)); +_21b.push(""); +_217++; +} +_21b.push("
            "); +return _21b.join(""); +},renderRow:function(_21e,_21f,_220,_221,_222){ +var opts=$.data(_21e,"datagrid").options; +var cc=[]; +if(_220&&opts.rownumbers){ +var _223=_221+1; +if(opts.pagination){ +_223+=(opts.pageNumber-1)*opts.pageSize; +} +cc.push("
            "+_223+"
            "); +} +for(var i=0;i<_21f.length;i++){ +var _224=_21f[i]; +var col=$(_21e).datagrid("getColumnOption",_224); +if(col){ +var _225=_222[_224]; +var css=col.styler?(col.styler.call(_21e,_225,_222,_221)||""):""; +var cs=this.getStyleValue(css); +var cls=cs.c?"class=\""+cs.c+"\"":""; +var _226=col.hidden?"style=\"display:none;"+cs.s+"\"":(cs.s?"style=\""+cs.s+"\"":""); +cc.push(""); +var _226=""; +if(!col.checkbox){ +if(col.align){ +_226+="text-align:"+col.align+";"; +} +if(!opts.nowrap){ +_226+="white-space:normal;height:auto;"; +}else{ +if(opts.autoRowHeight){ +_226+="height:auto;"; +} +} +} +cc.push("
            "); +if(col.checkbox){ +cc.push(""); +}else{ +if(col.formatter){ +cc.push(col.formatter(_225,_222,_221)); +}else{ +cc.push(_225); +} +} +cc.push("
            "); +cc.push(""); +} +} +return cc.join(""); +},getStyleValue:function(css){ +var _227=""; +var _228=""; +if(typeof css=="string"){ +_228=css; +}else{ +if(css){ +_227=css["class"]||""; +_228=css["style"]||""; +} +} +return {c:_227,s:_228}; +},refreshRow:function(_229,_22a){ +this.updateRow.call(this,_229,_22a,{}); +},updateRow:function(_22b,_22c,row){ +var opts=$.data(_22b,"datagrid").options; +var _22d=opts.finder.getRow(_22b,_22c); +$.extend(_22d,row); +var cs=_22e.call(this,_22c); +var _22f=cs.s; +var cls="datagrid-row "+(_22c%2&&opts.striped?"datagrid-row-alt ":" ")+cs.c; +function _22e(_230){ +var css=opts.rowStyler?opts.rowStyler.call(_22b,_230,_22d):""; +return this.getStyleValue(css); +}; +function _231(_232){ +var tr=opts.finder.getTr(_22b,_22c,"body",(_232?1:2)); +if(!tr.length){ +return; +} +var _233=$(_22b).datagrid("getColumnFields",_232); +var _234=tr.find("div.datagrid-cell-check input[type=checkbox]").is(":checked"); +tr.html(this.renderRow.call(this,_22b,_233,_232,_22c,_22d)); +var _235=(tr.hasClass("datagrid-row-checked")?" datagrid-row-checked":"")+(tr.hasClass("datagrid-row-selected")?" datagrid-row-selected":""); +tr.attr("style",_22f).attr("class",cls+_235); +if(_234){ +tr.find("div.datagrid-cell-check input[type=checkbox]")._propAttr("checked",true); +} +}; +_231.call(this,true); +_231.call(this,false); +$(_22b).datagrid("fixRowHeight",_22c); +},insertRow:function(_236,_237,row){ +var _238=$.data(_236,"datagrid"); +var opts=_238.options; +var dc=_238.dc; +var data=_238.data; +if(_237==undefined||_237==null){ +_237=data.rows.length; +} +if(_237>data.rows.length){ +_237=data.rows.length; +} +function _239(_23a){ +var _23b=_23a?1:2; +for(var i=data.rows.length-1;i>=_237;i--){ +var tr=opts.finder.getTr(_236,i,"body",_23b); +tr.attr("datagrid-row-index",i+1); +tr.attr("id",_238.rowIdPrefix+"-"+_23b+"-"+(i+1)); +if(_23a&&opts.rownumbers){ +var _23c=i+2; +if(opts.pagination){ +_23c+=(opts.pageNumber-1)*opts.pageSize; +} +tr.find("div.datagrid-cell-rownumber").html(_23c); +} +if(opts.striped){ +tr.removeClass("datagrid-row-alt").addClass((i+1)%2?"datagrid-row-alt":""); +} +} +}; +function _23d(_23e){ +var _23f=_23e?1:2; +var _240=$(_236).datagrid("getColumnFields",_23e); +var _241=_238.rowIdPrefix+"-"+_23f+"-"+_237; +var tr=""; +if(_237>=data.rows.length){ +if(data.rows.length){ +opts.finder.getTr(_236,"","last",_23f).after(tr); +}else{ +var cc=_23e?dc.body1:dc.body2; +cc.html(""+tr+"
            "); +} +}else{ +opts.finder.getTr(_236,_237+1,"body",_23f).before(tr); +} +}; +_239.call(this,true); +_239.call(this,false); +_23d.call(this,true); +_23d.call(this,false); +data.total+=1; +data.rows.splice(_237,0,row); +this.setEmptyMsg(_236); +this.refreshRow.call(this,_236,_237); +},deleteRow:function(_242,_243){ +var _244=$.data(_242,"datagrid"); +var opts=_244.options; +var data=_244.data; +function _245(_246){ +var _247=_246?1:2; +for(var i=_243+1;i").appendTo(_24e.dc.view); +d.html(opts.emptyMsg).css("top",h+"px"); +} +} +},renderEmptyRow:function(_250){ +var cols=$.map($(_250).datagrid("getColumnFields"),function(_251){ +return $(_250).datagrid("getColumnOption",_251); +}); +$.map(cols,function(col){ +col.formatter1=col.formatter; +col.styler1=col.styler; +col.formatter=col.styler=undefined; +}); +var _252=$.data(_250,"datagrid").dc.body2; +_252.html(this.renderTable(_250,0,[{}],false)); +_252.find("tbody *").css({height:1,borderColor:"transparent",background:"transparent"}); +var tr=_252.find(".datagrid-row"); +tr.removeClass("datagrid-row").removeAttr("datagrid-row-index"); +tr.find(".datagrid-cell,.datagrid-cell-check").empty(); +$.map(cols,function(col){ +col.formatter=col.formatter1; +col.styler=col.styler1; +col.formatter1=col.styler1=undefined; +}); +}}; +$.fn.datagrid.defaults=$.extend({},$.fn.panel.defaults,{sharedStyleSheet:false,frozenColumns:undefined,columns:undefined,fitColumns:false,resizeHandle:"right",autoRowHeight:true,toolbar:null,striped:false,method:"post",nowrap:true,idField:null,url:null,data:null,loadMsg:"Processing, please wait ...",emptyMsg:"",rownumbers:false,singleSelect:false,ctrlSelect:false,selectOnCheck:true,checkOnSelect:true,pagination:false,pagePosition:"bottom",pageNumber:1,pageSize:10,pageList:[10,20,30,40,50],queryParams:{},sortName:null,sortOrder:"asc",multiSort:false,remoteSort:true,showHeader:true,showFooter:false,scrollOnSelect:true,scrollbarSize:18,rownumberWidth:30,editorHeight:24,headerEvents:{mouseover:_82(true),mouseout:_82(false),click:_86,dblclick:_8d,contextmenu:_93},rowEvents:{mouseover:_96(true),mouseout:_96(false),click:_9e,dblclick:_a9,contextmenu:_ae},rowStyler:function(_253,_254){ +},loader:function(_255,_256,_257){ +var opts=$(this).datagrid("options"); +if(!opts.url){ +return false; +} +$.ajax({type:opts.method,url:opts.url,data:_255,dataType:"json",success:function(data){ +_256(data); +},error:function(){ +_257.apply(this,arguments); +}}); +},loadFilter:function(data){ +return data; +},editors:_1c4,finder:{getTr:function(_258,_259,type,_25a){ +type=type||"body"; +_25a=_25a||0; +var _25b=$.data(_258,"datagrid"); +var dc=_25b.dc; +var opts=_25b.options; +if(_25a==0){ +var tr1=opts.finder.getTr(_258,_259,type,1); +var tr2=opts.finder.getTr(_258,_259,type,2); +return tr1.add(tr2); +}else{ +if(type=="body"){ +var tr=$("#"+_25b.rowIdPrefix+"-"+_25a+"-"+_259); +if(!tr.length){ +tr=(_25a==1?dc.body1:dc.body2).find(">table>tbody>tr[datagrid-row-index="+_259+"]"); +} +return tr; +}else{ +if(type=="footer"){ +return (_25a==1?dc.footer1:dc.footer2).find(">table>tbody>tr[datagrid-row-index="+_259+"]"); +}else{ +if(type=="selected"){ +return (_25a==1?dc.body1:dc.body2).find(">table>tbody>tr.datagrid-row-selected"); +}else{ +if(type=="highlight"){ +return (_25a==1?dc.body1:dc.body2).find(">table>tbody>tr.datagrid-row-over"); +}else{ +if(type=="checked"){ +return (_25a==1?dc.body1:dc.body2).find(">table>tbody>tr.datagrid-row-checked"); +}else{ +if(type=="editing"){ +return (_25a==1?dc.body1:dc.body2).find(">table>tbody>tr.datagrid-row-editing"); +}else{ +if(type=="last"){ +return (_25a==1?dc.body1:dc.body2).find(">table>tbody>tr[datagrid-row-index]:last"); +}else{ +if(type=="allbody"){ +return (_25a==1?dc.body1:dc.body2).find(">table>tbody>tr[datagrid-row-index]"); +}else{ +if(type=="allfooter"){ +return (_25a==1?dc.footer1:dc.footer2).find(">table>tbody>tr[datagrid-row-index]"); +} +} +} +} +} +} +} +} +} +} +},getRow:function(_25c,p){ +var _25d=(typeof p=="object")?p.attr("datagrid-row-index"):p; +return $.data(_25c,"datagrid").data.rows[parseInt(_25d)]; +},getRows:function(_25e){ +return $(_25e).datagrid("getRows"); +}},view:_20d,onBeforeLoad:function(_25f){ +},onLoadSuccess:function(){ +},onLoadError:function(){ +},onClickRow:function(_260,_261){ +},onDblClickRow:function(_262,_263){ +},onClickCell:function(_264,_265,_266){ +},onDblClickCell:function(_267,_268,_269){ +},onBeforeSortColumn:function(sort,_26a){ +},onSortColumn:function(sort,_26b){ +},onResizeColumn:function(_26c,_26d){ +},onBeforeSelect:function(_26e,_26f){ +},onSelect:function(_270,_271){ +},onBeforeUnselect:function(_272,_273){ +},onUnselect:function(_274,_275){ +},onSelectAll:function(rows){ +},onUnselectAll:function(rows){ +},onBeforeCheck:function(_276,_277){ +},onCheck:function(_278,_279){ +},onBeforeUncheck:function(_27a,_27b){ +},onUncheck:function(_27c,_27d){ +},onCheckAll:function(rows){ +},onUncheckAll:function(rows){ +},onBeforeEdit:function(_27e,_27f){ +},onBeginEdit:function(_280,_281){ +},onEndEdit:function(_282,_283,_284){ +},onAfterEdit:function(_285,_286,_287){ +},onCancelEdit:function(_288,_289){ +},onHeaderContextMenu:function(e,_28a){ +},onRowContextMenu:function(e,_28b,_28c){ +}}); +})(jQuery); + diff --git a/src/main/webapp/static/easyUI/plugins/jquery.datalist.js b/src/main/webapp/static/easyUI/plugins/jquery.datalist.js new file mode 100644 index 0000000000000000000000000000000000000000..580f2413128434cbff5f69c166ef7d94d7b1940b --- /dev/null +++ b/src/main/webapp/static/easyUI/plugins/jquery.datalist.js @@ -0,0 +1,136 @@ +/** + * jQuery EasyUI 1.5.2 + * + * Copyright (c) 2009-2017 www.jeasyui.com. All rights reserved. + * + * Licensed under the freeware license: http://www.jeasyui.com/license_freeware.php + * To use it on other terms please contact us: info@jeasyui.com + * + */ +(function($){ +function _1(_2){ +var _3=$.data(_2,"datalist").options; +$(_2).datagrid($.extend({},_3,{cls:"datalist"+(_3.lines?" datalist-lines":""),frozenColumns:(_3.frozenColumns&&_3.frozenColumns.length)?_3.frozenColumns:(_3.checkbox?[[{field:"_ck",checkbox:true}]]:undefined),columns:(_3.columns&&_3.columns.length)?_3.columns:[[{field:_3.textField,width:"100%",formatter:function(_4,_5,_6){ +return _3.textFormatter?_3.textFormatter(_4,_5,_6):_4; +}}]]})); +}; +var _7=$.extend({},$.fn.datagrid.defaults.view,{render:function(_8,_9,_a){ +var _b=$.data(_8,"datagrid"); +var _c=_b.options; +if(_c.groupField){ +var g=this.groupRows(_8,_b.data.rows); +this.groups=g.groups; +_b.data.rows=g.rows; +var _d=[]; +for(var i=0;i"); +if(!_11){ +_15.push(""); +_15.push(_13.groupFormatter.call(_e,_10.value,_10.rows)); +_15.push(""); +} +_15.push(""); +_15.push(this.renderTable(_e,_10.startIndex,_10.rows,_11)); +return _15.join(""); +},groupRows:function(_16,_17){ +var _18=$.data(_16,"datagrid"); +var _19=_18.options; +var _1a=[]; +for(var i=0;i<_17.length;i++){ +var row=_17[i]; +var _1b=_1c(row[_19.groupField]); +if(!_1b){ +_1b={value:row[_19.groupField],rows:[row]}; +_1a.push(_1b); +}else{ +_1b.rows.push(row); +} +} +var _1d=0; +var _17=[]; +for(var i=0;i<_1a.length;i++){ +var _1b=_1a[i]; +_1b.startIndex=_1d; +_1d+=_1b.rows.length; +_17=_17.concat(_1b.rows); +} +return {groups:_1a,rows:_17}; +function _1c(_1e){ +for(var i=0;i<_1a.length;i++){ +var _1f=_1a[i]; +if(_1f.value==_1e){ +return _1f; +} +} +return null; +}; +}}); +$.fn.datalist=function(_20,_21){ +if(typeof _20=="string"){ +var _22=$.fn.datalist.methods[_20]; +if(_22){ +return _22(this,_21); +}else{ +return this.datagrid(_20,_21); +} +} +_20=_20||{}; +return this.each(function(){ +var _23=$.data(this,"datalist"); +if(_23){ +$.extend(_23.options,_20); +}else{ +var _24=$.extend({},$.fn.datalist.defaults,$.fn.datalist.parseOptions(this),_20); +_24.columns=$.extend(true,[],_24.columns); +_23=$.data(this,"datalist",{options:_24}); +} +_1(this); +if(!_23.options.data){ +var _25=$.fn.datalist.parseData(this); +if(_25.total){ +$(this).datalist("loadData",_25); +} +} +}); +}; +$.fn.datalist.methods={options:function(jq){ +return $.data(jq[0],"datalist").options; +}}; +$.fn.datalist.parseOptions=function(_26){ +return $.extend({},$.fn.datagrid.parseOptions(_26),$.parser.parseOptions(_26,["valueField","textField","groupField",{checkbox:"boolean",lines:"boolean"}])); +}; +$.fn.datalist.parseData=function(_27){ +var _28=$.data(_27,"datalist").options; +var _29={total:0,rows:[]}; +$(_27).children().each(function(){ +var _2a=$.parser.parseOptions(this,["value","group"]); +var row={}; +var _2b=$(this).html(); +row[_28.valueField]=_2a.value!=undefined?_2a.value:_2b; +row[_28.textField]=_2b; +if(_28.groupField){ +row[_28.groupField]=_2a.group; +} +_29.total++; +_29.rows.push(row); +}); +return _29; +}; +$.fn.datalist.defaults=$.extend({},$.fn.datagrid.defaults,{fitColumns:true,singleSelect:true,showHeader:false,checkbox:false,lines:false,valueField:"value",textField:"text",groupField:"",view:_7,textFormatter:function(_2c,row){ +return _2c; +},groupFormatter:function(_2d,_2e){ +return _2d; +}}); +})(jQuery); + diff --git a/src/main/webapp/static/easyUI/plugins/jquery.datebox.js b/src/main/webapp/static/easyUI/plugins/jquery.datebox.js new file mode 100644 index 0000000000000000000000000000000000000000..bd6f6df79989224e79aa270c298a4fc28960f0e4 --- /dev/null +++ b/src/main/webapp/static/easyUI/plugins/jquery.datebox.js @@ -0,0 +1,212 @@ +/** + * jQuery EasyUI 1.5.2 + * + * Copyright (c) 2009-2017 www.jeasyui.com. All rights reserved. + * + * Licensed under the freeware license: http://www.jeasyui.com/license_freeware.php + * To use it on other terms please contact us: info@jeasyui.com + * + */ +(function($){ +function _1(_2){ +var _3=$.data(_2,"datebox"); +var _4=_3.options; +$(_2).addClass("datebox-f").combo($.extend({},_4,{onShowPanel:function(){ +_5(this); +_6(this); +_7(this); +_18(this,$(this).datebox("getText"),true); +_4.onShowPanel.call(this); +}})); +if(!_3.calendar){ +var _8=$(_2).combo("panel").css("overflow","hidden"); +_8.panel("options").onBeforeDestroy=function(){ +var c=$(this).find(".calendar-shared"); +if(c.length){ +c.insertBefore(c[0].pholder); +} +}; +var cc=$("
            ").prependTo(_8); +if(_4.sharedCalendar){ +var c=$(_4.sharedCalendar); +if(!c[0].pholder){ +c[0].pholder=$("
            ").insertAfter(c); +} +c.addClass("calendar-shared").appendTo(cc); +if(!c.hasClass("calendar")){ +c.calendar(); +} +_3.calendar=c; +}else{ +_3.calendar=$("
            ").appendTo(cc).calendar(); +} +$.extend(_3.calendar.calendar("options"),{fit:true,border:false,onSelect:function(_9){ +var _a=this.target; +var _b=$(_a).datebox("options"); +_18(_a,_b.formatter.call(_a,_9)); +$(_a).combo("hidePanel"); +_b.onSelect.call(_a,_9); +}}); +} +$(_2).combo("textbox").parent().addClass("datebox"); +$(_2).datebox("initValue",_4.value); +function _5(_c){ +var _d=$(_c).datebox("options"); +var _e=$(_c).combo("panel"); +_e.unbind(".datebox").bind("click.datebox",function(e){ +if($(e.target).hasClass("datebox-button-a")){ +var _f=parseInt($(e.target).attr("datebox-button-index")); +_d.buttons[_f].handler.call(e.target,_c); +} +}); +}; +function _6(_10){ +var _11=$(_10).combo("panel"); +if(_11.children("div.datebox-button").length){ +return; +} +var _12=$("
            ").appendTo(_11); +var tr=_12.find("tr"); +for(var i=0;i<_4.buttons.length;i++){ +var td=$("").appendTo(tr); +var btn=_4.buttons[i]; +var t=$("").html($.isFunction(btn.text)?btn.text(_10):btn.text).appendTo(td); +t.attr("datebox-button-index",i); +} +tr.find("td").css("width",(100/_4.buttons.length)+"%"); +}; +function _7(_13){ +var _14=$(_13).combo("panel"); +var cc=_14.children("div.datebox-calendar-inner"); +_14.children()._outerWidth(_14.width()); +_3.calendar.appendTo(cc); +_3.calendar[0].target=_13; +if(_4.panelHeight!="auto"){ +var _15=_14.height(); +_14.children().not(cc).each(function(){ +_15-=$(this).outerHeight(); +}); +cc._outerHeight(_15); +} +_3.calendar.calendar("resize"); +}; +}; +function _16(_17,q){ +_18(_17,q,true); +}; +function _19(_1a){ +var _1b=$.data(_1a,"datebox"); +var _1c=_1b.options; +var _1d=_1b.calendar.calendar("options").current; +if(_1d){ +_18(_1a,_1c.formatter.call(_1a,_1d)); +$(_1a).combo("hidePanel"); +} +}; +function _18(_1e,_1f,_20){ +var _21=$.data(_1e,"datebox"); +var _22=_21.options; +var _23=_21.calendar; +_23.calendar("moveTo",_22.parser.call(_1e,_1f)); +if(_20){ +$(_1e).combo("setValue",_1f); +}else{ +if(_1f){ +_1f=_22.formatter.call(_1e,_23.calendar("options").current); +} +$(_1e).combo("setText",_1f).combo("setValue",_1f); +} +}; +$.fn.datebox=function(_24,_25){ +if(typeof _24=="string"){ +var _26=$.fn.datebox.methods[_24]; +if(_26){ +return _26(this,_25); +}else{ +return this.combo(_24,_25); +} +} +_24=_24||{}; +return this.each(function(){ +var _27=$.data(this,"datebox"); +if(_27){ +$.extend(_27.options,_24); +}else{ +$.data(this,"datebox",{options:$.extend({},$.fn.datebox.defaults,$.fn.datebox.parseOptions(this),_24)}); +} +_1(this); +}); +}; +$.fn.datebox.methods={options:function(jq){ +var _28=jq.combo("options"); +return $.extend($.data(jq[0],"datebox").options,{width:_28.width,height:_28.height,originalValue:_28.originalValue,disabled:_28.disabled,readonly:_28.readonly}); +},cloneFrom:function(jq,_29){ +return jq.each(function(){ +$(this).combo("cloneFrom",_29); +$.data(this,"datebox",{options:$.extend(true,{},$(_29).datebox("options")),calendar:$(_29).datebox("calendar")}); +$(this).addClass("datebox-f"); +}); +},calendar:function(jq){ +return $.data(jq[0],"datebox").calendar; +},initValue:function(jq,_2a){ +return jq.each(function(){ +var _2b=$(this).datebox("options"); +var _2c=_2b.value; +if(_2c){ +_2c=_2b.formatter.call(this,_2b.parser.call(this,_2c)); +} +$(this).combo("initValue",_2c).combo("setText",_2c); +}); +},setValue:function(jq,_2d){ +return jq.each(function(){ +_18(this,_2d); +}); +},reset:function(jq){ +return jq.each(function(){ +var _2e=$(this).datebox("options"); +$(this).datebox("setValue",_2e.originalValue); +}); +}}; +$.fn.datebox.parseOptions=function(_2f){ +return $.extend({},$.fn.combo.parseOptions(_2f),$.parser.parseOptions(_2f,["sharedCalendar"])); +}; +$.fn.datebox.defaults=$.extend({},$.fn.combo.defaults,{panelWidth:180,panelHeight:"auto",sharedCalendar:null,keyHandler:{up:function(e){ +},down:function(e){ +},left:function(e){ +},right:function(e){ +},enter:function(e){ +_19(this); +},query:function(q,e){ +_16(this,q); +}},currentText:"Today",closeText:"Close",okText:"Ok",buttons:[{text:function(_30){ +return $(_30).datebox("options").currentText; +},handler:function(_31){ +var now=new Date(); +$(_31).datebox("calendar").calendar({year:now.getFullYear(),month:now.getMonth()+1,current:new Date(now.getFullYear(),now.getMonth(),now.getDate())}); +_19(_31); +}},{text:function(_32){ +return $(_32).datebox("options").closeText; +},handler:function(_33){ +$(this).closest("div.combo-panel").panel("close"); +}}],formatter:function(_34){ +var y=_34.getFullYear(); +var m=_34.getMonth()+1; +var d=_34.getDate(); +return (m<10?("0"+m):m)+"/"+(d<10?("0"+d):d)+"/"+y; +},parser:function(s){ +if(!s){ +return new Date(); +} +var ss=s.split("/"); +var m=parseInt(ss[0],10); +var d=parseInt(ss[1],10); +var y=parseInt(ss[2],10); +if(!isNaN(y)&&!isNaN(m)&&!isNaN(d)){ +return new Date(y,m-1,d); +}else{ +return new Date(); +} +},onSelect:function(_35){ +}}); +})(jQuery); + diff --git a/src/main/webapp/static/easyUI/plugins/jquery.datetimebox.js b/src/main/webapp/static/easyUI/plugins/jquery.datetimebox.js new file mode 100644 index 0000000000000000000000000000000000000000..5331632a332c1d4b1448668a14ecdb8428b81168 --- /dev/null +++ b/src/main/webapp/static/easyUI/plugins/jquery.datetimebox.js @@ -0,0 +1,178 @@ +/** + * jQuery EasyUI 1.5.2 + * + * Copyright (c) 2009-2017 www.jeasyui.com. All rights reserved. + * + * Licensed under the freeware license: http://www.jeasyui.com/license_freeware.php + * To use it on other terms please contact us: info@jeasyui.com + * + */ +(function($){ +function _1(_2){ +var _3=$.data(_2,"datetimebox"); +var _4=_3.options; +$(_2).datebox($.extend({},_4,{onShowPanel:function(){ +var _5=$(this).datetimebox("getValue"); +_d(this,_5,true); +_4.onShowPanel.call(this); +},formatter:$.fn.datebox.defaults.formatter,parser:$.fn.datebox.defaults.parser})); +$(_2).removeClass("datebox-f").addClass("datetimebox-f"); +$(_2).datebox("calendar").calendar({onSelect:function(_6){ +_4.onSelect.call(this.target,_6); +}}); +if(!_3.spinner){ +var _7=$(_2).datebox("panel"); +var p=$("
            ").insertAfter(_7.children("div.datebox-calendar-inner")); +_3.spinner=p.children("input"); +} +_3.spinner.timespinner({width:_4.spinnerWidth,showSeconds:_4.showSeconds,separator:_4.timeSeparator}); +$(_2).datetimebox("initValue",_4.value); +}; +function _8(_9){ +var c=$(_9).datetimebox("calendar"); +var t=$(_9).datetimebox("spinner"); +var _a=c.calendar("options").current; +return new Date(_a.getFullYear(),_a.getMonth(),_a.getDate(),t.timespinner("getHours"),t.timespinner("getMinutes"),t.timespinner("getSeconds")); +}; +function _b(_c,q){ +_d(_c,q,true); +}; +function _e(_f){ +var _10=$.data(_f,"datetimebox").options; +var _11=_8(_f); +_d(_f,_10.formatter.call(_f,_11)); +$(_f).combo("hidePanel"); +}; +function _d(_12,_13,_14){ +var _15=$.data(_12,"datetimebox").options; +$(_12).combo("setValue",_13); +if(!_14){ +if(_13){ +var _16=_15.parser.call(_12,_13); +$(_12).combo("setText",_15.formatter.call(_12,_16)); +$(_12).combo("setValue",_15.formatter.call(_12,_16)); +}else{ +$(_12).combo("setText",_13); +} +} +var _16=_15.parser.call(_12,_13); +$(_12).datetimebox("calendar").calendar("moveTo",_16); +$(_12).datetimebox("spinner").timespinner("setValue",_17(_16)); +function _17(_18){ +function _19(_1a){ +return (_1a<10?"0":"")+_1a; +}; +var tt=[_19(_18.getHours()),_19(_18.getMinutes())]; +if(_15.showSeconds){ +tt.push(_19(_18.getSeconds())); +} +return tt.join($(_12).datetimebox("spinner").timespinner("options").separator); +}; +}; +$.fn.datetimebox=function(_1b,_1c){ +if(typeof _1b=="string"){ +var _1d=$.fn.datetimebox.methods[_1b]; +if(_1d){ +return _1d(this,_1c); +}else{ +return this.datebox(_1b,_1c); +} +} +_1b=_1b||{}; +return this.each(function(){ +var _1e=$.data(this,"datetimebox"); +if(_1e){ +$.extend(_1e.options,_1b); +}else{ +$.data(this,"datetimebox",{options:$.extend({},$.fn.datetimebox.defaults,$.fn.datetimebox.parseOptions(this),_1b)}); +} +_1(this); +}); +}; +$.fn.datetimebox.methods={options:function(jq){ +var _1f=jq.datebox("options"); +return $.extend($.data(jq[0],"datetimebox").options,{originalValue:_1f.originalValue,disabled:_1f.disabled,readonly:_1f.readonly}); +},cloneFrom:function(jq,_20){ +return jq.each(function(){ +$(this).datebox("cloneFrom",_20); +$.data(this,"datetimebox",{options:$.extend(true,{},$(_20).datetimebox("options")),spinner:$(_20).datetimebox("spinner")}); +$(this).removeClass("datebox-f").addClass("datetimebox-f"); +}); +},spinner:function(jq){ +return $.data(jq[0],"datetimebox").spinner; +},initValue:function(jq,_21){ +return jq.each(function(){ +var _22=$(this).datetimebox("options"); +var _23=_22.value; +if(_23){ +_23=_22.formatter.call(this,_22.parser.call(this,_23)); +} +$(this).combo("initValue",_23).combo("setText",_23); +}); +},setValue:function(jq,_24){ +return jq.each(function(){ +_d(this,_24); +}); +},reset:function(jq){ +return jq.each(function(){ +var _25=$(this).datetimebox("options"); +$(this).datetimebox("setValue",_25.originalValue); +}); +}}; +$.fn.datetimebox.parseOptions=function(_26){ +var t=$(_26); +return $.extend({},$.fn.datebox.parseOptions(_26),$.parser.parseOptions(_26,["timeSeparator","spinnerWidth",{showSeconds:"boolean"}])); +}; +$.fn.datetimebox.defaults=$.extend({},$.fn.datebox.defaults,{spinnerWidth:"100%",showSeconds:true,timeSeparator:":",keyHandler:{up:function(e){ +},down:function(e){ +},left:function(e){ +},right:function(e){ +},enter:function(e){ +_e(this); +},query:function(q,e){ +_b(this,q); +}},buttons:[{text:function(_27){ +return $(_27).datetimebox("options").currentText; +},handler:function(_28){ +var _29=$(_28).datetimebox("options"); +_d(_28,_29.formatter.call(_28,new Date())); +$(_28).datetimebox("hidePanel"); +}},{text:function(_2a){ +return $(_2a).datetimebox("options").okText; +},handler:function(_2b){ +_e(_2b); +}},{text:function(_2c){ +return $(_2c).datetimebox("options").closeText; +},handler:function(_2d){ +$(_2d).datetimebox("hidePanel"); +}}],formatter:function(_2e){ +var h=_2e.getHours(); +var M=_2e.getMinutes(); +var s=_2e.getSeconds(); +function _2f(_30){ +return (_30<10?"0":"")+_30; +}; +var _31=$(this).datetimebox("spinner").timespinner("options").separator; +var r=$.fn.datebox.defaults.formatter(_2e)+" "+_2f(h)+_31+_2f(M); +if($(this).datetimebox("options").showSeconds){ +r+=_31+_2f(s); +} +return r; +},parser:function(s){ +if($.trim(s)==""){ +return new Date(); +} +var dt=s.split(" "); +var d=$.fn.datebox.defaults.parser(dt[0]); +if(dt.length<2){ +return d; +} +var _32=$(this).datetimebox("spinner").timespinner("options").separator; +var tt=dt[1].split(_32); +var _33=parseInt(tt[0],10)||0; +var _34=parseInt(tt[1],10)||0; +var _35=parseInt(tt[2],10)||0; +return new Date(d.getFullYear(),d.getMonth(),d.getDate(),_33,_34,_35); +}}); +})(jQuery); + diff --git a/src/main/webapp/static/easyUI/plugins/jquery.datetimespinner.js b/src/main/webapp/static/easyUI/plugins/jquery.datetimespinner.js new file mode 100644 index 0000000000000000000000000000000000000000..e68d4a041c62a95da99b0135a4d70ea7270830cf --- /dev/null +++ b/src/main/webapp/static/easyUI/plugins/jquery.datetimespinner.js @@ -0,0 +1,61 @@ +/** + * jQuery EasyUI 1.5.2 + * + * Copyright (c) 2009-2017 www.jeasyui.com. All rights reserved. + * + * Licensed under the freeware license: http://www.jeasyui.com/license_freeware.php + * To use it on other terms please contact us: info@jeasyui.com + * + */ +(function($){ +function _1(_2){ +var _3=$.data(_2,"datetimespinner").options; +$(_2).addClass("datetimespinner-f").timespinner(_3); +}; +$.fn.datetimespinner=function(_4,_5){ +if(typeof _4=="string"){ +var _6=$.fn.datetimespinner.methods[_4]; +if(_6){ +return _6(this,_5); +}else{ +return this.timespinner(_4,_5); +} +} +_4=_4||{}; +return this.each(function(){ +var _7=$.data(this,"datetimespinner"); +if(_7){ +$.extend(_7.options,_4); +}else{ +$.data(this,"datetimespinner",{options:$.extend({},$.fn.datetimespinner.defaults,$.fn.datetimespinner.parseOptions(this),_4)}); +} +_1(this); +}); +}; +$.fn.datetimespinner.methods={options:function(jq){ +var _8=jq.timespinner("options"); +return $.extend($.data(jq[0],"datetimespinner").options,{width:_8.width,value:_8.value,originalValue:_8.originalValue,disabled:_8.disabled,readonly:_8.readonly}); +}}; +$.fn.datetimespinner.parseOptions=function(_9){ +return $.extend({},$.fn.timespinner.parseOptions(_9),$.parser.parseOptions(_9,[])); +}; +$.fn.datetimespinner.defaults=$.extend({},$.fn.timespinner.defaults,{formatter:function(_a){ +if(!_a){ +return ""; +} +return $.fn.datebox.defaults.formatter.call(this,_a)+" "+$.fn.timespinner.defaults.formatter.call(this,_a); +},parser:function(s){ +s=$.trim(s); +if(!s){ +return null; +} +var dt=s.split(" "); +var _b=$.fn.datebox.defaults.parser.call(this,dt[0]); +if(dt.length<2){ +return _b; +} +var _c=$.fn.timespinner.defaults.parser.call(this,dt[1]); +return new Date(_b.getFullYear(),_b.getMonth(),_b.getDate(),_c.getHours(),_c.getMinutes(),_c.getSeconds()); +},selections:[[0,2],[3,5],[6,10],[11,13],[14,16],[17,19]]}); +})(jQuery); + diff --git a/src/main/webapp/static/easyUI/plugins/jquery.dialog.js b/src/main/webapp/static/easyUI/plugins/jquery.dialog.js new file mode 100644 index 0000000000000000000000000000000000000000..8b5746eefb52625c2244fd29fb06212c6afcb270 --- /dev/null +++ b/src/main/webapp/static/easyUI/plugins/jquery.dialog.js @@ -0,0 +1,136 @@ +/** + * jQuery EasyUI 1.5.2 + * + * Copyright (c) 2009-2017 www.jeasyui.com. All rights reserved. + * + * Licensed under the freeware license: http://www.jeasyui.com/license_freeware.php + * To use it on other terms please contact us: info@jeasyui.com + * + */ +(function($){ +function _1(_2){ +var _3=$.data(_2,"dialog").options; +_3.inited=false; +$(_2).window($.extend({},_3,{onResize:function(w,h){ +if(_3.inited){ +_b(this); +_3.onResize.call(this,w,h); +} +}})); +var _4=$(_2).window("window"); +if(_3.toolbar){ +if($.isArray(_3.toolbar)){ +$(_2).siblings("div.dialog-toolbar").remove(); +var _5=$("
            ").appendTo(_4); +var tr=_5.find("tr"); +for(var i=0;i<_3.toolbar.length;i++){ +var _6=_3.toolbar[i]; +if(_6=="-"){ +$("
            ").appendTo(tr); +}else{ +var td=$("").appendTo(tr); +var _7=$("").appendTo(td); +_7[0].onclick=eval(_6.handler||function(){ +}); +_7.linkbutton($.extend({},_6,{plain:true})); +} +} +}else{ +$(_3.toolbar).addClass("dialog-toolbar").appendTo(_4); +$(_3.toolbar).show(); +} +}else{ +$(_2).siblings("div.dialog-toolbar").remove(); +} +if(_3.buttons){ +if($.isArray(_3.buttons)){ +$(_2).siblings("div.dialog-button").remove(); +var _8=$("
            ").appendTo(_4); +for(var i=0;i<_3.buttons.length;i++){ +var p=_3.buttons[i]; +var _9=$("").appendTo(_8); +if(p.handler){ +_9[0].onclick=p.handler; +} +_9.linkbutton(p); +} +}else{ +$(_3.buttons).addClass("dialog-button").appendTo(_4); +$(_3.buttons).show(); +} +}else{ +$(_2).siblings("div.dialog-button").remove(); +} +_3.inited=true; +var _a=_3.closed; +_4.show(); +$(_2).window("resize"); +if(_a){ +_4.hide(); +} +}; +function _b(_c,_d){ +var t=$(_c); +var _e=t.dialog("options"); +var _f=_e.noheader; +var tb=t.siblings(".dialog-toolbar"); +var bb=t.siblings(".dialog-button"); +tb.insertBefore(_c).css({borderTopWidth:(_f?1:0),top:(_f?tb.length:0)}); +bb.insertAfter(_c); +tb.add(bb)._outerWidth(t._outerWidth()).find(".easyui-fluid:visible").each(function(){ +$(this).triggerHandler("_resize"); +}); +var _10=tb._outerHeight()+bb._outerHeight(); +if(!isNaN(parseInt(_e.height))){ +t._outerHeight(t._outerHeight()-_10); +}else{ +var _11=t._size("min-height"); +if(_11){ +t._size("min-height",_11-_10); +} +var _12=t._size("max-height"); +if(_12){ +t._size("max-height",_12-_10); +} +} +var _13=$.data(_c,"window").shadow; +if(_13){ +var cc=t.panel("panel"); +_13.css({width:cc._outerWidth(),height:cc._outerHeight()}); +} +}; +$.fn.dialog=function(_14,_15){ +if(typeof _14=="string"){ +var _16=$.fn.dialog.methods[_14]; +if(_16){ +return _16(this,_15); +}else{ +return this.window(_14,_15); +} +} +_14=_14||{}; +return this.each(function(){ +var _17=$.data(this,"dialog"); +if(_17){ +$.extend(_17.options,_14); +}else{ +$.data(this,"dialog",{options:$.extend({},$.fn.dialog.defaults,$.fn.dialog.parseOptions(this),_14)}); +} +_1(this); +}); +}; +$.fn.dialog.methods={options:function(jq){ +var _18=$.data(jq[0],"dialog").options; +var _19=jq.panel("options"); +$.extend(_18,{width:_19.width,height:_19.height,left:_19.left,top:_19.top,closed:_19.closed,collapsed:_19.collapsed,minimized:_19.minimized,maximized:_19.maximized}); +return _18; +},dialog:function(jq){ +return jq.window("window"); +}}; +$.fn.dialog.parseOptions=function(_1a){ +var t=$(_1a); +return $.extend({},$.fn.window.parseOptions(_1a),$.parser.parseOptions(_1a,["toolbar","buttons"]),{toolbar:(t.children(".dialog-toolbar").length?t.children(".dialog-toolbar").removeClass("dialog-toolbar"):undefined),buttons:(t.children(".dialog-button").length?t.children(".dialog-button").removeClass("dialog-button"):undefined)}); +}; +$.fn.dialog.defaults=$.extend({},$.fn.window.defaults,{title:"New Dialog",collapsible:false,minimizable:false,maximizable:false,resizable:false,toolbar:null,buttons:null}); +})(jQuery); + diff --git a/src/main/webapp/static/easyUI/plugins/jquery.draggable.js b/src/main/webapp/static/easyUI/plugins/jquery.draggable.js new file mode 100644 index 0000000000000000000000000000000000000000..49fa5f65e64e03f9af89f44a15b500cc4affaa71 --- /dev/null +++ b/src/main/webapp/static/easyUI/plugins/jquery.draggable.js @@ -0,0 +1,304 @@ +/** + * jQuery EasyUI 1.5.2 + * + * Copyright (c) 2009-2017 www.jeasyui.com. All rights reserved. + * + * Licensed under the freeware license: http://www.jeasyui.com/license_freeware.php + * To use it on other terms please contact us: info@jeasyui.com + * + */ +(function($){ +function _1(e){ +var _2=$.data(e.data.target,"draggable"); +var _3=_2.options; +var _4=_2.proxy; +var _5=e.data; +var _6=_5.startLeft+e.pageX-_5.startX; +var _7=_5.startTop+e.pageY-_5.startY; +if(_4){ +if(_4.parent()[0]==document.body){ +if(_3.deltaX!=null&&_3.deltaX!=undefined){ +_6=e.pageX+_3.deltaX; +}else{ +_6=e.pageX-e.data.offsetWidth; +} +if(_3.deltaY!=null&&_3.deltaY!=undefined){ +_7=e.pageY+_3.deltaY; +}else{ +_7=e.pageY-e.data.offsetHeight; +} +}else{ +if(_3.deltaX!=null&&_3.deltaX!=undefined){ +_6+=e.data.offsetWidth+_3.deltaX; +} +if(_3.deltaY!=null&&_3.deltaY!=undefined){ +_7+=e.data.offsetHeight+_3.deltaY; +} +} +} +if(e.data.parent!=document.body){ +_6+=$(e.data.parent).scrollLeft(); +_7+=$(e.data.parent).scrollTop(); +} +if(_3.axis=="h"){ +_5.left=_6; +}else{ +if(_3.axis=="v"){ +_5.top=_7; +}else{ +_5.left=_6; +_5.top=_7; +} +} +}; +function _8(e){ +var _9=$.data(e.data.target,"draggable"); +var _a=_9.options; +var _b=_9.proxy; +if(!_b){ +_b=$(e.data.target); +} +_b.css({left:e.data.left,top:e.data.top}); +$("body").css("cursor",_a.cursor); +}; +function _c(e){ +if(!$.fn.draggable.isDragging){ +return false; +} +var _d=$.data(e.data.target,"draggable"); +var _e=_d.options; +var _f=$(".droppable:visible").filter(function(){ +return e.data.target!=this; +}).filter(function(){ +var _10=$.data(this,"droppable").options.accept; +if(_10){ +return $(_10).filter(function(){ +return this==e.data.target; +}).length>0; +}else{ +return true; +} +}); +_d.droppables=_f; +var _11=_d.proxy; +if(!_11){ +if(_e.proxy){ +if(_e.proxy=="clone"){ +_11=$(e.data.target).clone().insertAfter(e.data.target); +}else{ +_11=_e.proxy.call(e.data.target,e.data.target); +} +_d.proxy=_11; +}else{ +_11=$(e.data.target); +} +} +_11.css("position","absolute"); +_1(e); +_8(e); +_e.onStartDrag.call(e.data.target,e); +return false; +}; +function _12(e){ +if(!$.fn.draggable.isDragging){ +return false; +} +var _13=$.data(e.data.target,"draggable"); +_1(e); +if(_13.options.onDrag.call(e.data.target,e)!=false){ +_8(e); +} +var _14=e.data.target; +_13.droppables.each(function(){ +var _15=$(this); +if(_15.droppable("options").disabled){ +return; +} +var p2=_15.offset(); +if(e.pageX>p2.left&&e.pageXp2.top&&e.pageYp2.left&&e.pageXp2.top&&e.pageY_2b.options.edge; +}; +}); +}; +$.fn.draggable.methods={options:function(jq){ +return $.data(jq[0],"draggable").options; +},proxy:function(jq){ +return $.data(jq[0],"draggable").proxy; +},enable:function(jq){ +return jq.each(function(){ +$(this).draggable({disabled:false}); +}); +},disable:function(jq){ +return jq.each(function(){ +$(this).draggable({disabled:true}); +}); +}}; +$.fn.draggable.parseOptions=function(_30){ +var t=$(_30); +return $.extend({},$.parser.parseOptions(_30,["cursor","handle","axis",{"revert":"boolean","deltaX":"number","deltaY":"number","edge":"number","delay":"number"}]),{disabled:(t.attr("disabled")?true:undefined)}); +}; +$.fn.draggable.defaults={proxy:null,revert:false,cursor:"move",deltaX:null,deltaY:null,handle:null,disabled:false,edge:0,axis:null,delay:100,onBeforeDrag:function(e){ +},onStartDrag:function(e){ +},onDrag:function(e){ +},onStopDrag:function(e){ +}}; +$.fn.draggable.isDragging=false; +})(jQuery); + diff --git a/src/main/webapp/static/easyUI/plugins/jquery.droppable.js b/src/main/webapp/static/easyUI/plugins/jquery.droppable.js new file mode 100644 index 0000000000000000000000000000000000000000..1d42663607b2ebc355a029a2292efa04a2b42b71 --- /dev/null +++ b/src/main/webapp/static/easyUI/plugins/jquery.droppable.js @@ -0,0 +1,62 @@ +/** + * jQuery EasyUI 1.5.2 + * + * Copyright (c) 2009-2017 www.jeasyui.com. All rights reserved. + * + * Licensed under the freeware license: http://www.jeasyui.com/license_freeware.php + * To use it on other terms please contact us: info@jeasyui.com + * + */ +(function($){ +function _1(_2){ +$(_2).addClass("droppable"); +$(_2).bind("_dragenter",function(e,_3){ +$.data(_2,"droppable").options.onDragEnter.apply(_2,[e,_3]); +}); +$(_2).bind("_dragleave",function(e,_4){ +$.data(_2,"droppable").options.onDragLeave.apply(_2,[e,_4]); +}); +$(_2).bind("_dragover",function(e,_5){ +$.data(_2,"droppable").options.onDragOver.apply(_2,[e,_5]); +}); +$(_2).bind("_drop",function(e,_6){ +$.data(_2,"droppable").options.onDrop.apply(_2,[e,_6]); +}); +}; +$.fn.droppable=function(_7,_8){ +if(typeof _7=="string"){ +return $.fn.droppable.methods[_7](this,_8); +} +_7=_7||{}; +return this.each(function(){ +var _9=$.data(this,"droppable"); +if(_9){ +$.extend(_9.options,_7); +}else{ +_1(this); +$.data(this,"droppable",{options:$.extend({},$.fn.droppable.defaults,$.fn.droppable.parseOptions(this),_7)}); +} +}); +}; +$.fn.droppable.methods={options:function(jq){ +return $.data(jq[0],"droppable").options; +},enable:function(jq){ +return jq.each(function(){ +$(this).droppable({disabled:false}); +}); +},disable:function(jq){ +return jq.each(function(){ +$(this).droppable({disabled:true}); +}); +}}; +$.fn.droppable.parseOptions=function(_a){ +var t=$(_a); +return $.extend({},$.parser.parseOptions(_a,["accept"]),{disabled:(t.attr("disabled")?true:undefined)}); +}; +$.fn.droppable.defaults={accept:null,disabled:false,onDragEnter:function(e,_b){ +},onDragOver:function(e,_c){ +},onDragLeave:function(e,_d){ +},onDrop:function(e,_e){ +}}; +})(jQuery); + diff --git a/src/main/webapp/static/easyUI/plugins/jquery.filebox.js b/src/main/webapp/static/easyUI/plugins/jquery.filebox.js new file mode 100644 index 0000000000000000000000000000000000000000..35022b853e5af8523abb6065e3e7cee7f501a4c7 --- /dev/null +++ b/src/main/webapp/static/easyUI/plugins/jquery.filebox.js @@ -0,0 +1,98 @@ +/** + * jQuery EasyUI 1.5.2 + * + * Copyright (c) 2009-2017 www.jeasyui.com. All rights reserved. + * + * Licensed under the freeware license: http://www.jeasyui.com/license_freeware.php + * To use it on other terms please contact us: info@jeasyui.com + * + */ +(function($){ +var _1=0; +function _2(_3){ +var _4=$.data(_3,"filebox"); +var _5=_4.options; +_5.fileboxId="filebox_file_id_"+(++_1); +$(_3).addClass("filebox-f").textbox(_5); +$(_3).textbox("textbox").attr("readonly","readonly"); +_4.filebox=$(_3).next().addClass("filebox"); +var _6=_7(_3); +var _8=$(_3).filebox("button"); +if(_8.length){ +$("").appendTo(_8); +if(_8.linkbutton("options").disabled){ +_6.attr("disabled","disabled"); +}else{ +_6.removeAttr("disabled"); +} +} +}; +function _7(_9){ +var _a=$.data(_9,"filebox"); +var _b=_a.options; +_a.filebox.find(".textbox-value").remove(); +_b.oldValue=""; +var _c=$("").appendTo(_a.filebox); +_c.attr("id",_b.fileboxId).attr("name",$(_9).attr("textboxName")||""); +_c.attr("accept",_b.accept); +_c.attr("capture",_b.capture); +if(_b.multiple){ +_c.attr("multiple","multiple"); +} +_c.change(function(){ +var _d=this.value; +if(this.files){ +_d=$.map(this.files,function(_e){ +return _e.name; +}).join(_b.separator); +} +$(_9).filebox("setText",_d); +_b.onChange.call(_9,_d,_b.oldValue); +_b.oldValue=_d; +}); +return _c; +}; +$.fn.filebox=function(_f,_10){ +if(typeof _f=="string"){ +var _11=$.fn.filebox.methods[_f]; +if(_11){ +return _11(this,_10); +}else{ +return this.textbox(_f,_10); +} +} +_f=_f||{}; +return this.each(function(){ +var _12=$.data(this,"filebox"); +if(_12){ +$.extend(_12.options,_f); +}else{ +$.data(this,"filebox",{options:$.extend({},$.fn.filebox.defaults,$.fn.filebox.parseOptions(this),_f)}); +} +_2(this); +}); +}; +$.fn.filebox.methods={options:function(jq){ +var _13=jq.textbox("options"); +return $.extend($.data(jq[0],"filebox").options,{width:_13.width,value:_13.value,originalValue:_13.originalValue,disabled:_13.disabled,readonly:_13.readonly}); +},clear:function(jq){ +return jq.each(function(){ +$(this).textbox("clear"); +_7(this); +}); +},reset:function(jq){ +return jq.each(function(){ +$(this).filebox("clear"); +}); +},setValue:function(jq){ +return jq; +},setValues:function(jq){ +return jq; +}}; +$.fn.filebox.parseOptions=function(_14){ +var t=$(_14); +return $.extend({},$.fn.textbox.parseOptions(_14),$.parser.parseOptions(_14,["accept","capture","separator"]),{multiple:(t.attr("multiple")?true:undefined)}); +}; +$.fn.filebox.defaults=$.extend({},$.fn.textbox.defaults,{buttonIcon:null,buttonText:"Choose File",buttonAlign:"right",inputEvents:{},accept:"",capture:"",separator:",",multiple:false}); +})(jQuery); + diff --git a/src/main/webapp/static/easyUI/plugins/jquery.form.js b/src/main/webapp/static/easyUI/plugins/jquery.form.js new file mode 100644 index 0000000000000000000000000000000000000000..b86478fafb7aafb71791d37e4399d633ad009dd6 --- /dev/null +++ b/src/main/webapp/static/easyUI/plugins/jquery.form.js @@ -0,0 +1,410 @@ +/** + * jQuery EasyUI 1.5.2 + * + * Copyright (c) 2009-2017 www.jeasyui.com. All rights reserved. + * + * Licensed under the freeware license: http://www.jeasyui.com/license_freeware.php + * To use it on other terms please contact us: info@jeasyui.com + * + */ +(function($){ +function _1(_2,_3){ +var _4=$.data(_2,"form").options; +$.extend(_4,_3||{}); +var _5=$.extend({},_4.queryParams); +if(_4.onSubmit.call(_2,_5)==false){ +return; +} +var _6=$(_2).find(".textbox-text:focus"); +_6.triggerHandler("blur"); +_6.focus(); +var _7=null; +if(_4.dirty){ +var ff=[]; +$.map(_4.dirtyFields,function(f){ +if($(f).hasClass("textbox-f")){ +$(f).next().find(".textbox-value").each(function(){ +ff.push(this); +}); +}else{ +ff.push(f); +} +}); +_7=$(_2).find("input[name]:enabled,textarea[name]:enabled,select[name]:enabled").filter(function(){ +return $.inArray(this,ff)==-1; +}); +_7.attr("disabled","disabled"); +} +if(_4.ajax){ +if(_4.iframe){ +_8(_2,_5); +}else{ +if(window.FormData!==undefined){ +_9(_2,_5); +}else{ +_8(_2,_5); +} +} +}else{ +$(_2).submit(); +} +if(_4.dirty){ +_7.removeAttr("disabled"); +} +}; +function _8(_a,_b){ +var _c=$.data(_a,"form").options; +var _d="easyui_frame_"+(new Date().getTime()); +var _e=$("").appendTo("body"); +_e.attr("src",window.ActiveXObject?"javascript:false":"about:blank"); +_e.css({position:"absolute",top:-1000,left:-1000}); +_e.bind("load",cb); +_f(_b); +function _f(_10){ +var _11=$(_a); +if(_c.url){ +_11.attr("action",_c.url); +} +var t=_11.attr("target"),a=_11.attr("action"); +_11.attr("target",_d); +var _12=$(); +try{ +for(var n in _10){ +var _13=$("").val(_10[n]).appendTo(_11); +_12=_12.add(_13); +} +_14(); +_11[0].submit(); +} +finally{ +_11.attr("action",a); +t?_11.attr("target",t):_11.removeAttr("target"); +_12.remove(); +} +}; +function _14(){ +var f=$("#"+_d); +if(!f.length){ +return; +} +try{ +var s=f.contents()[0].readyState; +if(s&&s.toLowerCase()=="uninitialized"){ +setTimeout(_14,100); +} +} +catch(e){ +cb(); +} +}; +var _15=10; +function cb(){ +var f=$("#"+_d); +if(!f.length){ +return; +} +f.unbind(); +var _16=""; +try{ +var _17=f.contents().find("body"); +_16=_17.html(); +if(_16==""){ +if(--_15){ +setTimeout(cb,100); +return; +} +} +var ta=_17.find(">textarea"); +if(ta.length){ +_16=ta.val(); +}else{ +var pre=_17.find(">pre"); +if(pre.length){ +_16=pre.html(); +} +} +} +catch(e){ +} +_c.success.call(_a,_16); +setTimeout(function(){ +f.unbind(); +f.remove(); +},100); +}; +}; +function _9(_18,_19){ +var _1a=$.data(_18,"form").options; +var _1b=new FormData($(_18)[0]); +for(var _1c in _19){ +_1b.append(_1c,_19[_1c]); +} +$.ajax({url:_1a.url,type:"post",xhr:function(){ +var xhr=$.ajaxSettings.xhr(); +if(xhr.upload){ +xhr.upload.addEventListener("progress",function(e){ +if(e.lengthComputable){ +var _1d=e.total; +var _1e=e.loaded||e.position; +var _1f=Math.ceil(_1e*100/_1d); +_1a.onProgress.call(_18,_1f); +} +},false); +} +return xhr; +},data:_1b,dataType:"html",cache:false,contentType:false,processData:false,complete:function(res){ +_1a.success.call(_18,res.responseText); +}}); +}; +function _20(_21,_22){ +var _23=$.data(_21,"form").options; +if(typeof _22=="string"){ +var _24={}; +if(_23.onBeforeLoad.call(_21,_24)==false){ +return; +} +$.ajax({url:_22,data:_24,dataType:"json",success:function(_25){ +_26(_25); +},error:function(){ +_23.onLoadError.apply(_21,arguments); +}}); +}else{ +_26(_22); +} +function _26(_27){ +var _28=$(_21); +for(var _29 in _27){ +var val=_27[_29]; +if(!_2a(_29,val)){ +if(!_2b(_29,val)){ +_28.find("input[name=\""+_29+"\"]").val(val); +_28.find("textarea[name=\""+_29+"\"]").val(val); +_28.find("select[name=\""+_29+"\"]").val(val); +} +} +} +_23.onLoadSuccess.call(_21,_27); +_28.form("validate"); +}; +function _2a(_2c,val){ +var cc=$(_21).find("[switchbuttonName=\""+_2c+"\"]"); +if(cc.length){ +cc.switchbutton("uncheck"); +cc.each(function(){ +if(_2d($(this).switchbutton("options").value,val)){ +$(this).switchbutton("check"); +} +}); +return true; +} +cc=$(_21).find("input[name=\""+_2c+"\"][type=radio], input[name=\""+_2c+"\"][type=checkbox]"); +if(cc.length){ +cc._propAttr("checked",false); +cc.each(function(){ +if(_2d($(this).val(),val)){ +$(this)._propAttr("checked",true); +} +}); +return true; +} +return false; +}; +function _2d(v,val){ +if(v==String(val)||$.inArray(v,$.isArray(val)?val:[val])>=0){ +return true; +}else{ +return false; +} +}; +function _2b(_2e,val){ +var _2f=$(_21).find("[textboxName=\""+_2e+"\"],[sliderName=\""+_2e+"\"]"); +if(_2f.length){ +for(var i=0;i<_23.fieldTypes.length;i++){ +var _30=_23.fieldTypes[i]; +var _31=_2f.data(_30); +if(_31){ +if(_31.options.multiple||_31.options.range){ +_2f[_30]("setValues",val); +}else{ +_2f[_30]("setValue",val); +} +return true; +} +} +} +return false; +}; +}; +function _32(_33){ +$("input,select,textarea",_33).each(function(){ +if($(this).hasClass("textbox-value")){ +return; +} +var t=this.type,tag=this.tagName.toLowerCase(); +if(t=="text"||t=="hidden"||t=="password"||tag=="textarea"){ +this.value=""; +}else{ +if(t=="file"){ +var _34=$(this); +if(!_34.hasClass("textbox-value")){ +var _35=_34.clone().val(""); +_35.insertAfter(_34); +if(_34.data("validatebox")){ +_34.validatebox("destroy"); +_35.validatebox(); +}else{ +_34.remove(); +} +} +}else{ +if(t=="checkbox"||t=="radio"){ +this.checked=false; +}else{ +if(tag=="select"){ +this.selectedIndex=-1; +} +} +} +} +}); +var tmp=$(); +var _36=$(_33); +var _37=$.data(_33,"form").options; +for(var i=0;i<_37.fieldTypes.length;i++){ +var _38=_37.fieldTypes[i]; +var _39=_36.find("."+_38+"-f").not(tmp); +if(_39.length&&_39[_38]){ +_39[_38]("clear"); +tmp=tmp.add(_39); +} +} +_36.form("validate"); +}; +function _3a(_3b){ +_3b.reset(); +var _3c=$(_3b); +var _3d=$.data(_3b,"form").options; +for(var i=_3d.fieldTypes.length-1;i>=0;i--){ +var _3e=_3d.fieldTypes[i]; +var _3f=_3c.find("."+_3e+"-f"); +if(_3f.length&&_3f[_3e]){ +_3f[_3e]("reset"); +} +} +_3c.form("validate"); +}; +function _40(_41){ +var _42=$.data(_41,"form").options; +$(_41).unbind(".form"); +if(_42.ajax){ +$(_41).bind("submit.form",function(){ +setTimeout(function(){ +_1(_41,_42); +},0); +return false; +}); +} +$(_41).bind("_change.form",function(e,t){ +if($.inArray(t,_42.dirtyFields)==-1){ +_42.dirtyFields.push(t); +} +_42.onChange.call(this,t); +}).bind("change.form",function(e){ +var t=e.target; +if(!$(t).hasClass("textbox-text")){ +if($.inArray(t,_42.dirtyFields)==-1){ +_42.dirtyFields.push(t); +} +_42.onChange.call(this,t); +} +}); +_43(_41,_42.novalidate); +}; +function _44(_45,_46){ +_46=_46||{}; +var _47=$.data(_45,"form"); +if(_47){ +$.extend(_47.options,_46); +}else{ +$.data(_45,"form",{options:$.extend({},$.fn.form.defaults,$.fn.form.parseOptions(_45),_46)}); +} +}; +function _48(_49){ +if($.fn.validatebox){ +var t=$(_49); +t.find(".validatebox-text:not(:disabled)").validatebox("validate"); +var _4a=t.find(".validatebox-invalid"); +_4a.filter(":not(:disabled):first").focus(); +return _4a.length==0; +} +return true; +}; +function _43(_4b,_4c){ +var _4d=$.data(_4b,"form").options; +_4d.novalidate=_4c; +$(_4b).find(".validatebox-text:not(:disabled)").validatebox(_4c?"disableValidation":"enableValidation"); +}; +$.fn.form=function(_4e,_4f){ +if(typeof _4e=="string"){ +this.each(function(){ +_44(this); +}); +return $.fn.form.methods[_4e](this,_4f); +} +return this.each(function(){ +_44(this,_4e); +_40(this); +}); +}; +$.fn.form.methods={options:function(jq){ +return $.data(jq[0],"form").options; +},submit:function(jq,_50){ +return jq.each(function(){ +_1(this,_50); +}); +},load:function(jq,_51){ +return jq.each(function(){ +_20(this,_51); +}); +},clear:function(jq){ +return jq.each(function(){ +_32(this); +}); +},reset:function(jq){ +return jq.each(function(){ +_3a(this); +}); +},validate:function(jq){ +return _48(jq[0]); +},disableValidation:function(jq){ +return jq.each(function(){ +_43(this,true); +}); +},enableValidation:function(jq){ +return jq.each(function(){ +_43(this,false); +}); +},resetValidation:function(jq){ +return jq.each(function(){ +$(this).find(".validatebox-text:not(:disabled)").validatebox("resetValidation"); +}); +},resetDirty:function(jq){ +return jq.each(function(){ +$(this).form("options").dirtyFields=[]; +}); +}}; +$.fn.form.parseOptions=function(_52){ +var t=$(_52); +return $.extend({},$.parser.parseOptions(_52,[{ajax:"boolean",dirty:"boolean"}]),{url:(t.attr("action")?t.attr("action"):undefined)}); +}; +$.fn.form.defaults={fieldTypes:["combobox","combotree","combogrid","combotreegrid","datetimebox","datebox","combo","datetimespinner","timespinner","numberspinner","spinner","slider","searchbox","numberbox","passwordbox","filebox","textbox","switchbutton"],novalidate:false,ajax:true,iframe:true,dirty:false,dirtyFields:[],url:null,queryParams:{},onSubmit:function(_53){ +return $(this).form("validate"); +},onProgress:function(_54){ +},success:function(_55){ +},onBeforeLoad:function(_56){ +},onLoadSuccess:function(_57){ +},onLoadError:function(){ +},onChange:function(_58){ +}}; +})(jQuery); + diff --git a/src/main/webapp/static/easyUI/plugins/jquery.layout.js b/src/main/webapp/static/easyUI/plugins/jquery.layout.js new file mode 100644 index 0000000000000000000000000000000000000000..d4fd2f675833fef3bfc623cb779c9ff56c6f9345 --- /dev/null +++ b/src/main/webapp/static/easyUI/plugins/jquery.layout.js @@ -0,0 +1,518 @@ +/** + * jQuery EasyUI 1.5.2 + * + * Copyright (c) 2009-2017 www.jeasyui.com. All rights reserved. + * + * Licensed under the freeware license: http://www.jeasyui.com/license_freeware.php + * To use it on other terms please contact us: info@jeasyui.com + * + */ +(function($){ +var _1=false; +function _2(_3,_4){ +var _5=$.data(_3,"layout"); +var _6=_5.options; +var _7=_5.panels; +var cc=$(_3); +if(_4){ +$.extend(_6,{width:_4.width,height:_4.height}); +} +if(_3.tagName.toLowerCase()=="body"){ +cc._size("fit"); +}else{ +cc._size(_6); +} +var _8={top:0,left:0,width:cc.width(),height:cc.height()}; +_9(_a(_7.expandNorth)?_7.expandNorth:_7.north,"n"); +_9(_a(_7.expandSouth)?_7.expandSouth:_7.south,"s"); +_b(_a(_7.expandEast)?_7.expandEast:_7.east,"e"); +_b(_a(_7.expandWest)?_7.expandWest:_7.west,"w"); +_7.center.panel("resize",_8); +function _9(pp,_c){ +if(!pp.length||!_a(pp)){ +return; +} +var _d=pp.panel("options"); +pp.panel("resize",{width:cc.width(),height:_d.height}); +var _e=pp.panel("panel").outerHeight(); +pp.panel("move",{left:0,top:(_c=="n"?0:cc.height()-_e)}); +_8.height-=_e; +if(_c=="n"){ +_8.top+=_e; +if(!_d.split&&_d.border){ +_8.top--; +} +} +if(!_d.split&&_d.border){ +_8.height++; +} +}; +function _b(pp,_f){ +if(!pp.length||!_a(pp)){ +return; +} +var _10=pp.panel("options"); +pp.panel("resize",{width:_10.width,height:_8.height}); +var _11=pp.panel("panel").outerWidth(); +pp.panel("move",{left:(_f=="e"?cc.width()-_11:0),top:_8.top}); +_8.width-=_11; +if(_f=="w"){ +_8.left+=_11; +if(!_10.split&&_10.border){ +_8.left--; +} +} +if(!_10.split&&_10.border){ +_8.width++; +} +}; +}; +function _12(_13){ +var cc=$(_13); +cc.addClass("layout"); +function _14(el){ +var _15=$.fn.layout.parsePanelOptions(el); +if("north,south,east,west,center".indexOf(_15.region)>=0){ +_19(_13,_15,el); +} +}; +var _16=cc.layout("options"); +var _17=_16.onAdd; +_16.onAdd=function(){ +}; +cc.find(">div,>form>div").each(function(){ +_14(this); +}); +_16.onAdd=_17; +cc.append("
            "); +cc.bind("_resize",function(e,_18){ +if($(this).hasClass("easyui-fluid")||_18){ +_2(_13); +} +return false; +}); +}; +function _19(_1a,_1b,el){ +_1b.region=_1b.region||"center"; +var _1c=$.data(_1a,"layout").panels; +var cc=$(_1a); +var dir=_1b.region; +if(_1c[dir].length){ +return; +} +var pp=$(el); +if(!pp.length){ +pp=$("
            ").appendTo(cc); +} +var _1d=$.extend({},$.fn.layout.paneldefaults,{width:(pp.length?parseInt(pp[0].style.width)||pp.outerWidth():"auto"),height:(pp.length?parseInt(pp[0].style.height)||pp.outerHeight():"auto"),doSize:false,collapsible:true,onOpen:function(){ +var _1e=$(this).panel("header").children("div.panel-tool"); +_1e.children("a.panel-tool-collapse").hide(); +var _1f={north:"up",south:"down",east:"right",west:"left"}; +if(!_1f[dir]){ +return; +} +var _20="layout-button-"+_1f[dir]; +var t=_1e.children("a."+_20); +if(!t.length){ +t=$("").addClass(_20).appendTo(_1e); +t.bind("click",{dir:dir},function(e){ +_39(_1a,e.data.dir); +return false; +}); +} +$(this).panel("options").collapsible?t.show():t.hide(); +}},_1b,{cls:((_1b.cls||"")+" layout-panel layout-panel-"+dir),bodyCls:((_1b.bodyCls||"")+" layout-body")}); +pp.panel(_1d); +_1c[dir]=pp; +var _21={north:"s",south:"n",east:"w",west:"e"}; +var _22=pp.panel("panel"); +if(pp.panel("options").split){ +_22.addClass("layout-split-"+dir); +} +_22.resizable($.extend({},{handles:(_21[dir]||""),disabled:(!pp.panel("options").split),onStartResize:function(e){ +_1=true; +if(dir=="north"||dir=="south"){ +var _23=$(">div.layout-split-proxy-v",_1a); +}else{ +var _23=$(">div.layout-split-proxy-h",_1a); +} +var top=0,_24=0,_25=0,_26=0; +var pos={display:"block"}; +if(dir=="north"){ +pos.top=parseInt(_22.css("top"))+_22.outerHeight()-_23.height(); +pos.left=parseInt(_22.css("left")); +pos.width=_22.outerWidth(); +pos.height=_23.height(); +}else{ +if(dir=="south"){ +pos.top=parseInt(_22.css("top")); +pos.left=parseInt(_22.css("left")); +pos.width=_22.outerWidth(); +pos.height=_23.height(); +}else{ +if(dir=="east"){ +pos.top=parseInt(_22.css("top"))||0; +pos.left=parseInt(_22.css("left"))||0; +pos.width=_23.width(); +pos.height=_22.outerHeight(); +}else{ +if(dir=="west"){ +pos.top=parseInt(_22.css("top"))||0; +pos.left=_22.outerWidth()-_23.width(); +pos.width=_23.width(); +pos.height=_22.outerHeight(); +} +} +} +} +_23.css(pos); +$("
            ").css({left:0,top:0,width:cc.width(),height:cc.height()}).appendTo(cc); +},onResize:function(e){ +if(dir=="north"||dir=="south"){ +var _27=_28(this); +$(this).resizable("options").maxHeight=_27; +var _29=$(">div.layout-split-proxy-v",_1a); +var top=dir=="north"?e.data.height-_29.height():$(_1a).height()-e.data.height; +_29.css("top",top); +}else{ +var _2a=_28(this); +$(this).resizable("options").maxWidth=_2a; +var _29=$(">div.layout-split-proxy-h",_1a); +var _2b=dir=="west"?e.data.width-_29.width():$(_1a).width()-e.data.width; +_29.css("left",_2b); +} +return false; +},onStopResize:function(e){ +cc.children("div.layout-split-proxy-v,div.layout-split-proxy-h").hide(); +pp.panel("resize",e.data); +_2(_1a); +_1=false; +cc.find(">div.layout-mask").remove(); +}},_1b)); +cc.layout("options").onAdd.call(_1a,dir); +function _28(p){ +var _2c="expand"+dir.substring(0,1).toUpperCase()+dir.substring(1); +var _2d=_1c["center"]; +var _2e=(dir=="north"||dir=="south")?"minHeight":"minWidth"; +var _2f=(dir=="north"||dir=="south")?"maxHeight":"maxWidth"; +var _30=(dir=="north"||dir=="south")?"_outerHeight":"_outerWidth"; +var _31=$.parser.parseValue(_2f,_1c[dir].panel("options")[_2f],$(_1a)); +var _32=$.parser.parseValue(_2e,_2d.panel("options")[_2e],$(_1a)); +var _33=_2d.panel("panel")[_30]()-_32; +if(_a(_1c[_2c])){ +_33+=_1c[_2c][_30]()-1; +}else{ +_33+=$(p)[_30](); +} +if(_33>_31){ +_33=_31; +} +return _33; +}; +}; +function _34(_35,_36){ +var _37=$.data(_35,"layout").panels; +if(_37[_36].length){ +_37[_36].panel("destroy"); +_37[_36]=$(); +var _38="expand"+_36.substring(0,1).toUpperCase()+_36.substring(1); +if(_37[_38]){ +_37[_38].panel("destroy"); +_37[_38]=undefined; +} +$(_35).layout("options").onRemove.call(_35,_36); +} +}; +function _39(_3a,_3b,_3c){ +if(_3c==undefined){ +_3c="normal"; +} +var _3d=$.data(_3a,"layout").panels; +var p=_3d[_3b]; +var _3e=p.panel("options"); +if(_3e.onBeforeCollapse.call(p)==false){ +return; +} +var _3f="expand"+_3b.substring(0,1).toUpperCase()+_3b.substring(1); +if(!_3d[_3f]){ +_3d[_3f]=_40(_3b); +var ep=_3d[_3f].panel("panel"); +if(!_3e.expandMode){ +ep.css("cursor","default"); +}else{ +ep.bind("click",function(){ +if(_3e.expandMode=="dock"){ +_4f(_3a,_3b); +}else{ +p.panel("expand",false).panel("open"); +var _41=_42(); +p.panel("resize",_41.collapse); +p.panel("panel").animate(_41.expand,function(){ +$(this).unbind(".layout").bind("mouseleave.layout",{region:_3b},function(e){ +if(_1==true){ +return; +} +if($("body>div.combo-p>div.combo-panel:visible").length){ +return; +} +_39(_3a,e.data.region); +}); +$(_3a).layout("options").onExpand.call(_3a,_3b); +}); +} +return false; +}); +} +} +var _43=_42(); +if(!_a(_3d[_3f])){ +_3d.center.panel("resize",_43.resizeC); +} +p.panel("panel").animate(_43.collapse,_3c,function(){ +p.panel("collapse",false).panel("close"); +_3d[_3f].panel("open").panel("resize",_43.expandP); +$(this).unbind(".layout"); +$(_3a).layout("options").onCollapse.call(_3a,_3b); +}); +function _40(dir){ +var _44={"east":"left","west":"right","north":"down","south":"up"}; +var _45=(_3e.region=="north"||_3e.region=="south"); +var _46="layout-button-"+_44[dir]; +var p=$("
            ").appendTo(_3a); +p.panel($.extend({},$.fn.layout.paneldefaults,{cls:("layout-expand layout-expand-"+dir),title:" ",titleDirection:_3e.titleDirection,iconCls:(_3e.hideCollapsedContent?null:_3e.iconCls),closed:true,minWidth:0,minHeight:0,doSize:false,region:_3e.region,collapsedSize:_3e.collapsedSize,noheader:(!_45&&_3e.hideExpandTool),tools:((_45&&_3e.hideExpandTool)?null:[{iconCls:_46,handler:function(){ +_4f(_3a,_3b); +return false; +}}]),onResize:function(){ +var _47=$(this).children(".layout-expand-title"); +if(_47.length){ +_47._outerWidth($(this).height()); +var _48=($(this).width()-Math.min(_47._outerWidth(),_47._outerHeight()))/2; +var top=Math.max(_47._outerWidth(),_47._outerHeight()); +if(_47.hasClass("layout-expand-title-down")){ +_48+=Math.min(_47._outerWidth(),_47._outerHeight()); +top=0; +} +_47.css({left:(_48+"px"),top:(top+"px")}); +} +}})); +if(!_3e.hideCollapsedContent){ +var _49=typeof _3e.collapsedContent=="function"?_3e.collapsedContent.call(p[0],_3e.title):_3e.collapsedContent; +_45?p.panel("setTitle",_49):p.html(_49); +} +p.panel("panel").hover(function(){ +$(this).addClass("layout-expand-over"); +},function(){ +$(this).removeClass("layout-expand-over"); +}); +return p; +}; +function _42(){ +var cc=$(_3a); +var _4a=_3d.center.panel("options"); +var _4b=_3e.collapsedSize; +if(_3b=="east"){ +var _4c=p.panel("panel")._outerWidth(); +var _4d=_4a.width+_4c-_4b; +if(_3e.split||!_3e.border){ +_4d++; +} +return {resizeC:{width:_4d},expand:{left:cc.width()-_4c},expandP:{top:_4a.top,left:cc.width()-_4b,width:_4b,height:_4a.height},collapse:{left:cc.width(),top:_4a.top,height:_4a.height}}; +}else{ +if(_3b=="west"){ +var _4c=p.panel("panel")._outerWidth(); +var _4d=_4a.width+_4c-_4b; +if(_3e.split||!_3e.border){ +_4d++; +} +return {resizeC:{width:_4d,left:_4b-1},expand:{left:0},expandP:{left:0,top:_4a.top,width:_4b,height:_4a.height},collapse:{left:-_4c,top:_4a.top,height:_4a.height}}; +}else{ +if(_3b=="north"){ +var _4e=p.panel("panel")._outerHeight(); +var hh=_4a.height; +if(!_a(_3d.expandNorth)){ +hh+=_4e-_4b+((_3e.split||!_3e.border)?1:0); +} +_3d.east.add(_3d.west).add(_3d.expandEast).add(_3d.expandWest).panel("resize",{top:_4b-1,height:hh}); +return {resizeC:{top:_4b-1,height:hh},expand:{top:0},expandP:{top:0,left:0,width:cc.width(),height:_4b},collapse:{top:-_4e,width:cc.width()}}; +}else{ +if(_3b=="south"){ +var _4e=p.panel("panel")._outerHeight(); +var hh=_4a.height; +if(!_a(_3d.expandSouth)){ +hh+=_4e-_4b+((_3e.split||!_3e.border)?1:0); +} +_3d.east.add(_3d.west).add(_3d.expandEast).add(_3d.expandWest).panel("resize",{height:hh}); +return {resizeC:{height:hh},expand:{top:cc.height()-_4e},expandP:{top:cc.height()-_4b,left:0,width:cc.width(),height:_4b},collapse:{top:cc.height(),width:cc.width()}}; +} +} +} +} +}; +}; +function _4f(_50,_51){ +var _52=$.data(_50,"layout").panels; +var p=_52[_51]; +var _53=p.panel("options"); +if(_53.onBeforeExpand.call(p)==false){ +return; +} +var _54="expand"+_51.substring(0,1).toUpperCase()+_51.substring(1); +if(_52[_54]){ +_52[_54].panel("close"); +p.panel("panel").stop(true,true); +p.panel("expand",false).panel("open"); +var _55=_56(); +p.panel("resize",_55.collapse); +p.panel("panel").animate(_55.expand,function(){ +_2(_50); +$(_50).layout("options").onExpand.call(_50,_51); +}); +} +function _56(){ +var cc=$(_50); +var _57=_52.center.panel("options"); +if(_51=="east"&&_52.expandEast){ +return {collapse:{left:cc.width(),top:_57.top,height:_57.height},expand:{left:cc.width()-p.panel("panel")._outerWidth()}}; +}else{ +if(_51=="west"&&_52.expandWest){ +return {collapse:{left:-p.panel("panel")._outerWidth(),top:_57.top,height:_57.height},expand:{left:0}}; +}else{ +if(_51=="north"&&_52.expandNorth){ +return {collapse:{top:-p.panel("panel")._outerHeight(),width:cc.width()},expand:{top:0}}; +}else{ +if(_51=="south"&&_52.expandSouth){ +return {collapse:{top:cc.height(),width:cc.width()},expand:{top:cc.height()-p.panel("panel")._outerHeight()}}; +} +} +} +} +}; +}; +function _a(pp){ +if(!pp){ +return false; +} +if(pp.length){ +return pp.panel("panel").is(":visible"); +}else{ +return false; +} +}; +function _58(_59){ +var _5a=$.data(_59,"layout"); +var _5b=_5a.options; +var _5c=_5a.panels; +var _5d=_5b.onCollapse; +_5b.onCollapse=function(){ +}; +_5e("east"); +_5e("west"); +_5e("north"); +_5e("south"); +_5b.onCollapse=_5d; +function _5e(_5f){ +var p=_5c[_5f]; +if(p.length&&p.panel("options").collapsed){ +_39(_59,_5f,0); +} +}; +}; +function _60(_61,_62,_63){ +var p=$(_61).layout("panel",_62); +p.panel("options").split=_63; +var cls="layout-split-"+_62; +var _64=p.panel("panel").removeClass(cls); +if(_63){ +_64.addClass(cls); +} +_64.resizable({disabled:(!_63)}); +_2(_61); +}; +$.fn.layout=function(_65,_66){ +if(typeof _65=="string"){ +return $.fn.layout.methods[_65](this,_66); +} +_65=_65||{}; +return this.each(function(){ +var _67=$.data(this,"layout"); +if(_67){ +$.extend(_67.options,_65); +}else{ +var _68=$.extend({},$.fn.layout.defaults,$.fn.layout.parseOptions(this),_65); +$.data(this,"layout",{options:_68,panels:{center:$(),north:$(),south:$(),east:$(),west:$()}}); +_12(this); +} +_2(this); +_58(this); +}); +}; +$.fn.layout.methods={options:function(jq){ +return $.data(jq[0],"layout").options; +},resize:function(jq,_69){ +return jq.each(function(){ +_2(this,_69); +}); +},panel:function(jq,_6a){ +return $.data(jq[0],"layout").panels[_6a]; +},collapse:function(jq,_6b){ +return jq.each(function(){ +_39(this,_6b); +}); +},expand:function(jq,_6c){ +return jq.each(function(){ +_4f(this,_6c); +}); +},add:function(jq,_6d){ +return jq.each(function(){ +_19(this,_6d); +_2(this); +if($(this).layout("panel",_6d.region).panel("options").collapsed){ +_39(this,_6d.region,0); +} +}); +},remove:function(jq,_6e){ +return jq.each(function(){ +_34(this,_6e); +_2(this); +}); +},split:function(jq,_6f){ +return jq.each(function(){ +_60(this,_6f,true); +}); +},unsplit:function(jq,_70){ +return jq.each(function(){ +_60(this,_70,false); +}); +}}; +$.fn.layout.parseOptions=function(_71){ +return $.extend({},$.parser.parseOptions(_71,[{fit:"boolean"}])); +}; +$.fn.layout.defaults={fit:false,onExpand:function(_72){ +},onCollapse:function(_73){ +},onAdd:function(_74){ +},onRemove:function(_75){ +}}; +$.fn.layout.parsePanelOptions=function(_76){ +var t=$(_76); +return $.extend({},$.fn.panel.parseOptions(_76),$.parser.parseOptions(_76,["region",{split:"boolean",collpasedSize:"number",minWidth:"number",minHeight:"number",maxWidth:"number",maxHeight:"number"}])); +}; +$.fn.layout.paneldefaults=$.extend({},$.fn.panel.defaults,{region:null,split:false,collapsedSize:28,expandMode:"float",hideExpandTool:false,hideCollapsedContent:true,collapsedContent:function(_77){ +var p=$(this); +var _78=p.panel("options"); +if(_78.region=="north"||_78.region=="south"){ +return _77; +} +var cc=[]; +if(_78.iconCls){ +cc.push("
            "); +} +cc.push("
            "); +cc.push(_77); +cc.push("
            "); +return cc.join(""); +},minWidth:10,minHeight:10,maxWidth:10000,maxHeight:10000}); +})(jQuery); + diff --git a/src/main/webapp/static/easyUI/plugins/jquery.linkbutton.js b/src/main/webapp/static/easyUI/plugins/jquery.linkbutton.js new file mode 100644 index 0000000000000000000000000000000000000000..97cfa5d8bbf58aae06c9519682dd625f2c5f8049 --- /dev/null +++ b/src/main/webapp/static/easyUI/plugins/jquery.linkbutton.js @@ -0,0 +1,184 @@ +/** + * jQuery EasyUI 1.5.2 + * + * Copyright (c) 2009-2017 www.jeasyui.com. All rights reserved. + * + * Licensed under the freeware license: http://www.jeasyui.com/license_freeware.php + * To use it on other terms please contact us: info@jeasyui.com + * + */ +(function($){ +function _1(_2,_3){ +var _4=$.data(_2,"linkbutton").options; +if(_3){ +$.extend(_4,_3); +} +if(_4.width||_4.height||_4.fit){ +var _5=$(_2); +var _6=_5.parent(); +var _7=_5.is(":visible"); +if(!_7){ +var _8=$("
            ").insertBefore(_2); +var _9={position:_5.css("position"),display:_5.css("display"),left:_5.css("left")}; +_5.appendTo("body"); +_5.css({position:"absolute",display:"inline-block",left:-20000}); +} +_5._size(_4,_6); +var _a=_5.find(".l-btn-left"); +_a.css("margin-top",0); +_a.css("margin-top",parseInt((_5.height()-_a.height())/2)+"px"); +if(!_7){ +_5.insertAfter(_8); +_5.css(_9); +_8.remove(); +} +} +}; +function _b(_c){ +var _d=$.data(_c,"linkbutton").options; +var t=$(_c).empty(); +t.addClass("l-btn").removeClass("l-btn-plain l-btn-selected l-btn-plain-selected l-btn-outline"); +t.removeClass("l-btn-small l-btn-medium l-btn-large").addClass("l-btn-"+_d.size); +if(_d.plain){ +t.addClass("l-btn-plain"); +} +if(_d.outline){ +t.addClass("l-btn-outline"); +} +if(_d.selected){ +t.addClass(_d.plain?"l-btn-selected l-btn-plain-selected":"l-btn-selected"); +} +t.attr("group",_d.group||""); +t.attr("id",_d.id||""); +var _e=$("").appendTo(t); +if(_d.text){ +$("").html(_d.text).appendTo(_e); +}else{ +$(" ").appendTo(_e); +} +if(_d.iconCls){ +$(" ").addClass(_d.iconCls).appendTo(_e); +_e.addClass("l-btn-icon-"+_d.iconAlign); +} +t.unbind(".linkbutton").bind("focus.linkbutton",function(){ +if(!_d.disabled){ +$(this).addClass("l-btn-focus"); +} +}).bind("blur.linkbutton",function(){ +$(this).removeClass("l-btn-focus"); +}).bind("click.linkbutton",function(){ +if(!_d.disabled){ +if(_d.toggle){ +if(_d.selected){ +$(this).linkbutton("unselect"); +}else{ +$(this).linkbutton("select"); +} +} +_d.onClick.call(this); +} +}); +_f(_c,_d.selected); +_10(_c,_d.disabled); +}; +function _f(_11,_12){ +var _13=$.data(_11,"linkbutton").options; +if(_12){ +if(_13.group){ +$("a.l-btn[group=\""+_13.group+"\"]").each(function(){ +var o=$(this).linkbutton("options"); +if(o.toggle){ +$(this).removeClass("l-btn-selected l-btn-plain-selected"); +o.selected=false; +} +}); +} +$(_11).addClass(_13.plain?"l-btn-selected l-btn-plain-selected":"l-btn-selected"); +_13.selected=true; +}else{ +if(!_13.group){ +$(_11).removeClass("l-btn-selected l-btn-plain-selected"); +_13.selected=false; +} +} +}; +function _10(_14,_15){ +var _16=$.data(_14,"linkbutton"); +var _17=_16.options; +$(_14).removeClass("l-btn-disabled l-btn-plain-disabled"); +if(_15){ +_17.disabled=true; +var _18=$(_14).attr("href"); +if(_18){ +_16.href=_18; +$(_14).attr("href","javascript:;"); +} +if(_14.onclick){ +_16.onclick=_14.onclick; +_14.onclick=null; +} +_17.plain?$(_14).addClass("l-btn-disabled l-btn-plain-disabled"):$(_14).addClass("l-btn-disabled"); +}else{ +_17.disabled=false; +if(_16.href){ +$(_14).attr("href",_16.href); +} +if(_16.onclick){ +_14.onclick=_16.onclick; +} +} +}; +$.fn.linkbutton=function(_19,_1a){ +if(typeof _19=="string"){ +return $.fn.linkbutton.methods[_19](this,_1a); +} +_19=_19||{}; +return this.each(function(){ +var _1b=$.data(this,"linkbutton"); +if(_1b){ +$.extend(_1b.options,_19); +}else{ +$.data(this,"linkbutton",{options:$.extend({},$.fn.linkbutton.defaults,$.fn.linkbutton.parseOptions(this),_19)}); +$(this).removeAttr("disabled"); +$(this).bind("_resize",function(e,_1c){ +if($(this).hasClass("easyui-fluid")||_1c){ +_1(this); +} +return false; +}); +} +_b(this); +_1(this); +}); +}; +$.fn.linkbutton.methods={options:function(jq){ +return $.data(jq[0],"linkbutton").options; +},resize:function(jq,_1d){ +return jq.each(function(){ +_1(this,_1d); +}); +},enable:function(jq){ +return jq.each(function(){ +_10(this,false); +}); +},disable:function(jq){ +return jq.each(function(){ +_10(this,true); +}); +},select:function(jq){ +return jq.each(function(){ +_f(this,true); +}); +},unselect:function(jq){ +return jq.each(function(){ +_f(this,false); +}); +}}; +$.fn.linkbutton.parseOptions=function(_1e){ +var t=$(_1e); +return $.extend({},$.parser.parseOptions(_1e,["id","iconCls","iconAlign","group","size","text",{plain:"boolean",toggle:"boolean",selected:"boolean",outline:"boolean"}]),{disabled:(t.attr("disabled")?true:undefined),text:($.trim(t.html())||undefined),iconCls:(t.attr("icon")||t.attr("iconCls"))}); +}; +$.fn.linkbutton.defaults={id:null,disabled:false,toggle:false,selected:false,outline:false,group:null,plain:false,text:"",iconCls:null,iconAlign:"left",size:"small",onClick:function(){ +}}; +})(jQuery); + diff --git a/src/main/webapp/static/easyUI/plugins/jquery.menu.js b/src/main/webapp/static/easyUI/plugins/jquery.menu.js new file mode 100644 index 0000000000000000000000000000000000000000..2308fd75724ad0cadbe1cf5a9c5782e63e1515c3 --- /dev/null +++ b/src/main/webapp/static/easyUI/plugins/jquery.menu.js @@ -0,0 +1,491 @@ +/** + * jQuery EasyUI 1.5.2 + * + * Copyright (c) 2009-2017 www.jeasyui.com. All rights reserved. + * + * Licensed under the freeware license: http://www.jeasyui.com/license_freeware.php + * To use it on other terms please contact us: info@jeasyui.com + * + */ +(function($){ +$(function(){ +$(document).unbind(".menu").bind("mousedown.menu",function(e){ +var m=$(e.target).closest("div.menu,div.combo-p"); +if(m.length){ +return; +} +$("body>div.menu-top:visible").not(".menu-inline").menu("hide"); +_1($("body>div.menu:visible").not(".menu-inline")); +}); +}); +function _2(_3){ +var _4=$.data(_3,"menu").options; +$(_3).addClass("menu-top"); +_4.inline?$(_3).addClass("menu-inline"):$(_3).appendTo("body"); +$(_3).bind("_resize",function(e,_5){ +if($(this).hasClass("easyui-fluid")||_5){ +$(_3).menu("resize",_3); +} +return false; +}); +var _6=_7($(_3)); +for(var i=0;i<_6.length;i++){ +_b(_3,_6[i]); +} +function _7(_8){ +var _9=[]; +_8.addClass("menu"); +_9.push(_8); +if(!_8.hasClass("menu-content")){ +_8.children("div").each(function(){ +var _a=$(this).children("div"); +if(_a.length){ +_a.appendTo("body"); +this.submenu=_a; +var mm=_7(_a); +_9=_9.concat(mm); +} +}); +} +return _9; +}; +}; +function _b(_c,_d){ +var _e=$(_d).addClass("menu"); +if(!_e.data("menu")){ +_e.data("menu",{options:$.parser.parseOptions(_e[0],["width","height"])}); +} +if(!_e.hasClass("menu-content")){ +_e.children("div").each(function(){ +_f(_c,this); +}); +$("
            ").prependTo(_e); +} +_10(_c,_e); +if(!_e.hasClass("menu-inline")){ +_e.hide(); +} +_11(_c,_e); +}; +function _f(_12,div,_13){ +var _14=$(div); +var _15=$.extend({},$.parser.parseOptions(_14[0],["id","name","iconCls","href",{separator:"boolean"}]),{disabled:(_14.attr("disabled")?true:undefined),text:$.trim(_14.html()),onclick:_14[0].onclick},_13||{}); +_15.onclick=_15.onclick||_15.handler||null; +_14.data("menuitem",{options:_15}); +if(_15.separator){ +_14.addClass("menu-sep"); +} +if(!_14.hasClass("menu-sep")){ +_14.addClass("menu-item"); +_14.empty().append($("
            ").html(_15.text)); +if(_15.iconCls){ +$("
            ").addClass(_15.iconCls).appendTo(_14); +} +if(_15.id){ +_14.attr("id",_15.id); +} +if(_15.onclick){ +if(typeof _15.onclick=="string"){ +_14.attr("onclick",_15.onclick); +}else{ +_14[0].onclick=eval(_15.onclick); +} +} +if(_15.disabled){ +_16(_12,_14[0],true); +} +if(_14[0].submenu){ +$("
            ").appendTo(_14); +} +} +}; +function _10(_17,_18){ +var _19=$.data(_17,"menu").options; +var _1a=_18.attr("style")||""; +var _1b=_18.is(":visible"); +_18.css({display:"block",left:-10000,height:"auto",overflow:"hidden"}); +_18.find(".menu-item").each(function(){ +$(this)._outerHeight(_19.itemHeight); +$(this).find(".menu-text").css({height:(_19.itemHeight-2)+"px",lineHeight:(_19.itemHeight-2)+"px"}); +}); +_18.removeClass("menu-noline").addClass(_19.noline?"menu-noline":""); +var _1c=_18.data("menu").options; +var _1d=_1c.width; +var _1e=_1c.height; +if(isNaN(parseInt(_1d))){ +_1d=0; +_18.find("div.menu-text").each(function(){ +if(_1d<$(this).outerWidth()){ +_1d=$(this).outerWidth(); +} +}); +_1d=_1d?_1d+40:""; +} +var _1f=_18.outerHeight(); +if(isNaN(parseInt(_1e))){ +_1e=_1f; +if(_18.hasClass("menu-top")&&_19.alignTo){ +var at=$(_19.alignTo); +var h1=at.offset().top-$(document).scrollTop(); +var h2=$(window)._outerHeight()+$(document).scrollTop()-at.offset().top-at._outerHeight(); +_1e=Math.min(_1e,Math.max(h1,h2)); +}else{ +if(_1e>$(window)._outerHeight()){ +_1e=$(window).height(); +} +} +} +_18.attr("style",_1a); +_18.show(); +_18._size($.extend({},_1c,{width:_1d,height:_1e,minWidth:_1c.minWidth||_19.minWidth,maxWidth:_1c.maxWidth||_19.maxWidth})); +_18.find(".easyui-fluid").triggerHandler("_resize",[true]); +_18.css("overflow",_18.outerHeight()<_1f?"auto":"hidden"); +_18.children("div.menu-line")._outerHeight(_1f-2); +if(!_1b){ +_18.hide(); +} +}; +function _11(_20,_21){ +var _22=$.data(_20,"menu"); +var _23=_22.options; +_21.unbind(".menu"); +for(var _24 in _23.events){ +_21.bind(_24+".menu",{target:_20},_23.events[_24]); +} +}; +function _25(e){ +var _26=e.data.target; +var _27=$.data(_26,"menu"); +if(_27.timer){ +clearTimeout(_27.timer); +_27.timer=null; +} +}; +function _28(e){ +var _29=e.data.target; +var _2a=$.data(_29,"menu"); +if(_2a.options.hideOnUnhover){ +_2a.timer=setTimeout(function(){ +_2b(_29,$(_29).hasClass("menu-inline")); +},_2a.options.duration); +} +}; +function _2c(e){ +var _2d=e.data.target; +var _2e=$(e.target).closest(".menu-item"); +if(_2e.length){ +_2e.siblings().each(function(){ +if(this.submenu){ +_1(this.submenu); +} +$(this).removeClass("menu-active"); +}); +_2e.addClass("menu-active"); +if(_2e.hasClass("menu-item-disabled")){ +_2e.addClass("menu-active-disabled"); +return; +} +var _2f=_2e[0].submenu; +if(_2f){ +$(_2d).menu("show",{menu:_2f,parent:_2e}); +} +} +}; +function _30(e){ +var _31=$(e.target).closest(".menu-item"); +if(_31.length){ +_31.removeClass("menu-active menu-active-disabled"); +var _32=_31[0].submenu; +if(_32){ +if(e.pageX>=parseInt(_32.css("left"))){ +_31.addClass("menu-active"); +}else{ +_1(_32); +} +}else{ +_31.removeClass("menu-active"); +} +} +}; +function _33(e){ +var _34=e.data.target; +var _35=$(e.target).closest(".menu-item"); +if(_35.length){ +var _36=$(_34).data("menu").options; +var _37=_35.data("menuitem").options; +if(_37.disabled){ +return; +} +if(!_35[0].submenu){ +_2b(_34,_36.inline); +if(_37.href){ +location.href=_37.href; +} +} +_35.trigger("mouseenter"); +_36.onClick.call(_34,$(_34).menu("getItem",_35[0])); +} +}; +function _2b(_38,_39){ +var _3a=$.data(_38,"menu"); +if(_3a){ +if($(_38).is(":visible")){ +_1($(_38)); +if(_39){ +$(_38).show(); +}else{ +_3a.options.onHide.call(_38); +} +} +} +return false; +}; +function _3b(_3c,_3d){ +_3d=_3d||{}; +var _3e,top; +var _3f=$.data(_3c,"menu").options; +var _40=$(_3d.menu||_3c); +$(_3c).menu("resize",_40[0]); +if(_40.hasClass("menu-top")){ +$.extend(_3f,_3d); +_3e=_3f.left; +top=_3f.top; +if(_3f.alignTo){ +var at=$(_3f.alignTo); +_3e=at.offset().left; +top=at.offset().top+at._outerHeight(); +if(_3f.align=="right"){ +_3e+=at.outerWidth()-_40.outerWidth(); +} +} +if(_3e+_40.outerWidth()>$(window)._outerWidth()+$(document)._scrollLeft()){ +_3e=$(window)._outerWidth()+$(document).scrollLeft()-_40.outerWidth()-5; +} +if(_3e<0){ +_3e=0; +} +top=_41(top,_3f.alignTo); +}else{ +var _42=_3d.parent; +_3e=_42.offset().left+_42.outerWidth()-2; +if(_3e+_40.outerWidth()+5>$(window)._outerWidth()+$(document).scrollLeft()){ +_3e=_42.offset().left-_40.outerWidth()+2; +} +top=_41(_42.offset().top-3); +} +function _41(top,_43){ +if(top+_40.outerHeight()>$(window)._outerHeight()+$(document).scrollTop()){ +if(_43){ +top=$(_43).offset().top-_40._outerHeight(); +}else{ +top=$(window)._outerHeight()+$(document).scrollTop()-_40.outerHeight(); +} +} +if(top<0){ +top=0; +} +return top; +}; +_40.css(_3f.position.call(_3c,_40[0],_3e,top)); +_40.show(0,function(){ +if(!_40[0].shadow){ +_40[0].shadow=$("
            ").insertAfter(_40); +} +_40[0].shadow.css({display:(_40.hasClass("menu-inline")?"none":"block"),zIndex:$.fn.menu.defaults.zIndex++,left:_40.css("left"),top:_40.css("top"),width:_40.outerWidth(),height:_40.outerHeight()}); +_40.css("z-index",$.fn.menu.defaults.zIndex++); +if(_40.hasClass("menu-top")){ +_3f.onShow.call(_3c); +} +}); +}; +function _1(_44){ +if(_44&&_44.length){ +_45(_44); +_44.find("div.menu-item").each(function(){ +if(this.submenu){ +_1(this.submenu); +} +$(this).removeClass("menu-active"); +}); +} +function _45(m){ +m.stop(true,true); +if(m[0].shadow){ +m[0].shadow.hide(); +} +m.hide(); +}; +}; +function _46(_47,_48){ +var _49=null; +var tmp=$("
            "); +function _4a(_4b){ +_4b.children("div.menu-item").each(function(){ +var _4c=$(_47).menu("getItem",this); +var s=tmp.empty().html(_4c.text).text(); +if(_48==$.trim(s)){ +_49=_4c; +}else{ +if(this.submenu&&!_49){ +_4a(this.submenu); +} +} +}); +}; +_4a($(_47)); +tmp.remove(); +return _49; +}; +function _16(_4d,_4e,_4f){ +var t=$(_4e); +if(t.hasClass("menu-item")){ +var _50=t.data("menuitem").options; +_50.disabled=_4f; +if(_4f){ +t.addClass("menu-item-disabled"); +t[0].onclick=null; +}else{ +t.removeClass("menu-item-disabled"); +t[0].onclick=_50.onclick; +} +} +}; +function _51(_52,_53){ +var _54=$.data(_52,"menu").options; +var _55=$(_52); +if(_53.parent){ +if(!_53.parent.submenu){ +var _56=$("
            ").appendTo("body"); +_53.parent.submenu=_56; +$("
            ").appendTo(_53.parent); +_b(_52,_56); +} +_55=_53.parent.submenu; +} +var div=$("
            ").appendTo(_55); +_f(_52,div,_53); +}; +function _57(_58,_59){ +function _5a(el){ +if(el.submenu){ +el.submenu.children("div.menu-item").each(function(){ +_5a(this); +}); +var _5b=el.submenu[0].shadow; +if(_5b){ +_5b.remove(); +} +el.submenu.remove(); +} +$(el).remove(); +}; +_5a(_59); +}; +function _5c(_5d,_5e,_5f){ +var _60=$(_5e).parent(); +if(_5f){ +$(_5e).show(); +}else{ +$(_5e).hide(); +} +_10(_5d,_60); +}; +function _61(_62){ +$(_62).children("div.menu-item").each(function(){ +_57(_62,this); +}); +if(_62.shadow){ +_62.shadow.remove(); +} +$(_62).remove(); +}; +$.fn.menu=function(_63,_64){ +if(typeof _63=="string"){ +return $.fn.menu.methods[_63](this,_64); +} +_63=_63||{}; +return this.each(function(){ +var _65=$.data(this,"menu"); +if(_65){ +$.extend(_65.options,_63); +}else{ +_65=$.data(this,"menu",{options:$.extend({},$.fn.menu.defaults,$.fn.menu.parseOptions(this),_63)}); +_2(this); +} +$(this).css({left:_65.options.left,top:_65.options.top}); +}); +}; +$.fn.menu.methods={options:function(jq){ +return $.data(jq[0],"menu").options; +},show:function(jq,pos){ +return jq.each(function(){ +_3b(this,pos); +}); +},hide:function(jq){ +return jq.each(function(){ +_2b(this); +}); +},destroy:function(jq){ +return jq.each(function(){ +_61(this); +}); +},setText:function(jq,_66){ +return jq.each(function(){ +var _67=$(_66.target).data("menuitem").options; +_67.text=_66.text; +$(_66.target).children("div.menu-text").html(_66.text); +}); +},setIcon:function(jq,_68){ +return jq.each(function(){ +var _69=$(_68.target).data("menuitem").options; +_69.iconCls=_68.iconCls; +$(_68.target).children("div.menu-icon").remove(); +if(_68.iconCls){ +$("
            ").addClass(_68.iconCls).appendTo(_68.target); +} +}); +},getItem:function(jq,_6a){ +var _6b=$(_6a).data("menuitem").options; +return $.extend({},_6b,{target:$(_6a)[0]}); +},findItem:function(jq,_6c){ +return _46(jq[0],_6c); +},appendItem:function(jq,_6d){ +return jq.each(function(){ +_51(this,_6d); +}); +},removeItem:function(jq,_6e){ +return jq.each(function(){ +_57(this,_6e); +}); +},enableItem:function(jq,_6f){ +return jq.each(function(){ +_16(this,_6f,false); +}); +},disableItem:function(jq,_70){ +return jq.each(function(){ +_16(this,_70,true); +}); +},showItem:function(jq,_71){ +return jq.each(function(){ +_5c(this,_71,true); +}); +},hideItem:function(jq,_72){ +return jq.each(function(){ +_5c(this,_72,false); +}); +},resize:function(jq,_73){ +return jq.each(function(){ +_10(this,_73?$(_73):$(this)); +}); +}}; +$.fn.menu.parseOptions=function(_74){ +return $.extend({},$.parser.parseOptions(_74,[{minWidth:"number",itemHeight:"number",duration:"number",hideOnUnhover:"boolean"},{fit:"boolean",inline:"boolean",noline:"boolean"}])); +}; +$.fn.menu.defaults={zIndex:110000,left:0,top:0,alignTo:null,align:"left",minWidth:120,itemHeight:22,duration:100,hideOnUnhover:true,inline:false,fit:false,noline:false,events:{mouseenter:_25,mouseleave:_28,mouseover:_2c,mouseout:_30,click:_33},position:function(_75,_76,top){ +return {left:_76,top:top}; +},onShow:function(){ +},onHide:function(){ +},onClick:function(_77){ +}}; +})(jQuery); + diff --git a/src/main/webapp/static/easyUI/plugins/jquery.menubutton.js b/src/main/webapp/static/easyUI/plugins/jquery.menubutton.js new file mode 100644 index 0000000000000000000000000000000000000000..4438e0b9db28823cf0e3bfd4159c9a6b63afc309 --- /dev/null +++ b/src/main/webapp/static/easyUI/plugins/jquery.menubutton.js @@ -0,0 +1,128 @@ +/** + * jQuery EasyUI 1.5.2 + * + * Copyright (c) 2009-2017 www.jeasyui.com. All rights reserved. + * + * Licensed under the freeware license: http://www.jeasyui.com/license_freeware.php + * To use it on other terms please contact us: info@jeasyui.com + * + */ +(function($){ +function _1(_2){ +var _3=$.data(_2,"menubutton").options; +var _4=$(_2); +_4.linkbutton(_3); +if(_3.hasDownArrow){ +_4.removeClass(_3.cls.btn1+" "+_3.cls.btn2).addClass("m-btn"); +_4.removeClass("m-btn-small m-btn-medium m-btn-large").addClass("m-btn-"+_3.size); +var _5=_4.find(".l-btn-left"); +$("").addClass(_3.cls.arrow).appendTo(_5); +$("").addClass("m-btn-line").appendTo(_5); +} +$(_2).menubutton("resize"); +if(_3.menu){ +$(_3.menu).menu({duration:_3.duration}); +var _6=$(_3.menu).menu("options"); +var _7=_6.onShow; +var _8=_6.onHide; +$.extend(_6,{onShow:function(){ +var _9=$(this).menu("options"); +var _a=$(_9.alignTo); +var _b=_a.menubutton("options"); +_a.addClass((_b.plain==true)?_b.cls.btn2:_b.cls.btn1); +_7.call(this); +},onHide:function(){ +var _c=$(this).menu("options"); +var _d=$(_c.alignTo); +var _e=_d.menubutton("options"); +_d.removeClass((_e.plain==true)?_e.cls.btn2:_e.cls.btn1); +_8.call(this); +}}); +} +}; +function _f(_10){ +var _11=$.data(_10,"menubutton").options; +var btn=$(_10); +var t=btn.find("."+_11.cls.trigger); +if(!t.length){ +t=btn; +} +t.unbind(".menubutton"); +var _12=null; +t.bind("click.menubutton",function(){ +if(!_13()){ +_14(_10); +return false; +} +}).bind("mouseenter.menubutton",function(){ +if(!_13()){ +_12=setTimeout(function(){ +_14(_10); +},_11.duration); +return false; +} +}).bind("mouseleave.menubutton",function(){ +if(_12){ +clearTimeout(_12); +} +$(_11.menu).triggerHandler("mouseleave"); +}); +function _13(){ +return $(_10).linkbutton("options").disabled; +}; +}; +function _14(_15){ +var _16=$(_15).menubutton("options"); +if(_16.disabled||!_16.menu){ +return; +} +$("body>div.menu-top").menu("hide"); +var btn=$(_15); +var mm=$(_16.menu); +if(mm.length){ +mm.menu("options").alignTo=btn; +mm.menu("show",{alignTo:btn,align:_16.menuAlign}); +} +btn.blur(); +}; +$.fn.menubutton=function(_17,_18){ +if(typeof _17=="string"){ +var _19=$.fn.menubutton.methods[_17]; +if(_19){ +return _19(this,_18); +}else{ +return this.linkbutton(_17,_18); +} +} +_17=_17||{}; +return this.each(function(){ +var _1a=$.data(this,"menubutton"); +if(_1a){ +$.extend(_1a.options,_17); +}else{ +$.data(this,"menubutton",{options:$.extend({},$.fn.menubutton.defaults,$.fn.menubutton.parseOptions(this),_17)}); +$(this).removeAttr("disabled"); +} +_1(this); +_f(this); +}); +}; +$.fn.menubutton.methods={options:function(jq){ +var _1b=jq.linkbutton("options"); +return $.extend($.data(jq[0],"menubutton").options,{toggle:_1b.toggle,selected:_1b.selected,disabled:_1b.disabled}); +},destroy:function(jq){ +return jq.each(function(){ +var _1c=$(this).menubutton("options"); +if(_1c.menu){ +$(_1c.menu).menu("destroy"); +} +$(this).remove(); +}); +}}; +$.fn.menubutton.parseOptions=function(_1d){ +var t=$(_1d); +return $.extend({},$.fn.linkbutton.parseOptions(_1d),$.parser.parseOptions(_1d,["menu",{plain:"boolean",hasDownArrow:"boolean",duration:"number"}])); +}; +$.fn.menubutton.defaults=$.extend({},$.fn.linkbutton.defaults,{plain:true,hasDownArrow:true,menu:null,menuAlign:"left",duration:100,cls:{btn1:"m-btn-active",btn2:"m-btn-plain-active",arrow:"m-btn-downarrow",trigger:"m-btn"}}); +})(jQuery); + diff --git a/src/main/webapp/static/easyUI/plugins/jquery.messager.js b/src/main/webapp/static/easyUI/plugins/jquery.messager.js new file mode 100644 index 0000000000000000000000000000000000000000..76738b60e4c950fccacd451ff89094056d06facf --- /dev/null +++ b/src/main/webapp/static/easyUI/plugins/jquery.messager.js @@ -0,0 +1,187 @@ +/** + * jQuery EasyUI 1.5.2 + * + * Copyright (c) 2009-2017 www.jeasyui.com. All rights reserved. + * + * Licensed under the freeware license: http://www.jeasyui.com/license_freeware.php + * To use it on other terms please contact us: info@jeasyui.com + * + */ +(function($){ +function _1(){ +$(document).unbind(".messager").bind("keydown.messager",function(e){ +if(e.keyCode==27){ +$("body").children("div.messager-window").children("div.messager-body").each(function(){ +$(this).dialog("close"); +}); +}else{ +if(e.keyCode==9){ +var _2=$("body").children("div.messager-window"); +if(!_2.length){ +return; +} +var _3=_2.find(".messager-input,.messager-button .l-btn"); +for(var i=0;i<_3.length;i++){ +if($(_3[i]).is(":focus")){ +$(_3[i>=_3.length-1?0:i+1]).focus(); +return false; +} +} +}else{ +if(e.keyCode==13){ +var _4=$(e.target).closest("input.messager-input"); +if(_4.length){ +var _5=_4.closest(".messager-body"); +_6(_5,_4.val()); +} +} +} +} +}); +}; +function _7(){ +$(document).unbind(".messager"); +}; +function _8(_9){ +var _a=$.extend({},$.messager.defaults,{modal:false,shadow:false,draggable:false,resizable:false,closed:true,style:{left:"",top:"",right:0,zIndex:$.fn.window.defaults.zIndex++,bottom:-document.body.scrollTop-document.documentElement.scrollTop},title:"",width:250,height:100,minHeight:0,showType:"slide",showSpeed:600,content:_9.msg,timeout:4000},_9); +var _b=$("
            ").appendTo("body"); +_b.dialog($.extend({},_a,{noheader:(_a.title?false:true),openAnimation:(_a.showType),closeAnimation:(_a.showType=="show"?"hide":_a.showType),openDuration:_a.showSpeed,closeDuration:_a.showSpeed,onOpen:function(){ +_b.dialog("dialog").hover(function(){ +if(_a.timer){ +clearTimeout(_a.timer); +} +},function(){ +_c(); +}); +_c(); +function _c(){ +if(_a.timeout>0){ +_a.timer=setTimeout(function(){ +if(_b.length&&_b.data("dialog")){ +_b.dialog("close"); +} +},_a.timeout); +} +}; +if(_9.onOpen){ +_9.onOpen.call(this); +}else{ +_a.onOpen.call(this); +} +},onClose:function(){ +if(_a.timer){ +clearTimeout(_a.timer); +} +if(_9.onClose){ +_9.onClose.call(this); +}else{ +_a.onClose.call(this); +} +_b.dialog("destroy"); +}})); +_b.dialog("dialog").css(_a.style); +_b.dialog("open"); +return _b; +}; +function _d(_e){ +_1(); +var _f=$("
            ").appendTo("body"); +_f.dialog($.extend({},_e,{noheader:(_e.title?false:true),onClose:function(){ +_7(); +if(_e.onClose){ +_e.onClose.call(this); +} +setTimeout(function(){ +_f.dialog("destroy"); +},100); +}})); +var win=_f.dialog("dialog").addClass("messager-window"); +win.find(".dialog-button").addClass("messager-button").find("a:first").focus(); +return _f; +}; +function _6(dlg,_10){ +dlg.dialog("close"); +dlg.dialog("options").fn(_10); +}; +$.messager={show:function(_11){ +return _8(_11); +},alert:function(_12,msg,_13,fn){ +var _14=typeof _12=="object"?_12:{title:_12,msg:msg,icon:_13,fn:fn}; +var cls=_14.icon?"messager-icon messager-"+_14.icon:""; +_14=$.extend({},$.messager.defaults,{content:"
            "+"
            "+_14.msg+"
            "+"
            "},_14); +if(!_14.buttons){ +_14.buttons=[{text:_14.ok,onClick:function(){ +_6(dlg); +}}]; +} +var dlg=_d(_14); +return dlg; +},confirm:function(_15,msg,fn){ +var _16=typeof _15=="object"?_15:{title:_15,msg:msg,fn:fn}; +_16=$.extend({},$.messager.defaults,{content:"
            "+"
            "+_16.msg+"
            "+"
            "},_16); +if(!_16.buttons){ +_16.buttons=[{text:_16.ok,onClick:function(){ +_6(dlg,true); +}},{text:_16.cancel,onClick:function(){ +_6(dlg,false); +}}]; +} +var dlg=_d(_16); +return dlg; +},prompt:function(_17,msg,fn){ +var _18=typeof _17=="object"?_17:{title:_17,msg:msg,fn:fn}; +_18=$.extend({},$.messager.defaults,{content:"
            "+"
            "+_18.msg+"
            "+"
            "+"
            "+"
            "},_18); +if(!_18.buttons){ +_18.buttons=[{text:_18.ok,onClick:function(){ +_6(dlg,dlg.find(".messager-input").val()); +}},{text:_18.cancel,onClick:function(){ +_6(dlg); +}}]; +} +var dlg=_d(_18); +dlg.find(".messager-input").focus(); +return dlg; +},progress:function(_19){ +var _1a={bar:function(){ +return $("body>div.messager-window").find("div.messager-p-bar"); +},close:function(){ +var dlg=$("body>div.messager-window>div.messager-body:has(div.messager-progress)"); +if(dlg.length){ +dlg.dialog("close"); +} +}}; +if(typeof _19=="string"){ +var _1b=_1a[_19]; +return _1b(); +} +_19=_19||{}; +var _1c=$.extend({},{title:"",minHeight:0,content:undefined,msg:"",text:undefined,interval:300},_19); +var dlg=_d($.extend({},$.messager.defaults,{content:"
            "+_1c.msg+"
            ",closable:false,doSize:false},_1c,{onClose:function(){ +if(this.timer){ +clearInterval(this.timer); +} +if(_19.onClose){ +_19.onClose.call(this); +}else{ +$.messager.defaults.onClose.call(this); +} +}})); +var bar=dlg.find("div.messager-p-bar"); +bar.progressbar({text:_1c.text}); +dlg.dialog("resize"); +if(_1c.interval){ +dlg[0].timer=setInterval(function(){ +var v=bar.progressbar("getValue"); +v+=10; +if(v>100){ +v=0; +} +bar.progressbar("setValue",v); +},_1c.interval); +} +return dlg; +}}; +$.messager.defaults=$.extend({},$.fn.dialog.defaults,{ok:"Ok",cancel:"Cancel",width:300,height:"auto",minHeight:150,modal:true,collapsible:false,minimizable:false,maximizable:false,resizable:false,fn:function(){ +}}); +})(jQuery); + diff --git a/src/main/webapp/static/easyUI/plugins/jquery.mobile.js b/src/main/webapp/static/easyUI/plugins/jquery.mobile.js new file mode 100644 index 0000000000000000000000000000000000000000..31f97024f8eebf87c8193be225b031cd0f9b9979 --- /dev/null +++ b/src/main/webapp/static/easyUI/plugins/jquery.mobile.js @@ -0,0 +1,141 @@ +/** + * jQuery EasyUI 1.5.2 + * + * Copyright (c) 2009-2017 www.jeasyui.com. All rights reserved. + * + * Licensed under the freeware license: http://www.jeasyui.com/license_freeware.php + * To use it on other terms please contact us: info@jeasyui.com + * + */ +(function($){ +$.fn.navpanel=function(_1,_2){ +if(typeof _1=="string"){ +var _3=$.fn.navpanel.methods[_1]; +return _3?_3(this,_2):this.panel(_1,_2); +}else{ +_1=_1||{}; +return this.each(function(){ +var _4=$.data(this,"navpanel"); +if(_4){ +$.extend(_4.options,_1); +}else{ +_4=$.data(this,"navpanel",{options:$.extend({},$.fn.navpanel.defaults,$.fn.navpanel.parseOptions(this),_1)}); +} +$(this).panel(_4.options); +}); +} +}; +$.fn.navpanel.methods={options:function(jq){ +return $.data(jq[0],"navpanel").options; +}}; +$.fn.navpanel.parseOptions=function(_5){ +return $.extend({},$.fn.panel.parseOptions(_5),$.parser.parseOptions(_5,[])); +}; +$.fn.navpanel.defaults=$.extend({},$.fn.panel.defaults,{fit:true,border:false,cls:"navpanel"}); +$.parser.plugins.push("navpanel"); +})(jQuery); +(function($){ +$(function(){ +$.mobile.init(); +}); +$.mobile={defaults:{animation:"slide",direction:"left",reverseDirections:{up:"down",down:"up",left:"right",right:"left"}},panels:[],init:function(_6){ +$.mobile.panels=[]; +var _7=$(_6||"body").children(".navpanel:visible"); +if(_7.length){ +_7.not(":first").children(".panel-body").navpanel("close"); +var p=_7.eq(0).children(".panel-body"); +$.mobile.panels.push({panel:p,animation:$.mobile.defaults.animation,direction:$.mobile.defaults.direction}); +} +$(document).unbind(".mobile").bind("click.mobile",function(e){ +var a=$(e.target).closest("a"); +if(a.length){ +var _8=$.parser.parseOptions(a[0],["animation","direction",{back:"boolean"}]); +if(_8.back){ +$.mobile.back(); +e.preventDefault(); +}else{ +var _9=$.trim(a.attr("href")); +if(/^#/.test(_9)){ +var to=$(_9); +if(to.length&&to.hasClass("panel-body")){ +$.mobile.go(to,_8.animation,_8.direction); +e.preventDefault(); +} +} +} +} +}); +$(window).unbind(".mobile").bind("hashchange.mobile",function(){ +var _a=$.mobile.panels.length; +if(_a>1){ +var _b=location.hash; +var p=$.mobile.panels[_a-2]; +if(!_b||_b=="#&"+p.panel.attr("id")){ +$.mobile._back(); +} +} +}); +},nav:function(_c,to,_d,_e){ +if(window.WebKitAnimationEvent){ +_d=_d!=undefined?_d:$.mobile.defaults.animation; +_e=_e!=undefined?_e:$.mobile.defaults.direction; +var _f="m-"+_d+(_e?"-"+_e:""); +var p1=$(_c).panel("open").panel("resize").panel("panel"); +var p2=$(to).panel("open").panel("resize").panel("panel"); +p1.add(p2).bind("webkitAnimationEnd",function(){ +$(this).unbind("webkitAnimationEnd"); +var p=$(this).children(".panel-body"); +if($(this).hasClass("m-in")){ +p.panel("open").panel("resize"); +}else{ +p.panel("close"); +} +$(this).removeClass(_f+" m-in m-out"); +}); +p2.addClass(_f+" m-in"); +p1.addClass(_f+" m-out"); +}else{ +$(to).panel("open").panel("resize"); +$(_c).panel("close"); +} +},_go:function(_10,_11,_12){ +_11=_11!=undefined?_11:$.mobile.defaults.animation; +_12=_12!=undefined?_12:$.mobile.defaults.direction; +var _13=$.mobile.panels[$.mobile.panels.length-1].panel; +var to=$(_10); +if(_13[0]!=to[0]){ +$.mobile.nav(_13,to,_11,_12); +$.mobile.panels.push({panel:to,animation:_11,direction:_12}); +} +},_back:function(){ +if($.mobile.panels.length<2){ +return; +} +var p1=$.mobile.panels.pop(); +var p2=$.mobile.panels[$.mobile.panels.length-1]; +var _14=p1.animation; +var _15=$.mobile.defaults.reverseDirections[p1.direction]||""; +$.mobile.nav(p1.panel,p2.panel,_14,_15); +},go:function(_16,_17,_18){ +_17=_17!=undefined?_17:$.mobile.defaults.animation; +_18=_18!=undefined?_18:$.mobile.defaults.direction; +location.hash="#&"+$(_16).attr("id"); +$.mobile._go(_16,_17,_18); +},back:function(){ +history.go(-1); +}}; +$.map(["validatebox","textbox","passwordbox","filebox","searchbox","combo","combobox","combogrid","combotree","combotreegrid","datebox","datetimebox","numberbox","spinner","numberspinner","timespinner","datetimespinner"],function(_19){ +if($.fn[_19]){ +$.extend($.fn[_19].defaults,{iconWidth:28,tipPosition:"bottom"}); +} +}); +$.map(["spinner","numberspinner","timespinner","datetimespinner"],function(_1a){ +if($.fn[_1a]){ +$.extend($.fn[_1a].defaults,{iconWidth:56,spinAlign:"horizontal"}); +} +}); +if($.fn.menu){ +$.extend($.fn.menu.defaults,{itemHeight:30,noline:true}); +} +})(jQuery); + diff --git a/src/main/webapp/static/easyUI/plugins/jquery.numberbox.js b/src/main/webapp/static/easyUI/plugins/jquery.numberbox.js new file mode 100644 index 0000000000000000000000000000000000000000..2641cf82a9642f69e477f76011b6976bbb192361 --- /dev/null +++ b/src/main/webapp/static/easyUI/plugins/jquery.numberbox.js @@ -0,0 +1,178 @@ +/** + * jQuery EasyUI 1.5.2 + * + * Copyright (c) 2009-2017 www.jeasyui.com. All rights reserved. + * + * Licensed under the freeware license: http://www.jeasyui.com/license_freeware.php + * To use it on other terms please contact us: info@jeasyui.com + * + */ +(function($){ +function _1(_2){ +var _3=$.data(_2,"numberbox"); +var _4=_3.options; +$(_2).addClass("numberbox-f").textbox(_4); +$(_2).textbox("textbox").css({imeMode:"disabled"}); +$(_2).attr("numberboxName",$(_2).attr("textboxName")); +_3.numberbox=$(_2).next(); +_3.numberbox.addClass("numberbox"); +var _5=_4.parser.call(_2,_4.value); +var _6=_4.formatter.call(_2,_5); +$(_2).numberbox("initValue",_5).numberbox("setText",_6); +}; +function _7(_8,_9){ +var _a=$.data(_8,"numberbox"); +var _b=_a.options; +_b.value=parseFloat(_9); +var _9=_b.parser.call(_8,_9); +var _c=_b.formatter.call(_8,_9); +_b.value=_9; +$(_8).textbox("setText",_c).textbox("setValue",_9); +_c=_b.formatter.call(_8,$(_8).textbox("getValue")); +$(_8).textbox("setText",_c); +}; +$.fn.numberbox=function(_d,_e){ +if(typeof _d=="string"){ +var _f=$.fn.numberbox.methods[_d]; +if(_f){ +return _f(this,_e); +}else{ +return this.textbox(_d,_e); +} +} +_d=_d||{}; +return this.each(function(){ +var _10=$.data(this,"numberbox"); +if(_10){ +$.extend(_10.options,_d); +}else{ +_10=$.data(this,"numberbox",{options:$.extend({},$.fn.numberbox.defaults,$.fn.numberbox.parseOptions(this),_d)}); +} +_1(this); +}); +}; +$.fn.numberbox.methods={options:function(jq){ +var _11=jq.data("textbox")?jq.textbox("options"):{}; +return $.extend($.data(jq[0],"numberbox").options,{width:_11.width,originalValue:_11.originalValue,disabled:_11.disabled,readonly:_11.readonly}); +},fix:function(jq){ +return jq.each(function(){ +var _12=$(this).numberbox("options"); +_12.value=null; +var _13=_12.parser.call(this,$(this).numberbox("getText")); +$(this).numberbox("setValue",_13); +}); +},setValue:function(jq,_14){ +return jq.each(function(){ +_7(this,_14); +}); +},clear:function(jq){ +return jq.each(function(){ +$(this).textbox("clear"); +$(this).numberbox("options").value=""; +}); +},reset:function(jq){ +return jq.each(function(){ +$(this).textbox("reset"); +$(this).numberbox("setValue",$(this).numberbox("getValue")); +}); +}}; +$.fn.numberbox.parseOptions=function(_15){ +var t=$(_15); +return $.extend({},$.fn.textbox.parseOptions(_15),$.parser.parseOptions(_15,["decimalSeparator","groupSeparator","suffix",{min:"number",max:"number",precision:"number"}]),{prefix:(t.attr("prefix")?t.attr("prefix"):undefined)}); +}; +$.fn.numberbox.defaults=$.extend({},$.fn.textbox.defaults,{inputEvents:{keypress:function(e){ +var _16=e.data.target; +var _17=$(_16).numberbox("options"); +return _17.filter.call(_16,e); +},blur:function(e){ +$(e.data.target).numberbox("fix"); +},keydown:function(e){ +if(e.keyCode==13){ +$(e.data.target).numberbox("fix"); +} +}},min:null,max:null,precision:0,decimalSeparator:".",groupSeparator:"",prefix:"",suffix:"",filter:function(e){ +var _18=$(this).numberbox("options"); +var s=$(this).numberbox("getText"); +if(e.metaKey||e.ctrlKey){ +return true; +} +if($.inArray(String(e.which),["46","8","13","0"])>=0){ +return true; +} +var tmp=$(""); +tmp.html(String.fromCharCode(e.which)); +var c=tmp.text(); +tmp.remove(); +if(!c){ +return true; +} +if(c=="-"||c==_18.decimalSeparator){ +return (s.indexOf(c)==-1)?true:false; +}else{ +if(c==_18.groupSeparator){ +return true; +}else{ +if("0123456789".indexOf(c)>=0){ +return true; +}else{ +return false; +} +} +} +},formatter:function(_19){ +if(!_19){ +return _19; +} +_19=_19+""; +var _1a=$(this).numberbox("options"); +var s1=_19,s2=""; +var _1b=_19.indexOf("."); +if(_1b>=0){ +s1=_19.substring(0,_1b); +s2=_19.substring(_1b+1,_19.length); +} +if(_1a.groupSeparator){ +var p=/(\d+)(\d{3})/; +while(p.test(s1)){ +s1=s1.replace(p,"$1"+_1a.groupSeparator+"$2"); +} +} +if(s2){ +return _1a.prefix+s1+_1a.decimalSeparator+s2+_1a.suffix; +}else{ +return _1a.prefix+s1+_1a.suffix; +} +},parser:function(s){ +s=s+""; +var _1c=$(this).numberbox("options"); +if(_1c.prefix){ +s=$.trim(s.replace(new RegExp("\\"+$.trim(_1c.prefix),"g"),"")); +} +if(_1c.suffix){ +s=$.trim(s.replace(new RegExp("\\"+$.trim(_1c.suffix),"g"),"")); +} +if(parseFloat(s)!=_1c.value){ +if(_1c.groupSeparator){ +s=$.trim(s.replace(new RegExp("\\"+_1c.groupSeparator,"g"),"")); +} +if(_1c.decimalSeparator){ +s=$.trim(s.replace(new RegExp("\\"+_1c.decimalSeparator,"g"),".")); +} +s=s.replace(/\s/g,""); +} +var val=parseFloat(s).toFixed(_1c.precision); +if(isNaN(val)){ +val=""; +}else{ +if(typeof (_1c.min)=="number"&&val<_1c.min){ +val=_1c.min.toFixed(_1c.precision); +}else{ +if(typeof (_1c.max)=="number"&&val>_1c.max){ +val=_1c.max.toFixed(_1c.precision); +} +} +} +return val; +}}); +})(jQuery); + diff --git a/src/main/webapp/static/easyUI/plugins/jquery.numberspinner.js b/src/main/webapp/static/easyUI/plugins/jquery.numberspinner.js new file mode 100644 index 0000000000000000000000000000000000000000..81571bbd7f62f553c87b5a2fe7a42fe88572ec2e --- /dev/null +++ b/src/main/webapp/static/easyUI/plugins/jquery.numberspinner.js @@ -0,0 +1,58 @@ +/** + * jQuery EasyUI 1.5.2 + * + * Copyright (c) 2009-2017 www.jeasyui.com. All rights reserved. + * + * Licensed under the freeware license: http://www.jeasyui.com/license_freeware.php + * To use it on other terms please contact us: info@jeasyui.com + * + */ +(function($){ +function _1(_2){ +$(_2).addClass("numberspinner-f"); +var _3=$.data(_2,"numberspinner").options; +$(_2).numberbox($.extend({},_3,{doSize:false})).spinner(_3); +$(_2).numberbox("setValue",_3.value); +}; +function _4(_5,_6){ +var _7=$.data(_5,"numberspinner").options; +var v=parseFloat($(_5).numberbox("getValue")||_7.value)||0; +if(_6){ +v-=_7.increment; +}else{ +v+=_7.increment; +} +$(_5).numberbox("setValue",v); +}; +$.fn.numberspinner=function(_8,_9){ +if(typeof _8=="string"){ +var _a=$.fn.numberspinner.methods[_8]; +if(_a){ +return _a(this,_9); +}else{ +return this.numberbox(_8,_9); +} +} +_8=_8||{}; +return this.each(function(){ +var _b=$.data(this,"numberspinner"); +if(_b){ +$.extend(_b.options,_8); +}else{ +$.data(this,"numberspinner",{options:$.extend({},$.fn.numberspinner.defaults,$.fn.numberspinner.parseOptions(this),_8)}); +} +_1(this); +}); +}; +$.fn.numberspinner.methods={options:function(jq){ +var _c=jq.numberbox("options"); +return $.extend($.data(jq[0],"numberspinner").options,{width:_c.width,value:_c.value,originalValue:_c.originalValue,disabled:_c.disabled,readonly:_c.readonly}); +}}; +$.fn.numberspinner.parseOptions=function(_d){ +return $.extend({},$.fn.spinner.parseOptions(_d),$.fn.numberbox.parseOptions(_d),{}); +}; +$.fn.numberspinner.defaults=$.extend({},$.fn.spinner.defaults,$.fn.numberbox.defaults,{spin:function(_e){ +_4(this,_e); +}}); +})(jQuery); + diff --git a/src/main/webapp/static/easyUI/plugins/jquery.pagination.js b/src/main/webapp/static/easyUI/plugins/jquery.pagination.js new file mode 100644 index 0000000000000000000000000000000000000000..8bcc4f755966a18beccb01485ca0dfb7103811fe --- /dev/null +++ b/src/main/webapp/static/easyUI/plugins/jquery.pagination.js @@ -0,0 +1,296 @@ +/** + * jQuery EasyUI 1.5.2 + * + * Copyright (c) 2009-2017 www.jeasyui.com. All rights reserved. + * + * Licensed under the freeware license: http://www.jeasyui.com/license_freeware.php + * To use it on other terms please contact us: info@jeasyui.com + * + */ +(function($){ +function _1(_2){ +var _3=$.data(_2,"pagination"); +var _4=_3.options; +var bb=_3.bb={}; +var _5=$(_2).addClass("pagination").html("
            "); +var tr=_5.find("tr"); +var aa=$.extend([],_4.layout); +if(!_4.showPageList){ +_6(aa,"list"); +} +if(!_4.showPageInfo){ +_6(aa,"info"); +} +if(!_4.showRefresh){ +_6(aa,"refresh"); +} +if(aa[0]=="sep"){ +aa.shift(); +} +if(aa[aa.length-1]=="sep"){ +aa.pop(); +} +for(var _7=0;_7"); +ps.bind("change",function(){ +_4.pageSize=parseInt($(this).val()); +_4.onChangePageSize.call(_2,_4.pageSize); +_10(_2,_4.pageNumber); +}); +for(var i=0;i<_4.pageList.length;i++){ +$("").text(_4.pageList[i]).appendTo(ps); +} +$("").append(ps).appendTo(tr); +}else{ +if(_8=="sep"){ +$("
            ").appendTo(tr); +}else{ +if(_8=="first"){ +bb.first=_9("first"); +}else{ +if(_8=="prev"){ +bb.prev=_9("prev"); +}else{ +if(_8=="next"){ +bb.next=_9("next"); +}else{ +if(_8=="last"){ +bb.last=_9("last"); +}else{ +if(_8=="manual"){ +$("").html(_4.beforePageText).appendTo(tr).wrap(""); +bb.num=$("").appendTo(tr).wrap(""); +bb.num.unbind(".pagination").bind("keydown.pagination",function(e){ +if(e.keyCode==13){ +var _a=parseInt($(this).val())||1; +_10(_2,_a); +return false; +} +}); +bb.after=$("").appendTo(tr).wrap(""); +}else{ +if(_8=="refresh"){ +bb.refresh=_9("refresh"); +}else{ +if(_8=="links"){ +$("").appendTo(tr); +}else{ +if(_8=="info"){ +if(_7==aa.length-1){ +$("
            ").appendTo(_5); +$("
            ").appendTo(_5); +}else{ +$("
            ").appendTo(tr); +} +} +} +} +} +} +} +} +} +} +} +} +if(_4.buttons){ +$("
            ").appendTo(tr); +if($.isArray(_4.buttons)){ +for(var i=0;i<_4.buttons.length;i++){ +var _b=_4.buttons[i]; +if(_b=="-"){ +$("
            ").appendTo(tr); +}else{ +var td=$("").appendTo(tr); +var a=$("").appendTo(td); +a[0].onclick=eval(_b.handler||function(){ +}); +a.linkbutton($.extend({},_b,{plain:true})); +} +} +}else{ +var td=$("").appendTo(tr); +$(_4.buttons).appendTo(td).show(); +} +} +function _9(_c){ +var _d=_4.nav[_c]; +var a=$("").appendTo(tr); +a.wrap(""); +a.linkbutton({iconCls:_d.iconCls,plain:true}).unbind(".pagination").bind("click.pagination",function(){ +_d.handler.call(_2); +}); +return a; +}; +function _6(aa,_e){ +var _f=$.inArray(_e,aa); +if(_f>=0){ +aa.splice(_f,1); +} +return aa; +}; +}; +function _10(_11,_12){ +var _13=$.data(_11,"pagination").options; +_14(_11,{pageNumber:_12}); +_13.onSelectPage.call(_11,_13.pageNumber,_13.pageSize); +}; +function _14(_15,_16){ +var _17=$.data(_15,"pagination"); +var _18=_17.options; +var bb=_17.bb; +$.extend(_18,_16||{}); +var ps=$(_15).find("select.pagination-page-list"); +if(ps.length){ +ps.val(_18.pageSize+""); +_18.pageSize=parseInt(ps.val()); +} +var _19=Math.ceil(_18.total/_18.pageSize)||1; +if(_18.pageNumber<1){ +_18.pageNumber=1; +} +if(_18.pageNumber>_19){ +_18.pageNumber=_19; +} +if(_18.total==0){ +_18.pageNumber=0; +_19=0; +} +if(bb.num){ +bb.num.val(_18.pageNumber); +} +if(bb.after){ +bb.after.html(_18.afterPageText.replace(/{pages}/,_19)); +} +var td=$(_15).find("td.pagination-links"); +if(td.length){ +td.empty(); +var _1a=_18.pageNumber-Math.floor(_18.links/2); +if(_1a<1){ +_1a=1; +} +var _1b=_1a+_18.links-1; +if(_1b>_19){ +_1b=_19; +} +_1a=_1b-_18.links+1; +if(_1a<1){ +_1a=1; +} +for(var i=_1a;i<=_1b;i++){ +var a=$("").appendTo(td); +a.linkbutton({plain:true,text:i}); +if(i==_18.pageNumber){ +a.linkbutton("select"); +}else{ +a.unbind(".pagination").bind("click.pagination",{pageNumber:i},function(e){ +_10(_15,e.data.pageNumber); +}); +} +} +} +var _1c=_18.displayMsg; +_1c=_1c.replace(/{from}/,_18.total==0?0:_18.pageSize*(_18.pageNumber-1)+1); +_1c=_1c.replace(/{to}/,Math.min(_18.pageSize*(_18.pageNumber),_18.total)); +_1c=_1c.replace(/{total}/,_18.total); +$(_15).find("div.pagination-info").html(_1c); +if(bb.first){ +bb.first.linkbutton({disabled:((!_18.total)||_18.pageNumber==1)}); +} +if(bb.prev){ +bb.prev.linkbutton({disabled:((!_18.total)||_18.pageNumber==1)}); +} +if(bb.next){ +bb.next.linkbutton({disabled:(_18.pageNumber==_19)}); +} +if(bb.last){ +bb.last.linkbutton({disabled:(_18.pageNumber==_19)}); +} +_1d(_15,_18.loading); +}; +function _1d(_1e,_1f){ +var _20=$.data(_1e,"pagination"); +var _21=_20.options; +_21.loading=_1f; +if(_21.showRefresh&&_20.bb.refresh){ +_20.bb.refresh.linkbutton({iconCls:(_21.loading?"pagination-loading":"pagination-load")}); +} +}; +$.fn.pagination=function(_22,_23){ +if(typeof _22=="string"){ +return $.fn.pagination.methods[_22](this,_23); +} +_22=_22||{}; +return this.each(function(){ +var _24; +var _25=$.data(this,"pagination"); +if(_25){ +_24=$.extend(_25.options,_22); +}else{ +_24=$.extend({},$.fn.pagination.defaults,$.fn.pagination.parseOptions(this),_22); +$.data(this,"pagination",{options:_24}); +} +_1(this); +_14(this); +}); +}; +$.fn.pagination.methods={options:function(jq){ +return $.data(jq[0],"pagination").options; +},loading:function(jq){ +return jq.each(function(){ +_1d(this,true); +}); +},loaded:function(jq){ +return jq.each(function(){ +_1d(this,false); +}); +},refresh:function(jq,_26){ +return jq.each(function(){ +_14(this,_26); +}); +},select:function(jq,_27){ +return jq.each(function(){ +_10(this,_27); +}); +}}; +$.fn.pagination.parseOptions=function(_28){ +var t=$(_28); +return $.extend({},$.parser.parseOptions(_28,[{total:"number",pageSize:"number",pageNumber:"number",links:"number"},{loading:"boolean",showPageList:"boolean",showPageInfo:"boolean",showRefresh:"boolean"}]),{pageList:(t.attr("pageList")?eval(t.attr("pageList")):undefined)}); +}; +$.fn.pagination.defaults={total:1,pageSize:10,pageNumber:1,pageList:[10,20,30,50],loading:false,buttons:null,showPageList:true,showPageInfo:true,showRefresh:true,links:10,layout:["list","sep","first","prev","sep","manual","sep","next","last","sep","refresh","info"],onSelectPage:function(_29,_2a){ +},onBeforeRefresh:function(_2b,_2c){ +},onRefresh:function(_2d,_2e){ +},onChangePageSize:function(_2f){ +},beforePageText:"Page",afterPageText:"of {pages}",displayMsg:"Displaying {from} to {to} of {total} items",nav:{first:{iconCls:"pagination-first",handler:function(){ +var _30=$(this).pagination("options"); +if(_30.pageNumber>1){ +$(this).pagination("select",1); +} +}},prev:{iconCls:"pagination-prev",handler:function(){ +var _31=$(this).pagination("options"); +if(_31.pageNumber>1){ +$(this).pagination("select",_31.pageNumber-1); +} +}},next:{iconCls:"pagination-next",handler:function(){ +var _32=$(this).pagination("options"); +var _33=Math.ceil(_32.total/_32.pageSize); +if(_32.pageNumber<_33){ +$(this).pagination("select",_32.pageNumber+1); +} +}},last:{iconCls:"pagination-last",handler:function(){ +var _34=$(this).pagination("options"); +var _35=Math.ceil(_34.total/_34.pageSize); +if(_34.pageNumber<_35){ +$(this).pagination("select",_35); +} +}},refresh:{iconCls:"pagination-refresh",handler:function(){ +var _36=$(this).pagination("options"); +if(_36.onBeforeRefresh.call(this,_36.pageNumber,_36.pageSize)!=false){ +$(this).pagination("select",_36.pageNumber); +_36.onRefresh.call(this,_36.pageNumber,_36.pageSize); +} +}}}}; +})(jQuery); + diff --git a/src/main/webapp/static/easyUI/plugins/jquery.panel.js b/src/main/webapp/static/easyUI/plugins/jquery.panel.js new file mode 100644 index 0000000000000000000000000000000000000000..da15ff452d220a052dab212503235b8021d00547 --- /dev/null +++ b/src/main/webapp/static/easyUI/plugins/jquery.panel.js @@ -0,0 +1,674 @@ +/** + * jQuery EasyUI 1.5.2 + * + * Copyright (c) 2009-2017 www.jeasyui.com. All rights reserved. + * + * Licensed under the freeware license: http://www.jeasyui.com/license_freeware.php + * To use it on other terms please contact us: info@jeasyui.com + * + */ +(function($){ +$.fn._remove=function(){ +return this.each(function(){ +$(this).remove(); +try{ +this.outerHTML=""; +} +catch(err){ +} +}); +}; +function _1(_2){ +_2._remove(); +}; +function _3(_4,_5){ +var _6=$.data(_4,"panel"); +var _7=_6.options; +var _8=_6.panel; +var _9=_8.children(".panel-header"); +var _a=_8.children(".panel-body"); +var _b=_8.children(".panel-footer"); +var _c=(_7.halign=="left"||_7.halign=="right"); +if(_5){ +$.extend(_7,{width:_5.width,height:_5.height,minWidth:_5.minWidth,maxWidth:_5.maxWidth,minHeight:_5.minHeight,maxHeight:_5.maxHeight,left:_5.left,top:_5.top}); +} +_8._size(_7); +if(!_c){ +_9._outerWidth(_8.width()); +} +_a._outerWidth(_8.width()); +if(!isNaN(parseInt(_7.height))){ +if(_c){ +if(_7.header){ +var _d=$(_7.header)._outerWidth(); +}else{ +_9.css("width",""); +var _d=_9._outerWidth(); +} +var _e=_9.find(".panel-title"); +_d+=Math.min(_e._outerWidth(),_e._outerHeight()); +var _f=_8.height(); +_9._outerWidth(_d)._outerHeight(_f); +_e._outerWidth(_9.height()); +_a._outerWidth(_8.width()-_d-_b._outerWidth())._outerHeight(_f); +_b._outerHeight(_f); +_a.css({left:"",right:""}).css(_7.halign,(_9.position()[_7.halign]+_d)+"px"); +_7.panelCssWidth=_8.css("width"); +if(_7.collapsed){ +_8._outerWidth(_d+_b._outerWidth()); +} +}else{ +_a._outerHeight(_8.height()-_9._outerHeight()-_b._outerHeight()); +} +}else{ +_a.css("height",""); +var min=$.parser.parseValue("minHeight",_7.minHeight,_8.parent()); +var max=$.parser.parseValue("maxHeight",_7.maxHeight,_8.parent()); +var _10=_9._outerHeight()+_b._outerHeight()+_8._outerHeight()-_8.height(); +_a._size("minHeight",min?(min-_10):""); +_a._size("maxHeight",max?(max-_10):""); +} +_8.css({height:(_c?undefined:""),minHeight:"",maxHeight:"",left:_7.left,top:_7.top}); +_7.onResize.apply(_4,[_7.width,_7.height]); +$(_4).panel("doLayout"); +}; +function _11(_12,_13){ +var _14=$.data(_12,"panel"); +var _15=_14.options; +var _16=_14.panel; +if(_13){ +if(_13.left!=null){ +_15.left=_13.left; +} +if(_13.top!=null){ +_15.top=_13.top; +} +} +_16.css({left:_15.left,top:_15.top}); +_16.find(".tooltip-f").each(function(){ +$(this).tooltip("reposition"); +}); +_15.onMove.apply(_12,[_15.left,_15.top]); +}; +function _17(_18){ +$(_18).addClass("panel-body")._size("clear"); +var _19=$("
            ").insertBefore(_18); +_19[0].appendChild(_18); +_19.bind("_resize",function(e,_1a){ +if($(this).hasClass("easyui-fluid")||_1a){ +_3(_18); +} +return false; +}); +return _19; +}; +function _1b(_1c){ +var _1d=$.data(_1c,"panel"); +var _1e=_1d.options; +var _1f=_1d.panel; +_1f.css(_1e.style); +_1f.addClass(_1e.cls); +_1f.removeClass("panel-hleft panel-hright").addClass("panel-h"+_1e.halign); +_20(); +_21(); +var _22=$(_1c).panel("header"); +var _23=$(_1c).panel("body"); +var _24=$(_1c).siblings(".panel-footer"); +if(_1e.border){ +_22.removeClass("panel-header-noborder"); +_23.removeClass("panel-body-noborder"); +_24.removeClass("panel-footer-noborder"); +}else{ +_22.addClass("panel-header-noborder"); +_23.addClass("panel-body-noborder"); +_24.addClass("panel-footer-noborder"); +} +_22.addClass(_1e.headerCls); +_23.addClass(_1e.bodyCls); +$(_1c).attr("id",_1e.id||""); +if(_1e.content){ +$(_1c).panel("clear"); +$(_1c).html(_1e.content); +$.parser.parse($(_1c)); +} +function _20(){ +if(_1e.noheader||(!_1e.title&&!_1e.header)){ +_1(_1f.children(".panel-header")); +_1f.children(".panel-body").addClass("panel-body-noheader"); +}else{ +if(_1e.header){ +$(_1e.header).addClass("panel-header").prependTo(_1f); +}else{ +var _25=_1f.children(".panel-header"); +if(!_25.length){ +_25=$("
            ").prependTo(_1f); +} +if(!$.isArray(_1e.tools)){ +_25.find("div.panel-tool .panel-tool-a").appendTo(_1e.tools); +} +_25.empty(); +var _26=$("
            ").html(_1e.title).appendTo(_25); +if(_1e.iconCls){ +_26.addClass("panel-with-icon"); +$("
            ").addClass(_1e.iconCls).appendTo(_25); +} +if(_1e.halign=="left"||_1e.halign=="right"){ +_26.addClass("panel-title-"+_1e.titleDirection); +} +var _27=$("
            ").appendTo(_25); +_27.bind("click",function(e){ +e.stopPropagation(); +}); +if(_1e.tools){ +if($.isArray(_1e.tools)){ +$.map(_1e.tools,function(t){ +_28(_27,t.iconCls,eval(t.handler)); +}); +}else{ +$(_1e.tools).children().each(function(){ +$(this).addClass($(this).attr("iconCls")).addClass("panel-tool-a").appendTo(_27); +}); +} +} +if(_1e.collapsible){ +_28(_27,"panel-tool-collapse",function(){ +if(_1e.collapsed==true){ +_52(_1c,true); +}else{ +_3e(_1c,true); +} +}); +} +if(_1e.minimizable){ +_28(_27,"panel-tool-min",function(){ +_5d(_1c); +}); +} +if(_1e.maximizable){ +_28(_27,"panel-tool-max",function(){ +if(_1e.maximized==true){ +_61(_1c); +}else{ +_3d(_1c); +} +}); +} +if(_1e.closable){ +_28(_27,"panel-tool-close",function(){ +_3f(_1c); +}); +} +} +_1f.children("div.panel-body").removeClass("panel-body-noheader"); +} +}; +function _28(c,_29,_2a){ +var a=$("").addClass(_29).appendTo(c); +a.bind("click",_2a); +}; +function _21(){ +if(_1e.footer){ +$(_1e.footer).addClass("panel-footer").appendTo(_1f); +$(_1c).addClass("panel-body-nobottom"); +}else{ +_1f.children(".panel-footer").remove(); +$(_1c).removeClass("panel-body-nobottom"); +} +}; +}; +function _2b(_2c,_2d){ +var _2e=$.data(_2c,"panel"); +var _2f=_2e.options; +if(_30){ +_2f.queryParams=_2d; +} +if(!_2f.href){ +return; +} +if(!_2e.isLoaded||!_2f.cache){ +var _30=$.extend({},_2f.queryParams); +if(_2f.onBeforeLoad.call(_2c,_30)==false){ +return; +} +_2e.isLoaded=false; +if(_2f.loadingMessage){ +$(_2c).panel("clear"); +$(_2c).html($("
            ").html(_2f.loadingMessage)); +} +_2f.loader.call(_2c,_30,function(_31){ +var _32=_2f.extractor.call(_2c,_31); +$(_2c).panel("clear"); +$(_2c).html(_32); +$.parser.parse($(_2c)); +_2f.onLoad.apply(_2c,arguments); +_2e.isLoaded=true; +},function(){ +_2f.onLoadError.apply(_2c,arguments); +}); +} +}; +function _33(_34){ +var t=$(_34); +t.find(".combo-f").each(function(){ +$(this).combo("destroy"); +}); +t.find(".m-btn").each(function(){ +$(this).menubutton("destroy"); +}); +t.find(".s-btn").each(function(){ +$(this).splitbutton("destroy"); +}); +t.find(".tooltip-f").each(function(){ +$(this).tooltip("destroy"); +}); +t.children("div").each(function(){ +$(this)._size("unfit"); +}); +t.empty(); +}; +function _35(_36){ +$(_36).panel("doLayout",true); +}; +function _37(_38,_39){ +var _3a=$.data(_38,"panel").options; +var _3b=$.data(_38,"panel").panel; +if(_39!=true){ +if(_3a.onBeforeOpen.call(_38)==false){ +return; +} +} +_3b.stop(true,true); +if($.isFunction(_3a.openAnimation)){ +_3a.openAnimation.call(_38,cb); +}else{ +switch(_3a.openAnimation){ +case "slide": +_3b.slideDown(_3a.openDuration,cb); +break; +case "fade": +_3b.fadeIn(_3a.openDuration,cb); +break; +case "show": +_3b.show(_3a.openDuration,cb); +break; +default: +_3b.show(); +cb(); +} +} +function cb(){ +_3a.closed=false; +_3a.minimized=false; +var _3c=_3b.children(".panel-header").find("a.panel-tool-restore"); +if(_3c.length){ +_3a.maximized=true; +} +_3a.onOpen.call(_38); +if(_3a.maximized==true){ +_3a.maximized=false; +_3d(_38); +} +if(_3a.collapsed==true){ +_3a.collapsed=false; +_3e(_38); +} +if(!_3a.collapsed){ +_2b(_38); +_35(_38); +} +}; +}; +function _3f(_40,_41){ +var _42=$.data(_40,"panel"); +var _43=_42.options; +var _44=_42.panel; +if(_41!=true){ +if(_43.onBeforeClose.call(_40)==false){ +return; +} +} +_44.find(".tooltip-f").each(function(){ +$(this).tooltip("hide"); +}); +_44.stop(true,true); +_44._size("unfit"); +if($.isFunction(_43.closeAnimation)){ +_43.closeAnimation.call(_40,cb); +}else{ +switch(_43.closeAnimation){ +case "slide": +_44.slideUp(_43.closeDuration,cb); +break; +case "fade": +_44.fadeOut(_43.closeDuration,cb); +break; +case "hide": +_44.hide(_43.closeDuration,cb); +break; +default: +_44.hide(); +cb(); +} +} +function cb(){ +_43.closed=true; +_43.onClose.call(_40); +}; +}; +function _45(_46,_47){ +var _48=$.data(_46,"panel"); +var _49=_48.options; +var _4a=_48.panel; +if(_47!=true){ +if(_49.onBeforeDestroy.call(_46)==false){ +return; +} +} +$(_46).panel("clear").panel("clear","footer"); +_1(_4a); +_49.onDestroy.call(_46); +}; +function _3e(_4b,_4c){ +var _4d=$.data(_4b,"panel").options; +var _4e=$.data(_4b,"panel").panel; +var _4f=_4e.children(".panel-body"); +var _50=_4e.children(".panel-header"); +var _51=_50.find("a.panel-tool-collapse"); +if(_4d.collapsed==true){ +return; +} +_4f.stop(true,true); +if(_4d.onBeforeCollapse.call(_4b)==false){ +return; +} +_51.addClass("panel-tool-expand"); +if(_4c==true){ +if(_4d.halign=="left"||_4d.halign=="right"){ +_4e.animate({width:_50._outerWidth()+_4e.children(".panel-footer")._outerWidth()},function(){ +cb(); +}); +}else{ +_4f.slideUp("normal",function(){ +cb(); +}); +} +}else{ +if(_4d.halign=="left"||_4d.halign=="right"){ +_4e._outerWidth(_50._outerWidth()+_4e.children(".panel-footer")._outerWidth()); +} +cb(); +} +function cb(){ +_4f.hide(); +_4d.collapsed=true; +_4d.onCollapse.call(_4b); +}; +}; +function _52(_53,_54){ +var _55=$.data(_53,"panel").options; +var _56=$.data(_53,"panel").panel; +var _57=_56.children(".panel-body"); +var _58=_56.children(".panel-header").find("a.panel-tool-collapse"); +if(_55.collapsed==false){ +return; +} +_57.stop(true,true); +if(_55.onBeforeExpand.call(_53)==false){ +return; +} +_58.removeClass("panel-tool-expand"); +if(_54==true){ +if(_55.halign=="left"||_55.halign=="right"){ +_57.show(); +_56.animate({width:_55.panelCssWidth},function(){ +cb(); +}); +}else{ +_57.slideDown("normal",function(){ +cb(); +}); +} +}else{ +if(_55.halign=="left"||_55.halign=="right"){ +_56.css("width",_55.panelCssWidth); +} +cb(); +} +function cb(){ +_57.show(); +_55.collapsed=false; +_55.onExpand.call(_53); +_2b(_53); +_35(_53); +}; +}; +function _3d(_59){ +var _5a=$.data(_59,"panel").options; +var _5b=$.data(_59,"panel").panel; +var _5c=_5b.children(".panel-header").find("a.panel-tool-max"); +if(_5a.maximized==true){ +return; +} +_5c.addClass("panel-tool-restore"); +if(!$.data(_59,"panel").original){ +$.data(_59,"panel").original={width:_5a.width,height:_5a.height,left:_5a.left,top:_5a.top,fit:_5a.fit}; +} +_5a.left=0; +_5a.top=0; +_5a.fit=true; +_3(_59); +_5a.minimized=false; +_5a.maximized=true; +_5a.onMaximize.call(_59); +}; +function _5d(_5e){ +var _5f=$.data(_5e,"panel").options; +var _60=$.data(_5e,"panel").panel; +_60._size("unfit"); +_60.hide(); +_5f.minimized=true; +_5f.maximized=false; +_5f.onMinimize.call(_5e); +}; +function _61(_62){ +var _63=$.data(_62,"panel").options; +var _64=$.data(_62,"panel").panel; +var _65=_64.children(".panel-header").find("a.panel-tool-max"); +if(_63.maximized==false){ +return; +} +_64.show(); +_65.removeClass("panel-tool-restore"); +$.extend(_63,$.data(_62,"panel").original); +_3(_62); +_63.minimized=false; +_63.maximized=false; +$.data(_62,"panel").original=null; +_63.onRestore.call(_62); +}; +function _66(_67,_68){ +$.data(_67,"panel").options.title=_68; +$(_67).panel("header").find("div.panel-title").html(_68); +}; +var _69=null; +$(window).unbind(".panel").bind("resize.panel",function(){ +if(_69){ +clearTimeout(_69); +} +_69=setTimeout(function(){ +var _6a=$("body.layout"); +if(_6a.length){ +_6a.layout("resize"); +$("body").children(".easyui-fluid:visible").each(function(){ +$(this).triggerHandler("_resize"); +}); +}else{ +$("body").panel("doLayout"); +} +_69=null; +},100); +}); +$.fn.panel=function(_6b,_6c){ +if(typeof _6b=="string"){ +return $.fn.panel.methods[_6b](this,_6c); +} +_6b=_6b||{}; +return this.each(function(){ +var _6d=$.data(this,"panel"); +var _6e; +if(_6d){ +_6e=$.extend(_6d.options,_6b); +_6d.isLoaded=false; +}else{ +_6e=$.extend({},$.fn.panel.defaults,$.fn.panel.parseOptions(this),_6b); +$(this).attr("title",""); +_6d=$.data(this,"panel",{options:_6e,panel:_17(this),isLoaded:false}); +} +_1b(this); +$(this).show(); +if(_6e.doSize==true){ +_6d.panel.css("display","block"); +_3(this); +} +if(_6e.closed==true||_6e.minimized==true){ +_6d.panel.hide(); +}else{ +_37(this); +} +}); +}; +$.fn.panel.methods={options:function(jq){ +return $.data(jq[0],"panel").options; +},panel:function(jq){ +return $.data(jq[0],"panel").panel; +},header:function(jq){ +return $.data(jq[0],"panel").panel.children(".panel-header"); +},footer:function(jq){ +return jq.panel("panel").children(".panel-footer"); +},body:function(jq){ +return $.data(jq[0],"panel").panel.children(".panel-body"); +},setTitle:function(jq,_6f){ +return jq.each(function(){ +_66(this,_6f); +}); +},open:function(jq,_70){ +return jq.each(function(){ +_37(this,_70); +}); +},close:function(jq,_71){ +return jq.each(function(){ +_3f(this,_71); +}); +},destroy:function(jq,_72){ +return jq.each(function(){ +_45(this,_72); +}); +},clear:function(jq,_73){ +return jq.each(function(){ +_33(_73=="footer"?$(this).panel("footer"):this); +}); +},refresh:function(jq,_74){ +return jq.each(function(){ +var _75=$.data(this,"panel"); +_75.isLoaded=false; +if(_74){ +if(typeof _74=="string"){ +_75.options.href=_74; +}else{ +_75.options.queryParams=_74; +} +} +_2b(this); +}); +},resize:function(jq,_76){ +return jq.each(function(){ +_3(this,_76); +}); +},doLayout:function(jq,all){ +return jq.each(function(){ +_77(this,"body"); +_77($(this).siblings(".panel-footer")[0],"footer"); +function _77(_78,_79){ +if(!_78){ +return; +} +var _7a=_78==$("body")[0]; +var s=$(_78).find("div.panel:visible,div.accordion:visible,div.tabs-container:visible,div.layout:visible,.easyui-fluid:visible").filter(function(_7b,el){ +var p=$(el).parents(".panel-"+_79+":first"); +return _7a?p.length==0:p[0]==_78; +}); +s.each(function(){ +$(this).triggerHandler("_resize",[all||false]); +}); +}; +}); +},move:function(jq,_7c){ +return jq.each(function(){ +_11(this,_7c); +}); +},maximize:function(jq){ +return jq.each(function(){ +_3d(this); +}); +},minimize:function(jq){ +return jq.each(function(){ +_5d(this); +}); +},restore:function(jq){ +return jq.each(function(){ +_61(this); +}); +},collapse:function(jq,_7d){ +return jq.each(function(){ +_3e(this,_7d); +}); +},expand:function(jq,_7e){ +return jq.each(function(){ +_52(this,_7e); +}); +}}; +$.fn.panel.parseOptions=function(_7f){ +var t=$(_7f); +var hh=t.children(".panel-header,header"); +var ff=t.children(".panel-footer,footer"); +return $.extend({},$.parser.parseOptions(_7f,["id","width","height","left","top","title","iconCls","cls","headerCls","bodyCls","tools","href","method","header","footer","halign","titleDirection",{cache:"boolean",fit:"boolean",border:"boolean",noheader:"boolean"},{collapsible:"boolean",minimizable:"boolean",maximizable:"boolean"},{closable:"boolean",collapsed:"boolean",minimized:"boolean",maximized:"boolean",closed:"boolean"},"openAnimation","closeAnimation",{openDuration:"number",closeDuration:"number"},]),{loadingMessage:(t.attr("loadingMessage")!=undefined?t.attr("loadingMessage"):undefined),header:(hh.length?hh.removeClass("panel-header"):undefined),footer:(ff.length?ff.removeClass("panel-footer"):undefined)}); +}; +$.fn.panel.defaults={id:null,title:null,iconCls:null,width:"auto",height:"auto",left:null,top:null,cls:null,headerCls:null,bodyCls:null,style:{},href:null,cache:true,fit:false,border:true,doSize:true,noheader:false,content:null,halign:"top",titleDirection:"down",collapsible:false,minimizable:false,maximizable:false,closable:false,collapsed:false,minimized:false,maximized:false,closed:false,openAnimation:false,openDuration:400,closeAnimation:false,closeDuration:400,tools:null,footer:null,header:null,queryParams:{},method:"get",href:null,loadingMessage:"Loading...",loader:function(_80,_81,_82){ +var _83=$(this).panel("options"); +if(!_83.href){ +return false; +} +$.ajax({type:_83.method,url:_83.href,cache:false,data:_80,dataType:"html",success:function(_84){ +_81(_84); +},error:function(){ +_82.apply(this,arguments); +}}); +},extractor:function(_85){ +var _86=/]*>((.|[\n\r])*)<\/body>/im; +var _87=_86.exec(_85); +if(_87){ +return _87[1]; +}else{ +return _85; +} +},onBeforeLoad:function(_88){ +},onLoad:function(){ +},onLoadError:function(){ +},onBeforeOpen:function(){ +},onOpen:function(){ +},onBeforeClose:function(){ +},onClose:function(){ +},onBeforeDestroy:function(){ +},onDestroy:function(){ +},onResize:function(_89,_8a){ +},onMove:function(_8b,top){ +},onMaximize:function(){ +},onRestore:function(){ +},onMinimize:function(){ +},onBeforeCollapse:function(){ +},onBeforeExpand:function(){ +},onCollapse:function(){ +},onExpand:function(){ +}}; +})(jQuery); + diff --git a/src/main/webapp/static/easyUI/plugins/jquery.parser.js b/src/main/webapp/static/easyUI/plugins/jquery.parser.js new file mode 100644 index 0000000000000000000000000000000000000000..79a83ebe544815aa7b7ae4b4ee3cdcb6f8480c9e --- /dev/null +++ b/src/main/webapp/static/easyUI/plugins/jquery.parser.js @@ -0,0 +1,386 @@ +/** + * jQuery EasyUI 1.5.2 + * + * Copyright (c) 2009-2017 www.jeasyui.com. All rights reserved. + * + * Licensed under the freeware license: http://www.jeasyui.com/license_freeware.php + * To use it on other terms please contact us: info@jeasyui.com + * + */ +(function($){ +$.easyui={indexOfArray:function(a,o,id){ +for(var i=0,_1=a.length;i<_1;i++){ +if(id==undefined){ +if(a[i]==o){ +return i; +} +}else{ +if(a[i][o]==id){ +return i; +} +} +} +return -1; +},removeArrayItem:function(a,o,id){ +if(typeof o=="string"){ +for(var i=0,_2=a.length;i<_2;i++){ +if(a[i][o]==id){ +a.splice(i,1); +return; +} +} +}else{ +var _3=this.indexOfArray(a,o); +if(_3!=-1){ +a.splice(_3,1); +} +} +},addArrayItem:function(a,o,r){ +var _4=this.indexOfArray(a,o,r?r[o]:undefined); +if(_4==-1){ +a.push(r?r:o); +}else{ +a[_4]=r?r:o; +} +},getArrayItem:function(a,o,id){ +var _5=this.indexOfArray(a,o,id); +return _5==-1?null:a[_5]; +},forEach:function(_6,_7,_8){ +var _9=[]; +for(var i=0;i<_6.length;i++){ +_9.push(_6[i]); +} +while(_9.length){ +var _a=_9.shift(); +if(_8(_a)==false){ +return; +} +if(_7&&_a.children){ +for(var i=_a.children.length-1;i>=0;i--){ +_9.unshift(_a.children[i]); +} +} +} +}}; +$.parser={auto:true,onComplete:function(_b){ +},plugins:["draggable","droppable","resizable","pagination","tooltip","linkbutton","menu","menubutton","splitbutton","switchbutton","progressbar","tree","textbox","passwordbox","filebox","combo","combobox","combotree","combogrid","combotreegrid","tagbox","numberbox","validatebox","searchbox","spinner","numberspinner","timespinner","datetimespinner","calendar","datebox","datetimebox","slider","layout","panel","datagrid","propertygrid","treegrid","datalist","tabs","accordion","window","dialog","form"],parse:function(_c){ +var aa=[]; +for(var i=0;i<$.parser.plugins.length;i++){ +var _d=$.parser.plugins[i]; +var r=$(".easyui-"+_d,_c); +if(r.length){ +if(r[_d]){ +r.each(function(){ +$(this)[_d]($.data(this,"options")||{}); +}); +}else{ +aa.push({name:_d,jq:r}); +} +} +} +if(aa.length&&window.easyloader){ +var _e=[]; +for(var i=0;i=0){ +v=Math.floor((_12.width()-_13)*v/100); +}else{ +v=Math.floor((_12.height()-_13)*v/100); +} +}else{ +v=parseInt(v)||undefined; +} +return v; +},parseOptions:function(_15,_16){ +var t=$(_15); +var _17={}; +var s=$.trim(t.attr("data-options")); +if(s){ +if(s.substring(0,1)!="{"){ +s="{"+s+"}"; +} +_17=(new Function("return "+s))(); +} +$.map(["width","height","left","top","minWidth","maxWidth","minHeight","maxHeight"],function(p){ +var pv=$.trim(_15.style[p]||""); +if(pv){ +if(pv.indexOf("%")==-1){ +pv=parseInt(pv); +if(isNaN(pv)){ +pv=undefined; +} +} +_17[p]=pv; +} +}); +if(_16){ +var _18={}; +for(var i=0;i<_16.length;i++){ +var pp=_16[i]; +if(typeof pp=="string"){ +_18[pp]=t.attr(pp); +}else{ +for(var _19 in pp){ +var _1a=pp[_19]; +if(_1a=="boolean"){ +_18[_19]=t.attr(_19)?(t.attr(_19)=="true"):undefined; +}else{ +if(_1a=="number"){ +_18[_19]=t.attr(_19)=="0"?0:parseFloat(t.attr(_19))||undefined; +} +} +} +} +} +$.extend(_17,_18); +} +return _17; +}}; +$(function(){ +var d=$("
            ").appendTo("body"); +$._boxModel=d.outerWidth()!=100; +d.remove(); +d=$("
            ").appendTo("body"); +$._positionFixed=(d.css("position")=="fixed"); +d.remove(); +if(!window.easyloader&&$.parser.auto){ +$.parser.parse(); +} +}); +$.fn._outerWidth=function(_1b){ +if(_1b==undefined){ +if(this[0]==window){ +return this.width()||document.body.clientWidth; +} +return this.outerWidth()||0; +} +return this._size("width",_1b); +}; +$.fn._outerHeight=function(_1c){ +if(_1c==undefined){ +if(this[0]==window){ +return this.height()||document.body.clientHeight; +} +return this.outerHeight()||0; +} +return this._size("height",_1c); +}; +$.fn._scrollLeft=function(_1d){ +if(_1d==undefined){ +return this.scrollLeft(); +}else{ +return this.each(function(){ +$(this).scrollLeft(_1d); +}); +} +}; +$.fn._propAttr=$.fn.prop||$.fn.attr; +$.fn._size=function(_1e,_1f){ +if(typeof _1e=="string"){ +if(_1e=="clear"){ +return this.each(function(){ +$(this).css({width:"",minWidth:"",maxWidth:"",height:"",minHeight:"",maxHeight:""}); +}); +}else{ +if(_1e=="fit"){ +return this.each(function(){ +_20(this,this.tagName=="BODY"?$("body"):$(this).parent(),true); +}); +}else{ +if(_1e=="unfit"){ +return this.each(function(){ +_20(this,$(this).parent(),false); +}); +}else{ +if(_1f==undefined){ +return _21(this[0],_1e); +}else{ +return this.each(function(){ +_21(this,_1e,_1f); +}); +} +} +} +} +}else{ +return this.each(function(){ +_1f=_1f||$(this).parent(); +$.extend(_1e,_20(this,_1f,_1e.fit)||{}); +var r1=_22(this,"width",_1f,_1e); +var r2=_22(this,"height",_1f,_1e); +if(r1||r2){ +$(this).addClass("easyui-fluid"); +}else{ +$(this).removeClass("easyui-fluid"); +} +}); +} +function _20(_23,_24,fit){ +if(!_24.length){ +return false; +} +var t=$(_23)[0]; +var p=_24[0]; +var _25=p.fcount||0; +if(fit){ +if(!t.fitted){ +t.fitted=true; +p.fcount=_25+1; +$(p).addClass("panel-noscroll"); +if(p.tagName=="BODY"){ +$("html").addClass("panel-fit"); +} +} +return {width:($(p).width()||1),height:($(p).height()||1)}; +}else{ +if(t.fitted){ +t.fitted=false; +p.fcount=_25-1; +if(p.fcount==0){ +$(p).removeClass("panel-noscroll"); +if(p.tagName=="BODY"){ +$("html").removeClass("panel-fit"); +} +} +} +return false; +} +}; +function _22(_26,_27,_28,_29){ +var t=$(_26); +var p=_27; +var p1=p.substr(0,1).toUpperCase()+p.substr(1); +var min=$.parser.parseValue("min"+p1,_29["min"+p1],_28); +var max=$.parser.parseValue("max"+p1,_29["max"+p1],_28); +var val=$.parser.parseValue(p,_29[p],_28); +var _2a=(String(_29[p]||"").indexOf("%")>=0?true:false); +if(!isNaN(val)){ +var v=Math.min(Math.max(val,min||0),max||99999); +if(!_2a){ +_29[p]=v; +} +t._size("min"+p1,""); +t._size("max"+p1,""); +t._size(p,v); +}else{ +t._size(p,""); +t._size("min"+p1,min); +t._size("max"+p1,max); +} +return _2a||_29.fit; +}; +function _21(_2b,_2c,_2d){ +var t=$(_2b); +if(_2d==undefined){ +_2d=parseInt(_2b.style[_2c]); +if(isNaN(_2d)){ +return undefined; +} +if($._boxModel){ +_2d+=_2e(); +} +return _2d; +}else{ +if(_2d===""){ +t.css(_2c,""); +}else{ +if($._boxModel){ +_2d-=_2e(); +if(_2d<0){ +_2d=0; +} +} +t.css(_2c,_2d+"px"); +} +} +function _2e(){ +if(_2c.toLowerCase().indexOf("width")>=0){ +return t.outerWidth()-t.width(); +}else{ +return t.outerHeight()-t.height(); +} +}; +}; +}; +})(jQuery); +(function($){ +var _2f=null; +var _30=null; +var _31=false; +function _32(e){ +if(e.touches.length!=1){ +return; +} +if(!_31){ +_31=true; +dblClickTimer=setTimeout(function(){ +_31=false; +},500); +}else{ +clearTimeout(dblClickTimer); +_31=false; +_33(e,"dblclick"); +} +_2f=setTimeout(function(){ +_33(e,"contextmenu",3); +},1000); +_33(e,"mousedown"); +if($.fn.draggable.isDragging||$.fn.resizable.isResizing){ +e.preventDefault(); +} +}; +function _34(e){ +if(e.touches.length!=1){ +return; +} +if(_2f){ +clearTimeout(_2f); +} +_33(e,"mousemove"); +if($.fn.draggable.isDragging||$.fn.resizable.isResizing){ +e.preventDefault(); +} +}; +function _35(e){ +if(_2f){ +clearTimeout(_2f); +} +_33(e,"mouseup"); +if($.fn.draggable.isDragging||$.fn.resizable.isResizing){ +e.preventDefault(); +} +}; +function _33(e,_36,_37){ +var _38=new $.Event(_36); +_38.pageX=e.changedTouches[0].pageX; +_38.pageY=e.changedTouches[0].pageY; +_38.which=_37||1; +$(e.target).trigger(_38); +}; +if(document.addEventListener){ +document.addEventListener("touchstart",_32,true); +document.addEventListener("touchmove",_34,true); +document.addEventListener("touchend",_35,true); +} +})(jQuery); + diff --git a/src/main/webapp/static/easyUI/plugins/jquery.passwordbox.js b/src/main/webapp/static/easyUI/plugins/jquery.passwordbox.js new file mode 100644 index 0000000000000000000000000000000000000000..5f2b3ce78940c634264e9c2689b1b8d837f64727 --- /dev/null +++ b/src/main/webapp/static/easyUI/plugins/jquery.passwordbox.js @@ -0,0 +1,156 @@ +/** + * jQuery EasyUI 1.5.2 + * + * Copyright (c) 2009-2017 www.jeasyui.com. All rights reserved. + * + * Licensed under the freeware license: http://www.jeasyui.com/license_freeware.php + * To use it on other terms please contact us: info@jeasyui.com + * + */ +(function($){ +function _1(_2){ +var _3=$.data(_2,"passwordbox"); +var _4=_3.options; +var _5=$.extend(true,[],_4.icons); +if(_4.showEye){ +_5.push({iconCls:"passwordbox-open",handler:function(e){ +_4.revealed=!_4.revealed; +_6(_2); +}}); +} +$(_2).addClass("passwordbox-f").textbox($.extend({},_4,{icons:_5})); +_6(_2); +}; +function _7(_8,_9,_a){ +var t=$(_8); +var _b=t.passwordbox("options"); +if(_b.revealed){ +t.textbox("setValue",_9); +return; +} +var _c=unescape(_b.passwordChar); +var cc=_9.split(""); +var vv=t.passwordbox("getValue").split(""); +for(var i=0;i
            "); +$(_2).bind("_resize",function(e,_3){ +if($(this).hasClass("easyui-fluid")||_3){ +_4(_2); +} +return false; +}); +return $(_2); +}; +function _4(_5,_6){ +var _7=$.data(_5,"progressbar").options; +var _8=$.data(_5,"progressbar").bar; +if(_6){ +_7.width=_6; +} +_8._size(_7); +_8.find("div.progressbar-text").css("width",_8.width()); +_8.find("div.progressbar-text,div.progressbar-value").css({height:_8.height()+"px",lineHeight:_8.height()+"px"}); +}; +$.fn.progressbar=function(_9,_a){ +if(typeof _9=="string"){ +var _b=$.fn.progressbar.methods[_9]; +if(_b){ +return _b(this,_a); +} +} +_9=_9||{}; +return this.each(function(){ +var _c=$.data(this,"progressbar"); +if(_c){ +$.extend(_c.options,_9); +}else{ +_c=$.data(this,"progressbar",{options:$.extend({},$.fn.progressbar.defaults,$.fn.progressbar.parseOptions(this),_9),bar:_1(this)}); +} +$(this).progressbar("setValue",_c.options.value); +_4(this); +}); +}; +$.fn.progressbar.methods={options:function(jq){ +return $.data(jq[0],"progressbar").options; +},resize:function(jq,_d){ +return jq.each(function(){ +_4(this,_d); +}); +},getValue:function(jq){ +return $.data(jq[0],"progressbar").options.value; +},setValue:function(jq,_e){ +if(_e<0){ +_e=0; +} +if(_e>100){ +_e=100; +} +return jq.each(function(){ +var _f=$.data(this,"progressbar").options; +var _10=_f.text.replace(/{value}/,_e); +var _11=_f.value; +_f.value=_e; +$(this).find("div.progressbar-value").width(_e+"%"); +$(this).find("div.progressbar-text").html(_10); +if(_11!=_e){ +_f.onChange.call(this,_e,_11); +} +}); +}}; +$.fn.progressbar.parseOptions=function(_12){ +return $.extend({},$.parser.parseOptions(_12,["width","height","text",{value:"number"}])); +}; +$.fn.progressbar.defaults={width:"auto",height:22,value:0,text:"{value}%",onChange:function(_13,_14){ +}}; +})(jQuery); + diff --git a/src/main/webapp/static/easyUI/plugins/jquery.propertygrid.js b/src/main/webapp/static/easyUI/plugins/jquery.propertygrid.js new file mode 100644 index 0000000000000000000000000000000000000000..4dcfadbcbaa66327876f37c5f60ee6ebfe1657de --- /dev/null +++ b/src/main/webapp/static/easyUI/plugins/jquery.propertygrid.js @@ -0,0 +1,330 @@ +/** + * jQuery EasyUI 1.5.2 + * + * Copyright (c) 2009-2017 www.jeasyui.com. All rights reserved. + * + * Licensed under the freeware license: http://www.jeasyui.com/license_freeware.php + * To use it on other terms please contact us: info@jeasyui.com + * + */ +(function($){ +var _1; +$(document).unbind(".propertygrid").bind("mousedown.propertygrid",function(e){ +var p=$(e.target).closest("div.datagrid-view,div.combo-panel"); +if(p.length){ +return; +} +_2(_1); +_1=undefined; +}); +function _3(_4){ +var _5=$.data(_4,"propertygrid"); +var _6=$.data(_4,"propertygrid").options; +$(_4).datagrid($.extend({},_6,{cls:"propertygrid",view:(_6.showGroup?_6.groupView:_6.view),onBeforeEdit:function(_7,_8){ +if(_6.onBeforeEdit.call(_4,_7,_8)==false){ +return false; +} +var dg=$(this); +var _8=dg.datagrid("getRows")[_7]; +var _9=dg.datagrid("getColumnOption","value"); +_9.editor=_8.editor; +},onClickCell:function(_a,_b,_c){ +if(_1!=this){ +_2(_1); +_1=this; +} +if(_6.editIndex!=_a){ +_2(_1); +$(this).datagrid("beginEdit",_a); +var ed=$(this).datagrid("getEditor",{index:_a,field:_b}); +if(!ed){ +ed=$(this).datagrid("getEditor",{index:_a,field:"value"}); +} +if(ed){ +var t=$(ed.target); +var _d=t.data("textbox")?t.textbox("textbox"):t; +_d.focus(); +_6.editIndex=_a; +} +} +_6.onClickCell.call(_4,_a,_b,_c); +},loadFilter:function(_e){ +_2(this); +return _6.loadFilter.call(this,_e); +}})); +}; +function _2(_f){ +var t=$(_f); +if(!t.length){ +return; +} +var _10=$.data(_f,"propertygrid").options; +_10.finder.getTr(_f,null,"editing").each(function(){ +var _11=parseInt($(this).attr("datagrid-row-index")); +if(t.datagrid("validateRow",_11)){ +t.datagrid("endEdit",_11); +}else{ +t.datagrid("cancelEdit",_11); +} +}); +_10.editIndex=undefined; +}; +$.fn.propertygrid=function(_12,_13){ +if(typeof _12=="string"){ +var _14=$.fn.propertygrid.methods[_12]; +if(_14){ +return _14(this,_13); +}else{ +return this.datagrid(_12,_13); +} +} +_12=_12||{}; +return this.each(function(){ +var _15=$.data(this,"propertygrid"); +if(_15){ +$.extend(_15.options,_12); +}else{ +var _16=$.extend({},$.fn.propertygrid.defaults,$.fn.propertygrid.parseOptions(this),_12); +_16.frozenColumns=$.extend(true,[],_16.frozenColumns); +_16.columns=$.extend(true,[],_16.columns); +$.data(this,"propertygrid",{options:_16}); +} +_3(this); +}); +}; +$.fn.propertygrid.methods={options:function(jq){ +return $.data(jq[0],"propertygrid").options; +}}; +$.fn.propertygrid.parseOptions=function(_17){ +return $.extend({},$.fn.datagrid.parseOptions(_17),$.parser.parseOptions(_17,[{showGroup:"boolean"}])); +}; +var _18=$.extend({},$.fn.datagrid.defaults.view,{render:function(_19,_1a,_1b){ +var _1c=[]; +var _1d=this.groups; +for(var i=0;i<_1d.length;i++){ +_1c.push(this.renderGroup.call(this,_19,i,_1d[i],_1b)); +} +$(_1a).html(_1c.join("")); +},renderGroup:function(_1e,_1f,_20,_21){ +var _22=$.data(_1e,"datagrid"); +var _23=_22.options; +var _24=$(_1e).datagrid("getColumnFields",_21); +var _25=[]; +_25.push("
            "); +if((_21&&(_23.rownumbers||_23.frozenColumns.length))||(!_21&&!(_23.rownumbers||_23.frozenColumns.length))){ +_25.push(""); +_25.push(" "); +_25.push(""); +} +if(!_21){ +_25.push(""); +_25.push(_23.groupFormatter.call(_1e,_20.value,_20.rows)); +_25.push(""); +} +_25.push("
            "); +_25.push(""); +var _26=_20.startIndex; +for(var j=0;j<_20.rows.length;j++){ +var css=_23.rowStyler?_23.rowStyler.call(_1e,_26,_20.rows[j]):""; +var _27=""; +var _28=""; +if(typeof css=="string"){ +_28=css; +}else{ +if(css){ +_27=css["class"]||""; +_28=css["style"]||""; +} +} +var cls="class=\"datagrid-row "+(_26%2&&_23.striped?"datagrid-row-alt ":" ")+_27+"\""; +var _29=_28?"style=\""+_28+"\"":""; +var _2a=_22.rowIdPrefix+"-"+(_21?1:2)+"-"+_26; +_25.push(""); +_25.push(this.renderRow.call(this,_1e,_24,_21,_26,_20.rows[j])); +_25.push(""); +_26++; +} +_25.push("
            "); +return _25.join(""); +},bindEvents:function(_2b){ +var _2c=$.data(_2b,"datagrid"); +var dc=_2c.dc; +var _2d=dc.body1.add(dc.body2); +var _2e=($.data(_2d[0],"events")||$._data(_2d[0],"events")).click[0].handler; +_2d.unbind("click").bind("click",function(e){ +var tt=$(e.target); +var _2f=tt.closest("span.datagrid-row-expander"); +if(_2f.length){ +var _30=_2f.closest("div.datagrid-group").attr("group-index"); +if(_2f.hasClass("datagrid-row-collapse")){ +$(_2b).datagrid("collapseGroup",_30); +}else{ +$(_2b).datagrid("expandGroup",_30); +} +}else{ +_2e(e); +} +e.stopPropagation(); +}); +},onBeforeRender:function(_31,_32){ +var _33=$.data(_31,"datagrid"); +var _34=_33.options; +_35(); +var _36=[]; +for(var i=0;i<_32.length;i++){ +var row=_32[i]; +var _37=_38(row[_34.groupField]); +if(!_37){ +_37={value:row[_34.groupField],rows:[row]}; +_36.push(_37); +}else{ +_37.rows.push(row); +} +} +var _39=0; +var _3a=[]; +for(var i=0;i<_36.length;i++){ +var _37=_36[i]; +_37.startIndex=_39; +_39+=_37.rows.length; +_3a=_3a.concat(_37.rows); +} +_33.data.rows=_3a; +this.groups=_36; +var _3b=this; +setTimeout(function(){ +_3b.bindEvents(_31); +},0); +function _38(_3c){ +for(var i=0;i<_36.length;i++){ +var _3d=_36[i]; +if(_3d.value==_3c){ +return _3d; +} +} +return null; +}; +function _35(){ +if(!$("#datagrid-group-style").length){ +$("head").append(""); +} +}; +}}); +$.extend($.fn.datagrid.methods,{groups:function(jq){ +return jq.datagrid("options").view.groups; +},expandGroup:function(jq,_3e){ +return jq.each(function(){ +var _3f=$.data(this,"datagrid").dc.view; +var _40=_3f.find(_3e!=undefined?"div.datagrid-group[group-index=\""+_3e+"\"]":"div.datagrid-group"); +var _41=_40.find("span.datagrid-row-expander"); +if(_41.hasClass("datagrid-row-expand")){ +_41.removeClass("datagrid-row-expand").addClass("datagrid-row-collapse"); +_40.next("table").show(); +} +$(this).datagrid("fixRowHeight"); +}); +},collapseGroup:function(jq,_42){ +return jq.each(function(){ +var _43=$.data(this,"datagrid").dc.view; +var _44=_43.find(_42!=undefined?"div.datagrid-group[group-index=\""+_42+"\"]":"div.datagrid-group"); +var _45=_44.find("span.datagrid-row-expander"); +if(_45.hasClass("datagrid-row-collapse")){ +_45.removeClass("datagrid-row-collapse").addClass("datagrid-row-expand"); +_44.next("table").hide(); +} +$(this).datagrid("fixRowHeight"); +}); +}}); +$.extend(_18,{refreshGroupTitle:function(_46,_47){ +var _48=$.data(_46,"datagrid"); +var _49=_48.options; +var dc=_48.dc; +var _4a=this.groups[_47]; +var _4b=dc.body2.children("div.datagrid-group[group-index="+_47+"]").find("span.datagrid-group-title"); +_4b.html(_49.groupFormatter.call(_46,_4a.value,_4a.rows)); +},insertRow:function(_4c,_4d,row){ +var _4e=$.data(_4c,"datagrid"); +var _4f=_4e.options; +var dc=_4e.dc; +var _50=null; +var _51; +if(!_4e.data.rows.length){ +$(_4c).datagrid("loadData",[row]); +return; +} +for(var i=0;i_50.startIndex+_50.rows.length){ +_4d=_50.startIndex+_50.rows.length; +} +} +$.fn.datagrid.defaults.view.insertRow.call(this,_4c,_4d,row); +if(_4d>=_50.startIndex+_50.rows.length){ +_52(_4d,true); +_52(_4d,false); +} +_50.rows.splice(_4d-_50.startIndex,0,row); +}else{ +_50={value:row[_4f.groupField],rows:[row],startIndex:_4e.data.rows.length}; +_51=this.groups.length; +dc.body1.append(this.renderGroup.call(this,_4c,_51,_50,true)); +dc.body2.append(this.renderGroup.call(this,_4c,_51,_50,false)); +this.groups.push(_50); +_4e.data.rows.push(row); +} +this.refreshGroupTitle(_4c,_51); +function _52(_53,_54){ +var _55=_54?1:2; +var _56=_4f.finder.getTr(_4c,_53-1,"body",_55); +var tr=_4f.finder.getTr(_4c,_53,"body",_55); +tr.insertAfter(_56); +}; +},updateRow:function(_57,_58,row){ +var _59=$.data(_57,"datagrid").options; +$.fn.datagrid.defaults.view.updateRow.call(this,_57,_58,row); +var tb=_59.finder.getTr(_57,_58,"body",2).closest("table.datagrid-btable"); +var _5a=parseInt(tb.prev().attr("group-index")); +this.refreshGroupTitle(_57,_5a); +},deleteRow:function(_5b,_5c){ +var _5d=$.data(_5b,"datagrid"); +var _5e=_5d.options; +var dc=_5d.dc; +var _5f=dc.body1.add(dc.body2); +var tb=_5e.finder.getTr(_5b,_5c,"body",2).closest("table.datagrid-btable"); +var _60=parseInt(tb.prev().attr("group-index")); +$.fn.datagrid.defaults.view.deleteRow.call(this,_5b,_5c); +var _61=this.groups[_60]; +if(_61.rows.length>1){ +_61.rows.splice(_5c-_61.startIndex,1); +this.refreshGroupTitle(_5b,_60); +}else{ +_5f.children("div.datagrid-group[group-index="+_60+"]").remove(); +for(var i=_60+1;i_13.top&&e.pageY<_13.top+_16){ +dir+="n"; +}else{ +if(e.pageY<_13.top+_15&&e.pageY>_13.top+_15-_16){ +dir+="s"; +} +} +if(e.pageX>_13.left&&e.pageX<_13.left+_16){ +dir+="w"; +}else{ +if(e.pageX<_13.left+_14&&e.pageX>_13.left+_14-_16){ +dir+="e"; +} +} +var _17=_d.handles.split(","); +for(var i=0;i<_17.length;i++){ +var _18=_17[i].replace(/(^\s*)|(\s*$)/g,""); +if(_18=="all"||_18==dir){ +return dir; +} +} +return ""; +}; +}); +}; +$.fn.resizable.methods={options:function(jq){ +return $.data(jq[0],"resizable").options; +},enable:function(jq){ +return jq.each(function(){ +$(this).resizable({disabled:false}); +}); +},disable:function(jq){ +return jq.each(function(){ +$(this).resizable({disabled:true}); +}); +}}; +$.fn.resizable.parseOptions=function(_19){ +var t=$(_19); +return $.extend({},$.parser.parseOptions(_19,["handles",{minWidth:"number",minHeight:"number",maxWidth:"number",maxHeight:"number",edge:"number"}]),{disabled:(t.attr("disabled")?true:undefined)}); +}; +$.fn.resizable.defaults={disabled:false,handles:"n, e, s, w, ne, se, sw, nw, all",minWidth:10,minHeight:10,maxWidth:10000,maxHeight:10000,edge:5,onStartResize:function(e){ +},onResize:function(e){ +},onStopResize:function(e){ +}}; +$.fn.resizable.isResizing=false; +})(jQuery); + diff --git a/src/main/webapp/static/easyUI/plugins/jquery.searchbox.js b/src/main/webapp/static/easyUI/plugins/jquery.searchbox.js new file mode 100644 index 0000000000000000000000000000000000000000..b9de55731ebad4fdd3287cf3c038055e6a9bae19 --- /dev/null +++ b/src/main/webapp/static/easyUI/plugins/jquery.searchbox.js @@ -0,0 +1,132 @@ +/** + * jQuery EasyUI 1.5.2 + * + * Copyright (c) 2009-2017 www.jeasyui.com. All rights reserved. + * + * Licensed under the freeware license: http://www.jeasyui.com/license_freeware.php + * To use it on other terms please contact us: info@jeasyui.com + * + */ +(function($){ +function _1(_2){ +var _3=$.data(_2,"searchbox"); +var _4=_3.options; +var _5=$.extend(true,[],_4.icons); +_5.push({iconCls:"searchbox-button",handler:function(e){ +var t=$(e.data.target); +var _6=t.searchbox("options"); +_6.searcher.call(e.data.target,t.searchbox("getValue"),t.searchbox("getName")); +}}); +_7(); +var _8=_9(); +$(_2).addClass("searchbox-f").textbox($.extend({},_4,{icons:_5,buttonText:(_8?_8.text:"")})); +$(_2).attr("searchboxName",$(_2).attr("textboxName")); +_3.searchbox=$(_2).next(); +_3.searchbox.addClass("searchbox"); +_a(_8); +function _7(){ +if(_4.menu){ +_3.menu=$(_4.menu).menu(); +var _b=_3.menu.menu("options"); +var _c=_b.onClick; +_b.onClick=function(_d){ +_a(_d); +_c.call(this,_d); +}; +}else{ +if(_3.menu){ +_3.menu.menu("destroy"); +} +_3.menu=null; +} +}; +function _9(){ +if(_3.menu){ +var _e=_3.menu.children("div.menu-item:first"); +_3.menu.children("div.menu-item").each(function(){ +var _f=$.extend({},$.parser.parseOptions(this),{selected:($(this).attr("selected")?true:undefined)}); +if(_f.selected){ +_e=$(this); +return false; +} +}); +return _3.menu.menu("getItem",_e[0]); +}else{ +return null; +} +}; +function _a(_10){ +if(!_10){ +return; +} +$(_2).textbox("button").menubutton({text:_10.text,iconCls:(_10.iconCls||null),menu:_3.menu,menuAlign:_4.buttonAlign,plain:false}); +_3.searchbox.find("input.textbox-value").attr("name",_10.name||_10.text); +$(_2).searchbox("resize"); +}; +}; +$.fn.searchbox=function(_11,_12){ +if(typeof _11=="string"){ +var _13=$.fn.searchbox.methods[_11]; +if(_13){ +return _13(this,_12); +}else{ +return this.textbox(_11,_12); +} +} +_11=_11||{}; +return this.each(function(){ +var _14=$.data(this,"searchbox"); +if(_14){ +$.extend(_14.options,_11); +}else{ +$.data(this,"searchbox",{options:$.extend({},$.fn.searchbox.defaults,$.fn.searchbox.parseOptions(this),_11)}); +} +_1(this); +}); +}; +$.fn.searchbox.methods={options:function(jq){ +var _15=jq.textbox("options"); +return $.extend($.data(jq[0],"searchbox").options,{width:_15.width,value:_15.value,originalValue:_15.originalValue,disabled:_15.disabled,readonly:_15.readonly}); +},menu:function(jq){ +return $.data(jq[0],"searchbox").menu; +},getName:function(jq){ +return $.data(jq[0],"searchbox").searchbox.find("input.textbox-value").attr("name"); +},selectName:function(jq,_16){ +return jq.each(function(){ +var _17=$.data(this,"searchbox").menu; +if(_17){ +_17.children("div.menu-item").each(function(){ +var _18=_17.menu("getItem",this); +if(_18.name==_16){ +$(this).triggerHandler("click"); +return false; +} +}); +} +}); +},destroy:function(jq){ +return jq.each(function(){ +var _19=$(this).searchbox("menu"); +if(_19){ +_19.menu("destroy"); +} +$(this).textbox("destroy"); +}); +}}; +$.fn.searchbox.parseOptions=function(_1a){ +var t=$(_1a); +return $.extend({},$.fn.textbox.parseOptions(_1a),$.parser.parseOptions(_1a,["menu"]),{searcher:(t.attr("searcher")?eval(t.attr("searcher")):undefined)}); +}; +$.fn.searchbox.defaults=$.extend({},$.fn.textbox.defaults,{inputEvents:$.extend({},$.fn.textbox.defaults.inputEvents,{keydown:function(e){ +if(e.keyCode==13){ +e.preventDefault(); +var t=$(e.data.target); +var _1b=t.searchbox("options"); +t.searchbox("setValue",$(this).val()); +_1b.searcher.call(e.data.target,t.searchbox("getValue"),t.searchbox("getName")); +return false; +} +}}),buttonAlign:"left",menu:null,searcher:function(_1c,_1d){ +}}); +})(jQuery); + diff --git a/src/main/webapp/static/easyUI/plugins/jquery.slider.js b/src/main/webapp/static/easyUI/plugins/jquery.slider.js new file mode 100644 index 0000000000000000000000000000000000000000..59ef1a467a6b5db091094ad8e0ae1755a508f2c9 --- /dev/null +++ b/src/main/webapp/static/easyUI/plugins/jquery.slider.js @@ -0,0 +1,339 @@ +/** + * jQuery EasyUI 1.5.2 + * + * Copyright (c) 2009-2017 www.jeasyui.com. All rights reserved. + * + * Licensed under the freeware license: http://www.jeasyui.com/license_freeware.php + * To use it on other terms please contact us: info@jeasyui.com + * + */ +(function($){ +function _1(_2){ +var _3=$("
            "+"
            "+""+""+"
            "+"
            "+"
            "+"
            "+""+"
            ").insertAfter(_2); +var t=$(_2); +t.addClass("slider-f").hide(); +var _4=t.attr("name"); +if(_4){ +_3.find("input.slider-value").attr("name",_4); +t.removeAttr("name").attr("sliderName",_4); +} +_3.bind("_resize",function(e,_5){ +if($(this).hasClass("easyui-fluid")||_5){ +_6(_2); +} +return false; +}); +return _3; +}; +function _6(_7,_8){ +var _9=$.data(_7,"slider"); +var _a=_9.options; +var _b=_9.slider; +if(_8){ +if(_8.width){ +_a.width=_8.width; +} +if(_8.height){ +_a.height=_8.height; +} +} +_b._size(_a); +if(_a.mode=="h"){ +_b.css("height",""); +_b.children("div").css("height",""); +}else{ +_b.css("width",""); +_b.children("div").css("width",""); +_b.children("div.slider-rule,div.slider-rulelabel,div.slider-inner")._outerHeight(_b._outerHeight()); +} +_c(_7); +}; +function _d(_e){ +var _f=$.data(_e,"slider"); +var _10=_f.options; +var _11=_f.slider; +var aa=_10.mode=="h"?_10.rule:_10.rule.slice(0).reverse(); +if(_10.reversed){ +aa=aa.slice(0).reverse(); +} +_12(aa); +function _12(aa){ +var _13=_11.find("div.slider-rule"); +var _14=_11.find("div.slider-rulelabel"); +_13.empty(); +_14.empty(); +for(var i=0;i").appendTo(_13); +_16.css((_10.mode=="h"?"left":"top"),_15); +if(aa[i]!="|"){ +_16=$("").appendTo(_14); +_16.html(aa[i]); +if(_10.mode=="h"){ +_16.css({left:_15,marginLeft:-Math.round(_16.outerWidth()/2)}); +}else{ +_16.css({top:_15,marginTop:-Math.round(_16.outerHeight()/2)}); +} +} +} +}; +}; +function _17(_18){ +var _19=$.data(_18,"slider"); +var _1a=_19.options; +var _1b=_19.slider; +_1b.removeClass("slider-h slider-v slider-disabled"); +_1b.addClass(_1a.mode=="h"?"slider-h":"slider-v"); +_1b.addClass(_1a.disabled?"slider-disabled":""); +var _1c=_1b.find(".slider-inner"); +_1c.html(""+""); +if(_1a.range){ +_1c.append(""+""); +} +_1b.find("a.slider-handle").draggable({axis:_1a.mode,cursor:"pointer",disabled:_1a.disabled,onDrag:function(e){ +var _1d=e.data.left; +var _1e=_1b.width(); +if(_1a.mode!="h"){ +_1d=e.data.top; +_1e=_1b.height(); +} +if(_1d<0||_1d>_1e){ +return false; +}else{ +_1f(_1d,this); +return false; +} +},onStartDrag:function(){ +_19.isDragging=true; +_1a.onSlideStart.call(_18,_1a.value); +},onStopDrag:function(e){ +_1f(_1a.mode=="h"?e.data.left:e.data.top,this); +_1a.onSlideEnd.call(_18,_1a.value); +_1a.onComplete.call(_18,_1a.value); +_19.isDragging=false; +}}); +_1b.find("div.slider-inner").unbind(".slider").bind("mousedown.slider",function(e){ +if(_19.isDragging||_1a.disabled){ +return; +} +var pos=$(this).offset(); +_1f(_1a.mode=="h"?(e.pageX-pos.left):(e.pageY-pos.top)); +_1a.onComplete.call(_18,_1a.value); +}); +function _1f(pos,_20){ +var _21=_22(_18,pos); +var s=Math.abs(_21%_1a.step); +if(s<_1a.step/2){ +_21-=s; +}else{ +_21=_21-s+_1a.step; +} +if(_1a.range){ +var v1=_1a.value[0]; +var v2=_1a.value[1]; +var m=parseFloat((v1+v2)/2); +if(_20){ +var _23=$(_20).nextAll(".slider-handle").length>0; +if(_21<=v2&&_23){ +v1=_21; +}else{ +if(_21>=v1&&(!_23)){ +v2=_21; +} +} +}else{ +if(_21v2){ +v2=_21; +}else{ +_21_28.max){ +_2d=_28.max; +} +var _2e=$("").appendTo(_29); +_2e.attr("name",_2c); +_2e.val(_2d); +_2b.push(_2d); +var _2f=_29.find(".slider-handle:eq("+i+")"); +var tip=_2f.next(); +var pos=_30(_25,_2d); +if(_28.showTip){ +tip.show(); +tip.html(_28.tipFormatter.call(_25,_2d)); +}else{ +tip.hide(); +} +if(_28.mode=="h"){ +var _31="left:"+pos+"px;"; +_2f.attr("style",_31); +tip.attr("style",_31+"margin-left:"+(-Math.round(tip.outerWidth()/2))+"px"); +}else{ +var _31="top:"+pos+"px;"; +_2f.attr("style",_31); +tip.attr("style",_31+"margin-left:"+(-Math.round(tip.outerWidth()))+"px"); +} +} +_28.value=_28.range?_2b:_2b[0]; +$(_25).val(_28.range?_2b.join(_28.separator):_2b[0]); +if(_2a.join(",")!=_2b.join(",")){ +_28.onChange.call(_25,_28.value,(_28.range?_2a:_2a[0])); +} +}; +function _c(_32){ +var _33=$.data(_32,"slider").options; +var fn=_33.onChange; +_33.onChange=function(){ +}; +_24(_32,_33.value); +_33.onChange=fn; +}; +function _30(_34,_35){ +var _36=$.data(_34,"slider"); +var _37=_36.options; +var _38=_36.slider; +var _39=_37.mode=="h"?_38.width():_38.height(); +var pos=_37.converter.toPosition.call(_34,_35,_39); +if(_37.mode=="v"){ +pos=_38.height()-pos; +} +if(_37.reversed){ +pos=_39-pos; +} +return pos.toFixed(0); +}; +function _22(_3a,pos){ +var _3b=$.data(_3a,"slider"); +var _3c=_3b.options; +var _3d=_3b.slider; +var _3e=_3c.mode=="h"?_3d.width():_3d.height(); +var pos=_3c.mode=="h"?(_3c.reversed?(_3e-pos):pos):(_3c.reversed?pos:(_3e-pos)); +var _3f=_3c.converter.toValue.call(_3a,pos,_3e); +return _3f.toFixed(0); +}; +$.fn.slider=function(_40,_41){ +if(typeof _40=="string"){ +return $.fn.slider.methods[_40](this,_41); +} +_40=_40||{}; +return this.each(function(){ +var _42=$.data(this,"slider"); +if(_42){ +$.extend(_42.options,_40); +}else{ +_42=$.data(this,"slider",{options:$.extend({},$.fn.slider.defaults,$.fn.slider.parseOptions(this),_40),slider:_1(this)}); +$(this).removeAttr("disabled"); +} +var _43=_42.options; +_43.min=parseFloat(_43.min); +_43.max=parseFloat(_43.max); +if(_43.range){ +if(!$.isArray(_43.value)){ +_43.value=$.map(String(_43.value).split(_43.separator),function(v){ +return parseFloat(v); +}); +} +if(_43.value.length<2){ +_43.value.push(_43.max); +} +}else{ +_43.value=parseFloat(_43.value); +} +_43.step=parseFloat(_43.step); +_43.originalValue=_43.value; +_17(this); +_d(this); +_6(this); +}); +}; +$.fn.slider.methods={options:function(jq){ +return $.data(jq[0],"slider").options; +},destroy:function(jq){ +return jq.each(function(){ +$.data(this,"slider").slider.remove(); +$(this).remove(); +}); +},resize:function(jq,_44){ +return jq.each(function(){ +_6(this,_44); +}); +},getValue:function(jq){ +return jq.slider("options").value; +},getValues:function(jq){ +return jq.slider("options").value; +},setValue:function(jq,_45){ +return jq.each(function(){ +_24(this,[_45]); +}); +},setValues:function(jq,_46){ +return jq.each(function(){ +_24(this,_46); +}); +},clear:function(jq){ +return jq.each(function(){ +var _47=$(this).slider("options"); +_24(this,_47.range?[_47.min,_47.max]:[_47.min]); +}); +},reset:function(jq){ +return jq.each(function(){ +var _48=$(this).slider("options"); +$(this).slider(_48.range?"setValues":"setValue",_48.originalValue); +}); +},enable:function(jq){ +return jq.each(function(){ +$.data(this,"slider").options.disabled=false; +_17(this); +}); +},disable:function(jq){ +return jq.each(function(){ +$.data(this,"slider").options.disabled=true; +_17(this); +}); +}}; +$.fn.slider.parseOptions=function(_49){ +var t=$(_49); +return $.extend({},$.parser.parseOptions(_49,["width","height","mode",{reversed:"boolean",showTip:"boolean",range:"boolean",min:"number",max:"number",step:"number"}]),{value:(t.val()||undefined),disabled:(t.attr("disabled")?true:undefined),rule:(t.attr("rule")?eval(t.attr("rule")):undefined)}); +}; +$.fn.slider.defaults={width:"auto",height:"auto",mode:"h",reversed:false,showTip:false,disabled:false,range:false,value:0,separator:",",min:0,max:100,step:1,rule:[],tipFormatter:function(_4a){ +return _4a; +},converter:{toPosition:function(_4b,_4c){ +var _4d=$(this).slider("options"); +return (_4b-_4d.min)/(_4d.max-_4d.min)*_4c; +},toValue:function(pos,_4e){ +var _4f=$(this).slider("options"); +return _4f.min+(_4f.max-_4f.min)*(pos/_4e); +}},onChange:function(_50,_51){ +},onSlideStart:function(_52){ +},onSlideEnd:function(_53){ +},onComplete:function(_54){ +}}; +})(jQuery); + diff --git a/src/main/webapp/static/easyUI/plugins/jquery.spinner.js b/src/main/webapp/static/easyUI/plugins/jquery.spinner.js new file mode 100644 index 0000000000000000000000000000000000000000..fc9cfe7a69705b83420f67e530e1455e460b7a17 --- /dev/null +++ b/src/main/webapp/static/easyUI/plugins/jquery.spinner.js @@ -0,0 +1,129 @@ +/** + * jQuery EasyUI 1.5.2 + * + * Copyright (c) 2009-2017 www.jeasyui.com. All rights reserved. + * + * Licensed under the freeware license: http://www.jeasyui.com/license_freeware.php + * To use it on other terms please contact us: info@jeasyui.com + * + */ +(function($){ +function _1(_2){ +var _3=$.data(_2,"spinner"); +var _4=_3.options; +var _5=$.extend(true,[],_4.icons); +if(_4.spinAlign=="left"||_4.spinAlign=="right"){ +_4.spinArrow=true; +_4.iconAlign=_4.spinAlign; +var _6={iconCls:"spinner-arrow",handler:function(e){ +var _7=$(e.target).closest(".spinner-arrow-up,.spinner-arrow-down"); +_13(e.data.target,_7.hasClass("spinner-arrow-down")); +}}; +if(_4.spinAlign=="left"){ +_5.unshift(_6); +}else{ +_5.push(_6); +} +}else{ +_4.spinArrow=false; +if(_4.spinAlign=="vertical"){ +if(_4.buttonAlign!="top"){ +_4.buttonAlign="bottom"; +} +_4.clsLeft="textbox-button-bottom"; +_4.clsRight="textbox-button-top"; +}else{ +_4.clsLeft="textbox-button-left"; +_4.clsRight="textbox-button-right"; +} +} +$(_2).addClass("spinner-f").textbox($.extend({},_4,{icons:_5,doSize:false,onResize:function(_8,_9){ +if(!_4.spinArrow){ +var _a=$(this).next(); +var _b=_a.find(".textbox-button:not(.spinner-button)"); +if(_b.length){ +var _c=_b.outerWidth(); +var _d=_b.outerHeight(); +var _e=_a.find(".spinner-button."+_4.clsLeft); +var _f=_a.find(".spinner-button."+_4.clsRight); +if(_4.buttonAlign=="right"){ +_f.css("marginRight",_c+"px"); +}else{ +if(_4.buttonAlign=="left"){ +_e.css("marginLeft",_c+"px"); +}else{ +if(_4.buttonAlign=="top"){ +_f.css("marginTop",_d+"px"); +}else{ +_e.css("marginBottom",_d+"px"); +} +} +} +} +} +_4.onResize.call(this,_8,_9); +}})); +$(_2).attr("spinnerName",$(_2).attr("textboxName")); +_3.spinner=$(_2).next(); +_3.spinner.addClass("spinner"); +if(_4.spinArrow){ +var _10=_3.spinner.find(".spinner-arrow"); +_10.append(""); +_10.append(""); +}else{ +var _11=$("").addClass(_4.clsLeft).appendTo(_3.spinner); +var _12=$("").addClass(_4.clsRight).appendTo(_3.spinner); +_11.linkbutton({iconCls:_4.reversed?"spinner-button-up":"spinner-button-down",onClick:function(){ +_13(_2,!_4.reversed); +}}); +_12.linkbutton({iconCls:_4.reversed?"spinner-button-down":"spinner-button-up",onClick:function(){ +_13(_2,_4.reversed); +}}); +if(_4.disabled){ +$(_2).spinner("disable"); +} +if(_4.readonly){ +$(_2).spinner("readonly"); +} +} +$(_2).spinner("resize"); +}; +function _13(_14,_15){ +var _16=$(_14).spinner("options"); +_16.spin.call(_14,_15); +_16[_15?"onSpinDown":"onSpinUp"].call(_14); +$(_14).spinner("validate"); +}; +$.fn.spinner=function(_17,_18){ +if(typeof _17=="string"){ +var _19=$.fn.spinner.methods[_17]; +if(_19){ +return _19(this,_18); +}else{ +return this.textbox(_17,_18); +} +} +_17=_17||{}; +return this.each(function(){ +var _1a=$.data(this,"spinner"); +if(_1a){ +$.extend(_1a.options,_17); +}else{ +_1a=$.data(this,"spinner",{options:$.extend({},$.fn.spinner.defaults,$.fn.spinner.parseOptions(this),_17)}); +} +_1(this); +}); +}; +$.fn.spinner.methods={options:function(jq){ +var _1b=jq.textbox("options"); +return $.extend($.data(jq[0],"spinner").options,{width:_1b.width,value:_1b.value,originalValue:_1b.originalValue,disabled:_1b.disabled,readonly:_1b.readonly}); +}}; +$.fn.spinner.parseOptions=function(_1c){ +return $.extend({},$.fn.textbox.parseOptions(_1c),$.parser.parseOptions(_1c,["min","max","spinAlign",{increment:"number",reversed:"boolean"}])); +}; +$.fn.spinner.defaults=$.extend({},$.fn.textbox.defaults,{min:null,max:null,increment:1,spinAlign:"right",reversed:false,spin:function(_1d){ +},onSpinUp:function(){ +},onSpinDown:function(){ +}}); +})(jQuery); + diff --git a/src/main/webapp/static/easyUI/plugins/jquery.splitbutton.js b/src/main/webapp/static/easyUI/plugins/jquery.splitbutton.js new file mode 100644 index 0000000000000000000000000000000000000000..8f503f4c5363d0d92e796da8caa2c521d0bade8e --- /dev/null +++ b/src/main/webapp/static/easyUI/plugins/jquery.splitbutton.js @@ -0,0 +1,49 @@ +/** + * jQuery EasyUI 1.5.2 + * + * Copyright (c) 2009-2017 www.jeasyui.com. All rights reserved. + * + * Licensed under the freeware license: http://www.jeasyui.com/license_freeware.php + * To use it on other terms please contact us: info@jeasyui.com + * + */ +(function($){ +function _1(_2){ +var _3=$.data(_2,"splitbutton").options; +$(_2).menubutton(_3); +$(_2).addClass("s-btn"); +}; +$.fn.splitbutton=function(_4,_5){ +if(typeof _4=="string"){ +var _6=$.fn.splitbutton.methods[_4]; +if(_6){ +return _6(this,_5); +}else{ +return this.menubutton(_4,_5); +} +} +_4=_4||{}; +return this.each(function(){ +var _7=$.data(this,"splitbutton"); +if(_7){ +$.extend(_7.options,_4); +}else{ +$.data(this,"splitbutton",{options:$.extend({},$.fn.splitbutton.defaults,$.fn.splitbutton.parseOptions(this),_4)}); +$(this).removeAttr("disabled"); +} +_1(this); +}); +}; +$.fn.splitbutton.methods={options:function(jq){ +var _8=jq.menubutton("options"); +var _9=$.data(jq[0],"splitbutton").options; +$.extend(_9,{disabled:_8.disabled,toggle:_8.toggle,selected:_8.selected}); +return _9; +}}; +$.fn.splitbutton.parseOptions=function(_a){ +var t=$(_a); +return $.extend({},$.fn.linkbutton.parseOptions(_a),$.parser.parseOptions(_a,["menu",{plain:"boolean",duration:"number"}])); +}; +$.fn.splitbutton.defaults=$.extend({},$.fn.linkbutton.defaults,{plain:true,menu:null,duration:100,cls:{btn1:"m-btn-active s-btn-active",btn2:"m-btn-plain-active s-btn-plain-active",arrow:"m-btn-downarrow",trigger:"m-btn-line"}}); +})(jQuery); + diff --git a/src/main/webapp/static/easyUI/plugins/jquery.switchbutton.js b/src/main/webapp/static/easyUI/plugins/jquery.switchbutton.js new file mode 100644 index 0000000000000000000000000000000000000000..670ffd9f1c317e1c887c9bbae9869cd2530d1a4d --- /dev/null +++ b/src/main/webapp/static/easyUI/plugins/jquery.switchbutton.js @@ -0,0 +1,193 @@ +/** + * jQuery EasyUI 1.5.2 + * + * Copyright (c) 2009-2017 www.jeasyui.com. All rights reserved. + * + * Licensed under the freeware license: http://www.jeasyui.com/license_freeware.php + * To use it on other terms please contact us: info@jeasyui.com + * + */ +(function($){ +function _1(_2){ +var _3=$(""+""+""+""+""+""+""+"").insertAfter(_2); +var t=$(_2); +t.addClass("switchbutton-f").hide(); +var _4=t.attr("name"); +if(_4){ +t.removeAttr("name").attr("switchbuttonName",_4); +_3.find(".switchbutton-value").attr("name",_4); +} +_3.bind("_resize",function(e,_5){ +if($(this).hasClass("easyui-fluid")||_5){ +_6(_2); +} +return false; +}); +return _3; +}; +function _6(_7,_8){ +var _9=$.data(_7,"switchbutton"); +var _a=_9.options; +var _b=_9.switchbutton; +if(_8){ +$.extend(_a,_8); +} +var _c=_b.is(":visible"); +if(!_c){ +_b.appendTo("body"); +} +_b._size(_a); +var w=_b.width(); +var h=_b.height(); +var w=_b.outerWidth(); +var h=_b.outerHeight(); +var _d=parseInt(_a.handleWidth)||_b.height(); +var _e=w*2-_d; +_b.find(".switchbutton-inner").css({width:_e+"px",height:h+"px",lineHeight:h+"px"}); +_b.find(".switchbutton-handle")._outerWidth(_d)._outerHeight(h).css({marginLeft:-_d/2+"px"}); +_b.find(".switchbutton-on").css({width:(w-_d/2)+"px",textIndent:(_a.reversed?"":"-")+_d/2+"px"}); +_b.find(".switchbutton-off").css({width:(w-_d/2)+"px",textIndent:(_a.reversed?"-":"")+_d/2+"px"}); +_a.marginWidth=w-_d; +_f(_7,_a.checked,false); +if(!_c){ +_b.insertAfter(_7); +} +}; +function _10(_11){ +var _12=$.data(_11,"switchbutton"); +var _13=_12.options; +var _14=_12.switchbutton; +var _15=_14.find(".switchbutton-inner"); +var on=_15.find(".switchbutton-on").html(_13.onText); +var off=_15.find(".switchbutton-off").html(_13.offText); +var _16=_15.find(".switchbutton-handle").html(_13.handleText); +if(_13.reversed){ +off.prependTo(_15); +on.insertAfter(_16); +}else{ +on.prependTo(_15); +off.insertAfter(_16); +} +_14.find(".switchbutton-value")._propAttr("checked",_13.checked); +_14.removeClass("switchbutton-disabled").addClass(_13.disabled?"switchbutton-disabled":""); +_14.removeClass("switchbutton-reversed").addClass(_13.reversed?"switchbutton-reversed":""); +_f(_11,_13.checked); +_17(_11,_13.readonly); +$(_11).switchbutton("setValue",_13.value); +}; +function _f(_18,_19,_1a){ +var _1b=$.data(_18,"switchbutton"); +var _1c=_1b.options; +_1c.checked=_19; +var _1d=_1b.switchbutton.find(".switchbutton-inner"); +var _1e=_1d.find(".switchbutton-on"); +var _1f=_1c.reversed?(_1c.checked?_1c.marginWidth:0):(_1c.checked?0:_1c.marginWidth); +var dir=_1e.css("float").toLowerCase(); +var css={}; +css["margin-"+dir]=-_1f+"px"; +_1a?_1d.animate(css,200):_1d.css(css); +var _20=_1d.find(".switchbutton-value"); +var ck=_20.is(":checked"); +$(_18).add(_20)._propAttr("checked",_1c.checked); +if(ck!=_1c.checked){ +_1c.onChange.call(_18,_1c.checked); +} +}; +function _21(_22,_23){ +var _24=$.data(_22,"switchbutton"); +var _25=_24.options; +var _26=_24.switchbutton; +var _27=_26.find(".switchbutton-value"); +if(_23){ +_25.disabled=true; +$(_22).add(_27).attr("disabled","disabled"); +_26.addClass("switchbutton-disabled"); +}else{ +_25.disabled=false; +$(_22).add(_27).removeAttr("disabled"); +_26.removeClass("switchbutton-disabled"); +} +}; +function _17(_28,_29){ +var _2a=$.data(_28,"switchbutton"); +var _2b=_2a.options; +_2b.readonly=_29==undefined?true:_29; +_2a.switchbutton.removeClass("switchbutton-readonly").addClass(_2b.readonly?"switchbutton-readonly":""); +}; +function _2c(_2d){ +var _2e=$.data(_2d,"switchbutton"); +var _2f=_2e.options; +_2e.switchbutton.unbind(".switchbutton").bind("click.switchbutton",function(){ +if(!_2f.disabled&&!_2f.readonly){ +_f(_2d,_2f.checked?false:true,true); +} +}); +}; +$.fn.switchbutton=function(_30,_31){ +if(typeof _30=="string"){ +return $.fn.switchbutton.methods[_30](this,_31); +} +_30=_30||{}; +return this.each(function(){ +var _32=$.data(this,"switchbutton"); +if(_32){ +$.extend(_32.options,_30); +}else{ +_32=$.data(this,"switchbutton",{options:$.extend({},$.fn.switchbutton.defaults,$.fn.switchbutton.parseOptions(this),_30),switchbutton:_1(this)}); +} +_32.options.originalChecked=_32.options.checked; +_10(this); +_6(this); +_2c(this); +}); +}; +$.fn.switchbutton.methods={options:function(jq){ +var _33=jq.data("switchbutton"); +return $.extend(_33.options,{value:_33.switchbutton.find(".switchbutton-value").val()}); +},resize:function(jq,_34){ +return jq.each(function(){ +_6(this,_34); +}); +},enable:function(jq){ +return jq.each(function(){ +_21(this,false); +}); +},disable:function(jq){ +return jq.each(function(){ +_21(this,true); +}); +},readonly:function(jq,_35){ +return jq.each(function(){ +_17(this,_35); +}); +},check:function(jq){ +return jq.each(function(){ +_f(this,true); +}); +},uncheck:function(jq){ +return jq.each(function(){ +_f(this,false); +}); +},clear:function(jq){ +return jq.each(function(){ +_f(this,false); +}); +},reset:function(jq){ +return jq.each(function(){ +var _36=$(this).switchbutton("options"); +_f(this,_36.originalChecked); +}); +},setValue:function(jq,_37){ +return jq.each(function(){ +$(this).val(_37); +$.data(this,"switchbutton").switchbutton.find(".switchbutton-value").val(_37); +}); +}}; +$.fn.switchbutton.parseOptions=function(_38){ +var t=$(_38); +return $.extend({},$.parser.parseOptions(_38,["onText","offText","handleText",{handleWidth:"number",reversed:"boolean"}]),{value:(t.val()||undefined),checked:(t.attr("checked")?true:undefined),disabled:(t.attr("disabled")?true:undefined),readonly:(t.attr("readonly")?true:undefined)}); +}; +$.fn.switchbutton.defaults={handleWidth:"auto",width:60,height:26,checked:false,disabled:false,readonly:false,reversed:false,onText:"ON",offText:"OFF",handleText:"",value:"on",onChange:function(_39){ +}}; +})(jQuery); + diff --git a/src/main/webapp/static/easyUI/plugins/jquery.tabs.js b/src/main/webapp/static/easyUI/plugins/jquery.tabs.js new file mode 100644 index 0000000000000000000000000000000000000000..b5ace148ab9f4e6b88c546534b7737cf1fad4c9e --- /dev/null +++ b/src/main/webapp/static/easyUI/plugins/jquery.tabs.js @@ -0,0 +1,708 @@ +/** + * jQuery EasyUI 1.5.2 + * + * Copyright (c) 2009-2017 www.jeasyui.com. All rights reserved. + * + * Licensed under the freeware license: http://www.jeasyui.com/license_freeware.php + * To use it on other terms please contact us: info@jeasyui.com + * + */ +(function($){ +function _1(c){ +var w=0; +$(c).children().each(function(){ +w+=$(this).outerWidth(true); +}); +return w; +}; +function _2(_3){ +var _4=$.data(_3,"tabs").options; +if(_4.tabPosition=="left"||_4.tabPosition=="right"||!_4.showHeader){ +return; +} +var _5=$(_3).children("div.tabs-header"); +var _6=_5.children("div.tabs-tool:not(.tabs-tool-hidden)"); +var _7=_5.children("div.tabs-scroller-left"); +var _8=_5.children("div.tabs-scroller-right"); +var _9=_5.children("div.tabs-wrap"); +var _a=_5.outerHeight(); +if(_4.plain){ +_a-=_a-_5.height(); +} +_6._outerHeight(_a); +var _b=_1(_5.find("ul.tabs")); +var _c=_5.width()-_6._outerWidth(); +if(_b>_c){ +_7.add(_8).show()._outerHeight(_a); +if(_4.toolPosition=="left"){ +_6.css({left:_7.outerWidth(),right:""}); +_9.css({marginLeft:_7.outerWidth()+_6._outerWidth(),marginRight:_8._outerWidth(),width:_c-_7.outerWidth()-_8.outerWidth()}); +}else{ +_6.css({left:"",right:_8.outerWidth()}); +_9.css({marginLeft:_7.outerWidth(),marginRight:_8.outerWidth()+_6._outerWidth(),width:_c-_7.outerWidth()-_8.outerWidth()}); +} +}else{ +_7.add(_8).hide(); +if(_4.toolPosition=="left"){ +_6.css({left:0,right:""}); +_9.css({marginLeft:_6._outerWidth(),marginRight:0,width:_c}); +}else{ +_6.css({left:"",right:0}); +_9.css({marginLeft:0,marginRight:_6._outerWidth(),width:_c}); +} +} +}; +function _d(_e){ +var _f=$.data(_e,"tabs").options; +var _10=$(_e).children("div.tabs-header"); +if(_f.tools){ +if(typeof _f.tools=="string"){ +$(_f.tools).addClass("tabs-tool").appendTo(_10); +$(_f.tools).show(); +}else{ +_10.children("div.tabs-tool").remove(); +var _11=$("
            ").appendTo(_10); +var tr=_11.find("tr"); +for(var i=0;i<_f.tools.length;i++){ +var td=$("").appendTo(tr); +var _12=$("").appendTo(td); +_12[0].onclick=eval(_f.tools[i].handler||function(){ +}); +_12.linkbutton($.extend({},_f.tools[i],{plain:true})); +} +} +}else{ +_10.children("div.tabs-tool").remove(); +} +}; +function _13(_14,_15){ +var _16=$.data(_14,"tabs"); +var _17=_16.options; +var cc=$(_14); +if(!_17.doSize){ +return; +} +if(_15){ +$.extend(_17,{width:_15.width,height:_15.height}); +} +cc._size(_17); +var _18=cc.children("div.tabs-header"); +var _19=cc.children("div.tabs-panels"); +var _1a=_18.find("div.tabs-wrap"); +var ul=_1a.find(".tabs"); +ul.children("li").removeClass("tabs-first tabs-last"); +ul.children("li:first").addClass("tabs-first"); +ul.children("li:last").addClass("tabs-last"); +if(_17.tabPosition=="left"||_17.tabPosition=="right"){ +_18._outerWidth(_17.showHeader?_17.headerWidth:0); +_19._outerWidth(cc.width()-_18.outerWidth()); +_18.add(_19)._size("height",isNaN(parseInt(_17.height))?"":cc.height()); +_1a._outerWidth(_18.width()); +ul._outerWidth(_1a.width()).css("height",""); +}else{ +_18.children("div.tabs-scroller-left,div.tabs-scroller-right,div.tabs-tool:not(.tabs-tool-hidden)").css("display",_17.showHeader?"block":"none"); +_18._outerWidth(cc.width()).css("height",""); +if(_17.showHeader){ +_18.css("background-color",""); +_1a.css("height",""); +}else{ +_18.css("background-color","transparent"); +_18._outerHeight(0); +_1a._outerHeight(0); +} +ul._outerHeight(_17.tabHeight).css("width",""); +ul._outerHeight(ul.outerHeight()-ul.height()-1+_17.tabHeight).css("width",""); +_19._size("height",isNaN(parseInt(_17.height))?"":(cc.height()-_18.outerHeight())); +_19._size("width",cc.width()); +} +if(_16.tabs.length){ +var d1=ul.outerWidth(true)-ul.width(); +var li=ul.children("li:first"); +var d2=li.outerWidth(true)-li.width(); +var _1b=_18.width()-_18.children(".tabs-tool:not(.tabs-tool-hidden)")._outerWidth(); +var _1c=Math.floor((_1b-d1-d2*_16.tabs.length)/_16.tabs.length); +$.map(_16.tabs,function(p){ +_1d(p,(_17.justified&&$.inArray(_17.tabPosition,["top","bottom"])>=0)?_1c:undefined); +}); +if(_17.justified&&$.inArray(_17.tabPosition,["top","bottom"])>=0){ +var _1e=_1b-d1-_1(ul); +_1d(_16.tabs[_16.tabs.length-1],_1c+_1e); +} +} +_2(_14); +function _1d(p,_1f){ +var _20=p.panel("options"); +var p_t=_20.tab.find("a.tabs-inner"); +var _1f=_1f?_1f:(parseInt(_20.tabWidth||_17.tabWidth||undefined)); +if(_1f){ +p_t._outerWidth(_1f); +}else{ +p_t.css("width",""); +} +p_t._outerHeight(_17.tabHeight); +p_t.css("lineHeight",p_t.height()+"px"); +p_t.find(".easyui-fluid:visible").triggerHandler("_resize"); +}; +}; +function _21(_22){ +var _23=$.data(_22,"tabs").options; +var tab=_24(_22); +if(tab){ +var _25=$(_22).children("div.tabs-panels"); +var _26=_23.width=="auto"?"auto":_25.width(); +var _27=_23.height=="auto"?"auto":_25.height(); +tab.panel("resize",{width:_26,height:_27}); +} +}; +function _28(_29){ +var _2a=$.data(_29,"tabs").tabs; +var cc=$(_29).addClass("tabs-container"); +var _2b=$("
            ").insertBefore(cc); +cc.children("div").each(function(){ +_2b[0].appendChild(this); +}); +cc[0].appendChild(_2b[0]); +$("
            "+"
            "+"
            "+"
            "+"
              "+"
              "+"
              ").prependTo(_29); +cc.children("div.tabs-panels").children("div").each(function(i){ +var _2c=$.extend({},$.parser.parseOptions(this),{disabled:($(this).attr("disabled")?true:undefined),selected:($(this).attr("selected")?true:undefined)}); +_3c(_29,_2c,$(this)); +}); +cc.children("div.tabs-header").find(".tabs-scroller-left, .tabs-scroller-right").hover(function(){ +$(this).addClass("tabs-scroller-over"); +},function(){ +$(this).removeClass("tabs-scroller-over"); +}); +cc.bind("_resize",function(e,_2d){ +if($(this).hasClass("easyui-fluid")||_2d){ +_13(_29); +_21(_29); +} +return false; +}); +}; +function _2e(_2f){ +var _30=$.data(_2f,"tabs"); +var _31=_30.options; +$(_2f).children("div.tabs-header").unbind().bind("click",function(e){ +if($(e.target).hasClass("tabs-scroller-left")){ +$(_2f).tabs("scrollBy",-_31.scrollIncrement); +}else{ +if($(e.target).hasClass("tabs-scroller-right")){ +$(_2f).tabs("scrollBy",_31.scrollIncrement); +}else{ +var li=$(e.target).closest("li"); +if(li.hasClass("tabs-disabled")){ +return false; +} +var a=$(e.target).closest("a.tabs-close"); +if(a.length){ +_5a(_2f,_32(li)); +}else{ +if(li.length){ +var _33=_32(li); +var _34=_30.tabs[_33].panel("options"); +if(_34.collapsible){ +_34.closed?_50(_2f,_33):_75(_2f,_33); +}else{ +_50(_2f,_33); +} +} +} +return false; +} +} +}).bind("contextmenu",function(e){ +var li=$(e.target).closest("li"); +if(li.hasClass("tabs-disabled")){ +return; +} +if(li.length){ +_31.onContextMenu.call(_2f,e,li.find("span.tabs-title").html(),_32(li)); +} +}); +function _32(li){ +var _35=0; +li.parent().children("li").each(function(i){ +if(li[0]==this){ +_35=i; +return false; +} +}); +return _35; +}; +}; +function _36(_37){ +var _38=$.data(_37,"tabs").options; +var _39=$(_37).children("div.tabs-header"); +var _3a=$(_37).children("div.tabs-panels"); +_39.removeClass("tabs-header-top tabs-header-bottom tabs-header-left tabs-header-right"); +_3a.removeClass("tabs-panels-top tabs-panels-bottom tabs-panels-left tabs-panels-right"); +if(_38.tabPosition=="top"){ +_39.insertBefore(_3a); +}else{ +if(_38.tabPosition=="bottom"){ +_39.insertAfter(_3a); +_39.addClass("tabs-header-bottom"); +_3a.addClass("tabs-panels-top"); +}else{ +if(_38.tabPosition=="left"){ +_39.addClass("tabs-header-left"); +_3a.addClass("tabs-panels-right"); +}else{ +if(_38.tabPosition=="right"){ +_39.addClass("tabs-header-right"); +_3a.addClass("tabs-panels-left"); +} +} +} +} +if(_38.plain==true){ +_39.addClass("tabs-header-plain"); +}else{ +_39.removeClass("tabs-header-plain"); +} +_39.removeClass("tabs-header-narrow").addClass(_38.narrow?"tabs-header-narrow":""); +var _3b=_39.find(".tabs"); +_3b.removeClass("tabs-pill").addClass(_38.pill?"tabs-pill":""); +_3b.removeClass("tabs-narrow").addClass(_38.narrow?"tabs-narrow":""); +_3b.removeClass("tabs-justified").addClass(_38.justified?"tabs-justified":""); +if(_38.border==true){ +_39.removeClass("tabs-header-noborder"); +_3a.removeClass("tabs-panels-noborder"); +}else{ +_39.addClass("tabs-header-noborder"); +_3a.addClass("tabs-panels-noborder"); +} +_38.doSize=true; +}; +function _3c(_3d,_3e,pp){ +_3e=_3e||{}; +var _3f=$.data(_3d,"tabs"); +var _40=_3f.tabs; +if(_3e.index==undefined||_3e.index>_40.length){ +_3e.index=_40.length; +} +if(_3e.index<0){ +_3e.index=0; +} +var ul=$(_3d).children("div.tabs-header").find("ul.tabs"); +var _41=$(_3d).children("div.tabs-panels"); +var tab=$("
            • "+""+""+""+""+"
            • "); +if(!pp){ +pp=$("
              "); +} +if(_3e.index>=_40.length){ +tab.appendTo(ul); +pp.appendTo(_41); +_40.push(pp); +}else{ +tab.insertBefore(ul.children("li:eq("+_3e.index+")")); +pp.insertBefore(_41.children("div.panel:eq("+_3e.index+")")); +_40.splice(_3e.index,0,pp); +} +pp.panel($.extend({},_3e,{tab:tab,border:false,noheader:true,closed:true,doSize:false,iconCls:(_3e.icon?_3e.icon:undefined),onLoad:function(){ +if(_3e.onLoad){ +_3e.onLoad.call(this,arguments); +} +_3f.options.onLoad.call(_3d,$(this)); +},onBeforeOpen:function(){ +if(_3e.onBeforeOpen){ +if(_3e.onBeforeOpen.call(this)==false){ +return false; +} +} +var p=$(_3d).tabs("getSelected"); +if(p){ +if(p[0]!=this){ +$(_3d).tabs("unselect",_4a(_3d,p)); +p=$(_3d).tabs("getSelected"); +if(p){ +return false; +} +}else{ +_21(_3d); +return false; +} +} +var _42=$(this).panel("options"); +_42.tab.addClass("tabs-selected"); +var _43=$(_3d).find(">div.tabs-header>div.tabs-wrap"); +var _44=_42.tab.position().left; +var _45=_44+_42.tab.outerWidth(); +if(_44<0||_45>_43.width()){ +var _46=_44-(_43.width()-_42.tab.width())/2; +$(_3d).tabs("scrollBy",_46); +}else{ +$(_3d).tabs("scrollBy",0); +} +var _47=$(this).panel("panel"); +_47.css("display","block"); +_21(_3d); +_47.css("display","none"); +},onOpen:function(){ +if(_3e.onOpen){ +_3e.onOpen.call(this); +} +var _48=$(this).panel("options"); +_3f.selectHis.push(_48.title); +_3f.options.onSelect.call(_3d,_48.title,_4a(_3d,this)); +},onBeforeClose:function(){ +if(_3e.onBeforeClose){ +if(_3e.onBeforeClose.call(this)==false){ +return false; +} +} +$(this).panel("options").tab.removeClass("tabs-selected"); +},onClose:function(){ +if(_3e.onClose){ +_3e.onClose.call(this); +} +var _49=$(this).panel("options"); +_3f.options.onUnselect.call(_3d,_49.title,_4a(_3d,this)); +}})); +$(_3d).tabs("update",{tab:pp,options:pp.panel("options"),type:"header"}); +}; +function _4b(_4c,_4d){ +var _4e=$.data(_4c,"tabs"); +var _4f=_4e.options; +if(_4d.selected==undefined){ +_4d.selected=true; +} +_3c(_4c,_4d); +_4f.onAdd.call(_4c,_4d.title,_4d.index); +if(_4d.selected){ +_50(_4c,_4d.index); +} +}; +function _51(_52,_53){ +_53.type=_53.type||"all"; +var _54=$.data(_52,"tabs").selectHis; +var pp=_53.tab; +var _55=pp.panel("options"); +var _56=_55.title; +$.extend(_55,_53.options,{iconCls:(_53.options.icon?_53.options.icon:undefined)}); +if(_53.type=="all"||_53.type=="body"){ +pp.panel(); +} +if(_53.type=="all"||_53.type=="header"){ +var tab=_55.tab; +if(_55.header){ +tab.find(".tabs-inner").html($(_55.header)); +}else{ +var _57=tab.find("span.tabs-title"); +var _58=tab.find("span.tabs-icon"); +_57.html(_55.title); +_58.attr("class","tabs-icon"); +tab.find("a.tabs-close").remove(); +if(_55.closable){ +_57.addClass("tabs-closable"); +$("").appendTo(tab); +}else{ +_57.removeClass("tabs-closable"); +} +if(_55.iconCls){ +_57.addClass("tabs-with-icon"); +_58.addClass(_55.iconCls); +}else{ +_57.removeClass("tabs-with-icon"); +} +if(_55.tools){ +var _59=tab.find("span.tabs-p-tool"); +if(!_59.length){ +var _59=$("").insertAfter(tab.find("a.tabs-inner")); +} +if($.isArray(_55.tools)){ +_59.empty(); +for(var i=0;i<_55.tools.length;i++){ +var t=$("").appendTo(_59); +t.addClass(_55.tools[i].iconCls); +if(_55.tools[i].handler){ +t.bind("click",{handler:_55.tools[i].handler},function(e){ +if($(this).parents("li").hasClass("tabs-disabled")){ +return; +} +e.data.handler.call(this); +}); +} +} +}else{ +$(_55.tools).children().appendTo(_59); +} +var pr=_59.children().length*12; +if(_55.closable){ +pr+=8; +_59.css("right",""); +}else{ +pr-=3; +_59.css("right","5px"); +} +_57.css("padding-right",pr+"px"); +}else{ +tab.find("span.tabs-p-tool").remove(); +_57.css("padding-right",""); +} +} +if(_56!=_55.title){ +for(var i=0;i<_54.length;i++){ +if(_54[i]==_56){ +_54[i]=_55.title; +} +} +} +} +if(_55.disabled){ +_55.tab.addClass("tabs-disabled"); +}else{ +_55.tab.removeClass("tabs-disabled"); +} +_13(_52); +$.data(_52,"tabs").options.onUpdate.call(_52,_55.title,_4a(_52,pp)); +}; +function _5a(_5b,_5c){ +var _5d=$.data(_5b,"tabs").options; +var _5e=$.data(_5b,"tabs").tabs; +var _5f=$.data(_5b,"tabs").selectHis; +if(!_60(_5b,_5c)){ +return; +} +var tab=_61(_5b,_5c); +var _62=tab.panel("options").title; +var _63=_4a(_5b,tab); +if(_5d.onBeforeClose.call(_5b,_62,_63)==false){ +return; +} +var tab=_61(_5b,_5c,true); +tab.panel("options").tab.remove(); +tab.panel("destroy"); +_5d.onClose.call(_5b,_62,_63); +_13(_5b); +for(var i=0;i<_5f.length;i++){ +if(_5f[i]==_62){ +_5f.splice(i,1); +i--; +} +} +var _64=_5f.pop(); +if(_64){ +_50(_5b,_64); +}else{ +if(_5e.length){ +_50(_5b,0); +} +} +}; +function _61(_65,_66,_67){ +var _68=$.data(_65,"tabs").tabs; +var tab=null; +if(typeof _66=="number"){ +if(_66>=0&&_66<_68.length){ +tab=_68[_66]; +if(_67){ +_68.splice(_66,1); +} +} +}else{ +var tmp=$(""); +for(var i=0;i<_68.length;i++){ +var p=_68[i]; +tmp.html(p.panel("options").title); +if(tmp.text()==_66){ +tab=p; +if(_67){ +_68.splice(i,1); +} +break; +} +} +tmp.remove(); +} +return tab; +}; +function _4a(_69,tab){ +var _6a=$.data(_69,"tabs").tabs; +for(var i=0;i<_6a.length;i++){ +if(_6a[i][0]==$(tab)[0]){ +return i; +} +} +return -1; +}; +function _24(_6b){ +var _6c=$.data(_6b,"tabs").tabs; +for(var i=0;i<_6c.length;i++){ +var tab=_6c[i]; +if(tab.panel("options").tab.hasClass("tabs-selected")){ +return tab; +} +} +return null; +}; +function _6d(_6e){ +var _6f=$.data(_6e,"tabs"); +var _70=_6f.tabs; +for(var i=0;i<_70.length;i++){ +var _71=_70[i].panel("options"); +if(_71.selected&&!_71.disabled){ +_50(_6e,i); +return; +} +} +_50(_6e,_6f.options.selected); +}; +function _50(_72,_73){ +var p=_61(_72,_73); +if(p&&!p.is(":visible")){ +_74(_72); +if(!p.panel("options").disabled){ +p.panel("open"); +} +} +}; +function _75(_76,_77){ +var p=_61(_76,_77); +if(p&&p.is(":visible")){ +_74(_76); +p.panel("close"); +} +}; +function _74(_78){ +$(_78).children("div.tabs-panels").each(function(){ +$(this).stop(true,true); +}); +}; +function _60(_79,_7a){ +return _61(_79,_7a)!=null; +}; +function _7b(_7c,_7d){ +var _7e=$.data(_7c,"tabs").options; +_7e.showHeader=_7d; +$(_7c).tabs("resize"); +}; +function _7f(_80,_81){ +var _82=$(_80).find(">.tabs-header>.tabs-tool"); +if(_81){ +_82.removeClass("tabs-tool-hidden").show(); +}else{ +_82.addClass("tabs-tool-hidden").hide(); +} +$(_80).tabs("resize").tabs("scrollBy",0); +}; +$.fn.tabs=function(_83,_84){ +if(typeof _83=="string"){ +return $.fn.tabs.methods[_83](this,_84); +} +_83=_83||{}; +return this.each(function(){ +var _85=$.data(this,"tabs"); +if(_85){ +$.extend(_85.options,_83); +}else{ +$.data(this,"tabs",{options:$.extend({},$.fn.tabs.defaults,$.fn.tabs.parseOptions(this),_83),tabs:[],selectHis:[]}); +_28(this); +} +_d(this); +_36(this); +_13(this); +_2e(this); +_6d(this); +}); +}; +$.fn.tabs.methods={options:function(jq){ +var cc=jq[0]; +var _86=$.data(cc,"tabs").options; +var s=_24(cc); +_86.selected=s?_4a(cc,s):-1; +return _86; +},tabs:function(jq){ +return $.data(jq[0],"tabs").tabs; +},resize:function(jq,_87){ +return jq.each(function(){ +_13(this,_87); +_21(this); +}); +},add:function(jq,_88){ +return jq.each(function(){ +_4b(this,_88); +}); +},close:function(jq,_89){ +return jq.each(function(){ +_5a(this,_89); +}); +},getTab:function(jq,_8a){ +return _61(jq[0],_8a); +},getTabIndex:function(jq,tab){ +return _4a(jq[0],tab); +},getSelected:function(jq){ +return _24(jq[0]); +},select:function(jq,_8b){ +return jq.each(function(){ +_50(this,_8b); +}); +},unselect:function(jq,_8c){ +return jq.each(function(){ +_75(this,_8c); +}); +},exists:function(jq,_8d){ +return _60(jq[0],_8d); +},update:function(jq,_8e){ +return jq.each(function(){ +_51(this,_8e); +}); +},enableTab:function(jq,_8f){ +return jq.each(function(){ +var _90=$(this).tabs("getTab",_8f).panel("options"); +_90.tab.removeClass("tabs-disabled"); +_90.disabled=false; +}); +},disableTab:function(jq,_91){ +return jq.each(function(){ +var _92=$(this).tabs("getTab",_91).panel("options"); +_92.tab.addClass("tabs-disabled"); +_92.disabled=true; +}); +},showHeader:function(jq){ +return jq.each(function(){ +_7b(this,true); +}); +},hideHeader:function(jq){ +return jq.each(function(){ +_7b(this,false); +}); +},showTool:function(jq){ +return jq.each(function(){ +_7f(this,true); +}); +},hideTool:function(jq){ +return jq.each(function(){ +_7f(this,false); +}); +},scrollBy:function(jq,_93){ +return jq.each(function(){ +var _94=$(this).tabs("options"); +var _95=$(this).find(">div.tabs-header>div.tabs-wrap"); +var pos=Math.min(_95._scrollLeft()+_93,_96()); +_95.animate({scrollLeft:pos},_94.scrollDuration); +function _96(){ +var w=0; +var ul=_95.children("ul"); +ul.children("li").each(function(){ +w+=$(this).outerWidth(true); +}); +return w-_95.width()+(ul.outerWidth()-ul.width()); +}; +}); +}}; +$.fn.tabs.parseOptions=function(_97){ +return $.extend({},$.parser.parseOptions(_97,["tools","toolPosition","tabPosition",{fit:"boolean",border:"boolean",plain:"boolean"},{headerWidth:"number",tabWidth:"number",tabHeight:"number",selected:"number"},{showHeader:"boolean",justified:"boolean",narrow:"boolean",pill:"boolean"}])); +}; +$.fn.tabs.defaults={width:"auto",height:"auto",headerWidth:150,tabWidth:"auto",tabHeight:27,selected:0,showHeader:true,plain:false,fit:false,border:true,justified:false,narrow:false,pill:false,tools:null,toolPosition:"right",tabPosition:"top",scrollIncrement:100,scrollDuration:400,onLoad:function(_98){ +},onSelect:function(_99,_9a){ +},onUnselect:function(_9b,_9c){ +},onBeforeClose:function(_9d,_9e){ +},onClose:function(_9f,_a0){ +},onAdd:function(_a1,_a2){ +},onUpdate:function(_a3,_a4){ +},onContextMenu:function(e,_a5,_a6){ +}}; +})(jQuery); + diff --git a/src/main/webapp/static/easyUI/plugins/jquery.tagbox.js b/src/main/webapp/static/easyUI/plugins/jquery.tagbox.js new file mode 100644 index 0000000000000000000000000000000000000000..273eb86958e021f6b6139398ba75228500766082 --- /dev/null +++ b/src/main/webapp/static/easyUI/plugins/jquery.tagbox.js @@ -0,0 +1,218 @@ +/** + * jQuery EasyUI 1.5.2 + * + * Copyright (c) 2009-2017 www.jeasyui.com. All rights reserved. + * + * Licensed under the freeware license: http://www.jeasyui.com/license_freeware.php + * To use it on other terms please contact us: info@jeasyui.com + * + */ +(function($){ +function _1(_2){ +var _3=$.data(_2,"tagbox"); +var _4=_3.options; +$(_2).addClass("tagbox-f").combobox($.extend({},_4,{cls:"tagbox",reversed:true,onChange:function(_5,_6){ +_7(); +$(this).combobox("hidePanel"); +_4.onChange.call(_2,_5,_6); +},onResizing:function(_8,_9){ +var _a=$(this).combobox("textbox"); +var tb=$(this).data("textbox").textbox; +tb.css({height:"",paddingLeft:_a.css("marginLeft"),paddingRight:_a.css("marginRight")}); +_a.css("margin",0); +tb._size({width:_4.width},$(this).parent()); +_23(_2); +_12(this); +_4.onResizing.call(_2,_8,_9); +},onLoadSuccess:function(_b){ +_7(); +_4.onLoadSuccess.call(_2,_b); +}})); +_7(); +_23(_2); +function _7(){ +$(_2).next().find(".tagbox-label").remove(); +var _c=$(_2).tagbox("textbox"); +var ss=[]; +$.map($(_2).tagbox("getValues"),function(_d,_e){ +var _f=_4.finder.getRow(_2,_d); +var _10=_4.tagFormatter.call(_2,_d,_f); +var cs={}; +var css=_4.tagStyler.call(_2,_d,_f)||""; +if(typeof css=="string"){ +cs={s:css}; +}else{ +cs={c:css["class"]||"",s:css["style"]||""}; +} +var _11=$("").insertBefore(_c).html(_10); +_11.attr("tagbox-index",_e); +_11.attr("style",cs.s).addClass(cs.c); +$("").appendTo(_11); +}); +_12(_2); +$(_2).combobox("setText",""); +}; +}; +function _12(_13,_14){ +var _15=$(_13).next(); +var _16=_14?$(_14):_15.find(".tagbox-label"); +if(_16.length){ +var _17=$(_13).tagbox("textbox"); +var _18=$(_16[0]); +var _19=_18.outerHeight(true)-_18.outerHeight(); +var _1a=_17.outerHeight()-_19*2; +_16.css({height:_1a+"px",lineHeight:_1a+"px"}); +var _1b=_15.find(".textbox-addon").css("height","100%"); +_1b.find(".textbox-icon").css("height","100%"); +_15.find(".textbox-button").linkbutton("resize",{height:"100%"}); +} +}; +function _1c(_1d){ +var _1e=$(_1d).next(); +_1e.unbind(".tagbox").bind("click.tagbox",function(e){ +var _1f=$(_1d).tagbox("options"); +if(_1f.disabled||_1f.readonly){ +return; +} +if($(e.target).hasClass("tagbox-remove")){ +var _20=parseInt($(e.target).parent().attr("tagbox-index")); +var _21=$(_1d).tagbox("getValues"); +if(_1f.onBeforeRemoveTag.call(_1d,_21[_20])==false){ +return; +} +_1f.onRemoveTag.call(_1d,_21[_20]); +_21.splice(_20,1); +$(_1d).tagbox("setValues",_21); +}else{ +var _22=$(e.target).closest(".tagbox-label"); +if(_22.length){ +var _20=parseInt(_22.attr("tagbox-index")); +var _21=$(_1d).tagbox("getValues"); +_1f.onClickTag.call(_1d,_21[_20]); +} +} +$(this).find(".textbox-text").focus(); +}).bind("keyup.tagbox",function(e){ +_23(_1d); +}).bind("mouseover.tagbox",function(e){ +if($(e.target).closest(".textbox-button,.textbox-addon,.tagbox-label").length){ +$(this).triggerHandler("mouseleave"); +}else{ +$(this).find(".textbox-text").triggerHandler("mouseenter"); +} +}).bind("mouseleave.tagbox",function(e){ +$(this).find(".textbox-text").triggerHandler("mouseleave"); +}); +}; +function _23(_24){ +var _25=$(_24).tagbox("options"); +var _26=$(_24).tagbox("textbox"); +var _27=$(_24).next(); +var tmp=$("").appendTo("body"); +tmp.attr("style",_26.attr("style")); +tmp.css({position:"absolute",top:-9999,left:-9999,width:"auto",fontFamily:_26.css("fontFamily"),fontSize:_26.css("fontSize"),fontWeight:_26.css("fontWeight"),whiteSpace:"nowrap"}); +var _28=_29(_26.val()); +var _2a=_29(_25.prompt||""); +tmp.remove(); +var _2b=Math.min(Math.max(_28,_2a)+20,_27.width()); +_26._outerWidth(_2b); +_27.find(".textbox-button").linkbutton("resize",{height:"100%"}); +function _29(val){ +var s=val.replace(/&/g,"&").replace(/\s/g," ").replace(//g,">"); +tmp.html(s); +return tmp.outerWidth(); +}; +}; +function _2c(_2d){ +var t=$(_2d); +var _2e=t.tagbox("options"); +if(_2e.limitToList){ +var _2f=t.tagbox("panel"); +var _30=_2f.children("div.combobox-item-hover"); +if(_30.length){ +_30.removeClass("combobox-item-hover"); +var row=_2e.finder.getRow(_2d,_30); +var _31=row[_2e.valueField]; +$(_2d).tagbox(_30.hasClass("combobox-item-selected")?"unselect":"select",_31); +} +$(_2d).tagbox("hidePanel"); +}else{ +var v=$.trim($(_2d).tagbox("getText")); +if(v!==""){ +var _32=$(_2d).tagbox("getValues"); +_32.push(v); +$(_2d).tagbox("setValues",_32); +} +} +}; +function _33(_34,_35){ +$(_34).combobox("setText",""); +_23(_34); +$(_34).combobox("setValues",_35); +$(_34).combobox("setText",""); +$(_34).tagbox("validate"); +}; +$.fn.tagbox=function(_36,_37){ +if(typeof _36=="string"){ +var _38=$.fn.tagbox.methods[_36]; +if(_38){ +return _38(this,_37); +}else{ +return this.combobox(_36,_37); +} +} +_36=_36||{}; +return this.each(function(){ +var _39=$.data(this,"tagbox"); +if(_39){ +$.extend(_39.options,_36); +}else{ +$.data(this,"tagbox",{options:$.extend({},$.fn.tagbox.defaults,$.fn.tagbox.parseOptions(this),_36)}); +} +_1(this); +_1c(this); +}); +}; +$.fn.tagbox.methods={options:function(jq){ +var _3a=jq.combobox("options"); +return $.extend($.data(jq[0],"tagbox").options,{width:_3a.width,height:_3a.height,originalValue:_3a.originalValue,disabled:_3a.disabled,readonly:_3a.readonly}); +},setValues:function(jq,_3b){ +return jq.each(function(){ +_33(this,_3b); +}); +}}; +$.fn.tagbox.parseOptions=function(_3c){ +return $.extend({},$.fn.combobox.parseOptions(_3c),$.parser.parseOptions(_3c,[])); +}; +$.fn.tagbox.defaults=$.extend({},$.fn.combobox.defaults,{hasDownArrow:false,multiple:true,reversed:true,selectOnNavigation:false,tipOptions:$.extend({},$.fn.textbox.defaults.tipOptions,{showDelay:200}),val:function(_3d){ +var vv=$(_3d).parent().prev().tagbox("getValues"); +if($(_3d).is(":focus")){ +vv.push($(_3d).val()); +} +return vv.join(","); +},inputEvents:$.extend({},$.fn.combo.defaults.inputEvents,{blur:function(e){ +var _3e=e.data.target; +var _3f=$(_3e).tagbox("options"); +if(_3f.limitToList){ +_2c(_3e); +} +}}),keyHandler:$.extend({},$.fn.combobox.defaults.keyHandler,{enter:function(e){ +_2c(this); +},query:function(q,e){ +var _40=$(this).tagbox("options"); +if(_40.limitToList){ +$.fn.combobox.defaults.keyHandler.query.call(this,q,e); +}else{ +$(this).combobox("hidePanel"); +} +}}),tagFormatter:function(_41,row){ +var _42=$(this).tagbox("options"); +return row?row[_42.textField]:_41; +},tagStyler:function(_43,row){ +return ""; +},onClickTag:function(_44){ +},onBeforeRemoveTag:function(_45){ +},onRemoveTag:function(_46){ +}}); +})(jQuery); + diff --git a/src/main/webapp/static/easyUI/plugins/jquery.textbox.js b/src/main/webapp/static/easyUI/plugins/jquery.textbox.js new file mode 100644 index 0000000000000000000000000000000000000000..08be422c4fc7e8c748bc8ab702aa43b467d375d2 --- /dev/null +++ b/src/main/webapp/static/easyUI/plugins/jquery.textbox.js @@ -0,0 +1,559 @@ +/** + * jQuery EasyUI 1.5.2 + * + * Copyright (c) 2009-2017 www.jeasyui.com. All rights reserved. + * + * Licensed under the freeware license: http://www.jeasyui.com/license_freeware.php + * To use it on other terms please contact us: info@jeasyui.com + * + */ +(function($){ +var _1=0; +function _2(_3){ +$(_3).addClass("textbox-f").hide(); +var _4=$(""+""+""+"").insertAfter(_3); +var _5=$(_3).attr("name"); +if(_5){ +_4.find("input.textbox-value").attr("name",_5); +$(_3).removeAttr("name").attr("textboxName",_5); +} +return _4; +}; +function _6(_7){ +var _8=$.data(_7,"textbox"); +var _9=_8.options; +var tb=_8.textbox; +var _a="_easyui_textbox_input"+(++_1); +tb.addClass(_9.cls); +tb.find(".textbox-text").remove(); +if(_9.multiline){ +$("").prependTo(tb); +}else{ +$("").prependTo(tb); +} +$("#"+_a).attr("tabindex",$(_7).attr("tabindex")||"").css("text-align",_7.style.textAlign||""); +tb.find(".textbox-addon").remove(); +var bb=_9.icons?$.extend(true,[],_9.icons):[]; +if(_9.iconCls){ +bb.push({iconCls:_9.iconCls,disabled:true}); +} +if(bb.length){ +var bc=$("").prependTo(tb); +bc.addClass("textbox-addon-"+_9.iconAlign); +for(var i=0;i"); +} +} +tb.find(".textbox-button").remove(); +if(_9.buttonText||_9.buttonIcon){ +var _b=$("").prependTo(tb); +_b.addClass("textbox-button-"+_9.buttonAlign).linkbutton({text:_9.buttonText,iconCls:_9.buttonIcon,onClick:function(){ +var t=$(this).parent().prev(); +t.textbox("options").onClickButton.call(t[0]); +}}); +} +if(_9.label){ +if(typeof _9.label=="object"){ +_8.label=$(_9.label); +_8.label.attr("for",_a); +}else{ +$(_8.label).remove(); +_8.label=$("").html(_9.label); +_8.label.css("textAlign",_9.labelAlign).attr("for",_a); +if(_9.labelPosition=="after"){ +_8.label.insertAfter(tb); +}else{ +_8.label.insertBefore(_7); +} +_8.label.removeClass("textbox-label-left textbox-label-right textbox-label-top"); +_8.label.addClass("textbox-label-"+_9.labelPosition); +} +}else{ +$(_8.label).remove(); +} +_c(_7); +_d(_7,_9.disabled); +_e(_7,_9.readonly); +}; +function _f(_10){ +var _11=$.data(_10,"textbox"); +var tb=_11.textbox; +tb.find(".textbox-text").validatebox("destroy"); +tb.remove(); +$(_11.label).remove(); +$(_10).remove(); +}; +function _12(_13,_14){ +var _15=$.data(_13,"textbox"); +var _16=_15.options; +var tb=_15.textbox; +var _17=tb.parent(); +if(_14){ +if(typeof _14=="object"){ +$.extend(_16,_14); +}else{ +_16.width=_14; +} +} +if(isNaN(parseInt(_16.width))){ +var c=$(_13).clone(); +c.css("visibility","hidden"); +c.insertAfter(_13); +_16.width=c.outerWidth(); +c.remove(); +} +var _18=tb.is(":visible"); +if(!_18){ +tb.appendTo("body"); +} +var _19=tb.find(".textbox-text"); +var btn=tb.find(".textbox-button"); +var _1a=tb.find(".textbox-addon"); +var _1b=_1a.find(".textbox-icon"); +if(_16.height=="auto"){ +_19.css({margin:"",paddingTop:"",paddingBottom:"",height:"",lineHeight:""}); +} +tb._size(_16,_17); +if(_16.label&&_16.labelPosition){ +if(_16.labelPosition=="top"){ +_15.label._size({width:_16.labelWidth=="auto"?tb.outerWidth():_16.labelWidth},tb); +if(_16.height!="auto"){ +tb._size("height",tb.outerHeight()-_15.label.outerHeight()); +} +}else{ +_15.label._size({width:_16.labelWidth,height:tb.outerHeight()},tb); +if(!_16.multiline){ +_15.label.css("lineHeight",_15.label.height()+"px"); +} +tb._size("width",tb.outerWidth()-_15.label.outerWidth()); +} +} +if(_16.buttonAlign=="left"||_16.buttonAlign=="right"){ +btn.linkbutton("resize",{height:tb.height()}); +}else{ +btn.linkbutton("resize",{width:"100%"}); +} +var _1c=tb.width()-_1b.length*_16.iconWidth-_1d("left")-_1d("right"); +var _1e=_16.height=="auto"?_19.outerHeight():(tb.height()-_1d("top")-_1d("bottom")); +_1a.css(_16.iconAlign,_1d(_16.iconAlign)+"px"); +_1a.css("top",_1d("top")+"px"); +_1b.css({width:_16.iconWidth+"px",height:_1e+"px"}); +_19.css({paddingLeft:(_13.style.paddingLeft||""),paddingRight:(_13.style.paddingRight||""),marginLeft:_1f("left"),marginRight:_1f("right"),marginTop:_1d("top"),marginBottom:_1d("bottom")}); +if(_16.multiline){ +_19.css({paddingTop:(_13.style.paddingTop||""),paddingBottom:(_13.style.paddingBottom||"")}); +_19._outerHeight(_1e); +}else{ +_19.css({paddingTop:0,paddingBottom:0,height:_1e+"px",lineHeight:_1e+"px"}); +} +_19._outerWidth(_1c); +_16.onResizing.call(_13,_16.width,_16.height); +if(!_18){ +tb.insertAfter(_13); +} +_16.onResize.call(_13,_16.width,_16.height); +function _1f(_20){ +return (_16.iconAlign==_20?_1a._outerWidth():0)+_1d(_20); +}; +function _1d(_21){ +var w=0; +btn.filter(".textbox-button-"+_21).each(function(){ +if(_21=="left"||_21=="right"){ +w+=$(this).outerWidth(); +}else{ +w+=$(this).outerHeight(); +} +}); +return w; +}; +}; +function _c(_22){ +var _23=$(_22).textbox("options"); +var _24=$(_22).textbox("textbox"); +_24.validatebox($.extend({},_23,{deltaX:function(_25){ +return $(_22).textbox("getTipX",_25); +},deltaY:function(_26){ +return $(_22).textbox("getTipY",_26); +},onBeforeValidate:function(){ +_23.onBeforeValidate.call(_22); +var box=$(this); +if(!box.is(":focus")){ +if(box.val()!==_23.value){ +_23.oldInputValue=box.val(); +box.val(_23.value); +} +} +},onValidate:function(_27){ +var box=$(this); +if(_23.oldInputValue!=undefined){ +box.val(_23.oldInputValue); +_23.oldInputValue=undefined; +} +var tb=box.parent(); +if(_27){ +tb.removeClass("textbox-invalid"); +}else{ +tb.addClass("textbox-invalid"); +} +_23.onValidate.call(_22,_27); +}})); +}; +function _28(_29){ +var _2a=$.data(_29,"textbox"); +var _2b=_2a.options; +var tb=_2a.textbox; +var _2c=tb.find(".textbox-text"); +_2c.attr("placeholder",_2b.prompt); +_2c.unbind(".textbox"); +$(_2a.label).unbind(".textbox"); +if(!_2b.disabled&&!_2b.readonly){ +if(_2a.label){ +$(_2a.label).bind("click.textbox",function(e){ +if(!_2b.hasFocusMe){ +_2c.focus(); +$(_29).textbox("setSelectionRange",{start:0,end:_2c.val().length}); +} +}); +} +_2c.bind("blur.textbox",function(e){ +if(!tb.hasClass("textbox-focused")){ +return; +} +_2b.value=$(this).val(); +if(_2b.value==""){ +$(this).val(_2b.prompt).addClass("textbox-prompt"); +}else{ +$(this).removeClass("textbox-prompt"); +} +tb.removeClass("textbox-focused"); +}).bind("focus.textbox",function(e){ +_2b.hasFocusMe=true; +if(tb.hasClass("textbox-focused")){ +return; +} +if($(this).val()!=_2b.value){ +$(this).val(_2b.value); +} +$(this).removeClass("textbox-prompt"); +tb.addClass("textbox-focused"); +}); +for(var _2d in _2b.inputEvents){ +_2c.bind(_2d+".textbox",{target:_29},_2b.inputEvents[_2d]); +} +} +var _2e=tb.find(".textbox-addon"); +_2e.unbind().bind("click",{target:_29},function(e){ +var _2f=$(e.target).closest("a.textbox-icon:not(.textbox-icon-disabled)"); +if(_2f.length){ +var _30=parseInt(_2f.attr("icon-index")); +var _31=_2b.icons[_30]; +if(_31&&_31.handler){ +_31.handler.call(_2f[0],e); +} +_2b.onClickIcon.call(_29,_30); +} +}); +_2e.find(".textbox-icon").each(function(_32){ +var _33=_2b.icons[_32]; +var _34=$(this); +if(!_33||_33.disabled||_2b.disabled||_2b.readonly){ +_34.addClass("textbox-icon-disabled"); +}else{ +_34.removeClass("textbox-icon-disabled"); +} +}); +var btn=tb.find(".textbox-button"); +btn.linkbutton((_2b.disabled||_2b.readonly)?"disable":"enable"); +tb.unbind(".textbox").bind("_resize.textbox",function(e,_35){ +if($(this).hasClass("easyui-fluid")||_35){ +_12(_29); +} +return false; +}); +}; +function _d(_36,_37){ +var _38=$.data(_36,"textbox"); +var _39=_38.options; +var tb=_38.textbox; +var _3a=tb.find(".textbox-text"); +var ss=$(_36).add(tb.find(".textbox-value")); +_39.disabled=_37; +if(_39.disabled){ +_3a.blur(); +_3a.validatebox("disable"); +tb.addClass("textbox-disabled"); +ss.attr("disabled","disabled"); +$(_38.label).addClass("textbox-label-disabled"); +}else{ +_3a.validatebox("enable"); +tb.removeClass("textbox-disabled"); +ss.removeAttr("disabled"); +$(_38.label).removeClass("textbox-label-disabled"); +} +}; +function _e(_3b,_3c){ +var _3d=$.data(_3b,"textbox"); +var _3e=_3d.options; +var tb=_3d.textbox; +var _3f=tb.find(".textbox-text"); +_3e.readonly=_3c==undefined?true:_3c; +if(_3e.readonly){ +_3f.triggerHandler("blur.textbox"); +} +_3f.validatebox("readonly",_3e.readonly); +tb.removeClass("textbox-readonly").addClass(_3e.readonly?"textbox-readonly":""); +}; +$.fn.textbox=function(_40,_41){ +if(typeof _40=="string"){ +var _42=$.fn.textbox.methods[_40]; +if(_42){ +return _42(this,_41); +}else{ +return this.each(function(){ +var _43=$(this).textbox("textbox"); +_43.validatebox(_40,_41); +}); +} +} +_40=_40||{}; +return this.each(function(){ +var _44=$.data(this,"textbox"); +if(_44){ +$.extend(_44.options,_40); +if(_40.value!=undefined){ +_44.options.originalValue=_40.value; +} +}else{ +_44=$.data(this,"textbox",{options:$.extend({},$.fn.textbox.defaults,$.fn.textbox.parseOptions(this),_40),textbox:_2(this)}); +_44.options.originalValue=_44.options.value; +} +_6(this); +_28(this); +if(_44.options.doSize){ +_12(this); +} +var _45=_44.options.value; +_44.options.value=""; +$(this).textbox("initValue",_45); +}); +}; +$.fn.textbox.methods={options:function(jq){ +return $.data(jq[0],"textbox").options; +},cloneFrom:function(jq,_46){ +return jq.each(function(){ +var t=$(this); +if(t.data("textbox")){ +return; +} +if(!$(_46).data("textbox")){ +$(_46).textbox(); +} +var _47=$.extend(true,{},$(_46).textbox("options")); +var _48=t.attr("name")||""; +t.addClass("textbox-f").hide(); +t.removeAttr("name").attr("textboxName",_48); +var _49=$(_46).next().clone().insertAfter(t); +var _4a="_easyui_textbox_input"+(++_1); +_49.find(".textbox-value").attr("name",_48); +_49.find(".textbox-text").attr("id",_4a); +var _4b=$($(_46).textbox("label")).clone(); +if(_4b.length){ +_4b.attr("for",_4a); +if(_47.labelPosition=="after"){ +_4b.insertAfter(t.next()); +}else{ +_4b.insertBefore(t); +} +} +$.data(this,"textbox",{options:_47,textbox:_49,label:(_4b.length?_4b:undefined)}); +var _4c=$(_46).textbox("button"); +if(_4c.length){ +t.textbox("button").linkbutton($.extend(true,{},_4c.linkbutton("options"))); +} +_28(this); +_c(this); +}); +},textbox:function(jq){ +return $.data(jq[0],"textbox").textbox.find(".textbox-text"); +},button:function(jq){ +return $.data(jq[0],"textbox").textbox.find(".textbox-button"); +},label:function(jq){ +return $.data(jq[0],"textbox").label; +},destroy:function(jq){ +return jq.each(function(){ +_f(this); +}); +},resize:function(jq,_4d){ +return jq.each(function(){ +_12(this,_4d); +}); +},disable:function(jq){ +return jq.each(function(){ +_d(this,true); +_28(this); +}); +},enable:function(jq){ +return jq.each(function(){ +_d(this,false); +_28(this); +}); +},readonly:function(jq,_4e){ +return jq.each(function(){ +_e(this,_4e); +_28(this); +}); +},isValid:function(jq){ +return jq.textbox("textbox").validatebox("isValid"); +},clear:function(jq){ +return jq.each(function(){ +$(this).textbox("setValue",""); +}); +},setText:function(jq,_4f){ +return jq.each(function(){ +var _50=$(this).textbox("options"); +var _51=$(this).textbox("textbox"); +_4f=_4f==undefined?"":String(_4f); +if($(this).textbox("getText")!=_4f){ +_51.val(_4f); +} +_50.value=_4f; +if(!_51.is(":focus")){ +if(_4f){ +_51.removeClass("textbox-prompt"); +}else{ +_51.val(_50.prompt).addClass("textbox-prompt"); +} +} +$(this).textbox("validate"); +}); +},initValue:function(jq,_52){ +return jq.each(function(){ +var _53=$.data(this,"textbox"); +$(this).textbox("setText",_52); +_53.textbox.find(".textbox-value").val(_52); +$(this).val(_52); +}); +},setValue:function(jq,_54){ +return jq.each(function(){ +var _55=$.data(this,"textbox").options; +var _56=$(this).textbox("getValue"); +$(this).textbox("initValue",_54); +if(_56!=_54){ +_55.onChange.call(this,_54,_56); +$(this).closest("form").trigger("_change",[this]); +} +}); +},getText:function(jq){ +var _57=jq.textbox("textbox"); +if(_57.is(":focus")){ +return _57.val(); +}else{ +return jq.textbox("options").value; +} +},getValue:function(jq){ +return jq.data("textbox").textbox.find(".textbox-value").val(); +},reset:function(jq){ +return jq.each(function(){ +var _58=$(this).textbox("options"); +$(this).textbox("textbox").val(_58.originalValue); +$(this).textbox("setValue",_58.originalValue); +}); +},getIcon:function(jq,_59){ +return jq.data("textbox").textbox.find(".textbox-icon:eq("+_59+")"); +},getTipX:function(jq,_5a){ +var _5b=jq.data("textbox"); +var _5c=_5b.options; +var tb=_5b.textbox; +var _5d=tb.find(".textbox-text"); +var _5a=_5a||_5c.tipPosition; +var p1=tb.offset(); +var p2=_5d.offset(); +var w1=tb.outerWidth(); +var w2=_5d.outerWidth(); +if(_5a=="right"){ +return w1-w2-p2.left+p1.left; +}else{ +if(_5a=="left"){ +return p1.left-p2.left; +}else{ +return (w1-w2-p2.left+p1.left)/2-(p2.left-p1.left)/2; +} +} +},getTipY:function(jq,_5e){ +var _5f=jq.data("textbox"); +var _60=_5f.options; +var tb=_5f.textbox; +var _61=tb.find(".textbox-text"); +var _5e=_5e||_60.tipPosition; +var p1=tb.offset(); +var p2=_61.offset(); +var h1=tb.outerHeight(); +var h2=_61.outerHeight(); +if(_5e=="left"||_5e=="right"){ +return (h1-h2-p2.top+p1.top)/2-(p2.top-p1.top)/2; +}else{ +if(_5e=="bottom"){ +return (h1-h2-p2.top+p1.top); +}else{ +return (p1.top-p2.top); +} +} +},getSelectionStart:function(jq){ +return jq.textbox("getSelectionRange").start; +},getSelectionRange:function(jq){ +var _62=jq.textbox("textbox")[0]; +var _63=0; +var end=0; +if(typeof _62.selectionStart=="number"){ +_63=_62.selectionStart; +end=_62.selectionEnd; +}else{ +if(_62.createTextRange){ +var s=document.selection.createRange(); +var _64=_62.createTextRange(); +_64.setEndPoint("EndToStart",s); +_63=_64.text.length; +end=_63+s.text.length; +} +} +return {start:_63,end:end}; +},setSelectionRange:function(jq,_65){ +return jq.each(function(){ +var _66=$(this).textbox("textbox")[0]; +var _67=_65.start; +var end=_65.end; +if(_66.setSelectionRange){ +_66.setSelectionRange(_67,end); +}else{ +if(_66.createTextRange){ +var _68=_66.createTextRange(); +_68.collapse(); +_68.moveEnd("character",end); +_68.moveStart("character",_67); +_68.select(); +} +} +}); +}}; +$.fn.textbox.parseOptions=function(_69){ +var t=$(_69); +return $.extend({},$.fn.validatebox.parseOptions(_69),$.parser.parseOptions(_69,["prompt","iconCls","iconAlign","buttonText","buttonIcon","buttonAlign","label","labelPosition","labelAlign",{multiline:"boolean",iconWidth:"number",labelWidth:"number"}]),{value:(t.val()||undefined),type:(t.attr("type")?t.attr("type"):undefined)}); +}; +$.fn.textbox.defaults=$.extend({},$.fn.validatebox.defaults,{doSize:true,width:"auto",height:"auto",cls:null,prompt:"",value:"",type:"text",multiline:false,icons:[],iconCls:null,iconAlign:"right",iconWidth:18,buttonText:"",buttonIcon:null,buttonAlign:"right",label:null,labelWidth:"auto",labelPosition:"before",labelAlign:"left",inputEvents:{blur:function(e){ +var t=$(e.data.target); +var _6a=t.textbox("options"); +if(t.textbox("getValue")!=_6a.value){ +t.textbox("setValue",_6a.value); +} +},keydown:function(e){ +if(e.keyCode==13){ +var t=$(e.data.target); +t.textbox("setValue",t.textbox("getText")); +} +}},onChange:function(_6b,_6c){ +},onResizing:function(_6d,_6e){ +},onResize:function(_6f,_70){ +},onClickButton:function(){ +},onClickIcon:function(_71){ +}}); +})(jQuery); + diff --git a/src/main/webapp/static/easyUI/plugins/jquery.timespinner.js b/src/main/webapp/static/easyUI/plugins/jquery.timespinner.js new file mode 100644 index 0000000000000000000000000000000000000000..8fc7a5a23ad8ca67766a435336ba30998e38bf7d --- /dev/null +++ b/src/main/webapp/static/easyUI/plugins/jquery.timespinner.js @@ -0,0 +1,149 @@ +/** + * jQuery EasyUI 1.5.2 + * + * Copyright (c) 2009-2017 www.jeasyui.com. All rights reserved. + * + * Licensed under the freeware license: http://www.jeasyui.com/license_freeware.php + * To use it on other terms please contact us: info@jeasyui.com + * + */ +(function($){ +function _1(_2){ +var _3=$.data(_2,"timespinner").options; +$(_2).addClass("timespinner-f").spinner(_3); +var _4=_3.formatter.call(_2,_3.parser.call(_2,_3.value)); +$(_2).timespinner("initValue",_4); +}; +function _5(e){ +var _6=e.data.target; +var _7=$.data(_6,"timespinner").options; +var _8=$(_6).timespinner("getSelectionStart"); +for(var i=0;i<_7.selections.length;i++){ +var _9=_7.selections[i]; +if(_8>=_9[0]&&_8<=_9[1]){ +_a(_6,i); +return; +} +} +}; +function _a(_b,_c){ +var _d=$.data(_b,"timespinner").options; +if(_c!=undefined){ +_d.highlight=_c; +} +var _e=_d.selections[_d.highlight]; +if(_e){ +var tb=$(_b).timespinner("textbox"); +$(_b).timespinner("setSelectionRange",{start:_e[0],end:_e[1]}); +tb.focus(); +} +}; +function _f(_10,_11){ +var _12=$.data(_10,"timespinner").options; +var _11=_12.parser.call(_10,_11); +var _13=_12.formatter.call(_10,_11); +$(_10).spinner("setValue",_13); +}; +function _14(_15,_16){ +var _17=$.data(_15,"timespinner").options; +var s=$(_15).timespinner("getValue"); +var _18=_17.selections[_17.highlight]; +var s1=s.substring(0,_18[0]); +var s2=s.substring(_18[0],_18[1]); +var s3=s.substring(_18[1]); +var v=s1+((parseInt(s2,10)||0)+_17.increment*(_16?-1:1))+s3; +$(_15).timespinner("setValue",v); +_a(_15); +}; +$.fn.timespinner=function(_19,_1a){ +if(typeof _19=="string"){ +var _1b=$.fn.timespinner.methods[_19]; +if(_1b){ +return _1b(this,_1a); +}else{ +return this.spinner(_19,_1a); +} +} +_19=_19||{}; +return this.each(function(){ +var _1c=$.data(this,"timespinner"); +if(_1c){ +$.extend(_1c.options,_19); +}else{ +$.data(this,"timespinner",{options:$.extend({},$.fn.timespinner.defaults,$.fn.timespinner.parseOptions(this),_19)}); +} +_1(this); +}); +}; +$.fn.timespinner.methods={options:function(jq){ +var _1d=jq.data("spinner")?jq.spinner("options"):{}; +return $.extend($.data(jq[0],"timespinner").options,{width:_1d.width,value:_1d.value,originalValue:_1d.originalValue,disabled:_1d.disabled,readonly:_1d.readonly}); +},setValue:function(jq,_1e){ +return jq.each(function(){ +_f(this,_1e); +}); +},getHours:function(jq){ +var _1f=$.data(jq[0],"timespinner").options; +var vv=jq.timespinner("getValue").split(_1f.separator); +return parseInt(vv[0],10); +},getMinutes:function(jq){ +var _20=$.data(jq[0],"timespinner").options; +var vv=jq.timespinner("getValue").split(_20.separator); +return parseInt(vv[1],10); +},getSeconds:function(jq){ +var _21=$.data(jq[0],"timespinner").options; +var vv=jq.timespinner("getValue").split(_21.separator); +return parseInt(vv[2],10)||0; +}}; +$.fn.timespinner.parseOptions=function(_22){ +return $.extend({},$.fn.spinner.parseOptions(_22),$.parser.parseOptions(_22,["separator",{showSeconds:"boolean",highlight:"number"}])); +}; +$.fn.timespinner.defaults=$.extend({},$.fn.spinner.defaults,{inputEvents:$.extend({},$.fn.spinner.defaults.inputEvents,{click:function(e){ +_5.call(this,e); +},blur:function(e){ +var t=$(e.data.target); +t.timespinner("setValue",t.timespinner("getText")); +},keydown:function(e){ +if(e.keyCode==13){ +var t=$(e.data.target); +t.timespinner("setValue",t.timespinner("getText")); +} +}}),formatter:function(_23){ +if(!_23){ +return ""; +} +var _24=$(this).timespinner("options"); +var tt=[_25(_23.getHours()),_25(_23.getMinutes())]; +if(_24.showSeconds){ +tt.push(_25(_23.getSeconds())); +} +return tt.join(_24.separator); +function _25(_26){ +return (_26<10?"0":"")+_26; +}; +},parser:function(s){ +var _27=$(this).timespinner("options"); +var _28=_29(s); +if(_28){ +var min=_29(_27.min); +var max=_29(_27.max); +if(min&&min>_28){ +_28=min; +} +if(max&&max<_28){ +_28=max; +} +} +return _28; +function _29(s){ +if(!s){ +return null; +} +var tt=s.split(_27.separator); +return new Date(1900,0,0,parseInt(tt[0],10)||0,parseInt(tt[1],10)||0,parseInt(tt[2],10)||0); +}; +},selections:[[0,2],[3,5],[6,8]],separator:":",showSeconds:false,highlight:0,spin:function(_2a){ +_14(this,_2a); +}}); +})(jQuery); + diff --git a/src/main/webapp/static/easyUI/plugins/jquery.tooltip.js b/src/main/webapp/static/easyUI/plugins/jquery.tooltip.js new file mode 100644 index 0000000000000000000000000000000000000000..259588a2f0197fba695a84c93856a263b83f4b24 --- /dev/null +++ b/src/main/webapp/static/easyUI/plugins/jquery.tooltip.js @@ -0,0 +1,234 @@ +/** + * jQuery EasyUI 1.5.2 + * + * Copyright (c) 2009-2017 www.jeasyui.com. All rights reserved. + * + * Licensed under the freeware license: http://www.jeasyui.com/license_freeware.php + * To use it on other terms please contact us: info@jeasyui.com + * + */ +(function($){ +function _1(_2){ +$(_2).addClass("tooltip-f"); +}; +function _3(_4){ +var _5=$.data(_4,"tooltip").options; +$(_4).unbind(".tooltip").bind(_5.showEvent+".tooltip",function(e){ +$(_4).tooltip("show",e); +}).bind(_5.hideEvent+".tooltip",function(e){ +$(_4).tooltip("hide",e); +}).bind("mousemove.tooltip",function(e){ +if(_5.trackMouse){ +_5.trackMouseX=e.pageX; +_5.trackMouseY=e.pageY; +$(_4).tooltip("reposition"); +} +}); +}; +function _6(_7){ +var _8=$.data(_7,"tooltip"); +if(_8.showTimer){ +clearTimeout(_8.showTimer); +_8.showTimer=null; +} +if(_8.hideTimer){ +clearTimeout(_8.hideTimer); +_8.hideTimer=null; +} +}; +function _9(_a){ +var _b=$.data(_a,"tooltip"); +if(!_b||!_b.tip){ +return; +} +var _c=_b.options; +var _d=_b.tip; +var _e={left:-100000,top:-100000}; +if($(_a).is(":visible")){ +_e=_f(_c.position); +if(_c.position=="top"&&_e.top<0){ +_e=_f("bottom"); +}else{ +if((_c.position=="bottom")&&(_e.top+_d._outerHeight()>$(window)._outerHeight()+$(document).scrollTop())){ +_e=_f("top"); +} +} +if(_e.left<0){ +if(_c.position=="left"){ +_e=_f("right"); +}else{ +$(_a).tooltip("arrow").css("left",_d._outerWidth()/2+_e.left); +_e.left=0; +} +}else{ +if(_e.left+_d._outerWidth()>$(window)._outerWidth()+$(document)._scrollLeft()){ +if(_c.position=="right"){ +_e=_f("left"); +}else{ +var _10=_e.left; +_e.left=$(window)._outerWidth()+$(document)._scrollLeft()-_d._outerWidth(); +$(_a).tooltip("arrow").css("left",_d._outerWidth()/2-(_e.left-_10)); +} +} +} +} +_d.css({left:_e.left,top:_e.top,zIndex:(_c.zIndex!=undefined?_c.zIndex:($.fn.window?$.fn.window.defaults.zIndex++:""))}); +_c.onPosition.call(_a,_e.left,_e.top); +function _f(_11){ +_c.position=_11||"bottom"; +_d.removeClass("tooltip-top tooltip-bottom tooltip-left tooltip-right").addClass("tooltip-"+_c.position); +var _12,top; +var _13=$.isFunction(_c.deltaX)?_c.deltaX.call(_a,_c.position):_c.deltaX; +var _14=$.isFunction(_c.deltaY)?_c.deltaY.call(_a,_c.position):_c.deltaY; +if(_c.trackMouse){ +t=$(); +_12=_c.trackMouseX+_13; +top=_c.trackMouseY+_14; +}else{ +var t=$(_a); +_12=t.offset().left+_13; +top=t.offset().top+_14; +} +switch(_c.position){ +case "right": +_12+=t._outerWidth()+12+(_c.trackMouse?12:0); +top-=(_d._outerHeight()-t._outerHeight())/2; +break; +case "left": +_12-=_d._outerWidth()+12+(_c.trackMouse?12:0); +top-=(_d._outerHeight()-t._outerHeight())/2; +break; +case "top": +_12-=(_d._outerWidth()-t._outerWidth())/2; +top-=_d._outerHeight()+12+(_c.trackMouse?12:0); +break; +case "bottom": +_12-=(_d._outerWidth()-t._outerWidth())/2; +top+=t._outerHeight()+12+(_c.trackMouse?12:0); +break; +} +return {left:_12,top:top}; +}; +}; +function _15(_16,e){ +var _17=$.data(_16,"tooltip"); +var _18=_17.options; +var tip=_17.tip; +if(!tip){ +tip=$("
              "+"
              "+"
              "+"
              "+"
              ").appendTo("body"); +_17.tip=tip; +_19(_16); +} +_6(_16); +_17.showTimer=setTimeout(function(){ +$(_16).tooltip("reposition"); +tip.show(); +_18.onShow.call(_16,e); +var _1a=tip.children(".tooltip-arrow-outer"); +var _1b=tip.children(".tooltip-arrow"); +var bc="border-"+_18.position+"-color"; +_1a.add(_1b).css({borderTopColor:"",borderBottomColor:"",borderLeftColor:"",borderRightColor:""}); +_1a.css(bc,tip.css(bc)); +_1b.css(bc,tip.css("backgroundColor")); +},_18.showDelay); +}; +function _1c(_1d,e){ +var _1e=$.data(_1d,"tooltip"); +if(_1e&&_1e.tip){ +_6(_1d); +_1e.hideTimer=setTimeout(function(){ +_1e.tip.hide(); +_1e.options.onHide.call(_1d,e); +},_1e.options.hideDelay); +} +}; +function _19(_1f,_20){ +var _21=$.data(_1f,"tooltip"); +var _22=_21.options; +if(_20){ +_22.content=_20; +} +if(!_21.tip){ +return; +} +var cc=typeof _22.content=="function"?_22.content.call(_1f):_22.content; +_21.tip.children(".tooltip-content").html(cc); +_22.onUpdate.call(_1f,cc); +}; +function _23(_24){ +var _25=$.data(_24,"tooltip"); +if(_25){ +_6(_24); +var _26=_25.options; +if(_25.tip){ +_25.tip.remove(); +} +if(_26._title){ +$(_24).attr("title",_26._title); +} +$.removeData(_24,"tooltip"); +$(_24).unbind(".tooltip").removeClass("tooltip-f"); +_26.onDestroy.call(_24); +} +}; +$.fn.tooltip=function(_27,_28){ +if(typeof _27=="string"){ +return $.fn.tooltip.methods[_27](this,_28); +} +_27=_27||{}; +return this.each(function(){ +var _29=$.data(this,"tooltip"); +if(_29){ +$.extend(_29.options,_27); +}else{ +$.data(this,"tooltip",{options:$.extend({},$.fn.tooltip.defaults,$.fn.tooltip.parseOptions(this),_27)}); +_1(this); +} +_3(this); +_19(this); +}); +}; +$.fn.tooltip.methods={options:function(jq){ +return $.data(jq[0],"tooltip").options; +},tip:function(jq){ +return $.data(jq[0],"tooltip").tip; +},arrow:function(jq){ +return jq.tooltip("tip").children(".tooltip-arrow-outer,.tooltip-arrow"); +},show:function(jq,e){ +return jq.each(function(){ +_15(this,e); +}); +},hide:function(jq,e){ +return jq.each(function(){ +_1c(this,e); +}); +},update:function(jq,_2a){ +return jq.each(function(){ +_19(this,_2a); +}); +},reposition:function(jq){ +return jq.each(function(){ +_9(this); +}); +},destroy:function(jq){ +return jq.each(function(){ +_23(this); +}); +}}; +$.fn.tooltip.parseOptions=function(_2b){ +var t=$(_2b); +var _2c=$.extend({},$.parser.parseOptions(_2b,["position","showEvent","hideEvent","content",{trackMouse:"boolean",deltaX:"number",deltaY:"number",showDelay:"number",hideDelay:"number"}]),{_title:t.attr("title")}); +t.attr("title",""); +if(!_2c.content){ +_2c.content=_2c._title; +} +return _2c; +}; +$.fn.tooltip.defaults={position:"bottom",content:null,trackMouse:false,deltaX:0,deltaY:0,showEvent:"mouseenter",hideEvent:"mouseleave",showDelay:200,hideDelay:100,onShow:function(e){ +},onHide:function(e){ +},onUpdate:function(_2d){ +},onPosition:function(_2e,top){ +},onDestroy:function(){ +}}; +})(jQuery); + diff --git a/src/main/webapp/static/easyUI/plugins/jquery.tree.js b/src/main/webapp/static/easyUI/plugins/jquery.tree.js new file mode 100644 index 0000000000000000000000000000000000000000..81a39cf7d0b2ba25d556f3d336c7c98f59dc8583 --- /dev/null +++ b/src/main/webapp/static/easyUI/plugins/jquery.tree.js @@ -0,0 +1,1247 @@ +/** + * jQuery EasyUI 1.5.2 + * + * Copyright (c) 2009-2017 www.jeasyui.com. All rights reserved. + * + * Licensed under the freeware license: http://www.jeasyui.com/license_freeware.php + * To use it on other terms please contact us: info@jeasyui.com + * + */ +(function($){ +function _1(_2){ +var _3=$(_2); +_3.addClass("tree"); +return _3; +}; +function _4(_5){ +var _6=$.data(_5,"tree").options; +$(_5).unbind().bind("mouseover",function(e){ +var tt=$(e.target); +var _7=tt.closest("div.tree-node"); +if(!_7.length){ +return; +} +_7.addClass("tree-node-hover"); +if(tt.hasClass("tree-hit")){ +if(tt.hasClass("tree-expanded")){ +tt.addClass("tree-expanded-hover"); +}else{ +tt.addClass("tree-collapsed-hover"); +} +} +e.stopPropagation(); +}).bind("mouseout",function(e){ +var tt=$(e.target); +var _8=tt.closest("div.tree-node"); +if(!_8.length){ +return; +} +_8.removeClass("tree-node-hover"); +if(tt.hasClass("tree-hit")){ +if(tt.hasClass("tree-expanded")){ +tt.removeClass("tree-expanded-hover"); +}else{ +tt.removeClass("tree-collapsed-hover"); +} +} +e.stopPropagation(); +}).bind("click",function(e){ +var tt=$(e.target); +var _9=tt.closest("div.tree-node"); +if(!_9.length){ +return; +} +if(tt.hasClass("tree-hit")){ +_85(_5,_9[0]); +return false; +}else{ +if(tt.hasClass("tree-checkbox")){ +_34(_5,_9[0]); +return false; +}else{ +_d9(_5,_9[0]); +_6.onClick.call(_5,_c(_5,_9[0])); +} +} +e.stopPropagation(); +}).bind("dblclick",function(e){ +var _a=$(e.target).closest("div.tree-node"); +if(!_a.length){ +return; +} +_d9(_5,_a[0]); +_6.onDblClick.call(_5,_c(_5,_a[0])); +e.stopPropagation(); +}).bind("contextmenu",function(e){ +var _b=$(e.target).closest("div.tree-node"); +if(!_b.length){ +return; +} +_6.onContextMenu.call(_5,e,_c(_5,_b[0])); +e.stopPropagation(); +}); +}; +function _d(_e){ +var _f=$.data(_e,"tree").options; +_f.dnd=false; +var _10=$(_e).find("div.tree-node"); +_10.draggable("disable"); +_10.css("cursor","pointer"); +}; +function _11(_12){ +var _13=$.data(_12,"tree"); +var _14=_13.options; +var _15=_13.tree; +_13.disabledNodes=[]; +_14.dnd=true; +_15.find("div.tree-node").draggable({disabled:false,revert:true,cursor:"pointer",proxy:function(_16){ +var p=$("
              ").appendTo("body"); +p.html(" "+$(_16).find(".tree-title").html()); +p.hide(); +return p; +},deltaX:15,deltaY:15,onBeforeDrag:function(e){ +if(_14.onBeforeDrag.call(_12,_c(_12,this))==false){ +return false; +} +if($(e.target).hasClass("tree-hit")||$(e.target).hasClass("tree-checkbox")){ +return false; +} +if(e.which!=1){ +return false; +} +var _17=$(this).find("span.tree-indent"); +if(_17.length){ +e.data.offsetWidth-=_17.length*_17.width(); +} +},onStartDrag:function(e){ +$(this).next("ul").find("div.tree-node").each(function(){ +$(this).droppable("disable"); +_13.disabledNodes.push(this); +}); +$(this).draggable("proxy").css({left:-10000,top:-10000}); +_14.onStartDrag.call(_12,_c(_12,this)); +var _18=_c(_12,this); +if(_18.id==undefined){ +_18.id="easyui_tree_node_id_temp"; +_60(_12,_18); +} +_13.draggingNodeId=_18.id; +},onDrag:function(e){ +var x1=e.pageX,y1=e.pageY,x2=e.data.startX,y2=e.data.startY; +var d=Math.sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)); +if(d>3){ +$(this).draggable("proxy").show(); +} +this.pageY=e.pageY; +},onStopDrag:function(){ +for(var i=0;i<_13.disabledNodes.length;i++){ +$(_13.disabledNodes[i]).droppable("enable"); +} +_13.disabledNodes=[]; +var _19=_d0(_12,_13.draggingNodeId); +if(_19&&_19.id=="easyui_tree_node_id_temp"){ +_19.id=""; +_60(_12,_19); +} +_14.onStopDrag.call(_12,_19); +}}).droppable({accept:"div.tree-node",onDragEnter:function(e,_1a){ +if(_14.onDragEnter.call(_12,this,_1b(_1a))==false){ +_1c(_1a,false); +$(this).removeClass("tree-node-append tree-node-top tree-node-bottom"); +$(this).droppable("disable"); +_13.disabledNodes.push(this); +} +},onDragOver:function(e,_1d){ +if($(this).droppable("options").disabled){ +return; +} +var _1e=_1d.pageY; +var top=$(this).offset().top; +var _1f=top+$(this).outerHeight(); +_1c(_1d,true); +$(this).removeClass("tree-node-append tree-node-top tree-node-bottom"); +if(_1e>top+(_1f-top)/2){ +if(_1f-_1e<5){ +$(this).addClass("tree-node-bottom"); +}else{ +$(this).addClass("tree-node-append"); +} +}else{ +if(_1e-top<5){ +$(this).addClass("tree-node-top"); +}else{ +$(this).addClass("tree-node-append"); +} +} +if(_14.onDragOver.call(_12,this,_1b(_1d))==false){ +_1c(_1d,false); +$(this).removeClass("tree-node-append tree-node-top tree-node-bottom"); +$(this).droppable("disable"); +_13.disabledNodes.push(this); +} +},onDragLeave:function(e,_20){ +_1c(_20,false); +$(this).removeClass("tree-node-append tree-node-top tree-node-bottom"); +_14.onDragLeave.call(_12,this,_1b(_20)); +},onDrop:function(e,_21){ +var _22=this; +var _23,_24; +if($(this).hasClass("tree-node-append")){ +_23=_25; +_24="append"; +}else{ +_23=_26; +_24=$(this).hasClass("tree-node-top")?"top":"bottom"; +} +if(_14.onBeforeDrop.call(_12,_22,_1b(_21),_24)==false){ +$(this).removeClass("tree-node-append tree-node-top tree-node-bottom"); +return; +} +_23(_21,_22,_24); +$(this).removeClass("tree-node-append tree-node-top tree-node-bottom"); +}}); +function _1b(_27,pop){ +return $(_27).closest("ul.tree").tree(pop?"pop":"getData",_27); +}; +function _1c(_28,_29){ +var _2a=$(_28).draggable("proxy").find("span.tree-dnd-icon"); +_2a.removeClass("tree-dnd-yes tree-dnd-no").addClass(_29?"tree-dnd-yes":"tree-dnd-no"); +}; +function _25(_2b,_2c){ +if(_c(_12,_2c).state=="closed"){ +_79(_12,_2c,function(){ +_2d(); +}); +}else{ +_2d(); +} +function _2d(){ +var _2e=_1b(_2b,true); +$(_12).tree("append",{parent:_2c,data:[_2e]}); +_14.onDrop.call(_12,_2c,_2e,"append"); +}; +}; +function _26(_2f,_30,_31){ +var _32={}; +if(_31=="top"){ +_32.before=_30; +}else{ +_32.after=_30; +} +var _33=_1b(_2f,true); +_32.data=_33; +$(_12).tree("insert",_32); +_14.onDrop.call(_12,_30,_33,_31); +}; +}; +function _34(_35,_36,_37,_38){ +var _39=$.data(_35,"tree"); +var _3a=_39.options; +if(!_3a.checkbox){ +return; +} +var _3b=_c(_35,_36); +if(!_3b.checkState){ +return; +} +var ck=$(_36).find(".tree-checkbox"); +if(_37==undefined){ +if(ck.hasClass("tree-checkbox1")){ +_37=false; +}else{ +if(ck.hasClass("tree-checkbox0")){ +_37=true; +}else{ +if(_3b._checked==undefined){ +_3b._checked=$(_36).find(".tree-checkbox").hasClass("tree-checkbox1"); +} +_37=!_3b._checked; +} +} +} +_3b._checked=_37; +if(_37){ +if(ck.hasClass("tree-checkbox1")){ +return; +} +}else{ +if(ck.hasClass("tree-checkbox0")){ +return; +} +} +if(!_38){ +if(_3a.onBeforeCheck.call(_35,_3b,_37)==false){ +return; +} +} +if(_3a.cascadeCheck){ +_3c(_35,_3b,_37); +_3d(_35,_3b); +}else{ +_3e(_35,_3b,_37?"1":"0"); +} +if(!_38){ +_3a.onCheck.call(_35,_3b,_37); +} +}; +function _3c(_3f,_40,_41){ +var _42=$.data(_3f,"tree").options; +var _43=_41?1:0; +_3e(_3f,_40,_43); +if(_42.deepCheck){ +$.easyui.forEach(_40.children||[],true,function(n){ +_3e(_3f,n,_43); +}); +}else{ +var _44=[]; +if(_40.children&&_40.children.length){ +_44.push(_40); +} +$.easyui.forEach(_40.children||[],true,function(n){ +if(!n.hidden){ +_3e(_3f,n,_43); +if(n.children&&n.children.length){ +_44.push(n); +} +} +}); +for(var i=_44.length-1;i>=0;i--){ +var _45=_44[i]; +_3e(_3f,_45,_46(_45)); +} +} +}; +function _3e(_47,_48,_49){ +var _4a=$.data(_47,"tree").options; +if(!_48.checkState||_49==undefined){ +return; +} +if(_48.hidden&&!_4a.deepCheck){ +return; +} +var ck=$("#"+_48.domId).find(".tree-checkbox"); +_48.checkState=["unchecked","checked","indeterminate"][_49]; +_48.checked=(_48.checkState=="checked"); +ck.removeClass("tree-checkbox0 tree-checkbox1 tree-checkbox2"); +ck.addClass("tree-checkbox"+_49); +}; +function _3d(_4b,_4c){ +var pd=_4d(_4b,$("#"+_4c.domId)[0]); +if(pd){ +_3e(_4b,pd,_46(pd)); +_3d(_4b,pd); +} +}; +function _46(row){ +var c0=0; +var c1=0; +var len=0; +$.easyui.forEach(row.children||[],false,function(r){ +if(r.checkState){ +len++; +if(r.checkState=="checked"){ +c1++; +}else{ +if(r.checkState=="unchecked"){ +c0++; +} +} +} +}); +if(len==0){ +return undefined; +} +var _4e=0; +if(c0==len){ +_4e=0; +}else{ +if(c1==len){ +_4e=1; +}else{ +_4e=2; +} +} +return _4e; +}; +function _4f(_50,_51){ +var _52=$.data(_50,"tree").options; +if(!_52.checkbox){ +return; +} +var _53=$(_51); +var ck=_53.find(".tree-checkbox"); +var _54=_c(_50,_51); +if(_52.view.hasCheckbox(_50,_54)){ +if(!ck.length){ +_54.checkState=_54.checkState||"unchecked"; +$("").insertBefore(_53.find(".tree-title")); +} +if(_54.checkState=="checked"){ +_34(_50,_51,true,true); +}else{ +if(_54.checkState=="unchecked"){ +_34(_50,_51,false,true); +}else{ +var _55=_46(_54); +if(_55===0){ +_34(_50,_51,false,true); +}else{ +if(_55===1){ +_34(_50,_51,true,true); +} +} +} +} +}else{ +ck.remove(); +_54.checkState=undefined; +_54.checked=undefined; +_3d(_50,_54); +} +}; +function _56(_57,ul,_58,_59,_5a){ +var _5b=$.data(_57,"tree"); +var _5c=_5b.options; +var _5d=$(ul).prevAll("div.tree-node:first"); +_58=_5c.loadFilter.call(_57,_58,_5d[0]); +var _5e=_5f(_57,"domId",_5d.attr("id")); +if(!_59){ +_5e?_5e.children=_58:_5b.data=_58; +$(ul).empty(); +}else{ +if(_5e){ +_5e.children?_5e.children=_5e.children.concat(_58):_5e.children=_58; +}else{ +_5b.data=_5b.data.concat(_58); +} +} +_5c.view.render.call(_5c.view,_57,ul,_58); +if(_5c.dnd){ +_11(_57); +} +if(_5e){ +_60(_57,_5e); +} +for(var i=0;i<_5b.tmpIds.length;i++){ +_34(_57,$("#"+_5b.tmpIds[i])[0],true,true); +} +_5b.tmpIds=[]; +setTimeout(function(){ +_61(_57,_57); +},0); +if(!_5a){ +_5c.onLoadSuccess.call(_57,_5e,_58); +} +}; +function _61(_62,ul,_63){ +var _64=$.data(_62,"tree").options; +if(_64.lines){ +$(_62).addClass("tree-lines"); +}else{ +$(_62).removeClass("tree-lines"); +return; +} +if(!_63){ +_63=true; +$(_62).find("span.tree-indent").removeClass("tree-line tree-join tree-joinbottom"); +$(_62).find("div.tree-node").removeClass("tree-node-last tree-root-first tree-root-one"); +var _65=$(_62).tree("getRoots"); +if(_65.length>1){ +$(_65[0].target).addClass("tree-root-first"); +}else{ +if(_65.length==1){ +$(_65[0].target).addClass("tree-root-one"); +} +} +} +$(ul).children("li").each(function(){ +var _66=$(this).children("div.tree-node"); +var ul=_66.next("ul"); +if(ul.length){ +if($(this).next().length){ +_67(_66); +} +_61(_62,ul,_63); +}else{ +_68(_66); +} +}); +var _69=$(ul).children("li:last").children("div.tree-node").addClass("tree-node-last"); +_69.children("span.tree-join").removeClass("tree-join").addClass("tree-joinbottom"); +function _68(_6a,_6b){ +var _6c=_6a.find("span.tree-icon"); +_6c.prev("span.tree-indent").addClass("tree-join"); +}; +function _67(_6d){ +var _6e=_6d.find("span.tree-indent, span.tree-hit").length; +_6d.next().find("div.tree-node").each(function(){ +$(this).children("span:eq("+(_6e-1)+")").addClass("tree-line"); +}); +}; +}; +function _6f(_70,ul,_71,_72){ +var _73=$.data(_70,"tree").options; +_71=$.extend({},_73.queryParams,_71||{}); +var _74=null; +if(_70!=ul){ +var _75=$(ul).prev(); +_74=_c(_70,_75[0]); +} +if(_73.onBeforeLoad.call(_70,_74,_71)==false){ +return; +} +var _76=$(ul).prev().children("span.tree-folder"); +_76.addClass("tree-loading"); +var _77=_73.loader.call(_70,_71,function(_78){ +_76.removeClass("tree-loading"); +_56(_70,ul,_78); +if(_72){ +_72(); +} +},function(){ +_76.removeClass("tree-loading"); +_73.onLoadError.apply(_70,arguments); +if(_72){ +_72(); +} +}); +if(_77==false){ +_76.removeClass("tree-loading"); +} +}; +function _79(_7a,_7b,_7c){ +var _7d=$.data(_7a,"tree").options; +var hit=$(_7b).children("span.tree-hit"); +if(hit.length==0){ +return; +} +if(hit.hasClass("tree-expanded")){ +return; +} +var _7e=_c(_7a,_7b); +if(_7d.onBeforeExpand.call(_7a,_7e)==false){ +return; +} +hit.removeClass("tree-collapsed tree-collapsed-hover").addClass("tree-expanded"); +hit.next().addClass("tree-folder-open"); +var ul=$(_7b).next(); +if(ul.length){ +if(_7d.animate){ +ul.slideDown("normal",function(){ +_7e.state="open"; +_7d.onExpand.call(_7a,_7e); +if(_7c){ +_7c(); +} +}); +}else{ +ul.css("display","block"); +_7e.state="open"; +_7d.onExpand.call(_7a,_7e); +if(_7c){ +_7c(); +} +} +}else{ +var _7f=$("
                ").insertAfter(_7b); +_6f(_7a,_7f[0],{id:_7e.id},function(){ +if(_7f.is(":empty")){ +_7f.remove(); +} +if(_7d.animate){ +_7f.slideDown("normal",function(){ +_7e.state="open"; +_7d.onExpand.call(_7a,_7e); +if(_7c){ +_7c(); +} +}); +}else{ +_7f.css("display","block"); +_7e.state="open"; +_7d.onExpand.call(_7a,_7e); +if(_7c){ +_7c(); +} +} +}); +} +}; +function _80(_81,_82){ +var _83=$.data(_81,"tree").options; +var hit=$(_82).children("span.tree-hit"); +if(hit.length==0){ +return; +} +if(hit.hasClass("tree-collapsed")){ +return; +} +var _84=_c(_81,_82); +if(_83.onBeforeCollapse.call(_81,_84)==false){ +return; +} +hit.removeClass("tree-expanded tree-expanded-hover").addClass("tree-collapsed"); +hit.next().removeClass("tree-folder-open"); +var ul=$(_82).next(); +if(_83.animate){ +ul.slideUp("normal",function(){ +_84.state="closed"; +_83.onCollapse.call(_81,_84); +}); +}else{ +ul.css("display","none"); +_84.state="closed"; +_83.onCollapse.call(_81,_84); +} +}; +function _85(_86,_87){ +var hit=$(_87).children("span.tree-hit"); +if(hit.length==0){ +return; +} +if(hit.hasClass("tree-expanded")){ +_80(_86,_87); +}else{ +_79(_86,_87); +} +}; +function _88(_89,_8a){ +var _8b=_8c(_89,_8a); +if(_8a){ +_8b.unshift(_c(_89,_8a)); +} +for(var i=0;i<_8b.length;i++){ +_79(_89,_8b[i].target); +} +}; +function _8d(_8e,_8f){ +var _90=[]; +var p=_4d(_8e,_8f); +while(p){ +_90.unshift(p); +p=_4d(_8e,p.target); +} +for(var i=0;i<_90.length;i++){ +_79(_8e,_90[i].target); +} +}; +function _91(_92,_93){ +var c=$(_92).parent(); +while(c[0].tagName!="BODY"&&c.css("overflow-y")!="auto"){ +c=c.parent(); +} +var n=$(_93); +var _94=n.offset().top; +if(c[0].tagName!="BODY"){ +var _95=c.offset().top; +if(_94<_95){ +c.scrollTop(c.scrollTop()+_94-_95); +}else{ +if(_94+n.outerHeight()>_95+c.outerHeight()-18){ +c.scrollTop(c.scrollTop()+_94+n.outerHeight()-_95-c.outerHeight()+18); +} +} +}else{ +c.scrollTop(_94); +} +}; +function _96(_97,_98){ +var _99=_8c(_97,_98); +if(_98){ +_99.unshift(_c(_97,_98)); +} +for(var i=0;i<_99.length;i++){ +_80(_97,_99[i].target); +} +}; +function _9a(_9b,_9c){ +var _9d=$(_9c.parent); +var _9e=_9c.data; +if(!_9e){ +return; +} +_9e=$.isArray(_9e)?_9e:[_9e]; +if(!_9e.length){ +return; +} +var ul; +if(_9d.length==0){ +ul=$(_9b); +}else{ +if(_9f(_9b,_9d[0])){ +var _a0=_9d.find("span.tree-icon"); +_a0.removeClass("tree-file").addClass("tree-folder tree-folder-open"); +var hit=$("").insertBefore(_a0); +if(hit.prev().length){ +hit.prev().remove(); +} +} +ul=_9d.next(); +if(!ul.length){ +ul=$("
                  ").insertAfter(_9d); +} +} +_56(_9b,ul[0],_9e,true,true); +}; +function _a1(_a2,_a3){ +var ref=_a3.before||_a3.after; +var _a4=_4d(_a2,ref); +var _a5=_a3.data; +if(!_a5){ +return; +} +_a5=$.isArray(_a5)?_a5:[_a5]; +if(!_a5.length){ +return; +} +_9a(_a2,{parent:(_a4?_a4.target:null),data:_a5}); +var _a6=_a4?_a4.children:$(_a2).tree("getRoots"); +for(var i=0;i<_a6.length;i++){ +if(_a6[i].domId==$(ref).attr("id")){ +for(var j=_a5.length-1;j>=0;j--){ +_a6.splice((_a3.before?i:(i+1)),0,_a5[j]); +} +_a6.splice(_a6.length-_a5.length,_a5.length); +break; +} +} +var li=$(); +for(var i=0;i<_a5.length;i++){ +li=li.add($("#"+_a5[i].domId).parent()); +} +if(_a3.before){ +li.insertBefore($(ref).parent()); +}else{ +li.insertAfter($(ref).parent()); +} +}; +function _a7(_a8,_a9){ +var _aa=del(_a9); +$(_a9).parent().remove(); +if(_aa){ +if(!_aa.children||!_aa.children.length){ +var _ab=$(_aa.target); +_ab.find(".tree-icon").removeClass("tree-folder").addClass("tree-file"); +_ab.find(".tree-hit").remove(); +$("").prependTo(_ab); +_ab.next().remove(); +} +_60(_a8,_aa); +} +_61(_a8,_a8); +function del(_ac){ +var id=$(_ac).attr("id"); +var _ad=_4d(_a8,_ac); +var cc=_ad?_ad.children:$.data(_a8,"tree").data; +for(var i=0;i").appendTo(nt); +_e6.val(_e4.text).focus(); +_e6.width(_e5+20); +_e6._outerHeight(18); +_e6.bind("click",function(e){ +return false; +}).bind("mousedown",function(e){ +e.stopPropagation(); +}).bind("mousemove",function(e){ +e.stopPropagation(); +}).bind("keydown",function(e){ +if(e.keyCode==13){ +_e7(_e1,_e2); +return false; +}else{ +if(e.keyCode==27){ +_ed(_e1,_e2); +return false; +} +} +}).bind("blur",function(e){ +e.stopPropagation(); +_e7(_e1,_e2); +}); +}; +function _e7(_e8,_e9){ +var _ea=$.data(_e8,"tree").options; +$(_e9).css("position",""); +var _eb=$(_e9).find("input.tree-editor"); +var val=_eb.val(); +_eb.remove(); +var _ec=_c(_e8,_e9); +_ec.text=val; +_60(_e8,_ec); +_ea.onAfterEdit.call(_e8,_ec); +}; +function _ed(_ee,_ef){ +var _f0=$.data(_ee,"tree").options; +$(_ef).css("position",""); +$(_ef).find("input.tree-editor").remove(); +var _f1=_c(_ee,_ef); +_60(_ee,_f1); +_f0.onCancelEdit.call(_ee,_f1); +}; +function _f2(_f3,q){ +var _f4=$.data(_f3,"tree"); +var _f5=_f4.options; +var ids={}; +$.easyui.forEach(_f4.data,true,function(_f6){ +if(_f5.filter.call(_f3,q,_f6)){ +$("#"+_f6.domId).removeClass("tree-node-hidden"); +ids[_f6.domId]=1; +_f6.hidden=false; +}else{ +$("#"+_f6.domId).addClass("tree-node-hidden"); +_f6.hidden=true; +} +}); +for(var id in ids){ +_f7(id); +} +function _f7(_f8){ +var p=$(_f3).tree("getParent",$("#"+_f8)[0]); +while(p){ +$(p.target).removeClass("tree-node-hidden"); +p.hidden=false; +p=$(_f3).tree("getParent",p.target); +} +}; +}; +$.fn.tree=function(_f9,_fa){ +if(typeof _f9=="string"){ +return $.fn.tree.methods[_f9](this,_fa); +} +var _f9=_f9||{}; +return this.each(function(){ +var _fb=$.data(this,"tree"); +var _fc; +if(_fb){ +_fc=$.extend(_fb.options,_f9); +_fb.options=_fc; +}else{ +_fc=$.extend({},$.fn.tree.defaults,$.fn.tree.parseOptions(this),_f9); +$.data(this,"tree",{options:_fc,tree:_1(this),data:[],tmpIds:[]}); +var _fd=$.fn.tree.parseData(this); +if(_fd.length){ +_56(this,this,_fd); +} +} +_4(this); +if(_fc.data){ +_56(this,this,$.extend(true,[],_fc.data)); +} +_6f(this,this); +}); +}; +$.fn.tree.methods={options:function(jq){ +return $.data(jq[0],"tree").options; +},loadData:function(jq,_fe){ +return jq.each(function(){ +_56(this,this,_fe); +}); +},getNode:function(jq,_ff){ +return _c(jq[0],_ff); +},getData:function(jq,_100){ +return _c9(jq[0],_100); +},reload:function(jq,_101){ +return jq.each(function(){ +if(_101){ +var node=$(_101); +var hit=node.children("span.tree-hit"); +hit.removeClass("tree-expanded tree-expanded-hover").addClass("tree-collapsed"); +node.next().remove(); +_79(this,_101); +}else{ +$(this).empty(); +_6f(this,this); +} +}); +},getRoot:function(jq,_102){ +return _b3(jq[0],_102); +},getRoots:function(jq){ +return _b7(jq[0]); +},getParent:function(jq,_103){ +return _4d(jq[0],_103); +},getChildren:function(jq,_104){ +return _8c(jq[0],_104); +},getChecked:function(jq,_105){ +return _c2(jq[0],_105); +},getSelected:function(jq){ +return _c6(jq[0]); +},isLeaf:function(jq,_106){ +return _9f(jq[0],_106); +},find:function(jq,id){ +return _d0(jq[0],id); +},select:function(jq,_107){ +return jq.each(function(){ +_d9(this,_107); +}); +},check:function(jq,_108){ +return jq.each(function(){ +_34(this,_108,true); +}); +},uncheck:function(jq,_109){ +return jq.each(function(){ +_34(this,_109,false); +}); +},collapse:function(jq,_10a){ +return jq.each(function(){ +_80(this,_10a); +}); +},expand:function(jq,_10b){ +return jq.each(function(){ +_79(this,_10b); +}); +},collapseAll:function(jq,_10c){ +return jq.each(function(){ +_96(this,_10c); +}); +},expandAll:function(jq,_10d){ +return jq.each(function(){ +_88(this,_10d); +}); +},expandTo:function(jq,_10e){ +return jq.each(function(){ +_8d(this,_10e); +}); +},scrollTo:function(jq,_10f){ +return jq.each(function(){ +_91(this,_10f); +}); +},toggle:function(jq,_110){ +return jq.each(function(){ +_85(this,_110); +}); +},append:function(jq,_111){ +return jq.each(function(){ +_9a(this,_111); +}); +},insert:function(jq,_112){ +return jq.each(function(){ +_a1(this,_112); +}); +},remove:function(jq,_113){ +return jq.each(function(){ +_a7(this,_113); +}); +},pop:function(jq,_114){ +var node=jq.tree("getData",_114); +jq.tree("remove",_114); +return node; +},update:function(jq,_115){ +return jq.each(function(){ +_60(this,$.extend({},_115,{checkState:_115.checked?"checked":(_115.checked===false?"unchecked":undefined)})); +}); +},enableDnd:function(jq){ +return jq.each(function(){ +_11(this); +}); +},disableDnd:function(jq){ +return jq.each(function(){ +_d(this); +}); +},beginEdit:function(jq,_116){ +return jq.each(function(){ +_e0(this,_116); +}); +},endEdit:function(jq,_117){ +return jq.each(function(){ +_e7(this,_117); +}); +},cancelEdit:function(jq,_118){ +return jq.each(function(){ +_ed(this,_118); +}); +},doFilter:function(jq,q){ +return jq.each(function(){ +_f2(this,q); +}); +}}; +$.fn.tree.parseOptions=function(_119){ +var t=$(_119); +return $.extend({},$.parser.parseOptions(_119,["url","method",{checkbox:"boolean",cascadeCheck:"boolean",onlyLeafCheck:"boolean"},{animate:"boolean",lines:"boolean",dnd:"boolean"}])); +}; +$.fn.tree.parseData=function(_11a){ +var data=[]; +_11b(data,$(_11a)); +return data; +function _11b(aa,tree){ +tree.children("li").each(function(){ +var node=$(this); +var item=$.extend({},$.parser.parseOptions(this,["id","iconCls","state"]),{checked:(node.attr("checked")?true:undefined)}); +item.text=node.children("span").html(); +if(!item.text){ +item.text=node.html(); +} +var _11c=node.children("ul"); +if(_11c.length){ +item.children=[]; +_11b(item.children,_11c); +} +aa.push(item); +}); +}; +}; +var _11d=1; +var _11e={render:function(_11f,ul,data){ +var _120=$.data(_11f,"tree"); +var opts=_120.options; +var _121=$(ul).prev(".tree-node"); +var _122=_121.length?$(_11f).tree("getNode",_121[0]):null; +var _123=_121.find("span.tree-indent, span.tree-hit").length; +var cc=_124.call(this,_123,data); +$(ul).append(cc.join("")); +function _124(_125,_126){ +var cc=[]; +for(var i=0;i<_126.length;i++){ +var item=_126[i]; +if(item.state!="open"&&item.state!="closed"){ +item.state="open"; +} +item.domId="_easyui_tree_"+_11d++; +cc.push("
                • "); +cc.push("
                  "); +for(var j=0;j<_125;j++){ +cc.push(""); +} +if(item.state=="closed"){ +cc.push(""); +cc.push(""); +}else{ +if(item.children&&item.children.length){ +cc.push(""); +cc.push(""); +}else{ +cc.push(""); +cc.push(""); +} +} +if(this.hasCheckbox(_11f,item)){ +var flag=0; +if(_122&&_122.checkState=="checked"&&opts.cascadeCheck){ +flag=1; +item.checked=true; +}else{ +if(item.checked){ +$.easyui.addArrayItem(_120.tmpIds,item.domId); +} +} +item.checkState=flag?"checked":"unchecked"; +cc.push(""); +}else{ +item.checkState=undefined; +item.checked=undefined; +} +cc.push(""+opts.formatter.call(_11f,item)+""); +cc.push("
                  "); +if(item.children&&item.children.length){ +var tmp=_124.call(this,_125+1,item.children); +cc.push("
                    "); +cc=cc.concat(tmp); +cc.push("
                  "); +} +cc.push("
                • "); +} +return cc; +}; +},hasCheckbox:function(_127,item){ +var _128=$.data(_127,"tree"); +var opts=_128.options; +if(opts.checkbox){ +if($.isFunction(opts.checkbox)){ +if(opts.checkbox.call(_127,item)){ +return true; +}else{ +return false; +} +}else{ +if(opts.onlyLeafCheck){ +if(item.state=="open"&&!(item.children&&item.children.length)){ +return true; +} +}else{ +return true; +} +} +} +return false; +}}; +$.fn.tree.defaults={url:null,method:"post",animate:false,checkbox:false,cascadeCheck:true,onlyLeafCheck:false,lines:false,dnd:false,data:null,queryParams:{},formatter:function(node){ +return node.text; +},filter:function(q,node){ +var qq=[]; +$.map($.isArray(q)?q:[q],function(q){ +q=$.trim(q); +if(q){ +qq.push(q); +} +}); +for(var i=0;i=0){ +return true; +} +} +return !qq.length; +},loader:function(_12a,_12b,_12c){ +var opts=$(this).tree("options"); +if(!opts.url){ +return false; +} +$.ajax({type:opts.method,url:opts.url,data:_12a,dataType:"json",success:function(data){ +_12b(data); +},error:function(){ +_12c.apply(this,arguments); +}}); +},loadFilter:function(data,_12d){ +return data; +},view:_11e,onBeforeLoad:function(node,_12e){ +},onLoadSuccess:function(node,data){ +},onLoadError:function(){ +},onClick:function(node){ +},onDblClick:function(node){ +},onBeforeExpand:function(node){ +},onExpand:function(node){ +},onBeforeCollapse:function(node){ +},onCollapse:function(node){ +},onBeforeCheck:function(node,_12f){ +},onCheck:function(node,_130){ +},onBeforeSelect:function(node){ +},onSelect:function(node){ +},onContextMenu:function(e,node){ +},onBeforeDrag:function(node){ +},onStartDrag:function(node){ +},onStopDrag:function(node){ +},onDragEnter:function(_131,_132){ +},onDragOver:function(_133,_134){ +},onDragLeave:function(_135,_136){ +},onBeforeDrop:function(_137,_138,_139){ +},onDrop:function(_13a,_13b,_13c){ +},onBeforeEdit:function(node){ +},onAfterEdit:function(node){ +},onCancelEdit:function(node){ +}}; +})(jQuery); + diff --git a/src/main/webapp/static/easyUI/plugins/jquery.treegrid.js b/src/main/webapp/static/easyUI/plugins/jquery.treegrid.js new file mode 100644 index 0000000000000000000000000000000000000000..c0125dc1c5a1390759b9add07af6218e6d1279bc --- /dev/null +++ b/src/main/webapp/static/easyUI/plugins/jquery.treegrid.js @@ -0,0 +1,1350 @@ +/** + * jQuery EasyUI 1.5.2 + * + * Copyright (c) 2009-2017 www.jeasyui.com. All rights reserved. + * + * Licensed under the freeware license: http://www.jeasyui.com/license_freeware.php + * To use it on other terms please contact us: info@jeasyui.com + * + */ +(function($){ +function _1(_2){ +var _3=$.data(_2,"treegrid"); +var _4=_3.options; +$(_2).datagrid($.extend({},_4,{url:null,data:null,loader:function(){ +return false; +},onBeforeLoad:function(){ +return false; +},onLoadSuccess:function(){ +},onResizeColumn:function(_5,_6){ +_16(_2); +_4.onResizeColumn.call(_2,_5,_6); +},onBeforeSortColumn:function(_7,_8){ +if(_4.onBeforeSortColumn.call(_2,_7,_8)==false){ +return false; +} +},onSortColumn:function(_9,_a){ +_4.sortName=_9; +_4.sortOrder=_a; +if(_4.remoteSort){ +_15(_2); +}else{ +var _b=$(_2).treegrid("getData"); +_56(_2,null,_b); +} +_4.onSortColumn.call(_2,_9,_a); +},onClickCell:function(_c,_d){ +_4.onClickCell.call(_2,_d,_37(_2,_c)); +},onDblClickCell:function(_e,_f){ +_4.onDblClickCell.call(_2,_f,_37(_2,_e)); +},onRowContextMenu:function(e,_10){ +_4.onContextMenu.call(_2,e,_37(_2,_10)); +}})); +var _11=$.data(_2,"datagrid").options; +_4.columns=_11.columns; +_4.frozenColumns=_11.frozenColumns; +_3.dc=$.data(_2,"datagrid").dc; +if(_4.pagination){ +var _12=$(_2).datagrid("getPager"); +_12.pagination({pageNumber:_4.pageNumber,pageSize:_4.pageSize,pageList:_4.pageList,onSelectPage:function(_13,_14){ +_4.pageNumber=_13; +_4.pageSize=_14; +_15(_2); +}}); +_4.pageSize=_12.pagination("options").pageSize; +} +}; +function _16(_17,_18){ +var _19=$.data(_17,"datagrid").options; +var dc=$.data(_17,"datagrid").dc; +if(!dc.body1.is(":empty")&&(!_19.nowrap||_19.autoRowHeight)){ +if(_18!=undefined){ +var _1a=_1b(_17,_18); +for(var i=0;i<_1a.length;i++){ +_1c(_1a[i][_19.idField]); +} +} +} +$(_17).datagrid("fixRowHeight",_18); +function _1c(_1d){ +var tr1=_19.finder.getTr(_17,_1d,"body",1); +var tr2=_19.finder.getTr(_17,_1d,"body",2); +tr1.css("height",""); +tr2.css("height",""); +var _1e=Math.max(tr1.height(),tr2.height()); +tr1.css("height",_1e); +tr2.css("height",_1e); +}; +}; +function _1f(_20){ +var dc=$.data(_20,"datagrid").dc; +var _21=$.data(_20,"treegrid").options; +if(!_21.rownumbers){ +return; +} +dc.body1.find("div.datagrid-cell-rownumber").each(function(i){ +$(this).html(i+1); +}); +}; +function _22(_23){ +return function(e){ +$.fn.datagrid.defaults.rowEvents[_23?"mouseover":"mouseout"](e); +var tt=$(e.target); +var fn=_23?"addClass":"removeClass"; +if(tt.hasClass("tree-hit")){ +tt.hasClass("tree-expanded")?tt[fn]("tree-expanded-hover"):tt[fn]("tree-collapsed-hover"); +} +}; +}; +function _24(e){ +var tt=$(e.target); +var tr=tt.closest("tr.datagrid-row"); +if(!tr.length||!tr.parent().length){ +return; +} +var _25=tr.attr("node-id"); +var _26=_27(tr); +if(tt.hasClass("tree-hit")){ +_28(_26,_25); +}else{ +if(tt.hasClass("tree-checkbox")){ +_29(_26,_25); +}else{ +var _2a=$(_26).datagrid("options"); +if(!tt.parent().hasClass("datagrid-cell-check")&&!_2a.singleSelect&&e.shiftKey){ +var _2b=$(_26).treegrid("getChildren"); +var _2c=$.easyui.indexOfArray(_2b,_2a.idField,_2a.lastSelectedIndex); +var _2d=$.easyui.indexOfArray(_2b,_2a.idField,_25); +var _2e=Math.min(Math.max(_2c,0),_2d); +var to=Math.max(_2c,_2d); +var row=_2b[_2d]; +var td=tt.closest("td[field]",tr); +if(td.length){ +var _2f=td.attr("field"); +_2a.onClickCell.call(_26,_25,_2f,row[_2f]); +} +$(_26).treegrid("clearSelections"); +for(var i=_2e;i<=to;i++){ +$(_26).treegrid("selectRow",_2b[i][_2a.idField]); +} +_2a.onClickRow.call(_26,row); +}else{ +$.fn.datagrid.defaults.rowEvents.click(e); +} +} +} +}; +function _27(t){ +return $(t).closest("div.datagrid-view").children(".datagrid-f")[0]; +}; +function _29(_30,_31,_32,_33){ +var _34=$.data(_30,"treegrid"); +var _35=_34.checkedRows; +var _36=_34.options; +if(!_36.checkbox){ +return; +} +var row=_37(_30,_31); +if(!row.checkState){ +return; +} +var tr=_36.finder.getTr(_30,_31); +var ck=tr.find(".tree-checkbox"); +if(_32==undefined){ +if(ck.hasClass("tree-checkbox1")){ +_32=false; +}else{ +if(ck.hasClass("tree-checkbox0")){ +_32=true; +}else{ +if(row._checked==undefined){ +row._checked=ck.hasClass("tree-checkbox1"); +} +_32=!row._checked; +} +} +} +row._checked=_32; +if(_32){ +if(ck.hasClass("tree-checkbox1")){ +return; +} +}else{ +if(ck.hasClass("tree-checkbox0")){ +return; +} +} +if(!_33){ +if(_36.onBeforeCheckNode.call(_30,row,_32)==false){ +return; +} +} +if(_36.cascadeCheck){ +_38(_30,row,_32); +_39(_30,row); +}else{ +_3a(_30,row,_32?"1":"0"); +} +if(!_33){ +_36.onCheckNode.call(_30,row,_32); +} +}; +function _3a(_3b,row,_3c){ +var _3d=$.data(_3b,"treegrid"); +var _3e=_3d.checkedRows; +var _3f=_3d.options; +if(!row.checkState||_3c==undefined){ +return; +} +var tr=_3f.finder.getTr(_3b,row[_3f.idField]); +var ck=tr.find(".tree-checkbox"); +if(!ck.length){ +return; +} +row.checkState=["unchecked","checked","indeterminate"][_3c]; +row.checked=(row.checkState=="checked"); +ck.removeClass("tree-checkbox0 tree-checkbox1 tree-checkbox2"); +ck.addClass("tree-checkbox"+_3c); +if(_3c==0){ +$.easyui.removeArrayItem(_3e,_3f.idField,row[_3f.idField]); +}else{ +$.easyui.addArrayItem(_3e,_3f.idField,row); +} +}; +function _38(_40,row,_41){ +var _42=_41?1:0; +_3a(_40,row,_42); +$.easyui.forEach(row.children||[],true,function(r){ +_3a(_40,r,_42); +}); +}; +function _39(_43,row){ +var _44=$.data(_43,"treegrid").options; +var _45=_46(_43,row[_44.idField]); +if(_45){ +_3a(_43,_45,_47(_45)); +_39(_43,_45); +} +}; +function _47(row){ +var len=0; +var c0=0; +var c1=0; +$.easyui.forEach(row.children||[],false,function(r){ +if(r.checkState){ +len++; +if(r.checkState=="checked"){ +c1++; +}else{ +if(r.checkState=="unchecked"){ +c0++; +} +} +} +}); +if(len==0){ +return undefined; +} +var _48=0; +if(c0==len){ +_48=0; +}else{ +if(c1==len){ +_48=1; +}else{ +_48=2; +} +} +return _48; +}; +function _49(_4a,_4b){ +var _4c=$.data(_4a,"treegrid").options; +if(!_4c.checkbox){ +return; +} +var row=_37(_4a,_4b); +var tr=_4c.finder.getTr(_4a,_4b); +var ck=tr.find(".tree-checkbox"); +if(_4c.view.hasCheckbox(_4a,row)){ +if(!ck.length){ +row.checkState=row.checkState||"unchecked"; +$("").insertBefore(tr.find(".tree-title")); +} +if(row.checkState=="checked"){ +_29(_4a,_4b,true,true); +}else{ +if(row.checkState=="unchecked"){ +_29(_4a,_4b,false,true); +}else{ +var _4d=_47(row); +if(_4d===0){ +_29(_4a,_4b,false,true); +}else{ +if(_4d===1){ +_29(_4a,_4b,true,true); +} +} +} +} +}else{ +ck.remove(); +row.checkState=undefined; +row.checked=undefined; +_39(_4a,row); +} +}; +function _4e(_4f,_50){ +var _51=$.data(_4f,"treegrid").options; +var tr1=_51.finder.getTr(_4f,_50,"body",1); +var tr2=_51.finder.getTr(_4f,_50,"body",2); +var _52=$(_4f).datagrid("getColumnFields",true).length+(_51.rownumbers?1:0); +var _53=$(_4f).datagrid("getColumnFields",false).length; +_54(tr1,_52); +_54(tr2,_53); +function _54(tr,_55){ +$(""+""+"
                  "+""+"").insertAfter(tr); +}; +}; +function _56(_57,_58,_59,_5a,_5b){ +var _5c=$.data(_57,"treegrid"); +var _5d=_5c.options; +var dc=_5c.dc; +_59=_5d.loadFilter.call(_57,_59,_58); +var _5e=_37(_57,_58); +if(_5e){ +var _5f=_5d.finder.getTr(_57,_58,"body",1); +var _60=_5d.finder.getTr(_57,_58,"body",2); +var cc1=_5f.next("tr.treegrid-tr-tree").children("td").children("div"); +var cc2=_60.next("tr.treegrid-tr-tree").children("td").children("div"); +if(!_5a){ +_5e.children=[]; +} +}else{ +var cc1=dc.body1; +var cc2=dc.body2; +if(!_5a){ +_5c.data=[]; +} +} +if(!_5a){ +cc1.empty(); +cc2.empty(); +} +if(_5d.view.onBeforeRender){ +_5d.view.onBeforeRender.call(_5d.view,_57,_58,_59); +} +_5d.view.render.call(_5d.view,_57,cc1,true); +_5d.view.render.call(_5d.view,_57,cc2,false); +if(_5d.showFooter){ +_5d.view.renderFooter.call(_5d.view,_57,dc.footer1,true); +_5d.view.renderFooter.call(_5d.view,_57,dc.footer2,false); +} +if(_5d.view.onAfterRender){ +_5d.view.onAfterRender.call(_5d.view,_57); +} +if(!_58&&_5d.pagination){ +var _61=$.data(_57,"treegrid").total; +var _62=$(_57).datagrid("getPager"); +if(_62.pagination("options").total!=_61){ +_62.pagination({total:_61}); +} +} +_16(_57); +_1f(_57); +$(_57).treegrid("showLines"); +$(_57).treegrid("setSelectionState"); +$(_57).treegrid("autoSizeColumn"); +if(!_5b){ +_5d.onLoadSuccess.call(_57,_5e,_59); +} +}; +function _15(_63,_64,_65,_66,_67){ +var _68=$.data(_63,"treegrid").options; +var _69=$(_63).datagrid("getPanel").find("div.datagrid-body"); +if(_64==undefined&&_68.queryParams){ +_68.queryParams.id=undefined; +} +if(_65){ +_68.queryParams=_65; +} +var _6a=$.extend({},_68.queryParams); +if(_68.pagination){ +$.extend(_6a,{page:_68.pageNumber,rows:_68.pageSize}); +} +if(_68.sortName){ +$.extend(_6a,{sort:_68.sortName,order:_68.sortOrder}); +} +var row=_37(_63,_64); +if(_68.onBeforeLoad.call(_63,row,_6a)==false){ +return; +} +var _6b=_69.find("tr[node-id=\""+_64+"\"] span.tree-folder"); +_6b.addClass("tree-loading"); +$(_63).treegrid("loading"); +var _6c=_68.loader.call(_63,_6a,function(_6d){ +_6b.removeClass("tree-loading"); +$(_63).treegrid("loaded"); +_56(_63,_64,_6d,_66); +if(_67){ +_67(); +} +},function(){ +_6b.removeClass("tree-loading"); +$(_63).treegrid("loaded"); +_68.onLoadError.apply(_63,arguments); +if(_67){ +_67(); +} +}); +if(_6c==false){ +_6b.removeClass("tree-loading"); +$(_63).treegrid("loaded"); +} +}; +function _6e(_6f){ +var _70=_71(_6f); +return _70.length?_70[0]:null; +}; +function _71(_72){ +return $.data(_72,"treegrid").data; +}; +function _46(_73,_74){ +var row=_37(_73,_74); +if(row._parentId){ +return _37(_73,row._parentId); +}else{ +return null; +} +}; +function _1b(_75,_76){ +var _77=$.data(_75,"treegrid").data; +if(_76){ +var _78=_37(_75,_76); +_77=_78?(_78.children||[]):[]; +} +var _79=[]; +$.easyui.forEach(_77,true,function(_7a){ +_79.push(_7a); +}); +return _79; +}; +function _7b(_7c,_7d){ +var _7e=$.data(_7c,"treegrid").options; +var tr=_7e.finder.getTr(_7c,_7d); +var _7f=tr.children("td[field=\""+_7e.treeField+"\"]"); +return _7f.find("span.tree-indent,span.tree-hit").length; +}; +function _37(_80,_81){ +var _82=$.data(_80,"treegrid"); +var _83=_82.options; +var _84=null; +$.easyui.forEach(_82.data,true,function(_85){ +if(_85[_83.idField]==_81){ +_84=_85; +return false; +} +}); +return _84; +}; +function _86(_87,_88){ +var _89=$.data(_87,"treegrid").options; +var row=_37(_87,_88); +var tr=_89.finder.getTr(_87,_88); +var hit=tr.find("span.tree-hit"); +if(hit.length==0){ +return; +} +if(hit.hasClass("tree-collapsed")){ +return; +} +if(_89.onBeforeCollapse.call(_87,row)==false){ +return; +} +hit.removeClass("tree-expanded tree-expanded-hover").addClass("tree-collapsed"); +hit.next().removeClass("tree-folder-open"); +row.state="closed"; +tr=tr.next("tr.treegrid-tr-tree"); +var cc=tr.children("td").children("div"); +if(_89.animate){ +cc.slideUp("normal",function(){ +$(_87).treegrid("autoSizeColumn"); +_16(_87,_88); +_89.onCollapse.call(_87,row); +}); +}else{ +cc.hide(); +$(_87).treegrid("autoSizeColumn"); +_16(_87,_88); +_89.onCollapse.call(_87,row); +} +}; +function _8a(_8b,_8c){ +var _8d=$.data(_8b,"treegrid").options; +var tr=_8d.finder.getTr(_8b,_8c); +var hit=tr.find("span.tree-hit"); +var row=_37(_8b,_8c); +if(hit.length==0){ +return; +} +if(hit.hasClass("tree-expanded")){ +return; +} +if(_8d.onBeforeExpand.call(_8b,row)==false){ +return; +} +hit.removeClass("tree-collapsed tree-collapsed-hover").addClass("tree-expanded"); +hit.next().addClass("tree-folder-open"); +var _8e=tr.next("tr.treegrid-tr-tree"); +if(_8e.length){ +var cc=_8e.children("td").children("div"); +_8f(cc); +}else{ +_4e(_8b,row[_8d.idField]); +var _8e=tr.next("tr.treegrid-tr-tree"); +var cc=_8e.children("td").children("div"); +cc.hide(); +var _90=$.extend({},_8d.queryParams||{}); +_90.id=row[_8d.idField]; +_15(_8b,row[_8d.idField],_90,true,function(){ +if(cc.is(":empty")){ +_8e.remove(); +}else{ +_8f(cc); +} +}); +} +function _8f(cc){ +row.state="open"; +if(_8d.animate){ +cc.slideDown("normal",function(){ +$(_8b).treegrid("autoSizeColumn"); +_16(_8b,_8c); +_8d.onExpand.call(_8b,row); +}); +}else{ +cc.show(); +$(_8b).treegrid("autoSizeColumn"); +_16(_8b,_8c); +_8d.onExpand.call(_8b,row); +} +}; +}; +function _28(_91,_92){ +var _93=$.data(_91,"treegrid").options; +var tr=_93.finder.getTr(_91,_92); +var hit=tr.find("span.tree-hit"); +if(hit.hasClass("tree-expanded")){ +_86(_91,_92); +}else{ +_8a(_91,_92); +} +}; +function _94(_95,_96){ +var _97=$.data(_95,"treegrid").options; +var _98=_1b(_95,_96); +if(_96){ +_98.unshift(_37(_95,_96)); +} +for(var i=0;i<_98.length;i++){ +_86(_95,_98[i][_97.idField]); +} +}; +function _99(_9a,_9b){ +var _9c=$.data(_9a,"treegrid").options; +var _9d=_1b(_9a,_9b); +if(_9b){ +_9d.unshift(_37(_9a,_9b)); +} +for(var i=0;i<_9d.length;i++){ +_8a(_9a,_9d[i][_9c.idField]); +} +}; +function _9e(_9f,_a0){ +var _a1=$.data(_9f,"treegrid").options; +var ids=[]; +var p=_46(_9f,_a0); +while(p){ +var id=p[_a1.idField]; +ids.unshift(id); +p=_46(_9f,id); +} +for(var i=0;i").insertBefore(_a8); +if(hit.prev().length){ +hit.prev().remove(); +} +} +} +_56(_a3,_a4.parent,_a4.data,_a5.data.length>0,true); +}; +function _a9(_aa,_ab){ +var ref=_ab.before||_ab.after; +var _ac=$.data(_aa,"treegrid").options; +var _ad=_46(_aa,ref); +_a2(_aa,{parent:(_ad?_ad[_ac.idField]:null),data:[_ab.data]}); +var _ae=_ad?_ad.children:$(_aa).treegrid("getRoots"); +for(var i=0;i<_ae.length;i++){ +if(_ae[i][_ac.idField]==ref){ +var _af=_ae[_ae.length-1]; +_ae.splice(_ab.before?i:(i+1),0,_af); +_ae.splice(_ae.length-1,1); +break; +} +} +_b0(true); +_b0(false); +_1f(_aa); +$(_aa).treegrid("showLines"); +function _b0(_b1){ +var _b2=_b1?1:2; +var tr=_ac.finder.getTr(_aa,_ab.data[_ac.idField],"body",_b2); +var _b3=tr.closest("table.datagrid-btable"); +tr=tr.parent().children(); +var _b4=_ac.finder.getTr(_aa,ref,"body",_b2); +if(_ab.before){ +tr.insertBefore(_b4); +}else{ +var sub=_b4.next("tr.treegrid-tr-tree"); +tr.insertAfter(sub.length?sub:_b4); +} +_b3.remove(); +}; +}; +function _b5(_b6,_b7){ +var _b8=$.data(_b6,"treegrid"); +var _b9=_b8.options; +var _ba=_46(_b6,_b7); +$(_b6).datagrid("deleteRow",_b7); +$.easyui.removeArrayItem(_b8.checkedRows,_b9.idField,_b7); +_1f(_b6); +if(_ba){ +_49(_b6,_ba[_b9.idField]); +} +_b8.total-=1; +$(_b6).datagrid("getPager").pagination("refresh",{total:_b8.total}); +$(_b6).treegrid("showLines"); +}; +function _bb(_bc){ +var t=$(_bc); +var _bd=t.treegrid("options"); +if(_bd.lines){ +t.treegrid("getPanel").addClass("tree-lines"); +}else{ +t.treegrid("getPanel").removeClass("tree-lines"); +return; +} +t.treegrid("getPanel").find("span.tree-indent").removeClass("tree-line tree-join tree-joinbottom"); +t.treegrid("getPanel").find("div.datagrid-cell").removeClass("tree-node-last tree-root-first tree-root-one"); +var _be=t.treegrid("getRoots"); +if(_be.length>1){ +_bf(_be[0]).addClass("tree-root-first"); +}else{ +if(_be.length==1){ +_bf(_be[0]).addClass("tree-root-one"); +} +} +_c0(_be); +_c1(_be); +function _c0(_c2){ +$.map(_c2,function(_c3){ +if(_c3.children&&_c3.children.length){ +_c0(_c3.children); +}else{ +var _c4=_bf(_c3); +_c4.find(".tree-icon").prev().addClass("tree-join"); +} +}); +if(_c2.length){ +var _c5=_bf(_c2[_c2.length-1]); +_c5.addClass("tree-node-last"); +_c5.find(".tree-join").removeClass("tree-join").addClass("tree-joinbottom"); +} +}; +function _c1(_c6){ +$.map(_c6,function(_c7){ +if(_c7.children&&_c7.children.length){ +_c1(_c7.children); +} +}); +for(var i=0;i<_c6.length-1;i++){ +var _c8=_c6[i]; +var _c9=t.treegrid("getLevel",_c8[_bd.idField]); +var tr=_bd.finder.getTr(_bc,_c8[_bd.idField]); +var cc=tr.next().find("tr.datagrid-row td[field=\""+_bd.treeField+"\"] div.datagrid-cell"); +cc.find("span:eq("+(_c9-1)+")").addClass("tree-line"); +} +}; +function _bf(_ca){ +var tr=_bd.finder.getTr(_bc,_ca[_bd.idField]); +var _cb=tr.find("td[field=\""+_bd.treeField+"\"] div.datagrid-cell"); +return _cb; +}; +}; +$.fn.treegrid=function(_cc,_cd){ +if(typeof _cc=="string"){ +var _ce=$.fn.treegrid.methods[_cc]; +if(_ce){ +return _ce(this,_cd); +}else{ +return this.datagrid(_cc,_cd); +} +} +_cc=_cc||{}; +return this.each(function(){ +var _cf=$.data(this,"treegrid"); +if(_cf){ +$.extend(_cf.options,_cc); +}else{ +_cf=$.data(this,"treegrid",{options:$.extend({},$.fn.treegrid.defaults,$.fn.treegrid.parseOptions(this),_cc),data:[],checkedRows:[],tmpIds:[]}); +} +_1(this); +if(_cf.options.data){ +$(this).treegrid("loadData",_cf.options.data); +} +_15(this); +}); +}; +$.fn.treegrid.methods={options:function(jq){ +return $.data(jq[0],"treegrid").options; +},resize:function(jq,_d0){ +return jq.each(function(){ +$(this).datagrid("resize",_d0); +}); +},fixRowHeight:function(jq,_d1){ +return jq.each(function(){ +_16(this,_d1); +}); +},loadData:function(jq,_d2){ +return jq.each(function(){ +_56(this,_d2.parent,_d2); +}); +},load:function(jq,_d3){ +return jq.each(function(){ +$(this).treegrid("options").pageNumber=1; +$(this).treegrid("getPager").pagination({pageNumber:1}); +$(this).treegrid("reload",_d3); +}); +},reload:function(jq,id){ +return jq.each(function(){ +var _d4=$(this).treegrid("options"); +var _d5={}; +if(typeof id=="object"){ +_d5=id; +}else{ +_d5=$.extend({},_d4.queryParams); +_d5.id=id; +} +if(_d5.id){ +var _d6=$(this).treegrid("find",_d5.id); +if(_d6.children){ +_d6.children.splice(0,_d6.children.length); +} +_d4.queryParams=_d5; +var tr=_d4.finder.getTr(this,_d5.id); +tr.next("tr.treegrid-tr-tree").remove(); +tr.find("span.tree-hit").removeClass("tree-expanded tree-expanded-hover").addClass("tree-collapsed"); +_8a(this,_d5.id); +}else{ +_15(this,null,_d5); +} +}); +},reloadFooter:function(jq,_d7){ +return jq.each(function(){ +var _d8=$.data(this,"treegrid").options; +var dc=$.data(this,"datagrid").dc; +if(_d7){ +$.data(this,"treegrid").footer=_d7; +} +if(_d8.showFooter){ +_d8.view.renderFooter.call(_d8.view,this,dc.footer1,true); +_d8.view.renderFooter.call(_d8.view,this,dc.footer2,false); +if(_d8.view.onAfterRender){ +_d8.view.onAfterRender.call(_d8.view,this); +} +$(this).treegrid("fixRowHeight"); +} +}); +},getData:function(jq){ +return $.data(jq[0],"treegrid").data; +},getFooterRows:function(jq){ +return $.data(jq[0],"treegrid").footer; +},getRoot:function(jq){ +return _6e(jq[0]); +},getRoots:function(jq){ +return _71(jq[0]); +},getParent:function(jq,id){ +return _46(jq[0],id); +},getChildren:function(jq,id){ +return _1b(jq[0],id); +},getLevel:function(jq,id){ +return _7b(jq[0],id); +},find:function(jq,id){ +return _37(jq[0],id); +},isLeaf:function(jq,id){ +var _d9=$.data(jq[0],"treegrid").options; +var tr=_d9.finder.getTr(jq[0],id); +var hit=tr.find("span.tree-hit"); +return hit.length==0; +},select:function(jq,id){ +return jq.each(function(){ +$(this).datagrid("selectRow",id); +}); +},unselect:function(jq,id){ +return jq.each(function(){ +$(this).datagrid("unselectRow",id); +}); +},collapse:function(jq,id){ +return jq.each(function(){ +_86(this,id); +}); +},expand:function(jq,id){ +return jq.each(function(){ +_8a(this,id); +}); +},toggle:function(jq,id){ +return jq.each(function(){ +_28(this,id); +}); +},collapseAll:function(jq,id){ +return jq.each(function(){ +_94(this,id); +}); +},expandAll:function(jq,id){ +return jq.each(function(){ +_99(this,id); +}); +},expandTo:function(jq,id){ +return jq.each(function(){ +_9e(this,id); +}); +},append:function(jq,_da){ +return jq.each(function(){ +_a2(this,_da); +}); +},insert:function(jq,_db){ +return jq.each(function(){ +_a9(this,_db); +}); +},remove:function(jq,id){ +return jq.each(function(){ +_b5(this,id); +}); +},pop:function(jq,id){ +var row=jq.treegrid("find",id); +jq.treegrid("remove",id); +return row; +},refresh:function(jq,id){ +return jq.each(function(){ +var _dc=$.data(this,"treegrid").options; +_dc.view.refreshRow.call(_dc.view,this,id); +}); +},update:function(jq,_dd){ +return jq.each(function(){ +var _de=$.data(this,"treegrid").options; +var row=_dd.row; +_de.view.updateRow.call(_de.view,this,_dd.id,row); +if(row.checked!=undefined){ +row=_37(this,_dd.id); +$.extend(row,{checkState:row.checked?"checked":(row.checked===false?"unchecked":undefined)}); +_49(this,_dd.id); +} +}); +},beginEdit:function(jq,id){ +return jq.each(function(){ +$(this).datagrid("beginEdit",id); +$(this).treegrid("fixRowHeight",id); +}); +},endEdit:function(jq,id){ +return jq.each(function(){ +$(this).datagrid("endEdit",id); +}); +},cancelEdit:function(jq,id){ +return jq.each(function(){ +$(this).datagrid("cancelEdit",id); +}); +},showLines:function(jq){ +return jq.each(function(){ +_bb(this); +}); +},setSelectionState:function(jq){ +return jq.each(function(){ +$(this).datagrid("setSelectionState"); +var _df=$(this).data("treegrid"); +for(var i=0;i<_df.tmpIds.length;i++){ +_29(this,_df.tmpIds[i],true,true); +} +_df.tmpIds=[]; +}); +},getCheckedNodes:function(jq,_e0){ +_e0=_e0||"checked"; +var _e1=[]; +$.easyui.forEach(jq.data("treegrid").checkedRows,false,function(row){ +if(row.checkState==_e0){ +_e1.push(row); +} +}); +return _e1; +},checkNode:function(jq,id){ +return jq.each(function(){ +_29(this,id,true); +}); +},uncheckNode:function(jq,id){ +return jq.each(function(){ +_29(this,id,false); +}); +},clearChecked:function(jq){ +return jq.each(function(){ +var _e2=this; +var _e3=$(_e2).treegrid("options"); +$(_e2).datagrid("clearChecked"); +$.map($(_e2).treegrid("getCheckedNodes"),function(row){ +_29(_e2,row[_e3.idField],false,true); +}); +}); +}}; +$.fn.treegrid.parseOptions=function(_e4){ +return $.extend({},$.fn.datagrid.parseOptions(_e4),$.parser.parseOptions(_e4,["treeField",{checkbox:"boolean",cascadeCheck:"boolean",onlyLeafCheck:"boolean"},{animate:"boolean"}])); +}; +var _e5=$.extend({},$.fn.datagrid.defaults.view,{render:function(_e6,_e7,_e8){ +var _e9=$.data(_e6,"treegrid").options; +var _ea=$(_e6).datagrid("getColumnFields",_e8); +var _eb=$.data(_e6,"datagrid").rowIdPrefix; +if(_e8){ +if(!(_e9.rownumbers||(_e9.frozenColumns&&_e9.frozenColumns.length))){ +return; +} +} +var _ec=this; +if(this.treeNodes&&this.treeNodes.length){ +var _ed=_ee.call(this,_e8,this.treeLevel,this.treeNodes); +$(_e7).append(_ed.join("")); +} +function _ee(_ef,_f0,_f1){ +var _f2=$(_e6).treegrid("getParent",_f1[0][_e9.idField]); +var _f3=(_f2?_f2.children.length:$(_e6).treegrid("getRoots").length)-_f1.length; +var _f4=[""]; +for(var i=0;i<_f1.length;i++){ +var row=_f1[i]; +if(row.state!="open"&&row.state!="closed"){ +row.state="open"; +} +var css=_e9.rowStyler?_e9.rowStyler.call(_e6,row):""; +var cs=this.getStyleValue(css); +var cls="class=\"datagrid-row "+(_f3++%2&&_e9.striped?"datagrid-row-alt ":" ")+cs.c+"\""; +var _f5=cs.s?"style=\""+cs.s+"\"":""; +var _f6=_eb+"-"+(_ef?1:2)+"-"+row[_e9.idField]; +_f4.push(""); +_f4=_f4.concat(_ec.renderRow.call(_ec,_e6,_ea,_ef,_f0,row)); +_f4.push(""); +if(row.children&&row.children.length){ +var tt=_ee.call(this,_ef,_f0+1,row.children); +var v=row.state=="closed"?"none":"block"; +_f4.push(""); +} +} +_f4.push("
                  "); +_f4=_f4.concat(tt); +_f4.push("
                  "); +return _f4; +}; +},renderFooter:function(_f7,_f8,_f9){ +var _fa=$.data(_f7,"treegrid").options; +var _fb=$.data(_f7,"treegrid").footer||[]; +var _fc=$(_f7).datagrid("getColumnFields",_f9); +var _fd=[""]; +for(var i=0;i<_fb.length;i++){ +var row=_fb[i]; +row[_fa.idField]=row[_fa.idField]||("foot-row-id"+i); +_fd.push(""); +_fd.push(this.renderRow.call(this,_f7,_fc,_f9,0,row)); +_fd.push(""); +} +_fd.push("
                  "); +$(_f8).html(_fd.join("")); +},renderRow:function(_fe,_ff,_100,_101,row){ +var _102=$.data(_fe,"treegrid"); +var opts=_102.options; +var cc=[]; +if(_100&&opts.rownumbers){ +cc.push("
                  0
                  "); +} +for(var i=0;i<_ff.length;i++){ +var _103=_ff[i]; +var col=$(_fe).datagrid("getColumnOption",_103); +if(col){ +var css=col.styler?(col.styler(row[_103],row)||""):""; +var cs=this.getStyleValue(css); +var cls=cs.c?"class=\""+cs.c+"\"":""; +var _104=col.hidden?"style=\"display:none;"+cs.s+"\"":(cs.s?"style=\""+cs.s+"\"":""); +cc.push(""); +var _104=""; +if(!col.checkbox){ +if(col.align){ +_104+="text-align:"+col.align+";"; +} +if(!opts.nowrap){ +_104+="white-space:normal;height:auto;"; +}else{ +if(opts.autoRowHeight){ +_104+="height:auto;"; +} +} +} +cc.push("
                  "); +if(col.checkbox){ +if(row.checked){ +cc.push(""); +}else{ +var val=null; +if(col.formatter){ +val=col.formatter(row[_103],row); +}else{ +val=row[_103]; +} +if(_103==opts.treeField){ +for(var j=0;j<_101;j++){ +cc.push(""); +} +if(row.state=="closed"){ +cc.push(""); +cc.push(""); +}else{ +if(row.children&&row.children.length){ +cc.push(""); +cc.push(""); +}else{ +cc.push(""); +cc.push(""); +} +} +if(this.hasCheckbox(_fe,row)){ +var flag=0; +var crow=$.easyui.getArrayItem(_102.checkedRows,opts.idField,row[opts.idField]); +if(crow){ +flag=crow.checkState=="checked"?1:2; +row.checkState=crow.checkState; +row.checked=crow.checked; +$.easyui.addArrayItem(_102.checkedRows,opts.idField,row); +}else{ +var prow=$.easyui.getArrayItem(_102.checkedRows,opts.idField,row._parentId); +if(prow&&prow.checkState=="checked"&&opts.cascadeCheck){ +flag=1; +row.checked=true; +$.easyui.addArrayItem(_102.checkedRows,opts.idField,row); +}else{ +if(row.checked){ +$.easyui.addArrayItem(_102.tmpIds,row[opts.idField]); +} +} +row.checkState=flag?"checked":"unchecked"; +} +cc.push(""); +}else{ +row.checkState=undefined; +row.checked=undefined; +} +cc.push(""+val+""); +}else{ +cc.push(val); +} +} +cc.push("
                  "); +cc.push(""); +} +} +return cc.join(""); +},hasCheckbox:function(_105,row){ +var opts=$.data(_105,"treegrid").options; +if(opts.checkbox){ +if($.isFunction(opts.checkbox)){ +if(opts.checkbox.call(_105,row)){ +return true; +}else{ +return false; +} +}else{ +if(opts.onlyLeafCheck){ +if(row.state=="open"&&!(row.children&&row.children.length)){ +return true; +} +}else{ +return true; +} +} +} +return false; +},refreshRow:function(_106,id){ +this.updateRow.call(this,_106,id,{}); +},updateRow:function(_107,id,row){ +var opts=$.data(_107,"treegrid").options; +var _108=$(_107).treegrid("find",id); +$.extend(_108,row); +var _109=$(_107).treegrid("getLevel",id)-1; +var _10a=opts.rowStyler?opts.rowStyler.call(_107,_108):""; +var _10b=$.data(_107,"datagrid").rowIdPrefix; +var _10c=_108[opts.idField]; +function _10d(_10e){ +var _10f=$(_107).treegrid("getColumnFields",_10e); +var tr=opts.finder.getTr(_107,id,"body",(_10e?1:2)); +var _110=tr.find("div.datagrid-cell-rownumber").html(); +var _111=tr.find("div.datagrid-cell-check input[type=checkbox]").is(":checked"); +tr.html(this.renderRow(_107,_10f,_10e,_109,_108)); +tr.attr("style",_10a||""); +tr.find("div.datagrid-cell-rownumber").html(_110); +if(_111){ +tr.find("div.datagrid-cell-check input[type=checkbox]")._propAttr("checked",true); +} +if(_10c!=id){ +tr.attr("id",_10b+"-"+(_10e?1:2)+"-"+_10c); +tr.attr("node-id",_10c); +} +}; +_10d.call(this,true); +_10d.call(this,false); +$(_107).treegrid("fixRowHeight",id); +},deleteRow:function(_112,id){ +var opts=$.data(_112,"treegrid").options; +var tr=opts.finder.getTr(_112,id); +tr.next("tr.treegrid-tr-tree").remove(); +tr.remove(); +var _113=del(id); +if(_113){ +if(_113.children.length==0){ +tr=opts.finder.getTr(_112,_113[opts.idField]); +tr.next("tr.treegrid-tr-tree").remove(); +var cell=tr.children("td[field=\""+opts.treeField+"\"]").children("div.datagrid-cell"); +cell.find(".tree-icon").removeClass("tree-folder").addClass("tree-file"); +cell.find(".tree-hit").remove(); +$("").prependTo(cell); +} +} +this.setEmptyMsg(_112); +function del(id){ +var cc; +var _114=$(_112).treegrid("getParent",id); +if(_114){ +cc=_114.children; +}else{ +cc=$(_112).treegrid("getData"); +} +for(var i=0;ib?1:-1); +}; +r=_11f(r1[sn],r2[sn])*(so=="asc"?1:-1); +if(r!=0){ +return r; +} +} +return r; +}); +for(var i=0;i=_45[0]&&len<=_45[1]; +},message:"Please enter a value between {0} and {1}."},remote:{validator:function(_46,_47){ +var _48={}; +_48[_47[1]]=_46; +var _49=$.ajax({url:_47[0],dataType:"json",data:_48,async:false,cache:false,type:"post"}).responseText; +return _49=="true"; +},message:"Please fix this field."}},onBeforeValidate:function(){ +},onValidate:function(_4a){ +}}; +})(jQuery); + diff --git a/src/main/webapp/static/easyUI/plugins/jquery.window.js b/src/main/webapp/static/easyUI/plugins/jquery.window.js new file mode 100644 index 0000000000000000000000000000000000000000..77f7b4dfaaa7c5b90b5385fce4a872227388e014 --- /dev/null +++ b/src/main/webapp/static/easyUI/plugins/jquery.window.js @@ -0,0 +1,311 @@ +/** + * jQuery EasyUI 1.5.2 + * + * Copyright (c) 2009-2017 www.jeasyui.com. All rights reserved. + * + * Licensed under the freeware license: http://www.jeasyui.com/license_freeware.php + * To use it on other terms please contact us: info@jeasyui.com + * + */ +(function($){ +function _1(_2,_3){ +var _4=$.data(_2,"window"); +if(_3){ +if(_3.left!=null){ +_4.options.left=_3.left; +} +if(_3.top!=null){ +_4.options.top=_3.top; +} +} +$(_2).panel("move",_4.options); +if(_4.shadow){ +_4.shadow.css({left:_4.options.left,top:_4.options.top}); +} +}; +function _5(_6,_7){ +var _8=$.data(_6,"window").options; +var pp=$(_6).window("panel"); +var _9=pp._outerWidth(); +if(_8.inline){ +var _a=pp.parent(); +_8.left=Math.ceil((_a.width()-_9)/2+_a.scrollLeft()); +}else{ +_8.left=Math.ceil(($(window)._outerWidth()-_9)/2+$(document).scrollLeft()); +} +if(_7){ +_1(_6); +} +}; +function _b(_c,_d){ +var _e=$.data(_c,"window").options; +var pp=$(_c).window("panel"); +var _f=pp._outerHeight(); +if(_e.inline){ +var _10=pp.parent(); +_e.top=Math.ceil((_10.height()-_f)/2+_10.scrollTop()); +}else{ +_e.top=Math.ceil(($(window)._outerHeight()-_f)/2+$(document).scrollTop()); +} +if(_d){ +_1(_c); +} +}; +function _11(_12){ +var _13=$.data(_12,"window"); +var _14=_13.options; +var win=$(_12).panel($.extend({},_13.options,{border:false,doSize:true,closed:true,cls:"window "+(!_14.border?"window-thinborder window-noborder ":(_14.border=="thin"?"window-thinborder ":""))+(_14.cls||""),headerCls:"window-header "+(_14.headerCls||""),bodyCls:"window-body "+(_14.noheader?"window-body-noheader ":" ")+(_14.bodyCls||""),onBeforeDestroy:function(){ +if(_14.onBeforeDestroy.call(_12)==false){ +return false; +} +if(_13.shadow){ +_13.shadow.remove(); +} +if(_13.mask){ +_13.mask.remove(); +} +},onClose:function(){ +if(_13.shadow){ +_13.shadow.hide(); +} +if(_13.mask){ +_13.mask.hide(); +} +_14.onClose.call(_12); +},onOpen:function(){ +if(_13.mask){ +_13.mask.css($.extend({display:"block",zIndex:$.fn.window.defaults.zIndex++},$.fn.window.getMaskSize(_12))); +} +if(_13.shadow){ +_13.shadow.css({display:"block",zIndex:$.fn.window.defaults.zIndex++,left:_14.left,top:_14.top,width:_13.window._outerWidth(),height:_13.window._outerHeight()}); +} +_13.window.css("z-index",$.fn.window.defaults.zIndex++); +_14.onOpen.call(_12); +},onResize:function(_15,_16){ +var _17=$(this).panel("options"); +$.extend(_14,{width:_17.width,height:_17.height,left:_17.left,top:_17.top}); +if(_13.shadow){ +_13.shadow.css({left:_14.left,top:_14.top,width:_13.window._outerWidth(),height:_13.window._outerHeight()}); +} +_14.onResize.call(_12,_15,_16); +},onMinimize:function(){ +if(_13.shadow){ +_13.shadow.hide(); +} +if(_13.mask){ +_13.mask.hide(); +} +_13.options.onMinimize.call(_12); +},onBeforeCollapse:function(){ +if(_14.onBeforeCollapse.call(_12)==false){ +return false; +} +if(_13.shadow){ +_13.shadow.hide(); +} +},onExpand:function(){ +if(_13.shadow){ +_13.shadow.show(); +} +_14.onExpand.call(_12); +}})); +_13.window=win.panel("panel"); +if(_13.mask){ +_13.mask.remove(); +} +if(_14.modal){ +_13.mask=$("
                  ").insertAfter(_13.window); +} +if(_13.shadow){ +_13.shadow.remove(); +} +if(_14.shadow){ +_13.shadow=$("
                  ").insertAfter(_13.window); +} +var _18=_14.closed; +if(_14.left==null){ +_5(_12); +} +if(_14.top==null){ +_b(_12); +} +_1(_12); +if(!_18){ +win.window("open"); +} +}; +function _19(_1a,top,_1b,_1c){ +var _1d=this; +var _1e=$.data(_1d,"window"); +var _1f=_1e.options; +if(!_1f.constrain){ +return {}; +} +if($.isFunction(_1f.constrain)){ +return _1f.constrain.call(_1d,_1a,top,_1b,_1c); +} +var win=$(_1d).window("window"); +var _20=_1f.inline?win.parent():$(window); +if(_1a<0){ +_1a=0; +} +if(top<_20.scrollTop()){ +top=_20.scrollTop(); +} +if(_1a+_1b>_20.width()){ +if(_1b==win.outerWidth()){ +_1a=_20.width()-_1b; +}else{ +_1b=_20.width()-_1a; +} +} +if(top-_20.scrollTop()+_1c>_20.height()){ +if(_1c==win.outerHeight()){ +top=_20.height()-_1c+_20.scrollTop(); +}else{ +_1c=_20.height()-top+_20.scrollTop(); +} +} +return {left:_1a,top:top,width:_1b,height:_1c}; +}; +function _21(_22){ +var _23=$.data(_22,"window"); +_23.window.draggable({handle:">div.panel-header>div.panel-title",disabled:_23.options.draggable==false,onBeforeDrag:function(e){ +if(_23.mask){ +_23.mask.css("z-index",$.fn.window.defaults.zIndex++); +} +if(_23.shadow){ +_23.shadow.css("z-index",$.fn.window.defaults.zIndex++); +} +_23.window.css("z-index",$.fn.window.defaults.zIndex++); +},onStartDrag:function(e){ +_24(e); +},onDrag:function(e){ +_25(e); +return false; +},onStopDrag:function(e){ +_26(e,"move"); +}}); +_23.window.resizable({disabled:_23.options.resizable==false,onStartResize:function(e){ +_24(e); +},onResize:function(e){ +_25(e); +return false; +},onStopResize:function(e){ +_26(e,"resize"); +}}); +function _24(e){ +if(_23.pmask){ +_23.pmask.remove(); +} +_23.pmask=$("
                  ").insertAfter(_23.window); +_23.pmask.css({display:"none",zIndex:$.fn.window.defaults.zIndex++,left:e.data.left,top:e.data.top,width:_23.window._outerWidth(),height:_23.window._outerHeight()}); +if(_23.proxy){ +_23.proxy.remove(); +} +_23.proxy=$("
                  ").insertAfter(_23.window); +_23.proxy.css({display:"none",zIndex:$.fn.window.defaults.zIndex++,left:e.data.left,top:e.data.top}); +_23.proxy._outerWidth(e.data.width)._outerHeight(e.data.height); +_23.proxy.hide(); +setTimeout(function(){ +if(_23.pmask){ +_23.pmask.show(); +} +if(_23.proxy){ +_23.proxy.show(); +} +},500); +}; +function _25(e){ +$.extend(e.data,_19.call(_22,e.data.left,e.data.top,e.data.width,e.data.height)); +_23.pmask.show(); +_23.proxy.css({display:"block",left:e.data.left,top:e.data.top}); +_23.proxy._outerWidth(e.data.width); +_23.proxy._outerHeight(e.data.height); +}; +function _26(e,_27){ +$.extend(e.data,_19.call(_22,e.data.left,e.data.top,e.data.width+0.1,e.data.height+0.1)); +$(_22).window(_27,e.data); +_23.pmask.remove(); +_23.pmask=null; +_23.proxy.remove(); +_23.proxy=null; +}; +}; +$(function(){ +if(!$._positionFixed){ +$(window).resize(function(){ +$("body>div.window-mask:visible").css({width:"",height:""}); +setTimeout(function(){ +$("body>div.window-mask:visible").css($.fn.window.getMaskSize()); +},50); +}); +} +}); +$.fn.window=function(_28,_29){ +if(typeof _28=="string"){ +var _2a=$.fn.window.methods[_28]; +if(_2a){ +return _2a(this,_29); +}else{ +return this.panel(_28,_29); +} +} +_28=_28||{}; +return this.each(function(){ +var _2b=$.data(this,"window"); +if(_2b){ +$.extend(_2b.options,_28); +}else{ +_2b=$.data(this,"window",{options:$.extend({},$.fn.window.defaults,$.fn.window.parseOptions(this),_28)}); +if(!_2b.options.inline){ +document.body.appendChild(this); +} +} +_11(this); +_21(this); +}); +}; +$.fn.window.methods={options:function(jq){ +var _2c=jq.panel("options"); +var _2d=$.data(jq[0],"window").options; +return $.extend(_2d,{closed:_2c.closed,collapsed:_2c.collapsed,minimized:_2c.minimized,maximized:_2c.maximized}); +},window:function(jq){ +return $.data(jq[0],"window").window; +},move:function(jq,_2e){ +return jq.each(function(){ +_1(this,_2e); +}); +},hcenter:function(jq){ +return jq.each(function(){ +_5(this,true); +}); +},vcenter:function(jq){ +return jq.each(function(){ +_b(this,true); +}); +},center:function(jq){ +return jq.each(function(){ +_5(this); +_b(this); +_1(this); +}); +}}; +$.fn.window.getMaskSize=function(_2f){ +var _30=$(_2f).data("window"); +if(_30&&_30.options.inline){ +return {}; +}else{ +if($._positionFixed){ +return {position:"fixed"}; +}else{ +return {width:$(document).width(),height:$(document).height()}; +} +} +}; +$.fn.window.parseOptions=function(_31){ +return $.extend({},$.fn.panel.parseOptions(_31),$.parser.parseOptions(_31,[{draggable:"boolean",resizable:"boolean",shadow:"boolean",modal:"boolean",inline:"boolean"}])); +}; +$.fn.window.defaults=$.extend({},$.fn.panel.defaults,{zIndex:9000,draggable:true,resizable:true,shadow:true,modal:false,border:true,inline:false,title:"New Window",collapsible:true,minimizable:true,maximizable:true,closable:true,closed:false,constrain:false}); +})(jQuery); + diff --git a/src/main/webapp/static/easyUI/themes/black/accordion.css b/src/main/webapp/static/easyUI/themes/black/accordion.css new file mode 100644 index 0000000000000000000000000000000000000000..b2dba5200b03222728b115fb2b410ba0494fdc67 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/black/accordion.css @@ -0,0 +1,89 @@ +.accordion { + overflow: hidden; + border-width: 1px; + border-style: solid; +} +.accordion .accordion-header { + border-width: 0 0 1px; + cursor: pointer; +} +.accordion .accordion-body { + border-width: 0 0 1px; +} +.accordion-noborder { + border-width: 0; +} +.accordion-noborder .accordion-header { + border-width: 0 0 1px; +} +.accordion-noborder .accordion-body { + border-width: 0 0 1px; +} +.accordion-collapse { + background: url('images/accordion_arrows.png') no-repeat 0 0; +} +.accordion-expand { + background: url('images/accordion_arrows.png') no-repeat -16px 0; +} +.accordion { + background: #666; + border-color: #000; +} +.accordion .accordion-header { + background: #3d3d3d; + filter: none; +} +.accordion .accordion-header-selected { + background: #0052A3; +} +.accordion .accordion-header-selected .panel-title { + color: #fff; +} +.accordion .panel-last > .accordion-header { + border-bottom-color: #3d3d3d; +} +.accordion .panel-last > .accordion-body { + border-bottom-color: #666; +} +.accordion .panel-last > .accordion-header-selected, +.accordion .panel-last > .accordion-header-border { + border-bottom-color: #000; +} +.accordion> .panel-hleft { + float: left; +} +.accordion> .panel-hleft>.panel-header { + border-width: 0 1px 0 0; +} +.accordion> .panel-hleft> .panel-body { + border-width: 0 1px 0 0; +} +.accordion> .panel-hleft.panel-last > .accordion-header { + border-right-color: #3d3d3d; +} +.accordion> .panel-hleft.panel-last > .accordion-body { + border-right-color: #666; +} +.accordion> .panel-hleft.panel-last > .accordion-header-selected, +.accordion> .panel-hleft.panel-last > .accordion-header-border { + border-right-color: #000; +} +.accordion> .panel-hright { + float: right; +} +.accordion> .panel-hright>.panel-header { + border-width: 0 0 0 1px; +} +.accordion> .panel-hright> .panel-body { + border-width: 0 0 0 1px; +} +.accordion> .panel-hright.panel-last > .accordion-header { + border-left-color: #3d3d3d; +} +.accordion> .panel-hright.panel-last > .accordion-body { + border-left-color: #666; +} +.accordion> .panel-hright.panel-last > .accordion-header-selected, +.accordion> .panel-hright.panel-last > .accordion-header-border { + border-left-color: #000; +} diff --git a/src/main/webapp/static/easyUI/themes/black/calendar.css b/src/main/webapp/static/easyUI/themes/black/calendar.css new file mode 100644 index 0000000000000000000000000000000000000000..5e71d3eb1e6ade76739b6a7b0b41582e13fb3e98 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/black/calendar.css @@ -0,0 +1,202 @@ +.calendar { + border-width: 1px; + border-style: solid; + padding: 1px; + overflow: hidden; +} +.calendar table { + table-layout: fixed; + border-collapse: separate; + font-size: 12px; + width: 100%; + height: 100%; +} +.calendar table td, +.calendar table th { + font-size: 12px; +} +.calendar-noborder { + border: 0; +} +.calendar-header { + position: relative; + height: 22px; +} +.calendar-title { + text-align: center; + height: 22px; +} +.calendar-title span { + position: relative; + display: inline-block; + top: 2px; + padding: 0 3px; + height: 18px; + line-height: 18px; + font-size: 12px; + cursor: pointer; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-prevmonth, +.calendar-nextmonth, +.calendar-prevyear, +.calendar-nextyear { + position: absolute; + top: 50%; + margin-top: -7px; + width: 14px; + height: 14px; + cursor: pointer; + font-size: 1px; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-prevmonth { + left: 20px; + background: url('images/calendar_arrows.png') no-repeat -18px -2px; +} +.calendar-nextmonth { + right: 20px; + background: url('images/calendar_arrows.png') no-repeat -34px -2px; +} +.calendar-prevyear { + left: 3px; + background: url('images/calendar_arrows.png') no-repeat -1px -2px; +} +.calendar-nextyear { + right: 3px; + background: url('images/calendar_arrows.png') no-repeat -49px -2px; +} +.calendar-body { + position: relative; +} +.calendar-body th, +.calendar-body td { + text-align: center; +} +.calendar-day { + border: 0; + padding: 1px; + cursor: pointer; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-other-month { + opacity: 0.3; + filter: alpha(opacity=30); +} +.calendar-disabled { + opacity: 0.6; + filter: alpha(opacity=60); + cursor: default; +} +.calendar-menu { + position: absolute; + top: 0; + left: 0; + width: 180px; + height: 150px; + padding: 5px; + font-size: 12px; + display: none; + overflow: hidden; +} +.calendar-menu-year-inner { + text-align: center; + padding-bottom: 5px; +} +.calendar-menu-year { + width: 50px; + text-align: center; + border-width: 1px; + border-style: solid; + outline-style: none; + resize: none; + margin: 0; + padding: 2px; + font-weight: bold; + font-size: 12px; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-menu-prev, +.calendar-menu-next { + display: inline-block; + width: 21px; + height: 21px; + vertical-align: top; + cursor: pointer; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-menu-prev { + margin-right: 10px; + background: url('images/calendar_arrows.png') no-repeat 2px 2px; +} +.calendar-menu-next { + margin-left: 10px; + background: url('images/calendar_arrows.png') no-repeat -45px 2px; +} +.calendar-menu-month { + text-align: center; + cursor: pointer; + font-weight: bold; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-body th, +.calendar-menu-month { + color: #ffffff; +} +.calendar-day { + color: #fff; +} +.calendar-sunday { + color: #CC2222; +} +.calendar-saturday { + color: #00ee00; +} +.calendar-today { + color: #0000ff; +} +.calendar-menu-year { + border-color: #000; +} +.calendar { + border-color: #000; +} +.calendar-header { + background: #3d3d3d; +} +.calendar-body, +.calendar-menu { + background: #666; +} +.calendar-body th { + background: #555; + padding: 2px 0; +} +.calendar-hover, +.calendar-nav-hover, +.calendar-menu-hover { + background-color: #777; + color: #fff; +} +.calendar-hover { + border: 1px solid #555; + padding: 0; +} +.calendar-selected { + background-color: #0052A3; + color: #fff; + border: 1px solid #00458a; + padding: 0; +} diff --git a/src/main/webapp/static/easyUI/themes/black/combo.css b/src/main/webapp/static/easyUI/themes/black/combo.css new file mode 100644 index 0000000000000000000000000000000000000000..0798ce198b32822a43e785961ecd2da3c4f4bf0d --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/black/combo.css @@ -0,0 +1,35 @@ +.combo-arrow { + width: 18px; + height: 20px; + overflow: hidden; + display: inline-block; + vertical-align: top; + cursor: pointer; + opacity: 0.6; + filter: alpha(opacity=60); +} +.combo-arrow-hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.combo-panel { + overflow: auto; +} +.combo-arrow { + background: url('images/combo_arrow.png') no-repeat center center; +} +.combo-panel { + background-color: #666; +} +.combo-arrow { + background-color: #3d3d3d; +} +.combo-arrow-hover { + background-color: #777; +} +.combo-arrow:hover { + background-color: #777; +} +.combo .textbox-icon-disabled:hover { + cursor: default; +} diff --git a/src/main/webapp/static/easyUI/themes/black/combobox.css b/src/main/webapp/static/easyUI/themes/black/combobox.css new file mode 100644 index 0000000000000000000000000000000000000000..27b4096ffee9a00f50db2dbeddbee4c409fc5ad1 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/black/combobox.css @@ -0,0 +1,39 @@ +.combobox-item, +.combobox-group, +.combobox-stick { + font-size: 12px; + padding: 3px; +} +.combobox-item-disabled { + opacity: 0.5; + filter: alpha(opacity=50); +} +.combobox-gitem { + padding-left: 10px; +} +.combobox-group, +.combobox-stick { + font-weight: bold; +} +.combobox-stick { + position: absolute; + top: 1px; + left: 1px; + right: 1px; + background: inherit; +} +.combobox-item-hover { + background-color: #777; + color: #fff; +} +.combobox-item-selected { + background-color: #0052A3; + color: #fff; +} +.combobox-icon { + display: inline-block; + width: 16px; + height: 16px; + vertical-align: middle; + margin-right: 2px; +} diff --git a/src/main/webapp/static/easyUI/themes/black/datagrid.css b/src/main/webapp/static/easyUI/themes/black/datagrid.css new file mode 100644 index 0000000000000000000000000000000000000000..3559be75df11b346ab9caa65fe54551de0062d20 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/black/datagrid.css @@ -0,0 +1,288 @@ +.datagrid .panel-body { + overflow: hidden; + position: relative; +} +.datagrid-view { + position: relative; + overflow: hidden; +} +.datagrid-view1, +.datagrid-view2 { + position: absolute; + overflow: hidden; + top: 0; +} +.datagrid-view1 { + left: 0; +} +.datagrid-view2 { + right: 0; +} +.datagrid-mask { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + opacity: 0.3; + filter: alpha(opacity=30); + display: none; +} +.datagrid-mask-msg { + position: absolute; + top: 50%; + margin-top: -20px; + padding: 10px 5px 10px 30px; + width: auto; + height: 16px; + border-width: 2px; + border-style: solid; + display: none; +} +.datagrid-empty { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 25px; + line-height: 25px; + text-align: center; +} +.datagrid-sort-icon { + padding: 0; + display: none; +} +.datagrid-toolbar { + height: auto; + padding: 1px 2px; + border-width: 0 0 1px 0; + border-style: solid; +} +.datagrid-btn-separator { + float: left; + height: 24px; + border-left: 1px solid #444; + border-right: 1px solid #777; + margin: 2px 1px; +} +.datagrid .datagrid-pager { + display: block; + margin: 0; + border-width: 1px 0 0 0; + border-style: solid; +} +.datagrid .datagrid-pager-top { + border-width: 0 0 1px 0; +} +.datagrid-header { + overflow: hidden; + cursor: default; + border-width: 0 0 1px 0; + border-style: solid; +} +.datagrid-header-inner { + float: left; + width: 10000px; +} +.datagrid-header-row, +.datagrid-row { + height: 25px; +} +.datagrid-header td, +.datagrid-body td, +.datagrid-footer td { + border-width: 0 1px 1px 0; + border-style: dotted; + margin: 0; + padding: 0; +} +.datagrid-cell, +.datagrid-cell-group, +.datagrid-header-rownumber, +.datagrid-cell-rownumber { + margin: 0; + padding: 0 4px; + white-space: nowrap; + word-wrap: normal; + overflow: hidden; + height: 18px; + line-height: 18px; + font-size: 12px; +} +.datagrid-header .datagrid-cell { + height: auto; +} +.datagrid-header .datagrid-cell span { + font-size: 12px; +} +.datagrid-cell-group { + text-align: center; + text-overflow: ellipsis; +} +.datagrid-header-rownumber, +.datagrid-cell-rownumber { + width: 30px; + text-align: center; + margin: 0; + padding: 0; +} +.datagrid-body { + margin: 0; + padding: 0; + overflow: auto; + zoom: 1; +} +.datagrid-view1 .datagrid-body-inner { + padding-bottom: 20px; +} +.datagrid-view1 .datagrid-body { + overflow: hidden; +} +.datagrid-footer { + overflow: hidden; +} +.datagrid-footer-inner { + border-width: 1px 0 0 0; + border-style: solid; + width: 10000px; + float: left; +} +.datagrid-row-editing .datagrid-cell { + height: auto; +} +.datagrid-header-check, +.datagrid-cell-check { + padding: 0; + width: 27px; + height: 18px; + font-size: 1px; + text-align: center; + overflow: hidden; +} +.datagrid-header-check input, +.datagrid-cell-check input { + margin: 0; + padding: 0; + width: 15px; + height: 18px; +} +.datagrid-resize-proxy { + position: absolute; + width: 1px; + height: 10000px; + top: 0; + cursor: e-resize; + display: none; +} +.datagrid-body .datagrid-editable { + margin: 0; + padding: 0; +} +.datagrid-body .datagrid-editable table { + width: 100%; + height: 100%; +} +.datagrid-body .datagrid-editable td { + border: 0; + margin: 0; + padding: 0; +} +.datagrid-view .datagrid-editable-input { + margin: 0; + padding: 2px 4px; + border: 1px solid #000; + font-size: 12px; + outline-style: none; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.datagrid-view .validatebox-invalid { + border-color: #ffa8a8; +} +.datagrid-sort .datagrid-sort-icon { + display: inline; + padding: 0 13px 0 0; + background: url('images/datagrid_icons.png') no-repeat -64px center; +} +.datagrid-sort-desc .datagrid-sort-icon { + display: inline; + padding: 0 13px 0 0; + background: url('images/datagrid_icons.png') no-repeat -16px center; +} +.datagrid-sort-asc .datagrid-sort-icon { + display: inline; + padding: 0 13px 0 0; + background: url('images/datagrid_icons.png') no-repeat 0px center; +} +.datagrid-row-collapse { + background: url('images/datagrid_icons.png') no-repeat -48px center; +} +.datagrid-row-expand { + background: url('images/datagrid_icons.png') no-repeat -32px center; +} +.datagrid-mask-msg { + background: #666 url('images/loading.gif') no-repeat scroll 5px center; +} +.datagrid-header, +.datagrid-td-rownumber { + background-color: #444; + background: -webkit-linear-gradient(top,#4c4c4c 0,#3f3f3f 100%); + background: -moz-linear-gradient(top,#4c4c4c 0,#3f3f3f 100%); + background: -o-linear-gradient(top,#4c4c4c 0,#3f3f3f 100%); + background: linear-gradient(to bottom,#4c4c4c 0,#3f3f3f 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#4c4c4c,endColorstr=#3f3f3f,GradientType=0); +} +.datagrid-cell-rownumber { + color: #fff; +} +.datagrid-resize-proxy { + background: #cccccc; +} +.datagrid-mask { + background: #000; +} +.datagrid-mask-msg { + border-color: #000; +} +.datagrid-toolbar, +.datagrid-pager { + background: #555; +} +.datagrid-header, +.datagrid-toolbar, +.datagrid-pager, +.datagrid-footer-inner { + border-color: #222; +} +.datagrid-header td, +.datagrid-body td, +.datagrid-footer td { + border-color: #222; +} +.datagrid-htable, +.datagrid-btable, +.datagrid-ftable { + color: #fff; + border-collapse: separate; +} +.datagrid-row-alt { + background: #555; +} +.datagrid-row-over, +.datagrid-header td.datagrid-header-over { + background: #777; + color: #fff; + cursor: default; +} +.datagrid-row-selected { + background: #0052A3; + color: #fff; +} +.datagrid-row-editing .textbox, +.datagrid-row-editing .textbox-text { + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} diff --git a/src/main/webapp/static/easyUI/themes/black/datalist.css b/src/main/webapp/static/easyUI/themes/black/datalist.css new file mode 100644 index 0000000000000000000000000000000000000000..94dd67e5f4026872637d7d6b756bbda9e1dd8175 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/black/datalist.css @@ -0,0 +1,95 @@ +.datalist .datagrid-header { + border-width: 0; +} +.datalist .datagrid-group, +.m-list .m-list-group { + height: 25px; + line-height: 25px; + font-weight: bold; + overflow: hidden; + background-color: #444; + border-style: solid; + border-width: 0 0 1px 0; + border-color: #222; +} +.datalist .datagrid-group-expander { + display: none; +} +.datalist .datagrid-group-title { + padding: 0 4px; +} +.datalist .datagrid-btable { + width: 100%; + table-layout: fixed; +} +.datalist .datagrid-row td { + border-style: solid; + border-left-color: transparent; + border-right-color: transparent; + border-bottom-width: 0; +} +.datalist-lines .datagrid-row td { + border-bottom-width: 1px; +} +.datalist .datagrid-cell, +.m-list li { + width: auto; + height: auto; + padding: 2px 4px; + line-height: 18px; + position: relative; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; +} +.datalist-link, +.m-list li>a { + display: block; + position: relative; + cursor: pointer; + color: #fff; + text-decoration: none; + overflow: hidden; + margin: -2px -4px; + padding: 2px 4px; + padding-right: 16px; + line-height: 18px; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; +} +.datalist-link::after, +.m-list li>a::after { + position: absolute; + display: block; + width: 8px; + height: 8px; + content: ''; + right: 6px; + top: 50%; + margin-top: -4px; + border-style: solid; + border-width: 1px 1px 0 0; + -ms-transform: rotate(45deg); + -moz-transform: rotate(45deg); + -webkit-transform: rotate(45deg); + -o-transform: rotate(45deg); + transform: rotate(45deg); +} +.m-list { + margin: 0; + padding: 0; + list-style: none; +} +.m-list li { + border-style: solid; + border-width: 0 0 1px 0; + border-color: #222; +} +.m-list li>a:hover { + background: #777; + color: #fff; +} +.m-list .m-list-group { + padding: 0 4px; +} diff --git a/src/main/webapp/static/easyUI/themes/black/datebox.css b/src/main/webapp/static/easyUI/themes/black/datebox.css new file mode 100644 index 0000000000000000000000000000000000000000..f5b6bb78bf313d9f30e030a5931c5f8c742c981b --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/black/datebox.css @@ -0,0 +1,36 @@ +.datebox-calendar-inner { + height: 180px; +} +.datebox-button { + padding: 0 5px; + text-align: center; +} +.datebox-button a { + line-height: 22px; + font-size: 12px; + font-weight: bold; + text-decoration: none; + opacity: 0.6; + filter: alpha(opacity=60); +} +.datebox-button a:hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.datebox-current, +.datebox-close { + float: left; +} +.datebox-close { + float: right; +} +.datebox .combo-arrow { + background-image: url('images/datebox_arrow.png'); + background-position: center center; +} +.datebox-button { + background-color: #555; +} +.datebox-button a { + color: #fff; +} diff --git a/src/main/webapp/static/easyUI/themes/black/dialog.css b/src/main/webapp/static/easyUI/themes/black/dialog.css new file mode 100644 index 0000000000000000000000000000000000000000..4a6f36eb2a299e9a6de6ae92a296040002739663 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/black/dialog.css @@ -0,0 +1,47 @@ +.dialog-content { + overflow: auto; +} +.dialog-toolbar { + position: relative; + padding: 2px 5px; +} +.dialog-tool-separator { + float: left; + height: 24px; + border-left: 1px solid #444; + border-right: 1px solid #777; + margin: 2px 1px; +} +.dialog-button { + position: relative; + top: -1px; + padding: 5px; + text-align: right; +} +.dialog-button .l-btn { + margin-left: 5px; +} +.dialog-toolbar, +.dialog-button { + background: #555; + border-width: 1px; + border-style: solid; +} +.dialog-toolbar { + border-color: #000 #000 #222 #000; +} +.dialog-button { + border-color: #222 #000 #000 #000; +} +.window-thinborder .dialog-toolbar { + border-left: transparent; + border-right: transparent; + border-top-color: #555; +} +.window-thinborder .dialog-button { + top: 0px; + padding: 5px 8px 8px 8px; + border-left: transparent; + border-right: transparent; + border-bottom: transparent; +} diff --git a/src/main/webapp/static/easyUI/themes/black/easyui.css b/src/main/webapp/static/easyUI/themes/black/easyui.css new file mode 100644 index 0000000000000000000000000000000000000000..91149e3966b577220de8b36cd71458e86ee6f98a --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/black/easyui.css @@ -0,0 +1,3220 @@ +.panel { + overflow: hidden; + text-align: left; + margin: 0; + border: 0; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.panel-header, +.panel-body { + border-width: 1px; + border-style: solid; +} +.panel-header { + padding: 5px; + position: relative; +} +.panel-title { + background: url('images/blank.gif') no-repeat; +} +.panel-header-noborder { + border-width: 0 0 1px 0; +} +.panel-body { + overflow: auto; + border-top-width: 0; + padding: 0; +} +.panel-body-noheader { + border-top-width: 1px; +} +.panel-body-noborder { + border-width: 0px; +} +.panel-body-nobottom { + border-bottom-width: 0; +} +.panel-with-icon { + padding-left: 18px; +} +.panel-icon, +.panel-tool { + position: absolute; + top: 50%; + margin-top: -8px; + height: 16px; + overflow: hidden; +} +.panel-icon { + left: 5px; + width: 16px; +} +.panel-tool { + right: 5px; + width: auto; +} +.panel-tool a { + display: inline-block; + width: 16px; + height: 16px; + opacity: 0.6; + filter: alpha(opacity=60); + margin: 0 0 0 2px; + vertical-align: top; +} +.panel-tool a:hover { + opacity: 1; + filter: alpha(opacity=100); + background-color: #777; + -moz-border-radius: 3px 3px 3px 3px; + -webkit-border-radius: 3px 3px 3px 3px; + border-radius: 3px 3px 3px 3px; +} +.panel-loading { + padding: 11px 0px 10px 30px; +} +.panel-noscroll { + overflow: hidden; +} +.panel-fit, +.panel-fit body { + height: 100%; + margin: 0; + padding: 0; + border: 0; + overflow: hidden; +} +.panel-loading { + background: url('images/loading.gif') no-repeat 10px 10px; +} +.panel-tool-close { + background: url('images/panel_tools.png') no-repeat -16px 0px; +} +.panel-tool-min { + background: url('images/panel_tools.png') no-repeat 0px 0px; +} +.panel-tool-max { + background: url('images/panel_tools.png') no-repeat 0px -16px; +} +.panel-tool-restore { + background: url('images/panel_tools.png') no-repeat -16px -16px; +} +.panel-tool-collapse { + background: url('images/panel_tools.png') no-repeat -32px 0; +} +.panel-tool-expand { + background: url('images/panel_tools.png') no-repeat -32px -16px; +} +.panel-header, +.panel-body { + border-color: #000; +} +.panel-header { + background-color: #3d3d3d; + background: -webkit-linear-gradient(top,#454545 0,#383838 100%); + background: -moz-linear-gradient(top,#454545 0,#383838 100%); + background: -o-linear-gradient(top,#454545 0,#383838 100%); + background: linear-gradient(to bottom,#454545 0,#383838 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#454545,endColorstr=#383838,GradientType=0); +} +.panel-body { + background-color: #666; + color: #fff; + font-size: 12px; +} +.panel-title { + font-size: 12px; + font-weight: bold; + color: #fff; + height: 16px; + line-height: 16px; +} +.panel-footer { + border: 1px solid #000; + overflow: hidden; + background: #555; +} +.panel-footer-noborder { + border-width: 1px 0 0 0; +} +.panel-hleft, +.panel-hright { + position: relative; +} +.panel-hleft>.panel-body, +.panel-hright>.panel-body { + position: absolute; +} +.panel-hleft>.panel-header { + float: left; +} +.panel-hright>.panel-header { + float: right; +} +.panel-hleft>.panel-body { + border-top-width: 1px; + border-left-width: 0; +} +.panel-hright>.panel-body { + border-top-width: 1px; + border-right-width: 0; +} +.panel-hleft>.panel-body-nobottom { + border-bottom-width: 1px; + border-right-width: 0; +} +.panel-hright>.panel-body-nobottom { + border-bottom-width: 1px; + border-left-width: 0; +} +.panel-hleft>.panel-footer { + position: absolute; + right: 0; +} +.panel-hright>.panel-footer { + position: absolute; + left: 0; +} +.panel-hleft>.panel-header-noborder { + border-width: 0 1px 0 0; +} +.panel-hright>.panel-header-noborder { + border-width: 0 0 0 1px; +} +.panel-hleft>.panel-body-noborder { + border-width: 0; +} +.panel-hright>.panel-body-noborder { + border-width: 0; +} +.panel-hleft>.panel-body-noheader { + border-left-width: 1px; +} +.panel-hright>.panel-body-noheader { + border-right-width: 1px; +} +.panel-hleft>.panel-footer-noborder { + border-width: 0 0 0 1px; +} +.panel-hright>.panel-footer-noborder { + border-width: 0 1px 0 0; +} +.panel-hleft>.panel-header .panel-icon, +.panel-hright>.panel-header .panel-icon { + margin-top: 0; + top: 5px; +} +.panel-hleft>.panel-header .panel-title, +.panel-hright>.panel-header .panel-title { + position: absolute; + min-width: 16px; + left: 21px; + top: 5px; + bottom: auto; + white-space: nowrap; + word-wrap: normal; + -webkit-transform: rotate(90deg); + -webkit-transform-origin: 0 0; + -moz-transform: rotate(90deg); + -moz-transform-origin: 0 0; + -o-transform: rotate(90deg); + -o-transform-origin: 0 0; + transform: rotate(90deg); + transform-origin: 0 0; +} +.panel-hleft>.panel-header .panel-title-up, +.panel-hright>.panel-header .panel-title-up { + position: absolute; + min-width: 16px; + left: 21px; + top: auto; + bottom: 5px; + text-align: right; + white-space: nowrap; + word-wrap: normal; + -webkit-transform: rotate(-90deg); + -webkit-transform-origin: 0 0; + -moz-transform: rotate(-90deg); + -moz-transform-origin: 0 0; + -o-transform: rotate(-90deg); + -o-transform-origin: 0 0; + transform: rotate(-90deg); + transform-origin: 0 16px; +} +.panel-hleft>.panel-header .panel-with-icon.panel-title-up, +.panel-hright>.panel-header .panel-with-icon.panel-title-up { + padding-left: 0; + padding-right: 18px; +} +.panel-hleft>.panel-header .panel-tool, +.panel-hright>.panel-header .panel-tool { + top: auto; + bottom: 5px; + width: 16px; + height: auto; + left: 50%; + margin-left: -8px; + margin-top: 0; +} +.panel-hleft>.panel-header .panel-tool a, +.panel-hright>.panel-header .panel-tool a { + margin: 2px 0 0 0; +} +.accordion { + overflow: hidden; + border-width: 1px; + border-style: solid; +} +.accordion .accordion-header { + border-width: 0 0 1px; + cursor: pointer; +} +.accordion .accordion-body { + border-width: 0 0 1px; +} +.accordion-noborder { + border-width: 0; +} +.accordion-noborder .accordion-header { + border-width: 0 0 1px; +} +.accordion-noborder .accordion-body { + border-width: 0 0 1px; +} +.accordion-collapse { + background: url('images/accordion_arrows.png') no-repeat 0 0; +} +.accordion-expand { + background: url('images/accordion_arrows.png') no-repeat -16px 0; +} +.accordion { + background: #666; + border-color: #000; +} +.accordion .accordion-header { + background: #3d3d3d; + filter: none; +} +.accordion .accordion-header-selected { + background: #0052A3; +} +.accordion .accordion-header-selected .panel-title { + color: #fff; +} +.accordion .panel-last > .accordion-header { + border-bottom-color: #3d3d3d; +} +.accordion .panel-last > .accordion-body { + border-bottom-color: #666; +} +.accordion .panel-last > .accordion-header-selected, +.accordion .panel-last > .accordion-header-border { + border-bottom-color: #000; +} +.accordion> .panel-hleft { + float: left; +} +.accordion> .panel-hleft>.panel-header { + border-width: 0 1px 0 0; +} +.accordion> .panel-hleft> .panel-body { + border-width: 0 1px 0 0; +} +.accordion> .panel-hleft.panel-last > .accordion-header { + border-right-color: #3d3d3d; +} +.accordion> .panel-hleft.panel-last > .accordion-body { + border-right-color: #666; +} +.accordion> .panel-hleft.panel-last > .accordion-header-selected, +.accordion> .panel-hleft.panel-last > .accordion-header-border { + border-right-color: #000; +} +.accordion> .panel-hright { + float: right; +} +.accordion> .panel-hright>.panel-header { + border-width: 0 0 0 1px; +} +.accordion> .panel-hright> .panel-body { + border-width: 0 0 0 1px; +} +.accordion> .panel-hright.panel-last > .accordion-header { + border-left-color: #3d3d3d; +} +.accordion> .panel-hright.panel-last > .accordion-body { + border-left-color: #666; +} +.accordion> .panel-hright.panel-last > .accordion-header-selected, +.accordion> .panel-hright.panel-last > .accordion-header-border { + border-left-color: #000; +} +.window { + overflow: hidden; + padding: 5px; + border-width: 1px; + border-style: solid; +} +.window .window-header { + background: transparent; + padding: 0px 0px 6px 0px; +} +.window .window-body { + border-width: 1px; + border-style: solid; + border-top-width: 0px; +} +.window .window-body-noheader { + border-top-width: 1px; +} +.window .panel-body-nobottom { + border-bottom-width: 0; +} +.window .window-header .panel-icon, +.window .window-header .panel-tool { + top: 50%; + margin-top: -11px; +} +.window .window-header .panel-icon { + left: 1px; +} +.window .window-header .panel-tool { + right: 1px; +} +.window .window-header .panel-with-icon { + padding-left: 18px; +} +.window-proxy { + position: absolute; + overflow: hidden; +} +.window-proxy-mask { + position: absolute; + filter: alpha(opacity=5); + opacity: 0.05; +} +.window-mask { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + filter: alpha(opacity=40); + opacity: 0.40; + font-size: 1px; + overflow: hidden; +} +.window, +.window-shadow { + position: absolute; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.window-shadow { + background: #777; + -moz-box-shadow: 2px 2px 3px #787878; + -webkit-box-shadow: 2px 2px 3px #787878; + box-shadow: 2px 2px 3px #787878; + filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); +} +.window, +.window .window-body { + border-color: #000; +} +.window { + background-color: #3d3d3d; + background: -webkit-linear-gradient(top,#454545 0,#383838 20%); + background: -moz-linear-gradient(top,#454545 0,#383838 20%); + background: -o-linear-gradient(top,#454545 0,#383838 20%); + background: linear-gradient(to bottom,#454545 0,#383838 20%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#454545,endColorstr=#383838,GradientType=0); +} +.window-proxy { + border: 1px dashed #000; +} +.window-proxy-mask, +.window-mask { + background: #000; +} +.window .panel-footer { + border: 1px solid #000; + position: relative; + top: -1px; +} +.window-thinborder { + padding: 0; +} +.window-thinborder .window-header { + padding: 5px 5px 6px 5px; +} +.window-thinborder .window-body { + border-width: 0px; +} +.window-thinborder .window-header .panel-icon, +.window-thinborder .window-header .panel-tool { + margin-top: -9px; + margin-left: 5px; + margin-right: 5px; +} +.window-noborder { + border: 0; +} +.window.panel-hleft .window-header { + padding: 0 6px 0 0; +} +.window.panel-hright .window-header { + padding: 0 0 0 6px; +} +.window.panel-hleft>.panel-header .panel-title { + top: auto; + left: 16px; +} +.window.panel-hright>.panel-header .panel-title { + top: auto; + right: 16px; +} +.window.panel-hleft>.panel-header .panel-title-up, +.window.panel-hright>.panel-header .panel-title-up { + bottom: 0; +} +.window.panel-hleft .window-body { + border-width: 1px 1px 1px 0; +} +.window.panel-hright .window-body { + border-width: 1px 0 1px 1px; +} +.window.panel-hleft .window-header .panel-icon { + top: 1px; + margin-top: 0; + left: 0; +} +.window.panel-hright .window-header .panel-icon { + top: 1px; + margin-top: 0; + left: auto; + right: 1px; +} +.window.panel-hleft .window-header .panel-tool, +.window.panel-hright .window-header .panel-tool { + margin-top: 0; + top: auto; + bottom: 1px; + right: auto; + margin-right: 0; + left: 50%; + margin-left: -11px; +} +.window.panel-hright .window-header .panel-tool { + left: auto; + right: 1px; +} +.window-thinborder.panel-hleft .window-header { + padding: 5px 6px 5px 5px; +} +.window-thinborder.panel-hright .window-header { + padding: 5px 5px 5px 6px; +} +.window-thinborder.panel-hleft>.panel-header .panel-title { + left: 21px; +} +.window-thinborder.panel-hleft>.panel-header .panel-title-up, +.window-thinborder.panel-hright>.panel-header .panel-title-up { + bottom: 5px; +} +.window-thinborder.panel-hleft .window-header .panel-icon, +.window-thinborder.panel-hright .window-header .panel-icon { + margin-top: 5px; +} +.window-thinborder.panel-hleft .window-header .panel-tool, +.window-thinborder.panel-hright .window-header .panel-tool { + left: 16px; + bottom: 5px; +} +.dialog-content { + overflow: auto; +} +.dialog-toolbar { + position: relative; + padding: 2px 5px; +} +.dialog-tool-separator { + float: left; + height: 24px; + border-left: 1px solid #444; + border-right: 1px solid #777; + margin: 2px 1px; +} +.dialog-button { + position: relative; + top: -1px; + padding: 5px; + text-align: right; +} +.dialog-button .l-btn { + margin-left: 5px; +} +.dialog-toolbar, +.dialog-button { + background: #555; + border-width: 1px; + border-style: solid; +} +.dialog-toolbar { + border-color: #000 #000 #222 #000; +} +.dialog-button { + border-color: #222 #000 #000 #000; +} +.window-thinborder .dialog-toolbar { + border-left: transparent; + border-right: transparent; + border-top-color: #555; +} +.window-thinborder .dialog-button { + top: 0px; + padding: 5px 8px 8px 8px; + border-left: transparent; + border-right: transparent; + border-bottom: transparent; +} +.l-btn { + text-decoration: none; + display: inline-block; + overflow: hidden; + margin: 0; + padding: 0; + cursor: pointer; + outline: none; + text-align: center; + vertical-align: middle; + line-height: normal; +} +.l-btn-plain { + border-width: 0; + padding: 1px; +} +.l-btn-left { + display: inline-block; + position: relative; + overflow: hidden; + margin: 0; + padding: 0; + vertical-align: top; +} +.l-btn-text { + display: inline-block; + vertical-align: top; + width: auto; + line-height: 24px; + font-size: 12px; + padding: 0; + margin: 0 4px; +} +.l-btn-icon { + display: inline-block; + width: 16px; + height: 16px; + line-height: 16px; + position: absolute; + top: 50%; + margin-top: -8px; + font-size: 1px; +} +.l-btn span span .l-btn-empty { + display: inline-block; + margin: 0; + width: 16px; + height: 24px; + font-size: 1px; + vertical-align: top; +} +.l-btn span .l-btn-icon-left { + padding: 0 0 0 20px; + background-position: left center; +} +.l-btn span .l-btn-icon-right { + padding: 0 20px 0 0; + background-position: right center; +} +.l-btn-icon-left .l-btn-text { + margin: 0 4px 0 24px; +} +.l-btn-icon-left .l-btn-icon { + left: 4px; +} +.l-btn-icon-right .l-btn-text { + margin: 0 24px 0 4px; +} +.l-btn-icon-right .l-btn-icon { + right: 4px; +} +.l-btn-icon-top .l-btn-text { + margin: 20px 4px 0 4px; +} +.l-btn-icon-top .l-btn-icon { + top: 4px; + left: 50%; + margin: 0 0 0 -8px; +} +.l-btn-icon-bottom .l-btn-text { + margin: 0 4px 20px 4px; +} +.l-btn-icon-bottom .l-btn-icon { + top: auto; + bottom: 4px; + left: 50%; + margin: 0 0 0 -8px; +} +.l-btn-left .l-btn-empty { + margin: 0 4px; + width: 16px; +} +.l-btn-plain:hover { + padding: 0; +} +.l-btn-focus { + outline: #0000FF dotted thin; +} +.l-btn-large .l-btn-text { + line-height: 40px; +} +.l-btn-large .l-btn-icon { + width: 32px; + height: 32px; + line-height: 32px; + margin-top: -16px; +} +.l-btn-large .l-btn-icon-left .l-btn-text { + margin-left: 40px; +} +.l-btn-large .l-btn-icon-right .l-btn-text { + margin-right: 40px; +} +.l-btn-large .l-btn-icon-top .l-btn-text { + margin-top: 36px; + line-height: 24px; + min-width: 32px; +} +.l-btn-large .l-btn-icon-top .l-btn-icon { + margin: 0 0 0 -16px; +} +.l-btn-large .l-btn-icon-bottom .l-btn-text { + margin-bottom: 36px; + line-height: 24px; + min-width: 32px; +} +.l-btn-large .l-btn-icon-bottom .l-btn-icon { + margin: 0 0 0 -16px; +} +.l-btn-large .l-btn-left .l-btn-empty { + margin: 0 4px; + width: 32px; +} +.l-btn { + color: #fff; + background: #777; + background-repeat: repeat-x; + border: 1px solid #555; + background: -webkit-linear-gradient(top,#919191 0,#6a6a6a 100%); + background: -moz-linear-gradient(top,#919191 0,#6a6a6a 100%); + background: -o-linear-gradient(top,#919191 0,#6a6a6a 100%); + background: linear-gradient(to bottom,#919191 0,#6a6a6a 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#919191,endColorstr=#6a6a6a,GradientType=0); + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.l-btn:hover { + background: #777; + color: #fff; + border: 1px solid #555; + filter: none; +} +.l-btn-plain { + background: transparent; + border-width: 0; + filter: none; +} +.l-btn-outline { + border-width: 1px; + border-color: #555; + padding: 0; +} +.l-btn-plain:hover { + background: #777; + color: #fff; + border: 1px solid #555; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.l-btn-disabled, +.l-btn-disabled:hover { + opacity: 0.5; + cursor: default; + background: #777; + color: #fff; + background: -webkit-linear-gradient(top,#919191 0,#6a6a6a 100%); + background: -moz-linear-gradient(top,#919191 0,#6a6a6a 100%); + background: -o-linear-gradient(top,#919191 0,#6a6a6a 100%); + background: linear-gradient(to bottom,#919191 0,#6a6a6a 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#919191,endColorstr=#6a6a6a,GradientType=0); +} +.l-btn-disabled .l-btn-text, +.l-btn-disabled .l-btn-icon { + filter: alpha(opacity=50); +} +.l-btn-plain-disabled, +.l-btn-plain-disabled:hover { + background: transparent; + filter: alpha(opacity=50); +} +.l-btn-selected, +.l-btn-selected:hover { + background: #000; + filter: none; +} +.l-btn-plain-selected, +.l-btn-plain-selected:hover { + background: #000; +} +.textbox { + position: relative; + border: 1px solid #000; + background-color: #fff; + vertical-align: middle; + display: inline-block; + overflow: hidden; + white-space: nowrap; + margin: 0; + padding: 0; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.textbox .textbox-text { + font-size: 12px; + border: 0; + margin: 0; + padding: 4px; + white-space: normal; + vertical-align: top; + outline-style: none; + resize: none; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.textbox .textbox-text::-ms-clear, +.textbox .textbox-text::-ms-reveal { + display: none; +} +.textbox textarea.textbox-text { + white-space: pre-wrap; +} +.textbox .textbox-prompt { + font-size: 12px; + color: #aaa; +} +.textbox .textbox-bgicon { + background-position: 3px center; + padding-left: 21px; +} +.textbox .textbox-button, +.textbox .textbox-button:hover { + position: absolute; + top: 0; + padding: 0; + vertical-align: top; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.textbox .textbox-button-right, +.textbox .textbox-button-right:hover { + right: 0; + border-width: 0 0 0 1px; +} +.textbox .textbox-button-left, +.textbox .textbox-button-left:hover { + left: 0; + border-width: 0 1px 0 0; +} +.textbox .textbox-button-top, +.textbox .textbox-button-top:hover { + left: 0; + border-width: 0 0 1px 0; +} +.textbox .textbox-button-bottom, +.textbox .textbox-button-bottom:hover { + top: auto; + bottom: 0; + left: 0; + border-width: 1px 0 0 0; +} +.textbox-addon { + position: absolute; + top: 0; +} +.textbox-label { + display: inline-block; + width: 80px; + height: 22px; + line-height: 22px; + vertical-align: middle; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + margin: 0; + padding-right: 5px; +} +.textbox-label-after { + padding-left: 5px; + padding-right: 0; +} +.textbox-label-top { + display: block; + width: auto; + padding: 0; +} +.textbox-disabled, +.textbox-label-disabled { + opacity: 0.6; + filter: alpha(opacity=60); +} +.textbox-icon { + display: inline-block; + width: 18px; + height: 20px; + overflow: hidden; + vertical-align: top; + background-position: center center; + cursor: pointer; + opacity: 0.6; + filter: alpha(opacity=60); + text-decoration: none; + outline-style: none; +} +.textbox-icon-disabled, +.textbox-icon-readonly { + cursor: default; +} +.textbox-icon:hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.textbox-icon-disabled:hover { + opacity: 0.6; + filter: alpha(opacity=60); +} +.textbox-focused { + border-color: #000000; + -moz-box-shadow: 0 0 3px 0 #000; + -webkit-box-shadow: 0 0 3px 0 #000; + box-shadow: 0 0 3px 0 #000; +} +.textbox-invalid { + border-color: #ffa8a8; + background-color: #fff3f3; +} +.passwordbox-open { + background: url('images/passwordbox_open.png') no-repeat center center; +} +.passwordbox-close { + background: url('images/passwordbox_close.png') no-repeat center center; +} +.filebox .textbox-value { + vertical-align: top; + position: absolute; + top: 0; + left: -5000px; +} +.filebox-label { + display: inline-block; + position: absolute; + width: 100%; + height: 100%; + cursor: pointer; + left: 0; + top: 0; + z-index: 10; + background: url('images/blank.gif') no-repeat; +} +.l-btn-disabled .filebox-label { + cursor: default; +} +.combo-arrow { + width: 18px; + height: 20px; + overflow: hidden; + display: inline-block; + vertical-align: top; + cursor: pointer; + opacity: 0.6; + filter: alpha(opacity=60); +} +.combo-arrow-hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.combo-panel { + overflow: auto; +} +.combo-arrow { + background: url('images/combo_arrow.png') no-repeat center center; +} +.combo-panel { + background-color: #666; +} +.combo-arrow { + background-color: #3d3d3d; +} +.combo-arrow-hover { + background-color: #777; +} +.combo-arrow:hover { + background-color: #777; +} +.combo .textbox-icon-disabled:hover { + cursor: default; +} +.combobox-item, +.combobox-group, +.combobox-stick { + font-size: 12px; + padding: 3px; +} +.combobox-item-disabled { + opacity: 0.5; + filter: alpha(opacity=50); +} +.combobox-gitem { + padding-left: 10px; +} +.combobox-group, +.combobox-stick { + font-weight: bold; +} +.combobox-stick { + position: absolute; + top: 1px; + left: 1px; + right: 1px; + background: inherit; +} +.combobox-item-hover { + background-color: #777; + color: #fff; +} +.combobox-item-selected { + background-color: #0052A3; + color: #fff; +} +.combobox-icon { + display: inline-block; + width: 16px; + height: 16px; + vertical-align: middle; + margin-right: 2px; +} +.tagbox { + cursor: text; +} +.tagbox .textbox-text { + float: left; +} +.tagbox-label { + position: relative; + display: block; + margin: 4px 0 0 4px; + padding: 0 20px 0 4px; + float: left; + vertical-align: top; + text-decoration: none; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; + background: #777; + color: #fff; +} +.tagbox-remove { + background: url('images/tagbox_icons.png') no-repeat -16px center; + position: absolute; + display: block; + width: 16px; + height: 16px; + right: 2px; + top: 50%; + margin-top: -8px; + opacity: 0.6; + filter: alpha(opacity=60); +} +.tagbox-remove:hover { + opacity: 1; + filter: alpha(opacity=100); +} +.textbox-disabled .tagbox-label { + cursor: default; +} +.textbox-disabled .tagbox-remove:hover { + cursor: default; + opacity: 0.6; + filter: alpha(opacity=60); +} +.layout { + position: relative; + overflow: hidden; + margin: 0; + padding: 0; + z-index: 0; +} +.layout-panel { + position: absolute; + overflow: hidden; +} +.layout-body { + min-width: 1px; + min-height: 1px; +} +.layout-panel-east, +.layout-panel-west { + z-index: 2; +} +.layout-panel-north, +.layout-panel-south { + z-index: 3; +} +.layout-expand { + position: absolute; + padding: 0px; + font-size: 1px; + cursor: pointer; + z-index: 1; +} +.layout-expand .panel-header, +.layout-expand .panel-body { + background: transparent; + filter: none; + overflow: hidden; +} +.layout-expand .panel-header { + border-bottom-width: 0px; +} +.layout-expand .panel-body { + position: relative; +} +.layout-expand .panel-body .panel-icon { + margin-top: 0; + top: 0; + left: 50%; + margin-left: -8px; +} +.layout-expand-west .panel-header .panel-icon, +.layout-expand-east .panel-header .panel-icon { + display: none; +} +.layout-expand-title { + position: absolute; + top: 0; + left: 21px; + white-space: nowrap; + word-wrap: normal; + -webkit-transform: rotate(90deg); + -webkit-transform-origin: 0 0; + -moz-transform: rotate(90deg); + -moz-transform-origin: 0 0; + -o-transform: rotate(90deg); + -o-transform-origin: 0 0; + transform: rotate(90deg); + transform-origin: 0 0; +} +.layout-expand-title-up { + position: absolute; + top: 0; + left: 0; + text-align: right; + padding-left: 5px; + white-space: nowrap; + word-wrap: normal; + -webkit-transform: rotate(-90deg); + -webkit-transform-origin: 0 0; + -moz-transform: rotate(-90deg); + -moz-transform-origin: 0 0; + -o-transform: rotate(-90deg); + -o-transform-origin: 0 0; + transform: rotate(-90deg); + transform-origin: 0 0; +} +.layout-expand-with-icon { + top: 18px; +} +.layout-expand .panel-body-noheader .layout-expand-title, +.layout-expand .panel-body-noheader .panel-icon { + top: 5px; +} +.layout-expand .panel-body-noheader .layout-expand-with-icon { + top: 23px; +} +.layout-split-proxy-h, +.layout-split-proxy-v { + position: absolute; + font-size: 1px; + display: none; + z-index: 5; +} +.layout-split-proxy-h { + width: 5px; + cursor: e-resize; +} +.layout-split-proxy-v { + height: 5px; + cursor: n-resize; +} +.layout-mask { + position: absolute; + background: #fafafa; + filter: alpha(opacity=10); + opacity: 0.10; + z-index: 4; +} +.layout-button-up { + background: url('images/layout_arrows.png') no-repeat -16px -16px; +} +.layout-button-down { + background: url('images/layout_arrows.png') no-repeat -16px 0; +} +.layout-button-left { + background: url('images/layout_arrows.png') no-repeat 0 0; +} +.layout-button-right { + background: url('images/layout_arrows.png') no-repeat 0 -16px; +} +.layout-split-proxy-h, +.layout-split-proxy-v { + background-color: #cccccc; +} +.layout-split-north { + border-bottom: 5px solid #444; +} +.layout-split-south { + border-top: 5px solid #444; +} +.layout-split-east { + border-left: 5px solid #444; +} +.layout-split-west { + border-right: 5px solid #444; +} +.layout-expand { + background-color: #3d3d3d; +} +.layout-expand-over { + background-color: #3d3d3d; +} +.tabs-container { + overflow: hidden; +} +.tabs-header { + border-width: 1px; + border-style: solid; + border-bottom-width: 0; + position: relative; + padding: 0; + padding-top: 2px; + overflow: hidden; +} +.tabs-scroller-left, +.tabs-scroller-right { + position: absolute; + top: auto; + bottom: 0; + width: 18px; + font-size: 1px; + display: none; + cursor: pointer; + border-width: 1px; + border-style: solid; +} +.tabs-scroller-left { + left: 0; +} +.tabs-scroller-right { + right: 0; +} +.tabs-tool { + position: absolute; + bottom: 0; + padding: 1px; + overflow: hidden; + border-width: 1px; + border-style: solid; +} +.tabs-header-plain .tabs-tool { + padding: 0 1px; +} +.tabs-wrap { + position: relative; + left: 0; + overflow: hidden; + width: 100%; + margin: 0; + padding: 0; +} +.tabs-scrolling { + margin-left: 18px; + margin-right: 18px; +} +.tabs-disabled { + opacity: 0.3; + filter: alpha(opacity=30); +} +.tabs { + list-style-type: none; + height: 26px; + margin: 0px; + padding: 0px; + padding-left: 4px; + width: 50000px; + border-style: solid; + border-width: 0 0 1px 0; +} +.tabs li { + float: left; + display: inline-block; + margin: 0 4px -1px 0; + padding: 0; + position: relative; + border: 0; +} +.tabs li a.tabs-inner { + display: inline-block; + text-decoration: none; + margin: 0; + padding: 0 10px; + height: 25px; + line-height: 25px; + text-align: center; + white-space: nowrap; + border-width: 1px; + border-style: solid; + -moz-border-radius: 5px 5px 0 0; + -webkit-border-radius: 5px 5px 0 0; + border-radius: 5px 5px 0 0; +} +.tabs li.tabs-selected a.tabs-inner { + font-weight: bold; + outline: none; +} +.tabs li.tabs-selected a:hover.tabs-inner { + cursor: default; + pointer: default; +} +.tabs li a.tabs-close, +.tabs-p-tool { + position: absolute; + font-size: 1px; + display: block; + height: 12px; + padding: 0; + top: 50%; + margin-top: -6px; + overflow: hidden; +} +.tabs li a.tabs-close { + width: 12px; + right: 5px; + opacity: 0.6; + filter: alpha(opacity=60); +} +.tabs-p-tool { + right: 16px; +} +.tabs-p-tool a { + display: inline-block; + font-size: 1px; + width: 12px; + height: 12px; + margin: 0; + opacity: 0.6; + filter: alpha(opacity=60); +} +.tabs li a:hover.tabs-close, +.tabs-p-tool a:hover { + opacity: 1; + filter: alpha(opacity=100); + cursor: hand; + cursor: pointer; +} +.tabs-with-icon { + padding-left: 18px; +} +.tabs-icon { + position: absolute; + width: 16px; + height: 16px; + left: 10px; + top: 50%; + margin-top: -8px; +} +.tabs-title { + font-size: 12px; +} +.tabs-closable { + padding-right: 8px; +} +.tabs-panels { + margin: 0px; + padding: 0px; + border-width: 1px; + border-style: solid; + border-top-width: 0; + overflow: hidden; +} +.tabs-header-bottom { + border-width: 0 1px 1px 1px; + padding: 0 0 2px 0; +} +.tabs-header-bottom .tabs { + border-width: 1px 0 0 0; +} +.tabs-header-bottom .tabs li { + margin: -1px 4px 0 0; +} +.tabs-header-bottom .tabs li a.tabs-inner { + -moz-border-radius: 0 0 5px 5px; + -webkit-border-radius: 0 0 5px 5px; + border-radius: 0 0 5px 5px; +} +.tabs-header-bottom .tabs-tool { + top: 0; +} +.tabs-header-bottom .tabs-scroller-left, +.tabs-header-bottom .tabs-scroller-right { + top: 0; + bottom: auto; +} +.tabs-panels-top { + border-width: 1px 1px 0 1px; +} +.tabs-header-left { + float: left; + border-width: 1px 0 1px 1px; + padding: 0; +} +.tabs-header-right { + float: right; + border-width: 1px 1px 1px 0; + padding: 0; +} +.tabs-header-left .tabs-wrap, +.tabs-header-right .tabs-wrap { + height: 100%; +} +.tabs-header-left .tabs { + height: 100%; + padding: 4px 0 0 2px; + border-width: 0 1px 0 0; +} +.tabs-header-right .tabs { + height: 100%; + padding: 4px 2px 0 0; + border-width: 0 0 0 1px; +} +.tabs-header-left .tabs li, +.tabs-header-right .tabs li { + display: block; + width: 100%; + position: relative; +} +.tabs-header-left .tabs li { + left: auto; + right: 0; + margin: 0 -1px 4px 0; + float: right; +} +.tabs-header-right .tabs li { + left: 0; + right: auto; + margin: 0 0 4px -1px; + float: left; +} +.tabs-justified li a.tabs-inner { + padding-left: 0; + padding-right: 0; +} +.tabs-header-left .tabs li a.tabs-inner { + display: block; + text-align: left; + padding-left: 10px; + padding-right: 10px; + -moz-border-radius: 5px 0 0 5px; + -webkit-border-radius: 5px 0 0 5px; + border-radius: 5px 0 0 5px; +} +.tabs-header-right .tabs li a.tabs-inner { + display: block; + text-align: left; + padding-left: 10px; + padding-right: 10px; + -moz-border-radius: 0 5px 5px 0; + -webkit-border-radius: 0 5px 5px 0; + border-radius: 0 5px 5px 0; +} +.tabs-panels-right { + float: right; + border-width: 1px 1px 1px 0; +} +.tabs-panels-left { + float: left; + border-width: 1px 0 1px 1px; +} +.tabs-header-noborder, +.tabs-panels-noborder { + border: 0px; +} +.tabs-header-plain { + border: 0px; + background: transparent; +} +.tabs-pill { + padding-bottom: 3px; +} +.tabs-header-bottom .tabs-pill { + padding-top: 3px; + padding-bottom: 0; +} +.tabs-header-left .tabs-pill { + padding-right: 3px; +} +.tabs-header-right .tabs-pill { + padding-left: 3px; +} +.tabs-header .tabs-pill li a.tabs-inner { + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.tabs-header-narrow, +.tabs-header-narrow .tabs-narrow { + padding: 0; +} +.tabs-narrow li, +.tabs-header-bottom .tabs-narrow li { + margin-left: 0; + margin-right: -1px; +} +.tabs-narrow li.tabs-last, +.tabs-header-bottom .tabs-narrow li.tabs-last { + margin-right: 0; +} +.tabs-header-left .tabs-narrow, +.tabs-header-right .tabs-narrow { + padding-top: 0; +} +.tabs-header-left .tabs-narrow li { + margin-bottom: -1px; + margin-right: -1px; +} +.tabs-header-left .tabs-narrow li.tabs-last, +.tabs-header-right .tabs-narrow li.tabs-last { + margin-bottom: 0; +} +.tabs-header-right .tabs-narrow li { + margin-bottom: -1px; + margin-left: -1px; +} +.tabs-scroller-left { + background: #3d3d3d url('images/tabs_icons.png') no-repeat 1px center; +} +.tabs-scroller-right { + background: #3d3d3d url('images/tabs_icons.png') no-repeat -15px center; +} +.tabs li a.tabs-close { + background: url('images/tabs_icons.png') no-repeat -34px center; +} +.tabs li a.tabs-inner:hover { + background: #777; + color: #fff; + filter: none; +} +.tabs li.tabs-selected a.tabs-inner { + background-color: #666; + color: #fff; + background: -webkit-linear-gradient(top,#454545 0,#666 100%); + background: -moz-linear-gradient(top,#454545 0,#666 100%); + background: -o-linear-gradient(top,#454545 0,#666 100%); + background: linear-gradient(to bottom,#454545 0,#666 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#454545,endColorstr=#666,GradientType=0); +} +.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { + background: -webkit-linear-gradient(top,#666 0,#454545 100%); + background: -moz-linear-gradient(top,#666 0,#454545 100%); + background: -o-linear-gradient(top,#666 0,#454545 100%); + background: linear-gradient(to bottom,#666 0,#454545 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#666,endColorstr=#454545,GradientType=0); +} +.tabs-header-left .tabs li.tabs-selected a.tabs-inner { + background: -webkit-linear-gradient(left,#454545 0,#666 100%); + background: -moz-linear-gradient(left,#454545 0,#666 100%); + background: -o-linear-gradient(left,#454545 0,#666 100%); + background: linear-gradient(to right,#454545 0,#666 100%); + background-repeat: repeat-y; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#454545,endColorstr=#666,GradientType=1); +} +.tabs-header-right .tabs li.tabs-selected a.tabs-inner { + background: -webkit-linear-gradient(left,#666 0,#454545 100%); + background: -moz-linear-gradient(left,#666 0,#454545 100%); + background: -o-linear-gradient(left,#666 0,#454545 100%); + background: linear-gradient(to right,#666 0,#454545 100%); + background-repeat: repeat-y; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#666,endColorstr=#454545,GradientType=1); +} +.tabs li a.tabs-inner { + color: #fff; + background-color: #3d3d3d; + background: -webkit-linear-gradient(top,#454545 0,#383838 100%); + background: -moz-linear-gradient(top,#454545 0,#383838 100%); + background: -o-linear-gradient(top,#454545 0,#383838 100%); + background: linear-gradient(to bottom,#454545 0,#383838 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#454545,endColorstr=#383838,GradientType=0); +} +.tabs-header, +.tabs-tool { + background-color: #3d3d3d; +} +.tabs-header-plain { + background: transparent; +} +.tabs-header, +.tabs-scroller-left, +.tabs-scroller-right, +.tabs-tool, +.tabs, +.tabs-panels, +.tabs li a.tabs-inner, +.tabs li.tabs-selected a.tabs-inner, +.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner, +.tabs-header-left .tabs li.tabs-selected a.tabs-inner, +.tabs-header-right .tabs li.tabs-selected a.tabs-inner { + border-color: #000; +} +.tabs-p-tool a:hover, +.tabs li a:hover.tabs-close, +.tabs-scroller-over { + background-color: #777; +} +.tabs li.tabs-selected a.tabs-inner { + border-bottom: 1px solid #666; +} +.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { + border-top: 1px solid #666; +} +.tabs-header-left .tabs li.tabs-selected a.tabs-inner { + border-right: 1px solid #666; +} +.tabs-header-right .tabs li.tabs-selected a.tabs-inner { + border-left: 1px solid #666; +} +.tabs-header .tabs-pill li.tabs-selected a.tabs-inner { + background: #0052A3; + color: #fff; + filter: none; + border-color: #000; +} +.datagrid .panel-body { + overflow: hidden; + position: relative; +} +.datagrid-view { + position: relative; + overflow: hidden; +} +.datagrid-view1, +.datagrid-view2 { + position: absolute; + overflow: hidden; + top: 0; +} +.datagrid-view1 { + left: 0; +} +.datagrid-view2 { + right: 0; +} +.datagrid-mask { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + opacity: 0.3; + filter: alpha(opacity=30); + display: none; +} +.datagrid-mask-msg { + position: absolute; + top: 50%; + margin-top: -20px; + padding: 10px 5px 10px 30px; + width: auto; + height: 16px; + border-width: 2px; + border-style: solid; + display: none; +} +.datagrid-empty { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 25px; + line-height: 25px; + text-align: center; +} +.datagrid-sort-icon { + padding: 0; + display: none; +} +.datagrid-toolbar { + height: auto; + padding: 1px 2px; + border-width: 0 0 1px 0; + border-style: solid; +} +.datagrid-btn-separator { + float: left; + height: 24px; + border-left: 1px solid #444; + border-right: 1px solid #777; + margin: 2px 1px; +} +.datagrid .datagrid-pager { + display: block; + margin: 0; + border-width: 1px 0 0 0; + border-style: solid; +} +.datagrid .datagrid-pager-top { + border-width: 0 0 1px 0; +} +.datagrid-header { + overflow: hidden; + cursor: default; + border-width: 0 0 1px 0; + border-style: solid; +} +.datagrid-header-inner { + float: left; + width: 10000px; +} +.datagrid-header-row, +.datagrid-row { + height: 25px; +} +.datagrid-header td, +.datagrid-body td, +.datagrid-footer td { + border-width: 0 1px 1px 0; + border-style: dotted; + margin: 0; + padding: 0; +} +.datagrid-cell, +.datagrid-cell-group, +.datagrid-header-rownumber, +.datagrid-cell-rownumber { + margin: 0; + padding: 0 4px; + white-space: nowrap; + word-wrap: normal; + overflow: hidden; + height: 18px; + line-height: 18px; + font-size: 12px; +} +.datagrid-header .datagrid-cell { + height: auto; +} +.datagrid-header .datagrid-cell span { + font-size: 12px; +} +.datagrid-cell-group { + text-align: center; + text-overflow: ellipsis; +} +.datagrid-header-rownumber, +.datagrid-cell-rownumber { + width: 30px; + text-align: center; + margin: 0; + padding: 0; +} +.datagrid-body { + margin: 0; + padding: 0; + overflow: auto; + zoom: 1; +} +.datagrid-view1 .datagrid-body-inner { + padding-bottom: 20px; +} +.datagrid-view1 .datagrid-body { + overflow: hidden; +} +.datagrid-footer { + overflow: hidden; +} +.datagrid-footer-inner { + border-width: 1px 0 0 0; + border-style: solid; + width: 10000px; + float: left; +} +.datagrid-row-editing .datagrid-cell { + height: auto; +} +.datagrid-header-check, +.datagrid-cell-check { + padding: 0; + width: 27px; + height: 18px; + font-size: 1px; + text-align: center; + overflow: hidden; +} +.datagrid-header-check input, +.datagrid-cell-check input { + margin: 0; + padding: 0; + width: 15px; + height: 18px; +} +.datagrid-resize-proxy { + position: absolute; + width: 1px; + height: 10000px; + top: 0; + cursor: e-resize; + display: none; +} +.datagrid-body .datagrid-editable { + margin: 0; + padding: 0; +} +.datagrid-body .datagrid-editable table { + width: 100%; + height: 100%; +} +.datagrid-body .datagrid-editable td { + border: 0; + margin: 0; + padding: 0; +} +.datagrid-view .datagrid-editable-input { + margin: 0; + padding: 2px 4px; + border: 1px solid #000; + font-size: 12px; + outline-style: none; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.datagrid-view .validatebox-invalid { + border-color: #ffa8a8; +} +.datagrid-sort .datagrid-sort-icon { + display: inline; + padding: 0 13px 0 0; + background: url('images/datagrid_icons.png') no-repeat -64px center; +} +.datagrid-sort-desc .datagrid-sort-icon { + display: inline; + padding: 0 13px 0 0; + background: url('images/datagrid_icons.png') no-repeat -16px center; +} +.datagrid-sort-asc .datagrid-sort-icon { + display: inline; + padding: 0 13px 0 0; + background: url('images/datagrid_icons.png') no-repeat 0px center; +} +.datagrid-row-collapse { + background: url('images/datagrid_icons.png') no-repeat -48px center; +} +.datagrid-row-expand { + background: url('images/datagrid_icons.png') no-repeat -32px center; +} +.datagrid-mask-msg { + background: #666 url('images/loading.gif') no-repeat scroll 5px center; +} +.datagrid-header, +.datagrid-td-rownumber { + background-color: #444; + background: -webkit-linear-gradient(top,#4c4c4c 0,#3f3f3f 100%); + background: -moz-linear-gradient(top,#4c4c4c 0,#3f3f3f 100%); + background: -o-linear-gradient(top,#4c4c4c 0,#3f3f3f 100%); + background: linear-gradient(to bottom,#4c4c4c 0,#3f3f3f 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#4c4c4c,endColorstr=#3f3f3f,GradientType=0); +} +.datagrid-cell-rownumber { + color: #fff; +} +.datagrid-resize-proxy { + background: #cccccc; +} +.datagrid-mask { + background: #000; +} +.datagrid-mask-msg { + border-color: #000; +} +.datagrid-toolbar, +.datagrid-pager { + background: #555; +} +.datagrid-header, +.datagrid-toolbar, +.datagrid-pager, +.datagrid-footer-inner { + border-color: #222; +} +.datagrid-header td, +.datagrid-body td, +.datagrid-footer td { + border-color: #222; +} +.datagrid-htable, +.datagrid-btable, +.datagrid-ftable { + color: #fff; + border-collapse: separate; +} +.datagrid-row-alt { + background: #555; +} +.datagrid-row-over, +.datagrid-header td.datagrid-header-over { + background: #777; + color: #fff; + cursor: default; +} +.datagrid-row-selected { + background: #0052A3; + color: #fff; +} +.datagrid-row-editing .textbox, +.datagrid-row-editing .textbox-text { + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.propertygrid .datagrid-view1 .datagrid-body td { + padding-bottom: 1px; + border-width: 0 1px 0 0; +} +.propertygrid .datagrid-group { + height: 21px; + overflow: hidden; + border-width: 0 0 1px 0; + border-style: solid; +} +.propertygrid .datagrid-group span { + font-weight: bold; +} +.propertygrid .datagrid-view1 .datagrid-body td { + border-color: #222; +} +.propertygrid .datagrid-view1 .datagrid-group { + border-color: #3d3d3d; +} +.propertygrid .datagrid-view2 .datagrid-group { + border-color: #222; +} +.propertygrid .datagrid-group, +.propertygrid .datagrid-view1 .datagrid-body, +.propertygrid .datagrid-view1 .datagrid-row-over, +.propertygrid .datagrid-view1 .datagrid-row-selected { + background: #3d3d3d; +} +.datalist .datagrid-header { + border-width: 0; +} +.datalist .datagrid-group, +.m-list .m-list-group { + height: 25px; + line-height: 25px; + font-weight: bold; + overflow: hidden; + background-color: #444; + border-style: solid; + border-width: 0 0 1px 0; + border-color: #222; +} +.datalist .datagrid-group-expander { + display: none; +} +.datalist .datagrid-group-title { + padding: 0 4px; +} +.datalist .datagrid-btable { + width: 100%; + table-layout: fixed; +} +.datalist .datagrid-row td { + border-style: solid; + border-left-color: transparent; + border-right-color: transparent; + border-bottom-width: 0; +} +.datalist-lines .datagrid-row td { + border-bottom-width: 1px; +} +.datalist .datagrid-cell, +.m-list li { + width: auto; + height: auto; + padding: 2px 4px; + line-height: 18px; + position: relative; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; +} +.datalist-link, +.m-list li>a { + display: block; + position: relative; + cursor: pointer; + color: #fff; + text-decoration: none; + overflow: hidden; + margin: -2px -4px; + padding: 2px 4px; + padding-right: 16px; + line-height: 18px; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; +} +.datalist-link::after, +.m-list li>a::after { + position: absolute; + display: block; + width: 8px; + height: 8px; + content: ''; + right: 6px; + top: 50%; + margin-top: -4px; + border-style: solid; + border-width: 1px 1px 0 0; + -ms-transform: rotate(45deg); + -moz-transform: rotate(45deg); + -webkit-transform: rotate(45deg); + -o-transform: rotate(45deg); + transform: rotate(45deg); +} +.m-list { + margin: 0; + padding: 0; + list-style: none; +} +.m-list li { + border-style: solid; + border-width: 0 0 1px 0; + border-color: #222; +} +.m-list li>a:hover { + background: #777; + color: #fff; +} +.m-list .m-list-group { + padding: 0 4px; +} +.pagination { + zoom: 1; +} +.pagination table { + float: left; + height: 30px; +} +.pagination td { + border: 0; +} +.pagination-btn-separator { + float: left; + height: 24px; + border-left: 1px solid #444; + border-right: 1px solid #777; + margin: 3px 1px; +} +.pagination .pagination-num { + border-width: 1px; + border-style: solid; + margin: 0 2px; + padding: 2px; + width: 2em; + height: auto; +} +.pagination-page-list { + margin: 0px 6px; + padding: 1px 2px; + width: auto; + height: auto; + border-width: 1px; + border-style: solid; +} +.pagination-info { + float: right; + margin: 0 6px; + padding: 0; + height: 30px; + line-height: 30px; + font-size: 12px; +} +.pagination span { + font-size: 12px; +} +.pagination-link .l-btn-text { + width: 24px; + text-align: center; + margin: 0; +} +.pagination-first { + background: url('images/pagination_icons.png') no-repeat 0 center; +} +.pagination-prev { + background: url('images/pagination_icons.png') no-repeat -16px center; +} +.pagination-next { + background: url('images/pagination_icons.png') no-repeat -32px center; +} +.pagination-last { + background: url('images/pagination_icons.png') no-repeat -48px center; +} +.pagination-load { + background: url('images/pagination_icons.png') no-repeat -64px center; +} +.pagination-loading { + background: url('images/loading.gif') no-repeat center center; +} +.pagination-page-list, +.pagination .pagination-num { + border-color: #000; +} +.calendar { + border-width: 1px; + border-style: solid; + padding: 1px; + overflow: hidden; +} +.calendar table { + table-layout: fixed; + border-collapse: separate; + font-size: 12px; + width: 100%; + height: 100%; +} +.calendar table td, +.calendar table th { + font-size: 12px; +} +.calendar-noborder { + border: 0; +} +.calendar-header { + position: relative; + height: 22px; +} +.calendar-title { + text-align: center; + height: 22px; +} +.calendar-title span { + position: relative; + display: inline-block; + top: 2px; + padding: 0 3px; + height: 18px; + line-height: 18px; + font-size: 12px; + cursor: pointer; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-prevmonth, +.calendar-nextmonth, +.calendar-prevyear, +.calendar-nextyear { + position: absolute; + top: 50%; + margin-top: -7px; + width: 14px; + height: 14px; + cursor: pointer; + font-size: 1px; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-prevmonth { + left: 20px; + background: url('images/calendar_arrows.png') no-repeat -18px -2px; +} +.calendar-nextmonth { + right: 20px; + background: url('images/calendar_arrows.png') no-repeat -34px -2px; +} +.calendar-prevyear { + left: 3px; + background: url('images/calendar_arrows.png') no-repeat -1px -2px; +} +.calendar-nextyear { + right: 3px; + background: url('images/calendar_arrows.png') no-repeat -49px -2px; +} +.calendar-body { + position: relative; +} +.calendar-body th, +.calendar-body td { + text-align: center; +} +.calendar-day { + border: 0; + padding: 1px; + cursor: pointer; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-other-month { + opacity: 0.3; + filter: alpha(opacity=30); +} +.calendar-disabled { + opacity: 0.6; + filter: alpha(opacity=60); + cursor: default; +} +.calendar-menu { + position: absolute; + top: 0; + left: 0; + width: 180px; + height: 150px; + padding: 5px; + font-size: 12px; + display: none; + overflow: hidden; +} +.calendar-menu-year-inner { + text-align: center; + padding-bottom: 5px; +} +.calendar-menu-year { + width: 50px; + text-align: center; + border-width: 1px; + border-style: solid; + outline-style: none; + resize: none; + margin: 0; + padding: 2px; + font-weight: bold; + font-size: 12px; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-menu-prev, +.calendar-menu-next { + display: inline-block; + width: 21px; + height: 21px; + vertical-align: top; + cursor: pointer; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-menu-prev { + margin-right: 10px; + background: url('images/calendar_arrows.png') no-repeat 2px 2px; +} +.calendar-menu-next { + margin-left: 10px; + background: url('images/calendar_arrows.png') no-repeat -45px 2px; +} +.calendar-menu-month { + text-align: center; + cursor: pointer; + font-weight: bold; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-body th, +.calendar-menu-month { + color: #ffffff; +} +.calendar-day { + color: #fff; +} +.calendar-sunday { + color: #CC2222; +} +.calendar-saturday { + color: #00ee00; +} +.calendar-today { + color: #0000ff; +} +.calendar-menu-year { + border-color: #000; +} +.calendar { + border-color: #000; +} +.calendar-header { + background: #3d3d3d; +} +.calendar-body, +.calendar-menu { + background: #666; +} +.calendar-body th { + background: #555; + padding: 2px 0; +} +.calendar-hover, +.calendar-nav-hover, +.calendar-menu-hover { + background-color: #777; + color: #fff; +} +.calendar-hover { + border: 1px solid #555; + padding: 0; +} +.calendar-selected { + background-color: #0052A3; + color: #fff; + border: 1px solid #00458a; + padding: 0; +} +.datebox-calendar-inner { + height: 180px; +} +.datebox-button { + padding: 0 5px; + text-align: center; +} +.datebox-button a { + line-height: 22px; + font-size: 12px; + font-weight: bold; + text-decoration: none; + opacity: 0.6; + filter: alpha(opacity=60); +} +.datebox-button a:hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.datebox-current, +.datebox-close { + float: left; +} +.datebox-close { + float: right; +} +.datebox .combo-arrow { + background-image: url('images/datebox_arrow.png'); + background-position: center center; +} +.datebox-button { + background-color: #555; +} +.datebox-button a { + color: #fff; +} +.spinner-arrow { + background-color: #3d3d3d; + display: inline-block; + overflow: hidden; + vertical-align: top; + margin: 0; + padding: 0; + opacity: 1.0; + filter: alpha(opacity=100); + width: 18px; +} +.spinner-arrow-up, +.spinner-arrow-down { + opacity: 0.6; + filter: alpha(opacity=60); + display: block; + font-size: 1px; + width: 18px; + height: 10px; + width: 100%; + height: 50%; + color: #fff; + outline-style: none; +} +.spinner-arrow-hover { + background-color: #777; + opacity: 1.0; + filter: alpha(opacity=100); +} +.spinner-arrow-up:hover, +.spinner-arrow-down:hover { + opacity: 1.0; + filter: alpha(opacity=100); + background-color: #777; +} +.textbox-icon-disabled .spinner-arrow-up:hover, +.textbox-icon-disabled .spinner-arrow-down:hover { + opacity: 0.6; + filter: alpha(opacity=60); + background-color: #3d3d3d; + cursor: default; +} +.spinner .textbox-icon-disabled { + opacity: 0.6; + filter: alpha(opacity=60); +} +.spinner-arrow-up { + background: url('images/spinner_arrows.png') no-repeat 1px center; +} +.spinner-arrow-down { + background: url('images/spinner_arrows.png') no-repeat -15px center; +} +.spinner-button-up { + background: url('images/spinner_arrows.png') no-repeat -32px center; +} +.spinner-button-down { + background: url('images/spinner_arrows.png') no-repeat -48px center; +} +.progressbar { + border-width: 1px; + border-style: solid; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; + overflow: hidden; + position: relative; +} +.progressbar-text { + text-align: center; + position: absolute; +} +.progressbar-value { + position: relative; + overflow: hidden; + width: 0; + -moz-border-radius: 5px 0 0 5px; + -webkit-border-radius: 5px 0 0 5px; + border-radius: 5px 0 0 5px; +} +.progressbar { + border-color: #000; +} +.progressbar-text { + color: #fff; + font-size: 12px; +} +.progressbar-value .progressbar-text { + background-color: #0052A3; + color: #fff; +} +.searchbox-button { + width: 18px; + height: 20px; + overflow: hidden; + display: inline-block; + vertical-align: top; + cursor: pointer; + opacity: 0.6; + filter: alpha(opacity=60); +} +.searchbox-button-hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.searchbox .l-btn-plain { + border: 0; + padding: 0; + vertical-align: top; + opacity: 0.6; + filter: alpha(opacity=60); + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox .l-btn-plain:hover { + border: 0; + padding: 0; + opacity: 1.0; + filter: alpha(opacity=100); + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox a.m-btn-plain-active { + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox .m-btn-active { + border-width: 0 1px 0 0; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox .textbox-button-right { + border-width: 0 0 0 1px; +} +.searchbox .textbox-button-left { + border-width: 0 1px 0 0; +} +.searchbox-button { + background: url('images/searchbox_button.png') no-repeat center center; +} +.searchbox .l-btn-plain { + background: #3d3d3d; +} +.searchbox .l-btn-plain-disabled, +.searchbox .l-btn-plain-disabled:hover { + opacity: 0.5; + filter: alpha(opacity=50); +} +.slider-disabled { + opacity: 0.5; + filter: alpha(opacity=50); +} +.slider-h { + height: 22px; +} +.slider-v { + width: 22px; +} +.slider-inner { + position: relative; + height: 6px; + top: 7px; + border-width: 1px; + border-style: solid; + border-radius: 5px; +} +.slider-handle { + position: absolute; + display: block; + outline: none; + width: 20px; + height: 20px; + top: 50%; + margin-top: -10px; + margin-left: -10px; +} +.slider-tip { + position: absolute; + display: inline-block; + line-height: 12px; + font-size: 12px; + white-space: nowrap; + top: -22px; +} +.slider-rule { + position: relative; + top: 15px; +} +.slider-rule span { + position: absolute; + display: inline-block; + font-size: 0; + height: 5px; + border-width: 0 0 0 1px; + border-style: solid; +} +.slider-rulelabel { + position: relative; + top: 20px; +} +.slider-rulelabel span { + position: absolute; + display: inline-block; + font-size: 12px; +} +.slider-v .slider-inner { + width: 6px; + left: 7px; + top: 0; + float: left; +} +.slider-v .slider-handle { + left: 50%; + margin-top: -10px; +} +.slider-v .slider-tip { + left: -10px; + margin-top: -6px; +} +.slider-v .slider-rule { + float: left; + top: 0; + left: 16px; +} +.slider-v .slider-rule span { + width: 5px; + height: 'auto'; + border-left: 0; + border-width: 1px 0 0 0; + border-style: solid; +} +.slider-v .slider-rulelabel { + float: left; + top: 0; + left: 23px; +} +.slider-handle { + background: url('images/slider_handle.png') no-repeat; +} +.slider-inner { + border-color: #000; + background: #3d3d3d; +} +.slider-rule span { + border-color: #000; +} +.slider-rulelabel span { + color: #fff; +} +.menu { + position: absolute; + margin: 0; + padding: 2px; + border-width: 1px; + border-style: solid; + overflow: hidden; +} +.menu-inline { + position: relative; +} +.menu-item { + position: relative; + margin: 0; + padding: 0; + overflow: hidden; + white-space: nowrap; + cursor: pointer; + border-width: 1px; + border-style: solid; +} +.menu-text { + height: 20px; + line-height: 20px; + float: left; + padding-left: 28px; +} +.menu-icon { + position: absolute; + width: 16px; + height: 16px; + left: 2px; + top: 50%; + margin-top: -8px; +} +.menu-rightarrow { + position: absolute; + width: 16px; + height: 16px; + right: 0; + top: 50%; + margin-top: -8px; +} +.menu-line { + position: absolute; + left: 26px; + top: 0; + height: 2000px; + font-size: 1px; +} +.menu-sep { + margin: 3px 0px 3px 25px; + font-size: 1px; +} +.menu-noline .menu-line { + display: none; +} +.menu-noline .menu-sep { + margin-left: 0; + margin-right: 0; +} +.menu-active { + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.menu-item-disabled { + opacity: 0.5; + filter: alpha(opacity=50); + cursor: default; +} +.menu-text, +.menu-text span { + font-size: 12px; +} +.menu-shadow { + position: absolute; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; + background: #777; + -moz-box-shadow: 2px 2px 3px #787878; + -webkit-box-shadow: 2px 2px 3px #787878; + box-shadow: 2px 2px 3px #787878; + filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); +} +.menu-rightarrow { + background: url('images/menu_arrows.png') no-repeat -32px center; +} +.menu-line { + border-left: 1px solid #444; + border-right: 1px solid #777; +} +.menu-sep { + border-top: 1px solid #444; + border-bottom: 1px solid #777; +} +.menu { + background-color: #666; + border-color: #444; + color: #fff; +} +.menu-content { + background: #666; +} +.menu-item { + border-color: transparent; + _border-color: #666; +} +.menu-active { + border-color: #555; + color: #fff; + background: #777; +} +.menu-active-disabled { + border-color: transparent; + background: transparent; + color: #fff; +} +.m-btn-downarrow, +.s-btn-downarrow { + display: inline-block; + position: absolute; + width: 16px; + height: 16px; + font-size: 1px; + right: 0; + top: 50%; + margin-top: -8px; +} +.m-btn-active, +.s-btn-active { + background: #777; + color: #fff; + border: 1px solid #555; + filter: none; +} +.m-btn-plain-active, +.s-btn-plain-active { + background: transparent; + padding: 0; + border-width: 1px; + border-style: solid; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.m-btn .l-btn-left .l-btn-text { + margin-right: 20px; +} +.m-btn .l-btn-icon-right .l-btn-text { + margin-right: 40px; +} +.m-btn .l-btn-icon-right .l-btn-icon { + right: 20px; +} +.m-btn .l-btn-icon-top .l-btn-text { + margin-right: 4px; + margin-bottom: 14px; +} +.m-btn .l-btn-icon-bottom .l-btn-text { + margin-right: 4px; + margin-bottom: 34px; +} +.m-btn .l-btn-icon-bottom .l-btn-icon { + top: auto; + bottom: 20px; +} +.m-btn .l-btn-icon-top .m-btn-downarrow, +.m-btn .l-btn-icon-bottom .m-btn-downarrow { + top: auto; + bottom: 0px; + left: 50%; + margin-left: -8px; +} +.m-btn-line { + display: inline-block; + position: absolute; + font-size: 1px; + display: none; +} +.m-btn .l-btn-left .m-btn-line { + right: 0; + width: 16px; + height: 500px; + border-style: solid; + border-color: #cccccc; + border-width: 0 0 0 1px; +} +.m-btn .l-btn-icon-top .m-btn-line, +.m-btn .l-btn-icon-bottom .m-btn-line { + left: 0; + bottom: 0; + width: 500px; + height: 16px; + border-width: 1px 0 0 0; +} +.m-btn-large .l-btn-icon-right .l-btn-text { + margin-right: 56px; +} +.m-btn-large .l-btn-icon-bottom .l-btn-text { + margin-bottom: 50px; +} +.m-btn-downarrow, +.s-btn-downarrow { + background: url('images/menu_arrows.png') no-repeat 0 center; +} +.m-btn-plain-active, +.s-btn-plain-active { + border-color: #555; + background-color: #777; + color: #fff; +} +.s-btn:hover .m-btn-line, +.s-btn-active .m-btn-line, +.s-btn-plain-active .m-btn-line { + display: inline-block; +} +.l-btn:hover .s-btn-downarrow, +.s-btn-active .s-btn-downarrow, +.s-btn-plain-active .s-btn-downarrow { + border-style: solid; + border-color: #cccccc; + border-width: 0 0 0 1px; +} +.messager-body { + padding: 10px 10px 30px 10px; + overflow: auto; +} +.messager-button { + text-align: center; + padding: 5px; +} +.messager-button .l-btn { + width: 70px; +} +.messager-icon { + float: left; + width: 32px; + height: 32px; + margin: 0 10px 10px 0; +} +.messager-error { + background: url('images/messager_icons.png') no-repeat scroll -64px 0; +} +.messager-info { + background: url('images/messager_icons.png') no-repeat scroll 0 0; +} +.messager-question { + background: url('images/messager_icons.png') no-repeat scroll -32px 0; +} +.messager-warning { + background: url('images/messager_icons.png') no-repeat scroll -96px 0; +} +.messager-progress { + padding: 10px; +} +.messager-p-msg { + margin-bottom: 5px; +} +.messager-body .messager-input { + width: 100%; + padding: 4px 0; + outline-style: none; + border: 1px solid #000; +} +.window-thinborder .messager-button { + padding-bottom: 8px; +} +.tree { + margin: 0; + padding: 0; + list-style-type: none; +} +.tree li { + white-space: nowrap; +} +.tree li ul { + list-style-type: none; + margin: 0; + padding: 0; +} +.tree-node { + height: 18px; + white-space: nowrap; + cursor: pointer; +} +.tree-hit { + cursor: pointer; +} +.tree-expanded, +.tree-collapsed, +.tree-folder, +.tree-file, +.tree-checkbox, +.tree-indent { + display: inline-block; + width: 16px; + height: 18px; + vertical-align: top; + overflow: hidden; +} +.tree-expanded { + background: url('images/tree_icons.png') no-repeat -18px 0px; +} +.tree-expanded-hover { + background: url('images/tree_icons.png') no-repeat -50px 0px; +} +.tree-collapsed { + background: url('images/tree_icons.png') no-repeat 0px 0px; +} +.tree-collapsed-hover { + background: url('images/tree_icons.png') no-repeat -32px 0px; +} +.tree-lines .tree-expanded, +.tree-lines .tree-root-first .tree-expanded { + background: url('images/tree_icons.png') no-repeat -144px 0; +} +.tree-lines .tree-collapsed, +.tree-lines .tree-root-first .tree-collapsed { + background: url('images/tree_icons.png') no-repeat -128px 0; +} +.tree-lines .tree-node-last .tree-expanded, +.tree-lines .tree-root-one .tree-expanded { + background: url('images/tree_icons.png') no-repeat -80px 0; +} +.tree-lines .tree-node-last .tree-collapsed, +.tree-lines .tree-root-one .tree-collapsed { + background: url('images/tree_icons.png') no-repeat -64px 0; +} +.tree-line { + background: url('images/tree_icons.png') no-repeat -176px 0; +} +.tree-join { + background: url('images/tree_icons.png') no-repeat -192px 0; +} +.tree-joinbottom { + background: url('images/tree_icons.png') no-repeat -160px 0; +} +.tree-folder { + background: url('images/tree_icons.png') no-repeat -208px 0; +} +.tree-folder-open { + background: url('images/tree_icons.png') no-repeat -224px 0; +} +.tree-file { + background: url('images/tree_icons.png') no-repeat -240px 0; +} +.tree-loading { + background: url('images/loading.gif') no-repeat center center; +} +.tree-checkbox0 { + background: url('images/tree_icons.png') no-repeat -208px -18px; +} +.tree-checkbox1 { + background: url('images/tree_icons.png') no-repeat -224px -18px; +} +.tree-checkbox2 { + background: url('images/tree_icons.png') no-repeat -240px -18px; +} +.tree-title { + font-size: 12px; + display: inline-block; + text-decoration: none; + vertical-align: top; + white-space: nowrap; + padding: 0 2px; + height: 18px; + line-height: 18px; +} +.tree-node-proxy { + font-size: 12px; + line-height: 20px; + padding: 0 2px 0 20px; + border-width: 1px; + border-style: solid; + z-index: 9900000; +} +.tree-dnd-icon { + display: inline-block; + position: absolute; + width: 16px; + height: 18px; + left: 2px; + top: 50%; + margin-top: -9px; +} +.tree-dnd-yes { + background: url('images/tree_icons.png') no-repeat -256px 0; +} +.tree-dnd-no { + background: url('images/tree_icons.png') no-repeat -256px -18px; +} +.tree-node-top { + border-top: 1px dotted red; +} +.tree-node-bottom { + border-bottom: 1px dotted red; +} +.tree-node-append .tree-title { + border: 1px dotted red; +} +.tree-editor { + border: 1px solid #000; + font-size: 12px; + line-height: 16px; + padding: 0 4px; + margin: 0; + width: 80px; + outline-style: none; + vertical-align: top; + position: absolute; + top: 0; +} +.tree-node-proxy { + background-color: #666; + color: #fff; + border-color: #000; +} +.tree-node-hover { + background: #777; + color: #fff; +} +.tree-node-selected { + background: #0052A3; + color: #fff; +} +.tree-node-hidden { + display: none; +} +.validatebox-invalid { + border-color: #ffa8a8; + background-color: #fff3f3; + color: #000; +} +.tooltip { + position: absolute; + display: none; + z-index: 9900000; + outline: none; + opacity: 1; + filter: alpha(opacity=100); + padding: 5px; + border-width: 1px; + border-style: solid; + border-radius: 5px; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.tooltip-content { + font-size: 12px; +} +.tooltip-arrow-outer, +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; + line-height: 0; + font-size: 0; + border-style: solid; + border-width: 6px; + border-color: transparent; + _border-color: tomato; + _filter: chroma(color=tomato); +} +.tooltip-arrow { + display: none \9; +} +.tooltip-right .tooltip-arrow-outer { + left: 0; + top: 50%; + margin: -6px 0 0 -13px; +} +.tooltip-right .tooltip-arrow { + left: 0; + top: 50%; + margin: -6px 0 0 -12px; +} +.tooltip-left .tooltip-arrow-outer { + right: 0; + top: 50%; + margin: -6px -13px 0 0; +} +.tooltip-left .tooltip-arrow { + right: 0; + top: 50%; + margin: -6px -12px 0 0; +} +.tooltip-top .tooltip-arrow-outer { + bottom: 0; + left: 50%; + margin: 0 0 -13px -6px; +} +.tooltip-top .tooltip-arrow { + bottom: 0; + left: 50%; + margin: 0 0 -12px -6px; +} +.tooltip-bottom .tooltip-arrow-outer { + top: 0; + left: 50%; + margin: -13px 0 0 -6px; +} +.tooltip-bottom .tooltip-arrow { + top: 0; + left: 50%; + margin: -12px 0 0 -6px; +} +.tooltip { + background-color: #666; + border-color: #000; + color: #fff; +} +.tooltip-right .tooltip-arrow-outer { + border-right-color: #000; +} +.tooltip-right .tooltip-arrow { + border-right-color: #666; +} +.tooltip-left .tooltip-arrow-outer { + border-left-color: #000; +} +.tooltip-left .tooltip-arrow { + border-left-color: #666; +} +.tooltip-top .tooltip-arrow-outer { + border-top-color: #000; +} +.tooltip-top .tooltip-arrow { + border-top-color: #666; +} +.tooltip-bottom .tooltip-arrow-outer { + border-bottom-color: #000; +} +.tooltip-bottom .tooltip-arrow { + border-bottom-color: #666; +} +.switchbutton { + text-decoration: none; + display: inline-block; + overflow: hidden; + vertical-align: middle; + margin: 0; + padding: 0; + cursor: pointer; + background: #555; + border: 1px solid #555; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.switchbutton-inner { + display: inline-block; + overflow: hidden; + position: relative; + top: -1px; + left: -1px; +} +.switchbutton-on, +.switchbutton-off, +.switchbutton-handle { + display: inline-block; + text-align: center; + height: 100%; + float: left; + font-size: 12px; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.switchbutton-on { + background: #0052A3; + color: #fff; +} +.switchbutton-off { + background-color: #666; + color: #fff; +} +.switchbutton-on, +.switchbutton-reversed .switchbutton-off { + -moz-border-radius: 5px 0 0 5px; + -webkit-border-radius: 5px 0 0 5px; + border-radius: 5px 0 0 5px; +} +.switchbutton-off, +.switchbutton-reversed .switchbutton-on { + -moz-border-radius: 0 5px 5px 0; + -webkit-border-radius: 0 5px 5px 0; + border-radius: 0 5px 5px 0; +} +.switchbutton-handle { + position: absolute; + top: 0; + left: 50%; + background-color: #666; + color: #fff; + border: 1px solid #555; + -moz-box-shadow: 0 0 3px 0 #555; + -webkit-box-shadow: 0 0 3px 0 #555; + box-shadow: 0 0 3px 0 #555; +} +.switchbutton-value { + position: absolute; + top: 0; + left: -5000px; +} +.switchbutton-disabled { + opacity: 0.5; + filter: alpha(opacity=50); +} +.switchbutton-disabled, +.switchbutton-readonly { + cursor: default; +} diff --git a/src/main/webapp/static/easyUI/themes/black/filebox.css b/src/main/webapp/static/easyUI/themes/black/filebox.css new file mode 100644 index 0000000000000000000000000000000000000000..c6bac66315046138147a673e0ffaa3d36bce3acc --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/black/filebox.css @@ -0,0 +1,20 @@ +.filebox .textbox-value { + vertical-align: top; + position: absolute; + top: 0; + left: -5000px; +} +.filebox-label { + display: inline-block; + position: absolute; + width: 100%; + height: 100%; + cursor: pointer; + left: 0; + top: 0; + z-index: 10; + background: url('images/blank.gif') no-repeat; +} +.l-btn-disabled .filebox-label { + cursor: default; +} diff --git a/src/main/webapp/static/easyUI/themes/black/images/accordion_arrows.png b/src/main/webapp/static/easyUI/themes/black/images/accordion_arrows.png new file mode 100644 index 0000000000000000000000000000000000000000..45fd44aa30476e107428feeea74273a354d3b003 Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/black/images/accordion_arrows.png differ diff --git a/src/main/webapp/static/easyUI/themes/black/images/blank.gif b/src/main/webapp/static/easyUI/themes/black/images/blank.gif new file mode 100644 index 0000000000000000000000000000000000000000..1d11fa9ada9e93505b3d736acb204083f45d5fbf Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/black/images/blank.gif differ diff --git a/src/main/webapp/static/easyUI/themes/black/images/calendar_arrows.png b/src/main/webapp/static/easyUI/themes/black/images/calendar_arrows.png new file mode 100644 index 0000000000000000000000000000000000000000..430c4ad685b8c0068ecb7e3cbef74f493a84ad0d Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/black/images/calendar_arrows.png differ diff --git a/src/main/webapp/static/easyUI/themes/black/images/combo_arrow.png b/src/main/webapp/static/easyUI/themes/black/images/combo_arrow.png new file mode 100644 index 0000000000000000000000000000000000000000..ac58921c3a2108e5b2630990a5fd63cf68b0099e Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/black/images/combo_arrow.png differ diff --git a/src/main/webapp/static/easyUI/themes/black/images/datagrid_icons.png b/src/main/webapp/static/easyUI/themes/black/images/datagrid_icons.png new file mode 100644 index 0000000000000000000000000000000000000000..7f19b93074ce2851139ab6d49c634159f261b1de Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/black/images/datagrid_icons.png differ diff --git a/src/main/webapp/static/easyUI/themes/black/images/datebox_arrow.png b/src/main/webapp/static/easyUI/themes/black/images/datebox_arrow.png new file mode 100644 index 0000000000000000000000000000000000000000..783c83357fdf90a1c7c024358e1d768b5c09c135 Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/black/images/datebox_arrow.png differ diff --git a/src/main/webapp/static/easyUI/themes/black/images/layout_arrows.png b/src/main/webapp/static/easyUI/themes/black/images/layout_arrows.png new file mode 100644 index 0000000000000000000000000000000000000000..19c611fa9637e6f7c2d06c822392aa49a3a79141 Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/black/images/layout_arrows.png differ diff --git a/src/main/webapp/static/easyUI/themes/black/images/linkbutton_bg.png b/src/main/webapp/static/easyUI/themes/black/images/linkbutton_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..fc66bd2cd24047b8377342365a1df3846327ecde Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/black/images/linkbutton_bg.png differ diff --git a/src/main/webapp/static/easyUI/themes/black/images/loading.gif b/src/main/webapp/static/easyUI/themes/black/images/loading.gif new file mode 100644 index 0000000000000000000000000000000000000000..68f01d04813c1f622810864a3aaa04b4a17ac8f9 Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/black/images/loading.gif differ diff --git a/src/main/webapp/static/easyUI/themes/black/images/menu_arrows.png b/src/main/webapp/static/easyUI/themes/black/images/menu_arrows.png new file mode 100644 index 0000000000000000000000000000000000000000..2a984941d6590c78d67ee68d2087d8cc88efbac6 Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/black/images/menu_arrows.png differ diff --git a/src/main/webapp/static/easyUI/themes/black/images/messager_icons.png b/src/main/webapp/static/easyUI/themes/black/images/messager_icons.png new file mode 100644 index 0000000000000000000000000000000000000000..62c18c135860351063ebaabe8c0f4df7664b8f65 Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/black/images/messager_icons.png differ diff --git a/src/main/webapp/static/easyUI/themes/black/images/pagination_icons.png b/src/main/webapp/static/easyUI/themes/black/images/pagination_icons.png new file mode 100644 index 0000000000000000000000000000000000000000..b3315faf3e637b00af40321d382ffbddbebd4108 Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/black/images/pagination_icons.png differ diff --git a/src/main/webapp/static/easyUI/themes/black/images/panel_tools.png b/src/main/webapp/static/easyUI/themes/black/images/panel_tools.png new file mode 100644 index 0000000000000000000000000000000000000000..f97761eb393def3b5f61774142413e740fe8fe8b Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/black/images/panel_tools.png differ diff --git a/src/main/webapp/static/easyUI/themes/black/images/passwordbox_close.png b/src/main/webapp/static/easyUI/themes/black/images/passwordbox_close.png new file mode 100644 index 0000000000000000000000000000000000000000..276b57974284d1449250e362644dd7416632d92c Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/black/images/passwordbox_close.png differ diff --git a/src/main/webapp/static/easyUI/themes/black/images/passwordbox_open.png b/src/main/webapp/static/easyUI/themes/black/images/passwordbox_open.png new file mode 100644 index 0000000000000000000000000000000000000000..0f25d535e05b22b406fd72647611aace9cfa6249 Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/black/images/passwordbox_open.png differ diff --git a/src/main/webapp/static/easyUI/themes/black/images/searchbox_button.png b/src/main/webapp/static/easyUI/themes/black/images/searchbox_button.png new file mode 100644 index 0000000000000000000000000000000000000000..6dd1931589b453f6cc9772fd1851d8705d6b6631 Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/black/images/searchbox_button.png differ diff --git a/src/main/webapp/static/easyUI/themes/black/images/slider_handle.png b/src/main/webapp/static/easyUI/themes/black/images/slider_handle.png new file mode 100644 index 0000000000000000000000000000000000000000..b9802bae14c536281a8fdbe6cd07abbc13985033 Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/black/images/slider_handle.png differ diff --git a/src/main/webapp/static/easyUI/themes/black/images/spinner_arrows.png b/src/main/webapp/static/easyUI/themes/black/images/spinner_arrows.png new file mode 100644 index 0000000000000000000000000000000000000000..349d7d9d1dd5757fe673c74779ca4397b3ac9880 Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/black/images/spinner_arrows.png differ diff --git a/src/main/webapp/static/easyUI/themes/black/images/tabs_icons.png b/src/main/webapp/static/easyUI/themes/black/images/tabs_icons.png new file mode 100644 index 0000000000000000000000000000000000000000..732b1237a14cf6c525dee8646f322d5603664866 Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/black/images/tabs_icons.png differ diff --git a/src/main/webapp/static/easyUI/themes/black/images/tagbox_icons.png b/src/main/webapp/static/easyUI/themes/black/images/tagbox_icons.png new file mode 100644 index 0000000000000000000000000000000000000000..faddd10cab63488000e766ca3cb10a4a21671c10 Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/black/images/tagbox_icons.png differ diff --git a/src/main/webapp/static/easyUI/themes/black/images/tree_icons.png b/src/main/webapp/static/easyUI/themes/black/images/tree_icons.png new file mode 100644 index 0000000000000000000000000000000000000000..2b4fd2025c7588c84df27d89466b470e273f5c06 Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/black/images/tree_icons.png differ diff --git a/src/main/webapp/static/easyUI/themes/black/images/validatebox_warning.png b/src/main/webapp/static/easyUI/themes/black/images/validatebox_warning.png new file mode 100644 index 0000000000000000000000000000000000000000..2b3d4f05babf3f82b146350e96570fac02075de0 Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/black/images/validatebox_warning.png differ diff --git a/src/main/webapp/static/easyUI/themes/black/layout.css b/src/main/webapp/static/easyUI/themes/black/layout.css new file mode 100644 index 0000000000000000000000000000000000000000..d1f9184266445004ec26b5af7ff9cfdef5255f59 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/black/layout.css @@ -0,0 +1,150 @@ +.layout { + position: relative; + overflow: hidden; + margin: 0; + padding: 0; + z-index: 0; +} +.layout-panel { + position: absolute; + overflow: hidden; +} +.layout-body { + min-width: 1px; + min-height: 1px; +} +.layout-panel-east, +.layout-panel-west { + z-index: 2; +} +.layout-panel-north, +.layout-panel-south { + z-index: 3; +} +.layout-expand { + position: absolute; + padding: 0px; + font-size: 1px; + cursor: pointer; + z-index: 1; +} +.layout-expand .panel-header, +.layout-expand .panel-body { + background: transparent; + filter: none; + overflow: hidden; +} +.layout-expand .panel-header { + border-bottom-width: 0px; +} +.layout-expand .panel-body { + position: relative; +} +.layout-expand .panel-body .panel-icon { + margin-top: 0; + top: 0; + left: 50%; + margin-left: -8px; +} +.layout-expand-west .panel-header .panel-icon, +.layout-expand-east .panel-header .panel-icon { + display: none; +} +.layout-expand-title { + position: absolute; + top: 0; + left: 21px; + white-space: nowrap; + word-wrap: normal; + -webkit-transform: rotate(90deg); + -webkit-transform-origin: 0 0; + -moz-transform: rotate(90deg); + -moz-transform-origin: 0 0; + -o-transform: rotate(90deg); + -o-transform-origin: 0 0; + transform: rotate(90deg); + transform-origin: 0 0; +} +.layout-expand-title-up { + position: absolute; + top: 0; + left: 0; + text-align: right; + padding-left: 5px; + white-space: nowrap; + word-wrap: normal; + -webkit-transform: rotate(-90deg); + -webkit-transform-origin: 0 0; + -moz-transform: rotate(-90deg); + -moz-transform-origin: 0 0; + -o-transform: rotate(-90deg); + -o-transform-origin: 0 0; + transform: rotate(-90deg); + transform-origin: 0 0; +} +.layout-expand-with-icon { + top: 18px; +} +.layout-expand .panel-body-noheader .layout-expand-title, +.layout-expand .panel-body-noheader .panel-icon { + top: 5px; +} +.layout-expand .panel-body-noheader .layout-expand-with-icon { + top: 23px; +} +.layout-split-proxy-h, +.layout-split-proxy-v { + position: absolute; + font-size: 1px; + display: none; + z-index: 5; +} +.layout-split-proxy-h { + width: 5px; + cursor: e-resize; +} +.layout-split-proxy-v { + height: 5px; + cursor: n-resize; +} +.layout-mask { + position: absolute; + background: #fafafa; + filter: alpha(opacity=10); + opacity: 0.10; + z-index: 4; +} +.layout-button-up { + background: url('images/layout_arrows.png') no-repeat -16px -16px; +} +.layout-button-down { + background: url('images/layout_arrows.png') no-repeat -16px 0; +} +.layout-button-left { + background: url('images/layout_arrows.png') no-repeat 0 0; +} +.layout-button-right { + background: url('images/layout_arrows.png') no-repeat 0 -16px; +} +.layout-split-proxy-h, +.layout-split-proxy-v { + background-color: #cccccc; +} +.layout-split-north { + border-bottom: 5px solid #444; +} +.layout-split-south { + border-top: 5px solid #444; +} +.layout-split-east { + border-left: 5px solid #444; +} +.layout-split-west { + border-right: 5px solid #444; +} +.layout-expand { + background-color: #3d3d3d; +} +.layout-expand-over { + background-color: #3d3d3d; +} diff --git a/src/main/webapp/static/easyUI/themes/black/linkbutton.css b/src/main/webapp/static/easyUI/themes/black/linkbutton.css new file mode 100644 index 0000000000000000000000000000000000000000..18a7f0eabba72980792dfd6c67473768a4ede940 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/black/linkbutton.css @@ -0,0 +1,203 @@ +.l-btn { + text-decoration: none; + display: inline-block; + overflow: hidden; + margin: 0; + padding: 0; + cursor: pointer; + outline: none; + text-align: center; + vertical-align: middle; + line-height: normal; +} +.l-btn-plain { + border-width: 0; + padding: 1px; +} +.l-btn-left { + display: inline-block; + position: relative; + overflow: hidden; + margin: 0; + padding: 0; + vertical-align: top; +} +.l-btn-text { + display: inline-block; + vertical-align: top; + width: auto; + line-height: 24px; + font-size: 12px; + padding: 0; + margin: 0 4px; +} +.l-btn-icon { + display: inline-block; + width: 16px; + height: 16px; + line-height: 16px; + position: absolute; + top: 50%; + margin-top: -8px; + font-size: 1px; +} +.l-btn span span .l-btn-empty { + display: inline-block; + margin: 0; + width: 16px; + height: 24px; + font-size: 1px; + vertical-align: top; +} +.l-btn span .l-btn-icon-left { + padding: 0 0 0 20px; + background-position: left center; +} +.l-btn span .l-btn-icon-right { + padding: 0 20px 0 0; + background-position: right center; +} +.l-btn-icon-left .l-btn-text { + margin: 0 4px 0 24px; +} +.l-btn-icon-left .l-btn-icon { + left: 4px; +} +.l-btn-icon-right .l-btn-text { + margin: 0 24px 0 4px; +} +.l-btn-icon-right .l-btn-icon { + right: 4px; +} +.l-btn-icon-top .l-btn-text { + margin: 20px 4px 0 4px; +} +.l-btn-icon-top .l-btn-icon { + top: 4px; + left: 50%; + margin: 0 0 0 -8px; +} +.l-btn-icon-bottom .l-btn-text { + margin: 0 4px 20px 4px; +} +.l-btn-icon-bottom .l-btn-icon { + top: auto; + bottom: 4px; + left: 50%; + margin: 0 0 0 -8px; +} +.l-btn-left .l-btn-empty { + margin: 0 4px; + width: 16px; +} +.l-btn-plain:hover { + padding: 0; +} +.l-btn-focus { + outline: #0000FF dotted thin; +} +.l-btn-large .l-btn-text { + line-height: 40px; +} +.l-btn-large .l-btn-icon { + width: 32px; + height: 32px; + line-height: 32px; + margin-top: -16px; +} +.l-btn-large .l-btn-icon-left .l-btn-text { + margin-left: 40px; +} +.l-btn-large .l-btn-icon-right .l-btn-text { + margin-right: 40px; +} +.l-btn-large .l-btn-icon-top .l-btn-text { + margin-top: 36px; + line-height: 24px; + min-width: 32px; +} +.l-btn-large .l-btn-icon-top .l-btn-icon { + margin: 0 0 0 -16px; +} +.l-btn-large .l-btn-icon-bottom .l-btn-text { + margin-bottom: 36px; + line-height: 24px; + min-width: 32px; +} +.l-btn-large .l-btn-icon-bottom .l-btn-icon { + margin: 0 0 0 -16px; +} +.l-btn-large .l-btn-left .l-btn-empty { + margin: 0 4px; + width: 32px; +} +.l-btn { + color: #fff; + background: #777; + background-repeat: repeat-x; + border: 1px solid #555; + background: -webkit-linear-gradient(top,#919191 0,#6a6a6a 100%); + background: -moz-linear-gradient(top,#919191 0,#6a6a6a 100%); + background: -o-linear-gradient(top,#919191 0,#6a6a6a 100%); + background: linear-gradient(to bottom,#919191 0,#6a6a6a 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#919191,endColorstr=#6a6a6a,GradientType=0); + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.l-btn:hover { + background: #777; + color: #fff; + border: 1px solid #555; + filter: none; +} +.l-btn-plain { + background: transparent; + border-width: 0; + filter: none; +} +.l-btn-outline { + border-width: 1px; + border-color: #555; + padding: 0; +} +.l-btn-plain:hover { + background: #777; + color: #fff; + border: 1px solid #555; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.l-btn-disabled, +.l-btn-disabled:hover { + opacity: 0.5; + cursor: default; + background: #777; + color: #fff; + background: -webkit-linear-gradient(top,#919191 0,#6a6a6a 100%); + background: -moz-linear-gradient(top,#919191 0,#6a6a6a 100%); + background: -o-linear-gradient(top,#919191 0,#6a6a6a 100%); + background: linear-gradient(to bottom,#919191 0,#6a6a6a 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#919191,endColorstr=#6a6a6a,GradientType=0); +} +.l-btn-disabled .l-btn-text, +.l-btn-disabled .l-btn-icon { + filter: alpha(opacity=50); +} +.l-btn-plain-disabled, +.l-btn-plain-disabled:hover { + background: transparent; + filter: alpha(opacity=50); +} +.l-btn-selected, +.l-btn-selected:hover { + background: #000; + filter: none; +} +.l-btn-plain-selected, +.l-btn-plain-selected:hover { + background: #000; +} diff --git a/src/main/webapp/static/easyUI/themes/black/menu.css b/src/main/webapp/static/easyUI/themes/black/menu.css new file mode 100644 index 0000000000000000000000000000000000000000..430d0d8deaad58bc49cd514743e865950559840d --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/black/menu.css @@ -0,0 +1,119 @@ +.menu { + position: absolute; + margin: 0; + padding: 2px; + border-width: 1px; + border-style: solid; + overflow: hidden; +} +.menu-inline { + position: relative; +} +.menu-item { + position: relative; + margin: 0; + padding: 0; + overflow: hidden; + white-space: nowrap; + cursor: pointer; + border-width: 1px; + border-style: solid; +} +.menu-text { + height: 20px; + line-height: 20px; + float: left; + padding-left: 28px; +} +.menu-icon { + position: absolute; + width: 16px; + height: 16px; + left: 2px; + top: 50%; + margin-top: -8px; +} +.menu-rightarrow { + position: absolute; + width: 16px; + height: 16px; + right: 0; + top: 50%; + margin-top: -8px; +} +.menu-line { + position: absolute; + left: 26px; + top: 0; + height: 2000px; + font-size: 1px; +} +.menu-sep { + margin: 3px 0px 3px 25px; + font-size: 1px; +} +.menu-noline .menu-line { + display: none; +} +.menu-noline .menu-sep { + margin-left: 0; + margin-right: 0; +} +.menu-active { + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.menu-item-disabled { + opacity: 0.5; + filter: alpha(opacity=50); + cursor: default; +} +.menu-text, +.menu-text span { + font-size: 12px; +} +.menu-shadow { + position: absolute; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; + background: #777; + -moz-box-shadow: 2px 2px 3px #787878; + -webkit-box-shadow: 2px 2px 3px #787878; + box-shadow: 2px 2px 3px #787878; + filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); +} +.menu-rightarrow { + background: url('images/menu_arrows.png') no-repeat -32px center; +} +.menu-line { + border-left: 1px solid #444; + border-right: 1px solid #777; +} +.menu-sep { + border-top: 1px solid #444; + border-bottom: 1px solid #777; +} +.menu { + background-color: #666; + border-color: #444; + color: #fff; +} +.menu-content { + background: #666; +} +.menu-item { + border-color: transparent; + _border-color: #666; +} +.menu-active { + border-color: #555; + color: #fff; + background: #777; +} +.menu-active-disabled { + border-color: transparent; + background: transparent; + color: #fff; +} diff --git a/src/main/webapp/static/easyUI/themes/black/menubutton.css b/src/main/webapp/static/easyUI/themes/black/menubutton.css new file mode 100644 index 0000000000000000000000000000000000000000..55a2b5ead0f160c37dff8e9a2a6b1e83e3804f3e --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/black/menubutton.css @@ -0,0 +1,94 @@ +.m-btn-downarrow, +.s-btn-downarrow { + display: inline-block; + position: absolute; + width: 16px; + height: 16px; + font-size: 1px; + right: 0; + top: 50%; + margin-top: -8px; +} +.m-btn-active, +.s-btn-active { + background: #777; + color: #fff; + border: 1px solid #555; + filter: none; +} +.m-btn-plain-active, +.s-btn-plain-active { + background: transparent; + padding: 0; + border-width: 1px; + border-style: solid; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.m-btn .l-btn-left .l-btn-text { + margin-right: 20px; +} +.m-btn .l-btn-icon-right .l-btn-text { + margin-right: 40px; +} +.m-btn .l-btn-icon-right .l-btn-icon { + right: 20px; +} +.m-btn .l-btn-icon-top .l-btn-text { + margin-right: 4px; + margin-bottom: 14px; +} +.m-btn .l-btn-icon-bottom .l-btn-text { + margin-right: 4px; + margin-bottom: 34px; +} +.m-btn .l-btn-icon-bottom .l-btn-icon { + top: auto; + bottom: 20px; +} +.m-btn .l-btn-icon-top .m-btn-downarrow, +.m-btn .l-btn-icon-bottom .m-btn-downarrow { + top: auto; + bottom: 0px; + left: 50%; + margin-left: -8px; +} +.m-btn-line { + display: inline-block; + position: absolute; + font-size: 1px; + display: none; +} +.m-btn .l-btn-left .m-btn-line { + right: 0; + width: 16px; + height: 500px; + border-style: solid; + border-color: #cccccc; + border-width: 0 0 0 1px; +} +.m-btn .l-btn-icon-top .m-btn-line, +.m-btn .l-btn-icon-bottom .m-btn-line { + left: 0; + bottom: 0; + width: 500px; + height: 16px; + border-width: 1px 0 0 0; +} +.m-btn-large .l-btn-icon-right .l-btn-text { + margin-right: 56px; +} +.m-btn-large .l-btn-icon-bottom .l-btn-text { + margin-bottom: 50px; +} +.m-btn-downarrow, +.s-btn-downarrow { + background: url('images/menu_arrows.png') no-repeat 0 center; +} +.m-btn-plain-active, +.s-btn-plain-active { + border-color: #555; + background-color: #777; + color: #fff; +} diff --git a/src/main/webapp/static/easyUI/themes/black/messager.css b/src/main/webapp/static/easyUI/themes/black/messager.css new file mode 100644 index 0000000000000000000000000000000000000000..ca6438b0ba8678df5319cbd02aba0ed864da3ddc --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/black/messager.css @@ -0,0 +1,44 @@ +.messager-body { + padding: 10px 10px 30px 10px; + overflow: auto; +} +.messager-button { + text-align: center; + padding: 5px; +} +.messager-button .l-btn { + width: 70px; +} +.messager-icon { + float: left; + width: 32px; + height: 32px; + margin: 0 10px 10px 0; +} +.messager-error { + background: url('images/messager_icons.png') no-repeat scroll -64px 0; +} +.messager-info { + background: url('images/messager_icons.png') no-repeat scroll 0 0; +} +.messager-question { + background: url('images/messager_icons.png') no-repeat scroll -32px 0; +} +.messager-warning { + background: url('images/messager_icons.png') no-repeat scroll -96px 0; +} +.messager-progress { + padding: 10px; +} +.messager-p-msg { + margin-bottom: 5px; +} +.messager-body .messager-input { + width: 100%; + padding: 4px 0; + outline-style: none; + border: 1px solid #000; +} +.window-thinborder .messager-button { + padding-bottom: 8px; +} diff --git a/src/main/webapp/static/easyUI/themes/black/numberbox.css b/src/main/webapp/static/easyUI/themes/black/numberbox.css new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/main/webapp/static/easyUI/themes/black/pagination.css b/src/main/webapp/static/easyUI/themes/black/pagination.css new file mode 100644 index 0000000000000000000000000000000000000000..9e506a4163e8ba737252ef81b045b692c5e75651 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/black/pagination.css @@ -0,0 +1,71 @@ +.pagination { + zoom: 1; +} +.pagination table { + float: left; + height: 30px; +} +.pagination td { + border: 0; +} +.pagination-btn-separator { + float: left; + height: 24px; + border-left: 1px solid #444; + border-right: 1px solid #777; + margin: 3px 1px; +} +.pagination .pagination-num { + border-width: 1px; + border-style: solid; + margin: 0 2px; + padding: 2px; + width: 2em; + height: auto; +} +.pagination-page-list { + margin: 0px 6px; + padding: 1px 2px; + width: auto; + height: auto; + border-width: 1px; + border-style: solid; +} +.pagination-info { + float: right; + margin: 0 6px; + padding: 0; + height: 30px; + line-height: 30px; + font-size: 12px; +} +.pagination span { + font-size: 12px; +} +.pagination-link .l-btn-text { + width: 24px; + text-align: center; + margin: 0; +} +.pagination-first { + background: url('images/pagination_icons.png') no-repeat 0 center; +} +.pagination-prev { + background: url('images/pagination_icons.png') no-repeat -16px center; +} +.pagination-next { + background: url('images/pagination_icons.png') no-repeat -32px center; +} +.pagination-last { + background: url('images/pagination_icons.png') no-repeat -48px center; +} +.pagination-load { + background: url('images/pagination_icons.png') no-repeat -64px center; +} +.pagination-loading { + background: url('images/loading.gif') no-repeat center center; +} +.pagination-page-list, +.pagination .pagination-num { + border-color: #000; +} diff --git a/src/main/webapp/static/easyUI/themes/black/panel.css b/src/main/webapp/static/easyUI/themes/black/panel.css new file mode 100644 index 0000000000000000000000000000000000000000..a300aacb1f2cd26fb3c90d6eb7fc9e4ab707d0fc --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/black/panel.css @@ -0,0 +1,265 @@ +.panel { + overflow: hidden; + text-align: left; + margin: 0; + border: 0; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.panel-header, +.panel-body { + border-width: 1px; + border-style: solid; +} +.panel-header { + padding: 5px; + position: relative; +} +.panel-title { + background: url('images/blank.gif') no-repeat; +} +.panel-header-noborder { + border-width: 0 0 1px 0; +} +.panel-body { + overflow: auto; + border-top-width: 0; + padding: 0; +} +.panel-body-noheader { + border-top-width: 1px; +} +.panel-body-noborder { + border-width: 0px; +} +.panel-body-nobottom { + border-bottom-width: 0; +} +.panel-with-icon { + padding-left: 18px; +} +.panel-icon, +.panel-tool { + position: absolute; + top: 50%; + margin-top: -8px; + height: 16px; + overflow: hidden; +} +.panel-icon { + left: 5px; + width: 16px; +} +.panel-tool { + right: 5px; + width: auto; +} +.panel-tool a { + display: inline-block; + width: 16px; + height: 16px; + opacity: 0.6; + filter: alpha(opacity=60); + margin: 0 0 0 2px; + vertical-align: top; +} +.panel-tool a:hover { + opacity: 1; + filter: alpha(opacity=100); + background-color: #777; + -moz-border-radius: 3px 3px 3px 3px; + -webkit-border-radius: 3px 3px 3px 3px; + border-radius: 3px 3px 3px 3px; +} +.panel-loading { + padding: 11px 0px 10px 30px; +} +.panel-noscroll { + overflow: hidden; +} +.panel-fit, +.panel-fit body { + height: 100%; + margin: 0; + padding: 0; + border: 0; + overflow: hidden; +} +.panel-loading { + background: url('images/loading.gif') no-repeat 10px 10px; +} +.panel-tool-close { + background: url('images/panel_tools.png') no-repeat -16px 0px; +} +.panel-tool-min { + background: url('images/panel_tools.png') no-repeat 0px 0px; +} +.panel-tool-max { + background: url('images/panel_tools.png') no-repeat 0px -16px; +} +.panel-tool-restore { + background: url('images/panel_tools.png') no-repeat -16px -16px; +} +.panel-tool-collapse { + background: url('images/panel_tools.png') no-repeat -32px 0; +} +.panel-tool-expand { + background: url('images/panel_tools.png') no-repeat -32px -16px; +} +.panel-header, +.panel-body { + border-color: #000; +} +.panel-header { + background-color: #3d3d3d; + background: -webkit-linear-gradient(top,#454545 0,#383838 100%); + background: -moz-linear-gradient(top,#454545 0,#383838 100%); + background: -o-linear-gradient(top,#454545 0,#383838 100%); + background: linear-gradient(to bottom,#454545 0,#383838 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#454545,endColorstr=#383838,GradientType=0); +} +.panel-body { + background-color: #666; + color: #fff; + font-size: 12px; +} +.panel-title { + font-size: 12px; + font-weight: bold; + color: #fff; + height: 16px; + line-height: 16px; +} +.panel-footer { + border: 1px solid #000; + overflow: hidden; + background: #555; +} +.panel-footer-noborder { + border-width: 1px 0 0 0; +} +.panel-hleft, +.panel-hright { + position: relative; +} +.panel-hleft>.panel-body, +.panel-hright>.panel-body { + position: absolute; +} +.panel-hleft>.panel-header { + float: left; +} +.panel-hright>.panel-header { + float: right; +} +.panel-hleft>.panel-body { + border-top-width: 1px; + border-left-width: 0; +} +.panel-hright>.panel-body { + border-top-width: 1px; + border-right-width: 0; +} +.panel-hleft>.panel-body-nobottom { + border-bottom-width: 1px; + border-right-width: 0; +} +.panel-hright>.panel-body-nobottom { + border-bottom-width: 1px; + border-left-width: 0; +} +.panel-hleft>.panel-footer { + position: absolute; + right: 0; +} +.panel-hright>.panel-footer { + position: absolute; + left: 0; +} +.panel-hleft>.panel-header-noborder { + border-width: 0 1px 0 0; +} +.panel-hright>.panel-header-noborder { + border-width: 0 0 0 1px; +} +.panel-hleft>.panel-body-noborder { + border-width: 0; +} +.panel-hright>.panel-body-noborder { + border-width: 0; +} +.panel-hleft>.panel-body-noheader { + border-left-width: 1px; +} +.panel-hright>.panel-body-noheader { + border-right-width: 1px; +} +.panel-hleft>.panel-footer-noborder { + border-width: 0 0 0 1px; +} +.panel-hright>.panel-footer-noborder { + border-width: 0 1px 0 0; +} +.panel-hleft>.panel-header .panel-icon, +.panel-hright>.panel-header .panel-icon { + margin-top: 0; + top: 5px; +} +.panel-hleft>.panel-header .panel-title, +.panel-hright>.panel-header .panel-title { + position: absolute; + min-width: 16px; + left: 21px; + top: 5px; + bottom: auto; + white-space: nowrap; + word-wrap: normal; + -webkit-transform: rotate(90deg); + -webkit-transform-origin: 0 0; + -moz-transform: rotate(90deg); + -moz-transform-origin: 0 0; + -o-transform: rotate(90deg); + -o-transform-origin: 0 0; + transform: rotate(90deg); + transform-origin: 0 0; +} +.panel-hleft>.panel-header .panel-title-up, +.panel-hright>.panel-header .panel-title-up { + position: absolute; + min-width: 16px; + left: 21px; + top: auto; + bottom: 5px; + text-align: right; + white-space: nowrap; + word-wrap: normal; + -webkit-transform: rotate(-90deg); + -webkit-transform-origin: 0 0; + -moz-transform: rotate(-90deg); + -moz-transform-origin: 0 0; + -o-transform: rotate(-90deg); + -o-transform-origin: 0 0; + transform: rotate(-90deg); + transform-origin: 0 16px; +} +.panel-hleft>.panel-header .panel-with-icon.panel-title-up, +.panel-hright>.panel-header .panel-with-icon.panel-title-up { + padding-left: 0; + padding-right: 18px; +} +.panel-hleft>.panel-header .panel-tool, +.panel-hright>.panel-header .panel-tool { + top: auto; + bottom: 5px; + width: 16px; + height: auto; + left: 50%; + margin-left: -8px; + margin-top: 0; +} +.panel-hleft>.panel-header .panel-tool a, +.panel-hright>.panel-header .panel-tool a { + margin: 2px 0 0 0; +} diff --git a/src/main/webapp/static/easyUI/themes/black/passwordbox.css b/src/main/webapp/static/easyUI/themes/black/passwordbox.css new file mode 100644 index 0000000000000000000000000000000000000000..92c9ce586b5c0e515bceb19422e8012e85d0e09b --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/black/passwordbox.css @@ -0,0 +1,6 @@ +.passwordbox-open { + background: url('images/passwordbox_open.png') no-repeat center center; +} +.passwordbox-close { + background: url('images/passwordbox_close.png') no-repeat center center; +} diff --git a/src/main/webapp/static/easyUI/themes/black/progressbar.css b/src/main/webapp/static/easyUI/themes/black/progressbar.css new file mode 100644 index 0000000000000000000000000000000000000000..79fcf624b91f29f6cb3b6afc1811c8896d54a517 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/black/progressbar.css @@ -0,0 +1,32 @@ +.progressbar { + border-width: 1px; + border-style: solid; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; + overflow: hidden; + position: relative; +} +.progressbar-text { + text-align: center; + position: absolute; +} +.progressbar-value { + position: relative; + overflow: hidden; + width: 0; + -moz-border-radius: 5px 0 0 5px; + -webkit-border-radius: 5px 0 0 5px; + border-radius: 5px 0 0 5px; +} +.progressbar { + border-color: #000; +} +.progressbar-text { + color: #fff; + font-size: 12px; +} +.progressbar-value .progressbar-text { + background-color: #0052A3; + color: #fff; +} diff --git a/src/main/webapp/static/easyUI/themes/black/propertygrid.css b/src/main/webapp/static/easyUI/themes/black/propertygrid.css new file mode 100644 index 0000000000000000000000000000000000000000..d71ce7c8b52ddd4b01a048b42b0ce9b09bd120e4 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/black/propertygrid.css @@ -0,0 +1,28 @@ +.propertygrid .datagrid-view1 .datagrid-body td { + padding-bottom: 1px; + border-width: 0 1px 0 0; +} +.propertygrid .datagrid-group { + height: 21px; + overflow: hidden; + border-width: 0 0 1px 0; + border-style: solid; +} +.propertygrid .datagrid-group span { + font-weight: bold; +} +.propertygrid .datagrid-view1 .datagrid-body td { + border-color: #222; +} +.propertygrid .datagrid-view1 .datagrid-group { + border-color: #3d3d3d; +} +.propertygrid .datagrid-view2 .datagrid-group { + border-color: #222; +} +.propertygrid .datagrid-group, +.propertygrid .datagrid-view1 .datagrid-body, +.propertygrid .datagrid-view1 .datagrid-row-over, +.propertygrid .datagrid-view1 .datagrid-row-selected { + background: #3d3d3d; +} diff --git a/src/main/webapp/static/easyUI/themes/black/searchbox.css b/src/main/webapp/static/easyUI/themes/black/searchbox.css new file mode 100644 index 0000000000000000000000000000000000000000..01f66974290b8cf78d80d38534865e7e1f649367 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/black/searchbox.css @@ -0,0 +1,61 @@ +.searchbox-button { + width: 18px; + height: 20px; + overflow: hidden; + display: inline-block; + vertical-align: top; + cursor: pointer; + opacity: 0.6; + filter: alpha(opacity=60); +} +.searchbox-button-hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.searchbox .l-btn-plain { + border: 0; + padding: 0; + vertical-align: top; + opacity: 0.6; + filter: alpha(opacity=60); + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox .l-btn-plain:hover { + border: 0; + padding: 0; + opacity: 1.0; + filter: alpha(opacity=100); + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox a.m-btn-plain-active { + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox .m-btn-active { + border-width: 0 1px 0 0; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox .textbox-button-right { + border-width: 0 0 0 1px; +} +.searchbox .textbox-button-left { + border-width: 0 1px 0 0; +} +.searchbox-button { + background: url('images/searchbox_button.png') no-repeat center center; +} +.searchbox .l-btn-plain { + background: #3d3d3d; +} +.searchbox .l-btn-plain-disabled, +.searchbox .l-btn-plain-disabled:hover { + opacity: 0.5; + filter: alpha(opacity=50); +} diff --git a/src/main/webapp/static/easyUI/themes/black/slider.css b/src/main/webapp/static/easyUI/themes/black/slider.css new file mode 100644 index 0000000000000000000000000000000000000000..cd66bf5497577b13e6f4b61a6a79ebcbf569e24a --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/black/slider.css @@ -0,0 +1,101 @@ +.slider-disabled { + opacity: 0.5; + filter: alpha(opacity=50); +} +.slider-h { + height: 22px; +} +.slider-v { + width: 22px; +} +.slider-inner { + position: relative; + height: 6px; + top: 7px; + border-width: 1px; + border-style: solid; + border-radius: 5px; +} +.slider-handle { + position: absolute; + display: block; + outline: none; + width: 20px; + height: 20px; + top: 50%; + margin-top: -10px; + margin-left: -10px; +} +.slider-tip { + position: absolute; + display: inline-block; + line-height: 12px; + font-size: 12px; + white-space: nowrap; + top: -22px; +} +.slider-rule { + position: relative; + top: 15px; +} +.slider-rule span { + position: absolute; + display: inline-block; + font-size: 0; + height: 5px; + border-width: 0 0 0 1px; + border-style: solid; +} +.slider-rulelabel { + position: relative; + top: 20px; +} +.slider-rulelabel span { + position: absolute; + display: inline-block; + font-size: 12px; +} +.slider-v .slider-inner { + width: 6px; + left: 7px; + top: 0; + float: left; +} +.slider-v .slider-handle { + left: 50%; + margin-top: -10px; +} +.slider-v .slider-tip { + left: -10px; + margin-top: -6px; +} +.slider-v .slider-rule { + float: left; + top: 0; + left: 16px; +} +.slider-v .slider-rule span { + width: 5px; + height: 'auto'; + border-left: 0; + border-width: 1px 0 0 0; + border-style: solid; +} +.slider-v .slider-rulelabel { + float: left; + top: 0; + left: 23px; +} +.slider-handle { + background: url('images/slider_handle.png') no-repeat; +} +.slider-inner { + border-color: #000; + background: #3d3d3d; +} +.slider-rule span { + border-color: #000; +} +.slider-rulelabel span { + color: #fff; +} diff --git a/src/main/webapp/static/easyUI/themes/black/spinner.css b/src/main/webapp/static/easyUI/themes/black/spinner.css new file mode 100644 index 0000000000000000000000000000000000000000..6686ca03fa6bee453c69297cc2d6ba7ecc213de3 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/black/spinner.css @@ -0,0 +1,58 @@ +.spinner-arrow { + background-color: #3d3d3d; + display: inline-block; + overflow: hidden; + vertical-align: top; + margin: 0; + padding: 0; + opacity: 1.0; + filter: alpha(opacity=100); + width: 18px; +} +.spinner-arrow-up, +.spinner-arrow-down { + opacity: 0.6; + filter: alpha(opacity=60); + display: block; + font-size: 1px; + width: 18px; + height: 10px; + width: 100%; + height: 50%; + color: #fff; + outline-style: none; +} +.spinner-arrow-hover { + background-color: #777; + opacity: 1.0; + filter: alpha(opacity=100); +} +.spinner-arrow-up:hover, +.spinner-arrow-down:hover { + opacity: 1.0; + filter: alpha(opacity=100); + background-color: #777; +} +.textbox-icon-disabled .spinner-arrow-up:hover, +.textbox-icon-disabled .spinner-arrow-down:hover { + opacity: 0.6; + filter: alpha(opacity=60); + background-color: #3d3d3d; + cursor: default; +} +.spinner .textbox-icon-disabled { + opacity: 0.6; + filter: alpha(opacity=60); +} +.spinner-arrow-up { + background: url('images/spinner_arrows.png') no-repeat 1px center; +} +.spinner-arrow-down { + background: url('images/spinner_arrows.png') no-repeat -15px center; +} +.spinner-button-up { + background: url('images/spinner_arrows.png') no-repeat -32px center; +} +.spinner-button-down { + background: url('images/spinner_arrows.png') no-repeat -48px center; +} diff --git a/src/main/webapp/static/easyUI/themes/black/splitbutton.css b/src/main/webapp/static/easyUI/themes/black/splitbutton.css new file mode 100644 index 0000000000000000000000000000000000000000..b42e3963fa58c8f1548d0c949b1e7cbdec652ab8 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/black/splitbutton.css @@ -0,0 +1,12 @@ +.s-btn:hover .m-btn-line, +.s-btn-active .m-btn-line, +.s-btn-plain-active .m-btn-line { + display: inline-block; +} +.l-btn:hover .s-btn-downarrow, +.s-btn-active .s-btn-downarrow, +.s-btn-plain-active .s-btn-downarrow { + border-style: solid; + border-color: #cccccc; + border-width: 0 0 0 1px; +} diff --git a/src/main/webapp/static/easyUI/themes/black/switchbutton.css b/src/main/webapp/static/easyUI/themes/black/switchbutton.css new file mode 100644 index 0000000000000000000000000000000000000000..b1b5714e9460fcc3460856d4fdf907fcd862f75c --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/black/switchbutton.css @@ -0,0 +1,77 @@ +.switchbutton { + text-decoration: none; + display: inline-block; + overflow: hidden; + vertical-align: middle; + margin: 0; + padding: 0; + cursor: pointer; + background: #555; + border: 1px solid #555; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.switchbutton-inner { + display: inline-block; + overflow: hidden; + position: relative; + top: -1px; + left: -1px; +} +.switchbutton-on, +.switchbutton-off, +.switchbutton-handle { + display: inline-block; + text-align: center; + height: 100%; + float: left; + font-size: 12px; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.switchbutton-on { + background: #0052A3; + color: #fff; +} +.switchbutton-off { + background-color: #666; + color: #fff; +} +.switchbutton-on, +.switchbutton-reversed .switchbutton-off { + -moz-border-radius: 5px 0 0 5px; + -webkit-border-radius: 5px 0 0 5px; + border-radius: 5px 0 0 5px; +} +.switchbutton-off, +.switchbutton-reversed .switchbutton-on { + -moz-border-radius: 0 5px 5px 0; + -webkit-border-radius: 0 5px 5px 0; + border-radius: 0 5px 5px 0; +} +.switchbutton-handle { + position: absolute; + top: 0; + left: 50%; + background-color: #666; + color: #fff; + border: 1px solid #555; + -moz-box-shadow: 0 0 3px 0 #555; + -webkit-box-shadow: 0 0 3px 0 #555; + box-shadow: 0 0 3px 0 #555; +} +.switchbutton-value { + position: absolute; + top: 0; + left: -5000px; +} +.switchbutton-disabled { + opacity: 0.5; + filter: alpha(opacity=50); +} +.switchbutton-disabled, +.switchbutton-readonly { + cursor: default; +} diff --git a/src/main/webapp/static/easyUI/themes/black/tabs.css b/src/main/webapp/static/easyUI/themes/black/tabs.css new file mode 100644 index 0000000000000000000000000000000000000000..4ab73de61d77155e0c1e21fc41a10c6f2ece28fa --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/black/tabs.css @@ -0,0 +1,413 @@ +.tabs-container { + overflow: hidden; +} +.tabs-header { + border-width: 1px; + border-style: solid; + border-bottom-width: 0; + position: relative; + padding: 0; + padding-top: 2px; + overflow: hidden; +} +.tabs-scroller-left, +.tabs-scroller-right { + position: absolute; + top: auto; + bottom: 0; + width: 18px; + font-size: 1px; + display: none; + cursor: pointer; + border-width: 1px; + border-style: solid; +} +.tabs-scroller-left { + left: 0; +} +.tabs-scroller-right { + right: 0; +} +.tabs-tool { + position: absolute; + bottom: 0; + padding: 1px; + overflow: hidden; + border-width: 1px; + border-style: solid; +} +.tabs-header-plain .tabs-tool { + padding: 0 1px; +} +.tabs-wrap { + position: relative; + left: 0; + overflow: hidden; + width: 100%; + margin: 0; + padding: 0; +} +.tabs-scrolling { + margin-left: 18px; + margin-right: 18px; +} +.tabs-disabled { + opacity: 0.3; + filter: alpha(opacity=30); +} +.tabs { + list-style-type: none; + height: 26px; + margin: 0px; + padding: 0px; + padding-left: 4px; + width: 50000px; + border-style: solid; + border-width: 0 0 1px 0; +} +.tabs li { + float: left; + display: inline-block; + margin: 0 4px -1px 0; + padding: 0; + position: relative; + border: 0; +} +.tabs li a.tabs-inner { + display: inline-block; + text-decoration: none; + margin: 0; + padding: 0 10px; + height: 25px; + line-height: 25px; + text-align: center; + white-space: nowrap; + border-width: 1px; + border-style: solid; + -moz-border-radius: 5px 5px 0 0; + -webkit-border-radius: 5px 5px 0 0; + border-radius: 5px 5px 0 0; +} +.tabs li.tabs-selected a.tabs-inner { + font-weight: bold; + outline: none; +} +.tabs li.tabs-selected a:hover.tabs-inner { + cursor: default; + pointer: default; +} +.tabs li a.tabs-close, +.tabs-p-tool { + position: absolute; + font-size: 1px; + display: block; + height: 12px; + padding: 0; + top: 50%; + margin-top: -6px; + overflow: hidden; +} +.tabs li a.tabs-close { + width: 12px; + right: 5px; + opacity: 0.6; + filter: alpha(opacity=60); +} +.tabs-p-tool { + right: 16px; +} +.tabs-p-tool a { + display: inline-block; + font-size: 1px; + width: 12px; + height: 12px; + margin: 0; + opacity: 0.6; + filter: alpha(opacity=60); +} +.tabs li a:hover.tabs-close, +.tabs-p-tool a:hover { + opacity: 1; + filter: alpha(opacity=100); + cursor: hand; + cursor: pointer; +} +.tabs-with-icon { + padding-left: 18px; +} +.tabs-icon { + position: absolute; + width: 16px; + height: 16px; + left: 10px; + top: 50%; + margin-top: -8px; +} +.tabs-title { + font-size: 12px; +} +.tabs-closable { + padding-right: 8px; +} +.tabs-panels { + margin: 0px; + padding: 0px; + border-width: 1px; + border-style: solid; + border-top-width: 0; + overflow: hidden; +} +.tabs-header-bottom { + border-width: 0 1px 1px 1px; + padding: 0 0 2px 0; +} +.tabs-header-bottom .tabs { + border-width: 1px 0 0 0; +} +.tabs-header-bottom .tabs li { + margin: -1px 4px 0 0; +} +.tabs-header-bottom .tabs li a.tabs-inner { + -moz-border-radius: 0 0 5px 5px; + -webkit-border-radius: 0 0 5px 5px; + border-radius: 0 0 5px 5px; +} +.tabs-header-bottom .tabs-tool { + top: 0; +} +.tabs-header-bottom .tabs-scroller-left, +.tabs-header-bottom .tabs-scroller-right { + top: 0; + bottom: auto; +} +.tabs-panels-top { + border-width: 1px 1px 0 1px; +} +.tabs-header-left { + float: left; + border-width: 1px 0 1px 1px; + padding: 0; +} +.tabs-header-right { + float: right; + border-width: 1px 1px 1px 0; + padding: 0; +} +.tabs-header-left .tabs-wrap, +.tabs-header-right .tabs-wrap { + height: 100%; +} +.tabs-header-left .tabs { + height: 100%; + padding: 4px 0 0 2px; + border-width: 0 1px 0 0; +} +.tabs-header-right .tabs { + height: 100%; + padding: 4px 2px 0 0; + border-width: 0 0 0 1px; +} +.tabs-header-left .tabs li, +.tabs-header-right .tabs li { + display: block; + width: 100%; + position: relative; +} +.tabs-header-left .tabs li { + left: auto; + right: 0; + margin: 0 -1px 4px 0; + float: right; +} +.tabs-header-right .tabs li { + left: 0; + right: auto; + margin: 0 0 4px -1px; + float: left; +} +.tabs-justified li a.tabs-inner { + padding-left: 0; + padding-right: 0; +} +.tabs-header-left .tabs li a.tabs-inner { + display: block; + text-align: left; + padding-left: 10px; + padding-right: 10px; + -moz-border-radius: 5px 0 0 5px; + -webkit-border-radius: 5px 0 0 5px; + border-radius: 5px 0 0 5px; +} +.tabs-header-right .tabs li a.tabs-inner { + display: block; + text-align: left; + padding-left: 10px; + padding-right: 10px; + -moz-border-radius: 0 5px 5px 0; + -webkit-border-radius: 0 5px 5px 0; + border-radius: 0 5px 5px 0; +} +.tabs-panels-right { + float: right; + border-width: 1px 1px 1px 0; +} +.tabs-panels-left { + float: left; + border-width: 1px 0 1px 1px; +} +.tabs-header-noborder, +.tabs-panels-noborder { + border: 0px; +} +.tabs-header-plain { + border: 0px; + background: transparent; +} +.tabs-pill { + padding-bottom: 3px; +} +.tabs-header-bottom .tabs-pill { + padding-top: 3px; + padding-bottom: 0; +} +.tabs-header-left .tabs-pill { + padding-right: 3px; +} +.tabs-header-right .tabs-pill { + padding-left: 3px; +} +.tabs-header .tabs-pill li a.tabs-inner { + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.tabs-header-narrow, +.tabs-header-narrow .tabs-narrow { + padding: 0; +} +.tabs-narrow li, +.tabs-header-bottom .tabs-narrow li { + margin-left: 0; + margin-right: -1px; +} +.tabs-narrow li.tabs-last, +.tabs-header-bottom .tabs-narrow li.tabs-last { + margin-right: 0; +} +.tabs-header-left .tabs-narrow, +.tabs-header-right .tabs-narrow { + padding-top: 0; +} +.tabs-header-left .tabs-narrow li { + margin-bottom: -1px; + margin-right: -1px; +} +.tabs-header-left .tabs-narrow li.tabs-last, +.tabs-header-right .tabs-narrow li.tabs-last { + margin-bottom: 0; +} +.tabs-header-right .tabs-narrow li { + margin-bottom: -1px; + margin-left: -1px; +} +.tabs-scroller-left { + background: #3d3d3d url('images/tabs_icons.png') no-repeat 1px center; +} +.tabs-scroller-right { + background: #3d3d3d url('images/tabs_icons.png') no-repeat -15px center; +} +.tabs li a.tabs-close { + background: url('images/tabs_icons.png') no-repeat -34px center; +} +.tabs li a.tabs-inner:hover { + background: #777; + color: #fff; + filter: none; +} +.tabs li.tabs-selected a.tabs-inner { + background-color: #666; + color: #fff; + background: -webkit-linear-gradient(top,#454545 0,#666 100%); + background: -moz-linear-gradient(top,#454545 0,#666 100%); + background: -o-linear-gradient(top,#454545 0,#666 100%); + background: linear-gradient(to bottom,#454545 0,#666 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#454545,endColorstr=#666,GradientType=0); +} +.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { + background: -webkit-linear-gradient(top,#666 0,#454545 100%); + background: -moz-linear-gradient(top,#666 0,#454545 100%); + background: -o-linear-gradient(top,#666 0,#454545 100%); + background: linear-gradient(to bottom,#666 0,#454545 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#666,endColorstr=#454545,GradientType=0); +} +.tabs-header-left .tabs li.tabs-selected a.tabs-inner { + background: -webkit-linear-gradient(left,#454545 0,#666 100%); + background: -moz-linear-gradient(left,#454545 0,#666 100%); + background: -o-linear-gradient(left,#454545 0,#666 100%); + background: linear-gradient(to right,#454545 0,#666 100%); + background-repeat: repeat-y; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#454545,endColorstr=#666,GradientType=1); +} +.tabs-header-right .tabs li.tabs-selected a.tabs-inner { + background: -webkit-linear-gradient(left,#666 0,#454545 100%); + background: -moz-linear-gradient(left,#666 0,#454545 100%); + background: -o-linear-gradient(left,#666 0,#454545 100%); + background: linear-gradient(to right,#666 0,#454545 100%); + background-repeat: repeat-y; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#666,endColorstr=#454545,GradientType=1); +} +.tabs li a.tabs-inner { + color: #fff; + background-color: #3d3d3d; + background: -webkit-linear-gradient(top,#454545 0,#383838 100%); + background: -moz-linear-gradient(top,#454545 0,#383838 100%); + background: -o-linear-gradient(top,#454545 0,#383838 100%); + background: linear-gradient(to bottom,#454545 0,#383838 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#454545,endColorstr=#383838,GradientType=0); +} +.tabs-header, +.tabs-tool { + background-color: #3d3d3d; +} +.tabs-header-plain { + background: transparent; +} +.tabs-header, +.tabs-scroller-left, +.tabs-scroller-right, +.tabs-tool, +.tabs, +.tabs-panels, +.tabs li a.tabs-inner, +.tabs li.tabs-selected a.tabs-inner, +.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner, +.tabs-header-left .tabs li.tabs-selected a.tabs-inner, +.tabs-header-right .tabs li.tabs-selected a.tabs-inner { + border-color: #000; +} +.tabs-p-tool a:hover, +.tabs li a:hover.tabs-close, +.tabs-scroller-over { + background-color: #777; +} +.tabs li.tabs-selected a.tabs-inner { + border-bottom: 1px solid #666; +} +.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { + border-top: 1px solid #666; +} +.tabs-header-left .tabs li.tabs-selected a.tabs-inner { + border-right: 1px solid #666; +} +.tabs-header-right .tabs li.tabs-selected a.tabs-inner { + border-left: 1px solid #666; +} +.tabs-header .tabs-pill li.tabs-selected a.tabs-inner { + background: #0052A3; + color: #fff; + filter: none; + border-color: #000; +} diff --git a/src/main/webapp/static/easyUI/themes/black/tagbox.css b/src/main/webapp/static/easyUI/themes/black/tagbox.css new file mode 100644 index 0000000000000000000000000000000000000000..e08ec87b4e714581c489c0cde8dd06a83a24a69a --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/black/tagbox.css @@ -0,0 +1,44 @@ +.tagbox { + cursor: text; +} +.tagbox .textbox-text { + float: left; +} +.tagbox-label { + position: relative; + display: block; + margin: 4px 0 0 4px; + padding: 0 20px 0 4px; + float: left; + vertical-align: top; + text-decoration: none; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; + background: #777; + color: #fff; +} +.tagbox-remove { + background: url('images/tagbox_icons.png') no-repeat -16px center; + position: absolute; + display: block; + width: 16px; + height: 16px; + right: 2px; + top: 50%; + margin-top: -8px; + opacity: 0.6; + filter: alpha(opacity=60); +} +.tagbox-remove:hover { + opacity: 1; + filter: alpha(opacity=100); +} +.textbox-disabled .tagbox-label { + cursor: default; +} +.textbox-disabled .tagbox-remove:hover { + cursor: default; + opacity: 0.6; + filter: alpha(opacity=60); +} diff --git a/src/main/webapp/static/easyUI/themes/black/textbox.css b/src/main/webapp/static/easyUI/themes/black/textbox.css new file mode 100644 index 0000000000000000000000000000000000000000..f93ad88ff3af1d6bf96c877f50a9fe8059c96bd4 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/black/textbox.css @@ -0,0 +1,139 @@ +.textbox { + position: relative; + border: 1px solid #000; + background-color: #fff; + vertical-align: middle; + display: inline-block; + overflow: hidden; + white-space: nowrap; + margin: 0; + padding: 0; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.textbox .textbox-text { + font-size: 12px; + border: 0; + margin: 0; + padding: 4px; + white-space: normal; + vertical-align: top; + outline-style: none; + resize: none; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.textbox .textbox-text::-ms-clear, +.textbox .textbox-text::-ms-reveal { + display: none; +} +.textbox textarea.textbox-text { + white-space: pre-wrap; +} +.textbox .textbox-prompt { + font-size: 12px; + color: #aaa; +} +.textbox .textbox-bgicon { + background-position: 3px center; + padding-left: 21px; +} +.textbox .textbox-button, +.textbox .textbox-button:hover { + position: absolute; + top: 0; + padding: 0; + vertical-align: top; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.textbox .textbox-button-right, +.textbox .textbox-button-right:hover { + right: 0; + border-width: 0 0 0 1px; +} +.textbox .textbox-button-left, +.textbox .textbox-button-left:hover { + left: 0; + border-width: 0 1px 0 0; +} +.textbox .textbox-button-top, +.textbox .textbox-button-top:hover { + left: 0; + border-width: 0 0 1px 0; +} +.textbox .textbox-button-bottom, +.textbox .textbox-button-bottom:hover { + top: auto; + bottom: 0; + left: 0; + border-width: 1px 0 0 0; +} +.textbox-addon { + position: absolute; + top: 0; +} +.textbox-label { + display: inline-block; + width: 80px; + height: 22px; + line-height: 22px; + vertical-align: middle; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + margin: 0; + padding-right: 5px; +} +.textbox-label-after { + padding-left: 5px; + padding-right: 0; +} +.textbox-label-top { + display: block; + width: auto; + padding: 0; +} +.textbox-disabled, +.textbox-label-disabled { + opacity: 0.6; + filter: alpha(opacity=60); +} +.textbox-icon { + display: inline-block; + width: 18px; + height: 20px; + overflow: hidden; + vertical-align: top; + background-position: center center; + cursor: pointer; + opacity: 0.6; + filter: alpha(opacity=60); + text-decoration: none; + outline-style: none; +} +.textbox-icon-disabled, +.textbox-icon-readonly { + cursor: default; +} +.textbox-icon:hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.textbox-icon-disabled:hover { + opacity: 0.6; + filter: alpha(opacity=60); +} +.textbox-focused { + border-color: #000000; + -moz-box-shadow: 0 0 3px 0 #000; + -webkit-box-shadow: 0 0 3px 0 #000; + box-shadow: 0 0 3px 0 #000; +} +.textbox-invalid { + border-color: #ffa8a8; + background-color: #fff3f3; +} diff --git a/src/main/webapp/static/easyUI/themes/black/tooltip.css b/src/main/webapp/static/easyUI/themes/black/tooltip.css new file mode 100644 index 0000000000000000000000000000000000000000..391fd95aa347c5262582e5b965e0d1add4892e11 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/black/tooltip.css @@ -0,0 +1,103 @@ +.tooltip { + position: absolute; + display: none; + z-index: 9900000; + outline: none; + opacity: 1; + filter: alpha(opacity=100); + padding: 5px; + border-width: 1px; + border-style: solid; + border-radius: 5px; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.tooltip-content { + font-size: 12px; +} +.tooltip-arrow-outer, +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; + line-height: 0; + font-size: 0; + border-style: solid; + border-width: 6px; + border-color: transparent; + _border-color: tomato; + _filter: chroma(color=tomato); +} +.tooltip-arrow { + display: none \9; +} +.tooltip-right .tooltip-arrow-outer { + left: 0; + top: 50%; + margin: -6px 0 0 -13px; +} +.tooltip-right .tooltip-arrow { + left: 0; + top: 50%; + margin: -6px 0 0 -12px; +} +.tooltip-left .tooltip-arrow-outer { + right: 0; + top: 50%; + margin: -6px -13px 0 0; +} +.tooltip-left .tooltip-arrow { + right: 0; + top: 50%; + margin: -6px -12px 0 0; +} +.tooltip-top .tooltip-arrow-outer { + bottom: 0; + left: 50%; + margin: 0 0 -13px -6px; +} +.tooltip-top .tooltip-arrow { + bottom: 0; + left: 50%; + margin: 0 0 -12px -6px; +} +.tooltip-bottom .tooltip-arrow-outer { + top: 0; + left: 50%; + margin: -13px 0 0 -6px; +} +.tooltip-bottom .tooltip-arrow { + top: 0; + left: 50%; + margin: -12px 0 0 -6px; +} +.tooltip { + background-color: #666; + border-color: #000; + color: #fff; +} +.tooltip-right .tooltip-arrow-outer { + border-right-color: #000; +} +.tooltip-right .tooltip-arrow { + border-right-color: #666; +} +.tooltip-left .tooltip-arrow-outer { + border-left-color: #000; +} +.tooltip-left .tooltip-arrow { + border-left-color: #666; +} +.tooltip-top .tooltip-arrow-outer { + border-top-color: #000; +} +.tooltip-top .tooltip-arrow { + border-top-color: #666; +} +.tooltip-bottom .tooltip-arrow-outer { + border-bottom-color: #000; +} +.tooltip-bottom .tooltip-arrow { + border-bottom-color: #666; +} diff --git a/src/main/webapp/static/easyUI/themes/black/tree.css b/src/main/webapp/static/easyUI/themes/black/tree.css new file mode 100644 index 0000000000000000000000000000000000000000..88dfe0bded5b50d8d7e748b0ca947ea9654f981c --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/black/tree.css @@ -0,0 +1,161 @@ +.tree { + margin: 0; + padding: 0; + list-style-type: none; +} +.tree li { + white-space: nowrap; +} +.tree li ul { + list-style-type: none; + margin: 0; + padding: 0; +} +.tree-node { + height: 18px; + white-space: nowrap; + cursor: pointer; +} +.tree-hit { + cursor: pointer; +} +.tree-expanded, +.tree-collapsed, +.tree-folder, +.tree-file, +.tree-checkbox, +.tree-indent { + display: inline-block; + width: 16px; + height: 18px; + vertical-align: top; + overflow: hidden; +} +.tree-expanded { + background: url('images/tree_icons.png') no-repeat -18px 0px; +} +.tree-expanded-hover { + background: url('images/tree_icons.png') no-repeat -50px 0px; +} +.tree-collapsed { + background: url('images/tree_icons.png') no-repeat 0px 0px; +} +.tree-collapsed-hover { + background: url('images/tree_icons.png') no-repeat -32px 0px; +} +.tree-lines .tree-expanded, +.tree-lines .tree-root-first .tree-expanded { + background: url('images/tree_icons.png') no-repeat -144px 0; +} +.tree-lines .tree-collapsed, +.tree-lines .tree-root-first .tree-collapsed { + background: url('images/tree_icons.png') no-repeat -128px 0; +} +.tree-lines .tree-node-last .tree-expanded, +.tree-lines .tree-root-one .tree-expanded { + background: url('images/tree_icons.png') no-repeat -80px 0; +} +.tree-lines .tree-node-last .tree-collapsed, +.tree-lines .tree-root-one .tree-collapsed { + background: url('images/tree_icons.png') no-repeat -64px 0; +} +.tree-line { + background: url('images/tree_icons.png') no-repeat -176px 0; +} +.tree-join { + background: url('images/tree_icons.png') no-repeat -192px 0; +} +.tree-joinbottom { + background: url('images/tree_icons.png') no-repeat -160px 0; +} +.tree-folder { + background: url('images/tree_icons.png') no-repeat -208px 0; +} +.tree-folder-open { + background: url('images/tree_icons.png') no-repeat -224px 0; +} +.tree-file { + background: url('images/tree_icons.png') no-repeat -240px 0; +} +.tree-loading { + background: url('images/loading.gif') no-repeat center center; +} +.tree-checkbox0 { + background: url('images/tree_icons.png') no-repeat -208px -18px; +} +.tree-checkbox1 { + background: url('images/tree_icons.png') no-repeat -224px -18px; +} +.tree-checkbox2 { + background: url('images/tree_icons.png') no-repeat -240px -18px; +} +.tree-title { + font-size: 12px; + display: inline-block; + text-decoration: none; + vertical-align: top; + white-space: nowrap; + padding: 0 2px; + height: 18px; + line-height: 18px; +} +.tree-node-proxy { + font-size: 12px; + line-height: 20px; + padding: 0 2px 0 20px; + border-width: 1px; + border-style: solid; + z-index: 9900000; +} +.tree-dnd-icon { + display: inline-block; + position: absolute; + width: 16px; + height: 18px; + left: 2px; + top: 50%; + margin-top: -9px; +} +.tree-dnd-yes { + background: url('images/tree_icons.png') no-repeat -256px 0; +} +.tree-dnd-no { + background: url('images/tree_icons.png') no-repeat -256px -18px; +} +.tree-node-top { + border-top: 1px dotted red; +} +.tree-node-bottom { + border-bottom: 1px dotted red; +} +.tree-node-append .tree-title { + border: 1px dotted red; +} +.tree-editor { + border: 1px solid #000; + font-size: 12px; + line-height: 16px; + padding: 0 4px; + margin: 0; + width: 80px; + outline-style: none; + vertical-align: top; + position: absolute; + top: 0; +} +.tree-node-proxy { + background-color: #666; + color: #fff; + border-color: #000; +} +.tree-node-hover { + background: #777; + color: #fff; +} +.tree-node-selected { + background: #0052A3; + color: #fff; +} +.tree-node-hidden { + display: none; +} diff --git a/src/main/webapp/static/easyUI/themes/black/validatebox.css b/src/main/webapp/static/easyUI/themes/black/validatebox.css new file mode 100644 index 0000000000000000000000000000000000000000..1fc3ad64e4f79ba1b3d4e715f3dd0cd8ae0ac3fc --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/black/validatebox.css @@ -0,0 +1,5 @@ +.validatebox-invalid { + border-color: #ffa8a8; + background-color: #fff3f3; + color: #000; +} diff --git a/src/main/webapp/static/easyUI/themes/black/window.css b/src/main/webapp/static/easyUI/themes/black/window.css new file mode 100644 index 0000000000000000000000000000000000000000..37de72d24fed78a911cc4cc9ffb829f50f80d4c0 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/black/window.css @@ -0,0 +1,183 @@ +.window { + overflow: hidden; + padding: 5px; + border-width: 1px; + border-style: solid; +} +.window .window-header { + background: transparent; + padding: 0px 0px 6px 0px; +} +.window .window-body { + border-width: 1px; + border-style: solid; + border-top-width: 0px; +} +.window .window-body-noheader { + border-top-width: 1px; +} +.window .panel-body-nobottom { + border-bottom-width: 0; +} +.window .window-header .panel-icon, +.window .window-header .panel-tool { + top: 50%; + margin-top: -11px; +} +.window .window-header .panel-icon { + left: 1px; +} +.window .window-header .panel-tool { + right: 1px; +} +.window .window-header .panel-with-icon { + padding-left: 18px; +} +.window-proxy { + position: absolute; + overflow: hidden; +} +.window-proxy-mask { + position: absolute; + filter: alpha(opacity=5); + opacity: 0.05; +} +.window-mask { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + filter: alpha(opacity=40); + opacity: 0.40; + font-size: 1px; + overflow: hidden; +} +.window, +.window-shadow { + position: absolute; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.window-shadow { + background: #777; + -moz-box-shadow: 2px 2px 3px #787878; + -webkit-box-shadow: 2px 2px 3px #787878; + box-shadow: 2px 2px 3px #787878; + filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); +} +.window, +.window .window-body { + border-color: #000; +} +.window { + background-color: #3d3d3d; + background: -webkit-linear-gradient(top,#454545 0,#383838 20%); + background: -moz-linear-gradient(top,#454545 0,#383838 20%); + background: -o-linear-gradient(top,#454545 0,#383838 20%); + background: linear-gradient(to bottom,#454545 0,#383838 20%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#454545,endColorstr=#383838,GradientType=0); +} +.window-proxy { + border: 1px dashed #000; +} +.window-proxy-mask, +.window-mask { + background: #000; +} +.window .panel-footer { + border: 1px solid #000; + position: relative; + top: -1px; +} +.window-thinborder { + padding: 0; +} +.window-thinborder .window-header { + padding: 5px 5px 6px 5px; +} +.window-thinborder .window-body { + border-width: 0px; +} +.window-thinborder .window-header .panel-icon, +.window-thinborder .window-header .panel-tool { + margin-top: -9px; + margin-left: 5px; + margin-right: 5px; +} +.window-noborder { + border: 0; +} +.window.panel-hleft .window-header { + padding: 0 6px 0 0; +} +.window.panel-hright .window-header { + padding: 0 0 0 6px; +} +.window.panel-hleft>.panel-header .panel-title { + top: auto; + left: 16px; +} +.window.panel-hright>.panel-header .panel-title { + top: auto; + right: 16px; +} +.window.panel-hleft>.panel-header .panel-title-up, +.window.panel-hright>.panel-header .panel-title-up { + bottom: 0; +} +.window.panel-hleft .window-body { + border-width: 1px 1px 1px 0; +} +.window.panel-hright .window-body { + border-width: 1px 0 1px 1px; +} +.window.panel-hleft .window-header .panel-icon { + top: 1px; + margin-top: 0; + left: 0; +} +.window.panel-hright .window-header .panel-icon { + top: 1px; + margin-top: 0; + left: auto; + right: 1px; +} +.window.panel-hleft .window-header .panel-tool, +.window.panel-hright .window-header .panel-tool { + margin-top: 0; + top: auto; + bottom: 1px; + right: auto; + margin-right: 0; + left: 50%; + margin-left: -11px; +} +.window.panel-hright .window-header .panel-tool { + left: auto; + right: 1px; +} +.window-thinborder.panel-hleft .window-header { + padding: 5px 6px 5px 5px; +} +.window-thinborder.panel-hright .window-header { + padding: 5px 5px 5px 6px; +} +.window-thinborder.panel-hleft>.panel-header .panel-title { + left: 21px; +} +.window-thinborder.panel-hleft>.panel-header .panel-title-up, +.window-thinborder.panel-hright>.panel-header .panel-title-up { + bottom: 5px; +} +.window-thinborder.panel-hleft .window-header .panel-icon, +.window-thinborder.panel-hright .window-header .panel-icon { + margin-top: 5px; +} +.window-thinborder.panel-hleft .window-header .panel-tool, +.window-thinborder.panel-hright .window-header .panel-tool { + left: 16px; + bottom: 5px; +} diff --git a/src/main/webapp/static/easyUI/themes/bootstrap/accordion.css b/src/main/webapp/static/easyUI/themes/bootstrap/accordion.css new file mode 100644 index 0000000000000000000000000000000000000000..9d268c023f0ed2418f9d9b17dbc51192df014514 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/bootstrap/accordion.css @@ -0,0 +1,89 @@ +.accordion { + overflow: hidden; + border-width: 1px; + border-style: solid; +} +.accordion .accordion-header { + border-width: 0 0 1px; + cursor: pointer; +} +.accordion .accordion-body { + border-width: 0 0 1px; +} +.accordion-noborder { + border-width: 0; +} +.accordion-noborder .accordion-header { + border-width: 0 0 1px; +} +.accordion-noborder .accordion-body { + border-width: 0 0 1px; +} +.accordion-collapse { + background: url('images/accordion_arrows.png') no-repeat 0 0; +} +.accordion-expand { + background: url('images/accordion_arrows.png') no-repeat -16px 0; +} +.accordion { + background: #ffffff; + border-color: #D4D4D4; +} +.accordion .accordion-header { + background: #F2F2F2; + filter: none; +} +.accordion .accordion-header-selected { + background: #0081c2; +} +.accordion .accordion-header-selected .panel-title { + color: #fff; +} +.accordion .panel-last > .accordion-header { + border-bottom-color: #F2F2F2; +} +.accordion .panel-last > .accordion-body { + border-bottom-color: #ffffff; +} +.accordion .panel-last > .accordion-header-selected, +.accordion .panel-last > .accordion-header-border { + border-bottom-color: #D4D4D4; +} +.accordion> .panel-hleft { + float: left; +} +.accordion> .panel-hleft>.panel-header { + border-width: 0 1px 0 0; +} +.accordion> .panel-hleft> .panel-body { + border-width: 0 1px 0 0; +} +.accordion> .panel-hleft.panel-last > .accordion-header { + border-right-color: #F2F2F2; +} +.accordion> .panel-hleft.panel-last > .accordion-body { + border-right-color: #ffffff; +} +.accordion> .panel-hleft.panel-last > .accordion-header-selected, +.accordion> .panel-hleft.panel-last > .accordion-header-border { + border-right-color: #D4D4D4; +} +.accordion> .panel-hright { + float: right; +} +.accordion> .panel-hright>.panel-header { + border-width: 0 0 0 1px; +} +.accordion> .panel-hright> .panel-body { + border-width: 0 0 0 1px; +} +.accordion> .panel-hright.panel-last > .accordion-header { + border-left-color: #F2F2F2; +} +.accordion> .panel-hright.panel-last > .accordion-body { + border-left-color: #ffffff; +} +.accordion> .panel-hright.panel-last > .accordion-header-selected, +.accordion> .panel-hright.panel-last > .accordion-header-border { + border-left-color: #D4D4D4; +} diff --git a/src/main/webapp/static/easyUI/themes/bootstrap/calendar.css b/src/main/webapp/static/easyUI/themes/bootstrap/calendar.css new file mode 100644 index 0000000000000000000000000000000000000000..ae1a8aca6d9069c6c3a9be1131fa95f295659cfd --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/bootstrap/calendar.css @@ -0,0 +1,202 @@ +.calendar { + border-width: 1px; + border-style: solid; + padding: 1px; + overflow: hidden; +} +.calendar table { + table-layout: fixed; + border-collapse: separate; + font-size: 12px; + width: 100%; + height: 100%; +} +.calendar table td, +.calendar table th { + font-size: 12px; +} +.calendar-noborder { + border: 0; +} +.calendar-header { + position: relative; + height: 22px; +} +.calendar-title { + text-align: center; + height: 22px; +} +.calendar-title span { + position: relative; + display: inline-block; + top: 2px; + padding: 0 3px; + height: 18px; + line-height: 18px; + font-size: 12px; + cursor: pointer; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-prevmonth, +.calendar-nextmonth, +.calendar-prevyear, +.calendar-nextyear { + position: absolute; + top: 50%; + margin-top: -7px; + width: 14px; + height: 14px; + cursor: pointer; + font-size: 1px; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-prevmonth { + left: 20px; + background: url('images/calendar_arrows.png') no-repeat -18px -2px; +} +.calendar-nextmonth { + right: 20px; + background: url('images/calendar_arrows.png') no-repeat -34px -2px; +} +.calendar-prevyear { + left: 3px; + background: url('images/calendar_arrows.png') no-repeat -1px -2px; +} +.calendar-nextyear { + right: 3px; + background: url('images/calendar_arrows.png') no-repeat -49px -2px; +} +.calendar-body { + position: relative; +} +.calendar-body th, +.calendar-body td { + text-align: center; +} +.calendar-day { + border: 0; + padding: 1px; + cursor: pointer; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-other-month { + opacity: 0.3; + filter: alpha(opacity=30); +} +.calendar-disabled { + opacity: 0.6; + filter: alpha(opacity=60); + cursor: default; +} +.calendar-menu { + position: absolute; + top: 0; + left: 0; + width: 180px; + height: 150px; + padding: 5px; + font-size: 12px; + display: none; + overflow: hidden; +} +.calendar-menu-year-inner { + text-align: center; + padding-bottom: 5px; +} +.calendar-menu-year { + width: 50px; + text-align: center; + border-width: 1px; + border-style: solid; + outline-style: none; + resize: none; + margin: 0; + padding: 2px; + font-weight: bold; + font-size: 12px; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-menu-prev, +.calendar-menu-next { + display: inline-block; + width: 21px; + height: 21px; + vertical-align: top; + cursor: pointer; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-menu-prev { + margin-right: 10px; + background: url('images/calendar_arrows.png') no-repeat 2px 2px; +} +.calendar-menu-next { + margin-left: 10px; + background: url('images/calendar_arrows.png') no-repeat -45px 2px; +} +.calendar-menu-month { + text-align: center; + cursor: pointer; + font-weight: bold; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-body th, +.calendar-menu-month { + color: #808080; +} +.calendar-day { + color: #333; +} +.calendar-sunday { + color: #CC2222; +} +.calendar-saturday { + color: #00ee00; +} +.calendar-today { + color: #0000ff; +} +.calendar-menu-year { + border-color: #D4D4D4; +} +.calendar { + border-color: #D4D4D4; +} +.calendar-header { + background: #F2F2F2; +} +.calendar-body, +.calendar-menu { + background: #ffffff; +} +.calendar-body th { + background: #F5F5F5; + padding: 2px 0; +} +.calendar-hover, +.calendar-nav-hover, +.calendar-menu-hover { + background-color: #e6e6e6; + color: #00438a; +} +.calendar-hover { + border: 1px solid #ddd; + padding: 0; +} +.calendar-selected { + background-color: #0081c2; + color: #fff; + border: 1px solid #0070a9; + padding: 0; +} diff --git a/src/main/webapp/static/easyUI/themes/bootstrap/combo.css b/src/main/webapp/static/easyUI/themes/bootstrap/combo.css new file mode 100644 index 0000000000000000000000000000000000000000..fc9030d8b5ca57be17bae5a6e96d5cad72d8005e --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/bootstrap/combo.css @@ -0,0 +1,35 @@ +.combo-arrow { + width: 18px; + height: 20px; + overflow: hidden; + display: inline-block; + vertical-align: top; + cursor: pointer; + opacity: 0.6; + filter: alpha(opacity=60); +} +.combo-arrow-hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.combo-panel { + overflow: auto; +} +.combo-arrow { + background: url('images/combo_arrow.png') no-repeat center center; +} +.combo-panel { + background-color: #ffffff; +} +.combo-arrow { + background-color: #F2F2F2; +} +.combo-arrow-hover { + background-color: #e6e6e6; +} +.combo-arrow:hover { + background-color: #e6e6e6; +} +.combo .textbox-icon-disabled:hover { + cursor: default; +} diff --git a/src/main/webapp/static/easyUI/themes/bootstrap/combobox.css b/src/main/webapp/static/easyUI/themes/bootstrap/combobox.css new file mode 100644 index 0000000000000000000000000000000000000000..fe74425c504c75b57ad24efb26ac7070826f6311 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/bootstrap/combobox.css @@ -0,0 +1,39 @@ +.combobox-item, +.combobox-group, +.combobox-stick { + font-size: 12px; + padding: 3px; +} +.combobox-item-disabled { + opacity: 0.5; + filter: alpha(opacity=50); +} +.combobox-gitem { + padding-left: 10px; +} +.combobox-group, +.combobox-stick { + font-weight: bold; +} +.combobox-stick { + position: absolute; + top: 1px; + left: 1px; + right: 1px; + background: inherit; +} +.combobox-item-hover { + background-color: #e6e6e6; + color: #00438a; +} +.combobox-item-selected { + background-color: #0081c2; + color: #fff; +} +.combobox-icon { + display: inline-block; + width: 16px; + height: 16px; + vertical-align: middle; + margin-right: 2px; +} diff --git a/src/main/webapp/static/easyUI/themes/bootstrap/datagrid.css b/src/main/webapp/static/easyUI/themes/bootstrap/datagrid.css new file mode 100644 index 0000000000000000000000000000000000000000..806bd6a2a3ca97081d9dbb66b50ec56b713d2abc --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/bootstrap/datagrid.css @@ -0,0 +1,288 @@ +.datagrid .panel-body { + overflow: hidden; + position: relative; +} +.datagrid-view { + position: relative; + overflow: hidden; +} +.datagrid-view1, +.datagrid-view2 { + position: absolute; + overflow: hidden; + top: 0; +} +.datagrid-view1 { + left: 0; +} +.datagrid-view2 { + right: 0; +} +.datagrid-mask { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + opacity: 0.3; + filter: alpha(opacity=30); + display: none; +} +.datagrid-mask-msg { + position: absolute; + top: 50%; + margin-top: -20px; + padding: 10px 5px 10px 30px; + width: auto; + height: 16px; + border-width: 2px; + border-style: solid; + display: none; +} +.datagrid-empty { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 25px; + line-height: 25px; + text-align: center; +} +.datagrid-sort-icon { + padding: 0; + display: none; +} +.datagrid-toolbar { + height: auto; + padding: 1px 2px; + border-width: 0 0 1px 0; + border-style: solid; +} +.datagrid-btn-separator { + float: left; + height: 24px; + border-left: 1px solid #ccc; + border-right: 1px solid #fff; + margin: 2px 1px; +} +.datagrid .datagrid-pager { + display: block; + margin: 0; + border-width: 1px 0 0 0; + border-style: solid; +} +.datagrid .datagrid-pager-top { + border-width: 0 0 1px 0; +} +.datagrid-header { + overflow: hidden; + cursor: default; + border-width: 0 0 1px 0; + border-style: solid; +} +.datagrid-header-inner { + float: left; + width: 10000px; +} +.datagrid-header-row, +.datagrid-row { + height: 25px; +} +.datagrid-header td, +.datagrid-body td, +.datagrid-footer td { + border-width: 0 1px 1px 0; + border-style: dotted; + margin: 0; + padding: 0; +} +.datagrid-cell, +.datagrid-cell-group, +.datagrid-header-rownumber, +.datagrid-cell-rownumber { + margin: 0; + padding: 0 4px; + white-space: nowrap; + word-wrap: normal; + overflow: hidden; + height: 18px; + line-height: 18px; + font-size: 12px; +} +.datagrid-header .datagrid-cell { + height: auto; +} +.datagrid-header .datagrid-cell span { + font-size: 12px; +} +.datagrid-cell-group { + text-align: center; + text-overflow: ellipsis; +} +.datagrid-header-rownumber, +.datagrid-cell-rownumber { + width: 30px; + text-align: center; + margin: 0; + padding: 0; +} +.datagrid-body { + margin: 0; + padding: 0; + overflow: auto; + zoom: 1; +} +.datagrid-view1 .datagrid-body-inner { + padding-bottom: 20px; +} +.datagrid-view1 .datagrid-body { + overflow: hidden; +} +.datagrid-footer { + overflow: hidden; +} +.datagrid-footer-inner { + border-width: 1px 0 0 0; + border-style: solid; + width: 10000px; + float: left; +} +.datagrid-row-editing .datagrid-cell { + height: auto; +} +.datagrid-header-check, +.datagrid-cell-check { + padding: 0; + width: 27px; + height: 18px; + font-size: 1px; + text-align: center; + overflow: hidden; +} +.datagrid-header-check input, +.datagrid-cell-check input { + margin: 0; + padding: 0; + width: 15px; + height: 18px; +} +.datagrid-resize-proxy { + position: absolute; + width: 1px; + height: 10000px; + top: 0; + cursor: e-resize; + display: none; +} +.datagrid-body .datagrid-editable { + margin: 0; + padding: 0; +} +.datagrid-body .datagrid-editable table { + width: 100%; + height: 100%; +} +.datagrid-body .datagrid-editable td { + border: 0; + margin: 0; + padding: 0; +} +.datagrid-view .datagrid-editable-input { + margin: 0; + padding: 2px 4px; + border: 1px solid #D4D4D4; + font-size: 12px; + outline-style: none; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.datagrid-view .validatebox-invalid { + border-color: #ffa8a8; +} +.datagrid-sort .datagrid-sort-icon { + display: inline; + padding: 0 13px 0 0; + background: url('images/datagrid_icons.png') no-repeat -64px center; +} +.datagrid-sort-desc .datagrid-sort-icon { + display: inline; + padding: 0 13px 0 0; + background: url('images/datagrid_icons.png') no-repeat -16px center; +} +.datagrid-sort-asc .datagrid-sort-icon { + display: inline; + padding: 0 13px 0 0; + background: url('images/datagrid_icons.png') no-repeat 0px center; +} +.datagrid-row-collapse { + background: url('images/datagrid_icons.png') no-repeat -48px center; +} +.datagrid-row-expand { + background: url('images/datagrid_icons.png') no-repeat -32px center; +} +.datagrid-mask-msg { + background: #ffffff url('images/loading.gif') no-repeat scroll 5px center; +} +.datagrid-header, +.datagrid-td-rownumber { + background-color: #F2F2F2; + background: -webkit-linear-gradient(top,#ffffff 0,#F2F2F2 100%); + background: -moz-linear-gradient(top,#ffffff 0,#F2F2F2 100%); + background: -o-linear-gradient(top,#ffffff 0,#F2F2F2 100%); + background: linear-gradient(to bottom,#ffffff 0,#F2F2F2 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#F2F2F2,GradientType=0); +} +.datagrid-cell-rownumber { + color: #333; +} +.datagrid-resize-proxy { + background: #bbb; +} +.datagrid-mask { + background: #ccc; +} +.datagrid-mask-msg { + border-color: #D4D4D4; +} +.datagrid-toolbar, +.datagrid-pager { + background: #F5F5F5; +} +.datagrid-header, +.datagrid-toolbar, +.datagrid-pager, +.datagrid-footer-inner { + border-color: #e6e6e6; +} +.datagrid-header td, +.datagrid-body td, +.datagrid-footer td { + border-color: #ccc; +} +.datagrid-htable, +.datagrid-btable, +.datagrid-ftable { + color: #333; + border-collapse: separate; +} +.datagrid-row-alt { + background: #F5F5F5; +} +.datagrid-row-over, +.datagrid-header td.datagrid-header-over { + background: #e6e6e6; + color: #00438a; + cursor: default; +} +.datagrid-row-selected { + background: #0081c2; + color: #fff; +} +.datagrid-row-editing .textbox, +.datagrid-row-editing .textbox-text { + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} diff --git a/src/main/webapp/static/easyUI/themes/bootstrap/datalist.css b/src/main/webapp/static/easyUI/themes/bootstrap/datalist.css new file mode 100644 index 0000000000000000000000000000000000000000..68e8df6f4900a5d9b7a95cc265ad597c382bdaae --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/bootstrap/datalist.css @@ -0,0 +1,95 @@ +.datalist .datagrid-header { + border-width: 0; +} +.datalist .datagrid-group, +.m-list .m-list-group { + height: 25px; + line-height: 25px; + font-weight: bold; + overflow: hidden; + background-color: #F2F2F2; + border-style: solid; + border-width: 0 0 1px 0; + border-color: #ccc; +} +.datalist .datagrid-group-expander { + display: none; +} +.datalist .datagrid-group-title { + padding: 0 4px; +} +.datalist .datagrid-btable { + width: 100%; + table-layout: fixed; +} +.datalist .datagrid-row td { + border-style: solid; + border-left-color: transparent; + border-right-color: transparent; + border-bottom-width: 0; +} +.datalist-lines .datagrid-row td { + border-bottom-width: 1px; +} +.datalist .datagrid-cell, +.m-list li { + width: auto; + height: auto; + padding: 2px 4px; + line-height: 18px; + position: relative; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; +} +.datalist-link, +.m-list li>a { + display: block; + position: relative; + cursor: pointer; + color: #333; + text-decoration: none; + overflow: hidden; + margin: -2px -4px; + padding: 2px 4px; + padding-right: 16px; + line-height: 18px; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; +} +.datalist-link::after, +.m-list li>a::after { + position: absolute; + display: block; + width: 8px; + height: 8px; + content: ''; + right: 6px; + top: 50%; + margin-top: -4px; + border-style: solid; + border-width: 1px 1px 0 0; + -ms-transform: rotate(45deg); + -moz-transform: rotate(45deg); + -webkit-transform: rotate(45deg); + -o-transform: rotate(45deg); + transform: rotate(45deg); +} +.m-list { + margin: 0; + padding: 0; + list-style: none; +} +.m-list li { + border-style: solid; + border-width: 0 0 1px 0; + border-color: #ccc; +} +.m-list li>a:hover { + background: #e6e6e6; + color: #00438a; +} +.m-list .m-list-group { + padding: 0 4px; +} diff --git a/src/main/webapp/static/easyUI/themes/bootstrap/datebox.css b/src/main/webapp/static/easyUI/themes/bootstrap/datebox.css new file mode 100644 index 0000000000000000000000000000000000000000..97e20dd3656960ed6ee3370689a8e177e0cdd217 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/bootstrap/datebox.css @@ -0,0 +1,36 @@ +.datebox-calendar-inner { + height: 180px; +} +.datebox-button { + padding: 0 5px; + text-align: center; +} +.datebox-button a { + line-height: 22px; + font-size: 12px; + font-weight: bold; + text-decoration: none; + opacity: 0.6; + filter: alpha(opacity=60); +} +.datebox-button a:hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.datebox-current, +.datebox-close { + float: left; +} +.datebox-close { + float: right; +} +.datebox .combo-arrow { + background-image: url('images/datebox_arrow.png'); + background-position: center center; +} +.datebox-button { + background-color: #F5F5F5; +} +.datebox-button a { + color: #444; +} diff --git a/src/main/webapp/static/easyUI/themes/bootstrap/dialog.css b/src/main/webapp/static/easyUI/themes/bootstrap/dialog.css new file mode 100644 index 0000000000000000000000000000000000000000..b44497f82e6f068d971c9d3bb1713b2b96d4642f --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/bootstrap/dialog.css @@ -0,0 +1,47 @@ +.dialog-content { + overflow: auto; +} +.dialog-toolbar { + position: relative; + padding: 2px 5px; +} +.dialog-tool-separator { + float: left; + height: 24px; + border-left: 1px solid #ccc; + border-right: 1px solid #fff; + margin: 2px 1px; +} +.dialog-button { + position: relative; + top: -1px; + padding: 5px; + text-align: right; +} +.dialog-button .l-btn { + margin-left: 5px; +} +.dialog-toolbar, +.dialog-button { + background: #F5F5F5; + border-width: 1px; + border-style: solid; +} +.dialog-toolbar { + border-color: #D4D4D4 #D4D4D4 #e6e6e6 #D4D4D4; +} +.dialog-button { + border-color: #e6e6e6 #D4D4D4 #D4D4D4 #D4D4D4; +} +.window-thinborder .dialog-toolbar { + border-left: transparent; + border-right: transparent; + border-top-color: #F5F5F5; +} +.window-thinborder .dialog-button { + top: 0px; + padding: 5px 8px 8px 8px; + border-left: transparent; + border-right: transparent; + border-bottom: transparent; +} diff --git a/src/main/webapp/static/easyUI/themes/bootstrap/easyui.css b/src/main/webapp/static/easyUI/themes/bootstrap/easyui.css new file mode 100644 index 0000000000000000000000000000000000000000..1e6b255161716dc39c10c02693e788e58d0b0853 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/bootstrap/easyui.css @@ -0,0 +1,3239 @@ +.panel { + overflow: hidden; + text-align: left; + margin: 0; + border: 0; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.panel-header, +.panel-body { + border-width: 1px; + border-style: solid; +} +.panel-header { + padding: 5px; + position: relative; +} +.panel-title { + background: url('images/blank.gif') no-repeat; +} +.panel-header-noborder { + border-width: 0 0 1px 0; +} +.panel-body { + overflow: auto; + border-top-width: 0; + padding: 0; +} +.panel-body-noheader { + border-top-width: 1px; +} +.panel-body-noborder { + border-width: 0px; +} +.panel-body-nobottom { + border-bottom-width: 0; +} +.panel-with-icon { + padding-left: 18px; +} +.panel-icon, +.panel-tool { + position: absolute; + top: 50%; + margin-top: -8px; + height: 16px; + overflow: hidden; +} +.panel-icon { + left: 5px; + width: 16px; +} +.panel-tool { + right: 5px; + width: auto; +} +.panel-tool a { + display: inline-block; + width: 16px; + height: 16px; + opacity: 0.6; + filter: alpha(opacity=60); + margin: 0 0 0 2px; + vertical-align: top; +} +.panel-tool a:hover { + opacity: 1; + filter: alpha(opacity=100); + background-color: #e6e6e6; + -moz-border-radius: 3px 3px 3px 3px; + -webkit-border-radius: 3px 3px 3px 3px; + border-radius: 3px 3px 3px 3px; +} +.panel-loading { + padding: 11px 0px 10px 30px; +} +.panel-noscroll { + overflow: hidden; +} +.panel-fit, +.panel-fit body { + height: 100%; + margin: 0; + padding: 0; + border: 0; + overflow: hidden; +} +.panel-loading { + background: url('images/loading.gif') no-repeat 10px 10px; +} +.panel-tool-close { + background: url('images/panel_tools.png') no-repeat -16px 0px; +} +.panel-tool-min { + background: url('images/panel_tools.png') no-repeat 0px 0px; +} +.panel-tool-max { + background: url('images/panel_tools.png') no-repeat 0px -16px; +} +.panel-tool-restore { + background: url('images/panel_tools.png') no-repeat -16px -16px; +} +.panel-tool-collapse { + background: url('images/panel_tools.png') no-repeat -32px 0; +} +.panel-tool-expand { + background: url('images/panel_tools.png') no-repeat -32px -16px; +} +.panel-header, +.panel-body { + border-color: #D4D4D4; +} +.panel-header { + background-color: #F2F2F2; + background: -webkit-linear-gradient(top,#ffffff 0,#F2F2F2 100%); + background: -moz-linear-gradient(top,#ffffff 0,#F2F2F2 100%); + background: -o-linear-gradient(top,#ffffff 0,#F2F2F2 100%); + background: linear-gradient(to bottom,#ffffff 0,#F2F2F2 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#F2F2F2,GradientType=0); +} +.panel-body { + background-color: #ffffff; + color: #333; + font-size: 12px; +} +.panel-title { + font-size: 12px; + font-weight: bold; + color: #777; + height: 16px; + line-height: 16px; +} +.panel-footer { + border: 1px solid #D4D4D4; + overflow: hidden; + background: #F5F5F5; +} +.panel-footer-noborder { + border-width: 1px 0 0 0; +} +.panel-hleft, +.panel-hright { + position: relative; +} +.panel-hleft>.panel-body, +.panel-hright>.panel-body { + position: absolute; +} +.panel-hleft>.panel-header { + float: left; +} +.panel-hright>.panel-header { + float: right; +} +.panel-hleft>.panel-body { + border-top-width: 1px; + border-left-width: 0; +} +.panel-hright>.panel-body { + border-top-width: 1px; + border-right-width: 0; +} +.panel-hleft>.panel-body-nobottom { + border-bottom-width: 1px; + border-right-width: 0; +} +.panel-hright>.panel-body-nobottom { + border-bottom-width: 1px; + border-left-width: 0; +} +.panel-hleft>.panel-footer { + position: absolute; + right: 0; +} +.panel-hright>.panel-footer { + position: absolute; + left: 0; +} +.panel-hleft>.panel-header-noborder { + border-width: 0 1px 0 0; +} +.panel-hright>.panel-header-noborder { + border-width: 0 0 0 1px; +} +.panel-hleft>.panel-body-noborder { + border-width: 0; +} +.panel-hright>.panel-body-noborder { + border-width: 0; +} +.panel-hleft>.panel-body-noheader { + border-left-width: 1px; +} +.panel-hright>.panel-body-noheader { + border-right-width: 1px; +} +.panel-hleft>.panel-footer-noborder { + border-width: 0 0 0 1px; +} +.panel-hright>.panel-footer-noborder { + border-width: 0 1px 0 0; +} +.panel-hleft>.panel-header .panel-icon, +.panel-hright>.panel-header .panel-icon { + margin-top: 0; + top: 5px; +} +.panel-hleft>.panel-header .panel-title, +.panel-hright>.panel-header .panel-title { + position: absolute; + min-width: 16px; + left: 21px; + top: 5px; + bottom: auto; + white-space: nowrap; + word-wrap: normal; + -webkit-transform: rotate(90deg); + -webkit-transform-origin: 0 0; + -moz-transform: rotate(90deg); + -moz-transform-origin: 0 0; + -o-transform: rotate(90deg); + -o-transform-origin: 0 0; + transform: rotate(90deg); + transform-origin: 0 0; +} +.panel-hleft>.panel-header .panel-title-up, +.panel-hright>.panel-header .panel-title-up { + position: absolute; + min-width: 16px; + left: 21px; + top: auto; + bottom: 5px; + text-align: right; + white-space: nowrap; + word-wrap: normal; + -webkit-transform: rotate(-90deg); + -webkit-transform-origin: 0 0; + -moz-transform: rotate(-90deg); + -moz-transform-origin: 0 0; + -o-transform: rotate(-90deg); + -o-transform-origin: 0 0; + transform: rotate(-90deg); + transform-origin: 0 16px; +} +.panel-hleft>.panel-header .panel-with-icon.panel-title-up, +.panel-hright>.panel-header .panel-with-icon.panel-title-up { + padding-left: 0; + padding-right: 18px; +} +.panel-hleft>.panel-header .panel-tool, +.panel-hright>.panel-header .panel-tool { + top: auto; + bottom: 5px; + width: 16px; + height: auto; + left: 50%; + margin-left: -8px; + margin-top: 0; +} +.panel-hleft>.panel-header .panel-tool a, +.panel-hright>.panel-header .panel-tool a { + margin: 2px 0 0 0; +} +.accordion { + overflow: hidden; + border-width: 1px; + border-style: solid; +} +.accordion .accordion-header { + border-width: 0 0 1px; + cursor: pointer; +} +.accordion .accordion-body { + border-width: 0 0 1px; +} +.accordion-noborder { + border-width: 0; +} +.accordion-noborder .accordion-header { + border-width: 0 0 1px; +} +.accordion-noborder .accordion-body { + border-width: 0 0 1px; +} +.accordion-collapse { + background: url('images/accordion_arrows.png') no-repeat 0 0; +} +.accordion-expand { + background: url('images/accordion_arrows.png') no-repeat -16px 0; +} +.accordion { + background: #ffffff; + border-color: #D4D4D4; +} +.accordion .accordion-header { + background: #F2F2F2; + filter: none; +} +.accordion .accordion-header-selected { + background: #0081c2; +} +.accordion .accordion-header-selected .panel-title { + color: #fff; +} +.accordion .panel-last > .accordion-header { + border-bottom-color: #F2F2F2; +} +.accordion .panel-last > .accordion-body { + border-bottom-color: #ffffff; +} +.accordion .panel-last > .accordion-header-selected, +.accordion .panel-last > .accordion-header-border { + border-bottom-color: #D4D4D4; +} +.accordion> .panel-hleft { + float: left; +} +.accordion> .panel-hleft>.panel-header { + border-width: 0 1px 0 0; +} +.accordion> .panel-hleft> .panel-body { + border-width: 0 1px 0 0; +} +.accordion> .panel-hleft.panel-last > .accordion-header { + border-right-color: #F2F2F2; +} +.accordion> .panel-hleft.panel-last > .accordion-body { + border-right-color: #ffffff; +} +.accordion> .panel-hleft.panel-last > .accordion-header-selected, +.accordion> .panel-hleft.panel-last > .accordion-header-border { + border-right-color: #D4D4D4; +} +.accordion> .panel-hright { + float: right; +} +.accordion> .panel-hright>.panel-header { + border-width: 0 0 0 1px; +} +.accordion> .panel-hright> .panel-body { + border-width: 0 0 0 1px; +} +.accordion> .panel-hright.panel-last > .accordion-header { + border-left-color: #F2F2F2; +} +.accordion> .panel-hright.panel-last > .accordion-body { + border-left-color: #ffffff; +} +.accordion> .panel-hright.panel-last > .accordion-header-selected, +.accordion> .panel-hright.panel-last > .accordion-header-border { + border-left-color: #D4D4D4; +} +.window { + overflow: hidden; + padding: 5px; + border-width: 1px; + border-style: solid; +} +.window .window-header { + background: transparent; + padding: 0px 0px 6px 0px; +} +.window .window-body { + border-width: 1px; + border-style: solid; + border-top-width: 0px; +} +.window .window-body-noheader { + border-top-width: 1px; +} +.window .panel-body-nobottom { + border-bottom-width: 0; +} +.window .window-header .panel-icon, +.window .window-header .panel-tool { + top: 50%; + margin-top: -11px; +} +.window .window-header .panel-icon { + left: 1px; +} +.window .window-header .panel-tool { + right: 1px; +} +.window .window-header .panel-with-icon { + padding-left: 18px; +} +.window-proxy { + position: absolute; + overflow: hidden; +} +.window-proxy-mask { + position: absolute; + filter: alpha(opacity=5); + opacity: 0.05; +} +.window-mask { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + filter: alpha(opacity=40); + opacity: 0.40; + font-size: 1px; + overflow: hidden; +} +.window, +.window-shadow { + position: absolute; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.window-shadow { + background: #ccc; + -moz-box-shadow: 2px 2px 3px #cccccc; + -webkit-box-shadow: 2px 2px 3px #cccccc; + box-shadow: 2px 2px 3px #cccccc; + filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); +} +.window, +.window .window-body { + border-color: #D4D4D4; +} +.window { + background-color: #F2F2F2; + background: -webkit-linear-gradient(top,#ffffff 0,#F2F2F2 20%); + background: -moz-linear-gradient(top,#ffffff 0,#F2F2F2 20%); + background: -o-linear-gradient(top,#ffffff 0,#F2F2F2 20%); + background: linear-gradient(to bottom,#ffffff 0,#F2F2F2 20%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#F2F2F2,GradientType=0); +} +.window-proxy { + border: 1px dashed #D4D4D4; +} +.window-proxy-mask, +.window-mask { + background: #ccc; +} +.window .panel-footer { + border: 1px solid #D4D4D4; + position: relative; + top: -1px; +} +.window-thinborder { + padding: 0; +} +.window-thinborder .window-header { + padding: 5px 5px 6px 5px; +} +.window-thinborder .window-body { + border-width: 0px; +} +.window-thinborder .window-header .panel-icon, +.window-thinborder .window-header .panel-tool { + margin-top: -9px; + margin-left: 5px; + margin-right: 5px; +} +.window-noborder { + border: 0; +} +.window.panel-hleft .window-header { + padding: 0 6px 0 0; +} +.window.panel-hright .window-header { + padding: 0 0 0 6px; +} +.window.panel-hleft>.panel-header .panel-title { + top: auto; + left: 16px; +} +.window.panel-hright>.panel-header .panel-title { + top: auto; + right: 16px; +} +.window.panel-hleft>.panel-header .panel-title-up, +.window.panel-hright>.panel-header .panel-title-up { + bottom: 0; +} +.window.panel-hleft .window-body { + border-width: 1px 1px 1px 0; +} +.window.panel-hright .window-body { + border-width: 1px 0 1px 1px; +} +.window.panel-hleft .window-header .panel-icon { + top: 1px; + margin-top: 0; + left: 0; +} +.window.panel-hright .window-header .panel-icon { + top: 1px; + margin-top: 0; + left: auto; + right: 1px; +} +.window.panel-hleft .window-header .panel-tool, +.window.panel-hright .window-header .panel-tool { + margin-top: 0; + top: auto; + bottom: 1px; + right: auto; + margin-right: 0; + left: 50%; + margin-left: -11px; +} +.window.panel-hright .window-header .panel-tool { + left: auto; + right: 1px; +} +.window-thinborder.panel-hleft .window-header { + padding: 5px 6px 5px 5px; +} +.window-thinborder.panel-hright .window-header { + padding: 5px 5px 5px 6px; +} +.window-thinborder.panel-hleft>.panel-header .panel-title { + left: 21px; +} +.window-thinborder.panel-hleft>.panel-header .panel-title-up, +.window-thinborder.panel-hright>.panel-header .panel-title-up { + bottom: 5px; +} +.window-thinborder.panel-hleft .window-header .panel-icon, +.window-thinborder.panel-hright .window-header .panel-icon { + margin-top: 5px; +} +.window-thinborder.panel-hleft .window-header .panel-tool, +.window-thinborder.panel-hright .window-header .panel-tool { + left: 16px; + bottom: 5px; +} +.dialog-content { + overflow: auto; +} +.dialog-toolbar { + position: relative; + padding: 2px 5px; +} +.dialog-tool-separator { + float: left; + height: 24px; + border-left: 1px solid #ccc; + border-right: 1px solid #fff; + margin: 2px 1px; +} +.dialog-button { + position: relative; + top: -1px; + padding: 5px; + text-align: right; +} +.dialog-button .l-btn { + margin-left: 5px; +} +.dialog-toolbar, +.dialog-button { + background: #F5F5F5; + border-width: 1px; + border-style: solid; +} +.dialog-toolbar { + border-color: #D4D4D4 #D4D4D4 #e6e6e6 #D4D4D4; +} +.dialog-button { + border-color: #e6e6e6 #D4D4D4 #D4D4D4 #D4D4D4; +} +.window-thinborder .dialog-toolbar { + border-left: transparent; + border-right: transparent; + border-top-color: #F5F5F5; +} +.window-thinborder .dialog-button { + top: 0px; + padding: 5px 8px 8px 8px; + border-left: transparent; + border-right: transparent; + border-bottom: transparent; +} +.l-btn { + text-decoration: none; + display: inline-block; + overflow: hidden; + margin: 0; + padding: 0; + cursor: pointer; + outline: none; + text-align: center; + vertical-align: middle; + line-height: normal; +} +.l-btn-plain { + border-width: 0; + padding: 1px; +} +.l-btn-left { + display: inline-block; + position: relative; + overflow: hidden; + margin: 0; + padding: 0; + vertical-align: top; +} +.l-btn-text { + display: inline-block; + vertical-align: top; + width: auto; + line-height: 24px; + font-size: 12px; + padding: 0; + margin: 0 4px; +} +.l-btn-icon { + display: inline-block; + width: 16px; + height: 16px; + line-height: 16px; + position: absolute; + top: 50%; + margin-top: -8px; + font-size: 1px; +} +.l-btn span span .l-btn-empty { + display: inline-block; + margin: 0; + width: 16px; + height: 24px; + font-size: 1px; + vertical-align: top; +} +.l-btn span .l-btn-icon-left { + padding: 0 0 0 20px; + background-position: left center; +} +.l-btn span .l-btn-icon-right { + padding: 0 20px 0 0; + background-position: right center; +} +.l-btn-icon-left .l-btn-text { + margin: 0 4px 0 24px; +} +.l-btn-icon-left .l-btn-icon { + left: 4px; +} +.l-btn-icon-right .l-btn-text { + margin: 0 24px 0 4px; +} +.l-btn-icon-right .l-btn-icon { + right: 4px; +} +.l-btn-icon-top .l-btn-text { + margin: 20px 4px 0 4px; +} +.l-btn-icon-top .l-btn-icon { + top: 4px; + left: 50%; + margin: 0 0 0 -8px; +} +.l-btn-icon-bottom .l-btn-text { + margin: 0 4px 20px 4px; +} +.l-btn-icon-bottom .l-btn-icon { + top: auto; + bottom: 4px; + left: 50%; + margin: 0 0 0 -8px; +} +.l-btn-left .l-btn-empty { + margin: 0 4px; + width: 16px; +} +.l-btn-plain:hover { + padding: 0; +} +.l-btn-focus { + outline: #0000FF dotted thin; +} +.l-btn-large .l-btn-text { + line-height: 40px; +} +.l-btn-large .l-btn-icon { + width: 32px; + height: 32px; + line-height: 32px; + margin-top: -16px; +} +.l-btn-large .l-btn-icon-left .l-btn-text { + margin-left: 40px; +} +.l-btn-large .l-btn-icon-right .l-btn-text { + margin-right: 40px; +} +.l-btn-large .l-btn-icon-top .l-btn-text { + margin-top: 36px; + line-height: 24px; + min-width: 32px; +} +.l-btn-large .l-btn-icon-top .l-btn-icon { + margin: 0 0 0 -16px; +} +.l-btn-large .l-btn-icon-bottom .l-btn-text { + margin-bottom: 36px; + line-height: 24px; + min-width: 32px; +} +.l-btn-large .l-btn-icon-bottom .l-btn-icon { + margin: 0 0 0 -16px; +} +.l-btn-large .l-btn-left .l-btn-empty { + margin: 0 4px; + width: 32px; +} +.l-btn { + color: #444; + background: #f5f5f5; + background-repeat: repeat-x; + border: 1px solid #bbb; + background: -webkit-linear-gradient(top,#ffffff 0,#e6e6e6 100%); + background: -moz-linear-gradient(top,#ffffff 0,#e6e6e6 100%); + background: -o-linear-gradient(top,#ffffff 0,#e6e6e6 100%); + background: linear-gradient(to bottom,#ffffff 0,#e6e6e6 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#e6e6e6,GradientType=0); + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.l-btn:hover { + background: #e6e6e6; + color: #00438a; + border: 1px solid #ddd; + filter: none; +} +.l-btn-plain { + background: transparent; + border-width: 0; + filter: none; +} +.l-btn-outline { + border-width: 1px; + border-color: #ddd; + padding: 0; +} +.l-btn-plain:hover { + background: #e6e6e6; + color: #00438a; + border: 1px solid #ddd; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.l-btn-disabled, +.l-btn-disabled:hover { + opacity: 0.5; + cursor: default; + background: #f5f5f5; + color: #444; + background: -webkit-linear-gradient(top,#ffffff 0,#e6e6e6 100%); + background: -moz-linear-gradient(top,#ffffff 0,#e6e6e6 100%); + background: -o-linear-gradient(top,#ffffff 0,#e6e6e6 100%); + background: linear-gradient(to bottom,#ffffff 0,#e6e6e6 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#e6e6e6,GradientType=0); +} +.l-btn-disabled .l-btn-text, +.l-btn-disabled .l-btn-icon { + filter: alpha(opacity=50); +} +.l-btn-plain-disabled, +.l-btn-plain-disabled:hover { + background: transparent; + filter: alpha(opacity=50); +} +.l-btn-selected, +.l-btn-selected:hover { + background: #ddd; + filter: none; +} +.l-btn-plain-selected, +.l-btn-plain-selected:hover { + background: #ddd; +} +.textbox { + position: relative; + border: 1px solid #D4D4D4; + background-color: #fff; + vertical-align: middle; + display: inline-block; + overflow: hidden; + white-space: nowrap; + margin: 0; + padding: 0; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.textbox .textbox-text { + font-size: 12px; + border: 0; + margin: 0; + padding: 4px; + white-space: normal; + vertical-align: top; + outline-style: none; + resize: none; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.textbox .textbox-text::-ms-clear, +.textbox .textbox-text::-ms-reveal { + display: none; +} +.textbox textarea.textbox-text { + white-space: pre-wrap; +} +.textbox .textbox-prompt { + font-size: 12px; + color: #aaa; +} +.textbox .textbox-bgicon { + background-position: 3px center; + padding-left: 21px; +} +.textbox .textbox-button, +.textbox .textbox-button:hover { + position: absolute; + top: 0; + padding: 0; + vertical-align: top; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.textbox .textbox-button-right, +.textbox .textbox-button-right:hover { + right: 0; + border-width: 0 0 0 1px; +} +.textbox .textbox-button-left, +.textbox .textbox-button-left:hover { + left: 0; + border-width: 0 1px 0 0; +} +.textbox .textbox-button-top, +.textbox .textbox-button-top:hover { + left: 0; + border-width: 0 0 1px 0; +} +.textbox .textbox-button-bottom, +.textbox .textbox-button-bottom:hover { + top: auto; + bottom: 0; + left: 0; + border-width: 1px 0 0 0; +} +.textbox-addon { + position: absolute; + top: 0; +} +.textbox-label { + display: inline-block; + width: 80px; + height: 22px; + line-height: 22px; + vertical-align: middle; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + margin: 0; + padding-right: 5px; +} +.textbox-label-after { + padding-left: 5px; + padding-right: 0; +} +.textbox-label-top { + display: block; + width: auto; + padding: 0; +} +.textbox-disabled, +.textbox-label-disabled { + opacity: 0.6; + filter: alpha(opacity=60); +} +.textbox-icon { + display: inline-block; + width: 18px; + height: 20px; + overflow: hidden; + vertical-align: top; + background-position: center center; + cursor: pointer; + opacity: 0.6; + filter: alpha(opacity=60); + text-decoration: none; + outline-style: none; +} +.textbox-icon-disabled, +.textbox-icon-readonly { + cursor: default; +} +.textbox-icon:hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.textbox-icon-disabled:hover { + opacity: 0.6; + filter: alpha(opacity=60); +} +.textbox-focused { + border-color: #bbbbbb; + -moz-box-shadow: 0 0 3px 0 #D4D4D4; + -webkit-box-shadow: 0 0 3px 0 #D4D4D4; + box-shadow: 0 0 3px 0 #D4D4D4; +} +.textbox-invalid { + border-color: #ffa8a8; + background-color: #fff3f3; +} +.passwordbox-open { + background: url('images/passwordbox_open.png') no-repeat center center; +} +.passwordbox-close { + background: url('images/passwordbox_close.png') no-repeat center center; +} +.filebox .textbox-value { + vertical-align: top; + position: absolute; + top: 0; + left: -5000px; +} +.filebox-label { + display: inline-block; + position: absolute; + width: 100%; + height: 100%; + cursor: pointer; + left: 0; + top: 0; + z-index: 10; + background: url('images/blank.gif') no-repeat; +} +.l-btn-disabled .filebox-label { + cursor: default; +} +.combo-arrow { + width: 18px; + height: 20px; + overflow: hidden; + display: inline-block; + vertical-align: top; + cursor: pointer; + opacity: 0.6; + filter: alpha(opacity=60); +} +.combo-arrow-hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.combo-panel { + overflow: auto; +} +.combo-arrow { + background: url('images/combo_arrow.png') no-repeat center center; +} +.combo-panel { + background-color: #ffffff; +} +.combo-arrow { + background-color: #F2F2F2; +} +.combo-arrow-hover { + background-color: #e6e6e6; +} +.combo-arrow:hover { + background-color: #e6e6e6; +} +.combo .textbox-icon-disabled:hover { + cursor: default; +} +.combobox-item, +.combobox-group, +.combobox-stick { + font-size: 12px; + padding: 3px; +} +.combobox-item-disabled { + opacity: 0.5; + filter: alpha(opacity=50); +} +.combobox-gitem { + padding-left: 10px; +} +.combobox-group, +.combobox-stick { + font-weight: bold; +} +.combobox-stick { + position: absolute; + top: 1px; + left: 1px; + right: 1px; + background: inherit; +} +.combobox-item-hover { + background-color: #e6e6e6; + color: #00438a; +} +.combobox-item-selected { + background-color: #0081c2; + color: #fff; +} +.combobox-icon { + display: inline-block; + width: 16px; + height: 16px; + vertical-align: middle; + margin-right: 2px; +} +.tagbox { + cursor: text; +} +.tagbox .textbox-text { + float: left; +} +.tagbox-label { + position: relative; + display: block; + margin: 4px 0 0 4px; + padding: 0 20px 0 4px; + float: left; + vertical-align: top; + text-decoration: none; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; + background: #e6e6e6; + color: #00438a; +} +.tagbox-remove { + background: url('images/tagbox_icons.png') no-repeat -16px center; + position: absolute; + display: block; + width: 16px; + height: 16px; + right: 2px; + top: 50%; + margin-top: -8px; + opacity: 0.6; + filter: alpha(opacity=60); +} +.tagbox-remove:hover { + opacity: 1; + filter: alpha(opacity=100); +} +.textbox-disabled .tagbox-label { + cursor: default; +} +.textbox-disabled .tagbox-remove:hover { + cursor: default; + opacity: 0.6; + filter: alpha(opacity=60); +} +.layout { + position: relative; + overflow: hidden; + margin: 0; + padding: 0; + z-index: 0; +} +.layout-panel { + position: absolute; + overflow: hidden; +} +.layout-body { + min-width: 1px; + min-height: 1px; +} +.layout-panel-east, +.layout-panel-west { + z-index: 2; +} +.layout-panel-north, +.layout-panel-south { + z-index: 3; +} +.layout-expand { + position: absolute; + padding: 0px; + font-size: 1px; + cursor: pointer; + z-index: 1; +} +.layout-expand .panel-header, +.layout-expand .panel-body { + background: transparent; + filter: none; + overflow: hidden; +} +.layout-expand .panel-header { + border-bottom-width: 0px; +} +.layout-expand .panel-body { + position: relative; +} +.layout-expand .panel-body .panel-icon { + margin-top: 0; + top: 0; + left: 50%; + margin-left: -8px; +} +.layout-expand-west .panel-header .panel-icon, +.layout-expand-east .panel-header .panel-icon { + display: none; +} +.layout-expand-title { + position: absolute; + top: 0; + left: 21px; + white-space: nowrap; + word-wrap: normal; + -webkit-transform: rotate(90deg); + -webkit-transform-origin: 0 0; + -moz-transform: rotate(90deg); + -moz-transform-origin: 0 0; + -o-transform: rotate(90deg); + -o-transform-origin: 0 0; + transform: rotate(90deg); + transform-origin: 0 0; +} +.layout-expand-title-up { + position: absolute; + top: 0; + left: 0; + text-align: right; + padding-left: 5px; + white-space: nowrap; + word-wrap: normal; + -webkit-transform: rotate(-90deg); + -webkit-transform-origin: 0 0; + -moz-transform: rotate(-90deg); + -moz-transform-origin: 0 0; + -o-transform: rotate(-90deg); + -o-transform-origin: 0 0; + transform: rotate(-90deg); + transform-origin: 0 0; +} +.layout-expand-with-icon { + top: 18px; +} +.layout-expand .panel-body-noheader .layout-expand-title, +.layout-expand .panel-body-noheader .panel-icon { + top: 5px; +} +.layout-expand .panel-body-noheader .layout-expand-with-icon { + top: 23px; +} +.layout-split-proxy-h, +.layout-split-proxy-v { + position: absolute; + font-size: 1px; + display: none; + z-index: 5; +} +.layout-split-proxy-h { + width: 5px; + cursor: e-resize; +} +.layout-split-proxy-v { + height: 5px; + cursor: n-resize; +} +.layout-mask { + position: absolute; + background: #fafafa; + filter: alpha(opacity=10); + opacity: 0.10; + z-index: 4; +} +.layout-button-up { + background: url('images/layout_arrows.png') no-repeat -16px -16px; +} +.layout-button-down { + background: url('images/layout_arrows.png') no-repeat -16px 0; +} +.layout-button-left { + background: url('images/layout_arrows.png') no-repeat 0 0; +} +.layout-button-right { + background: url('images/layout_arrows.png') no-repeat 0 -16px; +} +.layout-split-proxy-h, +.layout-split-proxy-v { + background-color: #bbb; +} +.layout-split-north { + border-bottom: 5px solid #eee; +} +.layout-split-south { + border-top: 5px solid #eee; +} +.layout-split-east { + border-left: 5px solid #eee; +} +.layout-split-west { + border-right: 5px solid #eee; +} +.layout-expand { + background-color: #F2F2F2; +} +.layout-expand-over { + background-color: #F2F2F2; +} +.tabs-container { + overflow: hidden; +} +.tabs-header { + border-width: 1px; + border-style: solid; + border-bottom-width: 0; + position: relative; + padding: 0; + padding-top: 2px; + overflow: hidden; +} +.tabs-scroller-left, +.tabs-scroller-right { + position: absolute; + top: auto; + bottom: 0; + width: 18px; + font-size: 1px; + display: none; + cursor: pointer; + border-width: 1px; + border-style: solid; +} +.tabs-scroller-left { + left: 0; +} +.tabs-scroller-right { + right: 0; +} +.tabs-tool { + position: absolute; + bottom: 0; + padding: 1px; + overflow: hidden; + border-width: 1px; + border-style: solid; +} +.tabs-header-plain .tabs-tool { + padding: 0 1px; +} +.tabs-wrap { + position: relative; + left: 0; + overflow: hidden; + width: 100%; + margin: 0; + padding: 0; +} +.tabs-scrolling { + margin-left: 18px; + margin-right: 18px; +} +.tabs-disabled { + opacity: 0.3; + filter: alpha(opacity=30); +} +.tabs { + list-style-type: none; + height: 26px; + margin: 0px; + padding: 0px; + padding-left: 4px; + width: 50000px; + border-style: solid; + border-width: 0 0 1px 0; +} +.tabs li { + float: left; + display: inline-block; + margin: 0 4px -1px 0; + padding: 0; + position: relative; + border: 0; +} +.tabs li a.tabs-inner { + display: inline-block; + text-decoration: none; + margin: 0; + padding: 0 10px; + height: 25px; + line-height: 25px; + text-align: center; + white-space: nowrap; + border-width: 1px; + border-style: solid; + -moz-border-radius: 5px 5px 0 0; + -webkit-border-radius: 5px 5px 0 0; + border-radius: 5px 5px 0 0; +} +.tabs li.tabs-selected a.tabs-inner { + font-weight: bold; + outline: none; +} +.tabs li.tabs-selected a:hover.tabs-inner { + cursor: default; + pointer: default; +} +.tabs li a.tabs-close, +.tabs-p-tool { + position: absolute; + font-size: 1px; + display: block; + height: 12px; + padding: 0; + top: 50%; + margin-top: -6px; + overflow: hidden; +} +.tabs li a.tabs-close { + width: 12px; + right: 5px; + opacity: 0.6; + filter: alpha(opacity=60); +} +.tabs-p-tool { + right: 16px; +} +.tabs-p-tool a { + display: inline-block; + font-size: 1px; + width: 12px; + height: 12px; + margin: 0; + opacity: 0.6; + filter: alpha(opacity=60); +} +.tabs li a:hover.tabs-close, +.tabs-p-tool a:hover { + opacity: 1; + filter: alpha(opacity=100); + cursor: hand; + cursor: pointer; +} +.tabs-with-icon { + padding-left: 18px; +} +.tabs-icon { + position: absolute; + width: 16px; + height: 16px; + left: 10px; + top: 50%; + margin-top: -8px; +} +.tabs-title { + font-size: 12px; +} +.tabs-closable { + padding-right: 8px; +} +.tabs-panels { + margin: 0px; + padding: 0px; + border-width: 1px; + border-style: solid; + border-top-width: 0; + overflow: hidden; +} +.tabs-header-bottom { + border-width: 0 1px 1px 1px; + padding: 0 0 2px 0; +} +.tabs-header-bottom .tabs { + border-width: 1px 0 0 0; +} +.tabs-header-bottom .tabs li { + margin: -1px 4px 0 0; +} +.tabs-header-bottom .tabs li a.tabs-inner { + -moz-border-radius: 0 0 5px 5px; + -webkit-border-radius: 0 0 5px 5px; + border-radius: 0 0 5px 5px; +} +.tabs-header-bottom .tabs-tool { + top: 0; +} +.tabs-header-bottom .tabs-scroller-left, +.tabs-header-bottom .tabs-scroller-right { + top: 0; + bottom: auto; +} +.tabs-panels-top { + border-width: 1px 1px 0 1px; +} +.tabs-header-left { + float: left; + border-width: 1px 0 1px 1px; + padding: 0; +} +.tabs-header-right { + float: right; + border-width: 1px 1px 1px 0; + padding: 0; +} +.tabs-header-left .tabs-wrap, +.tabs-header-right .tabs-wrap { + height: 100%; +} +.tabs-header-left .tabs { + height: 100%; + padding: 4px 0 0 2px; + border-width: 0 1px 0 0; +} +.tabs-header-right .tabs { + height: 100%; + padding: 4px 2px 0 0; + border-width: 0 0 0 1px; +} +.tabs-header-left .tabs li, +.tabs-header-right .tabs li { + display: block; + width: 100%; + position: relative; +} +.tabs-header-left .tabs li { + left: auto; + right: 0; + margin: 0 -1px 4px 0; + float: right; +} +.tabs-header-right .tabs li { + left: 0; + right: auto; + margin: 0 0 4px -1px; + float: left; +} +.tabs-justified li a.tabs-inner { + padding-left: 0; + padding-right: 0; +} +.tabs-header-left .tabs li a.tabs-inner { + display: block; + text-align: left; + padding-left: 10px; + padding-right: 10px; + -moz-border-radius: 5px 0 0 5px; + -webkit-border-radius: 5px 0 0 5px; + border-radius: 5px 0 0 5px; +} +.tabs-header-right .tabs li a.tabs-inner { + display: block; + text-align: left; + padding-left: 10px; + padding-right: 10px; + -moz-border-radius: 0 5px 5px 0; + -webkit-border-radius: 0 5px 5px 0; + border-radius: 0 5px 5px 0; +} +.tabs-panels-right { + float: right; + border-width: 1px 1px 1px 0; +} +.tabs-panels-left { + float: left; + border-width: 1px 0 1px 1px; +} +.tabs-header-noborder, +.tabs-panels-noborder { + border: 0px; +} +.tabs-header-plain { + border: 0px; + background: transparent; +} +.tabs-pill { + padding-bottom: 3px; +} +.tabs-header-bottom .tabs-pill { + padding-top: 3px; + padding-bottom: 0; +} +.tabs-header-left .tabs-pill { + padding-right: 3px; +} +.tabs-header-right .tabs-pill { + padding-left: 3px; +} +.tabs-header .tabs-pill li a.tabs-inner { + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.tabs-header-narrow, +.tabs-header-narrow .tabs-narrow { + padding: 0; +} +.tabs-narrow li, +.tabs-header-bottom .tabs-narrow li { + margin-left: 0; + margin-right: -1px; +} +.tabs-narrow li.tabs-last, +.tabs-header-bottom .tabs-narrow li.tabs-last { + margin-right: 0; +} +.tabs-header-left .tabs-narrow, +.tabs-header-right .tabs-narrow { + padding-top: 0; +} +.tabs-header-left .tabs-narrow li { + margin-bottom: -1px; + margin-right: -1px; +} +.tabs-header-left .tabs-narrow li.tabs-last, +.tabs-header-right .tabs-narrow li.tabs-last { + margin-bottom: 0; +} +.tabs-header-right .tabs-narrow li { + margin-bottom: -1px; + margin-left: -1px; +} +.tabs-scroller-left { + background: #F2F2F2 url('images/tabs_icons.png') no-repeat 1px center; +} +.tabs-scroller-right { + background: #F2F2F2 url('images/tabs_icons.png') no-repeat -15px center; +} +.tabs li a.tabs-close { + background: url('images/tabs_icons.png') no-repeat -34px center; +} +.tabs li a.tabs-inner:hover { + background: #e6e6e6; + color: #00438a; + filter: none; +} +.tabs li.tabs-selected a.tabs-inner { + background-color: #ffffff; + color: #777; + background: -webkit-linear-gradient(top,#ffffff 0,#ffffff 100%); + background: -moz-linear-gradient(top,#ffffff 0,#ffffff 100%); + background: -o-linear-gradient(top,#ffffff 0,#ffffff 100%); + background: linear-gradient(to bottom,#ffffff 0,#ffffff 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#ffffff,GradientType=0); +} +.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { + background: -webkit-linear-gradient(top,#ffffff 0,#ffffff 100%); + background: -moz-linear-gradient(top,#ffffff 0,#ffffff 100%); + background: -o-linear-gradient(top,#ffffff 0,#ffffff 100%); + background: linear-gradient(to bottom,#ffffff 0,#ffffff 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#ffffff,GradientType=0); +} +.tabs-header-left .tabs li.tabs-selected a.tabs-inner { + background: -webkit-linear-gradient(left,#ffffff 0,#ffffff 100%); + background: -moz-linear-gradient(left,#ffffff 0,#ffffff 100%); + background: -o-linear-gradient(left,#ffffff 0,#ffffff 100%); + background: linear-gradient(to right,#ffffff 0,#ffffff 100%); + background-repeat: repeat-y; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#ffffff,GradientType=1); +} +.tabs-header-right .tabs li.tabs-selected a.tabs-inner { + background: -webkit-linear-gradient(left,#ffffff 0,#ffffff 100%); + background: -moz-linear-gradient(left,#ffffff 0,#ffffff 100%); + background: -o-linear-gradient(left,#ffffff 0,#ffffff 100%); + background: linear-gradient(to right,#ffffff 0,#ffffff 100%); + background-repeat: repeat-y; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#ffffff,GradientType=1); +} +.tabs li a.tabs-inner { + color: #777; + background-color: #F2F2F2; + background: -webkit-linear-gradient(top,#ffffff 0,#F2F2F2 100%); + background: -moz-linear-gradient(top,#ffffff 0,#F2F2F2 100%); + background: -o-linear-gradient(top,#ffffff 0,#F2F2F2 100%); + background: linear-gradient(to bottom,#ffffff 0,#F2F2F2 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#F2F2F2,GradientType=0); +} +.tabs-header, +.tabs-tool { + background-color: #F2F2F2; +} +.tabs-header-plain { + background: transparent; +} +.tabs-header, +.tabs-scroller-left, +.tabs-scroller-right, +.tabs-tool, +.tabs, +.tabs-panels, +.tabs li a.tabs-inner, +.tabs li.tabs-selected a.tabs-inner, +.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner, +.tabs-header-left .tabs li.tabs-selected a.tabs-inner, +.tabs-header-right .tabs li.tabs-selected a.tabs-inner { + border-color: #D4D4D4; +} +.tabs-p-tool a:hover, +.tabs li a:hover.tabs-close, +.tabs-scroller-over { + background-color: #e6e6e6; +} +.tabs li.tabs-selected a.tabs-inner { + border-bottom: 1px solid #ffffff; +} +.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { + border-top: 1px solid #ffffff; +} +.tabs-header-left .tabs li.tabs-selected a.tabs-inner { + border-right: 1px solid #ffffff; +} +.tabs-header-right .tabs li.tabs-selected a.tabs-inner { + border-left: 1px solid #ffffff; +} +.tabs-header .tabs-pill li.tabs-selected a.tabs-inner { + background: #0081c2; + color: #fff; + filter: none; + border-color: #D4D4D4; +} +.datagrid .panel-body { + overflow: hidden; + position: relative; +} +.datagrid-view { + position: relative; + overflow: hidden; +} +.datagrid-view1, +.datagrid-view2 { + position: absolute; + overflow: hidden; + top: 0; +} +.datagrid-view1 { + left: 0; +} +.datagrid-view2 { + right: 0; +} +.datagrid-mask { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + opacity: 0.3; + filter: alpha(opacity=30); + display: none; +} +.datagrid-mask-msg { + position: absolute; + top: 50%; + margin-top: -20px; + padding: 10px 5px 10px 30px; + width: auto; + height: 16px; + border-width: 2px; + border-style: solid; + display: none; +} +.datagrid-empty { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 25px; + line-height: 25px; + text-align: center; +} +.datagrid-sort-icon { + padding: 0; + display: none; +} +.datagrid-toolbar { + height: auto; + padding: 1px 2px; + border-width: 0 0 1px 0; + border-style: solid; +} +.datagrid-btn-separator { + float: left; + height: 24px; + border-left: 1px solid #ccc; + border-right: 1px solid #fff; + margin: 2px 1px; +} +.datagrid .datagrid-pager { + display: block; + margin: 0; + border-width: 1px 0 0 0; + border-style: solid; +} +.datagrid .datagrid-pager-top { + border-width: 0 0 1px 0; +} +.datagrid-header { + overflow: hidden; + cursor: default; + border-width: 0 0 1px 0; + border-style: solid; +} +.datagrid-header-inner { + float: left; + width: 10000px; +} +.datagrid-header-row, +.datagrid-row { + height: 25px; +} +.datagrid-header td, +.datagrid-body td, +.datagrid-footer td { + border-width: 0 1px 1px 0; + border-style: dotted; + margin: 0; + padding: 0; +} +.datagrid-cell, +.datagrid-cell-group, +.datagrid-header-rownumber, +.datagrid-cell-rownumber { + margin: 0; + padding: 0 4px; + white-space: nowrap; + word-wrap: normal; + overflow: hidden; + height: 18px; + line-height: 18px; + font-size: 12px; +} +.datagrid-header .datagrid-cell { + height: auto; +} +.datagrid-header .datagrid-cell span { + font-size: 12px; +} +.datagrid-cell-group { + text-align: center; + text-overflow: ellipsis; +} +.datagrid-header-rownumber, +.datagrid-cell-rownumber { + width: 30px; + text-align: center; + margin: 0; + padding: 0; +} +.datagrid-body { + margin: 0; + padding: 0; + overflow: auto; + zoom: 1; +} +.datagrid-view1 .datagrid-body-inner { + padding-bottom: 20px; +} +.datagrid-view1 .datagrid-body { + overflow: hidden; +} +.datagrid-footer { + overflow: hidden; +} +.datagrid-footer-inner { + border-width: 1px 0 0 0; + border-style: solid; + width: 10000px; + float: left; +} +.datagrid-row-editing .datagrid-cell { + height: auto; +} +.datagrid-header-check, +.datagrid-cell-check { + padding: 0; + width: 27px; + height: 18px; + font-size: 1px; + text-align: center; + overflow: hidden; +} +.datagrid-header-check input, +.datagrid-cell-check input { + margin: 0; + padding: 0; + width: 15px; + height: 18px; +} +.datagrid-resize-proxy { + position: absolute; + width: 1px; + height: 10000px; + top: 0; + cursor: e-resize; + display: none; +} +.datagrid-body .datagrid-editable { + margin: 0; + padding: 0; +} +.datagrid-body .datagrid-editable table { + width: 100%; + height: 100%; +} +.datagrid-body .datagrid-editable td { + border: 0; + margin: 0; + padding: 0; +} +.datagrid-view .datagrid-editable-input { + margin: 0; + padding: 2px 4px; + border: 1px solid #D4D4D4; + font-size: 12px; + outline-style: none; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.datagrid-view .validatebox-invalid { + border-color: #ffa8a8; +} +.datagrid-sort .datagrid-sort-icon { + display: inline; + padding: 0 13px 0 0; + background: url('images/datagrid_icons.png') no-repeat -64px center; +} +.datagrid-sort-desc .datagrid-sort-icon { + display: inline; + padding: 0 13px 0 0; + background: url('images/datagrid_icons.png') no-repeat -16px center; +} +.datagrid-sort-asc .datagrid-sort-icon { + display: inline; + padding: 0 13px 0 0; + background: url('images/datagrid_icons.png') no-repeat 0px center; +} +.datagrid-row-collapse { + background: url('images/datagrid_icons.png') no-repeat -48px center; +} +.datagrid-row-expand { + background: url('images/datagrid_icons.png') no-repeat -32px center; +} +.datagrid-mask-msg { + background: #ffffff url('images/loading.gif') no-repeat scroll 5px center; +} +.datagrid-header, +.datagrid-td-rownumber { + background-color: #F2F2F2; + background: -webkit-linear-gradient(top,#ffffff 0,#F2F2F2 100%); + background: -moz-linear-gradient(top,#ffffff 0,#F2F2F2 100%); + background: -o-linear-gradient(top,#ffffff 0,#F2F2F2 100%); + background: linear-gradient(to bottom,#ffffff 0,#F2F2F2 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#F2F2F2,GradientType=0); +} +.datagrid-cell-rownumber { + color: #333; +} +.datagrid-resize-proxy { + background: #bbb; +} +.datagrid-mask { + background: #ccc; +} +.datagrid-mask-msg { + border-color: #D4D4D4; +} +.datagrid-toolbar, +.datagrid-pager { + background: #F5F5F5; +} +.datagrid-header, +.datagrid-toolbar, +.datagrid-pager, +.datagrid-footer-inner { + border-color: #e6e6e6; +} +.datagrid-header td, +.datagrid-body td, +.datagrid-footer td { + border-color: #ccc; +} +.datagrid-htable, +.datagrid-btable, +.datagrid-ftable { + color: #333; + border-collapse: separate; +} +.datagrid-row-alt { + background: #F5F5F5; +} +.datagrid-row-over, +.datagrid-header td.datagrid-header-over { + background: #e6e6e6; + color: #00438a; + cursor: default; +} +.datagrid-row-selected { + background: #0081c2; + color: #fff; +} +.datagrid-row-editing .textbox, +.datagrid-row-editing .textbox-text { + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.propertygrid .datagrid-view1 .datagrid-body td { + padding-bottom: 1px; + border-width: 0 1px 0 0; +} +.propertygrid .datagrid-group { + height: 21px; + overflow: hidden; + border-width: 0 0 1px 0; + border-style: solid; +} +.propertygrid .datagrid-group span { + font-weight: bold; +} +.propertygrid .datagrid-view1 .datagrid-body td { + border-color: #e6e6e6; +} +.propertygrid .datagrid-view1 .datagrid-group { + border-color: #F2F2F2; +} +.propertygrid .datagrid-view2 .datagrid-group { + border-color: #e6e6e6; +} +.propertygrid .datagrid-group, +.propertygrid .datagrid-view1 .datagrid-body, +.propertygrid .datagrid-view1 .datagrid-row-over, +.propertygrid .datagrid-view1 .datagrid-row-selected { + background: #F2F2F2; +} +.datalist .datagrid-header { + border-width: 0; +} +.datalist .datagrid-group, +.m-list .m-list-group { + height: 25px; + line-height: 25px; + font-weight: bold; + overflow: hidden; + background-color: #F2F2F2; + border-style: solid; + border-width: 0 0 1px 0; + border-color: #ccc; +} +.datalist .datagrid-group-expander { + display: none; +} +.datalist .datagrid-group-title { + padding: 0 4px; +} +.datalist .datagrid-btable { + width: 100%; + table-layout: fixed; +} +.datalist .datagrid-row td { + border-style: solid; + border-left-color: transparent; + border-right-color: transparent; + border-bottom-width: 0; +} +.datalist-lines .datagrid-row td { + border-bottom-width: 1px; +} +.datalist .datagrid-cell, +.m-list li { + width: auto; + height: auto; + padding: 2px 4px; + line-height: 18px; + position: relative; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; +} +.datalist-link, +.m-list li>a { + display: block; + position: relative; + cursor: pointer; + color: #333; + text-decoration: none; + overflow: hidden; + margin: -2px -4px; + padding: 2px 4px; + padding-right: 16px; + line-height: 18px; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; +} +.datalist-link::after, +.m-list li>a::after { + position: absolute; + display: block; + width: 8px; + height: 8px; + content: ''; + right: 6px; + top: 50%; + margin-top: -4px; + border-style: solid; + border-width: 1px 1px 0 0; + -ms-transform: rotate(45deg); + -moz-transform: rotate(45deg); + -webkit-transform: rotate(45deg); + -o-transform: rotate(45deg); + transform: rotate(45deg); +} +.m-list { + margin: 0; + padding: 0; + list-style: none; +} +.m-list li { + border-style: solid; + border-width: 0 0 1px 0; + border-color: #ccc; +} +.m-list li>a:hover { + background: #e6e6e6; + color: #00438a; +} +.m-list .m-list-group { + padding: 0 4px; +} +.pagination { + zoom: 1; +} +.pagination table { + float: left; + height: 30px; +} +.pagination td { + border: 0; +} +.pagination-btn-separator { + float: left; + height: 24px; + border-left: 1px solid #ccc; + border-right: 1px solid #fff; + margin: 3px 1px; +} +.pagination .pagination-num { + border-width: 1px; + border-style: solid; + margin: 0 2px; + padding: 2px; + width: 2em; + height: auto; +} +.pagination-page-list { + margin: 0px 6px; + padding: 1px 2px; + width: auto; + height: auto; + border-width: 1px; + border-style: solid; +} +.pagination-info { + float: right; + margin: 0 6px; + padding: 0; + height: 30px; + line-height: 30px; + font-size: 12px; +} +.pagination span { + font-size: 12px; +} +.pagination-link .l-btn-text { + width: 24px; + text-align: center; + margin: 0; +} +.pagination-first { + background: url('images/pagination_icons.png') no-repeat 0 center; +} +.pagination-prev { + background: url('images/pagination_icons.png') no-repeat -16px center; +} +.pagination-next { + background: url('images/pagination_icons.png') no-repeat -32px center; +} +.pagination-last { + background: url('images/pagination_icons.png') no-repeat -48px center; +} +.pagination-load { + background: url('images/pagination_icons.png') no-repeat -64px center; +} +.pagination-loading { + background: url('images/loading.gif') no-repeat center center; +} +.pagination-page-list, +.pagination .pagination-num { + border-color: #D4D4D4; +} +.calendar { + border-width: 1px; + border-style: solid; + padding: 1px; + overflow: hidden; +} +.calendar table { + table-layout: fixed; + border-collapse: separate; + font-size: 12px; + width: 100%; + height: 100%; +} +.calendar table td, +.calendar table th { + font-size: 12px; +} +.calendar-noborder { + border: 0; +} +.calendar-header { + position: relative; + height: 22px; +} +.calendar-title { + text-align: center; + height: 22px; +} +.calendar-title span { + position: relative; + display: inline-block; + top: 2px; + padding: 0 3px; + height: 18px; + line-height: 18px; + font-size: 12px; + cursor: pointer; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-prevmonth, +.calendar-nextmonth, +.calendar-prevyear, +.calendar-nextyear { + position: absolute; + top: 50%; + margin-top: -7px; + width: 14px; + height: 14px; + cursor: pointer; + font-size: 1px; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-prevmonth { + left: 20px; + background: url('images/calendar_arrows.png') no-repeat -18px -2px; +} +.calendar-nextmonth { + right: 20px; + background: url('images/calendar_arrows.png') no-repeat -34px -2px; +} +.calendar-prevyear { + left: 3px; + background: url('images/calendar_arrows.png') no-repeat -1px -2px; +} +.calendar-nextyear { + right: 3px; + background: url('images/calendar_arrows.png') no-repeat -49px -2px; +} +.calendar-body { + position: relative; +} +.calendar-body th, +.calendar-body td { + text-align: center; +} +.calendar-day { + border: 0; + padding: 1px; + cursor: pointer; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-other-month { + opacity: 0.3; + filter: alpha(opacity=30); +} +.calendar-disabled { + opacity: 0.6; + filter: alpha(opacity=60); + cursor: default; +} +.calendar-menu { + position: absolute; + top: 0; + left: 0; + width: 180px; + height: 150px; + padding: 5px; + font-size: 12px; + display: none; + overflow: hidden; +} +.calendar-menu-year-inner { + text-align: center; + padding-bottom: 5px; +} +.calendar-menu-year { + width: 50px; + text-align: center; + border-width: 1px; + border-style: solid; + outline-style: none; + resize: none; + margin: 0; + padding: 2px; + font-weight: bold; + font-size: 12px; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-menu-prev, +.calendar-menu-next { + display: inline-block; + width: 21px; + height: 21px; + vertical-align: top; + cursor: pointer; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-menu-prev { + margin-right: 10px; + background: url('images/calendar_arrows.png') no-repeat 2px 2px; +} +.calendar-menu-next { + margin-left: 10px; + background: url('images/calendar_arrows.png') no-repeat -45px 2px; +} +.calendar-menu-month { + text-align: center; + cursor: pointer; + font-weight: bold; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-body th, +.calendar-menu-month { + color: #808080; +} +.calendar-day { + color: #333; +} +.calendar-sunday { + color: #CC2222; +} +.calendar-saturday { + color: #00ee00; +} +.calendar-today { + color: #0000ff; +} +.calendar-menu-year { + border-color: #D4D4D4; +} +.calendar { + border-color: #D4D4D4; +} +.calendar-header { + background: #F2F2F2; +} +.calendar-body, +.calendar-menu { + background: #ffffff; +} +.calendar-body th { + background: #F5F5F5; + padding: 2px 0; +} +.calendar-hover, +.calendar-nav-hover, +.calendar-menu-hover { + background-color: #e6e6e6; + color: #00438a; +} +.calendar-hover { + border: 1px solid #ddd; + padding: 0; +} +.calendar-selected { + background-color: #0081c2; + color: #fff; + border: 1px solid #0070a9; + padding: 0; +} +.datebox-calendar-inner { + height: 180px; +} +.datebox-button { + padding: 0 5px; + text-align: center; +} +.datebox-button a { + line-height: 22px; + font-size: 12px; + font-weight: bold; + text-decoration: none; + opacity: 0.6; + filter: alpha(opacity=60); +} +.datebox-button a:hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.datebox-current, +.datebox-close { + float: left; +} +.datebox-close { + float: right; +} +.datebox .combo-arrow { + background-image: url('images/datebox_arrow.png'); + background-position: center center; +} +.datebox-button { + background-color: #F5F5F5; +} +.datebox-button a { + color: #444; +} +.spinner-arrow { + background-color: #F2F2F2; + display: inline-block; + overflow: hidden; + vertical-align: top; + margin: 0; + padding: 0; + opacity: 1.0; + filter: alpha(opacity=100); + width: 18px; +} +.spinner-arrow-up, +.spinner-arrow-down { + opacity: 0.6; + filter: alpha(opacity=60); + display: block; + font-size: 1px; + width: 18px; + height: 10px; + width: 100%; + height: 50%; + color: #444; + outline-style: none; +} +.spinner-arrow-hover { + background-color: #e6e6e6; + opacity: 1.0; + filter: alpha(opacity=100); +} +.spinner-arrow-up:hover, +.spinner-arrow-down:hover { + opacity: 1.0; + filter: alpha(opacity=100); + background-color: #e6e6e6; +} +.textbox-icon-disabled .spinner-arrow-up:hover, +.textbox-icon-disabled .spinner-arrow-down:hover { + opacity: 0.6; + filter: alpha(opacity=60); + background-color: #F2F2F2; + cursor: default; +} +.spinner .textbox-icon-disabled { + opacity: 0.6; + filter: alpha(opacity=60); +} +.spinner-arrow-up { + background: url('images/spinner_arrows.png') no-repeat 1px center; +} +.spinner-arrow-down { + background: url('images/spinner_arrows.png') no-repeat -15px center; +} +.spinner-button-up { + background: url('images/spinner_arrows.png') no-repeat -32px center; +} +.spinner-button-down { + background: url('images/spinner_arrows.png') no-repeat -48px center; +} +.progressbar { + border-width: 1px; + border-style: solid; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; + overflow: hidden; + position: relative; +} +.progressbar-text { + text-align: center; + position: absolute; +} +.progressbar-value { + position: relative; + overflow: hidden; + width: 0; + -moz-border-radius: 5px 0 0 5px; + -webkit-border-radius: 5px 0 0 5px; + border-radius: 5px 0 0 5px; +} +.progressbar { + border-color: #D4D4D4; +} +.progressbar-text { + color: #333; + font-size: 12px; +} +.progressbar-value .progressbar-text { + background-color: #0081c2; + color: #fff; +} +.searchbox-button { + width: 18px; + height: 20px; + overflow: hidden; + display: inline-block; + vertical-align: top; + cursor: pointer; + opacity: 0.6; + filter: alpha(opacity=60); +} +.searchbox-button-hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.searchbox .l-btn-plain { + border: 0; + padding: 0; + vertical-align: top; + opacity: 0.6; + filter: alpha(opacity=60); + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox .l-btn-plain:hover { + border: 0; + padding: 0; + opacity: 1.0; + filter: alpha(opacity=100); + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox a.m-btn-plain-active { + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox .m-btn-active { + border-width: 0 1px 0 0; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox .textbox-button-right { + border-width: 0 0 0 1px; +} +.searchbox .textbox-button-left { + border-width: 0 1px 0 0; +} +.searchbox-button { + background: url('images/searchbox_button.png') no-repeat center center; +} +.searchbox .l-btn-plain { + background: #F2F2F2; +} +.searchbox .l-btn-plain-disabled, +.searchbox .l-btn-plain-disabled:hover { + opacity: 0.5; + filter: alpha(opacity=50); +} +.slider-disabled { + opacity: 0.5; + filter: alpha(opacity=50); +} +.slider-h { + height: 22px; +} +.slider-v { + width: 22px; +} +.slider-inner { + position: relative; + height: 6px; + top: 7px; + border-width: 1px; + border-style: solid; + border-radius: 5px; +} +.slider-handle { + position: absolute; + display: block; + outline: none; + width: 20px; + height: 20px; + top: 50%; + margin-top: -10px; + margin-left: -10px; +} +.slider-tip { + position: absolute; + display: inline-block; + line-height: 12px; + font-size: 12px; + white-space: nowrap; + top: -22px; +} +.slider-rule { + position: relative; + top: 15px; +} +.slider-rule span { + position: absolute; + display: inline-block; + font-size: 0; + height: 5px; + border-width: 0 0 0 1px; + border-style: solid; +} +.slider-rulelabel { + position: relative; + top: 20px; +} +.slider-rulelabel span { + position: absolute; + display: inline-block; + font-size: 12px; +} +.slider-v .slider-inner { + width: 6px; + left: 7px; + top: 0; + float: left; +} +.slider-v .slider-handle { + left: 50%; + margin-top: -10px; +} +.slider-v .slider-tip { + left: -10px; + margin-top: -6px; +} +.slider-v .slider-rule { + float: left; + top: 0; + left: 16px; +} +.slider-v .slider-rule span { + width: 5px; + height: 'auto'; + border-left: 0; + border-width: 1px 0 0 0; + border-style: solid; +} +.slider-v .slider-rulelabel { + float: left; + top: 0; + left: 23px; +} +.slider-handle { + background: url('images/slider_handle.png') no-repeat; +} +.slider-inner { + border-color: #D4D4D4; + background: #F2F2F2; +} +.slider-rule span { + border-color: #D4D4D4; +} +.slider-rulelabel span { + color: #333; +} +.menu { + position: absolute; + margin: 0; + padding: 2px; + border-width: 1px; + border-style: solid; + overflow: hidden; +} +.menu-inline { + position: relative; +} +.menu-item { + position: relative; + margin: 0; + padding: 0; + overflow: hidden; + white-space: nowrap; + cursor: pointer; + border-width: 1px; + border-style: solid; +} +.menu-text { + height: 20px; + line-height: 20px; + float: left; + padding-left: 28px; +} +.menu-icon { + position: absolute; + width: 16px; + height: 16px; + left: 2px; + top: 50%; + margin-top: -8px; +} +.menu-rightarrow { + position: absolute; + width: 16px; + height: 16px; + right: 0; + top: 50%; + margin-top: -8px; +} +.menu-line { + position: absolute; + left: 26px; + top: 0; + height: 2000px; + font-size: 1px; +} +.menu-sep { + margin: 3px 0px 3px 25px; + font-size: 1px; +} +.menu-noline .menu-line { + display: none; +} +.menu-noline .menu-sep { + margin-left: 0; + margin-right: 0; +} +.menu-active { + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.menu-item-disabled { + opacity: 0.5; + filter: alpha(opacity=50); + cursor: default; +} +.menu-text, +.menu-text span { + font-size: 12px; +} +.menu-shadow { + position: absolute; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; + background: #ccc; + -moz-box-shadow: 2px 2px 3px #cccccc; + -webkit-box-shadow: 2px 2px 3px #cccccc; + box-shadow: 2px 2px 3px #cccccc; + filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); +} +.menu-rightarrow { + background: url('images/menu_arrows.png') no-repeat -32px center; +} +.menu-line { + border-left: 1px solid #ccc; + border-right: 1px solid #fff; +} +.menu-sep { + border-top: 1px solid #ccc; + border-bottom: 1px solid #fff; +} +.menu { + background-color: #fff; + border-color: #e6e6e6; + color: #333; +} +.menu-content { + background: #ffffff; +} +.menu-item { + border-color: transparent; + _border-color: #fff; +} +.menu-active { + border-color: #ddd; + color: #00438a; + background: #e6e6e6; +} +.menu-active-disabled { + border-color: transparent; + background: transparent; + color: #333; +} +.m-btn-downarrow, +.s-btn-downarrow { + display: inline-block; + position: absolute; + width: 16px; + height: 16px; + font-size: 1px; + right: 0; + top: 50%; + margin-top: -8px; +} +.m-btn-active, +.s-btn-active { + background: #e6e6e6; + color: #00438a; + border: 1px solid #ddd; + filter: none; +} +.m-btn-plain-active, +.s-btn-plain-active { + background: transparent; + padding: 0; + border-width: 1px; + border-style: solid; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.m-btn .l-btn-left .l-btn-text { + margin-right: 20px; +} +.m-btn .l-btn-icon-right .l-btn-text { + margin-right: 40px; +} +.m-btn .l-btn-icon-right .l-btn-icon { + right: 20px; +} +.m-btn .l-btn-icon-top .l-btn-text { + margin-right: 4px; + margin-bottom: 14px; +} +.m-btn .l-btn-icon-bottom .l-btn-text { + margin-right: 4px; + margin-bottom: 34px; +} +.m-btn .l-btn-icon-bottom .l-btn-icon { + top: auto; + bottom: 20px; +} +.m-btn .l-btn-icon-top .m-btn-downarrow, +.m-btn .l-btn-icon-bottom .m-btn-downarrow { + top: auto; + bottom: 0px; + left: 50%; + margin-left: -8px; +} +.m-btn-line { + display: inline-block; + position: absolute; + font-size: 1px; + display: none; +} +.m-btn .l-btn-left .m-btn-line { + right: 0; + width: 16px; + height: 500px; + border-style: solid; + border-color: #bbb; + border-width: 0 0 0 1px; +} +.m-btn .l-btn-icon-top .m-btn-line, +.m-btn .l-btn-icon-bottom .m-btn-line { + left: 0; + bottom: 0; + width: 500px; + height: 16px; + border-width: 1px 0 0 0; +} +.m-btn-large .l-btn-icon-right .l-btn-text { + margin-right: 56px; +} +.m-btn-large .l-btn-icon-bottom .l-btn-text { + margin-bottom: 50px; +} +.m-btn-downarrow, +.s-btn-downarrow { + background: url('images/menu_arrows.png') no-repeat 0 center; +} +.m-btn-plain-active, +.s-btn-plain-active { + border-color: #ddd; + background-color: #e6e6e6; + color: #00438a; +} +.s-btn:hover .m-btn-line, +.s-btn-active .m-btn-line, +.s-btn-plain-active .m-btn-line { + display: inline-block; +} +.l-btn:hover .s-btn-downarrow, +.s-btn-active .s-btn-downarrow, +.s-btn-plain-active .s-btn-downarrow { + border-style: solid; + border-color: #bbb; + border-width: 0 0 0 1px; +} +.messager-body { + padding: 10px 10px 30px 10px; + overflow: auto; +} +.messager-button { + text-align: center; + padding: 5px; +} +.messager-button .l-btn { + width: 70px; +} +.messager-icon { + float: left; + width: 32px; + height: 32px; + margin: 0 10px 10px 0; +} +.messager-error { + background: url('images/messager_icons.png') no-repeat scroll -64px 0; +} +.messager-info { + background: url('images/messager_icons.png') no-repeat scroll 0 0; +} +.messager-question { + background: url('images/messager_icons.png') no-repeat scroll -32px 0; +} +.messager-warning { + background: url('images/messager_icons.png') no-repeat scroll -96px 0; +} +.messager-progress { + padding: 10px; +} +.messager-p-msg { + margin-bottom: 5px; +} +.messager-body .messager-input { + width: 100%; + padding: 4px 0; + outline-style: none; + border: 1px solid #D4D4D4; +} +.window-thinborder .messager-button { + padding-bottom: 8px; +} +.tree { + margin: 0; + padding: 0; + list-style-type: none; +} +.tree li { + white-space: nowrap; +} +.tree li ul { + list-style-type: none; + margin: 0; + padding: 0; +} +.tree-node { + height: 18px; + white-space: nowrap; + cursor: pointer; +} +.tree-hit { + cursor: pointer; +} +.tree-expanded, +.tree-collapsed, +.tree-folder, +.tree-file, +.tree-checkbox, +.tree-indent { + display: inline-block; + width: 16px; + height: 18px; + vertical-align: top; + overflow: hidden; +} +.tree-expanded { + background: url('images/tree_icons.png') no-repeat -18px 0px; +} +.tree-expanded-hover { + background: url('images/tree_icons.png') no-repeat -50px 0px; +} +.tree-collapsed { + background: url('images/tree_icons.png') no-repeat 0px 0px; +} +.tree-collapsed-hover { + background: url('images/tree_icons.png') no-repeat -32px 0px; +} +.tree-lines .tree-expanded, +.tree-lines .tree-root-first .tree-expanded { + background: url('images/tree_icons.png') no-repeat -144px 0; +} +.tree-lines .tree-collapsed, +.tree-lines .tree-root-first .tree-collapsed { + background: url('images/tree_icons.png') no-repeat -128px 0; +} +.tree-lines .tree-node-last .tree-expanded, +.tree-lines .tree-root-one .tree-expanded { + background: url('images/tree_icons.png') no-repeat -80px 0; +} +.tree-lines .tree-node-last .tree-collapsed, +.tree-lines .tree-root-one .tree-collapsed { + background: url('images/tree_icons.png') no-repeat -64px 0; +} +.tree-line { + background: url('images/tree_icons.png') no-repeat -176px 0; +} +.tree-join { + background: url('images/tree_icons.png') no-repeat -192px 0; +} +.tree-joinbottom { + background: url('images/tree_icons.png') no-repeat -160px 0; +} +.tree-folder { + background: url('images/tree_icons.png') no-repeat -208px 0; +} +.tree-folder-open { + background: url('images/tree_icons.png') no-repeat -224px 0; +} +.tree-file { + background: url('images/tree_icons.png') no-repeat -240px 0; +} +.tree-loading { + background: url('images/loading.gif') no-repeat center center; +} +.tree-checkbox0 { + background: url('images/tree_icons.png') no-repeat -208px -18px; +} +.tree-checkbox1 { + background: url('images/tree_icons.png') no-repeat -224px -18px; +} +.tree-checkbox2 { + background: url('images/tree_icons.png') no-repeat -240px -18px; +} +.tree-title { + font-size: 12px; + display: inline-block; + text-decoration: none; + vertical-align: top; + white-space: nowrap; + padding: 0 2px; + height: 18px; + line-height: 18px; +} +.tree-node-proxy { + font-size: 12px; + line-height: 20px; + padding: 0 2px 0 20px; + border-width: 1px; + border-style: solid; + z-index: 9900000; +} +.tree-dnd-icon { + display: inline-block; + position: absolute; + width: 16px; + height: 18px; + left: 2px; + top: 50%; + margin-top: -9px; +} +.tree-dnd-yes { + background: url('images/tree_icons.png') no-repeat -256px 0; +} +.tree-dnd-no { + background: url('images/tree_icons.png') no-repeat -256px -18px; +} +.tree-node-top { + border-top: 1px dotted red; +} +.tree-node-bottom { + border-bottom: 1px dotted red; +} +.tree-node-append .tree-title { + border: 1px dotted red; +} +.tree-editor { + border: 1px solid #D4D4D4; + font-size: 12px; + line-height: 16px; + padding: 0 4px; + margin: 0; + width: 80px; + outline-style: none; + vertical-align: top; + position: absolute; + top: 0; +} +.tree-node-proxy { + background-color: #ffffff; + color: #333; + border-color: #D4D4D4; +} +.tree-node-hover { + background: #e6e6e6; + color: #00438a; +} +.tree-node-selected { + background: #0081c2; + color: #fff; +} +.tree-node-hidden { + display: none; +} +.validatebox-invalid { + border-color: #ffa8a8; + background-color: #fff3f3; + color: #000; +} +.tooltip { + position: absolute; + display: none; + z-index: 9900000; + outline: none; + opacity: 1; + filter: alpha(opacity=100); + padding: 5px; + border-width: 1px; + border-style: solid; + border-radius: 5px; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.tooltip-content { + font-size: 12px; +} +.tooltip-arrow-outer, +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; + line-height: 0; + font-size: 0; + border-style: solid; + border-width: 6px; + border-color: transparent; + _border-color: tomato; + _filter: chroma(color=tomato); +} +.tooltip-arrow { + display: none \9; +} +.tooltip-right .tooltip-arrow-outer { + left: 0; + top: 50%; + margin: -6px 0 0 -13px; +} +.tooltip-right .tooltip-arrow { + left: 0; + top: 50%; + margin: -6px 0 0 -12px; +} +.tooltip-left .tooltip-arrow-outer { + right: 0; + top: 50%; + margin: -6px -13px 0 0; +} +.tooltip-left .tooltip-arrow { + right: 0; + top: 50%; + margin: -6px -12px 0 0; +} +.tooltip-top .tooltip-arrow-outer { + bottom: 0; + left: 50%; + margin: 0 0 -13px -6px; +} +.tooltip-top .tooltip-arrow { + bottom: 0; + left: 50%; + margin: 0 0 -12px -6px; +} +.tooltip-bottom .tooltip-arrow-outer { + top: 0; + left: 50%; + margin: -13px 0 0 -6px; +} +.tooltip-bottom .tooltip-arrow { + top: 0; + left: 50%; + margin: -12px 0 0 -6px; +} +.tooltip { + background-color: #ffffff; + border-color: #D4D4D4; + color: #333; +} +.tooltip-right .tooltip-arrow-outer { + border-right-color: #D4D4D4; +} +.tooltip-right .tooltip-arrow { + border-right-color: #ffffff; +} +.tooltip-left .tooltip-arrow-outer { + border-left-color: #D4D4D4; +} +.tooltip-left .tooltip-arrow { + border-left-color: #ffffff; +} +.tooltip-top .tooltip-arrow-outer { + border-top-color: #D4D4D4; +} +.tooltip-top .tooltip-arrow { + border-top-color: #ffffff; +} +.tooltip-bottom .tooltip-arrow-outer { + border-bottom-color: #D4D4D4; +} +.tooltip-bottom .tooltip-arrow { + border-bottom-color: #ffffff; +} +.switchbutton { + text-decoration: none; + display: inline-block; + overflow: hidden; + vertical-align: middle; + margin: 0; + padding: 0; + cursor: pointer; + background: #bbb; + border: 1px solid #bbb; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.switchbutton-inner { + display: inline-block; + overflow: hidden; + position: relative; + top: -1px; + left: -1px; +} +.switchbutton-on, +.switchbutton-off, +.switchbutton-handle { + display: inline-block; + text-align: center; + height: 100%; + float: left; + font-size: 12px; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.switchbutton-on { + background: #0081c2; + color: #fff; +} +.switchbutton-off { + background-color: #ffffff; + color: #333; +} +.switchbutton-on, +.switchbutton-reversed .switchbutton-off { + -moz-border-radius: 5px 0 0 5px; + -webkit-border-radius: 5px 0 0 5px; + border-radius: 5px 0 0 5px; +} +.switchbutton-off, +.switchbutton-reversed .switchbutton-on { + -moz-border-radius: 0 5px 5px 0; + -webkit-border-radius: 0 5px 5px 0; + border-radius: 0 5px 5px 0; +} +.switchbutton-handle { + position: absolute; + top: 0; + left: 50%; + background-color: #ffffff; + color: #333; + border: 1px solid #bbb; + -moz-box-shadow: 0 0 3px 0 #bbb; + -webkit-box-shadow: 0 0 3px 0 #bbb; + box-shadow: 0 0 3px 0 #bbb; +} +.switchbutton-value { + position: absolute; + top: 0; + left: -5000px; +} +.switchbutton-disabled { + opacity: 0.5; + filter: alpha(opacity=50); +} +.switchbutton-disabled, +.switchbutton-readonly { + cursor: default; +} +.tabs-panels { + border-color: transparent; +} +.tabs li a.tabs-inner { + border-color: transparent; + background: transparent; + filter: none; + color: #0088CC; +} +.menu-active { + background-color: #0081C2; + border-color: #0081C2; + color: #fff; +} +.menu-active-disabled { + border-color: transparent; + background: transparent; + color: #333; +} diff --git a/src/main/webapp/static/easyUI/themes/bootstrap/filebox.css b/src/main/webapp/static/easyUI/themes/bootstrap/filebox.css new file mode 100644 index 0000000000000000000000000000000000000000..c6bac66315046138147a673e0ffaa3d36bce3acc --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/bootstrap/filebox.css @@ -0,0 +1,20 @@ +.filebox .textbox-value { + vertical-align: top; + position: absolute; + top: 0; + left: -5000px; +} +.filebox-label { + display: inline-block; + position: absolute; + width: 100%; + height: 100%; + cursor: pointer; + left: 0; + top: 0; + z-index: 10; + background: url('images/blank.gif') no-repeat; +} +.l-btn-disabled .filebox-label { + cursor: default; +} diff --git a/src/main/webapp/static/easyUI/themes/bootstrap/images/accordion_arrows.png b/src/main/webapp/static/easyUI/themes/bootstrap/images/accordion_arrows.png new file mode 100644 index 0000000000000000000000000000000000000000..720835f69c96c17ec32a20b03ac9753aa59b7f4f Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/bootstrap/images/accordion_arrows.png differ diff --git a/src/main/webapp/static/easyUI/themes/bootstrap/images/blank.gif b/src/main/webapp/static/easyUI/themes/bootstrap/images/blank.gif new file mode 100644 index 0000000000000000000000000000000000000000..1d11fa9ada9e93505b3d736acb204083f45d5fbf Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/bootstrap/images/blank.gif differ diff --git a/src/main/webapp/static/easyUI/themes/bootstrap/images/calendar_arrows.png b/src/main/webapp/static/easyUI/themes/bootstrap/images/calendar_arrows.png new file mode 100644 index 0000000000000000000000000000000000000000..430c4ad685b8c0068ecb7e3cbef74f493a84ad0d Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/bootstrap/images/calendar_arrows.png differ diff --git a/src/main/webapp/static/easyUI/themes/bootstrap/images/combo_arrow.png b/src/main/webapp/static/easyUI/themes/bootstrap/images/combo_arrow.png new file mode 100644 index 0000000000000000000000000000000000000000..2e59fb9f3f906487ffa20bdad81a14692ba9e01a Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/bootstrap/images/combo_arrow.png differ diff --git a/src/main/webapp/static/easyUI/themes/bootstrap/images/datagrid_icons.png b/src/main/webapp/static/easyUI/themes/bootstrap/images/datagrid_icons.png new file mode 100644 index 0000000000000000000000000000000000000000..762d0ce0f77ea47e1a638e32e974b2ddbb42c7c1 Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/bootstrap/images/datagrid_icons.png differ diff --git a/src/main/webapp/static/easyUI/themes/bootstrap/images/datebox_arrow.png b/src/main/webapp/static/easyUI/themes/bootstrap/images/datebox_arrow.png new file mode 100644 index 0000000000000000000000000000000000000000..783c83357fdf90a1c7c024358e1d768b5c09c135 Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/bootstrap/images/datebox_arrow.png differ diff --git a/src/main/webapp/static/easyUI/themes/bootstrap/images/layout_arrows.png b/src/main/webapp/static/easyUI/themes/bootstrap/images/layout_arrows.png new file mode 100644 index 0000000000000000000000000000000000000000..6f41654253030183f8220a815e85ed56d05ca9a3 Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/bootstrap/images/layout_arrows.png differ diff --git a/src/main/webapp/static/easyUI/themes/bootstrap/images/linkbutton_bg.png b/src/main/webapp/static/easyUI/themes/bootstrap/images/linkbutton_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..fc66bd2cd24047b8377342365a1df3846327ecde Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/bootstrap/images/linkbutton_bg.png differ diff --git a/src/main/webapp/static/easyUI/themes/bootstrap/images/loading.gif b/src/main/webapp/static/easyUI/themes/bootstrap/images/loading.gif new file mode 100644 index 0000000000000000000000000000000000000000..68f01d04813c1f622810864a3aaa04b4a17ac8f9 Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/bootstrap/images/loading.gif differ diff --git a/src/main/webapp/static/easyUI/themes/bootstrap/images/menu_arrows.png b/src/main/webapp/static/easyUI/themes/bootstrap/images/menu_arrows.png new file mode 100644 index 0000000000000000000000000000000000000000..b986842e7e4044caed18edbcb4b376a4bb915623 Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/bootstrap/images/menu_arrows.png differ diff --git a/src/main/webapp/static/easyUI/themes/bootstrap/images/messager_icons.png b/src/main/webapp/static/easyUI/themes/bootstrap/images/messager_icons.png new file mode 100644 index 0000000000000000000000000000000000000000..62c18c135860351063ebaabe8c0f4df7664b8f65 Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/bootstrap/images/messager_icons.png differ diff --git a/src/main/webapp/static/easyUI/themes/bootstrap/images/pagination_icons.png b/src/main/webapp/static/easyUI/themes/bootstrap/images/pagination_icons.png new file mode 100644 index 0000000000000000000000000000000000000000..616f0bdd6f589a6e6f9722665c95558356e47a6d Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/bootstrap/images/pagination_icons.png differ diff --git a/src/main/webapp/static/easyUI/themes/bootstrap/images/panel_tools.png b/src/main/webapp/static/easyUI/themes/bootstrap/images/panel_tools.png new file mode 100644 index 0000000000000000000000000000000000000000..fe682ef89d18503561269b27225e9fde8c00259b Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/bootstrap/images/panel_tools.png differ diff --git a/src/main/webapp/static/easyUI/themes/bootstrap/images/passwordbox_close.png b/src/main/webapp/static/easyUI/themes/bootstrap/images/passwordbox_close.png new file mode 100644 index 0000000000000000000000000000000000000000..643c09da9af25c601b4c4be9215350f6fd8b1514 Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/bootstrap/images/passwordbox_close.png differ diff --git a/src/main/webapp/static/easyUI/themes/bootstrap/images/passwordbox_open.png b/src/main/webapp/static/easyUI/themes/bootstrap/images/passwordbox_open.png new file mode 100644 index 0000000000000000000000000000000000000000..d328891f6a18ea703fd25a47b228df9cb13b4744 Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/bootstrap/images/passwordbox_open.png differ diff --git a/src/main/webapp/static/easyUI/themes/bootstrap/images/searchbox_button.png b/src/main/webapp/static/easyUI/themes/bootstrap/images/searchbox_button.png new file mode 100644 index 0000000000000000000000000000000000000000..6dd1931589b453f6cc9772fd1851d8705d6b6631 Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/bootstrap/images/searchbox_button.png differ diff --git a/src/main/webapp/static/easyUI/themes/bootstrap/images/slider_handle.png b/src/main/webapp/static/easyUI/themes/bootstrap/images/slider_handle.png new file mode 100644 index 0000000000000000000000000000000000000000..b9802bae14c536281a8fdbe6cd07abbc13985033 Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/bootstrap/images/slider_handle.png differ diff --git a/src/main/webapp/static/easyUI/themes/bootstrap/images/spinner_arrows.png b/src/main/webapp/static/easyUI/themes/bootstrap/images/spinner_arrows.png new file mode 100644 index 0000000000000000000000000000000000000000..7c2df483dbb30dfb3a51332c03fe6f0c229c0547 Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/bootstrap/images/spinner_arrows.png differ diff --git a/src/main/webapp/static/easyUI/themes/bootstrap/images/tabs_icons.png b/src/main/webapp/static/easyUI/themes/bootstrap/images/tabs_icons.png new file mode 100644 index 0000000000000000000000000000000000000000..4d29966d7154338a9e2e358821a5f72655eba43e Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/bootstrap/images/tabs_icons.png differ diff --git a/src/main/webapp/static/easyUI/themes/bootstrap/images/tagbox_icons.png b/src/main/webapp/static/easyUI/themes/bootstrap/images/tagbox_icons.png new file mode 100644 index 0000000000000000000000000000000000000000..bd02e2d817c6b7c4e2a105919e9a89cc0a1d577f Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/bootstrap/images/tagbox_icons.png differ diff --git a/src/main/webapp/static/easyUI/themes/bootstrap/images/tree_icons.png b/src/main/webapp/static/easyUI/themes/bootstrap/images/tree_icons.png new file mode 100644 index 0000000000000000000000000000000000000000..e9be4f3a9965e49a4e4078f8c53f486d761a7468 Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/bootstrap/images/tree_icons.png differ diff --git a/src/main/webapp/static/easyUI/themes/bootstrap/images/validatebox_warning.png b/src/main/webapp/static/easyUI/themes/bootstrap/images/validatebox_warning.png new file mode 100644 index 0000000000000000000000000000000000000000..2b3d4f05babf3f82b146350e96570fac02075de0 Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/bootstrap/images/validatebox_warning.png differ diff --git a/src/main/webapp/static/easyUI/themes/bootstrap/layout.css b/src/main/webapp/static/easyUI/themes/bootstrap/layout.css new file mode 100644 index 0000000000000000000000000000000000000000..f447246640457086ce07b3af357cd1f2ad464968 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/bootstrap/layout.css @@ -0,0 +1,150 @@ +.layout { + position: relative; + overflow: hidden; + margin: 0; + padding: 0; + z-index: 0; +} +.layout-panel { + position: absolute; + overflow: hidden; +} +.layout-body { + min-width: 1px; + min-height: 1px; +} +.layout-panel-east, +.layout-panel-west { + z-index: 2; +} +.layout-panel-north, +.layout-panel-south { + z-index: 3; +} +.layout-expand { + position: absolute; + padding: 0px; + font-size: 1px; + cursor: pointer; + z-index: 1; +} +.layout-expand .panel-header, +.layout-expand .panel-body { + background: transparent; + filter: none; + overflow: hidden; +} +.layout-expand .panel-header { + border-bottom-width: 0px; +} +.layout-expand .panel-body { + position: relative; +} +.layout-expand .panel-body .panel-icon { + margin-top: 0; + top: 0; + left: 50%; + margin-left: -8px; +} +.layout-expand-west .panel-header .panel-icon, +.layout-expand-east .panel-header .panel-icon { + display: none; +} +.layout-expand-title { + position: absolute; + top: 0; + left: 21px; + white-space: nowrap; + word-wrap: normal; + -webkit-transform: rotate(90deg); + -webkit-transform-origin: 0 0; + -moz-transform: rotate(90deg); + -moz-transform-origin: 0 0; + -o-transform: rotate(90deg); + -o-transform-origin: 0 0; + transform: rotate(90deg); + transform-origin: 0 0; +} +.layout-expand-title-up { + position: absolute; + top: 0; + left: 0; + text-align: right; + padding-left: 5px; + white-space: nowrap; + word-wrap: normal; + -webkit-transform: rotate(-90deg); + -webkit-transform-origin: 0 0; + -moz-transform: rotate(-90deg); + -moz-transform-origin: 0 0; + -o-transform: rotate(-90deg); + -o-transform-origin: 0 0; + transform: rotate(-90deg); + transform-origin: 0 0; +} +.layout-expand-with-icon { + top: 18px; +} +.layout-expand .panel-body-noheader .layout-expand-title, +.layout-expand .panel-body-noheader .panel-icon { + top: 5px; +} +.layout-expand .panel-body-noheader .layout-expand-with-icon { + top: 23px; +} +.layout-split-proxy-h, +.layout-split-proxy-v { + position: absolute; + font-size: 1px; + display: none; + z-index: 5; +} +.layout-split-proxy-h { + width: 5px; + cursor: e-resize; +} +.layout-split-proxy-v { + height: 5px; + cursor: n-resize; +} +.layout-mask { + position: absolute; + background: #fafafa; + filter: alpha(opacity=10); + opacity: 0.10; + z-index: 4; +} +.layout-button-up { + background: url('images/layout_arrows.png') no-repeat -16px -16px; +} +.layout-button-down { + background: url('images/layout_arrows.png') no-repeat -16px 0; +} +.layout-button-left { + background: url('images/layout_arrows.png') no-repeat 0 0; +} +.layout-button-right { + background: url('images/layout_arrows.png') no-repeat 0 -16px; +} +.layout-split-proxy-h, +.layout-split-proxy-v { + background-color: #bbb; +} +.layout-split-north { + border-bottom: 5px solid #eee; +} +.layout-split-south { + border-top: 5px solid #eee; +} +.layout-split-east { + border-left: 5px solid #eee; +} +.layout-split-west { + border-right: 5px solid #eee; +} +.layout-expand { + background-color: #F2F2F2; +} +.layout-expand-over { + background-color: #F2F2F2; +} diff --git a/src/main/webapp/static/easyUI/themes/bootstrap/linkbutton.css b/src/main/webapp/static/easyUI/themes/bootstrap/linkbutton.css new file mode 100644 index 0000000000000000000000000000000000000000..35ccfae56d2eb090451342a526bcb2df0aa53d92 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/bootstrap/linkbutton.css @@ -0,0 +1,203 @@ +.l-btn { + text-decoration: none; + display: inline-block; + overflow: hidden; + margin: 0; + padding: 0; + cursor: pointer; + outline: none; + text-align: center; + vertical-align: middle; + line-height: normal; +} +.l-btn-plain { + border-width: 0; + padding: 1px; +} +.l-btn-left { + display: inline-block; + position: relative; + overflow: hidden; + margin: 0; + padding: 0; + vertical-align: top; +} +.l-btn-text { + display: inline-block; + vertical-align: top; + width: auto; + line-height: 24px; + font-size: 12px; + padding: 0; + margin: 0 4px; +} +.l-btn-icon { + display: inline-block; + width: 16px; + height: 16px; + line-height: 16px; + position: absolute; + top: 50%; + margin-top: -8px; + font-size: 1px; +} +.l-btn span span .l-btn-empty { + display: inline-block; + margin: 0; + width: 16px; + height: 24px; + font-size: 1px; + vertical-align: top; +} +.l-btn span .l-btn-icon-left { + padding: 0 0 0 20px; + background-position: left center; +} +.l-btn span .l-btn-icon-right { + padding: 0 20px 0 0; + background-position: right center; +} +.l-btn-icon-left .l-btn-text { + margin: 0 4px 0 24px; +} +.l-btn-icon-left .l-btn-icon { + left: 4px; +} +.l-btn-icon-right .l-btn-text { + margin: 0 24px 0 4px; +} +.l-btn-icon-right .l-btn-icon { + right: 4px; +} +.l-btn-icon-top .l-btn-text { + margin: 20px 4px 0 4px; +} +.l-btn-icon-top .l-btn-icon { + top: 4px; + left: 50%; + margin: 0 0 0 -8px; +} +.l-btn-icon-bottom .l-btn-text { + margin: 0 4px 20px 4px; +} +.l-btn-icon-bottom .l-btn-icon { + top: auto; + bottom: 4px; + left: 50%; + margin: 0 0 0 -8px; +} +.l-btn-left .l-btn-empty { + margin: 0 4px; + width: 16px; +} +.l-btn-plain:hover { + padding: 0; +} +.l-btn-focus { + outline: #0000FF dotted thin; +} +.l-btn-large .l-btn-text { + line-height: 40px; +} +.l-btn-large .l-btn-icon { + width: 32px; + height: 32px; + line-height: 32px; + margin-top: -16px; +} +.l-btn-large .l-btn-icon-left .l-btn-text { + margin-left: 40px; +} +.l-btn-large .l-btn-icon-right .l-btn-text { + margin-right: 40px; +} +.l-btn-large .l-btn-icon-top .l-btn-text { + margin-top: 36px; + line-height: 24px; + min-width: 32px; +} +.l-btn-large .l-btn-icon-top .l-btn-icon { + margin: 0 0 0 -16px; +} +.l-btn-large .l-btn-icon-bottom .l-btn-text { + margin-bottom: 36px; + line-height: 24px; + min-width: 32px; +} +.l-btn-large .l-btn-icon-bottom .l-btn-icon { + margin: 0 0 0 -16px; +} +.l-btn-large .l-btn-left .l-btn-empty { + margin: 0 4px; + width: 32px; +} +.l-btn { + color: #444; + background: #f5f5f5; + background-repeat: repeat-x; + border: 1px solid #bbb; + background: -webkit-linear-gradient(top,#ffffff 0,#e6e6e6 100%); + background: -moz-linear-gradient(top,#ffffff 0,#e6e6e6 100%); + background: -o-linear-gradient(top,#ffffff 0,#e6e6e6 100%); + background: linear-gradient(to bottom,#ffffff 0,#e6e6e6 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#e6e6e6,GradientType=0); + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.l-btn:hover { + background: #e6e6e6; + color: #00438a; + border: 1px solid #ddd; + filter: none; +} +.l-btn-plain { + background: transparent; + border-width: 0; + filter: none; +} +.l-btn-outline { + border-width: 1px; + border-color: #ddd; + padding: 0; +} +.l-btn-plain:hover { + background: #e6e6e6; + color: #00438a; + border: 1px solid #ddd; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.l-btn-disabled, +.l-btn-disabled:hover { + opacity: 0.5; + cursor: default; + background: #f5f5f5; + color: #444; + background: -webkit-linear-gradient(top,#ffffff 0,#e6e6e6 100%); + background: -moz-linear-gradient(top,#ffffff 0,#e6e6e6 100%); + background: -o-linear-gradient(top,#ffffff 0,#e6e6e6 100%); + background: linear-gradient(to bottom,#ffffff 0,#e6e6e6 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#e6e6e6,GradientType=0); +} +.l-btn-disabled .l-btn-text, +.l-btn-disabled .l-btn-icon { + filter: alpha(opacity=50); +} +.l-btn-plain-disabled, +.l-btn-plain-disabled:hover { + background: transparent; + filter: alpha(opacity=50); +} +.l-btn-selected, +.l-btn-selected:hover { + background: #ddd; + filter: none; +} +.l-btn-plain-selected, +.l-btn-plain-selected:hover { + background: #ddd; +} diff --git a/src/main/webapp/static/easyUI/themes/bootstrap/menu.css b/src/main/webapp/static/easyUI/themes/bootstrap/menu.css new file mode 100644 index 0000000000000000000000000000000000000000..d74908f1f4038d014be123a6c35fe220f65165be --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/bootstrap/menu.css @@ -0,0 +1,119 @@ +.menu { + position: absolute; + margin: 0; + padding: 2px; + border-width: 1px; + border-style: solid; + overflow: hidden; +} +.menu-inline { + position: relative; +} +.menu-item { + position: relative; + margin: 0; + padding: 0; + overflow: hidden; + white-space: nowrap; + cursor: pointer; + border-width: 1px; + border-style: solid; +} +.menu-text { + height: 20px; + line-height: 20px; + float: left; + padding-left: 28px; +} +.menu-icon { + position: absolute; + width: 16px; + height: 16px; + left: 2px; + top: 50%; + margin-top: -8px; +} +.menu-rightarrow { + position: absolute; + width: 16px; + height: 16px; + right: 0; + top: 50%; + margin-top: -8px; +} +.menu-line { + position: absolute; + left: 26px; + top: 0; + height: 2000px; + font-size: 1px; +} +.menu-sep { + margin: 3px 0px 3px 25px; + font-size: 1px; +} +.menu-noline .menu-line { + display: none; +} +.menu-noline .menu-sep { + margin-left: 0; + margin-right: 0; +} +.menu-active { + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.menu-item-disabled { + opacity: 0.5; + filter: alpha(opacity=50); + cursor: default; +} +.menu-text, +.menu-text span { + font-size: 12px; +} +.menu-shadow { + position: absolute; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; + background: #ccc; + -moz-box-shadow: 2px 2px 3px #cccccc; + -webkit-box-shadow: 2px 2px 3px #cccccc; + box-shadow: 2px 2px 3px #cccccc; + filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); +} +.menu-rightarrow { + background: url('images/menu_arrows.png') no-repeat -32px center; +} +.menu-line { + border-left: 1px solid #ccc; + border-right: 1px solid #fff; +} +.menu-sep { + border-top: 1px solid #ccc; + border-bottom: 1px solid #fff; +} +.menu { + background-color: #fff; + border-color: #e6e6e6; + color: #333; +} +.menu-content { + background: #ffffff; +} +.menu-item { + border-color: transparent; + _border-color: #fff; +} +.menu-active { + border-color: #ddd; + color: #00438a; + background: #e6e6e6; +} +.menu-active-disabled { + border-color: transparent; + background: transparent; + color: #333; +} diff --git a/src/main/webapp/static/easyUI/themes/bootstrap/menubutton.css b/src/main/webapp/static/easyUI/themes/bootstrap/menubutton.css new file mode 100644 index 0000000000000000000000000000000000000000..89ac235a71e5cf6c25c50a4f7e7afedb6cf373cf --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/bootstrap/menubutton.css @@ -0,0 +1,94 @@ +.m-btn-downarrow, +.s-btn-downarrow { + display: inline-block; + position: absolute; + width: 16px; + height: 16px; + font-size: 1px; + right: 0; + top: 50%; + margin-top: -8px; +} +.m-btn-active, +.s-btn-active { + background: #e6e6e6; + color: #00438a; + border: 1px solid #ddd; + filter: none; +} +.m-btn-plain-active, +.s-btn-plain-active { + background: transparent; + padding: 0; + border-width: 1px; + border-style: solid; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.m-btn .l-btn-left .l-btn-text { + margin-right: 20px; +} +.m-btn .l-btn-icon-right .l-btn-text { + margin-right: 40px; +} +.m-btn .l-btn-icon-right .l-btn-icon { + right: 20px; +} +.m-btn .l-btn-icon-top .l-btn-text { + margin-right: 4px; + margin-bottom: 14px; +} +.m-btn .l-btn-icon-bottom .l-btn-text { + margin-right: 4px; + margin-bottom: 34px; +} +.m-btn .l-btn-icon-bottom .l-btn-icon { + top: auto; + bottom: 20px; +} +.m-btn .l-btn-icon-top .m-btn-downarrow, +.m-btn .l-btn-icon-bottom .m-btn-downarrow { + top: auto; + bottom: 0px; + left: 50%; + margin-left: -8px; +} +.m-btn-line { + display: inline-block; + position: absolute; + font-size: 1px; + display: none; +} +.m-btn .l-btn-left .m-btn-line { + right: 0; + width: 16px; + height: 500px; + border-style: solid; + border-color: #bbb; + border-width: 0 0 0 1px; +} +.m-btn .l-btn-icon-top .m-btn-line, +.m-btn .l-btn-icon-bottom .m-btn-line { + left: 0; + bottom: 0; + width: 500px; + height: 16px; + border-width: 1px 0 0 0; +} +.m-btn-large .l-btn-icon-right .l-btn-text { + margin-right: 56px; +} +.m-btn-large .l-btn-icon-bottom .l-btn-text { + margin-bottom: 50px; +} +.m-btn-downarrow, +.s-btn-downarrow { + background: url('images/menu_arrows.png') no-repeat 0 center; +} +.m-btn-plain-active, +.s-btn-plain-active { + border-color: #ddd; + background-color: #e6e6e6; + color: #00438a; +} diff --git a/src/main/webapp/static/easyUI/themes/bootstrap/messager.css b/src/main/webapp/static/easyUI/themes/bootstrap/messager.css new file mode 100644 index 0000000000000000000000000000000000000000..60bc491ef2622d6641eb979934a5c8a99542f782 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/bootstrap/messager.css @@ -0,0 +1,44 @@ +.messager-body { + padding: 10px 10px 30px 10px; + overflow: auto; +} +.messager-button { + text-align: center; + padding: 5px; +} +.messager-button .l-btn { + width: 70px; +} +.messager-icon { + float: left; + width: 32px; + height: 32px; + margin: 0 10px 10px 0; +} +.messager-error { + background: url('images/messager_icons.png') no-repeat scroll -64px 0; +} +.messager-info { + background: url('images/messager_icons.png') no-repeat scroll 0 0; +} +.messager-question { + background: url('images/messager_icons.png') no-repeat scroll -32px 0; +} +.messager-warning { + background: url('images/messager_icons.png') no-repeat scroll -96px 0; +} +.messager-progress { + padding: 10px; +} +.messager-p-msg { + margin-bottom: 5px; +} +.messager-body .messager-input { + width: 100%; + padding: 4px 0; + outline-style: none; + border: 1px solid #D4D4D4; +} +.window-thinborder .messager-button { + padding-bottom: 8px; +} diff --git a/src/main/webapp/static/easyUI/themes/bootstrap/numberbox.css b/src/main/webapp/static/easyUI/themes/bootstrap/numberbox.css new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/main/webapp/static/easyUI/themes/bootstrap/pagination.css b/src/main/webapp/static/easyUI/themes/bootstrap/pagination.css new file mode 100644 index 0000000000000000000000000000000000000000..e0a7c89a36e1fbcecc9069c9d81d51aa463500bd --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/bootstrap/pagination.css @@ -0,0 +1,71 @@ +.pagination { + zoom: 1; +} +.pagination table { + float: left; + height: 30px; +} +.pagination td { + border: 0; +} +.pagination-btn-separator { + float: left; + height: 24px; + border-left: 1px solid #ccc; + border-right: 1px solid #fff; + margin: 3px 1px; +} +.pagination .pagination-num { + border-width: 1px; + border-style: solid; + margin: 0 2px; + padding: 2px; + width: 2em; + height: auto; +} +.pagination-page-list { + margin: 0px 6px; + padding: 1px 2px; + width: auto; + height: auto; + border-width: 1px; + border-style: solid; +} +.pagination-info { + float: right; + margin: 0 6px; + padding: 0; + height: 30px; + line-height: 30px; + font-size: 12px; +} +.pagination span { + font-size: 12px; +} +.pagination-link .l-btn-text { + width: 24px; + text-align: center; + margin: 0; +} +.pagination-first { + background: url('images/pagination_icons.png') no-repeat 0 center; +} +.pagination-prev { + background: url('images/pagination_icons.png') no-repeat -16px center; +} +.pagination-next { + background: url('images/pagination_icons.png') no-repeat -32px center; +} +.pagination-last { + background: url('images/pagination_icons.png') no-repeat -48px center; +} +.pagination-load { + background: url('images/pagination_icons.png') no-repeat -64px center; +} +.pagination-loading { + background: url('images/loading.gif') no-repeat center center; +} +.pagination-page-list, +.pagination .pagination-num { + border-color: #D4D4D4; +} diff --git a/src/main/webapp/static/easyUI/themes/bootstrap/panel.css b/src/main/webapp/static/easyUI/themes/bootstrap/panel.css new file mode 100644 index 0000000000000000000000000000000000000000..270b50fa2b878f1b8ad1ff25e73d834450709b4f --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/bootstrap/panel.css @@ -0,0 +1,265 @@ +.panel { + overflow: hidden; + text-align: left; + margin: 0; + border: 0; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.panel-header, +.panel-body { + border-width: 1px; + border-style: solid; +} +.panel-header { + padding: 5px; + position: relative; +} +.panel-title { + background: url('images/blank.gif') no-repeat; +} +.panel-header-noborder { + border-width: 0 0 1px 0; +} +.panel-body { + overflow: auto; + border-top-width: 0; + padding: 0; +} +.panel-body-noheader { + border-top-width: 1px; +} +.panel-body-noborder { + border-width: 0px; +} +.panel-body-nobottom { + border-bottom-width: 0; +} +.panel-with-icon { + padding-left: 18px; +} +.panel-icon, +.panel-tool { + position: absolute; + top: 50%; + margin-top: -8px; + height: 16px; + overflow: hidden; +} +.panel-icon { + left: 5px; + width: 16px; +} +.panel-tool { + right: 5px; + width: auto; +} +.panel-tool a { + display: inline-block; + width: 16px; + height: 16px; + opacity: 0.6; + filter: alpha(opacity=60); + margin: 0 0 0 2px; + vertical-align: top; +} +.panel-tool a:hover { + opacity: 1; + filter: alpha(opacity=100); + background-color: #e6e6e6; + -moz-border-radius: 3px 3px 3px 3px; + -webkit-border-radius: 3px 3px 3px 3px; + border-radius: 3px 3px 3px 3px; +} +.panel-loading { + padding: 11px 0px 10px 30px; +} +.panel-noscroll { + overflow: hidden; +} +.panel-fit, +.panel-fit body { + height: 100%; + margin: 0; + padding: 0; + border: 0; + overflow: hidden; +} +.panel-loading { + background: url('images/loading.gif') no-repeat 10px 10px; +} +.panel-tool-close { + background: url('images/panel_tools.png') no-repeat -16px 0px; +} +.panel-tool-min { + background: url('images/panel_tools.png') no-repeat 0px 0px; +} +.panel-tool-max { + background: url('images/panel_tools.png') no-repeat 0px -16px; +} +.panel-tool-restore { + background: url('images/panel_tools.png') no-repeat -16px -16px; +} +.panel-tool-collapse { + background: url('images/panel_tools.png') no-repeat -32px 0; +} +.panel-tool-expand { + background: url('images/panel_tools.png') no-repeat -32px -16px; +} +.panel-header, +.panel-body { + border-color: #D4D4D4; +} +.panel-header { + background-color: #F2F2F2; + background: -webkit-linear-gradient(top,#ffffff 0,#F2F2F2 100%); + background: -moz-linear-gradient(top,#ffffff 0,#F2F2F2 100%); + background: -o-linear-gradient(top,#ffffff 0,#F2F2F2 100%); + background: linear-gradient(to bottom,#ffffff 0,#F2F2F2 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#F2F2F2,GradientType=0); +} +.panel-body { + background-color: #ffffff; + color: #333; + font-size: 12px; +} +.panel-title { + font-size: 12px; + font-weight: bold; + color: #777; + height: 16px; + line-height: 16px; +} +.panel-footer { + border: 1px solid #D4D4D4; + overflow: hidden; + background: #F5F5F5; +} +.panel-footer-noborder { + border-width: 1px 0 0 0; +} +.panel-hleft, +.panel-hright { + position: relative; +} +.panel-hleft>.panel-body, +.panel-hright>.panel-body { + position: absolute; +} +.panel-hleft>.panel-header { + float: left; +} +.panel-hright>.panel-header { + float: right; +} +.panel-hleft>.panel-body { + border-top-width: 1px; + border-left-width: 0; +} +.panel-hright>.panel-body { + border-top-width: 1px; + border-right-width: 0; +} +.panel-hleft>.panel-body-nobottom { + border-bottom-width: 1px; + border-right-width: 0; +} +.panel-hright>.panel-body-nobottom { + border-bottom-width: 1px; + border-left-width: 0; +} +.panel-hleft>.panel-footer { + position: absolute; + right: 0; +} +.panel-hright>.panel-footer { + position: absolute; + left: 0; +} +.panel-hleft>.panel-header-noborder { + border-width: 0 1px 0 0; +} +.panel-hright>.panel-header-noborder { + border-width: 0 0 0 1px; +} +.panel-hleft>.panel-body-noborder { + border-width: 0; +} +.panel-hright>.panel-body-noborder { + border-width: 0; +} +.panel-hleft>.panel-body-noheader { + border-left-width: 1px; +} +.panel-hright>.panel-body-noheader { + border-right-width: 1px; +} +.panel-hleft>.panel-footer-noborder { + border-width: 0 0 0 1px; +} +.panel-hright>.panel-footer-noborder { + border-width: 0 1px 0 0; +} +.panel-hleft>.panel-header .panel-icon, +.panel-hright>.panel-header .panel-icon { + margin-top: 0; + top: 5px; +} +.panel-hleft>.panel-header .panel-title, +.panel-hright>.panel-header .panel-title { + position: absolute; + min-width: 16px; + left: 21px; + top: 5px; + bottom: auto; + white-space: nowrap; + word-wrap: normal; + -webkit-transform: rotate(90deg); + -webkit-transform-origin: 0 0; + -moz-transform: rotate(90deg); + -moz-transform-origin: 0 0; + -o-transform: rotate(90deg); + -o-transform-origin: 0 0; + transform: rotate(90deg); + transform-origin: 0 0; +} +.panel-hleft>.panel-header .panel-title-up, +.panel-hright>.panel-header .panel-title-up { + position: absolute; + min-width: 16px; + left: 21px; + top: auto; + bottom: 5px; + text-align: right; + white-space: nowrap; + word-wrap: normal; + -webkit-transform: rotate(-90deg); + -webkit-transform-origin: 0 0; + -moz-transform: rotate(-90deg); + -moz-transform-origin: 0 0; + -o-transform: rotate(-90deg); + -o-transform-origin: 0 0; + transform: rotate(-90deg); + transform-origin: 0 16px; +} +.panel-hleft>.panel-header .panel-with-icon.panel-title-up, +.panel-hright>.panel-header .panel-with-icon.panel-title-up { + padding-left: 0; + padding-right: 18px; +} +.panel-hleft>.panel-header .panel-tool, +.panel-hright>.panel-header .panel-tool { + top: auto; + bottom: 5px; + width: 16px; + height: auto; + left: 50%; + margin-left: -8px; + margin-top: 0; +} +.panel-hleft>.panel-header .panel-tool a, +.panel-hright>.panel-header .panel-tool a { + margin: 2px 0 0 0; +} diff --git a/src/main/webapp/static/easyUI/themes/bootstrap/passwordbox.css b/src/main/webapp/static/easyUI/themes/bootstrap/passwordbox.css new file mode 100644 index 0000000000000000000000000000000000000000..92c9ce586b5c0e515bceb19422e8012e85d0e09b --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/bootstrap/passwordbox.css @@ -0,0 +1,6 @@ +.passwordbox-open { + background: url('images/passwordbox_open.png') no-repeat center center; +} +.passwordbox-close { + background: url('images/passwordbox_close.png') no-repeat center center; +} diff --git a/src/main/webapp/static/easyUI/themes/bootstrap/progressbar.css b/src/main/webapp/static/easyUI/themes/bootstrap/progressbar.css new file mode 100644 index 0000000000000000000000000000000000000000..c660f0e4b1a1853391bbf76c921f65aa0683fe92 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/bootstrap/progressbar.css @@ -0,0 +1,32 @@ +.progressbar { + border-width: 1px; + border-style: solid; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; + overflow: hidden; + position: relative; +} +.progressbar-text { + text-align: center; + position: absolute; +} +.progressbar-value { + position: relative; + overflow: hidden; + width: 0; + -moz-border-radius: 5px 0 0 5px; + -webkit-border-radius: 5px 0 0 5px; + border-radius: 5px 0 0 5px; +} +.progressbar { + border-color: #D4D4D4; +} +.progressbar-text { + color: #333; + font-size: 12px; +} +.progressbar-value .progressbar-text { + background-color: #0081c2; + color: #fff; +} diff --git a/src/main/webapp/static/easyUI/themes/bootstrap/propertygrid.css b/src/main/webapp/static/easyUI/themes/bootstrap/propertygrid.css new file mode 100644 index 0000000000000000000000000000000000000000..abf87d6a8e07a29d57149f43cc4ec6269e3ca802 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/bootstrap/propertygrid.css @@ -0,0 +1,28 @@ +.propertygrid .datagrid-view1 .datagrid-body td { + padding-bottom: 1px; + border-width: 0 1px 0 0; +} +.propertygrid .datagrid-group { + height: 21px; + overflow: hidden; + border-width: 0 0 1px 0; + border-style: solid; +} +.propertygrid .datagrid-group span { + font-weight: bold; +} +.propertygrid .datagrid-view1 .datagrid-body td { + border-color: #e6e6e6; +} +.propertygrid .datagrid-view1 .datagrid-group { + border-color: #F2F2F2; +} +.propertygrid .datagrid-view2 .datagrid-group { + border-color: #e6e6e6; +} +.propertygrid .datagrid-group, +.propertygrid .datagrid-view1 .datagrid-body, +.propertygrid .datagrid-view1 .datagrid-row-over, +.propertygrid .datagrid-view1 .datagrid-row-selected { + background: #F2F2F2; +} diff --git a/src/main/webapp/static/easyUI/themes/bootstrap/searchbox.css b/src/main/webapp/static/easyUI/themes/bootstrap/searchbox.css new file mode 100644 index 0000000000000000000000000000000000000000..bf615de037dd774ce8d25cfc30035f972774ad62 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/bootstrap/searchbox.css @@ -0,0 +1,61 @@ +.searchbox-button { + width: 18px; + height: 20px; + overflow: hidden; + display: inline-block; + vertical-align: top; + cursor: pointer; + opacity: 0.6; + filter: alpha(opacity=60); +} +.searchbox-button-hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.searchbox .l-btn-plain { + border: 0; + padding: 0; + vertical-align: top; + opacity: 0.6; + filter: alpha(opacity=60); + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox .l-btn-plain:hover { + border: 0; + padding: 0; + opacity: 1.0; + filter: alpha(opacity=100); + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox a.m-btn-plain-active { + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox .m-btn-active { + border-width: 0 1px 0 0; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox .textbox-button-right { + border-width: 0 0 0 1px; +} +.searchbox .textbox-button-left { + border-width: 0 1px 0 0; +} +.searchbox-button { + background: url('images/searchbox_button.png') no-repeat center center; +} +.searchbox .l-btn-plain { + background: #F2F2F2; +} +.searchbox .l-btn-plain-disabled, +.searchbox .l-btn-plain-disabled:hover { + opacity: 0.5; + filter: alpha(opacity=50); +} diff --git a/src/main/webapp/static/easyUI/themes/bootstrap/slider.css b/src/main/webapp/static/easyUI/themes/bootstrap/slider.css new file mode 100644 index 0000000000000000000000000000000000000000..b58d8de5575d432522c2b6fb426af662315a1423 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/bootstrap/slider.css @@ -0,0 +1,101 @@ +.slider-disabled { + opacity: 0.5; + filter: alpha(opacity=50); +} +.slider-h { + height: 22px; +} +.slider-v { + width: 22px; +} +.slider-inner { + position: relative; + height: 6px; + top: 7px; + border-width: 1px; + border-style: solid; + border-radius: 5px; +} +.slider-handle { + position: absolute; + display: block; + outline: none; + width: 20px; + height: 20px; + top: 50%; + margin-top: -10px; + margin-left: -10px; +} +.slider-tip { + position: absolute; + display: inline-block; + line-height: 12px; + font-size: 12px; + white-space: nowrap; + top: -22px; +} +.slider-rule { + position: relative; + top: 15px; +} +.slider-rule span { + position: absolute; + display: inline-block; + font-size: 0; + height: 5px; + border-width: 0 0 0 1px; + border-style: solid; +} +.slider-rulelabel { + position: relative; + top: 20px; +} +.slider-rulelabel span { + position: absolute; + display: inline-block; + font-size: 12px; +} +.slider-v .slider-inner { + width: 6px; + left: 7px; + top: 0; + float: left; +} +.slider-v .slider-handle { + left: 50%; + margin-top: -10px; +} +.slider-v .slider-tip { + left: -10px; + margin-top: -6px; +} +.slider-v .slider-rule { + float: left; + top: 0; + left: 16px; +} +.slider-v .slider-rule span { + width: 5px; + height: 'auto'; + border-left: 0; + border-width: 1px 0 0 0; + border-style: solid; +} +.slider-v .slider-rulelabel { + float: left; + top: 0; + left: 23px; +} +.slider-handle { + background: url('images/slider_handle.png') no-repeat; +} +.slider-inner { + border-color: #D4D4D4; + background: #F2F2F2; +} +.slider-rule span { + border-color: #D4D4D4; +} +.slider-rulelabel span { + color: #333; +} diff --git a/src/main/webapp/static/easyUI/themes/bootstrap/spinner.css b/src/main/webapp/static/easyUI/themes/bootstrap/spinner.css new file mode 100644 index 0000000000000000000000000000000000000000..bc153fc4417cdf80b5b6e1de12d5e8d4b75c9fad --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/bootstrap/spinner.css @@ -0,0 +1,58 @@ +.spinner-arrow { + background-color: #F2F2F2; + display: inline-block; + overflow: hidden; + vertical-align: top; + margin: 0; + padding: 0; + opacity: 1.0; + filter: alpha(opacity=100); + width: 18px; +} +.spinner-arrow-up, +.spinner-arrow-down { + opacity: 0.6; + filter: alpha(opacity=60); + display: block; + font-size: 1px; + width: 18px; + height: 10px; + width: 100%; + height: 50%; + color: #444; + outline-style: none; +} +.spinner-arrow-hover { + background-color: #e6e6e6; + opacity: 1.0; + filter: alpha(opacity=100); +} +.spinner-arrow-up:hover, +.spinner-arrow-down:hover { + opacity: 1.0; + filter: alpha(opacity=100); + background-color: #e6e6e6; +} +.textbox-icon-disabled .spinner-arrow-up:hover, +.textbox-icon-disabled .spinner-arrow-down:hover { + opacity: 0.6; + filter: alpha(opacity=60); + background-color: #F2F2F2; + cursor: default; +} +.spinner .textbox-icon-disabled { + opacity: 0.6; + filter: alpha(opacity=60); +} +.spinner-arrow-up { + background: url('images/spinner_arrows.png') no-repeat 1px center; +} +.spinner-arrow-down { + background: url('images/spinner_arrows.png') no-repeat -15px center; +} +.spinner-button-up { + background: url('images/spinner_arrows.png') no-repeat -32px center; +} +.spinner-button-down { + background: url('images/spinner_arrows.png') no-repeat -48px center; +} diff --git a/src/main/webapp/static/easyUI/themes/bootstrap/splitbutton.css b/src/main/webapp/static/easyUI/themes/bootstrap/splitbutton.css new file mode 100644 index 0000000000000000000000000000000000000000..bf864533283a313acf12e29ce66c565a6d986d48 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/bootstrap/splitbutton.css @@ -0,0 +1,12 @@ +.s-btn:hover .m-btn-line, +.s-btn-active .m-btn-line, +.s-btn-plain-active .m-btn-line { + display: inline-block; +} +.l-btn:hover .s-btn-downarrow, +.s-btn-active .s-btn-downarrow, +.s-btn-plain-active .s-btn-downarrow { + border-style: solid; + border-color: #bbb; + border-width: 0 0 0 1px; +} diff --git a/src/main/webapp/static/easyUI/themes/bootstrap/switchbutton.css b/src/main/webapp/static/easyUI/themes/bootstrap/switchbutton.css new file mode 100644 index 0000000000000000000000000000000000000000..38803aa0dba3dc600a9e79a3e0ac269cd96a5671 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/bootstrap/switchbutton.css @@ -0,0 +1,77 @@ +.switchbutton { + text-decoration: none; + display: inline-block; + overflow: hidden; + vertical-align: middle; + margin: 0; + padding: 0; + cursor: pointer; + background: #bbb; + border: 1px solid #bbb; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.switchbutton-inner { + display: inline-block; + overflow: hidden; + position: relative; + top: -1px; + left: -1px; +} +.switchbutton-on, +.switchbutton-off, +.switchbutton-handle { + display: inline-block; + text-align: center; + height: 100%; + float: left; + font-size: 12px; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.switchbutton-on { + background: #0081c2; + color: #fff; +} +.switchbutton-off { + background-color: #ffffff; + color: #333; +} +.switchbutton-on, +.switchbutton-reversed .switchbutton-off { + -moz-border-radius: 5px 0 0 5px; + -webkit-border-radius: 5px 0 0 5px; + border-radius: 5px 0 0 5px; +} +.switchbutton-off, +.switchbutton-reversed .switchbutton-on { + -moz-border-radius: 0 5px 5px 0; + -webkit-border-radius: 0 5px 5px 0; + border-radius: 0 5px 5px 0; +} +.switchbutton-handle { + position: absolute; + top: 0; + left: 50%; + background-color: #ffffff; + color: #333; + border: 1px solid #bbb; + -moz-box-shadow: 0 0 3px 0 #bbb; + -webkit-box-shadow: 0 0 3px 0 #bbb; + box-shadow: 0 0 3px 0 #bbb; +} +.switchbutton-value { + position: absolute; + top: 0; + left: -5000px; +} +.switchbutton-disabled { + opacity: 0.5; + filter: alpha(opacity=50); +} +.switchbutton-disabled, +.switchbutton-readonly { + cursor: default; +} diff --git a/src/main/webapp/static/easyUI/themes/bootstrap/tabs.css b/src/main/webapp/static/easyUI/themes/bootstrap/tabs.css new file mode 100644 index 0000000000000000000000000000000000000000..c06a4aab4e7103269c426017fc94399eb4ae0d1c --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/bootstrap/tabs.css @@ -0,0 +1,413 @@ +.tabs-container { + overflow: hidden; +} +.tabs-header { + border-width: 1px; + border-style: solid; + border-bottom-width: 0; + position: relative; + padding: 0; + padding-top: 2px; + overflow: hidden; +} +.tabs-scroller-left, +.tabs-scroller-right { + position: absolute; + top: auto; + bottom: 0; + width: 18px; + font-size: 1px; + display: none; + cursor: pointer; + border-width: 1px; + border-style: solid; +} +.tabs-scroller-left { + left: 0; +} +.tabs-scroller-right { + right: 0; +} +.tabs-tool { + position: absolute; + bottom: 0; + padding: 1px; + overflow: hidden; + border-width: 1px; + border-style: solid; +} +.tabs-header-plain .tabs-tool { + padding: 0 1px; +} +.tabs-wrap { + position: relative; + left: 0; + overflow: hidden; + width: 100%; + margin: 0; + padding: 0; +} +.tabs-scrolling { + margin-left: 18px; + margin-right: 18px; +} +.tabs-disabled { + opacity: 0.3; + filter: alpha(opacity=30); +} +.tabs { + list-style-type: none; + height: 26px; + margin: 0px; + padding: 0px; + padding-left: 4px; + width: 50000px; + border-style: solid; + border-width: 0 0 1px 0; +} +.tabs li { + float: left; + display: inline-block; + margin: 0 4px -1px 0; + padding: 0; + position: relative; + border: 0; +} +.tabs li a.tabs-inner { + display: inline-block; + text-decoration: none; + margin: 0; + padding: 0 10px; + height: 25px; + line-height: 25px; + text-align: center; + white-space: nowrap; + border-width: 1px; + border-style: solid; + -moz-border-radius: 5px 5px 0 0; + -webkit-border-radius: 5px 5px 0 0; + border-radius: 5px 5px 0 0; +} +.tabs li.tabs-selected a.tabs-inner { + font-weight: bold; + outline: none; +} +.tabs li.tabs-selected a:hover.tabs-inner { + cursor: default; + pointer: default; +} +.tabs li a.tabs-close, +.tabs-p-tool { + position: absolute; + font-size: 1px; + display: block; + height: 12px; + padding: 0; + top: 50%; + margin-top: -6px; + overflow: hidden; +} +.tabs li a.tabs-close { + width: 12px; + right: 5px; + opacity: 0.6; + filter: alpha(opacity=60); +} +.tabs-p-tool { + right: 16px; +} +.tabs-p-tool a { + display: inline-block; + font-size: 1px; + width: 12px; + height: 12px; + margin: 0; + opacity: 0.6; + filter: alpha(opacity=60); +} +.tabs li a:hover.tabs-close, +.tabs-p-tool a:hover { + opacity: 1; + filter: alpha(opacity=100); + cursor: hand; + cursor: pointer; +} +.tabs-with-icon { + padding-left: 18px; +} +.tabs-icon { + position: absolute; + width: 16px; + height: 16px; + left: 10px; + top: 50%; + margin-top: -8px; +} +.tabs-title { + font-size: 12px; +} +.tabs-closable { + padding-right: 8px; +} +.tabs-panels { + margin: 0px; + padding: 0px; + border-width: 1px; + border-style: solid; + border-top-width: 0; + overflow: hidden; +} +.tabs-header-bottom { + border-width: 0 1px 1px 1px; + padding: 0 0 2px 0; +} +.tabs-header-bottom .tabs { + border-width: 1px 0 0 0; +} +.tabs-header-bottom .tabs li { + margin: -1px 4px 0 0; +} +.tabs-header-bottom .tabs li a.tabs-inner { + -moz-border-radius: 0 0 5px 5px; + -webkit-border-radius: 0 0 5px 5px; + border-radius: 0 0 5px 5px; +} +.tabs-header-bottom .tabs-tool { + top: 0; +} +.tabs-header-bottom .tabs-scroller-left, +.tabs-header-bottom .tabs-scroller-right { + top: 0; + bottom: auto; +} +.tabs-panels-top { + border-width: 1px 1px 0 1px; +} +.tabs-header-left { + float: left; + border-width: 1px 0 1px 1px; + padding: 0; +} +.tabs-header-right { + float: right; + border-width: 1px 1px 1px 0; + padding: 0; +} +.tabs-header-left .tabs-wrap, +.tabs-header-right .tabs-wrap { + height: 100%; +} +.tabs-header-left .tabs { + height: 100%; + padding: 4px 0 0 2px; + border-width: 0 1px 0 0; +} +.tabs-header-right .tabs { + height: 100%; + padding: 4px 2px 0 0; + border-width: 0 0 0 1px; +} +.tabs-header-left .tabs li, +.tabs-header-right .tabs li { + display: block; + width: 100%; + position: relative; +} +.tabs-header-left .tabs li { + left: auto; + right: 0; + margin: 0 -1px 4px 0; + float: right; +} +.tabs-header-right .tabs li { + left: 0; + right: auto; + margin: 0 0 4px -1px; + float: left; +} +.tabs-justified li a.tabs-inner { + padding-left: 0; + padding-right: 0; +} +.tabs-header-left .tabs li a.tabs-inner { + display: block; + text-align: left; + padding-left: 10px; + padding-right: 10px; + -moz-border-radius: 5px 0 0 5px; + -webkit-border-radius: 5px 0 0 5px; + border-radius: 5px 0 0 5px; +} +.tabs-header-right .tabs li a.tabs-inner { + display: block; + text-align: left; + padding-left: 10px; + padding-right: 10px; + -moz-border-radius: 0 5px 5px 0; + -webkit-border-radius: 0 5px 5px 0; + border-radius: 0 5px 5px 0; +} +.tabs-panels-right { + float: right; + border-width: 1px 1px 1px 0; +} +.tabs-panels-left { + float: left; + border-width: 1px 0 1px 1px; +} +.tabs-header-noborder, +.tabs-panels-noborder { + border: 0px; +} +.tabs-header-plain { + border: 0px; + background: transparent; +} +.tabs-pill { + padding-bottom: 3px; +} +.tabs-header-bottom .tabs-pill { + padding-top: 3px; + padding-bottom: 0; +} +.tabs-header-left .tabs-pill { + padding-right: 3px; +} +.tabs-header-right .tabs-pill { + padding-left: 3px; +} +.tabs-header .tabs-pill li a.tabs-inner { + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.tabs-header-narrow, +.tabs-header-narrow .tabs-narrow { + padding: 0; +} +.tabs-narrow li, +.tabs-header-bottom .tabs-narrow li { + margin-left: 0; + margin-right: -1px; +} +.tabs-narrow li.tabs-last, +.tabs-header-bottom .tabs-narrow li.tabs-last { + margin-right: 0; +} +.tabs-header-left .tabs-narrow, +.tabs-header-right .tabs-narrow { + padding-top: 0; +} +.tabs-header-left .tabs-narrow li { + margin-bottom: -1px; + margin-right: -1px; +} +.tabs-header-left .tabs-narrow li.tabs-last, +.tabs-header-right .tabs-narrow li.tabs-last { + margin-bottom: 0; +} +.tabs-header-right .tabs-narrow li { + margin-bottom: -1px; + margin-left: -1px; +} +.tabs-scroller-left { + background: #F2F2F2 url('images/tabs_icons.png') no-repeat 1px center; +} +.tabs-scroller-right { + background: #F2F2F2 url('images/tabs_icons.png') no-repeat -15px center; +} +.tabs li a.tabs-close { + background: url('images/tabs_icons.png') no-repeat -34px center; +} +.tabs li a.tabs-inner:hover { + background: #e6e6e6; + color: #00438a; + filter: none; +} +.tabs li.tabs-selected a.tabs-inner { + background-color: #ffffff; + color: #777; + background: -webkit-linear-gradient(top,#ffffff 0,#ffffff 100%); + background: -moz-linear-gradient(top,#ffffff 0,#ffffff 100%); + background: -o-linear-gradient(top,#ffffff 0,#ffffff 100%); + background: linear-gradient(to bottom,#ffffff 0,#ffffff 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#ffffff,GradientType=0); +} +.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { + background: -webkit-linear-gradient(top,#ffffff 0,#ffffff 100%); + background: -moz-linear-gradient(top,#ffffff 0,#ffffff 100%); + background: -o-linear-gradient(top,#ffffff 0,#ffffff 100%); + background: linear-gradient(to bottom,#ffffff 0,#ffffff 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#ffffff,GradientType=0); +} +.tabs-header-left .tabs li.tabs-selected a.tabs-inner { + background: -webkit-linear-gradient(left,#ffffff 0,#ffffff 100%); + background: -moz-linear-gradient(left,#ffffff 0,#ffffff 100%); + background: -o-linear-gradient(left,#ffffff 0,#ffffff 100%); + background: linear-gradient(to right,#ffffff 0,#ffffff 100%); + background-repeat: repeat-y; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#ffffff,GradientType=1); +} +.tabs-header-right .tabs li.tabs-selected a.tabs-inner { + background: -webkit-linear-gradient(left,#ffffff 0,#ffffff 100%); + background: -moz-linear-gradient(left,#ffffff 0,#ffffff 100%); + background: -o-linear-gradient(left,#ffffff 0,#ffffff 100%); + background: linear-gradient(to right,#ffffff 0,#ffffff 100%); + background-repeat: repeat-y; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#ffffff,GradientType=1); +} +.tabs li a.tabs-inner { + color: #777; + background-color: #F2F2F2; + background: -webkit-linear-gradient(top,#ffffff 0,#F2F2F2 100%); + background: -moz-linear-gradient(top,#ffffff 0,#F2F2F2 100%); + background: -o-linear-gradient(top,#ffffff 0,#F2F2F2 100%); + background: linear-gradient(to bottom,#ffffff 0,#F2F2F2 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#F2F2F2,GradientType=0); +} +.tabs-header, +.tabs-tool { + background-color: #F2F2F2; +} +.tabs-header-plain { + background: transparent; +} +.tabs-header, +.tabs-scroller-left, +.tabs-scroller-right, +.tabs-tool, +.tabs, +.tabs-panels, +.tabs li a.tabs-inner, +.tabs li.tabs-selected a.tabs-inner, +.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner, +.tabs-header-left .tabs li.tabs-selected a.tabs-inner, +.tabs-header-right .tabs li.tabs-selected a.tabs-inner { + border-color: #D4D4D4; +} +.tabs-p-tool a:hover, +.tabs li a:hover.tabs-close, +.tabs-scroller-over { + background-color: #e6e6e6; +} +.tabs li.tabs-selected a.tabs-inner { + border-bottom: 1px solid #ffffff; +} +.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { + border-top: 1px solid #ffffff; +} +.tabs-header-left .tabs li.tabs-selected a.tabs-inner { + border-right: 1px solid #ffffff; +} +.tabs-header-right .tabs li.tabs-selected a.tabs-inner { + border-left: 1px solid #ffffff; +} +.tabs-header .tabs-pill li.tabs-selected a.tabs-inner { + background: #0081c2; + color: #fff; + filter: none; + border-color: #D4D4D4; +} diff --git a/src/main/webapp/static/easyUI/themes/bootstrap/tagbox.css b/src/main/webapp/static/easyUI/themes/bootstrap/tagbox.css new file mode 100644 index 0000000000000000000000000000000000000000..7e98a0a3138faa0d7dfeb3439d0940b14c489fb0 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/bootstrap/tagbox.css @@ -0,0 +1,44 @@ +.tagbox { + cursor: text; +} +.tagbox .textbox-text { + float: left; +} +.tagbox-label { + position: relative; + display: block; + margin: 4px 0 0 4px; + padding: 0 20px 0 4px; + float: left; + vertical-align: top; + text-decoration: none; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; + background: #e6e6e6; + color: #00438a; +} +.tagbox-remove { + background: url('images/tagbox_icons.png') no-repeat -16px center; + position: absolute; + display: block; + width: 16px; + height: 16px; + right: 2px; + top: 50%; + margin-top: -8px; + opacity: 0.6; + filter: alpha(opacity=60); +} +.tagbox-remove:hover { + opacity: 1; + filter: alpha(opacity=100); +} +.textbox-disabled .tagbox-label { + cursor: default; +} +.textbox-disabled .tagbox-remove:hover { + cursor: default; + opacity: 0.6; + filter: alpha(opacity=60); +} diff --git a/src/main/webapp/static/easyUI/themes/bootstrap/textbox.css b/src/main/webapp/static/easyUI/themes/bootstrap/textbox.css new file mode 100644 index 0000000000000000000000000000000000000000..dc2dfa8a88f2b03c2a4018abf3b5120250d066c4 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/bootstrap/textbox.css @@ -0,0 +1,139 @@ +.textbox { + position: relative; + border: 1px solid #D4D4D4; + background-color: #fff; + vertical-align: middle; + display: inline-block; + overflow: hidden; + white-space: nowrap; + margin: 0; + padding: 0; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.textbox .textbox-text { + font-size: 12px; + border: 0; + margin: 0; + padding: 4px; + white-space: normal; + vertical-align: top; + outline-style: none; + resize: none; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.textbox .textbox-text::-ms-clear, +.textbox .textbox-text::-ms-reveal { + display: none; +} +.textbox textarea.textbox-text { + white-space: pre-wrap; +} +.textbox .textbox-prompt { + font-size: 12px; + color: #aaa; +} +.textbox .textbox-bgicon { + background-position: 3px center; + padding-left: 21px; +} +.textbox .textbox-button, +.textbox .textbox-button:hover { + position: absolute; + top: 0; + padding: 0; + vertical-align: top; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.textbox .textbox-button-right, +.textbox .textbox-button-right:hover { + right: 0; + border-width: 0 0 0 1px; +} +.textbox .textbox-button-left, +.textbox .textbox-button-left:hover { + left: 0; + border-width: 0 1px 0 0; +} +.textbox .textbox-button-top, +.textbox .textbox-button-top:hover { + left: 0; + border-width: 0 0 1px 0; +} +.textbox .textbox-button-bottom, +.textbox .textbox-button-bottom:hover { + top: auto; + bottom: 0; + left: 0; + border-width: 1px 0 0 0; +} +.textbox-addon { + position: absolute; + top: 0; +} +.textbox-label { + display: inline-block; + width: 80px; + height: 22px; + line-height: 22px; + vertical-align: middle; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + margin: 0; + padding-right: 5px; +} +.textbox-label-after { + padding-left: 5px; + padding-right: 0; +} +.textbox-label-top { + display: block; + width: auto; + padding: 0; +} +.textbox-disabled, +.textbox-label-disabled { + opacity: 0.6; + filter: alpha(opacity=60); +} +.textbox-icon { + display: inline-block; + width: 18px; + height: 20px; + overflow: hidden; + vertical-align: top; + background-position: center center; + cursor: pointer; + opacity: 0.6; + filter: alpha(opacity=60); + text-decoration: none; + outline-style: none; +} +.textbox-icon-disabled, +.textbox-icon-readonly { + cursor: default; +} +.textbox-icon:hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.textbox-icon-disabled:hover { + opacity: 0.6; + filter: alpha(opacity=60); +} +.textbox-focused { + border-color: #bbbbbb; + -moz-box-shadow: 0 0 3px 0 #D4D4D4; + -webkit-box-shadow: 0 0 3px 0 #D4D4D4; + box-shadow: 0 0 3px 0 #D4D4D4; +} +.textbox-invalid { + border-color: #ffa8a8; + background-color: #fff3f3; +} diff --git a/src/main/webapp/static/easyUI/themes/bootstrap/tooltip.css b/src/main/webapp/static/easyUI/themes/bootstrap/tooltip.css new file mode 100644 index 0000000000000000000000000000000000000000..ed9fe1c250b99116f25db7dbc555c00fd79b73ef --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/bootstrap/tooltip.css @@ -0,0 +1,103 @@ +.tooltip { + position: absolute; + display: none; + z-index: 9900000; + outline: none; + opacity: 1; + filter: alpha(opacity=100); + padding: 5px; + border-width: 1px; + border-style: solid; + border-radius: 5px; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.tooltip-content { + font-size: 12px; +} +.tooltip-arrow-outer, +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; + line-height: 0; + font-size: 0; + border-style: solid; + border-width: 6px; + border-color: transparent; + _border-color: tomato; + _filter: chroma(color=tomato); +} +.tooltip-arrow { + display: none \9; +} +.tooltip-right .tooltip-arrow-outer { + left: 0; + top: 50%; + margin: -6px 0 0 -13px; +} +.tooltip-right .tooltip-arrow { + left: 0; + top: 50%; + margin: -6px 0 0 -12px; +} +.tooltip-left .tooltip-arrow-outer { + right: 0; + top: 50%; + margin: -6px -13px 0 0; +} +.tooltip-left .tooltip-arrow { + right: 0; + top: 50%; + margin: -6px -12px 0 0; +} +.tooltip-top .tooltip-arrow-outer { + bottom: 0; + left: 50%; + margin: 0 0 -13px -6px; +} +.tooltip-top .tooltip-arrow { + bottom: 0; + left: 50%; + margin: 0 0 -12px -6px; +} +.tooltip-bottom .tooltip-arrow-outer { + top: 0; + left: 50%; + margin: -13px 0 0 -6px; +} +.tooltip-bottom .tooltip-arrow { + top: 0; + left: 50%; + margin: -12px 0 0 -6px; +} +.tooltip { + background-color: #ffffff; + border-color: #D4D4D4; + color: #333; +} +.tooltip-right .tooltip-arrow-outer { + border-right-color: #D4D4D4; +} +.tooltip-right .tooltip-arrow { + border-right-color: #ffffff; +} +.tooltip-left .tooltip-arrow-outer { + border-left-color: #D4D4D4; +} +.tooltip-left .tooltip-arrow { + border-left-color: #ffffff; +} +.tooltip-top .tooltip-arrow-outer { + border-top-color: #D4D4D4; +} +.tooltip-top .tooltip-arrow { + border-top-color: #ffffff; +} +.tooltip-bottom .tooltip-arrow-outer { + border-bottom-color: #D4D4D4; +} +.tooltip-bottom .tooltip-arrow { + border-bottom-color: #ffffff; +} diff --git a/src/main/webapp/static/easyUI/themes/bootstrap/tree.css b/src/main/webapp/static/easyUI/themes/bootstrap/tree.css new file mode 100644 index 0000000000000000000000000000000000000000..3fd3583a477306c41b4b66f9a196a77bf9eeb9cb --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/bootstrap/tree.css @@ -0,0 +1,161 @@ +.tree { + margin: 0; + padding: 0; + list-style-type: none; +} +.tree li { + white-space: nowrap; +} +.tree li ul { + list-style-type: none; + margin: 0; + padding: 0; +} +.tree-node { + height: 18px; + white-space: nowrap; + cursor: pointer; +} +.tree-hit { + cursor: pointer; +} +.tree-expanded, +.tree-collapsed, +.tree-folder, +.tree-file, +.tree-checkbox, +.tree-indent { + display: inline-block; + width: 16px; + height: 18px; + vertical-align: top; + overflow: hidden; +} +.tree-expanded { + background: url('images/tree_icons.png') no-repeat -18px 0px; +} +.tree-expanded-hover { + background: url('images/tree_icons.png') no-repeat -50px 0px; +} +.tree-collapsed { + background: url('images/tree_icons.png') no-repeat 0px 0px; +} +.tree-collapsed-hover { + background: url('images/tree_icons.png') no-repeat -32px 0px; +} +.tree-lines .tree-expanded, +.tree-lines .tree-root-first .tree-expanded { + background: url('images/tree_icons.png') no-repeat -144px 0; +} +.tree-lines .tree-collapsed, +.tree-lines .tree-root-first .tree-collapsed { + background: url('images/tree_icons.png') no-repeat -128px 0; +} +.tree-lines .tree-node-last .tree-expanded, +.tree-lines .tree-root-one .tree-expanded { + background: url('images/tree_icons.png') no-repeat -80px 0; +} +.tree-lines .tree-node-last .tree-collapsed, +.tree-lines .tree-root-one .tree-collapsed { + background: url('images/tree_icons.png') no-repeat -64px 0; +} +.tree-line { + background: url('images/tree_icons.png') no-repeat -176px 0; +} +.tree-join { + background: url('images/tree_icons.png') no-repeat -192px 0; +} +.tree-joinbottom { + background: url('images/tree_icons.png') no-repeat -160px 0; +} +.tree-folder { + background: url('images/tree_icons.png') no-repeat -208px 0; +} +.tree-folder-open { + background: url('images/tree_icons.png') no-repeat -224px 0; +} +.tree-file { + background: url('images/tree_icons.png') no-repeat -240px 0; +} +.tree-loading { + background: url('images/loading.gif') no-repeat center center; +} +.tree-checkbox0 { + background: url('images/tree_icons.png') no-repeat -208px -18px; +} +.tree-checkbox1 { + background: url('images/tree_icons.png') no-repeat -224px -18px; +} +.tree-checkbox2 { + background: url('images/tree_icons.png') no-repeat -240px -18px; +} +.tree-title { + font-size: 12px; + display: inline-block; + text-decoration: none; + vertical-align: top; + white-space: nowrap; + padding: 0 2px; + height: 18px; + line-height: 18px; +} +.tree-node-proxy { + font-size: 12px; + line-height: 20px; + padding: 0 2px 0 20px; + border-width: 1px; + border-style: solid; + z-index: 9900000; +} +.tree-dnd-icon { + display: inline-block; + position: absolute; + width: 16px; + height: 18px; + left: 2px; + top: 50%; + margin-top: -9px; +} +.tree-dnd-yes { + background: url('images/tree_icons.png') no-repeat -256px 0; +} +.tree-dnd-no { + background: url('images/tree_icons.png') no-repeat -256px -18px; +} +.tree-node-top { + border-top: 1px dotted red; +} +.tree-node-bottom { + border-bottom: 1px dotted red; +} +.tree-node-append .tree-title { + border: 1px dotted red; +} +.tree-editor { + border: 1px solid #D4D4D4; + font-size: 12px; + line-height: 16px; + padding: 0 4px; + margin: 0; + width: 80px; + outline-style: none; + vertical-align: top; + position: absolute; + top: 0; +} +.tree-node-proxy { + background-color: #ffffff; + color: #333; + border-color: #D4D4D4; +} +.tree-node-hover { + background: #e6e6e6; + color: #00438a; +} +.tree-node-selected { + background: #0081c2; + color: #fff; +} +.tree-node-hidden { + display: none; +} diff --git a/src/main/webapp/static/easyUI/themes/bootstrap/validatebox.css b/src/main/webapp/static/easyUI/themes/bootstrap/validatebox.css new file mode 100644 index 0000000000000000000000000000000000000000..1fc3ad64e4f79ba1b3d4e715f3dd0cd8ae0ac3fc --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/bootstrap/validatebox.css @@ -0,0 +1,5 @@ +.validatebox-invalid { + border-color: #ffa8a8; + background-color: #fff3f3; + color: #000; +} diff --git a/src/main/webapp/static/easyUI/themes/bootstrap/window.css b/src/main/webapp/static/easyUI/themes/bootstrap/window.css new file mode 100644 index 0000000000000000000000000000000000000000..b216f37d9b617d2f2d79a829c1cb850bf862cb87 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/bootstrap/window.css @@ -0,0 +1,183 @@ +.window { + overflow: hidden; + padding: 5px; + border-width: 1px; + border-style: solid; +} +.window .window-header { + background: transparent; + padding: 0px 0px 6px 0px; +} +.window .window-body { + border-width: 1px; + border-style: solid; + border-top-width: 0px; +} +.window .window-body-noheader { + border-top-width: 1px; +} +.window .panel-body-nobottom { + border-bottom-width: 0; +} +.window .window-header .panel-icon, +.window .window-header .panel-tool { + top: 50%; + margin-top: -11px; +} +.window .window-header .panel-icon { + left: 1px; +} +.window .window-header .panel-tool { + right: 1px; +} +.window .window-header .panel-with-icon { + padding-left: 18px; +} +.window-proxy { + position: absolute; + overflow: hidden; +} +.window-proxy-mask { + position: absolute; + filter: alpha(opacity=5); + opacity: 0.05; +} +.window-mask { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + filter: alpha(opacity=40); + opacity: 0.40; + font-size: 1px; + overflow: hidden; +} +.window, +.window-shadow { + position: absolute; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.window-shadow { + background: #ccc; + -moz-box-shadow: 2px 2px 3px #cccccc; + -webkit-box-shadow: 2px 2px 3px #cccccc; + box-shadow: 2px 2px 3px #cccccc; + filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); +} +.window, +.window .window-body { + border-color: #D4D4D4; +} +.window { + background-color: #F2F2F2; + background: -webkit-linear-gradient(top,#ffffff 0,#F2F2F2 20%); + background: -moz-linear-gradient(top,#ffffff 0,#F2F2F2 20%); + background: -o-linear-gradient(top,#ffffff 0,#F2F2F2 20%); + background: linear-gradient(to bottom,#ffffff 0,#F2F2F2 20%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#F2F2F2,GradientType=0); +} +.window-proxy { + border: 1px dashed #D4D4D4; +} +.window-proxy-mask, +.window-mask { + background: #ccc; +} +.window .panel-footer { + border: 1px solid #D4D4D4; + position: relative; + top: -1px; +} +.window-thinborder { + padding: 0; +} +.window-thinborder .window-header { + padding: 5px 5px 6px 5px; +} +.window-thinborder .window-body { + border-width: 0px; +} +.window-thinborder .window-header .panel-icon, +.window-thinborder .window-header .panel-tool { + margin-top: -9px; + margin-left: 5px; + margin-right: 5px; +} +.window-noborder { + border: 0; +} +.window.panel-hleft .window-header { + padding: 0 6px 0 0; +} +.window.panel-hright .window-header { + padding: 0 0 0 6px; +} +.window.panel-hleft>.panel-header .panel-title { + top: auto; + left: 16px; +} +.window.panel-hright>.panel-header .panel-title { + top: auto; + right: 16px; +} +.window.panel-hleft>.panel-header .panel-title-up, +.window.panel-hright>.panel-header .panel-title-up { + bottom: 0; +} +.window.panel-hleft .window-body { + border-width: 1px 1px 1px 0; +} +.window.panel-hright .window-body { + border-width: 1px 0 1px 1px; +} +.window.panel-hleft .window-header .panel-icon { + top: 1px; + margin-top: 0; + left: 0; +} +.window.panel-hright .window-header .panel-icon { + top: 1px; + margin-top: 0; + left: auto; + right: 1px; +} +.window.panel-hleft .window-header .panel-tool, +.window.panel-hright .window-header .panel-tool { + margin-top: 0; + top: auto; + bottom: 1px; + right: auto; + margin-right: 0; + left: 50%; + margin-left: -11px; +} +.window.panel-hright .window-header .panel-tool { + left: auto; + right: 1px; +} +.window-thinborder.panel-hleft .window-header { + padding: 5px 6px 5px 5px; +} +.window-thinborder.panel-hright .window-header { + padding: 5px 5px 5px 6px; +} +.window-thinborder.panel-hleft>.panel-header .panel-title { + left: 21px; +} +.window-thinborder.panel-hleft>.panel-header .panel-title-up, +.window-thinborder.panel-hright>.panel-header .panel-title-up { + bottom: 5px; +} +.window-thinborder.panel-hleft .window-header .panel-icon, +.window-thinborder.panel-hright .window-header .panel-icon { + margin-top: 5px; +} +.window-thinborder.panel-hleft .window-header .panel-tool, +.window-thinborder.panel-hright .window-header .panel-tool { + left: 16px; + bottom: 5px; +} diff --git a/src/main/webapp/static/easyUI/themes/color.css b/src/main/webapp/static/easyUI/themes/color.css new file mode 100644 index 0000000000000000000000000000000000000000..bfb8ecb0620a4cc7e7ffd9e5d0ad768aea14ad6a --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/color.css @@ -0,0 +1,210 @@ +.c1,.c1:hover,.c1>.panel-header{ + color: #fff; + border-color: #3c8b3c; + background: #4cae4c; + background: -webkit-linear-gradient(top,#4cae4c 0,#449d44 100%); + background: -moz-linear-gradient(top,#4cae4c 0,#449d44 100%); + background: -o-linear-gradient(top,#4cae4c 0,#449d44 100%); + background: linear-gradient(to bottom,#4cae4c 0,#449d44 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#4cae4c,endColorstr=#449d44,GradientType=0); +} +a.c1:hover{ + background: #449d44; + filter: none; +} +.c1>.panel-body{ + border-color: #3c8b3c; +} +.c1>.dialog-toolbar,.c1>.dialog-button{ + border-left-color: #3c8b3c; + border-right-color: #3c8b3c; +} +.c1>.dialog-button{ + border-bottom-color: #3c8b3c; +} +.c2,.c2:hover,.c2>.panel-header{ + color: #fff; + border-color: #5f5f5f; + background: #747474; + background: -webkit-linear-gradient(top,#747474 0,#676767 100%); + background: -moz-linear-gradient(top,#747474 0,#676767 100%); + background: -o-linear-gradient(top,#747474 0,#676767 100%); + background: linear-gradient(to bottom,#747474 0,#676767 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#747474,endColorstr=#676767,GradientType=0); +} +a.c2:hover{ + background: #676767; + filter: none; +} +.c2>.panel-body{ + border-color: #5f5f5f; +} +.c2>.dialog-toolbar,.c2>.dialog-button{ + border-left-color: #5f5f5f; + border-right-color: #5f5f5f; +} +.c2>.dialog-button{ + border-bottom-color: #5f5f5f; +} +.c3,.c3:hover,.c3>.panel-header{ + color: #333; + border-color: #ff8080; + background: #ffb3b3; + background: -webkit-linear-gradient(top,#ffb3b3 0,#ff9999 100%); + background: -moz-linear-gradient(top,#ffb3b3 0,#ff9999 100%); + background: -o-linear-gradient(top,#ffb3b3 0,#ff9999 100%); + background: linear-gradient(to bottom,#ffb3b3 0,#ff9999 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffb3b3,endColorstr=#ff9999,GradientType=0); +} +a.c3:hover{ + background: #ff9999; + filter: none; +} +.c3>.panel-body{ + border-color: #ff8080; +} +.c3>.dialog-toolbar,.c3>.dialog-button{ + border-left-color: #ff8080; + border-right-color: #ff8080; +} +.c3>.dialog-button{ + border-bottom-color: #ff8080; +} +.c4,.c4:hover,.c4>.panel-header{ + color: #333; + border-color: #52d689; + background: #b8eecf; + background: -webkit-linear-gradient(top,#b8eecf 0,#a4e9c1 100%); + background: -moz-linear-gradient(top,#b8eecf 0,#a4e9c1 100%); + background: -o-linear-gradient(top,#b8eecf 0,#a4e9c1 100%); + background: linear-gradient(to bottom,#b8eecf 0,#a4e9c1 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#b8eecf,endColorstr=#a4e9c1,GradientType=0); +} +a.c4:hover{ + background: #a4e9c1; + filter: none; +} +.c4>.panel-body{ + border-color: #52d689; +} +.c4>.dialog-toolbar,.c4>.dialog-button{ + border-left-color: #52d689; + border-right-color: #52d689; +} +.c4>.dialog-button{ + border-bottom-color: #52d689; +} +.c5,.c5:hover,.c5>.panel-header{ + color: #fff; + border-color: #b52b27; + background: #d84f4b; + background: -webkit-linear-gradient(top,#d84f4b 0,#c9302c 100%); + background: -moz-linear-gradient(top,#d84f4b 0,#c9302c 100%); + background: -o-linear-gradient(top,#d84f4b 0,#c9302c 100%); + background: linear-gradient(to bottom,#d84f4b 0,#c9302c 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#d84f4b,endColorstr=#c9302c,GradientType=0); +} +a.c5:hover{ + background: #c9302c; + filter: none; +} +.c5>.panel-body{ + border-color: #b52b27; +} +.c5>.dialog-toolbar,.c5>.dialog-button{ + border-left-color: #b52b27; + border-right-color: #b52b27; +} +.c5>.dialog-button{ + border-bottom-color: #b52b27; +} +.c6,.c6:hover,.c6>.panel-header{ + color: #fff; + border-color: #1f637b; + background: #2984a4; + background: -webkit-linear-gradient(top,#2984a4 0,#24748f 100%); + background: -moz-linear-gradient(top,#2984a4 0,#24748f 100%); + background: -o-linear-gradient(top,#2984a4 0,#24748f 100%); + background: linear-gradient(to bottom,#2984a4 0,#24748f 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#2984a4,endColorstr=#24748f,GradientType=0); +} +a.c6:hover{ + background: #24748f; + filter: none; +} +.c6>.panel-body{ + border-color: #1f637b; +} +.c6>.dialog-toolbar,.c6>.dialog-button{ + border-left-color: #1f637b; + border-right-color: #1f637b; +} +.c6>.dialog-button{ + border-bottom-color: #1f637b; +} +.c7,.c7:hover,.c7>.panel-header{ + color: #333; + border-color: #e68900; + background: #ffab2e; + background: -webkit-linear-gradient(top,#ffab2e 0,#ff9900 100%); + background: -moz-linear-gradient(top,#ffab2e 0,#ff9900 100%); + background: -o-linear-gradient(top,#ffab2e 0,#ff9900 100%); + background: linear-gradient(to bottom,#ffab2e 0,#ff9900 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffab2e,endColorstr=#ff9900,GradientType=0); +} +a.c7:hover{ + background: #ff9900; + filter: none; +} +.c7>.panel-body{ + border-color: #e68900; +} +.c7>.dialog-toolbar,.c7>.dialog-button{ + border-left-color: #e68900; + border-right-color: #e68900; +} +.c7>.dialog-button{ + border-bottom-color: #e68900; +} +.c8,.c8:hover,.c8>.panel-header{ + color: #fff; + border-color: #4b72a4; + background: #698cba; + background: -webkit-linear-gradient(top,#698cba 0,#577eb2 100%); + background: -moz-linear-gradient(top,#698cba 0,#577eb2 100%); + background: -o-linear-gradient(top,#698cba 0,#577eb2 100%); + background: linear-gradient(to bottom,#698cba 0,#577eb2 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#698cba,endColorstr=#577eb2,GradientType=0); +} +a.c8:hover{ + background: #577eb2; + filter: none; +} +.c8>.panel-body{ + border-color: #4b72a4; +} +.c8>.dialog-toolbar,.c8>.dialog-button{ + border-left-color: #4b72a4; + border-right-color: #4b72a4; +} +.c8>.dialog-button{ + border-bottom-color: #4b72a4; +} +.c1>.panel-header>.panel-title,.c2>.panel-header>.panel-title, +.c5>.panel-header>.panel-title,.c6>.panel-header>.panel-title,.c8>.panel-header>.panel-title{ + color: #fff; +} +.c-plain{ + border-color: #fff; + background: #fff; +} +.c-plain>.panel-header, +.c-plain>.panel-body, +.c-plain>.dialog-button, +.c-plain>.dialog-toolbar{ + border-color: transparent; + background: transparent; +} +.c-raised{ + box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12); +} diff --git a/src/main/webapp/static/easyUI/themes/default/accordion.css b/src/main/webapp/static/easyUI/themes/default/accordion.css new file mode 100644 index 0000000000000000000000000000000000000000..9d60531f619cb9c163cf484f3b4af3c8824fdbc1 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/default/accordion.css @@ -0,0 +1,89 @@ +.accordion { + overflow: hidden; + border-width: 1px; + border-style: solid; +} +.accordion .accordion-header { + border-width: 0 0 1px; + cursor: pointer; +} +.accordion .accordion-body { + border-width: 0 0 1px; +} +.accordion-noborder { + border-width: 0; +} +.accordion-noborder .accordion-header { + border-width: 0 0 1px; +} +.accordion-noborder .accordion-body { + border-width: 0 0 1px; +} +.accordion-collapse { + background: url('images/accordion_arrows.png') no-repeat 0 0; +} +.accordion-expand { + background: url('images/accordion_arrows.png') no-repeat -16px 0; +} +.accordion { + background: #ffffff; + border-color: #95B8E7; +} +.accordion .accordion-header { + background: #E0ECFF; + filter: none; +} +.accordion .accordion-header-selected { + background: #ffe48d; +} +.accordion .accordion-header-selected .panel-title { + color: #000000; +} +.accordion .panel-last > .accordion-header { + border-bottom-color: #E0ECFF; +} +.accordion .panel-last > .accordion-body { + border-bottom-color: #ffffff; +} +.accordion .panel-last > .accordion-header-selected, +.accordion .panel-last > .accordion-header-border { + border-bottom-color: #95B8E7; +} +.accordion> .panel-hleft { + float: left; +} +.accordion> .panel-hleft>.panel-header { + border-width: 0 1px 0 0; +} +.accordion> .panel-hleft> .panel-body { + border-width: 0 1px 0 0; +} +.accordion> .panel-hleft.panel-last > .accordion-header { + border-right-color: #E0ECFF; +} +.accordion> .panel-hleft.panel-last > .accordion-body { + border-right-color: #ffffff; +} +.accordion> .panel-hleft.panel-last > .accordion-header-selected, +.accordion> .panel-hleft.panel-last > .accordion-header-border { + border-right-color: #95B8E7; +} +.accordion> .panel-hright { + float: right; +} +.accordion> .panel-hright>.panel-header { + border-width: 0 0 0 1px; +} +.accordion> .panel-hright> .panel-body { + border-width: 0 0 0 1px; +} +.accordion> .panel-hright.panel-last > .accordion-header { + border-left-color: #E0ECFF; +} +.accordion> .panel-hright.panel-last > .accordion-body { + border-left-color: #ffffff; +} +.accordion> .panel-hright.panel-last > .accordion-header-selected, +.accordion> .panel-hright.panel-last > .accordion-header-border { + border-left-color: #95B8E7; +} diff --git a/src/main/webapp/static/easyUI/themes/default/calendar.css b/src/main/webapp/static/easyUI/themes/default/calendar.css new file mode 100644 index 0000000000000000000000000000000000000000..a3b953de04e2ce1e4adf4658d2ceb3f22fff1a8e --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/default/calendar.css @@ -0,0 +1,202 @@ +.calendar { + border-width: 1px; + border-style: solid; + padding: 1px; + overflow: hidden; +} +.calendar table { + table-layout: fixed; + border-collapse: separate; + font-size: 12px; + width: 100%; + height: 100%; +} +.calendar table td, +.calendar table th { + font-size: 12px; +} +.calendar-noborder { + border: 0; +} +.calendar-header { + position: relative; + height: 22px; +} +.calendar-title { + text-align: center; + height: 22px; +} +.calendar-title span { + position: relative; + display: inline-block; + top: 2px; + padding: 0 3px; + height: 18px; + line-height: 18px; + font-size: 12px; + cursor: pointer; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-prevmonth, +.calendar-nextmonth, +.calendar-prevyear, +.calendar-nextyear { + position: absolute; + top: 50%; + margin-top: -7px; + width: 14px; + height: 14px; + cursor: pointer; + font-size: 1px; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-prevmonth { + left: 20px; + background: url('images/calendar_arrows.png') no-repeat -18px -2px; +} +.calendar-nextmonth { + right: 20px; + background: url('images/calendar_arrows.png') no-repeat -34px -2px; +} +.calendar-prevyear { + left: 3px; + background: url('images/calendar_arrows.png') no-repeat -1px -2px; +} +.calendar-nextyear { + right: 3px; + background: url('images/calendar_arrows.png') no-repeat -49px -2px; +} +.calendar-body { + position: relative; +} +.calendar-body th, +.calendar-body td { + text-align: center; +} +.calendar-day { + border: 0; + padding: 1px; + cursor: pointer; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-other-month { + opacity: 0.3; + filter: alpha(opacity=30); +} +.calendar-disabled { + opacity: 0.6; + filter: alpha(opacity=60); + cursor: default; +} +.calendar-menu { + position: absolute; + top: 0; + left: 0; + width: 180px; + height: 150px; + padding: 5px; + font-size: 12px; + display: none; + overflow: hidden; +} +.calendar-menu-year-inner { + text-align: center; + padding-bottom: 5px; +} +.calendar-menu-year { + width: 50px; + text-align: center; + border-width: 1px; + border-style: solid; + outline-style: none; + resize: none; + margin: 0; + padding: 2px; + font-weight: bold; + font-size: 12px; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-menu-prev, +.calendar-menu-next { + display: inline-block; + width: 21px; + height: 21px; + vertical-align: top; + cursor: pointer; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-menu-prev { + margin-right: 10px; + background: url('images/calendar_arrows.png') no-repeat 2px 2px; +} +.calendar-menu-next { + margin-left: 10px; + background: url('images/calendar_arrows.png') no-repeat -45px 2px; +} +.calendar-menu-month { + text-align: center; + cursor: pointer; + font-weight: bold; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-body th, +.calendar-menu-month { + color: #4d4d4d; +} +.calendar-day { + color: #000000; +} +.calendar-sunday { + color: #CC2222; +} +.calendar-saturday { + color: #00ee00; +} +.calendar-today { + color: #0000ff; +} +.calendar-menu-year { + border-color: #95B8E7; +} +.calendar { + border-color: #95B8E7; +} +.calendar-header { + background: #E0ECFF; +} +.calendar-body, +.calendar-menu { + background: #ffffff; +} +.calendar-body th { + background: #F4F4F4; + padding: 2px 0; +} +.calendar-hover, +.calendar-nav-hover, +.calendar-menu-hover { + background-color: #eaf2ff; + color: #000000; +} +.calendar-hover { + border: 1px solid #b7d2ff; + padding: 0; +} +.calendar-selected { + background-color: #ffe48d; + color: #000000; + border: 1px solid #ffab3f; + padding: 0; +} diff --git a/src/main/webapp/static/easyUI/themes/default/combo.css b/src/main/webapp/static/easyUI/themes/default/combo.css new file mode 100644 index 0000000000000000000000000000000000000000..a516386526aaa7afab86bfe1edd47609d2cb7b5b --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/default/combo.css @@ -0,0 +1,35 @@ +.combo-arrow { + width: 18px; + height: 20px; + overflow: hidden; + display: inline-block; + vertical-align: top; + cursor: pointer; + opacity: 0.6; + filter: alpha(opacity=60); +} +.combo-arrow-hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.combo-panel { + overflow: auto; +} +.combo-arrow { + background: url('images/combo_arrow.png') no-repeat center center; +} +.combo-panel { + background-color: #ffffff; +} +.combo-arrow { + background-color: #E0ECFF; +} +.combo-arrow-hover { + background-color: #eaf2ff; +} +.combo-arrow:hover { + background-color: #eaf2ff; +} +.combo .textbox-icon-disabled:hover { + cursor: default; +} diff --git a/src/main/webapp/static/easyUI/themes/default/combobox.css b/src/main/webapp/static/easyUI/themes/default/combobox.css new file mode 100644 index 0000000000000000000000000000000000000000..67ae3c6c9a9a944b012e644f97ae7b06932af8b6 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/default/combobox.css @@ -0,0 +1,39 @@ +.combobox-item, +.combobox-group, +.combobox-stick { + font-size: 12px; + padding: 3px; +} +.combobox-item-disabled { + opacity: 0.5; + filter: alpha(opacity=50); +} +.combobox-gitem { + padding-left: 10px; +} +.combobox-group, +.combobox-stick { + font-weight: bold; +} +.combobox-stick { + position: absolute; + top: 1px; + left: 1px; + right: 1px; + background: inherit; +} +.combobox-item-hover { + background-color: #eaf2ff; + color: #000000; +} +.combobox-item-selected { + background-color: #ffe48d; + color: #000000; +} +.combobox-icon { + display: inline-block; + width: 16px; + height: 16px; + vertical-align: middle; + margin-right: 2px; +} diff --git a/src/main/webapp/static/easyUI/themes/default/datagrid.css b/src/main/webapp/static/easyUI/themes/default/datagrid.css new file mode 100644 index 0000000000000000000000000000000000000000..bf557afc869a5c51e241f691e0ba93d1c9581229 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/default/datagrid.css @@ -0,0 +1,288 @@ +.datagrid .panel-body { + overflow: hidden; + position: relative; +} +.datagrid-view { + position: relative; + overflow: hidden; +} +.datagrid-view1, +.datagrid-view2 { + position: absolute; + overflow: hidden; + top: 0; +} +.datagrid-view1 { + left: 0; +} +.datagrid-view2 { + right: 0; +} +.datagrid-mask { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + opacity: 0.3; + filter: alpha(opacity=30); + display: none; +} +.datagrid-mask-msg { + position: absolute; + top: 50%; + margin-top: -20px; + padding: 10px 5px 10px 30px; + width: auto; + height: 16px; + border-width: 2px; + border-style: solid; + display: none; +} +.datagrid-empty { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 25px; + line-height: 25px; + text-align: center; +} +.datagrid-sort-icon { + padding: 0; + display: none; +} +.datagrid-toolbar { + height: auto; + padding: 1px 2px; + border-width: 0 0 1px 0; + border-style: solid; +} +.datagrid-btn-separator { + float: left; + height: 24px; + border-left: 1px solid #ccc; + border-right: 1px solid #fff; + margin: 2px 1px; +} +.datagrid .datagrid-pager { + display: block; + margin: 0; + border-width: 1px 0 0 0; + border-style: solid; +} +.datagrid .datagrid-pager-top { + border-width: 0 0 1px 0; +} +.datagrid-header { + overflow: hidden; + cursor: default; + border-width: 0 0 1px 0; + border-style: solid; +} +.datagrid-header-inner { + float: left; + width: 10000px; +} +.datagrid-header-row, +.datagrid-row { + height: 25px; +} +.datagrid-header td, +.datagrid-body td, +.datagrid-footer td { + border-width: 0 1px 1px 0; + border-style: dotted; + margin: 0; + padding: 0; +} +.datagrid-cell, +.datagrid-cell-group, +.datagrid-header-rownumber, +.datagrid-cell-rownumber { + margin: 0; + padding: 0 4px; + white-space: nowrap; + word-wrap: normal; + overflow: hidden; + height: 18px; + line-height: 18px; + font-size: 12px; +} +.datagrid-header .datagrid-cell { + height: auto; +} +.datagrid-header .datagrid-cell span { + font-size: 12px; +} +.datagrid-cell-group { + text-align: center; + text-overflow: ellipsis; +} +.datagrid-header-rownumber, +.datagrid-cell-rownumber { + width: 30px; + text-align: center; + margin: 0; + padding: 0; +} +.datagrid-body { + margin: 0; + padding: 0; + overflow: auto; + zoom: 1; +} +.datagrid-view1 .datagrid-body-inner { + padding-bottom: 20px; +} +.datagrid-view1 .datagrid-body { + overflow: hidden; +} +.datagrid-footer { + overflow: hidden; +} +.datagrid-footer-inner { + border-width: 1px 0 0 0; + border-style: solid; + width: 10000px; + float: left; +} +.datagrid-row-editing .datagrid-cell { + height: auto; +} +.datagrid-header-check, +.datagrid-cell-check { + padding: 0; + width: 27px; + height: 18px; + font-size: 1px; + text-align: center; + overflow: hidden; +} +.datagrid-header-check input, +.datagrid-cell-check input { + margin: 0; + padding: 0; + width: 15px; + height: 18px; +} +.datagrid-resize-proxy { + position: absolute; + width: 1px; + height: 10000px; + top: 0; + cursor: e-resize; + display: none; +} +.datagrid-body .datagrid-editable { + margin: 0; + padding: 0; +} +.datagrid-body .datagrid-editable table { + width: 100%; + height: 100%; +} +.datagrid-body .datagrid-editable td { + border: 0; + margin: 0; + padding: 0; +} +.datagrid-view .datagrid-editable-input { + margin: 0; + padding: 2px 4px; + border: 1px solid #95B8E7; + font-size: 12px; + outline-style: none; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.datagrid-view .validatebox-invalid { + border-color: #ffa8a8; +} +.datagrid-sort .datagrid-sort-icon { + display: inline; + padding: 0 13px 0 0; + background: url('images/datagrid_icons.png') no-repeat -64px center; +} +.datagrid-sort-desc .datagrid-sort-icon { + display: inline; + padding: 0 13px 0 0; + background: url('images/datagrid_icons.png') no-repeat -16px center; +} +.datagrid-sort-asc .datagrid-sort-icon { + display: inline; + padding: 0 13px 0 0; + background: url('images/datagrid_icons.png') no-repeat 0px center; +} +.datagrid-row-collapse { + background: url('images/datagrid_icons.png') no-repeat -48px center; +} +.datagrid-row-expand { + background: url('images/datagrid_icons.png') no-repeat -32px center; +} +.datagrid-mask-msg { + background: #ffffff url('images/loading.gif') no-repeat scroll 5px center; +} +.datagrid-header, +.datagrid-td-rownumber { + background-color: #efefef; + background: -webkit-linear-gradient(top,#F9F9F9 0,#efefef 100%); + background: -moz-linear-gradient(top,#F9F9F9 0,#efefef 100%); + background: -o-linear-gradient(top,#F9F9F9 0,#efefef 100%); + background: linear-gradient(to bottom,#F9F9F9 0,#efefef 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#F9F9F9,endColorstr=#efefef,GradientType=0); +} +.datagrid-cell-rownumber { + color: #000000; +} +.datagrid-resize-proxy { + background: #aac5e7; +} +.datagrid-mask { + background: #ccc; +} +.datagrid-mask-msg { + border-color: #95B8E7; +} +.datagrid-toolbar, +.datagrid-pager { + background: #F4F4F4; +} +.datagrid-header, +.datagrid-toolbar, +.datagrid-pager, +.datagrid-footer-inner { + border-color: #dddddd; +} +.datagrid-header td, +.datagrid-body td, +.datagrid-footer td { + border-color: #ccc; +} +.datagrid-htable, +.datagrid-btable, +.datagrid-ftable { + color: #000000; + border-collapse: separate; +} +.datagrid-row-alt { + background: #fafafa; +} +.datagrid-row-over, +.datagrid-header td.datagrid-header-over { + background: #eaf2ff; + color: #000000; + cursor: default; +} +.datagrid-row-selected { + background: #ffe48d; + color: #000000; +} +.datagrid-row-editing .textbox, +.datagrid-row-editing .textbox-text { + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} diff --git a/src/main/webapp/static/easyUI/themes/default/datalist.css b/src/main/webapp/static/easyUI/themes/default/datalist.css new file mode 100644 index 0000000000000000000000000000000000000000..eedd25bc05cd0aa640df2096813c7ac608adf328 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/default/datalist.css @@ -0,0 +1,95 @@ +.datalist .datagrid-header { + border-width: 0; +} +.datalist .datagrid-group, +.m-list .m-list-group { + height: 25px; + line-height: 25px; + font-weight: bold; + overflow: hidden; + background-color: #efefef; + border-style: solid; + border-width: 0 0 1px 0; + border-color: #ccc; +} +.datalist .datagrid-group-expander { + display: none; +} +.datalist .datagrid-group-title { + padding: 0 4px; +} +.datalist .datagrid-btable { + width: 100%; + table-layout: fixed; +} +.datalist .datagrid-row td { + border-style: solid; + border-left-color: transparent; + border-right-color: transparent; + border-bottom-width: 0; +} +.datalist-lines .datagrid-row td { + border-bottom-width: 1px; +} +.datalist .datagrid-cell, +.m-list li { + width: auto; + height: auto; + padding: 2px 4px; + line-height: 18px; + position: relative; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; +} +.datalist-link, +.m-list li>a { + display: block; + position: relative; + cursor: pointer; + color: #000000; + text-decoration: none; + overflow: hidden; + margin: -2px -4px; + padding: 2px 4px; + padding-right: 16px; + line-height: 18px; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; +} +.datalist-link::after, +.m-list li>a::after { + position: absolute; + display: block; + width: 8px; + height: 8px; + content: ''; + right: 6px; + top: 50%; + margin-top: -4px; + border-style: solid; + border-width: 1px 1px 0 0; + -ms-transform: rotate(45deg); + -moz-transform: rotate(45deg); + -webkit-transform: rotate(45deg); + -o-transform: rotate(45deg); + transform: rotate(45deg); +} +.m-list { + margin: 0; + padding: 0; + list-style: none; +} +.m-list li { + border-style: solid; + border-width: 0 0 1px 0; + border-color: #ccc; +} +.m-list li>a:hover { + background: #eaf2ff; + color: #000000; +} +.m-list .m-list-group { + padding: 0 4px; +} diff --git a/src/main/webapp/static/easyUI/themes/default/datebox.css b/src/main/webapp/static/easyUI/themes/default/datebox.css new file mode 100644 index 0000000000000000000000000000000000000000..25c05fda30025c4d484884b3a7b1b308487a8907 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/default/datebox.css @@ -0,0 +1,36 @@ +.datebox-calendar-inner { + height: 180px; +} +.datebox-button { + padding: 0 5px; + text-align: center; +} +.datebox-button a { + line-height: 22px; + font-size: 12px; + font-weight: bold; + text-decoration: none; + opacity: 0.6; + filter: alpha(opacity=60); +} +.datebox-button a:hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.datebox-current, +.datebox-close { + float: left; +} +.datebox-close { + float: right; +} +.datebox .combo-arrow { + background-image: url('images/datebox_arrow.png'); + background-position: center center; +} +.datebox-button { + background-color: #F4F4F4; +} +.datebox-button a { + color: #444; +} diff --git a/src/main/webapp/static/easyUI/themes/default/dialog.css b/src/main/webapp/static/easyUI/themes/default/dialog.css new file mode 100644 index 0000000000000000000000000000000000000000..ff553877496f38cc96528c683822e5449a5279a3 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/default/dialog.css @@ -0,0 +1,47 @@ +.dialog-content { + overflow: auto; +} +.dialog-toolbar { + position: relative; + padding: 2px 5px; +} +.dialog-tool-separator { + float: left; + height: 24px; + border-left: 1px solid #ccc; + border-right: 1px solid #fff; + margin: 2px 1px; +} +.dialog-button { + position: relative; + top: -1px; + padding: 5px; + text-align: right; +} +.dialog-button .l-btn { + margin-left: 5px; +} +.dialog-toolbar, +.dialog-button { + background: #F4F4F4; + border-width: 1px; + border-style: solid; +} +.dialog-toolbar { + border-color: #95B8E7 #95B8E7 #dddddd #95B8E7; +} +.dialog-button { + border-color: #dddddd #95B8E7 #95B8E7 #95B8E7; +} +.window-thinborder .dialog-toolbar { + border-left: transparent; + border-right: transparent; + border-top-color: #F4F4F4; +} +.window-thinborder .dialog-button { + top: 0px; + padding: 5px 8px 8px 8px; + border-left: transparent; + border-right: transparent; + border-bottom: transparent; +} diff --git a/src/main/webapp/static/easyUI/themes/default/easyui.css b/src/main/webapp/static/easyUI/themes/default/easyui.css new file mode 100644 index 0000000000000000000000000000000000000000..cd6b081b2f76a88a63dcc27893c335c07eaf7144 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/default/easyui.css @@ -0,0 +1,3220 @@ +.panel { + overflow: hidden; + text-align: left; + margin: 0; + border: 0; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.panel-header, +.panel-body { + border-width: 1px; + border-style: solid; +} +.panel-header { + padding: 5px; + position: relative; +} +.panel-title { + background: url('images/blank.gif') no-repeat; +} +.panel-header-noborder { + border-width: 0 0 1px 0; +} +.panel-body { + overflow: auto; + border-top-width: 0; + padding: 0; +} +.panel-body-noheader { + border-top-width: 1px; +} +.panel-body-noborder { + border-width: 0px; +} +.panel-body-nobottom { + border-bottom-width: 0; +} +.panel-with-icon { + padding-left: 18px; +} +.panel-icon, +.panel-tool { + position: absolute; + top: 50%; + margin-top: -8px; + height: 16px; + overflow: hidden; +} +.panel-icon { + left: 5px; + width: 16px; +} +.panel-tool { + right: 5px; + width: auto; +} +.panel-tool a { + display: inline-block; + width: 16px; + height: 16px; + opacity: 0.6; + filter: alpha(opacity=60); + margin: 0 0 0 2px; + vertical-align: top; +} +.panel-tool a:hover { + opacity: 1; + filter: alpha(opacity=100); + background-color: #eaf2ff; + -moz-border-radius: 3px 3px 3px 3px; + -webkit-border-radius: 3px 3px 3px 3px; + border-radius: 3px 3px 3px 3px; +} +.panel-loading { + padding: 11px 0px 10px 30px; +} +.panel-noscroll { + overflow: hidden; +} +.panel-fit, +.panel-fit body { + height: 100%; + margin: 0; + padding: 0; + border: 0; + overflow: hidden; +} +.panel-loading { + background: url('images/loading.gif') no-repeat 10px 10px; +} +.panel-tool-close { + background: url('images/panel_tools.png') no-repeat -16px 0px; +} +.panel-tool-min { + background: url('images/panel_tools.png') no-repeat 0px 0px; +} +.panel-tool-max { + background: url('images/panel_tools.png') no-repeat 0px -16px; +} +.panel-tool-restore { + background: url('images/panel_tools.png') no-repeat -16px -16px; +} +.panel-tool-collapse { + background: url('images/panel_tools.png') no-repeat -32px 0; +} +.panel-tool-expand { + background: url('images/panel_tools.png') no-repeat -32px -16px; +} +.panel-header, +.panel-body { + border-color: #95B8E7; +} +.panel-header { + background-color: #E0ECFF; + background: -webkit-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%); + background: -moz-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%); + background: -o-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%); + background: linear-gradient(to bottom,#EFF5FF 0,#E0ECFF 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#EFF5FF,endColorstr=#E0ECFF,GradientType=0); +} +.panel-body { + background-color: #ffffff; + color: #000000; + font-size: 12px; +} +.panel-title { + font-size: 12px; + font-weight: bold; + color: #0E2D5F; + height: 16px; + line-height: 16px; +} +.panel-footer { + border: 1px solid #95B8E7; + overflow: hidden; + background: #F4F4F4; +} +.panel-footer-noborder { + border-width: 1px 0 0 0; +} +.panel-hleft, +.panel-hright { + position: relative; +} +.panel-hleft>.panel-body, +.panel-hright>.panel-body { + position: absolute; +} +.panel-hleft>.panel-header { + float: left; +} +.panel-hright>.panel-header { + float: right; +} +.panel-hleft>.panel-body { + border-top-width: 1px; + border-left-width: 0; +} +.panel-hright>.panel-body { + border-top-width: 1px; + border-right-width: 0; +} +.panel-hleft>.panel-body-nobottom { + border-bottom-width: 1px; + border-right-width: 0; +} +.panel-hright>.panel-body-nobottom { + border-bottom-width: 1px; + border-left-width: 0; +} +.panel-hleft>.panel-footer { + position: absolute; + right: 0; +} +.panel-hright>.panel-footer { + position: absolute; + left: 0; +} +.panel-hleft>.panel-header-noborder { + border-width: 0 1px 0 0; +} +.panel-hright>.panel-header-noborder { + border-width: 0 0 0 1px; +} +.panel-hleft>.panel-body-noborder { + border-width: 0; +} +.panel-hright>.panel-body-noborder { + border-width: 0; +} +.panel-hleft>.panel-body-noheader { + border-left-width: 1px; +} +.panel-hright>.panel-body-noheader { + border-right-width: 1px; +} +.panel-hleft>.panel-footer-noborder { + border-width: 0 0 0 1px; +} +.panel-hright>.panel-footer-noborder { + border-width: 0 1px 0 0; +} +.panel-hleft>.panel-header .panel-icon, +.panel-hright>.panel-header .panel-icon { + margin-top: 0; + top: 5px; +} +.panel-hleft>.panel-header .panel-title, +.panel-hright>.panel-header .panel-title { + position: absolute; + min-width: 16px; + left: 21px; + top: 5px; + bottom: auto; + white-space: nowrap; + word-wrap: normal; + -webkit-transform: rotate(90deg); + -webkit-transform-origin: 0 0; + -moz-transform: rotate(90deg); + -moz-transform-origin: 0 0; + -o-transform: rotate(90deg); + -o-transform-origin: 0 0; + transform: rotate(90deg); + transform-origin: 0 0; +} +.panel-hleft>.panel-header .panel-title-up, +.panel-hright>.panel-header .panel-title-up { + position: absolute; + min-width: 16px; + left: 21px; + top: auto; + bottom: 5px; + text-align: right; + white-space: nowrap; + word-wrap: normal; + -webkit-transform: rotate(-90deg); + -webkit-transform-origin: 0 0; + -moz-transform: rotate(-90deg); + -moz-transform-origin: 0 0; + -o-transform: rotate(-90deg); + -o-transform-origin: 0 0; + transform: rotate(-90deg); + transform-origin: 0 16px; +} +.panel-hleft>.panel-header .panel-with-icon.panel-title-up, +.panel-hright>.panel-header .panel-with-icon.panel-title-up { + padding-left: 0; + padding-right: 18px; +} +.panel-hleft>.panel-header .panel-tool, +.panel-hright>.panel-header .panel-tool { + top: auto; + bottom: 5px; + width: 16px; + height: auto; + left: 50%; + margin-left: -8px; + margin-top: 0; +} +.panel-hleft>.panel-header .panel-tool a, +.panel-hright>.panel-header .panel-tool a { + margin: 2px 0 0 0; +} +.accordion { + overflow: hidden; + border-width: 1px; + border-style: solid; +} +.accordion .accordion-header { + border-width: 0 0 1px; + cursor: pointer; +} +.accordion .accordion-body { + border-width: 0 0 1px; +} +.accordion-noborder { + border-width: 0; +} +.accordion-noborder .accordion-header { + border-width: 0 0 1px; +} +.accordion-noborder .accordion-body { + border-width: 0 0 1px; +} +.accordion-collapse { + background: url('images/accordion_arrows.png') no-repeat 0 0; +} +.accordion-expand { + background: url('images/accordion_arrows.png') no-repeat -16px 0; +} +.accordion { + background: #ffffff; + border-color: #95B8E7; +} +.accordion .accordion-header { + background: #E0ECFF; + filter: none; +} +.accordion .accordion-header-selected { + background: #ffe48d; +} +.accordion .accordion-header-selected .panel-title { + color: #000000; +} +.accordion .panel-last > .accordion-header { + border-bottom-color: #E0ECFF; +} +.accordion .panel-last > .accordion-body { + border-bottom-color: #ffffff; +} +.accordion .panel-last > .accordion-header-selected, +.accordion .panel-last > .accordion-header-border { + border-bottom-color: #95B8E7; +} +.accordion> .panel-hleft { + float: left; +} +.accordion> .panel-hleft>.panel-header { + border-width: 0 1px 0 0; +} +.accordion> .panel-hleft> .panel-body { + border-width: 0 1px 0 0; +} +.accordion> .panel-hleft.panel-last > .accordion-header { + border-right-color: #E0ECFF; +} +.accordion> .panel-hleft.panel-last > .accordion-body { + border-right-color: #ffffff; +} +.accordion> .panel-hleft.panel-last > .accordion-header-selected, +.accordion> .panel-hleft.panel-last > .accordion-header-border { + border-right-color: #95B8E7; +} +.accordion> .panel-hright { + float: right; +} +.accordion> .panel-hright>.panel-header { + border-width: 0 0 0 1px; +} +.accordion> .panel-hright> .panel-body { + border-width: 0 0 0 1px; +} +.accordion> .panel-hright.panel-last > .accordion-header { + border-left-color: #E0ECFF; +} +.accordion> .panel-hright.panel-last > .accordion-body { + border-left-color: #ffffff; +} +.accordion> .panel-hright.panel-last > .accordion-header-selected, +.accordion> .panel-hright.panel-last > .accordion-header-border { + border-left-color: #95B8E7; +} +.window { + overflow: hidden; + padding: 5px; + border-width: 1px; + border-style: solid; +} +.window .window-header { + background: transparent; + padding: 0px 0px 6px 0px; +} +.window .window-body { + border-width: 1px; + border-style: solid; + border-top-width: 0px; +} +.window .window-body-noheader { + border-top-width: 1px; +} +.window .panel-body-nobottom { + border-bottom-width: 0; +} +.window .window-header .panel-icon, +.window .window-header .panel-tool { + top: 50%; + margin-top: -11px; +} +.window .window-header .panel-icon { + left: 1px; +} +.window .window-header .panel-tool { + right: 1px; +} +.window .window-header .panel-with-icon { + padding-left: 18px; +} +.window-proxy { + position: absolute; + overflow: hidden; +} +.window-proxy-mask { + position: absolute; + filter: alpha(opacity=5); + opacity: 0.05; +} +.window-mask { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + filter: alpha(opacity=40); + opacity: 0.40; + font-size: 1px; + overflow: hidden; +} +.window, +.window-shadow { + position: absolute; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.window-shadow { + background: #ccc; + -moz-box-shadow: 2px 2px 3px #cccccc; + -webkit-box-shadow: 2px 2px 3px #cccccc; + box-shadow: 2px 2px 3px #cccccc; + filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); +} +.window, +.window .window-body { + border-color: #95B8E7; +} +.window { + background-color: #E0ECFF; + background: -webkit-linear-gradient(top,#EFF5FF 0,#E0ECFF 20%); + background: -moz-linear-gradient(top,#EFF5FF 0,#E0ECFF 20%); + background: -o-linear-gradient(top,#EFF5FF 0,#E0ECFF 20%); + background: linear-gradient(to bottom,#EFF5FF 0,#E0ECFF 20%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#EFF5FF,endColorstr=#E0ECFF,GradientType=0); +} +.window-proxy { + border: 1px dashed #95B8E7; +} +.window-proxy-mask, +.window-mask { + background: #ccc; +} +.window .panel-footer { + border: 1px solid #95B8E7; + position: relative; + top: -1px; +} +.window-thinborder { + padding: 0; +} +.window-thinborder .window-header { + padding: 5px 5px 6px 5px; +} +.window-thinborder .window-body { + border-width: 0px; +} +.window-thinborder .window-header .panel-icon, +.window-thinborder .window-header .panel-tool { + margin-top: -9px; + margin-left: 5px; + margin-right: 5px; +} +.window-noborder { + border: 0; +} +.window.panel-hleft .window-header { + padding: 0 6px 0 0; +} +.window.panel-hright .window-header { + padding: 0 0 0 6px; +} +.window.panel-hleft>.panel-header .panel-title { + top: auto; + left: 16px; +} +.window.panel-hright>.panel-header .panel-title { + top: auto; + right: 16px; +} +.window.panel-hleft>.panel-header .panel-title-up, +.window.panel-hright>.panel-header .panel-title-up { + bottom: 0; +} +.window.panel-hleft .window-body { + border-width: 1px 1px 1px 0; +} +.window.panel-hright .window-body { + border-width: 1px 0 1px 1px; +} +.window.panel-hleft .window-header .panel-icon { + top: 1px; + margin-top: 0; + left: 0; +} +.window.panel-hright .window-header .panel-icon { + top: 1px; + margin-top: 0; + left: auto; + right: 1px; +} +.window.panel-hleft .window-header .panel-tool, +.window.panel-hright .window-header .panel-tool { + margin-top: 0; + top: auto; + bottom: 1px; + right: auto; + margin-right: 0; + left: 50%; + margin-left: -11px; +} +.window.panel-hright .window-header .panel-tool { + left: auto; + right: 1px; +} +.window-thinborder.panel-hleft .window-header { + padding: 5px 6px 5px 5px; +} +.window-thinborder.panel-hright .window-header { + padding: 5px 5px 5px 6px; +} +.window-thinborder.panel-hleft>.panel-header .panel-title { + left: 21px; +} +.window-thinborder.panel-hleft>.panel-header .panel-title-up, +.window-thinborder.panel-hright>.panel-header .panel-title-up { + bottom: 5px; +} +.window-thinborder.panel-hleft .window-header .panel-icon, +.window-thinborder.panel-hright .window-header .panel-icon { + margin-top: 5px; +} +.window-thinborder.panel-hleft .window-header .panel-tool, +.window-thinborder.panel-hright .window-header .panel-tool { + left: 16px; + bottom: 5px; +} +.dialog-content { + overflow: auto; +} +.dialog-toolbar { + position: relative; + padding: 2px 5px; +} +.dialog-tool-separator { + float: left; + height: 24px; + border-left: 1px solid #ccc; + border-right: 1px solid #fff; + margin: 2px 1px; +} +.dialog-button { + position: relative; + top: -1px; + padding: 5px; + text-align: right; +} +.dialog-button .l-btn { + margin-left: 5px; +} +.dialog-toolbar, +.dialog-button { + background: #F4F4F4; + border-width: 1px; + border-style: solid; +} +.dialog-toolbar { + border-color: #95B8E7 #95B8E7 #dddddd #95B8E7; +} +.dialog-button { + border-color: #dddddd #95B8E7 #95B8E7 #95B8E7; +} +.window-thinborder .dialog-toolbar { + border-left: transparent; + border-right: transparent; + border-top-color: #F4F4F4; +} +.window-thinborder .dialog-button { + top: 0px; + padding: 5px 8px 8px 8px; + border-left: transparent; + border-right: transparent; + border-bottom: transparent; +} +.l-btn { + text-decoration: none; + display: inline-block; + overflow: hidden; + margin: 0; + padding: 0; + cursor: pointer; + outline: none; + text-align: center; + vertical-align: middle; + line-height: normal; +} +.l-btn-plain { + border-width: 0; + padding: 1px; +} +.l-btn-left { + display: inline-block; + position: relative; + overflow: hidden; + margin: 0; + padding: 0; + vertical-align: top; +} +.l-btn-text { + display: inline-block; + vertical-align: top; + width: auto; + line-height: 24px; + font-size: 12px; + padding: 0; + margin: 0 4px; +} +.l-btn-icon { + display: inline-block; + width: 16px; + height: 16px; + line-height: 16px; + position: absolute; + top: 50%; + margin-top: -8px; + font-size: 1px; +} +.l-btn span span .l-btn-empty { + display: inline-block; + margin: 0; + width: 16px; + height: 24px; + font-size: 1px; + vertical-align: top; +} +.l-btn span .l-btn-icon-left { + padding: 0 0 0 20px; + background-position: left center; +} +.l-btn span .l-btn-icon-right { + padding: 0 20px 0 0; + background-position: right center; +} +.l-btn-icon-left .l-btn-text { + margin: 0 4px 0 24px; +} +.l-btn-icon-left .l-btn-icon { + left: 4px; +} +.l-btn-icon-right .l-btn-text { + margin: 0 24px 0 4px; +} +.l-btn-icon-right .l-btn-icon { + right: 4px; +} +.l-btn-icon-top .l-btn-text { + margin: 20px 4px 0 4px; +} +.l-btn-icon-top .l-btn-icon { + top: 4px; + left: 50%; + margin: 0 0 0 -8px; +} +.l-btn-icon-bottom .l-btn-text { + margin: 0 4px 20px 4px; +} +.l-btn-icon-bottom .l-btn-icon { + top: auto; + bottom: 4px; + left: 50%; + margin: 0 0 0 -8px; +} +.l-btn-left .l-btn-empty { + margin: 0 4px; + width: 16px; +} +.l-btn-plain:hover { + padding: 0; +} +.l-btn-focus { + outline: #0000FF dotted thin; +} +.l-btn-large .l-btn-text { + line-height: 40px; +} +.l-btn-large .l-btn-icon { + width: 32px; + height: 32px; + line-height: 32px; + margin-top: -16px; +} +.l-btn-large .l-btn-icon-left .l-btn-text { + margin-left: 40px; +} +.l-btn-large .l-btn-icon-right .l-btn-text { + margin-right: 40px; +} +.l-btn-large .l-btn-icon-top .l-btn-text { + margin-top: 36px; + line-height: 24px; + min-width: 32px; +} +.l-btn-large .l-btn-icon-top .l-btn-icon { + margin: 0 0 0 -16px; +} +.l-btn-large .l-btn-icon-bottom .l-btn-text { + margin-bottom: 36px; + line-height: 24px; + min-width: 32px; +} +.l-btn-large .l-btn-icon-bottom .l-btn-icon { + margin: 0 0 0 -16px; +} +.l-btn-large .l-btn-left .l-btn-empty { + margin: 0 4px; + width: 32px; +} +.l-btn { + color: #444; + background: #fafafa; + background-repeat: repeat-x; + border: 1px solid #bbb; + background: -webkit-linear-gradient(top,#ffffff 0,#eeeeee 100%); + background: -moz-linear-gradient(top,#ffffff 0,#eeeeee 100%); + background: -o-linear-gradient(top,#ffffff 0,#eeeeee 100%); + background: linear-gradient(to bottom,#ffffff 0,#eeeeee 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#eeeeee,GradientType=0); + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.l-btn:hover { + background: #eaf2ff; + color: #000000; + border: 1px solid #b7d2ff; + filter: none; +} +.l-btn-plain { + background: transparent; + border-width: 0; + filter: none; +} +.l-btn-outline { + border-width: 1px; + border-color: #b7d2ff; + padding: 0; +} +.l-btn-plain:hover { + background: #eaf2ff; + color: #000000; + border: 1px solid #b7d2ff; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.l-btn-disabled, +.l-btn-disabled:hover { + opacity: 0.5; + cursor: default; + background: #fafafa; + color: #444; + background: -webkit-linear-gradient(top,#ffffff 0,#eeeeee 100%); + background: -moz-linear-gradient(top,#ffffff 0,#eeeeee 100%); + background: -o-linear-gradient(top,#ffffff 0,#eeeeee 100%); + background: linear-gradient(to bottom,#ffffff 0,#eeeeee 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#eeeeee,GradientType=0); +} +.l-btn-disabled .l-btn-text, +.l-btn-disabled .l-btn-icon { + filter: alpha(opacity=50); +} +.l-btn-plain-disabled, +.l-btn-plain-disabled:hover { + background: transparent; + filter: alpha(opacity=50); +} +.l-btn-selected, +.l-btn-selected:hover { + background: #ddd; + filter: none; +} +.l-btn-plain-selected, +.l-btn-plain-selected:hover { + background: #ddd; +} +.textbox { + position: relative; + border: 1px solid #95B8E7; + background-color: #fff; + vertical-align: middle; + display: inline-block; + overflow: hidden; + white-space: nowrap; + margin: 0; + padding: 0; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.textbox .textbox-text { + font-size: 12px; + border: 0; + margin: 0; + padding: 4px; + white-space: normal; + vertical-align: top; + outline-style: none; + resize: none; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.textbox .textbox-text::-ms-clear, +.textbox .textbox-text::-ms-reveal { + display: none; +} +.textbox textarea.textbox-text { + white-space: pre-wrap; +} +.textbox .textbox-prompt { + font-size: 12px; + color: #aaa; +} +.textbox .textbox-bgicon { + background-position: 3px center; + padding-left: 21px; +} +.textbox .textbox-button, +.textbox .textbox-button:hover { + position: absolute; + top: 0; + padding: 0; + vertical-align: top; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.textbox .textbox-button-right, +.textbox .textbox-button-right:hover { + right: 0; + border-width: 0 0 0 1px; +} +.textbox .textbox-button-left, +.textbox .textbox-button-left:hover { + left: 0; + border-width: 0 1px 0 0; +} +.textbox .textbox-button-top, +.textbox .textbox-button-top:hover { + left: 0; + border-width: 0 0 1px 0; +} +.textbox .textbox-button-bottom, +.textbox .textbox-button-bottom:hover { + top: auto; + bottom: 0; + left: 0; + border-width: 1px 0 0 0; +} +.textbox-addon { + position: absolute; + top: 0; +} +.textbox-label { + display: inline-block; + width: 80px; + height: 22px; + line-height: 22px; + vertical-align: middle; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + margin: 0; + padding-right: 5px; +} +.textbox-label-after { + padding-left: 5px; + padding-right: 0; +} +.textbox-label-top { + display: block; + width: auto; + padding: 0; +} +.textbox-disabled, +.textbox-label-disabled { + opacity: 0.6; + filter: alpha(opacity=60); +} +.textbox-icon { + display: inline-block; + width: 18px; + height: 20px; + overflow: hidden; + vertical-align: top; + background-position: center center; + cursor: pointer; + opacity: 0.6; + filter: alpha(opacity=60); + text-decoration: none; + outline-style: none; +} +.textbox-icon-disabled, +.textbox-icon-readonly { + cursor: default; +} +.textbox-icon:hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.textbox-icon-disabled:hover { + opacity: 0.6; + filter: alpha(opacity=60); +} +.textbox-focused { + border-color: #6b9cde; + -moz-box-shadow: 0 0 3px 0 #95B8E7; + -webkit-box-shadow: 0 0 3px 0 #95B8E7; + box-shadow: 0 0 3px 0 #95B8E7; +} +.textbox-invalid { + border-color: #ffa8a8; + background-color: #fff3f3; +} +.passwordbox-open { + background: url('images/passwordbox_open.png') no-repeat center center; +} +.passwordbox-close { + background: url('images/passwordbox_close.png') no-repeat center center; +} +.filebox .textbox-value { + vertical-align: top; + position: absolute; + top: 0; + left: -5000px; +} +.filebox-label { + display: inline-block; + position: absolute; + width: 100%; + height: 100%; + cursor: pointer; + left: 0; + top: 0; + z-index: 10; + background: url('images/blank.gif') no-repeat; +} +.l-btn-disabled .filebox-label { + cursor: default; +} +.combo-arrow { + width: 18px; + height: 20px; + overflow: hidden; + display: inline-block; + vertical-align: top; + cursor: pointer; + opacity: 0.6; + filter: alpha(opacity=60); +} +.combo-arrow-hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.combo-panel { + overflow: auto; +} +.combo-arrow { + background: url('images/combo_arrow.png') no-repeat center center; +} +.combo-panel { + background-color: #ffffff; +} +.combo-arrow { + background-color: #E0ECFF; +} +.combo-arrow-hover { + background-color: #eaf2ff; +} +.combo-arrow:hover { + background-color: #eaf2ff; +} +.combo .textbox-icon-disabled:hover { + cursor: default; +} +.combobox-item, +.combobox-group, +.combobox-stick { + font-size: 12px; + padding: 3px; +} +.combobox-item-disabled { + opacity: 0.5; + filter: alpha(opacity=50); +} +.combobox-gitem { + padding-left: 10px; +} +.combobox-group, +.combobox-stick { + font-weight: bold; +} +.combobox-stick { + position: absolute; + top: 1px; + left: 1px; + right: 1px; + background: inherit; +} +.combobox-item-hover { + background-color: #eaf2ff; + color: #000000; +} +.combobox-item-selected { + background-color: #ffe48d; + color: #000000; +} +.combobox-icon { + display: inline-block; + width: 16px; + height: 16px; + vertical-align: middle; + margin-right: 2px; +} +.tagbox { + cursor: text; +} +.tagbox .textbox-text { + float: left; +} +.tagbox-label { + position: relative; + display: block; + margin: 4px 0 0 4px; + padding: 0 20px 0 4px; + float: left; + vertical-align: top; + text-decoration: none; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; + background: #eaf2ff; + color: #000000; +} +.tagbox-remove { + background: url('images/tagbox_icons.png') no-repeat -16px center; + position: absolute; + display: block; + width: 16px; + height: 16px; + right: 2px; + top: 50%; + margin-top: -8px; + opacity: 0.6; + filter: alpha(opacity=60); +} +.tagbox-remove:hover { + opacity: 1; + filter: alpha(opacity=100); +} +.textbox-disabled .tagbox-label { + cursor: default; +} +.textbox-disabled .tagbox-remove:hover { + cursor: default; + opacity: 0.6; + filter: alpha(opacity=60); +} +.layout { + position: relative; + overflow: hidden; + margin: 0; + padding: 0; + z-index: 0; +} +.layout-panel { + position: absolute; + overflow: hidden; +} +.layout-body { + min-width: 1px; + min-height: 1px; +} +.layout-panel-east, +.layout-panel-west { + z-index: 2; +} +.layout-panel-north, +.layout-panel-south { + z-index: 3; +} +.layout-expand { + position: absolute; + padding: 0px; + font-size: 1px; + cursor: pointer; + z-index: 1; +} +.layout-expand .panel-header, +.layout-expand .panel-body { + background: transparent; + filter: none; + overflow: hidden; +} +.layout-expand .panel-header { + border-bottom-width: 0px; +} +.layout-expand .panel-body { + position: relative; +} +.layout-expand .panel-body .panel-icon { + margin-top: 0; + top: 0; + left: 50%; + margin-left: -8px; +} +.layout-expand-west .panel-header .panel-icon, +.layout-expand-east .panel-header .panel-icon { + display: none; +} +.layout-expand-title { + position: absolute; + top: 0; + left: 21px; + white-space: nowrap; + word-wrap: normal; + -webkit-transform: rotate(90deg); + -webkit-transform-origin: 0 0; + -moz-transform: rotate(90deg); + -moz-transform-origin: 0 0; + -o-transform: rotate(90deg); + -o-transform-origin: 0 0; + transform: rotate(90deg); + transform-origin: 0 0; +} +.layout-expand-title-up { + position: absolute; + top: 0; + left: 0; + text-align: right; + padding-left: 5px; + white-space: nowrap; + word-wrap: normal; + -webkit-transform: rotate(-90deg); + -webkit-transform-origin: 0 0; + -moz-transform: rotate(-90deg); + -moz-transform-origin: 0 0; + -o-transform: rotate(-90deg); + -o-transform-origin: 0 0; + transform: rotate(-90deg); + transform-origin: 0 0; +} +.layout-expand-with-icon { + top: 18px; +} +.layout-expand .panel-body-noheader .layout-expand-title, +.layout-expand .panel-body-noheader .panel-icon { + top: 5px; +} +.layout-expand .panel-body-noheader .layout-expand-with-icon { + top: 23px; +} +.layout-split-proxy-h, +.layout-split-proxy-v { + position: absolute; + font-size: 1px; + display: none; + z-index: 5; +} +.layout-split-proxy-h { + width: 5px; + cursor: e-resize; +} +.layout-split-proxy-v { + height: 5px; + cursor: n-resize; +} +.layout-mask { + position: absolute; + background: #fafafa; + filter: alpha(opacity=10); + opacity: 0.10; + z-index: 4; +} +.layout-button-up { + background: url('images/layout_arrows.png') no-repeat -16px -16px; +} +.layout-button-down { + background: url('images/layout_arrows.png') no-repeat -16px 0; +} +.layout-button-left { + background: url('images/layout_arrows.png') no-repeat 0 0; +} +.layout-button-right { + background: url('images/layout_arrows.png') no-repeat 0 -16px; +} +.layout-split-proxy-h, +.layout-split-proxy-v { + background-color: #aac5e7; +} +.layout-split-north { + border-bottom: 5px solid #E6EEF8; +} +.layout-split-south { + border-top: 5px solid #E6EEF8; +} +.layout-split-east { + border-left: 5px solid #E6EEF8; +} +.layout-split-west { + border-right: 5px solid #E6EEF8; +} +.layout-expand { + background-color: #E0ECFF; +} +.layout-expand-over { + background-color: #E0ECFF; +} +.tabs-container { + overflow: hidden; +} +.tabs-header { + border-width: 1px; + border-style: solid; + border-bottom-width: 0; + position: relative; + padding: 0; + padding-top: 2px; + overflow: hidden; +} +.tabs-scroller-left, +.tabs-scroller-right { + position: absolute; + top: auto; + bottom: 0; + width: 18px; + font-size: 1px; + display: none; + cursor: pointer; + border-width: 1px; + border-style: solid; +} +.tabs-scroller-left { + left: 0; +} +.tabs-scroller-right { + right: 0; +} +.tabs-tool { + position: absolute; + bottom: 0; + padding: 1px; + overflow: hidden; + border-width: 1px; + border-style: solid; +} +.tabs-header-plain .tabs-tool { + padding: 0 1px; +} +.tabs-wrap { + position: relative; + left: 0; + overflow: hidden; + width: 100%; + margin: 0; + padding: 0; +} +.tabs-scrolling { + margin-left: 18px; + margin-right: 18px; +} +.tabs-disabled { + opacity: 0.3; + filter: alpha(opacity=30); +} +.tabs { + list-style-type: none; + height: 26px; + margin: 0px; + padding: 0px; + padding-left: 4px; + width: 50000px; + border-style: solid; + border-width: 0 0 1px 0; +} +.tabs li { + float: left; + display: inline-block; + margin: 0 4px -1px 0; + padding: 0; + position: relative; + border: 0; +} +.tabs li a.tabs-inner { + display: inline-block; + text-decoration: none; + margin: 0; + padding: 0 10px; + height: 25px; + line-height: 25px; + text-align: center; + white-space: nowrap; + border-width: 1px; + border-style: solid; + -moz-border-radius: 5px 5px 0 0; + -webkit-border-radius: 5px 5px 0 0; + border-radius: 5px 5px 0 0; +} +.tabs li.tabs-selected a.tabs-inner { + font-weight: bold; + outline: none; +} +.tabs li.tabs-selected a:hover.tabs-inner { + cursor: default; + pointer: default; +} +.tabs li a.tabs-close, +.tabs-p-tool { + position: absolute; + font-size: 1px; + display: block; + height: 12px; + padding: 0; + top: 50%; + margin-top: -6px; + overflow: hidden; +} +.tabs li a.tabs-close { + width: 12px; + right: 5px; + opacity: 0.6; + filter: alpha(opacity=60); +} +.tabs-p-tool { + right: 16px; +} +.tabs-p-tool a { + display: inline-block; + font-size: 1px; + width: 12px; + height: 12px; + margin: 0; + opacity: 0.6; + filter: alpha(opacity=60); +} +.tabs li a:hover.tabs-close, +.tabs-p-tool a:hover { + opacity: 1; + filter: alpha(opacity=100); + cursor: hand; + cursor: pointer; +} +.tabs-with-icon { + padding-left: 18px; +} +.tabs-icon { + position: absolute; + width: 16px; + height: 16px; + left: 10px; + top: 50%; + margin-top: -8px; +} +.tabs-title { + font-size: 12px; +} +.tabs-closable { + padding-right: 8px; +} +.tabs-panels { + margin: 0px; + padding: 0px; + border-width: 1px; + border-style: solid; + border-top-width: 0; + overflow: hidden; +} +.tabs-header-bottom { + border-width: 0 1px 1px 1px; + padding: 0 0 2px 0; +} +.tabs-header-bottom .tabs { + border-width: 1px 0 0 0; +} +.tabs-header-bottom .tabs li { + margin: -1px 4px 0 0; +} +.tabs-header-bottom .tabs li a.tabs-inner { + -moz-border-radius: 0 0 5px 5px; + -webkit-border-radius: 0 0 5px 5px; + border-radius: 0 0 5px 5px; +} +.tabs-header-bottom .tabs-tool { + top: 0; +} +.tabs-header-bottom .tabs-scroller-left, +.tabs-header-bottom .tabs-scroller-right { + top: 0; + bottom: auto; +} +.tabs-panels-top { + border-width: 1px 1px 0 1px; +} +.tabs-header-left { + float: left; + border-width: 1px 0 1px 1px; + padding: 0; +} +.tabs-header-right { + float: right; + border-width: 1px 1px 1px 0; + padding: 0; +} +.tabs-header-left .tabs-wrap, +.tabs-header-right .tabs-wrap { + height: 100%; +} +.tabs-header-left .tabs { + height: 100%; + padding: 4px 0 0 2px; + border-width: 0 1px 0 0; +} +.tabs-header-right .tabs { + height: 100%; + padding: 4px 2px 0 0; + border-width: 0 0 0 1px; +} +.tabs-header-left .tabs li, +.tabs-header-right .tabs li { + display: block; + width: 100%; + position: relative; +} +.tabs-header-left .tabs li { + left: auto; + right: 0; + margin: 0 -1px 4px 0; + float: right; +} +.tabs-header-right .tabs li { + left: 0; + right: auto; + margin: 0 0 4px -1px; + float: left; +} +.tabs-justified li a.tabs-inner { + padding-left: 0; + padding-right: 0; +} +.tabs-header-left .tabs li a.tabs-inner { + display: block; + text-align: left; + padding-left: 10px; + padding-right: 10px; + -moz-border-radius: 5px 0 0 5px; + -webkit-border-radius: 5px 0 0 5px; + border-radius: 5px 0 0 5px; +} +.tabs-header-right .tabs li a.tabs-inner { + display: block; + text-align: left; + padding-left: 10px; + padding-right: 10px; + -moz-border-radius: 0 5px 5px 0; + -webkit-border-radius: 0 5px 5px 0; + border-radius: 0 5px 5px 0; +} +.tabs-panels-right { + float: right; + border-width: 1px 1px 1px 0; +} +.tabs-panels-left { + float: left; + border-width: 1px 0 1px 1px; +} +.tabs-header-noborder, +.tabs-panels-noborder { + border: 0px; +} +.tabs-header-plain { + border: 0px; + background: transparent; +} +.tabs-pill { + padding-bottom: 3px; +} +.tabs-header-bottom .tabs-pill { + padding-top: 3px; + padding-bottom: 0; +} +.tabs-header-left .tabs-pill { + padding-right: 3px; +} +.tabs-header-right .tabs-pill { + padding-left: 3px; +} +.tabs-header .tabs-pill li a.tabs-inner { + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.tabs-header-narrow, +.tabs-header-narrow .tabs-narrow { + padding: 0; +} +.tabs-narrow li, +.tabs-header-bottom .tabs-narrow li { + margin-left: 0; + margin-right: -1px; +} +.tabs-narrow li.tabs-last, +.tabs-header-bottom .tabs-narrow li.tabs-last { + margin-right: 0; +} +.tabs-header-left .tabs-narrow, +.tabs-header-right .tabs-narrow { + padding-top: 0; +} +.tabs-header-left .tabs-narrow li { + margin-bottom: -1px; + margin-right: -1px; +} +.tabs-header-left .tabs-narrow li.tabs-last, +.tabs-header-right .tabs-narrow li.tabs-last { + margin-bottom: 0; +} +.tabs-header-right .tabs-narrow li { + margin-bottom: -1px; + margin-left: -1px; +} +.tabs-scroller-left { + background: #E0ECFF url('images/tabs_icons.png') no-repeat 1px center; +} +.tabs-scroller-right { + background: #E0ECFF url('images/tabs_icons.png') no-repeat -15px center; +} +.tabs li a.tabs-close { + background: url('images/tabs_icons.png') no-repeat -34px center; +} +.tabs li a.tabs-inner:hover { + background: #eaf2ff; + color: #000000; + filter: none; +} +.tabs li.tabs-selected a.tabs-inner { + background-color: #ffffff; + color: #0E2D5F; + background: -webkit-linear-gradient(top,#EFF5FF 0,#ffffff 100%); + background: -moz-linear-gradient(top,#EFF5FF 0,#ffffff 100%); + background: -o-linear-gradient(top,#EFF5FF 0,#ffffff 100%); + background: linear-gradient(to bottom,#EFF5FF 0,#ffffff 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#EFF5FF,endColorstr=#ffffff,GradientType=0); +} +.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { + background: -webkit-linear-gradient(top,#ffffff 0,#EFF5FF 100%); + background: -moz-linear-gradient(top,#ffffff 0,#EFF5FF 100%); + background: -o-linear-gradient(top,#ffffff 0,#EFF5FF 100%); + background: linear-gradient(to bottom,#ffffff 0,#EFF5FF 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#EFF5FF,GradientType=0); +} +.tabs-header-left .tabs li.tabs-selected a.tabs-inner { + background: -webkit-linear-gradient(left,#EFF5FF 0,#ffffff 100%); + background: -moz-linear-gradient(left,#EFF5FF 0,#ffffff 100%); + background: -o-linear-gradient(left,#EFF5FF 0,#ffffff 100%); + background: linear-gradient(to right,#EFF5FF 0,#ffffff 100%); + background-repeat: repeat-y; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#EFF5FF,endColorstr=#ffffff,GradientType=1); +} +.tabs-header-right .tabs li.tabs-selected a.tabs-inner { + background: -webkit-linear-gradient(left,#ffffff 0,#EFF5FF 100%); + background: -moz-linear-gradient(left,#ffffff 0,#EFF5FF 100%); + background: -o-linear-gradient(left,#ffffff 0,#EFF5FF 100%); + background: linear-gradient(to right,#ffffff 0,#EFF5FF 100%); + background-repeat: repeat-y; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#EFF5FF,GradientType=1); +} +.tabs li a.tabs-inner { + color: #0E2D5F; + background-color: #E0ECFF; + background: -webkit-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%); + background: -moz-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%); + background: -o-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%); + background: linear-gradient(to bottom,#EFF5FF 0,#E0ECFF 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#EFF5FF,endColorstr=#E0ECFF,GradientType=0); +} +.tabs-header, +.tabs-tool { + background-color: #E0ECFF; +} +.tabs-header-plain { + background: transparent; +} +.tabs-header, +.tabs-scroller-left, +.tabs-scroller-right, +.tabs-tool, +.tabs, +.tabs-panels, +.tabs li a.tabs-inner, +.tabs li.tabs-selected a.tabs-inner, +.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner, +.tabs-header-left .tabs li.tabs-selected a.tabs-inner, +.tabs-header-right .tabs li.tabs-selected a.tabs-inner { + border-color: #95B8E7; +} +.tabs-p-tool a:hover, +.tabs li a:hover.tabs-close, +.tabs-scroller-over { + background-color: #eaf2ff; +} +.tabs li.tabs-selected a.tabs-inner { + border-bottom: 1px solid #ffffff; +} +.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { + border-top: 1px solid #ffffff; +} +.tabs-header-left .tabs li.tabs-selected a.tabs-inner { + border-right: 1px solid #ffffff; +} +.tabs-header-right .tabs li.tabs-selected a.tabs-inner { + border-left: 1px solid #ffffff; +} +.tabs-header .tabs-pill li.tabs-selected a.tabs-inner { + background: #ffe48d; + color: #000000; + filter: none; + border-color: #95B8E7; +} +.datagrid .panel-body { + overflow: hidden; + position: relative; +} +.datagrid-view { + position: relative; + overflow: hidden; +} +.datagrid-view1, +.datagrid-view2 { + position: absolute; + overflow: hidden; + top: 0; +} +.datagrid-view1 { + left: 0; +} +.datagrid-view2 { + right: 0; +} +.datagrid-mask { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + opacity: 0.3; + filter: alpha(opacity=30); + display: none; +} +.datagrid-mask-msg { + position: absolute; + top: 50%; + margin-top: -20px; + padding: 10px 5px 10px 30px; + width: auto; + height: 16px; + border-width: 2px; + border-style: solid; + display: none; +} +.datagrid-empty { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 25px; + line-height: 25px; + text-align: center; +} +.datagrid-sort-icon { + padding: 0; + display: none; +} +.datagrid-toolbar { + height: auto; + padding: 1px 2px; + border-width: 0 0 1px 0; + border-style: solid; +} +.datagrid-btn-separator { + float: left; + height: 24px; + border-left: 1px solid #ccc; + border-right: 1px solid #fff; + margin: 2px 1px; +} +.datagrid .datagrid-pager { + display: block; + margin: 0; + border-width: 1px 0 0 0; + border-style: solid; +} +.datagrid .datagrid-pager-top { + border-width: 0 0 1px 0; +} +.datagrid-header { + overflow: hidden; + cursor: default; + border-width: 0 0 1px 0; + border-style: solid; +} +.datagrid-header-inner { + float: left; + width: 10000px; +} +.datagrid-header-row, +.datagrid-row { + height: 25px; +} +.datagrid-header td, +.datagrid-body td, +.datagrid-footer td { + border-width: 0 1px 1px 0; + border-style: dotted; + margin: 0; + padding: 0; +} +.datagrid-cell, +.datagrid-cell-group, +.datagrid-header-rownumber, +.datagrid-cell-rownumber { + margin: 0; + padding: 0 4px; + white-space: nowrap; + word-wrap: normal; + overflow: hidden; + height: 18px; + line-height: 18px; + font-size: 12px; +} +.datagrid-header .datagrid-cell { + height: auto; +} +.datagrid-header .datagrid-cell span { + font-size: 12px; +} +.datagrid-cell-group { + text-align: center; + text-overflow: ellipsis; +} +.datagrid-header-rownumber, +.datagrid-cell-rownumber { + width: 30px; + text-align: center; + margin: 0; + padding: 0; +} +.datagrid-body { + margin: 0; + padding: 0; + overflow: auto; + zoom: 1; +} +.datagrid-view1 .datagrid-body-inner { + padding-bottom: 20px; +} +.datagrid-view1 .datagrid-body { + overflow: hidden; +} +.datagrid-footer { + overflow: hidden; +} +.datagrid-footer-inner { + border-width: 1px 0 0 0; + border-style: solid; + width: 10000px; + float: left; +} +.datagrid-row-editing .datagrid-cell { + height: auto; +} +.datagrid-header-check, +.datagrid-cell-check { + padding: 0; + width: 27px; + height: 18px; + font-size: 1px; + text-align: center; + overflow: hidden; +} +.datagrid-header-check input, +.datagrid-cell-check input { + margin: 0; + padding: 0; + width: 15px; + height: 18px; +} +.datagrid-resize-proxy { + position: absolute; + width: 1px; + height: 10000px; + top: 0; + cursor: e-resize; + display: none; +} +.datagrid-body .datagrid-editable { + margin: 0; + padding: 0; +} +.datagrid-body .datagrid-editable table { + width: 100%; + height: 100%; +} +.datagrid-body .datagrid-editable td { + border: 0; + margin: 0; + padding: 0; +} +.datagrid-view .datagrid-editable-input { + margin: 0; + padding: 2px 4px; + border: 1px solid #95B8E7; + font-size: 12px; + outline-style: none; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.datagrid-view .validatebox-invalid { + border-color: #ffa8a8; +} +.datagrid-sort .datagrid-sort-icon { + display: inline; + padding: 0 13px 0 0; + background: url('images/datagrid_icons.png') no-repeat -64px center; +} +.datagrid-sort-desc .datagrid-sort-icon { + display: inline; + padding: 0 13px 0 0; + background: url('images/datagrid_icons.png') no-repeat -16px center; +} +.datagrid-sort-asc .datagrid-sort-icon { + display: inline; + padding: 0 13px 0 0; + background: url('images/datagrid_icons.png') no-repeat 0px center; +} +.datagrid-row-collapse { + background: url('images/datagrid_icons.png') no-repeat -48px center; +} +.datagrid-row-expand { + background: url('images/datagrid_icons.png') no-repeat -32px center; +} +.datagrid-mask-msg { + background: #ffffff url('images/loading.gif') no-repeat scroll 5px center; +} +.datagrid-header, +.datagrid-td-rownumber { + background-color: #efefef; + background: -webkit-linear-gradient(top,#F9F9F9 0,#efefef 100%); + background: -moz-linear-gradient(top,#F9F9F9 0,#efefef 100%); + background: -o-linear-gradient(top,#F9F9F9 0,#efefef 100%); + background: linear-gradient(to bottom,#F9F9F9 0,#efefef 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#F9F9F9,endColorstr=#efefef,GradientType=0); +} +.datagrid-cell-rownumber { + color: #000000; +} +.datagrid-resize-proxy { + background: #aac5e7; +} +.datagrid-mask { + background: #ccc; +} +.datagrid-mask-msg { + border-color: #95B8E7; +} +.datagrid-toolbar, +.datagrid-pager { + background: #F4F4F4; +} +.datagrid-header, +.datagrid-toolbar, +.datagrid-pager, +.datagrid-footer-inner { + border-color: #dddddd; +} +.datagrid-header td, +.datagrid-body td, +.datagrid-footer td { + border-color: #ccc; +} +.datagrid-htable, +.datagrid-btable, +.datagrid-ftable { + color: #000000; + border-collapse: separate; +} +.datagrid-row-alt { + background: #fafafa; +} +.datagrid-row-over, +.datagrid-header td.datagrid-header-over { + background: #eaf2ff; + color: #000000; + cursor: default; +} +.datagrid-row-selected { + background: #ffe48d; + color: #000000; +} +.datagrid-row-editing .textbox, +.datagrid-row-editing .textbox-text { + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.propertygrid .datagrid-view1 .datagrid-body td { + padding-bottom: 1px; + border-width: 0 1px 0 0; +} +.propertygrid .datagrid-group { + height: 21px; + overflow: hidden; + border-width: 0 0 1px 0; + border-style: solid; +} +.propertygrid .datagrid-group span { + font-weight: bold; +} +.propertygrid .datagrid-view1 .datagrid-body td { + border-color: #dddddd; +} +.propertygrid .datagrid-view1 .datagrid-group { + border-color: #E0ECFF; +} +.propertygrid .datagrid-view2 .datagrid-group { + border-color: #dddddd; +} +.propertygrid .datagrid-group, +.propertygrid .datagrid-view1 .datagrid-body, +.propertygrid .datagrid-view1 .datagrid-row-over, +.propertygrid .datagrid-view1 .datagrid-row-selected { + background: #E0ECFF; +} +.datalist .datagrid-header { + border-width: 0; +} +.datalist .datagrid-group, +.m-list .m-list-group { + height: 25px; + line-height: 25px; + font-weight: bold; + overflow: hidden; + background-color: #efefef; + border-style: solid; + border-width: 0 0 1px 0; + border-color: #ccc; +} +.datalist .datagrid-group-expander { + display: none; +} +.datalist .datagrid-group-title { + padding: 0 4px; +} +.datalist .datagrid-btable { + width: 100%; + table-layout: fixed; +} +.datalist .datagrid-row td { + border-style: solid; + border-left-color: transparent; + border-right-color: transparent; + border-bottom-width: 0; +} +.datalist-lines .datagrid-row td { + border-bottom-width: 1px; +} +.datalist .datagrid-cell, +.m-list li { + width: auto; + height: auto; + padding: 2px 4px; + line-height: 18px; + position: relative; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; +} +.datalist-link, +.m-list li>a { + display: block; + position: relative; + cursor: pointer; + color: #000000; + text-decoration: none; + overflow: hidden; + margin: -2px -4px; + padding: 2px 4px; + padding-right: 16px; + line-height: 18px; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; +} +.datalist-link::after, +.m-list li>a::after { + position: absolute; + display: block; + width: 8px; + height: 8px; + content: ''; + right: 6px; + top: 50%; + margin-top: -4px; + border-style: solid; + border-width: 1px 1px 0 0; + -ms-transform: rotate(45deg); + -moz-transform: rotate(45deg); + -webkit-transform: rotate(45deg); + -o-transform: rotate(45deg); + transform: rotate(45deg); +} +.m-list { + margin: 0; + padding: 0; + list-style: none; +} +.m-list li { + border-style: solid; + border-width: 0 0 1px 0; + border-color: #ccc; +} +.m-list li>a:hover { + background: #eaf2ff; + color: #000000; +} +.m-list .m-list-group { + padding: 0 4px; +} +.pagination { + zoom: 1; +} +.pagination table { + float: left; + height: 30px; +} +.pagination td { + border: 0; +} +.pagination-btn-separator { + float: left; + height: 24px; + border-left: 1px solid #ccc; + border-right: 1px solid #fff; + margin: 3px 1px; +} +.pagination .pagination-num { + border-width: 1px; + border-style: solid; + margin: 0 2px; + padding: 2px; + width: 2em; + height: auto; +} +.pagination-page-list { + margin: 0px 6px; + padding: 1px 2px; + width: auto; + height: auto; + border-width: 1px; + border-style: solid; +} +.pagination-info { + float: right; + margin: 0 6px; + padding: 0; + height: 30px; + line-height: 30px; + font-size: 12px; +} +.pagination span { + font-size: 12px; +} +.pagination-link .l-btn-text { + width: 24px; + text-align: center; + margin: 0; +} +.pagination-first { + background: url('images/pagination_icons.png') no-repeat 0 center; +} +.pagination-prev { + background: url('images/pagination_icons.png') no-repeat -16px center; +} +.pagination-next { + background: url('images/pagination_icons.png') no-repeat -32px center; +} +.pagination-last { + background: url('images/pagination_icons.png') no-repeat -48px center; +} +.pagination-load { + background: url('images/pagination_icons.png') no-repeat -64px center; +} +.pagination-loading { + background: url('images/loading.gif') no-repeat center center; +} +.pagination-page-list, +.pagination .pagination-num { + border-color: #95B8E7; +} +.calendar { + border-width: 1px; + border-style: solid; + padding: 1px; + overflow: hidden; +} +.calendar table { + table-layout: fixed; + border-collapse: separate; + font-size: 12px; + width: 100%; + height: 100%; +} +.calendar table td, +.calendar table th { + font-size: 12px; +} +.calendar-noborder { + border: 0; +} +.calendar-header { + position: relative; + height: 22px; +} +.calendar-title { + text-align: center; + height: 22px; +} +.calendar-title span { + position: relative; + display: inline-block; + top: 2px; + padding: 0 3px; + height: 18px; + line-height: 18px; + font-size: 12px; + cursor: pointer; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-prevmonth, +.calendar-nextmonth, +.calendar-prevyear, +.calendar-nextyear { + position: absolute; + top: 50%; + margin-top: -7px; + width: 14px; + height: 14px; + cursor: pointer; + font-size: 1px; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-prevmonth { + left: 20px; + background: url('images/calendar_arrows.png') no-repeat -18px -2px; +} +.calendar-nextmonth { + right: 20px; + background: url('images/calendar_arrows.png') no-repeat -34px -2px; +} +.calendar-prevyear { + left: 3px; + background: url('images/calendar_arrows.png') no-repeat -1px -2px; +} +.calendar-nextyear { + right: 3px; + background: url('images/calendar_arrows.png') no-repeat -49px -2px; +} +.calendar-body { + position: relative; +} +.calendar-body th, +.calendar-body td { + text-align: center; +} +.calendar-day { + border: 0; + padding: 1px; + cursor: pointer; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-other-month { + opacity: 0.3; + filter: alpha(opacity=30); +} +.calendar-disabled { + opacity: 0.6; + filter: alpha(opacity=60); + cursor: default; +} +.calendar-menu { + position: absolute; + top: 0; + left: 0; + width: 180px; + height: 150px; + padding: 5px; + font-size: 12px; + display: none; + overflow: hidden; +} +.calendar-menu-year-inner { + text-align: center; + padding-bottom: 5px; +} +.calendar-menu-year { + width: 50px; + text-align: center; + border-width: 1px; + border-style: solid; + outline-style: none; + resize: none; + margin: 0; + padding: 2px; + font-weight: bold; + font-size: 12px; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-menu-prev, +.calendar-menu-next { + display: inline-block; + width: 21px; + height: 21px; + vertical-align: top; + cursor: pointer; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-menu-prev { + margin-right: 10px; + background: url('images/calendar_arrows.png') no-repeat 2px 2px; +} +.calendar-menu-next { + margin-left: 10px; + background: url('images/calendar_arrows.png') no-repeat -45px 2px; +} +.calendar-menu-month { + text-align: center; + cursor: pointer; + font-weight: bold; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-body th, +.calendar-menu-month { + color: #4d4d4d; +} +.calendar-day { + color: #000000; +} +.calendar-sunday { + color: #CC2222; +} +.calendar-saturday { + color: #00ee00; +} +.calendar-today { + color: #0000ff; +} +.calendar-menu-year { + border-color: #95B8E7; +} +.calendar { + border-color: #95B8E7; +} +.calendar-header { + background: #E0ECFF; +} +.calendar-body, +.calendar-menu { + background: #ffffff; +} +.calendar-body th { + background: #F4F4F4; + padding: 2px 0; +} +.calendar-hover, +.calendar-nav-hover, +.calendar-menu-hover { + background-color: #eaf2ff; + color: #000000; +} +.calendar-hover { + border: 1px solid #b7d2ff; + padding: 0; +} +.calendar-selected { + background-color: #ffe48d; + color: #000000; + border: 1px solid #ffab3f; + padding: 0; +} +.datebox-calendar-inner { + height: 180px; +} +.datebox-button { + padding: 0 5px; + text-align: center; +} +.datebox-button a { + line-height: 22px; + font-size: 12px; + font-weight: bold; + text-decoration: none; + opacity: 0.6; + filter: alpha(opacity=60); +} +.datebox-button a:hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.datebox-current, +.datebox-close { + float: left; +} +.datebox-close { + float: right; +} +.datebox .combo-arrow { + background-image: url('images/datebox_arrow.png'); + background-position: center center; +} +.datebox-button { + background-color: #F4F4F4; +} +.datebox-button a { + color: #444; +} +.spinner-arrow { + background-color: #E0ECFF; + display: inline-block; + overflow: hidden; + vertical-align: top; + margin: 0; + padding: 0; + opacity: 1.0; + filter: alpha(opacity=100); + width: 18px; +} +.spinner-arrow-up, +.spinner-arrow-down { + opacity: 0.6; + filter: alpha(opacity=60); + display: block; + font-size: 1px; + width: 18px; + height: 10px; + width: 100%; + height: 50%; + color: #444; + outline-style: none; +} +.spinner-arrow-hover { + background-color: #eaf2ff; + opacity: 1.0; + filter: alpha(opacity=100); +} +.spinner-arrow-up:hover, +.spinner-arrow-down:hover { + opacity: 1.0; + filter: alpha(opacity=100); + background-color: #eaf2ff; +} +.textbox-icon-disabled .spinner-arrow-up:hover, +.textbox-icon-disabled .spinner-arrow-down:hover { + opacity: 0.6; + filter: alpha(opacity=60); + background-color: #E0ECFF; + cursor: default; +} +.spinner .textbox-icon-disabled { + opacity: 0.6; + filter: alpha(opacity=60); +} +.spinner-arrow-up { + background: url('images/spinner_arrows.png') no-repeat 1px center; +} +.spinner-arrow-down { + background: url('images/spinner_arrows.png') no-repeat -15px center; +} +.spinner-button-up { + background: url('images/spinner_arrows.png') no-repeat -32px center; +} +.spinner-button-down { + background: url('images/spinner_arrows.png') no-repeat -48px center; +} +.progressbar { + border-width: 1px; + border-style: solid; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; + overflow: hidden; + position: relative; +} +.progressbar-text { + text-align: center; + position: absolute; +} +.progressbar-value { + position: relative; + overflow: hidden; + width: 0; + -moz-border-radius: 5px 0 0 5px; + -webkit-border-radius: 5px 0 0 5px; + border-radius: 5px 0 0 5px; +} +.progressbar { + border-color: #95B8E7; +} +.progressbar-text { + color: #000000; + font-size: 12px; +} +.progressbar-value .progressbar-text { + background-color: #ffe48d; + color: #000000; +} +.searchbox-button { + width: 18px; + height: 20px; + overflow: hidden; + display: inline-block; + vertical-align: top; + cursor: pointer; + opacity: 0.6; + filter: alpha(opacity=60); +} +.searchbox-button-hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.searchbox .l-btn-plain { + border: 0; + padding: 0; + vertical-align: top; + opacity: 0.6; + filter: alpha(opacity=60); + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox .l-btn-plain:hover { + border: 0; + padding: 0; + opacity: 1.0; + filter: alpha(opacity=100); + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox a.m-btn-plain-active { + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox .m-btn-active { + border-width: 0 1px 0 0; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox .textbox-button-right { + border-width: 0 0 0 1px; +} +.searchbox .textbox-button-left { + border-width: 0 1px 0 0; +} +.searchbox-button { + background: url('images/searchbox_button.png') no-repeat center center; +} +.searchbox .l-btn-plain { + background: #E0ECFF; +} +.searchbox .l-btn-plain-disabled, +.searchbox .l-btn-plain-disabled:hover { + opacity: 0.5; + filter: alpha(opacity=50); +} +.slider-disabled { + opacity: 0.5; + filter: alpha(opacity=50); +} +.slider-h { + height: 22px; +} +.slider-v { + width: 22px; +} +.slider-inner { + position: relative; + height: 6px; + top: 7px; + border-width: 1px; + border-style: solid; + border-radius: 5px; +} +.slider-handle { + position: absolute; + display: block; + outline: none; + width: 20px; + height: 20px; + top: 50%; + margin-top: -10px; + margin-left: -10px; +} +.slider-tip { + position: absolute; + display: inline-block; + line-height: 12px; + font-size: 12px; + white-space: nowrap; + top: -22px; +} +.slider-rule { + position: relative; + top: 15px; +} +.slider-rule span { + position: absolute; + display: inline-block; + font-size: 0; + height: 5px; + border-width: 0 0 0 1px; + border-style: solid; +} +.slider-rulelabel { + position: relative; + top: 20px; +} +.slider-rulelabel span { + position: absolute; + display: inline-block; + font-size: 12px; +} +.slider-v .slider-inner { + width: 6px; + left: 7px; + top: 0; + float: left; +} +.slider-v .slider-handle { + left: 50%; + margin-top: -10px; +} +.slider-v .slider-tip { + left: -10px; + margin-top: -6px; +} +.slider-v .slider-rule { + float: left; + top: 0; + left: 16px; +} +.slider-v .slider-rule span { + width: 5px; + height: 'auto'; + border-left: 0; + border-width: 1px 0 0 0; + border-style: solid; +} +.slider-v .slider-rulelabel { + float: left; + top: 0; + left: 23px; +} +.slider-handle { + background: url('images/slider_handle.png') no-repeat; +} +.slider-inner { + border-color: #95B8E7; + background: #E0ECFF; +} +.slider-rule span { + border-color: #95B8E7; +} +.slider-rulelabel span { + color: #000000; +} +.menu { + position: absolute; + margin: 0; + padding: 2px; + border-width: 1px; + border-style: solid; + overflow: hidden; +} +.menu-inline { + position: relative; +} +.menu-item { + position: relative; + margin: 0; + padding: 0; + overflow: hidden; + white-space: nowrap; + cursor: pointer; + border-width: 1px; + border-style: solid; +} +.menu-text { + height: 20px; + line-height: 20px; + float: left; + padding-left: 28px; +} +.menu-icon { + position: absolute; + width: 16px; + height: 16px; + left: 2px; + top: 50%; + margin-top: -8px; +} +.menu-rightarrow { + position: absolute; + width: 16px; + height: 16px; + right: 0; + top: 50%; + margin-top: -8px; +} +.menu-line { + position: absolute; + left: 26px; + top: 0; + height: 2000px; + font-size: 1px; +} +.menu-sep { + margin: 3px 0px 3px 25px; + font-size: 1px; +} +.menu-noline .menu-line { + display: none; +} +.menu-noline .menu-sep { + margin-left: 0; + margin-right: 0; +} +.menu-active { + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.menu-item-disabled { + opacity: 0.5; + filter: alpha(opacity=50); + cursor: default; +} +.menu-text, +.menu-text span { + font-size: 12px; +} +.menu-shadow { + position: absolute; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; + background: #ccc; + -moz-box-shadow: 2px 2px 3px #cccccc; + -webkit-box-shadow: 2px 2px 3px #cccccc; + box-shadow: 2px 2px 3px #cccccc; + filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); +} +.menu-rightarrow { + background: url('images/menu_arrows.png') no-repeat -32px center; +} +.menu-line { + border-left: 1px solid #ccc; + border-right: 1px solid #fff; +} +.menu-sep { + border-top: 1px solid #ccc; + border-bottom: 1px solid #fff; +} +.menu { + background-color: #fafafa; + border-color: #ddd; + color: #444; +} +.menu-content { + background: #ffffff; +} +.menu-item { + border-color: transparent; + _border-color: #fafafa; +} +.menu-active { + border-color: #b7d2ff; + color: #000000; + background: #eaf2ff; +} +.menu-active-disabled { + border-color: transparent; + background: transparent; + color: #444; +} +.m-btn-downarrow, +.s-btn-downarrow { + display: inline-block; + position: absolute; + width: 16px; + height: 16px; + font-size: 1px; + right: 0; + top: 50%; + margin-top: -8px; +} +.m-btn-active, +.s-btn-active { + background: #eaf2ff; + color: #000000; + border: 1px solid #b7d2ff; + filter: none; +} +.m-btn-plain-active, +.s-btn-plain-active { + background: transparent; + padding: 0; + border-width: 1px; + border-style: solid; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.m-btn .l-btn-left .l-btn-text { + margin-right: 20px; +} +.m-btn .l-btn-icon-right .l-btn-text { + margin-right: 40px; +} +.m-btn .l-btn-icon-right .l-btn-icon { + right: 20px; +} +.m-btn .l-btn-icon-top .l-btn-text { + margin-right: 4px; + margin-bottom: 14px; +} +.m-btn .l-btn-icon-bottom .l-btn-text { + margin-right: 4px; + margin-bottom: 34px; +} +.m-btn .l-btn-icon-bottom .l-btn-icon { + top: auto; + bottom: 20px; +} +.m-btn .l-btn-icon-top .m-btn-downarrow, +.m-btn .l-btn-icon-bottom .m-btn-downarrow { + top: auto; + bottom: 0px; + left: 50%; + margin-left: -8px; +} +.m-btn-line { + display: inline-block; + position: absolute; + font-size: 1px; + display: none; +} +.m-btn .l-btn-left .m-btn-line { + right: 0; + width: 16px; + height: 500px; + border-style: solid; + border-color: #aac5e7; + border-width: 0 0 0 1px; +} +.m-btn .l-btn-icon-top .m-btn-line, +.m-btn .l-btn-icon-bottom .m-btn-line { + left: 0; + bottom: 0; + width: 500px; + height: 16px; + border-width: 1px 0 0 0; +} +.m-btn-large .l-btn-icon-right .l-btn-text { + margin-right: 56px; +} +.m-btn-large .l-btn-icon-bottom .l-btn-text { + margin-bottom: 50px; +} +.m-btn-downarrow, +.s-btn-downarrow { + background: url('images/menu_arrows.png') no-repeat 0 center; +} +.m-btn-plain-active, +.s-btn-plain-active { + border-color: #b7d2ff; + background-color: #eaf2ff; + color: #000000; +} +.s-btn:hover .m-btn-line, +.s-btn-active .m-btn-line, +.s-btn-plain-active .m-btn-line { + display: inline-block; +} +.l-btn:hover .s-btn-downarrow, +.s-btn-active .s-btn-downarrow, +.s-btn-plain-active .s-btn-downarrow { + border-style: solid; + border-color: #aac5e7; + border-width: 0 0 0 1px; +} +.messager-body { + padding: 10px 10px 30px 10px; + overflow: auto; +} +.messager-button { + text-align: center; + padding: 5px; +} +.messager-button .l-btn { + width: 70px; +} +.messager-icon { + float: left; + width: 32px; + height: 32px; + margin: 0 10px 10px 0; +} +.messager-error { + background: url('images/messager_icons.png') no-repeat scroll -64px 0; +} +.messager-info { + background: url('images/messager_icons.png') no-repeat scroll 0 0; +} +.messager-question { + background: url('images/messager_icons.png') no-repeat scroll -32px 0; +} +.messager-warning { + background: url('images/messager_icons.png') no-repeat scroll -96px 0; +} +.messager-progress { + padding: 10px; +} +.messager-p-msg { + margin-bottom: 5px; +} +.messager-body .messager-input { + width: 100%; + padding: 4px 0; + outline-style: none; + border: 1px solid #95B8E7; +} +.window-thinborder .messager-button { + padding-bottom: 8px; +} +.tree { + margin: 0; + padding: 0; + list-style-type: none; +} +.tree li { + white-space: nowrap; +} +.tree li ul { + list-style-type: none; + margin: 0; + padding: 0; +} +.tree-node { + height: 18px; + white-space: nowrap; + cursor: pointer; +} +.tree-hit { + cursor: pointer; +} +.tree-expanded, +.tree-collapsed, +.tree-folder, +.tree-file, +.tree-checkbox, +.tree-indent { + display: inline-block; + width: 16px; + height: 18px; + vertical-align: top; + overflow: hidden; +} +.tree-expanded { + background: url('images/tree_icons.png') no-repeat -18px 0px; +} +.tree-expanded-hover { + background: url('images/tree_icons.png') no-repeat -50px 0px; +} +.tree-collapsed { + background: url('images/tree_icons.png') no-repeat 0px 0px; +} +.tree-collapsed-hover { + background: url('images/tree_icons.png') no-repeat -32px 0px; +} +.tree-lines .tree-expanded, +.tree-lines .tree-root-first .tree-expanded { + background: url('images/tree_icons.png') no-repeat -144px 0; +} +.tree-lines .tree-collapsed, +.tree-lines .tree-root-first .tree-collapsed { + background: url('images/tree_icons.png') no-repeat -128px 0; +} +.tree-lines .tree-node-last .tree-expanded, +.tree-lines .tree-root-one .tree-expanded { + background: url('images/tree_icons.png') no-repeat -80px 0; +} +.tree-lines .tree-node-last .tree-collapsed, +.tree-lines .tree-root-one .tree-collapsed { + background: url('images/tree_icons.png') no-repeat -64px 0; +} +.tree-line { + background: url('images/tree_icons.png') no-repeat -176px 0; +} +.tree-join { + background: url('images/tree_icons.png') no-repeat -192px 0; +} +.tree-joinbottom { + background: url('images/tree_icons.png') no-repeat -160px 0; +} +.tree-folder { + background: url('images/tree_icons.png') no-repeat -208px 0; +} +.tree-folder-open { + background: url('images/tree_icons.png') no-repeat -224px 0; +} +.tree-file { + background: url('images/tree_icons.png') no-repeat -240px 0; +} +.tree-loading { + background: url('images/loading.gif') no-repeat center center; +} +.tree-checkbox0 { + background: url('images/tree_icons.png') no-repeat -208px -18px; +} +.tree-checkbox1 { + background: url('images/tree_icons.png') no-repeat -224px -18px; +} +.tree-checkbox2 { + background: url('images/tree_icons.png') no-repeat -240px -18px; +} +.tree-title { + font-size: 12px; + display: inline-block; + text-decoration: none; + vertical-align: top; + white-space: nowrap; + padding: 0 2px; + height: 18px; + line-height: 18px; +} +.tree-node-proxy { + font-size: 12px; + line-height: 20px; + padding: 0 2px 0 20px; + border-width: 1px; + border-style: solid; + z-index: 9900000; +} +.tree-dnd-icon { + display: inline-block; + position: absolute; + width: 16px; + height: 18px; + left: 2px; + top: 50%; + margin-top: -9px; +} +.tree-dnd-yes { + background: url('images/tree_icons.png') no-repeat -256px 0; +} +.tree-dnd-no { + background: url('images/tree_icons.png') no-repeat -256px -18px; +} +.tree-node-top { + border-top: 1px dotted red; +} +.tree-node-bottom { + border-bottom: 1px dotted red; +} +.tree-node-append .tree-title { + border: 1px dotted red; +} +.tree-editor { + border: 1px solid #95B8E7; + font-size: 12px; + line-height: 16px; + padding: 0 4px; + margin: 0; + width: 80px; + outline-style: none; + vertical-align: top; + position: absolute; + top: 0; +} +.tree-node-proxy { + background-color: #ffffff; + color: #000000; + border-color: #95B8E7; +} +.tree-node-hover { + background: #eaf2ff; + color: #000000; +} +.tree-node-selected { + background: #ffe48d; + color: #000000; +} +.tree-node-hidden { + display: none; +} +.validatebox-invalid { + border-color: #ffa8a8; + background-color: #fff3f3; + color: #000; +} +.tooltip { + position: absolute; + display: none; + z-index: 9900000; + outline: none; + opacity: 1; + filter: alpha(opacity=100); + padding: 5px; + border-width: 1px; + border-style: solid; + border-radius: 5px; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.tooltip-content { + font-size: 12px; +} +.tooltip-arrow-outer, +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; + line-height: 0; + font-size: 0; + border-style: solid; + border-width: 6px; + border-color: transparent; + _border-color: tomato; + _filter: chroma(color=tomato); +} +.tooltip-arrow { + display: none \9; +} +.tooltip-right .tooltip-arrow-outer { + left: 0; + top: 50%; + margin: -6px 0 0 -13px; +} +.tooltip-right .tooltip-arrow { + left: 0; + top: 50%; + margin: -6px 0 0 -12px; +} +.tooltip-left .tooltip-arrow-outer { + right: 0; + top: 50%; + margin: -6px -13px 0 0; +} +.tooltip-left .tooltip-arrow { + right: 0; + top: 50%; + margin: -6px -12px 0 0; +} +.tooltip-top .tooltip-arrow-outer { + bottom: 0; + left: 50%; + margin: 0 0 -13px -6px; +} +.tooltip-top .tooltip-arrow { + bottom: 0; + left: 50%; + margin: 0 0 -12px -6px; +} +.tooltip-bottom .tooltip-arrow-outer { + top: 0; + left: 50%; + margin: -13px 0 0 -6px; +} +.tooltip-bottom .tooltip-arrow { + top: 0; + left: 50%; + margin: -12px 0 0 -6px; +} +.tooltip { + background-color: #ffffff; + border-color: #95B8E7; + color: #000000; +} +.tooltip-right .tooltip-arrow-outer { + border-right-color: #95B8E7; +} +.tooltip-right .tooltip-arrow { + border-right-color: #ffffff; +} +.tooltip-left .tooltip-arrow-outer { + border-left-color: #95B8E7; +} +.tooltip-left .tooltip-arrow { + border-left-color: #ffffff; +} +.tooltip-top .tooltip-arrow-outer { + border-top-color: #95B8E7; +} +.tooltip-top .tooltip-arrow { + border-top-color: #ffffff; +} +.tooltip-bottom .tooltip-arrow-outer { + border-bottom-color: #95B8E7; +} +.tooltip-bottom .tooltip-arrow { + border-bottom-color: #ffffff; +} +.switchbutton { + text-decoration: none; + display: inline-block; + overflow: hidden; + vertical-align: middle; + margin: 0; + padding: 0; + cursor: pointer; + background: #bbb; + border: 1px solid #bbb; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.switchbutton-inner { + display: inline-block; + overflow: hidden; + position: relative; + top: -1px; + left: -1px; +} +.switchbutton-on, +.switchbutton-off, +.switchbutton-handle { + display: inline-block; + text-align: center; + height: 100%; + float: left; + font-size: 12px; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.switchbutton-on { + background: #ffe48d; + color: #000000; +} +.switchbutton-off { + background-color: #ffffff; + color: #000000; +} +.switchbutton-on, +.switchbutton-reversed .switchbutton-off { + -moz-border-radius: 5px 0 0 5px; + -webkit-border-radius: 5px 0 0 5px; + border-radius: 5px 0 0 5px; +} +.switchbutton-off, +.switchbutton-reversed .switchbutton-on { + -moz-border-radius: 0 5px 5px 0; + -webkit-border-radius: 0 5px 5px 0; + border-radius: 0 5px 5px 0; +} +.switchbutton-handle { + position: absolute; + top: 0; + left: 50%; + background-color: #ffffff; + color: #000000; + border: 1px solid #bbb; + -moz-box-shadow: 0 0 3px 0 #bbb; + -webkit-box-shadow: 0 0 3px 0 #bbb; + box-shadow: 0 0 3px 0 #bbb; +} +.switchbutton-value { + position: absolute; + top: 0; + left: -5000px; +} +.switchbutton-disabled { + opacity: 0.5; + filter: alpha(opacity=50); +} +.switchbutton-disabled, +.switchbutton-readonly { + cursor: default; +} diff --git a/src/main/webapp/static/easyUI/themes/default/filebox.css b/src/main/webapp/static/easyUI/themes/default/filebox.css new file mode 100644 index 0000000000000000000000000000000000000000..c6bac66315046138147a673e0ffaa3d36bce3acc --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/default/filebox.css @@ -0,0 +1,20 @@ +.filebox .textbox-value { + vertical-align: top; + position: absolute; + top: 0; + left: -5000px; +} +.filebox-label { + display: inline-block; + position: absolute; + width: 100%; + height: 100%; + cursor: pointer; + left: 0; + top: 0; + z-index: 10; + background: url('images/blank.gif') no-repeat; +} +.l-btn-disabled .filebox-label { + cursor: default; +} diff --git a/src/main/webapp/static/easyUI/themes/default/images/accordion_arrows.png b/src/main/webapp/static/easyUI/themes/default/images/accordion_arrows.png new file mode 100644 index 0000000000000000000000000000000000000000..720835f69c96c17ec32a20b03ac9753aa59b7f4f Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/default/images/accordion_arrows.png differ diff --git a/src/main/webapp/static/easyUI/themes/default/images/blank.gif b/src/main/webapp/static/easyUI/themes/default/images/blank.gif new file mode 100644 index 0000000000000000000000000000000000000000..1d11fa9ada9e93505b3d736acb204083f45d5fbf Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/default/images/blank.gif differ diff --git a/src/main/webapp/static/easyUI/themes/default/images/calendar_arrows.png b/src/main/webapp/static/easyUI/themes/default/images/calendar_arrows.png new file mode 100644 index 0000000000000000000000000000000000000000..430c4ad685b8c0068ecb7e3cbef74f493a84ad0d Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/default/images/calendar_arrows.png differ diff --git a/src/main/webapp/static/easyUI/themes/default/images/combo_arrow.png b/src/main/webapp/static/easyUI/themes/default/images/combo_arrow.png new file mode 100644 index 0000000000000000000000000000000000000000..2e59fb9f3f906487ffa20bdad81a14692ba9e01a Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/default/images/combo_arrow.png differ diff --git a/src/main/webapp/static/easyUI/themes/default/images/datagrid_icons.png b/src/main/webapp/static/easyUI/themes/default/images/datagrid_icons.png new file mode 100644 index 0000000000000000000000000000000000000000..762d0ce0f77ea47e1a638e32e974b2ddbb42c7c1 Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/default/images/datagrid_icons.png differ diff --git a/src/main/webapp/static/easyUI/themes/default/images/datebox_arrow.png b/src/main/webapp/static/easyUI/themes/default/images/datebox_arrow.png new file mode 100644 index 0000000000000000000000000000000000000000..783c83357fdf90a1c7c024358e1d768b5c09c135 Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/default/images/datebox_arrow.png differ diff --git a/src/main/webapp/static/easyUI/themes/default/images/layout_arrows.png b/src/main/webapp/static/easyUI/themes/default/images/layout_arrows.png new file mode 100644 index 0000000000000000000000000000000000000000..6f41654253030183f8220a815e85ed56d05ca9a3 Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/default/images/layout_arrows.png differ diff --git a/src/main/webapp/static/easyUI/themes/default/images/linkbutton_bg.png b/src/main/webapp/static/easyUI/themes/default/images/linkbutton_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..fc66bd2cd24047b8377342365a1df3846327ecde Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/default/images/linkbutton_bg.png differ diff --git a/src/main/webapp/static/easyUI/themes/default/images/loading.gif b/src/main/webapp/static/easyUI/themes/default/images/loading.gif new file mode 100644 index 0000000000000000000000000000000000000000..68f01d04813c1f622810864a3aaa04b4a17ac8f9 Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/default/images/loading.gif differ diff --git a/src/main/webapp/static/easyUI/themes/default/images/menu_arrows.png b/src/main/webapp/static/easyUI/themes/default/images/menu_arrows.png new file mode 100644 index 0000000000000000000000000000000000000000..b986842e7e4044caed18edbcb4b376a4bb915623 Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/default/images/menu_arrows.png differ diff --git a/src/main/webapp/static/easyUI/themes/default/images/messager_icons.png b/src/main/webapp/static/easyUI/themes/default/images/messager_icons.png new file mode 100644 index 0000000000000000000000000000000000000000..62c18c135860351063ebaabe8c0f4df7664b8f65 Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/default/images/messager_icons.png differ diff --git a/src/main/webapp/static/easyUI/themes/default/images/pagination_icons.png b/src/main/webapp/static/easyUI/themes/default/images/pagination_icons.png new file mode 100644 index 0000000000000000000000000000000000000000..616f0bdd6f589a6e6f9722665c95558356e47a6d Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/default/images/pagination_icons.png differ diff --git a/src/main/webapp/static/easyUI/themes/default/images/panel_tools.png b/src/main/webapp/static/easyUI/themes/default/images/panel_tools.png new file mode 100644 index 0000000000000000000000000000000000000000..19ecc9461d58b50431d1e68c7b37ad4fdf11ee9a Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/default/images/panel_tools.png differ diff --git a/src/main/webapp/static/easyUI/themes/default/images/passwordbox_close.png b/src/main/webapp/static/easyUI/themes/default/images/passwordbox_close.png new file mode 100644 index 0000000000000000000000000000000000000000..643c09da9af25c601b4c4be9215350f6fd8b1514 Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/default/images/passwordbox_close.png differ diff --git a/src/main/webapp/static/easyUI/themes/default/images/passwordbox_open.png b/src/main/webapp/static/easyUI/themes/default/images/passwordbox_open.png new file mode 100644 index 0000000000000000000000000000000000000000..d328891f6a18ea703fd25a47b228df9cb13b4744 Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/default/images/passwordbox_open.png differ diff --git a/src/main/webapp/static/easyUI/themes/default/images/searchbox_button.png b/src/main/webapp/static/easyUI/themes/default/images/searchbox_button.png new file mode 100644 index 0000000000000000000000000000000000000000..6dd1931589b453f6cc9772fd1851d8705d6b6631 Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/default/images/searchbox_button.png differ diff --git a/src/main/webapp/static/easyUI/themes/default/images/slider_handle.png b/src/main/webapp/static/easyUI/themes/default/images/slider_handle.png new file mode 100644 index 0000000000000000000000000000000000000000..b9802bae14c536281a8fdbe6cd07abbc13985033 Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/default/images/slider_handle.png differ diff --git a/src/main/webapp/static/easyUI/themes/default/images/spinner_arrows.png b/src/main/webapp/static/easyUI/themes/default/images/spinner_arrows.png new file mode 100644 index 0000000000000000000000000000000000000000..7c2df483dbb30dfb3a51332c03fe6f0c229c0547 Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/default/images/spinner_arrows.png differ diff --git a/src/main/webapp/static/easyUI/themes/default/images/tabs_icons.png b/src/main/webapp/static/easyUI/themes/default/images/tabs_icons.png new file mode 100644 index 0000000000000000000000000000000000000000..4d29966d7154338a9e2e358821a5f72655eba43e Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/default/images/tabs_icons.png differ diff --git a/src/main/webapp/static/easyUI/themes/default/images/tagbox_icons.png b/src/main/webapp/static/easyUI/themes/default/images/tagbox_icons.png new file mode 100644 index 0000000000000000000000000000000000000000..bd02e2d817c6b7c4e2a105919e9a89cc0a1d577f Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/default/images/tagbox_icons.png differ diff --git a/src/main/webapp/static/easyUI/themes/default/images/tree_icons.png b/src/main/webapp/static/easyUI/themes/default/images/tree_icons.png new file mode 100644 index 0000000000000000000000000000000000000000..e9be4f3a9965e49a4e4078f8c53f486d761a7468 Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/default/images/tree_icons.png differ diff --git a/src/main/webapp/static/easyUI/themes/default/images/validatebox_warning.png b/src/main/webapp/static/easyUI/themes/default/images/validatebox_warning.png new file mode 100644 index 0000000000000000000000000000000000000000..2b3d4f05babf3f82b146350e96570fac02075de0 Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/default/images/validatebox_warning.png differ diff --git a/src/main/webapp/static/easyUI/themes/default/layout.css b/src/main/webapp/static/easyUI/themes/default/layout.css new file mode 100644 index 0000000000000000000000000000000000000000..6d5c3f5d7860365fbc4abca5383e87015f888af7 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/default/layout.css @@ -0,0 +1,150 @@ +.layout { + position: relative; + overflow: hidden; + margin: 0; + padding: 0; + z-index: 0; +} +.layout-panel { + position: absolute; + overflow: hidden; +} +.layout-body { + min-width: 1px; + min-height: 1px; +} +.layout-panel-east, +.layout-panel-west { + z-index: 2; +} +.layout-panel-north, +.layout-panel-south { + z-index: 3; +} +.layout-expand { + position: absolute; + padding: 0px; + font-size: 1px; + cursor: pointer; + z-index: 1; +} +.layout-expand .panel-header, +.layout-expand .panel-body { + background: transparent; + filter: none; + overflow: hidden; +} +.layout-expand .panel-header { + border-bottom-width: 0px; +} +.layout-expand .panel-body { + position: relative; +} +.layout-expand .panel-body .panel-icon { + margin-top: 0; + top: 0; + left: 50%; + margin-left: -8px; +} +.layout-expand-west .panel-header .panel-icon, +.layout-expand-east .panel-header .panel-icon { + display: none; +} +.layout-expand-title { + position: absolute; + top: 0; + left: 21px; + white-space: nowrap; + word-wrap: normal; + -webkit-transform: rotate(90deg); + -webkit-transform-origin: 0 0; + -moz-transform: rotate(90deg); + -moz-transform-origin: 0 0; + -o-transform: rotate(90deg); + -o-transform-origin: 0 0; + transform: rotate(90deg); + transform-origin: 0 0; +} +.layout-expand-title-up { + position: absolute; + top: 0; + left: 0; + text-align: right; + padding-left: 5px; + white-space: nowrap; + word-wrap: normal; + -webkit-transform: rotate(-90deg); + -webkit-transform-origin: 0 0; + -moz-transform: rotate(-90deg); + -moz-transform-origin: 0 0; + -o-transform: rotate(-90deg); + -o-transform-origin: 0 0; + transform: rotate(-90deg); + transform-origin: 0 0; +} +.layout-expand-with-icon { + top: 18px; +} +.layout-expand .panel-body-noheader .layout-expand-title, +.layout-expand .panel-body-noheader .panel-icon { + top: 5px; +} +.layout-expand .panel-body-noheader .layout-expand-with-icon { + top: 23px; +} +.layout-split-proxy-h, +.layout-split-proxy-v { + position: absolute; + font-size: 1px; + display: none; + z-index: 5; +} +.layout-split-proxy-h { + width: 5px; + cursor: e-resize; +} +.layout-split-proxy-v { + height: 5px; + cursor: n-resize; +} +.layout-mask { + position: absolute; + background: #fafafa; + filter: alpha(opacity=10); + opacity: 0.10; + z-index: 4; +} +.layout-button-up { + background: url('images/layout_arrows.png') no-repeat -16px -16px; +} +.layout-button-down { + background: url('images/layout_arrows.png') no-repeat -16px 0; +} +.layout-button-left { + background: url('images/layout_arrows.png') no-repeat 0 0; +} +.layout-button-right { + background: url('images/layout_arrows.png') no-repeat 0 -16px; +} +.layout-split-proxy-h, +.layout-split-proxy-v { + background-color: #aac5e7; +} +.layout-split-north { + border-bottom: 5px solid #E6EEF8; +} +.layout-split-south { + border-top: 5px solid #E6EEF8; +} +.layout-split-east { + border-left: 5px solid #E6EEF8; +} +.layout-split-west { + border-right: 5px solid #E6EEF8; +} +.layout-expand { + background-color: #E0ECFF; +} +.layout-expand-over { + background-color: #E0ECFF; +} diff --git a/src/main/webapp/static/easyUI/themes/default/linkbutton.css b/src/main/webapp/static/easyUI/themes/default/linkbutton.css new file mode 100644 index 0000000000000000000000000000000000000000..a3e21223e91835b9b561a7f55eb2f10ccd93ef37 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/default/linkbutton.css @@ -0,0 +1,203 @@ +.l-btn { + text-decoration: none; + display: inline-block; + overflow: hidden; + margin: 0; + padding: 0; + cursor: pointer; + outline: none; + text-align: center; + vertical-align: middle; + line-height: normal; +} +.l-btn-plain { + border-width: 0; + padding: 1px; +} +.l-btn-left { + display: inline-block; + position: relative; + overflow: hidden; + margin: 0; + padding: 0; + vertical-align: top; +} +.l-btn-text { + display: inline-block; + vertical-align: top; + width: auto; + line-height: 24px; + font-size: 12px; + padding: 0; + margin: 0 4px; +} +.l-btn-icon { + display: inline-block; + width: 16px; + height: 16px; + line-height: 16px; + position: absolute; + top: 50%; + margin-top: -8px; + font-size: 1px; +} +.l-btn span span .l-btn-empty { + display: inline-block; + margin: 0; + width: 16px; + height: 24px; + font-size: 1px; + vertical-align: top; +} +.l-btn span .l-btn-icon-left { + padding: 0 0 0 20px; + background-position: left center; +} +.l-btn span .l-btn-icon-right { + padding: 0 20px 0 0; + background-position: right center; +} +.l-btn-icon-left .l-btn-text { + margin: 0 4px 0 24px; +} +.l-btn-icon-left .l-btn-icon { + left: 4px; +} +.l-btn-icon-right .l-btn-text { + margin: 0 24px 0 4px; +} +.l-btn-icon-right .l-btn-icon { + right: 4px; +} +.l-btn-icon-top .l-btn-text { + margin: 20px 4px 0 4px; +} +.l-btn-icon-top .l-btn-icon { + top: 4px; + left: 50%; + margin: 0 0 0 -8px; +} +.l-btn-icon-bottom .l-btn-text { + margin: 0 4px 20px 4px; +} +.l-btn-icon-bottom .l-btn-icon { + top: auto; + bottom: 4px; + left: 50%; + margin: 0 0 0 -8px; +} +.l-btn-left .l-btn-empty { + margin: 0 4px; + width: 16px; +} +.l-btn-plain:hover { + padding: 0; +} +.l-btn-focus { + outline: #0000FF dotted thin; +} +.l-btn-large .l-btn-text { + line-height: 40px; +} +.l-btn-large .l-btn-icon { + width: 32px; + height: 32px; + line-height: 32px; + margin-top: -16px; +} +.l-btn-large .l-btn-icon-left .l-btn-text { + margin-left: 40px; +} +.l-btn-large .l-btn-icon-right .l-btn-text { + margin-right: 40px; +} +.l-btn-large .l-btn-icon-top .l-btn-text { + margin-top: 36px; + line-height: 24px; + min-width: 32px; +} +.l-btn-large .l-btn-icon-top .l-btn-icon { + margin: 0 0 0 -16px; +} +.l-btn-large .l-btn-icon-bottom .l-btn-text { + margin-bottom: 36px; + line-height: 24px; + min-width: 32px; +} +.l-btn-large .l-btn-icon-bottom .l-btn-icon { + margin: 0 0 0 -16px; +} +.l-btn-large .l-btn-left .l-btn-empty { + margin: 0 4px; + width: 32px; +} +.l-btn { + color: #444; + background: #fafafa; + background-repeat: repeat-x; + border: 1px solid #bbb; + background: -webkit-linear-gradient(top,#ffffff 0,#eeeeee 100%); + background: -moz-linear-gradient(top,#ffffff 0,#eeeeee 100%); + background: -o-linear-gradient(top,#ffffff 0,#eeeeee 100%); + background: linear-gradient(to bottom,#ffffff 0,#eeeeee 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#eeeeee,GradientType=0); + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.l-btn:hover { + background: #eaf2ff; + color: #000000; + border: 1px solid #b7d2ff; + filter: none; +} +.l-btn-plain { + background: transparent; + border-width: 0; + filter: none; +} +.l-btn-outline { + border-width: 1px; + border-color: #b7d2ff; + padding: 0; +} +.l-btn-plain:hover { + background: #eaf2ff; + color: #000000; + border: 1px solid #b7d2ff; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.l-btn-disabled, +.l-btn-disabled:hover { + opacity: 0.5; + cursor: default; + background: #fafafa; + color: #444; + background: -webkit-linear-gradient(top,#ffffff 0,#eeeeee 100%); + background: -moz-linear-gradient(top,#ffffff 0,#eeeeee 100%); + background: -o-linear-gradient(top,#ffffff 0,#eeeeee 100%); + background: linear-gradient(to bottom,#ffffff 0,#eeeeee 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#eeeeee,GradientType=0); +} +.l-btn-disabled .l-btn-text, +.l-btn-disabled .l-btn-icon { + filter: alpha(opacity=50); +} +.l-btn-plain-disabled, +.l-btn-plain-disabled:hover { + background: transparent; + filter: alpha(opacity=50); +} +.l-btn-selected, +.l-btn-selected:hover { + background: #ddd; + filter: none; +} +.l-btn-plain-selected, +.l-btn-plain-selected:hover { + background: #ddd; +} diff --git a/src/main/webapp/static/easyUI/themes/default/menu.css b/src/main/webapp/static/easyUI/themes/default/menu.css new file mode 100644 index 0000000000000000000000000000000000000000..552e25c910eedabc9faccac3aaed85474e2fb313 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/default/menu.css @@ -0,0 +1,119 @@ +.menu { + position: absolute; + margin: 0; + padding: 2px; + border-width: 1px; + border-style: solid; + overflow: hidden; +} +.menu-inline { + position: relative; +} +.menu-item { + position: relative; + margin: 0; + padding: 0; + overflow: hidden; + white-space: nowrap; + cursor: pointer; + border-width: 1px; + border-style: solid; +} +.menu-text { + height: 20px; + line-height: 20px; + float: left; + padding-left: 28px; +} +.menu-icon { + position: absolute; + width: 16px; + height: 16px; + left: 2px; + top: 50%; + margin-top: -8px; +} +.menu-rightarrow { + position: absolute; + width: 16px; + height: 16px; + right: 0; + top: 50%; + margin-top: -8px; +} +.menu-line { + position: absolute; + left: 26px; + top: 0; + height: 2000px; + font-size: 1px; +} +.menu-sep { + margin: 3px 0px 3px 25px; + font-size: 1px; +} +.menu-noline .menu-line { + display: none; +} +.menu-noline .menu-sep { + margin-left: 0; + margin-right: 0; +} +.menu-active { + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.menu-item-disabled { + opacity: 0.5; + filter: alpha(opacity=50); + cursor: default; +} +.menu-text, +.menu-text span { + font-size: 12px; +} +.menu-shadow { + position: absolute; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; + background: #ccc; + -moz-box-shadow: 2px 2px 3px #cccccc; + -webkit-box-shadow: 2px 2px 3px #cccccc; + box-shadow: 2px 2px 3px #cccccc; + filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); +} +.menu-rightarrow { + background: url('images/menu_arrows.png') no-repeat -32px center; +} +.menu-line { + border-left: 1px solid #ccc; + border-right: 1px solid #fff; +} +.menu-sep { + border-top: 1px solid #ccc; + border-bottom: 1px solid #fff; +} +.menu { + background-color: #fafafa; + border-color: #ddd; + color: #444; +} +.menu-content { + background: #ffffff; +} +.menu-item { + border-color: transparent; + _border-color: #fafafa; +} +.menu-active { + border-color: #b7d2ff; + color: #000000; + background: #eaf2ff; +} +.menu-active-disabled { + border-color: transparent; + background: transparent; + color: #444; +} diff --git a/src/main/webapp/static/easyUI/themes/default/menubutton.css b/src/main/webapp/static/easyUI/themes/default/menubutton.css new file mode 100644 index 0000000000000000000000000000000000000000..3445bd5c2bc1404e9ff13105acfc2ce929c0dd7d --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/default/menubutton.css @@ -0,0 +1,94 @@ +.m-btn-downarrow, +.s-btn-downarrow { + display: inline-block; + position: absolute; + width: 16px; + height: 16px; + font-size: 1px; + right: 0; + top: 50%; + margin-top: -8px; +} +.m-btn-active, +.s-btn-active { + background: #eaf2ff; + color: #000000; + border: 1px solid #b7d2ff; + filter: none; +} +.m-btn-plain-active, +.s-btn-plain-active { + background: transparent; + padding: 0; + border-width: 1px; + border-style: solid; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.m-btn .l-btn-left .l-btn-text { + margin-right: 20px; +} +.m-btn .l-btn-icon-right .l-btn-text { + margin-right: 40px; +} +.m-btn .l-btn-icon-right .l-btn-icon { + right: 20px; +} +.m-btn .l-btn-icon-top .l-btn-text { + margin-right: 4px; + margin-bottom: 14px; +} +.m-btn .l-btn-icon-bottom .l-btn-text { + margin-right: 4px; + margin-bottom: 34px; +} +.m-btn .l-btn-icon-bottom .l-btn-icon { + top: auto; + bottom: 20px; +} +.m-btn .l-btn-icon-top .m-btn-downarrow, +.m-btn .l-btn-icon-bottom .m-btn-downarrow { + top: auto; + bottom: 0px; + left: 50%; + margin-left: -8px; +} +.m-btn-line { + display: inline-block; + position: absolute; + font-size: 1px; + display: none; +} +.m-btn .l-btn-left .m-btn-line { + right: 0; + width: 16px; + height: 500px; + border-style: solid; + border-color: #aac5e7; + border-width: 0 0 0 1px; +} +.m-btn .l-btn-icon-top .m-btn-line, +.m-btn .l-btn-icon-bottom .m-btn-line { + left: 0; + bottom: 0; + width: 500px; + height: 16px; + border-width: 1px 0 0 0; +} +.m-btn-large .l-btn-icon-right .l-btn-text { + margin-right: 56px; +} +.m-btn-large .l-btn-icon-bottom .l-btn-text { + margin-bottom: 50px; +} +.m-btn-downarrow, +.s-btn-downarrow { + background: url('images/menu_arrows.png') no-repeat 0 center; +} +.m-btn-plain-active, +.s-btn-plain-active { + border-color: #b7d2ff; + background-color: #eaf2ff; + color: #000000; +} diff --git a/src/main/webapp/static/easyUI/themes/default/messager.css b/src/main/webapp/static/easyUI/themes/default/messager.css new file mode 100644 index 0000000000000000000000000000000000000000..4794cedc11dc30a563cb799a6efde40e42a136e8 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/default/messager.css @@ -0,0 +1,44 @@ +.messager-body { + padding: 10px 10px 30px 10px; + overflow: auto; +} +.messager-button { + text-align: center; + padding: 5px; +} +.messager-button .l-btn { + width: 70px; +} +.messager-icon { + float: left; + width: 32px; + height: 32px; + margin: 0 10px 10px 0; +} +.messager-error { + background: url('images/messager_icons.png') no-repeat scroll -64px 0; +} +.messager-info { + background: url('images/messager_icons.png') no-repeat scroll 0 0; +} +.messager-question { + background: url('images/messager_icons.png') no-repeat scroll -32px 0; +} +.messager-warning { + background: url('images/messager_icons.png') no-repeat scroll -96px 0; +} +.messager-progress { + padding: 10px; +} +.messager-p-msg { + margin-bottom: 5px; +} +.messager-body .messager-input { + width: 100%; + padding: 4px 0; + outline-style: none; + border: 1px solid #95B8E7; +} +.window-thinborder .messager-button { + padding-bottom: 8px; +} diff --git a/src/main/webapp/static/easyUI/themes/default/numberbox.css b/src/main/webapp/static/easyUI/themes/default/numberbox.css new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/main/webapp/static/easyUI/themes/default/pagination.css b/src/main/webapp/static/easyUI/themes/default/pagination.css new file mode 100644 index 0000000000000000000000000000000000000000..995c8a899946d5c0403bc4528be7321860ac4829 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/default/pagination.css @@ -0,0 +1,71 @@ +.pagination { + zoom: 1; +} +.pagination table { + float: left; + height: 30px; +} +.pagination td { + border: 0; +} +.pagination-btn-separator { + float: left; + height: 24px; + border-left: 1px solid #ccc; + border-right: 1px solid #fff; + margin: 3px 1px; +} +.pagination .pagination-num { + border-width: 1px; + border-style: solid; + margin: 0 2px; + padding: 2px; + width: 2em; + height: auto; +} +.pagination-page-list { + margin: 0px 6px; + padding: 1px 2px; + width: auto; + height: auto; + border-width: 1px; + border-style: solid; +} +.pagination-info { + float: right; + margin: 0 6px; + padding: 0; + height: 30px; + line-height: 30px; + font-size: 12px; +} +.pagination span { + font-size: 12px; +} +.pagination-link .l-btn-text { + width: 24px; + text-align: center; + margin: 0; +} +.pagination-first { + background: url('images/pagination_icons.png') no-repeat 0 center; +} +.pagination-prev { + background: url('images/pagination_icons.png') no-repeat -16px center; +} +.pagination-next { + background: url('images/pagination_icons.png') no-repeat -32px center; +} +.pagination-last { + background: url('images/pagination_icons.png') no-repeat -48px center; +} +.pagination-load { + background: url('images/pagination_icons.png') no-repeat -64px center; +} +.pagination-loading { + background: url('images/loading.gif') no-repeat center center; +} +.pagination-page-list, +.pagination .pagination-num { + border-color: #95B8E7; +} diff --git a/src/main/webapp/static/easyUI/themes/default/panel.css b/src/main/webapp/static/easyUI/themes/default/panel.css new file mode 100644 index 0000000000000000000000000000000000000000..675e02ee94d31e850f28470f7968f46f4ed9663e --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/default/panel.css @@ -0,0 +1,265 @@ +.panel { + overflow: hidden; + text-align: left; + margin: 0; + border: 0; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.panel-header, +.panel-body { + border-width: 1px; + border-style: solid; +} +.panel-header { + padding: 5px; + position: relative; +} +.panel-title { + background: url('images/blank.gif') no-repeat; +} +.panel-header-noborder { + border-width: 0 0 1px 0; +} +.panel-body { + overflow: auto; + border-top-width: 0; + padding: 0; +} +.panel-body-noheader { + border-top-width: 1px; +} +.panel-body-noborder { + border-width: 0px; +} +.panel-body-nobottom { + border-bottom-width: 0; +} +.panel-with-icon { + padding-left: 18px; +} +.panel-icon, +.panel-tool { + position: absolute; + top: 50%; + margin-top: -8px; + height: 16px; + overflow: hidden; +} +.panel-icon { + left: 5px; + width: 16px; +} +.panel-tool { + right: 5px; + width: auto; +} +.panel-tool a { + display: inline-block; + width: 16px; + height: 16px; + opacity: 0.6; + filter: alpha(opacity=60); + margin: 0 0 0 2px; + vertical-align: top; +} +.panel-tool a:hover { + opacity: 1; + filter: alpha(opacity=100); + background-color: #eaf2ff; + -moz-border-radius: 3px 3px 3px 3px; + -webkit-border-radius: 3px 3px 3px 3px; + border-radius: 3px 3px 3px 3px; +} +.panel-loading { + padding: 11px 0px 10px 30px; +} +.panel-noscroll { + overflow: hidden; +} +.panel-fit, +.panel-fit body { + height: 100%; + margin: 0; + padding: 0; + border: 0; + overflow: hidden; +} +.panel-loading { + background: url('images/loading.gif') no-repeat 10px 10px; +} +.panel-tool-close { + background: url('images/panel_tools.png') no-repeat -16px 0px; +} +.panel-tool-min { + background: url('images/panel_tools.png') no-repeat 0px 0px; +} +.panel-tool-max { + background: url('images/panel_tools.png') no-repeat 0px -16px; +} +.panel-tool-restore { + background: url('images/panel_tools.png') no-repeat -16px -16px; +} +.panel-tool-collapse { + background: url('images/panel_tools.png') no-repeat -32px 0; +} +.panel-tool-expand { + background: url('images/panel_tools.png') no-repeat -32px -16px; +} +.panel-header, +.panel-body { + border-color: #95B8E7; +} +.panel-header { + background-color: #E0ECFF; + background: -webkit-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%); + background: -moz-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%); + background: -o-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%); + background: linear-gradient(to bottom,#EFF5FF 0,#E0ECFF 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#EFF5FF,endColorstr=#E0ECFF,GradientType=0); +} +.panel-body { + background-color: #ffffff; + color: #000000; + font-size: 12px; +} +.panel-title { + font-size: 12px; + font-weight: bold; + color: #0E2D5F; + height: 16px; + line-height: 16px; +} +.panel-footer { + border: 1px solid #95B8E7; + overflow: hidden; + background: #F4F4F4; +} +.panel-footer-noborder { + border-width: 1px 0 0 0; +} +.panel-hleft, +.panel-hright { + position: relative; +} +.panel-hleft>.panel-body, +.panel-hright>.panel-body { + position: absolute; +} +.panel-hleft>.panel-header { + float: left; +} +.panel-hright>.panel-header { + float: right; +} +.panel-hleft>.panel-body { + border-top-width: 1px; + border-left-width: 0; +} +.panel-hright>.panel-body { + border-top-width: 1px; + border-right-width: 0; +} +.panel-hleft>.panel-body-nobottom { + border-bottom-width: 1px; + border-right-width: 0; +} +.panel-hright>.panel-body-nobottom { + border-bottom-width: 1px; + border-left-width: 0; +} +.panel-hleft>.panel-footer { + position: absolute; + right: 0; +} +.panel-hright>.panel-footer { + position: absolute; + left: 0; +} +.panel-hleft>.panel-header-noborder { + border-width: 0 1px 0 0; +} +.panel-hright>.panel-header-noborder { + border-width: 0 0 0 1px; +} +.panel-hleft>.panel-body-noborder { + border-width: 0; +} +.panel-hright>.panel-body-noborder { + border-width: 0; +} +.panel-hleft>.panel-body-noheader { + border-left-width: 1px; +} +.panel-hright>.panel-body-noheader { + border-right-width: 1px; +} +.panel-hleft>.panel-footer-noborder { + border-width: 0 0 0 1px; +} +.panel-hright>.panel-footer-noborder { + border-width: 0 1px 0 0; +} +.panel-hleft>.panel-header .panel-icon, +.panel-hright>.panel-header .panel-icon { + margin-top: 0; + top: 5px; +} +.panel-hleft>.panel-header .panel-title, +.panel-hright>.panel-header .panel-title { + position: absolute; + min-width: 16px; + left: 21px; + top: 5px; + bottom: auto; + white-space: nowrap; + word-wrap: normal; + -webkit-transform: rotate(90deg); + -webkit-transform-origin: 0 0; + -moz-transform: rotate(90deg); + -moz-transform-origin: 0 0; + -o-transform: rotate(90deg); + -o-transform-origin: 0 0; + transform: rotate(90deg); + transform-origin: 0 0; +} +.panel-hleft>.panel-header .panel-title-up, +.panel-hright>.panel-header .panel-title-up { + position: absolute; + min-width: 16px; + left: 21px; + top: auto; + bottom: 5px; + text-align: right; + white-space: nowrap; + word-wrap: normal; + -webkit-transform: rotate(-90deg); + -webkit-transform-origin: 0 0; + -moz-transform: rotate(-90deg); + -moz-transform-origin: 0 0; + -o-transform: rotate(-90deg); + -o-transform-origin: 0 0; + transform: rotate(-90deg); + transform-origin: 0 16px; +} +.panel-hleft>.panel-header .panel-with-icon.panel-title-up, +.panel-hright>.panel-header .panel-with-icon.panel-title-up { + padding-left: 0; + padding-right: 18px; +} +.panel-hleft>.panel-header .panel-tool, +.panel-hright>.panel-header .panel-tool { + top: auto; + bottom: 5px; + width: 16px; + height: auto; + left: 50%; + margin-left: -8px; + margin-top: 0; +} +.panel-hleft>.panel-header .panel-tool a, +.panel-hright>.panel-header .panel-tool a { + margin: 2px 0 0 0; +} diff --git a/src/main/webapp/static/easyUI/themes/default/passwordbox.css b/src/main/webapp/static/easyUI/themes/default/passwordbox.css new file mode 100644 index 0000000000000000000000000000000000000000..92c9ce586b5c0e515bceb19422e8012e85d0e09b --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/default/passwordbox.css @@ -0,0 +1,6 @@ +.passwordbox-open { + background: url('images/passwordbox_open.png') no-repeat center center; +} +.passwordbox-close { + background: url('images/passwordbox_close.png') no-repeat center center; +} diff --git a/src/main/webapp/static/easyUI/themes/default/progressbar.css b/src/main/webapp/static/easyUI/themes/default/progressbar.css new file mode 100644 index 0000000000000000000000000000000000000000..e4d30031ccc39adf22f8ec952e5dfb3d6647e9e1 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/default/progressbar.css @@ -0,0 +1,32 @@ +.progressbar { + border-width: 1px; + border-style: solid; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; + overflow: hidden; + position: relative; +} +.progressbar-text { + text-align: center; + position: absolute; +} +.progressbar-value { + position: relative; + overflow: hidden; + width: 0; + -moz-border-radius: 5px 0 0 5px; + -webkit-border-radius: 5px 0 0 5px; + border-radius: 5px 0 0 5px; +} +.progressbar { + border-color: #95B8E7; +} +.progressbar-text { + color: #000000; + font-size: 12px; +} +.progressbar-value .progressbar-text { + background-color: #ffe48d; + color: #000000; +} diff --git a/src/main/webapp/static/easyUI/themes/default/propertygrid.css b/src/main/webapp/static/easyUI/themes/default/propertygrid.css new file mode 100644 index 0000000000000000000000000000000000000000..5f5fbb38dde01f53641e834e5bcaaf3e6df66b3e --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/default/propertygrid.css @@ -0,0 +1,28 @@ +.propertygrid .datagrid-view1 .datagrid-body td { + padding-bottom: 1px; + border-width: 0 1px 0 0; +} +.propertygrid .datagrid-group { + height: 21px; + overflow: hidden; + border-width: 0 0 1px 0; + border-style: solid; +} +.propertygrid .datagrid-group span { + font-weight: bold; +} +.propertygrid .datagrid-view1 .datagrid-body td { + border-color: #dddddd; +} +.propertygrid .datagrid-view1 .datagrid-group { + border-color: #E0ECFF; +} +.propertygrid .datagrid-view2 .datagrid-group { + border-color: #dddddd; +} +.propertygrid .datagrid-group, +.propertygrid .datagrid-view1 .datagrid-body, +.propertygrid .datagrid-view1 .datagrid-row-over, +.propertygrid .datagrid-view1 .datagrid-row-selected { + background: #E0ECFF; +} diff --git a/src/main/webapp/static/easyUI/themes/default/searchbox.css b/src/main/webapp/static/easyUI/themes/default/searchbox.css new file mode 100644 index 0000000000000000000000000000000000000000..ada5ce39aafc0ccb863e167a073a9878f2f57934 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/default/searchbox.css @@ -0,0 +1,61 @@ +.searchbox-button { + width: 18px; + height: 20px; + overflow: hidden; + display: inline-block; + vertical-align: top; + cursor: pointer; + opacity: 0.6; + filter: alpha(opacity=60); +} +.searchbox-button-hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.searchbox .l-btn-plain { + border: 0; + padding: 0; + vertical-align: top; + opacity: 0.6; + filter: alpha(opacity=60); + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox .l-btn-plain:hover { + border: 0; + padding: 0; + opacity: 1.0; + filter: alpha(opacity=100); + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox a.m-btn-plain-active { + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox .m-btn-active { + border-width: 0 1px 0 0; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox .textbox-button-right { + border-width: 0 0 0 1px; +} +.searchbox .textbox-button-left { + border-width: 0 1px 0 0; +} +.searchbox-button { + background: url('images/searchbox_button.png') no-repeat center center; +} +.searchbox .l-btn-plain { + background: #E0ECFF; +} +.searchbox .l-btn-plain-disabled, +.searchbox .l-btn-plain-disabled:hover { + opacity: 0.5; + filter: alpha(opacity=50); +} diff --git a/src/main/webapp/static/easyUI/themes/default/slider.css b/src/main/webapp/static/easyUI/themes/default/slider.css new file mode 100644 index 0000000000000000000000000000000000000000..f51f9863668e4ca1cca2e02440a7931d99dc0f5d --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/default/slider.css @@ -0,0 +1,101 @@ +.slider-disabled { + opacity: 0.5; + filter: alpha(opacity=50); +} +.slider-h { + height: 22px; +} +.slider-v { + width: 22px; +} +.slider-inner { + position: relative; + height: 6px; + top: 7px; + border-width: 1px; + border-style: solid; + border-radius: 5px; +} +.slider-handle { + position: absolute; + display: block; + outline: none; + width: 20px; + height: 20px; + top: 50%; + margin-top: -10px; + margin-left: -10px; +} +.slider-tip { + position: absolute; + display: inline-block; + line-height: 12px; + font-size: 12px; + white-space: nowrap; + top: -22px; +} +.slider-rule { + position: relative; + top: 15px; +} +.slider-rule span { + position: absolute; + display: inline-block; + font-size: 0; + height: 5px; + border-width: 0 0 0 1px; + border-style: solid; +} +.slider-rulelabel { + position: relative; + top: 20px; +} +.slider-rulelabel span { + position: absolute; + display: inline-block; + font-size: 12px; +} +.slider-v .slider-inner { + width: 6px; + left: 7px; + top: 0; + float: left; +} +.slider-v .slider-handle { + left: 50%; + margin-top: -10px; +} +.slider-v .slider-tip { + left: -10px; + margin-top: -6px; +} +.slider-v .slider-rule { + float: left; + top: 0; + left: 16px; +} +.slider-v .slider-rule span { + width: 5px; + height: 'auto'; + border-left: 0; + border-width: 1px 0 0 0; + border-style: solid; +} +.slider-v .slider-rulelabel { + float: left; + top: 0; + left: 23px; +} +.slider-handle { + background: url('images/slider_handle.png') no-repeat; +} +.slider-inner { + border-color: #95B8E7; + background: #E0ECFF; +} +.slider-rule span { + border-color: #95B8E7; +} +.slider-rulelabel span { + color: #000000; +} diff --git a/src/main/webapp/static/easyUI/themes/default/spinner.css b/src/main/webapp/static/easyUI/themes/default/spinner.css new file mode 100644 index 0000000000000000000000000000000000000000..e2df29b8ec3b888e2abfffe9f91299609ba85339 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/default/spinner.css @@ -0,0 +1,58 @@ +.spinner-arrow { + background-color: #E0ECFF; + display: inline-block; + overflow: hidden; + vertical-align: top; + margin: 0; + padding: 0; + opacity: 1.0; + filter: alpha(opacity=100); + width: 18px; +} +.spinner-arrow-up, +.spinner-arrow-down { + opacity: 0.6; + filter: alpha(opacity=60); + display: block; + font-size: 1px; + width: 18px; + height: 10px; + width: 100%; + height: 50%; + color: #444; + outline-style: none; +} +.spinner-arrow-hover { + background-color: #eaf2ff; + opacity: 1.0; + filter: alpha(opacity=100); +} +.spinner-arrow-up:hover, +.spinner-arrow-down:hover { + opacity: 1.0; + filter: alpha(opacity=100); + background-color: #eaf2ff; +} +.textbox-icon-disabled .spinner-arrow-up:hover, +.textbox-icon-disabled .spinner-arrow-down:hover { + opacity: 0.6; + filter: alpha(opacity=60); + background-color: #E0ECFF; + cursor: default; +} +.spinner .textbox-icon-disabled { + opacity: 0.6; + filter: alpha(opacity=60); +} +.spinner-arrow-up { + background: url('images/spinner_arrows.png') no-repeat 1px center; +} +.spinner-arrow-down { + background: url('images/spinner_arrows.png') no-repeat -15px center; +} +.spinner-button-up { + background: url('images/spinner_arrows.png') no-repeat -32px center; +} +.spinner-button-down { + background: url('images/spinner_arrows.png') no-repeat -48px center; +} diff --git a/src/main/webapp/static/easyUI/themes/default/splitbutton.css b/src/main/webapp/static/easyUI/themes/default/splitbutton.css new file mode 100644 index 0000000000000000000000000000000000000000..86d6da58e8ffdb7fc843676acd72cd55fbbe2597 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/default/splitbutton.css @@ -0,0 +1,12 @@ +.s-btn:hover .m-btn-line, +.s-btn-active .m-btn-line, +.s-btn-plain-active .m-btn-line { + display: inline-block; +} +.l-btn:hover .s-btn-downarrow, +.s-btn-active .s-btn-downarrow, +.s-btn-plain-active .s-btn-downarrow { + border-style: solid; + border-color: #aac5e7; + border-width: 0 0 0 1px; +} diff --git a/src/main/webapp/static/easyUI/themes/default/switchbutton.css b/src/main/webapp/static/easyUI/themes/default/switchbutton.css new file mode 100644 index 0000000000000000000000000000000000000000..20818ab4cbda4ba0f48d0d5c3ba201140a6968c9 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/default/switchbutton.css @@ -0,0 +1,77 @@ +.switchbutton { + text-decoration: none; + display: inline-block; + overflow: hidden; + vertical-align: middle; + margin: 0; + padding: 0; + cursor: pointer; + background: #bbb; + border: 1px solid #bbb; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.switchbutton-inner { + display: inline-block; + overflow: hidden; + position: relative; + top: -1px; + left: -1px; +} +.switchbutton-on, +.switchbutton-off, +.switchbutton-handle { + display: inline-block; + text-align: center; + height: 100%; + float: left; + font-size: 12px; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.switchbutton-on { + background: #ffe48d; + color: #000000; +} +.switchbutton-off { + background-color: #ffffff; + color: #000000; +} +.switchbutton-on, +.switchbutton-reversed .switchbutton-off { + -moz-border-radius: 5px 0 0 5px; + -webkit-border-radius: 5px 0 0 5px; + border-radius: 5px 0 0 5px; +} +.switchbutton-off, +.switchbutton-reversed .switchbutton-on { + -moz-border-radius: 0 5px 5px 0; + -webkit-border-radius: 0 5px 5px 0; + border-radius: 0 5px 5px 0; +} +.switchbutton-handle { + position: absolute; + top: 0; + left: 50%; + background-color: #ffffff; + color: #000000; + border: 1px solid #bbb; + -moz-box-shadow: 0 0 3px 0 #bbb; + -webkit-box-shadow: 0 0 3px 0 #bbb; + box-shadow: 0 0 3px 0 #bbb; +} +.switchbutton-value { + position: absolute; + top: 0; + left: -5000px; +} +.switchbutton-disabled { + opacity: 0.5; + filter: alpha(opacity=50); +} +.switchbutton-disabled, +.switchbutton-readonly { + cursor: default; +} diff --git a/src/main/webapp/static/easyUI/themes/default/tabs.css b/src/main/webapp/static/easyUI/themes/default/tabs.css new file mode 100644 index 0000000000000000000000000000000000000000..d5d84e849bc576553005e36ebc8b8c4a9d5e2c5a --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/default/tabs.css @@ -0,0 +1,413 @@ +.tabs-container { + overflow: hidden; +} +.tabs-header { + border-width: 1px; + border-style: solid; + border-bottom-width: 0; + position: relative; + padding: 0; + padding-top: 2px; + overflow: hidden; +} +.tabs-scroller-left, +.tabs-scroller-right { + position: absolute; + top: auto; + bottom: 0; + width: 18px; + font-size: 1px; + display: none; + cursor: pointer; + border-width: 1px; + border-style: solid; +} +.tabs-scroller-left { + left: 0; +} +.tabs-scroller-right { + right: 0; +} +.tabs-tool { + position: absolute; + bottom: 0; + padding: 1px; + overflow: hidden; + border-width: 1px; + border-style: solid; +} +.tabs-header-plain .tabs-tool { + padding: 0 1px; +} +.tabs-wrap { + position: relative; + left: 0; + overflow: hidden; + width: 100%; + margin: 0; + padding: 0; +} +.tabs-scrolling { + margin-left: 18px; + margin-right: 18px; +} +.tabs-disabled { + opacity: 0.3; + filter: alpha(opacity=30); +} +.tabs { + list-style-type: none; + height: 26px; + margin: 0px; + padding: 0px; + padding-left: 4px; + width: 50000px; + border-style: solid; + border-width: 0 0 1px 0; +} +.tabs li { + float: left; + display: inline-block; + margin: 0 4px -1px 0; + padding: 0; + position: relative; + border: 0; +} +.tabs li a.tabs-inner { + display: inline-block; + text-decoration: none; + margin: 0; + padding: 0 10px; + height: 25px; + line-height: 25px; + text-align: center; + white-space: nowrap; + border-width: 1px; + border-style: solid; + -moz-border-radius: 5px 5px 0 0; + -webkit-border-radius: 5px 5px 0 0; + border-radius: 5px 5px 0 0; +} +.tabs li.tabs-selected a.tabs-inner { + font-weight: bold; + outline: none; +} +.tabs li.tabs-selected a:hover.tabs-inner { + cursor: default; + pointer: default; +} +.tabs li a.tabs-close, +.tabs-p-tool { + position: absolute; + font-size: 1px; + display: block; + height: 12px; + padding: 0; + top: 50%; + margin-top: -6px; + overflow: hidden; +} +.tabs li a.tabs-close { + width: 12px; + right: 5px; + opacity: 0.6; + filter: alpha(opacity=60); +} +.tabs-p-tool { + right: 16px; +} +.tabs-p-tool a { + display: inline-block; + font-size: 1px; + width: 12px; + height: 12px; + margin: 0; + opacity: 0.6; + filter: alpha(opacity=60); +} +.tabs li a:hover.tabs-close, +.tabs-p-tool a:hover { + opacity: 1; + filter: alpha(opacity=100); + cursor: hand; + cursor: pointer; +} +.tabs-with-icon { + padding-left: 18px; +} +.tabs-icon { + position: absolute; + width: 16px; + height: 16px; + left: 10px; + top: 50%; + margin-top: -8px; +} +.tabs-title { + font-size: 12px; +} +.tabs-closable { + padding-right: 8px; +} +.tabs-panels { + margin: 0px; + padding: 0px; + border-width: 1px; + border-style: solid; + border-top-width: 0; + overflow: hidden; +} +.tabs-header-bottom { + border-width: 0 1px 1px 1px; + padding: 0 0 2px 0; +} +.tabs-header-bottom .tabs { + border-width: 1px 0 0 0; +} +.tabs-header-bottom .tabs li { + margin: -1px 4px 0 0; +} +.tabs-header-bottom .tabs li a.tabs-inner { + -moz-border-radius: 0 0 5px 5px; + -webkit-border-radius: 0 0 5px 5px; + border-radius: 0 0 5px 5px; +} +.tabs-header-bottom .tabs-tool { + top: 0; +} +.tabs-header-bottom .tabs-scroller-left, +.tabs-header-bottom .tabs-scroller-right { + top: 0; + bottom: auto; +} +.tabs-panels-top { + border-width: 1px 1px 0 1px; +} +.tabs-header-left { + float: left; + border-width: 1px 0 1px 1px; + padding: 0; +} +.tabs-header-right { + float: right; + border-width: 1px 1px 1px 0; + padding: 0; +} +.tabs-header-left .tabs-wrap, +.tabs-header-right .tabs-wrap { + height: 100%; +} +.tabs-header-left .tabs { + height: 100%; + padding: 4px 0 0 2px; + border-width: 0 1px 0 0; +} +.tabs-header-right .tabs { + height: 100%; + padding: 4px 2px 0 0; + border-width: 0 0 0 1px; +} +.tabs-header-left .tabs li, +.tabs-header-right .tabs li { + display: block; + width: 100%; + position: relative; +} +.tabs-header-left .tabs li { + left: auto; + right: 0; + margin: 0 -1px 4px 0; + float: right; +} +.tabs-header-right .tabs li { + left: 0; + right: auto; + margin: 0 0 4px -1px; + float: left; +} +.tabs-justified li a.tabs-inner { + padding-left: 0; + padding-right: 0; +} +.tabs-header-left .tabs li a.tabs-inner { + display: block; + text-align: left; + padding-left: 10px; + padding-right: 10px; + -moz-border-radius: 5px 0 0 5px; + -webkit-border-radius: 5px 0 0 5px; + border-radius: 5px 0 0 5px; +} +.tabs-header-right .tabs li a.tabs-inner { + display: block; + text-align: left; + padding-left: 10px; + padding-right: 10px; + -moz-border-radius: 0 5px 5px 0; + -webkit-border-radius: 0 5px 5px 0; + border-radius: 0 5px 5px 0; +} +.tabs-panels-right { + float: right; + border-width: 1px 1px 1px 0; +} +.tabs-panels-left { + float: left; + border-width: 1px 0 1px 1px; +} +.tabs-header-noborder, +.tabs-panels-noborder { + border: 0px; +} +.tabs-header-plain { + border: 0px; + background: transparent; +} +.tabs-pill { + padding-bottom: 3px; +} +.tabs-header-bottom .tabs-pill { + padding-top: 3px; + padding-bottom: 0; +} +.tabs-header-left .tabs-pill { + padding-right: 3px; +} +.tabs-header-right .tabs-pill { + padding-left: 3px; +} +.tabs-header .tabs-pill li a.tabs-inner { + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.tabs-header-narrow, +.tabs-header-narrow .tabs-narrow { + padding: 0; +} +.tabs-narrow li, +.tabs-header-bottom .tabs-narrow li { + margin-left: 0; + margin-right: -1px; +} +.tabs-narrow li.tabs-last, +.tabs-header-bottom .tabs-narrow li.tabs-last { + margin-right: 0; +} +.tabs-header-left .tabs-narrow, +.tabs-header-right .tabs-narrow { + padding-top: 0; +} +.tabs-header-left .tabs-narrow li { + margin-bottom: -1px; + margin-right: -1px; +} +.tabs-header-left .tabs-narrow li.tabs-last, +.tabs-header-right .tabs-narrow li.tabs-last { + margin-bottom: 0; +} +.tabs-header-right .tabs-narrow li { + margin-bottom: -1px; + margin-left: -1px; +} +.tabs-scroller-left { + background: #E0ECFF url('images/tabs_icons.png') no-repeat 1px center; +} +.tabs-scroller-right { + background: #E0ECFF url('images/tabs_icons.png') no-repeat -15px center; +} +.tabs li a.tabs-close { + background: url('images/tabs_icons.png') no-repeat -34px center; +} +.tabs li a.tabs-inner:hover { + background: #eaf2ff; + color: #000000; + filter: none; +} +.tabs li.tabs-selected a.tabs-inner { + background-color: #ffffff; + color: #0E2D5F; + background: -webkit-linear-gradient(top,#EFF5FF 0,#ffffff 100%); + background: -moz-linear-gradient(top,#EFF5FF 0,#ffffff 100%); + background: -o-linear-gradient(top,#EFF5FF 0,#ffffff 100%); + background: linear-gradient(to bottom,#EFF5FF 0,#ffffff 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#EFF5FF,endColorstr=#ffffff,GradientType=0); +} +.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { + background: -webkit-linear-gradient(top,#ffffff 0,#EFF5FF 100%); + background: -moz-linear-gradient(top,#ffffff 0,#EFF5FF 100%); + background: -o-linear-gradient(top,#ffffff 0,#EFF5FF 100%); + background: linear-gradient(to bottom,#ffffff 0,#EFF5FF 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#EFF5FF,GradientType=0); +} +.tabs-header-left .tabs li.tabs-selected a.tabs-inner { + background: -webkit-linear-gradient(left,#EFF5FF 0,#ffffff 100%); + background: -moz-linear-gradient(left,#EFF5FF 0,#ffffff 100%); + background: -o-linear-gradient(left,#EFF5FF 0,#ffffff 100%); + background: linear-gradient(to right,#EFF5FF 0,#ffffff 100%); + background-repeat: repeat-y; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#EFF5FF,endColorstr=#ffffff,GradientType=1); +} +.tabs-header-right .tabs li.tabs-selected a.tabs-inner { + background: -webkit-linear-gradient(left,#ffffff 0,#EFF5FF 100%); + background: -moz-linear-gradient(left,#ffffff 0,#EFF5FF 100%); + background: -o-linear-gradient(left,#ffffff 0,#EFF5FF 100%); + background: linear-gradient(to right,#ffffff 0,#EFF5FF 100%); + background-repeat: repeat-y; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#EFF5FF,GradientType=1); +} +.tabs li a.tabs-inner { + color: #0E2D5F; + background-color: #E0ECFF; + background: -webkit-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%); + background: -moz-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%); + background: -o-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%); + background: linear-gradient(to bottom,#EFF5FF 0,#E0ECFF 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#EFF5FF,endColorstr=#E0ECFF,GradientType=0); +} +.tabs-header, +.tabs-tool { + background-color: #E0ECFF; +} +.tabs-header-plain { + background: transparent; +} +.tabs-header, +.tabs-scroller-left, +.tabs-scroller-right, +.tabs-tool, +.tabs, +.tabs-panels, +.tabs li a.tabs-inner, +.tabs li.tabs-selected a.tabs-inner, +.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner, +.tabs-header-left .tabs li.tabs-selected a.tabs-inner, +.tabs-header-right .tabs li.tabs-selected a.tabs-inner { + border-color: #95B8E7; +} +.tabs-p-tool a:hover, +.tabs li a:hover.tabs-close, +.tabs-scroller-over { + background-color: #eaf2ff; +} +.tabs li.tabs-selected a.tabs-inner { + border-bottom: 1px solid #ffffff; +} +.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { + border-top: 1px solid #ffffff; +} +.tabs-header-left .tabs li.tabs-selected a.tabs-inner { + border-right: 1px solid #ffffff; +} +.tabs-header-right .tabs li.tabs-selected a.tabs-inner { + border-left: 1px solid #ffffff; +} +.tabs-header .tabs-pill li.tabs-selected a.tabs-inner { + background: #ffe48d; + color: #000000; + filter: none; + border-color: #95B8E7; +} diff --git a/src/main/webapp/static/easyUI/themes/default/tagbox.css b/src/main/webapp/static/easyUI/themes/default/tagbox.css new file mode 100644 index 0000000000000000000000000000000000000000..67d51a36722771650ed05878badb5de468cad80d --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/default/tagbox.css @@ -0,0 +1,44 @@ +.tagbox { + cursor: text; +} +.tagbox .textbox-text { + float: left; +} +.tagbox-label { + position: relative; + display: block; + margin: 4px 0 0 4px; + padding: 0 20px 0 4px; + float: left; + vertical-align: top; + text-decoration: none; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; + background: #eaf2ff; + color: #000000; +} +.tagbox-remove { + background: url('images/tagbox_icons.png') no-repeat -16px center; + position: absolute; + display: block; + width: 16px; + height: 16px; + right: 2px; + top: 50%; + margin-top: -8px; + opacity: 0.6; + filter: alpha(opacity=60); +} +.tagbox-remove:hover { + opacity: 1; + filter: alpha(opacity=100); +} +.textbox-disabled .tagbox-label { + cursor: default; +} +.textbox-disabled .tagbox-remove:hover { + cursor: default; + opacity: 0.6; + filter: alpha(opacity=60); +} diff --git a/src/main/webapp/static/easyUI/themes/default/textbox.css b/src/main/webapp/static/easyUI/themes/default/textbox.css new file mode 100644 index 0000000000000000000000000000000000000000..ae2d963ed74164a1dc3317ee1046c602c21aeecc --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/default/textbox.css @@ -0,0 +1,139 @@ +.textbox { + position: relative; + border: 1px solid #95B8E7; + background-color: #fff; + vertical-align: middle; + display: inline-block; + overflow: hidden; + white-space: nowrap; + margin: 0; + padding: 0; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.textbox .textbox-text { + font-size: 12px; + border: 0; + margin: 0; + padding: 4px; + white-space: normal; + vertical-align: top; + outline-style: none; + resize: none; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.textbox .textbox-text::-ms-clear, +.textbox .textbox-text::-ms-reveal { + display: none; +} +.textbox textarea.textbox-text { + white-space: pre-wrap; +} +.textbox .textbox-prompt { + font-size: 12px; + color: #aaa; +} +.textbox .textbox-bgicon { + background-position: 3px center; + padding-left: 21px; +} +.textbox .textbox-button, +.textbox .textbox-button:hover { + position: absolute; + top: 0; + padding: 0; + vertical-align: top; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.textbox .textbox-button-right, +.textbox .textbox-button-right:hover { + right: 0; + border-width: 0 0 0 1px; +} +.textbox .textbox-button-left, +.textbox .textbox-button-left:hover { + left: 0; + border-width: 0 1px 0 0; +} +.textbox .textbox-button-top, +.textbox .textbox-button-top:hover { + left: 0; + border-width: 0 0 1px 0; +} +.textbox .textbox-button-bottom, +.textbox .textbox-button-bottom:hover { + top: auto; + bottom: 0; + left: 0; + border-width: 1px 0 0 0; +} +.textbox-addon { + position: absolute; + top: 0; +} +.textbox-label { + display: inline-block; + width: 80px; + height: 22px; + line-height: 22px; + vertical-align: middle; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + margin: 0; + padding-right: 5px; +} +.textbox-label-after { + padding-left: 5px; + padding-right: 0; +} +.textbox-label-top { + display: block; + width: auto; + padding: 0; +} +.textbox-disabled, +.textbox-label-disabled { + opacity: 0.6; + filter: alpha(opacity=60); +} +.textbox-icon { + display: inline-block; + width: 18px; + height: 20px; + overflow: hidden; + vertical-align: top; + background-position: center center; + cursor: pointer; + opacity: 0.6; + filter: alpha(opacity=60); + text-decoration: none; + outline-style: none; +} +.textbox-icon-disabled, +.textbox-icon-readonly { + cursor: default; +} +.textbox-icon:hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.textbox-icon-disabled:hover { + opacity: 0.6; + filter: alpha(opacity=60); +} +.textbox-focused { + border-color: #6b9cde; + -moz-box-shadow: 0 0 3px 0 #95B8E7; + -webkit-box-shadow: 0 0 3px 0 #95B8E7; + box-shadow: 0 0 3px 0 #95B8E7; +} +.textbox-invalid { + border-color: #ffa8a8; + background-color: #fff3f3; +} diff --git a/src/main/webapp/static/easyUI/themes/default/tooltip.css b/src/main/webapp/static/easyUI/themes/default/tooltip.css new file mode 100644 index 0000000000000000000000000000000000000000..9294d9da8ffdf4cb9cbc5219a86d4e9f92c9f470 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/default/tooltip.css @@ -0,0 +1,103 @@ +.tooltip { + position: absolute; + display: none; + z-index: 9900000; + outline: none; + opacity: 1; + filter: alpha(opacity=100); + padding: 5px; + border-width: 1px; + border-style: solid; + border-radius: 5px; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.tooltip-content { + font-size: 12px; +} +.tooltip-arrow-outer, +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; + line-height: 0; + font-size: 0; + border-style: solid; + border-width: 6px; + border-color: transparent; + _border-color: tomato; + _filter: chroma(color=tomato); +} +.tooltip-arrow { + display: none \9; +} +.tooltip-right .tooltip-arrow-outer { + left: 0; + top: 50%; + margin: -6px 0 0 -13px; +} +.tooltip-right .tooltip-arrow { + left: 0; + top: 50%; + margin: -6px 0 0 -12px; +} +.tooltip-left .tooltip-arrow-outer { + right: 0; + top: 50%; + margin: -6px -13px 0 0; +} +.tooltip-left .tooltip-arrow { + right: 0; + top: 50%; + margin: -6px -12px 0 0; +} +.tooltip-top .tooltip-arrow-outer { + bottom: 0; + left: 50%; + margin: 0 0 -13px -6px; +} +.tooltip-top .tooltip-arrow { + bottom: 0; + left: 50%; + margin: 0 0 -12px -6px; +} +.tooltip-bottom .tooltip-arrow-outer { + top: 0; + left: 50%; + margin: -13px 0 0 -6px; +} +.tooltip-bottom .tooltip-arrow { + top: 0; + left: 50%; + margin: -12px 0 0 -6px; +} +.tooltip { + background-color: #ffffff; + border-color: #95B8E7; + color: #000000; +} +.tooltip-right .tooltip-arrow-outer { + border-right-color: #95B8E7; +} +.tooltip-right .tooltip-arrow { + border-right-color: #ffffff; +} +.tooltip-left .tooltip-arrow-outer { + border-left-color: #95B8E7; +} +.tooltip-left .tooltip-arrow { + border-left-color: #ffffff; +} +.tooltip-top .tooltip-arrow-outer { + border-top-color: #95B8E7; +} +.tooltip-top .tooltip-arrow { + border-top-color: #ffffff; +} +.tooltip-bottom .tooltip-arrow-outer { + border-bottom-color: #95B8E7; +} +.tooltip-bottom .tooltip-arrow { + border-bottom-color: #ffffff; +} diff --git a/src/main/webapp/static/easyUI/themes/default/tree.css b/src/main/webapp/static/easyUI/themes/default/tree.css new file mode 100644 index 0000000000000000000000000000000000000000..d6f5e16499bfe3240eef5829906e58626d164049 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/default/tree.css @@ -0,0 +1,161 @@ +.tree { + margin: 0; + padding: 0; + list-style-type: none; +} +.tree li { + white-space: nowrap; +} +.tree li ul { + list-style-type: none; + margin: 0; + padding: 0; +} +.tree-node { + height: 18px; + white-space: nowrap; + cursor: pointer; +} +.tree-hit { + cursor: pointer; +} +.tree-expanded, +.tree-collapsed, +.tree-folder, +.tree-file, +.tree-checkbox, +.tree-indent { + display: inline-block; + width: 16px; + height: 18px; + vertical-align: top; + overflow: hidden; +} +.tree-expanded { + background: url('images/tree_icons.png') no-repeat -18px 0px; +} +.tree-expanded-hover { + background: url('images/tree_icons.png') no-repeat -50px 0px; +} +.tree-collapsed { + background: url('images/tree_icons.png') no-repeat 0px 0px; +} +.tree-collapsed-hover { + background: url('images/tree_icons.png') no-repeat -32px 0px; +} +.tree-lines .tree-expanded, +.tree-lines .tree-root-first .tree-expanded { + background: url('images/tree_icons.png') no-repeat -144px 0; +} +.tree-lines .tree-collapsed, +.tree-lines .tree-root-first .tree-collapsed { + background: url('images/tree_icons.png') no-repeat -128px 0; +} +.tree-lines .tree-node-last .tree-expanded, +.tree-lines .tree-root-one .tree-expanded { + background: url('images/tree_icons.png') no-repeat -80px 0; +} +.tree-lines .tree-node-last .tree-collapsed, +.tree-lines .tree-root-one .tree-collapsed { + background: url('images/tree_icons.png') no-repeat -64px 0; +} +.tree-line { + background: url('images/tree_icons.png') no-repeat -176px 0; +} +.tree-join { + background: url('images/tree_icons.png') no-repeat -192px 0; +} +.tree-joinbottom { + background: url('images/tree_icons.png') no-repeat -160px 0; +} +.tree-folder { + background: url('images/tree_icons.png') no-repeat -208px 0; +} +.tree-folder-open { + background: url('images/tree_icons.png') no-repeat -224px 0; +} +.tree-file { + background: url('images/tree_icons.png') no-repeat -240px 0; +} +.tree-loading { + background: url('images/loading.gif') no-repeat center center; +} +.tree-checkbox0 { + background: url('images/tree_icons.png') no-repeat -208px -18px; +} +.tree-checkbox1 { + background: url('images/tree_icons.png') no-repeat -224px -18px; +} +.tree-checkbox2 { + background: url('images/tree_icons.png') no-repeat -240px -18px; +} +.tree-title { + font-size: 12px; + display: inline-block; + text-decoration: none; + vertical-align: top; + white-space: nowrap; + padding: 0 2px; + height: 18px; + line-height: 18px; +} +.tree-node-proxy { + font-size: 12px; + line-height: 20px; + padding: 0 2px 0 20px; + border-width: 1px; + border-style: solid; + z-index: 9900000; +} +.tree-dnd-icon { + display: inline-block; + position: absolute; + width: 16px; + height: 18px; + left: 2px; + top: 50%; + margin-top: -9px; +} +.tree-dnd-yes { + background: url('images/tree_icons.png') no-repeat -256px 0; +} +.tree-dnd-no { + background: url('images/tree_icons.png') no-repeat -256px -18px; +} +.tree-node-top { + border-top: 1px dotted red; +} +.tree-node-bottom { + border-bottom: 1px dotted red; +} +.tree-node-append .tree-title { + border: 1px dotted red; +} +.tree-editor { + border: 1px solid #95B8E7; + font-size: 12px; + line-height: 16px; + padding: 0 4px; + margin: 0; + width: 80px; + outline-style: none; + vertical-align: top; + position: absolute; + top: 0; +} +.tree-node-proxy { + background-color: #ffffff; + color: #000000; + border-color: #95B8E7; +} +.tree-node-hover { + background: #eaf2ff; + color: #000000; +} +.tree-node-selected { + background: #ffe48d; + color: #000000; +} +.tree-node-hidden { + display: none; +} diff --git a/src/main/webapp/static/easyUI/themes/default/validatebox.css b/src/main/webapp/static/easyUI/themes/default/validatebox.css new file mode 100644 index 0000000000000000000000000000000000000000..1fc3ad64e4f79ba1b3d4e715f3dd0cd8ae0ac3fc --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/default/validatebox.css @@ -0,0 +1,5 @@ +.validatebox-invalid { + border-color: #ffa8a8; + background-color: #fff3f3; + color: #000; +} diff --git a/src/main/webapp/static/easyUI/themes/default/window.css b/src/main/webapp/static/easyUI/themes/default/window.css new file mode 100644 index 0000000000000000000000000000000000000000..ee7e8bdd82b85f29af8ceb52a76eb929cc05efe8 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/default/window.css @@ -0,0 +1,183 @@ +.window { + overflow: hidden; + padding: 5px; + border-width: 1px; + border-style: solid; +} +.window .window-header { + background: transparent; + padding: 0px 0px 6px 0px; +} +.window .window-body { + border-width: 1px; + border-style: solid; + border-top-width: 0px; +} +.window .window-body-noheader { + border-top-width: 1px; +} +.window .panel-body-nobottom { + border-bottom-width: 0; +} +.window .window-header .panel-icon, +.window .window-header .panel-tool { + top: 50%; + margin-top: -11px; +} +.window .window-header .panel-icon { + left: 1px; +} +.window .window-header .panel-tool { + right: 1px; +} +.window .window-header .panel-with-icon { + padding-left: 18px; +} +.window-proxy { + position: absolute; + overflow: hidden; +} +.window-proxy-mask { + position: absolute; + filter: alpha(opacity=5); + opacity: 0.05; +} +.window-mask { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + filter: alpha(opacity=40); + opacity: 0.40; + font-size: 1px; + overflow: hidden; +} +.window, +.window-shadow { + position: absolute; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.window-shadow { + background: #ccc; + -moz-box-shadow: 2px 2px 3px #cccccc; + -webkit-box-shadow: 2px 2px 3px #cccccc; + box-shadow: 2px 2px 3px #cccccc; + filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); +} +.window, +.window .window-body { + border-color: #95B8E7; +} +.window { + background-color: #E0ECFF; + background: -webkit-linear-gradient(top,#EFF5FF 0,#E0ECFF 20%); + background: -moz-linear-gradient(top,#EFF5FF 0,#E0ECFF 20%); + background: -o-linear-gradient(top,#EFF5FF 0,#E0ECFF 20%); + background: linear-gradient(to bottom,#EFF5FF 0,#E0ECFF 20%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#EFF5FF,endColorstr=#E0ECFF,GradientType=0); +} +.window-proxy { + border: 1px dashed #95B8E7; +} +.window-proxy-mask, +.window-mask { + background: #ccc; +} +.window .panel-footer { + border: 1px solid #95B8E7; + position: relative; + top: -1px; +} +.window-thinborder { + padding: 0; +} +.window-thinborder .window-header { + padding: 5px 5px 6px 5px; +} +.window-thinborder .window-body { + border-width: 0px; +} +.window-thinborder .window-header .panel-icon, +.window-thinborder .window-header .panel-tool { + margin-top: -9px; + margin-left: 5px; + margin-right: 5px; +} +.window-noborder { + border: 0; +} +.window.panel-hleft .window-header { + padding: 0 6px 0 0; +} +.window.panel-hright .window-header { + padding: 0 0 0 6px; +} +.window.panel-hleft>.panel-header .panel-title { + top: auto; + left: 16px; +} +.window.panel-hright>.panel-header .panel-title { + top: auto; + right: 16px; +} +.window.panel-hleft>.panel-header .panel-title-up, +.window.panel-hright>.panel-header .panel-title-up { + bottom: 0; +} +.window.panel-hleft .window-body { + border-width: 1px 1px 1px 0; +} +.window.panel-hright .window-body { + border-width: 1px 0 1px 1px; +} +.window.panel-hleft .window-header .panel-icon { + top: 1px; + margin-top: 0; + left: 0; +} +.window.panel-hright .window-header .panel-icon { + top: 1px; + margin-top: 0; + left: auto; + right: 1px; +} +.window.panel-hleft .window-header .panel-tool, +.window.panel-hright .window-header .panel-tool { + margin-top: 0; + top: auto; + bottom: 1px; + right: auto; + margin-right: 0; + left: 50%; + margin-left: -11px; +} +.window.panel-hright .window-header .panel-tool { + left: auto; + right: 1px; +} +.window-thinborder.panel-hleft .window-header { + padding: 5px 6px 5px 5px; +} +.window-thinborder.panel-hright .window-header { + padding: 5px 5px 5px 6px; +} +.window-thinborder.panel-hleft>.panel-header .panel-title { + left: 21px; +} +.window-thinborder.panel-hleft>.panel-header .panel-title-up, +.window-thinborder.panel-hright>.panel-header .panel-title-up { + bottom: 5px; +} +.window-thinborder.panel-hleft .window-header .panel-icon, +.window-thinborder.panel-hright .window-header .panel-icon { + margin-top: 5px; +} +.window-thinborder.panel-hleft .window-header .panel-tool, +.window-thinborder.panel-hright .window-header .panel-tool { + left: 16px; + bottom: 5px; +} diff --git a/src/main/webapp/static/easyUI/themes/gray/accordion.css b/src/main/webapp/static/easyUI/themes/gray/accordion.css new file mode 100644 index 0000000000000000000000000000000000000000..3226cb381aebb331adf6fdbd8ff79747053d0755 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/gray/accordion.css @@ -0,0 +1,89 @@ +.accordion { + overflow: hidden; + border-width: 1px; + border-style: solid; +} +.accordion .accordion-header { + border-width: 0 0 1px; + cursor: pointer; +} +.accordion .accordion-body { + border-width: 0 0 1px; +} +.accordion-noborder { + border-width: 0; +} +.accordion-noborder .accordion-header { + border-width: 0 0 1px; +} +.accordion-noborder .accordion-body { + border-width: 0 0 1px; +} +.accordion-collapse { + background: url('images/accordion_arrows.png') no-repeat 0 0; +} +.accordion-expand { + background: url('images/accordion_arrows.png') no-repeat -16px 0; +} +.accordion { + background: #ffffff; + border-color: #D3D3D3; +} +.accordion .accordion-header { + background: #f3f3f3; + filter: none; +} +.accordion .accordion-header-selected { + background: #0092DC; +} +.accordion .accordion-header-selected .panel-title { + color: #fff; +} +.accordion .panel-last > .accordion-header { + border-bottom-color: #f3f3f3; +} +.accordion .panel-last > .accordion-body { + border-bottom-color: #ffffff; +} +.accordion .panel-last > .accordion-header-selected, +.accordion .panel-last > .accordion-header-border { + border-bottom-color: #D3D3D3; +} +.accordion> .panel-hleft { + float: left; +} +.accordion> .panel-hleft>.panel-header { + border-width: 0 1px 0 0; +} +.accordion> .panel-hleft> .panel-body { + border-width: 0 1px 0 0; +} +.accordion> .panel-hleft.panel-last > .accordion-header { + border-right-color: #f3f3f3; +} +.accordion> .panel-hleft.panel-last > .accordion-body { + border-right-color: #ffffff; +} +.accordion> .panel-hleft.panel-last > .accordion-header-selected, +.accordion> .panel-hleft.panel-last > .accordion-header-border { + border-right-color: #D3D3D3; +} +.accordion> .panel-hright { + float: right; +} +.accordion> .panel-hright>.panel-header { + border-width: 0 0 0 1px; +} +.accordion> .panel-hright> .panel-body { + border-width: 0 0 0 1px; +} +.accordion> .panel-hright.panel-last > .accordion-header { + border-left-color: #f3f3f3; +} +.accordion> .panel-hright.panel-last > .accordion-body { + border-left-color: #ffffff; +} +.accordion> .panel-hright.panel-last > .accordion-header-selected, +.accordion> .panel-hright.panel-last > .accordion-header-border { + border-left-color: #D3D3D3; +} diff --git a/src/main/webapp/static/easyUI/themes/gray/calendar.css b/src/main/webapp/static/easyUI/themes/gray/calendar.css new file mode 100644 index 0000000000000000000000000000000000000000..a0204720e2c50018b5319104cfb2bcc87da66b85 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/gray/calendar.css @@ -0,0 +1,202 @@ +.calendar { + border-width: 1px; + border-style: solid; + padding: 1px; + overflow: hidden; +} +.calendar table { + table-layout: fixed; + border-collapse: separate; + font-size: 12px; + width: 100%; + height: 100%; +} +.calendar table td, +.calendar table th { + font-size: 12px; +} +.calendar-noborder { + border: 0; +} +.calendar-header { + position: relative; + height: 22px; +} +.calendar-title { + text-align: center; + height: 22px; +} +.calendar-title span { + position: relative; + display: inline-block; + top: 2px; + padding: 0 3px; + height: 18px; + line-height: 18px; + font-size: 12px; + cursor: pointer; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-prevmonth, +.calendar-nextmonth, +.calendar-prevyear, +.calendar-nextyear { + position: absolute; + top: 50%; + margin-top: -7px; + width: 14px; + height: 14px; + cursor: pointer; + font-size: 1px; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-prevmonth { + left: 20px; + background: url('images/calendar_arrows.png') no-repeat -18px -2px; +} +.calendar-nextmonth { + right: 20px; + background: url('images/calendar_arrows.png') no-repeat -34px -2px; +} +.calendar-prevyear { + left: 3px; + background: url('images/calendar_arrows.png') no-repeat -1px -2px; +} +.calendar-nextyear { + right: 3px; + background: url('images/calendar_arrows.png') no-repeat -49px -2px; +} +.calendar-body { + position: relative; +} +.calendar-body th, +.calendar-body td { + text-align: center; +} +.calendar-day { + border: 0; + padding: 1px; + cursor: pointer; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-other-month { + opacity: 0.3; + filter: alpha(opacity=30); +} +.calendar-disabled { + opacity: 0.6; + filter: alpha(opacity=60); + cursor: default; +} +.calendar-menu { + position: absolute; + top: 0; + left: 0; + width: 180px; + height: 150px; + padding: 5px; + font-size: 12px; + display: none; + overflow: hidden; +} +.calendar-menu-year-inner { + text-align: center; + padding-bottom: 5px; +} +.calendar-menu-year { + width: 50px; + text-align: center; + border-width: 1px; + border-style: solid; + outline-style: none; + resize: none; + margin: 0; + padding: 2px; + font-weight: bold; + font-size: 12px; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-menu-prev, +.calendar-menu-next { + display: inline-block; + width: 21px; + height: 21px; + vertical-align: top; + cursor: pointer; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-menu-prev { + margin-right: 10px; + background: url('images/calendar_arrows.png') no-repeat 2px 2px; +} +.calendar-menu-next { + margin-left: 10px; + background: url('images/calendar_arrows.png') no-repeat -45px 2px; +} +.calendar-menu-month { + text-align: center; + cursor: pointer; + font-weight: bold; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-body th, +.calendar-menu-month { + color: #4d4d4d; +} +.calendar-day { + color: #000000; +} +.calendar-sunday { + color: #CC2222; +} +.calendar-saturday { + color: #00ee00; +} +.calendar-today { + color: #0000ff; +} +.calendar-menu-year { + border-color: #D3D3D3; +} +.calendar { + border-color: #D3D3D3; +} +.calendar-header { + background: #f3f3f3; +} +.calendar-body, +.calendar-menu { + background: #ffffff; +} +.calendar-body th { + background: #fafafa; + padding: 2px 0; +} +.calendar-hover, +.calendar-nav-hover, +.calendar-menu-hover { + background-color: #e2e2e2; + color: #000000; +} +.calendar-hover { + border: 1px solid #ccc; + padding: 0; +} +.calendar-selected { + background-color: #0092DC; + color: #fff; + border: 1px solid #0070a9; + padding: 0; +} diff --git a/src/main/webapp/static/easyUI/themes/gray/combo.css b/src/main/webapp/static/easyUI/themes/gray/combo.css new file mode 100644 index 0000000000000000000000000000000000000000..6ebdf5ee79d64586efdefc5d2eca26eb4b09d1c3 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/gray/combo.css @@ -0,0 +1,35 @@ +.combo-arrow { + width: 18px; + height: 20px; + overflow: hidden; + display: inline-block; + vertical-align: top; + cursor: pointer; + opacity: 0.6; + filter: alpha(opacity=60); +} +.combo-arrow-hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.combo-panel { + overflow: auto; +} +.combo-arrow { + background: url('images/combo_arrow.png') no-repeat center center; +} +.combo-panel { + background-color: #ffffff; +} +.combo-arrow { + background-color: #f3f3f3; +} +.combo-arrow-hover { + background-color: #e2e2e2; +} +.combo-arrow:hover { + background-color: #e2e2e2; +} +.combo .textbox-icon-disabled:hover { + cursor: default; +} diff --git a/src/main/webapp/static/easyUI/themes/gray/combobox.css b/src/main/webapp/static/easyUI/themes/gray/combobox.css new file mode 100644 index 0000000000000000000000000000000000000000..0f7b5afab747e9bb32114a4cddba7aa623bed19c --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/gray/combobox.css @@ -0,0 +1,39 @@ +.combobox-item, +.combobox-group, +.combobox-stick { + font-size: 12px; + padding: 3px; +} +.combobox-item-disabled { + opacity: 0.5; + filter: alpha(opacity=50); +} +.combobox-gitem { + padding-left: 10px; +} +.combobox-group, +.combobox-stick { + font-weight: bold; +} +.combobox-stick { + position: absolute; + top: 1px; + left: 1px; + right: 1px; + background: inherit; +} +.combobox-item-hover { + background-color: #e2e2e2; + color: #000000; +} +.combobox-item-selected { + background-color: #0092DC; + color: #fff; +} +.combobox-icon { + display: inline-block; + width: 16px; + height: 16px; + vertical-align: middle; + margin-right: 2px; +} diff --git a/src/main/webapp/static/easyUI/themes/gray/datagrid.css b/src/main/webapp/static/easyUI/themes/gray/datagrid.css new file mode 100644 index 0000000000000000000000000000000000000000..737faf7376d654bc5111098244b7f172b1bdce4b --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/gray/datagrid.css @@ -0,0 +1,288 @@ +.datagrid .panel-body { + overflow: hidden; + position: relative; +} +.datagrid-view { + position: relative; + overflow: hidden; +} +.datagrid-view1, +.datagrid-view2 { + position: absolute; + overflow: hidden; + top: 0; +} +.datagrid-view1 { + left: 0; +} +.datagrid-view2 { + right: 0; +} +.datagrid-mask { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + opacity: 0.3; + filter: alpha(opacity=30); + display: none; +} +.datagrid-mask-msg { + position: absolute; + top: 50%; + margin-top: -20px; + padding: 10px 5px 10px 30px; + width: auto; + height: 16px; + border-width: 2px; + border-style: solid; + display: none; +} +.datagrid-empty { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 25px; + line-height: 25px; + text-align: center; +} +.datagrid-sort-icon { + padding: 0; + display: none; +} +.datagrid-toolbar { + height: auto; + padding: 1px 2px; + border-width: 0 0 1px 0; + border-style: solid; +} +.datagrid-btn-separator { + float: left; + height: 24px; + border-left: 1px solid #ccc; + border-right: 1px solid #fff; + margin: 2px 1px; +} +.datagrid .datagrid-pager { + display: block; + margin: 0; + border-width: 1px 0 0 0; + border-style: solid; +} +.datagrid .datagrid-pager-top { + border-width: 0 0 1px 0; +} +.datagrid-header { + overflow: hidden; + cursor: default; + border-width: 0 0 1px 0; + border-style: solid; +} +.datagrid-header-inner { + float: left; + width: 10000px; +} +.datagrid-header-row, +.datagrid-row { + height: 25px; +} +.datagrid-header td, +.datagrid-body td, +.datagrid-footer td { + border-width: 0 1px 1px 0; + border-style: dotted; + margin: 0; + padding: 0; +} +.datagrid-cell, +.datagrid-cell-group, +.datagrid-header-rownumber, +.datagrid-cell-rownumber { + margin: 0; + padding: 0 4px; + white-space: nowrap; + word-wrap: normal; + overflow: hidden; + height: 18px; + line-height: 18px; + font-size: 12px; +} +.datagrid-header .datagrid-cell { + height: auto; +} +.datagrid-header .datagrid-cell span { + font-size: 12px; +} +.datagrid-cell-group { + text-align: center; + text-overflow: ellipsis; +} +.datagrid-header-rownumber, +.datagrid-cell-rownumber { + width: 30px; + text-align: center; + margin: 0; + padding: 0; +} +.datagrid-body { + margin: 0; + padding: 0; + overflow: auto; + zoom: 1; +} +.datagrid-view1 .datagrid-body-inner { + padding-bottom: 20px; +} +.datagrid-view1 .datagrid-body { + overflow: hidden; +} +.datagrid-footer { + overflow: hidden; +} +.datagrid-footer-inner { + border-width: 1px 0 0 0; + border-style: solid; + width: 10000px; + float: left; +} +.datagrid-row-editing .datagrid-cell { + height: auto; +} +.datagrid-header-check, +.datagrid-cell-check { + padding: 0; + width: 27px; + height: 18px; + font-size: 1px; + text-align: center; + overflow: hidden; +} +.datagrid-header-check input, +.datagrid-cell-check input { + margin: 0; + padding: 0; + width: 15px; + height: 18px; +} +.datagrid-resize-proxy { + position: absolute; + width: 1px; + height: 10000px; + top: 0; + cursor: e-resize; + display: none; +} +.datagrid-body .datagrid-editable { + margin: 0; + padding: 0; +} +.datagrid-body .datagrid-editable table { + width: 100%; + height: 100%; +} +.datagrid-body .datagrid-editable td { + border: 0; + margin: 0; + padding: 0; +} +.datagrid-view .datagrid-editable-input { + margin: 0; + padding: 2px 4px; + border: 1px solid #D3D3D3; + font-size: 12px; + outline-style: none; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.datagrid-view .validatebox-invalid { + border-color: #ffa8a8; +} +.datagrid-sort .datagrid-sort-icon { + display: inline; + padding: 0 13px 0 0; + background: url('images/datagrid_icons.png') no-repeat -64px center; +} +.datagrid-sort-desc .datagrid-sort-icon { + display: inline; + padding: 0 13px 0 0; + background: url('images/datagrid_icons.png') no-repeat -16px center; +} +.datagrid-sort-asc .datagrid-sort-icon { + display: inline; + padding: 0 13px 0 0; + background: url('images/datagrid_icons.png') no-repeat 0px center; +} +.datagrid-row-collapse { + background: url('images/datagrid_icons.png') no-repeat -48px center; +} +.datagrid-row-expand { + background: url('images/datagrid_icons.png') no-repeat -32px center; +} +.datagrid-mask-msg { + background: #ffffff url('images/loading.gif') no-repeat scroll 5px center; +} +.datagrid-header, +.datagrid-td-rownumber { + background-color: #fafafa; + background: -webkit-linear-gradient(top,#fdfdfd 0,#f5f5f5 100%); + background: -moz-linear-gradient(top,#fdfdfd 0,#f5f5f5 100%); + background: -o-linear-gradient(top,#fdfdfd 0,#f5f5f5 100%); + background: linear-gradient(to bottom,#fdfdfd 0,#f5f5f5 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#fdfdfd,endColorstr=#f5f5f5,GradientType=0); +} +.datagrid-cell-rownumber { + color: #000000; +} +.datagrid-resize-proxy { + background: #bfbfbf; +} +.datagrid-mask { + background: #ccc; +} +.datagrid-mask-msg { + border-color: #D3D3D3; +} +.datagrid-toolbar, +.datagrid-pager { + background: #fafafa; +} +.datagrid-header, +.datagrid-toolbar, +.datagrid-pager, +.datagrid-footer-inner { + border-color: #ddd; +} +.datagrid-header td, +.datagrid-body td, +.datagrid-footer td { + border-color: #ccc; +} +.datagrid-htable, +.datagrid-btable, +.datagrid-ftable { + color: #000000; + border-collapse: separate; +} +.datagrid-row-alt { + background: #fafafa; +} +.datagrid-row-over, +.datagrid-header td.datagrid-header-over { + background: #e2e2e2; + color: #000000; + cursor: default; +} +.datagrid-row-selected { + background: #0092DC; + color: #fff; +} +.datagrid-row-editing .textbox, +.datagrid-row-editing .textbox-text { + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} diff --git a/src/main/webapp/static/easyUI/themes/gray/datalist.css b/src/main/webapp/static/easyUI/themes/gray/datalist.css new file mode 100644 index 0000000000000000000000000000000000000000..de149ef0518cf5973f22172571a7fc80210fa906 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/gray/datalist.css @@ -0,0 +1,95 @@ +.datalist .datagrid-header { + border-width: 0; +} +.datalist .datagrid-group, +.m-list .m-list-group { + height: 25px; + line-height: 25px; + font-weight: bold; + overflow: hidden; + background-color: #fafafa; + border-style: solid; + border-width: 0 0 1px 0; + border-color: #ccc; +} +.datalist .datagrid-group-expander { + display: none; +} +.datalist .datagrid-group-title { + padding: 0 4px; +} +.datalist .datagrid-btable { + width: 100%; + table-layout: fixed; +} +.datalist .datagrid-row td { + border-style: solid; + border-left-color: transparent; + border-right-color: transparent; + border-bottom-width: 0; +} +.datalist-lines .datagrid-row td { + border-bottom-width: 1px; +} +.datalist .datagrid-cell, +.m-list li { + width: auto; + height: auto; + padding: 2px 4px; + line-height: 18px; + position: relative; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; +} +.datalist-link, +.m-list li>a { + display: block; + position: relative; + cursor: pointer; + color: #000000; + text-decoration: none; + overflow: hidden; + margin: -2px -4px; + padding: 2px 4px; + padding-right: 16px; + line-height: 18px; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; +} +.datalist-link::after, +.m-list li>a::after { + position: absolute; + display: block; + width: 8px; + height: 8px; + content: ''; + right: 6px; + top: 50%; + margin-top: -4px; + border-style: solid; + border-width: 1px 1px 0 0; + -ms-transform: rotate(45deg); + -moz-transform: rotate(45deg); + -webkit-transform: rotate(45deg); + -o-transform: rotate(45deg); + transform: rotate(45deg); +} +.m-list { + margin: 0; + padding: 0; + list-style: none; +} +.m-list li { + border-style: solid; + border-width: 0 0 1px 0; + border-color: #ccc; +} +.m-list li>a:hover { + background: #e2e2e2; + color: #000000; +} +.m-list .m-list-group { + padding: 0 4px; +} diff --git a/src/main/webapp/static/easyUI/themes/gray/datebox.css b/src/main/webapp/static/easyUI/themes/gray/datebox.css new file mode 100644 index 0000000000000000000000000000000000000000..f6163757d285c2282fb878454a8e78d0154499b5 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/gray/datebox.css @@ -0,0 +1,36 @@ +.datebox-calendar-inner { + height: 180px; +} +.datebox-button { + padding: 0 5px; + text-align: center; +} +.datebox-button a { + line-height: 22px; + font-size: 12px; + font-weight: bold; + text-decoration: none; + opacity: 0.6; + filter: alpha(opacity=60); +} +.datebox-button a:hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.datebox-current, +.datebox-close { + float: left; +} +.datebox-close { + float: right; +} +.datebox .combo-arrow { + background-image: url('images/datebox_arrow.png'); + background-position: center center; +} +.datebox-button { + background-color: #fafafa; +} +.datebox-button a { + color: #444; +} diff --git a/src/main/webapp/static/easyUI/themes/gray/dialog.css b/src/main/webapp/static/easyUI/themes/gray/dialog.css new file mode 100644 index 0000000000000000000000000000000000000000..2850ca1dc6f00737e4e9130f1e647d6a9eb07e90 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/gray/dialog.css @@ -0,0 +1,47 @@ +.dialog-content { + overflow: auto; +} +.dialog-toolbar { + position: relative; + padding: 2px 5px; +} +.dialog-tool-separator { + float: left; + height: 24px; + border-left: 1px solid #ccc; + border-right: 1px solid #fff; + margin: 2px 1px; +} +.dialog-button { + position: relative; + top: -1px; + padding: 5px; + text-align: right; +} +.dialog-button .l-btn { + margin-left: 5px; +} +.dialog-toolbar, +.dialog-button { + background: #fafafa; + border-width: 1px; + border-style: solid; +} +.dialog-toolbar { + border-color: #D3D3D3 #D3D3D3 #ddd #D3D3D3; +} +.dialog-button { + border-color: #ddd #D3D3D3 #D3D3D3 #D3D3D3; +} +.window-thinborder .dialog-toolbar { + border-left: transparent; + border-right: transparent; + border-top-color: #fafafa; +} +.window-thinborder .dialog-button { + top: 0px; + padding: 5px 8px 8px 8px; + border-left: transparent; + border-right: transparent; + border-bottom: transparent; +} diff --git a/src/main/webapp/static/easyUI/themes/gray/easyui.css b/src/main/webapp/static/easyUI/themes/gray/easyui.css new file mode 100644 index 0000000000000000000000000000000000000000..07794493525554b9d69b9d931bfddbb828e1607b --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/gray/easyui.css @@ -0,0 +1,3220 @@ +.panel { + overflow: hidden; + text-align: left; + margin: 0; + border: 0; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.panel-header, +.panel-body { + border-width: 1px; + border-style: solid; +} +.panel-header { + padding: 5px; + position: relative; +} +.panel-title { + background: url('images/blank.gif') no-repeat; +} +.panel-header-noborder { + border-width: 0 0 1px 0; +} +.panel-body { + overflow: auto; + border-top-width: 0; + padding: 0; +} +.panel-body-noheader { + border-top-width: 1px; +} +.panel-body-noborder { + border-width: 0px; +} +.panel-body-nobottom { + border-bottom-width: 0; +} +.panel-with-icon { + padding-left: 18px; +} +.panel-icon, +.panel-tool { + position: absolute; + top: 50%; + margin-top: -8px; + height: 16px; + overflow: hidden; +} +.panel-icon { + left: 5px; + width: 16px; +} +.panel-tool { + right: 5px; + width: auto; +} +.panel-tool a { + display: inline-block; + width: 16px; + height: 16px; + opacity: 0.6; + filter: alpha(opacity=60); + margin: 0 0 0 2px; + vertical-align: top; +} +.panel-tool a:hover { + opacity: 1; + filter: alpha(opacity=100); + background-color: #e2e2e2; + -moz-border-radius: 3px 3px 3px 3px; + -webkit-border-radius: 3px 3px 3px 3px; + border-radius: 3px 3px 3px 3px; +} +.panel-loading { + padding: 11px 0px 10px 30px; +} +.panel-noscroll { + overflow: hidden; +} +.panel-fit, +.panel-fit body { + height: 100%; + margin: 0; + padding: 0; + border: 0; + overflow: hidden; +} +.panel-loading { + background: url('images/loading.gif') no-repeat 10px 10px; +} +.panel-tool-close { + background: url('images/panel_tools.png') no-repeat -16px 0px; +} +.panel-tool-min { + background: url('images/panel_tools.png') no-repeat 0px 0px; +} +.panel-tool-max { + background: url('images/panel_tools.png') no-repeat 0px -16px; +} +.panel-tool-restore { + background: url('images/panel_tools.png') no-repeat -16px -16px; +} +.panel-tool-collapse { + background: url('images/panel_tools.png') no-repeat -32px 0; +} +.panel-tool-expand { + background: url('images/panel_tools.png') no-repeat -32px -16px; +} +.panel-header, +.panel-body { + border-color: #D3D3D3; +} +.panel-header { + background-color: #f3f3f3; + background: -webkit-linear-gradient(top,#F8F8F8 0,#eeeeee 100%); + background: -moz-linear-gradient(top,#F8F8F8 0,#eeeeee 100%); + background: -o-linear-gradient(top,#F8F8F8 0,#eeeeee 100%); + background: linear-gradient(to bottom,#F8F8F8 0,#eeeeee 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#F8F8F8,endColorstr=#eeeeee,GradientType=0); +} +.panel-body { + background-color: #ffffff; + color: #000000; + font-size: 12px; +} +.panel-title { + font-size: 12px; + font-weight: bold; + color: #575765; + height: 16px; + line-height: 16px; +} +.panel-footer { + border: 1px solid #D3D3D3; + overflow: hidden; + background: #fafafa; +} +.panel-footer-noborder { + border-width: 1px 0 0 0; +} +.panel-hleft, +.panel-hright { + position: relative; +} +.panel-hleft>.panel-body, +.panel-hright>.panel-body { + position: absolute; +} +.panel-hleft>.panel-header { + float: left; +} +.panel-hright>.panel-header { + float: right; +} +.panel-hleft>.panel-body { + border-top-width: 1px; + border-left-width: 0; +} +.panel-hright>.panel-body { + border-top-width: 1px; + border-right-width: 0; +} +.panel-hleft>.panel-body-nobottom { + border-bottom-width: 1px; + border-right-width: 0; +} +.panel-hright>.panel-body-nobottom { + border-bottom-width: 1px; + border-left-width: 0; +} +.panel-hleft>.panel-footer { + position: absolute; + right: 0; +} +.panel-hright>.panel-footer { + position: absolute; + left: 0; +} +.panel-hleft>.panel-header-noborder { + border-width: 0 1px 0 0; +} +.panel-hright>.panel-header-noborder { + border-width: 0 0 0 1px; +} +.panel-hleft>.panel-body-noborder { + border-width: 0; +} +.panel-hright>.panel-body-noborder { + border-width: 0; +} +.panel-hleft>.panel-body-noheader { + border-left-width: 1px; +} +.panel-hright>.panel-body-noheader { + border-right-width: 1px; +} +.panel-hleft>.panel-footer-noborder { + border-width: 0 0 0 1px; +} +.panel-hright>.panel-footer-noborder { + border-width: 0 1px 0 0; +} +.panel-hleft>.panel-header .panel-icon, +.panel-hright>.panel-header .panel-icon { + margin-top: 0; + top: 5px; +} +.panel-hleft>.panel-header .panel-title, +.panel-hright>.panel-header .panel-title { + position: absolute; + min-width: 16px; + left: 21px; + top: 5px; + bottom: auto; + white-space: nowrap; + word-wrap: normal; + -webkit-transform: rotate(90deg); + -webkit-transform-origin: 0 0; + -moz-transform: rotate(90deg); + -moz-transform-origin: 0 0; + -o-transform: rotate(90deg); + -o-transform-origin: 0 0; + transform: rotate(90deg); + transform-origin: 0 0; +} +.panel-hleft>.panel-header .panel-title-up, +.panel-hright>.panel-header .panel-title-up { + position: absolute; + min-width: 16px; + left: 21px; + top: auto; + bottom: 5px; + text-align: right; + white-space: nowrap; + word-wrap: normal; + -webkit-transform: rotate(-90deg); + -webkit-transform-origin: 0 0; + -moz-transform: rotate(-90deg); + -moz-transform-origin: 0 0; + -o-transform: rotate(-90deg); + -o-transform-origin: 0 0; + transform: rotate(-90deg); + transform-origin: 0 16px; +} +.panel-hleft>.panel-header .panel-with-icon.panel-title-up, +.panel-hright>.panel-header .panel-with-icon.panel-title-up { + padding-left: 0; + padding-right: 18px; +} +.panel-hleft>.panel-header .panel-tool, +.panel-hright>.panel-header .panel-tool { + top: auto; + bottom: 5px; + width: 16px; + height: auto; + left: 50%; + margin-left: -8px; + margin-top: 0; +} +.panel-hleft>.panel-header .panel-tool a, +.panel-hright>.panel-header .panel-tool a { + margin: 2px 0 0 0; +} +.accordion { + overflow: hidden; + border-width: 1px; + border-style: solid; +} +.accordion .accordion-header { + border-width: 0 0 1px; + cursor: pointer; +} +.accordion .accordion-body { + border-width: 0 0 1px; +} +.accordion-noborder { + border-width: 0; +} +.accordion-noborder .accordion-header { + border-width: 0 0 1px; +} +.accordion-noborder .accordion-body { + border-width: 0 0 1px; +} +.accordion-collapse { + background: url('images/accordion_arrows.png') no-repeat 0 0; +} +.accordion-expand { + background: url('images/accordion_arrows.png') no-repeat -16px 0; +} +.accordion { + background: #ffffff; + border-color: #D3D3D3; +} +.accordion .accordion-header { + background: #f3f3f3; + filter: none; +} +.accordion .accordion-header-selected { + background: #0092DC; +} +.accordion .accordion-header-selected .panel-title { + color: #fff; +} +.accordion .panel-last > .accordion-header { + border-bottom-color: #f3f3f3; +} +.accordion .panel-last > .accordion-body { + border-bottom-color: #ffffff; +} +.accordion .panel-last > .accordion-header-selected, +.accordion .panel-last > .accordion-header-border { + border-bottom-color: #D3D3D3; +} +.accordion> .panel-hleft { + float: left; +} +.accordion> .panel-hleft>.panel-header { + border-width: 0 1px 0 0; +} +.accordion> .panel-hleft> .panel-body { + border-width: 0 1px 0 0; +} +.accordion> .panel-hleft.panel-last > .accordion-header { + border-right-color: #f3f3f3; +} +.accordion> .panel-hleft.panel-last > .accordion-body { + border-right-color: #ffffff; +} +.accordion> .panel-hleft.panel-last > .accordion-header-selected, +.accordion> .panel-hleft.panel-last > .accordion-header-border { + border-right-color: #D3D3D3; +} +.accordion> .panel-hright { + float: right; +} +.accordion> .panel-hright>.panel-header { + border-width: 0 0 0 1px; +} +.accordion> .panel-hright> .panel-body { + border-width: 0 0 0 1px; +} +.accordion> .panel-hright.panel-last > .accordion-header { + border-left-color: #f3f3f3; +} +.accordion> .panel-hright.panel-last > .accordion-body { + border-left-color: #ffffff; +} +.accordion> .panel-hright.panel-last > .accordion-header-selected, +.accordion> .panel-hright.panel-last > .accordion-header-border { + border-left-color: #D3D3D3; +} +.window { + overflow: hidden; + padding: 5px; + border-width: 1px; + border-style: solid; +} +.window .window-header { + background: transparent; + padding: 0px 0px 6px 0px; +} +.window .window-body { + border-width: 1px; + border-style: solid; + border-top-width: 0px; +} +.window .window-body-noheader { + border-top-width: 1px; +} +.window .panel-body-nobottom { + border-bottom-width: 0; +} +.window .window-header .panel-icon, +.window .window-header .panel-tool { + top: 50%; + margin-top: -11px; +} +.window .window-header .panel-icon { + left: 1px; +} +.window .window-header .panel-tool { + right: 1px; +} +.window .window-header .panel-with-icon { + padding-left: 18px; +} +.window-proxy { + position: absolute; + overflow: hidden; +} +.window-proxy-mask { + position: absolute; + filter: alpha(opacity=5); + opacity: 0.05; +} +.window-mask { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + filter: alpha(opacity=40); + opacity: 0.40; + font-size: 1px; + overflow: hidden; +} +.window, +.window-shadow { + position: absolute; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.window-shadow { + background: #ccc; + -moz-box-shadow: 2px 2px 3px #cccccc; + -webkit-box-shadow: 2px 2px 3px #cccccc; + box-shadow: 2px 2px 3px #cccccc; + filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); +} +.window, +.window .window-body { + border-color: #D3D3D3; +} +.window { + background-color: #f3f3f3; + background: -webkit-linear-gradient(top,#F8F8F8 0,#eeeeee 20%); + background: -moz-linear-gradient(top,#F8F8F8 0,#eeeeee 20%); + background: -o-linear-gradient(top,#F8F8F8 0,#eeeeee 20%); + background: linear-gradient(to bottom,#F8F8F8 0,#eeeeee 20%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#F8F8F8,endColorstr=#eeeeee,GradientType=0); +} +.window-proxy { + border: 1px dashed #D3D3D3; +} +.window-proxy-mask, +.window-mask { + background: #ccc; +} +.window .panel-footer { + border: 1px solid #D3D3D3; + position: relative; + top: -1px; +} +.window-thinborder { + padding: 0; +} +.window-thinborder .window-header { + padding: 5px 5px 6px 5px; +} +.window-thinborder .window-body { + border-width: 0px; +} +.window-thinborder .window-header .panel-icon, +.window-thinborder .window-header .panel-tool { + margin-top: -9px; + margin-left: 5px; + margin-right: 5px; +} +.window-noborder { + border: 0; +} +.window.panel-hleft .window-header { + padding: 0 6px 0 0; +} +.window.panel-hright .window-header { + padding: 0 0 0 6px; +} +.window.panel-hleft>.panel-header .panel-title { + top: auto; + left: 16px; +} +.window.panel-hright>.panel-header .panel-title { + top: auto; + right: 16px; +} +.window.panel-hleft>.panel-header .panel-title-up, +.window.panel-hright>.panel-header .panel-title-up { + bottom: 0; +} +.window.panel-hleft .window-body { + border-width: 1px 1px 1px 0; +} +.window.panel-hright .window-body { + border-width: 1px 0 1px 1px; +} +.window.panel-hleft .window-header .panel-icon { + top: 1px; + margin-top: 0; + left: 0; +} +.window.panel-hright .window-header .panel-icon { + top: 1px; + margin-top: 0; + left: auto; + right: 1px; +} +.window.panel-hleft .window-header .panel-tool, +.window.panel-hright .window-header .panel-tool { + margin-top: 0; + top: auto; + bottom: 1px; + right: auto; + margin-right: 0; + left: 50%; + margin-left: -11px; +} +.window.panel-hright .window-header .panel-tool { + left: auto; + right: 1px; +} +.window-thinborder.panel-hleft .window-header { + padding: 5px 6px 5px 5px; +} +.window-thinborder.panel-hright .window-header { + padding: 5px 5px 5px 6px; +} +.window-thinborder.panel-hleft>.panel-header .panel-title { + left: 21px; +} +.window-thinborder.panel-hleft>.panel-header .panel-title-up, +.window-thinborder.panel-hright>.panel-header .panel-title-up { + bottom: 5px; +} +.window-thinborder.panel-hleft .window-header .panel-icon, +.window-thinborder.panel-hright .window-header .panel-icon { + margin-top: 5px; +} +.window-thinborder.panel-hleft .window-header .panel-tool, +.window-thinborder.panel-hright .window-header .panel-tool { + left: 16px; + bottom: 5px; +} +.dialog-content { + overflow: auto; +} +.dialog-toolbar { + position: relative; + padding: 2px 5px; +} +.dialog-tool-separator { + float: left; + height: 24px; + border-left: 1px solid #ccc; + border-right: 1px solid #fff; + margin: 2px 1px; +} +.dialog-button { + position: relative; + top: -1px; + padding: 5px; + text-align: right; +} +.dialog-button .l-btn { + margin-left: 5px; +} +.dialog-toolbar, +.dialog-button { + background: #fafafa; + border-width: 1px; + border-style: solid; +} +.dialog-toolbar { + border-color: #D3D3D3 #D3D3D3 #ddd #D3D3D3; +} +.dialog-button { + border-color: #ddd #D3D3D3 #D3D3D3 #D3D3D3; +} +.window-thinborder .dialog-toolbar { + border-left: transparent; + border-right: transparent; + border-top-color: #fafafa; +} +.window-thinborder .dialog-button { + top: 0px; + padding: 5px 8px 8px 8px; + border-left: transparent; + border-right: transparent; + border-bottom: transparent; +} +.l-btn { + text-decoration: none; + display: inline-block; + overflow: hidden; + margin: 0; + padding: 0; + cursor: pointer; + outline: none; + text-align: center; + vertical-align: middle; + line-height: normal; +} +.l-btn-plain { + border-width: 0; + padding: 1px; +} +.l-btn-left { + display: inline-block; + position: relative; + overflow: hidden; + margin: 0; + padding: 0; + vertical-align: top; +} +.l-btn-text { + display: inline-block; + vertical-align: top; + width: auto; + line-height: 24px; + font-size: 12px; + padding: 0; + margin: 0 4px; +} +.l-btn-icon { + display: inline-block; + width: 16px; + height: 16px; + line-height: 16px; + position: absolute; + top: 50%; + margin-top: -8px; + font-size: 1px; +} +.l-btn span span .l-btn-empty { + display: inline-block; + margin: 0; + width: 16px; + height: 24px; + font-size: 1px; + vertical-align: top; +} +.l-btn span .l-btn-icon-left { + padding: 0 0 0 20px; + background-position: left center; +} +.l-btn span .l-btn-icon-right { + padding: 0 20px 0 0; + background-position: right center; +} +.l-btn-icon-left .l-btn-text { + margin: 0 4px 0 24px; +} +.l-btn-icon-left .l-btn-icon { + left: 4px; +} +.l-btn-icon-right .l-btn-text { + margin: 0 24px 0 4px; +} +.l-btn-icon-right .l-btn-icon { + right: 4px; +} +.l-btn-icon-top .l-btn-text { + margin: 20px 4px 0 4px; +} +.l-btn-icon-top .l-btn-icon { + top: 4px; + left: 50%; + margin: 0 0 0 -8px; +} +.l-btn-icon-bottom .l-btn-text { + margin: 0 4px 20px 4px; +} +.l-btn-icon-bottom .l-btn-icon { + top: auto; + bottom: 4px; + left: 50%; + margin: 0 0 0 -8px; +} +.l-btn-left .l-btn-empty { + margin: 0 4px; + width: 16px; +} +.l-btn-plain:hover { + padding: 0; +} +.l-btn-focus { + outline: #0000FF dotted thin; +} +.l-btn-large .l-btn-text { + line-height: 40px; +} +.l-btn-large .l-btn-icon { + width: 32px; + height: 32px; + line-height: 32px; + margin-top: -16px; +} +.l-btn-large .l-btn-icon-left .l-btn-text { + margin-left: 40px; +} +.l-btn-large .l-btn-icon-right .l-btn-text { + margin-right: 40px; +} +.l-btn-large .l-btn-icon-top .l-btn-text { + margin-top: 36px; + line-height: 24px; + min-width: 32px; +} +.l-btn-large .l-btn-icon-top .l-btn-icon { + margin: 0 0 0 -16px; +} +.l-btn-large .l-btn-icon-bottom .l-btn-text { + margin-bottom: 36px; + line-height: 24px; + min-width: 32px; +} +.l-btn-large .l-btn-icon-bottom .l-btn-icon { + margin: 0 0 0 -16px; +} +.l-btn-large .l-btn-left .l-btn-empty { + margin: 0 4px; + width: 32px; +} +.l-btn { + color: #444; + background: #fafafa; + background-repeat: repeat-x; + border: 1px solid #bbb; + background: -webkit-linear-gradient(top,#ffffff 0,#eeeeee 100%); + background: -moz-linear-gradient(top,#ffffff 0,#eeeeee 100%); + background: -o-linear-gradient(top,#ffffff 0,#eeeeee 100%); + background: linear-gradient(to bottom,#ffffff 0,#eeeeee 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#eeeeee,GradientType=0); + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.l-btn:hover { + background: #e2e2e2; + color: #000000; + border: 1px solid #ccc; + filter: none; +} +.l-btn-plain { + background: transparent; + border-width: 0; + filter: none; +} +.l-btn-outline { + border-width: 1px; + border-color: #ccc; + padding: 0; +} +.l-btn-plain:hover { + background: #e2e2e2; + color: #000000; + border: 1px solid #ccc; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.l-btn-disabled, +.l-btn-disabled:hover { + opacity: 0.5; + cursor: default; + background: #fafafa; + color: #444; + background: -webkit-linear-gradient(top,#ffffff 0,#eeeeee 100%); + background: -moz-linear-gradient(top,#ffffff 0,#eeeeee 100%); + background: -o-linear-gradient(top,#ffffff 0,#eeeeee 100%); + background: linear-gradient(to bottom,#ffffff 0,#eeeeee 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#eeeeee,GradientType=0); +} +.l-btn-disabled .l-btn-text, +.l-btn-disabled .l-btn-icon { + filter: alpha(opacity=50); +} +.l-btn-plain-disabled, +.l-btn-plain-disabled:hover { + background: transparent; + filter: alpha(opacity=50); +} +.l-btn-selected, +.l-btn-selected:hover { + background: #ddd; + filter: none; +} +.l-btn-plain-selected, +.l-btn-plain-selected:hover { + background: #ddd; +} +.textbox { + position: relative; + border: 1px solid #D3D3D3; + background-color: #fff; + vertical-align: middle; + display: inline-block; + overflow: hidden; + white-space: nowrap; + margin: 0; + padding: 0; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.textbox .textbox-text { + font-size: 12px; + border: 0; + margin: 0; + padding: 4px; + white-space: normal; + vertical-align: top; + outline-style: none; + resize: none; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.textbox .textbox-text::-ms-clear, +.textbox .textbox-text::-ms-reveal { + display: none; +} +.textbox textarea.textbox-text { + white-space: pre-wrap; +} +.textbox .textbox-prompt { + font-size: 12px; + color: #aaa; +} +.textbox .textbox-bgicon { + background-position: 3px center; + padding-left: 21px; +} +.textbox .textbox-button, +.textbox .textbox-button:hover { + position: absolute; + top: 0; + padding: 0; + vertical-align: top; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.textbox .textbox-button-right, +.textbox .textbox-button-right:hover { + right: 0; + border-width: 0 0 0 1px; +} +.textbox .textbox-button-left, +.textbox .textbox-button-left:hover { + left: 0; + border-width: 0 1px 0 0; +} +.textbox .textbox-button-top, +.textbox .textbox-button-top:hover { + left: 0; + border-width: 0 0 1px 0; +} +.textbox .textbox-button-bottom, +.textbox .textbox-button-bottom:hover { + top: auto; + bottom: 0; + left: 0; + border-width: 1px 0 0 0; +} +.textbox-addon { + position: absolute; + top: 0; +} +.textbox-label { + display: inline-block; + width: 80px; + height: 22px; + line-height: 22px; + vertical-align: middle; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + margin: 0; + padding-right: 5px; +} +.textbox-label-after { + padding-left: 5px; + padding-right: 0; +} +.textbox-label-top { + display: block; + width: auto; + padding: 0; +} +.textbox-disabled, +.textbox-label-disabled { + opacity: 0.6; + filter: alpha(opacity=60); +} +.textbox-icon { + display: inline-block; + width: 18px; + height: 20px; + overflow: hidden; + vertical-align: top; + background-position: center center; + cursor: pointer; + opacity: 0.6; + filter: alpha(opacity=60); + text-decoration: none; + outline-style: none; +} +.textbox-icon-disabled, +.textbox-icon-readonly { + cursor: default; +} +.textbox-icon:hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.textbox-icon-disabled:hover { + opacity: 0.6; + filter: alpha(opacity=60); +} +.textbox-focused { + border-color: #bababa; + -moz-box-shadow: 0 0 3px 0 #D3D3D3; + -webkit-box-shadow: 0 0 3px 0 #D3D3D3; + box-shadow: 0 0 3px 0 #D3D3D3; +} +.textbox-invalid { + border-color: #ffa8a8; + background-color: #fff3f3; +} +.passwordbox-open { + background: url('images/passwordbox_open.png') no-repeat center center; +} +.passwordbox-close { + background: url('images/passwordbox_close.png') no-repeat center center; +} +.filebox .textbox-value { + vertical-align: top; + position: absolute; + top: 0; + left: -5000px; +} +.filebox-label { + display: inline-block; + position: absolute; + width: 100%; + height: 100%; + cursor: pointer; + left: 0; + top: 0; + z-index: 10; + background: url('images/blank.gif') no-repeat; +} +.l-btn-disabled .filebox-label { + cursor: default; +} +.combo-arrow { + width: 18px; + height: 20px; + overflow: hidden; + display: inline-block; + vertical-align: top; + cursor: pointer; + opacity: 0.6; + filter: alpha(opacity=60); +} +.combo-arrow-hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.combo-panel { + overflow: auto; +} +.combo-arrow { + background: url('images/combo_arrow.png') no-repeat center center; +} +.combo-panel { + background-color: #ffffff; +} +.combo-arrow { + background-color: #f3f3f3; +} +.combo-arrow-hover { + background-color: #e2e2e2; +} +.combo-arrow:hover { + background-color: #e2e2e2; +} +.combo .textbox-icon-disabled:hover { + cursor: default; +} +.combobox-item, +.combobox-group, +.combobox-stick { + font-size: 12px; + padding: 3px; +} +.combobox-item-disabled { + opacity: 0.5; + filter: alpha(opacity=50); +} +.combobox-gitem { + padding-left: 10px; +} +.combobox-group, +.combobox-stick { + font-weight: bold; +} +.combobox-stick { + position: absolute; + top: 1px; + left: 1px; + right: 1px; + background: inherit; +} +.combobox-item-hover { + background-color: #e2e2e2; + color: #000000; +} +.combobox-item-selected { + background-color: #0092DC; + color: #fff; +} +.combobox-icon { + display: inline-block; + width: 16px; + height: 16px; + vertical-align: middle; + margin-right: 2px; +} +.tagbox { + cursor: text; +} +.tagbox .textbox-text { + float: left; +} +.tagbox-label { + position: relative; + display: block; + margin: 4px 0 0 4px; + padding: 0 20px 0 4px; + float: left; + vertical-align: top; + text-decoration: none; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; + background: #e2e2e2; + color: #000000; +} +.tagbox-remove { + background: url('images/tagbox_icons.png') no-repeat -16px center; + position: absolute; + display: block; + width: 16px; + height: 16px; + right: 2px; + top: 50%; + margin-top: -8px; + opacity: 0.6; + filter: alpha(opacity=60); +} +.tagbox-remove:hover { + opacity: 1; + filter: alpha(opacity=100); +} +.textbox-disabled .tagbox-label { + cursor: default; +} +.textbox-disabled .tagbox-remove:hover { + cursor: default; + opacity: 0.6; + filter: alpha(opacity=60); +} +.layout { + position: relative; + overflow: hidden; + margin: 0; + padding: 0; + z-index: 0; +} +.layout-panel { + position: absolute; + overflow: hidden; +} +.layout-body { + min-width: 1px; + min-height: 1px; +} +.layout-panel-east, +.layout-panel-west { + z-index: 2; +} +.layout-panel-north, +.layout-panel-south { + z-index: 3; +} +.layout-expand { + position: absolute; + padding: 0px; + font-size: 1px; + cursor: pointer; + z-index: 1; +} +.layout-expand .panel-header, +.layout-expand .panel-body { + background: transparent; + filter: none; + overflow: hidden; +} +.layout-expand .panel-header { + border-bottom-width: 0px; +} +.layout-expand .panel-body { + position: relative; +} +.layout-expand .panel-body .panel-icon { + margin-top: 0; + top: 0; + left: 50%; + margin-left: -8px; +} +.layout-expand-west .panel-header .panel-icon, +.layout-expand-east .panel-header .panel-icon { + display: none; +} +.layout-expand-title { + position: absolute; + top: 0; + left: 21px; + white-space: nowrap; + word-wrap: normal; + -webkit-transform: rotate(90deg); + -webkit-transform-origin: 0 0; + -moz-transform: rotate(90deg); + -moz-transform-origin: 0 0; + -o-transform: rotate(90deg); + -o-transform-origin: 0 0; + transform: rotate(90deg); + transform-origin: 0 0; +} +.layout-expand-title-up { + position: absolute; + top: 0; + left: 0; + text-align: right; + padding-left: 5px; + white-space: nowrap; + word-wrap: normal; + -webkit-transform: rotate(-90deg); + -webkit-transform-origin: 0 0; + -moz-transform: rotate(-90deg); + -moz-transform-origin: 0 0; + -o-transform: rotate(-90deg); + -o-transform-origin: 0 0; + transform: rotate(-90deg); + transform-origin: 0 0; +} +.layout-expand-with-icon { + top: 18px; +} +.layout-expand .panel-body-noheader .layout-expand-title, +.layout-expand .panel-body-noheader .panel-icon { + top: 5px; +} +.layout-expand .panel-body-noheader .layout-expand-with-icon { + top: 23px; +} +.layout-split-proxy-h, +.layout-split-proxy-v { + position: absolute; + font-size: 1px; + display: none; + z-index: 5; +} +.layout-split-proxy-h { + width: 5px; + cursor: e-resize; +} +.layout-split-proxy-v { + height: 5px; + cursor: n-resize; +} +.layout-mask { + position: absolute; + background: #fafafa; + filter: alpha(opacity=10); + opacity: 0.10; + z-index: 4; +} +.layout-button-up { + background: url('images/layout_arrows.png') no-repeat -16px -16px; +} +.layout-button-down { + background: url('images/layout_arrows.png') no-repeat -16px 0; +} +.layout-button-left { + background: url('images/layout_arrows.png') no-repeat 0 0; +} +.layout-button-right { + background: url('images/layout_arrows.png') no-repeat 0 -16px; +} +.layout-split-proxy-h, +.layout-split-proxy-v { + background-color: #bfbfbf; +} +.layout-split-north { + border-bottom: 5px solid #efefef; +} +.layout-split-south { + border-top: 5px solid #efefef; +} +.layout-split-east { + border-left: 5px solid #efefef; +} +.layout-split-west { + border-right: 5px solid #efefef; +} +.layout-expand { + background-color: #f3f3f3; +} +.layout-expand-over { + background-color: #f3f3f3; +} +.tabs-container { + overflow: hidden; +} +.tabs-header { + border-width: 1px; + border-style: solid; + border-bottom-width: 0; + position: relative; + padding: 0; + padding-top: 2px; + overflow: hidden; +} +.tabs-scroller-left, +.tabs-scroller-right { + position: absolute; + top: auto; + bottom: 0; + width: 18px; + font-size: 1px; + display: none; + cursor: pointer; + border-width: 1px; + border-style: solid; +} +.tabs-scroller-left { + left: 0; +} +.tabs-scroller-right { + right: 0; +} +.tabs-tool { + position: absolute; + bottom: 0; + padding: 1px; + overflow: hidden; + border-width: 1px; + border-style: solid; +} +.tabs-header-plain .tabs-tool { + padding: 0 1px; +} +.tabs-wrap { + position: relative; + left: 0; + overflow: hidden; + width: 100%; + margin: 0; + padding: 0; +} +.tabs-scrolling { + margin-left: 18px; + margin-right: 18px; +} +.tabs-disabled { + opacity: 0.3; + filter: alpha(opacity=30); +} +.tabs { + list-style-type: none; + height: 26px; + margin: 0px; + padding: 0px; + padding-left: 4px; + width: 50000px; + border-style: solid; + border-width: 0 0 1px 0; +} +.tabs li { + float: left; + display: inline-block; + margin: 0 4px -1px 0; + padding: 0; + position: relative; + border: 0; +} +.tabs li a.tabs-inner { + display: inline-block; + text-decoration: none; + margin: 0; + padding: 0 10px; + height: 25px; + line-height: 25px; + text-align: center; + white-space: nowrap; + border-width: 1px; + border-style: solid; + -moz-border-radius: 5px 5px 0 0; + -webkit-border-radius: 5px 5px 0 0; + border-radius: 5px 5px 0 0; +} +.tabs li.tabs-selected a.tabs-inner { + font-weight: bold; + outline: none; +} +.tabs li.tabs-selected a:hover.tabs-inner { + cursor: default; + pointer: default; +} +.tabs li a.tabs-close, +.tabs-p-tool { + position: absolute; + font-size: 1px; + display: block; + height: 12px; + padding: 0; + top: 50%; + margin-top: -6px; + overflow: hidden; +} +.tabs li a.tabs-close { + width: 12px; + right: 5px; + opacity: 0.6; + filter: alpha(opacity=60); +} +.tabs-p-tool { + right: 16px; +} +.tabs-p-tool a { + display: inline-block; + font-size: 1px; + width: 12px; + height: 12px; + margin: 0; + opacity: 0.6; + filter: alpha(opacity=60); +} +.tabs li a:hover.tabs-close, +.tabs-p-tool a:hover { + opacity: 1; + filter: alpha(opacity=100); + cursor: hand; + cursor: pointer; +} +.tabs-with-icon { + padding-left: 18px; +} +.tabs-icon { + position: absolute; + width: 16px; + height: 16px; + left: 10px; + top: 50%; + margin-top: -8px; +} +.tabs-title { + font-size: 12px; +} +.tabs-closable { + padding-right: 8px; +} +.tabs-panels { + margin: 0px; + padding: 0px; + border-width: 1px; + border-style: solid; + border-top-width: 0; + overflow: hidden; +} +.tabs-header-bottom { + border-width: 0 1px 1px 1px; + padding: 0 0 2px 0; +} +.tabs-header-bottom .tabs { + border-width: 1px 0 0 0; +} +.tabs-header-bottom .tabs li { + margin: -1px 4px 0 0; +} +.tabs-header-bottom .tabs li a.tabs-inner { + -moz-border-radius: 0 0 5px 5px; + -webkit-border-radius: 0 0 5px 5px; + border-radius: 0 0 5px 5px; +} +.tabs-header-bottom .tabs-tool { + top: 0; +} +.tabs-header-bottom .tabs-scroller-left, +.tabs-header-bottom .tabs-scroller-right { + top: 0; + bottom: auto; +} +.tabs-panels-top { + border-width: 1px 1px 0 1px; +} +.tabs-header-left { + float: left; + border-width: 1px 0 1px 1px; + padding: 0; +} +.tabs-header-right { + float: right; + border-width: 1px 1px 1px 0; + padding: 0; +} +.tabs-header-left .tabs-wrap, +.tabs-header-right .tabs-wrap { + height: 100%; +} +.tabs-header-left .tabs { + height: 100%; + padding: 4px 0 0 2px; + border-width: 0 1px 0 0; +} +.tabs-header-right .tabs { + height: 100%; + padding: 4px 2px 0 0; + border-width: 0 0 0 1px; +} +.tabs-header-left .tabs li, +.tabs-header-right .tabs li { + display: block; + width: 100%; + position: relative; +} +.tabs-header-left .tabs li { + left: auto; + right: 0; + margin: 0 -1px 4px 0; + float: right; +} +.tabs-header-right .tabs li { + left: 0; + right: auto; + margin: 0 0 4px -1px; + float: left; +} +.tabs-justified li a.tabs-inner { + padding-left: 0; + padding-right: 0; +} +.tabs-header-left .tabs li a.tabs-inner { + display: block; + text-align: left; + padding-left: 10px; + padding-right: 10px; + -moz-border-radius: 5px 0 0 5px; + -webkit-border-radius: 5px 0 0 5px; + border-radius: 5px 0 0 5px; +} +.tabs-header-right .tabs li a.tabs-inner { + display: block; + text-align: left; + padding-left: 10px; + padding-right: 10px; + -moz-border-radius: 0 5px 5px 0; + -webkit-border-radius: 0 5px 5px 0; + border-radius: 0 5px 5px 0; +} +.tabs-panels-right { + float: right; + border-width: 1px 1px 1px 0; +} +.tabs-panels-left { + float: left; + border-width: 1px 0 1px 1px; +} +.tabs-header-noborder, +.tabs-panels-noborder { + border: 0px; +} +.tabs-header-plain { + border: 0px; + background: transparent; +} +.tabs-pill { + padding-bottom: 3px; +} +.tabs-header-bottom .tabs-pill { + padding-top: 3px; + padding-bottom: 0; +} +.tabs-header-left .tabs-pill { + padding-right: 3px; +} +.tabs-header-right .tabs-pill { + padding-left: 3px; +} +.tabs-header .tabs-pill li a.tabs-inner { + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.tabs-header-narrow, +.tabs-header-narrow .tabs-narrow { + padding: 0; +} +.tabs-narrow li, +.tabs-header-bottom .tabs-narrow li { + margin-left: 0; + margin-right: -1px; +} +.tabs-narrow li.tabs-last, +.tabs-header-bottom .tabs-narrow li.tabs-last { + margin-right: 0; +} +.tabs-header-left .tabs-narrow, +.tabs-header-right .tabs-narrow { + padding-top: 0; +} +.tabs-header-left .tabs-narrow li { + margin-bottom: -1px; + margin-right: -1px; +} +.tabs-header-left .tabs-narrow li.tabs-last, +.tabs-header-right .tabs-narrow li.tabs-last { + margin-bottom: 0; +} +.tabs-header-right .tabs-narrow li { + margin-bottom: -1px; + margin-left: -1px; +} +.tabs-scroller-left { + background: #f3f3f3 url('images/tabs_icons.png') no-repeat 1px center; +} +.tabs-scroller-right { + background: #f3f3f3 url('images/tabs_icons.png') no-repeat -15px center; +} +.tabs li a.tabs-close { + background: url('images/tabs_icons.png') no-repeat -34px center; +} +.tabs li a.tabs-inner:hover { + background: #e2e2e2; + color: #000000; + filter: none; +} +.tabs li.tabs-selected a.tabs-inner { + background-color: #ffffff; + color: #575765; + background: -webkit-linear-gradient(top,#F8F8F8 0,#ffffff 100%); + background: -moz-linear-gradient(top,#F8F8F8 0,#ffffff 100%); + background: -o-linear-gradient(top,#F8F8F8 0,#ffffff 100%); + background: linear-gradient(to bottom,#F8F8F8 0,#ffffff 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#F8F8F8,endColorstr=#ffffff,GradientType=0); +} +.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { + background: -webkit-linear-gradient(top,#ffffff 0,#F8F8F8 100%); + background: -moz-linear-gradient(top,#ffffff 0,#F8F8F8 100%); + background: -o-linear-gradient(top,#ffffff 0,#F8F8F8 100%); + background: linear-gradient(to bottom,#ffffff 0,#F8F8F8 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#F8F8F8,GradientType=0); +} +.tabs-header-left .tabs li.tabs-selected a.tabs-inner { + background: -webkit-linear-gradient(left,#F8F8F8 0,#ffffff 100%); + background: -moz-linear-gradient(left,#F8F8F8 0,#ffffff 100%); + background: -o-linear-gradient(left,#F8F8F8 0,#ffffff 100%); + background: linear-gradient(to right,#F8F8F8 0,#ffffff 100%); + background-repeat: repeat-y; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#F8F8F8,endColorstr=#ffffff,GradientType=1); +} +.tabs-header-right .tabs li.tabs-selected a.tabs-inner { + background: -webkit-linear-gradient(left,#ffffff 0,#F8F8F8 100%); + background: -moz-linear-gradient(left,#ffffff 0,#F8F8F8 100%); + background: -o-linear-gradient(left,#ffffff 0,#F8F8F8 100%); + background: linear-gradient(to right,#ffffff 0,#F8F8F8 100%); + background-repeat: repeat-y; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#F8F8F8,GradientType=1); +} +.tabs li a.tabs-inner { + color: #575765; + background-color: #f3f3f3; + background: -webkit-linear-gradient(top,#F8F8F8 0,#eeeeee 100%); + background: -moz-linear-gradient(top,#F8F8F8 0,#eeeeee 100%); + background: -o-linear-gradient(top,#F8F8F8 0,#eeeeee 100%); + background: linear-gradient(to bottom,#F8F8F8 0,#eeeeee 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#F8F8F8,endColorstr=#eeeeee,GradientType=0); +} +.tabs-header, +.tabs-tool { + background-color: #f3f3f3; +} +.tabs-header-plain { + background: transparent; +} +.tabs-header, +.tabs-scroller-left, +.tabs-scroller-right, +.tabs-tool, +.tabs, +.tabs-panels, +.tabs li a.tabs-inner, +.tabs li.tabs-selected a.tabs-inner, +.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner, +.tabs-header-left .tabs li.tabs-selected a.tabs-inner, +.tabs-header-right .tabs li.tabs-selected a.tabs-inner { + border-color: #D3D3D3; +} +.tabs-p-tool a:hover, +.tabs li a:hover.tabs-close, +.tabs-scroller-over { + background-color: #e2e2e2; +} +.tabs li.tabs-selected a.tabs-inner { + border-bottom: 1px solid #ffffff; +} +.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { + border-top: 1px solid #ffffff; +} +.tabs-header-left .tabs li.tabs-selected a.tabs-inner { + border-right: 1px solid #ffffff; +} +.tabs-header-right .tabs li.tabs-selected a.tabs-inner { + border-left: 1px solid #ffffff; +} +.tabs-header .tabs-pill li.tabs-selected a.tabs-inner { + background: #0092DC; + color: #fff; + filter: none; + border-color: #D3D3D3; +} +.datagrid .panel-body { + overflow: hidden; + position: relative; +} +.datagrid-view { + position: relative; + overflow: hidden; +} +.datagrid-view1, +.datagrid-view2 { + position: absolute; + overflow: hidden; + top: 0; +} +.datagrid-view1 { + left: 0; +} +.datagrid-view2 { + right: 0; +} +.datagrid-mask { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + opacity: 0.3; + filter: alpha(opacity=30); + display: none; +} +.datagrid-mask-msg { + position: absolute; + top: 50%; + margin-top: -20px; + padding: 10px 5px 10px 30px; + width: auto; + height: 16px; + border-width: 2px; + border-style: solid; + display: none; +} +.datagrid-empty { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 25px; + line-height: 25px; + text-align: center; +} +.datagrid-sort-icon { + padding: 0; + display: none; +} +.datagrid-toolbar { + height: auto; + padding: 1px 2px; + border-width: 0 0 1px 0; + border-style: solid; +} +.datagrid-btn-separator { + float: left; + height: 24px; + border-left: 1px solid #ccc; + border-right: 1px solid #fff; + margin: 2px 1px; +} +.datagrid .datagrid-pager { + display: block; + margin: 0; + border-width: 1px 0 0 0; + border-style: solid; +} +.datagrid .datagrid-pager-top { + border-width: 0 0 1px 0; +} +.datagrid-header { + overflow: hidden; + cursor: default; + border-width: 0 0 1px 0; + border-style: solid; +} +.datagrid-header-inner { + float: left; + width: 10000px; +} +.datagrid-header-row, +.datagrid-row { + height: 25px; +} +.datagrid-header td, +.datagrid-body td, +.datagrid-footer td { + border-width: 0 1px 1px 0; + border-style: dotted; + margin: 0; + padding: 0; +} +.datagrid-cell, +.datagrid-cell-group, +.datagrid-header-rownumber, +.datagrid-cell-rownumber { + margin: 0; + padding: 0 4px; + white-space: nowrap; + word-wrap: normal; + overflow: hidden; + height: 18px; + line-height: 18px; + font-size: 12px; +} +.datagrid-header .datagrid-cell { + height: auto; +} +.datagrid-header .datagrid-cell span { + font-size: 12px; +} +.datagrid-cell-group { + text-align: center; + text-overflow: ellipsis; +} +.datagrid-header-rownumber, +.datagrid-cell-rownumber { + width: 30px; + text-align: center; + margin: 0; + padding: 0; +} +.datagrid-body { + margin: 0; + padding: 0; + overflow: auto; + zoom: 1; +} +.datagrid-view1 .datagrid-body-inner { + padding-bottom: 20px; +} +.datagrid-view1 .datagrid-body { + overflow: hidden; +} +.datagrid-footer { + overflow: hidden; +} +.datagrid-footer-inner { + border-width: 1px 0 0 0; + border-style: solid; + width: 10000px; + float: left; +} +.datagrid-row-editing .datagrid-cell { + height: auto; +} +.datagrid-header-check, +.datagrid-cell-check { + padding: 0; + width: 27px; + height: 18px; + font-size: 1px; + text-align: center; + overflow: hidden; +} +.datagrid-header-check input, +.datagrid-cell-check input { + margin: 0; + padding: 0; + width: 15px; + height: 18px; +} +.datagrid-resize-proxy { + position: absolute; + width: 1px; + height: 10000px; + top: 0; + cursor: e-resize; + display: none; +} +.datagrid-body .datagrid-editable { + margin: 0; + padding: 0; +} +.datagrid-body .datagrid-editable table { + width: 100%; + height: 100%; +} +.datagrid-body .datagrid-editable td { + border: 0; + margin: 0; + padding: 0; +} +.datagrid-view .datagrid-editable-input { + margin: 0; + padding: 2px 4px; + border: 1px solid #D3D3D3; + font-size: 12px; + outline-style: none; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.datagrid-view .validatebox-invalid { + border-color: #ffa8a8; +} +.datagrid-sort .datagrid-sort-icon { + display: inline; + padding: 0 13px 0 0; + background: url('images/datagrid_icons.png') no-repeat -64px center; +} +.datagrid-sort-desc .datagrid-sort-icon { + display: inline; + padding: 0 13px 0 0; + background: url('images/datagrid_icons.png') no-repeat -16px center; +} +.datagrid-sort-asc .datagrid-sort-icon { + display: inline; + padding: 0 13px 0 0; + background: url('images/datagrid_icons.png') no-repeat 0px center; +} +.datagrid-row-collapse { + background: url('images/datagrid_icons.png') no-repeat -48px center; +} +.datagrid-row-expand { + background: url('images/datagrid_icons.png') no-repeat -32px center; +} +.datagrid-mask-msg { + background: #ffffff url('images/loading.gif') no-repeat scroll 5px center; +} +.datagrid-header, +.datagrid-td-rownumber { + background-color: #fafafa; + background: -webkit-linear-gradient(top,#fdfdfd 0,#f5f5f5 100%); + background: -moz-linear-gradient(top,#fdfdfd 0,#f5f5f5 100%); + background: -o-linear-gradient(top,#fdfdfd 0,#f5f5f5 100%); + background: linear-gradient(to bottom,#fdfdfd 0,#f5f5f5 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#fdfdfd,endColorstr=#f5f5f5,GradientType=0); +} +.datagrid-cell-rownumber { + color: #000000; +} +.datagrid-resize-proxy { + background: #bfbfbf; +} +.datagrid-mask { + background: #ccc; +} +.datagrid-mask-msg { + border-color: #D3D3D3; +} +.datagrid-toolbar, +.datagrid-pager { + background: #fafafa; +} +.datagrid-header, +.datagrid-toolbar, +.datagrid-pager, +.datagrid-footer-inner { + border-color: #ddd; +} +.datagrid-header td, +.datagrid-body td, +.datagrid-footer td { + border-color: #ccc; +} +.datagrid-htable, +.datagrid-btable, +.datagrid-ftable { + color: #000000; + border-collapse: separate; +} +.datagrid-row-alt { + background: #fafafa; +} +.datagrid-row-over, +.datagrid-header td.datagrid-header-over { + background: #e2e2e2; + color: #000000; + cursor: default; +} +.datagrid-row-selected { + background: #0092DC; + color: #fff; +} +.datagrid-row-editing .textbox, +.datagrid-row-editing .textbox-text { + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.propertygrid .datagrid-view1 .datagrid-body td { + padding-bottom: 1px; + border-width: 0 1px 0 0; +} +.propertygrid .datagrid-group { + height: 21px; + overflow: hidden; + border-width: 0 0 1px 0; + border-style: solid; +} +.propertygrid .datagrid-group span { + font-weight: bold; +} +.propertygrid .datagrid-view1 .datagrid-body td { + border-color: #ddd; +} +.propertygrid .datagrid-view1 .datagrid-group { + border-color: #f3f3f3; +} +.propertygrid .datagrid-view2 .datagrid-group { + border-color: #ddd; +} +.propertygrid .datagrid-group, +.propertygrid .datagrid-view1 .datagrid-body, +.propertygrid .datagrid-view1 .datagrid-row-over, +.propertygrid .datagrid-view1 .datagrid-row-selected { + background: #f3f3f3; +} +.datalist .datagrid-header { + border-width: 0; +} +.datalist .datagrid-group, +.m-list .m-list-group { + height: 25px; + line-height: 25px; + font-weight: bold; + overflow: hidden; + background-color: #fafafa; + border-style: solid; + border-width: 0 0 1px 0; + border-color: #ccc; +} +.datalist .datagrid-group-expander { + display: none; +} +.datalist .datagrid-group-title { + padding: 0 4px; +} +.datalist .datagrid-btable { + width: 100%; + table-layout: fixed; +} +.datalist .datagrid-row td { + border-style: solid; + border-left-color: transparent; + border-right-color: transparent; + border-bottom-width: 0; +} +.datalist-lines .datagrid-row td { + border-bottom-width: 1px; +} +.datalist .datagrid-cell, +.m-list li { + width: auto; + height: auto; + padding: 2px 4px; + line-height: 18px; + position: relative; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; +} +.datalist-link, +.m-list li>a { + display: block; + position: relative; + cursor: pointer; + color: #000000; + text-decoration: none; + overflow: hidden; + margin: -2px -4px; + padding: 2px 4px; + padding-right: 16px; + line-height: 18px; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; +} +.datalist-link::after, +.m-list li>a::after { + position: absolute; + display: block; + width: 8px; + height: 8px; + content: ''; + right: 6px; + top: 50%; + margin-top: -4px; + border-style: solid; + border-width: 1px 1px 0 0; + -ms-transform: rotate(45deg); + -moz-transform: rotate(45deg); + -webkit-transform: rotate(45deg); + -o-transform: rotate(45deg); + transform: rotate(45deg); +} +.m-list { + margin: 0; + padding: 0; + list-style: none; +} +.m-list li { + border-style: solid; + border-width: 0 0 1px 0; + border-color: #ccc; +} +.m-list li>a:hover { + background: #e2e2e2; + color: #000000; +} +.m-list .m-list-group { + padding: 0 4px; +} +.pagination { + zoom: 1; +} +.pagination table { + float: left; + height: 30px; +} +.pagination td { + border: 0; +} +.pagination-btn-separator { + float: left; + height: 24px; + border-left: 1px solid #ccc; + border-right: 1px solid #fff; + margin: 3px 1px; +} +.pagination .pagination-num { + border-width: 1px; + border-style: solid; + margin: 0 2px; + padding: 2px; + width: 2em; + height: auto; +} +.pagination-page-list { + margin: 0px 6px; + padding: 1px 2px; + width: auto; + height: auto; + border-width: 1px; + border-style: solid; +} +.pagination-info { + float: right; + margin: 0 6px; + padding: 0; + height: 30px; + line-height: 30px; + font-size: 12px; +} +.pagination span { + font-size: 12px; +} +.pagination-link .l-btn-text { + width: 24px; + text-align: center; + margin: 0; +} +.pagination-first { + background: url('images/pagination_icons.png') no-repeat 0 center; +} +.pagination-prev { + background: url('images/pagination_icons.png') no-repeat -16px center; +} +.pagination-next { + background: url('images/pagination_icons.png') no-repeat -32px center; +} +.pagination-last { + background: url('images/pagination_icons.png') no-repeat -48px center; +} +.pagination-load { + background: url('images/pagination_icons.png') no-repeat -64px center; +} +.pagination-loading { + background: url('images/loading.gif') no-repeat center center; +} +.pagination-page-list, +.pagination .pagination-num { + border-color: #D3D3D3; +} +.calendar { + border-width: 1px; + border-style: solid; + padding: 1px; + overflow: hidden; +} +.calendar table { + table-layout: fixed; + border-collapse: separate; + font-size: 12px; + width: 100%; + height: 100%; +} +.calendar table td, +.calendar table th { + font-size: 12px; +} +.calendar-noborder { + border: 0; +} +.calendar-header { + position: relative; + height: 22px; +} +.calendar-title { + text-align: center; + height: 22px; +} +.calendar-title span { + position: relative; + display: inline-block; + top: 2px; + padding: 0 3px; + height: 18px; + line-height: 18px; + font-size: 12px; + cursor: pointer; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-prevmonth, +.calendar-nextmonth, +.calendar-prevyear, +.calendar-nextyear { + position: absolute; + top: 50%; + margin-top: -7px; + width: 14px; + height: 14px; + cursor: pointer; + font-size: 1px; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-prevmonth { + left: 20px; + background: url('images/calendar_arrows.png') no-repeat -18px -2px; +} +.calendar-nextmonth { + right: 20px; + background: url('images/calendar_arrows.png') no-repeat -34px -2px; +} +.calendar-prevyear { + left: 3px; + background: url('images/calendar_arrows.png') no-repeat -1px -2px; +} +.calendar-nextyear { + right: 3px; + background: url('images/calendar_arrows.png') no-repeat -49px -2px; +} +.calendar-body { + position: relative; +} +.calendar-body th, +.calendar-body td { + text-align: center; +} +.calendar-day { + border: 0; + padding: 1px; + cursor: pointer; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-other-month { + opacity: 0.3; + filter: alpha(opacity=30); +} +.calendar-disabled { + opacity: 0.6; + filter: alpha(opacity=60); + cursor: default; +} +.calendar-menu { + position: absolute; + top: 0; + left: 0; + width: 180px; + height: 150px; + padding: 5px; + font-size: 12px; + display: none; + overflow: hidden; +} +.calendar-menu-year-inner { + text-align: center; + padding-bottom: 5px; +} +.calendar-menu-year { + width: 50px; + text-align: center; + border-width: 1px; + border-style: solid; + outline-style: none; + resize: none; + margin: 0; + padding: 2px; + font-weight: bold; + font-size: 12px; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-menu-prev, +.calendar-menu-next { + display: inline-block; + width: 21px; + height: 21px; + vertical-align: top; + cursor: pointer; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-menu-prev { + margin-right: 10px; + background: url('images/calendar_arrows.png') no-repeat 2px 2px; +} +.calendar-menu-next { + margin-left: 10px; + background: url('images/calendar_arrows.png') no-repeat -45px 2px; +} +.calendar-menu-month { + text-align: center; + cursor: pointer; + font-weight: bold; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-body th, +.calendar-menu-month { + color: #4d4d4d; +} +.calendar-day { + color: #000000; +} +.calendar-sunday { + color: #CC2222; +} +.calendar-saturday { + color: #00ee00; +} +.calendar-today { + color: #0000ff; +} +.calendar-menu-year { + border-color: #D3D3D3; +} +.calendar { + border-color: #D3D3D3; +} +.calendar-header { + background: #f3f3f3; +} +.calendar-body, +.calendar-menu { + background: #ffffff; +} +.calendar-body th { + background: #fafafa; + padding: 2px 0; +} +.calendar-hover, +.calendar-nav-hover, +.calendar-menu-hover { + background-color: #e2e2e2; + color: #000000; +} +.calendar-hover { + border: 1px solid #ccc; + padding: 0; +} +.calendar-selected { + background-color: #0092DC; + color: #fff; + border: 1px solid #0070a9; + padding: 0; +} +.datebox-calendar-inner { + height: 180px; +} +.datebox-button { + padding: 0 5px; + text-align: center; +} +.datebox-button a { + line-height: 22px; + font-size: 12px; + font-weight: bold; + text-decoration: none; + opacity: 0.6; + filter: alpha(opacity=60); +} +.datebox-button a:hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.datebox-current, +.datebox-close { + float: left; +} +.datebox-close { + float: right; +} +.datebox .combo-arrow { + background-image: url('images/datebox_arrow.png'); + background-position: center center; +} +.datebox-button { + background-color: #fafafa; +} +.datebox-button a { + color: #444; +} +.spinner-arrow { + background-color: #f3f3f3; + display: inline-block; + overflow: hidden; + vertical-align: top; + margin: 0; + padding: 0; + opacity: 1.0; + filter: alpha(opacity=100); + width: 18px; +} +.spinner-arrow-up, +.spinner-arrow-down { + opacity: 0.6; + filter: alpha(opacity=60); + display: block; + font-size: 1px; + width: 18px; + height: 10px; + width: 100%; + height: 50%; + color: #444; + outline-style: none; +} +.spinner-arrow-hover { + background-color: #e2e2e2; + opacity: 1.0; + filter: alpha(opacity=100); +} +.spinner-arrow-up:hover, +.spinner-arrow-down:hover { + opacity: 1.0; + filter: alpha(opacity=100); + background-color: #e2e2e2; +} +.textbox-icon-disabled .spinner-arrow-up:hover, +.textbox-icon-disabled .spinner-arrow-down:hover { + opacity: 0.6; + filter: alpha(opacity=60); + background-color: #f3f3f3; + cursor: default; +} +.spinner .textbox-icon-disabled { + opacity: 0.6; + filter: alpha(opacity=60); +} +.spinner-arrow-up { + background: url('images/spinner_arrows.png') no-repeat 1px center; +} +.spinner-arrow-down { + background: url('images/spinner_arrows.png') no-repeat -15px center; +} +.spinner-button-up { + background: url('images/spinner_arrows.png') no-repeat -32px center; +} +.spinner-button-down { + background: url('images/spinner_arrows.png') no-repeat -48px center; +} +.progressbar { + border-width: 1px; + border-style: solid; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; + overflow: hidden; + position: relative; +} +.progressbar-text { + text-align: center; + position: absolute; +} +.progressbar-value { + position: relative; + overflow: hidden; + width: 0; + -moz-border-radius: 5px 0 0 5px; + -webkit-border-radius: 5px 0 0 5px; + border-radius: 5px 0 0 5px; +} +.progressbar { + border-color: #D3D3D3; +} +.progressbar-text { + color: #000000; + font-size: 12px; +} +.progressbar-value .progressbar-text { + background-color: #0092DC; + color: #fff; +} +.searchbox-button { + width: 18px; + height: 20px; + overflow: hidden; + display: inline-block; + vertical-align: top; + cursor: pointer; + opacity: 0.6; + filter: alpha(opacity=60); +} +.searchbox-button-hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.searchbox .l-btn-plain { + border: 0; + padding: 0; + vertical-align: top; + opacity: 0.6; + filter: alpha(opacity=60); + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox .l-btn-plain:hover { + border: 0; + padding: 0; + opacity: 1.0; + filter: alpha(opacity=100); + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox a.m-btn-plain-active { + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox .m-btn-active { + border-width: 0 1px 0 0; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox .textbox-button-right { + border-width: 0 0 0 1px; +} +.searchbox .textbox-button-left { + border-width: 0 1px 0 0; +} +.searchbox-button { + background: url('images/searchbox_button.png') no-repeat center center; +} +.searchbox .l-btn-plain { + background: #f3f3f3; +} +.searchbox .l-btn-plain-disabled, +.searchbox .l-btn-plain-disabled:hover { + opacity: 0.5; + filter: alpha(opacity=50); +} +.slider-disabled { + opacity: 0.5; + filter: alpha(opacity=50); +} +.slider-h { + height: 22px; +} +.slider-v { + width: 22px; +} +.slider-inner { + position: relative; + height: 6px; + top: 7px; + border-width: 1px; + border-style: solid; + border-radius: 5px; +} +.slider-handle { + position: absolute; + display: block; + outline: none; + width: 20px; + height: 20px; + top: 50%; + margin-top: -10px; + margin-left: -10px; +} +.slider-tip { + position: absolute; + display: inline-block; + line-height: 12px; + font-size: 12px; + white-space: nowrap; + top: -22px; +} +.slider-rule { + position: relative; + top: 15px; +} +.slider-rule span { + position: absolute; + display: inline-block; + font-size: 0; + height: 5px; + border-width: 0 0 0 1px; + border-style: solid; +} +.slider-rulelabel { + position: relative; + top: 20px; +} +.slider-rulelabel span { + position: absolute; + display: inline-block; + font-size: 12px; +} +.slider-v .slider-inner { + width: 6px; + left: 7px; + top: 0; + float: left; +} +.slider-v .slider-handle { + left: 50%; + margin-top: -10px; +} +.slider-v .slider-tip { + left: -10px; + margin-top: -6px; +} +.slider-v .slider-rule { + float: left; + top: 0; + left: 16px; +} +.slider-v .slider-rule span { + width: 5px; + height: 'auto'; + border-left: 0; + border-width: 1px 0 0 0; + border-style: solid; +} +.slider-v .slider-rulelabel { + float: left; + top: 0; + left: 23px; +} +.slider-handle { + background: url('images/slider_handle.png') no-repeat; +} +.slider-inner { + border-color: #D3D3D3; + background: #f3f3f3; +} +.slider-rule span { + border-color: #D3D3D3; +} +.slider-rulelabel span { + color: #000000; +} +.menu { + position: absolute; + margin: 0; + padding: 2px; + border-width: 1px; + border-style: solid; + overflow: hidden; +} +.menu-inline { + position: relative; +} +.menu-item { + position: relative; + margin: 0; + padding: 0; + overflow: hidden; + white-space: nowrap; + cursor: pointer; + border-width: 1px; + border-style: solid; +} +.menu-text { + height: 20px; + line-height: 20px; + float: left; + padding-left: 28px; +} +.menu-icon { + position: absolute; + width: 16px; + height: 16px; + left: 2px; + top: 50%; + margin-top: -8px; +} +.menu-rightarrow { + position: absolute; + width: 16px; + height: 16px; + right: 0; + top: 50%; + margin-top: -8px; +} +.menu-line { + position: absolute; + left: 26px; + top: 0; + height: 2000px; + font-size: 1px; +} +.menu-sep { + margin: 3px 0px 3px 25px; + font-size: 1px; +} +.menu-noline .menu-line { + display: none; +} +.menu-noline .menu-sep { + margin-left: 0; + margin-right: 0; +} +.menu-active { + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.menu-item-disabled { + opacity: 0.5; + filter: alpha(opacity=50); + cursor: default; +} +.menu-text, +.menu-text span { + font-size: 12px; +} +.menu-shadow { + position: absolute; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; + background: #ccc; + -moz-box-shadow: 2px 2px 3px #cccccc; + -webkit-box-shadow: 2px 2px 3px #cccccc; + box-shadow: 2px 2px 3px #cccccc; + filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); +} +.menu-rightarrow { + background: url('images/menu_arrows.png') no-repeat -32px center; +} +.menu-line { + border-left: 1px solid #ccc; + border-right: 1px solid #fff; +} +.menu-sep { + border-top: 1px solid #ccc; + border-bottom: 1px solid #fff; +} +.menu { + background-color: #f3f3f3; + border-color: #D3D3D3; + color: #444; +} +.menu-content { + background: #ffffff; +} +.menu-item { + border-color: transparent; + _border-color: #f3f3f3; +} +.menu-active { + border-color: #ccc; + color: #000000; + background: #e2e2e2; +} +.menu-active-disabled { + border-color: transparent; + background: transparent; + color: #444; +} +.m-btn-downarrow, +.s-btn-downarrow { + display: inline-block; + position: absolute; + width: 16px; + height: 16px; + font-size: 1px; + right: 0; + top: 50%; + margin-top: -8px; +} +.m-btn-active, +.s-btn-active { + background: #e2e2e2; + color: #000000; + border: 1px solid #ccc; + filter: none; +} +.m-btn-plain-active, +.s-btn-plain-active { + background: transparent; + padding: 0; + border-width: 1px; + border-style: solid; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.m-btn .l-btn-left .l-btn-text { + margin-right: 20px; +} +.m-btn .l-btn-icon-right .l-btn-text { + margin-right: 40px; +} +.m-btn .l-btn-icon-right .l-btn-icon { + right: 20px; +} +.m-btn .l-btn-icon-top .l-btn-text { + margin-right: 4px; + margin-bottom: 14px; +} +.m-btn .l-btn-icon-bottom .l-btn-text { + margin-right: 4px; + margin-bottom: 34px; +} +.m-btn .l-btn-icon-bottom .l-btn-icon { + top: auto; + bottom: 20px; +} +.m-btn .l-btn-icon-top .m-btn-downarrow, +.m-btn .l-btn-icon-bottom .m-btn-downarrow { + top: auto; + bottom: 0px; + left: 50%; + margin-left: -8px; +} +.m-btn-line { + display: inline-block; + position: absolute; + font-size: 1px; + display: none; +} +.m-btn .l-btn-left .m-btn-line { + right: 0; + width: 16px; + height: 500px; + border-style: solid; + border-color: #bfbfbf; + border-width: 0 0 0 1px; +} +.m-btn .l-btn-icon-top .m-btn-line, +.m-btn .l-btn-icon-bottom .m-btn-line { + left: 0; + bottom: 0; + width: 500px; + height: 16px; + border-width: 1px 0 0 0; +} +.m-btn-large .l-btn-icon-right .l-btn-text { + margin-right: 56px; +} +.m-btn-large .l-btn-icon-bottom .l-btn-text { + margin-bottom: 50px; +} +.m-btn-downarrow, +.s-btn-downarrow { + background: url('images/menu_arrows.png') no-repeat 0 center; +} +.m-btn-plain-active, +.s-btn-plain-active { + border-color: #ccc; + background-color: #e2e2e2; + color: #000000; +} +.s-btn:hover .m-btn-line, +.s-btn-active .m-btn-line, +.s-btn-plain-active .m-btn-line { + display: inline-block; +} +.l-btn:hover .s-btn-downarrow, +.s-btn-active .s-btn-downarrow, +.s-btn-plain-active .s-btn-downarrow { + border-style: solid; + border-color: #bfbfbf; + border-width: 0 0 0 1px; +} +.messager-body { + padding: 10px 10px 30px 10px; + overflow: auto; +} +.messager-button { + text-align: center; + padding: 5px; +} +.messager-button .l-btn { + width: 70px; +} +.messager-icon { + float: left; + width: 32px; + height: 32px; + margin: 0 10px 10px 0; +} +.messager-error { + background: url('images/messager_icons.png') no-repeat scroll -64px 0; +} +.messager-info { + background: url('images/messager_icons.png') no-repeat scroll 0 0; +} +.messager-question { + background: url('images/messager_icons.png') no-repeat scroll -32px 0; +} +.messager-warning { + background: url('images/messager_icons.png') no-repeat scroll -96px 0; +} +.messager-progress { + padding: 10px; +} +.messager-p-msg { + margin-bottom: 5px; +} +.messager-body .messager-input { + width: 100%; + padding: 4px 0; + outline-style: none; + border: 1px solid #D3D3D3; +} +.window-thinborder .messager-button { + padding-bottom: 8px; +} +.tree { + margin: 0; + padding: 0; + list-style-type: none; +} +.tree li { + white-space: nowrap; +} +.tree li ul { + list-style-type: none; + margin: 0; + padding: 0; +} +.tree-node { + height: 18px; + white-space: nowrap; + cursor: pointer; +} +.tree-hit { + cursor: pointer; +} +.tree-expanded, +.tree-collapsed, +.tree-folder, +.tree-file, +.tree-checkbox, +.tree-indent { + display: inline-block; + width: 16px; + height: 18px; + vertical-align: top; + overflow: hidden; +} +.tree-expanded { + background: url('images/tree_icons.png') no-repeat -18px 0px; +} +.tree-expanded-hover { + background: url('images/tree_icons.png') no-repeat -50px 0px; +} +.tree-collapsed { + background: url('images/tree_icons.png') no-repeat 0px 0px; +} +.tree-collapsed-hover { + background: url('images/tree_icons.png') no-repeat -32px 0px; +} +.tree-lines .tree-expanded, +.tree-lines .tree-root-first .tree-expanded { + background: url('images/tree_icons.png') no-repeat -144px 0; +} +.tree-lines .tree-collapsed, +.tree-lines .tree-root-first .tree-collapsed { + background: url('images/tree_icons.png') no-repeat -128px 0; +} +.tree-lines .tree-node-last .tree-expanded, +.tree-lines .tree-root-one .tree-expanded { + background: url('images/tree_icons.png') no-repeat -80px 0; +} +.tree-lines .tree-node-last .tree-collapsed, +.tree-lines .tree-root-one .tree-collapsed { + background: url('images/tree_icons.png') no-repeat -64px 0; +} +.tree-line { + background: url('images/tree_icons.png') no-repeat -176px 0; +} +.tree-join { + background: url('images/tree_icons.png') no-repeat -192px 0; +} +.tree-joinbottom { + background: url('images/tree_icons.png') no-repeat -160px 0; +} +.tree-folder { + background: url('images/tree_icons.png') no-repeat -208px 0; +} +.tree-folder-open { + background: url('images/tree_icons.png') no-repeat -224px 0; +} +.tree-file { + background: url('images/tree_icons.png') no-repeat -240px 0; +} +.tree-loading { + background: url('images/loading.gif') no-repeat center center; +} +.tree-checkbox0 { + background: url('images/tree_icons.png') no-repeat -208px -18px; +} +.tree-checkbox1 { + background: url('images/tree_icons.png') no-repeat -224px -18px; +} +.tree-checkbox2 { + background: url('images/tree_icons.png') no-repeat -240px -18px; +} +.tree-title { + font-size: 12px; + display: inline-block; + text-decoration: none; + vertical-align: top; + white-space: nowrap; + padding: 0 2px; + height: 18px; + line-height: 18px; +} +.tree-node-proxy { + font-size: 12px; + line-height: 20px; + padding: 0 2px 0 20px; + border-width: 1px; + border-style: solid; + z-index: 9900000; +} +.tree-dnd-icon { + display: inline-block; + position: absolute; + width: 16px; + height: 18px; + left: 2px; + top: 50%; + margin-top: -9px; +} +.tree-dnd-yes { + background: url('images/tree_icons.png') no-repeat -256px 0; +} +.tree-dnd-no { + background: url('images/tree_icons.png') no-repeat -256px -18px; +} +.tree-node-top { + border-top: 1px dotted red; +} +.tree-node-bottom { + border-bottom: 1px dotted red; +} +.tree-node-append .tree-title { + border: 1px dotted red; +} +.tree-editor { + border: 1px solid #D3D3D3; + font-size: 12px; + line-height: 16px; + padding: 0 4px; + margin: 0; + width: 80px; + outline-style: none; + vertical-align: top; + position: absolute; + top: 0; +} +.tree-node-proxy { + background-color: #ffffff; + color: #000000; + border-color: #D3D3D3; +} +.tree-node-hover { + background: #e2e2e2; + color: #000000; +} +.tree-node-selected { + background: #0092DC; + color: #fff; +} +.tree-node-hidden { + display: none; +} +.validatebox-invalid { + border-color: #ffa8a8; + background-color: #fff3f3; + color: #000; +} +.tooltip { + position: absolute; + display: none; + z-index: 9900000; + outline: none; + opacity: 1; + filter: alpha(opacity=100); + padding: 5px; + border-width: 1px; + border-style: solid; + border-radius: 5px; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.tooltip-content { + font-size: 12px; +} +.tooltip-arrow-outer, +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; + line-height: 0; + font-size: 0; + border-style: solid; + border-width: 6px; + border-color: transparent; + _border-color: tomato; + _filter: chroma(color=tomato); +} +.tooltip-arrow { + display: none \9; +} +.tooltip-right .tooltip-arrow-outer { + left: 0; + top: 50%; + margin: -6px 0 0 -13px; +} +.tooltip-right .tooltip-arrow { + left: 0; + top: 50%; + margin: -6px 0 0 -12px; +} +.tooltip-left .tooltip-arrow-outer { + right: 0; + top: 50%; + margin: -6px -13px 0 0; +} +.tooltip-left .tooltip-arrow { + right: 0; + top: 50%; + margin: -6px -12px 0 0; +} +.tooltip-top .tooltip-arrow-outer { + bottom: 0; + left: 50%; + margin: 0 0 -13px -6px; +} +.tooltip-top .tooltip-arrow { + bottom: 0; + left: 50%; + margin: 0 0 -12px -6px; +} +.tooltip-bottom .tooltip-arrow-outer { + top: 0; + left: 50%; + margin: -13px 0 0 -6px; +} +.tooltip-bottom .tooltip-arrow { + top: 0; + left: 50%; + margin: -12px 0 0 -6px; +} +.tooltip { + background-color: #ffffff; + border-color: #D3D3D3; + color: #000000; +} +.tooltip-right .tooltip-arrow-outer { + border-right-color: #D3D3D3; +} +.tooltip-right .tooltip-arrow { + border-right-color: #ffffff; +} +.tooltip-left .tooltip-arrow-outer { + border-left-color: #D3D3D3; +} +.tooltip-left .tooltip-arrow { + border-left-color: #ffffff; +} +.tooltip-top .tooltip-arrow-outer { + border-top-color: #D3D3D3; +} +.tooltip-top .tooltip-arrow { + border-top-color: #ffffff; +} +.tooltip-bottom .tooltip-arrow-outer { + border-bottom-color: #D3D3D3; +} +.tooltip-bottom .tooltip-arrow { + border-bottom-color: #ffffff; +} +.switchbutton { + text-decoration: none; + display: inline-block; + overflow: hidden; + vertical-align: middle; + margin: 0; + padding: 0; + cursor: pointer; + background: #bbb; + border: 1px solid #bbb; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.switchbutton-inner { + display: inline-block; + overflow: hidden; + position: relative; + top: -1px; + left: -1px; +} +.switchbutton-on, +.switchbutton-off, +.switchbutton-handle { + display: inline-block; + text-align: center; + height: 100%; + float: left; + font-size: 12px; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.switchbutton-on { + background: #0092DC; + color: #fff; +} +.switchbutton-off { + background-color: #ffffff; + color: #000000; +} +.switchbutton-on, +.switchbutton-reversed .switchbutton-off { + -moz-border-radius: 5px 0 0 5px; + -webkit-border-radius: 5px 0 0 5px; + border-radius: 5px 0 0 5px; +} +.switchbutton-off, +.switchbutton-reversed .switchbutton-on { + -moz-border-radius: 0 5px 5px 0; + -webkit-border-radius: 0 5px 5px 0; + border-radius: 0 5px 5px 0; +} +.switchbutton-handle { + position: absolute; + top: 0; + left: 50%; + background-color: #ffffff; + color: #000000; + border: 1px solid #bbb; + -moz-box-shadow: 0 0 3px 0 #bbb; + -webkit-box-shadow: 0 0 3px 0 #bbb; + box-shadow: 0 0 3px 0 #bbb; +} +.switchbutton-value { + position: absolute; + top: 0; + left: -5000px; +} +.switchbutton-disabled { + opacity: 0.5; + filter: alpha(opacity=50); +} +.switchbutton-disabled, +.switchbutton-readonly { + cursor: default; +} diff --git a/src/main/webapp/static/easyUI/themes/gray/filebox.css b/src/main/webapp/static/easyUI/themes/gray/filebox.css new file mode 100644 index 0000000000000000000000000000000000000000..c6bac66315046138147a673e0ffaa3d36bce3acc --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/gray/filebox.css @@ -0,0 +1,20 @@ +.filebox .textbox-value { + vertical-align: top; + position: absolute; + top: 0; + left: -5000px; +} +.filebox-label { + display: inline-block; + position: absolute; + width: 100%; + height: 100%; + cursor: pointer; + left: 0; + top: 0; + z-index: 10; + background: url('images/blank.gif') no-repeat; +} +.l-btn-disabled .filebox-label { + cursor: default; +} diff --git a/src/main/webapp/static/easyUI/themes/gray/images/accordion_arrows.png b/src/main/webapp/static/easyUI/themes/gray/images/accordion_arrows.png new file mode 100644 index 0000000000000000000000000000000000000000..a0b8769cc5091d81760c7ed555ac3c3453febbfd Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/gray/images/accordion_arrows.png differ diff --git a/src/main/webapp/static/easyUI/themes/gray/images/blank.gif b/src/main/webapp/static/easyUI/themes/gray/images/blank.gif new file mode 100644 index 0000000000000000000000000000000000000000..1d11fa9ada9e93505b3d736acb204083f45d5fbf Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/gray/images/blank.gif differ diff --git a/src/main/webapp/static/easyUI/themes/gray/images/calendar_arrows.png b/src/main/webapp/static/easyUI/themes/gray/images/calendar_arrows.png new file mode 100644 index 0000000000000000000000000000000000000000..430c4ad685b8c0068ecb7e3cbef74f493a84ad0d Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/gray/images/calendar_arrows.png differ diff --git a/src/main/webapp/static/easyUI/themes/gray/images/combo_arrow.png b/src/main/webapp/static/easyUI/themes/gray/images/combo_arrow.png new file mode 100644 index 0000000000000000000000000000000000000000..04f4ba0cd513af3af21493718618a8a33a1c9b8e Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/gray/images/combo_arrow.png differ diff --git a/src/main/webapp/static/easyUI/themes/gray/images/datagrid_icons.png b/src/main/webapp/static/easyUI/themes/gray/images/datagrid_icons.png new file mode 100644 index 0000000000000000000000000000000000000000..66b83435f8f62b28ce2c8dc1638e112c5932a2f6 Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/gray/images/datagrid_icons.png differ diff --git a/src/main/webapp/static/easyUI/themes/gray/images/datebox_arrow.png b/src/main/webapp/static/easyUI/themes/gray/images/datebox_arrow.png new file mode 100644 index 0000000000000000000000000000000000000000..783c83357fdf90a1c7c024358e1d768b5c09c135 Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/gray/images/datebox_arrow.png differ diff --git a/src/main/webapp/static/easyUI/themes/gray/images/layout_arrows.png b/src/main/webapp/static/easyUI/themes/gray/images/layout_arrows.png new file mode 100644 index 0000000000000000000000000000000000000000..bf7929f547d2358ee91c787ac79191544ae1e089 Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/gray/images/layout_arrows.png differ diff --git a/src/main/webapp/static/easyUI/themes/gray/images/linkbutton_bg.png b/src/main/webapp/static/easyUI/themes/gray/images/linkbutton_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..fc66bd2cd24047b8377342365a1df3846327ecde Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/gray/images/linkbutton_bg.png differ diff --git a/src/main/webapp/static/easyUI/themes/gray/images/loading.gif b/src/main/webapp/static/easyUI/themes/gray/images/loading.gif new file mode 100644 index 0000000000000000000000000000000000000000..68f01d04813c1f622810864a3aaa04b4a17ac8f9 Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/gray/images/loading.gif differ diff --git a/src/main/webapp/static/easyUI/themes/gray/images/menu_arrows.png b/src/main/webapp/static/easyUI/themes/gray/images/menu_arrows.png new file mode 100644 index 0000000000000000000000000000000000000000..b986842e7e4044caed18edbcb4b376a4bb915623 Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/gray/images/menu_arrows.png differ diff --git a/src/main/webapp/static/easyUI/themes/gray/images/messager_icons.png b/src/main/webapp/static/easyUI/themes/gray/images/messager_icons.png new file mode 100644 index 0000000000000000000000000000000000000000..62c18c135860351063ebaabe8c0f4df7664b8f65 Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/gray/images/messager_icons.png differ diff --git a/src/main/webapp/static/easyUI/themes/gray/images/pagination_icons.png b/src/main/webapp/static/easyUI/themes/gray/images/pagination_icons.png new file mode 100644 index 0000000000000000000000000000000000000000..e0f1b07b05dcbe9e648afe83571f1c76454c78b7 Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/gray/images/pagination_icons.png differ diff --git a/src/main/webapp/static/easyUI/themes/gray/images/panel_tools.png b/src/main/webapp/static/easyUI/themes/gray/images/panel_tools.png new file mode 100644 index 0000000000000000000000000000000000000000..f33f8c9707f08ea1a809c6ebe1c861c3181afa71 Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/gray/images/panel_tools.png differ diff --git a/src/main/webapp/static/easyUI/themes/gray/images/passwordbox_close.png b/src/main/webapp/static/easyUI/themes/gray/images/passwordbox_close.png new file mode 100644 index 0000000000000000000000000000000000000000..276b57974284d1449250e362644dd7416632d92c Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/gray/images/passwordbox_close.png differ diff --git a/src/main/webapp/static/easyUI/themes/gray/images/passwordbox_open.png b/src/main/webapp/static/easyUI/themes/gray/images/passwordbox_open.png new file mode 100644 index 0000000000000000000000000000000000000000..0f25d535e05b22b406fd72647611aace9cfa6249 Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/gray/images/passwordbox_open.png differ diff --git a/src/main/webapp/static/easyUI/themes/gray/images/searchbox_button.png b/src/main/webapp/static/easyUI/themes/gray/images/searchbox_button.png new file mode 100644 index 0000000000000000000000000000000000000000..6dd1931589b453f6cc9772fd1851d8705d6b6631 Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/gray/images/searchbox_button.png differ diff --git a/src/main/webapp/static/easyUI/themes/gray/images/slider_handle.png b/src/main/webapp/static/easyUI/themes/gray/images/slider_handle.png new file mode 100644 index 0000000000000000000000000000000000000000..b9802bae14c536281a8fdbe6cd07abbc13985033 Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/gray/images/slider_handle.png differ diff --git a/src/main/webapp/static/easyUI/themes/gray/images/spinner_arrows.png b/src/main/webapp/static/easyUI/themes/gray/images/spinner_arrows.png new file mode 100644 index 0000000000000000000000000000000000000000..b1773c24b20b30318e38c4b84690e3d0010c9c43 Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/gray/images/spinner_arrows.png differ diff --git a/src/main/webapp/static/easyUI/themes/gray/images/tabs_icons.png b/src/main/webapp/static/easyUI/themes/gray/images/tabs_icons.png new file mode 100644 index 0000000000000000000000000000000000000000..dfa10f7d78b3dc6965ef86957a0e4345ec000bc6 Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/gray/images/tabs_icons.png differ diff --git a/src/main/webapp/static/easyUI/themes/gray/images/tagbox_icons.png b/src/main/webapp/static/easyUI/themes/gray/images/tagbox_icons.png new file mode 100644 index 0000000000000000000000000000000000000000..8ec64360884b3fdb81255ad6074bc08ed183232c Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/gray/images/tagbox_icons.png differ diff --git a/src/main/webapp/static/easyUI/themes/gray/images/tree_icons.png b/src/main/webapp/static/easyUI/themes/gray/images/tree_icons.png new file mode 100644 index 0000000000000000000000000000000000000000..e9be4f3a9965e49a4e4078f8c53f486d761a7468 Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/gray/images/tree_icons.png differ diff --git a/src/main/webapp/static/easyUI/themes/gray/images/validatebox_warning.png b/src/main/webapp/static/easyUI/themes/gray/images/validatebox_warning.png new file mode 100644 index 0000000000000000000000000000000000000000..2b3d4f05babf3f82b146350e96570fac02075de0 Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/gray/images/validatebox_warning.png differ diff --git a/src/main/webapp/static/easyUI/themes/gray/layout.css b/src/main/webapp/static/easyUI/themes/gray/layout.css new file mode 100644 index 0000000000000000000000000000000000000000..2321dfc2309ff7915b1bef6bde87a2b5ad188dfb --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/gray/layout.css @@ -0,0 +1,150 @@ +.layout { + position: relative; + overflow: hidden; + margin: 0; + padding: 0; + z-index: 0; +} +.layout-panel { + position: absolute; + overflow: hidden; +} +.layout-body { + min-width: 1px; + min-height: 1px; +} +.layout-panel-east, +.layout-panel-west { + z-index: 2; +} +.layout-panel-north, +.layout-panel-south { + z-index: 3; +} +.layout-expand { + position: absolute; + padding: 0px; + font-size: 1px; + cursor: pointer; + z-index: 1; +} +.layout-expand .panel-header, +.layout-expand .panel-body { + background: transparent; + filter: none; + overflow: hidden; +} +.layout-expand .panel-header { + border-bottom-width: 0px; +} +.layout-expand .panel-body { + position: relative; +} +.layout-expand .panel-body .panel-icon { + margin-top: 0; + top: 0; + left: 50%; + margin-left: -8px; +} +.layout-expand-west .panel-header .panel-icon, +.layout-expand-east .panel-header .panel-icon { + display: none; +} +.layout-expand-title { + position: absolute; + top: 0; + left: 21px; + white-space: nowrap; + word-wrap: normal; + -webkit-transform: rotate(90deg); + -webkit-transform-origin: 0 0; + -moz-transform: rotate(90deg); + -moz-transform-origin: 0 0; + -o-transform: rotate(90deg); + -o-transform-origin: 0 0; + transform: rotate(90deg); + transform-origin: 0 0; +} +.layout-expand-title-up { + position: absolute; + top: 0; + left: 0; + text-align: right; + padding-left: 5px; + white-space: nowrap; + word-wrap: normal; + -webkit-transform: rotate(-90deg); + -webkit-transform-origin: 0 0; + -moz-transform: rotate(-90deg); + -moz-transform-origin: 0 0; + -o-transform: rotate(-90deg); + -o-transform-origin: 0 0; + transform: rotate(-90deg); + transform-origin: 0 0; +} +.layout-expand-with-icon { + top: 18px; +} +.layout-expand .panel-body-noheader .layout-expand-title, +.layout-expand .panel-body-noheader .panel-icon { + top: 5px; +} +.layout-expand .panel-body-noheader .layout-expand-with-icon { + top: 23px; +} +.layout-split-proxy-h, +.layout-split-proxy-v { + position: absolute; + font-size: 1px; + display: none; + z-index: 5; +} +.layout-split-proxy-h { + width: 5px; + cursor: e-resize; +} +.layout-split-proxy-v { + height: 5px; + cursor: n-resize; +} +.layout-mask { + position: absolute; + background: #fafafa; + filter: alpha(opacity=10); + opacity: 0.10; + z-index: 4; +} +.layout-button-up { + background: url('images/layout_arrows.png') no-repeat -16px -16px; +} +.layout-button-down { + background: url('images/layout_arrows.png') no-repeat -16px 0; +} +.layout-button-left { + background: url('images/layout_arrows.png') no-repeat 0 0; +} +.layout-button-right { + background: url('images/layout_arrows.png') no-repeat 0 -16px; +} +.layout-split-proxy-h, +.layout-split-proxy-v { + background-color: #bfbfbf; +} +.layout-split-north { + border-bottom: 5px solid #efefef; +} +.layout-split-south { + border-top: 5px solid #efefef; +} +.layout-split-east { + border-left: 5px solid #efefef; +} +.layout-split-west { + border-right: 5px solid #efefef; +} +.layout-expand { + background-color: #f3f3f3; +} +.layout-expand-over { + background-color: #f3f3f3; +} diff --git a/src/main/webapp/static/easyUI/themes/gray/linkbutton.css b/src/main/webapp/static/easyUI/themes/gray/linkbutton.css new file mode 100644 index 0000000000000000000000000000000000000000..53280e6891f4487925dc90244ddd6c212feed532 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/gray/linkbutton.css @@ -0,0 +1,203 @@ +.l-btn { + text-decoration: none; + display: inline-block; + overflow: hidden; + margin: 0; + padding: 0; + cursor: pointer; + outline: none; + text-align: center; + vertical-align: middle; + line-height: normal; +} +.l-btn-plain { + border-width: 0; + padding: 1px; +} +.l-btn-left { + display: inline-block; + position: relative; + overflow: hidden; + margin: 0; + padding: 0; + vertical-align: top; +} +.l-btn-text { + display: inline-block; + vertical-align: top; + width: auto; + line-height: 24px; + font-size: 12px; + padding: 0; + margin: 0 4px; +} +.l-btn-icon { + display: inline-block; + width: 16px; + height: 16px; + line-height: 16px; + position: absolute; + top: 50%; + margin-top: -8px; + font-size: 1px; +} +.l-btn span span .l-btn-empty { + display: inline-block; + margin: 0; + width: 16px; + height: 24px; + font-size: 1px; + vertical-align: top; +} +.l-btn span .l-btn-icon-left { + padding: 0 0 0 20px; + background-position: left center; +} +.l-btn span .l-btn-icon-right { + padding: 0 20px 0 0; + background-position: right center; +} +.l-btn-icon-left .l-btn-text { + margin: 0 4px 0 24px; +} +.l-btn-icon-left .l-btn-icon { + left: 4px; +} +.l-btn-icon-right .l-btn-text { + margin: 0 24px 0 4px; +} +.l-btn-icon-right .l-btn-icon { + right: 4px; +} +.l-btn-icon-top .l-btn-text { + margin: 20px 4px 0 4px; +} +.l-btn-icon-top .l-btn-icon { + top: 4px; + left: 50%; + margin: 0 0 0 -8px; +} +.l-btn-icon-bottom .l-btn-text { + margin: 0 4px 20px 4px; +} +.l-btn-icon-bottom .l-btn-icon { + top: auto; + bottom: 4px; + left: 50%; + margin: 0 0 0 -8px; +} +.l-btn-left .l-btn-empty { + margin: 0 4px; + width: 16px; +} +.l-btn-plain:hover { + padding: 0; +} +.l-btn-focus { + outline: #0000FF dotted thin; +} +.l-btn-large .l-btn-text { + line-height: 40px; +} +.l-btn-large .l-btn-icon { + width: 32px; + height: 32px; + line-height: 32px; + margin-top: -16px; +} +.l-btn-large .l-btn-icon-left .l-btn-text { + margin-left: 40px; +} +.l-btn-large .l-btn-icon-right .l-btn-text { + margin-right: 40px; +} +.l-btn-large .l-btn-icon-top .l-btn-text { + margin-top: 36px; + line-height: 24px; + min-width: 32px; +} +.l-btn-large .l-btn-icon-top .l-btn-icon { + margin: 0 0 0 -16px; +} +.l-btn-large .l-btn-icon-bottom .l-btn-text { + margin-bottom: 36px; + line-height: 24px; + min-width: 32px; +} +.l-btn-large .l-btn-icon-bottom .l-btn-icon { + margin: 0 0 0 -16px; +} +.l-btn-large .l-btn-left .l-btn-empty { + margin: 0 4px; + width: 32px; +} +.l-btn { + color: #444; + background: #fafafa; + background-repeat: repeat-x; + border: 1px solid #bbb; + background: -webkit-linear-gradient(top,#ffffff 0,#eeeeee 100%); + background: -moz-linear-gradient(top,#ffffff 0,#eeeeee 100%); + background: -o-linear-gradient(top,#ffffff 0,#eeeeee 100%); + background: linear-gradient(to bottom,#ffffff 0,#eeeeee 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#eeeeee,GradientType=0); + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.l-btn:hover { + background: #e2e2e2; + color: #000000; + border: 1px solid #ccc; + filter: none; +} +.l-btn-plain { + background: transparent; + border-width: 0; + filter: none; +} +.l-btn-outline { + border-width: 1px; + border-color: #ccc; + padding: 0; +} +.l-btn-plain:hover { + background: #e2e2e2; + color: #000000; + border: 1px solid #ccc; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.l-btn-disabled, +.l-btn-disabled:hover { + opacity: 0.5; + cursor: default; + background: #fafafa; + color: #444; + background: -webkit-linear-gradient(top,#ffffff 0,#eeeeee 100%); + background: -moz-linear-gradient(top,#ffffff 0,#eeeeee 100%); + background: -o-linear-gradient(top,#ffffff 0,#eeeeee 100%); + background: linear-gradient(to bottom,#ffffff 0,#eeeeee 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#eeeeee,GradientType=0); +} +.l-btn-disabled .l-btn-text, +.l-btn-disabled .l-btn-icon { + filter: alpha(opacity=50); +} +.l-btn-plain-disabled, +.l-btn-plain-disabled:hover { + background: transparent; + filter: alpha(opacity=50); +} +.l-btn-selected, +.l-btn-selected:hover { + background: #ddd; + filter: none; +} +.l-btn-plain-selected, +.l-btn-plain-selected:hover { + background: #ddd; +} diff --git a/src/main/webapp/static/easyUI/themes/gray/menu.css b/src/main/webapp/static/easyUI/themes/gray/menu.css new file mode 100644 index 0000000000000000000000000000000000000000..72ca0804d65ab1ef8965e79376e0275e7c9fd8a3 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/gray/menu.css @@ -0,0 +1,119 @@ +.menu { + position: absolute; + margin: 0; + padding: 2px; + border-width: 1px; + border-style: solid; + overflow: hidden; +} +.menu-inline { + position: relative; +} +.menu-item { + position: relative; + margin: 0; + padding: 0; + overflow: hidden; + white-space: nowrap; + cursor: pointer; + border-width: 1px; + border-style: solid; +} +.menu-text { + height: 20px; + line-height: 20px; + float: left; + padding-left: 28px; +} +.menu-icon { + position: absolute; + width: 16px; + height: 16px; + left: 2px; + top: 50%; + margin-top: -8px; +} +.menu-rightarrow { + position: absolute; + width: 16px; + height: 16px; + right: 0; + top: 50%; + margin-top: -8px; +} +.menu-line { + position: absolute; + left: 26px; + top: 0; + height: 2000px; + font-size: 1px; +} +.menu-sep { + margin: 3px 0px 3px 25px; + font-size: 1px; +} +.menu-noline .menu-line { + display: none; +} +.menu-noline .menu-sep { + margin-left: 0; + margin-right: 0; +} +.menu-active { + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.menu-item-disabled { + opacity: 0.5; + filter: alpha(opacity=50); + cursor: default; +} +.menu-text, +.menu-text span { + font-size: 12px; +} +.menu-shadow { + position: absolute; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; + background: #ccc; + -moz-box-shadow: 2px 2px 3px #cccccc; + -webkit-box-shadow: 2px 2px 3px #cccccc; + box-shadow: 2px 2px 3px #cccccc; + filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); +} +.menu-rightarrow { + background: url('images/menu_arrows.png') no-repeat -32px center; +} +.menu-line { + border-left: 1px solid #ccc; + border-right: 1px solid #fff; +} +.menu-sep { + border-top: 1px solid #ccc; + border-bottom: 1px solid #fff; +} +.menu { + background-color: #f3f3f3; + border-color: #D3D3D3; + color: #444; +} +.menu-content { + background: #ffffff; +} +.menu-item { + border-color: transparent; + _border-color: #f3f3f3; +} +.menu-active { + border-color: #ccc; + color: #000000; + background: #e2e2e2; +} +.menu-active-disabled { + border-color: transparent; + background: transparent; + color: #444; +} diff --git a/src/main/webapp/static/easyUI/themes/gray/menubutton.css b/src/main/webapp/static/easyUI/themes/gray/menubutton.css new file mode 100644 index 0000000000000000000000000000000000000000..f5732d5d93c0d2b627855c7b3ef63f9bbf4b9348 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/gray/menubutton.css @@ -0,0 +1,94 @@ +.m-btn-downarrow, +.s-btn-downarrow { + display: inline-block; + position: absolute; + width: 16px; + height: 16px; + font-size: 1px; + right: 0; + top: 50%; + margin-top: -8px; +} +.m-btn-active, +.s-btn-active { + background: #e2e2e2; + color: #000000; + border: 1px solid #ccc; + filter: none; +} +.m-btn-plain-active, +.s-btn-plain-active { + background: transparent; + padding: 0; + border-width: 1px; + border-style: solid; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.m-btn .l-btn-left .l-btn-text { + margin-right: 20px; +} +.m-btn .l-btn-icon-right .l-btn-text { + margin-right: 40px; +} +.m-btn .l-btn-icon-right .l-btn-icon { + right: 20px; +} +.m-btn .l-btn-icon-top .l-btn-text { + margin-right: 4px; + margin-bottom: 14px; +} +.m-btn .l-btn-icon-bottom .l-btn-text { + margin-right: 4px; + margin-bottom: 34px; +} +.m-btn .l-btn-icon-bottom .l-btn-icon { + top: auto; + bottom: 20px; +} +.m-btn .l-btn-icon-top .m-btn-downarrow, +.m-btn .l-btn-icon-bottom .m-btn-downarrow { + top: auto; + bottom: 0px; + left: 50%; + margin-left: -8px; +} +.m-btn-line { + display: inline-block; + position: absolute; + font-size: 1px; + display: none; +} +.m-btn .l-btn-left .m-btn-line { + right: 0; + width: 16px; + height: 500px; + border-style: solid; + border-color: #bfbfbf; + border-width: 0 0 0 1px; +} +.m-btn .l-btn-icon-top .m-btn-line, +.m-btn .l-btn-icon-bottom .m-btn-line { + left: 0; + bottom: 0; + width: 500px; + height: 16px; + border-width: 1px 0 0 0; +} +.m-btn-large .l-btn-icon-right .l-btn-text { + margin-right: 56px; +} +.m-btn-large .l-btn-icon-bottom .l-btn-text { + margin-bottom: 50px; +} +.m-btn-downarrow, +.s-btn-downarrow { + background: url('images/menu_arrows.png') no-repeat 0 center; +} +.m-btn-plain-active, +.s-btn-plain-active { + border-color: #ccc; + background-color: #e2e2e2; + color: #000000; +} diff --git a/src/main/webapp/static/easyUI/themes/gray/messager.css b/src/main/webapp/static/easyUI/themes/gray/messager.css new file mode 100644 index 0000000000000000000000000000000000000000..1f20816cbbbdb4fa7532a6a9e302876dbe92cc94 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/gray/messager.css @@ -0,0 +1,44 @@ +.messager-body { + padding: 10px 10px 30px 10px; + overflow: auto; +} +.messager-button { + text-align: center; + padding: 5px; +} +.messager-button .l-btn { + width: 70px; +} +.messager-icon { + float: left; + width: 32px; + height: 32px; + margin: 0 10px 10px 0; +} +.messager-error { + background: url('images/messager_icons.png') no-repeat scroll -64px 0; +} +.messager-info { + background: url('images/messager_icons.png') no-repeat scroll 0 0; +} +.messager-question { + background: url('images/messager_icons.png') no-repeat scroll -32px 0; +} +.messager-warning { + background: url('images/messager_icons.png') no-repeat scroll -96px 0; +} +.messager-progress { + padding: 10px; +} +.messager-p-msg { + margin-bottom: 5px; +} +.messager-body .messager-input { + width: 100%; + padding: 4px 0; + outline-style: none; + border: 1px solid #D3D3D3; +} +.window-thinborder .messager-button { + padding-bottom: 8px; +} diff --git a/src/main/webapp/static/easyUI/themes/gray/numberbox.css b/src/main/webapp/static/easyUI/themes/gray/numberbox.css new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/main/webapp/static/easyUI/themes/gray/pagination.css b/src/main/webapp/static/easyUI/themes/gray/pagination.css new file mode 100644 index 0000000000000000000000000000000000000000..11df655ede9c0fad81d154f92aba278388234319 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/gray/pagination.css @@ -0,0 +1,71 @@ +.pagination { + zoom: 1; +} +.pagination table { + float: left; + height: 30px; +} +.pagination td { + border: 0; +} +.pagination-btn-separator { + float: left; + height: 24px; + border-left: 1px solid #ccc; + border-right: 1px solid #fff; + margin: 3px 1px; +} +.pagination .pagination-num { + border-width: 1px; + border-style: solid; + margin: 0 2px; + padding: 2px; + width: 2em; + height: auto; +} +.pagination-page-list { + margin: 0px 6px; + padding: 1px 2px; + width: auto; + height: auto; + border-width: 1px; + border-style: solid; +} +.pagination-info { + float: right; + margin: 0 6px; + padding: 0; + height: 30px; + line-height: 30px; + font-size: 12px; +} +.pagination span { + font-size: 12px; +} +.pagination-link .l-btn-text { + width: 24px; + text-align: center; + margin: 0; +} +.pagination-first { + background: url('images/pagination_icons.png') no-repeat 0 center; +} +.pagination-prev { + background: url('images/pagination_icons.png') no-repeat -16px center; +} +.pagination-next { + background: url('images/pagination_icons.png') no-repeat -32px center; +} +.pagination-last { + background: url('images/pagination_icons.png') no-repeat -48px center; +} +.pagination-load { + background: url('images/pagination_icons.png') no-repeat -64px center; +} +.pagination-loading { + background: url('images/loading.gif') no-repeat center center; +} +.pagination-page-list, +.pagination .pagination-num { + border-color: #D3D3D3; +} diff --git a/src/main/webapp/static/easyUI/themes/gray/panel.css b/src/main/webapp/static/easyUI/themes/gray/panel.css new file mode 100644 index 0000000000000000000000000000000000000000..36e873e9dae027da9ff2717dc95cb35d0a37df04 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/gray/panel.css @@ -0,0 +1,265 @@ +.panel { + overflow: hidden; + text-align: left; + margin: 0; + border: 0; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.panel-header, +.panel-body { + border-width: 1px; + border-style: solid; +} +.panel-header { + padding: 5px; + position: relative; +} +.panel-title { + background: url('images/blank.gif') no-repeat; +} +.panel-header-noborder { + border-width: 0 0 1px 0; +} +.panel-body { + overflow: auto; + border-top-width: 0; + padding: 0; +} +.panel-body-noheader { + border-top-width: 1px; +} +.panel-body-noborder { + border-width: 0px; +} +.panel-body-nobottom { + border-bottom-width: 0; +} +.panel-with-icon { + padding-left: 18px; +} +.panel-icon, +.panel-tool { + position: absolute; + top: 50%; + margin-top: -8px; + height: 16px; + overflow: hidden; +} +.panel-icon { + left: 5px; + width: 16px; +} +.panel-tool { + right: 5px; + width: auto; +} +.panel-tool a { + display: inline-block; + width: 16px; + height: 16px; + opacity: 0.6; + filter: alpha(opacity=60); + margin: 0 0 0 2px; + vertical-align: top; +} +.panel-tool a:hover { + opacity: 1; + filter: alpha(opacity=100); + background-color: #e2e2e2; + -moz-border-radius: 3px 3px 3px 3px; + -webkit-border-radius: 3px 3px 3px 3px; + border-radius: 3px 3px 3px 3px; +} +.panel-loading { + padding: 11px 0px 10px 30px; +} +.panel-noscroll { + overflow: hidden; +} +.panel-fit, +.panel-fit body { + height: 100%; + margin: 0; + padding: 0; + border: 0; + overflow: hidden; +} +.panel-loading { + background: url('images/loading.gif') no-repeat 10px 10px; +} +.panel-tool-close { + background: url('images/panel_tools.png') no-repeat -16px 0px; +} +.panel-tool-min { + background: url('images/panel_tools.png') no-repeat 0px 0px; +} +.panel-tool-max { + background: url('images/panel_tools.png') no-repeat 0px -16px; +} +.panel-tool-restore { + background: url('images/panel_tools.png') no-repeat -16px -16px; +} +.panel-tool-collapse { + background: url('images/panel_tools.png') no-repeat -32px 0; +} +.panel-tool-expand { + background: url('images/panel_tools.png') no-repeat -32px -16px; +} +.panel-header, +.panel-body { + border-color: #D3D3D3; +} +.panel-header { + background-color: #f3f3f3; + background: -webkit-linear-gradient(top,#F8F8F8 0,#eeeeee 100%); + background: -moz-linear-gradient(top,#F8F8F8 0,#eeeeee 100%); + background: -o-linear-gradient(top,#F8F8F8 0,#eeeeee 100%); + background: linear-gradient(to bottom,#F8F8F8 0,#eeeeee 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#F8F8F8,endColorstr=#eeeeee,GradientType=0); +} +.panel-body { + background-color: #ffffff; + color: #000000; + font-size: 12px; +} +.panel-title { + font-size: 12px; + font-weight: bold; + color: #575765; + height: 16px; + line-height: 16px; +} +.panel-footer { + border: 1px solid #D3D3D3; + overflow: hidden; + background: #fafafa; +} +.panel-footer-noborder { + border-width: 1px 0 0 0; +} +.panel-hleft, +.panel-hright { + position: relative; +} +.panel-hleft>.panel-body, +.panel-hright>.panel-body { + position: absolute; +} +.panel-hleft>.panel-header { + float: left; +} +.panel-hright>.panel-header { + float: right; +} +.panel-hleft>.panel-body { + border-top-width: 1px; + border-left-width: 0; +} +.panel-hright>.panel-body { + border-top-width: 1px; + border-right-width: 0; +} +.panel-hleft>.panel-body-nobottom { + border-bottom-width: 1px; + border-right-width: 0; +} +.panel-hright>.panel-body-nobottom { + border-bottom-width: 1px; + border-left-width: 0; +} +.panel-hleft>.panel-footer { + position: absolute; + right: 0; +} +.panel-hright>.panel-footer { + position: absolute; + left: 0; +} +.panel-hleft>.panel-header-noborder { + border-width: 0 1px 0 0; +} +.panel-hright>.panel-header-noborder { + border-width: 0 0 0 1px; +} +.panel-hleft>.panel-body-noborder { + border-width: 0; +} +.panel-hright>.panel-body-noborder { + border-width: 0; +} +.panel-hleft>.panel-body-noheader { + border-left-width: 1px; +} +.panel-hright>.panel-body-noheader { + border-right-width: 1px; +} +.panel-hleft>.panel-footer-noborder { + border-width: 0 0 0 1px; +} +.panel-hright>.panel-footer-noborder { + border-width: 0 1px 0 0; +} +.panel-hleft>.panel-header .panel-icon, +.panel-hright>.panel-header .panel-icon { + margin-top: 0; + top: 5px; +} +.panel-hleft>.panel-header .panel-title, +.panel-hright>.panel-header .panel-title { + position: absolute; + min-width: 16px; + left: 21px; + top: 5px; + bottom: auto; + white-space: nowrap; + word-wrap: normal; + -webkit-transform: rotate(90deg); + -webkit-transform-origin: 0 0; + -moz-transform: rotate(90deg); + -moz-transform-origin: 0 0; + -o-transform: rotate(90deg); + -o-transform-origin: 0 0; + transform: rotate(90deg); + transform-origin: 0 0; +} +.panel-hleft>.panel-header .panel-title-up, +.panel-hright>.panel-header .panel-title-up { + position: absolute; + min-width: 16px; + left: 21px; + top: auto; + bottom: 5px; + text-align: right; + white-space: nowrap; + word-wrap: normal; + -webkit-transform: rotate(-90deg); + -webkit-transform-origin: 0 0; + -moz-transform: rotate(-90deg); + -moz-transform-origin: 0 0; + -o-transform: rotate(-90deg); + -o-transform-origin: 0 0; + transform: rotate(-90deg); + transform-origin: 0 16px; +} +.panel-hleft>.panel-header .panel-with-icon.panel-title-up, +.panel-hright>.panel-header .panel-with-icon.panel-title-up { + padding-left: 0; + padding-right: 18px; +} +.panel-hleft>.panel-header .panel-tool, +.panel-hright>.panel-header .panel-tool { + top: auto; + bottom: 5px; + width: 16px; + height: auto; + left: 50%; + margin-left: -8px; + margin-top: 0; +} +.panel-hleft>.panel-header .panel-tool a, +.panel-hright>.panel-header .panel-tool a { + margin: 2px 0 0 0; +} diff --git a/src/main/webapp/static/easyUI/themes/gray/passwordbox.css b/src/main/webapp/static/easyUI/themes/gray/passwordbox.css new file mode 100644 index 0000000000000000000000000000000000000000..92c9ce586b5c0e515bceb19422e8012e85d0e09b --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/gray/passwordbox.css @@ -0,0 +1,6 @@ +.passwordbox-open { + background: url('images/passwordbox_open.png') no-repeat center center; +} +.passwordbox-close { + background: url('images/passwordbox_close.png') no-repeat center center; +} diff --git a/src/main/webapp/static/easyUI/themes/gray/progressbar.css b/src/main/webapp/static/easyUI/themes/gray/progressbar.css new file mode 100644 index 0000000000000000000000000000000000000000..93818e3e16e2925290b2a52bb85d988b5daa34fb --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/gray/progressbar.css @@ -0,0 +1,32 @@ +.progressbar { + border-width: 1px; + border-style: solid; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; + overflow: hidden; + position: relative; +} +.progressbar-text { + text-align: center; + position: absolute; +} +.progressbar-value { + position: relative; + overflow: hidden; + width: 0; + -moz-border-radius: 5px 0 0 5px; + -webkit-border-radius: 5px 0 0 5px; + border-radius: 5px 0 0 5px; +} +.progressbar { + border-color: #D3D3D3; +} +.progressbar-text { + color: #000000; + font-size: 12px; +} +.progressbar-value .progressbar-text { + background-color: #0092DC; + color: #fff; +} diff --git a/src/main/webapp/static/easyUI/themes/gray/propertygrid.css b/src/main/webapp/static/easyUI/themes/gray/propertygrid.css new file mode 100644 index 0000000000000000000000000000000000000000..90e452088fa6d894cf1b45625aa5306cb9552b20 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/gray/propertygrid.css @@ -0,0 +1,28 @@ +.propertygrid .datagrid-view1 .datagrid-body td { + padding-bottom: 1px; + border-width: 0 1px 0 0; +} +.propertygrid .datagrid-group { + height: 21px; + overflow: hidden; + border-width: 0 0 1px 0; + border-style: solid; +} +.propertygrid .datagrid-group span { + font-weight: bold; +} +.propertygrid .datagrid-view1 .datagrid-body td { + border-color: #ddd; +} +.propertygrid .datagrid-view1 .datagrid-group { + border-color: #f3f3f3; +} +.propertygrid .datagrid-view2 .datagrid-group { + border-color: #ddd; +} +.propertygrid .datagrid-group, +.propertygrid .datagrid-view1 .datagrid-body, +.propertygrid .datagrid-view1 .datagrid-row-over, +.propertygrid .datagrid-view1 .datagrid-row-selected { + background: #f3f3f3; +} diff --git a/src/main/webapp/static/easyUI/themes/gray/searchbox.css b/src/main/webapp/static/easyUI/themes/gray/searchbox.css new file mode 100644 index 0000000000000000000000000000000000000000..7b15815d234ea15c9558643a518c1e279a3ab495 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/gray/searchbox.css @@ -0,0 +1,61 @@ +.searchbox-button { + width: 18px; + height: 20px; + overflow: hidden; + display: inline-block; + vertical-align: top; + cursor: pointer; + opacity: 0.6; + filter: alpha(opacity=60); +} +.searchbox-button-hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.searchbox .l-btn-plain { + border: 0; + padding: 0; + vertical-align: top; + opacity: 0.6; + filter: alpha(opacity=60); + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox .l-btn-plain:hover { + border: 0; + padding: 0; + opacity: 1.0; + filter: alpha(opacity=100); + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox a.m-btn-plain-active { + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox .m-btn-active { + border-width: 0 1px 0 0; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox .textbox-button-right { + border-width: 0 0 0 1px; +} +.searchbox .textbox-button-left { + border-width: 0 1px 0 0; +} +.searchbox-button { + background: url('images/searchbox_button.png') no-repeat center center; +} +.searchbox .l-btn-plain { + background: #f3f3f3; +} +.searchbox .l-btn-plain-disabled, +.searchbox .l-btn-plain-disabled:hover { + opacity: 0.5; + filter: alpha(opacity=50); +} diff --git a/src/main/webapp/static/easyUI/themes/gray/slider.css b/src/main/webapp/static/easyUI/themes/gray/slider.css new file mode 100644 index 0000000000000000000000000000000000000000..b163812089a8a8caf0dbc5d0471f505594a6888d --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/gray/slider.css @@ -0,0 +1,101 @@ +.slider-disabled { + opacity: 0.5; + filter: alpha(opacity=50); +} +.slider-h { + height: 22px; +} +.slider-v { + width: 22px; +} +.slider-inner { + position: relative; + height: 6px; + top: 7px; + border-width: 1px; + border-style: solid; + border-radius: 5px; +} +.slider-handle { + position: absolute; + display: block; + outline: none; + width: 20px; + height: 20px; + top: 50%; + margin-top: -10px; + margin-left: -10px; +} +.slider-tip { + position: absolute; + display: inline-block; + line-height: 12px; + font-size: 12px; + white-space: nowrap; + top: -22px; +} +.slider-rule { + position: relative; + top: 15px; +} +.slider-rule span { + position: absolute; + display: inline-block; + font-size: 0; + height: 5px; + border-width: 0 0 0 1px; + border-style: solid; +} +.slider-rulelabel { + position: relative; + top: 20px; +} +.slider-rulelabel span { + position: absolute; + display: inline-block; + font-size: 12px; +} +.slider-v .slider-inner { + width: 6px; + left: 7px; + top: 0; + float: left; +} +.slider-v .slider-handle { + left: 50%; + margin-top: -10px; +} +.slider-v .slider-tip { + left: -10px; + margin-top: -6px; +} +.slider-v .slider-rule { + float: left; + top: 0; + left: 16px; +} +.slider-v .slider-rule span { + width: 5px; + height: 'auto'; + border-left: 0; + border-width: 1px 0 0 0; + border-style: solid; +} +.slider-v .slider-rulelabel { + float: left; + top: 0; + left: 23px; +} +.slider-handle { + background: url('images/slider_handle.png') no-repeat; +} +.slider-inner { + border-color: #D3D3D3; + background: #f3f3f3; +} +.slider-rule span { + border-color: #D3D3D3; +} +.slider-rulelabel span { + color: #000000; +} diff --git a/src/main/webapp/static/easyUI/themes/gray/spinner.css b/src/main/webapp/static/easyUI/themes/gray/spinner.css new file mode 100644 index 0000000000000000000000000000000000000000..a61944d791df073288cdf12f81ba88f91c1e85de --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/gray/spinner.css @@ -0,0 +1,58 @@ +.spinner-arrow { + background-color: #f3f3f3; + display: inline-block; + overflow: hidden; + vertical-align: top; + margin: 0; + padding: 0; + opacity: 1.0; + filter: alpha(opacity=100); + width: 18px; +} +.spinner-arrow-up, +.spinner-arrow-down { + opacity: 0.6; + filter: alpha(opacity=60); + display: block; + font-size: 1px; + width: 18px; + height: 10px; + width: 100%; + height: 50%; + color: #444; + outline-style: none; +} +.spinner-arrow-hover { + background-color: #e2e2e2; + opacity: 1.0; + filter: alpha(opacity=100); +} +.spinner-arrow-up:hover, +.spinner-arrow-down:hover { + opacity: 1.0; + filter: alpha(opacity=100); + background-color: #e2e2e2; +} +.textbox-icon-disabled .spinner-arrow-up:hover, +.textbox-icon-disabled .spinner-arrow-down:hover { + opacity: 0.6; + filter: alpha(opacity=60); + background-color: #f3f3f3; + cursor: default; +} +.spinner .textbox-icon-disabled { + opacity: 0.6; + filter: alpha(opacity=60); +} +.spinner-arrow-up { + background: url('images/spinner_arrows.png') no-repeat 1px center; +} +.spinner-arrow-down { + background: url('images/spinner_arrows.png') no-repeat -15px center; +} +.spinner-button-up { + background: url('images/spinner_arrows.png') no-repeat -32px center; +} +.spinner-button-down { + background: url('images/spinner_arrows.png') no-repeat -48px center; +} diff --git a/src/main/webapp/static/easyUI/themes/gray/splitbutton.css b/src/main/webapp/static/easyUI/themes/gray/splitbutton.css new file mode 100644 index 0000000000000000000000000000000000000000..bb2b6daafbd231f20695946f02cf5783c52392f1 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/gray/splitbutton.css @@ -0,0 +1,12 @@ +.s-btn:hover .m-btn-line, +.s-btn-active .m-btn-line, +.s-btn-plain-active .m-btn-line { + display: inline-block; +} +.l-btn:hover .s-btn-downarrow, +.s-btn-active .s-btn-downarrow, +.s-btn-plain-active .s-btn-downarrow { + border-style: solid; + border-color: #bfbfbf; + border-width: 0 0 0 1px; +} diff --git a/src/main/webapp/static/easyUI/themes/gray/switchbutton.css b/src/main/webapp/static/easyUI/themes/gray/switchbutton.css new file mode 100644 index 0000000000000000000000000000000000000000..a33305c7759f68e7727d5ee10b5e710e88f58502 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/gray/switchbutton.css @@ -0,0 +1,77 @@ +.switchbutton { + text-decoration: none; + display: inline-block; + overflow: hidden; + vertical-align: middle; + margin: 0; + padding: 0; + cursor: pointer; + background: #bbb; + border: 1px solid #bbb; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.switchbutton-inner { + display: inline-block; + overflow: hidden; + position: relative; + top: -1px; + left: -1px; +} +.switchbutton-on, +.switchbutton-off, +.switchbutton-handle { + display: inline-block; + text-align: center; + height: 100%; + float: left; + font-size: 12px; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.switchbutton-on { + background: #0092DC; + color: #fff; +} +.switchbutton-off { + background-color: #ffffff; + color: #000000; +} +.switchbutton-on, +.switchbutton-reversed .switchbutton-off { + -moz-border-radius: 5px 0 0 5px; + -webkit-border-radius: 5px 0 0 5px; + border-radius: 5px 0 0 5px; +} +.switchbutton-off, +.switchbutton-reversed .switchbutton-on { + -moz-border-radius: 0 5px 5px 0; + -webkit-border-radius: 0 5px 5px 0; + border-radius: 0 5px 5px 0; +} +.switchbutton-handle { + position: absolute; + top: 0; + left: 50%; + background-color: #ffffff; + color: #000000; + border: 1px solid #bbb; + -moz-box-shadow: 0 0 3px 0 #bbb; + -webkit-box-shadow: 0 0 3px 0 #bbb; + box-shadow: 0 0 3px 0 #bbb; +} +.switchbutton-value { + position: absolute; + top: 0; + left: -5000px; +} +.switchbutton-disabled { + opacity: 0.5; + filter: alpha(opacity=50); +} +.switchbutton-disabled, +.switchbutton-readonly { + cursor: default; +} diff --git a/src/main/webapp/static/easyUI/themes/gray/tabs.css b/src/main/webapp/static/easyUI/themes/gray/tabs.css new file mode 100644 index 0000000000000000000000000000000000000000..bbdd989a7013bead91b762657cb0057ade51f578 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/gray/tabs.css @@ -0,0 +1,413 @@ +.tabs-container { + overflow: hidden; +} +.tabs-header { + border-width: 1px; + border-style: solid; + border-bottom-width: 0; + position: relative; + padding: 0; + padding-top: 2px; + overflow: hidden; +} +.tabs-scroller-left, +.tabs-scroller-right { + position: absolute; + top: auto; + bottom: 0; + width: 18px; + font-size: 1px; + display: none; + cursor: pointer; + border-width: 1px; + border-style: solid; +} +.tabs-scroller-left { + left: 0; +} +.tabs-scroller-right { + right: 0; +} +.tabs-tool { + position: absolute; + bottom: 0; + padding: 1px; + overflow: hidden; + border-width: 1px; + border-style: solid; +} +.tabs-header-plain .tabs-tool { + padding: 0 1px; +} +.tabs-wrap { + position: relative; + left: 0; + overflow: hidden; + width: 100%; + margin: 0; + padding: 0; +} +.tabs-scrolling { + margin-left: 18px; + margin-right: 18px; +} +.tabs-disabled { + opacity: 0.3; + filter: alpha(opacity=30); +} +.tabs { + list-style-type: none; + height: 26px; + margin: 0px; + padding: 0px; + padding-left: 4px; + width: 50000px; + border-style: solid; + border-width: 0 0 1px 0; +} +.tabs li { + float: left; + display: inline-block; + margin: 0 4px -1px 0; + padding: 0; + position: relative; + border: 0; +} +.tabs li a.tabs-inner { + display: inline-block; + text-decoration: none; + margin: 0; + padding: 0 10px; + height: 25px; + line-height: 25px; + text-align: center; + white-space: nowrap; + border-width: 1px; + border-style: solid; + -moz-border-radius: 5px 5px 0 0; + -webkit-border-radius: 5px 5px 0 0; + border-radius: 5px 5px 0 0; +} +.tabs li.tabs-selected a.tabs-inner { + font-weight: bold; + outline: none; +} +.tabs li.tabs-selected a:hover.tabs-inner { + cursor: default; + pointer: default; +} +.tabs li a.tabs-close, +.tabs-p-tool { + position: absolute; + font-size: 1px; + display: block; + height: 12px; + padding: 0; + top: 50%; + margin-top: -6px; + overflow: hidden; +} +.tabs li a.tabs-close { + width: 12px; + right: 5px; + opacity: 0.6; + filter: alpha(opacity=60); +} +.tabs-p-tool { + right: 16px; +} +.tabs-p-tool a { + display: inline-block; + font-size: 1px; + width: 12px; + height: 12px; + margin: 0; + opacity: 0.6; + filter: alpha(opacity=60); +} +.tabs li a:hover.tabs-close, +.tabs-p-tool a:hover { + opacity: 1; + filter: alpha(opacity=100); + cursor: hand; + cursor: pointer; +} +.tabs-with-icon { + padding-left: 18px; +} +.tabs-icon { + position: absolute; + width: 16px; + height: 16px; + left: 10px; + top: 50%; + margin-top: -8px; +} +.tabs-title { + font-size: 12px; +} +.tabs-closable { + padding-right: 8px; +} +.tabs-panels { + margin: 0px; + padding: 0px; + border-width: 1px; + border-style: solid; + border-top-width: 0; + overflow: hidden; +} +.tabs-header-bottom { + border-width: 0 1px 1px 1px; + padding: 0 0 2px 0; +} +.tabs-header-bottom .tabs { + border-width: 1px 0 0 0; +} +.tabs-header-bottom .tabs li { + margin: -1px 4px 0 0; +} +.tabs-header-bottom .tabs li a.tabs-inner { + -moz-border-radius: 0 0 5px 5px; + -webkit-border-radius: 0 0 5px 5px; + border-radius: 0 0 5px 5px; +} +.tabs-header-bottom .tabs-tool { + top: 0; +} +.tabs-header-bottom .tabs-scroller-left, +.tabs-header-bottom .tabs-scroller-right { + top: 0; + bottom: auto; +} +.tabs-panels-top { + border-width: 1px 1px 0 1px; +} +.tabs-header-left { + float: left; + border-width: 1px 0 1px 1px; + padding: 0; +} +.tabs-header-right { + float: right; + border-width: 1px 1px 1px 0; + padding: 0; +} +.tabs-header-left .tabs-wrap, +.tabs-header-right .tabs-wrap { + height: 100%; +} +.tabs-header-left .tabs { + height: 100%; + padding: 4px 0 0 2px; + border-width: 0 1px 0 0; +} +.tabs-header-right .tabs { + height: 100%; + padding: 4px 2px 0 0; + border-width: 0 0 0 1px; +} +.tabs-header-left .tabs li, +.tabs-header-right .tabs li { + display: block; + width: 100%; + position: relative; +} +.tabs-header-left .tabs li { + left: auto; + right: 0; + margin: 0 -1px 4px 0; + float: right; +} +.tabs-header-right .tabs li { + left: 0; + right: auto; + margin: 0 0 4px -1px; + float: left; +} +.tabs-justified li a.tabs-inner { + padding-left: 0; + padding-right: 0; +} +.tabs-header-left .tabs li a.tabs-inner { + display: block; + text-align: left; + padding-left: 10px; + padding-right: 10px; + -moz-border-radius: 5px 0 0 5px; + -webkit-border-radius: 5px 0 0 5px; + border-radius: 5px 0 0 5px; +} +.tabs-header-right .tabs li a.tabs-inner { + display: block; + text-align: left; + padding-left: 10px; + padding-right: 10px; + -moz-border-radius: 0 5px 5px 0; + -webkit-border-radius: 0 5px 5px 0; + border-radius: 0 5px 5px 0; +} +.tabs-panels-right { + float: right; + border-width: 1px 1px 1px 0; +} +.tabs-panels-left { + float: left; + border-width: 1px 0 1px 1px; +} +.tabs-header-noborder, +.tabs-panels-noborder { + border: 0px; +} +.tabs-header-plain { + border: 0px; + background: transparent; +} +.tabs-pill { + padding-bottom: 3px; +} +.tabs-header-bottom .tabs-pill { + padding-top: 3px; + padding-bottom: 0; +} +.tabs-header-left .tabs-pill { + padding-right: 3px; +} +.tabs-header-right .tabs-pill { + padding-left: 3px; +} +.tabs-header .tabs-pill li a.tabs-inner { + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.tabs-header-narrow, +.tabs-header-narrow .tabs-narrow { + padding: 0; +} +.tabs-narrow li, +.tabs-header-bottom .tabs-narrow li { + margin-left: 0; + margin-right: -1px; +} +.tabs-narrow li.tabs-last, +.tabs-header-bottom .tabs-narrow li.tabs-last { + margin-right: 0; +} +.tabs-header-left .tabs-narrow, +.tabs-header-right .tabs-narrow { + padding-top: 0; +} +.tabs-header-left .tabs-narrow li { + margin-bottom: -1px; + margin-right: -1px; +} +.tabs-header-left .tabs-narrow li.tabs-last, +.tabs-header-right .tabs-narrow li.tabs-last { + margin-bottom: 0; +} +.tabs-header-right .tabs-narrow li { + margin-bottom: -1px; + margin-left: -1px; +} +.tabs-scroller-left { + background: #f3f3f3 url('images/tabs_icons.png') no-repeat 1px center; +} +.tabs-scroller-right { + background: #f3f3f3 url('images/tabs_icons.png') no-repeat -15px center; +} +.tabs li a.tabs-close { + background: url('images/tabs_icons.png') no-repeat -34px center; +} +.tabs li a.tabs-inner:hover { + background: #e2e2e2; + color: #000000; + filter: none; +} +.tabs li.tabs-selected a.tabs-inner { + background-color: #ffffff; + color: #575765; + background: -webkit-linear-gradient(top,#F8F8F8 0,#ffffff 100%); + background: -moz-linear-gradient(top,#F8F8F8 0,#ffffff 100%); + background: -o-linear-gradient(top,#F8F8F8 0,#ffffff 100%); + background: linear-gradient(to bottom,#F8F8F8 0,#ffffff 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#F8F8F8,endColorstr=#ffffff,GradientType=0); +} +.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { + background: -webkit-linear-gradient(top,#ffffff 0,#F8F8F8 100%); + background: -moz-linear-gradient(top,#ffffff 0,#F8F8F8 100%); + background: -o-linear-gradient(top,#ffffff 0,#F8F8F8 100%); + background: linear-gradient(to bottom,#ffffff 0,#F8F8F8 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#F8F8F8,GradientType=0); +} +.tabs-header-left .tabs li.tabs-selected a.tabs-inner { + background: -webkit-linear-gradient(left,#F8F8F8 0,#ffffff 100%); + background: -moz-linear-gradient(left,#F8F8F8 0,#ffffff 100%); + background: -o-linear-gradient(left,#F8F8F8 0,#ffffff 100%); + background: linear-gradient(to right,#F8F8F8 0,#ffffff 100%); + background-repeat: repeat-y; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#F8F8F8,endColorstr=#ffffff,GradientType=1); +} +.tabs-header-right .tabs li.tabs-selected a.tabs-inner { + background: -webkit-linear-gradient(left,#ffffff 0,#F8F8F8 100%); + background: -moz-linear-gradient(left,#ffffff 0,#F8F8F8 100%); + background: -o-linear-gradient(left,#ffffff 0,#F8F8F8 100%); + background: linear-gradient(to right,#ffffff 0,#F8F8F8 100%); + background-repeat: repeat-y; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#F8F8F8,GradientType=1); +} +.tabs li a.tabs-inner { + color: #575765; + background-color: #f3f3f3; + background: -webkit-linear-gradient(top,#F8F8F8 0,#eeeeee 100%); + background: -moz-linear-gradient(top,#F8F8F8 0,#eeeeee 100%); + background: -o-linear-gradient(top,#F8F8F8 0,#eeeeee 100%); + background: linear-gradient(to bottom,#F8F8F8 0,#eeeeee 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#F8F8F8,endColorstr=#eeeeee,GradientType=0); +} +.tabs-header, +.tabs-tool { + background-color: #f3f3f3; +} +.tabs-header-plain { + background: transparent; +} +.tabs-header, +.tabs-scroller-left, +.tabs-scroller-right, +.tabs-tool, +.tabs, +.tabs-panels, +.tabs li a.tabs-inner, +.tabs li.tabs-selected a.tabs-inner, +.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner, +.tabs-header-left .tabs li.tabs-selected a.tabs-inner, +.tabs-header-right .tabs li.tabs-selected a.tabs-inner { + border-color: #D3D3D3; +} +.tabs-p-tool a:hover, +.tabs li a:hover.tabs-close, +.tabs-scroller-over { + background-color: #e2e2e2; +} +.tabs li.tabs-selected a.tabs-inner { + border-bottom: 1px solid #ffffff; +} +.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { + border-top: 1px solid #ffffff; +} +.tabs-header-left .tabs li.tabs-selected a.tabs-inner { + border-right: 1px solid #ffffff; +} +.tabs-header-right .tabs li.tabs-selected a.tabs-inner { + border-left: 1px solid #ffffff; +} +.tabs-header .tabs-pill li.tabs-selected a.tabs-inner { + background: #0092DC; + color: #fff; + filter: none; + border-color: #D3D3D3; +} diff --git a/src/main/webapp/static/easyUI/themes/gray/tagbox.css b/src/main/webapp/static/easyUI/themes/gray/tagbox.css new file mode 100644 index 0000000000000000000000000000000000000000..46cbd333d86a6326ac05a2cdd803cb223224eadf --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/gray/tagbox.css @@ -0,0 +1,44 @@ +.tagbox { + cursor: text; +} +.tagbox .textbox-text { + float: left; +} +.tagbox-label { + position: relative; + display: block; + margin: 4px 0 0 4px; + padding: 0 20px 0 4px; + float: left; + vertical-align: top; + text-decoration: none; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; + background: #e2e2e2; + color: #000000; +} +.tagbox-remove { + background: url('images/tagbox_icons.png') no-repeat -16px center; + position: absolute; + display: block; + width: 16px; + height: 16px; + right: 2px; + top: 50%; + margin-top: -8px; + opacity: 0.6; + filter: alpha(opacity=60); +} +.tagbox-remove:hover { + opacity: 1; + filter: alpha(opacity=100); +} +.textbox-disabled .tagbox-label { + cursor: default; +} +.textbox-disabled .tagbox-remove:hover { + cursor: default; + opacity: 0.6; + filter: alpha(opacity=60); +} diff --git a/src/main/webapp/static/easyUI/themes/gray/textbox.css b/src/main/webapp/static/easyUI/themes/gray/textbox.css new file mode 100644 index 0000000000000000000000000000000000000000..d86f4b3f6ec13bda06b486607420bfaf89ac63f2 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/gray/textbox.css @@ -0,0 +1,139 @@ +.textbox { + position: relative; + border: 1px solid #D3D3D3; + background-color: #fff; + vertical-align: middle; + display: inline-block; + overflow: hidden; + white-space: nowrap; + margin: 0; + padding: 0; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.textbox .textbox-text { + font-size: 12px; + border: 0; + margin: 0; + padding: 4px; + white-space: normal; + vertical-align: top; + outline-style: none; + resize: none; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.textbox .textbox-text::-ms-clear, +.textbox .textbox-text::-ms-reveal { + display: none; +} +.textbox textarea.textbox-text { + white-space: pre-wrap; +} +.textbox .textbox-prompt { + font-size: 12px; + color: #aaa; +} +.textbox .textbox-bgicon { + background-position: 3px center; + padding-left: 21px; +} +.textbox .textbox-button, +.textbox .textbox-button:hover { + position: absolute; + top: 0; + padding: 0; + vertical-align: top; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.textbox .textbox-button-right, +.textbox .textbox-button-right:hover { + right: 0; + border-width: 0 0 0 1px; +} +.textbox .textbox-button-left, +.textbox .textbox-button-left:hover { + left: 0; + border-width: 0 1px 0 0; +} +.textbox .textbox-button-top, +.textbox .textbox-button-top:hover { + left: 0; + border-width: 0 0 1px 0; +} +.textbox .textbox-button-bottom, +.textbox .textbox-button-bottom:hover { + top: auto; + bottom: 0; + left: 0; + border-width: 1px 0 0 0; +} +.textbox-addon { + position: absolute; + top: 0; +} +.textbox-label { + display: inline-block; + width: 80px; + height: 22px; + line-height: 22px; + vertical-align: middle; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + margin: 0; + padding-right: 5px; +} +.textbox-label-after { + padding-left: 5px; + padding-right: 0; +} +.textbox-label-top { + display: block; + width: auto; + padding: 0; +} +.textbox-disabled, +.textbox-label-disabled { + opacity: 0.6; + filter: alpha(opacity=60); +} +.textbox-icon { + display: inline-block; + width: 18px; + height: 20px; + overflow: hidden; + vertical-align: top; + background-position: center center; + cursor: pointer; + opacity: 0.6; + filter: alpha(opacity=60); + text-decoration: none; + outline-style: none; +} +.textbox-icon-disabled, +.textbox-icon-readonly { + cursor: default; +} +.textbox-icon:hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.textbox-icon-disabled:hover { + opacity: 0.6; + filter: alpha(opacity=60); +} +.textbox-focused { + border-color: #bababa; + -moz-box-shadow: 0 0 3px 0 #D3D3D3; + -webkit-box-shadow: 0 0 3px 0 #D3D3D3; + box-shadow: 0 0 3px 0 #D3D3D3; +} +.textbox-invalid { + border-color: #ffa8a8; + background-color: #fff3f3; +} diff --git a/src/main/webapp/static/easyUI/themes/gray/tooltip.css b/src/main/webapp/static/easyUI/themes/gray/tooltip.css new file mode 100644 index 0000000000000000000000000000000000000000..e2ba0c5d3a439a82956f2eb2de20bce75efed750 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/gray/tooltip.css @@ -0,0 +1,103 @@ +.tooltip { + position: absolute; + display: none; + z-index: 9900000; + outline: none; + opacity: 1; + filter: alpha(opacity=100); + padding: 5px; + border-width: 1px; + border-style: solid; + border-radius: 5px; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.tooltip-content { + font-size: 12px; +} +.tooltip-arrow-outer, +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; + line-height: 0; + font-size: 0; + border-style: solid; + border-width: 6px; + border-color: transparent; + _border-color: tomato; + _filter: chroma(color=tomato); +} +.tooltip-arrow { + display: none \9; +} +.tooltip-right .tooltip-arrow-outer { + left: 0; + top: 50%; + margin: -6px 0 0 -13px; +} +.tooltip-right .tooltip-arrow { + left: 0; + top: 50%; + margin: -6px 0 0 -12px; +} +.tooltip-left .tooltip-arrow-outer { + right: 0; + top: 50%; + margin: -6px -13px 0 0; +} +.tooltip-left .tooltip-arrow { + right: 0; + top: 50%; + margin: -6px -12px 0 0; +} +.tooltip-top .tooltip-arrow-outer { + bottom: 0; + left: 50%; + margin: 0 0 -13px -6px; +} +.tooltip-top .tooltip-arrow { + bottom: 0; + left: 50%; + margin: 0 0 -12px -6px; +} +.tooltip-bottom .tooltip-arrow-outer { + top: 0; + left: 50%; + margin: -13px 0 0 -6px; +} +.tooltip-bottom .tooltip-arrow { + top: 0; + left: 50%; + margin: -12px 0 0 -6px; +} +.tooltip { + background-color: #ffffff; + border-color: #D3D3D3; + color: #000000; +} +.tooltip-right .tooltip-arrow-outer { + border-right-color: #D3D3D3; +} +.tooltip-right .tooltip-arrow { + border-right-color: #ffffff; +} +.tooltip-left .tooltip-arrow-outer { + border-left-color: #D3D3D3; +} +.tooltip-left .tooltip-arrow { + border-left-color: #ffffff; +} +.tooltip-top .tooltip-arrow-outer { + border-top-color: #D3D3D3; +} +.tooltip-top .tooltip-arrow { + border-top-color: #ffffff; +} +.tooltip-bottom .tooltip-arrow-outer { + border-bottom-color: #D3D3D3; +} +.tooltip-bottom .tooltip-arrow { + border-bottom-color: #ffffff; +} diff --git a/src/main/webapp/static/easyUI/themes/gray/tree.css b/src/main/webapp/static/easyUI/themes/gray/tree.css new file mode 100644 index 0000000000000000000000000000000000000000..a39504fc192f7cbd1a0feb06aeae20dacc85fbf4 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/gray/tree.css @@ -0,0 +1,161 @@ +.tree { + margin: 0; + padding: 0; + list-style-type: none; +} +.tree li { + white-space: nowrap; +} +.tree li ul { + list-style-type: none; + margin: 0; + padding: 0; +} +.tree-node { + height: 18px; + white-space: nowrap; + cursor: pointer; +} +.tree-hit { + cursor: pointer; +} +.tree-expanded, +.tree-collapsed, +.tree-folder, +.tree-file, +.tree-checkbox, +.tree-indent { + display: inline-block; + width: 16px; + height: 18px; + vertical-align: top; + overflow: hidden; +} +.tree-expanded { + background: url('images/tree_icons.png') no-repeat -18px 0px; +} +.tree-expanded-hover { + background: url('images/tree_icons.png') no-repeat -50px 0px; +} +.tree-collapsed { + background: url('images/tree_icons.png') no-repeat 0px 0px; +} +.tree-collapsed-hover { + background: url('images/tree_icons.png') no-repeat -32px 0px; +} +.tree-lines .tree-expanded, +.tree-lines .tree-root-first .tree-expanded { + background: url('images/tree_icons.png') no-repeat -144px 0; +} +.tree-lines .tree-collapsed, +.tree-lines .tree-root-first .tree-collapsed { + background: url('images/tree_icons.png') no-repeat -128px 0; +} +.tree-lines .tree-node-last .tree-expanded, +.tree-lines .tree-root-one .tree-expanded { + background: url('images/tree_icons.png') no-repeat -80px 0; +} +.tree-lines .tree-node-last .tree-collapsed, +.tree-lines .tree-root-one .tree-collapsed { + background: url('images/tree_icons.png') no-repeat -64px 0; +} +.tree-line { + background: url('images/tree_icons.png') no-repeat -176px 0; +} +.tree-join { + background: url('images/tree_icons.png') no-repeat -192px 0; +} +.tree-joinbottom { + background: url('images/tree_icons.png') no-repeat -160px 0; +} +.tree-folder { + background: url('images/tree_icons.png') no-repeat -208px 0; +} +.tree-folder-open { + background: url('images/tree_icons.png') no-repeat -224px 0; +} +.tree-file { + background: url('images/tree_icons.png') no-repeat -240px 0; +} +.tree-loading { + background: url('images/loading.gif') no-repeat center center; +} +.tree-checkbox0 { + background: url('images/tree_icons.png') no-repeat -208px -18px; +} +.tree-checkbox1 { + background: url('images/tree_icons.png') no-repeat -224px -18px; +} +.tree-checkbox2 { + background: url('images/tree_icons.png') no-repeat -240px -18px; +} +.tree-title { + font-size: 12px; + display: inline-block; + text-decoration: none; + vertical-align: top; + white-space: nowrap; + padding: 0 2px; + height: 18px; + line-height: 18px; +} +.tree-node-proxy { + font-size: 12px; + line-height: 20px; + padding: 0 2px 0 20px; + border-width: 1px; + border-style: solid; + z-index: 9900000; +} +.tree-dnd-icon { + display: inline-block; + position: absolute; + width: 16px; + height: 18px; + left: 2px; + top: 50%; + margin-top: -9px; +} +.tree-dnd-yes { + background: url('images/tree_icons.png') no-repeat -256px 0; +} +.tree-dnd-no { + background: url('images/tree_icons.png') no-repeat -256px -18px; +} +.tree-node-top { + border-top: 1px dotted red; +} +.tree-node-bottom { + border-bottom: 1px dotted red; +} +.tree-node-append .tree-title { + border: 1px dotted red; +} +.tree-editor { + border: 1px solid #D3D3D3; + font-size: 12px; + line-height: 16px; + padding: 0 4px; + margin: 0; + width: 80px; + outline-style: none; + vertical-align: top; + position: absolute; + top: 0; +} +.tree-node-proxy { + background-color: #ffffff; + color: #000000; + border-color: #D3D3D3; +} +.tree-node-hover { + background: #e2e2e2; + color: #000000; +} +.tree-node-selected { + background: #0092DC; + color: #fff; +} +.tree-node-hidden { + display: none; +} diff --git a/src/main/webapp/static/easyUI/themes/gray/validatebox.css b/src/main/webapp/static/easyUI/themes/gray/validatebox.css new file mode 100644 index 0000000000000000000000000000000000000000..1fc3ad64e4f79ba1b3d4e715f3dd0cd8ae0ac3fc --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/gray/validatebox.css @@ -0,0 +1,5 @@ +.validatebox-invalid { + border-color: #ffa8a8; + background-color: #fff3f3; + color: #000; +} diff --git a/src/main/webapp/static/easyUI/themes/gray/window.css b/src/main/webapp/static/easyUI/themes/gray/window.css new file mode 100644 index 0000000000000000000000000000000000000000..bd69fdbd91bff78b6ed892dc52b9e9c1b44730bf --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/gray/window.css @@ -0,0 +1,183 @@ +.window { + overflow: hidden; + padding: 5px; + border-width: 1px; + border-style: solid; +} +.window .window-header { + background: transparent; + padding: 0px 0px 6px 0px; +} +.window .window-body { + border-width: 1px; + border-style: solid; + border-top-width: 0px; +} +.window .window-body-noheader { + border-top-width: 1px; +} +.window .panel-body-nobottom { + border-bottom-width: 0; +} +.window .window-header .panel-icon, +.window .window-header .panel-tool { + top: 50%; + margin-top: -11px; +} +.window .window-header .panel-icon { + left: 1px; +} +.window .window-header .panel-tool { + right: 1px; +} +.window .window-header .panel-with-icon { + padding-left: 18px; +} +.window-proxy { + position: absolute; + overflow: hidden; +} +.window-proxy-mask { + position: absolute; + filter: alpha(opacity=5); + opacity: 0.05; +} +.window-mask { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + filter: alpha(opacity=40); + opacity: 0.40; + font-size: 1px; + overflow: hidden; +} +.window, +.window-shadow { + position: absolute; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.window-shadow { + background: #ccc; + -moz-box-shadow: 2px 2px 3px #cccccc; + -webkit-box-shadow: 2px 2px 3px #cccccc; + box-shadow: 2px 2px 3px #cccccc; + filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); +} +.window, +.window .window-body { + border-color: #D3D3D3; +} +.window { + background-color: #f3f3f3; + background: -webkit-linear-gradient(top,#F8F8F8 0,#eeeeee 20%); + background: -moz-linear-gradient(top,#F8F8F8 0,#eeeeee 20%); + background: -o-linear-gradient(top,#F8F8F8 0,#eeeeee 20%); + background: linear-gradient(to bottom,#F8F8F8 0,#eeeeee 20%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#F8F8F8,endColorstr=#eeeeee,GradientType=0); +} +.window-proxy { + border: 1px dashed #D3D3D3; +} +.window-proxy-mask, +.window-mask { + background: #ccc; +} +.window .panel-footer { + border: 1px solid #D3D3D3; + position: relative; + top: -1px; +} +.window-thinborder { + padding: 0; +} +.window-thinborder .window-header { + padding: 5px 5px 6px 5px; +} +.window-thinborder .window-body { + border-width: 0px; +} +.window-thinborder .window-header .panel-icon, +.window-thinborder .window-header .panel-tool { + margin-top: -9px; + margin-left: 5px; + margin-right: 5px; +} +.window-noborder { + border: 0; +} +.window.panel-hleft .window-header { + padding: 0 6px 0 0; +} +.window.panel-hright .window-header { + padding: 0 0 0 6px; +} +.window.panel-hleft>.panel-header .panel-title { + top: auto; + left: 16px; +} +.window.panel-hright>.panel-header .panel-title { + top: auto; + right: 16px; +} +.window.panel-hleft>.panel-header .panel-title-up, +.window.panel-hright>.panel-header .panel-title-up { + bottom: 0; +} +.window.panel-hleft .window-body { + border-width: 1px 1px 1px 0; +} +.window.panel-hright .window-body { + border-width: 1px 0 1px 1px; +} +.window.panel-hleft .window-header .panel-icon { + top: 1px; + margin-top: 0; + left: 0; +} +.window.panel-hright .window-header .panel-icon { + top: 1px; + margin-top: 0; + left: auto; + right: 1px; +} +.window.panel-hleft .window-header .panel-tool, +.window.panel-hright .window-header .panel-tool { + margin-top: 0; + top: auto; + bottom: 1px; + right: auto; + margin-right: 0; + left: 50%; + margin-left: -11px; +} +.window.panel-hright .window-header .panel-tool { + left: auto; + right: 1px; +} +.window-thinborder.panel-hleft .window-header { + padding: 5px 6px 5px 5px; +} +.window-thinborder.panel-hright .window-header { + padding: 5px 5px 5px 6px; +} +.window-thinborder.panel-hleft>.panel-header .panel-title { + left: 21px; +} +.window-thinborder.panel-hleft>.panel-header .panel-title-up, +.window-thinborder.panel-hright>.panel-header .panel-title-up { + bottom: 5px; +} +.window-thinborder.panel-hleft .window-header .panel-icon, +.window-thinborder.panel-hright .window-header .panel-icon { + margin-top: 5px; +} +.window-thinborder.panel-hleft .window-header .panel-tool, +.window-thinborder.panel-hright .window-header .panel-tool { + left: 16px; + bottom: 5px; +} diff --git a/src/main/webapp/static/easyUI/themes/icon.css b/src/main/webapp/static/easyUI/themes/icon.css new file mode 100644 index 0000000000000000000000000000000000000000..c2d3b2161e2872eadadc2d61daacad56b0c273ae --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/icon.css @@ -0,0 +1,96 @@ +.icon-blank{ + background:url('icons/blank.gif') no-repeat center center; +} +.icon-add{ + background:url('icons/edit_add.png') no-repeat center center; +} +.icon-edit{ + background:url('icons/pencil.png') no-repeat center center; +} +.icon-clear{ + background:url('icons/clear.png') no-repeat center center; +} +.icon-remove{ + background:url('icons/edit_remove.png') no-repeat center center; +} +.icon-save{ + background:url('icons/filesave.png') no-repeat center center; +} +.icon-cut{ + background:url('icons/cut.png') no-repeat center center; +} +.icon-ok{ + background:url('icons/ok.png') no-repeat center center; +} +.icon-no{ + background:url('icons/no.png') no-repeat center center; +} +.icon-cancel{ + background:url('icons/cancel.png') no-repeat center center; +} +.icon-reload{ + background:url('icons/reload.png') no-repeat center center; +} +.icon-search{ + background:url('icons/search.png') no-repeat center center; +} +.icon-print{ + background:url('icons/print.png') no-repeat center center; +} +.icon-help{ + background:url('icons/help.png') no-repeat center center; +} +.icon-undo{ + background:url('icons/undo.png') no-repeat center center; +} +.icon-redo{ + background:url('icons/redo.png') no-repeat center center; +} +.icon-back{ + background:url('icons/back.png') no-repeat center center; +} +.icon-sum{ + background:url('icons/sum.png') no-repeat center center; +} +.icon-tip{ + background:url('icons/tip.png') no-repeat center center; +} +.icon-filter{ + background:url('icons/filter.png') no-repeat center center; +} +.icon-man{ + background:url('icons/man.png') no-repeat center center; +} +.icon-lock{ + background:url('icons/lock.png') no-repeat center center; +} +.icon-more{ + background:url('icons/more.png') no-repeat center center; +} + + +.icon-mini-add{ + background:url('icons/mini_add.png') no-repeat center center; +} +.icon-mini-edit{ + background:url('icons/mini_edit.png') no-repeat center center; +} +.icon-mini-refresh{ + background:url('icons/mini_refresh.png') no-repeat center center; +} + +.icon-large-picture{ + background:url('icons/large_picture.png') no-repeat center center; +} +.icon-large-clipart{ + background:url('icons/large_clipart.png') no-repeat center center; +} +.icon-large-shapes{ + background:url('icons/large_shapes.png') no-repeat center center; +} +.icon-large-smartart{ + background:url('icons/large_smartart.png') no-repeat center center; +} +.icon-large-chart{ + background:url('icons/large_chart.png') no-repeat center center; +} diff --git a/src/main/webapp/static/easyUI/themes/icons/back.png b/src/main/webapp/static/easyUI/themes/icons/back.png new file mode 100644 index 0000000000000000000000000000000000000000..3fe8b178ec9eb9fdbfefe0f2c81c8d4acf0dc275 Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/icons/back.png differ diff --git a/src/main/webapp/static/easyUI/themes/icons/blank.gif b/src/main/webapp/static/easyUI/themes/icons/blank.gif new file mode 100644 index 0000000000000000000000000000000000000000..1d11fa9ada9e93505b3d736acb204083f45d5fbf Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/icons/blank.gif differ diff --git a/src/main/webapp/static/easyUI/themes/icons/cancel.png b/src/main/webapp/static/easyUI/themes/icons/cancel.png new file mode 100644 index 0000000000000000000000000000000000000000..a432b492c4f8f54714290b27bd978eefa714488d Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/icons/cancel.png differ diff --git a/src/main/webapp/static/easyUI/themes/icons/clear.png b/src/main/webapp/static/easyUI/themes/icons/clear.png new file mode 100644 index 0000000000000000000000000000000000000000..74b9af91927d834d01fd0d7d54ce2c9a3a42d76b Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/icons/clear.png differ diff --git a/src/main/webapp/static/easyUI/themes/icons/cut.png b/src/main/webapp/static/easyUI/themes/icons/cut.png new file mode 100644 index 0000000000000000000000000000000000000000..21fdb4dc3c8ee79a0ce59a981c336538bb334442 Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/icons/cut.png differ diff --git a/src/main/webapp/static/easyUI/themes/icons/edit_add.png b/src/main/webapp/static/easyUI/themes/icons/edit_add.png new file mode 100644 index 0000000000000000000000000000000000000000..e9485082eaadcff004248709f3af8faefb07c191 Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/icons/edit_add.png differ diff --git a/src/main/webapp/static/easyUI/themes/icons/edit_remove.png b/src/main/webapp/static/easyUI/themes/icons/edit_remove.png new file mode 100644 index 0000000000000000000000000000000000000000..d555d921aca63ae58b81fdc20f2bb97ecf3b8a3a Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/icons/edit_remove.png differ diff --git a/src/main/webapp/static/easyUI/themes/icons/filesave.png b/src/main/webapp/static/easyUI/themes/icons/filesave.png new file mode 100644 index 0000000000000000000000000000000000000000..fd0048ded9baa040b1c04b84cca92550acad6f64 Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/icons/filesave.png differ diff --git a/src/main/webapp/static/easyUI/themes/icons/filter.png b/src/main/webapp/static/easyUI/themes/icons/filter.png new file mode 100644 index 0000000000000000000000000000000000000000..1fedf7ae66f9512c8991a91f606e33926210dfd1 Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/icons/filter.png differ diff --git a/src/main/webapp/static/easyUI/themes/icons/help.png b/src/main/webapp/static/easyUI/themes/icons/help.png new file mode 100644 index 0000000000000000000000000000000000000000..28a0f9e5e6a24fe2cc3d842d0708e70512dbf84b Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/icons/help.png differ diff --git a/src/main/webapp/static/easyUI/themes/icons/large_chart.png b/src/main/webapp/static/easyUI/themes/icons/large_chart.png new file mode 100644 index 0000000000000000000000000000000000000000..527608ee94683724de57fac1ed7593714ac41be4 Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/icons/large_chart.png differ diff --git a/src/main/webapp/static/easyUI/themes/icons/large_clipart.png b/src/main/webapp/static/easyUI/themes/icons/large_clipart.png new file mode 100644 index 0000000000000000000000000000000000000000..9c9c44002b6f76fcddea75aad020f5f58e91d10f Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/icons/large_clipart.png differ diff --git a/src/main/webapp/static/easyUI/themes/icons/large_picture.png b/src/main/webapp/static/easyUI/themes/icons/large_picture.png new file mode 100644 index 0000000000000000000000000000000000000000..a005b0c68c45d874a268863d2d739937b62ac0fe Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/icons/large_picture.png differ diff --git a/src/main/webapp/static/easyUI/themes/icons/large_shapes.png b/src/main/webapp/static/easyUI/themes/icons/large_shapes.png new file mode 100644 index 0000000000000000000000000000000000000000..90a0dcacd8d8b851262102fbbd9f99e23404da11 Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/icons/large_shapes.png differ diff --git a/src/main/webapp/static/easyUI/themes/icons/large_smartart.png b/src/main/webapp/static/easyUI/themes/icons/large_smartart.png new file mode 100644 index 0000000000000000000000000000000000000000..b47da08fa7ff9b56f6abb2517cb6c2177029faf8 Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/icons/large_smartart.png differ diff --git a/src/main/webapp/static/easyUI/themes/icons/lock.png b/src/main/webapp/static/easyUI/themes/icons/lock.png new file mode 100644 index 0000000000000000000000000000000000000000..15bd643296910fe69ed5f29846958f52869d65f2 Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/icons/lock.png differ diff --git a/src/main/webapp/static/easyUI/themes/icons/man.png b/src/main/webapp/static/easyUI/themes/icons/man.png new file mode 100644 index 0000000000000000000000000000000000000000..a8cafcb9a1bc9fafbc429093084aa2e5b37103b6 Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/icons/man.png differ diff --git a/src/main/webapp/static/easyUI/themes/icons/mini_add.png b/src/main/webapp/static/easyUI/themes/icons/mini_add.png new file mode 100644 index 0000000000000000000000000000000000000000..fd82b92dcf2611ed7f4a383e481e10d9ade9d830 Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/icons/mini_add.png differ diff --git a/src/main/webapp/static/easyUI/themes/icons/mini_edit.png b/src/main/webapp/static/easyUI/themes/icons/mini_edit.png new file mode 100644 index 0000000000000000000000000000000000000000..db9221a8081fee0614bc401884f56a00564a315e Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/icons/mini_edit.png differ diff --git a/src/main/webapp/static/easyUI/themes/icons/mini_refresh.png b/src/main/webapp/static/easyUI/themes/icons/mini_refresh.png new file mode 100644 index 0000000000000000000000000000000000000000..6cdd016036ae125500c40abebd42db09b69ecb63 Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/icons/mini_refresh.png differ diff --git a/src/main/webapp/static/easyUI/themes/icons/more.png b/src/main/webapp/static/easyUI/themes/icons/more.png new file mode 100644 index 0000000000000000000000000000000000000000..94922a2c86cb6b1cd2a7085e055073226ad591ed Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/icons/more.png differ diff --git a/src/main/webapp/static/easyUI/themes/icons/no.png b/src/main/webapp/static/easyUI/themes/icons/no.png new file mode 100644 index 0000000000000000000000000000000000000000..37a7c7497782dadcf14a765051a62dd5616200c5 Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/icons/no.png differ diff --git a/src/main/webapp/static/easyUI/themes/icons/ok.png b/src/main/webapp/static/easyUI/themes/icons/ok.png new file mode 100644 index 0000000000000000000000000000000000000000..5b0f6a6174f67879d89b8c970d88734cd6f9f844 Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/icons/ok.png differ diff --git a/src/main/webapp/static/easyUI/themes/icons/pencil.png b/src/main/webapp/static/easyUI/themes/icons/pencil.png new file mode 100644 index 0000000000000000000000000000000000000000..5b8cc893d0e50c0e15cf10fbbb08706f81ec224a Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/icons/pencil.png differ diff --git a/src/main/webapp/static/easyUI/themes/icons/print.png b/src/main/webapp/static/easyUI/themes/icons/print.png new file mode 100644 index 0000000000000000000000000000000000000000..fdf67a1e2771c1481d4fdf3c3bb219904cdde434 Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/icons/print.png differ diff --git a/src/main/webapp/static/easyUI/themes/icons/redo.png b/src/main/webapp/static/easyUI/themes/icons/redo.png new file mode 100644 index 0000000000000000000000000000000000000000..f1e45cff9397f422f9d63459ea3e685d441f09ba Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/icons/redo.png differ diff --git a/src/main/webapp/static/easyUI/themes/icons/reload.png b/src/main/webapp/static/easyUI/themes/icons/reload.png new file mode 100644 index 0000000000000000000000000000000000000000..f51cab8e3fe91b0e3906b0522d550935776dd7fa Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/icons/reload.png differ diff --git a/src/main/webapp/static/easyUI/themes/icons/search.png b/src/main/webapp/static/easyUI/themes/icons/search.png new file mode 100644 index 0000000000000000000000000000000000000000..6dd1931589b453f6cc9772fd1851d8705d6b6631 Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/icons/search.png differ diff --git a/src/main/webapp/static/easyUI/themes/icons/sum.png b/src/main/webapp/static/easyUI/themes/icons/sum.png new file mode 100644 index 0000000000000000000000000000000000000000..fd7b32e43bc8128181c1aeacc2c1b0af9dac484b Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/icons/sum.png differ diff --git a/src/main/webapp/static/easyUI/themes/icons/tip.png b/src/main/webapp/static/easyUI/themes/icons/tip.png new file mode 100644 index 0000000000000000000000000000000000000000..845e11070a79387b5639c1eb7185d07ef954de3d Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/icons/tip.png differ diff --git a/src/main/webapp/static/easyUI/themes/icons/undo.png b/src/main/webapp/static/easyUI/themes/icons/undo.png new file mode 100644 index 0000000000000000000000000000000000000000..6129fa0c77eb1d2100ed1c99b5643ab8990a9566 Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/icons/undo.png differ diff --git a/src/main/webapp/static/easyUI/themes/material/accordion.css b/src/main/webapp/static/easyUI/themes/material/accordion.css new file mode 100644 index 0000000000000000000000000000000000000000..51d0c7010bd6f4ec7e2442387e3e004428a181eb --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/material/accordion.css @@ -0,0 +1,89 @@ +.accordion { + overflow: hidden; + border-width: 1px; + border-style: solid; +} +.accordion .accordion-header { + border-width: 0 0 1px; + cursor: pointer; +} +.accordion .accordion-body { + border-width: 0 0 1px; +} +.accordion-noborder { + border-width: 0; +} +.accordion-noborder .accordion-header { + border-width: 0 0 1px; +} +.accordion-noborder .accordion-body { + border-width: 0 0 1px; +} +.accordion-collapse { + background: url('images/accordion_arrows.png') no-repeat 0 0; +} +.accordion-expand { + background: url('images/accordion_arrows.png') no-repeat -16px 0; +} +.accordion { + background: #ffffff; + border-color: #ddd; +} +.accordion .accordion-header { + background: #f5f5f5; + filter: none; +} +.accordion .accordion-header-selected { + background: #00bbee; +} +.accordion .accordion-header-selected .panel-title { + color: #fff; +} +.accordion .panel-last > .accordion-header { + border-bottom-color: #f5f5f5; +} +.accordion .panel-last > .accordion-body { + border-bottom-color: #ffffff; +} +.accordion .panel-last > .accordion-header-selected, +.accordion .panel-last > .accordion-header-border { + border-bottom-color: #ddd; +} +.accordion> .panel-hleft { + float: left; +} +.accordion> .panel-hleft>.panel-header { + border-width: 0 1px 0 0; +} +.accordion> .panel-hleft> .panel-body { + border-width: 0 1px 0 0; +} +.accordion> .panel-hleft.panel-last > .accordion-header { + border-right-color: #f5f5f5; +} +.accordion> .panel-hleft.panel-last > .accordion-body { + border-right-color: #ffffff; +} +.accordion> .panel-hleft.panel-last > .accordion-header-selected, +.accordion> .panel-hleft.panel-last > .accordion-header-border { + border-right-color: #ddd; +} +.accordion> .panel-hright { + float: right; +} +.accordion> .panel-hright>.panel-header { + border-width: 0 0 0 1px; +} +.accordion> .panel-hright> .panel-body { + border-width: 0 0 0 1px; +} +.accordion> .panel-hright.panel-last > .accordion-header { + border-left-color: #f5f5f5; +} +.accordion> .panel-hright.panel-last > .accordion-body { + border-left-color: #ffffff; +} +.accordion> .panel-hright.panel-last > .accordion-header-selected, +.accordion> .panel-hright.panel-last > .accordion-header-border { + border-left-color: #ddd; +} diff --git a/src/main/webapp/static/easyUI/themes/material/calendar.css b/src/main/webapp/static/easyUI/themes/material/calendar.css new file mode 100644 index 0000000000000000000000000000000000000000..47ba4b19a049a55bdd6cca15d849c57d88845615 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/material/calendar.css @@ -0,0 +1,202 @@ +.calendar { + border-width: 1px; + border-style: solid; + padding: 1px; + overflow: hidden; +} +.calendar table { + table-layout: fixed; + border-collapse: separate; + font-size: 12px; + width: 100%; + height: 100%; +} +.calendar table td, +.calendar table th { + font-size: 12px; +} +.calendar-noborder { + border: 0; +} +.calendar-header { + position: relative; + height: 22px; +} +.calendar-title { + text-align: center; + height: 22px; +} +.calendar-title span { + position: relative; + display: inline-block; + top: 2px; + padding: 0 3px; + height: 18px; + line-height: 18px; + font-size: 12px; + cursor: pointer; + -moz-border-radius: 4px 4px 4px 4px; + -webkit-border-radius: 4px 4px 4px 4px; + border-radius: 4px 4px 4px 4px; +} +.calendar-prevmonth, +.calendar-nextmonth, +.calendar-prevyear, +.calendar-nextyear { + position: absolute; + top: 50%; + margin-top: -7px; + width: 14px; + height: 14px; + cursor: pointer; + font-size: 1px; + -moz-border-radius: 4px 4px 4px 4px; + -webkit-border-radius: 4px 4px 4px 4px; + border-radius: 4px 4px 4px 4px; +} +.calendar-prevmonth { + left: 20px; + background: url('images/calendar_arrows.png') no-repeat -18px -2px; +} +.calendar-nextmonth { + right: 20px; + background: url('images/calendar_arrows.png') no-repeat -34px -2px; +} +.calendar-prevyear { + left: 3px; + background: url('images/calendar_arrows.png') no-repeat -1px -2px; +} +.calendar-nextyear { + right: 3px; + background: url('images/calendar_arrows.png') no-repeat -49px -2px; +} +.calendar-body { + position: relative; +} +.calendar-body th, +.calendar-body td { + text-align: center; +} +.calendar-day { + border: 0; + padding: 1px; + cursor: pointer; + -moz-border-radius: 4px 4px 4px 4px; + -webkit-border-radius: 4px 4px 4px 4px; + border-radius: 4px 4px 4px 4px; +} +.calendar-other-month { + opacity: 0.3; + filter: alpha(opacity=30); +} +.calendar-disabled { + opacity: 0.6; + filter: alpha(opacity=60); + cursor: default; +} +.calendar-menu { + position: absolute; + top: 0; + left: 0; + width: 180px; + height: 150px; + padding: 5px; + font-size: 12px; + display: none; + overflow: hidden; +} +.calendar-menu-year-inner { + text-align: center; + padding-bottom: 5px; +} +.calendar-menu-year { + width: 50px; + text-align: center; + border-width: 1px; + border-style: solid; + outline-style: none; + resize: none; + margin: 0; + padding: 2px; + font-weight: bold; + font-size: 12px; + -moz-border-radius: 4px 4px 4px 4px; + -webkit-border-radius: 4px 4px 4px 4px; + border-radius: 4px 4px 4px 4px; +} +.calendar-menu-prev, +.calendar-menu-next { + display: inline-block; + width: 21px; + height: 21px; + vertical-align: top; + cursor: pointer; + -moz-border-radius: 4px 4px 4px 4px; + -webkit-border-radius: 4px 4px 4px 4px; + border-radius: 4px 4px 4px 4px; +} +.calendar-menu-prev { + margin-right: 10px; + background: url('images/calendar_arrows.png') no-repeat 2px 2px; +} +.calendar-menu-next { + margin-left: 10px; + background: url('images/calendar_arrows.png') no-repeat -45px 2px; +} +.calendar-menu-month { + text-align: center; + cursor: pointer; + font-weight: bold; + -moz-border-radius: 4px 4px 4px 4px; + -webkit-border-radius: 4px 4px 4px 4px; + border-radius: 4px 4px 4px 4px; +} +.calendar-body th, +.calendar-menu-month { + color: #8d8d8d; +} +.calendar-day { + color: #404040; +} +.calendar-sunday { + color: #CC2222; +} +.calendar-saturday { + color: #00ee00; +} +.calendar-today { + color: #0000ff; +} +.calendar-menu-year { + border-color: #ddd; +} +.calendar { + border-color: #ddd; +} +.calendar-header { + background: #f5f5f5; +} +.calendar-body, +.calendar-menu { + background: #ffffff; +} +.calendar-body th { + background: #fafafa; + padding: 2px 0; +} +.calendar-hover, +.calendar-nav-hover, +.calendar-menu-hover { + background-color: #eee; + color: #404040; +} +.calendar-hover { + border: 1px solid #ccc; + padding: 0; +} +.calendar-selected { + background-color: #00bbee; + color: #fff; + border: 1px solid #9cc8f7; + padding: 0; +} diff --git a/src/main/webapp/static/easyUI/themes/material/combo.css b/src/main/webapp/static/easyUI/themes/material/combo.css new file mode 100644 index 0000000000000000000000000000000000000000..622d7c2db8639df69e2dff0ffc41b06986b49716 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/material/combo.css @@ -0,0 +1,35 @@ +.combo-arrow { + width: 18px; + height: 20px; + overflow: hidden; + display: inline-block; + vertical-align: top; + cursor: pointer; + opacity: 0.6; + filter: alpha(opacity=60); +} +.combo-arrow-hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.combo-panel { + overflow: auto; +} +.combo-arrow { + background: url('images/combo_arrow.png') no-repeat center center; +} +.combo-panel { + background-color: #ffffff; +} +.combo-arrow { + background-color: #f5f5f5; +} +.combo-arrow-hover { + background-color: #eee; +} +.combo-arrow:hover { + background-color: #eee; +} +.combo .textbox-icon-disabled:hover { + cursor: default; +} diff --git a/src/main/webapp/static/easyUI/themes/material/combobox.css b/src/main/webapp/static/easyUI/themes/material/combobox.css new file mode 100644 index 0000000000000000000000000000000000000000..8f97a2b9055dffa201c240055634363c6eb869cd --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/material/combobox.css @@ -0,0 +1,39 @@ +.combobox-item, +.combobox-group, +.combobox-stick { + font-size: 12px; + padding: 3px; +} +.combobox-item-disabled { + opacity: 0.5; + filter: alpha(opacity=50); +} +.combobox-gitem { + padding-left: 10px; +} +.combobox-group, +.combobox-stick { + font-weight: bold; +} +.combobox-stick { + position: absolute; + top: 1px; + left: 1px; + right: 1px; + background: inherit; +} +.combobox-item-hover { + background-color: #eee; + color: #404040; +} +.combobox-item-selected { + background-color: #00bbee; + color: #fff; +} +.combobox-icon { + display: inline-block; + width: 16px; + height: 16px; + vertical-align: middle; + margin-right: 2px; +} diff --git a/src/main/webapp/static/easyUI/themes/material/datagrid.css b/src/main/webapp/static/easyUI/themes/material/datagrid.css new file mode 100644 index 0000000000000000000000000000000000000000..7259808351379c48d1dd903a9a87131f706420b3 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/material/datagrid.css @@ -0,0 +1,282 @@ +.datagrid .panel-body { + overflow: hidden; + position: relative; +} +.datagrid-view { + position: relative; + overflow: hidden; +} +.datagrid-view1, +.datagrid-view2 { + position: absolute; + overflow: hidden; + top: 0; +} +.datagrid-view1 { + left: 0; +} +.datagrid-view2 { + right: 0; +} +.datagrid-mask { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + opacity: 0.3; + filter: alpha(opacity=30); + display: none; +} +.datagrid-mask-msg { + position: absolute; + top: 50%; + margin-top: -20px; + padding: 10px 5px 10px 30px; + width: auto; + height: 16px; + border-width: 2px; + border-style: solid; + display: none; +} +.datagrid-empty { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 25px; + line-height: 25px; + text-align: center; +} +.datagrid-sort-icon { + padding: 0; + display: none; +} +.datagrid-toolbar { + height: auto; + padding: 1px 2px; + border-width: 0 0 1px 0; + border-style: solid; +} +.datagrid-btn-separator { + float: left; + height: 24px; + border-left: 1px solid #ddd; + border-right: 1px solid #fff; + margin: 2px 1px; +} +.datagrid .datagrid-pager { + display: block; + margin: 0; + border-width: 1px 0 0 0; + border-style: solid; +} +.datagrid .datagrid-pager-top { + border-width: 0 0 1px 0; +} +.datagrid-header { + overflow: hidden; + cursor: default; + border-width: 0 0 1px 0; + border-style: solid; +} +.datagrid-header-inner { + float: left; + width: 10000px; +} +.datagrid-header-row, +.datagrid-row { + height: 25px; +} +.datagrid-header td, +.datagrid-body td, +.datagrid-footer td { + border-width: 0 1px 1px 0; + border-style: dotted; + margin: 0; + padding: 0; +} +.datagrid-cell, +.datagrid-cell-group, +.datagrid-header-rownumber, +.datagrid-cell-rownumber { + margin: 0; + padding: 0 4px; + white-space: nowrap; + word-wrap: normal; + overflow: hidden; + height: 18px; + line-height: 18px; + font-size: 12px; +} +.datagrid-header .datagrid-cell { + height: auto; +} +.datagrid-header .datagrid-cell span { + font-size: 12px; +} +.datagrid-cell-group { + text-align: center; + text-overflow: ellipsis; +} +.datagrid-header-rownumber, +.datagrid-cell-rownumber { + width: 30px; + text-align: center; + margin: 0; + padding: 0; +} +.datagrid-body { + margin: 0; + padding: 0; + overflow: auto; + zoom: 1; +} +.datagrid-view1 .datagrid-body-inner { + padding-bottom: 20px; +} +.datagrid-view1 .datagrid-body { + overflow: hidden; +} +.datagrid-footer { + overflow: hidden; +} +.datagrid-footer-inner { + border-width: 1px 0 0 0; + border-style: solid; + width: 10000px; + float: left; +} +.datagrid-row-editing .datagrid-cell { + height: auto; +} +.datagrid-header-check, +.datagrid-cell-check { + padding: 0; + width: 27px; + height: 18px; + font-size: 1px; + text-align: center; + overflow: hidden; +} +.datagrid-header-check input, +.datagrid-cell-check input { + margin: 0; + padding: 0; + width: 15px; + height: 18px; +} +.datagrid-resize-proxy { + position: absolute; + width: 1px; + height: 10000px; + top: 0; + cursor: e-resize; + display: none; +} +.datagrid-body .datagrid-editable { + margin: 0; + padding: 0; +} +.datagrid-body .datagrid-editable table { + width: 100%; + height: 100%; +} +.datagrid-body .datagrid-editable td { + border: 0; + margin: 0; + padding: 0; +} +.datagrid-view .datagrid-editable-input { + margin: 0; + padding: 2px 4px; + border: 1px solid #ddd; + font-size: 12px; + outline-style: none; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.datagrid-view .validatebox-invalid { + border-color: #ffa8a8; +} +.datagrid-sort .datagrid-sort-icon { + display: inline; + padding: 0 13px 0 0; + background: url('images/datagrid_icons.png') no-repeat -64px center; +} +.datagrid-sort-desc .datagrid-sort-icon { + display: inline; + padding: 0 13px 0 0; + background: url('images/datagrid_icons.png') no-repeat -16px center; +} +.datagrid-sort-asc .datagrid-sort-icon { + display: inline; + padding: 0 13px 0 0; + background: url('images/datagrid_icons.png') no-repeat 0px center; +} +.datagrid-row-collapse { + background: url('images/datagrid_icons.png') no-repeat -48px center; +} +.datagrid-row-expand { + background: url('images/datagrid_icons.png') no-repeat -32px center; +} +.datagrid-mask-msg { + background: #ffffff url('images/loading.gif') no-repeat scroll 5px center; +} +.datagrid-header, +.datagrid-td-rownumber { + background-color: #fafafa; +} +.datagrid-cell-rownumber { + color: #404040; +} +.datagrid-resize-proxy { + background: #ccc; +} +.datagrid-mask { + background: #eee; +} +.datagrid-mask-msg { + border-color: #ddd; +} +.datagrid-toolbar, +.datagrid-pager { + background: #fafafa; +} +.datagrid-header, +.datagrid-toolbar, +.datagrid-pager, +.datagrid-footer-inner { + border-color: #eee; +} +.datagrid-header td, +.datagrid-body td, +.datagrid-footer td { + border-color: #ebebeb; +} +.datagrid-htable, +.datagrid-btable, +.datagrid-ftable { + color: #404040; + border-collapse: separate; +} +.datagrid-row-alt { + background: #f9f9f9; +} +.datagrid-row-over, +.datagrid-header td.datagrid-header-over { + background: #eee; + color: #404040; + cursor: default; +} +.datagrid-row-selected { + background: #00bbee; + color: #fff; +} +.datagrid-row-editing .textbox, +.datagrid-row-editing .textbox-text { + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} diff --git a/src/main/webapp/static/easyUI/themes/material/datalist.css b/src/main/webapp/static/easyUI/themes/material/datalist.css new file mode 100644 index 0000000000000000000000000000000000000000..27617f0b59369296dfbb8a32f812800952c7e154 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/material/datalist.css @@ -0,0 +1,95 @@ +.datalist .datagrid-header { + border-width: 0; +} +.datalist .datagrid-group, +.m-list .m-list-group { + height: 25px; + line-height: 25px; + font-weight: bold; + overflow: hidden; + background-color: #fafafa; + border-style: solid; + border-width: 0 0 1px 0; + border-color: #ebebeb; +} +.datalist .datagrid-group-expander { + display: none; +} +.datalist .datagrid-group-title { + padding: 0 4px; +} +.datalist .datagrid-btable { + width: 100%; + table-layout: fixed; +} +.datalist .datagrid-row td { + border-style: solid; + border-left-color: transparent; + border-right-color: transparent; + border-bottom-width: 0; +} +.datalist-lines .datagrid-row td { + border-bottom-width: 1px; +} +.datalist .datagrid-cell, +.m-list li { + width: auto; + height: auto; + padding: 2px 4px; + line-height: 18px; + position: relative; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; +} +.datalist-link, +.m-list li>a { + display: block; + position: relative; + cursor: pointer; + color: #404040; + text-decoration: none; + overflow: hidden; + margin: -2px -4px; + padding: 2px 4px; + padding-right: 16px; + line-height: 18px; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; +} +.datalist-link::after, +.m-list li>a::after { + position: absolute; + display: block; + width: 8px; + height: 8px; + content: ''; + right: 6px; + top: 50%; + margin-top: -4px; + border-style: solid; + border-width: 1px 1px 0 0; + -ms-transform: rotate(45deg); + -moz-transform: rotate(45deg); + -webkit-transform: rotate(45deg); + -o-transform: rotate(45deg); + transform: rotate(45deg); +} +.m-list { + margin: 0; + padding: 0; + list-style: none; +} +.m-list li { + border-style: solid; + border-width: 0 0 1px 0; + border-color: #ebebeb; +} +.m-list li>a:hover { + background: #eee; + color: #404040; +} +.m-list .m-list-group { + padding: 0 4px; +} diff --git a/src/main/webapp/static/easyUI/themes/material/datebox.css b/src/main/webapp/static/easyUI/themes/material/datebox.css new file mode 100644 index 0000000000000000000000000000000000000000..e2874e820bbc4a15a964006a4948f5920b3a6521 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/material/datebox.css @@ -0,0 +1,36 @@ +.datebox-calendar-inner { + height: 180px; +} +.datebox-button { + padding: 0 5px; + text-align: center; +} +.datebox-button a { + line-height: 22px; + font-size: 12px; + font-weight: bold; + text-decoration: none; + opacity: 0.6; + filter: alpha(opacity=60); +} +.datebox-button a:hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.datebox-current, +.datebox-close { + float: left; +} +.datebox-close { + float: right; +} +.datebox .combo-arrow { + background-image: url('images/datebox_arrow.png'); + background-position: center center; +} +.datebox-button { + background-color: #fafafa; +} +.datebox-button a { + color: #404040; +} diff --git a/src/main/webapp/static/easyUI/themes/material/dialog.css b/src/main/webapp/static/easyUI/themes/material/dialog.css new file mode 100644 index 0000000000000000000000000000000000000000..82a1bb8815077658ddae8b08caee384d0dd1858d --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/material/dialog.css @@ -0,0 +1,47 @@ +.dialog-content { + overflow: auto; +} +.dialog-toolbar { + position: relative; + padding: 2px 5px; +} +.dialog-tool-separator { + float: left; + height: 24px; + border-left: 1px solid #ddd; + border-right: 1px solid #fff; + margin: 2px 1px; +} +.dialog-button { + position: relative; + top: -1px; + padding: 5px; + text-align: right; +} +.dialog-button .l-btn { + margin-left: 5px; +} +.dialog-toolbar, +.dialog-button { + background: #fafafa; + border-width: 1px; + border-style: solid; +} +.dialog-toolbar { + border-color: #ddd #ddd #eee #ddd; +} +.dialog-button { + border-color: #eee #ddd #ddd #ddd; +} +.window-thinborder .dialog-toolbar { + border-left: transparent; + border-right: transparent; + border-top-color: #fafafa; +} +.window-thinborder .dialog-button { + top: 0px; + padding: 5px 8px 8px 8px; + border-left: transparent; + border-right: transparent; + border-bottom: transparent; +} diff --git a/src/main/webapp/static/easyUI/themes/material/easyui.css b/src/main/webapp/static/easyUI/themes/material/easyui.css new file mode 100644 index 0000000000000000000000000000000000000000..3b792521911cf4744f125d5262c676aa52e16e12 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/material/easyui.css @@ -0,0 +1,3229 @@ +.panel { + overflow: hidden; + text-align: left; + margin: 0; + border: 0; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.panel-header, +.panel-body { + border-width: 1px; + border-style: solid; +} +.panel-header { + padding: 5px; + position: relative; +} +.panel-title { + background: url('images/blank.gif') no-repeat; +} +.panel-header-noborder { + border-width: 0 0 1px 0; +} +.panel-body { + overflow: auto; + border-top-width: 0; + padding: 0; +} +.panel-body-noheader { + border-top-width: 1px; +} +.panel-body-noborder { + border-width: 0px; +} +.panel-body-nobottom { + border-bottom-width: 0; +} +.panel-with-icon { + padding-left: 18px; +} +.panel-icon, +.panel-tool { + position: absolute; + top: 50%; + margin-top: -8px; + height: 16px; + overflow: hidden; +} +.panel-icon { + left: 5px; + width: 16px; +} +.panel-tool { + right: 5px; + width: auto; +} +.panel-tool a { + display: inline-block; + width: 16px; + height: 16px; + opacity: 0.6; + filter: alpha(opacity=60); + margin: 0 0 0 2px; + vertical-align: top; +} +.panel-tool a:hover { + opacity: 1; + filter: alpha(opacity=100); + background-color: #eee; + -moz-border-radius: 2px 2px 2px 2px; + -webkit-border-radius: 2px 2px 2px 2px; + border-radius: 2px 2px 2px 2px; +} +.panel-loading { + padding: 11px 0px 10px 30px; +} +.panel-noscroll { + overflow: hidden; +} +.panel-fit, +.panel-fit body { + height: 100%; + margin: 0; + padding: 0; + border: 0; + overflow: hidden; +} +.panel-loading { + background: url('images/loading.gif') no-repeat 10px 10px; +} +.panel-tool-close { + background: url('images/panel_tools.png') no-repeat -16px 0px; +} +.panel-tool-min { + background: url('images/panel_tools.png') no-repeat 0px 0px; +} +.panel-tool-max { + background: url('images/panel_tools.png') no-repeat 0px -16px; +} +.panel-tool-restore { + background: url('images/panel_tools.png') no-repeat -16px -16px; +} +.panel-tool-collapse { + background: url('images/panel_tools.png') no-repeat -32px 0; +} +.panel-tool-expand { + background: url('images/panel_tools.png') no-repeat -32px -16px; +} +.panel-header, +.panel-body { + border-color: #ddd; +} +.panel-header { + background-color: #f5f5f5; +} +.panel-body { + background-color: #ffffff; + color: #404040; + font-size: 12px; +} +.panel-title { + font-size: 12px; + font-weight: bold; + color: #000000; + height: 16px; + line-height: 16px; +} +.panel-footer { + border: 1px solid #ddd; + overflow: hidden; + background: #fafafa; +} +.panel-footer-noborder { + border-width: 1px 0 0 0; +} +.panel-hleft, +.panel-hright { + position: relative; +} +.panel-hleft>.panel-body, +.panel-hright>.panel-body { + position: absolute; +} +.panel-hleft>.panel-header { + float: left; +} +.panel-hright>.panel-header { + float: right; +} +.panel-hleft>.panel-body { + border-top-width: 1px; + border-left-width: 0; +} +.panel-hright>.panel-body { + border-top-width: 1px; + border-right-width: 0; +} +.panel-hleft>.panel-body-nobottom { + border-bottom-width: 1px; + border-right-width: 0; +} +.panel-hright>.panel-body-nobottom { + border-bottom-width: 1px; + border-left-width: 0; +} +.panel-hleft>.panel-footer { + position: absolute; + right: 0; +} +.panel-hright>.panel-footer { + position: absolute; + left: 0; +} +.panel-hleft>.panel-header-noborder { + border-width: 0 1px 0 0; +} +.panel-hright>.panel-header-noborder { + border-width: 0 0 0 1px; +} +.panel-hleft>.panel-body-noborder { + border-width: 0; +} +.panel-hright>.panel-body-noborder { + border-width: 0; +} +.panel-hleft>.panel-body-noheader { + border-left-width: 1px; +} +.panel-hright>.panel-body-noheader { + border-right-width: 1px; +} +.panel-hleft>.panel-footer-noborder { + border-width: 0 0 0 1px; +} +.panel-hright>.panel-footer-noborder { + border-width: 0 1px 0 0; +} +.panel-hleft>.panel-header .panel-icon, +.panel-hright>.panel-header .panel-icon { + margin-top: 0; + top: 5px; +} +.panel-hleft>.panel-header .panel-title, +.panel-hright>.panel-header .panel-title { + position: absolute; + min-width: 16px; + left: 21px; + top: 5px; + bottom: auto; + white-space: nowrap; + word-wrap: normal; + -webkit-transform: rotate(90deg); + -webkit-transform-origin: 0 0; + -moz-transform: rotate(90deg); + -moz-transform-origin: 0 0; + -o-transform: rotate(90deg); + -o-transform-origin: 0 0; + transform: rotate(90deg); + transform-origin: 0 0; +} +.panel-hleft>.panel-header .panel-title-up, +.panel-hright>.panel-header .panel-title-up { + position: absolute; + min-width: 16px; + left: 21px; + top: auto; + bottom: 5px; + text-align: right; + white-space: nowrap; + word-wrap: normal; + -webkit-transform: rotate(-90deg); + -webkit-transform-origin: 0 0; + -moz-transform: rotate(-90deg); + -moz-transform-origin: 0 0; + -o-transform: rotate(-90deg); + -o-transform-origin: 0 0; + transform: rotate(-90deg); + transform-origin: 0 16px; +} +.panel-hleft>.panel-header .panel-with-icon.panel-title-up, +.panel-hright>.panel-header .panel-with-icon.panel-title-up { + padding-left: 0; + padding-right: 18px; +} +.panel-hleft>.panel-header .panel-tool, +.panel-hright>.panel-header .panel-tool { + top: auto; + bottom: 5px; + width: 16px; + height: auto; + left: 50%; + margin-left: -8px; + margin-top: 0; +} +.panel-hleft>.panel-header .panel-tool a, +.panel-hright>.panel-header .panel-tool a { + margin: 2px 0 0 0; +} +.accordion { + overflow: hidden; + border-width: 1px; + border-style: solid; +} +.accordion .accordion-header { + border-width: 0 0 1px; + cursor: pointer; +} +.accordion .accordion-body { + border-width: 0 0 1px; +} +.accordion-noborder { + border-width: 0; +} +.accordion-noborder .accordion-header { + border-width: 0 0 1px; +} +.accordion-noborder .accordion-body { + border-width: 0 0 1px; +} +.accordion-collapse { + background: url('images/accordion_arrows.png') no-repeat 0 0; +} +.accordion-expand { + background: url('images/accordion_arrows.png') no-repeat -16px 0; +} +.accordion { + background: #ffffff; + border-color: #ddd; +} +.accordion .accordion-header { + background: #f5f5f5; + filter: none; +} +.accordion .accordion-header-selected { + background: #00bbee; +} +.accordion .accordion-header-selected .panel-title { + color: #fff; +} +.accordion .panel-last > .accordion-header { + border-bottom-color: #f5f5f5; +} +.accordion .panel-last > .accordion-body { + border-bottom-color: #ffffff; +} +.accordion .panel-last > .accordion-header-selected, +.accordion .panel-last > .accordion-header-border { + border-bottom-color: #ddd; +} +.accordion> .panel-hleft { + float: left; +} +.accordion> .panel-hleft>.panel-header { + border-width: 0 1px 0 0; +} +.accordion> .panel-hleft> .panel-body { + border-width: 0 1px 0 0; +} +.accordion> .panel-hleft.panel-last > .accordion-header { + border-right-color: #f5f5f5; +} +.accordion> .panel-hleft.panel-last > .accordion-body { + border-right-color: #ffffff; +} +.accordion> .panel-hleft.panel-last > .accordion-header-selected, +.accordion> .panel-hleft.panel-last > .accordion-header-border { + border-right-color: #ddd; +} +.accordion> .panel-hright { + float: right; +} +.accordion> .panel-hright>.panel-header { + border-width: 0 0 0 1px; +} +.accordion> .panel-hright> .panel-body { + border-width: 0 0 0 1px; +} +.accordion> .panel-hright.panel-last > .accordion-header { + border-left-color: #f5f5f5; +} +.accordion> .panel-hright.panel-last > .accordion-body { + border-left-color: #ffffff; +} +.accordion> .panel-hright.panel-last > .accordion-header-selected, +.accordion> .panel-hright.panel-last > .accordion-header-border { + border-left-color: #ddd; +} +.window { + overflow: hidden; + padding: 5px; + border-width: 1px; + border-style: solid; +} +.window .window-header { + background: transparent; + padding: 0px 0px 6px 0px; +} +.window .window-body { + border-width: 1px; + border-style: solid; + border-top-width: 0px; +} +.window .window-body-noheader { + border-top-width: 1px; +} +.window .panel-body-nobottom { + border-bottom-width: 0; +} +.window .window-header .panel-icon, +.window .window-header .panel-tool { + top: 50%; + margin-top: -11px; +} +.window .window-header .panel-icon { + left: 1px; +} +.window .window-header .panel-tool { + right: 1px; +} +.window .window-header .panel-with-icon { + padding-left: 18px; +} +.window-proxy { + position: absolute; + overflow: hidden; +} +.window-proxy-mask { + position: absolute; + filter: alpha(opacity=5); + opacity: 0.05; +} +.window-mask { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + filter: alpha(opacity=40); + opacity: 0.40; + font-size: 1px; + overflow: hidden; +} +.window, +.window-shadow { + position: absolute; + -moz-border-radius: 4px 4px 4px 4px; + -webkit-border-radius: 4px 4px 4px 4px; + border-radius: 4px 4px 4px 4px; +} +.window-shadow { + background: #fafafa; + -moz-box-shadow: 2px 2px 3px #fafafa; + -webkit-box-shadow: 2px 2px 3px #fafafa; + box-shadow: 2px 2px 3px #fafafa; + filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); +} +.window, +.window .window-body { + border-color: #ddd; +} +.window { + background-color: #f5f5f5; +} +.window-proxy { + border: 1px dashed #ddd; +} +.window-proxy-mask, +.window-mask { + background: #eee; +} +.window .panel-footer { + border: 1px solid #ddd; + position: relative; + top: -1px; +} +.window-thinborder { + padding: 0; +} +.window-thinborder .window-header { + padding: 5px 5px 6px 5px; +} +.window-thinborder .window-body { + border-width: 0px; +} +.window-thinborder .window-header .panel-icon, +.window-thinborder .window-header .panel-tool { + margin-top: -9px; + margin-left: 5px; + margin-right: 5px; +} +.window-noborder { + border: 0; +} +.window.panel-hleft .window-header { + padding: 0 6px 0 0; +} +.window.panel-hright .window-header { + padding: 0 0 0 6px; +} +.window.panel-hleft>.panel-header .panel-title { + top: auto; + left: 16px; +} +.window.panel-hright>.panel-header .panel-title { + top: auto; + right: 16px; +} +.window.panel-hleft>.panel-header .panel-title-up, +.window.panel-hright>.panel-header .panel-title-up { + bottom: 0; +} +.window.panel-hleft .window-body { + border-width: 1px 1px 1px 0; +} +.window.panel-hright .window-body { + border-width: 1px 0 1px 1px; +} +.window.panel-hleft .window-header .panel-icon { + top: 1px; + margin-top: 0; + left: 0; +} +.window.panel-hright .window-header .panel-icon { + top: 1px; + margin-top: 0; + left: auto; + right: 1px; +} +.window.panel-hleft .window-header .panel-tool, +.window.panel-hright .window-header .panel-tool { + margin-top: 0; + top: auto; + bottom: 1px; + right: auto; + margin-right: 0; + left: 50%; + margin-left: -11px; +} +.window.panel-hright .window-header .panel-tool { + left: auto; + right: 1px; +} +.window-thinborder.panel-hleft .window-header { + padding: 5px 6px 5px 5px; +} +.window-thinborder.panel-hright .window-header { + padding: 5px 5px 5px 6px; +} +.window-thinborder.panel-hleft>.panel-header .panel-title { + left: 21px; +} +.window-thinborder.panel-hleft>.panel-header .panel-title-up, +.window-thinborder.panel-hright>.panel-header .panel-title-up { + bottom: 5px; +} +.window-thinborder.panel-hleft .window-header .panel-icon, +.window-thinborder.panel-hright .window-header .panel-icon { + margin-top: 5px; +} +.window-thinborder.panel-hleft .window-header .panel-tool, +.window-thinborder.panel-hright .window-header .panel-tool { + left: 16px; + bottom: 5px; +} +.dialog-content { + overflow: auto; +} +.dialog-toolbar { + position: relative; + padding: 2px 5px; +} +.dialog-tool-separator { + float: left; + height: 24px; + border-left: 1px solid #ddd; + border-right: 1px solid #fff; + margin: 2px 1px; +} +.dialog-button { + position: relative; + top: -1px; + padding: 5px; + text-align: right; +} +.dialog-button .l-btn { + margin-left: 5px; +} +.dialog-toolbar, +.dialog-button { + background: #fafafa; + border-width: 1px; + border-style: solid; +} +.dialog-toolbar { + border-color: #ddd #ddd #eee #ddd; +} +.dialog-button { + border-color: #eee #ddd #ddd #ddd; +} +.window-thinborder .dialog-toolbar { + border-left: transparent; + border-right: transparent; + border-top-color: #fafafa; +} +.window-thinborder .dialog-button { + top: 0px; + padding: 5px 8px 8px 8px; + border-left: transparent; + border-right: transparent; + border-bottom: transparent; +} +.l-btn { + text-decoration: none; + display: inline-block; + overflow: hidden; + margin: 0; + padding: 0; + cursor: pointer; + outline: none; + text-align: center; + vertical-align: middle; + line-height: normal; +} +.l-btn-plain { + border-width: 0; + padding: 1px; +} +.l-btn-left { + display: inline-block; + position: relative; + overflow: hidden; + margin: 0; + padding: 0; + vertical-align: top; +} +.l-btn-text { + display: inline-block; + vertical-align: top; + width: auto; + line-height: 24px; + font-size: 12px; + padding: 0; + margin: 0 4px; +} +.l-btn-icon { + display: inline-block; + width: 16px; + height: 16px; + line-height: 16px; + position: absolute; + top: 50%; + margin-top: -8px; + font-size: 1px; +} +.l-btn span span .l-btn-empty { + display: inline-block; + margin: 0; + width: 16px; + height: 24px; + font-size: 1px; + vertical-align: top; +} +.l-btn span .l-btn-icon-left { + padding: 0 0 0 20px; + background-position: left center; +} +.l-btn span .l-btn-icon-right { + padding: 0 20px 0 0; + background-position: right center; +} +.l-btn-icon-left .l-btn-text { + margin: 0 4px 0 24px; +} +.l-btn-icon-left .l-btn-icon { + left: 4px; +} +.l-btn-icon-right .l-btn-text { + margin: 0 24px 0 4px; +} +.l-btn-icon-right .l-btn-icon { + right: 4px; +} +.l-btn-icon-top .l-btn-text { + margin: 20px 4px 0 4px; +} +.l-btn-icon-top .l-btn-icon { + top: 4px; + left: 50%; + margin: 0 0 0 -8px; +} +.l-btn-icon-bottom .l-btn-text { + margin: 0 4px 20px 4px; +} +.l-btn-icon-bottom .l-btn-icon { + top: auto; + bottom: 4px; + left: 50%; + margin: 0 0 0 -8px; +} +.l-btn-left .l-btn-empty { + margin: 0 4px; + width: 16px; +} +.l-btn-plain:hover { + padding: 0; +} +.l-btn-focus { + outline: #0000FF dotted thin; +} +.l-btn-large .l-btn-text { + line-height: 40px; +} +.l-btn-large .l-btn-icon { + width: 32px; + height: 32px; + line-height: 32px; + margin-top: -16px; +} +.l-btn-large .l-btn-icon-left .l-btn-text { + margin-left: 40px; +} +.l-btn-large .l-btn-icon-right .l-btn-text { + margin-right: 40px; +} +.l-btn-large .l-btn-icon-top .l-btn-text { + margin-top: 36px; + line-height: 24px; + min-width: 32px; +} +.l-btn-large .l-btn-icon-top .l-btn-icon { + margin: 0 0 0 -16px; +} +.l-btn-large .l-btn-icon-bottom .l-btn-text { + margin-bottom: 36px; + line-height: 24px; + min-width: 32px; +} +.l-btn-large .l-btn-icon-bottom .l-btn-icon { + margin: 0 0 0 -16px; +} +.l-btn-large .l-btn-left .l-btn-empty { + margin: 0 4px; + width: 32px; +} +.l-btn { + color: #404040; + background: #fafafa; + background-repeat: repeat-x; + border: 1px solid #d9d9d9; + -moz-border-radius: 4px 4px 4px 4px; + -webkit-border-radius: 4px 4px 4px 4px; + border-radius: 4px 4px 4px 4px; +} +.l-btn:hover { + background: #eee; + color: #404040; + border: 1px solid #ccc; + filter: none; +} +.l-btn-plain { + background: transparent; + border-width: 0; + filter: none; +} +.l-btn-outline { + border-width: 1px; + border-color: #ccc; + padding: 0; +} +.l-btn-plain:hover { + background: #eee; + color: #404040; + border: 1px solid #ccc; + -moz-border-radius: 4px 4px 4px 4px; + -webkit-border-radius: 4px 4px 4px 4px; + border-radius: 4px 4px 4px 4px; +} +.l-btn-disabled, +.l-btn-disabled:hover { + opacity: 0.5; + cursor: default; + background: #fafafa; + color: #404040; +} +.l-btn-disabled .l-btn-text, +.l-btn-disabled .l-btn-icon { + filter: alpha(opacity=50); +} +.l-btn-plain-disabled, +.l-btn-plain-disabled:hover { + background: transparent; + filter: alpha(opacity=50); +} +.l-btn-selected, +.l-btn-selected:hover { + background: #00bbee; + filter: none; +} +.l-btn-plain-selected, +.l-btn-plain-selected:hover { + background: #00bbee; +} +.textbox { + position: relative; + border: 1px solid #ddd; + background-color: #fff; + vertical-align: middle; + display: inline-block; + overflow: hidden; + white-space: nowrap; + margin: 0; + padding: 0; + -moz-border-radius: 4px 4px 4px 4px; + -webkit-border-radius: 4px 4px 4px 4px; + border-radius: 4px 4px 4px 4px; +} +.textbox .textbox-text { + font-size: 12px; + border: 0; + margin: 0; + padding: 4px; + white-space: normal; + vertical-align: top; + outline-style: none; + resize: none; + -moz-border-radius: 4px 4px 4px 4px; + -webkit-border-radius: 4px 4px 4px 4px; + border-radius: 4px 4px 4px 4px; +} +.textbox .textbox-text::-ms-clear, +.textbox .textbox-text::-ms-reveal { + display: none; +} +.textbox textarea.textbox-text { + white-space: pre-wrap; +} +.textbox .textbox-prompt { + font-size: 12px; + color: #aaa; +} +.textbox .textbox-bgicon { + background-position: 3px center; + padding-left: 21px; +} +.textbox .textbox-button, +.textbox .textbox-button:hover { + position: absolute; + top: 0; + padding: 0; + vertical-align: top; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.textbox .textbox-button-right, +.textbox .textbox-button-right:hover { + right: 0; + border-width: 0 0 0 1px; +} +.textbox .textbox-button-left, +.textbox .textbox-button-left:hover { + left: 0; + border-width: 0 1px 0 0; +} +.textbox .textbox-button-top, +.textbox .textbox-button-top:hover { + left: 0; + border-width: 0 0 1px 0; +} +.textbox .textbox-button-bottom, +.textbox .textbox-button-bottom:hover { + top: auto; + bottom: 0; + left: 0; + border-width: 1px 0 0 0; +} +.textbox-addon { + position: absolute; + top: 0; +} +.textbox-label { + display: inline-block; + width: 80px; + height: 22px; + line-height: 22px; + vertical-align: middle; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + margin: 0; + padding-right: 5px; +} +.textbox-label-after { + padding-left: 5px; + padding-right: 0; +} +.textbox-label-top { + display: block; + width: auto; + padding: 0; +} +.textbox-disabled, +.textbox-label-disabled { + opacity: 0.6; + filter: alpha(opacity=60); +} +.textbox-icon { + display: inline-block; + width: 18px; + height: 20px; + overflow: hidden; + vertical-align: top; + background-position: center center; + cursor: pointer; + opacity: 0.6; + filter: alpha(opacity=60); + text-decoration: none; + outline-style: none; +} +.textbox-icon-disabled, +.textbox-icon-readonly { + cursor: default; +} +.textbox-icon:hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.textbox-icon-disabled:hover { + opacity: 0.6; + filter: alpha(opacity=60); +} +.textbox-focused { + border-color: #c4c4c4; + -moz-box-shadow: 0 0 3px 0 #ddd; + -webkit-box-shadow: 0 0 3px 0 #ddd; + box-shadow: 0 0 3px 0 #ddd; +} +.textbox-invalid { + border-color: #ffa8a8; + background-color: #fff; +} +.passwordbox-open { + background: url('images/passwordbox_open.png') no-repeat center center; +} +.passwordbox-close { + background: url('images/passwordbox_close.png') no-repeat center center; +} +.filebox .textbox-value { + vertical-align: top; + position: absolute; + top: 0; + left: -5000px; +} +.filebox-label { + display: inline-block; + position: absolute; + width: 100%; + height: 100%; + cursor: pointer; + left: 0; + top: 0; + z-index: 10; + background: url('images/blank.gif') no-repeat; +} +.l-btn-disabled .filebox-label { + cursor: default; +} +.combo-arrow { + width: 18px; + height: 20px; + overflow: hidden; + display: inline-block; + vertical-align: top; + cursor: pointer; + opacity: 0.6; + filter: alpha(opacity=60); +} +.combo-arrow-hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.combo-panel { + overflow: auto; +} +.combo-arrow { + background: url('images/combo_arrow.png') no-repeat center center; +} +.combo-panel { + background-color: #ffffff; +} +.combo-arrow { + background-color: #f5f5f5; +} +.combo-arrow-hover { + background-color: #eee; +} +.combo-arrow:hover { + background-color: #eee; +} +.combo .textbox-icon-disabled:hover { + cursor: default; +} +.combobox-item, +.combobox-group, +.combobox-stick { + font-size: 12px; + padding: 3px; +} +.combobox-item-disabled { + opacity: 0.5; + filter: alpha(opacity=50); +} +.combobox-gitem { + padding-left: 10px; +} +.combobox-group, +.combobox-stick { + font-weight: bold; +} +.combobox-stick { + position: absolute; + top: 1px; + left: 1px; + right: 1px; + background: inherit; +} +.combobox-item-hover { + background-color: #eee; + color: #404040; +} +.combobox-item-selected { + background-color: #00bbee; + color: #fff; +} +.combobox-icon { + display: inline-block; + width: 16px; + height: 16px; + vertical-align: middle; + margin-right: 2px; +} +.tagbox { + cursor: text; +} +.tagbox .textbox-text { + float: left; +} +.tagbox-label { + position: relative; + display: block; + margin: 4px 0 0 4px; + padding: 0 20px 0 4px; + float: left; + vertical-align: top; + text-decoration: none; + -moz-border-radius: 4px 4px 4px 4px; + -webkit-border-radius: 4px 4px 4px 4px; + border-radius: 4px 4px 4px 4px; + background: #eee; + color: #404040; +} +.tagbox-remove { + background: url('images/tagbox_icons.png') no-repeat -16px center; + position: absolute; + display: block; + width: 16px; + height: 16px; + right: 2px; + top: 50%; + margin-top: -8px; + opacity: 0.6; + filter: alpha(opacity=60); +} +.tagbox-remove:hover { + opacity: 1; + filter: alpha(opacity=100); +} +.textbox-disabled .tagbox-label { + cursor: default; +} +.textbox-disabled .tagbox-remove:hover { + cursor: default; + opacity: 0.6; + filter: alpha(opacity=60); +} +.layout { + position: relative; + overflow: hidden; + margin: 0; + padding: 0; + z-index: 0; +} +.layout-panel { + position: absolute; + overflow: hidden; +} +.layout-body { + min-width: 1px; + min-height: 1px; +} +.layout-panel-east, +.layout-panel-west { + z-index: 2; +} +.layout-panel-north, +.layout-panel-south { + z-index: 3; +} +.layout-expand { + position: absolute; + padding: 0px; + font-size: 1px; + cursor: pointer; + z-index: 1; +} +.layout-expand .panel-header, +.layout-expand .panel-body { + background: transparent; + filter: none; + overflow: hidden; +} +.layout-expand .panel-header { + border-bottom-width: 0px; +} +.layout-expand .panel-body { + position: relative; +} +.layout-expand .panel-body .panel-icon { + margin-top: 0; + top: 0; + left: 50%; + margin-left: -8px; +} +.layout-expand-west .panel-header .panel-icon, +.layout-expand-east .panel-header .panel-icon { + display: none; +} +.layout-expand-title { + position: absolute; + top: 0; + left: 21px; + white-space: nowrap; + word-wrap: normal; + -webkit-transform: rotate(90deg); + -webkit-transform-origin: 0 0; + -moz-transform: rotate(90deg); + -moz-transform-origin: 0 0; + -o-transform: rotate(90deg); + -o-transform-origin: 0 0; + transform: rotate(90deg); + transform-origin: 0 0; +} +.layout-expand-title-up { + position: absolute; + top: 0; + left: 0; + text-align: right; + padding-left: 5px; + white-space: nowrap; + word-wrap: normal; + -webkit-transform: rotate(-90deg); + -webkit-transform-origin: 0 0; + -moz-transform: rotate(-90deg); + -moz-transform-origin: 0 0; + -o-transform: rotate(-90deg); + -o-transform-origin: 0 0; + transform: rotate(-90deg); + transform-origin: 0 0; +} +.layout-expand-with-icon { + top: 18px; +} +.layout-expand .panel-body-noheader .layout-expand-title, +.layout-expand .panel-body-noheader .panel-icon { + top: 5px; +} +.layout-expand .panel-body-noheader .layout-expand-with-icon { + top: 23px; +} +.layout-split-proxy-h, +.layout-split-proxy-v { + position: absolute; + font-size: 1px; + display: none; + z-index: 5; +} +.layout-split-proxy-h { + width: 5px; + cursor: e-resize; +} +.layout-split-proxy-v { + height: 5px; + cursor: n-resize; +} +.layout-mask { + position: absolute; + background: #fafafa; + filter: alpha(opacity=10); + opacity: 0.10; + z-index: 4; +} +.layout-button-up { + background: url('images/layout_arrows.png') no-repeat -16px -16px; +} +.layout-button-down { + background: url('images/layout_arrows.png') no-repeat -16px 0; +} +.layout-button-left { + background: url('images/layout_arrows.png') no-repeat 0 0; +} +.layout-button-right { + background: url('images/layout_arrows.png') no-repeat 0 -16px; +} +.layout-split-proxy-h, +.layout-split-proxy-v { + background-color: #ccc; +} +.layout-split-north { + border-bottom: 5px solid #ffffff; +} +.layout-split-south { + border-top: 5px solid #ffffff; +} +.layout-split-east { + border-left: 5px solid #ffffff; +} +.layout-split-west { + border-right: 5px solid #ffffff; +} +.layout-expand { + background-color: #f5f5f5; +} +.layout-expand-over { + background-color: #f5f5f5; +} +.tabs-container { + overflow: hidden; +} +.tabs-header { + border-width: 1px; + border-style: solid; + border-bottom-width: 0; + position: relative; + padding: 0; + padding-top: 2px; + overflow: hidden; +} +.tabs-scroller-left, +.tabs-scroller-right { + position: absolute; + top: auto; + bottom: 0; + width: 18px; + font-size: 1px; + display: none; + cursor: pointer; + border-width: 1px; + border-style: solid; +} +.tabs-scroller-left { + left: 0; +} +.tabs-scroller-right { + right: 0; +} +.tabs-tool { + position: absolute; + bottom: 0; + padding: 1px; + overflow: hidden; + border-width: 1px; + border-style: solid; +} +.tabs-header-plain .tabs-tool { + padding: 0 1px; +} +.tabs-wrap { + position: relative; + left: 0; + overflow: hidden; + width: 100%; + margin: 0; + padding: 0; +} +.tabs-scrolling { + margin-left: 18px; + margin-right: 18px; +} +.tabs-disabled { + opacity: 0.3; + filter: alpha(opacity=30); +} +.tabs { + list-style-type: none; + height: 26px; + margin: 0px; + padding: 0px; + padding-left: 4px; + width: 50000px; + border-style: solid; + border-width: 0 0 1px 0; +} +.tabs li { + float: left; + display: inline-block; + margin: 0 4px -1px 0; + padding: 0; + position: relative; + border: 0; +} +.tabs li a.tabs-inner { + display: inline-block; + text-decoration: none; + margin: 0; + padding: 0 10px; + height: 25px; + line-height: 25px; + text-align: center; + white-space: nowrap; + border-width: 1px; + border-style: solid; + -moz-border-radius: 4px 4px 0 0; + -webkit-border-radius: 4px 4px 0 0; + border-radius: 4px 4px 0 0; +} +.tabs li.tabs-selected a.tabs-inner { + font-weight: bold; + outline: none; +} +.tabs li.tabs-selected a:hover.tabs-inner { + cursor: default; + pointer: default; +} +.tabs li a.tabs-close, +.tabs-p-tool { + position: absolute; + font-size: 1px; + display: block; + height: 12px; + padding: 0; + top: 50%; + margin-top: -6px; + overflow: hidden; +} +.tabs li a.tabs-close { + width: 12px; + right: 5px; + opacity: 0.6; + filter: alpha(opacity=60); +} +.tabs-p-tool { + right: 16px; +} +.tabs-p-tool a { + display: inline-block; + font-size: 1px; + width: 12px; + height: 12px; + margin: 0; + opacity: 0.6; + filter: alpha(opacity=60); +} +.tabs li a:hover.tabs-close, +.tabs-p-tool a:hover { + opacity: 1; + filter: alpha(opacity=100); + cursor: hand; + cursor: pointer; +} +.tabs-with-icon { + padding-left: 18px; +} +.tabs-icon { + position: absolute; + width: 16px; + height: 16px; + left: 10px; + top: 50%; + margin-top: -8px; +} +.tabs-title { + font-size: 12px; +} +.tabs-closable { + padding-right: 8px; +} +.tabs-panels { + margin: 0px; + padding: 0px; + border-width: 1px; + border-style: solid; + border-top-width: 0; + overflow: hidden; +} +.tabs-header-bottom { + border-width: 0 1px 1px 1px; + padding: 0 0 2px 0; +} +.tabs-header-bottom .tabs { + border-width: 1px 0 0 0; +} +.tabs-header-bottom .tabs li { + margin: -1px 4px 0 0; +} +.tabs-header-bottom .tabs li a.tabs-inner { + -moz-border-radius: 0 0 4px 4px; + -webkit-border-radius: 0 0 4px 4px; + border-radius: 0 0 4px 4px; +} +.tabs-header-bottom .tabs-tool { + top: 0; +} +.tabs-header-bottom .tabs-scroller-left, +.tabs-header-bottom .tabs-scroller-right { + top: 0; + bottom: auto; +} +.tabs-panels-top { + border-width: 1px 1px 0 1px; +} +.tabs-header-left { + float: left; + border-width: 1px 0 1px 1px; + padding: 0; +} +.tabs-header-right { + float: right; + border-width: 1px 1px 1px 0; + padding: 0; +} +.tabs-header-left .tabs-wrap, +.tabs-header-right .tabs-wrap { + height: 100%; +} +.tabs-header-left .tabs { + height: 100%; + padding: 4px 0 0 2px; + border-width: 0 1px 0 0; +} +.tabs-header-right .tabs { + height: 100%; + padding: 4px 2px 0 0; + border-width: 0 0 0 1px; +} +.tabs-header-left .tabs li, +.tabs-header-right .tabs li { + display: block; + width: 100%; + position: relative; +} +.tabs-header-left .tabs li { + left: auto; + right: 0; + margin: 0 -1px 4px 0; + float: right; +} +.tabs-header-right .tabs li { + left: 0; + right: auto; + margin: 0 0 4px -1px; + float: left; +} +.tabs-justified li a.tabs-inner { + padding-left: 0; + padding-right: 0; +} +.tabs-header-left .tabs li a.tabs-inner { + display: block; + text-align: left; + padding-left: 10px; + padding-right: 10px; + -moz-border-radius: 4px 0 0 4px; + -webkit-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; +} +.tabs-header-right .tabs li a.tabs-inner { + display: block; + text-align: left; + padding-left: 10px; + padding-right: 10px; + -moz-border-radius: 0 4px 4px 0; + -webkit-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} +.tabs-panels-right { + float: right; + border-width: 1px 1px 1px 0; +} +.tabs-panels-left { + float: left; + border-width: 1px 0 1px 1px; +} +.tabs-header-noborder, +.tabs-panels-noborder { + border: 0px; +} +.tabs-header-plain { + border: 0px; + background: transparent; +} +.tabs-pill { + padding-bottom: 3px; +} +.tabs-header-bottom .tabs-pill { + padding-top: 3px; + padding-bottom: 0; +} +.tabs-header-left .tabs-pill { + padding-right: 3px; +} +.tabs-header-right .tabs-pill { + padding-left: 3px; +} +.tabs-header .tabs-pill li a.tabs-inner { + -moz-border-radius: 4px 4px 4px 4px; + -webkit-border-radius: 4px 4px 4px 4px; + border-radius: 4px 4px 4px 4px; +} +.tabs-header-narrow, +.tabs-header-narrow .tabs-narrow { + padding: 0; +} +.tabs-narrow li, +.tabs-header-bottom .tabs-narrow li { + margin-left: 0; + margin-right: -1px; +} +.tabs-narrow li.tabs-last, +.tabs-header-bottom .tabs-narrow li.tabs-last { + margin-right: 0; +} +.tabs-header-left .tabs-narrow, +.tabs-header-right .tabs-narrow { + padding-top: 0; +} +.tabs-header-left .tabs-narrow li { + margin-bottom: -1px; + margin-right: -1px; +} +.tabs-header-left .tabs-narrow li.tabs-last, +.tabs-header-right .tabs-narrow li.tabs-last { + margin-bottom: 0; +} +.tabs-header-right .tabs-narrow li { + margin-bottom: -1px; + margin-left: -1px; +} +.tabs-scroller-left { + background: #f5f5f5 url('images/tabs_icons.png') no-repeat 1px center; +} +.tabs-scroller-right { + background: #f5f5f5 url('images/tabs_icons.png') no-repeat -15px center; +} +.tabs li a.tabs-close { + background: url('images/tabs_icons.png') no-repeat -34px center; +} +.tabs li a.tabs-inner:hover { + background: #eee; + color: #404040; + filter: none; +} +.tabs li.tabs-selected a.tabs-inner { + background-color: #ffffff; + color: #000000; +} +.tabs li a.tabs-inner { + color: #000000; + background-color: #f5f5f5; +} +.tabs-header, +.tabs-tool { + background-color: #f5f5f5; +} +.tabs-header-plain { + background: transparent; +} +.tabs-header, +.tabs-scroller-left, +.tabs-scroller-right, +.tabs-tool, +.tabs, +.tabs-panels, +.tabs li a.tabs-inner, +.tabs li.tabs-selected a.tabs-inner, +.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner, +.tabs-header-left .tabs li.tabs-selected a.tabs-inner, +.tabs-header-right .tabs li.tabs-selected a.tabs-inner { + border-color: #ddd; +} +.tabs-p-tool a:hover, +.tabs li a:hover.tabs-close, +.tabs-scroller-over { + background-color: #eee; +} +.tabs li.tabs-selected a.tabs-inner { + border-bottom: 1px solid #ffffff; +} +.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { + border-top: 1px solid #ffffff; +} +.tabs-header-left .tabs li.tabs-selected a.tabs-inner { + border-right: 1px solid #ffffff; +} +.tabs-header-right .tabs li.tabs-selected a.tabs-inner { + border-left: 1px solid #ffffff; +} +.tabs-header .tabs-pill li.tabs-selected a.tabs-inner { + background: #00bbee; + color: #fff; + filter: none; + border-color: #ddd; +} +.datagrid .panel-body { + overflow: hidden; + position: relative; +} +.datagrid-view { + position: relative; + overflow: hidden; +} +.datagrid-view1, +.datagrid-view2 { + position: absolute; + overflow: hidden; + top: 0; +} +.datagrid-view1 { + left: 0; +} +.datagrid-view2 { + right: 0; +} +.datagrid-mask { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + opacity: 0.3; + filter: alpha(opacity=30); + display: none; +} +.datagrid-mask-msg { + position: absolute; + top: 50%; + margin-top: -20px; + padding: 10px 5px 10px 30px; + width: auto; + height: 16px; + border-width: 2px; + border-style: solid; + display: none; +} +.datagrid-empty { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 25px; + line-height: 25px; + text-align: center; +} +.datagrid-sort-icon { + padding: 0; + display: none; +} +.datagrid-toolbar { + height: auto; + padding: 1px 2px; + border-width: 0 0 1px 0; + border-style: solid; +} +.datagrid-btn-separator { + float: left; + height: 24px; + border-left: 1px solid #ddd; + border-right: 1px solid #fff; + margin: 2px 1px; +} +.datagrid .datagrid-pager { + display: block; + margin: 0; + border-width: 1px 0 0 0; + border-style: solid; +} +.datagrid .datagrid-pager-top { + border-width: 0 0 1px 0; +} +.datagrid-header { + overflow: hidden; + cursor: default; + border-width: 0 0 1px 0; + border-style: solid; +} +.datagrid-header-inner { + float: left; + width: 10000px; +} +.datagrid-header-row, +.datagrid-row { + height: 25px; +} +.datagrid-header td, +.datagrid-body td, +.datagrid-footer td { + border-width: 0 1px 1px 0; + border-style: dotted; + margin: 0; + padding: 0; +} +.datagrid-cell, +.datagrid-cell-group, +.datagrid-header-rownumber, +.datagrid-cell-rownumber { + margin: 0; + padding: 0 4px; + white-space: nowrap; + word-wrap: normal; + overflow: hidden; + height: 18px; + line-height: 18px; + font-size: 12px; +} +.datagrid-header .datagrid-cell { + height: auto; +} +.datagrid-header .datagrid-cell span { + font-size: 12px; +} +.datagrid-cell-group { + text-align: center; + text-overflow: ellipsis; +} +.datagrid-header-rownumber, +.datagrid-cell-rownumber { + width: 30px; + text-align: center; + margin: 0; + padding: 0; +} +.datagrid-body { + margin: 0; + padding: 0; + overflow: auto; + zoom: 1; +} +.datagrid-view1 .datagrid-body-inner { + padding-bottom: 20px; +} +.datagrid-view1 .datagrid-body { + overflow: hidden; +} +.datagrid-footer { + overflow: hidden; +} +.datagrid-footer-inner { + border-width: 1px 0 0 0; + border-style: solid; + width: 10000px; + float: left; +} +.datagrid-row-editing .datagrid-cell { + height: auto; +} +.datagrid-header-check, +.datagrid-cell-check { + padding: 0; + width: 27px; + height: 18px; + font-size: 1px; + text-align: center; + overflow: hidden; +} +.datagrid-header-check input, +.datagrid-cell-check input { + margin: 0; + padding: 0; + width: 15px; + height: 18px; +} +.datagrid-resize-proxy { + position: absolute; + width: 1px; + height: 10000px; + top: 0; + cursor: e-resize; + display: none; +} +.datagrid-body .datagrid-editable { + margin: 0; + padding: 0; +} +.datagrid-body .datagrid-editable table { + width: 100%; + height: 100%; +} +.datagrid-body .datagrid-editable td { + border: 0; + margin: 0; + padding: 0; +} +.datagrid-view .datagrid-editable-input { + margin: 0; + padding: 2px 4px; + border: 1px solid #ddd; + font-size: 12px; + outline-style: none; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.datagrid-view .validatebox-invalid { + border-color: #ffa8a8; +} +.datagrid-sort .datagrid-sort-icon { + display: inline; + padding: 0 13px 0 0; + background: url('images/datagrid_icons.png') no-repeat -64px center; +} +.datagrid-sort-desc .datagrid-sort-icon { + display: inline; + padding: 0 13px 0 0; + background: url('images/datagrid_icons.png') no-repeat -16px center; +} +.datagrid-sort-asc .datagrid-sort-icon { + display: inline; + padding: 0 13px 0 0; + background: url('images/datagrid_icons.png') no-repeat 0px center; +} +.datagrid-row-collapse { + background: url('images/datagrid_icons.png') no-repeat -48px center; +} +.datagrid-row-expand { + background: url('images/datagrid_icons.png') no-repeat -32px center; +} +.datagrid-mask-msg { + background: #ffffff url('images/loading.gif') no-repeat scroll 5px center; +} +.datagrid-header, +.datagrid-td-rownumber { + background-color: #fafafa; +} +.datagrid-cell-rownumber { + color: #404040; +} +.datagrid-resize-proxy { + background: #ccc; +} +.datagrid-mask { + background: #eee; +} +.datagrid-mask-msg { + border-color: #ddd; +} +.datagrid-toolbar, +.datagrid-pager { + background: #fafafa; +} +.datagrid-header, +.datagrid-toolbar, +.datagrid-pager, +.datagrid-footer-inner { + border-color: #eee; +} +.datagrid-header td, +.datagrid-body td, +.datagrid-footer td { + border-color: #ebebeb; +} +.datagrid-htable, +.datagrid-btable, +.datagrid-ftable { + color: #404040; + border-collapse: separate; +} +.datagrid-row-alt { + background: #f9f9f9; +} +.datagrid-row-over, +.datagrid-header td.datagrid-header-over { + background: #eee; + color: #404040; + cursor: default; +} +.datagrid-row-selected { + background: #00bbee; + color: #fff; +} +.datagrid-row-editing .textbox, +.datagrid-row-editing .textbox-text { + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.propertygrid .datagrid-view1 .datagrid-body td { + padding-bottom: 1px; + border-width: 0 1px 0 0; +} +.propertygrid .datagrid-group { + height: 21px; + overflow: hidden; + border-width: 0 0 1px 0; + border-style: solid; +} +.propertygrid .datagrid-group span { + font-weight: bold; +} +.propertygrid .datagrid-view1 .datagrid-body td { + border-color: #eee; +} +.propertygrid .datagrid-view1 .datagrid-group { + border-color: #f5f5f5; +} +.propertygrid .datagrid-view2 .datagrid-group { + border-color: #eee; +} +.propertygrid .datagrid-group, +.propertygrid .datagrid-view1 .datagrid-body, +.propertygrid .datagrid-view1 .datagrid-row-over, +.propertygrid .datagrid-view1 .datagrid-row-selected { + background: #f5f5f5; +} +.datalist .datagrid-header { + border-width: 0; +} +.datalist .datagrid-group, +.m-list .m-list-group { + height: 25px; + line-height: 25px; + font-weight: bold; + overflow: hidden; + background-color: #fafafa; + border-style: solid; + border-width: 0 0 1px 0; + border-color: #ebebeb; +} +.datalist .datagrid-group-expander { + display: none; +} +.datalist .datagrid-group-title { + padding: 0 4px; +} +.datalist .datagrid-btable { + width: 100%; + table-layout: fixed; +} +.datalist .datagrid-row td { + border-style: solid; + border-left-color: transparent; + border-right-color: transparent; + border-bottom-width: 0; +} +.datalist-lines .datagrid-row td { + border-bottom-width: 1px; +} +.datalist .datagrid-cell, +.m-list li { + width: auto; + height: auto; + padding: 2px 4px; + line-height: 18px; + position: relative; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; +} +.datalist-link, +.m-list li>a { + display: block; + position: relative; + cursor: pointer; + color: #404040; + text-decoration: none; + overflow: hidden; + margin: -2px -4px; + padding: 2px 4px; + padding-right: 16px; + line-height: 18px; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; +} +.datalist-link::after, +.m-list li>a::after { + position: absolute; + display: block; + width: 8px; + height: 8px; + content: ''; + right: 6px; + top: 50%; + margin-top: -4px; + border-style: solid; + border-width: 1px 1px 0 0; + -ms-transform: rotate(45deg); + -moz-transform: rotate(45deg); + -webkit-transform: rotate(45deg); + -o-transform: rotate(45deg); + transform: rotate(45deg); +} +.m-list { + margin: 0; + padding: 0; + list-style: none; +} +.m-list li { + border-style: solid; + border-width: 0 0 1px 0; + border-color: #ebebeb; +} +.m-list li>a:hover { + background: #eee; + color: #404040; +} +.m-list .m-list-group { + padding: 0 4px; +} +.pagination { + zoom: 1; +} +.pagination table { + float: left; + height: 30px; +} +.pagination td { + border: 0; +} +.pagination-btn-separator { + float: left; + height: 24px; + border-left: 1px solid #ddd; + border-right: 1px solid #fff; + margin: 3px 1px; +} +.pagination .pagination-num { + border-width: 1px; + border-style: solid; + margin: 0 2px; + padding: 2px; + width: 2em; + height: auto; +} +.pagination-page-list { + margin: 0px 6px; + padding: 1px 2px; + width: auto; + height: auto; + border-width: 1px; + border-style: solid; +} +.pagination-info { + float: right; + margin: 0 6px; + padding: 0; + height: 30px; + line-height: 30px; + font-size: 12px; +} +.pagination span { + font-size: 12px; +} +.pagination-link .l-btn-text { + width: 24px; + text-align: center; + margin: 0; +} +.pagination-first { + background: url('images/pagination_icons.png') no-repeat 0 center; +} +.pagination-prev { + background: url('images/pagination_icons.png') no-repeat -16px center; +} +.pagination-next { + background: url('images/pagination_icons.png') no-repeat -32px center; +} +.pagination-last { + background: url('images/pagination_icons.png') no-repeat -48px center; +} +.pagination-load { + background: url('images/pagination_icons.png') no-repeat -64px center; +} +.pagination-loading { + background: url('images/loading.gif') no-repeat center center; +} +.pagination-page-list, +.pagination .pagination-num { + border-color: #ddd; +} +.calendar { + border-width: 1px; + border-style: solid; + padding: 1px; + overflow: hidden; +} +.calendar table { + table-layout: fixed; + border-collapse: separate; + font-size: 12px; + width: 100%; + height: 100%; +} +.calendar table td, +.calendar table th { + font-size: 12px; +} +.calendar-noborder { + border: 0; +} +.calendar-header { + position: relative; + height: 22px; +} +.calendar-title { + text-align: center; + height: 22px; +} +.calendar-title span { + position: relative; + display: inline-block; + top: 2px; + padding: 0 3px; + height: 18px; + line-height: 18px; + font-size: 12px; + cursor: pointer; + -moz-border-radius: 4px 4px 4px 4px; + -webkit-border-radius: 4px 4px 4px 4px; + border-radius: 4px 4px 4px 4px; +} +.calendar-prevmonth, +.calendar-nextmonth, +.calendar-prevyear, +.calendar-nextyear { + position: absolute; + top: 50%; + margin-top: -7px; + width: 14px; + height: 14px; + cursor: pointer; + font-size: 1px; + -moz-border-radius: 4px 4px 4px 4px; + -webkit-border-radius: 4px 4px 4px 4px; + border-radius: 4px 4px 4px 4px; +} +.calendar-prevmonth { + left: 20px; + background: url('images/calendar_arrows.png') no-repeat -18px -2px; +} +.calendar-nextmonth { + right: 20px; + background: url('images/calendar_arrows.png') no-repeat -34px -2px; +} +.calendar-prevyear { + left: 3px; + background: url('images/calendar_arrows.png') no-repeat -1px -2px; +} +.calendar-nextyear { + right: 3px; + background: url('images/calendar_arrows.png') no-repeat -49px -2px; +} +.calendar-body { + position: relative; +} +.calendar-body th, +.calendar-body td { + text-align: center; +} +.calendar-day { + border: 0; + padding: 1px; + cursor: pointer; + -moz-border-radius: 4px 4px 4px 4px; + -webkit-border-radius: 4px 4px 4px 4px; + border-radius: 4px 4px 4px 4px; +} +.calendar-other-month { + opacity: 0.3; + filter: alpha(opacity=30); +} +.calendar-disabled { + opacity: 0.6; + filter: alpha(opacity=60); + cursor: default; +} +.calendar-menu { + position: absolute; + top: 0; + left: 0; + width: 180px; + height: 150px; + padding: 5px; + font-size: 12px; + display: none; + overflow: hidden; +} +.calendar-menu-year-inner { + text-align: center; + padding-bottom: 5px; +} +.calendar-menu-year { + width: 50px; + text-align: center; + border-width: 1px; + border-style: solid; + outline-style: none; + resize: none; + margin: 0; + padding: 2px; + font-weight: bold; + font-size: 12px; + -moz-border-radius: 4px 4px 4px 4px; + -webkit-border-radius: 4px 4px 4px 4px; + border-radius: 4px 4px 4px 4px; +} +.calendar-menu-prev, +.calendar-menu-next { + display: inline-block; + width: 21px; + height: 21px; + vertical-align: top; + cursor: pointer; + -moz-border-radius: 4px 4px 4px 4px; + -webkit-border-radius: 4px 4px 4px 4px; + border-radius: 4px 4px 4px 4px; +} +.calendar-menu-prev { + margin-right: 10px; + background: url('images/calendar_arrows.png') no-repeat 2px 2px; +} +.calendar-menu-next { + margin-left: 10px; + background: url('images/calendar_arrows.png') no-repeat -45px 2px; +} +.calendar-menu-month { + text-align: center; + cursor: pointer; + font-weight: bold; + -moz-border-radius: 4px 4px 4px 4px; + -webkit-border-radius: 4px 4px 4px 4px; + border-radius: 4px 4px 4px 4px; +} +.calendar-body th, +.calendar-menu-month { + color: #8d8d8d; +} +.calendar-day { + color: #404040; +} +.calendar-sunday { + color: #CC2222; +} +.calendar-saturday { + color: #00ee00; +} +.calendar-today { + color: #0000ff; +} +.calendar-menu-year { + border-color: #ddd; +} +.calendar { + border-color: #ddd; +} +.calendar-header { + background: #f5f5f5; +} +.calendar-body, +.calendar-menu { + background: #ffffff; +} +.calendar-body th { + background: #fafafa; + padding: 2px 0; +} +.calendar-hover, +.calendar-nav-hover, +.calendar-menu-hover { + background-color: #eee; + color: #404040; +} +.calendar-hover { + border: 1px solid #ccc; + padding: 0; +} +.calendar-selected { + background-color: #00bbee; + color: #fff; + border: 1px solid #9cc8f7; + padding: 0; +} +.datebox-calendar-inner { + height: 180px; +} +.datebox-button { + padding: 0 5px; + text-align: center; +} +.datebox-button a { + line-height: 22px; + font-size: 12px; + font-weight: bold; + text-decoration: none; + opacity: 0.6; + filter: alpha(opacity=60); +} +.datebox-button a:hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.datebox-current, +.datebox-close { + float: left; +} +.datebox-close { + float: right; +} +.datebox .combo-arrow { + background-image: url('images/datebox_arrow.png'); + background-position: center center; +} +.datebox-button { + background-color: #fafafa; +} +.datebox-button a { + color: #404040; +} +.spinner-arrow { + background-color: #f5f5f5; + display: inline-block; + overflow: hidden; + vertical-align: top; + margin: 0; + padding: 0; + opacity: 1.0; + filter: alpha(opacity=100); + width: 18px; +} +.spinner-arrow-up, +.spinner-arrow-down { + opacity: 0.6; + filter: alpha(opacity=60); + display: block; + font-size: 1px; + width: 18px; + height: 10px; + width: 100%; + height: 50%; + color: #404040; + outline-style: none; +} +.spinner-arrow-hover { + background-color: #eee; + opacity: 1.0; + filter: alpha(opacity=100); +} +.spinner-arrow-up:hover, +.spinner-arrow-down:hover { + opacity: 1.0; + filter: alpha(opacity=100); + background-color: #eee; +} +.textbox-icon-disabled .spinner-arrow-up:hover, +.textbox-icon-disabled .spinner-arrow-down:hover { + opacity: 0.6; + filter: alpha(opacity=60); + background-color: #f5f5f5; + cursor: default; +} +.spinner .textbox-icon-disabled { + opacity: 0.6; + filter: alpha(opacity=60); +} +.spinner-arrow-up { + background: url('images/spinner_arrows.png') no-repeat 1px center; +} +.spinner-arrow-down { + background: url('images/spinner_arrows.png') no-repeat -15px center; +} +.spinner-button-up { + background: url('images/spinner_arrows.png') no-repeat -32px center; +} +.spinner-button-down { + background: url('images/spinner_arrows.png') no-repeat -48px center; +} +.progressbar { + border-width: 1px; + border-style: solid; + -moz-border-radius: 4px 4px 4px 4px; + -webkit-border-radius: 4px 4px 4px 4px; + border-radius: 4px 4px 4px 4px; + overflow: hidden; + position: relative; +} +.progressbar-text { + text-align: center; + position: absolute; +} +.progressbar-value { + position: relative; + overflow: hidden; + width: 0; + -moz-border-radius: 4px 0 0 4px; + -webkit-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; +} +.progressbar { + border-color: #ddd; +} +.progressbar-text { + color: #404040; + font-size: 12px; +} +.progressbar-value .progressbar-text { + background-color: #00bbee; + color: #fff; +} +.searchbox-button { + width: 18px; + height: 20px; + overflow: hidden; + display: inline-block; + vertical-align: top; + cursor: pointer; + opacity: 0.6; + filter: alpha(opacity=60); +} +.searchbox-button-hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.searchbox .l-btn-plain { + border: 0; + padding: 0; + vertical-align: top; + opacity: 0.6; + filter: alpha(opacity=60); + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox .l-btn-plain:hover { + border: 0; + padding: 0; + opacity: 1.0; + filter: alpha(opacity=100); + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox a.m-btn-plain-active { + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox .m-btn-active { + border-width: 0 1px 0 0; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox .textbox-button-right { + border-width: 0 0 0 1px; +} +.searchbox .textbox-button-left { + border-width: 0 1px 0 0; +} +.searchbox-button { + background: url('images/searchbox_button.png') no-repeat center center; +} +.searchbox .l-btn-plain { + background: #f5f5f5; +} +.searchbox .l-btn-plain-disabled, +.searchbox .l-btn-plain-disabled:hover { + opacity: 0.5; + filter: alpha(opacity=50); +} +.slider-disabled { + opacity: 0.5; + filter: alpha(opacity=50); +} +.slider-h { + height: 22px; +} +.slider-v { + width: 22px; +} +.slider-inner { + position: relative; + height: 6px; + top: 7px; + border-width: 1px; + border-style: solid; + border-radius: 4px; +} +.slider-handle { + position: absolute; + display: block; + outline: none; + width: 20px; + height: 20px; + top: 50%; + margin-top: -10px; + margin-left: -10px; +} +.slider-tip { + position: absolute; + display: inline-block; + line-height: 12px; + font-size: 12px; + white-space: nowrap; + top: -22px; +} +.slider-rule { + position: relative; + top: 15px; +} +.slider-rule span { + position: absolute; + display: inline-block; + font-size: 0; + height: 5px; + border-width: 0 0 0 1px; + border-style: solid; +} +.slider-rulelabel { + position: relative; + top: 20px; +} +.slider-rulelabel span { + position: absolute; + display: inline-block; + font-size: 12px; +} +.slider-v .slider-inner { + width: 6px; + left: 7px; + top: 0; + float: left; +} +.slider-v .slider-handle { + left: 50%; + margin-top: -10px; +} +.slider-v .slider-tip { + left: -10px; + margin-top: -6px; +} +.slider-v .slider-rule { + float: left; + top: 0; + left: 16px; +} +.slider-v .slider-rule span { + width: 5px; + height: 'auto'; + border-left: 0; + border-width: 1px 0 0 0; + border-style: solid; +} +.slider-v .slider-rulelabel { + float: left; + top: 0; + left: 23px; +} +.slider-handle { + background: url('images/slider_handle.png') no-repeat; +} +.slider-inner { + border-color: #ddd; + background: #f5f5f5; +} +.slider-rule span { + border-color: #ddd; +} +.slider-rulelabel span { + color: #404040; +} +.menu { + position: absolute; + margin: 0; + padding: 2px; + border-width: 1px; + border-style: solid; + overflow: hidden; +} +.menu-inline { + position: relative; +} +.menu-item { + position: relative; + margin: 0; + padding: 0; + overflow: hidden; + white-space: nowrap; + cursor: pointer; + border-width: 1px; + border-style: solid; +} +.menu-text { + height: 20px; + line-height: 20px; + float: left; + padding-left: 28px; +} +.menu-icon { + position: absolute; + width: 16px; + height: 16px; + left: 2px; + top: 50%; + margin-top: -8px; +} +.menu-rightarrow { + position: absolute; + width: 16px; + height: 16px; + right: 0; + top: 50%; + margin-top: -8px; +} +.menu-line { + position: absolute; + left: 26px; + top: 0; + height: 2000px; + font-size: 1px; +} +.menu-sep { + margin: 3px 0px 3px 25px; + font-size: 1px; +} +.menu-noline .menu-line { + display: none; +} +.menu-noline .menu-sep { + margin-left: 0; + margin-right: 0; +} +.menu-active { + -moz-border-radius: 4px 4px 4px 4px; + -webkit-border-radius: 4px 4px 4px 4px; + border-radius: 4px 4px 4px 4px; +} +.menu-item-disabled { + opacity: 0.5; + filter: alpha(opacity=50); + cursor: default; +} +.menu-text, +.menu-text span { + font-size: 12px; +} +.menu-shadow { + position: absolute; + -moz-border-radius: 4px 4px 4px 4px; + -webkit-border-radius: 4px 4px 4px 4px; + border-radius: 4px 4px 4px 4px; + background: #fafafa; + -moz-box-shadow: 2px 2px 3px #fafafa; + -webkit-box-shadow: 2px 2px 3px #fafafa; + box-shadow: 2px 2px 3px #fafafa; + filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); +} +.menu-rightarrow { + background: url('images/menu_arrows.png') no-repeat -32px center; +} +.menu-line { + border-left: 1px solid #ddd; + border-right: 1px solid #fff; +} +.menu-sep { + border-top: 1px solid #ddd; + border-bottom: 1px solid #fff; +} +.menu { + background-color: #fff; + border-color: #eee; + color: #404040; +} +.menu-content { + background: #ffffff; +} +.menu-item { + border-color: transparent; + _border-color: #fff; +} +.menu-active { + border-color: #ccc; + color: #404040; + background: #eee; +} +.menu-active-disabled { + border-color: transparent; + background: transparent; + color: #404040; +} +.m-btn-downarrow, +.s-btn-downarrow { + display: inline-block; + position: absolute; + width: 16px; + height: 16px; + font-size: 1px; + right: 0; + top: 50%; + margin-top: -8px; +} +.m-btn-active, +.s-btn-active { + background: #eee; + color: #404040; + border: 1px solid #ccc; + filter: none; +} +.m-btn-plain-active, +.s-btn-plain-active { + background: transparent; + padding: 0; + border-width: 1px; + border-style: solid; + -moz-border-radius: 4px 4px 4px 4px; + -webkit-border-radius: 4px 4px 4px 4px; + border-radius: 4px 4px 4px 4px; +} +.m-btn .l-btn-left .l-btn-text { + margin-right: 20px; +} +.m-btn .l-btn-icon-right .l-btn-text { + margin-right: 40px; +} +.m-btn .l-btn-icon-right .l-btn-icon { + right: 20px; +} +.m-btn .l-btn-icon-top .l-btn-text { + margin-right: 4px; + margin-bottom: 14px; +} +.m-btn .l-btn-icon-bottom .l-btn-text { + margin-right: 4px; + margin-bottom: 34px; +} +.m-btn .l-btn-icon-bottom .l-btn-icon { + top: auto; + bottom: 20px; +} +.m-btn .l-btn-icon-top .m-btn-downarrow, +.m-btn .l-btn-icon-bottom .m-btn-downarrow { + top: auto; + bottom: 0px; + left: 50%; + margin-left: -8px; +} +.m-btn-line { + display: inline-block; + position: absolute; + font-size: 1px; + display: none; +} +.m-btn .l-btn-left .m-btn-line { + right: 0; + width: 16px; + height: 500px; + border-style: solid; + border-color: #ccc; + border-width: 0 0 0 1px; +} +.m-btn .l-btn-icon-top .m-btn-line, +.m-btn .l-btn-icon-bottom .m-btn-line { + left: 0; + bottom: 0; + width: 500px; + height: 16px; + border-width: 1px 0 0 0; +} +.m-btn-large .l-btn-icon-right .l-btn-text { + margin-right: 56px; +} +.m-btn-large .l-btn-icon-bottom .l-btn-text { + margin-bottom: 50px; +} +.m-btn-downarrow, +.s-btn-downarrow { + background: url('images/menu_arrows.png') no-repeat 0 center; +} +.m-btn-plain-active, +.s-btn-plain-active { + border-color: #ccc; + background-color: #eee; + color: #404040; +} +.s-btn:hover .m-btn-line, +.s-btn-active .m-btn-line, +.s-btn-plain-active .m-btn-line { + display: inline-block; +} +.l-btn:hover .s-btn-downarrow, +.s-btn-active .s-btn-downarrow, +.s-btn-plain-active .s-btn-downarrow { + border-style: solid; + border-color: #ccc; + border-width: 0 0 0 1px; +} +.messager-body { + padding: 10px 10px 30px 10px; + overflow: auto; +} +.messager-button { + text-align: center; + padding: 5px; +} +.messager-button .l-btn { + width: 70px; +} +.messager-icon { + float: left; + width: 32px; + height: 32px; + margin: 0 10px 10px 0; +} +.messager-error { + background: url('images/messager_icons.png') no-repeat scroll -64px 0; +} +.messager-info { + background: url('images/messager_icons.png') no-repeat scroll 0 0; +} +.messager-question { + background: url('images/messager_icons.png') no-repeat scroll -32px 0; +} +.messager-warning { + background: url('images/messager_icons.png') no-repeat scroll -96px 0; +} +.messager-progress { + padding: 10px; +} +.messager-p-msg { + margin-bottom: 5px; +} +.messager-body .messager-input { + width: 100%; + padding: 4px 0; + outline-style: none; + border: 1px solid #ddd; +} +.window-thinborder .messager-button { + padding-bottom: 8px; +} +.tree { + margin: 0; + padding: 0; + list-style-type: none; +} +.tree li { + white-space: nowrap; +} +.tree li ul { + list-style-type: none; + margin: 0; + padding: 0; +} +.tree-node { + height: 18px; + white-space: nowrap; + cursor: pointer; +} +.tree-hit { + cursor: pointer; +} +.tree-expanded, +.tree-collapsed, +.tree-folder, +.tree-file, +.tree-checkbox, +.tree-indent { + display: inline-block; + width: 16px; + height: 18px; + vertical-align: top; + overflow: hidden; +} +.tree-expanded { + background: url('images/tree_icons.png') no-repeat -18px 0px; +} +.tree-expanded-hover { + background: url('images/tree_icons.png') no-repeat -50px 0px; +} +.tree-collapsed { + background: url('images/tree_icons.png') no-repeat 0px 0px; +} +.tree-collapsed-hover { + background: url('images/tree_icons.png') no-repeat -32px 0px; +} +.tree-lines .tree-expanded, +.tree-lines .tree-root-first .tree-expanded { + background: url('images/tree_icons.png') no-repeat -144px 0; +} +.tree-lines .tree-collapsed, +.tree-lines .tree-root-first .tree-collapsed { + background: url('images/tree_icons.png') no-repeat -128px 0; +} +.tree-lines .tree-node-last .tree-expanded, +.tree-lines .tree-root-one .tree-expanded { + background: url('images/tree_icons.png') no-repeat -80px 0; +} +.tree-lines .tree-node-last .tree-collapsed, +.tree-lines .tree-root-one .tree-collapsed { + background: url('images/tree_icons.png') no-repeat -64px 0; +} +.tree-line { + background: url('images/tree_icons.png') no-repeat -176px 0; +} +.tree-join { + background: url('images/tree_icons.png') no-repeat -192px 0; +} +.tree-joinbottom { + background: url('images/tree_icons.png') no-repeat -160px 0; +} +.tree-folder { + background: url('images/tree_icons.png') no-repeat -208px 0; +} +.tree-folder-open { + background: url('images/tree_icons.png') no-repeat -224px 0; +} +.tree-file { + background: url('images/tree_icons.png') no-repeat -240px 0; +} +.tree-loading { + background: url('images/loading.gif') no-repeat center center; +} +.tree-checkbox0 { + background: url('images/tree_icons.png') no-repeat -208px -18px; +} +.tree-checkbox1 { + background: url('images/tree_icons.png') no-repeat -224px -18px; +} +.tree-checkbox2 { + background: url('images/tree_icons.png') no-repeat -240px -18px; +} +.tree-title { + font-size: 12px; + display: inline-block; + text-decoration: none; + vertical-align: top; + white-space: nowrap; + padding: 0 2px; + height: 18px; + line-height: 18px; +} +.tree-node-proxy { + font-size: 12px; + line-height: 20px; + padding: 0 2px 0 20px; + border-width: 1px; + border-style: solid; + z-index: 9900000; +} +.tree-dnd-icon { + display: inline-block; + position: absolute; + width: 16px; + height: 18px; + left: 2px; + top: 50%; + margin-top: -9px; +} +.tree-dnd-yes { + background: url('images/tree_icons.png') no-repeat -256px 0; +} +.tree-dnd-no { + background: url('images/tree_icons.png') no-repeat -256px -18px; +} +.tree-node-top { + border-top: 1px dotted red; +} +.tree-node-bottom { + border-bottom: 1px dotted red; +} +.tree-node-append .tree-title { + border: 1px dotted red; +} +.tree-editor { + border: 1px solid #ddd; + font-size: 12px; + line-height: 16px; + padding: 0 4px; + margin: 0; + width: 80px; + outline-style: none; + vertical-align: top; + position: absolute; + top: 0; +} +.tree-node-proxy { + background-color: #ffffff; + color: #404040; + border-color: #ddd; +} +.tree-node-hover { + background: #eee; + color: #404040; +} +.tree-node-selected { + background: #00bbee; + color: #fff; +} +.tree-node-hidden { + display: none; +} +.validatebox-invalid { + border-color: #ffa8a8; + background-color: #fff; + color: #404040; +} +.tooltip { + position: absolute; + display: none; + z-index: 9900000; + outline: none; + opacity: 1; + filter: alpha(opacity=100); + padding: 5px; + border-width: 1px; + border-style: solid; + border-radius: 5px; + -moz-border-radius: 4px 4px 4px 4px; + -webkit-border-radius: 4px 4px 4px 4px; + border-radius: 4px 4px 4px 4px; +} +.tooltip-content { + font-size: 12px; +} +.tooltip-arrow-outer, +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; + line-height: 0; + font-size: 0; + border-style: solid; + border-width: 6px; + border-color: transparent; + _border-color: tomato; + _filter: chroma(color=tomato); +} +.tooltip-arrow { + display: none \9; +} +.tooltip-right .tooltip-arrow-outer { + left: 0; + top: 50%; + margin: -6px 0 0 -13px; +} +.tooltip-right .tooltip-arrow { + left: 0; + top: 50%; + margin: -6px 0 0 -12px; +} +.tooltip-left .tooltip-arrow-outer { + right: 0; + top: 50%; + margin: -6px -13px 0 0; +} +.tooltip-left .tooltip-arrow { + right: 0; + top: 50%; + margin: -6px -12px 0 0; +} +.tooltip-top .tooltip-arrow-outer { + bottom: 0; + left: 50%; + margin: 0 0 -13px -6px; +} +.tooltip-top .tooltip-arrow { + bottom: 0; + left: 50%; + margin: 0 0 -12px -6px; +} +.tooltip-bottom .tooltip-arrow-outer { + top: 0; + left: 50%; + margin: -13px 0 0 -6px; +} +.tooltip-bottom .tooltip-arrow { + top: 0; + left: 50%; + margin: -12px 0 0 -6px; +} +.tooltip { + background-color: #ffffff; + border-color: #ddd; + color: #404040; +} +.tooltip-right .tooltip-arrow-outer { + border-right-color: #ddd; +} +.tooltip-right .tooltip-arrow { + border-right-color: #ffffff; +} +.tooltip-left .tooltip-arrow-outer { + border-left-color: #ddd; +} +.tooltip-left .tooltip-arrow { + border-left-color: #ffffff; +} +.tooltip-top .tooltip-arrow-outer { + border-top-color: #ddd; +} +.tooltip-top .tooltip-arrow { + border-top-color: #ffffff; +} +.tooltip-bottom .tooltip-arrow-outer { + border-bottom-color: #ddd; +} +.tooltip-bottom .tooltip-arrow { + border-bottom-color: #ffffff; +} +.switchbutton { + text-decoration: none; + display: inline-block; + overflow: hidden; + vertical-align: middle; + margin: 0; + padding: 0; + cursor: pointer; + background: #d9d9d9; + border: 1px solid #d9d9d9; + -moz-border-radius: 4px 4px 4px 4px; + -webkit-border-radius: 4px 4px 4px 4px; + border-radius: 4px 4px 4px 4px; +} +.switchbutton-inner { + display: inline-block; + overflow: hidden; + position: relative; + top: -1px; + left: -1px; +} +.switchbutton-on, +.switchbutton-off, +.switchbutton-handle { + display: inline-block; + text-align: center; + height: 100%; + float: left; + font-size: 12px; + -moz-border-radius: 4px 4px 4px 4px; + -webkit-border-radius: 4px 4px 4px 4px; + border-radius: 4px 4px 4px 4px; +} +.switchbutton-on { + background: #00bbee; + color: #fff; +} +.switchbutton-off { + background-color: #ffffff; + color: #404040; +} +.switchbutton-on, +.switchbutton-reversed .switchbutton-off { + -moz-border-radius: 4px 0 0 4px; + -webkit-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; +} +.switchbutton-off, +.switchbutton-reversed .switchbutton-on { + -moz-border-radius: 0 4px 4px 0; + -webkit-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} +.switchbutton-handle { + position: absolute; + top: 0; + left: 50%; + background-color: #ffffff; + color: #404040; + border: 1px solid #d9d9d9; + -moz-box-shadow: 0 0 3px 0 #d9d9d9; + -webkit-box-shadow: 0 0 3px 0 #d9d9d9; + box-shadow: 0 0 3px 0 #d9d9d9; +} +.switchbutton-value { + position: absolute; + top: 0; + left: -5000px; +} +.switchbutton-disabled { + opacity: 0.5; + filter: alpha(opacity=50); +} +.switchbutton-disabled, +.switchbutton-readonly { + cursor: default; +} +.l-btn { + box-shadow: 0 1px 2px rgba(0,0,0,0.2), 0 1px 1px rgba(0,0,0,0.05); +} +.l-btn:active { + box-shadow: 0 6px 17px 0 rgba(235,235,235,0.3); +} +.l-btn-selected { + box-shadow: 0 1px 2px rgba(89,205,226,0.2), 0 1px 1px rgba(89,205,226,0.05); +} +.l-btn-plain, +.l-btn-disabled, +.l-btn-disabled:active, +.textbox-button { + box-shadow: none; +} +.l-btn-selected, +.l-btn-selected:hover { + background: #00bbee; + color: #fff; +} +.l-btn-plain-selected, +.l-btn-plain-selected:hover { + background: #00bbee; +} +.m-btn-active, +.m-btn-plain-active, +.s-btn-active, +.s-btn-plain-active { + background: #00bbee; + color: #fff; +} +.menu-shadow, +.combo-p { + -moz-box-shadow: 0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24); + -webkit-box-shadow: 0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24); + box-shadow: 0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24); + filter: none; +} +.menu-active { + border-color: transparent; + color: #fff; + background: #00bbee; +} +.menu-active-disabled { + border-color: transparent; + background: transparent; + color: #404040; +} +.window { + background-color: #fff; +} +.window-proxy { + border-color: #ccc; +} +.window-shadow { + -moz-box-shadow: 0 7px 8px -4px rgba(0,0,0,0.2), 0 13px 19px 2px rgba(0,0,0,0.14), 0 5px 24px 4px rgba(0,0,0,0.12); + -webkit-box-shadow: 0 7px 8px -4px rgba(0,0,0,0.2), 0 13px 19px 2px rgba(0,0,0,0.14), 0 5px 24px 4px rgba(0,0,0,0.12); + box-shadow: 0 7px 8px -4px rgba(0,0,0,0.2), 0 13px 19px 2px rgba(0,0,0,0.14), 0 5px 24px 4px rgba(0,0,0,0.12); + filter: none; +} +.window-mask { + background: #000; +} +.datagrid-header .datagrid-cell, +.datagrid-header .datagrid-cell-group { + color: #666; + font-weight: bold; + filter: alpha(opacity=80); + opacity: 0.80; +} +.datagrid-header td, +.datagrid-body td, +.datagrid-footer td { + border-style: solid; +} diff --git a/src/main/webapp/static/easyUI/themes/material/filebox.css b/src/main/webapp/static/easyUI/themes/material/filebox.css new file mode 100644 index 0000000000000000000000000000000000000000..c6bac66315046138147a673e0ffaa3d36bce3acc --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/material/filebox.css @@ -0,0 +1,20 @@ +.filebox .textbox-value { + vertical-align: top; + position: absolute; + top: 0; + left: -5000px; +} +.filebox-label { + display: inline-block; + position: absolute; + width: 100%; + height: 100%; + cursor: pointer; + left: 0; + top: 0; + z-index: 10; + background: url('images/blank.gif') no-repeat; +} +.l-btn-disabled .filebox-label { + cursor: default; +} diff --git a/src/main/webapp/static/easyUI/themes/material/images/Thumbs.db b/src/main/webapp/static/easyUI/themes/material/images/Thumbs.db new file mode 100644 index 0000000000000000000000000000000000000000..5f257a2a49959543d36e2641d352572547e40e63 Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/material/images/Thumbs.db differ diff --git a/src/main/webapp/static/easyUI/themes/material/images/accordion_arrows.png b/src/main/webapp/static/easyUI/themes/material/images/accordion_arrows.png new file mode 100644 index 0000000000000000000000000000000000000000..a0b8769cc5091d81760c7ed555ac3c3453febbfd Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/material/images/accordion_arrows.png differ diff --git a/src/main/webapp/static/easyUI/themes/material/images/blank.gif b/src/main/webapp/static/easyUI/themes/material/images/blank.gif new file mode 100644 index 0000000000000000000000000000000000000000..1d11fa9ada9e93505b3d736acb204083f45d5fbf Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/material/images/blank.gif differ diff --git a/src/main/webapp/static/easyUI/themes/material/images/calendar_arrows.png b/src/main/webapp/static/easyUI/themes/material/images/calendar_arrows.png new file mode 100644 index 0000000000000000000000000000000000000000..430c4ad685b8c0068ecb7e3cbef74f493a84ad0d Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/material/images/calendar_arrows.png differ diff --git a/src/main/webapp/static/easyUI/themes/material/images/combo_arrow.png b/src/main/webapp/static/easyUI/themes/material/images/combo_arrow.png new file mode 100644 index 0000000000000000000000000000000000000000..04f4ba0cd513af3af21493718618a8a33a1c9b8e Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/material/images/combo_arrow.png differ diff --git a/src/main/webapp/static/easyUI/themes/material/images/datagrid_icons.png b/src/main/webapp/static/easyUI/themes/material/images/datagrid_icons.png new file mode 100644 index 0000000000000000000000000000000000000000..66b83435f8f62b28ce2c8dc1638e112c5932a2f6 Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/material/images/datagrid_icons.png differ diff --git a/src/main/webapp/static/easyUI/themes/material/images/datebox_arrow.png b/src/main/webapp/static/easyUI/themes/material/images/datebox_arrow.png new file mode 100644 index 0000000000000000000000000000000000000000..783c83357fdf90a1c7c024358e1d768b5c09c135 Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/material/images/datebox_arrow.png differ diff --git a/src/main/webapp/static/easyUI/themes/material/images/layout_arrows.png b/src/main/webapp/static/easyUI/themes/material/images/layout_arrows.png new file mode 100644 index 0000000000000000000000000000000000000000..bf7929f547d2358ee91c787ac79191544ae1e089 Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/material/images/layout_arrows.png differ diff --git a/src/main/webapp/static/easyUI/themes/material/images/linkbutton_bg.png b/src/main/webapp/static/easyUI/themes/material/images/linkbutton_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..fc66bd2cd24047b8377342365a1df3846327ecde Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/material/images/linkbutton_bg.png differ diff --git a/src/main/webapp/static/easyUI/themes/material/images/loading.gif b/src/main/webapp/static/easyUI/themes/material/images/loading.gif new file mode 100644 index 0000000000000000000000000000000000000000..68f01d04813c1f622810864a3aaa04b4a17ac8f9 Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/material/images/loading.gif differ diff --git a/src/main/webapp/static/easyUI/themes/material/images/menu_arrows.png b/src/main/webapp/static/easyUI/themes/material/images/menu_arrows.png new file mode 100644 index 0000000000000000000000000000000000000000..b986842e7e4044caed18edbcb4b376a4bb915623 Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/material/images/menu_arrows.png differ diff --git a/src/main/webapp/static/easyUI/themes/material/images/messager_icons.png b/src/main/webapp/static/easyUI/themes/material/images/messager_icons.png new file mode 100644 index 0000000000000000000000000000000000000000..62c18c135860351063ebaabe8c0f4df7664b8f65 Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/material/images/messager_icons.png differ diff --git a/src/main/webapp/static/easyUI/themes/material/images/pagination_icons.png b/src/main/webapp/static/easyUI/themes/material/images/pagination_icons.png new file mode 100644 index 0000000000000000000000000000000000000000..e0f1b07b05dcbe9e648afe83571f1c76454c78b7 Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/material/images/pagination_icons.png differ diff --git a/src/main/webapp/static/easyUI/themes/material/images/panel_tools.png b/src/main/webapp/static/easyUI/themes/material/images/panel_tools.png new file mode 100644 index 0000000000000000000000000000000000000000..f33f8c9707f08ea1a809c6ebe1c861c3181afa71 Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/material/images/panel_tools.png differ diff --git a/src/main/webapp/static/easyUI/themes/material/images/passwordbox_close.png b/src/main/webapp/static/easyUI/themes/material/images/passwordbox_close.png new file mode 100644 index 0000000000000000000000000000000000000000..276b57974284d1449250e362644dd7416632d92c Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/material/images/passwordbox_close.png differ diff --git a/src/main/webapp/static/easyUI/themes/material/images/passwordbox_open.png b/src/main/webapp/static/easyUI/themes/material/images/passwordbox_open.png new file mode 100644 index 0000000000000000000000000000000000000000..0f25d535e05b22b406fd72647611aace9cfa6249 Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/material/images/passwordbox_open.png differ diff --git a/src/main/webapp/static/easyUI/themes/material/images/searchbox_button.png b/src/main/webapp/static/easyUI/themes/material/images/searchbox_button.png new file mode 100644 index 0000000000000000000000000000000000000000..6dd1931589b453f6cc9772fd1851d8705d6b6631 Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/material/images/searchbox_button.png differ diff --git a/src/main/webapp/static/easyUI/themes/material/images/slider_handle.png b/src/main/webapp/static/easyUI/themes/material/images/slider_handle.png new file mode 100644 index 0000000000000000000000000000000000000000..b9802bae14c536281a8fdbe6cd07abbc13985033 Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/material/images/slider_handle.png differ diff --git a/src/main/webapp/static/easyUI/themes/material/images/spinner_arrows.png b/src/main/webapp/static/easyUI/themes/material/images/spinner_arrows.png new file mode 100644 index 0000000000000000000000000000000000000000..b1773c24b20b30318e38c4b84690e3d0010c9c43 Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/material/images/spinner_arrows.png differ diff --git a/src/main/webapp/static/easyUI/themes/material/images/tabs_icons.png b/src/main/webapp/static/easyUI/themes/material/images/tabs_icons.png new file mode 100644 index 0000000000000000000000000000000000000000..dfa10f7d78b3dc6965ef86957a0e4345ec000bc6 Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/material/images/tabs_icons.png differ diff --git a/src/main/webapp/static/easyUI/themes/material/images/tagbox_icons.png b/src/main/webapp/static/easyUI/themes/material/images/tagbox_icons.png new file mode 100644 index 0000000000000000000000000000000000000000..8ec64360884b3fdb81255ad6074bc08ed183232c Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/material/images/tagbox_icons.png differ diff --git a/src/main/webapp/static/easyUI/themes/material/images/tree_icons.png b/src/main/webapp/static/easyUI/themes/material/images/tree_icons.png new file mode 100644 index 0000000000000000000000000000000000000000..e9be4f3a9965e49a4e4078f8c53f486d761a7468 Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/material/images/tree_icons.png differ diff --git a/src/main/webapp/static/easyUI/themes/material/images/validatebox_warning.png b/src/main/webapp/static/easyUI/themes/material/images/validatebox_warning.png new file mode 100644 index 0000000000000000000000000000000000000000..2b3d4f05babf3f82b146350e96570fac02075de0 Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/material/images/validatebox_warning.png differ diff --git a/src/main/webapp/static/easyUI/themes/material/layout.css b/src/main/webapp/static/easyUI/themes/material/layout.css new file mode 100644 index 0000000000000000000000000000000000000000..41ff29d55dfa65928b3feb5a33602a3ea10e942a --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/material/layout.css @@ -0,0 +1,150 @@ +.layout { + position: relative; + overflow: hidden; + margin: 0; + padding: 0; + z-index: 0; +} +.layout-panel { + position: absolute; + overflow: hidden; +} +.layout-body { + min-width: 1px; + min-height: 1px; +} +.layout-panel-east, +.layout-panel-west { + z-index: 2; +} +.layout-panel-north, +.layout-panel-south { + z-index: 3; +} +.layout-expand { + position: absolute; + padding: 0px; + font-size: 1px; + cursor: pointer; + z-index: 1; +} +.layout-expand .panel-header, +.layout-expand .panel-body { + background: transparent; + filter: none; + overflow: hidden; +} +.layout-expand .panel-header { + border-bottom-width: 0px; +} +.layout-expand .panel-body { + position: relative; +} +.layout-expand .panel-body .panel-icon { + margin-top: 0; + top: 0; + left: 50%; + margin-left: -8px; +} +.layout-expand-west .panel-header .panel-icon, +.layout-expand-east .panel-header .panel-icon { + display: none; +} +.layout-expand-title { + position: absolute; + top: 0; + left: 21px; + white-space: nowrap; + word-wrap: normal; + -webkit-transform: rotate(90deg); + -webkit-transform-origin: 0 0; + -moz-transform: rotate(90deg); + -moz-transform-origin: 0 0; + -o-transform: rotate(90deg); + -o-transform-origin: 0 0; + transform: rotate(90deg); + transform-origin: 0 0; +} +.layout-expand-title-up { + position: absolute; + top: 0; + left: 0; + text-align: right; + padding-left: 5px; + white-space: nowrap; + word-wrap: normal; + -webkit-transform: rotate(-90deg); + -webkit-transform-origin: 0 0; + -moz-transform: rotate(-90deg); + -moz-transform-origin: 0 0; + -o-transform: rotate(-90deg); + -o-transform-origin: 0 0; + transform: rotate(-90deg); + transform-origin: 0 0; +} +.layout-expand-with-icon { + top: 18px; +} +.layout-expand .panel-body-noheader .layout-expand-title, +.layout-expand .panel-body-noheader .panel-icon { + top: 5px; +} +.layout-expand .panel-body-noheader .layout-expand-with-icon { + top: 23px; +} +.layout-split-proxy-h, +.layout-split-proxy-v { + position: absolute; + font-size: 1px; + display: none; + z-index: 5; +} +.layout-split-proxy-h { + width: 5px; + cursor: e-resize; +} +.layout-split-proxy-v { + height: 5px; + cursor: n-resize; +} +.layout-mask { + position: absolute; + background: #fafafa; + filter: alpha(opacity=10); + opacity: 0.10; + z-index: 4; +} +.layout-button-up { + background: url('images/layout_arrows.png') no-repeat -16px -16px; +} +.layout-button-down { + background: url('images/layout_arrows.png') no-repeat -16px 0; +} +.layout-button-left { + background: url('images/layout_arrows.png') no-repeat 0 0; +} +.layout-button-right { + background: url('images/layout_arrows.png') no-repeat 0 -16px; +} +.layout-split-proxy-h, +.layout-split-proxy-v { + background-color: #ccc; +} +.layout-split-north { + border-bottom: 5px solid #ffffff; +} +.layout-split-south { + border-top: 5px solid #ffffff; +} +.layout-split-east { + border-left: 5px solid #ffffff; +} +.layout-split-west { + border-right: 5px solid #ffffff; +} +.layout-expand { + background-color: #f5f5f5; +} +.layout-expand-over { + background-color: #f5f5f5; +} diff --git a/src/main/webapp/static/easyUI/themes/material/linkbutton.css b/src/main/webapp/static/easyUI/themes/material/linkbutton.css new file mode 100644 index 0000000000000000000000000000000000000000..c334090bae66dcde640c5c50a56df419b82a9c8b --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/material/linkbutton.css @@ -0,0 +1,191 @@ +.l-btn { + text-decoration: none; + display: inline-block; + overflow: hidden; + margin: 0; + padding: 0; + cursor: pointer; + outline: none; + text-align: center; + vertical-align: middle; + line-height: normal; +} +.l-btn-plain { + border-width: 0; + padding: 1px; +} +.l-btn-left { + display: inline-block; + position: relative; + overflow: hidden; + margin: 0; + padding: 0; + vertical-align: top; +} +.l-btn-text { + display: inline-block; + vertical-align: top; + width: auto; + line-height: 24px; + font-size: 12px; + padding: 0; + margin: 0 4px; +} +.l-btn-icon { + display: inline-block; + width: 16px; + height: 16px; + line-height: 16px; + position: absolute; + top: 50%; + margin-top: -8px; + font-size: 1px; +} +.l-btn span span .l-btn-empty { + display: inline-block; + margin: 0; + width: 16px; + height: 24px; + font-size: 1px; + vertical-align: top; +} +.l-btn span .l-btn-icon-left { + padding: 0 0 0 20px; + background-position: left center; +} +.l-btn span .l-btn-icon-right { + padding: 0 20px 0 0; + background-position: right center; +} +.l-btn-icon-left .l-btn-text { + margin: 0 4px 0 24px; +} +.l-btn-icon-left .l-btn-icon { + left: 4px; +} +.l-btn-icon-right .l-btn-text { + margin: 0 24px 0 4px; +} +.l-btn-icon-right .l-btn-icon { + right: 4px; +} +.l-btn-icon-top .l-btn-text { + margin: 20px 4px 0 4px; +} +.l-btn-icon-top .l-btn-icon { + top: 4px; + left: 50%; + margin: 0 0 0 -8px; +} +.l-btn-icon-bottom .l-btn-text { + margin: 0 4px 20px 4px; +} +.l-btn-icon-bottom .l-btn-icon { + top: auto; + bottom: 4px; + left: 50%; + margin: 0 0 0 -8px; +} +.l-btn-left .l-btn-empty { + margin: 0 4px; + width: 16px; +} +.l-btn-plain:hover { + padding: 0; +} +.l-btn-focus { + outline: #0000FF dotted thin; +} +.l-btn-large .l-btn-text { + line-height: 40px; +} +.l-btn-large .l-btn-icon { + width: 32px; + height: 32px; + line-height: 32px; + margin-top: -16px; +} +.l-btn-large .l-btn-icon-left .l-btn-text { + margin-left: 40px; +} +.l-btn-large .l-btn-icon-right .l-btn-text { + margin-right: 40px; +} +.l-btn-large .l-btn-icon-top .l-btn-text { + margin-top: 36px; + line-height: 24px; + min-width: 32px; +} +.l-btn-large .l-btn-icon-top .l-btn-icon { + margin: 0 0 0 -16px; +} +.l-btn-large .l-btn-icon-bottom .l-btn-text { + margin-bottom: 36px; + line-height: 24px; + min-width: 32px; +} +.l-btn-large .l-btn-icon-bottom .l-btn-icon { + margin: 0 0 0 -16px; +} +.l-btn-large .l-btn-left .l-btn-empty { + margin: 0 4px; + width: 32px; +} +.l-btn { + color: #404040; + background: #fafafa; + background-repeat: repeat-x; + border: 1px solid #d9d9d9; + -moz-border-radius: 4px 4px 4px 4px; + -webkit-border-radius: 4px 4px 4px 4px; + border-radius: 4px 4px 4px 4px; +} +.l-btn:hover { + background: #eee; + color: #404040; + border: 1px solid #ccc; + filter: none; +} +.l-btn-plain { + background: transparent; + border-width: 0; + filter: none; +} +.l-btn-outline { + border-width: 1px; + border-color: #ccc; + padding: 0; +} +.l-btn-plain:hover { + background: #eee; + color: #404040; + border: 1px solid #ccc; + -moz-border-radius: 4px 4px 4px 4px; + -webkit-border-radius: 4px 4px 4px 4px; + border-radius: 4px 4px 4px 4px; +} +.l-btn-disabled, +.l-btn-disabled:hover { + opacity: 0.5; + cursor: default; + background: #fafafa; + color: #404040; +} +.l-btn-disabled .l-btn-text, +.l-btn-disabled .l-btn-icon { + filter: alpha(opacity=50); +} +.l-btn-plain-disabled, +.l-btn-plain-disabled:hover { + background: transparent; + filter: alpha(opacity=50); +} +.l-btn-selected, +.l-btn-selected:hover { + background: #00bbee; + filter: none; +} +.l-btn-plain-selected, +.l-btn-plain-selected:hover { + background: #00bbee; +} diff --git a/src/main/webapp/static/easyUI/themes/material/menu.css b/src/main/webapp/static/easyUI/themes/material/menu.css new file mode 100644 index 0000000000000000000000000000000000000000..69f530ee228023752b645f65fb5739596a10b58a --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/material/menu.css @@ -0,0 +1,119 @@ +.menu { + position: absolute; + margin: 0; + padding: 2px; + border-width: 1px; + border-style: solid; + overflow: hidden; +} +.menu-inline { + position: relative; +} +.menu-item { + position: relative; + margin: 0; + padding: 0; + overflow: hidden; + white-space: nowrap; + cursor: pointer; + border-width: 1px; + border-style: solid; +} +.menu-text { + height: 20px; + line-height: 20px; + float: left; + padding-left: 28px; +} +.menu-icon { + position: absolute; + width: 16px; + height: 16px; + left: 2px; + top: 50%; + margin-top: -8px; +} +.menu-rightarrow { + position: absolute; + width: 16px; + height: 16px; + right: 0; + top: 50%; + margin-top: -8px; +} +.menu-line { + position: absolute; + left: 26px; + top: 0; + height: 2000px; + font-size: 1px; +} +.menu-sep { + margin: 3px 0px 3px 25px; + font-size: 1px; +} +.menu-noline .menu-line { + display: none; +} +.menu-noline .menu-sep { + margin-left: 0; + margin-right: 0; +} +.menu-active { + -moz-border-radius: 4px 4px 4px 4px; + -webkit-border-radius: 4px 4px 4px 4px; + border-radius: 4px 4px 4px 4px; +} +.menu-item-disabled { + opacity: 0.5; + filter: alpha(opacity=50); + cursor: default; +} +.menu-text, +.menu-text span { + font-size: 12px; +} +.menu-shadow { + position: absolute; + -moz-border-radius: 4px 4px 4px 4px; + -webkit-border-radius: 4px 4px 4px 4px; + border-radius: 4px 4px 4px 4px; + background: #fafafa; + -moz-box-shadow: 2px 2px 3px #fafafa; + -webkit-box-shadow: 2px 2px 3px #fafafa; + box-shadow: 2px 2px 3px #fafafa; + filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); +} +.menu-rightarrow { + background: url('images/menu_arrows.png') no-repeat -32px center; +} +.menu-line { + border-left: 1px solid #ddd; + border-right: 1px solid #fff; +} +.menu-sep { + border-top: 1px solid #ddd; + border-bottom: 1px solid #fff; +} +.menu { + background-color: #fff; + border-color: #eee; + color: #404040; +} +.menu-content { + background: #ffffff; +} +.menu-item { + border-color: transparent; + _border-color: #fff; +} +.menu-active { + border-color: #ccc; + color: #404040; + background: #eee; +} +.menu-active-disabled { + border-color: transparent; + background: transparent; + color: #404040; +} diff --git a/src/main/webapp/static/easyUI/themes/material/menubutton.css b/src/main/webapp/static/easyUI/themes/material/menubutton.css new file mode 100644 index 0000000000000000000000000000000000000000..fee358ba59273da68341f153ea0aea4b7ba1b43b --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/material/menubutton.css @@ -0,0 +1,94 @@ +.m-btn-downarrow, +.s-btn-downarrow { + display: inline-block; + position: absolute; + width: 16px; + height: 16px; + font-size: 1px; + right: 0; + top: 50%; + margin-top: -8px; +} +.m-btn-active, +.s-btn-active { + background: #eee; + color: #404040; + border: 1px solid #ccc; + filter: none; +} +.m-btn-plain-active, +.s-btn-plain-active { + background: transparent; + padding: 0; + border-width: 1px; + border-style: solid; + -moz-border-radius: 4px 4px 4px 4px; + -webkit-border-radius: 4px 4px 4px 4px; + border-radius: 4px 4px 4px 4px; +} +.m-btn .l-btn-left .l-btn-text { + margin-right: 20px; +} +.m-btn .l-btn-icon-right .l-btn-text { + margin-right: 40px; +} +.m-btn .l-btn-icon-right .l-btn-icon { + right: 20px; +} +.m-btn .l-btn-icon-top .l-btn-text { + margin-right: 4px; + margin-bottom: 14px; +} +.m-btn .l-btn-icon-bottom .l-btn-text { + margin-right: 4px; + margin-bottom: 34px; +} +.m-btn .l-btn-icon-bottom .l-btn-icon { + top: auto; + bottom: 20px; +} +.m-btn .l-btn-icon-top .m-btn-downarrow, +.m-btn .l-btn-icon-bottom .m-btn-downarrow { + top: auto; + bottom: 0px; + left: 50%; + margin-left: -8px; +} +.m-btn-line { + display: inline-block; + position: absolute; + font-size: 1px; + display: none; +} +.m-btn .l-btn-left .m-btn-line { + right: 0; + width: 16px; + height: 500px; + border-style: solid; + border-color: #ccc; + border-width: 0 0 0 1px; +} +.m-btn .l-btn-icon-top .m-btn-line, +.m-btn .l-btn-icon-bottom .m-btn-line { + left: 0; + bottom: 0; + width: 500px; + height: 16px; + border-width: 1px 0 0 0; +} +.m-btn-large .l-btn-icon-right .l-btn-text { + margin-right: 56px; +} +.m-btn-large .l-btn-icon-bottom .l-btn-text { + margin-bottom: 50px; +} +.m-btn-downarrow, +.s-btn-downarrow { + background: url('images/menu_arrows.png') no-repeat 0 center; +} +.m-btn-plain-active, +.s-btn-plain-active { + border-color: #ccc; + background-color: #eee; + color: #404040; +} diff --git a/src/main/webapp/static/easyUI/themes/material/messager.css b/src/main/webapp/static/easyUI/themes/material/messager.css new file mode 100644 index 0000000000000000000000000000000000000000..f8e29afd3ad3c7c4a309c3c80682c6252b865b7f --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/material/messager.css @@ -0,0 +1,44 @@ +.messager-body { + padding: 10px 10px 30px 10px; + overflow: auto; +} +.messager-button { + text-align: center; + padding: 5px; +} +.messager-button .l-btn { + width: 70px; +} +.messager-icon { + float: left; + width: 32px; + height: 32px; + margin: 0 10px 10px 0; +} +.messager-error { + background: url('images/messager_icons.png') no-repeat scroll -64px 0; +} +.messager-info { + background: url('images/messager_icons.png') no-repeat scroll 0 0; +} +.messager-question { + background: url('images/messager_icons.png') no-repeat scroll -32px 0; +} +.messager-warning { + background: url('images/messager_icons.png') no-repeat scroll -96px 0; +} +.messager-progress { + padding: 10px; +} +.messager-p-msg { + margin-bottom: 5px; +} +.messager-body .messager-input { + width: 100%; + padding: 4px 0; + outline-style: none; + border: 1px solid #ddd; +} +.window-thinborder .messager-button { + padding-bottom: 8px; +} diff --git a/src/main/webapp/static/easyUI/themes/material/numberbox.css b/src/main/webapp/static/easyUI/themes/material/numberbox.css new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/main/webapp/static/easyUI/themes/material/pagination.css b/src/main/webapp/static/easyUI/themes/material/pagination.css new file mode 100644 index 0000000000000000000000000000000000000000..c0f74243c3e786c4db222e3eb553d69770cff615 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/material/pagination.css @@ -0,0 +1,71 @@ +.pagination { + zoom: 1; +} +.pagination table { + float: left; + height: 30px; +} +.pagination td { + border: 0; +} +.pagination-btn-separator { + float: left; + height: 24px; + border-left: 1px solid #ddd; + border-right: 1px solid #fff; + margin: 3px 1px; +} +.pagination .pagination-num { + border-width: 1px; + border-style: solid; + margin: 0 2px; + padding: 2px; + width: 2em; + height: auto; +} +.pagination-page-list { + margin: 0px 6px; + padding: 1px 2px; + width: auto; + height: auto; + border-width: 1px; + border-style: solid; +} +.pagination-info { + float: right; + margin: 0 6px; + padding: 0; + height: 30px; + line-height: 30px; + font-size: 12px; +} +.pagination span { + font-size: 12px; +} +.pagination-link .l-btn-text { + width: 24px; + text-align: center; + margin: 0; +} +.pagination-first { + background: url('images/pagination_icons.png') no-repeat 0 center; +} +.pagination-prev { + background: url('images/pagination_icons.png') no-repeat -16px center; +} +.pagination-next { + background: url('images/pagination_icons.png') no-repeat -32px center; +} +.pagination-last { + background: url('images/pagination_icons.png') no-repeat -48px center; +} +.pagination-load { + background: url('images/pagination_icons.png') no-repeat -64px center; +} +.pagination-loading { + background: url('images/loading.gif') no-repeat center center; +} +.pagination-page-list, +.pagination .pagination-num { + border-color: #ddd; +} diff --git a/src/main/webapp/static/easyUI/themes/material/panel.css b/src/main/webapp/static/easyUI/themes/material/panel.css new file mode 100644 index 0000000000000000000000000000000000000000..0003fd054e8598d20f20324ca1ecda552c4518e2 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/material/panel.css @@ -0,0 +1,259 @@ +.panel { + overflow: hidden; + text-align: left; + margin: 0; + border: 0; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.panel-header, +.panel-body { + border-width: 1px; + border-style: solid; +} +.panel-header { + padding: 5px; + position: relative; +} +.panel-title { + background: url('images/blank.gif') no-repeat; +} +.panel-header-noborder { + border-width: 0 0 1px 0; +} +.panel-body { + overflow: auto; + border-top-width: 0; + padding: 0; +} +.panel-body-noheader { + border-top-width: 1px; +} +.panel-body-noborder { + border-width: 0px; +} +.panel-body-nobottom { + border-bottom-width: 0; +} +.panel-with-icon { + padding-left: 18px; +} +.panel-icon, +.panel-tool { + position: absolute; + top: 50%; + margin-top: -8px; + height: 16px; + overflow: hidden; +} +.panel-icon { + left: 5px; + width: 16px; +} +.panel-tool { + right: 5px; + width: auto; +} +.panel-tool a { + display: inline-block; + width: 16px; + height: 16px; + opacity: 0.6; + filter: alpha(opacity=60); + margin: 0 0 0 2px; + vertical-align: top; +} +.panel-tool a:hover { + opacity: 1; + filter: alpha(opacity=100); + background-color: #eee; + -moz-border-radius: 2px 2px 2px 2px; + -webkit-border-radius: 2px 2px 2px 2px; + border-radius: 2px 2px 2px 2px; +} +.panel-loading { + padding: 11px 0px 10px 30px; +} +.panel-noscroll { + overflow: hidden; +} +.panel-fit, +.panel-fit body { + height: 100%; + margin: 0; + padding: 0; + border: 0; + overflow: hidden; +} +.panel-loading { + background: url('images/loading.gif') no-repeat 10px 10px; +} +.panel-tool-close { + background: url('images/panel_tools.png') no-repeat -16px 0px; +} +.panel-tool-min { + background: url('images/panel_tools.png') no-repeat 0px 0px; +} +.panel-tool-max { + background: url('images/panel_tools.png') no-repeat 0px -16px; +} +.panel-tool-restore { + background: url('images/panel_tools.png') no-repeat -16px -16px; +} +.panel-tool-collapse { + background: url('images/panel_tools.png') no-repeat -32px 0; +} +.panel-tool-expand { + background: url('images/panel_tools.png') no-repeat -32px -16px; +} +.panel-header, +.panel-body { + border-color: #ddd; +} +.panel-header { + background-color: #f5f5f5; +} +.panel-body { + background-color: #ffffff; + color: #404040; + font-size: 12px; +} +.panel-title { + font-size: 12px; + font-weight: bold; + color: #000000; + height: 16px; + line-height: 16px; +} +.panel-footer { + border: 1px solid #ddd; + overflow: hidden; + background: #fafafa; +} +.panel-footer-noborder { + border-width: 1px 0 0 0; +} +.panel-hleft, +.panel-hright { + position: relative; +} +.panel-hleft>.panel-body, +.panel-hright>.panel-body { + position: absolute; +} +.panel-hleft>.panel-header { + float: left; +} +.panel-hright>.panel-header { + float: right; +} +.panel-hleft>.panel-body { + border-top-width: 1px; + border-left-width: 0; +} +.panel-hright>.panel-body { + border-top-width: 1px; + border-right-width: 0; +} +.panel-hleft>.panel-body-nobottom { + border-bottom-width: 1px; + border-right-width: 0; +} +.panel-hright>.panel-body-nobottom { + border-bottom-width: 1px; + border-left-width: 0; +} +.panel-hleft>.panel-footer { + position: absolute; + right: 0; +} +.panel-hright>.panel-footer { + position: absolute; + left: 0; +} +.panel-hleft>.panel-header-noborder { + border-width: 0 1px 0 0; +} +.panel-hright>.panel-header-noborder { + border-width: 0 0 0 1px; +} +.panel-hleft>.panel-body-noborder { + border-width: 0; +} +.panel-hright>.panel-body-noborder { + border-width: 0; +} +.panel-hleft>.panel-body-noheader { + border-left-width: 1px; +} +.panel-hright>.panel-body-noheader { + border-right-width: 1px; +} +.panel-hleft>.panel-footer-noborder { + border-width: 0 0 0 1px; +} +.panel-hright>.panel-footer-noborder { + border-width: 0 1px 0 0; +} +.panel-hleft>.panel-header .panel-icon, +.panel-hright>.panel-header .panel-icon { + margin-top: 0; + top: 5px; +} +.panel-hleft>.panel-header .panel-title, +.panel-hright>.panel-header .panel-title { + position: absolute; + min-width: 16px; + left: 21px; + top: 5px; + bottom: auto; + white-space: nowrap; + word-wrap: normal; + -webkit-transform: rotate(90deg); + -webkit-transform-origin: 0 0; + -moz-transform: rotate(90deg); + -moz-transform-origin: 0 0; + -o-transform: rotate(90deg); + -o-transform-origin: 0 0; + transform: rotate(90deg); + transform-origin: 0 0; +} +.panel-hleft>.panel-header .panel-title-up, +.panel-hright>.panel-header .panel-title-up { + position: absolute; + min-width: 16px; + left: 21px; + top: auto; + bottom: 5px; + text-align: right; + white-space: nowrap; + word-wrap: normal; + -webkit-transform: rotate(-90deg); + -webkit-transform-origin: 0 0; + -moz-transform: rotate(-90deg); + -moz-transform-origin: 0 0; + -o-transform: rotate(-90deg); + -o-transform-origin: 0 0; + transform: rotate(-90deg); + transform-origin: 0 16px; +} +.panel-hleft>.panel-header .panel-with-icon.panel-title-up, +.panel-hright>.panel-header .panel-with-icon.panel-title-up { + padding-left: 0; + padding-right: 18px; +} +.panel-hleft>.panel-header .panel-tool, +.panel-hright>.panel-header .panel-tool { + top: auto; + bottom: 5px; + width: 16px; + height: auto; + left: 50%; + margin-left: -8px; + margin-top: 0; +} +.panel-hleft>.panel-header .panel-tool a, +.panel-hright>.panel-header .panel-tool a { + margin: 2px 0 0 0; +} diff --git a/src/main/webapp/static/easyUI/themes/material/passwordbox.css b/src/main/webapp/static/easyUI/themes/material/passwordbox.css new file mode 100644 index 0000000000000000000000000000000000000000..92c9ce586b5c0e515bceb19422e8012e85d0e09b --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/material/passwordbox.css @@ -0,0 +1,6 @@ +.passwordbox-open { + background: url('images/passwordbox_open.png') no-repeat center center; +} +.passwordbox-close { + background: url('images/passwordbox_close.png') no-repeat center center; +} diff --git a/src/main/webapp/static/easyUI/themes/material/progressbar.css b/src/main/webapp/static/easyUI/themes/material/progressbar.css new file mode 100644 index 0000000000000000000000000000000000000000..1690673028dce410dec5b433dfb1842ea6df1e2d --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/material/progressbar.css @@ -0,0 +1,32 @@ +.progressbar { + border-width: 1px; + border-style: solid; + -moz-border-radius: 4px 4px 4px 4px; + -webkit-border-radius: 4px 4px 4px 4px; + border-radius: 4px 4px 4px 4px; + overflow: hidden; + position: relative; +} +.progressbar-text { + text-align: center; + position: absolute; +} +.progressbar-value { + position: relative; + overflow: hidden; + width: 0; + -moz-border-radius: 4px 0 0 4px; + -webkit-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; +} +.progressbar { + border-color: #ddd; +} +.progressbar-text { + color: #404040; + font-size: 12px; +} +.progressbar-value .progressbar-text { + background-color: #00bbee; + color: #fff; +} diff --git a/src/main/webapp/static/easyUI/themes/material/propertygrid.css b/src/main/webapp/static/easyUI/themes/material/propertygrid.css new file mode 100644 index 0000000000000000000000000000000000000000..fbd2c7c0833349b51a4be31a5c5d89e4a81701bf --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/material/propertygrid.css @@ -0,0 +1,28 @@ +.propertygrid .datagrid-view1 .datagrid-body td { + padding-bottom: 1px; + border-width: 0 1px 0 0; +} +.propertygrid .datagrid-group { + height: 21px; + overflow: hidden; + border-width: 0 0 1px 0; + border-style: solid; +} +.propertygrid .datagrid-group span { + font-weight: bold; +} +.propertygrid .datagrid-view1 .datagrid-body td { + border-color: #eee; +} +.propertygrid .datagrid-view1 .datagrid-group { + border-color: #f5f5f5; +} +.propertygrid .datagrid-view2 .datagrid-group { + border-color: #eee; +} +.propertygrid .datagrid-group, +.propertygrid .datagrid-view1 .datagrid-body, +.propertygrid .datagrid-view1 .datagrid-row-over, +.propertygrid .datagrid-view1 .datagrid-row-selected { + background: #f5f5f5; +} diff --git a/src/main/webapp/static/easyUI/themes/material/searchbox.css b/src/main/webapp/static/easyUI/themes/material/searchbox.css new file mode 100644 index 0000000000000000000000000000000000000000..54ad88517a35109ad98953cb5d5f74427cacfc25 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/material/searchbox.css @@ -0,0 +1,61 @@ +.searchbox-button { + width: 18px; + height: 20px; + overflow: hidden; + display: inline-block; + vertical-align: top; + cursor: pointer; + opacity: 0.6; + filter: alpha(opacity=60); +} +.searchbox-button-hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.searchbox .l-btn-plain { + border: 0; + padding: 0; + vertical-align: top; + opacity: 0.6; + filter: alpha(opacity=60); + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox .l-btn-plain:hover { + border: 0; + padding: 0; + opacity: 1.0; + filter: alpha(opacity=100); + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox a.m-btn-plain-active { + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox .m-btn-active { + border-width: 0 1px 0 0; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox .textbox-button-right { + border-width: 0 0 0 1px; +} +.searchbox .textbox-button-left { + border-width: 0 1px 0 0; +} +.searchbox-button { + background: url('images/searchbox_button.png') no-repeat center center; +} +.searchbox .l-btn-plain { + background: #f5f5f5; +} +.searchbox .l-btn-plain-disabled, +.searchbox .l-btn-plain-disabled:hover { + opacity: 0.5; + filter: alpha(opacity=50); +} diff --git a/src/main/webapp/static/easyUI/themes/material/slider.css b/src/main/webapp/static/easyUI/themes/material/slider.css new file mode 100644 index 0000000000000000000000000000000000000000..1e471efc6886de9679a865ddf95364df551ba514 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/material/slider.css @@ -0,0 +1,101 @@ +.slider-disabled { + opacity: 0.5; + filter: alpha(opacity=50); +} +.slider-h { + height: 22px; +} +.slider-v { + width: 22px; +} +.slider-inner { + position: relative; + height: 6px; + top: 7px; + border-width: 1px; + border-style: solid; + border-radius: 4px; +} +.slider-handle { + position: absolute; + display: block; + outline: none; + width: 20px; + height: 20px; + top: 50%; + margin-top: -10px; + margin-left: -10px; +} +.slider-tip { + position: absolute; + display: inline-block; + line-height: 12px; + font-size: 12px; + white-space: nowrap; + top: -22px; +} +.slider-rule { + position: relative; + top: 15px; +} +.slider-rule span { + position: absolute; + display: inline-block; + font-size: 0; + height: 5px; + border-width: 0 0 0 1px; + border-style: solid; +} +.slider-rulelabel { + position: relative; + top: 20px; +} +.slider-rulelabel span { + position: absolute; + display: inline-block; + font-size: 12px; +} +.slider-v .slider-inner { + width: 6px; + left: 7px; + top: 0; + float: left; +} +.slider-v .slider-handle { + left: 50%; + margin-top: -10px; +} +.slider-v .slider-tip { + left: -10px; + margin-top: -6px; +} +.slider-v .slider-rule { + float: left; + top: 0; + left: 16px; +} +.slider-v .slider-rule span { + width: 5px; + height: 'auto'; + border-left: 0; + border-width: 1px 0 0 0; + border-style: solid; +} +.slider-v .slider-rulelabel { + float: left; + top: 0; + left: 23px; +} +.slider-handle { + background: url('images/slider_handle.png') no-repeat; +} +.slider-inner { + border-color: #ddd; + background: #f5f5f5; +} +.slider-rule span { + border-color: #ddd; +} +.slider-rulelabel span { + color: #404040; +} diff --git a/src/main/webapp/static/easyUI/themes/material/spinner.css b/src/main/webapp/static/easyUI/themes/material/spinner.css new file mode 100644 index 0000000000000000000000000000000000000000..15098d1004e7fc27d9a57538671c58f2a0e3dc82 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/material/spinner.css @@ -0,0 +1,58 @@ +.spinner-arrow { + background-color: #f5f5f5; + display: inline-block; + overflow: hidden; + vertical-align: top; + margin: 0; + padding: 0; + opacity: 1.0; + filter: alpha(opacity=100); + width: 18px; +} +.spinner-arrow-up, +.spinner-arrow-down { + opacity: 0.6; + filter: alpha(opacity=60); + display: block; + font-size: 1px; + width: 18px; + height: 10px; + width: 100%; + height: 50%; + color: #404040; + outline-style: none; +} +.spinner-arrow-hover { + background-color: #eee; + opacity: 1.0; + filter: alpha(opacity=100); +} +.spinner-arrow-up:hover, +.spinner-arrow-down:hover { + opacity: 1.0; + filter: alpha(opacity=100); + background-color: #eee; +} +.textbox-icon-disabled .spinner-arrow-up:hover, +.textbox-icon-disabled .spinner-arrow-down:hover { + opacity: 0.6; + filter: alpha(opacity=60); + background-color: #f5f5f5; + cursor: default; +} +.spinner .textbox-icon-disabled { + opacity: 0.6; + filter: alpha(opacity=60); +} +.spinner-arrow-up { + background: url('images/spinner_arrows.png') no-repeat 1px center; +} +.spinner-arrow-down { + background: url('images/spinner_arrows.png') no-repeat -15px center; +} +.spinner-button-up { + background: url('images/spinner_arrows.png') no-repeat -32px center; +} +.spinner-button-down { + background: url('images/spinner_arrows.png') no-repeat -48px center; +} diff --git a/src/main/webapp/static/easyUI/themes/material/splitbutton.css b/src/main/webapp/static/easyUI/themes/material/splitbutton.css new file mode 100644 index 0000000000000000000000000000000000000000..2ad86f77499410f0382241f76ff9d855174d080d --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/material/splitbutton.css @@ -0,0 +1,12 @@ +.s-btn:hover .m-btn-line, +.s-btn-active .m-btn-line, +.s-btn-plain-active .m-btn-line { + display: inline-block; +} +.l-btn:hover .s-btn-downarrow, +.s-btn-active .s-btn-downarrow, +.s-btn-plain-active .s-btn-downarrow { + border-style: solid; + border-color: #ccc; + border-width: 0 0 0 1px; +} diff --git a/src/main/webapp/static/easyUI/themes/material/switchbutton.css b/src/main/webapp/static/easyUI/themes/material/switchbutton.css new file mode 100644 index 0000000000000000000000000000000000000000..8e3ddb7dd2414624e3cf2e1efd85d8ed0a500ec8 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/material/switchbutton.css @@ -0,0 +1,77 @@ +.switchbutton { + text-decoration: none; + display: inline-block; + overflow: hidden; + vertical-align: middle; + margin: 0; + padding: 0; + cursor: pointer; + background: #d9d9d9; + border: 1px solid #d9d9d9; + -moz-border-radius: 4px 4px 4px 4px; + -webkit-border-radius: 4px 4px 4px 4px; + border-radius: 4px 4px 4px 4px; +} +.switchbutton-inner { + display: inline-block; + overflow: hidden; + position: relative; + top: -1px; + left: -1px; +} +.switchbutton-on, +.switchbutton-off, +.switchbutton-handle { + display: inline-block; + text-align: center; + height: 100%; + float: left; + font-size: 12px; + -moz-border-radius: 4px 4px 4px 4px; + -webkit-border-radius: 4px 4px 4px 4px; + border-radius: 4px 4px 4px 4px; +} +.switchbutton-on { + background: #00bbee; + color: #fff; +} +.switchbutton-off { + background-color: #ffffff; + color: #404040; +} +.switchbutton-on, +.switchbutton-reversed .switchbutton-off { + -moz-border-radius: 4px 0 0 4px; + -webkit-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; +} +.switchbutton-off, +.switchbutton-reversed .switchbutton-on { + -moz-border-radius: 0 4px 4px 0; + -webkit-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} +.switchbutton-handle { + position: absolute; + top: 0; + left: 50%; + background-color: #ffffff; + color: #404040; + border: 1px solid #d9d9d9; + -moz-box-shadow: 0 0 3px 0 #d9d9d9; + -webkit-box-shadow: 0 0 3px 0 #d9d9d9; + box-shadow: 0 0 3px 0 #d9d9d9; +} +.switchbutton-value { + position: absolute; + top: 0; + left: -5000px; +} +.switchbutton-disabled { + opacity: 0.5; + filter: alpha(opacity=50); +} +.switchbutton-disabled, +.switchbutton-readonly { + cursor: default; +} diff --git a/src/main/webapp/static/easyUI/themes/material/tabs.css b/src/main/webapp/static/easyUI/themes/material/tabs.css new file mode 100644 index 0000000000000000000000000000000000000000..2ea78d209c7dfb8c44a1c1d6795582609fb1b002 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/material/tabs.css @@ -0,0 +1,377 @@ +.tabs-container { + overflow: hidden; +} +.tabs-header { + border-width: 1px; + border-style: solid; + border-bottom-width: 0; + position: relative; + padding: 0; + padding-top: 2px; + overflow: hidden; +} +.tabs-scroller-left, +.tabs-scroller-right { + position: absolute; + top: auto; + bottom: 0; + width: 18px; + font-size: 1px; + display: none; + cursor: pointer; + border-width: 1px; + border-style: solid; +} +.tabs-scroller-left { + left: 0; +} +.tabs-scroller-right { + right: 0; +} +.tabs-tool { + position: absolute; + bottom: 0; + padding: 1px; + overflow: hidden; + border-width: 1px; + border-style: solid; +} +.tabs-header-plain .tabs-tool { + padding: 0 1px; +} +.tabs-wrap { + position: relative; + left: 0; + overflow: hidden; + width: 100%; + margin: 0; + padding: 0; +} +.tabs-scrolling { + margin-left: 18px; + margin-right: 18px; +} +.tabs-disabled { + opacity: 0.3; + filter: alpha(opacity=30); +} +.tabs { + list-style-type: none; + height: 26px; + margin: 0px; + padding: 0px; + padding-left: 4px; + width: 50000px; + border-style: solid; + border-width: 0 0 1px 0; +} +.tabs li { + float: left; + display: inline-block; + margin: 0 4px -1px 0; + padding: 0; + position: relative; + border: 0; +} +.tabs li a.tabs-inner { + display: inline-block; + text-decoration: none; + margin: 0; + padding: 0 10px; + height: 25px; + line-height: 25px; + text-align: center; + white-space: nowrap; + border-width: 1px; + border-style: solid; + -moz-border-radius: 4px 4px 0 0; + -webkit-border-radius: 4px 4px 0 0; + border-radius: 4px 4px 0 0; +} +.tabs li.tabs-selected a.tabs-inner { + font-weight: bold; + outline: none; +} +.tabs li.tabs-selected a:hover.tabs-inner { + cursor: default; + pointer: default; +} +.tabs li a.tabs-close, +.tabs-p-tool { + position: absolute; + font-size: 1px; + display: block; + height: 12px; + padding: 0; + top: 50%; + margin-top: -6px; + overflow: hidden; +} +.tabs li a.tabs-close { + width: 12px; + right: 5px; + opacity: 0.6; + filter: alpha(opacity=60); +} +.tabs-p-tool { + right: 16px; +} +.tabs-p-tool a { + display: inline-block; + font-size: 1px; + width: 12px; + height: 12px; + margin: 0; + opacity: 0.6; + filter: alpha(opacity=60); +} +.tabs li a:hover.tabs-close, +.tabs-p-tool a:hover { + opacity: 1; + filter: alpha(opacity=100); + cursor: hand; + cursor: pointer; +} +.tabs-with-icon { + padding-left: 18px; +} +.tabs-icon { + position: absolute; + width: 16px; + height: 16px; + left: 10px; + top: 50%; + margin-top: -8px; +} +.tabs-title { + font-size: 12px; +} +.tabs-closable { + padding-right: 8px; +} +.tabs-panels { + margin: 0px; + padding: 0px; + border-width: 1px; + border-style: solid; + border-top-width: 0; + overflow: hidden; +} +.tabs-header-bottom { + border-width: 0 1px 1px 1px; + padding: 0 0 2px 0; +} +.tabs-header-bottom .tabs { + border-width: 1px 0 0 0; +} +.tabs-header-bottom .tabs li { + margin: -1px 4px 0 0; +} +.tabs-header-bottom .tabs li a.tabs-inner { + -moz-border-radius: 0 0 4px 4px; + -webkit-border-radius: 0 0 4px 4px; + border-radius: 0 0 4px 4px; +} +.tabs-header-bottom .tabs-tool { + top: 0; +} +.tabs-header-bottom .tabs-scroller-left, +.tabs-header-bottom .tabs-scroller-right { + top: 0; + bottom: auto; +} +.tabs-panels-top { + border-width: 1px 1px 0 1px; +} +.tabs-header-left { + float: left; + border-width: 1px 0 1px 1px; + padding: 0; +} +.tabs-header-right { + float: right; + border-width: 1px 1px 1px 0; + padding: 0; +} +.tabs-header-left .tabs-wrap, +.tabs-header-right .tabs-wrap { + height: 100%; +} +.tabs-header-left .tabs { + height: 100%; + padding: 4px 0 0 2px; + border-width: 0 1px 0 0; +} +.tabs-header-right .tabs { + height: 100%; + padding: 4px 2px 0 0; + border-width: 0 0 0 1px; +} +.tabs-header-left .tabs li, +.tabs-header-right .tabs li { + display: block; + width: 100%; + position: relative; +} +.tabs-header-left .tabs li { + left: auto; + right: 0; + margin: 0 -1px 4px 0; + float: right; +} +.tabs-header-right .tabs li { + left: 0; + right: auto; + margin: 0 0 4px -1px; + float: left; +} +.tabs-justified li a.tabs-inner { + padding-left: 0; + padding-right: 0; +} +.tabs-header-left .tabs li a.tabs-inner { + display: block; + text-align: left; + padding-left: 10px; + padding-right: 10px; + -moz-border-radius: 4px 0 0 4px; + -webkit-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; +} +.tabs-header-right .tabs li a.tabs-inner { + display: block; + text-align: left; + padding-left: 10px; + padding-right: 10px; + -moz-border-radius: 0 4px 4px 0; + -webkit-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} +.tabs-panels-right { + float: right; + border-width: 1px 1px 1px 0; +} +.tabs-panels-left { + float: left; + border-width: 1px 0 1px 1px; +} +.tabs-header-noborder, +.tabs-panels-noborder { + border: 0px; +} +.tabs-header-plain { + border: 0px; + background: transparent; +} +.tabs-pill { + padding-bottom: 3px; +} +.tabs-header-bottom .tabs-pill { + padding-top: 3px; + padding-bottom: 0; +} +.tabs-header-left .tabs-pill { + padding-right: 3px; +} +.tabs-header-right .tabs-pill { + padding-left: 3px; +} +.tabs-header .tabs-pill li a.tabs-inner { + -moz-border-radius: 4px 4px 4px 4px; + -webkit-border-radius: 4px 4px 4px 4px; + border-radius: 4px 4px 4px 4px; +} +.tabs-header-narrow, +.tabs-header-narrow .tabs-narrow { + padding: 0; +} +.tabs-narrow li, +.tabs-header-bottom .tabs-narrow li { + margin-left: 0; + margin-right: -1px; +} +.tabs-narrow li.tabs-last, +.tabs-header-bottom .tabs-narrow li.tabs-last { + margin-right: 0; +} +.tabs-header-left .tabs-narrow, +.tabs-header-right .tabs-narrow { + padding-top: 0; +} +.tabs-header-left .tabs-narrow li { + margin-bottom: -1px; + margin-right: -1px; +} +.tabs-header-left .tabs-narrow li.tabs-last, +.tabs-header-right .tabs-narrow li.tabs-last { + margin-bottom: 0; +} +.tabs-header-right .tabs-narrow li { + margin-bottom: -1px; + margin-left: -1px; +} +.tabs-scroller-left { + background: #f5f5f5 url('images/tabs_icons.png') no-repeat 1px center; +} +.tabs-scroller-right { + background: #f5f5f5 url('images/tabs_icons.png') no-repeat -15px center; +} +.tabs li a.tabs-close { + background: url('images/tabs_icons.png') no-repeat -34px center; +} +.tabs li a.tabs-inner:hover { + background: #eee; + color: #404040; + filter: none; +} +.tabs li.tabs-selected a.tabs-inner { + background-color: #ffffff; + color: #000000; +} +.tabs li a.tabs-inner { + color: #000000; + background-color: #f5f5f5; +} +.tabs-header, +.tabs-tool { + background-color: #f5f5f5; +} +.tabs-header-plain { + background: transparent; +} +.tabs-header, +.tabs-scroller-left, +.tabs-scroller-right, +.tabs-tool, +.tabs, +.tabs-panels, +.tabs li a.tabs-inner, +.tabs li.tabs-selected a.tabs-inner, +.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner, +.tabs-header-left .tabs li.tabs-selected a.tabs-inner, +.tabs-header-right .tabs li.tabs-selected a.tabs-inner { + border-color: #ddd; +} +.tabs-p-tool a:hover, +.tabs li a:hover.tabs-close, +.tabs-scroller-over { + background-color: #eee; +} +.tabs li.tabs-selected a.tabs-inner { + border-bottom: 1px solid #ffffff; +} +.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { + border-top: 1px solid #ffffff; +} +.tabs-header-left .tabs li.tabs-selected a.tabs-inner { + border-right: 1px solid #ffffff; +} +.tabs-header-right .tabs li.tabs-selected a.tabs-inner { + border-left: 1px solid #ffffff; +} +.tabs-header .tabs-pill li.tabs-selected a.tabs-inner { + background: #00bbee; + color: #fff; + filter: none; + border-color: #ddd; +} diff --git a/src/main/webapp/static/easyUI/themes/material/tagbox.css b/src/main/webapp/static/easyUI/themes/material/tagbox.css new file mode 100644 index 0000000000000000000000000000000000000000..16ff41475e9d0b875a9bbed1f594a4b31339c4f9 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/material/tagbox.css @@ -0,0 +1,44 @@ +.tagbox { + cursor: text; +} +.tagbox .textbox-text { + float: left; +} +.tagbox-label { + position: relative; + display: block; + margin: 4px 0 0 4px; + padding: 0 20px 0 4px; + float: left; + vertical-align: top; + text-decoration: none; + -moz-border-radius: 4px 4px 4px 4px; + -webkit-border-radius: 4px 4px 4px 4px; + border-radius: 4px 4px 4px 4px; + background: #eee; + color: #404040; +} +.tagbox-remove { + background: url('images/tagbox_icons.png') no-repeat -16px center; + position: absolute; + display: block; + width: 16px; + height: 16px; + right: 2px; + top: 50%; + margin-top: -8px; + opacity: 0.6; + filter: alpha(opacity=60); +} +.tagbox-remove:hover { + opacity: 1; + filter: alpha(opacity=100); +} +.textbox-disabled .tagbox-label { + cursor: default; +} +.textbox-disabled .tagbox-remove:hover { + cursor: default; + opacity: 0.6; + filter: alpha(opacity=60); +} diff --git a/src/main/webapp/static/easyUI/themes/material/textbox.css b/src/main/webapp/static/easyUI/themes/material/textbox.css new file mode 100644 index 0000000000000000000000000000000000000000..48bd54de439dd3ac72d579790016e201fc68a6b1 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/material/textbox.css @@ -0,0 +1,139 @@ +.textbox { + position: relative; + border: 1px solid #ddd; + background-color: #fff; + vertical-align: middle; + display: inline-block; + overflow: hidden; + white-space: nowrap; + margin: 0; + padding: 0; + -moz-border-radius: 4px 4px 4px 4px; + -webkit-border-radius: 4px 4px 4px 4px; + border-radius: 4px 4px 4px 4px; +} +.textbox .textbox-text { + font-size: 12px; + border: 0; + margin: 0; + padding: 4px; + white-space: normal; + vertical-align: top; + outline-style: none; + resize: none; + -moz-border-radius: 4px 4px 4px 4px; + -webkit-border-radius: 4px 4px 4px 4px; + border-radius: 4px 4px 4px 4px; +} +.textbox .textbox-text::-ms-clear, +.textbox .textbox-text::-ms-reveal { + display: none; +} +.textbox textarea.textbox-text { + white-space: pre-wrap; +} +.textbox .textbox-prompt { + font-size: 12px; + color: #aaa; +} +.textbox .textbox-bgicon { + background-position: 3px center; + padding-left: 21px; +} +.textbox .textbox-button, +.textbox .textbox-button:hover { + position: absolute; + top: 0; + padding: 0; + vertical-align: top; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.textbox .textbox-button-right, +.textbox .textbox-button-right:hover { + right: 0; + border-width: 0 0 0 1px; +} +.textbox .textbox-button-left, +.textbox .textbox-button-left:hover { + left: 0; + border-width: 0 1px 0 0; +} +.textbox .textbox-button-top, +.textbox .textbox-button-top:hover { + left: 0; + border-width: 0 0 1px 0; +} +.textbox .textbox-button-bottom, +.textbox .textbox-button-bottom:hover { + top: auto; + bottom: 0; + left: 0; + border-width: 1px 0 0 0; +} +.textbox-addon { + position: absolute; + top: 0; +} +.textbox-label { + display: inline-block; + width: 80px; + height: 22px; + line-height: 22px; + vertical-align: middle; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + margin: 0; + padding-right: 5px; +} +.textbox-label-after { + padding-left: 5px; + padding-right: 0; +} +.textbox-label-top { + display: block; + width: auto; + padding: 0; +} +.textbox-disabled, +.textbox-label-disabled { + opacity: 0.6; + filter: alpha(opacity=60); +} +.textbox-icon { + display: inline-block; + width: 18px; + height: 20px; + overflow: hidden; + vertical-align: top; + background-position: center center; + cursor: pointer; + opacity: 0.6; + filter: alpha(opacity=60); + text-decoration: none; + outline-style: none; +} +.textbox-icon-disabled, +.textbox-icon-readonly { + cursor: default; +} +.textbox-icon:hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.textbox-icon-disabled:hover { + opacity: 0.6; + filter: alpha(opacity=60); +} +.textbox-focused { + border-color: #c4c4c4; + -moz-box-shadow: 0 0 3px 0 #ddd; + -webkit-box-shadow: 0 0 3px 0 #ddd; + box-shadow: 0 0 3px 0 #ddd; +} +.textbox-invalid { + border-color: #ffa8a8; + background-color: #fff; +} diff --git a/src/main/webapp/static/easyUI/themes/material/tooltip.css b/src/main/webapp/static/easyUI/themes/material/tooltip.css new file mode 100644 index 0000000000000000000000000000000000000000..18aa87c146d89222eef969c5ead07a0526fb5450 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/material/tooltip.css @@ -0,0 +1,103 @@ +.tooltip { + position: absolute; + display: none; + z-index: 9900000; + outline: none; + opacity: 1; + filter: alpha(opacity=100); + padding: 5px; + border-width: 1px; + border-style: solid; + border-radius: 5px; + -moz-border-radius: 4px 4px 4px 4px; + -webkit-border-radius: 4px 4px 4px 4px; + border-radius: 4px 4px 4px 4px; +} +.tooltip-content { + font-size: 12px; +} +.tooltip-arrow-outer, +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; + line-height: 0; + font-size: 0; + border-style: solid; + border-width: 6px; + border-color: transparent; + _border-color: tomato; + _filter: chroma(color=tomato); +} +.tooltip-arrow { + display: none \9; +} +.tooltip-right .tooltip-arrow-outer { + left: 0; + top: 50%; + margin: -6px 0 0 -13px; +} +.tooltip-right .tooltip-arrow { + left: 0; + top: 50%; + margin: -6px 0 0 -12px; +} +.tooltip-left .tooltip-arrow-outer { + right: 0; + top: 50%; + margin: -6px -13px 0 0; +} +.tooltip-left .tooltip-arrow { + right: 0; + top: 50%; + margin: -6px -12px 0 0; +} +.tooltip-top .tooltip-arrow-outer { + bottom: 0; + left: 50%; + margin: 0 0 -13px -6px; +} +.tooltip-top .tooltip-arrow { + bottom: 0; + left: 50%; + margin: 0 0 -12px -6px; +} +.tooltip-bottom .tooltip-arrow-outer { + top: 0; + left: 50%; + margin: -13px 0 0 -6px; +} +.tooltip-bottom .tooltip-arrow { + top: 0; + left: 50%; + margin: -12px 0 0 -6px; +} +.tooltip { + background-color: #ffffff; + border-color: #ddd; + color: #404040; +} +.tooltip-right .tooltip-arrow-outer { + border-right-color: #ddd; +} +.tooltip-right .tooltip-arrow { + border-right-color: #ffffff; +} +.tooltip-left .tooltip-arrow-outer { + border-left-color: #ddd; +} +.tooltip-left .tooltip-arrow { + border-left-color: #ffffff; +} +.tooltip-top .tooltip-arrow-outer { + border-top-color: #ddd; +} +.tooltip-top .tooltip-arrow { + border-top-color: #ffffff; +} +.tooltip-bottom .tooltip-arrow-outer { + border-bottom-color: #ddd; +} +.tooltip-bottom .tooltip-arrow { + border-bottom-color: #ffffff; +} diff --git a/src/main/webapp/static/easyUI/themes/material/tree.css b/src/main/webapp/static/easyUI/themes/material/tree.css new file mode 100644 index 0000000000000000000000000000000000000000..aa3457160dcacb727d5b6f8645e0b301312a86e0 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/material/tree.css @@ -0,0 +1,161 @@ +.tree { + margin: 0; + padding: 0; + list-style-type: none; +} +.tree li { + white-space: nowrap; +} +.tree li ul { + list-style-type: none; + margin: 0; + padding: 0; +} +.tree-node { + height: 18px; + white-space: nowrap; + cursor: pointer; +} +.tree-hit { + cursor: pointer; +} +.tree-expanded, +.tree-collapsed, +.tree-folder, +.tree-file, +.tree-checkbox, +.tree-indent { + display: inline-block; + width: 16px; + height: 18px; + vertical-align: top; + overflow: hidden; +} +.tree-expanded { + background: url('images/tree_icons.png') no-repeat -18px 0px; +} +.tree-expanded-hover { + background: url('images/tree_icons.png') no-repeat -50px 0px; +} +.tree-collapsed { + background: url('images/tree_icons.png') no-repeat 0px 0px; +} +.tree-collapsed-hover { + background: url('images/tree_icons.png') no-repeat -32px 0px; +} +.tree-lines .tree-expanded, +.tree-lines .tree-root-first .tree-expanded { + background: url('images/tree_icons.png') no-repeat -144px 0; +} +.tree-lines .tree-collapsed, +.tree-lines .tree-root-first .tree-collapsed { + background: url('images/tree_icons.png') no-repeat -128px 0; +} +.tree-lines .tree-node-last .tree-expanded, +.tree-lines .tree-root-one .tree-expanded { + background: url('images/tree_icons.png') no-repeat -80px 0; +} +.tree-lines .tree-node-last .tree-collapsed, +.tree-lines .tree-root-one .tree-collapsed { + background: url('images/tree_icons.png') no-repeat -64px 0; +} +.tree-line { + background: url('images/tree_icons.png') no-repeat -176px 0; +} +.tree-join { + background: url('images/tree_icons.png') no-repeat -192px 0; +} +.tree-joinbottom { + background: url('images/tree_icons.png') no-repeat -160px 0; +} +.tree-folder { + background: url('images/tree_icons.png') no-repeat -208px 0; +} +.tree-folder-open { + background: url('images/tree_icons.png') no-repeat -224px 0; +} +.tree-file { + background: url('images/tree_icons.png') no-repeat -240px 0; +} +.tree-loading { + background: url('images/loading.gif') no-repeat center center; +} +.tree-checkbox0 { + background: url('images/tree_icons.png') no-repeat -208px -18px; +} +.tree-checkbox1 { + background: url('images/tree_icons.png') no-repeat -224px -18px; +} +.tree-checkbox2 { + background: url('images/tree_icons.png') no-repeat -240px -18px; +} +.tree-title { + font-size: 12px; + display: inline-block; + text-decoration: none; + vertical-align: top; + white-space: nowrap; + padding: 0 2px; + height: 18px; + line-height: 18px; +} +.tree-node-proxy { + font-size: 12px; + line-height: 20px; + padding: 0 2px 0 20px; + border-width: 1px; + border-style: solid; + z-index: 9900000; +} +.tree-dnd-icon { + display: inline-block; + position: absolute; + width: 16px; + height: 18px; + left: 2px; + top: 50%; + margin-top: -9px; +} +.tree-dnd-yes { + background: url('images/tree_icons.png') no-repeat -256px 0; +} +.tree-dnd-no { + background: url('images/tree_icons.png') no-repeat -256px -18px; +} +.tree-node-top { + border-top: 1px dotted red; +} +.tree-node-bottom { + border-bottom: 1px dotted red; +} +.tree-node-append .tree-title { + border: 1px dotted red; +} +.tree-editor { + border: 1px solid #ddd; + font-size: 12px; + line-height: 16px; + padding: 0 4px; + margin: 0; + width: 80px; + outline-style: none; + vertical-align: top; + position: absolute; + top: 0; +} +.tree-node-proxy { + background-color: #ffffff; + color: #404040; + border-color: #ddd; +} +.tree-node-hover { + background: #eee; + color: #404040; +} +.tree-node-selected { + background: #00bbee; + color: #fff; +} +.tree-node-hidden { + display: none; +} diff --git a/src/main/webapp/static/easyUI/themes/material/validatebox.css b/src/main/webapp/static/easyUI/themes/material/validatebox.css new file mode 100644 index 0000000000000000000000000000000000000000..5911752feab0459ce5280e35e9fa1d3f93f4257c --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/material/validatebox.css @@ -0,0 +1,5 @@ +.validatebox-invalid { + border-color: #ffa8a8; + background-color: #fff; + color: #404040; +} diff --git a/src/main/webapp/static/easyUI/themes/material/window.css b/src/main/webapp/static/easyUI/themes/material/window.css new file mode 100644 index 0000000000000000000000000000000000000000..5bd6c465fe35cd417b2421b861c45114083068e6 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/material/window.css @@ -0,0 +1,177 @@ +.window { + overflow: hidden; + padding: 5px; + border-width: 1px; + border-style: solid; +} +.window .window-header { + background: transparent; + padding: 0px 0px 6px 0px; +} +.window .window-body { + border-width: 1px; + border-style: solid; + border-top-width: 0px; +} +.window .window-body-noheader { + border-top-width: 1px; +} +.window .panel-body-nobottom { + border-bottom-width: 0; +} +.window .window-header .panel-icon, +.window .window-header .panel-tool { + top: 50%; + margin-top: -11px; +} +.window .window-header .panel-icon { + left: 1px; +} +.window .window-header .panel-tool { + right: 1px; +} +.window .window-header .panel-with-icon { + padding-left: 18px; +} +.window-proxy { + position: absolute; + overflow: hidden; +} +.window-proxy-mask { + position: absolute; + filter: alpha(opacity=5); + opacity: 0.05; +} +.window-mask { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + filter: alpha(opacity=40); + opacity: 0.40; + font-size: 1px; + overflow: hidden; +} +.window, +.window-shadow { + position: absolute; + -moz-border-radius: 4px 4px 4px 4px; + -webkit-border-radius: 4px 4px 4px 4px; + border-radius: 4px 4px 4px 4px; +} +.window-shadow { + background: #fafafa; + -moz-box-shadow: 2px 2px 3px #fafafa; + -webkit-box-shadow: 2px 2px 3px #fafafa; + box-shadow: 2px 2px 3px #fafafa; + filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); +} +.window, +.window .window-body { + border-color: #ddd; +} +.window { + background-color: #f5f5f5; +} +.window-proxy { + border: 1px dashed #ddd; +} +.window-proxy-mask, +.window-mask { + background: #eee; +} +.window .panel-footer { + border: 1px solid #ddd; + position: relative; + top: -1px; +} +.window-thinborder { + padding: 0; +} +.window-thinborder .window-header { + padding: 5px 5px 6px 5px; +} +.window-thinborder .window-body { + border-width: 0px; +} +.window-thinborder .window-header .panel-icon, +.window-thinborder .window-header .panel-tool { + margin-top: -9px; + margin-left: 5px; + margin-right: 5px; +} +.window-noborder { + border: 0; +} +.window.panel-hleft .window-header { + padding: 0 6px 0 0; +} +.window.panel-hright .window-header { + padding: 0 0 0 6px; +} +.window.panel-hleft>.panel-header .panel-title { + top: auto; + left: 16px; +} +.window.panel-hright>.panel-header .panel-title { + top: auto; + right: 16px; +} +.window.panel-hleft>.panel-header .panel-title-up, +.window.panel-hright>.panel-header .panel-title-up { + bottom: 0; +} +.window.panel-hleft .window-body { + border-width: 1px 1px 1px 0; +} +.window.panel-hright .window-body { + border-width: 1px 0 1px 1px; +} +.window.panel-hleft .window-header .panel-icon { + top: 1px; + margin-top: 0; + left: 0; +} +.window.panel-hright .window-header .panel-icon { + top: 1px; + margin-top: 0; + left: auto; + right: 1px; +} +.window.panel-hleft .window-header .panel-tool, +.window.panel-hright .window-header .panel-tool { + margin-top: 0; + top: auto; + bottom: 1px; + right: auto; + margin-right: 0; + left: 50%; + margin-left: -11px; +} +.window.panel-hright .window-header .panel-tool { + left: auto; + right: 1px; +} +.window-thinborder.panel-hleft .window-header { + padding: 5px 6px 5px 5px; +} +.window-thinborder.panel-hright .window-header { + padding: 5px 5px 5px 6px; +} +.window-thinborder.panel-hleft>.panel-header .panel-title { + left: 21px; +} +.window-thinborder.panel-hleft>.panel-header .panel-title-up, +.window-thinborder.panel-hright>.panel-header .panel-title-up { + bottom: 5px; +} +.window-thinborder.panel-hleft .window-header .panel-icon, +.window-thinborder.panel-hright .window-header .panel-icon { + margin-top: 5px; +} +.window-thinborder.panel-hleft .window-header .panel-tool, +.window-thinborder.panel-hright .window-header .panel-tool { + left: 16px; + bottom: 5px; +} diff --git a/src/main/webapp/static/easyUI/themes/metro/accordion.css b/src/main/webapp/static/easyUI/themes/metro/accordion.css new file mode 100644 index 0000000000000000000000000000000000000000..fb9f85e463d75f99e08bec25d532c6741f7196c7 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/metro/accordion.css @@ -0,0 +1,89 @@ +.accordion { + overflow: hidden; + border-width: 1px; + border-style: solid; +} +.accordion .accordion-header { + border-width: 0 0 1px; + cursor: pointer; +} +.accordion .accordion-body { + border-width: 0 0 1px; +} +.accordion-noborder { + border-width: 0; +} +.accordion-noborder .accordion-header { + border-width: 0 0 1px; +} +.accordion-noborder .accordion-body { + border-width: 0 0 1px; +} +.accordion-collapse { + background: url('images/accordion_arrows.png') no-repeat 0 0; +} +.accordion-expand { + background: url('images/accordion_arrows.png') no-repeat -16px 0; +} +.accordion { + background: #fff; + border-color: #ddd; +} +.accordion .accordion-header { + background: #ffffff; + filter: none; +} +.accordion .accordion-header-selected { + background: #CCE6FF; +} +.accordion .accordion-header-selected .panel-title { + color: #000; +} +.accordion .panel-last > .accordion-header { + border-bottom-color: #ffffff; +} +.accordion .panel-last > .accordion-body { + border-bottom-color: #fff; +} +.accordion .panel-last > .accordion-header-selected, +.accordion .panel-last > .accordion-header-border { + border-bottom-color: #ddd; +} +.accordion> .panel-hleft { + float: left; +} +.accordion> .panel-hleft>.panel-header { + border-width: 0 1px 0 0; +} +.accordion> .panel-hleft> .panel-body { + border-width: 0 1px 0 0; +} +.accordion> .panel-hleft.panel-last > .accordion-header { + border-right-color: #ffffff; +} +.accordion> .panel-hleft.panel-last > .accordion-body { + border-right-color: #fff; +} +.accordion> .panel-hleft.panel-last > .accordion-header-selected, +.accordion> .panel-hleft.panel-last > .accordion-header-border { + border-right-color: #ddd; +} +.accordion> .panel-hright { + float: right; +} +.accordion> .panel-hright>.panel-header { + border-width: 0 0 0 1px; +} +.accordion> .panel-hright> .panel-body { + border-width: 0 0 0 1px; +} +.accordion> .panel-hright.panel-last > .accordion-header { + border-left-color: #ffffff; +} +.accordion> .panel-hright.panel-last > .accordion-body { + border-left-color: #fff; +} +.accordion> .panel-hright.panel-last > .accordion-header-selected, +.accordion> .panel-hright.panel-last > .accordion-header-border { + border-left-color: #ddd; +} diff --git a/src/main/webapp/static/easyUI/themes/metro/calendar.css b/src/main/webapp/static/easyUI/themes/metro/calendar.css new file mode 100644 index 0000000000000000000000000000000000000000..42f73661324f80b536b56ced82ce35c144a1f9d6 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/metro/calendar.css @@ -0,0 +1,202 @@ +.calendar { + border-width: 1px; + border-style: solid; + padding: 1px; + overflow: hidden; +} +.calendar table { + table-layout: fixed; + border-collapse: separate; + font-size: 12px; + width: 100%; + height: 100%; +} +.calendar table td, +.calendar table th { + font-size: 12px; +} +.calendar-noborder { + border: 0; +} +.calendar-header { + position: relative; + height: 22px; +} +.calendar-title { + text-align: center; + height: 22px; +} +.calendar-title span { + position: relative; + display: inline-block; + top: 2px; + padding: 0 3px; + height: 18px; + line-height: 18px; + font-size: 12px; + cursor: pointer; + -moz-border-radius: 0px 0px 0px 0px; + -webkit-border-radius: 0px 0px 0px 0px; + border-radius: 0px 0px 0px 0px; +} +.calendar-prevmonth, +.calendar-nextmonth, +.calendar-prevyear, +.calendar-nextyear { + position: absolute; + top: 50%; + margin-top: -7px; + width: 14px; + height: 14px; + cursor: pointer; + font-size: 1px; + -moz-border-radius: 0px 0px 0px 0px; + -webkit-border-radius: 0px 0px 0px 0px; + border-radius: 0px 0px 0px 0px; +} +.calendar-prevmonth { + left: 20px; + background: url('images/calendar_arrows.png') no-repeat -18px -2px; +} +.calendar-nextmonth { + right: 20px; + background: url('images/calendar_arrows.png') no-repeat -34px -2px; +} +.calendar-prevyear { + left: 3px; + background: url('images/calendar_arrows.png') no-repeat -1px -2px; +} +.calendar-nextyear { + right: 3px; + background: url('images/calendar_arrows.png') no-repeat -49px -2px; +} +.calendar-body { + position: relative; +} +.calendar-body th, +.calendar-body td { + text-align: center; +} +.calendar-day { + border: 0; + padding: 1px; + cursor: pointer; + -moz-border-radius: 0px 0px 0px 0px; + -webkit-border-radius: 0px 0px 0px 0px; + border-radius: 0px 0px 0px 0px; +} +.calendar-other-month { + opacity: 0.3; + filter: alpha(opacity=30); +} +.calendar-disabled { + opacity: 0.6; + filter: alpha(opacity=60); + cursor: default; +} +.calendar-menu { + position: absolute; + top: 0; + left: 0; + width: 180px; + height: 150px; + padding: 5px; + font-size: 12px; + display: none; + overflow: hidden; +} +.calendar-menu-year-inner { + text-align: center; + padding-bottom: 5px; +} +.calendar-menu-year { + width: 50px; + text-align: center; + border-width: 1px; + border-style: solid; + outline-style: none; + resize: none; + margin: 0; + padding: 2px; + font-weight: bold; + font-size: 12px; + -moz-border-radius: 0px 0px 0px 0px; + -webkit-border-radius: 0px 0px 0px 0px; + border-radius: 0px 0px 0px 0px; +} +.calendar-menu-prev, +.calendar-menu-next { + display: inline-block; + width: 21px; + height: 21px; + vertical-align: top; + cursor: pointer; + -moz-border-radius: 0px 0px 0px 0px; + -webkit-border-radius: 0px 0px 0px 0px; + border-radius: 0px 0px 0px 0px; +} +.calendar-menu-prev { + margin-right: 10px; + background: url('images/calendar_arrows.png') no-repeat 2px 2px; +} +.calendar-menu-next { + margin-left: 10px; + background: url('images/calendar_arrows.png') no-repeat -45px 2px; +} +.calendar-menu-month { + text-align: center; + cursor: pointer; + font-weight: bold; + -moz-border-radius: 0px 0px 0px 0px; + -webkit-border-radius: 0px 0px 0px 0px; + border-radius: 0px 0px 0px 0px; +} +.calendar-body th, +.calendar-menu-month { + color: #919191; +} +.calendar-day { + color: #444; +} +.calendar-sunday { + color: #CC2222; +} +.calendar-saturday { + color: #00ee00; +} +.calendar-today { + color: #0000ff; +} +.calendar-menu-year { + border-color: #ddd; +} +.calendar { + border-color: #ddd; +} +.calendar-header { + background: #ffffff; +} +.calendar-body, +.calendar-menu { + background: #fff; +} +.calendar-body th { + background: #fff; + padding: 2px 0; +} +.calendar-hover, +.calendar-nav-hover, +.calendar-menu-hover { + background-color: #E6E6E6; + color: #444; +} +.calendar-hover { + border: 1px solid #ddd; + padding: 0; +} +.calendar-selected { + background-color: #CCE6FF; + color: #000; + border: 1px solid #99cdff; + padding: 0; +} diff --git a/src/main/webapp/static/easyUI/themes/metro/combo.css b/src/main/webapp/static/easyUI/themes/metro/combo.css new file mode 100644 index 0000000000000000000000000000000000000000..2e89071835237f29c9d1abde77a1249e5304d272 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/metro/combo.css @@ -0,0 +1,35 @@ +.combo-arrow { + width: 18px; + height: 20px; + overflow: hidden; + display: inline-block; + vertical-align: top; + cursor: pointer; + opacity: 0.6; + filter: alpha(opacity=60); +} +.combo-arrow-hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.combo-panel { + overflow: auto; +} +.combo-arrow { + background: url('images/combo_arrow.png') no-repeat center center; +} +.combo-panel { + background-color: #fff; +} +.combo-arrow { + background-color: #ffffff; +} +.combo-arrow-hover { + background-color: #E6E6E6; +} +.combo-arrow:hover { + background-color: #E6E6E6; +} +.combo .textbox-icon-disabled:hover { + cursor: default; +} diff --git a/src/main/webapp/static/easyUI/themes/metro/combobox.css b/src/main/webapp/static/easyUI/themes/metro/combobox.css new file mode 100644 index 0000000000000000000000000000000000000000..eaabb31c0e32a64cdb941aac7fe5979c0d38b593 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/metro/combobox.css @@ -0,0 +1,39 @@ +.combobox-item, +.combobox-group, +.combobox-stick { + font-size: 12px; + padding: 3px; +} +.combobox-item-disabled { + opacity: 0.5; + filter: alpha(opacity=50); +} +.combobox-gitem { + padding-left: 10px; +} +.combobox-group, +.combobox-stick { + font-weight: bold; +} +.combobox-stick { + position: absolute; + top: 1px; + left: 1px; + right: 1px; + background: inherit; +} +.combobox-item-hover { + background-color: #E6E6E6; + color: #444; +} +.combobox-item-selected { + background-color: #CCE6FF; + color: #000; +} +.combobox-icon { + display: inline-block; + width: 16px; + height: 16px; + vertical-align: middle; + margin-right: 2px; +} diff --git a/src/main/webapp/static/easyUI/themes/metro/datagrid.css b/src/main/webapp/static/easyUI/themes/metro/datagrid.css new file mode 100644 index 0000000000000000000000000000000000000000..95d409f296849a16aebb2e5baa59c443c4bf8678 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/metro/datagrid.css @@ -0,0 +1,282 @@ +.datagrid .panel-body { + overflow: hidden; + position: relative; +} +.datagrid-view { + position: relative; + overflow: hidden; +} +.datagrid-view1, +.datagrid-view2 { + position: absolute; + overflow: hidden; + top: 0; +} +.datagrid-view1 { + left: 0; +} +.datagrid-view2 { + right: 0; +} +.datagrid-mask { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + opacity: 0.3; + filter: alpha(opacity=30); + display: none; +} +.datagrid-mask-msg { + position: absolute; + top: 50%; + margin-top: -20px; + padding: 10px 5px 10px 30px; + width: auto; + height: 16px; + border-width: 2px; + border-style: solid; + display: none; +} +.datagrid-empty { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 25px; + line-height: 25px; + text-align: center; +} +.datagrid-sort-icon { + padding: 0; + display: none; +} +.datagrid-toolbar { + height: auto; + padding: 1px 2px; + border-width: 0 0 1px 0; + border-style: solid; +} +.datagrid-btn-separator { + float: left; + height: 24px; + border-left: 1px solid #ddd; + border-right: 1px solid #fff; + margin: 2px 1px; +} +.datagrid .datagrid-pager { + display: block; + margin: 0; + border-width: 1px 0 0 0; + border-style: solid; +} +.datagrid .datagrid-pager-top { + border-width: 0 0 1px 0; +} +.datagrid-header { + overflow: hidden; + cursor: default; + border-width: 0 0 1px 0; + border-style: solid; +} +.datagrid-header-inner { + float: left; + width: 10000px; +} +.datagrid-header-row, +.datagrid-row { + height: 25px; +} +.datagrid-header td, +.datagrid-body td, +.datagrid-footer td { + border-width: 0 1px 1px 0; + border-style: dotted; + margin: 0; + padding: 0; +} +.datagrid-cell, +.datagrid-cell-group, +.datagrid-header-rownumber, +.datagrid-cell-rownumber { + margin: 0; + padding: 0 4px; + white-space: nowrap; + word-wrap: normal; + overflow: hidden; + height: 18px; + line-height: 18px; + font-size: 12px; +} +.datagrid-header .datagrid-cell { + height: auto; +} +.datagrid-header .datagrid-cell span { + font-size: 12px; +} +.datagrid-cell-group { + text-align: center; + text-overflow: ellipsis; +} +.datagrid-header-rownumber, +.datagrid-cell-rownumber { + width: 30px; + text-align: center; + margin: 0; + padding: 0; +} +.datagrid-body { + margin: 0; + padding: 0; + overflow: auto; + zoom: 1; +} +.datagrid-view1 .datagrid-body-inner { + padding-bottom: 20px; +} +.datagrid-view1 .datagrid-body { + overflow: hidden; +} +.datagrid-footer { + overflow: hidden; +} +.datagrid-footer-inner { + border-width: 1px 0 0 0; + border-style: solid; + width: 10000px; + float: left; +} +.datagrid-row-editing .datagrid-cell { + height: auto; +} +.datagrid-header-check, +.datagrid-cell-check { + padding: 0; + width: 27px; + height: 18px; + font-size: 1px; + text-align: center; + overflow: hidden; +} +.datagrid-header-check input, +.datagrid-cell-check input { + margin: 0; + padding: 0; + width: 15px; + height: 18px; +} +.datagrid-resize-proxy { + position: absolute; + width: 1px; + height: 10000px; + top: 0; + cursor: e-resize; + display: none; +} +.datagrid-body .datagrid-editable { + margin: 0; + padding: 0; +} +.datagrid-body .datagrid-editable table { + width: 100%; + height: 100%; +} +.datagrid-body .datagrid-editable td { + border: 0; + margin: 0; + padding: 0; +} +.datagrid-view .datagrid-editable-input { + margin: 0; + padding: 2px 4px; + border: 1px solid #ddd; + font-size: 12px; + outline-style: none; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.datagrid-view .validatebox-invalid { + border-color: #ffa8a8; +} +.datagrid-sort .datagrid-sort-icon { + display: inline; + padding: 0 13px 0 0; + background: url('images/datagrid_icons.png') no-repeat -64px center; +} +.datagrid-sort-desc .datagrid-sort-icon { + display: inline; + padding: 0 13px 0 0; + background: url('images/datagrid_icons.png') no-repeat -16px center; +} +.datagrid-sort-asc .datagrid-sort-icon { + display: inline; + padding: 0 13px 0 0; + background: url('images/datagrid_icons.png') no-repeat 0px center; +} +.datagrid-row-collapse { + background: url('images/datagrid_icons.png') no-repeat -48px center; +} +.datagrid-row-expand { + background: url('images/datagrid_icons.png') no-repeat -32px center; +} +.datagrid-mask-msg { + background: #fff url('images/loading.gif') no-repeat scroll 5px center; +} +.datagrid-header, +.datagrid-td-rownumber { + background-color: #ffffff; +} +.datagrid-cell-rownumber { + color: #444; +} +.datagrid-resize-proxy { + background: #b3b3b3; +} +.datagrid-mask { + background: #eee; +} +.datagrid-mask-msg { + border-color: #ddd; +} +.datagrid-toolbar, +.datagrid-pager { + background: #fff; +} +.datagrid-header, +.datagrid-toolbar, +.datagrid-pager, +.datagrid-footer-inner { + border-color: #ddd; +} +.datagrid-header td, +.datagrid-body td, +.datagrid-footer td { + border-color: #ddd; +} +.datagrid-htable, +.datagrid-btable, +.datagrid-ftable { + color: #444; + border-collapse: separate; +} +.datagrid-row-alt { + background: #f5f5f5; +} +.datagrid-row-over, +.datagrid-header td.datagrid-header-over { + background: #E6E6E6; + color: #444; + cursor: default; +} +.datagrid-row-selected { + background: #CCE6FF; + color: #000; +} +.datagrid-row-editing .textbox, +.datagrid-row-editing .textbox-text { + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} diff --git a/src/main/webapp/static/easyUI/themes/metro/datalist.css b/src/main/webapp/static/easyUI/themes/metro/datalist.css new file mode 100644 index 0000000000000000000000000000000000000000..8a7f94989edd958e618cf61430b8f3c508ad4ffe --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/metro/datalist.css @@ -0,0 +1,95 @@ +.datalist .datagrid-header { + border-width: 0; +} +.datalist .datagrid-group, +.m-list .m-list-group { + height: 25px; + line-height: 25px; + font-weight: bold; + overflow: hidden; + background-color: #ffffff; + border-style: solid; + border-width: 0 0 1px 0; + border-color: #ddd; +} +.datalist .datagrid-group-expander { + display: none; +} +.datalist .datagrid-group-title { + padding: 0 4px; +} +.datalist .datagrid-btable { + width: 100%; + table-layout: fixed; +} +.datalist .datagrid-row td { + border-style: solid; + border-left-color: transparent; + border-right-color: transparent; + border-bottom-width: 0; +} +.datalist-lines .datagrid-row td { + border-bottom-width: 1px; +} +.datalist .datagrid-cell, +.m-list li { + width: auto; + height: auto; + padding: 2px 4px; + line-height: 18px; + position: relative; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; +} +.datalist-link, +.m-list li>a { + display: block; + position: relative; + cursor: pointer; + color: #444; + text-decoration: none; + overflow: hidden; + margin: -2px -4px; + padding: 2px 4px; + padding-right: 16px; + line-height: 18px; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; +} +.datalist-link::after, +.m-list li>a::after { + position: absolute; + display: block; + width: 8px; + height: 8px; + content: ''; + right: 6px; + top: 50%; + margin-top: -4px; + border-style: solid; + border-width: 1px 1px 0 0; + -ms-transform: rotate(45deg); + -moz-transform: rotate(45deg); + -webkit-transform: rotate(45deg); + -o-transform: rotate(45deg); + transform: rotate(45deg); +} +.m-list { + margin: 0; + padding: 0; + list-style: none; +} +.m-list li { + border-style: solid; + border-width: 0 0 1px 0; + border-color: #ddd; +} +.m-list li>a:hover { + background: #E6E6E6; + color: #444; +} +.m-list .m-list-group { + padding: 0 4px; +} diff --git a/src/main/webapp/static/easyUI/themes/metro/datebox.css b/src/main/webapp/static/easyUI/themes/metro/datebox.css new file mode 100644 index 0000000000000000000000000000000000000000..0a235958b029d954128b7da6d14170a06aab7064 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/metro/datebox.css @@ -0,0 +1,36 @@ +.datebox-calendar-inner { + height: 180px; +} +.datebox-button { + padding: 0 5px; + text-align: center; +} +.datebox-button a { + line-height: 22px; + font-size: 12px; + font-weight: bold; + text-decoration: none; + opacity: 0.6; + filter: alpha(opacity=60); +} +.datebox-button a:hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.datebox-current, +.datebox-close { + float: left; +} +.datebox-close { + float: right; +} +.datebox .combo-arrow { + background-image: url('images/datebox_arrow.png'); + background-position: center center; +} +.datebox-button { + background-color: #fff; +} +.datebox-button a { + color: #777; +} diff --git a/src/main/webapp/static/easyUI/themes/metro/dialog.css b/src/main/webapp/static/easyUI/themes/metro/dialog.css new file mode 100644 index 0000000000000000000000000000000000000000..373747925ea507ac552444ac6bed2ecfe2961bc7 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/metro/dialog.css @@ -0,0 +1,47 @@ +.dialog-content { + overflow: auto; +} +.dialog-toolbar { + position: relative; + padding: 2px 5px; +} +.dialog-tool-separator { + float: left; + height: 24px; + border-left: 1px solid #ddd; + border-right: 1px solid #fff; + margin: 2px 1px; +} +.dialog-button { + position: relative; + top: -1px; + padding: 5px; + text-align: right; +} +.dialog-button .l-btn { + margin-left: 5px; +} +.dialog-toolbar, +.dialog-button { + background: #fff; + border-width: 1px; + border-style: solid; +} +.dialog-toolbar { + border-color: #ddd #ddd #ddd #ddd; +} +.dialog-button { + border-color: #ddd #ddd #ddd #ddd; +} +.window-thinborder .dialog-toolbar { + border-left: transparent; + border-right: transparent; + border-top-color: #fff; +} +.window-thinborder .dialog-button { + top: 0px; + padding: 5px 8px 8px 8px; + border-left: transparent; + border-right: transparent; + border-bottom: transparent; +} diff --git a/src/main/webapp/static/easyUI/themes/metro/easyui.css b/src/main/webapp/static/easyUI/themes/metro/easyui.css new file mode 100644 index 0000000000000000000000000000000000000000..9f31359c981e7069e6f38842b0d20bf05c308691 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/metro/easyui.css @@ -0,0 +1,3166 @@ +.panel { + overflow: hidden; + text-align: left; + margin: 0; + border: 0; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.panel-header, +.panel-body { + border-width: 1px; + border-style: solid; +} +.panel-header { + padding: 5px; + position: relative; +} +.panel-title { + background: url('images/blank.gif') no-repeat; +} +.panel-header-noborder { + border-width: 0 0 1px 0; +} +.panel-body { + overflow: auto; + border-top-width: 0; + padding: 0; +} +.panel-body-noheader { + border-top-width: 1px; +} +.panel-body-noborder { + border-width: 0px; +} +.panel-body-nobottom { + border-bottom-width: 0; +} +.panel-with-icon { + padding-left: 18px; +} +.panel-icon, +.panel-tool { + position: absolute; + top: 50%; + margin-top: -8px; + height: 16px; + overflow: hidden; +} +.panel-icon { + left: 5px; + width: 16px; +} +.panel-tool { + right: 5px; + width: auto; +} +.panel-tool a { + display: inline-block; + width: 16px; + height: 16px; + opacity: 0.6; + filter: alpha(opacity=60); + margin: 0 0 0 2px; + vertical-align: top; +} +.panel-tool a:hover { + opacity: 1; + filter: alpha(opacity=100); + background-color: #E6E6E6; + -moz-border-radius: -2px -2px -2px -2px; + -webkit-border-radius: -2px -2px -2px -2px; + border-radius: -2px -2px -2px -2px; +} +.panel-loading { + padding: 11px 0px 10px 30px; +} +.panel-noscroll { + overflow: hidden; +} +.panel-fit, +.panel-fit body { + height: 100%; + margin: 0; + padding: 0; + border: 0; + overflow: hidden; +} +.panel-loading { + background: url('images/loading.gif') no-repeat 10px 10px; +} +.panel-tool-close { + background: url('images/panel_tools.png') no-repeat -16px 0px; +} +.panel-tool-min { + background: url('images/panel_tools.png') no-repeat 0px 0px; +} +.panel-tool-max { + background: url('images/panel_tools.png') no-repeat 0px -16px; +} +.panel-tool-restore { + background: url('images/panel_tools.png') no-repeat -16px -16px; +} +.panel-tool-collapse { + background: url('images/panel_tools.png') no-repeat -32px 0; +} +.panel-tool-expand { + background: url('images/panel_tools.png') no-repeat -32px -16px; +} +.panel-header, +.panel-body { + border-color: #ddd; +} +.panel-header { + background-color: #ffffff; +} +.panel-body { + background-color: #fff; + color: #444; + font-size: 12px; +} +.panel-title { + font-size: 12px; + font-weight: bold; + color: #777; + height: 16px; + line-height: 16px; +} +.panel-footer { + border: 1px solid #ddd; + overflow: hidden; + background: #fff; +} +.panel-footer-noborder { + border-width: 1px 0 0 0; +} +.panel-hleft, +.panel-hright { + position: relative; +} +.panel-hleft>.panel-body, +.panel-hright>.panel-body { + position: absolute; +} +.panel-hleft>.panel-header { + float: left; +} +.panel-hright>.panel-header { + float: right; +} +.panel-hleft>.panel-body { + border-top-width: 1px; + border-left-width: 0; +} +.panel-hright>.panel-body { + border-top-width: 1px; + border-right-width: 0; +} +.panel-hleft>.panel-body-nobottom { + border-bottom-width: 1px; + border-right-width: 0; +} +.panel-hright>.panel-body-nobottom { + border-bottom-width: 1px; + border-left-width: 0; +} +.panel-hleft>.panel-footer { + position: absolute; + right: 0; +} +.panel-hright>.panel-footer { + position: absolute; + left: 0; +} +.panel-hleft>.panel-header-noborder { + border-width: 0 1px 0 0; +} +.panel-hright>.panel-header-noborder { + border-width: 0 0 0 1px; +} +.panel-hleft>.panel-body-noborder { + border-width: 0; +} +.panel-hright>.panel-body-noborder { + border-width: 0; +} +.panel-hleft>.panel-body-noheader { + border-left-width: 1px; +} +.panel-hright>.panel-body-noheader { + border-right-width: 1px; +} +.panel-hleft>.panel-footer-noborder { + border-width: 0 0 0 1px; +} +.panel-hright>.panel-footer-noborder { + border-width: 0 1px 0 0; +} +.panel-hleft>.panel-header .panel-icon, +.panel-hright>.panel-header .panel-icon { + margin-top: 0; + top: 5px; +} +.panel-hleft>.panel-header .panel-title, +.panel-hright>.panel-header .panel-title { + position: absolute; + min-width: 16px; + left: 21px; + top: 5px; + bottom: auto; + white-space: nowrap; + word-wrap: normal; + -webkit-transform: rotate(90deg); + -webkit-transform-origin: 0 0; + -moz-transform: rotate(90deg); + -moz-transform-origin: 0 0; + -o-transform: rotate(90deg); + -o-transform-origin: 0 0; + transform: rotate(90deg); + transform-origin: 0 0; +} +.panel-hleft>.panel-header .panel-title-up, +.panel-hright>.panel-header .panel-title-up { + position: absolute; + min-width: 16px; + left: 21px; + top: auto; + bottom: 5px; + text-align: right; + white-space: nowrap; + word-wrap: normal; + -webkit-transform: rotate(-90deg); + -webkit-transform-origin: 0 0; + -moz-transform: rotate(-90deg); + -moz-transform-origin: 0 0; + -o-transform: rotate(-90deg); + -o-transform-origin: 0 0; + transform: rotate(-90deg); + transform-origin: 0 16px; +} +.panel-hleft>.panel-header .panel-with-icon.panel-title-up, +.panel-hright>.panel-header .panel-with-icon.panel-title-up { + padding-left: 0; + padding-right: 18px; +} +.panel-hleft>.panel-header .panel-tool, +.panel-hright>.panel-header .panel-tool { + top: auto; + bottom: 5px; + width: 16px; + height: auto; + left: 50%; + margin-left: -8px; + margin-top: 0; +} +.panel-hleft>.panel-header .panel-tool a, +.panel-hright>.panel-header .panel-tool a { + margin: 2px 0 0 0; +} +.accordion { + overflow: hidden; + border-width: 1px; + border-style: solid; +} +.accordion .accordion-header { + border-width: 0 0 1px; + cursor: pointer; +} +.accordion .accordion-body { + border-width: 0 0 1px; +} +.accordion-noborder { + border-width: 0; +} +.accordion-noborder .accordion-header { + border-width: 0 0 1px; +} +.accordion-noborder .accordion-body { + border-width: 0 0 1px; +} +.accordion-collapse { + background: url('images/accordion_arrows.png') no-repeat 0 0; +} +.accordion-expand { + background: url('images/accordion_arrows.png') no-repeat -16px 0; +} +.accordion { + background: #fff; + border-color: #ddd; +} +.accordion .accordion-header { + background: #ffffff; + filter: none; +} +.accordion .accordion-header-selected { + background: #CCE6FF; +} +.accordion .accordion-header-selected .panel-title { + color: #000; +} +.accordion .panel-last > .accordion-header { + border-bottom-color: #ffffff; +} +.accordion .panel-last > .accordion-body { + border-bottom-color: #fff; +} +.accordion .panel-last > .accordion-header-selected, +.accordion .panel-last > .accordion-header-border { + border-bottom-color: #ddd; +} +.accordion> .panel-hleft { + float: left; +} +.accordion> .panel-hleft>.panel-header { + border-width: 0 1px 0 0; +} +.accordion> .panel-hleft> .panel-body { + border-width: 0 1px 0 0; +} +.accordion> .panel-hleft.panel-last > .accordion-header { + border-right-color: #ffffff; +} +.accordion> .panel-hleft.panel-last > .accordion-body { + border-right-color: #fff; +} +.accordion> .panel-hleft.panel-last > .accordion-header-selected, +.accordion> .panel-hleft.panel-last > .accordion-header-border { + border-right-color: #ddd; +} +.accordion> .panel-hright { + float: right; +} +.accordion> .panel-hright>.panel-header { + border-width: 0 0 0 1px; +} +.accordion> .panel-hright> .panel-body { + border-width: 0 0 0 1px; +} +.accordion> .panel-hright.panel-last > .accordion-header { + border-left-color: #ffffff; +} +.accordion> .panel-hright.panel-last > .accordion-body { + border-left-color: #fff; +} +.accordion> .panel-hright.panel-last > .accordion-header-selected, +.accordion> .panel-hright.panel-last > .accordion-header-border { + border-left-color: #ddd; +} +.window { + overflow: hidden; + padding: 5px; + border-width: 1px; + border-style: solid; +} +.window .window-header { + background: transparent; + padding: 0px 0px 6px 0px; +} +.window .window-body { + border-width: 1px; + border-style: solid; + border-top-width: 0px; +} +.window .window-body-noheader { + border-top-width: 1px; +} +.window .panel-body-nobottom { + border-bottom-width: 0; +} +.window .window-header .panel-icon, +.window .window-header .panel-tool { + top: 50%; + margin-top: -11px; +} +.window .window-header .panel-icon { + left: 1px; +} +.window .window-header .panel-tool { + right: 1px; +} +.window .window-header .panel-with-icon { + padding-left: 18px; +} +.window-proxy { + position: absolute; + overflow: hidden; +} +.window-proxy-mask { + position: absolute; + filter: alpha(opacity=5); + opacity: 0.05; +} +.window-mask { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + filter: alpha(opacity=40); + opacity: 0.40; + font-size: 1px; + overflow: hidden; +} +.window, +.window-shadow { + position: absolute; + -moz-border-radius: 0px 0px 0px 0px; + -webkit-border-radius: 0px 0px 0px 0px; + border-radius: 0px 0px 0px 0px; +} +.window-shadow { + background: #eee; + -moz-box-shadow: 2px 2px 3px #ededed; + -webkit-box-shadow: 2px 2px 3px #ededed; + box-shadow: 2px 2px 3px #ededed; + filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); +} +.window, +.window .window-body { + border-color: #ddd; +} +.window { + background-color: #ffffff; +} +.window-proxy { + border: 1px dashed #ddd; +} +.window-proxy-mask, +.window-mask { + background: #eee; +} +.window .panel-footer { + border: 1px solid #ddd; + position: relative; + top: -1px; +} +.window-thinborder { + padding: 0; +} +.window-thinborder .window-header { + padding: 5px 5px 6px 5px; +} +.window-thinborder .window-body { + border-width: 0px; +} +.window-thinborder .window-header .panel-icon, +.window-thinborder .window-header .panel-tool { + margin-top: -9px; + margin-left: 5px; + margin-right: 5px; +} +.window-noborder { + border: 0; +} +.window.panel-hleft .window-header { + padding: 0 6px 0 0; +} +.window.panel-hright .window-header { + padding: 0 0 0 6px; +} +.window.panel-hleft>.panel-header .panel-title { + top: auto; + left: 16px; +} +.window.panel-hright>.panel-header .panel-title { + top: auto; + right: 16px; +} +.window.panel-hleft>.panel-header .panel-title-up, +.window.panel-hright>.panel-header .panel-title-up { + bottom: 0; +} +.window.panel-hleft .window-body { + border-width: 1px 1px 1px 0; +} +.window.panel-hright .window-body { + border-width: 1px 0 1px 1px; +} +.window.panel-hleft .window-header .panel-icon { + top: 1px; + margin-top: 0; + left: 0; +} +.window.panel-hright .window-header .panel-icon { + top: 1px; + margin-top: 0; + left: auto; + right: 1px; +} +.window.panel-hleft .window-header .panel-tool, +.window.panel-hright .window-header .panel-tool { + margin-top: 0; + top: auto; + bottom: 1px; + right: auto; + margin-right: 0; + left: 50%; + margin-left: -11px; +} +.window.panel-hright .window-header .panel-tool { + left: auto; + right: 1px; +} +.window-thinborder.panel-hleft .window-header { + padding: 5px 6px 5px 5px; +} +.window-thinborder.panel-hright .window-header { + padding: 5px 5px 5px 6px; +} +.window-thinborder.panel-hleft>.panel-header .panel-title { + left: 21px; +} +.window-thinborder.panel-hleft>.panel-header .panel-title-up, +.window-thinborder.panel-hright>.panel-header .panel-title-up { + bottom: 5px; +} +.window-thinborder.panel-hleft .window-header .panel-icon, +.window-thinborder.panel-hright .window-header .panel-icon { + margin-top: 5px; +} +.window-thinborder.panel-hleft .window-header .panel-tool, +.window-thinborder.panel-hright .window-header .panel-tool { + left: 16px; + bottom: 5px; +} +.dialog-content { + overflow: auto; +} +.dialog-toolbar { + position: relative; + padding: 2px 5px; +} +.dialog-tool-separator { + float: left; + height: 24px; + border-left: 1px solid #ddd; + border-right: 1px solid #fff; + margin: 2px 1px; +} +.dialog-button { + position: relative; + top: -1px; + padding: 5px; + text-align: right; +} +.dialog-button .l-btn { + margin-left: 5px; +} +.dialog-toolbar, +.dialog-button { + background: #fff; + border-width: 1px; + border-style: solid; +} +.dialog-toolbar { + border-color: #ddd #ddd #ddd #ddd; +} +.dialog-button { + border-color: #ddd #ddd #ddd #ddd; +} +.window-thinborder .dialog-toolbar { + border-left: transparent; + border-right: transparent; + border-top-color: #fff; +} +.window-thinborder .dialog-button { + top: 0px; + padding: 5px 8px 8px 8px; + border-left: transparent; + border-right: transparent; + border-bottom: transparent; +} +.l-btn { + text-decoration: none; + display: inline-block; + overflow: hidden; + margin: 0; + padding: 0; + cursor: pointer; + outline: none; + text-align: center; + vertical-align: middle; + line-height: normal; +} +.l-btn-plain { + border-width: 0; + padding: 1px; +} +.l-btn-left { + display: inline-block; + position: relative; + overflow: hidden; + margin: 0; + padding: 0; + vertical-align: top; +} +.l-btn-text { + display: inline-block; + vertical-align: top; + width: auto; + line-height: 24px; + font-size: 12px; + padding: 0; + margin: 0 4px; +} +.l-btn-icon { + display: inline-block; + width: 16px; + height: 16px; + line-height: 16px; + position: absolute; + top: 50%; + margin-top: -8px; + font-size: 1px; +} +.l-btn span span .l-btn-empty { + display: inline-block; + margin: 0; + width: 16px; + height: 24px; + font-size: 1px; + vertical-align: top; +} +.l-btn span .l-btn-icon-left { + padding: 0 0 0 20px; + background-position: left center; +} +.l-btn span .l-btn-icon-right { + padding: 0 20px 0 0; + background-position: right center; +} +.l-btn-icon-left .l-btn-text { + margin: 0 4px 0 24px; +} +.l-btn-icon-left .l-btn-icon { + left: 4px; +} +.l-btn-icon-right .l-btn-text { + margin: 0 24px 0 4px; +} +.l-btn-icon-right .l-btn-icon { + right: 4px; +} +.l-btn-icon-top .l-btn-text { + margin: 20px 4px 0 4px; +} +.l-btn-icon-top .l-btn-icon { + top: 4px; + left: 50%; + margin: 0 0 0 -8px; +} +.l-btn-icon-bottom .l-btn-text { + margin: 0 4px 20px 4px; +} +.l-btn-icon-bottom .l-btn-icon { + top: auto; + bottom: 4px; + left: 50%; + margin: 0 0 0 -8px; +} +.l-btn-left .l-btn-empty { + margin: 0 4px; + width: 16px; +} +.l-btn-plain:hover { + padding: 0; +} +.l-btn-focus { + outline: #0000FF dotted thin; +} +.l-btn-large .l-btn-text { + line-height: 40px; +} +.l-btn-large .l-btn-icon { + width: 32px; + height: 32px; + line-height: 32px; + margin-top: -16px; +} +.l-btn-large .l-btn-icon-left .l-btn-text { + margin-left: 40px; +} +.l-btn-large .l-btn-icon-right .l-btn-text { + margin-right: 40px; +} +.l-btn-large .l-btn-icon-top .l-btn-text { + margin-top: 36px; + line-height: 24px; + min-width: 32px; +} +.l-btn-large .l-btn-icon-top .l-btn-icon { + margin: 0 0 0 -16px; +} +.l-btn-large .l-btn-icon-bottom .l-btn-text { + margin-bottom: 36px; + line-height: 24px; + min-width: 32px; +} +.l-btn-large .l-btn-icon-bottom .l-btn-icon { + margin: 0 0 0 -16px; +} +.l-btn-large .l-btn-left .l-btn-empty { + margin: 0 4px; + width: 32px; +} +.l-btn { + color: #777; + background: #ffffff; + background-repeat: repeat-x; + border: 1px solid #dddddd; + background: -webkit-linear-gradient(top,#ffffff 0,#ffffff 100%); + background: -moz-linear-gradient(top,#ffffff 0,#ffffff 100%); + background: -o-linear-gradient(top,#ffffff 0,#ffffff 100%); + background: linear-gradient(to bottom,#ffffff 0,#ffffff 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#ffffff,GradientType=0); + -moz-border-radius: 0px 0px 0px 0px; + -webkit-border-radius: 0px 0px 0px 0px; + border-radius: 0px 0px 0px 0px; +} +.l-btn:hover { + background: #E6E6E6; + color: #444; + border: 1px solid #ddd; + filter: none; +} +.l-btn-plain { + background: transparent; + border-width: 0; + filter: none; +} +.l-btn-outline { + border-width: 1px; + border-color: #ddd; + padding: 0; +} +.l-btn-plain:hover { + background: #E6E6E6; + color: #444; + border: 1px solid #ddd; + -moz-border-radius: 0px 0px 0px 0px; + -webkit-border-radius: 0px 0px 0px 0px; + border-radius: 0px 0px 0px 0px; +} +.l-btn-disabled, +.l-btn-disabled:hover { + opacity: 0.5; + cursor: default; + background: #ffffff; + color: #777; + background: -webkit-linear-gradient(top,#ffffff 0,#ffffff 100%); + background: -moz-linear-gradient(top,#ffffff 0,#ffffff 100%); + background: -o-linear-gradient(top,#ffffff 0,#ffffff 100%); + background: linear-gradient(to bottom,#ffffff 0,#ffffff 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#ffffff,GradientType=0); +} +.l-btn-disabled .l-btn-text, +.l-btn-disabled .l-btn-icon { + filter: alpha(opacity=50); +} +.l-btn-plain-disabled, +.l-btn-plain-disabled:hover { + background: transparent; + filter: alpha(opacity=50); +} +.l-btn-selected, +.l-btn-selected:hover { + background: #ddd; + filter: none; +} +.l-btn-plain-selected, +.l-btn-plain-selected:hover { + background: #ddd; +} +.textbox { + position: relative; + border: 1px solid #ddd; + background-color: #fff; + vertical-align: middle; + display: inline-block; + overflow: hidden; + white-space: nowrap; + margin: 0; + padding: 0; + -moz-border-radius: 0px 0px 0px 0px; + -webkit-border-radius: 0px 0px 0px 0px; + border-radius: 0px 0px 0px 0px; +} +.textbox .textbox-text { + font-size: 12px; + border: 0; + margin: 0; + padding: 4px; + white-space: normal; + vertical-align: top; + outline-style: none; + resize: none; + -moz-border-radius: 0px 0px 0px 0px; + -webkit-border-radius: 0px 0px 0px 0px; + border-radius: 0px 0px 0px 0px; +} +.textbox .textbox-text::-ms-clear, +.textbox .textbox-text::-ms-reveal { + display: none; +} +.textbox textarea.textbox-text { + white-space: pre-wrap; +} +.textbox .textbox-prompt { + font-size: 12px; + color: #aaa; +} +.textbox .textbox-bgicon { + background-position: 3px center; + padding-left: 21px; +} +.textbox .textbox-button, +.textbox .textbox-button:hover { + position: absolute; + top: 0; + padding: 0; + vertical-align: top; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.textbox .textbox-button-right, +.textbox .textbox-button-right:hover { + right: 0; + border-width: 0 0 0 1px; +} +.textbox .textbox-button-left, +.textbox .textbox-button-left:hover { + left: 0; + border-width: 0 1px 0 0; +} +.textbox .textbox-button-top, +.textbox .textbox-button-top:hover { + left: 0; + border-width: 0 0 1px 0; +} +.textbox .textbox-button-bottom, +.textbox .textbox-button-bottom:hover { + top: auto; + bottom: 0; + left: 0; + border-width: 1px 0 0 0; +} +.textbox-addon { + position: absolute; + top: 0; +} +.textbox-label { + display: inline-block; + width: 80px; + height: 22px; + line-height: 22px; + vertical-align: middle; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + margin: 0; + padding-right: 5px; +} +.textbox-label-after { + padding-left: 5px; + padding-right: 0; +} +.textbox-label-top { + display: block; + width: auto; + padding: 0; +} +.textbox-disabled, +.textbox-label-disabled { + opacity: 0.6; + filter: alpha(opacity=60); +} +.textbox-icon { + display: inline-block; + width: 18px; + height: 20px; + overflow: hidden; + vertical-align: top; + background-position: center center; + cursor: pointer; + opacity: 0.6; + filter: alpha(opacity=60); + text-decoration: none; + outline-style: none; +} +.textbox-icon-disabled, +.textbox-icon-readonly { + cursor: default; +} +.textbox-icon:hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.textbox-icon-disabled:hover { + opacity: 0.6; + filter: alpha(opacity=60); +} +.textbox-focused { + border-color: #c4c4c4; + -moz-box-shadow: 0 0 3px 0 #ddd; + -webkit-box-shadow: 0 0 3px 0 #ddd; + box-shadow: 0 0 3px 0 #ddd; +} +.textbox-invalid { + border-color: #ffa8a8; + background-color: #fff3f3; +} +.passwordbox-open { + background: url('images/passwordbox_open.png') no-repeat center center; +} +.passwordbox-close { + background: url('images/passwordbox_close.png') no-repeat center center; +} +.filebox .textbox-value { + vertical-align: top; + position: absolute; + top: 0; + left: -5000px; +} +.filebox-label { + display: inline-block; + position: absolute; + width: 100%; + height: 100%; + cursor: pointer; + left: 0; + top: 0; + z-index: 10; + background: url('images/blank.gif') no-repeat; +} +.l-btn-disabled .filebox-label { + cursor: default; +} +.combo-arrow { + width: 18px; + height: 20px; + overflow: hidden; + display: inline-block; + vertical-align: top; + cursor: pointer; + opacity: 0.6; + filter: alpha(opacity=60); +} +.combo-arrow-hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.combo-panel { + overflow: auto; +} +.combo-arrow { + background: url('images/combo_arrow.png') no-repeat center center; +} +.combo-panel { + background-color: #fff; +} +.combo-arrow { + background-color: #ffffff; +} +.combo-arrow-hover { + background-color: #E6E6E6; +} +.combo-arrow:hover { + background-color: #E6E6E6; +} +.combo .textbox-icon-disabled:hover { + cursor: default; +} +.combobox-item, +.combobox-group, +.combobox-stick { + font-size: 12px; + padding: 3px; +} +.combobox-item-disabled { + opacity: 0.5; + filter: alpha(opacity=50); +} +.combobox-gitem { + padding-left: 10px; +} +.combobox-group, +.combobox-stick { + font-weight: bold; +} +.combobox-stick { + position: absolute; + top: 1px; + left: 1px; + right: 1px; + background: inherit; +} +.combobox-item-hover { + background-color: #E6E6E6; + color: #444; +} +.combobox-item-selected { + background-color: #CCE6FF; + color: #000; +} +.combobox-icon { + display: inline-block; + width: 16px; + height: 16px; + vertical-align: middle; + margin-right: 2px; +} +.tagbox { + cursor: text; +} +.tagbox .textbox-text { + float: left; +} +.tagbox-label { + position: relative; + display: block; + margin: 4px 0 0 4px; + padding: 0 20px 0 4px; + float: left; + vertical-align: top; + text-decoration: none; + -moz-border-radius: 0px 0px 0px 0px; + -webkit-border-radius: 0px 0px 0px 0px; + border-radius: 0px 0px 0px 0px; + background: #E6E6E6; + color: #444; +} +.tagbox-remove { + background: url('images/tagbox_icons.png') no-repeat -16px center; + position: absolute; + display: block; + width: 16px; + height: 16px; + right: 2px; + top: 50%; + margin-top: -8px; + opacity: 0.6; + filter: alpha(opacity=60); +} +.tagbox-remove:hover { + opacity: 1; + filter: alpha(opacity=100); +} +.textbox-disabled .tagbox-label { + cursor: default; +} +.textbox-disabled .tagbox-remove:hover { + cursor: default; + opacity: 0.6; + filter: alpha(opacity=60); +} +.layout { + position: relative; + overflow: hidden; + margin: 0; + padding: 0; + z-index: 0; +} +.layout-panel { + position: absolute; + overflow: hidden; +} +.layout-body { + min-width: 1px; + min-height: 1px; +} +.layout-panel-east, +.layout-panel-west { + z-index: 2; +} +.layout-panel-north, +.layout-panel-south { + z-index: 3; +} +.layout-expand { + position: absolute; + padding: 0px; + font-size: 1px; + cursor: pointer; + z-index: 1; +} +.layout-expand .panel-header, +.layout-expand .panel-body { + background: transparent; + filter: none; + overflow: hidden; +} +.layout-expand .panel-header { + border-bottom-width: 0px; +} +.layout-expand .panel-body { + position: relative; +} +.layout-expand .panel-body .panel-icon { + margin-top: 0; + top: 0; + left: 50%; + margin-left: -8px; +} +.layout-expand-west .panel-header .panel-icon, +.layout-expand-east .panel-header .panel-icon { + display: none; +} +.layout-expand-title { + position: absolute; + top: 0; + left: 21px; + white-space: nowrap; + word-wrap: normal; + -webkit-transform: rotate(90deg); + -webkit-transform-origin: 0 0; + -moz-transform: rotate(90deg); + -moz-transform-origin: 0 0; + -o-transform: rotate(90deg); + -o-transform-origin: 0 0; + transform: rotate(90deg); + transform-origin: 0 0; +} +.layout-expand-title-up { + position: absolute; + top: 0; + left: 0; + text-align: right; + padding-left: 5px; + white-space: nowrap; + word-wrap: normal; + -webkit-transform: rotate(-90deg); + -webkit-transform-origin: 0 0; + -moz-transform: rotate(-90deg); + -moz-transform-origin: 0 0; + -o-transform: rotate(-90deg); + -o-transform-origin: 0 0; + transform: rotate(-90deg); + transform-origin: 0 0; +} +.layout-expand-with-icon { + top: 18px; +} +.layout-expand .panel-body-noheader .layout-expand-title, +.layout-expand .panel-body-noheader .panel-icon { + top: 5px; +} +.layout-expand .panel-body-noheader .layout-expand-with-icon { + top: 23px; +} +.layout-split-proxy-h, +.layout-split-proxy-v { + position: absolute; + font-size: 1px; + display: none; + z-index: 5; +} +.layout-split-proxy-h { + width: 5px; + cursor: e-resize; +} +.layout-split-proxy-v { + height: 5px; + cursor: n-resize; +} +.layout-mask { + position: absolute; + background: #fafafa; + filter: alpha(opacity=10); + opacity: 0.10; + z-index: 4; +} +.layout-button-up { + background: url('images/layout_arrows.png') no-repeat -16px -16px; +} +.layout-button-down { + background: url('images/layout_arrows.png') no-repeat -16px 0; +} +.layout-button-left { + background: url('images/layout_arrows.png') no-repeat 0 0; +} +.layout-button-right { + background: url('images/layout_arrows.png') no-repeat 0 -16px; +} +.layout-split-proxy-h, +.layout-split-proxy-v { + background-color: #b3b3b3; +} +.layout-split-north { + border-bottom: 5px solid #fff; +} +.layout-split-south { + border-top: 5px solid #fff; +} +.layout-split-east { + border-left: 5px solid #fff; +} +.layout-split-west { + border-right: 5px solid #fff; +} +.layout-expand { + background-color: #ffffff; +} +.layout-expand-over { + background-color: #ffffff; +} +.tabs-container { + overflow: hidden; +} +.tabs-header { + border-width: 1px; + border-style: solid; + border-bottom-width: 0; + position: relative; + padding: 0; + padding-top: 2px; + overflow: hidden; +} +.tabs-scroller-left, +.tabs-scroller-right { + position: absolute; + top: auto; + bottom: 0; + width: 18px; + font-size: 1px; + display: none; + cursor: pointer; + border-width: 1px; + border-style: solid; +} +.tabs-scroller-left { + left: 0; +} +.tabs-scroller-right { + right: 0; +} +.tabs-tool { + position: absolute; + bottom: 0; + padding: 1px; + overflow: hidden; + border-width: 1px; + border-style: solid; +} +.tabs-header-plain .tabs-tool { + padding: 0 1px; +} +.tabs-wrap { + position: relative; + left: 0; + overflow: hidden; + width: 100%; + margin: 0; + padding: 0; +} +.tabs-scrolling { + margin-left: 18px; + margin-right: 18px; +} +.tabs-disabled { + opacity: 0.3; + filter: alpha(opacity=30); +} +.tabs { + list-style-type: none; + height: 26px; + margin: 0px; + padding: 0px; + padding-left: 4px; + width: 50000px; + border-style: solid; + border-width: 0 0 1px 0; +} +.tabs li { + float: left; + display: inline-block; + margin: 0 4px -1px 0; + padding: 0; + position: relative; + border: 0; +} +.tabs li a.tabs-inner { + display: inline-block; + text-decoration: none; + margin: 0; + padding: 0 10px; + height: 25px; + line-height: 25px; + text-align: center; + white-space: nowrap; + border-width: 1px; + border-style: solid; + -moz-border-radius: 0px 0px 0 0; + -webkit-border-radius: 0px 0px 0 0; + border-radius: 0px 0px 0 0; +} +.tabs li.tabs-selected a.tabs-inner { + font-weight: bold; + outline: none; +} +.tabs li.tabs-selected a:hover.tabs-inner { + cursor: default; + pointer: default; +} +.tabs li a.tabs-close, +.tabs-p-tool { + position: absolute; + font-size: 1px; + display: block; + height: 12px; + padding: 0; + top: 50%; + margin-top: -6px; + overflow: hidden; +} +.tabs li a.tabs-close { + width: 12px; + right: 5px; + opacity: 0.6; + filter: alpha(opacity=60); +} +.tabs-p-tool { + right: 16px; +} +.tabs-p-tool a { + display: inline-block; + font-size: 1px; + width: 12px; + height: 12px; + margin: 0; + opacity: 0.6; + filter: alpha(opacity=60); +} +.tabs li a:hover.tabs-close, +.tabs-p-tool a:hover { + opacity: 1; + filter: alpha(opacity=100); + cursor: hand; + cursor: pointer; +} +.tabs-with-icon { + padding-left: 18px; +} +.tabs-icon { + position: absolute; + width: 16px; + height: 16px; + left: 10px; + top: 50%; + margin-top: -8px; +} +.tabs-title { + font-size: 12px; +} +.tabs-closable { + padding-right: 8px; +} +.tabs-panels { + margin: 0px; + padding: 0px; + border-width: 1px; + border-style: solid; + border-top-width: 0; + overflow: hidden; +} +.tabs-header-bottom { + border-width: 0 1px 1px 1px; + padding: 0 0 2px 0; +} +.tabs-header-bottom .tabs { + border-width: 1px 0 0 0; +} +.tabs-header-bottom .tabs li { + margin: -1px 4px 0 0; +} +.tabs-header-bottom .tabs li a.tabs-inner { + -moz-border-radius: 0 0 0px 0px; + -webkit-border-radius: 0 0 0px 0px; + border-radius: 0 0 0px 0px; +} +.tabs-header-bottom .tabs-tool { + top: 0; +} +.tabs-header-bottom .tabs-scroller-left, +.tabs-header-bottom .tabs-scroller-right { + top: 0; + bottom: auto; +} +.tabs-panels-top { + border-width: 1px 1px 0 1px; +} +.tabs-header-left { + float: left; + border-width: 1px 0 1px 1px; + padding: 0; +} +.tabs-header-right { + float: right; + border-width: 1px 1px 1px 0; + padding: 0; +} +.tabs-header-left .tabs-wrap, +.tabs-header-right .tabs-wrap { + height: 100%; +} +.tabs-header-left .tabs { + height: 100%; + padding: 4px 0 0 2px; + border-width: 0 1px 0 0; +} +.tabs-header-right .tabs { + height: 100%; + padding: 4px 2px 0 0; + border-width: 0 0 0 1px; +} +.tabs-header-left .tabs li, +.tabs-header-right .tabs li { + display: block; + width: 100%; + position: relative; +} +.tabs-header-left .tabs li { + left: auto; + right: 0; + margin: 0 -1px 4px 0; + float: right; +} +.tabs-header-right .tabs li { + left: 0; + right: auto; + margin: 0 0 4px -1px; + float: left; +} +.tabs-justified li a.tabs-inner { + padding-left: 0; + padding-right: 0; +} +.tabs-header-left .tabs li a.tabs-inner { + display: block; + text-align: left; + padding-left: 10px; + padding-right: 10px; + -moz-border-radius: 0px 0 0 0px; + -webkit-border-radius: 0px 0 0 0px; + border-radius: 0px 0 0 0px; +} +.tabs-header-right .tabs li a.tabs-inner { + display: block; + text-align: left; + padding-left: 10px; + padding-right: 10px; + -moz-border-radius: 0 0px 0px 0; + -webkit-border-radius: 0 0px 0px 0; + border-radius: 0 0px 0px 0; +} +.tabs-panels-right { + float: right; + border-width: 1px 1px 1px 0; +} +.tabs-panels-left { + float: left; + border-width: 1px 0 1px 1px; +} +.tabs-header-noborder, +.tabs-panels-noborder { + border: 0px; +} +.tabs-header-plain { + border: 0px; + background: transparent; +} +.tabs-pill { + padding-bottom: 3px; +} +.tabs-header-bottom .tabs-pill { + padding-top: 3px; + padding-bottom: 0; +} +.tabs-header-left .tabs-pill { + padding-right: 3px; +} +.tabs-header-right .tabs-pill { + padding-left: 3px; +} +.tabs-header .tabs-pill li a.tabs-inner { + -moz-border-radius: 0px 0px 0px 0px; + -webkit-border-radius: 0px 0px 0px 0px; + border-radius: 0px 0px 0px 0px; +} +.tabs-header-narrow, +.tabs-header-narrow .tabs-narrow { + padding: 0; +} +.tabs-narrow li, +.tabs-header-bottom .tabs-narrow li { + margin-left: 0; + margin-right: -1px; +} +.tabs-narrow li.tabs-last, +.tabs-header-bottom .tabs-narrow li.tabs-last { + margin-right: 0; +} +.tabs-header-left .tabs-narrow, +.tabs-header-right .tabs-narrow { + padding-top: 0; +} +.tabs-header-left .tabs-narrow li { + margin-bottom: -1px; + margin-right: -1px; +} +.tabs-header-left .tabs-narrow li.tabs-last, +.tabs-header-right .tabs-narrow li.tabs-last { + margin-bottom: 0; +} +.tabs-header-right .tabs-narrow li { + margin-bottom: -1px; + margin-left: -1px; +} +.tabs-scroller-left { + background: #ffffff url('images/tabs_icons.png') no-repeat 1px center; +} +.tabs-scroller-right { + background: #ffffff url('images/tabs_icons.png') no-repeat -15px center; +} +.tabs li a.tabs-close { + background: url('images/tabs_icons.png') no-repeat -34px center; +} +.tabs li a.tabs-inner:hover { + background: #E6E6E6; + color: #444; + filter: none; +} +.tabs li.tabs-selected a.tabs-inner { + background-color: #fff; + color: #777; +} +.tabs li a.tabs-inner { + color: #777; + background-color: #ffffff; +} +.tabs-header, +.tabs-tool { + background-color: #ffffff; +} +.tabs-header-plain { + background: transparent; +} +.tabs-header, +.tabs-scroller-left, +.tabs-scroller-right, +.tabs-tool, +.tabs, +.tabs-panels, +.tabs li a.tabs-inner, +.tabs li.tabs-selected a.tabs-inner, +.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner, +.tabs-header-left .tabs li.tabs-selected a.tabs-inner, +.tabs-header-right .tabs li.tabs-selected a.tabs-inner { + border-color: #ddd; +} +.tabs-p-tool a:hover, +.tabs li a:hover.tabs-close, +.tabs-scroller-over { + background-color: #E6E6E6; +} +.tabs li.tabs-selected a.tabs-inner { + border-bottom: 1px solid #fff; +} +.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { + border-top: 1px solid #fff; +} +.tabs-header-left .tabs li.tabs-selected a.tabs-inner { + border-right: 1px solid #fff; +} +.tabs-header-right .tabs li.tabs-selected a.tabs-inner { + border-left: 1px solid #fff; +} +.tabs-header .tabs-pill li.tabs-selected a.tabs-inner { + background: #CCE6FF; + color: #000; + filter: none; + border-color: #ddd; +} +.datagrid .panel-body { + overflow: hidden; + position: relative; +} +.datagrid-view { + position: relative; + overflow: hidden; +} +.datagrid-view1, +.datagrid-view2 { + position: absolute; + overflow: hidden; + top: 0; +} +.datagrid-view1 { + left: 0; +} +.datagrid-view2 { + right: 0; +} +.datagrid-mask { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + opacity: 0.3; + filter: alpha(opacity=30); + display: none; +} +.datagrid-mask-msg { + position: absolute; + top: 50%; + margin-top: -20px; + padding: 10px 5px 10px 30px; + width: auto; + height: 16px; + border-width: 2px; + border-style: solid; + display: none; +} +.datagrid-empty { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 25px; + line-height: 25px; + text-align: center; +} +.datagrid-sort-icon { + padding: 0; + display: none; +} +.datagrid-toolbar { + height: auto; + padding: 1px 2px; + border-width: 0 0 1px 0; + border-style: solid; +} +.datagrid-btn-separator { + float: left; + height: 24px; + border-left: 1px solid #ddd; + border-right: 1px solid #fff; + margin: 2px 1px; +} +.datagrid .datagrid-pager { + display: block; + margin: 0; + border-width: 1px 0 0 0; + border-style: solid; +} +.datagrid .datagrid-pager-top { + border-width: 0 0 1px 0; +} +.datagrid-header { + overflow: hidden; + cursor: default; + border-width: 0 0 1px 0; + border-style: solid; +} +.datagrid-header-inner { + float: left; + width: 10000px; +} +.datagrid-header-row, +.datagrid-row { + height: 25px; +} +.datagrid-header td, +.datagrid-body td, +.datagrid-footer td { + border-width: 0 1px 1px 0; + border-style: dotted; + margin: 0; + padding: 0; +} +.datagrid-cell, +.datagrid-cell-group, +.datagrid-header-rownumber, +.datagrid-cell-rownumber { + margin: 0; + padding: 0 4px; + white-space: nowrap; + word-wrap: normal; + overflow: hidden; + height: 18px; + line-height: 18px; + font-size: 12px; +} +.datagrid-header .datagrid-cell { + height: auto; +} +.datagrid-header .datagrid-cell span { + font-size: 12px; +} +.datagrid-cell-group { + text-align: center; + text-overflow: ellipsis; +} +.datagrid-header-rownumber, +.datagrid-cell-rownumber { + width: 30px; + text-align: center; + margin: 0; + padding: 0; +} +.datagrid-body { + margin: 0; + padding: 0; + overflow: auto; + zoom: 1; +} +.datagrid-view1 .datagrid-body-inner { + padding-bottom: 20px; +} +.datagrid-view1 .datagrid-body { + overflow: hidden; +} +.datagrid-footer { + overflow: hidden; +} +.datagrid-footer-inner { + border-width: 1px 0 0 0; + border-style: solid; + width: 10000px; + float: left; +} +.datagrid-row-editing .datagrid-cell { + height: auto; +} +.datagrid-header-check, +.datagrid-cell-check { + padding: 0; + width: 27px; + height: 18px; + font-size: 1px; + text-align: center; + overflow: hidden; +} +.datagrid-header-check input, +.datagrid-cell-check input { + margin: 0; + padding: 0; + width: 15px; + height: 18px; +} +.datagrid-resize-proxy { + position: absolute; + width: 1px; + height: 10000px; + top: 0; + cursor: e-resize; + display: none; +} +.datagrid-body .datagrid-editable { + margin: 0; + padding: 0; +} +.datagrid-body .datagrid-editable table { + width: 100%; + height: 100%; +} +.datagrid-body .datagrid-editable td { + border: 0; + margin: 0; + padding: 0; +} +.datagrid-view .datagrid-editable-input { + margin: 0; + padding: 2px 4px; + border: 1px solid #ddd; + font-size: 12px; + outline-style: none; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.datagrid-view .validatebox-invalid { + border-color: #ffa8a8; +} +.datagrid-sort .datagrid-sort-icon { + display: inline; + padding: 0 13px 0 0; + background: url('images/datagrid_icons.png') no-repeat -64px center; +} +.datagrid-sort-desc .datagrid-sort-icon { + display: inline; + padding: 0 13px 0 0; + background: url('images/datagrid_icons.png') no-repeat -16px center; +} +.datagrid-sort-asc .datagrid-sort-icon { + display: inline; + padding: 0 13px 0 0; + background: url('images/datagrid_icons.png') no-repeat 0px center; +} +.datagrid-row-collapse { + background: url('images/datagrid_icons.png') no-repeat -48px center; +} +.datagrid-row-expand { + background: url('images/datagrid_icons.png') no-repeat -32px center; +} +.datagrid-mask-msg { + background: #fff url('images/loading.gif') no-repeat scroll 5px center; +} +.datagrid-header, +.datagrid-td-rownumber { + background-color: #ffffff; +} +.datagrid-cell-rownumber { + color: #444; +} +.datagrid-resize-proxy { + background: #b3b3b3; +} +.datagrid-mask { + background: #eee; +} +.datagrid-mask-msg { + border-color: #ddd; +} +.datagrid-toolbar, +.datagrid-pager { + background: #fff; +} +.datagrid-header, +.datagrid-toolbar, +.datagrid-pager, +.datagrid-footer-inner { + border-color: #ddd; +} +.datagrid-header td, +.datagrid-body td, +.datagrid-footer td { + border-color: #ddd; +} +.datagrid-htable, +.datagrid-btable, +.datagrid-ftable { + color: #444; + border-collapse: separate; +} +.datagrid-row-alt { + background: #f5f5f5; +} +.datagrid-row-over, +.datagrid-header td.datagrid-header-over { + background: #E6E6E6; + color: #444; + cursor: default; +} +.datagrid-row-selected { + background: #CCE6FF; + color: #000; +} +.datagrid-row-editing .textbox, +.datagrid-row-editing .textbox-text { + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.propertygrid .datagrid-view1 .datagrid-body td { + padding-bottom: 1px; + border-width: 0 1px 0 0; +} +.propertygrid .datagrid-group { + height: 21px; + overflow: hidden; + border-width: 0 0 1px 0; + border-style: solid; +} +.propertygrid .datagrid-group span { + font-weight: bold; +} +.propertygrid .datagrid-view1 .datagrid-body td { + border-color: #ddd; +} +.propertygrid .datagrid-view1 .datagrid-group { + border-color: #ffffff; +} +.propertygrid .datagrid-view2 .datagrid-group { + border-color: #ddd; +} +.propertygrid .datagrid-group, +.propertygrid .datagrid-view1 .datagrid-body, +.propertygrid .datagrid-view1 .datagrid-row-over, +.propertygrid .datagrid-view1 .datagrid-row-selected { + background: #ffffff; +} +.datalist .datagrid-header { + border-width: 0; +} +.datalist .datagrid-group, +.m-list .m-list-group { + height: 25px; + line-height: 25px; + font-weight: bold; + overflow: hidden; + background-color: #ffffff; + border-style: solid; + border-width: 0 0 1px 0; + border-color: #ddd; +} +.datalist .datagrid-group-expander { + display: none; +} +.datalist .datagrid-group-title { + padding: 0 4px; +} +.datalist .datagrid-btable { + width: 100%; + table-layout: fixed; +} +.datalist .datagrid-row td { + border-style: solid; + border-left-color: transparent; + border-right-color: transparent; + border-bottom-width: 0; +} +.datalist-lines .datagrid-row td { + border-bottom-width: 1px; +} +.datalist .datagrid-cell, +.m-list li { + width: auto; + height: auto; + padding: 2px 4px; + line-height: 18px; + position: relative; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; +} +.datalist-link, +.m-list li>a { + display: block; + position: relative; + cursor: pointer; + color: #444; + text-decoration: none; + overflow: hidden; + margin: -2px -4px; + padding: 2px 4px; + padding-right: 16px; + line-height: 18px; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; +} +.datalist-link::after, +.m-list li>a::after { + position: absolute; + display: block; + width: 8px; + height: 8px; + content: ''; + right: 6px; + top: 50%; + margin-top: -4px; + border-style: solid; + border-width: 1px 1px 0 0; + -ms-transform: rotate(45deg); + -moz-transform: rotate(45deg); + -webkit-transform: rotate(45deg); + -o-transform: rotate(45deg); + transform: rotate(45deg); +} +.m-list { + margin: 0; + padding: 0; + list-style: none; +} +.m-list li { + border-style: solid; + border-width: 0 0 1px 0; + border-color: #ddd; +} +.m-list li>a:hover { + background: #E6E6E6; + color: #444; +} +.m-list .m-list-group { + padding: 0 4px; +} +.pagination { + zoom: 1; +} +.pagination table { + float: left; + height: 30px; +} +.pagination td { + border: 0; +} +.pagination-btn-separator { + float: left; + height: 24px; + border-left: 1px solid #ddd; + border-right: 1px solid #fff; + margin: 3px 1px; +} +.pagination .pagination-num { + border-width: 1px; + border-style: solid; + margin: 0 2px; + padding: 2px; + width: 2em; + height: auto; +} +.pagination-page-list { + margin: 0px 6px; + padding: 1px 2px; + width: auto; + height: auto; + border-width: 1px; + border-style: solid; +} +.pagination-info { + float: right; + margin: 0 6px; + padding: 0; + height: 30px; + line-height: 30px; + font-size: 12px; +} +.pagination span { + font-size: 12px; +} +.pagination-link .l-btn-text { + width: 24px; + text-align: center; + margin: 0; +} +.pagination-first { + background: url('images/pagination_icons.png') no-repeat 0 center; +} +.pagination-prev { + background: url('images/pagination_icons.png') no-repeat -16px center; +} +.pagination-next { + background: url('images/pagination_icons.png') no-repeat -32px center; +} +.pagination-last { + background: url('images/pagination_icons.png') no-repeat -48px center; +} +.pagination-load { + background: url('images/pagination_icons.png') no-repeat -64px center; +} +.pagination-loading { + background: url('images/loading.gif') no-repeat center center; +} +.pagination-page-list, +.pagination .pagination-num { + border-color: #ddd; +} +.calendar { + border-width: 1px; + border-style: solid; + padding: 1px; + overflow: hidden; +} +.calendar table { + table-layout: fixed; + border-collapse: separate; + font-size: 12px; + width: 100%; + height: 100%; +} +.calendar table td, +.calendar table th { + font-size: 12px; +} +.calendar-noborder { + border: 0; +} +.calendar-header { + position: relative; + height: 22px; +} +.calendar-title { + text-align: center; + height: 22px; +} +.calendar-title span { + position: relative; + display: inline-block; + top: 2px; + padding: 0 3px; + height: 18px; + line-height: 18px; + font-size: 12px; + cursor: pointer; + -moz-border-radius: 0px 0px 0px 0px; + -webkit-border-radius: 0px 0px 0px 0px; + border-radius: 0px 0px 0px 0px; +} +.calendar-prevmonth, +.calendar-nextmonth, +.calendar-prevyear, +.calendar-nextyear { + position: absolute; + top: 50%; + margin-top: -7px; + width: 14px; + height: 14px; + cursor: pointer; + font-size: 1px; + -moz-border-radius: 0px 0px 0px 0px; + -webkit-border-radius: 0px 0px 0px 0px; + border-radius: 0px 0px 0px 0px; +} +.calendar-prevmonth { + left: 20px; + background: url('images/calendar_arrows.png') no-repeat -18px -2px; +} +.calendar-nextmonth { + right: 20px; + background: url('images/calendar_arrows.png') no-repeat -34px -2px; +} +.calendar-prevyear { + left: 3px; + background: url('images/calendar_arrows.png') no-repeat -1px -2px; +} +.calendar-nextyear { + right: 3px; + background: url('images/calendar_arrows.png') no-repeat -49px -2px; +} +.calendar-body { + position: relative; +} +.calendar-body th, +.calendar-body td { + text-align: center; +} +.calendar-day { + border: 0; + padding: 1px; + cursor: pointer; + -moz-border-radius: 0px 0px 0px 0px; + -webkit-border-radius: 0px 0px 0px 0px; + border-radius: 0px 0px 0px 0px; +} +.calendar-other-month { + opacity: 0.3; + filter: alpha(opacity=30); +} +.calendar-disabled { + opacity: 0.6; + filter: alpha(opacity=60); + cursor: default; +} +.calendar-menu { + position: absolute; + top: 0; + left: 0; + width: 180px; + height: 150px; + padding: 5px; + font-size: 12px; + display: none; + overflow: hidden; +} +.calendar-menu-year-inner { + text-align: center; + padding-bottom: 5px; +} +.calendar-menu-year { + width: 50px; + text-align: center; + border-width: 1px; + border-style: solid; + outline-style: none; + resize: none; + margin: 0; + padding: 2px; + font-weight: bold; + font-size: 12px; + -moz-border-radius: 0px 0px 0px 0px; + -webkit-border-radius: 0px 0px 0px 0px; + border-radius: 0px 0px 0px 0px; +} +.calendar-menu-prev, +.calendar-menu-next { + display: inline-block; + width: 21px; + height: 21px; + vertical-align: top; + cursor: pointer; + -moz-border-radius: 0px 0px 0px 0px; + -webkit-border-radius: 0px 0px 0px 0px; + border-radius: 0px 0px 0px 0px; +} +.calendar-menu-prev { + margin-right: 10px; + background: url('images/calendar_arrows.png') no-repeat 2px 2px; +} +.calendar-menu-next { + margin-left: 10px; + background: url('images/calendar_arrows.png') no-repeat -45px 2px; +} +.calendar-menu-month { + text-align: center; + cursor: pointer; + font-weight: bold; + -moz-border-radius: 0px 0px 0px 0px; + -webkit-border-radius: 0px 0px 0px 0px; + border-radius: 0px 0px 0px 0px; +} +.calendar-body th, +.calendar-menu-month { + color: #919191; +} +.calendar-day { + color: #444; +} +.calendar-sunday { + color: #CC2222; +} +.calendar-saturday { + color: #00ee00; +} +.calendar-today { + color: #0000ff; +} +.calendar-menu-year { + border-color: #ddd; +} +.calendar { + border-color: #ddd; +} +.calendar-header { + background: #ffffff; +} +.calendar-body, +.calendar-menu { + background: #fff; +} +.calendar-body th { + background: #fff; + padding: 2px 0; +} +.calendar-hover, +.calendar-nav-hover, +.calendar-menu-hover { + background-color: #E6E6E6; + color: #444; +} +.calendar-hover { + border: 1px solid #ddd; + padding: 0; +} +.calendar-selected { + background-color: #CCE6FF; + color: #000; + border: 1px solid #99cdff; + padding: 0; +} +.datebox-calendar-inner { + height: 180px; +} +.datebox-button { + padding: 0 5px; + text-align: center; +} +.datebox-button a { + line-height: 22px; + font-size: 12px; + font-weight: bold; + text-decoration: none; + opacity: 0.6; + filter: alpha(opacity=60); +} +.datebox-button a:hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.datebox-current, +.datebox-close { + float: left; +} +.datebox-close { + float: right; +} +.datebox .combo-arrow { + background-image: url('images/datebox_arrow.png'); + background-position: center center; +} +.datebox-button { + background-color: #fff; +} +.datebox-button a { + color: #777; +} +.spinner-arrow { + background-color: #ffffff; + display: inline-block; + overflow: hidden; + vertical-align: top; + margin: 0; + padding: 0; + opacity: 1.0; + filter: alpha(opacity=100); + width: 18px; +} +.spinner-arrow-up, +.spinner-arrow-down { + opacity: 0.6; + filter: alpha(opacity=60); + display: block; + font-size: 1px; + width: 18px; + height: 10px; + width: 100%; + height: 50%; + color: #777; + outline-style: none; +} +.spinner-arrow-hover { + background-color: #E6E6E6; + opacity: 1.0; + filter: alpha(opacity=100); +} +.spinner-arrow-up:hover, +.spinner-arrow-down:hover { + opacity: 1.0; + filter: alpha(opacity=100); + background-color: #E6E6E6; +} +.textbox-icon-disabled .spinner-arrow-up:hover, +.textbox-icon-disabled .spinner-arrow-down:hover { + opacity: 0.6; + filter: alpha(opacity=60); + background-color: #ffffff; + cursor: default; +} +.spinner .textbox-icon-disabled { + opacity: 0.6; + filter: alpha(opacity=60); +} +.spinner-arrow-up { + background: url('images/spinner_arrows.png') no-repeat 1px center; +} +.spinner-arrow-down { + background: url('images/spinner_arrows.png') no-repeat -15px center; +} +.spinner-button-up { + background: url('images/spinner_arrows.png') no-repeat -32px center; +} +.spinner-button-down { + background: url('images/spinner_arrows.png') no-repeat -48px center; +} +.progressbar { + border-width: 1px; + border-style: solid; + -moz-border-radius: 0px 0px 0px 0px; + -webkit-border-radius: 0px 0px 0px 0px; + border-radius: 0px 0px 0px 0px; + overflow: hidden; + position: relative; +} +.progressbar-text { + text-align: center; + position: absolute; +} +.progressbar-value { + position: relative; + overflow: hidden; + width: 0; + -moz-border-radius: 0px 0 0 0px; + -webkit-border-radius: 0px 0 0 0px; + border-radius: 0px 0 0 0px; +} +.progressbar { + border-color: #ddd; +} +.progressbar-text { + color: #444; + font-size: 12px; +} +.progressbar-value .progressbar-text { + background-color: #CCE6FF; + color: #000; +} +.searchbox-button { + width: 18px; + height: 20px; + overflow: hidden; + display: inline-block; + vertical-align: top; + cursor: pointer; + opacity: 0.6; + filter: alpha(opacity=60); +} +.searchbox-button-hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.searchbox .l-btn-plain { + border: 0; + padding: 0; + vertical-align: top; + opacity: 0.6; + filter: alpha(opacity=60); + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox .l-btn-plain:hover { + border: 0; + padding: 0; + opacity: 1.0; + filter: alpha(opacity=100); + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox a.m-btn-plain-active { + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox .m-btn-active { + border-width: 0 1px 0 0; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox .textbox-button-right { + border-width: 0 0 0 1px; +} +.searchbox .textbox-button-left { + border-width: 0 1px 0 0; +} +.searchbox-button { + background: url('images/searchbox_button.png') no-repeat center center; +} +.searchbox .l-btn-plain { + background: #ffffff; +} +.searchbox .l-btn-plain-disabled, +.searchbox .l-btn-plain-disabled:hover { + opacity: 0.5; + filter: alpha(opacity=50); +} +.slider-disabled { + opacity: 0.5; + filter: alpha(opacity=50); +} +.slider-h { + height: 22px; +} +.slider-v { + width: 22px; +} +.slider-inner { + position: relative; + height: 6px; + top: 7px; + border-width: 1px; + border-style: solid; + border-radius: 0px; +} +.slider-handle { + position: absolute; + display: block; + outline: none; + width: 20px; + height: 20px; + top: 50%; + margin-top: -10px; + margin-left: -10px; +} +.slider-tip { + position: absolute; + display: inline-block; + line-height: 12px; + font-size: 12px; + white-space: nowrap; + top: -22px; +} +.slider-rule { + position: relative; + top: 15px; +} +.slider-rule span { + position: absolute; + display: inline-block; + font-size: 0; + height: 5px; + border-width: 0 0 0 1px; + border-style: solid; +} +.slider-rulelabel { + position: relative; + top: 20px; +} +.slider-rulelabel span { + position: absolute; + display: inline-block; + font-size: 12px; +} +.slider-v .slider-inner { + width: 6px; + left: 7px; + top: 0; + float: left; +} +.slider-v .slider-handle { + left: 50%; + margin-top: -10px; +} +.slider-v .slider-tip { + left: -10px; + margin-top: -6px; +} +.slider-v .slider-rule { + float: left; + top: 0; + left: 16px; +} +.slider-v .slider-rule span { + width: 5px; + height: 'auto'; + border-left: 0; + border-width: 1px 0 0 0; + border-style: solid; +} +.slider-v .slider-rulelabel { + float: left; + top: 0; + left: 23px; +} +.slider-handle { + background: url('images/slider_handle.png') no-repeat; +} +.slider-inner { + border-color: #ddd; + background: #ffffff; +} +.slider-rule span { + border-color: #ddd; +} +.slider-rulelabel span { + color: #444; +} +.menu { + position: absolute; + margin: 0; + padding: 2px; + border-width: 1px; + border-style: solid; + overflow: hidden; +} +.menu-inline { + position: relative; +} +.menu-item { + position: relative; + margin: 0; + padding: 0; + overflow: hidden; + white-space: nowrap; + cursor: pointer; + border-width: 1px; + border-style: solid; +} +.menu-text { + height: 20px; + line-height: 20px; + float: left; + padding-left: 28px; +} +.menu-icon { + position: absolute; + width: 16px; + height: 16px; + left: 2px; + top: 50%; + margin-top: -8px; +} +.menu-rightarrow { + position: absolute; + width: 16px; + height: 16px; + right: 0; + top: 50%; + margin-top: -8px; +} +.menu-line { + position: absolute; + left: 26px; + top: 0; + height: 2000px; + font-size: 1px; +} +.menu-sep { + margin: 3px 0px 3px 25px; + font-size: 1px; +} +.menu-noline .menu-line { + display: none; +} +.menu-noline .menu-sep { + margin-left: 0; + margin-right: 0; +} +.menu-active { + -moz-border-radius: 0px 0px 0px 0px; + -webkit-border-radius: 0px 0px 0px 0px; + border-radius: 0px 0px 0px 0px; +} +.menu-item-disabled { + opacity: 0.5; + filter: alpha(opacity=50); + cursor: default; +} +.menu-text, +.menu-text span { + font-size: 12px; +} +.menu-shadow { + position: absolute; + -moz-border-radius: 0px 0px 0px 0px; + -webkit-border-radius: 0px 0px 0px 0px; + border-radius: 0px 0px 0px 0px; + background: #eee; + -moz-box-shadow: 2px 2px 3px #ededed; + -webkit-box-shadow: 2px 2px 3px #ededed; + box-shadow: 2px 2px 3px #ededed; + filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); +} +.menu-rightarrow { + background: url('images/menu_arrows.png') no-repeat -32px center; +} +.menu-line { + border-left: 1px solid #ddd; + border-right: 1px solid #fff; +} +.menu-sep { + border-top: 1px solid #ddd; + border-bottom: 1px solid #fff; +} +.menu { + background-color: #ffffff; + border-color: #ddd; + color: #444; +} +.menu-content { + background: #fff; +} +.menu-item { + border-color: transparent; + _border-color: #ffffff; +} +.menu-active { + border-color: #ddd; + color: #444; + background: #E6E6E6; +} +.menu-active-disabled { + border-color: transparent; + background: transparent; + color: #444; +} +.m-btn-downarrow, +.s-btn-downarrow { + display: inline-block; + position: absolute; + width: 16px; + height: 16px; + font-size: 1px; + right: 0; + top: 50%; + margin-top: -8px; +} +.m-btn-active, +.s-btn-active { + background: #E6E6E6; + color: #444; + border: 1px solid #ddd; + filter: none; +} +.m-btn-plain-active, +.s-btn-plain-active { + background: transparent; + padding: 0; + border-width: 1px; + border-style: solid; + -moz-border-radius: 0px 0px 0px 0px; + -webkit-border-radius: 0px 0px 0px 0px; + border-radius: 0px 0px 0px 0px; +} +.m-btn .l-btn-left .l-btn-text { + margin-right: 20px; +} +.m-btn .l-btn-icon-right .l-btn-text { + margin-right: 40px; +} +.m-btn .l-btn-icon-right .l-btn-icon { + right: 20px; +} +.m-btn .l-btn-icon-top .l-btn-text { + margin-right: 4px; + margin-bottom: 14px; +} +.m-btn .l-btn-icon-bottom .l-btn-text { + margin-right: 4px; + margin-bottom: 34px; +} +.m-btn .l-btn-icon-bottom .l-btn-icon { + top: auto; + bottom: 20px; +} +.m-btn .l-btn-icon-top .m-btn-downarrow, +.m-btn .l-btn-icon-bottom .m-btn-downarrow { + top: auto; + bottom: 0px; + left: 50%; + margin-left: -8px; +} +.m-btn-line { + display: inline-block; + position: absolute; + font-size: 1px; + display: none; +} +.m-btn .l-btn-left .m-btn-line { + right: 0; + width: 16px; + height: 500px; + border-style: solid; + border-color: #b3b3b3; + border-width: 0 0 0 1px; +} +.m-btn .l-btn-icon-top .m-btn-line, +.m-btn .l-btn-icon-bottom .m-btn-line { + left: 0; + bottom: 0; + width: 500px; + height: 16px; + border-width: 1px 0 0 0; +} +.m-btn-large .l-btn-icon-right .l-btn-text { + margin-right: 56px; +} +.m-btn-large .l-btn-icon-bottom .l-btn-text { + margin-bottom: 50px; +} +.m-btn-downarrow, +.s-btn-downarrow { + background: url('images/menu_arrows.png') no-repeat 0 center; +} +.m-btn-plain-active, +.s-btn-plain-active { + border-color: #ddd; + background-color: #E6E6E6; + color: #444; +} +.s-btn:hover .m-btn-line, +.s-btn-active .m-btn-line, +.s-btn-plain-active .m-btn-line { + display: inline-block; +} +.l-btn:hover .s-btn-downarrow, +.s-btn-active .s-btn-downarrow, +.s-btn-plain-active .s-btn-downarrow { + border-style: solid; + border-color: #b3b3b3; + border-width: 0 0 0 1px; +} +.messager-body { + padding: 10px 10px 30px 10px; + overflow: auto; +} +.messager-button { + text-align: center; + padding: 5px; +} +.messager-button .l-btn { + width: 70px; +} +.messager-icon { + float: left; + width: 32px; + height: 32px; + margin: 0 10px 10px 0; +} +.messager-error { + background: url('images/messager_icons.png') no-repeat scroll -64px 0; +} +.messager-info { + background: url('images/messager_icons.png') no-repeat scroll 0 0; +} +.messager-question { + background: url('images/messager_icons.png') no-repeat scroll -32px 0; +} +.messager-warning { + background: url('images/messager_icons.png') no-repeat scroll -96px 0; +} +.messager-progress { + padding: 10px; +} +.messager-p-msg { + margin-bottom: 5px; +} +.messager-body .messager-input { + width: 100%; + padding: 4px 0; + outline-style: none; + border: 1px solid #ddd; +} +.window-thinborder .messager-button { + padding-bottom: 8px; +} +.tree { + margin: 0; + padding: 0; + list-style-type: none; +} +.tree li { + white-space: nowrap; +} +.tree li ul { + list-style-type: none; + margin: 0; + padding: 0; +} +.tree-node { + height: 18px; + white-space: nowrap; + cursor: pointer; +} +.tree-hit { + cursor: pointer; +} +.tree-expanded, +.tree-collapsed, +.tree-folder, +.tree-file, +.tree-checkbox, +.tree-indent { + display: inline-block; + width: 16px; + height: 18px; + vertical-align: top; + overflow: hidden; +} +.tree-expanded { + background: url('images/tree_icons.png') no-repeat -18px 0px; +} +.tree-expanded-hover { + background: url('images/tree_icons.png') no-repeat -50px 0px; +} +.tree-collapsed { + background: url('images/tree_icons.png') no-repeat 0px 0px; +} +.tree-collapsed-hover { + background: url('images/tree_icons.png') no-repeat -32px 0px; +} +.tree-lines .tree-expanded, +.tree-lines .tree-root-first .tree-expanded { + background: url('images/tree_icons.png') no-repeat -144px 0; +} +.tree-lines .tree-collapsed, +.tree-lines .tree-root-first .tree-collapsed { + background: url('images/tree_icons.png') no-repeat -128px 0; +} +.tree-lines .tree-node-last .tree-expanded, +.tree-lines .tree-root-one .tree-expanded { + background: url('images/tree_icons.png') no-repeat -80px 0; +} +.tree-lines .tree-node-last .tree-collapsed, +.tree-lines .tree-root-one .tree-collapsed { + background: url('images/tree_icons.png') no-repeat -64px 0; +} +.tree-line { + background: url('images/tree_icons.png') no-repeat -176px 0; +} +.tree-join { + background: url('images/tree_icons.png') no-repeat -192px 0; +} +.tree-joinbottom { + background: url('images/tree_icons.png') no-repeat -160px 0; +} +.tree-folder { + background: url('images/tree_icons.png') no-repeat -208px 0; +} +.tree-folder-open { + background: url('images/tree_icons.png') no-repeat -224px 0; +} +.tree-file { + background: url('images/tree_icons.png') no-repeat -240px 0; +} +.tree-loading { + background: url('images/loading.gif') no-repeat center center; +} +.tree-checkbox0 { + background: url('images/tree_icons.png') no-repeat -208px -18px; +} +.tree-checkbox1 { + background: url('images/tree_icons.png') no-repeat -224px -18px; +} +.tree-checkbox2 { + background: url('images/tree_icons.png') no-repeat -240px -18px; +} +.tree-title { + font-size: 12px; + display: inline-block; + text-decoration: none; + vertical-align: top; + white-space: nowrap; + padding: 0 2px; + height: 18px; + line-height: 18px; +} +.tree-node-proxy { + font-size: 12px; + line-height: 20px; + padding: 0 2px 0 20px; + border-width: 1px; + border-style: solid; + z-index: 9900000; +} +.tree-dnd-icon { + display: inline-block; + position: absolute; + width: 16px; + height: 18px; + left: 2px; + top: 50%; + margin-top: -9px; +} +.tree-dnd-yes { + background: url('images/tree_icons.png') no-repeat -256px 0; +} +.tree-dnd-no { + background: url('images/tree_icons.png') no-repeat -256px -18px; +} +.tree-node-top { + border-top: 1px dotted red; +} +.tree-node-bottom { + border-bottom: 1px dotted red; +} +.tree-node-append .tree-title { + border: 1px dotted red; +} +.tree-editor { + border: 1px solid #ddd; + font-size: 12px; + line-height: 16px; + padding: 0 4px; + margin: 0; + width: 80px; + outline-style: none; + vertical-align: top; + position: absolute; + top: 0; +} +.tree-node-proxy { + background-color: #fff; + color: #444; + border-color: #ddd; +} +.tree-node-hover { + background: #E6E6E6; + color: #444; +} +.tree-node-selected { + background: #CCE6FF; + color: #000; +} +.tree-node-hidden { + display: none; +} +.validatebox-invalid { + border-color: #ffa8a8; + background-color: #fff3f3; + color: #000; +} +.tooltip { + position: absolute; + display: none; + z-index: 9900000; + outline: none; + opacity: 1; + filter: alpha(opacity=100); + padding: 5px; + border-width: 1px; + border-style: solid; + border-radius: 5px; + -moz-border-radius: 0px 0px 0px 0px; + -webkit-border-radius: 0px 0px 0px 0px; + border-radius: 0px 0px 0px 0px; +} +.tooltip-content { + font-size: 12px; +} +.tooltip-arrow-outer, +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; + line-height: 0; + font-size: 0; + border-style: solid; + border-width: 6px; + border-color: transparent; + _border-color: tomato; + _filter: chroma(color=tomato); +} +.tooltip-arrow { + display: none \9; +} +.tooltip-right .tooltip-arrow-outer { + left: 0; + top: 50%; + margin: -6px 0 0 -13px; +} +.tooltip-right .tooltip-arrow { + left: 0; + top: 50%; + margin: -6px 0 0 -12px; +} +.tooltip-left .tooltip-arrow-outer { + right: 0; + top: 50%; + margin: -6px -13px 0 0; +} +.tooltip-left .tooltip-arrow { + right: 0; + top: 50%; + margin: -6px -12px 0 0; +} +.tooltip-top .tooltip-arrow-outer { + bottom: 0; + left: 50%; + margin: 0 0 -13px -6px; +} +.tooltip-top .tooltip-arrow { + bottom: 0; + left: 50%; + margin: 0 0 -12px -6px; +} +.tooltip-bottom .tooltip-arrow-outer { + top: 0; + left: 50%; + margin: -13px 0 0 -6px; +} +.tooltip-bottom .tooltip-arrow { + top: 0; + left: 50%; + margin: -12px 0 0 -6px; +} +.tooltip { + background-color: #fff; + border-color: #ddd; + color: #444; +} +.tooltip-right .tooltip-arrow-outer { + border-right-color: #ddd; +} +.tooltip-right .tooltip-arrow { + border-right-color: #fff; +} +.tooltip-left .tooltip-arrow-outer { + border-left-color: #ddd; +} +.tooltip-left .tooltip-arrow { + border-left-color: #fff; +} +.tooltip-top .tooltip-arrow-outer { + border-top-color: #ddd; +} +.tooltip-top .tooltip-arrow { + border-top-color: #fff; +} +.tooltip-bottom .tooltip-arrow-outer { + border-bottom-color: #ddd; +} +.tooltip-bottom .tooltip-arrow { + border-bottom-color: #fff; +} +.switchbutton { + text-decoration: none; + display: inline-block; + overflow: hidden; + vertical-align: middle; + margin: 0; + padding: 0; + cursor: pointer; + background: #dddddd; + border: 1px solid #dddddd; + -moz-border-radius: 0px 0px 0px 0px; + -webkit-border-radius: 0px 0px 0px 0px; + border-radius: 0px 0px 0px 0px; +} +.switchbutton-inner { + display: inline-block; + overflow: hidden; + position: relative; + top: -1px; + left: -1px; +} +.switchbutton-on, +.switchbutton-off, +.switchbutton-handle { + display: inline-block; + text-align: center; + height: 100%; + float: left; + font-size: 12px; + -moz-border-radius: 0px 0px 0px 0px; + -webkit-border-radius: 0px 0px 0px 0px; + border-radius: 0px 0px 0px 0px; +} +.switchbutton-on { + background: #CCE6FF; + color: #000; +} +.switchbutton-off { + background-color: #fff; + color: #444; +} +.switchbutton-on, +.switchbutton-reversed .switchbutton-off { + -moz-border-radius: 0px 0 0 0px; + -webkit-border-radius: 0px 0 0 0px; + border-radius: 0px 0 0 0px; +} +.switchbutton-off, +.switchbutton-reversed .switchbutton-on { + -moz-border-radius: 0 0px 0px 0; + -webkit-border-radius: 0 0px 0px 0; + border-radius: 0 0px 0px 0; +} +.switchbutton-handle { + position: absolute; + top: 0; + left: 50%; + background-color: #fff; + color: #444; + border: 1px solid #dddddd; + -moz-box-shadow: 0 0 3px 0 #dddddd; + -webkit-box-shadow: 0 0 3px 0 #dddddd; + box-shadow: 0 0 3px 0 #dddddd; +} +.switchbutton-value { + position: absolute; + top: 0; + left: -5000px; +} +.switchbutton-disabled { + opacity: 0.5; + filter: alpha(opacity=50); +} +.switchbutton-disabled, +.switchbutton-readonly { + cursor: default; +} diff --git a/src/main/webapp/static/easyUI/themes/metro/filebox.css b/src/main/webapp/static/easyUI/themes/metro/filebox.css new file mode 100644 index 0000000000000000000000000000000000000000..c6bac66315046138147a673e0ffaa3d36bce3acc --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/metro/filebox.css @@ -0,0 +1,20 @@ +.filebox .textbox-value { + vertical-align: top; + position: absolute; + top: 0; + left: -5000px; +} +.filebox-label { + display: inline-block; + position: absolute; + width: 100%; + height: 100%; + cursor: pointer; + left: 0; + top: 0; + z-index: 10; + background: url('images/blank.gif') no-repeat; +} +.l-btn-disabled .filebox-label { + cursor: default; +} diff --git a/src/main/webapp/static/easyUI/themes/metro/images/accordion_arrows.png b/src/main/webapp/static/easyUI/themes/metro/images/accordion_arrows.png new file mode 100644 index 0000000000000000000000000000000000000000..720835f69c96c17ec32a20b03ac9753aa59b7f4f Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/metro/images/accordion_arrows.png differ diff --git a/src/main/webapp/static/easyUI/themes/metro/images/blank.gif b/src/main/webapp/static/easyUI/themes/metro/images/blank.gif new file mode 100644 index 0000000000000000000000000000000000000000..1d11fa9ada9e93505b3d736acb204083f45d5fbf Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/metro/images/blank.gif differ diff --git a/src/main/webapp/static/easyUI/themes/metro/images/calendar_arrows.png b/src/main/webapp/static/easyUI/themes/metro/images/calendar_arrows.png new file mode 100644 index 0000000000000000000000000000000000000000..430c4ad685b8c0068ecb7e3cbef74f493a84ad0d Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/metro/images/calendar_arrows.png differ diff --git a/src/main/webapp/static/easyUI/themes/metro/images/combo_arrow.png b/src/main/webapp/static/easyUI/themes/metro/images/combo_arrow.png new file mode 100644 index 0000000000000000000000000000000000000000..2e59fb9f3f906487ffa20bdad81a14692ba9e01a Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/metro/images/combo_arrow.png differ diff --git a/src/main/webapp/static/easyUI/themes/metro/images/datagrid_icons.png b/src/main/webapp/static/easyUI/themes/metro/images/datagrid_icons.png new file mode 100644 index 0000000000000000000000000000000000000000..762d0ce0f77ea47e1a638e32e974b2ddbb42c7c1 Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/metro/images/datagrid_icons.png differ diff --git a/src/main/webapp/static/easyUI/themes/metro/images/datebox_arrow.png b/src/main/webapp/static/easyUI/themes/metro/images/datebox_arrow.png new file mode 100644 index 0000000000000000000000000000000000000000..783c83357fdf90a1c7c024358e1d768b5c09c135 Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/metro/images/datebox_arrow.png differ diff --git a/src/main/webapp/static/easyUI/themes/metro/images/layout_arrows.png b/src/main/webapp/static/easyUI/themes/metro/images/layout_arrows.png new file mode 100644 index 0000000000000000000000000000000000000000..6f41654253030183f8220a815e85ed56d05ca9a3 Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/metro/images/layout_arrows.png differ diff --git a/src/main/webapp/static/easyUI/themes/metro/images/linkbutton_bg.png b/src/main/webapp/static/easyUI/themes/metro/images/linkbutton_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..fc66bd2cd24047b8377342365a1df3846327ecde Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/metro/images/linkbutton_bg.png differ diff --git a/src/main/webapp/static/easyUI/themes/metro/images/loading.gif b/src/main/webapp/static/easyUI/themes/metro/images/loading.gif new file mode 100644 index 0000000000000000000000000000000000000000..68f01d04813c1f622810864a3aaa04b4a17ac8f9 Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/metro/images/loading.gif differ diff --git a/src/main/webapp/static/easyUI/themes/metro/images/menu_arrows.png b/src/main/webapp/static/easyUI/themes/metro/images/menu_arrows.png new file mode 100644 index 0000000000000000000000000000000000000000..b986842e7e4044caed18edbcb4b376a4bb915623 Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/metro/images/menu_arrows.png differ diff --git a/src/main/webapp/static/easyUI/themes/metro/images/messager_icons.png b/src/main/webapp/static/easyUI/themes/metro/images/messager_icons.png new file mode 100644 index 0000000000000000000000000000000000000000..62c18c135860351063ebaabe8c0f4df7664b8f65 Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/metro/images/messager_icons.png differ diff --git a/src/main/webapp/static/easyUI/themes/metro/images/pagination_icons.png b/src/main/webapp/static/easyUI/themes/metro/images/pagination_icons.png new file mode 100644 index 0000000000000000000000000000000000000000..616f0bdd6f589a6e6f9722665c95558356e47a6d Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/metro/images/pagination_icons.png differ diff --git a/src/main/webapp/static/easyUI/themes/metro/images/panel_tools.png b/src/main/webapp/static/easyUI/themes/metro/images/panel_tools.png new file mode 100644 index 0000000000000000000000000000000000000000..fe682ef89d18503561269b27225e9fde8c00259b Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/metro/images/panel_tools.png differ diff --git a/src/main/webapp/static/easyUI/themes/metro/images/passwordbox_close.png b/src/main/webapp/static/easyUI/themes/metro/images/passwordbox_close.png new file mode 100644 index 0000000000000000000000000000000000000000..643c09da9af25c601b4c4be9215350f6fd8b1514 Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/metro/images/passwordbox_close.png differ diff --git a/src/main/webapp/static/easyUI/themes/metro/images/passwordbox_open.png b/src/main/webapp/static/easyUI/themes/metro/images/passwordbox_open.png new file mode 100644 index 0000000000000000000000000000000000000000..d328891f6a18ea703fd25a47b228df9cb13b4744 Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/metro/images/passwordbox_open.png differ diff --git a/src/main/webapp/static/easyUI/themes/metro/images/searchbox_button.png b/src/main/webapp/static/easyUI/themes/metro/images/searchbox_button.png new file mode 100644 index 0000000000000000000000000000000000000000..6dd1931589b453f6cc9772fd1851d8705d6b6631 Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/metro/images/searchbox_button.png differ diff --git a/src/main/webapp/static/easyUI/themes/metro/images/slider_handle.png b/src/main/webapp/static/easyUI/themes/metro/images/slider_handle.png new file mode 100644 index 0000000000000000000000000000000000000000..b9802bae14c536281a8fdbe6cd07abbc13985033 Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/metro/images/slider_handle.png differ diff --git a/src/main/webapp/static/easyUI/themes/metro/images/spinner_arrows.png b/src/main/webapp/static/easyUI/themes/metro/images/spinner_arrows.png new file mode 100644 index 0000000000000000000000000000000000000000..7c2df483dbb30dfb3a51332c03fe6f0c229c0547 Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/metro/images/spinner_arrows.png differ diff --git a/src/main/webapp/static/easyUI/themes/metro/images/tabs_icons.png b/src/main/webapp/static/easyUI/themes/metro/images/tabs_icons.png new file mode 100644 index 0000000000000000000000000000000000000000..4d29966d7154338a9e2e358821a5f72655eba43e Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/metro/images/tabs_icons.png differ diff --git a/src/main/webapp/static/easyUI/themes/metro/images/tagbox_icons.png b/src/main/webapp/static/easyUI/themes/metro/images/tagbox_icons.png new file mode 100644 index 0000000000000000000000000000000000000000..bd02e2d817c6b7c4e2a105919e9a89cc0a1d577f Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/metro/images/tagbox_icons.png differ diff --git a/src/main/webapp/static/easyUI/themes/metro/images/tree_icons.png b/src/main/webapp/static/easyUI/themes/metro/images/tree_icons.png new file mode 100644 index 0000000000000000000000000000000000000000..e9be4f3a9965e49a4e4078f8c53f486d761a7468 Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/metro/images/tree_icons.png differ diff --git a/src/main/webapp/static/easyUI/themes/metro/images/validatebox_warning.png b/src/main/webapp/static/easyUI/themes/metro/images/validatebox_warning.png new file mode 100644 index 0000000000000000000000000000000000000000..2b3d4f05babf3f82b146350e96570fac02075de0 Binary files /dev/null and b/src/main/webapp/static/easyUI/themes/metro/images/validatebox_warning.png differ diff --git a/src/main/webapp/static/easyUI/themes/metro/layout.css b/src/main/webapp/static/easyUI/themes/metro/layout.css new file mode 100644 index 0000000000000000000000000000000000000000..53ba16bfc37e3ed74a6d0903d2390d4dab1a5eb7 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/metro/layout.css @@ -0,0 +1,150 @@ +.layout { + position: relative; + overflow: hidden; + margin: 0; + padding: 0; + z-index: 0; +} +.layout-panel { + position: absolute; + overflow: hidden; +} +.layout-body { + min-width: 1px; + min-height: 1px; +} +.layout-panel-east, +.layout-panel-west { + z-index: 2; +} +.layout-panel-north, +.layout-panel-south { + z-index: 3; +} +.layout-expand { + position: absolute; + padding: 0px; + font-size: 1px; + cursor: pointer; + z-index: 1; +} +.layout-expand .panel-header, +.layout-expand .panel-body { + background: transparent; + filter: none; + overflow: hidden; +} +.layout-expand .panel-header { + border-bottom-width: 0px; +} +.layout-expand .panel-body { + position: relative; +} +.layout-expand .panel-body .panel-icon { + margin-top: 0; + top: 0; + left: 50%; + margin-left: -8px; +} +.layout-expand-west .panel-header .panel-icon, +.layout-expand-east .panel-header .panel-icon { + display: none; +} +.layout-expand-title { + position: absolute; + top: 0; + left: 21px; + white-space: nowrap; + word-wrap: normal; + -webkit-transform: rotate(90deg); + -webkit-transform-origin: 0 0; + -moz-transform: rotate(90deg); + -moz-transform-origin: 0 0; + -o-transform: rotate(90deg); + -o-transform-origin: 0 0; + transform: rotate(90deg); + transform-origin: 0 0; +} +.layout-expand-title-up { + position: absolute; + top: 0; + left: 0; + text-align: right; + padding-left: 5px; + white-space: nowrap; + word-wrap: normal; + -webkit-transform: rotate(-90deg); + -webkit-transform-origin: 0 0; + -moz-transform: rotate(-90deg); + -moz-transform-origin: 0 0; + -o-transform: rotate(-90deg); + -o-transform-origin: 0 0; + transform: rotate(-90deg); + transform-origin: 0 0; +} +.layout-expand-with-icon { + top: 18px; +} +.layout-expand .panel-body-noheader .layout-expand-title, +.layout-expand .panel-body-noheader .panel-icon { + top: 5px; +} +.layout-expand .panel-body-noheader .layout-expand-with-icon { + top: 23px; +} +.layout-split-proxy-h, +.layout-split-proxy-v { + position: absolute; + font-size: 1px; + display: none; + z-index: 5; +} +.layout-split-proxy-h { + width: 5px; + cursor: e-resize; +} +.layout-split-proxy-v { + height: 5px; + cursor: n-resize; +} +.layout-mask { + position: absolute; + background: #fafafa; + filter: alpha(opacity=10); + opacity: 0.10; + z-index: 4; +} +.layout-button-up { + background: url('images/layout_arrows.png') no-repeat -16px -16px; +} +.layout-button-down { + background: url('images/layout_arrows.png') no-repeat -16px 0; +} +.layout-button-left { + background: url('images/layout_arrows.png') no-repeat 0 0; +} +.layout-button-right { + background: url('images/layout_arrows.png') no-repeat 0 -16px; +} +.layout-split-proxy-h, +.layout-split-proxy-v { + background-color: #b3b3b3; +} +.layout-split-north { + border-bottom: 5px solid #fff; +} +.layout-split-south { + border-top: 5px solid #fff; +} +.layout-split-east { + border-left: 5px solid #fff; +} +.layout-split-west { + border-right: 5px solid #fff; +} +.layout-expand { + background-color: #ffffff; +} +.layout-expand-over { + background-color: #ffffff; +} diff --git a/src/main/webapp/static/easyUI/themes/metro/linkbutton.css b/src/main/webapp/static/easyUI/themes/metro/linkbutton.css new file mode 100644 index 0000000000000000000000000000000000000000..b0c578f4df780a869c9f60e68654b2c7361e7076 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/metro/linkbutton.css @@ -0,0 +1,203 @@ +.l-btn { + text-decoration: none; + display: inline-block; + overflow: hidden; + margin: 0; + padding: 0; + cursor: pointer; + outline: none; + text-align: center; + vertical-align: middle; + line-height: normal; +} +.l-btn-plain { + border-width: 0; + padding: 1px; +} +.l-btn-left { + display: inline-block; + position: relative; + overflow: hidden; + margin: 0; + padding: 0; + vertical-align: top; +} +.l-btn-text { + display: inline-block; + vertical-align: top; + width: auto; + line-height: 24px; + font-size: 12px; + padding: 0; + margin: 0 4px; +} +.l-btn-icon { + display: inline-block; + width: 16px; + height: 16px; + line-height: 16px; + position: absolute; + top: 50%; + margin-top: -8px; + font-size: 1px; +} +.l-btn span span .l-btn-empty { + display: inline-block; + margin: 0; + width: 16px; + height: 24px; + font-size: 1px; + vertical-align: top; +} +.l-btn span .l-btn-icon-left { + padding: 0 0 0 20px; + background-position: left center; +} +.l-btn span .l-btn-icon-right { + padding: 0 20px 0 0; + background-position: right center; +} +.l-btn-icon-left .l-btn-text { + margin: 0 4px 0 24px; +} +.l-btn-icon-left .l-btn-icon { + left: 4px; +} +.l-btn-icon-right .l-btn-text { + margin: 0 24px 0 4px; +} +.l-btn-icon-right .l-btn-icon { + right: 4px; +} +.l-btn-icon-top .l-btn-text { + margin: 20px 4px 0 4px; +} +.l-btn-icon-top .l-btn-icon { + top: 4px; + left: 50%; + margin: 0 0 0 -8px; +} +.l-btn-icon-bottom .l-btn-text { + margin: 0 4px 20px 4px; +} +.l-btn-icon-bottom .l-btn-icon { + top: auto; + bottom: 4px; + left: 50%; + margin: 0 0 0 -8px; +} +.l-btn-left .l-btn-empty { + margin: 0 4px; + width: 16px; +} +.l-btn-plain:hover { + padding: 0; +} +.l-btn-focus { + outline: #0000FF dotted thin; +} +.l-btn-large .l-btn-text { + line-height: 40px; +} +.l-btn-large .l-btn-icon { + width: 32px; + height: 32px; + line-height: 32px; + margin-top: -16px; +} +.l-btn-large .l-btn-icon-left .l-btn-text { + margin-left: 40px; +} +.l-btn-large .l-btn-icon-right .l-btn-text { + margin-right: 40px; +} +.l-btn-large .l-btn-icon-top .l-btn-text { + margin-top: 36px; + line-height: 24px; + min-width: 32px; +} +.l-btn-large .l-btn-icon-top .l-btn-icon { + margin: 0 0 0 -16px; +} +.l-btn-large .l-btn-icon-bottom .l-btn-text { + margin-bottom: 36px; + line-height: 24px; + min-width: 32px; +} +.l-btn-large .l-btn-icon-bottom .l-btn-icon { + margin: 0 0 0 -16px; +} +.l-btn-large .l-btn-left .l-btn-empty { + margin: 0 4px; + width: 32px; +} +.l-btn { + color: #777; + background: #ffffff; + background-repeat: repeat-x; + border: 1px solid #dddddd; + background: -webkit-linear-gradient(top,#ffffff 0,#ffffff 100%); + background: -moz-linear-gradient(top,#ffffff 0,#ffffff 100%); + background: -o-linear-gradient(top,#ffffff 0,#ffffff 100%); + background: linear-gradient(to bottom,#ffffff 0,#ffffff 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#ffffff,GradientType=0); + -moz-border-radius: 0px 0px 0px 0px; + -webkit-border-radius: 0px 0px 0px 0px; + border-radius: 0px 0px 0px 0px; +} +.l-btn:hover { + background: #E6E6E6; + color: #444; + border: 1px solid #ddd; + filter: none; +} +.l-btn-plain { + background: transparent; + border-width: 0; + filter: none; +} +.l-btn-outline { + border-width: 1px; + border-color: #ddd; + padding: 0; +} +.l-btn-plain:hover { + background: #E6E6E6; + color: #444; + border: 1px solid #ddd; + -moz-border-radius: 0px 0px 0px 0px; + -webkit-border-radius: 0px 0px 0px 0px; + border-radius: 0px 0px 0px 0px; +} +.l-btn-disabled, +.l-btn-disabled:hover { + opacity: 0.5; + cursor: default; + background: #ffffff; + color: #777; + background: -webkit-linear-gradient(top,#ffffff 0,#ffffff 100%); + background: -moz-linear-gradient(top,#ffffff 0,#ffffff 100%); + background: -o-linear-gradient(top,#ffffff 0,#ffffff 100%); + background: linear-gradient(to bottom,#ffffff 0,#ffffff 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#ffffff,GradientType=0); +} +.l-btn-disabled .l-btn-text, +.l-btn-disabled .l-btn-icon { + filter: alpha(opacity=50); +} +.l-btn-plain-disabled, +.l-btn-plain-disabled:hover { + background: transparent; + filter: alpha(opacity=50); +} +.l-btn-selected, +.l-btn-selected:hover { + background: #ddd; + filter: none; +} +.l-btn-plain-selected, +.l-btn-plain-selected:hover { + background: #ddd; +} diff --git a/src/main/webapp/static/easyUI/themes/metro/menu.css b/src/main/webapp/static/easyUI/themes/metro/menu.css new file mode 100644 index 0000000000000000000000000000000000000000..26933a6e8b37fd647d562c545f6bebd6dd19341b --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/metro/menu.css @@ -0,0 +1,119 @@ +.menu { + position: absolute; + margin: 0; + padding: 2px; + border-width: 1px; + border-style: solid; + overflow: hidden; +} +.menu-inline { + position: relative; +} +.menu-item { + position: relative; + margin: 0; + padding: 0; + overflow: hidden; + white-space: nowrap; + cursor: pointer; + border-width: 1px; + border-style: solid; +} +.menu-text { + height: 20px; + line-height: 20px; + float: left; + padding-left: 28px; +} +.menu-icon { + position: absolute; + width: 16px; + height: 16px; + left: 2px; + top: 50%; + margin-top: -8px; +} +.menu-rightarrow { + position: absolute; + width: 16px; + height: 16px; + right: 0; + top: 50%; + margin-top: -8px; +} +.menu-line { + position: absolute; + left: 26px; + top: 0; + height: 2000px; + font-size: 1px; +} +.menu-sep { + margin: 3px 0px 3px 25px; + font-size: 1px; +} +.menu-noline .menu-line { + display: none; +} +.menu-noline .menu-sep { + margin-left: 0; + margin-right: 0; +} +.menu-active { + -moz-border-radius: 0px 0px 0px 0px; + -webkit-border-radius: 0px 0px 0px 0px; + border-radius: 0px 0px 0px 0px; +} +.menu-item-disabled { + opacity: 0.5; + filter: alpha(opacity=50); + cursor: default; +} +.menu-text, +.menu-text span { + font-size: 12px; +} +.menu-shadow { + position: absolute; + -moz-border-radius: 0px 0px 0px 0px; + -webkit-border-radius: 0px 0px 0px 0px; + border-radius: 0px 0px 0px 0px; + background: #eee; + -moz-box-shadow: 2px 2px 3px #ededed; + -webkit-box-shadow: 2px 2px 3px #ededed; + box-shadow: 2px 2px 3px #ededed; + filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); +} +.menu-rightarrow { + background: url('images/menu_arrows.png') no-repeat -32px center; +} +.menu-line { + border-left: 1px solid #ddd; + border-right: 1px solid #fff; +} +.menu-sep { + border-top: 1px solid #ddd; + border-bottom: 1px solid #fff; +} +.menu { + background-color: #ffffff; + border-color: #ddd; + color: #444; +} +.menu-content { + background: #fff; +} +.menu-item { + border-color: transparent; + _border-color: #ffffff; +} +.menu-active { + border-color: #ddd; + color: #444; + background: #E6E6E6; +} +.menu-active-disabled { + border-color: transparent; + background: transparent; + color: #444; +} diff --git a/src/main/webapp/static/easyUI/themes/metro/menubutton.css b/src/main/webapp/static/easyUI/themes/metro/menubutton.css new file mode 100644 index 0000000000000000000000000000000000000000..8ed294a0e3f05454f8b33001e50d934b35d4ebca --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/metro/menubutton.css @@ -0,0 +1,94 @@ +.m-btn-downarrow, +.s-btn-downarrow { + display: inline-block; + position: absolute; + width: 16px; + height: 16px; + font-size: 1px; + right: 0; + top: 50%; + margin-top: -8px; +} +.m-btn-active, +.s-btn-active { + background: #E6E6E6; + color: #444; + border: 1px solid #ddd; + filter: none; +} +.m-btn-plain-active, +.s-btn-plain-active { + background: transparent; + padding: 0; + border-width: 1px; + border-style: solid; + -moz-border-radius: 0px 0px 0px 0px; + -webkit-border-radius: 0px 0px 0px 0px; + border-radius: 0px 0px 0px 0px; +} +.m-btn .l-btn-left .l-btn-text { + margin-right: 20px; +} +.m-btn .l-btn-icon-right .l-btn-text { + margin-right: 40px; +} +.m-btn .l-btn-icon-right .l-btn-icon { + right: 20px; +} +.m-btn .l-btn-icon-top .l-btn-text { + margin-right: 4px; + margin-bottom: 14px; +} +.m-btn .l-btn-icon-bottom .l-btn-text { + margin-right: 4px; + margin-bottom: 34px; +} +.m-btn .l-btn-icon-bottom .l-btn-icon { + top: auto; + bottom: 20px; +} +.m-btn .l-btn-icon-top .m-btn-downarrow, +.m-btn .l-btn-icon-bottom .m-btn-downarrow { + top: auto; + bottom: 0px; + left: 50%; + margin-left: -8px; +} +.m-btn-line { + display: inline-block; + position: absolute; + font-size: 1px; + display: none; +} +.m-btn .l-btn-left .m-btn-line { + right: 0; + width: 16px; + height: 500px; + border-style: solid; + border-color: #b3b3b3; + border-width: 0 0 0 1px; +} +.m-btn .l-btn-icon-top .m-btn-line, +.m-btn .l-btn-icon-bottom .m-btn-line { + left: 0; + bottom: 0; + width: 500px; + height: 16px; + border-width: 1px 0 0 0; +} +.m-btn-large .l-btn-icon-right .l-btn-text { + margin-right: 56px; +} +.m-btn-large .l-btn-icon-bottom .l-btn-text { + margin-bottom: 50px; +} +.m-btn-downarrow, +.s-btn-downarrow { + background: url('images/menu_arrows.png') no-repeat 0 center; +} +.m-btn-plain-active, +.s-btn-plain-active { + border-color: #ddd; + background-color: #E6E6E6; + color: #444; +} diff --git a/src/main/webapp/static/easyUI/themes/metro/messager.css b/src/main/webapp/static/easyUI/themes/metro/messager.css new file mode 100644 index 0000000000000000000000000000000000000000..f8e29afd3ad3c7c4a309c3c80682c6252b865b7f --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/metro/messager.css @@ -0,0 +1,44 @@ +.messager-body { + padding: 10px 10px 30px 10px; + overflow: auto; +} +.messager-button { + text-align: center; + padding: 5px; +} +.messager-button .l-btn { + width: 70px; +} +.messager-icon { + float: left; + width: 32px; + height: 32px; + margin: 0 10px 10px 0; +} +.messager-error { + background: url('images/messager_icons.png') no-repeat scroll -64px 0; +} +.messager-info { + background: url('images/messager_icons.png') no-repeat scroll 0 0; +} +.messager-question { + background: url('images/messager_icons.png') no-repeat scroll -32px 0; +} +.messager-warning { + background: url('images/messager_icons.png') no-repeat scroll -96px 0; +} +.messager-progress { + padding: 10px; +} +.messager-p-msg { + margin-bottom: 5px; +} +.messager-body .messager-input { + width: 100%; + padding: 4px 0; + outline-style: none; + border: 1px solid #ddd; +} +.window-thinborder .messager-button { + padding-bottom: 8px; +} diff --git a/src/main/webapp/static/easyUI/themes/metro/numberbox.css b/src/main/webapp/static/easyUI/themes/metro/numberbox.css new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/main/webapp/static/easyUI/themes/metro/pagination.css b/src/main/webapp/static/easyUI/themes/metro/pagination.css new file mode 100644 index 0000000000000000000000000000000000000000..c0f74243c3e786c4db222e3eb553d69770cff615 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/metro/pagination.css @@ -0,0 +1,71 @@ +.pagination { + zoom: 1; +} +.pagination table { + float: left; + height: 30px; +} +.pagination td { + border: 0; +} +.pagination-btn-separator { + float: left; + height: 24px; + border-left: 1px solid #ddd; + border-right: 1px solid #fff; + margin: 3px 1px; +} +.pagination .pagination-num { + border-width: 1px; + border-style: solid; + margin: 0 2px; + padding: 2px; + width: 2em; + height: auto; +} +.pagination-page-list { + margin: 0px 6px; + padding: 1px 2px; + width: auto; + height: auto; + border-width: 1px; + border-style: solid; +} +.pagination-info { + float: right; + margin: 0 6px; + padding: 0; + height: 30px; + line-height: 30px; + font-size: 12px; +} +.pagination span { + font-size: 12px; +} +.pagination-link .l-btn-text { + width: 24px; + text-align: center; + margin: 0; +} +.pagination-first { + background: url('images/pagination_icons.png') no-repeat 0 center; +} +.pagination-prev { + background: url('images/pagination_icons.png') no-repeat -16px center; +} +.pagination-next { + background: url('images/pagination_icons.png') no-repeat -32px center; +} +.pagination-last { + background: url('images/pagination_icons.png') no-repeat -48px center; +} +.pagination-load { + background: url('images/pagination_icons.png') no-repeat -64px center; +} +.pagination-loading { + background: url('images/loading.gif') no-repeat center center; +} +.pagination-page-list, +.pagination .pagination-num { + border-color: #ddd; +} diff --git a/src/main/webapp/static/easyUI/themes/metro/panel.css b/src/main/webapp/static/easyUI/themes/metro/panel.css new file mode 100644 index 0000000000000000000000000000000000000000..4af47fad92abab930adca66a6af3c6c165e740ba --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/metro/panel.css @@ -0,0 +1,259 @@ +.panel { + overflow: hidden; + text-align: left; + margin: 0; + border: 0; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.panel-header, +.panel-body { + border-width: 1px; + border-style: solid; +} +.panel-header { + padding: 5px; + position: relative; +} +.panel-title { + background: url('images/blank.gif') no-repeat; +} +.panel-header-noborder { + border-width: 0 0 1px 0; +} +.panel-body { + overflow: auto; + border-top-width: 0; + padding: 0; +} +.panel-body-noheader { + border-top-width: 1px; +} +.panel-body-noborder { + border-width: 0px; +} +.panel-body-nobottom { + border-bottom-width: 0; +} +.panel-with-icon { + padding-left: 18px; +} +.panel-icon, +.panel-tool { + position: absolute; + top: 50%; + margin-top: -8px; + height: 16px; + overflow: hidden; +} +.panel-icon { + left: 5px; + width: 16px; +} +.panel-tool { + right: 5px; + width: auto; +} +.panel-tool a { + display: inline-block; + width: 16px; + height: 16px; + opacity: 0.6; + filter: alpha(opacity=60); + margin: 0 0 0 2px; + vertical-align: top; +} +.panel-tool a:hover { + opacity: 1; + filter: alpha(opacity=100); + background-color: #E6E6E6; + -moz-border-radius: -2px -2px -2px -2px; + -webkit-border-radius: -2px -2px -2px -2px; + border-radius: -2px -2px -2px -2px; +} +.panel-loading { + padding: 11px 0px 10px 30px; +} +.panel-noscroll { + overflow: hidden; +} +.panel-fit, +.panel-fit body { + height: 100%; + margin: 0; + padding: 0; + border: 0; + overflow: hidden; +} +.panel-loading { + background: url('images/loading.gif') no-repeat 10px 10px; +} +.panel-tool-close { + background: url('images/panel_tools.png') no-repeat -16px 0px; +} +.panel-tool-min { + background: url('images/panel_tools.png') no-repeat 0px 0px; +} +.panel-tool-max { + background: url('images/panel_tools.png') no-repeat 0px -16px; +} +.panel-tool-restore { + background: url('images/panel_tools.png') no-repeat -16px -16px; +} +.panel-tool-collapse { + background: url('images/panel_tools.png') no-repeat -32px 0; +} +.panel-tool-expand { + background: url('images/panel_tools.png') no-repeat -32px -16px; +} +.panel-header, +.panel-body { + border-color: #ddd; +} +.panel-header { + background-color: #ffffff; +} +.panel-body { + background-color: #fff; + color: #444; + font-size: 12px; +} +.panel-title { + font-size: 12px; + font-weight: bold; + color: #777; + height: 16px; + line-height: 16px; +} +.panel-footer { + border: 1px solid #ddd; + overflow: hidden; + background: #fff; +} +.panel-footer-noborder { + border-width: 1px 0 0 0; +} +.panel-hleft, +.panel-hright { + position: relative; +} +.panel-hleft>.panel-body, +.panel-hright>.panel-body { + position: absolute; +} +.panel-hleft>.panel-header { + float: left; +} +.panel-hright>.panel-header { + float: right; +} +.panel-hleft>.panel-body { + border-top-width: 1px; + border-left-width: 0; +} +.panel-hright>.panel-body { + border-top-width: 1px; + border-right-width: 0; +} +.panel-hleft>.panel-body-nobottom { + border-bottom-width: 1px; + border-right-width: 0; +} +.panel-hright>.panel-body-nobottom { + border-bottom-width: 1px; + border-left-width: 0; +} +.panel-hleft>.panel-footer { + position: absolute; + right: 0; +} +.panel-hright>.panel-footer { + position: absolute; + left: 0; +} +.panel-hleft>.panel-header-noborder { + border-width: 0 1px 0 0; +} +.panel-hright>.panel-header-noborder { + border-width: 0 0 0 1px; +} +.panel-hleft>.panel-body-noborder { + border-width: 0; +} +.panel-hright>.panel-body-noborder { + border-width: 0; +} +.panel-hleft>.panel-body-noheader { + border-left-width: 1px; +} +.panel-hright>.panel-body-noheader { + border-right-width: 1px; +} +.panel-hleft>.panel-footer-noborder { + border-width: 0 0 0 1px; +} +.panel-hright>.panel-footer-noborder { + border-width: 0 1px 0 0; +} +.panel-hleft>.panel-header .panel-icon, +.panel-hright>.panel-header .panel-icon { + margin-top: 0; + top: 5px; +} +.panel-hleft>.panel-header .panel-title, +.panel-hright>.panel-header .panel-title { + position: absolute; + min-width: 16px; + left: 21px; + top: 5px; + bottom: auto; + white-space: nowrap; + word-wrap: normal; + -webkit-transform: rotate(90deg); + -webkit-transform-origin: 0 0; + -moz-transform: rotate(90deg); + -moz-transform-origin: 0 0; + -o-transform: rotate(90deg); + -o-transform-origin: 0 0; + transform: rotate(90deg); + transform-origin: 0 0; +} +.panel-hleft>.panel-header .panel-title-up, +.panel-hright>.panel-header .panel-title-up { + position: absolute; + min-width: 16px; + left: 21px; + top: auto; + bottom: 5px; + text-align: right; + white-space: nowrap; + word-wrap: normal; + -webkit-transform: rotate(-90deg); + -webkit-transform-origin: 0 0; + -moz-transform: rotate(-90deg); + -moz-transform-origin: 0 0; + -o-transform: rotate(-90deg); + -o-transform-origin: 0 0; + transform: rotate(-90deg); + transform-origin: 0 16px; +} +.panel-hleft>.panel-header .panel-with-icon.panel-title-up, +.panel-hright>.panel-header .panel-with-icon.panel-title-up { + padding-left: 0; + padding-right: 18px; +} +.panel-hleft>.panel-header .panel-tool, +.panel-hright>.panel-header .panel-tool { + top: auto; + bottom: 5px; + width: 16px; + height: auto; + left: 50%; + margin-left: -8px; + margin-top: 0; +} +.panel-hleft>.panel-header .panel-tool a, +.panel-hright>.panel-header .panel-tool a { + margin: 2px 0 0 0; +} diff --git a/src/main/webapp/static/easyUI/themes/metro/passwordbox.css b/src/main/webapp/static/easyUI/themes/metro/passwordbox.css new file mode 100644 index 0000000000000000000000000000000000000000..92c9ce586b5c0e515bceb19422e8012e85d0e09b --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/metro/passwordbox.css @@ -0,0 +1,6 @@ +.passwordbox-open { + background: url('images/passwordbox_open.png') no-repeat center center; +} +.passwordbox-close { + background: url('images/passwordbox_close.png') no-repeat center center; +} diff --git a/src/main/webapp/static/easyUI/themes/metro/progressbar.css b/src/main/webapp/static/easyUI/themes/metro/progressbar.css new file mode 100644 index 0000000000000000000000000000000000000000..7721f1bffe55e3926d71592cf5db6a381ab1f2d6 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/metro/progressbar.css @@ -0,0 +1,32 @@ +.progressbar { + border-width: 1px; + border-style: solid; + -moz-border-radius: 0px 0px 0px 0px; + -webkit-border-radius: 0px 0px 0px 0px; + border-radius: 0px 0px 0px 0px; + overflow: hidden; + position: relative; +} +.progressbar-text { + text-align: center; + position: absolute; +} +.progressbar-value { + position: relative; + overflow: hidden; + width: 0; + -moz-border-radius: 0px 0 0 0px; + -webkit-border-radius: 0px 0 0 0px; + border-radius: 0px 0 0 0px; +} +.progressbar { + border-color: #ddd; +} +.progressbar-text { + color: #444; + font-size: 12px; +} +.progressbar-value .progressbar-text { + background-color: #CCE6FF; + color: #000; +} diff --git a/src/main/webapp/static/easyUI/themes/metro/propertygrid.css b/src/main/webapp/static/easyUI/themes/metro/propertygrid.css new file mode 100644 index 0000000000000000000000000000000000000000..f5ae0c4e3dc511d990737299cb040bedff301f40 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/metro/propertygrid.css @@ -0,0 +1,28 @@ +.propertygrid .datagrid-view1 .datagrid-body td { + padding-bottom: 1px; + border-width: 0 1px 0 0; +} +.propertygrid .datagrid-group { + height: 21px; + overflow: hidden; + border-width: 0 0 1px 0; + border-style: solid; +} +.propertygrid .datagrid-group span { + font-weight: bold; +} +.propertygrid .datagrid-view1 .datagrid-body td { + border-color: #ddd; +} +.propertygrid .datagrid-view1 .datagrid-group { + border-color: #ffffff; +} +.propertygrid .datagrid-view2 .datagrid-group { + border-color: #ddd; +} +.propertygrid .datagrid-group, +.propertygrid .datagrid-view1 .datagrid-body, +.propertygrid .datagrid-view1 .datagrid-row-over, +.propertygrid .datagrid-view1 .datagrid-row-selected { + background: #ffffff; +} diff --git a/src/main/webapp/static/easyUI/themes/metro/searchbox.css b/src/main/webapp/static/easyUI/themes/metro/searchbox.css new file mode 100644 index 0000000000000000000000000000000000000000..2d3af1c15306032a58e333b16f55eba8a86ecd7b --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/metro/searchbox.css @@ -0,0 +1,61 @@ +.searchbox-button { + width: 18px; + height: 20px; + overflow: hidden; + display: inline-block; + vertical-align: top; + cursor: pointer; + opacity: 0.6; + filter: alpha(opacity=60); +} +.searchbox-button-hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.searchbox .l-btn-plain { + border: 0; + padding: 0; + vertical-align: top; + opacity: 0.6; + filter: alpha(opacity=60); + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox .l-btn-plain:hover { + border: 0; + padding: 0; + opacity: 1.0; + filter: alpha(opacity=100); + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox a.m-btn-plain-active { + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox .m-btn-active { + border-width: 0 1px 0 0; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox .textbox-button-right { + border-width: 0 0 0 1px; +} +.searchbox .textbox-button-left { + border-width: 0 1px 0 0; +} +.searchbox-button { + background: url('images/searchbox_button.png') no-repeat center center; +} +.searchbox .l-btn-plain { + background: #ffffff; +} +.searchbox .l-btn-plain-disabled, +.searchbox .l-btn-plain-disabled:hover { + opacity: 0.5; + filter: alpha(opacity=50); +} diff --git a/src/main/webapp/static/easyUI/themes/metro/slider.css b/src/main/webapp/static/easyUI/themes/metro/slider.css new file mode 100644 index 0000000000000000000000000000000000000000..42ddc177570637813ef98d5d57a50dcccfbbe4a7 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/metro/slider.css @@ -0,0 +1,101 @@ +.slider-disabled { + opacity: 0.5; + filter: alpha(opacity=50); +} +.slider-h { + height: 22px; +} +.slider-v { + width: 22px; +} +.slider-inner { + position: relative; + height: 6px; + top: 7px; + border-width: 1px; + border-style: solid; + border-radius: 0px; +} +.slider-handle { + position: absolute; + display: block; + outline: none; + width: 20px; + height: 20px; + top: 50%; + margin-top: -10px; + margin-left: -10px; +} +.slider-tip { + position: absolute; + display: inline-block; + line-height: 12px; + font-size: 12px; + white-space: nowrap; + top: -22px; +} +.slider-rule { + position: relative; + top: 15px; +} +.slider-rule span { + position: absolute; + display: inline-block; + font-size: 0; + height: 5px; + border-width: 0 0 0 1px; + border-style: solid; +} +.slider-rulelabel { + position: relative; + top: 20px; +} +.slider-rulelabel span { + position: absolute; + display: inline-block; + font-size: 12px; +} +.slider-v .slider-inner { + width: 6px; + left: 7px; + top: 0; + float: left; +} +.slider-v .slider-handle { + left: 50%; + margin-top: -10px; +} +.slider-v .slider-tip { + left: -10px; + margin-top: -6px; +} +.slider-v .slider-rule { + float: left; + top: 0; + left: 16px; +} +.slider-v .slider-rule span { + width: 5px; + height: 'auto'; + border-left: 0; + border-width: 1px 0 0 0; + border-style: solid; +} +.slider-v .slider-rulelabel { + float: left; + top: 0; + left: 23px; +} +.slider-handle { + background: url('images/slider_handle.png') no-repeat; +} +.slider-inner { + border-color: #ddd; + background: #ffffff; +} +.slider-rule span { + border-color: #ddd; +} +.slider-rulelabel span { + color: #444; +} diff --git a/src/main/webapp/static/easyUI/themes/metro/spinner.css b/src/main/webapp/static/easyUI/themes/metro/spinner.css new file mode 100644 index 0000000000000000000000000000000000000000..9179f9b0706f63d3946e6e193157cd2f989dd7c9 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/metro/spinner.css @@ -0,0 +1,58 @@ +.spinner-arrow { + background-color: #ffffff; + display: inline-block; + overflow: hidden; + vertical-align: top; + margin: 0; + padding: 0; + opacity: 1.0; + filter: alpha(opacity=100); + width: 18px; +} +.spinner-arrow-up, +.spinner-arrow-down { + opacity: 0.6; + filter: alpha(opacity=60); + display: block; + font-size: 1px; + width: 18px; + height: 10px; + width: 100%; + height: 50%; + color: #777; + outline-style: none; +} +.spinner-arrow-hover { + background-color: #E6E6E6; + opacity: 1.0; + filter: alpha(opacity=100); +} +.spinner-arrow-up:hover, +.spinner-arrow-down:hover { + opacity: 1.0; + filter: alpha(opacity=100); + background-color: #E6E6E6; +} +.textbox-icon-disabled .spinner-arrow-up:hover, +.textbox-icon-disabled .spinner-arrow-down:hover { + opacity: 0.6; + filter: alpha(opacity=60); + background-color: #ffffff; + cursor: default; +} +.spinner .textbox-icon-disabled { + opacity: 0.6; + filter: alpha(opacity=60); +} +.spinner-arrow-up { + background: url('images/spinner_arrows.png') no-repeat 1px center; +} +.spinner-arrow-down { + background: url('images/spinner_arrows.png') no-repeat -15px center; +} +.spinner-button-up { + background: url('images/spinner_arrows.png') no-repeat -32px center; +} +.spinner-button-down { + background: url('images/spinner_arrows.png') no-repeat -48px center; +} diff --git a/src/main/webapp/static/easyUI/themes/metro/splitbutton.css b/src/main/webapp/static/easyUI/themes/metro/splitbutton.css new file mode 100644 index 0000000000000000000000000000000000000000..3451138c7884e151d8ae84b609649e983770e885 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/metro/splitbutton.css @@ -0,0 +1,12 @@ +.s-btn:hover .m-btn-line, +.s-btn-active .m-btn-line, +.s-btn-plain-active .m-btn-line { + display: inline-block; +} +.l-btn:hover .s-btn-downarrow, +.s-btn-active .s-btn-downarrow, +.s-btn-plain-active .s-btn-downarrow { + border-style: solid; + border-color: #b3b3b3; + border-width: 0 0 0 1px; +} diff --git a/src/main/webapp/static/easyUI/themes/metro/switchbutton.css b/src/main/webapp/static/easyUI/themes/metro/switchbutton.css new file mode 100644 index 0000000000000000000000000000000000000000..351083eb9f7adba9e1de3b629955ff3c22e8e4e8 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/metro/switchbutton.css @@ -0,0 +1,77 @@ +.switchbutton { + text-decoration: none; + display: inline-block; + overflow: hidden; + vertical-align: middle; + margin: 0; + padding: 0; + cursor: pointer; + background: #dddddd; + border: 1px solid #dddddd; + -moz-border-radius: 0px 0px 0px 0px; + -webkit-border-radius: 0px 0px 0px 0px; + border-radius: 0px 0px 0px 0px; +} +.switchbutton-inner { + display: inline-block; + overflow: hidden; + position: relative; + top: -1px; + left: -1px; +} +.switchbutton-on, +.switchbutton-off, +.switchbutton-handle { + display: inline-block; + text-align: center; + height: 100%; + float: left; + font-size: 12px; + -moz-border-radius: 0px 0px 0px 0px; + -webkit-border-radius: 0px 0px 0px 0px; + border-radius: 0px 0px 0px 0px; +} +.switchbutton-on { + background: #CCE6FF; + color: #000; +} +.switchbutton-off { + background-color: #fff; + color: #444; +} +.switchbutton-on, +.switchbutton-reversed .switchbutton-off { + -moz-border-radius: 0px 0 0 0px; + -webkit-border-radius: 0px 0 0 0px; + border-radius: 0px 0 0 0px; +} +.switchbutton-off, +.switchbutton-reversed .switchbutton-on { + -moz-border-radius: 0 0px 0px 0; + -webkit-border-radius: 0 0px 0px 0; + border-radius: 0 0px 0px 0; +} +.switchbutton-handle { + position: absolute; + top: 0; + left: 50%; + background-color: #fff; + color: #444; + border: 1px solid #dddddd; + -moz-box-shadow: 0 0 3px 0 #dddddd; + -webkit-box-shadow: 0 0 3px 0 #dddddd; + box-shadow: 0 0 3px 0 #dddddd; +} +.switchbutton-value { + position: absolute; + top: 0; + left: -5000px; +} +.switchbutton-disabled { + opacity: 0.5; + filter: alpha(opacity=50); +} +.switchbutton-disabled, +.switchbutton-readonly { + cursor: default; +} diff --git a/src/main/webapp/static/easyUI/themes/metro/tabs.css b/src/main/webapp/static/easyUI/themes/metro/tabs.css new file mode 100644 index 0000000000000000000000000000000000000000..e42fd50a14f41d18d8a7b3851bbe61f26351de32 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/metro/tabs.css @@ -0,0 +1,377 @@ +.tabs-container { + overflow: hidden; +} +.tabs-header { + border-width: 1px; + border-style: solid; + border-bottom-width: 0; + position: relative; + padding: 0; + padding-top: 2px; + overflow: hidden; +} +.tabs-scroller-left, +.tabs-scroller-right { + position: absolute; + top: auto; + bottom: 0; + width: 18px; + font-size: 1px; + display: none; + cursor: pointer; + border-width: 1px; + border-style: solid; +} +.tabs-scroller-left { + left: 0; +} +.tabs-scroller-right { + right: 0; +} +.tabs-tool { + position: absolute; + bottom: 0; + padding: 1px; + overflow: hidden; + border-width: 1px; + border-style: solid; +} +.tabs-header-plain .tabs-tool { + padding: 0 1px; +} +.tabs-wrap { + position: relative; + left: 0; + overflow: hidden; + width: 100%; + margin: 0; + padding: 0; +} +.tabs-scrolling { + margin-left: 18px; + margin-right: 18px; +} +.tabs-disabled { + opacity: 0.3; + filter: alpha(opacity=30); +} +.tabs { + list-style-type: none; + height: 26px; + margin: 0px; + padding: 0px; + padding-left: 4px; + width: 50000px; + border-style: solid; + border-width: 0 0 1px 0; +} +.tabs li { + float: left; + display: inline-block; + margin: 0 4px -1px 0; + padding: 0; + position: relative; + border: 0; +} +.tabs li a.tabs-inner { + display: inline-block; + text-decoration: none; + margin: 0; + padding: 0 10px; + height: 25px; + line-height: 25px; + text-align: center; + white-space: nowrap; + border-width: 1px; + border-style: solid; + -moz-border-radius: 0px 0px 0 0; + -webkit-border-radius: 0px 0px 0 0; + border-radius: 0px 0px 0 0; +} +.tabs li.tabs-selected a.tabs-inner { + font-weight: bold; + outline: none; +} +.tabs li.tabs-selected a:hover.tabs-inner { + cursor: default; + pointer: default; +} +.tabs li a.tabs-close, +.tabs-p-tool { + position: absolute; + font-size: 1px; + display: block; + height: 12px; + padding: 0; + top: 50%; + margin-top: -6px; + overflow: hidden; +} +.tabs li a.tabs-close { + width: 12px; + right: 5px; + opacity: 0.6; + filter: alpha(opacity=60); +} +.tabs-p-tool { + right: 16px; +} +.tabs-p-tool a { + display: inline-block; + font-size: 1px; + width: 12px; + height: 12px; + margin: 0; + opacity: 0.6; + filter: alpha(opacity=60); +} +.tabs li a:hover.tabs-close, +.tabs-p-tool a:hover { + opacity: 1; + filter: alpha(opacity=100); + cursor: hand; + cursor: pointer; +} +.tabs-with-icon { + padding-left: 18px; +} +.tabs-icon { + position: absolute; + width: 16px; + height: 16px; + left: 10px; + top: 50%; + margin-top: -8px; +} +.tabs-title { + font-size: 12px; +} +.tabs-closable { + padding-right: 8px; +} +.tabs-panels { + margin: 0px; + padding: 0px; + border-width: 1px; + border-style: solid; + border-top-width: 0; + overflow: hidden; +} +.tabs-header-bottom { + border-width: 0 1px 1px 1px; + padding: 0 0 2px 0; +} +.tabs-header-bottom .tabs { + border-width: 1px 0 0 0; +} +.tabs-header-bottom .tabs li { + margin: -1px 4px 0 0; +} +.tabs-header-bottom .tabs li a.tabs-inner { + -moz-border-radius: 0 0 0px 0px; + -webkit-border-radius: 0 0 0px 0px; + border-radius: 0 0 0px 0px; +} +.tabs-header-bottom .tabs-tool { + top: 0; +} +.tabs-header-bottom .tabs-scroller-left, +.tabs-header-bottom .tabs-scroller-right { + top: 0; + bottom: auto; +} +.tabs-panels-top { + border-width: 1px 1px 0 1px; +} +.tabs-header-left { + float: left; + border-width: 1px 0 1px 1px; + padding: 0; +} +.tabs-header-right { + float: right; + border-width: 1px 1px 1px 0; + padding: 0; +} +.tabs-header-left .tabs-wrap, +.tabs-header-right .tabs-wrap { + height: 100%; +} +.tabs-header-left .tabs { + height: 100%; + padding: 4px 0 0 2px; + border-width: 0 1px 0 0; +} +.tabs-header-right .tabs { + height: 100%; + padding: 4px 2px 0 0; + border-width: 0 0 0 1px; +} +.tabs-header-left .tabs li, +.tabs-header-right .tabs li { + display: block; + width: 100%; + position: relative; +} +.tabs-header-left .tabs li { + left: auto; + right: 0; + margin: 0 -1px 4px 0; + float: right; +} +.tabs-header-right .tabs li { + left: 0; + right: auto; + margin: 0 0 4px -1px; + float: left; +} +.tabs-justified li a.tabs-inner { + padding-left: 0; + padding-right: 0; +} +.tabs-header-left .tabs li a.tabs-inner { + display: block; + text-align: left; + padding-left: 10px; + padding-right: 10px; + -moz-border-radius: 0px 0 0 0px; + -webkit-border-radius: 0px 0 0 0px; + border-radius: 0px 0 0 0px; +} +.tabs-header-right .tabs li a.tabs-inner { + display: block; + text-align: left; + padding-left: 10px; + padding-right: 10px; + -moz-border-radius: 0 0px 0px 0; + -webkit-border-radius: 0 0px 0px 0; + border-radius: 0 0px 0px 0; +} +.tabs-panels-right { + float: right; + border-width: 1px 1px 1px 0; +} +.tabs-panels-left { + float: left; + border-width: 1px 0 1px 1px; +} +.tabs-header-noborder, +.tabs-panels-noborder { + border: 0px; +} +.tabs-header-plain { + border: 0px; + background: transparent; +} +.tabs-pill { + padding-bottom: 3px; +} +.tabs-header-bottom .tabs-pill { + padding-top: 3px; + padding-bottom: 0; +} +.tabs-header-left .tabs-pill { + padding-right: 3px; +} +.tabs-header-right .tabs-pill { + padding-left: 3px; +} +.tabs-header .tabs-pill li a.tabs-inner { + -moz-border-radius: 0px 0px 0px 0px; + -webkit-border-radius: 0px 0px 0px 0px; + border-radius: 0px 0px 0px 0px; +} +.tabs-header-narrow, +.tabs-header-narrow .tabs-narrow { + padding: 0; +} +.tabs-narrow li, +.tabs-header-bottom .tabs-narrow li { + margin-left: 0; + margin-right: -1px; +} +.tabs-narrow li.tabs-last, +.tabs-header-bottom .tabs-narrow li.tabs-last { + margin-right: 0; +} +.tabs-header-left .tabs-narrow, +.tabs-header-right .tabs-narrow { + padding-top: 0; +} +.tabs-header-left .tabs-narrow li { + margin-bottom: -1px; + margin-right: -1px; +} +.tabs-header-left .tabs-narrow li.tabs-last, +.tabs-header-right .tabs-narrow li.tabs-last { + margin-bottom: 0; +} +.tabs-header-right .tabs-narrow li { + margin-bottom: -1px; + margin-left: -1px; +} +.tabs-scroller-left { + background: #ffffff url('images/tabs_icons.png') no-repeat 1px center; +} +.tabs-scroller-right { + background: #ffffff url('images/tabs_icons.png') no-repeat -15px center; +} +.tabs li a.tabs-close { + background: url('images/tabs_icons.png') no-repeat -34px center; +} +.tabs li a.tabs-inner:hover { + background: #E6E6E6; + color: #444; + filter: none; +} +.tabs li.tabs-selected a.tabs-inner { + background-color: #fff; + color: #777; +} +.tabs li a.tabs-inner { + color: #777; + background-color: #ffffff; +} +.tabs-header, +.tabs-tool { + background-color: #ffffff; +} +.tabs-header-plain { + background: transparent; +} +.tabs-header, +.tabs-scroller-left, +.tabs-scroller-right, +.tabs-tool, +.tabs, +.tabs-panels, +.tabs li a.tabs-inner, +.tabs li.tabs-selected a.tabs-inner, +.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner, +.tabs-header-left .tabs li.tabs-selected a.tabs-inner, +.tabs-header-right .tabs li.tabs-selected a.tabs-inner { + border-color: #ddd; +} +.tabs-p-tool a:hover, +.tabs li a:hover.tabs-close, +.tabs-scroller-over { + background-color: #E6E6E6; +} +.tabs li.tabs-selected a.tabs-inner { + border-bottom: 1px solid #fff; +} +.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { + border-top: 1px solid #fff; +} +.tabs-header-left .tabs li.tabs-selected a.tabs-inner { + border-right: 1px solid #fff; +} +.tabs-header-right .tabs li.tabs-selected a.tabs-inner { + border-left: 1px solid #fff; +} +.tabs-header .tabs-pill li.tabs-selected a.tabs-inner { + background: #CCE6FF; + color: #000; + filter: none; + border-color: #ddd; +} diff --git a/src/main/webapp/static/easyUI/themes/metro/tagbox.css b/src/main/webapp/static/easyUI/themes/metro/tagbox.css new file mode 100644 index 0000000000000000000000000000000000000000..7c6fd15f899018ba3953b476705bd2662e61ed26 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/metro/tagbox.css @@ -0,0 +1,44 @@ +.tagbox { + cursor: text; +} +.tagbox .textbox-text { + float: left; +} +.tagbox-label { + position: relative; + display: block; + margin: 4px 0 0 4px; + padding: 0 20px 0 4px; + float: left; + vertical-align: top; + text-decoration: none; + -moz-border-radius: 0px 0px 0px 0px; + -webkit-border-radius: 0px 0px 0px 0px; + border-radius: 0px 0px 0px 0px; + background: #E6E6E6; + color: #444; +} +.tagbox-remove { + background: url('images/tagbox_icons.png') no-repeat -16px center; + position: absolute; + display: block; + width: 16px; + height: 16px; + right: 2px; + top: 50%; + margin-top: -8px; + opacity: 0.6; + filter: alpha(opacity=60); +} +.tagbox-remove:hover { + opacity: 1; + filter: alpha(opacity=100); +} +.textbox-disabled .tagbox-label { + cursor: default; +} +.textbox-disabled .tagbox-remove:hover { + cursor: default; + opacity: 0.6; + filter: alpha(opacity=60); +} diff --git a/src/main/webapp/static/easyUI/themes/metro/textbox.css b/src/main/webapp/static/easyUI/themes/metro/textbox.css new file mode 100644 index 0000000000000000000000000000000000000000..53f08dd8fd9bee437da823d730eb2399c6904ea4 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/metro/textbox.css @@ -0,0 +1,139 @@ +.textbox { + position: relative; + border: 1px solid #ddd; + background-color: #fff; + vertical-align: middle; + display: inline-block; + overflow: hidden; + white-space: nowrap; + margin: 0; + padding: 0; + -moz-border-radius: 0px 0px 0px 0px; + -webkit-border-radius: 0px 0px 0px 0px; + border-radius: 0px 0px 0px 0px; +} +.textbox .textbox-text { + font-size: 12px; + border: 0; + margin: 0; + padding: 4px; + white-space: normal; + vertical-align: top; + outline-style: none; + resize: none; + -moz-border-radius: 0px 0px 0px 0px; + -webkit-border-radius: 0px 0px 0px 0px; + border-radius: 0px 0px 0px 0px; +} +.textbox .textbox-text::-ms-clear, +.textbox .textbox-text::-ms-reveal { + display: none; +} +.textbox textarea.textbox-text { + white-space: pre-wrap; +} +.textbox .textbox-prompt { + font-size: 12px; + color: #aaa; +} +.textbox .textbox-bgicon { + background-position: 3px center; + padding-left: 21px; +} +.textbox .textbox-button, +.textbox .textbox-button:hover { + position: absolute; + top: 0; + padding: 0; + vertical-align: top; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.textbox .textbox-button-right, +.textbox .textbox-button-right:hover { + right: 0; + border-width: 0 0 0 1px; +} +.textbox .textbox-button-left, +.textbox .textbox-button-left:hover { + left: 0; + border-width: 0 1px 0 0; +} +.textbox .textbox-button-top, +.textbox .textbox-button-top:hover { + left: 0; + border-width: 0 0 1px 0; +} +.textbox .textbox-button-bottom, +.textbox .textbox-button-bottom:hover { + top: auto; + bottom: 0; + left: 0; + border-width: 1px 0 0 0; +} +.textbox-addon { + position: absolute; + top: 0; +} +.textbox-label { + display: inline-block; + width: 80px; + height: 22px; + line-height: 22px; + vertical-align: middle; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + margin: 0; + padding-right: 5px; +} +.textbox-label-after { + padding-left: 5px; + padding-right: 0; +} +.textbox-label-top { + display: block; + width: auto; + padding: 0; +} +.textbox-disabled, +.textbox-label-disabled { + opacity: 0.6; + filter: alpha(opacity=60); +} +.textbox-icon { + display: inline-block; + width: 18px; + height: 20px; + overflow: hidden; + vertical-align: top; + background-position: center center; + cursor: pointer; + opacity: 0.6; + filter: alpha(opacity=60); + text-decoration: none; + outline-style: none; +} +.textbox-icon-disabled, +.textbox-icon-readonly { + cursor: default; +} +.textbox-icon:hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.textbox-icon-disabled:hover { + opacity: 0.6; + filter: alpha(opacity=60); +} +.textbox-focused { + border-color: #c4c4c4; + -moz-box-shadow: 0 0 3px 0 #ddd; + -webkit-box-shadow: 0 0 3px 0 #ddd; + box-shadow: 0 0 3px 0 #ddd; +} +.textbox-invalid { + border-color: #ffa8a8; + background-color: #fff3f3; +} diff --git a/src/main/webapp/static/easyUI/themes/metro/tooltip.css b/src/main/webapp/static/easyUI/themes/metro/tooltip.css new file mode 100644 index 0000000000000000000000000000000000000000..b8f955c2b1abe1fedfd820d3646bec4cf8cb3133 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/metro/tooltip.css @@ -0,0 +1,103 @@ +.tooltip { + position: absolute; + display: none; + z-index: 9900000; + outline: none; + opacity: 1; + filter: alpha(opacity=100); + padding: 5px; + border-width: 1px; + border-style: solid; + border-radius: 5px; + -moz-border-radius: 0px 0px 0px 0px; + -webkit-border-radius: 0px 0px 0px 0px; + border-radius: 0px 0px 0px 0px; +} +.tooltip-content { + font-size: 12px; +} +.tooltip-arrow-outer, +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; + line-height: 0; + font-size: 0; + border-style: solid; + border-width: 6px; + border-color: transparent; + _border-color: tomato; + _filter: chroma(color=tomato); +} +.tooltip-arrow { + display: none \9; +} +.tooltip-right .tooltip-arrow-outer { + left: 0; + top: 50%; + margin: -6px 0 0 -13px; +} +.tooltip-right .tooltip-arrow { + left: 0; + top: 50%; + margin: -6px 0 0 -12px; +} +.tooltip-left .tooltip-arrow-outer { + right: 0; + top: 50%; + margin: -6px -13px 0 0; +} +.tooltip-left .tooltip-arrow { + right: 0; + top: 50%; + margin: -6px -12px 0 0; +} +.tooltip-top .tooltip-arrow-outer { + bottom: 0; + left: 50%; + margin: 0 0 -13px -6px; +} +.tooltip-top .tooltip-arrow { + bottom: 0; + left: 50%; + margin: 0 0 -12px -6px; +} +.tooltip-bottom .tooltip-arrow-outer { + top: 0; + left: 50%; + margin: -13px 0 0 -6px; +} +.tooltip-bottom .tooltip-arrow { + top: 0; + left: 50%; + margin: -12px 0 0 -6px; +} +.tooltip { + background-color: #fff; + border-color: #ddd; + color: #444; +} +.tooltip-right .tooltip-arrow-outer { + border-right-color: #ddd; +} +.tooltip-right .tooltip-arrow { + border-right-color: #fff; +} +.tooltip-left .tooltip-arrow-outer { + border-left-color: #ddd; +} +.tooltip-left .tooltip-arrow { + border-left-color: #fff; +} +.tooltip-top .tooltip-arrow-outer { + border-top-color: #ddd; +} +.tooltip-top .tooltip-arrow { + border-top-color: #fff; +} +.tooltip-bottom .tooltip-arrow-outer { + border-bottom-color: #ddd; +} +.tooltip-bottom .tooltip-arrow { + border-bottom-color: #fff; +} diff --git a/src/main/webapp/static/easyUI/themes/metro/tree.css b/src/main/webapp/static/easyUI/themes/metro/tree.css new file mode 100644 index 0000000000000000000000000000000000000000..52892a1362bfb5e07639a6be2d9729bf262c0762 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/metro/tree.css @@ -0,0 +1,161 @@ +.tree { + margin: 0; + padding: 0; + list-style-type: none; +} +.tree li { + white-space: nowrap; +} +.tree li ul { + list-style-type: none; + margin: 0; + padding: 0; +} +.tree-node { + height: 18px; + white-space: nowrap; + cursor: pointer; +} +.tree-hit { + cursor: pointer; +} +.tree-expanded, +.tree-collapsed, +.tree-folder, +.tree-file, +.tree-checkbox, +.tree-indent { + display: inline-block; + width: 16px; + height: 18px; + vertical-align: top; + overflow: hidden; +} +.tree-expanded { + background: url('images/tree_icons.png') no-repeat -18px 0px; +} +.tree-expanded-hover { + background: url('images/tree_icons.png') no-repeat -50px 0px; +} +.tree-collapsed { + background: url('images/tree_icons.png') no-repeat 0px 0px; +} +.tree-collapsed-hover { + background: url('images/tree_icons.png') no-repeat -32px 0px; +} +.tree-lines .tree-expanded, +.tree-lines .tree-root-first .tree-expanded { + background: url('images/tree_icons.png') no-repeat -144px 0; +} +.tree-lines .tree-collapsed, +.tree-lines .tree-root-first .tree-collapsed { + background: url('images/tree_icons.png') no-repeat -128px 0; +} +.tree-lines .tree-node-last .tree-expanded, +.tree-lines .tree-root-one .tree-expanded { + background: url('images/tree_icons.png') no-repeat -80px 0; +} +.tree-lines .tree-node-last .tree-collapsed, +.tree-lines .tree-root-one .tree-collapsed { + background: url('images/tree_icons.png') no-repeat -64px 0; +} +.tree-line { + background: url('images/tree_icons.png') no-repeat -176px 0; +} +.tree-join { + background: url('images/tree_icons.png') no-repeat -192px 0; +} +.tree-joinbottom { + background: url('images/tree_icons.png') no-repeat -160px 0; +} +.tree-folder { + background: url('images/tree_icons.png') no-repeat -208px 0; +} +.tree-folder-open { + background: url('images/tree_icons.png') no-repeat -224px 0; +} +.tree-file { + background: url('images/tree_icons.png') no-repeat -240px 0; +} +.tree-loading { + background: url('images/loading.gif') no-repeat center center; +} +.tree-checkbox0 { + background: url('images/tree_icons.png') no-repeat -208px -18px; +} +.tree-checkbox1 { + background: url('images/tree_icons.png') no-repeat -224px -18px; +} +.tree-checkbox2 { + background: url('images/tree_icons.png') no-repeat -240px -18px; +} +.tree-title { + font-size: 12px; + display: inline-block; + text-decoration: none; + vertical-align: top; + white-space: nowrap; + padding: 0 2px; + height: 18px; + line-height: 18px; +} +.tree-node-proxy { + font-size: 12px; + line-height: 20px; + padding: 0 2px 0 20px; + border-width: 1px; + border-style: solid; + z-index: 9900000; +} +.tree-dnd-icon { + display: inline-block; + position: absolute; + width: 16px; + height: 18px; + left: 2px; + top: 50%; + margin-top: -9px; +} +.tree-dnd-yes { + background: url('images/tree_icons.png') no-repeat -256px 0; +} +.tree-dnd-no { + background: url('images/tree_icons.png') no-repeat -256px -18px; +} +.tree-node-top { + border-top: 1px dotted red; +} +.tree-node-bottom { + border-bottom: 1px dotted red; +} +.tree-node-append .tree-title { + border: 1px dotted red; +} +.tree-editor { + border: 1px solid #ddd; + font-size: 12px; + line-height: 16px; + padding: 0 4px; + margin: 0; + width: 80px; + outline-style: none; + vertical-align: top; + position: absolute; + top: 0; +} +.tree-node-proxy { + background-color: #fff; + color: #444; + border-color: #ddd; +} +.tree-node-hover { + background: #E6E6E6; + color: #444; +} +.tree-node-selected { + background: #CCE6FF; + color: #000; +} +.tree-node-hidden { + display: none; +} diff --git a/src/main/webapp/static/easyUI/themes/metro/validatebox.css b/src/main/webapp/static/easyUI/themes/metro/validatebox.css new file mode 100644 index 0000000000000000000000000000000000000000..1fc3ad64e4f79ba1b3d4e715f3dd0cd8ae0ac3fc --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/metro/validatebox.css @@ -0,0 +1,5 @@ +.validatebox-invalid { + border-color: #ffa8a8; + background-color: #fff3f3; + color: #000; +} diff --git a/src/main/webapp/static/easyUI/themes/metro/window.css b/src/main/webapp/static/easyUI/themes/metro/window.css new file mode 100644 index 0000000000000000000000000000000000000000..7ec192ee6464bb2bf844c10c9866953d051ea3c1 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/metro/window.css @@ -0,0 +1,177 @@ +.window { + overflow: hidden; + padding: 5px; + border-width: 1px; + border-style: solid; +} +.window .window-header { + background: transparent; + padding: 0px 0px 6px 0px; +} +.window .window-body { + border-width: 1px; + border-style: solid; + border-top-width: 0px; +} +.window .window-body-noheader { + border-top-width: 1px; +} +.window .panel-body-nobottom { + border-bottom-width: 0; +} +.window .window-header .panel-icon, +.window .window-header .panel-tool { + top: 50%; + margin-top: -11px; +} +.window .window-header .panel-icon { + left: 1px; +} +.window .window-header .panel-tool { + right: 1px; +} +.window .window-header .panel-with-icon { + padding-left: 18px; +} +.window-proxy { + position: absolute; + overflow: hidden; +} +.window-proxy-mask { + position: absolute; + filter: alpha(opacity=5); + opacity: 0.05; +} +.window-mask { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + filter: alpha(opacity=40); + opacity: 0.40; + font-size: 1px; + overflow: hidden; +} +.window, +.window-shadow { + position: absolute; + -moz-border-radius: 0px 0px 0px 0px; + -webkit-border-radius: 0px 0px 0px 0px; + border-radius: 0px 0px 0px 0px; +} +.window-shadow { + background: #eee; + -moz-box-shadow: 2px 2px 3px #ededed; + -webkit-box-shadow: 2px 2px 3px #ededed; + box-shadow: 2px 2px 3px #ededed; + filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); +} +.window, +.window .window-body { + border-color: #ddd; +} +.window { + background-color: #ffffff; +} +.window-proxy { + border: 1px dashed #ddd; +} +.window-proxy-mask, +.window-mask { + background: #eee; +} +.window .panel-footer { + border: 1px solid #ddd; + position: relative; + top: -1px; +} +.window-thinborder { + padding: 0; +} +.window-thinborder .window-header { + padding: 5px 5px 6px 5px; +} +.window-thinborder .window-body { + border-width: 0px; +} +.window-thinborder .window-header .panel-icon, +.window-thinborder .window-header .panel-tool { + margin-top: -9px; + margin-left: 5px; + margin-right: 5px; +} +.window-noborder { + border: 0; +} +.window.panel-hleft .window-header { + padding: 0 6px 0 0; +} +.window.panel-hright .window-header { + padding: 0 0 0 6px; +} +.window.panel-hleft>.panel-header .panel-title { + top: auto; + left: 16px; +} +.window.panel-hright>.panel-header .panel-title { + top: auto; + right: 16px; +} +.window.panel-hleft>.panel-header .panel-title-up, +.window.panel-hright>.panel-header .panel-title-up { + bottom: 0; +} +.window.panel-hleft .window-body { + border-width: 1px 1px 1px 0; +} +.window.panel-hright .window-body { + border-width: 1px 0 1px 1px; +} +.window.panel-hleft .window-header .panel-icon { + top: 1px; + margin-top: 0; + left: 0; +} +.window.panel-hright .window-header .panel-icon { + top: 1px; + margin-top: 0; + left: auto; + right: 1px; +} +.window.panel-hleft .window-header .panel-tool, +.window.panel-hright .window-header .panel-tool { + margin-top: 0; + top: auto; + bottom: 1px; + right: auto; + margin-right: 0; + left: 50%; + margin-left: -11px; +} +.window.panel-hright .window-header .panel-tool { + left: auto; + right: 1px; +} +.window-thinborder.panel-hleft .window-header { + padding: 5px 6px 5px 5px; +} +.window-thinborder.panel-hright .window-header { + padding: 5px 5px 5px 6px; +} +.window-thinborder.panel-hleft>.panel-header .panel-title { + left: 21px; +} +.window-thinborder.panel-hleft>.panel-header .panel-title-up, +.window-thinborder.panel-hright>.panel-header .panel-title-up { + bottom: 5px; +} +.window-thinborder.panel-hleft .window-header .panel-icon, +.window-thinborder.panel-hright .window-header .panel-icon { + margin-top: 5px; +} +.window-thinborder.panel-hleft .window-header .panel-tool, +.window-thinborder.panel-hright .window-header .panel-tool { + left: 16px; + bottom: 5px; +} diff --git a/src/main/webapp/static/easyUI/themes/mobile.css b/src/main/webapp/static/easyUI/themes/mobile.css new file mode 100644 index 0000000000000000000000000000000000000000..b9f2f586b09ec25a33ef9f170c61d34dabc0d392 --- /dev/null +++ b/src/main/webapp/static/easyUI/themes/mobile.css @@ -0,0 +1,380 @@ +.m-toolbar{ + position: relative; + text-align: center; + min-height: 32px; +} +.m-toolbar .m-title{ + line-height: 32px; + font-size: 16px; + font-weight: bold; + text-align: center; +} +.m-left{ + position: absolute; + height: 100%; + vertical-align: middle; + top:0; + left:0; + z-index: 1; +} +.m-right{ + position: absolute; + height: 100%; + vertical-align: middle; + top:0; + right:0; + z-index: 1; +} +.m-left>.l-btn,.m-right>.l-btn, +.m-left>.switchbutton,.m-right>.switchbutton{ + position: relative; + vertical-align: top; + top: 50%; + margin-top: -13px; +} +.m-back::before,.m-next::after{ + position: relative; + display: inline-block; + box-sizing: border-box; + vertical-align: top; + border-style: solid; + -webkit-transform:rotate(45deg); + transform:rotate(45deg); + width: 10px; + height: 10px; + top: 7px; + content: ''; +} +.m-back::before{ + border-width: 0 0 1px 1px; + margin-left: 6px; + margin-right: -6px; +} +.m-next::after{ + border-width: 1px 1px 0 0; + margin-left: -6px; + margin-right: 6px; +} +.m-buttongroup{ + display: inline-block; + margin: 0; + padding: 0; + overflow: hidden; + vertical-align: middle; +} +.m-buttongroup .l-btn{ + float: left; + margin-left: -1px; +} +.m-buttongroup .l-btn:last-child::after{ + content: ''; + clear: both; +} +.m-buttongroup .l-btn:not(:first-child):not(:last-child){ + border-radius: 0; +} +.m-buttongroup .l-btn:first-child{ + border-top-right-radius: 0; + border-bottom-right-radius: 0; + margin-left: 0; +} +.m-buttongroup .l-btn:last-child{ + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} +.m-buttongroup-justified{ + display: table; + table-layout: fixed; +} +.m-buttongroup-justified .l-btn{ + float: none; + display: table-cell; +} +.m-badge:not(.l-btn), +.l-btn.m-badge::after{ + display: inline-block; + min-width: 10px; + line-height: 1; + font-size: 12px; + text-align: center; + white-space: nowrap; + border-radius: 10px; + padding: 2px 4px; + border-style: solid; + border-width: 0px; + background-color: #d9534f; + color: #fff; + z-index: 99999; +} +.l-btn.m-badge::after, +.l-btn .m-badge{ + position: absolute; + top: -10px; + right: -10px; +} +.tabs-inner .m-badge{ + position: absolute; + top: 1px; + right: -10px; +} +.tabs-inner>.tabs-title>.m-badge{ + top: 0; + right: 0; +} +.tabs-header-bottom .tabs-inner>.tabs-title>.m-badge{ + top: auto; + bottom: 0; + right: 0; +} +.panel-footer .l-btn .l-btn-icon-top .m-badge, +.panel-footer .l-btn .l-btn-icon-bottom .m-badge{ + top: 0; + right: -10px; +} +.l-btn.m-badge::after{ + content: attr(data-badge); +} +.l-btn,.l-btn-left{ + overflow: visible; + position: relative; +} + +.m-in{ + -webkit-animation-timing-function: ease-out; + -webkit-animation-duration: 250ms; +} +.m-out{ + -webkit-animation-timing-function: ease-in; + -webkit-animation-duration: 250ms; +} +.m-slide-left.m-in{ + -webkit-animation-name: slideLeftIn; +} +.m-slide-left.m-out{ + -webkit-animation-name: slideLeftOut; +} +.m-slide-right.m-in{ + -webkit-animation-name: slideRightIn; +} +.m-slide-right.m-out{ + -webkit-animation-name: slideRightOut; +} +.m-slide-up.m-in{ + -webkit-animation-name: slideUpIn; +} +.m-slide-up.m-out{ + -webkit-animation-name: slideUpOut; +} +.m-slide-down.m-in{ + -webkit-animation-name: slideDownIn; +} +.m-slide-down.m-out{ + -webkit-animation-name: slideDownOut; +} + +@-webkit-keyframes slideLeftIn{ + from {-webkit-transform: translateX(100%);} + to {-webkit-transform: translateX(0);} +} +@-webkit-keyframes slideLeftOut{ + from {-webkit-transform: translateX(0);} + to {-webkit-transform: translateX(-100%);} +} +@-webkit-keyframes slideRightIn{ + from {-webkit-transform: translateX(-100%);} + to {-webkit-transform: translateX(0);} +} +@-webkit-keyframes slideRightOut{ + from {-webkit-transform: translateX(0);} + to {-webkit-transform: translateX(100%);} +} +@-webkit-keyframes slideUpIn{ + from {-webkit-transform: translateY(100%);} + to {-webkit-transform: translateY(0);} +} +@-webkit-keyframes slideUpOut{ + from {-webkit-transform: translateY(0);} + to {-webkit-transform: translateY(-100%);} +} +@-webkit-keyframes slideDownIn{ + from {-webkit-transform: translateY(-100%);} + to {-webkit-transform: translateY(0);} +} +@-webkit-keyframes slideDownOut{ + from {-webkit-transform: translateY(0);} + to {-webkit-transform: translateY(100%);} +} + +.m-fade.m-in{ + -webkit-animation-name: fadeIn; +} +.m-fade.m-out{ + -webkit-animation-name: fadeOut; +} + +@-webkit-keyframes fadeIn{ + from {opacity: 0;} + to {opacity: 1} +} +@-webkit-keyframes fadeOut{ + from {opacity: 1;} + to {opacity: 0;} +} + +.m-pop.m-in{ + -webkit-animation-name: popIn; +} +.m-pop.m-out{ + -webkit-animation-name: popOut; +} +@-webkit-keyframes popIn{ + from { + opacity: 0; + -webkit-transform: scale(.2); + } + to { + opacity: 1; + -webkit-transform: scale(1); + } +} +@-webkit-keyframes popOut{ + from { + opacity: 1; + -webkit-transform: scale(1); + } + to { + opacity: 0; + -webkit-transform: scale(0); + } +} + +.navpanel{ + position: absolute; +} + +.textbox .textbox-text{ + padding: 8px 4px; +} +.calendar-header,.calendar-title{ + height: 30px; +} +.calendar-title span{ + height: 26px; + line-height: 26px +} +.datebox-button{ + height: 24px; +} +.datebox-button a{ + line-height: 24px; + display1: inline-block; +} +.tree-node{ + height:28px; + padding:5px 0; + box-sizing: border-box; +} + +.panel-title{ + height: 26px; + line-height: 26px; +} +.window{ + padding: 5px 0 0 0; +} +.window-shadow{ + -moz-box-shadow: 0 0 30px 0 #D3D3D3; + -webkit-box-shadow: 0 0 30px 0 #D3D3D3; + box-shadow: 0 0 30px 0 #D3D3D3; +} +.window-header .panel-title{ + height: 26px; + line-height: 26px; + text-align: center; +} +.window-header .panel-tool{ + display: none; +} +.window .window-body{ + border: 0; +} +.dialog-button{ + border-color: transparent; + overflow: hidden; +} +.dialog-button .l-btn{ + margin: 0; +} + +.tabs-justified, +.tabs-justified .l-btn, +.tabs-justified li a.tabs-inner, +.tabs-justified li.tabs-selected a.tabs-inner, +.tabs-header-bottom .tabs-justified li.tabs-selected a.tabs-inner, +.tabs-header-bottom .tabs-justified li a.tabs-inner{ + -moz-border-radius:0; + -webkit-border-radius:0; + border-radius:0; +} + +.datagrid-row,.datagrid-header-row{ + height: 35px; +} +.datalist .datagrid-group-title, +.m-list .m-list-group{ + padding: 0 10px; +} +.datalist .datagrid-cell, +.m-list li{ + padding: 10px; +} +.m-list li .m-right{ + right: 10px; +} +.datalist .datalist-link, +.m-list li>a{ + margin: -10px; + padding: 10px; + padding-right: 24px; +} +.m-list li>a .m-right{ + right: 24px; +} +.datalist .datalist-link::after, +.m-list li>a::after{ + right: 12px; +} + +.spinner-arrow-up,.spinner-arrow-down{ + position: relative; + display: inline-block; + width: 50%; + height: 100%; + background: none; + float: right; +} +.spinner-arrow-down{ + float: left; +} +.spinner-arrow-up::after, +.spinner-arrow-down::after{ + position: absolute; + display: inline-block; + box-sizing: border-box; + vertical-align: top; + border-style: solid; + border-width: 2px 2px 0 0; + -webkit-transform:rotate(-45deg); + transform:rotate(-45deg); + width: 10px; + height: 10px; + left: 50%; + top: 50%; + margin-left: -5px; + margin-top: -3px; + content: ''; +} +.spinner-arrow-down::after{ + border-width: 0 0 2px 2px; + margin-top: -8px; +} \ No newline at end of file diff --git a/src/main/webapp/static/echarts/echarts.js b/src/main/webapp/static/echarts/echarts.js new file mode 100644 index 0000000000000000000000000000000000000000..6a43247ad65dbb699458d3bcfd8b8d3abbf771b4 --- /dev/null +++ b/src/main/webapp/static/echarts/echarts.js @@ -0,0 +1,75108 @@ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else if(typeof exports === 'object') + exports["echarts"] = factory(); + else + root["echarts"] = factory(); +})(this, function() { +return /******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; + +/******/ // The require function +/******/ function __webpack_require__(moduleId) { + +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) +/******/ return installedModules[moduleId].exports; + +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ exports: {}, +/******/ id: moduleId, +/******/ loaded: false +/******/ }; + +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); + +/******/ // Flag the module as loaded +/******/ module.loaded = true; + +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } + + +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; + +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; + +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; + +/******/ // Load entry module and return exports +/******/ return __webpack_require__(0); +/******/ }) +/************************************************************************/ +/******/ ([ +/* 0 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * Export echarts as CommonJS module + */ + module.exports = __webpack_require__(1); + + // Import all charts and components + __webpack_require__(113); + __webpack_require__(139); + __webpack_require__(146); + __webpack_require__(155); + __webpack_require__(159); + + __webpack_require__(169); + __webpack_require__(193); + __webpack_require__(205); + __webpack_require__(226); + __webpack_require__(230); + __webpack_require__(234); + __webpack_require__(251); + __webpack_require__(257); + __webpack_require__(264); + __webpack_require__(270); + __webpack_require__(274); + __webpack_require__(283); + __webpack_require__(287); + __webpack_require__(290); + __webpack_require__(313); + + __webpack_require__(319); + __webpack_require__(320); + __webpack_require__(321); + __webpack_require__(327); + __webpack_require__(298); + __webpack_require__(331); + __webpack_require__(344); + __webpack_require__(235); + __webpack_require__(291); + __webpack_require__(347); + __webpack_require__(358); + + __webpack_require__(362); + + __webpack_require__(363); + __webpack_require__(376); + + __webpack_require__(391); + __webpack_require__(397); + __webpack_require__(400); + + __webpack_require__(403); + __webpack_require__(412); + + __webpack_require__(424); + + +/***/ }, +/* 1 */ +/***/ function(module, exports, __webpack_require__) { + + // Enable DEV mode when using source code without build. which has no __DEV__ variable + // In build process 'typeof __DEV__' will be replace with 'boolean' + // So this code will be removed or disabled anyway after built. + if (false) { + // In browser + if (typeof window !== 'undefined') { + window.__DEV__ = true; + } + // In node + else if (typeof global !== 'undefined') { + global.__DEV__ = true; + } + } + + /*! + * ECharts, a javascript interactive chart library. + * + * Copyright (c) 2015, Baidu Inc. + * All rights reserved. + * + * LICENSE + * https://github.com/ecomfe/echarts/blob/master/LICENSE.txt + */ + + /** + * @module echarts + */ + + + var env = __webpack_require__(2); + + var GlobalModel = __webpack_require__(3); + var ExtensionAPI = __webpack_require__(75); + var CoordinateSystemManager = __webpack_require__(76); + var OptionManager = __webpack_require__(77); + + var ComponentModel = __webpack_require__(69); + var SeriesModel = __webpack_require__(78); + + var ComponentView = __webpack_require__(79); + var ChartView = __webpack_require__(80); + var graphic = __webpack_require__(18); + var modelUtil = __webpack_require__(5); + var throttle = __webpack_require__(81); + + var zrender = __webpack_require__(82); + var zrUtil = __webpack_require__(4); + var colorTool = __webpack_require__(31); + var Eventful = __webpack_require__(25); + var timsort = __webpack_require__(86); + + var each = zrUtil.each; + var parseClassType = ComponentModel.parseClassType; + + var PRIORITY_PROCESSOR_FILTER = 1000; + var PRIORITY_PROCESSOR_STATISTIC = 5000; + + + var PRIORITY_VISUAL_LAYOUT = 1000; + var PRIORITY_VISUAL_GLOBAL = 2000; + var PRIORITY_VISUAL_CHART = 3000; + var PRIORITY_VISUAL_COMPONENT = 4000; + // FIXME + // necessary? + var PRIORITY_VISUAL_BRUSH = 5000; + + // Main process have three entries: `setOption`, `dispatchAction` and `resize`, + // where they must not be invoked nestedly, except the only case: invoke + // dispatchAction with updateMethod "none" in main process. + // This flag is used to carry out this rule. + // All events will be triggered out side main process (i.e. when !this[IN_MAIN_PROCESS]). + var IN_MAIN_PROCESS = '__flagInMainProcess'; + var HAS_GRADIENT_OR_PATTERN_BG = '__hasGradientOrPatternBg'; + var OPTION_UPDATED = '__optionUpdated'; + var ACTION_REG = /^[a-zA-Z0-9_]+$/; + + function createRegisterEventWithLowercaseName(method) { + return function (eventName, handler, context) { + // Event name is all lowercase + eventName = eventName && eventName.toLowerCase(); + Eventful.prototype[method].call(this, eventName, handler, context); + }; + } + + /** + * @module echarts~MessageCenter + */ + function MessageCenter() { + Eventful.call(this); + } + MessageCenter.prototype.on = createRegisterEventWithLowercaseName('on'); + MessageCenter.prototype.off = createRegisterEventWithLowercaseName('off'); + MessageCenter.prototype.one = createRegisterEventWithLowercaseName('one'); + zrUtil.mixin(MessageCenter, Eventful); + + /** + * @module echarts~ECharts + */ + function ECharts(dom, theme, opts) { + opts = opts || {}; + + // Get theme by name + if (typeof theme === 'string') { + theme = themeStorage[theme]; + } + + /** + * @type {string} + */ + this.id; + /** + * Group id + * @type {string} + */ + this.group; + /** + * @type {HTMLDomElement} + * @private + */ + this._dom = dom; + /** + * @type {module:zrender/ZRender} + * @private + */ + var zr = this._zr = zrender.init(dom, { + renderer: opts.renderer || 'canvas', + devicePixelRatio: opts.devicePixelRatio, + width: opts.width, + height: opts.height + }); + + /** + * Expect 60 pfs. + * @type {Function} + * @private + */ + this._throttledZrFlush = throttle.throttle(zrUtil.bind(zr.flush, zr), 17); + + /** + * @type {Object} + * @private + */ + this._theme = zrUtil.clone(theme); + + /** + * @type {Array.} + * @private + */ + this._chartsViews = []; + + /** + * @type {Object.} + * @private + */ + this._chartsMap = {}; + + /** + * @type {Array.} + * @private + */ + this._componentsViews = []; + + /** + * @type {Object.} + * @private + */ + this._componentsMap = {}; + + /** + * @type {module:echarts/CoordinateSystem} + * @private + */ + this._coordSysMgr = new CoordinateSystemManager(); + + /** + * @type {module:echarts/ExtensionAPI} + * @private + */ + this._api = createExtensionAPI(this); + + Eventful.call(this); + + /** + * @type {module:echarts~MessageCenter} + * @private + */ + this._messageCenter = new MessageCenter(); + + // Init mouse events + this._initEvents(); + + // In case some people write `window.onresize = chart.resize` + this.resize = zrUtil.bind(this.resize, this); + + // Can't dispatch action during rendering procedure + this._pendingActions = []; + // Sort on demand + function prioritySortFunc(a, b) { + return a.prio - b.prio; + } + timsort(visualFuncs, prioritySortFunc); + timsort(dataProcessorFuncs, prioritySortFunc); + + zr.animation.on('frame', this._onframe, this); + + // ECharts instance can be used as value. + zrUtil.setAsPrimitive(this); + } + + var echartsProto = ECharts.prototype; + + echartsProto._onframe = function () { + // Lazy update + if (this[OPTION_UPDATED]) { + var silent = this[OPTION_UPDATED].silent; + + this[IN_MAIN_PROCESS] = true; + + updateMethods.prepareAndUpdate.call(this); + + this[IN_MAIN_PROCESS] = false; + + this[OPTION_UPDATED] = false; + + flushPendingActions.call(this, silent); + + triggerUpdatedEvent.call(this, silent); + } + }; + /** + * @return {HTMLDomElement} + */ + echartsProto.getDom = function () { + return this._dom; + }; + + /** + * @return {module:zrender~ZRender} + */ + echartsProto.getZr = function () { + return this._zr; + }; + + /** + * Usage: + * chart.setOption(option, notMerge, lazyUpdate); + * chart.setOption(option, { + * notMerge: ..., + * lazyUpdate: ..., + * silent: ... + * }); + * + * @param {Object} option + * @param {Object|boolean} [opts] opts or notMerge. + * @param {boolean} [opts.notMerge=false] + * @param {boolean} [opts.lazyUpdate=false] Useful when setOption frequently. + */ + echartsProto.setOption = function (option, notMerge, lazyUpdate) { + if (true) { + zrUtil.assert(!this[IN_MAIN_PROCESS], '`setOption` should not be called during main process.'); + } + + var silent; + if (zrUtil.isObject(notMerge)) { + lazyUpdate = notMerge.lazyUpdate; + silent = notMerge.silent; + notMerge = notMerge.notMerge; + } + + this[IN_MAIN_PROCESS] = true; + + if (!this._model || notMerge) { + var optionManager = new OptionManager(this._api); + var theme = this._theme; + var ecModel = this._model = new GlobalModel(null, null, theme, optionManager); + ecModel.init(null, null, theme, optionManager); + } + + this._model.setOption(option, optionPreprocessorFuncs); + + if (lazyUpdate) { + this[OPTION_UPDATED] = {silent: silent}; + this[IN_MAIN_PROCESS] = false; + } + else { + updateMethods.prepareAndUpdate.call(this); + // Ensure zr refresh sychronously, and then pixel in canvas can be + // fetched after `setOption`. + this._zr.flush(); + + this[OPTION_UPDATED] = false; + this[IN_MAIN_PROCESS] = false; + + flushPendingActions.call(this, silent); + triggerUpdatedEvent.call(this, silent); + } + }; + + /** + * @DEPRECATED + */ + echartsProto.setTheme = function () { + console.log('ECharts#setTheme() is DEPRECATED in ECharts 3.0'); + }; + + /** + * @return {module:echarts/model/Global} + */ + echartsProto.getModel = function () { + return this._model; + }; + + /** + * @return {Object} + */ + echartsProto.getOption = function () { + return this._model && this._model.getOption(); + }; + + /** + * @return {number} + */ + echartsProto.getWidth = function () { + return this._zr.getWidth(); + }; + + /** + * @return {number} + */ + echartsProto.getHeight = function () { + return this._zr.getHeight(); + }; + + /** + * @return {number} + */ + echartsProto.getDevicePixelRatio = function () { + return this._zr.painter.dpr || window.devicePixelRatio || 1; + }; + + /** + * Get canvas which has all thing rendered + * @param {Object} opts + * @param {string} [opts.backgroundColor] + */ + echartsProto.getRenderedCanvas = function (opts) { + if (!env.canvasSupported) { + return; + } + opts = opts || {}; + opts.pixelRatio = opts.pixelRatio || 1; + opts.backgroundColor = opts.backgroundColor + || this._model.get('backgroundColor'); + var zr = this._zr; + var list = zr.storage.getDisplayList(); + // Stop animations + zrUtil.each(list, function (el) { + el.stopAnimation(true); + }); + return zr.painter.getRenderedCanvas(opts); + }; + /** + * @return {string} + * @param {Object} opts + * @param {string} [opts.type='png'] + * @param {string} [opts.pixelRatio=1] + * @param {string} [opts.backgroundColor] + * @param {string} [opts.excludeComponents] + */ + echartsProto.getDataURL = function (opts) { + opts = opts || {}; + var excludeComponents = opts.excludeComponents; + var ecModel = this._model; + var excludesComponentViews = []; + var self = this; + + each(excludeComponents, function (componentType) { + ecModel.eachComponent({ + mainType: componentType + }, function (component) { + var view = self._componentsMap[component.__viewId]; + if (!view.group.ignore) { + excludesComponentViews.push(view); + view.group.ignore = true; + } + }); + }); + + var url = this.getRenderedCanvas(opts).toDataURL( + 'image/' + (opts && opts.type || 'png') + ); + + each(excludesComponentViews, function (view) { + view.group.ignore = false; + }); + return url; + }; + + + /** + * @return {string} + * @param {Object} opts + * @param {string} [opts.type='png'] + * @param {string} [opts.pixelRatio=1] + * @param {string} [opts.backgroundColor] + */ + echartsProto.getConnectedDataURL = function (opts) { + if (!env.canvasSupported) { + return; + } + var groupId = this.group; + var mathMin = Math.min; + var mathMax = Math.max; + var MAX_NUMBER = Infinity; + if (connectedGroups[groupId]) { + var left = MAX_NUMBER; + var top = MAX_NUMBER; + var right = -MAX_NUMBER; + var bottom = -MAX_NUMBER; + var canvasList = []; + var dpr = (opts && opts.pixelRatio) || 1; + + zrUtil.each(instances, function (chart, id) { + if (chart.group === groupId) { + var canvas = chart.getRenderedCanvas( + zrUtil.clone(opts) + ); + var boundingRect = chart.getDom().getBoundingClientRect(); + left = mathMin(boundingRect.left, left); + top = mathMin(boundingRect.top, top); + right = mathMax(boundingRect.right, right); + bottom = mathMax(boundingRect.bottom, bottom); + canvasList.push({ + dom: canvas, + left: boundingRect.left, + top: boundingRect.top + }); + } + }); + + left *= dpr; + top *= dpr; + right *= dpr; + bottom *= dpr; + var width = right - left; + var height = bottom - top; + var targetCanvas = zrUtil.createCanvas(); + targetCanvas.width = width; + targetCanvas.height = height; + var zr = zrender.init(targetCanvas); + + each(canvasList, function (item) { + var img = new graphic.Image({ + style: { + x: item.left * dpr - left, + y: item.top * dpr - top, + image: item.dom + } + }); + zr.add(img); + }); + zr.refreshImmediately(); + + return targetCanvas.toDataURL('image/' + (opts && opts.type || 'png')); + } + else { + return this.getDataURL(opts); + } + }; + + /** + * Convert from logical coordinate system to pixel coordinate system. + * See CoordinateSystem#convertToPixel. + * @param {string|Object} finder + * If string, e.g., 'geo', means {geoIndex: 0}. + * If Object, could contain some of these properties below: + * { + * seriesIndex / seriesId / seriesName, + * geoIndex / geoId, geoName, + * bmapIndex / bmapId / bmapName, + * xAxisIndex / xAxisId / xAxisName, + * yAxisIndex / yAxisId / yAxisName, + * gridIndex / gridId / gridName, + * ... (can be extended) + * } + * @param {Array|number} value + * @return {Array|number} result + */ + echartsProto.convertToPixel = zrUtil.curry(doConvertPixel, 'convertToPixel'); + + /** + * Convert from pixel coordinate system to logical coordinate system. + * See CoordinateSystem#convertFromPixel. + * @param {string|Object} finder + * If string, e.g., 'geo', means {geoIndex: 0}. + * If Object, could contain some of these properties below: + * { + * seriesIndex / seriesId / seriesName, + * geoIndex / geoId / geoName, + * bmapIndex / bmapId / bmapName, + * xAxisIndex / xAxisId / xAxisName, + * yAxisIndex / yAxisId / yAxisName + * gridIndex / gridId / gridName, + * ... (can be extended) + * } + * @param {Array|number} value + * @return {Array|number} result + */ + echartsProto.convertFromPixel = zrUtil.curry(doConvertPixel, 'convertFromPixel'); + + function doConvertPixel(methodName, finder, value) { + var ecModel = this._model; + var coordSysList = this._coordSysMgr.getCoordinateSystems(); + var result; + + finder = modelUtil.parseFinder(ecModel, finder); + + for (var i = 0; i < coordSysList.length; i++) { + var coordSys = coordSysList[i]; + if (coordSys[methodName] + && (result = coordSys[methodName](ecModel, finder, value)) != null + ) { + return result; + } + } + + if (true) { + console.warn( + 'No coordinate system that supports ' + methodName + ' found by the given finder.' + ); + } + } + + /** + * Is the specified coordinate systems or components contain the given pixel point. + * @param {string|Object} finder + * If string, e.g., 'geo', means {geoIndex: 0}. + * If Object, could contain some of these properties below: + * { + * seriesIndex / seriesId / seriesName, + * geoIndex / geoId / geoName, + * bmapIndex / bmapId / bmapName, + * xAxisIndex / xAxisId / xAxisName, + * yAxisIndex / yAxisId / yAxisName, + * gridIndex / gridId / gridName, + * ... (can be extended) + * } + * @param {Array|number} value + * @return {boolean} result + */ + echartsProto.containPixel = function (finder, value) { + var ecModel = this._model; + var result; + + finder = modelUtil.parseFinder(ecModel, finder); + + zrUtil.each(finder, function (models, key) { + key.indexOf('Models') >= 0 && zrUtil.each(models, function (model) { + var coordSys = model.coordinateSystem; + if (coordSys && coordSys.containPoint) { + result |= !!coordSys.containPoint(value); + } + else if (key === 'seriesModels') { + var view = this._chartsMap[model.__viewId]; + if (view && view.containPoint) { + result |= view.containPoint(value, model); + } + else { + if (true) { + console.warn(key + ': ' + (view + ? 'The found component do not support containPoint.' + : 'No view mapping to the found component.' + )); + } + } + } + else { + if (true) { + console.warn(key + ': containPoint is not supported'); + } + } + }, this); + }, this); + + return !!result; + }; + + /** + * Get visual from series or data. + * @param {string|Object} finder + * If string, e.g., 'series', means {seriesIndex: 0}. + * If Object, could contain some of these properties below: + * { + * seriesIndex / seriesId / seriesName, + * dataIndex / dataIndexInside + * } + * If dataIndex is not specified, series visual will be fetched, + * but not data item visual. + * If all of seriesIndex, seriesId, seriesName are not specified, + * visual will be fetched from first series. + * @param {string} visualType 'color', 'symbol', 'symbolSize' + */ + echartsProto.getVisual = function (finder, visualType) { + var ecModel = this._model; + + finder = modelUtil.parseFinder(ecModel, finder, {defaultMainType: 'series'}); + + var seriesModel = finder.seriesModel; + + if (true) { + if (!seriesModel) { + console.warn('There is no specified seires model'); + } + } + + var data = seriesModel.getData(); + + var dataIndexInside = finder.hasOwnProperty('dataIndexInside') + ? finder.dataIndexInside + : finder.hasOwnProperty('dataIndex') + ? data.indexOfRawIndex(finder.dataIndex) + : null; + + return dataIndexInside != null + ? data.getItemVisual(dataIndexInside, visualType) + : data.getVisual(visualType); + }; + + /** + * Get view of corresponding component model + * @param {module:echarts/model/Component} componentModel + * @return {module:echarts/view/Component} + */ + echartsProto.getViewOfComponentModel = function (componentModel) { + return this._componentsMap[componentModel.__viewId]; + }; + + /** + * Get view of corresponding series model + * @param {module:echarts/model/Series} seriesModel + * @return {module:echarts/view/Chart} + */ + echartsProto.getViewOfSeriesModel = function (seriesModel) { + return this._chartsMap[seriesModel.__viewId]; + }; + + + var updateMethods = { + + /** + * @param {Object} payload + * @private + */ + update: function (payload) { + // console.profile && console.profile('update'); + + var ecModel = this._model; + var api = this._api; + var coordSysMgr = this._coordSysMgr; + var zr = this._zr; + // update before setOption + if (!ecModel) { + return; + } + + // Fixme First time update ? + ecModel.restoreData(); + + // TODO + // Save total ecModel here for undo/redo (after restoring data and before processing data). + // Undo (restoration of total ecModel) can be carried out in 'action' or outside API call. + + // Create new coordinate system each update + // In LineView may save the old coordinate system and use it to get the orignal point + coordSysMgr.create(this._model, this._api); + + processData.call(this, ecModel, api); + + stackSeriesData.call(this, ecModel); + + coordSysMgr.update(ecModel, api); + + doVisualEncoding.call(this, ecModel, payload); + + doRender.call(this, ecModel, payload); + + // Set background + var backgroundColor = ecModel.get('backgroundColor') || 'transparent'; + + var painter = zr.painter; + // TODO all use clearColor ? + if (painter.isSingleCanvas && painter.isSingleCanvas()) { + zr.configLayer(0, { + clearColor: backgroundColor + }); + } + else { + // In IE8 + if (!env.canvasSupported) { + var colorArr = colorTool.parse(backgroundColor); + backgroundColor = colorTool.stringify(colorArr, 'rgb'); + if (colorArr[3] === 0) { + backgroundColor = 'transparent'; + } + } + if (backgroundColor.colorStops || backgroundColor.image) { + // Gradient background + // FIXME Fixed layer? + zr.configLayer(0, { + clearColor: backgroundColor + }); + this[HAS_GRADIENT_OR_PATTERN_BG] = true; + + this._dom.style.background = 'transparent'; + } + else { + if (this[HAS_GRADIENT_OR_PATTERN_BG]) { + zr.configLayer(0, { + clearColor: null + }); + } + this[HAS_GRADIENT_OR_PATTERN_BG] = false; + + this._dom.style.background = backgroundColor; + } + } + + each(postUpdateFuncs, function (func) { + func(ecModel, api); + }); + + // console.profile && console.profileEnd('update'); + }, + + /** + * @param {Object} payload + * @private + */ + updateView: function (payload) { + var ecModel = this._model; + + // update before setOption + if (!ecModel) { + return; + } + + ecModel.eachSeries(function (seriesModel) { + seriesModel.getData().clearAllVisual(); + }); + + doVisualEncoding.call(this, ecModel, payload); + + invokeUpdateMethod.call(this, 'updateView', ecModel, payload); + }, + + /** + * @param {Object} payload + * @private + */ + updateVisual: function (payload) { + var ecModel = this._model; + + // update before setOption + if (!ecModel) { + return; + } + + ecModel.eachSeries(function (seriesModel) { + seriesModel.getData().clearAllVisual(); + }); + + doVisualEncoding.call(this, ecModel, payload, true); + + invokeUpdateMethod.call(this, 'updateVisual', ecModel, payload); + }, + + /** + * @param {Object} payload + * @private + */ + updateLayout: function (payload) { + var ecModel = this._model; + + // update before setOption + if (!ecModel) { + return; + } + + doLayout.call(this, ecModel, payload); + + invokeUpdateMethod.call(this, 'updateLayout', ecModel, payload); + }, + + /** + * @param {Object} payload + * @private + */ + prepareAndUpdate: function (payload) { + var ecModel = this._model; + + prepareView.call(this, 'component', ecModel); + + prepareView.call(this, 'chart', ecModel); + + updateMethods.update.call(this, payload); + } + }; + + /** + * @private + */ + function updateDirectly(ecIns, method, payload, mainType, subType) { + var ecModel = ecIns._model; + + // broadcast + if (!mainType) { + each(ecIns._componentsViews.concat(ecIns._chartsViews), callView); + return; + } + + var query = {}; + query[mainType + 'Id'] = payload[mainType + 'Id']; + query[mainType + 'Index'] = payload[mainType + 'Index']; + query[mainType + 'Name'] = payload[mainType + 'Name']; + + var condition = {mainType: mainType, query: query}; + subType && (condition.subType = subType); // subType may be '' by parseClassType; + + // If dispatchAction before setOption, do nothing. + ecModel && ecModel.eachComponent(condition, function (model, index) { + callView(ecIns[ + mainType === 'series' ? '_chartsMap' : '_componentsMap' + ][model.__viewId]); + }, ecIns); + + function callView(view) { + view && view.__alive && view[method] && view[method]( + view.__model, ecModel, ecIns._api, payload + ); + } + } + + /** + * Resize the chart + * @param {Object} opts + * @param {number} [opts.width] Can be 'auto' (the same as null/undefined) + * @param {number} [opts.height] Can be 'auto' (the same as null/undefined) + * @param {boolean} [opts.silent=false] + */ + echartsProto.resize = function (opts) { + if (true) { + zrUtil.assert(!this[IN_MAIN_PROCESS], '`resize` should not be called during main process.'); + } + + this[IN_MAIN_PROCESS] = true; + + this._zr.resize(opts); + + var optionChanged = this._model && this._model.resetOption('media'); + var updateMethod = optionChanged ? 'prepareAndUpdate' : 'update'; + + updateMethods[updateMethod].call(this); + + // Resize loading effect + this._loadingFX && this._loadingFX.resize(); + + this[IN_MAIN_PROCESS] = false; + + var silent = opts && opts.silent; + + flushPendingActions.call(this, silent); + + triggerUpdatedEvent.call(this, silent); + }; + + /** + * Show loading effect + * @param {string} [name='default'] + * @param {Object} [cfg] + */ + echartsProto.showLoading = function (name, cfg) { + if (zrUtil.isObject(name)) { + cfg = name; + name = ''; + } + name = name || 'default'; + + this.hideLoading(); + if (!loadingEffects[name]) { + if (true) { + console.warn('Loading effects ' + name + ' not exists.'); + } + return; + } + var el = loadingEffects[name](this._api, cfg); + var zr = this._zr; + this._loadingFX = el; + + zr.add(el); + }; + + /** + * Hide loading effect + */ + echartsProto.hideLoading = function () { + this._loadingFX && this._zr.remove(this._loadingFX); + this._loadingFX = null; + }; + + /** + * @param {Object} eventObj + * @return {Object} + */ + echartsProto.makeActionFromEvent = function (eventObj) { + var payload = zrUtil.extend({}, eventObj); + payload.type = eventActionMap[eventObj.type]; + return payload; + }; + + /** + * @pubilc + * @param {Object} payload + * @param {string} [payload.type] Action type + * @param {Object|boolean} [opt] If pass boolean, means opt.silent + * @param {boolean} [opt.silent=false] Whether trigger events. + * @param {boolean} [opt.flush=undefined] + * true: Flush immediately, and then pixel in canvas can be fetched + * immediately. Caution: it might affect performance. + * false: Not not flush. + * undefined: Auto decide whether perform flush. + */ + echartsProto.dispatchAction = function (payload, opt) { + if (!zrUtil.isObject(opt)) { + opt = {silent: !!opt}; + } + + if (!actions[payload.type]) { + return; + } + + // May dispatchAction in rendering procedure + if (this[IN_MAIN_PROCESS]) { + this._pendingActions.push(payload); + return; + } + + doDispatchAction.call(this, payload, opt.silent); + + if (opt.flush) { + this._zr.flush(true); + } + else if (opt.flush !== false && env.browser.weChat) { + // In WeChat embeded browser, `requestAnimationFrame` and `setInterval` + // hang when sliding page (on touch event), which cause that zr does not + // refresh util user interaction finished, which is not expected. + // But `dispatchAction` may be called too frequently when pan on touch + // screen, which impacts performance if do not throttle them. + this._throttledZrFlush(); + } + + flushPendingActions.call(this, opt.silent); + + triggerUpdatedEvent.call(this, opt.silent); + }; + + function doDispatchAction(payload, silent) { + var payloadType = payload.type; + var escapeConnect = payload.escapeConnect; + var actionWrap = actions[payloadType]; + var actionInfo = actionWrap.actionInfo; + + var cptType = (actionInfo.update || 'update').split(':'); + var updateMethod = cptType.pop(); + cptType = cptType[0] != null && parseClassType(cptType[0]); + + this[IN_MAIN_PROCESS] = true; + + var payloads = [payload]; + var batched = false; + // Batch action + if (payload.batch) { + batched = true; + payloads = zrUtil.map(payload.batch, function (item) { + item = zrUtil.defaults(zrUtil.extend({}, item), payload); + item.batch = null; + return item; + }); + } + + var eventObjBatch = []; + var eventObj; + var isHighDown = payloadType === 'highlight' || payloadType === 'downplay'; + + each(payloads, function (batchItem) { + // Action can specify the event by return it. + eventObj = actionWrap.action(batchItem, this._model, this._api); + // Emit event outside + eventObj = eventObj || zrUtil.extend({}, batchItem); + // Convert type to eventType + eventObj.type = actionInfo.event || eventObj.type; + eventObjBatch.push(eventObj); + + // light update does not perform data process, layout and visual. + if (isHighDown) { + // method, payload, mainType, subType + updateDirectly(this, updateMethod, batchItem, 'series'); + } + else if (cptType) { + updateDirectly(this, updateMethod, batchItem, cptType.main, cptType.sub); + } + }, this); + + if (updateMethod !== 'none' && !isHighDown && !cptType) { + // Still dirty + if (this[OPTION_UPDATED]) { + // FIXME Pass payload ? + updateMethods.prepareAndUpdate.call(this, payload); + this[OPTION_UPDATED] = false; + } + else { + updateMethods[updateMethod].call(this, payload); + } + } + + // Follow the rule of action batch + if (batched) { + eventObj = { + type: actionInfo.event || payloadType, + escapeConnect: escapeConnect, + batch: eventObjBatch + }; + } + else { + eventObj = eventObjBatch[0]; + } + + this[IN_MAIN_PROCESS] = false; + + !silent && this._messageCenter.trigger(eventObj.type, eventObj); + } + + function flushPendingActions(silent) { + var pendingActions = this._pendingActions; + while (pendingActions.length) { + var payload = pendingActions.shift(); + doDispatchAction.call(this, payload, silent); + } + } + + function triggerUpdatedEvent(silent) { + !silent && this.trigger('updated'); + } + + /** + * Register event + * @method + */ + echartsProto.on = createRegisterEventWithLowercaseName('on'); + echartsProto.off = createRegisterEventWithLowercaseName('off'); + echartsProto.one = createRegisterEventWithLowercaseName('one'); + + /** + * @param {string} methodName + * @private + */ + function invokeUpdateMethod(methodName, ecModel, payload) { + var api = this._api; + + // Update all components + each(this._componentsViews, function (component) { + var componentModel = component.__model; + component[methodName](componentModel, ecModel, api, payload); + + updateZ(componentModel, component); + }, this); + + // Upate all charts + ecModel.eachSeries(function (seriesModel, idx) { + var chart = this._chartsMap[seriesModel.__viewId]; + chart[methodName](seriesModel, ecModel, api, payload); + + updateZ(seriesModel, chart); + + updateProgressiveAndBlend(seriesModel, chart); + }, this); + + // If use hover layer + updateHoverLayerStatus(this._zr, ecModel); + + // Post render + each(postUpdateFuncs, function (func) { + func(ecModel, api); + }); + } + + /** + * Prepare view instances of charts and components + * @param {module:echarts/model/Global} ecModel + * @private + */ + function prepareView(type, ecModel) { + var isComponent = type === 'component'; + var viewList = isComponent ? this._componentsViews : this._chartsViews; + var viewMap = isComponent ? this._componentsMap : this._chartsMap; + var zr = this._zr; + + for (var i = 0; i < viewList.length; i++) { + viewList[i].__alive = false; + } + + ecModel[isComponent ? 'eachComponent' : 'eachSeries'](function (componentType, model) { + if (isComponent) { + if (componentType === 'series') { + return; + } + } + else { + model = componentType; + } + + // Consider: id same and type changed. + var viewId = '_ec_' + model.id + '_' + model.type; + var view = viewMap[viewId]; + if (!view) { + var classType = parseClassType(model.type); + var Clazz = isComponent + ? ComponentView.getClass(classType.main, classType.sub) + : ChartView.getClass(classType.sub); + if (Clazz) { + view = new Clazz(); + view.init(ecModel, this._api); + viewMap[viewId] = view; + viewList.push(view); + zr.add(view.group); + } + else { + // Error + return; + } + } + + model.__viewId = view.__id = viewId; + view.__alive = true; + view.__model = model; + view.group.__ecComponentInfo = { + mainType: model.mainType, + index: model.componentIndex + }; + }, this); + + for (var i = 0; i < viewList.length;) { + var view = viewList[i]; + if (!view.__alive) { + zr.remove(view.group); + view.dispose(ecModel, this._api); + viewList.splice(i, 1); + delete viewMap[view.__id]; + view.__id = view.group.__ecComponentInfo = null; + } + else { + i++; + } + } + } + + /** + * Processor data in each series + * + * @param {module:echarts/model/Global} ecModel + * @private + */ + function processData(ecModel, api) { + each(dataProcessorFuncs, function (process) { + process.func(ecModel, api); + }); + } + + /** + * @private + */ + function stackSeriesData(ecModel) { + var stackedDataMap = {}; + ecModel.eachSeries(function (series) { + var stack = series.get('stack'); + var data = series.getData(); + if (stack && data.type === 'list') { + var previousStack = stackedDataMap[stack]; + // Avoid conflict with Object.prototype + if (stackedDataMap.hasOwnProperty(stack) && previousStack) { + data.stackedOn = previousStack; + } + stackedDataMap[stack] = data; + } + }); + } + + /** + * Layout before each chart render there series, special visual encoding stage + * + * @param {module:echarts/model/Global} ecModel + * @private + */ + function doLayout(ecModel, payload) { + var api = this._api; + each(visualFuncs, function (visual) { + if (visual.isLayout) { + visual.func(ecModel, api, payload); + } + }); + } + + /** + * Encode visual infomation from data after data processing + * + * @param {module:echarts/model/Global} ecModel + * @param {object} layout + * @param {boolean} [excludesLayout] + * @private + */ + function doVisualEncoding(ecModel, payload, excludesLayout) { + var api = this._api; + ecModel.clearColorPalette(); + ecModel.eachSeries(function (seriesModel) { + seriesModel.clearColorPalette(); + }); + each(visualFuncs, function (visual) { + (!excludesLayout || !visual.isLayout) + && visual.func(ecModel, api, payload); + }); + } + + /** + * Render each chart and component + * @private + */ + function doRender(ecModel, payload) { + var api = this._api; + // Render all components + each(this._componentsViews, function (componentView) { + var componentModel = componentView.__model; + componentView.render(componentModel, ecModel, api, payload); + + updateZ(componentModel, componentView); + }, this); + + each(this._chartsViews, function (chart) { + chart.__alive = false; + }, this); + + // Render all charts + ecModel.eachSeries(function (seriesModel, idx) { + var chartView = this._chartsMap[seriesModel.__viewId]; + chartView.__alive = true; + chartView.render(seriesModel, ecModel, api, payload); + + chartView.group.silent = !!seriesModel.get('silent'); + + updateZ(seriesModel, chartView); + + updateProgressiveAndBlend(seriesModel, chartView); + + }, this); + + // If use hover layer + updateHoverLayerStatus(this._zr, ecModel); + + // Remove groups of unrendered charts + each(this._chartsViews, function (chart) { + if (!chart.__alive) { + chart.remove(ecModel, api); + } + }, this); + } + + var MOUSE_EVENT_NAMES = [ + 'click', 'dblclick', 'mouseover', 'mouseout', 'mousemove', + 'mousedown', 'mouseup', 'globalout', 'contextmenu' + ]; + /** + * @private + */ + echartsProto._initEvents = function () { + each(MOUSE_EVENT_NAMES, function (eveName) { + this._zr.on(eveName, function (e) { + var ecModel = this.getModel(); + var el = e.target; + var params; + + // no e.target when 'globalout'. + if (eveName === 'globalout') { + params = {}; + } + else if (el && el.dataIndex != null) { + var dataModel = el.dataModel || ecModel.getSeriesByIndex(el.seriesIndex); + params = dataModel && dataModel.getDataParams(el.dataIndex, el.dataType) || {}; + } + // If element has custom eventData of components + else if (el && el.eventData) { + params = zrUtil.extend({}, el.eventData); + } + + if (params) { + params.event = e; + params.type = eveName; + this.trigger(eveName, params); + } + + }, this); + }, this); + + each(eventActionMap, function (actionType, eventType) { + this._messageCenter.on(eventType, function (event) { + this.trigger(eventType, event); + }, this); + }, this); + }; + + /** + * @return {boolean} + */ + echartsProto.isDisposed = function () { + return this._disposed; + }; + + /** + * Clear + */ + echartsProto.clear = function () { + this.setOption({ series: [] }, true); + }; + + /** + * Dispose instance + */ + echartsProto.dispose = function () { + if (this._disposed) { + if (true) { + console.warn('Instance ' + this.id + ' has been disposed'); + } + return; + } + this._disposed = true; + + var api = this._api; + var ecModel = this._model; + + each(this._componentsViews, function (component) { + component.dispose(ecModel, api); + }); + each(this._chartsViews, function (chart) { + chart.dispose(ecModel, api); + }); + + // Dispose after all views disposed + this._zr.dispose(); + + delete instances[this.id]; + }; + + zrUtil.mixin(ECharts, Eventful); + + function updateHoverLayerStatus(zr, ecModel) { + var storage = zr.storage; + var elCount = 0; + storage.traverse(function (el) { + if (!el.isGroup) { + elCount++; + } + }); + if (elCount > ecModel.get('hoverLayerThreshold') && !env.node) { + storage.traverse(function (el) { + if (!el.isGroup) { + el.useHoverLayer = true; + } + }); + } + } + + /** + * Update chart progressive and blend. + * @param {module:echarts/model/Series|module:echarts/model/Component} model + * @param {module:echarts/view/Component|module:echarts/view/Chart} view + */ + function updateProgressiveAndBlend(seriesModel, chartView) { + // Progressive configuration + var elCount = 0; + chartView.group.traverse(function (el) { + if (el.type !== 'group' && !el.ignore) { + elCount++; + } + }); + var frameDrawNum = +seriesModel.get('progressive'); + var needProgressive = elCount > seriesModel.get('progressiveThreshold') && frameDrawNum && !env.node; + if (needProgressive) { + chartView.group.traverse(function (el) { + // FIXME marker and other components + if (!el.isGroup) { + el.progressive = needProgressive ? + Math.floor(elCount++ / frameDrawNum) : -1; + if (needProgressive) { + el.stopAnimation(true); + } + } + }); + } + + // Blend configration + var blendMode = seriesModel.get('blendMode') || null; + if (true) { + if (!env.canvasSupported && blendMode && blendMode !== 'source-over') { + console.warn('Only canvas support blendMode'); + } + } + chartView.group.traverse(function (el) { + // FIXME marker and other components + if (!el.isGroup) { + el.setStyle('blend', blendMode); + } + }); + } + + /** + * @param {module:echarts/model/Series|module:echarts/model/Component} model + * @param {module:echarts/view/Component|module:echarts/view/Chart} view + */ + function updateZ(model, view) { + var z = model.get('z'); + var zlevel = model.get('zlevel'); + // Set z and zlevel + view.group.traverse(function (el) { + if (el.type !== 'group') { + z != null && (el.z = z); + zlevel != null && (el.zlevel = zlevel); + } + }); + } + + function createExtensionAPI(ecInstance) { + var coordSysMgr = ecInstance._coordSysMgr; + return zrUtil.extend(new ExtensionAPI(ecInstance), { + // Inject methods + getCoordinateSystems: zrUtil.bind( + coordSysMgr.getCoordinateSystems, coordSysMgr + ), + getComponentByElement: function (el) { + while (el) { + var modelInfo = el.__ecComponentInfo; + if (modelInfo != null) { + return ecInstance._model.getComponent(modelInfo.mainType, modelInfo.index); + } + el = el.parent; + } + } + }); + } + + /** + * @type {Object} key: actionType. + * @inner + */ + var actions = {}; + + /** + * Map eventType to actionType + * @type {Object} + */ + var eventActionMap = {}; + + /** + * Data processor functions of each stage + * @type {Array.>} + * @inner + */ + var dataProcessorFuncs = []; + + /** + * @type {Array.} + * @inner + */ + var optionPreprocessorFuncs = []; + + /** + * @type {Array.} + * @inner + */ + var postUpdateFuncs = []; + + /** + * Visual encoding functions of each stage + * @type {Array.>} + * @inner + */ + var visualFuncs = []; + /** + * Theme storage + * @type {Object.} + */ + var themeStorage = {}; + /** + * Loading effects + */ + var loadingEffects = {}; + + + var instances = {}; + var connectedGroups = {}; + + var idBase = new Date() - 0; + var groupIdBase = new Date() - 0; + var DOM_ATTRIBUTE_KEY = '_echarts_instance_'; + + /** + * @alias module:echarts + */ + var echarts = { + /** + * @type {number} + */ + version: '3.6.2', + dependencies: { + zrender: '3.5.2' + } + }; + + function enableConnect(chart) { + var STATUS_PENDING = 0; + var STATUS_UPDATING = 1; + var STATUS_UPDATED = 2; + var STATUS_KEY = '__connectUpdateStatus'; + + function updateConnectedChartsStatus(charts, status) { + for (var i = 0; i < charts.length; i++) { + var otherChart = charts[i]; + otherChart[STATUS_KEY] = status; + } + } + + zrUtil.each(eventActionMap, function (actionType, eventType) { + chart._messageCenter.on(eventType, function (event) { + if (connectedGroups[chart.group] && chart[STATUS_KEY] !== STATUS_PENDING) { + if (event && event.escapeConnect) { + return; + } + + var action = chart.makeActionFromEvent(event); + var otherCharts = []; + + zrUtil.each(instances, function (otherChart) { + if (otherChart !== chart && otherChart.group === chart.group) { + otherCharts.push(otherChart); + } + }); + + updateConnectedChartsStatus(otherCharts, STATUS_PENDING); + each(otherCharts, function (otherChart) { + if (otherChart[STATUS_KEY] !== STATUS_UPDATING) { + otherChart.dispatchAction(action); + } + }); + updateConnectedChartsStatus(otherCharts, STATUS_UPDATED); + } + }); + }); + } + + /** + * @param {HTMLDomElement} dom + * @param {Object} [theme] + * @param {Object} opts + * @param {number} [opts.devicePixelRatio] Use window.devicePixelRatio by default + * @param {string} [opts.renderer] Currently only 'canvas' is supported. + * @param {number} [opts.width] Use clientWidth of the input `dom` by default. + * Can be 'auto' (the same as null/undefined) + * @param {number} [opts.height] Use clientHeight of the input `dom` by default. + * Can be 'auto' (the same as null/undefined) + */ + echarts.init = function (dom, theme, opts) { + if (true) { + // Check version + if ((zrender.version.replace('.', '') - 0) < (echarts.dependencies.zrender.replace('.', '') - 0)) { + throw new Error( + 'ZRender ' + zrender.version + + ' is too old for ECharts ' + echarts.version + + '. Current version need ZRender ' + + echarts.dependencies.zrender + '+' + ); + } + + if (!dom) { + throw new Error('Initialize failed: invalid dom.'); + } + } + + var existInstance = echarts.getInstanceByDom(dom); + if (existInstance) { + if (true) { + console.warn('There is a chart instance already initialized on the dom.'); + } + return existInstance; + } + + if (true) { + if (zrUtil.isDom(dom) + && dom.nodeName.toUpperCase() !== 'CANVAS' + && ( + (!dom.clientWidth && (!opts || opts.width == null)) + || (!dom.clientHeight && (!opts || opts.height == null)) + ) + ) { + console.warn('Can\'t get dom width or height'); + } + } + + var chart = new ECharts(dom, theme, opts); + chart.id = 'ec_' + idBase++; + instances[chart.id] = chart; + + if (dom.setAttribute) { + dom.setAttribute(DOM_ATTRIBUTE_KEY, chart.id); + } + else { + dom[DOM_ATTRIBUTE_KEY] = chart.id; + } + + enableConnect(chart); + + return chart; + }; + + /** + * @return {string|Array.} groupId + */ + echarts.connect = function (groupId) { + // Is array of charts + if (zrUtil.isArray(groupId)) { + var charts = groupId; + groupId = null; + // If any chart has group + zrUtil.each(charts, function (chart) { + if (chart.group != null) { + groupId = chart.group; + } + }); + groupId = groupId || ('g_' + groupIdBase++); + zrUtil.each(charts, function (chart) { + chart.group = groupId; + }); + } + connectedGroups[groupId] = true; + return groupId; + }; + + /** + * @DEPRECATED + * @return {string} groupId + */ + echarts.disConnect = function (groupId) { + connectedGroups[groupId] = false; + }; + + /** + * @return {string} groupId + */ + echarts.disconnect = echarts.disConnect; + + /** + * Dispose a chart instance + * @param {module:echarts~ECharts|HTMLDomElement|string} chart + */ + echarts.dispose = function (chart) { + if (typeof chart === 'string') { + chart = instances[chart]; + } + else if (!(chart instanceof ECharts)){ + // Try to treat as dom + chart = echarts.getInstanceByDom(chart); + } + if ((chart instanceof ECharts) && !chart.isDisposed()) { + chart.dispose(); + } + }; + + /** + * @param {HTMLDomElement} dom + * @return {echarts~ECharts} + */ + echarts.getInstanceByDom = function (dom) { + var key; + if (dom.getAttribute) { + key = dom.getAttribute(DOM_ATTRIBUTE_KEY); + } + else { + key = dom[DOM_ATTRIBUTE_KEY]; + } + return instances[key]; + }; + + /** + * @param {string} key + * @return {echarts~ECharts} + */ + echarts.getInstanceById = function (key) { + return instances[key]; + }; + + /** + * Register theme + */ + echarts.registerTheme = function (name, theme) { + themeStorage[name] = theme; + }; + + /** + * Register option preprocessor + * @param {Function} preprocessorFunc + */ + echarts.registerPreprocessor = function (preprocessorFunc) { + optionPreprocessorFuncs.push(preprocessorFunc); + }; + + /** + * @param {number} [priority=1000] + * @param {Function} processorFunc + */ + echarts.registerProcessor = function (priority, processorFunc) { + if (typeof priority === 'function') { + processorFunc = priority; + priority = PRIORITY_PROCESSOR_FILTER; + } + if (true) { + if (isNaN(priority)) { + throw new Error('Unkown processor priority'); + } + } + dataProcessorFuncs.push({ + prio: priority, + func: processorFunc + }); + }; + + /** + * Register postUpdater + * @param {Function} postUpdateFunc + */ + echarts.registerPostUpdate = function (postUpdateFunc) { + postUpdateFuncs.push(postUpdateFunc); + }; + + /** + * Usage: + * registerAction('someAction', 'someEvent', function () { ... }); + * registerAction('someAction', function () { ... }); + * registerAction( + * {type: 'someAction', event: 'someEvent', update: 'updateView'}, + * function () { ... } + * ); + * + * @param {(string|Object)} actionInfo + * @param {string} actionInfo.type + * @param {string} [actionInfo.event] + * @param {string} [actionInfo.update] + * @param {string} [eventName] + * @param {Function} action + */ + echarts.registerAction = function (actionInfo, eventName, action) { + if (typeof eventName === 'function') { + action = eventName; + eventName = ''; + } + var actionType = zrUtil.isObject(actionInfo) + ? actionInfo.type + : ([actionInfo, actionInfo = { + event: eventName + }][0]); + + // Event name is all lowercase + actionInfo.event = (actionInfo.event || actionType).toLowerCase(); + eventName = actionInfo.event; + + // Validate action type and event name. + zrUtil.assert(ACTION_REG.test(actionType) && ACTION_REG.test(eventName)); + + if (!actions[actionType]) { + actions[actionType] = {action: action, actionInfo: actionInfo}; + } + eventActionMap[eventName] = actionType; + }; + + /** + * @param {string} type + * @param {*} CoordinateSystem + */ + echarts.registerCoordinateSystem = function (type, CoordinateSystem) { + CoordinateSystemManager.register(type, CoordinateSystem); + }; + + /** + * Get dimensions of specified coordinate system. + * @param {string} type + * @return {Array.} + */ + echarts.getCoordinateSystemDimensions = function (type) { + var coordSysCreator = CoordinateSystemManager.get(type); + if (coordSysCreator) { + return coordSysCreator.getDimensionsInfo + ? coordSysCreator.getDimensionsInfo() + : coordSysCreator.dimensions.slice(); + } + }; + + /** + * Layout is a special stage of visual encoding + * Most visual encoding like color are common for different chart + * But each chart has it's own layout algorithm + * + * @param {number} [priority=1000] + * @param {Function} layoutFunc + */ + echarts.registerLayout = function (priority, layoutFunc) { + if (typeof priority === 'function') { + layoutFunc = priority; + priority = PRIORITY_VISUAL_LAYOUT; + } + if (true) { + if (isNaN(priority)) { + throw new Error('Unkown layout priority'); + } + } + visualFuncs.push({ + prio: priority, + func: layoutFunc, + isLayout: true + }); + }; + + /** + * @param {number} [priority=3000] + * @param {Function} visualFunc + */ + echarts.registerVisual = function (priority, visualFunc) { + if (typeof priority === 'function') { + visualFunc = priority; + priority = PRIORITY_VISUAL_CHART; + } + if (true) { + if (isNaN(priority)) { + throw new Error('Unkown visual priority'); + } + } + visualFuncs.push({ + prio: priority, + func: visualFunc + }); + }; + + /** + * @param {string} name + */ + echarts.registerLoading = function (name, loadingFx) { + loadingEffects[name] = loadingFx; + }; + + /** + * @param {Object} opts + * @param {string} [superClass] + */ + echarts.extendComponentModel = function (opts/*, superClass*/) { + // var Clazz = ComponentModel; + // if (superClass) { + // var classType = parseClassType(superClass); + // Clazz = ComponentModel.getClass(classType.main, classType.sub, true); + // } + return ComponentModel.extend(opts); + }; + + /** + * @param {Object} opts + * @param {string} [superClass] + */ + echarts.extendComponentView = function (opts/*, superClass*/) { + // var Clazz = ComponentView; + // if (superClass) { + // var classType = parseClassType(superClass); + // Clazz = ComponentView.getClass(classType.main, classType.sub, true); + // } + return ComponentView.extend(opts); + }; + + /** + * @param {Object} opts + * @param {string} [superClass] + */ + echarts.extendSeriesModel = function (opts/*, superClass*/) { + // var Clazz = SeriesModel; + // if (superClass) { + // superClass = 'series.' + superClass.replace('series.', ''); + // var classType = parseClassType(superClass); + // Clazz = ComponentModel.getClass(classType.main, classType.sub, true); + // } + return SeriesModel.extend(opts); + }; + + /** + * @param {Object} opts + * @param {string} [superClass] + */ + echarts.extendChartView = function (opts/*, superClass*/) { + // var Clazz = ChartView; + // if (superClass) { + // superClass = superClass.replace('series.', ''); + // var classType = parseClassType(superClass); + // Clazz = ChartView.getClass(classType.main, true); + // } + return ChartView.extend(opts); + }; + + /** + * ZRender need a canvas context to do measureText. + * But in node environment canvas may be created by node-canvas. + * So we need to specify how to create a canvas instead of using document.createElement('canvas') + * + * Be careful of using it in the browser. + * + * @param {Function} creator + * @example + * var Canvas = require('canvas'); + * var echarts = require('echarts'); + * echarts.setCanvasCreator(function () { + * // Small size is enough. + * return new Canvas(32, 32); + * }); + */ + echarts.setCanvasCreator = function (creator) { + zrUtil.createCanvas = creator; + }; + + echarts.registerVisual(PRIORITY_VISUAL_GLOBAL, __webpack_require__(94)); + echarts.registerPreprocessor(__webpack_require__(95)); + echarts.registerLoading('default', __webpack_require__(97)); + + // Default action + echarts.registerAction({ + type: 'highlight', + event: 'highlight', + update: 'highlight' + }, zrUtil.noop); + echarts.registerAction({ + type: 'downplay', + event: 'downplay', + update: 'downplay' + }, zrUtil.noop); + + + // -------- + // Exports + // -------- + echarts.zrender = zrender; + + echarts.List = __webpack_require__(98); + echarts.Model = __webpack_require__(12); + + echarts.Axis = __webpack_require__(100); + + echarts.graphic = __webpack_require__(18); + echarts.number = __webpack_require__(7); + echarts.format = __webpack_require__(6); + echarts.throttle = throttle.throttle; + echarts.matrix = __webpack_require__(11); + echarts.vector = __webpack_require__(10); + echarts.color = __webpack_require__(31); + + echarts.util = {}; + each([ + 'map', 'each', 'filter', 'indexOf', 'inherits', 'reduce', 'filter', + 'bind', 'curry', 'isArray', 'isString', 'isObject', 'isFunction', + 'extend', 'defaults', 'clone', 'merge' + ], + function (name) { + echarts.util[name] = zrUtil[name]; + } + ); + + echarts.helper = __webpack_require__(108); + + + // PRIORITY + echarts.PRIORITY = { + PROCESSOR: { + FILTER: PRIORITY_PROCESSOR_FILTER, + STATISTIC: PRIORITY_PROCESSOR_STATISTIC + }, + VISUAL: { + LAYOUT: PRIORITY_VISUAL_LAYOUT, + GLOBAL: PRIORITY_VISUAL_GLOBAL, + CHART: PRIORITY_VISUAL_CHART, + COMPONENT: PRIORITY_VISUAL_COMPONENT, + BRUSH: PRIORITY_VISUAL_BRUSH + } + }; + + module.exports = echarts; + + +/***/ }, +/* 2 */ +/***/ function(module, exports) { + + /** + * echarts设备环境识别 + * + * @desc echarts基于Canvas,纯Javascript图表库,提供直观,生动,可交互,可个性化定制的数据统计图表。 + * @author firede[firede@firede.us] + * @desc thanks zepto. + */ + + var env = {}; + if (typeof navigator === 'undefined') { + // In node + env = { + browser: {}, + os: {}, + node: true, + // Assume canvas is supported + canvasSupported: true + }; + } + else { + env = detect(navigator.userAgent); + } + + module.exports = env; + + // Zepto.js + // (c) 2010-2013 Thomas Fuchs + // Zepto.js may be freely distributed under the MIT license. + + function detect(ua) { + var os = {}; + var browser = {}; + // var webkit = ua.match(/Web[kK]it[\/]{0,1}([\d.]+)/); + // var android = ua.match(/(Android);?[\s\/]+([\d.]+)?/); + // var ipad = ua.match(/(iPad).*OS\s([\d_]+)/); + // var ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/); + // var iphone = !ipad && ua.match(/(iPhone\sOS)\s([\d_]+)/); + // var webos = ua.match(/(webOS|hpwOS)[\s\/]([\d.]+)/); + // var touchpad = webos && ua.match(/TouchPad/); + // var kindle = ua.match(/Kindle\/([\d.]+)/); + // var silk = ua.match(/Silk\/([\d._]+)/); + // var blackberry = ua.match(/(BlackBerry).*Version\/([\d.]+)/); + // var bb10 = ua.match(/(BB10).*Version\/([\d.]+)/); + // var rimtabletos = ua.match(/(RIM\sTablet\sOS)\s([\d.]+)/); + // var playbook = ua.match(/PlayBook/); + // var chrome = ua.match(/Chrome\/([\d.]+)/) || ua.match(/CriOS\/([\d.]+)/); + var firefox = ua.match(/Firefox\/([\d.]+)/); + // var safari = webkit && ua.match(/Mobile\//) && !chrome; + // var webview = ua.match(/(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/) && !chrome; + var ie = ua.match(/MSIE\s([\d.]+)/) + // IE 11 Trident/7.0; rv:11.0 + || ua.match(/Trident\/.+?rv:(([\d.]+))/); + var edge = ua.match(/Edge\/([\d.]+)/); // IE 12 and 12+ + + var weChat = (/micromessenger/i).test(ua); + + // Todo: clean this up with a better OS/browser seperation: + // - discern (more) between multiple browsers on android + // - decide if kindle fire in silk mode is android or not + // - Firefox on Android doesn't specify the Android version + // - possibly devide in os, device and browser hashes + + // if (browser.webkit = !!webkit) browser.version = webkit[1]; + + // if (android) os.android = true, os.version = android[2]; + // if (iphone && !ipod) os.ios = os.iphone = true, os.version = iphone[2].replace(/_/g, '.'); + // if (ipad) os.ios = os.ipad = true, os.version = ipad[2].replace(/_/g, '.'); + // if (ipod) os.ios = os.ipod = true, os.version = ipod[3] ? ipod[3].replace(/_/g, '.') : null; + // if (webos) os.webos = true, os.version = webos[2]; + // if (touchpad) os.touchpad = true; + // if (blackberry) os.blackberry = true, os.version = blackberry[2]; + // if (bb10) os.bb10 = true, os.version = bb10[2]; + // if (rimtabletos) os.rimtabletos = true, os.version = rimtabletos[2]; + // if (playbook) browser.playbook = true; + // if (kindle) os.kindle = true, os.version = kindle[1]; + // if (silk) browser.silk = true, browser.version = silk[1]; + // if (!silk && os.android && ua.match(/Kindle Fire/)) browser.silk = true; + // if (chrome) browser.chrome = true, browser.version = chrome[1]; + if (firefox) { + browser.firefox = true; + browser.version = firefox[1]; + } + // if (safari && (ua.match(/Safari/) || !!os.ios)) browser.safari = true; + // if (webview) browser.webview = true; + + if (ie) { + browser.ie = true; + browser.version = ie[1]; + } + + if (edge) { + browser.edge = true; + browser.version = edge[1]; + } + + // It is difficult to detect WeChat in Win Phone precisely, because ua can + // not be set on win phone. So we do not consider Win Phone. + if (weChat) { + browser.weChat = true; + } + + // os.tablet = !!(ipad || playbook || (android && !ua.match(/Mobile/)) || + // (firefox && ua.match(/Tablet/)) || (ie && !ua.match(/Phone/) && ua.match(/Touch/))); + // os.phone = !!(!os.tablet && !os.ipod && (android || iphone || webos || + // (chrome && ua.match(/Android/)) || (chrome && ua.match(/CriOS\/([\d.]+)/)) || + // (firefox && ua.match(/Mobile/)) || (ie && ua.match(/Touch/)))); + + return { + browser: browser, + os: os, + node: false, + // 原生canvas支持,改极端点了 + // canvasSupported : !(browser.ie && parseFloat(browser.version) < 9) + canvasSupported : document.createElement('canvas').getContext ? true : false, + // @see + // works on most browsers + // IE10/11 does not support touch event, and MS Edge supports them but not by + // default, so we dont check navigator.maxTouchPoints for them here. + touchEventsSupported: 'ontouchstart' in window && !browser.ie && !browser.edge, + // . + pointerEventsSupported: 'onpointerdown' in window + // Firefox supports pointer but not by default, only MS browsers are reliable on pointer + // events currently. So we dont use that on other browsers unless tested sufficiently. + // Although IE 10 supports pointer event, it use old style and is different from the + // standard. So we exclude that. (IE 10 is hardly used on touch device) + && (browser.edge || (browser.ie && browser.version >= 11)) + }; + } + + +/***/ }, +/* 3 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * ECharts global model + * + * @module {echarts/model/Global} + */ + + + + /** + * Caution: If the mechanism should be changed some day, these cases + * should be considered: + * + * (1) In `merge option` mode, if using the same option to call `setOption` + * many times, the result should be the same (try our best to ensure that). + * (2) In `merge option` mode, if a component has no id/name specified, it + * will be merged by index, and the result sequence of the components is + * consistent to the original sequence. + * (3) `reset` feature (in toolbox). Find detailed info in comments about + * `mergeOption` in module:echarts/model/OptionManager. + */ + + var zrUtil = __webpack_require__(4); + var modelUtil = __webpack_require__(5); + var Model = __webpack_require__(12); + var each = zrUtil.each; + var filter = zrUtil.filter; + var map = zrUtil.map; + var isArray = zrUtil.isArray; + var indexOf = zrUtil.indexOf; + var isObject = zrUtil.isObject; + + var ComponentModel = __webpack_require__(69); + + var globalDefault = __webpack_require__(73); + + var OPTION_INNER_KEY = '\0_ec_inner'; + + /** + * @alias module:echarts/model/Global + * + * @param {Object} option + * @param {module:echarts/model/Model} parentModel + * @param {Object} theme + */ + var GlobalModel = Model.extend({ + + constructor: GlobalModel, + + init: function (option, parentModel, theme, optionManager) { + theme = theme || {}; + + this.option = null; // Mark as not initialized. + + /** + * @type {module:echarts/model/Model} + * @private + */ + this._theme = new Model(theme); + + /** + * @type {module:echarts/model/OptionManager} + */ + this._optionManager = optionManager; + }, + + setOption: function (option, optionPreprocessorFuncs) { + zrUtil.assert( + !(OPTION_INNER_KEY in option), + 'please use chart.getOption()' + ); + + this._optionManager.setOption(option, optionPreprocessorFuncs); + + this.resetOption(null); + }, + + /** + * @param {string} type null/undefined: reset all. + * 'recreate': force recreate all. + * 'timeline': only reset timeline option + * 'media': only reset media query option + * @return {boolean} Whether option changed. + */ + resetOption: function (type) { + var optionChanged = false; + var optionManager = this._optionManager; + + if (!type || type === 'recreate') { + var baseOption = optionManager.mountOption(type === 'recreate'); + + if (!this.option || type === 'recreate') { + initBase.call(this, baseOption); + } + else { + this.restoreData(); + this.mergeOption(baseOption); + } + optionChanged = true; + } + + if (type === 'timeline' || type === 'media') { + this.restoreData(); + } + + if (!type || type === 'recreate' || type === 'timeline') { + var timelineOption = optionManager.getTimelineOption(this); + timelineOption && (this.mergeOption(timelineOption), optionChanged = true); + } + + if (!type || type === 'recreate' || type === 'media') { + var mediaOptions = optionManager.getMediaOption(this, this._api); + if (mediaOptions.length) { + each(mediaOptions, function (mediaOption) { + this.mergeOption(mediaOption, optionChanged = true); + }, this); + } + } + + return optionChanged; + }, + + /** + * @protected + */ + mergeOption: function (newOption) { + var option = this.option; + var componentsMap = this._componentsMap; + var newCptTypes = []; + + // 如果不存在对应的 component model 则直接 merge + each(newOption, function (componentOption, mainType) { + if (componentOption == null) { + return; + } + + if (!ComponentModel.hasClass(mainType)) { + option[mainType] = option[mainType] == null + ? zrUtil.clone(componentOption) + : zrUtil.merge(option[mainType], componentOption, true); + } + else { + newCptTypes.push(mainType); + } + }); + + // FIXME OPTION 同步是否要改回原来的 + ComponentModel.topologicalTravel( + newCptTypes, ComponentModel.getAllClassMainTypes(), visitComponent, this + ); + + this._seriesIndices = this._seriesIndices || []; + + function visitComponent(mainType, dependencies) { + var newCptOptionList = modelUtil.normalizeToArray(newOption[mainType]); + + var mapResult = modelUtil.mappingToExists( + componentsMap.get(mainType), newCptOptionList + ); + + modelUtil.makeIdAndName(mapResult); + + // Set mainType and complete subType. + each(mapResult, function (item, index) { + var opt = item.option; + if (isObject(opt)) { + item.keyInfo.mainType = mainType; + item.keyInfo.subType = determineSubType(mainType, opt, item.exist); + } + }); + + var dependentModels = getComponentsByTypes( + componentsMap, dependencies + ); + + option[mainType] = []; + componentsMap.set(mainType, []); + + each(mapResult, function (resultItem, index) { + var componentModel = resultItem.exist; + var newCptOption = resultItem.option; + + zrUtil.assert( + isObject(newCptOption) || componentModel, + 'Empty component definition' + ); + + // Consider where is no new option and should be merged using {}, + // see removeEdgeAndAdd in topologicalTravel and + // ComponentModel.getAllClassMainTypes. + if (!newCptOption) { + componentModel.mergeOption({}, this); + componentModel.optionUpdated({}, false); + } + else { + var ComponentModelClass = ComponentModel.getClass( + mainType, resultItem.keyInfo.subType, true + ); + + if (componentModel && componentModel instanceof ComponentModelClass) { + componentModel.name = resultItem.keyInfo.name; + componentModel.mergeOption(newCptOption, this); + componentModel.optionUpdated(newCptOption, false); + } + else { + // PENDING Global as parent ? + var extraOpt = zrUtil.extend( + { + dependentModels: dependentModels, + componentIndex: index + }, + resultItem.keyInfo + ); + componentModel = new ComponentModelClass( + newCptOption, this, this, extraOpt + ); + zrUtil.extend(componentModel, extraOpt); + componentModel.init(newCptOption, this, this, extraOpt); + // Call optionUpdated after init. + // newCptOption has been used as componentModel.option + // and may be merged with theme and default, so pass null + // to avoid confusion. + componentModel.optionUpdated(null, true); + } + } + + componentsMap.get(mainType)[index] = componentModel; + option[mainType][index] = componentModel.option; + }, this); + + // Backup series for filtering. + if (mainType === 'series') { + this._seriesIndices = createSeriesIndices(componentsMap.get('series')); + } + } + }, + + /** + * Get option for output (cloned option and inner info removed) + * @public + * @return {Object} + */ + getOption: function () { + var option = zrUtil.clone(this.option); + + each(option, function (opts, mainType) { + if (ComponentModel.hasClass(mainType)) { + var opts = modelUtil.normalizeToArray(opts); + for (var i = opts.length - 1; i >= 0; i--) { + // Remove options with inner id. + if (modelUtil.isIdInner(opts[i])) { + opts.splice(i, 1); + } + } + option[mainType] = opts; + } + }); + + delete option[OPTION_INNER_KEY]; + + return option; + }, + + /** + * @return {module:echarts/model/Model} + */ + getTheme: function () { + return this._theme; + }, + + /** + * @param {string} mainType + * @param {number} [idx=0] + * @return {module:echarts/model/Component} + */ + getComponent: function (mainType, idx) { + var list = this._componentsMap.get(mainType); + if (list) { + return list[idx || 0]; + } + }, + + /** + * If none of index and id and name used, return all components with mainType. + * @param {Object} condition + * @param {string} condition.mainType + * @param {string} [condition.subType] If ignore, only query by mainType + * @param {number|Array.} [condition.index] Either input index or id or name. + * @param {string|Array.} [condition.id] Either input index or id or name. + * @param {string|Array.} [condition.name] Either input index or id or name. + * @return {Array.} + */ + queryComponents: function (condition) { + var mainType = condition.mainType; + if (!mainType) { + return []; + } + + var index = condition.index; + var id = condition.id; + var name = condition.name; + + var cpts = this._componentsMap.get(mainType); + + if (!cpts || !cpts.length) { + return []; + } + + var result; + + if (index != null) { + if (!isArray(index)) { + index = [index]; + } + result = filter(map(index, function (idx) { + return cpts[idx]; + }), function (val) { + return !!val; + }); + } + else if (id != null) { + var isIdArray = isArray(id); + result = filter(cpts, function (cpt) { + return (isIdArray && indexOf(id, cpt.id) >= 0) + || (!isIdArray && cpt.id === id); + }); + } + else if (name != null) { + var isNameArray = isArray(name); + result = filter(cpts, function (cpt) { + return (isNameArray && indexOf(name, cpt.name) >= 0) + || (!isNameArray && cpt.name === name); + }); + } + else { + // Return all components with mainType + result = cpts.slice(); + } + + return filterBySubType(result, condition); + }, + + /** + * The interface is different from queryComponents, + * which is convenient for inner usage. + * + * @usage + * var result = findComponents( + * {mainType: 'dataZoom', query: {dataZoomId: 'abc'}} + * ); + * var result = findComponents( + * {mainType: 'series', subType: 'pie', query: {seriesName: 'uio'}} + * ); + * var result = findComponents( + * {mainType: 'series'}, + * function (model, index) {...} + * ); + * // result like [component0, componnet1, ...] + * + * @param {Object} condition + * @param {string} condition.mainType Mandatory. + * @param {string} [condition.subType] Optional. + * @param {Object} [condition.query] like {xxxIndex, xxxId, xxxName}, + * where xxx is mainType. + * If query attribute is null/undefined or has no index/id/name, + * do not filtering by query conditions, which is convenient for + * no-payload situations or when target of action is global. + * @param {Function} [condition.filter] parameter: component, return boolean. + * @return {Array.} + */ + findComponents: function (condition) { + var query = condition.query; + var mainType = condition.mainType; + + var queryCond = getQueryCond(query); + var result = queryCond + ? this.queryComponents(queryCond) + : this._componentsMap.get(mainType); + + return doFilter(filterBySubType(result, condition)); + + function getQueryCond(q) { + var indexAttr = mainType + 'Index'; + var idAttr = mainType + 'Id'; + var nameAttr = mainType + 'Name'; + return q && ( + q[indexAttr] != null + || q[idAttr] != null + || q[nameAttr] != null + ) + ? { + mainType: mainType, + // subType will be filtered finally. + index: q[indexAttr], + id: q[idAttr], + name: q[nameAttr] + } + : null; + } + + function doFilter(res) { + return condition.filter + ? filter(res, condition.filter) + : res; + } + }, + + /** + * @usage + * eachComponent('legend', function (legendModel, index) { + * ... + * }); + * eachComponent(function (componentType, model, index) { + * // componentType does not include subType + * // (componentType is 'xxx' but not 'xxx.aa') + * }); + * eachComponent( + * {mainType: 'dataZoom', query: {dataZoomId: 'abc'}}, + * function (model, index) {...} + * ); + * eachComponent( + * {mainType: 'series', subType: 'pie', query: {seriesName: 'uio'}}, + * function (model, index) {...} + * ); + * + * @param {string|Object=} mainType When mainType is object, the definition + * is the same as the method 'findComponents'. + * @param {Function} cb + * @param {*} context + */ + eachComponent: function (mainType, cb, context) { + var componentsMap = this._componentsMap; + + if (typeof mainType === 'function') { + context = cb; + cb = mainType; + componentsMap.each(function (components, componentType) { + each(components, function (component, index) { + cb.call(context, componentType, component, index); + }); + }); + } + else if (zrUtil.isString(mainType)) { + each(componentsMap.get(mainType), cb, context); + } + else if (isObject(mainType)) { + var queryResult = this.findComponents(mainType); + each(queryResult, cb, context); + } + }, + + /** + * @param {string} name + * @return {Array.} + */ + getSeriesByName: function (name) { + var series = this._componentsMap.get('series'); + return filter(series, function (oneSeries) { + return oneSeries.name === name; + }); + }, + + /** + * @param {number} seriesIndex + * @return {module:echarts/model/Series} + */ + getSeriesByIndex: function (seriesIndex) { + return this._componentsMap.get('series')[seriesIndex]; + }, + + /** + * @param {string} subType + * @return {Array.} + */ + getSeriesByType: function (subType) { + var series = this._componentsMap.get('series'); + return filter(series, function (oneSeries) { + return oneSeries.subType === subType; + }); + }, + + /** + * @return {Array.} + */ + getSeries: function () { + return this._componentsMap.get('series').slice(); + }, + + /** + * After filtering, series may be different + * frome raw series. + * + * @param {Function} cb + * @param {*} context + */ + eachSeries: function (cb, context) { + assertSeriesInitialized(this); + each(this._seriesIndices, function (rawSeriesIndex) { + var series = this._componentsMap.get('series')[rawSeriesIndex]; + cb.call(context, series, rawSeriesIndex); + }, this); + }, + + /** + * Iterate raw series before filtered. + * + * @param {Function} cb + * @param {*} context + */ + eachRawSeries: function (cb, context) { + each(this._componentsMap.get('series'), cb, context); + }, + + /** + * After filtering, series may be different. + * frome raw series. + * + * @parma {string} subType + * @param {Function} cb + * @param {*} context + */ + eachSeriesByType: function (subType, cb, context) { + assertSeriesInitialized(this); + each(this._seriesIndices, function (rawSeriesIndex) { + var series = this._componentsMap.get('series')[rawSeriesIndex]; + if (series.subType === subType) { + cb.call(context, series, rawSeriesIndex); + } + }, this); + }, + + /** + * Iterate raw series before filtered of given type. + * + * @parma {string} subType + * @param {Function} cb + * @param {*} context + */ + eachRawSeriesByType: function (subType, cb, context) { + return each(this.getSeriesByType(subType), cb, context); + }, + + /** + * @param {module:echarts/model/Series} seriesModel + */ + isSeriesFiltered: function (seriesModel) { + assertSeriesInitialized(this); + return zrUtil.indexOf(this._seriesIndices, seriesModel.componentIndex) < 0; + }, + + /** + * @return {Array.} + */ + getCurrentSeriesIndices: function () { + return (this._seriesIndices || []).slice(); + }, + + /** + * @param {Function} cb + * @param {*} context + */ + filterSeries: function (cb, context) { + assertSeriesInitialized(this); + var filteredSeries = filter( + this._componentsMap.get('series'), cb, context + ); + this._seriesIndices = createSeriesIndices(filteredSeries); + }, + + restoreData: function () { + var componentsMap = this._componentsMap; + + this._seriesIndices = createSeriesIndices(componentsMap.get('series')); + + var componentTypes = []; + componentsMap.each(function (components, componentType) { + componentTypes.push(componentType); + }); + + ComponentModel.topologicalTravel( + componentTypes, + ComponentModel.getAllClassMainTypes(), + function (componentType, dependencies) { + each(componentsMap.get(componentType), function (component) { + component.restoreData(); + }); + } + ); + } + + }); + + /** + * @inner + */ + function mergeTheme(option, theme) { + zrUtil.each(theme, function (themeItem, name) { + // 如果有 component model 则把具体的 merge 逻辑交给该 model 处理 + if (!ComponentModel.hasClass(name)) { + if (typeof themeItem === 'object') { + option[name] = !option[name] + ? zrUtil.clone(themeItem) + : zrUtil.merge(option[name], themeItem, false); + } + else { + if (option[name] == null) { + option[name] = themeItem; + } + } + } + }); + } + + function initBase(baseOption) { + baseOption = baseOption; + + // Using OPTION_INNER_KEY to mark that this option can not be used outside, + // i.e. `chart.setOption(chart.getModel().option);` is forbiden. + this.option = {}; + this.option[OPTION_INNER_KEY] = 1; + + /** + * Init with series: [], in case of calling findSeries method + * before series initialized. + * @type {Object.>} + * @private + */ + this._componentsMap = zrUtil.createHashMap({series: []}); + + /** + * Mapping between filtered series list and raw series list. + * key: filtered series indices, value: raw series indices. + * @type {Array.} + * @private + */ + this._seriesIndices = null; + + mergeTheme(baseOption, this._theme.option); + + // TODO Needs clone when merging to the unexisted property + zrUtil.merge(baseOption, globalDefault, false); + + this.mergeOption(baseOption); + } + + /** + * @inner + * @param {Array.|string} types model types + * @return {Object} key: {string} type, value: {Array.} models + */ + function getComponentsByTypes(componentsMap, types) { + if (!zrUtil.isArray(types)) { + types = types ? [types] : []; + } + + var ret = {}; + each(types, function (type) { + ret[type] = (componentsMap.get(type) || []).slice(); + }); + + return ret; + } + + /** + * @inner + */ + function determineSubType(mainType, newCptOption, existComponent) { + var subType = newCptOption.type + ? newCptOption.type + : existComponent + ? existComponent.subType + // Use determineSubType only when there is no existComponent. + : ComponentModel.determineSubType(mainType, newCptOption); + + // tooltip, markline, markpoint may always has no subType + return subType; + } + + /** + * @inner + */ + function createSeriesIndices(seriesModels) { + return map(seriesModels, function (series) { + return series.componentIndex; + }) || []; + } + + /** + * @inner + */ + function filterBySubType(components, condition) { + // Using hasOwnProperty for restrict. Consider + // subType is undefined in user payload. + return condition.hasOwnProperty('subType') + ? filter(components, function (cpt) { + return cpt.subType === condition.subType; + }) + : components; + } + + /** + * @inner + */ + function assertSeriesInitialized(ecModel) { + // Components that use _seriesIndices should depends on series component, + // which make sure that their initialization is after series. + if (true) { + if (!ecModel._seriesIndices) { + throw new Error('Option should contains series.'); + } + } + } + + zrUtil.mixin(GlobalModel, __webpack_require__(74)); + + module.exports = GlobalModel; + + +/***/ }, +/* 4 */ +/***/ function(module, exports) { + + /** + * @module zrender/core/util + */ + + + // 用于处理merge时无法遍历Date等对象的问题 + var BUILTIN_OBJECT = { + '[object Function]': 1, + '[object RegExp]': 1, + '[object Date]': 1, + '[object Error]': 1, + '[object CanvasGradient]': 1, + '[object CanvasPattern]': 1, + // For node-canvas + '[object Image]': 1, + '[object Canvas]': 1 + }; + + var TYPED_ARRAY = { + '[object Int8Array]': 1, + '[object Uint8Array]': 1, + '[object Uint8ClampedArray]': 1, + '[object Int16Array]': 1, + '[object Uint16Array]': 1, + '[object Int32Array]': 1, + '[object Uint32Array]': 1, + '[object Float32Array]': 1, + '[object Float64Array]': 1 + }; + + var objToString = Object.prototype.toString; + + var arrayProto = Array.prototype; + var nativeForEach = arrayProto.forEach; + var nativeFilter = arrayProto.filter; + var nativeSlice = arrayProto.slice; + var nativeMap = arrayProto.map; + var nativeReduce = arrayProto.reduce; + + /** + * Those data types can be cloned: + * Plain object, Array, TypedArray, number, string, null, undefined. + * Those data types will be assgined using the orginal data: + * BUILTIN_OBJECT + * Instance of user defined class will be cloned to a plain object, without + * properties in prototype. + * Other data types is not supported (not sure what will happen). + * + * Caution: do not support clone Date, for performance consideration. + * (There might be a large number of date in `series.data`). + * So date should not be modified in and out of echarts. + * + * @param {*} source + * @return {*} new + */ + function clone(source) { + if (source == null || typeof source != 'object') { + return source; + } + + var result = source; + var typeStr = objToString.call(source); + + if (typeStr === '[object Array]') { + result = []; + for (var i = 0, len = source.length; i < len; i++) { + result[i] = clone(source[i]); + } + } + else if (TYPED_ARRAY[typeStr]) { + result = source.constructor.from(source); + } + else if (!BUILTIN_OBJECT[typeStr] && !isPrimitive(source) && !isDom(source)) { + result = {}; + for (var key in source) { + if (source.hasOwnProperty(key)) { + result[key] = clone(source[key]); + } + } + } + + return result; + } + + /** + * @memberOf module:zrender/core/util + * @param {*} target + * @param {*} source + * @param {boolean} [overwrite=false] + */ + function merge(target, source, overwrite) { + // We should escapse that source is string + // and enter for ... in ... + if (!isObject(source) || !isObject(target)) { + return overwrite ? clone(source) : target; + } + + for (var key in source) { + if (source.hasOwnProperty(key)) { + var targetProp = target[key]; + var sourceProp = source[key]; + + if (isObject(sourceProp) + && isObject(targetProp) + && !isArray(sourceProp) + && !isArray(targetProp) + && !isDom(sourceProp) + && !isDom(targetProp) + && !isBuiltInObject(sourceProp) + && !isBuiltInObject(targetProp) + && !isPrimitive(sourceProp) + && !isPrimitive(targetProp) + ) { + // 如果需要递归覆盖,就递归调用merge + merge(targetProp, sourceProp, overwrite); + } + else if (overwrite || !(key in target)) { + // 否则只处理overwrite为true,或者在目标对象中没有此属性的情况 + // NOTE,在 target[key] 不存在的时候也是直接覆盖 + target[key] = clone(source[key], true); + } + } + } + + return target; + } + + /** + * @param {Array} targetAndSources The first item is target, and the rests are source. + * @param {boolean} [overwrite=false] + * @return {*} target + */ + function mergeAll(targetAndSources, overwrite) { + var result = targetAndSources[0]; + for (var i = 1, len = targetAndSources.length; i < len; i++) { + result = merge(result, targetAndSources[i], overwrite); + } + return result; + } + + /** + * @param {*} target + * @param {*} source + * @memberOf module:zrender/core/util + */ + function extend(target, source) { + for (var key in source) { + if (source.hasOwnProperty(key)) { + target[key] = source[key]; + } + } + return target; + } + + /** + * @param {*} target + * @param {*} source + * @param {boolen} [overlay=false] + * @memberOf module:zrender/core/util + */ + function defaults(target, source, overlay) { + for (var key in source) { + if (source.hasOwnProperty(key) + && (overlay ? source[key] != null : target[key] == null) + ) { + target[key] = source[key]; + } + } + return target; + } + + function createCanvas() { + return document.createElement('canvas'); + } + // FIXME + var _ctx; + function getContext() { + if (!_ctx) { + // Use util.createCanvas instead of createCanvas + // because createCanvas may be overwritten in different environment + _ctx = util.createCanvas().getContext('2d'); + } + return _ctx; + } + + /** + * 查询数组中元素的index + * @memberOf module:zrender/core/util + */ + function indexOf(array, value) { + if (array) { + if (array.indexOf) { + return array.indexOf(value); + } + for (var i = 0, len = array.length; i < len; i++) { + if (array[i] === value) { + return i; + } + } + } + return -1; + } + + /** + * 构造类继承关系 + * + * @memberOf module:zrender/core/util + * @param {Function} clazz 源类 + * @param {Function} baseClazz 基类 + */ + function inherits(clazz, baseClazz) { + var clazzPrototype = clazz.prototype; + function F() {} + F.prototype = baseClazz.prototype; + clazz.prototype = new F(); + + for (var prop in clazzPrototype) { + clazz.prototype[prop] = clazzPrototype[prop]; + } + clazz.prototype.constructor = clazz; + clazz.superClass = baseClazz; + } + + /** + * @memberOf module:zrender/core/util + * @param {Object|Function} target + * @param {Object|Function} sorce + * @param {boolean} overlay + */ + function mixin(target, source, overlay) { + target = 'prototype' in target ? target.prototype : target; + source = 'prototype' in source ? source.prototype : source; + + defaults(target, source, overlay); + } + + /** + * Consider typed array. + * @param {Array|TypedArray} data + */ + function isArrayLike(data) { + if (! data) { + return; + } + if (typeof data == 'string') { + return false; + } + return typeof data.length == 'number'; + } + + /** + * 数组或对象遍历 + * @memberOf module:zrender/core/util + * @param {Object|Array} obj + * @param {Function} cb + * @param {*} [context] + */ + function each(obj, cb, context) { + if (!(obj && cb)) { + return; + } + if (obj.forEach && obj.forEach === nativeForEach) { + obj.forEach(cb, context); + } + else if (obj.length === +obj.length) { + for (var i = 0, len = obj.length; i < len; i++) { + cb.call(context, obj[i], i, obj); + } + } + else { + for (var key in obj) { + if (obj.hasOwnProperty(key)) { + cb.call(context, obj[key], key, obj); + } + } + } + } + + /** + * 数组映射 + * @memberOf module:zrender/core/util + * @param {Array} obj + * @param {Function} cb + * @param {*} [context] + * @return {Array} + */ + function map(obj, cb, context) { + if (!(obj && cb)) { + return; + } + if (obj.map && obj.map === nativeMap) { + return obj.map(cb, context); + } + else { + var result = []; + for (var i = 0, len = obj.length; i < len; i++) { + result.push(cb.call(context, obj[i], i, obj)); + } + return result; + } + } + + /** + * @memberOf module:zrender/core/util + * @param {Array} obj + * @param {Function} cb + * @param {Object} [memo] + * @param {*} [context] + * @return {Array} + */ + function reduce(obj, cb, memo, context) { + if (!(obj && cb)) { + return; + } + if (obj.reduce && obj.reduce === nativeReduce) { + return obj.reduce(cb, memo, context); + } + else { + for (var i = 0, len = obj.length; i < len; i++) { + memo = cb.call(context, memo, obj[i], i, obj); + } + return memo; + } + } + + /** + * 数组过滤 + * @memberOf module:zrender/core/util + * @param {Array} obj + * @param {Function} cb + * @param {*} [context] + * @return {Array} + */ + function filter(obj, cb, context) { + if (!(obj && cb)) { + return; + } + if (obj.filter && obj.filter === nativeFilter) { + return obj.filter(cb, context); + } + else { + var result = []; + for (var i = 0, len = obj.length; i < len; i++) { + if (cb.call(context, obj[i], i, obj)) { + result.push(obj[i]); + } + } + return result; + } + } + + /** + * 数组项查找 + * @memberOf module:zrender/core/util + * @param {Array} obj + * @param {Function} cb + * @param {*} [context] + * @return {Array} + */ + function find(obj, cb, context) { + if (!(obj && cb)) { + return; + } + for (var i = 0, len = obj.length; i < len; i++) { + if (cb.call(context, obj[i], i, obj)) { + return obj[i]; + } + } + } + + /** + * @memberOf module:zrender/core/util + * @param {Function} func + * @param {*} context + * @return {Function} + */ + function bind(func, context) { + var args = nativeSlice.call(arguments, 2); + return function () { + return func.apply(context, args.concat(nativeSlice.call(arguments))); + }; + } + + /** + * @memberOf module:zrender/core/util + * @param {Function} func + * @return {Function} + */ + function curry(func) { + var args = nativeSlice.call(arguments, 1); + return function () { + return func.apply(this, args.concat(nativeSlice.call(arguments))); + }; + } + + /** + * @memberOf module:zrender/core/util + * @param {*} value + * @return {boolean} + */ + function isArray(value) { + return objToString.call(value) === '[object Array]'; + } + + /** + * @memberOf module:zrender/core/util + * @param {*} value + * @return {boolean} + */ + function isFunction(value) { + return typeof value === 'function'; + } + + /** + * @memberOf module:zrender/core/util + * @param {*} value + * @return {boolean} + */ + function isString(value) { + return objToString.call(value) === '[object String]'; + } + + /** + * @memberOf module:zrender/core/util + * @param {*} value + * @return {boolean} + */ + function isObject(value) { + // Avoid a V8 JIT bug in Chrome 19-20. + // See https://code.google.com/p/v8/issues/detail?id=2291 for more details. + var type = typeof value; + return type === 'function' || (!!value && type == 'object'); + } + + /** + * @memberOf module:zrender/core/util + * @param {*} value + * @return {boolean} + */ + function isBuiltInObject(value) { + return !!BUILTIN_OBJECT[objToString.call(value)]; + } + + /** + * @memberOf module:zrender/core/util + * @param {*} value + * @return {boolean} + */ + function isDom(value) { + return typeof value === 'object' + && typeof value.nodeType === 'number' + && typeof value.ownerDocument === 'object'; + } + + /** + * Whether is exactly NaN. Notice isNaN('a') returns true. + * @param {*} value + * @return {boolean} + */ + function eqNaN(value) { + return value !== value; + } + + /** + * If value1 is not null, then return value1, otherwise judget rest of values. + * @memberOf module:zrender/core/util + * @return {*} Final value + */ + function retrieve(values) { + for (var i = 0, len = arguments.length; i < len; i++) { + if (arguments[i] != null) { + return arguments[i]; + } + } + } + + /** + * @memberOf module:zrender/core/util + * @param {Array} arr + * @param {number} startIndex + * @param {number} endIndex + * @return {Array} + */ + function slice() { + return Function.call.apply(nativeSlice, arguments); + } + + /** + * @memberOf module:zrender/core/util + * @param {boolean} condition + * @param {string} message + */ + function assert(condition, message) { + if (!condition) { + throw new Error(message); + } + } + + var primitiveKey = '__ec_primitive__'; + /** + * Set an object as primitive to be ignored traversing children in clone or merge + */ + function setAsPrimitive(obj) { + obj[primitiveKey] = true; + } + + function isPrimitive(obj) { + return obj[primitiveKey]; + } + + /** + * @constructor + * @param {Object} obj Only apply `ownProperty`. + */ + function HashMap(obj) { + obj && each(obj, function (value, key) { + this.set(key, value); + }, this); + } + + // Add prefix to avoid conflict with Object.prototype. + var HASH_MAP_PREFIX = '_ec_'; + var HASH_MAP_PREFIX_LENGTH = 4; + + HashMap.prototype = { + constructor: HashMap, + // Do not provide `has` method to avoid defining what is `has`. + // (We usually treat `null` and `undefined` as the same, different + // from ES6 Map). + get: function (key) { + return this[HASH_MAP_PREFIX + key]; + }, + set: function (key, value) { + this[HASH_MAP_PREFIX + key] = value; + // Comparing with invocation chaining, `return value` is more commonly + // used in this case: `var someVal = map.set('a', genVal());` + return value; + }, + // Although util.each can be performed on this hashMap directly, user + // should not use the exposed keys, who are prefixed. + each: function (cb, context) { + context !== void 0 && (cb = bind(cb, context)); + for (var prefixedKey in this) { + this.hasOwnProperty(prefixedKey) + && cb(this[prefixedKey], prefixedKey.slice(HASH_MAP_PREFIX_LENGTH)); + } + }, + // Do not use this method if performance sensitive. + removeKey: function (key) { + delete this[key]; + } + }; + + function createHashMap(obj) { + return new HashMap(obj); + } + + var util = { + inherits: inherits, + mixin: mixin, + clone: clone, + merge: merge, + mergeAll: mergeAll, + extend: extend, + defaults: defaults, + getContext: getContext, + createCanvas: createCanvas, + indexOf: indexOf, + slice: slice, + find: find, + isArrayLike: isArrayLike, + each: each, + map: map, + reduce: reduce, + filter: filter, + bind: bind, + curry: curry, + isArray: isArray, + isString: isString, + isObject: isObject, + isFunction: isFunction, + isBuiltInObject: isBuiltInObject, + isDom: isDom, + eqNaN: eqNaN, + retrieve: retrieve, + assert: assert, + setAsPrimitive: setAsPrimitive, + createHashMap: createHashMap, + noop: function () {} + }; + module.exports = util; + + + +/***/ }, +/* 5 */ +/***/ function(module, exports, __webpack_require__) { + + + + var formatUtil = __webpack_require__(6); + var nubmerUtil = __webpack_require__(7); + var Model = __webpack_require__(12); + var zrUtil = __webpack_require__(4); + var each = zrUtil.each; + var isObject = zrUtil.isObject; + + var modelUtil = {}; + + /** + * If value is not array, then translate it to array. + * @param {*} value + * @return {Array} [value] or value + */ + modelUtil.normalizeToArray = function (value) { + return value instanceof Array + ? value + : value == null + ? [] + : [value]; + }; + + /** + * Sync default option between normal and emphasis like `position` and `show` + * In case some one will write code like + * label: { + * normal: { + * show: false, + * position: 'outside', + * textStyle: { + * fontSize: 18 + * } + * }, + * emphasis: { + * show: true + * } + * } + * @param {Object} opt + * @param {Array.} subOpts + */ + modelUtil.defaultEmphasis = function (opt, subOpts) { + if (opt) { + var emphasisOpt = opt.emphasis = opt.emphasis || {}; + var normalOpt = opt.normal = opt.normal || {}; + + // Default emphasis option from normal + each(subOpts, function (subOptName) { + var val = zrUtil.retrieve(emphasisOpt[subOptName], normalOpt[subOptName]); + if (val != null) { + emphasisOpt[subOptName] = val; + } + }); + } + }; + + modelUtil.LABEL_OPTIONS = ['position', 'offset', 'show', 'textStyle', 'distance', 'formatter']; + + /** + * data could be [12, 2323, {value: 223}, [1221, 23], {value: [2, 23]}] + * This helper method retieves value from data. + * @param {string|number|Date|Array|Object} dataItem + * @return {number|string|Date|Array.} + */ + modelUtil.getDataItemValue = function (dataItem) { + // Performance sensitive. + return dataItem && (dataItem.value == null ? dataItem : dataItem.value); + }; + + /** + * data could be [12, 2323, {value: 223}, [1221, 23], {value: [2, 23]}] + * This helper method determine if dataItem has extra option besides value + * @param {string|number|Date|Array|Object} dataItem + */ + modelUtil.isDataItemOption = function (dataItem) { + return isObject(dataItem) + && !(dataItem instanceof Array); + // // markLine data can be array + // && !(dataItem[0] && isObject(dataItem[0]) && !(dataItem[0] instanceof Array)); + }; + + /** + * This helper method convert value in data. + * @param {string|number|Date} value + * @param {Object|string} [dimInfo] If string (like 'x'), dimType defaults 'number'. + */ + modelUtil.converDataValue = function (value, dimInfo) { + // Performance sensitive. + var dimType = dimInfo && dimInfo.type; + if (dimType === 'ordinal') { + return value; + } + + if (dimType === 'time' + // spead up when using timestamp + && typeof value !== 'number' + && value != null + && value !== '-' + ) { + value = +nubmerUtil.parseDate(value); + } + + // dimType defaults 'number'. + // If dimType is not ordinal and value is null or undefined or NaN or '-', + // parse to NaN. + return (value == null || value === '') + ? NaN : +value; // If string (like '-'), using '+' parse to NaN + }; + + /** + * Create a model proxy to be used in tooltip for edge data, markLine data, markPoint data. + * @param {module:echarts/data/List} data + * @param {Object} opt + * @param {string} [opt.seriesIndex] + * @param {Object} [opt.name] + * @param {Object} [opt.mainType] + * @param {Object} [opt.subType] + */ + modelUtil.createDataFormatModel = function (data, opt) { + var model = new Model(); + zrUtil.mixin(model, modelUtil.dataFormatMixin); + model.seriesIndex = opt.seriesIndex; + model.name = opt.name || ''; + model.mainType = opt.mainType; + model.subType = opt.subType; + + model.getData = function () { + return data; + }; + return model; + }; + + // PENDING A little ugly + modelUtil.dataFormatMixin = { + /** + * Get params for formatter + * @param {number} dataIndex + * @param {string} [dataType] + * @return {Object} + */ + getDataParams: function (dataIndex, dataType) { + var data = this.getData(dataType); + var rawValue = this.getRawValue(dataIndex, dataType); + var rawDataIndex = data.getRawIndex(dataIndex); + var name = data.getName(dataIndex, true); + var itemOpt = data.getRawDataItem(dataIndex); + var color = data.getItemVisual(dataIndex, 'color'); + + return { + componentType: this.mainType, + componentSubType: this.subType, + seriesType: this.mainType === 'series' ? this.subType : null, + seriesIndex: this.seriesIndex, + seriesId: this.id, + seriesName: this.name, + name: name, + dataIndex: rawDataIndex, + data: itemOpt, + dataType: dataType, + value: rawValue, + color: color, + marker: formatUtil.getTooltipMarker(color), + + // Param name list for mapping `a`, `b`, `c`, `d`, `e` + $vars: ['seriesName', 'name', 'value'] + }; + }, + + /** + * Format label + * @param {number} dataIndex + * @param {string} [status='normal'] 'normal' or 'emphasis' + * @param {string} [dataType] + * @param {number} [dimIndex] + * @param {string} [labelProp='label'] + * @return {string} + */ + getFormattedLabel: function (dataIndex, status, dataType, dimIndex, labelProp) { + status = status || 'normal'; + var data = this.getData(dataType); + var itemModel = data.getItemModel(dataIndex); + + var params = this.getDataParams(dataIndex, dataType); + if (dimIndex != null && (params.value instanceof Array)) { + params.value = params.value[dimIndex]; + } + + var formatter = itemModel.get([labelProp || 'label', status, 'formatter']); + + if (typeof formatter === 'function') { + params.status = status; + return formatter(params); + } + else if (typeof formatter === 'string') { + return formatUtil.formatTpl(formatter, params); + } + }, + + /** + * Get raw value in option + * @param {number} idx + * @param {string} [dataType] + * @return {Object} + */ + getRawValue: function (idx, dataType) { + var data = this.getData(dataType); + var dataItem = data.getRawDataItem(idx); + if (dataItem != null) { + return (isObject(dataItem) && !(dataItem instanceof Array)) + ? dataItem.value : dataItem; + } + }, + + /** + * Should be implemented. + * @param {number} dataIndex + * @param {boolean} [multipleSeries=false] + * @param {number} [dataType] + * @return {string} tooltip string + */ + formatTooltip: zrUtil.noop + }; + + /** + * Mapping to exists for merge. + * + * @public + * @param {Array.|Array.} exists + * @param {Object|Array.} newCptOptions + * @return {Array.} Result, like [{exist: ..., option: ...}, {}], + * index of which is the same as exists. + */ + modelUtil.mappingToExists = function (exists, newCptOptions) { + // Mapping by the order by original option (but not order of + // new option) in merge mode. Because we should ensure + // some specified index (like xAxisIndex) is consistent with + // original option, which is easy to understand, espatially in + // media query. And in most case, merge option is used to + // update partial option but not be expected to change order. + newCptOptions = (newCptOptions || []).slice(); + + var result = zrUtil.map(exists || [], function (obj, index) { + return {exist: obj}; + }); + + // Mapping by id or name if specified. + each(newCptOptions, function (cptOption, index) { + if (!isObject(cptOption)) { + return; + } + + // id has highest priority. + for (var i = 0; i < result.length; i++) { + if (!result[i].option // Consider name: two map to one. + && cptOption.id != null + && result[i].exist.id === cptOption.id + '' + ) { + result[i].option = cptOption; + newCptOptions[index] = null; + return; + } + } + + for (var i = 0; i < result.length; i++) { + var exist = result[i].exist; + if (!result[i].option // Consider name: two map to one. + // Can not match when both ids exist but different. + && (exist.id == null || cptOption.id == null) + && cptOption.name != null + && !modelUtil.isIdInner(cptOption) + && !modelUtil.isIdInner(exist) + && exist.name === cptOption.name + '' + ) { + result[i].option = cptOption; + newCptOptions[index] = null; + return; + } + } + }); + + // Otherwise mapping by index. + each(newCptOptions, function (cptOption, index) { + if (!isObject(cptOption)) { + return; + } + + var i = 0; + for (; i < result.length; i++) { + var exist = result[i].exist; + if (!result[i].option + // Existing model that already has id should be able to + // mapped to (because after mapping performed model may + // be assigned with a id, whish should not affect next + // mapping), except those has inner id. + && !modelUtil.isIdInner(exist) + // Caution: + // Do not overwrite id. But name can be overwritten, + // because axis use name as 'show label text'. + // 'exist' always has id and name and we dont + // need to check it. + && cptOption.id == null + ) { + result[i].option = cptOption; + break; + } + } + + if (i >= result.length) { + result.push({option: cptOption}); + } + }); + + return result; + }; + + /** + * Make id and name for mapping result (result of mappingToExists) + * into `keyInfo` field. + * + * @public + * @param {Array.} Result, like [{exist: ..., option: ...}, {}], + * which order is the same as exists. + * @return {Array.} The input. + */ + modelUtil.makeIdAndName = function (mapResult) { + // We use this id to hash component models and view instances + // in echarts. id can be specified by user, or auto generated. + + // The id generation rule ensures new view instance are able + // to mapped to old instance when setOption are called in + // no-merge mode. So we generate model id by name and plus + // type in view id. + + // name can be duplicated among components, which is convenient + // to specify multi components (like series) by one name. + + // Ensure that each id is distinct. + var idMap = zrUtil.createHashMap(); + + each(mapResult, function (item, index) { + var existCpt = item.exist; + existCpt && idMap.set(existCpt.id, item); + }); + + each(mapResult, function (item, index) { + var opt = item.option; + + zrUtil.assert( + !opt || opt.id == null || !idMap.get(opt.id) || idMap.get(opt.id) === item, + 'id duplicates: ' + (opt && opt.id) + ); + + opt && opt.id != null && idMap.set(opt.id, item); + !item.keyInfo && (item.keyInfo = {}); + }); + + // Make name and id. + each(mapResult, function (item, index) { + var existCpt = item.exist; + var opt = item.option; + var keyInfo = item.keyInfo; + + if (!isObject(opt)) { + return; + } + + // name can be overwitten. Consider case: axis.name = '20km'. + // But id generated by name will not be changed, which affect + // only in that case: setOption with 'not merge mode' and view + // instance will be recreated, which can be accepted. + keyInfo.name = opt.name != null + ? opt.name + '' + : existCpt + ? existCpt.name + : '\0-'; // name may be displayed on screen, so use '-'. + + if (existCpt) { + keyInfo.id = existCpt.id; + } + else if (opt.id != null) { + keyInfo.id = opt.id + ''; + } + else { + // Consider this situatoin: + // optionA: [{name: 'a'}, {name: 'a'}, {..}] + // optionB [{..}, {name: 'a'}, {name: 'a'}] + // Series with the same name between optionA and optionB + // should be mapped. + var idNum = 0; + do { + keyInfo.id = '\0' + keyInfo.name + '\0' + idNum++; + } + while (idMap.get(keyInfo.id)); + } + + idMap.set(keyInfo.id, item); + }); + }; + + /** + * @public + * @param {Object} cptOption + * @return {boolean} + */ + modelUtil.isIdInner = function (cptOption) { + return isObject(cptOption) + && cptOption.id + && (cptOption.id + '').indexOf('\0_ec_\0') === 0; + }; + + /** + * A helper for removing duplicate items between batchA and batchB, + * and in themselves, and categorize by series. + * + * @param {Array.} batchA Like: [{seriesId: 2, dataIndex: [32, 4, 5]}, ...] + * @param {Array.} batchB Like: [{seriesId: 2, dataIndex: [32, 4, 5]}, ...] + * @return {Array., Array.>} result: [resultBatchA, resultBatchB] + */ + modelUtil.compressBatches = function (batchA, batchB) { + var mapA = {}; + var mapB = {}; + + makeMap(batchA || [], mapA); + makeMap(batchB || [], mapB, mapA); + + return [mapToArray(mapA), mapToArray(mapB)]; + + function makeMap(sourceBatch, map, otherMap) { + for (var i = 0, len = sourceBatch.length; i < len; i++) { + var seriesId = sourceBatch[i].seriesId; + var dataIndices = modelUtil.normalizeToArray(sourceBatch[i].dataIndex); + var otherDataIndices = otherMap && otherMap[seriesId]; + + for (var j = 0, lenj = dataIndices.length; j < lenj; j++) { + var dataIndex = dataIndices[j]; + + if (otherDataIndices && otherDataIndices[dataIndex]) { + otherDataIndices[dataIndex] = null; + } + else { + (map[seriesId] || (map[seriesId] = {}))[dataIndex] = 1; + } + } + } + } + + function mapToArray(map, isData) { + var result = []; + for (var i in map) { + if (map.hasOwnProperty(i) && map[i] != null) { + if (isData) { + result.push(+i); + } + else { + var dataIndices = mapToArray(map[i], true); + dataIndices.length && result.push({seriesId: i, dataIndex: dataIndices}); + } + } + } + return result; + } + }; + + /** + * @param {module:echarts/data/List} data + * @param {Object} payload Contains dataIndex (means rawIndex) / dataIndexInside / name + * each of which can be Array or primary type. + * @return {number|Array.} dataIndex If not found, return undefined/null. + */ + modelUtil.queryDataIndex = function (data, payload) { + if (payload.dataIndexInside != null) { + return payload.dataIndexInside; + } + else if (payload.dataIndex != null) { + return zrUtil.isArray(payload.dataIndex) + ? zrUtil.map(payload.dataIndex, function (value) { + return data.indexOfRawIndex(value); + }) + : data.indexOfRawIndex(payload.dataIndex); + } + else if (payload.name != null) { + return zrUtil.isArray(payload.name) + ? zrUtil.map(payload.name, function (value) { + return data.indexOfName(value); + }) + : data.indexOfName(payload.name); + } + }; + + /** + * Enable property storage to any host object. + * Notice: Serialization is not supported. + * + * For example: + * var get = modelUitl.makeGetter(); + * + * function some(hostObj) { + * get(hostObj)._someProperty = 1212; + * ... + * } + * + * @return {Function} + */ + modelUtil.makeGetter = (function () { + var index = 0; + return function () { + var key = '\0__ec_prop_getter_' + index++; + return function (hostObj) { + return hostObj[key] || (hostObj[key] = {}); + }; + }; + })(); + + /** + * @param {module:echarts/model/Global} ecModel + * @param {string|Object} finder + * If string, e.g., 'geo', means {geoIndex: 0}. + * If Object, could contain some of these properties below: + * { + * seriesIndex, seriesId, seriesName, + * geoIndex, geoId, geoName, + * bmapIndex, bmapId, bmapName, + * xAxisIndex, xAxisId, xAxisName, + * yAxisIndex, yAxisId, yAxisName, + * gridIndex, gridId, gridName, + * ... (can be extended) + * } + * Each properties can be number|string|Array.|Array. + * For example, a finder could be + * { + * seriesIndex: 3, + * geoId: ['aa', 'cc'], + * gridName: ['xx', 'rr'] + * } + * xxxIndex can be set as 'all' (means all xxx) or 'none' (means not specify) + * If nothing or null/undefined specified, return nothing. + * @param {Object} [opt] + * @param {string} [opt.defaultMainType] + * @param {Array.} [opt.includeMainTypes] + * @return {Object} result like: + * { + * seriesModels: [seriesModel1, seriesModel2], + * seriesModel: seriesModel1, // The first model + * geoModels: [geoModel1, geoModel2], + * geoModel: geoModel1, // The first model + * ... + * } + */ + modelUtil.parseFinder = function (ecModel, finder, opt) { + if (zrUtil.isString(finder)) { + var obj = {}; + obj[finder + 'Index'] = 0; + finder = obj; + } + + var defaultMainType = opt && opt.defaultMainType; + if (defaultMainType + && !has(finder, defaultMainType + 'Index') + && !has(finder, defaultMainType + 'Id') + && !has(finder, defaultMainType + 'Name') + ) { + finder[defaultMainType + 'Index'] = 0; + } + + var result = {}; + + each(finder, function (value, key) { + var value = finder[key]; + + // Exclude 'dataIndex' and other illgal keys. + if (key === 'dataIndex' || key === 'dataIndexInside') { + result[key] = value; + return; + } + + var parsedKey = key.match(/^(\w+)(Index|Id|Name)$/) || []; + var mainType = parsedKey[1]; + var queryType = (parsedKey[2] || '').toLowerCase(); + + if (!mainType + || !queryType + || value == null + || (queryType === 'index' && value === 'none') + || (opt && opt.includeMainTypes && zrUtil.indexOf(opt.includeMainTypes, mainType) < 0) + ) { + return; + } + + var queryParam = {mainType: mainType}; + if (queryType !== 'index' || value !== 'all') { + queryParam[queryType] = value; + } + + var models = ecModel.queryComponents(queryParam); + result[mainType + 'Models'] = models; + result[mainType + 'Model'] = models[0]; + }); + + return result; + }; + + /** + * @see {module:echarts/data/helper/completeDimensions} + * @param {module:echarts/data/List} data + * @param {string|number} dataDim + * @return {string} + */ + modelUtil.dataDimToCoordDim = function (data, dataDim) { + var dimensions = data.dimensions; + dataDim = data.getDimension(dataDim); + for (var i = 0; i < dimensions.length; i++) { + var dimItem = data.getDimensionInfo(dimensions[i]); + if (dimItem.name === dataDim) { + return dimItem.coordDim; + } + } + }; + + /** + * @see {module:echarts/data/helper/completeDimensions} + * @param {module:echarts/data/List} data + * @param {string} coordDim + * @return {Array.} data dimensions on the coordDim. + */ + modelUtil.coordDimToDataDim = function (data, coordDim) { + var dataDim = []; + each(data.dimensions, function (dimName) { + var dimItem = data.getDimensionInfo(dimName); + if (dimItem.coordDim === coordDim) { + dataDim[dimItem.coordDimIndex] = dimItem.name; + } + }); + return dataDim; + }; + + /** + * @see {module:echarts/data/helper/completeDimensions} + * @param {module:echarts/data/List} data + * @param {string} otherDim Can be `otherDims` + * like 'label' or 'tooltip'. + * @return {Array.} data dimensions on the otherDim. + */ + modelUtil.otherDimToDataDim = function (data, otherDim) { + var dataDim = []; + each(data.dimensions, function (dimName) { + var dimItem = data.getDimensionInfo(dimName); + var otherDims = dimItem.otherDims; + var dimIndex = otherDims[otherDim]; + if (dimIndex != null && dimIndex !== false) { + dataDim[dimIndex] = dimItem.name; + } + }); + return dataDim; + }; + + function has(obj, prop) { + return obj && obj.hasOwnProperty(prop); + } + + module.exports = modelUtil; + + + +/***/ }, +/* 6 */ +/***/ function(module, exports, __webpack_require__) { + + + + var zrUtil = __webpack_require__(4); + var numberUtil = __webpack_require__(7); + var textContain = __webpack_require__(8); + + var formatUtil = {}; + + /** + * 每三位默认加,格式化 + * @param {string|number} x + * @return {string} + */ + formatUtil.addCommas = function (x) { + if (isNaN(x)) { + return '-'; + } + x = (x + '').split('.'); + return x[0].replace(/(\d{1,3})(?=(?:\d{3})+(?!\d))/g,'$1,') + + (x.length > 1 ? ('.' + x[1]) : ''); + }; + + /** + * @param {string} str + * @param {boolean} [upperCaseFirst=false] + * @return {string} str + */ + formatUtil.toCamelCase = function (str, upperCaseFirst) { + str = (str || '').toLowerCase().replace(/-(.)/g, function(match, group1) { + return group1.toUpperCase(); + }); + + if (upperCaseFirst && str) { + str = str.charAt(0).toUpperCase() + str.slice(1); + } + + return str; + }; + + /** + * Normalize css liked array configuration + * e.g. + * 3 => [3, 3, 3, 3] + * [4, 2] => [4, 2, 4, 2] + * [4, 3, 2] => [4, 3, 2, 3] + * @param {number|Array.} val + */ + formatUtil.normalizeCssArray = function (val) { + var len = val.length; + if (typeof (val) === 'number') { + return [val, val, val, val]; + } + else if (len === 2) { + // vertical | horizontal + return [val[0], val[1], val[0], val[1]]; + } + else if (len === 3) { + // top | horizontal | bottom + return [val[0], val[1], val[2], val[1]]; + } + return val; + }; + + var encodeHTML = formatUtil.encodeHTML = function (source) { + return String(source) + .replace(/&/g, '&') + .replace(//g, '>') + .replace(/"/g, '"') + .replace(/'/g, '''); + }; + + var TPL_VAR_ALIAS = ['a', 'b', 'c', 'd', 'e', 'f', 'g']; + + var wrapVar = function (varName, seriesIdx) { + return '{' + varName + (seriesIdx == null ? '' : seriesIdx) + '}'; + }; + + /** + * Template formatter + * @param {string} tpl + * @param {Array.|Object} paramsList + * @param {boolean} [encode=false] + * @return {string} + */ + formatUtil.formatTpl = function (tpl, paramsList, encode) { + if (!zrUtil.isArray(paramsList)) { + paramsList = [paramsList]; + } + var seriesLen = paramsList.length; + if (!seriesLen) { + return ''; + } + + var $vars = paramsList[0].$vars || []; + for (var i = 0; i < $vars.length; i++) { + var alias = TPL_VAR_ALIAS[i]; + var val = wrapVar(alias, 0); + tpl = tpl.replace(wrapVar(alias), encode ? encodeHTML(val) : val); + } + for (var seriesIdx = 0; seriesIdx < seriesLen; seriesIdx++) { + for (var k = 0; k < $vars.length; k++) { + var val = paramsList[seriesIdx][$vars[k]]; + tpl = tpl.replace( + wrapVar(TPL_VAR_ALIAS[k], seriesIdx), + encode ? encodeHTML(val) : val + ); + } + } + + return tpl; + }; + + /** + * simple Template formatter + * + * @param {string} tpl + * @param {Object} param + * @param {boolean} [encode=false] + * @return {string} + */ + formatUtil.formatTplSimple = function (tpl, param, encode) { + zrUtil.each(param, function (value, key) { + tpl = tpl.replace( + '{' + key + '}', + encode ? encodeHTML(value) : value + ); + }); + return tpl; + }; + + /** + * @param {string} color + * @param {string} [extraCssText] + * @return {string} + */ + formatUtil.getTooltipMarker = function (color, extraCssText) { + return color + ? '' + : ''; + }; + + /** + * @param {string} str + * @return {string} + * @inner + */ + var s2d = function (str) { + return str < 10 ? ('0' + str) : str; + }; + + /** + * ISO Date format + * @param {string} tpl + * @param {number} value + * @param {boolean} [isUTC=false] Default in local time. + * see `module:echarts/scale/Time` + * and `module:echarts/util/number#parseDate`. + * @inner + */ + formatUtil.formatTime = function (tpl, value, isUTC) { + if (tpl === 'week' + || tpl === 'month' + || tpl === 'quarter' + || tpl === 'half-year' + || tpl === 'year' + ) { + tpl = 'MM-dd\nyyyy'; + } + + var date = numberUtil.parseDate(value); + var utc = isUTC ? 'UTC' : ''; + var y = date['get' + utc + 'FullYear'](); + var M = date['get' + utc + 'Month']() + 1; + var d = date['get' + utc + 'Date'](); + var h = date['get' + utc + 'Hours'](); + var m = date['get' + utc + 'Minutes'](); + var s = date['get' + utc + 'Seconds'](); + + tpl = tpl.replace('MM', s2d(M)) + .toLowerCase() + .replace('yyyy', y) + .replace('yy', y % 100) + .replace('dd', s2d(d)) + .replace('d', d) + .replace('hh', s2d(h)) + .replace('h', h) + .replace('mm', s2d(m)) + .replace('m', m) + .replace('ss', s2d(s)) + .replace('s', s); + + return tpl; + }; + + /** + * Capital first + * @param {string} str + * @return {string} + */ + formatUtil.capitalFirst = function (str) { + return str ? str.charAt(0).toUpperCase() + str.substr(1) : str; + }; + + formatUtil.truncateText = textContain.truncateText; + + module.exports = formatUtil; + + + +/***/ }, +/* 7 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * 数值处理模块 + * @module echarts/util/number + */ + + + + var zrUtil = __webpack_require__(4); + + var number = {}; + + var RADIAN_EPSILON = 1e-4; + + function _trim(str) { + return str.replace(/^\s+/, '').replace(/\s+$/, ''); + } + + /** + * Linear mapping a value from domain to range + * @memberOf module:echarts/util/number + * @param {(number|Array.)} val + * @param {Array.} domain Domain extent domain[0] can be bigger than domain[1] + * @param {Array.} range Range extent range[0] can be bigger than range[1] + * @param {boolean} clamp + * @return {(number|Array.} + */ + number.linearMap = function (val, domain, range, clamp) { + var subDomain = domain[1] - domain[0]; + var subRange = range[1] - range[0]; + + if (subDomain === 0) { + return subRange === 0 + ? range[0] + : (range[0] + range[1]) / 2; + } + + // Avoid accuracy problem in edge, such as + // 146.39 - 62.83 === 83.55999999999999. + // See echarts/test/ut/spec/util/number.js#linearMap#accuracyError + // It is a little verbose for efficiency considering this method + // is a hotspot. + if (clamp) { + if (subDomain > 0) { + if (val <= domain[0]) { + return range[0]; + } + else if (val >= domain[1]) { + return range[1]; + } + } + else { + if (val >= domain[0]) { + return range[0]; + } + else if (val <= domain[1]) { + return range[1]; + } + } + } + else { + if (val === domain[0]) { + return range[0]; + } + if (val === domain[1]) { + return range[1]; + } + } + + return (val - domain[0]) / subDomain * subRange + range[0]; + }; + + /** + * Convert a percent string to absolute number. + * Returns NaN if percent is not a valid string or number + * @memberOf module:echarts/util/number + * @param {string|number} percent + * @param {number} all + * @return {number} + */ + number.parsePercent = function(percent, all) { + switch (percent) { + case 'center': + case 'middle': + percent = '50%'; + break; + case 'left': + case 'top': + percent = '0%'; + break; + case 'right': + case 'bottom': + percent = '100%'; + break; + } + if (typeof percent === 'string') { + if (_trim(percent).match(/%$/)) { + return parseFloat(percent) / 100 * all; + } + + return parseFloat(percent); + } + + return percent == null ? NaN : +percent; + }; + + /** + * (1) Fix rounding error of float numbers. + * (2) Support return string to avoid scientific notation like '3.5e-7'. + * + * @param {number} x + * @param {number} [precision] + * @param {boolean} [returnStr] + * @return {number|string} + */ + number.round = function (x, precision, returnStr) { + if (precision == null) { + precision = 10; + } + // Avoid range error + precision = Math.min(Math.max(0, precision), 20); + x = (+x).toFixed(precision); + return returnStr ? x : +x; + }; + + number.asc = function (arr) { + arr.sort(function (a, b) { + return a - b; + }); + return arr; + }; + + /** + * Get precision + * @param {number} val + */ + number.getPrecision = function (val) { + val = +val; + if (isNaN(val)) { + return 0; + } + // It is much faster than methods converting number to string as follows + // var tmp = val.toString(); + // return tmp.length - 1 - tmp.indexOf('.'); + // especially when precision is low + var e = 1; + var count = 0; + while (Math.round(val * e) / e !== val) { + e *= 10; + count++; + } + return count; + }; + + /** + * @param {string|number} val + * @return {number} + */ + number.getPrecisionSafe = function (val) { + var str = val.toString(); + + // Consider scientific notation: '3.4e-12' '3.4e+12' + var eIndex = str.indexOf('e'); + if (eIndex > 0) { + var precision = +str.slice(eIndex + 1); + return precision < 0 ? -precision : 0; + } + else { + var dotIndex = str.indexOf('.'); + return dotIndex < 0 ? 0 : str.length - 1 - dotIndex; + } + }; + + /** + * Minimal dicernible data precisioin according to a single pixel. + * + * @param {Array.} dataExtent + * @param {Array.} pixelExtent + * @return {number} precision + */ + number.getPixelPrecision = function (dataExtent, pixelExtent) { + var log = Math.log; + var LN10 = Math.LN10; + var dataQuantity = Math.floor(log(dataExtent[1] - dataExtent[0]) / LN10); + var sizeQuantity = Math.round(log(Math.abs(pixelExtent[1] - pixelExtent[0])) / LN10); + // toFixed() digits argument must be between 0 and 20. + var precision = Math.min(Math.max(-dataQuantity + sizeQuantity, 0), 20); + return !isFinite(precision) ? 20 : precision; + }; + + /** + * Get a data of given precision, assuring the sum of percentages + * in valueList is 1. + * The largest remainer method is used. + * https://en.wikipedia.org/wiki/Largest_remainder_method + * + * @param {Array.} valueList a list of all data + * @param {number} idx index of the data to be processed in valueList + * @param {number} precision integer number showing digits of precision + * @return {number} percent ranging from 0 to 100 + */ + number.getPercentWithPrecision = function (valueList, idx, precision) { + if (!valueList[idx]) { + return 0; + } + + var sum = zrUtil.reduce(valueList, function (acc, val) { + return acc + (isNaN(val) ? 0 : val); + }, 0); + if (sum === 0) { + return 0; + } + + var digits = Math.pow(10, precision); + var votesPerQuota = zrUtil.map(valueList, function (val) { + return (isNaN(val) ? 0 : val) / sum * digits * 100; + }); + var targetSeats = digits * 100; + + var seats = zrUtil.map(votesPerQuota, function (votes) { + // Assign automatic seats. + return Math.floor(votes); + }); + var currentSum = zrUtil.reduce(seats, function (acc, val) { + return acc + val; + }, 0); + + var remainder = zrUtil.map(votesPerQuota, function (votes, idx) { + return votes - seats[idx]; + }); + + // Has remainding votes. + while (currentSum < targetSeats) { + // Find next largest remainder. + var max = Number.NEGATIVE_INFINITY; + var maxId = null; + for (var i = 0, len = remainder.length; i < len; ++i) { + if (remainder[i] > max) { + max = remainder[i]; + maxId = i; + } + } + + // Add a vote to max remainder. + ++seats[maxId]; + remainder[maxId] = 0; + ++currentSum; + } + + return seats[idx] / digits; + }; + + // Number.MAX_SAFE_INTEGER, ie do not support. + number.MAX_SAFE_INTEGER = 9007199254740991; + + /** + * To 0 - 2 * PI, considering negative radian. + * @param {number} radian + * @return {number} + */ + number.remRadian = function (radian) { + var pi2 = Math.PI * 2; + return (radian % pi2 + pi2) % pi2; + }; + + /** + * @param {type} radian + * @return {boolean} + */ + number.isRadianAroundZero = function (val) { + return val > -RADIAN_EPSILON && val < RADIAN_EPSILON; + }; + + var 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 + + /** + * @return {number} in minutes + */ + number.getTimezoneOffset = function () { + return (new Date()).getTimezoneOffset(); + }; + + /** + * @param {string|Date|number} value These values can be accepted: + * + An instance of Date, represent a time in its own time zone. + * + Or string in a subset of ISO 8601, only including: + * + only year, month, date: '2012-03', '2012-03-01', '2012-03-01 05', '2012-03-01 05:06', + * + separated with T or space: '2012-03-01T12:22:33.123', '2012-03-01 12:22:33.123', + * + time zone: '2012-03-01T12:22:33Z', '2012-03-01T12:22:33+8000', '2012-03-01T12:22:33-05:00', + * all of which will be treated as local time if time zone is not specified + * (see ). + * + Or other string format, including (all of which will be treated as loacal time): + * '2012', '2012-3-1', '2012/3/1', '2012/03/01', + * '2009/6/12 2:00', '2009/6/12 2:05:08', '2009/6/12 2:05:08.123' + * + a timestamp, which represent a time in UTC. + * @return {Date} date + */ + number.parseDate = function (value) { + if (value instanceof Date) { + return value; + } + else if (typeof value === 'string') { + // Different browsers parse date in different way, so we parse it manually. + // Some other issues: + // new Date('1970-01-01') is UTC, + // new Date('1970/01/01') and new Date('1970-1-01') is local. + // See issue #3623 + var match = TIME_REG.exec(value); + + if (!match) { + // return Invalid Date. + return new Date(NaN); + } + + var timezoneOffset = number.getTimezoneOffset(); + var timeOffset = !match[8] + ? 0 + : match[8].toUpperCase() === 'Z' + ? timezoneOffset + : +match[8].slice(0, 3) * 60 + timezoneOffset; + + // match[n] can only be string or undefined. + // But take care of '12' + 1 => '121'. + return new Date( + +match[1], + +(match[2] || 1) - 1, + +match[3] || 1, + +match[4] || 0, + +(match[5] || 0) - timeOffset, + +match[6] || 0, + +match[7] || 0 + ); + } + else if (value == null) { + return new Date(NaN); + } + + return new Date(Math.round(value)); + }; + + /** + * Quantity of a number. e.g. 0.1, 1, 10, 100 + * + * @param {number} val + * @return {number} + */ + number.quantity = function (val) { + return Math.pow(10, quantityExponent(val)); + }; + + function quantityExponent(val) { + return Math.floor(Math.log(val) / Math.LN10); + } + + /** + * find a “nice” number approximately equal to x. Round the number if round = true, + * take ceiling if round = false. The primary observation is that the “nicest” + * numbers in decimal are 1, 2, and 5, and all power-of-ten multiples of these numbers. + * + * See "Nice Numbers for Graph Labels" of Graphic Gems. + * + * @param {number} val Non-negative value. + * @param {boolean} round + * @return {number} + */ + number.nice = function (val, round) { + var exponent = quantityExponent(val); + var exp10 = Math.pow(10, exponent); + var f = val / exp10; // 1 <= f < 10 + var nf; + if (round) { + if (f < 1.5) { nf = 1; } + else if (f < 2.5) { nf = 2; } + else if (f < 4) { nf = 3; } + else if (f < 7) { nf = 5; } + else { nf = 10; } + } + else { + if (f < 1) { nf = 1; } + else if (f < 2) { nf = 2; } + else if (f < 3) { nf = 3; } + else if (f < 5) { nf = 5; } + else { nf = 10; } + } + val = nf * exp10; + + // Fix 3 * 0.1 === 0.30000000000000004 issue (see IEEE 754). + // 20 is the uppper bound of toFixed. + return exponent >= -20 ? +val.toFixed(exponent < 0 ? -exponent : 0) : val; + }; + + /** + * Order intervals asc, and split them when overlap. + * expect(numberUtil.reformIntervals([ + * {interval: [18, 62], close: [1, 1]}, + * {interval: [-Infinity, -70], close: [0, 0]}, + * {interval: [-70, -26], close: [1, 1]}, + * {interval: [-26, 18], close: [1, 1]}, + * {interval: [62, 150], close: [1, 1]}, + * {interval: [106, 150], close: [1, 1]}, + * {interval: [150, Infinity], close: [0, 0]} + * ])).toEqual([ + * {interval: [-Infinity, -70], close: [0, 0]}, + * {interval: [-70, -26], close: [1, 1]}, + * {interval: [-26, 18], close: [0, 1]}, + * {interval: [18, 62], close: [0, 1]}, + * {interval: [62, 150], close: [0, 1]}, + * {interval: [150, Infinity], close: [0, 0]} + * ]); + * @param {Array.} list, where `close` mean open or close + * of the interval, and Infinity can be used. + * @return {Array.} The origin list, which has been reformed. + */ + number.reformIntervals = function (list) { + list.sort(function (a, b) { + return littleThan(a, b, 0) ? -1 : 1; + }); + + var curr = -Infinity; + var currClose = 1; + for (var i = 0; i < list.length;) { + var interval = list[i].interval; + var close = list[i].close; + + for (var lg = 0; lg < 2; lg++) { + if (interval[lg] <= curr) { + interval[lg] = curr; + close[lg] = !lg ? 1 - currClose : 1; + } + curr = interval[lg]; + currClose = close[lg]; + } + + if (interval[0] === interval[1] && close[0] * close[1] !== 1) { + list.splice(i, 1); + } + else { + i++; + } + } + + return list; + + function littleThan(a, b, lg) { + 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)) + ) + ); + } + }; + + /** + * parseFloat NaNs numeric-cast false positives (null|true|false|"") + * ...but misinterprets leading-number strings, particularly hex literals ("0x...") + * subtraction forces infinities to NaN + * + * @param {*} v + * @return {boolean} + */ + number.isNumeric = function (v) { + return v - parseFloat(v) >= 0; + }; + + module.exports = number; + + +/***/ }, +/* 8 */ +/***/ function(module, exports, __webpack_require__) { + + + + var textWidthCache = {}; + var textWidthCacheCounter = 0; + var TEXT_CACHE_MAX = 5000; + + var util = __webpack_require__(4); + var BoundingRect = __webpack_require__(9); + var retrieve = util.retrieve; + + function getTextWidth(text, textFont) { + var key = text + ':' + textFont; + if (textWidthCache[key]) { + return textWidthCache[key]; + } + + var textLines = (text + '').split('\n'); + var width = 0; + + for (var i = 0, l = textLines.length; i < l; i++) { + // measureText 可以被覆盖以兼容不支持 Canvas 的环境 + width = Math.max(textContain.measureText(textLines[i], textFont).width, width); + } + + if (textWidthCacheCounter > TEXT_CACHE_MAX) { + textWidthCacheCounter = 0; + textWidthCache = {}; + } + textWidthCacheCounter++; + textWidthCache[key] = width; + + return width; + } + + function getTextRect(text, textFont, textAlign, textBaseline) { + var textLineLen = ((text || '') + '').split('\n').length; + + var width = getTextWidth(text, textFont); + // FIXME 高度计算比较粗暴 + var lineHeight = getTextWidth('国', textFont); + var height = textLineLen * lineHeight; + + var rect = new BoundingRect(0, 0, width, height); + // Text has a special line height property + rect.lineHeight = lineHeight; + + switch (textBaseline) { + case 'bottom': + case 'alphabetic': + rect.y -= lineHeight; + break; + case 'middle': + rect.y -= lineHeight / 2; + break; + // case 'hanging': + // case 'top': + } + + // FIXME Right to left language + switch (textAlign) { + case 'end': + case 'right': + rect.x -= rect.width; + break; + case 'center': + rect.x -= rect.width / 2; + break; + // case 'start': + // case 'left': + } + + return rect; + } + + function adjustTextPositionOnRect(textPosition, rect, textRect, distance) { + + var x = rect.x; + var y = rect.y; + + var height = rect.height; + var width = rect.width; + + var textHeight = textRect.height; + + var lineHeight = textRect.lineHeight; + var halfHeight = height / 2 - textHeight / 2 + lineHeight; + + var textAlign = 'left'; + + switch (textPosition) { + case 'left': + x -= distance; + y += halfHeight; + textAlign = 'right'; + break; + case 'right': + x += distance + width; + y += halfHeight; + textAlign = 'left'; + break; + case 'top': + x += width / 2; + y -= distance + textHeight - lineHeight; + textAlign = 'center'; + break; + case 'bottom': + x += width / 2; + y += height + distance + lineHeight; + textAlign = 'center'; + break; + case 'inside': + x += width / 2; + y += halfHeight; + textAlign = 'center'; + break; + case 'insideLeft': + x += distance; + y += halfHeight; + textAlign = 'left'; + break; + case 'insideRight': + x += width - distance; + y += halfHeight; + textAlign = 'right'; + break; + case 'insideTop': + x += width / 2; + y += distance + lineHeight; + textAlign = 'center'; + break; + case 'insideBottom': + x += width / 2; + y += height - textHeight - distance + lineHeight; + textAlign = 'center'; + break; + case 'insideTopLeft': + x += distance; + y += distance + lineHeight; + textAlign = 'left'; + break; + case 'insideTopRight': + x += width - distance; + y += distance + lineHeight; + textAlign = 'right'; + break; + case 'insideBottomLeft': + x += distance; + y += height - textHeight - distance + lineHeight; + break; + case 'insideBottomRight': + x += width - distance; + y += height - textHeight - distance + lineHeight; + textAlign = 'right'; + break; + } + + return { + x: x, + y: y, + textAlign: textAlign, + textBaseline: 'alphabetic' + }; + } + + /** + * Show ellipsis if overflow. + * + * @param {string} text + * @param {string} containerWidth + * @param {string} textFont + * @param {number} [ellipsis='...'] + * @param {Object} [options] + * @param {number} [options.maxIterations=3] + * @param {number} [options.minChar=0] If truncate result are less + * then minChar, ellipsis will not show, which is + * better for user hint in some cases. + * @param {number} [options.placeholder=''] When all truncated, use the placeholder. + * @return {string} + */ + function truncateText(text, containerWidth, textFont, ellipsis, options) { + if (!containerWidth) { + return ''; + } + + options = options || {}; + + ellipsis = retrieve(ellipsis, '...'); + var maxIterations = retrieve(options.maxIterations, 2); + var minChar = retrieve(options.minChar, 0); + // FIXME + // Other languages? + var cnCharWidth = getTextWidth('国', textFont); + // FIXME + // Consider proportional font? + var ascCharWidth = getTextWidth('a', textFont); + var placeholder = retrieve(options.placeholder, ''); + + // Example 1: minChar: 3, text: 'asdfzxcv', truncate result: 'asdf', but not: 'a...'. + // Example 2: minChar: 3, text: '维度', truncate result: '维', but not: '...'. + var contentWidth = containerWidth = Math.max(0, containerWidth - 1); // Reserve some gap. + for (var i = 0; i < minChar && contentWidth >= ascCharWidth; i++) { + contentWidth -= ascCharWidth; + } + + var ellipsisWidth = getTextWidth(ellipsis); + if (ellipsisWidth > contentWidth) { + ellipsis = ''; + ellipsisWidth = 0; + } + + contentWidth = containerWidth - ellipsisWidth; + + var textLines = (text + '').split('\n'); + + for (var i = 0, len = textLines.length; i < len; i++) { + var textLine = textLines[i]; + var lineWidth = getTextWidth(textLine, textFont); + + if (lineWidth <= containerWidth) { + continue; + } + + for (var j = 0;; j++) { + if (lineWidth <= contentWidth || j >= maxIterations) { + textLine += ellipsis; + break; + } + + var subLength = j === 0 + ? estimateLength(textLine, contentWidth, ascCharWidth, cnCharWidth) + : lineWidth > 0 + ? Math.floor(textLine.length * contentWidth / lineWidth) + : 0; + + textLine = textLine.substr(0, subLength); + lineWidth = getTextWidth(textLine, textFont); + } + + if (textLine === '') { + textLine = placeholder; + } + + textLines[i] = textLine; + } + + return textLines.join('\n'); + } + + function estimateLength(text, contentWidth, ascCharWidth, cnCharWidth) { + var width = 0; + var i = 0; + for (var len = text.length; i < len && width < contentWidth; i++) { + var charCode = text.charCodeAt(i); + width += (0 <= charCode && charCode <= 127) ? ascCharWidth : cnCharWidth; + } + return i; + } + + var textContain = { + + getWidth: getTextWidth, + + getBoundingRect: getTextRect, + + adjustTextPositionOnRect: adjustTextPositionOnRect, + + truncateText: truncateText, + + measureText: function (text, textFont) { + var ctx = util.getContext(); + ctx.font = textFont || '12px sans-serif'; + return ctx.measureText(text); + } + }; + + module.exports = textContain; + + +/***/ }, +/* 9 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + /** + * @module echarts/core/BoundingRect + */ + + + var vec2 = __webpack_require__(10); + var matrix = __webpack_require__(11); + + var v2ApplyTransform = vec2.applyTransform; + var mathMin = Math.min; + var mathMax = Math.max; + /** + * @alias module:echarts/core/BoundingRect + */ + function BoundingRect(x, y, width, height) { + + if (width < 0) { + x = x + width; + width = -width; + } + if (height < 0) { + y = y + height; + height = -height; + } + + /** + * @type {number} + */ + this.x = x; + /** + * @type {number} + */ + this.y = y; + /** + * @type {number} + */ + this.width = width; + /** + * @type {number} + */ + this.height = height; + } + + BoundingRect.prototype = { + + constructor: BoundingRect, + + /** + * @param {module:echarts/core/BoundingRect} other + */ + union: function (other) { + var x = mathMin(other.x, this.x); + var y = mathMin(other.y, this.y); + + this.width = mathMax( + other.x + other.width, + this.x + this.width + ) - x; + this.height = mathMax( + other.y + other.height, + this.y + this.height + ) - y; + this.x = x; + this.y = y; + }, + + /** + * @param {Array.} m + * @methods + */ + applyTransform: (function () { + var lt = []; + var rb = []; + var lb = []; + var rt = []; + return function (m) { + // In case usage like this + // el.getBoundingRect().applyTransform(el.transform) + // And element has no transform + if (!m) { + return; + } + lt[0] = lb[0] = this.x; + lt[1] = rt[1] = this.y; + rb[0] = rt[0] = this.x + this.width; + rb[1] = lb[1] = this.y + this.height; + + v2ApplyTransform(lt, lt, m); + v2ApplyTransform(rb, rb, m); + v2ApplyTransform(lb, lb, m); + v2ApplyTransform(rt, rt, m); + + this.x = mathMin(lt[0], rb[0], lb[0], rt[0]); + this.y = mathMin(lt[1], rb[1], lb[1], rt[1]); + var maxX = mathMax(lt[0], rb[0], lb[0], rt[0]); + var maxY = mathMax(lt[1], rb[1], lb[1], rt[1]); + this.width = maxX - this.x; + this.height = maxY - this.y; + }; + })(), + + /** + * Calculate matrix of transforming from self to target rect + * @param {module:zrender/core/BoundingRect} b + * @return {Array.} + */ + calculateTransform: function (b) { + var a = this; + var sx = b.width / a.width; + var sy = b.height / a.height; + + var m = matrix.create(); + + // 矩阵右乘 + matrix.translate(m, m, [-a.x, -a.y]); + matrix.scale(m, m, [sx, sy]); + matrix.translate(m, m, [b.x, b.y]); + + return m; + }, + + /** + * @param {(module:echarts/core/BoundingRect|Object)} b + * @return {boolean} + */ + intersect: function (b) { + if (!b) { + return false; + } + + if (!(b instanceof BoundingRect)) { + // Normalize negative width/height. + b = BoundingRect.create(b); + } + + var a = this; + var ax0 = a.x; + var ax1 = a.x + a.width; + var ay0 = a.y; + var ay1 = a.y + a.height; + + var bx0 = b.x; + var bx1 = b.x + b.width; + var by0 = b.y; + var by1 = b.y + b.height; + + return ! (ax1 < bx0 || bx1 < ax0 || ay1 < by0 || by1 < ay0); + }, + + contain: function (x, y) { + var rect = this; + return x >= rect.x + && x <= (rect.x + rect.width) + && y >= rect.y + && y <= (rect.y + rect.height); + }, + + /** + * @return {module:echarts/core/BoundingRect} + */ + clone: function () { + return new BoundingRect(this.x, this.y, this.width, this.height); + }, + + /** + * Copy from another rect + */ + copy: function (other) { + this.x = other.x; + this.y = other.y; + this.width = other.width; + this.height = other.height; + }, + + plain: function () { + return { + x: this.x, + y: this.y, + width: this.width, + height: this.height + }; + } + }; + + /** + * @param {Object|module:zrender/core/BoundingRect} rect + * @param {number} rect.x + * @param {number} rect.y + * @param {number} rect.width + * @param {number} rect.height + * @return {module:zrender/core/BoundingRect} + */ + BoundingRect.create = function (rect) { + return new BoundingRect(rect.x, rect.y, rect.width, rect.height); + }; + + module.exports = BoundingRect; + + +/***/ }, +/* 10 */ +/***/ function(module, exports) { + + + var ArrayCtor = typeof Float32Array === 'undefined' + ? Array + : Float32Array; + + /** + * @typedef {Float32Array|Array.} Vector2 + */ + /** + * 二维向量类 + * @exports zrender/tool/vector + */ + var vector = { + /** + * 创建一个向量 + * @param {number} [x=0] + * @param {number} [y=0] + * @return {Vector2} + */ + create: function (x, y) { + var out = new ArrayCtor(2); + if (x == null) { + x = 0; + } + if (y == null) { + y = 0; + } + out[0] = x; + out[1] = y; + return out; + }, + + /** + * 复制向量数据 + * @param {Vector2} out + * @param {Vector2} v + * @return {Vector2} + */ + copy: function (out, v) { + out[0] = v[0]; + out[1] = v[1]; + return out; + }, + + /** + * 克隆一个向量 + * @param {Vector2} v + * @return {Vector2} + */ + clone: function (v) { + var out = new ArrayCtor(2); + out[0] = v[0]; + out[1] = v[1]; + return out; + }, + + /** + * 设置向量的两个项 + * @param {Vector2} out + * @param {number} a + * @param {number} b + * @return {Vector2} 结果 + */ + set: function (out, a, b) { + out[0] = a; + out[1] = b; + return out; + }, + + /** + * 向量相加 + * @param {Vector2} out + * @param {Vector2} v1 + * @param {Vector2} v2 + */ + add: function (out, v1, v2) { + out[0] = v1[0] + v2[0]; + out[1] = v1[1] + v2[1]; + return out; + }, + + /** + * 向量缩放后相加 + * @param {Vector2} out + * @param {Vector2} v1 + * @param {Vector2} v2 + * @param {number} a + */ + scaleAndAdd: function (out, v1, v2, a) { + out[0] = v1[0] + v2[0] * a; + out[1] = v1[1] + v2[1] * a; + return out; + }, + + /** + * 向量相减 + * @param {Vector2} out + * @param {Vector2} v1 + * @param {Vector2} v2 + */ + sub: function (out, v1, v2) { + out[0] = v1[0] - v2[0]; + out[1] = v1[1] - v2[1]; + return out; + }, + + /** + * 向量长度 + * @param {Vector2} v + * @return {number} + */ + len: function (v) { + return Math.sqrt(this.lenSquare(v)); + }, + + /** + * 向量长度平方 + * @param {Vector2} v + * @return {number} + */ + lenSquare: function (v) { + return v[0] * v[0] + v[1] * v[1]; + }, + + /** + * 向量乘法 + * @param {Vector2} out + * @param {Vector2} v1 + * @param {Vector2} v2 + */ + mul: function (out, v1, v2) { + out[0] = v1[0] * v2[0]; + out[1] = v1[1] * v2[1]; + return out; + }, + + /** + * 向量除法 + * @param {Vector2} out + * @param {Vector2} v1 + * @param {Vector2} v2 + */ + div: function (out, v1, v2) { + out[0] = v1[0] / v2[0]; + out[1] = v1[1] / v2[1]; + return out; + }, + + /** + * 向量点乘 + * @param {Vector2} v1 + * @param {Vector2} v2 + * @return {number} + */ + dot: function (v1, v2) { + return v1[0] * v2[0] + v1[1] * v2[1]; + }, + + /** + * 向量缩放 + * @param {Vector2} out + * @param {Vector2} v + * @param {number} s + */ + scale: function (out, v, s) { + out[0] = v[0] * s; + out[1] = v[1] * s; + return out; + }, + + /** + * 向量归一化 + * @param {Vector2} out + * @param {Vector2} v + */ + normalize: function (out, v) { + var d = vector.len(v); + if (d === 0) { + out[0] = 0; + out[1] = 0; + } + else { + out[0] = v[0] / d; + out[1] = v[1] / d; + } + return out; + }, + + /** + * 计算向量间距离 + * @param {Vector2} v1 + * @param {Vector2} v2 + * @return {number} + */ + distance: function (v1, v2) { + return Math.sqrt( + (v1[0] - v2[0]) * (v1[0] - v2[0]) + + (v1[1] - v2[1]) * (v1[1] - v2[1]) + ); + }, + + /** + * 向量距离平方 + * @param {Vector2} v1 + * @param {Vector2} v2 + * @return {number} + */ + distanceSquare: function (v1, v2) { + return (v1[0] - v2[0]) * (v1[0] - v2[0]) + + (v1[1] - v2[1]) * (v1[1] - v2[1]); + }, + + /** + * 求负向量 + * @param {Vector2} out + * @param {Vector2} v + */ + negate: function (out, v) { + out[0] = -v[0]; + out[1] = -v[1]; + return out; + }, + + /** + * 插值两个点 + * @param {Vector2} out + * @param {Vector2} v1 + * @param {Vector2} v2 + * @param {number} t + */ + lerp: function (out, v1, v2, t) { + out[0] = v1[0] + t * (v2[0] - v1[0]); + out[1] = v1[1] + t * (v2[1] - v1[1]); + return out; + }, + + /** + * 矩阵左乘向量 + * @param {Vector2} out + * @param {Vector2} v + * @param {Vector2} m + */ + applyTransform: function (out, v, m) { + var x = v[0]; + var y = v[1]; + out[0] = m[0] * x + m[2] * y + m[4]; + out[1] = m[1] * x + m[3] * y + m[5]; + return out; + }, + /** + * 求两个向量最小值 + * @param {Vector2} out + * @param {Vector2} v1 + * @param {Vector2} v2 + */ + min: function (out, v1, v2) { + out[0] = Math.min(v1[0], v2[0]); + out[1] = Math.min(v1[1], v2[1]); + return out; + }, + /** + * 求两个向量最大值 + * @param {Vector2} out + * @param {Vector2} v1 + * @param {Vector2} v2 + */ + max: function (out, v1, v2) { + out[0] = Math.max(v1[0], v2[0]); + out[1] = Math.max(v1[1], v2[1]); + return out; + } + }; + + vector.length = vector.len; + vector.lengthSquare = vector.lenSquare; + vector.dist = vector.distance; + vector.distSquare = vector.distanceSquare; + + module.exports = vector; + + + +/***/ }, +/* 11 */ +/***/ function(module, exports) { + + + var ArrayCtor = typeof Float32Array === 'undefined' + ? Array + : Float32Array; + /** + * 3x2矩阵操作类 + * @exports zrender/tool/matrix + */ + var matrix = { + /** + * 创建一个单位矩阵 + * @return {Float32Array|Array.} + */ + create : function() { + var out = new ArrayCtor(6); + matrix.identity(out); + + return out; + }, + /** + * 设置矩阵为单位矩阵 + * @param {Float32Array|Array.} out + */ + identity : function(out) { + out[0] = 1; + out[1] = 0; + out[2] = 0; + out[3] = 1; + out[4] = 0; + out[5] = 0; + return out; + }, + /** + * 复制矩阵 + * @param {Float32Array|Array.} out + * @param {Float32Array|Array.} m + */ + copy: function(out, m) { + out[0] = m[0]; + out[1] = m[1]; + out[2] = m[2]; + out[3] = m[3]; + out[4] = m[4]; + out[5] = m[5]; + return out; + }, + /** + * 矩阵相乘 + * @param {Float32Array|Array.} out + * @param {Float32Array|Array.} m1 + * @param {Float32Array|Array.} m2 + */ + mul : function (out, m1, m2) { + // Consider matrix.mul(m, m2, m); + // where out is the same as m2. + // So use temp variable to escape error. + var out0 = m1[0] * m2[0] + m1[2] * m2[1]; + var out1 = m1[1] * m2[0] + m1[3] * m2[1]; + var out2 = m1[0] * m2[2] + m1[2] * m2[3]; + var out3 = m1[1] * m2[2] + m1[3] * m2[3]; + var out4 = m1[0] * m2[4] + m1[2] * m2[5] + m1[4]; + var out5 = m1[1] * m2[4] + m1[3] * m2[5] + m1[5]; + out[0] = out0; + out[1] = out1; + out[2] = out2; + out[3] = out3; + out[4] = out4; + out[5] = out5; + return out; + }, + /** + * 平移变换 + * @param {Float32Array|Array.} out + * @param {Float32Array|Array.} a + * @param {Float32Array|Array.} v + */ + translate : function(out, a, v) { + out[0] = a[0]; + out[1] = a[1]; + out[2] = a[2]; + out[3] = a[3]; + out[4] = a[4] + v[0]; + out[5] = a[5] + v[1]; + return out; + }, + /** + * 旋转变换 + * @param {Float32Array|Array.} out + * @param {Float32Array|Array.} a + * @param {number} rad + */ + rotate : function(out, a, rad) { + var aa = a[0]; + var ac = a[2]; + var atx = a[4]; + var ab = a[1]; + var ad = a[3]; + var aty = a[5]; + var st = Math.sin(rad); + var ct = Math.cos(rad); + + out[0] = aa * ct + ab * st; + out[1] = -aa * st + ab * ct; + out[2] = ac * ct + ad * st; + out[3] = -ac * st + ct * ad; + out[4] = ct * atx + st * aty; + out[5] = ct * aty - st * atx; + return out; + }, + /** + * 缩放变换 + * @param {Float32Array|Array.} out + * @param {Float32Array|Array.} a + * @param {Float32Array|Array.} v + */ + scale : function(out, a, v) { + var vx = v[0]; + var vy = v[1]; + out[0] = a[0] * vx; + out[1] = a[1] * vy; + out[2] = a[2] * vx; + out[3] = a[3] * vy; + out[4] = a[4] * vx; + out[5] = a[5] * vy; + return out; + }, + /** + * 求逆矩阵 + * @param {Float32Array|Array.} out + * @param {Float32Array|Array.} a + */ + invert : function(out, a) { + + var aa = a[0]; + var ac = a[2]; + var atx = a[4]; + var ab = a[1]; + var ad = a[3]; + var aty = a[5]; + + var det = aa * ad - ab * ac; + if (!det) { + return null; + } + det = 1.0 / det; + + out[0] = ad * det; + out[1] = -ab * det; + out[2] = -ac * det; + out[3] = aa * det; + out[4] = (ac * aty - ad * atx) * det; + out[5] = (ab * atx - aa * aty) * det; + return out; + } + }; + + module.exports = matrix; + + + +/***/ }, +/* 12 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * @module echarts/model/Model + */ + + + var zrUtil = __webpack_require__(4); + var clazzUtil = __webpack_require__(13); + var env = __webpack_require__(2); + + /** + * @alias module:echarts/model/Model + * @constructor + * @param {Object} option + * @param {module:echarts/model/Model} [parentModel] + * @param {module:echarts/model/Global} [ecModel] + */ + function Model(option, parentModel, ecModel) { + /** + * @type {module:echarts/model/Model} + * @readOnly + */ + this.parentModel = parentModel; + + /** + * @type {module:echarts/model/Global} + * @readOnly + */ + this.ecModel = ecModel; + + /** + * @type {Object} + * @protected + */ + this.option = option; + + // Simple optimization + // if (this.init) { + // if (arguments.length <= 4) { + // this.init(option, parentModel, ecModel, extraOpt); + // } + // else { + // this.init.apply(this, arguments); + // } + // } + } + + Model.prototype = { + + constructor: Model, + + /** + * Model 的初始化函数 + * @param {Object} option + */ + init: null, + + /** + * 从新的 Option merge + */ + mergeOption: function (option) { + zrUtil.merge(this.option, option, true); + }, + + /** + * @param {string|Array.} path + * @param {boolean} [ignoreParent=false] + * @return {*} + */ + get: function (path, ignoreParent) { + if (path == null) { + return this.option; + } + + return doGet( + this.option, + this.parsePath(path), + !ignoreParent && getParent(this, path) + ); + }, + + /** + * @param {string} key + * @param {boolean} [ignoreParent=false] + * @return {*} + */ + getShallow: function (key, ignoreParent) { + var option = this.option; + + var val = option == null ? option : option[key]; + var parentModel = !ignoreParent && getParent(this, key); + if (val == null && parentModel) { + val = parentModel.getShallow(key); + } + return val; + }, + + /** + * @param {string|Array.} [path] + * @param {module:echarts/model/Model} [parentModel] + * @return {module:echarts/model/Model} + */ + getModel: function (path, parentModel) { + var obj = path == null + ? this.option + : doGet(this.option, path = this.parsePath(path)); + + var thisParentModel; + parentModel = parentModel || ( + (thisParentModel = getParent(this, path)) + && thisParentModel.getModel(path) + ); + + return new Model(obj, parentModel, this.ecModel); + }, + + /** + * If model has option + */ + isEmpty: function () { + return this.option == null; + }, + + restoreData: function () {}, + + // Pending + clone: function () { + var Ctor = this.constructor; + return new Ctor(zrUtil.clone(this.option)); + }, + + setReadOnly: function (properties) { + clazzUtil.setReadOnly(this, properties); + }, + + // If path is null/undefined, return null/undefined. + parsePath: function(path) { + if (typeof path === 'string') { + path = path.split('.'); + } + return path; + }, + + /** + * @param {Function} getParentMethod + * param {Array.|string} path + * return {module:echarts/model/Model} + */ + customizeGetParent: function (getParentMethod) { + clazzUtil.set(this, 'getParent', getParentMethod); + }, + + isAnimationEnabled: function () { + if (!env.node) { + if (this.option.animation != null) { + return !!this.option.animation; + } + else if (this.parentModel) { + return this.parentModel.isAnimationEnabled(); + } + } + } + }; + + function doGet(obj, pathArr, parentModel) { + for (var i = 0; i < pathArr.length; i++) { + // Ignore empty + if (!pathArr[i]) { + continue; + } + // obj could be number/string/... (like 0) + obj = (obj && typeof obj === 'object') ? obj[pathArr[i]] : null; + if (obj == null) { + break; + } + } + if (obj == null && parentModel) { + obj = parentModel.get(pathArr); + } + return obj; + } + + // `path` can be null/undefined + function getParent(model, path) { + var getParentMethod = clazzUtil.get(model, 'getParent'); + return getParentMethod ? getParentMethod.call(model, path) : model.parentModel; + } + + // Enable Model.extend. + clazzUtil.enableClassExtend(Model); + + var mixin = zrUtil.mixin; + mixin(Model, __webpack_require__(14)); + mixin(Model, __webpack_require__(16)); + mixin(Model, __webpack_require__(17)); + mixin(Model, __webpack_require__(68)); + + module.exports = Model; + + +/***/ }, +/* 13 */ +/***/ function(module, exports, __webpack_require__) { + + + + var zrUtil = __webpack_require__(4); + + var clazz = {}; + + var TYPE_DELIMITER = '.'; + var IS_CONTAINER = '___EC__COMPONENT__CONTAINER___'; + var MEMBER_PRIFIX = '\0ec_\0'; + + /** + * Hide private class member. + * The same behavior as `host[name] = value;` (can be right-value) + * @public + */ + clazz.set = function (host, name, value) { + return (host[MEMBER_PRIFIX + name] = value); + }; + + /** + * Hide private class member. + * The same behavior as `host[name];` + * @public + */ + clazz.get = function (host, name) { + return host[MEMBER_PRIFIX + name]; + }; + + /** + * For hidden private class member. + * The same behavior as `host.hasOwnProperty(name);` + * @public + */ + clazz.hasOwn = function (host, name) { + return host.hasOwnProperty(MEMBER_PRIFIX + name); + }; + + /** + * Notice, parseClassType('') should returns {main: '', sub: ''} + * @public + */ + var parseClassType = clazz.parseClassType = function (componentType) { + var ret = {main: '', sub: ''}; + if (componentType) { + componentType = componentType.split(TYPE_DELIMITER); + ret.main = componentType[0] || ''; + ret.sub = componentType[1] || ''; + } + return ret; + }; + + /** + * @public + */ + function checkClassType(componentType) { + zrUtil.assert( + /^[a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)?$/.test(componentType), + 'componentType "' + componentType + '" illegal' + ); + } + + /** + * @public + */ + clazz.enableClassExtend = function (RootClass, mandatoryMethods) { + + RootClass.$constructor = RootClass; + RootClass.extend = function (proto) { + + if (true) { + zrUtil.each(mandatoryMethods, function (method) { + if (!proto[method]) { + console.warn( + 'Method `' + method + '` should be implemented' + + (proto.type ? ' in ' + proto.type : '') + '.' + ); + } + }); + } + + var superClass = this; + var ExtendedClass = function () { + if (!proto.$constructor) { + superClass.apply(this, arguments); + } + else { + proto.$constructor.apply(this, arguments); + } + }; + + zrUtil.extend(ExtendedClass.prototype, proto); + + ExtendedClass.extend = this.extend; + ExtendedClass.superCall = superCall; + ExtendedClass.superApply = superApply; + zrUtil.inherits(ExtendedClass, this); + ExtendedClass.superClass = superClass; + + return ExtendedClass; + }; + }; + + // superCall should have class info, which can not be fetch from 'this'. + // Consider this case: + // class A has method f, + // class B inherits class A, overrides method f, f call superApply('f'), + // class C inherits class B, do not overrides method f, + // then when method of class C is called, dead loop occured. + function superCall(context, methodName) { + var args = zrUtil.slice(arguments, 2); + return this.superClass.prototype[methodName].apply(context, args); + } + + function superApply(context, methodName, args) { + return this.superClass.prototype[methodName].apply(context, args); + } + + /** + * @param {Object} entity + * @param {Object} options + * @param {boolean} [options.registerWhenExtend] + * @public + */ + clazz.enableClassManagement = function (entity, options) { + options = options || {}; + + /** + * Component model classes + * key: componentType, + * value: + * componentClass, when componentType is 'xxx' + * or Object., when componentType is 'xxx.yy' + * @type {Object} + */ + var storage = {}; + + entity.registerClass = function (Clazz, componentType) { + if (componentType) { + checkClassType(componentType); + componentType = parseClassType(componentType); + + if (!componentType.sub) { + if (true) { + if (storage[componentType.main]) { + console.warn(componentType.main + ' exists.'); + } + } + storage[componentType.main] = Clazz; + } + else if (componentType.sub !== IS_CONTAINER) { + var container = makeContainer(componentType); + container[componentType.sub] = Clazz; + } + } + return Clazz; + }; + + entity.getClass = function (componentMainType, subType, throwWhenNotFound) { + var Clazz = storage[componentMainType]; + + if (Clazz && Clazz[IS_CONTAINER]) { + Clazz = subType ? Clazz[subType] : null; + } + + if (throwWhenNotFound && !Clazz) { + throw new Error( + !subType + ? componentMainType + '.' + 'type should be specified.' + : 'Component ' + componentMainType + '.' + (subType || '') + ' not exists. Load it first.' + ); + } + + return Clazz; + }; + + entity.getClassesByMainType = function (componentType) { + componentType = parseClassType(componentType); + + var result = []; + var obj = storage[componentType.main]; + + if (obj && obj[IS_CONTAINER]) { + zrUtil.each(obj, function (o, type) { + type !== IS_CONTAINER && result.push(o); + }); + } + else { + result.push(obj); + } + + return result; + }; + + entity.hasClass = function (componentType) { + // Just consider componentType.main. + componentType = parseClassType(componentType); + return !!storage[componentType.main]; + }; + + /** + * @return {Array.} Like ['aa', 'bb'], but can not be ['aa.xx'] + */ + entity.getAllClassMainTypes = function () { + var types = []; + zrUtil.each(storage, function (obj, type) { + types.push(type); + }); + return types; + }; + + /** + * If a main type is container and has sub types + * @param {string} mainType + * @return {boolean} + */ + entity.hasSubTypes = function (componentType) { + componentType = parseClassType(componentType); + var obj = storage[componentType.main]; + return obj && obj[IS_CONTAINER]; + }; + + entity.parseClassType = parseClassType; + + function makeContainer(componentType) { + var container = storage[componentType.main]; + if (!container || !container[IS_CONTAINER]) { + container = storage[componentType.main] = {}; + container[IS_CONTAINER] = true; + } + return container; + } + + if (options.registerWhenExtend) { + var originalExtend = entity.extend; + if (originalExtend) { + entity.extend = function (proto) { + var ExtendedClass = originalExtend.call(this, proto); + return entity.registerClass(ExtendedClass, proto.type); + }; + } + } + + return entity; + }; + + /** + * @param {string|Array.} properties + */ + clazz.setReadOnly = function (obj, properties) { + // FIXME It seems broken in IE8 simulation of IE11 + // if (!zrUtil.isArray(properties)) { + // properties = properties != null ? [properties] : []; + // } + // zrUtil.each(properties, function (prop) { + // var value = obj[prop]; + + // Object.defineProperty + // && Object.defineProperty(obj, prop, { + // value: value, writable: false + // }); + // zrUtil.isArray(obj[prop]) + // && Object.freeze + // && Object.freeze(obj[prop]); + // }); + }; + + module.exports = clazz; + + +/***/ }, +/* 14 */ +/***/ function(module, exports, __webpack_require__) { + + + var getLineStyle = __webpack_require__(15)( + [ + ['lineWidth', 'width'], + ['stroke', 'color'], + ['opacity'], + ['shadowBlur'], + ['shadowOffsetX'], + ['shadowOffsetY'], + ['shadowColor'] + ] + ); + module.exports = { + getLineStyle: function (excludes) { + var style = getLineStyle.call(this, excludes); + var lineDash = this.getLineDash(style.lineWidth); + lineDash && (style.lineDash = lineDash); + return style; + }, + + getLineDash: function (lineWidth) { + if (lineWidth == null) { + lineWidth = 1; + } + var lineType = this.get('type'); + var dotSize = Math.max(lineWidth, 2); + var dashSize = lineWidth * 4; + return (lineType === 'solid' || lineType == null) ? null + : (lineType === 'dashed' ? [dashSize, dashSize] : [dotSize, dotSize]); + } + }; + + +/***/ }, +/* 15 */ +/***/ function(module, exports, __webpack_require__) { + + // TODO Parse shadow style + // TODO Only shallow path support + + var zrUtil = __webpack_require__(4); + + module.exports = function (properties) { + // Normalize + for (var i = 0; i < properties.length; i++) { + if (!properties[i][1]) { + properties[i][1] = properties[i][0]; + } + } + return function (excludes, includes) { + var style = {}; + for (var i = 0; i < properties.length; i++) { + var propName = properties[i][1]; + if ((excludes && zrUtil.indexOf(excludes, propName) >= 0) + || (includes && zrUtil.indexOf(includes, propName) < 0) + ) { + continue; + } + var val = this.getShallow(propName); + if (val != null) { + style[properties[i][0]] = val; + } + } + return style; + }; + }; + + +/***/ }, +/* 16 */ +/***/ function(module, exports, __webpack_require__) { + + + module.exports = { + getAreaStyle: __webpack_require__(15)( + [ + ['fill', 'color'], + ['shadowBlur'], + ['shadowOffsetX'], + ['shadowOffsetY'], + ['opacity'], + ['shadowColor'] + ] + ) + }; + + +/***/ }, +/* 17 */ +/***/ function(module, exports, __webpack_require__) { + + + + var textContain = __webpack_require__(8); + var graphicUtil = __webpack_require__(18); + + module.exports = { + /** + * Get color property or get color from option.textStyle.color + * @return {string} + */ + getTextColor: function () { + var ecModel = this.ecModel; + return this.getShallow('color') + || (ecModel && ecModel.get('textStyle.color')); + }, + + /** + * Create font string from fontStyle, fontWeight, fontSize, fontFamily + * @return {string} + */ + getFont: function () { + return graphicUtil.getFont({ + fontStyle: this.getShallow('fontStyle'), + fontWeight: this.getShallow('fontWeight'), + fontSize: this.getShallow('fontSize'), + fontFamily: this.getShallow('fontFamily') + }, this.ecModel); + }, + + getTextRect: function (text) { + return textContain.getBoundingRect( + text, + this.getFont(), + this.getShallow('align'), + this.getShallow('baseline') + ); + }, + + truncateText: function (text, containerWidth, ellipsis, options) { + return textContain.truncateText( + text, containerWidth, this.getFont(), ellipsis, options + ); + } + }; + + +/***/ }, +/* 18 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + + var zrUtil = __webpack_require__(4); + + var pathTool = __webpack_require__(19); + var Path = __webpack_require__(20); + var colorTool = __webpack_require__(31); + var matrix = __webpack_require__(11); + var vector = __webpack_require__(10); + var Transformable = __webpack_require__(26); + var BoundingRect = __webpack_require__(9); + + var round = Math.round; + var mathMax = Math.max; + var mathMin = Math.min; + + var graphic = {}; + + graphic.Group = __webpack_require__(48); + + graphic.Image = __webpack_require__(49); + + graphic.Text = __webpack_require__(50); + + graphic.Circle = __webpack_require__(51); + + graphic.Sector = __webpack_require__(52); + + graphic.Ring = __webpack_require__(53); + + graphic.Polygon = __webpack_require__(54); + + graphic.Polyline = __webpack_require__(58); + + graphic.Rect = __webpack_require__(59); + + graphic.Line = __webpack_require__(61); + + graphic.BezierCurve = __webpack_require__(62); + + graphic.Arc = __webpack_require__(63); + + graphic.CompoundPath = __webpack_require__(64); + + graphic.LinearGradient = __webpack_require__(65); + + graphic.RadialGradient = __webpack_require__(67); + + graphic.BoundingRect = BoundingRect; + + /** + * Extend shape with parameters + */ + graphic.extendShape = function (opts) { + return Path.extend(opts); + }; + + /** + * Extend path + */ + graphic.extendPath = function (pathData, opts) { + return pathTool.extendFromString(pathData, opts); + }; + + /** + * Create a path element from path data string + * @param {string} pathData + * @param {Object} opts + * @param {module:zrender/core/BoundingRect} rect + * @param {string} [layout=cover] 'center' or 'cover' + */ + graphic.makePath = function (pathData, opts, rect, layout) { + var path = pathTool.createFromString(pathData, opts); + var boundingRect = path.getBoundingRect(); + if (rect) { + var aspect = boundingRect.width / boundingRect.height; + + if (layout === 'center') { + // Set rect to center, keep width / height ratio. + var width = rect.height * aspect; + var height; + if (width <= rect.width) { + height = rect.height; + } + else { + width = rect.width; + height = width / aspect; + } + var cx = rect.x + rect.width / 2; + var cy = rect.y + rect.height / 2; + + rect.x = cx - width / 2; + rect.y = cy - height / 2; + rect.width = width; + rect.height = height; + } + + graphic.resizePath(path, rect); + } + return path; + }; + + graphic.mergePath = pathTool.mergePath, + + /** + * Resize a path to fit the rect + * @param {module:zrender/graphic/Path} path + * @param {Object} rect + */ + graphic.resizePath = function (path, rect) { + if (!path.applyTransform) { + return; + } + + var pathRect = path.getBoundingRect(); + + var m = pathRect.calculateTransform(rect); + + path.applyTransform(m); + }; + + /** + * Sub pixel optimize line for canvas + * + * @param {Object} param + * @param {Object} [param.shape] + * @param {number} [param.shape.x1] + * @param {number} [param.shape.y1] + * @param {number} [param.shape.x2] + * @param {number} [param.shape.y2] + * @param {Object} [param.style] + * @param {number} [param.style.lineWidth] + * @return {Object} Modified param + */ + graphic.subPixelOptimizeLine = function (param) { + var subPixelOptimize = graphic.subPixelOptimize; + var shape = param.shape; + var lineWidth = param.style.lineWidth; + + if (round(shape.x1 * 2) === round(shape.x2 * 2)) { + shape.x1 = shape.x2 = subPixelOptimize(shape.x1, lineWidth, true); + } + if (round(shape.y1 * 2) === round(shape.y2 * 2)) { + shape.y1 = shape.y2 = subPixelOptimize(shape.y1, lineWidth, true); + } + return param; + }; + + /** + * Sub pixel optimize rect for canvas + * + * @param {Object} param + * @param {Object} [param.shape] + * @param {number} [param.shape.x] + * @param {number} [param.shape.y] + * @param {number} [param.shape.width] + * @param {number} [param.shape.height] + * @param {Object} [param.style] + * @param {number} [param.style.lineWidth] + * @return {Object} Modified param + */ + graphic.subPixelOptimizeRect = function (param) { + var subPixelOptimize = graphic.subPixelOptimize; + var shape = param.shape; + var lineWidth = param.style.lineWidth; + var originX = shape.x; + var originY = shape.y; + var originWidth = shape.width; + var originHeight = shape.height; + shape.x = subPixelOptimize(shape.x, lineWidth, true); + shape.y = subPixelOptimize(shape.y, lineWidth, true); + shape.width = Math.max( + subPixelOptimize(originX + originWidth, lineWidth, false) - shape.x, + originWidth === 0 ? 0 : 1 + ); + shape.height = Math.max( + subPixelOptimize(originY + originHeight, lineWidth, false) - shape.y, + originHeight === 0 ? 0 : 1 + ); + return param; + }; + + /** + * Sub pixel optimize for canvas + * + * @param {number} position Coordinate, such as x, y + * @param {number} lineWidth Should be nonnegative integer. + * @param {boolean=} positiveOrNegative Default false (negative). + * @return {number} Optimized position. + */ + graphic.subPixelOptimize = function (position, lineWidth, positiveOrNegative) { + // Assure that (position + lineWidth / 2) is near integer edge, + // otherwise line will be fuzzy in canvas. + var doubledPosition = round(position * 2); + return (doubledPosition + round(lineWidth)) % 2 === 0 + ? doubledPosition / 2 + : (doubledPosition + (positiveOrNegative ? 1 : -1)) / 2; + }; + + function hasFillOrStroke(fillOrStroke) { + return fillOrStroke != null && fillOrStroke != 'none'; + } + + function liftColor(color) { + return typeof color === 'string' ? colorTool.lift(color, -0.1) : color; + } + + /** + * @private + */ + function cacheElementStl(el) { + if (el.__hoverStlDirty) { + var stroke = el.style.stroke; + var fill = el.style.fill; + + // Create hoverStyle on mouseover + var hoverStyle = el.__hoverStl; + hoverStyle.fill = hoverStyle.fill + || (hasFillOrStroke(fill) ? liftColor(fill) : null); + hoverStyle.stroke = hoverStyle.stroke + || (hasFillOrStroke(stroke) ? liftColor(stroke) : null); + + var normalStyle = {}; + for (var name in hoverStyle) { + if (hoverStyle.hasOwnProperty(name)) { + normalStyle[name] = el.style[name]; + } + } + + el.__normalStl = normalStyle; + + el.__hoverStlDirty = false; + } + } + + /** + * @private + */ + function doSingleEnterHover(el) { + if (el.__isHover) { + return; + } + + cacheElementStl(el); + + if (el.useHoverLayer) { + el.__zr && el.__zr.addHover(el, el.__hoverStl); + } + else { + el.setStyle(el.__hoverStl); + el.z2 += 1; + } + + el.__isHover = true; + } + + /** + * @inner + */ + function doSingleLeaveHover(el) { + if (!el.__isHover) { + return; + } + + var normalStl = el.__normalStl; + if (el.useHoverLayer) { + el.__zr && el.__zr.removeHover(el); + } + else { + normalStl && el.setStyle(normalStl); + el.z2 -= 1; + } + + el.__isHover = false; + } + + /** + * @inner + */ + function doEnterHover(el) { + el.type === 'group' + ? el.traverse(function (child) { + if (child.type !== 'group') { + doSingleEnterHover(child); + } + }) + : doSingleEnterHover(el); + } + + function doLeaveHover(el) { + el.type === 'group' + ? el.traverse(function (child) { + if (child.type !== 'group') { + doSingleLeaveHover(child); + } + }) + : doSingleLeaveHover(el); + } + + /** + * @inner + */ + function setElementHoverStl(el, hoverStl) { + // If element has sepcified hoverStyle, then use it instead of given hoverStyle + // Often used when item group has a label element and it's hoverStyle is different + el.__hoverStl = el.hoverStyle || hoverStl || {}; + el.__hoverStlDirty = true; + + if (el.__isHover) { + cacheElementStl(el); + } + } + + /** + * @inner + */ + function onElementMouseOver(e) { + if (this.__hoverSilentOnTouch && e.zrByTouch) { + return; + } + + // Only if element is not in emphasis status + !this.__isEmphasis && doEnterHover(this); + } + + /** + * @inner + */ + function onElementMouseOut(e) { + if (this.__hoverSilentOnTouch && e.zrByTouch) { + return; + } + + // Only if element is not in emphasis status + !this.__isEmphasis && doLeaveHover(this); + } + + /** + * @inner + */ + function enterEmphasis() { + this.__isEmphasis = true; + doEnterHover(this); + } + + /** + * @inner + */ + function leaveEmphasis() { + this.__isEmphasis = false; + doLeaveHover(this); + } + + /** + * Set hover style of element. + * This method can be called repeatly without side-effects. + * @param {module:zrender/Element} el + * @param {Object} [hoverStyle] + * @param {Object} [opt] + * @param {boolean} [opt.hoverSilentOnTouch=false] + * In touch device, mouseover event will be trigger on touchstart event + * (see module:zrender/dom/HandlerProxy). By this mechanism, we can + * conviniently use hoverStyle when tap on touch screen without additional + * code for compatibility. + * But if the chart/component has select feature, which usually also use + * hoverStyle, there might be conflict between 'select-highlight' and + * 'hover-highlight' especially when roam is enabled (see geo for example). + * In this case, hoverSilentOnTouch should be used to disable hover-highlight + * on touch device. + */ + graphic.setHoverStyle = function (el, hoverStyle, opt) { + el.__hoverSilentOnTouch = opt && opt.hoverSilentOnTouch; + + el.type === 'group' + ? el.traverse(function (child) { + if (child.type !== 'group') { + setElementHoverStl(child, hoverStyle); + } + }) + : setElementHoverStl(el, hoverStyle); + + // Duplicated function will be auto-ignored, see Eventful.js. + el.on('mouseover', onElementMouseOver) + .on('mouseout', onElementMouseOut); + + // Emphasis, normal can be triggered manually + el.on('emphasis', enterEmphasis) + .on('normal', leaveEmphasis); + }; + + /** + * Set text option in the style + * @param {Object} textStyle + * @param {module:echarts/model/Model} labelModel + * @param {string} color + */ + graphic.setText = function (textStyle, labelModel, color) { + var labelPosition = labelModel.getShallow('position') || 'inside'; + var labelOffset = labelModel.getShallow('offset'); + var labelColor = labelPosition.indexOf('inside') >= 0 ? 'white' : color; + var textStyleModel = labelModel.getModel('textStyle'); + zrUtil.extend(textStyle, { + textDistance: labelModel.getShallow('distance') || 5, + textFont: textStyleModel.getFont(), + textPosition: labelPosition, + textOffset: labelOffset, + textFill: textStyleModel.getTextColor() || labelColor + }); + }; + + graphic.getFont = function (opt, ecModel) { + var gTextStyleModel = ecModel && ecModel.getModel('textStyle'); + return [ + // FIXME in node-canvas fontWeight is before fontStyle + 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(' '); + }; + + function animateOrSetProps(isUpdate, el, props, animatableModel, dataIndex, cb) { + if (typeof dataIndex === 'function') { + cb = dataIndex; + dataIndex = null; + } + // Do not check 'animation' property directly here. Consider this case: + // animation model is an `itemModel`, whose does not have `isAnimationEnabled` + // but its parent model (`seriesModel`) does. + var animationEnabled = animatableModel && animatableModel.isAnimationEnabled(); + + if (animationEnabled) { + var postfix = isUpdate ? 'Update' : ''; + var duration = animatableModel.getShallow('animationDuration' + postfix); + var animationEasing = animatableModel.getShallow('animationEasing' + postfix); + var animationDelay = animatableModel.getShallow('animationDelay' + postfix); + if (typeof animationDelay === 'function') { + animationDelay = animationDelay( + dataIndex, + animatableModel.getAnimationDelayParams + ? animatableModel.getAnimationDelayParams(el, dataIndex) + : null + ); + } + if (typeof duration === 'function') { + duration = duration(dataIndex); + } + + duration > 0 + ? el.animateTo(props, duration, animationDelay || 0, animationEasing, cb) + : (el.stopAnimation(), el.attr(props), cb && cb()); + } + else { + el.stopAnimation(); + el.attr(props); + cb && cb(); + } + } + + /** + * Update graphic element properties with or without animation according to the configuration in series + * @param {module:zrender/Element} el + * @param {Object} props + * @param {module:echarts/model/Model} [animatableModel] + * @param {number} [dataIndex] + * @param {Function} [cb] + * @example + * graphic.updateProps(el, { + * position: [100, 100] + * }, seriesModel, dataIndex, function () { console.log('Animation done!'); }); + * // Or + * graphic.updateProps(el, { + * position: [100, 100] + * }, seriesModel, function () { console.log('Animation done!'); }); + */ + graphic.updateProps = function (el, props, animatableModel, dataIndex, cb) { + animateOrSetProps(true, el, props, animatableModel, dataIndex, cb); + }; + + /** + * Init graphic element properties with or without animation according to the configuration in series + * @param {module:zrender/Element} el + * @param {Object} props + * @param {module:echarts/model/Model} [animatableModel] + * @param {number} [dataIndex] + * @param {Function} cb + */ + graphic.initProps = function (el, props, animatableModel, dataIndex, cb) { + animateOrSetProps(false, el, props, animatableModel, dataIndex, cb); + }; + + /** + * Get transform matrix of target (param target), + * in coordinate of its ancestor (param ancestor) + * + * @param {module:zrender/mixin/Transformable} target + * @param {module:zrender/mixin/Transformable} [ancestor] + */ + graphic.getTransform = function (target, ancestor) { + var mat = matrix.identity([]); + + while (target && target !== ancestor) { + matrix.mul(mat, target.getLocalTransform(), mat); + target = target.parent; + } + + return mat; + }; + + /** + * Apply transform to an vertex. + * @param {Array.} target [x, y] + * @param {Array.|TypedArray.|Object} transform Can be: + * + Transform matrix: like [1, 0, 0, 1, 0, 0] + * + {position, rotation, scale}, the same as `zrender/Transformable`. + * @param {boolean=} invert Whether use invert matrix. + * @return {Array.} [x, y] + */ + graphic.applyTransform = function (target, transform, invert) { + if (transform && !zrUtil.isArrayLike(transform)) { + transform = Transformable.getLocalTransform(transform); + } + + if (invert) { + transform = matrix.invert([], transform); + } + return vector.applyTransform([], target, transform); + }; + + /** + * @param {string} direction 'left' 'right' 'top' 'bottom' + * @param {Array.} transform Transform matrix: like [1, 0, 0, 1, 0, 0] + * @param {boolean=} invert Whether use invert matrix. + * @return {string} Transformed direction. 'left' 'right' 'top' 'bottom' + */ + graphic.transformDirection = function (direction, transform, invert) { + + // Pick a base, ensure that transform result will not be (0, 0). + var hBase = (transform[4] === 0 || transform[5] === 0 || transform[0] === 0) + ? 1 : Math.abs(2 * transform[4] / transform[0]); + var vBase = (transform[4] === 0 || transform[5] === 0 || transform[2] === 0) + ? 1 : Math.abs(2 * transform[4] / transform[2]); + + var vertex = [ + direction === 'left' ? -hBase : direction === 'right' ? hBase : 0, + direction === 'top' ? -vBase : direction === 'bottom' ? vBase : 0 + ]; + + vertex = graphic.applyTransform(vertex, transform, invert); + + return Math.abs(vertex[0]) > Math.abs(vertex[1]) + ? (vertex[0] > 0 ? 'right' : 'left') + : (vertex[1] > 0 ? 'bottom' : 'top'); + }; + + /** + * Apply group transition animation from g1 to g2. + * If no animatableModel, no animation. + */ + graphic.groupTransition = function (g1, g2, animatableModel, cb) { + if (!g1 || !g2) { + return; + } + + function getElMap(g) { + var elMap = {}; + g.traverse(function (el) { + if (!el.isGroup && el.anid) { + elMap[el.anid] = el; + } + }); + return elMap; + } + function getAnimatableProps(el) { + var obj = { + position: vector.clone(el.position), + rotation: el.rotation + }; + if (el.shape) { + obj.shape = zrUtil.extend({}, el.shape); + } + return obj; + } + var elMap1 = getElMap(g1); + + g2.traverse(function (el) { + if (!el.isGroup && el.anid) { + var oldEl = elMap1[el.anid]; + if (oldEl) { + var newProp = getAnimatableProps(el); + el.attr(getAnimatableProps(oldEl)); + graphic.updateProps(el, newProp, animatableModel, el.dataIndex); + } + // else { + // if (el.previousProps) { + // graphic.updateProps + // } + // } + } + }); + }; + + /** + * @param {Array.>} points Like: [[23, 44], [53, 66], ...] + * @param {Object} rect {x, y, width, height} + * @return {Array.>} A new clipped points. + */ + graphic.clipPointsByRect = function (points, rect) { + return zrUtil.map(points, function (point) { + var x = point[0]; + x = mathMax(x, rect.x); + x = mathMin(x, rect.x + rect.width); + var y = point[1]; + y = mathMax(y, rect.y); + y = mathMin(y, rect.y + rect.height); + return [x, y]; + }); + }; + + /** + * @param {Object} targetRect {x, y, width, height} + * @param {Object} rect {x, y, width, height} + * @return {Object} A new clipped rect. If rect size are negative, return undefined. + */ + graphic.clipRectByRect = function (targetRect, rect) { + var x = mathMax(targetRect.x, rect.x); + var x2 = mathMin(targetRect.x + targetRect.width, rect.x + rect.width); + var y = mathMax(targetRect.y, rect.y); + var y2 = mathMin(targetRect.y + targetRect.height, rect.y + rect.height); + + if (x2 >= x && y2 >= y) { + return { + x: x, + y: y, + width: x2 - x, + height: y2 - y + }; + } + }; + + module.exports = graphic; + + + +/***/ }, +/* 19 */ +/***/ function(module, exports, __webpack_require__) { + + + + var Path = __webpack_require__(20); + var PathProxy = __webpack_require__(36); + var transformPath = __webpack_require__(47); + + // command chars + var cc = [ + 'm', 'M', 'l', 'L', 'v', 'V', 'h', 'H', 'z', 'Z', + 'c', 'C', 'q', 'Q', 't', 'T', 's', 'S', 'a', 'A' + ]; + + var mathSqrt = Math.sqrt; + var mathSin = Math.sin; + var mathCos = Math.cos; + var PI = Math.PI; + + var vMag = function(v) { + return Math.sqrt(v[0] * v[0] + v[1] * v[1]); + }; + var vRatio = function(u, v) { + return (u[0] * v[0] + u[1] * v[1]) / (vMag(u) * vMag(v)); + }; + var vAngle = function(u, v) { + return (u[0] * v[1] < u[1] * v[0] ? -1 : 1) + * Math.acos(vRatio(u, v)); + }; + + function processArc(x1, y1, x2, y2, fa, fs, rx, ry, psiDeg, cmd, path) { + var psi = psiDeg * (PI / 180.0); + var xp = mathCos(psi) * (x1 - x2) / 2.0 + + mathSin(psi) * (y1 - y2) / 2.0; + var yp = -1 * mathSin(psi) * (x1 - x2) / 2.0 + + mathCos(psi) * (y1 - y2) / 2.0; + + var lambda = (xp * xp) / (rx * rx) + (yp * yp) / (ry * ry); + + if (lambda > 1) { + rx *= mathSqrt(lambda); + ry *= mathSqrt(lambda); + } + + 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; + + var cxp = f * rx * yp / ry; + var cyp = f * -ry * xp / rx; + + var cx = (x1 + x2) / 2.0 + + mathCos(psi) * cxp + - mathSin(psi) * cyp; + var cy = (y1 + y2) / 2.0 + + mathSin(psi) * cxp + + mathCos(psi) * cyp; + + var theta = vAngle([ 1, 0 ], [ (xp - cxp) / rx, (yp - cyp) / ry ]); + var u = [ (xp - cxp) / rx, (yp - cyp) / ry ]; + var v = [ (-1 * xp - cxp) / rx, (-1 * yp - cyp) / ry ]; + var dTheta = vAngle(u, v); + + if (vRatio(u, v) <= -1) { + dTheta = PI; + } + if (vRatio(u, v) >= 1) { + dTheta = 0; + } + if (fs === 0 && dTheta > 0) { + dTheta = dTheta - 2 * PI; + } + if (fs === 1 && dTheta < 0) { + dTheta = dTheta + 2 * PI; + } + + path.addData(cmd, cx, cy, rx, ry, theta, dTheta, psi, fs); + } + + function createPathProxyFromString(data) { + if (!data) { + return []; + } + + // command string + var cs = data.replace(/-/g, ' -') + .replace(/ /g, ' ') + .replace(/ /g, ',') + .replace(/,,/g, ','); + + var n; + // create pipes so that we can split the data + for (n = 0; n < cc.length; n++) { + cs = cs.replace(new RegExp(cc[n], 'g'), '|' + cc[n]); + } + + // create array + var arr = cs.split('|'); + // init context point + var cpx = 0; + var cpy = 0; + + var path = new PathProxy(); + var CMD = PathProxy.CMD; + + var prevCmd; + for (n = 1; n < arr.length; n++) { + var str = arr[n]; + var c = str.charAt(0); + var off = 0; + var p = str.slice(1).replace(/e,-/g, 'e-').split(','); + var cmd; + + if (p.length > 0 && p[0] === '') { + p.shift(); + } + + for (var i = 0; i < p.length; i++) { + p[i] = parseFloat(p[i]); + } + while (off < p.length && !isNaN(p[off])) { + if (isNaN(p[0])) { + break; + } + var ctlPtx; + var ctlPty; + + var rx; + var ry; + var psi; + var fa; + var fs; + + var x1 = cpx; + var y1 = cpy; + + // convert l, H, h, V, and v to L + switch (c) { + case 'l': + cpx += p[off++]; + cpy += p[off++]; + cmd = CMD.L; + path.addData(cmd, cpx, cpy); + break; + case 'L': + cpx = p[off++]; + cpy = p[off++]; + cmd = CMD.L; + path.addData(cmd, cpx, cpy); + break; + case 'm': + cpx += p[off++]; + cpy += p[off++]; + cmd = CMD.M; + path.addData(cmd, cpx, cpy); + c = 'l'; + break; + case 'M': + cpx = p[off++]; + cpy = p[off++]; + cmd = CMD.M; + path.addData(cmd, cpx, cpy); + c = 'L'; + break; + case 'h': + cpx += p[off++]; + cmd = CMD.L; + path.addData(cmd, cpx, cpy); + break; + case 'H': + cpx = p[off++]; + cmd = CMD.L; + path.addData(cmd, cpx, cpy); + break; + case 'v': + cpy += p[off++]; + cmd = CMD.L; + path.addData(cmd, cpx, cpy); + break; + case 'V': + cpy = p[off++]; + cmd = CMD.L; + path.addData(cmd, cpx, cpy); + break; + case 'C': + cmd = CMD.C; + path.addData( + cmd, p[off++], p[off++], p[off++], p[off++], p[off++], p[off++] + ); + cpx = p[off - 2]; + cpy = p[off - 1]; + break; + case 'c': + cmd = CMD.C; + path.addData( + cmd, + p[off++] + cpx, p[off++] + cpy, + p[off++] + cpx, p[off++] + cpy, + p[off++] + cpx, p[off++] + cpy + ); + cpx += p[off - 2]; + cpy += p[off - 1]; + break; + case 'S': + ctlPtx = cpx; + ctlPty = cpy; + var len = path.len(); + var pathData = path.data; + if (prevCmd === CMD.C) { + ctlPtx += cpx - pathData[len - 4]; + ctlPty += cpy - pathData[len - 3]; + } + cmd = CMD.C; + x1 = p[off++]; + y1 = p[off++]; + cpx = p[off++]; + cpy = p[off++]; + path.addData(cmd, ctlPtx, ctlPty, x1, y1, cpx, cpy); + break; + case 's': + ctlPtx = cpx; + ctlPty = cpy; + var len = path.len(); + var pathData = path.data; + if (prevCmd === CMD.C) { + ctlPtx += cpx - pathData[len - 4]; + ctlPty += cpy - pathData[len - 3]; + } + cmd = CMD.C; + x1 = cpx + p[off++]; + y1 = cpy + p[off++]; + cpx += p[off++]; + cpy += p[off++]; + path.addData(cmd, ctlPtx, ctlPty, x1, y1, cpx, cpy); + break; + case 'Q': + x1 = p[off++]; + y1 = p[off++]; + cpx = p[off++]; + cpy = p[off++]; + cmd = CMD.Q; + path.addData(cmd, x1, y1, cpx, cpy); + break; + case 'q': + x1 = p[off++] + cpx; + y1 = p[off++] + cpy; + cpx += p[off++]; + cpy += p[off++]; + cmd = CMD.Q; + path.addData(cmd, x1, y1, cpx, cpy); + break; + case 'T': + ctlPtx = cpx; + ctlPty = cpy; + var len = path.len(); + var pathData = path.data; + if (prevCmd === CMD.Q) { + ctlPtx += cpx - pathData[len - 4]; + ctlPty += cpy - pathData[len - 3]; + } + cpx = p[off++]; + cpy = p[off++]; + cmd = CMD.Q; + path.addData(cmd, ctlPtx, ctlPty, cpx, cpy); + break; + case 't': + ctlPtx = cpx; + ctlPty = cpy; + var len = path.len(); + var pathData = path.data; + if (prevCmd === CMD.Q) { + ctlPtx += cpx - pathData[len - 4]; + ctlPty += cpy - pathData[len - 3]; + } + cpx += p[off++]; + cpy += p[off++]; + cmd = CMD.Q; + path.addData(cmd, ctlPtx, ctlPty, cpx, cpy); + break; + case 'A': + rx = p[off++]; + ry = p[off++]; + psi = p[off++]; + fa = p[off++]; + fs = p[off++]; + + x1 = cpx, y1 = cpy; + cpx = p[off++]; + cpy = p[off++]; + cmd = CMD.A; + processArc( + x1, y1, cpx, cpy, fa, fs, rx, ry, psi, cmd, path + ); + break; + case 'a': + rx = p[off++]; + ry = p[off++]; + psi = p[off++]; + fa = p[off++]; + fs = p[off++]; + + x1 = cpx, y1 = cpy; + cpx += p[off++]; + cpy += p[off++]; + cmd = CMD.A; + processArc( + x1, y1, cpx, cpy, fa, fs, rx, ry, psi, cmd, path + ); + break; + } + } + + if (c === 'z' || c === 'Z') { + cmd = CMD.Z; + path.addData(cmd); + } + + prevCmd = cmd; + } + + path.toStatic(); + + return path; + } + + // TODO Optimize double memory cost problem + function createPathOptions(str, opts) { + var pathProxy = createPathProxyFromString(str); + opts = opts || {}; + opts.buildPath = function (path) { + if (path.setData) { + path.setData(pathProxy.data); + // Svg and vml renderer don't have context + var ctx = path.getContext(); + if (ctx) { + path.rebuildPath(ctx); + } + } + else { + var ctx = path; + pathProxy.rebuildPath(ctx); + } + }; + + opts.applyTransform = function (m) { + transformPath(pathProxy, m); + + this.dirty(true); + }; + + return opts; + } + + module.exports = { + /** + * Create a Path object from path string data + * http://www.w3.org/TR/SVG/paths.html#PathData + * @param {Object} opts Other options + */ + createFromString: function (str, opts) { + return new Path(createPathOptions(str, opts)); + }, + + /** + * Create a Path class from path string data + * @param {string} str + * @param {Object} opts Other options + */ + extendFromString: function (str, opts) { + return Path.extend(createPathOptions(str, opts)); + }, + + /** + * Merge multiple paths + */ + // TODO Apply transform + // TODO stroke dash + // TODO Optimize double memory cost problem + mergePath: function (pathEls, opts) { + var pathList = []; + var len = pathEls.length; + for (var i = 0; i < len; i++) { + var pathEl = pathEls[i]; + if (!pathEl.path) { + pathEl.createPathProxy(); + } + if (pathEl.__dirtyPath) { + pathEl.buildPath(pathEl.path, pathEl.shape, true); + } + pathList.push(pathEl.path); + } + + var pathBundle = new Path(opts); + // Need path proxy. + pathBundle.createPathProxy(); + pathBundle.buildPath = function (path) { + path.appendPath(pathList); + // Svg and vml renderer don't have context + var ctx = path.getContext(); + if (ctx) { + path.rebuildPath(ctx); + } + }; + + return pathBundle; + } + }; + + +/***/ }, +/* 20 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * Path element + * @module zrender/graphic/Path + */ + + + + var Displayable = __webpack_require__(21); + var zrUtil = __webpack_require__(4); + var PathProxy = __webpack_require__(36); + var pathContain = __webpack_require__(39); + + var Pattern = __webpack_require__(46); + var getCanvasPattern = Pattern.prototype.getCanvasPattern; + + var abs = Math.abs; + + var pathProxyForDraw = new PathProxy(true); + /** + * @alias module:zrender/graphic/Path + * @extends module:zrender/graphic/Displayable + * @constructor + * @param {Object} opts + */ + function Path(opts) { + Displayable.call(this, opts); + + /** + * @type {module:zrender/core/PathProxy} + * @readOnly + */ + this.path = null; + } + + Path.prototype = { + + constructor: Path, + + type: 'path', + + __dirtyPath: true, + + strokeContainThreshold: 5, + + brush: function (ctx, prevEl) { + var style = this.style; + var path = this.path || pathProxyForDraw; + var hasStroke = style.hasStroke(); + var hasFill = style.hasFill(); + var fill = style.fill; + var stroke = style.stroke; + var hasFillGradient = hasFill && !!(fill.colorStops); + var hasStrokeGradient = hasStroke && !!(stroke.colorStops); + var hasFillPattern = hasFill && !!(fill.image); + var hasStrokePattern = hasStroke && !!(stroke.image); + + style.bind(ctx, this, prevEl); + this.setTransform(ctx); + + if (this.__dirty) { + var rect; + // Update gradient because bounding rect may changed + if (hasFillGradient) { + rect = rect || this.getBoundingRect(); + this._fillGradient = style.getGradient(ctx, fill, rect); + } + if (hasStrokeGradient) { + rect = rect || this.getBoundingRect(); + this._strokeGradient = style.getGradient(ctx, stroke, rect); + } + } + // Use the gradient or pattern + if (hasFillGradient) { + // PENDING If may have affect the state + ctx.fillStyle = this._fillGradient; + } + else if (hasFillPattern) { + ctx.fillStyle = getCanvasPattern.call(fill, ctx); + } + if (hasStrokeGradient) { + ctx.strokeStyle = this._strokeGradient; + } + else if (hasStrokePattern) { + ctx.strokeStyle = getCanvasPattern.call(stroke, ctx); + } + + var lineDash = style.lineDash; + var lineDashOffset = style.lineDashOffset; + + var ctxLineDash = !!ctx.setLineDash; + + // Update path sx, sy + var scale = this.getGlobalScale(); + path.setScale(scale[0], scale[1]); + + // Proxy context + // Rebuild path in following 2 cases + // 1. Path is dirty + // 2. Path needs javascript implemented lineDash stroking. + // In this case, lineDash information will not be saved in PathProxy + if (this.__dirtyPath + || (lineDash && !ctxLineDash && hasStroke) + ) { + path.beginPath(ctx); + + // Setting line dash before build path + if (lineDash && !ctxLineDash) { + path.setLineDash(lineDash); + path.setLineDashOffset(lineDashOffset); + } + + this.buildPath(path, this.shape, false); + + // Clear path dirty flag + if (this.path) { + this.__dirtyPath = false; + } + } + else { + // Replay path building + ctx.beginPath(); + this.path.rebuildPath(ctx); + } + + hasFill && path.fill(ctx); + + if (lineDash && ctxLineDash) { + ctx.setLineDash(lineDash); + ctx.lineDashOffset = lineDashOffset; + } + + hasStroke && path.stroke(ctx); + + if (lineDash && ctxLineDash) { + // PENDING + // Remove lineDash + ctx.setLineDash([]); + } + + + this.restoreTransform(ctx); + + // Draw rect text + if (style.text != null) { + this.drawRectText(ctx, this.getBoundingRect()); + } + }, + + // When bundling path, some shape may decide if use moveTo to begin a new subpath or closePath + // Like in circle + buildPath: function (ctx, shapeCfg, inBundle) {}, + + createPathProxy: function () { + this.path = new PathProxy(); + }, + + getBoundingRect: function () { + var rect = this._rect; + var style = this.style; + var needsUpdateRect = !rect; + if (needsUpdateRect) { + var path = this.path; + if (!path) { + // Create path on demand. + path = this.path = new PathProxy(); + } + if (this.__dirtyPath) { + path.beginPath(); + this.buildPath(path, this.shape, false); + } + rect = path.getBoundingRect(); + } + this._rect = rect; + + if (style.hasStroke()) { + // Needs update rect with stroke lineWidth when + // 1. Element changes scale or lineWidth + // 2. Shape is changed + var rectWithStroke = this._rectWithStroke || (this._rectWithStroke = rect.clone()); + if (this.__dirty || needsUpdateRect) { + rectWithStroke.copy(rect); + // FIXME Must after updateTransform + var w = style.lineWidth; + // PENDING, Min line width is needed when line is horizontal or vertical + var lineScale = style.strokeNoScale ? this.getLineScale() : 1; + + // Only add extra hover lineWidth when there are no fill + if (!style.hasFill()) { + w = Math.max(w, this.strokeContainThreshold || 4); + } + // Consider line width + // Line scale can't be 0; + if (lineScale > 1e-10) { + rectWithStroke.width += w / lineScale; + rectWithStroke.height += w / lineScale; + rectWithStroke.x -= w / lineScale / 2; + rectWithStroke.y -= w / lineScale / 2; + } + } + + // Return rect with stroke + return rectWithStroke; + } + + return rect; + }, + + contain: function (x, y) { + var localPos = this.transformCoordToLocal(x, y); + var rect = this.getBoundingRect(); + var style = this.style; + x = localPos[0]; + y = localPos[1]; + + if (rect.contain(x, y)) { + var pathData = this.path.data; + if (style.hasStroke()) { + var lineWidth = style.lineWidth; + var lineScale = style.strokeNoScale ? this.getLineScale() : 1; + // Line scale can't be 0; + if (lineScale > 1e-10) { + // Only add extra hover lineWidth when there are no fill + if (!style.hasFill()) { + lineWidth = Math.max(lineWidth, this.strokeContainThreshold); + } + if (pathContain.containStroke( + pathData, lineWidth / lineScale, x, y + )) { + return true; + } + } + } + if (style.hasFill()) { + return pathContain.contain(pathData, x, y); + } + } + return false; + }, + + /** + * @param {boolean} dirtyPath + */ + dirty: function (dirtyPath) { + if (dirtyPath == null) { + dirtyPath = true; + } + // Only mark dirty, not mark clean + if (dirtyPath) { + this.__dirtyPath = dirtyPath; + this._rect = null; + } + + this.__dirty = true; + + this.__zr && this.__zr.refresh(); + + // Used as a clipping path + if (this.__clipTarget) { + this.__clipTarget.dirty(); + } + }, + + /** + * Alias for animate('shape') + * @param {boolean} loop + */ + animateShape: function (loop) { + return this.animate('shape', loop); + }, + + // Overwrite attrKV + attrKV: function (key, value) { + // FIXME + if (key === 'shape') { + this.setShape(value); + this.__dirtyPath = true; + this._rect = null; + } + else { + Displayable.prototype.attrKV.call(this, key, value); + } + }, + + /** + * @param {Object|string} key + * @param {*} value + */ + setShape: function (key, value) { + var shape = this.shape; + // Path from string may not have shape + if (shape) { + if (zrUtil.isObject(key)) { + for (var name in key) { + if (key.hasOwnProperty(name)) { + shape[name] = key[name]; + } + } + } + else { + shape[key] = value; + } + this.dirty(true); + } + return this; + }, + + getLineScale: function () { + var m = this.transform; + // Get the line scale. + // Determinant of `m` means how much the area is enlarged by the + // transformation. So its square root can be used as a scale factor + // for width. + 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; + } + }; + + /** + * 扩展一个 Path element, 比如星形,圆等。 + * Extend a path element + * @param {Object} props + * @param {string} props.type Path type + * @param {Function} props.init Initialize + * @param {Function} props.buildPath Overwrite buildPath method + * @param {Object} [props.style] Extended default style config + * @param {Object} [props.shape] Extended default shape config + */ + Path.extend = function (defaults) { + var Sub = function (opts) { + Path.call(this, opts); + + if (defaults.style) { + // Extend default style + this.style.extendFrom(defaults.style, false); + } + + // Extend default shape + var defaultShape = defaults.shape; + if (defaultShape) { + this.shape = this.shape || {}; + var thisShape = this.shape; + for (var name in defaultShape) { + if ( + ! thisShape.hasOwnProperty(name) + && defaultShape.hasOwnProperty(name) + ) { + thisShape[name] = defaultShape[name]; + } + } + } + + defaults.init && defaults.init.call(this, opts); + }; + + zrUtil.inherits(Sub, Path); + + // FIXME 不能 extend position, rotation 等引用对象 + for (var name in defaults) { + // Extending prototype values and methods + if (name !== 'style' && name !== 'shape') { + Sub.prototype[name] = defaults[name]; + } + } + + return Sub; + }; + + zrUtil.inherits(Path, Displayable); + + module.exports = Path; + + +/***/ }, +/* 21 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * 可绘制的图形基类 + * Base class of all displayable graphic objects + * @module zrender/graphic/Displayable + */ + + + + var zrUtil = __webpack_require__(4); + + var Style = __webpack_require__(22); + + var Element = __webpack_require__(23); + var RectText = __webpack_require__(35); + // var Stateful = require('./mixin/Stateful'); + + /** + * @alias module:zrender/graphic/Displayable + * @extends module:zrender/Element + * @extends module:zrender/graphic/mixin/RectText + */ + function Displayable(opts) { + + opts = opts || {}; + + Element.call(this, opts); + + // Extend properties + for (var name in opts) { + if ( + opts.hasOwnProperty(name) && + name !== 'style' + ) { + this[name] = opts[name]; + } + } + + /** + * @type {module:zrender/graphic/Style} + */ + this.style = new Style(opts.style); + + this._rect = null; + // Shapes for cascade clipping. + this.__clipPaths = []; + + // FIXME Stateful must be mixined after style is setted + // Stateful.call(this, opts); + } + + Displayable.prototype = { + + constructor: Displayable, + + type: 'displayable', + + /** + * Displayable 是否为脏,Painter 中会根据该标记判断是否需要是否需要重新绘制 + * Dirty flag. From which painter will determine if this displayable object needs brush + * @name module:zrender/graphic/Displayable#__dirty + * @type {boolean} + */ + __dirty: true, + + /** + * 图形是否可见,为true时不绘制图形,但是仍能触发鼠标事件 + * If ignore drawing of the displayable object. Mouse event will still be triggered + * @name module:/zrender/graphic/Displayable#invisible + * @type {boolean} + * @default false + */ + invisible: false, + + /** + * @name module:/zrender/graphic/Displayable#z + * @type {number} + * @default 0 + */ + z: 0, + + /** + * @name module:/zrender/graphic/Displayable#z + * @type {number} + * @default 0 + */ + z2: 0, + + /** + * z层level,决定绘画在哪层canvas中 + * @name module:/zrender/graphic/Displayable#zlevel + * @type {number} + * @default 0 + */ + zlevel: 0, + + /** + * 是否可拖拽 + * @name module:/zrender/graphic/Displayable#draggable + * @type {boolean} + * @default false + */ + draggable: false, + + /** + * 是否正在拖拽 + * @name module:/zrender/graphic/Displayable#draggable + * @type {boolean} + * @default false + */ + dragging: false, + + /** + * 是否相应鼠标事件 + * @name module:/zrender/graphic/Displayable#silent + * @type {boolean} + * @default false + */ + silent: false, + + /** + * If enable culling + * @type {boolean} + * @default false + */ + culling: false, + + /** + * Mouse cursor when hovered + * @name module:/zrender/graphic/Displayable#cursor + * @type {string} + */ + cursor: 'pointer', + + /** + * If hover area is bounding rect + * @name module:/zrender/graphic/Displayable#rectHover + * @type {string} + */ + rectHover: false, + + /** + * Render the element progressively when the value >= 0, + * usefull for large data. + * @type {number} + */ + progressive: -1, + + beforeBrush: function (ctx) {}, + + afterBrush: function (ctx) {}, + + /** + * 图形绘制方法 + * @param {Canvas2DRenderingContext} ctx + */ + // Interface + brush: function (ctx, prevEl) {}, + + /** + * 获取最小包围盒 + * @return {module:zrender/core/BoundingRect} + */ + // Interface + getBoundingRect: function () {}, + + /** + * 判断坐标 x, y 是否在图形上 + * If displayable element contain coord x, y + * @param {number} x + * @param {number} y + * @return {boolean} + */ + contain: function (x, y) { + return this.rectContain(x, y); + }, + + /** + * @param {Function} cb + * @param {} context + */ + traverse: function (cb, context) { + cb.call(context, this); + }, + + /** + * 判断坐标 x, y 是否在图形的包围盒上 + * If bounding rect of element contain coord x, y + * @param {number} x + * @param {number} y + * @return {boolean} + */ + rectContain: function (x, y) { + var coord = this.transformCoordToLocal(x, y); + var rect = this.getBoundingRect(); + return rect.contain(coord[0], coord[1]); + }, + + /** + * 标记图形元素为脏,并且在下一帧重绘 + * Mark displayable element dirty and refresh next frame + */ + dirty: function () { + this.__dirty = true; + + this._rect = null; + + this.__zr && this.__zr.refresh(); + }, + + /** + * 图形是否会触发事件 + * If displayable object binded any event + * @return {boolean} + */ + // TODO, 通过 bind 绑定的事件 + // isSilent: function () { + // return !( + // this.hoverable || this.draggable + // || this.onmousemove || this.onmouseover || this.onmouseout + // || this.onmousedown || this.onmouseup || this.onclick + // || this.ondragenter || this.ondragover || this.ondragleave + // || this.ondrop + // ); + // }, + /** + * Alias for animate('style') + * @param {boolean} loop + */ + animateStyle: function (loop) { + return this.animate('style', loop); + }, + + attrKV: function (key, value) { + if (key !== 'style') { + Element.prototype.attrKV.call(this, key, value); + } + else { + this.style.set(value); + } + }, + + /** + * @param {Object|string} key + * @param {*} value + */ + setStyle: function (key, value) { + this.style.set(key, value); + this.dirty(false); + return this; + }, + + /** + * Use given style object + * @param {Object} obj + */ + useStyle: function (obj) { + this.style = new Style(obj); + this.dirty(false); + return this; + } + }; + + zrUtil.inherits(Displayable, Element); + + zrUtil.mixin(Displayable, RectText); + // zrUtil.mixin(Displayable, Stateful); + + module.exports = Displayable; + + +/***/ }, +/* 22 */ +/***/ function(module, exports) { + + /** + * @module zrender/graphic/Style + */ + + + var 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); + // var LINE_PROPS = STYLE_COMMON_PROPS.slice(4); + + var Style = function (opts) { + this.extendFrom(opts); + }; + + function createLinearGradient(ctx, obj, rect) { + var x = obj.x == null ? 0 : obj.x; + var x2 = obj.x2 == null ? 1 : obj.x2; + var y = obj.y == null ? 0 : obj.y; + var y2 = obj.y2 == null ? 0 : obj.y2; + + if (!obj.global) { + x = x * rect.width + rect.x; + x2 = x2 * rect.width + rect.x; + y = y * rect.height + rect.y; + y2 = y2 * rect.height + rect.y; + } + + var canvasGradient = ctx.createLinearGradient(x, y, x2, y2); + + return canvasGradient; + } + + function createRadialGradient(ctx, obj, rect) { + var width = rect.width; + var height = rect.height; + var min = Math.min(width, height); + + var x = obj.x == null ? 0.5 : obj.x; + var y = obj.y == null ? 0.5 : obj.y; + var r = obj.r == null ? 0.5 : obj.r; + if (!obj.global) { + x = x * width + rect.x; + y = y * height + rect.y; + r = r * min; + } + + var canvasGradient = ctx.createRadialGradient(x, y, 0, x, y, r); + + return canvasGradient; + } + + + Style.prototype = { + + constructor: Style, + + /** + * @type {string} + */ + fill: '#000000', + + /** + * @type {string} + */ + stroke: null, + + /** + * @type {number} + */ + opacity: 1, + + /** + * @type {Array.} + */ + lineDash: null, + + /** + * @type {number} + */ + lineDashOffset: 0, + + /** + * @type {number} + */ + shadowBlur: 0, + + /** + * @type {number} + */ + shadowOffsetX: 0, + + /** + * @type {number} + */ + shadowOffsetY: 0, + + /** + * @type {number} + */ + lineWidth: 1, + + /** + * If stroke ignore scale + * @type {Boolean} + */ + strokeNoScale: false, + + // Bounding rect text configuration + // Not affected by element transform + /** + * @type {string} + */ + text: null, + + /** + * @type {string} + */ + textFill: '#000', + + /** + * @type {string} + */ + textStroke: null, + + /** + * 'inside', 'left', 'right', 'top', 'bottom' + * [x, y] + * @type {string|Array.} + * @default 'inside' + */ + textPosition: 'inside', + + /** + * If not specified, use the boundingRect of a `displayable`. + * @type {Object} + */ + textPositionRect: null, + + /** + * [x, y] + * @type {Array.} + */ + textOffset: null, + + /** + * @type {string} + */ + textBaseline: null, + + /** + * @type {string} + */ + textAlign: null, + + /** + * @type {string} + */ + textVerticalAlign: null, + + /** + * Only useful in Path and Image element + * @type {number} + */ + textDistance: 5, + + /** + * Only useful in Path and Image element + * @type {number} + */ + textShadowBlur: 0, + + /** + * Only useful in Path and Image element + * @type {number} + */ + textShadowOffsetX: 0, + + /** + * Only useful in Path and Image element + * @type {number} + */ + textShadowOffsetY: 0, + + /** + * If transform text + * Only useful in Path and Image element + * @type {boolean} + */ + textTransform: false, + + /** + * Text rotate around position of Path or Image + * Only useful in Path and Image element and textTransform is false. + */ + textRotation: 0, + + /** + * @type {string} + * https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/globalCompositeOperation + */ + blend: null, + + /** + * @param {CanvasRenderingContext2D} ctx + */ + bind: function (ctx, el, prevEl) { + var style = this; + var prevStyle = prevEl && prevEl.style; + var firstDraw = !prevStyle; + + for (var i = 0; i < STYLE_COMMON_PROPS.length; i++) { + var prop = STYLE_COMMON_PROPS[i]; + var styleName = prop[0]; + + if (firstDraw || style[styleName] !== prevStyle[styleName]) { + // FIXME Invalid property value will cause style leak from previous element. + ctx[styleName] = style[styleName] || prop[1]; + } + } + + if ((firstDraw || style.fill !== prevStyle.fill)) { + ctx.fillStyle = style.fill; + } + if ((firstDraw || style.stroke !== prevStyle.stroke)) { + ctx.strokeStyle = style.stroke; + } + if ((firstDraw || style.opacity !== prevStyle.opacity)) { + ctx.globalAlpha = style.opacity == null ? 1 : style.opacity; + } + + if ((firstDraw || style.blend !== prevStyle.blend)) { + ctx.globalCompositeOperation = style.blend || 'source-over'; + } + if (this.hasStroke()) { + var lineWidth = style.lineWidth; + ctx.lineWidth = lineWidth / ( + (this.strokeNoScale && el && el.getLineScale) ? el.getLineScale() : 1 + ); + } + }, + + hasFill: function () { + var fill = this.fill; + return fill != null && fill !== 'none'; + }, + + hasStroke: function () { + var stroke = this.stroke; + return stroke != null && stroke !== 'none' && this.lineWidth > 0; + }, + + /** + * Extend from other style + * @param {zrender/graphic/Style} otherStyle + * @param {boolean} overwrite + */ + extendFrom: function (otherStyle, overwrite) { + if (otherStyle) { + var target = this; + for (var name in otherStyle) { + if (otherStyle.hasOwnProperty(name) + && (overwrite || ! target.hasOwnProperty(name)) + ) { + target[name] = otherStyle[name]; + } + } + } + }, + + /** + * Batch setting style with a given object + * @param {Object|string} obj + * @param {*} [obj] + */ + set: function (obj, value) { + if (typeof obj === 'string') { + this[obj] = value; + } + else { + this.extendFrom(obj, true); + } + }, + + /** + * Clone + * @return {zrender/graphic/Style} [description] + */ + clone: function () { + var newStyle = new this.constructor(); + newStyle.extendFrom(this, true); + return newStyle; + }, + + getGradient: function (ctx, obj, rect) { + var method = obj.type === 'radial' ? createRadialGradient : createLinearGradient; + var canvasGradient = method(ctx, obj, rect); + var colorStops = obj.colorStops; + for (var i = 0; i < colorStops.length; i++) { + canvasGradient.addColorStop( + colorStops[i].offset, colorStops[i].color + ); + } + return canvasGradient; + } + }; + + var styleProto = Style.prototype; + for (var i = 0; i < STYLE_COMMON_PROPS.length; i++) { + var prop = STYLE_COMMON_PROPS[i]; + if (!(prop[0] in styleProto)) { + styleProto[prop[0]] = prop[1]; + } + } + + // Provide for others + Style.getGradient = styleProto.getGradient; + + module.exports = Style; + + +/***/ }, +/* 23 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + /** + * @module zrender/Element + */ + + + var guid = __webpack_require__(24); + var Eventful = __webpack_require__(25); + var Transformable = __webpack_require__(26); + var Animatable = __webpack_require__(27); + var zrUtil = __webpack_require__(4); + + /** + * @alias module:zrender/Element + * @constructor + * @extends {module:zrender/mixin/Animatable} + * @extends {module:zrender/mixin/Transformable} + * @extends {module:zrender/mixin/Eventful} + */ + var Element = function (opts) { + + Transformable.call(this, opts); + Eventful.call(this, opts); + Animatable.call(this, opts); + + /** + * 画布元素ID + * @type {string} + */ + this.id = opts.id || guid(); + }; + + Element.prototype = { + + /** + * 元素类型 + * Element type + * @type {string} + */ + type: 'element', + + /** + * 元素名字 + * Element name + * @type {string} + */ + name: '', + + /** + * ZRender 实例对象,会在 element 添加到 zrender 实例中后自动赋值 + * ZRender instance will be assigned when element is associated with zrender + * @name module:/zrender/Element#__zr + * @type {module:zrender/ZRender} + */ + __zr: null, + + /** + * 图形是否忽略,为true时忽略图形的绘制以及事件触发 + * If ignore drawing and events of the element object + * @name module:/zrender/Element#ignore + * @type {boolean} + * @default false + */ + ignore: false, + + /** + * 用于裁剪的路径(shape),所有 Group 内的路径在绘制时都会被这个路径裁剪 + * 该路径会继承被裁减对象的变换 + * @type {module:zrender/graphic/Path} + * @see http://www.w3.org/TR/2dcontext/#clipping-region + * @readOnly + */ + clipPath: null, + + /** + * Drift element + * @param {number} dx dx on the global space + * @param {number} dy dy on the global space + */ + drift: function (dx, dy) { + switch (this.draggable) { + case 'horizontal': + dy = 0; + break; + case 'vertical': + dx = 0; + break; + } + + var m = this.transform; + if (!m) { + m = this.transform = [1, 0, 0, 1, 0, 0]; + } + m[4] += dx; + m[5] += dy; + + this.decomposeTransform(); + this.dirty(false); + }, + + /** + * Hook before update + */ + beforeUpdate: function () {}, + /** + * Hook after update + */ + afterUpdate: function () {}, + /** + * Update each frame + */ + update: function () { + this.updateTransform(); + }, + + /** + * @param {Function} cb + * @param {} context + */ + traverse: function (cb, context) {}, + + /** + * @protected + */ + attrKV: function (key, value) { + if (key === 'position' || key === 'scale' || key === 'origin') { + // Copy the array + if (value) { + var target = this[key]; + if (!target) { + target = this[key] = []; + } + target[0] = value[0]; + target[1] = value[1]; + } + } + else { + this[key] = value; + } + }, + + /** + * Hide the element + */ + hide: function () { + this.ignore = true; + this.__zr && this.__zr.refresh(); + }, + + /** + * Show the element + */ + show: function () { + this.ignore = false; + this.__zr && this.__zr.refresh(); + }, + + /** + * @param {string|Object} key + * @param {*} value + */ + attr: function (key, value) { + if (typeof key === 'string') { + this.attrKV(key, value); + } + else if (zrUtil.isObject(key)) { + for (var name in key) { + if (key.hasOwnProperty(name)) { + this.attrKV(name, key[name]); + } + } + } + + this.dirty(false); + + return this; + }, + + /** + * @param {module:zrender/graphic/Path} clipPath + */ + setClipPath: function (clipPath) { + var zr = this.__zr; + if (zr) { + clipPath.addSelfToZr(zr); + } + + // Remove previous clip path + if (this.clipPath && this.clipPath !== clipPath) { + this.removeClipPath(); + } + + this.clipPath = clipPath; + clipPath.__zr = zr; + clipPath.__clipTarget = this; + + this.dirty(false); + }, + + /** + */ + removeClipPath: function () { + var clipPath = this.clipPath; + if (clipPath) { + if (clipPath.__zr) { + clipPath.removeSelfFromZr(clipPath.__zr); + } + + clipPath.__zr = null; + clipPath.__clipTarget = null; + this.clipPath = null; + + this.dirty(false); + } + }, + + /** + * Add self from zrender instance. + * Not recursively because it will be invoked when element added to storage. + * @param {module:zrender/ZRender} zr + */ + addSelfToZr: function (zr) { + this.__zr = zr; + // 添加动画 + var animators = this.animators; + if (animators) { + for (var i = 0; i < animators.length; i++) { + zr.animation.addAnimator(animators[i]); + } + } + + if (this.clipPath) { + this.clipPath.addSelfToZr(zr); + } + }, + + /** + * Remove self from zrender instance. + * Not recursively because it will be invoked when element added to storage. + * @param {module:zrender/ZRender} zr + */ + removeSelfFromZr: function (zr) { + this.__zr = null; + // 移除动画 + var animators = this.animators; + if (animators) { + for (var i = 0; i < animators.length; i++) { + zr.animation.removeAnimator(animators[i]); + } + } + + if (this.clipPath) { + this.clipPath.removeSelfFromZr(zr); + } + } + }; + + zrUtil.mixin(Element, Animatable); + zrUtil.mixin(Element, Transformable); + zrUtil.mixin(Element, Eventful); + + module.exports = Element; + + +/***/ }, +/* 24 */ +/***/ function(module, exports) { + + /** + * zrender: 生成唯一id + * + * @author errorrik (errorrik@gmail.com) + */ + + + var idStart = 0x0907; + + module.exports = function () { + return idStart++; + }; + + + +/***/ }, +/* 25 */ +/***/ function(module, exports) { + + /** + * 事件扩展 + * @module zrender/mixin/Eventful + * @author Kener (@Kener-林峰, kener.linfeng@gmail.com) + * pissang (https://www.github.com/pissang) + */ + + + var arrySlice = Array.prototype.slice; + + /** + * 事件分发器 + * @alias module:zrender/mixin/Eventful + * @constructor + */ + var Eventful = function () { + this._$handlers = {}; + }; + + Eventful.prototype = { + + constructor: Eventful, + + /** + * 单次触发绑定,trigger后销毁 + * + * @param {string} event 事件名 + * @param {Function} handler 响应函数 + * @param {Object} context + */ + one: function (event, handler, context) { + var _h = this._$handlers; + + if (!handler || !event) { + return this; + } + + if (!_h[event]) { + _h[event] = []; + } + + for (var i = 0; i < _h[event].length; i++) { + if (_h[event][i].h === handler) { + return this; + } + } + + _h[event].push({ + h: handler, + one: true, + ctx: context || this + }); + + return this; + }, + + /** + * 绑定事件 + * @param {string} event 事件名 + * @param {Function} handler 事件处理函数 + * @param {Object} [context] + */ + on: function (event, handler, context) { + var _h = this._$handlers; + + if (!handler || !event) { + return this; + } + + if (!_h[event]) { + _h[event] = []; + } + + for (var i = 0; i < _h[event].length; i++) { + if (_h[event][i].h === handler) { + return this; + } + } + + _h[event].push({ + h: handler, + one: false, + ctx: context || this + }); + + return this; + }, + + /** + * 是否绑定了事件 + * @param {string} event + * @return {boolean} + */ + isSilent: function (event) { + var _h = this._$handlers; + return _h[event] && _h[event].length; + }, + + /** + * 解绑事件 + * @param {string} event 事件名 + * @param {Function} [handler] 事件处理函数 + */ + off: function (event, handler) { + var _h = this._$handlers; + + if (!event) { + this._$handlers = {}; + return this; + } + + if (handler) { + if (_h[event]) { + var newList = []; + for (var i = 0, l = _h[event].length; i < l; i++) { + if (_h[event][i]['h'] != handler) { + newList.push(_h[event][i]); + } + } + _h[event] = newList; + } + + if (_h[event] && _h[event].length === 0) { + delete _h[event]; + } + } + else { + delete _h[event]; + } + + return this; + }, + + /** + * 事件分发 + * + * @param {string} type 事件类型 + */ + trigger: function (type) { + if (this._$handlers[type]) { + var args = arguments; + var argLen = args.length; + + if (argLen > 3) { + args = arrySlice.call(args, 1); + } + + var _h = this._$handlers[type]; + var len = _h.length; + for (var i = 0; i < len;) { + // Optimize advise from backbone + switch (argLen) { + case 1: + _h[i]['h'].call(_h[i]['ctx']); + break; + case 2: + _h[i]['h'].call(_h[i]['ctx'], args[1]); + break; + case 3: + _h[i]['h'].call(_h[i]['ctx'], args[1], args[2]); + break; + default: + // have more than 2 given arguments + _h[i]['h'].apply(_h[i]['ctx'], args); + break; + } + + if (_h[i]['one']) { + _h.splice(i, 1); + len--; + } + else { + i++; + } + } + } + + return this; + }, + + /** + * 带有context的事件分发, 最后一个参数是事件回调的context + * @param {string} type 事件类型 + */ + triggerWithContext: function (type) { + if (this._$handlers[type]) { + var args = arguments; + var argLen = args.length; + + if (argLen > 4) { + args = arrySlice.call(args, 1, args.length - 1); + } + var ctx = args[args.length - 1]; + + var _h = this._$handlers[type]; + var len = _h.length; + for (var i = 0; i < len;) { + // Optimize advise from backbone + switch (argLen) { + case 1: + _h[i]['h'].call(ctx); + break; + case 2: + _h[i]['h'].call(ctx, args[1]); + break; + case 3: + _h[i]['h'].call(ctx, args[1], args[2]); + break; + default: + // have more than 2 given arguments + _h[i]['h'].apply(ctx, args); + break; + } + + if (_h[i]['one']) { + _h.splice(i, 1); + len--; + } + else { + i++; + } + } + } + + return this; + } + }; + + // 对象可以通过 onxxxx 绑定事件 + /** + * @event module:zrender/mixin/Eventful#onclick + * @type {Function} + * @default null + */ + /** + * @event module:zrender/mixin/Eventful#onmouseover + * @type {Function} + * @default null + */ + /** + * @event module:zrender/mixin/Eventful#onmouseout + * @type {Function} + * @default null + */ + /** + * @event module:zrender/mixin/Eventful#onmousemove + * @type {Function} + * @default null + */ + /** + * @event module:zrender/mixin/Eventful#onmousewheel + * @type {Function} + * @default null + */ + /** + * @event module:zrender/mixin/Eventful#onmousedown + * @type {Function} + * @default null + */ + /** + * @event module:zrender/mixin/Eventful#onmouseup + * @type {Function} + * @default null + */ + /** + * @event module:zrender/mixin/Eventful#ondrag + * @type {Function} + * @default null + */ + /** + * @event module:zrender/mixin/Eventful#ondragstart + * @type {Function} + * @default null + */ + /** + * @event module:zrender/mixin/Eventful#ondragend + * @type {Function} + * @default null + */ + /** + * @event module:zrender/mixin/Eventful#ondragenter + * @type {Function} + * @default null + */ + /** + * @event module:zrender/mixin/Eventful#ondragleave + * @type {Function} + * @default null + */ + /** + * @event module:zrender/mixin/Eventful#ondragover + * @type {Function} + * @default null + */ + /** + * @event module:zrender/mixin/Eventful#ondrop + * @type {Function} + * @default null + */ + + module.exports = Eventful; + + + +/***/ }, +/* 26 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + /** + * 提供变换扩展 + * @module zrender/mixin/Transformable + * @author pissang (https://www.github.com/pissang) + */ + + + var matrix = __webpack_require__(11); + var vector = __webpack_require__(10); + var mIdentity = matrix.identity; + + var EPSILON = 5e-5; + + function isNotAroundZero(val) { + return val > EPSILON || val < -EPSILON; + } + + /** + * @alias module:zrender/mixin/Transformable + * @constructor + */ + var Transformable = function (opts) { + opts = opts || {}; + // If there are no given position, rotation, scale + if (!opts.position) { + /** + * 平移 + * @type {Array.} + * @default [0, 0] + */ + this.position = [0, 0]; + } + if (opts.rotation == null) { + /** + * 旋转 + * @type {Array.} + * @default 0 + */ + this.rotation = 0; + } + if (!opts.scale) { + /** + * 缩放 + * @type {Array.} + * @default [1, 1] + */ + this.scale = [1, 1]; + } + /** + * 旋转和缩放的原点 + * @type {Array.} + * @default null + */ + this.origin = this.origin || null; + }; + + var transformableProto = Transformable.prototype; + transformableProto.transform = null; + + /** + * 判断是否需要有坐标变换 + * 如果有坐标变换, 则从position, rotation, scale以及父节点的transform计算出自身的transform矩阵 + */ + transformableProto.needLocalTransform = function () { + return isNotAroundZero(this.rotation) + || isNotAroundZero(this.position[0]) + || isNotAroundZero(this.position[1]) + || isNotAroundZero(this.scale[0] - 1) + || isNotAroundZero(this.scale[1] - 1); + }; + + transformableProto.updateTransform = function () { + var parent = this.parent; + var parentHasTransform = parent && parent.transform; + var needLocalTransform = this.needLocalTransform(); + + var m = this.transform; + if (!(needLocalTransform || parentHasTransform)) { + m && mIdentity(m); + return; + } + + m = m || matrix.create(); + + if (needLocalTransform) { + this.getLocalTransform(m); + } + else { + mIdentity(m); + } + + // 应用父节点变换 + if (parentHasTransform) { + if (needLocalTransform) { + matrix.mul(m, parent.transform, m); + } + else { + matrix.copy(m, parent.transform); + } + } + // 保存这个变换矩阵 + this.transform = m; + + this.invTransform = this.invTransform || matrix.create(); + matrix.invert(this.invTransform, m); + }; + + transformableProto.getLocalTransform = function (m) { + return Transformable.getLocalTransform(this, m); + }; + + /** + * 将自己的transform应用到context上 + * @param {Context2D} ctx + */ + transformableProto.setTransform = function (ctx) { + var m = this.transform; + var dpr = ctx.dpr || 1; + if (m) { + ctx.setTransform(dpr * m[0], dpr * m[1], dpr * m[2], dpr * m[3], dpr * m[4], dpr * m[5]); + } + else { + ctx.setTransform(dpr, 0, 0, dpr, 0, 0); + } + }; + + transformableProto.restoreTransform = function (ctx) { + var dpr = ctx.dpr || 1; + ctx.setTransform(dpr, 0, 0, dpr, 0, 0); + }; + + var tmpTransform = []; + + /** + * 分解`transform`矩阵到`position`, `rotation`, `scale` + */ + transformableProto.decomposeTransform = function () { + if (!this.transform) { + return; + } + var parent = this.parent; + var m = this.transform; + if (parent && parent.transform) { + // Get local transform and decompose them to position, scale, rotation + matrix.mul(tmpTransform, parent.invTransform, m); + m = tmpTransform; + } + var sx = m[0] * m[0] + m[1] * m[1]; + var sy = m[2] * m[2] + m[3] * m[3]; + var position = this.position; + var scale = this.scale; + if (isNotAroundZero(sx - 1)) { + sx = Math.sqrt(sx); + } + if (isNotAroundZero(sy - 1)) { + sy = Math.sqrt(sy); + } + if (m[0] < 0) { + sx = -sx; + } + if (m[3] < 0) { + sy = -sy; + } + position[0] = m[4]; + position[1] = m[5]; + scale[0] = sx; + scale[1] = sy; + this.rotation = Math.atan2(-m[1] / sy, m[0] / sx); + }; + + /** + * Get global scale + * @return {Array.} + */ + transformableProto.getGlobalScale = function () { + var m = this.transform; + if (!m) { + return [1, 1]; + } + var sx = Math.sqrt(m[0] * m[0] + m[1] * m[1]); + var sy = Math.sqrt(m[2] * m[2] + m[3] * m[3]); + if (m[0] < 0) { + sx = -sx; + } + if (m[3] < 0) { + sy = -sy; + } + return [sx, sy]; + }; + /** + * 变换坐标位置到 shape 的局部坐标空间 + * @method + * @param {number} x + * @param {number} y + * @return {Array.} + */ + transformableProto.transformCoordToLocal = function (x, y) { + var v2 = [x, y]; + var invTransform = this.invTransform; + if (invTransform) { + vector.applyTransform(v2, v2, invTransform); + } + return v2; + }; + + /** + * 变换局部坐标位置到全局坐标空间 + * @method + * @param {number} x + * @param {number} y + * @return {Array.} + */ + transformableProto.transformCoordToGlobal = function (x, y) { + var v2 = [x, y]; + var transform = this.transform; + if (transform) { + vector.applyTransform(v2, v2, transform); + } + return v2; + }; + + /** + * @static + * @param {Object} target + * @param {Array.} target.origin + * @param {number} target.rotation + * @param {Array.} target.position + * @param {Array.} [m] + */ + Transformable.getLocalTransform = function (target, m) { + m = m || []; + mIdentity(m); + + var origin = target.origin; + var scale = target.scale || [1, 1]; + var rotation = target.rotation || 0; + var position = target.position || [0, 0]; + + if (origin) { + // Translate to origin + m[4] -= origin[0]; + m[5] -= origin[1]; + } + matrix.scale(m, m, scale); + if (rotation) { + matrix.rotate(m, m, rotation); + } + if (origin) { + // Translate back from origin + m[4] += origin[0]; + m[5] += origin[1]; + } + + m[4] += position[0]; + m[5] += position[1]; + + return m; + }; + + module.exports = Transformable; + + + +/***/ }, +/* 27 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + /** + * @module zrender/mixin/Animatable + */ + + + var Animator = __webpack_require__(28); + var util = __webpack_require__(4); + var isString = util.isString; + var isFunction = util.isFunction; + var isObject = util.isObject; + var log = __webpack_require__(33); + + /** + * @alias modue:zrender/mixin/Animatable + * @constructor + */ + var Animatable = function () { + + /** + * @type {Array.} + * @readOnly + */ + this.animators = []; + }; + + Animatable.prototype = { + + constructor: Animatable, + + /** + * 动画 + * + * @param {string} path 需要添加动画的属性获取路径,可以通过a.b.c来获取深层的属性 + * @param {boolean} [loop] 动画是否循环 + * @return {module:zrender/animation/Animator} + * @example: + * el.animate('style', false) + * .when(1000, {x: 10} ) + * .done(function(){ // Animation done }) + * .start() + */ + animate: function (path, loop) { + var target; + var animatingShape = false; + var el = this; + var zr = this.__zr; + if (path) { + var pathSplitted = path.split('.'); + var prop = el; + // If animating shape + animatingShape = pathSplitted[0] === 'shape'; + for (var i = 0, l = pathSplitted.length; i < l; i++) { + if (!prop) { + continue; + } + prop = prop[pathSplitted[i]]; + } + if (prop) { + target = prop; + } + } + else { + target = el; + } + + if (!target) { + log( + 'Property "' + + path + + '" is not existed in element ' + + el.id + ); + return; + } + + var animators = el.animators; + + var animator = new Animator(target, loop); + + animator.during(function (target) { + el.dirty(animatingShape); + }) + .done(function () { + // FIXME Animator will not be removed if use `Animator#stop` to stop animation + animators.splice(util.indexOf(animators, animator), 1); + }); + + animators.push(animator); + + // If animate after added to the zrender + if (zr) { + zr.animation.addAnimator(animator); + } + + return animator; + }, + + /** + * 停止动画 + * @param {boolean} forwardToLast If move to last frame before stop + */ + stopAnimation: function (forwardToLast) { + var animators = this.animators; + var len = animators.length; + for (var i = 0; i < len; i++) { + animators[i].stop(forwardToLast); + } + animators.length = 0; + + return this; + }, + + /** + * @param {Object} target + * @param {number} [time=500] Time in ms + * @param {string} [easing='linear'] + * @param {number} [delay=0] + * @param {Function} [callback] + * + * @example + * // Animate position + * el.animateTo({ + * position: [10, 10] + * }, function () { // done }) + * + * // Animate shape, style and position in 100ms, delayed 100ms, with cubicOut easing + * el.animateTo({ + * shape: { + * width: 500 + * }, + * style: { + * fill: 'red' + * } + * position: [10, 10] + * }, 100, 100, 'cubicOut', function () { // done }) + */ + // TODO Return animation key + animateTo: function (target, time, delay, easing, callback) { + // animateTo(target, time, easing, callback); + if (isString(delay)) { + callback = easing; + easing = delay; + delay = 0; + } + // animateTo(target, time, delay, callback); + else if (isFunction(easing)) { + callback = easing; + easing = 'linear'; + delay = 0; + } + // animateTo(target, time, callback); + else if (isFunction(delay)) { + callback = delay; + delay = 0; + } + // animateTo(target, callback) + else if (isFunction(time)) { + callback = time; + time = 500; + } + // animateTo(target) + else if (!time) { + time = 500; + } + // Stop all previous animations + this.stopAnimation(); + this._animateToShallow('', this, target, time, delay, easing, callback); + + // Animators may be removed immediately after start + // if there is nothing to animate + var animators = this.animators.slice(); + var count = animators.length; + function done() { + count--; + if (!count) { + callback && callback(); + } + } + + // No animators. This should be checked before animators[i].start(), + // because 'done' may be executed immediately if no need to animate. + if (!count) { + callback && callback(); + } + // Start after all animators created + // Incase any animator is done immediately when all animation properties are not changed + for (var i = 0; i < animators.length; i++) { + animators[i] + .done(done) + .start(easing); + } + }, + + /** + * @private + * @param {string} path='' + * @param {Object} source=this + * @param {Object} target + * @param {number} [time=500] + * @param {number} [delay=0] + * + * @example + * // Animate position + * el._animateToShallow({ + * position: [10, 10] + * }) + * + * // Animate shape, style and position in 100ms, delayed 100ms + * el._animateToShallow({ + * shape: { + * width: 500 + * }, + * style: { + * fill: 'red' + * } + * position: [10, 10] + * }, 100, 100) + */ + _animateToShallow: function (path, source, target, time, delay) { + var objShallow = {}; + var propertyCount = 0; + for (var name in target) { + if (!target.hasOwnProperty(name)) { + continue; + } + + if (source[name] != null) { + if (isObject(target[name]) && !util.isArrayLike(target[name])) { + this._animateToShallow( + path ? path + '.' + name : name, + source[name], + target[name], + time, + delay + ); + } + else { + objShallow[name] = target[name]; + propertyCount++; + } + } + else if (target[name] != null) { + // Attr directly if not has property + // FIXME, if some property not needed for element ? + if (!path) { + this.attr(name, target[name]); + } + else { // Shape or style + var props = {}; + props[path] = {}; + props[path][name] = target[name]; + this.attr(props); + } + } + } + + if (propertyCount > 0) { + this.animate(path, false) + .when(time == null ? 500 : time, objShallow) + .delay(delay || 0); + } + + return this; + } + }; + + module.exports = Animatable; + + +/***/ }, +/* 28 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * @module echarts/animation/Animator + */ + + + var Clip = __webpack_require__(29); + var color = __webpack_require__(31); + var util = __webpack_require__(4); + var isArrayLike = util.isArrayLike; + + var arraySlice = Array.prototype.slice; + + function defaultGetter(target, key) { + return target[key]; + } + + function defaultSetter(target, key, value) { + target[key] = value; + } + + /** + * @param {number} p0 + * @param {number} p1 + * @param {number} percent + * @return {number} + */ + function interpolateNumber(p0, p1, percent) { + return (p1 - p0) * percent + p0; + } + + /** + * @param {string} p0 + * @param {string} p1 + * @param {number} percent + * @return {string} + */ + function interpolateString(p0, p1, percent) { + return percent > 0.5 ? p1 : p0; + } + + /** + * @param {Array} p0 + * @param {Array} p1 + * @param {number} percent + * @param {Array} out + * @param {number} arrDim + */ + function interpolateArray(p0, p1, percent, out, arrDim) { + var len = p0.length; + if (arrDim == 1) { + for (var i = 0; i < len; i++) { + out[i] = interpolateNumber(p0[i], p1[i], percent); + } + } + else { + var len2 = len && p0[0].length; + for (var i = 0; i < len; i++) { + for (var j = 0; j < len2; j++) { + out[i][j] = interpolateNumber( + p0[i][j], p1[i][j], percent + ); + } + } + } + } + + // arr0 is source array, arr1 is target array. + // Do some preprocess to avoid error happened when interpolating from arr0 to arr1 + function fillArr(arr0, arr1, arrDim) { + var arr0Len = arr0.length; + var arr1Len = arr1.length; + if (arr0Len !== arr1Len) { + // FIXME Not work for TypedArray + var isPreviousLarger = arr0Len > arr1Len; + if (isPreviousLarger) { + // Cut the previous + arr0.length = arr1Len; + } + else { + // Fill the previous + for (var i = arr0Len; i < arr1Len; i++) { + arr0.push( + arrDim === 1 ? arr1[i] : arraySlice.call(arr1[i]) + ); + } + } + } + // Handling NaN value + var len2 = arr0[0] && arr0[0].length; + for (var i = 0; i < arr0.length; i++) { + if (arrDim === 1) { + if (isNaN(arr0[i])) { + arr0[i] = arr1[i]; + } + } + else { + for (var j = 0; j < len2; j++) { + if (isNaN(arr0[i][j])) { + arr0[i][j] = arr1[i][j]; + } + } + } + } + } + + /** + * @param {Array} arr0 + * @param {Array} arr1 + * @param {number} arrDim + * @return {boolean} + */ + function isArraySame(arr0, arr1, arrDim) { + if (arr0 === arr1) { + return true; + } + var len = arr0.length; + if (len !== arr1.length) { + return false; + } + if (arrDim === 1) { + for (var i = 0; i < len; i++) { + if (arr0[i] !== arr1[i]) { + return false; + } + } + } + else { + var len2 = arr0[0].length; + for (var i = 0; i < len; i++) { + for (var j = 0; j < len2; j++) { + if (arr0[i][j] !== arr1[i][j]) { + return false; + } + } + } + } + return true; + } + + /** + * Catmull Rom interpolate array + * @param {Array} p0 + * @param {Array} p1 + * @param {Array} p2 + * @param {Array} p3 + * @param {number} t + * @param {number} t2 + * @param {number} t3 + * @param {Array} out + * @param {number} arrDim + */ + function catmullRomInterpolateArray( + p0, p1, p2, p3, t, t2, t3, out, arrDim + ) { + var len = p0.length; + if (arrDim == 1) { + for (var i = 0; i < len; i++) { + out[i] = catmullRomInterpolate( + p0[i], p1[i], p2[i], p3[i], t, t2, t3 + ); + } + } + else { + var len2 = p0[0].length; + for (var i = 0; i < len; i++) { + for (var j = 0; j < len2; j++) { + out[i][j] = catmullRomInterpolate( + p0[i][j], p1[i][j], p2[i][j], p3[i][j], + t, t2, t3 + ); + } + } + } + } + + /** + * Catmull Rom interpolate number + * @param {number} p0 + * @param {number} p1 + * @param {number} p2 + * @param {number} p3 + * @param {number} t + * @param {number} t2 + * @param {number} t3 + * @return {number} + */ + function catmullRomInterpolate(p0, p1, p2, p3, t, t2, t3) { + var v0 = (p2 - p0) * 0.5; + var v1 = (p3 - p1) * 0.5; + return (2 * (p1 - p2) + v0 + v1) * t3 + + (-3 * (p1 - p2) - 2 * v0 - v1) * t2 + + v0 * t + p1; + } + + function cloneValue(value) { + if (isArrayLike(value)) { + var len = value.length; + if (isArrayLike(value[0])) { + var ret = []; + for (var i = 0; i < len; i++) { + ret.push(arraySlice.call(value[i])); + } + return ret; + } + + return arraySlice.call(value); + } + + return value; + } + + function rgba2String(rgba) { + rgba[0] = Math.floor(rgba[0]); + rgba[1] = Math.floor(rgba[1]); + rgba[2] = Math.floor(rgba[2]); + + return 'rgba(' + rgba.join(',') + ')'; + } + + function getArrayDim(keyframes) { + var lastValue = keyframes[keyframes.length - 1].value; + return isArrayLike(lastValue && lastValue[0]) ? 2 : 1; + } + + function createTrackClip (animator, easing, oneTrackDone, keyframes, propName) { + var getter = animator._getter; + var setter = animator._setter; + var useSpline = easing === 'spline'; + + var trackLen = keyframes.length; + if (!trackLen) { + return; + } + // Guess data type + var firstVal = keyframes[0].value; + var isValueArray = isArrayLike(firstVal); + var isValueColor = false; + var isValueString = false; + + // For vertices morphing + var arrDim = isValueArray ? getArrayDim(keyframes) : 0; + + var trackMaxTime; + // Sort keyframe as ascending + keyframes.sort(function(a, b) { + return a.time - b.time; + }); + + trackMaxTime = keyframes[trackLen - 1].time; + // Percents of each keyframe + var kfPercents = []; + // Value of each keyframe + var kfValues = []; + var prevValue = keyframes[0].value; + var isAllValueEqual = true; + for (var i = 0; i < trackLen; i++) { + kfPercents.push(keyframes[i].time / trackMaxTime); + // Assume value is a color when it is a string + var value = keyframes[i].value; + + // Check if value is equal, deep check if value is array + if (!((isValueArray && isArraySame(value, prevValue, arrDim)) + || (!isValueArray && value === prevValue))) { + isAllValueEqual = false; + } + prevValue = value; + + // Try converting a string to a color array + if (typeof value == 'string') { + var colorArray = color.parse(value); + if (colorArray) { + value = colorArray; + isValueColor = true; + } + else { + isValueString = true; + } + } + kfValues.push(value); + } + if (isAllValueEqual) { + return; + } + + var lastValue = kfValues[trackLen - 1]; + // Polyfill array and NaN value + for (var i = 0; i < trackLen - 1; i++) { + if (isValueArray) { + fillArr(kfValues[i], lastValue, arrDim); + } + else { + if (isNaN(kfValues[i]) && !isNaN(lastValue) && !isValueString && !isValueColor) { + kfValues[i] = lastValue; + } + } + } + isValueArray && fillArr(getter(animator._target, propName), lastValue, arrDim); + + // Cache the key of last frame to speed up when + // animation playback is sequency + var lastFrame = 0; + var lastFramePercent = 0; + var start; + var w; + var p0; + var p1; + var p2; + var p3; + + if (isValueColor) { + var rgba = [0, 0, 0, 0]; + } + + var onframe = function (target, percent) { + // Find the range keyframes + // kf1-----kf2---------current--------kf3 + // find kf2 and kf3 and do interpolation + var frame; + // In the easing function like elasticOut, percent may less than 0 + if (percent < 0) { + frame = 0; + } + else if (percent < lastFramePercent) { + // Start from next key + // PENDING start from lastFrame ? + start = Math.min(lastFrame + 1, trackLen - 1); + for (frame = start; frame >= 0; frame--) { + if (kfPercents[frame] <= percent) { + break; + } + } + // PENDING really need to do this ? + frame = Math.min(frame, trackLen - 2); + } + else { + for (frame = lastFrame; frame < trackLen; frame++) { + if (kfPercents[frame] > percent) { + break; + } + } + frame = Math.min(frame - 1, trackLen - 2); + } + lastFrame = frame; + lastFramePercent = percent; + + var range = (kfPercents[frame + 1] - kfPercents[frame]); + if (range === 0) { + return; + } + else { + w = (percent - kfPercents[frame]) / range; + } + if (useSpline) { + p1 = kfValues[frame]; + p0 = kfValues[frame === 0 ? frame : frame - 1]; + p2 = kfValues[frame > trackLen - 2 ? trackLen - 1 : frame + 1]; + p3 = kfValues[frame > trackLen - 3 ? trackLen - 1 : frame + 2]; + if (isValueArray) { + catmullRomInterpolateArray( + p0, p1, p2, p3, w, w * w, w * w * w, + getter(target, propName), + arrDim + ); + } + else { + var value; + if (isValueColor) { + value = catmullRomInterpolateArray( + p0, p1, p2, p3, w, w * w, w * w * w, + rgba, 1 + ); + value = rgba2String(rgba); + } + else if (isValueString) { + // String is step(0.5) + return interpolateString(p1, p2, w); + } + else { + value = catmullRomInterpolate( + p0, p1, p2, p3, w, w * w, w * w * w + ); + } + setter( + target, + propName, + value + ); + } + } + else { + if (isValueArray) { + interpolateArray( + kfValues[frame], kfValues[frame + 1], w, + getter(target, propName), + arrDim + ); + } + else { + var value; + if (isValueColor) { + interpolateArray( + kfValues[frame], kfValues[frame + 1], w, + rgba, 1 + ); + value = rgba2String(rgba); + } + else if (isValueString) { + // String is step(0.5) + return interpolateString(kfValues[frame], kfValues[frame + 1], w); + } + else { + value = interpolateNumber(kfValues[frame], kfValues[frame + 1], w); + } + setter( + target, + propName, + value + ); + } + } + }; + + var clip = new Clip({ + target: animator._target, + life: trackMaxTime, + loop: animator._loop, + delay: animator._delay, + onframe: onframe, + ondestroy: oneTrackDone + }); + + if (easing && easing !== 'spline') { + clip.easing = easing; + } + + return clip; + } + + /** + * @alias module:zrender/animation/Animator + * @constructor + * @param {Object} target + * @param {boolean} loop + * @param {Function} getter + * @param {Function} setter + */ + var Animator = function(target, loop, getter, setter) { + this._tracks = {}; + this._target = target; + + this._loop = loop || false; + + this._getter = getter || defaultGetter; + this._setter = setter || defaultSetter; + + this._clipCount = 0; + + this._delay = 0; + + this._doneList = []; + + this._onframeList = []; + + this._clipList = []; + }; + + Animator.prototype = { + /** + * 设置动画关键帧 + * @param {number} time 关键帧时间,单位是ms + * @param {Object} props 关键帧的属性值,key-value表示 + * @return {module:zrender/animation/Animator} + */ + when: function(time /* ms */, props) { + var tracks = this._tracks; + for (var propName in props) { + if (!props.hasOwnProperty(propName)) { + continue; + } + + if (!tracks[propName]) { + tracks[propName] = []; + // Invalid value + var value = this._getter(this._target, propName); + if (value == null) { + // zrLog('Invalid property ' + propName); + continue; + } + // If time is 0 + // Then props is given initialize value + // Else + // Initialize value from current prop value + if (time !== 0) { + tracks[propName].push({ + time: 0, + value: cloneValue(value) + }); + } + } + tracks[propName].push({ + time: time, + value: props[propName] + }); + } + return this; + }, + /** + * 添加动画每一帧的回调函数 + * @param {Function} callback + * @return {module:zrender/animation/Animator} + */ + during: function (callback) { + this._onframeList.push(callback); + return this; + }, + + pause: function () { + for (var i = 0; i < this._clipList.length; i++) { + this._clipList[i].pause(); + } + this._paused = true; + }, + + resume: function () { + for (var i = 0; i < this._clipList.length; i++) { + this._clipList[i].resume(); + } + this._paused = false; + }, + + isPaused: function () { + return !!this._paused; + }, + + _doneCallback: function () { + // Clear all tracks + this._tracks = {}; + // Clear all clips + this._clipList.length = 0; + + var doneList = this._doneList; + var len = doneList.length; + for (var i = 0; i < len; i++) { + doneList[i].call(this); + } + }, + /** + * 开始执行动画 + * @param {string|Function} easing + * 动画缓动函数,详见{@link module:zrender/animation/easing} + * @return {module:zrender/animation/Animator} + */ + start: function (easing) { + + var self = this; + var clipCount = 0; + + var oneTrackDone = function() { + clipCount--; + if (!clipCount) { + self._doneCallback(); + } + }; + + var lastClip; + for (var propName in this._tracks) { + if (!this._tracks.hasOwnProperty(propName)) { + continue; + } + var clip = createTrackClip( + this, easing, oneTrackDone, + this._tracks[propName], propName + ); + if (clip) { + this._clipList.push(clip); + clipCount++; + + // If start after added to animation + if (this.animation) { + this.animation.addClip(clip); + } + + lastClip = clip; + } + } + + // Add during callback on the last clip + if (lastClip) { + var oldOnFrame = lastClip.onframe; + lastClip.onframe = function (target, percent) { + oldOnFrame(target, percent); + + for (var i = 0; i < self._onframeList.length; i++) { + self._onframeList[i](target, percent); + } + }; + } + + if (!clipCount) { + this._doneCallback(); + } + return this; + }, + /** + * 停止动画 + * @param {boolean} forwardToLast If move to last frame before stop + */ + stop: function (forwardToLast) { + var clipList = this._clipList; + var animation = this.animation; + for (var i = 0; i < clipList.length; i++) { + var clip = clipList[i]; + if (forwardToLast) { + // Move to last frame before stop + clip.onframe(this._target, 1); + } + animation && animation.removeClip(clip); + } + clipList.length = 0; + }, + /** + * 设置动画延迟开始的时间 + * @param {number} time 单位ms + * @return {module:zrender/animation/Animator} + */ + delay: function (time) { + this._delay = time; + return this; + }, + /** + * 添加动画结束的回调 + * @param {Function} cb + * @return {module:zrender/animation/Animator} + */ + done: function(cb) { + if (cb) { + this._doneList.push(cb); + } + return this; + }, + + /** + * @return {Array.} + */ + getClips: function () { + return this._clipList; + } + }; + + module.exports = Animator; + + +/***/ }, +/* 29 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * 动画主控制器 + * @config target 动画对象,可以是数组,如果是数组的话会批量分发onframe等事件 + * @config life(1000) 动画时长 + * @config delay(0) 动画延迟时间 + * @config loop(true) + * @config gap(0) 循环的间隔时间 + * @config onframe + * @config easing(optional) + * @config ondestroy(optional) + * @config onrestart(optional) + * + * TODO pause + */ + + + var easingFuncs = __webpack_require__(30); + + function Clip(options) { + + this._target = options.target; + + // 生命周期 + this._life = options.life || 1000; + // 延时 + this._delay = options.delay || 0; + // 开始时间 + // this._startTime = new Date().getTime() + this._delay;// 单位毫秒 + this._initialized = false; + + // 是否循环 + this.loop = options.loop == null ? false : options.loop; + + this.gap = options.gap || 0; + + this.easing = options.easing || 'Linear'; + + this.onframe = options.onframe; + this.ondestroy = options.ondestroy; + this.onrestart = options.onrestart; + + this._pausedTime = 0; + this._paused = false; + } + + Clip.prototype = { + + constructor: Clip, + + step: function (globalTime, deltaTime) { + // Set startTime on first step, or _startTime may has milleseconds different between clips + // PENDING + if (!this._initialized) { + this._startTime = globalTime + this._delay; + this._initialized = true; + } + + if (this._paused) { + this._pausedTime += deltaTime; + return; + } + + var percent = (globalTime - this._startTime - this._pausedTime) / this._life; + + // 还没开始 + if (percent < 0) { + return; + } + + percent = Math.min(percent, 1); + + var easing = this.easing; + var easingFunc = typeof easing == 'string' ? easingFuncs[easing] : easing; + var schedule = typeof easingFunc === 'function' + ? easingFunc(percent) + : percent; + + this.fire('frame', schedule); + + // 结束 + if (percent == 1) { + if (this.loop) { + this.restart (globalTime); + // 重新开始周期 + // 抛出而不是直接调用事件直到 stage.update 后再统一调用这些事件 + return 'restart'; + } + + // 动画完成将这个控制器标识为待删除 + // 在Animation.update中进行批量删除 + this._needsRemove = true; + return 'destroy'; + } + + return null; + }, + + restart: function (globalTime) { + var remainder = (globalTime - this._startTime - this._pausedTime) % this._life; + this._startTime = globalTime - remainder + this.gap; + this._pausedTime = 0; + + this._needsRemove = false; + }, + + fire: function (eventType, arg) { + eventType = 'on' + eventType; + if (this[eventType]) { + this[eventType](this._target, arg); + } + }, + + pause: function () { + this._paused = true; + }, + + resume: function () { + this._paused = false; + } + }; + + module.exports = Clip; + + + +/***/ }, +/* 30 */ +/***/ function(module, exports) { + + /** + * 缓动代码来自 https://github.com/sole/tween.js/blob/master/src/Tween.js + * @see http://sole.github.io/tween.js/examples/03_graphs.html + * @exports zrender/animation/easing + */ + + var easing = { + /** + * @param {number} k + * @return {number} + */ + linear: function (k) { + return k; + }, + + /** + * @param {number} k + * @return {number} + */ + quadraticIn: function (k) { + return k * k; + }, + /** + * @param {number} k + * @return {number} + */ + quadraticOut: function (k) { + return k * (2 - k); + }, + /** + * @param {number} k + * @return {number} + */ + quadraticInOut: function (k) { + if ((k *= 2) < 1) { + return 0.5 * k * k; + } + return -0.5 * (--k * (k - 2) - 1); + }, + + // 三次方的缓动(t^3) + /** + * @param {number} k + * @return {number} + */ + cubicIn: function (k) { + return k * k * k; + }, + /** + * @param {number} k + * @return {number} + */ + cubicOut: function (k) { + return --k * k * k + 1; + }, + /** + * @param {number} k + * @return {number} + */ + cubicInOut: function (k) { + if ((k *= 2) < 1) { + return 0.5 * k * k * k; + } + return 0.5 * ((k -= 2) * k * k + 2); + }, + + // 四次方的缓动(t^4) + /** + * @param {number} k + * @return {number} + */ + quarticIn: function (k) { + return k * k * k * k; + }, + /** + * @param {number} k + * @return {number} + */ + quarticOut: function (k) { + return 1 - (--k * k * k * k); + }, + /** + * @param {number} k + * @return {number} + */ + quarticInOut: function (k) { + if ((k *= 2) < 1) { + return 0.5 * k * k * k * k; + } + return -0.5 * ((k -= 2) * k * k * k - 2); + }, + + // 五次方的缓动(t^5) + /** + * @param {number} k + * @return {number} + */ + quinticIn: function (k) { + return k * k * k * k * k; + }, + /** + * @param {number} k + * @return {number} + */ + quinticOut: function (k) { + return --k * k * k * k * k + 1; + }, + /** + * @param {number} k + * @return {number} + */ + quinticInOut: function (k) { + if ((k *= 2) < 1) { + return 0.5 * k * k * k * k * k; + } + return 0.5 * ((k -= 2) * k * k * k * k + 2); + }, + + // 正弦曲线的缓动(sin(t)) + /** + * @param {number} k + * @return {number} + */ + sinusoidalIn: function (k) { + return 1 - Math.cos(k * Math.PI / 2); + }, + /** + * @param {number} k + * @return {number} + */ + sinusoidalOut: function (k) { + return Math.sin(k * Math.PI / 2); + }, + /** + * @param {number} k + * @return {number} + */ + sinusoidalInOut: function (k) { + return 0.5 * (1 - Math.cos(Math.PI * k)); + }, + + // 指数曲线的缓动(2^t) + /** + * @param {number} k + * @return {number} + */ + exponentialIn: function (k) { + return k === 0 ? 0 : Math.pow(1024, k - 1); + }, + /** + * @param {number} k + * @return {number} + */ + exponentialOut: function (k) { + return k === 1 ? 1 : 1 - Math.pow(2, -10 * k); + }, + /** + * @param {number} k + * @return {number} + */ + exponentialInOut: function (k) { + if (k === 0) { + return 0; + } + if (k === 1) { + return 1; + } + if ((k *= 2) < 1) { + return 0.5 * Math.pow(1024, k - 1); + } + return 0.5 * (-Math.pow(2, -10 * (k - 1)) + 2); + }, + + // 圆形曲线的缓动(sqrt(1-t^2)) + /** + * @param {number} k + * @return {number} + */ + circularIn: function (k) { + return 1 - Math.sqrt(1 - k * k); + }, + /** + * @param {number} k + * @return {number} + */ + circularOut: function (k) { + return Math.sqrt(1 - (--k * k)); + }, + /** + * @param {number} k + * @return {number} + */ + circularInOut: function (k) { + if ((k *= 2) < 1) { + return -0.5 * (Math.sqrt(1 - k * k) - 1); + } + return 0.5 * (Math.sqrt(1 - (k -= 2) * k) + 1); + }, + + // 创建类似于弹簧在停止前来回振荡的动画 + /** + * @param {number} k + * @return {number} + */ + elasticIn: function (k) { + var s; + var a = 0.1; + var p = 0.4; + if (k === 0) { + return 0; + } + if (k === 1) { + return 1; + } + if (!a || a < 1) { + a = 1; s = p / 4; + } + else { + s = p * Math.asin(1 / a) / (2 * Math.PI); + } + return -(a * Math.pow(2, 10 * (k -= 1)) * + Math.sin((k - s) * (2 * Math.PI) / p)); + }, + /** + * @param {number} k + * @return {number} + */ + elasticOut: function (k) { + var s; + var a = 0.1; + var p = 0.4; + if (k === 0) { + return 0; + } + if (k === 1) { + return 1; + } + if (!a || a < 1) { + a = 1; s = p / 4; + } + else { + s = p * Math.asin(1 / a) / (2 * Math.PI); + } + return (a * Math.pow(2, -10 * k) * + Math.sin((k - s) * (2 * Math.PI) / p) + 1); + }, + /** + * @param {number} k + * @return {number} + */ + elasticInOut: function (k) { + var s; + var a = 0.1; + var p = 0.4; + if (k === 0) { + return 0; + } + if (k === 1) { + return 1; + } + if (!a || a < 1) { + a = 1; s = p / 4; + } + else { + s = p * Math.asin(1 / a) / (2 * Math.PI); + } + if ((k *= 2) < 1) { + return -0.5 * (a * Math.pow(2, 10 * (k -= 1)) + * Math.sin((k - s) * (2 * Math.PI) / p)); + } + return a * Math.pow(2, -10 * (k -= 1)) + * Math.sin((k - s) * (2 * Math.PI) / p) * 0.5 + 1; + + }, + + // 在某一动画开始沿指示的路径进行动画处理前稍稍收回该动画的移动 + /** + * @param {number} k + * @return {number} + */ + backIn: function (k) { + var s = 1.70158; + return k * k * ((s + 1) * k - s); + }, + /** + * @param {number} k + * @return {number} + */ + backOut: function (k) { + var s = 1.70158; + return --k * k * ((s + 1) * k + s) + 1; + }, + /** + * @param {number} k + * @return {number} + */ + backInOut: function (k) { + var s = 1.70158 * 1.525; + if ((k *= 2) < 1) { + return 0.5 * (k * k * ((s + 1) * k - s)); + } + return 0.5 * ((k -= 2) * k * ((s + 1) * k + s) + 2); + }, + + // 创建弹跳效果 + /** + * @param {number} k + * @return {number} + */ + bounceIn: function (k) { + return 1 - easing.bounceOut(1 - k); + }, + /** + * @param {number} k + * @return {number} + */ + bounceOut: function (k) { + if (k < (1 / 2.75)) { + return 7.5625 * k * k; + } + else if (k < (2 / 2.75)) { + return 7.5625 * (k -= (1.5 / 2.75)) * k + 0.75; + } + else if (k < (2.5 / 2.75)) { + return 7.5625 * (k -= (2.25 / 2.75)) * k + 0.9375; + } + else { + return 7.5625 * (k -= (2.625 / 2.75)) * k + 0.984375; + } + }, + /** + * @param {number} k + * @return {number} + */ + bounceInOut: function (k) { + if (k < 0.5) { + return easing.bounceIn(k * 2) * 0.5; + } + return easing.bounceOut(k * 2 - 1) * 0.5 + 0.5; + } + }; + + module.exports = easing; + + + + +/***/ }, +/* 31 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * @module zrender/tool/color + */ + + + var LRU = __webpack_require__(32); + + var kCSSColorTable = { + 'transparent': [0,0,0,0], 'aliceblue': [240,248,255,1], + 'antiquewhite': [250,235,215,1], 'aqua': [0,255,255,1], + 'aquamarine': [127,255,212,1], 'azure': [240,255,255,1], + 'beige': [245,245,220,1], 'bisque': [255,228,196,1], + 'black': [0,0,0,1], 'blanchedalmond': [255,235,205,1], + 'blue': [0,0,255,1], 'blueviolet': [138,43,226,1], + 'brown': [165,42,42,1], 'burlywood': [222,184,135,1], + 'cadetblue': [95,158,160,1], 'chartreuse': [127,255,0,1], + 'chocolate': [210,105,30,1], 'coral': [255,127,80,1], + 'cornflowerblue': [100,149,237,1], 'cornsilk': [255,248,220,1], + 'crimson': [220,20,60,1], 'cyan': [0,255,255,1], + 'darkblue': [0,0,139,1], 'darkcyan': [0,139,139,1], + 'darkgoldenrod': [184,134,11,1], 'darkgray': [169,169,169,1], + 'darkgreen': [0,100,0,1], 'darkgrey': [169,169,169,1], + 'darkkhaki': [189,183,107,1], 'darkmagenta': [139,0,139,1], + 'darkolivegreen': [85,107,47,1], 'darkorange': [255,140,0,1], + 'darkorchid': [153,50,204,1], 'darkred': [139,0,0,1], + 'darksalmon': [233,150,122,1], 'darkseagreen': [143,188,143,1], + 'darkslateblue': [72,61,139,1], 'darkslategray': [47,79,79,1], + 'darkslategrey': [47,79,79,1], 'darkturquoise': [0,206,209,1], + 'darkviolet': [148,0,211,1], 'deeppink': [255,20,147,1], + 'deepskyblue': [0,191,255,1], 'dimgray': [105,105,105,1], + 'dimgrey': [105,105,105,1], 'dodgerblue': [30,144,255,1], + 'firebrick': [178,34,34,1], 'floralwhite': [255,250,240,1], + 'forestgreen': [34,139,34,1], 'fuchsia': [255,0,255,1], + 'gainsboro': [220,220,220,1], 'ghostwhite': [248,248,255,1], + 'gold': [255,215,0,1], 'goldenrod': [218,165,32,1], + 'gray': [128,128,128,1], 'green': [0,128,0,1], + 'greenyellow': [173,255,47,1], 'grey': [128,128,128,1], + 'honeydew': [240,255,240,1], 'hotpink': [255,105,180,1], + 'indianred': [205,92,92,1], 'indigo': [75,0,130,1], + 'ivory': [255,255,240,1], 'khaki': [240,230,140,1], + 'lavender': [230,230,250,1], 'lavenderblush': [255,240,245,1], + 'lawngreen': [124,252,0,1], 'lemonchiffon': [255,250,205,1], + 'lightblue': [173,216,230,1], 'lightcoral': [240,128,128,1], + 'lightcyan': [224,255,255,1], 'lightgoldenrodyellow': [250,250,210,1], + 'lightgray': [211,211,211,1], 'lightgreen': [144,238,144,1], + 'lightgrey': [211,211,211,1], 'lightpink': [255,182,193,1], + 'lightsalmon': [255,160,122,1], 'lightseagreen': [32,178,170,1], + 'lightskyblue': [135,206,250,1], 'lightslategray': [119,136,153,1], + 'lightslategrey': [119,136,153,1], 'lightsteelblue': [176,196,222,1], + 'lightyellow': [255,255,224,1], 'lime': [0,255,0,1], + 'limegreen': [50,205,50,1], 'linen': [250,240,230,1], + 'magenta': [255,0,255,1], 'maroon': [128,0,0,1], + 'mediumaquamarine': [102,205,170,1], 'mediumblue': [0,0,205,1], + 'mediumorchid': [186,85,211,1], 'mediumpurple': [147,112,219,1], + 'mediumseagreen': [60,179,113,1], 'mediumslateblue': [123,104,238,1], + 'mediumspringgreen': [0,250,154,1], 'mediumturquoise': [72,209,204,1], + 'mediumvioletred': [199,21,133,1], 'midnightblue': [25,25,112,1], + 'mintcream': [245,255,250,1], 'mistyrose': [255,228,225,1], + 'moccasin': [255,228,181,1], 'navajowhite': [255,222,173,1], + 'navy': [0,0,128,1], 'oldlace': [253,245,230,1], + 'olive': [128,128,0,1], 'olivedrab': [107,142,35,1], + 'orange': [255,165,0,1], 'orangered': [255,69,0,1], + 'orchid': [218,112,214,1], 'palegoldenrod': [238,232,170,1], + 'palegreen': [152,251,152,1], 'paleturquoise': [175,238,238,1], + 'palevioletred': [219,112,147,1], 'papayawhip': [255,239,213,1], + 'peachpuff': [255,218,185,1], 'peru': [205,133,63,1], + 'pink': [255,192,203,1], 'plum': [221,160,221,1], + 'powderblue': [176,224,230,1], 'purple': [128,0,128,1], + 'red': [255,0,0,1], 'rosybrown': [188,143,143,1], + 'royalblue': [65,105,225,1], 'saddlebrown': [139,69,19,1], + 'salmon': [250,128,114,1], 'sandybrown': [244,164,96,1], + 'seagreen': [46,139,87,1], 'seashell': [255,245,238,1], + 'sienna': [160,82,45,1], 'silver': [192,192,192,1], + 'skyblue': [135,206,235,1], 'slateblue': [106,90,205,1], + 'slategray': [112,128,144,1], 'slategrey': [112,128,144,1], + 'snow': [255,250,250,1], 'springgreen': [0,255,127,1], + 'steelblue': [70,130,180,1], 'tan': [210,180,140,1], + 'teal': [0,128,128,1], 'thistle': [216,191,216,1], + 'tomato': [255,99,71,1], 'turquoise': [64,224,208,1], + 'violet': [238,130,238,1], 'wheat': [245,222,179,1], + 'white': [255,255,255,1], 'whitesmoke': [245,245,245,1], + 'yellow': [255,255,0,1], 'yellowgreen': [154,205,50,1] + }; + + function clampCssByte(i) { // Clamp to integer 0 .. 255. + i = Math.round(i); // Seems to be what Chrome does (vs truncation). + return i < 0 ? 0 : i > 255 ? 255 : i; + } + + function clampCssAngle(i) { // Clamp to integer 0 .. 360. + i = Math.round(i); // Seems to be what Chrome does (vs truncation). + return i < 0 ? 0 : i > 360 ? 360 : i; + } + + function clampCssFloat(f) { // Clamp to float 0.0 .. 1.0. + return f < 0 ? 0 : f > 1 ? 1 : f; + } + + function parseCssInt(str) { // int or percentage. + if (str.length && str.charAt(str.length - 1) === '%') { + return clampCssByte(parseFloat(str) / 100 * 255); + } + return clampCssByte(parseInt(str, 10)); + } + + function parseCssFloat(str) { // float or percentage. + if (str.length && str.charAt(str.length - 1) === '%') { + return clampCssFloat(parseFloat(str) / 100); + } + return clampCssFloat(parseFloat(str)); + } + + function cssHueToRgb(m1, m2, h) { + if (h < 0) { + h += 1; + } + else if (h > 1) { + h -= 1; + } + + if (h * 6 < 1) { + return m1 + (m2 - m1) * h * 6; + } + if (h * 2 < 1) { + return m2; + } + if (h * 3 < 2) { + return m1 + (m2 - m1) * (2/3 - h) * 6; + } + return m1; + } + + function lerp(a, b, p) { + return a + (b - a) * p; + } + + function setRgba(out, r, g, b, a) { + out[0] = r; out[1] = g; out[2] = b; out[3] = a; + return out; + } + function copyRgba(out, a) { + out[0] = a[0]; out[1] = a[1]; out[2] = a[2]; out[3] = a[3]; + return out; + } + var colorCache = new LRU(20); + var lastRemovedArr = null; + function putToCache(colorStr, rgbaArr) { + // Reuse removed array + if (lastRemovedArr) { + copyRgba(lastRemovedArr, rgbaArr); + } + lastRemovedArr = colorCache.put(colorStr, lastRemovedArr || (rgbaArr.slice())); + } + /** + * @param {string} colorStr + * @param {Array.} out + * @return {Array.} + * @memberOf module:zrender/util/color + */ + function parse(colorStr, rgbaArr) { + if (!colorStr) { + return; + } + rgbaArr = rgbaArr || []; + + var cached = colorCache.get(colorStr); + if (cached) { + return copyRgba(rgbaArr, cached); + } + + // colorStr may be not string + colorStr = colorStr + ''; + // Remove all whitespace, not compliant, but should just be more accepting. + var str = colorStr.replace(/ /g, '').toLowerCase(); + + // Color keywords (and transparent) lookup. + if (str in kCSSColorTable) { + copyRgba(rgbaArr, kCSSColorTable[str]); + putToCache(colorStr, rgbaArr); + return rgbaArr; + } + + // #abc and #abc123 syntax. + if (str.charAt(0) === '#') { + if (str.length === 4) { + var iv = parseInt(str.substr(1), 16); // TODO(deanm): Stricter parsing. + if (!(iv >= 0 && iv <= 0xfff)) { + setRgba(rgbaArr, 0, 0, 0, 1); + return; // Covers NaN. + } + setRgba(rgbaArr, + ((iv & 0xf00) >> 4) | ((iv & 0xf00) >> 8), + (iv & 0xf0) | ((iv & 0xf0) >> 4), + (iv & 0xf) | ((iv & 0xf) << 4), + 1 + ); + putToCache(colorStr, rgbaArr); + return rgbaArr; + } + else if (str.length === 7) { + var iv = parseInt(str.substr(1), 16); // TODO(deanm): Stricter parsing. + if (!(iv >= 0 && iv <= 0xffffff)) { + setRgba(rgbaArr, 0, 0, 0, 1); + return; // Covers NaN. + } + setRgba(rgbaArr, + (iv & 0xff0000) >> 16, + (iv & 0xff00) >> 8, + iv & 0xff, + 1 + ); + putToCache(colorStr, rgbaArr); + return rgbaArr; + } + + return; + } + var op = str.indexOf('('), ep = str.indexOf(')'); + if (op !== -1 && ep + 1 === str.length) { + var fname = str.substr(0, op); + var params = str.substr(op + 1, ep - (op + 1)).split(','); + var alpha = 1; // To allow case fallthrough. + switch (fname) { + case 'rgba': + if (params.length !== 4) { + setRgba(rgbaArr, 0, 0, 0, 1); + return; + } + alpha = parseCssFloat(params.pop()); // jshint ignore:line + // Fall through. + case 'rgb': + if (params.length !== 3) { + setRgba(rgbaArr, 0, 0, 0, 1); + return; + } + setRgba(rgbaArr, + parseCssInt(params[0]), + parseCssInt(params[1]), + parseCssInt(params[2]), + alpha + ); + putToCache(colorStr, rgbaArr); + return rgbaArr; + case 'hsla': + if (params.length !== 4) { + setRgba(rgbaArr, 0, 0, 0, 1); + return; + } + params[3] = parseCssFloat(params[3]); + hsla2rgba(params, rgbaArr); + putToCache(colorStr, rgbaArr); + return rgbaArr; + case 'hsl': + if (params.length !== 3) { + setRgba(rgbaArr, 0, 0, 0, 1); + return; + } + hsla2rgba(params, rgbaArr); + putToCache(colorStr, rgbaArr); + return rgbaArr; + default: + return; + } + } + + setRgba(rgbaArr, 0, 0, 0, 1); + return; + } + + /** + * @param {Array.} hsla + * @param {Array.} rgba + * @return {Array.} rgba + */ + function hsla2rgba(hsla, rgba) { + var h = (((parseFloat(hsla[0]) % 360) + 360) % 360) / 360; // 0 .. 1 + // NOTE(deanm): According to the CSS spec s/l should only be + // percentages, but we don't bother and let float or percentage. + var s = parseCssFloat(hsla[1]); + var l = parseCssFloat(hsla[2]); + var m2 = l <= 0.5 ? l * (s + 1) : l + s - l * s; + var m1 = l * 2 - m2; + + rgba = rgba || []; + 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 + ); + + if (hsla.length === 4) { + rgba[3] = hsla[3]; + } + + return rgba; + } + + /** + * @param {Array.} rgba + * @return {Array.} hsla + */ + function rgba2hsla(rgba) { + if (!rgba) { + return; + } + + // RGB from 0 to 255 + var R = rgba[0] / 255; + var G = rgba[1] / 255; + var B = rgba[2] / 255; + + var vMin = Math.min(R, G, B); // Min. value of RGB + var vMax = Math.max(R, G, B); // Max. value of RGB + var delta = vMax - vMin; // Delta RGB value + + var L = (vMax + vMin) / 2; + var H; + var S; + // HSL results from 0 to 1 + if (delta === 0) { + H = 0; + S = 0; + } + else { + if (L < 0.5) { + S = delta / (vMax + vMin); + } + else { + S = delta / (2 - vMax - vMin); + } + + var deltaR = (((vMax - R) / 6) + (delta / 2)) / delta; + var deltaG = (((vMax - G) / 6) + (delta / 2)) / delta; + var deltaB = (((vMax - B) / 6) + (delta / 2)) / delta; + + if (R === vMax) { + H = deltaB - deltaG; + } + else if (G === vMax) { + H = (1 / 3) + deltaR - deltaB; + } + else if (B === vMax) { + H = (2 / 3) + deltaG - deltaR; + } + + if (H < 0) { + H += 1; + } + + if (H > 1) { + H -= 1; + } + } + + var hsla = [H * 360, S, L]; + + if (rgba[3] != null) { + hsla.push(rgba[3]); + } + + return hsla; + } + + /** + * @param {string} color + * @param {number} level + * @return {string} + * @memberOf module:zrender/util/color + */ + function lift(color, level) { + var colorArr = parse(color); + if (colorArr) { + for (var i = 0; i < 3; i++) { + if (level < 0) { + colorArr[i] = colorArr[i] * (1 - level) | 0; + } + else { + colorArr[i] = ((255 - colorArr[i]) * level + colorArr[i]) | 0; + } + } + return stringify(colorArr, colorArr.length === 4 ? 'rgba' : 'rgb'); + } + } + + /** + * @param {string} color + * @return {string} + * @memberOf module:zrender/util/color + */ + function toHex(color, level) { + var colorArr = parse(color); + if (colorArr) { + return ((1 << 24) + (colorArr[0] << 16) + (colorArr[1] << 8) + (+colorArr[2])).toString(16).slice(1); + } + } + + /** + * Map value to color. Faster than mapToColor methods because color is represented by rgba array. + * @param {number} normalizedValue A float between 0 and 1. + * @param {Array.>} colors List of rgba color array + * @param {Array.} [out] Mapped gba color array + * @return {Array.} will be null/undefined if input illegal. + */ + function fastMapToColor(normalizedValue, colors, out) { + if (!(colors && colors.length) + || !(normalizedValue >= 0 && normalizedValue <= 1) + ) { + return; + } + + out = out || []; + + var value = normalizedValue * (colors.length - 1); + var leftIndex = Math.floor(value); + var rightIndex = Math.ceil(value); + var leftColor = colors[leftIndex]; + var rightColor = colors[rightIndex]; + var dv = value - leftIndex; + out[0] = clampCssByte(lerp(leftColor[0], rightColor[0], dv)); + out[1] = clampCssByte(lerp(leftColor[1], rightColor[1], dv)); + out[2] = clampCssByte(lerp(leftColor[2], rightColor[2], dv)); + out[3] = clampCssFloat(lerp(leftColor[3], rightColor[3], dv)); + + return out; + } + /** + * @param {number} normalizedValue A float between 0 and 1. + * @param {Array.} colors Color list. + * @param {boolean=} fullOutput Default false. + * @return {(string|Object)} Result color. If fullOutput, + * return {color: ..., leftIndex: ..., rightIndex: ..., value: ...}, + * @memberOf module:zrender/util/color + */ + function mapToColor(normalizedValue, colors, fullOutput) { + if (!(colors && colors.length) + || !(normalizedValue >= 0 && normalizedValue <= 1) + ) { + return; + } + + var value = normalizedValue * (colors.length - 1); + var leftIndex = Math.floor(value); + var rightIndex = Math.ceil(value); + var leftColor = parse(colors[leftIndex]); + var rightColor = parse(colors[rightIndex]); + var dv = value - leftIndex; + + var color = stringify( + [ + clampCssByte(lerp(leftColor[0], rightColor[0], dv)), + clampCssByte(lerp(leftColor[1], rightColor[1], dv)), + clampCssByte(lerp(leftColor[2], rightColor[2], dv)), + clampCssFloat(lerp(leftColor[3], rightColor[3], dv)) + ], + 'rgba' + ); + + return fullOutput + ? { + color: color, + leftIndex: leftIndex, + rightIndex: rightIndex, + value: value + } + : color; + } + + /** + * @param {string} color + * @param {number=} h 0 ~ 360, ignore when null. + * @param {number=} s 0 ~ 1, ignore when null. + * @param {number=} l 0 ~ 1, ignore when null. + * @return {string} Color string in rgba format. + * @memberOf module:zrender/util/color + */ + function modifyHSL(color, h, s, l) { + color = parse(color); + + if (color) { + color = rgba2hsla(color); + h != null && (color[0] = clampCssAngle(h)); + s != null && (color[1] = parseCssFloat(s)); + l != null && (color[2] = parseCssFloat(l)); + + return stringify(hsla2rgba(color), 'rgba'); + } + } + + /** + * @param {string} color + * @param {number=} alpha 0 ~ 1 + * @return {string} Color string in rgba format. + * @memberOf module:zrender/util/color + */ + function modifyAlpha(color, alpha) { + color = parse(color); + + if (color && alpha != null) { + color[3] = clampCssFloat(alpha); + return stringify(color, 'rgba'); + } + } + + /** + * @param {Array.} arrColor like [12,33,44,0.4] + * @param {string} type 'rgba', 'hsva', ... + * @return {string} Result color. (If input illegal, return undefined). + */ + function stringify(arrColor, type) { + if (!arrColor || !arrColor.length) { + return; + } + var colorStr = arrColor[0] + ',' + arrColor[1] + ',' + arrColor[2]; + if (type === 'rgba' || type === 'hsva' || type === 'hsla') { + colorStr += ',' + arrColor[3]; + } + return type + '(' + colorStr + ')'; + } + + module.exports = { + parse: parse, + lift: lift, + toHex: toHex, + fastMapToColor: fastMapToColor, + mapToColor: mapToColor, + modifyHSL: modifyHSL, + modifyAlpha: modifyAlpha, + stringify: stringify + }; + + + + +/***/ }, +/* 32 */ +/***/ function(module, exports) { + + // Simple LRU cache use doubly linked list + // @module zrender/core/LRU + + + /** + * Simple double linked list. Compared with array, it has O(1) remove operation. + * @constructor + */ + var LinkedList = function () { + + /** + * @type {module:zrender/core/LRU~Entry} + */ + this.head = null; + + /** + * @type {module:zrender/core/LRU~Entry} + */ + this.tail = null; + + this._len = 0; + }; + + var linkedListProto = LinkedList.prototype; + /** + * Insert a new value at the tail + * @param {} val + * @return {module:zrender/core/LRU~Entry} + */ + linkedListProto.insert = function (val) { + var entry = new Entry(val); + this.insertEntry(entry); + return entry; + }; + + /** + * Insert an entry at the tail + * @param {module:zrender/core/LRU~Entry} entry + */ + linkedListProto.insertEntry = function (entry) { + if (!this.head) { + this.head = this.tail = entry; + } + else { + this.tail.next = entry; + entry.prev = this.tail; + entry.next = null; + this.tail = entry; + } + this._len++; + }; + + /** + * Remove entry. + * @param {module:zrender/core/LRU~Entry} entry + */ + linkedListProto.remove = function (entry) { + var prev = entry.prev; + var next = entry.next; + if (prev) { + prev.next = next; + } + else { + // Is head + this.head = next; + } + if (next) { + next.prev = prev; + } + else { + // Is tail + this.tail = prev; + } + entry.next = entry.prev = null; + this._len--; + }; + + /** + * @return {number} + */ + linkedListProto.len = function () { + return this._len; + }; + + /** + * Clear list + */ + linkedListProto.clear = function () { + this.head = this.tail = null; + this._len = 0; + }; + + /** + * @constructor + * @param {} val + */ + var Entry = function (val) { + /** + * @type {} + */ + this.value = val; + + /** + * @type {module:zrender/core/LRU~Entry} + */ + this.next; + + /** + * @type {module:zrender/core/LRU~Entry} + */ + this.prev; + }; + + /** + * LRU Cache + * @constructor + * @alias module:zrender/core/LRU + */ + var LRU = function (maxSize) { + + this._list = new LinkedList(); + + this._map = {}; + + this._maxSize = maxSize || 10; + + this._lastRemovedEntry = null; + }; + + var LRUProto = LRU.prototype; + + /** + * @param {string} key + * @param {} value + * @return {} Removed value + */ + LRUProto.put = function (key, value) { + var list = this._list; + var map = this._map; + var removed = null; + if (map[key] == null) { + var len = list.len(); + // Reuse last removed entry + var entry = this._lastRemovedEntry; + + if (len >= this._maxSize && len > 0) { + // Remove the least recently used + var leastUsedEntry = list.head; + list.remove(leastUsedEntry); + delete map[leastUsedEntry.key]; + + removed = leastUsedEntry.value; + this._lastRemovedEntry = leastUsedEntry; + } + + if (entry) { + entry.value = value; + } + else { + entry = new Entry(value); + } + entry.key = key; + list.insertEntry(entry); + map[key] = entry; + } + + return removed; + }; + + /** + * @param {string} key + * @return {} + */ + LRUProto.get = function (key) { + var entry = this._map[key]; + var list = this._list; + if (entry != null) { + // Put the latest used entry in the tail + if (entry !== list.tail) { + list.remove(entry); + list.insertEntry(entry); + } + + return entry.value; + } + }; + + /** + * Clear the cache + */ + LRUProto.clear = function () { + this._list.clear(); + this._map = {}; + }; + + module.exports = LRU; + + +/***/ }, +/* 33 */ +/***/ function(module, exports, __webpack_require__) { + + + var config = __webpack_require__(34); + + /** + * @exports zrender/tool/log + * @author Kener (@Kener-林峰, kener.linfeng@gmail.com) + */ + module.exports = function() { + if (config.debugMode === 0) { + return; + } + else if (config.debugMode == 1) { + for (var k in arguments) { + throw new Error(arguments[k]); + } + } + else if (config.debugMode > 1) { + for (var k in arguments) { + console.log(arguments[k]); + } + } + }; + + /* for debug + return function(mes) { + document.getElementById('wrong-message').innerHTML = + mes + ' ' + (new Date() - 0) + + '
                  ' + + document.getElementById('wrong-message').innerHTML; + }; + */ + + + +/***/ }, +/* 34 */ +/***/ function(module, exports) { + + + var dpr = 1; + // If in browser environment + if (typeof window !== 'undefined') { + dpr = Math.max(window.devicePixelRatio || 1, 1); + } + /** + * config默认配置项 + * @exports zrender/config + * @author Kener (@Kener-林峰, kener.linfeng@gmail.com) + */ + var config = { + /** + * debug日志选项:catchBrushException为true下有效 + * 0 : 不生成debug数据,发布用 + * 1 : 异常抛出,调试用 + * 2 : 控制台输出,调试用 + */ + debugMode: 0, + + // retina 屏幕优化 + devicePixelRatio: dpr + }; + module.exports = config; + + + + +/***/ }, +/* 35 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * Mixin for drawing text in a element bounding rect + * @module zrender/mixin/RectText + */ + + + + var textContain = __webpack_require__(8); + var BoundingRect = __webpack_require__(9); + + var tmpRect = new BoundingRect(); + + var RectText = function () {}; + + function parsePercent(value, maxValue) { + if (typeof value === 'string') { + if (value.lastIndexOf('%') >= 0) { + return parseFloat(value) / 100 * maxValue; + } + return parseFloat(value); + } + return value; + } + + RectText.prototype = { + + constructor: RectText, + + /** + * Draw text in a rect with specified position. + * @param {CanvasRenderingContext} ctx + * @param {Object} rect Displayable rect + * @return {Object} textRect Alternative precalculated text bounding rect + */ + drawRectText: function (ctx, rect, textRect) { + var style = this.style; + var text = style.text; + // Convert to string + text != null && (text += ''); + if (!text) { + return; + } + + // FIXME + ctx.save(); + + var x; + var y; + var textPosition = style.textPosition; + var textOffset = style.textOffset; + var distance = style.textDistance; + var align = style.textAlign; + var font = style.textFont || style.font; + var baseline = style.textBaseline; + var verticalAlign = style.textVerticalAlign; + rect = style.textPositionRect || rect; + + textRect = textRect || textContain.getBoundingRect(text, font, align, baseline); + + // Transform rect to view space + var transform = this.transform; + if (!style.textTransform) { + if (transform) { + tmpRect.copy(rect); + tmpRect.applyTransform(transform); + rect = tmpRect; + } + } + else { + this.setTransform(ctx); + } + + // Text position represented by coord + if (textPosition instanceof Array) { + // Percent + x = rect.x + parsePercent(textPosition[0], rect.width); + y = rect.y + parsePercent(textPosition[1], rect.height); + align = align || 'left'; + baseline = baseline || 'top'; + + if (verticalAlign) { + switch (verticalAlign) { + case 'middle': + y -= textRect.height / 2 - textRect.lineHeight / 2; + break; + case 'bottom': + y -= textRect.height - textRect.lineHeight / 2; + break; + default: + y += textRect.lineHeight / 2; + } + // Force bseline to be middle + baseline = 'middle'; + } + } + else { + var res = textContain.adjustTextPositionOnRect( + textPosition, rect, textRect, distance + ); + x = res.x; + y = res.y; + // Default align and baseline when has textPosition + align = align || res.textAlign; + baseline = baseline || res.textBaseline; + } + + if (textOffset) { + x += textOffset[0]; + y += textOffset[1]; + } + + // Use canvas default left textAlign. Giving invalid value will cause state not change + ctx.textAlign = align || 'left'; + // Use canvas default alphabetic baseline + ctx.textBaseline = baseline || 'alphabetic'; + + var textFill = style.textFill; + var textStroke = style.textStroke; + textFill && (ctx.fillStyle = textFill); + textStroke && (ctx.strokeStyle = textStroke); + + // TODO Invalid font + ctx.font = font || '12px sans-serif'; + + // Text shadow + // Always set shadowBlur and shadowOffset to avoid leak from displayable + ctx.shadowBlur = style.textShadowBlur; + ctx.shadowColor = style.textShadowColor || 'transparent'; + ctx.shadowOffsetX = style.textShadowOffsetX; + ctx.shadowOffsetY = style.textShadowOffsetY; + + var textLines = text.split('\n'); + + if (style.textRotation) { + transform && ctx.translate(transform[4], transform[5]); + ctx.rotate(style.textRotation); + transform && ctx.translate(-transform[4], -transform[5]); + } + + for (var i = 0; i < textLines.length; i++) { + // Fill after stroke so the outline will not cover the main part. + textStroke && ctx.strokeText(textLines[i], x, y); + textFill && ctx.fillText(textLines[i], x, y); + y += textRect.lineHeight; + } + + ctx.restore(); + } + }; + + module.exports = RectText; + + +/***/ }, +/* 36 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + /** + * Path 代理,可以在`buildPath`中用于替代`ctx`, 会保存每个path操作的命令到pathCommands属性中 + * 可以用于 isInsidePath 判断以及获取boundingRect + * + * @module zrender/core/PathProxy + * @author Yi Shen (http://www.github.com/pissang) + */ + + // TODO getTotalLength, getPointAtLength + + + var curve = __webpack_require__(37); + var vec2 = __webpack_require__(10); + var bbox = __webpack_require__(38); + var BoundingRect = __webpack_require__(9); + var dpr = __webpack_require__(34).devicePixelRatio; + + var CMD = { + M: 1, + L: 2, + C: 3, + Q: 4, + A: 5, + Z: 6, + // Rect + R: 7 + }; + + // var CMD_MEM_SIZE = { + // M: 3, + // L: 3, + // C: 7, + // Q: 5, + // A: 9, + // R: 5, + // Z: 1 + // }; + + var min = []; + var max = []; + var min2 = []; + var max2 = []; + var mathMin = Math.min; + var mathMax = Math.max; + var mathCos = Math.cos; + var mathSin = Math.sin; + var mathSqrt = Math.sqrt; + var mathAbs = Math.abs; + + var hasTypedArray = typeof Float32Array != 'undefined'; + + /** + * @alias module:zrender/core/PathProxy + * @constructor + */ + var PathProxy = function (notSaveData) { + + this._saveData = !(notSaveData || false); + + if (this._saveData) { + /** + * Path data. Stored as flat array + * @type {Array.} + */ + this.data = []; + } + + this._ctx = null; + }; + + /** + * 快速计算Path包围盒(并不是最小包围盒) + * @return {Object} + */ + PathProxy.prototype = { + + constructor: PathProxy, + + _xi: 0, + _yi: 0, + + _x0: 0, + _y0: 0, + // Unit x, Unit y. Provide for avoiding drawing that too short line segment + _ux: 0, + _uy: 0, + + _len: 0, + + _lineDash: null, + + _dashOffset: 0, + + _dashIdx: 0, + + _dashSum: 0, + + /** + * @readOnly + */ + setScale: function (sx, sy) { + this._ux = mathAbs(1 / dpr / sx) || 0; + this._uy = mathAbs(1 / dpr / sy) || 0; + }, + + getContext: function () { + return this._ctx; + }, + + /** + * @param {CanvasRenderingContext2D} ctx + * @return {module:zrender/core/PathProxy} + */ + beginPath: function (ctx) { + + this._ctx = ctx; + + ctx && ctx.beginPath(); + + ctx && (this.dpr = ctx.dpr); + + // Reset + if (this._saveData) { + this._len = 0; + } + + if (this._lineDash) { + this._lineDash = null; + + this._dashOffset = 0; + } + + return this; + }, + + /** + * @param {number} x + * @param {number} y + * @return {module:zrender/core/PathProxy} + */ + moveTo: function (x, y) { + this.addData(CMD.M, x, y); + this._ctx && this._ctx.moveTo(x, y); + + // x0, y0, xi, yi 是记录在 _dashedXXXXTo 方法中使用 + // xi, yi 记录当前点, x0, y0 在 closePath 的时候回到起始点。 + // 有可能在 beginPath 之后直接调用 lineTo,这时候 x0, y0 需要 + // 在 lineTo 方法中记录,这里先不考虑这种情况,dashed line 也只在 IE10- 中不支持 + this._x0 = x; + this._y0 = y; + + this._xi = x; + this._yi = y; + + return this; + }, + + /** + * @param {number} x + * @param {number} y + * @return {module:zrender/core/PathProxy} + */ + lineTo: function (x, y) { + var exceedUnit = mathAbs(x - this._xi) > this._ux + || mathAbs(y - this._yi) > this._uy + // Force draw the first segment + || this._len < 5; + + this.addData(CMD.L, x, y); + + if (this._ctx && exceedUnit) { + this._needsDash() ? this._dashedLineTo(x, y) + : this._ctx.lineTo(x, y); + } + if (exceedUnit) { + this._xi = x; + this._yi = y; + } + + return this; + }, + + /** + * @param {number} x1 + * @param {number} y1 + * @param {number} x2 + * @param {number} y2 + * @param {number} x3 + * @param {number} y3 + * @return {module:zrender/core/PathProxy} + */ + bezierCurveTo: function (x1, y1, x2, y2, x3, y3) { + this.addData(CMD.C, x1, y1, x2, y2, x3, y3); + if (this._ctx) { + this._needsDash() ? this._dashedBezierTo(x1, y1, x2, y2, x3, y3) + : this._ctx.bezierCurveTo(x1, y1, x2, y2, x3, y3); + } + this._xi = x3; + this._yi = y3; + return this; + }, + + /** + * @param {number} x1 + * @param {number} y1 + * @param {number} x2 + * @param {number} y2 + * @return {module:zrender/core/PathProxy} + */ + quadraticCurveTo: function (x1, y1, x2, y2) { + this.addData(CMD.Q, x1, y1, x2, y2); + if (this._ctx) { + this._needsDash() ? this._dashedQuadraticTo(x1, y1, x2, y2) + : this._ctx.quadraticCurveTo(x1, y1, x2, y2); + } + this._xi = x2; + this._yi = y2; + return this; + }, + + /** + * @param {number} cx + * @param {number} cy + * @param {number} r + * @param {number} startAngle + * @param {number} endAngle + * @param {boolean} anticlockwise + * @return {module:zrender/core/PathProxy} + */ + arc: function (cx, cy, r, startAngle, endAngle, anticlockwise) { + this.addData( + CMD.A, cx, cy, r, r, startAngle, endAngle - startAngle, 0, anticlockwise ? 0 : 1 + ); + this._ctx && this._ctx.arc(cx, cy, r, startAngle, endAngle, anticlockwise); + + this._xi = mathCos(endAngle) * r + cx; + this._yi = mathSin(endAngle) * r + cx; + return this; + }, + + // TODO + arcTo: function (x1, y1, x2, y2, radius) { + if (this._ctx) { + this._ctx.arcTo(x1, y1, x2, y2, radius); + } + return this; + }, + + // TODO + rect: function (x, y, w, h) { + this._ctx && this._ctx.rect(x, y, w, h); + this.addData(CMD.R, x, y, w, h); + return this; + }, + + /** + * @return {module:zrender/core/PathProxy} + */ + closePath: function () { + this.addData(CMD.Z); + + var ctx = this._ctx; + var x0 = this._x0; + var y0 = this._y0; + if (ctx) { + this._needsDash() && this._dashedLineTo(x0, y0); + ctx.closePath(); + } + + this._xi = x0; + this._yi = y0; + return this; + }, + + /** + * Context 从外部传入,因为有可能是 rebuildPath 完之后再 fill。 + * stroke 同样 + * @param {CanvasRenderingContext2D} ctx + * @return {module:zrender/core/PathProxy} + */ + fill: function (ctx) { + ctx && ctx.fill(); + this.toStatic(); + }, + + /** + * @param {CanvasRenderingContext2D} ctx + * @return {module:zrender/core/PathProxy} + */ + stroke: function (ctx) { + ctx && ctx.stroke(); + this.toStatic(); + }, + + /** + * 必须在其它绘制命令前调用 + * Must be invoked before all other path drawing methods + * @return {module:zrender/core/PathProxy} + */ + setLineDash: function (lineDash) { + if (lineDash instanceof Array) { + this._lineDash = lineDash; + + this._dashIdx = 0; + + var lineDashSum = 0; + for (var i = 0; i < lineDash.length; i++) { + lineDashSum += lineDash[i]; + } + this._dashSum = lineDashSum; + } + return this; + }, + + /** + * 必须在其它绘制命令前调用 + * Must be invoked before all other path drawing methods + * @return {module:zrender/core/PathProxy} + */ + setLineDashOffset: function (offset) { + this._dashOffset = offset; + return this; + }, + + /** + * + * @return {boolean} + */ + len: function () { + return this._len; + }, + + /** + * 直接设置 Path 数据 + */ + setData: function (data) { + + var len = data.length; + + if (! (this.data && this.data.length == len) && hasTypedArray) { + this.data = new Float32Array(len); + } + + for (var i = 0; i < len; i++) { + this.data[i] = data[i]; + } + + this._len = len; + }, + + /** + * 添加子路径 + * @param {module:zrender/core/PathProxy|Array.} path + */ + appendPath: function (path) { + if (!(path instanceof Array)) { + path = [path]; + } + var len = path.length; + var appendSize = 0; + var offset = this._len; + for (var i = 0; i < len; i++) { + appendSize += path[i].len(); + } + if (hasTypedArray && (this.data instanceof Float32Array)) { + this.data = new Float32Array(offset + appendSize); + } + for (var i = 0; i < len; i++) { + var appendPathData = path[i].data; + for (var k = 0; k < appendPathData.length; k++) { + this.data[offset++] = appendPathData[k]; + } + } + this._len = offset; + }, + + /** + * 填充 Path 数据。 + * 尽量复用而不申明新的数组。大部分图形重绘的指令数据长度都是不变的。 + */ + addData: function (cmd) { + if (!this._saveData) { + return; + } + + var data = this.data; + if (this._len + arguments.length > data.length) { + // 因为之前的数组已经转换成静态的 Float32Array + // 所以不够用时需要扩展一个新的动态数组 + this._expandData(); + data = this.data; + } + for (var i = 0; i < arguments.length; i++) { + data[this._len++] = arguments[i]; + } + + this._prevCmd = cmd; + }, + + _expandData: function () { + // Only if data is Float32Array + if (!(this.data instanceof Array)) { + var newData = []; + for (var i = 0; i < this._len; i++) { + newData[i] = this.data[i]; + } + this.data = newData; + } + }, + + /** + * If needs js implemented dashed line + * @return {boolean} + * @private + */ + _needsDash: function () { + return this._lineDash; + }, + + _dashedLineTo: function (x1, y1) { + var dashSum = this._dashSum; + var offset = this._dashOffset; + var lineDash = this._lineDash; + var ctx = this._ctx; + + var x0 = this._xi; + var y0 = this._yi; + var dx = x1 - x0; + var dy = y1 - y0; + var dist = mathSqrt(dx * dx + dy * dy); + var x = x0; + var y = y0; + var dash; + var nDash = lineDash.length; + var idx; + dx /= dist; + dy /= dist; + + if (offset < 0) { + // Convert to positive offset + offset = dashSum + offset; + } + offset %= dashSum; + x -= offset * dx; + y -= offset * dy; + + while ((dx > 0 && x <= x1) || (dx < 0 && x >= x1) + || (dx == 0 && ((dy > 0 && y <= y1) || (dy < 0 && y >= y1)))) { + idx = this._dashIdx; + dash = lineDash[idx]; + x += dx * dash; + y += dy * dash; + this._dashIdx = (idx + 1) % nDash; + // Skip positive offset + if ((dx > 0 && x < x0) || (dx < 0 && x > x0) || (dy > 0 && y < y0) || (dy < 0 && y > y0)) { + continue; + } + ctx[idx % 2 ? 'moveTo' : 'lineTo']( + dx >= 0 ? mathMin(x, x1) : mathMax(x, x1), + dy >= 0 ? mathMin(y, y1) : mathMax(y, y1) + ); + } + // Offset for next lineTo + dx = x - x1; + dy = y - y1; + this._dashOffset = -mathSqrt(dx * dx + dy * dy); + }, + + // Not accurate dashed line to + _dashedBezierTo: function (x1, y1, x2, y2, x3, y3) { + var dashSum = this._dashSum; + var offset = this._dashOffset; + var lineDash = this._lineDash; + var ctx = this._ctx; + + var x0 = this._xi; + var y0 = this._yi; + var t; + var dx; + var dy; + var cubicAt = curve.cubicAt; + var bezierLen = 0; + var idx = this._dashIdx; + var nDash = lineDash.length; + + var x; + var y; + + var tmpLen = 0; + + if (offset < 0) { + // Convert to positive offset + offset = dashSum + offset; + } + offset %= dashSum; + // Bezier approx length + for (t = 0; t < 1; t += 0.1) { + dx = cubicAt(x0, x1, x2, x3, t + 0.1) + - cubicAt(x0, x1, x2, x3, t); + dy = cubicAt(y0, y1, y2, y3, t + 0.1) + - cubicAt(y0, y1, y2, y3, t); + bezierLen += mathSqrt(dx * dx + dy * dy); + } + + // Find idx after add offset + for (; idx < nDash; idx++) { + tmpLen += lineDash[idx]; + if (tmpLen > offset) { + break; + } + } + t = (tmpLen - offset) / bezierLen; + + while (t <= 1) { + + x = cubicAt(x0, x1, x2, x3, t); + y = cubicAt(y0, y1, y2, y3, t); + + // Use line to approximate dashed bezier + // Bad result if dash is long + idx % 2 ? ctx.moveTo(x, y) + : ctx.lineTo(x, y); + + t += lineDash[idx] / bezierLen; + + idx = (idx + 1) % nDash; + } + + // Finish the last segment and calculate the new offset + (idx % 2 !== 0) && ctx.lineTo(x3, y3); + dx = x3 - x; + dy = y3 - y; + this._dashOffset = -mathSqrt(dx * dx + dy * dy); + }, + + _dashedQuadraticTo: function (x1, y1, x2, y2) { + // Convert quadratic to cubic using degree elevation + var x3 = x2; + var y3 = y2; + x2 = (x2 + 2 * x1) / 3; + y2 = (y2 + 2 * y1) / 3; + x1 = (this._xi + 2 * x1) / 3; + y1 = (this._yi + 2 * y1) / 3; + + this._dashedBezierTo(x1, y1, x2, y2, x3, y3); + }, + + /** + * 转成静态的 Float32Array 减少堆内存占用 + * Convert dynamic array to static Float32Array + */ + toStatic: function () { + var data = this.data; + if (data instanceof Array) { + data.length = this._len; + if (hasTypedArray) { + this.data = new Float32Array(data); + } + } + }, + + /** + * @return {module:zrender/core/BoundingRect} + */ + getBoundingRect: function () { + min[0] = min[1] = min2[0] = min2[1] = Number.MAX_VALUE; + max[0] = max[1] = max2[0] = max2[1] = -Number.MAX_VALUE; + + var data = this.data; + var xi = 0; + var yi = 0; + var x0 = 0; + var y0 = 0; + + for (var i = 0; i < data.length;) { + var cmd = data[i++]; + + if (i == 1) { + // 如果第一个命令是 L, C, Q + // 则 previous point 同绘制命令的第一个 point + // + // 第一个命令为 Arc 的情况下会在后面特殊处理 + xi = data[i]; + yi = data[i + 1]; + + x0 = xi; + y0 = yi; + } + + switch (cmd) { + case CMD.M: + // moveTo 命令重新创建一个新的 subpath, 并且更新新的起点 + // 在 closePath 的时候使用 + x0 = data[i++]; + y0 = data[i++]; + xi = x0; + yi = y0; + min2[0] = x0; + min2[1] = y0; + max2[0] = x0; + max2[1] = y0; + break; + case CMD.L: + bbox.fromLine(xi, yi, data[i], data[i + 1], min2, max2); + xi = data[i++]; + yi = data[i++]; + break; + case CMD.C: + bbox.fromCubic( + xi, yi, data[i++], data[i++], data[i++], data[i++], data[i], data[i + 1], + min2, max2 + ); + xi = data[i++]; + yi = data[i++]; + break; + case CMD.Q: + bbox.fromQuadratic( + xi, yi, data[i++], data[i++], data[i], data[i + 1], + min2, max2 + ); + xi = data[i++]; + yi = data[i++]; + break; + case CMD.A: + // TODO Arc 判断的开销比较大 + var cx = data[i++]; + var cy = data[i++]; + var rx = data[i++]; + var ry = data[i++]; + var startAngle = data[i++]; + var endAngle = data[i++] + startAngle; + // TODO Arc 旋转 + var psi = data[i++]; + var anticlockwise = 1 - data[i++]; + + if (i == 1) { + // 直接使用 arc 命令 + // 第一个命令起点还未定义 + x0 = mathCos(startAngle) * rx + cx; + y0 = mathSin(startAngle) * ry + cy; + } + + bbox.fromArc( + cx, cy, rx, ry, startAngle, endAngle, + anticlockwise, min2, max2 + ); + + xi = mathCos(endAngle) * rx + cx; + yi = mathSin(endAngle) * ry + cy; + break; + case CMD.R: + x0 = xi = data[i++]; + y0 = yi = data[i++]; + var width = data[i++]; + var height = data[i++]; + // Use fromLine + bbox.fromLine(x0, y0, x0 + width, y0 + height, min2, max2); + break; + case CMD.Z: + xi = x0; + yi = y0; + break; + } + + // Union + vec2.min(min, min, min2); + vec2.max(max, max, max2); + } + + // No data + if (i === 0) { + min[0] = min[1] = max[0] = max[1] = 0; + } + + return new BoundingRect( + min[0], min[1], max[0] - min[0], max[1] - min[1] + ); + }, + + /** + * Rebuild path from current data + * Rebuild path will not consider javascript implemented line dash. + * @param {CanvasRenderingContext} ctx + */ + rebuildPath: function (ctx) { + var d = this.data; + var x0, y0; + var xi, yi; + var x, y; + var ux = this._ux; + var uy = this._uy; + var len = this._len; + for (var i = 0; i < len;) { + var cmd = d[i++]; + + if (i == 1) { + // 如果第一个命令是 L, C, Q + // 则 previous point 同绘制命令的第一个 point + // + // 第一个命令为 Arc 的情况下会在后面特殊处理 + xi = d[i]; + yi = d[i + 1]; + + x0 = xi; + y0 = yi; + } + switch (cmd) { + case CMD.M: + x0 = xi = d[i++]; + y0 = yi = d[i++]; + ctx.moveTo(xi, yi); + break; + case CMD.L: + x = d[i++]; + y = d[i++]; + // Not draw too small seg between + if (mathAbs(x - xi) > ux || mathAbs(y - yi) > uy || i === len - 1) { + ctx.lineTo(x, y); + xi = x; + yi = y; + } + break; + case CMD.C: + ctx.bezierCurveTo( + d[i++], d[i++], d[i++], d[i++], d[i++], d[i++] + ); + xi = d[i - 2]; + yi = d[i - 1]; + break; + case CMD.Q: + ctx.quadraticCurveTo(d[i++], d[i++], d[i++], d[i++]); + xi = d[i - 2]; + yi = d[i - 1]; + break; + case CMD.A: + var cx = d[i++]; + var cy = d[i++]; + var rx = d[i++]; + var ry = d[i++]; + var theta = d[i++]; + var dTheta = d[i++]; + var psi = d[i++]; + var fs = d[i++]; + var r = (rx > ry) ? rx : ry; + var scaleX = (rx > ry) ? 1 : rx / ry; + var scaleY = (rx > ry) ? ry / rx : 1; + var isEllipse = Math.abs(rx - ry) > 1e-3; + var endAngle = theta + dTheta; + if (isEllipse) { + ctx.translate(cx, cy); + ctx.rotate(psi); + ctx.scale(scaleX, scaleY); + ctx.arc(0, 0, r, theta, endAngle, 1 - fs); + ctx.scale(1 / scaleX, 1 / scaleY); + ctx.rotate(-psi); + ctx.translate(-cx, -cy); + } + else { + ctx.arc(cx, cy, r, theta, endAngle, 1 - fs); + } + + if (i == 1) { + // 直接使用 arc 命令 + // 第一个命令起点还未定义 + x0 = mathCos(theta) * rx + cx; + y0 = mathSin(theta) * ry + cy; + } + xi = mathCos(endAngle) * rx + cx; + yi = mathSin(endAngle) * ry + cy; + break; + case CMD.R: + x0 = xi = d[i]; + y0 = yi = d[i + 1]; + ctx.rect(d[i++], d[i++], d[i++], d[i++]); + break; + case CMD.Z: + ctx.closePath(); + xi = x0; + yi = y0; + } + } + } + }; + + PathProxy.CMD = CMD; + + module.exports = PathProxy; + + +/***/ }, +/* 37 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + /** + * 曲线辅助模块 + * @module zrender/core/curve + * @author pissang(https://www.github.com/pissang) + */ + + + var vec2 = __webpack_require__(10); + var v2Create = vec2.create; + var v2DistSquare = vec2.distSquare; + var mathPow = Math.pow; + var mathSqrt = Math.sqrt; + + var EPSILON = 1e-8; + var EPSILON_NUMERIC = 1e-4; + + var THREE_SQRT = mathSqrt(3); + var ONE_THIRD = 1 / 3; + + // 临时变量 + var _v0 = v2Create(); + var _v1 = v2Create(); + var _v2 = v2Create(); + // var _v3 = vec2.create(); + + function isAroundZero(val) { + return val > -EPSILON && val < EPSILON; + } + function isNotAroundZero(val) { + return val > EPSILON || val < -EPSILON; + } + /** + * 计算三次贝塞尔值 + * @memberOf module:zrender/core/curve + * @param {number} p0 + * @param {number} p1 + * @param {number} p2 + * @param {number} p3 + * @param {number} t + * @return {number} + */ + function cubicAt(p0, p1, p2, p3, t) { + var onet = 1 - t; + return onet * onet * (onet * p0 + 3 * t * p1) + + t * t * (t * p3 + 3 * onet * p2); + } + + /** + * 计算三次贝塞尔导数值 + * @memberOf module:zrender/core/curve + * @param {number} p0 + * @param {number} p1 + * @param {number} p2 + * @param {number} p3 + * @param {number} t + * @return {number} + */ + function cubicDerivativeAt(p0, p1, p2, p3, t) { + var onet = 1 - t; + return 3 * ( + ((p1 - p0) * onet + 2 * (p2 - p1) * t) * onet + + (p3 - p2) * t * t + ); + } + + /** + * 计算三次贝塞尔方程根,使用盛金公式 + * @memberOf module:zrender/core/curve + * @param {number} p0 + * @param {number} p1 + * @param {number} p2 + * @param {number} p3 + * @param {number} val + * @param {Array.} roots + * @return {number} 有效根数目 + */ + function cubicRootAt(p0, p1, p2, p3, val, roots) { + // Evaluate roots of cubic functions + var a = p3 + 3 * (p1 - p2) - p0; + var b = 3 * (p2 - p1 * 2 + p0); + var c = 3 * (p1 - p0); + var d = p0 - val; + + var A = b * b - 3 * a * c; + var B = b * c - 9 * a * d; + var C = c * c - 3 * b * d; + + var n = 0; + + if (isAroundZero(A) && isAroundZero(B)) { + if (isAroundZero(b)) { + roots[0] = 0; + } + else { + var t1 = -c / b; //t1, t2, t3, b is not zero + if (t1 >= 0 && t1 <= 1) { + roots[n++] = t1; + } + } + } + else { + var disc = B * B - 4 * A * C; + + if (isAroundZero(disc)) { + var K = B / A; + var t1 = -b / a + K; // t1, a is not zero + var t2 = -K / 2; // t2, t3 + if (t1 >= 0 && t1 <= 1) { + roots[n++] = t1; + } + if (t2 >= 0 && t2 <= 1) { + roots[n++] = t2; + } + } + else if (disc > 0) { + var discSqrt = mathSqrt(disc); + var Y1 = A * b + 1.5 * a * (-B + discSqrt); + var Y2 = A * b + 1.5 * a * (-B - discSqrt); + if (Y1 < 0) { + Y1 = -mathPow(-Y1, ONE_THIRD); + } + else { + Y1 = mathPow(Y1, ONE_THIRD); + } + if (Y2 < 0) { + Y2 = -mathPow(-Y2, ONE_THIRD); + } + else { + Y2 = mathPow(Y2, ONE_THIRD); + } + var t1 = (-b - (Y1 + Y2)) / (3 * a); + if (t1 >= 0 && t1 <= 1) { + roots[n++] = t1; + } + } + else { + var T = (2 * A * b - 3 * a * B) / (2 * mathSqrt(A * A * A)); + var theta = Math.acos(T) / 3; + var ASqrt = mathSqrt(A); + var tmp = Math.cos(theta); + + var t1 = (-b - 2 * ASqrt * tmp) / (3 * a); + var t2 = (-b + ASqrt * (tmp + THREE_SQRT * Math.sin(theta))) / (3 * a); + var t3 = (-b + ASqrt * (tmp - THREE_SQRT * Math.sin(theta))) / (3 * a); + if (t1 >= 0 && t1 <= 1) { + roots[n++] = t1; + } + if (t2 >= 0 && t2 <= 1) { + roots[n++] = t2; + } + if (t3 >= 0 && t3 <= 1) { + roots[n++] = t3; + } + } + } + return n; + } + + /** + * 计算三次贝塞尔方程极限值的位置 + * @memberOf module:zrender/core/curve + * @param {number} p0 + * @param {number} p1 + * @param {number} p2 + * @param {number} p3 + * @param {Array.} extrema + * @return {number} 有效数目 + */ + function cubicExtrema(p0, p1, p2, p3, extrema) { + var b = 6 * p2 - 12 * p1 + 6 * p0; + var a = 9 * p1 + 3 * p3 - 3 * p0 - 9 * p2; + var c = 3 * p1 - 3 * p0; + + var n = 0; + if (isAroundZero(a)) { + if (isNotAroundZero(b)) { + var t1 = -c / b; + if (t1 >= 0 && t1 <=1) { + extrema[n++] = t1; + } + } + } + else { + var disc = b * b - 4 * a * c; + if (isAroundZero(disc)) { + extrema[0] = -b / (2 * a); + } + else if (disc > 0) { + var discSqrt = mathSqrt(disc); + var t1 = (-b + discSqrt) / (2 * a); + var t2 = (-b - discSqrt) / (2 * a); + if (t1 >= 0 && t1 <= 1) { + extrema[n++] = t1; + } + if (t2 >= 0 && t2 <= 1) { + extrema[n++] = t2; + } + } + } + return n; + } + + /** + * 细分三次贝塞尔曲线 + * @memberOf module:zrender/core/curve + * @param {number} p0 + * @param {number} p1 + * @param {number} p2 + * @param {number} p3 + * @param {number} t + * @param {Array.} out + */ + function cubicSubdivide(p0, p1, p2, p3, t, out) { + var p01 = (p1 - p0) * t + p0; + var p12 = (p2 - p1) * t + p1; + var p23 = (p3 - p2) * t + p2; + + var p012 = (p12 - p01) * t + p01; + var p123 = (p23 - p12) * t + p12; + + var p0123 = (p123 - p012) * t + p012; + // Seg0 + out[0] = p0; + out[1] = p01; + out[2] = p012; + out[3] = p0123; + // Seg1 + out[4] = p0123; + out[5] = p123; + out[6] = p23; + out[7] = p3; + } + + /** + * 投射点到三次贝塞尔曲线上,返回投射距离。 + * 投射点有可能会有一个或者多个,这里只返回其中距离最短的一个。 + * @param {number} x0 + * @param {number} y0 + * @param {number} x1 + * @param {number} y1 + * @param {number} x2 + * @param {number} y2 + * @param {number} x3 + * @param {number} y3 + * @param {number} x + * @param {number} y + * @param {Array.} [out] 投射点 + * @return {number} + */ + function cubicProjectPoint( + x0, y0, x1, y1, x2, y2, x3, y3, + x, y, out + ) { + // http://pomax.github.io/bezierinfo/#projections + var t; + var interval = 0.005; + var d = Infinity; + var prev; + var next; + var d1; + var d2; + + _v0[0] = x; + _v0[1] = y; + + // 先粗略估计一下可能的最小距离的 t 值 + // PENDING + for (var _t = 0; _t < 1; _t += 0.05) { + _v1[0] = cubicAt(x0, x1, x2, x3, _t); + _v1[1] = cubicAt(y0, y1, y2, y3, _t); + d1 = v2DistSquare(_v0, _v1); + if (d1 < d) { + t = _t; + d = d1; + } + } + d = Infinity; + + // At most 32 iteration + for (var i = 0; i < 32; i++) { + if (interval < EPSILON_NUMERIC) { + break; + } + prev = t - interval; + next = t + interval; + // t - interval + _v1[0] = cubicAt(x0, x1, x2, x3, prev); + _v1[1] = cubicAt(y0, y1, y2, y3, prev); + + d1 = v2DistSquare(_v1, _v0); + + if (prev >= 0 && d1 < d) { + t = prev; + d = d1; + } + else { + // t + interval + _v2[0] = cubicAt(x0, x1, x2, x3, next); + _v2[1] = cubicAt(y0, y1, y2, y3, next); + d2 = v2DistSquare(_v2, _v0); + + if (next <= 1 && d2 < d) { + t = next; + d = d2; + } + else { + interval *= 0.5; + } + } + } + // t + if (out) { + out[0] = cubicAt(x0, x1, x2, x3, t); + out[1] = cubicAt(y0, y1, y2, y3, t); + } + // console.log(interval, i); + return mathSqrt(d); + } + + /** + * 计算二次方贝塞尔值 + * @param {number} p0 + * @param {number} p1 + * @param {number} p2 + * @param {number} t + * @return {number} + */ + function quadraticAt(p0, p1, p2, t) { + var onet = 1 - t; + return onet * (onet * p0 + 2 * t * p1) + t * t * p2; + } + + /** + * 计算二次方贝塞尔导数值 + * @param {number} p0 + * @param {number} p1 + * @param {number} p2 + * @param {number} t + * @return {number} + */ + function quadraticDerivativeAt(p0, p1, p2, t) { + return 2 * ((1 - t) * (p1 - p0) + t * (p2 - p1)); + } + + /** + * 计算二次方贝塞尔方程根 + * @param {number} p0 + * @param {number} p1 + * @param {number} p2 + * @param {number} t + * @param {Array.} roots + * @return {number} 有效根数目 + */ + function quadraticRootAt(p0, p1, p2, val, roots) { + var a = p0 - 2 * p1 + p2; + var b = 2 * (p1 - p0); + var c = p0 - val; + + var n = 0; + if (isAroundZero(a)) { + if (isNotAroundZero(b)) { + var t1 = -c / b; + if (t1 >= 0 && t1 <= 1) { + roots[n++] = t1; + } + } + } + else { + var disc = b * b - 4 * a * c; + if (isAroundZero(disc)) { + var t1 = -b / (2 * a); + if (t1 >= 0 && t1 <= 1) { + roots[n++] = t1; + } + } + else if (disc > 0) { + var discSqrt = mathSqrt(disc); + var t1 = (-b + discSqrt) / (2 * a); + var t2 = (-b - discSqrt) / (2 * a); + if (t1 >= 0 && t1 <= 1) { + roots[n++] = t1; + } + if (t2 >= 0 && t2 <= 1) { + roots[n++] = t2; + } + } + } + return n; + } + + /** + * 计算二次贝塞尔方程极限值 + * @memberOf module:zrender/core/curve + * @param {number} p0 + * @param {number} p1 + * @param {number} p2 + * @return {number} + */ + function quadraticExtremum(p0, p1, p2) { + var divider = p0 + p2 - 2 * p1; + if (divider === 0) { + // p1 is center of p0 and p2 + return 0.5; + } + else { + return (p0 - p1) / divider; + } + } + + /** + * 细分二次贝塞尔曲线 + * @memberOf module:zrender/core/curve + * @param {number} p0 + * @param {number} p1 + * @param {number} p2 + * @param {number} t + * @param {Array.} out + */ + function quadraticSubdivide(p0, p1, p2, t, out) { + var p01 = (p1 - p0) * t + p0; + var p12 = (p2 - p1) * t + p1; + var p012 = (p12 - p01) * t + p01; + + // Seg0 + out[0] = p0; + out[1] = p01; + out[2] = p012; + + // Seg1 + out[3] = p012; + out[4] = p12; + out[5] = p2; + } + + /** + * 投射点到二次贝塞尔曲线上,返回投射距离。 + * 投射点有可能会有一个或者多个,这里只返回其中距离最短的一个。 + * @param {number} x0 + * @param {number} y0 + * @param {number} x1 + * @param {number} y1 + * @param {number} x2 + * @param {number} y2 + * @param {number} x + * @param {number} y + * @param {Array.} out 投射点 + * @return {number} + */ + function quadraticProjectPoint( + x0, y0, x1, y1, x2, y2, + x, y, out + ) { + // http://pomax.github.io/bezierinfo/#projections + var t; + var interval = 0.005; + var d = Infinity; + + _v0[0] = x; + _v0[1] = y; + + // 先粗略估计一下可能的最小距离的 t 值 + // PENDING + for (var _t = 0; _t < 1; _t += 0.05) { + _v1[0] = quadraticAt(x0, x1, x2, _t); + _v1[1] = quadraticAt(y0, y1, y2, _t); + var d1 = v2DistSquare(_v0, _v1); + if (d1 < d) { + t = _t; + d = d1; + } + } + d = Infinity; + + // At most 32 iteration + for (var i = 0; i < 32; i++) { + if (interval < EPSILON_NUMERIC) { + break; + } + var prev = t - interval; + var next = t + interval; + // t - interval + _v1[0] = quadraticAt(x0, x1, x2, prev); + _v1[1] = quadraticAt(y0, y1, y2, prev); + + var d1 = v2DistSquare(_v1, _v0); + + if (prev >= 0 && d1 < d) { + t = prev; + d = d1; + } + else { + // t + interval + _v2[0] = quadraticAt(x0, x1, x2, next); + _v2[1] = quadraticAt(y0, y1, y2, next); + var d2 = v2DistSquare(_v2, _v0); + if (next <= 1 && d2 < d) { + t = next; + d = d2; + } + else { + interval *= 0.5; + } + } + } + // t + if (out) { + out[0] = quadraticAt(x0, x1, x2, t); + out[1] = quadraticAt(y0, y1, y2, t); + } + // console.log(interval, i); + return mathSqrt(d); + } + + module.exports = { + + cubicAt: cubicAt, + + cubicDerivativeAt: cubicDerivativeAt, + + cubicRootAt: cubicRootAt, + + cubicExtrema: cubicExtrema, + + cubicSubdivide: cubicSubdivide, + + cubicProjectPoint: cubicProjectPoint, + + quadraticAt: quadraticAt, + + quadraticDerivativeAt: quadraticDerivativeAt, + + quadraticRootAt: quadraticRootAt, + + quadraticExtremum: quadraticExtremum, + + quadraticSubdivide: quadraticSubdivide, + + quadraticProjectPoint: quadraticProjectPoint + }; + + +/***/ }, +/* 38 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * @author Yi Shen(https://github.com/pissang) + */ + + + var vec2 = __webpack_require__(10); + var curve = __webpack_require__(37); + + var bbox = {}; + var mathMin = Math.min; + var mathMax = Math.max; + var mathSin = Math.sin; + var mathCos = Math.cos; + + var start = vec2.create(); + var end = vec2.create(); + var extremity = vec2.create(); + + var PI2 = Math.PI * 2; + /** + * 从顶点数组中计算出最小包围盒,写入`min`和`max`中 + * @module zrender/core/bbox + * @param {Array} points 顶点数组 + * @param {number} min + * @param {number} max + */ + bbox.fromPoints = function(points, min, max) { + if (points.length === 0) { + return; + } + var p = points[0]; + var left = p[0]; + var right = p[0]; + var top = p[1]; + var bottom = p[1]; + var i; + + for (i = 1; i < points.length; i++) { + p = points[i]; + left = mathMin(left, p[0]); + right = mathMax(right, p[0]); + top = mathMin(top, p[1]); + bottom = mathMax(bottom, p[1]); + } + + min[0] = left; + min[1] = top; + max[0] = right; + max[1] = bottom; + }; + + /** + * @memberOf module:zrender/core/bbox + * @param {number} x0 + * @param {number} y0 + * @param {number} x1 + * @param {number} y1 + * @param {Array.} min + * @param {Array.} max + */ + bbox.fromLine = function (x0, y0, x1, y1, min, max) { + min[0] = mathMin(x0, x1); + min[1] = mathMin(y0, y1); + max[0] = mathMax(x0, x1); + max[1] = mathMax(y0, y1); + }; + + var xDim = []; + var yDim = []; + /** + * 从三阶贝塞尔曲线(p0, p1, p2, p3)中计算出最小包围盒,写入`min`和`max`中 + * @memberOf module:zrender/core/bbox + * @param {number} x0 + * @param {number} y0 + * @param {number} x1 + * @param {number} y1 + * @param {number} x2 + * @param {number} y2 + * @param {number} x3 + * @param {number} y3 + * @param {Array.} min + * @param {Array.} max + */ + bbox.fromCubic = function( + x0, y0, x1, y1, x2, y2, x3, y3, min, max + ) { + var cubicExtrema = curve.cubicExtrema; + var cubicAt = curve.cubicAt; + var i; + var n = cubicExtrema(x0, x1, x2, x3, xDim); + min[0] = Infinity; + min[1] = Infinity; + max[0] = -Infinity; + max[1] = -Infinity; + + for (i = 0; i < n; i++) { + var x = cubicAt(x0, x1, x2, x3, xDim[i]); + min[0] = mathMin(x, min[0]); + max[0] = mathMax(x, max[0]); + } + n = cubicExtrema(y0, y1, y2, y3, yDim); + for (i = 0; i < n; i++) { + var y = cubicAt(y0, y1, y2, y3, yDim[i]); + min[1] = mathMin(y, min[1]); + max[1] = mathMax(y, max[1]); + } + + min[0] = mathMin(x0, min[0]); + max[0] = mathMax(x0, max[0]); + min[0] = mathMin(x3, min[0]); + max[0] = mathMax(x3, max[0]); + + min[1] = mathMin(y0, min[1]); + max[1] = mathMax(y0, max[1]); + min[1] = mathMin(y3, min[1]); + max[1] = mathMax(y3, max[1]); + }; + + /** + * 从二阶贝塞尔曲线(p0, p1, p2)中计算出最小包围盒,写入`min`和`max`中 + * @memberOf module:zrender/core/bbox + * @param {number} x0 + * @param {number} y0 + * @param {number} x1 + * @param {number} y1 + * @param {number} x2 + * @param {number} y2 + * @param {Array.} min + * @param {Array.} max + */ + bbox.fromQuadratic = function(x0, y0, x1, y1, x2, y2, min, max) { + var quadraticExtremum = curve.quadraticExtremum; + var quadraticAt = curve.quadraticAt; + // Find extremities, where derivative in x dim or y dim is zero + var tx = + mathMax( + mathMin(quadraticExtremum(x0, x1, x2), 1), 0 + ); + var ty = + mathMax( + mathMin(quadraticExtremum(y0, y1, y2), 1), 0 + ); + + var x = quadraticAt(x0, x1, x2, tx); + var y = quadraticAt(y0, y1, y2, ty); + + min[0] = mathMin(x0, x2, x); + min[1] = mathMin(y0, y2, y); + max[0] = mathMax(x0, x2, x); + max[1] = mathMax(y0, y2, y); + }; + + /** + * 从圆弧中计算出最小包围盒,写入`min`和`max`中 + * @method + * @memberOf module:zrender/core/bbox + * @param {number} x + * @param {number} y + * @param {number} rx + * @param {number} ry + * @param {number} startAngle + * @param {number} endAngle + * @param {number} anticlockwise + * @param {Array.} min + * @param {Array.} max + */ + bbox.fromArc = function ( + x, y, rx, ry, startAngle, endAngle, anticlockwise, min, max + ) { + var vec2Min = vec2.min; + var vec2Max = vec2.max; + + var diff = Math.abs(startAngle - endAngle); + + + if (diff % PI2 < 1e-4 && diff > 1e-4) { + // Is a circle + min[0] = x - rx; + min[1] = y - ry; + max[0] = x + rx; + max[1] = y + ry; + return; + } + + start[0] = mathCos(startAngle) * rx + x; + start[1] = mathSin(startAngle) * ry + y; + + end[0] = mathCos(endAngle) * rx + x; + end[1] = mathSin(endAngle) * ry + y; + + vec2Min(min, start, end); + vec2Max(max, start, end); + + // Thresh to [0, Math.PI * 2] + startAngle = startAngle % (PI2); + if (startAngle < 0) { + startAngle = startAngle + PI2; + } + endAngle = endAngle % (PI2); + if (endAngle < 0) { + endAngle = endAngle + PI2; + } + + if (startAngle > endAngle && !anticlockwise) { + endAngle += PI2; + } + else if (startAngle < endAngle && anticlockwise) { + startAngle += PI2; + } + if (anticlockwise) { + var tmp = endAngle; + endAngle = startAngle; + startAngle = tmp; + } + + // var number = 0; + // var step = (anticlockwise ? -Math.PI : Math.PI) / 2; + for (var angle = 0; angle < endAngle; angle += Math.PI / 2) { + if (angle > startAngle) { + extremity[0] = mathCos(angle) * rx + x; + extremity[1] = mathSin(angle) * ry + y; + + vec2Min(min, extremity, min); + vec2Max(max, extremity, max); + } + } + }; + + module.exports = bbox; + + + +/***/ }, +/* 39 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + + var CMD = __webpack_require__(36).CMD; + var line = __webpack_require__(40); + var cubic = __webpack_require__(41); + var quadratic = __webpack_require__(42); + var arc = __webpack_require__(43); + var normalizeRadian = __webpack_require__(44).normalizeRadian; + var curve = __webpack_require__(37); + + var windingLine = __webpack_require__(45); + + var containStroke = line.containStroke; + + var PI2 = Math.PI * 2; + + var EPSILON = 1e-4; + + function isAroundEqual(a, b) { + return Math.abs(a - b) < EPSILON; + } + + // 临时数组 + var roots = [-1, -1, -1]; + var extrema = [-1, -1]; + + function swapExtrema() { + var tmp = extrema[0]; + extrema[0] = extrema[1]; + extrema[1] = tmp; + } + + function windingCubic(x0, y0, x1, y1, x2, y2, x3, y3, x, y) { + // Quick reject + if ( + (y > y0 && y > y1 && y > y2 && y > y3) + || (y < y0 && y < y1 && y < y2 && y < y3) + ) { + return 0; + } + var nRoots = curve.cubicRootAt(y0, y1, y2, y3, y, roots); + if (nRoots === 0) { + return 0; + } + else { + var w = 0; + var nExtrema = -1; + var y0_, y1_; + for (var i = 0; i < nRoots; i++) { + var t = roots[i]; + + // Avoid winding error when intersection point is the connect point of two line of polygon + var unit = (t === 0 || t === 1) ? 0.5 : 1; + + var x_ = curve.cubicAt(x0, x1, x2, x3, t); + if (x_ < x) { // Quick reject + continue; + } + if (nExtrema < 0) { + nExtrema = curve.cubicExtrema(y0, y1, y2, y3, extrema); + if (extrema[1] < extrema[0] && nExtrema > 1) { + swapExtrema(); + } + y0_ = curve.cubicAt(y0, y1, y2, y3, extrema[0]); + if (nExtrema > 1) { + y1_ = curve.cubicAt(y0, y1, y2, y3, extrema[1]); + } + } + if (nExtrema == 2) { + // 分成三段单调函数 + if (t < extrema[0]) { + w += y0_ < y0 ? unit : -unit; + } + else if (t < extrema[1]) { + w += y1_ < y0_ ? unit : -unit; + } + else { + w += y3 < y1_ ? unit : -unit; + } + } + else { + // 分成两段单调函数 + if (t < extrema[0]) { + w += y0_ < y0 ? unit : -unit; + } + else { + w += y3 < y0_ ? unit : -unit; + } + } + } + return w; + } + } + + function windingQuadratic(x0, y0, x1, y1, x2, y2, x, y) { + // Quick reject + if ( + (y > y0 && y > y1 && y > y2) + || (y < y0 && y < y1 && y < y2) + ) { + return 0; + } + var nRoots = curve.quadraticRootAt(y0, y1, y2, y, roots); + if (nRoots === 0) { + return 0; + } + else { + var t = curve.quadraticExtremum(y0, y1, y2); + if (t >= 0 && t <= 1) { + var w = 0; + var y_ = curve.quadraticAt(y0, y1, y2, t); + for (var i = 0; i < nRoots; i++) { + // Remove one endpoint. + var unit = (roots[i] === 0 || roots[i] === 1) ? 0.5 : 1; + + var x_ = curve.quadraticAt(x0, x1, x2, roots[i]); + if (x_ < x) { // Quick reject + continue; + } + if (roots[i] < t) { + w += y_ < y0 ? unit : -unit; + } + else { + w += y2 < y_ ? unit : -unit; + } + } + return w; + } + else { + // Remove one endpoint. + var unit = (roots[0] === 0 || roots[0] === 1) ? 0.5 : 1; + + var x_ = curve.quadraticAt(x0, x1, x2, roots[0]); + if (x_ < x) { // Quick reject + return 0; + } + return y2 < y0 ? unit : -unit; + } + } + } + + // TODO + // Arc 旋转 + function windingArc( + cx, cy, r, startAngle, endAngle, anticlockwise, x, y + ) { + y -= cy; + if (y > r || y < -r) { + return 0; + } + var tmp = Math.sqrt(r * r - y * y); + roots[0] = -tmp; + roots[1] = tmp; + + var diff = Math.abs(startAngle - endAngle); + if (diff < 1e-4) { + return 0; + } + if (diff % PI2 < 1e-4) { + // Is a circle + startAngle = 0; + endAngle = PI2; + var dir = anticlockwise ? 1 : -1; + if (x >= roots[0] + cx && x <= roots[1] + cx) { + return dir; + } else { + return 0; + } + } + + if (anticlockwise) { + var tmp = startAngle; + startAngle = normalizeRadian(endAngle); + endAngle = normalizeRadian(tmp); + } + else { + startAngle = normalizeRadian(startAngle); + endAngle = normalizeRadian(endAngle); + } + if (startAngle > endAngle) { + endAngle += PI2; + } + + var w = 0; + for (var i = 0; i < 2; i++) { + var x_ = roots[i]; + if (x_ + cx > x) { + var angle = Math.atan2(y, x_); + var dir = anticlockwise ? 1 : -1; + if (angle < 0) { + angle = PI2 + angle; + } + if ( + (angle >= startAngle && angle <= endAngle) + || (angle + PI2 >= startAngle && angle + PI2 <= endAngle) + ) { + if (angle > Math.PI / 2 && angle < Math.PI * 1.5) { + dir = -dir; + } + w += dir; + } + } + } + return w; + } + + function containPath(data, lineWidth, isStroke, x, y) { + var w = 0; + var xi = 0; + var yi = 0; + var x0 = 0; + var y0 = 0; + + for (var i = 0; i < data.length;) { + var cmd = data[i++]; + // Begin a new subpath + if (cmd === CMD.M && i > 1) { + // Close previous subpath + if (!isStroke) { + w += windingLine(xi, yi, x0, y0, x, y); + } + // 如果被任何一个 subpath 包含 + // if (w !== 0) { + // return true; + // } + } + + if (i == 1) { + // 如果第一个命令是 L, C, Q + // 则 previous point 同绘制命令的第一个 point + // + // 第一个命令为 Arc 的情况下会在后面特殊处理 + xi = data[i]; + yi = data[i + 1]; + + x0 = xi; + y0 = yi; + } + + switch (cmd) { + case CMD.M: + // moveTo 命令重新创建一个新的 subpath, 并且更新新的起点 + // 在 closePath 的时候使用 + x0 = data[i++]; + y0 = data[i++]; + xi = x0; + yi = y0; + break; + case CMD.L: + if (isStroke) { + if (containStroke(xi, yi, data[i], data[i + 1], lineWidth, x, y)) { + return true; + } + } + else { + // NOTE 在第一个命令为 L, C, Q 的时候会计算出 NaN + w += windingLine(xi, yi, data[i], data[i + 1], x, y) || 0; + } + xi = data[i++]; + yi = data[i++]; + break; + case CMD.C: + if (isStroke) { + if (cubic.containStroke(xi, yi, + data[i++], data[i++], data[i++], data[i++], data[i], data[i + 1], + lineWidth, x, y + )) { + return true; + } + } + else { + w += windingCubic( + xi, yi, + data[i++], data[i++], data[i++], data[i++], data[i], data[i + 1], + x, y + ) || 0; + } + xi = data[i++]; + yi = data[i++]; + break; + case CMD.Q: + if (isStroke) { + if (quadratic.containStroke(xi, yi, + data[i++], data[i++], data[i], data[i + 1], + lineWidth, x, y + )) { + return true; + } + } + else { + w += windingQuadratic( + xi, yi, + data[i++], data[i++], data[i], data[i + 1], + x, y + ) || 0; + } + xi = data[i++]; + yi = data[i++]; + break; + case CMD.A: + // TODO Arc 判断的开销比较大 + var cx = data[i++]; + var cy = data[i++]; + var rx = data[i++]; + var ry = data[i++]; + var theta = data[i++]; + var dTheta = data[i++]; + // TODO Arc 旋转 + var psi = data[i++]; + var anticlockwise = 1 - data[i++]; + var x1 = Math.cos(theta) * rx + cx; + var y1 = Math.sin(theta) * ry + cy; + // 不是直接使用 arc 命令 + if (i > 1) { + w += windingLine(xi, yi, x1, y1, x, y); + } + else { + // 第一个命令起点还未定义 + x0 = x1; + y0 = y1; + } + // zr 使用scale来模拟椭圆, 这里也对x做一定的缩放 + var _x = (x - cx) * ry / rx + cx; + if (isStroke) { + if (arc.containStroke( + cx, cy, ry, theta, theta + dTheta, anticlockwise, + lineWidth, _x, y + )) { + return true; + } + } + else { + w += windingArc( + cx, cy, ry, theta, theta + dTheta, anticlockwise, + _x, y + ); + } + xi = Math.cos(theta + dTheta) * rx + cx; + yi = Math.sin(theta + dTheta) * ry + cy; + break; + case CMD.R: + x0 = xi = data[i++]; + y0 = yi = data[i++]; + var width = data[i++]; + var height = data[i++]; + var x1 = x0 + width; + var y1 = y0 + height; + if (isStroke) { + if (containStroke(x0, y0, x1, y0, lineWidth, x, y) + || containStroke(x1, y0, x1, y1, lineWidth, x, y) + || containStroke(x1, y1, x0, y1, lineWidth, x, y) + || containStroke(x0, y1, x0, y0, lineWidth, x, y) + ) { + return true; + } + } + else { + // FIXME Clockwise ? + w += windingLine(x1, y0, x1, y1, x, y); + w += windingLine(x0, y1, x0, y0, x, y); + } + break; + case CMD.Z: + if (isStroke) { + if (containStroke( + xi, yi, x0, y0, lineWidth, x, y + )) { + return true; + } + } + else { + // Close a subpath + w += windingLine(xi, yi, x0, y0, x, y); + // 如果被任何一个 subpath 包含 + // FIXME subpaths may overlap + // if (w !== 0) { + // return true; + // } + } + xi = x0; + yi = y0; + break; + } + } + if (!isStroke && !isAroundEqual(yi, y0)) { + w += windingLine(xi, yi, x0, y0, x, y) || 0; + } + return w !== 0; + } + + module.exports = { + contain: function (pathData, x, y) { + return containPath(pathData, 0, false, x, y); + }, + + containStroke: function (pathData, lineWidth, x, y) { + return containPath(pathData, lineWidth, true, x, y); + } + }; + + +/***/ }, +/* 40 */ +/***/ function(module, exports) { + + + module.exports = { + /** + * 线段包含判断 + * @param {number} x0 + * @param {number} y0 + * @param {number} x1 + * @param {number} y1 + * @param {number} lineWidth + * @param {number} x + * @param {number} y + * @return {boolean} + */ + containStroke: function (x0, y0, x1, y1, lineWidth, x, y) { + if (lineWidth === 0) { + return false; + } + var _l = lineWidth; + var _a = 0; + var _b = x0; + // Quick reject + 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) + ) { + return false; + } + + if (x0 !== x1) { + _a = (y0 - y1) / (x0 - x1); + _b = (x0 * y1 - x1 * y0) / (x0 - x1) ; + } + else { + return Math.abs(x - x0) <= _l / 2; + } + var tmp = _a * x - y + _b; + var _s = tmp * tmp / (_a * _a + 1); + return _s <= _l / 2 * _l / 2; + } + }; + + +/***/ }, +/* 41 */ +/***/ function(module, exports, __webpack_require__) { + + + + var curve = __webpack_require__(37); + + module.exports = { + /** + * 三次贝塞尔曲线描边包含判断 + * @param {number} x0 + * @param {number} y0 + * @param {number} x1 + * @param {number} y1 + * @param {number} x2 + * @param {number} y2 + * @param {number} x3 + * @param {number} y3 + * @param {number} lineWidth + * @param {number} x + * @param {number} y + * @return {boolean} + */ + containStroke: function(x0, y0, x1, y1, x2, y2, x3, y3, lineWidth, x, y) { + if (lineWidth === 0) { + return false; + } + var _l = lineWidth; + // Quick reject + 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) + ) { + return false; + } + var d = curve.cubicProjectPoint( + x0, y0, x1, y1, x2, y2, x3, y3, + x, y, null + ); + return d <= _l / 2; + } + }; + + +/***/ }, +/* 42 */ +/***/ function(module, exports, __webpack_require__) { + + + + var curve = __webpack_require__(37); + + module.exports = { + /** + * 二次贝塞尔曲线描边包含判断 + * @param {number} x0 + * @param {number} y0 + * @param {number} x1 + * @param {number} y1 + * @param {number} x2 + * @param {number} y2 + * @param {number} lineWidth + * @param {number} x + * @param {number} y + * @return {boolean} + */ + containStroke: function (x0, y0, x1, y1, x2, y2, lineWidth, x, y) { + if (lineWidth === 0) { + return false; + } + var _l = lineWidth; + // Quick reject + 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) + ) { + return false; + } + var d = curve.quadraticProjectPoint( + x0, y0, x1, y1, x2, y2, + x, y, null + ); + return d <= _l / 2; + } + }; + + +/***/ }, +/* 43 */ +/***/ function(module, exports, __webpack_require__) { + + + + var normalizeRadian = __webpack_require__(44).normalizeRadian; + var PI2 = Math.PI * 2; + + module.exports = { + /** + * 圆弧描边包含判断 + * @param {number} cx + * @param {number} cy + * @param {number} r + * @param {number} startAngle + * @param {number} endAngle + * @param {boolean} anticlockwise + * @param {number} lineWidth + * @param {number} x + * @param {number} y + * @return {Boolean} + */ + containStroke: function ( + cx, cy, r, startAngle, endAngle, anticlockwise, + lineWidth, x, y + ) { + + if (lineWidth === 0) { + return false; + } + var _l = lineWidth; + + x -= cx; + y -= cy; + var d = Math.sqrt(x * x + y * y); + + if ((d - _l > r) || (d + _l < r)) { + return false; + } + if (Math.abs(startAngle - endAngle) % PI2 < 1e-4) { + // Is a circle + return true; + } + if (anticlockwise) { + var tmp = startAngle; + startAngle = normalizeRadian(endAngle); + endAngle = normalizeRadian(tmp); + } else { + startAngle = normalizeRadian(startAngle); + endAngle = normalizeRadian(endAngle); + } + if (startAngle > endAngle) { + endAngle += PI2; + } + + var angle = Math.atan2(y, x); + if (angle < 0) { + angle += PI2; + } + return (angle >= startAngle && angle <= endAngle) + || (angle + PI2 >= startAngle && angle + PI2 <= endAngle); + } + }; + + +/***/ }, +/* 44 */ +/***/ function(module, exports) { + + + + var PI2 = Math.PI * 2; + module.exports = { + normalizeRadian: function(angle) { + angle %= PI2; + if (angle < 0) { + angle += PI2; + } + return angle; + } + }; + + +/***/ }, +/* 45 */ +/***/ function(module, exports) { + + + module.exports = function windingLine(x0, y0, x1, y1, x, y) { + if ((y > y0 && y > y1) || (y < y0 && y < y1)) { + return 0; + } + // Ignore horizontal line + if (y1 === y0) { + return 0; + } + var dir = y1 < y0 ? 1 : -1; + var t = (y - y0) / (y1 - y0); + + // Avoid winding error when intersection point is the connect point of two line of polygon + if (t === 1 || t === 0) { + dir = y1 < y0 ? 0.5 : -0.5; + } + + var x_ = t * (x1 - x0) + x0; + + return x_ > x ? dir : 0; + }; + + +/***/ }, +/* 46 */ +/***/ function(module, exports) { + + + + var Pattern = function (image, repeat) { + // Should do nothing more in this constructor. Because gradient can be + // declard by `color: {image: ...}`, where this constructor will not be called. + + this.image = image; + this.repeat = repeat; + + // Can be cloned + this.type = 'pattern'; + }; + + Pattern.prototype.getCanvasPattern = function (ctx) { + return ctx.createPattern(this.image, this.repeat || 'repeat'); + }; + + module.exports = Pattern; + + +/***/ }, +/* 47 */ +/***/ function(module, exports, __webpack_require__) { + + + + var CMD = __webpack_require__(36).CMD; + var vec2 = __webpack_require__(10); + var v2ApplyTransform = vec2.applyTransform; + + var points = [[], [], []]; + var mathSqrt = Math.sqrt; + var mathAtan2 = Math.atan2; + function transformPath(path, m) { + var data = path.data; + var cmd; + var nPoint; + var i; + var j; + var k; + var p; + + var M = CMD.M; + var C = CMD.C; + var L = CMD.L; + var R = CMD.R; + var A = CMD.A; + var Q = CMD.Q; + + for (i = 0, j = 0; i < data.length;) { + cmd = data[i++]; + j = i; + nPoint = 0; + + switch (cmd) { + case M: + nPoint = 1; + break; + case L: + nPoint = 1; + break; + case C: + nPoint = 3; + break; + case Q: + nPoint = 2; + break; + case A: + var x = m[4]; + var y = m[5]; + var sx = mathSqrt(m[0] * m[0] + m[1] * m[1]); + var sy = mathSqrt(m[2] * m[2] + m[3] * m[3]); + var angle = mathAtan2(-m[1] / sy, m[0] / sx); + // cx + data[i] *= sx; + data[i++] += x; + // cy + data[i] *= sy; + data[i++] += y; + // Scale rx and ry + // FIXME Assume psi is 0 here + data[i++] *= sx; + data[i++] *= sy; + + // Start angle + data[i++] += angle; + // end angle + data[i++] += angle; + // FIXME psi + i += 2; + j = i; + break; + case R: + // x0, y0 + p[0] = data[i++]; + p[1] = data[i++]; + v2ApplyTransform(p, p, m); + data[j++] = p[0]; + data[j++] = p[1]; + // x1, y1 + p[0] += data[i++]; + p[1] += data[i++]; + v2ApplyTransform(p, p, m); + data[j++] = p[0]; + data[j++] = p[1]; + } + + for (k = 0; k < nPoint; k++) { + var p = points[k]; + p[0] = data[i++]; + p[1] = data[i++]; + + v2ApplyTransform(p, p, m); + // Write back + data[j++] = p[0]; + data[j++] = p[1]; + } + } + } + + module.exports = transformPath; + + +/***/ }, +/* 48 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * Group是一个容器,可以插入子节点,Group的变换也会被应用到子节点上 + * @module zrender/graphic/Group + * @example + * var Group = require('zrender/lib/container/Group'); + * var Circle = require('zrender/lib/graphic/shape/Circle'); + * var g = new Group(); + * g.position[0] = 100; + * g.position[1] = 100; + * g.add(new Circle({ + * style: { + * x: 100, + * y: 100, + * r: 20, + * } + * })); + * zr.add(g); + */ + + + var zrUtil = __webpack_require__(4); + var Element = __webpack_require__(23); + var BoundingRect = __webpack_require__(9); + + /** + * @alias module:zrender/graphic/Group + * @constructor + * @extends module:zrender/mixin/Transformable + * @extends module:zrender/mixin/Eventful + */ + var Group = function (opts) { + + opts = opts || {}; + + Element.call(this, opts); + + for (var key in opts) { + if (opts.hasOwnProperty(key)) { + this[key] = opts[key]; + } + } + + this._children = []; + + this.__storage = null; + + this.__dirty = true; + }; + + Group.prototype = { + + constructor: Group, + + isGroup: true, + + /** + * @type {string} + */ + type: 'group', + + /** + * 所有子孙元素是否响应鼠标事件 + * @name module:/zrender/container/Group#silent + * @type {boolean} + * @default false + */ + silent: false, + + /** + * @return {Array.} + */ + children: function () { + return this._children.slice(); + }, + + /** + * 获取指定 index 的儿子节点 + * @param {number} idx + * @return {module:zrender/Element} + */ + childAt: function (idx) { + return this._children[idx]; + }, + + /** + * 获取指定名字的儿子节点 + * @param {string} name + * @return {module:zrender/Element} + */ + childOfName: function (name) { + var children = this._children; + for (var i = 0; i < children.length; i++) { + if (children[i].name === name) { + return children[i]; + } + } + }, + + /** + * @return {number} + */ + childCount: function () { + return this._children.length; + }, + + /** + * 添加子节点到最后 + * @param {module:zrender/Element} child + */ + add: function (child) { + if (child && child !== this && child.parent !== this) { + + this._children.push(child); + + this._doAdd(child); + } + + return this; + }, + + /** + * 添加子节点在 nextSibling 之前 + * @param {module:zrender/Element} child + * @param {module:zrender/Element} nextSibling + */ + addBefore: function (child, nextSibling) { + if (child && child !== this && child.parent !== this + && nextSibling && nextSibling.parent === this) { + + var children = this._children; + var idx = children.indexOf(nextSibling); + + if (idx >= 0) { + children.splice(idx, 0, child); + this._doAdd(child); + } + } + + return this; + }, + + _doAdd: function (child) { + if (child.parent) { + child.parent.remove(child); + } + + child.parent = this; + + var storage = this.__storage; + var zr = this.__zr; + if (storage && storage !== child.__storage) { + + storage.addToStorage(child); + + if (child instanceof Group) { + child.addChildrenToStorage(storage); + } + } + + zr && zr.refresh(); + }, + + /** + * 移除子节点 + * @param {module:zrender/Element} child + */ + remove: function (child) { + var zr = this.__zr; + var storage = this.__storage; + var children = this._children; + + var idx = zrUtil.indexOf(children, child); + if (idx < 0) { + return this; + } + children.splice(idx, 1); + + child.parent = null; + + if (storage) { + + storage.delFromStorage(child); + + if (child instanceof Group) { + child.delChildrenFromStorage(storage); + } + } + + zr && zr.refresh(); + + return this; + }, + + /** + * 移除所有子节点 + */ + removeAll: function () { + var children = this._children; + var storage = this.__storage; + var child; + var i; + for (i = 0; i < children.length; i++) { + child = children[i]; + if (storage) { + storage.delFromStorage(child); + if (child instanceof Group) { + child.delChildrenFromStorage(storage); + } + } + child.parent = null; + } + children.length = 0; + + return this; + }, + + /** + * 遍历所有子节点 + * @param {Function} cb + * @param {} context + */ + eachChild: function (cb, context) { + var children = this._children; + for (var i = 0; i < children.length; i++) { + var child = children[i]; + cb.call(context, child, i); + } + return this; + }, + + /** + * 深度优先遍历所有子孙节点 + * @param {Function} cb + * @param {} context + */ + traverse: function (cb, context) { + for (var i = 0; i < this._children.length; i++) { + var child = this._children[i]; + cb.call(context, child); + + if (child.type === 'group') { + child.traverse(cb, context); + } + } + return this; + }, + + addChildrenToStorage: function (storage) { + for (var i = 0; i < this._children.length; i++) { + var child = this._children[i]; + storage.addToStorage(child); + if (child instanceof Group) { + child.addChildrenToStorage(storage); + } + } + }, + + delChildrenFromStorage: function (storage) { + for (var i = 0; i < this._children.length; i++) { + var child = this._children[i]; + storage.delFromStorage(child); + if (child instanceof Group) { + child.delChildrenFromStorage(storage); + } + } + }, + + dirty: function () { + this.__dirty = true; + this.__zr && this.__zr.refresh(); + return this; + }, + + /** + * @return {module:zrender/core/BoundingRect} + */ + getBoundingRect: function (includeChildren) { + // TODO Caching + var rect = null; + var tmpRect = new BoundingRect(0, 0, 0, 0); + var children = includeChildren || this._children; + var tmpMat = []; + + for (var i = 0; i < children.length; i++) { + var child = children[i]; + if (child.ignore || child.invisible) { + continue; + } + + var childRect = child.getBoundingRect(); + var transform = child.getLocalTransform(tmpMat); + // TODO + // The boundingRect cacluated by transforming original + // rect may be bigger than the actual bundingRect when rotation + // is used. (Consider a circle rotated aginst its center, where + // the actual boundingRect should be the same as that not be + // rotated.) But we can not find better approach to calculate + // actual boundingRect yet, considering performance. + if (transform) { + tmpRect.copy(childRect); + tmpRect.applyTransform(transform); + rect = rect || tmpRect.clone(); + rect.union(tmpRect); + } + else { + rect = rect || childRect.clone(); + rect.union(childRect); + } + } + return rect || tmpRect; + } + }; + + zrUtil.inherits(Group, Element); + + module.exports = Group; + + +/***/ }, +/* 49 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * Image element + * @module zrender/graphic/Image + */ + + + + var Displayable = __webpack_require__(21); + var BoundingRect = __webpack_require__(9); + var zrUtil = __webpack_require__(4); + + var LRU = __webpack_require__(32); + var globalImageCache = new LRU(50); + /** + * @alias zrender/graphic/Image + * @extends module:zrender/graphic/Displayable + * @constructor + * @param {Object} opts + */ + function ZImage(opts) { + Displayable.call(this, opts); + } + + ZImage.prototype = { + + constructor: ZImage, + + type: 'image', + + brush: function (ctx, prevEl) { + var style = this.style; + var src = style.image; + var image; + + // Must bind each time + style.bind(ctx, this, prevEl); + // style.image is a url string + if (typeof src === 'string') { + image = this._image; + } + // style.image is an HTMLImageElement or HTMLCanvasElement or Canvas + else { + image = src; + } + // FIXME Case create many images with src + if (!image && src) { + // Try get from global image cache + var cachedImgObj = globalImageCache.get(src); + if (!cachedImgObj) { + // Create a new image + image = new Image(); + image.onload = function () { + image.onload = null; + for (var i = 0; i < cachedImgObj.pending.length; i++) { + cachedImgObj.pending[i].dirty(); + } + }; + cachedImgObj = { + image: image, + pending: [this] + }; + image.src = src; + globalImageCache.put(src, cachedImgObj); + this._image = image; + return; + } + else { + image = cachedImgObj.image; + this._image = image; + // Image is not complete finish, add to pending list + if (!image.width || !image.height) { + cachedImgObj.pending.push(this); + return; + } + } + } + + if (image) { + // 图片已经加载完成 + // if (image.nodeName.toUpperCase() == 'IMG') { + // if (!image.complete) { + // return; + // } + // } + // Else is canvas + + var x = style.x || 0; + var y = style.y || 0; + // 图片加载失败 + if (!image.width || !image.height) { + return; + } + var width = style.width; + var height = style.height; + var aspect = image.width / image.height; + if (width == null && height != null) { + // Keep image/height ratio + width = height * aspect; + } + else if (height == null && width != null) { + height = width / aspect; + } + else if (width == null && height == null) { + width = image.width; + height = image.height; + } + + // 设置transform + this.setTransform(ctx); + + if (style.sWidth && style.sHeight) { + var sx = style.sx || 0; + var sy = style.sy || 0; + ctx.drawImage( + image, + sx, sy, style.sWidth, style.sHeight, + x, y, width, height + ); + } + else if (style.sx && style.sy) { + var sx = style.sx; + var sy = style.sy; + var sWidth = width - sx; + var sHeight = height - sy; + ctx.drawImage( + image, + sx, sy, sWidth, sHeight, + x, y, width, height + ); + } + else { + ctx.drawImage(image, x, y, width, height); + } + + this.restoreTransform(ctx); + + // Draw rect text + if (style.text != null) { + this.drawRectText(ctx, this.getBoundingRect()); + } + + } + }, + + getBoundingRect: function () { + var style = this.style; + if (! this._rect) { + this._rect = new BoundingRect( + style.x || 0, style.y || 0, style.width || 0, style.height || 0 + ); + } + return this._rect; + } + }; + + zrUtil.inherits(ZImage, Displayable); + + module.exports = ZImage; + + +/***/ }, +/* 50 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * Text element + * @module zrender/graphic/Text + * + * TODO Wrapping + * + * Text not support gradient + */ + + + + var Displayable = __webpack_require__(21); + var zrUtil = __webpack_require__(4); + var textContain = __webpack_require__(8); + + /** + * @alias zrender/graphic/Text + * @extends module:zrender/graphic/Displayable + * @constructor + * @param {Object} opts + */ + var Text = function (opts) { + Displayable.call(this, opts); + }; + + Text.prototype = { + + constructor: Text, + + type: 'text', + + brush: function (ctx, prevEl) { + var style = this.style; + var x = style.x || 0; + var y = style.y || 0; + // Convert to string + var text = style.text; + + // Convert to string + text != null && (text += ''); + + // Always bind style + style.bind(ctx, this, prevEl); + + if (text) { + + this.setTransform(ctx); + + var textBaseline; + var textAlign = style.textAlign; + var font = style.textFont || style.font; + if (style.textVerticalAlign) { + var rect = textContain.getBoundingRect( + text, font, style.textAlign, 'top' + ); + // Ignore textBaseline + textBaseline = 'middle'; + switch (style.textVerticalAlign) { + case 'middle': + y -= rect.height / 2 - rect.lineHeight / 2; + break; + case 'bottom': + y -= rect.height - rect.lineHeight / 2; + break; + default: + y += rect.lineHeight / 2; + } + } + else { + textBaseline = style.textBaseline; + } + + // TODO Invalid font + ctx.font = font || '12px sans-serif'; + ctx.textAlign = textAlign || 'left'; + // Use canvas default left textAlign. Giving invalid value will cause state not change + if (ctx.textAlign !== textAlign) { + ctx.textAlign = 'left'; + } + // FIXME in text contain default is top + ctx.textBaseline = textBaseline || 'alphabetic'; + // Use canvas default alphabetic baseline + if (ctx.textBaseline !== textBaseline) { + ctx.textBaseline = 'alphabetic'; + } + + var lineHeight = textContain.measureText('国', ctx.font).width; + + var textLines = text.split('\n'); + for (var i = 0; i < textLines.length; i++) { + // Fill after stroke so the outline will not cover the main part. + style.hasStroke() && ctx.strokeText(textLines[i], x, y); + style.hasFill() && ctx.fillText(textLines[i], x, y); + y += lineHeight; + } + + this.restoreTransform(ctx); + } + }, + + getBoundingRect: function () { + var style = this.style; + if (!this._rect) { + var textVerticalAlign = style.textVerticalAlign; + var rect = textContain.getBoundingRect( + style.text + '', style.textFont || style.font, style.textAlign, + textVerticalAlign ? 'top' : style.textBaseline + ); + switch (textVerticalAlign) { + case 'middle': + rect.y -= rect.height / 2; + break; + case 'bottom': + rect.y -= rect.height; + break; + } + rect.x += style.x || 0; + rect.y += style.y || 0; + if (style.hasStroke()) { + var w = style.lineWidth; + rect.x -= w / 2; + rect.y -= w / 2; + rect.width += w; + rect.height += w; + } + this._rect = rect; + } + + return this._rect; + } + }; + + zrUtil.inherits(Text, Displayable); + + module.exports = Text; + + +/***/ }, +/* 51 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + /** + * 圆形 + * @module zrender/shape/Circle + */ + + + + module.exports = __webpack_require__(20).extend({ + + type: 'circle', + + shape: { + cx: 0, + cy: 0, + r: 0 + }, + + + buildPath : function (ctx, shape, inBundle) { + // Better stroking in ShapeBundle + // Always do it may have performence issue ( fill may be 2x more cost) + if (inBundle) { + ctx.moveTo(shape.cx + shape.r, shape.cy); + } + // else { + // if (ctx.allocate && !ctx.data.length) { + // ctx.allocate(ctx.CMD_MEM_SIZE.A); + // } + // } + // Better stroking in ShapeBundle + // ctx.moveTo(shape.cx + shape.r, shape.cy); + ctx.arc(shape.cx, shape.cy, shape.r, 0, Math.PI * 2, true); + } + }); + + + +/***/ }, +/* 52 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * 扇形 + * @module zrender/graphic/shape/Sector + */ + + + + var env = __webpack_require__(2); + var Path = __webpack_require__(20); + + var shadowTemp = [ + ['shadowBlur', 0], + ['shadowColor', '#000'], + ['shadowOffsetX', 0], + ['shadowOffsetY', 0] + ]; + + module.exports = Path.extend({ + + type: 'sector', + + shape: { + + cx: 0, + + cy: 0, + + r0: 0, + + r: 0, + + startAngle: 0, + + endAngle: Math.PI * 2, + + clockwise: true + }, + + brush: (env.browser.ie && env.browser.version >= 11) // version: '11.0' + // Fix weird bug in some version of IE11 (like 11.0.9600.17801), + // where exception "unexpected call to method or property access" + // might be thrown when calling ctx.fill after a path whose area size + // is zero is drawn and ctx.clip() is called and shadowBlur is set. + // (e.g., + // ctx.moveTo(10, 10); + // ctx.lineTo(20, 10); + // ctx.closePath(); + // ctx.clip(); + // ctx.shadowBlur = 10; + // ... + // ctx.fill(); + // ) + ? function () { + var clipPaths = this.__clipPaths; + var style = this.style; + var modified; + + if (clipPaths) { + for (var i = 0; i < clipPaths.length; i++) { + var shape = clipPaths[i] && clipPaths[i].shape; + if (shape && shape.startAngle === shape.endAngle) { + for (var j = 0; j < shadowTemp.length; j++) { + shadowTemp[j][2] = style[shadowTemp[j][0]]; + style[shadowTemp[j][0]] = shadowTemp[j][1]; + } + modified = true; + break; + } + } + } + + Path.prototype.brush.apply(this, arguments); + + if (modified) { + for (var j = 0; j < shadowTemp.length; j++) { + style[shadowTemp[j][0]] = shadowTemp[j][2]; + } + } + } + : Path.prototype.brush, + + buildPath: function (ctx, shape) { + + var x = shape.cx; + var y = shape.cy; + var r0 = Math.max(shape.r0 || 0, 0); + var r = Math.max(shape.r, 0); + var startAngle = shape.startAngle; + var endAngle = shape.endAngle; + var clockwise = shape.clockwise; + + var unitX = Math.cos(startAngle); + var unitY = Math.sin(startAngle); + + ctx.moveTo(unitX * r0 + x, unitY * r0 + y); + + ctx.lineTo(unitX * r + x, unitY * r + y); + + ctx.arc(x, y, r, startAngle, endAngle, !clockwise); + + ctx.lineTo( + Math.cos(endAngle) * r0 + x, + Math.sin(endAngle) * r0 + y + ); + + if (r0 !== 0) { + ctx.arc(x, y, r0, endAngle, startAngle, clockwise); + } + + ctx.closePath(); + } + }); + + + +/***/ }, +/* 53 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * 圆环 + * @module zrender/graphic/shape/Ring + */ + + + module.exports = __webpack_require__(20).extend({ + + type: 'ring', + + shape: { + cx: 0, + cy: 0, + r: 0, + r0: 0 + }, + + buildPath: function (ctx, shape) { + var x = shape.cx; + var y = shape.cy; + var PI2 = Math.PI * 2; + ctx.moveTo(x + shape.r, y); + ctx.arc(x, y, shape.r, 0, PI2, false); + ctx.moveTo(x + shape.r0, y); + ctx.arc(x, y, shape.r0, 0, PI2, true); + } + }); + + + +/***/ }, +/* 54 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * 多边形 + * @module zrender/shape/Polygon + */ + + + var polyHelper = __webpack_require__(55); + + module.exports = __webpack_require__(20).extend({ + + type: 'polygon', + + shape: { + points: null, + + smooth: false, + + smoothConstraint: null + }, + + buildPath: function (ctx, shape) { + polyHelper.buildPath(ctx, shape, true); + } + }); + + +/***/ }, +/* 55 */ +/***/ function(module, exports, __webpack_require__) { + + + + var smoothSpline = __webpack_require__(56); + var smoothBezier = __webpack_require__(57); + + module.exports = { + buildPath: function (ctx, shape, closePath) { + var points = shape.points; + var smooth = shape.smooth; + if (points && points.length >= 2) { + if (smooth && smooth !== 'spline') { + var controlPoints = smoothBezier( + points, smooth, closePath, shape.smoothConstraint + ); + + ctx.moveTo(points[0][0], points[0][1]); + var len = points.length; + for (var i = 0; i < (closePath ? len : len - 1); i++) { + var cp1 = controlPoints[i * 2]; + var cp2 = controlPoints[i * 2 + 1]; + var p = points[(i + 1) % len]; + ctx.bezierCurveTo( + cp1[0], cp1[1], cp2[0], cp2[1], p[0], p[1] + ); + } + } + else { + if (smooth === 'spline') { + points = smoothSpline(points, closePath); + } + + ctx.moveTo(points[0][0], points[0][1]); + for (var i = 1, l = points.length; i < l; i++) { + ctx.lineTo(points[i][0], points[i][1]); + } + } + + closePath && ctx.closePath(); + } + } + }; + + +/***/ }, +/* 56 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * Catmull-Rom spline 插值折线 + * @module zrender/shape/util/smoothSpline + * @author pissang (https://www.github.com/pissang) + * Kener (@Kener-林峰, kener.linfeng@gmail.com) + * errorrik (errorrik@gmail.com) + */ + + var vec2 = __webpack_require__(10); + + /** + * @inner + */ + function interpolate(p0, p1, p2, p3, t, t2, t3) { + var v0 = (p2 - p0) * 0.5; + var v1 = (p3 - p1) * 0.5; + return (2 * (p1 - p2) + v0 + v1) * t3 + + (-3 * (p1 - p2) - 2 * v0 - v1) * t2 + + v0 * t + p1; + } + + /** + * @alias module:zrender/shape/util/smoothSpline + * @param {Array} points 线段顶点数组 + * @param {boolean} isLoop + * @return {Array} + */ + module.exports = function (points, isLoop) { + var len = points.length; + var ret = []; + + var distance = 0; + for (var i = 1; i < len; i++) { + distance += vec2.distance(points[i - 1], points[i]); + } + + var segs = distance / 2; + segs = segs < len ? len : segs; + for (var i = 0; i < segs; i++) { + var pos = i / (segs - 1) * (isLoop ? len : len - 1); + var idx = Math.floor(pos); + + var w = pos - idx; + + var p0; + var p1 = points[idx % len]; + var p2; + var p3; + if (!isLoop) { + p0 = points[idx === 0 ? idx : idx - 1]; + p2 = points[idx > len - 2 ? len - 1 : idx + 1]; + p3 = points[idx > len - 3 ? len - 1 : idx + 2]; + } + else { + p0 = points[(idx - 1 + len) % len]; + p2 = points[(idx + 1) % len]; + p3 = points[(idx + 2) % len]; + } + + var w2 = w * w; + var w3 = w * w2; + + 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) + ]); + } + return ret; + }; + + + +/***/ }, +/* 57 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * 贝塞尔平滑曲线 + * @module zrender/shape/util/smoothBezier + * @author pissang (https://www.github.com/pissang) + * Kener (@Kener-林峰, kener.linfeng@gmail.com) + * errorrik (errorrik@gmail.com) + */ + + + var vec2 = __webpack_require__(10); + var v2Min = vec2.min; + var v2Max = vec2.max; + var v2Scale = vec2.scale; + var v2Distance = vec2.distance; + var v2Add = vec2.add; + + /** + * 贝塞尔平滑曲线 + * @alias module:zrender/shape/util/smoothBezier + * @param {Array} points 线段顶点数组 + * @param {number} smooth 平滑等级, 0-1 + * @param {boolean} isLoop + * @param {Array} constraint 将计算出来的控制点约束在一个包围盒内 + * 比如 [[0, 0], [100, 100]], 这个包围盒会与 + * 整个折线的包围盒做一个并集用来约束控制点。 + * @param {Array} 计算出来的控制点数组 + */ + module.exports = function (points, smooth, isLoop, constraint) { + var cps = []; + + var v = []; + var v1 = []; + var v2 = []; + var prevPoint; + var nextPoint; + + var min, max; + if (constraint) { + min = [Infinity, Infinity]; + max = [-Infinity, -Infinity]; + for (var i = 0, len = points.length; i < len; i++) { + v2Min(min, min, points[i]); + v2Max(max, max, points[i]); + } + // 与指定的包围盒做并集 + v2Min(min, min, constraint[0]); + v2Max(max, max, constraint[1]); + } + + for (var i = 0, len = points.length; i < len; i++) { + var point = points[i]; + + if (isLoop) { + prevPoint = points[i ? i - 1 : len - 1]; + nextPoint = points[(i + 1) % len]; + } + else { + if (i === 0 || i === len - 1) { + cps.push(vec2.clone(points[i])); + continue; + } + else { + prevPoint = points[i - 1]; + nextPoint = points[i + 1]; + } + } + + vec2.sub(v, nextPoint, prevPoint); + + // use degree to scale the handle length + v2Scale(v, v, smooth); + + var d0 = v2Distance(point, prevPoint); + var d1 = v2Distance(point, nextPoint); + var sum = d0 + d1; + if (sum !== 0) { + d0 /= sum; + d1 /= sum; + } + + v2Scale(v1, v, -d0); + v2Scale(v2, v, d1); + var cp0 = v2Add([], point, v1); + var cp1 = v2Add([], point, v2); + if (constraint) { + v2Max(cp0, cp0, min); + v2Min(cp0, cp0, max); + v2Max(cp1, cp1, min); + v2Min(cp1, cp1, max); + } + cps.push(cp0); + cps.push(cp1); + } + + if (isLoop) { + cps.push(cps.shift()); + } + + return cps; + }; + + + +/***/ }, +/* 58 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * @module zrender/graphic/shape/Polyline + */ + + + var polyHelper = __webpack_require__(55); + + module.exports = __webpack_require__(20).extend({ + + type: 'polyline', + + shape: { + points: null, + + smooth: false, + + smoothConstraint: null + }, + + style: { + stroke: '#000', + + fill: null + }, + + buildPath: function (ctx, shape) { + polyHelper.buildPath(ctx, shape, false); + } + }); + + +/***/ }, +/* 59 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * 矩形 + * @module zrender/graphic/shape/Rect + */ + + + var roundRectHelper = __webpack_require__(60); + + module.exports = __webpack_require__(20).extend({ + + type: 'rect', + + shape: { + // 左上、右上、右下、左下角的半径依次为r1、r2、r3、r4 + // r缩写为1 相当于 [1, 1, 1, 1] + // r缩写为[1] 相当于 [1, 1, 1, 1] + // r缩写为[1, 2] 相当于 [1, 2, 1, 2] + // r缩写为[1, 2, 3] 相当于 [1, 2, 3, 2] + r: 0, + + x: 0, + y: 0, + width: 0, + height: 0 + }, + + buildPath: function (ctx, shape) { + var x = shape.x; + var y = shape.y; + var width = shape.width; + var height = shape.height; + if (!shape.r) { + ctx.rect(x, y, width, height); + } + else { + roundRectHelper.buildPath(ctx, shape); + } + ctx.closePath(); + return; + } + }); + + + +/***/ }, +/* 60 */ +/***/ function(module, exports) { + + + + module.exports = { + buildPath: function (ctx, shape) { + var x = shape.x; + var y = shape.y; + var width = shape.width; + var height = shape.height; + var r = shape.r; + var r1; + var r2; + var r3; + var r4; + + // Convert width and height to positive for better borderRadius + if (width < 0) { + x = x + width; + width = -width; + } + if (height < 0) { + y = y + height; + height = -height; + } + + if (typeof r === 'number') { + r1 = r2 = r3 = r4 = r; + } + else if (r instanceof Array) { + if (r.length === 1) { + r1 = r2 = r3 = r4 = r[0]; + } + else if (r.length === 2) { + r1 = r3 = r[0]; + r2 = r4 = r[1]; + } + else if (r.length === 3) { + r1 = r[0]; + r2 = r4 = r[1]; + r3 = r[2]; + } + else { + r1 = r[0]; + r2 = r[1]; + r3 = r[2]; + r4 = r[3]; + } + } + else { + r1 = r2 = r3 = r4 = 0; + } + + var total; + if (r1 + r2 > width) { + total = r1 + r2; + r1 *= width / total; + r2 *= width / total; + } + if (r3 + r4 > width) { + total = r3 + r4; + r3 *= width / total; + r4 *= width / total; + } + if (r2 + r3 > height) { + total = r2 + r3; + r2 *= height / total; + r3 *= height / total; + } + if (r1 + r4 > height) { + total = r1 + r4; + r1 *= height / total; + r4 *= height / total; + } + ctx.moveTo(x + r1, y); + ctx.lineTo(x + width - r2, y); + r2 !== 0 && ctx.quadraticCurveTo( + x + width, y, x + width, y + r2 + ); + ctx.lineTo(x + width, y + height - r3); + r3 !== 0 && ctx.quadraticCurveTo( + x + width, y + height, x + width - r3, y + height + ); + ctx.lineTo(x + r4, y + height); + r4 !== 0 && ctx.quadraticCurveTo( + x, y + height, x, y + height - r4 + ); + ctx.lineTo(x, y + r1); + r1 !== 0 && ctx.quadraticCurveTo(x, y, x + r1, y); + } + }; + + +/***/ }, +/* 61 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * 直线 + * @module zrender/graphic/shape/Line + */ + + module.exports = __webpack_require__(20).extend({ + + type: 'line', + + shape: { + // Start point + x1: 0, + y1: 0, + // End point + x2: 0, + y2: 0, + + percent: 1 + }, + + style: { + stroke: '#000', + fill: null + }, + + buildPath: function (ctx, shape) { + var x1 = shape.x1; + var y1 = shape.y1; + var x2 = shape.x2; + var y2 = shape.y2; + var percent = shape.percent; + + if (percent === 0) { + return; + } + + ctx.moveTo(x1, y1); + + if (percent < 1) { + x2 = x1 * (1 - percent) + x2 * percent; + y2 = y1 * (1 - percent) + y2 * percent; + } + ctx.lineTo(x2, y2); + }, + + /** + * Get point at percent + * @param {number} percent + * @return {Array.} + */ + pointAt: function (p) { + var shape = this.shape; + return [ + shape.x1 * (1 - p) + shape.x2 * p, + shape.y1 * (1 - p) + shape.y2 * p + ]; + } + }); + + + +/***/ }, +/* 62 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + /** + * 贝塞尔曲线 + * @module zrender/shape/BezierCurve + */ + + + var curveTool = __webpack_require__(37); + var vec2 = __webpack_require__(10); + var quadraticSubdivide = curveTool.quadraticSubdivide; + var cubicSubdivide = curveTool.cubicSubdivide; + var quadraticAt = curveTool.quadraticAt; + var cubicAt = curveTool.cubicAt; + var quadraticDerivativeAt = curveTool.quadraticDerivativeAt; + var cubicDerivativeAt = curveTool.cubicDerivativeAt; + + var out = []; + + function someVectorAt(shape, t, isTangent) { + var cpx2 = shape.cpx2; + var cpy2 = shape.cpy2; + if (cpx2 === null || cpy2 === null) { + 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) + ]; + } + else { + return [ + (isTangent ? quadraticDerivativeAt : quadraticAt)(shape.x1, shape.cpx1, shape.x2, t), + (isTangent ? quadraticDerivativeAt : quadraticAt)(shape.y1, shape.cpy1, shape.y2, t) + ]; + } + } + module.exports = __webpack_require__(20).extend({ + + type: 'bezier-curve', + + shape: { + x1: 0, + y1: 0, + x2: 0, + y2: 0, + cpx1: 0, + cpy1: 0, + // cpx2: 0, + // cpy2: 0 + + // Curve show percent, for animating + percent: 1 + }, + + style: { + stroke: '#000', + fill: null + }, + + buildPath: function (ctx, shape) { + var x1 = shape.x1; + var y1 = shape.y1; + var x2 = shape.x2; + var y2 = shape.y2; + var cpx1 = shape.cpx1; + var cpy1 = shape.cpy1; + var cpx2 = shape.cpx2; + var cpy2 = shape.cpy2; + var percent = shape.percent; + if (percent === 0) { + return; + } + + ctx.moveTo(x1, y1); + + if (cpx2 == null || cpy2 == null) { + if (percent < 1) { + quadraticSubdivide( + x1, cpx1, x2, percent, out + ); + cpx1 = out[1]; + x2 = out[2]; + quadraticSubdivide( + y1, cpy1, y2, percent, out + ); + cpy1 = out[1]; + y2 = out[2]; + } + + ctx.quadraticCurveTo( + cpx1, cpy1, + x2, y2 + ); + } + else { + if (percent < 1) { + cubicSubdivide( + x1, cpx1, cpx2, x2, percent, out + ); + cpx1 = out[1]; + cpx2 = out[2]; + x2 = out[3]; + cubicSubdivide( + y1, cpy1, cpy2, y2, percent, out + ); + cpy1 = out[1]; + cpy2 = out[2]; + y2 = out[3]; + } + ctx.bezierCurveTo( + cpx1, cpy1, + cpx2, cpy2, + x2, y2 + ); + } + }, + + /** + * Get point at percent + * @param {number} t + * @return {Array.} + */ + pointAt: function (t) { + return someVectorAt(this.shape, t, false); + }, + + /** + * Get tangent at percent + * @param {number} t + * @return {Array.} + */ + tangentAt: function (t) { + var p = someVectorAt(this.shape, t, true); + return vec2.normalize(p, p); + } + }); + + + +/***/ }, +/* 63 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * 圆弧 + * @module zrender/graphic/shape/Arc + */ + + + module.exports = __webpack_require__(20).extend({ + + type: 'arc', + + shape: { + + cx: 0, + + cy: 0, + + r: 0, + + startAngle: 0, + + endAngle: Math.PI * 2, + + clockwise: true + }, + + style: { + + stroke: '#000', + + fill: null + }, + + buildPath: function (ctx, shape) { + + var x = shape.cx; + var y = shape.cy; + var r = Math.max(shape.r, 0); + var startAngle = shape.startAngle; + var endAngle = shape.endAngle; + var clockwise = shape.clockwise; + + var unitX = Math.cos(startAngle); + var unitY = Math.sin(startAngle); + + ctx.moveTo(unitX * r + x, unitY * r + y); + ctx.arc(x, y, r, startAngle, endAngle, !clockwise); + } + }); + + +/***/ }, +/* 64 */ +/***/ function(module, exports, __webpack_require__) { + + // CompoundPath to improve performance + + + var Path = __webpack_require__(20); + + module.exports = Path.extend({ + + type: 'compound', + + shape: { + + paths: null + }, + + _updatePathDirty: function () { + var dirtyPath = this.__dirtyPath; + var paths = this.shape.paths; + for (var i = 0; i < paths.length; i++) { + // Mark as dirty if any subpath is dirty + dirtyPath = dirtyPath || paths[i].__dirtyPath; + } + this.__dirtyPath = dirtyPath; + this.__dirty = this.__dirty || dirtyPath; + }, + + beforeBrush: function () { + this._updatePathDirty(); + var paths = this.shape.paths || []; + var scale = this.getGlobalScale(); + // Update path scale + for (var i = 0; i < paths.length; i++) { + if (!paths[i].path) { + paths[i].createPathProxy(); + } + paths[i].path.setScale(scale[0], scale[1]); + } + }, + + buildPath: function (ctx, shape) { + var paths = shape.paths || []; + for (var i = 0; i < paths.length; i++) { + paths[i].buildPath(ctx, paths[i].shape, true); + } + }, + + afterBrush: function () { + var paths = this.shape.paths; + for (var i = 0; i < paths.length; i++) { + paths[i].__dirtyPath = false; + } + }, + + getBoundingRect: function () { + this._updatePathDirty(); + return Path.prototype.getBoundingRect.call(this); + } + }); + + +/***/ }, +/* 65 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + + var zrUtil = __webpack_require__(4); + + var Gradient = __webpack_require__(66); + + /** + * x, y, x2, y2 are all percent from 0 to 1 + * @param {number} [x=0] + * @param {number} [y=0] + * @param {number} [x2=1] + * @param {number} [y2=0] + * @param {Array.} colorStops + * @param {boolean} [globalCoord=false] + */ + var LinearGradient = function (x, y, x2, y2, colorStops, globalCoord) { + // Should do nothing more in this constructor. Because gradient can be + // declard by `color: {type: 'linear', colorStops: ...}`, where + // this constructor will not be called. + + this.x = x == null ? 0 : x; + + this.y = y == null ? 0 : y; + + this.x2 = x2 == null ? 1 : x2; + + this.y2 = y2 == null ? 0 : y2; + + // Can be cloned + this.type = 'linear'; + + // If use global coord + this.global = globalCoord || false; + + Gradient.call(this, colorStops); + }; + + LinearGradient.prototype = { + + constructor: LinearGradient + }; + + zrUtil.inherits(LinearGradient, Gradient); + + module.exports = LinearGradient; + + +/***/ }, +/* 66 */ +/***/ function(module, exports) { + + + + /** + * @param {Array.} colorStops + */ + var Gradient = function (colorStops) { + + this.colorStops = colorStops || []; + }; + + Gradient.prototype = { + + constructor: Gradient, + + addColorStop: function (offset, color) { + this.colorStops.push({ + + offset: offset, + + color: color + }); + } + }; + + module.exports = Gradient; + + +/***/ }, +/* 67 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + + var zrUtil = __webpack_require__(4); + + var Gradient = __webpack_require__(66); + + /** + * x, y, r are all percent from 0 to 1 + * @param {number} [x=0.5] + * @param {number} [y=0.5] + * @param {number} [r=0.5] + * @param {Array.} [colorStops] + * @param {boolean} [globalCoord=false] + */ + var RadialGradient = function (x, y, r, colorStops, globalCoord) { + // Should do nothing more in this constructor. Because gradient can be + // declard by `color: {type: 'radial', colorStops: ...}`, where + // this constructor will not be called. + + this.x = x == null ? 0.5 : x; + + this.y = y == null ? 0.5 : y; + + this.r = r == null ? 0.5 : r; + + // Can be cloned + this.type = 'radial'; + + // If use global coord + this.global = globalCoord || false; + + Gradient.call(this, colorStops); + }; + + RadialGradient.prototype = { + + constructor: RadialGradient + }; + + zrUtil.inherits(RadialGradient, Gradient); + + module.exports = RadialGradient; + + +/***/ }, +/* 68 */ +/***/ function(module, exports, __webpack_require__) { + + + var getItemStyle = __webpack_require__(15)( + [ + ['fill', 'color'], + ['stroke', 'borderColor'], + ['lineWidth', 'borderWidth'], + ['opacity'], + ['shadowBlur'], + ['shadowOffsetX'], + ['shadowOffsetY'], + ['shadowColor'], + ['textPosition'], + ['textAlign'] + ] + ); + module.exports = { + getItemStyle: function (excludes, includes) { + var style = getItemStyle.call(this, excludes, includes); + var lineDash = this.getBorderLineDash(); + lineDash && (style.lineDash = lineDash); + return style; + }, + + getBorderLineDash: function () { + var lineType = this.get('borderType'); + return (lineType === 'solid' || lineType == null) ? null + : (lineType === 'dashed' ? [5, 5] : [1, 1]); + } + }; + + +/***/ }, +/* 69 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * Component model + * + * @module echarts/model/Component + */ + + + var Model = __webpack_require__(12); + var zrUtil = __webpack_require__(4); + var arrayPush = Array.prototype.push; + var componentUtil = __webpack_require__(70); + var clazzUtil = __webpack_require__(13); + var layout = __webpack_require__(71); + + /** + * @alias module:echarts/model/Component + * @constructor + * @param {Object} option + * @param {module:echarts/model/Model} parentModel + * @param {module:echarts/model/Model} ecModel + */ + var ComponentModel = Model.extend({ + + type: 'component', + + /** + * @readOnly + * @type {string} + */ + id: '', + + /** + * @readOnly + */ + name: '', + + /** + * @readOnly + * @type {string} + */ + mainType: '', + + /** + * @readOnly + * @type {string} + */ + subType: '', + + /** + * @readOnly + * @type {number} + */ + componentIndex: 0, + + /** + * @type {Object} + * @protected + */ + defaultOption: null, + + /** + * @type {module:echarts/model/Global} + * @readOnly + */ + ecModel: null, + + /** + * key: componentType + * value: Component model list, can not be null. + * @type {Object.>} + * @readOnly + */ + dependentModels: [], + + /** + * @type {string} + * @readOnly + */ + uid: null, + + /** + * Support merge layout params. + * Only support 'box' now (left/right/top/bottom/width/height). + * @type {string|Object} Object can be {ignoreSize: true} + * @readOnly + */ + layoutMode: null, + + $constructor: function (option, parentModel, ecModel, extraOpt) { + Model.call(this, option, parentModel, ecModel, extraOpt); + + this.uid = componentUtil.getUID('componentModel'); + }, + + + init: function (option, parentModel, ecModel, extraOpt) { + this.mergeDefaultAndTheme(option, ecModel); + }, + + mergeDefaultAndTheme: function (option, ecModel) { + var layoutMode = this.layoutMode; + var inputPositionParams = layoutMode + ? layout.getLayoutParams(option) : {}; + + var themeModel = ecModel.getTheme(); + zrUtil.merge(option, themeModel.get(this.mainType)); + zrUtil.merge(option, this.getDefaultOption()); + + if (layoutMode) { + layout.mergeLayoutParam(option, inputPositionParams, layoutMode); + } + }, + + mergeOption: function (option, extraOpt) { + zrUtil.merge(this.option, option, true); + + var layoutMode = this.layoutMode; + if (layoutMode) { + layout.mergeLayoutParam(this.option, option, layoutMode); + } + }, + + // Hooker after init or mergeOption + optionUpdated: function (newCptOption, isInit) {}, + + getDefaultOption: function () { + if (!clazzUtil.hasOwn(this, '__defaultOption')) { + var optList = []; + var Class = this.constructor; + while (Class) { + var opt = Class.prototype.defaultOption; + opt && optList.push(opt); + Class = Class.superClass; + } + + var defaultOption = {}; + for (var i = optList.length - 1; i >= 0; i--) { + defaultOption = zrUtil.merge(defaultOption, optList[i], true); + } + clazzUtil.set(this, '__defaultOption', defaultOption); + } + return clazzUtil.get(this, '__defaultOption'); + }, + + getReferringComponents: function (mainType) { + return this.ecModel.queryComponents({ + mainType: mainType, + index: this.get(mainType + 'Index', true), + id: this.get(mainType + 'Id', true) + }); + } + + }); + + // Reset ComponentModel.extend, add preConstruct. + // clazzUtil.enableClassExtend( + // ComponentModel, + // function (option, parentModel, ecModel, extraOpt) { + // // Set dependentModels, componentIndex, name, id, mainType, subType. + // zrUtil.extend(this, extraOpt); + + // this.uid = componentUtil.getUID('componentModel'); + + // // this.setReadOnly([ + // // 'type', 'id', 'uid', 'name', 'mainType', 'subType', + // // 'dependentModels', 'componentIndex' + // // ]); + // } + // ); + + // Add capability of registerClass, getClass, hasClass, registerSubTypeDefaulter and so on. + clazzUtil.enableClassManagement( + ComponentModel, {registerWhenExtend: true} + ); + componentUtil.enableSubTypeDefaulter(ComponentModel); + + // Add capability of ComponentModel.topologicalTravel. + componentUtil.enableTopologicalTravel(ComponentModel, getDependencies); + + function getDependencies(componentType) { + var deps = []; + zrUtil.each(ComponentModel.getClassesByMainType(componentType), function (Clazz) { + arrayPush.apply(deps, Clazz.prototype.dependencies || []); + }); + // Ensure main type + return zrUtil.map(deps, function (type) { + return clazzUtil.parseClassType(type).main; + }); + } + + zrUtil.mixin(ComponentModel, __webpack_require__(72)); + + module.exports = ComponentModel; + + +/***/ }, +/* 70 */ +/***/ function(module, exports, __webpack_require__) { + + + + var zrUtil = __webpack_require__(4); + var clazz = __webpack_require__(13); + + var parseClassType = clazz.parseClassType; + + var base = 0; + + var componentUtil = {}; + + var DELIMITER = '_'; + + /** + * @public + * @param {string} type + * @return {string} + */ + componentUtil.getUID = function (type) { + // Considering the case of crossing js context, + // use Math.random to make id as unique as possible. + return [(type || ''), base++, Math.random()].join(DELIMITER); + }; + + /** + * @inner + */ + componentUtil.enableSubTypeDefaulter = function (entity) { + + var subTypeDefaulters = {}; + + entity.registerSubTypeDefaulter = function (componentType, defaulter) { + componentType = parseClassType(componentType); + subTypeDefaulters[componentType.main] = defaulter; + }; + + entity.determineSubType = function (componentType, option) { + var type = option.type; + if (!type) { + var componentTypeMain = parseClassType(componentType).main; + if (entity.hasSubTypes(componentType) && subTypeDefaulters[componentTypeMain]) { + type = subTypeDefaulters[componentTypeMain](option); + } + } + return type; + }; + + return entity; + }; + + /** + * Topological travel on Activity Network (Activity On Vertices). + * Dependencies is defined in Model.prototype.dependencies, like ['xAxis', 'yAxis']. + * + * If 'xAxis' or 'yAxis' is absent in componentTypeList, just ignore it in topology. + * + * If there is circle dependencey, Error will be thrown. + * + */ + componentUtil.enableTopologicalTravel = function (entity, dependencyGetter) { + + /** + * @public + * @param {Array.} targetNameList Target Component type list. + * Can be ['aa', 'bb', 'aa.xx'] + * @param {Array.} fullNameList By which we can build dependency graph. + * @param {Function} callback Params: componentType, dependencies. + * @param {Object} context Scope of callback. + */ + entity.topologicalTravel = function (targetNameList, fullNameList, callback, context) { + if (!targetNameList.length) { + return; + } + + var result = makeDepndencyGraph(fullNameList); + var graph = result.graph; + var stack = result.noEntryList; + + var targetNameSet = {}; + zrUtil.each(targetNameList, function (name) { + targetNameSet[name] = true; + }); + + while (stack.length) { + var currComponentType = stack.pop(); + var currVertex = graph[currComponentType]; + var isInTargetNameSet = !!targetNameSet[currComponentType]; + if (isInTargetNameSet) { + callback.call(context, currComponentType, currVertex.originalDeps.slice()); + delete targetNameSet[currComponentType]; + } + zrUtil.each( + currVertex.successor, + isInTargetNameSet ? removeEdgeAndAdd : removeEdge + ); + } + + zrUtil.each(targetNameSet, function () { + throw new Error('Circle dependency may exists'); + }); + + function removeEdge(succComponentType) { + graph[succComponentType].entryCount--; + if (graph[succComponentType].entryCount === 0) { + stack.push(succComponentType); + } + } + + // Consider this case: legend depends on series, and we call + // chart.setOption({series: [...]}), where only series is in option. + // If we do not have 'removeEdgeAndAdd', legendModel.mergeOption will + // not be called, but only sereis.mergeOption is called. Thus legend + // have no chance to update its local record about series (like which + // name of series is available in legend). + function removeEdgeAndAdd(succComponentType) { + targetNameSet[succComponentType] = true; + removeEdge(succComponentType); + } + }; + + /** + * DepndencyGraph: {Object} + * key: conponentType, + * value: { + * successor: [conponentTypes...], + * originalDeps: [conponentTypes...], + * entryCount: {number} + * } + */ + function makeDepndencyGraph(fullNameList) { + var graph = {}; + var noEntryList = []; + + zrUtil.each(fullNameList, function (name) { + + var thisItem = createDependencyGraphItem(graph, name); + var originalDeps = thisItem.originalDeps = dependencyGetter(name); + + var availableDeps = getAvailableDependencies(originalDeps, fullNameList); + thisItem.entryCount = availableDeps.length; + if (thisItem.entryCount === 0) { + noEntryList.push(name); + } + + zrUtil.each(availableDeps, function (dependentName) { + if (zrUtil.indexOf(thisItem.predecessor, dependentName) < 0) { + thisItem.predecessor.push(dependentName); + } + var thatItem = createDependencyGraphItem(graph, dependentName); + if (zrUtil.indexOf(thatItem.successor, dependentName) < 0) { + thatItem.successor.push(name); + } + }); + }); + + return {graph: graph, noEntryList: noEntryList}; + } + + function createDependencyGraphItem(graph, name) { + if (!graph[name]) { + graph[name] = {predecessor: [], successor: []}; + } + return graph[name]; + } + + function getAvailableDependencies(originalDeps, fullNameList) { + var availableDeps = []; + zrUtil.each(originalDeps, function (dep) { + zrUtil.indexOf(fullNameList, dep) >= 0 && availableDeps.push(dep); + }); + return availableDeps; + } + }; + + module.exports = componentUtil; + + +/***/ }, +/* 71 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + // Layout helpers for each component positioning + + + var zrUtil = __webpack_require__(4); + var BoundingRect = __webpack_require__(9); + var numberUtil = __webpack_require__(7); + var formatUtil = __webpack_require__(6); + var parsePercent = numberUtil.parsePercent; + var each = zrUtil.each; + + var layout = {}; + + /** + * @public + */ + var LOCATION_PARAMS = layout.LOCATION_PARAMS = [ + 'left', 'right', 'top', 'bottom', 'width', 'height' + ]; + + /** + * @public + */ + var HV_NAMES = layout.HV_NAMES = [ + ['width', 'left', 'right'], + ['height', 'top', 'bottom'] + ]; + + function boxLayout(orient, group, gap, maxWidth, maxHeight) { + var x = 0; + var y = 0; + if (maxWidth == null) { + maxWidth = Infinity; + } + if (maxHeight == null) { + maxHeight = Infinity; + } + var currentLineMaxSize = 0; + group.eachChild(function (child, idx) { + var position = child.position; + var rect = child.getBoundingRect(); + var nextChild = group.childAt(idx + 1); + var nextChildRect = nextChild && nextChild.getBoundingRect(); + var nextX; + var nextY; + if (orient === 'horizontal') { + var moveX = rect.width + (nextChildRect ? (-nextChildRect.x + rect.x) : 0); + nextX = x + moveX; + // Wrap when width exceeds maxWidth or meet a `newline` group + if (nextX > maxWidth || child.newline) { + x = 0; + nextX = moveX; + y += currentLineMaxSize + gap; + currentLineMaxSize = rect.height; + } + else { + currentLineMaxSize = Math.max(currentLineMaxSize, rect.height); + } + } + else { + var moveY = rect.height + (nextChildRect ? (-nextChildRect.y + rect.y) : 0); + nextY = y + moveY; + // Wrap when width exceeds maxHeight or meet a `newline` group + if (nextY > maxHeight || child.newline) { + x += currentLineMaxSize + gap; + y = 0; + nextY = moveY; + currentLineMaxSize = rect.width; + } + else { + currentLineMaxSize = Math.max(currentLineMaxSize, rect.width); + } + } + + if (child.newline) { + return; + } + + position[0] = x; + position[1] = y; + + orient === 'horizontal' + ? (x = nextX + gap) + : (y = nextY + gap); + }); + } + + /** + * VBox or HBox layouting + * @param {string} orient + * @param {module:zrender/container/Group} group + * @param {number} gap + * @param {number} [width=Infinity] + * @param {number} [height=Infinity] + */ + layout.box = boxLayout; + + /** + * VBox layouting + * @param {module:zrender/container/Group} group + * @param {number} gap + * @param {number} [width=Infinity] + * @param {number} [height=Infinity] + */ + layout.vbox = zrUtil.curry(boxLayout, 'vertical'); + + /** + * HBox layouting + * @param {module:zrender/container/Group} group + * @param {number} gap + * @param {number} [width=Infinity] + * @param {number} [height=Infinity] + */ + layout.hbox = zrUtil.curry(boxLayout, 'horizontal'); + + /** + * If x or x2 is not specified or 'center' 'left' 'right', + * the width would be as long as possible. + * If y or y2 is not specified or 'middle' 'top' 'bottom', + * the height would be as long as possible. + * + * @param {Object} positionInfo + * @param {number|string} [positionInfo.x] + * @param {number|string} [positionInfo.y] + * @param {number|string} [positionInfo.x2] + * @param {number|string} [positionInfo.y2] + * @param {Object} containerRect + * @param {string|number} margin + * @return {Object} {width, height} + */ + layout.getAvailableSize = function (positionInfo, containerRect, margin) { + var containerWidth = containerRect.width; + var containerHeight = containerRect.height; + + var x = parsePercent(positionInfo.x, containerWidth); + var y = parsePercent(positionInfo.y, containerHeight); + var x2 = parsePercent(positionInfo.x2, containerWidth); + var y2 = parsePercent(positionInfo.y2, containerHeight); + + (isNaN(x) || isNaN(parseFloat(positionInfo.x))) && (x = 0); + (isNaN(x2) || isNaN(parseFloat(positionInfo.x2))) && (x2 = containerWidth); + (isNaN(y) || isNaN(parseFloat(positionInfo.y))) && (y = 0); + (isNaN(y2) || isNaN(parseFloat(positionInfo.y2))) && (y2 = containerHeight); + + margin = formatUtil.normalizeCssArray(margin || 0); + + return { + width: Math.max(x2 - x - margin[1] - margin[3], 0), + height: Math.max(y2 - y - margin[0] - margin[2], 0) + }; + }; + + /** + * Parse position info. + * + * @param {Object} positionInfo + * @param {number|string} [positionInfo.left] + * @param {number|string} [positionInfo.top] + * @param {number|string} [positionInfo.right] + * @param {number|string} [positionInfo.bottom] + * @param {number|string} [positionInfo.width] + * @param {number|string} [positionInfo.height] + * @param {number|string} [positionInfo.aspect] Aspect is width / height + * @param {Object} containerRect + * @param {string|number} [margin] + * + * @return {module:zrender/core/BoundingRect} + */ + layout.getLayoutRect = function ( + positionInfo, containerRect, margin + ) { + margin = formatUtil.normalizeCssArray(margin || 0); + + var containerWidth = containerRect.width; + var containerHeight = containerRect.height; + + var left = parsePercent(positionInfo.left, containerWidth); + var top = parsePercent(positionInfo.top, containerHeight); + var right = parsePercent(positionInfo.right, containerWidth); + var bottom = parsePercent(positionInfo.bottom, containerHeight); + var width = parsePercent(positionInfo.width, containerWidth); + var height = parsePercent(positionInfo.height, containerHeight); + + var verticalMargin = margin[2] + margin[0]; + var horizontalMargin = margin[1] + margin[3]; + var aspect = positionInfo.aspect; + + // If width is not specified, calculate width from left and right + if (isNaN(width)) { + width = containerWidth - right - horizontalMargin - left; + } + if (isNaN(height)) { + height = containerHeight - bottom - verticalMargin - top; + } + + // If width and height are not given + // 1. Graph should not exceeds the container + // 2. Aspect must be keeped + // 3. Graph should take the space as more as possible + if (isNaN(width) && isNaN(height)) { + if (aspect > containerWidth / containerHeight) { + width = containerWidth * 0.8; + } + else { + height = containerHeight * 0.8; + } + } + + if (aspect != null) { + // Calculate width or height with given aspect + if (isNaN(width)) { + width = aspect * height; + } + if (isNaN(height)) { + height = width / aspect; + } + } + + // If left is not specified, calculate left from right and width + if (isNaN(left)) { + left = containerWidth - right - width - horizontalMargin; + } + if (isNaN(top)) { + top = containerHeight - bottom - height - verticalMargin; + } + + // Align left and top + switch (positionInfo.left || positionInfo.right) { + case 'center': + left = containerWidth / 2 - width / 2 - margin[3]; + break; + case 'right': + left = containerWidth - width - horizontalMargin; + break; + } + switch (positionInfo.top || positionInfo.bottom) { + case 'middle': + case 'center': + top = containerHeight / 2 - height / 2 - margin[0]; + break; + case 'bottom': + top = containerHeight - height - verticalMargin; + break; + } + // If something is wrong and left, top, width, height are calculated as NaN + left = left || 0; + top = top || 0; + if (isNaN(width)) { + // Width may be NaN if only one value is given except width + width = containerWidth - left - (right || 0); + } + if (isNaN(height)) { + // Height may be NaN if only one value is given except height + height = containerHeight - top - (bottom || 0); + } + + var rect = new BoundingRect(left + margin[3], top + margin[0], width, height); + rect.margin = margin; + return rect; + }; + + + /** + * Position a zr element in viewport + * Group position is specified by either + * {left, top}, {right, bottom} + * If all properties exists, right and bottom will be igonred. + * + * Logic: + * 1. Scale (against origin point in parent coord) + * 2. Rotate (against origin point in parent coord) + * 3. Traslate (with el.position by this method) + * So this method only fixes the last step 'Traslate', which does not affect + * scaling and rotating. + * + * If be called repeatly with the same input el, the same result will be gotten. + * + * @param {module:zrender/Element} el Should have `getBoundingRect` method. + * @param {Object} positionInfo + * @param {number|string} [positionInfo.left] + * @param {number|string} [positionInfo.top] + * @param {number|string} [positionInfo.right] + * @param {number|string} [positionInfo.bottom] + * @param {Object} containerRect + * @param {string|number} margin + * @param {Object} [opt] + * @param {Array.} [opt.hv=[1,1]] Only horizontal or only vertical. + * @param {Array.} [opt.boundingMode='all'] + * Specify how to calculate boundingRect when locating. + * 'all': Position the boundingRect that is transformed and uioned + * both itself and its descendants. + * This mode simplies confine the elements in the bounding + * of their container (e.g., using 'right: 0'). + * 'raw': Position the boundingRect that is not transformed and only itself. + * This mode is useful when you want a element can overflow its + * container. (Consider a rotated circle needs to be located in a corner.) + * In this mode positionInfo.width/height can only be number. + */ + layout.positionElement = function (el, positionInfo, containerRect, margin, opt) { + var h = !opt || !opt.hv || opt.hv[0]; + var v = !opt || !opt.hv || opt.hv[1]; + var boundingMode = opt && opt.boundingMode || 'all'; + + if (!h && !v) { + return; + } + + var rect; + if (boundingMode === 'raw') { + rect = el.type === 'group' + ? new BoundingRect(0, 0, +positionInfo.width || 0, +positionInfo.height || 0) + : el.getBoundingRect(); + } + else { + rect = el.getBoundingRect(); + if (el.needLocalTransform()) { + var transform = el.getLocalTransform(); + // Notice: raw rect may be inner object of el, + // which should not be modified. + rect = rect.clone(); + rect.applyTransform(transform); + } + } + + positionInfo = layout.getLayoutRect( + zrUtil.defaults( + {width: rect.width, height: rect.height}, + positionInfo + ), + containerRect, + margin + ); + + // Because 'tranlate' is the last step in transform + // (see zrender/core/Transformable#getLocalTransfrom), + // we can just only modify el.position to get final result. + var elPos = el.position; + var dx = h ? positionInfo.x - rect.x : 0; + var dy = v ? positionInfo.y - rect.y : 0; + + el.attr('position', boundingMode === 'raw' ? [dx, dy] : [elPos[0] + dx, elPos[1] + dy]); + }; + + /** + * @param {Object} option Contains some of the properties in HV_NAMES. + * @param {number} hvIdx 0: horizontal; 1: vertical. + */ + layout.sizeCalculable = function (option, hvIdx) { + return option[HV_NAMES[hvIdx][0]] != null + || (option[HV_NAMES[hvIdx][1]] != null && option[HV_NAMES[hvIdx][2]] != null); + }; + + /** + * Consider Case: + * When defulat option has {left: 0, width: 100}, and we set {right: 0} + * through setOption or media query, using normal zrUtil.merge will cause + * {right: 0} does not take effect. + * + * @example + * ComponentModel.extend({ + * init: function () { + * ... + * var inputPositionParams = layout.getLayoutParams(option); + * this.mergeOption(inputPositionParams); + * }, + * mergeOption: function (newOption) { + * newOption && zrUtil.merge(thisOption, newOption, true); + * layout.mergeLayoutParam(thisOption, newOption); + * } + * }); + * + * @param {Object} targetOption + * @param {Object} newOption + * @param {Object|string} [opt] + * @param {boolean|Array.} [opt.ignoreSize=false] Some component must has width and height. + */ + layout.mergeLayoutParam = function (targetOption, newOption, opt) { + !zrUtil.isObject(opt) && (opt = {}); + + var ignoreSize = opt.ignoreSize; + !zrUtil.isArray(ignoreSize) && (ignoreSize = [ignoreSize, ignoreSize]); + + var hResult = merge(HV_NAMES[0], 0); + var vResult = merge(HV_NAMES[1], 1); + + copy(HV_NAMES[0], targetOption, hResult); + copy(HV_NAMES[1], targetOption, vResult); + + function merge(names, hvIdx) { + var newParams = {}; + var newValueCount = 0; + var merged = {}; + var mergedValueCount = 0; + var enoughParamNumber = 2; + + each(names, function (name) { + merged[name] = targetOption[name]; + }); + each(names, function (name) { + // Consider case: newOption.width is null, which is + // set by user for removing width setting. + hasProp(newOption, name) && (newParams[name] = merged[name] = newOption[name]); + hasValue(newParams, name) && newValueCount++; + hasValue(merged, name) && mergedValueCount++; + }); + + if (ignoreSize[hvIdx]) { + // Only one of left/right is premitted to exist. + if (hasValue(newOption, names[1])) { + merged[names[2]] = null; + } + else if (hasValue(newOption, names[2])) { + merged[names[1]] = null; + } + return merged; + } + + // Case: newOption: {width: ..., right: ...}, + // or targetOption: {right: ...} and newOption: {width: ...}, + // There is no conflict when merged only has params count + // little than enoughParamNumber. + if (mergedValueCount === enoughParamNumber || !newValueCount) { + return merged; + } + // Case: newOption: {width: ..., right: ...}, + // Than we can make sure user only want those two, and ignore + // all origin params in targetOption. + else if (newValueCount >= enoughParamNumber) { + return newParams; + } + else { + // Chose another param from targetOption by priority. + for (var i = 0; i < names.length; i++) { + var name = names[i]; + if (!hasProp(newParams, name) && hasProp(targetOption, name)) { + newParams[name] = targetOption[name]; + break; + } + } + return newParams; + } + } + + function hasProp(obj, name) { + return obj.hasOwnProperty(name); + } + + function hasValue(obj, name) { + return obj[name] != null && obj[name] !== 'auto'; + } + + function copy(names, target, source) { + each(names, function (name) { + target[name] = source[name]; + }); + } + }; + + /** + * Retrieve 'left', 'right', 'top', 'bottom', 'width', 'height' from object. + * @param {Object} source + * @return {Object} Result contains those props. + */ + layout.getLayoutParams = function (source) { + return layout.copyLayoutParams({}, source); + }; + + /** + * Retrieve 'left', 'right', 'top', 'bottom', 'width', 'height' from object. + * @param {Object} source + * @return {Object} Result contains those props. + */ + layout.copyLayoutParams = function (target, source) { + source && target && each(LOCATION_PARAMS, function (name) { + source.hasOwnProperty(name) && (target[name] = source[name]); + }); + return target; + }; + + module.exports = layout; + + + +/***/ }, +/* 72 */ +/***/ function(module, exports) { + + + + module.exports = { + getBoxLayoutParams: function () { + return { + left: this.get('left'), + top: this.get('top'), + right: this.get('right'), + bottom: this.get('bottom'), + width: this.get('width'), + height: this.get('height') + }; + } + }; + + +/***/ }, +/* 73 */ +/***/ function(module, exports) { + + + var platform = ''; + // Navigator not exists in node + if (typeof navigator !== 'undefined') { + platform = navigator.platform || ''; + } + module.exports = { + // 全图默认背景 + // backgroundColor: 'rgba(0,0,0,0)', + + // https://dribbble.com/shots/1065960-Infographic-Pie-chart-visualization + // color: ['#5793f3', '#d14a61', '#fd9c35', '#675bba', '#fec42c', '#dd4444', '#d4df5a', '#cd4870'], + // 浅色 + // color: ['#bcd3bb', '#e88f70', '#edc1a5', '#9dc5c8', '#e1e8c8', '#7b7c68', '#e5b5b5', '#f0b489', '#928ea8', '#bda29a'], + // color: ['#cc5664', '#9bd6ec', '#ea946e', '#8acaaa', '#f1ec64', '#ee8686', '#a48dc1', '#5da6bc', '#b9dcae'], + // 深色 + color: ['#c23531','#2f4554', '#61a0a8', '#d48265', '#91c7ae','#749f83', '#ca8622', '#bda29a','#6e7074', '#546570', '#c4ccd3'], + + // 默认需要 Grid 配置项 + // grid: {}, + // 主题,主题 + textStyle: { + // color: '#000', + // decoration: 'none', + // PENDING + fontFamily: platform.match(/^Win/) ? 'Microsoft YaHei' : 'sans-serif', + // fontFamily: 'Arial, Verdana, sans-serif', + fontSize: 12, + fontStyle: 'normal', + fontWeight: 'normal' + }, + + // http://blogs.adobe.com/webplatform/2014/02/24/using-blend-modes-in-html-canvas/ + // https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/globalCompositeOperation + // Default is source-over + blendMode: null, + + animation: 'auto', + animationDuration: 1000, + animationDurationUpdate: 300, + animationEasing: 'exponentialOut', + animationEasingUpdate: 'cubicOut', + + animationThreshold: 2000, + // Configuration for progressive/incremental rendering + progressiveThreshold: 3000, + progressive: 400, + + // Threshold of if use single hover layer to optimize. + // It is recommended that `hoverLayerThreshold` is equivalent to or less than + // `progressiveThreshold`, otherwise hover will cause restart of progressive, + // which is unexpected. + // see example . + hoverLayerThreshold: 3000, + + // See: module:echarts/scale/Time + useUTC: false + }; + + +/***/ }, +/* 74 */ +/***/ function(module, exports, __webpack_require__) { + + + + var classUtil = __webpack_require__(13); + var set = classUtil.set; + var get = classUtil.get; + + module.exports = { + clearColorPalette: function () { + set(this, 'colorIdx', 0); + set(this, 'colorNameMap', {}); + }, + + getColorFromPalette: function (name, scope) { + scope = scope || this; + var colorIdx = get(scope, 'colorIdx') || 0; + var colorNameMap = get(scope, 'colorNameMap') || set(scope, 'colorNameMap', {}); + // Use `hasOwnProperty` to avoid conflict with Object.prototype. + if (colorNameMap.hasOwnProperty(name)) { + return colorNameMap[name]; + } + var colorPalette = this.get('color', true) || []; + if (!colorPalette.length) { + return; + } + + var color = colorPalette[colorIdx]; + if (name) { + colorNameMap[name] = color; + } + set(scope, 'colorIdx', (colorIdx + 1) % colorPalette.length); + + return color; + } + }; + + +/***/ }, +/* 75 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + + var zrUtil = __webpack_require__(4); + + var 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 + + function ExtensionAPI(chartInstance) { + zrUtil.each(echartsAPIList, function (name) { + this[name] = zrUtil.bind(chartInstance[name], chartInstance); + }, this); + } + + module.exports = ExtensionAPI; + + +/***/ }, +/* 76 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + + var zrUtil = __webpack_require__(4); + + var coordinateSystemCreators = {}; + + function CoordinateSystemManager() { + + this._coordinateSystems = []; + } + + CoordinateSystemManager.prototype = { + + constructor: CoordinateSystemManager, + + create: function (ecModel, api) { + var coordinateSystems = []; + zrUtil.each(coordinateSystemCreators, function (creater, type) { + var list = creater.create(ecModel, api); + coordinateSystems = coordinateSystems.concat(list || []); + }); + + this._coordinateSystems = coordinateSystems; + }, + + update: function (ecModel, api) { + zrUtil.each(this._coordinateSystems, function (coordSys) { + // FIXME MUST have + coordSys.update && coordSys.update(ecModel, api); + }); + }, + + getCoordinateSystems: function () { + return this._coordinateSystems.slice(); + } + }; + + CoordinateSystemManager.register = function (type, coordinateSystemCreator) { + coordinateSystemCreators[type] = coordinateSystemCreator; + }; + + CoordinateSystemManager.get = function (type) { + return coordinateSystemCreators[type]; + }; + + module.exports = CoordinateSystemManager; + + +/***/ }, +/* 77 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * ECharts option manager + * + * @module {echarts/model/OptionManager} + */ + + + + var zrUtil = __webpack_require__(4); + var modelUtil = __webpack_require__(5); + var ComponentModel = __webpack_require__(69); + var each = zrUtil.each; + var clone = zrUtil.clone; + var map = zrUtil.map; + var merge = zrUtil.merge; + + var QUERY_REG = /^(min|max)?(.+)$/; + + /** + * TERM EXPLANATIONS: + * + * [option]: + * + * An object that contains definitions of components. For example: + * var option = { + * title: {...}, + * legend: {...}, + * visualMap: {...}, + * series: [ + * {data: [...]}, + * {data: [...]}, + * ... + * ] + * }; + * + * [rawOption]: + * + * An object input to echarts.setOption. 'rawOption' may be an + * 'option', or may be an object contains multi-options. For example: + * var option = { + * baseOption: { + * title: {...}, + * legend: {...}, + * series: [ + * {data: [...]}, + * {data: [...]}, + * ... + * ] + * }, + * timeline: {...}, + * options: [ + * {title: {...}, series: {data: [...]}}, + * {title: {...}, series: {data: [...]}}, + * ... + * ], + * media: [ + * { + * query: {maxWidth: 320}, + * option: {series: {x: 20}, visualMap: {show: false}} + * }, + * { + * query: {minWidth: 320, maxWidth: 720}, + * option: {series: {x: 500}, visualMap: {show: true}} + * }, + * { + * option: {series: {x: 1200}, visualMap: {show: true}} + * } + * ] + * }; + * + * @alias module:echarts/model/OptionManager + * @param {module:echarts/ExtensionAPI} api + */ + function OptionManager(api) { + + /** + * @private + * @type {module:echarts/ExtensionAPI} + */ + this._api = api; + + /** + * @private + * @type {Array.} + */ + this._timelineOptions = []; + + /** + * @private + * @type {Array.} + */ + this._mediaList = []; + + /** + * @private + * @type {Object} + */ + this._mediaDefault; + + /** + * -1, means default. + * empty means no media. + * @private + * @type {Array.} + */ + this._currentMediaIndices = []; + + /** + * @private + * @type {Object} + */ + this._optionBackup; + + /** + * @private + * @type {Object} + */ + this._newBaseOption; + } + + // timeline.notMerge is not supported in ec3. Firstly there is rearly + // case that notMerge is needed. Secondly supporting 'notMerge' requires + // rawOption cloned and backuped when timeline changed, which does no + // good to performance. What's more, that both timeline and setOption + // method supply 'notMerge' brings complex and some problems. + // Consider this case: + // (step1) chart.setOption({timeline: {notMerge: false}, ...}, false); + // (step2) chart.setOption({timeline: {notMerge: true}, ...}, false); + + OptionManager.prototype = { + + constructor: OptionManager, + + /** + * @public + * @param {Object} rawOption Raw option. + * @param {module:echarts/model/Global} ecModel + * @param {Array.} optionPreprocessorFuncs + * @return {Object} Init option + */ + setOption: function (rawOption, optionPreprocessorFuncs) { + rawOption = clone(rawOption, true); + + // FIXME + // 如果 timeline options 或者 media 中设置了某个属性,而baseOption中没有设置,则进行警告。 + + var oldOptionBackup = this._optionBackup; + var newParsedOption = parseRawOption.call( + this, rawOption, optionPreprocessorFuncs, !oldOptionBackup + ); + this._newBaseOption = newParsedOption.baseOption; + + // For setOption at second time (using merge mode); + if (oldOptionBackup) { + // Only baseOption can be merged. + mergeOption(oldOptionBackup.baseOption, newParsedOption.baseOption); + + // For simplicity, timeline options and media options do not support merge, + // that is, if you `setOption` twice and both has timeline options, the latter + // timeline opitons will not be merged to the formers, but just substitude them. + if (newParsedOption.timelineOptions.length) { + oldOptionBackup.timelineOptions = newParsedOption.timelineOptions; + } + if (newParsedOption.mediaList.length) { + oldOptionBackup.mediaList = newParsedOption.mediaList; + } + if (newParsedOption.mediaDefault) { + oldOptionBackup.mediaDefault = newParsedOption.mediaDefault; + } + } + else { + this._optionBackup = newParsedOption; + } + }, + + /** + * @param {boolean} isRecreate + * @return {Object} + */ + mountOption: function (isRecreate) { + var optionBackup = this._optionBackup; + + // TODO + // 如果没有reset功能则不clone。 + + this._timelineOptions = map(optionBackup.timelineOptions, clone); + this._mediaList = map(optionBackup.mediaList, clone); + this._mediaDefault = clone(optionBackup.mediaDefault); + this._currentMediaIndices = []; + + return clone(isRecreate + // this._optionBackup.baseOption, which is created at the first `setOption` + // called, and is merged into every new option by inner method `mergeOption` + // each time `setOption` called, can be only used in `isRecreate`, because + // its reliability is under suspicion. In other cases option merge is + // performed by `model.mergeOption`. + ? optionBackup.baseOption : this._newBaseOption + ); + }, + + /** + * @param {module:echarts/model/Global} ecModel + * @return {Object} + */ + getTimelineOption: function (ecModel) { + var option; + var timelineOptions = this._timelineOptions; + + if (timelineOptions.length) { + // getTimelineOption can only be called after ecModel inited, + // so we can get currentIndex from timelineModel. + var timelineModel = ecModel.getComponent('timeline'); + if (timelineModel) { + option = clone( + timelineOptions[timelineModel.getCurrentIndex()], + true + ); + } + } + + return option; + }, + + /** + * @param {module:echarts/model/Global} ecModel + * @return {Array.} + */ + getMediaOption: function (ecModel) { + var ecWidth = this._api.getWidth(); + var ecHeight = this._api.getHeight(); + var mediaList = this._mediaList; + var mediaDefault = this._mediaDefault; + var indices = []; + var result = []; + + // No media defined. + if (!mediaList.length && !mediaDefault) { + return result; + } + + // Multi media may be applied, the latter defined media has higher priority. + for (var i = 0, len = mediaList.length; i < len; i++) { + if (applyMediaQuery(mediaList[i].query, ecWidth, ecHeight)) { + indices.push(i); + } + } + + // FIXME + // 是否mediaDefault应该强制用户设置,否则可能修改不能回归。 + if (!indices.length && mediaDefault) { + indices = [-1]; + } + + if (indices.length && !indicesEquals(indices, this._currentMediaIndices)) { + result = map(indices, function (index) { + return clone( + index === -1 ? mediaDefault.option : mediaList[index].option + ); + }); + } + // Otherwise return nothing. + + this._currentMediaIndices = indices; + + return result; + } + }; + + function parseRawOption(rawOption, optionPreprocessorFuncs, isNew) { + var timelineOptions = []; + var mediaList = []; + var mediaDefault; + var baseOption; + + // Compatible with ec2. + var timelineOpt = rawOption.timeline; + + if (rawOption.baseOption) { + baseOption = rawOption.baseOption; + } + + // For timeline + if (timelineOpt || rawOption.options) { + baseOption = baseOption || {}; + timelineOptions = (rawOption.options || []).slice(); + } + + // For media query + if (rawOption.media) { + baseOption = baseOption || {}; + var media = rawOption.media; + each(media, function (singleMedia) { + if (singleMedia && singleMedia.option) { + if (singleMedia.query) { + mediaList.push(singleMedia); + } + else if (!mediaDefault) { + // Use the first media default. + mediaDefault = singleMedia; + } + } + }); + } + + // For normal option + if (!baseOption) { + baseOption = rawOption; + } + + // Set timelineOpt to baseOption in ec3, + // which is convenient for merge option. + if (!baseOption.timeline) { + baseOption.timeline = timelineOpt; + } + + // Preprocess. + each([baseOption].concat(timelineOptions) + .concat(zrUtil.map(mediaList, function (media) { + return media.option; + })), + function (option) { + each(optionPreprocessorFuncs, function (preProcess) { + preProcess(option, isNew); + }); + } + ); + + return { + baseOption: baseOption, + timelineOptions: timelineOptions, + mediaDefault: mediaDefault, + mediaList: mediaList + }; + } + + /** + * @see + * Support: width, height, aspectRatio + * Can use max or min as prefix. + */ + function applyMediaQuery(query, ecWidth, ecHeight) { + var realMap = { + width: ecWidth, + height: ecHeight, + aspectratio: ecWidth / ecHeight // lowser case for convenientce. + }; + + var applicatable = true; + + zrUtil.each(query, function (value, attr) { + var matched = attr.match(QUERY_REG); + + if (!matched || !matched[1] || !matched[2]) { + return; + } + + var operator = matched[1]; + var realAttr = matched[2].toLowerCase(); + + if (!compare(realMap[realAttr], value, operator)) { + applicatable = false; + } + }); + + return applicatable; + } + + function compare(real, expect, operator) { + if (operator === 'min') { + return real >= expect; + } + else if (operator === 'max') { + return real <= expect; + } + else { // Equals + return real === expect; + } + } + + function indicesEquals(indices1, indices2) { + // indices is always order by asc and has only finite number. + return indices1.join(',') === indices2.join(','); + } + + /** + * Consider case: + * `chart.setOption(opt1);` + * Then user do some interaction like dataZoom, dataView changing. + * `chart.setOption(opt2);` + * Then user press 'reset button' in toolbox. + * + * After doing that all of the interaction effects should be reset, the + * chart should be the same as the result of invoke + * `chart.setOption(opt1); chart.setOption(opt2);`. + * + * Although it is not able ensure that + * `chart.setOption(opt1); chart.setOption(opt2);` is equivalents to + * `chart.setOption(merge(opt1, opt2));` exactly, + * this might be the only simple way to implement that feature. + * + * MEMO: We've considered some other approaches: + * 1. Each model handle its self restoration but not uniform treatment. + * (Too complex in logic and error-prone) + * 2. Use a shadow ecModel. (Performace expensive) + */ + function mergeOption(oldOption, newOption) { + newOption = newOption || {}; + + each(newOption, function (newCptOpt, mainType) { + if (newCptOpt == null) { + return; + } + + var oldCptOpt = oldOption[mainType]; + + if (!ComponentModel.hasClass(mainType)) { + oldOption[mainType] = merge(oldCptOpt, newCptOpt, true); + } + else { + newCptOpt = modelUtil.normalizeToArray(newCptOpt); + oldCptOpt = modelUtil.normalizeToArray(oldCptOpt); + + var mapResult = modelUtil.mappingToExists(oldCptOpt, newCptOpt); + + oldOption[mainType] = map(mapResult, function (item) { + return (item.option && item.exist) + ? merge(item.exist, item.option, true) + : (item.exist || item.option); + }); + } + }); + } + + module.exports = OptionManager; + + +/***/ }, +/* 78 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + + var zrUtil = __webpack_require__(4); + var formatUtil = __webpack_require__(6); + var classUtil = __webpack_require__(13); + var modelUtil = __webpack_require__(5); + var ComponentModel = __webpack_require__(69); + var colorPaletteMixin = __webpack_require__(74); + var env = __webpack_require__(2); + var layout = __webpack_require__(71); + + var set = classUtil.set; + var get = classUtil.get; + var encodeHTML = formatUtil.encodeHTML; + var addCommas = formatUtil.addCommas; + + var SeriesModel = ComponentModel.extend({ + + type: 'series.__base__', + + /** + * @readOnly + */ + seriesIndex: 0, + + // coodinateSystem will be injected in the echarts/CoordinateSystem + coordinateSystem: null, + + /** + * @type {Object} + * @protected + */ + defaultOption: null, + + /** + * Data provided for legend + * @type {Function} + */ + // PENDING + legendDataProvider: null, + + /** + * Access path of color for visual + */ + visualColorAccessPath: 'itemStyle.normal.color', + + /** + * Support merge layout params. + * Only support 'box' now (left/right/top/bottom/width/height). + * @type {string|Object} Object can be {ignoreSize: true} + * @readOnly + */ + layoutMode: null, + + init: function (option, parentModel, ecModel, extraOpt) { + + /** + * @type {number} + * @readOnly + */ + this.seriesIndex = this.componentIndex; + + this.mergeDefaultAndTheme(option, ecModel); + + var data = this.getInitialData(option, ecModel); + if (true) { + zrUtil.assert(data, 'getInitialData returned invalid data.'); + } + /** + * @type {module:echarts/data/List|module:echarts/data/Tree|module:echarts/data/Graph} + * @private + */ + set(this, 'dataBeforeProcessed', data); + + // If we reverse the order (make data firstly, and then make + // dataBeforeProcessed by cloneShallow), cloneShallow will + // cause data.graph.data !== data when using + // module:echarts/data/Graph or module:echarts/data/Tree. + // See module:echarts/data/helper/linkList + this.restoreData(); + }, + + /** + * Util for merge default and theme to option + * @param {Object} option + * @param {module:echarts/model/Global} ecModel + */ + mergeDefaultAndTheme: function (option, ecModel) { + var layoutMode = this.layoutMode; + var inputPositionParams = layoutMode + ? layout.getLayoutParams(option) : {}; + + zrUtil.merge( + option, + ecModel.getTheme().get(this.subType) + ); + zrUtil.merge(option, this.getDefaultOption()); + + // Default label emphasis `position` and `show` + // FIXME Set label in mergeOption + modelUtil.defaultEmphasis(option.label, modelUtil.LABEL_OPTIONS); + + this.fillDataTextStyle(option.data); + + if (layoutMode) { + layout.mergeLayoutParam(option, inputPositionParams, layoutMode); + } + }, + + mergeOption: function (newSeriesOption, ecModel) { + newSeriesOption = zrUtil.merge(this.option, newSeriesOption, true); + this.fillDataTextStyle(newSeriesOption.data); + + var layoutMode = this.layoutMode; + if (layoutMode) { + layout.mergeLayoutParam(this.option, newSeriesOption, layoutMode); + } + + var data = this.getInitialData(newSeriesOption, ecModel); + // TODO Merge data? + if (data) { + set(this, 'data', data); + set(this, 'dataBeforeProcessed', data.cloneShallow()); + } + }, + + fillDataTextStyle: function (data) { + // Default data label emphasis `position` and `show` + // FIXME Tree structure data ? + // FIXME Performance ? + if (data) { + for (var i = 0; i < data.length; i++) { + if (data[i] && data[i].label) { + modelUtil.defaultEmphasis(data[i].label, modelUtil.LABEL_OPTIONS); + } + } + } + }, + + /** + * Init a data structure from data related option in series + * Must be overwritten + */ + getInitialData: function () {}, + + /** + * @param {string} [dataType] + * @return {module:echarts/data/List} + */ + getData: function (dataType) { + var data = get(this, 'data'); + return dataType == null ? data : data.getLinkedData(dataType); + }, + + /** + * @param {module:echarts/data/List} data + */ + setData: function (data) { + set(this, 'data', data); + }, + + /** + * Get data before processed + * @return {module:echarts/data/List} + */ + getRawData: function () { + return get(this, 'dataBeforeProcessed'); + }, + + /** + * Coord dimension to data dimension. + * + * By default the result is the same as dimensions of series data. + * But in some series data dimensions are different from coord dimensions (i.e. + * candlestick and boxplot). Override this method to handle those cases. + * + * Coord dimension to data dimension can be one-to-many + * + * @param {string} coordDim + * @return {Array.} dimensions on the axis. + */ + coordDimToDataDim: function (coordDim) { + return modelUtil.coordDimToDataDim(this.getData(), coordDim); + }, + + /** + * Convert data dimension to coord dimension. + * + * @param {string|number} dataDim + * @return {string} + */ + dataDimToCoordDim: function (dataDim) { + return modelUtil.dataDimToCoordDim(this.getData(), dataDim); + }, + + /** + * Get base axis if has coordinate system and has axis. + * By default use coordSys.getBaseAxis(); + * Can be overrided for some chart. + * @return {type} description + */ + getBaseAxis: function () { + var coordSys = this.coordinateSystem; + return coordSys && coordSys.getBaseAxis && coordSys.getBaseAxis(); + }, + + // FIXME + /** + * Default tooltip formatter + * + * @param {number} dataIndex + * @param {boolean} [multipleSeries=false] + * @param {number} [dataType] + */ + formatTooltip: function (dataIndex, multipleSeries, dataType) { + function formatArrayValue(value) { + var vertially = zrUtil.reduce(value, function (vertially, val, idx) { + var dimItem = data.getDimensionInfo(idx); + return vertially |= dimItem && dimItem.tooltip !== false && dimItem.tooltipName != null; + }, 0); + + var result = []; + var tooltipDims = modelUtil.otherDimToDataDim(data, 'tooltip'); + + tooltipDims.length + ? zrUtil.each(tooltipDims, function (dimIdx) { + setEachItem(data.get(dimIdx, dataIndex), dimIdx); + }) + // By default, all dims is used on tooltip. + : zrUtil.each(value, setEachItem); + + function setEachItem(val, dimIdx) { + var dimInfo = data.getDimensionInfo(dimIdx); + // If `dimInfo.tooltip` is not set, show tooltip. + if (!dimInfo || dimInfo.otherDims.tooltip === false) { + return; + } + var dimType = dimInfo.type; + var valStr = (vertially ? '- ' + (dimInfo.tooltipName || dimInfo.name) + ': ' : '') + + (dimType === 'ordinal' + ? val + '' + : dimType === 'time' + ? (multipleSeries ? '' : formatUtil.formatTime('yyyy/MM/dd hh:mm:ss', val)) + : addCommas(val) + ); + valStr && result.push(encodeHTML(valStr)); + } + + return (vertially ? '
                  ' : '') + result.join(vertially ? '
                  ' : ', '); + } + + var data = get(this, 'data'); + + var value = this.getRawValue(dataIndex); + var formattedValue = zrUtil.isArray(value) + ? formatArrayValue(value) : encodeHTML(addCommas(value)); + var name = data.getName(dataIndex); + + var color = data.getItemVisual(dataIndex, 'color'); + if (zrUtil.isObject(color) && color.colorStops) { + color = (color.colorStops[0] || {}).color; + } + color = color || 'transparent'; + + var colorEl = formatUtil.getTooltipMarker(color); + + var seriesName = this.name; + // FIXME + if (seriesName === '\0-') { + // Not show '-' + seriesName = ''; + } + seriesName = seriesName + ? encodeHTML(seriesName) + (!multipleSeries ? '
                  ' : ': ') + : ''; + return !multipleSeries + ? seriesName + colorEl + + (name + ? encodeHTML(name) + ': ' + formattedValue + : formattedValue + ) + : colorEl + seriesName + formattedValue; + }, + + /** + * @return {boolean} + */ + isAnimationEnabled: function () { + if (env.node) { + return false; + } + + var animationEnabled = this.getShallow('animation'); + if (animationEnabled) { + if (this.getData().count() > this.getShallow('animationThreshold')) { + animationEnabled = false; + } + } + return animationEnabled; + }, + + restoreData: function () { + set(this, 'data', get(this, 'dataBeforeProcessed').cloneShallow()); + }, + + getColorFromPalette: function (name, scope) { + var ecModel = this.ecModel; + // PENDING + var color = colorPaletteMixin.getColorFromPalette.call(this, name, scope); + if (!color) { + color = ecModel.getColorFromPalette(name, scope); + } + return color; + }, + + /** + * Get data indices for show tooltip content. See tooltip. + * @abstract + * @param {Array.|string} dim + * @param {Array.} value + * @param {module:echarts/coord/single/SingleAxis} baseAxis + * @return {Object} {dataIndices, nestestValue}. + */ + getAxisTooltipData: null, + + /** + * See tooltip. + * @abstract + * @param {number} dataIndex + * @return {Array.} Point of tooltip. null/undefined can be returned. + */ + getTooltipPosition: null + }); + + zrUtil.mixin(SeriesModel, modelUtil.dataFormatMixin); + zrUtil.mixin(SeriesModel, colorPaletteMixin); + + module.exports = SeriesModel; + + +/***/ }, +/* 79 */ +/***/ function(module, exports, __webpack_require__) { + + + + var Group = __webpack_require__(48); + var componentUtil = __webpack_require__(70); + var clazzUtil = __webpack_require__(13); + + var Component = function () { + /** + * @type {module:zrender/container/Group} + * @readOnly + */ + this.group = new Group(); + + /** + * @type {string} + * @readOnly + */ + this.uid = componentUtil.getUID('viewComponent'); + }; + + Component.prototype = { + + constructor: Component, + + init: function (ecModel, api) {}, + + render: function (componentModel, ecModel, api, payload) {}, + + dispose: function () {} + + }; + + var componentProto = Component.prototype; + componentProto.updateView + = componentProto.updateLayout + = componentProto.updateVisual + = function (seriesModel, ecModel, api, payload) { + // Do nothing; + }; + // Enable Component.extend. + clazzUtil.enableClassExtend(Component); + + // Enable capability of registerClass, getClass, hasClass, registerSubTypeDefaulter and so on. + clazzUtil.enableClassManagement(Component, {registerWhenExtend: true}); + + module.exports = Component; + + +/***/ }, +/* 80 */ +/***/ function(module, exports, __webpack_require__) { + + + + var Group = __webpack_require__(48); + var componentUtil = __webpack_require__(70); + var clazzUtil = __webpack_require__(13); + var modelUtil = __webpack_require__(5); + var zrUtil = __webpack_require__(4); + + function Chart() { + + /** + * @type {module:zrender/container/Group} + * @readOnly + */ + this.group = new Group(); + + /** + * @type {string} + * @readOnly + */ + this.uid = componentUtil.getUID('viewChart'); + } + + Chart.prototype = { + + type: 'chart', + + /** + * Init the chart + * @param {module:echarts/model/Global} ecModel + * @param {module:echarts/ExtensionAPI} api + */ + init: function (ecModel, api) {}, + + /** + * Render the chart + * @param {module:echarts/model/Series} seriesModel + * @param {module:echarts/model/Global} ecModel + * @param {module:echarts/ExtensionAPI} api + * @param {Object} payload + */ + render: function (seriesModel, ecModel, api, payload) {}, + + /** + * Highlight series or specified data item + * @param {module:echarts/model/Series} seriesModel + * @param {module:echarts/model/Global} ecModel + * @param {module:echarts/ExtensionAPI} api + * @param {Object} payload + */ + highlight: function (seriesModel, ecModel, api, payload) { + toggleHighlight(seriesModel.getData(), payload, 'emphasis'); + }, + + /** + * Downplay series or specified data item + * @param {module:echarts/model/Series} seriesModel + * @param {module:echarts/model/Global} ecModel + * @param {module:echarts/ExtensionAPI} api + * @param {Object} payload + */ + downplay: function (seriesModel, ecModel, api, payload) { + toggleHighlight(seriesModel.getData(), payload, 'normal'); + }, + + /** + * Remove self + * @param {module:echarts/model/Global} ecModel + * @param {module:echarts/ExtensionAPI} api + */ + remove: function (ecModel, api) { + this.group.removeAll(); + }, + + /** + * Dispose self + * @param {module:echarts/model/Global} ecModel + * @param {module:echarts/ExtensionAPI} api + */ + dispose: function () {} + + /** + * The view contains the given point. + * @interface + * @param {Array.} point + * @return {boolean} + */ + // containPoint: function () {} + + }; + + var chartProto = Chart.prototype; + chartProto.updateView + = chartProto.updateLayout + = chartProto.updateVisual + = function (seriesModel, ecModel, api, payload) { + this.render(seriesModel, ecModel, api, payload); + }; + + /** + * Set state of single element + * @param {module:zrender/Element} el + * @param {string} state + */ + function elSetState(el, state) { + if (el) { + el.trigger(state); + if (el.type === 'group') { + for (var i = 0; i < el.childCount(); i++) { + elSetState(el.childAt(i), state); + } + } + } + } + /** + * @param {module:echarts/data/List} data + * @param {Object} payload + * @param {string} state 'normal'|'emphasis' + * @inner + */ + function toggleHighlight(data, payload, state) { + var dataIndex = modelUtil.queryDataIndex(data, payload); + + if (dataIndex != null) { + zrUtil.each(modelUtil.normalizeToArray(dataIndex), function (dataIdx) { + elSetState(data.getItemGraphicEl(dataIdx), state); + }); + } + else { + data.eachItemGraphicEl(function (el) { + elSetState(el, state); + }); + } + } + + // Enable Chart.extend. + clazzUtil.enableClassExtend(Chart, ['dispose']); + + // Add capability of registerClass, getClass, hasClass, registerSubTypeDefaulter and so on. + clazzUtil.enableClassManagement(Chart, {registerWhenExtend: true}); + + module.exports = Chart; + + +/***/ }, +/* 81 */ +/***/ function(module, exports) { + + + + var lib = {}; + + var ORIGIN_METHOD = '\0__throttleOriginMethod'; + var RATE = '\0__throttleRate'; + var THROTTLE_TYPE = '\0__throttleType'; + + /** + * @public + * @param {(Function)} fn + * @param {number} [delay=0] Unit: ms. + * @param {boolean} [debounce=false] + * true: If call interval less than `delay`, only the last call works. + * false: If call interval less than `delay, call works on fixed rate. + * @return {(Function)} throttled fn. + */ + lib.throttle = function (fn, delay, debounce) { + + var currCall; + var lastCall = 0; + var lastExec = 0; + var timer = null; + var diff; + var scope; + var args; + var debounceNextCall; + + delay = delay || 0; + + function exec() { + lastExec = (new Date()).getTime(); + timer = null; + fn.apply(scope, args || []); + } + + var cb = function () { + currCall = (new Date()).getTime(); + scope = this; + args = arguments; + var thisDelay = debounceNextCall || delay; + var thisDebounce = debounceNextCall || debounce; + debounceNextCall = null; + diff = currCall - (thisDebounce ? lastCall : lastExec) - thisDelay; + + clearTimeout(timer); + + if (thisDebounce) { + timer = setTimeout(exec, thisDelay); + } + else { + if (diff >= 0) { + exec(); + } + else { + timer = setTimeout(exec, -diff); + } + } + + lastCall = currCall; + }; + + /** + * Clear throttle. + * @public + */ + cb.clear = function () { + if (timer) { + clearTimeout(timer); + timer = null; + } + }; + + /** + * Enable debounce once. + */ + cb.debounceNextCall = function (debounceDelay) { + debounceNextCall = debounceDelay; + }; + + return cb; + }; + + /** + * Create throttle method or update throttle rate. + * + * @example + * ComponentView.prototype.render = function () { + * ... + * throttle.createOrUpdate( + * this, + * '_dispatchAction', + * this.model.get('throttle'), + * 'fixRate' + * ); + * }; + * ComponentView.prototype.remove = function () { + * throttle.clear(this, '_dispatchAction'); + * }; + * ComponentView.prototype.dispose = function () { + * throttle.clear(this, '_dispatchAction'); + * }; + * + * @public + * @param {Object} obj + * @param {string} fnAttr + * @param {number} [rate] + * @param {string} [throttleType='fixRate'] 'fixRate' or 'debounce' + * @return {Function} throttled function. + */ + lib.createOrUpdate = function (obj, fnAttr, rate, throttleType) { + var fn = obj[fnAttr]; + + if (!fn) { + return; + } + + var originFn = fn[ORIGIN_METHOD] || fn; + var lastThrottleType = fn[THROTTLE_TYPE]; + var lastRate = fn[RATE]; + + if (lastRate !== rate || lastThrottleType !== throttleType) { + if (rate == null || !throttleType) { + return (obj[fnAttr] = originFn); + } + + fn = obj[fnAttr] = lib.throttle( + originFn, rate, throttleType === 'debounce' + ); + fn[ORIGIN_METHOD] = originFn; + fn[THROTTLE_TYPE] = throttleType; + fn[RATE] = rate; + } + + return fn; + }; + + /** + * Clear throttle. Example see throttle.createOrUpdate. + * + * @public + * @param {Object} obj + * @param {string} fnAttr + */ + lib.clear = function (obj, fnAttr) { + var fn = obj[fnAttr]; + if (fn && fn[ORIGIN_METHOD]) { + obj[fnAttr] = fn[ORIGIN_METHOD]; + } + }; + + module.exports = lib; + + + +/***/ }, +/* 82 */ +/***/ function(module, exports, __webpack_require__) { + + /*! + * ZRender, a high performance 2d drawing library. + * + * Copyright (c) 2013, Baidu Inc. + * All rights reserved. + * + * LICENSE + * https://github.com/ecomfe/zrender/blob/master/LICENSE.txt + */ + // Global defines + + var guid = __webpack_require__(24); + var env = __webpack_require__(2); + var zrUtil = __webpack_require__(4); + + var Handler = __webpack_require__(83); + var Storage = __webpack_require__(85); + var Animation = __webpack_require__(87); + var HandlerProxy = __webpack_require__(90); + + var useVML = !env.canvasSupported; + + var painterCtors = { + canvas: __webpack_require__(92) + }; + + var instances = {}; // ZRender实例map索引 + + var zrender = {}; + + /** + * @type {string} + */ + zrender.version = '3.5.2'; + + /** + * Initializing a zrender instance + * @param {HTMLElement} dom + * @param {Object} opts + * @param {string} [opts.renderer='canvas'] 'canvas' or 'svg' + * @param {number} [opts.devicePixelRatio] + * @param {number|string} [opts.width] Can be 'auto' (the same as null/undefined) + * @param {number|string} [opts.height] Can be 'auto' (the same as null/undefined) + * @return {module:zrender/ZRender} + */ + zrender.init = function(dom, opts) { + var zr = new ZRender(guid(), dom, opts); + instances[zr.id] = zr; + return zr; + }; + + /** + * Dispose zrender instance + * @param {module:zrender/ZRender} zr + */ + zrender.dispose = function (zr) { + if (zr) { + zr.dispose(); + } + else { + for (var key in instances) { + if (instances.hasOwnProperty(key)) { + instances[key].dispose(); + } + } + instances = {}; + } + + return zrender; + }; + + /** + * Get zrender instance by id + * @param {string} id zrender instance id + * @return {module:zrender/ZRender} + */ + zrender.getInstance = function (id) { + return instances[id]; + }; + + zrender.registerPainter = function (name, Ctor) { + painterCtors[name] = Ctor; + }; + + function delInstance(id) { + delete instances[id]; + } + + /** + * @module zrender/ZRender + */ + /** + * @constructor + * @alias module:zrender/ZRender + * @param {string} id + * @param {HTMLDomElement} dom + * @param {Object} opts + * @param {string} [opts.renderer='canvas'] 'canvas' or 'svg' + * @param {number} [opts.devicePixelRatio] + * @param {number} [opts.width] Can be 'auto' (the same as null/undefined) + * @param {number} [opts.height] Can be 'auto' (the same as null/undefined) + */ + var ZRender = function(id, dom, opts) { + + opts = opts || {}; + + /** + * @type {HTMLDomElement} + */ + this.dom = dom; + + /** + * @type {string} + */ + this.id = id; + + var self = this; + var storage = new Storage(); + + var rendererType = opts.renderer; + // TODO WebGL + if (useVML) { + if (!painterCtors.vml) { + throw new Error('You need to require \'zrender/vml/vml\' to support IE8'); + } + rendererType = 'vml'; + } + else if (!rendererType || !painterCtors[rendererType]) { + rendererType = 'canvas'; + } + var painter = new painterCtors[rendererType](dom, storage, opts); + + this.storage = storage; + this.painter = painter; + + var handerProxy = !env.node ? new HandlerProxy(painter.getViewportRoot()) : null; + this.handler = new Handler(storage, painter, handerProxy, painter.root); + + /** + * @type {module:zrender/animation/Animation} + */ + this.animation = new Animation({ + stage: { + update: zrUtil.bind(this.flush, this) + } + }); + this.animation.start(); + + /** + * @type {boolean} + * @private + */ + this._needsRefresh; + + // 修改 storage.delFromStorage, 每次删除元素之前删除动画 + // FIXME 有点ugly + var oldDelFromStorage = storage.delFromStorage; + var oldAddToStorage = storage.addToStorage; + + storage.delFromStorage = function (el) { + oldDelFromStorage.call(storage, el); + + el && el.removeSelfFromZr(self); + }; + + storage.addToStorage = function (el) { + oldAddToStorage.call(storage, el); + + el.addSelfToZr(self); + }; + }; + + ZRender.prototype = { + + constructor: ZRender, + /** + * 获取实例唯一标识 + * @return {string} + */ + getId: function () { + return this.id; + }, + + /** + * 添加元素 + * @param {module:zrender/Element} el + */ + add: function (el) { + this.storage.addRoot(el); + this._needsRefresh = true; + }, + + /** + * 删除元素 + * @param {module:zrender/Element} el + */ + remove: function (el) { + this.storage.delRoot(el); + this._needsRefresh = true; + }, + + /** + * Change configuration of layer + * @param {string} zLevel + * @param {Object} config + * @param {string} [config.clearColor=0] Clear color + * @param {string} [config.motionBlur=false] If enable motion blur + * @param {number} [config.lastFrameAlpha=0.7] Motion blur factor. Larger value cause longer trailer + */ + configLayer: function (zLevel, config) { + this.painter.configLayer(zLevel, config); + this._needsRefresh = true; + }, + + /** + * Repaint the canvas immediately + */ + refreshImmediately: function () { + // Clear needsRefresh ahead to avoid something wrong happens in refresh + // Or it will cause zrender refreshes again and again. + this._needsRefresh = false; + this.painter.refresh(); + /** + * Avoid trigger zr.refresh in Element#beforeUpdate hook + */ + this._needsRefresh = false; + }, + + /** + * Mark and repaint the canvas in the next frame of browser + */ + refresh: function() { + this._needsRefresh = true; + }, + + /** + * Perform all refresh + */ + flush: function () { + if (this._needsRefresh) { + this.refreshImmediately(); + } + if (this._needsRefreshHover) { + this.refreshHoverImmediately(); + } + }, + + /** + * Add element to hover layer + * @param {module:zrender/Element} el + * @param {Object} style + */ + addHover: function (el, style) { + if (this.painter.addHover) { + this.painter.addHover(el, style); + this.refreshHover(); + } + }, + + /** + * Add element from hover layer + * @param {module:zrender/Element} el + */ + removeHover: function (el) { + if (this.painter.removeHover) { + this.painter.removeHover(el); + this.refreshHover(); + } + }, + + /** + * Clear all hover elements in hover layer + * @param {module:zrender/Element} el + */ + clearHover: function () { + if (this.painter.clearHover) { + this.painter.clearHover(); + this.refreshHover(); + } + }, + + /** + * Refresh hover in next frame + */ + refreshHover: function () { + this._needsRefreshHover = true; + }, + + /** + * Refresh hover immediately + */ + refreshHoverImmediately: function () { + this._needsRefreshHover = false; + this.painter.refreshHover && this.painter.refreshHover(); + }, + + /** + * Resize the canvas. + * Should be invoked when container size is changed + * @param {Object} [opts] + * @param {number|string} [opts.width] Can be 'auto' (the same as null/undefined) + * @param {number|string} [opts.height] Can be 'auto' (the same as null/undefined) + */ + resize: function(opts) { + opts = opts || {}; + this.painter.resize(opts.width, opts.height); + this.handler.resize(); + }, + + /** + * Stop and clear all animation immediately + */ + clearAnimation: function () { + this.animation.clear(); + }, + + /** + * Get container width + */ + getWidth: function() { + return this.painter.getWidth(); + }, + + /** + * Get container height + */ + getHeight: function() { + return this.painter.getHeight(); + }, + + /** + * Export the canvas as Base64 URL + * @param {string} type + * @param {string} [backgroundColor='#fff'] + * @return {string} Base64 URL + */ + // toDataURL: function(type, backgroundColor) { + // return this.painter.getRenderedCanvas({ + // backgroundColor: backgroundColor + // }).toDataURL(type); + // }, + + /** + * Converting a path to image. + * It has much better performance of drawing image rather than drawing a vector path. + * @param {module:zrender/graphic/Path} e + * @param {number} width + * @param {number} height + */ + pathToImage: function(e, dpr) { + return this.painter.pathToImage(e, dpr); + }, + + /** + * Set default cursor + * @param {string} [cursorStyle='default'] 例如 crosshair + */ + setCursorStyle: function (cursorStyle) { + this.handler.setCursorStyle(cursorStyle); + }, + + /** + * Find hovered element + * @param {number} x + * @param {number} y + * @return {Object} {target, topTarget} + */ + findHover: function (x, y) { + return this.handler.findHover(x, y); + }, + + /** + * Bind event + * + * @param {string} eventName Event name + * @param {Function} eventHandler Handler function + * @param {Object} [context] Context object + */ + on: function(eventName, eventHandler, context) { + this.handler.on(eventName, eventHandler, context); + }, + + /** + * Unbind event + * @param {string} eventName Event name + * @param {Function} [eventHandler] Handler function + */ + off: function(eventName, eventHandler) { + this.handler.off(eventName, eventHandler); + }, + + /** + * Trigger event manually + * + * @param {string} eventName Event name + * @param {event=} event Event object + */ + trigger: function (eventName, event) { + this.handler.trigger(eventName, event); + }, + + + /** + * Clear all objects and the canvas. + */ + clear: function () { + this.storage.delRoot(); + this.painter.clear(); + }, + + /** + * Dispose self. + */ + dispose: function () { + this.animation.stop(); + + this.clear(); + this.storage.dispose(); + this.painter.dispose(); + this.handler.dispose(); + + this.animation = + this.storage = + this.painter = + this.handler = null; + + delInstance(this.id); + } + }; + + module.exports = zrender; + + + +/***/ }, +/* 83 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + /** + * Handler + * @module zrender/Handler + * @author Kener (@Kener-林峰, kener.linfeng@gmail.com) + * errorrik (errorrik@gmail.com) + * pissang (shenyi.914@gmail.com) + */ + + + var util = __webpack_require__(4); + var Draggable = __webpack_require__(84); + + var Eventful = __webpack_require__(25); + + var SILENT = 'silent'; + + function makeEventPacket(eveType, targetInfo, event) { + return { + type: eveType, + event: event, + // target can only be an element that is not silent. + target: targetInfo.target, + // topTarget can be a silent element. + topTarget: targetInfo.topTarget, + cancelBubble: false, + offsetX: event.zrX, + offsetY: event.zrY, + gestureEvent: event.gestureEvent, + pinchX: event.pinchX, + pinchY: event.pinchY, + pinchScale: event.pinchScale, + wheelDelta: event.zrDelta, + zrByTouch: event.zrByTouch + }; + } + + function EmptyProxy () {} + EmptyProxy.prototype.dispose = function () {}; + + var handlerNames = [ + 'click', 'dblclick', 'mousewheel', 'mouseout', + 'mouseup', 'mousedown', 'mousemove', 'contextmenu' + ]; + /** + * @alias module:zrender/Handler + * @constructor + * @extends module:zrender/mixin/Eventful + * @param {module:zrender/Storage} storage Storage instance. + * @param {module:zrender/Painter} painter Painter instance. + * @param {module:zrender/dom/HandlerProxy} proxy HandlerProxy instance. + * @param {HTMLElement} painterRoot painter.root (not painter.getViewportRoot()). + */ + var Handler = function(storage, painter, proxy, painterRoot) { + Eventful.call(this); + + this.storage = storage; + + this.painter = painter; + + this.painterRoot = painterRoot; + + proxy = proxy || new EmptyProxy(); + + /** + * Proxy of event. can be Dom, WebGLSurface, etc. + */ + this.proxy = proxy; + + // Attach handler + proxy.handler = this; + + /** + * {target, topTarget} + * @private + * @type {Object} + */ + this._hovered = {}; + + /** + * @private + * @type {Date} + */ + this._lastTouchMoment; + + /** + * @private + * @type {number} + */ + this._lastX; + + /** + * @private + * @type {number} + */ + this._lastY; + + + Draggable.call(this); + + util.each(handlerNames, function (name) { + proxy.on && proxy.on(name, this[name], this); + }, this); + }; + + Handler.prototype = { + + constructor: Handler, + + mousemove: function (event) { + var x = event.zrX; + var y = event.zrY; + + var lastHovered = this._hovered; + var hovered = this._hovered = this.findHover(x, y); + var hoveredTarget = hovered.target; + var lastHoveredTarget = lastHovered.target; + + var proxy = this.proxy; + proxy.setCursor && proxy.setCursor(hoveredTarget ? hoveredTarget.cursor : 'default'); + + // Mouse out on previous hovered element + if (lastHoveredTarget && hoveredTarget !== lastHoveredTarget && lastHoveredTarget.__zr) { + this.dispatchToElement(lastHovered, 'mouseout', event); + } + + // Mouse moving on one element + this.dispatchToElement(hovered, 'mousemove', event); + + // Mouse over on a new element + if (hoveredTarget && hoveredTarget !== lastHoveredTarget) { + this.dispatchToElement(hovered, 'mouseover', event); + } + }, + + mouseout: function (event) { + this.dispatchToElement(this._hovered, 'mouseout', event); + + // There might be some doms created by upper layer application + // at the same level of painter.getViewportRoot() (e.g., tooltip + // dom created by echarts), where 'globalout' event should not + // be triggered when mouse enters these doms. (But 'mouseout' + // should be triggered at the original hovered element as usual). + var element = event.toElement || event.relatedTarget; + var innerDom; + do { + element = element && element.parentNode; + } + while (element && element.nodeType != 9 && !( + innerDom = element === this.painterRoot + )); + + !innerDom && this.trigger('globalout', {event: event}); + }, + + /** + * Resize + */ + resize: function (event) { + this._hovered = {}; + }, + + /** + * Dispatch event + * @param {string} eventName + * @param {event=} eventArgs + */ + dispatch: function (eventName, eventArgs) { + var handler = this[eventName]; + handler && handler.call(this, eventArgs); + }, + + /** + * Dispose + */ + dispose: function () { + + this.proxy.dispose(); + + this.storage = + this.proxy = + this.painter = null; + }, + + /** + * 设置默认的cursor style + * @param {string} [cursorStyle='default'] 例如 crosshair + */ + setCursorStyle: function (cursorStyle) { + var proxy = this.proxy; + proxy.setCursor && proxy.setCursor(cursorStyle); + }, + + /** + * 事件分发代理 + * + * @private + * @param {Object} targetInfo {target, topTarget} 目标图形元素 + * @param {string} eventName 事件名称 + * @param {Object} event 事件对象 + */ + dispatchToElement: function (targetInfo, eventName, event) { + targetInfo = targetInfo || {}; + var eventHandler = 'on' + eventName; + var eventPacket = makeEventPacket(eventName, targetInfo, event); + + var el = targetInfo.target; + while (el) { + el[eventHandler] + && (eventPacket.cancelBubble = el[eventHandler].call(el, eventPacket)); + + el.trigger(eventName, eventPacket); + + el = el.parent; + + if (eventPacket.cancelBubble) { + break; + } + } + + if (!eventPacket.cancelBubble) { + // 冒泡到顶级 zrender 对象 + this.trigger(eventName, eventPacket); + // 分发事件到用户自定义层 + // 用户有可能在全局 click 事件中 dispose,所以需要判断下 painter 是否存在 + this.painter && this.painter.eachOtherLayer(function (layer) { + if (typeof(layer[eventHandler]) == 'function') { + layer[eventHandler].call(layer, eventPacket); + } + if (layer.trigger) { + layer.trigger(eventName, eventPacket); + } + }); + } + }, + + /** + * @private + * @param {number} x + * @param {number} y + * @param {module:zrender/graphic/Displayable} exclude + * @return {model:zrender/Element} + * @method + */ + findHover: function(x, y, exclude) { + var list = this.storage.getDisplayList(); + var out = {}; + + for (var i = list.length - 1; i >= 0 ; i--) { + var hoverCheckResult; + if (list[i] !== exclude + // getDisplayList may include ignored item in VML mode + && !list[i].ignore + && (hoverCheckResult = isHover(list[i], x, y)) + ) { + !out.topTarget && (out.topTarget = list[i]); + if (hoverCheckResult !== SILENT) { + out.target = list[i]; + break; + } + } + } + + return out; + } + }; + + // Common handlers + util.each(['click', 'mousedown', 'mouseup', 'mousewheel', 'dblclick', 'contextmenu'], function (name) { + Handler.prototype[name] = function (event) { + // Find hover again to avoid click event is dispatched manually. Or click is triggered without mouseover + var hovered = this.findHover(event.zrX, event.zrY); + var hoveredTarget = hovered.target; + + if (name === 'mousedown') { + this._downel = hoveredTarget; + // In case click triggered before mouseup + this._upel = hoveredTarget; + } + else if (name === 'mosueup') { + this._upel = hoveredTarget; + } + else if (name === 'click') { + if (this._downel !== this._upel) { + return; + } + } + + this.dispatchToElement(hovered, name, event); + }; + }); + + function isHover(displayable, x, y) { + if (displayable[displayable.rectHover ? 'rectContain' : 'contain'](x, y)) { + var el = displayable; + var isSilent; + while (el) { + // If clipped by ancestor. + // FIXME: If clipPath has neither stroke nor fill, + // el.clipPath.contain(x, y) will always return false. + if (el.clipPath && !el.clipPath.contain(x, y)) { + return false; + } + if (el.silent) { + isSilent = true; + } + el = el.parent; + } + return isSilent ? SILENT : true; + } + + return false; + } + + util.mixin(Handler, Eventful); + util.mixin(Handler, Draggable); + + module.exports = Handler; + + + +/***/ }, +/* 84 */ +/***/ function(module, exports) { + + // TODO Draggable for group + // FIXME Draggable on element which has parent rotation or scale + + function Draggable() { + + this.on('mousedown', this._dragStart, this); + this.on('mousemove', this._drag, this); + this.on('mouseup', this._dragEnd, this); + this.on('globalout', this._dragEnd, this); + // this._dropTarget = null; + // this._draggingTarget = null; + + // this._x = 0; + // this._y = 0; + } + + Draggable.prototype = { + + constructor: Draggable, + + _dragStart: function (e) { + var draggingTarget = e.target; + if (draggingTarget && draggingTarget.draggable) { + this._draggingTarget = draggingTarget; + draggingTarget.dragging = true; + this._x = e.offsetX; + this._y = e.offsetY; + + this.dispatchToElement(param(draggingTarget, e), 'dragstart', e.event); + } + }, + + _drag: function (e) { + var draggingTarget = this._draggingTarget; + if (draggingTarget) { + + var x = e.offsetX; + var y = e.offsetY; + + var dx = x - this._x; + var dy = y - this._y; + this._x = x; + this._y = y; + + draggingTarget.drift(dx, dy, e); + this.dispatchToElement(param(draggingTarget, e), 'drag', e.event); + + var dropTarget = this.findHover(x, y, draggingTarget).target; + var lastDropTarget = this._dropTarget; + this._dropTarget = dropTarget; + + if (draggingTarget !== dropTarget) { + if (lastDropTarget && dropTarget !== lastDropTarget) { + this.dispatchToElement(param(lastDropTarget, e), 'dragleave', e.event); + } + if (dropTarget && dropTarget !== lastDropTarget) { + this.dispatchToElement(param(dropTarget, e), 'dragenter', e.event); + } + } + } + }, + + _dragEnd: function (e) { + var draggingTarget = this._draggingTarget; + + if (draggingTarget) { + draggingTarget.dragging = false; + } + + this.dispatchToElement(param(draggingTarget, e), 'dragend', e.event); + + if (this._dropTarget) { + this.dispatchToElement(param(this._dropTarget, e), 'drop', e.event); + } + + this._draggingTarget = null; + this._dropTarget = null; + } + + }; + + function param(target, e) { + return {target: target, topTarget: e && e.topTarget}; + } + + module.exports = Draggable; + + +/***/ }, +/* 85 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + /** + * Storage内容仓库模块 + * @module zrender/Storage + * @author Kener (@Kener-林峰, kener.linfeng@gmail.com) + * @author errorrik (errorrik@gmail.com) + * @author pissang (https://github.com/pissang/) + */ + + + var util = __webpack_require__(4); + var env = __webpack_require__(2); + + var Group = __webpack_require__(48); + + // Use timsort because in most case elements are partially sorted + // https://jsfiddle.net/pissang/jr4x7mdm/8/ + var timsort = __webpack_require__(86); + + function shapeCompareFunc(a, b) { + if (a.zlevel === b.zlevel) { + if (a.z === b.z) { + // if (a.z2 === b.z2) { + // // FIXME Slow has renderidx compare + // // http://stackoverflow.com/questions/20883421/sorting-in-javascript-should-every-compare-function-have-a-return-0-statement + // // https://github.com/v8/v8/blob/47cce544a31ed5577ffe2963f67acb4144ee0232/src/js/array.js#L1012 + // return a.__renderidx - b.__renderidx; + // } + return a.z2 - b.z2; + } + return a.z - b.z; + } + return a.zlevel - b.zlevel; + } + /** + * 内容仓库 (M) + * @alias module:zrender/Storage + * @constructor + */ + var Storage = function () { + this._roots = []; + + this._displayList = []; + + this._displayListLen = 0; + }; + + Storage.prototype = { + + constructor: Storage, + + /** + * @param {Function} cb + * + */ + traverse: function (cb, context) { + for (var i = 0; i < this._roots.length; i++) { + this._roots[i].traverse(cb, context); + } + }, + + /** + * 返回所有图形的绘制队列 + * @param {boolean} [update=false] 是否在返回前更新该数组 + * @param {boolean} [includeIgnore=false] 是否包含 ignore 的数组, 在 update 为 true 的时候有效 + * + * 详见{@link module:zrender/graphic/Displayable.prototype.updateDisplayList} + * @return {Array.} + */ + getDisplayList: function (update, includeIgnore) { + includeIgnore = includeIgnore || false; + if (update) { + this.updateDisplayList(includeIgnore); + } + return this._displayList; + }, + + /** + * 更新图形的绘制队列。 + * 每次绘制前都会调用,该方法会先深度优先遍历整个树,更新所有Group和Shape的变换并且把所有可见的Shape保存到数组中, + * 最后根据绘制的优先级(zlevel > z > 插入顺序)排序得到绘制队列 + * @param {boolean} [includeIgnore=false] 是否包含 ignore 的数组 + */ + updateDisplayList: function (includeIgnore) { + this._displayListLen = 0; + var roots = this._roots; + var displayList = this._displayList; + for (var i = 0, len = roots.length; i < len; i++) { + this._updateAndAddDisplayable(roots[i], null, includeIgnore); + } + displayList.length = this._displayListLen; + + // for (var i = 0, len = displayList.length; i < len; i++) { + // displayList[i].__renderidx = i; + // } + + // displayList.sort(shapeCompareFunc); + env.canvasSupported && timsort(displayList, shapeCompareFunc); + }, + + _updateAndAddDisplayable: function (el, clipPaths, includeIgnore) { + + if (el.ignore && !includeIgnore) { + return; + } + + el.beforeUpdate(); + + if (el.__dirty) { + + el.update(); + + } + + el.afterUpdate(); + + var userSetClipPath = el.clipPath; + if (userSetClipPath) { + + // FIXME 效率影响 + if (clipPaths) { + clipPaths = clipPaths.slice(); + } + else { + clipPaths = []; + } + + var currentClipPath = userSetClipPath; + var parentClipPath = el; + // Recursively add clip path + while (currentClipPath) { + // clipPath 的变换是基于使用这个 clipPath 的元素 + currentClipPath.parent = parentClipPath; + currentClipPath.updateTransform(); + + clipPaths.push(currentClipPath); + + parentClipPath = currentClipPath; + currentClipPath = currentClipPath.clipPath; + } + } + + if (el.isGroup) { + var children = el._children; + + for (var i = 0; i < children.length; i++) { + var child = children[i]; + + // Force to mark as dirty if group is dirty + // FIXME __dirtyPath ? + if (el.__dirty) { + child.__dirty = true; + } + + this._updateAndAddDisplayable(child, clipPaths, includeIgnore); + } + + // Mark group clean here + el.__dirty = false; + + } + else { + el.__clipPaths = clipPaths; + + this._displayList[this._displayListLen++] = el; + } + }, + + /** + * 添加图形(Shape)或者组(Group)到根节点 + * @param {module:zrender/Element} el + */ + addRoot: function (el) { + if (el.__storage === this) { + return; + } + + if (el instanceof Group) { + el.addChildrenToStorage(this); + } + + this.addToStorage(el); + this._roots.push(el); + }, + + /** + * 删除指定的图形(Shape)或者组(Group) + * @param {string|Array.} [el] 如果为空清空整个Storage + */ + delRoot: function (el) { + if (el == null) { + // 不指定el清空 + for (var i = 0; i < this._roots.length; i++) { + var root = this._roots[i]; + if (root instanceof Group) { + root.delChildrenFromStorage(this); + } + } + + this._roots = []; + this._displayList = []; + this._displayListLen = 0; + + return; + } + + if (el instanceof Array) { + for (var i = 0, l = el.length; i < l; i++) { + this.delRoot(el[i]); + } + return; + } + + + var idx = util.indexOf(this._roots, el); + if (idx >= 0) { + this.delFromStorage(el); + this._roots.splice(idx, 1); + if (el instanceof Group) { + el.delChildrenFromStorage(this); + } + } + }, + + addToStorage: function (el) { + el.__storage = this; + el.dirty(false); + + return this; + }, + + delFromStorage: function (el) { + if (el) { + el.__storage = null; + } + + return this; + }, + + /** + * 清空并且释放Storage + */ + dispose: function () { + this._renderList = + this._roots = null; + }, + + displayableSortFunc: shapeCompareFunc + }; + + module.exports = Storage; + + + +/***/ }, +/* 86 */ +/***/ function(module, exports) { + + // https://github.com/mziccard/node-timsort + + var DEFAULT_MIN_MERGE = 32; + + var DEFAULT_MIN_GALLOPING = 7; + + var DEFAULT_TMP_STORAGE_LENGTH = 256; + + function minRunLength(n) { + var r = 0; + + while (n >= DEFAULT_MIN_MERGE) { + r |= n & 1; + n >>= 1; + } + + return n + r; + } + + function makeAscendingRun(array, lo, hi, compare) { + var runHi = lo + 1; + + if (runHi === hi) { + return 1; + } + + if (compare(array[runHi++], array[lo]) < 0) { + while (runHi < hi && compare(array[runHi], array[runHi - 1]) < 0) { + runHi++; + } + + reverseRun(array, lo, runHi); + } + else { + while (runHi < hi && compare(array[runHi], array[runHi - 1]) >= 0) { + runHi++; + } + } + + return runHi - lo; + } + + function reverseRun(array, lo, hi) { + hi--; + + while (lo < hi) { + var t = array[lo]; + array[lo++] = array[hi]; + array[hi--] = t; + } + } + + function binaryInsertionSort(array, lo, hi, start, compare) { + if (start === lo) { + start++; + } + + for (; start < hi; start++) { + var pivot = array[start]; + + var left = lo; + var right = start; + var mid; + + while (left < right) { + mid = left + right >>> 1; + + if (compare(pivot, array[mid]) < 0) { + right = mid; + } + else { + left = mid + 1; + } + } + + var n = start - left; + + switch (n) { + case 3: + array[left + 3] = array[left + 2]; + + case 2: + array[left + 2] = array[left + 1]; + + case 1: + array[left + 1] = array[left]; + break; + default: + while (n > 0) { + array[left + n] = array[left + n - 1]; + n--; + } + } + + array[left] = pivot; + } + } + + function gallopLeft(value, array, start, length, hint, compare) { + var lastOffset = 0; + var maxOffset = 0; + var offset = 1; + + if (compare(value, array[start + hint]) > 0) { + maxOffset = length - hint; + + while (offset < maxOffset && compare(value, array[start + hint + offset]) > 0) { + lastOffset = offset; + offset = (offset << 1) + 1; + + if (offset <= 0) { + offset = maxOffset; + } + } + + if (offset > maxOffset) { + offset = maxOffset; + } + + lastOffset += hint; + offset += hint; + } + else { + maxOffset = hint + 1; + while (offset < maxOffset && compare(value, array[start + hint - offset]) <= 0) { + lastOffset = offset; + offset = (offset << 1) + 1; + + if (offset <= 0) { + offset = maxOffset; + } + } + if (offset > maxOffset) { + offset = maxOffset; + } + + var tmp = lastOffset; + lastOffset = hint - offset; + offset = hint - tmp; + } + + lastOffset++; + while (lastOffset < offset) { + var m = lastOffset + (offset - lastOffset >>> 1); + + if (compare(value, array[start + m]) > 0) { + lastOffset = m + 1; + } + else { + offset = m; + } + } + return offset; + } + + function gallopRight(value, array, start, length, hint, compare) { + var lastOffset = 0; + var maxOffset = 0; + var offset = 1; + + if (compare(value, array[start + hint]) < 0) { + maxOffset = hint + 1; + + while (offset < maxOffset && compare(value, array[start + hint - offset]) < 0) { + lastOffset = offset; + offset = (offset << 1) + 1; + + if (offset <= 0) { + offset = maxOffset; + } + } + + if (offset > maxOffset) { + offset = maxOffset; + } + + var tmp = lastOffset; + lastOffset = hint - offset; + offset = hint - tmp; + } + else { + maxOffset = length - hint; + + while (offset < maxOffset && compare(value, array[start + hint + offset]) >= 0) { + lastOffset = offset; + offset = (offset << 1) + 1; + + if (offset <= 0) { + offset = maxOffset; + } + } + + if (offset > maxOffset) { + offset = maxOffset; + } + + lastOffset += hint; + offset += hint; + } + + lastOffset++; + + while (lastOffset < offset) { + var m = lastOffset + (offset - lastOffset >>> 1); + + if (compare(value, array[start + m]) < 0) { + offset = m; + } + else { + lastOffset = m + 1; + } + } + + return offset; + } + + function TimSort(array, compare) { + var minGallop = DEFAULT_MIN_GALLOPING; + var length = 0; + var tmpStorageLength = DEFAULT_TMP_STORAGE_LENGTH; + var stackLength = 0; + var runStart; + var runLength; + var stackSize = 0; + + length = array.length; + + if (length < 2 * DEFAULT_TMP_STORAGE_LENGTH) { + tmpStorageLength = length >>> 1; + } + + var tmp = []; + + stackLength = length < 120 ? 5 : length < 1542 ? 10 : length < 119151 ? 19 : 40; + + runStart = []; + runLength = []; + + function pushRun(_runStart, _runLength) { + runStart[stackSize] = _runStart; + runLength[stackSize] = _runLength; + stackSize += 1; + } + + function mergeRuns() { + while (stackSize > 1) { + var n = stackSize - 2; + + if (n >= 1 && runLength[n - 1] <= runLength[n] + runLength[n + 1] || n >= 2 && runLength[n - 2] <= runLength[n] + runLength[n - 1]) { + if (runLength[n - 1] < runLength[n + 1]) { + n--; + } + } + else if (runLength[n] > runLength[n + 1]) { + break; + } + mergeAt(n); + } + } + + function forceMergeRuns() { + while (stackSize > 1) { + var n = stackSize - 2; + + if (n > 0 && runLength[n - 1] < runLength[n + 1]) { + n--; + } + + mergeAt(n); + } + } + + function mergeAt(i) { + var start1 = runStart[i]; + var length1 = runLength[i]; + var start2 = runStart[i + 1]; + var length2 = runLength[i + 1]; + + runLength[i] = length1 + length2; + + if (i === stackSize - 3) { + runStart[i + 1] = runStart[i + 2]; + runLength[i + 1] = runLength[i + 2]; + } + + stackSize--; + + var k = gallopRight(array[start2], array, start1, length1, 0, compare); + start1 += k; + length1 -= k; + + if (length1 === 0) { + return; + } + + length2 = gallopLeft(array[start1 + length1 - 1], array, start2, length2, length2 - 1, compare); + + if (length2 === 0) { + return; + } + + if (length1 <= length2) { + mergeLow(start1, length1, start2, length2); + } + else { + mergeHigh(start1, length1, start2, length2); + } + } + + function mergeLow(start1, length1, start2, length2) { + var i = 0; + + for (i = 0; i < length1; i++) { + tmp[i] = array[start1 + i]; + } + + var cursor1 = 0; + var cursor2 = start2; + var dest = start1; + + array[dest++] = array[cursor2++]; + + if (--length2 === 0) { + for (i = 0; i < length1; i++) { + array[dest + i] = tmp[cursor1 + i]; + } + return; + } + + if (length1 === 1) { + for (i = 0; i < length2; i++) { + array[dest + i] = array[cursor2 + i]; + } + array[dest + length2] = tmp[cursor1]; + return; + } + + var _minGallop = minGallop; + var count1, count2, exit; + + while (1) { + count1 = 0; + count2 = 0; + exit = false; + + do { + if (compare(array[cursor2], tmp[cursor1]) < 0) { + array[dest++] = array[cursor2++]; + count2++; + count1 = 0; + + if (--length2 === 0) { + exit = true; + break; + } + } + else { + array[dest++] = tmp[cursor1++]; + count1++; + count2 = 0; + if (--length1 === 1) { + exit = true; + break; + } + } + } while ((count1 | count2) < _minGallop); + + if (exit) { + break; + } + + do { + count1 = gallopRight(array[cursor2], tmp, cursor1, length1, 0, compare); + + if (count1 !== 0) { + for (i = 0; i < count1; i++) { + array[dest + i] = tmp[cursor1 + i]; + } + + dest += count1; + cursor1 += count1; + length1 -= count1; + if (length1 <= 1) { + exit = true; + break; + } + } + + array[dest++] = array[cursor2++]; + + if (--length2 === 0) { + exit = true; + break; + } + + count2 = gallopLeft(tmp[cursor1], array, cursor2, length2, 0, compare); + + if (count2 !== 0) { + for (i = 0; i < count2; i++) { + array[dest + i] = array[cursor2 + i]; + } + + dest += count2; + cursor2 += count2; + length2 -= count2; + + if (length2 === 0) { + exit = true; + break; + } + } + array[dest++] = tmp[cursor1++]; + + if (--length1 === 1) { + exit = true; + break; + } + + _minGallop--; + } while (count1 >= DEFAULT_MIN_GALLOPING || count2 >= DEFAULT_MIN_GALLOPING); + + if (exit) { + break; + } + + if (_minGallop < 0) { + _minGallop = 0; + } + + _minGallop += 2; + } + + minGallop = _minGallop; + + minGallop < 1 && (minGallop = 1); + + if (length1 === 1) { + for (i = 0; i < length2; i++) { + array[dest + i] = array[cursor2 + i]; + } + array[dest + length2] = tmp[cursor1]; + } + else if (length1 === 0) { + throw new Error(); + // throw new Error('mergeLow preconditions were not respected'); + } + else { + for (i = 0; i < length1; i++) { + array[dest + i] = tmp[cursor1 + i]; + } + } + } + + function mergeHigh (start1, length1, start2, length2) { + var i = 0; + + for (i = 0; i < length2; i++) { + tmp[i] = array[start2 + i]; + } + + var cursor1 = start1 + length1 - 1; + var cursor2 = length2 - 1; + var dest = start2 + length2 - 1; + var customCursor = 0; + var customDest = 0; + + array[dest--] = array[cursor1--]; + + if (--length1 === 0) { + customCursor = dest - (length2 - 1); + + for (i = 0; i < length2; i++) { + array[customCursor + i] = tmp[i]; + } + + return; + } + + if (length2 === 1) { + dest -= length1; + cursor1 -= length1; + customDest = dest + 1; + customCursor = cursor1 + 1; + + for (i = length1 - 1; i >= 0; i--) { + array[customDest + i] = array[customCursor + i]; + } + + array[dest] = tmp[cursor2]; + return; + } + + var _minGallop = minGallop; + + while (true) { + var count1 = 0; + var count2 = 0; + var exit = false; + + do { + if (compare(tmp[cursor2], array[cursor1]) < 0) { + array[dest--] = array[cursor1--]; + count1++; + count2 = 0; + if (--length1 === 0) { + exit = true; + break; + } + } + else { + array[dest--] = tmp[cursor2--]; + count2++; + count1 = 0; + if (--length2 === 1) { + exit = true; + break; + } + } + } while ((count1 | count2) < _minGallop); + + if (exit) { + break; + } + + do { + count1 = length1 - gallopRight(tmp[cursor2], array, start1, length1, length1 - 1, compare); + + if (count1 !== 0) { + dest -= count1; + cursor1 -= count1; + length1 -= count1; + customDest = dest + 1; + customCursor = cursor1 + 1; + + for (i = count1 - 1; i >= 0; i--) { + array[customDest + i] = array[customCursor + i]; + } + + if (length1 === 0) { + exit = true; + break; + } + } + + array[dest--] = tmp[cursor2--]; + + if (--length2 === 1) { + exit = true; + break; + } + + count2 = length2 - gallopLeft(array[cursor1], tmp, 0, length2, length2 - 1, compare); + + if (count2 !== 0) { + dest -= count2; + cursor2 -= count2; + length2 -= count2; + customDest = dest + 1; + customCursor = cursor2 + 1; + + for (i = 0; i < count2; i++) { + array[customDest + i] = tmp[customCursor + i]; + } + + if (length2 <= 1) { + exit = true; + break; + } + } + + array[dest--] = array[cursor1--]; + + if (--length1 === 0) { + exit = true; + break; + } + + _minGallop--; + } while (count1 >= DEFAULT_MIN_GALLOPING || count2 >= DEFAULT_MIN_GALLOPING); + + if (exit) { + break; + } + + if (_minGallop < 0) { + _minGallop = 0; + } + + _minGallop += 2; + } + + minGallop = _minGallop; + + if (minGallop < 1) { + minGallop = 1; + } + + if (length2 === 1) { + dest -= length1; + cursor1 -= length1; + customDest = dest + 1; + customCursor = cursor1 + 1; + + for (i = length1 - 1; i >= 0; i--) { + array[customDest + i] = array[customCursor + i]; + } + + array[dest] = tmp[cursor2]; + } + else if (length2 === 0) { + throw new Error(); + // throw new Error('mergeHigh preconditions were not respected'); + } + else { + customCursor = dest - (length2 - 1); + for (i = 0; i < length2; i++) { + array[customCursor + i] = tmp[i]; + } + } + } + + this.mergeRuns = mergeRuns; + this.forceMergeRuns = forceMergeRuns; + this.pushRun = pushRun; + } + + function sort(array, compare, lo, hi) { + if (!lo) { + lo = 0; + } + if (!hi) { + hi = array.length; + } + + var remaining = hi - lo; + + if (remaining < 2) { + return; + } + + var runLength = 0; + + if (remaining < DEFAULT_MIN_MERGE) { + runLength = makeAscendingRun(array, lo, hi, compare); + binaryInsertionSort(array, lo, hi, lo + runLength, compare); + return; + } + + var ts = new TimSort(array, compare); + + var minRun = minRunLength(remaining); + + do { + runLength = makeAscendingRun(array, lo, hi, compare); + if (runLength < minRun) { + var force = remaining; + if (force > minRun) { + force = minRun; + } + + binaryInsertionSort(array, lo, lo + force, lo + runLength, compare); + runLength = force; + } + + ts.pushRun(lo, runLength); + ts.mergeRuns(); + + remaining -= runLength; + lo += runLength; + } while (remaining !== 0); + + ts.forceMergeRuns(); + } + + module.exports = sort; + + +/***/ }, +/* 87 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + /** + * 动画主类, 调度和管理所有动画控制器 + * + * @module zrender/animation/Animation + * @author pissang(https://github.com/pissang) + */ + // TODO Additive animation + // http://iosoteric.com/additive-animations-animatewithduration-in-ios-8/ + // https://developer.apple.com/videos/wwdc2014/#236 + + + var util = __webpack_require__(4); + var Dispatcher = __webpack_require__(88).Dispatcher; + + var requestAnimationFrame = __webpack_require__(89); + + var Animator = __webpack_require__(28); + /** + * @typedef {Object} IZRenderStage + * @property {Function} update + */ + + /** + * @alias module:zrender/animation/Animation + * @constructor + * @param {Object} [options] + * @param {Function} [options.onframe] + * @param {IZRenderStage} [options.stage] + * @example + * var animation = new Animation(); + * var obj = { + * x: 100, + * y: 100 + * }; + * animation.animate(node.position) + * .when(1000, { + * x: 500, + * y: 500 + * }) + * .when(2000, { + * x: 100, + * y: 100 + * }) + * .start('spline'); + */ + var Animation = function (options) { + + options = options || {}; + + this.stage = options.stage || {}; + + this.onframe = options.onframe || function() {}; + + // private properties + this._clips = []; + + this._running = false; + + this._time; + + this._pausedTime; + + this._pauseStart; + + this._paused = false; + + Dispatcher.call(this); + }; + + Animation.prototype = { + + constructor: Animation, + /** + * 添加 clip + * @param {module:zrender/animation/Clip} clip + */ + addClip: function (clip) { + this._clips.push(clip); + }, + /** + * 添加 animator + * @param {module:zrender/animation/Animator} animator + */ + addAnimator: function (animator) { + animator.animation = this; + var clips = animator.getClips(); + for (var i = 0; i < clips.length; i++) { + this.addClip(clips[i]); + } + }, + /** + * 删除动画片段 + * @param {module:zrender/animation/Clip} clip + */ + removeClip: function(clip) { + var idx = util.indexOf(this._clips, clip); + if (idx >= 0) { + this._clips.splice(idx, 1); + } + }, + + /** + * 删除动画片段 + * @param {module:zrender/animation/Animator} animator + */ + removeAnimator: function (animator) { + var clips = animator.getClips(); + for (var i = 0; i < clips.length; i++) { + this.removeClip(clips[i]); + } + animator.animation = null; + }, + + _update: function() { + + var time = new Date().getTime() - this._pausedTime; + var delta = time - this._time; + var clips = this._clips; + var len = clips.length; + + var deferredEvents = []; + var deferredClips = []; + for (var i = 0; i < len; i++) { + var clip = clips[i]; + var e = clip.step(time, delta); + // Throw out the events need to be called after + // stage.update, like destroy + if (e) { + deferredEvents.push(e); + deferredClips.push(clip); + } + } + + // Remove the finished clip + for (var i = 0; i < len;) { + if (clips[i]._needsRemove) { + clips[i] = clips[len - 1]; + clips.pop(); + len--; + } + else { + i++; + } + } + + len = deferredEvents.length; + for (var i = 0; i < len; i++) { + deferredClips[i].fire(deferredEvents[i]); + } + + this._time = time; + + this.onframe(delta); + + this.trigger('frame', delta); + + if (this.stage.update) { + this.stage.update(); + } + }, + + _startLoop: function () { + var self = this; + + this._running = true; + + function step() { + if (self._running) { + + requestAnimationFrame(step); + + !self._paused && self._update(); + } + } + + requestAnimationFrame(step); + }, + + /** + * 开始运行动画 + */ + start: function () { + + this._time = new Date().getTime(); + this._pausedTime = 0; + + this._startLoop(); + }, + /** + * 停止运行动画 + */ + stop: function () { + this._running = false; + }, + + /** + * Pause + */ + pause: function () { + if (!this._paused) { + this._pauseStart = new Date().getTime(); + this._paused = true; + } + }, + + /** + * Resume + */ + resume: function () { + if (this._paused) { + this._pausedTime += (new Date().getTime()) - this._pauseStart; + this._paused = false; + } + }, + + /** + * 清除所有动画片段 + */ + clear: function () { + this._clips = []; + }, + /** + * 对一个目标创建一个animator对象,可以指定目标中的属性使用动画 + * @param {Object} target + * @param {Object} options + * @param {boolean} [options.loop=false] 是否循环播放动画 + * @param {Function} [options.getter=null] + * 如果指定getter函数,会通过getter函数取属性值 + * @param {Function} [options.setter=null] + * 如果指定setter函数,会通过setter函数设置属性值 + * @return {module:zrender/animation/Animation~Animator} + */ + // TODO Gap + animate: function (target, options) { + options = options || {}; + + var animator = new Animator( + target, + options.loop, + options.getter, + options.setter + ); + + this.addAnimator(animator); + + return animator; + } + }; + + util.mixin(Animation, Dispatcher); + + module.exports = Animation; + + + +/***/ }, +/* 88 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + /** + * 事件辅助类 + * @module zrender/core/event + * @author Kener (@Kener-林峰, kener.linfeng@gmail.com) + */ + + + var Eventful = __webpack_require__(25); + var env = __webpack_require__(2); + + var isDomLevel2 = (typeof window !== 'undefined') && !!window.addEventListener; + + function getBoundingClientRect(el) { + // BlackBerry 5, iOS 3 (original iPhone) don't have getBoundingRect + return el.getBoundingClientRect ? el.getBoundingClientRect() : {left: 0, top: 0}; + } + + // `calculate` is optional, default false + function clientToLocal(el, e, out, calculate) { + out = out || {}; + + // According to the W3C Working Draft, offsetX and offsetY should be relative + // to the padding edge of the target element. The only browser using this convention + // is IE. Webkit uses the border edge, Opera uses the content edge, and FireFox does + // not support the properties. + // (see http://www.jacklmoore.com/notes/mouse-position/) + // In zr painter.dom, padding edge equals to border edge. + + // FIXME + // When mousemove event triggered on ec tooltip, target is not zr painter.dom, and + // offsetX/Y is relative to e.target, where the calculation of zrX/Y via offsetX/Y + // is too complex. So css-transfrom dont support in this case temporarily. + if (calculate || !env.canvasSupported) { + defaultGetZrXY(el, e, out); + } + // Caution: In FireFox, layerX/layerY Mouse position relative to the closest positioned + // ancestor element, so we should make sure el is positioned (e.g., not position:static). + // BTW1, Webkit don't return the same results as FF in non-simple cases (like add + // zoom-factor, overflow / opacity layers, transforms ...) + // BTW2, (ev.offsetY || ev.pageY - $(ev.target).offset().top) is not correct in preserve-3d. + // + // BTW3, In ff, offsetX/offsetY is always 0. + else if (env.browser.firefox && e.layerX != null && e.layerX !== e.offsetX) { + out.zrX = e.layerX; + out.zrY = e.layerY; + } + // For IE6+, chrome, safari, opera. (When will ff support offsetX?) + else if (e.offsetX != null) { + out.zrX = e.offsetX; + out.zrY = e.offsetY; + } + // For some other device, e.g., IOS safari. + else { + defaultGetZrXY(el, e, out); + } + + return out; + } + + function defaultGetZrXY(el, e, out) { + // This well-known method below does not support css transform. + var box = getBoundingClientRect(el); + out.zrX = e.clientX - box.left; + out.zrY = e.clientY - box.top; + } + + /** + * 如果存在第三方嵌入的一些dom触发的事件,或touch事件,需要转换一下事件坐标. + * `calculate` is optional, default false. + */ + function normalizeEvent(el, e, calculate) { + + e = e || window.event; + + if (e.zrX != null) { + return e; + } + + var eventType = e.type; + var isTouch = eventType && eventType.indexOf('touch') >= 0; + + if (!isTouch) { + clientToLocal(el, e, e, calculate); + e.zrDelta = (e.wheelDelta) ? e.wheelDelta / 120 : -(e.detail || 0) / 3; + } + else { + var touch = eventType != 'touchend' + ? e.targetTouches[0] + : e.changedTouches[0]; + touch && clientToLocal(el, touch, e, calculate); + } + + return e; + } + + function addEventListener(el, name, handler) { + if (isDomLevel2) { + el.addEventListener(name, handler); + } + else { + el.attachEvent('on' + name, handler); + } + } + + function removeEventListener(el, name, handler) { + if (isDomLevel2) { + el.removeEventListener(name, handler); + } + else { + el.detachEvent('on' + name, handler); + } + } + + /** + * preventDefault and stopPropagation. + * Notice: do not do that in zrender. Upper application + * do that if necessary. + * + * @memberOf module:zrender/core/event + * @method + * @param {Event} e : event对象 + */ + var stop = isDomLevel2 + ? function (e) { + e.preventDefault(); + e.stopPropagation(); + e.cancelBubble = true; + } + : function (e) { + e.returnValue = false; + e.cancelBubble = true; + }; + + module.exports = { + clientToLocal: clientToLocal, + normalizeEvent: normalizeEvent, + addEventListener: addEventListener, + removeEventListener: removeEventListener, + + stop: stop, + // 做向上兼容 + Dispatcher: Eventful + }; + + + +/***/ }, +/* 89 */ +/***/ function(module, exports) { + + + + module.exports = (typeof window !== 'undefined' && + ((window.requestAnimationFrame && window.requestAnimationFrame.bind(window)) + // https://github.com/ecomfe/zrender/issues/189#issuecomment-224919809 + || (window.msRequestAnimationFrame && window.msRequestAnimationFrame.bind(window)) + || window.mozRequestAnimationFrame + || window.webkitRequestAnimationFrame) + ) + || function (func) { + setTimeout(func, 16); + }; + + + +/***/ }, +/* 90 */ +/***/ function(module, exports, __webpack_require__) { + + + + var eventTool = __webpack_require__(88); + var zrUtil = __webpack_require__(4); + var Eventful = __webpack_require__(25); + var env = __webpack_require__(2); + var GestureMgr = __webpack_require__(91); + + var addEventListener = eventTool.addEventListener; + var removeEventListener = eventTool.removeEventListener; + var normalizeEvent = eventTool.normalizeEvent; + + var TOUCH_CLICK_DELAY = 300; + + var mouseHandlerNames = [ + 'click', 'dblclick', 'mousewheel', 'mouseout', + 'mouseup', 'mousedown', 'mousemove', 'contextmenu' + ]; + + var touchHandlerNames = [ + 'touchstart', 'touchend', 'touchmove' + ]; + + var pointerEventNames = { + pointerdown: 1, pointerup: 1, pointermove: 1, pointerout: 1 + }; + + var pointerHandlerNames = zrUtil.map(mouseHandlerNames, function (name) { + var nm = name.replace('mouse', 'pointer'); + return pointerEventNames[nm] ? nm : name; + }); + + function eventNameFix(name) { + return (name === 'mousewheel' && env.browser.firefox) ? 'DOMMouseScroll' : name; + } + + function processGesture(proxy, event, stage) { + var gestureMgr = proxy._gestureMgr; + + stage === 'start' && gestureMgr.clear(); + + var gestureInfo = gestureMgr.recognize( + event, + proxy.handler.findHover(event.zrX, event.zrY, null).target, + proxy.dom + ); + + stage === 'end' && gestureMgr.clear(); + + // Do not do any preventDefault here. Upper application do that if necessary. + if (gestureInfo) { + var type = gestureInfo.type; + event.gestureEvent = type; + + proxy.handler.dispatchToElement({target: gestureInfo.target}, type, gestureInfo.event); + } + } + + // function onMSGestureChange(proxy, event) { + // if (event.translationX || event.translationY) { + // // mousemove is carried by MSGesture to reduce the sensitivity. + // proxy.handler.dispatchToElement(event.target, 'mousemove', event); + // } + // if (event.scale !== 1) { + // event.pinchX = event.offsetX; + // event.pinchY = event.offsetY; + // event.pinchScale = event.scale; + // proxy.handler.dispatchToElement(event.target, 'pinch', event); + // } + // } + + /** + * Prevent mouse event from being dispatched after Touch Events action + * @see + * 1. Mobile browsers dispatch mouse events 300ms after touchend. + * 2. Chrome for Android dispatch mousedown for long-touch about 650ms + * Result: Blocking Mouse Events for 700ms. + */ + function setTouchTimer(instance) { + instance._touching = true; + clearTimeout(instance._touchTimer); + instance._touchTimer = setTimeout(function () { + instance._touching = false; + }, 700); + } + + + var domHandlers = { + /** + * Mouse move handler + * @inner + * @param {Event} event + */ + mousemove: function (event) { + event = normalizeEvent(this.dom, event); + + this.trigger('mousemove', event); + }, + + /** + * Mouse out handler + * @inner + * @param {Event} event + */ + mouseout: function (event) { + event = normalizeEvent(this.dom, event); + + var element = event.toElement || event.relatedTarget; + if (element != this.dom) { + while (element && element.nodeType != 9) { + // 忽略包含在root中的dom引起的mouseOut + if (element === this.dom) { + return; + } + + element = element.parentNode; + } + } + + this.trigger('mouseout', event); + }, + + /** + * Touch开始响应函数 + * @inner + * @param {Event} event + */ + touchstart: function (event) { + // Default mouse behaviour should not be disabled here. + // For example, page may needs to be slided. + event = normalizeEvent(this.dom, event); + + // Mark touch, which is useful in distinguish touch and + // mouse event in upper applicatoin. + event.zrByTouch = true; + + this._lastTouchMoment = new Date(); + + processGesture(this, event, 'start'); + + // In touch device, trigger `mousemove`(`mouseover`) should + // be triggered, and must before `mousedown` triggered. + domHandlers.mousemove.call(this, event); + + domHandlers.mousedown.call(this, event); + + setTouchTimer(this); + }, + + /** + * Touch移动响应函数 + * @inner + * @param {Event} event + */ + touchmove: function (event) { + + event = normalizeEvent(this.dom, event); + + // Mark touch, which is useful in distinguish touch and + // mouse event in upper applicatoin. + event.zrByTouch = true; + + processGesture(this, event, 'change'); + + // Mouse move should always be triggered no matter whether + // there is gestrue event, because mouse move and pinch may + // be used at the same time. + domHandlers.mousemove.call(this, event); + + setTouchTimer(this); + }, + + /** + * Touch结束响应函数 + * @inner + * @param {Event} event + */ + touchend: function (event) { + + event = normalizeEvent(this.dom, event); + + // Mark touch, which is useful in distinguish touch and + // mouse event in upper applicatoin. + event.zrByTouch = true; + + processGesture(this, event, 'end'); + + domHandlers.mouseup.call(this, event); + + // Do not trigger `mouseout` here, in spite of `mousemove`(`mouseover`) is + // triggered in `touchstart`. This seems to be illogical, but by this mechanism, + // we can conveniently implement "hover style" in both PC and touch device just + // by listening to `mouseover` to add "hover style" and listening to `mouseout` + // to remove "hover style" on an element, without any additional code for + // compatibility. (`mouseout` will not be triggered in `touchend`, so "hover + // style" will remain for user view) + + // click event should always be triggered no matter whether + // there is gestrue event. System click can not be prevented. + if (+new Date() - this._lastTouchMoment < TOUCH_CLICK_DELAY) { + domHandlers.click.call(this, event); + } + + setTouchTimer(this); + }, + + pointerdown: function (event) { + domHandlers.mousedown.call(this, event); + + // if (useMSGuesture(this, event)) { + // this._msGesture.addPointer(event.pointerId); + // } + }, + + pointermove: function (event) { + // FIXME + // pointermove is so sensitive that it always triggered when + // tap(click) on touch screen, which affect some judgement in + // upper application. So, we dont support mousemove on MS touch + // device yet. + if (!isPointerFromTouch(event)) { + domHandlers.mousemove.call(this, event); + } + }, + + pointerup: function (event) { + domHandlers.mouseup.call(this, event); + }, + + pointerout: function (event) { + // pointerout will be triggered when tap on touch screen + // (IE11+/Edge on MS Surface) after click event triggered, + // which is inconsistent with the mousout behavior we defined + // in touchend. So we unify them. + // (check domHandlers.touchend for detailed explanation) + if (!isPointerFromTouch(event)) { + domHandlers.mouseout.call(this, event); + } + } + }; + + function isPointerFromTouch(event) { + var pointerType = event.pointerType; + return pointerType === 'pen' || pointerType === 'touch'; + } + + // function useMSGuesture(handlerProxy, event) { + // return isPointerFromTouch(event) && !!handlerProxy._msGesture; + // } + + // Common handlers + zrUtil.each(['click', 'mousedown', 'mouseup', 'mousewheel', 'dblclick', 'contextmenu'], function (name) { + domHandlers[name] = function (event) { + event = normalizeEvent(this.dom, event); + this.trigger(name, event); + }; + }); + + /** + * 为控制类实例初始化dom 事件处理函数 + * + * @inner + * @param {module:zrender/Handler} instance 控制类实例 + */ + function initDomHandler(instance) { + zrUtil.each(touchHandlerNames, function (name) { + instance._handlers[name] = zrUtil.bind(domHandlers[name], instance); + }); + + zrUtil.each(pointerHandlerNames, function (name) { + instance._handlers[name] = zrUtil.bind(domHandlers[name], instance); + }); + + zrUtil.each(mouseHandlerNames, function (name) { + instance._handlers[name] = makeMouseHandler(domHandlers[name], instance); + }); + + function makeMouseHandler(fn, instance) { + return function () { + if (instance._touching) { + return; + } + return fn.apply(instance, arguments); + }; + } + } + + + function HandlerDomProxy(dom) { + Eventful.call(this); + + this.dom = dom; + + /** + * @private + * @type {boolean} + */ + this._touching = false; + + /** + * @private + * @type {number} + */ + this._touchTimer; + + /** + * @private + * @type {module:zrender/core/GestureMgr} + */ + this._gestureMgr = new GestureMgr(); + + this._handlers = {}; + + initDomHandler(this); + + if (env.pointerEventsSupported) { // Only IE11+/Edge + // 1. On devices that both enable touch and mouse (e.g., MS Surface and lenovo X240), + // IE11+/Edge do not trigger touch event, but trigger pointer event and mouse event + // at the same time. + // 2. On MS Surface, it probablely only trigger mousedown but no mouseup when tap on + // screen, which do not occurs in pointer event. + // So we use pointer event to both detect touch gesture and mouse behavior. + mountHandlers(pointerHandlerNames, this); + + // FIXME + // Note: MS Gesture require CSS touch-action set. But touch-action is not reliable, + // which does not prevent defuault behavior occasionally (which may cause view port + // zoomed in but use can not zoom it back). And event.preventDefault() does not work. + // So we have to not to use MSGesture and not to support touchmove and pinch on MS + // touch screen. And we only support click behavior on MS touch screen now. + + // MS Gesture Event is only supported on IE11+/Edge and on Windows 8+. + // We dont support touch on IE on win7. + // See + // if (typeof MSGesture === 'function') { + // (this._msGesture = new MSGesture()).target = dom; // jshint ignore:line + // dom.addEventListener('MSGestureChange', onMSGestureChange); + // } + } + else { + if (env.touchEventsSupported) { + mountHandlers(touchHandlerNames, this); + // Handler of 'mouseout' event is needed in touch mode, which will be mounted below. + // addEventListener(root, 'mouseout', this._mouseoutHandler); + } + + // 1. Considering some devices that both enable touch and mouse event (like on MS Surface + // and lenovo X240, @see #2350), we make mouse event be always listened, otherwise + // mouse event can not be handle in those devices. + // 2. On MS Surface, Chrome will trigger both touch event and mouse event. How to prevent + // mouseevent after touch event triggered, see `setTouchTimer`. + mountHandlers(mouseHandlerNames, this); + } + + function mountHandlers(handlerNames, instance) { + zrUtil.each(handlerNames, function (name) { + addEventListener(dom, eventNameFix(name), instance._handlers[name]); + }, instance); + } + } + + var handlerDomProxyProto = HandlerDomProxy.prototype; + handlerDomProxyProto.dispose = function () { + var handlerNames = mouseHandlerNames.concat(touchHandlerNames); + + for (var i = 0; i < handlerNames.length; i++) { + var name = handlerNames[i]; + removeEventListener(this.dom, eventNameFix(name), this._handlers[name]); + } + }; + + handlerDomProxyProto.setCursor = function (cursorStyle) { + this.dom.style.cursor = cursorStyle || 'default'; + }; + + zrUtil.mixin(HandlerDomProxy, Eventful); + + module.exports = HandlerDomProxy; + + +/***/ }, +/* 91 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + /** + * Only implements needed gestures for mobile. + */ + + + var eventUtil = __webpack_require__(88); + + var GestureMgr = function () { + + /** + * @private + * @type {Array.} + */ + this._track = []; + }; + + GestureMgr.prototype = { + + constructor: GestureMgr, + + recognize: function (event, target, root) { + this._doTrack(event, target, root); + return this._recognize(event); + }, + + clear: function () { + this._track.length = 0; + return this; + }, + + _doTrack: function (event, target, root) { + var touches = event.touches; + + if (!touches) { + return; + } + + var trackItem = { + points: [], + touches: [], + target: target, + event: event + }; + + for (var i = 0, len = touches.length; i < len; i++) { + var touch = touches[i]; + var pos = eventUtil.clientToLocal(root, touch, {}); + trackItem.points.push([pos.zrX, pos.zrY]); + trackItem.touches.push(touch); + } + + this._track.push(trackItem); + }, + + _recognize: function (event) { + for (var eventName in recognizers) { + if (recognizers.hasOwnProperty(eventName)) { + var gestureInfo = recognizers[eventName](this._track, event); + if (gestureInfo) { + return gestureInfo; + } + } + } + } + }; + + function dist(pointPair) { + var dx = pointPair[1][0] - pointPair[0][0]; + var dy = pointPair[1][1] - pointPair[0][1]; + + return Math.sqrt(dx * dx + dy * dy); + } + + function center(pointPair) { + return [ + (pointPair[0][0] + pointPair[1][0]) / 2, + (pointPair[0][1] + pointPair[1][1]) / 2 + ]; + } + + var recognizers = { + + pinch: function (track, event) { + var trackLen = track.length; + + if (!trackLen) { + return; + } + + var pinchEnd = (track[trackLen - 1] || {}).points; + var pinchPre = (track[trackLen - 2] || {}).points || pinchEnd; + + if (pinchPre + && pinchPre.length > 1 + && pinchEnd + && pinchEnd.length > 1 + ) { + var pinchScale = dist(pinchEnd) / dist(pinchPre); + !isFinite(pinchScale) && (pinchScale = 1); + + event.pinchScale = pinchScale; + + var pinchCenter = center(pinchEnd); + event.pinchX = pinchCenter[0]; + event.pinchY = pinchCenter[1]; + + return { + type: 'pinch', + target: track[0].target, + event: event + }; + } + } + + // Only pinch currently. + }; + + module.exports = GestureMgr; + + + +/***/ }, +/* 92 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + /** + * Default canvas painter + * @module zrender/Painter + * @author Kener (@Kener-林峰, kener.linfeng@gmail.com) + * errorrik (errorrik@gmail.com) + * pissang (https://www.github.com/pissang) + */ + + + var config = __webpack_require__(34); + var util = __webpack_require__(4); + var log = __webpack_require__(33); + var BoundingRect = __webpack_require__(9); + var timsort = __webpack_require__(86); + + var Layer = __webpack_require__(93); + + var requestAnimationFrame = __webpack_require__(89); + + // PENDIGN + // Layer exceeds MAX_PROGRESSIVE_LAYER_NUMBER may have some problem when flush directly second time. + // + // Maximum progressive layer. When exceeding this number. All elements will be drawed in the last layer. + var MAX_PROGRESSIVE_LAYER_NUMBER = 5; + + function parseInt10(val) { + return parseInt(val, 10); + } + + function isLayerValid(layer) { + if (!layer) { + return false; + } + + if (layer.__builtin__) { + return true; + } + + if (typeof(layer.resize) !== 'function' + || typeof(layer.refresh) !== 'function' + ) { + return false; + } + + return true; + } + + function preProcessLayer(layer) { + layer.__unusedCount++; + } + + function postProcessLayer(layer) { + if (layer.__unusedCount == 1) { + layer.clear(); + } + } + + var tmpRect = new BoundingRect(0, 0, 0, 0); + var viewRect = new BoundingRect(0, 0, 0, 0); + function isDisplayableCulled(el, width, height) { + tmpRect.copy(el.getBoundingRect()); + if (el.transform) { + tmpRect.applyTransform(el.transform); + } + viewRect.width = width; + viewRect.height = height; + return !tmpRect.intersect(viewRect); + } + + function isClipPathChanged(clipPaths, prevClipPaths) { + if (clipPaths == prevClipPaths) { // Can both be null or undefined + return false; + } + + if (!clipPaths || !prevClipPaths || (clipPaths.length !== prevClipPaths.length)) { + return true; + } + for (var i = 0; i < clipPaths.length; i++) { + if (clipPaths[i] !== prevClipPaths[i]) { + return true; + } + } + } + + function doClip(clipPaths, ctx) { + for (var i = 0; i < clipPaths.length; i++) { + var clipPath = clipPaths[i]; + + clipPath.setTransform(ctx); + ctx.beginPath(); + clipPath.buildPath(ctx, clipPath.shape); + ctx.clip(); + // Transform back + clipPath.restoreTransform(ctx); + } + } + + function createRoot(width, height) { + var domRoot = document.createElement('div'); + + // domRoot.onselectstart = returnFalse; // 避免页面选中的尴尬 + domRoot.style.cssText = [ + 'position:relative', + 'overflow:hidden', + 'width:' + width + 'px', + 'height:' + height + 'px', + 'padding:0', + 'margin:0', + 'border-width:0' + ].join(';') + ';'; + + return domRoot; + } + + /** + * @alias module:zrender/Painter + * @constructor + * @param {HTMLElement} root 绘图容器 + * @param {module:zrender/Storage} storage + * @param {Ojbect} opts + */ + var Painter = function (root, storage, opts) { + // In node environment using node-canvas + var singleCanvas = !root.nodeName // In node ? + || root.nodeName.toUpperCase() === 'CANVAS'; + + this._opts = opts = util.extend({}, opts || {}); + + /** + * @type {number} + */ + this.dpr = opts.devicePixelRatio || config.devicePixelRatio; + /** + * @type {boolean} + * @private + */ + this._singleCanvas = singleCanvas; + /** + * 绘图容器 + * @type {HTMLElement} + */ + this.root = root; + + var rootStyle = root.style; + + if (rootStyle) { + rootStyle['-webkit-tap-highlight-color'] = 'transparent'; + rootStyle['-webkit-user-select'] = + rootStyle['user-select'] = + rootStyle['-webkit-touch-callout'] = 'none'; + + root.innerHTML = ''; + } + + /** + * @type {module:zrender/Storage} + */ + this.storage = storage; + + /** + * @type {Array.} + * @private + */ + var zlevelList = this._zlevelList = []; + + /** + * @type {Object.} + * @private + */ + var layers = this._layers = {}; + + /** + * @type {Object.} + * @type {private} + */ + this._layerConfig = {}; + + if (!singleCanvas) { + this._width = this._getSize(0); + this._height = this._getSize(1); + + var domRoot = this._domRoot = createRoot( + this._width, this._height + ); + root.appendChild(domRoot); + } + else { + if (opts.width != null) { + root.width = opts.width; + } + if (opts.height != null) { + root.height = opts.height; + } + // Use canvas width and height directly + var width = root.width; + var height = root.height; + this._width = width; + this._height = height; + + // Create layer if only one given canvas + // Device pixel ratio is fixed to 1 because given canvas has its specified width and height + var mainLayer = new Layer(root, this, 1); + mainLayer.initContext(); + // FIXME Use canvas width and height + // mainLayer.resize(width, height); + layers[0] = mainLayer; + zlevelList.push(0); + + this._domRoot = root; + } + + // Layers for progressive rendering + this._progressiveLayers = []; + + /** + * @type {module:zrender/Layer} + * @private + */ + this._hoverlayer; + + this._hoverElements = []; + }; + + Painter.prototype = { + + constructor: Painter, + + /** + * If painter use a single canvas + * @return {boolean} + */ + isSingleCanvas: function () { + return this._singleCanvas; + }, + /** + * @return {HTMLDivElement} + */ + getViewportRoot: function () { + return this._domRoot; + }, + + /** + * 刷新 + * @param {boolean} [paintAll=false] 强制绘制所有displayable + */ + refresh: function (paintAll) { + + var list = this.storage.getDisplayList(true); + + var zlevelList = this._zlevelList; + + this._paintList(list, paintAll); + + // Paint custum layers + for (var i = 0; i < zlevelList.length; i++) { + var z = zlevelList[i]; + var layer = this._layers[z]; + if (!layer.__builtin__ && layer.refresh) { + layer.refresh(); + } + } + + this.refreshHover(); + + if (this._progressiveLayers.length) { + this._startProgessive(); + } + + return this; + }, + + addHover: function (el, hoverStyle) { + if (el.__hoverMir) { + return; + } + var elMirror = new el.constructor({ + style: el.style, + shape: el.shape + }); + elMirror.__from = el; + el.__hoverMir = elMirror; + elMirror.setStyle(hoverStyle); + this._hoverElements.push(elMirror); + }, + + removeHover: function (el) { + var elMirror = el.__hoverMir; + var hoverElements = this._hoverElements; + var idx = util.indexOf(hoverElements, elMirror); + if (idx >= 0) { + hoverElements.splice(idx, 1); + } + el.__hoverMir = null; + }, + + clearHover: function (el) { + var hoverElements = this._hoverElements; + for (var i = 0; i < hoverElements.length; i++) { + var from = hoverElements[i].__from; + if (from) { + from.__hoverMir = null; + } + } + hoverElements.length = 0; + }, + + refreshHover: function () { + var hoverElements = this._hoverElements; + var len = hoverElements.length; + var hoverLayer = this._hoverlayer; + hoverLayer && hoverLayer.clear(); + + if (!len) { + return; + } + timsort(hoverElements, this.storage.displayableSortFunc); + + // Use a extream large zlevel + // FIXME? + if (!hoverLayer) { + hoverLayer = this._hoverlayer = this.getLayer(1e5); + } + + var scope = {}; + hoverLayer.ctx.save(); + for (var i = 0; i < len;) { + var el = hoverElements[i]; + var originalEl = el.__from; + // Original el is removed + // PENDING + if (!(originalEl && originalEl.__zr)) { + hoverElements.splice(i, 1); + originalEl.__hoverMir = null; + len--; + continue; + } + i++; + + // Use transform + // FIXME style and shape ? + if (!originalEl.invisible) { + el.transform = originalEl.transform; + el.invTransform = originalEl.invTransform; + el.__clipPaths = originalEl.__clipPaths; + // el. + this._doPaintEl(el, hoverLayer, true, scope); + } + } + hoverLayer.ctx.restore(); + }, + + _startProgessive: function () { + var self = this; + + if (!self._furtherProgressive) { + return; + } + + // Use a token to stop progress steps triggered by + // previous zr.refresh calling. + var token = self._progressiveToken = +new Date(); + + self._progress++; + requestAnimationFrame(step); + + function step() { + // In case refreshed or disposed + if (token === self._progressiveToken && self.storage) { + + self._doPaintList(self.storage.getDisplayList()); + + if (self._furtherProgressive) { + self._progress++; + requestAnimationFrame(step); + } + else { + self._progressiveToken = -1; + } + } + } + }, + + _clearProgressive: function () { + this._progressiveToken = -1; + this._progress = 0; + util.each(this._progressiveLayers, function (layer) { + layer.__dirty && layer.clear(); + }); + }, + + _paintList: function (list, paintAll) { + + if (paintAll == null) { + paintAll = false; + } + + this._updateLayerStatus(list); + + this._clearProgressive(); + + this.eachBuiltinLayer(preProcessLayer); + + this._doPaintList(list, paintAll); + + this.eachBuiltinLayer(postProcessLayer); + }, + + _doPaintList: function (list, paintAll) { + var currentLayer; + var currentZLevel; + var ctx; + + // var invTransform = []; + var scope; + + var progressiveLayerIdx = 0; + var currentProgressiveLayer; + + var width = this._width; + var height = this._height; + var layerProgress; + var frame = this._progress; + function flushProgressiveLayer(layer) { + var dpr = ctx.dpr || 1; + ctx.save(); + ctx.globalAlpha = 1; + ctx.shadowBlur = 0; + // Avoid layer don't clear in next progressive frame + currentLayer.__dirty = true; + ctx.setTransform(1, 0, 0, 1, 0, 0); + ctx.drawImage(layer.dom, 0, 0, width * dpr, height * dpr); + ctx.restore(); + } + + for (var i = 0, l = list.length; i < l; i++) { + var el = list[i]; + var elZLevel = this._singleCanvas ? 0 : el.zlevel; + + var elFrame = el.__frame; + + // Flush at current context + // PENDING + if (elFrame < 0 && currentProgressiveLayer) { + flushProgressiveLayer(currentProgressiveLayer); + currentProgressiveLayer = null; + } + + // Change draw layer + if (currentZLevel !== elZLevel) { + if (ctx) { + ctx.restore(); + } + + // Reset scope + scope = {}; + + // Only 0 zlevel if only has one canvas + currentZLevel = elZLevel; + currentLayer = this.getLayer(currentZLevel); + + if (!currentLayer.__builtin__) { + log( + 'ZLevel ' + currentZLevel + + ' has been used by unkown layer ' + currentLayer.id + ); + } + + ctx = currentLayer.ctx; + ctx.save(); + + // Reset the count + currentLayer.__unusedCount = 0; + + if (currentLayer.__dirty || paintAll) { + currentLayer.clear(); + } + } + + if (!(currentLayer.__dirty || paintAll)) { + continue; + } + + if (elFrame >= 0) { + // Progressive layer changed + if (!currentProgressiveLayer) { + currentProgressiveLayer = this._progressiveLayers[ + Math.min(progressiveLayerIdx++, MAX_PROGRESSIVE_LAYER_NUMBER - 1) + ]; + + currentProgressiveLayer.ctx.save(); + currentProgressiveLayer.renderScope = {}; + + if (currentProgressiveLayer + && (currentProgressiveLayer.__progress > currentProgressiveLayer.__maxProgress) + ) { + // flushProgressiveLayer(currentProgressiveLayer); + // Quick jump all progressive elements + // All progressive element are not dirty, jump over and flush directly + i = currentProgressiveLayer.__nextIdxNotProg - 1; + // currentProgressiveLayer = null; + continue; + } + + layerProgress = currentProgressiveLayer.__progress; + + if (!currentProgressiveLayer.__dirty) { + // Keep rendering + frame = layerProgress; + } + + currentProgressiveLayer.__progress = frame + 1; + } + + if (elFrame === frame) { + this._doPaintEl(el, currentProgressiveLayer, true, currentProgressiveLayer.renderScope); + } + } + else { + this._doPaintEl(el, currentLayer, paintAll, scope); + } + + el.__dirty = false; + } + + if (currentProgressiveLayer) { + flushProgressiveLayer(currentProgressiveLayer); + } + + // Restore the lastLayer ctx + ctx && ctx.restore(); + // If still has clipping state + // if (scope.prevElClipPaths) { + // ctx.restore(); + // } + + this._furtherProgressive = false; + util.each(this._progressiveLayers, function (layer) { + if (layer.__maxProgress >= layer.__progress) { + this._furtherProgressive = true; + } + }, this); + }, + + _doPaintEl: function (el, currentLayer, forcePaint, scope) { + var ctx = currentLayer.ctx; + var m = el.transform; + if ( + (currentLayer.__dirty || forcePaint) + // Ignore invisible element + && !el.invisible + // Ignore transparent element + && el.style.opacity !== 0 + // Ignore scale 0 element, in some environment like node-canvas + // Draw a scale 0 element can cause all following draw wrong + // And setTransform with scale 0 will cause set back transform failed. + && !(m && !m[0] && !m[3]) + // Ignore culled element + && !(el.culling && isDisplayableCulled(el, this._width, this._height)) + ) { + + var clipPaths = el.__clipPaths; + + // Optimize when clipping on group with several elements + if (scope.prevClipLayer !== currentLayer + || isClipPathChanged(clipPaths, scope.prevElClipPaths) + ) { + // If has previous clipping state, restore from it + if (scope.prevElClipPaths) { + scope.prevClipLayer.ctx.restore(); + scope.prevClipLayer = scope.prevElClipPaths = null; + + // Reset prevEl since context has been restored + scope.prevEl = null; + } + // New clipping state + if (clipPaths) { + ctx.save(); + doClip(clipPaths, ctx); + scope.prevClipLayer = currentLayer; + scope.prevElClipPaths = clipPaths; + } + } + el.beforeBrush && el.beforeBrush(ctx); + + el.brush(ctx, scope.prevEl || null); + scope.prevEl = el; + + el.afterBrush && el.afterBrush(ctx); + } + }, + + /** + * 获取 zlevel 所在层,如果不存在则会创建一个新的层 + * @param {number} zlevel + * @return {module:zrender/Layer} + */ + getLayer: function (zlevel) { + if (this._singleCanvas) { + return this._layers[0]; + } + + var layer = this._layers[zlevel]; + if (!layer) { + // Create a new layer + layer = new Layer('zr_' + zlevel, this, this.dpr); + layer.__builtin__ = true; + + if (this._layerConfig[zlevel]) { + util.merge(layer, this._layerConfig[zlevel], true); + } + + this.insertLayer(zlevel, layer); + + // Context is created after dom inserted to document + // Or excanvas will get 0px clientWidth and clientHeight + layer.initContext(); + } + + return layer; + }, + + insertLayer: function (zlevel, layer) { + + var layersMap = this._layers; + var zlevelList = this._zlevelList; + var len = zlevelList.length; + var prevLayer = null; + var i = -1; + var domRoot = this._domRoot; + + if (layersMap[zlevel]) { + log('ZLevel ' + zlevel + ' has been used already'); + return; + } + // Check if is a valid layer + if (!isLayerValid(layer)) { + log('Layer of zlevel ' + zlevel + ' is not valid'); + return; + } + + if (len > 0 && zlevel > zlevelList[0]) { + for (i = 0; i < len - 1; i++) { + if ( + zlevelList[i] < zlevel + && zlevelList[i + 1] > zlevel + ) { + break; + } + } + prevLayer = layersMap[zlevelList[i]]; + } + zlevelList.splice(i + 1, 0, zlevel); + + layersMap[zlevel] = layer; + + // Vitual layer will not directly show on the screen. + // (It can be a WebGL layer and assigned to a ZImage element) + // But it still under management of zrender. + if (!layer.virtual) { + if (prevLayer) { + var prevDom = prevLayer.dom; + if (prevDom.nextSibling) { + domRoot.insertBefore( + layer.dom, + prevDom.nextSibling + ); + } + else { + domRoot.appendChild(layer.dom); + } + } + else { + if (domRoot.firstChild) { + domRoot.insertBefore(layer.dom, domRoot.firstChild); + } + else { + domRoot.appendChild(layer.dom); + } + } + } + }, + + // Iterate each layer + eachLayer: function (cb, context) { + var zlevelList = this._zlevelList; + var z; + var i; + for (i = 0; i < zlevelList.length; i++) { + z = zlevelList[i]; + cb.call(context, this._layers[z], z); + } + }, + + // Iterate each buildin layer + eachBuiltinLayer: function (cb, context) { + var zlevelList = this._zlevelList; + var layer; + var z; + var i; + for (i = 0; i < zlevelList.length; i++) { + z = zlevelList[i]; + layer = this._layers[z]; + if (layer.__builtin__) { + cb.call(context, layer, z); + } + } + }, + + // Iterate each other layer except buildin layer + eachOtherLayer: function (cb, context) { + var zlevelList = this._zlevelList; + var layer; + var z; + var i; + for (i = 0; i < zlevelList.length; i++) { + z = zlevelList[i]; + layer = this._layers[z]; + if (!layer.__builtin__) { + cb.call(context, layer, z); + } + } + }, + + /** + * 获取所有已创建的层 + * @param {Array.} [prevLayer] + */ + getLayers: function () { + return this._layers; + }, + + _updateLayerStatus: function (list) { + + var layers = this._layers; + var progressiveLayers = this._progressiveLayers; + + var elCountsLastFrame = {}; + var progressiveElCountsLastFrame = {}; + + this.eachBuiltinLayer(function (layer, z) { + elCountsLastFrame[z] = layer.elCount; + layer.elCount = 0; + layer.__dirty = false; + }); + + util.each(progressiveLayers, function (layer, idx) { + progressiveElCountsLastFrame[idx] = layer.elCount; + layer.elCount = 0; + layer.__dirty = false; + }); + + var progressiveLayerCount = 0; + var currentProgressiveLayer; + var lastProgressiveKey; + var frameCount = 0; + for (var i = 0, l = list.length; i < l; i++) { + var el = list[i]; + var zlevel = this._singleCanvas ? 0 : el.zlevel; + var layer = layers[zlevel]; + var elProgress = el.progressive; + if (layer) { + layer.elCount++; + layer.__dirty = layer.__dirty || el.__dirty; + } + + /////// Update progressive + if (elProgress >= 0) { + // Fix wrong progressive sequence problem. + if (lastProgressiveKey !== elProgress) { + lastProgressiveKey = elProgress; + frameCount++; + } + var elFrame = el.__frame = frameCount - 1; + if (!currentProgressiveLayer) { + var idx = Math.min(progressiveLayerCount, MAX_PROGRESSIVE_LAYER_NUMBER - 1); + currentProgressiveLayer = progressiveLayers[idx]; + if (!currentProgressiveLayer) { + currentProgressiveLayer = progressiveLayers[idx] = new Layer( + 'progressive', this, this.dpr + ); + currentProgressiveLayer.initContext(); + } + currentProgressiveLayer.__maxProgress = 0; + } + currentProgressiveLayer.__dirty = currentProgressiveLayer.__dirty || el.__dirty; + currentProgressiveLayer.elCount++; + + currentProgressiveLayer.__maxProgress = Math.max( + currentProgressiveLayer.__maxProgress, elFrame + ); + + if (currentProgressiveLayer.__maxProgress >= currentProgressiveLayer.__progress) { + // Should keep rendering this layer because progressive rendering is not finished yet + layer.__dirty = true; + } + } + else { + el.__frame = -1; + + if (currentProgressiveLayer) { + currentProgressiveLayer.__nextIdxNotProg = i; + progressiveLayerCount++; + currentProgressiveLayer = null; + } + } + } + + if (currentProgressiveLayer) { + progressiveLayerCount++; + currentProgressiveLayer.__nextIdxNotProg = i; + } + + // 层中的元素数量有发生变化 + this.eachBuiltinLayer(function (layer, z) { + if (elCountsLastFrame[z] !== layer.elCount) { + layer.__dirty = true; + } + }); + + progressiveLayers.length = Math.min(progressiveLayerCount, MAX_PROGRESSIVE_LAYER_NUMBER); + util.each(progressiveLayers, function (layer, idx) { + if (progressiveElCountsLastFrame[idx] !== layer.elCount) { + el.__dirty = true; + } + if (layer.__dirty) { + layer.__progress = 0; + } + }); + }, + + /** + * 清除hover层外所有内容 + */ + clear: function () { + this.eachBuiltinLayer(this._clearLayer); + return this; + }, + + _clearLayer: function (layer) { + layer.clear(); + }, + + /** + * 修改指定zlevel的绘制参数 + * + * @param {string} zlevel + * @param {Object} config 配置对象 + * @param {string} [config.clearColor=0] 每次清空画布的颜色 + * @param {string} [config.motionBlur=false] 是否开启动态模糊 + * @param {number} [config.lastFrameAlpha=0.7] + * 在开启动态模糊的时候使用,与上一帧混合的alpha值,值越大尾迹越明显 + */ + configLayer: function (zlevel, config) { + if (config) { + var layerConfig = this._layerConfig; + if (!layerConfig[zlevel]) { + layerConfig[zlevel] = config; + } + else { + util.merge(layerConfig[zlevel], config, true); + } + + var layer = this._layers[zlevel]; + + if (layer) { + util.merge(layer, layerConfig[zlevel], true); + } + } + }, + + /** + * 删除指定层 + * @param {number} zlevel 层所在的zlevel + */ + delLayer: function (zlevel) { + var layers = this._layers; + var zlevelList = this._zlevelList; + var layer = layers[zlevel]; + if (!layer) { + return; + } + layer.dom.parentNode.removeChild(layer.dom); + delete layers[zlevel]; + + zlevelList.splice(util.indexOf(zlevelList, zlevel), 1); + }, + + /** + * 区域大小变化后重绘 + */ + resize: function (width, height) { + var domRoot = this._domRoot; + // FIXME Why ? + domRoot.style.display = 'none'; + + // Save input w/h + var opts = this._opts; + width != null && (opts.width = width); + height != null && (opts.height = height); + + width = this._getSize(0); + height = this._getSize(1); + + domRoot.style.display = ''; + + // 优化没有实际改变的resize + if (this._width != width || height != this._height) { + domRoot.style.width = width + 'px'; + domRoot.style.height = height + 'px'; + + for (var id in this._layers) { + if (this._layers.hasOwnProperty(id)) { + this._layers[id].resize(width, height); + } + } + util.each(this._progressiveLayers, function (layer) { + layer.resize(width, height); + }); + + this.refresh(true); + } + + this._width = width; + this._height = height; + + return this; + }, + + /** + * 清除单独的一个层 + * @param {number} zlevel + */ + clearLayer: function (zlevel) { + var layer = this._layers[zlevel]; + if (layer) { + layer.clear(); + } + }, + + /** + * 释放 + */ + dispose: function () { + this.root.innerHTML = ''; + + this.root = + this.storage = + + this._domRoot = + this._layers = null; + }, + + /** + * Get canvas which has all thing rendered + * @param {Object} opts + * @param {string} [opts.backgroundColor] + */ + getRenderedCanvas: function (opts) { + opts = opts || {}; + if (this._singleCanvas) { + return this._layers[0].dom; + } + + var imageLayer = new Layer('image', this, opts.pixelRatio || this.dpr); + imageLayer.initContext(); + + imageLayer.clearColor = opts.backgroundColor; + imageLayer.clear(); + + var displayList = this.storage.getDisplayList(true); + + var scope = {}; + var zlevel; + + var self = this; + function findAndDrawOtherLayer(smaller, larger) { + var zlevelList = self._zlevelList; + if (smaller == null) { + smaller = -Infinity; + } + var intermediateLayer; + for (var i = 0; i < zlevelList.length; i++) { + var z = zlevelList[i]; + var layer = self._layers[z]; + if (!layer.__builtin__ && z > smaller && z < larger) { + intermediateLayer = layer; + break; + } + } + if (intermediateLayer && intermediateLayer.renderToCanvas) { + imageLayer.ctx.save(); + intermediateLayer.renderToCanvas(imageLayer.ctx); + imageLayer.ctx.restore(); + } + } + for (var i = 0; i < displayList.length; i++) { + var el = displayList[i]; + + if (el.zlevel !== zlevel) { + findAndDrawOtherLayer(zlevel, el.zlevel); + zlevel = el.zlevel; + } + this._doPaintEl(el, imageLayer, true, scope); + } + + findAndDrawOtherLayer(zlevel, Infinity); + + return imageLayer.dom; + }, + /** + * 获取绘图区域宽度 + */ + getWidth: function () { + return this._width; + }, + + /** + * 获取绘图区域高度 + */ + getHeight: function () { + return this._height; + }, + + _getSize: function (whIdx) { + var opts = this._opts; + var wh = ['width', 'height'][whIdx]; + var cwh = ['clientWidth', 'clientHeight'][whIdx]; + var plt = ['paddingLeft', 'paddingTop'][whIdx]; + var prb = ['paddingRight', 'paddingBottom'][whIdx]; + + if (opts[wh] != null && opts[wh] !== 'auto') { + return parseFloat(opts[wh]); + } + + var root = this.root; + var stl = document.defaultView.getComputedStyle(root); + + return ( + (root[cwh] || parseInt10(stl[wh]) || parseInt10(root.style[wh])) + - (parseInt10(stl[plt]) || 0) + - (parseInt10(stl[prb]) || 0) + ) | 0; + }, + + pathToImage: function (path, dpr) { + dpr = dpr || this.dpr; + + var canvas = document.createElement('canvas'); + var ctx = canvas.getContext('2d'); + var rect = path.getBoundingRect(); + var style = path.style; + var shadowBlurSize = style.shadowBlur; + var shadowOffsetX = style.shadowOffsetX; + var shadowOffsetY = style.shadowOffsetY; + var lineWidth = style.hasStroke() ? style.lineWidth : 0; + + var leftMargin = Math.max(lineWidth / 2, -shadowOffsetX + shadowBlurSize); + var rightMargin = Math.max(lineWidth / 2, shadowOffsetX + shadowBlurSize); + var topMargin = Math.max(lineWidth / 2, -shadowOffsetY + shadowBlurSize); + var bottomMargin = Math.max(lineWidth / 2, shadowOffsetY + shadowBlurSize); + var width = rect.width + leftMargin + rightMargin; + var height = rect.height + topMargin + bottomMargin; + + canvas.width = width * dpr; + canvas.height = height * dpr; + + ctx.scale(dpr, dpr); + ctx.clearRect(0, 0, width, height); + ctx.dpr = dpr; + + var pathTransform = { + position: path.position, + rotation: path.rotation, + scale: path.scale + }; + path.position = [leftMargin - rect.x, topMargin - rect.y]; + path.rotation = 0; + path.scale = [1, 1]; + path.updateTransform(); + if (path) { + path.brush(ctx); + } + + var ImageShape = __webpack_require__(49); + var imgShape = new ImageShape({ + style: { + x: 0, + y: 0, + image: canvas + } + }); + + if (pathTransform.position != null) { + imgShape.position = path.position = pathTransform.position; + } + + if (pathTransform.rotation != null) { + imgShape.rotation = path.rotation = pathTransform.rotation; + } + + if (pathTransform.scale != null) { + imgShape.scale = path.scale = pathTransform.scale; + } + + return imgShape; + } + }; + + module.exports = Painter; + + + +/***/ }, +/* 93 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * @module zrender/Layer + * @author pissang(https://www.github.com/pissang) + */ + + + var util = __webpack_require__(4); + var config = __webpack_require__(34); + var Style = __webpack_require__(22); + var Pattern = __webpack_require__(46); + + function returnFalse() { + return false; + } + + /** + * 创建dom + * + * @inner + * @param {string} id dom id 待用 + * @param {string} type dom type,such as canvas, div etc. + * @param {Painter} painter painter instance + * @param {number} number + */ + function createDom(id, type, painter, dpr) { + var newDom = document.createElement(type); + var width = painter.getWidth(); + var height = painter.getHeight(); + + var newDomStyle = newDom.style; + // 没append呢,请原谅我这样写,清晰~ + newDomStyle.position = 'absolute'; + newDomStyle.left = 0; + newDomStyle.top = 0; + newDomStyle.width = width + 'px'; + newDomStyle.height = height + 'px'; + newDom.width = width * dpr; + newDom.height = height * dpr; + + // id不作为索引用,避免可能造成的重名,定义为私有属性 + newDom.setAttribute('data-zr-dom-id', id); + return newDom; + } + + /** + * @alias module:zrender/Layer + * @constructor + * @extends module:zrender/mixin/Transformable + * @param {string} id + * @param {module:zrender/Painter} painter + * @param {number} [dpr] + */ + var Layer = function(id, painter, dpr) { + var dom; + dpr = dpr || config.devicePixelRatio; + if (typeof id === 'string') { + dom = createDom(id, 'canvas', painter, dpr); + } + // Not using isDom because in node it will return false + else if (util.isObject(id)) { + dom = id; + id = dom.id; + } + this.id = id; + this.dom = dom; + + var domStyle = dom.style; + if (domStyle) { // Not in node + dom.onselectstart = returnFalse; // 避免页面选中的尴尬 + domStyle['-webkit-user-select'] = 'none'; + domStyle['user-select'] = 'none'; + domStyle['-webkit-touch-callout'] = 'none'; + domStyle['-webkit-tap-highlight-color'] = 'rgba(0,0,0,0)'; + domStyle['padding'] = 0; + domStyle['margin'] = 0; + domStyle['border-width'] = 0; + } + + this.domBack = null; + this.ctxBack = null; + + this.painter = painter; + + this.config = null; + + // Configs + /** + * 每次清空画布的颜色 + * @type {string} + * @default 0 + */ + this.clearColor = 0; + /** + * 是否开启动态模糊 + * @type {boolean} + * @default false + */ + this.motionBlur = false; + /** + * 在开启动态模糊的时候使用,与上一帧混合的alpha值,值越大尾迹越明显 + * @type {number} + * @default 0.7 + */ + this.lastFrameAlpha = 0.7; + + /** + * Layer dpr + * @type {number} + */ + this.dpr = dpr; + }; + + Layer.prototype = { + + constructor: Layer, + + elCount: 0, + + __dirty: true, + + initContext: function () { + this.ctx = this.dom.getContext('2d'); + + this.ctx.dpr = this.dpr; + }, + + createBackBuffer: function () { + var dpr = this.dpr; + + this.domBack = createDom('back-' + this.id, 'canvas', this.painter, dpr); + this.ctxBack = this.domBack.getContext('2d'); + + if (dpr != 1) { + this.ctxBack.scale(dpr, dpr); + } + }, + + /** + * @param {number} width + * @param {number} height + */ + resize: function (width, height) { + var dpr = this.dpr; + + var dom = this.dom; + var domStyle = dom.style; + var domBack = this.domBack; + + domStyle.width = width + 'px'; + domStyle.height = height + 'px'; + + dom.width = width * dpr; + dom.height = height * dpr; + + if (domBack) { + domBack.width = width * dpr; + domBack.height = height * dpr; + + if (dpr != 1) { + this.ctxBack.scale(dpr, dpr); + } + } + }, + + /** + * 清空该层画布 + * @param {boolean} clearAll Clear all with out motion blur + */ + clear: function (clearAll) { + var dom = this.dom; + var ctx = this.ctx; + var width = dom.width; + var height = dom.height; + + var clearColor = this.clearColor; + var haveMotionBLur = this.motionBlur && !clearAll; + var lastFrameAlpha = this.lastFrameAlpha; + + var dpr = this.dpr; + + if (haveMotionBLur) { + if (!this.domBack) { + this.createBackBuffer(); + } + + this.ctxBack.globalCompositeOperation = 'copy'; + this.ctxBack.drawImage( + dom, 0, 0, + width / dpr, + height / dpr + ); + } + + ctx.clearRect(0, 0, width, height); + if (clearColor) { + var clearColorGradientOrPattern; + // Gradient + if (clearColor.colorStops) { + // Cache canvas gradient + clearColorGradientOrPattern = clearColor.__canvasGradient || Style.getGradient(ctx, clearColor, { + x: 0, + y: 0, + width: width, + height: height + }); + + clearColor.__canvasGradient = clearColorGradientOrPattern; + } + // Pattern + else if (clearColor.image) { + clearColorGradientOrPattern = Pattern.prototype.getCanvasPattern.call(clearColor, ctx); + } + ctx.save(); + ctx.fillStyle = clearColorGradientOrPattern || clearColor; + ctx.fillRect(0, 0, width, height); + ctx.restore(); + } + + if (haveMotionBLur) { + var domBack = this.domBack; + ctx.save(); + ctx.globalAlpha = lastFrameAlpha; + ctx.drawImage(domBack, 0, 0, width, height); + ctx.restore(); + } + } + }; + + module.exports = Layer; + + +/***/ }, +/* 94 */ +/***/ function(module, exports, __webpack_require__) { + + + var Gradient = __webpack_require__(66); + module.exports = function (ecModel) { + function encodeColor(seriesModel) { + var colorAccessPath = (seriesModel.visualColorAccessPath || 'itemStyle.normal.color').split('.'); + var data = seriesModel.getData(); + var color = seriesModel.get(colorAccessPath) // Set in itemStyle + || seriesModel.getColorFromPalette(seriesModel.get('name')); // Default color + + // FIXME Set color function or use the platte color + data.setVisual('color', color); + + // Only visible series has each data be visual encoded + if (!ecModel.isSeriesFiltered(seriesModel)) { + if (typeof color === 'function' && !(color instanceof Gradient)) { + data.each(function (idx) { + data.setItemVisual( + idx, 'color', color(seriesModel.getDataParams(idx)) + ); + }); + } + + // itemStyle in each data item + data.each(function (idx) { + var itemModel = data.getItemModel(idx); + var color = itemModel.get(colorAccessPath, true); + if (color != null) { + data.setItemVisual(idx, 'color', color); + } + }); + } + } + ecModel.eachRawSeries(encodeColor); + }; + + +/***/ }, +/* 95 */ +/***/ function(module, exports, __webpack_require__) { + + // Compatitable with 2.0 + + + var zrUtil = __webpack_require__(4); + var compatStyle = __webpack_require__(96); + + function get(opt, path) { + path = path.split(','); + var obj = opt; + for (var i = 0; i < path.length; i++) { + obj = obj && obj[path[i]]; + if (obj == null) { + break; + } + } + return obj; + } + + function set(opt, path, val, overwrite) { + path = path.split(','); + var obj = opt; + var key; + for (var i = 0; i < path.length - 1; i++) { + key = path[i]; + if (obj[key] == null) { + obj[key] = {}; + } + obj = obj[key]; + } + if (overwrite || obj[path[i]] == null) { + obj[path[i]] = val; + } + } + + function compatLayoutProperties(option) { + each(LAYOUT_PROPERTIES, function (prop) { + if (prop[0] in option && !(prop[1] in option)) { + option[prop[1]] = option[prop[0]]; + } + }); + } + + var LAYOUT_PROPERTIES = [ + ['x', 'left'], ['y', 'top'], ['x2', 'right'], ['y2', 'bottom'] + ]; + + var COMPATITABLE_COMPONENTS = [ + 'grid', 'geo', 'parallel', 'legend', 'toolbox', 'title', 'visualMap', 'dataZoom', 'timeline' + ]; + + var COMPATITABLE_SERIES = [ + 'bar', 'boxplot', 'candlestick', 'chord', 'effectScatter', + 'funnel', 'gauge', 'lines', 'graph', 'heatmap', 'line', 'map', 'parallel', + 'pie', 'radar', 'sankey', 'scatter', 'treemap' + ]; + + var each = zrUtil.each; + + module.exports = function (option) { + each(option.series, function (seriesOpt) { + if (!zrUtil.isObject(seriesOpt)) { + return; + } + + var seriesType = seriesOpt.type; + + compatStyle(seriesOpt); + + if (seriesType === 'pie' || seriesType === 'gauge') { + if (seriesOpt.clockWise != null) { + seriesOpt.clockwise = seriesOpt.clockWise; + } + } + if (seriesType === 'gauge') { + var pointerColor = get(seriesOpt, 'pointer.color'); + pointerColor != null + && set(seriesOpt, 'itemStyle.normal.color', pointerColor); + } + + for (var i = 0; i < COMPATITABLE_SERIES.length; i++) { + if (COMPATITABLE_SERIES[i] === seriesOpt.type) { + compatLayoutProperties(seriesOpt); + break; + } + } + }); + + // dataRange has changed to visualMap + if (option.dataRange) { + option.visualMap = option.dataRange; + } + + each(COMPATITABLE_COMPONENTS, function (componentName) { + var options = option[componentName]; + if (options) { + if (!zrUtil.isArray(options)) { + options = [options]; + } + each(options, function (option) { + compatLayoutProperties(option); + }); + } + }); + }; + + +/***/ }, +/* 96 */ +/***/ function(module, exports, __webpack_require__) { + + + + var zrUtil = __webpack_require__(4); + + var POSSIBLE_STYLES = [ + 'areaStyle', 'lineStyle', 'nodeStyle', 'linkStyle', + 'chordStyle', 'label', 'labelLine' + ]; + + function compatItemStyle(opt) { + var itemStyleOpt = opt && opt.itemStyle; + if (itemStyleOpt) { + zrUtil.each(POSSIBLE_STYLES, function (styleName) { + var normalItemStyleOpt = itemStyleOpt.normal; + var emphasisItemStyleOpt = itemStyleOpt.emphasis; + if (normalItemStyleOpt && normalItemStyleOpt[styleName]) { + opt[styleName] = opt[styleName] || {}; + if (!opt[styleName].normal) { + opt[styleName].normal = normalItemStyleOpt[styleName]; + } + else { + zrUtil.merge(opt[styleName].normal, normalItemStyleOpt[styleName]); + } + normalItemStyleOpt[styleName] = null; + } + if (emphasisItemStyleOpt && emphasisItemStyleOpt[styleName]) { + opt[styleName] = opt[styleName] || {}; + if (!opt[styleName].emphasis) { + opt[styleName].emphasis = emphasisItemStyleOpt[styleName]; + } + else { + zrUtil.merge(opt[styleName].emphasis, emphasisItemStyleOpt[styleName]); + } + emphasisItemStyleOpt[styleName] = null; + } + }); + } + } + + module.exports = function (seriesOpt) { + if (!seriesOpt) { + return; + } + compatItemStyle(seriesOpt); + compatItemStyle(seriesOpt.markPoint); + compatItemStyle(seriesOpt.markLine); + var data = seriesOpt.data; + if (data) { + for (var i = 0; i < data.length; i++) { + compatItemStyle(data[i]); + } + // mark point data + var markPoint = seriesOpt.markPoint; + if (markPoint && markPoint.data) { + var mpData = markPoint.data; + for (var i = 0; i < mpData.length; i++) { + compatItemStyle(mpData[i]); + } + } + // mark line data + var markLine = seriesOpt.markLine; + if (markLine && markLine.data) { + var mlData = markLine.data; + for (var i = 0; i < mlData.length; i++) { + if (zrUtil.isArray(mlData[i])) { + compatItemStyle(mlData[i][0]); + compatItemStyle(mlData[i][1]); + } + else { + compatItemStyle(mlData[i]); + } + } + } + } + }; + + +/***/ }, +/* 97 */ +/***/ function(module, exports, __webpack_require__) { + + + + var graphic = __webpack_require__(18); + var zrUtil = __webpack_require__(4); + var PI = Math.PI; + /** + * @param {module:echarts/ExtensionAPI} api + * @param {Object} [opts] + * @param {string} [opts.text] + * @param {string} [opts.color] + * @param {string} [opts.textColor] + * @return {module:zrender/Element} + */ + module.exports = function (api, opts) { + opts = opts || {}; + zrUtil.defaults(opts, { + text: 'loading', + color: '#c23531', + textColor: '#000', + maskColor: 'rgba(255, 255, 255, 0.8)', + zlevel: 0 + }); + var mask = new graphic.Rect({ + style: { + fill: opts.maskColor + }, + zlevel: opts.zlevel, + z: 10000 + }); + var arc = new graphic.Arc({ + shape: { + startAngle: -PI / 2, + endAngle: -PI / 2 + 0.1, + r: 10 + }, + style: { + stroke: opts.color, + lineCap: 'round', + lineWidth: 5 + }, + zlevel: opts.zlevel, + z: 10001 + }); + var labelRect = new graphic.Rect({ + style: { + fill: 'none', + text: opts.text, + textPosition: 'right', + textDistance: 10, + textFill: opts.textColor + }, + zlevel: opts.zlevel, + z: 10001 + }); + + arc.animateShape(true) + .when(1000, { + endAngle: PI * 3 / 2 + }) + .start('circularInOut'); + arc.animateShape(true) + .when(1000, { + startAngle: PI * 3 / 2 + }) + .delay(300) + .start('circularInOut'); + + var group = new graphic.Group(); + group.add(arc); + group.add(labelRect); + group.add(mask); + // Inject resize + group.resize = function () { + var cx = api.getWidth() / 2; + var cy = api.getHeight() / 2; + arc.setShape({ + cx: cx, + cy: cy + }); + var r = arc.shape.r; + labelRect.setShape({ + x: cx - r, + y: cy - r, + width: r * 2, + height: r * 2 + }); + + mask.setShape({ + x: 0, + y: 0, + width: api.getWidth(), + height: api.getHeight() + }); + }; + group.resize(); + return group; + }; + + +/***/ }, +/* 98 */ +/***/ function(module, exports, __webpack_require__) { + + /* WEBPACK VAR INJECTION */(function(global) {/** + * List for data storage + * @module echarts/data/List + */ + + + var UNDEFINED = 'undefined'; + var globalObj = typeof window === 'undefined' ? global : window; + var Float64Array = typeof globalObj.Float64Array === UNDEFINED + ? Array : globalObj.Float64Array; + var Int32Array = typeof globalObj.Int32Array === UNDEFINED + ? Array : globalObj.Int32Array; + + var dataCtors = { + 'float': Float64Array, + 'int': Int32Array, + // Ordinal data type can be string or int + 'ordinal': Array, + 'number': Array, + 'time': Array + }; + + var Model = __webpack_require__(12); + var DataDiffer = __webpack_require__(99); + + var zrUtil = __webpack_require__(4); + var modelUtil = __webpack_require__(5); + var isObject = zrUtil.isObject; + + var TRANSFERABLE_PROPERTIES = [ + 'stackedOn', 'hasItemOption', '_nameList', '_idList', '_rawData' + ]; + + function transferProperties(a, b) { + zrUtil.each(TRANSFERABLE_PROPERTIES.concat(b.__wrappedMethods || []), function (propName) { + if (b.hasOwnProperty(propName)) { + a[propName] = b[propName]; + } + }); + + a.__wrappedMethods = b.__wrappedMethods; + } + + function DefaultDataProvider(dataArray) { + this._array = dataArray || []; + } + + DefaultDataProvider.prototype.pure = false; + + DefaultDataProvider.prototype.count = function () { + return this._array.length; + }; + DefaultDataProvider.prototype.getItem = function (idx) { + return this._array[idx]; + }; + + /** + * @constructor + * @alias module:echarts/data/List + * + * @param {Array.} dimensions + * For example, ['someDimName', {name: 'someDimName', type: 'someDimType'}, ...]. + * Dimensions should be concrete names like x, y, z, lng, lat, angle, radius + * @param {module:echarts/model/Model} hostModel + */ + var List = function (dimensions, hostModel) { + + dimensions = dimensions || ['x', 'y']; + + var dimensionInfos = {}; + var dimensionNames = []; + for (var i = 0; i < dimensions.length; i++) { + var dimensionName; + var dimensionInfo = {}; + if (typeof dimensions[i] === 'string') { + dimensionName = dimensions[i]; + dimensionInfo = { + name: dimensionName, + coordDim: dimensionName, + coordDimIndex: 0, + stackable: false, + // Type can be 'float', 'int', 'number' + // Default is number, Precision of float may not enough + type: 'number' + }; + } + else { + dimensionInfo = dimensions[i]; + dimensionName = dimensionInfo.name; + dimensionInfo.type = dimensionInfo.type || 'number'; + if (!dimensionInfo.coordDim) { + dimensionInfo.coordDim = dimensionName; + dimensionInfo.coordDimIndex = 0; + } + } + dimensionInfo.otherDims = dimensionInfo.otherDims || {}; + dimensionNames.push(dimensionName); + dimensionInfos[dimensionName] = dimensionInfo; + } + + /** + * @readOnly + * @type {Array.} + */ + this.dimensions = dimensionNames; + + /** + * Infomation of each data dimension, like data type. + * @type {Object} + */ + this._dimensionInfos = dimensionInfos; + + /** + * @type {module:echarts/model/Model} + */ + this.hostModel = hostModel; + + /** + * @type {module:echarts/model/Model} + */ + this.dataType; + + /** + * Indices stores the indices of data subset after filtered. + * This data subset will be used in chart. + * @type {Array.} + * @readOnly + */ + this.indices = []; + + /** + * Data storage + * @type {Object.} + * @private + */ + this._storage = {}; + + /** + * @type {Array.} + */ + this._nameList = []; + /** + * @type {Array.} + */ + this._idList = []; + + /** + * Models of data option is stored sparse for optimizing memory cost + * @type {Array.} + * @private + */ + this._optionModels = []; + + /** + * @param {module:echarts/data/List} + */ + this.stackedOn = null; + + /** + * Global visual properties after visual coding + * @type {Object} + * @private + */ + this._visual = {}; + + /** + * Globel layout properties. + * @type {Object} + * @private + */ + this._layout = {}; + + /** + * Item visual properties after visual coding + * @type {Array.} + * @private + */ + this._itemVisuals = []; + + /** + * Item layout properties after layout + * @type {Array.} + * @private + */ + this._itemLayouts = []; + + /** + * Graphic elemnents + * @type {Array.} + * @private + */ + this._graphicEls = []; + + /** + * @type {Array.} + * @private + */ + this._rawData; + + /** + * @type {Object} + * @private + */ + this._extent; + }; + + var listProto = List.prototype; + + listProto.type = 'list'; + + /** + * If each data item has it's own option + * @type {boolean} + */ + listProto.hasItemOption = true; + + /** + * Get dimension name + * @param {string|number} dim + * Dimension can be concrete names like x, y, z, lng, lat, angle, radius + * Or a ordinal number. For example getDimensionInfo(0) will return 'x' or 'lng' or 'radius' + * @return {string} Concrete dim name. + */ + listProto.getDimension = function (dim) { + if (!isNaN(dim)) { + dim = this.dimensions[dim] || dim; + } + return dim; + }; + + /** + * Get type and stackable info of particular dimension + * @param {string|number} dim + * Dimension can be concrete names like x, y, z, lng, lat, angle, radius + * Or a ordinal number. For example getDimensionInfo(0) will return 'x' or 'lng' or 'radius' + */ + listProto.getDimensionInfo = function (dim) { + return zrUtil.clone(this._dimensionInfos[this.getDimension(dim)]); + }; + + /** + * Initialize from data + * @param {Array.} data + * @param {Array.} [nameList] + * @param {Function} [dimValueGetter] (dataItem, dimName, dataIndex, dimIndex) => number + */ + listProto.initData = function (data, nameList, dimValueGetter) { + data = data || []; + + var isDataArray = zrUtil.isArray(data); + if (isDataArray) { + data = new DefaultDataProvider(data); + } + if (true) { + if (!isDataArray && (typeof data.getItem != 'function' || typeof data.count != 'function')) { + throw new Error('Inavlid data provider.'); + } + } + + this._rawData = data; + + // Clear + var storage = this._storage = {}; + var indices = this.indices = []; + + var dimensions = this.dimensions; + var dimensionInfoMap = this._dimensionInfos; + + var size = data.count(); + + var idList = []; + var nameRepeatCount = {}; + var nameDimIdx; + + nameList = nameList || []; + + // Init storage + for (var i = 0; i < dimensions.length; i++) { + var dimInfo = dimensionInfoMap[dimensions[i]]; + dimInfo.otherDims.itemName === 0 && (nameDimIdx = i); + var DataCtor = dataCtors[dimInfo.type]; + storage[dimensions[i]] = new DataCtor(size); + } + + var self = this; + if (!dimValueGetter) { + self.hasItemOption = false; + } + // Default dim value getter + dimValueGetter = dimValueGetter || function (dataItem, dimName, dataIndex, dimIndex) { + var value = modelUtil.getDataItemValue(dataItem); + // If any dataItem is like { value: 10 } + if (modelUtil.isDataItemOption(dataItem)) { + self.hasItemOption = true; + } + return modelUtil.converDataValue( + (value instanceof Array) + ? value[dimIndex] + // If value is a single number or something else not array. + : value, + dimensionInfoMap[dimName] + ); + }; + + for (var i = 0; i < size; i++) { + // NOTICE: Try not to write things into dataItem + var dataItem = data.getItem(i); + // Each data item is value + // [1, 2] + // 2 + // Bar chart, line chart which uses category axis + // only gives the 'y' value. 'x' value is the indices of cateogry + // Use a tempValue to normalize the value to be a (x, y) value + + // Store the data by dimensions + for (var k = 0; k < dimensions.length; k++) { + var dim = dimensions[k]; + var dimStorage = storage[dim]; + // PENDING NULL is empty or zero + dimStorage[i] = dimValueGetter(dataItem, dim, i, k); + } + + indices.push(i); + } + + // Use the name in option and create id + for (var i = 0; i < size; i++) { + var dataItem = data.getItem(i); + if (!nameList[i] && dataItem) { + if (dataItem.name != null) { + nameList[i] = dataItem.name; + } + else if (nameDimIdx != null) { + nameList[i] = storage[dimensions[nameDimIdx]][i]; + } + } + var name = nameList[i] || ''; + // Try using the id in option + var id = dataItem && dataItem.id; + + if (!id && name) { + // Use name as id and add counter to avoid same name + nameRepeatCount[name] = nameRepeatCount[name] || 0; + id = name; + if (nameRepeatCount[name] > 0) { + id += '__ec__' + nameRepeatCount[name]; + } + nameRepeatCount[name]++; + } + id && (idList[i] = id); + } + + this._nameList = nameList; + this._idList = idList; + }; + + /** + * @return {number} + */ + listProto.count = function () { + return this.indices.length; + }; + + /** + * Get value. Return NaN if idx is out of range. + * @param {string} dim Dim must be concrete name. + * @param {number} idx + * @param {boolean} stack + * @return {number} + */ + listProto.get = function (dim, idx, stack) { + var storage = this._storage; + var dataIndex = this.indices[idx]; + + // If value not exists + if (dataIndex == null || !storage[dim]) { + return NaN; + } + + var value = storage[dim][dataIndex]; + // FIXME ordinal data type is not stackable + if (stack) { + var dimensionInfo = this._dimensionInfos[dim]; + if (dimensionInfo && dimensionInfo.stackable) { + var stackedOn = this.stackedOn; + while (stackedOn) { + // Get no stacked data of stacked on + var stackedValue = stackedOn.get(dim, idx); + // Considering positive stack, negative stack and empty data + if ((value >= 0 && stackedValue > 0) // Positive stack + || (value <= 0 && stackedValue < 0) // Negative stack + ) { + value += stackedValue; + } + stackedOn = stackedOn.stackedOn; + } + } + } + return value; + }; + + /** + * Get value for multi dimensions. + * @param {Array.} [dimensions] If ignored, using all dimensions. + * @param {number} idx + * @param {boolean} stack + * @return {number} + */ + listProto.getValues = function (dimensions, idx, stack) { + var values = []; + + if (!zrUtil.isArray(dimensions)) { + stack = idx; + idx = dimensions; + dimensions = this.dimensions; + } + + for (var i = 0, len = dimensions.length; i < len; i++) { + values.push(this.get(dimensions[i], idx, stack)); + } + + return values; + }; + + /** + * If value is NaN. Inlcuding '-' + * @param {string} dim + * @param {number} idx + * @return {number} + */ + listProto.hasValue = function (idx) { + var dimensions = this.dimensions; + var dimensionInfos = this._dimensionInfos; + for (var i = 0, len = dimensions.length; i < len; i++) { + if ( + // Ordinal type can be string or number + dimensionInfos[dimensions[i]].type !== 'ordinal' + && isNaN(this.get(dimensions[i], idx)) + ) { + return false; + } + } + return true; + }; + + /** + * Get extent of data in one dimension + * @param {string} dim + * @param {boolean} stack + * @param {Function} filter + */ + listProto.getDataExtent = function (dim, stack, filter) { + dim = this.getDimension(dim); + var dimData = this._storage[dim]; + var dimInfo = this.getDimensionInfo(dim); + stack = (dimInfo && dimInfo.stackable) && stack; + var dimExtent = (this._extent || (this._extent = {}))[dim + (!!stack)]; + var value; + if (dimExtent) { + return dimExtent; + } + // var dimInfo = this._dimensionInfos[dim]; + if (dimData) { + var min = Infinity; + var max = -Infinity; + // var isOrdinal = dimInfo.type === 'ordinal'; + for (var i = 0, len = this.count(); i < len; i++) { + value = this.get(dim, i, stack); + // FIXME + // if (isOrdinal && typeof value === 'string') { + // value = zrUtil.indexOf(dimData, value); + // } + if (!filter || filter(value, dim, i)) { + value < min && (min = value); + value > max && (max = value); + } + } + return (this._extent[dim + !!stack] = [min, max]); + } + else { + return [Infinity, -Infinity]; + } + }; + + /** + * Get sum of data in one dimension + * @param {string} dim + * @param {boolean} stack + */ + listProto.getSum = function (dim, stack) { + var dimData = this._storage[dim]; + var sum = 0; + if (dimData) { + for (var i = 0, len = this.count(); i < len; i++) { + var value = this.get(dim, i, stack); + if (!isNaN(value)) { + sum += value; + } + } + } + return sum; + }; + + /** + * Retreive the index with given value + * @param {number} idx + * @param {number} value + * @return {number} + */ + // FIXME Precision of float value + listProto.indexOf = function (dim, value) { + var storage = this._storage; + var dimData = storage[dim]; + var indices = this.indices; + + if (dimData) { + for (var i = 0, len = indices.length; i < len; i++) { + var rawIndex = indices[i]; + if (dimData[rawIndex] === value) { + return i; + } + } + } + return -1; + }; + + /** + * Retreive the index with given name + * @param {number} idx + * @param {number} name + * @return {number} + */ + listProto.indexOfName = function (name) { + var indices = this.indices; + var nameList = this._nameList; + + for (var i = 0, len = indices.length; i < len; i++) { + var rawIndex = indices[i]; + if (nameList[rawIndex] === name) { + return i; + } + } + + return -1; + }; + + /** + * Retreive the index with given raw data index + * @param {number} idx + * @param {number} name + * @return {number} + */ + listProto.indexOfRawIndex = function (rawIndex) { + // Indices are ascending + var indices = this.indices; + + // If rawIndex === dataIndex + var rawDataIndex = indices[rawIndex]; + if (rawDataIndex != null && rawDataIndex === rawIndex) { + return rawIndex; + } + + var left = 0; + var right = indices.length - 1; + while (left <= right) { + var mid = (left + right) / 2 | 0; + if (indices[mid] < rawIndex) { + left = mid + 1; + } + else if (indices[mid] > rawIndex) { + right = mid - 1; + } + else { + return mid; + } + } + return -1; + }; + + /** + * Retreive the index of nearest value + * @param {string} dim + * @param {number} value + * @param {boolean} stack If given value is after stacked + * @param {number} [maxDistance=Infinity] + * @return {Array.} Considere multiple points has the same value. + */ + listProto.indicesOfNearest = function (dim, value, stack, maxDistance) { + var storage = this._storage; + var dimData = storage[dim]; + var nearestIndices = []; + + if (!dimData) { + return nearestIndices; + } + + if (maxDistance == null) { + maxDistance = Infinity; + } + + var minDist = Number.MAX_VALUE; + var minDiff = -1; + for (var i = 0, len = this.count(); i < len; i++) { + var diff = value - this.get(dim, i, stack); + var dist = Math.abs(diff); + if (diff <= maxDistance && dist <= minDist) { + // For the case of two data are same on xAxis, which has sequence data. + // Show the nearest index + // https://github.com/ecomfe/echarts/issues/2869 + if (dist < minDist || (diff >= 0 && minDiff < 0)) { + minDist = dist; + minDiff = diff; + nearestIndices.length = 0; + } + nearestIndices.push(i); + } + } + return nearestIndices; + }; + + /** + * Get raw data index + * @param {number} idx + * @return {number} + */ + listProto.getRawIndex = function (idx) { + var rawIdx = this.indices[idx]; + return rawIdx == null ? -1 : rawIdx; + }; + + /** + * Get raw data item + * @param {number} idx + * @return {number} + */ + listProto.getRawDataItem = function (idx) { + return this._rawData.getItem(this.getRawIndex(idx)); + }; + + /** + * @param {number} idx + * @param {boolean} [notDefaultIdx=false] + * @return {string} + */ + listProto.getName = function (idx) { + return this._nameList[this.indices[idx]] || ''; + }; + + /** + * @param {number} idx + * @param {boolean} [notDefaultIdx=false] + * @return {string} + */ + listProto.getId = function (idx) { + return this._idList[this.indices[idx]] || (this.getRawIndex(idx) + ''); + }; + + + function normalizeDimensions(dimensions) { + if (!zrUtil.isArray(dimensions)) { + dimensions = [dimensions]; + } + return dimensions; + } + + /** + * Data iteration + * @param {string|Array.} + * @param {Function} cb + * @param {boolean} [stack=false] + * @param {*} [context=this] + * + * @example + * list.each('x', function (x, idx) {}); + * list.each(['x', 'y'], function (x, y, idx) {}); + * list.each(function (idx) {}) + */ + listProto.each = function (dims, cb, stack, context) { + if (typeof dims === 'function') { + context = stack; + stack = cb; + cb = dims; + dims = []; + } + + dims = zrUtil.map(normalizeDimensions(dims), this.getDimension, this); + + var value = []; + var dimSize = dims.length; + var indices = this.indices; + + context = context || this; + + for (var i = 0; i < indices.length; i++) { + // Simple optimization + switch (dimSize) { + case 0: + cb.call(context, i); + break; + case 1: + cb.call(context, this.get(dims[0], i, stack), i); + break; + case 2: + cb.call(context, this.get(dims[0], i, stack), this.get(dims[1], i, stack), i); + break; + default: + for (var k = 0; k < dimSize; k++) { + value[k] = this.get(dims[k], i, stack); + } + // Index + value[k] = i; + cb.apply(context, value); + } + } + }; + + /** + * Data filter + * @param {string|Array.} + * @param {Function} cb + * @param {boolean} [stack=false] + * @param {*} [context=this] + */ + listProto.filterSelf = function (dimensions, cb, stack, context) { + if (typeof dimensions === 'function') { + context = stack; + stack = cb; + cb = dimensions; + dimensions = []; + } + + dimensions = zrUtil.map( + normalizeDimensions(dimensions), this.getDimension, this + ); + + var newIndices = []; + var value = []; + var dimSize = dimensions.length; + var indices = this.indices; + + context = context || this; + + for (var i = 0; i < indices.length; i++) { + var keep; + // Simple optimization + if (!dimSize) { + keep = cb.call(context, i); + } + else if (dimSize === 1) { + keep = cb.call( + context, this.get(dimensions[0], i, stack), i + ); + } + else { + for (var k = 0; k < dimSize; k++) { + value[k] = this.get(dimensions[k], i, stack); + } + value[k] = i; + keep = cb.apply(context, value); + } + if (keep) { + newIndices.push(indices[i]); + } + } + + this.indices = newIndices; + + // Reset data extent + this._extent = {}; + + return this; + }; + + /** + * Data mapping to a plain array + * @param {string|Array.} [dimensions] + * @param {Function} cb + * @param {boolean} [stack=false] + * @param {*} [context=this] + * @return {Array} + */ + listProto.mapArray = function (dimensions, cb, stack, context) { + if (typeof dimensions === 'function') { + context = stack; + stack = cb; + cb = dimensions; + dimensions = []; + } + + var result = []; + this.each(dimensions, function () { + result.push(cb && cb.apply(this, arguments)); + }, stack, context); + return result; + }; + + function cloneListForMapAndSample(original, excludeDimensions) { + var allDimensions = original.dimensions; + var list = new List( + zrUtil.map(allDimensions, original.getDimensionInfo, original), + original.hostModel + ); + // FIXME If needs stackedOn, value may already been stacked + transferProperties(list, original); + + var storage = list._storage = {}; + var originalStorage = original._storage; + // Init storage + for (var i = 0; i < allDimensions.length; i++) { + var dim = allDimensions[i]; + var dimStore = originalStorage[dim]; + if (zrUtil.indexOf(excludeDimensions, dim) >= 0) { + storage[dim] = new dimStore.constructor( + originalStorage[dim].length + ); + } + else { + // Direct reference for other dimensions + storage[dim] = originalStorage[dim]; + } + } + return list; + } + + /** + * Data mapping to a new List with given dimensions + * @param {string|Array.} dimensions + * @param {Function} cb + * @param {boolean} [stack=false] + * @param {*} [context=this] + * @return {Array} + */ + listProto.map = function (dimensions, cb, stack, context) { + dimensions = zrUtil.map( + normalizeDimensions(dimensions), this.getDimension, this + ); + + var list = cloneListForMapAndSample(this, dimensions); + // Following properties are all immutable. + // So we can reference to the same value + var indices = list.indices = this.indices; + + var storage = list._storage; + + var tmpRetValue = []; + this.each(dimensions, function () { + var idx = arguments[arguments.length - 1]; + var retValue = cb && cb.apply(this, arguments); + if (retValue != null) { + // a number + if (typeof retValue === 'number') { + tmpRetValue[0] = retValue; + retValue = tmpRetValue; + } + for (var i = 0; i < retValue.length; i++) { + var dim = dimensions[i]; + var dimStore = storage[dim]; + var rawIdx = indices[idx]; + if (dimStore) { + dimStore[rawIdx] = retValue[i]; + } + } + } + }, stack, context); + + return list; + }; + + /** + * Large data down sampling on given dimension + * @param {string} dimension + * @param {number} rate + * @param {Function} sampleValue + * @param {Function} sampleIndex Sample index for name and id + */ + listProto.downSample = function (dimension, rate, sampleValue, sampleIndex) { + var list = cloneListForMapAndSample(this, [dimension]); + var storage = this._storage; + var targetStorage = list._storage; + + var originalIndices = this.indices; + var indices = list.indices = []; + + var frameValues = []; + var frameIndices = []; + var frameSize = Math.floor(1 / rate); + + var dimStore = targetStorage[dimension]; + var len = this.count(); + // Copy data from original data + for (var i = 0; i < storage[dimension].length; i++) { + targetStorage[dimension][i] = storage[dimension][i]; + } + for (var i = 0; i < len; i += frameSize) { + // Last frame + if (frameSize > len - i) { + frameSize = len - i; + frameValues.length = frameSize; + } + for (var k = 0; k < frameSize; k++) { + var idx = originalIndices[i + k]; + frameValues[k] = dimStore[idx]; + frameIndices[k] = idx; + } + var value = sampleValue(frameValues); + var idx = frameIndices[sampleIndex(frameValues, value) || 0]; + // Only write value on the filtered data + dimStore[idx] = value; + indices.push(idx); + } + + return list; + }; + + /** + * Get model of one data item. + * + * @param {number} idx + */ + // FIXME Model proxy ? + listProto.getItemModel = function (idx) { + var hostModel = this.hostModel; + idx = this.indices[idx]; + return new Model(this._rawData.getItem(idx), hostModel, hostModel && hostModel.ecModel); + }; + + /** + * Create a data differ + * @param {module:echarts/data/List} otherList + * @return {module:echarts/data/DataDiffer} + */ + listProto.diff = function (otherList) { + var idList = this._idList; + var otherIdList = otherList && otherList._idList; + var val; + // Use prefix to avoid index to be the same as otherIdList[idx], + // which will cause weird udpate animation. + var prefix = 'e\0\0'; + + return new DataDiffer( + otherList ? otherList.indices : [], + this.indices, + function (idx) { + return (val = otherIdList[idx]) != null ? val : prefix + idx; + }, + function (idx) { + return (val = idList[idx]) != null ? val : prefix + idx; + } + ); + }; + /** + * Get visual property. + * @param {string} key + */ + listProto.getVisual = function (key) { + var visual = this._visual; + return visual && visual[key]; + }; + + /** + * Set visual property + * @param {string|Object} key + * @param {*} [value] + * + * @example + * setVisual('color', color); + * setVisual({ + * 'color': color + * }); + */ + listProto.setVisual = function (key, val) { + if (isObject(key)) { + for (var name in key) { + if (key.hasOwnProperty(name)) { + this.setVisual(name, key[name]); + } + } + return; + } + this._visual = this._visual || {}; + this._visual[key] = val; + }; + + /** + * Set layout property. + * @param {string} key + * @param {*} [val] + */ + listProto.setLayout = function (key, val) { + if (isObject(key)) { + for (var name in key) { + if (key.hasOwnProperty(name)) { + this.setLayout(name, key[name]); + } + } + return; + } + this._layout[key] = val; + }; + + /** + * Get layout property. + * @param {string} key. + * @return {*} + */ + listProto.getLayout = function (key) { + return this._layout[key]; + }; + + /** + * Get layout of single data item + * @param {number} idx + */ + listProto.getItemLayout = function (idx) { + return this._itemLayouts[idx]; + }; + + /** + * Set layout of single data item + * @param {number} idx + * @param {Object} layout + * @param {boolean=} [merge=false] + */ + listProto.setItemLayout = function (idx, layout, merge) { + this._itemLayouts[idx] = merge + ? zrUtil.extend(this._itemLayouts[idx] || {}, layout) + : layout; + }; + + /** + * Clear all layout of single data item + */ + listProto.clearItemLayouts = function () { + this._itemLayouts.length = 0; + }; + + /** + * Get visual property of single data item + * @param {number} idx + * @param {string} key + * @param {boolean} [ignoreParent=false] + */ + listProto.getItemVisual = function (idx, key, ignoreParent) { + var itemVisual = this._itemVisuals[idx]; + var val = itemVisual && itemVisual[key]; + if (val == null && !ignoreParent) { + // Use global visual property + return this.getVisual(key); + } + return val; + }; + + /** + * Set visual property of single data item + * + * @param {number} idx + * @param {string|Object} key + * @param {*} [value] + * + * @example + * setItemVisual(0, 'color', color); + * setItemVisual(0, { + * 'color': color + * }); + */ + listProto.setItemVisual = function (idx, key, value) { + var itemVisual = this._itemVisuals[idx] || {}; + this._itemVisuals[idx] = itemVisual; + + if (isObject(key)) { + for (var name in key) { + if (key.hasOwnProperty(name)) { + itemVisual[name] = key[name]; + } + } + return; + } + itemVisual[key] = value; + }; + + /** + * Clear itemVisuals and list visual. + */ + listProto.clearAllVisual = function () { + this._visual = {}; + this._itemVisuals = []; + }; + + var setItemDataAndSeriesIndex = function (child) { + child.seriesIndex = this.seriesIndex; + child.dataIndex = this.dataIndex; + child.dataType = this.dataType; + }; + /** + * Set graphic element relative to data. It can be set as null + * @param {number} idx + * @param {module:zrender/Element} [el] + */ + listProto.setItemGraphicEl = function (idx, el) { + var hostModel = this.hostModel; + + if (el) { + // Add data index and series index for indexing the data by element + // Useful in tooltip + el.dataIndex = idx; + el.dataType = this.dataType; + el.seriesIndex = hostModel && hostModel.seriesIndex; + if (el.type === 'group') { + el.traverse(setItemDataAndSeriesIndex, el); + } + } + + this._graphicEls[idx] = el; + }; + + /** + * @param {number} idx + * @return {module:zrender/Element} + */ + listProto.getItemGraphicEl = function (idx) { + return this._graphicEls[idx]; + }; + + /** + * @param {Function} cb + * @param {*} context + */ + listProto.eachItemGraphicEl = function (cb, context) { + zrUtil.each(this._graphicEls, function (el, idx) { + if (el) { + cb && cb.call(context, el, idx); + } + }); + }; + + /** + * Shallow clone a new list except visual and layout properties, and graph elements. + * New list only change the indices. + */ + listProto.cloneShallow = function () { + var dimensionInfoList = zrUtil.map(this.dimensions, this.getDimensionInfo, this); + var list = new List(dimensionInfoList, this.hostModel); + + // FIXME + list._storage = this._storage; + + transferProperties(list, this); + + + // Clone will not change the data extent and indices + list.indices = this.indices.slice(); + + if (this._extent) { + list._extent = zrUtil.extend({}, this._extent); + } + + return list; + }; + + /** + * Wrap some method to add more feature + * @param {string} methodName + * @param {Function} injectFunction + */ + listProto.wrapMethod = function (methodName, injectFunction) { + var originalMethod = this[methodName]; + if (typeof originalMethod !== 'function') { + return; + } + this.__wrappedMethods = this.__wrappedMethods || []; + this.__wrappedMethods.push(methodName); + this[methodName] = function () { + var res = originalMethod.apply(this, arguments); + return injectFunction.apply(this, [res].concat(zrUtil.slice(arguments))); + }; + }; + + // Methods that create a new list based on this list should be listed here. + // Notice that those method should `RETURN` the new list. + listProto.TRANSFERABLE_METHODS = ['cloneShallow', 'downSample', 'map']; + // Methods that change indices of this list should be listed here. + listProto.CHANGABLE_METHODS = ['filterSelf']; + + module.exports = List; + + /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }()))) + +/***/ }, +/* 99 */ +/***/ function(module, exports) { + + 'use strict'; + + + function defaultKeyGetter(item) { + return item; + } + + function DataDiffer(oldArr, newArr, oldKeyGetter, newKeyGetter) { + this._old = oldArr; + this._new = newArr; + + this._oldKeyGetter = oldKeyGetter || defaultKeyGetter; + this._newKeyGetter = newKeyGetter || defaultKeyGetter; + } + + DataDiffer.prototype = { + + constructor: DataDiffer, + + /** + * Callback function when add a data + */ + add: function (func) { + this._add = func; + return this; + }, + + /** + * Callback function when update a data + */ + update: function (func) { + this._update = func; + return this; + }, + + /** + * Callback function when remove a data + */ + remove: function (func) { + this._remove = func; + return this; + }, + + execute: function () { + var oldArr = this._old; + var newArr = this._new; + var oldKeyGetter = this._oldKeyGetter; + var newKeyGetter = this._newKeyGetter; + + var oldDataIndexMap = {}; + var newDataIndexMap = {}; + var oldDataKeyArr = []; + var newDataKeyArr = []; + var i; + + initIndexMap(oldArr, oldDataIndexMap, oldDataKeyArr, oldKeyGetter); + initIndexMap(newArr, newDataIndexMap, newDataKeyArr, newKeyGetter); + + // Travel by inverted order to make sure order consistency + // when duplicate keys exists (consider newDataIndex.pop() below). + // For performance consideration, these code below do not look neat. + for (i = 0; i < oldArr.length; i++) { + var key = oldDataKeyArr[i]; + var idx = newDataIndexMap[key]; + + // idx can never be empty array here. see 'set null' logic below. + if (idx != null) { + // Consider there is duplicate key (for example, use dataItem.name as key). + // We should make sure every item in newArr and oldArr can be visited. + var len = idx.length; + if (len) { + len === 1 && (newDataIndexMap[key] = null); + idx = idx.unshift(); + } + else { + newDataIndexMap[key] = null; + } + this._update && this._update(idx, i); + } + else { + this._remove && this._remove(i); + } + } + + for (var i = 0; i < newDataKeyArr.length; i++) { + var key = newDataKeyArr[i]; + if (newDataIndexMap.hasOwnProperty(key)) { + var idx = newDataIndexMap[key]; + if (idx == null) { + continue; + } + // idx can never be empty array here. see 'set null' logic above. + if (!idx.length) { + this._add && this._add(idx); + } + else { + for (var j = 0, len = idx.length; j < len; j++) { + this._add && this._add(idx[j]); + } + } + } + } + } + }; + + function initIndexMap(arr, map, keyArr, keyGetter) { + for (var i = 0; i < arr.length; i++) { + // Add prefix to avoid conflict with Object.prototype. + var key = '_ec_' + keyGetter(arr[i], i); + var existence = map[key]; + if (existence == null) { + keyArr.push(key); + map[key] = i; + } + else { + if (!existence.length) { + map[key] = existence = [existence]; + } + existence.push(i); + } + } + } + + module.exports = DataDiffer; + + +/***/ }, +/* 100 */ +/***/ function(module, exports, __webpack_require__) { + + + + var numberUtil = __webpack_require__(7); + var linearMap = numberUtil.linearMap; + var zrUtil = __webpack_require__(4); + var axisHelper = __webpack_require__(101); + + function fixExtentWithBands(extent, nTick) { + var size = extent[1] - extent[0]; + var len = nTick; + var margin = size / len / 2; + extent[0] += margin; + extent[1] -= margin; + } + + var normalizedExtent = [0, 1]; + /** + * @name module:echarts/coord/CartesianAxis + * @constructor + */ + var Axis = function (dim, scale, extent) { + + /** + * Axis dimension. Such as 'x', 'y', 'z', 'angle', 'radius' + * @type {string} + */ + this.dim = dim; + + /** + * Axis scale + * @type {module:echarts/coord/scale/*} + */ + this.scale = scale; + + /** + * @type {Array.} + * @private + */ + this._extent = extent || [0, 0]; + + /** + * @type {boolean} + */ + this.inverse = false; + + /** + * Usually true when axis has a ordinal scale + * @type {boolean} + */ + this.onBand = false; + + /** + * @private + * @type {number} + */ + this._labelInterval; + }; + + Axis.prototype = { + + constructor: Axis, + + /** + * If axis extent contain given coord + * @param {number} coord + * @return {boolean} + */ + contain: function (coord) { + var extent = this._extent; + var min = Math.min(extent[0], extent[1]); + var max = Math.max(extent[0], extent[1]); + return coord >= min && coord <= max; + }, + + /** + * If axis extent contain given data + * @param {number} data + * @return {boolean} + */ + containData: function (data) { + return this.contain(this.dataToCoord(data)); + }, + + /** + * Get coord extent. + * @return {Array.} + */ + getExtent: function () { + return this._extent.slice(); + }, + + /** + * Get precision used for formatting + * @param {Array.} [dataExtent] + * @return {number} + */ + getPixelPrecision: function (dataExtent) { + return numberUtil.getPixelPrecision( + dataExtent || this.scale.getExtent(), + this._extent + ); + }, + + /** + * Set coord extent + * @param {number} start + * @param {number} end + */ + setExtent: function (start, end) { + var extent = this._extent; + extent[0] = start; + extent[1] = end; + }, + + /** + * Convert data to coord. Data is the rank if it has a ordinal scale + * @param {number} data + * @param {boolean} clamp + * @return {number} + */ + dataToCoord: function (data, clamp) { + var extent = this._extent; + var scale = this.scale; + data = scale.normalize(data); + + if (this.onBand && scale.type === 'ordinal') { + extent = extent.slice(); + fixExtentWithBands(extent, scale.count()); + } + + return linearMap(data, normalizedExtent, extent, clamp); + }, + + /** + * Convert coord to data. Data is the rank if it has a ordinal scale + * @param {number} coord + * @param {boolean} clamp + * @return {number} + */ + coordToData: function (coord, clamp) { + var extent = this._extent; + var scale = this.scale; + + if (this.onBand && scale.type === 'ordinal') { + extent = extent.slice(); + fixExtentWithBands(extent, scale.count()); + } + + var t = linearMap(coord, extent, normalizedExtent, clamp); + + return this.scale.scale(t); + }, + + /** + * Convert pixel point to data in axis + * @param {Array.} point + * @param {boolean} clamp + * @return {number} data + */ + pointToData: function (point, clamp) { + // Should be implemented in derived class if necessary. + }, + + /** + * @return {Array.} + */ + getTicksCoords: function (alignWithLabel) { + if (this.onBand && !alignWithLabel) { + var bands = this.getBands(); + var coords = []; + for (var i = 0; i < bands.length; i++) { + coords.push(bands[i][0]); + } + if (bands[i - 1]) { + coords.push(bands[i - 1][1]); + } + return coords; + } + else { + return zrUtil.map(this.scale.getTicks(), this.dataToCoord, this); + } + }, + + /** + * Coords of labels are on the ticks or on the middle of bands + * @return {Array.} + */ + getLabelsCoords: function () { + return zrUtil.map(this.scale.getTicks(), this.dataToCoord, this); + }, + + /** + * Get bands. + * + * If axis has labels [1, 2, 3, 4]. Bands on the axis are + * |---1---|---2---|---3---|---4---|. + * + * @return {Array} + */ + // FIXME Situation when labels is on ticks + getBands: function () { + var extent = this.getExtent(); + var bands = []; + var len = this.scale.count(); + var start = extent[0]; + var end = extent[1]; + var span = end - start; + + for (var i = 0; i < len; i++) { + bands.push([ + span * i / len + start, + span * (i + 1) / len + start + ]); + } + return bands; + }, + + /** + * Get width of band + * @return {number} + */ + getBandWidth: function () { + var axisExtent = this._extent; + var dataExtent = this.scale.getExtent(); + + var len = dataExtent[1] - dataExtent[0] + (this.onBand ? 1 : 0); + // Fix #2728, avoid NaN when only one data. + len === 0 && (len = 1); + + var size = Math.abs(axisExtent[1] - axisExtent[0]); + + return Math.abs(size) / len; + }, + + /** + * Get interval of the axis label. + * @return {number} + */ + getLabelInterval: function () { + var labelInterval = this._labelInterval; + if (!labelInterval) { + var axisModel = this.model; + var labelModel = axisModel.getModel('axisLabel'); + var interval = labelModel.get('interval'); + if (!(this.type === 'category' && interval === 'auto')) { + labelInterval = interval === 'auto' ? 0 : interval; + } + else if (this.isHorizontal){ + labelInterval = axisHelper.getAxisLabelInterval( + zrUtil.map(this.scale.getTicks(), this.dataToCoord, this), + axisModel.getFormattedLabels(), + labelModel.getModel('textStyle').getFont(), + this.isHorizontal() + ); + } + this._labelInterval = labelInterval; + } + return labelInterval; + } + + }; + + module.exports = Axis; + + +/***/ }, +/* 101 */ +/***/ function(module, exports, __webpack_require__) { + + + + var OrdinalScale = __webpack_require__(102); + var IntervalScale = __webpack_require__(104); + __webpack_require__(106); + __webpack_require__(107); + var Scale = __webpack_require__(103); + + var numberUtil = __webpack_require__(7); + var zrUtil = __webpack_require__(4); + var textContain = __webpack_require__(8); + var axisHelper = {}; + + /** + * Get axis scale extent before niced. + * Item of returned array can only be number (including Infinity and NaN). + */ + axisHelper.getScaleExtent = function (scale, model) { + var scaleType = scale.type; + + var min = model.getMin(); + var max = model.getMax(); + var fixMin = min != null; + var fixMax = max != null; + var originalExtent = scale.getExtent(); + + var axisDataLen; + var boundaryGap; + var span; + if (scaleType === 'ordinal') { + axisDataLen = (model.get('data') || []).length; + } + else { + boundaryGap = model.get('boundaryGap'); + if (!zrUtil.isArray(boundaryGap)) { + boundaryGap = [boundaryGap || 0, boundaryGap || 0]; + } + if (typeof boundaryGap[0] === 'boolean') { + if (true) { + console.warn('Boolean type for boundaryGap is only ' + + 'allowed for ordinal axis. Please use string in ' + + 'percentage instead, e.g., "20%". Currently, ' + + 'boundaryGap is set to be 0.'); + } + boundaryGap = [0, 0]; + } + boundaryGap[0] = numberUtil.parsePercent(boundaryGap[0], 1); + boundaryGap[1] = numberUtil.parsePercent(boundaryGap[1], 1); + span = (originalExtent[1] - originalExtent[0]) + || Math.abs(originalExtent[0]); + } + + // Notice: When min/max is not set (that is, when there are null/undefined, + // which is the most common case), these cases should be ensured: + // (1) For 'ordinal', show all axis.data. + // (2) For others: + // + `boundaryGap` is applied (if min/max set, boundaryGap is + // disabled). + // + If `needCrossZero`, min/max should be zero, otherwise, min/max should + // be the result that originalExtent enlarged by boundaryGap. + // (3) If no data, it should be ensured that `scale.setBlank` is set. + + // FIXME + // (1) When min/max is 'dataMin' or 'dataMax', should boundaryGap be able to used? + // (2) When `needCrossZero` and all data is positive/negative, should it be ensured + // that the results processed by boundaryGap are positive/negative? + + if (min == null) { + min = scaleType === 'ordinal' + ? (axisDataLen ? 0 : NaN) + : originalExtent[0] - boundaryGap[0] * span; + } + if (max == null) { + max = scaleType === 'ordinal' + ? (axisDataLen ? axisDataLen - 1 : NaN) + : originalExtent[1] + boundaryGap[1] * span; + } + + if (min === 'dataMin') { + min = originalExtent[0]; + } + if (max === 'dataMax') { + max = originalExtent[1]; + } + + (min == null || !isFinite(min)) && (min = NaN); + (max == null || !isFinite(max)) && (max = NaN); + + scale.setBlank(zrUtil.eqNaN(min) || zrUtil.eqNaN(max)); + + // Evaluate if axis needs cross zero + if (model.getNeedCrossZero()) { + // Axis is over zero and min is not set + if (min > 0 && max > 0 && !fixMin) { + min = 0; + } + // Axis is under zero and max is not set + if (min < 0 && max < 0 && !fixMax) { + max = 0; + } + } + + return [min, max]; + }; + + axisHelper.niceScaleExtent = function (scale, model) { + var extent = axisHelper.getScaleExtent(scale, model); + var fixMin = model.getMin() != null; + var fixMax = model.getMax() != null; + var splitNumber = model.get('splitNumber'); + + if (scale.type === 'log') { + scale.base = model.get('logBase'); + } + + scale.setExtent(extent[0], extent[1]); + scale.niceExtent({ + splitNumber: splitNumber, + fixMin: fixMin, + fixMax: fixMax, + minInterval: scale.type === 'interval' ? model.get('minInterval') : null + }); + + // If some one specified the min, max. And the default calculated interval + // is not good enough. He can specify the interval. It is often appeared + // in angle axis with angle 0 - 360. Interval calculated in interval scale is hard + // to be 60. + // FIXME + var interval = model.get('interval'); + if (interval != null) { + scale.setInterval && scale.setInterval(interval); + } + }; + + /** + * @param {module:echarts/model/Model} model + * @param {string} [axisType] Default retrieve from model.type + * @return {module:echarts/scale/*} + */ + axisHelper.createScaleByModel = function(model, axisType) { + axisType = axisType || model.get('type'); + if (axisType) { + switch (axisType) { + // Buildin scale + case 'category': + return new OrdinalScale( + model.getCategories(), [Infinity, -Infinity] + ); + case 'value': + return new IntervalScale(); + // Extended scale, like time and log + default: + return (Scale.getClass(axisType) || IntervalScale).create(model); + } + } + }; + + /** + * Check if the axis corss 0 + */ + axisHelper.ifAxisCrossZero = function (axis) { + var dataExtent = axis.scale.getExtent(); + var min = dataExtent[0]; + var max = dataExtent[1]; + return !((min > 0 && max > 0) || (min < 0 && max < 0)); + }; + + /** + * @param {Array.} tickCoords In axis self coordinate. + * @param {Array.} labels + * @param {string} font + * @param {boolean} isAxisHorizontal + * @return {number} + */ + axisHelper.getAxisLabelInterval = function (tickCoords, labels, font, isAxisHorizontal) { + // FIXME + // 不同角的axis和label,不只是horizontal和vertical. + + var textSpaceTakenRect; + var autoLabelInterval = 0; + var accumulatedLabelInterval = 0; + + var step = 1; + if (labels.length > 40) { + // Simple optimization for large amount of labels + step = Math.floor(labels.length / 40); + } + + for (var i = 0; i < tickCoords.length; i += step) { + var tickCoord = tickCoords[i]; + var rect = textContain.getBoundingRect( + labels[i], font, 'center', 'top' + ); + rect[isAxisHorizontal ? 'x' : 'y'] += tickCoord; + // FIXME Magic number 1.5 + rect[isAxisHorizontal ? 'width' : 'height'] *= 1.3; + if (!textSpaceTakenRect) { + textSpaceTakenRect = rect.clone(); + } + // There is no space for current label; + else if (textSpaceTakenRect.intersect(rect)) { + accumulatedLabelInterval++; + autoLabelInterval = Math.max(autoLabelInterval, accumulatedLabelInterval); + } + else { + textSpaceTakenRect.union(rect); + // Reset + accumulatedLabelInterval = 0; + } + } + if (autoLabelInterval === 0 && step > 1) { + return step; + } + return (autoLabelInterval + 1) * step - 1; + }; + + /** + * @param {Object} axis + * @param {Function} labelFormatter + * @return {Array.} + */ + axisHelper.getFormattedLabels = function (axis, labelFormatter) { + var scale = axis.scale; + var labels = scale.getTicksLabels(); + var ticks = scale.getTicks(); + if (typeof labelFormatter === 'string') { + labelFormatter = (function (tpl) { + return function (val) { + return tpl.replace('{value}', val != null ? val : ''); + }; + })(labelFormatter); + // Consider empty array + return zrUtil.map(labels, labelFormatter); + } + else if (typeof labelFormatter === 'function') { + return zrUtil.map(ticks, function (tick, idx) { + return labelFormatter( + axisHelper.getAxisRawValue(axis, tick), + idx + ); + }, this); + } + else { + return labels; + } + }; + + axisHelper.getAxisRawValue = function (axis, value) { + // In category axis with data zoom, tick is not the original + // index of axis.data. So tick should not be exposed to user + // in category axis. + return axis.type === 'category' ? axis.scale.getLabel(value) : value; + }; + + module.exports = axisHelper; + + +/***/ }, +/* 102 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * Linear continuous scale + * @module echarts/coord/scale/Ordinal + * + * http://en.wikipedia.org/wiki/Level_of_measurement + */ + + // FIXME only one data + + + var zrUtil = __webpack_require__(4); + var Scale = __webpack_require__(103); + + var scaleProto = Scale.prototype; + + var OrdinalScale = Scale.extend({ + + type: 'ordinal', + + init: function (data, extent) { + this._data = data; + this._extent = extent || [0, data.length - 1]; + }, + + parse: function (val) { + return typeof val === 'string' + ? zrUtil.indexOf(this._data, val) + // val might be float. + : Math.round(val); + }, + + contain: function (rank) { + rank = this.parse(rank); + return scaleProto.contain.call(this, rank) + && this._data[rank] != null; + }, + + /** + * Normalize given rank or name to linear [0, 1] + * @param {number|string} [val] + * @return {number} + */ + normalize: function (val) { + return scaleProto.normalize.call(this, this.parse(val)); + }, + + scale: function (val) { + return Math.round(scaleProto.scale.call(this, val)); + }, + + /** + * @return {Array} + */ + getTicks: function () { + var ticks = []; + var extent = this._extent; + var rank = extent[0]; + + while (rank <= extent[1]) { + ticks.push(rank); + rank++; + } + + return ticks; + }, + + /** + * Get item on rank n + * @param {number} n + * @return {string} + */ + getLabel: function (n) { + return this._data[n]; + }, + + /** + * @return {number} + */ + count: function () { + return this._extent[1] - this._extent[0] + 1; + }, + + /** + * @override + */ + unionExtentFromData: function (data, dim) { + this.unionExtent(data.getDataExtent(dim, false)); + }, + + niceTicks: zrUtil.noop, + niceExtent: zrUtil.noop + }); + + /** + * @return {module:echarts/scale/Time} + */ + OrdinalScale.create = function () { + return new OrdinalScale(); + }; + + module.exports = OrdinalScale; + + +/***/ }, +/* 103 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * // Scale class management + * @module echarts/scale/Scale + */ + + + var clazzUtil = __webpack_require__(13); + + /** + * @param {Object} [setting] + */ + function Scale(setting) { + this._setting = setting || {}; + + /** + * Extent + * @type {Array.} + * @protected + */ + this._extent = [Infinity, -Infinity]; + + /** + * Step is calculated in adjustExtent + * @type {Array.} + * @protected + */ + this._interval = 0; + + this.init && this.init.apply(this, arguments); + } + + var scaleProto = Scale.prototype; + + /** + * Parse input val to valid inner number. + * @param {*} val + * @return {number} + */ + scaleProto.parse = function (val) { + // Notice: This would be a trap here, If the implementation + // of this method depends on extent, and this method is used + // before extent set (like in dataZoom), it would be wrong. + // Nevertheless, parse does not depend on extent generally. + return val; + }; + + scaleProto.getSetting = function (name) { + return this._setting[name]; + }; + + scaleProto.contain = function (val) { + var extent = this._extent; + return val >= extent[0] && val <= extent[1]; + }; + + /** + * Normalize value to linear [0, 1], return 0.5 if extent span is 0 + * @param {number} val + * @return {number} + */ + scaleProto.normalize = function (val) { + var extent = this._extent; + if (extent[1] === extent[0]) { + return 0.5; + } + return (val - extent[0]) / (extent[1] - extent[0]); + }; + + /** + * Scale normalized value + * @param {number} val + * @return {number} + */ + scaleProto.scale = function (val) { + var extent = this._extent; + return val * (extent[1] - extent[0]) + extent[0]; + }; + + /** + * Set extent from data + * @param {Array.} other + */ + scaleProto.unionExtent = function (other) { + var extent = this._extent; + other[0] < extent[0] && (extent[0] = other[0]); + other[1] > extent[1] && (extent[1] = other[1]); + // not setExtent because in log axis it may transformed to power + // this.setExtent(extent[0], extent[1]); + }; + + /** + * Set extent from data + * @param {module:echarts/data/List} data + * @param {string} dim + */ + scaleProto.unionExtentFromData = function (data, dim) { + this.unionExtent(data.getDataExtent(dim, true)); + }; + + /** + * Get extent + * @return {Array.} + */ + scaleProto.getExtent = function () { + return this._extent.slice(); + }; + + /** + * Set extent + * @param {number} start + * @param {number} end + */ + scaleProto.setExtent = function (start, end) { + var thisExtent = this._extent; + if (!isNaN(start)) { + thisExtent[0] = start; + } + if (!isNaN(end)) { + thisExtent[1] = end; + } + }; + + /** + * @return {Array.} + */ + scaleProto.getTicksLabels = function () { + var labels = []; + var ticks = this.getTicks(); + for (var i = 0; i < ticks.length; i++) { + labels.push(this.getLabel(ticks[i])); + } + return labels; + }; + + /** + * When axis extent depends on data and no data exists, + * axis ticks should not be drawn, which is named 'blank'. + */ + scaleProto.isBlank = function () { + return this._isBlank; + }, + + /** + * When axis extent depends on data and no data exists, + * axis ticks should not be drawn, which is named 'blank'. + */ + scaleProto.setBlank = function (isBlank) { + this._isBlank = isBlank; + }; + + + clazzUtil.enableClassExtend(Scale); + clazzUtil.enableClassManagement(Scale, { + registerWhenExtend: true + }); + + module.exports = Scale; + + +/***/ }, +/* 104 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * Interval scale + * @module echarts/scale/Interval + */ + + + + var numberUtil = __webpack_require__(7); + var formatUtil = __webpack_require__(6); + var Scale = __webpack_require__(103); + var helper = __webpack_require__(105); + + var roundNumber = numberUtil.round; + + /** + * @alias module:echarts/coord/scale/Interval + * @constructor + */ + var IntervalScale = Scale.extend({ + + type: 'interval', + + _interval: 0, + + _intervalPrecision: 2, + + setExtent: function (start, end) { + var thisExtent = this._extent; + //start,end may be a Number like '25',so... + if (!isNaN(start)) { + thisExtent[0] = parseFloat(start); + } + if (!isNaN(end)) { + thisExtent[1] = parseFloat(end); + } + }, + + unionExtent: function (other) { + var extent = this._extent; + other[0] < extent[0] && (extent[0] = other[0]); + other[1] > extent[1] && (extent[1] = other[1]); + + // unionExtent may called by it's sub classes + IntervalScale.prototype.setExtent.call(this, extent[0], extent[1]); + }, + /** + * Get interval + */ + getInterval: function () { + return this._interval; + }, + + /** + * Set interval + */ + setInterval: function (interval) { + this._interval = interval; + // Dropped auto calculated niceExtent and use user setted extent + // We assume user wan't to set both interval, min, max to get a better result + this._niceExtent = this._extent.slice(); + + this._intervalPrecision = helper.getIntervalPrecision(interval); + }, + + /** + * @return {Array.} + */ + getTicks: function () { + return helper.intervalScaleGetTicks( + this._interval, this._extent, this._niceExtent, this._intervalPrecision + ); + }, + + /** + * @return {Array.} + */ + getTicksLabels: function () { + var labels = []; + var ticks = this.getTicks(); + for (var i = 0; i < ticks.length; i++) { + labels.push(this.getLabel(ticks[i])); + } + return labels; + }, + + /** + * @param {number} data + * @param {Object} [opt] + * @param {number|string} [opt.precision] If 'auto', use nice presision. + * @param {boolean} [opt.pad] returns 1.50 but not 1.5 if precision is 2. + * @return {string} + */ + getLabel: function (data, opt) { + if (data == null) { + return ''; + } + + var precision = opt && opt.precision; + + if (precision == null) { + precision = numberUtil.getPrecisionSafe(data) || 0; + } + else if (precision === 'auto') { + // Should be more precise then tick. + precision = this._intervalPrecision; + } + + // (1) If `precision` is set, 12.005 should be display as '12.00500'. + // (2) Use roundNumber (toFixed) to avoid scientific notation like '3.5e-7'. + data = roundNumber(data, precision, true); + + return formatUtil.addCommas(data); + }, + + /** + * Update interval and extent of intervals for nice ticks + * + * @param {number} [splitNumber = 5] Desired number of ticks + * @param {number} [minInterval] + */ + niceTicks: function (splitNumber, minInterval) { + splitNumber = splitNumber || 5; + var extent = this._extent; + var span = extent[1] - extent[0]; + if (!isFinite(span)) { + return; + } + // User may set axis min 0 and data are all negative + // FIXME If it needs to reverse ? + if (span < 0) { + span = -span; + extent.reverse(); + } + + var result = helper.intervalScaleNiceTicks(extent, splitNumber, minInterval); + + this._intervalPrecision = result.intervalPrecision; + this._interval = result.interval; + this._niceExtent = result.niceTickExtent; + }, + + /** + * Nice extent. + * @param {Object} opt + * @param {number} [opt.splitNumber = 5] Given approx tick number + * @param {boolean} [opt.fixMin=false] + * @param {boolean} [opt.fixMax=false] + * @param {boolean} [opt.minInterval=false] + */ + niceExtent: function (opt) { + var extent = this._extent; + // If extent start and end are same, expand them + if (extent[0] === extent[1]) { + if (extent[0] !== 0) { + // Expand extent + var expandSize = extent[0]; + // In the fowllowing case + // Axis has been fixed max 100 + // Plus data are all 100 and axis extent are [100, 100]. + // Extend to the both side will cause expanded max is larger than fixed max. + // So only expand to the smaller side. + if (!opt.fixMax) { + extent[1] += expandSize / 2; + extent[0] -= expandSize / 2; + } + else { + extent[0] -= expandSize / 2; + } + } + else { + extent[1] = 1; + } + } + var span = extent[1] - extent[0]; + // If there are no data and extent are [Infinity, -Infinity] + if (!isFinite(span)) { + extent[0] = 0; + extent[1] = 1; + } + + this.niceTicks(opt.splitNumber, opt.minInterval); + + // var extent = this._extent; + var interval = this._interval; + + if (!opt.fixMin) { + extent[0] = roundNumber(Math.floor(extent[0] / interval) * interval); + } + if (!opt.fixMax) { + extent[1] = roundNumber(Math.ceil(extent[1] / interval) * interval); + } + } + }); + + /** + * @return {module:echarts/scale/Time} + */ + IntervalScale.create = function () { + return new IntervalScale(); + }; + + module.exports = IntervalScale; + + + +/***/ }, +/* 105 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * For testable. + */ + + + var numberUtil = __webpack_require__(7); + + var roundNumber = numberUtil.round; + + var helper = {}; + + /** + * @param {Array.} extent Both extent[0] and extent[1] should be valid number. + * Should be extent[0] < extent[1]. + * @param {number} splitNumber splitNumber should be >= 1. + * @param {number} [minInterval] + * @return {Object} {interval, intervalPrecision, niceTickExtent} + */ + helper.intervalScaleNiceTicks = function (extent, splitNumber, minInterval) { + var result = {}; + var span = extent[1] - extent[0]; + + var interval = result.interval = numberUtil.nice(span / splitNumber, true); + if (minInterval != null && interval < minInterval) { + interval = result.interval = minInterval; + } + // Tow more digital for tick. + var precision = result.intervalPrecision = helper.getIntervalPrecision(interval); + // Niced extent inside original extent + var niceTickExtent = result.niceTickExtent = [ + roundNumber(Math.ceil(extent[0] / interval) * interval, precision), + roundNumber(Math.floor(extent[1] / interval) * interval, precision) + ]; + + helper.fixExtent(niceTickExtent, extent); + + return result; + }; + + /** + * @param {number} interval + * @return {number} interval precision + */ + helper.getIntervalPrecision = function (interval) { + // Tow more digital for tick. + return numberUtil.getPrecisionSafe(interval) + 2; + }; + + function clamp(niceTickExtent, idx, extent) { + niceTickExtent[idx] = Math.max(Math.min(niceTickExtent[idx], extent[1]), extent[0]); + } + + // In some cases (e.g., splitNumber is 1), niceTickExtent may be out of extent. + helper.fixExtent = function (niceTickExtent, extent) { + !isFinite(niceTickExtent[0]) && (niceTickExtent[0] = extent[0]); + !isFinite(niceTickExtent[1]) && (niceTickExtent[1] = extent[1]); + clamp(niceTickExtent, 0, extent); + clamp(niceTickExtent, 1, extent); + if (niceTickExtent[0] > niceTickExtent[1]) { + niceTickExtent[0] = niceTickExtent[1]; + } + }; + + helper.intervalScaleGetTicks = function (interval, extent, niceTickExtent, intervalPrecision) { + var ticks = []; + + // If interval is 0, return []; + if (!interval) { + return ticks; + } + + // Consider this case: using dataZoom toolbox, zoom and zoom. + var safeLimit = 10000; + + if (extent[0] < niceTickExtent[0]) { + ticks.push(extent[0]); + } + var tick = niceTickExtent[0]; + + while (tick <= niceTickExtent[1]) { + ticks.push(tick); + // Avoid rounding error + tick = roundNumber(tick + interval, intervalPrecision); + if (tick === ticks[ticks.length - 1]) { + // Consider out of safe float point, e.g., + // -3711126.9907707 + 2e-10 === -3711126.9907707 + break; + } + if (ticks.length > safeLimit) { + return []; + } + } + // Consider this case: the last item of ticks is smaller + // than niceTickExtent[1] and niceTickExtent[1] === extent[1]. + if (extent[1] > (ticks.length ? ticks[ticks.length - 1] : niceTickExtent[1])) { + ticks.push(extent[1]); + } + + return ticks; + }; + + module.exports = helper; + + +/***/ }, +/* 106 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * Interval scale + * @module echarts/coord/scale/Time + */ + + + + // [About UTC and local time zone]: + // In most cases, `number.parseDate` will treat input data string as local time + // (except time zone is specified in time string). And `format.formateTime` returns + // local time by default. option.useUTC is false by default. This design have + // concidered these common case: + // (1) Time that is persistent in server is in UTC, but it is needed to be diplayed + // in local time by default. + // (2) By default, the input data string (e.g., '2011-01-02') should be displayed + // as its original time, without any time difference. + + var zrUtil = __webpack_require__(4); + var numberUtil = __webpack_require__(7); + var formatUtil = __webpack_require__(6); + var scaleHelper = __webpack_require__(105); + + var IntervalScale = __webpack_require__(104); + + var intervalScaleProto = IntervalScale.prototype; + + var mathCeil = Math.ceil; + var mathFloor = Math.floor; + var ONE_SECOND = 1000; + var ONE_MINUTE = ONE_SECOND * 60; + var ONE_HOUR = ONE_MINUTE * 60; + var ONE_DAY = ONE_HOUR * 24; + + // FIXME 公用? + var bisect = function (a, x, lo, hi) { + while (lo < hi) { + var mid = lo + hi >>> 1; + if (a[mid][2] < x) { + lo = mid + 1; + } + else { + hi = mid; + } + } + return lo; + }; + + /** + * @alias module:echarts/coord/scale/Time + * @constructor + */ + var TimeScale = IntervalScale.extend({ + type: 'time', + + /** + * @override + */ + getLabel: function (val) { + var stepLvl = this._stepLvl; + + var date = new Date(val); + + return formatUtil.formatTime(stepLvl[0], date, this.getSetting('useUTC')); + }, + + /** + * @override + */ + niceExtent: function (opt) { + var extent = this._extent; + // If extent start and end are same, expand them + if (extent[0] === extent[1]) { + // Expand extent + extent[0] -= ONE_DAY; + extent[1] += ONE_DAY; + } + // If there are no data and extent are [Infinity, -Infinity] + if (extent[1] === -Infinity && extent[0] === Infinity) { + var d = new Date(); + extent[1] = new Date(d.getFullYear(), d.getMonth(), d.getDate()); + extent[0] = extent[1] - ONE_DAY; + } + + this.niceTicks(opt.splitNumber); + + // var extent = this._extent; + var interval = this._interval; + + if (!opt.fixMin) { + extent[0] = numberUtil.round(mathFloor(extent[0] / interval) * interval); + } + if (!opt.fixMax) { + extent[1] = numberUtil.round(mathCeil(extent[1] / interval) * interval); + } + }, + + /** + * @override + */ + niceTicks: function (approxTickNum) { + var timezoneOffset = this.getSetting('useUTC') + ? 0 : numberUtil.getTimezoneOffset() * 60 * 1000; + approxTickNum = approxTickNum || 10; + + var extent = this._extent; + var span = extent[1] - extent[0]; + var approxInterval = span / approxTickNum; + var scaleLevelsLen = scaleLevels.length; + var idx = bisect(scaleLevels, approxInterval, 0, scaleLevelsLen); + + var level = scaleLevels[Math.min(idx, scaleLevelsLen - 1)]; + var interval = level[2]; + // Same with interval scale if span is much larger than 1 year + if (level[0] === 'year') { + var yearSpan = span / interval; + + // From "Nice Numbers for Graph Labels" of Graphic Gems + // var niceYearSpan = numberUtil.nice(yearSpan, false); + var yearStep = numberUtil.nice(yearSpan / approxTickNum, true); + + interval *= yearStep; + } + + var niceExtent = [ + Math.round(mathCeil((extent[0] - timezoneOffset) / interval) * interval + timezoneOffset), + Math.round(mathFloor((extent[1] - timezoneOffset)/ interval) * interval + timezoneOffset) + ]; + + scaleHelper.fixExtent(niceExtent, extent); + + this._stepLvl = level; + // Interval will be used in getTicks + this._interval = interval; + this._niceExtent = niceExtent; + }, + + parse: function (val) { + // val might be float. + return +numberUtil.parseDate(val); + } + }); + + zrUtil.each(['contain', 'normalize'], function (methodName) { + TimeScale.prototype[methodName] = function (val) { + return intervalScaleProto[methodName].call(this, this.parse(val)); + }; + }); + + // Steps from d3 + var scaleLevels = [ + // Format step interval + ['hh:mm:ss', 1, ONE_SECOND], // 1s + ['hh:mm:ss', 5, ONE_SECOND * 5], // 5s + ['hh:mm:ss', 10, ONE_SECOND * 10], // 10s + ['hh:mm:ss', 15, ONE_SECOND * 15], // 15s + ['hh:mm:ss', 30, ONE_SECOND * 30], // 30s + ['hh:mm\nMM-dd',1, ONE_MINUTE], // 1m + ['hh:mm\nMM-dd',5, ONE_MINUTE * 5], // 5m + ['hh:mm\nMM-dd',10, ONE_MINUTE * 10], // 10m + ['hh:mm\nMM-dd',15, ONE_MINUTE * 15], // 15m + ['hh:mm\nMM-dd',30, ONE_MINUTE * 30], // 30m + ['hh:mm\nMM-dd',1, ONE_HOUR], // 1h + ['hh:mm\nMM-dd',2, ONE_HOUR * 2], // 2h + ['hh:mm\nMM-dd',6, ONE_HOUR * 6], // 6h + ['hh:mm\nMM-dd',12, ONE_HOUR * 12], // 12h + ['MM-dd\nyyyy', 1, ONE_DAY], // 1d + ['week', 7, ONE_DAY * 7], // 7d + ['month', 1, ONE_DAY * 31], // 1M + ['quarter', 3, ONE_DAY * 380 / 4], // 3M + ['half-year', 6, ONE_DAY * 380 / 2], // 6M + ['year', 1, ONE_DAY * 380] // 1Y + ]; + + /** + * @param {module:echarts/model/Model} + * @return {module:echarts/scale/Time} + */ + TimeScale.create = function (model) { + return new TimeScale({useUTC: model.ecModel.get('useUTC')}); + }; + + module.exports = TimeScale; + + +/***/ }, +/* 107 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * Log scale + * @module echarts/scale/Log + */ + + + var zrUtil = __webpack_require__(4); + var Scale = __webpack_require__(103); + var numberUtil = __webpack_require__(7); + + // Use some method of IntervalScale + var IntervalScale = __webpack_require__(104); + + var scaleProto = Scale.prototype; + var intervalScaleProto = IntervalScale.prototype; + + var getPrecisionSafe = numberUtil.getPrecisionSafe; + var roundingErrorFix = numberUtil.round; + + var mathFloor = Math.floor; + var mathCeil = Math.ceil; + var mathPow = Math.pow; + + var mathLog = Math.log; + + var LogScale = Scale.extend({ + + type: 'log', + + base: 10, + + $constructor: function () { + Scale.apply(this, arguments); + this._originalScale = new IntervalScale(); + }, + + /** + * @return {Array.} + */ + getTicks: function () { + var originalScale = this._originalScale; + var extent = this._extent; + var originalExtent = originalScale.getExtent(); + + return zrUtil.map(intervalScaleProto.getTicks.call(this), function (val) { + var powVal = numberUtil.round(mathPow(this.base, val)); + + // Fix #4158 + powVal = (val === extent[0] && originalScale.__fixMin) + ? fixRoundingError(powVal, originalExtent[0]) + : powVal; + powVal = (val === extent[1] && originalScale.__fixMax) + ? fixRoundingError(powVal, originalExtent[1]) + : powVal; + + return powVal; + }, this); + }, + + /** + * @param {number} val + * @return {string} + */ + getLabel: intervalScaleProto.getLabel, + + /** + * @param {number} val + * @return {number} + */ + scale: function (val) { + val = scaleProto.scale.call(this, val); + return mathPow(this.base, val); + }, + + /** + * @param {number} start + * @param {number} end + */ + setExtent: function (start, end) { + var base = this.base; + start = mathLog(start) / mathLog(base); + end = mathLog(end) / mathLog(base); + intervalScaleProto.setExtent.call(this, start, end); + }, + + /** + * @return {number} end + */ + getExtent: function () { + var base = this.base; + var extent = scaleProto.getExtent.call(this); + extent[0] = mathPow(base, extent[0]); + extent[1] = mathPow(base, extent[1]); + + // Fix #4158 + var originalScale = this._originalScale; + var originalExtent = originalScale.getExtent(); + originalScale.__fixMin && (extent[0] = fixRoundingError(extent[0], originalExtent[0])); + originalScale.__fixMax && (extent[1] = fixRoundingError(extent[1], originalExtent[1])); + + return extent; + }, + + /** + * @param {Array.} extent + */ + unionExtent: function (extent) { + this._originalScale.unionExtent(extent); + + var base = this.base; + extent[0] = mathLog(extent[0]) / mathLog(base); + extent[1] = mathLog(extent[1]) / mathLog(base); + scaleProto.unionExtent.call(this, extent); + }, + + /** + * @override + */ + unionExtentFromData: function (data, dim) { + this.unionExtent(data.getDataExtent(dim, true, function (val) { + return val > 0; + })); + }, + + /** + * Update interval and extent of intervals for nice ticks + * @param {number} [approxTickNum = 10] Given approx tick number + */ + niceTicks: function (approxTickNum) { + approxTickNum = approxTickNum || 10; + var extent = this._extent; + var span = extent[1] - extent[0]; + if (span === Infinity || span <= 0) { + return; + } + + var interval = numberUtil.quantity(span); + var err = approxTickNum / span * interval; + + // Filter ticks to get closer to the desired count. + if (err <= 0.5) { + interval *= 10; + } + + // Interval should be integer + while (!isNaN(interval) && Math.abs(interval) < 1 && Math.abs(interval) > 0) { + interval *= 10; + } + + var niceExtent = [ + numberUtil.round(mathCeil(extent[0] / interval) * interval), + numberUtil.round(mathFloor(extent[1] / interval) * interval) + ]; + + this._interval = interval; + this._niceExtent = niceExtent; + }, + + /** + * Nice extent. + * @override + */ + niceExtent: function (opt) { + intervalScaleProto.niceExtent.call(this, opt); + + var originalScale = this._originalScale; + originalScale.__fixMin = opt.fixMin; + originalScale.__fixMax = opt.fixMax; + } + + }); + + zrUtil.each(['contain', 'normalize'], function (methodName) { + LogScale.prototype[methodName] = function (val) { + val = mathLog(val) / mathLog(this.base); + return scaleProto[methodName].call(this, val); + }; + }); + + LogScale.create = function () { + return new LogScale(); + }; + + function fixRoundingError(val, originalVal) { + return roundingErrorFix(val, getPrecisionSafe(originalVal)); + } + + module.exports = LogScale; + + +/***/ }, +/* 108 */ +/***/ function(module, exports, __webpack_require__) { + + + + var createListFromArray = __webpack_require__(109); + var symbolUtil = __webpack_require__(111); + var axisHelper = __webpack_require__(101); + var axisModelCommonMixin = __webpack_require__(112); + var Model = __webpack_require__(12); + var util = __webpack_require__(4); + + module.exports = { + /** + * Create a muti dimension List structure from seriesModel. + * @param {module:echarts/model/Model} seriesModel + * @return {module:echarts/data/List} list + */ + createList: function (seriesModel) { + var data = seriesModel.get('data'); + return createListFromArray(data, seriesModel, seriesModel.ecModel); + }, + + /** + * @see {module:echarts/data/helper/completeDimensions} + */ + completeDimensions: __webpack_require__(110), + + /** + * Create a symbol element with given symbol configuration: shape, x, y, width, height, color + * @see http://echarts.baidu.com/option.html#series-scatter.symbol + * @param {string} symbolDesc + * @param {number} x + * @param {number} y + * @param {number} w + * @param {number} h + * @param {string} color + */ + createSymbol: symbolUtil.createSymbol, + + /** + * Create scale + * @param {Array.} dataExtent + * @param {Object|module:echarts/Model} option + */ + createScale: function (dataExtent, option) { + var axisModel = option; + if (!(option instanceof Model)) { + axisModel = new Model(option); + util.mixin(axisModel, axisModelCommonMixin); + } + + var scale = axisHelper.createScaleByModel(axisModel); + scale.setExtent(dataExtent[0], dataExtent[1]); + + axisHelper.niceScaleExtent(scale, axisModel); + return scale; + }, + + /** + * Mixin common methods to axis model, + * + * Inlcude methods + * `getFormattedLabels() => Array.` + * `getCategories() => Array.` + * `getMin(origin: boolean) => number` + * `getMax(origin: boolean) => number` + * `getNeedCrossZero() => boolean` + * `setRange(start: number, end: number)` + * `resetRange()` + */ + mixinAxisModelCommonMethods: function (Model) { + util.mixin(Model, axisModelCommonMixin); + } + }; + + +/***/ }, +/* 109 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + + var List = __webpack_require__(98); + var completeDimensions = __webpack_require__(110); + var zrUtil = __webpack_require__(4); + var modelUtil = __webpack_require__(5); + var CoordinateSystem = __webpack_require__(76); + var getDataItemValue = modelUtil.getDataItemValue; + var converDataValue = modelUtil.converDataValue; + + function firstDataNotNull(data) { + var i = 0; + while (i < data.length && data[i] == null) { + i++; + } + return data[i]; + } + function ifNeedCompleteOrdinalData(data) { + var sampleItem = firstDataNotNull(data); + return sampleItem != null + && !zrUtil.isArray(getDataItemValue(sampleItem)); + } + + /** + * Helper function to create a list from option data + */ + function createListFromArray(data, seriesModel, ecModel) { + // If data is undefined + data = data || []; + + if (true) { + if (!zrUtil.isArray(data)) { + throw new Error('Invalid data.'); + } + } + + var coordSysName = seriesModel.get('coordinateSystem'); + var creator = creators[coordSysName]; + var registeredCoordSys = CoordinateSystem.get(coordSysName); + var completeDimOpt = { + encodeDef: seriesModel.get('encode'), + dimsDef: seriesModel.get('dimensions') + }; + + // FIXME + var axesInfo = creator && creator(data, seriesModel, ecModel, completeDimOpt); + var dimensions = axesInfo && axesInfo.dimensions; + if (!dimensions) { + // Get dimensions from registered coordinate system + dimensions = (registeredCoordSys && ( + registeredCoordSys.getDimensionsInfo + ? registeredCoordSys.getDimensionsInfo() + : registeredCoordSys.dimensions.slice() + )) || ['x', 'y']; + dimensions = completeDimensions(dimensions, data, completeDimOpt); + } + + var categoryIndex = axesInfo ? axesInfo.categoryIndex : -1; + + var list = new List(dimensions, seriesModel); + + var nameList = createNameList(axesInfo, data); + + var categories = {}; + var dimValueGetter = (categoryIndex >= 0 && ifNeedCompleteOrdinalData(data)) + ? function (itemOpt, dimName, dataIndex, dimIndex) { + // If any dataItem is like { value: 10 } + if (modelUtil.isDataItemOption(itemOpt)) { + list.hasItemOption = true; + } + + // Use dataIndex as ordinal value in categoryAxis + return dimIndex === categoryIndex + ? dataIndex + : converDataValue(getDataItemValue(itemOpt), dimensions[dimIndex]); + } + : function (itemOpt, dimName, dataIndex, dimIndex) { + var value = getDataItemValue(itemOpt); + var val = converDataValue(value && value[dimIndex], dimensions[dimIndex]); + // If any dataItem is like { value: 10 } + if (modelUtil.isDataItemOption(itemOpt)) { + list.hasItemOption = true; + } + + var categoryAxesModels = axesInfo && axesInfo.categoryAxesModels; + if (categoryAxesModels && categoryAxesModels[dimName]) { + // If given value is a category string + if (typeof val === 'string') { + // Lazy get categories + categories[dimName] = categories[dimName] + || categoryAxesModels[dimName].getCategories(); + val = zrUtil.indexOf(categories[dimName], val); + if (val < 0 && !isNaN(val)) { + // In case some one write '1', '2' istead of 1, 2 + val = +val; + } + } + } + return val; + }; + + list.hasItemOption = false; + list.initData(data, nameList, dimValueGetter); + + return list; + } + + function isStackable(axisType) { + return axisType !== 'category' && axisType !== 'time'; + } + + function getDimTypeByAxis(axisType) { + return axisType === 'category' + ? 'ordinal' + : axisType === 'time' + ? 'time' + : 'float'; + } + + /** + * Creaters for each coord system. + */ + var creators = { + + cartesian2d: function (data, seriesModel, ecModel, completeDimOpt) { + + var axesModels = zrUtil.map(['xAxis', 'yAxis'], function (name) { + return ecModel.queryComponents({ + mainType: name, + index: seriesModel.get(name + 'Index'), + id: seriesModel.get(name + 'Id') + })[0]; + }); + var xAxisModel = axesModels[0]; + var yAxisModel = axesModels[1]; + + if (true) { + if (!xAxisModel) { + throw new Error('xAxis "' + zrUtil.retrieve( + seriesModel.get('xAxisIndex'), + seriesModel.get('xAxisId'), + 0 + ) + '" not found'); + } + if (!yAxisModel) { + throw new Error('yAxis "' + zrUtil.retrieve( + seriesModel.get('xAxisIndex'), + seriesModel.get('yAxisId'), + 0 + ) + '" not found'); + } + } + + var xAxisType = xAxisModel.get('type'); + var yAxisType = yAxisModel.get('type'); + + var dimensions = [ + { + name: 'x', + type: getDimTypeByAxis(xAxisType), + stackable: isStackable(xAxisType) + }, + { + name: 'y', + // If two category axes + type: getDimTypeByAxis(yAxisType), + stackable: isStackable(yAxisType) + } + ]; + + var isXAxisCateogry = xAxisType === 'category'; + var isYAxisCategory = yAxisType === 'category'; + + dimensions = completeDimensions(dimensions, data, completeDimOpt); + + var categoryAxesModels = {}; + if (isXAxisCateogry) { + categoryAxesModels.x = xAxisModel; + } + if (isYAxisCategory) { + categoryAxesModels.y = yAxisModel; + } + return { + dimensions: dimensions, + categoryIndex: isXAxisCateogry ? 0 : (isYAxisCategory ? 1 : -1), + categoryAxesModels: categoryAxesModels + }; + }, + + singleAxis: function (data, seriesModel, ecModel, completeDimOpt) { + + var singleAxisModel = ecModel.queryComponents({ + mainType: 'singleAxis', + index: seriesModel.get('singleAxisIndex'), + id: seriesModel.get('singleAxisId') + })[0]; + + if (true) { + if (!singleAxisModel) { + throw new Error('singleAxis should be specified.'); + } + } + + var singleAxisType = singleAxisModel.get('type'); + var isCategory = singleAxisType === 'category'; + + var dimensions = [{ + name: 'single', + type: getDimTypeByAxis(singleAxisType), + stackable: isStackable(singleAxisType) + }]; + + dimensions = completeDimensions(dimensions, data, completeDimOpt); + + var categoryAxesModels = {}; + if (isCategory) { + categoryAxesModels.single = singleAxisModel; + } + + return { + dimensions: dimensions, + categoryIndex: isCategory ? 0 : -1, + categoryAxesModels: categoryAxesModels + }; + }, + + polar: function (data, seriesModel, ecModel, completeDimOpt) { + var polarModel = ecModel.queryComponents({ + mainType: 'polar', + index: seriesModel.get('polarIndex'), + id: seriesModel.get('polarId') + })[0]; + + var angleAxisModel = polarModel.findAxisModel('angleAxis'); + var radiusAxisModel = polarModel.findAxisModel('radiusAxis'); + + if (true) { + if (!angleAxisModel) { + throw new Error('angleAxis option not found'); + } + if (!radiusAxisModel) { + throw new Error('radiusAxis option not found'); + } + } + + var radiusAxisType = radiusAxisModel.get('type'); + var angleAxisType = angleAxisModel.get('type'); + + var dimensions = [ + { + name: 'radius', + type: getDimTypeByAxis(radiusAxisType), + stackable: isStackable(radiusAxisType) + }, + { + name: 'angle', + type: getDimTypeByAxis(angleAxisType), + stackable: isStackable(angleAxisType) + } + ]; + var isAngleAxisCateogry = angleAxisType === 'category'; + var isRadiusAxisCateogry = radiusAxisType === 'category'; + + dimensions = completeDimensions(dimensions, data, completeDimOpt); + + var categoryAxesModels = {}; + if (isRadiusAxisCateogry) { + categoryAxesModels.radius = radiusAxisModel; + } + if (isAngleAxisCateogry) { + categoryAxesModels.angle = angleAxisModel; + } + return { + dimensions: dimensions, + categoryIndex: isAngleAxisCateogry ? 1 : (isRadiusAxisCateogry ? 0 : -1), + categoryAxesModels: categoryAxesModels + }; + }, + + geo: function (data, seriesModel, ecModel, completeDimOpt) { + // TODO Region + // 多个散点图系列在同一个地区的时候 + return { + dimensions: completeDimensions([ + {name: 'lng'}, + {name: 'lat'} + ], data, completeDimOpt) + }; + } + }; + + function createNameList(result, data) { + var nameList = []; + + var categoryDim = result && result.dimensions[result.categoryIndex]; + var categoryAxisModel; + if (categoryDim) { + categoryAxisModel = result.categoryAxesModels[categoryDim.name]; + } + + if (categoryAxisModel) { + // FIXME Two category axis + var categories = categoryAxisModel.getCategories(); + if (categories) { + var dataLen = data.length; + // Ordered data is given explicitly like + // [[3, 0.2], [1, 0.3], [2, 0.15]] + // or given scatter data, + // pick the category + if (zrUtil.isArray(data[0]) && data[0].length > 1) { + nameList = []; + for (var i = 0; i < dataLen; i++) { + nameList[i] = categories[data[i][result.categoryIndex || 0]]; + } + } + else { + nameList = categories.slice(0); + } + } + } + + return nameList; + } + + module.exports = createListFromArray; + + + +/***/ }, +/* 110 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * Complete dimensions by data (guess dimension). + */ + + + var zrUtil = __webpack_require__(4); + var modelUtil = __webpack_require__(5); + var each = zrUtil.each; + var isString = zrUtil.isString; + var defaults = zrUtil.defaults; + var normalizeToArray = modelUtil.normalizeToArray; + + var OTHER_DIMS = {tooltip: 1, label: 1, itemName: 1}; + + /** + * Complete the dimensions array, by user defined `dimension` and `encode`, + * and guessing from the data structure. + * If no 'value' dimension specified, the first no-named dimension will be + * named as 'value'. + * + * @param {Array.} sysDims Necessary dimensions, like ['x', 'y'], which + * provides not only dim template, but also default order. + * `name` of each item provides default coord name. + * [{dimsDef: []}, ...] can be specified to give names. + * @param {Array} data Data list. [[1, 2, 3], [2, 3, 4]]. + * @param {Object} [opt] + * @param {Array.} [opt.dimsDef] option.series.dimensions User defined dimensions + * For example: ['asdf', {name, type}, ...]. + * @param {Object} [opt.encodeDef] option.series.encode {x: 2, y: [3, 1], tooltip: [1, 2], label: 3} + * @param {string} [opt.extraPrefix] Prefix of name when filling the left dimensions. + * @param {string} [opt.extraFromZero] If specified, extra dim names will be: + * extraPrefix + 0, extraPrefix + extraBaseIndex + 1 ... + * If not specified, extra dim names will be: + * extraPrefix, extraPrefix + 0, extraPrefix + 1 ... + * @param {number} [opt.dimCount] If not specified, guess by the first data item. + * @return {Array.} [{ + * name: string mandatory, + * coordDim: string mandatory, + * coordDimIndex: number mandatory, + * type: string optional, + * tooltipName: string optional, + * otherDims: { + * tooltip: number optional, + * label: number optional + * }, + * isExtraCoord: boolean true or undefined. + * other props ... + * }] + */ + function completeDimensions(sysDims, data, opt) { + data = data || []; + opt = opt || {}; + sysDims = (sysDims || []).slice(); + var dimsDef = (opt.dimsDef || []).slice(); + var encodeDef = zrUtil.createHashMap(opt.encodeDef); + var dataDimNameMap = zrUtil.createHashMap(); + var coordDimNameMap = zrUtil.createHashMap(); + // var valueCandidate; + var result = []; + + var dimCount = opt.dimCount; + if (dimCount == null) { + var value0 = retrieveValue(data[0]); + dimCount = Math.max( + zrUtil.isArray(value0) && value0.length || 1, + sysDims.length, + dimsDef.length + ); + each(sysDims, function (sysDimItem) { + var sysDimItemDimsDef = sysDimItem.dimsDef; + sysDimItemDimsDef && (dimCount = Math.max(dimCount, sysDimItemDimsDef.length)); + }); + } + + // Apply user defined dims (`name` and `type`) and init result. + for (var i = 0; i < dimCount; i++) { + var dimDefItem = isString(dimsDef[i]) ? {name: dimsDef[i]} : (dimsDef[i] || {}); + var userDimName = dimDefItem.name; + var resultItem = result[i] = {otherDims: {}}; + // Name will be applied later for avoiding duplication. + if (userDimName != null && dataDimNameMap.get(userDimName) == null) { + // Only if `series.dimensions` is defined in option, tooltipName + // will be set, and dimension will be diplayed vertically in + // tooltip by default. + resultItem.name = resultItem.tooltipName = userDimName; + dataDimNameMap.set(userDimName, i); + } + dimDefItem.type != null && (resultItem.type = dimDefItem.type); + } + + // Set `coordDim` and `coordDimIndex` by `encodeDef` and normalize `encodeDef`. + encodeDef.each(function (dataDims, coordDim) { + dataDims = encodeDef.set(coordDim, normalizeToArray(dataDims).slice()); + each(dataDims, function (resultDimIdx, coordDimIndex) { + // The input resultDimIdx can be dim name or index. + isString(resultDimIdx) && (resultDimIdx = dataDimNameMap.get(resultDimIdx)); + if (resultDimIdx != null && resultDimIdx < dimCount) { + dataDims[coordDimIndex] = resultDimIdx; + applyDim(result[resultDimIdx], coordDim, coordDimIndex); + } + }); + }); + + // Apply templetes and default order from `sysDims`. + var availDimIdx = 0; + each(sysDims, function (sysDimItem, sysDimIndex) { + var coordDim; + var sysDimItem; + var sysDimItemDimsDef; + var sysDimItemOtherDims; + if (isString(sysDimItem)) { + coordDim = sysDimItem; + sysDimItem = {}; + } + else { + coordDim = sysDimItem.name; + sysDimItem = zrUtil.clone(sysDimItem); + // `coordDimIndex` should not be set directly. + sysDimItemDimsDef = sysDimItem.dimsDef; + sysDimItemOtherDims = sysDimItem.otherDims; + sysDimItem.name = sysDimItem.coordDim = sysDimItem.coordDimIndex + = sysDimItem.dimsDef = sysDimItem.otherDims = null; + } + + var dataDims = normalizeToArray(encodeDef.get(coordDim)); + // dimensions provides default dim sequences. + if (!dataDims.length) { + for (var i = 0; i < (sysDimItemDimsDef && sysDimItemDimsDef.length || 1); i++) { + while (availDimIdx < result.length && result[availDimIdx].coordDim != null) { + availDimIdx++; + } + availDimIdx < result.length && dataDims.push(availDimIdx++); + } + } + // Apply templates. + each(dataDims, function (resultDimIdx, coordDimIndex) { + var resultItem = result[resultDimIdx]; + applyDim(defaults(resultItem, sysDimItem), coordDim, coordDimIndex); + if (resultItem.name == null && sysDimItemDimsDef) { + resultItem.name = resultItem.tooltipName = sysDimItemDimsDef[coordDimIndex]; + } + sysDimItemOtherDims && defaults(resultItem.otherDims, sysDimItemOtherDims); + }); + }); + + // Make sure the first extra dim is 'value'. + var extra = opt.extraPrefix || 'value'; + + // Set dim `name` and other `coordDim` and other props. + for (var resultDimIdx = 0; resultDimIdx < dimCount; resultDimIdx++) { + var resultItem = result[resultDimIdx] = result[resultDimIdx] || {}; + var coordDim = resultItem.coordDim; + + coordDim == null && ( + resultItem.coordDim = genName(extra, coordDimNameMap, opt.extraFromZero), + resultItem.coordDimIndex = 0, + resultItem.isExtraCoord = true + ); + + resultItem.name == null && (resultItem.name = genName( + resultItem.coordDim, + dataDimNameMap + )); + + resultItem.type == null && guessOrdinal(data, resultDimIdx) + && (resultItem.type = 'ordinal'); + } + + return result; + + function applyDim(resultItem, coordDim, coordDimIndex) { + if (OTHER_DIMS[coordDim]) { + resultItem.otherDims[coordDim] = coordDimIndex; + } + else { + resultItem.coordDim = coordDim; + resultItem.coordDimIndex = coordDimIndex; + coordDimNameMap.set(coordDim, true); + } + } + + function genName(name, map, fromZero) { + if (fromZero || map.get(name) != null) { + var i = 0; + while (map.get(name + i) != null) { + i++; + } + name += i; + } + map.set(name, true); + return name; + } + } + + // The rule should not be complex, otherwise user might not + // be able to known where the data is wrong. + var guessOrdinal = completeDimensions.guessOrdinal = function (data, dimIndex) { + for (var i = 0, len = data.length; i < len; i++) { + var value = retrieveValue(data[i]); + + if (!zrUtil.isArray(value)) { + return false; + } + + var value = value[dimIndex]; + // Consider usage convenience, '1', '2' will be treated as "number". + if (value != null && isFinite(value)) { + return false; + } + else if (isString(value) && value !== '-') { + return true; + } + } + return false; + }; + + function retrieveValue(o) { + return zrUtil.isArray(o) ? o : zrUtil.isObject(o) ? o.value: o; + } + + module.exports = completeDimensions; + + + +/***/ }, +/* 111 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + // Symbol factory + + + var graphic = __webpack_require__(18); + var BoundingRect = __webpack_require__(9); + + /** + * Triangle shape + * @inner + */ + var Triangle = graphic.extendShape({ + type: 'triangle', + shape: { + cx: 0, + cy: 0, + width: 0, + height: 0 + }, + buildPath: function (path, shape) { + var cx = shape.cx; + var cy = shape.cy; + var width = shape.width / 2; + var height = shape.height / 2; + path.moveTo(cx, cy - height); + path.lineTo(cx + width, cy + height); + path.lineTo(cx - width, cy + height); + path.closePath(); + } + }); + /** + * Diamond shape + * @inner + */ + var Diamond = graphic.extendShape({ + type: 'diamond', + shape: { + cx: 0, + cy: 0, + width: 0, + height: 0 + }, + buildPath: function (path, shape) { + var cx = shape.cx; + var cy = shape.cy; + var width = shape.width / 2; + var height = shape.height / 2; + path.moveTo(cx, cy - height); + path.lineTo(cx + width, cy); + path.lineTo(cx, cy + height); + path.lineTo(cx - width, cy); + path.closePath(); + } + }); + + /** + * Pin shape + * @inner + */ + var Pin = graphic.extendShape({ + type: 'pin', + shape: { + // x, y on the cusp + x: 0, + y: 0, + width: 0, + height: 0 + }, + + buildPath: function (path, shape) { + var x = shape.x; + var y = shape.y; + var w = shape.width / 5 * 3; + // Height must be larger than width + var h = Math.max(w, shape.height); + var r = w / 2; + + // Dist on y with tangent point and circle center + var dy = r * r / (h - r); + var cy = y - h + r + dy; + var angle = Math.asin(dy / r); + // Dist on x with tangent point and circle center + var dx = Math.cos(angle) * r; + + var tanX = Math.sin(angle); + var tanY = Math.cos(angle); + + path.arc( + x, cy, r, + Math.PI - angle, + Math.PI * 2 + angle + ); + + var cpLen = r * 0.6; + var cpLen2 = r * 0.7; + path.bezierCurveTo( + x + dx - tanX * cpLen, cy + dy + tanY * cpLen, + x, y - cpLen2, + x, y + ); + path.bezierCurveTo( + x, y - cpLen2, + x - dx + tanX * cpLen, cy + dy + tanY * cpLen, + x - dx, cy + dy + ); + path.closePath(); + } + }); + + /** + * Arrow shape + * @inner + */ + var Arrow = graphic.extendShape({ + + type: 'arrow', + + shape: { + x: 0, + y: 0, + width: 0, + height: 0 + }, + + buildPath: function (ctx, shape) { + var height = shape.height; + var width = shape.width; + var x = shape.x; + var y = shape.y; + var dx = width / 3 * 2; + ctx.moveTo(x, y); + ctx.lineTo(x + dx, y + height); + ctx.lineTo(x, y + height / 4 * 3); + ctx.lineTo(x - dx, y + height); + ctx.lineTo(x, y); + ctx.closePath(); + } + }); + + /** + * Map of path contructors + * @type {Object.} + */ + var symbolCtors = { + line: graphic.Line, + + rect: graphic.Rect, + + roundRect: graphic.Rect, + + square: graphic.Rect, + + circle: graphic.Circle, + + diamond: Diamond, + + pin: Pin, + + arrow: Arrow, + + triangle: Triangle + }; + + var symbolShapeMakers = { + + line: function (x, y, w, h, shape) { + // FIXME + shape.x1 = x; + shape.y1 = y + h / 2; + shape.x2 = x + w; + shape.y2 = y + h / 2; + }, + + rect: function (x, y, w, h, shape) { + shape.x = x; + shape.y = y; + shape.width = w; + shape.height = h; + }, + + roundRect: function (x, y, w, h, shape) { + shape.x = x; + shape.y = y; + shape.width = w; + shape.height = h; + shape.r = Math.min(w, h) / 4; + }, + + square: function (x, y, w, h, shape) { + var size = Math.min(w, h); + shape.x = x; + shape.y = y; + shape.width = size; + shape.height = size; + }, + + circle: function (x, y, w, h, shape) { + // Put circle in the center of square + shape.cx = x + w / 2; + shape.cy = y + h / 2; + shape.r = Math.min(w, h) / 2; + }, + + diamond: function (x, y, w, h, shape) { + shape.cx = x + w / 2; + shape.cy = y + h / 2; + shape.width = w; + shape.height = h; + }, + + pin: function (x, y, w, h, shape) { + shape.x = x + w / 2; + shape.y = y + h / 2; + shape.width = w; + shape.height = h; + }, + + arrow: function (x, y, w, h, shape) { + shape.x = x + w / 2; + shape.y = y + h / 2; + shape.width = w; + shape.height = h; + }, + + triangle: function (x, y, w, h, shape) { + shape.cx = x + w / 2; + shape.cy = y + h / 2; + shape.width = w; + shape.height = h; + } + }; + + var symbolBuildProxies = {}; + for (var name in symbolCtors) { + if (symbolCtors.hasOwnProperty(name)) { + symbolBuildProxies[name] = new symbolCtors[name](); + } + } + + var Symbol = graphic.extendShape({ + + type: 'symbol', + + shape: { + symbolType: '', + x: 0, + y: 0, + width: 0, + height: 0 + }, + + beforeBrush: function () { + var style = this.style; + var shape = this.shape; + // FIXME + if (shape.symbolType === 'pin' && style.textPosition === 'inside') { + style.textPosition = ['50%', '40%']; + style.textAlign = 'center'; + style.textVerticalAlign = 'middle'; + } + }, + + buildPath: function (ctx, shape, inBundle) { + var symbolType = shape.symbolType; + var proxySymbol = symbolBuildProxies[symbolType]; + if (shape.symbolType !== 'none') { + if (!proxySymbol) { + // Default rect + symbolType = 'rect'; + proxySymbol = symbolBuildProxies[symbolType]; + } + symbolShapeMakers[symbolType]( + shape.x, shape.y, shape.width, shape.height, proxySymbol.shape + ); + proxySymbol.buildPath(ctx, proxySymbol.shape, inBundle); + } + } + }); + + // Provide setColor helper method to avoid determine if set the fill or stroke outside + var symbolPathSetColor = function (color) { + if (this.type !== 'image') { + var symbolStyle = this.style; + var symbolShape = this.shape; + if (symbolShape && symbolShape.symbolType === 'line') { + symbolStyle.stroke = color; + } + else if (this.__isEmptyBrush) { + symbolStyle.stroke = color; + symbolStyle.fill = '#fff'; + } + else { + // FIXME 判断图形默认是填充还是描边,使用 onlyStroke ? + symbolStyle.fill && (symbolStyle.fill = color); + symbolStyle.stroke && (symbolStyle.stroke = color); + } + this.dirty(false); + } + }; + + var symbolUtil = { + /** + * Create a symbol element with given symbol configuration: shape, x, y, width, height, color + * @param {string} symbolType + * @param {number} x + * @param {number} y + * @param {number} w + * @param {number} h + * @param {string} color + */ + createSymbol: function (symbolType, x, y, w, h, color) { + // TODO Support image object, DynamicImage. + + var isEmpty = symbolType.indexOf('empty') === 0; + if (isEmpty) { + symbolType = symbolType.substr(5, 1).toLowerCase() + symbolType.substr(6); + } + var symbolPath; + + if (symbolType.indexOf('image://') === 0) { + symbolPath = new graphic.Image({ + style: { + image: symbolType.slice(8), + x: x, + y: y, + width: w, + height: h + } + }); + } + else if (symbolType.indexOf('path://') === 0) { + symbolPath = graphic.makePath(symbolType.slice(7), {}, new BoundingRect(x, y, w, h)); + } + else { + symbolPath = new Symbol({ + shape: { + symbolType: symbolType, + x: x, + y: y, + width: w, + height: h + } + }); + } + + symbolPath.__isEmptyBrush = isEmpty; + + symbolPath.setColor = symbolPathSetColor; + + symbolPath.setColor(color); + + return symbolPath; + } + }; + + module.exports = symbolUtil; + + +/***/ }, +/* 112 */ +/***/ function(module, exports, __webpack_require__) { + + + + var zrUtil = __webpack_require__(4); + var axisHelper = __webpack_require__(101); + + function getName(obj) { + if (zrUtil.isObject(obj) && obj.value != null) { + return obj.value; + } + else { + return obj + ''; + } + } + + module.exports = { + + /** + * Format labels + * @return {Array.} + */ + getFormattedLabels: function () { + return axisHelper.getFormattedLabels( + this.axis, + this.get('axisLabel.formatter') + ); + }, + + /** + * Get categories + */ + getCategories: function () { + return this.get('type') === 'category' + && zrUtil.map(this.get('data'), getName); + }, + + /** + * @param {boolean} origin + * @return {number|string} min value or 'dataMin' or null/undefined (means auto) or NaN + */ + getMin: function (origin) { + var option = this.option; + var min = (!origin && option.rangeStart != null) + ? option.rangeStart : option.min; + + if (this.axis && min != null && min !== 'dataMin' && !zrUtil.eqNaN(min)) { + min = this.axis.scale.parse(min); + } + return min; + }, + + /** + * @param {boolean} origin + * @return {number|string} max value or 'dataMax' or null/undefined (means auto) or NaN + */ + getMax: function (origin) { + var option = this.option; + var max = (!origin && option.rangeEnd != null) + ? option.rangeEnd : option.max; + + if (this.axis && max != null && max !== 'dataMax' && !zrUtil.eqNaN(max)) { + max = this.axis.scale.parse(max); + } + return max; + }, + + /** + * @return {boolean} + */ + getNeedCrossZero: function () { + var option = this.option; + return (option.rangeStart != null || option.rangeEnd != null) + ? false : !option.scale; + }, + + /** + * Should be implemented by each axis model if necessary. + * @return {module:echarts/model/Component} coordinate system model + */ + getCoordSysModel: zrUtil.noop, + + /** + * @param {number} rangeStart Can only be finite number or null/undefined or NaN. + * @param {number} rangeEnd Can only be finite number or null/undefined or NaN. + */ + setRange: function (rangeStart, rangeEnd) { + this.option.rangeStart = rangeStart; + this.option.rangeEnd = rangeEnd; + }, + + /** + * Reset range + */ + resetRange: function () { + // rangeStart and rangeEnd is readonly. + this.option.rangeStart = this.option.rangeEnd = null; + } + }; + + +/***/ }, +/* 113 */ +/***/ function(module, exports, __webpack_require__) { + + + + var zrUtil = __webpack_require__(4); + var echarts = __webpack_require__(1); + var PRIORITY = echarts.PRIORITY; + + __webpack_require__(114); + __webpack_require__(115); + + echarts.registerVisual(zrUtil.curry( + __webpack_require__(121), 'line', 'circle', 'line' + )); + echarts.registerLayout(zrUtil.curry( + __webpack_require__(122), 'line' + )); + + // Down sample after filter + echarts.registerProcessor(PRIORITY.PROCESSOR.STATISTIC, zrUtil.curry( + __webpack_require__(123), 'line' + )); + + // In case developer forget to include grid component + __webpack_require__(124); + + +/***/ }, +/* 114 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + + var createListFromArray = __webpack_require__(109); + var SeriesModel = __webpack_require__(78); + + module.exports = SeriesModel.extend({ + + type: 'series.line', + + dependencies: ['grid', 'polar'], + + getInitialData: function (option, ecModel) { + if (true) { + var coordSys = option.coordinateSystem; + if (coordSys !== 'polar' && coordSys !== 'cartesian2d') { + throw new Error('Line not support coordinateSystem besides cartesian and polar'); + } + } + return createListFromArray(option.data, this, ecModel); + }, + + defaultOption: { + zlevel: 0, // 一级层叠 + z: 2, // 二级层叠 + coordinateSystem: 'cartesian2d', + legendHoverLink: true, + + hoverAnimation: true, + // stack: null + // xAxisIndex: 0, + // yAxisIndex: 0, + + // polarIndex: 0, + + // If clip the overflow value + clipOverflow: true, + // cursor: null, + + label: { + normal: { + position: 'top' + } + }, + // itemStyle: { + // normal: {}, + // emphasis: {} + // }, + lineStyle: { + normal: { + width: 2, + type: 'solid' + } + }, + // areaStyle: {}, + // false, 'start', 'end', 'middle' + step: false, + + // Disabled if step is true + smooth: false, + smoothMonotone: null, + // 拐点图形类型 + symbol: 'emptyCircle', + // 拐点图形大小 + symbolSize: 4, + // 拐点图形旋转控制 + symbolRotate: null, + + // 是否显示 symbol, 只有在 tooltip hover 的时候显示 + showSymbol: true, + // 标志图形默认只有主轴显示(随主轴标签间隔隐藏策略) + showAllSymbol: false, + + // 是否连接断点 + connectNulls: false, + + // 数据过滤,'average', 'max', 'min', 'sum' + sampling: 'none', + + animationEasing: 'linear', + + // Disable progressive + progressive: 0, + hoverLayerThreshold: Infinity + } + }); + + +/***/ }, +/* 115 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + // FIXME step not support polar + + + var zrUtil = __webpack_require__(4); + var SymbolDraw = __webpack_require__(116); + var Symbol = __webpack_require__(117); + var lineAnimationDiff = __webpack_require__(119); + var graphic = __webpack_require__(18); + var modelUtil = __webpack_require__(5); + var polyHelper = __webpack_require__(120); + var ChartView = __webpack_require__(80); + + function isPointsSame(points1, points2) { + if (points1.length !== points2.length) { + return; + } + for (var i = 0; i < points1.length; i++) { + var p1 = points1[i]; + var p2 = points2[i]; + if (p1[0] !== p2[0] || p1[1] !== p2[1]) { + return; + } + } + return true; + } + + function getSmooth(smooth) { + return typeof (smooth) === 'number' ? smooth : (smooth ? 0.3 : 0); + } + + function getAxisExtentWithGap(axis) { + var extent = axis.getGlobalExtent(); + if (axis.onBand) { + // Remove extra 1px to avoid line miter in clipped edge + var halfBandWidth = axis.getBandWidth() / 2 - 1; + var dir = extent[1] > extent[0] ? 1 : -1; + extent[0] += dir * halfBandWidth; + extent[1] -= dir * halfBandWidth; + } + return extent; + } + + function sign(val) { + return val >= 0 ? 1 : -1; + } + /** + * @param {module:echarts/coord/cartesian/Cartesian2D|module:echarts/coord/polar/Polar} coordSys + * @param {module:echarts/data/List} data + * @param {Array.>} points + * @private + */ + function getStackedOnPoints(coordSys, data) { + var baseAxis = coordSys.getBaseAxis(); + var valueAxis = coordSys.getOtherAxis(baseAxis); + var valueStart = baseAxis.onZero + ? 0 : valueAxis.scale.getExtent()[0]; + + var valueDim = valueAxis.dim; + + var baseDataOffset = valueDim === 'x' || valueDim === 'radius' ? 1 : 0; + + return data.mapArray([valueDim], function (val, idx) { + var stackedOnSameSign; + var stackedOn = data.stackedOn; + // Find first stacked value with same sign + while (stackedOn && + sign(stackedOn.get(valueDim, idx)) === sign(val) + ) { + stackedOnSameSign = stackedOn; + break; + } + var stackedData = []; + stackedData[baseDataOffset] = data.get(baseAxis.dim, idx); + stackedData[1 - baseDataOffset] = stackedOnSameSign + ? stackedOnSameSign.get(valueDim, idx, true) : valueStart; + + return coordSys.dataToPoint(stackedData); + }, true); + } + + function createGridClipShape(cartesian, hasAnimation, seriesModel) { + var xExtent = getAxisExtentWithGap(cartesian.getAxis('x')); + var yExtent = getAxisExtentWithGap(cartesian.getAxis('y')); + var isHorizontal = cartesian.getBaseAxis().isHorizontal(); + + var x = Math.min(xExtent[0], xExtent[1]); + var y = Math.min(yExtent[0], yExtent[1]); + var width = Math.max(xExtent[0], xExtent[1]) - x; + var height = Math.max(yExtent[0], yExtent[1]) - y; + var lineWidth = seriesModel.get('lineStyle.normal.width') || 2; + // Expand clip shape to avoid clipping when line value exceeds axis + var expandSize = seriesModel.get('clipOverflow') ? lineWidth / 2 : Math.max(width, height); + if (isHorizontal) { + y -= expandSize; + height += expandSize * 2; + } + else { + x -= expandSize; + width += expandSize * 2; + } + + var clipPath = new graphic.Rect({ + shape: { + x: x, + y: y, + width: width, + height: height + } + }); + + if (hasAnimation) { + clipPath.shape[isHorizontal ? 'width' : 'height'] = 0; + graphic.initProps(clipPath, { + shape: { + width: width, + height: height + } + }, seriesModel); + } + + return clipPath; + } + + function createPolarClipShape(polar, hasAnimation, seriesModel) { + var angleAxis = polar.getAngleAxis(); + var radiusAxis = polar.getRadiusAxis(); + + var radiusExtent = radiusAxis.getExtent(); + var angleExtent = angleAxis.getExtent(); + + var RADIAN = Math.PI / 180; + + var clipPath = new graphic.Sector({ + shape: { + cx: polar.cx, + cy: polar.cy, + r0: radiusExtent[0], + r: radiusExtent[1], + startAngle: -angleExtent[0] * RADIAN, + endAngle: -angleExtent[1] * RADIAN, + clockwise: angleAxis.inverse + } + }); + + if (hasAnimation) { + clipPath.shape.endAngle = -angleExtent[0] * RADIAN; + graphic.initProps(clipPath, { + shape: { + endAngle: -angleExtent[1] * RADIAN + } + }, seriesModel); + } + + return clipPath; + } + + function createClipShape(coordSys, hasAnimation, seriesModel) { + return coordSys.type === 'polar' + ? createPolarClipShape(coordSys, hasAnimation, seriesModel) + : createGridClipShape(coordSys, hasAnimation, seriesModel); + } + + function turnPointsIntoStep(points, coordSys, stepTurnAt) { + var baseAxis = coordSys.getBaseAxis(); + var baseIndex = baseAxis.dim === 'x' || baseAxis.dim === 'radius' ? 0 : 1; + + var stepPoints = []; + for (var i = 0; i < points.length - 1; i++) { + var nextPt = points[i + 1]; + var pt = points[i]; + stepPoints.push(pt); + + var stepPt = []; + switch (stepTurnAt) { + case 'end': + stepPt[baseIndex] = nextPt[baseIndex]; + stepPt[1 - baseIndex] = pt[1 - baseIndex]; + // default is start + stepPoints.push(stepPt); + break; + case 'middle': + // default is start + var middle = (pt[baseIndex] + nextPt[baseIndex]) / 2; + var stepPt2 = []; + stepPt[baseIndex] = stepPt2[baseIndex] = middle; + stepPt[1 - baseIndex] = pt[1 - baseIndex]; + stepPt2[1 - baseIndex] = nextPt[1 - baseIndex]; + stepPoints.push(stepPt); + stepPoints.push(stepPt2); + break; + default: + stepPt[baseIndex] = pt[baseIndex]; + stepPt[1 - baseIndex] = nextPt[1 - baseIndex]; + // default is start + stepPoints.push(stepPt); + } + } + // Last points + points[i] && stepPoints.push(points[i]); + return stepPoints; + } + + function getVisualGradient(data, coordSys) { + var visualMetaList = data.getVisual('visualMeta'); + if (!visualMetaList || !visualMetaList.length || !data.count()) { + // When data.count() is 0, gradient range can not be calculated. + return; + } + + var visualMeta; + for (var i = visualMetaList.length - 1; i >= 0; i--) { + // Can only be x or y + if (visualMetaList[i].dimension < 2) { + visualMeta = visualMetaList[i]; + break; + } + } + if (!visualMeta || coordSys.type !== 'cartesian2d') { + if (true) { + console.warn('Visual map on line style only support x or y dimension.'); + } + return; + } + + // If the area to be rendered is bigger than area defined by LinearGradient, + // the canvas spec prescribes that the color of the first stop and the last + // stop should be used. But if two stops are added at offset 0, in effect + // browsers use the color of the second stop to render area outside + // LinearGradient. So we can only infinitesimally extend area defined in + // LinearGradient to render `outerColors`. + + var dimension = visualMeta.dimension; + var dimName = data.dimensions[dimension]; + var axis = coordSys.getAxis(dimName); + + // dataToCoor mapping may not be linear, but must be monotonic. + var colorStops = zrUtil.map(visualMeta.stops, function (stop) { + return { + coord: axis.toGlobalCoord(axis.dataToCoord(stop.value)), + color: stop.color + }; + }); + var stopLen = colorStops.length; + var outerColors = visualMeta.outerColors.slice(); + + if (stopLen && colorStops[0].coord > colorStops[stopLen - 1].coord) { + colorStops.reverse(); + outerColors.reverse(); + } + + var tinyExtent = 10; // Arbitrary value: 10px + var minCoord = colorStops[0].coord - tinyExtent; + var maxCoord = colorStops[stopLen - 1].coord + tinyExtent; + var coordSpan = maxCoord - minCoord; + + if (coordSpan < 1e-3) { + return 'transparent'; + } + + zrUtil.each(colorStops, function (stop) { + stop.offset = (stop.coord - minCoord) / coordSpan; + }); + colorStops.push({ + offset: stopLen ? colorStops[stopLen - 1].offset : 0.5, + color: outerColors[1] || 'transparent' + }); + colorStops.unshift({ // notice colorStops.length have been changed. + offset: stopLen ? colorStops[0].offset : 0.5, + color: outerColors[0] || 'transparent' + }); + + // zrUtil.each(colorStops, function (colorStop) { + // // Make sure each offset has rounded px to avoid not sharp edge + // colorStop.offset = (Math.round(colorStop.offset * (end - start) + start) - start) / (end - start); + // }); + + var gradient = new graphic.LinearGradient(0, 0, 0, 0, colorStops, true); + gradient[dimName] = minCoord; + gradient[dimName + '2'] = maxCoord; + + return gradient; + } + + module.exports = ChartView.extend({ + + type: 'line', + + init: function () { + var lineGroup = new graphic.Group(); + + var symbolDraw = new SymbolDraw(); + this.group.add(symbolDraw.group); + + this._symbolDraw = symbolDraw; + this._lineGroup = lineGroup; + }, + + render: function (seriesModel, ecModel, api) { + var coordSys = seriesModel.coordinateSystem; + var group = this.group; + var data = seriesModel.getData(); + var lineStyleModel = seriesModel.getModel('lineStyle.normal'); + var areaStyleModel = seriesModel.getModel('areaStyle.normal'); + + var points = data.mapArray(data.getItemLayout, true); + + var isCoordSysPolar = coordSys.type === 'polar'; + var prevCoordSys = this._coordSys; + + var symbolDraw = this._symbolDraw; + var polyline = this._polyline; + var polygon = this._polygon; + + var lineGroup = this._lineGroup; + + var hasAnimation = seriesModel.get('animation'); + + var isAreaChart = !areaStyleModel.isEmpty(); + var stackedOnPoints = getStackedOnPoints(coordSys, data); + + var showSymbol = seriesModel.get('showSymbol'); + + var isSymbolIgnore = showSymbol && !isCoordSysPolar && !seriesModel.get('showAllSymbol') + && this._getSymbolIgnoreFunc(data, coordSys); + + // Remove temporary symbols + var oldData = this._data; + oldData && oldData.eachItemGraphicEl(function (el, idx) { + if (el.__temp) { + group.remove(el); + oldData.setItemGraphicEl(idx, null); + } + }); + + // Remove previous created symbols if showSymbol changed to false + if (!showSymbol) { + symbolDraw.remove(); + } + + group.add(lineGroup); + + // FIXME step not support polar + var step = !isCoordSysPolar && seriesModel.get('step'); + // Initialization animation or coordinate system changed + if ( + !(polyline && prevCoordSys.type === coordSys.type && step === this._step) + ) { + showSymbol && symbolDraw.updateData(data, isSymbolIgnore); + + if (step) { + // TODO If stacked series is not step + points = turnPointsIntoStep(points, coordSys, step); + stackedOnPoints = turnPointsIntoStep(stackedOnPoints, coordSys, step); + } + + polyline = this._newPolyline(points, coordSys, hasAnimation); + if (isAreaChart) { + polygon = this._newPolygon( + points, stackedOnPoints, + coordSys, hasAnimation + ); + } + lineGroup.setClipPath(createClipShape(coordSys, true, seriesModel)); + } + else { + if (isAreaChart && !polygon) { + // If areaStyle is added + polygon = this._newPolygon( + points, stackedOnPoints, + coordSys, hasAnimation + ); + } + else if (polygon && !isAreaChart) { + // If areaStyle is removed + lineGroup.remove(polygon); + polygon = this._polygon = null; + } + + // Update clipPath + lineGroup.setClipPath(createClipShape(coordSys, false, seriesModel)); + + // Always update, or it is wrong in the case turning on legend + // because points are not changed + showSymbol && symbolDraw.updateData(data, isSymbolIgnore); + + // Stop symbol animation and sync with line points + // FIXME performance? + data.eachItemGraphicEl(function (el) { + el.stopAnimation(true); + }); + + // In the case data zoom triggerred refreshing frequently + // Data may not change if line has a category axis. So it should animate nothing + if (!isPointsSame(this._stackedOnPoints, stackedOnPoints) + || !isPointsSame(this._points, points) + ) { + if (hasAnimation) { + this._updateAnimation( + data, stackedOnPoints, coordSys, api, step + ); + } + else { + // Not do it in update with animation + if (step) { + // TODO If stacked series is not step + points = turnPointsIntoStep(points, coordSys, step); + stackedOnPoints = turnPointsIntoStep(stackedOnPoints, coordSys, step); + } + + polyline.setShape({ + points: points + }); + polygon && polygon.setShape({ + points: points, + stackedOnPoints: stackedOnPoints + }); + } + } + } + + var visualColor = getVisualGradient(data, coordSys) || data.getVisual('color'); + + polyline.useStyle(zrUtil.defaults( + // Use color in lineStyle first + lineStyleModel.getLineStyle(), + { + fill: 'none', + stroke: visualColor, + lineJoin: 'bevel' + } + )); + + var smooth = seriesModel.get('smooth'); + smooth = getSmooth(seriesModel.get('smooth')); + polyline.setShape({ + smooth: smooth, + smoothMonotone: seriesModel.get('smoothMonotone'), + connectNulls: seriesModel.get('connectNulls') + }); + + if (polygon) { + var stackedOn = data.stackedOn; + var stackedOnSmooth = 0; + + polygon.useStyle(zrUtil.defaults( + areaStyleModel.getAreaStyle(), + { + fill: visualColor, + opacity: 0.7, + lineJoin: 'bevel' + } + )); + + if (stackedOn) { + var stackedOnSeries = stackedOn.hostModel; + stackedOnSmooth = getSmooth(stackedOnSeries.get('smooth')); + } + + polygon.setShape({ + smooth: smooth, + stackedOnSmooth: stackedOnSmooth, + smoothMonotone: seriesModel.get('smoothMonotone'), + connectNulls: seriesModel.get('connectNulls') + }); + } + + this._data = data; + // Save the coordinate system for transition animation when data changed + this._coordSys = coordSys; + this._stackedOnPoints = stackedOnPoints; + this._points = points; + this._step = step; + }, + + dispose: function () {}, + + highlight: function (seriesModel, ecModel, api, payload) { + var data = seriesModel.getData(); + var dataIndex = modelUtil.queryDataIndex(data, payload); + + if (!(dataIndex instanceof Array) && dataIndex != null && dataIndex >= 0) { + var symbol = data.getItemGraphicEl(dataIndex); + if (!symbol) { + // Create a temporary symbol if it is not exists + var pt = data.getItemLayout(dataIndex); + if (!pt) { + // Null data + return; + } + symbol = new Symbol(data, dataIndex); + symbol.position = pt; + symbol.setZ( + seriesModel.get('zlevel'), + seriesModel.get('z') + ); + symbol.ignore = isNaN(pt[0]) || isNaN(pt[1]); + symbol.__temp = true; + data.setItemGraphicEl(dataIndex, symbol); + + // Stop scale animation + symbol.stopSymbolAnimation(true); + + this.group.add(symbol); + } + symbol.highlight(); + } + else { + // Highlight whole series + ChartView.prototype.highlight.call( + this, seriesModel, ecModel, api, payload + ); + } + }, + + downplay: function (seriesModel, ecModel, api, payload) { + var data = seriesModel.getData(); + var dataIndex = modelUtil.queryDataIndex(data, payload); + if (dataIndex != null && dataIndex >= 0) { + var symbol = data.getItemGraphicEl(dataIndex); + if (symbol) { + if (symbol.__temp) { + data.setItemGraphicEl(dataIndex, null); + this.group.remove(symbol); + } + else { + symbol.downplay(); + } + } + } + else { + // FIXME + // can not downplay completely. + // Downplay whole series + ChartView.prototype.downplay.call( + this, seriesModel, ecModel, api, payload + ); + } + }, + + /** + * @param {module:zrender/container/Group} group + * @param {Array.>} points + * @private + */ + _newPolyline: function (points) { + var polyline = this._polyline; + // Remove previous created polyline + if (polyline) { + this._lineGroup.remove(polyline); + } + + polyline = new polyHelper.Polyline({ + shape: { + points: points + }, + silent: true, + z2: 10 + }); + + this._lineGroup.add(polyline); + + this._polyline = polyline; + + return polyline; + }, + + /** + * @param {module:zrender/container/Group} group + * @param {Array.>} stackedOnPoints + * @param {Array.>} points + * @private + */ + _newPolygon: function (points, stackedOnPoints) { + var polygon = this._polygon; + // Remove previous created polygon + if (polygon) { + this._lineGroup.remove(polygon); + } + + polygon = new polyHelper.Polygon({ + shape: { + points: points, + stackedOnPoints: stackedOnPoints + }, + silent: true + }); + + this._lineGroup.add(polygon); + + this._polygon = polygon; + return polygon; + }, + /** + * @private + */ + _getSymbolIgnoreFunc: function (data, coordSys) { + var categoryAxis = coordSys.getAxesByScale('ordinal')[0]; + // `getLabelInterval` is provided by echarts/component/axis + if (categoryAxis && categoryAxis.isLabelIgnored) { + return zrUtil.bind(categoryAxis.isLabelIgnored, categoryAxis); + } + }, + + /** + * @private + */ + // FIXME Two value axis + _updateAnimation: function (data, stackedOnPoints, coordSys, api, step) { + var polyline = this._polyline; + var polygon = this._polygon; + var seriesModel = data.hostModel; + + var diff = lineAnimationDiff( + this._data, data, + this._stackedOnPoints, stackedOnPoints, + this._coordSys, coordSys + ); + + var current = diff.current; + var stackedOnCurrent = diff.stackedOnCurrent; + var next = diff.next; + var stackedOnNext = diff.stackedOnNext; + if (step) { + // TODO If stacked series is not step + current = turnPointsIntoStep(diff.current, coordSys, step); + stackedOnCurrent = turnPointsIntoStep(diff.stackedOnCurrent, coordSys, step); + next = turnPointsIntoStep(diff.next, coordSys, step); + stackedOnNext = turnPointsIntoStep(diff.stackedOnNext, coordSys, step); + } + // `diff.current` is subset of `current` (which should be ensured by + // turnPointsIntoStep), so points in `__points` can be updated when + // points in `current` are update during animation. + polyline.shape.__points = diff.current; + polyline.shape.points = current; + + graphic.updateProps(polyline, { + shape: { + points: next + } + }, seriesModel); + + if (polygon) { + polygon.setShape({ + points: current, + stackedOnPoints: stackedOnCurrent + }); + graphic.updateProps(polygon, { + shape: { + points: next, + stackedOnPoints: stackedOnNext + } + }, seriesModel); + } + + var updatedDataInfo = []; + var diffStatus = diff.status; + + for (var i = 0; i < diffStatus.length; i++) { + var cmd = diffStatus[i].cmd; + if (cmd === '=') { + var el = data.getItemGraphicEl(diffStatus[i].idx1); + if (el) { + updatedDataInfo.push({ + el: el, + ptIdx: i // Index of points + }); + } + } + } + + if (polyline.animators && polyline.animators.length) { + polyline.animators[0].during(function () { + for (var i = 0; i < updatedDataInfo.length; i++) { + var el = updatedDataInfo[i].el; + el.attr('position', polyline.shape.__points[updatedDataInfo[i].ptIdx]); + } + }); + } + }, + + remove: function (ecModel) { + var group = this.group; + var oldData = this._data; + this._lineGroup.removeAll(); + this._symbolDraw.remove(true); + // Remove temporary created elements when highlighting + oldData && oldData.eachItemGraphicEl(function (el, idx) { + if (el.__temp) { + group.remove(el); + oldData.setItemGraphicEl(idx, null); + } + }); + + this._polyline = + this._polygon = + this._coordSys = + this._points = + this._stackedOnPoints = + this._data = null; + } + }); + + +/***/ }, +/* 116 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * @module echarts/chart/helper/SymbolDraw + */ + + + var graphic = __webpack_require__(18); + var Symbol = __webpack_require__(117); + + /** + * @constructor + * @alias module:echarts/chart/helper/SymbolDraw + * @param {module:zrender/graphic/Group} [symbolCtor] + */ + function SymbolDraw(symbolCtor) { + this.group = new graphic.Group(); + + this._symbolCtor = symbolCtor || Symbol; + } + + var symbolDrawProto = SymbolDraw.prototype; + + function symbolNeedsDraw(data, idx, isIgnore) { + var point = data.getItemLayout(idx); + // Is an object + // if (point && point.hasOwnProperty('point')) { + // point = point.point; + // } + return point && !isNaN(point[0]) && !isNaN(point[1]) && !(isIgnore && isIgnore(idx)) + && data.getItemVisual(idx, 'symbol') !== 'none'; + } + /** + * Update symbols draw by new data + * @param {module:echarts/data/List} data + * @param {Array.} [isIgnore] + */ + symbolDrawProto.updateData = function (data, isIgnore) { + var group = this.group; + var seriesModel = data.hostModel; + var oldData = this._data; + + var SymbolCtor = this._symbolCtor; + + var seriesScope = { + itemStyle: seriesModel.getModel('itemStyle.normal').getItemStyle(['color']), + hoverItemStyle: seriesModel.getModel('itemStyle.emphasis').getItemStyle(), + symbolRotate: seriesModel.get('symbolRotate'), + symbolOffset: seriesModel.get('symbolOffset'), + hoverAnimation: seriesModel.get('hoverAnimation'), + + labelModel: seriesModel.getModel('label.normal'), + hoverLabelModel: seriesModel.getModel('label.emphasis'), + cursorStyle: seriesModel.get('cursor') + }; + + data.diff(oldData) + .add(function (newIdx) { + var point = data.getItemLayout(newIdx); + if (symbolNeedsDraw(data, newIdx, isIgnore)) { + var symbolEl = new SymbolCtor(data, newIdx, seriesScope); + symbolEl.attr('position', point); + data.setItemGraphicEl(newIdx, symbolEl); + group.add(symbolEl); + } + }) + .update(function (newIdx, oldIdx) { + var symbolEl = oldData.getItemGraphicEl(oldIdx); + var point = data.getItemLayout(newIdx); + if (!symbolNeedsDraw(data, newIdx, isIgnore)) { + group.remove(symbolEl); + return; + } + if (!symbolEl) { + symbolEl = new SymbolCtor(data, newIdx); + symbolEl.attr('position', point); + } + else { + symbolEl.updateData(data, newIdx, seriesScope); + graphic.updateProps(symbolEl, { + position: point + }, seriesModel); + } + + // Add back + group.add(symbolEl); + + data.setItemGraphicEl(newIdx, symbolEl); + }) + .remove(function (oldIdx) { + var el = oldData.getItemGraphicEl(oldIdx); + el && el.fadeOut(function () { + group.remove(el); + }); + }) + .execute(); + + this._data = data; + }; + + symbolDrawProto.updateLayout = function () { + var data = this._data; + if (data) { + // Not use animation + data.eachItemGraphicEl(function (el, idx) { + var point = data.getItemLayout(idx); + el.attr('position', point); + }); + } + }; + + symbolDrawProto.remove = function (enableAnimation) { + var group = this.group; + var data = this._data; + if (data) { + if (enableAnimation) { + data.eachItemGraphicEl(function (el) { + el.fadeOut(function () { + group.remove(el); + }); + }); + } + else { + group.removeAll(); + } + } + }; + + module.exports = SymbolDraw; + + +/***/ }, +/* 117 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * @module echarts/chart/helper/Symbol + */ + + + var zrUtil = __webpack_require__(4); + var symbolUtil = __webpack_require__(111); + var graphic = __webpack_require__(18); + var numberUtil = __webpack_require__(7); + var labelHelper = __webpack_require__(118); + + function getSymbolSize(data, idx) { + var symbolSize = data.getItemVisual(idx, 'symbolSize'); + return symbolSize instanceof Array + ? symbolSize.slice() + : [+symbolSize, +symbolSize]; + } + + function getScale(symbolSize) { + return [symbolSize[0] / 2, symbolSize[1] / 2]; + } + + /** + * @constructor + * @alias {module:echarts/chart/helper/Symbol} + * @param {module:echarts/data/List} data + * @param {number} idx + * @extends {module:zrender/graphic/Group} + */ + function Symbol(data, idx, seriesScope) { + graphic.Group.call(this); + + this.updateData(data, idx, seriesScope); + } + + var symbolProto = Symbol.prototype; + + function driftSymbol(dx, dy) { + this.parent.drift(dx, dy); + } + + symbolProto._createSymbol = function (symbolType, data, idx, symbolSize) { + // Remove paths created before + this.removeAll(); + + var seriesModel = data.hostModel; + var color = data.getItemVisual(idx, 'color'); + + // var symbolPath = symbolUtil.createSymbol( + // symbolType, -0.5, -0.5, 1, 1, color + // ); + // If width/height are set too small (e.g., set to 1) on ios10 + // and macOS Sierra, a circle stroke become a rect, no matter what + // the scale is set. So we set width/height as 2. See #4150. + var symbolPath = symbolUtil.createSymbol( + symbolType, -1, -1, 2, 2, color + ); + + symbolPath.attr({ + z2: 100, + culling: true, + scale: [0, 0] + }); + // Rewrite drift method + symbolPath.drift = driftSymbol; + + graphic.initProps(symbolPath, { + scale: getScale(symbolSize) + }, seriesModel, idx); + this._symbolType = symbolType; + + this.add(symbolPath); + }; + + /** + * Stop animation + * @param {boolean} toLastFrame + */ + symbolProto.stopSymbolAnimation = function (toLastFrame) { + this.childAt(0).stopAnimation(toLastFrame); + }; + + /** + * Get symbol path element + */ + symbolProto.getSymbolPath = function () { + return this.childAt(0); + }; + + /** + * Get scale(aka, current symbol size). + * Including the change caused by animation + */ + symbolProto.getScale = function () { + return this.childAt(0).scale; + }; + + /** + * Highlight symbol + */ + symbolProto.highlight = function () { + this.childAt(0).trigger('emphasis'); + }; + + /** + * Downplay symbol + */ + symbolProto.downplay = function () { + this.childAt(0).trigger('normal'); + }; + + /** + * @param {number} zlevel + * @param {number} z + */ + symbolProto.setZ = function (zlevel, z) { + var symbolPath = this.childAt(0); + symbolPath.zlevel = zlevel; + symbolPath.z = z; + }; + + symbolProto.setDraggable = function (draggable) { + var symbolPath = this.childAt(0); + symbolPath.draggable = draggable; + symbolPath.cursor = draggable ? 'move' : 'pointer'; + }; + + /** + * Update symbol properties + * @param {module:echarts/data/List} data + * @param {number} idx + */ + symbolProto.updateData = function (data, idx, seriesScope) { + this.silent = false; + + var symbolType = data.getItemVisual(idx, 'symbol') || 'circle'; + var seriesModel = data.hostModel; + var symbolSize = getSymbolSize(data, idx); + + if (symbolType !== this._symbolType) { + this._createSymbol(symbolType, data, idx, symbolSize); + } + else { + var symbolPath = this.childAt(0); + symbolPath.silent = false; + graphic.updateProps(symbolPath, { + scale: getScale(symbolSize) + }, seriesModel, idx); + } + this._updateCommon(data, idx, symbolSize, seriesScope); + this._seriesModel = seriesModel; + }; + + // Update common properties + var normalStyleAccessPath = ['itemStyle', 'normal']; + var emphasisStyleAccessPath = ['itemStyle', 'emphasis']; + var normalLabelAccessPath = ['label', 'normal']; + var emphasisLabelAccessPath = ['label', 'emphasis']; + + symbolProto._updateCommon = function (data, idx, symbolSize, seriesScope) { + var symbolPath = this.childAt(0); + var seriesModel = data.hostModel; + var color = data.getItemVisual(idx, 'color'); + + // Reset style + if (symbolPath.type !== 'image') { + symbolPath.useStyle({ + strokeNoScale: true + }); + } + + seriesScope = seriesScope || null; + + var itemStyle = seriesScope && seriesScope.itemStyle; + var hoverItemStyle = seriesScope && seriesScope.hoverItemStyle; + var symbolRotate = seriesScope && seriesScope.symbolRotate; + var symbolOffset = seriesScope && seriesScope.symbolOffset; + var labelModel = seriesScope && seriesScope.labelModel; + var hoverLabelModel = seriesScope && seriesScope.hoverLabelModel; + var hoverAnimation = seriesScope && seriesScope.hoverAnimation; + var cursorStyle = seriesScope && seriesScope.cursorStyle; + + if (!seriesScope || data.hasItemOption) { + var itemModel = data.getItemModel(idx); + + // Color must be excluded. + // Because symbol provide setColor individually to set fill and stroke + itemStyle = itemModel.getModel(normalStyleAccessPath).getItemStyle(['color']); + hoverItemStyle = itemModel.getModel(emphasisStyleAccessPath).getItemStyle(); + + symbolRotate = itemModel.getShallow('symbolRotate'); + symbolOffset = itemModel.getShallow('symbolOffset'); + + labelModel = itemModel.getModel(normalLabelAccessPath); + hoverLabelModel = itemModel.getModel(emphasisLabelAccessPath); + hoverAnimation = itemModel.getShallow('hoverAnimation'); + cursorStyle = itemModel.getShallow('cursor'); + } + else { + hoverItemStyle = zrUtil.extend({}, hoverItemStyle); + } + + var elStyle = symbolPath.style; + + symbolPath.attr('rotation', (symbolRotate || 0) * Math.PI / 180 || 0); + + if (symbolOffset) { + symbolPath.attr('position', [ + numberUtil.parsePercent(symbolOffset[0], symbolSize[0]), + numberUtil.parsePercent(symbolOffset[1], symbolSize[1]) + ]); + } + + cursorStyle && symbolPath.attr('cursor', cursorStyle); + + // PENDING setColor before setStyle!!! + symbolPath.setColor(color); + + symbolPath.setStyle(itemStyle); + + var opacity = data.getItemVisual(idx, 'opacity'); + if (opacity != null) { + elStyle.opacity = opacity; + } + + var valueDim = labelHelper.findLabelValueDim(data); + labelHelper.setTextToStyle( + data, idx, valueDim, elStyle, seriesModel, labelModel, color + ); + labelHelper.setTextToStyle( + data, idx, valueDim, hoverItemStyle, seriesModel, hoverLabelModel, color + ); + + symbolPath.off('mouseover') + .off('mouseout') + .off('emphasis') + .off('normal'); + + symbolPath.hoverStyle = hoverItemStyle; + + graphic.setHoverStyle(symbolPath); + + var scale = getScale(symbolSize); + + if (hoverAnimation && seriesModel.isAnimationEnabled()) { + var onEmphasis = function() { + var ratio = scale[1] / scale[0]; + this.animateTo({ + scale: [ + Math.max(scale[0] * 1.1, scale[0] + 3), + Math.max(scale[1] * 1.1, scale[1] + 3 * ratio) + ] + }, 400, 'elasticOut'); + }; + var onNormal = function() { + this.animateTo({ + scale: scale + }, 400, 'elasticOut'); + }; + symbolPath.on('mouseover', onEmphasis) + .on('mouseout', onNormal) + .on('emphasis', onEmphasis) + .on('normal', onNormal); + } + }; + + symbolProto.fadeOut = function (cb) { + var symbolPath = this.childAt(0); + // Avoid mistaken hover when fading out + this.silent = symbolPath.silent = true; + // Not show text when animating + symbolPath.style.text = ''; + graphic.updateProps(symbolPath, { + scale: [0, 0] + }, this._seriesModel, this.dataIndex, cb); + }; + + zrUtil.inherits(Symbol, graphic.Group); + + module.exports = Symbol; + + +/***/ }, +/* 118 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * @module echarts/chart/helper/Symbol + */ + + + var graphic = __webpack_require__(18); + var zrUtil = __webpack_require__(4); + var modelUtil = __webpack_require__(5); + + var helper = {}; + + helper.findLabelValueDim = function (data) { + var valueDim; + var labelDims = modelUtil.otherDimToDataDim(data, 'label'); + + if (labelDims.length) { + valueDim = labelDims[0]; + } + else { + // Get last value dim + var dimensions = data.dimensions.slice(); + var dataType; + while (dimensions.length && ( + valueDim = dimensions.pop(), + dataType = data.getDimensionInfo(valueDim).type, + dataType === 'ordinal' || dataType === 'time' + )) {} // jshint ignore:line + } + + return valueDim; + }; + + helper.setTextToStyle = function ( + data, dataIndex, valueDim, elStyle, seriesModel, labelModel, color + ) { + if (valueDim != null && labelModel.getShallow('show')) { + graphic.setText(elStyle, labelModel, color); + elStyle.text = zrUtil.retrieve( + seriesModel.getFormattedLabel(dataIndex, 'normal'), + data.get(valueDim, dataIndex) + ); + } + else { + elStyle.text = ''; + } + }; + + module.exports = helper; + + +/***/ }, +/* 119 */ +/***/ function(module, exports) { + + + + // var arrayDiff = require('zrender/lib/core/arrayDiff'); + // 'zrender/core/arrayDiff' has been used before, but it did + // not do well in performance when roam with fixed dataZoom window. + + function sign(val) { + return val >= 0 ? 1 : -1; + } + + function getStackedOnPoint(coordSys, data, idx) { + var baseAxis = coordSys.getBaseAxis(); + var valueAxis = coordSys.getOtherAxis(baseAxis); + var valueStart = baseAxis.onZero + ? 0 : valueAxis.scale.getExtent()[0]; + + var valueDim = valueAxis.dim; + var baseDataOffset = valueDim === 'x' || valueDim === 'radius' ? 1 : 0; + + var stackedOnSameSign; + var stackedOn = data.stackedOn; + var val = data.get(valueDim, idx); + // Find first stacked value with same sign + while (stackedOn && + sign(stackedOn.get(valueDim, idx)) === sign(val) + ) { + stackedOnSameSign = stackedOn; + break; + } + var stackedData = []; + stackedData[baseDataOffset] = data.get(baseAxis.dim, idx); + stackedData[1 - baseDataOffset] = stackedOnSameSign + ? stackedOnSameSign.get(valueDim, idx, true) : valueStart; + + return coordSys.dataToPoint(stackedData); + } + + // function convertToIntId(newIdList, oldIdList) { + // // Generate int id instead of string id. + // // Compare string maybe slow in score function of arrDiff + + // // Assume id in idList are all unique + // var idIndicesMap = {}; + // var idx = 0; + // for (var i = 0; i < newIdList.length; i++) { + // idIndicesMap[newIdList[i]] = idx; + // newIdList[i] = idx++; + // } + // for (var i = 0; i < oldIdList.length; i++) { + // var oldId = oldIdList[i]; + // // Same with newIdList + // if (idIndicesMap[oldId]) { + // oldIdList[i] = idIndicesMap[oldId]; + // } + // else { + // oldIdList[i] = idx++; + // } + // } + // } + + function diffData(oldData, newData) { + var diffResult = []; + + newData.diff(oldData) + .add(function (idx) { + diffResult.push({cmd: '+', idx: idx}); + }) + .update(function (newIdx, oldIdx) { + diffResult.push({cmd: '=', idx: oldIdx, idx1: newIdx}); + }) + .remove(function (idx) { + diffResult.push({cmd: '-', idx: idx}); + }) + .execute(); + + return diffResult; + } + + module.exports = function ( + oldData, newData, + oldStackedOnPoints, newStackedOnPoints, + oldCoordSys, newCoordSys + ) { + var diff = diffData(oldData, newData); + + // var newIdList = newData.mapArray(newData.getId); + // var oldIdList = oldData.mapArray(oldData.getId); + + // convertToIntId(newIdList, oldIdList); + + // // FIXME One data ? + // diff = arrayDiff(oldIdList, newIdList); + + var currPoints = []; + var nextPoints = []; + // Points for stacking base line + var currStackedPoints = []; + var nextStackedPoints = []; + + var status = []; + var sortedIndices = []; + var rawIndices = []; + var dims = newCoordSys.dimensions; + for (var i = 0; i < diff.length; i++) { + var diffItem = diff[i]; + var pointAdded = true; + + // FIXME, animation is not so perfect when dataZoom window moves fast + // Which is in case remvoing or add more than one data in the tail or head + switch (diffItem.cmd) { + case '=': + var currentPt = oldData.getItemLayout(diffItem.idx); + var nextPt = newData.getItemLayout(diffItem.idx1); + // If previous data is NaN, use next point directly + if (isNaN(currentPt[0]) || isNaN(currentPt[1])) { + currentPt = nextPt.slice(); + } + currPoints.push(currentPt); + nextPoints.push(nextPt); + + currStackedPoints.push(oldStackedOnPoints[diffItem.idx]); + nextStackedPoints.push(newStackedOnPoints[diffItem.idx1]); + + rawIndices.push(newData.getRawIndex(diffItem.idx1)); + break; + case '+': + var idx = diffItem.idx; + currPoints.push( + oldCoordSys.dataToPoint([ + newData.get(dims[0], idx, true), newData.get(dims[1], idx, true) + ]) + ); + + nextPoints.push(newData.getItemLayout(idx).slice()); + + currStackedPoints.push( + getStackedOnPoint(oldCoordSys, newData, idx) + ); + nextStackedPoints.push(newStackedOnPoints[idx]); + + rawIndices.push(newData.getRawIndex(idx)); + break; + case '-': + var idx = diffItem.idx; + var rawIndex = oldData.getRawIndex(idx); + // Data is replaced. In the case of dynamic data queue + // FIXME FIXME FIXME + if (rawIndex !== idx) { + currPoints.push(oldData.getItemLayout(idx)); + nextPoints.push(newCoordSys.dataToPoint([ + oldData.get(dims[0], idx, true), oldData.get(dims[1], idx, true) + ])); + + currStackedPoints.push(oldStackedOnPoints[idx]); + nextStackedPoints.push( + getStackedOnPoint( + newCoordSys, oldData, idx + ) + ); + + rawIndices.push(rawIndex); + } + else { + pointAdded = false; + } + } + + // Original indices + if (pointAdded) { + status.push(diffItem); + sortedIndices.push(sortedIndices.length); + } + } + + // Diff result may be crossed if all items are changed + // Sort by data index + sortedIndices.sort(function (a, b) { + return rawIndices[a] - rawIndices[b]; + }); + + var sortedCurrPoints = []; + var sortedNextPoints = []; + + var sortedCurrStackedPoints = []; + var sortedNextStackedPoints = []; + + var sortedStatus = []; + for (var i = 0; i < sortedIndices.length; i++) { + var idx = sortedIndices[i]; + sortedCurrPoints[i] = currPoints[idx]; + sortedNextPoints[i] = nextPoints[idx]; + + sortedCurrStackedPoints[i] = currStackedPoints[idx]; + sortedNextStackedPoints[i] = nextStackedPoints[idx]; + + sortedStatus[i] = status[idx]; + } + + return { + current: sortedCurrPoints, + next: sortedNextPoints, + + stackedOnCurrent: sortedCurrStackedPoints, + stackedOnNext: sortedNextStackedPoints, + + status: sortedStatus + }; + }; + + +/***/ }, +/* 120 */ +/***/ function(module, exports, __webpack_require__) { + + // Poly path support NaN point + + + var Path = __webpack_require__(20); + var vec2 = __webpack_require__(10); + + var vec2Min = vec2.min; + var vec2Max = vec2.max; + + var scaleAndAdd = vec2.scaleAndAdd; + var v2Copy = vec2.copy; + + // Temporary variable + var v = []; + var cp0 = []; + var cp1 = []; + + function isPointNull(p) { + return isNaN(p[0]) || isNaN(p[1]); + } + + function drawSegment( + ctx, points, start, segLen, allLen, + dir, smoothMin, smoothMax, smooth, smoothMonotone, connectNulls + ) { + var prevIdx = 0; + var idx = start; + for (var k = 0; k < segLen; k++) { + var p = points[idx]; + if (idx >= allLen || idx < 0) { + break; + } + if (isPointNull(p)) { + if (connectNulls) { + idx += dir; + continue; + } + break; + } + + if (idx === start) { + ctx[dir > 0 ? 'moveTo' : 'lineTo'](p[0], p[1]); + v2Copy(cp0, p); + } + else { + if (smooth > 0) { + var nextIdx = idx + dir; + var nextP = points[nextIdx]; + if (connectNulls) { + // Find next point not null + while (nextP && isPointNull(points[nextIdx])) { + nextIdx += dir; + nextP = points[nextIdx]; + } + } + + var ratioNextSeg = 0.5; + var prevP = points[prevIdx]; + var nextP = points[nextIdx]; + // Last point + if (!nextP || isPointNull(nextP)) { + v2Copy(cp1, p); + } + else { + // If next data is null in not connect case + if (isPointNull(nextP) && !connectNulls) { + nextP = p; + } + + vec2.sub(v, nextP, prevP); + + var lenPrevSeg; + var lenNextSeg; + if (smoothMonotone === 'x' || smoothMonotone === 'y') { + var dim = smoothMonotone === 'x' ? 0 : 1; + lenPrevSeg = Math.abs(p[dim] - prevP[dim]); + lenNextSeg = Math.abs(p[dim] - nextP[dim]); + } + else { + lenPrevSeg = vec2.dist(p, prevP); + lenNextSeg = vec2.dist(p, nextP); + } + + // Use ratio of seg length + ratioNextSeg = lenNextSeg / (lenNextSeg + lenPrevSeg); + + scaleAndAdd(cp1, p, v, -smooth * (1 - ratioNextSeg)); + } + // Smooth constraint + vec2Min(cp0, cp0, smoothMax); + vec2Max(cp0, cp0, smoothMin); + vec2Min(cp1, cp1, smoothMax); + vec2Max(cp1, cp1, smoothMin); + + ctx.bezierCurveTo( + cp0[0], cp0[1], + cp1[0], cp1[1], + p[0], p[1] + ); + // cp0 of next segment + scaleAndAdd(cp0, p, v, smooth * ratioNextSeg); + } + else { + ctx.lineTo(p[0], p[1]); + } + } + + prevIdx = idx; + idx += dir; + } + + return k; + } + + function getBoundingBox(points, smoothConstraint) { + var ptMin = [Infinity, Infinity]; + var ptMax = [-Infinity, -Infinity]; + if (smoothConstraint) { + for (var i = 0; i < points.length; i++) { + var pt = points[i]; + if (pt[0] < ptMin[0]) { ptMin[0] = pt[0]; } + if (pt[1] < ptMin[1]) { ptMin[1] = pt[1]; } + if (pt[0] > ptMax[0]) { ptMax[0] = pt[0]; } + if (pt[1] > ptMax[1]) { ptMax[1] = pt[1]; } + } + } + return { + min: smoothConstraint ? ptMin : ptMax, + max: smoothConstraint ? ptMax : ptMin + }; + } + + module.exports = { + + Polyline: Path.extend({ + + type: 'ec-polyline', + + shape: { + points: [], + + smooth: 0, + + smoothConstraint: true, + + smoothMonotone: null, + + connectNulls: false + }, + + style: { + fill: null, + + stroke: '#000' + }, + + buildPath: function (ctx, shape) { + var points = shape.points; + + var i = 0; + var len = points.length; + + var result = getBoundingBox(points, shape.smoothConstraint); + + if (shape.connectNulls) { + // Must remove first and last null values avoid draw error in polygon + for (; len > 0; len--) { + if (!isPointNull(points[len - 1])) { + break; + } + } + for (; i < len; i++) { + if (!isPointNull(points[i])) { + break; + } + } + } + while (i < len) { + i += drawSegment( + ctx, points, i, len, len, + 1, result.min, result.max, shape.smooth, + shape.smoothMonotone, shape.connectNulls + ) + 1; + } + } + }), + + Polygon: Path.extend({ + + type: 'ec-polygon', + + shape: { + points: [], + + // Offset between stacked base points and points + stackedOnPoints: [], + + smooth: 0, + + stackedOnSmooth: 0, + + smoothConstraint: true, + + smoothMonotone: null, + + connectNulls: false + }, + + buildPath: function (ctx, shape) { + var points = shape.points; + var stackedOnPoints = shape.stackedOnPoints; + + var i = 0; + var len = points.length; + var smoothMonotone = shape.smoothMonotone; + var bbox = getBoundingBox(points, shape.smoothConstraint); + var stackedOnBBox = getBoundingBox(stackedOnPoints, shape.smoothConstraint); + + if (shape.connectNulls) { + // Must remove first and last null values avoid draw error in polygon + for (; len > 0; len--) { + if (!isPointNull(points[len - 1])) { + break; + } + } + for (; i < len; i++) { + if (!isPointNull(points[i])) { + break; + } + } + } + while (i < len) { + var k = drawSegment( + ctx, points, i, len, len, + 1, bbox.min, bbox.max, shape.smooth, + smoothMonotone, shape.connectNulls + ); + drawSegment( + ctx, stackedOnPoints, i + k - 1, k, len, + -1, stackedOnBBox.min, stackedOnBBox.max, shape.stackedOnSmooth, + smoothMonotone, shape.connectNulls + ); + i += k + 1; + + ctx.closePath(); + } + } + }) + }; + + +/***/ }, +/* 121 */ +/***/ function(module, exports) { + + + + module.exports = function (seriesType, defaultSymbolType, legendSymbol, ecModel, api) { + + // Encoding visual for all series include which is filtered for legend drawing + ecModel.eachRawSeriesByType(seriesType, function (seriesModel) { + var data = seriesModel.getData(); + + var symbolType = seriesModel.get('symbol') || defaultSymbolType; + var symbolSize = seriesModel.get('symbolSize'); + + data.setVisual({ + legendSymbol: legendSymbol || symbolType, + symbol: symbolType, + symbolSize: symbolSize + }); + + // Only visible series has each data be visual encoded + if (!ecModel.isSeriesFiltered(seriesModel)) { + if (typeof symbolSize === 'function') { + data.each(function (idx) { + var rawValue = seriesModel.getRawValue(idx); + // FIXME + var params = seriesModel.getDataParams(idx); + data.setItemVisual(idx, 'symbolSize', symbolSize(rawValue, params)); + }); + } + data.each(function (idx) { + var itemModel = data.getItemModel(idx); + var itemSymbolType = itemModel.getShallow('symbol', true); + var itemSymbolSize = itemModel.getShallow('symbolSize', true); + // If has item symbol + if (itemSymbolType != null) { + data.setItemVisual(idx, 'symbol', itemSymbolType); + } + if (itemSymbolSize != null) { + // PENDING Transform symbolSize ? + data.setItemVisual(idx, 'symbolSize', itemSymbolSize); + } + }); + } + }); + }; + + +/***/ }, +/* 122 */ +/***/ function(module, exports) { + + + + module.exports = function (seriesType, ecModel) { + ecModel.eachSeriesByType(seriesType, function (seriesModel) { + var data = seriesModel.getData(); + var coordSys = seriesModel.coordinateSystem; + + if (!coordSys) { + return; + } + + var dims = []; + var coordDims = coordSys.dimensions; + for (var i = 0; i < coordDims.length; i++) { + dims.push(seriesModel.coordDimToDataDim(coordSys.dimensions[i])[0]); + } + + if (dims.length === 1) { + data.each(dims[0], function (x, idx) { + // Also {Array.}, not undefined to avoid if...else... statement + data.setItemLayout(idx, isNaN(x) ? [NaN, NaN] : coordSys.dataToPoint(x)); + }); + } + else if (dims.length === 2) { + data.each(dims, function (x, y, idx) { + // Also {Array.}, not undefined to avoid if...else... statement + data.setItemLayout( + idx, (isNaN(x) || isNaN(y)) ? [NaN, NaN] : coordSys.dataToPoint([x, y]) + ); + }, true); + } + }); + }; + + + +/***/ }, +/* 123 */ +/***/ function(module, exports) { + + + var samplers = { + average: function (frame) { + var sum = 0; + var count = 0; + for (var i = 0; i < frame.length; i++) { + if (!isNaN(frame[i])) { + sum += frame[i]; + count++; + } + } + // Return NaN if count is 0 + return count === 0 ? NaN : sum / count; + }, + sum: function (frame) { + var sum = 0; + for (var i = 0; i < frame.length; i++) { + // Ignore NaN + sum += frame[i] || 0; + } + return sum; + }, + max: function (frame) { + var max = -Infinity; + for (var i = 0; i < frame.length; i++) { + frame[i] > max && (max = frame[i]); + } + return max; + }, + min: function (frame) { + var min = Infinity; + for (var i = 0; i < frame.length; i++) { + frame[i] < min && (min = frame[i]); + } + return min; + }, + // TODO + // Median + nearest: function (frame) { + return frame[0]; + } + }; + + var indexSampler = function (frame, value) { + return Math.round(frame.length / 2); + }; + module.exports = function (seriesType, ecModel, api) { + ecModel.eachSeriesByType(seriesType, function (seriesModel) { + var data = seriesModel.getData(); + var sampling = seriesModel.get('sampling'); + var coordSys = seriesModel.coordinateSystem; + // Only cartesian2d support down sampling + if (coordSys.type === 'cartesian2d' && sampling) { + var baseAxis = coordSys.getBaseAxis(); + var valueAxis = coordSys.getOtherAxis(baseAxis); + var extent = baseAxis.getExtent(); + // Coordinste system has been resized + var size = extent[1] - extent[0]; + var rate = Math.round(data.count() / size); + if (rate > 1) { + var sampler; + if (typeof sampling === 'string') { + sampler = samplers[sampling]; + } + else if (typeof sampling === 'function') { + sampler = sampling; + } + if (sampler) { + data = data.downSample( + valueAxis.dim, 1 / rate, sampler, indexSampler + ); + seriesModel.setData(data); + } + } + } + }, this); + }; + + +/***/ }, +/* 124 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + + var graphic = __webpack_require__(18); + var zrUtil = __webpack_require__(4); + var echarts = __webpack_require__(1); + + __webpack_require__(125); + + __webpack_require__(133); + + // Grid view + echarts.extendComponentView({ + + type: 'grid', + + render: function (gridModel, ecModel) { + this.group.removeAll(); + if (gridModel.get('show')) { + this.group.add(new graphic.Rect({ + shape: gridModel.coordinateSystem.getRect(), + style: zrUtil.defaults({ + fill: gridModel.get('backgroundColor') + }, gridModel.getItemStyle()), + silent: true, + z2: -1 + })); + } + } + + }); + + echarts.registerPreprocessor(function (option) { + // Only create grid when need + if (option.xAxis && option.yAxis && !option.grid) { + option.grid = {}; + } + }); + + +/***/ }, +/* 125 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * Grid is a region which contains at most 4 cartesian systems + * + * TODO Default cartesian + */ + var factory = exports; + + var layout = __webpack_require__(71); + var axisHelper = __webpack_require__(101); + + var zrUtil = __webpack_require__(4); + var Cartesian2D = __webpack_require__(126); + var Axis2D = __webpack_require__(128); + + var each = zrUtil.each; + + var ifAxisCrossZero = axisHelper.ifAxisCrossZero; + var niceScaleExtent = axisHelper.niceScaleExtent; + + // 依赖 GridModel, AxisModel 做预处理 + __webpack_require__(129); + + /** + * Check if the axis is used in the specified grid + * @inner + */ + function isAxisUsedInTheGrid(axisModel, gridModel, ecModel) { + return axisModel.getCoordSysModel() === gridModel; + } + + function getLabelUnionRect(axis) { + var axisModel = axis.model; + var labels = axisModel.getFormattedLabels(); + var textStyleModel = axisModel.getModel('axisLabel.textStyle'); + var rect; + var step = 1; + var labelCount = labels.length; + if (labelCount > 40) { + // Simple optimization for large amount of labels + step = Math.ceil(labelCount / 40); + } + for (var i = 0; i < labelCount; i += step) { + if (!axis.isLabelIgnored(i)) { + var singleRect = textStyleModel.getTextRect(labels[i]); + // FIXME consider label rotate + rect ? rect.union(singleRect) : (rect = singleRect); + } + } + return rect; + } + + function Grid(gridModel, ecModel, api) { + /** + * @type {Object.} + * @private + */ + this._coordsMap = {}; + + /** + * @type {Array.} + * @private + */ + this._coordsList = []; + + /** + * @type {Object.} + * @private + */ + this._axesMap = {}; + + /** + * @type {Array.} + * @private + */ + this._axesList = []; + + this._initCartesian(gridModel, ecModel, api); + + this.model = gridModel; + } + + var gridProto = Grid.prototype; + + gridProto.type = 'grid'; + + gridProto.axisPointerEnabled = true; + + gridProto.getRect = function () { + return this._rect; + }; + + gridProto.update = function (ecModel, api) { + + var axesMap = this._axesMap; + + this._updateScale(ecModel, this.model); + + function ifAxisCanNotOnZero(otherAxisDim) { + var axes = axesMap[otherAxisDim]; + for (var idx in axes) { + if (axes.hasOwnProperty(idx)) { + var axis = axes[idx]; + if (axis && ( + axis.type === 'category' || axis.type === 'time' || !ifAxisCrossZero(axis) + )) { + return true; + } + } + } + return false; + } + + each(axesMap.x, function (xAxis) { + niceScaleExtent(xAxis.scale, xAxis.model); + }); + each(axesMap.y, function (yAxis) { + niceScaleExtent(yAxis.scale, yAxis.model); + }); + // Fix configuration + each(axesMap.x, function (xAxis) { + // onZero can not be enabled in these two situations + // 1. When any other axis is a category axis + // 2. When any other axis not across 0 point + if (ifAxisCanNotOnZero('y')) { + xAxis.onZero = false; + } + }); + each(axesMap.y, function (yAxis) { + if (ifAxisCanNotOnZero('x')) { + yAxis.onZero = false; + } + }); + + // Resize again if containLabel is enabled + // FIXME It may cause getting wrong grid size in data processing stage + this.resize(this.model, api); + }; + + /** + * Resize the grid + * @param {module:echarts/coord/cartesian/GridModel} gridModel + * @param {module:echarts/ExtensionAPI} api + */ + gridProto.resize = function (gridModel, api, ignoreContainLabel) { + + var gridRect = layout.getLayoutRect( + gridModel.getBoxLayoutParams(), { + width: api.getWidth(), + height: api.getHeight() + }); + + this._rect = gridRect; + + var axesList = this._axesList; + + adjustAxes(); + + // Minus label size + if (!ignoreContainLabel && gridModel.get('containLabel')) { + each(axesList, function (axis) { + if (!axis.model.get('axisLabel.inside')) { + var labelUnionRect = getLabelUnionRect(axis); + if (labelUnionRect) { + var dim = axis.isHorizontal() ? 'height' : 'width'; + var margin = axis.model.get('axisLabel.margin'); + gridRect[dim] -= labelUnionRect[dim] + margin; + if (axis.position === 'top') { + gridRect.y += labelUnionRect.height + margin; + } + else if (axis.position === 'left') { + gridRect.x += labelUnionRect.width + margin; + } + } + } + }); + + adjustAxes(); + } + + function adjustAxes() { + each(axesList, function (axis) { + var isHorizontal = axis.isHorizontal(); + var extent = isHorizontal ? [0, gridRect.width] : [0, gridRect.height]; + var idx = axis.inverse ? 1 : 0; + axis.setExtent(extent[idx], extent[1 - idx]); + updateAxisTransfrom(axis, isHorizontal ? gridRect.x : gridRect.y); + }); + } + }; + + /** + * @param {string} axisType + * @param {ndumber} [axisIndex] + */ + gridProto.getAxis = function (axisType, axisIndex) { + var axesMapOnDim = this._axesMap[axisType]; + if (axesMapOnDim != null) { + if (axisIndex == null) { + // Find first axis + for (var name in axesMapOnDim) { + if (axesMapOnDim.hasOwnProperty(name)) { + return axesMapOnDim[name]; + } + } + } + return axesMapOnDim[axisIndex]; + } + }; + + /** + * @return {Array.} + */ + gridProto.getAxes = function () { + return this._axesList.slice(); + }; + + /** + * Usage: + * grid.getCartesian(xAxisIndex, yAxisIndex); + * grid.getCartesian(xAxisIndex); + * grid.getCartesian(null, yAxisIndex); + * grid.getCartesian({xAxisIndex: ..., yAxisIndex: ...}); + * + * @param {number|Object} [xAxisIndex] + * @param {number} [yAxisIndex] + */ + gridProto.getCartesian = function (xAxisIndex, yAxisIndex) { + if (xAxisIndex != null && yAxisIndex != null) { + var key = 'x' + xAxisIndex + 'y' + yAxisIndex; + return this._coordsMap[key]; + } + + if (zrUtil.isObject(xAxisIndex)) { + yAxisIndex = xAxisIndex.yAxisIndex; + xAxisIndex = xAxisIndex.xAxisIndex; + } + // When only xAxisIndex or yAxisIndex given, find its first cartesian. + for (var i = 0, coordList = this._coordsList; i < coordList.length; i++) { + if (coordList[i].getAxis('x').index === xAxisIndex + || coordList[i].getAxis('y').index === yAxisIndex + ) { + return coordList[i]; + } + } + }; + + gridProto.getCartesians = function () { + return this._coordsList.slice(); + }; + + /** + * @implements + * see {module:echarts/CoodinateSystem} + */ + gridProto.convertToPixel = function (ecModel, finder, value) { + var target = this._findConvertTarget(ecModel, finder); + + return target.cartesian + ? target.cartesian.dataToPoint(value) + : target.axis + ? target.axis.toGlobalCoord(target.axis.dataToCoord(value)) + : null; + }; + + /** + * @implements + * see {module:echarts/CoodinateSystem} + */ + gridProto.convertFromPixel = function (ecModel, finder, value) { + var target = this._findConvertTarget(ecModel, finder); + + return target.cartesian + ? target.cartesian.pointToData(value) + : target.axis + ? target.axis.coordToData(target.axis.toLocalCoord(value)) + : null; + }; + + /** + * @inner + */ + gridProto._findConvertTarget = function (ecModel, finder) { + var seriesModel = finder.seriesModel; + var xAxisModel = finder.xAxisModel + || (seriesModel && seriesModel.getReferringComponents('xAxis')[0]); + var yAxisModel = finder.yAxisModel + || (seriesModel && seriesModel.getReferringComponents('yAxis')[0]); + var gridModel = finder.gridModel; + var coordsList = this._coordsList; + var cartesian; + var axis; + + if (seriesModel) { + cartesian = seriesModel.coordinateSystem; + zrUtil.indexOf(coordsList, cartesian) < 0 && (cartesian = null); + } + else if (xAxisModel && yAxisModel) { + cartesian = this.getCartesian(xAxisModel.componentIndex, yAxisModel.componentIndex); + } + else if (xAxisModel) { + axis = this.getAxis('x', xAxisModel.componentIndex); + } + else if (yAxisModel) { + axis = this.getAxis('y', yAxisModel.componentIndex); + } + // Lowest priority. + else if (gridModel) { + var grid = gridModel.coordinateSystem; + if (grid === this) { + cartesian = this._coordsList[0]; + } + } + + return {cartesian: cartesian, axis: axis}; + }; + + /** + * @implements + * see {module:echarts/CoodinateSystem} + */ + gridProto.containPoint = function (point) { + var coord = this._coordsList[0]; + if (coord) { + return coord.containPoint(point); + } + }; + + /** + * Initialize cartesian coordinate systems + * @private + */ + gridProto._initCartesian = function (gridModel, ecModel, api) { + var axisPositionUsed = { + left: false, + right: false, + top: false, + bottom: false + }; + + var axesMap = { + x: {}, + y: {} + }; + var axesCount = { + x: 0, + y: 0 + }; + + /// Create axis + ecModel.eachComponent('xAxis', createAxisCreator('x'), this); + ecModel.eachComponent('yAxis', createAxisCreator('y'), this); + + if (!axesCount.x || !axesCount.y) { + // Roll back when there no either x or y axis + this._axesMap = {}; + this._axesList = []; + return; + } + + this._axesMap = axesMap; + + /// Create cartesian2d + each(axesMap.x, function (xAxis, xAxisIndex) { + each(axesMap.y, function (yAxis, yAxisIndex) { + var key = 'x' + xAxisIndex + 'y' + yAxisIndex; + var cartesian = new Cartesian2D(key); + + cartesian.grid = this; + cartesian.model = gridModel; + + this._coordsMap[key] = cartesian; + this._coordsList.push(cartesian); + + cartesian.addAxis(xAxis); + cartesian.addAxis(yAxis); + }, this); + }, this); + + function createAxisCreator(axisType) { + return function (axisModel, idx) { + if (!isAxisUsedInTheGrid(axisModel, gridModel, ecModel)) { + return; + } + + var axisPosition = axisModel.get('position'); + if (axisType === 'x') { + // Fix position + if (axisPosition !== 'top' && axisPosition !== 'bottom') { + // Default bottom of X + axisPosition = 'bottom'; + if (axisPositionUsed[axisPosition]) { + axisPosition = axisPosition === 'top' ? 'bottom' : 'top'; + } + } + } + else { + // Fix position + if (axisPosition !== 'left' && axisPosition !== 'right') { + // Default left of Y + axisPosition = 'left'; + if (axisPositionUsed[axisPosition]) { + axisPosition = axisPosition === 'left' ? 'right' : 'left'; + } + } + } + axisPositionUsed[axisPosition] = true; + + var axis = new Axis2D( + axisType, axisHelper.createScaleByModel(axisModel), + [0, 0], + axisModel.get('type'), + axisPosition + ); + + var isCategory = axis.type === 'category'; + axis.onBand = isCategory && axisModel.get('boundaryGap'); + axis.inverse = axisModel.get('inverse'); + + axis.onZero = axisModel.get('axisLine.onZero'); + + // Inject axis into axisModel + axisModel.axis = axis; + + // Inject axisModel into axis + axis.model = axisModel; + + // Inject grid info axis + axis.grid = this; + + // Index of axis, can be used as key + axis.index = idx; + + this._axesList.push(axis); + + axesMap[axisType][idx] = axis; + axesCount[axisType]++; + }; + } + }; + + /** + * Update cartesian properties from series + * @param {module:echarts/model/Option} option + * @private + */ + gridProto._updateScale = function (ecModel, gridModel) { + // Reset scale + zrUtil.each(this._axesList, function (axis) { + axis.scale.setExtent(Infinity, -Infinity); + }); + ecModel.eachSeries(function (seriesModel) { + if (isCartesian2D(seriesModel)) { + var axesModels = findAxesModels(seriesModel, ecModel); + var xAxisModel = axesModels[0]; + var yAxisModel = axesModels[1]; + + if (!isAxisUsedInTheGrid(xAxisModel, gridModel, ecModel) + || !isAxisUsedInTheGrid(yAxisModel, gridModel, ecModel) + ) { + return; + } + + var cartesian = this.getCartesian( + xAxisModel.componentIndex, yAxisModel.componentIndex + ); + var data = seriesModel.getData(); + var xAxis = cartesian.getAxis('x'); + var yAxis = cartesian.getAxis('y'); + + if (data.type === 'list') { + unionExtent(data, xAxis, seriesModel); + unionExtent(data, yAxis, seriesModel); + } + } + }, this); + + function unionExtent(data, axis, seriesModel) { + each(seriesModel.coordDimToDataDim(axis.dim), function (dim) { + axis.scale.unionExtentFromData(data, dim); + }); + } + }; + + /** + * @param {string} [dim] 'x' or 'y' or 'auto' or null/undefined + * @return {Object} {baseAxes: [], otherAxes: []} + */ + gridProto.getTooltipAxes = function (dim) { + var baseAxes = []; + var otherAxes = []; + + each(this.getCartesians(), function (cartesian) { + var baseAxis = (dim != null && dim !== 'auto') + ? cartesian.getAxis(dim) : cartesian.getBaseAxis(); + var otherAxis = cartesian.getOtherAxis(baseAxis); + zrUtil.indexOf(baseAxes, baseAxis) < 0 && baseAxes.push(baseAxis); + zrUtil.indexOf(otherAxes, otherAxis) < 0 && otherAxes.push(otherAxis); + }); + + return {baseAxes: baseAxes, otherAxes: otherAxes}; + }; + + /** + * @inner + */ + function updateAxisTransfrom(axis, coordBase) { + var axisExtent = axis.getExtent(); + var axisExtentSum = axisExtent[0] + axisExtent[1]; + + // Fast transform + axis.toGlobalCoord = axis.dim === 'x' + ? function (coord) { + return coord + coordBase; + } + : function (coord) { + return axisExtentSum - coord + coordBase; + }; + axis.toLocalCoord = axis.dim === 'x' + ? function (coord) { + return coord - coordBase; + } + : function (coord) { + return axisExtentSum - coord + coordBase; + }; + } + + var axesTypes = ['xAxis', 'yAxis']; + /** + * @inner + */ + function findAxesModels(seriesModel, ecModel) { + return zrUtil.map(axesTypes, function (axisType) { + var axisModel = seriesModel.getReferringComponents(axisType)[0]; + + if (true) { + if (!axisModel) { + throw new Error(axisType + ' "' + zrUtil.retrieve( + seriesModel.get(axisType + 'Index'), + seriesModel.get(axisType + 'Id'), + 0 + ) + '" not found'); + } + } + return axisModel; + }); + } + + /** + * @inner + */ + function isCartesian2D(seriesModel) { + return seriesModel.get('coordinateSystem') === 'cartesian2d'; + } + + Grid.create = function (ecModel, api) { + var grids = []; + ecModel.eachComponent('grid', function (gridModel, idx) { + var grid = new Grid(gridModel, ecModel, api); + grid.name = 'grid_' + idx; + // dataSampling requires axis extent, so resize + // should be performed in create stage. + grid.resize(gridModel, api, true); + + gridModel.coordinateSystem = grid; + + grids.push(grid); + }); + + // Inject the coordinateSystems into seriesModel + ecModel.eachSeries(function (seriesModel) { + if (!isCartesian2D(seriesModel)) { + return; + } + + var axesModels = findAxesModels(seriesModel, ecModel); + var xAxisModel = axesModels[0]; + var yAxisModel = axesModels[1]; + + var gridModel = xAxisModel.getCoordSysModel(); + + if (true) { + if (!gridModel) { + throw new Error( + 'Grid "' + zrUtil.retrieve( + xAxisModel.get('gridIndex'), + xAxisModel.get('gridId'), + 0 + ) + '" not found' + ); + } + if (xAxisModel.getCoordSysModel() !== yAxisModel.getCoordSysModel()) { + throw new Error('xAxis and yAxis must use the same grid'); + } + } + + var grid = gridModel.coordinateSystem; + + seriesModel.coordinateSystem = grid.getCartesian( + xAxisModel.componentIndex, yAxisModel.componentIndex + ); + }); + + return grids; + }; + + // For deciding which dimensions to use when creating list data + Grid.dimensions = Grid.prototype.dimensions = Cartesian2D.prototype.dimensions; + + __webpack_require__(76).register('cartesian2d', Grid); + + module.exports = Grid; + + +/***/ }, +/* 126 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + + var zrUtil = __webpack_require__(4); + var Cartesian = __webpack_require__(127); + + function Cartesian2D(name) { + + Cartesian.call(this, name); + } + + Cartesian2D.prototype = { + + constructor: Cartesian2D, + + type: 'cartesian2d', + + /** + * @type {Array.} + * @readOnly + */ + dimensions: ['x', 'y'], + + /** + * Base axis will be used on stacking. + * + * @return {module:echarts/coord/cartesian/Axis2D} + */ + getBaseAxis: function () { + return this.getAxesByScale('ordinal')[0] + || this.getAxesByScale('time')[0] + || this.getAxis('x'); + }, + + /** + * If contain point + * @param {Array.} point + * @return {boolean} + */ + containPoint: function (point) { + var axisX = this.getAxis('x'); + var axisY = this.getAxis('y'); + return axisX.contain(axisX.toLocalCoord(point[0])) + && axisY.contain(axisY.toLocalCoord(point[1])); + }, + + /** + * If contain data + * @param {Array.} data + * @return {boolean} + */ + containData: function (data) { + return this.getAxis('x').containData(data[0]) + && this.getAxis('y').containData(data[1]); + }, + + /** + * Convert series data to an array of points + * @param {module:echarts/data/List} data + * @param {boolean} stack + * @return {Array} + * Return array of points. For example: + * `[[10, 10], [20, 20], [30, 30]]` + */ + dataToPoints: function (data, stack) { + return data.mapArray(['x', 'y'], function (x, y) { + return this.dataToPoint([x, y]); + }, stack, this); + }, + + /** + * @param {Array.} data + * @param {boolean} [clamp=false] + * @return {Array.} + */ + dataToPoint: function (data, clamp) { + var xAxis = this.getAxis('x'); + var yAxis = this.getAxis('y'); + return [ + xAxis.toGlobalCoord(xAxis.dataToCoord(data[0], clamp)), + yAxis.toGlobalCoord(yAxis.dataToCoord(data[1], clamp)) + ]; + }, + + /** + * @param {Array.} point + * @param {boolean} [clamp=false] + * @return {Array.} + */ + pointToData: function (point, clamp) { + var xAxis = this.getAxis('x'); + var yAxis = this.getAxis('y'); + return [ + xAxis.coordToData(xAxis.toLocalCoord(point[0]), clamp), + yAxis.coordToData(yAxis.toLocalCoord(point[1]), clamp) + ]; + }, + + /** + * Get other axis + * @param {module:echarts/coord/cartesian/Axis2D} axis + */ + getOtherAxis: function (axis) { + return this.getAxis(axis.dim === 'x' ? 'y' : 'x'); + } + + }; + + zrUtil.inherits(Cartesian2D, Cartesian); + + module.exports = Cartesian2D; + + +/***/ }, +/* 127 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + /** + * Cartesian coordinate system + * @module echarts/coord/Cartesian + * + */ + + + var zrUtil = __webpack_require__(4); + + function dimAxisMapper(dim) { + return this._axes[dim]; + } + + /** + * @alias module:echarts/coord/Cartesian + * @constructor + */ + var Cartesian = function (name) { + this._axes = {}; + + this._dimList = []; + + /** + * @type {string} + */ + this.name = name || ''; + }; + + Cartesian.prototype = { + + constructor: Cartesian, + + type: 'cartesian', + + /** + * Get axis + * @param {number|string} dim + * @return {module:echarts/coord/Cartesian~Axis} + */ + getAxis: function (dim) { + return this._axes[dim]; + }, + + /** + * Get axes list + * @return {Array.} + */ + getAxes: function () { + return zrUtil.map(this._dimList, dimAxisMapper, this); + }, + + /** + * Get axes list by given scale type + */ + getAxesByScale: function (scaleType) { + scaleType = scaleType.toLowerCase(); + return zrUtil.filter( + this.getAxes(), + function (axis) { + return axis.scale.type === scaleType; + } + ); + }, + + /** + * Add axis + * @param {module:echarts/coord/Cartesian.Axis} + */ + addAxis: function (axis) { + var dim = axis.dim; + + this._axes[dim] = axis; + + this._dimList.push(dim); + }, + + /** + * Convert data to coord in nd space + * @param {Array.|Object.} val + * @return {Array.|Object.} + */ + dataToCoord: function (val) { + return this._dataCoordConvert(val, 'dataToCoord'); + }, + + /** + * Convert coord in nd space to data + * @param {Array.|Object.} val + * @return {Array.|Object.} + */ + coordToData: function (val) { + return this._dataCoordConvert(val, 'coordToData'); + }, + + _dataCoordConvert: function (input, method) { + var dimList = this._dimList; + + var output = input instanceof Array ? [] : {}; + + for (var i = 0; i < dimList.length; i++) { + var dim = dimList[i]; + var axis = this._axes[dim]; + + output[dim] = axis[method](input[dim]); + } + + return output; + } + }; + + module.exports = Cartesian; + + +/***/ }, +/* 128 */ +/***/ function(module, exports, __webpack_require__) { + + + + var zrUtil = __webpack_require__(4); + var Axis = __webpack_require__(100); + + /** + * Extend axis 2d + * @constructor module:echarts/coord/cartesian/Axis2D + * @extends {module:echarts/coord/cartesian/Axis} + * @param {string} dim + * @param {*} scale + * @param {Array.} coordExtent + * @param {string} axisType + * @param {string} position + */ + var Axis2D = function (dim, scale, coordExtent, axisType, position) { + Axis.call(this, dim, scale, coordExtent); + /** + * Axis type + * - 'category' + * - 'value' + * - 'time' + * - 'log' + * @type {string} + */ + this.type = axisType || 'value'; + + /** + * Axis position + * - 'top' + * - 'bottom' + * - 'left' + * - 'right' + */ + this.position = position || 'bottom'; + }; + + Axis2D.prototype = { + + constructor: Axis2D, + + /** + * Index of axis, can be used as key + */ + index: 0, + /** + * If axis is on the zero position of the other axis + * @type {boolean} + */ + onZero: false, + + /** + * Axis model + * @param {module:echarts/coord/cartesian/AxisModel} + */ + model: null, + + isHorizontal: function () { + var position = this.position; + return position === 'top' || position === 'bottom'; + }, + + /** + * Each item cooresponds to this.getExtent(), which + * means globalExtent[0] may greater than globalExtent[1], + * unless `asc` is input. + * + * @param {boolean} [asc] + * @return {Array.} + */ + getGlobalExtent: function (asc) { + var ret = this.getExtent(); + ret[0] = this.toGlobalCoord(ret[0]); + ret[1] = this.toGlobalCoord(ret[1]); + asc && ret[0] > ret[1] && ret.reverse(); + return ret; + }, + + getOtherAxis: function () { + this.grid.getOtherAxis(); + }, + + /** + * If label is ignored. + * Automatically used when axis is category and label can not be all shown + * @param {number} idx + * @return {boolean} + */ + isLabelIgnored: function (idx) { + if (this.type === 'category') { + var labelInterval = this.getLabelInterval(); + return ((typeof labelInterval === 'function') + && !labelInterval(idx, this.scale.getLabel(idx))) + || idx % (labelInterval + 1); + } + }, + + /** + * @override + */ + pointToData: function (point, clamp) { + return this.coordToData(this.toLocalCoord(point[this.dim === 'x' ? 0 : 1]), clamp); + }, + + /** + * Transform global coord to local coord, + * i.e. var localCoord = axis.toLocalCoord(80); + * designate by module:echarts/coord/cartesian/Grid. + * @type {Function} + */ + toLocalCoord: null, + + /** + * Transform global coord to local coord, + * i.e. var globalCoord = axis.toLocalCoord(40); + * designate by module:echarts/coord/cartesian/Grid. + * @type {Function} + */ + toGlobalCoord: null + + }; + zrUtil.inherits(Axis2D, Axis); + + module.exports = Axis2D; + + +/***/ }, +/* 129 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + // Grid 是在有直角坐标系的时候必须要存在的 + // 所以这里也要被 Cartesian2D 依赖 + + + __webpack_require__(130); + + var ComponentModel = __webpack_require__(69); + + module.exports = ComponentModel.extend({ + + type: 'grid', + + dependencies: ['xAxis', 'yAxis'], + + layoutMode: 'box', + + /** + * @type {module:echarts/coord/cartesian/Grid} + */ + coordinateSystem: null, + + defaultOption: { + show: false, + zlevel: 0, + z: 0, + left: '10%', + top: 60, + right: '10%', + bottom: 60, + // If grid size contain label + containLabel: false, + // width: {totalWidth} - left - right, + // height: {totalHeight} - top - bottom, + backgroundColor: 'rgba(0,0,0,0)', + borderWidth: 1, + borderColor: '#ccc' + } + }); + + +/***/ }, +/* 130 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + + var ComponentModel = __webpack_require__(69); + var zrUtil = __webpack_require__(4); + var axisModelCreator = __webpack_require__(131); + + var AxisModel = ComponentModel.extend({ + + type: 'cartesian2dAxis', + + /** + * @type {module:echarts/coord/cartesian/Axis2D} + */ + axis: null, + + /** + * @override + */ + init: function () { + AxisModel.superApply(this, 'init', arguments); + this.resetRange(); + }, + + /** + * @override + */ + mergeOption: function () { + AxisModel.superApply(this, 'mergeOption', arguments); + this.resetRange(); + }, + + /** + * @override + */ + restoreData: function () { + AxisModel.superApply(this, 'restoreData', arguments); + this.resetRange(); + }, + + /** + * @override + * @return {module:echarts/model/Component} + */ + getCoordSysModel: function () { + return this.ecModel.queryComponents({ + mainType: 'grid', + index: this.option.gridIndex, + id: this.option.gridId + })[0]; + } + + }); + + function getAxisType(axisDim, option) { + // Default axis with data is category axis + return option.type || (option.data ? 'category' : 'value'); + } + + zrUtil.merge(AxisModel.prototype, __webpack_require__(112)); + + var extraOption = { + // gridIndex: 0, + // gridId: '', + + // Offset is for multiple axis on the same position + offset: 0 + }; + + axisModelCreator('x', AxisModel, getAxisType, extraOption); + axisModelCreator('y', AxisModel, getAxisType, extraOption); + + module.exports = AxisModel; + + +/***/ }, +/* 131 */ +/***/ function(module, exports, __webpack_require__) { + + + + var axisDefault = __webpack_require__(132); + var zrUtil = __webpack_require__(4); + var ComponentModel = __webpack_require__(69); + var layout = __webpack_require__(71); + + // FIXME axisType is fixed ? + var AXIS_TYPES = ['value', 'category', 'time', 'log']; + + /** + * Generate sub axis model class + * @param {string} axisName 'x' 'y' 'radius' 'angle' 'parallel' + * @param {module:echarts/model/Component} BaseAxisModelClass + * @param {Function} axisTypeDefaulter + * @param {Object} [extraDefaultOption] + */ + module.exports = function (axisName, BaseAxisModelClass, axisTypeDefaulter, extraDefaultOption) { + + zrUtil.each(AXIS_TYPES, function (axisType) { + + BaseAxisModelClass.extend({ + + type: axisName + 'Axis.' + axisType, + + mergeDefaultAndTheme: function (option, ecModel) { + var layoutMode = this.layoutMode; + var inputPositionParams = layoutMode + ? layout.getLayoutParams(option) : {}; + + var themeModel = ecModel.getTheme(); + zrUtil.merge(option, themeModel.get(axisType + 'Axis')); + zrUtil.merge(option, this.getDefaultOption()); + + option.type = axisTypeDefaulter(axisName, option); + + if (layoutMode) { + layout.mergeLayoutParam(option, inputPositionParams, layoutMode); + } + }, + + defaultOption: zrUtil.mergeAll( + [ + {}, + axisDefault[axisType + 'Axis'], + extraDefaultOption + ], + true + ) + }); + }); + + ComponentModel.registerSubTypeDefaulter( + axisName + 'Axis', + zrUtil.curry(axisTypeDefaulter, axisName) + ); + }; + + +/***/ }, +/* 132 */ +/***/ function(module, exports, __webpack_require__) { + + + + var zrUtil = __webpack_require__(4); + + var defaultOption = { + show: true, + zlevel: 0, // 一级层叠 + z: 0, // 二级层叠 + // 反向坐标轴 + inverse: false, + + // 坐标轴名字,默认为空 + name: '', + // 坐标轴名字位置,支持'start' | 'middle' | 'end' + nameLocation: 'end', + // 坐标轴名字旋转,degree。 + nameRotate: null, // Adapt to axis rotate, when nameLocation is 'middle'. + nameTruncate: { + maxWidth: null, + ellipsis: '...', + placeholder: '.' + }, + // 坐标轴文字样式,默认取全局样式 + nameTextStyle: {}, + // 文字与轴线距离 + nameGap: 15, + + silent: false, // Default false to support tooltip. + triggerEvent: false, // Default false to avoid legacy user event listener fail. + + tooltip: { + show: false + }, + + axisPointer: {}, + + // 坐标轴线 + axisLine: { + // 默认显示,属性show控制显示与否 + show: true, + onZero: true, + // 属性lineStyle控制线条样式 + lineStyle: { + color: '#333', + width: 1, + type: 'solid' + } + }, + // 坐标轴小标记 + axisTick: { + // 属性show控制显示与否,默认显示 + show: true, + // 控制小标记是否在grid里 + inside: false, + // 属性length控制线长 + length: 5, + // 属性lineStyle控制线条样式 + lineStyle: { + width: 1 + } + }, + // 坐标轴文本标签,详见axis.axisLabel + axisLabel: { + show: true, + // 控制文本标签是否在grid里 + inside: false, + rotate: 0, + showMinLabel: null, // true | false | null (auto) + showMaxLabel: null, // true | false | null (auto) + margin: 8, + // formatter: null, + // 其余属性默认使用全局文本样式,详见TEXTSTYLE + textStyle: { + fontSize: 12 + } + }, + // 分隔线 + splitLine: { + // 默认显示,属性show控制显示与否 + show: true, + // 属性lineStyle(详见lineStyle)控制线条样式 + lineStyle: { + color: ['#ccc'], + width: 1, + type: 'solid' + } + }, + // 分隔区域 + splitArea: { + // 默认不显示,属性show控制显示与否 + show: false, + // 属性areaStyle(详见areaStyle)控制区域样式 + areaStyle: { + color: ['rgba(250,250,250,0.3)','rgba(200,200,200,0.3)'] + } + } + }; + + var categoryAxis = zrUtil.merge({ + // 类目起始和结束两端空白策略 + boundaryGap: true, + // splitArea: { + // show: false + // }, + splitLine: { + show: false + }, + // 坐标轴小标记 + axisTick: { + // If tick is align with label when boundaryGap is true + alignWithLabel: false, + interval: 'auto' + }, + // 坐标轴文本标签,详见axis.axisLabel + axisLabel: { + interval: 'auto' + } + }, defaultOption); + + var valueAxis = zrUtil.merge({ + // 数值起始和结束两端空白策略 + boundaryGap: [0, 0], + // 最小值, 设置成 'dataMin' 则从数据中计算最小值 + // min: null, + // 最大值,设置成 'dataMax' 则从数据中计算最大值 + // max: null, + // Readonly prop, specifies start value of the range when using data zoom. + // rangeStart: null + // Readonly prop, specifies end value of the range when using data zoom. + // rangeEnd: null + // 脱离0值比例,放大聚焦到最终_min,_max区间 + // scale: false, + // 分割段数,默认为5 + splitNumber: 5 + // Minimum interval + // minInterval: null + }, defaultOption); + + // FIXME + var timeAxis = zrUtil.defaults({ + scale: true, + min: 'dataMin', + max: 'dataMax' + }, valueAxis); + + var logAxis = zrUtil.defaults({ + scale: true, + logBase: 10 + }, valueAxis); + + module.exports = { + categoryAxis: categoryAxis, + valueAxis: valueAxis, + timeAxis: timeAxis, + logAxis: logAxis + }; + + +/***/ }, +/* 133 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + // TODO boundaryGap + + + __webpack_require__(130); + + __webpack_require__(134); + + +/***/ }, +/* 134 */ +/***/ function(module, exports, __webpack_require__) { + + + + var zrUtil = __webpack_require__(4); + var graphic = __webpack_require__(18); + var AxisBuilder = __webpack_require__(135); + var AxisView = __webpack_require__(136); + var cartesianAxisHelper = __webpack_require__(138); + var ifIgnoreOnTick = AxisBuilder.ifIgnoreOnTick; + var getInterval = AxisBuilder.getInterval; + + var axisBuilderAttrs = [ + 'axisLine', 'axisLabel', 'axisTick', 'axisName' + ]; + var selfBuilderAttrs = [ + 'splitArea', 'splitLine' + ]; + + // function getAlignWithLabel(model, axisModel) { + // var alignWithLabel = model.get('alignWithLabel'); + // if (alignWithLabel === 'auto') { + // alignWithLabel = axisModel.get('axisTick.alignWithLabel'); + // } + // return alignWithLabel; + // } + + var CartesianAxisView = AxisView.extend({ + + type: 'cartesianAxis', + + axisPointerClass: 'CartesianAxisPointer', + + /** + * @override + */ + render: function (axisModel, ecModel, api, payload) { + + this.group.removeAll(); + + var oldAxisGroup = this._axisGroup; + this._axisGroup = new graphic.Group(); + + this.group.add(this._axisGroup); + + if (!axisModel.get('show')) { + return; + } + + var gridModel = axisModel.getCoordSysModel(); + + var layout = cartesianAxisHelper.layout(gridModel, axisModel); + + var axisBuilder = new AxisBuilder(axisModel, layout); + + zrUtil.each(axisBuilderAttrs, axisBuilder.add, axisBuilder); + + this._axisGroup.add(axisBuilder.getGroup()); + + zrUtil.each(selfBuilderAttrs, function (name) { + if (axisModel.get(name + '.show')) { + this['_' + name](axisModel, gridModel, layout.labelInterval); + } + }, this); + + graphic.groupTransition(oldAxisGroup, this._axisGroup, axisModel); + + CartesianAxisView.superCall(this, 'render', axisModel, ecModel, api, payload); + }, + + /** + * @param {module:echarts/coord/cartesian/AxisModel} axisModel + * @param {module:echarts/coord/cartesian/GridModel} gridModel + * @param {number|Function} labelInterval + * @private + */ + _splitLine: function (axisModel, gridModel, labelInterval) { + var axis = axisModel.axis; + + if (axis.scale.isBlank()) { + return; + } + + var splitLineModel = axisModel.getModel('splitLine'); + var lineStyleModel = splitLineModel.getModel('lineStyle'); + var lineColors = lineStyleModel.get('color'); + + var lineInterval = getInterval(splitLineModel, labelInterval); + + lineColors = zrUtil.isArray(lineColors) ? lineColors : [lineColors]; + + var gridRect = gridModel.coordinateSystem.getRect(); + var isHorizontal = axis.isHorizontal(); + + var lineCount = 0; + + var ticksCoords = axis.getTicksCoords( + // splitLineModel.get('alignWithLabel') + ); + var ticks = axis.scale.getTicks(); + + var p1 = []; + var p2 = []; + // Simple optimization + // Batching the lines if color are the same + var lineStyle = lineStyleModel.getLineStyle(); + for (var i = 0; i < ticksCoords.length; i++) { + if (ifIgnoreOnTick(axis, i, lineInterval)) { + continue; + } + + var tickCoord = axis.toGlobalCoord(ticksCoords[i]); + + if (isHorizontal) { + p1[0] = tickCoord; + p1[1] = gridRect.y; + p2[0] = tickCoord; + p2[1] = gridRect.y + gridRect.height; + } + else { + p1[0] = gridRect.x; + p1[1] = tickCoord; + p2[0] = gridRect.x + gridRect.width; + p2[1] = tickCoord; + } + + var colorIndex = (lineCount++) % lineColors.length; + this._axisGroup.add(new graphic.Line(graphic.subPixelOptimizeLine({ + anid: 'line_' + ticks[i], + + shape: { + x1: p1[0], + y1: p1[1], + x2: p2[0], + y2: p2[1] + }, + style: zrUtil.defaults({ + stroke: lineColors[colorIndex] + }, lineStyle), + silent: true + }))); + } + }, + + /** + * @param {module:echarts/coord/cartesian/AxisModel} axisModel + * @param {module:echarts/coord/cartesian/GridModel} gridModel + * @param {number|Function} labelInterval + * @private + */ + _splitArea: function (axisModel, gridModel, labelInterval) { + var axis = axisModel.axis; + + if (axis.scale.isBlank()) { + return; + } + + var splitAreaModel = axisModel.getModel('splitArea'); + var areaStyleModel = splitAreaModel.getModel('areaStyle'); + var areaColors = areaStyleModel.get('color'); + + var gridRect = gridModel.coordinateSystem.getRect(); + + var ticksCoords = axis.getTicksCoords( + // splitAreaModel.get('alignWithLabel') + ); + var ticks = axis.scale.getTicks(); + + var prevX = axis.toGlobalCoord(ticksCoords[0]); + var prevY = axis.toGlobalCoord(ticksCoords[0]); + + var count = 0; + + var areaInterval = getInterval(splitAreaModel, labelInterval); + + var areaStyle = areaStyleModel.getAreaStyle(); + areaColors = zrUtil.isArray(areaColors) ? areaColors : [areaColors]; + + for (var i = 1; i < ticksCoords.length; i++) { + if (ifIgnoreOnTick(axis, i, areaInterval)) { + continue; + } + + var tickCoord = axis.toGlobalCoord(ticksCoords[i]); + + var x; + var y; + var width; + var height; + if (axis.isHorizontal()) { + x = prevX; + y = gridRect.y; + width = tickCoord - x; + height = gridRect.height; + } + else { + x = gridRect.x; + y = prevY; + width = gridRect.width; + height = tickCoord - y; + } + + var colorIndex = (count++) % areaColors.length; + this._axisGroup.add(new graphic.Rect({ + anid: 'area_' + ticks[i], + + shape: { + x: x, + y: y, + width: width, + height: height + }, + style: zrUtil.defaults({ + fill: areaColors[colorIndex] + }, areaStyle), + silent: true + })); + + prevX = x + width; + prevY = y + height; + } + } + }); + + CartesianAxisView.extend({ + type: 'xAxis' + }); + CartesianAxisView.extend({ + type: 'yAxis' + }); + + + +/***/ }, +/* 135 */ +/***/ function(module, exports, __webpack_require__) { + + + + var zrUtil = __webpack_require__(4); + var formatUtil = __webpack_require__(6); + var graphic = __webpack_require__(18); + var Model = __webpack_require__(12); + var numberUtil = __webpack_require__(7); + var remRadian = numberUtil.remRadian; + var isRadianAroundZero = numberUtil.isRadianAroundZero; + var vec2 = __webpack_require__(10); + var matrix = __webpack_require__(11); + var v2ApplyTransform = vec2.applyTransform; + var retrieve = zrUtil.retrieve; + + var PI = Math.PI; + + function makeAxisEventDataBase(axisModel) { + var eventData = { + componentType: axisModel.mainType + }; + eventData[axisModel.mainType + 'Index'] = axisModel.componentIndex; + return eventData; + } + + /** + * A final axis is translated and rotated from a "standard axis". + * So opt.position and opt.rotation is required. + * + * A standard axis is and axis from [0, 0] to [0, axisExtent[1]], + * for example: (0, 0) ------------> (0, 50) + * + * nameDirection or tickDirection or labelDirection is 1 means tick + * or label is below the standard axis, whereas is -1 means above + * the standard axis. labelOffset means offset between label and axis, + * which is useful when 'onZero', where axisLabel is in the grid and + * label in outside grid. + * + * Tips: like always, + * positive rotation represents anticlockwise, and negative rotation + * represents clockwise. + * The direction of position coordinate is the same as the direction + * of screen coordinate. + * + * Do not need to consider axis 'inverse', which is auto processed by + * axis extent. + * + * @param {module:zrender/container/Group} group + * @param {Object} axisModel + * @param {Object} opt Standard axis parameters. + * @param {Array.} opt.position [x, y] + * @param {number} opt.rotation by radian + * @param {number} [opt.nameDirection=1] 1 or -1 Used when nameLocation is 'middle'. + * @param {number} [opt.tickDirection=1] 1 or -1 + * @param {number} [opt.labelDirection=1] 1 or -1 + * @param {number} [opt.labelOffset=0] Usefull when onZero. + * @param {string} [opt.axisLabelShow] default get from axisModel. + * @param {string} [opt.axisName] default get from axisModel. + * @param {number} [opt.axisNameAvailableWidth] + * @param {number} [opt.labelRotate] by degree, default get from axisModel. + * @param {number} [opt.labelInterval] Default label interval when label + * interval from model is null or 'auto'. + * @param {number} [opt.strokeContainThreshold] Default label interval when label + * @param {number} [opt.nameTruncateMaxWidth] + */ + var AxisBuilder = function (axisModel, opt) { + + /** + * @readOnly + */ + this.opt = opt; + + /** + * @readOnly + */ + this.axisModel = axisModel; + + // Default value + zrUtil.defaults( + opt, + { + labelOffset: 0, + nameDirection: 1, + tickDirection: 1, + labelDirection: 1, + silent: true + } + ); + + /** + * @readOnly + */ + this.group = new graphic.Group(); + + // FIXME Not use a seperate text group? + var dumbGroup = new graphic.Group({ + position: opt.position.slice(), + rotation: opt.rotation + }); + + // this.group.add(dumbGroup); + // this._dumbGroup = dumbGroup; + + dumbGroup.updateTransform(); + this._transform = dumbGroup.transform; + + this._dumbGroup = dumbGroup; + }; + + AxisBuilder.prototype = { + + constructor: AxisBuilder, + + hasBuilder: function (name) { + return !!builders[name]; + }, + + add: function (name) { + builders[name].call(this); + }, + + getGroup: function () { + return this.group; + } + + }; + + var builders = { + + /** + * @private + */ + axisLine: function () { + var opt = this.opt; + var axisModel = this.axisModel; + + if (!axisModel.get('axisLine.show')) { + return; + } + + var extent = this.axisModel.axis.getExtent(); + + var matrix = this._transform; + var pt1 = [extent[0], 0]; + var pt2 = [extent[1], 0]; + if (matrix) { + v2ApplyTransform(pt1, pt1, matrix); + v2ApplyTransform(pt2, pt2, matrix); + } + + this.group.add(new graphic.Line(graphic.subPixelOptimizeLine({ + + // Id for animation + anid: 'line', + + shape: { + x1: pt1[0], + y1: pt1[1], + x2: pt2[0], + y2: pt2[1] + }, + style: zrUtil.extend( + {lineCap: 'round'}, + axisModel.getModel('axisLine.lineStyle').getLineStyle() + ), + strokeContainThreshold: opt.strokeContainThreshold || 5, + silent: true, + z2: 1 + }))); + }, + + /** + * @private + */ + axisTick: function () { + var axisModel = this.axisModel; + var axis = axisModel.axis; + + if (!axisModel.get('axisTick.show') || axis.scale.isBlank()) { + return; + } + + var tickModel = axisModel.getModel('axisTick'); + var opt = this.opt; + + var lineStyleModel = tickModel.getModel('lineStyle'); + var tickLen = tickModel.get('length'); + + var tickInterval = getInterval(tickModel, opt.labelInterval); + var ticksCoords = axis.getTicksCoords(tickModel.get('alignWithLabel')); + var ticks = axis.scale.getTicks(); + + var pt1 = []; + var pt2 = []; + var matrix = this._transform; + + for (var i = 0; i < ticksCoords.length; i++) { + // Only ordinal scale support tick interval + if (ifIgnoreOnTick(axis, i, tickInterval)) { + continue; + } + + var tickCoord = ticksCoords[i]; + + pt1[0] = tickCoord; + pt1[1] = 0; + pt2[0] = tickCoord; + pt2[1] = opt.tickDirection * tickLen; + + if (matrix) { + v2ApplyTransform(pt1, pt1, matrix); + v2ApplyTransform(pt2, pt2, matrix); + } + // Tick line, Not use group transform to have better line draw + this.group.add(new graphic.Line(graphic.subPixelOptimizeLine({ + + // Id for animation + anid: 'tick_' + ticks[i], + + shape: { + x1: pt1[0], + y1: pt1[1], + x2: pt2[0], + y2: pt2[1] + }, + style: zrUtil.defaults( + lineStyleModel.getLineStyle(), + { + stroke: axisModel.get('axisLine.lineStyle.color') + } + ), + z2: 2, + silent: true + }))); + } + }, + + /** + * @param {module:echarts/coord/cartesian/AxisModel} axisModel + * @param {module:echarts/coord/cartesian/GridModel} gridModel + * @private + */ + axisLabel: function () { + var opt = this.opt; + var axisModel = this.axisModel; + var axis = axisModel.axis; + var show = retrieve(opt.axisLabelShow, axisModel.get('axisLabel.show')); + + if (!show || axis.scale.isBlank()) { + return; + } + + var labelModel = axisModel.getModel('axisLabel'); + var textStyleModel = labelModel.getModel('textStyle'); + var labelMargin = labelModel.get('margin'); + var ticks = axis.scale.getTicks(); + var labels = axisModel.getFormattedLabels(); + + // Special label rotate. + var labelRotation = ( + retrieve(opt.labelRotate, labelModel.get('rotate')) || 0 + ) * PI / 180; + + var labelLayout = innerTextLayout(opt.rotation, labelRotation, opt.labelDirection); + var categoryData = axisModel.get('data'); + + var textEls = []; + var silent = isSilent(axisModel); + var triggerEvent = axisModel.get('triggerEvent'); + + zrUtil.each(ticks, function (tickVal, index) { + if (ifIgnoreOnTick(axis, index, opt.labelInterval)) { + return; + } + + var itemTextStyleModel = textStyleModel; + if (categoryData && categoryData[tickVal] && categoryData[tickVal].textStyle) { + itemTextStyleModel = new Model( + categoryData[tickVal].textStyle, textStyleModel, axisModel.ecModel + ); + } + var textColor = itemTextStyleModel.getTextColor() + || axisModel.get('axisLine.lineStyle.color'); + + var tickCoord = axis.dataToCoord(tickVal); + var pos = [ + tickCoord, + opt.labelOffset + opt.labelDirection * labelMargin + ]; + var labelStr = axis.scale.getLabel(tickVal); + + var textEl = new graphic.Text({ + + // Id for animation + anid: 'label_' + tickVal, + + style: { + text: labels[index], + textAlign: itemTextStyleModel.get('align', true) || labelLayout.textAlign, + textVerticalAlign: itemTextStyleModel.get('baseline', true) || labelLayout.textVerticalAlign, + textFont: itemTextStyleModel.getFont(), + fill: typeof textColor === 'function' + ? textColor( + // (1) In category axis with data zoom, tick is not the original + // index of axis.data. So tick should not be exposed to user + // in category axis. + // (2) Compatible with previous version, which always returns labelStr. + // But in interval scale labelStr is like '223,445', which maked + // user repalce ','. So we modify it to return original val but remain + // it as 'string' to avoid error in replacing. + axis.type === 'category' ? labelStr : axis.type === 'value' ? tickVal + '' : tickVal, + index + ) + : textColor + }, + position: pos, + rotation: labelLayout.rotation, + silent: silent, + z2: 10 + }); + + // Pack data for mouse event + if (triggerEvent) { + textEl.eventData = makeAxisEventDataBase(axisModel); + textEl.eventData.targetType = 'axisLabel'; + textEl.eventData.value = labelStr; + } + + // FIXME + this._dumbGroup.add(textEl); + textEl.updateTransform(); + + textEls.push(textEl); + this.group.add(textEl); + + textEl.decomposeTransform(); + + }, this); + + fixMinMaxLabelShow(axisModel, textEls); + }, + + /** + * @private + */ + axisName: function () { + var opt = this.opt; + var axisModel = this.axisModel; + var name = retrieve(opt.axisName, axisModel.get('name')); + + if (!name) { + return; + } + + var nameLocation = axisModel.get('nameLocation'); + var nameDirection = opt.nameDirection; + var textStyleModel = axisModel.getModel('nameTextStyle'); + var gap = axisModel.get('nameGap') || 0; + + var extent = this.axisModel.axis.getExtent(); + var gapSignal = extent[0] > extent[1] ? -1 : 1; + var pos = [ + nameLocation === 'start' + ? extent[0] - gapSignal * gap + : nameLocation === 'end' + ? extent[1] + gapSignal * gap + : (extent[0] + extent[1]) / 2, // 'middle' + // Reuse labelOffset. + nameLocation === 'middle' ? opt.labelOffset + nameDirection * gap : 0 + ]; + + var labelLayout; + + var nameRotation = axisModel.get('nameRotate'); + if (nameRotation != null) { + nameRotation = nameRotation * PI / 180; // To radian. + } + + var axisNameAvailableWidth; + + if (nameLocation === 'middle') { + labelLayout = innerTextLayout( + opt.rotation, + nameRotation != null ? nameRotation : opt.rotation, // Adapt to axis. + nameDirection + ); + } + else { + labelLayout = endTextLayout( + opt, nameLocation, nameRotation || 0, extent + ); + + axisNameAvailableWidth = opt.axisNameAvailableWidth; + if (axisNameAvailableWidth != null) { + axisNameAvailableWidth = Math.abs( + axisNameAvailableWidth / Math.sin(labelLayout.rotation) + ); + !isFinite(axisNameAvailableWidth) && (axisNameAvailableWidth = null); + } + } + + var textFont = textStyleModel.getFont(); + + var truncateOpt = axisModel.get('nameTruncate', true) || {}; + var ellipsis = truncateOpt.ellipsis; + var maxWidth = retrieve( + opt.nameTruncateMaxWidth, truncateOpt.maxWidth, axisNameAvailableWidth + ); + var truncatedText = (ellipsis != null && maxWidth != null) + ? formatUtil.truncateText( + name, maxWidth, textFont, ellipsis, + {minChar: 2, placeholder: truncateOpt.placeholder} + ) + : name; + + var tooltipOpt = axisModel.get('tooltip', true); + + var mainType = axisModel.mainType; + var formatterParams = { + componentType: mainType, + name: name, + $vars: ['name'] + }; + formatterParams[mainType + 'Index'] = axisModel.componentIndex; + + var textEl = new graphic.Text({ + + // Id for animation + anid: 'name', + + __fullText: name, + __truncatedText: truncatedText, + + style: { + text: truncatedText, + textFont: textFont, + fill: textStyleModel.getTextColor() + || axisModel.get('axisLine.lineStyle.color'), + textAlign: labelLayout.textAlign, + textVerticalAlign: labelLayout.textVerticalAlign + }, + position: pos, + rotation: labelLayout.rotation, + silent: isSilent(axisModel), + z2: 1, + tooltip: (tooltipOpt && tooltipOpt.show) + ? zrUtil.extend({ + content: name, + formatter: function () { + return name; + }, + formatterParams: formatterParams + }, tooltipOpt) + : null + }); + + if (axisModel.get('triggerEvent')) { + textEl.eventData = makeAxisEventDataBase(axisModel); + textEl.eventData.targetType = 'axisName'; + textEl.eventData.name = name; + } + + // FIXME + this._dumbGroup.add(textEl); + textEl.updateTransform(); + + this.group.add(textEl); + + textEl.decomposeTransform(); + } + + }; + + /** + * @public + * @static + * @param {Object} opt + * @param {number} axisRotation in radian + * @param {number} textRotation in radian + * @param {number} direction + * @return {Object} { + * rotation, // according to axis + * textAlign, + * textVerticalAlign + * } + */ + var innerTextLayout = AxisBuilder.innerTextLayout = function (axisRotation, textRotation, direction) { + var rotationDiff = remRadian(textRotation - axisRotation); + var textAlign; + var textVerticalAlign; + + if (isRadianAroundZero(rotationDiff)) { // Label is parallel with axis line. + textVerticalAlign = direction > 0 ? 'top' : 'bottom'; + textAlign = 'center'; + } + else if (isRadianAroundZero(rotationDiff - PI)) { // Label is inverse parallel with axis line. + textVerticalAlign = direction > 0 ? 'bottom' : 'top'; + textAlign = 'center'; + } + else { + textVerticalAlign = 'middle'; + + if (rotationDiff > 0 && rotationDiff < PI) { + textAlign = direction > 0 ? 'right' : 'left'; + } + else { + textAlign = direction > 0 ? 'left' : 'right'; + } + } + + return { + rotation: rotationDiff, + textAlign: textAlign, + textVerticalAlign: textVerticalAlign + }; + }; + + function endTextLayout(opt, textPosition, textRotate, extent) { + var rotationDiff = remRadian(textRotate - opt.rotation); + var textAlign; + var textVerticalAlign; + var inverse = extent[0] > extent[1]; + var onLeft = (textPosition === 'start' && !inverse) + || (textPosition !== 'start' && inverse); + + if (isRadianAroundZero(rotationDiff - PI / 2)) { + textVerticalAlign = onLeft ? 'bottom' : 'top'; + textAlign = 'center'; + } + else if (isRadianAroundZero(rotationDiff - PI * 1.5)) { + textVerticalAlign = onLeft ? 'top' : 'bottom'; + textAlign = 'center'; + } + else { + textVerticalAlign = 'middle'; + if (rotationDiff < PI * 1.5 && rotationDiff > PI / 2) { + textAlign = onLeft ? 'left' : 'right'; + } + else { + textAlign = onLeft ? 'right' : 'left'; + } + } + + return { + rotation: rotationDiff, + textAlign: textAlign, + textVerticalAlign: textVerticalAlign + }; + } + + function isSilent(axisModel) { + var tooltipOpt = axisModel.get('tooltip'); + return axisModel.get('silent') + // Consider mouse cursor, add these restrictions. + || !( + axisModel.get('triggerEvent') || (tooltipOpt && tooltipOpt.show) + ); + } + + function fixMinMaxLabelShow(axisModel, textEls) { + // If min or max are user set, we need to check + // If the tick on min(max) are overlap on their neighbour tick + // If they are overlapped, we need to hide the min(max) tick label + var showMinLabel = axisModel.get('axisLabel.showMinLabel'); + var showMaxLabel = axisModel.get('axisLabel.showMaxLabel'); + var firstLabel = textEls[0]; + var nextLabel = textEls[1]; + var lastLabel = textEls[textEls.length - 1]; + var prevLabel = textEls[textEls.length - 2]; + + if (showMinLabel === false) { + firstLabel.ignore = true; + } + else if (axisModel.getMin() != null && isTwoLabelOverlapped(firstLabel, nextLabel)) { + showMinLabel ? (nextLabel.ignore = true) : (firstLabel.ignore = true); + } + + if (showMaxLabel === false) { + lastLabel.ignore = true; + } + else if (axisModel.getMax() != null && isTwoLabelOverlapped(prevLabel, lastLabel)) { + showMaxLabel ? (prevLabel.ignore = true) : (lastLabel.ignore = true); + } + } + + function isTwoLabelOverlapped(current, next, labelLayout) { + // current and next has the same rotation. + var firstRect = current && current.getBoundingRect().clone(); + var nextRect = next && next.getBoundingRect().clone(); + + if (!firstRect || !nextRect) { + return; + } + + // When checking intersect of two rotated labels, we use mRotationBack + // to avoid that boundingRect is enlarge when using `boundingRect.applyTransform`. + var mRotationBack = matrix.identity([]); + matrix.rotate(mRotationBack, mRotationBack, -current.rotation); + + firstRect.applyTransform(matrix.mul([], mRotationBack, current.getLocalTransform())); + nextRect.applyTransform(matrix.mul([], mRotationBack, next.getLocalTransform())); + + return firstRect.intersect(nextRect); + } + + + /** + * @static + */ + var ifIgnoreOnTick = AxisBuilder.ifIgnoreOnTick = function (axis, i, interval) { + var rawTick; + var scale = axis.scale; + return scale.type === 'ordinal' + && ( + typeof interval === 'function' + ? ( + rawTick = scale.getTicks()[i], + !interval(rawTick, scale.getLabel(rawTick)) + ) + : i % (interval + 1) + ); + }; + + /** + * @static + */ + var getInterval = AxisBuilder.getInterval = function (model, labelInterval) { + var interval = model.get('interval'); + if (interval == null || interval == 'auto') { + interval = labelInterval; + } + return interval; + }; + + module.exports = AxisBuilder; + + + +/***/ }, +/* 136 */ +/***/ function(module, exports, __webpack_require__) { + + + + var axisPointerModelHelper = __webpack_require__(137); + + /** + * Base class of AxisView. + */ + var AxisView = __webpack_require__(1).extendComponentView({ + + type: 'axis', + + /** + * @private + */ + _axisPointer: null, + + /** + * @protected + * @type {string} + */ + axisPointerClass: null, + + /** + * @override + */ + render: function (axisModel, ecModel, api, payload) { + // FIXME + // This process should proformed after coordinate systems updated + // (axis scale updated), and should be performed each time update. + // So put it here temporarily, although it is not appropriate to + // put a model-writing procedure in `view`. + this.axisPointerClass && axisPointerModelHelper.fixValue(axisModel); + + AxisView.superApply(this, 'render', arguments); + + updateAxisPointer(this, axisModel, ecModel, api, payload, true); + }, + + /** + * Action handler. + * @public + * @param {module:echarts/coord/cartesian/AxisModel} axisModel + * @param {module:echarts/model/Global} ecModel + * @param {module:echarts/ExtensionAPI} api + * @param {Object} payload + */ + updateAxisPointer: function (axisModel, ecModel, api, payload, force) { + updateAxisPointer(this, axisModel, ecModel, api, payload, false); + }, + + /** + * @override + */ + remove: function (ecModel, api) { + var axisPointer = this._axisPointer; + axisPointer && axisPointer.remove(api); + AxisView.superApply(this, 'remove', arguments); + }, + + /** + * @override + */ + dispose: function (ecModel, api) { + disposeAxisPointer(this, api); + AxisView.superApply(this, 'dispose', arguments); + } + + }); + + function updateAxisPointer(axisView, axisModel, ecModel, api, payload, forceRender) { + var Clazz = AxisView.getAxisPointerClass(axisView.axisPointerClass); + if (!Clazz) { + return; + } + var axisPointerModel = axisPointerModelHelper.getAxisPointerModel(axisModel); + axisPointerModel + ? (axisView._axisPointer || (axisView._axisPointer = new Clazz())) + .render(axisModel, axisPointerModel, api, forceRender) + : disposeAxisPointer(axisView, api); + } + + function disposeAxisPointer(axisView, ecModel, api) { + var axisPointer = axisView._axisPointer; + axisPointer && axisPointer.dispose(ecModel, api); + axisView._axisPointer = null; + } + + var axisPointerClazz = []; + + AxisView.registerAxisPointerClass = function (type, clazz) { + if (true) { + if (axisPointerClazz[type]) { + throw new Error('axisPointer ' + type + ' exists'); + } + } + axisPointerClazz[type] = clazz; + }; + + AxisView.getAxisPointerClass = function (type) { + return type && axisPointerClazz[type]; + }; + + module.exports = AxisView; + + +/***/ }, +/* 137 */ +/***/ function(module, exports, __webpack_require__) { + + + + var zrUtil = __webpack_require__(4); + var Model = __webpack_require__(12); + var each = zrUtil.each; + var curry = zrUtil.curry; + + var helper = {}; + + // Build axisPointerModel, mergin tooltip.axisPointer model for each axis. + // allAxesInfo should be updated when setOption performed. + helper.collect = function (ecModel, api) { + var result = { + /** + * key: makeKey(axis.model) + * value: { + * axis, + * coordSys, + * axisPointerModel, + * triggerTooltip, + * involveSeries, + * snap, + * seriesModels, + * seriesDataCount + * } + */ + axesInfo: {}, + seriesInvolved: false, + /** + * key: makeKey(coordSys.model) + * value: Object: key makeKey(axis.model), value: axisInfo + */ + coordSysAxesInfo: {}, + coordSysMap: {} + }; + + collectAxesInfo(result, ecModel, api); + + // Check seriesInvolved for performance, in case too many series in some chart. + result.seriesInvolved && collectSeriesInfo(result, ecModel); + + return result; + }; + + function collectAxesInfo(result, ecModel, api) { + var globalTooltipModel = ecModel.getComponent('tooltip'); + var globalAxisPointerModel = ecModel.getComponent('axisPointer'); + // links can only be set on global. + var linksOption = globalAxisPointerModel.get('link', true) || []; + var linkGroups = []; + + // Collect axes info. + each(api.getCoordinateSystems(), function (coordSys) { + // Some coordinate system do not support axes, like geo. + if (!coordSys.axisPointerEnabled) { + return; + } + + var coordSysKey = makeKey(coordSys.model); + var axesInfoInCoordSys = result.coordSysAxesInfo[coordSysKey] = {}; + result.coordSysMap[coordSysKey] = coordSys; + + // Set tooltip (like 'cross') is a convienent way to show axisPointer + // for user. So we enable seting tooltip on coordSys model. + var coordSysModel = coordSys.model; + var baseTooltipModel = coordSysModel.getModel('tooltip', globalTooltipModel); + + each(coordSys.getAxes(), curry(saveTooltipAxisInfo, false, null)); + + // If axis tooltip used, choose tooltip axis for each coordSys. + // Notice this case: coordSys is `grid` but not `cartesian2D` here. + if (coordSys.getTooltipAxes + && globalTooltipModel + // If tooltip.showContent is set as false, tooltip will not + // show but axisPointer will show as normal. + && baseTooltipModel.get('show') + ) { + // Compatible with previous logic. But series.tooltip.trigger: 'axis' + // or series.data[n].tooltip.trigger: 'axis' are not support any more. + var triggerAxis = baseTooltipModel.get('trigger') === 'axis'; + var cross = baseTooltipModel.get('axisPointer.type') === 'cross'; + var tooltipAxes = coordSys.getTooltipAxes(baseTooltipModel.get('axisPointer.axis')); + if (triggerAxis || cross) { + each(tooltipAxes.baseAxes, curry( + saveTooltipAxisInfo, cross ? 'cross' : true, triggerAxis + )); + } + if (cross) { + each(tooltipAxes.otherAxes, curry(saveTooltipAxisInfo, 'cross', false)); + } + } + + // fromTooltip: true | false | 'cross' + // triggerTooltip: true | false | null + function saveTooltipAxisInfo(fromTooltip, triggerTooltip, axis) { + var axisPointerModel = axis.model.getModel('axisPointer', globalAxisPointerModel); + + var axisPointerShow = axisPointerModel.get('show'); + if (!axisPointerShow || ( + axisPointerShow === 'auto' + && !fromTooltip + && !isHandleTrigger(axisPointerModel) + )) { + return; + } + + if (triggerTooltip == null) { + triggerTooltip = axisPointerModel.get('triggerTooltip'); + } + + axisPointerModel = fromTooltip + ? makeAxisPointerModel( + axis, baseTooltipModel, globalAxisPointerModel, ecModel, + fromTooltip, triggerTooltip + ) + : axisPointerModel; + + var snap = axisPointerModel.get('snap'); + var key = makeKey(axis.model); + var involveSeries = triggerTooltip || snap || axis.type === 'category'; + + // If result.axesInfo[key] exist, override it (tooltip has higher priority). + var axisInfo = result.axesInfo[key] = { + key: key, + axis: axis, + coordSys: coordSys, + axisPointerModel: axisPointerModel, + triggerTooltip: triggerTooltip, + involveSeries: involveSeries, + snap: snap, + useHandle: isHandleTrigger(axisPointerModel), + seriesModels: [] + }; + axesInfoInCoordSys[key] = axisInfo; + result.seriesInvolved |= involveSeries; + + var groupIndex = getLinkGroupIndex(linksOption, axis); + if (groupIndex != null) { + var linkGroup = linkGroups[groupIndex] || (linkGroups[groupIndex] = {axesInfo: {}}); + linkGroup.axesInfo[key] = axisInfo; + linkGroup.mapper = linksOption[groupIndex].mapper; + axisInfo.linkGroup = linkGroup; + } + } + }); + } + + function makeAxisPointerModel( + axis, baseTooltipModel, globalAxisPointerModel, ecModel, fromTooltip, triggerTooltip + ) { + var tooltipAxisPointerModel = baseTooltipModel.getModel('axisPointer'); + var volatileOption = {}; + + each( + [ + 'type', 'snap', 'lineStyle', 'shadowStyle', 'label', + 'animation', 'animationDurationUpdate', 'animationEasingUpdate', 'z' + ], + function (field) { + volatileOption[field] = zrUtil.clone(tooltipAxisPointerModel.get(field)); + } + ); + + // category axis do not auto snap, otherwise some tick that do not + // has value can not be hovered. value/time/log axis default snap if + // triggered from tooltip and trigger tooltip. + volatileOption.snap = axis.type !== 'category' && !!triggerTooltip; + + // Compatibel with previous behavior, tooltip axis do not show label by default. + // Only these properties can be overrided from tooltip to axisPointer. + if (tooltipAxisPointerModel.get('type') === 'cross') { + volatileOption.type = 'line'; + } + var labelOption = volatileOption.label || (volatileOption.label = {}); + // Follow the convention, do not show label when triggered by tooltip by default. + labelOption.show == null && (labelOption.show = false); + + if (fromTooltip === 'cross') { + // When 'cross', both axes show labels. + labelOption.show = true; + // If triggerTooltip, this is a base axis, which should better not use cross style + // (cross style is dashed by default) + if (!triggerTooltip) { + var crossStyle = volatileOption.lineStyle = tooltipAxisPointerModel.get('crossStyle'); + crossStyle && zrUtil.defaults( + labelOption.textStyle || (labelOption.textStyle = {}), + crossStyle.textStyle + ); + } + } + + return axis.model.getModel( + 'axisPointer', + new Model(volatileOption, globalAxisPointerModel, ecModel) + ); + } + + function collectSeriesInfo(result, ecModel) { + // Prepare data for axis trigger + ecModel.eachSeries(function (seriesModel) { + + // Notice this case: this coordSys is `cartesian2D` but not `grid`. + var coordSys = seriesModel.coordinateSystem; + var seriesTooltipTrigger = seriesModel.get('tooltip.trigger', true); + var seriesTooltipShow = seriesModel.get('tooltip.show', true); + if (!coordSys + || seriesTooltipTrigger === 'none' + || seriesTooltipTrigger === false + || seriesTooltipTrigger === 'item' + || seriesTooltipShow === false + || seriesModel.get('axisPointer.show', true) === false + ) { + return; + } + + each(result.coordSysAxesInfo[makeKey(coordSys.model)], function (axisInfo) { + var axis = axisInfo.axis; + if (coordSys.getAxis(axis.dim) === axis) { + axisInfo.seriesModels.push(seriesModel); + axisInfo.seriesDataCount == null && (axisInfo.seriesDataCount = 0); + axisInfo.seriesDataCount += seriesModel.getData().count(); + } + }); + + }, this); + } + + /** + * For example: + * { + * axisPointer: { + * links: [{ + * xAxisIndex: [2, 4], + * yAxisIndex: 'all' + * }, { + * xAxisId: ['a5', 'a7'], + * xAxisName: 'xxx' + * }] + * } + * } + */ + function getLinkGroupIndex(linksOption, axis) { + var axisModel = axis.model; + var dim = axis.dim; + for (var i = 0; i < linksOption.length; i++) { + var linkOption = linksOption[i] || {}; + if (checkPropInLink(linkOption[dim + 'AxisId'], axisModel.id) + || checkPropInLink(linkOption[dim + 'AxisIndex'], axisModel.componentIndex) + || checkPropInLink(linkOption[dim + 'AxisName'], axisModel.name) + ) { + return i; + } + } + } + + function checkPropInLink(linkPropValue, axisPropValue) { + return linkPropValue === 'all' + || (zrUtil.isArray(linkPropValue) && zrUtil.indexOf(linkPropValue, axisPropValue) >= 0) + || linkPropValue === axisPropValue; + } + + helper.fixValue = function (axisModel) { + var axisInfo = helper.getAxisInfo(axisModel); + if (!axisInfo) { + return; + } + + var axisPointerModel = axisInfo.axisPointerModel; + var scale = axisInfo.axis.scale; + var option = axisPointerModel.option; + var status = axisPointerModel.get('status'); + var value = axisPointerModel.get('value'); + + // Parse init value for category and time axis. + if (value != null) { + value = scale.parse(value); + } + + var useHandle = isHandleTrigger(axisPointerModel); + // If `handle` used, `axisPointer` will always be displayed, so value + // and status should be initialized. + if (status == null) { + option.status = useHandle ? 'show' : 'hide'; + } + + var extent = scale.getExtent().slice(); + extent[0] > extent[1] && extent.reverse(); + + if (// Pick a value on axis when initializing. + value == null + // If both `handle` and `dataZoom` are used, value may be out of axis extent, + // where we should re-pick a value to keep `handle` displaying normally. + || value > extent[1] + ) { + // Make handle displayed on the end of the axis when init, which looks better. + value = extent[1]; + } + if (value < extent[0]) { + value = extent[0]; + } + + option.value = value; + + if (useHandle) { + option.status = axisInfo.axis.scale.isBlank() ? 'hide' : 'show'; + } + }; + + helper.getAxisInfo = function (axisModel) { + var coordSysAxesInfo = (axisModel.ecModel.getComponent('axisPointer') || {}).coordSysAxesInfo; + return coordSysAxesInfo && coordSysAxesInfo.axesInfo[makeKey(axisModel)]; + }; + + helper.getAxisPointerModel = function (axisModel) { + var axisInfo = helper.getAxisInfo(axisModel); + return axisInfo && axisInfo.axisPointerModel; + }; + + function isHandleTrigger(axisPointerModel) { + return !!axisPointerModel.get('handle.show'); + } + + /** + * @param {module:echarts/model/Model} model + * @return {string} unique key + */ + var makeKey = helper.makeKey = function (model) { + return model.type + '||' + model.id; + }; + + module.exports = helper; + + + +/***/ }, +/* 138 */ +/***/ function(module, exports, __webpack_require__) { + + + + var zrUtil = __webpack_require__(4); + + var helper = {}; + + /** + * @param {Object} opt {labelInside} + * @return {Object} { + * position, rotation, labelDirection, labelOffset, + * tickDirection, labelRotate, labelInterval, z2 + * } + */ + helper.layout = function (gridModel, axisModel, opt) { + opt = opt || {}; + var grid = gridModel.coordinateSystem; + var axis = axisModel.axis; + var layout = {}; + + var rawAxisPosition = axis.position; + var axisPosition = axis.onZero ? 'onZero' : rawAxisPosition; + var axisDim = axis.dim; + + // [left, right, top, bottom] + var rect = grid.getRect(); + var rectBound = [rect.x, rect.x + rect.width, rect.y, rect.y + rect.height]; + + var axisOffset = axisModel.get('offset') || 0; + + var posMap = { + x: { top: rectBound[2] - axisOffset, bottom: rectBound[3] + axisOffset }, + y: { left: rectBound[0] - axisOffset, right: rectBound[1] + axisOffset } + }; + + posMap.x.onZero = Math.max(Math.min(getZero('y'), posMap.x.bottom), posMap.x.top); + posMap.y.onZero = Math.max(Math.min(getZero('x'), posMap.y.right), posMap.y.left); + + function getZero(dim, val) { + var theAxis = grid.getAxis(dim); + return theAxis.toGlobalCoord(theAxis.dataToCoord(0)); + } + + // Axis position + layout.position = [ + axisDim === 'y' ? posMap.y[axisPosition] : rectBound[0], + axisDim === 'x' ? posMap.x[axisPosition] : rectBound[3] + ]; + + // Axis rotation + layout.rotation = Math.PI / 2 * (axisDim === 'x' ? 0 : 1); + + // Tick and label direction, x y is axisDim + var dirMap = {top: -1, bottom: 1, left: -1, right: 1}; + + layout.labelDirection = layout.tickDirection = layout.nameDirection = dirMap[rawAxisPosition]; + layout.labelOffset = axis.onZero ? posMap[axisDim][rawAxisPosition] - posMap[axisDim].onZero : 0; + + if (axisModel.get('axisTick.inside')) { + layout.tickDirection = -layout.tickDirection; + } + if (zrUtil.retrieve(opt.labelInside, axisModel.get('axisLabel.inside'))) { + layout.labelDirection = -layout.labelDirection; + } + + // Special label rotation + var labelRotate = axisModel.get('axisLabel.rotate'); + layout.labelRotate = axisPosition === 'top' ? -labelRotate : labelRotate; + + // label interval when auto mode. + layout.labelInterval = axis.getLabelInterval(); + + // Over splitLine and splitArea + layout.z2 = 1; + + return layout; + }; + + module.exports = helper; + + + +/***/ }, +/* 139 */ +/***/ function(module, exports, __webpack_require__) { + + + + var zrUtil = __webpack_require__(4); + + __webpack_require__(125); + + __webpack_require__(140); + __webpack_require__(142); + + var barLayoutGrid = __webpack_require__(145); + var echarts = __webpack_require__(1); + + echarts.registerLayout(zrUtil.curry(barLayoutGrid, 'bar')); + + // Visual coding for legend + echarts.registerVisual(function (ecModel) { + ecModel.eachSeriesByType('bar', function (seriesModel) { + var data = seriesModel.getData(); + data.setVisual('legendSymbol', 'roundRect'); + }); + }); + + // In case developer forget to include grid component + __webpack_require__(124); + + +/***/ }, +/* 140 */ +/***/ function(module, exports, __webpack_require__) { + + + + module.exports = __webpack_require__(141).extend({ + + type: 'series.bar', + + dependencies: ['grid', 'polar'], + + brushSelector: 'rect' + }); + + +/***/ }, +/* 141 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + + var SeriesModel = __webpack_require__(78); + var createListFromArray = __webpack_require__(109); + + module.exports = SeriesModel.extend({ + + type: 'series.__base_bar__', + + getInitialData: function (option, ecModel) { + return createListFromArray(option.data, this, ecModel); + }, + + getMarkerPosition: function (value) { + var coordSys = this.coordinateSystem; + if (coordSys) { + // PENDING if clamp ? + var pt = coordSys.dataToPoint(value, true); + var data = this.getData(); + var offset = data.getLayout('offset'); + var size = data.getLayout('size'); + var offsetIndex = coordSys.getBaseAxis().isHorizontal() ? 0 : 1; + pt[offsetIndex] += offset + size / 2; + return pt; + } + return [NaN, NaN]; + }, + + defaultOption: { + zlevel: 0, // 一级层叠 + z: 2, // 二级层叠 + coordinateSystem: 'cartesian2d', + legendHoverLink: true, + // stack: null + + // Cartesian coordinate system + // xAxisIndex: 0, + // yAxisIndex: 0, + + // 最小高度改为0 + barMinHeight: 0, + // 最小角度为0,仅对极坐标系下的柱状图有效 + barMinAngle: 0, + // cursor: null, + + // barMaxWidth: null, + // 默认自适应 + // barWidth: null, + // 柱间距离,默认为柱形宽度的30%,可设固定值 + // barGap: '30%', + // 类目间柱形距离,默认为类目间距的20%,可设固定值 + // barCategoryGap: '20%', + // label: { + // normal: { + // show: false + // } + // }, + itemStyle: { + normal: { + // color: '各异' + }, + emphasis: {} + } + } + }); + + +/***/ }, +/* 142 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + + var zrUtil = __webpack_require__(4); + var graphic = __webpack_require__(18); + var helper = __webpack_require__(143); + + var BAR_BORDER_WIDTH_QUERY = ['itemStyle', 'normal', 'barBorderWidth']; + + // FIXME + // Just for compatible with ec2. + zrUtil.extend(__webpack_require__(12).prototype, __webpack_require__(144)); + + var BarView = __webpack_require__(1).extendChartView({ + + type: 'bar', + + render: function (seriesModel, ecModel, api) { + var coordinateSystemType = seriesModel.get('coordinateSystem'); + + if (coordinateSystemType === 'cartesian2d' + || coordinateSystemType === 'polar' + ) { + this._render(seriesModel, ecModel, api); + } + else if (true) { + console.warn('Only cartesian2d and polar supported for bar.'); + } + + return this.group; + }, + + dispose: zrUtil.noop, + + _render: function (seriesModel, ecModel, api) { + var group = this.group; + var data = seriesModel.getData(); + var oldData = this._data; + + var coord = seriesModel.coordinateSystem; + var baseAxis = coord.getBaseAxis(); + var isHorizontalOrRadial; + + if (coord.type === 'cartesian2d') { + isHorizontalOrRadial = baseAxis.isHorizontal(); + } + else if (coord.type === 'polar') { + isHorizontalOrRadial = baseAxis.dim === 'angle'; + } + + var animationModel = seriesModel.isAnimationEnabled() ? seriesModel : null; + + data.diff(oldData) + .add(function (dataIndex) { + if (!data.hasValue(dataIndex)) { + return; + } + + var itemModel = data.getItemModel(dataIndex); + var layout = getLayout[coord.type](data, dataIndex, itemModel); + var el = elementCreator[coord.type]( + data, dataIndex, itemModel, layout, isHorizontalOrRadial, animationModel + ); + data.setItemGraphicEl(dataIndex, el); + group.add(el); + + updateStyle( + el, data, dataIndex, itemModel, layout, + seriesModel, isHorizontalOrRadial, coord.type === 'polar' + ); + }) + .update(function (newIndex, oldIndex) { + var el = oldData.getItemGraphicEl(oldIndex); + + if (!data.hasValue(newIndex)) { + group.remove(el); + return; + } + + var itemModel = data.getItemModel(newIndex); + var layout = getLayout[coord.type](data, newIndex, itemModel); + + if (el) { + graphic.updateProps(el, {shape: layout}, animationModel, newIndex); + } + else { + el = elementCreator[coord.type]( + data, newIndex, itemModel, layout, isHorizontalOrRadial, animationModel, true + ); + } + + data.setItemGraphicEl(newIndex, el); + // Add back + group.add(el); + + updateStyle( + el, data, newIndex, itemModel, layout, + seriesModel, isHorizontalOrRadial, coord.type === 'polar' + ); + }) + .remove(function (dataIndex) { + var el = oldData.getItemGraphicEl(dataIndex); + if (coord.type === 'cartesian2d') { + el && removeRect(dataIndex, animationModel, el); + } + else { + el && removeSector(dataIndex, animationModel, el); + } + }) + .execute(); + + this._data = data; + }, + + remove: function (ecModel, api) { + var group = this.group; + var data = this._data; + if (ecModel.get('animation')) { + if (data) { + data.eachItemGraphicEl(function (el) { + if (el.type === 'sector') { + removeSector(el.dataIndex, ecModel, el); + } + else { + removeRect(el.dataIndex, ecModel, el); + } + }); + } + } + else { + group.removeAll(); + } + } + }); + + var elementCreator = { + + cartesian2d: function ( + data, dataIndex, itemModel, layout, isHorizontal, + animationModel, isUpdate + ) { + var rect = new graphic.Rect({shape: zrUtil.extend({}, layout)}); + + // Animation + if (animationModel) { + var rectShape = rect.shape; + var animateProperty = isHorizontal ? 'height' : 'width'; + var animateTarget = {}; + rectShape[animateProperty] = 0; + animateTarget[animateProperty] = layout[animateProperty]; + graphic[isUpdate ? 'updateProps' : 'initProps'](rect, { + shape: animateTarget + }, animationModel, dataIndex); + } + + return rect; + }, + + polar: function ( + data, dataIndex, itemModel, layout, isRadial, + animationModel, isUpdate + ) { + var sector = new graphic.Sector({shape: zrUtil.extend({}, layout)}); + + // Animation + if (animationModel) { + var sectorShape = sector.shape; + var animateProperty = isRadial ? 'r' : 'endAngle'; + var animateTarget = {}; + sectorShape[animateProperty] = isRadial ? 0 : layout.startAngle; + animateTarget[animateProperty] = layout[animateProperty]; + graphic[isUpdate ? 'updateProps' : 'initProps'](sector, { + shape: animateTarget + }, animationModel, dataIndex); + } + + return sector; + } + }; + + function removeRect(dataIndex, animationModel, el) { + // Not show text when animating + el.style.text = ''; + graphic.updateProps(el, { + shape: { + width: 0 + } + }, animationModel, dataIndex, function () { + el.parent && el.parent.remove(el); + }); + } + + function removeSector(dataIndex, animationModel, el) { + // Not show text when animating + el.style.text = ''; + graphic.updateProps(el, { + shape: { + r: el.shape.r0 + } + }, animationModel, dataIndex, function () { + el.parent && el.parent.remove(el); + }); + } + + var getLayout = { + cartesian2d: function (data, dataIndex, itemModel) { + var layout = data.getItemLayout(dataIndex); + var fixedLineWidth = getLineWidth(itemModel, layout); + + // fix layout with lineWidth + var signX = layout.width > 0 ? 1 : -1; + var signY = layout.height > 0 ? 1 : -1; + return { + x: layout.x + signX * fixedLineWidth / 2, + y: layout.y + signY * fixedLineWidth / 2, + width: layout.width - signX * fixedLineWidth, + height: layout.height - signY * fixedLineWidth + }; + }, + + polar: function (data, dataIndex, itemModel) { + var layout = data.getItemLayout(dataIndex); + return { + cx: layout.cx, + cy: layout.cy, + r0: layout.r0, + r: layout.r, + startAngle: layout.startAngle, + endAngle: layout.endAngle + }; + } + }; + + function updateStyle( + el, data, dataIndex, itemModel, layout, seriesModel, isHorizontal, isPolar + ) { + var color = data.getItemVisual(dataIndex, 'color'); + var opacity = data.getItemVisual(dataIndex, 'opacity'); + var itemStyleModel = itemModel.getModel('itemStyle.normal'); + var hoverStyle = itemModel.getModel('itemStyle.emphasis').getBarItemStyle(); + + if (!isPolar) { + el.setShape('r', itemStyleModel.get('barBorderRadius') || 0); + } + + el.useStyle(zrUtil.defaults( + { + fill: color, + opacity: opacity + }, + itemStyleModel.getBarItemStyle() + )); + + var cursorStyle = itemModel.getShallow('cursor'); + cursorStyle && el.attr('cursor', cursorStyle); + + var labelPositionOutside = isHorizontal + ? (layout.height > 0 ? 'bottom' : 'top') + : (layout.width > 0 ? 'left' : 'right'); + + if (!isPolar) { + helper.setLabel( + el.style, hoverStyle, itemModel, color, + seriesModel, dataIndex, labelPositionOutside + ); + } + + graphic.setHoverStyle(el, hoverStyle); + } + + // In case width or height are too small. + function getLineWidth(itemModel, rawLayout) { + var lineWidth = itemModel.get(BAR_BORDER_WIDTH_QUERY) || 0; + return Math.min(lineWidth, Math.abs(rawLayout.width), Math.abs(rawLayout.height)); + } + + module.exports = BarView; + + +/***/ }, +/* 143 */ +/***/ function(module, exports, __webpack_require__) { + + + + var zrUtil = __webpack_require__(4); + var graphic = __webpack_require__(18); + + var helper = {}; + + helper.setLabel = function ( + normalStyle, hoverStyle, itemModel, color, seriesModel, dataIndex, labelPositionOutside + ) { + var labelModel = itemModel.getModel('label.normal'); + var hoverLabelModel = itemModel.getModel('label.emphasis'); + + if (labelModel.get('show')) { + setLabel( + normalStyle, labelModel, color, + zrUtil.retrieve( + seriesModel.getFormattedLabel(dataIndex, 'normal'), + seriesModel.getRawValue(dataIndex) + ), + labelPositionOutside + ); + } + else { + normalStyle.text = ''; + } + + if (hoverLabelModel.get('show')) { + setLabel( + hoverStyle, hoverLabelModel, color, + zrUtil.retrieve( + seriesModel.getFormattedLabel(dataIndex, 'emphasis'), + seriesModel.getRawValue(dataIndex) + ), + labelPositionOutside + ); + } + else { + hoverStyle.text = ''; + } + }; + + function setLabel(style, model, color, labelText, labelPositionOutside) { + graphic.setText(style, model, color); + style.text = labelText; + if (style.textPosition === 'outside') { + style.textPosition = labelPositionOutside; + } + } + + module.exports = helper; + + +/***/ }, +/* 144 */ +/***/ function(module, exports, __webpack_require__) { + + + + + var getBarItemStyle = __webpack_require__(15)( + [ + ['fill', 'color'], + ['stroke', 'borderColor'], + ['lineWidth', 'borderWidth'], + // Compatitable with 2 + ['stroke', 'barBorderColor'], + ['lineWidth', 'barBorderWidth'], + ['opacity'], + ['shadowBlur'], + ['shadowOffsetX'], + ['shadowOffsetY'], + ['shadowColor'] + ] + ); + module.exports = { + getBarItemStyle: function (excludes) { + var style = getBarItemStyle.call(this, excludes); + if (this.getBorderLineDash) { + var lineDash = this.getBorderLineDash(); + lineDash && (style.lineDash = lineDash); + } + return style; + } + }; + + +/***/ }, +/* 145 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + + var zrUtil = __webpack_require__(4); + var numberUtil = __webpack_require__(7); + var parsePercent = numberUtil.parsePercent; + + var STACK_PREFIX = '__ec_stack_'; + + function getSeriesStackId(seriesModel) { + return seriesModel.get('stack') || STACK_PREFIX + seriesModel.seriesIndex; + } + + function getAxisKey(axis) { + return axis.dim + axis.index; + } + + /** + * @param {Object} opt + * @param {module:echarts/coord/Axis} opt.axis Only support category axis currently. + * @param {number} opt.count Positive interger. + * @param {number} [opt.barWidth] + * @param {number} [opt.barMaxWidth] + * @param {number} [opt.barGap] + * @param {number} [opt.barCategoryGap] + * @return {Object} {width, offset, offsetCenter} If axis.type is not 'category', return undefined. + */ + function getLayoutOnAxis(opt, api) { + var params = []; + var baseAxis = opt.axis; + var axisKey = 'axis0'; + + if (baseAxis.type !== 'category') { + return; + } + var bandWidth = baseAxis.getBandWidth(); + + for (var i = 0; i < opt.count || 0; i++) { + params.push(zrUtil.defaults({ + bandWidth: bandWidth, + axisKey: axisKey, + stackId: STACK_PREFIX + i + }, opt)); + } + var widthAndOffsets = doCalBarWidthAndOffset(params, api); + + var result = []; + for (var i = 0; i < opt.count; i++) { + var item = widthAndOffsets[axisKey][STACK_PREFIX + i]; + item.offsetCenter = item.offset + item.width / 2; + result.push(item); + } + + return result; + } + + function calBarWidthAndOffset(barSeries, api) { + var seriesInfoList = zrUtil.map(barSeries, function (seriesModel) { + var data = seriesModel.getData(); + var cartesian = seriesModel.coordinateSystem; + var baseAxis = cartesian.getBaseAxis(); + var axisExtent = baseAxis.getExtent(); + var bandWidth = baseAxis.type === 'category' + ? baseAxis.getBandWidth() + : (Math.abs(axisExtent[1] - axisExtent[0]) / data.count()); + + var barWidth = parsePercent( + seriesModel.get('barWidth'), bandWidth + ); + var barMaxWidth = parsePercent( + seriesModel.get('barMaxWidth'), bandWidth + ); + var barGap = seriesModel.get('barGap'); + var barCategoryGap = seriesModel.get('barCategoryGap'); + + return { + bandWidth: bandWidth, + barWidth: barWidth, + barMaxWidth: barMaxWidth, + barGap: barGap, + barCategoryGap: barCategoryGap, + axisKey: getAxisKey(baseAxis), + stackId: getSeriesStackId(seriesModel) + }; + }); + + return doCalBarWidthAndOffset(seriesInfoList, api); + } + + function doCalBarWidthAndOffset(seriesInfoList, api) { + // Columns info on each category axis. Key is cartesian name + var columnsMap = {}; + + zrUtil.each(seriesInfoList, function (seriesInfo, idx) { + var axisKey = seriesInfo.axisKey; + var bandWidth = seriesInfo.bandWidth; + var columnsOnAxis = columnsMap[axisKey] || { + bandWidth: bandWidth, + remainedWidth: bandWidth, + autoWidthCount: 0, + categoryGap: '20%', + gap: '30%', + stacks: {} + }; + var stacks = columnsOnAxis.stacks; + columnsMap[axisKey] = columnsOnAxis; + + var stackId = seriesInfo.stackId; + + if (!stacks[stackId]) { + columnsOnAxis.autoWidthCount++; + } + stacks[stackId] = stacks[stackId] || { + width: 0, + maxWidth: 0 + }; + + // Caution: In a single coordinate system, these barGrid attributes + // will be shared by series. Consider that they have default values, + // only the attributes set on the last series will work. + // Do not change this fact unless there will be a break change. + + // TODO + var barWidth = seriesInfo.barWidth; + if (barWidth && !stacks[stackId].width) { + barWidth = Math.min(columnsOnAxis.remainedWidth, barWidth); + stacks[stackId].width = barWidth; + columnsOnAxis.remainedWidth -= barWidth; + } + + var barMaxWidth = seriesInfo.barMaxWidth; + barMaxWidth && (stacks[stackId].maxWidth = barMaxWidth); + var barGap = seriesInfo.barGap; + (barGap != null) && (columnsOnAxis.gap = barGap); + var barCategoryGap = seriesInfo.barCategoryGap; + (barCategoryGap != null) && (columnsOnAxis.categoryGap = barCategoryGap); + }); + + var result = {}; + + zrUtil.each(columnsMap, function (columnsOnAxis, coordSysName) { + + result[coordSysName] = {}; + + var stacks = columnsOnAxis.stacks; + var bandWidth = columnsOnAxis.bandWidth; + var categoryGap = parsePercent(columnsOnAxis.categoryGap, bandWidth); + var barGapPercent = parsePercent(columnsOnAxis.gap, 1); + + var remainedWidth = columnsOnAxis.remainedWidth; + var autoWidthCount = columnsOnAxis.autoWidthCount; + var autoWidth = (remainedWidth - categoryGap) + / (autoWidthCount + (autoWidthCount - 1) * barGapPercent); + autoWidth = Math.max(autoWidth, 0); + + // Find if any auto calculated bar exceeded maxBarWidth + zrUtil.each(stacks, function (column, stack) { + var maxWidth = column.maxWidth; + if (maxWidth && maxWidth < autoWidth) { + maxWidth = Math.min(maxWidth, remainedWidth); + if (column.width) { + maxWidth = Math.min(maxWidth, column.width); + } + remainedWidth -= maxWidth; + column.width = maxWidth; + autoWidthCount--; + } + }); + + // Recalculate width again + autoWidth = (remainedWidth - categoryGap) + / (autoWidthCount + (autoWidthCount - 1) * barGapPercent); + autoWidth = Math.max(autoWidth, 0); + + var widthSum = 0; + var lastColumn; + zrUtil.each(stacks, function (column, idx) { + if (!column.width) { + column.width = autoWidth; + } + lastColumn = column; + widthSum += column.width * (1 + barGapPercent); + }); + if (lastColumn) { + widthSum -= lastColumn.width * barGapPercent; + } + + var offset = -widthSum / 2; + zrUtil.each(stacks, function (column, stackId) { + result[coordSysName][stackId] = result[coordSysName][stackId] || { + offset: offset, + width: column.width + }; + + offset += column.width * (1 + barGapPercent); + }); + }); + + return result; + } + + /** + * @param {string} seriesType + * @param {module:echarts/model/Global} ecModel + * @param {module:echarts/ExtensionAPI} api + */ + function barLayoutGrid(seriesType, ecModel, api) { + + var barWidthAndOffset = calBarWidthAndOffset( + zrUtil.filter( + ecModel.getSeriesByType(seriesType), + function (seriesModel) { + return !ecModel.isSeriesFiltered(seriesModel) + && seriesModel.coordinateSystem + && seriesModel.coordinateSystem.type === 'cartesian2d'; + } + ) + ); + + var lastStackCoords = {}; + var lastStackCoordsOrigin = {}; + + ecModel.eachSeriesByType(seriesType, function (seriesModel) { + + // Check series coordinate, do layout for cartesian2d only + if (seriesModel.coordinateSystem.type !== 'cartesian2d') { + return; + } + + var data = seriesModel.getData(); + var cartesian = seriesModel.coordinateSystem; + var baseAxis = cartesian.getBaseAxis(); + + var stackId = getSeriesStackId(seriesModel); + var columnLayoutInfo = barWidthAndOffset[getAxisKey(baseAxis)][stackId]; + var columnOffset = columnLayoutInfo.offset; + var columnWidth = columnLayoutInfo.width; + var valueAxis = cartesian.getOtherAxis(baseAxis); + + var barMinHeight = seriesModel.get('barMinHeight') || 0; + + var valueAxisStart = baseAxis.onZero + ? valueAxis.toGlobalCoord(valueAxis.dataToCoord(0)) + : valueAxis.getGlobalExtent()[0]; + + var coords = cartesian.dataToPoints(data, true); + lastStackCoords[stackId] = lastStackCoords[stackId] || []; + lastStackCoordsOrigin[stackId] = lastStackCoordsOrigin[stackId] || []; // Fix #4243 + + data.setLayout({ + offset: columnOffset, + size: columnWidth + }); + + data.each(valueAxis.dim, function (value, idx) { + if (isNaN(value)) { + return; + } + + if (!lastStackCoords[stackId][idx]) { + lastStackCoords[stackId][idx] = { + p: valueAxisStart, // Positive stack + n: valueAxisStart // Negative stack + }; + lastStackCoordsOrigin[stackId][idx] = { + p: valueAxisStart, // Positive stack + n: valueAxisStart // Negative stack + }; + } + var sign = value >= 0 ? 'p' : 'n'; + var coord = coords[idx]; + var lastCoord = lastStackCoords[stackId][idx][sign]; + var lastCoordOrigin = lastStackCoordsOrigin[stackId][idx][sign]; + var x; + var y; + var width; + var height; + + if (valueAxis.isHorizontal()) { + x = lastCoord; + y = coord[1] + columnOffset; + width = coord[0] - lastCoordOrigin; + height = columnWidth; + + lastStackCoordsOrigin[stackId][idx][sign] += width; + if (Math.abs(width) < barMinHeight) { + width = (width < 0 ? -1 : 1) * barMinHeight; + } + lastStackCoords[stackId][idx][sign] += width; + } + else { + x = coord[0] + columnOffset; + y = lastCoord; + width = columnWidth; + height = coord[1] - lastCoordOrigin; + + lastStackCoordsOrigin[stackId][idx][sign] += height; + if (Math.abs(height) < barMinHeight) { + // Include zero to has a positive bar + height = (height <= 0 ? -1 : 1) * barMinHeight; + } + lastStackCoords[stackId][idx][sign] += height; + } + + data.setItemLayout(idx, { + x: x, + y: y, + width: width, + height: height + }); + }, true); + + }, this); + } + + barLayoutGrid.getLayoutOnAxis = getLayoutOnAxis; + + module.exports = barLayoutGrid; + + +/***/ }, +/* 146 */ +/***/ function(module, exports, __webpack_require__) { + + + + var zrUtil = __webpack_require__(4); + var echarts = __webpack_require__(1); + + __webpack_require__(147); + __webpack_require__(149); + + __webpack_require__(150)('pie', [{ + type: 'pieToggleSelect', + event: 'pieselectchanged', + method: 'toggleSelected' + }, { + type: 'pieSelect', + event: 'pieselected', + method: 'select' + }, { + type: 'pieUnSelect', + event: 'pieunselected', + method: 'unSelect' + }]); + + echarts.registerVisual(zrUtil.curry(__webpack_require__(151), 'pie')); + + echarts.registerLayout(zrUtil.curry( + __webpack_require__(152), 'pie' + )); + + echarts.registerProcessor(zrUtil.curry(__webpack_require__(154), 'pie')); + + +/***/ }, +/* 147 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + + var List = __webpack_require__(98); + var zrUtil = __webpack_require__(4); + var modelUtil = __webpack_require__(5); + var numberUtil = __webpack_require__(7); + var completeDimensions = __webpack_require__(110); + + var dataSelectableMixin = __webpack_require__(148); + + var PieSeries = __webpack_require__(1).extendSeriesModel({ + + type: 'series.pie', + + // Overwrite + init: function (option) { + PieSeries.superApply(this, 'init', arguments); + + // Enable legend selection for each data item + // Use a function instead of direct access because data reference may changed + this.legendDataProvider = function () { + return this.getRawData(); + }; + + this.updateSelectedMap(option.data); + + this._defaultLabelLine(option); + }, + + // Overwrite + mergeOption: function (newOption) { + PieSeries.superCall(this, 'mergeOption', newOption); + this.updateSelectedMap(this.option.data); + }, + + getInitialData: function (option, ecModel) { + var dimensions = completeDimensions(['value'], option.data); + var list = new List(dimensions, this); + list.initData(option.data); + return list; + }, + + // Overwrite + getDataParams: function (dataIndex) { + var data = this.getData(); + var params = PieSeries.superCall(this, 'getDataParams', dataIndex); + // FIXME toFixed? + + var valueList = []; + data.each('value', function (value) { + valueList.push(value); + }); + + params.percent = numberUtil.getPercentWithPrecision( + valueList, + dataIndex, + data.hostModel.get('percentPrecision') + ); + + params.$vars.push('percent'); + return params; + }, + + _defaultLabelLine: function (option) { + // Extend labelLine emphasis + modelUtil.defaultEmphasis(option.labelLine, ['show']); + + var labelLineNormalOpt = option.labelLine.normal; + var labelLineEmphasisOpt = option.labelLine.emphasis; + // Not show label line if `label.normal.show = false` + labelLineNormalOpt.show = labelLineNormalOpt.show + && option.label.normal.show; + labelLineEmphasisOpt.show = labelLineEmphasisOpt.show + && option.label.emphasis.show; + }, + + defaultOption: { + zlevel: 0, + z: 2, + legendHoverLink: true, + + hoverAnimation: true, + // 默认全局居中 + center: ['50%', '50%'], + radius: [0, '75%'], + // 默认顺时针 + clockwise: true, + startAngle: 90, + // 最小角度改为0 + minAngle: 0, + // 选中是扇区偏移量 + selectedOffset: 10, + + // If use strategy to avoid label overlapping + avoidLabelOverlap: true, + // 选择模式,默认关闭,可选single,multiple + // selectedMode: false, + // 南丁格尔玫瑰图模式,'radius'(半径) | 'area'(面积) + // roseType: null, + + percentPrecision: 2, + + // If still show when all data zero. + stillShowZeroSum: true, + + // cursor: null, + + label: { + normal: { + // If rotate around circle + rotate: false, + show: true, + // 'outer', 'inside', 'center' + position: 'outer' + // formatter: 标签文本格式器,同Tooltip.formatter,不支持异步回调 + // textStyle: null // 默认使用全局文本样式,详见TEXTSTYLE + // distance: 当position为inner时有效,为label位置到圆心的距离与圆半径(环状图为内外半径和)的比例系数 + }, + emphasis: {} + }, + // Enabled when label.normal.position is 'outer' + labelLine: { + normal: { + show: true, + // 引导线两段中的第一段长度 + length: 15, + // 引导线两段中的第二段长度 + length2: 15, + smooth: false, + lineStyle: { + // color: 各异, + width: 1, + type: 'solid' + } + } + }, + itemStyle: { + normal: { + borderWidth: 1 + }, + emphasis: {} + }, + + // Animation type canbe expansion, scale + animationType: 'expansion', + + animationEasing: 'cubicOut', + + data: [] + } + }); + + zrUtil.mixin(PieSeries, dataSelectableMixin); + + module.exports = PieSeries; + + +/***/ }, +/* 148 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * Data selectable mixin for chart series. + * To eanble data select, option of series must have `selectedMode`. + * And each data item will use `selected` to toggle itself selected status + * + * @module echarts/chart/helper/DataSelectable + */ + + + var zrUtil = __webpack_require__(4); + + module.exports = { + + updateSelectedMap: function (targetList) { + this._selectTargetMap = zrUtil.reduce(targetList || [], function (targetMap, target) { + targetMap.set(target.name, target); + return targetMap; + }, zrUtil.createHashMap()); + }, + /** + * @param {string} name + */ + // PENGING If selectedMode is null ? + select: function (name) { + var targetMap = this._selectTargetMap; + var target = targetMap.get(name); + var selectedMode = this.get('selectedMode'); + if (selectedMode === 'single') { + targetMap.each(function (target) { + target.selected = false; + }); + } + target && (target.selected = true); + }, + + /** + * @param {string} name + */ + unSelect: function (name) { + var target = this._selectTargetMap.get(name); + // var selectedMode = this.get('selectedMode'); + // selectedMode !== 'single' && target && (target.selected = false); + target && (target.selected = false); + }, + + /** + * @param {string} name + */ + toggleSelected: function (name) { + var target = this._selectTargetMap.get(name); + if (target != null) { + this[target.selected ? 'unSelect' : 'select'](name); + return target.selected; + } + }, + + /** + * @param {string} name + */ + isSelected: function (name) { + var target = this._selectTargetMap.get(name); + return target && target.selected; + } + }; + + +/***/ }, +/* 149 */ +/***/ function(module, exports, __webpack_require__) { + + + + var graphic = __webpack_require__(18); + var zrUtil = __webpack_require__(4); + + /** + * @param {module:echarts/model/Series} seriesModel + * @param {boolean} hasAnimation + * @inner + */ + function updateDataSelected(uid, seriesModel, hasAnimation, api) { + var data = seriesModel.getData(); + var dataIndex = this.dataIndex; + var name = data.getName(dataIndex); + var selectedOffset = seriesModel.get('selectedOffset'); + + api.dispatchAction({ + type: 'pieToggleSelect', + from: uid, + name: name, + seriesId: seriesModel.id + }); + + data.each(function (idx) { + toggleItemSelected( + data.getItemGraphicEl(idx), + data.getItemLayout(idx), + seriesModel.isSelected(data.getName(idx)), + selectedOffset, + hasAnimation + ); + }); + } + + /** + * @param {module:zrender/graphic/Sector} el + * @param {Object} layout + * @param {boolean} isSelected + * @param {number} selectedOffset + * @param {boolean} hasAnimation + * @inner + */ + function toggleItemSelected(el, layout, isSelected, selectedOffset, hasAnimation) { + var midAngle = (layout.startAngle + layout.endAngle) / 2; + + var dx = Math.cos(midAngle); + var dy = Math.sin(midAngle); + + var offset = isSelected ? selectedOffset : 0; + var position = [dx * offset, dy * offset]; + + hasAnimation + // animateTo will stop revious animation like update transition + ? el.animate() + .when(200, { + position: position + }) + .start('bounceOut') + : el.attr('position', position); + } + + /** + * Piece of pie including Sector, Label, LabelLine + * @constructor + * @extends {module:zrender/graphic/Group} + */ + function PiePiece(data, idx) { + + graphic.Group.call(this); + + var sector = new graphic.Sector({ + z2: 2 + }); + var polyline = new graphic.Polyline(); + var text = new graphic.Text(); + this.add(sector); + this.add(polyline); + this.add(text); + + this.updateData(data, idx, true); + + // Hover to change label and labelLine + function onEmphasis() { + polyline.ignore = polyline.hoverIgnore; + text.ignore = text.hoverIgnore; + } + function onNormal() { + polyline.ignore = polyline.normalIgnore; + text.ignore = text.normalIgnore; + } + this.on('emphasis', onEmphasis) + .on('normal', onNormal) + .on('mouseover', onEmphasis) + .on('mouseout', onNormal); + } + + var piePieceProto = PiePiece.prototype; + + function getLabelStyle(data, idx, state, labelModel, labelPosition) { + var textStyleModel = labelModel.getModel('textStyle'); + var isLabelInside = labelPosition === 'inside' || labelPosition === 'inner'; + return { + fill: textStyleModel.getTextColor() + || (isLabelInside ? '#fff' : data.getItemVisual(idx, 'color')), + opacity: data.getItemVisual(idx, 'opacity'), + textFont: textStyleModel.getFont(), + text: zrUtil.retrieve( + data.hostModel.getFormattedLabel(idx, state), data.getName(idx) + ) + }; + } + + piePieceProto.updateData = function (data, idx, firstCreate) { + + var sector = this.childAt(0); + + var seriesModel = data.hostModel; + var itemModel = data.getItemModel(idx); + var layout = data.getItemLayout(idx); + var sectorShape = zrUtil.extend({}, layout); + sectorShape.label = null; + + if (firstCreate) { + sector.setShape(sectorShape); + + var animationType = seriesModel.getShallow('animationType'); + if (animationType === 'scale') { + sector.shape.r = layout.r0; + graphic.initProps(sector, { + shape: { + r: layout.r + } + }, seriesModel, idx); + } + // Expansion + else { + sector.shape.endAngle = layout.startAngle; + graphic.updateProps(sector, { + shape: { + endAngle: layout.endAngle + } + }, seriesModel, idx); + } + + } + else { + graphic.updateProps(sector, { + shape: sectorShape + }, seriesModel, idx); + } + + // Update common style + var itemStyleModel = itemModel.getModel('itemStyle'); + var visualColor = data.getItemVisual(idx, 'color'); + + sector.useStyle( + zrUtil.defaults( + { + lineJoin: 'bevel', + fill: visualColor + }, + itemStyleModel.getModel('normal').getItemStyle() + ) + ); + sector.hoverStyle = itemStyleModel.getModel('emphasis').getItemStyle(); + + var cursorStyle = itemModel.getShallow('cursor'); + cursorStyle && sector.attr('cursor', cursorStyle); + + // Toggle selected + toggleItemSelected( + this, + data.getItemLayout(idx), + itemModel.get('selected'), + seriesModel.get('selectedOffset'), + seriesModel.get('animation') + ); + + function onEmphasis() { + // Sector may has animation of updating data. Force to move to the last frame + // Or it may stopped on the wrong shape + sector.stopAnimation(true); + sector.animateTo({ + shape: { + r: layout.r + 10 + } + }, 300, 'elasticOut'); + } + function onNormal() { + sector.stopAnimation(true); + sector.animateTo({ + shape: { + r: layout.r + } + }, 300, 'elasticOut'); + } + sector.off('mouseover').off('mouseout').off('emphasis').off('normal'); + if (itemModel.get('hoverAnimation') && seriesModel.isAnimationEnabled()) { + sector + .on('mouseover', onEmphasis) + .on('mouseout', onNormal) + .on('emphasis', onEmphasis) + .on('normal', onNormal); + } + + this._updateLabel(data, idx); + + graphic.setHoverStyle(this); + }; + + piePieceProto._updateLabel = function (data, idx) { + + var labelLine = this.childAt(1); + var labelText = this.childAt(2); + + var seriesModel = data.hostModel; + var itemModel = data.getItemModel(idx); + var layout = data.getItemLayout(idx); + var labelLayout = layout.label; + var visualColor = data.getItemVisual(idx, 'color'); + + graphic.updateProps(labelLine, { + shape: { + points: labelLayout.linePoints || [ + [labelLayout.x, labelLayout.y], [labelLayout.x, labelLayout.y], [labelLayout.x, labelLayout.y] + ] + } + }, seriesModel, idx); + + graphic.updateProps(labelText, { + style: { + x: labelLayout.x, + y: labelLayout.y + } + }, seriesModel, idx); + labelText.attr({ + style: { + textVerticalAlign: labelLayout.verticalAlign, + textAlign: labelLayout.textAlign, + textFont: labelLayout.font + }, + rotation: labelLayout.rotation, + origin: [labelLayout.x, labelLayout.y], + z2: 10 + }); + + var labelModel = itemModel.getModel('label.normal'); + var labelHoverModel = itemModel.getModel('label.emphasis'); + var labelLineModel = itemModel.getModel('labelLine.normal'); + var labelLineHoverModel = itemModel.getModel('labelLine.emphasis'); + var labelPosition = labelModel.get('position') || labelHoverModel.get('position'); + + labelText.setStyle(getLabelStyle(data, idx, 'normal', labelModel, labelPosition)); + + labelText.ignore = labelText.normalIgnore = !labelModel.get('show'); + labelText.hoverIgnore = !labelHoverModel.get('show'); + + labelLine.ignore = labelLine.normalIgnore = !labelLineModel.get('show'); + labelLine.hoverIgnore = !labelLineHoverModel.get('show'); + + // Default use item visual color + labelLine.setStyle({ + stroke: visualColor, + opacity: data.getItemVisual(idx, 'opacity') + }); + labelLine.setStyle(labelLineModel.getModel('lineStyle').getLineStyle()); + + labelText.hoverStyle = getLabelStyle(data, idx, 'emphasis', labelHoverModel, labelPosition); + labelLine.hoverStyle = labelLineHoverModel.getModel('lineStyle').getLineStyle(); + + var smooth = labelLineModel.get('smooth'); + if (smooth && smooth === true) { + smooth = 0.4; + } + labelLine.setShape({ + smooth: smooth + }); + }; + + zrUtil.inherits(PiePiece, graphic.Group); + + + // Pie view + var Pie = __webpack_require__(80).extend({ + + type: 'pie', + + init: function () { + var sectorGroup = new graphic.Group(); + this._sectorGroup = sectorGroup; + }, + + render: function (seriesModel, ecModel, api, payload) { + if (payload && (payload.from === this.uid)) { + return; + } + + var data = seriesModel.getData(); + var oldData = this._data; + var group = this.group; + + var hasAnimation = ecModel.get('animation'); + var isFirstRender = !oldData; + var animationType = seriesModel.get('animationType'); + + var onSectorClick = zrUtil.curry( + updateDataSelected, this.uid, seriesModel, hasAnimation, api + ); + + var selectedMode = seriesModel.get('selectedMode'); + + data.diff(oldData) + .add(function (idx) { + var piePiece = new PiePiece(data, idx); + // Default expansion animation + if (isFirstRender && animationType !== 'scale') { + piePiece.eachChild(function (child) { + child.stopAnimation(true); + }); + } + + selectedMode && piePiece.on('click', onSectorClick); + + data.setItemGraphicEl(idx, piePiece); + + group.add(piePiece); + }) + .update(function (newIdx, oldIdx) { + var piePiece = oldData.getItemGraphicEl(oldIdx); + + piePiece.updateData(data, newIdx); + + piePiece.off('click'); + selectedMode && piePiece.on('click', onSectorClick); + group.add(piePiece); + data.setItemGraphicEl(newIdx, piePiece); + }) + .remove(function (idx) { + var piePiece = oldData.getItemGraphicEl(idx); + group.remove(piePiece); + }) + .execute(); + + if ( + hasAnimation && isFirstRender && data.count() > 0 + // Default expansion animation + && animationType !== 'scale' + ) { + var shape = data.getItemLayout(0); + var r = Math.max(api.getWidth(), api.getHeight()) / 2; + + var removeClipPath = zrUtil.bind(group.removeClipPath, group); + group.setClipPath(this._createClipPath( + shape.cx, shape.cy, r, shape.startAngle, shape.clockwise, removeClipPath, seriesModel + )); + } + + this._data = data; + }, + + dispose: function () {}, + + _createClipPath: function ( + cx, cy, r, startAngle, clockwise, cb, seriesModel + ) { + var clipPath = new graphic.Sector({ + shape: { + cx: cx, + cy: cy, + r0: 0, + r: r, + startAngle: startAngle, + endAngle: startAngle, + clockwise: clockwise + } + }); + + graphic.initProps(clipPath, { + shape: { + endAngle: startAngle + (clockwise ? 1 : -1) * Math.PI * 2 + } + }, seriesModel, cb); + + return clipPath; + }, + + /** + * @implement + */ + containPoint: function (point, seriesModel) { + var data = seriesModel.getData(); + var itemLayout = data.getItemLayout(0); + if (itemLayout) { + var dx = point[0] - itemLayout.cx; + var dy = point[1] - itemLayout.cy; + var radius = Math.sqrt(dx * dx + dy * dy); + return radius <= itemLayout.r && radius >= itemLayout.r0; + } + } + + }); + + module.exports = Pie; + + +/***/ }, +/* 150 */ +/***/ function(module, exports, __webpack_require__) { + + + var echarts = __webpack_require__(1); + var zrUtil = __webpack_require__(4); + module.exports = function (seriesType, actionInfos) { + zrUtil.each(actionInfos, function (actionInfo) { + actionInfo.update = 'updateView'; + /** + * @payload + * @property {string} seriesName + * @property {string} name + */ + echarts.registerAction(actionInfo, function (payload, ecModel) { + var selected = {}; + ecModel.eachComponent( + {mainType: 'series', subType: seriesType, query: payload}, + function (seriesModel) { + if (seriesModel[actionInfo.method]) { + seriesModel[actionInfo.method](payload.name); + } + var data = seriesModel.getData(); + // Create selected map + data.each(function (idx) { + var name = data.getName(idx); + selected[name] = seriesModel.isSelected(name) || false; + }); + } + ); + return { + name: payload.name, + selected: selected + }; + }); + }); + }; + + +/***/ }, +/* 151 */ +/***/ function(module, exports) { + + // Pick color from palette for each data item. + // Applicable for charts that require applying color palette + // in data level (like pie, funnel, chord). + + + module.exports = function (seriesType, ecModel) { + // Pie and funnel may use diferrent scope + var paletteScope = {}; + ecModel.eachRawSeriesByType(seriesType, function (seriesModel) { + var dataAll = seriesModel.getRawData(); + var idxMap = {}; + if (!ecModel.isSeriesFiltered(seriesModel)) { + var data = seriesModel.getData(); + data.each(function (idx) { + var rawIdx = data.getRawIndex(idx); + idxMap[rawIdx] = idx; + }); + dataAll.each(function (rawIdx) { + var filteredIdx = idxMap[rawIdx]; + + // If series.itemStyle.normal.color is a function. itemVisual may be encoded + var singleDataColor = filteredIdx != null + && data.getItemVisual(filteredIdx, 'color', true); + + if (!singleDataColor) { + // FIXME Performance + var itemModel = dataAll.getItemModel(rawIdx); + var color = itemModel.get('itemStyle.normal.color') + || seriesModel.getColorFromPalette(dataAll.getName(rawIdx), paletteScope); + // Legend may use the visual info in data before processed + dataAll.setItemVisual(rawIdx, 'color', color); + + // Data is not filtered + if (filteredIdx != null) { + data.setItemVisual(filteredIdx, 'color', color); + } + } + else { + // Set data all color for legend + dataAll.setItemVisual(rawIdx, 'color', singleDataColor); + } + }); + } + }); + }; + + +/***/ }, +/* 152 */ +/***/ function(module, exports, __webpack_require__) { + + + + var numberUtil = __webpack_require__(7); + var parsePercent = numberUtil.parsePercent; + var labelLayout = __webpack_require__(153); + var zrUtil = __webpack_require__(4); + + var PI2 = Math.PI * 2; + var RADIAN = Math.PI / 180; + + module.exports = function (seriesType, ecModel, api, payload) { + ecModel.eachSeriesByType(seriesType, function (seriesModel) { + var center = seriesModel.get('center'); + var radius = seriesModel.get('radius'); + + if (!zrUtil.isArray(radius)) { + radius = [0, radius]; + } + if (!zrUtil.isArray(center)) { + center = [center, center]; + } + + var width = api.getWidth(); + var height = api.getHeight(); + var size = Math.min(width, height); + var cx = parsePercent(center[0], width); + var cy = parsePercent(center[1], height); + var r0 = parsePercent(radius[0], size / 2); + var r = parsePercent(radius[1], size / 2); + + var data = seriesModel.getData(); + + var startAngle = -seriesModel.get('startAngle') * RADIAN; + + var minAngle = seriesModel.get('minAngle') * RADIAN; + + var validDataCount = 0; + data.each('value', function (value) { + !isNaN(value) && validDataCount++; + }); + + var sum = data.getSum('value'); + // Sum may be 0 + var unitRadian = Math.PI / (sum || validDataCount) * 2; + + var clockwise = seriesModel.get('clockwise'); + + var roseType = seriesModel.get('roseType'); + var stillShowZeroSum = seriesModel.get('stillShowZeroSum'); + + // [0...max] + var extent = data.getDataExtent('value'); + extent[0] = 0; + + // In the case some sector angle is smaller than minAngle + var restAngle = PI2; + var valueSumLargerThanMinAngle = 0; + + var currentAngle = startAngle; + var dir = clockwise ? 1 : -1; + + data.each('value', function (value, idx) { + var angle; + if (isNaN(value)) { + data.setItemLayout(idx, { + angle: NaN, + startAngle: NaN, + endAngle: NaN, + clockwise: clockwise, + cx: cx, + cy: cy, + r0: r0, + r: roseType + ? NaN + : r + }); + return; + } + + // FIXME 兼容 2.0 但是 roseType 是 area 的时候才是这样? + if (roseType !== 'area') { + angle = (sum === 0 && stillShowZeroSum) + ? unitRadian : (value * unitRadian); + } + else { + angle = PI2 / validDataCount; + } + + if (angle < minAngle) { + angle = minAngle; + restAngle -= minAngle; + } + else { + valueSumLargerThanMinAngle += value; + } + + var endAngle = currentAngle + dir * angle; + data.setItemLayout(idx, { + angle: angle, + startAngle: currentAngle, + endAngle: endAngle, + clockwise: clockwise, + cx: cx, + cy: cy, + r0: r0, + r: roseType + ? numberUtil.linearMap(value, extent, [r0, r]) + : r + }); + + currentAngle = endAngle; + }, true); + + // Some sector is constrained by minAngle + // Rest sectors needs recalculate angle + if (restAngle < PI2 && validDataCount) { + // Average the angle if rest angle is not enough after all angles is + // Constrained by minAngle + if (restAngle <= 1e-3) { + var angle = PI2 / validDataCount; + data.each('value', function (value, idx) { + if (!isNaN(value)) { + var layout = data.getItemLayout(idx); + layout.angle = angle; + layout.startAngle = startAngle + dir * idx * angle; + layout.endAngle = startAngle + dir * (idx + 1) * angle; + } + }); + } + else { + unitRadian = restAngle / valueSumLargerThanMinAngle; + currentAngle = startAngle; + data.each('value', function (value, idx) { + if (!isNaN(value)) { + var layout = data.getItemLayout(idx); + var angle = layout.angle === minAngle + ? minAngle : value * unitRadian; + layout.startAngle = currentAngle; + layout.endAngle = currentAngle + dir * angle; + currentAngle += dir * angle; + } + }); + } + } + + labelLayout(seriesModel, r, width, height); + }); + }; + + +/***/ }, +/* 153 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + // FIXME emphasis label position is not same with normal label position + + + var textContain = __webpack_require__(8); + + function adjustSingleSide(list, cx, cy, r, dir, viewWidth, viewHeight) { + list.sort(function (a, b) { + return a.y - b.y; + }); + + // 压 + function shiftDown(start, end, delta, dir) { + for (var j = start; j < end; j++) { + list[j].y += delta; + if (j > start + && j + 1 < end + && list[j + 1].y > list[j].y + list[j].height + ) { + shiftUp(j, delta / 2); + return; + } + } + + shiftUp(end - 1, delta / 2); + } + + // 弹 + function shiftUp(end, delta) { + for (var j = end; j >= 0; j--) { + list[j].y -= delta; + if (j > 0 + && list[j].y > list[j - 1].y + list[j - 1].height + ) { + break; + } + } + } + + function changeX(list, isDownList, cx, cy, r, dir) { + var lastDeltaX = dir > 0 + ? isDownList // 右侧 + ? Number.MAX_VALUE // 下 + : 0 // 上 + : isDownList // 左侧 + ? Number.MAX_VALUE // 下 + : 0; // 上 + + for (var i = 0, l = list.length; i < l; i++) { + // Not change x for center label + if (list[i].position === 'center') { + continue; + } + var deltaY = Math.abs(list[i].y - cy); + var length = list[i].len; + var length2 = list[i].len2; + var deltaX = (deltaY < r + length) + ? Math.sqrt( + (r + length + length2) * (r + length + length2) + - deltaY * deltaY + ) + : Math.abs(list[i].x - cx); + if (isDownList && deltaX >= lastDeltaX) { + // 右下,左下 + deltaX = lastDeltaX - 10; + } + if (!isDownList && deltaX <= lastDeltaX) { + // 右上,左上 + deltaX = lastDeltaX + 10; + } + + list[i].x = cx + deltaX * dir; + lastDeltaX = deltaX; + } + } + + var lastY = 0; + var delta; + var len = list.length; + var upList = []; + var downList = []; + for (var i = 0; i < len; i++) { + delta = list[i].y - lastY; + if (delta < 0) { + shiftDown(i, len, -delta, dir); + } + lastY = list[i].y + list[i].height; + } + if (viewHeight - lastY < 0) { + shiftUp(len - 1, lastY - viewHeight); + } + for (var i = 0; i < len; i++) { + if (list[i].y >= cy) { + downList.push(list[i]); + } + else { + upList.push(list[i]); + } + } + changeX(upList, false, cx, cy, r, dir); + changeX(downList, true, cx, cy, r, dir); + } + + function avoidOverlap(labelLayoutList, cx, cy, r, viewWidth, viewHeight) { + var leftList = []; + var rightList = []; + for (var i = 0; i < labelLayoutList.length; i++) { + if (labelLayoutList[i].x < cx) { + leftList.push(labelLayoutList[i]); + } + else { + rightList.push(labelLayoutList[i]); + } + } + + adjustSingleSide(rightList, cx, cy, r, 1, viewWidth, viewHeight); + adjustSingleSide(leftList, cx, cy, r, -1, viewWidth, viewHeight); + + for (var i = 0; i < labelLayoutList.length; i++) { + var linePoints = labelLayoutList[i].linePoints; + if (linePoints) { + var dist = linePoints[1][0] - linePoints[2][0]; + if (labelLayoutList[i].x < cx) { + linePoints[2][0] = labelLayoutList[i].x + 3; + } + else { + linePoints[2][0] = labelLayoutList[i].x - 3; + } + linePoints[1][1] = linePoints[2][1] = labelLayoutList[i].y; + linePoints[1][0] = linePoints[2][0] + dist; + } + } + } + + module.exports = function (seriesModel, r, viewWidth, viewHeight) { + var data = seriesModel.getData(); + var labelLayoutList = []; + var cx; + var cy; + var hasLabelRotate = false; + + data.each(function (idx) { + var layout = data.getItemLayout(idx); + + var itemModel = data.getItemModel(idx); + var labelModel = itemModel.getModel('label.normal'); + // Use position in normal or emphasis + var labelPosition = labelModel.get('position') || itemModel.get('label.emphasis.position'); + + var labelLineModel = itemModel.getModel('labelLine.normal'); + var labelLineLen = labelLineModel.get('length'); + var labelLineLen2 = labelLineModel.get('length2'); + + var midAngle = (layout.startAngle + layout.endAngle) / 2; + var dx = Math.cos(midAngle); + var dy = Math.sin(midAngle); + + var textX; + var textY; + var linePoints; + var textAlign; + + cx = layout.cx; + cy = layout.cy; + + var isLabelInside = labelPosition === 'inside' || labelPosition === 'inner'; + if (labelPosition === 'center') { + textX = layout.cx; + textY = layout.cy; + textAlign = 'center'; + } + else { + var x1 = (isLabelInside ? (layout.r + layout.r0) / 2 * dx : layout.r * dx) + cx; + var y1 = (isLabelInside ? (layout.r + layout.r0) / 2 * dy : layout.r * dy) + cy; + + textX = x1 + dx * 3; + textY = y1 + dy * 3; + + if (!isLabelInside) { + // For roseType + var x2 = x1 + dx * (labelLineLen + r - layout.r); + var y2 = y1 + dy * (labelLineLen + r - layout.r); + var x3 = x2 + ((dx < 0 ? -1 : 1) * labelLineLen2); + var y3 = y2; + + textX = x3 + (dx < 0 ? -5 : 5); + textY = y3; + linePoints = [[x1, y1], [x2, y2], [x3, y3]]; + } + + textAlign = isLabelInside ? 'center' : (dx > 0 ? 'left' : 'right'); + } + var font = labelModel.getModel('textStyle').getFont(); + + var labelRotate = labelModel.get('rotate') + ? (dx < 0 ? -midAngle + Math.PI : -midAngle) : 0; + var text = seriesModel.getFormattedLabel(idx, 'normal') + || data.getName(idx); + var textRect = textContain.getBoundingRect( + text, font, textAlign, 'top' + ); + hasLabelRotate = !!labelRotate; + layout.label = { + x: textX, + y: textY, + position: labelPosition, + height: textRect.height, + len: labelLineLen, + len2: labelLineLen2, + linePoints: linePoints, + textAlign: textAlign, + verticalAlign: 'middle', + font: font, + rotation: labelRotate + }; + + // Not layout the inside label + if (!isLabelInside) { + labelLayoutList.push(layout.label); + } + }); + if (!hasLabelRotate && seriesModel.get('avoidLabelOverlap')) { + avoidOverlap(labelLayoutList, cx, cy, r, viewWidth, viewHeight); + } + }; + + +/***/ }, +/* 154 */ +/***/ function(module, exports) { + + + module.exports = function (seriesType, ecModel) { + var legendModels = ecModel.findComponents({ + mainType: 'legend' + }); + if (!legendModels || !legendModels.length) { + return; + } + ecModel.eachSeriesByType(seriesType, function (series) { + var data = series.getData(); + data.filterSelf(function (idx) { + var name = data.getName(idx); + // If in any legend component the status is not selected. + for (var i = 0; i < legendModels.length; i++) { + if (!legendModels[i].isSelected(name)) { + return false; + } + } + return true; + }, this); + }, this); + }; + + +/***/ }, +/* 155 */ +/***/ function(module, exports, __webpack_require__) { + + + + var zrUtil = __webpack_require__(4); + var echarts = __webpack_require__(1); + + __webpack_require__(156); + __webpack_require__(157); + + echarts.registerVisual(zrUtil.curry( + __webpack_require__(121), 'scatter', 'circle', null + )); + echarts.registerLayout(zrUtil.curry( + __webpack_require__(122), 'scatter' + )); + + // In case developer forget to include grid component + __webpack_require__(124); + + +/***/ }, +/* 156 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + + var createListFromArray = __webpack_require__(109); + var SeriesModel = __webpack_require__(78); + + module.exports = SeriesModel.extend({ + + type: 'series.scatter', + + dependencies: ['grid', 'polar', 'geo', 'singleAxis', 'calendar'], + + getInitialData: function (option, ecModel) { + return createListFromArray(option.data, this, ecModel); + }, + + brushSelector: 'point', + + defaultOption: { + coordinateSystem: 'cartesian2d', + zlevel: 0, + z: 2, + legendHoverLink: true, + + hoverAnimation: true, + // Cartesian coordinate system + // xAxisIndex: 0, + // yAxisIndex: 0, + + // Polar coordinate system + // polarIndex: 0, + + // Geo coordinate system + // geoIndex: 0, + + // symbol: null, // 图形类型 + symbolSize: 10, // 图形大小,半宽(半径)参数,当图形为方向或菱形则总宽度为symbolSize * 2 + // symbolRotate: null, // 图形旋转控制 + + large: false, + // Available when large is true + largeThreshold: 2000, + // cursor: null, + + // label: { + // normal: { + // show: false + // distance: 5, + // formatter: 标签文本格式器,同Tooltip.formatter,不支持异步回调 + // position: 默认自适应,水平布局为'top',垂直布局为'right',可选为 + // 'inside'|'left'|'right'|'top'|'bottom' + // textStyle: null // 默认使用全局文本样式,详见TEXTSTYLE + // } + // }, + itemStyle: { + normal: { + opacity: 0.8 + // color: 各异 + } + } + } + + }); + + +/***/ }, +/* 157 */ +/***/ function(module, exports, __webpack_require__) { + + + + var SymbolDraw = __webpack_require__(116); + var LargeSymbolDraw = __webpack_require__(158); + + __webpack_require__(1).extendChartView({ + + type: 'scatter', + + init: function () { + this._normalSymbolDraw = new SymbolDraw(); + this._largeSymbolDraw = new LargeSymbolDraw(); + }, + + render: function (seriesModel, ecModel, api) { + var data = seriesModel.getData(); + var largeSymbolDraw = this._largeSymbolDraw; + var normalSymbolDraw = this._normalSymbolDraw; + var group = this.group; + + var symbolDraw = seriesModel.get('large') && data.count() > seriesModel.get('largeThreshold') + ? largeSymbolDraw : normalSymbolDraw; + + this._symbolDraw = symbolDraw; + symbolDraw.updateData(data); + group.add(symbolDraw.group); + + group.remove( + symbolDraw === largeSymbolDraw + ? normalSymbolDraw.group : largeSymbolDraw.group + ); + }, + + updateLayout: function (seriesModel) { + this._symbolDraw.updateLayout(seriesModel); + }, + + remove: function (ecModel, api) { + this._symbolDraw && this._symbolDraw.remove(api, true); + }, + + dispose: function () {} + }); + + +/***/ }, +/* 158 */ +/***/ function(module, exports, __webpack_require__) { + + // TODO Batch by color + + + + var graphic = __webpack_require__(18); + var symbolUtil = __webpack_require__(111); + + var LargeSymbolPath = graphic.extendShape({ + + shape: { + points: null, + sizes: null + }, + + symbolProxy: null, + + buildPath: function (path, shape) { + var points = shape.points; + var sizes = shape.sizes; + + var symbolProxy = this.symbolProxy; + var symbolProxyShape = symbolProxy.shape; + for (var i = 0; i < points.length; i++) { + var pt = points[i]; + + if (isNaN(pt[0]) || isNaN(pt[1])) { + continue; + } + + var size = sizes[i]; + if (size[0] < 4) { + // Optimize for small symbol + path.rect( + pt[0] - size[0] / 2, pt[1] - size[1] / 2, + size[0], size[1] + ); + } + else { + symbolProxyShape.x = pt[0] - size[0] / 2; + symbolProxyShape.y = pt[1] - size[1] / 2; + symbolProxyShape.width = size[0]; + symbolProxyShape.height = size[1]; + + symbolProxy.buildPath(path, symbolProxyShape, true); + } + } + }, + + findDataIndex: function (x, y) { + var shape = this.shape; + var points = shape.points; + var sizes = shape.sizes; + + // Not consider transform + // Treat each element as a rect + // top down traverse + for (var i = points.length - 1; i >= 0; i--) { + var pt = points[i]; + var size = sizes[i]; + var x0 = pt[0] - size[0] / 2; + var y0 = pt[1] - size[1] / 2; + if (x >= x0 && y >= y0 && x <= x0 + size[0] && y <= y0 + size[1]) { + // i is dataIndex + return i; + } + } + + return -1; + } + }); + + function LargeSymbolDraw() { + this.group = new graphic.Group(); + + this._symbolEl = new LargeSymbolPath({ + // rectHover: true, + // cursor: 'default' + }); + } + + var largeSymbolProto = LargeSymbolDraw.prototype; + + /** + * Update symbols draw by new data + * @param {module:echarts/data/List} data + */ + largeSymbolProto.updateData = function (data) { + this.group.removeAll(); + + var symbolEl = this._symbolEl; + + var seriesModel = data.hostModel; + + symbolEl.setShape({ + points: data.mapArray(data.getItemLayout), + sizes: data.mapArray( + function (idx) { + var size = data.getItemVisual(idx, 'symbolSize'); + if (!(size instanceof Array)) { + size = [size, size]; + } + return size; + } + ) + }); + + // Create symbolProxy to build path for each data + symbolEl.symbolProxy = symbolUtil.createSymbol( + data.getVisual('symbol'), 0, 0, 0, 0 + ); + // Use symbolProxy setColor method + symbolEl.setColor = symbolEl.symbolProxy.setColor; + + symbolEl.useStyle( + seriesModel.getModel('itemStyle.normal').getItemStyle(['color']) + ); + + var visualColor = data.getVisual('color'); + if (visualColor) { + symbolEl.setColor(visualColor); + } + + // Enable tooltip + // PENDING May have performance issue when path is extremely large + symbolEl.seriesIndex = seriesModel.seriesIndex; + symbolEl.on('mousemove', function (e) { + symbolEl.dataIndex = null; + var dataIndex = symbolEl.findDataIndex(e.offsetX, e.offsetY); + if (dataIndex >= 0) { + // Provide dataIndex for tooltip + symbolEl.dataIndex = dataIndex; + } + }); + + // Add back + this.group.add(symbolEl); + }; + + largeSymbolProto.updateLayout = function (seriesModel) { + var data = seriesModel.getData(); + this._symbolEl.setShape({ + points: data.mapArray(data.getItemLayout) + }); + }; + + largeSymbolProto.remove = function () { + this.group.removeAll(); + }; + + module.exports = LargeSymbolDraw; + + +/***/ }, +/* 159 */ +/***/ function(module, exports, __webpack_require__) { + + + + var zrUtil = __webpack_require__(4); + var echarts = __webpack_require__(1); + + // Must use radar component + __webpack_require__(160); + + __webpack_require__(165); + __webpack_require__(166); + + echarts.registerVisual(zrUtil.curry(__webpack_require__(151), 'radar')); + echarts.registerVisual(zrUtil.curry( + __webpack_require__(121), 'radar', 'circle', null + )); + echarts.registerLayout(__webpack_require__(167)); + + echarts.registerProcessor( + zrUtil.curry(__webpack_require__(154), 'radar') + ); + + echarts.registerPreprocessor(__webpack_require__(168)); + + +/***/ }, +/* 160 */ +/***/ function(module, exports, __webpack_require__) { + + + + __webpack_require__(161); + __webpack_require__(163); + + __webpack_require__(164); + + +/***/ }, +/* 161 */ +/***/ function(module, exports, __webpack_require__) { + + // TODO clockwise + + + var zrUtil = __webpack_require__(4); + var IndicatorAxis = __webpack_require__(162); + var IntervalScale = __webpack_require__(104); + var numberUtil = __webpack_require__(7); + var axisHelper = __webpack_require__(101); + + function Radar(radarModel, ecModel, api) { + + this._model = radarModel; + /** + * Radar dimensions + * @type {Array.} + */ + this.dimensions = []; + + this._indicatorAxes = zrUtil.map(radarModel.getIndicatorModels(), function (indicatorModel, idx) { + var dim = 'indicator_' + idx; + var indicatorAxis = new IndicatorAxis(dim, new IntervalScale()); + indicatorAxis.name = indicatorModel.get('name'); + // Inject model and axis + indicatorAxis.model = indicatorModel; + indicatorModel.axis = indicatorAxis; + this.dimensions.push(dim); + return indicatorAxis; + }, this); + + this.resize(radarModel, api); + + /** + * @type {number} + * @readOnly + */ + this.cx; + /** + * @type {number} + * @readOnly + */ + this.cy; + /** + * @type {number} + * @readOnly + */ + this.r; + /** + * @type {number} + * @readOnly + */ + this.startAngle; + } + + Radar.prototype.getIndicatorAxes = function () { + return this._indicatorAxes; + }; + + Radar.prototype.dataToPoint = function (value, indicatorIndex) { + var indicatorAxis = this._indicatorAxes[indicatorIndex]; + + return this.coordToPoint(indicatorAxis.dataToCoord(value), indicatorIndex); + }; + + Radar.prototype.coordToPoint = function (coord, indicatorIndex) { + var indicatorAxis = this._indicatorAxes[indicatorIndex]; + var angle = indicatorAxis.angle; + var x = this.cx + coord * Math.cos(angle); + var y = this.cy - coord * Math.sin(angle); + return [x, y]; + }; + + Radar.prototype.pointToData = function (pt) { + var dx = pt[0] - this.cx; + var dy = pt[1] - this.cy; + var radius = Math.sqrt(dx * dx + dy * dy); + dx /= radius; + dy /= radius; + + var radian = Math.atan2(-dy, dx); + + // Find the closest angle + // FIXME index can calculated directly + var minRadianDiff = Infinity; + var closestAxis; + var closestAxisIdx = -1; + for (var i = 0; i < this._indicatorAxes.length; i++) { + var indicatorAxis = this._indicatorAxes[i]; + var diff = Math.abs(radian - indicatorAxis.angle); + if (diff < minRadianDiff) { + closestAxis = indicatorAxis; + closestAxisIdx = i; + minRadianDiff = diff; + } + } + + return [closestAxisIdx, +(closestAxis && closestAxis.coodToData(radius))]; + }; + + Radar.prototype.resize = function (radarModel, api) { + var center = radarModel.get('center'); + var viewWidth = api.getWidth(); + var viewHeight = api.getHeight(); + var viewSize = Math.min(viewWidth, viewHeight) / 2; + this.cx = numberUtil.parsePercent(center[0], viewWidth); + this.cy = numberUtil.parsePercent(center[1], viewHeight); + + this.startAngle = radarModel.get('startAngle') * Math.PI / 180; + + this.r = numberUtil.parsePercent(radarModel.get('radius'), viewSize); + + zrUtil.each(this._indicatorAxes, function (indicatorAxis, idx) { + indicatorAxis.setExtent(0, this.r); + var angle = (this.startAngle + idx * Math.PI * 2 / this._indicatorAxes.length); + // Normalize to [-PI, PI] + angle = Math.atan2(Math.sin(angle), Math.cos(angle)); + indicatorAxis.angle = angle; + }, this); + }; + + Radar.prototype.update = function (ecModel, api) { + var indicatorAxes = this._indicatorAxes; + var radarModel = this._model; + zrUtil.each(indicatorAxes, function (indicatorAxis) { + indicatorAxis.scale.setExtent(Infinity, -Infinity); + }); + ecModel.eachSeriesByType('radar', function (radarSeries, idx) { + if (radarSeries.get('coordinateSystem') !== 'radar' + || ecModel.getComponent('radar', radarSeries.get('radarIndex')) !== radarModel + ) { + return; + } + var data = radarSeries.getData(); + zrUtil.each(indicatorAxes, function (indicatorAxis) { + indicatorAxis.scale.unionExtentFromData(data, indicatorAxis.dim); + }); + }, this); + + var splitNumber = radarModel.get('splitNumber'); + + function increaseInterval(interval) { + var exp10 = Math.pow(10, Math.floor(Math.log(interval) / Math.LN10)); + // Increase interval + var f = interval / exp10; + if (f === 2) { + f = 5; + } + else { // f is 2 or 5 + f *= 2; + } + return f * exp10; + } + // Force all the axis fixing the maxSplitNumber. + zrUtil.each(indicatorAxes, function (indicatorAxis, idx) { + var rawExtent = axisHelper.getScaleExtent(indicatorAxis.scale, indicatorAxis.model); + axisHelper.niceScaleExtent(indicatorAxis.scale, indicatorAxis.model); + + var axisModel = indicatorAxis.model; + var scale = indicatorAxis.scale; + var fixedMin = axisModel.getMin(); + var fixedMax = axisModel.getMax(); + var interval = scale.getInterval(); + + if (fixedMin != null && fixedMax != null) { + // User set min, max, divide to get new interval + scale.setExtent(+fixedMin, +fixedMax); + scale.setInterval( + (fixedMax - fixedMin) / splitNumber + ); + } + else if (fixedMin != null) { + var max; + // User set min, expand extent on the other side + do { + max = fixedMin + interval * splitNumber; + scale.setExtent(+fixedMin, max); + // Interval must been set after extent + // FIXME + scale.setInterval(interval); + + interval = increaseInterval(interval); + } while (max < rawExtent[1] && isFinite(max) && isFinite(rawExtent[1])); + } + else if (fixedMax != null) { + var min; + // User set min, expand extent on the other side + do { + min = fixedMax - interval * splitNumber; + scale.setExtent(min, +fixedMax); + scale.setInterval(interval); + interval = increaseInterval(interval); + } while (min > rawExtent[0] && isFinite(min) && isFinite(rawExtent[0])); + } + else { + var nicedSplitNumber = scale.getTicks().length - 1; + if (nicedSplitNumber > splitNumber) { + interval = increaseInterval(interval); + } + // PENDING + var center = Math.round((rawExtent[0] + rawExtent[1]) / 2 / interval) * interval; + var halfSplitNumber = Math.round(splitNumber / 2); + scale.setExtent( + numberUtil.round(center - halfSplitNumber * interval), + numberUtil.round(center + (splitNumber - halfSplitNumber) * interval) + ); + scale.setInterval(interval); + } + }); + }; + + /** + * Radar dimensions is based on the data + * @type {Array} + */ + Radar.dimensions = []; + + Radar.create = function (ecModel, api) { + var radarList = []; + ecModel.eachComponent('radar', function (radarModel) { + var radar = new Radar(radarModel, ecModel, api); + radarList.push(radar); + radarModel.coordinateSystem = radar; + }); + ecModel.eachSeriesByType('radar', function (radarSeries) { + if (radarSeries.get('coordinateSystem') === 'radar') { + // Inject coordinate system + radarSeries.coordinateSystem = radarList[radarSeries.get('radarIndex') || 0]; + } + }); + return radarList; + }; + + __webpack_require__(76).register('radar', Radar); + module.exports = Radar; + + +/***/ }, +/* 162 */ +/***/ function(module, exports, __webpack_require__) { + + + + var zrUtil = __webpack_require__(4); + var Axis = __webpack_require__(100); + + function IndicatorAxis(dim, scale, radiusExtent) { + Axis.call(this, dim, scale, radiusExtent); + + /** + * Axis type + * - 'category' + * - 'value' + * - 'time' + * - 'log' + * @type {string} + */ + this.type = 'value'; + + this.angle = 0; + + /** + * Indicator name + * @type {string} + */ + this.name = ''; + /** + * @type {module:echarts/model/Model} + */ + this.model; + } + + zrUtil.inherits(IndicatorAxis, Axis); + + module.exports = IndicatorAxis; + + +/***/ }, +/* 163 */ +/***/ function(module, exports, __webpack_require__) { + + + + + var axisDefault = __webpack_require__(132); + var valueAxisDefault = axisDefault.valueAxis; + var Model = __webpack_require__(12); + var zrUtil = __webpack_require__(4); + + var axisModelCommonMixin = __webpack_require__(112); + + function defaultsShow(opt, show) { + return zrUtil.defaults({ + show: show + }, opt); + } + + var RadarModel = __webpack_require__(1).extendComponentModel({ + + type: 'radar', + + optionUpdated: function () { + var boundaryGap = this.get('boundaryGap'); + var splitNumber = this.get('splitNumber'); + var scale = this.get('scale'); + var axisLine = this.get('axisLine'); + var axisTick = this.get('axisTick'); + var axisLabel = this.get('axisLabel'); + var nameTextStyle = this.get('name.textStyle'); + var showName = this.get('name.show'); + var nameFormatter = this.get('name.formatter'); + var nameGap = this.get('nameGap'); + var triggerEvent = this.get('triggerEvent'); + + var indicatorModels = zrUtil.map(this.get('indicator') || [], function (indicatorOpt) { + // PENDING + if (indicatorOpt.max != null && indicatorOpt.max > 0 && !indicatorOpt.min) { + indicatorOpt.min = 0; + } + else if (indicatorOpt.min != null && indicatorOpt.min < 0 && !indicatorOpt.max) { + indicatorOpt.max = 0; + } + // Use same configuration + indicatorOpt = zrUtil.merge(zrUtil.clone(indicatorOpt), { + boundaryGap: boundaryGap, + splitNumber: splitNumber, + scale: scale, + axisLine: axisLine, + axisTick: axisTick, + axisLabel: axisLabel, + // Competitable with 2 and use text + name: indicatorOpt.text, + nameLocation: 'end', + nameGap: nameGap, + // min: 0, + nameTextStyle: nameTextStyle, + triggerEvent: triggerEvent + }, false); + if (!showName) { + indicatorOpt.name = ''; + } + if (typeof nameFormatter === 'string') { + var indName = indicatorOpt.name; + indicatorOpt.name = nameFormatter.replace('{value}', indName != null ? indName : ''); + } + else if (typeof nameFormatter === 'function') { + indicatorOpt.name = nameFormatter( + indicatorOpt.name, indicatorOpt + ); + } + var model = zrUtil.extend( + new Model(indicatorOpt, null, this.ecModel), + axisModelCommonMixin + ); + + // For triggerEvent. + model.mainType = 'radar'; + model.componentIndex = this.componentIndex; + + return model; + }, this); + + this.getIndicatorModels = function () { + return indicatorModels; + }; + }, + + defaultOption: { + + zlevel: 0, + + z: 0, + + center: ['50%', '50%'], + + radius: '75%', + + startAngle: 90, + + name: { + show: true + // formatter: null + // textStyle: {} + }, + + boundaryGap: [0, 0], + + splitNumber: 5, + + nameGap: 15, + + scale: false, + + // Polygon or circle + shape: 'polygon', + + axisLine: zrUtil.merge( + { + lineStyle: { + color: '#bbb' + } + }, + valueAxisDefault.axisLine + ), + axisLabel: defaultsShow(valueAxisDefault.axisLabel, false), + axisTick: defaultsShow(valueAxisDefault.axisTick, false), + splitLine: defaultsShow(valueAxisDefault.splitLine, true), + splitArea: defaultsShow(valueAxisDefault.splitArea, true), + + // {text, min, max} + indicator: [] + } + }); + + module.exports = RadarModel; + + +/***/ }, +/* 164 */ +/***/ function(module, exports, __webpack_require__) { + + + + var AxisBuilder = __webpack_require__(135); + var zrUtil = __webpack_require__(4); + var graphic = __webpack_require__(18); + + var axisBuilderAttrs = [ + 'axisLine', 'axisLabel', 'axisTick', 'axisName' + ]; + + module.exports = __webpack_require__(1).extendComponentView({ + + type: 'radar', + + render: function (radarModel, ecModel, api) { + var group = this.group; + group.removeAll(); + + this._buildAxes(radarModel); + this._buildSplitLineAndArea(radarModel); + }, + + _buildAxes: function (radarModel) { + var radar = radarModel.coordinateSystem; + var indicatorAxes = radar.getIndicatorAxes(); + var axisBuilders = zrUtil.map(indicatorAxes, function (indicatorAxis) { + var axisBuilder = new AxisBuilder(indicatorAxis.model, { + position: [radar.cx, radar.cy], + rotation: indicatorAxis.angle, + labelDirection: -1, + tickDirection: -1, + nameDirection: 1 + }); + return axisBuilder; + }); + + zrUtil.each(axisBuilders, function (axisBuilder) { + zrUtil.each(axisBuilderAttrs, axisBuilder.add, axisBuilder); + this.group.add(axisBuilder.getGroup()); + }, this); + }, + + _buildSplitLineAndArea: function (radarModel) { + var radar = radarModel.coordinateSystem; + var indicatorAxes = radar.getIndicatorAxes(); + if (!indicatorAxes.length) { + return; + } + var shape = radarModel.get('shape'); + var splitLineModel = radarModel.getModel('splitLine'); + var splitAreaModel = radarModel.getModel('splitArea'); + var lineStyleModel = splitLineModel.getModel('lineStyle'); + var areaStyleModel = splitAreaModel.getModel('areaStyle'); + + var showSplitLine = splitLineModel.get('show'); + var showSplitArea = splitAreaModel.get('show'); + var splitLineColors = lineStyleModel.get('color'); + var splitAreaColors = areaStyleModel.get('color'); + + splitLineColors = zrUtil.isArray(splitLineColors) ? splitLineColors : [splitLineColors]; + splitAreaColors = zrUtil.isArray(splitAreaColors) ? splitAreaColors : [splitAreaColors]; + + var splitLines = []; + var splitAreas = []; + + function getColorIndex(areaOrLine, areaOrLineColorList, idx) { + var colorIndex = idx % areaOrLineColorList.length; + areaOrLine[colorIndex] = areaOrLine[colorIndex] || []; + return colorIndex; + } + + if (shape === 'circle') { + var ticksRadius = indicatorAxes[0].getTicksCoords(); + var cx = radar.cx; + var cy = radar.cy; + for (var i = 0; i < ticksRadius.length; i++) { + if (showSplitLine) { + var colorIndex = getColorIndex(splitLines, splitLineColors, i); + splitLines[colorIndex].push(new graphic.Circle({ + shape: { + cx: cx, + cy: cy, + r: ticksRadius[i] + } + })); + } + if (showSplitArea && i < ticksRadius.length - 1) { + var colorIndex = getColorIndex(splitAreas, splitAreaColors, i); + splitAreas[colorIndex].push(new graphic.Ring({ + shape: { + cx: cx, + cy: cy, + r0: ticksRadius[i], + r: ticksRadius[i + 1] + } + })); + } + } + } + // Polyyon + else { + var realSplitNumber; + var axesTicksPoints = zrUtil.map(indicatorAxes, function (indicatorAxis, idx) { + var ticksCoords = indicatorAxis.getTicksCoords(); + realSplitNumber = realSplitNumber == null + ? ticksCoords.length - 1 + : Math.min(ticksCoords.length - 1, realSplitNumber); + return zrUtil.map(ticksCoords, function (tickCoord) { + return radar.coordToPoint(tickCoord, idx); + }); + }); + + var prevPoints = []; + for (var i = 0; i <= realSplitNumber; i++) { + var points = []; + for (var j = 0; j < indicatorAxes.length; j++) { + points.push(axesTicksPoints[j][i]); + } + // Close + if (points[0]) { + points.push(points[0].slice()); + } + else { + if (true) { + console.error('Can\'t draw value axis ' + i); + } + } + + if (showSplitLine) { + var colorIndex = getColorIndex(splitLines, splitLineColors, i); + splitLines[colorIndex].push(new graphic.Polyline({ + shape: { + points: points + } + })); + } + if (showSplitArea && prevPoints) { + var colorIndex = getColorIndex(splitAreas, splitAreaColors, i - 1); + splitAreas[colorIndex].push(new graphic.Polygon({ + shape: { + points: points.concat(prevPoints) + } + })); + } + prevPoints = points.slice().reverse(); + } + } + + var lineStyle = lineStyleModel.getLineStyle(); + var areaStyle = areaStyleModel.getAreaStyle(); + // Add splitArea before splitLine + zrUtil.each(splitAreas, function (splitAreas, idx) { + this.group.add(graphic.mergePath( + splitAreas, { + style: zrUtil.defaults({ + stroke: 'none', + fill: splitAreaColors[idx % splitAreaColors.length] + }, areaStyle), + silent: true + } + )); + }, this); + + zrUtil.each(splitLines, function (splitLines, idx) { + this.group.add(graphic.mergePath( + splitLines, { + style: zrUtil.defaults({ + fill: 'none', + stroke: splitLineColors[idx % splitLineColors.length] + }, lineStyle), + silent: true + } + )); + }, this); + + } + }); + + +/***/ }, +/* 165 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + + var SeriesModel = __webpack_require__(78); + var List = __webpack_require__(98); + var completeDimensions = __webpack_require__(110); + var zrUtil = __webpack_require__(4); + var encodeHTML = __webpack_require__(6).encodeHTML; + + var RadarSeries = SeriesModel.extend({ + + type: 'series.radar', + + dependencies: ['radar'], + + + // Overwrite + init: function (option) { + RadarSeries.superApply(this, 'init', arguments); + + // Enable legend selection for each data item + // Use a function instead of direct access because data reference may changed + this.legendDataProvider = function () { + return this.getRawData(); + }; + }, + + getInitialData: function (option, ecModel) { + var data = option.data || []; + var dimensions = completeDimensions( + [], data, {extraPrefix: 'indicator_', extraFromZero: true} + ); + var list = new List(dimensions, this); + list.initData(data); + return list; + }, + + formatTooltip: function (dataIndex) { + var value = this.getRawValue(dataIndex); + var coordSys = this.coordinateSystem; + var indicatorAxes = coordSys.getIndicatorAxes(); + var name = this.getData().getName(dataIndex); + return encodeHTML(name === '' ? this.name : name) + '
                  ' + + zrUtil.map(indicatorAxes, function (axis, idx) { + return encodeHTML(axis.name + ' : ' + value[idx]); + }).join('
                  '); + }, + + defaultOption: { + zlevel: 0, + z: 2, + coordinateSystem: 'radar', + legendHoverLink: true, + radarIndex: 0, + lineStyle: { + normal: { + width: 2, + type: 'solid' + } + }, + label: { + normal: { + position: 'top' + } + }, + // areaStyle: { + // }, + // itemStyle: {} + symbol: 'emptyCircle', + symbolSize: 4 + // symbolRotate: null + } + }); + + module.exports = RadarSeries; + + +/***/ }, +/* 166 */ +/***/ function(module, exports, __webpack_require__) { + + + + var graphic = __webpack_require__(18); + var zrUtil = __webpack_require__(4); + var symbolUtil = __webpack_require__(111); + + function normalizeSymbolSize(symbolSize) { + if (!zrUtil.isArray(symbolSize)) { + symbolSize = [+symbolSize, +symbolSize]; + } + return symbolSize; + } + module.exports = __webpack_require__(1).extendChartView({ + type: 'radar', + + render: function (seriesModel, ecModel, api) { + var polar = seriesModel.coordinateSystem; + var group = this.group; + + var data = seriesModel.getData(); + var oldData = this._data; + + function createSymbol(data, idx) { + var symbolType = data.getItemVisual(idx, 'symbol') || 'circle'; + var color = data.getItemVisual(idx, 'color'); + if (symbolType === 'none') { + return; + } + var symbolPath = symbolUtil.createSymbol( + symbolType, -0.5, -0.5, 1, 1, color + ); + symbolPath.attr({ + style: { + strokeNoScale: true + }, + z2: 100, + scale: normalizeSymbolSize(data.getItemVisual(idx, 'symbolSize')) + }); + return symbolPath; + } + + function updateSymbols(oldPoints, newPoints, symbolGroup, data, idx, isInit) { + // Simply rerender all + symbolGroup.removeAll(); + for (var i = 0; i < newPoints.length - 1; i++) { + var symbolPath = createSymbol(data, idx); + if (symbolPath) { + symbolPath.__dimIdx = i; + if (oldPoints[i]) { + symbolPath.attr('position', oldPoints[i]); + graphic[isInit ? 'initProps' : 'updateProps']( + symbolPath, { + position: newPoints[i] + }, seriesModel, idx + ); + } + else { + symbolPath.attr('position', newPoints[i]); + } + symbolGroup.add(symbolPath); + } + } + } + + function getInitialPoints(points) { + return zrUtil.map(points, function (pt) { + return [polar.cx, polar.cy]; + }); + } + data.diff(oldData) + .add(function (idx) { + var points = data.getItemLayout(idx); + if (!points) { + return; + } + var polygon = new graphic.Polygon(); + var polyline = new graphic.Polyline(); + var target = { + shape: { + points: points + } + }; + polygon.shape.points = getInitialPoints(points); + polyline.shape.points = getInitialPoints(points); + graphic.initProps(polygon, target, seriesModel, idx); + graphic.initProps(polyline, target, seriesModel, idx); + + var itemGroup = new graphic.Group(); + var symbolGroup = new graphic.Group(); + itemGroup.add(polyline); + itemGroup.add(polygon); + itemGroup.add(symbolGroup); + + updateSymbols( + polyline.shape.points, points, symbolGroup, data, idx, true + ); + + data.setItemGraphicEl(idx, itemGroup); + }) + .update(function (newIdx, oldIdx) { + var itemGroup = oldData.getItemGraphicEl(oldIdx); + var polyline = itemGroup.childAt(0); + var polygon = itemGroup.childAt(1); + var symbolGroup = itemGroup.childAt(2); + var target = { + shape: { + points: data.getItemLayout(newIdx) + } + }; + if (!target.shape.points) { + return; + } + updateSymbols( + polyline.shape.points, target.shape.points, symbolGroup, data, newIdx, false + ); + + graphic.updateProps(polyline, target, seriesModel); + graphic.updateProps(polygon, target, seriesModel); + + data.setItemGraphicEl(newIdx, itemGroup); + }) + .remove(function (idx) { + group.remove(oldData.getItemGraphicEl(idx)); + }) + .execute(); + + data.eachItemGraphicEl(function (itemGroup, idx) { + var itemModel = data.getItemModel(idx); + var polyline = itemGroup.childAt(0); + var polygon = itemGroup.childAt(1); + var symbolGroup = itemGroup.childAt(2); + var color = data.getItemVisual(idx, 'color'); + + group.add(itemGroup); + + polyline.useStyle( + zrUtil.defaults( + itemModel.getModel('lineStyle.normal').getLineStyle(), + { + fill: 'none', + stroke: color + } + ) + ); + polyline.hoverStyle = itemModel.getModel('lineStyle.emphasis').getLineStyle(); + + var areaStyleModel = itemModel.getModel('areaStyle.normal'); + var hoverAreaStyleModel = itemModel.getModel('areaStyle.emphasis'); + var polygonIgnore = areaStyleModel.isEmpty() && areaStyleModel.parentModel.isEmpty(); + var hoverPolygonIgnore = hoverAreaStyleModel.isEmpty() && hoverAreaStyleModel.parentModel.isEmpty(); + + hoverPolygonIgnore = hoverPolygonIgnore && polygonIgnore; + polygon.ignore = polygonIgnore; + + polygon.useStyle( + zrUtil.defaults( + areaStyleModel.getAreaStyle(), + { + fill: color, + opacity: 0.7 + } + ) + ); + polygon.hoverStyle = hoverAreaStyleModel.getAreaStyle(); + + var itemStyle = itemModel.getModel('itemStyle.normal').getItemStyle(['color']); + var itemHoverStyle = itemModel.getModel('itemStyle.emphasis').getItemStyle(); + var labelModel = itemModel.getModel('label.normal'); + var labelHoverModel = itemModel.getModel('label.emphasis'); + symbolGroup.eachChild(function (symbolPath) { + symbolPath.setStyle(itemStyle); + symbolPath.hoverStyle = zrUtil.clone(itemHoverStyle); + + var defaultText = data.get(data.dimensions[symbolPath.__dimIdx], idx); + graphic.setText(symbolPath.style, labelModel, color); + symbolPath.setStyle({ + text: labelModel.get('show') ? zrUtil.retrieve( + seriesModel.getFormattedLabel( + idx, 'normal', null, symbolPath.__dimIdx + ), + defaultText + ) : '' + }); + + graphic.setText(symbolPath.hoverStyle, labelHoverModel, color); + symbolPath.hoverStyle.text = labelHoverModel.get('show') ? zrUtil.retrieve( + seriesModel.getFormattedLabel( + idx, 'emphasis', null, symbolPath.__dimIdx + ), + defaultText + ) : ''; + }); + + function onEmphasis() { + polygon.attr('ignore', hoverPolygonIgnore); + } + + function onNormal() { + polygon.attr('ignore', polygonIgnore); + } + + itemGroup.off('mouseover').off('mouseout').off('normal').off('emphasis'); + itemGroup.on('emphasis', onEmphasis) + .on('mouseover', onEmphasis) + .on('normal', onNormal) + .on('mouseout', onNormal); + + graphic.setHoverStyle(itemGroup); + }); + + this._data = data; + }, + + remove: function () { + this.group.removeAll(); + this._data = null; + }, + + dispose: function () {} + }); + + +/***/ }, +/* 167 */ +/***/ function(module, exports) { + + + + module.exports = function (ecModel) { + ecModel.eachSeriesByType('radar', function (seriesModel) { + var data = seriesModel.getData(); + var points = []; + var coordSys = seriesModel.coordinateSystem; + if (!coordSys) { + return; + } + + function pointsConverter(val, idx) { + points[idx] = points[idx] || []; + points[idx][i] = coordSys.dataToPoint(val, i); + } + for (var i = 0; i < coordSys.getIndicatorAxes().length; i++) { + var dim = data.dimensions[i]; + data.each(dim, pointsConverter); + } + + data.each(function (idx) { + // Close polygon + points[idx][0] && points[idx].push(points[idx][0].slice()); + data.setItemLayout(idx, points[idx]); + }); + }); + }; + + +/***/ }, +/* 168 */ +/***/ function(module, exports, __webpack_require__) { + + // Backward compat for radar chart in 2 + + + var zrUtil = __webpack_require__(4); + + module.exports = function (option) { + var polarOptArr = option.polar; + if (polarOptArr) { + if (!zrUtil.isArray(polarOptArr)) { + polarOptArr = [polarOptArr]; + } + var polarNotRadar = []; + zrUtil.each(polarOptArr, function (polarOpt, idx) { + if (polarOpt.indicator) { + if (polarOpt.type && !polarOpt.shape) { + polarOpt.shape = polarOpt.type; + } + option.radar = option.radar || []; + if (!zrUtil.isArray(option.radar)) { + option.radar = [option.radar]; + } + option.radar.push(polarOpt); + } + else { + polarNotRadar.push(polarOpt); + } + }); + option.polar = polarNotRadar; + } + zrUtil.each(option.series, function (seriesOpt) { + if (seriesOpt.type === 'radar' && seriesOpt.polarIndex) { + seriesOpt.radarIndex = seriesOpt.polarIndex; + } + }); + }; + + +/***/ }, +/* 169 */ +/***/ function(module, exports, __webpack_require__) { + + + + var echarts = __webpack_require__(1); + var PRIORITY = echarts.PRIORITY; + + __webpack_require__(170); + + __webpack_require__(181); + + __webpack_require__(187); + + __webpack_require__(171); + + echarts.registerLayout(__webpack_require__(189)); + + echarts.registerVisual(__webpack_require__(190)); + + echarts.registerProcessor(PRIORITY.PROCESSOR.STATISTIC, __webpack_require__(191)); + + echarts.registerPreprocessor(__webpack_require__(192)); + + __webpack_require__(150)('map', [{ + type: 'mapToggleSelect', + event: 'mapselectchanged', + method: 'toggleSelected' + }, { + type: 'mapSelect', + event: 'mapselected', + method: 'select' + }, { + type: 'mapUnSelect', + event: 'mapunselected', + method: 'unSelect' + }]); + + +/***/ }, +/* 170 */ +/***/ function(module, exports, __webpack_require__) { + + + + var List = __webpack_require__(98); + var SeriesModel = __webpack_require__(78); + var zrUtil = __webpack_require__(4); + var completeDimensions = __webpack_require__(110); + + var formatUtil = __webpack_require__(6); + var encodeHTML = formatUtil.encodeHTML; + var addCommas = formatUtil.addCommas; + + var dataSelectableMixin = __webpack_require__(148); + + var geoCreator = __webpack_require__(171); + + var MapSeries = SeriesModel.extend({ + + type: 'series.map', + + dependencies: ['geo'], + + layoutMode: 'box', + + /** + * Only first map series of same mapType will drawMap + * @type {boolean} + */ + needsDrawMap: false, + + /** + * Group of all map series with same mapType + * @type {boolean} + */ + seriesGroup: [], + + init: function (option) { + + option = this._fillOption(option, this.getMapType()); + this.option = option; + + MapSeries.superApply(this, 'init', arguments); + + this.updateSelectedMap(option.data); + }, + + getInitialData: function (option) { + var dimensions = completeDimensions(['value'], option.data || []); + + var list = new List(dimensions, this); + + list.initData(option.data); + + return list; + }, + + mergeOption: function (newOption) { + if (newOption.data) { + newOption = this._fillOption(newOption, this.getMapType()); + } + + MapSeries.superCall(this, 'mergeOption', newOption); + + this.updateSelectedMap(this.option.data); + }, + + /** + * If no host geo model, return null, which means using a + * inner exclusive geo model. + */ + getHostGeoModel: function () { + var geoIndex = this.option.geoIndex; + return geoIndex != null + ? this.dependentModels.geo[geoIndex] + : null; + }, + + getMapType: function () { + return (this.getHostGeoModel() || this).option.map; + }, + + _fillOption: function (option, mapName) { + // Shallow clone + option = zrUtil.extend({}, option); + + option.data = geoCreator.getFilledRegions(option.data, mapName); + + return option; + }, + + getRawValue: function (dataIndex) { + // Use value stored in data instead because it is calculated from multiple series + // FIXME Provide all value of multiple series ? + return this.getData().get('value', dataIndex); + }, + + /** + * Get model of region + * @param {string} name + * @return {module:echarts/model/Model} + */ + getRegionModel: function (regionName) { + var data = this.getData(); + return data.getItemModel(data.indexOfName(regionName)); + }, + + /** + * Map tooltip formatter + * + * @param {number} dataIndex + */ + formatTooltip: function (dataIndex) { + // FIXME orignalData and data is a bit confusing + var data = this.getData(); + var formattedValue = addCommas(this.getRawValue(dataIndex)); + var name = data.getName(dataIndex); + + var seriesGroup = this.seriesGroup; + var seriesNames = []; + for (var i = 0; i < seriesGroup.length; i++) { + var otherIndex = seriesGroup[i].originalData.indexOfName(name); + if (!isNaN(seriesGroup[i].originalData.get('value', otherIndex))) { + seriesNames.push( + encodeHTML(seriesGroup[i].name) + ); + } + } + + return seriesNames.join(', ') + '
                  ' + + encodeHTML(name + ' : ' + formattedValue); + }, + + /** + * @implement + */ + getTooltipPosition: function (dataIndex) { + if (dataIndex != null) { + var name = this.getData().getName(dataIndex); + var geo = this.coordinateSystem; + var region = geo.getRegion(name); + + return region && geo.dataToPoint(region.center); + } + }, + + setZoom: function (zoom) { + this.option.zoom = zoom; + }, + + setCenter: function (center) { + this.option.center = center; + }, + + defaultOption: { + // 一级层叠 + zlevel: 0, + // 二级层叠 + z: 2, + + coordinateSystem: 'geo', + + // map should be explicitly specified since ec3. + map: '', + + // If `geoIndex` is not specified, a exclusive geo will be + // created. Otherwise use the specified geo component, and + // `map` and `mapType` are ignored. + // geoIndex: 0, + + // 'center' | 'left' | 'right' | 'x%' | {number} + left: 'center', + // 'center' | 'top' | 'bottom' | 'x%' | {number} + top: 'center', + // right + // bottom + // width: + // height + + // Aspect is width / height. Inited to be geoJson bbox aspect + // This parameter is used for scale this aspect + aspectScale: 0.75, + + ///// Layout with center and size + // If you wan't to put map in a fixed size box with right aspect ratio + // This two properties may more conveninet + // layoutCenter: [50%, 50%] + // layoutSize: 100 + + + // 数值合并方式,默认加和,可选为: + // 'sum' | 'average' | 'max' | 'min' + // mapValueCalculation: 'sum', + // 地图数值计算结果小数精度 + // mapValuePrecision: 0, + + + // 显示图例颜色标识(系列标识的小圆点),图例开启时有效 + showLegendSymbol: true, + // 选择模式,默认关闭,可选single,multiple + // selectedMode: false, + dataRangeHoverLink: true, + // 是否开启缩放及漫游模式 + // roam: false, + + // Define left-top, right-bottom coords to control view + // For example, [ [180, 90], [-180, -90] ], + // higher priority than center and zoom + boundingCoords: null, + + // Default on center of map + center: null, + + zoom: 1, + + scaleLimit: null, + + label: { + normal: { + show: false, + textStyle: { + color: '#000' + } + }, + emphasis: { + show: true, + textStyle: { + color: 'rgb(100,0,0)' + } + } + }, + // scaleLimit: null, + itemStyle: { + normal: { + // color: 各异, + borderWidth: 0.5, + borderColor: '#444', + areaColor: '#eee' + }, + // 也是选中样式 + emphasis: { + areaColor: 'rgba(255,215,0,0.8)' + } + } + } + + }); + + zrUtil.mixin(MapSeries, dataSelectableMixin); + + module.exports = MapSeries; + + +/***/ }, +/* 171 */ +/***/ function(module, exports, __webpack_require__) { + + + + var Geo = __webpack_require__(172); + + var layout = __webpack_require__(71); + var zrUtil = __webpack_require__(4); + var numberUtil = __webpack_require__(7); + + var mapDataStores = {}; + + /** + * Resize method bound to the geo + * @param {module:echarts/coord/geo/GeoModel|module:echarts/chart/map/MapModel} geoModel + * @param {module:echarts/ExtensionAPI} api + */ + function resizeGeo (geoModel, api) { + + var boundingCoords = geoModel.get('boundingCoords'); + if (boundingCoords != null) { + var leftTop = boundingCoords[0]; + var rightBottom = boundingCoords[1]; + if (isNaN(leftTop[0]) || isNaN(leftTop[1]) || isNaN(rightBottom[0]) || isNaN(rightBottom[1])) { + if (true) { + console.error('Invalid boundingCoords'); + } + } + else { + this.setBoundingRect(leftTop[0], leftTop[1], rightBottom[0] - leftTop[0], rightBottom[1] - leftTop[1]); + } + } + + var rect = this.getBoundingRect(); + + var boxLayoutOption; + + var center = geoModel.get('layoutCenter'); + var size = geoModel.get('layoutSize'); + + var viewWidth = api.getWidth(); + var viewHeight = api.getHeight(); + + var aspectScale = geoModel.get('aspectScale') || 0.75; + var aspect = rect.width / rect.height * aspectScale; + + var useCenterAndSize = false; + + if (center && size) { + center = [ + numberUtil.parsePercent(center[0], viewWidth), + numberUtil.parsePercent(center[1], viewHeight) + ]; + size = numberUtil.parsePercent(size, Math.min(viewWidth, viewHeight)); + + if (!isNaN(center[0]) && !isNaN(center[1]) && !isNaN(size)) { + useCenterAndSize = true; + } + else { + if (true) { + console.warn('Given layoutCenter or layoutSize data are invalid. Use left/top/width/height instead.'); + } + } + } + + var viewRect; + if (useCenterAndSize) { + var viewRect = {}; + if (aspect > 1) { + // Width is same with size + viewRect.width = size; + viewRect.height = size / aspect; + } + else { + viewRect.height = size; + viewRect.width = size * aspect; + } + viewRect.y = center[1] - viewRect.height / 2; + viewRect.x = center[0] - viewRect.width / 2; + } + else { + // Use left/top/width/height + boxLayoutOption = geoModel.getBoxLayoutParams(); + + // 0.75 rate + boxLayoutOption.aspect = aspect; + + viewRect = layout.getLayoutRect(boxLayoutOption, { + width: viewWidth, + height: viewHeight + }); + } + + this.setViewRect(viewRect.x, viewRect.y, viewRect.width, viewRect.height); + + this.setCenter(geoModel.get('center')); + this.setZoom(geoModel.get('zoom')); + } + + /** + * @param {module:echarts/coord/Geo} geo + * @param {module:echarts/model/Model} model + * @inner + */ + function setGeoCoords(geo, model) { + zrUtil.each(model.get('geoCoord'), function (geoCoord, name) { + geo.addGeoCoord(name, geoCoord); + }); + } + + if (true) { + var mapNotExistsError = function (name) { + console.error('Map ' + name + ' not exists. You can download map file on http://echarts.baidu.com/download-map.html'); + }; + } + + var geoCreator = { + + // For deciding which dimensions to use when creating list data + dimensions: Geo.prototype.dimensions, + + create: function (ecModel, api) { + var geoList = []; + + // FIXME Create each time may be slow + ecModel.eachComponent('geo', function (geoModel, idx) { + var name = geoModel.get('map'); + var mapData = mapDataStores[name]; + if (true) { + if (!mapData) { + mapNotExistsError(name); + } + } + var geo = new Geo( + name + idx, name, + mapData && mapData.geoJson, mapData && mapData.specialAreas, + geoModel.get('nameMap') + ); + geo.zoomLimit = geoModel.get('scaleLimit'); + geoList.push(geo); + + setGeoCoords(geo, geoModel); + + geoModel.coordinateSystem = geo; + geo.model = geoModel; + + // Inject resize method + geo.resize = resizeGeo; + + geo.resize(geoModel, api); + }); + + ecModel.eachSeries(function (seriesModel) { + var coordSys = seriesModel.get('coordinateSystem'); + if (coordSys === 'geo') { + var geoIndex = seriesModel.get('geoIndex') || 0; + seriesModel.coordinateSystem = geoList[geoIndex]; + } + }); + + // If has map series + var mapModelGroupBySeries = {}; + + ecModel.eachSeriesByType('map', function (seriesModel) { + if (!seriesModel.getHostGeoModel()) { + var mapType = seriesModel.getMapType(); + mapModelGroupBySeries[mapType] = mapModelGroupBySeries[mapType] || []; + mapModelGroupBySeries[mapType].push(seriesModel); + } + }); + + zrUtil.each(mapModelGroupBySeries, function (mapSeries, mapType) { + var mapData = mapDataStores[mapType]; + if (true) { + if (!mapData) { + mapNotExistsError(mapSeries[0].get('map')); + } + } + + var nameMapList = zrUtil.map(mapSeries, function (singleMapSeries) { + return singleMapSeries.get('nameMap'); + }); + var geo = new Geo( + mapType, mapType, + mapData && mapData.geoJson, mapData && mapData.specialAreas, + zrUtil.mergeAll(nameMapList) + ); + geo.zoomLimit = zrUtil.retrieve.apply(null, zrUtil.map(mapSeries, function (singleMapSeries) { + return singleMapSeries.get('scaleLimit'); + })); + geoList.push(geo); + + // Inject resize method + geo.resize = resizeGeo; + + geo.resize(mapSeries[0], api); + + zrUtil.each(mapSeries, function (singleMapSeries) { + singleMapSeries.coordinateSystem = geo; + + setGeoCoords(geo, singleMapSeries); + }); + }); + + return geoList; + }, + + /** + * @param {string} mapName + * @param {Object|string} geoJson + * @param {Object} [specialAreas] + * + * @example + * $.get('USA.json', function (geoJson) { + * echarts.registerMap('USA', geoJson); + * // Or + * echarts.registerMap('USA', { + * geoJson: geoJson, + * specialAreas: {} + * }) + * }); + */ + registerMap: function (mapName, geoJson, specialAreas) { + if (geoJson.geoJson && !geoJson.features) { + specialAreas = geoJson.specialAreas; + geoJson = geoJson.geoJson; + } + if (typeof geoJson === 'string') { + geoJson = (typeof JSON !== 'undefined' && JSON.parse) + ? JSON.parse(geoJson) : (new Function('return (' + geoJson + ');'))(); + } + mapDataStores[mapName] = { + geoJson: geoJson, + specialAreas: specialAreas + }; + }, + + /** + * @param {string} mapName + * @return {Object} + */ + getMap: function (mapName) { + return mapDataStores[mapName]; + }, + + /** + * Fill given regions array + * @param {Array.} originRegionArr + * @param {string} mapName + * @return {Array} + */ + getFilledRegions: function (originRegionArr, mapName) { + // Not use the original + var regionsArr = (originRegionArr || []).slice(); + + var map = geoCreator.getMap(mapName); + var geoJson = map && map.geoJson; + if (!geoJson) { + if (true) { + mapNotExistsError(mapName); + } + return originRegionArr; + } + + var dataNameMap = zrUtil.createHashMap(); + var features = geoJson.features; + for (var i = 0; i < regionsArr.length; i++) { + dataNameMap.set(regionsArr[i].name, regionsArr[i]); + } + + for (var i = 0; i < features.length; i++) { + var name = features[i].properties.name; + if (!dataNameMap.get(name)) { + regionsArr.push({ + name: name + }); + } + } + return regionsArr; + } + }; + + // Inject methods into echarts + var echarts = __webpack_require__(1); + + echarts.registerMap = geoCreator.registerMap; + + echarts.getMap = geoCreator.getMap; + + echarts.parseGeoJSON = __webpack_require__(173); + + // TODO + echarts.loadMap = function () {}; + + echarts.registerCoordinateSystem('geo', geoCreator); + + module.exports = geoCreator; + + +/***/ }, +/* 172 */ +/***/ function(module, exports, __webpack_require__) { + + + + var parseGeoJson = __webpack_require__(173); + + var zrUtil = __webpack_require__(4); + + var BoundingRect = __webpack_require__(9); + + var View = __webpack_require__(176); + + + // Geo fix functions + var geoFixFuncs = [ + __webpack_require__(177), + __webpack_require__(178), + __webpack_require__(179), + __webpack_require__(180) + ]; + + /** + * [Geo description] + * @param {string} name Geo name + * @param {string} map Map type + * @param {Object} geoJson + * @param {Object} [specialAreas] + * Specify the positioned areas by left, top, width, height + * @param {Object.} [nameMap] + * Specify name alias + */ + function Geo(name, map, geoJson, specialAreas, nameMap) { + + View.call(this, name); + + /** + * Map type + * @type {string} + */ + this.map = map; + + this._nameCoordMap = zrUtil.createHashMap(); + + this.loadGeoJson(geoJson, specialAreas, nameMap); + } + + Geo.prototype = { + + constructor: Geo, + + type: 'geo', + + /** + * @param {Array.} + * @readOnly + */ + dimensions: ['lng', 'lat'], + + /** + * If contain given lng,lat coord + * @param {Array.} + * @readOnly + */ + containCoord: function (coord) { + var regions = this.regions; + for (var i = 0; i < regions.length; i++) { + if (regions[i].contain(coord)) { + return true; + } + } + return false; + }, + /** + * @param {Object} geoJson + * @param {Object} [specialAreas] + * Specify the positioned areas by left, top, width, height + * @param {Object.} [nameMap] + * Specify name alias + */ + loadGeoJson: function (geoJson, specialAreas, nameMap) { + // https://jsperf.com/try-catch-performance-overhead + try { + this.regions = geoJson ? parseGeoJson(geoJson) : []; + } + catch (e) { + throw 'Invalid geoJson format\n' + e.message; + } + specialAreas = specialAreas || {}; + nameMap = nameMap || {}; + var regions = this.regions; + var regionsMap = zrUtil.createHashMap(); + for (var i = 0; i < regions.length; i++) { + var regionName = regions[i].name; + // Try use the alias in nameMap + regionName = nameMap.hasOwnProperty(regionName) ? nameMap[regionName] : regionName; + regions[i].name = regionName; + + regionsMap.set(regionName, regions[i]); + // Add geoJson + this.addGeoCoord(regionName, regions[i].center); + + // Some area like Alaska in USA map needs to be tansformed + // to look better + var specialArea = specialAreas[regionName]; + if (specialArea) { + regions[i].transformTo( + specialArea.left, specialArea.top, specialArea.width, specialArea.height + ); + } + } + + this._regionsMap = regionsMap; + + this._rect = null; + + zrUtil.each(geoFixFuncs, function (fixFunc) { + fixFunc(this); + }, this); + }, + + // Overwrite + transformTo: function (x, y, width, height) { + var rect = this.getBoundingRect(); + + rect = rect.clone(); + // Longitute is inverted + rect.y = -rect.y - rect.height; + + var viewTransform = this._viewTransform; + + viewTransform.transform = rect.calculateTransform( + new BoundingRect(x, y, width, height) + ); + + viewTransform.decomposeTransform(); + + var scale = viewTransform.scale; + scale[1] = -scale[1]; + + viewTransform.updateTransform(); + + this._updateTransform(); + }, + + /** + * @param {string} name + * @return {module:echarts/coord/geo/Region} + */ + getRegion: function (name) { + return this._regionsMap.get(name); + }, + + getRegionByCoord: function (coord) { + var regions = this.regions; + for (var i = 0; i < regions.length; i++) { + if (regions[i].contain(coord)) { + return regions[i]; + } + } + }, + + /** + * Add geoCoord for indexing by name + * @param {string} name + * @param {Array.} geoCoord + */ + addGeoCoord: function (name, geoCoord) { + this._nameCoordMap.set(name, geoCoord); + }, + + /** + * Get geoCoord by name + * @param {string} name + * @return {Array.} + */ + getGeoCoord: function (name) { + return this._nameCoordMap.get(name); + }, + + // Overwrite + getBoundingRect: function () { + if (this._rect) { + return this._rect; + } + var rect; + + var regions = this.regions; + for (var i = 0; i < regions.length; i++) { + var regionRect = regions[i].getBoundingRect(); + rect = rect || regionRect.clone(); + rect.union(regionRect); + } + // FIXME Always return new ? + return (this._rect = rect || new BoundingRect(0, 0, 0, 0)); + }, + + /** + * Convert series data to a list of points + * @param {module:echarts/data/List} data + * @param {boolean} stack + * @return {Array} + * Return list of points. For example: + * `[[10, 10], [20, 20], [30, 30]]` + */ + dataToPoints: function (data) { + var item = []; + return data.mapArray(['lng', 'lat'], function (lon, lat) { + item[0] = lon; + item[1] = lat; + return this.dataToPoint(item); + }, this); + }, + + /** + * @param {string|Array.} data + * @return {Array.} + */ + dataToPoint: function (data) { + if (typeof data === 'string') { + // Map area name to geoCoord + data = this.getGeoCoord(data); + } + if (data) { + return View.prototype.dataToPoint.call(this, data); + } + }, + + /** + * @inheritDoc + */ + convertToPixel: zrUtil.curry(doConvert, 'dataToPoint'), + + /** + * @inheritDoc + */ + convertFromPixel: zrUtil.curry(doConvert, 'pointToData') + + }; + + zrUtil.mixin(Geo, View); + + function doConvert(methodName, ecModel, finder, value) { + var geoModel = finder.geoModel; + var seriesModel = finder.seriesModel; + + var coordSys = geoModel + ? geoModel.coordinateSystem + : seriesModel + ? ( + seriesModel.coordinateSystem // For map. + || (seriesModel.getReferringComponents('geo')[0] || {}).coordinateSystem + ) + : null; + + return coordSys === this ? coordSys[methodName](value) : null; + } + + module.exports = Geo; + + +/***/ }, +/* 173 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * Parse and decode geo json + * @module echarts/coord/geo/parseGeoJson + */ + + + var zrUtil = __webpack_require__(4); + + var Region = __webpack_require__(174); + + function decode(json) { + if (!json.UTF8Encoding) { + return json; + } + var encodeScale = json.UTF8Scale; + if (encodeScale == null) { + encodeScale = 1024; + } + + var features = json.features; + + for (var f = 0; f < features.length; f++) { + var feature = features[f]; + var geometry = feature.geometry; + var coordinates = geometry.coordinates; + var encodeOffsets = geometry.encodeOffsets; + + for (var c = 0; c < coordinates.length; c++) { + var coordinate = coordinates[c]; + + if (geometry.type === 'Polygon') { + coordinates[c] = decodePolygon( + coordinate, + encodeOffsets[c], + encodeScale + ); + } + else if (geometry.type === 'MultiPolygon') { + for (var c2 = 0; c2 < coordinate.length; c2++) { + var polygon = coordinate[c2]; + coordinate[c2] = decodePolygon( + polygon, + encodeOffsets[c][c2], + encodeScale + ); + } + } + } + } + // Has been decoded + json.UTF8Encoding = false; + return json; + } + + function decodePolygon(coordinate, encodeOffsets, encodeScale) { + var result = []; + var prevX = encodeOffsets[0]; + var prevY = encodeOffsets[1]; + + for (var i = 0; i < coordinate.length; i += 2) { + var x = coordinate.charCodeAt(i) - 64; + var y = coordinate.charCodeAt(i + 1) - 64; + // ZigZag decoding + x = (x >> 1) ^ (-(x & 1)); + y = (y >> 1) ^ (-(y & 1)); + // Delta deocding + x += prevX; + y += prevY; + + prevX = x; + prevY = y; + // Dequantize + result.push([x / encodeScale, y / encodeScale]); + } + + return result; + } + + /** + * @alias module:echarts/coord/geo/parseGeoJson + * @param {Object} geoJson + * @return {module:zrender/container/Group} + */ + module.exports = function (geoJson) { + + decode(geoJson); + + return zrUtil.map(zrUtil.filter(geoJson.features, function (featureObj) { + // Output of mapshaper may have geometry null + return featureObj.geometry + && featureObj.properties + && featureObj.geometry.coordinates.length > 0; + }), function (featureObj) { + var properties = featureObj.properties; + var geo = featureObj.geometry; + + var coordinates = geo.coordinates; + + var geometries = []; + if (geo.type === 'Polygon') { + geometries.push({ + type: 'polygon', + // According to the GeoJSON specification. + // First must be exterior, and the rest are all interior(holes). + exterior: coordinates[0], + interiors: coordinates.slice(1) + }); + } + if (geo.type === 'MultiPolygon') { + zrUtil.each(coordinates, function (item) { + if (item[0]) { + geometries.push({ + type: 'polygon', + exterior: item[0], + interiors: item.slice(1) + }); + } + }); + } + + var region = new Region( + properties.name, + geometries, + properties.cp + ); + region.properties = properties; + return region; + }); + }; + + +/***/ }, +/* 174 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * @module echarts/coord/geo/Region + */ + + + var polygonContain = __webpack_require__(175); + + var BoundingRect = __webpack_require__(9); + + var bbox = __webpack_require__(38); + var vec2 = __webpack_require__(10); + + /** + * @param {string} name + * @param {Array} geometries + * @param {Array.} cp + */ + function Region(name, geometries, cp) { + + /** + * @type {string} + * @readOnly + */ + this.name = name; + + /** + * @type {Array.} + * @readOnly + */ + this.geometries = geometries; + + if (!cp) { + var rect = this.getBoundingRect(); + cp = [ + rect.x + rect.width / 2, + rect.y + rect.height / 2 + ]; + } + else { + cp = [cp[0], cp[1]]; + } + /** + * @type {Array.} + */ + this.center = cp; + } + + Region.prototype = { + + constructor: Region, + + properties: null, + + /** + * @return {module:zrender/core/BoundingRect} + */ + getBoundingRect: function () { + var rect = this._rect; + if (rect) { + return rect; + } + + var MAX_NUMBER = Number.MAX_VALUE; + var min = [MAX_NUMBER, MAX_NUMBER]; + var max = [-MAX_NUMBER, -MAX_NUMBER]; + var min2 = []; + var max2 = []; + var geometries = this.geometries; + for (var i = 0; i < geometries.length; i++) { + // Only support polygon + if (geometries[i].type !== 'polygon') { + continue; + } + // Doesn't consider hole + var exterior = geometries[i].exterior; + bbox.fromPoints(exterior, min2, max2); + vec2.min(min, min, min2); + vec2.max(max, max, max2); + } + // No data + if (i === 0) { + min[0] = min[1] = max[0] = max[1] = 0; + } + + return (this._rect = new BoundingRect( + min[0], min[1], max[0] - min[0], max[1] - min[1] + )); + }, + + /** + * @param {} coord + * @return {boolean} + */ + contain: function (coord) { + var rect = this.getBoundingRect(); + var geometries = this.geometries; + if (!rect.contain(coord[0], coord[1])) { + return false; + } + loopGeo: for (var i = 0, len = geometries.length; i < len; i++) { + // Only support polygon. + if (geometries[i].type !== 'polygon') { + continue; + } + var exterior = geometries[i].exterior; + var interiors = geometries[i].interiors; + if (polygonContain.contain(exterior, coord[0], coord[1])) { + // Not in the region if point is in the hole. + for (var k = 0; k < (interiors ? interiors.length : 0); k++) { + if (polygonContain.contain(interiors[k])) { + continue loopGeo; + } + } + return true; + } + } + return false; + }, + + transformTo: function (x, y, width, height) { + var rect = this.getBoundingRect(); + var aspect = rect.width / rect.height; + if (!width) { + width = aspect * height; + } + else if (!height) { + height = width / aspect ; + } + var target = new BoundingRect(x, y, width, height); + var transform = rect.calculateTransform(target); + var geometries = this.geometries; + for (var i = 0; i < geometries.length; i++) { + // Only support polygon. + if (geometries[i].type !== 'polygon') { + continue; + } + var exterior = geometries[i].exterior; + var interiors = geometries[i].interiors; + for (var p = 0; p < exterior.length; p++) { + vec2.applyTransform(exterior[p], exterior[p], transform); + } + for (var h = 0; h < (interiors ? interiors.length : 0); h++) { + for (var p = 0; p < interiors[h].length; p++) { + vec2.applyTransform(interiors[h][p], interiors[h][p], transform); + } + } + } + rect = this._rect; + rect.copy(target); + // Update center + this.center = [ + rect.x + rect.width / 2, + rect.y + rect.height / 2 + ]; + } + }; + + module.exports = Region; + + +/***/ }, +/* 175 */ +/***/ function(module, exports, __webpack_require__) { + + + + var windingLine = __webpack_require__(45); + + var EPSILON = 1e-8; + + function isAroundEqual(a, b) { + return Math.abs(a - b) < EPSILON; + } + + function contain(points, x, y) { + var w = 0; + var p = points[0]; + + if (!p) { + return false; + } + + for (var i = 1; i < points.length; i++) { + var p2 = points[i]; + w += windingLine(p[0], p[1], p2[0], p2[1], x, y); + p = p2; + } + + // Close polygon + var p0 = points[0]; + if (!isAroundEqual(p[0], p0[0]) || !isAroundEqual(p[1], p0[1])) { + w += windingLine(p[0], p[1], p0[0], p0[1], x, y); + } + + return w !== 0; + } + + + module.exports = { + contain: contain + }; + + +/***/ }, +/* 176 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * Simple view coordinate system + * Mapping given x, y to transformd view x, y + */ + + + var vector = __webpack_require__(10); + var matrix = __webpack_require__(11); + + var Transformable = __webpack_require__(26); + var zrUtil = __webpack_require__(4); + + var BoundingRect = __webpack_require__(9); + + var v2ApplyTransform = vector.applyTransform; + + // Dummy transform node + function TransformDummy() { + Transformable.call(this); + } + zrUtil.mixin(TransformDummy, Transformable); + + function View(name) { + /** + * @type {string} + */ + this.name = name; + + /** + * @type {Object} + */ + this.zoomLimit; + + Transformable.call(this); + + this._roamTransform = new TransformDummy(); + + this._viewTransform = new TransformDummy(); + + this._center; + this._zoom; + } + + View.prototype = { + + constructor: View, + + type: 'view', + + /** + * @param {Array.} + * @readOnly + */ + dimensions: ['x', 'y'], + + /** + * Set bounding rect + * @param {number} x + * @param {number} y + * @param {number} width + * @param {number} height + */ + + // PENDING to getRect + setBoundingRect: function (x, y, width, height) { + this._rect = new BoundingRect(x, y, width, height); + return this._rect; + }, + + /** + * @return {module:zrender/core/BoundingRect} + */ + // PENDING to getRect + getBoundingRect: function () { + return this._rect; + }, + + /** + * @param {number} x + * @param {number} y + * @param {number} width + * @param {number} height + */ + setViewRect: function (x, y, width, height) { + this.transformTo(x, y, width, height); + this._viewRect = new BoundingRect(x, y, width, height); + }, + + /** + * Transformed to particular position and size + * @param {number} x + * @param {number} y + * @param {number} width + * @param {number} height + */ + transformTo: function (x, y, width, height) { + var rect = this.getBoundingRect(); + var viewTransform = this._viewTransform; + + viewTransform.transform = rect.calculateTransform( + new BoundingRect(x, y, width, height) + ); + + viewTransform.decomposeTransform(); + + this._updateTransform(); + }, + + /** + * Set center of view + * @param {Array.} [centerCoord] + */ + setCenter: function (centerCoord) { + if (!centerCoord) { + return; + } + this._center = centerCoord; + + this._updateCenterAndZoom(); + }, + + /** + * @param {number} zoom + */ + setZoom: function (zoom) { + zoom = zoom || 1; + + var zoomLimit = this.zoomLimit; + if (zoomLimit) { + if (zoomLimit.max != null) { + zoom = Math.min(zoomLimit.max, zoom); + } + if (zoomLimit.min != null) { + zoom = Math.max(zoomLimit.min, zoom); + } + } + this._zoom = zoom; + + this._updateCenterAndZoom(); + }, + + /** + * Get default center without roam + */ + getDefaultCenter: function () { + // Rect before any transform + var rawRect = this.getBoundingRect(); + var cx = rawRect.x + rawRect.width / 2; + var cy = rawRect.y + rawRect.height / 2; + + return [cx, cy]; + }, + + getCenter: function () { + return this._center || this.getDefaultCenter(); + }, + + getZoom: function () { + return this._zoom || 1; + }, + + /** + * @return {Array.} data + * @return {Array.} + */ + dataToPoint: function (data) { + var transform = this.transform; + return transform + ? v2ApplyTransform([], data, transform) + : [data[0], data[1]]; + }, + + /** + * Convert a (x, y) point to (lon, lat) data + * @param {Array.} point + * @return {Array.} + */ + pointToData: function (point) { + var invTransform = this.invTransform; + return invTransform + ? v2ApplyTransform([], point, invTransform) + : [point[0], point[1]]; + }, + + /** + * @implements + * see {module:echarts/CoodinateSystem} + */ + convertToPixel: zrUtil.curry(doConvert, 'dataToPoint'), + + /** + * @implements + * see {module:echarts/CoodinateSystem} + */ + convertFromPixel: zrUtil.curry(doConvert, 'pointToData'), + + /** + * @implements + * see {module:echarts/CoodinateSystem} + */ + containPoint: function (point) { + return this.getViewRectAfterRoam().contain(point[0], point[1]); + } + + /** + * @return {number} + */ + // getScalarScale: function () { + // // Use determinant square root of transform to mutiply scalar + // var m = this.transform; + // var det = Math.sqrt(Math.abs(m[0] * m[3] - m[2] * m[1])); + // return det; + // } + }; + + zrUtil.mixin(View, Transformable); + + function doConvert(methodName, ecModel, finder, value) { + var seriesModel = finder.seriesModel; + var coordSys = seriesModel ? seriesModel.coordinateSystem : null; // e.g., graph. + return coordSys === this ? coordSys[methodName](value) : null; + } + + module.exports = View; + + +/***/ }, +/* 177 */ +/***/ function(module, exports, __webpack_require__) { + + // Fix for 南海诸岛 + + + var Region = __webpack_require__(174); + var zrUtil = __webpack_require__(4); + + var geoCoord = [126, 25]; + + var 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]] + ]; + for (var i = 0; i < points.length; i++) { + for (var k = 0; k < points[i].length; k++) { + points[i][k][0] /= 10.5; + points[i][k][1] /= -10.5 / 0.75; + + points[i][k][0] += geoCoord[0]; + points[i][k][1] += geoCoord[1]; + } + } + module.exports = function (geo) { + if (geo.map === 'china') { + geo.regions.push(new Region( + '南海诸岛', + zrUtil.map(points, function (exterior) { + return { + type: 'polygon', + exterior: exterior + }; + }), geoCoord + )); + } + }; + + +/***/ }, +/* 178 */ +/***/ function(module, exports, __webpack_require__) { + + + + var zrUtil = __webpack_require__(4); + + var coordsOffsetMap = { + '南海诸岛' : [32, 80], + // 全国 + '广东': [0, -10], + '香港': [10, 5], + '澳门': [-10, 10], + //'北京': [-10, 0], + '天津': [5, 5] + }; + + module.exports = function (geo) { + zrUtil.each(geo.regions, function (region) { + var coordFix = coordsOffsetMap[region.name]; + if (coordFix) { + var cp = region.center; + cp[0] += coordFix[0] / 10.5; + cp[1] += -coordFix[1] / (10.5 / 0.75); + } + }); + }; + + +/***/ }, +/* 179 */ +/***/ function(module, exports, __webpack_require__) { + + + + var zrUtil = __webpack_require__(4); + + var geoCoordMap = { + 'Russia': [100, 60], + 'United States': [-99, 38], + 'United States of America': [-99, 38] + }; + + module.exports = function (geo) { + zrUtil.each(geo.regions, function (region) { + var geoCoord = geoCoordMap[region.name]; + if (geoCoord) { + var cp = region.center; + cp[0] = geoCoord[0]; + cp[1] = geoCoord[1]; + } + }); + }; + + +/***/ }, +/* 180 */ +/***/ function(module, exports, __webpack_require__) { + + // Fix for 钓鱼岛 + + + var Region = __webpack_require__(174); + var zrUtil = __webpack_require__(4); + + var geoCoord = [126, 25]; + + var points = [ + [ + [123.45165252685547, 25.73527164402261], + [123.49731445312499, 25.73527164402261], + [123.49731445312499, 25.750734064600884], + [123.45165252685547, 25.750734064600884], + [123.45165252685547, 25.73527164402261] + ] + ]; + module.exports = function (geo) { + if (geo.map === 'china') { + for (var i = 0, len = geo.regions.length; i < len; ++i) { + if (geo.regions[i].name === '台湾') { + geo.regions[i].geometries.push({ + type: 'polygon', + exterior: points[0] + }); + } + } + } + }; + + + +/***/ }, +/* 181 */ +/***/ function(module, exports, __webpack_require__) { + + + + // var zrUtil = require('zrender/lib/core/util'); + var graphic = __webpack_require__(18); + + var MapDraw = __webpack_require__(182); + + __webpack_require__(1).extendChartView({ + + type: 'map', + + render: function (mapModel, ecModel, api, payload) { + // Not render if it is an toggleSelect action from self + if (payload && payload.type === 'mapToggleSelect' + && payload.from === this.uid + ) { + return; + } + + var group = this.group; + group.removeAll(); + + if (mapModel.getHostGeoModel()) { + return; + } + + // Not update map if it is an roam action from self + if (!(payload && payload.type === 'geoRoam' + && payload.componentType === 'series' + && payload.seriesId === mapModel.id + ) + ) { + if (mapModel.needsDrawMap) { + var mapDraw = this._mapDraw || new MapDraw(api, true); + group.add(mapDraw.group); + + mapDraw.draw(mapModel, ecModel, api, this, payload); + + this._mapDraw = mapDraw; + } + else { + // Remove drawed map + this._mapDraw && this._mapDraw.remove(); + this._mapDraw = null; + } + } + else { + var mapDraw = this._mapDraw; + mapDraw && group.add(mapDraw.group); + } + + mapModel.get('showLegendSymbol') && ecModel.getComponent('legend') + && this._renderSymbols(mapModel, ecModel, api); + }, + + remove: function () { + this._mapDraw && this._mapDraw.remove(); + this._mapDraw = null; + this.group.removeAll(); + }, + + dispose: function () { + this._mapDraw && this._mapDraw.remove(); + this._mapDraw = null; + }, + + _renderSymbols: function (mapModel, ecModel, api) { + var originalData = mapModel.originalData; + var group = this.group; + + originalData.each('value', function (value, idx) { + if (isNaN(value)) { + return; + } + + var layout = originalData.getItemLayout(idx); + + if (!layout || !layout.point) { + // Not exists in map + return; + } + + var point = layout.point; + var offset = layout.offset; + + var circle = new graphic.Circle({ + style: { + // Because the special of map draw. + // Which needs statistic of multiple series and draw on one map. + // And each series also need a symbol with legend color + // + // Layout and visual are put one the different data + fill: mapModel.getData().getVisual('color') + }, + shape: { + cx: point[0] + offset * 9, + cy: point[1], + r: 3 + }, + silent: true, + z2: 10 + }); + + // First data on the same region + if (!offset) { + var fullData = mapModel.mainSeries.getData(); + var name = originalData.getName(idx); + var labelText = name; + var fullIndex = fullData.indexOfName(name); + + var itemModel = originalData.getItemModel(idx); + var labelModel = itemModel.getModel('label.normal'); + var hoverLabelModel = itemModel.getModel('label.emphasis'); + + var textStyleModel = labelModel.getModel('textStyle'); + var hoverTextStyleModel = hoverLabelModel.getModel('textStyle'); + + var polygonGroups = fullData.getItemGraphicEl(fullIndex); + circle.setStyle({ + textPosition: 'bottom' + }); + + var onEmphasis = function () { + circle.setStyle({ + text: hoverLabelModel.get('show') ? labelText : '', + textFill: hoverTextStyleModel.getTextColor(), + textFont: hoverTextStyleModel.getFont() + }); + }; + + var onNormal = function () { + circle.setStyle({ + text: labelModel.get('show') ? labelText : '', + textFill: textStyleModel.getTextColor(), + textFont: textStyleModel.getFont() + }); + }; + + polygonGroups.on('mouseover', onEmphasis) + .on('mouseout', onNormal) + .on('emphasis', onEmphasis) + .on('normal', onNormal); + + onNormal(); + } + + group.add(circle); + }); + } + }); + + +/***/ }, +/* 182 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * @module echarts/component/helper/MapDraw + */ + + + var RoamController = __webpack_require__(183); + var roamHelper = __webpack_require__(185); + var cursorHelper = __webpack_require__(186); + var graphic = __webpack_require__(18); + var zrUtil = __webpack_require__(4); + + function getFixedItemStyle(model, scale) { + var itemStyle = model.getItemStyle(); + var areaColor = model.get('areaColor'); + + // If user want the color not to be changed when hover, + // they should both set areaColor and color to be null. + if (areaColor != null) { + itemStyle.fill = areaColor; + } + + return itemStyle; + } + + function updateMapSelectHandler(mapDraw, mapOrGeoModel, group, api, fromView) { + group.off('click'); + group.off('mousedown'); + + if (mapOrGeoModel.get('selectedMode')) { + + group.on('mousedown', function () { + mapDraw._mouseDownFlag = true; + }); + + group.on('click', function (e) { + if (!mapDraw._mouseDownFlag) { + return; + } + mapDraw._mouseDownFlag = false; + + var el = e.target; + while (!el.__regions) { + el = el.parent; + } + if (!el) { + return; + } + + var action = { + type: (mapOrGeoModel.mainType === 'geo' ? 'geo' : 'map') + 'ToggleSelect', + batch: zrUtil.map(el.__regions, function (region) { + return { + name: region.name, + from: fromView.uid + }; + }) + }; + action[mapOrGeoModel.mainType + 'Id'] = mapOrGeoModel.id; + + api.dispatchAction(action); + + updateMapSelected(mapOrGeoModel, group); + }); + } + } + + function updateMapSelected(mapOrGeoModel, group) { + // FIXME + group.eachChild(function (otherRegionEl) { + zrUtil.each(otherRegionEl.__regions, function (region) { + otherRegionEl.trigger(mapOrGeoModel.isSelected(region.name) ? 'emphasis' : 'normal'); + }); + }); + } + + /** + * @alias module:echarts/component/helper/MapDraw + * @param {module:echarts/ExtensionAPI} api + * @param {boolean} updateGroup + */ + function MapDraw(api, updateGroup) { + + var group = new graphic.Group(); + + /** + * @type {module:echarts/component/helper/RoamController} + * @private + */ + this._controller = new RoamController(api.getZr()); + + /** + * @type {Object} {target, zoom, zoomLimit} + * @private + */ + this._controllerHost = {target: updateGroup ? group : null}; + + /** + * @type {module:zrender/container/Group} + * @readOnly + */ + this.group = group; + + /** + * @type {boolean} + * @private + */ + this._updateGroup = updateGroup; + + /** + * This flag is used to make sure that only one among + * `pan`, `zoom`, `click` can occurs, otherwise 'selected' + * action may be triggered when `pan`, which is unexpected. + * @type {booelan} + */ + this._mouseDownFlag; + } + + MapDraw.prototype = { + + constructor: MapDraw, + + draw: function (mapOrGeoModel, ecModel, api, fromView, payload) { + + var isGeo = mapOrGeoModel.mainType === 'geo'; + + // map series has data, geo model that controlled by map series + // has no data, otherwise data exists. + var data = mapOrGeoModel.getData && mapOrGeoModel.getData(); + isGeo && ecModel.eachComponent({mainType: 'series', subType: 'map'}, function (mapSeries) { + if (!data && mapSeries.getHostGeoModel() === mapOrGeoModel) { + data = mapSeries.getData(); + } + }); + + var geo = mapOrGeoModel.coordinateSystem; + + var group = this.group; + + var scale = geo.scale; + var groupNewProp = { + position: geo.position, + scale: scale + }; + + // No animation when first draw or in action + if (!group.childAt(0) || payload) { + group.attr(groupNewProp); + } + else { + graphic.updateProps(group, groupNewProp, mapOrGeoModel); + } + + group.removeAll(); + + var itemStyleAccessPath = ['itemStyle', 'normal']; + var hoverItemStyleAccessPath = ['itemStyle', 'emphasis']; + var labelAccessPath = ['label', 'normal']; + var hoverLabelAccessPath = ['label', 'emphasis']; + var nameMap = zrUtil.createHashMap(); + + zrUtil.each(geo.regions, function (region) { + + // Consider in GeoJson properties.name may be duplicated, for example, + // there is multiple region named "United Kindom" or "France" (so many + // colonies). And it is not appropriate to merge them in geo, which + // will make them share the same label and bring trouble in label + // location calculation. + var regionGroup = nameMap.get(region.name) + || nameMap.set(region.name, new graphic.Group()); + + var compoundPath = new graphic.CompoundPath({ + shape: { + paths: [] + } + }); + regionGroup.add(compoundPath); + + var regionModel = mapOrGeoModel.getRegionModel(region.name) || mapOrGeoModel; + + var itemStyleModel = regionModel.getModel(itemStyleAccessPath); + var hoverItemStyleModel = regionModel.getModel(hoverItemStyleAccessPath); + var itemStyle = getFixedItemStyle(itemStyleModel, scale); + var hoverItemStyle = getFixedItemStyle(hoverItemStyleModel, scale); + + var labelModel = regionModel.getModel(labelAccessPath); + var hoverLabelModel = regionModel.getModel(hoverLabelAccessPath); + + var dataIdx; + // Use the itemStyle in data if has data + if (data) { + dataIdx = data.indexOfName(region.name); + // Only visual color of each item will be used. It can be encoded by dataRange + // But visual color of series is used in symbol drawing + // + // Visual color for each series is for the symbol draw + var visualColor = data.getItemVisual(dataIdx, 'color', true); + if (visualColor) { + itemStyle.fill = visualColor; + } + } + + var textStyleModel = labelModel.getModel('textStyle'); + var hoverTextStyleModel = hoverLabelModel.getModel('textStyle'); + + zrUtil.each(region.geometries, function (geometry) { + if (geometry.type !== 'polygon') { + return; + } + compoundPath.shape.paths.push(new graphic.Polygon({ + shape: { + points: geometry.exterior + } + })); + + for (var i = 0; i < (geometry.interiors ? geometry.interiors.length : 0); i++) { + compoundPath.shape.paths.push(new graphic.Polygon({ + shape: { + points: geometry.interiors[i] + } + })); + } + }); + + compoundPath.setStyle(itemStyle); + compoundPath.style.strokeNoScale = true; + compoundPath.culling = true; + // Label + var showLabel = labelModel.get('show'); + var hoverShowLabel = hoverLabelModel.get('show'); + + var isDataNaN = data && isNaN(data.get('value', dataIdx)); + var itemLayout = data && data.getItemLayout(dataIdx); + // In the following cases label will be drawn + // 1. In map series and data value is NaN + // 2. In geo component + // 4. Region has no series legendSymbol, which will be add a showLabel flag in mapSymbolLayout + if ( + (isGeo || isDataNaN && (showLabel || hoverShowLabel)) + || (itemLayout && itemLayout.showLabel) + ) { + var query = data ? dataIdx : region.name; + var formattedStr = mapOrGeoModel.getFormattedLabel(query, 'normal'); + var hoverFormattedStr = mapOrGeoModel.getFormattedLabel(query, 'emphasis'); + var text = new graphic.Text({ + style: { + text: showLabel ? (formattedStr || region.name) : '', + fill: textStyleModel.getTextColor(), + textFont: textStyleModel.getFont(), + textAlign: 'center', + textVerticalAlign: 'middle' + }, + hoverStyle: { + text: hoverShowLabel ? (hoverFormattedStr || region.name) : '', + fill: hoverTextStyleModel.getTextColor(), + textFont: hoverTextStyleModel.getFont() + }, + position: region.center.slice(), + scale: [1 / scale[0], 1 / scale[1]], + z2: 10, + silent: true + }); + + regionGroup.add(text); + } + + // setItemGraphicEl, setHoverStyle after all polygons and labels + // are added to the rigionGroup + if (data) { + data.setItemGraphicEl(dataIdx, regionGroup); + } + else { + var regionModel = mapOrGeoModel.getRegionModel(region.name); + // Package custom mouse event for geo component + compoundPath.eventData = { + componentType: 'geo', + geoIndex: mapOrGeoModel.componentIndex, + name: region.name, + region: (regionModel && regionModel.option) || {} + }; + } + + var groupRegions = regionGroup.__regions || (regionGroup.__regions = []); + groupRegions.push(region); + + graphic.setHoverStyle( + regionGroup, + hoverItemStyle, + {hoverSilentOnTouch: !!mapOrGeoModel.get('selectedMode')} + ); + + group.add(regionGroup); + }); + + this._updateController(mapOrGeoModel, ecModel, api); + + updateMapSelectHandler(this, mapOrGeoModel, group, api, fromView); + + updateMapSelected(mapOrGeoModel, group); + }, + + remove: function () { + this.group.removeAll(); + this._controller.dispose(); + this._controllerHost = {}; + }, + + _updateController: function (mapOrGeoModel, ecModel, api) { + var geo = mapOrGeoModel.coordinateSystem; + var controller = this._controller; + var controllerHost = this._controllerHost; + + controllerHost.zoomLimit = mapOrGeoModel.get('scaleLimit'); + controllerHost.zoom = geo.getZoom(); + + // roamType is will be set default true if it is null + controller.enable(mapOrGeoModel.get('roam') || false); + var mainType = mapOrGeoModel.mainType; + + function makeActionBase() { + var action = { + type: 'geoRoam', + componentType: mainType + }; + action[mainType + 'Id'] = mapOrGeoModel.id; + return action; + } + + controller.off('pan').on('pan', function (dx, dy) { + this._mouseDownFlag = false; + + roamHelper.updateViewOnPan(controllerHost, dx, dy); + + api.dispatchAction(zrUtil.extend(makeActionBase(), { + dx: dx, + dy: dy + })); + }, this); + + controller.off('zoom').on('zoom', function (zoom, mouseX, mouseY) { + this._mouseDownFlag = false; + + roamHelper.updateViewOnZoom(controllerHost, zoom, mouseX, mouseY); + + api.dispatchAction(zrUtil.extend(makeActionBase(), { + zoom: zoom, + originX: mouseX, + originY: mouseY + })); + + if (this._updateGroup) { + var group = this.group; + var scale = group.scale; + group.traverse(function (el) { + if (el.type === 'text') { + el.attr('scale', [1 / scale[0], 1 / scale[1]]); + } + }); + } + }, this); + + controller.setPointerChecker(function (e, x, y) { + return geo.getViewRectAfterRoam().contain(x, y) + && !cursorHelper.onIrrelevantElement(e, api, mapOrGeoModel); + }); + } + }; + + module.exports = MapDraw; + + +/***/ }, +/* 183 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * @module echarts/component/helper/RoamController + */ + + + var Eventful = __webpack_require__(25); + var zrUtil = __webpack_require__(4); + var eventTool = __webpack_require__(88); + var interactionMutex = __webpack_require__(184); + + /** + * @alias module:echarts/component/helper/RoamController + * @constructor + * @mixin {module:zrender/mixin/Eventful} + * + * @param {module:zrender/zrender~ZRender} zr + */ + function RoamController(zr) { + + /** + * @type {Function} + */ + this.pointerChecker; + + /** + * @type {module:zrender} + */ + this._zr = zr; + + /** + * @type {Object} + */ + this._opt = {}; + + // Avoid two roamController bind the same handler + var bind = zrUtil.bind; + var mousedownHandler = bind(mousedown, this); + var mousemoveHandler = bind(mousemove, this); + var mouseupHandler = bind(mouseup, this); + var mousewheelHandler = bind(mousewheel, this); + var pinchHandler = bind(pinch, this); + + Eventful.call(this); + + /** + * @param {Function} pointerChecker + * input: x, y + * output: boolean + */ + this.setPointerChecker = function (pointerChecker) { + this.pointerChecker = pointerChecker; + }; + + /** + * Notice: only enable needed types. For example, if 'zoom' + * is not needed, 'zoom' should not be enabled, otherwise + * default mousewheel behaviour (scroll page) will be disabled. + * + * @param {boolean|string} [controlType=true] Specify the control type, + * which can be null/undefined or true/false + * or 'pan/move' or 'zoom'/'scale' + * @param {Object} [opt] + * @param {Object} [opt.zoomOnMouseWheel=true] + * @param {Object} [opt.moveOnMouseMove=true] + * @param {Object} [opt.preventDefaultMouseMove=true] When pan. + */ + this.enable = function (controlType, opt) { + + // Disable previous first + this.disable(); + + this._opt = zrUtil.defaults(zrUtil.clone(opt) || {}, { + zoomOnMouseWheel: true, + moveOnMouseMove: true, + preventDefaultMouseMove: true + }); + + if (controlType == null) { + controlType = true; + } + + if (controlType === true || (controlType === 'move' || controlType === 'pan')) { + zr.on('mousedown', mousedownHandler); + zr.on('mousemove', mousemoveHandler); + zr.on('mouseup', mouseupHandler); + } + if (controlType === true || (controlType === 'scale' || controlType === 'zoom')) { + zr.on('mousewheel', mousewheelHandler); + zr.on('pinch', pinchHandler); + } + }; + + this.disable = function () { + zr.off('mousedown', mousedownHandler); + zr.off('mousemove', mousemoveHandler); + zr.off('mouseup', mouseupHandler); + zr.off('mousewheel', mousewheelHandler); + zr.off('pinch', pinchHandler); + }; + + this.dispose = this.disable; + + this.isDragging = function () { + return this._dragging; + }; + + this.isPinching = function () { + return this._pinching; + }; + } + + zrUtil.mixin(RoamController, Eventful); + + + function mousedown(e) { + if (e.target && e.target.draggable) { + return; + } + + var x = e.offsetX; + var y = e.offsetY; + + // Only check on mosedown, but not mousemove. + // Mouse can be out of target when mouse moving. + if (this.pointerChecker && this.pointerChecker(e, x, y)) { + this._x = x; + this._y = y; + this._dragging = true; + } + } + + function mousemove(e) { + if (!checkKeyBinding(this, 'moveOnMouseMove', e) || !this._dragging) { + return; + } + + if (e.gestureEvent === 'pinch') { + return; + } + + if (interactionMutex.isTaken(this._zr, 'globalPan')) { + return; + } + + var x = e.offsetX; + var y = e.offsetY; + + var oldX = this._x; + var oldY = this._y; + + var dx = x - oldX; + var dy = y - oldY; + + this._x = x; + this._y = y; + + this._opt.preventDefaultMouseMove && eventTool.stop(e.event); + + this.trigger('pan', dx, dy, oldX, oldY, x, y); + } + + function mouseup(e) { + this._dragging = false; + } + + function mousewheel(e) { + // wheelDelta maybe -0 in chrome mac. + if (!checkKeyBinding(this, 'zoomOnMouseWheel', e) || e.wheelDelta === 0) { + return; + } + + // Convenience: + // Mac and VM Windows on Mac: scroll up: zoom out. + // Windows: scroll up: zoom in. + var zoomDelta = e.wheelDelta > 0 ? 1.1 : 1 / 1.1; + zoom.call(this, e, zoomDelta, e.offsetX, e.offsetY); + } + + function pinch(e) { + if (interactionMutex.isTaken(this._zr, 'globalPan')) { + return; + } + var zoomDelta = e.pinchScale > 1 ? 1.1 : 1 / 1.1; + zoom.call(this, e, zoomDelta, e.pinchX, e.pinchY); + } + + function zoom(e, zoomDelta, zoomX, zoomY) { + if (this.pointerChecker && this.pointerChecker(e, zoomX, zoomY)) { + // When mouse is out of roamController rect, + // default befavoius should not be be disabled, otherwise + // page sliding is disabled, contrary to expectation. + eventTool.stop(e.event); + + this.trigger('zoom', zoomDelta, zoomX, zoomY); + } + } + + function checkKeyBinding(roamController, prop, e) { + var setting = roamController._opt[prop]; + return setting + && (!zrUtil.isString(setting) || e.event[setting + 'Key']); + } + + module.exports = RoamController; + + +/***/ }, +/* 184 */ +/***/ function(module, exports, __webpack_require__) { + + + + var ATTR = '\0_ec_interaction_mutex'; + + var interactionMutex = { + + take: function (zr, resourceKey, userKey) { + var store = getStore(zr); + store[resourceKey] = userKey; + }, + + release: function (zr, resourceKey, userKey) { + var store = getStore(zr); + var uKey = store[resourceKey]; + + if (uKey === userKey) { + store[resourceKey] = null; + } + }, + + isTaken: function (zr, resourceKey) { + return !!getStore(zr)[resourceKey]; + } + }; + + function getStore(zr) { + return zr[ATTR] || (zr[ATTR] = {}); + } + + /** + * payload: { + * type: 'takeGlobalCursor', + * key: 'dataZoomSelect', or 'brush', or ..., + * If no userKey, release global cursor. + * } + */ + __webpack_require__(1).registerAction( + {type: 'takeGlobalCursor', event: 'globalCursorTaken', update: 'update'}, + function () {} + ); + + module.exports = interactionMutex; + + +/***/ }, +/* 185 */ +/***/ function(module, exports) { + + + + var helper = {}; + + /** + * For geo and graph. + * + * @param {Object} controllerHost + * @param {module:zrender/Element} controllerHost.target + */ + helper.updateViewOnPan = function (controllerHost, dx, dy) { + var target = controllerHost.target; + var pos = target.position; + pos[0] += dx; + pos[1] += dy; + target.dirty(); + }; + + /** + * For geo and graph. + * + * @param {Object} controllerHost + * @param {module:zrender/Element} controllerHost.target + * @param {number} controllerHost.zoom + * @param {number} controllerHost.zoomLimit like: {min: 1, max: 2} + */ + helper.updateViewOnZoom = function (controllerHost, zoomDelta, zoomX, zoomY) { + var target = controllerHost.target; + var zoomLimit = controllerHost.zoomLimit; + var pos = target.position; + var scale = target.scale; + + var newZoom = controllerHost.zoom = controllerHost.zoom || 1; + newZoom *= zoomDelta; + if (zoomLimit) { + var zoomMin = zoomLimit.min || 0; + var zoomMax = zoomLimit.max || Infinity; + newZoom = Math.max( + Math.min(zoomMax, newZoom), + zoomMin + ); + } + var zoomScale = newZoom / controllerHost.zoom; + controllerHost.zoom = newZoom; + // Keep the mouse center when scaling + pos[0] -= (zoomX - pos[0]) * (zoomScale - 1); + pos[1] -= (zoomY - pos[1]) * (zoomScale - 1); + scale[0] *= zoomScale; + scale[1] *= zoomScale; + + target.dirty(); + }; + + module.exports = helper; + + +/***/ }, +/* 186 */ +/***/ function(module, exports) { + + + + var helper = {}; + + var IRRELEVANT_EXCLUDES = {'axisPointer': 1, 'tooltip': 1, 'brush': 1}; + + /** + * Avoid that: mouse click on a elements that is over geo or graph, + * but roam is triggered. + */ + helper.onIrrelevantElement = function (e, api, targetCoordSysModel) { + var model = api.getComponentByElement(e.topTarget); + // If model is axisModel, it works only if it is injected with coordinateSystem. + var coordSys = model && model.coordinateSystem; + return model + && model !== targetCoordSysModel + && !IRRELEVANT_EXCLUDES[model.mainType] + && (coordSys && coordSys.model !== targetCoordSysModel); + }; + + module.exports = helper; + + +/***/ }, +/* 187 */ +/***/ function(module, exports, __webpack_require__) { + + + + var zrUtil = __webpack_require__(4); + var roamHelper = __webpack_require__(188); + + var echarts = __webpack_require__(1); + + /** + * @payload + * @property {string} [componentType=series] + * @property {number} [dx] + * @property {number} [dy] + * @property {number} [zoom] + * @property {number} [originX] + * @property {number} [originY] + */ + echarts.registerAction({ + type: 'geoRoam', + event: 'geoRoam', + update: 'updateLayout' + }, function (payload, ecModel) { + var componentType = payload.componentType || 'series'; + + ecModel.eachComponent( + { mainType: componentType, query: payload }, + function (componentModel) { + var geo = componentModel.coordinateSystem; + if (geo.type !== 'geo') { + return; + } + + var res = roamHelper.updateCenterAndZoom( + geo, payload, componentModel.get('scaleLimit') + ); + + componentModel.setCenter + && componentModel.setCenter(res.center); + + componentModel.setZoom + && componentModel.setZoom(res.zoom); + + // All map series with same `map` use the same geo coordinate system + // So the center and zoom must be in sync. Include the series not selected by legend + if (componentType === 'series') { + zrUtil.each(componentModel.seriesGroup, function (seriesModel) { + seriesModel.setCenter(res.center); + seriesModel.setZoom(res.zoom); + }); + } + } + ); + }); + + +/***/ }, +/* 188 */ +/***/ function(module, exports) { + + + + var roamHelper = {}; + + /** + * @param {module:echarts/coord/View} view + * @param {Object} payload + * @param {Object} [zoomLimit] + */ + roamHelper.updateCenterAndZoom = function ( + view, payload, zoomLimit + ) { + var previousZoom = view.getZoom(); + var center = view.getCenter(); + var zoom = payload.zoom; + + var point = view.dataToPoint(center); + + if (payload.dx != null && payload.dy != null) { + point[0] -= payload.dx; + point[1] -= payload.dy; + + var center = view.pointToData(point); + view.setCenter(center); + } + if (zoom != null) { + if (zoomLimit) { + var zoomMin = zoomLimit.min || 0; + var zoomMax = zoomLimit.max || Infinity; + zoom = Math.max( + Math.min(previousZoom * zoom, zoomMax), + zoomMin + ) / previousZoom; + } + + // Zoom on given point(originX, originY) + view.scale[0] *= zoom; + view.scale[1] *= zoom; + var position = view.position; + var fixX = (payload.originX - position[0]) * (zoom - 1); + var fixY = (payload.originY - position[1]) * (zoom - 1); + + position[0] -= fixX; + position[1] -= fixY; + + view.updateTransform(); + // Get the new center + var center = view.pointToData(point); + view.setCenter(center); + view.setZoom(zoom * previousZoom); + } + + return { + center: view.getCenter(), + zoom: view.getZoom() + }; + }; + + module.exports = roamHelper; + + +/***/ }, +/* 189 */ +/***/ function(module, exports, __webpack_require__) { + + + + var zrUtil = __webpack_require__(4); + + module.exports = function (ecModel) { + + var processedMapType = {}; + + ecModel.eachSeriesByType('map', function (mapSeries) { + var mapType = mapSeries.getMapType(); + if (mapSeries.getHostGeoModel() || processedMapType[mapType]) { + return; + } + + var mapSymbolOffsets = {}; + + zrUtil.each(mapSeries.seriesGroup, function (subMapSeries) { + var geo = subMapSeries.coordinateSystem; + var data = subMapSeries.originalData; + if (subMapSeries.get('showLegendSymbol') && ecModel.getComponent('legend')) { + data.each('value', function (value, idx) { + var name = data.getName(idx); + var region = geo.getRegion(name); + + // If input series.data is [11, 22, '-'/null/undefined, 44], + // it will be filled with NaN: [11, 22, NaN, 44] and NaN will + // not be drawn. So here must validate if value is NaN. + if (!region || isNaN(value)) { + return; + } + + var offset = mapSymbolOffsets[name] || 0; + + var point = geo.dataToPoint(region.center); + + mapSymbolOffsets[name] = offset + 1; + + data.setItemLayout(idx, { + point: point, + offset: offset + }); + }); + } + }); + + // Show label of those region not has legendSymbol(which is offset 0) + var data = mapSeries.getData(); + data.each(function (idx) { + var name = data.getName(idx); + var layout = data.getItemLayout(idx) || {}; + layout.showLabel = !mapSymbolOffsets[name]; + data.setItemLayout(idx, layout); + }); + + processedMapType[mapType] = true; + }); + }; + + +/***/ }, +/* 190 */ +/***/ function(module, exports) { + + + module.exports = function (ecModel) { + ecModel.eachSeriesByType('map', function (seriesModel) { + var colorList = seriesModel.get('color'); + var itemStyleModel = seriesModel.getModel('itemStyle.normal'); + + var areaColor = itemStyleModel.get('areaColor'); + var color = itemStyleModel.get('color') + || colorList[seriesModel.seriesIndex % colorList.length]; + + seriesModel.getData().setVisual({ + 'areaColor': areaColor, + 'color': color + }); + }); + }; + + +/***/ }, +/* 191 */ +/***/ function(module, exports, __webpack_require__) { + + + + var zrUtil = __webpack_require__(4); + + // FIXME 公用? + /** + * @param {Array.} datas + * @param {string} statisticType 'average' 'sum' + * @inner + */ + function dataStatistics(datas, statisticType) { + var dataNameMap = {}; + var dims = ['value']; + + zrUtil.each(datas, function (data) { + data.each(dims, function (value, idx) { + // Add prefix to avoid conflict with Object.prototype. + var mapKey = 'ec-' + data.getName(idx); + dataNameMap[mapKey] = dataNameMap[mapKey] || []; + if (!isNaN(value)) { + dataNameMap[mapKey].push(value); + } + }); + }); + + return datas[0].map(dims, function (value, idx) { + var mapKey = 'ec-' + datas[0].getName(idx); + var sum = 0; + var min = Infinity; + var max = -Infinity; + var len = dataNameMap[mapKey].length; + for (var i = 0; i < len; i++) { + min = Math.min(min, dataNameMap[mapKey][i]); + max = Math.max(max, dataNameMap[mapKey][i]); + sum += dataNameMap[mapKey][i]; + } + var result; + if (statisticType === 'min') { + result = min; + } + else if (statisticType === 'max') { + result = max; + } + else if (statisticType === 'average') { + result = sum / len; + } + else { + result = sum; + } + return len === 0 ? NaN : result; + }); + } + + module.exports = function (ecModel) { + var seriesGroups = {}; + ecModel.eachSeriesByType('map', function (seriesModel) { + var hostGeoModel = seriesModel.getHostGeoModel(); + var key = hostGeoModel ? 'o' + hostGeoModel.id : 'i' + seriesModel.getMapType(); + (seriesGroups[key] = seriesGroups[key] || []).push(seriesModel); + }); + + zrUtil.each(seriesGroups, function (seriesList, key) { + var data = dataStatistics( + zrUtil.map(seriesList, function (seriesModel) { + return seriesModel.getData(); + }), + seriesList[0].get('mapValueCalculation') + ); + + for (var i = 0; i < seriesList.length; i++) { + seriesList[i].originalData = seriesList[i].getData(); + } + + // FIXME Put where? + for (var i = 0; i < seriesList.length; i++) { + seriesList[i].seriesGroup = seriesList; + seriesList[i].needsDrawMap = i === 0 && !seriesList[i].getHostGeoModel(); + + seriesList[i].setData(data.cloneShallow()); + seriesList[i].mainSeries = seriesList[0]; + } + }); + }; + + +/***/ }, +/* 192 */ +/***/ function(module, exports, __webpack_require__) { + + + + var zrUtil = __webpack_require__(4); + + module.exports = function (option) { + // Save geoCoord + var mapSeries = []; + zrUtil.each(option.series, function (seriesOpt) { + if (seriesOpt.type === 'map') { + mapSeries.push(seriesOpt); + } + }); + + zrUtil.each(mapSeries, function (seriesOpt) { + seriesOpt.map = seriesOpt.map || seriesOpt.mapType; + // Put x, y, width, height, x2, y2 in the top level + zrUtil.defaults(seriesOpt, seriesOpt.mapLocation); + }); + }; + + +/***/ }, +/* 193 */ +/***/ function(module, exports, __webpack_require__) { + + + + var echarts = __webpack_require__(1); + + __webpack_require__(194); + __webpack_require__(198); + __webpack_require__(201); + + echarts.registerVisual(__webpack_require__(202)); + + echarts.registerLayout(__webpack_require__(204)); + + +/***/ }, +/* 194 */ +/***/ function(module, exports, __webpack_require__) { + + + + var SeriesModel = __webpack_require__(78); + var Tree = __webpack_require__(195); + var zrUtil = __webpack_require__(4); + var Model = __webpack_require__(12); + var formatUtil = __webpack_require__(6); + var helper = __webpack_require__(197); + var encodeHTML = formatUtil.encodeHTML; + var addCommas = formatUtil.addCommas; + + + module.exports = SeriesModel.extend({ + + type: 'series.treemap', + + layoutMode: 'box', + + dependencies: ['grid', 'polar'], + + /** + * @type {module:echarts/data/Tree~Node} + */ + _viewRoot: null, + + defaultOption: { + // Disable progressive rendering + progressive: 0, + hoverLayerThreshold: Infinity, + // center: ['50%', '50%'], // not supported in ec3. + // size: ['80%', '80%'], // deprecated, compatible with ec2. + left: 'center', + top: 'middle', + right: null, + bottom: null, + width: '80%', + height: '80%', + sort: true, // Can be null or false or true + // (order by desc default, asc not supported yet (strange effect)) + clipWindow: 'origin', // Size of clipped window when zooming. 'origin' or 'fullscreen' + squareRatio: 0.5 * (1 + Math.sqrt(5)), // golden ratio + leafDepth: null, // Nodes on depth from root are regarded as leaves. + // Count from zero (zero represents only view root). + drillDownIcon: '▶', // Use html character temporarily because it is complicated + // to align specialized icon. ▷▶❒❐▼✚ + + zoomToNodeRatio: 0.32 * 0.32, // Be effective when using zoomToNode. Specify the proportion of the + // target node area in the view area. + roam: true, // true, false, 'scale' or 'zoom', 'move'. + nodeClick: 'zoomToNode', // Leaf node click behaviour: 'zoomToNode', 'link', false. + // If leafDepth is set and clicking a node which has children but + // be on left depth, the behaviour would be changing root. Otherwise + // use behavious defined above. + animation: true, + animationDurationUpdate: 900, + animationEasing: 'quinticInOut', + breadcrumb: { + show: true, + height: 22, + left: 'center', + top: 'bottom', + // right + // bottom + emptyItemWidth: 25, // Width of empty node. + itemStyle: { + normal: { + color: 'rgba(0,0,0,0.7)', //'#5793f3', + borderColor: 'rgba(255,255,255,0.7)', + borderWidth: 1, + shadowColor: 'rgba(150,150,150,1)', + shadowBlur: 3, + shadowOffsetX: 0, + shadowOffsetY: 0, + textStyle: { + color: '#fff' + } + }, + emphasis: { + textStyle: {} + } + } + }, + label: { + normal: { + show: true, + position: 'inside', // Can be [5, '5%'] or position stirng like 'insideTopLeft', ... + // formatter: null, + textStyle: { + color: '#fff', + ellipsis: true + // align + // baseline + } + } + }, + upperLabel: { // Label when node is parent. + normal: { + show: false, + position: [0, '50%'], + height: 20, + // formatter: null, + textStyle: { + color: '#fff', + ellipsis: true, + // align: null, + baseline: 'middle' + } + }, + emphasis: { + show: true, + position: [0, '50%'], + textStyle: { + color: '#fff', + ellipsis: true, + baseline: 'middle' + } + } + }, + itemStyle: { + normal: { + color: null, // Can be 'none' if not necessary. + colorAlpha: null, // Can be 'none' if not necessary. + colorSaturation: null, // Can be 'none' if not necessary. + borderWidth: 0, + gapWidth: 0, + borderColor: '#fff', + borderColorSaturation: null // If specified, borderColor will be ineffective, and the + // border color is evaluated by color of current node and + // borderColorSaturation. + }, + emphasis: { + + } + }, + + visualDimension: 0, // Can be 0, 1, 2, 3. + visualMin: null, + visualMax: null, + + color: [], // + treemapSeries.color should not be modified. Please only modified + // level[n].color (if necessary). + // + Specify color list of each level. level[0].color would be global + // color list if not specified. (see method `setDefault`). + // + But set as a empty array to forbid fetch color from global palette + // when using nodeModel.get('color'), otherwise nodes on deep level + // will always has color palette set and are not able to inherit color + // from parent node. + // + TreemapSeries.color can not be set as 'none', otherwise effect + // legend color fetching (see seriesColor.js). + colorAlpha: null, // Array. Specify color alpha range of each level, like [0.2, 0.8] + colorSaturation: null, // Array. Specify color saturation of each level, like [0.2, 0.5] + colorMappingBy: 'index', // 'value' or 'index' or 'id'. + visibleMin: 10, // If area less than this threshold (unit: pixel^2), node will not + // be rendered. Only works when sort is 'asc' or 'desc'. + childrenVisibleMin: null, // If area of a node less than this threshold (unit: pixel^2), + // grandchildren will not show. + // Why grandchildren? If not grandchildren but children, + // some siblings show children and some not, + // the appearance may be mess and not consistent, + levels: [] // Each item: { + // visibleMin, itemStyle, visualDimension, label + // } + // data: { + // value: [], + // children: [], + // link: 'http://xxx.xxx.xxx', + // target: 'blank' or 'self' + // } + }, + + /** + * @override + */ + getInitialData: function (option, ecModel) { + // Create a virtual root. + var root = {name: option.name, children: option.data}; + + completeTreeValue(root); + + var levels = option.levels || []; + + levels = option.levels = setDefault(levels, ecModel); + + // Make sure always a new tree is created when setOption, + // in TreemapView, we check whether oldTree === newTree + // to choose mappings approach among old shapes and new shapes. + return Tree.createTree(root, this, levels).data; + }, + + optionUpdated: function () { + this.resetViewRoot(); + }, + + /** + * @override + * @param {number} dataIndex + * @param {boolean} [mutipleSeries=false] + */ + formatTooltip: function (dataIndex) { + var data = this.getData(); + var value = this.getRawValue(dataIndex); + var formattedValue = zrUtil.isArray(value) + ? addCommas(value[0]) : addCommas(value); + var name = data.getName(dataIndex); + + return encodeHTML(name + ': ' + formattedValue); + }, + + /** + * Add tree path to tooltip param + * + * @override + * @param {number} dataIndex + * @return {Object} + */ + getDataParams: function (dataIndex) { + var params = SeriesModel.prototype.getDataParams.apply(this, arguments); + + var node = this.getData().tree.getNodeByDataIndex(dataIndex); + params.treePathInfo = helper.wrapTreePathInfo(node, this); + + return params; + }, + + /** + * @public + * @param {Object} layoutInfo { + * x: containerGroup x + * y: containerGroup y + * width: containerGroup width + * height: containerGroup height + * } + */ + setLayoutInfo: function (layoutInfo) { + /** + * @readOnly + * @type {Object} + */ + this.layoutInfo = this.layoutInfo || {}; + zrUtil.extend(this.layoutInfo, layoutInfo); + }, + + /** + * @param {string} id + * @return {number} index + */ + mapIdToIndex: function (id) { + // A feature is implemented: + // index is monotone increasing with the sequence of + // input id at the first time. + // This feature can make sure that each data item and its + // mapped color have the same index between data list and + // color list at the beginning, which is useful for user + // to adjust data-color mapping. + + /** + * @private + * @type {Object} + */ + var idIndexMap = this._idIndexMap; + + if (!idIndexMap) { + idIndexMap = this._idIndexMap = zrUtil.createHashMap(); + /** + * @private + * @type {number} + */ + this._idIndexMapCount = 0; + } + + var index = idIndexMap.get(id); + if (index == null) { + idIndexMap.set(id, index = this._idIndexMapCount++); + } + + return index; + }, + + getViewRoot: function () { + return this._viewRoot; + }, + + /** + * @param {module:echarts/data/Tree~Node} [viewRoot] + */ + resetViewRoot: function (viewRoot) { + viewRoot + ? (this._viewRoot = viewRoot) + : (viewRoot = this._viewRoot); + + var root = this.getData().tree.root; + + if (!viewRoot + || (viewRoot !== root && !root.contains(viewRoot)) + ) { + this._viewRoot = root; + } + } + }); + + /** + * @param {Object} dataNode + */ + function completeTreeValue(dataNode) { + // Postorder travel tree. + // If value of none-leaf node is not set, + // calculate it by suming up the value of all children. + var sum = 0; + + zrUtil.each(dataNode.children, function (child) { + + completeTreeValue(child); + + var childValue = child.value; + zrUtil.isArray(childValue) && (childValue = childValue[0]); + + sum += childValue; + }); + + var thisValue = dataNode.value; + if (zrUtil.isArray(thisValue)) { + thisValue = thisValue[0]; + } + + if (thisValue == null || isNaN(thisValue)) { + thisValue = sum; + } + // Value should not less than 0. + if (thisValue < 0) { + thisValue = 0; + } + + zrUtil.isArray(dataNode.value) + ? (dataNode.value[0] = thisValue) + : (dataNode.value = thisValue); + } + + /** + * set default to level configuration + */ + function setDefault(levels, ecModel) { + var globalColorList = ecModel.get('color'); + + if (!globalColorList) { + return; + } + + levels = levels || []; + var hasColorDefine; + zrUtil.each(levels, function (levelDefine) { + var model = new Model(levelDefine); + var modelColor = model.get('color'); + + if (model.get('itemStyle.normal.color') + || (modelColor && modelColor !== 'none') + ) { + hasColorDefine = true; + } + }); + + if (!hasColorDefine) { + var level0 = levels[0] || (levels[0] = {}); + level0.color = globalColorList.slice(); + } + + return levels; + } + + + +/***/ }, +/* 195 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * Tree data structure + * + * @module echarts/data/Tree + */ + + + var zrUtil = __webpack_require__(4); + var Model = __webpack_require__(12); + var List = __webpack_require__(98); + var linkList = __webpack_require__(196); + var completeDimensions = __webpack_require__(110); + + /** + * @constructor module:echarts/data/Tree~TreeNode + * @param {string} name + * @param {module:echarts/data/Tree} hostTree + */ + var TreeNode = function (name, hostTree) { + /** + * @type {string} + */ + this.name = name || ''; + + /** + * Depth of node + * + * @type {number} + * @readOnly + */ + this.depth = 0; + + /** + * Height of the subtree rooted at this node. + * @type {number} + * @readOnly + */ + this.height = 0; + + /** + * @type {module:echarts/data/Tree~TreeNode} + * @readOnly + */ + this.parentNode = null; + + /** + * Reference to list item. + * Do not persistent dataIndex outside, + * besause it may be changed by list. + * If dataIndex -1, + * this node is logical deleted (filtered) in list. + * + * @type {Object} + * @readOnly + */ + this.dataIndex = -1; + + /** + * @type {Array.} + * @readOnly + */ + this.children = []; + + /** + * @type {Array.} + * @pubilc + */ + this.viewChildren = []; + + /** + * @type {moduel:echarts/data/Tree} + * @readOnly + */ + this.hostTree = hostTree; + }; + + TreeNode.prototype = { + + constructor: TreeNode, + + /** + * The node is removed. + * @return {boolean} is removed. + */ + isRemoved: function () { + return this.dataIndex < 0; + }, + + /** + * Travel this subtree (include this node). + * Usage: + * node.eachNode(function () { ... }); // preorder + * node.eachNode('preorder', function () { ... }); // preorder + * node.eachNode('postorder', function () { ... }); // postorder + * node.eachNode( + * {order: 'postorder', attr: 'viewChildren'}, + * function () { ... } + * ); // postorder + * + * @param {(Object|string)} options If string, means order. + * @param {string=} options.order 'preorder' or 'postorder' + * @param {string=} options.attr 'children' or 'viewChildren' + * @param {Function} cb If in preorder and return false, + * its subtree will not be visited. + * @param {Object} [context] + */ + eachNode: function (options, cb, context) { + if (typeof options === 'function') { + context = cb; + cb = options; + options = null; + } + + options = options || {}; + if (zrUtil.isString(options)) { + options = {order: options}; + } + + var order = options.order || 'preorder'; + var children = this[options.attr || 'children']; + + var suppressVisitSub; + order === 'preorder' && (suppressVisitSub = cb.call(context, this)); + + for (var i = 0; !suppressVisitSub && i < children.length; i++) { + children[i].eachNode(options, cb, context); + } + + order === 'postorder' && cb.call(context, this); + }, + + /** + * Update depth and height of this subtree. + * + * @param {number} depth + */ + updateDepthAndHeight: function (depth) { + var height = 0; + this.depth = depth; + for (var i = 0; i < this.children.length; i++) { + var child = this.children[i]; + child.updateDepthAndHeight(depth + 1); + if (child.height > height) { + height = child.height; + } + } + this.height = height + 1; + }, + + /** + * @param {string} id + * @return {module:echarts/data/Tree~TreeNode} + */ + getNodeById: function (id) { + if (this.getId() === id) { + return this; + } + for (var i = 0, children = this.children, len = children.length; i < len; i++) { + var res = children[i].getNodeById(id); + if (res) { + return res; + } + } + }, + + /** + * @param {module:echarts/data/Tree~TreeNode} node + * @return {boolean} + */ + contains: function (node) { + if (node === this) { + return true; + } + for (var i = 0, children = this.children, len = children.length; i < len; i++) { + var res = children[i].contains(node); + if (res) { + return res; + } + } + }, + + /** + * @param {boolean} includeSelf Default false. + * @return {Array.} order: [root, child, grandchild, ...] + */ + getAncestors: function (includeSelf) { + var ancestors = []; + var node = includeSelf ? this : this.parentNode; + while (node) { + ancestors.push(node); + node = node.parentNode; + } + ancestors.reverse(); + return ancestors; + }, + + /** + * @param {string|Array=} [dimension='value'] Default 'value'. can be 0, 1, 2, 3 + * @return {number} Value. + */ + getValue: function (dimension) { + var data = this.hostTree.data; + return data.get(data.getDimension(dimension || 'value'), this.dataIndex); + }, + + /** + * @param {Object} layout + * @param {boolean=} [merge=false] + */ + setLayout: function (layout, merge) { + this.dataIndex >= 0 + && this.hostTree.data.setItemLayout(this.dataIndex, layout, merge); + }, + + /** + * @return {Object} layout + */ + getLayout: function () { + return this.hostTree.data.getItemLayout(this.dataIndex); + }, + + /** + * @param {string} [path] + * @return {module:echarts/model/Model} + */ + getModel: function (path) { + if (this.dataIndex < 0) { + return; + } + var hostTree = this.hostTree; + var itemModel = hostTree.data.getItemModel(this.dataIndex); + var levelModel = this.getLevelModel(); + + return itemModel.getModel(path, (levelModel || hostTree.hostModel).getModel(path)); + }, + + /** + * @return {module:echarts/model/Model} + */ + getLevelModel: function () { + return (this.hostTree.levelModels || [])[this.depth]; + }, + + /** + * @example + * setItemVisual('color', color); + * setItemVisual({ + * 'color': color + * }); + */ + setVisual: function (key, value) { + this.dataIndex >= 0 + && this.hostTree.data.setItemVisual(this.dataIndex, key, value); + }, + + /** + * Get item visual + */ + getVisual: function (key, ignoreParent) { + return this.hostTree.data.getItemVisual(this.dataIndex, key, ignoreParent); + }, + + /** + * @public + * @return {number} + */ + getRawIndex: function () { + return this.hostTree.data.getRawIndex(this.dataIndex); + }, + + /** + * @public + * @return {string} + */ + getId: function () { + return this.hostTree.data.getId(this.dataIndex); + } + }; + + /** + * @constructor + * @alias module:echarts/data/Tree + * @param {module:echarts/model/Model} hostModel + * @param {Array.} levelOptions + */ + function Tree(hostModel, levelOptions) { + /** + * @type {module:echarts/data/Tree~TreeNode} + * @readOnly + */ + this.root; + + /** + * @type {module:echarts/data/List} + * @readOnly + */ + this.data; + + /** + * Index of each item is the same as the raw index of coresponding list item. + * @private + * @type {Array.} levelOptions + * @return module:echarts/data/Tree + */ + Tree.createTree = function (dataRoot, hostModel, levelOptions) { + + var tree = new Tree(hostModel, levelOptions); + var listData = []; + var dimMax = 1; + + buildHierarchy(dataRoot); + + function buildHierarchy(dataNode, parentNode) { + var value = dataNode.value; + dimMax = Math.max(dimMax, zrUtil.isArray(value) ? value.length : 1); + + listData.push(dataNode); + + var node = new TreeNode(dataNode.name, tree); + parentNode + ? addChild(node, parentNode) + : (tree.root = node); + + tree._nodes.push(node); + + var children = dataNode.children; + if (children) { + for (var i = 0; i < children.length; i++) { + buildHierarchy(children[i], node); + } + } + } + + tree.root.updateDepthAndHeight(0); + + var dimensions = completeDimensions([{name: 'value'}], listData, {dimCount: dimMax}); + var list = new List(dimensions, hostModel); + list.initData(listData); + + linkList({ + mainData: list, + struct: tree, + structAttr: 'tree' + }); + + tree.update(); + + return tree; + }; + + /** + * It is needed to consider the mess of 'list', 'hostModel' when creating a TreeNote, + * so this function is not ready and not necessary to be public. + * + * @param {(module:echarts/data/Tree~TreeNode|Object)} child + */ + function addChild(child, node) { + var children = node.children; + if (child.parentNode === node) { + return; + } + + children.push(child); + child.parentNode = node; + } + + module.exports = Tree; + + +/***/ }, +/* 196 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * Link lists and struct (graph or tree) + */ + + + var zrUtil = __webpack_require__(4); + var each = zrUtil.each; + + var DATAS = '\0__link_datas'; + var MAIN_DATA = '\0__link_mainData'; + + // Caution: + // In most case, either list or its shallow clones (see list.cloneShallow) + // is active in echarts process. So considering heap memory consumption, + // we do not clone tree or graph, but share them among list and its shallow clones. + // But in some rare case, we have to keep old list (like do animation in chart). So + // please take care that both the old list and the new list share the same tree/graph. + + /** + * @param {Object} opt + * @param {module:echarts/data/List} opt.mainData + * @param {Object} [opt.struct] For example, instance of Graph or Tree. + * @param {string} [opt.structAttr] designation: list[structAttr] = struct; + * @param {Object} [opt.datas] {dataType: data}, + * like: {node: nodeList, edge: edgeList}. + * Should contain mainData. + * @param {Object} [opt.datasAttr] {dataType: attr}, + * designation: struct[datasAttr[dataType]] = list; + */ + function linkList(opt) { + var mainData = opt.mainData; + var datas = opt.datas; + + if (!datas) { + datas = {main: mainData}; + opt.datasAttr = {main: 'data'}; + } + opt.datas = opt.mainData = null; + + linkAll(mainData, datas, opt); + + // Porxy data original methods. + each(datas, function (data) { + each(mainData.TRANSFERABLE_METHODS, function (methodName) { + data.wrapMethod(methodName, zrUtil.curry(transferInjection, opt)); + }); + + }); + + // Beyond transfer, additional features should be added to `cloneShallow`. + mainData.wrapMethod('cloneShallow', zrUtil.curry(cloneShallowInjection, opt)); + + // Only mainData trigger change, because struct.update may trigger + // another changable methods, which may bring about dead lock. + each(mainData.CHANGABLE_METHODS, function (methodName) { + mainData.wrapMethod(methodName, zrUtil.curry(changeInjection, opt)); + }); + + // Make sure datas contains mainData. + zrUtil.assert(datas[mainData.dataType] === mainData); + } + + function transferInjection(opt, res) { + if (isMainData(this)) { + // Transfer datas to new main data. + var datas = zrUtil.extend({}, this[DATAS]); + datas[this.dataType] = res; + linkAll(res, datas, opt); + } + else { + // Modify the reference in main data to point newData. + linkSingle(res, this.dataType, this[MAIN_DATA], opt); + } + return res; + } + + function changeInjection(opt, res) { + opt.struct && opt.struct.update(this); + return res; + } + + function cloneShallowInjection(opt, res) { + // cloneShallow, which brings about some fragilities, may be inappropriate + // to be exposed as an API. So for implementation simplicity we can make + // the restriction that cloneShallow of not-mainData should not be invoked + // outside, but only be invoked here. + each(res[DATAS], function (data, dataType) { + data !== res && linkSingle(data.cloneShallow(), dataType, res, opt); + }); + return res; + } + + /** + * Supplement method to List. + * + * @public + * @param {string} [dataType] If not specified, return mainData. + * @return {module:echarts/data/List} + */ + function getLinkedData(dataType) { + var mainData = this[MAIN_DATA]; + return (dataType == null || mainData == null) + ? mainData + : mainData[DATAS][dataType]; + } + + function isMainData(data) { + return data[MAIN_DATA] === data; + } + + function linkAll(mainData, datas, opt) { + mainData[DATAS] = {}; + each(datas, function (data, dataType) { + linkSingle(data, dataType, mainData, opt); + }); + } + + function linkSingle(data, dataType, mainData, opt) { + mainData[DATAS][dataType] = data; + data[MAIN_DATA] = mainData; + data.dataType = dataType; + + if (opt.struct) { + data[opt.structAttr] = opt.struct; + opt.struct[opt.datasAttr[dataType]] = data; + } + + // Supplement method. + data.getLinkedData = getLinkedData; + } + + module.exports = linkList; + + +/***/ }, +/* 197 */ +/***/ function(module, exports, __webpack_require__) { + + + + var zrUtil = __webpack_require__(4); + + var helper = { + + retrieveTargetInfo: function (payload, seriesModel) { + if (payload + && ( + payload.type === 'treemapZoomToNode' + || payload.type === 'treemapRootToNode' + ) + ) { + var root = seriesModel.getData().tree.root; + var targetNode = payload.targetNode; + if (targetNode && root.contains(targetNode)) { + return {node: targetNode}; + } + + var targetNodeId = payload.targetNodeId; + if (targetNodeId != null && (targetNode = root.getNodeById(targetNodeId))) { + return {node: targetNode}; + } + } + }, + + // Not includes the given node at the last item. + getPathToRoot: function (node) { + var path = []; + while (node) { + node = node.parentNode; + node && path.push(node); + } + return path.reverse(); + }, + + aboveViewRoot: function (viewRoot, node) { + var viewPath = helper.getPathToRoot(viewRoot); + return zrUtil.indexOf(viewPath, node) >= 0; + }, + + // From root to the input node (the input node will be included). + wrapTreePathInfo: function (node, seriesModel) { + var treePathInfo = []; + + while (node) { + var nodeDataIndex = node.dataIndex; + treePathInfo.push({ + name: node.name, + dataIndex: nodeDataIndex, + value: seriesModel.getRawValue(nodeDataIndex) + }); + node = node.parentNode; + } + + treePathInfo.reverse(); + + return treePathInfo; + } + }; + + module.exports = helper; + + +/***/ }, +/* 198 */ +/***/ function(module, exports, __webpack_require__) { + + + + var zrUtil = __webpack_require__(4); + var graphic = __webpack_require__(18); + var DataDiffer = __webpack_require__(99); + var helper = __webpack_require__(197); + var Breadcrumb = __webpack_require__(199); + var RoamController = __webpack_require__(183); + var BoundingRect = __webpack_require__(9); + var matrix = __webpack_require__(11); + var animationUtil = __webpack_require__(200); + var bind = zrUtil.bind; + var Group = graphic.Group; + var Rect = graphic.Rect; + var each = zrUtil.each; + + var DRAG_THRESHOLD = 3; + var PATH_LABEL_NOAMAL = ['label', 'normal']; + var PATH_LABEL_EMPHASIS = ['label', 'emphasis']; + var PATH_UPPERLABEL_NORMAL = ['upperLabel', 'normal']; + var PATH_UPPERLABEL_EMPHASIS = ['upperLabel', 'emphasis']; + var Z_BASE = 10; // Should bigger than every z. + var Z_BG = 1; + var Z_CONTENT = 2; + + module.exports = __webpack_require__(1).extendChartView({ + + type: 'treemap', + + /** + * @override + */ + init: function (o, api) { + + /** + * @private + * @type {module:zrender/container/Group} + */ + this._containerGroup; + + /** + * @private + * @type {Object.>} + */ + this._storage = createStorage(); + + /** + * @private + * @type {module:echarts/data/Tree} + */ + this._oldTree; + + /** + * @private + * @type {module:echarts/chart/treemap/Breadcrumb} + */ + this._breadcrumb; + + /** + * @private + * @type {module:echarts/component/helper/RoamController} + */ + this._controller; + + /** + * 'ready', 'animating' + * @private + */ + this._state = 'ready'; + + /** + * @private + * @type {boolean} + */ + this._mayClick; + }, + + /** + * @override + */ + render: function (seriesModel, ecModel, api, payload) { + + var models = ecModel.findComponents({ + mainType: 'series', subType: 'treemap', query: payload + }); + if (zrUtil.indexOf(models, seriesModel) < 0) { + return; + } + + this.seriesModel = seriesModel; + this.api = api; + this.ecModel = ecModel; + + var targetInfo = helper.retrieveTargetInfo(payload, seriesModel); + var payloadType = payload && payload.type; + var layoutInfo = seriesModel.layoutInfo; + var isInit = !this._oldTree; + var thisStorage = this._storage; + + // Mark new root when action is treemapRootToNode. + var reRoot = (payloadType === 'treemapRootToNode' && targetInfo && thisStorage) + ? { + rootNodeGroup: thisStorage.nodeGroup[targetInfo.node.getRawIndex()], + direction: payload.direction + } + : null; + + var containerGroup = this._giveContainerGroup(layoutInfo); + + var renderResult = this._doRender(containerGroup, seriesModel, reRoot); + ( + !isInit && ( + !payloadType + || payloadType === 'treemapZoomToNode' + || payloadType === 'treemapRootToNode' + ) + ) + ? this._doAnimation(containerGroup, renderResult, seriesModel, reRoot) + : renderResult.renderFinally(); + + this._resetController(api); + + this._renderBreadcrumb(seriesModel, api, targetInfo); + }, + + /** + * @private + */ + _giveContainerGroup: function (layoutInfo) { + var containerGroup = this._containerGroup; + if (!containerGroup) { + // FIXME + // 加一层containerGroup是为了clip,但是现在clip功能并没有实现。 + containerGroup = this._containerGroup = new Group(); + this._initEvents(containerGroup); + this.group.add(containerGroup); + } + containerGroup.attr('position', [layoutInfo.x, layoutInfo.y]); + + return containerGroup; + }, + + /** + * @private + */ + _doRender: function (containerGroup, seriesModel, reRoot) { + var thisTree = seriesModel.getData().tree; + var oldTree = this._oldTree; + + // Clear last shape records. + var lastsForAnimation = createStorage(); + var thisStorage = createStorage(); + var oldStorage = this._storage; + var willInvisibleEls = []; + var doRenderNode = zrUtil.curry( + renderNode, seriesModel, + thisStorage, oldStorage, reRoot, + lastsForAnimation, willInvisibleEls + ); + + // Notice: when thisTree and oldTree are the same tree (see list.cloneShadow), + // the oldTree is actually losted, so we can not find all of the old graphic + // elements from tree. So we use this stragegy: make element storage, move + // from old storage to new storage, clear old storage. + + dualTravel( + thisTree.root ? [thisTree.root] : [], + (oldTree && oldTree.root) ? [oldTree.root] : [], + containerGroup, + thisTree === oldTree || !oldTree, + 0 + ); + + // Process all removing. + var willDeleteEls = clearStorage(oldStorage); + + this._oldTree = thisTree; + this._storage = thisStorage; + + return { + lastsForAnimation: lastsForAnimation, + willDeleteEls: willDeleteEls, + renderFinally: renderFinally + }; + + function dualTravel(thisViewChildren, oldViewChildren, parentGroup, sameTree, depth) { + // When 'render' is triggered by action, + // 'this' and 'old' may be the same tree, + // we use rawIndex in that case. + if (sameTree) { + oldViewChildren = thisViewChildren; + each(thisViewChildren, function (child, index) { + !child.isRemoved() && processNode(index, index); + }); + } + // Diff hierarchically (diff only in each subtree, but not whole). + // because, consistency of view is important. + else { + (new DataDiffer(oldViewChildren, thisViewChildren, getKey, getKey)) + .add(processNode) + .update(processNode) + .remove(zrUtil.curry(processNode, null)) + .execute(); + } + + function getKey(node) { + // Identify by name or raw index. + return node.getId(); + } + + function processNode(newIndex, oldIndex) { + var thisNode = newIndex != null ? thisViewChildren[newIndex] : null; + var oldNode = oldIndex != null ? oldViewChildren[oldIndex] : null; + + var group = doRenderNode(thisNode, oldNode, parentGroup, depth); + + group && dualTravel( + thisNode && thisNode.viewChildren || [], + oldNode && oldNode.viewChildren || [], + group, + sameTree, + depth + 1 + ); + } + } + + function clearStorage(storage) { + var willDeleteEls = createStorage(); + storage && each(storage, function (store, storageName) { + var delEls = willDeleteEls[storageName]; + each(store, function (el) { + el && (delEls.push(el), el.__tmWillDelete = 1); + }); + }); + return willDeleteEls; + } + + function renderFinally() { + each(willDeleteEls, function (els) { + each(els, function (el) { + el.parent && el.parent.remove(el); + }); + }); + each(willInvisibleEls, function (el) { + el.invisible = true; + // Setting invisible is for optimizing, so no need to set dirty, + // just mark as invisible. + el.dirty(); + }); + } + }, + + /** + * @private + */ + _doAnimation: function (containerGroup, renderResult, seriesModel, reRoot) { + if (!seriesModel.get('animation')) { + return; + } + + var duration = seriesModel.get('animationDurationUpdate'); + var easing = seriesModel.get('animationEasing'); + var animationWrap = animationUtil.createWrap(); + + // Make delete animations. + each(renderResult.willDeleteEls, function (store, storageName) { + each(store, function (el, rawIndex) { + if (el.invisible) { + return; + } + + var parent = el.parent; // Always has parent, and parent is nodeGroup. + var target; + + if (reRoot && reRoot.direction === 'drillDown') { + target = parent === reRoot.rootNodeGroup + // This is the content element of view root. + // Only `content` will enter this branch, because + // `background` and `nodeGroup` will not be deleted. + ? { + shape: { + x: 0, + y: 0, + width: parent.__tmNodeWidth, + height: parent.__tmNodeHeight + }, + style: { + opacity: 0 + } + } + // Others. + : {style: {opacity: 0}}; + } + else { + var targetX = 0; + var targetY = 0; + + if (!parent.__tmWillDelete) { + // Let node animate to right-bottom corner, cooperating with fadeout, + // which is appropriate for user understanding. + // Divided by 2 for reRoot rolling up effect. + targetX = parent.__tmNodeWidth / 2; + targetY = parent.__tmNodeHeight / 2; + } + + target = storageName === 'nodeGroup' + ? {position: [targetX, targetY], style: {opacity: 0}} + : { + shape: {x: targetX, y: targetY, width: 0, height: 0}, + style: {opacity: 0} + }; + } + + target && animationWrap.add(el, target, duration, easing); + }); + }); + + // Make other animations + each(this._storage, function (store, storageName) { + each(store, function (el, rawIndex) { + var last = renderResult.lastsForAnimation[storageName][rawIndex]; + var target = {}; + + if (!last) { + return; + } + + if (storageName === 'nodeGroup') { + if (last.old) { + target.position = el.position.slice(); + el.attr('position', last.old); + } + } + else { + if (last.old) { + target.shape = zrUtil.extend({}, el.shape); + el.setShape(last.old); + } + + if (last.fadein) { + el.setStyle('opacity', 0); + target.style = {opacity: 1}; + } + // When animation is stopped for succedent animation starting, + // el.style.opacity might not be 1 + else if (el.style.opacity !== 1) { + target.style = {opacity: 1}; + } + } + + animationWrap.add(el, target, duration, easing); + }); + }, this); + + this._state = 'animating'; + + animationWrap + .done(bind(function () { + this._state = 'ready'; + renderResult.renderFinally(); + }, this)) + .start(); + }, + + /** + * @private + */ + _resetController: function (api) { + var controller = this._controller; + + // Init controller. + if (!controller) { + controller = this._controller = new RoamController(api.getZr()); + controller.enable(this.seriesModel.get('roam')); + controller.on('pan', bind(this._onPan, this)); + controller.on('zoom', bind(this._onZoom, this)); + } + + var rect = new BoundingRect(0, 0, api.getWidth(), api.getHeight()); + controller.setPointerChecker(function (e, x, y) { + return rect.contain(x, y); + }); + }, + + /** + * @private + */ + _clearController: function () { + var controller = this._controller; + if (controller) { + controller.dispose(); + controller = null; + } + }, + + /** + * @private + */ + _onPan: function (dx, dy) { + this._mayClick = false; + + if (this._state !== 'animating' + && (Math.abs(dx) > DRAG_THRESHOLD || Math.abs(dy) > DRAG_THRESHOLD) + ) { + // These param must not be cached. + var root = this.seriesModel.getData().tree.root; + + if (!root) { + return; + } + + var rootLayout = root.getLayout(); + + if (!rootLayout) { + return; + } + + this.api.dispatchAction({ + type: 'treemapMove', + from: this.uid, + seriesId: this.seriesModel.id, + rootRect: { + x: rootLayout.x + dx, y: rootLayout.y + dy, + width: rootLayout.width, height: rootLayout.height + } + }); + } + }, + + /** + * @private + */ + _onZoom: function (scale, mouseX, mouseY) { + this._mayClick = false; + + if (this._state !== 'animating') { + // These param must not be cached. + var root = this.seriesModel.getData().tree.root; + + if (!root) { + return; + } + + var rootLayout = root.getLayout(); + + if (!rootLayout) { + return; + } + + var rect = new BoundingRect( + rootLayout.x, rootLayout.y, rootLayout.width, rootLayout.height + ); + var layoutInfo = this.seriesModel.layoutInfo; + + // Transform mouse coord from global to containerGroup. + mouseX -= layoutInfo.x; + mouseY -= layoutInfo.y; + + // Scale root bounding rect. + var m = matrix.create(); + matrix.translate(m, m, [-mouseX, -mouseY]); + matrix.scale(m, m, [scale, scale]); + matrix.translate(m, m, [mouseX, mouseY]); + + rect.applyTransform(m); + + this.api.dispatchAction({ + type: 'treemapRender', + from: this.uid, + seriesId: this.seriesModel.id, + rootRect: { + x: rect.x, y: rect.y, + width: rect.width, height: rect.height + } + }); + } + }, + + /** + * @private + */ + _initEvents: function (containerGroup) { + // FIXME + // 不用click以及silent的原因是,animate时视图设置silent true来避免click生效, + // 但是animate中,按下鼠标,animate结束后(silent设回为false)松开鼠标, + // 还是会触发click,期望是不触发。 + + // Mousedown occurs when drag start, and mouseup occurs when drag end, + // click event should not be triggered in that case. + + containerGroup.on('mousedown', function (e) { + this._state === 'ready' && (this._mayClick = true); + }, this); + containerGroup.on('mouseup', function (e) { + if (this._mayClick) { + this._mayClick = false; + this._state === 'ready' && onClick.call(this, e); + } + }, this); + + function onClick(e) { + var nodeClick = this.seriesModel.get('nodeClick', true); + + if (!nodeClick) { + return; + } + + var targetInfo = this.findTarget(e.offsetX, e.offsetY); + + if (!targetInfo) { + return; + } + + var node = targetInfo.node; + if (node.getLayout().isLeafRoot) { + this._rootToNode(targetInfo); + } + else { + if (nodeClick === 'zoomToNode') { + this._zoomToNode(targetInfo); + } + else if (nodeClick === 'link') { + var itemModel = node.hostTree.data.getItemModel(node.dataIndex); + var link = itemModel.get('link', true); + var linkTarget = itemModel.get('target', true) || 'blank'; + link && window.open(link, linkTarget); + } + } + } + }, + + /** + * @private + */ + _renderBreadcrumb: function (seriesModel, api, targetInfo) { + if (!targetInfo) { + targetInfo = seriesModel.get('leafDepth', true) != null + ? {node: seriesModel.getViewRoot()} + // FIXME + // better way? + // Find breadcrumb tail on center of containerGroup. + : this.findTarget(api.getWidth() / 2, api.getHeight() / 2); + + if (!targetInfo) { + targetInfo = {node: seriesModel.getData().tree.root}; + } + } + + (this._breadcrumb || (this._breadcrumb = new Breadcrumb(this.group))) + .render(seriesModel, api, targetInfo.node, bind(onSelect, this)); + + function onSelect(node) { + if (this._state !== 'animating') { + helper.aboveViewRoot(seriesModel.getViewRoot(), node) + ? this._rootToNode({node: node}) + : this._zoomToNode({node: node}); + } + } + }, + + /** + * @override + */ + remove: function () { + this._clearController(); + this._containerGroup && this._containerGroup.removeAll(); + this._storage = createStorage(); + this._state = 'ready'; + this._breadcrumb && this._breadcrumb.remove(); + }, + + dispose: function () { + this._clearController(); + }, + + /** + * @private + */ + _zoomToNode: function (targetInfo) { + this.api.dispatchAction({ + type: 'treemapZoomToNode', + from: this.uid, + seriesId: this.seriesModel.id, + targetNode: targetInfo.node + }); + }, + + /** + * @private + */ + _rootToNode: function (targetInfo) { + this.api.dispatchAction({ + type: 'treemapRootToNode', + from: this.uid, + seriesId: this.seriesModel.id, + targetNode: targetInfo.node + }); + }, + + /** + * @public + * @param {number} x Global coord x. + * @param {number} y Global coord y. + * @return {Object} info If not found, return undefined; + * @return {number} info.node Target node. + * @return {number} info.offsetX x refer to target node. + * @return {number} info.offsetY y refer to target node. + */ + findTarget: function (x, y) { + var targetInfo; + var viewRoot = this.seriesModel.getViewRoot(); + + viewRoot.eachNode({attr: 'viewChildren', order: 'preorder'}, function (node) { + var bgEl = this._storage.background[node.getRawIndex()]; + // If invisible, there might be no element. + if (bgEl) { + var point = bgEl.transformCoordToLocal(x, y); + var shape = bgEl.shape; + + // For performance consideration, dont use 'getBoundingRect'. + if (shape.x <= point[0] + && point[0] <= shape.x + shape.width + && shape.y <= point[1] + && point[1] <= shape.y + shape.height + ) { + targetInfo = {node: node, offsetX: point[0], offsetY: point[1]}; + } + else { + return false; // Suppress visit subtree. + } + } + }, this); + + return targetInfo; + } + + }); + + /** + * @inner + */ + function createStorage() { + return {nodeGroup: [], background: [], content: []}; + } + + /** + * @inner + * @return Return undefined means do not travel further. + */ + function renderNode( + seriesModel, thisStorage, oldStorage, reRoot, + lastsForAnimation, willInvisibleEls, + thisNode, oldNode, parentGroup, depth + ) { + // Whether under viewRoot. + if (!thisNode) { + // Deleting nodes will be performed finally. This method just find + // element from old storage, or create new element, set them to new + // storage, and set styles. + return; + } + + // ------------------------------------------------------------------- + // Start of closure variables available in "Procedures in renderNode". + + var thisLayout = thisNode.getLayout(); + + if (!thisLayout || !thisLayout.isInView) { + return; + } + + var thisWidth = thisLayout.width; + var thisHeight = thisLayout.height; + var borderWidth = thisLayout.borderWidth; + var thisInvisible = thisLayout.invisible; + + var thisRawIndex = thisNode.getRawIndex(); + var oldRawIndex = oldNode && oldNode.getRawIndex(); + + var thisViewChildren = thisNode.viewChildren; + var upperHeight = thisLayout.upperHeight; + var isParent = thisViewChildren && thisViewChildren.length; + var itemStyleEmphasisModel = thisNode.getModel('itemStyle.emphasis'); + + // End of closure ariables available in "Procedures in renderNode". + // ----------------------------------------------------------------- + + // Node group + var group = giveGraphic('nodeGroup', Group); + + if (!group) { + return; + } + + parentGroup.add(group); + // x,y are not set when el is above view root. + group.attr('position', [thisLayout.x || 0, thisLayout.y || 0]); + group.__tmNodeWidth = thisWidth; + group.__tmNodeHeight = thisHeight; + + if (thisLayout.isAboveViewRoot) { + return group; + } + + // Background + var bg = giveGraphic('background', Rect, depth, Z_BG); + bg && renderBackground(group, bg, isParent && thisLayout.upperHeight); + + // No children, render content. + if (!isParent) { + var content = giveGraphic('content', Rect, depth, Z_CONTENT); + content && renderContent(group, content); + } + + return group; + + // ---------------------------- + // | Procedures in renderNode | + // ---------------------------- + + function renderBackground(group, bg, useUpperLabel) { + // For tooltip. + bg.dataIndex = thisNode.dataIndex; + bg.seriesIndex = seriesModel.seriesIndex; + + bg.setShape({x: 0, y: 0, width: thisWidth, height: thisHeight}); + var visualBorderColor = thisNode.getVisual('borderColor', true); + var emphasisBorderColor = itemStyleEmphasisModel.get('borderColor'); + + updateStyle(bg, function () { + var normalStyle = {fill: visualBorderColor}; + var emphasisStyle = {fill: emphasisBorderColor}; + + if (useUpperLabel) { + var upperLabelWidth = thisWidth - 2 * borderWidth; + + prepareText( + normalStyle, emphasisStyle, visualBorderColor, upperLabelWidth, upperHeight, + {x: borderWidth, y: 0, width: upperLabelWidth, height: upperHeight} + ); + } + // For old bg. + else { + normalStyle.text = emphasisStyle.text = ''; + } + + bg.setStyle(normalStyle); + graphic.setHoverStyle(bg, emphasisStyle); + }); + + group.add(bg); + } + + function renderContent(group, content) { + // For tooltip. + content.dataIndex = thisNode.dataIndex; + content.seriesIndex = seriesModel.seriesIndex; + + var contentWidth = Math.max(thisWidth - 2 * borderWidth, 0); + var contentHeight = Math.max(thisHeight - 2 * borderWidth, 0); + + content.culling = true; + content.setShape({ + x: borderWidth, + y: borderWidth, + width: contentWidth, + height: contentHeight + }); + + var visualColor = thisNode.getVisual('color', true); + updateStyle(content, function () { + var normalStyle = {fill: visualColor}; + var emphasisStyle = itemStyleEmphasisModel.getItemStyle(); + + prepareText(normalStyle, emphasisStyle, visualColor, contentWidth, contentHeight); + + content.setStyle(normalStyle); + graphic.setHoverStyle(content, emphasisStyle); + }); + + group.add(content); + } + + function updateStyle(element, cb) { + if (!thisInvisible) { + // If invisible, do not set visual, otherwise the element will + // change immediately before animation. We think it is OK to + // remain its origin color when moving out of the view window. + cb(); + + if (!element.__tmWillVisible) { + element.invisible = false; + } + } + else { + // Delay invisible setting utill animation finished, + // avoid element vanish suddenly before animation. + !element.invisible && willInvisibleEls.push(element); + } + } + + function prepareText(normalStyle, emphasisStyle, visualColor, width, height, upperLabelRect) { + var nodeModel = thisNode.getModel(); + var text = zrUtil.retrieve( + seriesModel.getFormattedLabel( + thisNode.dataIndex, 'normal', null, null, upperLabelRect ? 'upperLabel' : 'label' + ), + nodeModel.get('name') + ); + if (!upperLabelRect && thisLayout.isLeafRoot) { + var iconChar = seriesModel.get('drillDownIcon', true); + text = iconChar ? iconChar + ' ' + text : text; + } + + setText( + text, normalStyle, nodeModel, upperLabelRect ? PATH_UPPERLABEL_NORMAL : PATH_LABEL_NOAMAL, + visualColor, width, height, upperLabelRect + ); + setText( + text, emphasisStyle, nodeModel, upperLabelRect ? PATH_UPPERLABEL_EMPHASIS : PATH_LABEL_EMPHASIS, + visualColor, width, height, upperLabelRect + ); + } + + function setText(text, style, nodeModel, labelPath, visualColor, width, height, upperLabelRect) { + var labelModel = nodeModel.getModel(labelPath); + var labelTextStyleModel = labelModel.getModel('textStyle'); + + graphic.setText(style, labelModel, visualColor); + + // text.align and text.baseline is not included by graphic.setText, + // because in most cases the two attributes are not exposed to user, + // except in treemap. + style.textAlign = labelTextStyleModel.get('align'); + style.textVerticalAlign = labelTextStyleModel.get('baseline'); + upperLabelRect && (style.textPositionRect = zrUtil.clone(upperLabelRect)); + + var textRect = labelTextStyleModel.getTextRect(text); + if (!labelModel.getShallow('show') || textRect.height > height) { + style.text = ''; + } + else if (textRect.width > width) { + style.text = labelTextStyleModel.get('ellipsis') + ? labelTextStyleModel.truncateText( + text, width, null, {minChar: 2} + ) + : ''; + } + else { + style.text = text; + } + } + + function giveGraphic(storageName, Ctor, depth, z) { + var element = oldRawIndex != null && oldStorage[storageName][oldRawIndex]; + var lasts = lastsForAnimation[storageName]; + + if (element) { + // Remove from oldStorage + oldStorage[storageName][oldRawIndex] = null; + prepareAnimationWhenHasOld(lasts, element, storageName); + } + // If invisible and no old element, do not create new element (for optimizing). + else if (!thisInvisible) { + element = new Ctor({z: calculateZ(depth, z)}); + element.__tmDepth = depth; + element.__tmStorageName = storageName; + prepareAnimationWhenNoOld(lasts, element, storageName); + } + + // Set to thisStorage + return (thisStorage[storageName][thisRawIndex] = element); + } + + function prepareAnimationWhenHasOld(lasts, element, storageName) { + var lastCfg = lasts[thisRawIndex] = {}; + lastCfg.old = storageName === 'nodeGroup' + ? element.position.slice() + : zrUtil.extend({}, element.shape); + } + + // If a element is new, we need to find the animation start point carefully, + // otherwise it will looks strange when 'zoomToNode'. + function prepareAnimationWhenNoOld(lasts, element, storageName) { + var lastCfg = lasts[thisRawIndex] = {}; + var parentNode = thisNode.parentNode; + + if (parentNode && (!reRoot || reRoot.direction === 'drillDown')) { + var parentOldX = 0; + var parentOldY = 0; + + // New nodes appear from right-bottom corner in 'zoomToNode' animation. + // For convenience, get old bounding rect from background. + var parentOldBg = lastsForAnimation.background[parentNode.getRawIndex()]; + if (!reRoot && parentOldBg && parentOldBg.old) { + parentOldX = parentOldBg.old.width; + parentOldY = parentOldBg.old.height; + } + + // When no parent old shape found, its parent is new too, + // so we can just use {x:0, y:0}. + lastCfg.old = storageName === 'nodeGroup' + ? [0, parentOldY] + : {x: parentOldX, y: parentOldY, width: 0, height: 0}; + } + + // Fade in, user can be aware that these nodes are new. + lastCfg.fadein = storageName !== 'nodeGroup'; + } + } + + // We can not set all backgroud with the same z, Because the behaviour of + // drill down and roll up differ background creation sequence from tree + // hierarchy sequence, which cause that lowser background element overlap + // upper ones. So we calculate z based on depth. + // Moreover, we try to shrink down z interval to [0, 1] to avoid that + // treemap with large z overlaps other components. + function calculateZ(depth, zInLevel) { + var zb = depth * Z_BASE + zInLevel; + return (zb - 1) / zb; + } + + + +/***/ }, +/* 199 */ +/***/ function(module, exports, __webpack_require__) { + + + + var graphic = __webpack_require__(18); + var layout = __webpack_require__(71); + var zrUtil = __webpack_require__(4); + var helper = __webpack_require__(197); + + var TEXT_PADDING = 8; + var ITEM_GAP = 8; + var ARRAY_LENGTH = 5; + + function Breadcrumb(containerGroup) { + /** + * @private + * @type {module:zrender/container/Group} + */ + this.group = new graphic.Group(); + + containerGroup.add(this.group); + } + + Breadcrumb.prototype = { + + constructor: Breadcrumb, + + render: function (seriesModel, api, targetNode, onSelect) { + var model = seriesModel.getModel('breadcrumb'); + var thisGroup = this.group; + + thisGroup.removeAll(); + + if (!model.get('show') || !targetNode) { + return; + } + + var normalStyleModel = model.getModel('itemStyle.normal'); + // var emphasisStyleModel = model.getModel('itemStyle.emphasis'); + var textStyleModel = normalStyleModel.getModel('textStyle'); + + var layoutParam = { + pos: { + left: model.get('left'), + right: model.get('right'), + top: model.get('top'), + bottom: model.get('bottom') + }, + box: { + width: api.getWidth(), + height: api.getHeight() + }, + emptyItemWidth: model.get('emptyItemWidth'), + totalWidth: 0, + renderList: [] + }; + + this._prepare(targetNode, layoutParam, textStyleModel); + this._renderContent(seriesModel, layoutParam, normalStyleModel, textStyleModel, onSelect); + + layout.positionElement(thisGroup, layoutParam.pos, layoutParam.box); + }, + + /** + * Prepare render list and total width + * @private + */ + _prepare: function (targetNode, layoutParam, textStyleModel) { + for (var node = targetNode; node; node = node.parentNode) { + var text = node.getModel().get('name'); + var textRect = textStyleModel.getTextRect(text); + var itemWidth = Math.max( + textRect.width + TEXT_PADDING * 2, + layoutParam.emptyItemWidth + ); + layoutParam.totalWidth += itemWidth + ITEM_GAP; + layoutParam.renderList.push({node: node, text: text, width: itemWidth}); + } + }, + + /** + * @private + */ + _renderContent: function ( + seriesModel, layoutParam, normalStyleModel, textStyleModel, onSelect + ) { + // Start rendering. + var lastX = 0; + var emptyItemWidth = layoutParam.emptyItemWidth; + var height = seriesModel.get('breadcrumb.height'); + var availableSize = layout.getAvailableSize(layoutParam.pos, layoutParam.box); + var totalWidth = layoutParam.totalWidth; + var renderList = layoutParam.renderList; + + for (var i = renderList.length - 1; i >= 0; i--) { + var item = renderList[i]; + var itemNode = item.node; + var itemWidth = item.width; + var text = item.text; + + // Hdie text and shorten width if necessary. + if (totalWidth > availableSize.width) { + totalWidth -= itemWidth - emptyItemWidth; + itemWidth = emptyItemWidth; + text = ''; + } + + var el = new graphic.Polygon({ + shape: { + points: makeItemPoints( + lastX, 0, itemWidth, height, + i === renderList.length - 1, i === 0 + ) + }, + style: zrUtil.defaults( + normalStyleModel.getItemStyle(), + { + lineJoin: 'bevel', + text: text, + textFill: textStyleModel.getTextColor(), + textFont: textStyleModel.getFont() + } + ), + z: 10, + onclick: zrUtil.curry(onSelect, itemNode) + }); + this.group.add(el); + + packEventData(el, seriesModel, itemNode); + + lastX += itemWidth + ITEM_GAP; + } + }, + + /** + * @override + */ + remove: function () { + this.group.removeAll(); + } + }; + + function makeItemPoints(x, y, itemWidth, itemHeight, head, tail) { + var points = [ + [head ? x : x - ARRAY_LENGTH, y], + [x + itemWidth, y], + [x + itemWidth, y + itemHeight], + [head ? x : x - ARRAY_LENGTH, y + itemHeight] + ]; + !tail && points.splice(2, 0, [x + itemWidth + ARRAY_LENGTH, y + itemHeight / 2]); + !head && points.push([x, y + itemHeight / 2]); + return points; + } + + // Package custom mouse event. + function packEventData(el, seriesModel, itemNode) { + el.eventData = { + componentType: 'series', + componentSubType: 'treemap', + seriesIndex: seriesModel.componentIndex, + seriesName: seriesModel.name, + seriesType: 'treemap', + selfType: 'breadcrumb', // Distinguish with click event on treemap node. + nodeData: { + dataIndex: itemNode && itemNode.dataIndex, + name: itemNode && itemNode.name + }, + treePathInfo: itemNode && helper.wrapTreePathInfo(itemNode, seriesModel) + }; + } + + module.exports = Breadcrumb; + + +/***/ }, +/* 200 */ +/***/ function(module, exports, __webpack_require__) { + + + + var zrUtil = __webpack_require__(4); + + /** + * @param {number} [time=500] Time in ms + * @param {string} [easing='linear'] + * @param {number} [delay=0] + * @param {Function} [callback] + * + * @example + * // Animate position + * animation + * .createWrap() + * .add(el1, {position: [10, 10]}) + * .add(el2, {shape: {width: 500}, style: {fill: 'red'}}, 400) + * .done(function () { // done }) + * .start('cubicOut'); + */ + function createWrap() { + + var storage = []; + var elExistsMap = {}; + var doneCallback; + + return { + + /** + * Caution: a el can only be added once, otherwise 'done' + * might not be called. This method checks this (by el.id), + * suppresses adding and returns false when existing el found. + * + * @param {modele:zrender/Element} el + * @param {Object} target + * @param {number} [time=500] + * @param {number} [delay=0] + * @param {string} [easing='linear'] + * @return {boolean} Whether adding succeeded. + * + * @example + * add(el, target, time, delay, easing); + * add(el, target, time, easing); + * add(el, target, time); + * add(el, target); + */ + add: function (el, target, time, delay, easing) { + if (zrUtil.isString(delay)) { + easing = delay; + delay = 0; + } + + if (elExistsMap[el.id]) { + return false; + } + elExistsMap[el.id] = 1; + + storage.push( + {el: el, target: target, time: time, delay: delay, easing: easing} + ); + + return true; + }, + + /** + * Only execute when animation finished. Will not execute when any + * of 'stop' or 'stopAnimation' called. + * + * @param {Function} callback + */ + done: function (callback) { + doneCallback = callback; + return this; + }, + + /** + * Will stop exist animation firstly. + */ + start: function () { + var count = storage.length; + + for (var i = 0, len = storage.length; i < len; i++) { + var item = storage[i]; + item.el.animateTo(item.target, item.time, item.delay, item.easing, done); + } + + return this; + + function done() { + count--; + if (!count) { + storage.length = 0; + elExistsMap = {}; + doneCallback && doneCallback(); + } + } + } + }; + } + + module.exports = {createWrap: createWrap}; + + +/***/ }, +/* 201 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * @file Treemap action + */ + + + var echarts = __webpack_require__(1); + var helper = __webpack_require__(197); + + var noop = function () {}; + + var actionTypes = [ + 'treemapZoomToNode', + 'treemapRender', + 'treemapMove' + ]; + + for (var i = 0; i < actionTypes.length; i++) { + echarts.registerAction({type: actionTypes[i], update: 'updateView'}, noop); + } + + echarts.registerAction( + {type: 'treemapRootToNode', update: 'updateView'}, + function (payload, ecModel) { + + ecModel.eachComponent( + {mainType: 'series', subType: 'treemap', query: payload}, + handleRootToNode + ); + + function handleRootToNode(model, index) { + var targetInfo = helper.retrieveTargetInfo(payload, model); + + if (targetInfo) { + var originViewRoot = model.getViewRoot(); + if (originViewRoot) { + payload.direction = helper.aboveViewRoot(originViewRoot, targetInfo.node) + ? 'rollUp' : 'drillDown'; + } + model.resetViewRoot(targetInfo.node); + } + } + } + ); + + + +/***/ }, +/* 202 */ +/***/ function(module, exports, __webpack_require__) { + + + + var VisualMapping = __webpack_require__(203); + var zrColor = __webpack_require__(31); + var zrUtil = __webpack_require__(4); + var isArray = zrUtil.isArray; + + var ITEM_STYLE_NORMAL = 'itemStyle.normal'; + + module.exports = function (ecModel, api, payload) { + + var condition = {mainType: 'series', subType: 'treemap', query: payload}; + ecModel.eachComponent(condition, function (seriesModel) { + + var tree = seriesModel.getData().tree; + var root = tree.root; + var seriesItemStyleModel = seriesModel.getModel(ITEM_STYLE_NORMAL); + + if (root.isRemoved()) { + return; + } + + var levelItemStyles = zrUtil.map(tree.levelModels, function (levelModel) { + return levelModel ? levelModel.get(ITEM_STYLE_NORMAL) : null; + }); + + travelTree( + root, // Visual should calculate from tree root but not view root. + {}, + levelItemStyles, + seriesItemStyleModel, + seriesModel.getViewRoot().getAncestors(), + seriesModel + ); + }); + }; + + function travelTree( + node, designatedVisual, levelItemStyles, seriesItemStyleModel, + viewRootAncestors, seriesModel + ) { + var nodeModel = node.getModel(); + var nodeLayout = node.getLayout(); + + // Optimize + if (!nodeLayout || nodeLayout.invisible || !nodeLayout.isInView) { + return; + } + + var nodeItemStyleModel = node.getModel(ITEM_STYLE_NORMAL); + var levelItemStyle = levelItemStyles[node.depth]; + var visuals = buildVisuals( + nodeItemStyleModel, designatedVisual, levelItemStyle, seriesItemStyleModel + ); + + // calculate border color + var borderColor = nodeItemStyleModel.get('borderColor'); + var borderColorSaturation = nodeItemStyleModel.get('borderColorSaturation'); + var thisNodeColor; + if (borderColorSaturation != null) { + // For performance, do not always execute 'calculateColor'. + thisNodeColor = calculateColor(visuals, node); + borderColor = calculateBorderColor(borderColorSaturation, thisNodeColor); + } + node.setVisual('borderColor', borderColor); + + var viewChildren = node.viewChildren; + if (!viewChildren || !viewChildren.length) { + thisNodeColor = calculateColor(visuals, node); + // Apply visual to this node. + node.setVisual('color', thisNodeColor); + } + else { + var mapping = buildVisualMapping( + node, nodeModel, nodeLayout, nodeItemStyleModel, visuals, viewChildren + ); + + // Designate visual to children. + zrUtil.each(viewChildren, function (child, index) { + // If higher than viewRoot, only ancestors of viewRoot is needed to visit. + if (child.depth >= viewRootAncestors.length + || child === viewRootAncestors[child.depth] + ) { + var childVisual = mapVisual( + nodeModel, visuals, child, index, mapping, seriesModel + ); + travelTree( + child, childVisual, levelItemStyles, seriesItemStyleModel, + viewRootAncestors, seriesModel + ); + } + }); + } + } + + function buildVisuals( + nodeItemStyleModel, designatedVisual, levelItemStyle, seriesItemStyleModel + ) { + var visuals = zrUtil.extend({}, designatedVisual); + + zrUtil.each(['color', 'colorAlpha', 'colorSaturation'], function (visualName) { + // Priority: thisNode > thisLevel > parentNodeDesignated > seriesModel + var val = nodeItemStyleModel.get(visualName, true); // Ignore parent + val == null && levelItemStyle && (val = levelItemStyle[visualName]); + val == null && (val = designatedVisual[visualName]); + val == null && (val = seriesItemStyleModel.get(visualName)); + + val != null && (visuals[visualName] = val); + }); + + return visuals; + } + + function calculateColor(visuals) { + var color = getValueVisualDefine(visuals, 'color'); + + if (color) { + var colorAlpha = getValueVisualDefine(visuals, 'colorAlpha'); + var colorSaturation = getValueVisualDefine(visuals, 'colorSaturation'); + if (colorSaturation) { + color = zrColor.modifyHSL(color, null, null, colorSaturation); + } + if (colorAlpha) { + color = zrColor.modifyAlpha(color, colorAlpha); + } + + return color; + } + } + + function calculateBorderColor(borderColorSaturation, thisNodeColor) { + return thisNodeColor != null + ? zrColor.modifyHSL(thisNodeColor, null, null, borderColorSaturation) + : null; + } + + function getValueVisualDefine(visuals, name) { + var value = visuals[name]; + if (value != null && value !== 'none') { + return value; + } + } + + function buildVisualMapping( + node, nodeModel, nodeLayout, nodeItemStyleModel, visuals, viewChildren + ) { + if (!viewChildren || !viewChildren.length) { + return; + } + + var rangeVisual = getRangeVisual(nodeModel, 'color') + || ( + visuals.color != null + && visuals.color !== 'none' + && ( + getRangeVisual(nodeModel, 'colorAlpha') + || getRangeVisual(nodeModel, 'colorSaturation') + ) + ); + + if (!rangeVisual) { + return; + } + + var visualMin = nodeModel.get('visualMin'); + var visualMax = nodeModel.get('visualMax'); + var dataExtent = nodeLayout.dataExtent.slice(); + visualMin != null && visualMin < dataExtent[0] && (dataExtent[0] = visualMin); + visualMax != null && visualMax > dataExtent[1] && (dataExtent[1] = visualMax); + + var colorMappingBy = nodeModel.get('colorMappingBy'); + var opt = { + type: rangeVisual.name, + dataExtent: dataExtent, + visual: rangeVisual.range + }; + if (opt.type === 'color' + && (colorMappingBy === 'index' || colorMappingBy === 'id') + ) { + opt.mappingMethod = 'category'; + opt.loop = true; + // categories is ordinal, so do not set opt.categories. + } + else { + opt.mappingMethod = 'linear'; + } + + var mapping = new VisualMapping(opt); + mapping.__drColorMappingBy = colorMappingBy; + + return mapping; + } + + // Notice: If we dont have the attribute 'colorRange', but only use + // attribute 'color' to represent both concepts of 'colorRange' and 'color', + // (It means 'colorRange' when 'color' is Array, means 'color' when not array), + // this problem will be encountered: + // If a level-1 node dont have children, and its siblings has children, + // and colorRange is set on level-1, then the node can not be colored. + // So we separate 'colorRange' and 'color' to different attributes. + function getRangeVisual(nodeModel, name) { + // 'colorRange', 'colorARange', 'colorSRange'. + // If not exsits on this node, fetch from levels and series. + var range = nodeModel.get(name); + return (isArray(range) && range.length) ? {name: name, range: range} : null; + } + + function mapVisual(nodeModel, visuals, child, index, mapping, seriesModel) { + var childVisuals = zrUtil.extend({}, visuals); + + if (mapping) { + var mappingType = mapping.type; + var colorMappingBy = mappingType === 'color' && mapping.__drColorMappingBy; + var value = + colorMappingBy === 'index' + ? index + : colorMappingBy === 'id' + ? seriesModel.mapIdToIndex(child.getId()) + : child.getValue(nodeModel.get('visualDimension')); + + childVisuals[mappingType] = mapping.mapValueToVisual(value); + } + + return childVisuals; + } + + + +/***/ }, +/* 203 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * @file Visual mapping. + */ + + + var zrUtil = __webpack_require__(4); + var zrColor = __webpack_require__(31); + var linearMap = __webpack_require__(7).linearMap; + var each = zrUtil.each; + var isObject = zrUtil.isObject; + + var CATEGORY_DEFAULT_VISUAL_INDEX = -1; + + /** + * @param {Object} option + * @param {string} [option.type] See visualHandlers. + * @param {string} [option.mappingMethod] 'linear' or 'piecewise' or 'category' or 'fixed' + * @param {Array.=} [option.dataExtent] [minExtent, maxExtent], + * required when mappingMethod is 'linear' + * @param {Array.=} [option.pieceList] [ + * {value: someValue}, + * {interval: [min1, max1], visual: {...}}, + * {interval: [min2, max2]} + * ], + * required when mappingMethod is 'piecewise'. + * Visual for only each piece can be specified. + * @param {Array.=} [option.categories] ['cate1', 'cate2'] + * required when mappingMethod is 'category'. + * If no option.categories, categories is set + * as [0, 1, 2, ...]. + * @param {boolean} [option.loop=false] Whether loop mapping when mappingMethod is 'category'. + * @param {(Array|Object|*)} [option.visual] Visual data. + * when mappingMethod is 'category', + * visual data can be array or object + * (like: {cate1: '#222', none: '#fff'}) + * or primary types (which represents + * defualt category visual), otherwise visual + * can be array or primary (which will be + * normalized to array). + * + */ + var VisualMapping = function (option) { + var mappingMethod = option.mappingMethod; + var visualType = option.type; + + /** + * @readOnly + * @type {Object} + */ + var thisOption = this.option = zrUtil.clone(option); + + /** + * @readOnly + * @type {string} + */ + this.type = visualType; + + /** + * @readOnly + * @type {string} + */ + this.mappingMethod = mappingMethod; + + /** + * @private + * @type {Function} + */ + this._normalizeData = normalizers[mappingMethod]; + + var visualHandler = visualHandlers[visualType]; + + /** + * @public + * @type {Function} + */ + this.applyVisual = visualHandler.applyVisual; + + /** + * @public + * @type {Function} + */ + this.getColorMapper = visualHandler.getColorMapper; + + /** + * @private + * @type {Function} + */ + this._doMap = visualHandler._doMap[mappingMethod]; + + if (mappingMethod === 'piecewise') { + normalizeVisualRange(thisOption); + preprocessForPiecewise(thisOption); + } + else if (mappingMethod === 'category') { + thisOption.categories + ? preprocessForSpecifiedCategory(thisOption) + // categories is ordinal when thisOption.categories not specified, + // which need no more preprocess except normalize visual. + : normalizeVisualRange(thisOption, true); + } + else { // mappingMethod === 'linear' or 'fixed' + zrUtil.assert(mappingMethod !== 'linear' || thisOption.dataExtent); + normalizeVisualRange(thisOption); + } + }; + + VisualMapping.prototype = { + + constructor: VisualMapping, + + mapValueToVisual: function (value) { + var normalized = this._normalizeData(value); + return this._doMap(normalized, value); + }, + + getNormalizer: function () { + return zrUtil.bind(this._normalizeData, this); + } + }; + + var visualHandlers = VisualMapping.visualHandlers = { + + color: { + + applyVisual: makeApplyVisual('color'), + + /** + * Create a mapper function + * @return {Function} + */ + getColorMapper: function () { + var thisOption = this.option; + + return zrUtil.bind( + thisOption.mappingMethod === 'category' + ? function (value, isNormalized) { + !isNormalized && (value = this._normalizeData(value)); + return doMapCategory.call(this, value); + } + : function (value, isNormalized, out) { + // If output rgb array + // which will be much faster and useful in pixel manipulation + var returnRGBArray = !!out; + !isNormalized && (value = this._normalizeData(value)); + out = zrColor.fastMapToColor(value, thisOption.parsedVisual, out); + return returnRGBArray ? out : zrColor.stringify(out, 'rgba'); + }, + this + ); + }, + + _doMap: { + linear: function (normalized) { + return zrColor.stringify( + zrColor.fastMapToColor(normalized, this.option.parsedVisual), + 'rgba' + ); + }, + category: doMapCategory, + piecewise: function (normalized, value) { + var result = getSpecifiedVisual.call(this, value); + if (result == null) { + result = zrColor.stringify( + zrColor.fastMapToColor(normalized, this.option.parsedVisual), + 'rgba' + ); + } + return result; + }, + fixed: doMapFixed + } + }, + + colorHue: makePartialColorVisualHandler(function (color, value) { + return zrColor.modifyHSL(color, value); + }), + + colorSaturation: makePartialColorVisualHandler(function (color, value) { + return zrColor.modifyHSL(color, null, value); + }), + + colorLightness: makePartialColorVisualHandler(function (color, value) { + return zrColor.modifyHSL(color, null, null, value); + }), + + colorAlpha: makePartialColorVisualHandler(function (color, value) { + return zrColor.modifyAlpha(color, value); + }), + + opacity: { + applyVisual: makeApplyVisual('opacity'), + _doMap: makeDoMap([0, 1]) + }, + + symbol: { + applyVisual: function (value, getter, setter) { + var symbolCfg = this.mapValueToVisual(value); + if (zrUtil.isString(symbolCfg)) { + setter('symbol', symbolCfg); + } + else if (isObject(symbolCfg)) { + for (var name in symbolCfg) { + if (symbolCfg.hasOwnProperty(name)) { + setter(name, symbolCfg[name]); + } + } + } + }, + _doMap: { + linear: doMapToArray, + category: doMapCategory, + piecewise: function (normalized, value) { + var result = getSpecifiedVisual.call(this, value); + if (result == null) { + result = doMapToArray.call(this, normalized); + } + return result; + }, + fixed: doMapFixed + } + }, + + symbolSize: { + applyVisual: makeApplyVisual('symbolSize'), + _doMap: makeDoMap([0, 1]) + } + }; + + + function preprocessForPiecewise(thisOption) { + var pieceList = thisOption.pieceList; + thisOption.hasSpecialVisual = false; + + zrUtil.each(pieceList, function (piece, index) { + piece.originIndex = index; + // piece.visual is "result visual value" but not + // a visual range, so it does not need to be normalized. + if (piece.visual != null) { + thisOption.hasSpecialVisual = true; + } + }); + } + + function preprocessForSpecifiedCategory(thisOption) { + // Hash categories. + var categories = thisOption.categories; + var visual = thisOption.visual; + + var categoryMap = thisOption.categoryMap = {}; + each(categories, function (cate, index) { + categoryMap[cate] = index; + }); + + // Process visual map input. + if (!zrUtil.isArray(visual)) { + var visualArr = []; + + if (zrUtil.isObject(visual)) { + each(visual, function (v, cate) { + var index = categoryMap[cate]; + visualArr[index != null ? index : CATEGORY_DEFAULT_VISUAL_INDEX] = v; + }); + } + else { // Is primary type, represents default visual. + visualArr[CATEGORY_DEFAULT_VISUAL_INDEX] = visual; + } + + visual = setVisualToOption(thisOption, visualArr); + } + + // Remove categories that has no visual, + // then we can mapping them to CATEGORY_DEFAULT_VISUAL_INDEX. + for (var i = categories.length - 1; i >= 0; i--) { + if (visual[i] == null) { + delete categoryMap[categories[i]]; + categories.pop(); + } + } + } + + function normalizeVisualRange(thisOption, isCategory) { + var visual = thisOption.visual; + var visualArr = []; + + if (zrUtil.isObject(visual)) { + each(visual, function (v) { + visualArr.push(v); + }); + } + else if (visual != null) { + visualArr.push(visual); + } + + var doNotNeedPair = {color: 1, symbol: 1}; + + if (!isCategory + && visualArr.length === 1 + && !doNotNeedPair.hasOwnProperty(thisOption.type) + ) { + // Do not care visualArr.length === 0, which is illegal. + visualArr[1] = visualArr[0]; + } + + setVisualToOption(thisOption, visualArr); + } + + function makePartialColorVisualHandler(applyValue) { + return { + applyVisual: function (value, getter, setter) { + value = this.mapValueToVisual(value); + // Must not be array value + setter('color', applyValue(getter('color'), value)); + }, + _doMap: makeDoMap([0, 1]) + }; + } + + function doMapToArray(normalized) { + var visual = this.option.visual; + return visual[ + Math.round(linearMap(normalized, [0, 1], [0, visual.length - 1], true)) + ] || {}; + } + + function makeApplyVisual(visualType) { + return function (value, getter, setter) { + setter(visualType, this.mapValueToVisual(value)); + }; + } + + function doMapCategory(normalized) { + var visual = this.option.visual; + return visual[ + (this.option.loop && normalized !== CATEGORY_DEFAULT_VISUAL_INDEX) + ? normalized % visual.length + : normalized + ]; + } + + function doMapFixed() { + return this.option.visual[0]; + } + + function makeDoMap(sourceExtent) { + return { + linear: function (normalized) { + return linearMap(normalized, sourceExtent, this.option.visual, true); + }, + category: doMapCategory, + piecewise: function (normalized, value) { + var result = getSpecifiedVisual.call(this, value); + if (result == null) { + result = linearMap(normalized, sourceExtent, this.option.visual, true); + } + return result; + }, + fixed: doMapFixed + }; + } + + function getSpecifiedVisual(value) { + var thisOption = this.option; + var pieceList = thisOption.pieceList; + if (thisOption.hasSpecialVisual) { + var pieceIndex = VisualMapping.findPieceIndex(value, pieceList); + var piece = pieceList[pieceIndex]; + if (piece && piece.visual) { + return piece.visual[this.type]; + } + } + } + + function setVisualToOption(thisOption, visualArr) { + thisOption.visual = visualArr; + if (thisOption.type === 'color') { + thisOption.parsedVisual = zrUtil.map(visualArr, function (item) { + return zrColor.parse(item); + }); + } + return visualArr; + } + + + /** + * Normalizers by mapping methods. + */ + var normalizers = { + + linear: function (value) { + return linearMap(value, this.option.dataExtent, [0, 1], true); + }, + + piecewise: function (value) { + var pieceList = this.option.pieceList; + var pieceIndex = VisualMapping.findPieceIndex(value, pieceList, true); + if (pieceIndex != null) { + return linearMap(pieceIndex, [0, pieceList.length - 1], [0, 1], true); + } + }, + + category: function (value) { + var index = this.option.categories + ? this.option.categoryMap[value] + : value; // ordinal + return index == null ? CATEGORY_DEFAULT_VISUAL_INDEX : index; + }, + + fixed: zrUtil.noop + }; + + + + /** + * List available visual types. + * + * @public + * @return {Array.} + */ + VisualMapping.listVisualTypes = function () { + var visualTypes = []; + zrUtil.each(visualHandlers, function (handler, key) { + visualTypes.push(key); + }); + return visualTypes; + }; + + /** + * @public + */ + VisualMapping.addVisualHandler = function (name, handler) { + visualHandlers[name] = handler; + }; + + /** + * @public + */ + VisualMapping.isValidType = function (visualType) { + return visualHandlers.hasOwnProperty(visualType); + }; + + /** + * Convinent method. + * Visual can be Object or Array or primary type. + * + * @public + */ + VisualMapping.eachVisual = function (visual, callback, context) { + if (zrUtil.isObject(visual)) { + zrUtil.each(visual, callback, context); + } + else { + callback.call(context, visual); + } + }; + + VisualMapping.mapVisual = function (visual, callback, context) { + var isPrimary; + var newVisual = zrUtil.isArray(visual) + ? [] + : zrUtil.isObject(visual) + ? {} + : (isPrimary = true, null); + + VisualMapping.eachVisual(visual, function (v, key) { + var newVal = callback.call(context, v, key); + isPrimary ? (newVisual = newVal) : (newVisual[key] = newVal); + }); + return newVisual; + }; + + /** + * @public + * @param {Object} obj + * @return {Oject} new object containers visual values. + * If no visuals, return null. + */ + VisualMapping.retrieveVisuals = function (obj) { + var ret = {}; + var hasVisual; + + obj && each(visualHandlers, function (h, visualType) { + if (obj.hasOwnProperty(visualType)) { + ret[visualType] = obj[visualType]; + hasVisual = true; + } + }); + + return hasVisual ? ret : null; + }; + + /** + * Give order to visual types, considering colorSaturation, colorAlpha depends on color. + * + * @public + * @param {(Object|Array)} visualTypes If Object, like: {color: ..., colorSaturation: ...} + * IF Array, like: ['color', 'symbol', 'colorSaturation'] + * @return {Array.} Sorted visual types. + */ + VisualMapping.prepareVisualTypes = function (visualTypes) { + if (isObject(visualTypes)) { + var types = []; + each(visualTypes, function (item, type) { + types.push(type); + }); + visualTypes = types; + } + else if (zrUtil.isArray(visualTypes)) { + visualTypes = visualTypes.slice(); + } + else { + return []; + } + + visualTypes.sort(function (type1, type2) { + // color should be front of colorSaturation, colorAlpha, ... + // symbol and symbolSize do not matter. + return (type2 === 'color' && type1 !== 'color' && type1.indexOf('color') === 0) + ? 1 : -1; + }); + + return visualTypes; + }; + + /** + * 'color', 'colorSaturation', 'colorAlpha', ... are depends on 'color'. + * Other visuals are only depends on themself. + * + * @public + * @param {string} visualType1 + * @param {string} visualType2 + * @return {boolean} + */ + VisualMapping.dependsOn = function (visualType1, visualType2) { + return visualType2 === 'color' + ? !!(visualType1 && visualType1.indexOf(visualType2) === 0) + : visualType1 === visualType2; + }; + + /** + * @param {number} value + * @param {Array.} pieceList [{value: ..., interval: [min, max]}, ...] + * Always from small to big. + * @param {boolean} [findClosestWhenOutside=false] + * @return {number} index + */ + VisualMapping.findPieceIndex = function (value, pieceList, findClosestWhenOutside) { + var possibleI; + var abs = Infinity; + + // value has the higher priority. + for (var i = 0, len = pieceList.length; i < len; i++) { + var pieceValue = pieceList[i].value; + if (pieceValue != null) { + if (pieceValue === value + // FIXME + // It is supposed to compare value according to value type of dimension, + // but currently value type can exactly be string or number. + // Compromise for numeric-like string (like '12'), especially + // in the case that visualMap.categories is ['22', '33']. + || (typeof pieceValue === 'string' && pieceValue === value + '') + ) { + return i; + } + findClosestWhenOutside && updatePossible(pieceValue, i); + } + } + + for (var i = 0, len = pieceList.length; i < len; i++) { + var piece = pieceList[i]; + var interval = piece.interval; + var close = piece.close; + + if (interval) { + if (interval[0] === -Infinity) { + if (littleThan(close[1], value, interval[1])) { + return i; + } + } + else if (interval[1] === Infinity) { + if (littleThan(close[0], interval[0], value)) { + return i; + } + } + else if ( + littleThan(close[0], interval[0], value) + && littleThan(close[1], value, interval[1]) + ) { + return i; + } + findClosestWhenOutside && updatePossible(interval[0], i); + findClosestWhenOutside && updatePossible(interval[1], i); + } + } + + if (findClosestWhenOutside) { + return value === Infinity + ? pieceList.length - 1 + : value === -Infinity + ? 0 + : possibleI; + } + + function updatePossible(val, index) { + var newAbs = Math.abs(val - value); + if (newAbs < abs) { + abs = newAbs; + possibleI = index; + } + } + + }; + + function littleThan(close, a, b) { + return close ? a <= b : a < b; + } + + module.exports = VisualMapping; + + + +/***/ }, +/* 204 */ +/***/ function(module, exports, __webpack_require__) { + + + + var zrUtil = __webpack_require__(4); + var numberUtil = __webpack_require__(7); + var layout = __webpack_require__(71); + var helper = __webpack_require__(197); + var BoundingRect = __webpack_require__(9); + var helper = __webpack_require__(197); + + var mathMax = Math.max; + var mathMin = Math.min; + var parsePercent = numberUtil.parsePercent; + var retrieveValue = zrUtil.retrieve; + var each = zrUtil.each; + + var PATH_BORDER_WIDTH = ['itemStyle', 'normal', 'borderWidth']; + var PATH_GAP_WIDTH = ['itemStyle', 'normal', 'gapWidth']; + var PATH_UPPER_LABEL_SHOW = ['upperLabel', 'normal', 'show']; + var PATH_UPPER_LABEL_HEIGHT = ['upperLabel', 'normal', 'height']; + + /** + * @public + */ + function update(ecModel, api, payload) { + // Layout result in each node: + // {x, y, width, height, area, borderWidth} + var condition = {mainType: 'series', subType: 'treemap', query: payload}; + ecModel.eachComponent(condition, function (seriesModel) { + + var ecWidth = api.getWidth(); + var ecHeight = api.getHeight(); + var seriesOption = seriesModel.option; + + var layoutInfo = layout.getLayoutRect( + seriesModel.getBoxLayoutParams(), + { + width: api.getWidth(), + height: api.getHeight() + } + ); + + var size = seriesOption.size || []; // Compatible with ec2. + var containerWidth = parsePercent( + retrieveValue(layoutInfo.width, size[0]), + ecWidth + ); + var containerHeight = parsePercent( + retrieveValue(layoutInfo.height, size[1]), + ecHeight + ); + + // Fetch payload info. + var payloadType = payload && payload.type; + var targetInfo = helper.retrieveTargetInfo(payload, seriesModel); + var rootRect = (payloadType === 'treemapRender' || payloadType === 'treemapMove') + ? payload.rootRect : null; + var viewRoot = seriesModel.getViewRoot(); + var viewAbovePath = helper.getPathToRoot(viewRoot); + + if (payloadType !== 'treemapMove') { + var rootSize = payloadType === 'treemapZoomToNode' + ? estimateRootSize( + seriesModel, targetInfo, viewRoot, containerWidth, containerHeight + ) + : rootRect + ? [rootRect.width, rootRect.height] + : [containerWidth, containerHeight]; + + var sort = seriesOption.sort; + if (sort && sort !== 'asc' && sort !== 'desc') { + sort = 'desc'; + } + var options = { + squareRatio: seriesOption.squareRatio, + sort: sort, + leafDepth: seriesOption.leafDepth + }; + + // layout should be cleared because using updateView but not update. + viewRoot.hostTree.clearLayouts(); + + // TODO + // optimize: if out of view clip, do not layout. + // But take care that if do not render node out of view clip, + // how to calculate start po + + var viewRootLayout = { + x: 0, y: 0, + width: rootSize[0], height: rootSize[1], + area: rootSize[0] * rootSize[1] + }; + viewRoot.setLayout(viewRootLayout); + + squarify(viewRoot, options, false, 0); + // Supplement layout. + var viewRootLayout = viewRoot.getLayout(); + each(viewAbovePath, function (node, index) { + var childValue = (viewAbovePath[index + 1] || viewRoot).getValue(); + node.setLayout(zrUtil.extend( + {dataExtent: [childValue, childValue], borderWidth: 0, upperHeight: 0}, + viewRootLayout + )); + }); + } + + var treeRoot = seriesModel.getData().tree.root; + + treeRoot.setLayout( + calculateRootPosition(layoutInfo, rootRect, targetInfo), + true + ); + + seriesModel.setLayoutInfo(layoutInfo); + + // FIXME + // 现在没有clip功能,暂时取ec高宽。 + prunning( + treeRoot, + // Transform to base element coordinate system. + new BoundingRect(-layoutInfo.x, -layoutInfo.y, ecWidth, ecHeight), + viewAbovePath, + viewRoot, + 0 + ); + }); + } + + /** + * Layout treemap with squarify algorithm. + * @see https://graphics.ethz.ch/teaching/scivis_common/Literature/squarifiedTreeMaps.pdf + * @see https://github.com/mbostock/d3/blob/master/src/layout/treemap.js + * + * @protected + * @param {module:echarts/data/Tree~TreeNode} node + * @param {Object} options + * @param {string} options.sort 'asc' or 'desc' + * @param {number} options.squareRatio + * @param {boolean} hideChildren + * @param {number} depth + */ + function squarify(node, options, hideChildren, depth) { + var width; + var height; + + if (node.isRemoved()) { + return; + } + + var thisLayout = node.getLayout(); + width = thisLayout.width; + height = thisLayout.height; + + // Considering border and gap + var nodeModel = node.getModel(); + var borderWidth = nodeModel.get(PATH_BORDER_WIDTH); + var halfGapWidth = nodeModel.get(PATH_GAP_WIDTH) / 2; + var upperLabelHeight = getUpperLabelHeight(nodeModel); + var upperHeight = Math.max(borderWidth, upperLabelHeight); + var layoutOffset = borderWidth - halfGapWidth; + var layoutOffsetUpper = upperHeight - halfGapWidth; + var nodeModel = node.getModel(); + + node.setLayout({ + borderWidth: borderWidth, + upperHeight: upperHeight, + upperLabelHeight: upperLabelHeight + }, true); + + width = mathMax(width - 2 * layoutOffset, 0); + height = mathMax(height - layoutOffset - layoutOffsetUpper, 0); + + var totalArea = width * height; + var viewChildren = initChildren( + node, nodeModel, totalArea, options, hideChildren, depth + ); + + if (!viewChildren.length) { + return; + } + + var rect = {x: layoutOffset, y: layoutOffsetUpper, width: width, height: height}; + var rowFixedLength = mathMin(width, height); + var best = Infinity; // the best row score so far + var row = []; + row.area = 0; + + for (var i = 0, len = viewChildren.length; i < len;) { + var child = viewChildren[i]; + + row.push(child); + row.area += child.getLayout().area; + var score = worst(row, rowFixedLength, options.squareRatio); + + // continue with this orientation + if (score <= best) { + i++; + best = score; + } + // abort, and try a different orientation + else { + row.area -= row.pop().getLayout().area; + position(row, rowFixedLength, rect, halfGapWidth, false); + rowFixedLength = mathMin(rect.width, rect.height); + row.length = row.area = 0; + best = Infinity; + } + } + + if (row.length) { + position(row, rowFixedLength, rect, halfGapWidth, true); + } + + if (!hideChildren) { + var childrenVisibleMin = nodeModel.get('childrenVisibleMin'); + if (childrenVisibleMin != null && totalArea < childrenVisibleMin) { + hideChildren = true; + } + } + + for (var i = 0, len = viewChildren.length; i < len; i++) { + squarify(viewChildren[i], options, hideChildren, depth + 1); + } + } + + /** + * Set area to each child, and calculate data extent for visual coding. + */ + function initChildren(node, nodeModel, totalArea, options, hideChildren, depth) { + var viewChildren = node.children || []; + var orderBy = options.sort; + orderBy !== 'asc' && orderBy !== 'desc' && (orderBy = null); + + var overLeafDepth = options.leafDepth != null && options.leafDepth <= depth; + + // leafDepth has higher priority. + if (hideChildren && !overLeafDepth) { + return (node.viewChildren = []); + } + + // Sort children, order by desc. + viewChildren = zrUtil.filter(viewChildren, function (child) { + return !child.isRemoved(); + }); + + sort(viewChildren, orderBy); + + var info = statistic(nodeModel, viewChildren, orderBy); + + if (info.sum === 0) { + return (node.viewChildren = []); + } + + info.sum = filterByThreshold(nodeModel, totalArea, info.sum, orderBy, viewChildren); + + if (info.sum === 0) { + return (node.viewChildren = []); + } + + // Set area to each child. + for (var i = 0, len = viewChildren.length; i < len; i++) { + var area = viewChildren[i].getValue() / info.sum * totalArea; + // Do not use setLayout({...}, true), because it is needed to clear last layout. + viewChildren[i].setLayout({area: area}); + } + + if (overLeafDepth) { + viewChildren.length && node.setLayout({isLeafRoot: true}, true); + viewChildren.length = 0; + } + + node.viewChildren = viewChildren; + node.setLayout({dataExtent: info.dataExtent}, true); + + return viewChildren; + } + + /** + * Consider 'visibleMin'. Modify viewChildren and get new sum. + */ + function filterByThreshold(nodeModel, totalArea, sum, orderBy, orderedChildren) { + + // visibleMin is not supported yet when no option.sort. + if (!orderBy) { + return sum; + } + + var visibleMin = nodeModel.get('visibleMin'); + var len = orderedChildren.length; + var deletePoint = len; + + // Always travel from little value to big value. + for (var i = len - 1; i >= 0; i--) { + var value = orderedChildren[ + orderBy === 'asc' ? len - i - 1 : i + ].getValue(); + + if (value / sum * totalArea < visibleMin) { + deletePoint = i; + sum -= value; + } + } + + orderBy === 'asc' + ? orderedChildren.splice(0, len - deletePoint) + : orderedChildren.splice(deletePoint, len - deletePoint); + + return sum; + } + + /** + * Sort + */ + function sort(viewChildren, orderBy) { + if (orderBy) { + viewChildren.sort(function (a, b) { + var diff = orderBy === 'asc' + ? a.getValue() - b.getValue() : b.getValue() - a.getValue(); + return diff === 0 + ? (orderBy === 'asc' + ? a.dataIndex - b.dataIndex : b.dataIndex - a.dataIndex + ) + : diff; + }); + } + return viewChildren; + } + + /** + * Statistic + */ + function statistic(nodeModel, children, orderBy) { + // Calculate sum. + var sum = 0; + for (var i = 0, len = children.length; i < len; i++) { + sum += children[i].getValue(); + } + + // Statistic data extent for latter visual coding. + // Notice: data extent should be calculate based on raw children + // but not filtered view children, otherwise visual mapping will not + // be stable when zoom (where children is filtered by visibleMin). + + var dimension = nodeModel.get('visualDimension'); + var dataExtent; + + // The same as area dimension. + if (!children || !children.length) { + dataExtent = [NaN, NaN]; + } + else if (dimension === 'value' && orderBy) { + dataExtent = [ + children[children.length - 1].getValue(), + children[0].getValue() + ]; + orderBy === 'asc' && dataExtent.reverse(); + } + // Other dimension. + else { + var dataExtent = [Infinity, -Infinity]; + each(children, function (child) { + var value = child.getValue(dimension); + value < dataExtent[0] && (dataExtent[0] = value); + value > dataExtent[1] && (dataExtent[1] = value); + }); + } + + return {sum: sum, dataExtent: dataExtent}; + } + + /** + * Computes the score for the specified row, + * as the worst aspect ratio. + */ + function worst(row, rowFixedLength, ratio) { + var areaMax = 0; + var areaMin = Infinity; + + for (var i = 0, area, len = row.length; i < len; i++) { + area = row[i].getLayout().area; + if (area) { + area < areaMin && (areaMin = area); + area > areaMax && (areaMax = area); + } + } + + var squareArea = row.area * row.area; + var f = rowFixedLength * rowFixedLength * ratio; + + return squareArea + ? mathMax( + (f * areaMax) / squareArea, + squareArea / (f * areaMin) + ) + : Infinity; + } + + /** + * Positions the specified row of nodes. Modifies `rect`. + */ + function position(row, rowFixedLength, rect, halfGapWidth, flush) { + // When rowFixedLength === rect.width, + // it is horizontal subdivision, + // rowFixedLength is the width of the subdivision, + // rowOtherLength is the height of the subdivision, + // and nodes will be positioned from left to right. + + // wh[idx0WhenH] means: when horizontal, + // wh[idx0WhenH] => wh[0] => 'width'. + // xy[idx1WhenH] => xy[1] => 'y'. + var idx0WhenH = rowFixedLength === rect.width ? 0 : 1; + var idx1WhenH = 1 - idx0WhenH; + var xy = ['x', 'y']; + var wh = ['width', 'height']; + + var last = rect[xy[idx0WhenH]]; + var rowOtherLength = rowFixedLength + ? row.area / rowFixedLength : 0; + + if (flush || rowOtherLength > rect[wh[idx1WhenH]]) { + rowOtherLength = rect[wh[idx1WhenH]]; // over+underflow + } + for (var i = 0, rowLen = row.length; i < rowLen; i++) { + var node = row[i]; + var nodeLayout = {}; + var step = rowOtherLength + ? node.getLayout().area / rowOtherLength : 0; + + var wh1 = nodeLayout[wh[idx1WhenH]] = mathMax(rowOtherLength - 2 * halfGapWidth, 0); + + // We use Math.max/min to avoid negative width/height when considering gap width. + var remain = rect[xy[idx0WhenH]] + rect[wh[idx0WhenH]] - last; + var modWH = (i === rowLen - 1 || remain < step) ? remain : step; + var wh0 = nodeLayout[wh[idx0WhenH]] = mathMax(modWH - 2 * halfGapWidth, 0); + + nodeLayout[xy[idx1WhenH]] = rect[xy[idx1WhenH]] + mathMin(halfGapWidth, wh1 / 2); + nodeLayout[xy[idx0WhenH]] = last + mathMin(halfGapWidth, wh0 / 2); + + last += modWH; + node.setLayout(nodeLayout, true); + } + + rect[xy[idx1WhenH]] += rowOtherLength; + rect[wh[idx1WhenH]] -= rowOtherLength; + } + + // Return [containerWidth, containerHeight] as defualt. + function estimateRootSize(seriesModel, targetInfo, viewRoot, containerWidth, containerHeight) { + // If targetInfo.node exists, we zoom to the node, + // so estimate whold width and heigth by target node. + var currNode = (targetInfo || {}).node; + var defaultSize = [containerWidth, containerHeight]; + + if (!currNode || currNode === viewRoot) { + return defaultSize; + } + + var parent; + var viewArea = containerWidth * containerHeight; + var area = viewArea * seriesModel.option.zoomToNodeRatio; + + while (parent = currNode.parentNode) { // jshint ignore:line + var sum = 0; + var siblings = parent.children; + + for (var i = 0, len = siblings.length; i < len; i++) { + sum += siblings[i].getValue(); + } + var currNodeValue = currNode.getValue(); + if (currNodeValue === 0) { + return defaultSize; + } + area *= sum / currNodeValue; + + // Considering border, suppose aspect ratio is 1. + var parentModel = parent.getModel(); + var borderWidth = parentModel.get(PATH_BORDER_WIDTH); + var upperHeight = Math.max(borderWidth, getUpperLabelHeight(parentModel, borderWidth)); + area += 4 * borderWidth * borderWidth + + (3 * borderWidth + upperHeight) * Math.pow(area, 0.5); + + area > numberUtil.MAX_SAFE_INTEGER && (area = numberUtil.MAX_SAFE_INTEGER); + + currNode = parent; + } + + area < viewArea && (area = viewArea); + var scale = Math.pow(area / viewArea, 0.5); + + return [containerWidth * scale, containerHeight * scale]; + } + + // Root postion base on coord of containerGroup + function calculateRootPosition(layoutInfo, rootRect, targetInfo) { + if (rootRect) { + return {x: rootRect.x, y: rootRect.y}; + } + + var defaultPosition = {x: 0, y: 0}; + if (!targetInfo) { + return defaultPosition; + } + + // If targetInfo is fetched by 'retrieveTargetInfo', + // old tree and new tree are the same tree, + // so the node still exists and we can visit it. + + var targetNode = targetInfo.node; + var layout = targetNode.getLayout(); + + if (!layout) { + return defaultPosition; + } + + // Transform coord from local to container. + var targetCenter = [layout.width / 2, layout.height / 2]; + var node = targetNode; + while (node) { + var nodeLayout = node.getLayout(); + targetCenter[0] += nodeLayout.x; + targetCenter[1] += nodeLayout.y; + node = node.parentNode; + } + + return { + x: layoutInfo.width / 2 - targetCenter[0], + y: layoutInfo.height / 2 - targetCenter[1] + }; + } + + // Mark nodes visible for prunning when visual coding and rendering. + // Prunning depends on layout and root position, so we have to do it after layout. + function prunning(node, clipRect, viewAbovePath, viewRoot, depth) { + var nodeLayout = node.getLayout(); + var nodeInViewAbovePath = viewAbovePath[depth]; + var isAboveViewRoot = nodeInViewAbovePath && nodeInViewAbovePath === node; + + if ( + (nodeInViewAbovePath && !isAboveViewRoot) + || (depth === viewAbovePath.length && node !== viewRoot) + ) { + return; + } + + node.setLayout({ + // isInView means: viewRoot sub tree + viewAbovePath + isInView: true, + // invisible only means: outside view clip so that the node can not + // see but still layout for animation preparation but not render. + invisible: !isAboveViewRoot && !clipRect.intersect(nodeLayout), + isAboveViewRoot: isAboveViewRoot + }, true); + + // Transform to child coordinate. + var childClipRect = new BoundingRect( + clipRect.x - nodeLayout.x, + clipRect.y - nodeLayout.y, + clipRect.width, + clipRect.height + ); + + each(node.viewChildren || [], function (child) { + prunning(child, childClipRect, viewAbovePath, viewRoot, depth + 1); + }); + } + + function getUpperLabelHeight(model) { + return model.get(PATH_UPPER_LABEL_SHOW) ? model.get(PATH_UPPER_LABEL_HEIGHT) : 0; + } + + module.exports = update; + + +/***/ }, +/* 205 */ +/***/ function(module, exports, __webpack_require__) { + + + + var echarts = __webpack_require__(1); + var zrUtil = __webpack_require__(4); + + __webpack_require__(206); + __webpack_require__(209); + + __webpack_require__(214); + + echarts.registerProcessor(__webpack_require__(215)); + + echarts.registerVisual(zrUtil.curry( + __webpack_require__(121), 'graph', 'circle', null + )); + echarts.registerVisual(__webpack_require__(216)); + echarts.registerVisual(__webpack_require__(217)); + + echarts.registerLayout(__webpack_require__(218)); + echarts.registerLayout(__webpack_require__(221)); + echarts.registerLayout(__webpack_require__(223)); + + // Graph view coordinate system + echarts.registerCoordinateSystem('graphView', { + create: __webpack_require__(225) + }); + + +/***/ }, +/* 206 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + + var List = __webpack_require__(98); + var zrUtil = __webpack_require__(4); + var modelUtil = __webpack_require__(5); + var Model = __webpack_require__(12); + var formatUtil = __webpack_require__(6); + + var createGraphFromNodeEdge = __webpack_require__(207); + + var GraphSeries = __webpack_require__(1).extendSeriesModel({ + + type: 'series.graph', + + init: function (option) { + GraphSeries.superApply(this, 'init', arguments); + + // Provide data for legend select + this.legendDataProvider = function () { + return this._categoriesData; + }; + + this.fillDataTextStyle(option.edges || option.links); + + this._updateCategoriesData(); + }, + + mergeOption: function (option) { + GraphSeries.superApply(this, 'mergeOption', arguments); + + this.fillDataTextStyle(option.edges || option.links); + + this._updateCategoriesData(); + }, + + mergeDefaultAndTheme: function (option) { + GraphSeries.superApply(this, 'mergeDefaultAndTheme', arguments); + modelUtil.defaultEmphasis(option.edgeLabel, modelUtil.LABEL_OPTIONS); + }, + + getInitialData: function (option, ecModel) { + var edges = option.edges || option.links || []; + var nodes = option.data || option.nodes || []; + var self = this; + + if (nodes && edges) { + return createGraphFromNodeEdge(nodes, edges, this, true, beforeLink).data; + } + + function beforeLink(nodeData, edgeData) { + // Overwrite nodeData.getItemModel to + nodeData.wrapMethod('getItemModel', function (model) { + var categoriesModels = self._categoriesModels; + var categoryIdx = model.getShallow('category'); + var categoryModel = categoriesModels[categoryIdx]; + if (categoryModel) { + categoryModel.parentModel = model.parentModel; + model.parentModel = categoryModel; + } + return model; + }); + + var edgeLabelModel = self.getModel('edgeLabel'); + // For option `edgeLabel` can be found by label.xxx.xxx on item mode. + var fakeSeriesModel = new Model( + {label: edgeLabelModel.option}, + edgeLabelModel.parentModel, + ecModel + ); + + edgeData.wrapMethod('getItemModel', function (model) { + model.customizeGetParent(edgeGetParent); + return model; + }); + + function edgeGetParent(path) { + path = this.parsePath(path); + return (path && path[0] === 'label') + ? fakeSeriesModel + : this.parentModel; + } + } + }, + + /** + * @return {module:echarts/data/Graph} + */ + getGraph: function () { + return this.getData().graph; + }, + + /** + * @return {module:echarts/data/List} + */ + getEdgeData: function () { + return this.getGraph().edgeData; + }, + + /** + * @return {module:echarts/data/List} + */ + getCategoriesData: function () { + return this._categoriesData; + }, + + /** + * @override + */ + formatTooltip: function (dataIndex, multipleSeries, dataType) { + if (dataType === 'edge') { + var nodeData = this.getData(); + var params = this.getDataParams(dataIndex, dataType); + var edge = nodeData.graph.getEdgeByIndex(dataIndex); + var sourceName = nodeData.getName(edge.node1.dataIndex); + var targetName = nodeData.getName(edge.node2.dataIndex); + + var html = []; + sourceName != null && html.push(sourceName); + targetName != null && html.push(targetName); + html = formatUtil.encodeHTML(html.join(' > ')); + + if (params.value) { + html += ' : ' + formatUtil.encodeHTML(params.value); + } + return html; + } + else { // dataType === 'node' or empty + return GraphSeries.superApply(this, 'formatTooltip', arguments); + } + }, + + _updateCategoriesData: function () { + var categories = zrUtil.map(this.option.categories || [], function (category) { + // Data must has value + return category.value != null ? category : zrUtil.extend({ + value: 0 + }, category); + }); + var categoriesData = new List(['value'], this); + categoriesData.initData(categories); + + this._categoriesData = categoriesData; + + this._categoriesModels = categoriesData.mapArray(function (idx) { + return categoriesData.getItemModel(idx, true); + }); + }, + + setZoom: function (zoom) { + this.option.zoom = zoom; + }, + + setCenter: function (center) { + this.option.center = center; + }, + + isAnimationEnabled: function () { + return GraphSeries.superCall(this, 'isAnimationEnabled') + // Not enable animation when do force layout + && !(this.get('layout') === 'force' && this.get('force.layoutAnimation')); + }, + + defaultOption: { + zlevel: 0, + z: 2, + + coordinateSystem: 'view', + + // Default option for all coordinate systems + // xAxisIndex: 0, + // yAxisIndex: 0, + // polarIndex: 0, + // geoIndex: 0, + + legendHoverLink: true, + + hoverAnimation: true, + + layout: null, + + focusNodeAdjacency: false, + + // Configuration of circular layout + circular: { + rotateLabel: false + }, + // Configuration of force directed layout + force: { + initLayout: null, + // Node repulsion. Can be an array to represent range. + repulsion: [0, 50], + gravity: 0.1, + + // Edge length. Can be an array to represent range. + edgeLength: 30, + + layoutAnimation: true + }, + + left: 'center', + top: 'center', + // right: null, + // bottom: null, + // width: '80%', + // height: '80%', + + symbol: 'circle', + symbolSize: 10, + + edgeSymbol: ['none', 'none'], + edgeSymbolSize: 10, + edgeLabel: { + normal: { + position: 'middle' + }, + emphasis: {} + }, + + draggable: false, + + roam: false, + + // Default on center of graph + center: null, + + zoom: 1, + // Symbol size scale ratio in roam + nodeScaleRatio: 0.6, + // cursor: null, + + // categories: [], + + // data: [] + // Or + // nodes: [] + // + // links: [] + // Or + // edges: [] + + label: { + normal: { + show: false, + formatter: '{b}' + }, + emphasis: { + show: true + } + }, + + itemStyle: { + normal: {}, + emphasis: {} + }, + + lineStyle: { + normal: { + color: '#aaa', + width: 1, + curveness: 0, + opacity: 0.5 + }, + emphasis: {} + } + } + }); + + module.exports = GraphSeries; + + +/***/ }, +/* 207 */ +/***/ function(module, exports, __webpack_require__) { + + + + var List = __webpack_require__(98); + var Graph = __webpack_require__(208); + var linkList = __webpack_require__(196); + var completeDimensions = __webpack_require__(110); + var CoordinateSystem = __webpack_require__(76); + var zrUtil = __webpack_require__(4); + var createListFromArray = __webpack_require__(109); + + module.exports = function (nodes, edges, hostModel, directed, beforeLink) { + var graph = new Graph(directed); + for (var i = 0; i < nodes.length; i++) { + graph.addNode(zrUtil.retrieve( + // Id, name, dataIndex + nodes[i].id, nodes[i].name, i + ), i); + } + + var linkNameList = []; + var validEdges = []; + var linkCount = 0; + for (var i = 0; i < edges.length; i++) { + var link = edges[i]; + var source = link.source; + var target = link.target; + // addEdge may fail when source or target not exists + if (graph.addEdge(source, target, linkCount)) { + validEdges.push(link); + linkNameList.push(zrUtil.retrieve(link.id, source + ' > ' + target)); + linkCount++; + } + } + + var coordSys = hostModel.get('coordinateSystem'); + var nodeData; + if (coordSys === 'cartesian2d' || coordSys === 'polar') { + nodeData = createListFromArray(nodes, hostModel, hostModel.ecModel); + } + else { + // FIXME + var coordSysCtor = CoordinateSystem.get(coordSys); + // FIXME + var dimensionNames = completeDimensions( + ((coordSysCtor && coordSysCtor.type !== 'view') ? (coordSysCtor.dimensions || []) : []).concat(['value']), + nodes + ); + nodeData = new List(dimensionNames, hostModel); + nodeData.initData(nodes); + } + + var edgeData = new List(['value'], hostModel); + edgeData.initData(validEdges, linkNameList); + + beforeLink && beforeLink(nodeData, edgeData); + + linkList({ + mainData: nodeData, + struct: graph, + structAttr: 'graph', + datas: {node: nodeData, edge: edgeData}, + datasAttr: {node: 'data', edge: 'edgeData'} + }); + + // Update dataIndex of nodes and edges because invalid edge may be removed + graph.update(); + + return graph; + }; + + +/***/ }, +/* 208 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + /** + * Graph data structure + * + * @module echarts/data/Graph + * @author Yi Shen(https://www.github.com/pissang) + */ + + + var zrUtil = __webpack_require__(4); + + // id may be function name of Object, add a prefix to avoid this problem. + function generateNodeKey (id) { + return '_EC_' + id; + } + /** + * @alias module:echarts/data/Graph + * @constructor + * @param {boolean} directed + */ + var Graph = function(directed) { + /** + * 是否是有向图 + * @type {boolean} + * @private + */ + this._directed = directed || false; + + /** + * @type {Array.} + * @readOnly + */ + this.nodes = []; + + /** + * @type {Array.} + * @readOnly + */ + this.edges = []; + + /** + * @type {Object.} + * @private + */ + this._nodesMap = {}; + /** + * @type {Object.} + * @private + */ + this._edgesMap = {}; + + /** + * @type {module:echarts/data/List} + * @readOnly + */ + this.data; + + /** + * @type {module:echarts/data/List} + * @readOnly + */ + this.edgeData; + }; + + var graphProto = Graph.prototype; + /** + * @type {string} + */ + graphProto.type = 'graph'; + + /** + * If is directed graph + * @return {boolean} + */ + graphProto.isDirected = function () { + return this._directed; + }; + + /** + * Add a new node + * @param {string} id + * @param {number} [dataIndex] + */ + graphProto.addNode = function (id, dataIndex) { + id = id || ('' + dataIndex); + + var nodesMap = this._nodesMap; + + if (nodesMap[generateNodeKey(id)]) { + if (true) { + console.error('Graph nodes have duplicate name or id'); + } + return; + } + + var node = new Node(id, dataIndex); + node.hostGraph = this; + + this.nodes.push(node); + + nodesMap[generateNodeKey(id)] = node; + return node; + }; + + /** + * Get node by data index + * @param {number} dataIndex + * @return {module:echarts/data/Graph~Node} + */ + graphProto.getNodeByIndex = function (dataIndex) { + var rawIdx = this.data.getRawIndex(dataIndex); + return this.nodes[rawIdx]; + }; + /** + * Get node by id + * @param {string} id + * @return {module:echarts/data/Graph.Node} + */ + graphProto.getNodeById = function (id) { + return this._nodesMap[generateNodeKey(id)]; + }; + + /** + * Add a new edge + * @param {number|string|module:echarts/data/Graph.Node} n1 + * @param {number|string|module:echarts/data/Graph.Node} n2 + * @param {number} [dataIndex=-1] + * @return {module:echarts/data/Graph.Edge} + */ + graphProto.addEdge = function (n1, n2, dataIndex) { + var nodesMap = this._nodesMap; + var edgesMap = this._edgesMap; + + // PNEDING + if (typeof n1 === 'number') { + n1 = this.nodes[n1]; + } + if (typeof n2 === 'number') { + n2 = this.nodes[n2]; + } + + if (!(n1 instanceof Node)) { + n1 = nodesMap[generateNodeKey(n1)]; + } + if (!(n2 instanceof Node)) { + n2 = nodesMap[generateNodeKey(n2)]; + } + if (!n1 || !n2) { + return; + } + + var key = n1.id + '-' + n2.id; + // PENDING + if (edgesMap[key]) { + return; + } + + var edge = new Edge(n1, n2, dataIndex); + edge.hostGraph = this; + + if (this._directed) { + n1.outEdges.push(edge); + n2.inEdges.push(edge); + } + n1.edges.push(edge); + if (n1 !== n2) { + n2.edges.push(edge); + } + + this.edges.push(edge); + edgesMap[key] = edge; + + return edge; + }; + + /** + * Get edge by data index + * @param {number} dataIndex + * @return {module:echarts/data/Graph~Node} + */ + graphProto.getEdgeByIndex = function (dataIndex) { + var rawIdx = this.edgeData.getRawIndex(dataIndex); + return this.edges[rawIdx]; + }; + /** + * Get edge by two linked nodes + * @param {module:echarts/data/Graph.Node|string} n1 + * @param {module:echarts/data/Graph.Node|string} n2 + * @return {module:echarts/data/Graph.Edge} + */ + graphProto.getEdge = function (n1, n2) { + if (n1 instanceof Node) { + n1 = n1.id; + } + if (n2 instanceof Node) { + n2 = n2.id; + } + + var edgesMap = this._edgesMap; + + if (this._directed) { + return edgesMap[n1 + '-' + n2]; + } else { + return edgesMap[n1 + '-' + n2] + || edgesMap[n2 + '-' + n1]; + } + }; + + /** + * Iterate all nodes + * @param {Function} cb + * @param {*} [context] + */ + graphProto.eachNode = function (cb, context) { + var nodes = this.nodes; + var len = nodes.length; + for (var i = 0; i < len; i++) { + if (nodes[i].dataIndex >= 0) { + cb.call(context, nodes[i], i); + } + } + }; + + /** + * Iterate all edges + * @param {Function} cb + * @param {*} [context] + */ + graphProto.eachEdge = function (cb, context) { + var edges = this.edges; + var len = edges.length; + for (var i = 0; i < len; i++) { + if (edges[i].dataIndex >= 0 + && edges[i].node1.dataIndex >= 0 + && edges[i].node2.dataIndex >= 0 + ) { + cb.call(context, edges[i], i); + } + } + }; + + /** + * Breadth first traverse + * @param {Function} cb + * @param {module:echarts/data/Graph.Node} startNode + * @param {string} [direction='none'] 'none'|'in'|'out' + * @param {*} [context] + */ + graphProto.breadthFirstTraverse = function ( + cb, startNode, direction, context + ) { + if (!(startNode instanceof Node)) { + startNode = this._nodesMap[generateNodeKey(startNode)]; + } + if (!startNode) { + return; + } + + var edgeType = direction === 'out' + ? 'outEdges' : (direction === 'in' ? 'inEdges' : 'edges'); + + for (var i = 0; i < this.nodes.length; i++) { + this.nodes[i].__visited = false; + } + + if (cb.call(context, startNode, null)) { + return; + } + + var queue = [startNode]; + while (queue.length) { + var currentNode = queue.shift(); + var edges = currentNode[edgeType]; + + for (var i = 0; i < edges.length; i++) { + var e = edges[i]; + var otherNode = e.node1 === currentNode + ? e.node2 : e.node1; + if (!otherNode.__visited) { + if (cb.call(context, otherNode, currentNode)) { + // Stop traversing + return; + } + queue.push(otherNode); + otherNode.__visited = true; + } + } + } + }; + + // TODO + // graphProto.depthFirstTraverse = function ( + // cb, startNode, direction, context + // ) { + + // }; + + // Filter update + graphProto.update = function () { + var data = this.data; + var edgeData = this.edgeData; + var nodes = this.nodes; + var edges = this.edges; + + for (var i = 0, len = nodes.length; i < len; i++) { + nodes[i].dataIndex = -1; + } + for (var i = 0, len = data.count(); i < len; i++) { + nodes[data.getRawIndex(i)].dataIndex = i; + } + + edgeData.filterSelf(function (idx) { + var edge = edges[edgeData.getRawIndex(idx)]; + return edge.node1.dataIndex >= 0 && edge.node2.dataIndex >= 0; + }); + + // Update edge + for (var i = 0, len = edges.length; i < len; i++) { + edges[i].dataIndex = -1; + } + for (var i = 0, len = edgeData.count(); i < len; i++) { + edges[edgeData.getRawIndex(i)].dataIndex = i; + } + }; + + /** + * @return {module:echarts/data/Graph} + */ + graphProto.clone = function () { + var graph = new Graph(this._directed); + var nodes = this.nodes; + var edges = this.edges; + for (var i = 0; i < nodes.length; i++) { + graph.addNode(nodes[i].id, nodes[i].dataIndex); + } + for (var i = 0; i < edges.length; i++) { + var e = edges[i]; + graph.addEdge(e.node1.id, e.node2.id, e.dataIndex); + } + return graph; + }; + + + /** + * @alias module:echarts/data/Graph.Node + */ + function Node(id, dataIndex) { + /** + * @type {string} + */ + this.id = id == null ? '' : id; + + /** + * @type {Array.} + */ + this.inEdges = []; + /** + * @type {Array.} + */ + this.outEdges = []; + /** + * @type {Array.} + */ + this.edges = []; + /** + * @type {module:echarts/data/Graph} + */ + this.hostGraph; + + /** + * @type {number} + */ + this.dataIndex = dataIndex == null ? -1 : dataIndex; + } + + Node.prototype = { + + constructor: Node, + + /** + * @return {number} + */ + degree: function () { + return this.edges.length; + }, + + /** + * @return {number} + */ + inDegree: function () { + return this.inEdges.length; + }, + + /** + * @return {number} + */ + outDegree: function () { + return this.outEdges.length; + }, + + /** + * @param {string} [path] + * @return {module:echarts/model/Model} + */ + getModel: function (path) { + if (this.dataIndex < 0) { + return; + } + var graph = this.hostGraph; + var itemModel = graph.data.getItemModel(this.dataIndex); + + return itemModel.getModel(path); + } + }; + + /** + * 图边 + * @alias module:echarts/data/Graph.Edge + * @param {module:echarts/data/Graph.Node} n1 + * @param {module:echarts/data/Graph.Node} n2 + * @param {number} [dataIndex=-1] + */ + function Edge(n1, n2, dataIndex) { + + /** + * 节点1,如果是有向图则为源节点 + * @type {module:echarts/data/Graph.Node} + */ + this.node1 = n1; + + /** + * 节点2,如果是有向图则为目标节点 + * @type {module:echarts/data/Graph.Node} + */ + this.node2 = n2; + + this.dataIndex = dataIndex == null ? -1 : dataIndex; + } + + /** + * @param {string} [path] + * @return {module:echarts/model/Model} + */ + Edge.prototype.getModel = function (path) { + if (this.dataIndex < 0) { + return; + } + var graph = this.hostGraph; + var itemModel = graph.edgeData.getItemModel(this.dataIndex); + + return itemModel.getModel(path); + }; + + var createGraphDataProxyMixin = function (hostName, dataName) { + return { + /** + * @param {string=} [dimension='value'] Default 'value'. can be 'a', 'b', 'c', 'd', 'e'. + * @return {number} + */ + getValue: function (dimension) { + var data = this[hostName][dataName]; + return data.get(data.getDimension(dimension || 'value'), this.dataIndex); + }, + + /** + * @param {Object|string} key + * @param {*} [value] + */ + setVisual: function (key, value) { + this.dataIndex >= 0 + && this[hostName][dataName].setItemVisual(this.dataIndex, key, value); + }, + + /** + * @param {string} key + * @return {boolean} + */ + getVisual: function (key, ignoreParent) { + return this[hostName][dataName].getItemVisual(this.dataIndex, key, ignoreParent); + }, + + /** + * @param {Object} layout + * @return {boolean} [merge=false] + */ + setLayout: function (layout, merge) { + this.dataIndex >= 0 + && this[hostName][dataName].setItemLayout(this.dataIndex, layout, merge); + }, + + /** + * @return {Object} + */ + getLayout: function () { + return this[hostName][dataName].getItemLayout(this.dataIndex); + }, + + /** + * @return {module:zrender/Element} + */ + getGraphicEl: function () { + return this[hostName][dataName].getItemGraphicEl(this.dataIndex); + }, + + /** + * @return {number} + */ + getRawIndex: function () { + return this[hostName][dataName].getRawIndex(this.dataIndex); + } + }; + }; + + zrUtil.mixin(Node, createGraphDataProxyMixin('hostGraph', 'data')); + zrUtil.mixin(Edge, createGraphDataProxyMixin('hostGraph', 'edgeData')); + + Graph.Node = Node; + Graph.Edge = Edge; + + module.exports = Graph; + + +/***/ }, +/* 209 */ +/***/ function(module, exports, __webpack_require__) { + + + + + var SymbolDraw = __webpack_require__(116); + var LineDraw = __webpack_require__(210); + var RoamController = __webpack_require__(183); + var roamHelper = __webpack_require__(185); + var cursorHelper = __webpack_require__(186); + + var graphic = __webpack_require__(18); + var adjustEdge = __webpack_require__(213); + var zrUtil = __webpack_require__(4); + + var nodeOpacityPath = ['itemStyle', 'normal', 'opacity']; + var lineOpacityPath = ['lineStyle', 'normal', 'opacity']; + + function getItemOpacity(item, opacityPath) { + return item.getVisual('opacity') || item.getModel().get(opacityPath); + } + + __webpack_require__(1).extendChartView({ + + type: 'graph', + + init: function (ecModel, api) { + var symbolDraw = new SymbolDraw(); + var lineDraw = new LineDraw(); + var group = this.group; + + this._controller = new RoamController(api.getZr()); + this._controllerHost = {target: group}; + + group.add(symbolDraw.group); + group.add(lineDraw.group); + + this._symbolDraw = symbolDraw; + this._lineDraw = lineDraw; + + this._firstRender = true; + }, + + render: function (seriesModel, ecModel, api) { + var coordSys = seriesModel.coordinateSystem; + + this._model = seriesModel; + this._nodeScaleRatio = seriesModel.get('nodeScaleRatio'); + + var symbolDraw = this._symbolDraw; + var lineDraw = this._lineDraw; + + var group = this.group; + + if (coordSys.type === 'view') { + var groupNewProp = { + position: coordSys.position, + scale: coordSys.scale + }; + if (this._firstRender) { + group.attr(groupNewProp); + } + else { + graphic.updateProps(group, groupNewProp, seriesModel); + } + } + // Fix edge contact point with node + adjustEdge(seriesModel.getGraph(), this._getNodeGlobalScale(seriesModel)); + + var data = seriesModel.getData(); + symbolDraw.updateData(data); + + var edgeData = seriesModel.getEdgeData(); + lineDraw.updateData(edgeData); + + this._updateNodeAndLinkScale(); + + this._updateController(seriesModel, ecModel, api); + + clearTimeout(this._layoutTimeout); + var forceLayout = seriesModel.forceLayout; + var layoutAnimation = seriesModel.get('force.layoutAnimation'); + if (forceLayout) { + this._startForceLayoutIteration(forceLayout, layoutAnimation); + } + data.eachItemGraphicEl(function (el, idx) { + var itemModel = data.getItemModel(idx); + // Update draggable + el.off('drag').off('dragend'); + var draggable = data.getItemModel(idx).get('draggable'); + if (draggable) { + el.on('drag', function () { + if (forceLayout) { + forceLayout.warmUp(); + !this._layouting + && this._startForceLayoutIteration(forceLayout, layoutAnimation); + forceLayout.setFixed(idx); + // Write position back to layout + data.setItemLayout(idx, el.position); + } + }, this).on('dragend', function () { + if (forceLayout) { + forceLayout.setUnfixed(idx); + } + }, this); + } + el.setDraggable(draggable && forceLayout); + + el.off('mouseover', el.__focusNodeAdjacency); + el.off('mouseout', el.__unfocusNodeAdjacency); + + if (itemModel.get('focusNodeAdjacency')) { + el.on('mouseover', el.__focusNodeAdjacency = function () { + api.dispatchAction({ + type: 'focusNodeAdjacency', + seriesId: seriesModel.id, + dataIndex: el.dataIndex + }); + }); + el.on('mouseout', el.__unfocusNodeAdjacency = function () { + api.dispatchAction({ + type: 'unfocusNodeAdjacency', + seriesId: seriesModel.id + }); + }); + } + + }, this); + + var circularRotateLabel = seriesModel.get('layout') === 'circular' && seriesModel.get('circular.rotateLabel'); + var cx = data.getLayout('cx'); + var cy = data.getLayout('cy'); + data.eachItemGraphicEl(function (el, idx) { + var symbolPath = el.getSymbolPath(); + if (circularRotateLabel) { + var pos = data.getItemLayout(idx); + var rad = Math.atan2(pos[1] - cy, pos[0] - cx); + if (rad < 0) { + rad = Math.PI * 2 + rad; + } + var isLeft = pos[0] < cx; + if (isLeft) { + rad = rad - Math.PI; + } + var textPosition = isLeft ? 'left' : 'right'; + symbolPath.setStyle({ + textRotation: rad, + textPosition: textPosition + }); + symbolPath.hoverStyle && (symbolPath.hoverStyle.textPosition = textPosition); + } + else { + symbolPath.setStyle({ + textRotation: 0 + }); + } + }); + + this._firstRender = false; + }, + + dispose: function () { + this._controller && this._controller.dispose(); + this._controllerHost = {}; + }, + + focusNodeAdjacency: function (seriesModel, ecModel, api, payload) { + var data = this._model.getData(); + var dataIndex = payload.dataIndex; + var el = data.getItemGraphicEl(dataIndex); + + if (!el) { + return; + } + + var graph = data.graph; + var dataType = el.dataType; + + function fadeOutItem(item, opacityPath) { + var opacity = getItemOpacity(item, opacityPath); + var el = item.getGraphicEl(); + if (opacity == null) { + opacity = 1; + } + + el.traverse(function (child) { + child.trigger('normal'); + if (child.type !== 'group') { + child.setStyle('opacity', opacity * 0.1); + } + }); + } + + function fadeInItem(item, opacityPath) { + var opacity = getItemOpacity(item, opacityPath); + var el = item.getGraphicEl(); + + el.traverse(function (child) { + child.trigger('emphasis'); + if (child.type !== 'group') { + child.setStyle('opacity', opacity); + } + }); + } + if (dataIndex !== null && dataType !== 'edge') { + graph.eachNode(function (node) { + fadeOutItem(node, nodeOpacityPath); + }); + graph.eachEdge(function (edge) { + fadeOutItem(edge, lineOpacityPath); + }); + + var node = graph.getNodeByIndex(dataIndex); + fadeInItem(node, nodeOpacityPath); + zrUtil.each(node.edges, function (edge) { + if (edge.dataIndex < 0) { + return; + } + fadeInItem(edge, lineOpacityPath); + fadeInItem(edge.node1, nodeOpacityPath); + fadeInItem(edge.node2, nodeOpacityPath); + }); + } + }, + + unfocusNodeAdjacency: function (seriesModel, ecModel, api, payload) { + var graph = this._model.getData().graph; + graph.eachNode(function (node) { + var opacity = getItemOpacity(node, nodeOpacityPath); + node.getGraphicEl().traverse(function (child) { + child.trigger('normal'); + if (child.type !== 'group') { + child.setStyle('opacity', opacity); + } + }); + }); + graph.eachEdge(function (edge) { + var opacity = getItemOpacity(edge, lineOpacityPath); + edge.getGraphicEl().traverse(function (child) { + child.trigger('normal'); + if (child.type !== 'group') { + child.setStyle('opacity', opacity); + } + }); + }); + }, + + _startForceLayoutIteration: function (forceLayout, layoutAnimation) { + var self = this; + (function step() { + forceLayout.step(function (stopped) { + self.updateLayout(self._model); + (self._layouting = !stopped) && ( + layoutAnimation + ? (self._layoutTimeout = setTimeout(step, 16)) + : step() + ); + }); + })(); + }, + + _updateController: function (seriesModel, ecModel, api) { + var controller = this._controller; + var controllerHost = this._controllerHost; + var group = this.group; + + controller.setPointerChecker(function (e, x, y) { + var rect = group.getBoundingRect(); + rect.applyTransform(group.transform); + return rect.contain(x, y) + && !cursorHelper.onIrrelevantElement(e, api, seriesModel); + }); + + if (seriesModel.coordinateSystem.type !== 'view') { + controller.disable(); + return; + } + controller.enable(seriesModel.get('roam')); + controllerHost.zoomLimit = seriesModel.get('scaleLimit'); + controllerHost.zoom = seriesModel.coordinateSystem.getZoom(); + + controller + .off('pan') + .off('zoom') + .on('pan', function (dx, dy) { + roamHelper.updateViewOnPan(controllerHost, dx, dy); + api.dispatchAction({ + seriesId: seriesModel.id, + type: 'graphRoam', + dx: dx, + dy: dy + }); + }) + .on('zoom', function (zoom, mouseX, mouseY) { + roamHelper.updateViewOnZoom(controllerHost, zoom, mouseX, mouseY); + api.dispatchAction({ + seriesId: seriesModel.id, + type: 'graphRoam', + zoom: zoom, + originX: mouseX, + originY: mouseY + }); + this._updateNodeAndLinkScale(); + adjustEdge(seriesModel.getGraph(), this._getNodeGlobalScale(seriesModel)); + this._lineDraw.updateLayout(); + }, this); + }, + + _updateNodeAndLinkScale: function () { + var seriesModel = this._model; + var data = seriesModel.getData(); + + var nodeScale = this._getNodeGlobalScale(seriesModel); + var invScale = [nodeScale, nodeScale]; + + data.eachItemGraphicEl(function (el, idx) { + el.attr('scale', invScale); + }); + }, + + _getNodeGlobalScale: function (seriesModel) { + var coordSys = seriesModel.coordinateSystem; + if (coordSys.type !== 'view') { + return 1; + } + + var nodeScaleRatio = this._nodeScaleRatio; + + var groupScale = coordSys.scale; + var groupZoom = (groupScale && groupScale[0]) || 1; + // Scale node when zoom changes + var roamZoom = coordSys.getZoom(); + var nodeScale = (roamZoom - 1) * nodeScaleRatio + 1; + + return nodeScale / groupZoom; + }, + + updateLayout: function (seriesModel) { + adjustEdge(seriesModel.getGraph(), this._getNodeGlobalScale(seriesModel)); + + this._symbolDraw.updateLayout(); + this._lineDraw.updateLayout(); + }, + + remove: function (ecModel, api) { + this._symbolDraw && this._symbolDraw.remove(); + this._lineDraw && this._lineDraw.remove(); + } + }); + + +/***/ }, +/* 210 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * @module echarts/chart/helper/LineDraw + */ + + + var graphic = __webpack_require__(18); + var LineGroup = __webpack_require__(211); + + + function isPointNaN(pt) { + return isNaN(pt[0]) || isNaN(pt[1]); + } + function lineNeedsDraw(pts) { + return !isPointNaN(pts[0]) && !isPointNaN(pts[1]); + } + /** + * @alias module:echarts/component/marker/LineDraw + * @constructor + */ + function LineDraw(ctor) { + this._ctor = ctor || LineGroup; + this.group = new graphic.Group(); + } + + var lineDrawProto = LineDraw.prototype; + + /** + * @param {module:echarts/data/List} lineData + */ + lineDrawProto.updateData = function (lineData) { + + var oldLineData = this._lineData; + var group = this.group; + var LineCtor = this._ctor; + + var hostModel = lineData.hostModel; + + var seriesScope = { + lineStyle: hostModel.getModel('lineStyle.normal').getLineStyle(), + hoverLineStyle: hostModel.getModel('lineStyle.emphasis').getLineStyle(), + labelModel: hostModel.getModel('label.normal'), + hoverLabelModel: hostModel.getModel('label.emphasis') + }; + + lineData.diff(oldLineData) + .add(function (idx) { + if (!lineNeedsDraw(lineData.getItemLayout(idx))) { + return; + } + var lineGroup = new LineCtor(lineData, idx, seriesScope); + + lineData.setItemGraphicEl(idx, lineGroup); + + group.add(lineGroup); + }) + .update(function (newIdx, oldIdx) { + var lineGroup = oldLineData.getItemGraphicEl(oldIdx); + if (!lineNeedsDraw(lineData.getItemLayout(newIdx))) { + group.remove(lineGroup); + return; + } + + if (!lineGroup) { + lineGroup = new LineCtor(lineData, newIdx, seriesScope); + } + else { + lineGroup.updateData(lineData, newIdx, seriesScope); + } + + lineData.setItemGraphicEl(newIdx, lineGroup); + + group.add(lineGroup); + }) + .remove(function (idx) { + group.remove(oldLineData.getItemGraphicEl(idx)); + }) + .execute(); + + this._lineData = lineData; + }; + + lineDrawProto.updateLayout = function () { + var lineData = this._lineData; + lineData.eachItemGraphicEl(function (el, idx) { + el.updateLayout(lineData, idx); + }, this); + }; + + lineDrawProto.remove = function () { + this.group.removeAll(); + }; + + module.exports = LineDraw; + + +/***/ }, +/* 211 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * @module echarts/chart/helper/Line + */ + + + var symbolUtil = __webpack_require__(111); + var vector = __webpack_require__(10); + // var matrix = require('zrender/lib/core/matrix'); + var LinePath = __webpack_require__(212); + var graphic = __webpack_require__(18); + var zrUtil = __webpack_require__(4); + var numberUtil = __webpack_require__(7); + + var SYMBOL_CATEGORIES = ['fromSymbol', 'toSymbol']; + function makeSymbolTypeKey(symbolCategory) { + return '_' + symbolCategory + 'Type'; + } + /** + * @inner + */ + function createSymbol(name, lineData, idx) { + var color = lineData.getItemVisual(idx, 'color'); + var symbolType = lineData.getItemVisual(idx, name); + var symbolSize = lineData.getItemVisual(idx, name + 'Size'); + + if (!symbolType || symbolType === 'none') { + return; + } + + if (!zrUtil.isArray(symbolSize)) { + symbolSize = [symbolSize, symbolSize]; + } + var symbolPath = symbolUtil.createSymbol( + symbolType, -symbolSize[0] / 2, -symbolSize[1] / 2, + symbolSize[0], symbolSize[1], color + ); + + symbolPath.name = name; + + return symbolPath; + } + + function createLine(points) { + var line = new LinePath({ + name: 'line' + }); + setLinePoints(line.shape, points); + return line; + } + + function setLinePoints(targetShape, points) { + var p1 = points[0]; + var p2 = points[1]; + var cp1 = points[2]; + targetShape.x1 = p1[0]; + targetShape.y1 = p1[1]; + targetShape.x2 = p2[0]; + targetShape.y2 = p2[1]; + targetShape.percent = 1; + + if (cp1) { + targetShape.cpx1 = cp1[0]; + targetShape.cpy1 = cp1[1]; + } + else { + targetShape.cpx1 = NaN; + targetShape.cpy1 = NaN; + } + } + + function updateSymbolAndLabelBeforeLineUpdate () { + var lineGroup = this; + var symbolFrom = lineGroup.childOfName('fromSymbol'); + var symbolTo = lineGroup.childOfName('toSymbol'); + var label = lineGroup.childOfName('label'); + // Quick reject + if (!symbolFrom && !symbolTo && label.ignore) { + return; + } + + var invScale = 1; + var parentNode = this.parent; + while (parentNode) { + if (parentNode.scale) { + invScale /= parentNode.scale[0]; + } + parentNode = parentNode.parent; + } + + var line = lineGroup.childOfName('line'); + // If line not changed + // FIXME Parent scale changed + if (!this.__dirty && !line.__dirty) { + return; + } + + var percent = line.shape.percent; + var fromPos = line.pointAt(0); + var toPos = line.pointAt(percent); + + var d = vector.sub([], toPos, fromPos); + vector.normalize(d, d); + + if (symbolFrom) { + symbolFrom.attr('position', fromPos); + var tangent = line.tangentAt(0); + symbolFrom.attr('rotation', Math.PI / 2 - Math.atan2( + tangent[1], tangent[0] + )); + symbolFrom.attr('scale', [invScale * percent, invScale * percent]); + } + if (symbolTo) { + symbolTo.attr('position', toPos); + var tangent = line.tangentAt(1); + symbolTo.attr('rotation', -Math.PI / 2 - Math.atan2( + tangent[1], tangent[0] + )); + symbolTo.attr('scale', [invScale * percent, invScale * percent]); + } + + if (!label.ignore) { + label.attr('position', toPos); + + var textPosition; + var textAlign; + var textVerticalAlign; + + var distance = 5 * invScale; + // End + if (label.__position === 'end') { + textPosition = [d[0] * distance + toPos[0], d[1] * distance + toPos[1]]; + textAlign = d[0] > 0.8 ? 'left' : (d[0] < -0.8 ? 'right' : 'center'); + textVerticalAlign = d[1] > 0.8 ? 'top' : (d[1] < -0.8 ? 'bottom' : 'middle'); + } + // Middle + else if (label.__position === 'middle') { + var halfPercent = percent / 2; + var tangent = line.tangentAt(halfPercent); + var n = [tangent[1], -tangent[0]]; + var cp = line.pointAt(halfPercent); + if (n[1] > 0) { + n[0] = -n[0]; + n[1] = -n[1]; + } + textPosition = [cp[0] + n[0] * distance, cp[1] + n[1] * distance]; + textAlign = 'center'; + textVerticalAlign = 'bottom'; + var rotation = -Math.atan2(tangent[1], tangent[0]); + if (toPos[0] < fromPos[0]) { + rotation = Math.PI + rotation; + } + label.attr('rotation', rotation); + } + // Start + else { + textPosition = [-d[0] * distance + fromPos[0], -d[1] * distance + fromPos[1]]; + textAlign = d[0] > 0.8 ? 'right' : (d[0] < -0.8 ? 'left' : 'center'); + textVerticalAlign = d[1] > 0.8 ? 'bottom' : (d[1] < -0.8 ? 'top' : 'middle'); + } + label.attr({ + style: { + // Use the user specified text align and baseline first + textVerticalAlign: label.__verticalAlign || textVerticalAlign, + textAlign: label.__textAlign || textAlign + }, + position: textPosition, + scale: [invScale, invScale] + }); + } + } + + /** + * @constructor + * @extends {module:zrender/graphic/Group} + * @alias {module:echarts/chart/helper/Line} + */ + function Line(lineData, idx, seriesScope) { + graphic.Group.call(this); + + this._createLine(lineData, idx, seriesScope); + } + + var lineProto = Line.prototype; + + // Update symbol position and rotation + lineProto.beforeUpdate = updateSymbolAndLabelBeforeLineUpdate; + + lineProto._createLine = function (lineData, idx, seriesScope) { + var seriesModel = lineData.hostModel; + var linePoints = lineData.getItemLayout(idx); + + var line = createLine(linePoints); + line.shape.percent = 0; + graphic.initProps(line, { + shape: { + percent: 1 + } + }, seriesModel, idx); + + this.add(line); + + var label = new graphic.Text({ + name: 'label' + }); + this.add(label); + + zrUtil.each(SYMBOL_CATEGORIES, function (symbolCategory) { + var symbol = createSymbol(symbolCategory, lineData, idx); + // symbols must added after line to make sure + // it will be updated after line#update. + // Or symbol position and rotation update in line#beforeUpdate will be one frame slow + this.add(symbol); + this[makeSymbolTypeKey(symbolCategory)] = lineData.getItemVisual(idx, symbolCategory); + }, this); + + this._updateCommonStl(lineData, idx, seriesScope); + }; + + lineProto.updateData = function (lineData, idx, seriesScope) { + var seriesModel = lineData.hostModel; + + var line = this.childOfName('line'); + var linePoints = lineData.getItemLayout(idx); + var target = { + shape: {} + }; + setLinePoints(target.shape, linePoints); + graphic.updateProps(line, target, seriesModel, idx); + + zrUtil.each(SYMBOL_CATEGORIES, function (symbolCategory) { + var symbolType = lineData.getItemVisual(idx, symbolCategory); + var key = makeSymbolTypeKey(symbolCategory); + // Symbol changed + if (this[key] !== symbolType) { + this.remove(this.childOfName(symbolCategory)); + var symbol = createSymbol(symbolCategory, lineData, idx); + this.add(symbol); + } + this[key] = symbolType; + }, this); + + this._updateCommonStl(lineData, idx, seriesScope); + }; + + lineProto._updateCommonStl = function (lineData, idx, seriesScope) { + var seriesModel = lineData.hostModel; + + var line = this.childOfName('line'); + + var lineStyle = seriesScope && seriesScope.lineStyle; + var hoverLineStyle = seriesScope && seriesScope.hoverLineStyle; + var labelModel = seriesScope && seriesScope.labelModel; + var hoverLabelModel = seriesScope && seriesScope.hoverLabelModel; + + // Optimization for large dataset + if (!seriesScope || lineData.hasItemOption) { + var itemModel = lineData.getItemModel(idx); + + lineStyle = itemModel.getModel('lineStyle.normal').getLineStyle(); + hoverLineStyle = itemModel.getModel('lineStyle.emphasis').getLineStyle(); + + labelModel = itemModel.getModel('label.normal'); + hoverLabelModel = itemModel.getModel('label.emphasis'); + } + + var visualColor = lineData.getItemVisual(idx, 'color'); + var visualOpacity = zrUtil.retrieve( + lineData.getItemVisual(idx, 'opacity'), + lineStyle.opacity, + 1 + ); + + line.useStyle(zrUtil.defaults( + { + strokeNoScale: true, + fill: 'none', + stroke: visualColor, + opacity: visualOpacity + }, + lineStyle + )); + line.hoverStyle = hoverLineStyle; + + // Update symbol + zrUtil.each(SYMBOL_CATEGORIES, function (symbolCategory) { + var symbol = this.childOfName(symbolCategory); + if (symbol) { + symbol.setColor(visualColor); + symbol.setStyle({ + opacity: visualOpacity + }); + } + }, this); + + var showLabel = labelModel.getShallow('show'); + var hoverShowLabel = hoverLabelModel.getShallow('show'); + + var label = this.childOfName('label'); + var defaultLabelColor; + var defaultText; + + if (showLabel || hoverShowLabel) { + var rawVal = seriesModel.getRawValue(idx); + defaultText = rawVal == null + ? defaultText = lineData.getName(idx) + : isFinite(rawVal) + ? numberUtil.round(rawVal) + : rawVal; + defaultLabelColor = visualColor || '#000'; + } + + // label.afterUpdate = lineAfterUpdate; + if (showLabel) { + var textStyleModel = labelModel.getModel('textStyle'); + label.setStyle({ + text: zrUtil.retrieve( + seriesModel.getFormattedLabel(idx, 'normal', lineData.dataType), + defaultText + ), + textFont: textStyleModel.getFont(), + fill: textStyleModel.getTextColor() || defaultLabelColor + }); + + label.__textAlign = textStyleModel.get('align'); + label.__verticalAlign = textStyleModel.get('baseline'); + label.__position = labelModel.get('position'); + } + else { + label.setStyle('text', ''); + } + if (hoverShowLabel) { + var textStyleHoverModel = hoverLabelModel.getModel('textStyle'); + + label.hoverStyle = { + text: zrUtil.retrieve( + seriesModel.getFormattedLabel(idx, 'emphasis', lineData.dataType), + defaultText + ), + textFont: textStyleHoverModel.getFont(), + fill: textStyleHoverModel.getTextColor() || defaultLabelColor + }; + } + else { + label.hoverStyle = { + text: '' + }; + } + + label.ignore = !showLabel && !hoverShowLabel; + + graphic.setHoverStyle(this); + }; + + lineProto.updateLayout = function (lineData, idx) { + this.setLinePoints(lineData.getItemLayout(idx)); + }; + + lineProto.setLinePoints = function (points) { + var linePath = this.childOfName('line'); + setLinePoints(linePath.shape, points); + linePath.dirty(); + }; + + zrUtil.inherits(Line, graphic.Group); + + module.exports = Line; + + +/***/ }, +/* 212 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * Line path for bezier and straight line draw + */ + + var graphic = __webpack_require__(18); + var vec2 = __webpack_require__(10); + + var straightLineProto = graphic.Line.prototype; + var bezierCurveProto = graphic.BezierCurve.prototype; + + function isLine(shape) { + return isNaN(+shape.cpx1) || isNaN(+shape.cpy1); + } + + module.exports = graphic.extendShape({ + + type: 'ec-line', + + style: { + stroke: '#000', + fill: null + }, + + shape: { + x1: 0, + y1: 0, + x2: 0, + y2: 0, + percent: 1, + cpx1: null, + cpy1: null + }, + + buildPath: function (ctx, shape) { + (isLine(shape) ? straightLineProto : bezierCurveProto).buildPath(ctx, shape); + }, + + pointAt: function (t) { + return isLine(this.shape) + ? straightLineProto.pointAt.call(this, t) + : bezierCurveProto.pointAt.call(this, t); + }, + + tangentAt: function (t) { + var shape = this.shape; + var p = isLine(shape) + ? [shape.x2 - shape.x1, shape.y2 - shape.y1] + : bezierCurveProto.tangentAt.call(this, t); + return vec2.normalize(p, p); + } + }); + + +/***/ }, +/* 213 */ +/***/ function(module, exports, __webpack_require__) { + + + + var curveTool = __webpack_require__(37); + var vec2 = __webpack_require__(10); + + var v1 = []; + var v2 = []; + var v3 = []; + var quadraticAt = curveTool.quadraticAt; + var v2DistSquare = vec2.distSquare; + var mathAbs = Math.abs; + function intersectCurveCircle(curvePoints, center, radius) { + var p0 = curvePoints[0]; + var p1 = curvePoints[1]; + var p2 = curvePoints[2]; + + var d = Infinity; + var t; + var radiusSquare = radius * radius; + var interval = 0.1; + + for (var _t = 0.1; _t <= 0.9; _t += 0.1) { + v1[0] = quadraticAt(p0[0], p1[0], p2[0], _t); + v1[1] = quadraticAt(p0[1], p1[1], p2[1], _t); + var diff = mathAbs(v2DistSquare(v1, center) - radiusSquare); + if (diff < d) { + d = diff; + t = _t; + } + } + + // Assume the segment is monotone,Find root through Bisection method + // At most 32 iteration + for (var i = 0; i < 32; i++) { + // var prev = t - interval; + var next = t + interval; + // v1[0] = quadraticAt(p0[0], p1[0], p2[0], prev); + // v1[1] = quadraticAt(p0[1], p1[1], p2[1], prev); + v2[0] = quadraticAt(p0[0], p1[0], p2[0], t); + v2[1] = quadraticAt(p0[1], p1[1], p2[1], t); + v3[0] = quadraticAt(p0[0], p1[0], p2[0], next); + v3[1] = quadraticAt(p0[1], p1[1], p2[1], next); + + var diff = v2DistSquare(v2, center) - radiusSquare; + if (mathAbs(diff) < 1e-2) { + break; + } + + // var prevDiff = v2DistSquare(v1, center) - radiusSquare; + var nextDiff = v2DistSquare(v3, center) - radiusSquare; + + interval /= 2; + if (diff < 0) { + if (nextDiff >= 0) { + t = t + interval; + } + else { + t = t - interval; + } + } + else { + if (nextDiff >= 0) { + t = t - interval; + } + else { + t = t + interval; + } + } + } + + return t; + } + // Adjust edge to avoid + module.exports = function (graph, scale) { + var tmp0 = []; + var quadraticSubdivide = curveTool.quadraticSubdivide; + var pts = [[], [], []]; + var pts2 = [[], []]; + var v = []; + scale /= 2; + + function getSymbolSize(node) { + var symbolSize = node.getVisual('symbolSize'); + if (symbolSize instanceof Array) { + symbolSize = (symbolSize[0] + symbolSize[1]) / 2; + } + return symbolSize; + } + graph.eachEdge(function (edge, idx) { + var linePoints = edge.getLayout(); + var fromSymbol = edge.getVisual('fromSymbol'); + var toSymbol = edge.getVisual('toSymbol'); + + if (!linePoints.__original) { + linePoints.__original = [ + vec2.clone(linePoints[0]), + vec2.clone(linePoints[1]) + ]; + if (linePoints[2]) { + linePoints.__original.push(vec2.clone(linePoints[2])); + } + } + var originalPoints = linePoints.__original; + // Quadratic curve + if (linePoints[2] != null) { + vec2.copy(pts[0], originalPoints[0]); + vec2.copy(pts[1], originalPoints[2]); + vec2.copy(pts[2], originalPoints[1]); + if (fromSymbol && fromSymbol != 'none') { + var symbolSize = getSymbolSize(edge.node1); + + var t = intersectCurveCircle(pts, originalPoints[0], symbolSize * scale); + // Subdivide and get the second + quadraticSubdivide(pts[0][0], pts[1][0], pts[2][0], t, tmp0); + pts[0][0] = tmp0[3]; + pts[1][0] = tmp0[4]; + quadraticSubdivide(pts[0][1], pts[1][1], pts[2][1], t, tmp0); + pts[0][1] = tmp0[3]; + pts[1][1] = tmp0[4]; + } + if (toSymbol && toSymbol != 'none') { + var symbolSize = getSymbolSize(edge.node2); + + var t = intersectCurveCircle(pts, originalPoints[1], symbolSize * scale); + // Subdivide and get the first + quadraticSubdivide(pts[0][0], pts[1][0], pts[2][0], t, tmp0); + pts[1][0] = tmp0[1]; + pts[2][0] = tmp0[2]; + quadraticSubdivide(pts[0][1], pts[1][1], pts[2][1], t, tmp0); + pts[1][1] = tmp0[1]; + pts[2][1] = tmp0[2]; + } + // Copy back to layout + vec2.copy(linePoints[0], pts[0]); + vec2.copy(linePoints[1], pts[2]); + vec2.copy(linePoints[2], pts[1]); + } + // Line + else { + vec2.copy(pts2[0], originalPoints[0]); + vec2.copy(pts2[1], originalPoints[1]); + + vec2.sub(v, pts2[1], pts2[0]); + vec2.normalize(v, v); + if (fromSymbol && fromSymbol != 'none') { + + var symbolSize = getSymbolSize(edge.node1); + + vec2.scaleAndAdd(pts2[0], pts2[0], v, symbolSize * scale); + } + if (toSymbol && toSymbol != 'none') { + var symbolSize = getSymbolSize(edge.node2); + + vec2.scaleAndAdd(pts2[1], pts2[1], v, -symbolSize * scale); + } + vec2.copy(linePoints[0], pts2[0]); + vec2.copy(linePoints[1], pts2[1]); + } + }); + }; + + +/***/ }, +/* 214 */ +/***/ function(module, exports, __webpack_require__) { + + + + var echarts = __webpack_require__(1); + var roamHelper = __webpack_require__(188); + + var actionInfo = { + type: 'graphRoam', + event: 'graphRoam', + update: 'none' + }; + + /** + * @payload + * @property {string} name Series name + * @property {number} [dx] + * @property {number} [dy] + * @property {number} [zoom] + * @property {number} [originX] + * @property {number} [originY] + */ + echarts.registerAction(actionInfo, function (payload, ecModel) { + ecModel.eachComponent({mainType: 'series', query: payload}, function (seriesModel) { + var coordSys = seriesModel.coordinateSystem; + + var res = roamHelper.updateCenterAndZoom(coordSys, payload); + + seriesModel.setCenter + && seriesModel.setCenter(res.center); + + seriesModel.setZoom + && seriesModel.setZoom(res.zoom); + }); + }); + + + /** + * @payload + * @property {number} [seriesIndex] + * @property {string} [seriesId] + * @property {string} [seriesName] + * @property {number} [dataIndex] + */ + echarts.registerAction({ + type: 'focusNodeAdjacency', + event: 'focusNodeAdjacency', + update: 'series.graph:focusNodeAdjacency' + }, function () {}); + + /** + * @payload + * @property {number} [seriesIndex] + * @property {string} [seriesId] + * @property {string} [seriesName] + */ + echarts.registerAction({ + type: 'unfocusNodeAdjacency', + event: 'unfocusNodeAdjacency', + update: 'series.graph:unfocusNodeAdjacency' + }, function () {}); + + + +/***/ }, +/* 215 */ +/***/ function(module, exports) { + + + + module.exports = function (ecModel) { + var legendModels = ecModel.findComponents({ + mainType: 'legend' + }); + if (!legendModels || !legendModels.length) { + return; + } + ecModel.eachSeriesByType('graph', function (graphSeries) { + var categoriesData = graphSeries.getCategoriesData(); + var graph = graphSeries.getGraph(); + var data = graph.data; + + var categoryNames = categoriesData.mapArray(categoriesData.getName); + + data.filterSelf(function (idx) { + var model = data.getItemModel(idx); + var category = model.getShallow('category'); + if (category != null) { + if (typeof category === 'number') { + category = categoryNames[category]; + } + // If in any legend component the status is not selected. + for (var i = 0; i < legendModels.length; i++) { + if (!legendModels[i].isSelected(category)) { + return false; + } + } + } + return true; + }); + }, this); + }; + + +/***/ }, +/* 216 */ +/***/ function(module, exports) { + + + + module.exports = function (ecModel) { + + var paletteScope = {}; + ecModel.eachSeriesByType('graph', function (seriesModel) { + var categoriesData = seriesModel.getCategoriesData(); + var data = seriesModel.getData(); + + var categoryNameIdxMap = {}; + + categoriesData.each(function (idx) { + var name = categoriesData.getName(idx); + // Add prefix to avoid conflict with Object.prototype. + categoryNameIdxMap['ec-' + name] = idx; + + var itemModel = categoriesData.getItemModel(idx); + var color = itemModel.get('itemStyle.normal.color') + || seriesModel.getColorFromPalette(name, paletteScope); + categoriesData.setItemVisual(idx, 'color', color); + }); + + // Assign category color to visual + if (categoriesData.count()) { + data.each(function (idx) { + var model = data.getItemModel(idx); + var category = model.getShallow('category'); + if (category != null) { + if (typeof category === 'string') { + category = categoryNameIdxMap['ec-' + category]; + } + if (!data.getItemVisual(idx, 'color', true)) { + data.setItemVisual( + idx, 'color', + categoriesData.getItemVisual(category, 'color') + ); + } + } + }); + } + }); + }; + + +/***/ }, +/* 217 */ +/***/ function(module, exports) { + + + + function normalize(a) { + if (!(a instanceof Array)) { + a = [a, a]; + } + return a; + } + module.exports = function (ecModel) { + ecModel.eachSeriesByType('graph', function (seriesModel) { + var graph = seriesModel.getGraph(); + var edgeData = seriesModel.getEdgeData(); + var symbolType = normalize(seriesModel.get('edgeSymbol')); + var symbolSize = normalize(seriesModel.get('edgeSymbolSize')); + + var colorQuery = 'lineStyle.normal.color'.split('.'); + var opacityQuery = 'lineStyle.normal.opacity'.split('.'); + + edgeData.setVisual('fromSymbol', symbolType && symbolType[0]); + edgeData.setVisual('toSymbol', symbolType && symbolType[1]); + edgeData.setVisual('fromSymbolSize', symbolSize && symbolSize[0]); + edgeData.setVisual('toSymbolSize', symbolSize && symbolSize[1]); + edgeData.setVisual('color', seriesModel.get(colorQuery)); + edgeData.setVisual('opacity', seriesModel.get(opacityQuery)); + + edgeData.each(function (idx) { + var itemModel = edgeData.getItemModel(idx); + var edge = graph.getEdgeByIndex(idx); + var symbolType = normalize(itemModel.getShallow('symbol', true)); + var symbolSize = normalize(itemModel.getShallow('symbolSize', true)); + // Edge visual must after node visual + var color = itemModel.get(colorQuery); + var opacity = itemModel.get(opacityQuery); + switch (color) { + case 'source': + color = edge.node1.getVisual('color'); + break; + case 'target': + color = edge.node2.getVisual('color'); + break; + } + + symbolType[0] && edge.setVisual('fromSymbol', symbolType[0]); + symbolType[1] && edge.setVisual('toSymbol', symbolType[1]); + symbolSize[0] && edge.setVisual('fromSymbolSize', symbolSize[0]); + symbolSize[1] && edge.setVisual('toSymbolSize', symbolSize[1]); + + edge.setVisual('color', color); + edge.setVisual('opacity', opacity); + }); + }); + }; + + +/***/ }, +/* 218 */ +/***/ function(module, exports, __webpack_require__) { + + + + var simpleLayoutHelper = __webpack_require__(219); + var simpleLayoutEdge = __webpack_require__(220); + + module.exports = function (ecModel, api) { + ecModel.eachSeriesByType('graph', function (seriesModel) { + var layout = seriesModel.get('layout'); + var coordSys = seriesModel.coordinateSystem; + if (coordSys && coordSys.type !== 'view') { + var data = seriesModel.getData(); + var dimensions = coordSys.dimensions; + + data.each(dimensions, function () { + var hasValue; + var args = arguments; + var value = []; + for (var i = 0; i < dimensions.length; i++) { + if (!isNaN(args[i])) { + hasValue = true; + } + value.push(args[i]); + } + var idx = args[args.length - 1]; + + if (hasValue) { + data.setItemLayout(idx, coordSys.dataToPoint(value)); + } + else { + // Also {Array.}, not undefined to avoid if...else... statement + data.setItemLayout(idx, [NaN, NaN]); + } + }); + + simpleLayoutEdge(data.graph); + } + else if (!layout || layout === 'none') { + simpleLayoutHelper(seriesModel); + } + }); + }; + + + +/***/ }, +/* 219 */ +/***/ function(module, exports, __webpack_require__) { + + + + var simpleLayoutEdge = __webpack_require__(220); + + module.exports = function (seriesModel) { + var coordSys = seriesModel.coordinateSystem; + if (coordSys && coordSys.type !== 'view') { + return; + } + var graph = seriesModel.getGraph(); + + graph.eachNode(function (node) { + var model = node.getModel(); + node.setLayout([+model.get('x'), +model.get('y')]); + }); + + simpleLayoutEdge(graph); + }; + + +/***/ }, +/* 220 */ +/***/ function(module, exports, __webpack_require__) { + + + var vec2 = __webpack_require__(10); + module.exports = function (graph) { + graph.eachEdge(function (edge) { + var curveness = edge.getModel().get('lineStyle.normal.curveness') || 0; + var p1 = vec2.clone(edge.node1.getLayout()); + var p2 = vec2.clone(edge.node2.getLayout()); + var points = [p1, p2]; + if (+curveness) { + points.push([ + (p1[0] + p2[0]) / 2 - (p1[1] - p2[1]) * curveness, + (p1[1] + p2[1]) / 2 - (p2[0] - p1[0]) * curveness + ]); + } + edge.setLayout(points); + }); + }; + + +/***/ }, +/* 221 */ +/***/ function(module, exports, __webpack_require__) { + + + var circularLayoutHelper = __webpack_require__(222); + module.exports = function (ecModel) { + ecModel.eachSeriesByType('graph', function (seriesModel) { + if (seriesModel.get('layout') === 'circular') { + circularLayoutHelper(seriesModel); + } + }); + }; + + +/***/ }, +/* 222 */ +/***/ function(module, exports, __webpack_require__) { + + + var vec2 = __webpack_require__(10); + module.exports = function (seriesModel) { + var coordSys = seriesModel.coordinateSystem; + if (coordSys && coordSys.type !== 'view') { + return; + } + + var rect = coordSys.getBoundingRect(); + + var nodeData = seriesModel.getData(); + var graph = nodeData.graph; + + var angle = 0; + var sum = nodeData.getSum('value'); + var unitAngle = Math.PI * 2 / (sum || nodeData.count()); + + var cx = rect.width / 2 + rect.x; + var cy = rect.height / 2 + rect.y; + + var r = Math.min(rect.width, rect.height) / 2; + + graph.eachNode(function (node) { + var value = node.getValue('value'); + + angle += unitAngle * (sum ? value : 1) / 2; + + node.setLayout([ + r * Math.cos(angle) + cx, + r * Math.sin(angle) + cy + ]); + + angle += unitAngle * (sum ? value : 1) / 2; + }); + + nodeData.setLayout({ + cx: cx, + cy: cy + }); + + graph.eachEdge(function (edge) { + var curveness = edge.getModel().get('lineStyle.normal.curveness') || 0; + var p1 = vec2.clone(edge.node1.getLayout()); + var p2 = vec2.clone(edge.node2.getLayout()); + var cp1; + var x12 = (p1[0] + p2[0]) / 2; + var y12 = (p1[1] + p2[1]) / 2; + if (+curveness) { + curveness *= 3; + cp1 = [ + cx * curveness + x12 * (1 - curveness), + cy * curveness + y12 * (1 - curveness) + ]; + } + edge.setLayout([p1, p2, cp1]); + }); + }; + + +/***/ }, +/* 223 */ +/***/ function(module, exports, __webpack_require__) { + + + + var forceHelper = __webpack_require__(224); + var numberUtil = __webpack_require__(7); + var simpleLayoutHelper = __webpack_require__(219); + var circularLayoutHelper = __webpack_require__(222); + var vec2 = __webpack_require__(10); + var zrUtil = __webpack_require__(4); + + module.exports = function (ecModel) { + ecModel.eachSeriesByType('graph', function (graphSeries) { + var coordSys = graphSeries.coordinateSystem; + if (coordSys && coordSys.type !== 'view') { + return; + } + if (graphSeries.get('layout') === 'force') { + var preservedPoints = graphSeries.preservedPoints || {}; + var graph = graphSeries.getGraph(); + var nodeData = graph.data; + var edgeData = graph.edgeData; + var forceModel = graphSeries.getModel('force'); + var initLayout = forceModel.get('initLayout'); + if (graphSeries.preservedPoints) { + nodeData.each(function (idx) { + var id = nodeData.getId(idx); + nodeData.setItemLayout(idx, preservedPoints[id] || [NaN, NaN]); + }); + } + else if (!initLayout || initLayout === 'none') { + simpleLayoutHelper(graphSeries); + } + else if (initLayout === 'circular') { + circularLayoutHelper(graphSeries); + } + + var nodeDataExtent = nodeData.getDataExtent('value'); + var edgeDataExtent = edgeData.getDataExtent('value'); + // var edgeDataExtent = edgeData.getDataExtent('value'); + var repulsion = forceModel.get('repulsion'); + var edgeLength = forceModel.get('edgeLength'); + if (!zrUtil.isArray(repulsion)) { + repulsion = [repulsion, repulsion]; + } + if (!zrUtil.isArray(edgeLength)) { + edgeLength = [edgeLength, edgeLength]; + } + // Larger value has smaller length + edgeLength = [edgeLength[1], edgeLength[0]]; + + var nodes = nodeData.mapArray('value', function (value, idx) { + var point = nodeData.getItemLayout(idx); + // var w = numberUtil.linearMap(value, nodeDataExtent, [0, 50]); + var rep = numberUtil.linearMap(value, nodeDataExtent, repulsion); + if (isNaN(rep)) { + rep = (repulsion[0] + repulsion[1]) / 2; + } + return { + w: rep, + rep: rep, + fixed: nodeData.getItemModel(idx).get('fixed'), + p: (!point || isNaN(point[0]) || isNaN(point[1])) ? null : point + }; + }); + var edges = edgeData.mapArray('value', function (value, idx) { + var edge = graph.getEdgeByIndex(idx); + var d = numberUtil.linearMap(value, edgeDataExtent, edgeLength); + if (isNaN(d)) { + d = (edgeLength[0] + edgeLength[1]) / 2; + } + return { + n1: nodes[edge.node1.dataIndex], + n2: nodes[edge.node2.dataIndex], + d: d, + curveness: edge.getModel().get('lineStyle.normal.curveness') || 0 + }; + }); + + var coordSys = graphSeries.coordinateSystem; + var rect = coordSys.getBoundingRect(); + var forceInstance = forceHelper(nodes, edges, { + rect: rect, + gravity: forceModel.get('gravity') + }); + var oldStep = forceInstance.step; + forceInstance.step = function (cb) { + for (var i = 0, l = nodes.length; i < l; i++) { + if (nodes[i].fixed) { + // Write back to layout instance + vec2.copy(nodes[i].p, graph.getNodeByIndex(i).getLayout()); + } + } + oldStep(function (nodes, edges, stopped) { + for (var i = 0, l = nodes.length; i < l; i++) { + if (!nodes[i].fixed) { + graph.getNodeByIndex(i).setLayout(nodes[i].p); + } + preservedPoints[nodeData.getId(i)] = nodes[i].p; + } + for (var i = 0, l = edges.length; i < l; i++) { + var e = edges[i]; + var edge = graph.getEdgeByIndex(i); + var p1 = e.n1.p; + var p2 = e.n2.p; + var points = edge.getLayout(); + points = points ? points.slice() : []; + points[0] = points[0] || []; + points[1] = points[1] || []; + vec2.copy(points[0], p1); + vec2.copy(points[1], p2); + if (+e.curveness) { + points[2] = [ + (p1[0] + p2[0]) / 2 - (p1[1] - p2[1]) * e.curveness, + (p1[1] + p2[1]) / 2 - (p2[0] - p1[0]) * e.curveness + ]; + } + edge.setLayout(points); + } + // Update layout + + cb && cb(stopped); + }); + }; + graphSeries.forceLayout = forceInstance; + graphSeries.preservedPoints = preservedPoints; + + // Step to get the layout + forceInstance.step(); + } + else { + // Remove prev injected forceLayout instance + graphSeries.forceLayout = null; + } + }); + }; + + +/***/ }, +/* 224 */ +/***/ function(module, exports, __webpack_require__) { + + + + var vec2 = __webpack_require__(10); + var scaleAndAdd = vec2.scaleAndAdd; + + // function adjacentNode(n, e) { + // return e.n1 === n ? e.n2 : e.n1; + // } + + module.exports = function (nodes, edges, opts) { + var rect = opts.rect; + var width = rect.width; + var height = rect.height; + var center = [rect.x + width / 2, rect.y + height / 2]; + // var scale = opts.scale || 1; + var gravity = opts.gravity == null ? 0.1 : opts.gravity; + + // for (var i = 0; i < edges.length; i++) { + // var e = edges[i]; + // var n1 = e.n1; + // var n2 = e.n2; + // n1.edges = n1.edges || []; + // n2.edges = n2.edges || []; + // n1.edges.push(e); + // n2.edges.push(e); + // } + // Init position + for (var i = 0; i < nodes.length; i++) { + var n = nodes[i]; + if (!n.p) { + // Use the position from first adjecent node with defined position + // Or use a random position + // From d3 + // if (n.edges) { + // var j = -1; + // while (++j < n.edges.length) { + // var e = n.edges[j]; + // var other = adjacentNode(n, e); + // if (other.p) { + // n.p = vec2.clone(other.p); + // break; + // } + // } + // } + // if (!n.p) { + n.p = vec2.create( + width * (Math.random() - 0.5) + center[0], + height * (Math.random() - 0.5) + center[1] + ); + // } + } + n.pp = vec2.clone(n.p); + n.edges = null; + } + + // Formula in 'Graph Drawing by Force-directed Placement' + // var k = scale * Math.sqrt(width * height / nodes.length); + // var k2 = k * k; + + var friction = 0.6; + + return { + warmUp: function () { + friction = 0.5; + }, + + setFixed: function (idx) { + nodes[idx].fixed = true; + }, + + setUnfixed: function (idx) { + nodes[idx].fixed = false; + }, + + step: function (cb) { + var v12 = []; + var nLen = nodes.length; + for (var i = 0; i < edges.length; i++) { + var e = edges[i]; + var n1 = e.n1; + var n2 = e.n2; + + vec2.sub(v12, n2.p, n1.p); + var d = vec2.len(v12) - e.d; + var w = n2.w / (n1.w + n2.w); + vec2.normalize(v12, v12); + + !n1.fixed && scaleAndAdd(n1.p, n1.p, v12, w * d * friction); + !n2.fixed && scaleAndAdd(n2.p, n2.p, v12, -(1 - w) * d * friction); + } + // Gravity + for (var i = 0; i < nLen; i++) { + var n = nodes[i]; + if (!n.fixed) { + vec2.sub(v12, center, n.p); + // var d = vec2.len(v12); + // vec2.scale(v12, v12, 1 / d); + // var gravityFactor = gravity; + vec2.scaleAndAdd(n.p, n.p, v12, gravity * friction); + } + } + + // Repulsive + // PENDING + for (var i = 0; i < nLen; i++) { + var n1 = nodes[i]; + for (var j = i + 1; j < nLen; j++) { + var n2 = nodes[j]; + vec2.sub(v12, n2.p, n1.p); + var d = vec2.len(v12); + if (d === 0) { + // Random repulse + vec2.set(v12, Math.random() - 0.5, Math.random() - 0.5); + d = 1; + } + var repFact = (n1.rep + n2.rep) / d / d; + !n1.fixed && scaleAndAdd(n1.pp, n1.pp, v12, repFact); + !n2.fixed && scaleAndAdd(n2.pp, n2.pp, v12, -repFact); + } + } + var v = []; + for (var i = 0; i < nLen; i++) { + var n = nodes[i]; + if (!n.fixed) { + vec2.sub(v, n.p, n.pp); + vec2.scaleAndAdd(n.p, n.p, v, friction); + vec2.copy(n.pp, n.p); + } + } + + friction = friction * 0.992; + + cb && cb(nodes, edges, friction < 0.01); + } + }; + }; + + +/***/ }, +/* 225 */ +/***/ function(module, exports, __webpack_require__) { + + + // FIXME Where to create the simple view coordinate system + var View = __webpack_require__(176); + var layout = __webpack_require__(71); + var bbox = __webpack_require__(38); + + function getViewRect(seriesModel, api, aspect) { + var option = seriesModel.getBoxLayoutParams(); + option.aspect = aspect; + return layout.getLayoutRect(option, { + width: api.getWidth(), + height: api.getHeight() + }); + } + + module.exports = function (ecModel, api) { + var viewList = []; + ecModel.eachSeriesByType('graph', function (seriesModel) { + var coordSysType = seriesModel.get('coordinateSystem'); + if (!coordSysType || coordSysType === 'view') { + + var data = seriesModel.getData(); + var positions = data.mapArray(function (idx) { + var itemModel = data.getItemModel(idx); + return [+itemModel.get('x'), +itemModel.get('y')]; + }); + + var min = []; + var max = []; + + bbox.fromPoints(positions, min, max); + + // If width or height is 0 + if (max[0] - min[0] === 0) { + max[0] += 1; + min[0] -= 1; + } + if (max[1] - min[1] === 0) { + max[1] += 1; + min[1] -= 1; + } + var aspect = (max[0] - min[0]) / (max[1] - min[1]); + // FIXME If get view rect after data processed? + var viewRect = getViewRect(seriesModel, api, aspect); + // Position may be NaN, use view rect instead + if (isNaN(aspect)) { + min = [viewRect.x, viewRect.y]; + max = [viewRect.x + viewRect.width, viewRect.y + viewRect.height]; + } + + var bbWidth = max[0] - min[0]; + var bbHeight = max[1] - min[1]; + + var viewWidth = viewRect.width; + var viewHeight = viewRect.height; + + var viewCoordSys = seriesModel.coordinateSystem = new View(); + viewCoordSys.zoomLimit = seriesModel.get('scaleLimit'); + + viewCoordSys.setBoundingRect( + min[0], min[1], bbWidth, bbHeight + ); + viewCoordSys.setViewRect( + viewRect.x, viewRect.y, viewWidth, viewHeight + ); + + // Update roam info + viewCoordSys.setCenter(seriesModel.get('center')); + viewCoordSys.setZoom(seriesModel.get('zoom')); + + viewList.push(viewCoordSys); + } + }); + return viewList; + }; + + +/***/ }, +/* 226 */ +/***/ function(module, exports, __webpack_require__) { + + + __webpack_require__(227); + __webpack_require__(228); + + +/***/ }, +/* 227 */ +/***/ function(module, exports, __webpack_require__) { + + + + var List = __webpack_require__(98); + var SeriesModel = __webpack_require__(78); + var zrUtil = __webpack_require__(4); + + var GaugeSeries = SeriesModel.extend({ + + type: 'series.gauge', + + getInitialData: function (option, ecModel) { + var list = new List(['value'], this); + var dataOpt = option.data || []; + if (!zrUtil.isArray(dataOpt)) { + dataOpt = [dataOpt]; + } + // Only use the first data item + list.initData(dataOpt); + return list; + }, + + defaultOption: { + zlevel: 0, + z: 2, + // 默认全局居中 + center: ['50%', '50%'], + legendHoverLink: true, + radius: '75%', + startAngle: 225, + endAngle: -45, + clockwise: true, + // 最小值 + min: 0, + // 最大值 + max: 100, + // 分割段数,默认为10 + splitNumber: 10, + // 坐标轴线 + axisLine: { + // 默认显示,属性show控制显示与否 + show: true, + lineStyle: { // 属性lineStyle控制线条样式 + color: [[0.2, '#91c7ae'], [0.8, '#63869e'], [1, '#c23531']], + width: 30 + } + }, + // 分隔线 + splitLine: { + // 默认显示,属性show控制显示与否 + show: true, + // 属性length控制线长 + length: 30, + // 属性lineStyle(详见lineStyle)控制线条样式 + lineStyle: { + color: '#eee', + width: 2, + type: 'solid' + } + }, + // 坐标轴小标记 + axisTick: { + // 属性show控制显示与否,默认不显示 + show: true, + // 每份split细分多少段 + splitNumber: 5, + // 属性length控制线长 + length: 8, + // 属性lineStyle控制线条样式 + lineStyle: { + color: '#eee', + width: 1, + type: 'solid' + } + }, + axisLabel: { + show: true, + distance: 5, + // formatter: null, + textStyle: { // 其余属性默认使用全局文本样式,详见TEXTSTYLE + color: 'auto' + } + }, + pointer: { + show: true, + length: '80%', + width: 8 + }, + itemStyle: { + normal: { + color: 'auto' + } + }, + title: { + show: true, + // x, y,单位px + offsetCenter: [0, '-40%'], + // 其余属性默认使用全局文本样式,详见TEXTSTYLE + textStyle: { + color: '#333', + fontSize: 15 + } + }, + detail: { + show: true, + backgroundColor: 'rgba(0,0,0,0)', + borderWidth: 0, + borderColor: '#ccc', + width: 100, + height: 40, + // x, y,单位px + offsetCenter: [0, '40%'], + // formatter: null, + // 其余属性默认使用全局文本样式,详见TEXTSTYLE + textStyle: { + color: 'auto', + fontSize: 30 + } + } + } + }); + + module.exports = GaugeSeries; + + +/***/ }, +/* 228 */ +/***/ function(module, exports, __webpack_require__) { + + + + var PointerPath = __webpack_require__(229); + + var graphic = __webpack_require__(18); + var numberUtil = __webpack_require__(7); + var parsePercent = numberUtil.parsePercent; + + function parsePosition(seriesModel, api) { + var center = seriesModel.get('center'); + var width = api.getWidth(); + var height = api.getHeight(); + var size = Math.min(width, height); + var cx = parsePercent(center[0], api.getWidth()); + var cy = parsePercent(center[1], api.getHeight()); + var r = parsePercent(seriesModel.get('radius'), size / 2); + + return { + cx: cx, + cy: cy, + r: r + }; + } + + function formatLabel(label, labelFormatter) { + if (labelFormatter) { + if (typeof labelFormatter === 'string') { + label = labelFormatter.replace('{value}', label != null ? label : ''); + } + else if (typeof labelFormatter === 'function') { + label = labelFormatter(label); + } + } + + return label; + } + + var PI2 = Math.PI * 2; + + var GaugeView = __webpack_require__(80).extend({ + + type: 'gauge', + + render: function (seriesModel, ecModel, api) { + + this.group.removeAll(); + + var colorList = seriesModel.get('axisLine.lineStyle.color'); + var posInfo = parsePosition(seriesModel, api); + + this._renderMain( + seriesModel, ecModel, api, colorList, posInfo + ); + }, + + dispose: function () {}, + + _renderMain: function (seriesModel, ecModel, api, colorList, posInfo) { + var group = this.group; + + var axisLineModel = seriesModel.getModel('axisLine'); + var lineStyleModel = axisLineModel.getModel('lineStyle'); + + var clockwise = seriesModel.get('clockwise'); + var startAngle = -seriesModel.get('startAngle') / 180 * Math.PI; + var endAngle = -seriesModel.get('endAngle') / 180 * Math.PI; + + var angleRangeSpan = (endAngle - startAngle) % PI2; + + var prevEndAngle = startAngle; + var axisLineWidth = lineStyleModel.get('width'); + + for (var i = 0; i < colorList.length; i++) { + // Clamp + var percent = Math.min(Math.max(colorList[i][0], 0), 1); + var endAngle = startAngle + angleRangeSpan * percent; + var sector = new graphic.Sector({ + shape: { + startAngle: prevEndAngle, + endAngle: endAngle, + cx: posInfo.cx, + cy: posInfo.cy, + clockwise: clockwise, + r0: posInfo.r - axisLineWidth, + r: posInfo.r + }, + silent: true + }); + + sector.setStyle({ + fill: colorList[i][1] + }); + + sector.setStyle(lineStyleModel.getLineStyle( + // Because we use sector to simulate arc + // so the properties for stroking are useless + ['color', 'borderWidth', 'borderColor'] + )); + + group.add(sector); + + prevEndAngle = endAngle; + } + + var getColor = function (percent) { + // Less than 0 + if (percent <= 0) { + return colorList[0][1]; + } + for (var i = 0; i < colorList.length; i++) { + if (colorList[i][0] >= percent + && (i === 0 ? 0 : colorList[i - 1][0]) < percent + ) { + return colorList[i][1]; + } + } + // More than 1 + return colorList[i - 1][1]; + }; + + if (!clockwise) { + var tmp = startAngle; + startAngle = endAngle; + endAngle = tmp; + } + + this._renderTicks( + seriesModel, ecModel, api, getColor, posInfo, + startAngle, endAngle, clockwise + ); + + this._renderPointer( + seriesModel, ecModel, api, getColor, posInfo, + startAngle, endAngle, clockwise + ); + + this._renderTitle( + seriesModel, ecModel, api, getColor, posInfo + ); + this._renderDetail( + seriesModel, ecModel, api, getColor, posInfo + ); + }, + + _renderTicks: function ( + seriesModel, ecModel, api, getColor, posInfo, + startAngle, endAngle, clockwise + ) { + var group = this.group; + var cx = posInfo.cx; + var cy = posInfo.cy; + var r = posInfo.r; + + var minVal = +seriesModel.get('min'); + var maxVal = +seriesModel.get('max'); + + var splitLineModel = seriesModel.getModel('splitLine'); + var tickModel = seriesModel.getModel('axisTick'); + var labelModel = seriesModel.getModel('axisLabel'); + + var splitNumber = seriesModel.get('splitNumber'); + var subSplitNumber = tickModel.get('splitNumber'); + + var splitLineLen = parsePercent( + splitLineModel.get('length'), r + ); + var tickLen = parsePercent( + tickModel.get('length'), r + ); + + var angle = startAngle; + var step = (endAngle - startAngle) / splitNumber; + var subStep = step / subSplitNumber; + + var splitLineStyle = splitLineModel.getModel('lineStyle').getLineStyle(); + var tickLineStyle = tickModel.getModel('lineStyle').getLineStyle(); + var textStyleModel = labelModel.getModel('textStyle'); + + for (var i = 0; i <= splitNumber; i++) { + var unitX = Math.cos(angle); + var unitY = Math.sin(angle); + // Split line + if (splitLineModel.get('show')) { + var splitLine = new graphic.Line({ + shape: { + x1: unitX * r + cx, + y1: unitY * r + cy, + x2: unitX * (r - splitLineLen) + cx, + y2: unitY * (r - splitLineLen) + cy + }, + style: splitLineStyle, + silent: true + }); + if (splitLineStyle.stroke === 'auto') { + splitLine.setStyle({ + stroke: getColor(i / splitNumber) + }); + } + + group.add(splitLine); + } + + // Label + if (labelModel.get('show')) { + var label = formatLabel( + numberUtil.round(i / splitNumber * (maxVal - minVal) + minVal), + labelModel.get('formatter') + ); + var distance = labelModel.get('distance'); + + var text = new graphic.Text({ + style: { + text: label, + x: unitX * (r - splitLineLen - distance) + cx, + y: unitY * (r - splitLineLen - distance) + cy, + fill: textStyleModel.getTextColor(), + textFont: textStyleModel.getFont(), + textVerticalAlign: unitY < -0.4 ? 'top' : (unitY > 0.4 ? 'bottom' : 'middle'), + textAlign: unitX < -0.4 ? 'left' : (unitX > 0.4 ? 'right' : 'center') + }, + silent: true + }); + if (text.style.fill === 'auto') { + text.setStyle({ + fill: getColor(i / splitNumber) + }); + } + + group.add(text); + } + + // Axis tick + if (tickModel.get('show') && i !== splitNumber) { + for (var j = 0; j <= subSplitNumber; j++) { + var unitX = Math.cos(angle); + var unitY = Math.sin(angle); + var tickLine = new graphic.Line({ + shape: { + x1: unitX * r + cx, + y1: unitY * r + cy, + x2: unitX * (r - tickLen) + cx, + y2: unitY * (r - tickLen) + cy + }, + silent: true, + style: tickLineStyle + }); + + if (tickLineStyle.stroke === 'auto') { + tickLine.setStyle({ + stroke: getColor((i + j / subSplitNumber) / splitNumber) + }); + } + + group.add(tickLine); + angle += subStep; + } + angle -= subStep; + } + else { + angle += step; + } + } + }, + + _renderPointer: function ( + seriesModel, ecModel, api, getColor, posInfo, + startAngle, endAngle, clockwise + ) { + + var group = this.group; + var oldData = this._data; + + if (!seriesModel.get('pointer.show')) { + // Remove old element + oldData && oldData.eachItemGraphicEl(function (el) { + group.remove(el); + }); + return; + } + + var valueExtent = [+seriesModel.get('min'), +seriesModel.get('max')]; + var angleExtent = [startAngle, endAngle]; + + var data = seriesModel.getData(); + + data.diff(oldData) + .add(function (idx) { + var pointer = new PointerPath({ + shape: { + angle: startAngle + } + }); + + graphic.initProps(pointer, { + shape: { + angle: numberUtil.linearMap(data.get('value', idx), valueExtent, angleExtent, true) + } + }, seriesModel); + + group.add(pointer); + data.setItemGraphicEl(idx, pointer); + }) + .update(function (newIdx, oldIdx) { + var pointer = oldData.getItemGraphicEl(oldIdx); + + graphic.updateProps(pointer, { + shape: { + angle: numberUtil.linearMap(data.get('value', newIdx), valueExtent, angleExtent, true) + } + }, seriesModel); + + group.add(pointer); + data.setItemGraphicEl(newIdx, pointer); + }) + .remove(function (idx) { + var pointer = oldData.getItemGraphicEl(idx); + group.remove(pointer); + }) + .execute(); + + data.eachItemGraphicEl(function (pointer, idx) { + var itemModel = data.getItemModel(idx); + var pointerModel = itemModel.getModel('pointer'); + + pointer.setShape({ + x: posInfo.cx, + y: posInfo.cy, + width: parsePercent( + pointerModel.get('width'), posInfo.r + ), + r: parsePercent(pointerModel.get('length'), posInfo.r) + }); + + pointer.useStyle(itemModel.getModel('itemStyle.normal').getItemStyle()); + + if (pointer.style.fill === 'auto') { + pointer.setStyle('fill', getColor( + numberUtil.linearMap(data.get('value', idx), valueExtent, [0, 1], true) + )); + } + + graphic.setHoverStyle( + pointer, itemModel.getModel('itemStyle.emphasis').getItemStyle() + ); + }); + + this._data = data; + }, + + _renderTitle: function ( + seriesModel, ecModel, api, getColor, posInfo + ) { + var titleModel = seriesModel.getModel('title'); + if (titleModel.get('show')) { + var textStyleModel = titleModel.getModel('textStyle'); + var offsetCenter = titleModel.get('offsetCenter'); + var x = posInfo.cx + parsePercent(offsetCenter[0], posInfo.r); + var y = posInfo.cy + parsePercent(offsetCenter[1], posInfo.r); + + var text = new graphic.Text({ + style: { + x: x, + y: y, + // FIXME First data name ? + text: seriesModel.getData().getName(0), + fill: textStyleModel.getTextColor(), + textFont: textStyleModel.getFont(), + textAlign: 'center', + textVerticalAlign: 'middle' + } + }); + + if (text.style.fill === 'auto') { + var minVal = +seriesModel.get('min'); + var maxVal = +seriesModel.get('max'); + var value = seriesModel.getData().get('value', 0); + text.setStyle('fill', getColor( + numberUtil.linearMap(value, [minVal, maxVal], [0, 1], true) + )); + } + + this.group.add(text); + } + }, + + _renderDetail: function ( + seriesModel, ecModel, api, getColor, posInfo + ) { + var detailModel = seriesModel.getModel('detail'); + var minVal = +seriesModel.get('min'); + var maxVal = +seriesModel.get('max'); + if (detailModel.get('show')) { + var textStyleModel = detailModel.getModel('textStyle'); + var offsetCenter = detailModel.get('offsetCenter'); + var x = posInfo.cx + parsePercent(offsetCenter[0], posInfo.r); + var y = posInfo.cy + parsePercent(offsetCenter[1], posInfo.r); + var width = parsePercent(detailModel.get('width'), posInfo.r); + var height = parsePercent(detailModel.get('height'), posInfo.r); + var value = seriesModel.getData().get('value', 0); + var rect = new graphic.Rect({ + shape: { + x: x - width / 2, + y: y - height / 2, + width: width, + height: height + }, + style: { + text: formatLabel( + // FIXME First data name ? + value, detailModel.get('formatter') + ), + fill: detailModel.get('backgroundColor'), + textFill: textStyleModel.getTextColor(), + textFont: textStyleModel.getFont() + } + }); + if (rect.style.textFill === 'auto') { + rect.setStyle('textFill', getColor( + numberUtil.linearMap(value, [minVal, maxVal], [0, 1], true) + )); + } + rect.setStyle(detailModel.getItemStyle(['color'])); + this.group.add(rect); + } + } + }); + + module.exports = GaugeView; + + +/***/ }, +/* 229 */ +/***/ function(module, exports, __webpack_require__) { + + + + module.exports = __webpack_require__(20).extend({ + + type: 'echartsGaugePointer', + + shape: { + angle: 0, + + width: 10, + + r: 10, + + x: 0, + + y: 0 + }, + + buildPath: function (ctx, shape) { + var mathCos = Math.cos; + var mathSin = Math.sin; + + var r = shape.r; + var width = shape.width; + var angle = shape.angle; + var x = shape.x - mathCos(angle) * width * (width >= r / 3 ? 1 : 2); + var y = shape.y - mathSin(angle) * width * (width >= r / 3 ? 1 : 2); + + angle = shape.angle - Math.PI / 2; + ctx.moveTo(x, y); + ctx.lineTo( + shape.x + mathCos(angle) * width, + shape.y + mathSin(angle) * width + ); + ctx.lineTo( + shape.x + mathCos(shape.angle) * r, + shape.y + mathSin(shape.angle) * r + ); + ctx.lineTo( + shape.x - mathCos(angle) * width, + shape.y - mathSin(angle) * width + ); + ctx.lineTo(x, y); + return; + } + }); + + +/***/ }, +/* 230 */ +/***/ function(module, exports, __webpack_require__) { + + + + var zrUtil = __webpack_require__(4); + var echarts = __webpack_require__(1); + + __webpack_require__(231); + __webpack_require__(232); + + echarts.registerVisual(zrUtil.curry(__webpack_require__(151), 'funnel')); + echarts.registerLayout(__webpack_require__(233)); + + echarts.registerProcessor(zrUtil.curry(__webpack_require__(154), 'funnel')); + + +/***/ }, +/* 231 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + + var List = __webpack_require__(98); + var modelUtil = __webpack_require__(5); + var completeDimensions = __webpack_require__(110); + + var FunnelSeries = __webpack_require__(1).extendSeriesModel({ + + type: 'series.funnel', + + init: function (option) { + FunnelSeries.superApply(this, 'init', arguments); + + // Enable legend selection for each data item + // Use a function instead of direct access because data reference may changed + this.legendDataProvider = function () { + return this.getRawData(); + }; + // Extend labelLine emphasis + this._defaultLabelLine(option); + }, + + getInitialData: function (option, ecModel) { + var dimensions = completeDimensions(['value'], option.data); + var list = new List(dimensions, this); + list.initData(option.data); + return list; + }, + + _defaultLabelLine: function (option) { + // Extend labelLine emphasis + modelUtil.defaultEmphasis(option.labelLine, ['show']); + + var labelLineNormalOpt = option.labelLine.normal; + var labelLineEmphasisOpt = option.labelLine.emphasis; + // Not show label line if `label.normal.show = false` + labelLineNormalOpt.show = labelLineNormalOpt.show + && option.label.normal.show; + labelLineEmphasisOpt.show = labelLineEmphasisOpt.show + && option.label.emphasis.show; + }, + + // Overwrite + getDataParams: function (dataIndex) { + var data = this.getData(); + var params = FunnelSeries.superCall(this, 'getDataParams', dataIndex); + var sum = data.getSum('value'); + // Percent is 0 if sum is 0 + params.percent = !sum ? 0 : +(data.get('value', dataIndex) / sum * 100).toFixed(2); + + params.$vars.push('percent'); + return params; + }, + + defaultOption: { + zlevel: 0, // 一级层叠 + z: 2, // 二级层叠 + legendHoverLink: true, + left: 80, + top: 60, + right: 80, + bottom: 60, + // width: {totalWidth} - left - right, + // height: {totalHeight} - top - bottom, + + // 默认取数据最小最大值 + // min: 0, + // max: 100, + minSize: '0%', + maxSize: '100%', + sort: 'descending', // 'ascending', 'descending' + gap: 0, + funnelAlign: 'center', + label: { + normal: { + show: true, + position: 'outer' + // formatter: 标签文本格式器,同Tooltip.formatter,不支持异步回调 + // textStyle: null // 默认使用全局文本样式,详见TEXTSTYLE + }, + emphasis: { + show: true + } + }, + labelLine: { + normal: { + show: true, + length: 20, + lineStyle: { + // color: 各异, + width: 1, + type: 'solid' + } + }, + emphasis: {} + }, + itemStyle: { + normal: { + // color: 各异, + borderColor: '#fff', + borderWidth: 1 + }, + emphasis: { + // color: 各异, + } + } + } + }); + + module.exports = FunnelSeries; + + + +/***/ }, +/* 232 */ +/***/ function(module, exports, __webpack_require__) { + + + + var graphic = __webpack_require__(18); + var zrUtil = __webpack_require__(4); + + /** + * Piece of pie including Sector, Label, LabelLine + * @constructor + * @extends {module:zrender/graphic/Group} + */ + function FunnelPiece(data, idx) { + + graphic.Group.call(this); + + var polygon = new graphic.Polygon(); + var labelLine = new graphic.Polyline(); + var text = new graphic.Text(); + this.add(polygon); + this.add(labelLine); + this.add(text); + + this.updateData(data, idx, true); + + // Hover to change label and labelLine + function onEmphasis() { + labelLine.ignore = labelLine.hoverIgnore; + text.ignore = text.hoverIgnore; + } + function onNormal() { + labelLine.ignore = labelLine.normalIgnore; + text.ignore = text.normalIgnore; + } + this.on('emphasis', onEmphasis) + .on('normal', onNormal) + .on('mouseover', onEmphasis) + .on('mouseout', onNormal); + } + + var funnelPieceProto = FunnelPiece.prototype; + + function getLabelStyle(data, idx, state, labelModel) { + var textStyleModel = labelModel.getModel('textStyle'); + var position = labelModel.get('position'); + var isLabelInside = position === 'inside' || position === 'inner' || position === 'center'; + return { + fill: textStyleModel.getTextColor() + || (isLabelInside ? '#fff' : data.getItemVisual(idx, 'color')), + textFont: textStyleModel.getFont(), + text: zrUtil.retrieve( + data.hostModel.getFormattedLabel(idx, state), + data.getName(idx) + ) + }; + } + + var opacityAccessPath = ['itemStyle', 'normal', 'opacity']; + funnelPieceProto.updateData = function (data, idx, firstCreate) { + + var polygon = this.childAt(0); + + var seriesModel = data.hostModel; + var itemModel = data.getItemModel(idx); + var layout = data.getItemLayout(idx); + var opacity = data.getItemModel(idx).get(opacityAccessPath); + opacity = opacity == null ? 1 : opacity; + + // Reset style + polygon.useStyle({}); + + if (firstCreate) { + polygon.setShape({ + points: layout.points + }); + polygon.setStyle({ opacity : 0 }); + graphic.initProps(polygon, { + style: { + opacity: opacity + } + }, seriesModel, idx); + } + else { + graphic.updateProps(polygon, { + style: { + opacity: opacity + }, + shape: { + points: layout.points + } + }, seriesModel, idx); + } + + // Update common style + var itemStyleModel = itemModel.getModel('itemStyle'); + var visualColor = data.getItemVisual(idx, 'color'); + + polygon.setStyle( + zrUtil.defaults( + { + lineJoin: 'round', + fill: visualColor + }, + itemStyleModel.getModel('normal').getItemStyle(['opacity']) + ) + ); + polygon.hoverStyle = itemStyleModel.getModel('emphasis').getItemStyle(); + + this._updateLabel(data, idx); + + graphic.setHoverStyle(this); + }; + + funnelPieceProto._updateLabel = function (data, idx) { + + var labelLine = this.childAt(1); + var labelText = this.childAt(2); + + var seriesModel = data.hostModel; + var itemModel = data.getItemModel(idx); + var layout = data.getItemLayout(idx); + var labelLayout = layout.label; + var visualColor = data.getItemVisual(idx, 'color'); + + graphic.updateProps(labelLine, { + shape: { + points: labelLayout.linePoints || labelLayout.linePoints + } + }, seriesModel, idx); + + graphic.updateProps(labelText, { + style: { + x: labelLayout.x, + y: labelLayout.y + } + }, seriesModel, idx); + labelText.attr({ + style: { + textAlign: labelLayout.textAlign, + textVerticalAlign: labelLayout.verticalAlign, + textFont: labelLayout.font + }, + rotation: labelLayout.rotation, + origin: [labelLayout.x, labelLayout.y], + z2: 10 + }); + + var labelModel = itemModel.getModel('label.normal'); + var labelHoverModel = itemModel.getModel('label.emphasis'); + var labelLineModel = itemModel.getModel('labelLine.normal'); + var labelLineHoverModel = itemModel.getModel('labelLine.emphasis'); + + labelText.setStyle(getLabelStyle(data, idx, 'normal', labelModel)); + + labelText.ignore = labelText.normalIgnore = !labelModel.get('show'); + labelText.hoverIgnore = !labelHoverModel.get('show'); + + labelLine.ignore = labelLine.normalIgnore = !labelLineModel.get('show'); + labelLine.hoverIgnore = !labelLineHoverModel.get('show'); + + // Default use item visual color + labelLine.setStyle({ + stroke: visualColor + }); + labelLine.setStyle(labelLineModel.getModel('lineStyle').getLineStyle()); + + labelText.hoverStyle = getLabelStyle(data, idx, 'emphasis', labelHoverModel); + labelLine.hoverStyle = labelLineHoverModel.getModel('lineStyle').getLineStyle(); + }; + + zrUtil.inherits(FunnelPiece, graphic.Group); + + + var Funnel = __webpack_require__(80).extend({ + + type: 'funnel', + + render: function (seriesModel, ecModel, api) { + var data = seriesModel.getData(); + var oldData = this._data; + + var group = this.group; + + data.diff(oldData) + .add(function (idx) { + var funnelPiece = new FunnelPiece(data, idx); + + data.setItemGraphicEl(idx, funnelPiece); + + group.add(funnelPiece); + }) + .update(function (newIdx, oldIdx) { + var piePiece = oldData.getItemGraphicEl(oldIdx); + + piePiece.updateData(data, newIdx); + + group.add(piePiece); + data.setItemGraphicEl(newIdx, piePiece); + }) + .remove(function (idx) { + var piePiece = oldData.getItemGraphicEl(idx); + group.remove(piePiece); + }) + .execute(); + + this._data = data; + }, + + remove: function () { + this.group.removeAll(); + this._data = null; + }, + + dispose: function () {} + }); + + module.exports = Funnel; + + +/***/ }, +/* 233 */ +/***/ function(module, exports, __webpack_require__) { + + + + var layout = __webpack_require__(71); + var number = __webpack_require__(7); + + var parsePercent = number.parsePercent; + + function getViewRect(seriesModel, api) { + return layout.getLayoutRect( + seriesModel.getBoxLayoutParams(), { + width: api.getWidth(), + height: api.getHeight() + } + ); + } + + function getSortedIndices(data, sort) { + var valueArr = data.mapArray('value', function (val) { + return val; + }); + var indices = []; + var isAscending = sort === 'ascending'; + for (var i = 0, len = data.count(); i < len; i++) { + indices[i] = i; + } + + // Add custom sortable function & none sortable opetion by "options.sort" + if (typeof sort === 'function') { + indices.sort(sort); + } else if (sort !== 'none') { + indices.sort(function (a, b) { + return isAscending ? valueArr[a] - valueArr[b] : valueArr[b] - valueArr[a]; + }); + } + return indices; + } + + function labelLayout (data) { + data.each(function (idx) { + var itemModel = data.getItemModel(idx); + var labelModel = itemModel.getModel('label.normal'); + var labelPosition = labelModel.get('position'); + + var labelLineModel = itemModel.getModel('labelLine.normal'); + + var layout = data.getItemLayout(idx); + var points = layout.points; + + var isLabelInside = labelPosition === 'inner' + || labelPosition === 'inside' || labelPosition === 'center'; + + var textAlign; + var textX; + var textY; + var linePoints; + + if (isLabelInside) { + textX = (points[0][0] + points[1][0] + points[2][0] + points[3][0]) / 4; + textY = (points[0][1] + points[1][1] + points[2][1] + points[3][1]) / 4; + textAlign = 'center'; + linePoints = [ + [textX, textY], [textX, textY] + ]; + } + else { + var x1; + var y1; + var x2; + var labelLineLen = labelLineModel.get('length'); + if (labelPosition === 'left') { + // Left side + x1 = (points[3][0] + points[0][0]) / 2; + y1 = (points[3][1] + points[0][1]) / 2; + x2 = x1 - labelLineLen; + textX = x2 - 5; + textAlign = 'right'; + } + else { + // Right side + x1 = (points[1][0] + points[2][0]) / 2; + y1 = (points[1][1] + points[2][1]) / 2; + x2 = x1 + labelLineLen; + textX = x2 + 5; + textAlign = 'left'; + } + var y2 = y1; + + linePoints = [[x1, y1], [x2, y2]]; + textY = y2; + } + + layout.label = { + linePoints: linePoints, + x: textX, + y: textY, + verticalAlign: 'middle', + textAlign: textAlign, + inside: isLabelInside + }; + }); + } + + module.exports = function (ecModel, api, payload) { + ecModel.eachSeriesByType('funnel', function (seriesModel) { + var data = seriesModel.getData(); + var sort = seriesModel.get('sort'); + var viewRect = getViewRect(seriesModel, api); + var indices = getSortedIndices(data, sort); + + var sizeExtent = [ + parsePercent(seriesModel.get('minSize'), viewRect.width), + parsePercent(seriesModel.get('maxSize'), viewRect.width) + ]; + var dataExtent = data.getDataExtent('value'); + var min = seriesModel.get('min'); + var max = seriesModel.get('max'); + if (min == null) { + min = Math.min(dataExtent[0], 0); + } + if (max == null) { + max = dataExtent[1]; + } + + var funnelAlign = seriesModel.get('funnelAlign'); + var gap = seriesModel.get('gap'); + var itemHeight = (viewRect.height - gap * (data.count() - 1)) / data.count(); + + var y = viewRect.y; + + var getLinePoints = function (idx, offY) { + // End point index is data.count() and we assign it 0 + var val = data.get('value', idx) || 0; + var itemWidth = number.linearMap(val, [min, max], sizeExtent, true); + var x0; + switch (funnelAlign) { + case 'left': + x0 = viewRect.x; + break; + case 'center': + x0 = viewRect.x + (viewRect.width - itemWidth) / 2; + break; + case 'right': + x0 = viewRect.x + viewRect.width - itemWidth; + break; + } + return [ + [x0, offY], + [x0 + itemWidth, offY] + ]; + }; + + if (sort === 'ascending') { + // From bottom to top + itemHeight = -itemHeight; + gap = -gap; + y += viewRect.height; + indices = indices.reverse(); + } + + for (var i = 0; i < indices.length; i++) { + var idx = indices[i]; + var nextIdx = indices[i + 1]; + var start = getLinePoints(idx, y); + var end = getLinePoints(nextIdx, y + itemHeight); + + y += itemHeight + gap; + + data.setItemLayout(idx, { + points: start.concat(end.slice().reverse()) + }); + } + + labelLayout(data); + }); + }; + + + +/***/ }, +/* 234 */ +/***/ function(module, exports, __webpack_require__) { + + + + var echarts = __webpack_require__(1); + + __webpack_require__(235); + + __webpack_require__(248); + __webpack_require__(249); + + echarts.registerVisual(__webpack_require__(250)); + + + +/***/ }, +/* 235 */ +/***/ function(module, exports, __webpack_require__) { + + + + __webpack_require__(236); + __webpack_require__(240); + __webpack_require__(242); + + var echarts = __webpack_require__(1); + var zrUtil = __webpack_require__(4); + var throttle = __webpack_require__(81); + + var CLICK_THRESHOLD = 5; // > 4 + + // Parallel view + echarts.extendComponentView({ + type: 'parallel', + + render: function (parallelModel, ecModel, api) { + this._model = parallelModel; + this._api = api; + + if (!this._handlers) { + this._handlers = {}; + zrUtil.each(handlers, function (handler, eventName) { + api.getZr().on(eventName, this._handlers[eventName] = zrUtil.bind(handler, this)); + }, this); + } + + throttle.createOrUpdate( + this, + '_throttledDispatchExpand', + parallelModel.get('axisExpandRate'), + 'fixRate' + ); + }, + + dispose: function (ecModel, api) { + zrUtil.each(this._handlers, function (handler, eventName) { + api.getZr().off(eventName, handler); + }); + this._handlers = null; + }, + + /** + * @param {Object} [opt] If null, cancle the last action triggering for debounce. + */ + _throttledDispatchExpand: function (opt) { + this._dispatchExpand(opt); + }, + + _dispatchExpand: function (opt) { + opt && this._api.dispatchAction( + zrUtil.extend({type: 'parallelAxisExpand'}, opt) + ); + } + + }); + + var handlers = { + + mousedown: function (e) { + if (checkTrigger(this, 'click')) { + this._mouseDownPoint = [e.offsetX, e.offsetY]; + } + }, + + mouseup: function (e) { + var mouseDownPoint = this._mouseDownPoint; + + if (checkTrigger(this, 'click') && mouseDownPoint) { + var point = [e.offsetX, e.offsetY]; + var dist = Math.pow(mouseDownPoint[0] - point[0], 2) + + Math.pow(mouseDownPoint[1] - point[1], 2); + + if (dist > CLICK_THRESHOLD) { + return; + } + + var result = this._model.coordinateSystem.getSlidedAxisExpandWindow( + [e.offsetX, e.offsetY] + ); + + result.behavior !== 'none' && this._dispatchExpand({ + axisExpandWindow: result.axisExpandWindow + }); + } + + this._mouseDownPoint = null; + }, + + mousemove: function (e) { + // Should do nothing when brushing. + if (this._mouseDownPoint || !checkTrigger(this, 'mousemove')) { + return; + } + var model = this._model; + var result = model.coordinateSystem.getSlidedAxisExpandWindow( + [e.offsetX, e.offsetY] + ); + + var behavior = result.behavior; + behavior === 'jump' && this._throttledDispatchExpand.debounceNextCall(model.get('axisExpandDebounce')); + this._throttledDispatchExpand( + behavior === 'none' + ? null // Cancle the last trigger, in case that mouse slide out of the area quickly. + : { + axisExpandWindow: result.axisExpandWindow, + // Jumping uses animation, and sliding suppresses animation. + animation: behavior === 'jump' ? null : false + } + ); + } + }; + + function checkTrigger(view, triggerOn) { + var model = view._model; + return model.get('axisExpandable') && model.get('axisExpandTriggerOn') === triggerOn; + } + + echarts.registerPreprocessor( + __webpack_require__(247) + ); + + + +/***/ }, +/* 236 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * Parallel coordinate system creater. + */ + + + var Parallel = __webpack_require__(237); + + function create(ecModel, api) { + var coordSysList = []; + + ecModel.eachComponent('parallel', function (parallelModel, idx) { + var coordSys = new Parallel(parallelModel, ecModel, api); + + coordSys.name = 'parallel_' + idx; + coordSys.resize(parallelModel, api); + + parallelModel.coordinateSystem = coordSys; + coordSys.model = parallelModel; + + coordSysList.push(coordSys); + }); + + // Inject the coordinateSystems into seriesModel + ecModel.eachSeries(function (seriesModel) { + if (seriesModel.get('coordinateSystem') === 'parallel') { + var parallelModel = ecModel.queryComponents({ + mainType: 'parallel', + index: seriesModel.get('parallelIndex'), + id: seriesModel.get('parallelId') + })[0]; + seriesModel.coordinateSystem = parallelModel.coordinateSystem; + } + }); + + return coordSysList; + } + + __webpack_require__(76).register('parallel', {create: create}); + + + +/***/ }, +/* 237 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * Parallel Coordinates + * + */ + + + var layoutUtil = __webpack_require__(71); + var axisHelper = __webpack_require__(101); + var zrUtil = __webpack_require__(4); + var ParallelAxis = __webpack_require__(238); + var graphic = __webpack_require__(18); + var matrix = __webpack_require__(11); + var numberUtil = __webpack_require__(7); + var sliderMove = __webpack_require__(239); + + var each = zrUtil.each; + var mathMin = Math.min; + var mathMax = Math.max; + var mathFloor = Math.floor; + var mathCeil = Math.ceil; + var round = numberUtil.round; + + var PI = Math.PI; + + function Parallel(parallelModel, ecModel, api) { + + /** + * key: dimension + * @type {Object.} + * @private + */ + this._axesMap = zrUtil.createHashMap(); + + /** + * key: dimension + * value: {position: [], rotation, } + * @type {Object.} + * @private + */ + this._axesLayout = {}; + + /** + * Always follow axis order. + * @type {Array.} + * @readOnly + */ + this.dimensions = parallelModel.dimensions; + + /** + * @type {module:zrender/core/BoundingRect} + */ + this._rect; + + /** + * @type {module:echarts/coord/parallel/ParallelModel} + */ + this._model = parallelModel; + + this._init(parallelModel, ecModel, api); + } + + Parallel.prototype = { + + type: 'parallel', + + constructor: Parallel, + + /** + * Initialize cartesian coordinate systems + * @private + */ + _init: function (parallelModel, ecModel, api) { + + var dimensions = parallelModel.dimensions; + var parallelAxisIndex = parallelModel.parallelAxisIndex; + + each(dimensions, function (dim, idx) { + + var axisIndex = parallelAxisIndex[idx]; + var axisModel = ecModel.getComponent('parallelAxis', axisIndex); + + var axis = this._axesMap.set(dim, new ParallelAxis( + dim, + axisHelper.createScaleByModel(axisModel), + [0, 0], + axisModel.get('type'), + axisIndex + )); + + var isCategory = axis.type === 'category'; + axis.onBand = isCategory && axisModel.get('boundaryGap'); + axis.inverse = axisModel.get('inverse'); + + // Injection + axisModel.axis = axis; + axis.model = axisModel; + axis.coordinateSystem = axisModel.coordinateSystem = this; + + }, this); + }, + + /** + * Update axis scale after data processed + * @param {module:echarts/model/Global} ecModel + * @param {module:echarts/ExtensionAPI} api + */ + update: function (ecModel, api) { + this._updateAxesFromSeries(this._model, ecModel); + }, + + /** + * @override + */ + containPoint: function (point) { + var layoutInfo = this._makeLayoutInfo(); + var axisBase = layoutInfo.axisBase; + var layoutBase = layoutInfo.layoutBase; + var pixelDimIndex = layoutInfo.pixelDimIndex; + var pAxis = point[1 - pixelDimIndex]; + var pLayout = point[pixelDimIndex]; + + return pAxis >= axisBase + && pAxis <= axisBase + layoutInfo.axisLength + && pLayout >= layoutBase + && pLayout <= layoutBase + layoutInfo.layoutLength; + }, + + /** + * Update properties from series + * @private + */ + _updateAxesFromSeries: function (parallelModel, ecModel) { + ecModel.eachSeries(function (seriesModel) { + + if (!parallelModel.contains(seriesModel, ecModel)) { + return; + } + + var data = seriesModel.getData(); + + each(this.dimensions, function (dim) { + var axis = this._axesMap.get(dim); + axis.scale.unionExtentFromData(data, dim); + axisHelper.niceScaleExtent(axis.scale, axis.model); + }, this); + }, this); + }, + + /** + * Resize the parallel coordinate system. + * @param {module:echarts/coord/parallel/ParallelModel} parallelModel + * @param {module:echarts/ExtensionAPI} api + */ + resize: function (parallelModel, api) { + this._rect = layoutUtil.getLayoutRect( + parallelModel.getBoxLayoutParams(), + { + width: api.getWidth(), + height: api.getHeight() + } + ); + + this._layoutAxes(); + }, + + /** + * @return {module:zrender/core/BoundingRect} + */ + getRect: function () { + return this._rect; + }, + + /** + * @private + */ + _makeLayoutInfo: function () { + var parallelModel = this._model; + var rect = this._rect; + var xy = ['x', 'y']; + var wh = ['width', 'height']; + var layout = parallelModel.get('layout'); + var pixelDimIndex = layout === 'horizontal' ? 0 : 1; + var layoutLength = rect[wh[pixelDimIndex]]; + var layoutExtent = [0, layoutLength]; + var axisCount = this.dimensions.length; + + var axisExpandWidth = restrict(parallelModel.get('axisExpandWidth'), layoutExtent); + var axisExpandCount = restrict(parallelModel.get('axisExpandCount') || 0, [0, axisCount]); + var axisExpandable = parallelModel.get('axisExpandable') + && axisCount > 3 + && axisCount > axisExpandCount + && axisExpandCount > 1 + && axisExpandWidth > 0 + && layoutLength > 0; + + // `axisExpandWindow` is According to the coordinates of [0, axisExpandLength], + // for sake of consider the case that axisCollapseWidth is 0 (when screen is narrow), + // where collapsed axes should be overlapped. + var axisExpandWindow = parallelModel.get('axisExpandWindow'); + var winSize; + if (!axisExpandWindow) { + winSize = restrict(axisExpandWidth * (axisExpandCount - 1), layoutExtent); + var axisExpandCenter = parallelModel.get('axisExpandCenter') || mathFloor(axisCount / 2); + axisExpandWindow = [axisExpandWidth * axisExpandCenter - winSize / 2]; + axisExpandWindow[1] = axisExpandWindow[0] + winSize; + } + else { + winSize = restrict(axisExpandWindow[1] - axisExpandWindow[0], layoutExtent); + axisExpandWindow[1] = axisExpandWindow[0] + winSize; + } + + var axisCollapseWidth = (layoutLength - winSize) / (axisCount - axisExpandCount); + // Avoid axisCollapseWidth is too small. + axisCollapseWidth < 3 && (axisCollapseWidth = 0); + + // Find the first and last indices > ewin[0] and < ewin[1]. + var winInnerIndices = [ + mathFloor(round(axisExpandWindow[0] / axisExpandWidth, 1)) + 1, + mathCeil(round(axisExpandWindow[1] / axisExpandWidth, 1)) - 1 + ]; + + // Pos in ec coordinates. + var axisExpandWindow0Pos = axisCollapseWidth / axisExpandWidth * axisExpandWindow[0]; + + return { + layout: layout, + pixelDimIndex: pixelDimIndex, + layoutBase: rect[xy[pixelDimIndex]], + layoutLength: layoutLength, + axisBase: rect[xy[1 - pixelDimIndex]], + axisLength: rect[wh[1 - pixelDimIndex]], + axisExpandable: axisExpandable, + axisExpandWidth: axisExpandWidth, + axisCollapseWidth: axisCollapseWidth, + axisExpandWindow: axisExpandWindow, + axisCount: axisCount, + winInnerIndices: winInnerIndices, + axisExpandWindow0Pos: axisExpandWindow0Pos + }; + }, + + /** + * @private + */ + _layoutAxes: function () { + var rect = this._rect; + var axes = this._axesMap; + var dimensions = this.dimensions; + var layoutInfo = this._makeLayoutInfo(); + var layout = layoutInfo.layout; + + axes.each(function (axis) { + var axisExtent = [0, layoutInfo.axisLength]; + var idx = axis.inverse ? 1 : 0; + axis.setExtent(axisExtent[idx], axisExtent[1 - idx]); + }); + + each(dimensions, function (dim, idx) { + var posInfo = (layoutInfo.axisExpandable + ? layoutAxisWithExpand : layoutAxisWithoutExpand + )(idx, layoutInfo); + + var positionTable = { + horizontal: { + x: posInfo.position, + y: layoutInfo.axisLength + }, + vertical: { + x: 0, + y: posInfo.position + } + }; + var rotationTable = { + horizontal: PI / 2, + vertical: 0 + }; + + var position = [ + positionTable[layout].x + rect.x, + positionTable[layout].y + rect.y + ]; + + var rotation = rotationTable[layout]; + var transform = matrix.create(); + matrix.rotate(transform, transform, rotation); + matrix.translate(transform, transform, position); + + // TODO + // tick等排布信息。 + + // TODO + // 根据axis order 更新 dimensions顺序。 + + this._axesLayout[dim] = { + position: position, + rotation: rotation, + transform: transform, + axisNameAvailableWidth: posInfo.axisNameAvailableWidth, + axisLabelShow: posInfo.axisLabelShow, + nameTruncateMaxWidth: posInfo.nameTruncateMaxWidth, + tickDirection: 1, + labelDirection: 1, + labelInterval: axes.get(dim).getLabelInterval() + }; + }, this); + }, + + /** + * Get axis by dim. + * @param {string} dim + * @return {module:echarts/coord/parallel/ParallelAxis} [description] + */ + getAxis: function (dim) { + return this._axesMap.get(dim); + }, + + /** + * Convert a dim value of a single item of series data to Point. + * @param {*} value + * @param {string} dim + * @return {Array} + */ + dataToPoint: function (value, dim) { + return this.axisCoordToPoint( + this._axesMap.get(dim).dataToCoord(value), + dim + ); + }, + + /** + * Travel data for one time, get activeState of each data item. + * @param {module:echarts/data/List} data + * @param {Functio} cb param: {string} activeState 'active' or 'inactive' or 'normal' + * {number} dataIndex + * @param {Object} context + */ + eachActiveState: function (data, callback, context) { + var dimensions = this.dimensions; + var axesMap = this._axesMap; + var hasActiveSet = this.hasAxisBrushed(); + + for (var i = 0, len = data.count(); i < len; i++) { + var values = data.getValues(dimensions, i); + var activeState; + + if (!hasActiveSet) { + activeState = 'normal'; + } + else { + activeState = 'active'; + for (var j = 0, lenj = dimensions.length; j < lenj; j++) { + var dimName = dimensions[j]; + var state = axesMap.get(dimName).model.getActiveState(values[j], j); + + if (state === 'inactive') { + activeState = 'inactive'; + break; + } + } + } + + callback.call(context, activeState, i); + } + }, + + /** + * Whether has any activeSet. + * @return {boolean} + */ + hasAxisBrushed: function () { + var dimensions = this.dimensions; + var axesMap = this._axesMap; + var hasActiveSet = false; + + for (var j = 0, lenj = dimensions.length; j < lenj; j++) { + if (axesMap.get(dimensions[j]).model.getActiveState() !== 'normal') { + hasActiveSet = true; + } + } + + return hasActiveSet; + }, + + /** + * Convert coords of each axis to Point. + * Return point. For example: [10, 20] + * @param {Array.} coords + * @param {string} dim + * @return {Array.} + */ + axisCoordToPoint: function (coord, dim) { + var axisLayout = this._axesLayout[dim]; + return graphic.applyTransform([coord, 0], axisLayout.transform); + }, + + /** + * Get axis layout. + */ + getAxisLayout: function (dim) { + return zrUtil.clone(this._axesLayout[dim]); + }, + + /** + * @param {Array.} point + * @return {Object} {axisExpandWindow, delta, behavior: 'jump' | 'slide' | 'none'}. + */ + getSlidedAxisExpandWindow: function (point) { + var layoutInfo = this._makeLayoutInfo(); + var pixelDimIndex = layoutInfo.pixelDimIndex; + var axisExpandWindow = layoutInfo.axisExpandWindow.slice(); + var winSize = axisExpandWindow[1] - axisExpandWindow[0]; + var extent = [0, layoutInfo.axisExpandWidth * (layoutInfo.axisCount - 1)]; + + // Out of the area of coordinate system. + if (!this.containPoint(point)) { + return {behavior: 'none', axisExpandWindow: axisExpandWindow}; + } + + // Conver the point from global to expand coordinates. + var pointCoord = point[pixelDimIndex] - layoutInfo.layoutBase - layoutInfo.axisExpandWindow0Pos; + + // For dragging operation convenience, the window should not be + // slided when mouse is the center area of the window. + var delta; + var behavior = 'slide'; + var axisCollapseWidth = layoutInfo.axisCollapseWidth; + var triggerArea = this._model.get('axisExpandSlideTriggerArea'); + // But consider touch device, jump is necessary. + var useJump = triggerArea[0] != null; + + if (axisCollapseWidth) { + if (useJump && axisCollapseWidth && pointCoord < winSize * triggerArea[0]) { + behavior = 'jump'; + delta = pointCoord - winSize * triggerArea[2]; + } + else if (useJump && axisCollapseWidth && pointCoord > winSize * (1 - triggerArea[0])) { + behavior = 'jump'; + delta = pointCoord - winSize * (1 - triggerArea[2]); + } + else { + (delta = pointCoord - winSize * triggerArea[1]) >= 0 + && (delta = pointCoord - winSize * (1 - triggerArea[1])) <= 0 + && (delta = 0); + } + delta *= layoutInfo.axisExpandWidth / axisCollapseWidth; + delta + ? sliderMove(delta, axisExpandWindow, extent, 'all') + // Avoid nonsense triger on mousemove. + : (behavior = 'none'); + } + // When screen is too narrow, make it visible and slidable, although it is hard to interact. + else { + var winSize = axisExpandWindow[1] - axisExpandWindow[0]; + var pos = extent[1] * pointCoord / winSize; + axisExpandWindow = [mathMax(0, pos - winSize / 2)]; + axisExpandWindow[1] = mathMin(extent[1], axisExpandWindow[0] + winSize); + axisExpandWindow[0] = axisExpandWindow[1] - winSize; + } + + return { + axisExpandWindow: axisExpandWindow, + behavior: behavior + }; + } + }; + + function restrict(len, extent) { + return mathMin(mathMax(len, extent[0]), extent[1]); + } + + function layoutAxisWithoutExpand(axisIndex, layoutInfo) { + var step = layoutInfo.layoutLength / (layoutInfo.axisCount - 1); + return { + position: step * axisIndex, + axisNameAvailableWidth: step, + axisLabelShow: true + }; + } + + function layoutAxisWithExpand(axisIndex, layoutInfo) { + var layoutLength = layoutInfo.layoutLength; + var axisExpandWidth = layoutInfo.axisExpandWidth; + var axisCount = layoutInfo.axisCount; + var axisCollapseWidth = layoutInfo.axisCollapseWidth; + var winInnerIndices = layoutInfo.winInnerIndices; + + var position; + var axisNameAvailableWidth = axisCollapseWidth; + var axisLabelShow = false; + var nameTruncateMaxWidth; + + if (axisIndex < winInnerIndices[0]) { + position = axisIndex * axisCollapseWidth; + nameTruncateMaxWidth = axisCollapseWidth; + } + else if (axisIndex <= winInnerIndices[1]) { + position = layoutInfo.axisExpandWindow0Pos + + axisIndex * axisExpandWidth - layoutInfo.axisExpandWindow[0]; + axisNameAvailableWidth = axisExpandWidth; + axisLabelShow = true; + } + else { + position = layoutLength - (axisCount - 1 - axisIndex) * axisCollapseWidth; + nameTruncateMaxWidth = axisCollapseWidth; + } + + return { + position: position, + axisNameAvailableWidth: axisNameAvailableWidth, + axisLabelShow: axisLabelShow, + nameTruncateMaxWidth: nameTruncateMaxWidth + }; + } + + module.exports = Parallel; + + +/***/ }, +/* 238 */ +/***/ function(module, exports, __webpack_require__) { + + + + var zrUtil = __webpack_require__(4); + var Axis = __webpack_require__(100); + + /** + * @constructor module:echarts/coord/parallel/ParallelAxis + * @extends {module:echarts/coord/Axis} + * @param {string} dim + * @param {*} scale + * @param {Array.} coordExtent + * @param {string} axisType + */ + var ParallelAxis = function (dim, scale, coordExtent, axisType, axisIndex) { + + Axis.call(this, dim, scale, coordExtent); + + /** + * Axis type + * - 'category' + * - 'value' + * - 'time' + * - 'log' + * @type {string} + */ + this.type = axisType || 'value'; + + /** + * @type {number} + * @readOnly + */ + this.axisIndex = axisIndex; + }; + + ParallelAxis.prototype = { + + constructor: ParallelAxis, + + /** + * Axis model + * @param {module:echarts/coord/parallel/AxisModel} + */ + model: null + + }; + + zrUtil.inherits(ParallelAxis, Axis); + + module.exports = ParallelAxis; + + +/***/ }, +/* 239 */ +/***/ function(module, exports) { + + + + /** + * Calculate slider move result. + * Usage: + * (1) If both handle0 and handle1 are needed to be moved, set minSpan the same as + * maxSpan and the same as `Math.abs(handleEnd[1] - handleEnds[0])`. + * (2) If handle0 is forbidden to cross handle1, set minSpan as `0`. + * + * @param {number} delta Move length. + * @param {Array.} handleEnds handleEnds[0] can be bigger then handleEnds[1]. + * handleEnds will be modified in this method. + * @param {Array.} extent handleEnds is restricted by extent. + * extent[0] should less or equals than extent[1]. + * @param {number|string} handleIndex Can be 'all', means that both move the two handleEnds, + * where the input minSpan and maxSpan will not work. + * @param {number} [minSpan] The range of dataZoom can not be smaller than that. + * If not set, handle0 and cross handle1. If set as a non-negative + * number (including `0`), handles will push each other when reaching + * the minSpan. + * @param {number} [maxSpan] The range of dataZoom can not be larger than that. + * @return {Array.} The input handleEnds. + */ + module.exports = function (delta, handleEnds, extent, handleIndex, minSpan, maxSpan) { + // Normalize firstly. + handleEnds[0] = restrict(handleEnds[0], extent); + handleEnds[1] = restrict(handleEnds[1], extent); + + delta = delta || 0; + + var extentSpan = extent[1] - extent[0]; + + // Notice maxSpan and minSpan can be null/undefined. + if (minSpan != null) { + minSpan = restrict(minSpan, [0, extentSpan]); + } + if (maxSpan != null) { + maxSpan = Math.max(maxSpan, minSpan != null ? minSpan : 0); + } + if (handleIndex === 'all') { + minSpan = maxSpan = Math.abs(handleEnds[1] - handleEnds[0]); + handleIndex = 0; + } + + var originalDistSign = getSpanSign(handleEnds, handleIndex); + + handleEnds[handleIndex] += delta; + + // Restrict in extent. + var extentMinSpan = minSpan || 0; + var realExtent = extent.slice(); + originalDistSign.sign < 0 ? (realExtent[0] += extentMinSpan) : (realExtent[1] -= extentMinSpan); + handleEnds[handleIndex] = restrict(handleEnds[handleIndex], realExtent); + + // Expand span. + var currDistSign = getSpanSign(handleEnds, handleIndex); + if (minSpan != null && ( + currDistSign.sign !== originalDistSign.sign || currDistSign.span < minSpan + )) { + // If minSpan exists, 'cross' is forbinden. + handleEnds[1 - handleIndex] = handleEnds[handleIndex] + originalDistSign.sign * minSpan; + } + + // Shrink span. + var currDistSign = getSpanSign(handleEnds, handleIndex); + if (maxSpan != null && currDistSign.span > maxSpan) { + handleEnds[1 - handleIndex] = handleEnds[handleIndex] + currDistSign.sign * maxSpan; + } + + return handleEnds; + }; + + function getSpanSign(handleEnds, handleIndex) { + var dist = handleEnds[handleIndex] - handleEnds[1 - handleIndex]; + // If `handleEnds[0] === handleEnds[1]`, always believe that handleEnd[0] + // is at left of handleEnds[1] for non-cross case. + return {span: Math.abs(dist), sign: dist > 0 ? -1 : dist < 0 ? 1 : handleIndex ? -1 : 1}; + } + + function restrict(value, extend) { + return Math.min(extend[1], Math.max(extend[0], value)); + } + + +/***/ }, +/* 240 */ +/***/ function(module, exports, __webpack_require__) { + + + + var zrUtil = __webpack_require__(4); + var Component = __webpack_require__(69); + + __webpack_require__(241); + + Component.extend({ + + type: 'parallel', + + dependencies: ['parallelAxis'], + + /** + * @type {module:echarts/coord/parallel/Parallel} + */ + coordinateSystem: null, + + /** + * Each item like: 'dim0', 'dim1', 'dim2', ... + * @type {Array.} + * @readOnly + */ + dimensions: null, + + /** + * Coresponding to dimensions. + * @type {Array.} + * @readOnly + */ + parallelAxisIndex: null, + + layoutMode: 'box', + + defaultOption: { + zlevel: 0, + z: 0, + left: 80, + top: 60, + right: 80, + bottom: 60, + // width: {totalWidth} - left - right, + // height: {totalHeight} - top - bottom, + + layout: 'horizontal', // 'horizontal' or 'vertical' + + // FIXME + // naming? + axisExpandable: false, + axisExpandCenter: null, + axisExpandCount: 0, + axisExpandWidth: 50, // FIXME '10%' ? + axisExpandRate: 17, + axisExpandDebounce: 50, + // [out, in, jumpTarget]. In percentage. If use [null, 0.05], null means full. + // Do not doc to user until necessary. + axisExpandSlideTriggerArea: [-0.15, 0.05, 0.4], + axisExpandTriggerOn: 'click', // 'mousemove' or 'click' + + parallelAxisDefault: null + }, + + /** + * @override + */ + init: function () { + Component.prototype.init.apply(this, arguments); + + this.mergeOption({}); + }, + + /** + * @override + */ + mergeOption: function (newOption) { + var thisOption = this.option; + + newOption && zrUtil.merge(thisOption, newOption, true); + + this._initDimensions(); + }, + + /** + * Whether series or axis is in this coordinate system. + * @param {module:echarts/model/Series|module:echarts/coord/parallel/AxisModel} model + * @param {module:echarts/model/Global} ecModel + */ + contains: function (model, ecModel) { + var parallelIndex = model.get('parallelIndex'); + return parallelIndex != null + && ecModel.getComponent('parallel', parallelIndex) === this; + }, + + setAxisExpand: function (opt) { + zrUtil.each( + ['axisExpandable', 'axisExpandCenter', 'axisExpandCount', 'axisExpandWidth', 'axisExpandWindow'], + function (name) { + if (opt.hasOwnProperty(name)) { + this.option[name] = opt[name]; + } + }, + this + ); + }, + + /** + * @private + */ + _initDimensions: function () { + var dimensions = this.dimensions = []; + var parallelAxisIndex = this.parallelAxisIndex = []; + + var axisModels = zrUtil.filter(this.dependentModels.parallelAxis, function (axisModel) { + // Can not use this.contains here, because + // initialization has not been completed yet. + return axisModel.get('parallelIndex') === this.componentIndex; + }); + + zrUtil.each(axisModels, function (axisModel) { + dimensions.push('dim' + axisModel.get('dim')); + parallelAxisIndex.push(axisModel.componentIndex); + }); + } + + }); + + + +/***/ }, +/* 241 */ +/***/ function(module, exports, __webpack_require__) { + + + + var ComponentModel = __webpack_require__(69); + var zrUtil = __webpack_require__(4); + var makeStyleMapper = __webpack_require__(15); + var axisModelCreator = __webpack_require__(131); + var numberUtil = __webpack_require__(7); + + var AxisModel = ComponentModel.extend({ + + type: 'baseParallelAxis', + + /** + * @type {module:echarts/coord/parallel/Axis} + */ + axis: null, + + /** + * @type {Array.} + * @readOnly + */ + activeIntervals: [], + + /** + * @return {Object} + */ + getAreaSelectStyle: function () { + return makeStyleMapper( + [ + ['fill', 'color'], + ['lineWidth', 'borderWidth'], + ['stroke', 'borderColor'], + ['width', 'width'], + ['opacity', 'opacity'] + ] + ).call(this.getModel('areaSelectStyle')); + }, + + /** + * The code of this feature is put on AxisModel but not ParallelAxis, + * because axisModel can be alive after echarts updating but instance of + * ParallelAxis having been disposed. this._activeInterval should be kept + * when action dispatched (i.e. legend click). + * + * @param {Array.>} intervals interval.length === 0 + * means set all active. + * @public + */ + setActiveIntervals: function (intervals) { + var activeIntervals = this.activeIntervals = zrUtil.clone(intervals); + + // Normalize + if (activeIntervals) { + for (var i = activeIntervals.length - 1; i >= 0; i--) { + numberUtil.asc(activeIntervals[i]); + } + } + }, + + /** + * @param {number|string} [value] When attempting to detect 'no activeIntervals set', + * value can not be input. + * @return {string} 'normal': no activeIntervals set, + * 'active', + * 'inactive'. + * @public + */ + getActiveState: function (value) { + var activeIntervals = this.activeIntervals; + + if (!activeIntervals.length) { + return 'normal'; + } + + if (value == null) { + return 'inactive'; + } + + for (var i = 0, len = activeIntervals.length; i < len; i++) { + if (activeIntervals[i][0] <= value && value <= activeIntervals[i][1]) { + return 'active'; + } + } + return 'inactive'; + } + + }); + + var defaultOption = { + + type: 'value', + + /** + * @type {Array.} + */ + dim: null, // 0, 1, 2, ... + + // parallelIndex: null, + + areaSelectStyle: { + width: 20, + borderWidth: 1, + borderColor: 'rgba(160,197,232)', + color: 'rgba(160,197,232)', + opacity: 0.3 + }, + + realtime: true, // Whether realtime update view when select. + + z: 10 + }; + + zrUtil.merge(AxisModel.prototype, __webpack_require__(112)); + + function getAxisType(axisName, option) { + return option.type || (option.data ? 'category' : 'value'); + } + + axisModelCreator('parallel', AxisModel, getAxisType, defaultOption); + + module.exports = AxisModel; + + +/***/ }, +/* 242 */ +/***/ function(module, exports, __webpack_require__) { + + + + __webpack_require__(236); + __webpack_require__(243); + __webpack_require__(244); + + + +/***/ }, +/* 243 */ +/***/ function(module, exports, __webpack_require__) { + + + + var echarts = __webpack_require__(1); + + /** + * @payload + * @property {string} parallelAxisId + * @property {Array.>} intervals + */ + var actionInfo = { + type: 'axisAreaSelect', + event: 'axisAreaSelected', + update: 'updateVisual' + }; + echarts.registerAction(actionInfo, function (payload, ecModel) { + ecModel.eachComponent( + {mainType: 'parallelAxis', query: payload}, + function (parallelAxisModel) { + parallelAxisModel.axis.model.setActiveIntervals(payload.intervals); + } + ); + }); + + /** + * @payload + */ + echarts.registerAction('parallelAxisExpand', function (payload, ecModel) { + ecModel.eachComponent( + {mainType: 'parallel', query: payload}, + function (parallelModel) { + parallelModel.setAxisExpand(payload); + } + ); + + }); + + +/***/ }, +/* 244 */ +/***/ function(module, exports, __webpack_require__) { + + + + var zrUtil = __webpack_require__(4); + var AxisBuilder = __webpack_require__(135); + var BrushController = __webpack_require__(245); + var brushHelper = __webpack_require__(246); + var graphic = __webpack_require__(18); + + var elementList = ['axisLine', 'axisLabel', 'axisTick', 'axisName']; + + var AxisView = __webpack_require__(1).extendComponentView({ + + type: 'parallelAxis', + + /** + * @override + */ + init: function (ecModel, api) { + AxisView.superApply(this, 'init', arguments); + + /** + * @type {module:echarts/component/helper/BrushController} + */ + (this._brushController = new BrushController(api.getZr())) + .on('brush', zrUtil.bind(this._onBrush, this)); + }, + + /** + * @override + */ + render: function (axisModel, ecModel, api, payload) { + if (fromAxisAreaSelect(axisModel, ecModel, payload)) { + return; + } + + this.axisModel = axisModel; + this.api = api; + + this.group.removeAll(); + + var oldAxisGroup = this._axisGroup; + this._axisGroup = new graphic.Group(); + this.group.add(this._axisGroup); + + if (!axisModel.get('show')) { + return; + } + + var coordSysModel = getCoordSysModel(axisModel, ecModel); + var coordSys = coordSysModel.coordinateSystem; + + var areaSelectStyle = axisModel.getAreaSelectStyle(); + var areaWidth = areaSelectStyle.width; + + var dim = axisModel.axis.dim; + var axisLayout = coordSys.getAxisLayout(dim); + + var builderOpt = zrUtil.extend( + {strokeContainThreshold: areaWidth}, + axisLayout + ); + + var axisBuilder = new AxisBuilder(axisModel, builderOpt); + + zrUtil.each(elementList, axisBuilder.add, axisBuilder); + + this._axisGroup.add(axisBuilder.getGroup()); + + this._refreshBrushController( + builderOpt, areaSelectStyle, axisModel, coordSysModel, areaWidth, api + ); + + var animationModel = (payload && payload.animation === false) ? null : axisModel; + graphic.groupTransition(oldAxisGroup, this._axisGroup, animationModel); + }, + + /** + * @override + */ + updateVisual: function (axisModel, ecModel, api, payload) { + this._brushController && this._brushController + .updateCovers(getCoverInfoList(axisModel)); + }, + + _refreshBrushController: function ( + builderOpt, areaSelectStyle, axisModel, coordSysModel, areaWidth, api + ) { + // After filtering, axis may change, select area needs to be update. + var extent = axisModel.axis.getExtent(); + var extentLen = extent[1] - extent[0]; + var extra = Math.min(30, Math.abs(extentLen) * 0.1); // Arbitrary value. + + // width/height might be negative, which will be + // normalized in BoundingRect. + var rect = graphic.BoundingRect.create({ + x: extent[0], + y: -areaWidth / 2, + width: extentLen, + height: areaWidth + }); + rect.x -= extra; + rect.width += 2 * extra; + + this._brushController + .mount({ + enableGlobalPan: true, + rotation: builderOpt.rotation, + position: builderOpt.position + }) + .setPanels([{ + panelId: 'pl', + clipPath: brushHelper.makeRectPanelClipPath(rect), + isTargetByCursor: brushHelper.makeRectIsTargetByCursor(rect, api, coordSysModel), + getLinearBrushOtherExtent: brushHelper.makeLinearBrushOtherExtent(rect, 0) + }]) + .enableBrush({ + brushType: 'lineX', + brushStyle: areaSelectStyle, + removeOnClick: true + }) + .updateCovers(getCoverInfoList(axisModel)); + }, + + _onBrush: function (coverInfoList, opt) { + // Do not cache these object, because the mey be changed. + var axisModel = this.axisModel; + var axis = axisModel.axis; + var intervals = zrUtil.map(coverInfoList, function (coverInfo) { + return [ + axis.coordToData(coverInfo.range[0], true), + axis.coordToData(coverInfo.range[1], true) + ]; + }); + + // If realtime is true, action is not dispatched on drag end, because + // the drag end emits the same params with the last drag move event, + // and may have some delay when using touch pad. + if (!axisModel.option.realtime === opt.isEnd || opt.removeOnClick) { // jshint ignore:line + this.api.dispatchAction({ + type: 'axisAreaSelect', + parallelAxisId: axisModel.id, + intervals: intervals + }); + } + }, + + /** + * @override + */ + dispose: function () { + this._brushController.dispose(); + } + }); + + function fromAxisAreaSelect(axisModel, ecModel, payload) { + return payload + && payload.type === 'axisAreaSelect' + && ecModel.findComponents( + {mainType: 'parallelAxis', query: payload} + )[0] === axisModel; + } + + function getCoverInfoList(axisModel) { + var axis = axisModel.axis; + return zrUtil.map(axisModel.activeIntervals, function (interval) { + return { + brushType: 'lineX', + panelId: 'pl', + range: [ + axis.dataToCoord(interval[0], true), + axis.dataToCoord(interval[1], true) + ] + }; + }); + } + + function getCoordSysModel(axisModel, ecModel) { + return ecModel.getComponent( + 'parallel', axisModel.get('parallelIndex') + ); + } + + module.exports = AxisView; + + +/***/ }, +/* 245 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * Box selection tool. + * + * @module echarts/component/helper/BrushController + */ + + + + var Eventful = __webpack_require__(25); + var zrUtil = __webpack_require__(4); + var graphic = __webpack_require__(18); + var interactionMutex = __webpack_require__(184); + var DataDiffer = __webpack_require__(99); + + var curry = zrUtil.curry; + var each = zrUtil.each; + var map = zrUtil.map; + var mathMin = Math.min; + var mathMax = Math.max; + var mathPow = Math.pow; + + var COVER_Z = 10000; + var UNSELECT_THRESHOLD = 6; + var MIN_RESIZE_LINE_WIDTH = 6; + var MUTEX_RESOURCE_KEY = 'globalPan'; + + var DIRECTION_MAP = { + w: [0, 0], + e: [0, 1], + n: [1, 0], + s: [1, 1] + }; + var CURSOR_MAP = { + w: 'ew', + e: 'ew', + n: 'ns', + s: 'ns', + ne: 'nesw', + sw: 'nesw', + nw: 'nwse', + se: 'nwse' + }; + var DEFAULT_BRUSH_OPT = { + brushStyle: { + lineWidth: 2, + stroke: 'rgba(0,0,0,0.3)', + fill: 'rgba(0,0,0,0.1)' + }, + transformable: true, + brushMode: 'single', + removeOnClick: false + }; + + var baseUID = 0; + + /** + * @alias module:echarts/component/helper/BrushController + * @constructor + * @mixin {module:zrender/mixin/Eventful} + * @event module:echarts/component/helper/BrushController#brush + * params: + * areas: Array., coord relates to container group, + * If no container specified, to global. + * opt { + * isEnd: boolean, + * removeOnClick: boolean + * } + * + * @param {module:zrender/zrender~ZRender} zr + */ + function BrushController(zr) { + + if (true) { + zrUtil.assert(zr); + } + + Eventful.call(this); + + /** + * @type {module:zrender/zrender~ZRender} + * @private + */ + this._zr = zr; + + /** + * @type {module:zrender/container/Group} + * @readOnly + */ + this.group = new graphic.Group(); + + /** + * Only for drawing (after enabledBrush). + * 'line', 'rect', 'polygon' or false + * If passing false/null/undefined, disable brush. + * If passing 'auto', determined by panel.defaultBrushType + * @private + * @type {string} + */ + this._brushType; + + /** + * Only for drawing (after enabledBrush). + * + * @private + * @type {Object} + */ + this._brushOption; + + /** + * @private + * @type {Object} + */ + this._panels; + + /** + * @private + * @type {Array.} + */ + this._track = []; + + /** + * @private + * @type {boolean} + */ + this._dragging; + + /** + * @private + * @type {Array} + */ + this._covers = []; + + /** + * @private + * @type {moudule:zrender/container/Group} + */ + this._creatingCover; + + /** + * `true` means global panel + * @private + * @type {module:zrender/container/Group|boolean} + */ + this._creatingPanel; + + /** + * @private + * @type {boolean} + */ + this._enableGlobalPan; + + /** + * @private + * @type {boolean} + */ + if (true) { + this._mounted; + } + + /** + * @private + * @type {string} + */ + this._uid = 'brushController_' + baseUID++; + + /** + * @private + * @type {Object} + */ + this._handlers = {}; + each(mouseHandlers, function (handler, eventName) { + this._handlers[eventName] = zrUtil.bind(handler, this); + }, this); + } + + BrushController.prototype = { + + constructor: BrushController, + + /** + * If set to null/undefined/false, select disabled. + * @param {Object} brushOption + * @param {string|boolean} brushOption.brushType 'line', 'rect', 'polygon' or false + * If passing false/null/undefined, disable brush. + * If passing 'auto', determined by panel.defaultBrushType. + * ('auto' can not be used in global panel) + * @param {number} [brushOption.brushMode='single'] 'single' or 'multiple' + * @param {boolean} [brushOption.transformable=true] + * @param {boolean} [brushOption.removeOnClick=false] + * @param {Object} [brushOption.brushStyle] + * @param {number} [brushOption.brushStyle.width] + * @param {number} [brushOption.brushStyle.lineWidth] + * @param {string} [brushOption.brushStyle.stroke] + * @param {string} [brushOption.brushStyle.fill] + * @param {number} [brushOption.z] + */ + enableBrush: function (brushOption) { + if (true) { + zrUtil.assert(this._mounted); + } + + this._brushType && doDisableBrush(this); + brushOption.brushType && doEnableBrush(this, brushOption); + + return this; + }, + + /** + * @param {Array.} panelOpts If not pass, it is global brush. + * Each items: { + * panelId, // mandatory. + * clipPath, // mandatory. function. + * isTargetByCursor, // mandatory. function. + * defaultBrushType, // optional, only used when brushType is 'auto'. + * getLinearBrushOtherExtent, // optional. function. + * } + */ + setPanels: function (panelOpts) { + if (panelOpts && panelOpts.length) { + var panels = this._panels = {}; + zrUtil.each(panelOpts, function (panelOpts) { + panels[panelOpts.panelId] = zrUtil.clone(panelOpts); + }); + } + else { + this._panels = null; + } + return this; + }, + + /** + * @param {Object} [opt] + * @return {boolean} [opt.enableGlobalPan=false] + */ + mount: function (opt) { + opt = opt || {}; + + if (true) { + this._mounted = true; // should be at first. + } + + this._enableGlobalPan = opt.enableGlobalPan; + + var thisGroup = this.group; + this._zr.add(thisGroup); + + thisGroup.attr({ + position: opt.position || [0, 0], + rotation: opt.rotation || 0, + scale: opt.scale || [1, 1] + }); + this._transform = thisGroup.getLocalTransform(); + + return this; + }, + + eachCover: function (cb, context) { + each(this._covers, cb, context); + }, + + /** + * Update covers. + * @param {Array.} brushOptionList Like: + * [ + * {id: 'xx', brushType: 'line', range: [23, 44], brushStyle, transformable}, + * {id: 'yy', brushType: 'rect', range: [[23, 44], [23, 54]]}, + * ... + * ] + * `brushType` is required in each cover info. (can not be 'auto') + * `id` is not mandatory. + * `brushStyle`, `transformable` is not mandatory, use DEFAULT_BRUSH_OPT by default. + * If brushOptionList is null/undefined, all covers removed. + */ + updateCovers: function (brushOptionList) { + if (true) { + zrUtil.assert(this._mounted); + } + + brushOptionList = zrUtil.map(brushOptionList, function (brushOption) { + return zrUtil.merge(zrUtil.clone(DEFAULT_BRUSH_OPT), brushOption, true); + }); + + var tmpIdPrefix = '\0-brush-index-'; + var oldCovers = this._covers; + var newCovers = this._covers = []; + var controller = this; + var creatingCover = this._creatingCover; + + (new DataDiffer(oldCovers, brushOptionList, oldGetKey, getKey)) + .add(addOrUpdate) + .update(addOrUpdate) + .remove(remove) + .execute(); + + return this; + + function getKey(brushOption, index) { + return (brushOption.id != null ? brushOption.id : tmpIdPrefix + index) + + '-' + brushOption.brushType; + } + + function oldGetKey(cover, index) { + return getKey(cover.__brushOption, index); + } + + function addOrUpdate(newIndex, oldIndex) { + var newBrushOption = brushOptionList[newIndex]; + // Consider setOption in event listener of brushSelect, + // where updating cover when creating should be forbiden. + if (oldIndex != null && oldCovers[oldIndex] === creatingCover) { + newCovers[newIndex] = oldCovers[oldIndex]; + } + else { + var cover = newCovers[newIndex] = oldIndex != null + ? ( + oldCovers[oldIndex].__brushOption = newBrushOption, + oldCovers[oldIndex] + ) + : endCreating(controller, createCover(controller, newBrushOption)); + updateCoverAfterCreation(controller, cover); + } + } + + function remove(oldIndex) { + if (oldCovers[oldIndex] !== creatingCover) { + controller.group.remove(oldCovers[oldIndex]); + } + } + }, + + unmount: function () { + if (true) { + if (!this._mounted) { + return; + } + } + + this.enableBrush(false); + + // container may 'removeAll' outside. + clearCovers(this); + this._zr.remove(this.group); + + if (true) { + this._mounted = false; // should be at last. + } + + return this; + }, + + dispose: function () { + this.unmount(); + this.off(); + } + }; + + zrUtil.mixin(BrushController, Eventful); + + function doEnableBrush(controller, brushOption) { + var zr = controller._zr; + + // Consider roam, which takes globalPan too. + if (!controller._enableGlobalPan) { + interactionMutex.take(zr, MUTEX_RESOURCE_KEY, controller._uid); + } + + each(controller._handlers, function (handler, eventName) { + zr.on(eventName, handler); + }); + + controller._brushType = brushOption.brushType; + controller._brushOption = zrUtil.merge(zrUtil.clone(DEFAULT_BRUSH_OPT), brushOption, true); + } + + function doDisableBrush(controller) { + var zr = controller._zr; + + interactionMutex.release(zr, MUTEX_RESOURCE_KEY, controller._uid); + + each(controller._handlers, function (handler, eventName) { + zr.off(eventName, handler); + }); + + controller._brushType = controller._brushOption = null; + } + + function createCover(controller, brushOption) { + var cover = coverRenderers[brushOption.brushType].createCover(controller, brushOption); + cover.__brushOption = brushOption; + updateZ(cover, brushOption); + controller.group.add(cover); + return cover; + } + + function endCreating(controller, creatingCover) { + var coverRenderer = getCoverRenderer(creatingCover); + if (coverRenderer.endCreating) { + coverRenderer.endCreating(controller, creatingCover); + updateZ(creatingCover, creatingCover.__brushOption); + } + return creatingCover; + } + + function updateCoverShape(controller, cover) { + var brushOption = cover.__brushOption; + getCoverRenderer(cover).updateCoverShape( + controller, cover, brushOption.range, brushOption + ); + } + + function updateZ(cover, brushOption) { + var z = brushOption.z; + z == null && (z = COVER_Z); + cover.traverse(function (el) { + el.z = z; + el.z2 = z; // Consider in given container. + }); + } + + function updateCoverAfterCreation(controller, cover) { + getCoverRenderer(cover).updateCommon(controller, cover); + updateCoverShape(controller, cover); + } + + function getCoverRenderer(cover) { + return coverRenderers[cover.__brushOption.brushType]; + } + + // return target panel or `true` (means global panel) + function getPanelByPoint(controller, e, localCursorPoint) { + var panels = controller._panels; + if (!panels) { + return true; // Global panel + } + var panel; + var transform = controller._transform; + each(panels, function (pn) { + pn.isTargetByCursor(e, localCursorPoint, transform) && (panel = pn); + }); + return panel; + } + + // Return a panel or true + function getPanelByCover(controller, cover) { + var panels = controller._panels; + if (!panels) { + return true; // Global panel + } + var panelId = cover.__brushOption.panelId; + // User may give cover without coord sys info, + // which is then treated as global panel. + return panelId != null ? panels[panelId] : true; + } + + function clearCovers(controller) { + var covers = controller._covers; + var originalLength = covers.length; + each(covers, function (cover) { + controller.group.remove(cover); + }, controller); + covers.length = 0; + + return !!originalLength; + } + + function trigger(controller, opt) { + var areas = map(controller._covers, function (cover) { + var brushOption = cover.__brushOption; + var range = zrUtil.clone(brushOption.range); + return { + brushType: brushOption.brushType, + panelId: brushOption.panelId, + range: range + }; + }); + + controller.trigger('brush', areas, { + isEnd: !!opt.isEnd, + removeOnClick: !!opt.removeOnClick + }); + } + + function shouldShowCover(controller) { + var track = controller._track; + + if (!track.length) { + return false; + } + + var p2 = track[track.length - 1]; + var p1 = track[0]; + var dx = p2[0] - p1[0]; + var dy = p2[1] - p1[1]; + var dist = mathPow(dx * dx + dy * dy, 0.5); + + return dist > UNSELECT_THRESHOLD; + } + + function getTrackEnds(track) { + var tail = track.length - 1; + tail < 0 && (tail = 0); + return [track[0], track[tail]]; + } + + function createBaseRectCover(doDrift, controller, brushOption, edgeNames) { + var cover = new graphic.Group(); + + cover.add(new graphic.Rect({ + name: 'main', + style: makeStyle(brushOption), + silent: true, + draggable: true, + cursor: 'move', + drift: curry(doDrift, controller, cover, 'nswe'), + ondragend: curry(trigger, controller, {isEnd: true}) + })); + + each( + edgeNames, + function (name) { + cover.add(new graphic.Rect({ + name: name, + style: {opacity: 0}, + draggable: true, + silent: true, + invisible: true, + drift: curry(doDrift, controller, cover, name), + ondragend: curry(trigger, controller, {isEnd: true}) + })); + } + ); + + return cover; + } + + function updateBaseRect(controller, cover, localRange, brushOption) { + var lineWidth = brushOption.brushStyle.lineWidth || 0; + var handleSize = mathMax(lineWidth, MIN_RESIZE_LINE_WIDTH); + var x = localRange[0][0]; + var y = localRange[1][0]; + var xa = x - lineWidth / 2; + var ya = y - lineWidth / 2; + var x2 = localRange[0][1]; + var y2 = localRange[1][1]; + var x2a = x2 - handleSize + lineWidth / 2; + var y2a = y2 - handleSize + lineWidth / 2; + var width = x2 - x; + var height = y2 - y; + var widtha = width + lineWidth; + var heighta = height + lineWidth; + + updateRectShape(controller, cover, 'main', x, y, width, height); + + if (brushOption.transformable) { + updateRectShape(controller, cover, 'w', xa, ya, handleSize, heighta); + updateRectShape(controller, cover, 'e', x2a, ya, handleSize, heighta); + updateRectShape(controller, cover, 'n', xa, ya, widtha, handleSize); + updateRectShape(controller, cover, 's', xa, y2a, widtha, handleSize); + + updateRectShape(controller, cover, 'nw', xa, ya, handleSize, handleSize); + updateRectShape(controller, cover, 'ne', x2a, ya, handleSize, handleSize); + updateRectShape(controller, cover, 'sw', xa, y2a, handleSize, handleSize); + updateRectShape(controller, cover, 'se', x2a, y2a, handleSize, handleSize); + } + } + + function updateCommon(controller, cover) { + var brushOption = cover.__brushOption; + var transformable = brushOption.transformable; + + var mainEl = cover.childAt(0); + mainEl.useStyle(makeStyle(brushOption)); + mainEl.attr({ + silent: !transformable, + cursor: transformable ? 'move' : 'default' + }); + + each( + ['w', 'e', 'n', 's', 'se', 'sw', 'ne', 'nw'], + function (name) { + var el = cover.childOfName(name); + var globalDir = getGlobalDirection(controller, name); + + el && el.attr({ + silent: !transformable, + invisible: !transformable, + cursor: transformable ? CURSOR_MAP[globalDir] + '-resize' : null + }); + } + ); + } + + function updateRectShape(controller, cover, name, x, y, w, h) { + var el = cover.childOfName(name); + el && el.setShape(pointsToRect( + clipByPanel(controller, cover, [[x, y], [x + w, y + h]]) + )); + } + + function makeStyle(brushOption) { + return zrUtil.defaults({strokeNoScale: true}, brushOption.brushStyle); + } + + function formatRectRange(x, y, x2, y2) { + var min = [mathMin(x, x2), mathMin(y, y2)]; + var max = [mathMax(x, x2), mathMax(y, y2)]; + + return [ + [min[0], max[0]], // x range + [min[1], max[1]] // y range + ]; + } + + function getTransform(controller) { + return graphic.getTransform(controller.group); + } + + function getGlobalDirection(controller, localDirection) { + if (localDirection.length > 1) { + localDirection = localDirection.split(''); + var globalDir = [ + getGlobalDirection(controller, localDirection[0]), + getGlobalDirection(controller, localDirection[1]) + ]; + (globalDir[0] === 'e' || globalDir[0] === 'w') && globalDir.reverse(); + return globalDir.join(''); + } + else { + var map = {w: 'left', e: 'right', n: 'top', s: 'bottom'}; + var inverseMap = {left: 'w', right: 'e', top: 'n', bottom: 's'}; + var globalDir = graphic.transformDirection( + map[localDirection], getTransform(controller) + ); + return inverseMap[globalDir]; + } + } + + function driftRect(toRectRange, fromRectRange, controller, cover, name, dx, dy, e) { + var brushOption = cover.__brushOption; + var rectRange = toRectRange(brushOption.range); + var localDelta = toLocalDelta(controller, dx, dy); + + each(name.split(''), function (namePart) { + var ind = DIRECTION_MAP[namePart]; + rectRange[ind[0]][ind[1]] += localDelta[ind[0]]; + }); + + brushOption.range = fromRectRange(formatRectRange( + rectRange[0][0], rectRange[1][0], rectRange[0][1], rectRange[1][1] + )); + + updateCoverAfterCreation(controller, cover); + trigger(controller, {isEnd: false}); + } + + function driftPolygon(controller, cover, dx, dy, e) { + var range = cover.__brushOption.range; + var localDelta = toLocalDelta(controller, dx, dy); + + each(range, function (point) { + point[0] += localDelta[0]; + point[1] += localDelta[1]; + }); + + updateCoverAfterCreation(controller, cover); + trigger(controller, {isEnd: false}); + } + + function toLocalDelta(controller, dx, dy) { + var thisGroup = controller.group; + var localD = thisGroup.transformCoordToLocal(dx, dy); + var localZero = thisGroup.transformCoordToLocal(0, 0); + + return [localD[0] - localZero[0], localD[1] - localZero[1]]; + } + + function clipByPanel(controller, cover, data) { + var panel = getPanelByCover(controller, cover); + + return (panel && panel !== true) + ? panel.clipPath(data, controller._transform) + : zrUtil.clone(data); + } + + function pointsToRect(points) { + var xmin = mathMin(points[0][0], points[1][0]); + var ymin = mathMin(points[0][1], points[1][1]); + var xmax = mathMax(points[0][0], points[1][0]); + var ymax = mathMax(points[0][1], points[1][1]); + + return { + x: xmin, + y: ymin, + width: xmax - xmin, + height: ymax - ymin + }; + } + + function resetCursor(controller, e, localCursorPoint) { + // Check active + if (!controller._brushType) { + return; + } + + var zr = controller._zr; + var covers = controller._covers; + var currPanel = getPanelByPoint(controller, e, localCursorPoint); + + // Check whether in covers. + if (!controller._dragging) { + for (var i = 0; i < covers.length; i++) { + var brushOption = covers[i].__brushOption; + if (currPanel + && (currPanel === true || brushOption.panelId === currPanel.panelId) + && coverRenderers[brushOption.brushType].contain( + covers[i], localCursorPoint[0], localCursorPoint[1] + ) + ) { + // Use cursor style set on cover. + return; + } + } + } + + currPanel && zr.setCursorStyle('crosshair'); + } + + function preventDefault(e) { + var rawE = e.event; + rawE.preventDefault && rawE.preventDefault(); + } + + function mainShapeContain(cover, x, y) { + return cover.childOfName('main').contain(x, y); + } + + function updateCoverByMouse(controller, e, localCursorPoint, isEnd) { + var creatingCover = controller._creatingCover; + var panel = controller._creatingPanel; + var thisBrushOption = controller._brushOption; + var eventParams; + + controller._track.push(localCursorPoint.slice()); + + if (shouldShowCover(controller) || creatingCover) { + + if (panel && !creatingCover) { + thisBrushOption.brushMode === 'single' && clearCovers(controller); + var brushOption = zrUtil.clone(thisBrushOption); + brushOption.brushType = determineBrushType(brushOption.brushType, panel); + brushOption.panelId = panel === true ? null : panel.panelId; + creatingCover = controller._creatingCover = createCover(controller, brushOption); + controller._covers.push(creatingCover); + } + + if (creatingCover) { + var coverRenderer = coverRenderers[determineBrushType(controller._brushType, panel)]; + var coverBrushOption = creatingCover.__brushOption; + + coverBrushOption.range = coverRenderer.getCreatingRange( + clipByPanel(controller, creatingCover, controller._track) + ); + + if (isEnd) { + endCreating(controller, creatingCover); + coverRenderer.updateCommon(controller, creatingCover); + } + + updateCoverShape(controller, creatingCover); + + eventParams = {isEnd: isEnd}; + } + } + else if ( + isEnd + && thisBrushOption.brushMode === 'single' + && thisBrushOption.removeOnClick + ) { + // Help user to remove covers easily, only by a tiny drag, in 'single' mode. + // But a single click do not clear covers, because user may have casual + // clicks (for example, click on other component and do not expect covers + // disappear). + // Only some cover removed, trigger action, but not every click trigger action. + if (getPanelByPoint(controller, e, localCursorPoint) && clearCovers(controller)) { + eventParams = {isEnd: isEnd, removeOnClick: true}; + } + } + + return eventParams; + } + + function determineBrushType(brushType, panel) { + if (brushType === 'auto') { + if (true) { + zrUtil.assert( + panel && panel.defaultBrushType, + 'MUST have defaultBrushType when brushType is "atuo"' + ); + } + return panel.defaultBrushType; + } + return brushType; + } + + var mouseHandlers = { + + mousedown: function (e) { + if (this._dragging) { + // In case some browser do not support globalOut, + // and release mose out side the browser. + handleDragEnd.call(this, e); + } + else if (!e.target || !e.target.draggable) { + + preventDefault(e); + + var localCursorPoint = this.group.transformCoordToLocal(e.offsetX, e.offsetY); + + this._creatingCover = null; + var panel = this._creatingPanel = getPanelByPoint(this, e, localCursorPoint); + + if (panel) { + this._dragging = true; + this._track = [localCursorPoint.slice()]; + } + } + }, + + mousemove: function (e) { + var localCursorPoint = this.group.transformCoordToLocal(e.offsetX, e.offsetY); + + resetCursor(this, e, localCursorPoint); + + if (this._dragging) { + + preventDefault(e); + + var eventParams = updateCoverByMouse(this, e, localCursorPoint, false); + + eventParams && trigger(this, eventParams); + } + }, + + mouseup: handleDragEnd //, + + // FIXME + // in tooltip, globalout should not be triggered. + // globalout: handleDragEnd + }; + + function handleDragEnd(e) { + if (this._dragging) { + + preventDefault(e); + + var localCursorPoint = this.group.transformCoordToLocal(e.offsetX, e.offsetY); + var eventParams = updateCoverByMouse(this, e, localCursorPoint, true); + + this._dragging = false; + this._track = []; + this._creatingCover = null; + + // trigger event shoule be at final, after procedure will be nested. + eventParams && trigger(this, eventParams); + } + } + + /** + * key: brushType + * @type {Object} + */ + var coverRenderers = { + + lineX: getLineRenderer(0), + + lineY: getLineRenderer(1), + + rect: { + createCover: function (controller, brushOption) { + return createBaseRectCover( + curry( + driftRect, + function (range) { + return range; + }, + function (range) { + return range; + } + ), + controller, + brushOption, + ['w', 'e', 'n', 's', 'se', 'sw', 'ne', 'nw'] + ); + }, + getCreatingRange: function (localTrack) { + var ends = getTrackEnds(localTrack); + return formatRectRange(ends[1][0], ends[1][1], ends[0][0], ends[0][1]); + }, + updateCoverShape: function (controller, cover, localRange, brushOption) { + updateBaseRect(controller, cover, localRange, brushOption); + }, + updateCommon: updateCommon, + contain: mainShapeContain + }, + + polygon: { + createCover: function (controller, brushOption) { + var cover = new graphic.Group(); + + // Do not use graphic.Polygon because graphic.Polyline do not close the + // border of the shape when drawing, which is a better experience for user. + cover.add(new graphic.Polyline({ + name: 'main', + style: makeStyle(brushOption), + silent: true + })); + + return cover; + }, + getCreatingRange: function (localTrack) { + return localTrack; + }, + endCreating: function (controller, cover) { + cover.remove(cover.childAt(0)); + // Use graphic.Polygon close the shape. + cover.add(new graphic.Polygon({ + name: 'main', + draggable: true, + drift: curry(driftPolygon, controller, cover), + ondragend: curry(trigger, controller, {isEnd: true}) + })); + }, + updateCoverShape: function (controller, cover, localRange, brushOption) { + cover.childAt(0).setShape({ + points: clipByPanel(controller, cover, localRange) + }); + }, + updateCommon: updateCommon, + contain: mainShapeContain + } + }; + + function getLineRenderer(xyIndex) { + return { + createCover: function (controller, brushOption) { + return createBaseRectCover( + curry( + driftRect, + function (range) { + var rectRange = [range, [0, 100]]; + xyIndex && rectRange.reverse(); + return rectRange; + }, + function (rectRange) { + return rectRange[xyIndex]; + } + ), + controller, + brushOption, + [['w', 'e'], ['n', 's']][xyIndex] + ); + }, + getCreatingRange: function (localTrack) { + var ends = getTrackEnds(localTrack); + var min = mathMin(ends[0][xyIndex], ends[1][xyIndex]); + var max = mathMax(ends[0][xyIndex], ends[1][xyIndex]); + + return [min, max]; + }, + updateCoverShape: function (controller, cover, localRange, brushOption) { + var otherExtent; + // If brushWidth not specified, fit the panel. + var panel = getPanelByCover(controller, cover); + if (panel !== true && panel.getLinearBrushOtherExtent) { + otherExtent = panel.getLinearBrushOtherExtent( + xyIndex, controller._transform + ); + } + else { + var zr = controller._zr; + otherExtent = [0, [zr.getWidth(), zr.getHeight()][1 - xyIndex]]; + } + var rectRange = [localRange, otherExtent]; + xyIndex && rectRange.reverse(); + + updateBaseRect(controller, cover, rectRange, brushOption); + }, + updateCommon: updateCommon, + contain: mainShapeContain + }; + } + + module.exports = BrushController; + + +/***/ }, +/* 246 */ +/***/ function(module, exports, __webpack_require__) { + + + + var cursorHelper = __webpack_require__(186); + var BoundingRect = __webpack_require__(9); + var graphicUtil = __webpack_require__(18); + + var helper = {}; + + helper.makeRectPanelClipPath = function (rect) { + rect = normalizeRect(rect); + return function (localPoints, transform) { + return graphicUtil.clipPointsByRect(localPoints, rect); + }; + }; + + helper.makeLinearBrushOtherExtent = function (rect, specifiedXYIndex) { + rect = normalizeRect(rect); + return function (xyIndex) { + var idx = specifiedXYIndex != null ? specifiedXYIndex : xyIndex; + var brushWidth = idx ? rect.width : rect.height; + var base = idx ? rect.x : rect.y; + return [base, base + (brushWidth || 0)]; + }; + }; + + helper.makeRectIsTargetByCursor = function (rect, api, targetModel) { + rect = normalizeRect(rect); + return function (e, localCursorPoint, transform) { + return rect.contain(localCursorPoint[0], localCursorPoint[1]) + && !cursorHelper.onIrrelevantElement(e, api, targetModel); + }; + }; + + // Consider width/height is negative. + function normalizeRect(rect) { + return BoundingRect.create(rect); + } + + module.exports = helper; + + + +/***/ }, +/* 247 */ +/***/ function(module, exports, __webpack_require__) { + + + + var zrUtil = __webpack_require__(4); + var modelUtil = __webpack_require__(5); + + module.exports = function (option) { + createParallelIfNeeded(option); + mergeAxisOptionFromParallel(option); + }; + + /** + * Create a parallel coordinate if not exists. + * @inner + */ + function createParallelIfNeeded(option) { + if (option.parallel) { + return; + } + + var hasParallelSeries = false; + + zrUtil.each(option.series, function (seriesOpt) { + if (seriesOpt && seriesOpt.type === 'parallel') { + hasParallelSeries = true; + } + }); + + if (hasParallelSeries) { + option.parallel = [{}]; + } + } + + /** + * Merge aixs definition from parallel option (if exists) to axis option. + * @inner + */ + function mergeAxisOptionFromParallel(option) { + var axes = modelUtil.normalizeToArray(option.parallelAxis); + + zrUtil.each(axes, function (axisOption) { + if (!zrUtil.isObject(axisOption)) { + return; + } + + var parallelIndex = axisOption.parallelIndex || 0; + var parallelOption = modelUtil.normalizeToArray(option.parallel)[parallelIndex]; + + if (parallelOption && parallelOption.parallelAxisDefault) { + zrUtil.merge(axisOption, parallelOption.parallelAxisDefault, false); + } + }); + } + + + +/***/ }, +/* 248 */ +/***/ function(module, exports, __webpack_require__) { + + + + var List = __webpack_require__(98); + var zrUtil = __webpack_require__(4); + var SeriesModel = __webpack_require__(78); + var completeDimensions = __webpack_require__(110); + + module.exports = SeriesModel.extend({ + + type: 'series.parallel', + + dependencies: ['parallel'], + + visualColorAccessPath: 'lineStyle.normal.color', + + getInitialData: function (option, ecModel) { + var parallelModel = ecModel.getComponent( + 'parallel', this.get('parallelIndex') + ); + var parallelAxisIndices = parallelModel.parallelAxisIndex; + + var rawData = option.data; + var modelDims = parallelModel.dimensions; + + var dataDims = generateDataDims(modelDims, rawData); + + var dataDimsInfo = zrUtil.map(dataDims, function (dim, dimIndex) { + + var modelDimsIndex = zrUtil.indexOf(modelDims, dim); + var axisModel = modelDimsIndex >= 0 && ecModel.getComponent( + 'parallelAxis', parallelAxisIndices[modelDimsIndex] + ); + + if (axisModel && axisModel.get('type') === 'category') { + translateCategoryValue(axisModel, dim, rawData); + return {name: dim, type: 'ordinal'}; + } + else if (modelDimsIndex < 0) { + return completeDimensions.guessOrdinal(rawData, dimIndex) + ? {name: dim, type: 'ordinal'} + : dim; + } + else { + return dim; + } + }); + + var list = new List(dataDimsInfo, this); + list.initData(rawData); + + // Anication is forbiden in progressive data mode. + if (this.option.progressive) { + this.option.animation = false; + } + + return list; + }, + + /** + * User can get data raw indices on 'axisAreaSelected' event received. + * + * @public + * @param {string} activeState 'active' or 'inactive' or 'normal' + * @return {Array.} Raw indices + */ + getRawIndicesByActiveState: function (activeState) { + var coordSys = this.coordinateSystem; + var data = this.getData(); + var indices = []; + + coordSys.eachActiveState(data, function (theActiveState, dataIndex) { + if (activeState === theActiveState) { + indices.push(data.getRawIndex(dataIndex)); + } + }); + + return indices; + }, + + defaultOption: { + zlevel: 0, // 一级层叠 + z: 2, // 二级层叠 + + coordinateSystem: 'parallel', + parallelIndex: 0, + + label: { + normal: { + show: false + }, + emphasis: { + show: false + } + }, + + inactiveOpacity: 0.05, + activeOpacity: 1, + + lineStyle: { + normal: { + width: 1, + opacity: 0.45, + type: 'solid' + } + }, + progressive: false, // 100 + smooth: false, + + animationEasing: 'linear' + } + }); + + function translateCategoryValue(axisModel, dim, rawData) { + var axisData = axisModel.get('data'); + var numberDim = convertDimNameToNumber(dim); + + if (axisData && axisData.length) { + zrUtil.each(rawData, function (dataItem) { + if (!dataItem) { + return; + } + // FIXME + // time consuming, should use hash? + var index = zrUtil.indexOf(axisData, dataItem[numberDim]); + dataItem[numberDim] = index >= 0 ? index : NaN; + }); + } + // FIXME + // 如果没有设置axis data, 应自动算出,或者提示。 + } + + function convertDimNameToNumber(dimName) { + return +dimName.replace('dim', ''); + } + + function generateDataDims(modelDims, rawData) { + // parallelModel.dimension should not be regarded as data + // dimensions. Consider dimensions = ['dim4', 'dim2', 'dim6']; + + // We detect max dim by parallelModel.dimensions and fist + // item in rawData arbitrarily. + var maxDimNum = 0; + zrUtil.each(modelDims, function (dimName) { + var numberDim = convertDimNameToNumber(dimName); + numberDim > maxDimNum && (maxDimNum = numberDim); + }); + + var firstItem = rawData[0]; + if (firstItem && firstItem.length - 1 > maxDimNum) { + maxDimNum = firstItem.length - 1; + } + + var dataDims = []; + for (var i = 0; i <= maxDimNum; i++) { + dataDims.push('dim' + i); + } + + return dataDims; + } + + +/***/ }, +/* 249 */ +/***/ function(module, exports, __webpack_require__) { + + + + var graphic = __webpack_require__(18); + var zrUtil = __webpack_require__(4); + + var SMOOTH = 0.3; + + var ParallelView = __webpack_require__(80).extend({ + + type: 'parallel', + + init: function () { + + /** + * @type {module:zrender/container/Group} + * @private + */ + this._dataGroup = new graphic.Group(); + + this.group.add(this._dataGroup); + + /** + * @type {module:echarts/data/List} + */ + this._data; + }, + + /** + * @override + */ + render: function (seriesModel, ecModel, api, payload) { + this._renderForNormal(seriesModel, payload); + // this[ + // seriesModel.option.progressive + // ? '_renderForProgressive' + // : '_renderForNormal' + // ](seriesModel); + }, + + dispose: function () {}, + + /** + * @private + */ + _renderForNormal: function (seriesModel, payload) { + var dataGroup = this._dataGroup; + var data = seriesModel.getData(); + var oldData = this._data; + var coordSys = seriesModel.coordinateSystem; + var dimensions = coordSys.dimensions; + var option = seriesModel.option; + var smooth = option.smooth ? SMOOTH : null; + + // Consider switch between progressive and not. + // oldData && oldData.__plProgressive && dataGroup.removeAll(); + + data.diff(oldData) + .add(add) + .update(update) + .remove(remove) + .execute(); + + // Update style + updateElCommon(data, smooth); + + // First create + if (!this._data) { + var clipPath = createGridClipShape( + coordSys, seriesModel, function () { + // Callback will be invoked immediately if there is no animation + setTimeout(function () { + dataGroup.removeClipPath(); + }); + } + ); + dataGroup.setClipPath(clipPath); + } + + this._data = data; + + function add(newDataIndex) { + addEl(data, dataGroup, newDataIndex, dimensions, coordSys, null, smooth); + } + + function update(newDataIndex, oldDataIndex) { + var line = oldData.getItemGraphicEl(oldDataIndex); + var points = createLinePoints(data, newDataIndex, dimensions, coordSys); + data.setItemGraphicEl(newDataIndex, line); + var animationModel = (payload && payload.animation === false) ? null : seriesModel; + graphic.updateProps(line, {shape: {points: points}}, animationModel, newDataIndex); + } + + function remove(oldDataIndex) { + var line = oldData.getItemGraphicEl(oldDataIndex); + dataGroup.remove(line); + } + + }, + + /** + * @private + */ + // _renderForProgressive: function (seriesModel) { + // var dataGroup = this._dataGroup; + // var data = seriesModel.getData(); + // var oldData = this._data; + // var coordSys = seriesModel.coordinateSystem; + // var dimensions = coordSys.dimensions; + // var option = seriesModel.option; + // var progressive = option.progressive; + // var smooth = option.smooth ? SMOOTH : null; + + // // In progressive animation is disabled, so use simple data diff, + // // which effects performance less. + // // (Typically performance for data with length 7000+ like: + // // simpleDiff: 60ms, addEl: 184ms, + // // in RMBP 2.4GHz intel i7, OSX 10.9 chrome 50.0.2661.102 (64-bit)) + // if (simpleDiff(oldData, data, dimensions)) { + // dataGroup.removeAll(); + // data.each(function (dataIndex) { + // addEl(data, dataGroup, dataIndex, dimensions, coordSys); + // }); + // } + + // updateElCommon(data, progressive, smooth); + + // // Consider switch between progressive and not. + // data.__plProgressive = true; + // this._data = data; + // }, + + /** + * @override + */ + remove: function () { + this._dataGroup && this._dataGroup.removeAll(); + this._data = null; + } + }); + + function createGridClipShape(coordSys, seriesModel, cb) { + var parallelModel = coordSys.model; + var rect = coordSys.getRect(); + var rectEl = new graphic.Rect({ + shape: { + x: rect.x, + y: rect.y, + width: rect.width, + height: rect.height + } + }); + + var dim = parallelModel.get('layout') === 'horizontal' ? 'width' : 'height'; + rectEl.setShape(dim, 0); + graphic.initProps(rectEl, { + shape: { + width: rect.width, + height: rect.height + } + }, seriesModel, cb); + return rectEl; + } + + function createLinePoints(data, dataIndex, dimensions, coordSys) { + var points = []; + for (var i = 0; i < dimensions.length; i++) { + var dimName = dimensions[i]; + var value = data.get(dimName, dataIndex); + if (!isEmptyValue(value, coordSys.getAxis(dimName).type)) { + points.push(coordSys.dataToPoint(value, dimName)); + } + } + return points; + } + + function addEl(data, dataGroup, dataIndex, dimensions, coordSys) { + var points = createLinePoints(data, dataIndex, dimensions, coordSys); + var line = new graphic.Polyline({ + shape: {points: points}, + silent: true, + z2: 10 + }); + dataGroup.add(line); + data.setItemGraphicEl(dataIndex, line); + } + + function updateElCommon(data, smooth) { + var seriesStyleModel = data.hostModel.getModel('lineStyle.normal'); + var lineStyle = seriesStyleModel.getLineStyle(); + data.eachItemGraphicEl(function (line, dataIndex) { + if (data.hasItemOption) { + var itemModel = data.getItemModel(dataIndex); + var lineStyleModel = itemModel.getModel('lineStyle.normal', seriesStyleModel); + lineStyle = lineStyleModel.getLineStyle(['color', 'stroke']); + } + + line.useStyle(zrUtil.extend(lineStyle, { + fill: null, + // lineStyle.color have been set to itemVisual in module:echarts/visual/seriesColor. + stroke: data.getItemVisual(dataIndex, 'color'), + // lineStyle.opacity have been set to itemVisual in parallelVisual. + opacity: data.getItemVisual(dataIndex, 'opacity') + })); + + line.shape.smooth = smooth; + }); + } + + // function simpleDiff(oldData, newData, dimensions) { + // var oldLen; + // if (!oldData + // || !oldData.__plProgressive + // || (oldLen = oldData.count()) !== newData.count() + // ) { + // return true; + // } + + // var dimLen = dimensions.length; + // for (var i = 0; i < oldLen; i++) { + // for (var j = 0; j < dimLen; j++) { + // if (oldData.get(dimensions[j], i) !== newData.get(dimensions[j], i)) { + // return true; + // } + // } + // } + + // return false; + // } + + // FIXME + // 公用方法? + function isEmptyValue(val, axisType) { + return axisType === 'category' + ? val == null + : (val == null || isNaN(val)); // axisType === 'value' + } + + module.exports = ParallelView; + + +/***/ }, +/* 250 */ +/***/ function(module, exports) { + + + + var opacityAccessPath = ['lineStyle', 'normal', 'opacity']; + + module.exports = function (ecModel) { + + ecModel.eachSeriesByType('parallel', function (seriesModel) { + + var itemStyleModel = seriesModel.getModel('itemStyle.normal'); + var lineStyleModel = seriesModel.getModel('lineStyle.normal'); + var globalColors = ecModel.get('color'); + + var color = lineStyleModel.get('color') + || itemStyleModel.get('color') + || globalColors[seriesModel.seriesIndex % globalColors.length]; + var inactiveOpacity = seriesModel.get('inactiveOpacity'); + var activeOpacity = seriesModel.get('activeOpacity'); + var lineStyle = seriesModel.getModel('lineStyle.normal').getLineStyle(); + + var coordSys = seriesModel.coordinateSystem; + var data = seriesModel.getData(); + + var opacityMap = { + normal: lineStyle.opacity, + active: activeOpacity, + inactive: inactiveOpacity + }; + + coordSys.eachActiveState(data, function (activeState, dataIndex) { + var itemModel = data.getItemModel(dataIndex); + var opacity = opacityMap[activeState]; + if (activeState === 'normal') { + var itemOpacity = itemModel.get(opacityAccessPath, true); + itemOpacity != null && (opacity = itemOpacity); + } + data.setItemVisual(dataIndex, 'opacity', opacity); + }); + + data.setVisual('color', color); + }); + }; + + +/***/ }, +/* 251 */ +/***/ function(module, exports, __webpack_require__) { + + + + var echarts = __webpack_require__(1); + + __webpack_require__(252); + __webpack_require__(253); + echarts.registerLayout(__webpack_require__(254)); + echarts.registerVisual(__webpack_require__(256)); + + +/***/ }, +/* 252 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * @file Get initial data and define sankey view's series model + * @author Deqing Li(annong035@gmail.com) + */ + + + var SeriesModel = __webpack_require__(78); + var createGraphFromNodeEdge = __webpack_require__(207); + var encodeHTML = __webpack_require__(6).encodeHTML; + + var SankeySeries = SeriesModel.extend({ + + type: 'series.sankey', + + layoutInfo: null, + + /** + * Init a graph data structure from data in option series + * + * @param {Object} option the object used to config echarts view + * @return {module:echarts/data/List} storage initial data + */ + getInitialData: function (option) { + var links = option.edges || option.links; + var nodes = option.data || option.nodes; + if (nodes && links) { + var graph = createGraphFromNodeEdge(nodes, links, this, true); + return graph.data; + } + }, + + /** + * Return the graphic data structure + * + * @return {module:echarts/data/Graph} graphic data structure + */ + getGraph: function () { + return this.getData().graph; + }, + + /** + * Get edge data of graphic data structure + * + * @return {module:echarts/data/List} data structure of list + */ + getEdgeData: function () { + return this.getGraph().edgeData; + }, + + /** + * @override + */ + formatTooltip: function (dataIndex, multipleSeries, dataType) { + // dataType === 'node' or empty do not show tooltip by default + if (dataType === 'edge') { + var params = this.getDataParams(dataIndex, dataType); + var rawDataOpt = params.data; + var html = rawDataOpt.source + ' -- ' + rawDataOpt.target; + if (params.value) { + html += ' : ' + params.value; + } + return encodeHTML(html); + } + + return SankeySeries.superCall(this, 'formatTooltip', dataIndex, multipleSeries); + }, + + defaultOption: { + zlevel: 0, + z: 2, + + coordinateSystem: 'view', + + layout: null, + + // the position of the whole view + left: '5%', + top: '5%', + right: '20%', + bottom: '5%', + + // the dx of the node + nodeWidth: 20, + + // the vertical distance between two nodes + nodeGap: 8, + + // the number of iterations to change the position of the node + layoutIterations: 32, + + label: { + normal: { + show: true, + position: 'right', + textStyle: { + color: '#000', + fontSize: 12 + } + }, + emphasis: { + show: true + } + }, + + itemStyle: { + normal: { + borderWidth: 1, + borderColor: '#333' + } + }, + + lineStyle: { + normal: { + color: '#314656', + opacity: 0.2, + curveness: 0.5 + }, + emphasis: { + opacity: 0.6 + } + }, + + animationEasing: 'linear', + + animationDuration: 1000 + } + + }); + + module.exports = SankeySeries; + + + +/***/ }, +/* 253 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * @file The file used to draw sankey view + * @author Deqing Li(annong035@gmail.com) + */ + + + var graphic = __webpack_require__(18); + var zrUtil = __webpack_require__(4); + + var SankeyShape = graphic.extendShape({ + shape: { + x1: 0, y1: 0, + x2: 0, y2: 0, + cpx1: 0, cpy1: 0, + cpx2: 0, cpy2: 0, + + extent: 0 + }, + + buildPath: function (ctx, shape) { + var halfExtent = shape.extent / 2; + ctx.moveTo(shape.x1, shape.y1 - halfExtent); + ctx.bezierCurveTo( + shape.cpx1, shape.cpy1 - halfExtent, + shape.cpx2, shape.cpy2 - halfExtent, + shape.x2, shape.y2 - halfExtent + ); + ctx.lineTo(shape.x2, shape.y2 + halfExtent); + ctx.bezierCurveTo( + shape.cpx2, shape.cpy2 + halfExtent, + shape.cpx1, shape.cpy1 + halfExtent, + shape.x1, shape.y1 + halfExtent + ); + ctx.closePath(); + } + }); + + module.exports = __webpack_require__(1).extendChartView({ + + type: 'sankey', + + /** + * @private + * @type {module:echarts/chart/sankey/SankeySeries} + */ + _model: null, + + render: function (seriesModel, ecModel, api) { + var graph = seriesModel.getGraph(); + var group = this.group; + var layoutInfo = seriesModel.layoutInfo; + var nodeData = seriesModel.getData(); + var edgeData = seriesModel.getData('edge'); + + this._model = seriesModel; + + group.removeAll(); + + group.position = [layoutInfo.x, layoutInfo.y]; + + // generate a bezire Curve for each edge + graph.eachEdge(function (edge) { + var curve = new SankeyShape(); + + curve.dataIndex = edge.dataIndex; + curve.seriesIndex = seriesModel.seriesIndex; + curve.dataType = 'edge'; + + var lineStyleModel = edge.getModel('lineStyle.normal'); + var curvature = lineStyleModel.get('curveness'); + var n1Layout = edge.node1.getLayout(); + var n2Layout = edge.node2.getLayout(); + var edgeLayout = edge.getLayout(); + + curve.shape.extent = Math.max(1, edgeLayout.dy); + + var x1 = n1Layout.x + n1Layout.dx; + var y1 = n1Layout.y + edgeLayout.sy + edgeLayout.dy / 2; + var x2 = n2Layout.x; + var y2 = n2Layout.y + edgeLayout.ty + edgeLayout.dy / 2; + var cpx1 = x1 * (1 - curvature) + x2 * curvature; + var cpy1 = y1; + var cpx2 = x1 * curvature + x2 * (1 - curvature); + var cpy2 = y2; + + curve.setShape({ + x1: x1, + y1: y1, + x2: x2, + y2: y2, + cpx1: cpx1, + cpy1: cpy1, + cpx2: cpx2, + cpy2: cpy2 + }); + + curve.setStyle(lineStyleModel.getItemStyle()); + // Special color, use source node color or target node color + switch (curve.style.fill) { + case 'source': + curve.style.fill = edge.node1.getVisual('color'); + break; + case 'target': + curve.style.fill = edge.node2.getVisual('color'); + break; + } + + graphic.setHoverStyle(curve, edge.getModel('lineStyle.emphasis').getItemStyle()); + + group.add(curve); + + edgeData.setItemGraphicEl(edge.dataIndex, curve); + }); + + // generate a rect for each node + graph.eachNode(function (node) { + var layout = node.getLayout(); + var itemModel = node.getModel(); + var labelModel = itemModel.getModel('label.normal'); + var textStyleModel = labelModel.getModel('textStyle'); + var labelHoverModel = itemModel.getModel('label.emphasis'); + var textStyleHoverModel = labelHoverModel.getModel('textStyle'); + + var rect = new graphic.Rect({ + shape: { + x: layout.x, + y: layout.y, + width: node.getLayout().dx, + height: node.getLayout().dy + }, + style: { + // Get formatted label in label.normal option + // Use node id if it is not specified + text: labelModel.get('show') + ? seriesModel.getFormattedLabel(node.dataIndex, 'normal') || node.id + // Use empty string to hide the label + : '', + textFont: textStyleModel.getFont(), + textFill: textStyleModel.getTextColor(), + textPosition: labelModel.get('position') + } + }); + + rect.setStyle(zrUtil.defaults( + { + fill: node.getVisual('color') + }, + itemModel.getModel('itemStyle.normal').getItemStyle() + )); + + graphic.setHoverStyle(rect, zrUtil.extend( + node.getModel('itemStyle.emphasis'), + { + text: labelHoverModel.get('show') + ? seriesModel.getFormattedLabel(node.dataIndex, 'emphasis') || node.id + : '', + textFont: textStyleHoverModel.getFont(), + textFill: textStyleHoverModel.getTextColor(), + textPosition: labelHoverModel.get('position') + } + )); + + group.add(rect); + + nodeData.setItemGraphicEl(node.dataIndex, rect); + + rect.dataType = 'node'; + }); + + if (!this._data && seriesModel.get('animation')) { + group.setClipPath(createGridClipShape(group.getBoundingRect(), seriesModel, function () { + group.removeClipPath(); + })); + } + + this._data = seriesModel.getData(); + }, + + dispose: function () {} + }); + + // add animation to the view + function createGridClipShape(rect, seriesModel, cb) { + var rectEl = new graphic.Rect({ + shape: { + x: rect.x - 10, + y: rect.y - 10, + width: 0, + height: rect.height + 20 + } + }); + graphic.initProps(rectEl, { + shape: { + width: rect.width + 20, + height: rect.height + 20 + } + }, seriesModel, cb); + + return rectEl; + } + + + +/***/ }, +/* 254 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * @file The layout algorithm of sankey view + * @author Deqing Li(annong035@gmail.com) + */ + + + var layout = __webpack_require__(71); + var nest = __webpack_require__(255); + var zrUtil = __webpack_require__(4); + + module.exports = function (ecModel, api, payload) { + + ecModel.eachSeriesByType('sankey', function (seriesModel) { + + var nodeWidth = seriesModel.get('nodeWidth'); + var nodeGap = seriesModel.get('nodeGap'); + + var layoutInfo = getViewRect(seriesModel, api); + + seriesModel.layoutInfo = layoutInfo; + + var width = layoutInfo.width; + var height = layoutInfo.height; + + var graph = seriesModel.getGraph(); + + var nodes = graph.nodes; + var edges = graph.edges; + + computeNodeValues(nodes); + + var filteredNodes = zrUtil.filter(nodes, function (node) { + return node.getLayout().value === 0; + }); + + var iterations = filteredNodes.length !== 0 + ? 0 : seriesModel.get('layoutIterations'); + + layoutSankey(nodes, edges, nodeWidth, nodeGap, width, height, iterations); + }); + }; + + /** + * Get the layout position of the whole view + * + * @param {module:echarts/model/Series} seriesModel the model object of sankey series + * @param {module:echarts/ExtensionAPI} api provide the API list that the developer can call + * @return {module:zrender/core/BoundingRect} size of rect to draw the sankey view + */ + function getViewRect(seriesModel, api) { + return layout.getLayoutRect( + seriesModel.getBoxLayoutParams(), { + width: api.getWidth(), + height: api.getHeight() + } + ); + } + + function layoutSankey(nodes, edges, nodeWidth, nodeGap, width, height, iterations) { + computeNodeBreadths(nodes, nodeWidth, width); + computeNodeDepths(nodes, edges, height, nodeGap, iterations); + computeEdgeDepths(nodes); + } + + /** + * Compute the value of each node by summing the associated edge's value + * + * @param {module:echarts/data/Graph~Node} nodes node of sankey view + */ + function computeNodeValues(nodes) { + zrUtil.each(nodes, function (node) { + var value1 = sum(node.outEdges, getEdgeValue); + var value2 = sum(node.inEdges, getEdgeValue); + var value = Math.max(value1, value2); + node.setLayout({value: value}, true); + }); + } + + /** + * Compute the x-position for each node + * + * @param {module:echarts/data/Graph~Node} nodes node of sankey view + * @param {number} nodeWidth the dx of the node + * @param {number} width the whole width of the area to draw the view + */ + function computeNodeBreadths(nodes, nodeWidth, width) { + var remainNodes = nodes; + var nextNode = null; + var x = 0; + var kx = 0; + + while (remainNodes.length) { + nextNode = []; + for (var i = 0, len = remainNodes.length; i < len; i++) { + var node = remainNodes[i]; + node.setLayout({x: x}, true); + node.setLayout({dx: nodeWidth}, true); + for (var j = 0, lenj = node.outEdges.length; j < lenj; j++) { + nextNode.push(node.outEdges[j].node2); + } + } + remainNodes = nextNode; + ++x; + } + + moveSinksRight(nodes, x); + kx = (width - nodeWidth) / (x - 1); + + scaleNodeBreadths(nodes, kx); + } + + /** + * All the node without outEgdes are assigned maximum x-position and + * be aligned in the last column. + * + * @param {module:echarts/data/Graph~Node} nodes node of sankey view + * @param {number} x value (x-1) use to assign to node without outEdges + * as x-position + */ + function moveSinksRight(nodes, x) { + zrUtil.each(nodes, function (node) { + if (!node.outEdges.length) { + node.setLayout({x: x - 1}, true); + } + }); + } + + /** + * Scale node x-position to the width + * + * @param {module:echarts/data/Graph~Node} nodes node of sankey view + * @param {number} kx multiple used to scale nodes + */ + function scaleNodeBreadths(nodes, kx) { + zrUtil.each(nodes, function (node) { + var nodeX = node.getLayout().x * kx; + node.setLayout({x: nodeX}, true); + }); + } + + /** + * Using Gauss-Seidel iterations method to compute the node depth(y-position) + * + * @param {module:echarts/data/Graph~Node} nodes node of sankey view + * @param {module:echarts/data/Graph~Edge} edges edge of sankey view + * @param {number} height the whole height of the area to draw the view + * @param {numbber} nodeGap the vertical distance between two nodes + * in the same column. + * @param {number} iterations the number of iterations for the algorithm + */ + function computeNodeDepths(nodes, edges, height, nodeGap, iterations) { + var nodesByBreadth = nest() + .key(function (d) { + return d.getLayout().x; + }) + .sortKeys(ascending) + .entries(nodes) + .map(function (d) { + return d.values; + }); + + initializeNodeDepth(nodes, nodesByBreadth, edges, height, nodeGap); + resolveCollisions(nodesByBreadth, nodeGap, height); + + for (var alpha = 1; iterations > 0; iterations--) { + // 0.99 is a experience parameter, ensure that each iterations of + // changes as small as possible. + alpha *= 0.99; + relaxRightToLeft(nodesByBreadth, alpha); + resolveCollisions(nodesByBreadth, nodeGap, height); + relaxLeftToRight(nodesByBreadth, alpha); + resolveCollisions(nodesByBreadth, nodeGap, height); + } + } + + /** + * Compute the original y-position for each node + * + * @param {module:echarts/data/Graph~Node} nodes node of sankey view + * @param {Array.>} nodesByBreadth + * group by the array of all sankey nodes based on the nodes x-position. + * @param {module:echarts/data/Graph~Edge} edges edge of sankey view + * @param {number} height the whole height of the area to draw the view + * @param {number} nodeGap the vertical distance between two nodes + */ + function initializeNodeDepth(nodes, nodesByBreadth, edges, height, nodeGap) { + var kyArray = []; + zrUtil.each(nodesByBreadth, function (nodes) { + var n = nodes.length; + var sum = 0; + zrUtil.each(nodes, function (node) { + sum += node.getLayout().value; + }); + var ky = (height - (n - 1) * nodeGap) / sum; + kyArray.push(ky); + }); + + kyArray.sort(function (a, b) { + return a - b; + }); + var ky0 = kyArray[0]; + + zrUtil.each(nodesByBreadth, function (nodes) { + zrUtil.each(nodes, function (node, i) { + node.setLayout({y: i}, true); + var nodeDy = node.getLayout().value * ky0; + node.setLayout({dy: nodeDy}, true); + }); + }); + + zrUtil.each(edges, function (edge) { + var edgeDy = +edge.getValue() * ky0; + edge.setLayout({dy: edgeDy}, true); + }); + } + + /** + * Resolve the collision of initialized depth (y-position) + * + * @param {Array.>} nodesByBreadth + * group by the array of all sankey nodes based on the nodes x-position. + * @param {number} nodeGap the vertical distance between two nodes + * @param {number} height the whole height of the area to draw the view + */ + function resolveCollisions(nodesByBreadth, nodeGap, height) { + zrUtil.each(nodesByBreadth, function (nodes) { + var node; + var dy; + var y0 = 0; + var n = nodes.length; + var i; + + nodes.sort(ascendingDepth); + + for (i = 0; i < n; i++) { + node = nodes[i]; + dy = y0 - node.getLayout().y; + if (dy > 0) { + var nodeY = node.getLayout().y + dy; + node.setLayout({y: nodeY}, true); + } + y0 = node.getLayout().y + node.getLayout().dy + nodeGap; + } + + // if the bottommost node goes outside the bounds, push it back up + dy = y0 - nodeGap - height; + if (dy > 0) { + var nodeY = node.getLayout().y - dy; + node.setLayout({y: nodeY}, true); + y0 = node.getLayout().y; + for (i = n - 2; i >= 0; --i) { + node = nodes[i]; + dy = node.getLayout().y + node.getLayout().dy + nodeGap - y0; + if (dy > 0) { + nodeY = node.getLayout().y - dy; + node.setLayout({y: nodeY}, true); + } + y0 = node.getLayout().y; + } + } + }); + } + + /** + * Change the y-position of the nodes, except most the right side nodes + * + * @param {Array.>} nodesByBreadth + * group by the array of all sankey nodes based on the node x-position. + * @param {number} alpha parameter used to adjust the nodes y-position + */ + function relaxRightToLeft(nodesByBreadth, alpha) { + zrUtil.each(nodesByBreadth.slice().reverse(), function (nodes) { + zrUtil.each(nodes, function (node) { + if (node.outEdges.length) { + var y = sum(node.outEdges, weightedTarget) / sum(node.outEdges, getEdgeValue); + var nodeY = node.getLayout().y + (y - center(node)) * alpha; + node.setLayout({y: nodeY}, true); + } + }); + }); + } + + function weightedTarget(edge) { + return center(edge.node2) * edge.getValue(); + } + + /** + * Change the y-position of the nodes, except most the left side nodes + * + * @param {Array.>} nodesByBreadth + * group by the array of all sankey nodes based on the node x-position. + * @param {number} alpha parameter used to adjust the nodes y-position + */ + function relaxLeftToRight(nodesByBreadth, alpha) { + zrUtil.each(nodesByBreadth, function (nodes) { + zrUtil.each(nodes, function (node) { + if (node.inEdges.length) { + var y = sum(node.inEdges, weightedSource) / sum(node.inEdges, getEdgeValue); + var nodeY = node.getLayout().y + (y - center(node)) * alpha; + node.setLayout({y: nodeY}, true); + } + }); + }); + } + + function weightedSource(edge) { + return center(edge.node1) * edge.getValue(); + } + + /** + * Compute the depth(y-position) of each edge + * + * @param {module:echarts/data/Graph~Node} nodes node of sankey view + */ + function computeEdgeDepths(nodes) { + zrUtil.each(nodes, function (node) { + node.outEdges.sort(ascendingTargetDepth); + node.inEdges.sort(ascendingSourceDepth); + }); + zrUtil.each(nodes, function (node) { + var sy = 0; + var ty = 0; + zrUtil.each(node.outEdges, function (edge) { + edge.setLayout({sy: sy}, true); + sy += edge.getLayout().dy; + }); + zrUtil.each(node.inEdges, function (edge) { + edge.setLayout({ty: ty}, true); + ty += edge.getLayout().dy; + }); + }); + } + + function ascendingTargetDepth(a, b) { + return a.node2.getLayout().y - b.node2.getLayout().y; + } + + function ascendingSourceDepth(a, b) { + return a.node1.getLayout().y - b.node1.getLayout().y; + } + + function sum(array, f) { + var sum = 0; + var len = array.length; + var i = -1; + while (++i < len) { + var value = +f.call(array, array[i], i); + if (!isNaN(value)) { + sum += value; + } + } + return sum; + } + + function center(node) { + return node.getLayout().y + node.getLayout().dy / 2; + } + + function ascendingDepth(a, b) { + return a.getLayout().y - b.getLayout().y; + } + + function ascending(a, b) { + return a < b ? -1 : a > b ? 1 : a === b ? 0 : NaN; + } + + function getEdgeValue(edge) { + return edge.getValue(); + } + + + +/***/ }, +/* 255 */ +/***/ function(module, exports, __webpack_require__) { + + + + var zrUtil = __webpack_require__(4); + + /** + * nest helper used to group by the array. + * can specified the keys and sort the keys. + */ + function nest() { + + var keysFunction = []; + var sortKeysFunction = []; + + /** + * map an Array into the mapObject. + * @param {Array} array + * @param {number} depth + */ + function map(array, depth) { + if (depth >= keysFunction.length) { + return array; + } + var i = -1; + var n = array.length; + var keyFunction = keysFunction[depth++]; + var mapObject = {}; + var valuesByKey = {}; + + while (++i < n) { + var keyValue = keyFunction(array[i]); + var values = valuesByKey[keyValue]; + + if (values) { + values.push(array[i]); + } + else { + valuesByKey[keyValue] = [array[i]]; + } + } + + zrUtil.each(valuesByKey, function (value, key) { + mapObject[key] = map(value, depth); + }); + + return mapObject; + } + + /** + * transform the Map Object to multidimensional Array + * @param {Object} map + * @param {number} depth + */ + function entriesMap(mapObject, depth) { + if (depth >= keysFunction.length) { + return mapObject; + } + var array = []; + var sortKeyFunction = sortKeysFunction[depth++]; + + zrUtil.each(mapObject, function (value, key) { + array.push({ + key: key, values: entriesMap(value, depth) + }); + }); + + if (sortKeyFunction) { + return array.sort(function (a, b) { + return sortKeyFunction(a.key, b.key); + }); + } + else { + return array; + } + } + + return { + /** + * specified the key to groupby the arrays. + * users can specified one more keys. + * @param {Function} d + */ + key: function (d) { + keysFunction.push(d); + return this; + }, + + /** + * specified the comparator to sort the keys + * @param {Function} order + */ + sortKeys: function (order) { + sortKeysFunction[keysFunction.length - 1] = order; + return this; + }, + + /** + * the array to be grouped by. + * @param {Array} array + */ + entries: function (array) { + return entriesMap(map(array, 0), 0); + } + }; + } + module.exports = nest; + + +/***/ }, +/* 256 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * @file Visual encoding for sankey view + * @author Deqing Li(annong035@gmail.com) + */ + + + var VisualMapping = __webpack_require__(203); + var zrUtil = __webpack_require__(4); + + module.exports = function (ecModel, payload) { + ecModel.eachSeriesByType('sankey', function (seriesModel) { + var graph = seriesModel.getGraph(); + var nodes = graph.nodes; + + nodes.sort(function (a, b) { + return a.getLayout().value - b.getLayout().value; + }); + + var minValue = nodes[0].getLayout().value; + var maxValue = nodes[nodes.length - 1].getLayout().value; + + zrUtil.each(nodes, function (node) { + var mapping = new VisualMapping({ + type: 'color', + mappingMethod: 'linear', + dataExtent: [minValue, maxValue], + visual: seriesModel.get('color') + }); + + var mapValueToColor = mapping.mapValueToVisual(node.getLayout().value); + node.setVisual('color', mapValueToColor); + // If set itemStyle.normal.color + var itemModel = node.getModel(); + var customColor = itemModel.get('itemStyle.normal.color'); + if (customColor != null) { + node.setVisual('color', customColor); + } + }); + + }); + }; + + + +/***/ }, +/* 257 */ +/***/ function(module, exports, __webpack_require__) { + + + + var echarts = __webpack_require__(1); + + __webpack_require__(258); + __webpack_require__(261); + + echarts.registerVisual(__webpack_require__(262)); + echarts.registerLayout(__webpack_require__(263)); + + + +/***/ }, +/* 258 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + + var zrUtil = __webpack_require__(4); + var SeriesModel = __webpack_require__(78); + var whiskerBoxCommon = __webpack_require__(259); + + var BoxplotSeries = SeriesModel.extend({ + + type: 'series.boxplot', + + dependencies: ['xAxis', 'yAxis', 'grid'], + + // TODO + // box width represents group size, so dimension should have 'size'. + + /** + * @see + * The meanings of 'min' and 'max' depend on user, + * and echarts do not need to know it. + * @readOnly + */ + defaultValueDimensions: ['min', 'Q1', 'median', 'Q3', 'max'], + + /** + * @type {Array.} + * @readOnly + */ + dimensions: null, + + /** + * @override + */ + defaultOption: { + zlevel: 0, // 一级层叠 + z: 2, // 二级层叠 + coordinateSystem: 'cartesian2d', + legendHoverLink: true, + + hoverAnimation: true, + + // xAxisIndex: 0, + // yAxisIndex: 0, + + layout: null, // 'horizontal' or 'vertical' + boxWidth: [7, 50], // [min, max] can be percent of band width. + + itemStyle: { + normal: { + color: '#fff', + borderWidth: 1 + }, + emphasis: { + borderWidth: 2, + shadowBlur: 5, + shadowOffsetX: 2, + shadowOffsetY: 2, + shadowColor: 'rgba(0,0,0,0.4)' + } + }, + + animationEasing: 'elasticOut', + animationDuration: 800 + } + }); + + zrUtil.mixin(BoxplotSeries, whiskerBoxCommon.seriesModelMixin, true); + + module.exports = BoxplotSeries; + + + +/***/ }, +/* 259 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + + var List = __webpack_require__(98); + var completeDimensions = __webpack_require__(110); + var WhiskerBoxDraw = __webpack_require__(260); + var zrUtil = __webpack_require__(4); + + var seriesModelMixin = { + + /** + * @private + * @type {string} + */ + _baseAxisDim: null, + + /** + * @override + */ + getInitialData: function (option, ecModel) { + // When both types of xAxis and yAxis are 'value', layout is + // needed to be specified by user. Otherwise, layout can be + // judged by which axis is category. + + var categories; + + var xAxisModel = ecModel.getComponent('xAxis', this.get('xAxisIndex')); + var yAxisModel = ecModel.getComponent('yAxis', this.get('yAxisIndex')); + var xAxisType = xAxisModel.get('type'); + var yAxisType = yAxisModel.get('type'); + var addOrdinal; + + // FIXME + // 考虑时间轴 + + if (xAxisType === 'category') { + option.layout = 'horizontal'; + categories = xAxisModel.getCategories(); + addOrdinal = true; + } + else if (yAxisType === 'category') { + option.layout = 'vertical'; + categories = yAxisModel.getCategories(); + addOrdinal = true; + } + else { + option.layout = option.layout || 'horizontal'; + } + + var coordDims = ['x', 'y']; + var baseAxisDimIndex = option.layout === 'horizontal' ? 0 : 1; + var baseAxisDim = this._baseAxisDim = coordDims[baseAxisDimIndex]; + var otherAxisDim = coordDims[1 - baseAxisDimIndex]; + var data = option.data; + + addOrdinal && zrUtil.each(data, function (item, index) { + zrUtil.isArray(item) && item.unshift(index); + }); + + var dimensions = [{ + name: baseAxisDim, + otherDims: { + tooltip: false + }, + dimsDef: ['base'] + }, { + name: otherAxisDim, + dimsDef: this.defaultValueDimensions.slice() + }]; + + dimensions = completeDimensions(dimensions, data, { + encodeDef: this.get('encode'), + dimsDef: this.get('dimensions') + }); + + var list = new List(dimensions, this); + list.initData(data, categories ? categories.slice() : null); + + return list; + }, + + /** + * If horizontal, base axis is x, otherwise y. + * @override + */ + getBaseAxis: function () { + var dim = this._baseAxisDim; + return this.ecModel.getComponent(dim + 'Axis', this.get(dim + 'AxisIndex')).axis; + } + + }; + + var viewMixin = { + + init: function () { + /** + * Old data. + * @private + * @type {module:echarts/chart/helper/WhiskerBoxDraw} + */ + var whiskerBoxDraw = this._whiskerBoxDraw = new WhiskerBoxDraw( + this.getStyleUpdater() + ); + this.group.add(whiskerBoxDraw.group); + }, + + render: function (seriesModel, ecModel, api) { + this._whiskerBoxDraw.updateData(seriesModel.getData()); + }, + + remove: function (ecModel) { + this._whiskerBoxDraw.remove(); + } + }; + + module.exports = { + seriesModelMixin: seriesModelMixin, + viewMixin: viewMixin + }; + + +/***/ }, +/* 260 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * @module echarts/chart/helper/Symbol + */ + + + var zrUtil = __webpack_require__(4); + var graphic = __webpack_require__(18); + var Path = __webpack_require__(20); + + var WhiskerPath = Path.extend({ + + type: 'whiskerInBox', + + shape: {}, + + buildPath: function (ctx, shape) { + for (var i in shape) { + if (shape.hasOwnProperty(i) && i.indexOf('ends') === 0) { + var pts = shape[i]; + ctx.moveTo(pts[0][0], pts[0][1]); + ctx.lineTo(pts[1][0], pts[1][1]); + } + } + } + }); + + /** + * @constructor + * @alias {module:echarts/chart/helper/WhiskerBox} + * @param {module:echarts/data/List} data + * @param {number} idx + * @param {Function} styleUpdater + * @param {boolean} isInit + * @extends {module:zrender/graphic/Group} + */ + function WhiskerBox(data, idx, styleUpdater, isInit) { + graphic.Group.call(this); + + /** + * @type {number} + * @readOnly + */ + this.bodyIndex; + + /** + * @type {number} + * @readOnly + */ + this.whiskerIndex; + + /** + * @type {Function} + */ + this.styleUpdater = styleUpdater; + + this._createContent(data, idx, isInit); + + this.updateData(data, idx, isInit); + + /** + * Last series model. + * @type {module:echarts/model/Series} + */ + this._seriesModel; + } + + var whiskerBoxProto = WhiskerBox.prototype; + + whiskerBoxProto._createContent = function (data, idx, isInit) { + var itemLayout = data.getItemLayout(idx); + var constDim = itemLayout.chartLayout === 'horizontal' ? 1 : 0; + var count = 0; + + // Whisker element. + this.add(new graphic.Polygon({ + shape: { + points: isInit + ? transInit(itemLayout.bodyEnds, constDim, itemLayout) + : itemLayout.bodyEnds + }, + style: {strokeNoScale: true}, + z2: 100 + })); + this.bodyIndex = count++; + + // Box element. + var whiskerEnds = zrUtil.map(itemLayout.whiskerEnds, function (ends) { + return isInit ? transInit(ends, constDim, itemLayout) : ends; + }); + this.add(new WhiskerPath({ + shape: makeWhiskerEndsShape(whiskerEnds), + style: {strokeNoScale: true}, + z2: 100 + })); + this.whiskerIndex = count++; + }; + + function transInit(points, dim, itemLayout) { + return zrUtil.map(points, function (point) { + point = point.slice(); + point[dim] = itemLayout.initBaseline; + return point; + }); + } + + function makeWhiskerEndsShape(whiskerEnds) { + // zr animation only support 2-dim array. + var shape = {}; + zrUtil.each(whiskerEnds, function (ends, i) { + shape['ends' + i] = ends; + }); + return shape; + } + + /** + * Update symbol properties + * @param {module:echarts/data/List} data + * @param {number} idx + */ + whiskerBoxProto.updateData = function (data, idx, isInit) { + var seriesModel = this._seriesModel = data.hostModel; + var itemLayout = data.getItemLayout(idx); + var updateMethod = graphic[isInit ? 'initProps' : 'updateProps']; + // this.childAt(this.bodyIndex).stopAnimation(true); + // this.childAt(this.whiskerIndex).stopAnimation(true); + updateMethod( + this.childAt(this.bodyIndex), + {shape: {points: itemLayout.bodyEnds}}, + seriesModel, idx + ); + updateMethod( + this.childAt(this.whiskerIndex), + {shape: makeWhiskerEndsShape(itemLayout.whiskerEnds)}, + seriesModel, idx + ); + + this.styleUpdater.call(null, this, data, idx); + }; + + zrUtil.inherits(WhiskerBox, graphic.Group); + + + /** + * @constructor + * @alias module:echarts/chart/helper/WhiskerBoxDraw + */ + function WhiskerBoxDraw(styleUpdater) { + this.group = new graphic.Group(); + this.styleUpdater = styleUpdater; + } + + var whiskerBoxDrawProto = WhiskerBoxDraw.prototype; + + /** + * Update symbols draw by new data + * @param {module:echarts/data/List} data + */ + whiskerBoxDrawProto.updateData = function (data) { + var group = this.group; + var oldData = this._data; + var styleUpdater = this.styleUpdater; + + data.diff(oldData) + .add(function (newIdx) { + if (data.hasValue(newIdx)) { + var symbolEl = new WhiskerBox(data, newIdx, styleUpdater, true); + data.setItemGraphicEl(newIdx, symbolEl); + group.add(symbolEl); + } + }) + .update(function (newIdx, oldIdx) { + var symbolEl = oldData.getItemGraphicEl(oldIdx); + + // Empty data + if (!data.hasValue(newIdx)) { + group.remove(symbolEl); + return; + } + + if (!symbolEl) { + symbolEl = new WhiskerBox(data, newIdx, styleUpdater); + } + else { + symbolEl.updateData(data, newIdx); + } + + // Add back + group.add(symbolEl); + + data.setItemGraphicEl(newIdx, symbolEl); + }) + .remove(function (oldIdx) { + var el = oldData.getItemGraphicEl(oldIdx); + el && group.remove(el); + }) + .execute(); + + this._data = data; + }; + + /** + * Remove symbols. + * @param {module:echarts/data/List} data + */ + whiskerBoxDrawProto.remove = function () { + var group = this.group; + var data = this._data; + this._data = null; + data && data.eachItemGraphicEl(function (el) { + el && group.remove(el); + }); + }; + + module.exports = WhiskerBoxDraw; + + +/***/ }, +/* 261 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + + var zrUtil = __webpack_require__(4); + var ChartView = __webpack_require__(80); + var graphic = __webpack_require__(18); + var whiskerBoxCommon = __webpack_require__(259); + + var BoxplotView = ChartView.extend({ + + type: 'boxplot', + + getStyleUpdater: function () { + return updateStyle; + }, + + dispose: zrUtil.noop + }); + + zrUtil.mixin(BoxplotView, whiskerBoxCommon.viewMixin, true); + + // Update common properties + var normalStyleAccessPath = ['itemStyle', 'normal']; + var emphasisStyleAccessPath = ['itemStyle', 'emphasis']; + + function updateStyle(itemGroup, data, idx) { + var itemModel = data.getItemModel(idx); + var normalItemStyleModel = itemModel.getModel(normalStyleAccessPath); + var borderColor = data.getItemVisual(idx, 'color'); + + // Exclude borderColor. + var itemStyle = normalItemStyleModel.getItemStyle(['borderColor']); + + var whiskerEl = itemGroup.childAt(itemGroup.whiskerIndex); + whiskerEl.style.set(itemStyle); + whiskerEl.style.stroke = borderColor; + whiskerEl.dirty(); + + var bodyEl = itemGroup.childAt(itemGroup.bodyIndex); + bodyEl.style.set(itemStyle); + bodyEl.style.stroke = borderColor; + bodyEl.dirty(); + + var hoverStyle = itemModel.getModel(emphasisStyleAccessPath).getItemStyle(); + graphic.setHoverStyle(itemGroup, hoverStyle); + } + + module.exports = BoxplotView; + + + +/***/ }, +/* 262 */ +/***/ function(module, exports) { + + + + var borderColorQuery = ['itemStyle', 'normal', 'borderColor']; + + module.exports = function (ecModel, api) { + + var globalColors = ecModel.get('color'); + + ecModel.eachRawSeriesByType('boxplot', function (seriesModel) { + + var defaulColor = globalColors[seriesModel.seriesIndex % globalColors.length]; + var data = seriesModel.getData(); + + data.setVisual({ + legendSymbol: 'roundRect', + // Use name 'color' but not 'borderColor' for legend usage and + // visual coding from other component like dataRange. + color: seriesModel.get(borderColorQuery) || defaulColor + }); + + // Only visible series has each data be visual encoded + if (!ecModel.isSeriesFiltered(seriesModel)) { + data.each(function (idx) { + var itemModel = data.getItemModel(idx); + data.setItemVisual( + idx, + {color: itemModel.get(borderColorQuery, true)} + ); + }); + } + }); + + }; + + +/***/ }, +/* 263 */ +/***/ function(module, exports, __webpack_require__) { + + + + var zrUtil = __webpack_require__(4); + var numberUtil = __webpack_require__(7); + var parsePercent = numberUtil.parsePercent; + var each = zrUtil.each; + + module.exports = function (ecModel) { + + var groupResult = groupSeriesByAxis(ecModel); + + each(groupResult, function (groupItem) { + var seriesModels = groupItem.seriesModels; + + if (!seriesModels.length) { + return; + } + + calculateBase(groupItem); + + each(seriesModels, function (seriesModel, idx) { + layoutSingleSeries( + seriesModel, + groupItem.boxOffsetList[idx], + groupItem.boxWidthList[idx] + ); + }); + }); + }; + + /** + * Group series by axis. + */ + function groupSeriesByAxis(ecModel) { + var result = []; + var axisList = []; + + ecModel.eachSeriesByType('boxplot', function (seriesModel) { + var baseAxis = seriesModel.getBaseAxis(); + var idx = zrUtil.indexOf(axisList, baseAxis); + + if (idx < 0) { + idx = axisList.length; + axisList[idx] = baseAxis; + result[idx] = {axis: baseAxis, seriesModels: []}; + } + + result[idx].seriesModels.push(seriesModel); + }); + + return result; + } + + /** + * Calculate offset and box width for each series. + */ + function calculateBase(groupItem) { + var extent; + var baseAxis = groupItem.axis; + var seriesModels = groupItem.seriesModels; + var seriesCount = seriesModels.length; + + var boxWidthList = groupItem.boxWidthList = []; + var boxOffsetList = groupItem.boxOffsetList = []; + var boundList = []; + + var bandWidth; + if (baseAxis.type === 'category') { + bandWidth = baseAxis.getBandWidth(); + } + else { + var maxDataCount = 0; + each(seriesModels, function (seriesModel) { + maxDataCount = Math.max(maxDataCount, seriesModel.getData().count()); + }); + extent = baseAxis.getExtent(), + Math.abs(extent[1] - extent[0]) / maxDataCount; + } + + each(seriesModels, function (seriesModel) { + var boxWidthBound = seriesModel.get('boxWidth'); + if (!zrUtil.isArray(boxWidthBound)) { + boxWidthBound = [boxWidthBound, boxWidthBound]; + } + boundList.push([ + parsePercent(boxWidthBound[0], bandWidth) || 0, + parsePercent(boxWidthBound[1], bandWidth) || 0 + ]); + }); + + var availableWidth = bandWidth * 0.8 - 2; + var boxGap = availableWidth / seriesCount * 0.3; + var boxWidth = (availableWidth - boxGap * (seriesCount - 1)) / seriesCount; + var base = boxWidth / 2 - availableWidth / 2; + + each(seriesModels, function (seriesModel, idx) { + boxOffsetList.push(base); + base += boxGap + boxWidth; + + boxWidthList.push( + Math.min(Math.max(boxWidth, boundList[idx][0]), boundList[idx][1]) + ); + }); + } + + /** + * Calculate points location for each series. + */ + function layoutSingleSeries(seriesModel, offset, boxWidth) { + var coordSys = seriesModel.coordinateSystem; + var data = seriesModel.getData(); + var halfWidth = boxWidth / 2; + var chartLayout = seriesModel.get('layout'); + var variableDim = chartLayout === 'horizontal' ? 0 : 1; + var constDim = 1 - variableDim; + var coordDims = ['x', 'y']; + var vDims = []; + var cDim; + + zrUtil.each(data.dimensions, function (dimName) { + var dimInfo = data.getDimensionInfo(dimName); + var coordDim = dimInfo.coordDim; + if (coordDim === coordDims[constDim]) { + vDims.push(dimName); + } + else if (coordDim === coordDims[variableDim]) { + cDim = dimName; + } + }); + + if (cDim == null || vDims.length < 5) { + return; + } + + data.each([cDim].concat(vDims), function () { + var args = arguments; + var axisDimVal = args[0]; + var idx = args[vDims.length + 1]; + + var median = getPoint(args[3]); + var end1 = getPoint(args[1]); + var end5 = getPoint(args[5]); + var whiskerEnds = [ + [end1, getPoint(args[2])], + [end5, getPoint(args[4])] + ]; + layEndLine(end1); + layEndLine(end5); + layEndLine(median); + + var bodyEnds = []; + addBodyEnd(whiskerEnds[0][1], 0); + addBodyEnd(whiskerEnds[1][1], 1); + + data.setItemLayout(idx, { + chartLayout: chartLayout, + initBaseline: median[constDim], + median: median, + bodyEnds: bodyEnds, + whiskerEnds: whiskerEnds + }); + + function getPoint(val) { + var p = []; + p[variableDim] = axisDimVal; + p[constDim] = val; + var point; + if (isNaN(axisDimVal) || isNaN(val)) { + point = [NaN, NaN]; + } + else { + point = coordSys.dataToPoint(p); + point[variableDim] += offset; + } + return point; + } + + function addBodyEnd(point, start) { + var point1 = point.slice(); + var point2 = point.slice(); + point1[variableDim] += halfWidth; + point2[variableDim] -= halfWidth; + start + ? bodyEnds.push(point1, point2) + : bodyEnds.push(point2, point1); + } + + function layEndLine(endCenter) { + var line = [endCenter.slice(), endCenter.slice()]; + line[0][variableDim] -= halfWidth; + line[1][variableDim] += halfWidth; + whiskerEnds.push(line); + } + }); + } + + + +/***/ }, +/* 264 */ +/***/ function(module, exports, __webpack_require__) { + + + + var echarts = __webpack_require__(1); + + __webpack_require__(265); + __webpack_require__(266); + + echarts.registerPreprocessor( + __webpack_require__(267) + ); + + echarts.registerVisual(__webpack_require__(268)); + echarts.registerLayout(__webpack_require__(269)); + + + +/***/ }, +/* 265 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + + var zrUtil = __webpack_require__(4); + var SeriesModel = __webpack_require__(78); + var whiskerBoxCommon = __webpack_require__(259); + + var CandlestickSeries = SeriesModel.extend({ + + type: 'series.candlestick', + + dependencies: ['xAxis', 'yAxis', 'grid'], + + /** + * @readOnly + */ + defaultValueDimensions: ['open', 'close', 'lowest', 'highest'], + + /** + * @type {Array.} + * @readOnly + */ + dimensions: null, + + /** + * @override + */ + defaultOption: { + zlevel: 0, // 一级层叠 + z: 2, // 二级层叠 + coordinateSystem: 'cartesian2d', + legendHoverLink: true, + + hoverAnimation: true, + + // xAxisIndex: 0, + // yAxisIndex: 0, + + layout: null, // 'horizontal' or 'vertical' + + itemStyle: { + normal: { + color: '#c23531', // 阳线 positive + color0: '#314656', // 阴线 negative '#c23531', '#314656' + borderWidth: 1, + // FIXME + // ec2中使用的是lineStyle.color 和 lineStyle.color0 + borderColor: '#c23531', + borderColor0: '#314656' + }, + emphasis: { + borderWidth: 2 + } + }, + + barMaxWidth: null, + barMinWidth: null, + barWidth: null, + + animationUpdate: false, + animationEasing: 'linear', + animationDuration: 300 + }, + + /** + * Get dimension for shadow in dataZoom + * @return {string} dimension name + */ + getShadowDim: function () { + return 'open'; + }, + + brushSelector: function (dataIndex, data, selectors) { + var itemLayout = data.getItemLayout(dataIndex); + return selectors.rect(itemLayout.brushRect); + } + + }); + + zrUtil.mixin(CandlestickSeries, whiskerBoxCommon.seriesModelMixin, true); + + module.exports = CandlestickSeries; + + + +/***/ }, +/* 266 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + + var zrUtil = __webpack_require__(4); + var ChartView = __webpack_require__(80); + var graphic = __webpack_require__(18); + var whiskerBoxCommon = __webpack_require__(259); + + var CandlestickView = ChartView.extend({ + + type: 'candlestick', + + getStyleUpdater: function () { + return updateStyle; + }, + + dispose: zrUtil.noop + }); + + zrUtil.mixin(CandlestickView, whiskerBoxCommon.viewMixin, true); + + // Update common properties + var normalStyleAccessPath = ['itemStyle', 'normal']; + var emphasisStyleAccessPath = ['itemStyle', 'emphasis']; + + function updateStyle(itemGroup, data, idx) { + var itemModel = data.getItemModel(idx); + var normalItemStyleModel = itemModel.getModel(normalStyleAccessPath); + var color = data.getItemVisual(idx, 'color'); + var borderColor = data.getItemVisual(idx, 'borderColor') || color; + + // Color must be excluded. + // Because symbol provide setColor individually to set fill and stroke + var itemStyle = normalItemStyleModel.getItemStyle( + ['color', 'color0', 'borderColor', 'borderColor0'] + ); + + var whiskerEl = itemGroup.childAt(itemGroup.whiskerIndex); + whiskerEl.useStyle(itemStyle); + whiskerEl.style.stroke = borderColor; + + var bodyEl = itemGroup.childAt(itemGroup.bodyIndex); + bodyEl.useStyle(itemStyle); + bodyEl.style.fill = color; + bodyEl.style.stroke = borderColor; + + var hoverStyle = itemModel.getModel(emphasisStyleAccessPath).getItemStyle(); + graphic.setHoverStyle(itemGroup, hoverStyle); + } + + + module.exports = CandlestickView; + + + +/***/ }, +/* 267 */ +/***/ function(module, exports, __webpack_require__) { + + + + var zrUtil = __webpack_require__(4); + + module.exports = function (option) { + if (!option || !zrUtil.isArray(option.series)) { + return; + } + + // Translate 'k' to 'candlestick'. + zrUtil.each(option.series, function (seriesItem) { + if (zrUtil.isObject(seriesItem) && seriesItem.type === 'k') { + seriesItem.type = 'candlestick'; + } + }); + }; + + + +/***/ }, +/* 268 */ +/***/ function(module, exports) { + + + + var positiveBorderColorQuery = ['itemStyle', 'normal', 'borderColor']; + var negativeBorderColorQuery = ['itemStyle', 'normal', 'borderColor0']; + var positiveColorQuery = ['itemStyle', 'normal', 'color']; + var negativeColorQuery = ['itemStyle', 'normal', 'color0']; + + module.exports = function (ecModel, api) { + + ecModel.eachRawSeriesByType('candlestick', function (seriesModel) { + + var data = seriesModel.getData(); + + data.setVisual({ + legendSymbol: 'roundRect' + }); + + // Only visible series has each data be visual encoded + if (!ecModel.isSeriesFiltered(seriesModel)) { + data.each(function (idx) { + var itemModel = data.getItemModel(idx); + var sign = data.getItemLayout(idx).sign; + + data.setItemVisual( + idx, + { + color: itemModel.get( + sign > 0 ? positiveColorQuery : negativeColorQuery + ), + borderColor: itemModel.get( + sign > 0 ? positiveBorderColorQuery : negativeBorderColorQuery + ) + } + ); + }); + } + }); + + }; + + +/***/ }, +/* 269 */ +/***/ function(module, exports, __webpack_require__) { + + + + var zrUtil = __webpack_require__(4); + var retrieve = __webpack_require__(4).retrieve; + var parsePercent = __webpack_require__(7).parsePercent; + + module.exports = function (ecModel) { + + ecModel.eachSeriesByType('candlestick', function (seriesModel) { + + var coordSys = seriesModel.coordinateSystem; + var data = seriesModel.getData(); + var candleWidth = calculateCandleWidth(seriesModel, data); + var chartLayout = seriesModel.get('layout'); + var variableDim = chartLayout === 'horizontal' ? 0 : 1; + var constDim = 1 - variableDim; + var coordDims = ['x', 'y']; + var vDims = []; + var cDim; + + zrUtil.each(data.dimensions, function (dimName) { + var dimInfo = data.getDimensionInfo(dimName); + var coordDim = dimInfo.coordDim; + if (coordDim === coordDims[constDim]) { + vDims.push(dimName); + } + else if (coordDim === coordDims[variableDim]) { + cDim = dimName; + } + }); + + if (cDim == null || vDims.length < 4) { + return; + } + + data.each([cDim].concat(vDims), function () { + var args = arguments; + var axisDimVal = args[0]; + var idx = args[vDims.length + 1]; + + var openVal = args[1]; + var closeVal = args[2]; + var lowestVal = args[3]; + var highestVal = args[4]; + + var ocLow = Math.min(openVal, closeVal); + var ocHigh = Math.max(openVal, closeVal); + + var ocLowPoint = getPoint(ocLow); + var ocHighPoint = getPoint(ocHigh); + var lowestPoint = getPoint(lowestVal); + var highestPoint = getPoint(highestVal); + + var whiskerEnds = [ + [highestPoint, ocHighPoint], + [lowestPoint, ocLowPoint] + ]; + + var bodyEnds = []; + addBodyEnd(ocHighPoint, 0); + addBodyEnd(ocLowPoint, 1); + + data.setItemLayout(idx, { + chartLayout: chartLayout, + sign: openVal > closeVal ? -1 : openVal < closeVal ? 1 : 0, + initBaseline: openVal > closeVal + ? ocHighPoint[constDim] : ocLowPoint[constDim], // open point. + bodyEnds: bodyEnds, + whiskerEnds: whiskerEnds, + brushRect: makeBrushRect() + }); + + function getPoint(val) { + var p = []; + p[variableDim] = axisDimVal; + p[constDim] = val; + return (isNaN(axisDimVal) || isNaN(val)) + ? [NaN, NaN] + : coordSys.dataToPoint(p); + } + + function addBodyEnd(point, start) { + var point1 = point.slice(); + var point2 = point.slice(); + point1[variableDim] += candleWidth / 2; + point2[variableDim] -= candleWidth / 2; + start + ? bodyEnds.push(point1, point2) + : bodyEnds.push(point2, point1); + } + + function makeBrushRect() { + var pmin = getPoint(Math.min(openVal, closeVal, lowestVal, highestVal)); + var pmax = getPoint(Math.max(openVal, closeVal, lowestVal, highestVal)); + + pmin[variableDim] -= candleWidth / 2; + pmax[variableDim] -= candleWidth / 2; + + return { + x: pmin[0], + y: pmin[1], + width: constDim ? candleWidth : pmax[0] - pmin[0], + height: constDim ? pmax[1] - pmin[1] : candleWidth + }; + } + + }, true); + }); + }; + + function calculateCandleWidth(seriesModel, data) { + var baseAxis = seriesModel.getBaseAxis(); + var extent; + + var bandWidth = baseAxis.type === 'category' + ? baseAxis.getBandWidth() + : ( + extent = baseAxis.getExtent(), + Math.abs(extent[1] - extent[0]) / data.count() + ); + + var barMaxWidth = parsePercent( + retrieve(seriesModel.get('barMaxWidth'), bandWidth), + bandWidth + ); + var barMinWidth = parsePercent( + retrieve(seriesModel.get('barMinWidth'), 1), + bandWidth + ); + var barWidth = seriesModel.get('barWidth'); + return barWidth != null + ? parsePercent(barWidth, bandWidth) + // Put max outer to ensure bar visible in spite of overlap. + : Math.max(Math.min(bandWidth / 2, barMaxWidth), barMinWidth); + } + + + +/***/ }, +/* 270 */ +/***/ function(module, exports, __webpack_require__) { + + + + var zrUtil = __webpack_require__(4); + var echarts = __webpack_require__(1); + + __webpack_require__(271); + __webpack_require__(272); + + echarts.registerVisual(zrUtil.curry( + __webpack_require__(121), 'effectScatter', 'circle', null + )); + echarts.registerLayout(zrUtil.curry( + __webpack_require__(122), 'effectScatter' + )); + + +/***/ }, +/* 271 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + + var createListFromArray = __webpack_require__(109); + var SeriesModel = __webpack_require__(78); + + module.exports = SeriesModel.extend({ + + type: 'series.effectScatter', + + dependencies: ['grid', 'polar'], + + getInitialData: function (option, ecModel) { + var list = createListFromArray(option.data, this, ecModel); + return list; + }, + + brushSelector: 'point', + + defaultOption: { + coordinateSystem: 'cartesian2d', + zlevel: 0, + z: 2, + legendHoverLink: true, + + effectType: 'ripple', + + progressive: 0, + + // When to show the effect, option: 'render'|'emphasis' + showEffectOn: 'render', + + // Ripple effect config + rippleEffect: { + period: 4, + // Scale of ripple + scale: 2.5, + // Brush type can be fill or stroke + brushType: 'fill' + }, + + // Cartesian coordinate system + // xAxisIndex: 0, + // yAxisIndex: 0, + + // Polar coordinate system + // polarIndex: 0, + + // Geo coordinate system + // geoIndex: 0, + + // symbol: null, // 图形类型 + symbolSize: 10 // 图形大小,半宽(半径)参数,当图形为方向或菱形则总宽度为symbolSize * 2 + // symbolRotate: null, // 图形旋转控制 + + // large: false, + // Available when large is true + // largeThreshold: 2000, + + // itemStyle: { + // normal: { + // opacity: 1 + // } + // } + } + + }); + + +/***/ }, +/* 272 */ +/***/ function(module, exports, __webpack_require__) { + + + + var SymbolDraw = __webpack_require__(116); + var EffectSymbol = __webpack_require__(273); + + __webpack_require__(1).extendChartView({ + + type: 'effectScatter', + + init: function () { + this._symbolDraw = new SymbolDraw(EffectSymbol); + }, + + render: function (seriesModel, ecModel, api) { + var data = seriesModel.getData(); + var effectSymbolDraw = this._symbolDraw; + effectSymbolDraw.updateData(data); + this.group.add(effectSymbolDraw.group); + }, + + updateLayout: function () { + this._symbolDraw.updateLayout(); + }, + + remove: function (ecModel, api) { + this._symbolDraw && this._symbolDraw.remove(api); + }, + + dispose: function () {} + }); + + +/***/ }, +/* 273 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * Symbol with ripple effect + * @module echarts/chart/helper/EffectSymbol + */ + + + var zrUtil = __webpack_require__(4); + var symbolUtil = __webpack_require__(111); + var graphic = __webpack_require__(18); + var numberUtil = __webpack_require__(7); + var Symbol = __webpack_require__(117); + var Group = graphic.Group; + + var EFFECT_RIPPLE_NUMBER = 3; + + function normalizeSymbolSize(symbolSize) { + if (!zrUtil.isArray(symbolSize)) { + symbolSize = [+symbolSize, +symbolSize]; + } + return symbolSize; + } + + function updateRipplePath(rippleGroup, effectCfg) { + rippleGroup.eachChild(function (ripplePath) { + ripplePath.attr({ + z: effectCfg.z, + zlevel: effectCfg.zlevel, + style: { + stroke: effectCfg.brushType === 'stroke' ? effectCfg.color : null, + fill: effectCfg.brushType === 'fill' ? effectCfg.color : null + } + }); + }); + } + /** + * @constructor + * @param {module:echarts/data/List} data + * @param {number} idx + * @extends {module:zrender/graphic/Group} + */ + function EffectSymbol(data, idx) { + Group.call(this); + + var symbol = new Symbol(data, idx); + var rippleGroup = new Group(); + this.add(symbol); + this.add(rippleGroup); + + rippleGroup.beforeUpdate = function () { + this.attr(symbol.getScale()); + }; + this.updateData(data, idx); + } + + var effectSymbolProto = EffectSymbol.prototype; + + effectSymbolProto.stopEffectAnimation = function () { + this.childAt(1).removeAll(); + }; + + effectSymbolProto.startEffectAnimation = function (effectCfg) { + var symbolType = effectCfg.symbolType; + var color = effectCfg.color; + var rippleGroup = this.childAt(1); + + for (var i = 0; i < EFFECT_RIPPLE_NUMBER; i++) { + // var ripplePath = symbolUtil.createSymbol( + // symbolType, -0.5, -0.5, 1, 1, color + // ); + // If width/height are set too small (e.g., set to 1) on ios10 + // and macOS Sierra, a circle stroke become a rect, no matter what + // the scale is set. So we set width/height as 2. See #4136. + var ripplePath = symbolUtil.createSymbol( + symbolType, -1, -1, 2, 2, color + ); + ripplePath.attr({ + style: { + strokeNoScale: true + }, + z2: 99, + silent: true, + scale: [0.5, 0.5] + }); + + var delay = -i / EFFECT_RIPPLE_NUMBER * effectCfg.period + effectCfg.effectOffset; + // TODO Configurable effectCfg.period + ripplePath.animate('', true) + .when(effectCfg.period, { + scale: [effectCfg.rippleScale / 2, effectCfg.rippleScale / 2] + }) + .delay(delay) + .start(); + ripplePath.animateStyle(true) + .when(effectCfg.period, { + opacity: 0 + }) + .delay(delay) + .start(); + + rippleGroup.add(ripplePath); + } + + updateRipplePath(rippleGroup, effectCfg); + }; + + /** + * Update effect symbol + */ + effectSymbolProto.updateEffectAnimation = function (effectCfg) { + var oldEffectCfg = this._effectCfg; + var rippleGroup = this.childAt(1); + + // Must reinitialize effect if following configuration changed + var DIFFICULT_PROPS = ['symbolType', 'period', 'rippleScale']; + for (var i = 0; i < DIFFICULT_PROPS; i++) { + var propName = DIFFICULT_PROPS[i]; + if (oldEffectCfg[propName] !== effectCfg[propName]) { + this.stopEffectAnimation(); + this.startEffectAnimation(effectCfg); + return; + } + } + + updateRipplePath(rippleGroup, effectCfg); + }; + + /** + * Highlight symbol + */ + effectSymbolProto.highlight = function () { + this.trigger('emphasis'); + }; + + /** + * Downplay symbol + */ + effectSymbolProto.downplay = function () { + this.trigger('normal'); + }; + + /** + * Update symbol properties + * @param {module:echarts/data/List} data + * @param {number} idx + */ + effectSymbolProto.updateData = function (data, idx) { + var seriesModel = data.hostModel; + + this.childAt(0).updateData(data, idx); + + var rippleGroup = this.childAt(1); + var itemModel = data.getItemModel(idx); + var symbolType = data.getItemVisual(idx, 'symbol'); + var symbolSize = normalizeSymbolSize(data.getItemVisual(idx, 'symbolSize')); + var color = data.getItemVisual(idx, 'color'); + + rippleGroup.attr('scale', symbolSize); + + rippleGroup.traverse(function (ripplePath) { + ripplePath.attr({ + fill: color + }); + }); + + var symbolOffset = itemModel.getShallow('symbolOffset'); + if (symbolOffset) { + var pos = rippleGroup.position; + pos[0] = numberUtil.parsePercent(symbolOffset[0], symbolSize[0]); + pos[1] = numberUtil.parsePercent(symbolOffset[1], symbolSize[1]); + } + rippleGroup.rotation = (itemModel.getShallow('symbolRotate') || 0) * Math.PI / 180 || 0; + + var effectCfg = {}; + + effectCfg.showEffectOn = seriesModel.get('showEffectOn'); + effectCfg.rippleScale = itemModel.get('rippleEffect.scale'); + effectCfg.brushType = itemModel.get('rippleEffect.brushType'); + effectCfg.period = itemModel.get('rippleEffect.period') * 1000; + effectCfg.effectOffset = idx / data.count(); + effectCfg.z = itemModel.getShallow('z') || 0; + effectCfg.zlevel = itemModel.getShallow('zlevel') || 0; + effectCfg.symbolType = symbolType; + effectCfg.color = color; + + this.off('mouseover').off('mouseout').off('emphasis').off('normal'); + + if (effectCfg.showEffectOn === 'render') { + this._effectCfg + ? this.updateEffectAnimation(effectCfg) + : this.startEffectAnimation(effectCfg); + + this._effectCfg = effectCfg; + } + else { + // Not keep old effect config + this._effectCfg = null; + + this.stopEffectAnimation(); + var symbol = this.childAt(0); + var onEmphasis = function () { + symbol.trigger('emphasis'); + if (effectCfg.showEffectOn !== 'render') { + this.startEffectAnimation(effectCfg); + } + }; + var onNormal = function () { + symbol.trigger('normal'); + if (effectCfg.showEffectOn !== 'render') { + this.stopEffectAnimation(); + } + }; + this.on('mouseover', onEmphasis, this) + .on('mouseout', onNormal, this) + .on('emphasis', onEmphasis, this) + .on('normal', onNormal, this); + } + + this._effectCfg = effectCfg; + }; + + effectSymbolProto.fadeOut = function (cb) { + this.off('mouseover').off('mouseout').off('emphasis').off('normal'); + cb && cb(); + }; + + zrUtil.inherits(EffectSymbol, Group); + + module.exports = EffectSymbol; + + +/***/ }, +/* 274 */ +/***/ function(module, exports, __webpack_require__) { + + + + __webpack_require__(275); + __webpack_require__(276); + + var echarts = __webpack_require__(1); + echarts.registerLayout( + __webpack_require__(281) + ); + echarts.registerVisual( + __webpack_require__(282) + ); + + +/***/ }, +/* 275 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + + var SeriesModel = __webpack_require__(78); + var List = __webpack_require__(98); + var zrUtil = __webpack_require__(4); + var formatUtil = __webpack_require__(6); + var CoordinateSystem = __webpack_require__(76); + + // Convert [ [{coord: []}, {coord: []}] ] + // to [ { coords: [[]] } ] + function preprocessOption (seriesOpt) { + var data = seriesOpt.data; + if (data && data[0] && data[0][0] && data[0][0].coord) { + if (true) { + console.warn('Lines data configuration has been changed to' + + ' { coords:[[1,2],[2,3]] }'); + } + seriesOpt.data = zrUtil.map(data, function (itemOpt) { + var coords = [ + itemOpt[0].coord, itemOpt[1].coord + ]; + var target = { + coords: coords + }; + if (itemOpt[0].name) { + target.fromName = itemOpt[0].name; + } + if (itemOpt[1].name) { + target.toName = itemOpt[1].name; + } + return zrUtil.mergeAll([target, itemOpt[0], itemOpt[1]]); + }); + } + } + + var LinesSeries = SeriesModel.extend({ + + type: 'series.lines', + + dependencies: ['grid', 'polar'], + + visualColorAccessPath: 'lineStyle.normal.color', + + init: function (option) { + // Not using preprocessor because mergeOption may not have series.type + preprocessOption(option); + + LinesSeries.superApply(this, 'init', arguments); + }, + + mergeOption: function (option) { + preprocessOption(option); + + LinesSeries.superApply(this, 'mergeOption', arguments); + }, + + getInitialData: function (option, ecModel) { + if (true) { + var CoordSys = CoordinateSystem.get(option.coordinateSystem); + if (!CoordSys) { + throw new Error('Unkown coordinate system ' + option.coordinateSystem); + } + } + + var lineData = new List(['value'], this); + lineData.hasItemOption = false; + lineData.initData(option.data, [], function (dataItem, dimName, dataIndex, dimIndex) { + // dataItem is simply coords + if (dataItem instanceof Array) { + return NaN; + } + else { + lineData.hasItemOption = true; + var value = dataItem.value; + if (value != null) { + return value instanceof Array ? value[dimIndex] : value; + } + } + }); + + return lineData; + }, + + formatTooltip: function (dataIndex) { + var data = this.getData(); + var itemModel = data.getItemModel(dataIndex); + var name = itemModel.get('name'); + if (name) { + return name; + } + var fromName = itemModel.get('fromName'); + var toName = itemModel.get('toName'); + var html = []; + fromName != null && html.push(fromName); + toName != null && html.push(toName); + + return formatUtil.encodeHTML(html.join(' > ')); + }, + + defaultOption: { + coordinateSystem: 'geo', + zlevel: 0, + z: 2, + legendHoverLink: true, + + hoverAnimation: true, + // Cartesian coordinate system + xAxisIndex: 0, + yAxisIndex: 0, + + symbol: ['none', 'none'], + symbolSize: [10, 10], + // Geo coordinate system + geoIndex: 0, + + effect: { + show: false, + period: 4, + // Animation delay. support callback + // delay: 0, + // If move with constant speed px/sec + // period will be ignored if this property is > 0, + constantSpeed: 0, + symbol: 'circle', + symbolSize: 3, + loop: true, + // Length of trail, 0 - 1 + trailLength: 0.2 + // Same with lineStyle.normal.color + // color + }, + + large: false, + // Available when large is true + largeThreshold: 2000, + + // If lines are polyline + // polyline not support curveness, label, animation + polyline: false, + + label: { + normal: { + show: false, + position: 'end' + // distance: 5, + // formatter: 标签文本格式器,同Tooltip.formatter,不支持异步回调 + } + }, + + lineStyle: { + normal: { + opacity: 0.5 + } + } + } + }); + + +/***/ }, +/* 276 */ +/***/ function(module, exports, __webpack_require__) { + + + + var LineDraw = __webpack_require__(210); + var EffectLine = __webpack_require__(277); + var Line = __webpack_require__(211); + var Polyline = __webpack_require__(278); + var EffectPolyline = __webpack_require__(279); + var LargeLineDraw = __webpack_require__(280); + + __webpack_require__(1).extendChartView({ + + type: 'lines', + + init: function () {}, + + render: function (seriesModel, ecModel, api) { + var data = seriesModel.getData(); + var lineDraw = this._lineDraw; + + var hasEffect = seriesModel.get('effect.show'); + var isPolyline = seriesModel.get('polyline'); + var isLarge = seriesModel.get('large') && data.count() >= seriesModel.get('largeThreshold'); + + if (true) { + if (hasEffect && isLarge) { + console.warn('Large lines not support effect'); + } + } + if (hasEffect !== this._hasEffet || isPolyline !== this._isPolyline || isLarge !== this._isLarge) { + if (lineDraw) { + lineDraw.remove(); + } + lineDraw = this._lineDraw = isLarge + ? new LargeLineDraw() + : new LineDraw( + isPolyline + ? (hasEffect ? EffectPolyline : Polyline) + : (hasEffect ? EffectLine : Line) + ); + this._hasEffet = hasEffect; + this._isPolyline = isPolyline; + this._isLarge = isLarge; + } + + var zlevel = seriesModel.get('zlevel'); + var trailLength = seriesModel.get('effect.trailLength'); + + var zr = api.getZr(); + // Avoid the drag cause ghost shadow + // FIXME Better way ? + zr.painter.getLayer(zlevel).clear(true); + // Config layer with motion blur + if (this._lastZlevel != null) { + zr.configLayer(this._lastZlevel, { + motionBlur: false + }); + } + if (hasEffect && trailLength) { + if (true) { + var notInIndividual = false; + ecModel.eachSeries(function (otherSeriesModel) { + if (otherSeriesModel !== seriesModel && otherSeriesModel.get('zlevel') === zlevel) { + notInIndividual = true; + } + }); + notInIndividual && console.warn('Lines with trail effect should have an individual zlevel'); + } + + zr.configLayer(zlevel, { + motionBlur: true, + lastFrameAlpha: Math.max(Math.min(trailLength / 10 + 0.9, 1), 0) + }); + } + + this.group.add(lineDraw.group); + + lineDraw.updateData(data); + + this._lastZlevel = zlevel; + }, + + updateLayout: function (seriesModel, ecModel, api) { + this._lineDraw.updateLayout(seriesModel); + // Not use motion when dragging or zooming + var zr = api.getZr(); + zr.painter.getLayer(this._lastZlevel).clear(true); + }, + + remove: function (ecModel, api) { + this._lineDraw && this._lineDraw.remove(api, true); + }, + + dispose: function () {} + }); + + +/***/ }, +/* 277 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * Provide effect for line + * @module echarts/chart/helper/EffectLine + */ + + + var graphic = __webpack_require__(18); + var Line = __webpack_require__(211); + var zrUtil = __webpack_require__(4); + var symbolUtil = __webpack_require__(111); + var vec2 = __webpack_require__(10); + + var curveUtil = __webpack_require__(37); + + /** + * @constructor + * @extends {module:zrender/graphic/Group} + * @alias {module:echarts/chart/helper/Line} + */ + function EffectLine(lineData, idx, seriesScope) { + graphic.Group.call(this); + + this.add(this.createLine(lineData, idx, seriesScope)); + + this._updateEffectSymbol(lineData, idx); + } + + var effectLineProto = EffectLine.prototype; + + effectLineProto.createLine = function (lineData, idx, seriesScope) { + return new Line(lineData, idx, seriesScope); + }; + + effectLineProto._updateEffectSymbol = function (lineData, idx) { + var itemModel = lineData.getItemModel(idx); + var effectModel = itemModel.getModel('effect'); + var size = effectModel.get('symbolSize'); + var symbolType = effectModel.get('symbol'); + if (!zrUtil.isArray(size)) { + size = [size, size]; + } + var color = effectModel.get('color') || lineData.getItemVisual(idx, 'color'); + var symbol = this.childAt(1); + + if (this._symbolType !== symbolType) { + // Remove previous + this.remove(symbol); + + symbol = symbolUtil.createSymbol( + symbolType, -0.5, -0.5, 1, 1, color + ); + symbol.z2 = 100; + symbol.culling = true; + + this.add(symbol); + } + + // Symbol may be removed if loop is false + if (!symbol) { + return; + } + + // Shadow color is same with color in default + symbol.setStyle('shadowColor', color); + symbol.setStyle(effectModel.getItemStyle(['color'])); + + symbol.attr('scale', size); + + symbol.setColor(color); + symbol.attr('scale', size); + + this._symbolType = symbolType; + + this._updateEffectAnimation(lineData, effectModel, idx); + }; + + effectLineProto._updateEffectAnimation = function (lineData, effectModel, idx) { + + var symbol = this.childAt(1); + if (!symbol) { + return; + } + + var self = this; + + var points = lineData.getItemLayout(idx); + + var period = effectModel.get('period') * 1000; + var loop = effectModel.get('loop'); + var constantSpeed = effectModel.get('constantSpeed'); + var delayExpr = zrUtil.retrieve(effectModel.get('delay'), function (idx) { + return idx / lineData.count() * period / 3; + }); + var isDelayFunc = typeof delayExpr === 'function'; + + // Ignore when updating + symbol.ignore = true; + + this.updateAnimationPoints(symbol, points); + + if (constantSpeed > 0) { + period = this.getLineLength(symbol) / constantSpeed * 1000; + } + + if (period !== this._period || loop !== this._loop) { + + symbol.stopAnimation(); + + var delay = delayExpr; + if (isDelayFunc) { + delay = delayExpr(idx); + } + if (symbol.__t > 0) { + delay = -period * symbol.__t; + } + symbol.__t = 0; + var animator = symbol.animate('', loop) + .when(period, { + __t: 1 + }) + .delay(delay) + .during(function () { + self.updateSymbolPosition(symbol); + }); + if (!loop) { + animator.done(function () { + self.remove(symbol); + }); + } + animator.start(); + } + + this._period = period; + this._loop = loop; + }; + + effectLineProto.getLineLength = function (symbol) { + // Not so accurate + return (vec2.dist(symbol.__p1, symbol.__cp1) + + vec2.dist(symbol.__cp1, symbol.__p2)); + }; + + effectLineProto.updateAnimationPoints = function (symbol, points) { + symbol.__p1 = points[0]; + symbol.__p2 = points[1]; + symbol.__cp1 = points[2] || [ + (points[0][0] + points[1][0]) / 2, + (points[0][1] + points[1][1]) / 2 + ]; + }; + + effectLineProto.updateData = function (lineData, idx, seriesScope) { + this.childAt(0).updateData(lineData, idx, seriesScope); + this._updateEffectSymbol(lineData, idx); + }; + + effectLineProto.updateSymbolPosition = function (symbol) { + var p1 = symbol.__p1; + var p2 = symbol.__p2; + var cp1 = symbol.__cp1; + var t = symbol.__t; + var pos = symbol.position; + var quadraticAt = curveUtil.quadraticAt; + var quadraticDerivativeAt = curveUtil.quadraticDerivativeAt; + pos[0] = quadraticAt(p1[0], cp1[0], p2[0], t); + pos[1] = quadraticAt(p1[1], cp1[1], p2[1], t); + + // Tangent + var tx = quadraticDerivativeAt(p1[0], cp1[0], p2[0], t); + var ty = quadraticDerivativeAt(p1[1], cp1[1], p2[1], t); + + symbol.rotation = -Math.atan2(ty, tx) - Math.PI / 2; + + symbol.ignore = false; + }; + + + effectLineProto.updateLayout = function (lineData, idx) { + this.childAt(0).updateLayout(lineData, idx); + + var effectModel = lineData.getItemModel(idx).getModel('effect'); + this._updateEffectAnimation(lineData, effectModel, idx); + }; + + zrUtil.inherits(EffectLine, graphic.Group); + + module.exports = EffectLine; + + +/***/ }, +/* 278 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * @module echarts/chart/helper/Line + */ + + + var graphic = __webpack_require__(18); + var zrUtil = __webpack_require__(4); + + /** + * @constructor + * @extends {module:zrender/graphic/Group} + * @alias {module:echarts/chart/helper/Polyline} + */ + function Polyline(lineData, idx, seriesScope) { + graphic.Group.call(this); + + this._createPolyline(lineData, idx, seriesScope); + } + + var polylineProto = Polyline.prototype; + + polylineProto._createPolyline = function (lineData, idx, seriesScope) { + // var seriesModel = lineData.hostModel; + var points = lineData.getItemLayout(idx); + + var line = new graphic.Polyline({ + shape: { + points: points + } + }); + + this.add(line); + + this._updateCommonStl(lineData, idx, seriesScope); + }; + + polylineProto.updateData = function (lineData, idx, seriesScope) { + var seriesModel = lineData.hostModel; + + var line = this.childAt(0); + var target = { + shape: { + points: lineData.getItemLayout(idx) + } + }; + graphic.updateProps(line, target, seriesModel, idx); + + this._updateCommonStl(lineData, idx, seriesScope); + }; + + polylineProto._updateCommonStl = function (lineData, idx, seriesScope) { + var line = this.childAt(0); + var itemModel = lineData.getItemModel(idx); + + var visualColor = lineData.getItemVisual(idx, 'color'); + + var lineStyle = seriesScope && seriesScope.lineStyle; + var hoverLineStyle = seriesScope && seriesScope.hoverLineStyle; + + if (!seriesScope || lineData.hasItemOption) { + lineStyle = itemModel.getModel('lineStyle.normal').getLineStyle(); + hoverLineStyle = itemModel.getModel('lineStyle.emphasis').getLineStyle(); + } + line.useStyle(zrUtil.defaults( + { + strokeNoScale: true, + fill: 'none', + stroke: visualColor + }, + lineStyle + )); + line.hoverStyle = hoverLineStyle; + + graphic.setHoverStyle(this); + }; + + polylineProto.updateLayout = function (lineData, idx) { + var polyline = this.childAt(0); + polyline.setShape('points', lineData.getItemLayout(idx)); + }; + + zrUtil.inherits(Polyline, graphic.Group); + + module.exports = Polyline; + + +/***/ }, +/* 279 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * Provide effect for line + * @module echarts/chart/helper/EffectLine + */ + + + var Polyline = __webpack_require__(278); + var zrUtil = __webpack_require__(4); + var EffectLine = __webpack_require__(277); + var vec2 = __webpack_require__(10); + + /** + * @constructor + * @extends {module:echarts/chart/helper/EffectLine} + * @alias {module:echarts/chart/helper/Polyline} + */ + function EffectPolyline(lineData, idx, seriesScope) { + EffectLine.call(this, lineData, idx, seriesScope); + this._lastFrame = 0; + this._lastFramePercent = 0; + } + + var effectPolylineProto = EffectPolyline.prototype; + + // Overwrite + effectPolylineProto.createLine = function (lineData, idx, seriesScope) { + return new Polyline(lineData, idx, seriesScope); + }; + + // Overwrite + effectPolylineProto.updateAnimationPoints = function (symbol, points) { + this._points = points; + var accLenArr = [0]; + var len = 0; + for (var i = 1; i < points.length; i++) { + var p1 = points[i - 1]; + var p2 = points[i]; + len += vec2.dist(p1, p2); + accLenArr.push(len); + } + if (len === 0) { + return; + } + + for (var i = 0; i < accLenArr.length; i++) { + accLenArr[i] /= len; + } + this._offsets = accLenArr; + this._length = len; + }; + + // Overwrite + effectPolylineProto.getLineLength = function (symbol) { + return this._length; + }; + + // Overwrite + effectPolylineProto.updateSymbolPosition = function (symbol) { + var t = symbol.__t; + var points = this._points; + var offsets = this._offsets; + var len = points.length; + + if (!offsets) { + // Has length 0 + return; + } + + var lastFrame = this._lastFrame; + var frame; + + if (t < this._lastFramePercent) { + // Start from the next frame + // PENDING start from lastFrame ? + var start = Math.min(lastFrame + 1, len - 1); + for (frame = start; frame >= 0; frame--) { + if (offsets[frame] <= t) { + break; + } + } + // PENDING really need to do this ? + frame = Math.min(frame, len - 2); + } + else { + for (var frame = lastFrame; frame < len; frame++) { + if (offsets[frame] > t) { + break; + } + } + frame = Math.min(frame - 1, len - 2); + } + + vec2.lerp( + symbol.position, points[frame], points[frame + 1], + (t - offsets[frame]) / (offsets[frame + 1] - offsets[frame]) + ); + + var tx = points[frame + 1][0] - points[frame][0]; + var ty = points[frame + 1][1] - points[frame][1]; + symbol.rotation = -Math.atan2(ty, tx) - Math.PI / 2; + + this._lastFrame = frame; + this._lastFramePercent = t; + + symbol.ignore = false; + }; + + zrUtil.inherits(EffectPolyline, EffectLine); + + module.exports = EffectPolyline; + + +/***/ }, +/* 280 */ +/***/ function(module, exports, __webpack_require__) { + + // TODO Batch by color + + + + var graphic = __webpack_require__(18); + + var quadraticContain = __webpack_require__(42); + var lineContain = __webpack_require__(40); + + var LargeLineShape = graphic.extendShape({ + shape: { + polyline: false, + + segs: [] + }, + + buildPath: function (path, shape) { + var segs = shape.segs; + var isPolyline = shape.polyline; + + for (var i = 0; i < segs.length; i++) { + var seg = segs[i]; + if (isPolyline) { + path.moveTo(seg[0][0], seg[0][1]); + for (var j = 1; j < seg.length; j++) { + path.lineTo(seg[j][0], seg[j][1]); + } + } + else { + path.moveTo(seg[0][0], seg[0][1]); + if (seg.length > 2) { + path.quadraticCurveTo(seg[2][0], seg[2][1], seg[1][0], seg[1][1]); + } + else { + path.lineTo(seg[1][0], seg[1][1]); + } + } + } + }, + + findDataIndex: function (x, y) { + var shape = this.shape; + var segs = shape.segs; + var isPolyline = shape.polyline; + var lineWidth = Math.max(this.style.lineWidth, 1); + + // Not consider transform + for (var i = 0; i < segs.length; i++) { + var seg = segs[i]; + if (isPolyline) { + for (var j = 1; j < seg.length; j++) { + if (lineContain.containStroke( + seg[j - 1][0], seg[j - 1][1], seg[j][0], seg[j][1], lineWidth, x, y + )) { + return i; + } + } + } + else { + if (seg.length > 2) { + if (quadraticContain.containStroke( + seg[0][0], seg[0][1], seg[2][0], seg[2][1], seg[1][0], seg[1][1], lineWidth, x, y + )) { + return i; + } + } + else { + if (lineContain.containStroke( + seg[0][0], seg[0][1], seg[1][0], seg[1][1], lineWidth, x, y + )) { + return i; + } + } + } + } + + return -1; + } + }); + + function LargeLineDraw() { + this.group = new graphic.Group(); + + this._lineEl = new LargeLineShape(); + } + + var largeLineProto = LargeLineDraw.prototype; + + /** + * Update symbols draw by new data + * @param {module:echarts/data/List} data + */ + largeLineProto.updateData = function (data) { + this.group.removeAll(); + + var lineEl = this._lineEl; + + var seriesModel = data.hostModel; + + lineEl.setShape({ + segs: data.mapArray(data.getItemLayout), + polyline: seriesModel.get('polyline') + }); + + lineEl.useStyle( + seriesModel.getModel('lineStyle.normal').getLineStyle() + ); + + var visualColor = data.getVisual('color'); + if (visualColor) { + lineEl.setStyle('stroke', visualColor); + } + lineEl.setStyle('fill'); + + // Enable tooltip + // PENDING May have performance issue when path is extremely large + lineEl.seriesIndex = seriesModel.seriesIndex; + lineEl.on('mousemove', function (e) { + lineEl.dataIndex = null; + var dataIndex = lineEl.findDataIndex(e.offsetX, e.offsetY); + if (dataIndex > 0) { + // Provide dataIndex for tooltip + lineEl.dataIndex = dataIndex; + } + }); + + // Add back + this.group.add(lineEl); + }; + + largeLineProto.updateLayout = function (seriesModel) { + var data = seriesModel.getData(); + this._lineEl.setShape({ + segs: data.mapArray(data.getItemLayout) + }); + }; + + largeLineProto.remove = function () { + this.group.removeAll(); + }; + + module.exports = LargeLineDraw; + + +/***/ }, +/* 281 */ +/***/ function(module, exports, __webpack_require__) { + + + + module.exports = function (ecModel) { + ecModel.eachSeriesByType('lines', function (seriesModel) { + var coordSys = seriesModel.coordinateSystem; + var lineData = seriesModel.getData(); + + // FIXME Use data dimensions ? + lineData.each(function (idx) { + var itemModel = lineData.getItemModel(idx); + + var coords = (itemModel.option instanceof Array) ? + itemModel.option : itemModel.get('coords'); + + if (true) { + if (!(coords instanceof Array && coords.length > 0 && coords[0] instanceof Array)) { + throw new Error('Invalid coords ' + JSON.stringify(coords) + '. Lines must have 2d coords array in data item.'); + } + } + var pts = []; + + if (seriesModel.get('polyline')) { + for (var i = 0; i < coords.length; i++) { + pts.push(coordSys.dataToPoint(coords[i])); + } + } + else { + pts[0] = coordSys.dataToPoint(coords[0]); + pts[1] = coordSys.dataToPoint(coords[1]); + + var curveness = itemModel.get('lineStyle.normal.curveness'); + if (+curveness) { + 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 + ]; + } + } + lineData.setItemLayout(idx, pts); + }); + }); + }; + + +/***/ }, +/* 282 */ +/***/ function(module, exports) { + + + + function normalize(a) { + if (!(a instanceof Array)) { + a = [a, a]; + } + return a; + } + module.exports = function (ecModel) { + ecModel.eachSeriesByType('lines', function (seriesModel) { + var data = seriesModel.getData(); + var symbolType = normalize(seriesModel.get('symbol')); + var symbolSize = normalize(seriesModel.get('symbolSize')); + + var opacityQuery = 'lineStyle.normal.opacity'.split('.'); + + data.setVisual('fromSymbol', symbolType && symbolType[0]); + data.setVisual('toSymbol', symbolType && symbolType[1]); + data.setVisual('fromSymbolSize', symbolSize && symbolSize[0]); + data.setVisual('toSymbolSize', symbolSize && symbolSize[1]); + data.setVisual('opacity', seriesModel.get(opacityQuery)); + + data.each(function (idx) { + var itemModel = data.getItemModel(idx); + var symbolType = normalize(itemModel.getShallow('symbol', true)); + var symbolSize = normalize(itemModel.getShallow('symbolSize', true)); + var opacity = itemModel.get(opacityQuery); + + symbolType[0] && data.setItemVisual(idx, 'fromSymbol', symbolType[0]); + symbolType[1] && data.setItemVisual(idx, 'toSymbol', symbolType[1]); + symbolSize[0] && data.setItemVisual(idx, 'fromSymbolSize', symbolSize[0]); + symbolSize[1] && data.setItemVisual(idx, 'toSymbolSize', symbolSize[1]); + + data.setItemVisual(idx, 'opacity', opacity); + }); + }); + }; + + +/***/ }, +/* 283 */ +/***/ function(module, exports, __webpack_require__) { + + + + __webpack_require__(284); + __webpack_require__(285); + + +/***/ }, +/* 284 */ +/***/ function(module, exports, __webpack_require__) { + + + + var SeriesModel = __webpack_require__(78); + var createListFromArray = __webpack_require__(109); + + module.exports = SeriesModel.extend({ + type: 'series.heatmap', + + getInitialData: function (option, ecModel) { + return createListFromArray(option.data, this, ecModel); + }, + + defaultOption: { + + // Cartesian2D or geo + coordinateSystem: 'cartesian2d', + + zlevel: 0, + + z: 2, + + // Cartesian coordinate system + // xAxisIndex: 0, + // yAxisIndex: 0, + + // Geo coordinate system + geoIndex: 0, + + blurSize: 30, + + pointSize: 20, + + maxOpacity: 1, + + minOpacity: 0 + } + }); + + +/***/ }, +/* 285 */ +/***/ function(module, exports, __webpack_require__) { + + + + var graphic = __webpack_require__(18); + var HeatmapLayer = __webpack_require__(286); + var zrUtil = __webpack_require__(4); + + function getIsInPiecewiseRange(dataExtent, pieceList, selected) { + var dataSpan = dataExtent[1] - dataExtent[0]; + pieceList = zrUtil.map(pieceList, function (piece) { + return { + interval: [ + (piece.interval[0] - dataExtent[0]) / dataSpan, + (piece.interval[1] - dataExtent[0]) / dataSpan + ] + }; + }); + var len = pieceList.length; + var lastIndex = 0; + return function (val) { + // Try to find in the location of the last found + for (var i = lastIndex; i < len; i++) { + var interval = pieceList[i].interval; + if (interval[0] <= val && val <= interval[1]) { + lastIndex = i; + break; + } + } + if (i === len) { // Not found, back interation + for (var i = lastIndex - 1; i >= 0; i--) { + var interval = pieceList[i].interval; + if (interval[0] <= val && val <= interval[1]) { + lastIndex = i; + break; + } + } + } + return i >= 0 && i < len && selected[i]; + }; + } + + function getIsInContinuousRange(dataExtent, range) { + var dataSpan = dataExtent[1] - dataExtent[0]; + range = [ + (range[0] - dataExtent[0]) / dataSpan, + (range[1] - dataExtent[0]) / dataSpan + ]; + return function (val) { + return val >= range[0] && val <= range[1]; + }; + } + + function isGeoCoordSys(coordSys) { + var dimensions = coordSys.dimensions; + // Not use coorSys.type === 'geo' because coordSys maybe extended + return dimensions[0] === 'lng' && dimensions[1] === 'lat'; + } + + module.exports = __webpack_require__(1).extendChartView({ + + type: 'heatmap', + + render: function (seriesModel, ecModel, api) { + var visualMapOfThisSeries; + ecModel.eachComponent('visualMap', function (visualMap) { + visualMap.eachTargetSeries(function (targetSeries) { + if (targetSeries === seriesModel) { + visualMapOfThisSeries = visualMap; + } + }); + }); + + if (true) { + if (!visualMapOfThisSeries) { + throw new Error('Heatmap must use with visualMap'); + } + } + + this.group.removeAll(); + var coordSys = seriesModel.coordinateSystem; + if (coordSys.type === 'cartesian2d' || coordSys.type === 'calendar') { + this._renderOnCartesianAndCalendar(coordSys, seriesModel, api); + } + else if (isGeoCoordSys(coordSys)) { + this._renderOnGeo( + coordSys, seriesModel, visualMapOfThisSeries, api + ); + } + }, + + dispose: function () {}, + + _renderOnCartesianAndCalendar: function (coordSys, seriesModel, api) { + + if (coordSys.type === 'cartesian2d') { + var xAxis = coordSys.getAxis('x'); + var yAxis = coordSys.getAxis('y'); + + if (true) { + if (!(xAxis.type === 'category' && yAxis.type === 'category')) { + throw new Error('Heatmap on cartesian must have two category axes'); + } + if (!(xAxis.onBand && yAxis.onBand)) { + throw new Error('Heatmap on cartesian must have two axes with boundaryGap true'); + } + } + + var width = xAxis.getBandWidth(); + var height = yAxis.getBandWidth(); + + } + + var group = this.group; + var data = seriesModel.getData(); + + var itemStyleQuery = 'itemStyle.normal'; + var hoverItemStyleQuery = 'itemStyle.emphasis'; + var labelQuery = 'label.normal'; + var hoverLabelQuery = 'label.emphasis'; + var style = seriesModel.getModel(itemStyleQuery).getItemStyle(['color']); + var hoverStl = seriesModel.getModel(hoverItemStyleQuery).getItemStyle(); + var labelModel = seriesModel.getModel('label.normal'); + var hoverLabelModel = seriesModel.getModel('label.emphasis'); + var coordSysType = coordSys.type; + + var dataDims = coordSysType === 'cartesian2d' + ? [ + seriesModel.coordDimToDataDim('x')[0], + seriesModel.coordDimToDataDim('y')[0], + seriesModel.coordDimToDataDim('value')[0] + ] + : [ + seriesModel.coordDimToDataDim('time')[0], + seriesModel.coordDimToDataDim('value')[0] + ]; + + data.each(function (idx) { + var rect; + + if (coordSysType === 'cartesian2d') { + // Ignore empty data + if (isNaN(data.get(dataDims[2], idx))) { + return; + } + + var point = coordSys.dataToPoint([ + data.get(dataDims[0], idx), + data.get(dataDims[1], idx) + ]); + + rect = new graphic.Rect({ + shape: { + x: point[0] - width / 2, + y: point[1] - height / 2, + width: width, + height: height + }, + style: { + fill: data.getItemVisual(idx, 'color'), + opacity: data.getItemVisual(idx, 'opacity') + } + }); + } + else { + // Ignore empty data + if (isNaN(data.get(dataDims[1], idx))) { + return; + } + + rect = new graphic.Rect({ + z2: 1, + shape: coordSys.dataToRect([data.get(dataDims[0], idx)]).contentShape, + style: { + fill: data.getItemVisual(idx, 'color'), + opacity: data.getItemVisual(idx, 'opacity') + } + }); + } + + var itemModel = data.getItemModel(idx); + + // Optimization for large datset + if (data.hasItemOption) { + style = itemModel.getModel(itemStyleQuery).getItemStyle(['color']); + hoverStl = itemModel.getModel(hoverItemStyleQuery).getItemStyle(); + labelModel = itemModel.getModel(labelQuery); + hoverLabelModel = itemModel.getModel(hoverLabelQuery); + } + + var rawValue = seriesModel.getRawValue(idx); + var defaultText = '-'; + if (rawValue && rawValue[2] != null) { + defaultText = rawValue[2]; + } + if (labelModel.getShallow('show')) { + graphic.setText(style, labelModel); + style.text = seriesModel.getFormattedLabel(idx, 'normal') || defaultText; + } + if (hoverLabelModel.getShallow('show')) { + graphic.setText(hoverStl, hoverLabelModel); + hoverStl.text = seriesModel.getFormattedLabel(idx, 'emphasis') || defaultText; + } + + rect.setStyle(style); + + graphic.setHoverStyle(rect, data.hasItemOption ? hoverStl : zrUtil.extend({}, hoverStl)); + + group.add(rect); + data.setItemGraphicEl(idx, rect); + }); + }, + + _renderOnGeo: function (geo, seriesModel, visualMapModel, api) { + var inRangeVisuals = visualMapModel.targetVisuals.inRange; + var outOfRangeVisuals = visualMapModel.targetVisuals.outOfRange; + // if (!visualMapping) { + // throw new Error('Data range must have color visuals'); + // } + + var data = seriesModel.getData(); + var hmLayer = this._hmLayer || (this._hmLayer || new HeatmapLayer()); + hmLayer.blurSize = seriesModel.get('blurSize'); + hmLayer.pointSize = seriesModel.get('pointSize'); + hmLayer.minOpacity = seriesModel.get('minOpacity'); + hmLayer.maxOpacity = seriesModel.get('maxOpacity'); + + var rect = geo.getViewRect().clone(); + var roamTransform = geo.getRoamTransform().transform; + rect.applyTransform(roamTransform); + + // Clamp on viewport + var x = Math.max(rect.x, 0); + var y = Math.max(rect.y, 0); + var x2 = Math.min(rect.width + rect.x, api.getWidth()); + var y2 = Math.min(rect.height + rect.y, api.getHeight()); + var width = x2 - x; + var height = y2 - y; + + var points = data.mapArray(['lng', 'lat', 'value'], function (lng, lat, value) { + var pt = geo.dataToPoint([lng, lat]); + pt[0] -= x; + pt[1] -= y; + pt.push(value); + return pt; + }); + + var dataExtent = visualMapModel.getExtent(); + var isInRange = visualMapModel.type === 'visualMap.continuous' + ? getIsInContinuousRange(dataExtent, visualMapModel.option.range) + : getIsInPiecewiseRange( + dataExtent, visualMapModel.getPieceList(), visualMapModel.option.selected + ); + + hmLayer.update( + points, width, height, + inRangeVisuals.color.getNormalizer(), + { + inRange: inRangeVisuals.color.getColorMapper(), + outOfRange: outOfRangeVisuals.color.getColorMapper() + }, + isInRange + ); + var img = new graphic.Image({ + style: { + width: width, + height: height, + x: x, + y: y, + image: hmLayer.canvas + }, + silent: true + }); + this.group.add(img); + } + }); + + + +/***/ }, +/* 286 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * @file defines echarts Heatmap Chart + * @author Ovilia (me@zhangwenli.com) + * Inspired by https://github.com/mourner/simpleheat + * + * @module + */ + + + var GRADIENT_LEVELS = 256; + var zrUtil = __webpack_require__(4); + + /** + * Heatmap Chart + * + * @class + */ + function Heatmap() { + var canvas = zrUtil.createCanvas(); + this.canvas = canvas; + + this.blurSize = 30; + this.pointSize = 20; + + this.maxOpacity = 1; + this.minOpacity = 0; + + this._gradientPixels = {}; + } + + Heatmap.prototype = { + /** + * Renders Heatmap and returns the rendered canvas + * @param {Array} data array of data, each has x, y, value + * @param {number} width canvas width + * @param {number} height canvas height + */ + update: function(data, width, height, normalize, colorFunc, isInRange) { + var brush = this._getBrush(); + var gradientInRange = this._getGradient(data, colorFunc, 'inRange'); + var gradientOutOfRange = this._getGradient(data, colorFunc, 'outOfRange'); + var r = this.pointSize + this.blurSize; + + var canvas = this.canvas; + var ctx = canvas.getContext('2d'); + var len = data.length; + canvas.width = width; + canvas.height = height; + for (var i = 0; i < len; ++i) { + var p = data[i]; + var x = p[0]; + var y = p[1]; + var value = p[2]; + + // calculate alpha using value + var alpha = normalize(value); + + // draw with the circle brush with alpha + ctx.globalAlpha = alpha; + ctx.drawImage(brush, x - r, y - r); + } + + // colorize the canvas using alpha value and set with gradient + var imageData = ctx.getImageData(0, 0, canvas.width, canvas.height); + var pixels = imageData.data; + var offset = 0; + var pixelLen = pixels.length; + var minOpacity = this.minOpacity; + var maxOpacity = this.maxOpacity; + var diffOpacity = maxOpacity - minOpacity; + + while(offset < pixelLen) { + var alpha = pixels[offset + 3] / 256; + var gradientOffset = Math.floor(alpha * (GRADIENT_LEVELS - 1)) * 4; + // Simple optimize to ignore the empty data + if (alpha > 0) { + var gradient = isInRange(alpha) ? gradientInRange : gradientOutOfRange; + // Any alpha > 0 will be mapped to [minOpacity, maxOpacity] + alpha > 0 && (alpha = alpha * diffOpacity + minOpacity); + pixels[offset++] = gradient[gradientOffset]; + pixels[offset++] = gradient[gradientOffset + 1]; + pixels[offset++] = gradient[gradientOffset + 2]; + pixels[offset++] = gradient[gradientOffset + 3] * alpha * 256; + } + else { + offset += 4; + } + } + ctx.putImageData(imageData, 0, 0); + + return canvas; + }, + + /** + * get canvas of a black circle brush used for canvas to draw later + * @private + * @returns {Object} circle brush canvas + */ + _getBrush: function() { + var brushCanvas = this._brushCanvas || (this._brushCanvas = zrUtil.createCanvas()); + // set brush size + var r = this.pointSize + this.blurSize; + var d = r * 2; + brushCanvas.width = d; + brushCanvas.height = d; + + var ctx = brushCanvas.getContext('2d'); + ctx.clearRect(0, 0, d, d); + + // in order to render shadow without the distinct circle, + // draw the distinct circle in an invisible place, + // and use shadowOffset to draw shadow in the center of the canvas + ctx.shadowOffsetX = d; + ctx.shadowBlur = this.blurSize; + // draw the shadow in black, and use alpha and shadow blur to generate + // color in color map + ctx.shadowColor = '#000'; + + // draw circle in the left to the canvas + ctx.beginPath(); + ctx.arc(-r, r, this.pointSize, 0, Math.PI * 2, true); + ctx.closePath(); + ctx.fill(); + return brushCanvas; + }, + + /** + * get gradient color map + * @private + */ + _getGradient: function (data, colorFunc, state) { + var gradientPixels = this._gradientPixels; + var pixelsSingleState = gradientPixels[state] || (gradientPixels[state] = new Uint8ClampedArray(256 * 4)); + var color = [0, 0, 0, 0]; + var off = 0; + for (var i = 0; i < 256; i++) { + colorFunc[state](i / 255, true, color); + pixelsSingleState[off++] = color[0]; + pixelsSingleState[off++] = color[1]; + pixelsSingleState[off++] = color[2]; + pixelsSingleState[off++] = color[3]; + } + return pixelsSingleState; + } + }; + + module.exports = Heatmap; + + + +/***/ }, +/* 287 */ +/***/ function(module, exports, __webpack_require__) { + + + + var zrUtil = __webpack_require__(4); + + __webpack_require__(125); + + __webpack_require__(288); + __webpack_require__(289); + + var barLayoutGrid = __webpack_require__(145); + var echarts = __webpack_require__(1); + + echarts.registerLayout(zrUtil.curry(barLayoutGrid, 'pictorialBar')); + + echarts.registerVisual(zrUtil.curry( + __webpack_require__(121), 'pictorialBar', 'roundRect', null + )); + + // In case developer forget to include grid component + __webpack_require__(124); + + +/***/ }, +/* 288 */ +/***/ function(module, exports, __webpack_require__) { + + + + var PictorialBarSeries = __webpack_require__(141).extend({ + + type: 'series.pictorialBar', + + dependencies: ['grid'], + + defaultOption: { + symbol: 'circle', // Customized bar shape + symbolSize: null, // Can be ['100%', '100%'], null means auto. + symbolRotate: null, + + symbolPosition: null, // 'start' or 'end' or 'center', null means auto. + symbolOffset: null, + symbolMargin: null, // start margin and end margin. Can be a number or a percent string. + // Auto margin by defualt. + symbolRepeat: false, // false/null/undefined, means no repeat. + // Can be true, means auto calculate repeat times and cut by data. + // Can be a number, specifies repeat times, and do not cut by data. + // Can be 'fixed', means auto calculate repeat times but do not cut by data. + symbolRepeatDirection: 'end', // 'end' means from 'start' to 'end'. + + symbolClip: false, + symbolBoundingData: null, // Can be 60 or -40 or [-40, 60] + symbolPatternSize: 400, // 400 * 400 px + + barGap: '-100%', // In most case, overlap is needed. + + // z can be set in data item, which is z2 actually. + + // Disable progressive + progressive: 0, + hoverAnimation: false // Open only when needed. + }, + + getInitialData: function (option) { + // Disable stack. + option.stack = null; + return PictorialBarSeries.superApply(this, 'getInitialData', arguments); + } + }); + + module.exports = PictorialBarSeries; + + +/***/ }, +/* 289 */ +/***/ function(module, exports, __webpack_require__) { + + + + var zrUtil = __webpack_require__(4); + var graphic = __webpack_require__(18); + var symbolUtil = __webpack_require__(111); + var numberUtil = __webpack_require__(7); + var helper = __webpack_require__(143); + + var parsePercent = numberUtil.parsePercent; + + var BAR_BORDER_WIDTH_QUERY = ['itemStyle', 'normal', 'borderWidth']; + + // index: +isHorizontal + var LAYOUT_ATTRS = [ + {xy: 'x', wh: 'width', index: 0, posDesc: ['left', 'right']}, + {xy: 'y', wh: 'height', index: 1, posDesc: ['top', 'bottom']} + ]; + + var pathForLineWidth = new graphic.Circle(); + + var BarView = __webpack_require__(1).extendChartView({ + + type: 'pictorialBar', + + render: function (seriesModel, ecModel, api) { + var group = this.group; + var data = seriesModel.getData(); + var oldData = this._data; + + var cartesian = seriesModel.coordinateSystem; + var baseAxis = cartesian.getBaseAxis(); + var isHorizontal = !!baseAxis.isHorizontal(); + var coordSysRect = cartesian.grid.getRect(); + + var opt = { + ecSize: {width: api.getWidth(), height: api.getHeight()}, + seriesModel: seriesModel, + coordSys: cartesian, + coordSysExtent: [ + [coordSysRect.x, coordSysRect.x + coordSysRect.width], + [coordSysRect.y, coordSysRect.y + coordSysRect.height] + ], + isHorizontal: isHorizontal, + valueDim: LAYOUT_ATTRS[+isHorizontal], + categoryDim: LAYOUT_ATTRS[1 - isHorizontal] + }; + + data.diff(oldData) + .add(function (dataIndex) { + if (!data.hasValue(dataIndex)) { + return; + } + + var itemModel = getItemModel(data, dataIndex); + var symbolMeta = getSymbolMeta(data, dataIndex, itemModel, opt); + + var bar = createBar(data, opt, symbolMeta); + + data.setItemGraphicEl(dataIndex, bar); + group.add(bar); + + updateCommon(bar, opt, symbolMeta); + }) + .update(function (newIndex, oldIndex) { + var bar = oldData.getItemGraphicEl(oldIndex); + + if (!data.hasValue(newIndex)) { + group.remove(bar); + return; + } + + var itemModel = getItemModel(data, newIndex); + var symbolMeta = getSymbolMeta(data, newIndex, itemModel, opt); + + var pictorialShapeStr = getShapeStr(data, symbolMeta); + if (bar && pictorialShapeStr !== bar.__pictorialShapeStr) { + group.remove(bar); + data.setItemGraphicEl(newIndex, null); + bar = null; + } + + if (bar) { + updateBar(bar, opt, symbolMeta); + } + else { + bar = createBar(data, opt, symbolMeta, true); + } + + data.setItemGraphicEl(newIndex, bar); + bar.__pictorialSymbolMeta = symbolMeta; + // Add back + group.add(bar); + + updateCommon(bar, opt, symbolMeta); + }) + .remove(function (dataIndex) { + var bar = oldData.getItemGraphicEl(dataIndex); + bar && removeBar(oldData, dataIndex, bar.__pictorialSymbolMeta.animationModel, bar); + }) + .execute(); + + this._data = data; + + return this.group; + }, + + dispose: zrUtil.noop, + + remove: function (ecModel, api) { + var group = this.group; + var data = this._data; + if (ecModel.get('animation')) { + if (data) { + data.eachItemGraphicEl(function (bar) { + removeBar(data, bar.dataIndex, ecModel, bar); + }); + } + } + else { + group.removeAll(); + } + } + }); + + + // Set or calculate default value about symbol, and calculate layout info. + function getSymbolMeta(data, dataIndex, itemModel, opt) { + var layout = data.getItemLayout(dataIndex); + var symbolRepeat = itemModel.get('symbolRepeat'); + var symbolClip = itemModel.get('symbolClip'); + var symbolPosition = itemModel.get('symbolPosition') || 'start'; + var symbolRotate = itemModel.get('symbolRotate'); + var rotation = (symbolRotate || 0) * Math.PI / 180 || 0; + var symbolPatternSize = itemModel.get('symbolPatternSize') || 2; + var isAnimationEnabled = itemModel.isAnimationEnabled(); + + var symbolMeta = { + dataIndex: dataIndex, + layout: layout, + itemModel: itemModel, + symbolType: data.getItemVisual(dataIndex, 'symbol') || 'circle', + color: data.getItemVisual(dataIndex, 'color'), + symbolClip: symbolClip, + symbolRepeat: symbolRepeat, + symbolRepeatDirection: itemModel.get('symbolRepeatDirection'), + symbolPatternSize: symbolPatternSize, + rotation: rotation, + animationModel: isAnimationEnabled ? itemModel : null, + hoverAnimation: isAnimationEnabled && itemModel.get('hoverAnimation'), + z2: itemModel.getShallow('z', true) || 0 + }; + + prepareBarLength(itemModel, symbolRepeat, layout, opt, symbolMeta); + + prepareSymbolSize( + data, dataIndex, layout, symbolRepeat, symbolClip, symbolMeta.boundingLength, + symbolMeta.pxSign, symbolPatternSize, opt, symbolMeta + ); + + prepareLineWidth(itemModel, symbolMeta.symbolScale, rotation, opt, symbolMeta); + + var symbolSize = symbolMeta.symbolSize; + var symbolOffset = itemModel.get('symbolOffset'); + if (zrUtil.isArray(symbolOffset)) { + symbolOffset = [ + parsePercent(symbolOffset[0], symbolSize[0]), + parsePercent(symbolOffset[1], symbolSize[1]) + ]; + } + + prepareLayoutInfo( + itemModel, symbolSize, layout, symbolRepeat, symbolClip, symbolOffset, + symbolPosition, symbolMeta.valueLineWidth, symbolMeta.boundingLength, symbolMeta.repeatCutLength, + opt, symbolMeta + ); + + return symbolMeta; + } + + // bar length can be negative. + function prepareBarLength(itemModel, symbolRepeat, layout, opt, output) { + var valueDim = opt.valueDim; + var symbolBoundingData = itemModel.get('symbolBoundingData'); + var valueAxis = opt.coordSys.getOtherAxis(opt.coordSys.getBaseAxis()); + var zeroPx = valueAxis.toGlobalCoord(valueAxis.dataToCoord(0)); + var pxSignIdx = 1 - +(layout[valueDim.wh] <= 0); + var boundingLength; + + if (zrUtil.isArray(symbolBoundingData)) { + var symbolBoundingExtent = [ + convertToCoordOnAxis(valueAxis, symbolBoundingData[0]) - zeroPx, + convertToCoordOnAxis(valueAxis, symbolBoundingData[1]) - zeroPx + ]; + symbolBoundingExtent[1] < symbolBoundingExtent[0] && (symbolBoundingExtent.reverse()); + boundingLength = symbolBoundingExtent[pxSignIdx]; + } + else if (symbolBoundingData != null) { + boundingLength = convertToCoordOnAxis(valueAxis, symbolBoundingData) - zeroPx; + } + else if (symbolRepeat) { + boundingLength = opt.coordSysExtent[valueDim.index][pxSignIdx] - zeroPx; + } + else { + boundingLength = layout[valueDim.wh]; + } + + output.boundingLength = boundingLength; + + if (symbolRepeat) { + output.repeatCutLength = layout[valueDim.wh]; + } + + output.pxSign = boundingLength > 0 ? 1 : boundingLength < 0 ? -1 : 0; + } + + function convertToCoordOnAxis(axis, value) { + return axis.toGlobalCoord(axis.dataToCoord(axis.scale.parse(value))); + } + + // Support ['100%', '100%'] + function prepareSymbolSize( + data, dataIndex, layout, symbolRepeat, symbolClip, boundingLength, + pxSign, symbolPatternSize, opt, output + ) { + var valueDim = opt.valueDim; + var categoryDim = opt.categoryDim; + var categorySize = Math.abs(layout[categoryDim.wh]); + + var symbolSize = data.getItemVisual(dataIndex, 'symbolSize'); + if (zrUtil.isArray(symbolSize)) { + symbolSize = symbolSize.slice(); + } + else { + if (symbolSize == null) { + symbolSize = '100%'; + } + symbolSize = [symbolSize, symbolSize]; + } + + // Note: percentage symbolSize (like '100%') do not consider lineWidth, because it is + // to complicated to calculate real percent value if considering scaled lineWidth. + // So the actual size will bigger than layout size if lineWidth is bigger than zero, + // which can be tolerated in pictorial chart. + + symbolSize[categoryDim.index] = parsePercent( + symbolSize[categoryDim.index], + categorySize + ); + symbolSize[valueDim.index] = parsePercent( + symbolSize[valueDim.index], + symbolRepeat ? categorySize : Math.abs(boundingLength) + ); + + output.symbolSize = symbolSize; + + // If x or y is less than zero, show reversed shape. + var symbolScale = output.symbolScale = [ + symbolSize[0] / symbolPatternSize, + symbolSize[1] / symbolPatternSize + ]; + // Follow convention, 'right' and 'top' is the normal scale. + symbolScale[valueDim.index] *= (opt.isHorizontal ? -1 : 1) * pxSign; + } + + function prepareLineWidth(itemModel, symbolScale, rotation, opt, output) { + // In symbols are drawn with scale, so do not need to care about the case that width + // or height are too small. But symbol use strokeNoScale, where acture lineWidth should + // be calculated. + var valueLineWidth = itemModel.get(BAR_BORDER_WIDTH_QUERY) || 0; + + if (valueLineWidth) { + pathForLineWidth.attr({ + scale: symbolScale.slice(), + rotation: rotation + }); + pathForLineWidth.updateTransform(); + valueLineWidth /= pathForLineWidth.getLineScale(); + valueLineWidth *= symbolScale[opt.valueDim.index]; + } + + output.valueLineWidth = valueLineWidth; + } + + function prepareLayoutInfo( + itemModel, symbolSize, layout, symbolRepeat, symbolClip, symbolOffset, + symbolPosition, valueLineWidth, boundingLength, repeatCutLength, opt, output + ) { + var categoryDim = opt.categoryDim; + var valueDim = opt.valueDim; + var pxSign = output.pxSign; + + var unitLength = Math.max(symbolSize[valueDim.index] + valueLineWidth, 0); + var pathLen = unitLength; + + // Note: rotation will not effect the layout of symbols, because user may + // want symbols to rotate on its center, which should not be translated + // when rotating. + + if (symbolRepeat) { + var absBoundingLength = Math.abs(boundingLength); + + var symbolMargin = zrUtil.retrieve(itemModel.get('symbolMargin'), '15%') + ''; + var hasEndGap = false; + if (symbolMargin.lastIndexOf('!') === symbolMargin.length - 1) { + hasEndGap = true; + symbolMargin = symbolMargin.slice(0, symbolMargin.length - 1); + } + symbolMargin = parsePercent(symbolMargin, symbolSize[valueDim.index]); + + var uLenWithMargin = Math.max(unitLength + symbolMargin * 2, 0); + + // When symbol margin is less than 0, margin at both ends will be subtracted + // to ensure that all of the symbols will not be overflow the given area. + var endFix = hasEndGap ? 0 : symbolMargin * 2; + + // Both final repeatTimes and final symbolMargin area calculated based on + // boundingLength. + var repeatSpecified = numberUtil.isNumeric(symbolRepeat); + var repeatTimes = repeatSpecified + ? symbolRepeat + : toIntTimes((absBoundingLength + endFix) / uLenWithMargin); + + // Adjust calculate margin, to ensure each symbol is displayed + // entirely in the given layout area. + var mDiff = absBoundingLength - repeatTimes * unitLength; + symbolMargin = mDiff / 2 / (hasEndGap ? repeatTimes : repeatTimes - 1); + uLenWithMargin = unitLength + symbolMargin * 2; + endFix = hasEndGap ? 0 : symbolMargin * 2; + + // Update repeatTimes when not all symbol will be shown. + if (!repeatSpecified && symbolRepeat !== 'fixed') { + repeatTimes = repeatCutLength + ? toIntTimes((Math.abs(repeatCutLength) + endFix) / uLenWithMargin) + : 0; + } + + pathLen = repeatTimes * uLenWithMargin - endFix; + output.repeatTimes = repeatTimes; + output.symbolMargin = symbolMargin; + } + + var sizeFix = pxSign * (pathLen / 2); + var pathPosition = output.pathPosition = []; + pathPosition[categoryDim.index] = layout[categoryDim.wh] / 2; + pathPosition[valueDim.index] = symbolPosition === 'start' + ? sizeFix + : symbolPosition === 'end' + ? boundingLength - sizeFix + : boundingLength / 2; // 'center' + if (symbolOffset) { + pathPosition[0] += symbolOffset[0]; + pathPosition[1] += symbolOffset[1]; + } + + var bundlePosition = output.bundlePosition = []; + bundlePosition[categoryDim.index] = layout[categoryDim.xy]; + bundlePosition[valueDim.index] = layout[valueDim.xy]; + + var barRectShape = output.barRectShape = zrUtil.extend({}, layout); + barRectShape[valueDim.wh] = pxSign * Math.max( + Math.abs(layout[valueDim.wh]), Math.abs(pathPosition[valueDim.index] + sizeFix) + ); + barRectShape[categoryDim.wh] = layout[categoryDim.wh]; + + var clipShape = output.clipShape = {}; + // Consider that symbol may be overflow layout rect. + clipShape[categoryDim.xy] = -layout[categoryDim.xy]; + clipShape[categoryDim.wh] = opt.ecSize[categoryDim.wh]; + clipShape[valueDim.xy] = 0; + clipShape[valueDim.wh] = layout[valueDim.wh]; + } + + function createPath(symbolMeta) { + var symbolPatternSize = symbolMeta.symbolPatternSize; + var path = symbolUtil.createSymbol( + // Consider texture img, make a big size. + symbolMeta.symbolType, + -symbolPatternSize / 2, + -symbolPatternSize / 2, + symbolPatternSize, + symbolPatternSize, + symbolMeta.color + ); + path.attr({ + culling: true + }); + path.type !== 'image' && path.setStyle({ + strokeNoScale: true + }); + + return path; + } + + function createOrUpdateRepeatSymbols(bar, opt, symbolMeta, isUpdate) { + var bundle = bar.__pictorialBundle; + var symbolSize = symbolMeta.symbolSize; + var valueLineWidth = symbolMeta.valueLineWidth; + var pathPosition = symbolMeta.pathPosition; + var valueDim = opt.valueDim; + var repeatTimes = symbolMeta.repeatTimes || 0; + + var index = 0; + var unit = symbolSize[opt.valueDim.index] + valueLineWidth + symbolMeta.symbolMargin * 2; + + eachPath(bar, function (path) { + path.__pictorialAnimationIndex = index; + path.__pictorialRepeatTimes = repeatTimes; + if (index < repeatTimes) { + updateAttr(path, null, makeTarget(index), symbolMeta, isUpdate); + } + else { + updateAttr(path, null, {scale: [0, 0]}, symbolMeta, isUpdate, function () { + bundle.remove(path); + }); + } + + updateHoverAnimation(path, symbolMeta); + + index++; + }); + + for (; index < repeatTimes; index++) { + var path = createPath(symbolMeta); + path.__pictorialAnimationIndex = index; + path.__pictorialRepeatTimes = repeatTimes; + bundle.add(path); + + var target = makeTarget(index, true); + + updateAttr( + path, + { + position: target.position, + scale: [0, 0] + }, + { + scale: target.scale, + rotation: target.rotation + }, + symbolMeta, + isUpdate + ); + + // FIXME + // If all emphasis/normal through action. + path + .on('mouseover', onMouseOver) + .on('mouseout', onMouseOut); + + updateHoverAnimation(path, symbolMeta); + } + + function makeTarget(index) { + var position = pathPosition.slice(); + // (start && pxSign > 0) || (end && pxSign < 0): i = repeatTimes - index + // Otherwise: i = index; + var pxSign = symbolMeta.pxSign; + var i = index; + if (symbolMeta.symbolRepeatDirection === 'start' ? pxSign > 0 : pxSign < 0) { + i = repeatTimes - 1 - index; + } + position[valueDim.index] = unit * (i - repeatTimes / 2 + 0.5) + pathPosition[valueDim.index]; + + return { + position: position, + scale: symbolMeta.symbolScale.slice(), + rotation: symbolMeta.rotation + }; + } + + function onMouseOver() { + eachPath(bar, function (path) { + path.trigger('emphasis'); + }); + } + + function onMouseOut() { + eachPath(bar, function (path) { + path.trigger('normal'); + }); + } + } + + function createOrUpdateSingleSymbol(bar, opt, symbolMeta, isUpdate) { + var bundle = bar.__pictorialBundle; + var mainPath = bar.__pictorialMainPath; + + if (!mainPath) { + mainPath = bar.__pictorialMainPath = createPath(symbolMeta); + bundle.add(mainPath); + + updateAttr( + mainPath, + { + position: symbolMeta.pathPosition.slice(), + scale: [0, 0], + rotation: symbolMeta.rotation + }, + { + scale: symbolMeta.symbolScale.slice() + }, + symbolMeta, + isUpdate + ); + + mainPath + .on('mouseover', onMouseOver) + .on('mouseout', onMouseOut); + } + else { + updateAttr( + mainPath, + null, + { + position: symbolMeta.pathPosition.slice(), + scale: symbolMeta.symbolScale.slice(), + rotation: symbolMeta.rotation + }, + symbolMeta, + isUpdate + ); + } + + updateHoverAnimation(mainPath, symbolMeta); + + function onMouseOver() { + this.trigger('emphasis'); + } + + function onMouseOut() { + this.trigger('normal'); + } + } + + // bar rect is used for label. + function createOrUpdateBarRect(bar, symbolMeta, isUpdate) { + var rectShape = zrUtil.extend({}, symbolMeta.barRectShape); + + var barRect = bar.__pictorialBarRect; + if (!barRect) { + barRect = bar.__pictorialBarRect = new graphic.Rect({ + z2: 2, + shape: rectShape, + silent: true, + style: { + stroke: 'transparent', + fill: 'transparent', + lineWidth: 0 + } + }); + + bar.add(barRect); + } + else { + updateAttr(barRect, null, {shape: rectShape}, symbolMeta, isUpdate); + } + } + + function createOrUpdateClip(bar, opt, symbolMeta, isUpdate) { + // If not clip, symbol will be remove and rebuilt. + if (symbolMeta.symbolClip) { + var clipPath = bar.__pictorialClipPath; + var clipShape = zrUtil.extend({}, symbolMeta.clipShape); + var valueDim = opt.valueDim; + var animationModel = symbolMeta.animationModel; + var dataIndex = symbolMeta.dataIndex; + + if (clipPath) { + graphic.updateProps( + clipPath, {shape: clipShape}, animationModel, dataIndex + ); + } + else { + clipShape[valueDim.wh] = 0; + clipPath = new graphic.Rect({shape: clipShape}); + bar.__pictorialBundle.setClipPath(clipPath); + bar.__pictorialClipPath = clipPath; + + var target = {}; + target[valueDim.wh] = symbolMeta.clipShape[valueDim.wh]; + + graphic[isUpdate ? 'updateProps' : 'initProps']( + clipPath, {shape: target}, animationModel, dataIndex + ); + } + } + } + + function getItemModel(data, dataIndex) { + var itemModel = data.getItemModel(dataIndex); + itemModel.getAnimationDelayParams = getAnimationDelayParams; + itemModel.isAnimationEnabled = isAnimationEnabled; + return itemModel; + } + + function getAnimationDelayParams(path) { + // The order is the same as the z-order, see `symbolRepeatDiretion`. + return { + index: path.__pictorialAnimationIndex, + count: path.__pictorialRepeatTimes + }; + } + + function isAnimationEnabled() { + // `animation` prop can be set on itemModel in pictorial bar chart. + return this.parentModel.isAnimationEnabled() && !!this.getShallow('animation'); + } + + function updateHoverAnimation(path, symbolMeta) { + path.off('emphasis').off('normal'); + + var scale = symbolMeta.symbolScale.slice(); + + symbolMeta.hoverAnimation && path + .on('emphasis', function() { + this.animateTo({ + scale: [scale[0] * 1.1, scale[1] * 1.1] + }, 400, 'elasticOut'); + }) + .on('normal', function() { + this.animateTo({ + scale: scale.slice() + }, 400, 'elasticOut'); + }); + } + + function createBar(data, opt, symbolMeta, isUpdate) { + // bar is the main element for each data. + var bar = new graphic.Group(); + // bundle is used for location and clip. + var bundle = new graphic.Group(); + bar.add(bundle); + bar.__pictorialBundle = bundle; + bundle.attr('position', symbolMeta.bundlePosition.slice()); + + if (symbolMeta.symbolRepeat) { + createOrUpdateRepeatSymbols(bar, opt, symbolMeta); + } + else { + createOrUpdateSingleSymbol(bar, opt, symbolMeta); + } + + createOrUpdateBarRect(bar, symbolMeta, isUpdate); + + createOrUpdateClip(bar, opt, symbolMeta, isUpdate); + + bar.__pictorialShapeStr = getShapeStr(data, symbolMeta); + bar.__pictorialSymbolMeta = symbolMeta; + + return bar; + } + + function updateBar(bar, opt, symbolMeta) { + var animationModel = symbolMeta.animationModel; + var dataIndex = symbolMeta.dataIndex; + var bundle = bar.__pictorialBundle; + + graphic.updateProps( + bundle, {position: symbolMeta.bundlePosition.slice()}, animationModel, dataIndex + ); + + if (symbolMeta.symbolRepeat) { + createOrUpdateRepeatSymbols(bar, opt, symbolMeta, true); + } + else { + createOrUpdateSingleSymbol(bar, opt, symbolMeta, true); + } + + createOrUpdateBarRect(bar, symbolMeta, true); + + createOrUpdateClip(bar, opt, symbolMeta, true); + } + + function removeBar(data, dataIndex, animationModel, bar) { + // Not show text when animating + var labelRect = bar.__pictorialBarRect; + labelRect && (labelRect.style.text = ''); + + var pathes = []; + eachPath(bar, function (path) { + pathes.push(path); + }); + bar.__pictorialMainPath && pathes.push(bar.__pictorialMainPath); + + // I do not find proper remove animation for clip yet. + bar.__pictorialClipPath && (animationModel = null); + + zrUtil.each(pathes, function (path) { + graphic.updateProps( + path, {scale: [0, 0]}, animationModel, dataIndex, + function () { + bar.parent && bar.parent.remove(bar); + } + ); + }); + + data.setItemGraphicEl(dataIndex, null); + } + + function getShapeStr(data, symbolMeta) { + return [ + data.getItemVisual(symbolMeta.dataIndex, 'symbol') || 'none', + !!symbolMeta.symbolRepeat, + !!symbolMeta.symbolClip + ].join(':'); + } + + function eachPath(bar, cb, context) { + // Do not use Group#eachChild, because it do not support remove. + zrUtil.each(bar.__pictorialBundle.children(), function (el) { + el !== bar.__pictorialBarRect && cb.call(context, el); + }); + } + + function updateAttr(el, immediateAttrs, animationAttrs, symbolMeta, isUpdate, cb) { + immediateAttrs && el.attr(immediateAttrs); + // when symbolCip used, only clip path has init animation, otherwise it would be weird effect. + if (symbolMeta.symbolClip && !isUpdate) { + animationAttrs && el.attr(animationAttrs); + } + else { + animationAttrs && graphic[isUpdate ? 'updateProps' : 'initProps']( + el, animationAttrs, symbolMeta.animationModel, symbolMeta.dataIndex, cb + ); + } + } + + function updateCommon(bar, opt, symbolMeta) { + var color = symbolMeta.color; + var dataIndex = symbolMeta.dataIndex; + var itemModel = symbolMeta.itemModel; + // Color must be excluded. + // Because symbol provide setColor individually to set fill and stroke + var normalStyle = itemModel.getModel('itemStyle.normal').getItemStyle(['color']); + var hoverStyle = itemModel.getModel('itemStyle.emphasis').getItemStyle(); + var cursorStyle = itemModel.getShallow('cursor'); + + eachPath(bar, function (path) { + // PENDING setColor should be before setStyle!!! + path.setColor(color); + path.setStyle(zrUtil.defaults( + { + fill: color, + opacity: symbolMeta.opacity + }, + normalStyle + )); + graphic.setHoverStyle(path, hoverStyle); + + cursorStyle && (path.cursor = cursorStyle); + path.z2 = symbolMeta.z2; + }); + + var barRectHoverStyle = {}; + var barPositionOutside = opt.valueDim.posDesc[+(symbolMeta.boundingLength > 0)]; + var barRect = bar.__pictorialBarRect; + + helper.setLabel( + barRect.style, barRectHoverStyle, itemModel, + color, opt.seriesModel, dataIndex, barPositionOutside + ); + + graphic.setHoverStyle(barRect, barRectHoverStyle); + } + + function toIntTimes(times) { + var roundedTimes = Math.round(times); + // Escapse accurate error + return Math.abs(times - roundedTimes) < 1e-4 + ? roundedTimes + : Math.ceil(times); + } + + module.exports = BarView; + + +/***/ }, +/* 290 */ +/***/ function(module, exports, __webpack_require__) { + + + + var echarts = __webpack_require__(1); + var zrUtil = __webpack_require__(4); + + __webpack_require__(291); + + __webpack_require__(308); + + __webpack_require__(309); + + echarts.registerLayout(__webpack_require__(311)); + + echarts.registerVisual(__webpack_require__(312)); + + echarts.registerProcessor( + zrUtil.curry(__webpack_require__(154), 'themeRiver') + ); + + +/***/ }, +/* 291 */ +/***/ function(module, exports, __webpack_require__) { + + + + __webpack_require__(292); + __webpack_require__(295); + __webpack_require__(297); + __webpack_require__(298); + + __webpack_require__(307); + + var echarts = __webpack_require__(1); + + echarts.extendComponentView({ + type: 'single' + }); + + + +/***/ }, +/* 292 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * Single coordinate system creator. + */ + + + var Single = __webpack_require__(293); + + /** + * Create single coordinate system and inject it into seriesModel. + * + * @param {module:echarts/model/Global} ecModel + * @param {module:echarts/ExtensionAPI} api + * @return {Array.} + */ + function create(ecModel, api) { + var singles = []; + + ecModel.eachComponent('singleAxis', function(axisModel, idx) { + + var single = new Single(axisModel, ecModel, api); + single.name = 'single_' + idx; + single.resize(axisModel, api); + axisModel.coordinateSystem = single; + singles.push(single); + + }); + + ecModel.eachSeries(function (seriesModel) { + if (seriesModel.get('coordinateSystem') === 'singleAxis') { + var singleAxisModel = ecModel.queryComponents({ + mainType: 'singleAxis', + index: seriesModel.get('singleAxisIndex'), + id: seriesModel.get('singleAxisId') + })[0]; + seriesModel.coordinateSystem = singleAxisModel && singleAxisModel.coordinateSystem; + } + }); + + return singles; + } + + __webpack_require__(76).register('single', { + create: create, + dimensions: Single.prototype.dimensions + }); + + +/***/ }, +/* 293 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * Single coordinates system. + */ + + + var SingleAxis = __webpack_require__(294); + var axisHelper = __webpack_require__(101); + var layout = __webpack_require__(71); + + /** + * Create a single coordinates system. + * + * @param {module:echarts/coord/single/AxisModel} axisModel + * @param {module:echarts/model/Global} ecModel + * @param {module:echarts/ExtensionAPI} api + */ + function Single(axisModel, ecModel, api) { + + /** + * @type {string} + * @readOnly + */ + this.dimension = 'single'; + + /** + * Add it just for draw tooltip. + * + * @type {Array.} + * @readOnly + */ + this.dimensions = ['single']; + + /** + * @private + * @type {module:echarts/coord/single/SingleAxis}. + */ + this._axis = null; + + /** + * @private + * @type {module:zrender/core/BoundingRect} + */ + this._rect; + + this._init(axisModel, ecModel, api); + + /** + * @type {module:echarts/coord/single/AxisModel} + */ + this.model = axisModel; + } + + Single.prototype = { + + type: 'singleAxis', + + axisPointerEnabled: true, + + constructor: Single, + + /** + * Initialize single coordinate system. + * + * @param {module:echarts/coord/single/AxisModel} axisModel + * @param {module:echarts/model/Global} ecModel + * @param {module:echarts/ExtensionAPI} api + * @private + */ + _init: function (axisModel, ecModel, api) { + + var dim = this.dimension; + + var axis = new SingleAxis( + dim, + axisHelper.createScaleByModel(axisModel), + [0, 0], + axisModel.get('type'), + axisModel.get('position') + ); + + var isCategory = axis.type === 'category'; + axis.onBand = isCategory && axisModel.get('boundaryGap'); + axis.inverse = axisModel.get('inverse'); + axis.orient = axisModel.get('orient'); + + axisModel.axis = axis; + axis.model = axisModel; + axis.coordinateSystem = this; + this._axis = axis; + }, + + /** + * Update axis scale after data processed + * @param {module:echarts/model/Global} ecModel + * @param {module:echarts/ExtensionAPI} api + */ + update: function (ecModel, api) { + ecModel.eachSeries(function (seriesModel) { + if (seriesModel.coordinateSystem === this) { + var data = seriesModel.getData(); + var dim = this.dimension; + this._axis.scale.unionExtentFromData( + data, seriesModel.coordDimToDataDim(dim) + ); + axisHelper.niceScaleExtent(this._axis.scale, this._axis.model); + } + }, this); + }, + + /** + * Resize the single coordinate system. + * + * @param {module:echarts/coord/single/AxisModel} axisModel + * @param {module:echarts/ExtensionAPI} api + */ + resize: function (axisModel, api) { + this._rect = layout.getLayoutRect( + { + left: axisModel.get('left'), + top: axisModel.get('top'), + right: axisModel.get('right'), + bottom: axisModel.get('bottom'), + width: axisModel.get('width'), + height: axisModel.get('height') + }, + { + width: api.getWidth(), + height: api.getHeight() + } + ); + + this._adjustAxis(); + }, + + /** + * @return {module:zrender/core/BoundingRect} + */ + getRect: function () { + return this._rect; + }, + + /** + * @private + */ + _adjustAxis: function () { + + var rect = this._rect; + var axis = this._axis; + + var isHorizontal = axis.isHorizontal(); + var extent = isHorizontal ? [0, rect.width] : [0, rect.height]; + var idx = axis.reverse ? 1 : 0; + + axis.setExtent(extent[idx], extent[1 - idx]); + + this._updateAxisTransform(axis, isHorizontal ? rect.x : rect.y); + + }, + + /** + * @param {module:echarts/coord/single/SingleAxis} axis + * @param {number} coordBase + */ + _updateAxisTransform: function (axis, coordBase) { + + var axisExtent = axis.getExtent(); + var extentSum = axisExtent[0] + axisExtent[1]; + var isHorizontal = axis.isHorizontal(); + + axis.toGlobalCoord = isHorizontal + ? function (coord) { + return coord + coordBase; + } + : function (coord) { + return extentSum - coord + coordBase; + }; + + axis.toLocalCoord = isHorizontal + ? function (coord) { + return coord - coordBase; + } + : function (coord) { + return extentSum - coord + coordBase; + }; + }, + + /** + * Get axis. + * + * @return {module:echarts/coord/single/SingleAxis} + */ + getAxis: function () { + return this._axis; + }, + + /** + * Get axis, add it just for draw tooltip. + * + * @return {[type]} [description] + */ + getBaseAxis: function () { + return this._axis; + }, + + /** + * @return {Array.} + */ + getAxes: function () { + return [this._axis]; + }, + + /** + * @return {Object} {baseAxes: [], otherAxes: []} + */ + getTooltipAxes: function () { + return {baseAxes: [this.getAxis()]}; + }, + + /** + * If contain point. + * + * @param {Array.} point + * @return {boolean} + */ + containPoint: function (point) { + var rect = this.getRect(); + var axis = this.getAxis(); + var orient = axis.orient; + if (orient === 'horizontal') { + return axis.contain(axis.toLocalCoord(point[0])) + && (point[1] >= rect.y && point[1] <= (rect.y + rect.height)); + } + else { + return axis.contain(axis.toLocalCoord(point[1])) + && (point[0] >= rect.y && point[0] <= (rect.y + rect.height)); + } + }, + + /** + * @param {Array.} point + * @return {Array.} + */ + pointToData: function (point) { + var axis = this.getAxis(); + return [axis.coordToData(axis.toLocalCoord( + point[axis.orient === 'horizontal' ? 0 : 1] + ))]; + }, + + /** + * Convert the series data to concrete point. + * + * @param {number|Array.} val + * @return {Array.} + */ + dataToPoint: function (val) { + var axis = this.getAxis(); + var rect = this.getRect(); + var pt = []; + var idx = axis.orient === 'horizontal' ? 0 : 1; + + if (val instanceof Array) { + val = val[0]; + } + + pt[idx] = axis.toGlobalCoord(axis.dataToCoord(+val)); + pt[1 - idx] = idx === 0 ? (rect.y + rect.height / 2) : (rect.x + rect.width / 2); + return pt; + } + + }; + + module.exports = Single; + + + +/***/ }, +/* 294 */ +/***/ function(module, exports, __webpack_require__) { + + + + var zrUtil = __webpack_require__(4); + var Axis = __webpack_require__(100); + + /** + * @constructor module:echarts/coord/single/SingleAxis + * @extends {module:echarts/coord/Axis} + * @param {string} dim + * @param {*} scale + * @param {Array.} coordExtent + * @param {string} axisType + * @param {string} position + */ + var SingleAxis = function (dim, scale, coordExtent, axisType, position) { + + Axis.call(this, dim, scale, coordExtent); + + /** + * Axis type + * - 'category' + * - 'value' + * - 'time' + * - 'log' + * @type {string} + */ + this.type = axisType || 'value'; + + /** + * Axis position + * - 'top' + * - 'bottom' + * - 'left' + * - 'right' + * @type {string} + */ + this.position = position || 'bottom'; + + /** + * Axis orient + * - 'horizontal' + * - 'vertical' + * @type {[type]} + */ + this.orient = null; + + /** + * @type {number} + */ + this._labelInterval = null; + + }; + + SingleAxis.prototype = { + + constructor: SingleAxis, + + /** + * Axis model + * @type {module:echarts/coord/single/AxisModel} + */ + model: null, + + /** + * Judge the orient of the axis. + * @return {boolean} + */ + isHorizontal: function () { + var position = this.position; + return position === 'top' || position === 'bottom'; + + }, + + /** + * @override + */ + pointToData: function (point, clamp) { + return this.coordinateSystem.pointToData(point, clamp)[0]; + }, + + /** + * Convert the local coord(processed by dataToCoord()) + * to global coord(concrete pixel coord). + * designated by module:echarts/coord/single/Single. + * @type {Function} + */ + toGlobalCoord: null, + + /** + * Convert the global coord to local coord. + * designated by module:echarts/coord/single/Single. + * @type {Function} + */ + toLocalCoord: null + + }; + + zrUtil.inherits(SingleAxis, Axis); + + module.exports = SingleAxis; + + +/***/ }, +/* 295 */ +/***/ function(module, exports, __webpack_require__) { + + + + var AxisBuilder = __webpack_require__(135); + var zrUtil = __webpack_require__(4); + var graphic = __webpack_require__(18); + var singleAxisHelper = __webpack_require__(296); + var getInterval = AxisBuilder.getInterval; + var ifIgnoreOnTick = AxisBuilder.ifIgnoreOnTick; + + var axisBuilderAttrs = [ + 'axisLine', 'axisLabel', 'axisTick', 'axisName' + ]; + + var selfBuilderAttr = 'splitLine'; + + var SingleAxisView = __webpack_require__(136).extend({ + + type: 'singleAxis', + + axisPointerClass: 'SingleAxisPointer', + + render: function (axisModel, ecModel, api, payload) { + + var group = this.group; + + group.removeAll(); + + var layout = singleAxisHelper.layout(axisModel); + + var axisBuilder = new AxisBuilder(axisModel, layout); + + zrUtil.each(axisBuilderAttrs, axisBuilder.add, axisBuilder); + + group.add(axisBuilder.getGroup()); + + if (axisModel.get(selfBuilderAttr + '.show')) { + this['_' + selfBuilderAttr](axisModel, layout.labelInterval); + } + + SingleAxisView.superCall(this, 'render', axisModel, ecModel, api, payload); + }, + + _splitLine: function(axisModel, labelInterval) { + var axis = axisModel.axis; + + if (axis.scale.isBlank()) { + return; + } + + var splitLineModel = axisModel.getModel('splitLine'); + var lineStyleModel = splitLineModel.getModel('lineStyle'); + var lineWidth = lineStyleModel.get('width'); + var lineColors = lineStyleModel.get('color'); + var lineInterval = getInterval(splitLineModel, labelInterval); + + lineColors = lineColors instanceof Array ? lineColors : [lineColors]; + + var gridRect = axisModel.coordinateSystem.getRect(); + var isHorizontal = axis.isHorizontal(); + + var splitLines = []; + var lineCount = 0; + + var ticksCoords = axis.getTicksCoords(); + + var p1 = []; + var p2 = []; + + for (var i = 0; i < ticksCoords.length; ++i) { + if (ifIgnoreOnTick(axis, i, lineInterval)) { + continue; + } + var tickCoord = axis.toGlobalCoord(ticksCoords[i]); + if (isHorizontal) { + p1[0] = tickCoord; + p1[1] = gridRect.y; + p2[0] = tickCoord; + p2[1] = gridRect.y + gridRect.height; + } + else { + p1[0] = gridRect.x; + p1[1] = tickCoord; + p2[0] = gridRect.x + gridRect.width; + p2[1] = tickCoord; + } + var colorIndex = (lineCount++) % lineColors.length; + splitLines[colorIndex] = splitLines[colorIndex] || []; + splitLines[colorIndex].push(new graphic.Line( + graphic.subPixelOptimizeLine({ + shape: { + x1: p1[0], + y1: p1[1], + x2: p2[0], + y2: p2[1] + }, + style: { + lineWidth: lineWidth + }, + silent: true + }))); + } + + for (var i = 0; i < splitLines.length; ++i) { + this.group.add(graphic.mergePath(splitLines[i], { + style: { + stroke: lineColors[i % lineColors.length], + lineDash: lineStyleModel.getLineDash(lineWidth), + lineWidth: lineWidth + }, + silent: true + })); + } + } + }); + + module.exports = SingleAxisView; + + + +/***/ }, +/* 296 */ +/***/ function(module, exports, __webpack_require__) { + + + + var zrUtil = __webpack_require__(4); + + var helper = {}; + + /** + * @param {Object} opt {labelInside} + * @return {Object} { + * position, rotation, labelDirection, labelOffset, + * tickDirection, labelRotate, labelInterval, z2 + * } + */ + helper.layout = function (axisModel, opt) { + opt = opt || {}; + var single = axisModel.coordinateSystem; + var axis = axisModel.axis; + var layout = {}; + + var axisPosition = axis.position; + var orient = axis.orient; + + var rect = single.getRect(); + var rectBound = [rect.x, rect.x + rect.width, rect.y, rect.y + rect.height]; + + var positionMap = { + horizontal: {top: rectBound[2], bottom: rectBound[3]}, + vertical: {left: rectBound[0], right: rectBound[1]} + }; + + layout.position = [ + orient === 'vertical' + ? positionMap.vertical[axisPosition] + : rectBound[0], + orient === 'horizontal' + ? positionMap.horizontal[axisPosition] + : rectBound[3] + ]; + + var r = {horizontal: 0, vertical: 1}; + layout.rotation = Math.PI / 2 * r[orient]; + + var directionMap = {top: -1, bottom: 1, right: 1, left: -1}; + + layout.labelDirection = layout.tickDirection + = layout.nameDirection + = directionMap[axisPosition]; + + if (axisModel.get('axisTick.inside')) { + layout.tickDirection = -layout.tickDirection; + } + + if (zrUtil.retrieve(opt.labelInside, axisModel.get('axisLabel.inside'))) { + layout.labelDirection = -layout.labelDirection; + } + + var labelRotation = opt.rotate; + labelRotation == null && (labelRotation = axisModel.get('axisLabel.rotate')); + layout.labelRotation = axisPosition === 'top' ? -labelRotation : labelRotation; + + layout.labelInterval = axis.getLabelInterval(); + + layout.z2 = 1; + + return layout; + }; + + module.exports = helper; + + + +/***/ }, +/* 297 */ +/***/ function(module, exports, __webpack_require__) { + + + + var ComponentModel = __webpack_require__(69); + var axisModelCreator = __webpack_require__(131); + var zrUtil = __webpack_require__(4); + + var AxisModel = ComponentModel.extend({ + + type: 'singleAxis', + + layoutMode: 'box', + + /** + * @type {module:echarts/coord/single/SingleAxis} + */ + axis: null, + + /** + * @type {module:echarts/coord/single/Single} + */ + coordinateSystem: null, + + /** + * @override + */ + getCoordSysModel: function () { + return this; + } + + }); + + var defaultOption = { + + left: '5%', + top: '5%', + right: '5%', + bottom: '5%', + + type: 'value', + + position: 'bottom', + + orient: 'horizontal', + + axisLine: { + show: true, + lineStyle: { + width: 2, + type: 'solid' + } + }, + + // Single coordinate system and single axis is the, + // which is used as the parent tooltip model. + // same model, so we set default tooltip show as true. + tooltip: { + show: true + }, + + axisTick: { + show: true, + length: 6, + lineStyle: { + width: 2 + } + }, + + axisLabel: { + show: true, + interval: 'auto' + }, + + splitLine: { + show: true, + lineStyle: { + type: 'dashed', + opacity: 0.2 + } + } + }; + + function getAxisType(axisName, option) { + return option.type || (option.data ? 'category' : 'value'); + } + + zrUtil.merge(AxisModel.prototype, __webpack_require__(112)); + + axisModelCreator('single', AxisModel, getAxisType, defaultOption); + + module.exports = AxisModel; + + +/***/ }, +/* 298 */ +/***/ function(module, exports, __webpack_require__) { + + + + var echarts = __webpack_require__(1); + var axisPointerModelHelper = __webpack_require__(137); + var axisTrigger = __webpack_require__(299); + var zrUtil = __webpack_require__(4); + + __webpack_require__(301); + __webpack_require__(302); + + // CartesianAxisPointer is not supposed to be required here. But consider + // echarts.simple.js and online build tooltip, which only require gridSimple, + // CartesianAxisPointer should be able to required somewhere. + __webpack_require__(304); + + echarts.registerPreprocessor(function (option) { + // Always has a global axisPointerModel for default setting. + if (option) { + (!option.axisPointer || option.axisPointer.length === 0) + && (option.axisPointer = {}); + + var link = option.axisPointer.link; + // Normalize to array to avoid object mergin. But if link + // is not set, remain null/undefined, otherwise it will + // override existent link setting. + if (link && !zrUtil.isArray(link)) { + option.axisPointer.link = [link]; + } + } + }); + + // This process should proformed after coordinate systems created + // and series data processed. So put it on statistic processing stage. + echarts.registerProcessor(echarts.PRIORITY.PROCESSOR.STATISTIC, function (ecModel, api) { + // Build axisPointerModel, mergin tooltip.axisPointer model for each axis. + // allAxesInfo should be updated when setOption performed. + ecModel.getComponent('axisPointer').coordSysAxesInfo + = axisPointerModelHelper.collect(ecModel, api); + }); + + // Broadcast to all views. + echarts.registerAction({ + type: 'updateAxisPointer', + event: 'updateAxisPointer', + update: ':updateAxisPointer' + }, axisTrigger); + + + +/***/ }, +/* 299 */ +/***/ function(module, exports, __webpack_require__) { + + + + var zrUtil = __webpack_require__(4); + var modelUtil = __webpack_require__(5); + var modelHelper = __webpack_require__(137); + var findPointFromSeries = __webpack_require__(300); + + var each = zrUtil.each; + var curry = zrUtil.curry; + var get = modelUtil.makeGetter(); + + /** + * Basic logic: check all axis, if they do not demand show/highlight, + * then hide/downplay them. + * + * @param {Object} coordSysAxesInfo + * @param {Object} payload + * @param {string} [payload.currTrigger] 'click' | 'mousemove' | 'leave' + * @param {Array.} [payload.x] x and y, which are mandatory, specify a point to + * trigger axisPointer and tooltip. + * @param {Array.} [payload.y] x and y, which are mandatory, specify a point to + * trigger axisPointer and tooltip. + * @param {Object} [payload.seriesIndex] finder, optional, restrict target axes. + * @param {Object} [payload.dataIndex] finder, restrict target axes. + * @param {Object} [payload.axesInfo] finder, restrict target axes. + * [{ + * axisDim: 'x'|'y'|'angle'|..., + * axisIndex: ..., + * value: ... + * }, ...] + * @param {Function} [payload.dispatchAction] + * @param {Object} [payload.tooltipOption] + * @param {Object|Array.|Function} [payload.position] Tooltip position, + * which can be specified in dispatchAction + * @param {module:echarts/model/Global} ecModel + * @param {module:echarts/ExtensionAPI} api + * @return {Object} content of event obj for echarts.connect. + */ + function axisTrigger(payload, ecModel, api) { + var currTrigger = payload.currTrigger; + var point = [payload.x, payload.y]; + var finder = payload; + var dispatchAction = payload.dispatchAction || zrUtil.bind(api.dispatchAction, api); + var coordSysAxesInfo = ecModel.getComponent('axisPointer').coordSysAxesInfo; + + if (illegalPoint(point)) { + // Used in the default behavior of `connection`: use the sample seriesIndex + // and dataIndex. And also used in the tooltipView trigger. + point = findPointFromSeries({ + seriesIndex: finder.seriesIndex, + // Do not use dataIndexInside from other ec instance. + // FIXME: auto detect it? + dataIndex: finder.dataIndex + }, ecModel).point; + } + var isIllegalPoint = illegalPoint(point); + + // Axis and value can be specified when calling dispatchAction({type: 'updateAxisPointer'}). + // Notice: In this case, it is difficult to get the `point` (which is necessary to show + // tooltip, so if point is not given, we just use the point found by sample seriesIndex + // and dataIndex. + var inputAxesInfo = finder.axesInfo; + + var axesInfo = coordSysAxesInfo.axesInfo; + var shouldHide = currTrigger === 'leave' || illegalPoint(point); + var outputFinder = {}; + + var showValueMap = {}; + var dataByCoordSys = {list: [], map: {}}; + var updaters = { + showPointer: curry(showPointer, showValueMap), + showTooltip: curry(showTooltip, dataByCoordSys) + }; + + // Process for triggered axes. + each(coordSysAxesInfo.coordSysMap, function (coordSys, coordSysKey) { + // If a point given, it must be contained by the coordinate system. + var coordSysContainsPoint = isIllegalPoint || coordSys.containPoint(point); + + each(coordSysAxesInfo.coordSysAxesInfo[coordSysKey], function (axisInfo, key) { + var axis = axisInfo.axis; + var inputAxisInfo = findInputAxisInfo(inputAxesInfo, axisInfo); + // If no inputAxesInfo, no axis is restricted. + if (!shouldHide && coordSysContainsPoint && (!inputAxesInfo || inputAxisInfo)) { + var val = inputAxisInfo && inputAxisInfo.value; + if (val == null && !isIllegalPoint) { + val = axis.pointToData(point); + } + val != null && processOnAxis(axisInfo, val, updaters, false, outputFinder); + } + }); + }); + + // Process for linked axes. + var linkTriggers = {}; + each(axesInfo, function (tarAxisInfo, tarKey) { + var linkGroup = tarAxisInfo.linkGroup; + + // If axis has been triggered in the previous stage, it should not be triggered by link. + if (linkGroup && !showValueMap[tarKey]) { + each(linkGroup.axesInfo, function (srcAxisInfo, srcKey) { + var srcValItem = showValueMap[srcKey]; + // If srcValItem exist, source axis is triggered, so link to target axis. + if (srcAxisInfo !== tarAxisInfo && srcValItem) { + var val = srcValItem.value; + linkGroup.mapper && (val = tarAxisInfo.axis.scale.parse(linkGroup.mapper( + val, makeMapperParam(srcAxisInfo), makeMapperParam(tarAxisInfo) + ))); + linkTriggers[tarAxisInfo.key] = val; + } + }); + } + }); + each(linkTriggers, function (val, tarKey) { + processOnAxis(axesInfo[tarKey], val, updaters, true, outputFinder); + }); + + updateModelActually(showValueMap, axesInfo, outputFinder); + dispatchTooltipActually(dataByCoordSys, point, payload, dispatchAction); + dispatchHighDownActually(axesInfo, dispatchAction, api); + + return outputFinder; + } + + function processOnAxis(axisInfo, newValue, updaters, dontSnap, outputFinder) { + var axis = axisInfo.axis; + + if (axis.scale.isBlank() || !axis.containData(newValue)) { + return; + } + + if (!axisInfo.involveSeries) { + updaters.showPointer(axisInfo, newValue); + return; + } + + // Heavy calculation. So put it after axis.containData checking. + var payloadInfo = buildPayloadsBySeries(newValue, axisInfo); + var payloadBatch = payloadInfo.payloadBatch; + var snapToValue = payloadInfo.snapToValue; + + // Fill content of event obj for echarts.connect. + // By defualt use the first involved series data as a sample to connect. + if (payloadBatch[0] && outputFinder.seriesIndex == null) { + zrUtil.extend(outputFinder, payloadBatch[0]); + } + + // If no linkSource input, this process is for collecting link + // target, where snap should not be accepted. + if (!dontSnap && axisInfo.snap) { + if (axis.containData(snapToValue) && snapToValue != null) { + newValue = snapToValue; + } + } + + updaters.showPointer(axisInfo, newValue, payloadBatch, outputFinder); + // Tooltip should always be snapToValue, otherwise there will be + // incorrect "axis value ~ series value" mapping displayed in tooltip. + updaters.showTooltip(axisInfo, payloadInfo, snapToValue); + } + + function buildPayloadsBySeries(value, axisInfo) { + var axis = axisInfo.axis; + var dim = axis.dim; + var snapToValue = value; + var payloadBatch = []; + var minDist = Number.MAX_VALUE; + var minDiff = -1; + + each(axisInfo.seriesModels, function (series, idx) { + var dataDim = series.coordDimToDataDim(dim); + var seriesNestestValue; + var dataIndices; + + if (series.getAxisTooltipData) { + var result = series.getAxisTooltipData(dataDim, value, axis); + dataIndices = result.dataIndices; + seriesNestestValue = result.nestestValue; + } + else { + dataIndices = series.getData().indicesOfNearest( + dataDim[0], + value, + // Add a threshold to avoid find the wrong dataIndex + // when data length is not same. + false, axis.type === 'category' ? 0.5 : null + ); + if (!dataIndices.length) { + return; + } + seriesNestestValue = series.getData().get(dataDim[0], dataIndices[0]); + } + + if (seriesNestestValue == null || !isFinite(seriesNestestValue)) { + return; + } + + var diff = value - seriesNestestValue; + var dist = Math.abs(diff); + // Consider category case + if (dist <= minDist) { + if (dist < minDist || (diff >= 0 && minDiff < 0)) { + minDist = dist; + minDiff = diff; + snapToValue = seriesNestestValue; + payloadBatch.length = 0; + } + each(dataIndices, function (dataIndex) { + payloadBatch.push({ + seriesIndex: series.seriesIndex, + dataIndexInside: dataIndex, + dataIndex: series.getData().getRawIndex(dataIndex) + }); + }); + } + }); + + return { + payloadBatch: payloadBatch, + snapToValue: snapToValue + }; + } + + function showPointer(showValueMap, axisInfo, value, payloadBatch) { + showValueMap[axisInfo.key] = {value: value, payloadBatch: payloadBatch}; + } + + function showTooltip(dataByCoordSys, axisInfo, payloadInfo, value) { + var payloadBatch = payloadInfo.payloadBatch; + var axis = axisInfo.axis; + var axisModel = axis.model; + var axisPointerModel = axisInfo.axisPointerModel; + + // If no data, do not create anything in dataByCoordSys, + // whose length will be used to judge whether dispatch action. + if (!axisInfo.triggerTooltip || !payloadBatch.length) { + return; + } + + var coordSysModel = axisInfo.coordSys.model; + var coordSysKey = modelHelper.makeKey(coordSysModel); + var coordSysItem = dataByCoordSys.map[coordSysKey]; + if (!coordSysItem) { + coordSysItem = dataByCoordSys.map[coordSysKey] = { + coordSysId: coordSysModel.id, + coordSysIndex: coordSysModel.componentIndex, + coordSysType: coordSysModel.type, + coordSysMainType: coordSysModel.mainType, + dataByAxis: [] + }; + dataByCoordSys.list.push(coordSysItem); + } + + coordSysItem.dataByAxis.push({ + axisDim: axis.dim, + axisIndex: axisModel.componentIndex, + axisType: axisModel.type, + axisId: axisModel.id, + value: value, + // Caustion: viewHelper.getValueLabel is actually on "view stage", which + // depends that all models have been updated. So it should not be performed + // here. Considering axisPointerModel used here is volatile, which is hard + // to be retrieve in TooltipView, we prepare parameters here. + valueLabelOpt: { + precision: axisPointerModel.get('label.precision'), + formatter: axisPointerModel.get('label.formatter') + }, + seriesDataIndices: payloadBatch.slice() + }); + } + + function updateModelActually(showValueMap, axesInfo, outputFinder) { + var outputAxesInfo = outputFinder.axesInfo = []; + // Basic logic: If no 'show' required, 'hide' this axisPointer. + each(axesInfo, function (axisInfo, key) { + var option = axisInfo.axisPointerModel.option; + var valItem = showValueMap[key]; + + if (valItem) { + !axisInfo.useHandle && (option.status = 'show'); + option.value = valItem.value; + // For label formatter param and highlight. + option.seriesDataIndices = (valItem.payloadBatch || []).slice(); + } + // When always show (e.g., handle used), remain + // original value and status. + else { + // If hide, value still need to be set, consider + // click legend to toggle axis blank. + !axisInfo.useHandle && (option.status = 'hide'); + } + + // If status is 'hide', should be no info in payload. + option.status === 'show' && outputAxesInfo.push({ + axisDim: axisInfo.axis.dim, + axisIndex: axisInfo.axis.model.componentIndex, + value: option.value + }); + }); + } + + function dispatchTooltipActually(dataByCoordSys, point, payload, dispatchAction) { + // Basic logic: If no showTip required, hideTip will be dispatched. + if (illegalPoint(point) || !dataByCoordSys.list.length) { + dispatchAction({type: 'hideTip'}); + return; + } + + // In most case only one axis (or event one series is used). It is + // convinient to fetch payload.seriesIndex and payload.dataIndex + // dirtectly. So put the first seriesIndex and dataIndex of the first + // axis on the payload. + var sampleItem = ((dataByCoordSys.list[0].dataByAxis[0] || {}).seriesDataIndices || [])[0] || {}; + + dispatchAction({ + type: 'showTip', + escapeConnect: true, + x: point[0], + y: point[1], + tooltipOption: payload.tooltipOption, + position: payload.position, + dataIndexInside: sampleItem.dataIndexInside, + dataIndex: sampleItem.dataIndex, + seriesIndex: sampleItem.seriesIndex, + dataByCoordSys: dataByCoordSys.list + }); + } + + function dispatchHighDownActually(axesInfo, dispatchAction, api) { + // FIXME + // highlight status modification shoule be a stage of main process? + // (Consider confilct (e.g., legend and axisPointer) and setOption) + + var zr = api.getZr(); + var highDownKey = 'axisPointerLastHighlights'; + var lastHighlights = get(zr)[highDownKey] || {}; + var newHighlights = get(zr)[highDownKey] = {}; + + // Update highlight/downplay status according to axisPointer model. + // Build hash map and remove duplicate incidentally. + each(axesInfo, function (axisInfo, key) { + var option = axisInfo.axisPointerModel.option; + option.status === 'show' && each(option.seriesDataIndices, function (batchItem) { + var key = batchItem.seriesIndex + ' | ' + batchItem.dataIndex; + newHighlights[key] = batchItem; + }); + }); + + // Diff. + var toHighlight = []; + var toDownplay = []; + zrUtil.each(lastHighlights, function (batchItem, key) { + !newHighlights[key] && toDownplay.push(batchItem); + }); + zrUtil.each(newHighlights, function (batchItem, key) { + !lastHighlights[key] && toHighlight.push(batchItem); + }); + + toDownplay.length && api.dispatchAction({ + type: 'downplay', escapeConnect: true, batch: toDownplay + }); + toHighlight.length && api.dispatchAction({ + type: 'highlight', escapeConnect: true, batch: toHighlight + }); + } + + function findInputAxisInfo(inputAxesInfo, axisInfo) { + for (var i = 0; i < (inputAxesInfo || []).length; i++) { + var inputAxisInfo = inputAxesInfo[i]; + if (axisInfo.axis.dim === inputAxisInfo.axisDim + && axisInfo.axis.model.componentIndex === inputAxisInfo.axisIndex + ) { + return inputAxisInfo; + } + } + } + + function makeMapperParam(axisInfo) { + var axisModel = axisInfo.axis.model; + var item = {}; + var dim = item.axisDim = axisInfo.axis.dim; + item.axisIndex = item[dim + 'AxisIndex'] = axisModel.componentIndex; + item.axisName = item[dim + 'AxisName'] = axisModel.name; + item.axisId = item[dim + 'AxisId'] = axisModel.id; + return item; + } + + function illegalPoint(point) { + return !point || point[0] == null || isNaN(point[0]) || point[1] == null || isNaN(point[1]); + } + + module.exports = axisTrigger; + + +/***/ }, +/* 300 */ +/***/ function(module, exports, __webpack_require__) { + + + + var zrUtil = __webpack_require__(4); + var modelUtil = __webpack_require__(5); + + /** + * @param {Object} finder contains {seriesIndex, dataIndex, dataIndexInside} + * @param {module:echarts/model/Global} ecModel + * @return {Object} {point: [x, y], el: ...} point Will not be null. + */ + module.exports = function (finder, ecModel) { + var point = []; + var seriesIndex = finder.seriesIndex; + var seriesModel; + if (seriesIndex == null || !( + seriesModel = ecModel.getSeriesByIndex(seriesIndex) + )) { + return {point: []}; + } + + var data = seriesModel.getData(); + var dataIndex = modelUtil.queryDataIndex(data, finder); + if (dataIndex == null || zrUtil.isArray(dataIndex)) { + return {point: []}; + } + + var el = data.getItemGraphicEl(dataIndex); + var coordSys = seriesModel.coordinateSystem; + + if (seriesModel.getTooltipPosition) { + point = seriesModel.getTooltipPosition(dataIndex) || []; + } + else if (coordSys && coordSys.dataToPoint) { + point = coordSys.dataToPoint( + data.getValues( + zrUtil.map(coordSys.dimensions, function (dim) { + return seriesModel.coordDimToDataDim(dim)[0]; + }), dataIndex, true + ) + ) || []; + } + else if (el) { + // Use graphic bounding rect + var rect = el.getBoundingRect().clone(); + rect.applyTransform(el.transform); + point = [ + rect.x + rect.width / 2, + rect.y + rect.height / 2 + ]; + } + + return {point: point, el: el}; + }; + + + + +/***/ }, +/* 301 */ +/***/ function(module, exports, __webpack_require__) { + + + + var echarts = __webpack_require__(1); + + var AxisPointerModel = echarts.extendComponentModel({ + + type: 'axisPointer', + + coordSysAxesInfo: null, + + defaultOption: { + // 'auto' means that show when triggered by tooltip or handle. + show: 'auto', + // 'click' | 'mousemove' | 'none' + triggerOn: null, // set default in AxisPonterView.js + + zlevel: 0, + z: 50, + + type: 'line', + // axispointer triggered by tootip determine snap automatically, + // see `modelHelper`. + snap: false, + triggerTooltip: true, + + value: null, + status: null, // Init value depends on whether handle is used. + + // [group0, group1, ...] + // Each group can be: { + // mapper: function () {}, + // singleTooltip: 'multiple', // 'multiple' or 'single' + // xAxisId: ..., + // yAxisName: ..., + // angleAxisIndex: ... + // } + // mapper: can be ignored. + // input: {axisInfo, value} + // output: {axisInfo, value} + link: [], + + // Do not set 'auto' here, otherwise global animation: false + // will not effect at this axispointer. + animation: null, + animationDurationUpdate: 200, + + lineStyle: { + color: '#aaa', + width: 1, + type: 'solid' + }, + + shadowStyle: { + color: 'rgba(150,150,150,0.3)' + }, + + label: { + show: true, + formatter: null, // string | Function + precision: 'auto', // Or a number like 0, 1, 2 ... + margin: 3, + textStyle: { + color: '#fff' + }, + padding: [5, 7, 5, 7], + backgroundColor: 'auto', // default: axis line color + borderColor: null, + borderWidth: 0, + shadowBlur: 3, + shadowColor: '#aaa' + // Considering applicability, common style should + // better not have shadowOffset. + // shadowOffsetX: 0, + // shadowOffsetY: 2 + }, + + handle: { + show: false, + 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', // jshint ignore:line + size: 45, + // handle margin is from symbol center to axis, which is stable when circular move. + margin: 50, + // color: '#1b8bbd' + // color: '#2f4554' + color: '#333', + shadowBlur: 3, + shadowColor: '#aaa', + shadowOffsetX: 0, + shadowOffsetY: 2, + + // For mobile performance + throttle: 40 + } + } + + }); + + module.exports = AxisPointerModel; + + + +/***/ }, +/* 302 */ +/***/ function(module, exports, __webpack_require__) { + + + + var globalListener = __webpack_require__(303); + + var AxisPonterView = __webpack_require__(1).extendComponentView({ + + type: 'axisPointer', + + render: function (globalAxisPointerModel, ecModel, api) { + var globalTooltipModel = ecModel.getComponent('tooltip'); + var triggerOn = globalAxisPointerModel.get('triggerOn') + || (globalTooltipModel && globalTooltipModel.get('triggerOn') || 'mousemove|click'); + + // Register global listener in AxisPointerView to enable + // AxisPointerView to be independent to Tooltip. + globalListener.register( + 'axisPointer', + api, + function (currTrigger, e, dispatchAction) { + // If 'none', it is not controlled by mouse totally. + if (triggerOn !== 'none' + && (currTrigger === 'leave' || triggerOn.indexOf(currTrigger) >= 0) + ) { + dispatchAction({ + type: 'updateAxisPointer', + currTrigger: currTrigger, + x: e && e.offsetX, + y: e && e.offsetY + }); + } + } + ); + }, + + /** + * @override + */ + remove: function (ecModel, api) { + globalListener.disopse(api.getZr(), 'axisPointer'); + AxisPonterView.superApply(this._model, 'remove', arguments); + }, + + /** + * @override + */ + dispose: function (ecModel, api) { + globalListener.unregister('axisPointer', api); + AxisPonterView.superApply(this._model, 'dispose', arguments); + } + + }); + + + +/***/ }, +/* 303 */ +/***/ function(module, exports, __webpack_require__) { + + + + var env = __webpack_require__(2); + var zrUtil = __webpack_require__(4); + var get = __webpack_require__(5).makeGetter(); + + var each = zrUtil.each; + + var globalListener = {}; + + /** + * @param {string} key + * @param {module:echarts/ExtensionAPI} api + * @param {Function} handler + * param: {string} currTrigger + * param: {Array.} point + */ + globalListener.register = function (key, api, handler) { + if (env.node) { + return; + } + + var zr = api.getZr(); + get(zr).records || (get(zr).records = {}); + + initGlobalListeners(zr, api); + + var record = get(zr).records[key] || (get(zr).records[key] = {}); + record.handler = handler; + }; + + function initGlobalListeners(zr, api) { + if (get(zr).initialized) { + return; + } + + get(zr).initialized = true; + + useHandler('click', zrUtil.curry(doEnter, 'click')); + useHandler('mousemove', zrUtil.curry(doEnter, 'mousemove')); + // useHandler('mouseout', onLeave); + useHandler('globalout', onLeave); + + function useHandler(eventType, cb) { + zr.on(eventType, function (e) { + var dis = makeDispatchAction(api); + + each(get(zr).records, function (record) { + record && cb(record, e, dis.dispatchAction); + }); + + dispatchTooltipFinally(dis.pendings, api); + }); + } + } + + function dispatchTooltipFinally(pendings, api) { + var showLen = pendings.showTip.length; + var hideLen = pendings.hideTip.length; + + var actuallyPayload; + if (showLen) { + actuallyPayload = pendings.showTip[showLen - 1]; + } + else if (hideLen) { + actuallyPayload = pendings.hideTip[hideLen - 1]; + } + if (actuallyPayload) { + actuallyPayload.dispatchAction = null; + api.dispatchAction(actuallyPayload); + } + } + + function onLeave(record, e, dispatchAction) { + record.handler('leave', null, dispatchAction); + } + + function doEnter(currTrigger, record, e, dispatchAction) { + record.handler(currTrigger, e, dispatchAction); + } + + function makeDispatchAction(api) { + var pendings = { + showTip: [], + hideTip: [] + }; + // FIXME + // better approach? + // 'showTip' and 'hideTip' can be triggered by axisPointer and tooltip, + // which may be conflict, (axisPointer call showTip but tooltip call hideTip); + // So we have to add "final stage" to merge those dispatched actions. + var dispatchAction = function (payload) { + var pendingList = pendings[payload.type]; + if (pendingList) { + pendingList.push(payload); + } + else { + payload.dispatchAction = dispatchAction; + api.dispatchAction(payload); + } + }; + + return { + dispatchAction: dispatchAction, + pendings: pendings + }; + } + + /** + * @param {string} key + * @param {module:echarts/ExtensionAPI} api + */ + globalListener.unregister = function (key, api) { + if (env.node) { + return; + } + var zr = api.getZr(); + var record = (get(zr).records || {})[key]; + if (record) { + get(zr).records[key] = null; + } + }; + + module.exports = globalListener; + + +/***/ }, +/* 304 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + + var graphic = __webpack_require__(18); + var BaseAxisPointer = __webpack_require__(305); + var viewHelper = __webpack_require__(306); + var cartesianAxisHelper = __webpack_require__(138); + var AxisView = __webpack_require__(136); + + var CartesianAxisPointer = BaseAxisPointer.extend({ + + /** + * @override + */ + makeElOption: function (elOption, value, axisModel, axisPointerModel, api) { + var axis = axisModel.axis; + var grid = axis.grid; + var axisPointerType = axisPointerModel.get('type'); + var otherExtent = getCartesian(grid, axis).getOtherAxis(axis).getGlobalExtent(); + var pixelValue = axis.toGlobalCoord(axis.dataToCoord(value, true)); + + if (axisPointerType && axisPointerType !== 'none') { + var elStyle = viewHelper.buildElStyle(axisPointerModel); + var pointerOption = pointerShapeBuilder[axisPointerType]( + axis, pixelValue, otherExtent, elStyle + ); + pointerOption.style = elStyle; + elOption.graphicKey = pointerOption.type; + elOption.pointer = pointerOption; + } + + var layoutInfo = cartesianAxisHelper.layout(grid.model, axisModel); + viewHelper.buildCartesianSingleLabelElOption( + value, elOption, layoutInfo, axisModel, axisPointerModel, api + ); + }, + + /** + * @override + */ + getHandleTransform: function (value, axisModel, axisPointerModel) { + var layoutInfo = cartesianAxisHelper.layout(axisModel.axis.grid.model, axisModel, { + labelInside: false + }); + layoutInfo.labelMargin = axisPointerModel.get('handle.margin'); + return { + position: viewHelper.getTransformedPosition(axisModel.axis, value, layoutInfo), + rotation: layoutInfo.rotation + (layoutInfo.labelDirection < 0 ? Math.PI : 0) + }; + }, + + /** + * @override + */ + updateHandleTransform: function (transform, delta, axisModel, axisPointerModel) { + var axis = axisModel.axis; + var grid = axis.grid; + var axisExtent = axis.getGlobalExtent(true); + var otherExtent = getCartesian(grid, axis).getOtherAxis(axis).getGlobalExtent(); + var dimIndex = axis.dim === 'x' ? 0 : 1; + + var currPosition = transform.position; + currPosition[dimIndex] += delta[dimIndex]; + currPosition[dimIndex] = Math.min(axisExtent[1], currPosition[dimIndex]); + currPosition[dimIndex] = Math.max(axisExtent[0], currPosition[dimIndex]); + + var cursorOtherValue = (otherExtent[1] + otherExtent[0]) / 2; + var cursorPoint = [cursorOtherValue, cursorOtherValue]; + cursorPoint[dimIndex] = currPosition[dimIndex]; + + // Make tooltip do not overlap axisPointer and in the middle of the grid. + var tooltipOptions = [{verticalAlign: 'middle'}, {align: 'center'}]; + + return { + position: currPosition, + rotation: transform.rotation, + cursorPoint: cursorPoint, + tooltipOption: tooltipOptions[dimIndex] + }; + } + + }); + + function getCartesian(grid, axis) { + var opt = {}; + opt[axis.dim + 'AxisIndex'] = axis.index; + return grid.getCartesian(opt); + } + + var pointerShapeBuilder = { + + line: function (axis, pixelValue, otherExtent, elStyle) { + var targetShape = viewHelper.makeLineShape( + [pixelValue, otherExtent[0]], + [pixelValue, otherExtent[1]], + getAxisDimIndex(axis) + ); + graphic.subPixelOptimizeLine({ + shape: targetShape, + style: elStyle + }); + return { + type: 'Line', + shape: targetShape + }; + }, + + shadow: function (axis, pixelValue, otherExtent, elStyle) { + var bandWidth = axis.getBandWidth(); + var span = otherExtent[1] - otherExtent[0]; + return { + type: 'Rect', + shape: viewHelper.makeRectShape( + [pixelValue - bandWidth / 2, otherExtent[0]], + [bandWidth, span], + getAxisDimIndex(axis) + ) + }; + } + }; + + function getAxisDimIndex(axis) { + return axis.dim === 'x' ? 0 : 1; + } + + AxisView.registerAxisPointerClass('CartesianAxisPointer', CartesianAxisPointer); + + module.exports = CartesianAxisPointer; + + +/***/ }, +/* 305 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + + var zrUtil = __webpack_require__(4); + var clazzUtil = __webpack_require__(13); + var graphic = __webpack_require__(18); + var get = __webpack_require__(5).makeGetter(); + var axisPointerModelHelper = __webpack_require__(137); + var eventTool = __webpack_require__(88); + var throttle = __webpack_require__(81); + + var clone = zrUtil.clone; + var bind = zrUtil.bind; + + /** + * Base axis pointer class in 2D. + * Implemenents {module:echarts/component/axis/IAxisPointer}. + */ + function BaseAxisPointer () { + } + + BaseAxisPointer.prototype = { + + /** + * @private + */ + _group: null, + + /** + * @private + */ + _lastGraphicKey: null, + + /** + * @private + */ + _handle: null, + + /** + * @private + */ + _dragging: false, + + /** + * @private + */ + _lastValue: null, + + /** + * @private + */ + _lastStatus: null, + + /** + * @private + */ + _payloadInfo: null, + + /** + * In px, arbitrary value. Do not set too small, + * no animation is ok for most cases. + * @protected + */ + animationThreshold: 15, + + /** + * @implement + */ + render: function (axisModel, axisPointerModel, api, forceRender) { + var value = axisPointerModel.get('value'); + var status = axisPointerModel.get('status'); + + // Bind them to `this`, not in closure, otherwise they will not + // be replaced when user calling setOption in not merge mode. + this._axisModel = axisModel; + this._axisPointerModel = axisPointerModel; + this._api = api; + + // Optimize: `render` will be called repeatly during mouse move. + // So it is power consuming if performing `render` each time, + // especially on mobile device. + if (!forceRender + && this._lastValue === value + && this._lastStatus === status + ) { + return; + } + this._lastValue = value; + this._lastStatus = status; + + var group = this._group; + var handle = this._handle; + + if (!status || status === 'hide') { + // Do not clear here, for animation better. + group && group.hide(); + handle && handle.hide(); + return; + } + group && group.show(); + handle && handle.show(); + + // Otherwise status is 'show' + var elOption = {}; + this.makeElOption(elOption, value, axisModel, axisPointerModel, api); + + // Enable change axis pointer type. + var graphicKey = elOption.graphicKey; + if (graphicKey !== this._lastGraphicKey) { + this.clear(api); + } + this._lastGraphicKey = graphicKey; + + var moveAnimation = this._moveAnimation = + this.determineAnimation(axisModel, axisPointerModel); + + if (!group) { + group = this._group = new graphic.Group(); + this.createPointerEl(group, elOption, axisModel, axisPointerModel); + this.createLabelEl(group, elOption, axisModel, axisPointerModel); + api.getZr().add(group); + } + else { + var doUpdateProps = zrUtil.curry(updateProps, axisPointerModel, moveAnimation); + this.updatePointerEl(group, elOption, doUpdateProps, axisPointerModel); + this.updateLabelEl(group, elOption, doUpdateProps, axisPointerModel); + } + + updateMandatoryProps(group, axisPointerModel, true); + + this._renderHandle(value); + }, + + /** + * @implement + */ + remove: function (api) { + this.clear(api); + }, + + /** + * @implement + */ + dispose: function (api) { + this.clear(api); + }, + + /** + * @protected + */ + determineAnimation: function (axisModel, axisPointerModel) { + var animation = axisPointerModel.get('animation'); + var axis = axisModel.axis; + var isCategoryAxis = axis.type === 'category'; + var useSnap = axisPointerModel.get('snap'); + + // Value axis without snap always do not snap. + if (!useSnap && !isCategoryAxis) { + return false; + } + + if (animation === 'auto' || animation == null) { + var animationThreshold = this.animationThreshold; + if (isCategoryAxis && axis.getBandWidth() > animationThreshold) { + return true; + } + + // It is important to auto animation when snap used. Consider if there is + // a dataZoom, animation will be disabled when too many points exist, while + // it will be enabled for better visual effect when little points exist. + if (useSnap) { + var seriesDataCount = axisPointerModelHelper.getAxisInfo(axisModel).seriesDataCount; + var axisExtent = axis.getExtent(); + // Approximate band width + return Math.abs(axisExtent[0] - axisExtent[1]) / seriesDataCount > animationThreshold; + } + + return false; + } + + return animation === true; + }, + + /** + * add {pointer, label, graphicKey} to elOption + * @protected + */ + makeElOption: function (elOption, value, axisModel, axisPointerModel, api) { + // Shoule be implemenented by sub-class. + }, + + /** + * @protected + */ + createPointerEl: function (group, elOption, axisModel, axisPointerModel) { + var pointerOption = elOption.pointer; + if (pointerOption) { + var pointerEl = get(group).pointerEl = new graphic[pointerOption.type]( + clone(elOption.pointer) + ); + group.add(pointerEl); + } + }, + + /** + * @protected + */ + createLabelEl: function (group, elOption, axisModel, axisPointerModel) { + if (elOption.label) { + var labelEl = get(group).labelEl = new graphic.Rect( + clone(elOption.label) + ); + + group.add(labelEl); + updateLabelShowHide(labelEl, axisPointerModel); + } + }, + + /** + * @protected + */ + updatePointerEl: function (group, elOption, updateProps) { + var pointerEl = get(group).pointerEl; + if (pointerEl) { + pointerEl.setStyle(elOption.pointer.style); + updateProps(pointerEl, {shape: elOption.pointer.shape}); + } + }, + + /** + * @protected + */ + updateLabelEl: function (group, elOption, updateProps, axisPointerModel) { + var labelEl = get(group).labelEl; + if (labelEl) { + labelEl.setStyle(elOption.label.style); + updateProps(labelEl, { + // Consider text length change in vertical axis, animation should + // be used on shape, otherwise the effect will be weird. + shape: elOption.label.shape, + position: elOption.label.position + }); + + updateLabelShowHide(labelEl, axisPointerModel); + } + }, + + /** + * @private + */ + _renderHandle: function (value) { + if (this._dragging || !this.updateHandleTransform) { + return; + } + + var axisPointerModel = this._axisPointerModel; + var zr = this._api.getZr(); + var handle = this._handle; + var handleModel = axisPointerModel.getModel('handle'); + + var status = axisPointerModel.get('status'); + if (!handleModel.get('show') || !status || status === 'hide') { + handle && zr.remove(handle); + this._handle = null; + return; + } + + var isInit; + if (!this._handle) { + isInit = true; + handle = this._handle = createIcon(handleModel, { + onmousemove: function (e) { + // Fot mobile devicem, prevent screen slider on the button. + eventTool.stop(e.event); + }, + onmousedown: bind(this._onHandleDragMove, this, 0, 0), + drift: bind(this._onHandleDragMove, this), + ondragend: bind(this._onHandleDragEnd, this) + }); + zr.add(handle); + } + + updateMandatoryProps(handle, axisPointerModel, false); + + // update style + var includeStyles = [ + 'color', 'borderColor', 'borderWidth', 'opacity', + 'shadowColor', 'shadowBlur', 'shadowOffsetX', 'shadowOffsetY' + ]; + handle.setStyle(handleModel.getItemStyle(null, includeStyles)); + + // update position + var handleSize = handleModel.get('size'); + if (!zrUtil.isArray(handleSize)) { + handleSize = [handleSize, handleSize]; + } + handle.attr('scale', [handleSize[0] / 2, handleSize[1] / 2]); + + throttle.createOrUpdate( + this, + '_doDispatchAxisPointer', + handleModel.get('throttle') || 0, + 'fixRate' + ); + + this._moveHandleToValue(value, isInit); + }, + + /** + * @private + */ + _moveHandleToValue: function (value, isInit) { + updateProps( + this._axisPointerModel, + !isInit && this._moveAnimation, + this._handle, + getHandleTransProps(this.getHandleTransform( + value, this._axisModel, this._axisPointerModel + )) + ); + }, + + /** + * @private + */ + _onHandleDragMove: function (dx, dy) { + var handle = this._handle; + if (!handle) { + return; + } + + this._dragging = true; + + // Persistent for throttle. + var trans = this.updateHandleTransform( + getHandleTransProps(handle), + [dx, dy], + this._axisModel, + this._axisPointerModel + ); + this._payloadInfo = trans; + + handle.stopAnimation(); + handle.attr(getHandleTransProps(trans)); + get(handle).lastProp = null; + + this._doDispatchAxisPointer(); + }, + + /** + * Throttled method. + * @private + */ + _doDispatchAxisPointer: function () { + var handle = this._handle; + if (!handle) { + return; + } + + var payloadInfo = this._payloadInfo; + var axisModel = this._axisModel; + this._api.dispatchAction({ + type: 'updateAxisPointer', + x: payloadInfo.cursorPoint[0], + y: payloadInfo.cursorPoint[1], + tooltipOption: payloadInfo.tooltipOption, + axesInfo: [{ + axisDim: axisModel.axis.dim, + axisIndex: axisModel.componentIndex + }] + }); + }, + + /** + * @private + */ + _onHandleDragEnd: function (moveAnimation) { + this._dragging = false; + var handle = this._handle; + if (!handle) { + return; + } + + var value = this._axisPointerModel.get('value'); + // Consider snap or categroy axis, handle may be not consistent with + // axisPointer. So move handle to align the exact value position when + // drag ended. + this._moveHandleToValue(value); + + // For the effect: tooltip will be shown when finger holding on handle + // button, and will be hidden after finger left handle button. + this._api.dispatchAction({ + type: 'hideTip' + }); + }, + + /** + * Should be implemenented by sub-class if support `handle`. + * @protected + * @param {number} value + * @param {module:echarts/model/Model} axisModel + * @param {module:echarts/model/Model} axisPointerModel + * @return {Object} {position: [x, y], rotation: 0} + */ + getHandleTransform: null, + + /** + * * Should be implemenented by sub-class if support `handle`. + * @protected + * @param {Object} transform {position, rotation} + * @param {Array.} delta [dx, dy] + * @param {module:echarts/model/Model} axisModel + * @param {module:echarts/model/Model} axisPointerModel + * @return {Object} {position: [x, y], rotation: 0, cursorPoint: [x, y]} + */ + updateHandleTransform: null, + + /** + * @private + */ + clear: function (api) { + this._lastValue = null; + this._lastStatus = null; + + var zr = api.getZr(); + var group = this._group; + var handle = this._handle; + if (zr && group) { + this._lastGraphicKey = null; + group && zr.remove(group); + handle && zr.remove(handle); + this._group = null; + this._handle = null; + this._payloadInfo = null; + } + }, + + /** + * @protected + */ + doClear: function () { + // Implemented by sub-class if necessary. + }, + + /** + * @protected + * @param {Array.} xy + * @param {Array.} wh + * @param {number} [xDimIndex=0] or 1 + */ + buildLabel: function (xy, wh, xDimIndex) { + xDimIndex = xDimIndex || 0; + return { + x: xy[xDimIndex], + y: xy[1 - xDimIndex], + width: wh[xDimIndex], + height: wh[1 - xDimIndex] + }; + } + }; + + BaseAxisPointer.prototype.constructor = BaseAxisPointer; + + + function updateProps(animationModel, moveAnimation, el, props) { + // Animation optimize. + if (!propsEqual(get(el).lastProp, props)) { + get(el).lastProp = props; + moveAnimation + ? graphic.updateProps(el, props, animationModel) + : (el.stopAnimation(), el.attr(props)); + } + } + + function propsEqual(lastProps, newProps) { + if (zrUtil.isObject(lastProps) && zrUtil.isObject(newProps)) { + var equals = true; + zrUtil.each(newProps, function (item, key) { + equals &= propsEqual(lastProps[key], item); + }); + return !!equals; + } + else { + return lastProps === newProps; + } + } + + function updateLabelShowHide(labelEl, axisPointerModel) { + labelEl[axisPointerModel.get('label.show') ? 'show' : 'hide'](); + } + + function getHandleTransProps(trans) { + return { + position: trans.position.slice(), + rotation: trans.rotation || 0 + }; + } + + function createIcon(handleModel, handlers) { + var iconStr = handleModel.get('icon'); + var style = { + x: -1, y: -1, width: 2, height: 2 + }; + var opt = zrUtil.extend({ + style: { + strokeNoScale: true + }, + rectHover: true, + cursor: 'move', + draggable: true + }, handlers); + + return iconStr.indexOf('image://') === 0 + ? ( + style.image = iconStr.slice(8), + opt.style = style, + new graphic.Image(opt) + ) + : graphic.makePath( + iconStr.replace('path://', ''), + opt, + style, + 'center' + ); + } + + function updateMandatoryProps(group, axisPointerModel, silent) { + var z = axisPointerModel.get('z'); + var zlevel = axisPointerModel.get('zlevel'); + + group && group.traverse(function (el) { + if (el.type !== 'group') { + z != null && (el.z = z); + zlevel != null && (el.zlevel = zlevel); + el.silent = silent; + } + }); + } + + clazzUtil.enableClassExtend(BaseAxisPointer); + + module.exports = BaseAxisPointer; + + +/***/ }, +/* 306 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + + var zrUtil = __webpack_require__(4); + var graphic = __webpack_require__(18); + var textContain = __webpack_require__(8); + var formatUtil = __webpack_require__(6); + var matrix = __webpack_require__(11); + var axisHelper = __webpack_require__(101); + var AxisBuilder = __webpack_require__(135); + + var helper = {}; + + /** + * @param {module:echarts/model/Model} axisPointerModel + */ + helper.buildElStyle = function (axisPointerModel) { + var axisPointerType = axisPointerModel.get('type'); + var styleModel = axisPointerModel.getModel(axisPointerType + 'Style'); + var style; + if (axisPointerType === 'line') { + style = styleModel.getLineStyle(); + style.fill = null; + } + else if (axisPointerType === 'shadow') { + style = styleModel.getAreaStyle(); + style.stroke = null; + } + return style; + }; + + /** + * @param {Function} labelPos {align, verticalAlign, position} + */ + helper.buildLabelElOption = function ( + elOption, axisModel, axisPointerModel, api, labelPos + ) { + var value = axisPointerModel.get('value'); + var text = helper.getValueLabel( + value, axisModel.axis, axisModel.ecModel, + axisPointerModel.get('seriesDataIndices'), + { + precision: axisPointerModel.get('label.precision'), + formatter: axisPointerModel.get('label.formatter') + } + ); + var labelModel = axisPointerModel.getModel('label'); + var textStyleModel = labelModel.getModel('textStyle'); + var paddings = formatUtil.normalizeCssArray(labelModel.get('padding') || 0); + + var font = textStyleModel.getFont(); + var textRect = textContain.getBoundingRect( + text, font, labelPos.textAlign, labelPos.textBaseline + ); + + var position = labelPos.position; + var width = textRect.width + paddings[1] + paddings[3]; + var height = textRect.height + paddings[0] + paddings[2]; + + // Adjust by align. + var align = labelPos.align; + align === 'right' && (position[0] -= width); + align === 'center' && (position[0] -= width / 2); + var verticalAlign = labelPos.verticalAlign; + verticalAlign === 'bottom' && (position[1] -= height); + verticalAlign === 'middle' && (position[1] -= height / 2); + + // Not overflow ec container + confineInContainer(position, width, height, api); + + var bgColor = labelModel.get('backgroundColor'); + if (!bgColor || bgColor === 'auto') { + bgColor = axisModel.get('axisLine.lineStyle.color'); + } + + elOption.label = { + shape: {x: 0, y: 0, width: width, height: height, r: labelModel.get('borderRadius')}, + position: position.slice(), + style: { + text: text, + textFont: font, + textFill: textStyleModel.getTextColor(), + textPosition: 'inside', + fill: bgColor, + stroke: labelModel.get('borderColor') || 'transparent', + lineWidth: labelModel.get('borderWidth') || 0, + shadowBlur: labelModel.get('shadowBlur'), + shadowColor: labelModel.get('shadowColor'), + shadowOffsetX: labelModel.get('shadowOffsetX'), + shadowOffsetY: labelModel.get('shadowOffsetY') + }, + // Lable should be over axisPointer. + z2: 10 + }; + }; + + // Do not overflow ec container + function confineInContainer(position, width, height, api) { + var viewWidth = api.getWidth(); + var viewHeight = api.getHeight(); + position[0] = Math.min(position[0] + width, viewWidth) - width; + position[1] = Math.min(position[1] + height, viewHeight) - height; + position[0] = Math.max(position[0], 0); + position[1] = Math.max(position[1], 0); + } + + /** + * @param {number} value + * @param {module:echarts/coord/Axis} axis + * @param {module:echarts/model/Global} ecModel + * @param {Object} opt + * @param {Array.} seriesDataIndices + * @param {number|string} opt.precision 'auto' or a number + * @param {string|Function} opt.formatter label formatter + */ + helper.getValueLabel = function (value, axis, ecModel, seriesDataIndices, opt) { + var text = axis.scale.getLabel( + // If `precision` is set, width can be fixed (like '12.00500'), which + // helps to debounce when when moving label. + value, {precision: opt.precision} + ); + var formatter = opt.formatter; + + if (formatter) { + var params = { + value: axisHelper.getAxisRawValue(axis, value), + seriesData: [] + }; + zrUtil.each(seriesDataIndices, function (idxItem) { + var series = ecModel.getSeriesByIndex(idxItem.seriesIndex); + var dataIndex = idxItem.dataIndexInside; + var dataParams = series && series.getDataParams(dataIndex); + dataParams && params.seriesData.push(dataParams); + }); + + if (zrUtil.isString(formatter)) { + text = formatter.replace('{value}', text); + } + else if (zrUtil.isFunction(formatter)) { + text = formatter(params); + } + } + + return text; + }; + + /** + * @param {module:echarts/coord/Axis} axis + * @param {number} value + * @param {Object} layoutInfo { + * rotation, position, labelOffset, labelDirection, labelMargin + * } + */ + helper.getTransformedPosition = function (axis, value, layoutInfo) { + var transform = matrix.create(); + matrix.rotate(transform, transform, layoutInfo.rotation); + matrix.translate(transform, transform, layoutInfo.position); + + return graphic.applyTransform([ + axis.dataToCoord(value), + (layoutInfo.labelOffset || 0) + + (layoutInfo.labelDirection || 1) * (layoutInfo.labelMargin || 0) + ], transform); + }; + + helper.buildCartesianSingleLabelElOption = function ( + value, elOption, layoutInfo, axisModel, axisPointerModel, api + ) { + var textLayout = AxisBuilder.innerTextLayout( + layoutInfo.rotation, 0, layoutInfo.labelDirection + ); + layoutInfo.labelMargin = axisPointerModel.get('label.margin'); + helper.buildLabelElOption(elOption, axisModel, axisPointerModel, api, { + position: helper.getTransformedPosition(axisModel.axis, value, layoutInfo), + align: textLayout.textAlign, + verticalAlign: textLayout.textVerticalAlign + }); + }; + + /** + * @param {Array.} p1 + * @param {Array.} p2 + * @param {number} [xDimIndex=0] or 1 + */ + helper.makeLineShape = function (p1, p2, xDimIndex) { + xDimIndex = xDimIndex || 0; + return { + x1: p1[xDimIndex], + y1: p1[1 - xDimIndex], + x2: p2[xDimIndex], + y2: p2[1 - xDimIndex] + }; + }; + + /** + * @param {Array.} xy + * @param {Array.} wh + * @param {number} [xDimIndex=0] or 1 + */ + helper.makeRectShape = function (xy, wh, xDimIndex) { + xDimIndex = xDimIndex || 0; + return { + x: xy[xDimIndex], + y: xy[1 - xDimIndex], + width: wh[xDimIndex], + height: wh[1 - xDimIndex] + }; + }; + + helper.makeSectorShape = function (cx, cy, r0, r, startAngle, endAngle) { + return { + cx: cx, + cy: cy, + r0: r0, + r: r, + startAngle: startAngle, + endAngle: endAngle, + clockwise: true + }; + }; + + module.exports = helper; + + +/***/ }, +/* 307 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + + var graphic = __webpack_require__(18); + var BaseAxisPointer = __webpack_require__(305); + var viewHelper = __webpack_require__(306); + var singleAxisHelper = __webpack_require__(296); + var AxisView = __webpack_require__(136); + + var XY = ['x', 'y']; + var WH = ['width', 'height']; + + var SingleAxisPointer = BaseAxisPointer.extend({ + + /** + * @override + */ + makeElOption: function (elOption, value, axisModel, axisPointerModel, api) { + var axis = axisModel.axis; + var coordSys = axis.coordinateSystem; + var otherExtent = getGlobalExtent(coordSys, 1 - getPointDimIndex(axis)); + var pixelValue = coordSys.dataToPoint(value)[0]; + + var axisPointerType = axisPointerModel.get('type'); + if (axisPointerType && axisPointerType !== 'none') { + var elStyle = viewHelper.buildElStyle(axisPointerModel); + var pointerOption = pointerShapeBuilder[axisPointerType]( + axis, pixelValue, otherExtent, elStyle + ); + pointerOption.style = elStyle; + + elOption.graphicKey = pointerOption.type; + elOption.pointer = pointerOption; + } + + var layoutInfo = singleAxisHelper.layout(axisModel); + viewHelper.buildCartesianSingleLabelElOption( + value, elOption, layoutInfo, axisModel, axisPointerModel, api + ); + }, + + /** + * @override + */ + getHandleTransform: function (value, axisModel, axisPointerModel) { + var layoutInfo = singleAxisHelper.layout(axisModel, {labelInside: false}); + layoutInfo.labelMargin = axisPointerModel.get('handle.margin'); + return { + position: viewHelper.getTransformedPosition(axisModel.axis, value, layoutInfo), + rotation: layoutInfo.rotation + (layoutInfo.labelDirection < 0 ? Math.PI : 0) + }; + }, + + /** + * @override + */ + updateHandleTransform: function (transform, delta, axisModel, axisPointerModel) { + var axis = axisModel.axis; + var coordSys = axis.coordinateSystem; + var dimIndex = getPointDimIndex(axis); + var axisExtent = getGlobalExtent(coordSys, dimIndex); + var currPosition = transform.position; + currPosition[dimIndex] += delta[dimIndex]; + currPosition[dimIndex] = Math.min(axisExtent[1], currPosition[dimIndex]); + currPosition[dimIndex] = Math.max(axisExtent[0], currPosition[dimIndex]); + var otherExtent = getGlobalExtent(coordSys, 1 - dimIndex); + var cursorOtherValue = (otherExtent[1] + otherExtent[0]) / 2; + var cursorPoint = [cursorOtherValue, cursorOtherValue]; + cursorPoint[dimIndex] = currPosition[dimIndex]; + + return { + position: currPosition, + rotation: transform.rotation, + cursorPoint: cursorPoint, + tooltipOption: { + verticalAlign: 'middle' + } + }; + } + }); + + var pointerShapeBuilder = { + + line: function (axis, pixelValue, otherExtent, elStyle) { + var targetShape = viewHelper.makeLineShape( + [pixelValue, otherExtent[0]], + [pixelValue, otherExtent[1]], + getPointDimIndex(axis) + ); + graphic.subPixelOptimizeLine({ + shape: targetShape, + style: elStyle + }); + return { + type: 'Line', + shape: targetShape + }; + }, + + shadow: function (axis, pixelValue, otherExtent, elStyle) { + var bandWidth = axis.getBandWidth(); + var span = otherExtent[1] - otherExtent[0]; + return { + type: 'Rect', + shape: viewHelper.makeRectShape( + [pixelValue - bandWidth / 2, otherExtent[0]], + [bandWidth, span], + getPointDimIndex(axis) + ) + }; + } + }; + + function getPointDimIndex(axis) { + return axis.isHorizontal() ? 0 : 1; + } + + function getGlobalExtent(coordSys, dimIndex) { + var rect = coordSys.getRect(); + return [rect[XY[dimIndex]], rect[XY[dimIndex]] + rect[WH[dimIndex]]]; + } + + AxisView.registerAxisPointerClass('SingleAxisPointer', SingleAxisPointer); + + module.exports = SingleAxisPointer; + + +/***/ }, +/* 308 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + /** + * @file Define the themeRiver view's series model + * @author Deqing Li(annong035@gmail.com) + */ + + + var completeDimensions = __webpack_require__(110); + var SeriesModel = __webpack_require__(78); + var List = __webpack_require__(98); + var zrUtil = __webpack_require__(4); + var formatUtil = __webpack_require__(6); + var encodeHTML = formatUtil.encodeHTML; + var nest = __webpack_require__(255); + + var DATA_NAME_INDEX = 2; + + var ThemeRiverSeries = SeriesModel.extend({ + + type: 'series.themeRiver', + + dependencies: ['singleAxis'], + + /** + * @readOnly + * @type {module:zrender/core/util#HashMap} + */ + nameMap: null, + + /** + * @override + */ + init: function (option) { + ThemeRiverSeries.superApply(this, 'init', arguments); + + // Put this function here is for the sake of consistency of code + // Enable legend selection for each data item + // Use a function instead of direct access because data reference may changed + this.legendDataProvider = function () { + return this.getRawData(); + }; + }, + + /** + * If there is no value of a certain point in the time for some event,set it value to 0. + * + * @param {Array} data initial data in the option + * @return {Array} + */ + fixData: function (data) { + var rawDataLength = data.length; + + // grouped data by name + var dataByName = nest() + .key(function (dataItem) { + return dataItem[2]; + }) + .entries(data); + + // data group in each layer + var layData = zrUtil.map(dataByName, function (d) { + return { + name: d.key, + dataList: d.values + }; + }); + + var layerNum = layData.length; + var largestLayer = -1; + var index = -1; + for (var i = 0; i < layerNum; ++i) { + var len = layData[i].dataList.length; + if (len > largestLayer) { + largestLayer = len; + index = i; + } + } + + for (var k = 0; k < layerNum; ++k) { + if (k === index) { + continue; + } + var name = layData[k].name; + for (var j = 0; j < largestLayer; ++j) { + var timeValue = layData[index].dataList[j][0]; + var length = layData[k].dataList.length; + var keyIndex = -1; + for (var l = 0; l < length; ++l) { + var value = layData[k].dataList[l][0]; + if (value === timeValue) { + keyIndex = l; + break; + } + } + if (keyIndex === -1) { + data[rawDataLength] = []; + data[rawDataLength][0] = timeValue; + data[rawDataLength][1] = 0; + data[rawDataLength][2] = name; + rawDataLength++; + + } + } + } + return data; + }, + + /** + * @override + * @param {Object} option the initial option that user gived + * @param {module:echarts/model/Model} ecModel the model object for themeRiver option + * @return {module:echarts/data/List} + */ + getInitialData: function (option, ecModel) { + + var dimensions = []; + + var singleAxisModel = ecModel.queryComponents({ + mainType: 'singleAxis', + index: this.get('singleAxisIndex'), + id: this.get('singleAxisId') + })[0]; + + var axisType = singleAxisModel.get('type'); + + dimensions = [ + { + name: 'time', + // FIXME common? + type: axisType === 'category' + ? 'ordinal' + : axisType === 'time' + ? 'time' + : 'float' + }, + { + name: 'value', + type: 'float' + }, + { + name: 'name', + type: 'ordinal' + } + ]; + + // filter the data item with the value of label is undefined + var filterData = zrUtil.filter(option.data, function (dataItem) { + return dataItem[2] !== undefined; + }); + + var data = this.fixData(filterData || []); + var nameList = []; + var nameMap = this.nameMap = zrUtil.createHashMap(); + var count = 0; + + for (var i = 0; i < data.length; ++i) { + nameList.push(data[i][DATA_NAME_INDEX]); + if (!nameMap.get(data[i][DATA_NAME_INDEX])) { + nameMap.set(data[i][DATA_NAME_INDEX], count); + count++; + } + } + + dimensions = completeDimensions(dimensions, data); + + var list = new List(dimensions, this); + + list.initData(data, nameList); + + return list; + }, + + /** + * Used by single coordinate + * + * @param {string} axisDim the dimension for single coordinate + * @return {Array. } specified dimensions on the axis. + */ + coordDimToDataDim: function (axisDim) { + return ['time']; + }, + + /** + * The raw data is divided into multiple layers and each layer + * has same name. + * + * @return {Array.>} + */ + getLayerSeries: function () { + var data = this.getData(); + var lenCount = data.count(); + var indexArr = []; + + for (var i = 0; i < lenCount; ++i) { + indexArr[i] = i; + } + // data group by name + var dataByName = nest() + .key(function (index) { + return data.get('name', index); + }) + .entries(indexArr); + + var layerSeries = zrUtil.map(dataByName, function (d) { + return { + name: d.key, + indices: d.values + }; + }); + + for (var j = 0; j < layerSeries.length; ++j) { + layerSeries[j].indices.sort(comparer); + } + + function comparer(index1, index2) { + return data.get('time', index1) - data.get('time', index2); + } + + return layerSeries; + }, + + /** + * Get data indices for show tooltip content + * + * @param {Array.|string} dim single coordinate dimension + * @param {number} value axis value + * @param {module:echarts/coord/single/SingleAxis} baseAxis single Axis used + * the themeRiver. + * @return {Object} {dataIndices, nestestValue} + */ + getAxisTooltipData: function (dim, value, baseAxis) { + if (!zrUtil.isArray(dim)) { + dim = dim ? [dim] : []; + } + + var data = this.getData(); + var layerSeries = this.getLayerSeries(); + var indices = []; + var layerNum = layerSeries.length; + var nestestValue; + + for (var i = 0; i < layerNum; ++i) { + var minDist = Number.MAX_VALUE; + var nearestIdx = -1; + var pointNum = layerSeries[i].indices.length; + for (var j = 0; j < pointNum; ++j) { + var theValue = data.get(dim[0], layerSeries[i].indices[j]); + var dist = Math.abs(theValue - value); + if (dist <= minDist) { + nestestValue = theValue; + minDist = dist; + nearestIdx = layerSeries[i].indices[j]; + } + } + indices.push(nearestIdx); + } + + return {dataIndices: indices, nestestValue: nestestValue}; + }, + + /** + * @override + * @param {number} dataIndex index of data + */ + formatTooltip: function (dataIndex) { + var data = this.getData(); + var htmlName = data.get('name', dataIndex); + var htmlValue = data.get('value', dataIndex); + if (isNaN(htmlValue) || htmlValue == null) { + htmlValue = '-'; + } + return encodeHTML(htmlName + ' : ' + htmlValue); + }, + + defaultOption: { + zlevel: 0, + z: 2, + + coordinateSystem: 'singleAxis', + + // gap in axis's orthogonal orientation + boundaryGap: ['10%', '10%'], + + // legendHoverLink: true, + + singleAxisIndex: 0, + + animationEasing: 'linear', + + label: { + normal: { + margin: 4, + textAlign: 'right', + show: true, + position: 'left', + textStyle: { + color: '#000', + fontSize: 11 + } + }, + emphasis: { + show: true + } + } + } + }); + + module.exports = ThemeRiverSeries; + + + +/***/ }, +/* 309 */ +/***/ function(module, exports, __webpack_require__) { + + /* WEBPACK VAR INJECTION */(function(process) {/** + * @file The file used to draw themeRiver view + * @author Deqing Li(annong035@gmail.com) + */ + + + var poly = __webpack_require__(120); + var graphic = __webpack_require__(18); + var zrUtil = __webpack_require__(4); + var DataDiffer = __webpack_require__(99); + + module.exports = __webpack_require__(1).extendChartView({ + + type: 'themeRiver', + + init: function () { + this._layers = []; + }, + + render: function (seriesModel, ecModel, api) { + var data = seriesModel.getData(); + var rawData = seriesModel.getRawData(); + + if (!data.count()) { + return; + } + + var group = this.group; + + var layerSeries = seriesModel.getLayerSeries(); + + var layoutInfo = data.getLayout('layoutInfo'); + var rect = layoutInfo.rect; + var boundaryGap = layoutInfo.boundaryGap; + + group.attr('position', [0, rect.y + boundaryGap[0]]); + + function keyGetter(item) { + return item.name; + } + var dataDiffer = new DataDiffer( + this._layersSeries || [], layerSeries, + keyGetter, keyGetter + ); + + var newLayersGroups = {}; + + dataDiffer.add(zrUtil.bind(zrUtil.curry(process, 'add'), this)) + .update(zrUtil.bind(zrUtil.curry(process, 'update'), this)) + .remove(zrUtil.bind(zrUtil.curry(process, 'remove'), this)) + .execute(); + + function process(status, idx, oldIdx) { + var oldLayersGroups = this._layers; + if (status === 'remove') { + group.remove(oldLayersGroups[idx]); + return; + } + var points0 = []; + var points1 = []; + var color; + var indices = layerSeries[idx].indices; + for (var j = 0; j < indices.length; j++) { + var layout = data.getItemLayout(indices[j]); + var x = layout.x; + var y0 = layout.y0; + var y = layout.y; + + points0.push([x, y0]); + points1.push([x, y0 + y]); + + color = rawData.getItemVisual(indices[j], 'color'); + } + + var polygon; + var text; + var textLayout = data.getItemLayout(indices[0]); + var itemModel = data.getItemModel(indices[j - 1]); + var labelModel = itemModel.getModel('label.normal'); + var margin = labelModel.get('margin'); + if (status === 'add') { + var layerGroup = newLayersGroups[idx] = new graphic.Group(); + polygon = new poly.Polygon({ + shape: { + points: points0, + stackedOnPoints: points1, + smooth: 0.4, + stackedOnSmooth: 0.4, + smoothConstraint: false + }, + z2: 0 + }); + text = new graphic.Text({ + style: { + x: textLayout.x - margin, + y: textLayout.y0 + textLayout.y / 2 + } + }); + layerGroup.add(polygon); + layerGroup.add(text); + group.add(layerGroup); + + polygon.setClipPath(createGridClipShape(polygon.getBoundingRect(), seriesModel, function () { + polygon.removeClipPath(); + })); + } + else { + var layerGroup = oldLayersGroups[oldIdx]; + polygon = layerGroup.childAt(0); + text = layerGroup.childAt(1); + group.add(layerGroup); + + newLayersGroups[idx] = layerGroup; + + graphic.updateProps(polygon, { + shape: { + points: points0, + stackedOnPoints: points1 + } + }, seriesModel); + + graphic.updateProps(text, { + style: { + x: textLayout.x - margin, + y: textLayout.y0 + textLayout.y / 2 + } + }, seriesModel); + } + + var hoverItemStyleModel = itemModel.getModel('itemStyle.emphasis'); + var itemStyleModel = itemModel.getModel('itemStyle.normal'); + var textStyleModel = labelModel.getModel('textStyle'); + + text.setStyle({ + text: labelModel.get('show') + ? seriesModel.getFormattedLabel(indices[j - 1], 'normal') + || data.getName(indices[j - 1]) + : '', + textFont: textStyleModel.getFont(), + textAlign: labelModel.get('textAlign'), + textVerticalAlign: 'middle' + }); + + polygon.setStyle(zrUtil.extend({ + fill: color + }, itemStyleModel.getItemStyle(['color']))); + + graphic.setHoverStyle(polygon, hoverItemStyleModel.getItemStyle()); + } + + this._layersSeries = layerSeries; + this._layers = newLayersGroups; + }, + + dispose: function () {} + }); + + // add animation to the view + function createGridClipShape(rect, seriesModel, cb) { + var rectEl = new graphic.Rect({ + shape: { + x: rect.x - 10, + y: rect.y - 10, + width: 0, + height: rect.height + 20 + } + }); + graphic.initProps(rectEl, { + shape: { + width: rect.width + 20, + height: rect.height + 20 + } + }, seriesModel, cb); + + return rectEl; + } + + + + /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(310))) + +/***/ }, +/* 310 */ +/***/ function(module, exports) { + + // shim for using process in browser + var process = module.exports = {}; + + // cached from whatever global is present so that test runners that stub it + // don't break things. But we need to wrap it in a try catch in case it is + // wrapped in strict mode code which doesn't define any globals. It's inside a + // function because try/catches deoptimize in certain engines. + + var cachedSetTimeout; + var cachedClearTimeout; + + function defaultSetTimout() { + throw new Error('setTimeout has not been defined'); + } + function defaultClearTimeout () { + throw new Error('clearTimeout has not been defined'); + } + (function () { + try { + if (typeof setTimeout === 'function') { + cachedSetTimeout = setTimeout; + } else { + cachedSetTimeout = defaultSetTimout; + } + } catch (e) { + cachedSetTimeout = defaultSetTimout; + } + try { + if (typeof clearTimeout === 'function') { + cachedClearTimeout = clearTimeout; + } else { + cachedClearTimeout = defaultClearTimeout; + } + } catch (e) { + cachedClearTimeout = defaultClearTimeout; + } + } ()) + function runTimeout(fun) { + if (cachedSetTimeout === setTimeout) { + //normal enviroments in sane situations + return setTimeout(fun, 0); + } + // if setTimeout wasn't available but was latter defined + if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) { + cachedSetTimeout = setTimeout; + return setTimeout(fun, 0); + } + try { + // when when somebody has screwed with setTimeout but no I.E. maddness + return cachedSetTimeout(fun, 0); + } catch(e){ + try { + // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally + return cachedSetTimeout.call(null, fun, 0); + } catch(e){ + // 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 + return cachedSetTimeout.call(this, fun, 0); + } + } + + + } + function runClearTimeout(marker) { + if (cachedClearTimeout === clearTimeout) { + //normal enviroments in sane situations + return clearTimeout(marker); + } + // if clearTimeout wasn't available but was latter defined + if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) { + cachedClearTimeout = clearTimeout; + return clearTimeout(marker); + } + try { + // when when somebody has screwed with setTimeout but no I.E. maddness + return cachedClearTimeout(marker); + } catch (e){ + try { + // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally + return cachedClearTimeout.call(null, marker); + } catch (e){ + // 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. + // Some versions of I.E. have different rules for clearTimeout vs setTimeout + return cachedClearTimeout.call(this, marker); + } + } + + + + } + var queue = []; + var draining = false; + var currentQueue; + var queueIndex = -1; + + function cleanUpNextTick() { + if (!draining || !currentQueue) { + return; + } + draining = false; + if (currentQueue.length) { + queue = currentQueue.concat(queue); + } else { + queueIndex = -1; + } + if (queue.length) { + drainQueue(); + } + } + + function drainQueue() { + if (draining) { + return; + } + var timeout = runTimeout(cleanUpNextTick); + draining = true; + + var len = queue.length; + while(len) { + currentQueue = queue; + queue = []; + while (++queueIndex < len) { + if (currentQueue) { + currentQueue[queueIndex].run(); + } + } + queueIndex = -1; + len = queue.length; + } + currentQueue = null; + draining = false; + runClearTimeout(timeout); + } + + process.nextTick = function (fun) { + var args = new Array(arguments.length - 1); + if (arguments.length > 1) { + for (var i = 1; i < arguments.length; i++) { + args[i - 1] = arguments[i]; + } + } + queue.push(new Item(fun, args)); + if (queue.length === 1 && !draining) { + runTimeout(drainQueue); + } + }; + + // v8 likes predictible objects + function Item(fun, array) { + this.fun = fun; + this.array = array; + } + Item.prototype.run = function () { + this.fun.apply(null, this.array); + }; + process.title = 'browser'; + process.browser = true; + process.env = {}; + process.argv = []; + process.version = ''; // empty string to avoid regexp issues + process.versions = {}; + + function noop() {} + + process.on = noop; + process.addListener = noop; + process.once = noop; + process.off = noop; + process.removeListener = noop; + process.removeAllListeners = noop; + process.emit = noop; + + process.binding = function (name) { + throw new Error('process.binding is not supported'); + }; + + process.cwd = function () { return '/' }; + process.chdir = function (dir) { + throw new Error('process.chdir is not supported'); + }; + process.umask = function() { return 0; }; + + +/***/ }, +/* 311 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * @file Using layout algorithm transform the raw data to layout information. + * @author Deqing Li(annong035@gmail.com) + */ + + + var zrUtil = __webpack_require__(4); + var numberUtil = __webpack_require__(7); + + + module.exports = function (ecModel, api) { + + ecModel.eachSeriesByType('themeRiver', function (seriesModel) { + + var data = seriesModel.getData(); + + var single = seriesModel.coordinateSystem; + + var layoutInfo = {}; + + // use the axis boundingRect for view + var rect = single.getRect(); + + layoutInfo.rect = rect; + + var boundaryGap = seriesModel.get('boundaryGap'); + + var axis = single.getAxis(); + + layoutInfo.boundaryGap = boundaryGap; + + if (axis.orient === 'horizontal') { + boundaryGap[0] = numberUtil.parsePercent(boundaryGap[0], rect.height); + boundaryGap[1] = numberUtil.parsePercent(boundaryGap[1], rect.height); + var height = rect.height - boundaryGap[0] - boundaryGap[1]; + themeRiverLayout(data, seriesModel, height); + } + else { + boundaryGap[0] = numberUtil.parsePercent(boundaryGap[0], rect.width); + boundaryGap[1] = numberUtil.parsePercent(boundaryGap[1], rect.width); + var width = rect.width - boundaryGap[0] - boundaryGap[1]; + themeRiverLayout(data, seriesModel, width); + } + + data.setLayout('layoutInfo', layoutInfo); + }); + }; + + /** + * The layout information about themeriver + * + * @param {module:echarts/data/List} data data in the series + * @param {module:echarts/model/Series} seriesModel the model object of themeRiver series + * @param {number} height value used to compute every series height + */ + function themeRiverLayout(data, seriesModel, height) { + if (!data.count()) { + return; + } + var coordSys = seriesModel.coordinateSystem; + // the data in each layer are organized into a series. + var layerSeries = seriesModel.getLayerSeries(); + + // the points in each layer. + var layerPoints = zrUtil.map(layerSeries, function (singleLayer) { + return zrUtil.map(singleLayer.indices, function (idx) { + var pt = coordSys.dataToPoint(data.get('time', idx)); + pt[1] = data.get('value', idx); + return pt; + }); + }); + + var base = computeBaseline(layerPoints); + var baseLine = base.y0; + var ky = height / base.max; + + // set layout information for each item. + var n = layerSeries.length; + var m = layerSeries[0].indices.length; + var baseY0; + for (var j = 0; j < m; ++j) { + baseY0 = baseLine[j] * ky; + data.setItemLayout(layerSeries[0].indices[j], { + layerIndex: 0, + x: layerPoints[0][j][0], + y0: baseY0, + y: layerPoints[0][j][1] * ky + }); + for (var i = 1; i < n; ++i) { + baseY0 += layerPoints[i - 1][j][1] * ky; + data.setItemLayout(layerSeries[i].indices[j], { + layerIndex: i, + x: layerPoints[i][j][0], + y0: baseY0, + y: layerPoints[i][j][1] * ky + }); + } + } + } + + /** + * Compute the baseLine of the rawdata + * Inspired by Lee Byron's paper Stacked Graphs - Geometry & Aesthetics + * + * @param {Array.} data the points in each layer + * @return {Array} + */ + function computeBaseline(data) { + var layerNum = data.length; + var pointNum = data[0].length; + var sums = []; + var y0 = []; + var max = 0; + var temp; + var base = {}; + + for (var i = 0; i < pointNum; ++i) { + for (var j = 0, temp = 0; j < layerNum; ++j) { + temp += data[j][i][1]; + } + if (temp > max) { + max = temp; + } + sums.push(temp); + } + + for (var k = 0; k < pointNum; ++k) { + y0[k] = (max - sums[k]) / 2; + } + max = 0; + + for (var l = 0; l < pointNum; ++l) { + var sum = sums[l] + y0[l]; + if (sum > max) { + max = sum; + } + } + base.y0 = y0; + base.max = max; + + return base; + } + + + +/***/ }, +/* 312 */ +/***/ function(module, exports) { + + /** + * @file Visual encoding for themeRiver view + * @author Deqing Li(annong035@gmail.com) + */ + + + module.exports = function (ecModel) { + ecModel.eachSeriesByType('themeRiver', function (seriesModel) { + var data = seriesModel.getData(); + var rawData = seriesModel.getRawData(); + var colorList = seriesModel.get('color'); + + data.each(function (index) { + var name = data.getName(index); + var color = colorList[(seriesModel.nameMap.get(name) - 1) % colorList.length]; + rawData.setItemVisual(index, 'color', color); + }); + }); + }; + + + +/***/ }, +/* 313 */ +/***/ function(module, exports, __webpack_require__) { + + + + var echarts = __webpack_require__(1); + var zrUtil = __webpack_require__(4); + var graphicUtil = __webpack_require__(18); + var labelHelper = __webpack_require__(118); + var createListFromArray = __webpack_require__(109); + var barGrid = __webpack_require__(145); + + var ITEM_STYLE_NORMAL_PATH = ['itemStyle', 'normal']; + var ITEM_STYLE_EMPHASIS_PATH = ['itemStyle', 'emphasis']; + var LABEL_NORMAL = ['label', 'normal']; + var LABEL_EMPHASIS = ['label', 'emphasis']; + + /** + * To reduce total package size of each coordinate systems, the modules `prepareCustom` + * of each coordinate systems are not required by each coordinate systems directly, but + * required by the module `custom`. + * + * prepareInfoForCustomSeries {Function}: optional + * @return {Object} {coordSys: {...}, api: { + * coord: function (data, clamp) {}, // return point in global. + * size: function (dataSize, dataItem) {} // return size of each axis in coordSys. + * }} + */ + var prepareCustoms = { + cartesian2d: __webpack_require__(314), + geo: __webpack_require__(315), + singleAxis: __webpack_require__(316), + polar: __webpack_require__(317), + calendar: __webpack_require__(318) + }; + + // ------ + // Model + // ------ + + echarts.extendSeriesModel({ + + type: 'series.custom', + + dependencies: ['grid', 'polar', 'geo', 'singleAxis', 'calendar'], + + defaultOption: { + coordinateSystem: 'cartesian2d', + zlevel: 0, + z: 2, + legendHoverLink: true + + // Cartesian coordinate system + // xAxisIndex: 0, + // yAxisIndex: 0, + + // Polar coordinate system + // polarIndex: 0, + + // Geo coordinate system + // geoIndex: 0, + + // label: {} + // itemStyle: {} + }, + + getInitialData: function (option, ecModel) { + return createListFromArray(option.data, this, ecModel); + } + }); + + // ----- + // View + // ----- + + echarts.extendChartView({ + + type: 'custom', + + /** + * @private + * @type {module:echarts/data/List} + */ + _data: null, + + /** + * @override + */ + render: function (customSeries, ecModel, api) { + var oldData = this._data; + var data = customSeries.getData(); + var group = this.group; + var renderItem = makeRenderItem(customSeries, data, ecModel, api); + + data.diff(oldData) + .add(function (newIdx) { + data.hasValue(newIdx) && createOrUpdate( + null, newIdx, renderItem(newIdx), customSeries, group, data + ); + }) + .update(function (newIdx, oldIdx) { + var el = oldData.getItemGraphicEl(oldIdx); + data.hasValue(newIdx) + ? createOrUpdate( + el, newIdx, renderItem(newIdx), customSeries, group, data + ) + : (el && group.remove(el)); + }) + .remove(function (oldIdx) { + var el = oldData.getItemGraphicEl(oldIdx); + el && group.remove(el); + }) + .execute(); + + this._data = data; + }, + + /** + * @override + */ + dispose: zrUtil.noop + }); + + + function createEl(elOption) { + var graphicType = elOption.type; + var el; + + if (graphicType === 'path') { + var shape = elOption.shape; + el = graphicUtil.makePath( + shape.pathData, + null, + { + x: shape.x || 0, + y: shape.y || 0, + width: shape.width || 0, + height: shape.height || 0 + }, + 'center' + ); + el.__customPathData = elOption.pathData; + } + else if (graphicType === 'image') { + el = new graphicUtil.Image({ + }); + el.__customImagePath = elOption.style.image; + } + else if (graphicType === 'text') { + el = new graphicUtil.Text({ + }); + el.__customText = elOption.style.text; + } + else { + var Clz = graphicUtil[graphicType.charAt(0).toUpperCase() + graphicType.slice(1)]; + + if (true) { + zrUtil.assert(Clz, 'graphic type "' + graphicType + '" can not be found.'); + } + + el = new Clz(); + } + + el.__customGraphicType = graphicType; + + return el; + } + + function updateEl(el, dataIndex, elOption, animatableModel, data, isInit) { + var targetProps = {}; + var elOptionStyle = elOption.style || {}; + + elOption.shape && (targetProps.shape = zrUtil.clone(elOption.shape)); + elOption.position && (targetProps.position = elOption.position.slice()); + elOption.scale && (targetProps.scale = elOption.scale.slice()); + elOption.origin && (targetProps.origin = elOption.origin.slice()); + elOption.rotation && (targetProps.rotation = elOption.rotation); + + if (el.type === 'image' && elOption.style) { + var targetStyle = targetProps.style = {}; + zrUtil.each(['x', 'y', 'width', 'height'], function (prop) { + prepareStyleTransition(prop, targetStyle, elOptionStyle, el.style, isInit); + }); + } + + if (el.type === 'text' && elOption.style) { + var targetStyle = targetProps.style = {}; + zrUtil.each(['x', 'y'], function (prop) { + prepareStyleTransition(prop, targetStyle, elOptionStyle, el.style, isInit); + }); + } + + if (el.type !== 'group') { + el.useStyle(elOptionStyle); + + // Init animation. + if (isInit) { + el.style.opacity = 0; + var targetOpacity = elOptionStyle.opacity; + targetOpacity == null && (targetOpacity = 1); + graphicUtil.initProps(el, {style: {opacity: targetOpacity}}, animatableModel, dataIndex); + } + } + + if (isInit) { + el.attr(targetProps); + } + else { + graphicUtil.updateProps(el, targetProps, animatableModel, dataIndex); + } + + // z2 must not be null/undefined, otherwise sort error may occur. + el.attr({z2: elOption.z2 || 0, silent: elOption.silent}); + + elOption.styleEmphasis !== false && graphicUtil.setHoverStyle(el, elOption.styleEmphasis); + } + + function prepareStyleTransition(prop, targetStyle, elOptionStyle, oldElStyle, isInit) { + if (elOptionStyle[prop] != null && !isInit) { + targetStyle[prop] = elOptionStyle[prop]; + elOptionStyle[prop] = oldElStyle[prop]; + } + } + + function makeRenderItem(customSeries, data, ecModel, api) { + var renderItem = customSeries.get('renderItem'); + var coordSys = customSeries.coordinateSystem; + + if (true) { + zrUtil.assert(renderItem, 'series.render is required.'); + zrUtil.assert( + coordSys.prepareCustoms || prepareCustoms[coordSys.type], + 'This coordSys does not support custom series.' + ); + } + + var prepareResult = coordSys.prepareCustoms + ? coordSys.prepareCustoms() + : prepareCustoms[coordSys.type](coordSys); + + var userAPI = zrUtil.defaults({ + getWidth: api.getWidth, + getHeight: api.getHeight, + getZr: api.getZr, + getDevicePixelRatio: api.getDevicePixelRatio, + value: value, + style: style, + styleEmphasis: styleEmphasis, + visual: visual, + barLayout: barLayout, + currentSeriesIndices: currentSeriesIndices, + font: font + }, prepareResult.api); + + var userParams = { + context: {}, + seriesId: customSeries.id, + seriesName: customSeries.name, + seriesIndex: customSeries.seriesIndex, + coordSys: prepareResult.coordSys, + dataInsideLength: data.count(), + encode: wrapEncodeDef(customSeries.getData()) + }; + + // Do not support call `api` asynchronously without dataIndexInside input. + var currDataIndexInside; + var currDirty = true; + var currItemModel; + var currLabelNormalModel; + var currLabelEmphasisModel; + var currLabelValueDim; + var currVisualColor; + + return function (dataIndexInside) { + currDataIndexInside = dataIndexInside; + currDirty = true; + return renderItem && renderItem( + zrUtil.defaults({ + dataIndexInside: dataIndexInside, + dataIndex: data.getRawIndex(dataIndexInside) + }, userParams), + userAPI + ) || {}; + }; + + // Do not update cache until api called. + function updateCache(dataIndexInside) { + dataIndexInside == null && (dataIndexInside = currDataIndexInside); + if (currDirty) { + currItemModel = data.getItemModel(dataIndexInside); + currLabelNormalModel = currItemModel.getModel(LABEL_NORMAL); + currLabelEmphasisModel = currItemModel.getModel(LABEL_EMPHASIS); + currLabelValueDim = labelHelper.findLabelValueDim(data); + currVisualColor = data.getItemVisual(dataIndexInside, 'color'); + + currDirty = false; + } + } + + /** + * @public + * @param {nubmer|string} dim + * @param {number} [dataIndexInside=currDataIndexInside] + * @return {number|string} value + */ + function value(dim, dataIndexInside) { + dataIndexInside == null && (dataIndexInside = currDataIndexInside); + return data.get(data.getDimension(dim || 0), dataIndexInside); + } + + /** + * By default, `visual` is applied to style (to support visualMap). + * `visual.color` is applied at `fill`. If user want apply visual.color on `stroke`, + * it can be implemented as: + * `api.style({stroke: api.visual('color'), fill: null})`; + * @public + * @param {Object} [extra] + * @param {number} [dataIndexInside=currDataIndexInside] + */ + function style(extra, dataIndexInside) { + dataIndexInside == null && (dataIndexInside = currDataIndexInside); + updateCache(dataIndexInside); + + var itemStyle = currItemModel.getModel(ITEM_STYLE_NORMAL_PATH).getItemStyle(); + + currVisualColor != null && (itemStyle.fill = currVisualColor); + var opacity = data.getItemVisual(dataIndexInside, 'opacity'); + opacity != null && (itemStyle.opacity = opacity); + + labelHelper.setTextToStyle( + data, dataIndexInside, currLabelValueDim, itemStyle, + customSeries, currLabelNormalModel, currVisualColor + ); + + extra && zrUtil.extend(itemStyle, extra); + return itemStyle; + } + + /** + * @public + * @param {Object} [extra] + * @param {number} [dataIndexInside=currDataIndexInside] + */ + function styleEmphasis(extra, dataIndexInside) { + dataIndexInside == null && (dataIndexInside = currDataIndexInside); + updateCache(dataIndexInside); + + var itemStyle = currItemModel.getModel(ITEM_STYLE_EMPHASIS_PATH).getItemStyle(); + + labelHelper.setTextToStyle( + data, dataIndexInside, currLabelValueDim, itemStyle, + customSeries, currLabelEmphasisModel, currVisualColor + ); + + extra && zrUtil.extend(itemStyle, extra); + return itemStyle; + } + + /** + * @public + * @param {string} visualType + * @param {number} [dataIndexInside=currDataIndexInside] + */ + function visual(visualType, dataIndexInside) { + dataIndexInside == null && (dataIndexInside = currDataIndexInside); + return data.getItemVisual(dataIndexInside, visualType); + } + + /** + * @public + * @param {number} opt.count Positive interger. + * @param {number} [opt.barWidth] + * @param {number} [opt.barMaxWidth] + * @param {number} [opt.barGap] + * @param {number} [opt.barCategoryGap] + * @return {Object} {width, offset, offsetCenter} is not support, return undefined. + */ + function barLayout(opt) { + if (coordSys.getBaseAxis) { + var baseAxis = coordSys.getBaseAxis(); + return barGrid.getLayoutOnAxis(zrUtil.defaults({axis: baseAxis}, opt), api); + } + } + + /** + * @public + * @return {Array.} + */ + function currentSeriesIndices() { + return ecModel.getCurrentSeriesIndices(); + } + + /** + * @public + * @param {Object} opt + * @param {string} [opt.fontStyle] + * @param {number} [opt.fontWeight] + * @param {number} [opt.fontSize] + * @param {string} [opt.fontFamily] + * @return {string} font string + */ + function font(opt) { + return graphicUtil.getFont(opt, ecModel); + } + } + + function wrapEncodeDef(data) { + var encodeDef = {}; + zrUtil.each(data.dimensions, function (dimName, dataDimIndex) { + var dimInfo = data.getDimensionInfo(dimName); + if (!dimInfo.isExtraCoord) { + var coordDim = dimInfo.coordDim; + var dataDims = encodeDef[coordDim] = encodeDef[coordDim] || []; + dataDims[dimInfo.coordDimIndex] = dataDimIndex; + } + }); + return encodeDef; + } + + function createOrUpdate(el, dataIndex, elOption, animatableModel, group, data) { + el = doCreateOrUpdate(el, dataIndex, elOption, animatableModel, group, data); + el && data.setItemGraphicEl(dataIndex, el); + } + + function doCreateOrUpdate(el, dataIndex, elOption, animatableModel, group, data) { + var elOptionType = elOption.type; + if (el + && elOptionType !== el.__customGraphicType + && (elOptionType !== 'path' || elOption.pathData !== el.__customPathData) + && (elOptionType !== 'image' || elOption.style.image !== el.__customImagePath) + && (elOptionType !== 'text' || elOption.style.text !== el.__customText) + ) { + group.remove(el); + el = null; + } + + // `elOption.type` is undefined when `renderItem` returns nothing. + if (elOptionType == null) { + return; + } + + var isInit = !el; + !el && (el = createEl(elOption)); + updateEl(el, dataIndex, elOption, animatableModel, data, isInit); + + elOptionType === 'group' && zrUtil.each(elOption.children, function (childOption, index) { + doCreateOrUpdate(el.childAt(index), dataIndex, childOption, animatableModel, el, data); + }); + + group.add(el); + + return el; + } + + + + +/***/ }, +/* 314 */ +/***/ function(module, exports, __webpack_require__) { + + + + var zrUtil = __webpack_require__(4); + + function dataToCoordSize(dataSize, dataItem) { + // dataItem is necessary in log axis. + dataItem = dataItem || [0, 0]; + return zrUtil.map(['x', 'y'], function (dim, dimIdx) { + var axis = this.getAxis(dim); + var val = dataItem[dimIdx]; + var halfSize = dataSize[dimIdx] / 2; + return axis.type === 'category' + ? axis.getBandWidth() + : Math.abs(axis.dataToCoord(val - halfSize) - axis.dataToCoord(val + halfSize)); + }, this); + } + + function prepareCustom(coordSys) { + var rect = coordSys.grid.getRect(); + return { + coordSys: { + // The name exposed to user is always 'cartesian2d' but not 'grid'. + type: 'cartesian2d', + x: rect.x, + y: rect.y, + width: rect.width, + height: rect.height + }, + api: { + coord: zrUtil.bind(coordSys.dataToPoint, coordSys), + size: zrUtil.bind(dataToCoordSize, coordSys) + } + }; + } + + module.exports = prepareCustom; + + +/***/ }, +/* 315 */ +/***/ function(module, exports, __webpack_require__) { + + + + var zrUtil = __webpack_require__(4); + + function dataToCoordSize(dataSize, dataItem) { + dataItem = dataItem || [0, 0]; + return zrUtil.map([0, 1], function (dimIdx) { + var val = dataItem[dimIdx]; + var halfSize = dataSize[dimIdx] / 2; + var p1 = []; + var p2 = []; + p1[dimIdx] = val - halfSize; + p2[dimIdx] = val + halfSize; + p1[1 - dimIdx] = p2[1 - dimIdx] = dataItem[1 - dimIdx]; + return Math.abs(this.dataToPoint(p1)[dimIdx] - this.dataToPoint(p2)[dimIdx]); + }, this); + } + + function prepareCustom(coordSys) { + var rect = coordSys.getBoundingRect(); + return { + coordSys: { + type: 'geo', + x: rect.x, + y: rect.y, + width: rect.width, + height: rect.height + }, + api: { + coord: zrUtil.bind(coordSys.dataToPoint, coordSys), + size: zrUtil.bind(dataToCoordSize, coordSys) + } + }; + } + + module.exports = prepareCustom; + + +/***/ }, +/* 316 */ +/***/ function(module, exports, __webpack_require__) { + + + + var zrUtil = __webpack_require__(4); + + function dataToCoordSize(dataSize, dataItem) { + // dataItem is necessary in log axis. + var axis = this.getAxis(); + var val = dataItem instanceof Array ? dataItem[0] : dataItem; + var halfSize = (dataSize instanceof Array ? dataSize[0] : dataSize) / 2; + return axis.type === 'category' + ? axis.getBandWidth() + : Math.abs(axis.dataToCoord(val - halfSize) - axis.dataToCoord(val + halfSize)); + } + + function prepareCustom(coordSys) { + var rect = coordSys.getRect(); + + return { + coordSys: { + type: 'singleAxis', + x: rect.x, + y: rect.y, + width: rect.width, + height: rect.height + }, + api: { + coord: zrUtil.bind(coordSys.dataToPoint, coordSys), + size: zrUtil.bind(dataToCoordSize, coordSys) + } + }; + } + + module.exports = prepareCustom; + + +/***/ }, +/* 317 */ +/***/ function(module, exports, __webpack_require__) { + + + + var zrUtil = __webpack_require__(4); + + function dataToCoordSize(dataSize, dataItem) { + // dataItem is necessary in log axis. + return zrUtil.map(['Radius', 'Angle'], function (dim, dimIdx) { + var axis = this['get' + dim + 'Axis'](); + var val = dataItem[dimIdx]; + var halfSize = dataSize[dimIdx] / 2; + var method = 'dataTo' + dim; + + var result = axis.type === 'category' + ? axis.getBandWidth() + : Math.abs(axis[method](val - halfSize) - axis[method](val + halfSize)); + + if (dim === 'Angle') { + result = result * Math.PI / 180; + } + + return result; + + }, this); + } + + function prepareCustom(coordSys) { + var radiusAxis = coordSys.getRadiusAxis(); + var angleAxis = coordSys.getAngleAxis(); + var radius = radiusAxis.getExtent(); + radius[0] > radius[1] && radius.reverse(); + + return { + coordSys: { + type: 'polar', + cx: coordSys.cx, + cy: coordSys.cy, + r: radius[1], + r0: radius[0] + }, + api: { + coord: zrUtil.bind(function (data) { + var radius = radiusAxis.dataToRadius(data[0]); + var angle = angleAxis.dataToAngle(data[1]); + var coord = coordSys.coordToPoint([radius, angle]); + coord.push(radius, angle * Math.PI / 180); + return coord; + }), + size: zrUtil.bind(dataToCoordSize, coordSys) + } + }; + } + + module.exports = prepareCustom; + + +/***/ }, +/* 318 */ +/***/ function(module, exports, __webpack_require__) { + + + + var zrUtil = __webpack_require__(4); + + function prepareCustom(coordSys) { + var rect = coordSys.getRect(); + var rangeInfo = coordSys.getRangeInfo(); + + return { + coordSys: { + type: 'calendar', + x: rect.x, + y: rect.y, + width: rect.width, + height: rect.height, + cellWidth: coordSys.getCellWidth(), + cellHeight: coordSys.getCellHeight(), + rangeInfo: { + start: rangeInfo.start, + end: rangeInfo.end, + weeks: rangeInfo.weeks, + dayCount: rangeInfo.allDay + } + }, + api: { + coord: zrUtil.bind(coordSys.dataToPoint, coordSys) + } + }; + } + + module.exports = prepareCustom; + + +/***/ }, +/* 319 */ +/***/ function(module, exports, __webpack_require__) { + + + + var echarts = __webpack_require__(1); + var zrUtil = __webpack_require__(4); + var modelUtil = __webpack_require__(5); + var graphicUtil = __webpack_require__(18); + var layoutUtil = __webpack_require__(71); + + // ------------- + // Preprocessor + // ------------- + + echarts.registerPreprocessor(function (option) { + var graphicOption = option.graphic; + + // Convert + // {graphic: [{left: 10, type: 'circle'}, ...]} + // or + // {graphic: {left: 10, type: 'circle'}} + // to + // {graphic: [{elements: [{left: 10, type: 'circle'}, ...]}]} + if (zrUtil.isArray(graphicOption)) { + if (!graphicOption[0] || !graphicOption[0].elements) { + option.graphic = [{elements: graphicOption}]; + } + else { + // Only one graphic instance can be instantiated. (We dont + // want that too many views are created in echarts._viewMap) + option.graphic = [option.graphic[0]]; + } + } + else if (graphicOption && !graphicOption.elements) { + option.graphic = [{elements: [graphicOption]}]; + } + }); + + // ------ + // Model + // ------ + + var GraphicModel = echarts.extendComponentModel({ + + type: 'graphic', + + defaultOption: { + + // Extra properties for each elements: + // + // left/right/top/bottom: (like 12, '22%', 'center', default undefined) + // If left/rigth is set, shape.x/shape.cx/position will not be used. + // If top/bottom is set, shape.y/shape.cy/position will not be used. + // This mechanism is useful when you want to position a group/element + // against the right side or the center of this container. + // + // width/height: (can only be pixel value, default 0) + // Only be used to specify contianer(group) size, if needed. And + // can not be percentage value (like '33%'). See the reason in the + // layout algorithm below. + // + // bounding: (enum: 'all' (default) | 'raw') + // Specify how to calculate boundingRect when locating. + // 'all': Get uioned and transformed boundingRect + // from both itself and its descendants. + // This mode simplies confining a group of elements in the bounding + // of their ancester container (e.g., using 'right: 0'). + // 'raw': Only use the boundingRect of itself and before transformed. + // This mode is similar to css behavior, which is useful when you + // want an element to be able to overflow its container. (Consider + // a rotated circle needs to be located in a corner.) + + // Note: elements is always behind its ancestors in this elements array. + elements: [], + parentId: null + }, + + /** + * Save el options for the sake of the performance (only update modified graphics). + * The order is the same as those in option. (ancesters -> descendants) + * + * @private + * @type {Array.} + */ + _elOptionsToUpdate: null, + + /** + * @override + */ + mergeOption: function (option) { + // Prevent default merge to elements + var elements = this.option.elements; + this.option.elements = null; + + GraphicModel.superApply(this, 'mergeOption', arguments); + + this.option.elements = elements; + }, + + /** + * @override + */ + optionUpdated: function (newOption, isInit) { + var thisOption = this.option; + var newList = (isInit ? thisOption : newOption).elements; + var existList = thisOption.elements = isInit ? [] : thisOption.elements; + + var flattenedList = []; + this._flatten(newList, flattenedList); + + var mappingResult = modelUtil.mappingToExists(existList, flattenedList); + modelUtil.makeIdAndName(mappingResult); + + // Clear elOptionsToUpdate + var elOptionsToUpdate = this._elOptionsToUpdate = []; + + zrUtil.each(mappingResult, function (resultItem, index) { + var newElOption = resultItem.option; + + if (true) { + zrUtil.assert( + zrUtil.isObject(newElOption) || resultItem.exist, + 'Empty graphic option definition' + ); + } + + if (!newElOption) { + return; + } + + elOptionsToUpdate.push(newElOption); + + setKeyInfoToNewElOption(resultItem, newElOption); + + mergeNewElOptionToExist(existList, index, newElOption); + + setLayoutInfoToExist(existList[index], newElOption); + + }, this); + + // Clean + for (var i = existList.length - 1; i >= 0; i--) { + if (existList[i] == null) { + existList.splice(i, 1); + } + else { + // $action should be volatile, otherwise option gotten from + // `getOption` will contain unexpected $action. + delete existList[i].$action; + } + } + }, + + /** + * Convert + * [{ + * type: 'group', + * id: 'xx', + * children: [{type: 'circle'}, {type: 'polygon'}] + * }] + * to + * [ + * {type: 'group', id: 'xx'}, + * {type: 'circle', parentId: 'xx'}, + * {type: 'polygon', parentId: 'xx'} + * ] + * + * @private + * @param {Array.} optionList option list + * @param {Array.} result result of flatten + * @param {Object} parentOption parent option + */ + _flatten: function (optionList, result, parentOption) { + zrUtil.each(optionList, function (option) { + if (!option) { + return; + } + + if (parentOption) { + option.parentOption = parentOption; + } + + result.push(option); + + var children = option.children; + if (option.type === 'group' && children) { + this._flatten(children, result, option); + } + // Deleting for JSON output, and for not affecting group creation. + delete option.children; + }, this); + }, + + // FIXME + // Pass to view using payload? setOption has a payload? + useElOptionsToUpdate: function () { + var els = this._elOptionsToUpdate; + // Clear to avoid render duplicately when zooming. + this._elOptionsToUpdate = null; + return els; + } + }); + + // ----- + // View + // ----- + + echarts.extendComponentView({ + + type: 'graphic', + + /** + * @override + */ + init: function (ecModel, api) { + + /** + * @private + * @type {module:zrender/core/util.HashMap} + */ + this._elMap = zrUtil.createHashMap(); + + /** + * @private + * @type {module:echarts/graphic/GraphicModel} + */ + this._lastGraphicModel; + }, + + /** + * @override + */ + render: function (graphicModel, ecModel, api) { + + // Having leveraged between use cases and algorithm complexity, a very + // simple layout mechanism is used: + // The size(width/height) can be determined by itself or its parent (not + // implemented yet), but can not by its children. (Top-down travel) + // The location(x/y) can be determined by the bounding rect of itself + // (can including its descendants or not) and the size of its parent. + // (Bottom-up travel) + + // When `chart.clear()` or `chart.setOption({...}, true)` with the same id, + // view will be reused. + if (graphicModel !== this._lastGraphicModel) { + this._clear(); + } + this._lastGraphicModel = graphicModel; + + this._updateElements(graphicModel, api); + this._relocate(graphicModel, api); + }, + + /** + * Update graphic elements. + * + * @private + * @param {Object} graphicModel graphic model + * @param {module:echarts/ExtensionAPI} api extension API + */ + _updateElements: function (graphicModel, api) { + var elOptionsToUpdate = graphicModel.useElOptionsToUpdate(); + + if (!elOptionsToUpdate) { + return; + } + + var elMap = this._elMap; + var rootGroup = this.group; + + // Top-down tranverse to assign graphic settings to each elements. + zrUtil.each(elOptionsToUpdate, function (elOption) { + var $action = elOption.$action; + var id = elOption.id; + var existEl = elMap.get(id); + var parentId = elOption.parentId; + var targetElParent = parentId != null ? elMap.get(parentId) : rootGroup; + + // In top/bottom mode, textVertical should not be used. And textBaseline + // should not be 'alphabetic', which cause inaccurately locating. + if (elOption.hv && elOption.hv[1] && elOption.type === 'text') { + elOption.style = zrUtil.defaults({textBaseline: 'middle'}, elOption.style); + elOption.style.textVerticalAlign = null; + } + + // Remove unnecessary props to avoid potential problems. + var elOptionCleaned = getCleanedElOption(elOption); + + // For simple, do not support parent change, otherwise reorder is needed. + if (true) { + existEl && zrUtil.assert( + targetElParent === existEl.parent, + 'Changing parent is not supported.' + ); + } + + if (!$action || $action === 'merge') { + existEl + ? existEl.attr(elOptionCleaned) + : createEl(id, targetElParent, elOptionCleaned, elMap); + } + else if ($action === 'replace') { + removeEl(existEl, elMap); + createEl(id, targetElParent, elOptionCleaned, elMap); + } + else if ($action === 'remove') { + removeEl(existEl, elMap); + } + + var el = elMap.get(id); + if (el) { + el.__ecGraphicWidth = elOption.width; + el.__ecGraphicHeight = elOption.height; + } + }); + }, + + /** + * Locate graphic elements. + * + * @private + * @param {Object} graphicModel graphic model + * @param {module:echarts/ExtensionAPI} api extension API + */ + _relocate: function (graphicModel, api) { + var elOptions = graphicModel.option.elements; + var rootGroup = this.group; + var elMap = this._elMap; + + // Bottom-up tranvese all elements (consider ec resize) to locate elements. + for (var i = elOptions.length - 1; i >= 0; i--) { + var elOption = elOptions[i]; + var el = elMap.get(elOption.id); + + if (!el) { + continue; + } + + var parentEl = el.parent; + var containerInfo = parentEl === rootGroup + ? { + width: api.getWidth(), + height: api.getHeight() + } + : { // Like 'position:absolut' in css, default 0. + width: parentEl.__ecGraphicWidth || 0, + height: parentEl.__ecGraphicHeight || 0 + }; + + layoutUtil.positionElement( + el, elOption, containerInfo, null, + {hv: elOption.hv, boundingMode: elOption.bounding} + ); + } + }, + + /** + * Clear all elements. + * + * @private + */ + _clear: function () { + var elMap = this._elMap; + elMap.each(function (el) { + removeEl(el, elMap); + }); + this._elMap = zrUtil.createHashMap(); + }, + + /** + * @override + */ + dispose: function () { + this._clear(); + } + }); + + function createEl(id, targetElParent, elOption, elMap) { + var graphicType = elOption.type; + + if (true) { + zrUtil.assert(graphicType, 'graphic type MUST be set'); + } + + var Clz = graphicUtil[graphicType.charAt(0).toUpperCase() + graphicType.slice(1)]; + + if (true) { + zrUtil.assert(Clz, 'graphic type can not be found'); + } + + var el = new Clz(elOption); + targetElParent.add(el); + elMap.set(id, el); + el.__ecGraphicId = id; + } + + function removeEl(existEl, elMap) { + var existElParent = existEl && existEl.parent; + if (existElParent) { + existEl.type === 'group' && existEl.traverse(function (el) { + removeEl(el, elMap); + }); + elMap.removeKey(existEl.__ecGraphicId); + existElParent.remove(existEl); + } + } + + // Remove unnecessary props to avoid potential problems. + function getCleanedElOption(elOption) { + elOption = zrUtil.extend({}, elOption); + zrUtil.each( + ['id', 'parentId', '$action', 'hv', 'bounding'].concat(layoutUtil.LOCATION_PARAMS), + function (name) { + delete elOption[name]; + } + ); + return elOption; + } + + function isSetLoc(obj, props) { + var isSet; + zrUtil.each(props, function (prop) { + obj[prop] != null && obj[prop] !== 'auto' && (isSet = true); + }); + return isSet; + } + + function setKeyInfoToNewElOption(resultItem, newElOption) { + var existElOption = resultItem.exist; + + // Set id and type after id assigned. + newElOption.id = resultItem.keyInfo.id; + !newElOption.type && existElOption && (newElOption.type = existElOption.type); + + // Set parent id if not specified + if (newElOption.parentId == null) { + var newElParentOption = newElOption.parentOption; + if (newElParentOption) { + newElOption.parentId = newElParentOption.id; + } + else if (existElOption) { + newElOption.parentId = existElOption.parentId; + } + } + + // Clear + newElOption.parentOption = null; + } + + function mergeNewElOptionToExist(existList, index, newElOption) { + // Update existing options, for `getOption` feature. + var newElOptCopy = zrUtil.extend({}, newElOption); + var existElOption = existList[index]; + + var $action = newElOption.$action || 'merge'; + if ($action === 'merge') { + if (existElOption) { + + if (true) { + var newType = newElOption.type; + zrUtil.assert( + !newType || existElOption.type === newType, + 'Please set $action: "replace" to change `type`' + ); + } + + // We can ensure that newElOptCopy and existElOption are not + // the same object, so `merge` will not change newElOptCopy. + zrUtil.merge(existElOption, newElOptCopy, true); + // Rigid body, use ignoreSize. + layoutUtil.mergeLayoutParam(existElOption, newElOptCopy, {ignoreSize: true}); + // Will be used in render. + layoutUtil.copyLayoutParams(newElOption, existElOption); + } + else { + existList[index] = newElOptCopy; + } + } + else if ($action === 'replace') { + existList[index] = newElOptCopy; + } + else if ($action === 'remove') { + // null will be cleaned later. + existElOption && (existList[index] = null); + } + } + + function setLayoutInfoToExist(existItem, newElOption) { + if (!existItem) { + return; + } + existItem.hv = newElOption.hv = [ + // Rigid body, dont care `width`. + isSetLoc(newElOption, ['left', 'right']), + // Rigid body, dont care `height`. + isSetLoc(newElOption, ['top', 'bottom']) + ]; + // Give default group size. Otherwise layout error may occur. + if (existItem.type === 'group') { + existItem.width == null && (existItem.width = newElOption.width = 0); + existItem.height == null && (existItem.height = newElOption.height = 0); + } + } + + + +/***/ }, +/* 320 */ +/***/ function(module, exports, __webpack_require__) { + + + + __webpack_require__(124); + + __webpack_require__(304); + + __webpack_require__(298); + + + +/***/ }, +/* 321 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * Legend component entry file8 + */ + + + __webpack_require__(322); + __webpack_require__(323); + __webpack_require__(324); + + var echarts = __webpack_require__(1); + // Series Filter + echarts.registerProcessor(__webpack_require__(326)); + + +/***/ }, +/* 322 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + + var zrUtil = __webpack_require__(4); + var Model = __webpack_require__(12); + + var LegendModel = __webpack_require__(1).extendComponentModel({ + + type: 'legend', + + dependencies: ['series'], + + layoutMode: { + type: 'box', + ignoreSize: true + }, + + init: function (option, parentModel, ecModel) { + this.mergeDefaultAndTheme(option, ecModel); + + option.selected = option.selected || {}; + }, + + mergeOption: function (option) { + LegendModel.superCall(this, 'mergeOption', option); + }, + + optionUpdated: function () { + this._updateData(this.ecModel); + + var legendData = this._data; + + // If selectedMode is single, try to select one + if (legendData[0] && this.get('selectedMode') === 'single') { + var hasSelected = false; + // If has any selected in option.selected + for (var i = 0; i < legendData.length; i++) { + var name = legendData[i].get('name'); + if (this.isSelected(name)) { + // Force to unselect others + this.select(name); + hasSelected = true; + break; + } + } + // Try select the first if selectedMode is single + !hasSelected && this.select(legendData[0].get('name')); + } + }, + + _updateData: function (ecModel) { + var legendData = zrUtil.map(this.get('data') || [], function (dataItem) { + // Can be string or number + if (typeof dataItem === 'string' || typeof dataItem === 'number') { + dataItem = { + name: dataItem + }; + } + return new Model(dataItem, this, this.ecModel); + }, this); + this._data = legendData; + + var availableNames = zrUtil.map(ecModel.getSeries(), function (series) { + return series.name; + }); + ecModel.eachSeries(function (seriesModel) { + if (seriesModel.legendDataProvider) { + var data = seriesModel.legendDataProvider(); + availableNames = availableNames.concat(data.mapArray(data.getName)); + } + }); + /** + * @type {Array.} + * @private + */ + this._availableNames = availableNames; + }, + + /** + * @return {Array.} + */ + getData: function () { + return this._data; + }, + + /** + * @param {string} name + */ + select: function (name) { + var selected = this.option.selected; + var selectedMode = this.get('selectedMode'); + if (selectedMode === 'single') { + var data = this._data; + zrUtil.each(data, function (dataItem) { + selected[dataItem.get('name')] = false; + }); + } + selected[name] = true; + }, + + /** + * @param {string} name + */ + unSelect: function (name) { + if (this.get('selectedMode') !== 'single') { + this.option.selected[name] = false; + } + }, + + /** + * @param {string} name + */ + toggleSelected: function (name) { + var selected = this.option.selected; + // Default is true + if (!selected.hasOwnProperty(name)) { + selected[name] = true; + } + this[selected[name] ? 'unSelect' : 'select'](name); + }, + + /** + * @param {string} name + */ + isSelected: function (name) { + var selected = this.option.selected; + return !(selected.hasOwnProperty(name) && !selected[name]) + && zrUtil.indexOf(this._availableNames, name) >= 0; + }, + + defaultOption: { + // 一级层叠 + zlevel: 0, + // 二级层叠 + z: 4, + show: true, + + // 布局方式,默认为水平布局,可选为: + // 'horizontal' | 'vertical' + orient: 'horizontal', + + left: 'center', + // right: 'center', + + top: 'top', + // bottom: 'top', + + // 水平对齐 + // 'auto' | 'left' | 'right' + // 默认为 'auto', 根据 x 的位置判断是左对齐还是右对齐 + align: 'auto', + + backgroundColor: 'rgba(0,0,0,0)', + // 图例边框颜色 + borderColor: '#ccc', + // 图例边框线宽,单位px,默认为0(无边框) + borderWidth: 0, + // 图例内边距,单位px,默认各方向内边距为5, + // 接受数组分别设定上右下左边距,同css + padding: 5, + // 各个item之间的间隔,单位px,默认为10, + // 横向布局时为水平间隔,纵向布局时为纵向间隔 + itemGap: 10, + // 图例图形宽度 + itemWidth: 25, + // 图例图形高度 + itemHeight: 14, + + // 图例关闭时候的颜色 + inactiveColor: '#ccc', + + textStyle: { + // 图例文字颜色 + color: '#333' + }, + // formatter: '', + // 选择模式,默认开启图例开关 + selectedMode: true, + // 配置默认选中状态,可配合LEGEND.SELECTED事件做动态数据载入 + // selected: null, + // 图例内容(详见legend.data,数组中每一项代表一个item + // data: [], + + // Tooltip 相关配置 + tooltip: { + show: false + } + } + }); + + module.exports = LegendModel; + + +/***/ }, +/* 323 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * @file Legend action + */ + + + var echarts = __webpack_require__(1); + var zrUtil = __webpack_require__(4); + + function legendSelectActionHandler(methodName, payload, ecModel) { + var selectedMap = {}; + var isToggleSelect = methodName === 'toggleSelected'; + var isSelected; + // Update all legend components + ecModel.eachComponent('legend', function (legendModel) { + if (isToggleSelect && isSelected != null) { + // Force other legend has same selected status + // Or the first is toggled to true and other are toggled to false + // In the case one legend has some item unSelected in option. And if other legend + // doesn't has the item, they will assume it is selected. + legendModel[isSelected ? 'select' : 'unSelect'](payload.name); + } + else { + legendModel[methodName](payload.name); + isSelected = legendModel.isSelected(payload.name); + } + var legendData = legendModel.getData(); + zrUtil.each(legendData, function (model) { + var name = model.get('name'); + // Wrap element + if (name === '\n' || name === '') { + return; + } + var isItemSelected = legendModel.isSelected(name); + if (selectedMap.hasOwnProperty(name)) { + // Unselected if any legend is unselected + selectedMap[name] = selectedMap[name] && isItemSelected; + } + else { + selectedMap[name] = isItemSelected; + } + }); + }); + // Return the event explicitly + return { + name: payload.name, + selected: selectedMap + }; + } + /** + * @event legendToggleSelect + * @type {Object} + * @property {string} type 'legendToggleSelect' + * @property {string} [from] + * @property {string} name Series name or data item name + */ + echarts.registerAction( + 'legendToggleSelect', 'legendselectchanged', + zrUtil.curry(legendSelectActionHandler, 'toggleSelected') + ); + + /** + * @event legendSelect + * @type {Object} + * @property {string} type 'legendSelect' + * @property {string} name Series name or data item name + */ + echarts.registerAction( + 'legendSelect', 'legendselected', + zrUtil.curry(legendSelectActionHandler, 'select') + ); + + /** + * @event legendUnSelect + * @type {Object} + * @property {string} type 'legendUnSelect' + * @property {string} name Series name or data item name + */ + echarts.registerAction( + 'legendUnSelect', 'legendunselected', + zrUtil.curry(legendSelectActionHandler, 'unSelect') + ); + + +/***/ }, +/* 324 */ +/***/ function(module, exports, __webpack_require__) { + + + + var zrUtil = __webpack_require__(4); + var symbolCreator = __webpack_require__(111); + var graphic = __webpack_require__(18); + var listComponentHelper = __webpack_require__(325); + + var curry = zrUtil.curry; + + function dispatchSelectAction(name, api) { + api.dispatchAction({ + type: 'legendToggleSelect', + name: name + }); + } + + function dispatchHighlightAction(seriesModel, dataName, api) { + // If element hover will move to a hoverLayer. + var el = api.getZr().storage.getDisplayList()[0]; + if (!(el && el.useHoverLayer)) { + seriesModel.get('legendHoverLink') && api.dispatchAction({ + type: 'highlight', + seriesName: seriesModel.name, + name: dataName + }); + } + } + + function dispatchDownplayAction(seriesModel, dataName, api) { + // If element hover will move to a hoverLayer. + var el = api.getZr().storage.getDisplayList()[0]; + if (!(el && el.useHoverLayer)) { + seriesModel.get('legendHoverLink') && api.dispatchAction({ + type: 'downplay', + seriesName: seriesModel.name, + name: dataName + }); + } + } + + module.exports = __webpack_require__(1).extendComponentView({ + + type: 'legend', + + init: function () { + this._symbolTypeStore = {}; + }, + + render: function (legendModel, ecModel, api) { + var group = this.group; + group.removeAll(); + + if (!legendModel.get('show')) { + return; + } + + var selectMode = legendModel.get('selectedMode'); + var itemAlign = legendModel.get('align'); + + if (itemAlign === 'auto') { + itemAlign = (legendModel.get('left') === 'right' + && legendModel.get('orient') === 'vertical') + ? 'right' : 'left'; + } + + var legendDrawedMap = zrUtil.createHashMap(); + + zrUtil.each(legendModel.getData(), function (itemModel) { + var name = itemModel.get('name'); + + // Use empty string or \n as a newline string + if (name === '' || name === '\n') { + group.add(new graphic.Group({ + newline: true + })); + return; + } + + var seriesModel = ecModel.getSeriesByName(name)[0]; + + if (legendDrawedMap.get(name)) { + // Have been drawed + return; + } + + // Series legend + if (seriesModel) { + var data = seriesModel.getData(); + var color = data.getVisual('color'); + + // If color is a callback function + if (typeof color === 'function') { + // Use the first data + color = color(seriesModel.getDataParams(0)); + } + + // Using rect symbol defaultly + var legendSymbolType = data.getVisual('legendSymbol') || 'roundRect'; + var symbolType = data.getVisual('symbol'); + + var itemGroup = this._createItem( + name, itemModel, legendModel, + legendSymbolType, symbolType, + itemAlign, color, + selectMode + ); + + itemGroup.on('click', curry(dispatchSelectAction, name, api)) + .on('mouseover', curry(dispatchHighlightAction, seriesModel, null, api)) + .on('mouseout', curry(dispatchDownplayAction, seriesModel, null, api)); + + legendDrawedMap.set(name, true); + } + else { + // Data legend of pie, funnel + ecModel.eachRawSeries(function (seriesModel) { + // In case multiple series has same data name + if (legendDrawedMap.get(name)) { + return; + } + if (seriesModel.legendDataProvider) { + var data = seriesModel.legendDataProvider(); + var idx = data.indexOfName(name); + if (idx < 0) { + return; + } + + var color = data.getItemVisual(idx, 'color'); + + var legendSymbolType = 'roundRect'; + + var itemGroup = this._createItem( + name, itemModel, legendModel, + legendSymbolType, null, + itemAlign, color, + selectMode + ); + + itemGroup.on('click', curry(dispatchSelectAction, name, api)) + // FIXME Should not specify the series name + .on('mouseover', curry(dispatchHighlightAction, seriesModel, name, api)) + .on('mouseout', curry(dispatchDownplayAction, seriesModel, name, api)); + + legendDrawedMap.set(name, true); + } + }, this); + } + + if (true) { + if (!legendDrawedMap.get(name)) { + console.warn(name + ' series not exists. Legend data should be same with series name or data name.'); + } + } + }, this); + + listComponentHelper.layout(group, legendModel, api); + // Render background after group is layout + // FIXME + listComponentHelper.addBackground(group, legendModel); + }, + + _createItem: function ( + name, itemModel, legendModel, + legendSymbolType, symbolType, + itemAlign, color, selectMode + ) { + var itemWidth = legendModel.get('itemWidth'); + var itemHeight = legendModel.get('itemHeight'); + var inactiveColor = legendModel.get('inactiveColor'); + + var isSelected = legendModel.isSelected(name); + var itemGroup = new graphic.Group(); + + var textStyleModel = itemModel.getModel('textStyle'); + + var itemIcon = itemModel.get('icon'); + + var tooltipModel = itemModel.getModel('tooltip'); + var legendGlobalTooltipModel = tooltipModel.parentModel; + + // Use user given icon first + legendSymbolType = itemIcon || legendSymbolType; + itemGroup.add(symbolCreator.createSymbol( + legendSymbolType, 0, 0, itemWidth, itemHeight, isSelected ? color : inactiveColor + )); + + // Compose symbols + // PENDING + if (!itemIcon && symbolType + // At least show one symbol, can't be all none + && ((symbolType !== legendSymbolType) || symbolType == 'none') + ) { + var size = itemHeight * 0.8; + if (symbolType === 'none') { + symbolType = 'circle'; + } + // Put symbol in the center + itemGroup.add(symbolCreator.createSymbol( + symbolType, (itemWidth - size) / 2, (itemHeight - size) / 2, size, size, + isSelected ? color : inactiveColor + )); + } + + // Text + var textX = itemAlign === 'left' ? itemWidth + 5 : -5; + var textAlign = itemAlign; + + var formatter = legendModel.get('formatter'); + var content = name; + if (typeof formatter === 'string' && formatter) { + content = formatter.replace('{name}', name != null ? name : ''); + } + else if (typeof formatter === 'function') { + content = formatter(name); + } + + var text = new graphic.Text({ + style: { + text: content, + x: textX, + y: itemHeight / 2, + fill: isSelected ? textStyleModel.getTextColor() : inactiveColor, + textFont: textStyleModel.getFont(), + textAlign: textAlign, + textVerticalAlign: 'middle' + } + }); + itemGroup.add(text); + + // Add a invisible rect to increase the area of mouse hover + var hitRect = new graphic.Rect({ + shape: itemGroup.getBoundingRect(), + invisible: true, + tooltip: tooltipModel.get('show') ? zrUtil.extend({ + content: name, + // Defaul formatter + formatter: legendGlobalTooltipModel.get('formatter', true) || function () { + return name; + }, + formatterParams: { + componentType: 'legend', + legendIndex: legendModel.componentIndex, + name: name, + $vars: ['name'] + } + }, tooltipModel.option) : null + }); + itemGroup.add(hitRect); + + itemGroup.eachChild(function (child) { + child.silent = true; + }); + + hitRect.silent = !selectMode; + + + + this.group.add(itemGroup); + + graphic.setHoverStyle(itemGroup); + + return itemGroup; + } + }); + + +/***/ }, +/* 325 */ +/***/ function(module, exports, __webpack_require__) { + + + // List layout + var layout = __webpack_require__(71); + var formatUtil = __webpack_require__(6); + var graphic = __webpack_require__(18); + + function positionGroup(group, model, api) { + layout.positionElement( + group, model.getBoxLayoutParams(), + { + width: api.getWidth(), + height: api.getHeight() + }, + model.get('padding') + ); + } + + module.exports = { + /** + * Layout list like component. + * It will box layout each items in group of component and then position the whole group in the viewport + * @param {module:zrender/group/Group} group + * @param {module:echarts/model/Component} componentModel + * @param {module:echarts/ExtensionAPI} + */ + layout: function (group, componentModel, api) { + var rect = layout.getLayoutRect(componentModel.getBoxLayoutParams(), { + width: api.getWidth(), + height: api.getHeight() + }, componentModel.get('padding')); + layout.box( + componentModel.get('orient'), + group, + componentModel.get('itemGap'), + rect.width, + rect.height + ); + + positionGroup(group, componentModel, api); + }, + + addBackground: function (group, componentModel) { + var padding = formatUtil.normalizeCssArray( + componentModel.get('padding') + ); + var boundingRect = group.getBoundingRect(); + var style = componentModel.getItemStyle(['color', 'opacity']); + style.fill = componentModel.get('backgroundColor'); + var rect = new graphic.Rect({ + shape: { + x: boundingRect.x - padding[3], + y: boundingRect.y - padding[0], + width: boundingRect.width + padding[1] + padding[3], + height: boundingRect.height + padding[0] + padding[2] + }, + style: style, + silent: true, + z2: -1 + }); + graphic.subPixelOptimizeRect(rect); + + group.add(rect); + } + }; + + +/***/ }, +/* 326 */ +/***/ function(module, exports) { + + + module.exports = function (ecModel) { + var legendModels = ecModel.findComponents({ + mainType: 'legend' + }); + if (legendModels && legendModels.length) { + ecModel.filterSeries(function (series) { + // If in any legend component the status is not selected. + // Because in legend series is assumed selected when it is not in the legend data. + for (var i = 0; i < legendModels.length; i++) { + if (!legendModels[i].isSelected(series.name)) { + return false; + } + } + return true; + }); + } + }; + + +/***/ }, +/* 327 */ +/***/ function(module, exports, __webpack_require__) { + + // FIXME Better way to pack data in graphic element + + + __webpack_require__(298); + + __webpack_require__(328); + + __webpack_require__(329); + + + // Show tip action + /** + * @action + * @property {string} type + * @property {number} seriesIndex + * @property {number} dataIndex + * @property {number} [x] + * @property {number} [y] + */ + __webpack_require__(1).registerAction( + { + type: 'showTip', + event: 'showTip', + update: 'tooltip:manuallyShowTip' + }, + // noop + function () {} + ); + // Hide tip action + __webpack_require__(1).registerAction( + { + type: 'hideTip', + event: 'hideTip', + update: 'tooltip:manuallyHideTip' + }, + // noop + function () {} + ); + + +/***/ }, +/* 328 */ +/***/ function(module, exports, __webpack_require__) { + + + + __webpack_require__(1).extendComponentModel({ + + type: 'tooltip', + + dependencies: ['axisPointer'], + + defaultOption: { + zlevel: 0, + + z: 8, + + show: true, + + // tooltip主体内容 + showContent: true, + + // 'trigger' only works on coordinate system. + // 'item' | 'axis' | 'none' + trigger: 'item', + + // 'click' | 'mousemove' | 'none' + triggerOn: 'mousemove|click', + + alwaysShowContent: false, + + displayMode: 'single', // 'single' | 'multipleByCoordSys' + + // 位置 {Array} | {Function} + // position: null + // Consider triggered from axisPointer handle, verticalAlign should be 'middle' + // align: null, + // verticalAlign: null, + + // 是否约束 content 在 viewRect 中。默认 false 是为了兼容以前版本。 + confine: false, + + // 内容格式器:{string}(Template) ¦ {Function} + // formatter: null + + showDelay: 0, + + // 隐藏延迟,单位ms + hideDelay: 100, + + // 动画变换时间,单位s + transitionDuration: 0.4, + + enterable: false, + + // 提示背景颜色,默认为透明度为0.7的黑色 + backgroundColor: 'rgba(50,50,50,0.7)', + + // 提示边框颜色 + borderColor: '#333', + + // 提示边框圆角,单位px,默认为4 + borderRadius: 4, + + // 提示边框线宽,单位px,默认为0(无边框) + borderWidth: 0, + + // 提示内边距,单位px,默认各方向内边距为5, + // 接受数组分别设定上右下左边距,同css + padding: 5, + + // Extra css text + extraCssText: '', + + // 坐标轴指示器,坐标轴触发有效 + axisPointer: { + // 默认为直线 + // 可选为:'line' | 'shadow' | 'cross' + type: 'line', + + // type 为 line 的时候有效,指定 tooltip line 所在的轴,可选 + // 可选 'x' | 'y' | 'angle' | 'radius' | 'auto' + // 默认 'auto',会选择类型为 cateogry 的轴,对于双数值轴,笛卡尔坐标系会默认选择 x 轴 + // 极坐标系会默认选择 angle 轴 + axis: 'auto', + + animation: 'auto', + animationDurationUpdate: 200, + animationEasingUpdate: 'exponentialOut', + + crossStyle: { + color: '#999', + width: 1, + type: 'dashed', + + // TODO formatter + textStyle: {} + } + + // lineStyle and shadowStyle should not be specified here, + // otherwise it will always override those styles on option.axisPointer. + }, + textStyle: { + color: '#fff', + fontSize: 14 + } + } + }); + + +/***/ }, +/* 329 */ +/***/ function(module, exports, __webpack_require__) { + + + + var TooltipContent = __webpack_require__(330); + var zrUtil = __webpack_require__(4); + var formatUtil = __webpack_require__(6); + var numberUtil = __webpack_require__(7); + var graphic = __webpack_require__(18); + var findPointFromSeries = __webpack_require__(300); + var layoutUtil = __webpack_require__(71); + var env = __webpack_require__(2); + var Model = __webpack_require__(12); + var globalListener = __webpack_require__(303); + var axisHelper = __webpack_require__(101); + var axisPointerViewHelper = __webpack_require__(306); + + var bind = zrUtil.bind; + var each = zrUtil.each; + var parsePercent = numberUtil.parsePercent; + + + var proxyRect = new graphic.Rect({ + shape: {x: -1, y: -1, width: 2, height: 2} + }); + + __webpack_require__(1).extendComponentView({ + + type: 'tooltip', + + init: function (ecModel, api) { + if (env.node) { + return; + } + var tooltipContent = new TooltipContent(api.getDom(), api); + this._tooltipContent = tooltipContent; + }, + + render: function (tooltipModel, ecModel, api) { + if (env.node) { + return; + } + + // Reset + this.group.removeAll(); + + /** + * @private + * @type {module:echarts/component/tooltip/TooltipModel} + */ + this._tooltipModel = tooltipModel; + + /** + * @private + * @type {module:echarts/model/Global} + */ + this._ecModel = ecModel; + + /** + * @private + * @type {module:echarts/ExtensionAPI} + */ + this._api = api; + + /** + * Should be cleaned when render. + * @private + * @type {Array.>} + */ + this._lastDataByCoordSys = null; + + /** + * @private + * @type {boolean} + */ + this._alwaysShowContent = tooltipModel.get('alwaysShowContent'); + + var tooltipContent = this._tooltipContent; + tooltipContent.update(); + tooltipContent.setEnterable(tooltipModel.get('enterable')); + + this._initGlobalListener(); + + this._keepShow(); + }, + + _initGlobalListener: function () { + var tooltipModel = this._tooltipModel; + var triggerOn = tooltipModel.get('triggerOn'); + + globalListener.register( + 'itemTooltip', + this._api, + bind(function (currTrigger, e, dispatchAction) { + // If 'none', it is not controlled by mouse totally. + if (triggerOn !== 'none') { + if (triggerOn.indexOf(currTrigger) >= 0) { + this._tryShow(e, dispatchAction); + } + else if (currTrigger === 'leave') { + this._hide(dispatchAction); + } + } + }, this) + ); + }, + + _keepShow: function () { + var tooltipModel = this._tooltipModel; + var ecModel = this._ecModel; + var api = this._api; + + // Try to keep the tooltip show when refreshing + if (this._lastX != null + && this._lastY != null + // When user is willing to control tooltip totally using API, + // self.manuallyShowTip({x, y}) might cause tooltip hide, + // which is not expected. + && tooltipModel.get('triggerOn') !== 'none' + ) { + var self = this; + clearTimeout(this._refreshUpdateTimeout); + this._refreshUpdateTimeout = setTimeout(function () { + // Show tip next tick after other charts are rendered + // In case highlight action has wrong result + // FIXME + self.manuallyShowTip(tooltipModel, ecModel, api, { + x: self._lastX, + y: self._lastY + }); + }); + } + }, + + /** + * Show tip manually by + * dispatchAction({ + * type: 'showTip', + * x: 10, + * y: 10 + * }); + * Or + * dispatchAction({ + * type: 'showTip', + * seriesIndex: 0, + * dataIndex or dataIndexInside or name + * }); + * + * TODO Batch + */ + manuallyShowTip: function (tooltipModel, ecModel, api, payload) { + if (payload.from === this.uid || env.node) { + return; + } + + var dispatchAction = makeDispatchAction(payload, api); + + // Reset ticket + this._ticket = ''; + + // When triggered from axisPointer. + var dataByCoordSys = payload.dataByCoordSys; + + if (payload.tooltip && payload.x != null && payload.y != null) { + var el = proxyRect; + el.position = [payload.x, payload.y]; + el.update(); + el.tooltip = payload.tooltip; + // Manually show tooltip while view is not using zrender elements. + this._tryShow({ + offsetX: payload.x, + offsetY: payload.y, + target: el + }, dispatchAction); + } + else if (dataByCoordSys) { + this._tryShow({ + offsetX: payload.x, + offsetY: payload.y, + position: payload.position, + event: {}, + dataByCoordSys: payload.dataByCoordSys, + tooltipOption: payload.tooltipOption + }, dispatchAction); + } + else if (payload.seriesIndex != null) { + + if (this._manuallyAxisShowTip(tooltipModel, ecModel, api, payload)) { + return; + } + + var pointInfo = findPointFromSeries(payload, ecModel); + var cx = pointInfo.point[0]; + var cy = pointInfo.point[1]; + if (cx != null && cy != null) { + this._tryShow({ + offsetX: cx, + offsetY: cy, + position: payload.position, + target: pointInfo.el, + event: {} + }, dispatchAction); + } + } + else if (payload.x != null && payload.y != null) { + // FIXME + // should wrap dispatchAction like `axisPointer/globalListener` ? + api.dispatchAction({ + type: 'updateAxisPointer', + x: payload.x, + y: payload.y + }); + + this._tryShow({ + offsetX: payload.x, + offsetY: payload.y, + position: payload.position, + target: api.getZr().findHover(payload.x, payload.y).target, + event: {} + }, dispatchAction); + } + }, + + manuallyHideTip: function (tooltipModel, ecModel, api, payload) { + var tooltipContent = this._tooltipContent; + + if (!this._alwaysShowContent) { + tooltipContent.hideLater(this._tooltipModel.get('hideDelay')); + } + + this._lastX = this._lastY = null; + + if (payload.from !== this.uid) { + this._hide(makeDispatchAction(payload, api)); + } + }, + + // Be compatible with previous design, that is, when tooltip.type is 'axis' and + // dispatchAction 'showTip' with seriesIndex and dataIndex will trigger axis pointer + // and tooltip. + _manuallyAxisShowTip: function (tooltipModel, ecModel, api, payload) { + var seriesIndex = payload.seriesIndex; + var dataIndex = payload.dataIndex; + var coordSysAxesInfo = ecModel.getComponent('axisPointer').coordSysAxesInfo; + + if (seriesIndex == null || dataIndex == null || coordSysAxesInfo == null) { + return; + } + + var seriesModel = ecModel.getSeriesByIndex(seriesIndex); + if (!seriesModel) { + return; + } + + var data = seriesModel.getData(); + var tooltipModel = buildTooltipModel([ + data.getItemModel(dataIndex), + seriesModel, + (seriesModel.coordinateSystem || {}).model, + tooltipModel + ]); + + if (tooltipModel.get('trigger') !== 'axis') { + return; + } + + api.dispatchAction({ + type: 'updateAxisPointer', + seriesIndex: seriesIndex, + dataIndex: dataIndex, + position: payload.position + }); + + return true; + }, + + _tryShow: function (e, dispatchAction) { + var el = e.target; + var tooltipModel = this._tooltipModel; + + if (!tooltipModel) { + return; + } + + // Save mouse x, mouse y. So we can try to keep showing the tip if chart is refreshed + this._lastX = e.offsetX; + this._lastY = e.offsetY; + + var dataByCoordSys = e.dataByCoordSys; + if (dataByCoordSys && dataByCoordSys.length) { + this._showAxisTooltip(dataByCoordSys, e); + } + // Always show item tooltip if mouse is on the element with dataIndex + else if (el && el.dataIndex != null) { + this._lastDataByCoordSys = null; + this._showSeriesItemTooltip(e, el, dispatchAction); + } + // Tooltip provided directly. Like legend. + else if (el && el.tooltip) { + this._lastDataByCoordSys = null; + this._showComponentItemTooltip(e, el, dispatchAction); + } + else { + this._lastDataByCoordSys = null; + this._hide(dispatchAction); + } + }, + + _showOrMove: function (tooltipModel, cb) { + // showDelay is used in this case: tooltip.enterable is set + // as true. User intent to move mouse into tooltip and click + // something. `showDelay` makes it easyer to enter the content + // but tooltip do not move immediately. + var delay = tooltipModel.get('showDelay'); + cb = zrUtil.bind(cb, this); + clearTimeout(this._showTimout); + delay > 0 + ? (this._showTimout = setTimeout(cb, delay)) + : cb(); + }, + + _showAxisTooltip: function (dataByCoordSys, e) { + var ecModel = this._ecModel; + var globalTooltipModel = this._tooltipModel; + var point = [e.offsetX, e.offsetY]; + var singleDefaultHTML = []; + var singleParamsList = []; + var singleTooltipModel = buildTooltipModel([ + e.tooltipOption, + globalTooltipModel + ]); + + each(dataByCoordSys, function (itemCoordSys) { + // var coordParamList = []; + // var coordDefaultHTML = []; + // var coordTooltipModel = buildTooltipModel([ + // e.tooltipOption, + // itemCoordSys.tooltipOption, + // ecModel.getComponent(itemCoordSys.coordSysMainType, itemCoordSys.coordSysIndex), + // globalTooltipModel + // ]); + // var displayMode = coordTooltipModel.get('displayMode'); + // var paramsList = displayMode === 'single' ? singleParamsList : []; + + each(itemCoordSys.dataByAxis, function (item) { + var axisModel = ecModel.getComponent(item.axisDim + 'Axis', item.axisIndex); + var axisValue = item.value; + var seriesDefaultHTML = []; + + if (!axisModel || axisValue == null) { + return; + } + + var valueLabel = axisPointerViewHelper.getValueLabel( + axisValue, axisModel.axis, ecModel, + item.seriesDataIndices, + item.valueLabelOpt + ); + + zrUtil.each(item.seriesDataIndices, function (idxItem) { + var series = ecModel.getSeriesByIndex(idxItem.seriesIndex); + var dataIndex = idxItem.dataIndexInside; + var dataParams = series && series.getDataParams(dataIndex); + dataParams.axisDim = item.axisDim; + dataParams.axisIndex = item.axisIndex; + dataParams.axisType = item.axisType; + dataParams.axisId = item.axisId; + dataParams.axisValue = axisHelper.getAxisRawValue(axisModel.axis, axisValue); + dataParams.axisValueLabel = valueLabel; + + if (dataParams) { + singleParamsList.push(dataParams); + seriesDefaultHTML.push(series.formatTooltip(dataIndex, true)); + } + }); + + // Default tooltip content + // FIXME + // (1) shold be the first data which has name? + // (2) themeRiver, firstDataIndex is array, and first line is unnecessary. + var firstLine = valueLabel; + singleDefaultHTML.push( + (firstLine ? formatUtil.encodeHTML(firstLine) + '
                  ' : '') + + seriesDefaultHTML.join('
                  ') + ); + }); + }, this); + + // In most case, the second axis is shown upper than the first one. + singleDefaultHTML.reverse(); + singleDefaultHTML = singleDefaultHTML.join('

                  '); + + var positionExpr = e.position; + this._showOrMove(singleTooltipModel, function () { + if (this._updateContentNotChangedOnAxis(dataByCoordSys)) { + this._updatePosition( + singleTooltipModel, + positionExpr, + point[0], point[1], + this._tooltipContent, + singleParamsList + ); + } + else { + this._showTooltipContent( + singleTooltipModel, singleDefaultHTML, singleParamsList, Math.random(), + point[0], point[1], positionExpr + ); + } + }); + + // Do not trigger events here, because this branch only be entered + // from dispatchAction. + }, + + _showSeriesItemTooltip: function (e, el, dispatchAction) { + var ecModel = this._ecModel; + // Use dataModel in element if possible + // Used when mouseover on a element like markPoint or edge + // In which case, the data is not main data in series. + var seriesIndex = el.seriesIndex; + var seriesModel = ecModel.getSeriesByIndex(seriesIndex); + + // For example, graph link. + var dataModel = el.dataModel || seriesModel; + var dataIndex = el.dataIndex; + var dataType = el.dataType; + var data = dataModel.getData(); + + var tooltipModel = buildTooltipModel([ + data.getItemModel(dataIndex), + dataModel, + seriesModel && (seriesModel.coordinateSystem || {}).model, + this._tooltipModel + ]); + + var tooltipTrigger = tooltipModel.get('trigger'); + if (tooltipTrigger != null && tooltipTrigger !== 'item') { + return; + } + + var params = dataModel.getDataParams(dataIndex, dataType); + var defaultHtml = dataModel.formatTooltip(dataIndex, false, dataType); + var asyncTicket = 'item_' + dataModel.name + '_' + dataIndex; + + this._showOrMove(tooltipModel, function () { + this._showTooltipContent( + tooltipModel, defaultHtml, params, asyncTicket, + e.offsetX, e.offsetY, e.position, e.target + ); + }); + + // FIXME + // duplicated showtip if manuallyShowTip is called from dispatchAction. + dispatchAction({ + type: 'showTip', + dataIndexInside: dataIndex, + dataIndex: data.getRawIndex(dataIndex), + seriesIndex: seriesIndex, + from: this.uid + }); + }, + + _showComponentItemTooltip: function (e, el, dispatchAction) { + var tooltipOpt = el.tooltip; + if (typeof tooltipOpt === 'string') { + var content = tooltipOpt; + tooltipOpt = { + content: content, + // Fixed formatter + formatter: content + }; + } + var subTooltipModel = new Model(tooltipOpt, this._tooltipModel, this._ecModel); + var defaultHtml = subTooltipModel.get('content'); + var asyncTicket = Math.random(); + + // Do not check whether `trigger` is 'none' here, because `trigger` + // only works on cooridinate system. In fact, we have not found case + // that requires setting `trigger` nothing on component yet. + + this._showOrMove(subTooltipModel, function () { + this._showTooltipContent( + subTooltipModel, defaultHtml, subTooltipModel.get('formatterParams') || {}, + asyncTicket, e.offsetX, e.offsetY, e.position, el + ); + }); + + // If not dispatch showTip, tip may be hide triggered by axis. + dispatchAction({ + type: 'showTip', + from: this.uid + }); + }, + + _showTooltipContent: function ( + tooltipModel, defaultHtml, params, asyncTicket, x, y, positionExpr, el + ) { + // Reset ticket + this._ticket = ''; + + if (!tooltipModel.get('showContent') || !tooltipModel.get('show')) { + return; + } + + var tooltipContent = this._tooltipContent; + + var formatter = tooltipModel.get('formatter'); + positionExpr = positionExpr || tooltipModel.get('position'); + var html = defaultHtml; + + if (formatter && typeof formatter === 'string') { + html = formatUtil.formatTpl(formatter, params, true); + } + else if (typeof formatter === 'function') { + var callback = bind(function (cbTicket, html) { + if (cbTicket === this._ticket) { + tooltipContent.setContent(html); + this._updatePosition( + tooltipModel, positionExpr, x, y, tooltipContent, params, el + ); + } + }, this); + this._ticket = asyncTicket; + html = formatter(params, asyncTicket, callback); + } + + tooltipContent.setContent(html); + tooltipContent.show(tooltipModel); + + this._updatePosition( + tooltipModel, positionExpr, x, y, tooltipContent, params, el + ); + }, + + /** + * @param {string|Function|Array.} positionExpr + * @param {number} x Mouse x + * @param {number} y Mouse y + * @param {boolean} confine Whether confine tooltip content in view rect. + * @param {Object|} params + * @param {module:zrender/Element} el target element + * @param {module:echarts/ExtensionAPI} api + * @return {Array.} + */ + _updatePosition: function (tooltipModel, positionExpr, x, y, content, params, el) { + var viewWidth = this._api.getWidth(); + var viewHeight = this._api.getHeight(); + positionExpr = positionExpr || tooltipModel.get('position'); + + var contentSize = content.getSize(); + var align = tooltipModel.get('align'); + var vAlign = tooltipModel.get('verticalAlign'); + var rect = el && el.getBoundingRect().clone(); + el && rect.applyTransform(el.transform); + + if (typeof positionExpr === 'function') { + // Callback of position can be an array or a string specify the position + positionExpr = positionExpr([x, y], params, content.el, rect, { + viewSize: [viewWidth, viewHeight], + contentSize: contentSize.slice() + }); + } + + if (zrUtil.isArray(positionExpr)) { + x = parsePercent(positionExpr[0], viewWidth); + y = parsePercent(positionExpr[1], viewHeight); + } + else if (zrUtil.isObject(positionExpr)) { + positionExpr.width = contentSize[0]; + positionExpr.height = contentSize[1]; + var layoutRect = layoutUtil.getLayoutRect( + positionExpr, {width: viewWidth, height: viewHeight} + ); + x = layoutRect.x; + y = layoutRect.y; + align = null; + // When positionExpr is left/top/right/bottom, + // align and verticalAlign will not work. + vAlign = null; + } + // Specify tooltip position by string 'top' 'bottom' 'left' 'right' around graphic element + else if (typeof positionExpr === 'string' && el) { + var pos = calcTooltipPosition( + positionExpr, rect, contentSize + ); + x = pos[0]; + y = pos[1]; + } + else { + var pos = refixTooltipPosition( + x, y, content.el, viewWidth, viewHeight, align ? null : 20, vAlign ? null : 20 + ); + x = pos[0]; + y = pos[1]; + } + + align && (x -= isCenterAlign(align) ? contentSize[0] / 2 : align === 'right' ? contentSize[0] : 0); + vAlign && (y -= isCenterAlign(vAlign) ? contentSize[1] / 2 : vAlign === 'bottom' ? contentSize[1] : 0); + + if (tooltipModel.get('confine')) { + var pos = confineTooltipPosition( + x, y, content.el, viewWidth, viewHeight + ); + x = pos[0]; + y = pos[1]; + } + + content.moveTo(x, y); + }, + + // FIXME + // Should we remove this but leave this to user? + _updateContentNotChangedOnAxis: function (dataByCoordSys) { + var lastCoordSys = this._lastDataByCoordSys; + var contentNotChanged = !!lastCoordSys + && lastCoordSys.length === dataByCoordSys.length; + + contentNotChanged && each(lastCoordSys, function (lastItemCoordSys, indexCoordSys) { + var lastDataByAxis = lastItemCoordSys.dataByAxis || {}; + var thisItemCoordSys = dataByCoordSys[indexCoordSys] || {}; + var thisDataByAxis = thisItemCoordSys.dataByAxis || []; + contentNotChanged &= lastDataByAxis.length === thisDataByAxis.length; + + contentNotChanged && each(lastDataByAxis, function (lastItem, indexAxis) { + var thisItem = thisDataByAxis[indexAxis] || {}; + var lastIndices = lastItem.seriesDataIndices || []; + var newIndices = thisItem.seriesDataIndices || []; + + contentNotChanged &= + lastItem.value === thisItem.value + && lastItem.axisType === thisItem.axisType + && lastItem.axisId === thisItem.axisId + && lastIndices.length === newIndices.length; + + contentNotChanged && each(lastIndices, function (lastIdxItem, j) { + var newIdxItem = newIndices[j]; + contentNotChanged &= + lastIdxItem.seriesIndex === newIdxItem.seriesIndex + && lastIdxItem.dataIndex === newIdxItem.dataIndex; + }); + }); + }); + + this._lastDataByCoordSys = dataByCoordSys; + + return !!contentNotChanged; + }, + + _hide: function (dispatchAction) { + // Do not directly hideLater here, because this behavior may be prevented + // in dispatchAction when showTip is dispatched. + + // FIXME + // duplicated hideTip if manuallyHideTip is called from dispatchAction. + this._lastDataByCoordSys = null; + dispatchAction({ + type: 'hideTip', + from: this.uid + }); + }, + + dispose: function (ecModel, api) { + if (env.node) { + return; + } + this._tooltipContent.hide(); + globalListener.unregister('itemTooltip', api); + } + }); + + + /** + * @param {Array.} modelCascade + * From top to bottom. (the last one should be globalTooltipModel); + */ + function buildTooltipModel(modelCascade) { + var resultModel = modelCascade.pop(); + while (modelCascade.length) { + var tooltipOpt = modelCascade.pop(); + if (tooltipOpt) { + if (tooltipOpt instanceof Model) { + tooltipOpt = tooltipOpt.get('tooltip', true); + } + // In each data item tooltip can be simply write: + // { + // value: 10, + // tooltip: 'Something you need to know' + // } + if (typeof tooltipOpt === 'string') { + tooltipOpt = {formatter: tooltipOpt}; + } + resultModel = new Model(tooltipOpt, resultModel, resultModel.ecModel); + } + } + return resultModel; + } + + function makeDispatchAction(payload, api) { + return payload.dispatchAction || zrUtil.bind(api.dispatchAction, api); + } + + function refixTooltipPosition(x, y, el, viewWidth, viewHeight, gapH, gapV) { + var width = el.clientWidth; + var height = el.clientHeight; + + if (gapH != null) { + if (x + width + gapH > viewWidth) { + x -= width + gapH; + } + else { + x += gapH; + } + } + if (gapV != null) { + if (y + height + gapV > viewHeight) { + y -= height + gapV; + } + else { + y += gapV; + } + } + return [x, y]; + } + + function confineTooltipPosition(x, y, el, viewWidth, viewHeight) { + var width = el.clientWidth; + var height = el.clientHeight; + + x = Math.min(x + width, viewWidth) - width; + y = Math.min(y + height, viewHeight) - height; + x = Math.max(x, 0); + y = Math.max(y, 0); + + return [x, y]; + } + + function calcTooltipPosition(position, rect, contentSize) { + var domWidth = contentSize[0]; + var domHeight = contentSize[1]; + var gap = 5; + var x = 0; + var y = 0; + var rectWidth = rect.width; + var rectHeight = rect.height; + switch (position) { + case 'inside': + x = rect.x + rectWidth / 2 - domWidth / 2; + y = rect.y + rectHeight / 2 - domHeight / 2; + break; + case 'top': + x = rect.x + rectWidth / 2 - domWidth / 2; + y = rect.y - domHeight - gap; + break; + case 'bottom': + x = rect.x + rectWidth / 2 - domWidth / 2; + y = rect.y + rectHeight + gap; + break; + case 'left': + x = rect.x - domWidth - gap; + y = rect.y + rectHeight / 2 - domHeight / 2; + break; + case 'right': + x = rect.x + rectWidth + gap; + y = rect.y + rectHeight / 2 - domHeight / 2; + } + return [x, y]; + } + + function isCenterAlign(align) { + return align === 'center' || align === 'middle'; + } + + + +/***/ }, +/* 330 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * @module echarts/component/tooltip/TooltipContent + */ + + + var zrUtil = __webpack_require__(4); + var zrColor = __webpack_require__(31); + var eventUtil = __webpack_require__(88); + var formatUtil = __webpack_require__(6); + var each = zrUtil.each; + var toCamelCase = formatUtil.toCamelCase; + var env = __webpack_require__(2); + + var vendors = ['', '-webkit-', '-moz-', '-o-']; + + var gCssText = 'position:absolute;display:block;border-style:solid;white-space:nowrap;z-index:9999999;'; + + /** + * @param {number} duration + * @return {string} + * @inner + */ + function assembleTransition(duration) { + var transitionCurve = 'cubic-bezier(0.23, 1, 0.32, 1)'; + var transitionText = 'left ' + duration + 's ' + transitionCurve + ',' + + 'top ' + duration + 's ' + transitionCurve; + return zrUtil.map(vendors, function (vendorPrefix) { + return vendorPrefix + 'transition:' + transitionText; + }).join(';'); + } + + /** + * @param {Object} textStyle + * @return {string} + * @inner + */ + function assembleFont(textStyleModel) { + var cssText = []; + + var fontSize = textStyleModel.get('fontSize'); + var color = textStyleModel.getTextColor(); + + color && cssText.push('color:' + color); + + cssText.push('font:' + textStyleModel.getFont()); + + fontSize && + cssText.push('line-height:' + Math.round(fontSize * 3 / 2) + 'px'); + + each(['decoration', 'align'], function (name) { + var val = textStyleModel.get(name); + val && cssText.push('text-' + name + ':' + val); + }); + + return cssText.join(';'); + } + + /** + * @param {Object} tooltipModel + * @return {string} + * @inner + */ + function assembleCssText(tooltipModel) { + + var cssText = []; + + var transitionDuration = tooltipModel.get('transitionDuration'); + var backgroundColor = tooltipModel.get('backgroundColor'); + var textStyleModel = tooltipModel.getModel('textStyle'); + var padding = tooltipModel.get('padding'); + + // Animation transition. Do not animate when transitionDuration is 0. + transitionDuration && + cssText.push(assembleTransition(transitionDuration)); + + if (backgroundColor) { + if (env.canvasSupported) { + cssText.push('background-Color:' + backgroundColor); + } + else { + // for ie + cssText.push( + 'background-Color:#' + zrColor.toHex(backgroundColor) + ); + cssText.push('filter:alpha(opacity=70)'); + } + } + + // Border style + each(['width', 'color', 'radius'], function (name) { + var borderName = 'border-' + name; + var camelCase = toCamelCase(borderName); + var val = tooltipModel.get(camelCase); + val != null && + cssText.push(borderName + ':' + val + (name === 'color' ? '' : 'px')); + }); + + // Text style + cssText.push(assembleFont(textStyleModel)); + + // Padding + if (padding != null) { + cssText.push('padding:' + formatUtil.normalizeCssArray(padding).join('px ') + 'px'); + } + + return cssText.join(';') + ';'; + } + + /** + * @alias module:echarts/component/tooltip/TooltipContent + * @constructor + */ + function TooltipContent(container, api) { + var el = document.createElement('div'); + var zr = this._zr = api.getZr(); + + this.el = el; + + this._x = api.getWidth() / 2; + this._y = api.getHeight() / 2; + + container.appendChild(el); + + this._container = container; + + this._show = false; + + /** + * @private + */ + this._hideTimeout; + + var self = this; + el.onmouseenter = function () { + // clear the timeout in hideLater and keep showing tooltip + if (self._enterable) { + clearTimeout(self._hideTimeout); + self._show = true; + } + self._inContent = true; + }; + el.onmousemove = function (e) { + e = e || window.event; + if (!self._enterable) { + // Try trigger zrender event to avoid mouse + // in and out shape too frequently + var handler = zr.handler; + eventUtil.normalizeEvent(container, e, true); + handler.dispatch('mousemove', e); + } + }; + el.onmouseleave = function () { + if (self._enterable) { + if (self._show) { + self.hideLater(self._hideDelay); + } + } + self._inContent = false; + }; + } + + TooltipContent.prototype = { + + constructor: TooltipContent, + + /** + * @private + * @type {boolean} + */ + _enterable: true, + + /** + * Update when tooltip is rendered + */ + update: function () { + // FIXME + // Move this logic to ec main? + var container = this._container; + var stl = container.currentStyle + || document.defaultView.getComputedStyle(container); + var domStyle = container.style; + if (domStyle.position !== 'absolute' && stl.position !== 'absolute') { + domStyle.position = 'relative'; + } + // Hide the tooltip + // PENDING + // this.hide(); + }, + + show: function (tooltipModel) { + clearTimeout(this._hideTimeout); + var el = this.el; + + el.style.cssText = gCssText + assembleCssText(tooltipModel) + // http://stackoverflow.com/questions/21125587/css3-transition-not-working-in-chrome-anymore + + ';left:' + this._x + 'px;top:' + this._y + 'px;' + + (tooltipModel.get('extraCssText') || ''); + + el.style.display = el.innerHTML ? 'block' : 'none'; + + this._show = true; + }, + + setContent: function (content) { + this.el.innerHTML = content == null ? '' : content; + }, + + setEnterable: function (enterable) { + this._enterable = enterable; + }, + + getSize: function () { + var el = this.el; + return [el.clientWidth, el.clientHeight]; + }, + + moveTo: function (x, y) { + // xy should be based on canvas root. But tooltipContent is + // the sibling of canvas root. So padding of ec container + // should be considered here. + var zr = this._zr; + var viewportRoot; + if (zr && zr.painter && (viewportRoot = zr.painter.getViewportRoot())) { + x += viewportRoot.offsetLeft || 0; + y += viewportRoot.offsetTop || 0; + } + + var style = this.el.style; + style.left = x + 'px'; + style.top = y + 'px'; + + this._x = x; + this._y = y; + }, + + hide: function () { + this.el.style.display = 'none'; + this._show = false; + }, + + hideLater: function (time) { + if (this._show && !(this._inContent && this._enterable)) { + if (time) { + this._hideDelay = time; + // Set show false to avoid invoke hideLater mutiple times + this._show = false; + this._hideTimeout = setTimeout(zrUtil.bind(this.hide, this), time); + } + else { + this.hide(); + } + } + }, + + isShow: function () { + return this._show; + } + }; + + module.exports = TooltipContent; + + +/***/ }, +/* 331 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + + var zrUtil = __webpack_require__(4); + + __webpack_require__(332); + __webpack_require__(338); + __webpack_require__(340); + __webpack_require__(298); + + __webpack_require__(342); + + // For reducing size of echarts.min, barLayoutPolar is required by polar. + __webpack_require__(1).registerLayout(zrUtil.curry(__webpack_require__(343), 'bar')); + + // Polar view + __webpack_require__(1).extendComponentView({ + type: 'polar' + }); + + +/***/ }, +/* 332 */ +/***/ function(module, exports, __webpack_require__) { + + // TODO Axis scale + + + var Polar = __webpack_require__(333); + var numberUtil = __webpack_require__(7); + var zrUtil = __webpack_require__(4); + + var axisHelper = __webpack_require__(101); + var niceScaleExtent = axisHelper.niceScaleExtent; + + // 依赖 PolarModel 做预处理 + __webpack_require__(336); + + /** + * Resize method bound to the polar + * @param {module:echarts/coord/polar/PolarModel} polarModel + * @param {module:echarts/ExtensionAPI} api + */ + function resizePolar(polarModel, api) { + var center = polarModel.get('center'); + var radius = polarModel.get('radius'); + var width = api.getWidth(); + var height = api.getHeight(); + var parsePercent = numberUtil.parsePercent; + + this.cx = parsePercent(center[0], width); + this.cy = parsePercent(center[1], height); + + var radiusAxis = this.getRadiusAxis(); + var size = Math.min(width, height) / 2; + // var idx = radiusAxis.inverse ? 1 : 0; + radiusAxis.setExtent(0, parsePercent(radius, size)); + } + + /** + * Update polar + */ + function updatePolarScale(ecModel, api) { + var polar = this; + var angleAxis = polar.getAngleAxis(); + var radiusAxis = polar.getRadiusAxis(); + // Reset scale + angleAxis.scale.setExtent(Infinity, -Infinity); + radiusAxis.scale.setExtent(Infinity, -Infinity); + + ecModel.eachSeries(function (seriesModel) { + if (seriesModel.coordinateSystem === polar) { + var data = seriesModel.getData(); + radiusAxis.scale.unionExtentFromData(data, 'radius'); + angleAxis.scale.unionExtentFromData(data, 'angle'); + } + }); + + niceScaleExtent(angleAxis.scale, angleAxis.model); + niceScaleExtent(radiusAxis.scale, radiusAxis.model); + + // Fix extent of category angle axis + if (angleAxis.type === 'category' && !angleAxis.onBand) { + var extent = angleAxis.getExtent(); + var diff = 360 / angleAxis.scale.count(); + angleAxis.inverse ? (extent[1] += diff) : (extent[1] -= diff); + angleAxis.setExtent(extent[0], extent[1]); + } + } + + /** + * Set common axis properties + * @param {module:echarts/coord/polar/AngleAxis|module:echarts/coord/polar/RadiusAxis} + * @param {module:echarts/coord/polar/AxisModel} + * @inner + */ + function setAxis(axis, axisModel) { + axis.type = axisModel.get('type'); + axis.scale = axisHelper.createScaleByModel(axisModel); + axis.onBand = axisModel.get('boundaryGap') && axis.type === 'category'; + + // FIXME Radius axis not support inverse axis + if (axisModel.mainType === 'angleAxis') { + var startAngle = axisModel.get('startAngle'); + axis.inverse = axisModel.get('inverse') ^ axisModel.get('clockwise'); + axis.setExtent(startAngle, startAngle + (axis.inverse ? -360 : 360)); + } + + // Inject axis instance + axisModel.axis = axis; + axis.model = axisModel; + } + + + var polarCreator = { + + dimensions: Polar.prototype.dimensions, + + create: function (ecModel, api) { + var polarList = []; + ecModel.eachComponent('polar', function (polarModel, idx) { + var polar = new Polar(idx); + // Inject resize and update method + polar.resize = resizePolar; + polar.update = updatePolarScale; + + var radiusAxis = polar.getRadiusAxis(); + var angleAxis = polar.getAngleAxis(); + + var radiusAxisModel = polarModel.findAxisModel('radiusAxis'); + var angleAxisModel = polarModel.findAxisModel('angleAxis'); + + setAxis(radiusAxis, radiusAxisModel); + setAxis(angleAxis, angleAxisModel); + + polar.resize(polarModel, api); + polarList.push(polar); + + polarModel.coordinateSystem = polar; + polar.model = polarModel; + }); + // Inject coordinateSystem to series + ecModel.eachSeries(function (seriesModel) { + if (seriesModel.get('coordinateSystem') === 'polar') { + var polarModel = ecModel.queryComponents({ + mainType: 'polar', + index: seriesModel.get('polarIndex'), + id: seriesModel.get('polarId') + })[0]; + + if (true) { + if (!polarModel) { + throw new Error( + 'Polar "' + zrUtil.retrieve( + seriesModel.get('polarIndex'), + seriesModel.get('polarId'), + 0 + ) + '" not found' + ); + } + } + seriesModel.coordinateSystem = polarModel.coordinateSystem; + } + }); + + return polarList; + } + }; + + __webpack_require__(76).register('polar', polarCreator); + + +/***/ }, +/* 333 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + /** + * @module echarts/coord/polar/Polar + */ + + + var RadiusAxis = __webpack_require__(334); + var AngleAxis = __webpack_require__(335); + + /** + * @alias {module:echarts/coord/polar/Polar} + * @constructor + * @param {string} name + */ + var Polar = function (name) { + + /** + * @type {string} + */ + this.name = name || ''; + + /** + * x of polar center + * @type {number} + */ + this.cx = 0; + + /** + * y of polar center + * @type {number} + */ + this.cy = 0; + + /** + * @type {module:echarts/coord/polar/RadiusAxis} + * @private + */ + this._radiusAxis = new RadiusAxis(); + + /** + * @type {module:echarts/coord/polar/AngleAxis} + * @private + */ + this._angleAxis = new AngleAxis(); + + this._radiusAxis.polar = this._angleAxis.polar = this; + }; + + Polar.prototype = { + + type: 'polar', + + axisPointerEnabled: true, + + constructor: Polar, + + /** + * @param {Array.} + * @readOnly + */ + dimensions: ['radius', 'angle'], + + /** + * @type {module:echarts/coord/PolarModel} + */ + model: null, + + /** + * If contain coord + * @param {Array.} point + * @return {boolean} + */ + containPoint: function (point) { + var coord = this.pointToCoord(point); + return this._radiusAxis.contain(coord[0]) + && this._angleAxis.contain(coord[1]); + }, + + /** + * If contain data + * @param {Array.} data + * @return {boolean} + */ + containData: function (data) { + return this._radiusAxis.containData(data[0]) + && this._angleAxis.containData(data[1]); + }, + + /** + * @param {string} dim + * @return {module:echarts/coord/polar/AngleAxis|module:echarts/coord/polar/RadiusAxis} + */ + getAxis: function (dim) { + return this['_' + dim + 'Axis']; + }, + + /** + * @return {Array.} + */ + getAxes: function () { + return [this._radiusAxis, this._angleAxis]; + }, + + /** + * Get axes by type of scale + * @param {string} scaleType + * @return {module:echarts/coord/polar/AngleAxis|module:echarts/coord/polar/RadiusAxis} + */ + getAxesByScale: function (scaleType) { + var axes = []; + var angleAxis = this._angleAxis; + var radiusAxis = this._radiusAxis; + angleAxis.scale.type === scaleType && axes.push(angleAxis); + radiusAxis.scale.type === scaleType && axes.push(radiusAxis); + + return axes; + }, + + /** + * @return {module:echarts/coord/polar/AngleAxis} + */ + getAngleAxis: function () { + return this._angleAxis; + }, + + /** + * @return {module:echarts/coord/polar/RadiusAxis} + */ + getRadiusAxis: function () { + return this._radiusAxis; + }, + + /** + * @param {module:echarts/coord/polar/Axis} + * @return {module:echarts/coord/polar/Axis} + */ + getOtherAxis: function (axis) { + var angleAxis = this._angleAxis; + return axis === angleAxis ? this._radiusAxis : angleAxis; + }, + + /** + * Base axis will be used on stacking. + * + * @return {module:echarts/coord/polar/Axis} + */ + getBaseAxis: function () { + return this.getAxesByScale('ordinal')[0] + || this.getAxesByScale('time')[0] + || this.getAngleAxis(); + }, + + /** + * @param {string} [dim] 'radius' or 'angle' or 'auto' or null/undefined + * @return {Object} {baseAxes: [], otherAxes: []} + */ + getTooltipAxes: function (dim) { + var baseAxis = (dim != null && dim !== 'auto') + ? this.getAxis(dim) : this.getBaseAxis(); + return { + baseAxes: [baseAxis], + otherAxes: [this.getOtherAxis(baseAxis)] + }; + }, + + /** + * Convert series data to a list of (x, y) points + * @param {module:echarts/data/List} data + * @return {Array} + * Return list of coordinates. For example: + * `[[10, 10], [20, 20], [30, 30]]` + */ + dataToPoints: function (data) { + return data.mapArray(this.dimensions, function (radius, angle) { + return this.dataToPoint([radius, angle]); + }, true, this); + }, + + /** + * Convert a single data item to (x, y) point. + * Parameter data is an array which the first element is radius and the second is angle + * @param {Array.} data + * @param {boolean} [clamp=false] + * @return {Array.} + */ + dataToPoint: function (data, clamp) { + return this.coordToPoint([ + this._radiusAxis.dataToRadius(data[0], clamp), + this._angleAxis.dataToAngle(data[1], clamp) + ]); + }, + + /** + * Convert a (x, y) point to data + * @param {Array.} point + * @param {boolean} [clamp=false] + * @return {Array.} + */ + pointToData: function (point, clamp) { + var coord = this.pointToCoord(point); + return [ + this._radiusAxis.radiusToData(coord[0], clamp), + this._angleAxis.angleToData(coord[1], clamp) + ]; + }, + + /** + * Convert a (x, y) point to (radius, angle) coord + * @param {Array.} point + * @return {Array.} + */ + pointToCoord: function (point) { + var dx = point[0] - this.cx; + var dy = point[1] - this.cy; + var angleAxis = this.getAngleAxis(); + var extent = angleAxis.getExtent(); + var minAngle = Math.min(extent[0], extent[1]); + var maxAngle = Math.max(extent[0], extent[1]); + // Fix fixed extent in polarCreator + // FIXME + angleAxis.inverse + ? (minAngle = maxAngle - 360) + : (maxAngle = minAngle + 360); + + var radius = Math.sqrt(dx * dx + dy * dy); + dx /= radius; + dy /= radius; + + var radian = Math.atan2(-dy, dx) / Math.PI * 180; + + // move to angleExtent + var dir = radian < minAngle ? 1 : -1; + while (radian < minAngle || radian > maxAngle) { + radian += dir * 360; + } + + return [radius, radian]; + }, + + /** + * Convert a (radius, angle) coord to (x, y) point + * @param {Array.} coord + * @return {Array.} + */ + coordToPoint: function (coord) { + var radius = coord[0]; + var radian = coord[1] / 180 * Math.PI; + var x = Math.cos(radian) * radius + this.cx; + // Inverse the y + var y = -Math.sin(radian) * radius + this.cy; + + return [x, y]; + } + + }; + + module.exports = Polar; + + +/***/ }, +/* 334 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + + var zrUtil = __webpack_require__(4); + var Axis = __webpack_require__(100); + + function RadiusAxis(scale, radiusExtent) { + + Axis.call(this, 'radius', scale, radiusExtent); + + /** + * Axis type + * - 'category' + * - 'value' + * - 'time' + * - 'log' + * @type {string} + */ + this.type = 'category'; + } + + RadiusAxis.prototype = { + + constructor: RadiusAxis, + + /** + * @override + */ + pointToData: function (point, clamp) { + return this.polar.pointToData(point, clamp)[this.dim === 'radius' ? 0 : 1]; + }, + + dataToRadius: Axis.prototype.dataToCoord, + + radiusToData: Axis.prototype.coordToData + }; + + zrUtil.inherits(RadiusAxis, Axis); + + module.exports = RadiusAxis; + + +/***/ }, +/* 335 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + + var zrUtil = __webpack_require__(4); + var Axis = __webpack_require__(100); + + function AngleAxis(scale, angleExtent) { + + angleExtent = angleExtent || [0, 360]; + + Axis.call(this, 'angle', scale, angleExtent); + + /** + * Axis type + * - 'category' + * - 'value' + * - 'time' + * - 'log' + * @type {string} + */ + this.type = 'category'; + } + + AngleAxis.prototype = { + + constructor: AngleAxis, + + /** + * @override + */ + pointToData: function (point, clamp) { + return this.polar.pointToData(point, clamp)[this.dim === 'radius' ? 0 : 1]; + }, + + dataToAngle: Axis.prototype.dataToCoord, + + angleToData: Axis.prototype.coordToData + }; + + zrUtil.inherits(AngleAxis, Axis); + + module.exports = AngleAxis; + + +/***/ }, +/* 336 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + + __webpack_require__(337); + + __webpack_require__(1).extendComponentModel({ + + type: 'polar', + + dependencies: ['polarAxis', 'angleAxis'], + + /** + * @type {module:echarts/coord/polar/Polar} + */ + coordinateSystem: null, + + /** + * @param {string} axisType + * @return {module:echarts/coord/polar/AxisModel} + */ + findAxisModel: function (axisType) { + var foundAxisModel; + var ecModel = this.ecModel; + + ecModel.eachComponent(axisType, function (axisModel) { + if (axisModel.getCoordSysModel() === this) { + foundAxisModel = axisModel; + } + }, this); + return foundAxisModel; + }, + + defaultOption: { + + zlevel: 0, + + z: 0, + + center: ['50%', '50%'], + + radius: '80%' + } + }); + + +/***/ }, +/* 337 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + + var zrUtil = __webpack_require__(4); + var ComponentModel = __webpack_require__(69); + var axisModelCreator = __webpack_require__(131); + + var PolarAxisModel = ComponentModel.extend({ + + type: 'polarAxis', + + /** + * @type {module:echarts/coord/polar/AngleAxis|module:echarts/coord/polar/RadiusAxis} + */ + axis: null, + + /** + * @override + */ + getCoordSysModel: function () { + return this.ecModel.queryComponents({ + mainType: 'polar', + index: this.option.polarIndex, + id: this.option.polarId + })[0]; + } + + }); + + zrUtil.merge(PolarAxisModel.prototype, __webpack_require__(112)); + + var polarAxisDefaultExtendedOption = { + angle: { + // polarIndex: 0, + // polarId: '', + + startAngle: 90, + + clockwise: true, + + splitNumber: 12, + + axisLabel: { + rotate: false + } + }, + radius: { + // polarIndex: 0, + // polarId: '', + + splitNumber: 5 + } + }; + + function getAxisType(axisDim, option) { + // Default axis with data is category axis + return option.type || (option.data ? 'category' : 'value'); + } + + axisModelCreator('angle', PolarAxisModel, getAxisType, polarAxisDefaultExtendedOption.angle); + axisModelCreator('radius', PolarAxisModel, getAxisType, polarAxisDefaultExtendedOption.radius); + + + +/***/ }, +/* 338 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + + __webpack_require__(332); + + __webpack_require__(339); + + +/***/ }, +/* 339 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + + var zrUtil = __webpack_require__(4); + var graphic = __webpack_require__(18); + var Model = __webpack_require__(12); + + var elementList = ['axisLine', 'axisLabel', 'axisTick', 'splitLine', 'splitArea']; + + function getAxisLineShape(polar, r0, r, angle) { + var start = polar.coordToPoint([r0, angle]); + var end = polar.coordToPoint([r, angle]); + + return { + x1: start[0], + y1: start[1], + x2: end[0], + y2: end[1] + }; + } + + __webpack_require__(136).extend({ + + type: 'angleAxis', + + axisPointerClass: 'PolarAxisPointer', + + render: function (angleAxisModel, ecModel) { + this.group.removeAll(); + if (!angleAxisModel.get('show')) { + return; + } + + var angleAxis = angleAxisModel.axis; + var polar = angleAxis.polar; + var radiusExtent = polar.getRadiusAxis().getExtent(); + var ticksAngles = angleAxis.getTicksCoords(); + + if (angleAxis.type !== 'category') { + // Remove the last tick which will overlap the first tick + ticksAngles.pop(); + } + + zrUtil.each(elementList, function (name) { + if (angleAxisModel.get(name +'.show') + && (!angleAxis.scale.isBlank() || name === 'axisLine') + ) { + this['_' + name](angleAxisModel, polar, ticksAngles, radiusExtent); + } + }, this); + }, + + /** + * @private + */ + _axisLine: function (angleAxisModel, polar, ticksAngles, radiusExtent) { + var lineStyleModel = angleAxisModel.getModel('axisLine.lineStyle'); + + var circle = new graphic.Circle({ + shape: { + cx: polar.cx, + cy: polar.cy, + r: radiusExtent[1] + }, + style: lineStyleModel.getLineStyle(), + z2: 1, + silent: true + }); + circle.style.fill = null; + + this.group.add(circle); + }, + + /** + * @private + */ + _axisTick: function (angleAxisModel, polar, ticksAngles, radiusExtent) { + var tickModel = angleAxisModel.getModel('axisTick'); + + var tickLen = (tickModel.get('inside') ? -1 : 1) * tickModel.get('length'); + + var lines = zrUtil.map(ticksAngles, function (tickAngle) { + return new graphic.Line({ + shape: getAxisLineShape(polar, radiusExtent[1], radiusExtent[1] + tickLen, tickAngle) + }); + }); + this.group.add(graphic.mergePath( + lines, { + style: zrUtil.defaults( + tickModel.getModel('lineStyle').getLineStyle(), + { + stroke: angleAxisModel.get('axisLine.lineStyle.color') + } + ) + } + )); + }, + + /** + * @private + */ + _axisLabel: function (angleAxisModel, polar, ticksAngles, radiusExtent) { + var axis = angleAxisModel.axis; + + var categoryData = angleAxisModel.get('data'); + + var labelModel = angleAxisModel.getModel('axisLabel'); + var axisTextStyleModel = labelModel.getModel('textStyle'); + + var labels = angleAxisModel.getFormattedLabels(); + + var labelMargin = labelModel.get('margin'); + var labelsAngles = axis.getLabelsCoords(); + + // Use length of ticksAngles because it may remove the last tick to avoid overlapping + for (var i = 0; i < ticksAngles.length; i++) { + var r = radiusExtent[1]; + var p = polar.coordToPoint([r + labelMargin, labelsAngles[i]]); + var cx = polar.cx; + var cy = polar.cy; + + var labelTextAlign = Math.abs(p[0] - cx) / r < 0.3 + ? 'center' : (p[0] > cx ? 'left' : 'right'); + var labelTextBaseline = Math.abs(p[1] - cy) / r < 0.3 + ? 'middle' : (p[1] > cy ? 'top' : 'bottom'); + + var textStyleModel = axisTextStyleModel; + if (categoryData && categoryData[i] && categoryData[i].textStyle) { + textStyleModel = new Model( + categoryData[i].textStyle, axisTextStyleModel + ); + } + this.group.add(new graphic.Text({ + style: { + x: p[0], + y: p[1], + fill: textStyleModel.getTextColor() || angleAxisModel.get('axisLine.lineStyle.color'), + text: labels[i], + textAlign: labelTextAlign, + textVerticalAlign: labelTextBaseline, + textFont: textStyleModel.getFont() + }, + silent: true + })); + } + }, + + /** + * @private + */ + _splitLine: function (angleAxisModel, polar, ticksAngles, radiusExtent) { + var splitLineModel = angleAxisModel.getModel('splitLine'); + var lineStyleModel = splitLineModel.getModel('lineStyle'); + var lineColors = lineStyleModel.get('color'); + var lineCount = 0; + + lineColors = lineColors instanceof Array ? lineColors : [lineColors]; + + var splitLines = []; + + for (var i = 0; i < ticksAngles.length; i++) { + var colorIndex = (lineCount++) % lineColors.length; + splitLines[colorIndex] = splitLines[colorIndex] || []; + splitLines[colorIndex].push(new graphic.Line({ + shape: getAxisLineShape(polar, radiusExtent[0], radiusExtent[1], ticksAngles[i]) + })); + } + + // Simple optimization + // Batching the lines if color are the same + for (var i = 0; i < splitLines.length; i++) { + this.group.add(graphic.mergePath(splitLines[i], { + style: zrUtil.defaults({ + stroke: lineColors[i % lineColors.length] + }, lineStyleModel.getLineStyle()), + silent: true, + z: angleAxisModel.get('z') + })); + } + }, + + /** + * @private + */ + _splitArea: function (angleAxisModel, polar, ticksAngles, radiusExtent) { + + var splitAreaModel = angleAxisModel.getModel('splitArea'); + var areaStyleModel = splitAreaModel.getModel('areaStyle'); + var areaColors = areaStyleModel.get('color'); + var lineCount = 0; + + areaColors = areaColors instanceof Array ? areaColors : [areaColors]; + + var splitAreas = []; + + var RADIAN = Math.PI / 180; + var prevAngle = -ticksAngles[0] * RADIAN; + var r0 = Math.min(radiusExtent[0], radiusExtent[1]); + var r1 = Math.max(radiusExtent[0], radiusExtent[1]); + + var clockwise = angleAxisModel.get('clockwise'); + + for (var i = 1; i < ticksAngles.length; i++) { + var colorIndex = (lineCount++) % areaColors.length; + splitAreas[colorIndex] = splitAreas[colorIndex] || []; + splitAreas[colorIndex].push(new graphic.Sector({ + shape: { + cx: polar.cx, + cy: polar.cy, + r0: r0, + r: r1, + startAngle: prevAngle, + endAngle: -ticksAngles[i] * RADIAN, + clockwise: clockwise + }, + silent: true + })); + prevAngle = -ticksAngles[i] * RADIAN; + } + + // Simple optimization + // Batching the lines if color are the same + for (var i = 0; i < splitAreas.length; i++) { + this.group.add(graphic.mergePath(splitAreas[i], { + style: zrUtil.defaults({ + fill: areaColors[i % areaColors.length] + }, areaStyleModel.getAreaStyle()), + silent: true + })); + } + } + }); + + +/***/ }, +/* 340 */ +/***/ function(module, exports, __webpack_require__) { + + + + __webpack_require__(332); + + __webpack_require__(341); + + +/***/ }, +/* 341 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + + var zrUtil = __webpack_require__(4); + var graphic = __webpack_require__(18); + var AxisBuilder = __webpack_require__(135); + + var axisBuilderAttrs = [ + 'axisLine', 'axisLabel', 'axisTick', 'axisName' + ]; + var selfBuilderAttrs = [ + 'splitLine', 'splitArea' + ]; + + __webpack_require__(136).extend({ + + type: 'radiusAxis', + + axisPointerClass: 'PolarAxisPointer', + + render: function (radiusAxisModel, ecModel) { + this.group.removeAll(); + if (!radiusAxisModel.get('show')) { + return; + } + var radiusAxis = radiusAxisModel.axis; + var polar = radiusAxis.polar; + var angleAxis = polar.getAngleAxis(); + var ticksCoords = radiusAxis.getTicksCoords(); + var axisAngle = angleAxis.getExtent()[0]; + var radiusExtent = radiusAxis.getExtent(); + + var layout = layoutAxis(polar, radiusAxisModel, axisAngle); + var axisBuilder = new AxisBuilder(radiusAxisModel, layout); + zrUtil.each(axisBuilderAttrs, axisBuilder.add, axisBuilder); + this.group.add(axisBuilder.getGroup()); + + zrUtil.each(selfBuilderAttrs, function (name) { + if (radiusAxisModel.get(name +'.show') && !radiusAxis.scale.isBlank()) { + this['_' + name](radiusAxisModel, polar, axisAngle, radiusExtent, ticksCoords); + } + }, this); + }, + + /** + * @private + */ + _splitLine: function (radiusAxisModel, polar, axisAngle, radiusExtent, ticksCoords) { + var splitLineModel = radiusAxisModel.getModel('splitLine'); + var lineStyleModel = splitLineModel.getModel('lineStyle'); + var lineColors = lineStyleModel.get('color'); + var lineCount = 0; + + lineColors = lineColors instanceof Array ? lineColors : [lineColors]; + + var splitLines = []; + + for (var i = 0; i < ticksCoords.length; i++) { + var colorIndex = (lineCount++) % lineColors.length; + splitLines[colorIndex] = splitLines[colorIndex] || []; + splitLines[colorIndex].push(new graphic.Circle({ + shape: { + cx: polar.cx, + cy: polar.cy, + r: ticksCoords[i] + }, + silent: true + })); + } + + // Simple optimization + // Batching the lines if color are the same + for (var i = 0; i < splitLines.length; i++) { + this.group.add(graphic.mergePath(splitLines[i], { + style: zrUtil.defaults({ + stroke: lineColors[i % lineColors.length], + fill: null + }, lineStyleModel.getLineStyle()), + silent: true + })); + } + }, + + /** + * @private + */ + _splitArea: function (radiusAxisModel, polar, axisAngle, radiusExtent, ticksCoords) { + + var splitAreaModel = radiusAxisModel.getModel('splitArea'); + var areaStyleModel = splitAreaModel.getModel('areaStyle'); + var areaColors = areaStyleModel.get('color'); + var lineCount = 0; + + areaColors = areaColors instanceof Array ? areaColors : [areaColors]; + + var splitAreas = []; + + var prevRadius = ticksCoords[0]; + for (var i = 1; i < ticksCoords.length; i++) { + var colorIndex = (lineCount++) % areaColors.length; + splitAreas[colorIndex] = splitAreas[colorIndex] || []; + splitAreas[colorIndex].push(new graphic.Sector({ + shape: { + cx: polar.cx, + cy: polar.cy, + r0: prevRadius, + r: ticksCoords[i], + startAngle: 0, + endAngle: Math.PI * 2 + }, + silent: true + })); + prevRadius = ticksCoords[i]; + } + + // Simple optimization + // Batching the lines if color are the same + for (var i = 0; i < splitAreas.length; i++) { + this.group.add(graphic.mergePath(splitAreas[i], { + style: zrUtil.defaults({ + fill: areaColors[i % areaColors.length] + }, areaStyleModel.getAreaStyle()), + silent: true + })); + } + } + }); + + /** + * @inner + */ + function layoutAxis(polar, radiusAxisModel, axisAngle) { + return { + position: [polar.cx, polar.cy], + rotation: axisAngle / 180 * Math.PI, + labelDirection: -1, + tickDirection: -1, + nameDirection: 1, + labelRotate: radiusAxisModel.getModel('axisLabel').get('rotate'), + // Over splitLine and splitArea + z2: 1 + }; + } + + +/***/ }, +/* 342 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + + var formatUtil = __webpack_require__(6); + var BaseAxisPointer = __webpack_require__(305); + var graphic = __webpack_require__(18); + var viewHelper = __webpack_require__(306); + var matrix = __webpack_require__(11); + var AxisBuilder = __webpack_require__(135); + var AxisView = __webpack_require__(136); + + var PolarAxisPointer = BaseAxisPointer.extend({ + + /** + * @override + */ + makeElOption: function (elOption, value, axisModel, axisPointerModel, api) { + var axis = axisModel.axis; + + if (axis.dim === 'angle') { + this.animationThreshold = Math.PI / 18; + } + + var polar = axis.polar; + var otherAxis = polar.getOtherAxis(axis); + var otherExtent = otherAxis.getExtent(); + + var coordValue; + coordValue = axis['dataTo' + formatUtil.capitalFirst(axis.dim)](value); + + var axisPointerType = axisPointerModel.get('type'); + if (axisPointerType && axisPointerType !== 'none') { + var elStyle = viewHelper.buildElStyle(axisPointerModel); + var pointerOption = pointerShapeBuilder[axisPointerType]( + axis, polar, coordValue, otherExtent, elStyle + ); + pointerOption.style = elStyle; + elOption.graphicKey = pointerOption.type; + elOption.pointer = pointerOption; + } + + var labelMargin = axisPointerModel.get('label.margin'); + var labelPos = getLabelPosition(value, axisModel, axisPointerModel, polar, labelMargin); + viewHelper.buildLabelElOption(elOption, axisModel, axisPointerModel, api, labelPos); + } + + // Do not support handle, utill any user requires it. + + }); + + function getLabelPosition(value, axisModel, axisPointerModel, polar, labelMargin) { + var axis = axisModel.axis; + var coord = axis.dataToCoord(value); + var axisAngle = polar.getAngleAxis().getExtent()[0]; + axisAngle = axisAngle / 180 * Math.PI; + var radiusExtent = polar.getRadiusAxis().getExtent(); + var position; + var align; + var verticalAlign; + + if (axis.dim === 'radius') { + var transform = matrix.create(); + matrix.rotate(transform, transform, axisAngle); + matrix.translate(transform, transform, [polar.cx, polar.cy]); + position = graphic.applyTransform([coord, -labelMargin], transform); + + var labelRotation = axisModel.getModel('axisLabel').get('rotate') || 0; + var labelLayout = AxisBuilder.innerTextLayout( + axisAngle, labelRotation * Math.PI / 180, -1 + ); + align = labelLayout.textAlign; + verticalAlign = labelLayout.textVerticalAlign; + } + else { // angle axis + var r = radiusExtent[1]; + position = polar.coordToPoint([r + labelMargin, coord]); + var cx = polar.cx; + var cy = polar.cy; + align = Math.abs(position[0] - cx) / r < 0.3 + ? 'center' : (position[0] > cx ? 'left' : 'right'); + verticalAlign = Math.abs(position[1] - cy) / r < 0.3 + ? 'middle' : (position[1] > cy ? 'top' : 'bottom'); + } + + return { + position: position, + align: align, + verticalAlign: verticalAlign + }; + } + + + var pointerShapeBuilder = { + + line: function (axis, polar, coordValue, otherExtent, elStyle) { + return axis.dim === 'angle' + ? { + type: 'Line', + shape: viewHelper.makeLineShape( + polar.coordToPoint([otherExtent[0], coordValue]), + polar.coordToPoint([otherExtent[1], coordValue]) + ) + } + : { + type: 'Circle', + shape: { + cx: polar.cx, + cy: polar.cy, + r: coordValue + } + }; + }, + + shadow: function (axis, polar, coordValue, otherExtent, elStyle) { + var bandWidth = axis.getBandWidth(); + var radian = Math.PI / 180; + + return axis.dim === 'angle' + ? { + type: 'Sector', + shape: viewHelper.makeSectorShape( + polar.cx, polar.cy, + otherExtent[0], otherExtent[1], + // In ECharts y is negative if angle is positive + (-coordValue - bandWidth / 2) * radian, + (-coordValue + bandWidth / 2) * radian + ) + } + : { + type: 'Sector', + shape: viewHelper.makeSectorShape( + polar.cx, polar.cy, + coordValue - bandWidth / 2, + coordValue + bandWidth / 2, + 0, Math.PI * 2 + ) + }; + } + }; + + AxisView.registerAxisPointerClass('PolarAxisPointer', PolarAxisPointer); + + module.exports = PolarAxisPointer; + + +/***/ }, +/* 343 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + + var zrUtil = __webpack_require__(4); + var parsePercent = __webpack_require__(7).parsePercent; + + function getSeriesStackId(seriesModel) { + return seriesModel.get('stack') + || '__ec_stack_' + seriesModel.seriesIndex; + } + + function getAxisKey(axis) { + return axis.dim; + } + + /** + * @param {string} seriesType + * @param {module:echarts/model/Global} ecModel + * @param {module:echarts/ExtensionAPI} api + */ + function barLayoutPolar(seriesType, ecModel, api) { + + var width = api.getWidth(); + var height = api.getHeight(); + + var lastStackCoords = {}; + var lastStackCoordsOrigin = {}; + + var barWidthAndOffset = calRadialBar( + zrUtil.filter( + ecModel.getSeriesByType(seriesType), + function (seriesModel) { + return !ecModel.isSeriesFiltered(seriesModel) + && seriesModel.coordinateSystem + && seriesModel.coordinateSystem.type === 'polar'; + } + ) + ); + + ecModel.eachSeriesByType(seriesType, function (seriesModel) { + // Check series coordinate, do layout for polar only + if (seriesModel.coordinateSystem.type !== 'polar') { + return; + } + + var data = seriesModel.getData(); + var polar = seriesModel.coordinateSystem; + var angleAxis = polar.getAngleAxis(); + var baseAxis = polar.getBaseAxis(); + + var stackId = getSeriesStackId(seriesModel); + var columnLayoutInfo + = barWidthAndOffset[getAxisKey(baseAxis)][stackId]; + var columnOffset = columnLayoutInfo.offset; + var columnWidth = columnLayoutInfo.width; + var valueAxis = polar.getOtherAxis(baseAxis); + + var center = seriesModel.get('center') || ['50%', '50%']; + var cx = parsePercent(center[0], width); + var cy = parsePercent(center[1], height); + + var barMinHeight = seriesModel.get('barMinHeight') || 0; + var barMinAngle = seriesModel.get('barMinAngle') || 0; + + var valueAxisStart = valueAxis.getExtent()[0]; + var valueMax = valueAxis.model.get('max'); + var valueMin = valueAxis.model.get('min'); + + var coords = polar.dataToPoints(data); + lastStackCoords[stackId] = lastStackCoords[stackId] || []; + lastStackCoordsOrigin[stackId] = lastStackCoordsOrigin[stackId] || []; // Fix #4243 + + data.each(valueAxis.dim, function (value, idx) { + if (isNaN(value)) { + return; + } + + if (!lastStackCoords[stackId][idx]) { + lastStackCoords[stackId][idx] = { + p: valueAxisStart, // Positive stack + n: valueAxisStart // Negative stack + }; + lastStackCoordsOrigin[stackId][idx] = { + p: valueAxisStart, // Positive stack + n: valueAxisStart // Negative stack + }; + } + var sign = value >= 0 ? 'p' : 'n'; + var coord = polar.pointToCoord(coords[idx]); + + var lastCoordOrigin = lastStackCoordsOrigin[stackId][idx][sign]; + var r0; + var r; + var startAngle; + var endAngle; + + if (valueAxis.dim === 'radius') { + // radial sector + r0 = lastCoordOrigin; + r = coord[0]; + startAngle = (-coord[1] + columnOffset) * Math.PI / 180; + endAngle = startAngle + columnWidth * Math.PI / 180; + + if (Math.abs(r) < barMinHeight) { + r = r0 + (r < 0 ? -1 : 1) * barMinHeight; + } + + lastStackCoordsOrigin[stackId][idx][sign] = r; + } + else { + // tangential sector + r0 = coord[0] + columnOffset; + r = r0 + columnWidth; + + // clamp data if min or max is defined for valueAxis + if (valueMax != null) { + value = Math.min(value, valueMax); + } + if (valueMin != null) { + value = Math.max(value, valueMin); + } + + var angle = angleAxis.dataToAngle(value); + if (Math.abs(angle - lastCoordOrigin) < barMinAngle) { + angle = lastCoordOrigin - (value < 0 ? -1 : 1) + * barMinAngle; + } + + startAngle = -lastCoordOrigin * Math.PI / 180; + endAngle = -angle * Math.PI / 180; + + // if the previous stack is at the end of the ring, + // add a round to differentiate it from origin + var extent = angleAxis.getExtent(); + var stackCoord = angle; + if (stackCoord === extent[0] && value > 0) { + stackCoord = extent[1]; + } + else if (stackCoord === extent[1] && value < 0) { + stackCoord = extent[0]; + } + lastStackCoordsOrigin[stackId][idx][sign] = stackCoord; + } + + data.setItemLayout(idx, { + cx: cx, + cy: cy, + r0: r0, + r: r, + startAngle: startAngle, + endAngle: endAngle + }); + + }, true); + + }, this); + + } + + /** + * Calculate bar width and offset for radial bar charts + */ + function calRadialBar(barSeries, api) { + // Columns info on each category axis. Key is polar name + var columnsMap = {}; + + zrUtil.each(barSeries, function (seriesModel, idx) { + var data = seriesModel.getData(); + var polar = seriesModel.coordinateSystem; + + var baseAxis = polar.getBaseAxis(); + + var axisExtent = baseAxis.getExtent(); + var bandWidth = baseAxis.type === 'category' + ? baseAxis.getBandWidth() + : (Math.abs(axisExtent[1] - axisExtent[0]) / data.count()); + + var columnsOnAxis = columnsMap[getAxisKey(baseAxis)] || { + bandWidth: bandWidth, + remainedWidth: bandWidth, + autoWidthCount: 0, + categoryGap: '20%', + gap: '30%', + stacks: {} + }; + var stacks = columnsOnAxis.stacks; + columnsMap[getAxisKey(baseAxis)] = columnsOnAxis; + + var stackId = getSeriesStackId(seriesModel); + + if (!stacks[stackId]) { + columnsOnAxis.autoWidthCount++; + } + stacks[stackId] = stacks[stackId] || { + width: 0, + maxWidth: 0 + }; + + var barWidth = parsePercent( + seriesModel.get('barWidth'), + bandWidth + ); + var barMaxWidth = parsePercent( + seriesModel.get('barMaxWidth'), + bandWidth + ); + var barGap = seriesModel.get('barGap'); + var barCategoryGap = seriesModel.get('barCategoryGap'); + + if (barWidth && !stacks[stackId].width) { + barWidth = Math.min(columnsOnAxis.remainedWidth, barWidth); + stacks[stackId].width = barWidth; + columnsOnAxis.remainedWidth -= barWidth; + } + + barMaxWidth && (stacks[stackId].maxWidth = barMaxWidth); + (barGap != null) && (columnsOnAxis.gap = barGap); + (barCategoryGap != null) && (columnsOnAxis.categoryGap = barCategoryGap); + }); + + + var result = {}; + + zrUtil.each(columnsMap, function (columnsOnAxis, coordSysName) { + + result[coordSysName] = {}; + + var stacks = columnsOnAxis.stacks; + var bandWidth = columnsOnAxis.bandWidth; + var categoryGap = parsePercent(columnsOnAxis.categoryGap, bandWidth); + var barGapPercent = parsePercent(columnsOnAxis.gap, 1); + + var remainedWidth = columnsOnAxis.remainedWidth; + var autoWidthCount = columnsOnAxis.autoWidthCount; + var autoWidth = (remainedWidth - categoryGap) + / (autoWidthCount + (autoWidthCount - 1) * barGapPercent); + autoWidth = Math.max(autoWidth, 0); + + // Find if any auto calculated bar exceeded maxBarWidth + zrUtil.each(stacks, function (column, stack) { + var maxWidth = column.maxWidth; + if (maxWidth && maxWidth < autoWidth) { + maxWidth = Math.min(maxWidth, remainedWidth); + if (column.width) { + maxWidth = Math.min(maxWidth, column.width); + } + remainedWidth -= maxWidth; + column.width = maxWidth; + autoWidthCount--; + } + }); + + // Recalculate width again + autoWidth = (remainedWidth - categoryGap) + / (autoWidthCount + (autoWidthCount - 1) * barGapPercent); + autoWidth = Math.max(autoWidth, 0); + + var widthSum = 0; + var lastColumn; + zrUtil.each(stacks, function (column, idx) { + if (!column.width) { + column.width = autoWidth; + } + lastColumn = column; + widthSum += column.width * (1 + barGapPercent); + }); + if (lastColumn) { + widthSum -= lastColumn.width * barGapPercent; + } + + var offset = -widthSum / 2; + zrUtil.each(stacks, function (column, stackId) { + result[coordSysName][stackId] = result[coordSysName][stackId] || { + offset: offset, + width: column.width + }; + + offset += column.width * (1 + barGapPercent); + }); + }); + + return result; + } + + module.exports = barLayoutPolar; + + + +/***/ }, +/* 344 */ +/***/ function(module, exports, __webpack_require__) { + + + + __webpack_require__(345); + + __webpack_require__(171); + + __webpack_require__(346); + + __webpack_require__(187); + + var echarts = __webpack_require__(1); + var zrUtil = __webpack_require__(4); + + function makeAction(method, actionInfo) { + actionInfo.update = 'updateView'; + echarts.registerAction(actionInfo, function (payload, ecModel) { + var selected = {}; + + ecModel.eachComponent( + { mainType: 'geo', query: payload}, + function (geoModel) { + geoModel[method](payload.name); + var geo = geoModel.coordinateSystem; + zrUtil.each(geo.regions, function (region) { + selected[region.name] = geoModel.isSelected(region.name) || false; + }); + } + ); + + return { + selected: selected, + name: payload.name + }; + }); + } + + makeAction('toggleSelected', { + type: 'geoToggleSelect', + event: 'geoselectchanged' + }); + makeAction('select', { + type: 'geoSelect', + event: 'geoselected' + }); + makeAction('unSelect', { + type: 'geoUnSelect', + event: 'geounselected' + }); + + +/***/ }, +/* 345 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + var modelUtil = __webpack_require__(5); + var ComponentModel = __webpack_require__(69); + var Model = __webpack_require__(12); + var zrUtil = __webpack_require__(4); + + var selectableMixin = __webpack_require__(148); + + var geoCreator = __webpack_require__(171); + + var GeoModel = ComponentModel.extend({ + + type: 'geo', + + /** + * @type {module:echarts/coord/geo/Geo} + */ + coordinateSystem: null, + + layoutMode: 'box', + + init: function (option) { + ComponentModel.prototype.init.apply(this, arguments); + + // Default label emphasis `position` and `show` + modelUtil.defaultEmphasis( + option.label, ['position', 'show', 'textStyle', 'distance', 'formatter'] + ); + }, + + optionUpdated: function () { + var option = this.option; + var self = this; + + option.regions = geoCreator.getFilledRegions(option.regions, option.map); + + this._optionModelMap = zrUtil.reduce(option.regions || [], function (optionModelMap, regionOpt) { + if (regionOpt.name) { + optionModelMap.set(regionOpt.name, new Model(regionOpt, self)); + } + return optionModelMap; + }, zrUtil.createHashMap()); + + this.updateSelectedMap(option.regions); + }, + + defaultOption: { + + zlevel: 0, + + z: 0, + + show: true, + + left: 'center', + + top: 'center', + + + // width:, + // height:, + // right + // bottom + + // Aspect is width / height. Inited to be geoJson bbox aspect + // This parameter is used for scale this aspect + aspectScale: 0.75, + + ///// Layout with center and size + // If you wan't to put map in a fixed size box with right aspect ratio + // This two properties may more conveninet + // layoutCenter: [50%, 50%] + // layoutSize: 100 + + + silent: false, + + // Map type + map: '', + + // Define left-top, right-bottom coords to control view + // For example, [ [180, 90], [-180, -90] ] + boundingCoords: null, + + // Default on center of map + center: null, + + zoom: 1, + + scaleLimit: null, + + // selectedMode: false + + label: { + normal: { + show: false, + textStyle: { + color: '#000' + } + }, + emphasis: { + show: true, + textStyle: { + color: 'rgb(100,0,0)' + } + } + }, + + itemStyle: { + normal: { + // color: 各异, + borderWidth: 0.5, + borderColor: '#444', + color: '#eee' + }, + emphasis: { // 也是选中样式 + color: 'rgba(255,215,0,0.8)' + } + }, + + regions: [] + }, + + /** + * Get model of region + * @param {string} name + * @return {module:echarts/model/Model} + */ + getRegionModel: function (name) { + return this._optionModelMap.get(name) || new Model(null, this, this.ecModel); + }, + + /** + * Format label + * @param {string} name Region name + * @param {string} [status='normal'] 'normal' or 'emphasis' + * @return {string} + */ + getFormattedLabel: function (name, status) { + var regionModel = this.getRegionModel(name); + var formatter = regionModel.get('label.' + status + '.formatter'); + var params = { + name: name + }; + if (typeof formatter === 'function') { + params.status = status; + return formatter(params); + } + else if (typeof formatter === 'string') { + var serName = params.seriesName; + return formatter.replace('{a}', serName != null ? serName : ''); + } + }, + + setZoom: function (zoom) { + this.option.zoom = zoom; + }, + + setCenter: function (center) { + this.option.center = center; + } + }); + + zrUtil.mixin(GeoModel, selectableMixin); + + module.exports = GeoModel; + + +/***/ }, +/* 346 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + + var MapDraw = __webpack_require__(182); + + module.exports = __webpack_require__(1).extendComponentView({ + + type: 'geo', + + init: function (ecModel, api) { + var mapDraw = new MapDraw(api, true); + this._mapDraw = mapDraw; + + this.group.add(mapDraw.group); + }, + + render: function (geoModel, ecModel, api, payload) { + // Not render if it is an toggleSelect action from self + if (payload && payload.type === 'geoToggleSelect' + && payload.from === this.uid + ) { + return; + } + + var mapDraw = this._mapDraw; + if (geoModel.get('show')) { + mapDraw.draw(geoModel, ecModel, api, this, payload); + } + else { + this._mapDraw.group.removeAll(); + } + + this.group.silent = geoModel.get('silent'); + }, + + dispose: function () { + this._mapDraw && this._mapDraw.remove(); + } + + }); + + +/***/ }, +/* 347 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * Brush component entry + */ + + + __webpack_require__(1).registerPreprocessor( + __webpack_require__(348) + ); + + __webpack_require__(349); + __webpack_require__(353); + __webpack_require__(354); + __webpack_require__(355); + + __webpack_require__(356); + + + +/***/ }, +/* 348 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * @file brush preprocessor + */ + + + var zrUtil = __webpack_require__(4); + + var DEFAULT_TOOLBOX_BTNS = ['rect', 'polygon', 'keep', 'clear']; + + module.exports = function (option, isNew) { + var brushComponents = option && option.brush; + if (!zrUtil.isArray(brushComponents)) { + brushComponents = brushComponents ? [brushComponents] : []; + } + + if (!brushComponents.length) { + return; + } + + var brushComponentSpecifiedBtns = []; + + zrUtil.each(brushComponents, function (brushOpt) { + var tbs = brushOpt.hasOwnProperty('toolbox') + ? brushOpt.toolbox : []; + + if (tbs instanceof Array) { + brushComponentSpecifiedBtns = brushComponentSpecifiedBtns.concat(tbs); + } + }); + + var toolbox = option && option.toolbox; + + if (zrUtil.isArray(toolbox)) { + toolbox = toolbox[0]; + } + if (!toolbox) { + toolbox = {feature: {}}; + option.toolbox = [toolbox]; + } + + var toolboxFeature = (toolbox.feature || (toolbox.feature = {})); + var toolboxBrush = toolboxFeature.brush || (toolboxFeature.brush = {}); + var brushTypes = toolboxBrush.type || (toolboxBrush.type = []); + + brushTypes.push.apply(brushTypes, brushComponentSpecifiedBtns); + + removeDuplicate(brushTypes); + + if (isNew && !brushTypes.length) { + brushTypes.push.apply(brushTypes, DEFAULT_TOOLBOX_BTNS); + } + }; + + function removeDuplicate(arr) { + var map = {}; + zrUtil.each(arr, function (val) { + map[val] = 1; + }); + arr.length = 0; + zrUtil.each(map, function (flag, val) { + arr.push(val); + }); + } + + + +/***/ }, +/* 349 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * @file Brush visual coding. + */ + + + var echarts = __webpack_require__(1); + var visualSolution = __webpack_require__(350); + var zrUtil = __webpack_require__(4); + var BoundingRect = __webpack_require__(9); + var selector = __webpack_require__(351); + var throttle = __webpack_require__(81); + var BrushTargetManager = __webpack_require__(352); + + var STATE_LIST = ['inBrush', 'outOfBrush']; + var DISPATCH_METHOD = '__ecBrushSelect'; + var DISPATCH_FLAG = '__ecInBrushSelectEvent'; + var PRIORITY_BRUSH = echarts.PRIORITY.VISUAL.BRUSH; + + /** + * Layout for visual, the priority higher than other layout, and before brush visual. + */ + echarts.registerLayout(PRIORITY_BRUSH, function (ecModel, api, payload) { + ecModel.eachComponent({mainType: 'brush'}, function (brushModel) { + + payload && payload.type === 'takeGlobalCursor' && brushModel.setBrushOption( + payload.key === 'brush' ? payload.brushOption : {brushType: false} + ); + + var brushTargetManager = brushModel.brushTargetManager = new BrushTargetManager(brushModel.option, ecModel); + + brushTargetManager.setInputRanges(brushModel.areas, ecModel); + }); + }); + + /** + * Register the visual encoding if this modules required. + */ + echarts.registerVisual(PRIORITY_BRUSH, function (ecModel, api, payload) { + + var brushSelected = []; + var throttleType; + var throttleDelay; + + ecModel.eachComponent({mainType: 'brush'}, function (brushModel, brushIndex) { + + var thisBrushSelected = { + brushId: brushModel.id, + brushIndex: brushIndex, + brushName: brushModel.name, + areas: zrUtil.clone(brushModel.areas), + selected: [] + }; + // Every brush component exists in event params, convenient + // for user to find by index. + brushSelected.push(thisBrushSelected); + + var brushOption = brushModel.option; + var brushLink = brushOption.brushLink; + var linkedSeriesMap = []; + var selectedDataIndexForLink = []; + var rangeInfoBySeries = []; + var hasBrushExists = 0; + + if (!brushIndex) { // Only the first throttle setting works. + throttleType = brushOption.throttleType; + throttleDelay = brushOption.throttleDelay; + } + + // Add boundingRect and selectors to range. + var areas = zrUtil.map(brushModel.areas, function (area) { + return bindSelector( + zrUtil.defaults( + {boundingRect: boundingRectBuilders[area.brushType](area)}, + area + ) + ); + }); + + var visualMappings = visualSolution.createVisualMappings( + brushModel.option, STATE_LIST, function (mappingOption) { + mappingOption.mappingMethod = 'fixed'; + } + ); + + zrUtil.isArray(brushLink) && zrUtil.each(brushLink, function (seriesIndex) { + linkedSeriesMap[seriesIndex] = 1; + }); + + function linkOthers(seriesIndex) { + return brushLink === 'all' || linkedSeriesMap[seriesIndex]; + } + + // If no supported brush or no brush on the series, + // all visuals should be in original state. + function brushed(rangeInfoList) { + return !!rangeInfoList.length; + } + + /** + * Logic for each series: (If the logic has to be modified one day, do it carefully!) + * + * ( brushed ┬ && ┬hasBrushExist ┬ && linkOthers ) => StepA: ┬record, ┬ StepB: ┬visualByRecord. + * !brushed┘ ├hasBrushExist ┤ └nothing,┘ ├visualByRecord. + * └!hasBrushExist┘ └nothing. + * ( !brushed && ┬hasBrushExist ┬ && linkOthers ) => StepA: nothing, StepB: ┬visualByRecord. + * └!hasBrushExist┘ └nothing. + * ( brushed ┬ && !linkOthers ) => StepA: nothing, StepB: ┬visualByCheck. + * !brushed┘ └nothing. + * ( !brushed && !linkOthers ) => StepA: nothing, StepB: nothing. + */ + + // Step A + ecModel.eachSeries(function (seriesModel, seriesIndex) { + var rangeInfoList = rangeInfoBySeries[seriesIndex] = []; + + seriesModel.subType === 'parallel' + ? stepAParallel(seriesModel, seriesIndex, rangeInfoList) + : stepAOthers(seriesModel, seriesIndex, rangeInfoList); + }); + + function stepAParallel(seriesModel, seriesIndex) { + var coordSys = seriesModel.coordinateSystem; + hasBrushExists |= coordSys.hasAxisBrushed(); + + linkOthers(seriesIndex) && coordSys.eachActiveState( + seriesModel.getData(), + function (activeState, dataIndex) { + activeState === 'active' && (selectedDataIndexForLink[dataIndex] = 1); + } + ); + } + + function stepAOthers(seriesModel, seriesIndex, rangeInfoList) { + var selectorsByBrushType = getSelectorsByBrushType(seriesModel); + if (!selectorsByBrushType || brushModelNotControll(brushModel, seriesIndex)) { + return; + } + + zrUtil.each(areas, function (area) { + selectorsByBrushType[area.brushType] + && brushModel.brushTargetManager.controlSeries(area, seriesModel, ecModel) + && rangeInfoList.push(area); + hasBrushExists |= brushed(rangeInfoList); + }); + + if (linkOthers(seriesIndex) && brushed(rangeInfoList)) { + var data = seriesModel.getData(); + data.each(function (dataIndex) { + if (checkInRange(selectorsByBrushType, rangeInfoList, data, dataIndex)) { + selectedDataIndexForLink[dataIndex] = 1; + } + }); + } + } + + // Step B + ecModel.eachSeries(function (seriesModel, seriesIndex) { + var seriesBrushSelected = { + seriesId: seriesModel.id, + seriesIndex: seriesIndex, + seriesName: seriesModel.name, + dataIndex: [] + }; + // Every series exists in event params, convenient + // for user to find series by seriesIndex. + thisBrushSelected.selected.push(seriesBrushSelected); + + var selectorsByBrushType = getSelectorsByBrushType(seriesModel); + var rangeInfoList = rangeInfoBySeries[seriesIndex]; + + var data = seriesModel.getData(); + var getValueState = linkOthers(seriesIndex) + ? function (dataIndex) { + return selectedDataIndexForLink[dataIndex] + ? (seriesBrushSelected.dataIndex.push(data.getRawIndex(dataIndex)), 'inBrush') + : 'outOfBrush'; + } + : function (dataIndex) { + return checkInRange(selectorsByBrushType, rangeInfoList, data, dataIndex) + ? (seriesBrushSelected.dataIndex.push(data.getRawIndex(dataIndex)), 'inBrush') + : 'outOfBrush'; + }; + + // If no supported brush or no brush, all visuals are in original state. + (linkOthers(seriesIndex) ? hasBrushExists : brushed(rangeInfoList)) + && visualSolution.applyVisual( + STATE_LIST, visualMappings, data, getValueState + ); + }); + + }); + + dispatchAction(api, throttleType, throttleDelay, brushSelected, payload); + }); + + function dispatchAction(api, throttleType, throttleDelay, brushSelected, payload) { + // This event will not be triggered when `setOpion`, otherwise dead lock may + // triggered when do `setOption` in event listener, which we do not find + // satisfactory way to solve yet. Some considered resolutions: + // (a) Diff with prevoius selected data ant only trigger event when changed. + // But store previous data and diff precisely (i.e., not only by dataIndex, but + // also detect value changes in selected data) might bring complexity or fragility. + // (b) Use spectial param like `silent` to suppress event triggering. + // But such kind of volatile param may be weird in `setOption`. + if (!payload) { + return; + } + + var zr = api.getZr(); + if (zr[DISPATCH_FLAG]) { + return; + } + + if (!zr[DISPATCH_METHOD]) { + zr[DISPATCH_METHOD] = doDispatch; + } + + var fn = throttle.createOrUpdate(zr, DISPATCH_METHOD, throttleDelay, throttleType); + + fn(api, brushSelected); + } + + function doDispatch(api, brushSelected) { + if (!api.isDisposed()) { + var zr = api.getZr(); + zr[DISPATCH_FLAG] = true; + api.dispatchAction({ + type: 'brushSelect', + batch: brushSelected + }); + zr[DISPATCH_FLAG] = false; + } + } + + function checkInRange(selectorsByBrushType, rangeInfoList, data, dataIndex) { + for (var i = 0, len = rangeInfoList.length; i < len; i++) { + var area = rangeInfoList[i]; + if (selectorsByBrushType[area.brushType]( + dataIndex, data, area.selectors, area + )) { + return true; + } + } + } + + function getSelectorsByBrushType(seriesModel) { + var brushSelector = seriesModel.brushSelector; + if (zrUtil.isString(brushSelector)) { + var sels = []; + zrUtil.each(selector, function (selectorsByElementType, brushType) { + sels[brushType] = function (dataIndex, data, selectors, area) { + var itemLayout = data.getItemLayout(dataIndex); + return selectorsByElementType[brushSelector](itemLayout, selectors, area); + }; + }); + return sels; + } + else if (zrUtil.isFunction(brushSelector)) { + var bSelector = {}; + zrUtil.each(selector, function (sel, brushType) { + bSelector[brushType] = brushSelector; + }); + return bSelector; + } + return brushSelector; + } + + function brushModelNotControll(brushModel, seriesIndex) { + var seriesIndices = brushModel.option.seriesIndex; + return seriesIndices != null + && seriesIndices !== 'all' + && ( + zrUtil.isArray(seriesIndices) + ? zrUtil.indexOf(seriesIndices, seriesIndex) < 0 + : seriesIndex !== seriesIndices + ); + } + + function bindSelector(area) { + var selectors = area.selectors = {}; + zrUtil.each(selector[area.brushType], function (selFn, elType) { + // Do not use function binding or curry for performance. + selectors[elType] = function (itemLayout) { + return selFn(itemLayout, selectors, area); + }; + }); + return area; + } + + var boundingRectBuilders = { + + lineX: zrUtil.noop, + + lineY: zrUtil.noop, + + rect: function (area) { + return getBoundingRectFromMinMax(area.range); + }, + + polygon: function (area) { + var minMax; + var range = area.range; + + for (var i = 0, len = range.length; i < len; i++) { + minMax = minMax || [[Infinity, -Infinity], [Infinity, -Infinity]]; + var rg = range[i]; + rg[0] < minMax[0][0] && (minMax[0][0] = rg[0]); + rg[0] > minMax[0][1] && (minMax[0][1] = rg[0]); + rg[1] < minMax[1][0] && (minMax[1][0] = rg[1]); + rg[1] > minMax[1][1] && (minMax[1][1] = rg[1]); + } + + return minMax && getBoundingRectFromMinMax(minMax); + } + }; + + function getBoundingRectFromMinMax(minMax) { + return new BoundingRect( + minMax[0][0], + minMax[1][0], + minMax[0][1] - minMax[0][0], + minMax[1][1] - minMax[1][0] + ); + } + + + +/***/ }, +/* 350 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * @file Visual solution, for consistent option specification. + */ + + + var zrUtil = __webpack_require__(4); + var VisualMapping = __webpack_require__(203); + var each = zrUtil.each; + + function hasKeys(obj) { + if (obj) { + for (var name in obj){ + if (obj.hasOwnProperty(name)) { + return true; + } + } + } + } + + var visualSolution = { + + /** + * @param {Object} option + * @param {Array.} stateList + * @param {Function} [supplementVisualOption] + * @return {Object} visualMappings > + */ + createVisualMappings: function (option, stateList, supplementVisualOption) { + var visualMappings = {}; + + each(stateList, function (state) { + var mappings = visualMappings[state] = createMappings(); + + each(option[state], function (visualData, visualType) { + if (!VisualMapping.isValidType(visualType)) { + return; + } + var mappingOption = { + type: visualType, + visual: visualData + }; + supplementVisualOption && supplementVisualOption(mappingOption, state); + mappings[visualType] = new VisualMapping(mappingOption); + + // Prepare a alpha for opacity, for some case that opacity + // is not supported, such as rendering using gradient color. + if (visualType === 'opacity') { + mappingOption = zrUtil.clone(mappingOption); + mappingOption.type = 'colorAlpha'; + mappings.__hidden.__alphaForOpacity = new VisualMapping(mappingOption); + } + }); + }); + + return visualMappings; + + function createMappings() { + var Creater = function () {}; + // Make sure hidden fields will not be visited by + // object iteration (with hasOwnProperty checking). + Creater.prototype.__hidden = Creater.prototype; + var obj = new Creater(); + return obj; + } + }, + + /** + * @param {Object} thisOption + * @param {Object} newOption + * @param {Array.} keys + */ + replaceVisualOption: function (thisOption, newOption, keys) { + // Visual attributes merge is not supported, otherwise it + // brings overcomplicated merge logic. See #2853. So if + // newOption has anyone of these keys, all of these keys + // will be reset. Otherwise, all keys remain. + var has; + zrUtil.each(keys, function (key) { + if (newOption.hasOwnProperty(key) && hasKeys(newOption[key])) { + has = true; + } + }); + has && zrUtil.each(keys, function (key) { + if (newOption.hasOwnProperty(key) && hasKeys(newOption[key])) { + thisOption[key] = zrUtil.clone(newOption[key]); + } + else { + delete thisOption[key]; + } + }); + }, + + /** + * @param {Array.} stateList + * @param {Object} visualMappings > + * @param {module:echarts/data/List} list + * @param {Function} getValueState param: valueOrIndex, return: state. + * @param {object} [scope] Scope for getValueState + * @param {string} [dimension] Concrete dimension, if used. + */ + applyVisual: function (stateList, visualMappings, data, getValueState, scope, dimension) { + var visualTypesMap = {}; + zrUtil.each(stateList, function (state) { + var visualTypes = VisualMapping.prepareVisualTypes(visualMappings[state]); + visualTypesMap[state] = visualTypes; + }); + + var dataIndex; + + function getVisual(key) { + return data.getItemVisual(dataIndex, key); + } + + function setVisual(key, value) { + data.setItemVisual(dataIndex, key, value); + } + + if (dimension == null) { + data.each(eachItem, true); + } + else { + data.each([dimension], eachItem, true); + } + + function eachItem(valueOrIndex, index) { + dataIndex = dimension == null ? valueOrIndex : index; + + var rawDataItem = data.getRawDataItem(dataIndex); + // Consider performance + if (rawDataItem && rawDataItem.visualMap === false) { + return; + } + + var valueState = getValueState.call(scope, valueOrIndex); + var mappings = visualMappings[valueState]; + var visualTypes = visualTypesMap[valueState]; + + for (var i = 0, len = visualTypes.length; i < len; i++) { + var type = visualTypes[i]; + mappings[type] && mappings[type].applyVisual( + valueOrIndex, getVisual, setVisual + ); + } + } + } + }; + + module.exports = visualSolution; + + + +/***/ }, +/* 351 */ +/***/ function(module, exports, __webpack_require__) { + + + + var polygonContain = __webpack_require__(175).contain; + var BoundingRect = __webpack_require__(9); + + // Key of the first level is brushType: `line`, `rect`, `polygon`. + // Key of the second level is chart element type: `point`, `rect`. + // See moudule:echarts/component/helper/BrushController + // function param: + // {Object} itemLayout fetch from data.getItemLayout(dataIndex) + // {Object} selectors {point: selector, rect: selector, ...} + // {Object} area {range: [[], [], ..], boudingRect} + // function return: + // {boolean} Whether in the given brush. + var selector = { + lineX: getLineSelectors(0), + lineY: getLineSelectors(1), + rect: { + point: function (itemLayout, selectors, area) { + return area.boundingRect.contain(itemLayout[0], itemLayout[1]); + }, + rect: function (itemLayout, selectors, area) { + return area.boundingRect.intersect(itemLayout); + } + }, + polygon: { + point: function (itemLayout, selectors, area) { + return area.boundingRect.contain(itemLayout[0], itemLayout[1]) + && polygonContain(area.range, itemLayout[0], itemLayout[1]); + }, + rect: function (itemLayout, selectors, area) { + var points = area.range; + + if (points.length <= 1) { + return false; + } + + var x = itemLayout.x; + var y = itemLayout.y; + var width = itemLayout.width; + var height = itemLayout.height; + var p = points[0]; + + if (polygonContain(points, x, y) + || polygonContain(points, x + width, y) + || polygonContain(points, x, y + height) + || polygonContain(points, x + width, y + height) + || BoundingRect.create(itemLayout).contain(p[0], p[1]) + || lineIntersectPolygon(x, y, x + width, y, points) + || lineIntersectPolygon(x, y, x, y + height, points) + || lineIntersectPolygon(x + width, y, x + width, y + height, points) + || lineIntersectPolygon(x, y + height, x + width, y + height, points) + ) { + return true; + } + } + } + }; + + function getLineSelectors(xyIndex) { + var xy = ['x', 'y']; + var wh = ['width', 'height']; + + return { + point: function (itemLayout, selectors, area) { + var range = area.range; + var p = itemLayout[xyIndex]; + return inLineRange(p, range); + }, + rect: function (itemLayout, selectors, area) { + var range = area.range; + var layoutRange = [ + itemLayout[xy[xyIndex]], + itemLayout[xy[xyIndex]] + itemLayout[wh[xyIndex]] + ]; + layoutRange[1] < layoutRange[0] && layoutRange.reverse(); + return inLineRange(layoutRange[0], range) + || inLineRange(layoutRange[1], range) + || inLineRange(range[0], layoutRange) + || inLineRange(range[1], layoutRange); + } + }; + } + + function inLineRange(p, range) { + return range[0] <= p && p <= range[1]; + } + + function lineIntersectPolygon(lx, ly, l2x, l2y, points) { + for (var i = 0, p2 = points[points.length - 1]; i < points.length; i++) { + var p = points[i]; + if (lineIntersect(lx, ly, l2x, l2y, p[0], p[1], p2[0], p2[1])) { + return true; + } + p2 = p; + } + } + + // Code from with some fix. + // See + function lineIntersect(a1x, a1y, a2x, a2y, b1x, b1y, b2x, b2y) { + var delta = determinant(a2x - a1x, b1x - b2x, a2y - a1y, b1y - b2y); + if (nearZero(delta)) { // parallel + return false; + } + var namenda = determinant(b1x - a1x, b1x - b2x, b1y - a1y, b1y - b2y) / delta; + if (namenda < 0 || namenda > 1) { + return false; + } + var miu = determinant(a2x - a1x, b1x - a1x, a2y - a1y, b1y - a1y) / delta; + if (miu < 0 || miu > 1) { + return false; + } + return true; + } + + function nearZero(val) { + return val <= (1e-6) && val >= -(1e-6); + } + + function determinant(v1, v2, v3, v4) { + return v1 * v4 - v2 * v3; + } + + module.exports = selector; + + + +/***/ }, +/* 352 */ +/***/ function(module, exports, __webpack_require__) { + + + + var zrUtil = __webpack_require__(4); + var graphic = __webpack_require__(18); + var modelUtil = __webpack_require__(5); + var brushHelper = __webpack_require__(246); + + var each = zrUtil.each; + var indexOf = zrUtil.indexOf; + var curry = zrUtil.curry; + + var COORD_CONVERTS = ['dataToPoint', 'pointToData']; + + // FIXME + // how to genarialize to more coordinate systems. + var INCLUDE_FINDER_MAIN_TYPES = [ + 'grid', 'xAxis', 'yAxis', 'geo', 'graph', + 'polar', 'radiusAxis', 'angleAxis', 'bmap' + ]; + + /** + * [option in constructor]: + * { + * Index/Id/Name of geo, xAxis, yAxis, grid: See util/model#parseFinder. + * } + * + * + * [targetInfo]: + * + * There can be multiple axes in a single targetInfo. Consider the case + * of `grid` component, a targetInfo represents a grid which contains one or more + * cartesian and one or more axes. And consider the case of parallel system, + * which has multiple axes in a coordinate system. + * Can be { + * panelId: ..., + * coordSys: , + * coordSyses: all cartesians. + * gridModel: + * xAxes: correspond to coordSyses on index + * yAxes: correspond to coordSyses on index + * } + * or { + * panelId: ..., + * coordSys: + * coordSyses: [] + * geoModel: + * } + * + * + * [panelOpt]: + * + * Make from targetInfo. Input to BrushController. + * { + * panelId: ..., + * rect: ... + * } + * + * + * [area]: + * + * Generated by BrushController or user input. + * { + * panelId: Used to locate coordInfo directly. If user inpput, no panelId. + * brushType: determine how to convert to/from coord('rect' or 'polygon' or 'lineX/Y'). + * Index/Id/Name of geo, xAxis, yAxis, grid: See util/model#parseFinder. + * range: pixel range. + * coordRange: representitive coord range (the first one of coordRanges). + * coordRanges: coord ranges, used in multiple cartesian in one grid. + * } + */ + + /** + * @param {Object} option contains Index/Id/Name of xAxis/yAxis/geo/grid + * Each can be {number|Array.}. like: {xAxisIndex: [3, 4]} + * @param {module:echarts/model/Global} ecModel + * @param {Object} [opt] + * @param {Array.} [opt.include] include coordinate system types. + */ + function BrushTargetManager(option, ecModel, opt) { + /** + * @private + * @type {Array.} + */ + var targetInfoList = this._targetInfoList = []; + var info = {}; + var foundCpts = parseFinder(ecModel, option); + + each(targetInfoBuilders, function (builder, type) { + if (!opt || !opt.include || indexOf(opt.include, type) >= 0) { + builder(foundCpts, targetInfoList, info); + } + }); + } + + var proto = BrushTargetManager.prototype; + + proto.setOutputRanges = function (areas, ecModel) { + this.matchOutputRanges(areas, ecModel, function (area, coordRange, coordSys) { + (area.coordRanges || (area.coordRanges = [])).push(coordRange); + // area.coordRange is the first of area.coordRanges + if (!area.coordRange) { + area.coordRange = coordRange; + // In 'category' axis, coord to pixel is not reversible, so we can not + // rebuild range by coordRange accrately, which may bring trouble when + // brushing only one item. So we use __rangeOffset to rebuilding range + // by coordRange. And this it only used in brush component so it is no + // need to be adapted to coordRanges. + var result = coordConvert[area.brushType](0, coordSys, coordRange); + area.__rangeOffset = { + offset: diffProcessor[area.brushType](result.values, area.range, [1, 1]), + xyMinMax: result.xyMinMax + }; + } + }); + }; + + proto.matchOutputRanges = function (areas, ecModel, cb) { + each(areas, function (area) { + var targetInfo = this.findTargetInfo(area, ecModel); + + if (targetInfo && targetInfo !== true) { + zrUtil.each( + targetInfo.coordSyses, + function (coordSys) { + var result = coordConvert[area.brushType](1, coordSys, area.range); + cb(area, result.values, coordSys, ecModel); + } + ); + } + }, this); + }; + + proto.setInputRanges = function (areas, ecModel) { + each(areas, function (area) { + var targetInfo = this.findTargetInfo(area, ecModel); + + if (true) { + zrUtil.assert( + !targetInfo || targetInfo === true || area.coordRange, + 'coordRange must be specified when coord index specified.' + ); + zrUtil.assert( + !targetInfo || targetInfo !== true || area.range, + 'range must be specified in global brush.' + ); + } + + area.range = area.range || []; + + // convert coordRange to global range and set panelId. + if (targetInfo && targetInfo !== true) { + area.panelId = targetInfo.panelId; + // (1) area.range shoule always be calculate from coordRange but does + // not keep its original value, for the sake of the dataZoom scenario, + // where area.coordRange remains unchanged but area.range may be changed. + // (2) Only support converting one coordRange to pixel range in brush + // component. So do not consider `coordRanges`. + // (3) About __rangeOffset, see comment above. + var result = coordConvert[area.brushType](0, targetInfo.coordSys, area.coordRange); + var rangeOffset = area.__rangeOffset; + area.range = rangeOffset + ? diffProcessor[area.brushType]( + result.values, + rangeOffset.offset, + getScales(result.xyMinMax, rangeOffset.xyMinMax) + ) + : result.values; + } + }, this); + }; + + proto.makePanelOpts = function (api, getDefaultBrushType) { + return zrUtil.map(this._targetInfoList, function (targetInfo) { + var rect = targetInfo.getPanelRect(); + return { + panelId: targetInfo.panelId, + defaultBrushType: getDefaultBrushType && getDefaultBrushType(targetInfo), + clipPath: brushHelper.makeRectPanelClipPath(rect), + isTargetByCursor: brushHelper.makeRectIsTargetByCursor( + rect, api, targetInfo.coordSysModel + ), + getLinearBrushOtherExtent: brushHelper.makeLinearBrushOtherExtent(rect) + }; + }); + }; + + proto.controlSeries = function (area, seriesModel, ecModel) { + // Check whether area is bound in coord, and series do not belong to that coord. + // If do not do this check, some brush (like lineX) will controll all axes. + var targetInfo = this.findTargetInfo(area, ecModel); + return targetInfo === true || ( + targetInfo && indexOf(targetInfo.coordSyses, seriesModel.coordinateSystem) >= 0 + ); + }; + + /** + * If return Object, a coord found. + * If reutrn true, global found. + * Otherwise nothing found. + * + * @param {Object} area + * @param {Array} targetInfoList + * @return {Obejct|boolean} + */ + proto.findTargetInfo = function (area, ecModel) { + var targetInfoList = this._targetInfoList; + var foundCpts = parseFinder(ecModel, area); + + for (var i = 0; i < targetInfoList.length; i++) { + var targetInfo = targetInfoList[i]; + var areaPanelId = area.panelId; + if (areaPanelId) { + if (targetInfo.panelId === areaPanelId) { + return targetInfo; + } + } + else { + for (var i = 0; i < targetInfoMatchers.length; i++) { + if (targetInfoMatchers[i](foundCpts, targetInfo)) { + return targetInfo; + } + } + } + } + + return true; + }; + + function formatMinMax(minMax) { + minMax[0] > minMax[1] && minMax.reverse(); + return minMax; + } + + function parseFinder(ecModel, option) { + return modelUtil.parseFinder( + ecModel, option, {includeMainTypes: INCLUDE_FINDER_MAIN_TYPES} + ); + } + + var targetInfoBuilders = { + + grid: function (foundCpts, targetInfoList) { + var xAxisModels = foundCpts.xAxisModels; + var yAxisModels = foundCpts.yAxisModels; + var gridModels = foundCpts.gridModels; + // Remove duplicated. + var gridModelMap = zrUtil.createHashMap(); + var xAxesHas = {}; + var yAxesHas = {}; + + if (!xAxisModels && !yAxisModels && !gridModels) { + return; + } + + each(xAxisModels, function (axisModel) { + var gridModel = axisModel.axis.grid.model; + gridModelMap.set(gridModel.id, gridModel); + xAxesHas[gridModel.id] = true; + }); + each(yAxisModels, function (axisModel) { + var gridModel = axisModel.axis.grid.model; + gridModelMap.set(gridModel.id, gridModel); + yAxesHas[gridModel.id] = true; + }); + each(gridModels, function (gridModel) { + gridModelMap.set(gridModel.id, gridModel); + xAxesHas[gridModel.id] = true; + yAxesHas[gridModel.id] = true; + }); + + gridModelMap.each(function (gridModel) { + var grid = gridModel.coordinateSystem; + var cartesians = []; + + each(grid.getCartesians(), function (cartesian, index) { + if (indexOf(xAxisModels, cartesian.getAxis('x').model) >= 0 + || indexOf(yAxisModels, cartesian.getAxis('y').model) >= 0 + ) { + cartesians.push(cartesian); + } + }); + targetInfoList.push({ + panelId: 'grid--' + gridModel.id, + gridModel: gridModel, + coordSysModel: gridModel, + // Use the first one as the representitive coordSys. + coordSys: cartesians[0], + coordSyses: cartesians, + getPanelRect: panelRectBuilder.grid, + xAxisDeclared: xAxesHas[gridModel.id], + yAxisDeclared: yAxesHas[gridModel.id] + }); + }); + }, + + geo: function (foundCpts, targetInfoList) { + each(foundCpts.geoModels, function (geoModel) { + var coordSys = geoModel.coordinateSystem; + targetInfoList.push({ + panelId: 'geo--' + geoModel.id, + geoModel: geoModel, + coordSysModel: geoModel, + coordSys: coordSys, + coordSyses: [coordSys], + getPanelRect: panelRectBuilder.geo + }); + }); + } + }; + + var targetInfoMatchers = [ + + // grid + function (foundCpts, targetInfo) { + var xAxisModel = foundCpts.xAxisModel; + var yAxisModel = foundCpts.yAxisModel; + var gridModel = foundCpts.gridModel; + + !gridModel && xAxisModel && (gridModel = xAxisModel.axis.grid.model); + !gridModel && yAxisModel && (gridModel = yAxisModel.axis.grid.model); + + return gridModel && gridModel === targetInfo.gridModel; + }, + + // geo + function (foundCpts, targetInfo) { + var geoModel = foundCpts.geoModel; + return geoModel && geoModel === targetInfo.geoModel; + } + ]; + + var panelRectBuilder = { + + grid: function () { + // grid is not Transformable. + return this.coordSys.grid.getRect().clone(); + }, + + geo: function () { + var coordSys = this.coordSys; + var rect = coordSys.getBoundingRect().clone(); + // geo roam and zoom transform + rect.applyTransform(graphic.getTransform(coordSys)); + return rect; + } + }; + + var coordConvert = { + + lineX: curry(axisConvert, 0), + + lineY: curry(axisConvert, 1), + + rect: function (to, coordSys, rangeOrCoordRange) { + var xminymin = coordSys[COORD_CONVERTS[to]]([rangeOrCoordRange[0][0], rangeOrCoordRange[1][0]]); + var xmaxymax = coordSys[COORD_CONVERTS[to]]([rangeOrCoordRange[0][1], rangeOrCoordRange[1][1]]); + var values = [ + formatMinMax([xminymin[0], xmaxymax[0]]), + formatMinMax([xminymin[1], xmaxymax[1]]) + ]; + return {values: values, xyMinMax: values}; + }, + + polygon: function (to, coordSys, rangeOrCoordRange) { + var xyMinMax = [[Infinity, -Infinity], [Infinity, -Infinity]]; + var values = zrUtil.map(rangeOrCoordRange, function (item) { + var p = coordSys[COORD_CONVERTS[to]](item); + xyMinMax[0][0] = Math.min(xyMinMax[0][0], p[0]); + xyMinMax[1][0] = Math.min(xyMinMax[1][0], p[1]); + xyMinMax[0][1] = Math.max(xyMinMax[0][1], p[0]); + xyMinMax[1][1] = Math.max(xyMinMax[1][1], p[1]); + return p; + }); + return {values: values, xyMinMax: xyMinMax}; + } + }; + + function axisConvert(axisNameIndex, to, coordSys, rangeOrCoordRange) { + if (true) { + zrUtil.assert( + coordSys.type === 'cartesian2d', + 'lineX/lineY brush is available only in cartesian2d.' + ); + } + + var axis = coordSys.getAxis(['x', 'y'][axisNameIndex]); + var values = formatMinMax(zrUtil.map([0, 1], function (i) { + return to + ? axis.coordToData(axis.toLocalCoord(rangeOrCoordRange[i])) + : axis.toGlobalCoord(axis.dataToCoord(rangeOrCoordRange[i])); + })); + var xyMinMax = []; + xyMinMax[axisNameIndex] = values; + xyMinMax[1 - axisNameIndex] = [NaN, NaN]; + + return {values: values, xyMinMax: xyMinMax}; + } + + var diffProcessor = { + lineX: curry(axisDiffProcessor, 0), + + lineY: curry(axisDiffProcessor, 1), + + rect: function (values, refer, scales) { + 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]] + ]; + }, + + polygon: function (values, refer, scales) { + return zrUtil.map(values, function (item, idx) { + return [item[0] - scales[0] * refer[idx][0], item[1] - scales[1] * refer[idx][1]]; + }); + } + }; + + function axisDiffProcessor(axisNameIndex, values, refer, scales) { + return [ + values[0] - scales[axisNameIndex] * refer[0], + values[1] - scales[axisNameIndex] * refer[1] + ]; + } + + // We have to process scale caused by dataZoom manually, + // although it might be not accurate. + function getScales(xyMinMaxCurr, xyMinMaxOrigin) { + var sizeCurr = getSize(xyMinMaxCurr); + var sizeOrigin = getSize(xyMinMaxOrigin); + var scales = [sizeCurr[0] / sizeOrigin[0], sizeCurr[1] / sizeOrigin[1]]; + isNaN(scales[0]) && (scales[0] = 1); + isNaN(scales[1]) && (scales[1] = 1); + return scales; + } + + function getSize(xyMinMax) { + return xyMinMax + ? [xyMinMax[0][1] - xyMinMax[0][0], xyMinMax[1][1] - xyMinMax[1][0]] + : [NaN, NaN]; + } + + module.exports = BrushTargetManager; + + +/***/ }, +/* 353 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * @file Brush model + */ + + + var echarts = __webpack_require__(1); + var zrUtil = __webpack_require__(4); + var visualSolution = __webpack_require__(350); + var Model = __webpack_require__(12); + + var DEFAULT_OUT_OF_BRUSH_COLOR = ['#ddd']; + + var BrushModel = echarts.extendComponentModel({ + + type: 'brush', + + dependencies: ['geo', 'grid', 'xAxis', 'yAxis', 'parallel', 'series'], + + /** + * @protected + */ + defaultOption: { + // inBrush: null, + // outOfBrush: null, + toolbox: null, // Default value see preprocessor. + brushLink: null, // Series indices array, broadcast using dataIndex. + // or 'all', which means all series. 'none' or null means no series. + seriesIndex: 'all', // seriesIndex array, specify series controlled by this brush component. + geoIndex: null, // + xAxisIndex: null, + yAxisIndex: null, + + brushType: 'rect', // Default brushType, see BrushController. + brushMode: 'single', // Default brushMode, 'single' or 'multiple' + transformable: true, // Default transformable. + brushStyle: { // Default brushStyle + borderWidth: 1, + color: 'rgba(120,140,180,0.3)', + borderColor: 'rgba(120,140,180,0.8)' + }, + + throttleType: 'fixRate',// Throttle in brushSelected event. 'fixRate' or 'debounce'. + // If null, no throttle. Valid only in the first brush component + throttleDelay: 0, // Unit: ms, 0 means every event will be triggered. + + // FIXME + // 试验效果 + removeOnClick: true, + + z: 10000 + }, + + /** + * @readOnly + * @type {Array.} + */ + areas: [], + + /** + * Current activated brush type. + * If null, brush is inactived. + * see module:echarts/component/helper/BrushController + * @readOnly + * @type {string} + */ + brushType: null, + + /** + * Current brush opt. + * see module:echarts/component/helper/BrushController + * @readOnly + * @type {Object} + */ + brushOption: {}, + + /** + * @readOnly + * @type {Array.} + */ + coordInfoList: [], + + optionUpdated: function (newOption, isInit) { + var thisOption = this.option; + + !isInit && visualSolution.replaceVisualOption( + thisOption, newOption, ['inBrush', 'outOfBrush'] + ); + + thisOption.inBrush = thisOption.inBrush || {}; + // Always give default visual, consider setOption at the second time. + thisOption.outOfBrush = thisOption.outOfBrush || {color: DEFAULT_OUT_OF_BRUSH_COLOR}; + }, + + /** + * If ranges is null/undefined, range state remain. + * + * @param {Array.} [ranges] + */ + setAreas: function (areas) { + if (true) { + zrUtil.assert(zrUtil.isArray(areas)); + zrUtil.each(areas, function (area) { + zrUtil.assert(area.brushType, 'Illegal areas'); + }); + } + + // If ranges is null/undefined, range state remain. + // This helps user to dispatchAction({type: 'brush'}) with no areas + // set but just want to get the current brush select info from a `brush` event. + if (!areas) { + return; + } + + this.areas = zrUtil.map(areas, function (area) { + return generateBrushOption(this.option, area); + }, this); + }, + + /** + * see module:echarts/component/helper/BrushController + * @param {Object} brushOption + */ + setBrushOption: function (brushOption) { + this.brushOption = generateBrushOption(this.option, brushOption); + this.brushType = this.brushOption.brushType; + } + + }); + + function generateBrushOption(option, brushOption) { + return zrUtil.merge( + { + brushType: option.brushType, + brushMode: option.brushMode, + transformable: option.transformable, + brushStyle: new Model(option.brushStyle).getItemStyle(), + removeOnClick: option.removeOnClick, + z: option.z + }, + brushOption, + true + ); + } + + module.exports = BrushModel; + + + +/***/ }, +/* 354 */ +/***/ function(module, exports, __webpack_require__) { + + + + var zrUtil = __webpack_require__(4); + var BrushController = __webpack_require__(245); + var echarts = __webpack_require__(1); + + module.exports = echarts.extendComponentView({ + + type: 'brush', + + init: function (ecModel, api) { + + /** + * @readOnly + * @type {module:echarts/model/Global} + */ + this.ecModel = ecModel; + + /** + * @readOnly + * @type {module:echarts/ExtensionAPI} + */ + this.api = api; + + /** + * @readOnly + * @type {module:echarts/component/brush/BrushModel} + */ + this.model; + + /** + * @private + * @type {module:echarts/component/helper/BrushController} + */ + (this._brushController = new BrushController(api.getZr())) + .on('brush', zrUtil.bind(this._onBrush, this)) + .mount(); + }, + + /** + * @override + */ + render: function (brushModel) { + this.model = brushModel; + return updateController.apply(this, arguments); + }, + + /** + * @override + */ + updateView: updateController, + + /** + * @override + */ + updateLayout: updateController, + + /** + * @override + */ + updateVisual: updateController, + + /** + * @override + */ + dispose: function () { + this._brushController.dispose(); + }, + + /** + * @private + */ + _onBrush: function (areas, opt) { + var modelId = this.model.id; + + this.model.brushTargetManager.setOutputRanges(areas, this.ecModel); + + // Action is not dispatched on drag end, because the drag end + // emits the same params with the last drag move event, and + // may have some delay when using touch pad, which makes + // animation not smooth (when using debounce). + (!opt.isEnd || opt.removeOnClick) && this.api.dispatchAction({ + type: 'brush', + brushId: modelId, + areas: zrUtil.clone(areas), + $from: modelId + }); + } + + }); + + function updateController(brushModel, ecModel, api, payload) { + // Do not update controller when drawing. + (!payload || payload.$from !== brushModel.id) && this._brushController + .setPanels(brushModel.brushTargetManager.makePanelOpts(api)) + .enableBrush(brushModel.brushOption) + .updateCovers(brushModel.areas.slice()); + } + + + +/***/ }, +/* 355 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * @file Brush action + */ + + + var echarts = __webpack_require__(1); + + /** + * payload: { + * brushIndex: number, or, + * brushId: string, or, + * brushName: string, + * globalRanges: Array + * } + */ + echarts.registerAction( + {type: 'brush', event: 'brush', update: 'updateView'}, + function (payload, ecModel) { + ecModel.eachComponent({mainType: 'brush', query: payload}, function (brushModel) { + brushModel.setAreas(payload.areas); + }); + } + ); + + /** + * payload: { + * brushComponents: [ + * { + * brushId, + * brushIndex, + * brushName, + * series: [ + * { + * seriesId, + * seriesIndex, + * seriesName, + * rawIndices: [21, 34, ...] + * }, + * ... + * ] + * }, + * ... + * ] + * } + */ + echarts.registerAction( + {type: 'brushSelect', event: 'brushSelected', update: 'none'}, + function () {} + ); + + +/***/ }, +/* 356 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + + var featureManager = __webpack_require__(357); + var zrUtil = __webpack_require__(4); + + function Brush(model, ecModel, api) { + this.model = model; + this.ecModel = ecModel; + this.api = api; + + /** + * @private + * @type {string} + */ + this._brushType; + + /** + * @private + * @type {string} + */ + this._brushMode; + } + + Brush.defaultOption = { + show: true, + type: ['rect', 'polygon', 'lineX', 'lineY', 'keep', 'clear'], + icon: { + 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', // jshint ignore:line + 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', // jshint ignore:line + 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', // jshint ignore:line + 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', // jshint ignore:line + 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', // jshint ignore:line + 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 + }, + title: { + rect: '矩形选择', + polygon: '圈选', + lineX: '横向选择', + lineY: '纵向选择', + keep: '保持选择', + clear: '清除选择' + } + }; + + var proto = Brush.prototype; + + proto.render = + proto.updateView = + proto.updateLayout = function (featureModel, ecModel, api) { + var brushType; + var brushMode; + var isBrushed; + + ecModel.eachComponent({mainType: 'brush'}, function (brushModel) { + brushType = brushModel.brushType; + brushMode = brushModel.brushOption.brushMode || 'single'; + isBrushed |= brushModel.areas.length; + }); + this._brushType = brushType; + this._brushMode = brushMode; + + zrUtil.each(featureModel.get('type', true), function (type) { + featureModel.setIconStatus( + type, + ( + type === 'keep' + ? brushMode === 'multiple' + : type === 'clear' + ? isBrushed + : type === brushType + ) ? 'emphasis' : 'normal' + ); + }); + }; + + proto.getIcons = function () { + var model = this.model; + var availableIcons = model.get('icon', true); + var icons = {}; + zrUtil.each(model.get('type', true), function (type) { + if (availableIcons[type]) { + icons[type] = availableIcons[type]; + } + }); + return icons; + }; + + proto.onclick = function (ecModel, api, type) { + var api = this.api; + var brushType = this._brushType; + var brushMode = this._brushMode; + + if (type === 'clear') { + // Trigger parallel action firstly + api.dispatchAction({ + type: 'axisAreaSelect', + intervals: [] + }); + + api.dispatchAction({ + type: 'brush', + command: 'clear', + // Clear all areas of all brush components. + areas: [] + }); + } + else { + api.dispatchAction({ + type: 'takeGlobalCursor', + key: 'brush', + brushOption: { + brushType: type === 'keep' + ? brushType + : (brushType === type ? false : type), + brushMode: type === 'keep' + ? (brushMode === 'multiple' ? 'single' : 'multiple') + : brushMode + } + }); + } + }; + + featureManager.register('brush', Brush); + + module.exports = Brush; + + +/***/ }, +/* 357 */ +/***/ function(module, exports) { + + 'use strict'; + + + var features = {}; + + module.exports = { + register: function (name, ctor) { + features[name] = ctor; + }, + + get: function (name) { + return features[name]; + } + }; + + +/***/ }, +/* 358 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + /** + * @file calendar.js + * @author dxh + */ + + + + __webpack_require__(359); + __webpack_require__(360); + __webpack_require__(361); + + + + +/***/ }, +/* 359 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + + var layout = __webpack_require__(71); + var numberUtil = __webpack_require__(7); + var zrUtil = __webpack_require__(4); + + // (24*60*60*1000) + var ONE_DAY = 86400000; + + /** + * Calendar + * + * @constructor + * + * @param {Object} calendarModel calendarModel + * @param {Object} ecModel ecModel + * @param {Object} api api + */ + function Calendar(calendarModel, ecModel, api) { + this._model = calendarModel; + } + + Calendar.prototype = { + + constructor: Calendar, + + type: 'calendar', + + dimensions: ['time', 'value'], + + // Required in createListFromData + getDimensionsInfo: function () { + return [{name: 'time', type: 'time'}]; + }, + + getRangeInfo: function () { + return this._rangeInfo; + }, + + getModel: function () { + return this._model; + }, + + getRect: function () { + return this._rect; + }, + + getCellWidth: function () { + return this._sw; + }, + + getCellHeight: function () { + return this._sh; + }, + + getOrient: function () { + return this._orient; + }, + + /** + * getFirstDayOfWeek + * + * @example + * 0 : start at Sunday + * 1 : start at Monday + * + * @return {number} + */ + getFirstDayOfWeek: function () { + return this._firstDayOfWeek; + }, + + /** + * get date info + * + * @param {string|number} date date + * @return {Object} info + */ + getDateInfo: function (date) { + + date = numberUtil.parseDate(date); + + var y = date.getFullYear(); + + var m = date.getMonth() + 1; + m = m < 10 ? '0' + m : m; + + var d = date.getDate(); + d = d < 10 ? '0' + d : d; + + var day = date.getDay(); + + day = Math.abs((day + 7 - this.getFirstDayOfWeek()) % 7); + + return { + y: y, + m: m, + d: d, + day: day, + time: date.getTime(), + formatedDate: y + '-' + m + '-' + d, + date: date + }; + }, + + getNextNDay: function (date, n) { + n = n || 0; + if (n === 0) { + return this.getDateInfo(date); + } + + var time = this.getDateInfo(date).time; + + return this.getDateInfo(time + ONE_DAY * n); + }, + + update: function (ecModel, api) { + + this._firstDayOfWeek = this._model.getModel('dayLabel').get('firstDay'); + this._orient = this._model.get('orient'); + this._lineWidth = this._model.getModel('itemStyle.normal').getItemStyle().lineWidth || 0; + + + this._rangeInfo = this._getRangeInfo(this._initRangeOption()); + var weeks = this._rangeInfo.weeks || 1; + var whNames = ['width', 'height']; + var cellSize = this._model.get('cellSize').slice(); + var layoutParams = this._model.getBoxLayoutParams(); + var cellNumbers = this._orient === 'horizontal' ? [weeks, 7] : [7, weeks]; + + zrUtil.each([0, 1], function (idx) { + if (cellSizeSpecified(cellSize, idx)) { + layoutParams[whNames[idx]] = cellSize[idx] * cellNumbers[idx]; + } + }); + + var whGlobal = { + width: api.getWidth(), + height: api.getHeight() + }; + var calendarRect = this._rect = layout.getLayoutRect(layoutParams, whGlobal); + + zrUtil.each([0, 1], function (idx) { + if (!cellSizeSpecified(cellSize, idx)) { + cellSize[idx] = calendarRect[whNames[idx]] / cellNumbers[idx]; + } + }); + + function cellSizeSpecified(cellSize, idx) { + return cellSize[idx] != null && cellSize[idx] !== 'auto'; + } + + this._sw = cellSize[0]; + this._sh = cellSize[1]; + }, + + + /** + * Convert a time data(time, value) item to (x, y) point. + * + * @override + * @param {Array|number} data data + * @param {boolean} [clamp=true] out of range + * @return {Array} point + */ + dataToPoint: function (data, clamp) { + zrUtil.isArray(data) && (data = data[0]); + clamp == null && (clamp = true); + + var dayInfo = this.getDateInfo(data); + var range = this._rangeInfo; + var date = dayInfo.formatedDate; + + // if not in range return [NaN, NaN] + if (clamp && !(dayInfo.time >= range.start.time && dayInfo.time <= range.end.time)) { + return [NaN, NaN]; + } + + var week = dayInfo.day; + var nthWeek = this._getRangeInfo([range.start.time, date]).weeks; + + if (this._orient === 'vertical') { + return [ + this._rect.x + week * this._sw + this._sw / 2, + this._rect.y + (nthWeek - 1) * this._sh + this._sh / 2 + ]; + + } + + return [ + this._rect.x + (nthWeek - 1) * this._sw + this._sw / 2, + this._rect.y + week * this._sh + this._sh / 2 + ]; + + }, + + /** + * Convert a (x, y) point to time data + * + * @override + * @param {string} point point + * @return {string} data + */ + pointToData: function (point) { + + var date = this.pointToDate(point); + + return date && date.time; + }, + + /** + * Convert a time date item to (x, y) four point. + * + * @param {Array} data date[0] is date + * @param {boolean} [clamp=true] out of range + * @return {Object} point + */ + dataToRect: function (data, clamp) { + var point = this.dataToPoint(data, clamp); + + return { + contentShape: { + x: point[0] - (this._sw - this._lineWidth) / 2, + y: point[1] - (this._sh - this._lineWidth) / 2, + width: this._sw - this._lineWidth, + height: this._sh - this._lineWidth + }, + + center: point, + + tl: [ + point[0] - this._sw / 2, + point[1] - this._sh / 2 + ], + + tr: [ + point[0] + this._sw / 2, + point[1] - this._sh / 2 + ], + + br: [ + point[0] + this._sw / 2, + point[1] + this._sh / 2 + ], + + bl: [ + point[0] - this._sw / 2, + point[1] + this._sh / 2 + ] + + }; + }, + + /** + * Convert a (x, y) point to time date + * + * @param {string} point point + * @return {Object} date + */ + pointToDate: function (point) { + var nthX = Math.floor((point[0] - this._rect.x) / this._sw) + 1; + var nthY = Math.floor((point[1] - this._rect.y) / this._sh) + 1; + var range = this._rangeInfo.range; + + if (this._orient === 'vertical') { + return this._getDateByWeeksAndDay(nthY, nthX - 1, range); + } + + return this._getDateByWeeksAndDay(nthX, nthY - 1, range); + }, + + /** + * @inheritDoc + */ + convertToPixel: zrUtil.curry(doConvert, 'dataToPoint'), + + /** + * @inheritDoc + */ + convertFromPixel: zrUtil.curry(doConvert, 'pointToData'), + + /** + * initRange + * + * @private + * @return {Array} [start, end] + */ + _initRangeOption: function () { + var range = this._model.get('range'); + + var rg = range; + + if (zrUtil.isArray(rg) && rg.length === 1) { + rg = rg[0]; + } + + if (/^\d{4}$/.test(rg)) { + range = [rg + '-01-01', rg + '-12-31']; + } + + if (/^\d{4}[\/|-]\d{1,2}$/.test(rg)) { + + var start = this.getDateInfo(rg); + var firstDay = start.date; + firstDay.setMonth(firstDay.getMonth() + 1); + + var end = this.getNextNDay(firstDay, -1); + range = [start.formatedDate, end.formatedDate]; + } + + if (/^\d{4}[\/|-]\d{1,2}[\/|-]\d{1,2}$/.test(rg)) { + range = [rg, rg]; + } + + var tmp = this._getRangeInfo(range); + + if (tmp.start.time > tmp.end.time) { + range.reverse(); + } + + return range; + }, + + /** + * range info + * + * @private + * @param {Array} range range ['2017-01-01', '2017-07-08'] + * @return {Object} obj + */ + _getRangeInfo: function (range) { + + var start = this.getDateInfo(range[0]); + var end = this.getDateInfo(range[1]); + + var allDay = Math.floor(end.time / ONE_DAY) - Math.floor(start.time / ONE_DAY) + 1; + + var weeks = Math.floor((allDay + start.day + 6) / 7); + + return { + range: [start.formatedDate, end.formatedDate], + start: start, + end: end, + allDay: allDay, + weeks: weeks, + fweek: start.day, + lweek: end.day + }; + }, + + /** + * get date by nthWeeks and week day in range + * + * @private + * @param {number} nthWeek the week + * @param {number} day the week day + * @param {Array} range [d1, d2] + * @return {Object} + */ + _getDateByWeeksAndDay: function (nthWeek, day, range) { + var rangeInfo = this._getRangeInfo(range); + + if (nthWeek > rangeInfo.weeks + || (nthWeek === 0 && day < rangeInfo.fweek) + || (nthWeek === rangeInfo.weeks && day > rangeInfo.lweek) + ) { + return false; + } + + var nthDay = (nthWeek - 1) * 7 - rangeInfo.fweek + day; + + var time = rangeInfo.start.time + nthDay * ONE_DAY; + + return this.getDateInfo(time); + + } + }; + + Calendar.dimensions = Calendar.prototype.dimensions; + + Calendar.getDimensionsInfo = Calendar.prototype.getDimensionsInfo; + + Calendar.create = function (ecModel, api) { + var calendarList = []; + + ecModel.eachComponent('calendar', function (calendarModel) { + var calendar = new Calendar(calendarModel, ecModel, api); + calendarList.push(calendar); + calendarModel.coordinateSystem = calendar; + }); + + ecModel.eachSeries(function (calendarSeries) { + if (calendarSeries.get('coordinateSystem') === 'calendar') { + // Inject coordinate system + calendarSeries.coordinateSystem = calendarList[calendarSeries.get('calendarIndex') || 0]; + } + }); + return calendarList; + }; + + function doConvert(methodName, ecModel, finder, value) { + var calendarModel = finder.calendarModel; + var seriesModel = finder.seriesModel; + + var coordSys = calendarModel + ? calendarModel.coordinateSystem + : seriesModel + ? seriesModel.coordinateSystem + : null; + + return coordSys === this ? coordSys[methodName](value) : null; + } + + __webpack_require__(76).register('calendar', Calendar); + + module.exports = Calendar; + + + +/***/ }, +/* 360 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + + var ComponentModel = __webpack_require__(69); + var zrUtil = __webpack_require__(4); + var layout = __webpack_require__(71); + + var CalendarModel = ComponentModel.extend({ + + type: 'calendar', + + /** + * @type {module:echarts/coord/calendar/Calendar} + */ + coordinateSystem: null, + + defaultOption: { + zlevel: 0, + z: 2, + left: 80, + top: 60, + + cellSize: 20, + + // horizontal vertical + orient: 'horizontal', + + // month separate line style + splitLine: { + show: true, + lineStyle: { + color: '#000', + width: 1, + type: 'solid' + } + }, + + // rect style temporarily unused emphasis + itemStyle: { + normal: { + color: '#fff', + borderWidth: 1, + borderColor: '#ccc' + } + }, + + // week text style + dayLabel: { + show: true, + + // a week first day + firstDay: 0, + + // start end + position: 'start', + margin: '50%', // 50% of cellSize + nameMap: 'en', + textStyle: { + color: '#000' + } + }, + + // month text style + monthLabel: { + show: true, + + // start end + position: 'start', + margin: 5, + + // center or left + align: 'center', + + // cn en [] + nameMap: 'en', + formatter: null, + textStyle: { + color: '#000' + } + }, + + // year text style + yearLabel: { + show: true, + + // top bottom left right + position: null, + margin: 30, + formatter: null, + textStyle: { + color: '#ccc', + fontFamily: 'sans-serif', + fontWeight: 'bolder', + fontSize: 20 + } + } + }, + + /** + * @override + */ + init: function (option, parentModel, ecModel, extraOpt) { + var inputPositionParams = layout.getLayoutParams(option); + + CalendarModel.superApply(this, 'init', arguments); + + mergeAndNormalizeLayoutParams(option, inputPositionParams); + }, + + /** + * @override + */ + mergeOption: function (option, extraOpt) { + CalendarModel.superApply(this, 'mergeOption', arguments); + + mergeAndNormalizeLayoutParams(this.option, option); + } + }); + + function mergeAndNormalizeLayoutParams(target, raw) { + // Normalize cellSize + var cellSize = target.cellSize; + + if (!zrUtil.isArray(cellSize)) { + cellSize = target.cellSize = [cellSize, cellSize]; + } + else if (cellSize.length === 1) { + cellSize[1] = cellSize[0]; + } + + var ignoreSize = zrUtil.map([0, 1], function (hvIdx) { + // If user have set `width` or both `left` and `right`, cellSize + // will be automatically set to 'auto', otherwise the default + // setting of cellSize will make `width` setting not work. + if (layout.sizeCalculable(raw, hvIdx)) { + cellSize[hvIdx] = 'auto'; + } + return cellSize[hvIdx] != null && cellSize[hvIdx] !== 'auto'; + }); + + layout.mergeLayoutParam(target, raw, { + type: 'box', ignoreSize: ignoreSize + }); + } + + module.exports = CalendarModel; + + + + +/***/ }, +/* 361 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + + var zrUtil = __webpack_require__(4); + var graphic = __webpack_require__(18); + var formatUtil = __webpack_require__(6); + var numberUtil = __webpack_require__(7); + + var MONTH_TEXT = { + EN: [ + 'Jan', 'Feb', 'Mar', + 'Apr', 'May', 'Jun', + 'Jul', 'Aug', 'Sep', + 'Oct', 'Nov', 'Dec' + ], + CN: [ + '一月', '二月', '三月', + '四月', '五月', '六月', + '七月', '八月', '九月', + '十月', '十一月', '十二月' + ] + }; + + var WEEK_TEXT = { + EN: ['S', 'M', 'T', 'W', 'T', 'F', 'S'], + CN: ['日', '一', '二', '三', '四', '五', '六'] + }; + + module.exports = __webpack_require__(1).extendComponentView({ + + type: 'calendar', + + /** + * top/left line points + * @private + */ + _tlpoints: null, + + /** + * bottom/right line points + * @private + */ + _blpoints: null, + + /** + * first day of month + * @private + */ + _firstDayOfMonth: null, + + /** + * first day point of month + * @private + */ + _firstDayPoints: null, + + render: function (calendarModel, ecModel, api) { + + var group = this.group; + + group.removeAll(); + + var coordSys = calendarModel.coordinateSystem; + + // range info + var rangeData = coordSys.getRangeInfo(); + var orient = coordSys.getOrient(); + + this._renderDayRect(calendarModel, rangeData, group); + + // _renderLines must be called prior to following function + this._renderLines(calendarModel, rangeData, orient, group); + + this._renderYearText(calendarModel, rangeData, orient, group); + + this._renderMonthText(calendarModel, orient, group); + + this._renderWeekText(calendarModel, rangeData, orient, group); + }, + + // render day rect + _renderDayRect: function (calendarModel, rangeData, group) { + var coordSys = calendarModel.coordinateSystem; + var itemRectStyleModel = calendarModel.getModel('itemStyle.normal').getItemStyle(); + var sw = coordSys.getCellWidth(); + var sh = coordSys.getCellHeight(); + + for (var i = rangeData.start.time; + i <= rangeData.end.time; + i = coordSys.getNextNDay(i, 1).time + ) { + + var point = coordSys.dataToRect([i], false).tl; + + // every rect + var rect = new graphic.Rect({ + shape: { + x: point[0], + y: point[1], + width: sw, + height: sh + }, + cursor: 'default', + style: itemRectStyleModel + }); + + group.add(rect); + } + + }, + + // render separate line + _renderLines: function (calendarModel, rangeData, orient, group) { + + var self = this; + + var coordSys = calendarModel.coordinateSystem; + + var lineStyleModel = calendarModel.getModel('splitLine.lineStyle').getLineStyle(); + var show = calendarModel.get('splitLine.show'); + + var lineWidth = lineStyleModel.lineWidth; + + this._tlpoints = []; + this._blpoints = []; + this._firstDayOfMonth = []; + this._firstDayPoints = []; + + + var firstDay = rangeData.start; + + for (var i = 0; firstDay.time <= rangeData.end.time; i++) { + addPoints(firstDay.formatedDate); + + if (i === 0) { + firstDay = coordSys.getDateInfo(rangeData.start.y + '-' + rangeData.start.m); + } + + var date = firstDay.date; + date.setMonth(date.getMonth() + 1); + firstDay = coordSys.getDateInfo(date); + } + + addPoints(coordSys.getNextNDay(rangeData.end.time, 1).formatedDate); + + function addPoints(date) { + + self._firstDayOfMonth.push(coordSys.getDateInfo(date)); + self._firstDayPoints.push(coordSys.dataToRect([date], false).tl); + + var points = self._getLinePointsOfOneWeek(calendarModel, date, orient); + + self._tlpoints.push(points[0]); + self._blpoints.push(points[points.length - 1]); + + show && self._drawSplitline(points, lineStyleModel, group); + } + + + // render top/left line + show && this._drawSplitline(self._getEdgesPoints(self._tlpoints, lineWidth, orient), lineStyleModel, group); + + // render bottom/right line + show && this._drawSplitline(self._getEdgesPoints(self._blpoints, lineWidth, orient), lineStyleModel, group); + + }, + + // get points at both ends + _getEdgesPoints: function (points, lineWidth, orient) { + var rs = [points[0].slice(), points[points.length - 1].slice()]; + var idx = orient === 'horizontal' ? 0 : 1; + + // both ends of the line are extend half lineWidth + rs[0][idx] = rs[0][idx] - lineWidth / 2; + rs[1][idx] = rs[1][idx] + lineWidth / 2; + + return rs; + }, + + // render split line + _drawSplitline: function (points, lineStyleModel, group) { + + var poyline = new graphic.Polyline({ + z2: 20, + shape: { + points: points + }, + style: lineStyleModel + }); + + group.add(poyline); + }, + + // render month line of one week points + _getLinePointsOfOneWeek: function (calendarModel, date, orient) { + + var coordSys = calendarModel.coordinateSystem; + date = coordSys.getDateInfo(date); + + var points = []; + + for (var i = 0; i < 7; i++) { + + var tmpD = coordSys.getNextNDay(date.time, i); + var point = coordSys.dataToRect([tmpD.time], false); + + points[2 * tmpD.day] = point.tl; + points[2 * tmpD.day + 1] = point[orient === 'horizontal' ? 'bl' : 'tr']; + } + + return points; + + }, + + _formatterLabel: function (formatter, params) { + + if (typeof formatter === 'string' && formatter) { + return formatUtil.formatTplSimple(formatter, params); + } + + if (typeof formatter === 'function') { + return formatter(params); + } + + return params.nameMap; + + }, + + _yearTextPositionControl: function (point, orient, position, margin) { + + point = point.slice(); + var aligns = ['center', 'bottom']; + + if (position === 'top') { + point[1] -= margin; + } + if (position === 'bottom') { + point[1] += margin; + aligns = ['center', 'top']; + } + if (position === 'left') { + point[0] -= margin; + } + if (position === 'right') { + point[0] += margin; + aligns = ['center', 'top']; + } + + var rotate = 0; + if (position === 'left' || position === 'right') { + rotate = Math.PI / 2; + } + + return { + rotation: rotate, + origin: point, + style: { + x: point[0], + y: point[1], + textAlign: aligns[0], + textVerticalAlign: aligns[1] + } + }; + }, + + // render year + _renderYearText: function (calendarModel, rangeData, orient, group) { + var yearLabel = calendarModel.getModel('yearLabel'); + + if (!yearLabel.get('show')) { + return; + } + + var yearLabelStyleModel = calendarModel.getModel('yearLabel.textStyle'); + var margin = yearLabel.get('margin'); + var pos = yearLabel.get('position'); + + if (!pos) { + pos = orient !== 'horizontal' ? 'top' : 'left'; + } + + var points = [this._tlpoints[this._tlpoints.length - 1], this._blpoints[0]]; + var xc = (points[0][0] + points[1][0]) / 2; + var yc = (points[0][1] + points[1][1]) / 2; + + var idx = orient === 'horizontal' ? 0 : 1; + + + var posPoints = { + top: [xc, points[idx][1]], + bottom: [xc, points[1 - idx][1]], + left: [points[1 - idx][0], yc], + right: [points[idx][0], yc] + }; + + var name = rangeData.start.y; + + if (+rangeData.end.y > +rangeData.start.y) { + name = name + '-' + rangeData.end.y; + } + + var formatter = yearLabel.get('formatter'); + + var params = { + start: rangeData.start.y, + end: rangeData.end.y, + nameMap: name + }; + + var content = this._formatterLabel(formatter, params); + + var yearText = new graphic.Text( + zrUtil.merge({ + z2: 30, + style: { + text: content, + font: yearLabelStyleModel.getFont(), + fill: yearLabelStyleModel.getTextColor() + } + }, this._yearTextPositionControl(posPoints[pos], orient, pos, margin)) + ); + + group.add(yearText); + }, + + _monthTextPositionControl: function (point, isCenter, orient, position, margin) { + var align = 'left'; + var vAlign = 'top'; + var x = point[0]; + var y = point[1]; + + if (orient === 'horizontal') { + y = y + margin; + + if (isCenter) { + align = 'center'; + } + + if (position === 'start') { + vAlign = 'bottom'; + } + } + else { + x = x + margin; + + if (isCenter) { + vAlign = 'middle'; + } + + if (position === 'start') { + align = 'right'; + } + } + + return { + x: x, + y: y, + textAlign: align, + textVerticalAlign: vAlign + }; + }, + + // render month and year text + _renderMonthText: function (calendarModel, orient, group) { + var monthLabel = calendarModel.getModel('monthLabel'); + + if (!monthLabel.get('show')) { + return; + } + + var monthLabelStyleModel = calendarModel.getModel('monthLabel.textStyle'); + var nameMap = monthLabel.get('nameMap'); + var margin = monthLabel.get('margin'); + var pos = monthLabel.get('position'); + var align = monthLabel.get('align'); + + var termPoints = [this._tlpoints, this._blpoints]; + + if (zrUtil.isString(nameMap)) { + nameMap = MONTH_TEXT[nameMap.toUpperCase()] || []; + } + + var idx = pos === 'start' ? 0 : 1; + var axis = orient === 'horizontal' ? 0 : 1; + margin = pos === 'start' ? -margin : margin; + var isCenter = (align === 'center'); + + for (var i = 0; i < termPoints[idx].length - 1; i++) { + + var tmp = termPoints[idx][i].slice(); + var firstDay = this._firstDayOfMonth[i]; + + if (isCenter) { + var firstDayPoints = this._firstDayPoints[i]; + tmp[axis] = (firstDayPoints[axis] + termPoints[0][i + 1][axis]) / 2; + } + + var formatter = monthLabel.get('formatter'); + var name = nameMap[+firstDay.m - 1]; + var params = { + yyyy: firstDay.y, + yy: (firstDay.y + '').slice(2), + MM: firstDay.m, + M: +firstDay.m, + nameMap: name + }; + + var content = this._formatterLabel(formatter, params); + + var monthText = new graphic.Text({ + z2: 30, + style: zrUtil.extend({ + text: content, + font: monthLabelStyleModel.getFont(), + fill: monthLabelStyleModel.getTextColor() + }, this._monthTextPositionControl(tmp, isCenter, orient, pos, margin)) + }); + + group.add(monthText); + } + }, + + _weekTextPositionControl: function (point, orient, position, margin, cellSize) { + var align = 'center'; + var vAlign = 'middle'; + var x = point[0]; + var y = point[1]; + var isStart = position === 'start'; + + if (orient === 'horizontal') { + x = x + margin + (isStart ? 1 : -1) * cellSize[0] / 2; + align = isStart ? 'right' : 'left'; + } + else { + y = y + margin + (isStart ? 1 : -1) * cellSize[1] / 2; + vAlign = isStart ? 'bottom' : 'top'; + } + + return { + x: x, + y: y, + textAlign: align, + textVerticalAlign: vAlign + }; + }, + + // render weeks + _renderWeekText: function (calendarModel, rangeData, orient, group) { + var dayLabel = calendarModel.getModel('dayLabel'); + + if (!dayLabel.get('show')) { + return; + } + + var coordSys = calendarModel.coordinateSystem; + var dayLabelStyleModel = calendarModel.getModel('dayLabel.textStyle'); + var pos = dayLabel.get('position'); + var nameMap = dayLabel.get('nameMap'); + var margin = dayLabel.get('margin'); + var firstDayOfWeek = coordSys.getFirstDayOfWeek(); + + if (zrUtil.isString(nameMap)) { + nameMap = WEEK_TEXT[nameMap.toUpperCase()] || []; + } + + var start = coordSys.getNextNDay( + rangeData.end.time, (7 - rangeData.lweek) + ).time; + + var cellSize = [coordSys.getCellWidth(), coordSys.getCellHeight()]; + margin = numberUtil.parsePercent(margin, cellSize[orient === 'horizontal' ? 0 : 1]); + + if (pos === 'start') { + start = coordSys.getNextNDay( + rangeData.start.time, -(7 + rangeData.fweek) + ).time; + margin = -margin; + } + + for (var i = 0; i < 7; i++) { + + var tmpD = coordSys.getNextNDay(start, i); + var point = coordSys.dataToRect([tmpD.time], false).center; + var day = i; + day = Math.abs((i + firstDayOfWeek) % 7); + var weekText = new graphic.Text({ + z2: 30, + style: zrUtil.extend({ + text: nameMap[day], + font: dayLabelStyleModel.getFont(), + fill: dayLabelStyleModel.getTextColor() + }, this._weekTextPositionControl(point, orient, pos, margin, cellSize)) + }); + group.add(weekText); + } + } + }); + + + +/***/ }, +/* 362 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + + var echarts = __webpack_require__(1); + var graphic = __webpack_require__(18); + var layout = __webpack_require__(71); + + // Model + echarts.extendComponentModel({ + + type: 'title', + + layoutMode: {type: 'box', ignoreSize: true}, + + defaultOption: { + // 一级层叠 + zlevel: 0, + // 二级层叠 + z: 6, + show: true, + + text: '', + // 超链接跳转 + // link: null, + // 仅支持self | blank + target: 'blank', + subtext: '', + + // 超链接跳转 + // sublink: null, + // 仅支持self | blank + subtarget: 'blank', + + // 'center' ¦ 'left' ¦ 'right' + // ¦ {number}(x坐标,单位px) + left: 0, + // 'top' ¦ 'bottom' ¦ 'center' + // ¦ {number}(y坐标,单位px) + top: 0, + + // 水平对齐 + // 'auto' | 'left' | 'right' | 'center' + // 默认根据 left 的位置判断是左对齐还是右对齐 + // textAlign: null + // + // 垂直对齐 + // 'auto' | 'top' | 'bottom' | 'middle' + // 默认根据 top 位置判断是上对齐还是下对齐 + // textBaseline: null + + backgroundColor: 'rgba(0,0,0,0)', + + // 标题边框颜色 + borderColor: '#ccc', + + // 标题边框线宽,单位px,默认为0(无边框) + borderWidth: 0, + + // 标题内边距,单位px,默认各方向内边距为5, + // 接受数组分别设定上右下左边距,同css + padding: 5, + + // 主副标题纵向间隔,单位px,默认为10, + itemGap: 10, + textStyle: { + fontSize: 18, + fontWeight: 'bolder', + color: '#333' + }, + subtextStyle: { + color: '#aaa' + } + } + }); + + // View + echarts.extendComponentView({ + + type: 'title', + + render: function (titleModel, ecModel, api) { + this.group.removeAll(); + + if (!titleModel.get('show')) { + return; + } + + var group = this.group; + + var textStyleModel = titleModel.getModel('textStyle'); + var subtextStyleModel = titleModel.getModel('subtextStyle'); + + var textAlign = titleModel.get('textAlign'); + var textBaseline = titleModel.get('textBaseline'); + + var textEl = new graphic.Text({ + style: { + text: titleModel.get('text'), + textFont: textStyleModel.getFont(), + fill: textStyleModel.getTextColor() + }, + z2: 10 + }); + + var textRect = textEl.getBoundingRect(); + + var subText = titleModel.get('subtext'); + var subTextEl = new graphic.Text({ + style: { + text: subText, + textFont: subtextStyleModel.getFont(), + fill: subtextStyleModel.getTextColor(), + y: textRect.height + titleModel.get('itemGap'), + textBaseline: 'top' + }, + z2: 10 + }); + + var link = titleModel.get('link'); + var sublink = titleModel.get('sublink'); + + textEl.silent = !link; + subTextEl.silent = !sublink; + + if (link) { + textEl.on('click', function () { + window.open(link, '_' + titleModel.get('target')); + }); + } + if (sublink) { + subTextEl.on('click', function () { + window.open(sublink, '_' + titleModel.get('subtarget')); + }); + } + + group.add(textEl); + subText && group.add(subTextEl); + // If no subText, but add subTextEl, there will be an empty line. + + var groupRect = group.getBoundingRect(); + var layoutOption = titleModel.getBoxLayoutParams(); + layoutOption.width = groupRect.width; + layoutOption.height = groupRect.height; + var layoutRect = layout.getLayoutRect( + layoutOption, { + width: api.getWidth(), + height: api.getHeight() + }, titleModel.get('padding') + ); + // Adjust text align based on position + if (!textAlign) { + // Align left if title is on the left. center and right is same + textAlign = titleModel.get('left') || titleModel.get('right'); + if (textAlign === 'middle') { + textAlign = 'center'; + } + // Adjust layout by text align + if (textAlign === 'right') { + layoutRect.x += layoutRect.width; + } + else if (textAlign === 'center') { + layoutRect.x += layoutRect.width / 2; + } + } + if (!textBaseline) { + textBaseline = titleModel.get('top') || titleModel.get('bottom'); + if (textBaseline === 'center') { + textBaseline = 'middle'; + } + if (textBaseline === 'bottom') { + layoutRect.y += layoutRect.height; + } + else if (textBaseline === 'middle') { + layoutRect.y += layoutRect.height / 2; + } + + textBaseline = textBaseline || 'top'; + } + + group.attr('position', [layoutRect.x, layoutRect.y]); + var alignStyle = { + textAlign: textAlign, + textVerticalAlign: textBaseline + }; + textEl.setStyle(alignStyle); + subTextEl.setStyle(alignStyle); + + // Render background + // Get groupRect again because textAlign has been changed + groupRect = group.getBoundingRect(); + var padding = layoutRect.margin; + var style = titleModel.getItemStyle(['color', 'opacity']); + style.fill = titleModel.get('backgroundColor'); + var rect = new graphic.Rect({ + shape: { + x: groupRect.x - padding[3], + y: groupRect.y - padding[0], + width: groupRect.width + padding[1] + padding[3], + height: groupRect.height + padding[0] + padding[2] + }, + style: style, + silent: true + }); + graphic.subPixelOptimizeRect(rect); + + group.add(rect); + } + }); + + +/***/ }, +/* 363 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * DataZoom component entry + */ + + + __webpack_require__(364); + + __webpack_require__(365); + __webpack_require__(368); + + __webpack_require__(369); + __webpack_require__(370); + + __webpack_require__(371); + __webpack_require__(372); + + __webpack_require__(374); + __webpack_require__(375); + + + +/***/ }, +/* 364 */ +/***/ function(module, exports, __webpack_require__) { + + + + __webpack_require__(69).registerSubTypeDefaulter('dataZoom', function (option) { + // Default 'slider' when no type specified. + return 'slider'; + }); + + + +/***/ }, +/* 365 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * @file Data zoom model + */ + + + var zrUtil = __webpack_require__(4); + var env = __webpack_require__(2); + var echarts = __webpack_require__(1); + var modelUtil = __webpack_require__(5); + var helper = __webpack_require__(366); + var AxisProxy = __webpack_require__(367); + var each = zrUtil.each; + var eachAxisDim = helper.eachAxisDim; + + var DataZoomModel = echarts.extendComponentModel({ + + type: 'dataZoom', + + dependencies: [ + 'xAxis', 'yAxis', 'zAxis', 'radiusAxis', 'angleAxis', 'singleAxis', 'series' + ], + + /** + * @protected + */ + defaultOption: { + zlevel: 0, + z: 4, // Higher than normal component (z: 2). + orient: null, // Default auto by axisIndex. Possible value: 'horizontal', 'vertical'. + xAxisIndex: null, // Default the first horizontal category axis. + yAxisIndex: null, // Default the first vertical category axis. + + filterMode: 'filter', // Possible values: 'filter' or 'empty' or 'weakFilter'. + // 'filter': data items which are out of window will be removed. This option is + // applicable when filtering outliers. For each data item, it will be + // filtered if one of the relevant dimensions is out of the window. + // 'weakFilter': data items which are out of window will be removed. This option + // is applicable when filtering outliers. For each data item, it will be + // filtered only if all of the relevant dimensions are out of the same + // side of the window. + // 'empty': data items which are out of window will be set to empty. + // This option is applicable when user should not neglect + // that there are some data items out of window. + // 'none': Do not filter. + // Taking line chart as an example, line will be broken in + // the filtered points when filterModel is set to 'empty', but + // be connected when set to 'filter'. + + throttle: null, // Dispatch action by the fixed rate, avoid frequency. + // default 100. Do not throttle when use null/undefined. + // If animation === true and animationDurationUpdate > 0, + // default value is 100, otherwise 20. + start: 0, // Start percent. 0 ~ 100 + end: 100, // End percent. 0 ~ 100 + startValue: null, // Start value. If startValue specified, start is ignored. + endValue: null, // End value. If endValue specified, end is ignored. + minSpan: null, // 0 ~ 100 + maxSpan: null, // 0 ~ 100 + minValueSpan: null, // The range of dataZoom can not be smaller than that. + maxValueSpan: null // The range of dataZoom can not be larger than that. + }, + + /** + * @override + */ + init: function (option, parentModel, ecModel) { + + /** + * key like x_0, y_1 + * @private + * @type {Object} + */ + this._dataIntervalByAxis = {}; + + /** + * @private + */ + this._dataInfo = {}; + + /** + * key like x_0, y_1 + * @private + */ + this._axisProxies = {}; + + /** + * @readOnly + */ + this.textStyleModel; + + /** + * @private + */ + this._autoThrottle = true; + + /** + * 'percent' or 'value' + * @private + */ + this._rangePropMode = ['percent', 'percent']; + + var rawOption = retrieveRaw(option); + + this.mergeDefaultAndTheme(option, ecModel); + + this.doInit(rawOption); + }, + + /** + * @override + */ + mergeOption: function (newOption) { + var rawOption = retrieveRaw(newOption); + + //FIX #2591 + zrUtil.merge(this.option, newOption, true); + + this.doInit(rawOption); + }, + + /** + * @protected + */ + doInit: function (rawOption) { + var thisOption = this.option; + + // Disable realtime view update if canvas is not supported. + if (!env.canvasSupported) { + thisOption.realtime = false; + } + + this._setDefaultThrottle(rawOption); + + updateRangeUse(this, rawOption); + + each([['start', 'startValue'], ['end', 'endValue']], function (names, index) { + // start/end has higher priority over startValue/endValue if they + // both set, but we should make chart.setOption({endValue: 1000}) + // effective, rather than chart.setOption({endValue: 1000, end: null}). + if (this._rangePropMode[index] === 'value') { + thisOption[names[0]] = null; + } + // Otherwise do nothing and use the merge result. + }, this); + + this.textStyleModel = this.getModel('textStyle'); + + this._resetTarget(); + + this._giveAxisProxies(); + }, + + /** + * @private + */ + _giveAxisProxies: function () { + var axisProxies = this._axisProxies; + + this.eachTargetAxis(function (dimNames, axisIndex, dataZoomModel, ecModel) { + var axisModel = this.dependentModels[dimNames.axis][axisIndex]; + + // If exists, share axisProxy with other dataZoomModels. + var axisProxy = axisModel.__dzAxisProxy || ( + // Use the first dataZoomModel as the main model of axisProxy. + axisModel.__dzAxisProxy = new AxisProxy( + dimNames.name, axisIndex, this, ecModel + ) + ); + // FIXME + // dispose __dzAxisProxy + + axisProxies[dimNames.name + '_' + axisIndex] = axisProxy; + }, this); + }, + + /** + * @private + */ + _resetTarget: function () { + var thisOption = this.option; + + var autoMode = this._judgeAutoMode(); + + eachAxisDim(function (dimNames) { + var axisIndexName = dimNames.axisIndex; + thisOption[axisIndexName] = modelUtil.normalizeToArray( + thisOption[axisIndexName] + ); + }, this); + + if (autoMode === 'axisIndex') { + this._autoSetAxisIndex(); + } + else if (autoMode === 'orient') { + this._autoSetOrient(); + } + }, + + /** + * @private + */ + _judgeAutoMode: function () { + // Auto set only works for setOption at the first time. + // The following is user's reponsibility. So using merged + // option is OK. + var thisOption = this.option; + + var hasIndexSpecified = false; + eachAxisDim(function (dimNames) { + // When user set axisIndex as a empty array, we think that user specify axisIndex + // but do not want use auto mode. Because empty array may be encountered when + // some error occured. + if (thisOption[dimNames.axisIndex] != null) { + hasIndexSpecified = true; + } + }, this); + + var orient = thisOption.orient; + + if (orient == null && hasIndexSpecified) { + return 'orient'; + } + else if (!hasIndexSpecified) { + if (orient == null) { + thisOption.orient = 'horizontal'; + } + return 'axisIndex'; + } + }, + + /** + * @private + */ + _autoSetAxisIndex: function () { + var autoAxisIndex = true; + var orient = this.get('orient', true); + var thisOption = this.option; + var dependentModels = this.dependentModels; + + if (autoAxisIndex) { + // Find axis that parallel to dataZoom as default. + var dimName = orient === 'vertical' ? 'y' : 'x'; + + if (dependentModels[dimName + 'Axis'].length) { + thisOption[dimName + 'AxisIndex'] = [0]; + autoAxisIndex = false; + } + else { + each(dependentModels.singleAxis, function (singleAxisModel) { + if (autoAxisIndex && singleAxisModel.get('orient', true) === orient) { + thisOption.singleAxisIndex = [singleAxisModel.componentIndex]; + autoAxisIndex = false; + } + }); + } + } + + if (autoAxisIndex) { + // Find the first category axis as default. (consider polar) + eachAxisDim(function (dimNames) { + if (!autoAxisIndex) { + return; + } + var axisIndices = []; + var axisModels = this.dependentModels[dimNames.axis]; + if (axisModels.length && !axisIndices.length) { + for (var i = 0, len = axisModels.length; i < len; i++) { + if (axisModels[i].get('type') === 'category') { + axisIndices.push(i); + } + } + } + thisOption[dimNames.axisIndex] = axisIndices; + if (axisIndices.length) { + autoAxisIndex = false; + } + }, this); + } + + if (autoAxisIndex) { + // FIXME + // 这里是兼容ec2的写法(没指定xAxisIndex和yAxisIndex时把scatter和双数值轴折柱纳入dataZoom控制), + // 但是实际是否需要Grid.js#getScaleByOption来判断(考虑time,log等axis type)? + + // If both dataZoom.xAxisIndex and dataZoom.yAxisIndex is not specified, + // dataZoom component auto adopts series that reference to + // both xAxis and yAxis which type is 'value'. + this.ecModel.eachSeries(function (seriesModel) { + if (this._isSeriesHasAllAxesTypeOf(seriesModel, 'value')) { + eachAxisDim(function (dimNames) { + var axisIndices = thisOption[dimNames.axisIndex]; + + var axisIndex = seriesModel.get(dimNames.axisIndex); + var axisId = seriesModel.get(dimNames.axisId); + + var axisModel = seriesModel.ecModel.queryComponents({ + mainType: dimNames.axis, + index: axisIndex, + id: axisId + })[0]; + + if (true) { + if (!axisModel) { + throw new Error( + dimNames.axis + ' "' + zrUtil.retrieve( + axisIndex, + axisId, + 0 + ) + '" not found' + ); + } + } + axisIndex = axisModel.componentIndex; + + if (zrUtil.indexOf(axisIndices, axisIndex) < 0) { + axisIndices.push(axisIndex); + } + }); + } + }, this); + } + }, + + /** + * @private + */ + _autoSetOrient: function () { + var dim; + + // Find the first axis + this.eachTargetAxis(function (dimNames) { + !dim && (dim = dimNames.name); + }, this); + + this.option.orient = dim === 'y' ? 'vertical' : 'horizontal'; + }, + + /** + * @private + */ + _isSeriesHasAllAxesTypeOf: function (seriesModel, axisType) { + // FIXME + // 需要series的xAxisIndex和yAxisIndex都首先自动设置上。 + // 例如series.type === scatter时。 + + var is = true; + eachAxisDim(function (dimNames) { + var seriesAxisIndex = seriesModel.get(dimNames.axisIndex); + var axisModel = this.dependentModels[dimNames.axis][seriesAxisIndex]; + + if (!axisModel || axisModel.get('type') !== axisType) { + is = false; + } + }, this); + return is; + }, + + /** + * @private + */ + _setDefaultThrottle: function (rawOption) { + // When first time user set throttle, auto throttle ends. + if (rawOption.hasOwnProperty('throttle')) { + this._autoThrottle = false; + } + if (this._autoThrottle) { + var globalOption = this.ecModel.option; + this.option.throttle = + (globalOption.animation && globalOption.animationDurationUpdate > 0) + ? 100 : 20; + } + }, + + /** + * @public + */ + getFirstTargetAxisModel: function () { + var firstAxisModel; + eachAxisDim(function (dimNames) { + if (firstAxisModel == null) { + var indices = this.get(dimNames.axisIndex); + if (indices.length) { + firstAxisModel = this.dependentModels[dimNames.axis][indices[0]]; + } + } + }, this); + + return firstAxisModel; + }, + + /** + * @public + * @param {Function} callback param: axisModel, dimNames, axisIndex, dataZoomModel, ecModel + */ + eachTargetAxis: function (callback, context) { + var ecModel = this.ecModel; + eachAxisDim(function (dimNames) { + each( + this.get(dimNames.axisIndex), + function (axisIndex) { + callback.call(context, dimNames, axisIndex, this, ecModel); + }, + this + ); + }, this); + }, + + /** + * @param {string} dimName + * @param {number} axisIndex + * @return {module:echarts/component/dataZoom/AxisProxy} If not found, return null/undefined. + */ + getAxisProxy: function (dimName, axisIndex) { + return this._axisProxies[dimName + '_' + axisIndex]; + }, + + /** + * @param {string} dimName + * @param {number} axisIndex + * @return {module:echarts/model/Model} If not found, return null/undefined. + */ + getAxisModel: function (dimName, axisIndex) { + var axisProxy = this.getAxisProxy(dimName, axisIndex); + return axisProxy && axisProxy.getAxisModel(); + }, + + /** + * If not specified, set to undefined. + * + * @public + * @param {Object} opt + * @param {number} [opt.start] + * @param {number} [opt.end] + * @param {number} [opt.startValue] + * @param {number} [opt.endValue] + * @param {boolean} [ignoreUpdateRangeUsg=false] + */ + setRawRange: function (opt, ignoreUpdateRangeUsg) { + each(['start', 'end', 'startValue', 'endValue'], function (name) { + // If any of those prop is null/undefined, we should alos set + // them, because only one pair between start/end and + // startValue/endValue can work. + this.option[name] = opt[name]; + }, this); + + !ignoreUpdateRangeUsg && updateRangeUse(this, opt); + }, + + /** + * @public + * @return {Array.} [startPercent, endPercent] + */ + getPercentRange: function () { + var axisProxy = this.findRepresentativeAxisProxy(); + if (axisProxy) { + return axisProxy.getDataPercentWindow(); + } + }, + + /** + * @public + * For example, chart.getModel().getComponent('dataZoom').getValueRange('y', 0); + * + * @param {string} [axisDimName] + * @param {number} [axisIndex] + * @return {Array.} [startValue, endValue] value can only be '-' or finite number. + */ + getValueRange: function (axisDimName, axisIndex) { + if (axisDimName == null && axisIndex == null) { + var axisProxy = this.findRepresentativeAxisProxy(); + if (axisProxy) { + return axisProxy.getDataValueWindow(); + } + } + else { + return this.getAxisProxy(axisDimName, axisIndex).getDataValueWindow(); + } + }, + + /** + * @public + * @param {module:echarts/model/Model} [axisModel] If axisModel given, find axisProxy + * corresponding to the axisModel + * @return {module:echarts/component/dataZoom/AxisProxy} + */ + findRepresentativeAxisProxy: function (axisModel) { + if (axisModel) { + return axisModel.__dzAxisProxy; + } + + // Find the first hosted axisProxy + var axisProxies = this._axisProxies; + for (var key in axisProxies) { + if (axisProxies.hasOwnProperty(key) && axisProxies[key].hostedBy(this)) { + return axisProxies[key]; + } + } + + // If no hosted axis find not hosted axisProxy. + // Consider this case: dataZoomModel1 and dataZoomModel2 control the same axis, + // and the option.start or option.end settings are different. The percentRange + // should follow axisProxy. + // (We encounter this problem in toolbox data zoom.) + for (var key in axisProxies) { + if (axisProxies.hasOwnProperty(key) && !axisProxies[key].hostedBy(this)) { + return axisProxies[key]; + } + } + }, + + /** + * @return {Array.} + */ + getRangePropMode: function () { + return this._rangePropMode.slice(); + } + }); + + function retrieveRaw(option) { + var ret = {}; + each( + ['start', 'end', 'startValue', 'endValue', 'throttle'], + function (name) { + option.hasOwnProperty(name) && (ret[name] = option[name]); + } + ); + return ret; + } + + function updateRangeUse(dataZoomModel, rawOption) { + each([['start', 'startValue'], ['end', 'endValue']], function (names, index) { + var rangePropMode = dataZoomModel._rangePropMode; + if (rawOption[names[0]] != null) { + rangePropMode[index] = 'percent'; + } + else if (rawOption[names[1]] != null) { + rangePropMode[index] = 'value'; + } + // else remain its original setting. + }); + } + + module.exports = DataZoomModel; + + + +/***/ }, +/* 366 */ +/***/ function(module, exports, __webpack_require__) { + + + var formatUtil = __webpack_require__(6); + var zrUtil = __webpack_require__(4); + + var helper = {}; + + var AXIS_DIMS = ['x', 'y', 'z', 'radius', 'angle', 'single']; + // Supported coords. + var COORDS = ['cartesian2d', 'polar', 'singleAxis']; + + /** + * @param {string} coordType + * @return {boolean} + */ + helper.isCoordSupported = function (coordType) { + return zrUtil.indexOf(COORDS, coordType) >= 0; + }; + + /** + * Create "each" method to iterate names. + * + * @pubilc + * @param {Array.} names + * @param {Array.=} attrs + * @return {Function} + */ + helper.createNameEach = function (names, attrs) { + names = names.slice(); + var capitalNames = zrUtil.map(names, formatUtil.capitalFirst); + attrs = (attrs || []).slice(); + var capitalAttrs = zrUtil.map(attrs, formatUtil.capitalFirst); + + return function (callback, context) { + zrUtil.each(names, function (name, index) { + var nameObj = {name: name, capital: capitalNames[index]}; + + for (var j = 0; j < attrs.length; j++) { + nameObj[attrs[j]] = name + capitalAttrs[j]; + } + + callback.call(context, nameObj); + }); + }; + }; + + /** + * Iterate each dimension name. + * + * @public + * @param {Function} callback The parameter is like: + * { + * name: 'angle', + * capital: 'Angle', + * axis: 'angleAxis', + * axisIndex: 'angleAixs', + * index: 'angleIndex' + * } + * @param {Object} context + */ + helper.eachAxisDim = helper.createNameEach(AXIS_DIMS, ['axisIndex', 'axis', 'index', 'id']); + + /** + * If tow dataZoomModels has the same axis controlled, we say that they are 'linked'. + * dataZoomModels and 'links' make up one or more graphics. + * This function finds the graphic where the source dataZoomModel is in. + * + * @public + * @param {Function} forEachNode Node iterator. + * @param {Function} forEachEdgeType edgeType iterator + * @param {Function} edgeIdGetter Giving node and edgeType, return an array of edge id. + * @return {Function} Input: sourceNode, Output: Like {nodes: [], dims: {}} + */ + helper.createLinkedNodesFinder = function (forEachNode, forEachEdgeType, edgeIdGetter) { + + return function (sourceNode) { + var result = { + nodes: [], + records: {} // key: edgeType.name, value: Object (key: edge id, value: boolean). + }; + + forEachEdgeType(function (edgeType) { + result.records[edgeType.name] = {}; + }); + + if (!sourceNode) { + return result; + } + + absorb(sourceNode, result); + + var existsLink; + do { + existsLink = false; + forEachNode(processSingleNode); + } + while (existsLink); + + function processSingleNode(node) { + if (!isNodeAbsorded(node, result) && isLinked(node, result)) { + absorb(node, result); + existsLink = true; + } + } + + return result; + }; + + function isNodeAbsorded(node, result) { + return zrUtil.indexOf(result.nodes, node) >= 0; + } + + function isLinked(node, result) { + var hasLink = false; + forEachEdgeType(function (edgeType) { + zrUtil.each(edgeIdGetter(node, edgeType) || [], function (edgeId) { + result.records[edgeType.name][edgeId] && (hasLink = true); + }); + }); + return hasLink; + } + + function absorb(node, result) { + result.nodes.push(node); + forEachEdgeType(function (edgeType) { + zrUtil.each(edgeIdGetter(node, edgeType) || [], function (edgeId) { + result.records[edgeType.name][edgeId] = true; + }); + }); + } + }; + + module.exports = helper; + + +/***/ }, +/* 367 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * @file Axis operator + */ + + + var zrUtil = __webpack_require__(4); + var numberUtil = __webpack_require__(7); + var helper = __webpack_require__(366); + var each = zrUtil.each; + var asc = numberUtil.asc; + + /** + * Operate single axis. + * One axis can only operated by one axis operator. + * Different dataZoomModels may be defined to operate the same axis. + * (i.e. 'inside' data zoom and 'slider' data zoom components) + * So dataZoomModels share one axisProxy in that case. + * + * @class + */ + var AxisProxy = function (dimName, axisIndex, dataZoomModel, ecModel) { + + /** + * @private + * @type {string} + */ + this._dimName = dimName; + + /** + * @private + */ + this._axisIndex = axisIndex; + + /** + * @private + * @type {Array.} + */ + this._valueWindow; + + /** + * @private + * @type {Array.} + */ + this._percentWindow; + + /** + * @private + * @type {Array.} + */ + this._dataExtent; + + /** + * {minSpan, maxSpan, minValueSpan, maxValueSpan} + * @private + * @type {Object} + */ + this._minMaxSpan; + + /** + * @readOnly + * @type {module: echarts/model/Global} + */ + this.ecModel = ecModel; + + /** + * @private + * @type {module: echarts/component/dataZoom/DataZoomModel} + */ + this._dataZoomModel = dataZoomModel; + }; + + AxisProxy.prototype = { + + constructor: AxisProxy, + + /** + * Whether the axisProxy is hosted by dataZoomModel. + * + * @public + * @param {module: echarts/component/dataZoom/DataZoomModel} dataZoomModel + * @return {boolean} + */ + hostedBy: function (dataZoomModel) { + return this._dataZoomModel === dataZoomModel; + }, + + /** + * @return {Array.} Value can only be NaN or finite value. + */ + getDataValueWindow: function () { + return this._valueWindow.slice(); + }, + + /** + * @return {Array.} + */ + getDataPercentWindow: function () { + return this._percentWindow.slice(); + }, + + /** + * @public + * @param {number} axisIndex + * @return {Array} seriesModels + */ + getTargetSeriesModels: function () { + var seriesModels = []; + var ecModel = this.ecModel; + + ecModel.eachSeries(function (seriesModel) { + if (helper.isCoordSupported(seriesModel.get('coordinateSystem'))) { + var dimName = this._dimName; + var axisModel = ecModel.queryComponents({ + mainType: dimName + 'Axis', + index: seriesModel.get(dimName + 'AxisIndex'), + id: seriesModel.get(dimName + 'AxisId') + })[0]; + if (this._axisIndex === (axisModel && axisModel.componentIndex)) { + seriesModels.push(seriesModel); + } + } + }, this); + + return seriesModels; + }, + + getAxisModel: function () { + return this.ecModel.getComponent(this._dimName + 'Axis', this._axisIndex); + }, + + getOtherAxisModel: function () { + var axisDim = this._dimName; + var ecModel = this.ecModel; + var axisModel = this.getAxisModel(); + var isCartesian = axisDim === 'x' || axisDim === 'y'; + var otherAxisDim; + var coordSysIndexName; + if (isCartesian) { + coordSysIndexName = 'gridIndex'; + otherAxisDim = axisDim === 'x' ? 'y' : 'x'; + } + else { + coordSysIndexName = 'polarIndex'; + otherAxisDim = axisDim === 'angle' ? 'radius' : 'angle'; + } + var foundOtherAxisModel; + ecModel.eachComponent(otherAxisDim + 'Axis', function (otherAxisModel) { + if ((otherAxisModel.get(coordSysIndexName) || 0) + === (axisModel.get(coordSysIndexName) || 0) + ) { + foundOtherAxisModel = otherAxisModel; + } + }); + return foundOtherAxisModel; + }, + + getMinMaxSpan: function () { + return zrUtil.clone(this._minMaxSpan); + }, + + /** + * Only calculate by given range and this._dataExtent, do not change anything. + * + * @param {Object} opt + * @param {number} [opt.start] + * @param {number} [opt.end] + * @param {number} [opt.startValue] + * @param {number} [opt.endValue] + */ + calculateDataWindow: function (opt) { + var dataExtent = this._dataExtent; + var axisModel = this.getAxisModel(); + var scale = axisModel.axis.scale; + var rangePropMode = this._dataZoomModel.getRangePropMode(); + var percentExtent = [0, 100]; + var percentWindow = [ + opt.start, + opt.end + ]; + var valueWindow = []; + + each(['startValue', 'endValue'], function (prop) { + valueWindow.push(opt[prop] != null ? scale.parse(opt[prop]) : null); + }); + + // Normalize bound. + each([0, 1], function (idx) { + var boundValue = valueWindow[idx]; + var boundPercent = percentWindow[idx]; + + // Notice: dataZoom is based either on `percentProp` ('start', 'end') or + // on `valueProp` ('startValue', 'endValue'). The former one is suitable + // for cases that a dataZoom component controls multiple axes with different + // unit or extent, and the latter one is suitable for accurate zoom by pixel + // (e.g., in dataZoomSelect). `valueProp` can be calculated from `percentProp`, + // but it is awkward that `percentProp` can not be obtained from `valueProp` + // accurately (because all of values that are overflow the `dataExtent` will + // be calculated to percent '100%'). So we have to use + // `dataZoom.getRangePropMode()` to mark which prop is used. + // `rangePropMode` is updated only when setOption or dispatchAction, otherwise + // it remains its original value. + + if (rangePropMode[idx] === 'percent') { + if (boundPercent == null) { + boundPercent = percentExtent[idx]; + } + // Use scale.parse to math round for category or time axis. + boundValue = scale.parse(numberUtil.linearMap( + boundPercent, percentExtent, dataExtent, true + )); + } + else { + // Calculating `percent` from `value` may be not accurate, because + // This calculation can not be inversed, because all of values that + // are overflow the `dataExtent` will be calculated to percent '100%' + boundPercent = numberUtil.linearMap( + boundValue, dataExtent, percentExtent, true + ); + } + + // valueWindow[idx] = round(boundValue); + // percentWindow[idx] = round(boundPercent); + valueWindow[idx] = boundValue; + percentWindow[idx] = boundPercent; + }); + + return { + valueWindow: asc(valueWindow), + percentWindow: asc(percentWindow) + }; + }, + + /** + * Notice: reset should not be called before series.restoreData() called, + * so it is recommanded to be called in "process stage" but not "model init + * stage". + * + * @param {module: echarts/component/dataZoom/DataZoomModel} dataZoomModel + */ + reset: function (dataZoomModel) { + if (dataZoomModel !== this._dataZoomModel) { + return; + } + + // Culculate data window and data extent, and record them. + this._dataExtent = calculateDataExtent( + this, this._dimName, this.getTargetSeriesModels() + ); + + var dataWindow = this.calculateDataWindow(dataZoomModel.option); + + this._valueWindow = dataWindow.valueWindow; + this._percentWindow = dataWindow.percentWindow; + + setMinMaxSpan(this); + + // Update axis setting then. + setAxisModel(this); + }, + + /** + * @param {module: echarts/component/dataZoom/DataZoomModel} dataZoomModel + */ + restore: function (dataZoomModel) { + if (dataZoomModel !== this._dataZoomModel) { + return; + } + + this._valueWindow = this._percentWindow = null; + setAxisModel(this, true); + }, + + /** + * @param {module: echarts/component/dataZoom/DataZoomModel} dataZoomModel + */ + filterData: function (dataZoomModel) { + if (dataZoomModel !== this._dataZoomModel) { + return; + } + + var axisDim = this._dimName; + var seriesModels = this.getTargetSeriesModels(); + var filterMode = dataZoomModel.get('filterMode'); + var valueWindow = this._valueWindow; + + if (filterMode === 'none') { + return; + } + + // FIXME + // Toolbox may has dataZoom injected. And if there are stacked bar chart + // with NaN data, NaN will be filtered and stack will be wrong. + // So we need to force the mode to be set empty. + // In fect, it is not a big deal that do not support filterMode-'filter' + // when using toolbox#dataZoom, utill tooltip#dataZoom support "single axis + // selection" some day, which might need "adapt to data extent on the + // otherAxis", which is disabled by filterMode-'empty'. + var otherAxisModel = this.getOtherAxisModel(); + if (dataZoomModel.get('$fromToolbox') + && otherAxisModel + && otherAxisModel.get('type') === 'category' + ) { + filterMode = 'empty'; + } + + // Process series data + each(seriesModels, function (seriesModel) { + var seriesData = seriesModel.getData(); + var dataDims = seriesModel.coordDimToDataDim(axisDim); + + if (filterMode === 'weakFilter') { + seriesData && seriesData.filterSelf(function (dataIndex) { + var leftOut; + var rightOut; + var hasValue; + for (var i = 0; i < dataDims.length; i++) { + var value = seriesData.get(dataDims[i], dataIndex); + var thisHasValue = !isNaN(value); + var thisLeftOut = value < valueWindow[0]; + var thisRightOut = value > valueWindow[1]; + if (thisHasValue && !thisLeftOut && !thisRightOut) { + return true; + } + thisHasValue && (hasValue = true); + thisLeftOut && (leftOut = true); + thisRightOut && (rightOut = true); + } + // If both left out and right out, do not filter. + return hasValue && leftOut && rightOut; + }); + } + else { + seriesData && each(dataDims, function (dim) { + if (filterMode === 'empty') { + seriesModel.setData( + seriesData.map(dim, function (value) { + return !isInWindow(value) ? NaN : value; + }) + ); + } + else { + seriesData.filterSelf(dim, isInWindow); + } + }); + } + }); + + function isInWindow(value) { + return value >= valueWindow[0] && value <= valueWindow[1]; + } + } + }; + + function calculateDataExtent(axisProxy, axisDim, seriesModels) { + var dataExtent = [Infinity, -Infinity]; + + each(seriesModels, function (seriesModel) { + var seriesData = seriesModel.getData(); + if (seriesData) { + each(seriesModel.coordDimToDataDim(axisDim), function (dim) { + var seriesExtent = seriesData.getDataExtent(dim); + seriesExtent[0] < dataExtent[0] && (dataExtent[0] = seriesExtent[0]); + seriesExtent[1] > dataExtent[1] && (dataExtent[1] = seriesExtent[1]); + }); + } + }); + + if (dataExtent[1] < dataExtent[0]) { + dataExtent = [NaN, NaN]; + } + + // It is important to get "consistent" extent when more then one axes is + // controlled by a `dataZoom`, otherwise those axes will not be synchronized + // when zooming. But it is difficult to know what is "consistent", considering + // axes have different type or even different meanings (For example, two + // time axes are used to compare data of the same date in different years). + // So basically dataZoom just obtains extent by series.data (in category axis + // extent can be obtained from axis.data). + // Nevertheless, user can set min/max/scale on axes to make extent of axes + // consistent. + fixExtentByAxis(axisProxy, dataExtent); + + return dataExtent; + } + + function fixExtentByAxis(axisProxy, dataExtent) { + var axisModel = axisProxy.getAxisModel(); + var min = axisModel.getMin(true); + + // For category axis, if min/max/scale are not set, extent is determined + // by axis.data by default. + var isCategoryAxis = axisModel.get('type') === 'category'; + var axisDataLen = isCategoryAxis && (axisModel.get('data') || []).length; + + if (min != null && min !== 'dataMin') { + dataExtent[0] = min; + } + else if (isCategoryAxis) { + dataExtent[0] = axisDataLen > 0 ? 0 : NaN; + } + + var max = axisModel.getMax(true); + if (max != null && max !== 'dataMax') { + dataExtent[1] = max; + } + else if (isCategoryAxis) { + dataExtent[1] = axisDataLen > 0 ? axisDataLen - 1 : NaN; + } + + if (!axisModel.get('scale', true)) { + dataExtent[0] > 0 && (dataExtent[0] = 0); + dataExtent[1] < 0 && (dataExtent[1] = 0); + } + + // For value axis, if min/max/scale are not set, we just use the extent obtained + // by series data, which may be a little different from the extent calculated by + // `axisHelper.getScaleExtent`. But the different just affects the experience a + // little when zooming. So it will not be fixed until some users require it strongly. + + return dataExtent; + } + + function setAxisModel(axisProxy, isRestore) { + var axisModel = axisProxy.getAxisModel(); + + var percentWindow = axisProxy._percentWindow; + var valueWindow = axisProxy._valueWindow; + + if (!percentWindow) { + return; + } + + // [0, 500]: arbitrary value, guess axis extent. + var precision = numberUtil.getPixelPrecision(valueWindow, [0, 500]); + // isRestore or isFull + var useOrigin = isRestore || (percentWindow[0] === 0 && percentWindow[1] === 100); + + axisModel.setRange( + useOrigin ? null : +valueWindow[0].toFixed(precision), + useOrigin ? null : +valueWindow[1].toFixed(precision) + ); + } + + function setMinMaxSpan(axisProxy) { + var minMaxSpan = axisProxy._minMaxSpan = {}; + var dataZoomModel = axisProxy._dataZoomModel; + + each(['min', 'max'], function (minMax) { + minMaxSpan[minMax + 'Span'] = dataZoomModel.get(minMax + 'Span'); + + // minValueSpan and maxValueSpan has higher priority than minSpan and maxSpan + var valueSpan = dataZoomModel.get(minMax + 'ValueSpan'); + if (valueSpan != null) { + minMaxSpan[minMax + 'ValueSpan'] = valueSpan; + + valueSpan = axisProxy.getAxisModel().axis.scale.parse(valueSpan); + if (valueSpan != null) { + minMaxSpan[minMax + 'Span'] = numberUtil.linearMap( + valueSpan, axisProxy._dataExtent, [0, 100], true + ); + } + } + }); + } + + module.exports = AxisProxy; + + + +/***/ }, +/* 368 */ +/***/ function(module, exports, __webpack_require__) { + + + + var ComponentView = __webpack_require__(79); + + module.exports = ComponentView.extend({ + + type: 'dataZoom', + + render: function (dataZoomModel, ecModel, api, payload) { + this.dataZoomModel = dataZoomModel; + this.ecModel = ecModel; + this.api = api; + }, + + /** + * Find the first target coordinate system. + * + * @protected + * @return {Object} { + * grid: [ + * {model: coord0, axisModels: [axis1, axis3], coordIndex: 1}, + * {model: coord1, axisModels: [axis0, axis2], coordIndex: 0}, + * ... + * ], // cartesians must not be null/undefined. + * polar: [ + * {model: coord0, axisModels: [axis4], coordIndex: 0}, + * ... + * ], // polars must not be null/undefined. + * singleAxis: [ + * {model: coord0, axisModels: [], coordIndex: 0} + * ] + */ + getTargetCoordInfo: function () { + var dataZoomModel = this.dataZoomModel; + var ecModel = this.ecModel; + var coordSysLists = {}; + + dataZoomModel.eachTargetAxis(function (dimNames, axisIndex) { + var axisModel = ecModel.getComponent(dimNames.axis, axisIndex); + if (axisModel) { + var coordModel = axisModel.getCoordSysModel(); + coordModel && save( + coordModel, + axisModel, + coordSysLists[coordModel.mainType] || (coordSysLists[coordModel.mainType] = []), + coordModel.componentIndex + ); + } + }, this); + + function save(coordModel, axisModel, store, coordIndex) { + var item; + for (var i = 0; i < store.length; i++) { + if (store[i].model === coordModel) { + item = store[i]; + break; + } + } + if (!item) { + store.push(item = { + model: coordModel, axisModels: [], coordIndex: coordIndex + }); + } + item.axisModels.push(axisModel); + } + + return coordSysLists; + } + + }); + + + +/***/ }, +/* 369 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * @file Data zoom model + */ + + + var DataZoomModel = __webpack_require__(365); + + var SliderZoomModel = DataZoomModel.extend({ + + type: 'dataZoom.slider', + + layoutMode: 'box', + + /** + * @protected + */ + defaultOption: { + show: true, + + // ph => placeholder. Using placehoder here because + // deault value can only be drived in view stage. + right: 'ph', // Default align to grid rect. + top: 'ph', // Default align to grid rect. + width: 'ph', // Default align to grid rect. + height: 'ph', // Default align to grid rect. + left: null, // Default align to grid rect. + bottom: null, // Default align to grid rect. + + backgroundColor: 'rgba(47,69,84,0)', // Background of slider zoom component. + // dataBackgroundColor: '#ddd', // Background coor of data shadow and border of box, + // highest priority, remain for compatibility of + // previous version, but not recommended any more. + dataBackground: { + lineStyle: { + color: '#2f4554', + width: 0.5, + opacity: 0.3 + }, + areaStyle: { + color: 'rgba(47,69,84,0.3)', + opacity: 0.3 + } + }, + borderColor: '#ddd', // border color of the box. For compatibility, + // if dataBackgroundColor is set, borderColor + // is ignored. + + fillerColor: 'rgba(167,183,204,0.4)', // Color of selected area. + // handleColor: 'rgba(89,170,216,0.95)', // Color of handle. + // 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', + 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', + // Percent of the slider height + handleSize: '100%', + + handleStyle: { + color: '#a7b7cc' + }, + + labelPrecision: null, + labelFormatter: null, + showDetail: true, + showDataShadow: 'auto', // Default auto decision. + realtime: true, + zoomLock: false, // Whether disable zoom. + textStyle: { + color: '#333' + } + } + + }); + + module.exports = SliderZoomModel; + + + +/***/ }, +/* 370 */ +/***/ function(module, exports, __webpack_require__) { + + + + var zrUtil = __webpack_require__(4); + var graphic = __webpack_require__(18); + var throttle = __webpack_require__(81); + var DataZoomView = __webpack_require__(368); + var Rect = graphic.Rect; + var numberUtil = __webpack_require__(7); + var linearMap = numberUtil.linearMap; + var layout = __webpack_require__(71); + var sliderMove = __webpack_require__(239); + var eventTool = __webpack_require__(88); + + var asc = numberUtil.asc; + var bind = zrUtil.bind; + // var mathMax = Math.max; + var each = zrUtil.each; + + // Constants + var DEFAULT_LOCATION_EDGE_GAP = 7; + var DEFAULT_FRAME_BORDER_WIDTH = 1; + var DEFAULT_FILLER_SIZE = 30; + var HORIZONTAL = 'horizontal'; + var VERTICAL = 'vertical'; + var LABEL_GAP = 5; + var SHOW_DATA_SHADOW_SERIES_TYPE = ['line', 'bar', 'candlestick', 'scatter']; + + var SliderZoomView = DataZoomView.extend({ + + type: 'dataZoom.slider', + + init: function (ecModel, api) { + + /** + * @private + * @type {Object} + */ + this._displayables = {}; + + /** + * @private + * @type {string} + */ + this._orient; + + /** + * [0, 100] + * @private + */ + this._range; + + /** + * [coord of the first handle, coord of the second handle] + * @private + */ + this._handleEnds; + + /** + * [length, thick] + * @private + * @type {Array.} + */ + this._size; + + /** + * @private + * @type {number} + */ + this._handleWidth; + + /** + * @private + * @type {number} + */ + this._handleHeight; + + /** + * @private + */ + this._location; + + /** + * @private + */ + this._dragging; + + /** + * @private + */ + this._dataShadowInfo; + + this.api = api; + }, + + /** + * @override + */ + render: function (dataZoomModel, ecModel, api, payload) { + SliderZoomView.superApply(this, 'render', arguments); + + throttle.createOrUpdate( + this, + '_dispatchZoomAction', + this.dataZoomModel.get('throttle'), + 'fixRate' + ); + + this._orient = dataZoomModel.get('orient'); + + if (this.dataZoomModel.get('show') === false) { + this.group.removeAll(); + return; + } + + // Notice: this._resetInterval() should not be executed when payload.type + // is 'dataZoom', origin this._range should be maintained, otherwise 'pan' + // or 'zoom' info will be missed because of 'throttle' of this.dispatchAction, + if (!payload || payload.type !== 'dataZoom' || payload.from !== this.uid) { + this._buildView(); + } + + this._updateView(); + }, + + /** + * @override + */ + remove: function () { + SliderZoomView.superApply(this, 'remove', arguments); + throttle.clear(this, '_dispatchZoomAction'); + }, + + /** + * @override + */ + dispose: function () { + SliderZoomView.superApply(this, 'dispose', arguments); + throttle.clear(this, '_dispatchZoomAction'); + }, + + _buildView: function () { + var thisGroup = this.group; + + thisGroup.removeAll(); + + this._resetLocation(); + this._resetInterval(); + + var barGroup = this._displayables.barGroup = new graphic.Group(); + + this._renderBackground(); + + this._renderHandle(); + + this._renderDataShadow(); + + thisGroup.add(barGroup); + + this._positionGroup(); + }, + + /** + * @private + */ + _resetLocation: function () { + var dataZoomModel = this.dataZoomModel; + var api = this.api; + + // If some of x/y/width/height are not specified, + // auto-adapt according to target grid. + var coordRect = this._findCoordRect(); + var ecSize = {width: api.getWidth(), height: api.getHeight()}; + // Default align by coordinate system rect. + var positionInfo = this._orient === HORIZONTAL + ? { + // Why using 'right', because right should be used in vertical, + // and it is better to be consistent for dealing with position param merge. + right: ecSize.width - coordRect.x - coordRect.width, + top: (ecSize.height - DEFAULT_FILLER_SIZE - DEFAULT_LOCATION_EDGE_GAP), + width: coordRect.width, + height: DEFAULT_FILLER_SIZE + } + : { // vertical + right: DEFAULT_LOCATION_EDGE_GAP, + top: coordRect.y, + width: DEFAULT_FILLER_SIZE, + height: coordRect.height + }; + + // Do not write back to option and replace value 'ph', because + // the 'ph' value should be recalculated when resize. + var layoutParams = layout.getLayoutParams(dataZoomModel.option); + + // Replace the placeholder value. + zrUtil.each(['right', 'top', 'width', 'height'], function (name) { + if (layoutParams[name] === 'ph') { + layoutParams[name] = positionInfo[name]; + } + }); + + var layoutRect = layout.getLayoutRect( + layoutParams, + ecSize, + dataZoomModel.padding + ); + + this._location = {x: layoutRect.x, y: layoutRect.y}; + this._size = [layoutRect.width, layoutRect.height]; + this._orient === VERTICAL && this._size.reverse(); + }, + + /** + * @private + */ + _positionGroup: function () { + var thisGroup = this.group; + var location = this._location; + var orient = this._orient; + + // Just use the first axis to determine mapping. + var targetAxisModel = this.dataZoomModel.getFirstTargetAxisModel(); + var inverse = targetAxisModel && targetAxisModel.get('inverse'); + + var barGroup = this._displayables.barGroup; + var otherAxisInverse = (this._dataShadowInfo || {}).otherAxisInverse; + + // Transform barGroup. + barGroup.attr( + (orient === HORIZONTAL && !inverse) + ? {scale: otherAxisInverse ? [1, 1] : [1, -1]} + : (orient === HORIZONTAL && inverse) + ? {scale: otherAxisInverse ? [-1, 1] : [-1, -1]} + : (orient === VERTICAL && !inverse) + ? {scale: otherAxisInverse ? [1, -1] : [1, 1], rotation: Math.PI / 2} + // Dont use Math.PI, considering shadow direction. + : {scale: otherAxisInverse ? [-1, -1] : [-1, 1], rotation: Math.PI / 2} + ); + + // Position barGroup + var rect = thisGroup.getBoundingRect([barGroup]); + thisGroup.attr('position', [location.x - rect.x, location.y - rect.y]); + }, + + /** + * @private + */ + _getViewExtent: function () { + return [0, this._size[0]]; + }, + + _renderBackground: function () { + var dataZoomModel = this.dataZoomModel; + var size = this._size; + var barGroup = this._displayables.barGroup; + + barGroup.add(new Rect({ + silent: true, + shape: { + x: 0, y: 0, width: size[0], height: size[1] + }, + style: { + fill: dataZoomModel.get('backgroundColor') + }, + z2: -40 + })); + + // Click panel, over shadow, below handles. + barGroup.add(new Rect({ + shape: { + x: 0, y: 0, width: size[0], height: size[1] + }, + style: { + fill: 'transparent' + }, + z2: 0, + onclick: zrUtil.bind(this._onClickPanelClick, this) + })); + }, + + _renderDataShadow: function () { + var info = this._dataShadowInfo = this._prepareDataShadowInfo(); + + if (!info) { + return; + } + + var size = this._size; + var seriesModel = info.series; + var data = seriesModel.getRawData(); + var otherDim = seriesModel.getShadowDim + ? seriesModel.getShadowDim() // @see candlestick + : info.otherDim; + + if (otherDim == null) { + return; + } + + var otherDataExtent = data.getDataExtent(otherDim); + // Nice extent. + var otherOffset = (otherDataExtent[1] - otherDataExtent[0]) * 0.3; + otherDataExtent = [ + otherDataExtent[0] - otherOffset, + otherDataExtent[1] + otherOffset + ]; + var otherShadowExtent = [0, size[1]]; + + var thisShadowExtent = [0, size[0]]; + + var areaPoints = [[size[0], 0], [0, 0]]; + var linePoints = []; + var step = thisShadowExtent[1] / (data.count() - 1); + var thisCoord = 0; + + // Optimize for large data shadow + var stride = Math.round(data.count() / size[0]); + var lastIsEmpty; + data.each([otherDim], function (value, index) { + if (stride > 0 && (index % stride)) { + thisCoord += step; + return; + } + + // FIXME + // Should consider axis.min/axis.max when drawing dataShadow. + + // FIXME + // 应该使用统一的空判断?还是在list里进行空判断? + var isEmpty = value == null || isNaN(value) || value === ''; + // See #4235. + var otherCoord = isEmpty + ? 0 : linearMap(value, otherDataExtent, otherShadowExtent, true); + + // Attempt to draw data shadow precisely when there are empty value. + if (isEmpty && !lastIsEmpty && index) { + areaPoints.push([areaPoints[areaPoints.length - 1][0], 0]); + linePoints.push([linePoints[linePoints.length - 1][0], 0]); + } + else if (!isEmpty && lastIsEmpty) { + areaPoints.push([thisCoord, 0]); + linePoints.push([thisCoord, 0]); + } + + areaPoints.push([thisCoord, otherCoord]); + linePoints.push([thisCoord, otherCoord]); + + thisCoord += step; + lastIsEmpty = isEmpty; + }); + + var dataZoomModel = this.dataZoomModel; + // var dataBackgroundModel = dataZoomModel.getModel('dataBackground'); + this._displayables.barGroup.add(new graphic.Polygon({ + shape: {points: areaPoints}, + style: zrUtil.defaults( + {fill: dataZoomModel.get('dataBackgroundColor')}, + dataZoomModel.getModel('dataBackground.areaStyle').getAreaStyle() + ), + silent: true, + z2: -20 + })); + this._displayables.barGroup.add(new graphic.Polyline({ + shape: {points: linePoints}, + style: dataZoomModel.getModel('dataBackground.lineStyle').getLineStyle(), + silent: true, + z2: -19 + })); + }, + + _prepareDataShadowInfo: function () { + var dataZoomModel = this.dataZoomModel; + var showDataShadow = dataZoomModel.get('showDataShadow'); + + if (showDataShadow === false) { + return; + } + + // Find a representative series. + var result; + var ecModel = this.ecModel; + + dataZoomModel.eachTargetAxis(function (dimNames, axisIndex) { + var seriesModels = dataZoomModel + .getAxisProxy(dimNames.name, axisIndex) + .getTargetSeriesModels(); + + zrUtil.each(seriesModels, function (seriesModel) { + if (result) { + return; + } + + if (showDataShadow !== true && zrUtil.indexOf( + SHOW_DATA_SHADOW_SERIES_TYPE, seriesModel.get('type') + ) < 0 + ) { + return; + } + + var thisAxis = ecModel.getComponent(dimNames.axis, axisIndex).axis; + var otherDim = getOtherDim(dimNames.name); + var otherAxisInverse; + var coordSys = seriesModel.coordinateSystem; + if (otherDim != null && coordSys.getOtherAxis) { + otherAxisInverse = coordSys.getOtherAxis(thisAxis).inverse; + } + + result = { + thisAxis: thisAxis, + series: seriesModel, + thisDim: dimNames.name, + otherDim: otherDim, + otherAxisInverse: otherAxisInverse + }; + + }, this); + + }, this); + + return result; + }, + + _renderHandle: function () { + var displaybles = this._displayables; + var handles = displaybles.handles = []; + var handleLabels = displaybles.handleLabels = []; + var barGroup = this._displayables.barGroup; + var size = this._size; + var dataZoomModel = this.dataZoomModel; + + barGroup.add(displaybles.filler = new Rect({ + draggable: true, + cursor: 'move', + drift: bind(this._onDragMove, this, 'all'), + onmousemove: function (e) { + // Fot mobile devicem, prevent screen slider on the button. + eventTool.stop(e.event); + }, + ondragstart: bind(this._showDataInfo, this, true), + ondragend: bind(this._onDragEnd, this), + onmouseover: bind(this._showDataInfo, this, true), + onmouseout: bind(this._showDataInfo, this, false), + style: { + fill: dataZoomModel.get('fillerColor'), + textPosition : 'inside' + } + })); + + // Frame border. + barGroup.add(new Rect(graphic.subPixelOptimizeRect({ + silent: true, + shape: { + x: 0, + y: 0, + width: size[0], + height: size[1] + }, + style: { + stroke: dataZoomModel.get('dataBackgroundColor') + || dataZoomModel.get('borderColor'), + lineWidth: DEFAULT_FRAME_BORDER_WIDTH, + fill: 'rgba(0,0,0,0)' + } + }))); + + var iconStr = dataZoomModel.get('handleIcon'); + each([0, 1], function (handleIndex) { + var iconOpt = { + style: { + strokeNoScale: true + }, + rectHover: true, + cursor: this._orient === 'vertical' ? 'ns-resize' : 'ew-resize', + draggable: true, + drift: bind(this._onDragMove, this, handleIndex), + onmousemove: function (e) { + // Fot mobile devicem, prevent screen slider on the button. + eventTool.stop(e.event); + }, + ondragend: bind(this._onDragEnd, this), + onmouseover: bind(this._showDataInfo, this, true), + onmouseout: bind(this._showDataInfo, this, false) + }; + var iconStyle = {x: -1, y: 0, width: 2, height: 2}; + + var path = iconStr.indexOf('image://') === 0 + ? ( + iconStyle.image = iconStr.slice(8), + iconOpt.style = iconStyle, + new graphic.Image(iconOpt) + ) + : graphic.makePath( + iconStr.replace('path://', ''), + iconOpt, + iconStyle, + 'center' + ); + + var bRect = path.getBoundingRect(); + this._handleHeight = numberUtil.parsePercent(dataZoomModel.get('handleSize'), this._size[1]); + this._handleWidth = bRect.width / bRect.height * this._handleHeight; + + path.setStyle(dataZoomModel.getModel('handleStyle').getItemStyle()); + var handleColor = dataZoomModel.get('handleColor'); + // Compatitable with previous version + if (handleColor != null) { + path.style.fill = handleColor; + } + + barGroup.add(handles[handleIndex] = path); + + var textStyleModel = dataZoomModel.textStyleModel; + + this.group.add( + handleLabels[handleIndex] = new graphic.Text({ + silent: true, + invisible: true, + style: { + x: 0, y: 0, text: '', + textVerticalAlign: 'middle', + textAlign: 'center', + fill: textStyleModel.getTextColor(), + textFont: textStyleModel.getFont() + }, + z2: 10 + })); + + }, this); + }, + + /** + * @private + */ + _resetInterval: function () { + var range = this._range = this.dataZoomModel.getPercentRange(); + var viewExtent = this._getViewExtent(); + + this._handleEnds = [ + linearMap(range[0], [0, 100], viewExtent, true), + linearMap(range[1], [0, 100], viewExtent, true) + ]; + }, + + /** + * @private + * @param {(number|string)} handleIndex 0 or 1 or 'all' + * @param {number} delta + */ + _updateInterval: function (handleIndex, delta) { + var dataZoomModel = this.dataZoomModel; + var handleEnds = this._handleEnds; + var viewExtend = this._getViewExtent(); + var minMaxSpan = dataZoomModel.findRepresentativeAxisProxy().getMinMaxSpan(); + var percentExtent = [0, 100]; + + 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 + ); + + this._range = asc([ + linearMap(handleEnds[0], viewExtend, percentExtent, true), + linearMap(handleEnds[1], viewExtend, percentExtent, true) + ]); + }, + + /** + * @private + */ + _updateView: function (nonRealtime) { + var displaybles = this._displayables; + var handleEnds = this._handleEnds; + var handleInterval = asc(handleEnds.slice()); + var size = this._size; + + each([0, 1], function (handleIndex) { + // Handles + var handle = displaybles.handles[handleIndex]; + var handleHeight = this._handleHeight; + handle.attr({ + scale: [handleHeight / 2, handleHeight / 2], + position: [handleEnds[handleIndex], size[1] / 2 - handleHeight / 2] + }); + }, this); + + // Filler + displaybles.filler.setShape({ + x: handleInterval[0], + y: 0, + width: handleInterval[1] - handleInterval[0], + height: size[1] + }); + + this._updateDataInfo(nonRealtime); + }, + + /** + * @private + */ + _updateDataInfo: function (nonRealtime) { + var dataZoomModel = this.dataZoomModel; + var displaybles = this._displayables; + var handleLabels = displaybles.handleLabels; + var orient = this._orient; + var labelTexts = ['', '']; + + // FIXME + // date型,支持formatter,autoformatter(ec2 date.getAutoFormatter) + if (dataZoomModel.get('showDetail')) { + var axisProxy = dataZoomModel.findRepresentativeAxisProxy(); + + if (axisProxy) { + var axis = axisProxy.getAxisModel().axis; + var range = this._range; + + var dataInterval = nonRealtime + // See #4434, data and axis are not processed and reset yet in non-realtime mode. + ? axisProxy.calculateDataWindow({ + start: range[0], end: range[1] + }).valueWindow + : axisProxy.getDataValueWindow(); + + labelTexts = [ + this._formatLabel(dataInterval[0], axis), + this._formatLabel(dataInterval[1], axis) + ]; + } + } + + var orderedHandleEnds = asc(this._handleEnds.slice()); + + setLabel.call(this, 0); + setLabel.call(this, 1); + + function setLabel(handleIndex) { + // Label + // Text should not transform by barGroup. + // Ignore handlers transform + var barTransform = graphic.getTransform( + displaybles.handles[handleIndex].parent, this.group + ); + var direction = graphic.transformDirection( + handleIndex === 0 ? 'right' : 'left', barTransform + ); + var offset = this._handleWidth / 2 + LABEL_GAP; + var textPoint = graphic.applyTransform( + [ + orderedHandleEnds[handleIndex] + (handleIndex === 0 ? -offset : offset), + this._size[1] / 2 + ], + barTransform + ); + handleLabels[handleIndex].setStyle({ + x: textPoint[0], + y: textPoint[1], + textVerticalAlign: orient === HORIZONTAL ? 'middle' : direction, + textAlign: orient === HORIZONTAL ? direction : 'center', + text: labelTexts[handleIndex] + }); + } + }, + + /** + * @private + */ + _formatLabel: function (value, axis) { + var dataZoomModel = this.dataZoomModel; + var labelFormatter = dataZoomModel.get('labelFormatter'); + + var labelPrecision = dataZoomModel.get('labelPrecision'); + if (labelPrecision == null || labelPrecision === 'auto') { + labelPrecision = axis.getPixelPrecision(); + } + + var valueStr = (value == null || isNaN(value)) + ? '' + // FIXME Glue code + : (axis.type === 'category' || axis.type === 'time') + ? axis.scale.getLabel(Math.round(value)) + // param of toFixed should less then 20. + : value.toFixed(Math.min(labelPrecision, 20)); + + return zrUtil.isFunction(labelFormatter) + ? labelFormatter(value, valueStr) + : zrUtil.isString(labelFormatter) + ? labelFormatter.replace('{value}', valueStr) + : valueStr; + }, + + /** + * @private + * @param {boolean} showOrHide true: show, false: hide + */ + _showDataInfo: function (showOrHide) { + // Always show when drgging. + showOrHide = this._dragging || showOrHide; + + var handleLabels = this._displayables.handleLabels; + handleLabels[0].attr('invisible', !showOrHide); + handleLabels[1].attr('invisible', !showOrHide); + }, + + _onDragMove: function (handleIndex, dx, dy) { + this._dragging = true; + + // Transform dx, dy to bar coordination. + var barTransform = this._displayables.barGroup.getLocalTransform(); + var vertex = graphic.applyTransform([dx, dy], barTransform, true); + + this._updateInterval(handleIndex, vertex[0]); + + var realtime = this.dataZoomModel.get('realtime'); + + this._updateView(!realtime); + + if (realtime) { + realtime && this._dispatchZoomAction(); + } + }, + + _onDragEnd: function () { + this._dragging = false; + this._showDataInfo(false); + this._dispatchZoomAction(); + }, + + _onClickPanelClick: function (e) { + var size = this._size; + var localPoint = this._displayables.barGroup.transformCoordToLocal(e.offsetX, e.offsetY); + + if (localPoint[0] < 0 || localPoint[0] > size[0] + || localPoint[1] < 0 || localPoint[1] > size[1] + ) { + return; + } + + var handleEnds = this._handleEnds; + var center = (handleEnds[0] + handleEnds[1]) / 2; + + this._updateInterval('all', localPoint[0] - center); + this._updateView(); + this._dispatchZoomAction(); + }, + + /** + * This action will be throttled. + * @private + */ + _dispatchZoomAction: function () { + var range = this._range; + + this.api.dispatchAction({ + type: 'dataZoom', + from: this.uid, + dataZoomId: this.dataZoomModel.id, + start: range[0], + end: range[1] + }); + }, + + /** + * @private + */ + _findCoordRect: function () { + // Find the grid coresponding to the first axis referred by dataZoom. + var rect; + each(this.getTargetCoordInfo(), function (coordInfoList) { + if (!rect && coordInfoList.length) { + var coordSys = coordInfoList[0].model.coordinateSystem; + rect = coordSys.getRect && coordSys.getRect(); + } + }); + if (!rect) { + var width = this.api.getWidth(); + var height = this.api.getHeight(); + rect = { + x: width * 0.2, + y: height * 0.2, + width: width * 0.6, + height: height * 0.6 + }; + } + + return rect; + } + + }); + + function getOtherDim(thisDim) { + // FIXME + // 这个逻辑和getOtherAxis里一致,但是写在这里是否不好 + var map = {x: 'y', y: 'x', radius: 'angle', angle: 'radius'}; + return map[thisDim]; + } + + module.exports = SliderZoomView; + + + +/***/ }, +/* 371 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * @file Data zoom model + */ + + + module.exports = __webpack_require__(365).extend({ + + type: 'dataZoom.inside', + + /** + * @protected + */ + defaultOption: { + disabled: false, // Whether disable this inside zoom. + zoomLock: false, // Whether disable zoom but only pan. + zoomOnMouseWheel: true, // Can be: true / false / 'shift' / 'ctrl' / 'alt'. + moveOnMouseMove: true, // Can be: true / false / 'shift' / 'ctrl' / 'alt'. + preventDefaultMouseMove: true + } + }); + + +/***/ }, +/* 372 */ +/***/ function(module, exports, __webpack_require__) { + + + + var DataZoomView = __webpack_require__(368); + var zrUtil = __webpack_require__(4); + var sliderMove = __webpack_require__(239); + var roams = __webpack_require__(373); + var bind = zrUtil.bind; + + var InsideZoomView = DataZoomView.extend({ + + type: 'dataZoom.inside', + + /** + * @override + */ + init: function (ecModel, api) { + /** + * 'throttle' is used in this.dispatchAction, so we save range + * to avoid missing some 'pan' info. + * @private + * @type {Array.} + */ + this._range; + }, + + /** + * @override + */ + render: function (dataZoomModel, ecModel, api, payload) { + InsideZoomView.superApply(this, 'render', arguments); + + // Notice: origin this._range should be maintained, and should not be re-fetched + // from dataZoomModel when payload.type is 'dataZoom', otherwise 'pan' or 'zoom' + // info will be missed because of 'throttle' of this.dispatchAction. + if (roams.shouldRecordRange(payload, dataZoomModel.id)) { + this._range = dataZoomModel.getPercentRange(); + } + + // Reset controllers. + zrUtil.each(this.getTargetCoordInfo(), function (coordInfoList, coordSysName) { + + var allCoordIds = zrUtil.map(coordInfoList, function (coordInfo) { + return roams.generateCoordId(coordInfo.model); + }); + + zrUtil.each(coordInfoList, function (coordInfo) { + var coordModel = coordInfo.model; + var dataZoomOption = dataZoomModel.option; + + roams.register( + api, + { + coordId: roams.generateCoordId(coordModel), + allCoordIds: allCoordIds, + containsPoint: function (e, x, y) { + return coordModel.coordinateSystem.containPoint([x, y]); + }, + dataZoomId: dataZoomModel.id, + throttleRate: dataZoomModel.get('throttle', true), + panGetRange: bind(this._onPan, this, coordInfo, coordSysName), + zoomGetRange: bind(this._onZoom, this, coordInfo, coordSysName), + zoomLock: dataZoomOption.zoomLock, + disabled: dataZoomOption.disabled, + roamControllerOpt: { + zoomOnMouseWheel: dataZoomOption.zoomOnMouseWheel, + moveOnMouseMove: dataZoomOption.moveOnMouseMove, + preventDefaultMouseMove: dataZoomOption.preventDefaultMouseMove + } + } + ); + }, this); + + }, this); + }, + + /** + * @override + */ + dispose: function () { + roams.unregister(this.api, this.dataZoomModel.id); + InsideZoomView.superApply(this, 'dispose', arguments); + this._range = null; + }, + + /** + * @private + */ + _onPan: function (coordInfo, coordSysName, controller, dx, dy, oldX, oldY, newX, newY) { + var range = this._range.slice(); + + // Calculate transform by the first axis. + var axisModel = coordInfo.axisModels[0]; + if (!axisModel) { + return; + } + + var directionInfo = getDirectionInfo[coordSysName]( + [oldX, oldY], [newX, newY], axisModel, controller, coordInfo + ); + + var percentDelta = directionInfo.signal + * (range[1] - range[0]) + * directionInfo.pixel / directionInfo.pixelLength; + + sliderMove(percentDelta, range, [0, 100], 'all'); + + return (this._range = range); + }, + + /** + * @private + */ + _onZoom: function (coordInfo, coordSysName, controller, scale, mouseX, mouseY) { + var range = this._range.slice(); + + // Calculate transform by the first axis. + var axisModel = coordInfo.axisModels[0]; + if (!axisModel) { + return; + } + + var directionInfo = getDirectionInfo[coordSysName]( + null, [mouseX, mouseY], axisModel, controller, coordInfo + ); + var percentPoint = ( + directionInfo.signal > 0 + ? (directionInfo.pixelStart + directionInfo.pixelLength - directionInfo.pixel) + : (directionInfo.pixel - directionInfo.pixelStart) + ) / directionInfo.pixelLength * (range[1] - range[0]) + range[0]; + + scale = Math.max(1 / scale, 0); + range[0] = (range[0] - percentPoint) * scale + percentPoint; + range[1] = (range[1] - percentPoint) * scale + percentPoint; + + // Restrict range. + var minMaxSpan = this.dataZoomModel.findRepresentativeAxisProxy().getMinMaxSpan(); + sliderMove(0, range, [0, 100], 0, minMaxSpan.minSpan, minMaxSpan.maxSpan); + + return (this._range = range); + } + + }); + + var getDirectionInfo = { + + grid: function (oldPoint, newPoint, axisModel, controller, coordInfo) { + var axis = axisModel.axis; + var ret = {}; + var rect = coordInfo.model.coordinateSystem.getRect(); + oldPoint = oldPoint || [0, 0]; + + if (axis.dim === 'x') { + ret.pixel = newPoint[0] - oldPoint[0]; + ret.pixelLength = rect.width; + ret.pixelStart = rect.x; + ret.signal = axis.inverse ? 1 : -1; + } + else { // axis.dim === 'y' + ret.pixel = newPoint[1] - oldPoint[1]; + ret.pixelLength = rect.height; + ret.pixelStart = rect.y; + ret.signal = axis.inverse ? -1 : 1; + } + + return ret; + }, + + polar: function (oldPoint, newPoint, axisModel, controller, coordInfo) { + var axis = axisModel.axis; + var ret = {}; + var polar = coordInfo.model.coordinateSystem; + var radiusExtent = polar.getRadiusAxis().getExtent(); + var angleExtent = polar.getAngleAxis().getExtent(); + + oldPoint = oldPoint ? polar.pointToCoord(oldPoint) : [0, 0]; + newPoint = polar.pointToCoord(newPoint); + + if (axisModel.mainType === 'radiusAxis') { + ret.pixel = newPoint[0] - oldPoint[0]; + // ret.pixelLength = Math.abs(radiusExtent[1] - radiusExtent[0]); + // ret.pixelStart = Math.min(radiusExtent[0], radiusExtent[1]); + ret.pixelLength = radiusExtent[1] - radiusExtent[0]; + ret.pixelStart = radiusExtent[0]; + ret.signal = axis.inverse ? 1 : -1; + } + else { // 'angleAxis' + ret.pixel = newPoint[1] - oldPoint[1]; + // ret.pixelLength = Math.abs(angleExtent[1] - angleExtent[0]); + // ret.pixelStart = Math.min(angleExtent[0], angleExtent[1]); + ret.pixelLength = angleExtent[1] - angleExtent[0]; + ret.pixelStart = angleExtent[0]; + ret.signal = axis.inverse ? -1 : 1; + } + + return ret; + }, + + singleAxis: function (oldPoint, newPoint, axisModel, controller, coordInfo) { + var axis = axisModel.axis; + var rect = coordInfo.model.coordinateSystem.getRect(); + var ret = {}; + + oldPoint = oldPoint || [0, 0]; + + if (axis.orient === 'horizontal') { + ret.pixel = newPoint[0] - oldPoint[0]; + ret.pixelLength = rect.width; + ret.pixelStart = rect.x; + ret.signal = axis.inverse ? 1 : -1; + } + else { // 'vertical' + ret.pixel = newPoint[1] - oldPoint[1]; + ret.pixelLength = rect.height; + ret.pixelStart = rect.y; + ret.signal = axis.inverse ? -1 : 1; + } + + return ret; + } + }; + + module.exports = InsideZoomView; + + +/***/ }, +/* 373 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * @file Roam controller manager. + */ + + + // Only create one roam controller for each coordinate system. + // one roam controller might be refered by two inside data zoom + // components (for example, one for x and one for y). When user + // pan or zoom, only dispatch one action for those data zoom + // components. + + var zrUtil = __webpack_require__(4); + var RoamController = __webpack_require__(183); + var throttle = __webpack_require__(81); + var curry = zrUtil.curry; + + var ATTR = '\0_ec_dataZoom_roams'; + + var roams = { + + /** + * @public + * @param {module:echarts/ExtensionAPI} api + * @param {Object} dataZoomInfo + * @param {string} dataZoomInfo.coordId + * @param {Function} dataZoomInfo.containsPoint + * @param {Array.} dataZoomInfo.allCoordIds + * @param {string} dataZoomInfo.dataZoomId + * @param {number} dataZoomInfo.throttleRate + * @param {Function} dataZoomInfo.panGetRange + * @param {Function} dataZoomInfo.zoomGetRange + * @param {boolean} [dataZoomInfo.zoomLock] + * @param {boolean} [dataZoomInfo.disabled] + */ + register: function (api, dataZoomInfo) { + var store = giveStore(api); + var theDataZoomId = dataZoomInfo.dataZoomId; + var theCoordId = dataZoomInfo.coordId; + + // Do clean when a dataZoom changes its target coordnate system. + // Avoid memory leak, dispose all not-used-registered. + zrUtil.each(store, function (record, coordId) { + var dataZoomInfos = record.dataZoomInfos; + if (dataZoomInfos[theDataZoomId] + && zrUtil.indexOf(dataZoomInfo.allCoordIds, theCoordId) < 0 + ) { + delete dataZoomInfos[theDataZoomId]; + record.count--; + } + }); + + cleanStore(store); + + var record = store[theCoordId]; + // Create if needed. + if (!record) { + record = store[theCoordId] = { + coordId: theCoordId, + dataZoomInfos: {}, + count: 0 + }; + record.controller = createController(api, record); + record.dispatchAction = zrUtil.curry(dispatchAction, api); + } + + // Update reference of dataZoom. + !(record.dataZoomInfos[theDataZoomId]) && record.count++; + record.dataZoomInfos[theDataZoomId] = dataZoomInfo; + + var controllerParams = mergeControllerParams(record.dataZoomInfos); + record.controller.enable(controllerParams.controlType, controllerParams.opt); + + // Consider resize, area should be always updated. + record.controller.setPointerChecker(dataZoomInfo.containsPoint); + + // Update throttle. + throttle.createOrUpdate( + record, + 'dispatchAction', + dataZoomInfo.throttleRate, + 'fixRate' + ); + }, + + /** + * @public + * @param {module:echarts/ExtensionAPI} api + * @param {string} dataZoomId + */ + unregister: function (api, dataZoomId) { + var store = giveStore(api); + + zrUtil.each(store, function (record) { + record.controller.dispose(); + var dataZoomInfos = record.dataZoomInfos; + if (dataZoomInfos[dataZoomId]) { + delete dataZoomInfos[dataZoomId]; + record.count--; + } + }); + + cleanStore(store); + }, + + /** + * @public + */ + shouldRecordRange: function (payload, dataZoomId) { + if (payload && payload.type === 'dataZoom' && payload.batch) { + for (var i = 0, len = payload.batch.length; i < len; i++) { + if (payload.batch[i].dataZoomId === dataZoomId) { + return false; + } + } + } + return true; + }, + + /** + * @public + */ + generateCoordId: function (coordModel) { + return coordModel.type + '\0_' + coordModel.id; + } + }; + + /** + * Key: coordId, value: {dataZoomInfos: [], count, controller} + * @type {Array.} + */ + function giveStore(api) { + // Mount store on zrender instance, so that we do not + // need to worry about dispose. + var zr = api.getZr(); + return zr[ATTR] || (zr[ATTR] = {}); + } + + function createController(api, newRecord) { + var controller = new RoamController(api.getZr()); + controller.on('pan', curry(onPan, newRecord)); + controller.on('zoom', curry(onZoom, newRecord)); + + return controller; + } + + function cleanStore(store) { + zrUtil.each(store, function (record, coordId) { + if (!record.count) { + record.controller.dispose(); + delete store[coordId]; + } + }); + } + + function onPan(record, dx, dy, oldX, oldY, newX, newY) { + wrapAndDispatch(record, function (info) { + return info.panGetRange(record.controller, dx, dy, oldX, oldY, newX, newY); + }); + } + + function onZoom(record, scale, mouseX, mouseY) { + wrapAndDispatch(record, function (info) { + return info.zoomGetRange(record.controller, scale, mouseX, mouseY); + }); + } + + function wrapAndDispatch(record, getRange) { + var batch = []; + + zrUtil.each(record.dataZoomInfos, function (info) { + var range = getRange(info); + !info.disabled && range && batch.push({ + dataZoomId: info.dataZoomId, + start: range[0], + end: range[1] + }); + }); + + record.dispatchAction(batch); + } + + /** + * This action will be throttled. + */ + function dispatchAction(api, batch) { + api.dispatchAction({ + type: 'dataZoom', + batch: batch + }); + } + + /** + * Merge roamController settings when multiple dataZooms share one roamController. + */ + function mergeControllerParams(dataZoomInfos) { + var controlType; + var opt = {}; + var typePriority = { + 'true': 2, + 'move': 1, + 'false': 0, + 'undefined': -1 + }; + zrUtil.each(dataZoomInfos, function (dataZoomInfo) { + var oneType = dataZoomInfo.disabled ? false : dataZoomInfo.zoomLock ? 'move' : true; + typePriority[oneType] > typePriority[controlType] && (controlType = oneType); + // Do not support that different 'shift'/'ctrl'/'alt' setting used in one coord sys. + zrUtil.extend(opt, dataZoomInfo.roamControllerOpt); + }); + + return { + controlType: controlType, + opt: opt + }; + } + + module.exports = roams; + + + +/***/ }, +/* 374 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * @file Data zoom processor + */ + + + var echarts = __webpack_require__(1); + + echarts.registerProcessor(function (ecModel, api) { + + ecModel.eachComponent('dataZoom', function (dataZoomModel) { + // We calculate window and reset axis here but not in model + // init stage and not after action dispatch handler, because + // reset should be called after seriesData.restoreData. + dataZoomModel.eachTargetAxis(resetSingleAxis); + + // Caution: data zoom filtering is order sensitive when using + // percent range and no min/max/scale set on axis. + // For example, we have dataZoom definition: + // [ + // {xAxisIndex: 0, start: 30, end: 70}, + // {yAxisIndex: 0, start: 20, end: 80} + // ] + // In this case, [20, 80] of y-dataZoom should be based on data + // that have filtered by x-dataZoom using range of [30, 70], + // but should not be based on full raw data. Thus sliding + // x-dataZoom will change both ranges of xAxis and yAxis, + // while sliding y-dataZoom will only change the range of yAxis. + // So we should filter x-axis after reset x-axis immediately, + // and then reset y-axis and filter y-axis. + dataZoomModel.eachTargetAxis(filterSingleAxis); + }); + + ecModel.eachComponent('dataZoom', function (dataZoomModel) { + // Fullfill all of the range props so that user + // is able to get them from chart.getOption(). + var axisProxy = dataZoomModel.findRepresentativeAxisProxy(); + var percentRange = axisProxy.getDataPercentWindow(); + var valueRange = axisProxy.getDataValueWindow(); + + dataZoomModel.setRawRange({ + start: percentRange[0], + end: percentRange[1], + startValue: valueRange[0], + endValue: valueRange[1] + }, true); + }); + }); + + function resetSingleAxis(dimNames, axisIndex, dataZoomModel) { + dataZoomModel.getAxisProxy(dimNames.name, axisIndex).reset(dataZoomModel); + } + + function filterSingleAxis(dimNames, axisIndex, dataZoomModel) { + dataZoomModel.getAxisProxy(dimNames.name, axisIndex).filterData(dataZoomModel); + } + + + + +/***/ }, +/* 375 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * @file Data zoom action + */ + + + var zrUtil = __webpack_require__(4); + var helper = __webpack_require__(366); + var echarts = __webpack_require__(1); + + + echarts.registerAction('dataZoom', function (payload, ecModel) { + + var linkedNodesFinder = helper.createLinkedNodesFinder( + zrUtil.bind(ecModel.eachComponent, ecModel, 'dataZoom'), + helper.eachAxisDim, + function (model, dimNames) { + return model.get(dimNames.axisIndex); + } + ); + + var effectedModels = []; + + ecModel.eachComponent( + {mainType: 'dataZoom', query: payload}, + function (model, index) { + effectedModels.push.apply( + effectedModels, linkedNodesFinder(model).nodes + ); + } + ); + + zrUtil.each(effectedModels, function (dataZoomModel, index) { + dataZoomModel.setRawRange({ + start: payload.start, + end: payload.end, + startValue: payload.startValue, + endValue: payload.endValue + }); + }); + + }); + + + +/***/ }, +/* 376 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * visualMap component entry + */ + + + __webpack_require__(377); + __webpack_require__(388); + + + +/***/ }, +/* 377 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * DataZoom component entry + */ + + + __webpack_require__(1).registerPreprocessor( + __webpack_require__(378) + ); + + __webpack_require__(379); + __webpack_require__(380); + __webpack_require__(381); + __webpack_require__(384); + __webpack_require__(387); + + + +/***/ }, +/* 378 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * @file VisualMap preprocessor + */ + + + var zrUtil = __webpack_require__(4); + var each = zrUtil.each; + + module.exports = function (option) { + var visualMap = option && option.visualMap; + + if (!zrUtil.isArray(visualMap)) { + visualMap = visualMap ? [visualMap] : []; + } + + each(visualMap, function (opt) { + if (!opt) { + return; + } + + // rename splitList to pieces + if (has(opt, 'splitList') && !has(opt, 'pieces')) { + opt.pieces = opt.splitList; + delete opt.splitList; + } + + var pieces = opt.pieces; + if (pieces && zrUtil.isArray(pieces)) { + each(pieces, function (piece) { + if (zrUtil.isObject(piece)) { + if (has(piece, 'start') && !has(piece, 'min')) { + piece.min = piece.start; + } + if (has(piece, 'end') && !has(piece, 'max')) { + piece.max = piece.end; + } + } + }); + } + }); + }; + + function has(obj, name) { + return obj && obj.hasOwnProperty && obj.hasOwnProperty(name); + } + + + +/***/ }, +/* 379 */ +/***/ function(module, exports, __webpack_require__) { + + + + __webpack_require__(69).registerSubTypeDefaulter('visualMap', function (option) { + // Compatible with ec2, when splitNumber === 0, continuous visualMap will be used. + return ( + !option.categories + && ( + !( + option.pieces + ? option.pieces.length > 0 + : option.splitNumber > 0 + ) + || option.calculable + ) + ) + ? 'continuous' : 'piecewise'; + }); + + + +/***/ }, +/* 380 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * @file Data range visual coding. + */ + + + var echarts = __webpack_require__(1); + var visualSolution = __webpack_require__(350); + var VisualMapping = __webpack_require__(203); + var zrUtil = __webpack_require__(4); + + echarts.registerVisual(echarts.PRIORITY.VISUAL.COMPONENT, function (ecModel) { + ecModel.eachComponent('visualMap', function (visualMapModel) { + processSingleVisualMap(visualMapModel, ecModel); + }); + + prepareVisualMeta(ecModel); + }); + + function processSingleVisualMap(visualMapModel, ecModel) { + visualMapModel.eachTargetSeries(function (seriesModel) { + var data = seriesModel.getData(); + + visualSolution.applyVisual( + visualMapModel.stateList, + visualMapModel.targetVisuals, + data, + visualMapModel.getValueState, + visualMapModel, + visualMapModel.getDataDimension(data) + ); + }); + } + + // Only support color. + function prepareVisualMeta(ecModel) { + ecModel.eachSeries(function (seriesModel) { + var data = seriesModel.getData(); + var visualMetaList = []; + + ecModel.eachComponent('visualMap', function (visualMapModel) { + if (visualMapModel.isTargetSeries(seriesModel)) { + var visualMeta = visualMapModel.getVisualMeta( + zrUtil.bind(getColorVisual, null, seriesModel, visualMapModel) + ) || {stops: [], outerColors: []}; + visualMeta.dimension = visualMapModel.getDataDimension(data); + visualMetaList.push(visualMeta); + } + }); + + // console.log(JSON.stringify(visualMetaList.map(a => a.stops))); + seriesModel.getData().setVisual('visualMeta', visualMetaList); + }); + } + + // FIXME + // performance and export for heatmap? + // value can be Infinity or -Infinity + function getColorVisual(seriesModel, visualMapModel, value, valueState) { + var mappings = visualMapModel.targetVisuals[valueState]; + var visualTypes = VisualMapping.prepareVisualTypes(mappings); + var resultVisual = { + color: seriesModel.getData().getVisual('color') // default color. + }; + + for (var i = 0, len = visualTypes.length; i < len; i++) { + var type = visualTypes[i]; + var mapping = mappings[ + type === 'opacity' ? '__alphaForOpacity' : type + ]; + mapping && mapping.applyVisual(value, getVisual, setVisual); + } + + return resultVisual.color; + + function getVisual(key) { + return resultVisual[key]; + } + + function setVisual(key, value) { + resultVisual[key] = value; + } + } + + + + +/***/ }, +/* 381 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * @file Data zoom model + */ + + + var VisualMapModel = __webpack_require__(382); + var zrUtil = __webpack_require__(4); + var numberUtil = __webpack_require__(7); + + // Constant + var DEFAULT_BAR_BOUND = [20, 140]; + + var ContinuousModel = VisualMapModel.extend({ + + type: 'visualMap.continuous', + + /** + * @protected + */ + defaultOption: { + align: 'auto', // 'auto', 'left', 'right', 'top', 'bottom' + calculable: false, // This prop effect default component type determine, + // See echarts/component/visualMap/typeDefaulter. + range: null, // selected range. In default case `range` is [min, max] + // and can auto change along with modification of min max, + // util use specifid a range. + realtime: true, // Whether realtime update. + itemHeight: null, // The length of the range control edge. + itemWidth: null, // The length of the other side. + hoverLink: true, // Enable hover highlight. + hoverLinkDataSize: null,// The size of hovered data. + hoverLinkOnHandle: true // Whether trigger hoverLink when hover handle. + }, + + /** + * @override + */ + optionUpdated: function (newOption, isInit) { + ContinuousModel.superApply(this, 'optionUpdated', arguments); + + this.resetTargetSeries(); + this.resetExtent(); + + this.resetVisual(function (mappingOption) { + mappingOption.mappingMethod = 'linear'; + mappingOption.dataExtent = this.getExtent(); + }); + + this._resetRange(); + }, + + /** + * @protected + * @override + */ + resetItemSize: function () { + ContinuousModel.superApply(this, 'resetItemSize', arguments); + + var itemSize = this.itemSize; + + this._orient === 'horizontal' && itemSize.reverse(); + + (itemSize[0] == null || isNaN(itemSize[0])) && (itemSize[0] = DEFAULT_BAR_BOUND[0]); + (itemSize[1] == null || isNaN(itemSize[1])) && (itemSize[1] = DEFAULT_BAR_BOUND[1]); + }, + + /** + * @private + */ + _resetRange: function () { + var dataExtent = this.getExtent(); + var range = this.option.range; + + if (!range || range.auto) { + // `range` should always be array (so we dont use other + // value like 'auto') for user-friend. (consider getOption). + dataExtent.auto = 1; + this.option.range = dataExtent; + } + else if (zrUtil.isArray(range)) { + if (range[0] > range[1]) { + range.reverse(); + } + range[0] = Math.max(range[0], dataExtent[0]); + range[1] = Math.min(range[1], dataExtent[1]); + } + }, + + /** + * @protected + * @override + */ + completeVisualOption: function () { + VisualMapModel.prototype.completeVisualOption.apply(this, arguments); + + zrUtil.each(this.stateList, function (state) { + var symbolSize = this.option.controller[state].symbolSize; + if (symbolSize && symbolSize[0] !== symbolSize[1]) { + symbolSize[0] = 0; // For good looking. + } + }, this); + }, + + /** + * @override + */ + setSelected: function (selected) { + this.option.range = selected.slice(); + this._resetRange(); + }, + + /** + * @public + */ + getSelected: function () { + var dataExtent = this.getExtent(); + + var dataInterval = numberUtil.asc( + (this.get('range') || []).slice() + ); + + // Clamp + dataInterval[0] > dataExtent[1] && (dataInterval[0] = dataExtent[1]); + dataInterval[1] > dataExtent[1] && (dataInterval[1] = dataExtent[1]); + dataInterval[0] < dataExtent[0] && (dataInterval[0] = dataExtent[0]); + dataInterval[1] < dataExtent[0] && (dataInterval[1] = dataExtent[0]); + + return dataInterval; + }, + + /** + * @override + */ + getValueState: function (value) { + var range = this.option.range; + var dataExtent = this.getExtent(); + + // When range[0] === dataExtent[0], any value larger than dataExtent[0] maps to 'inRange'. + // range[1] is processed likewise. + return ( + (range[0] <= dataExtent[0] || range[0] <= value) + && (range[1] >= dataExtent[1] || value <= range[1]) + ) ? 'inRange' : 'outOfRange'; + }, + + /** + * @params {Array.} range target value: range[0] <= value && value <= range[1] + * @return {Array.} [{seriesId, dataIndices: >}, ...] + */ + findTargetDataIndices: function (range) { + var result = []; + + this.eachTargetSeries(function (seriesModel) { + var dataIndices = []; + var data = seriesModel.getData(); + + data.each(this.getDataDimension(data), function (value, dataIndex) { + range[0] <= value && value <= range[1] && dataIndices.push(dataIndex); + }, true, this); + + result.push({seriesId: seriesModel.id, dataIndex: dataIndices}); + }, this); + + return result; + }, + + /** + * @implement + */ + getVisualMeta: function (getColorVisual) { + var oVals = getColorStopValues(this, 'outOfRange', this.getExtent()); + var iVals = getColorStopValues(this, 'inRange', this.option.range.slice()); + var stops = []; + + function setStop(value, valueState) { + stops.push({ + value: value, + color: getColorVisual(value, valueState) + }); + } + + // Format to: outOfRange -- inRange -- outOfRange. + var iIdx = 0; + var oIdx = 0; + var iLen = iVals.length; + var oLen = oVals.length; + + for (; oIdx < oLen && (!iVals.length || oVals[oIdx] <= iVals[0]); oIdx++) { + // If oVal[oIdx] === iVals[iIdx], oVal[oIdx] should be ignored. + if (oVals[oIdx] < iVals[iIdx]) { + setStop(oVals[oIdx], 'outOfRange'); + } + } + for (var first = 1; iIdx < iLen; iIdx++, first = 0) { + // If range is full, value beyond min, max will be clamped. + // make a singularity + first && stops.length && setStop(iVals[iIdx], 'outOfRange'); + setStop(iVals[iIdx], 'inRange'); + } + for (var first = 1; oIdx < oLen; oIdx++) { + if (!iVals.length || iVals[iVals.length - 1] < oVals[oIdx]) { + // make a singularity + if (first) { + stops.length && setStop(stops[stops.length - 1].value, 'outOfRange'); + first = 0; + } + setStop(oVals[oIdx], 'outOfRange'); + } + } + + var stopsLen = stops.length; + + return { + stops: stops, + outerColors: [ + stopsLen ? stops[0].color : 'transparent', + stopsLen ? stops[stopsLen - 1].color : 'transparent' + ] + }; + } + + }); + + function getColorStopValues(visualMapModel, valueState, dataExtent) { + if (dataExtent[0] === dataExtent[1]) { + return dataExtent.slice(); + } + + // When using colorHue mapping, it is not linear color any more. + // Moreover, canvas gradient seems not to be accurate linear. + // FIXME + // Should be arbitrary value 100? or based on pixel size? + var count = 200; + var step = (dataExtent[1] - dataExtent[0]) / count; + + var value = dataExtent[0]; + var stopValues = []; + for (var i = 0; i <= count && value < dataExtent[1]; i++) { + stopValues.push(value); + value += step; + } + stopValues.push(dataExtent[1]); + + return stopValues; + } + + module.exports = ContinuousModel; + + + +/***/ }, +/* 382 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * @file Controller visual map model + */ + + + var echarts = __webpack_require__(1); + var zrUtil = __webpack_require__(4); + var env = __webpack_require__(2); + var visualDefault = __webpack_require__(383); + var VisualMapping = __webpack_require__(203); + var visualSolution = __webpack_require__(350); + var mapVisual = VisualMapping.mapVisual; + var modelUtil = __webpack_require__(5); + var eachVisual = VisualMapping.eachVisual; + var numberUtil = __webpack_require__(7); + var isArray = zrUtil.isArray; + var each = zrUtil.each; + var asc = numberUtil.asc; + var linearMap = numberUtil.linearMap; + var noop = zrUtil.noop; + + var DEFAULT_COLOR = ['#f6efa6', '#d88273', '#bf444c']; + + var VisualMapModel = echarts.extendComponentModel({ + + type: 'visualMap', + + dependencies: ['series'], + + /** + * @readOnly + * @type {Array.} + */ + stateList: ['inRange', 'outOfRange'], + + /** + * @readOnly + * @type {Array.} + */ + replacableOptionKeys: [ + 'inRange', 'outOfRange', 'target', 'controller', 'color' + ], + + /** + * [lowerBound, upperBound] + * + * @readOnly + * @type {Array.} + */ + dataBound: [-Infinity, Infinity], + + /** + * @readOnly + * @type {string|Object} + */ + layoutMode: {type: 'box', ignoreSize: true}, + + /** + * @protected + */ + defaultOption: { + show: true, + + zlevel: 0, + z: 4, + + seriesIndex: null, // 所控制的series indices,默认所有有value的series. + + // set min: 0, max: 200, only for campatible with ec2. + // In fact min max should not have default value. + min: 0, // min value, must specified if pieces is not specified. + max: 200, // max value, must specified if pieces is not specified. + + dimension: null, + inRange: null, // 'color', 'colorHue', 'colorSaturation', 'colorLightness', 'colorAlpha', + // 'symbol', 'symbolSize' + outOfRange: null, // 'color', 'colorHue', 'colorSaturation', + // 'colorLightness', 'colorAlpha', + // 'symbol', 'symbolSize' + + left: 0, // 'center' ¦ 'left' ¦ 'right' ¦ {number} (px) + right: null, // The same as left. + top: null, // 'top' ¦ 'bottom' ¦ 'center' ¦ {number} (px) + bottom: 0, // The same as top. + + itemWidth: null, + itemHeight: null, + inverse: false, + orient: 'vertical', // 'horizontal' ¦ 'vertical' + + backgroundColor: 'rgba(0,0,0,0)', + borderColor: '#ccc', // 值域边框颜色 + contentColor: '#5793f3', + inactiveColor: '#aaa', + borderWidth: 0, // 值域边框线宽,单位px,默认为0(无边框) + padding: 5, // 值域内边距,单位px,默认各方向内边距为5, + // 接受数组分别设定上右下左边距,同css + textGap: 10, // + precision: 0, // 小数精度,默认为0,无小数点 + color: null, //颜色(deprecated,兼容ec2,顺序同pieces,不同于inRange/outOfRange) + + formatter: null, + text: null, // 文本,如['高', '低'],兼容ec2,text[0]对应高值,text[1]对应低值 + textStyle: { + color: '#333' // 值域文字颜色 + } + }, + + /** + * @protected + */ + init: function (option, parentModel, ecModel) { + + /** + * @private + * @type {Array.} + */ + this._dataExtent; + + /** + * @readOnly + */ + this.targetVisuals = {}; + + /** + * @readOnly + */ + this.controllerVisuals = {}; + + /** + * @readOnly + */ + this.textStyleModel; + + /** + * [width, height] + * @readOnly + * @type {Array.} + */ + this.itemSize; + + this.mergeDefaultAndTheme(option, ecModel); + }, + + /** + * @protected + */ + optionUpdated: function (newOption, isInit) { + var thisOption = this.option; + + // FIXME + // necessary? + // Disable realtime view update if canvas is not supported. + if (!env.canvasSupported) { + thisOption.realtime = false; + } + + !isInit && visualSolution.replaceVisualOption( + thisOption, newOption, this.replacableOptionKeys + ); + + this.textStyleModel = this.getModel('textStyle'); + + this.resetItemSize(); + + this.completeVisualOption(); + }, + + /** + * @protected + */ + resetVisual: function (supplementVisualOption) { + var stateList = this.stateList; + supplementVisualOption = zrUtil.bind(supplementVisualOption, this); + + this.controllerVisuals = visualSolution.createVisualMappings( + this.option.controller, stateList, supplementVisualOption + ); + this.targetVisuals = visualSolution.createVisualMappings( + this.option.target, stateList, supplementVisualOption + ); + }, + + + /** + * @protected + */ + resetTargetSeries: function () { + var thisOption = this.option; + var allSeriesIndex = thisOption.seriesIndex == null; + thisOption.seriesIndex = allSeriesIndex + ? [] : modelUtil.normalizeToArray(thisOption.seriesIndex); + + allSeriesIndex && this.ecModel.eachSeries(function (seriesModel, index) { + thisOption.seriesIndex.push(index); + }); + }, + + /** + * @public + */ + eachTargetSeries: function (callback, context) { + zrUtil.each(this.option.seriesIndex, function (seriesIndex) { + callback.call(context, this.ecModel.getSeriesByIndex(seriesIndex)); + }, this); + }, + + /** + * @pubilc + */ + isTargetSeries: function (seriesModel) { + var is = false; + this.eachTargetSeries(function (model) { + model === seriesModel && (is = true); + }); + return is; + }, + + /** + * @example + * this.formatValueText(someVal); // format single numeric value to text. + * this.formatValueText(someVal, true); // format single category value to text. + * this.formatValueText([min, max]); // format numeric min-max to text. + * this.formatValueText([this.dataBound[0], max]); // using data lower bound. + * this.formatValueText([min, this.dataBound[1]]); // using data upper bound. + * + * @param {number|Array.} value Real value, or this.dataBound[0 or 1]. + * @param {boolean} [isCategory=false] Only available when value is number. + * @param {Array.} edgeSymbols Open-close symbol when value is interval. + * @return {string} + * @protected + */ + formatValueText: function(value, isCategory, edgeSymbols) { + var option = this.option; + var precision = option.precision; + var dataBound = this.dataBound; + var formatter = option.formatter; + var isMinMax; + var textValue; + edgeSymbols = edgeSymbols || ['<', '>']; + + if (zrUtil.isArray(value)) { + value = value.slice(); + isMinMax = true; + } + + textValue = isCategory + ? value + : (isMinMax + ? [toFixed(value[0]), toFixed(value[1])] + : toFixed(value) + ); + + if (zrUtil.isString(formatter)) { + return formatter + .replace('{value}', isMinMax ? textValue[0] : textValue) + .replace('{value2}', isMinMax ? textValue[1] : textValue); + } + else if (zrUtil.isFunction(formatter)) { + return isMinMax + ? formatter(value[0], value[1]) + : formatter(value); + } + + if (isMinMax) { + if (value[0] === dataBound[0]) { + return edgeSymbols[0] + ' ' + textValue[1]; + } + else if (value[1] === dataBound[1]) { + return edgeSymbols[1] + ' ' + textValue[0]; + } + else { + return textValue[0] + ' - ' + textValue[1]; + } + } + else { // Format single value (includes category case). + return textValue; + } + + function toFixed(val) { + return val === dataBound[0] + ? 'min' + : val === dataBound[1] + ? 'max' + : (+val).toFixed(precision); + } + }, + + /** + * @protected + */ + resetExtent: function () { + var thisOption = this.option; + + // Can not calculate data extent by data here. + // Because series and data may be modified in processing stage. + // So we do not support the feature "auto min/max". + + var extent = asc([thisOption.min, thisOption.max]); + + this._dataExtent = extent; + }, + + /** + * @public + * @param {module:echarts/data/List} list + * @return {string} Concrete dimention. If return null/undefined, + * no dimension used. + */ + getDataDimension: function (list) { + var optDim = this.option.dimension; + return optDim != null + ? optDim : list.dimensions.length - 1; + }, + + /** + * @public + * @override + */ + getExtent: function () { + return this._dataExtent.slice(); + }, + + /** + * @protected + */ + completeVisualOption: function () { + var thisOption = this.option; + var base = {inRange: thisOption.inRange, outOfRange: thisOption.outOfRange}; + + var target = thisOption.target || (thisOption.target = {}); + var controller = thisOption.controller || (thisOption.controller = {}); + + zrUtil.merge(target, base); // Do not override + zrUtil.merge(controller, base); // Do not override + + var isCategory = this.isCategory(); + + completeSingle.call(this, target); + completeSingle.call(this, controller); + completeInactive.call(this, target, 'inRange', 'outOfRange'); + // completeInactive.call(this, target, 'outOfRange', 'inRange'); + completeController.call(this, controller); + + function completeSingle(base) { + // Compatible with ec2 dataRange.color. + // The mapping order of dataRange.color is: [high value, ..., low value] + // whereas inRange.color and outOfRange.color is [low value, ..., high value] + // Notice: ec2 has no inverse. + if (isArray(thisOption.color) + // If there has been inRange: {symbol: ...}, adding color is a mistake. + // So adding color only when no inRange defined. + && !base.inRange + ) { + base.inRange = {color: thisOption.color.slice().reverse()}; + } + + // Compatible with previous logic, always give a defautl color, otherwise + // simple config with no inRange and outOfRange will not work. + // Originally we use visualMap.color as the default color, but setOption at + // the second time the default color will be erased. So we change to use + // constant DEFAULT_COLOR. + // If user do not want the defualt color, set inRange: {color: null}. + base.inRange = base.inRange || {color: DEFAULT_COLOR}; + + // If using shortcut like: {inRange: 'symbol'}, complete default value. + each(this.stateList, function (state) { + var visualType = base[state]; + + if (zrUtil.isString(visualType)) { + var defa = visualDefault.get(visualType, 'active', isCategory); + if (defa) { + base[state] = {}; + base[state][visualType] = defa; + } + else { + // Mark as not specified. + delete base[state]; + } + } + }, this); + } + + function completeInactive(base, stateExist, stateAbsent) { + var optExist = base[stateExist]; + var optAbsent = base[stateAbsent]; + + if (optExist && !optAbsent) { + optAbsent = base[stateAbsent] = {}; + each(optExist, function (visualData, visualType) { + if (!VisualMapping.isValidType(visualType)) { + return; + } + + var defa = visualDefault.get(visualType, 'inactive', isCategory); + + if (defa != null) { + optAbsent[visualType] = defa; + + // Compatibable with ec2: + // Only inactive color to rgba(0,0,0,0) can not + // make label transparent, so use opacity also. + if (visualType === 'color' + && !optAbsent.hasOwnProperty('opacity') + && !optAbsent.hasOwnProperty('colorAlpha') + ) { + optAbsent.opacity = [0, 0]; + } + } + }); + } + } + + function completeController(controller) { + var symbolExists = (controller.inRange || {}).symbol + || (controller.outOfRange || {}).symbol; + var symbolSizeExists = (controller.inRange || {}).symbolSize + || (controller.outOfRange || {}).symbolSize; + var inactiveColor = this.get('inactiveColor'); + + each(this.stateList, function (state) { + + var itemSize = this.itemSize; + var visuals = controller[state]; + + // Set inactive color for controller if no other color + // attr (like colorAlpha) specified. + if (!visuals) { + visuals = controller[state] = { + color: isCategory ? inactiveColor : [inactiveColor] + }; + } + + // Consistent symbol and symbolSize if not specified. + if (visuals.symbol == null) { + visuals.symbol = symbolExists + && zrUtil.clone(symbolExists) + || (isCategory ? 'roundRect' : ['roundRect']); + } + if (visuals.symbolSize == null) { + visuals.symbolSize = symbolSizeExists + && zrUtil.clone(symbolSizeExists) + || (isCategory ? itemSize[0] : [itemSize[0], itemSize[0]]); + } + + // Filter square and none. + visuals.symbol = mapVisual(visuals.symbol, function (symbol) { + return (symbol === 'none' || symbol === 'square') ? 'roundRect' : symbol; + }); + + // Normalize symbolSize + var symbolSize = visuals.symbolSize; + + if (symbolSize != null) { + var max = -Infinity; + // symbolSize can be object when categories defined. + eachVisual(symbolSize, function (value) { + value > max && (max = value); + }); + visuals.symbolSize = mapVisual(symbolSize, function (value) { + return linearMap(value, [0, max], [0, itemSize[0]], true); + }); + } + + }, this); + } + }, + + /** + * @protected + */ + resetItemSize: function () { + this.itemSize = [ + parseFloat(this.get('itemWidth')), + parseFloat(this.get('itemHeight')) + ]; + }, + + /** + * @public + */ + isCategory: function () { + return !!this.option.categories; + }, + + /** + * @public + * @abstract + */ + setSelected: noop, + + /** + * @public + * @abstract + * @param {*|module:echarts/data/List} valueOrData + * @param {number} dataIndex + * @return {string} state See this.stateList + */ + getValueState: noop, + + /** + * FIXME + * Do not publish to thirt-part-dev temporarily + * util the interface is stable. (Should it return + * a function but not visual meta?) + * + * @pubilc + * @abstract + * @param {Function} getColorVisual + * params: value, valueState + * return: color + * @return {Object} visualMeta + * should includes {stops, outerColors} + * outerColor means [colorBeyondMinValue, colorBeyondMaxValue] + */ + getVisualMeta: noop + + }); + + module.exports = VisualMapModel; + + + +/***/ }, +/* 383 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * @file Visual mapping. + */ + + + var zrUtil = __webpack_require__(4); + + var visualDefault = { + + /** + * @public + */ + get: function (visualType, key, isCategory) { + var value = zrUtil.clone( + (defaultOption[visualType] || {})[key] + ); + + return isCategory + ? (zrUtil.isArray(value) ? value[value.length - 1] : value) + : value; + } + + }; + + var defaultOption = { + + color: { + active: ['#006edd', '#e0ffff'], + inactive: ['rgba(0,0,0,0)'] + }, + + colorHue: { + active: [0, 360], + inactive: [0, 0] + }, + + colorSaturation: { + active: [0.3, 1], + inactive: [0, 0] + }, + + colorLightness: { + active: [0.9, 0.5], + inactive: [0, 0] + }, + + colorAlpha: { + active: [0.3, 1], + inactive: [0, 0] + }, + + opacity: { + active: [0.3, 1], + inactive: [0, 0] + }, + + symbol: { + active: ['circle', 'roundRect', 'diamond'], + inactive: ['none'] + }, + + symbolSize: { + active: [10, 50], + inactive: [0, 0] + } + }; + + module.exports = visualDefault; + + + + +/***/ }, +/* 384 */ +/***/ function(module, exports, __webpack_require__) { + + + + var VisualMapView = __webpack_require__(385); + var graphic = __webpack_require__(18); + var zrUtil = __webpack_require__(4); + var numberUtil = __webpack_require__(7); + var sliderMove = __webpack_require__(239); + var LinearGradient = __webpack_require__(65); + var helper = __webpack_require__(386); + var modelUtil = __webpack_require__(5); + var eventTool = __webpack_require__(88); + + var linearMap = numberUtil.linearMap; + var each = zrUtil.each; + var mathMin = Math.min; + var mathMax = Math.max; + + // Arbitrary value + var HOVER_LINK_SIZE = 12; + var HOVER_LINK_OUT = 6; + + // Notice: + // Any "interval" should be by the order of [low, high]. + // "handle0" (handleIndex === 0) maps to + // low data value: this._dataInterval[0] and has low coord. + // "handle1" (handleIndex === 1) maps to + // high data value: this._dataInterval[1] and has high coord. + // The logic of transform is implemented in this._createBarGroup. + + var ContinuousView = VisualMapView.extend({ + + type: 'visualMap.continuous', + + /** + * @override + */ + init: function () { + + ContinuousView.superApply(this, 'init', arguments); + + /** + * @private + */ + this._shapes = {}; + + /** + * @private + */ + this._dataInterval = []; + + /** + * @private + */ + this._handleEnds = []; + + /** + * @private + */ + this._orient; + + /** + * @private + */ + this._useHandle; + + /** + * @private + */ + this._hoverLinkDataIndices = []; + + /** + * @private + */ + this._dragging; + + /** + * @private + */ + this._hovering; + }, + + /** + * @protected + * @override + */ + doRender: function (visualMapModel, ecModel, api, payload) { + if (!payload || payload.type !== 'selectDataRange' || payload.from !== this.uid) { + this._buildView(); + } + }, + + /** + * @private + */ + _buildView: function () { + this.group.removeAll(); + + var visualMapModel = this.visualMapModel; + var thisGroup = this.group; + + this._orient = visualMapModel.get('orient'); + this._useHandle = visualMapModel.get('calculable'); + + this._resetInterval(); + + this._renderBar(thisGroup); + + var dataRangeText = visualMapModel.get('text'); + this._renderEndsText(thisGroup, dataRangeText, 0); + this._renderEndsText(thisGroup, dataRangeText, 1); + + // Do this for background size calculation. + this._updateView(true); + + // After updating view, inner shapes is built completely, + // and then background can be rendered. + this.renderBackground(thisGroup); + + // Real update view + this._updateView(); + + this._enableHoverLinkToSeries(); + this._enableHoverLinkFromSeries(); + + this.positionGroup(thisGroup); + }, + + /** + * @private + */ + _renderEndsText: function (group, dataRangeText, endsIndex) { + if (!dataRangeText) { + return; + } + + // Compatible with ec2, text[0] map to high value, text[1] map low value. + var text = dataRangeText[1 - endsIndex]; + text = text != null ? text + '' : ''; + + var visualMapModel = this.visualMapModel; + var textGap = visualMapModel.get('textGap'); + var itemSize = visualMapModel.itemSize; + + var barGroup = this._shapes.barGroup; + var position = this._applyTransform( + [ + itemSize[0] / 2, + endsIndex === 0 ? -textGap : itemSize[1] + textGap + ], + barGroup + ); + var align = this._applyTransform( + endsIndex === 0 ? 'bottom' : 'top', + barGroup + ); + var orient = this._orient; + var textStyleModel = this.visualMapModel.textStyleModel; + + this.group.add(new graphic.Text({ + style: { + x: position[0], + y: position[1], + textVerticalAlign: orient === 'horizontal' ? 'middle' : align, + textAlign: orient === 'horizontal' ? align : 'center', + text: text, + textFont: textStyleModel.getFont(), + fill: textStyleModel.getTextColor() + } + })); + }, + + /** + * @private + */ + _renderBar: function (targetGroup) { + var visualMapModel = this.visualMapModel; + var shapes = this._shapes; + var itemSize = visualMapModel.itemSize; + var orient = this._orient; + var useHandle = this._useHandle; + var itemAlign = helper.getItemAlign(visualMapModel, this.api, itemSize); + var barGroup = shapes.barGroup = this._createBarGroup(itemAlign); + + // Bar + barGroup.add(shapes.outOfRange = createPolygon()); + barGroup.add(shapes.inRange = createPolygon( + null, + useHandle ? 'move' : null, + zrUtil.bind(this._dragHandle, this, 'all', false), + zrUtil.bind(this._dragHandle, this, 'all', true) + )); + + var textRect = visualMapModel.textStyleModel.getTextRect('国'); + var textSize = mathMax(textRect.width, textRect.height); + + // Handle + if (useHandle) { + shapes.handleThumbs = []; + shapes.handleLabels = []; + shapes.handleLabelPoints = []; + + this._createHandle(barGroup, 0, itemSize, textSize, orient, itemAlign); + this._createHandle(barGroup, 1, itemSize, textSize, orient, itemAlign); + } + + this._createIndicator(barGroup, itemSize, textSize, orient); + + targetGroup.add(barGroup); + }, + + /** + * @private + */ + _createHandle: function (barGroup, handleIndex, itemSize, textSize, orient) { + var onDrift = zrUtil.bind(this._dragHandle, this, handleIndex, false); + var onDragEnd = zrUtil.bind(this._dragHandle, this, handleIndex, true); + var handleThumb = createPolygon( + createHandlePoints(handleIndex, textSize), + 'move', + onDrift, + onDragEnd + ); + handleThumb.position[0] = itemSize[0]; + barGroup.add(handleThumb); + + // Text is always horizontal layout but should not be effected by + // transform (orient/inverse). So label is built separately but not + // use zrender/graphic/helper/RectText, and is located based on view + // group (according to handleLabelPoint) but not barGroup. + var textStyleModel = this.visualMapModel.textStyleModel; + var handleLabel = new graphic.Text({ + draggable: true, + drift: onDrift, + onmousemove: function (e) { + // Fot mobile devicem, prevent screen slider on the button. + eventTool.stop(e.event); + }, + ondragend: onDragEnd, + style: { + x: 0, y: 0, text: '', + textFont: textStyleModel.getFont(), + fill: textStyleModel.getTextColor() + } + }); + this.group.add(handleLabel); + + 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) + ]; + + var shapes = this._shapes; + shapes.handleThumbs[handleIndex] = handleThumb; + shapes.handleLabelPoints[handleIndex] = handleLabelPoint; + shapes.handleLabels[handleIndex] = handleLabel; + }, + + /** + * @private + */ + _createIndicator: function (barGroup, itemSize, textSize, orient) { + var indicator = createPolygon([[0, 0]], 'move'); + indicator.position[0] = itemSize[0]; + indicator.attr({invisible: true, silent: true}); + barGroup.add(indicator); + + var textStyleModel = this.visualMapModel.textStyleModel; + var indicatorLabel = new graphic.Text({ + silent: true, + invisible: true, + style: { + x: 0, y: 0, text: '', + textFont: textStyleModel.getFont(), + fill: textStyleModel.getTextColor() + } + }); + this.group.add(indicatorLabel); + + var indicatorLabelPoint = [ + orient === 'horizontal' ? textSize / 2 : HOVER_LINK_OUT + 3, + 0 + ]; + + var shapes = this._shapes; + shapes.indicator = indicator; + shapes.indicatorLabel = indicatorLabel; + shapes.indicatorLabelPoint = indicatorLabelPoint; + }, + + /** + * @private + */ + _dragHandle: function (handleIndex, isEnd, dx, dy) { + if (!this._useHandle) { + return; + } + + this._dragging = !isEnd; + + if (!isEnd) { + // Transform dx, dy to bar coordination. + var vertex = this._applyTransform([dx, dy], this._shapes.barGroup, true); + this._updateInterval(handleIndex, vertex[1]); + + // Considering realtime, update view should be executed + // before dispatch action. + this._updateView(); + } + + // dragEnd do not dispatch action when realtime. + if (isEnd === !this.visualMapModel.get('realtime')) { // jshint ignore:line + this.api.dispatchAction({ + type: 'selectDataRange', + from: this.uid, + visualMapId: this.visualMapModel.id, + selected: this._dataInterval.slice() + }); + } + + if (isEnd) { + !this._hovering && this._clearHoverLinkToSeries(); + } + else if (useHoverLinkOnHandle(this.visualMapModel)) { + this._doHoverLinkToSeries(this._handleEnds[handleIndex], false); + } + }, + + /** + * @private + */ + _resetInterval: function () { + var visualMapModel = this.visualMapModel; + + var dataInterval = this._dataInterval = visualMapModel.getSelected(); + var dataExtent = visualMapModel.getExtent(); + var sizeExtent = [0, visualMapModel.itemSize[1]]; + + this._handleEnds = [ + linearMap(dataInterval[0], dataExtent, sizeExtent, true), + linearMap(dataInterval[1], dataExtent, sizeExtent, true) + ]; + }, + + /** + * @private + * @param {(number|string)} handleIndex 0 or 1 or 'all' + * @param {number} dx + * @param {number} dy + */ + _updateInterval: function (handleIndex, delta) { + delta = delta || 0; + var visualMapModel = this.visualMapModel; + var handleEnds = this._handleEnds; + var sizeExtent = [0, visualMapModel.itemSize[1]]; + + sliderMove( + delta, + handleEnds, + sizeExtent, + handleIndex, + // cross is forbiden + 0 + ); + + var dataExtent = visualMapModel.getExtent(); + // Update data interval. + this._dataInterval = [ + linearMap(handleEnds[0], sizeExtent, dataExtent, true), + linearMap(handleEnds[1], sizeExtent, dataExtent, true) + ]; + }, + + /** + * @private + */ + _updateView: function (forSketch) { + var visualMapModel = this.visualMapModel; + var dataExtent = visualMapModel.getExtent(); + var shapes = this._shapes; + + var outOfRangeHandleEnds = [0, visualMapModel.itemSize[1]]; + var inRangeHandleEnds = forSketch ? outOfRangeHandleEnds : this._handleEnds; + + var visualInRange = this._createBarVisual( + this._dataInterval, dataExtent, inRangeHandleEnds, 'inRange' + ); + var visualOutOfRange = this._createBarVisual( + dataExtent, dataExtent, outOfRangeHandleEnds, 'outOfRange' + ); + + shapes.inRange + .setStyle({ + fill: visualInRange.barColor, + opacity: visualInRange.opacity + }) + .setShape('points', visualInRange.barPoints); + shapes.outOfRange + .setStyle({ + fill: visualOutOfRange.barColor, + opacity: visualOutOfRange.opacity + }) + .setShape('points', visualOutOfRange.barPoints); + + this._updateHandle(inRangeHandleEnds, visualInRange); + }, + + /** + * @private + */ + _createBarVisual: function (dataInterval, dataExtent, handleEnds, forceState) { + var opts = { + forceState: forceState, + convertOpacityToAlpha: true + }; + var colorStops = this._makeColorGradient(dataInterval, opts); + + var symbolSizes = [ + this.getControllerVisual(dataInterval[0], 'symbolSize', opts), + this.getControllerVisual(dataInterval[1], 'symbolSize', opts) + ]; + var barPoints = this._createBarPoints(handleEnds, symbolSizes); + + return { + barColor: new LinearGradient(0, 0, 0, 1, colorStops), + barPoints: barPoints, + handlesColor: [ + colorStops[0].color, + colorStops[colorStops.length - 1].color + ] + }; + }, + + /** + * @private + */ + _makeColorGradient: function (dataInterval, opts) { + // Considering colorHue, which is not linear, so we have to sample + // to calculate gradient color stops, but not only caculate head + // and tail. + var sampleNumber = 100; // Arbitrary value. + var colorStops = []; + var step = (dataInterval[1] - dataInterval[0]) / sampleNumber; + + colorStops.push({ + color: this.getControllerVisual(dataInterval[0], 'color', opts), + offset: 0 + }); + + for (var i = 1; i < sampleNumber; i++) { + var currValue = dataInterval[0] + step * i; + if (currValue > dataInterval[1]) { + break; + } + colorStops.push({ + color: this.getControllerVisual(currValue, 'color', opts), + offset: i / sampleNumber + }); + } + + colorStops.push({ + color: this.getControllerVisual(dataInterval[1], 'color', opts), + offset: 1 + }); + + return colorStops; + }, + + /** + * @private + */ + _createBarPoints: function (handleEnds, symbolSizes) { + var itemSize = this.visualMapModel.itemSize; + + return [ + [itemSize[0] - symbolSizes[0], handleEnds[0]], + [itemSize[0], handleEnds[0]], + [itemSize[0], handleEnds[1]], + [itemSize[0] - symbolSizes[1], handleEnds[1]] + ]; + }, + + /** + * @private + */ + _createBarGroup: function (itemAlign) { + var orient = this._orient; + var inverse = this.visualMapModel.get('inverse'); + + return new graphic.Group( + (orient === 'horizontal' && !inverse) + ? {scale: itemAlign === 'bottom' ? [1, 1] : [-1, 1], rotation: Math.PI / 2} + : (orient === 'horizontal' && inverse) + ? {scale: itemAlign === 'bottom' ? [-1, 1] : [1, 1], rotation: -Math.PI / 2} + : (orient === 'vertical' && !inverse) + ? {scale: itemAlign === 'left' ? [1, -1] : [-1, -1]} + : {scale: itemAlign === 'left' ? [1, 1] : [-1, 1]} + ); + }, + + /** + * @private + */ + _updateHandle: function (handleEnds, visualInRange) { + if (!this._useHandle) { + return; + } + + var shapes = this._shapes; + var visualMapModel = this.visualMapModel; + var handleThumbs = shapes.handleThumbs; + var handleLabels = shapes.handleLabels; + + each([0, 1], function (handleIndex) { + var handleThumb = handleThumbs[handleIndex]; + handleThumb.setStyle('fill', visualInRange.handlesColor[handleIndex]); + handleThumb.position[1] = handleEnds[handleIndex]; + + // Update handle label position. + var textPoint = graphic.applyTransform( + shapes.handleLabelPoints[handleIndex], + graphic.getTransform(handleThumb, this.group) + ); + handleLabels[handleIndex].setStyle({ + x: textPoint[0], + y: textPoint[1], + text: visualMapModel.formatValueText(this._dataInterval[handleIndex]), + textVerticalAlign: 'middle', + textAlign: this._applyTransform( + this._orient === 'horizontal' + ? (handleIndex === 0 ? 'bottom' : 'top') + : 'left', + shapes.barGroup + ) + }); + }, this); + }, + + /** + * @private + * @param {number} cursorValue + * @param {number} textValue + * @param {string} [rangeSymbol] + * @param {number} [halfHoverLinkSize] + */ + _showIndicator: function (cursorValue, textValue, rangeSymbol, halfHoverLinkSize) { + var visualMapModel = this.visualMapModel; + var dataExtent = visualMapModel.getExtent(); + var itemSize = visualMapModel.itemSize; + var sizeExtent = [0, itemSize[1]]; + var pos = linearMap(cursorValue, dataExtent, sizeExtent, true); + + var shapes = this._shapes; + var indicator = shapes.indicator; + if (!indicator) { + return; + } + + indicator.position[1] = pos; + indicator.attr('invisible', false); + indicator.setShape('points', createIndicatorPoints( + !!rangeSymbol, halfHoverLinkSize, pos, itemSize[1] + )); + + var opts = {convertOpacityToAlpha: true}; + var color = this.getControllerVisual(cursorValue, 'color', opts); + indicator.setStyle('fill', color); + + // Update handle label position. + var textPoint = graphic.applyTransform( + shapes.indicatorLabelPoint, + graphic.getTransform(indicator, this.group) + ); + + var indicatorLabel = shapes.indicatorLabel; + indicatorLabel.attr('invisible', false); + var align = this._applyTransform('left', shapes.barGroup); + var orient = this._orient; + indicatorLabel.setStyle({ + text: (rangeSymbol ? rangeSymbol : '') + visualMapModel.formatValueText(textValue), + textVerticalAlign: orient === 'horizontal' ? align : 'middle', + textAlign: orient === 'horizontal' ? 'center' : align, + x: textPoint[0], + y: textPoint[1] + }); + }, + + /** + * @private + */ + _enableHoverLinkToSeries: function () { + var self = this; + this._shapes.barGroup + + .on('mousemove', function (e) { + self._hovering = true; + + if (!self._dragging) { + var itemSize = self.visualMapModel.itemSize; + var pos = self._applyTransform( + [e.offsetX, e.offsetY], self._shapes.barGroup, true, true + ); + // For hover link show when hover handle, which might be + // below or upper than sizeExtent. + pos[1] = mathMin(mathMax(0, pos[1]), itemSize[1]); + + self._doHoverLinkToSeries( + pos[1], + 0 <= pos[0] && pos[0] <= itemSize[0] + ); + } + }) + + .on('mouseout', function () { + // When mouse is out of handle, hoverLink still need + // to be displayed when realtime is set as false. + self._hovering = false; + !self._dragging && self._clearHoverLinkToSeries(); + }); + }, + + /** + * @private + */ + _enableHoverLinkFromSeries: function () { + var zr = this.api.getZr(); + + if (this.visualMapModel.option.hoverLink) { + zr.on('mouseover', this._hoverLinkFromSeriesMouseOver, this); + zr.on('mouseout', this._hideIndicator, this); + } + else { + this._clearHoverLinkFromSeries(); + } + }, + + /** + * @private + */ + _doHoverLinkToSeries: function (cursorPos, hoverOnBar) { + var visualMapModel = this.visualMapModel; + var itemSize = visualMapModel.itemSize; + + if (!visualMapModel.option.hoverLink) { + return; + } + + var sizeExtent = [0, itemSize[1]]; + var dataExtent = visualMapModel.getExtent(); + + // For hover link show when hover handle, which might be below or upper than sizeExtent. + cursorPos = mathMin(mathMax(sizeExtent[0], cursorPos), sizeExtent[1]); + + var halfHoverLinkSize = getHalfHoverLinkSize(visualMapModel, dataExtent, sizeExtent); + var hoverRange = [cursorPos - halfHoverLinkSize, cursorPos + halfHoverLinkSize]; + var cursorValue = linearMap(cursorPos, sizeExtent, dataExtent, true); + 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, + // where china and india has very large population. + hoverRange[0] < sizeExtent[0] && (valueRange[0] = -Infinity); + hoverRange[1] > sizeExtent[1] && (valueRange[1] = Infinity); + + // Do not show indicator when mouse is over handle, + // otherwise labels overlap, especially when dragging. + if (hoverOnBar) { + if (valueRange[0] === -Infinity) { + this._showIndicator(cursorValue, valueRange[1], '< ', halfHoverLinkSize); + } + else if (valueRange[1] === Infinity) { + this._showIndicator(cursorValue, valueRange[0], '> ', halfHoverLinkSize); + } + else { + this._showIndicator(cursorValue, cursorValue, '≈ ', halfHoverLinkSize); + } + } + + // When realtime is set as false, handles, which are in barGroup, + // also trigger hoverLink, which help user to realize where they + // focus on when dragging. (see test/heatmap-large.html) + // When realtime is set as true, highlight will not show when hover + // handle, because the label on handle, which displays a exact value + // but not range, might mislead users. + var oldBatch = this._hoverLinkDataIndices; + var newBatch = []; + if (hoverOnBar || useHoverLinkOnHandle(visualMapModel)) { + newBatch = this._hoverLinkDataIndices = visualMapModel.findTargetDataIndices(valueRange); + } + + var resultBatches = modelUtil.compressBatches(oldBatch, newBatch); + this._dispatchHighDown('downplay', helper.convertDataIndex(resultBatches[0])); + this._dispatchHighDown('highlight', helper.convertDataIndex(resultBatches[1])); + }, + + /** + * @private + */ + _hoverLinkFromSeriesMouseOver: function (e) { + var el = e.target; + var visualMapModel = this.visualMapModel; + + if (!el || el.dataIndex == null) { + return; + } + + var dataModel = this.ecModel.getSeriesByIndex(el.seriesIndex); + + if (!visualMapModel.isTargetSeries(dataModel)) { + return; + } + + var data = dataModel.getData(el.dataType); + var dim = data.getDimension(visualMapModel.getDataDimension(data)); + var value = data.get(dim, el.dataIndex, true); + + if (!isNaN(value)) { + this._showIndicator(value, value); + } + }, + + /** + * @private + */ + _hideIndicator: function () { + var shapes = this._shapes; + shapes.indicator && shapes.indicator.attr('invisible', true); + shapes.indicatorLabel && shapes.indicatorLabel.attr('invisible', true); + }, + + /** + * @private + */ + _clearHoverLinkToSeries: function () { + this._hideIndicator(); + + var indices = this._hoverLinkDataIndices; + + this._dispatchHighDown('downplay', helper.convertDataIndex(indices)); + + indices.length = 0; + }, + + /** + * @private + */ + _clearHoverLinkFromSeries: function () { + this._hideIndicator(); + + var zr = this.api.getZr(); + zr.off('mouseover', this._hoverLinkFromSeriesMouseOver); + zr.off('mouseout', this._hideIndicator); + }, + + /** + * @private + */ + _applyTransform: function (vertex, element, inverse, global) { + var transform = graphic.getTransform(element, global ? null : this.group); + + return graphic[ + zrUtil.isArray(vertex) ? 'applyTransform' : 'transformDirection' + ](vertex, transform, inverse); + }, + + /** + * @private + */ + _dispatchHighDown: function (type, batch) { + batch && batch.length && this.api.dispatchAction({ + type: type, + batch: batch + }); + }, + + /** + * @override + */ + dispose: function () { + this._clearHoverLinkFromSeries(); + this._clearHoverLinkToSeries(); + }, + + /** + * @override + */ + remove: function () { + this._clearHoverLinkFromSeries(); + this._clearHoverLinkToSeries(); + } + + }); + + function createPolygon(points, cursor, onDrift, onDragEnd) { + return new graphic.Polygon({ + shape: {points: points}, + draggable: !!onDrift, + cursor: cursor, + drift: onDrift, + onmousemove: function (e) { + // Fot mobile devicem, prevent screen slider on the button. + eventTool.stop(e.event); + }, + ondragend: onDragEnd + }); + } + + function createHandlePoints(handleIndex, textSize) { + return handleIndex === 0 + ? [[0, 0], [textSize, 0], [textSize, -textSize]] + : [[0, 0], [textSize, 0], [textSize, textSize]]; + } + + function createIndicatorPoints(isRange, halfHoverLinkSize, pos, extentMax) { + return isRange + ? [ // indicate range + [0, -mathMin(halfHoverLinkSize, mathMax(pos, 0))], + [HOVER_LINK_OUT, 0], + [0, mathMin(halfHoverLinkSize, mathMax(extentMax - pos, 0))] + ] + : [ // indicate single value + [0, 0], [5, -5], [5, 5] + ]; + } + + function getHalfHoverLinkSize(visualMapModel, dataExtent, sizeExtent) { + var halfHoverLinkSize = HOVER_LINK_SIZE / 2; + var hoverLinkDataSize = visualMapModel.get('hoverLinkDataSize'); + if (hoverLinkDataSize) { + halfHoverLinkSize = linearMap(hoverLinkDataSize, dataExtent, sizeExtent, true) / 2; + } + return halfHoverLinkSize; + } + + function useHoverLinkOnHandle(visualMapModel) { + return !visualMapModel.get('realtime') && visualMapModel.get('hoverLinkOnHandle'); + } + + module.exports = ContinuousView; + + + +/***/ }, +/* 385 */ +/***/ function(module, exports, __webpack_require__) { + + + + var zrUtil = __webpack_require__(4); + var graphic = __webpack_require__(18); + var formatUtil = __webpack_require__(6); + var layout = __webpack_require__(71); + var echarts = __webpack_require__(1); + var VisualMapping = __webpack_require__(203); + + module.exports = echarts.extendComponentView({ + + type: 'visualMap', + + /** + * @readOnly + * @type {Object} + */ + autoPositionValues: {left: 1, right: 1, top: 1, bottom: 1}, + + init: function (ecModel, api) { + /** + * @readOnly + * @type {module:echarts/model/Global} + */ + this.ecModel = ecModel; + + /** + * @readOnly + * @type {module:echarts/ExtensionAPI} + */ + this.api = api; + + /** + * @readOnly + * @type {module:echarts/component/visualMap/visualMapModel} + */ + this.visualMapModel; + }, + + /** + * @protected + */ + render: function (visualMapModel, ecModel, api, payload) { + this.visualMapModel = visualMapModel; + + if (visualMapModel.get('show') === false) { + this.group.removeAll(); + return; + } + + this.doRender.apply(this, arguments); + }, + + /** + * @protected + */ + renderBackground: function (group) { + var visualMapModel = this.visualMapModel; + var padding = formatUtil.normalizeCssArray(visualMapModel.get('padding') || 0); + var rect = group.getBoundingRect(); + + group.add(new graphic.Rect({ + z2: -1, // Lay background rect on the lowest layer. + silent: true, + shape: { + x: rect.x - padding[3], + y: rect.y - padding[0], + width: rect.width + padding[3] + padding[1], + height: rect.height + padding[0] + padding[2] + }, + style: { + fill: visualMapModel.get('backgroundColor'), + stroke: visualMapModel.get('borderColor'), + lineWidth: visualMapModel.get('borderWidth') + } + })); + }, + + /** + * @protected + * @param {number} targetValue can be Infinity or -Infinity + * @param {string=} visualCluster Only can be 'color' 'opacity' 'symbol' 'symbolSize' + * @param {Object} [opts] + * @param {string=} [opts.forceState] Specify state, instead of using getValueState method. + * @param {string=} [opts.convertOpacityToAlpha=false] For color gradient in controller widget. + * @return {*} Visual value. + */ + getControllerVisual: function (targetValue, visualCluster, opts) { + opts = opts || {}; + + var forceState = opts.forceState; + var visualMapModel = this.visualMapModel; + var visualObj = {}; + + // Default values. + if (visualCluster === 'symbol') { + visualObj.symbol = visualMapModel.get('itemSymbol'); + } + if (visualCluster === 'color') { + var defaultColor = visualMapModel.get('contentColor'); + visualObj.color = defaultColor; + } + + function getter(key) { + return visualObj[key]; + } + + function setter(key, value) { + visualObj[key] = value; + } + + var mappings = visualMapModel.controllerVisuals[ + forceState || visualMapModel.getValueState(targetValue) + ]; + var visualTypes = VisualMapping.prepareVisualTypes(mappings); + + zrUtil.each(visualTypes, function (type) { + var visualMapping = mappings[type]; + if (opts.convertOpacityToAlpha && type === 'opacity') { + type = 'colorAlpha'; + visualMapping = mappings.__alphaForOpacity; + } + if (VisualMapping.dependsOn(type, visualCluster)) { + visualMapping && visualMapping.applyVisual( + targetValue, getter, setter + ); + } + }); + + return visualObj[visualCluster]; + }, + + /** + * @protected + */ + positionGroup: function (group) { + var model = this.visualMapModel; + var api = this.api; + + layout.positionElement( + group, + model.getBoxLayoutParams(), + {width: api.getWidth(), height: api.getHeight()} + ); + }, + + /** + * @protected + * @abstract + */ + doRender: zrUtil.noop + + }); + + + +/***/ }, +/* 386 */ +/***/ function(module, exports, __webpack_require__) { + + + + var zrUtil = __webpack_require__(4); + var layout = __webpack_require__(71); + + var helper = { + + /** + * @param {module:echarts/component/visualMap/VisualMapModel} visualMapModel\ + * @param {module:echarts/ExtensionAPI} api + * @param {Array.} itemSize always [short, long] + * @return {string} 'left' or 'right' or 'top' or 'bottom' + */ + getItemAlign: function (visualMapModel, api, itemSize) { + var modelOption = visualMapModel.option; + var itemAlign = modelOption.align; + + if (itemAlign != null && itemAlign !== 'auto') { + return itemAlign; + } + + // Auto decision align. + var ecSize = {width: api.getWidth(), height: api.getHeight()}; + var realIndex = modelOption.orient === 'horizontal' ? 1 : 0; + + var paramsSet = [ + ['left', 'right', 'width'], + ['top', 'bottom', 'height'] + ]; + var reals = paramsSet[realIndex]; + var fakeValue = [0, null, 10]; + + var layoutInput = {}; + for (var i = 0; i < 3; i++) { + layoutInput[paramsSet[1 - realIndex][i]] = fakeValue[i]; + layoutInput[reals[i]] = i === 2 ? itemSize[0] : modelOption[reals[i]]; + } + + var rParam = [['x', 'width', 3], ['y', 'height', 0]][realIndex]; + var rect = layout.getLayoutRect(layoutInput, ecSize, modelOption.padding); + + return reals[ + (rect.margin[rParam[2]] || 0) + rect[rParam[0]] + rect[rParam[1]] * 0.5 + < ecSize[rParam[1]] * 0.5 ? 0 : 1 + ]; + }, + + /** + * Prepare dataIndex for outside usage, where dataIndex means rawIndex, and + * dataIndexInside means filtered index. + */ + convertDataIndex: function (batch) { + zrUtil.each(batch || [], function (batchItem) { + if (batch.dataIndex != null) { + batch.dataIndexInside = batch.dataIndex; + batch.dataIndex = null; + } + }); + return batch; + } + + }; + + + module.exports = helper; + + + +/***/ }, +/* 387 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * @file Data range action + */ + + + var echarts = __webpack_require__(1); + + var actionInfo = { + type: 'selectDataRange', + event: 'dataRangeSelected', + // FIXME use updateView appears wrong + update: 'update' + }; + + echarts.registerAction(actionInfo, function (payload, ecModel) { + + ecModel.eachComponent({mainType: 'visualMap', query: payload}, function (model) { + model.setSelected(payload.selected); + }); + + }); + + + +/***/ }, +/* 388 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * DataZoom component entry + */ + + + __webpack_require__(1).registerPreprocessor( + __webpack_require__(378) + ); + + __webpack_require__(379); + __webpack_require__(380); + __webpack_require__(389); + __webpack_require__(390); + __webpack_require__(387); + + + +/***/ }, +/* 389 */ +/***/ function(module, exports, __webpack_require__) { + + + + var VisualMapModel = __webpack_require__(382); + var zrUtil = __webpack_require__(4); + var VisualMapping = __webpack_require__(203); + var visualDefault = __webpack_require__(383); + var reformIntervals = __webpack_require__(7).reformIntervals; + + var PiecewiseModel = VisualMapModel.extend({ + + type: 'visualMap.piecewise', + + /** + * Order Rule: + * + * option.categories / option.pieces / option.text / option.selected: + * If !option.inverse, + * Order when vertical: ['top', ..., 'bottom']. + * Order when horizontal: ['left', ..., 'right']. + * If option.inverse, the meaning of + * the order should be reversed. + * + * this._pieceList: + * The order is always [low, ..., high]. + * + * Mapping from location to low-high: + * If !option.inverse + * When vertical, top is high. + * When horizontal, right is high. + * If option.inverse, reverse. + */ + + /** + * @protected + */ + defaultOption: { + selected: null, // Object. If not specified, means selected. + // When pieces and splitNumber: {'0': true, '5': true} + // When categories: {'cate1': false, 'cate3': true} + // When selected === false, means all unselected. + + minOpen: false, // Whether include values that smaller than `min`. + maxOpen: false, // Whether include values that bigger than `max`. + + align: 'auto', // 'auto', 'left', 'right' + itemWidth: 20, // When put the controller vertically, it is the length of + // horizontal side of each item. Otherwise, vertical side. + itemHeight: 14, // When put the controller vertically, it is the length of + // vertical side of each item. Otherwise, horizontal side. + itemSymbol: 'roundRect', + pieceList: null, // Each item is Object, with some of those attrs: + // {min, max, lt, gt, lte, gte, value, + // color, colorSaturation, colorAlpha, opacity, + // symbol, symbolSize}, which customize the range or visual + // coding of the certain piece. Besides, see "Order Rule". + categories: null, // category names, like: ['some1', 'some2', 'some3']. + // Attr min/max are ignored when categories set. See "Order Rule" + splitNumber: 5, // If set to 5, auto split five pieces equally. + // If set to 0 and component type not set, component type will be + // determined as "continuous". (It is less reasonable but for ec2 + // compatibility, see echarts/component/visualMap/typeDefaulter) + selectedMode: 'multiple', // Can be 'multiple' or 'single'. + itemGap: 10, // The gap between two items, in px. + hoverLink: true, // Enable hover highlight. + + showLabel: null // By default, when text is used, label will hide (the logic + // is remained for compatibility reason) + }, + + /** + * @override + */ + optionUpdated: function (newOption, isInit) { + PiecewiseModel.superApply(this, 'optionUpdated', arguments); + + /** + * The order is always [low, ..., high]. + * [{text: string, interval: Array.}, ...] + * @private + * @type {Array.} + */ + this._pieceList = []; + + this.resetTargetSeries(); + this.resetExtent(); + + /** + * 'pieces', 'categories', 'splitNumber' + * @type {string} + */ + var mode = this._mode = this._determineMode(); + + resetMethods[this._mode].call(this); + + this._resetSelected(newOption, isInit); + + var categories = this.option.categories; + + this.resetVisual(function (mappingOption, state) { + if (mode === 'categories') { + mappingOption.mappingMethod = 'category'; + mappingOption.categories = zrUtil.clone(categories); + } + else { + mappingOption.dataExtent = this.getExtent(); + mappingOption.mappingMethod = 'piecewise'; + mappingOption.pieceList = zrUtil.map(this._pieceList, function (piece) { + var piece = zrUtil.clone(piece); + if (state !== 'inRange') { + // FIXME + // outOfRange do not support special visual in pieces. + piece.visual = null; + } + return piece; + }); + } + }); + }, + + /** + * @protected + * @override + */ + completeVisualOption: function () { + // Consider this case: + // visualMap: { + // pieces: [{symbol: 'circle', lt: 0}, {symbol: 'rect', gte: 0}] + // } + // where no inRange/outOfRange set but only pieces. So we should make + // default inRange/outOfRange for this case, otherwise visuals that only + // appear in `pieces` will not be taken into account in visual encoding. + + var option = this.option; + var visualTypesInPieces = {}; + var visualTypes = VisualMapping.listVisualTypes(); + var isCategory = this.isCategory(); + + zrUtil.each(option.pieces, function (piece) { + zrUtil.each(visualTypes, function (visualType) { + if (piece.hasOwnProperty(visualType)) { + visualTypesInPieces[visualType] = 1; + } + }); + }); + + zrUtil.each(visualTypesInPieces, function (v, visualType) { + var exists = 0; + zrUtil.each(this.stateList, function (state) { + exists |= has(option, state, visualType) + || has(option.target, state, visualType); + }, this); + + !exists && zrUtil.each(this.stateList, function (state) { + (option[state] || (option[state] = {}))[visualType] = visualDefault.get( + visualType, state === 'inRange' ? 'active' : 'inactive', isCategory + ); + }); + }, this); + + function has(obj, state, visualType) { + return obj && obj[state] && ( + zrUtil.isObject(obj[state]) + ? obj[state].hasOwnProperty(visualType) + : obj[state] === visualType // e.g., inRange: 'symbol' + ); + } + + VisualMapModel.prototype.completeVisualOption.apply(this, arguments); + }, + + _resetSelected: function (newOption, isInit) { + var thisOption = this.option; + var pieceList = this._pieceList; + + // Selected do not merge but all override. + var selected = (isInit ? thisOption : newOption).selected || {}; + thisOption.selected = selected; + + // Consider 'not specified' means true. + zrUtil.each(pieceList, function (piece, index) { + var key = this.getSelectedMapKey(piece); + if (!selected.hasOwnProperty(key)) { + selected[key] = true; + } + }, this); + + if (thisOption.selectedMode === 'single') { + // Ensure there is only one selected. + var hasSel = false; + + zrUtil.each(pieceList, function (piece, index) { + var key = this.getSelectedMapKey(piece); + if (selected[key]) { + hasSel + ? (selected[key] = false) + : (hasSel = true); + } + }, this); + } + // thisOption.selectedMode === 'multiple', default: all selected. + }, + + /** + * @public + */ + getSelectedMapKey: function (piece) { + return this._mode === 'categories' + ? piece.value + '' : piece.index + ''; + }, + + /** + * @public + */ + getPieceList: function () { + return this._pieceList; + }, + + /** + * @private + * @return {string} + */ + _determineMode: function () { + var option = this.option; + + return option.pieces && option.pieces.length > 0 + ? 'pieces' + : this.option.categories + ? 'categories' + : 'splitNumber'; + }, + + /** + * @public + * @override + */ + setSelected: function (selected) { + this.option.selected = zrUtil.clone(selected); + }, + + /** + * @public + * @override + */ + getValueState: function (value) { + var index = VisualMapping.findPieceIndex(value, this._pieceList); + + return index != null + ? (this.option.selected[this.getSelectedMapKey(this._pieceList[index])] + ? 'inRange' : 'outOfRange' + ) + : 'outOfRange'; + }, + + /** + * @public + * @params {number} pieceIndex piece index in visualMapModel.getPieceList() + * @return {Array.} [{seriesId, dataIndices: >}, ...] + */ + findTargetDataIndices: function (pieceIndex) { + var result = []; + + this.eachTargetSeries(function (seriesModel) { + var dataIndices = []; + var data = seriesModel.getData(); + + data.each(this.getDataDimension(data), function (value, dataIndex) { + // Should always base on model pieceList, because it is order sensitive. + var pIdx = VisualMapping.findPieceIndex(value, this._pieceList); + pIdx === pieceIndex && dataIndices.push(dataIndex); + }, true, this); + + result.push({seriesId: seriesModel.id, dataIndex: dataIndices}); + }, this); + + return result; + }, + + /** + * @private + * @param {Object} piece piece.value or piece.interval is required. + * @return {number} Can be Infinity or -Infinity + */ + getRepresentValue: function (piece) { + var representValue; + if (this.isCategory()) { + representValue = piece.value; + } + else { + if (piece.value != null) { + representValue = piece.value; + } + else { + var pieceInterval = piece.interval || []; + representValue = (pieceInterval[0] === -Infinity && pieceInterval[1] === Infinity) + ? 0 + : (pieceInterval[0] + pieceInterval[1]) / 2; + } + } + return representValue; + }, + + getVisualMeta: function (getColorVisual) { + // Do not support category. (category axis is ordinal, numerical) + if (this.isCategory()) { + return; + } + + var stops = []; + var outerColors = []; + var visualMapModel = this; + + function setStop(interval, valueState) { + var representValue = visualMapModel.getRepresentValue({interval: interval}); + if (!valueState) { + valueState = visualMapModel.getValueState(representValue); + } + var color = getColorVisual(representValue, valueState); + if (interval[0] === -Infinity) { + outerColors[0] = color; + } + else if (interval[1] === Infinity) { + outerColors[1] = color; + } + else { + stops.push( + {value: interval[0], color: color}, + {value: interval[1], color: color} + ); + } + } + + // Suplement + var pieceList = this._pieceList.slice(); + if (!pieceList.length) { + pieceList.push({interval: [-Infinity, Infinity]}); + } + else { + var edge = pieceList[0].interval[0]; + edge !== -Infinity && pieceList.unshift({interval: [-Infinity, edge]}); + edge = pieceList[pieceList.length - 1].interval[1]; + edge !== Infinity && pieceList.push({interval: [edge, Infinity]}); + } + + var curr = -Infinity; + zrUtil.each(pieceList, function (piece) { + var interval = piece.interval; + if (interval) { + // Fulfill gap. + interval[0] > curr && setStop([curr, interval[0]], 'outOfRange'); + setStop(interval.slice()); + curr = interval[1]; + } + }, this); + + return {stops: stops, outerColors: outerColors}; + } + + }); + + /** + * Key is this._mode + * @type {Object} + * @this {module:echarts/component/viusalMap/PiecewiseMode} + */ + var resetMethods = { + + splitNumber: function () { + var thisOption = this.option; + var pieceList = this._pieceList; + var precision = thisOption.precision; + var dataExtent = this.getExtent(); + var splitNumber = thisOption.splitNumber; + splitNumber = Math.max(parseInt(splitNumber, 10), 1); + thisOption.splitNumber = splitNumber; + + var splitStep = (dataExtent[1] - dataExtent[0]) / splitNumber; + // Precision auto-adaption + while (+splitStep.toFixed(precision) !== splitStep && precision < 5) { + precision++; + } + thisOption.precision = precision; + splitStep = +splitStep.toFixed(precision); + + var index = 0; + + if (thisOption.minOpen) { + pieceList.push({ + index: index++, + interval: [-Infinity, dataExtent[0]], + close: [0, 0] + }); + } + + for ( + var curr = dataExtent[0], len = index + splitNumber; + index < len; + curr += splitStep + ) { + var max = index === splitNumber - 1 ? dataExtent[1] : (curr + splitStep); + + pieceList.push({ + index: index++, + interval: [curr, max], + close: [1, 1] + }); + } + + if (thisOption.maxOpen) { + pieceList.push({ + index: index++, + interval: [dataExtent[1], Infinity], + close: [0, 0] + }); + } + + reformIntervals(pieceList); + + zrUtil.each(pieceList, function (piece) { + piece.text = this.formatValueText(piece.interval); + }, this); + }, + + categories: function () { + var thisOption = this.option; + zrUtil.each(thisOption.categories, function (cate) { + // FIXME category模式也使用pieceList,但在visualMapping中不是使用pieceList。 + // 是否改一致。 + this._pieceList.push({ + text: this.formatValueText(cate, true), + value: cate + }); + }, this); + + // See "Order Rule". + normalizeReverse(thisOption, this._pieceList); + }, + + pieces: function () { + var thisOption = this.option; + var pieceList = this._pieceList; + + zrUtil.each(thisOption.pieces, function (pieceListItem, index) { + + if (!zrUtil.isObject(pieceListItem)) { + pieceListItem = {value: pieceListItem}; + } + + var item = {text: '', index: index}; + + if (pieceListItem.label != null) { + item.text = pieceListItem.label; + } + + if (pieceListItem.hasOwnProperty('value')) { + var value = item.value = pieceListItem.value; + item.interval = [value, value]; + item.close = [1, 1]; + } + else { + // `min` `max` is legacy option. + // `lt` `gt` `lte` `gte` is recommanded. + var interval = item.interval = []; + var close = item.close = [0, 0]; + + var closeList = [1, 0, 1]; + var infinityList = [-Infinity, Infinity]; + + var useMinMax = []; + for (var lg = 0; lg < 2; lg++) { + var names = [['gte', 'gt', 'min'], ['lte', 'lt', 'max']][lg]; + for (var i = 0; i < 3 && interval[lg] == null; i++) { + interval[lg] = pieceListItem[names[i]]; + close[lg] = closeList[i]; + useMinMax[lg] = i === 2; + } + interval[lg] == null && (interval[lg] = infinityList[lg]); + } + useMinMax[0] && interval[1] === Infinity && (close[0] = 0); + useMinMax[1] && interval[0] === -Infinity && (close[1] = 0); + + if (true) { + if (interval[0] > interval[1]) { + console.warn( + 'Piece ' + index + 'is illegal: ' + interval + + ' lower bound should not greater then uppper bound.' + ); + } + } + + if (interval[0] === interval[1] && close[0] && close[1]) { + // Consider: [{min: 5, max: 5, visual: {...}}, {min: 0, max: 5}], + // we use value to lift the priority when min === max + item.value = interval[0]; + } + } + + item.visual = VisualMapping.retrieveVisuals(pieceListItem); + + pieceList.push(item); + + }, this); + + // See "Order Rule". + normalizeReverse(thisOption, pieceList); + // Only pieces + reformIntervals(pieceList); + + zrUtil.each(pieceList, function (piece) { + var close = piece.close; + var edgeSymbols = [['<', '≤'][close[1]], ['>', '≥'][close[0]]]; + piece.text = piece.text || this.formatValueText( + piece.value != null ? piece.value : piece.interval, + false, + edgeSymbols + ); + }, this); + } + }; + + function normalizeReverse(thisOption, pieceList) { + var inverse = thisOption.inverse; + if (thisOption.orient === 'vertical' ? !inverse : inverse) { + pieceList.reverse(); + } + } + + module.exports = PiecewiseModel; + + +/***/ }, +/* 390 */ +/***/ function(module, exports, __webpack_require__) { + + + + var VisualMapView = __webpack_require__(385); + var zrUtil = __webpack_require__(4); + var graphic = __webpack_require__(18); + var symbolCreators = __webpack_require__(111); + var layout = __webpack_require__(71); + var helper = __webpack_require__(386); + + var PiecewiseVisualMapView = VisualMapView.extend({ + + type: 'visualMap.piecewise', + + /** + * @protected + * @override + */ + doRender: function () { + var thisGroup = this.group; + + thisGroup.removeAll(); + + var visualMapModel = this.visualMapModel; + var textGap = visualMapModel.get('textGap'); + var textStyleModel = visualMapModel.textStyleModel; + var textFont = textStyleModel.getFont(); + var textFill = textStyleModel.getTextColor(); + var itemAlign = this._getItemAlign(); + var itemSize = visualMapModel.itemSize; + var viewData = this._getViewData(); + var endsText = viewData.endsText; + var showLabel = zrUtil.retrieve(visualMapModel.get('showLabel', true), !endsText); + + endsText && this._renderEndsText( + thisGroup, endsText[0], itemSize, showLabel, itemAlign + ); + + zrUtil.each(viewData.viewPieceList, renderItem, this); + + endsText && this._renderEndsText( + thisGroup, endsText[1], itemSize, showLabel, itemAlign + ); + + layout.box( + visualMapModel.get('orient'), thisGroup, visualMapModel.get('itemGap') + ); + + this.renderBackground(thisGroup); + + this.positionGroup(thisGroup); + + function renderItem(item) { + var piece = item.piece; + + var itemGroup = new graphic.Group(); + itemGroup.onclick = zrUtil.bind(this._onItemClick, this, piece); + + this._enableHoverLink(itemGroup, item.indexInModelPieceList); + + var representValue = visualMapModel.getRepresentValue(piece); + + this._createItemSymbol( + itemGroup, representValue, [0, 0, itemSize[0], itemSize[1]] + ); + + if (showLabel) { + var visualState = this.visualMapModel.getValueState(representValue); + + itemGroup.add(new graphic.Text({ + style: { + x: itemAlign === 'right' ? -textGap : itemSize[0] + textGap, + y: itemSize[1] / 2, + text: piece.text, + textVerticalAlign: 'middle', + textAlign: itemAlign, + textFont: textFont, + fill: textFill, + opacity: visualState === 'outOfRange' ? 0.5 : 1 + } + })); + } + + thisGroup.add(itemGroup); + } + }, + + /** + * @private + */ + _enableHoverLink: function (itemGroup, pieceIndex) { + itemGroup + .on('mouseover', zrUtil.bind(onHoverLink, this, 'highlight')) + .on('mouseout', zrUtil.bind(onHoverLink, this, 'downplay')); + + function onHoverLink(method) { + var visualMapModel = this.visualMapModel; + + visualMapModel.option.hoverLink && this.api.dispatchAction({ + type: method, + batch: helper.convertDataIndex( + visualMapModel.findTargetDataIndices(pieceIndex) + ) + }); + } + }, + + /** + * @private + */ + _getItemAlign: function () { + var visualMapModel = this.visualMapModel; + var modelOption = visualMapModel.option; + + if (modelOption.orient === 'vertical') { + return helper.getItemAlign( + visualMapModel, this.api, visualMapModel.itemSize + ); + } + else { // horizontal, most case left unless specifying right. + var align = modelOption.align; + if (!align || align === 'auto') { + align = 'left'; + } + return align; + } + }, + + /** + * @private + */ + _renderEndsText: function (group, text, itemSize, showLabel, itemAlign) { + if (!text) { + return; + } + + var itemGroup = new graphic.Group(); + var textStyleModel = this.visualMapModel.textStyleModel; + + itemGroup.add(new graphic.Text({ + style: { + x: showLabel ? (itemAlign === 'right' ? itemSize[0] : 0) : itemSize[0] / 2, + y: itemSize[1] / 2, + textVerticalAlign: 'middle', + textAlign: showLabel ? itemAlign : 'center', + text: text, + textFont: textStyleModel.getFont(), + fill: textStyleModel.getTextColor() + } + })); + + group.add(itemGroup); + }, + + /** + * @private + * @return {Object} {peiceList, endsText} The order is the same as screen pixel order. + */ + _getViewData: function () { + var visualMapModel = this.visualMapModel; + + var viewPieceList = zrUtil.map(visualMapModel.getPieceList(), function (piece, index) { + return {piece: piece, indexInModelPieceList: index}; + }); + var endsText = visualMapModel.get('text'); + + // Consider orient and inverse. + var orient = visualMapModel.get('orient'); + var inverse = visualMapModel.get('inverse'); + + // Order of model pieceList is always [low, ..., high] + if (orient === 'horizontal' ? inverse : !inverse) { + viewPieceList.reverse(); + } + // Origin order of endsText is [high, low] + else if (endsText) { + endsText = endsText.slice().reverse(); + } + + return {viewPieceList: viewPieceList, endsText: endsText}; + }, + + /** + * @private + */ + _createItemSymbol: function (group, representValue, shapeParam) { + group.add(symbolCreators.createSymbol( + this.getControllerVisual(representValue, 'symbol'), + shapeParam[0], shapeParam[1], shapeParam[2], shapeParam[3], + this.getControllerVisual(representValue, 'color') + )); + }, + + /** + * @private + */ + _onItemClick: function (piece) { + var visualMapModel = this.visualMapModel; + var option = visualMapModel.option; + var selected = zrUtil.clone(option.selected); + var newKey = visualMapModel.getSelectedMapKey(piece); + + if (option.selectedMode === 'single') { + selected[newKey] = true; + zrUtil.each(selected, function (o, key) { + selected[key] = key === newKey; + }); + } + else { + selected[newKey] = !selected[newKey]; + } + + this.api.dispatchAction({ + type: 'selectDataRange', + from: this.uid, + visualMapId: this.visualMapModel.id, + selected: selected + }); + } + }); + + module.exports = PiecewiseVisualMapView; + + + +/***/ }, +/* 391 */ +/***/ function(module, exports, __webpack_require__) { + + // HINT Markpoint can't be used too much + + + __webpack_require__(392); + __webpack_require__(394); + + __webpack_require__(1).registerPreprocessor(function (opt) { + // Make sure markPoint component is enabled + opt.markPoint = opt.markPoint || {}; + }); + + +/***/ }, +/* 392 */ +/***/ function(module, exports, __webpack_require__) { + + + + module.exports = __webpack_require__(393).extend({ + + type: 'markPoint', + + defaultOption: { + zlevel: 0, + z: 5, + symbol: 'pin', + symbolSize: 50, + //symbolRotate: 0, + //symbolOffset: [0, 0] + tooltip: { + trigger: 'item' + }, + label: { + normal: { + show: true, + position: 'inside' + }, + emphasis: { + show: true + } + }, + itemStyle: { + normal: { + borderWidth: 2 + } + } + } + }); + + +/***/ }, +/* 393 */ +/***/ function(module, exports, __webpack_require__) { + + + + var modelUtil = __webpack_require__(5); + var zrUtil = __webpack_require__(4); + var env = __webpack_require__(2); + + var formatUtil = __webpack_require__(6); + var addCommas = formatUtil.addCommas; + var encodeHTML = formatUtil.encodeHTML; + + function fillLabel(opt) { + modelUtil.defaultEmphasis( + opt.label, + modelUtil.LABEL_OPTIONS + ); + } + var MarkerModel = __webpack_require__(1).extendComponentModel({ + + type: 'marker', + + dependencies: ['series', 'grid', 'polar', 'geo'], + /** + * @overrite + */ + init: function (option, parentModel, ecModel, extraOpt) { + + if (true) { + if (this.type === 'marker') { + throw new Error('Marker component is abstract component. Use markLine, markPoint, markArea instead.'); + } + } + this.mergeDefaultAndTheme(option, ecModel); + this.mergeOption(option, ecModel, extraOpt.createdBySelf, true); + }, + + /** + * @return {boolean} + */ + isAnimationEnabled: function () { + if (env.node) { + return false; + } + + var hostSeries = this.__hostSeries; + return this.getShallow('animation') && hostSeries && hostSeries.isAnimationEnabled(); + }, + + mergeOption: function (newOpt, ecModel, createdBySelf, isInit) { + var MarkerModel = this.constructor; + var modelPropName = this.mainType + 'Model'; + if (!createdBySelf) { + ecModel.eachSeries(function (seriesModel) { + + var markerOpt = seriesModel.get(this.mainType); + + var markerModel = seriesModel[modelPropName]; + if (!markerOpt || !markerOpt.data) { + seriesModel[modelPropName] = null; + return; + } + if (!markerModel) { + if (isInit) { + // Default label emphasis `position` and `show` + fillLabel(markerOpt); + } + zrUtil.each(markerOpt.data, function (item) { + // FIXME Overwrite fillLabel method ? + if (item instanceof Array) { + fillLabel(item[0]); + fillLabel(item[1]); + } + else { + fillLabel(item); + } + }); + + markerModel = new MarkerModel( + markerOpt, this, ecModel + ); + + zrUtil.extend(markerModel, { + mainType: this.mainType, + // Use the same series index and name + seriesIndex: seriesModel.seriesIndex, + name: seriesModel.name, + createdBySelf: true + }); + + markerModel.__hostSeries = seriesModel; + } + else { + markerModel.mergeOption(markerOpt, ecModel, true); + } + seriesModel[modelPropName] = markerModel; + }, this); + } + }, + + formatTooltip: function (dataIndex) { + var data = this.getData(); + var value = this.getRawValue(dataIndex); + var formattedValue = zrUtil.isArray(value) + ? zrUtil.map(value, addCommas).join(', ') : addCommas(value); + var name = data.getName(dataIndex); + var html = encodeHTML(this.name); + if (value != null || name) { + html += '
                  '; + } + if (name) { + html += encodeHTML(name); + if (value != null) { + html += ' : '; + } + } + if (value != null) { + html += encodeHTML(formattedValue); + } + return html; + }, + + getData: function () { + return this._data; + }, + + setData: function (data) { + this._data = data; + } + }); + + zrUtil.mixin(MarkerModel, modelUtil.dataFormatMixin); + + module.exports = MarkerModel; + + +/***/ }, +/* 394 */ +/***/ function(module, exports, __webpack_require__) { + + + + var SymbolDraw = __webpack_require__(116); + var zrUtil = __webpack_require__(4); + var numberUtil = __webpack_require__(7); + + var List = __webpack_require__(98); + + var markerHelper = __webpack_require__(395); + + function updateMarkerLayout(mpData, seriesModel, api) { + var coordSys = seriesModel.coordinateSystem; + mpData.each(function (idx) { + var itemModel = mpData.getItemModel(idx); + var point; + var xPx = numberUtil.parsePercent(itemModel.get('x'), api.getWidth()); + var yPx = numberUtil.parsePercent(itemModel.get('y'), api.getHeight()); + if (!isNaN(xPx) && !isNaN(yPx)) { + point = [xPx, yPx]; + } + // Chart like bar may have there own marker positioning logic + else if (seriesModel.getMarkerPosition) { + // Use the getMarkerPoisition + point = seriesModel.getMarkerPosition( + mpData.getValues(mpData.dimensions, idx) + ); + } + else if (coordSys) { + var x = mpData.get(coordSys.dimensions[0], idx); + var y = mpData.get(coordSys.dimensions[1], idx); + point = coordSys.dataToPoint([x, y]); + + } + + // Use x, y if has any + if (!isNaN(xPx)) { + point[0] = xPx; + } + if (!isNaN(yPx)) { + point[1] = yPx; + } + + mpData.setItemLayout(idx, point); + }); + } + + __webpack_require__(396).extend({ + + type: 'markPoint', + + updateLayout: function (markPointModel, ecModel, api) { + ecModel.eachSeries(function (seriesModel) { + var mpModel = seriesModel.markPointModel; + if (mpModel) { + updateMarkerLayout(mpModel.getData(), seriesModel, api); + this.markerGroupMap.get(seriesModel.id).updateLayout(mpModel); + } + }, this); + }, + + renderSeries: function (seriesModel, mpModel, ecModel, api) { + var coordSys = seriesModel.coordinateSystem; + var seriesId = seriesModel.id; + var seriesData = seriesModel.getData(); + + var symbolDrawMap = this.markerGroupMap; + var symbolDraw = symbolDrawMap.get(seriesId) + || symbolDrawMap.set(seriesId, new SymbolDraw()); + + var mpData = createList(coordSys, seriesModel, mpModel); + + // FIXME + mpModel.setData(mpData); + + updateMarkerLayout(mpModel.getData(), seriesModel, api); + + mpData.each(function (idx) { + var itemModel = mpData.getItemModel(idx); + var symbolSize = itemModel.getShallow('symbolSize'); + if (typeof symbolSize === 'function') { + // FIXME 这里不兼容 ECharts 2.x,2.x 貌似参数是整个数据? + symbolSize = symbolSize( + mpModel.getRawValue(idx), mpModel.getDataParams(idx) + ); + } + mpData.setItemVisual(idx, { + symbolSize: symbolSize, + color: itemModel.get('itemStyle.normal.color') + || seriesData.getVisual('color'), + symbol: itemModel.getShallow('symbol') + }); + }); + + // TODO Text are wrong + symbolDraw.updateData(mpData); + this.group.add(symbolDraw.group); + + // Set host model for tooltip + // FIXME + mpData.eachItemGraphicEl(function (el) { + el.traverse(function (child) { + child.dataModel = mpModel; + }); + }); + + symbolDraw.__keep = true; + + symbolDraw.group.silent = mpModel.get('silent') || seriesModel.get('silent'); + } + }); + + /** + * @inner + * @param {module:echarts/coord/*} [coordSys] + * @param {module:echarts/model/Series} seriesModel + * @param {module:echarts/model/Model} mpModel + */ + function createList(coordSys, seriesModel, mpModel) { + var coordDimsInfos; + if (coordSys) { + coordDimsInfos = zrUtil.map(coordSys && coordSys.dimensions, function (coordDim) { + var info = seriesModel.getData().getDimensionInfo( + seriesModel.coordDimToDataDim(coordDim)[0] + ) || {}; // In map series data don't have lng and lat dimension. Fallback to same with coordSys + info.name = coordDim; + return info; + }); + } + else { + coordDimsInfos =[{ + name: 'value', + type: 'float' + }]; + } + + var mpData = new List(coordDimsInfos, mpModel); + var dataOpt = zrUtil.map(mpModel.get('data'), zrUtil.curry( + markerHelper.dataTransform, seriesModel + )); + if (coordSys) { + dataOpt = zrUtil.filter( + dataOpt, zrUtil.curry(markerHelper.dataFilter, coordSys) + ); + } + + mpData.initData(dataOpt, null, + coordSys ? markerHelper.dimValueGetter : function (item) { + return item.value; + } + ); + return mpData; + } + + + +/***/ }, +/* 395 */ +/***/ function(module, exports, __webpack_require__) { + + + + var zrUtil = __webpack_require__(4); + var numberUtil = __webpack_require__(7); + var indexOf = zrUtil.indexOf; + + function hasXOrY(item) { + return !(isNaN(parseFloat(item.x)) && isNaN(parseFloat(item.y))); + } + + function hasXAndY(item) { + return !isNaN(parseFloat(item.x)) && !isNaN(parseFloat(item.y)); + } + + function getPrecision(data, valueAxisDim, dataIndex) { + var precision = -1; + do { + precision = Math.max( + numberUtil.getPrecision(data.get( + valueAxisDim, dataIndex + )), + precision + ); + data = data.stackedOn; + } while (data); + + return precision; + } + + function markerTypeCalculatorWithExtent( + mlType, data, otherDataDim, targetDataDim, otherCoordIndex, targetCoordIndex + ) { + var coordArr = []; + var value = numCalculate(data, targetDataDim, mlType); + + var dataIndex = data.indicesOfNearest(targetDataDim, value, true)[0]; + coordArr[otherCoordIndex] = data.get(otherDataDim, dataIndex, true); + coordArr[targetCoordIndex] = data.get(targetDataDim, dataIndex, true); + + var precision = getPrecision(data, targetDataDim, dataIndex); + if (precision >= 0) { + coordArr[targetCoordIndex] = +coordArr[targetCoordIndex].toFixed(precision); + } + + return coordArr; + } + + var curry = zrUtil.curry; + // TODO Specified percent + var markerTypeCalculator = { + /** + * @method + * @param {module:echarts/data/List} data + * @param {string} baseAxisDim + * @param {string} valueAxisDim + */ + min: curry(markerTypeCalculatorWithExtent, 'min'), + /** + * @method + * @param {module:echarts/data/List} data + * @param {string} baseAxisDim + * @param {string} valueAxisDim + */ + max: curry(markerTypeCalculatorWithExtent, 'max'), + + /** + * @method + * @param {module:echarts/data/List} data + * @param {string} baseAxisDim + * @param {string} valueAxisDim + */ + average: curry(markerTypeCalculatorWithExtent, 'average') + }; + + /** + * Transform markPoint data item to format used in List by do the following + * 1. Calculate statistic like `max`, `min`, `average` + * 2. Convert `item.xAxis`, `item.yAxis` to `item.coord` array + * @param {module:echarts/model/Series} seriesModel + * @param {module:echarts/coord/*} [coordSys] + * @param {Object} item + * @return {Object} + */ + var dataTransform = function (seriesModel, item) { + var data = seriesModel.getData(); + var coordSys = seriesModel.coordinateSystem; + + // 1. If not specify the position with pixel directly + // 2. If `coord` is not a data array. Which uses `xAxis`, + // `yAxis` to specify the coord on each dimension + + // parseFloat first because item.x and item.y can be percent string like '20%' + if (item && !hasXAndY(item) && !zrUtil.isArray(item.coord) && coordSys) { + var dims = coordSys.dimensions; + var axisInfo = getAxisInfo(item, data, coordSys, seriesModel); + + // Clone the option + // Transform the properties xAxis, yAxis, radiusAxis, angleAxis, geoCoord to value + item = zrUtil.clone(item); + + if (item.type + && markerTypeCalculator[item.type] + && axisInfo.baseAxis && axisInfo.valueAxis + ) { + var otherCoordIndex = indexOf(dims, axisInfo.baseAxis.dim); + var targetCoordIndex = indexOf(dims, axisInfo.valueAxis.dim); + + item.coord = markerTypeCalculator[item.type]( + data, axisInfo.baseDataDim, axisInfo.valueDataDim, + otherCoordIndex, targetCoordIndex + ); + // Force to use the value of calculated value. + item.value = item.coord[targetCoordIndex]; + } + else { + // FIXME Only has one of xAxis and yAxis. + var coord = [ + item.xAxis != null ? item.xAxis : item.radiusAxis, + item.yAxis != null ? item.yAxis : item.angleAxis + ]; + // Each coord support max, min, average + for (var i = 0; i < 2; i++) { + if (markerTypeCalculator[coord[i]]) { + var dataDim = seriesModel.coordDimToDataDim(dims[i])[0]; + coord[i] = numCalculate(data, dataDim, coord[i]); + } + } + item.coord = coord; + } + } + return item; + }; + + var getAxisInfo = function (item, data, coordSys, seriesModel) { + var ret = {}; + + if (item.valueIndex != null || item.valueDim != null) { + ret.valueDataDim = item.valueIndex != null + ? data.getDimension(item.valueIndex) : item.valueDim; + ret.valueAxis = coordSys.getAxis(seriesModel.dataDimToCoordDim(ret.valueDataDim)); + ret.baseAxis = coordSys.getOtherAxis(ret.valueAxis); + ret.baseDataDim = seriesModel.coordDimToDataDim(ret.baseAxis.dim)[0]; + } + else { + ret.baseAxis = seriesModel.getBaseAxis(); + ret.valueAxis = coordSys.getOtherAxis(ret.baseAxis); + ret.baseDataDim = seriesModel.coordDimToDataDim(ret.baseAxis.dim)[0]; + ret.valueDataDim = seriesModel.coordDimToDataDim(ret.valueAxis.dim)[0]; + } + + return ret; + }; + + /** + * Filter data which is out of coordinateSystem range + * [dataFilter description] + * @param {module:echarts/coord/*} [coordSys] + * @param {Object} item + * @return {boolean} + */ + var dataFilter = function (coordSys, item) { + // Alwalys return true if there is no coordSys + return (coordSys && coordSys.containData && item.coord && !hasXOrY(item)) + ? coordSys.containData(item.coord) : true; + }; + + var dimValueGetter = function (item, dimName, dataIndex, dimIndex) { + // x, y, radius, angle + if (dimIndex < 2) { + return item.coord && item.coord[dimIndex]; + } + return item.value; + }; + + var numCalculate = function (data, valueDataDim, type) { + if (type === 'average') { + var sum = 0; + var count = 0; + data.each(valueDataDim, function (val, idx) { + if (!isNaN(val)) { + sum += val; + count++; + } + }, true); + return sum / count; + } + else { + return data.getDataExtent(valueDataDim, true)[type === 'max' ? 1 : 0]; + } + }; + + module.exports = { + dataTransform: dataTransform, + dataFilter: dataFilter, + dimValueGetter: dimValueGetter, + getAxisInfo: getAxisInfo, + numCalculate: numCalculate + }; + + +/***/ }, +/* 396 */ +/***/ function(module, exports, __webpack_require__) { + + + + var zrUtil = __webpack_require__(4); + + module.exports = __webpack_require__(1).extendComponentView({ + + type: 'marker', + + init: function () { + /** + * Markline grouped by series + * @private + * @type {module:zrender/core/util.HashMap} + */ + this.markerGroupMap = zrUtil.createHashMap(); + }, + + render: function (markerModel, ecModel, api) { + var markerGroupMap = this.markerGroupMap; + markerGroupMap.each(function (item) { + item.__keep = false; + }); + + var markerModelKey = this.type + 'Model'; + ecModel.eachSeries(function (seriesModel) { + var markerModel = seriesModel[markerModelKey]; + markerModel && this.renderSeries(seriesModel, markerModel, ecModel, api); + }, this); + + markerGroupMap.each(function (item) { + !item.__keep && this.group.remove(item.group); + }, this); + }, + + renderSeries: function () {} + }); + + +/***/ }, +/* 397 */ +/***/ function(module, exports, __webpack_require__) { + + + + __webpack_require__(398); + __webpack_require__(399); + + __webpack_require__(1).registerPreprocessor(function (opt) { + // Make sure markLine component is enabled + opt.markLine = opt.markLine || {}; + }); + + +/***/ }, +/* 398 */ +/***/ function(module, exports, __webpack_require__) { + + + + module.exports = __webpack_require__(393).extend({ + + type: 'markLine', + + defaultOption: { + zlevel: 0, + z: 5, + + symbol: ['circle', 'arrow'], + symbolSize: [8, 16], + + //symbolRotate: 0, + + precision: 2, + tooltip: { + trigger: 'item' + }, + label: { + normal: { + show: true, + position: 'end' + }, + emphasis: { + show: true + } + }, + lineStyle: { + normal: { + type: 'dashed' + }, + emphasis: { + width: 3 + } + }, + animationEasing: 'linear' + } + }); + + +/***/ }, +/* 399 */ +/***/ function(module, exports, __webpack_require__) { + + + + var zrUtil = __webpack_require__(4); + var List = __webpack_require__(98); + var numberUtil = __webpack_require__(7); + + var markerHelper = __webpack_require__(395); + + var LineDraw = __webpack_require__(210); + + var markLineTransform = function (seriesModel, coordSys, mlModel, item) { + var data = seriesModel.getData(); + // Special type markLine like 'min', 'max', 'average' + var mlType = item.type; + + if (!zrUtil.isArray(item) + && ( + mlType === 'min' || mlType === 'max' || mlType === 'average' + // In case + // data: [{ + // yAxis: 10 + // }] + || (item.xAxis != null || item.yAxis != null) + ) + ) { + var valueAxis; + var valueDataDim; + var value; + + if (item.yAxis != null || item.xAxis != null) { + valueDataDim = item.yAxis != null ? 'y' : 'x'; + valueAxis = coordSys.getAxis(valueDataDim); + + value = zrUtil.retrieve(item.yAxis, item.xAxis); + } + else { + var axisInfo = markerHelper.getAxisInfo(item, data, coordSys, seriesModel); + valueDataDim = axisInfo.valueDataDim; + valueAxis = axisInfo.valueAxis; + value = markerHelper.numCalculate(data, valueDataDim, mlType); + } + var valueIndex = valueDataDim === 'x' ? 0 : 1; + var baseIndex = 1 - valueIndex; + + var mlFrom = zrUtil.clone(item); + var mlTo = {}; + + mlFrom.type = null; + + mlFrom.coord = []; + mlTo.coord = []; + mlFrom.coord[baseIndex] = -Infinity; + mlTo.coord[baseIndex] = Infinity; + + var precision = mlModel.get('precision'); + if (precision >= 0 && typeof value === 'number') { + value = +value.toFixed(precision); + } + + mlFrom.coord[valueIndex] = mlTo.coord[valueIndex] = value; + + item = [mlFrom, mlTo, { // Extra option for tooltip and label + type: mlType, + valueIndex: item.valueIndex, + // Force to use the value of calculated value. + value: value + }]; + } + + 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 + item[2].type = item[2].type || ''; + + // Merge from option and to option into line option + zrUtil.merge(item[2], item[0]); + zrUtil.merge(item[2], item[1]); + + return item; + }; + + function isInifinity(val) { + return !isNaN(val) && !isFinite(val); + } + + // If a markLine has one dim + function ifMarkLineHasOnlyDim(dimIndex, fromCoord, toCoord, coordSys) { + var otherDimIndex = 1 - dimIndex; + var dimName = coordSys.dimensions[dimIndex]; + return isInifinity(fromCoord[otherDimIndex]) && isInifinity(toCoord[otherDimIndex]) + && fromCoord[dimIndex] === toCoord[dimIndex] && coordSys.getAxis(dimName).containData(fromCoord[dimIndex]); + } + + function markLineFilter(coordSys, item) { + if (coordSys.type === 'cartesian2d') { + var fromCoord = item[0].coord; + var toCoord = item[1].coord; + // In case + // { + // markLine: { + // data: [{ yAxis: 2 }] + // } + // } + if ( + fromCoord && toCoord && + (ifMarkLineHasOnlyDim(1, fromCoord, toCoord, coordSys) + || ifMarkLineHasOnlyDim(0, fromCoord, toCoord, coordSys)) + ) { + return true; + } + } + return markerHelper.dataFilter(coordSys, item[0]) + && markerHelper.dataFilter(coordSys, item[1]); + } + + function updateSingleMarkerEndLayout( + data, idx, isFrom, seriesModel, api + ) { + var coordSys = seriesModel.coordinateSystem; + var itemModel = data.getItemModel(idx); + + var point; + var xPx = numberUtil.parsePercent(itemModel.get('x'), api.getWidth()); + var yPx = numberUtil.parsePercent(itemModel.get('y'), api.getHeight()); + if (!isNaN(xPx) && !isNaN(yPx)) { + point = [xPx, yPx]; + } + else { + // Chart like bar may have there own marker positioning logic + if (seriesModel.getMarkerPosition) { + // Use the getMarkerPoisition + point = seriesModel.getMarkerPosition( + data.getValues(data.dimensions, idx) + ); + } + else { + var dims = coordSys.dimensions; + var x = data.get(dims[0], idx); + var y = data.get(dims[1], idx); + point = coordSys.dataToPoint([x, y]); + } + // Expand line to the edge of grid if value on one axis is Inifnity + // In case + // markLine: { + // data: [{ + // yAxis: 2 + // // or + // type: 'average' + // }] + // } + if (coordSys.type === 'cartesian2d') { + var xAxis = coordSys.getAxis('x'); + var yAxis = coordSys.getAxis('y'); + var dims = coordSys.dimensions; + if (isInifinity(data.get(dims[0], idx))) { + point[0] = xAxis.toGlobalCoord(xAxis.getExtent()[isFrom ? 0 : 1]); + } + else if (isInifinity(data.get(dims[1], idx))) { + point[1] = yAxis.toGlobalCoord(yAxis.getExtent()[isFrom ? 0 : 1]); + } + } + + // Use x, y if has any + if (!isNaN(xPx)) { + point[0] = xPx; + } + if (!isNaN(yPx)) { + point[1] = yPx; + } + } + + data.setItemLayout(idx, point); + } + + __webpack_require__(396).extend({ + + type: 'markLine', + + updateLayout: function (markLineModel, ecModel, api) { + ecModel.eachSeries(function (seriesModel) { + var mlModel = seriesModel.markLineModel; + if (mlModel) { + var mlData = mlModel.getData(); + var fromData = mlModel.__from; + var toData = mlModel.__to; + // Update visual and layout of from symbol and to symbol + fromData.each(function (idx) { + updateSingleMarkerEndLayout(fromData, idx, true, seriesModel, api); + updateSingleMarkerEndLayout(toData, idx, false, seriesModel, api); + }); + // Update layout of line + mlData.each(function (idx) { + mlData.setItemLayout(idx, [ + fromData.getItemLayout(idx), + toData.getItemLayout(idx) + ]); + }); + + this.markerGroupMap.get(seriesModel.id).updateLayout(); + + } + }, this); + }, + + renderSeries: function (seriesModel, mlModel, ecModel, api) { + var coordSys = seriesModel.coordinateSystem; + var seriesId = seriesModel.id; + var seriesData = seriesModel.getData(); + + var lineDrawMap = this.markerGroupMap; + var lineDraw = lineDrawMap.get(seriesId) + || lineDrawMap.set(seriesId, new LineDraw()); + this.group.add(lineDraw.group); + + var mlData = createList(coordSys, seriesModel, mlModel); + + var fromData = mlData.from; + var toData = mlData.to; + var lineData = mlData.line; + + mlModel.__from = fromData; + mlModel.__to = toData; + // Line data for tooltip and formatter + mlModel.setData(lineData); + + var symbolType = mlModel.get('symbol'); + var symbolSize = mlModel.get('symbolSize'); + if (!zrUtil.isArray(symbolType)) { + symbolType = [symbolType, symbolType]; + } + if (typeof symbolSize === 'number') { + symbolSize = [symbolSize, symbolSize]; + } + + // Update visual and layout of from symbol and to symbol + mlData.from.each(function (idx) { + updateDataVisualAndLayout(fromData, idx, true); + updateDataVisualAndLayout(toData, idx, false); + }); + + // Update visual and layout of line + lineData.each(function (idx) { + var lineColor = lineData.getItemModel(idx).get('lineStyle.normal.color'); + lineData.setItemVisual(idx, { + color: lineColor || fromData.getItemVisual(idx, 'color') + }); + lineData.setItemLayout(idx, [ + fromData.getItemLayout(idx), + toData.getItemLayout(idx) + ]); + + lineData.setItemVisual(idx, { + 'fromSymbolSize': fromData.getItemVisual(idx, 'symbolSize'), + 'fromSymbol': fromData.getItemVisual(idx, 'symbol'), + 'toSymbolSize': toData.getItemVisual(idx, 'symbolSize'), + 'toSymbol': toData.getItemVisual(idx, 'symbol') + }); + }); + + lineDraw.updateData(lineData); + + // Set host model for tooltip + // FIXME + mlData.line.eachItemGraphicEl(function (el, idx) { + el.traverse(function (child) { + child.dataModel = mlModel; + }); + }); + + function updateDataVisualAndLayout(data, idx, isFrom) { + var itemModel = data.getItemModel(idx); + + updateSingleMarkerEndLayout( + data, idx, isFrom, seriesModel, api + ); + + data.setItemVisual(idx, { + symbolSize: itemModel.get('symbolSize') || symbolSize[isFrom ? 0 : 1], + symbol: itemModel.get('symbol', true) || symbolType[isFrom ? 0 : 1], + color: itemModel.get('itemStyle.normal.color') || seriesData.getVisual('color') + }); + } + + lineDraw.__keep = true; + + lineDraw.group.silent = mlModel.get('silent') || seriesModel.get('silent'); + } + }); + + /** + * @inner + * @param {module:echarts/coord/*} coordSys + * @param {module:echarts/model/Series} seriesModel + * @param {module:echarts/model/Model} mpModel + */ + function createList(coordSys, seriesModel, mlModel) { + + var coordDimsInfos; + if (coordSys) { + coordDimsInfos = zrUtil.map(coordSys && coordSys.dimensions, function (coordDim) { + var info = seriesModel.getData().getDimensionInfo( + seriesModel.coordDimToDataDim(coordDim)[0] + ) || {}; // In map series data don't have lng and lat dimension. Fallback to same with coordSys + info.name = coordDim; + return info; + }); + } + else { + coordDimsInfos =[{ + name: 'value', + type: 'float' + }]; + } + + var fromData = new List(coordDimsInfos, mlModel); + var toData = new List(coordDimsInfos, mlModel); + // No dimensions + var lineData = new List([], mlModel); + + var optData = zrUtil.map(mlModel.get('data'), zrUtil.curry( + markLineTransform, seriesModel, coordSys, mlModel + )); + if (coordSys) { + optData = zrUtil.filter( + optData, zrUtil.curry(markLineFilter, coordSys) + ); + } + var dimValueGetter = coordSys ? markerHelper.dimValueGetter : function (item) { + return item.value; + }; + fromData.initData( + zrUtil.map(optData, function (item) { return item[0]; }), + null, dimValueGetter + ); + toData.initData( + zrUtil.map(optData, function (item) { return item[1]; }), + null, dimValueGetter + ); + lineData.initData( + zrUtil.map(optData, function (item) { return item[2]; }) + ); + lineData.hasItemOption = true; + return { + from: fromData, + to: toData, + line: lineData + }; + } + + +/***/ }, +/* 400 */ +/***/ function(module, exports, __webpack_require__) { + + + + __webpack_require__(401); + __webpack_require__(402); + + __webpack_require__(1).registerPreprocessor(function (opt) { + // Make sure markArea component is enabled + opt.markArea = opt.markArea || {}; + }); + + +/***/ }, +/* 401 */ +/***/ function(module, exports, __webpack_require__) { + + + + module.exports = __webpack_require__(393).extend({ + + type: 'markArea', + + defaultOption: { + zlevel: 0, + // PENDING + z: 1, + tooltip: { + trigger: 'item' + }, + // markArea should fixed on the coordinate system + animation: false, + label: { + normal: { + show: true, + position: 'top' + }, + emphasis: { + show: true, + position: 'top' + } + }, + itemStyle: { + normal: { + // color and borderColor default to use color from series + // color: 'auto' + // borderColor: 'auto' + borderWidth: 0 + } + } + } + }); + + +/***/ }, +/* 402 */ +/***/ function(module, exports, __webpack_require__) { + + // TODO Better on polar + + + var zrUtil = __webpack_require__(4); + var List = __webpack_require__(98); + var numberUtil = __webpack_require__(7); + var graphic = __webpack_require__(18); + var colorUtil = __webpack_require__(31); + + var markerHelper = __webpack_require__(395); + + var markAreaTransform = function (seriesModel, coordSys, maModel, item) { + var lt = markerHelper.dataTransform(seriesModel, item[0]); + var rb = markerHelper.dataTransform(seriesModel, item[1]); + var retrieve = zrUtil.retrieve; + + // FIXME make sure lt is less than rb + var ltCoord = lt.coord; + var rbCoord = rb.coord; + ltCoord[0] = retrieve(ltCoord[0], -Infinity); + ltCoord[1] = retrieve(ltCoord[1], -Infinity); + + rbCoord[0] = retrieve(rbCoord[0], Infinity); + rbCoord[1] = retrieve(rbCoord[1], Infinity); + + // Merge option into one + var result = zrUtil.mergeAll([{}, lt, rb]); + + result.coord = [ + lt.coord, rb.coord + ]; + result.x0 = lt.x; + result.y0 = lt.y; + result.x1 = rb.x; + result.y1 = rb.y; + return result; + }; + + function isInifinity(val) { + return !isNaN(val) && !isFinite(val); + } + + // If a markArea has one dim + function ifMarkLineHasOnlyDim(dimIndex, fromCoord, toCoord, coordSys) { + var otherDimIndex = 1 - dimIndex; + return isInifinity(fromCoord[otherDimIndex]) && isInifinity(toCoord[otherDimIndex]); + } + + function markAreaFilter(coordSys, item) { + var fromCoord = item.coord[0]; + var toCoord = item.coord[1]; + if (coordSys.type === 'cartesian2d') { + // In case + // { + // markArea: { + // data: [{ yAxis: 2 }] + // } + // } + if ( + fromCoord && toCoord && + (ifMarkLineHasOnlyDim(1, fromCoord, toCoord, coordSys) + || ifMarkLineHasOnlyDim(0, fromCoord, toCoord, coordSys)) + ) { + return true; + } + } + return markerHelper.dataFilter(coordSys, { + coord: fromCoord, + x: item.x0, + y: item.y0 + }) + || markerHelper.dataFilter(coordSys, { + coord: toCoord, + x: item.x1, + y: item.y1 + }); + } + + // dims can be ['x0', 'y0'], ['x1', 'y1'], ['x0', 'y1'], ['x1', 'y0'] + function getSingleMarkerEndPoint(data, idx, dims, seriesModel, api) { + var coordSys = seriesModel.coordinateSystem; + var itemModel = data.getItemModel(idx); + + var point; + var xPx = numberUtil.parsePercent(itemModel.get(dims[0]), api.getWidth()); + var yPx = numberUtil.parsePercent(itemModel.get(dims[1]), api.getHeight()); + if (!isNaN(xPx) && !isNaN(yPx)) { + point = [xPx, yPx]; + } + else { + // Chart like bar may have there own marker positioning logic + if (seriesModel.getMarkerPosition) { + // Use the getMarkerPoisition + point = seriesModel.getMarkerPosition( + data.getValues(dims, idx) + ); + } + else { + var x = data.get(dims[0], idx); + var y = data.get(dims[1], idx); + point = coordSys.dataToPoint([x, y], true); + } + if (coordSys.type === 'cartesian2d') { + var xAxis = coordSys.getAxis('x'); + var yAxis = coordSys.getAxis('y'); + var x = data.get(dims[0], idx); + var y = data.get(dims[1], idx); + if (isInifinity(x)) { + point[0] = xAxis.toGlobalCoord(xAxis.getExtent()[dims[0] === 'x0' ? 0 : 1]); + } + else if (isInifinity(y)) { + point[1] = yAxis.toGlobalCoord(yAxis.getExtent()[dims[1] === 'y0' ? 0 : 1]); + } + } + + // Use x, y if has any + if (!isNaN(xPx)) { + point[0] = xPx; + } + if (!isNaN(yPx)) { + point[1] = yPx; + } + } + + return point; + } + + var dimPermutations = [['x0', 'y0'], ['x1', 'y0'], ['x1', 'y1'], ['x0', 'y1']]; + + __webpack_require__(396).extend({ + + type: 'markArea', + + updateLayout: function (markAreaModel, ecModel, api) { + ecModel.eachSeries(function (seriesModel) { + var maModel = seriesModel.markAreaModel; + if (maModel) { + var areaData = maModel.getData(); + areaData.each(function (idx) { + var points = zrUtil.map(dimPermutations, function (dim) { + return getSingleMarkerEndPoint(areaData, idx, dim, seriesModel, api); + }); + // Layout + areaData.setItemLayout(idx, points); + var el = areaData.getItemGraphicEl(idx); + el.setShape('points', points); + }); + } + }, this); + }, + + renderSeries: function (seriesModel, maModel, ecModel, api) { + var coordSys = seriesModel.coordinateSystem; + var seriesName = seriesModel.name; + var seriesData = seriesModel.getData(); + + var areaGroupMap = this.markerGroupMap; + var polygonGroup = areaGroupMap.get(seriesName) + || areaGroupMap.set(seriesName, {group: new graphic.Group()}); + + this.group.add(polygonGroup.group); + polygonGroup.__keep = true; + + var areaData = createList(coordSys, seriesModel, maModel); + + // Line data for tooltip and formatter + maModel.setData(areaData); + + // Update visual and layout of line + areaData.each(function (idx) { + // Layout + areaData.setItemLayout(idx, zrUtil.map(dimPermutations, function (dim) { + return getSingleMarkerEndPoint(areaData, idx, dim, seriesModel, api); + })); + + // Visual + areaData.setItemVisual(idx, { + color: seriesData.getVisual('color') + }); + }); + + + areaData.diff(polygonGroup.__data) + .add(function (idx) { + var polygon = new graphic.Polygon({ + shape: { + points: areaData.getItemLayout(idx) + } + }); + areaData.setItemGraphicEl(idx, polygon); + polygonGroup.group.add(polygon); + }) + .update(function (newIdx, oldIdx) { + var polygon = polygonGroup.__data.getItemGraphicEl(oldIdx); + graphic.updateProps(polygon, { + shape: { + points: areaData.getItemLayout(newIdx) + } + }, maModel, newIdx); + polygonGroup.group.add(polygon); + areaData.setItemGraphicEl(newIdx, polygon); + }) + .remove(function (idx) { + var polygon = polygonGroup.__data.getItemGraphicEl(idx); + polygonGroup.group.remove(polygon); + }) + .execute(); + + areaData.eachItemGraphicEl(function (polygon, idx) { + var itemModel = areaData.getItemModel(idx); + var labelModel = itemModel.getModel('label.normal'); + var labelHoverModel = itemModel.getModel('label.emphasis'); + var color = areaData.getItemVisual(idx, 'color'); + polygon.useStyle( + zrUtil.defaults( + itemModel.getModel('itemStyle.normal').getItemStyle(), + { + fill: colorUtil.modifyAlpha(color, 0.4), + stroke: color + } + ) + ); + + polygon.hoverStyle = itemModel.getModel('itemStyle.normal').getItemStyle(); + + var defaultValue = areaData.getName(idx) || ''; + var textColor = color || polygon.style.fill; + + if (labelModel.getShallow('show')) { + graphic.setText(polygon.style, labelModel, textColor); + polygon.style.text = zrUtil.retrieve( + maModel.getFormattedLabel(idx, 'normal'), + defaultValue + ); + } + else { + polygon.style.text = ''; + } + + if (labelHoverModel.getShallow('show')) { + graphic.setText(polygon.hoverStyle, labelHoverModel, textColor); + polygon.hoverStyle.text = zrUtil.retrieve( + maModel.getFormattedLabel(idx, 'emphasis'), + defaultValue + ); + } + else { + polygon.hoverStyle.text = ''; + } + + graphic.setHoverStyle(polygon, {}); + + polygon.dataModel = maModel; + }); + + polygonGroup.__data = areaData; + + polygonGroup.group.silent = maModel.get('silent') || seriesModel.get('silent'); + } + }); + + /** + * @inner + * @param {module:echarts/coord/*} coordSys + * @param {module:echarts/model/Series} seriesModel + * @param {module:echarts/model/Model} mpModel + */ + function createList(coordSys, seriesModel, maModel) { + + var coordDimsInfos; + var areaData; + var dims = ['x0', 'y0', 'x1', 'y1']; + if (coordSys) { + coordDimsInfos = zrUtil.map(coordSys && coordSys.dimensions, function (coordDim) { + var info = seriesModel.getData().getDimensionInfo( + seriesModel.coordDimToDataDim(coordDim)[0] + ) || {}; // In map series data don't have lng and lat dimension. Fallback to same with coordSys + info.name = coordDim; + return info; + }); + areaData = new List(zrUtil.map(dims, function (dim, idx) { + return { + name: dim, + type: coordDimsInfos[idx % 2].type + }; + }), maModel); + } + else { + coordDimsInfos =[{ + name: 'value', + type: 'float' + }]; + areaData = new List(coordDimsInfos, maModel); + } + + var optData = zrUtil.map(maModel.get('data'), zrUtil.curry( + markAreaTransform, seriesModel, coordSys, maModel + )); + if (coordSys) { + optData = zrUtil.filter( + optData, zrUtil.curry(markAreaFilter, coordSys) + ); + } + + var dimValueGetter = coordSys ? function (item, dimName, dataIndex, dimIndex) { + return item.coord[Math.floor(dimIndex / 2)][dimIndex % 2]; + } : function (item) { + return item.value; + }; + areaData.initData(optData, null, dimValueGetter); + areaData.hasItemOption = true; + return areaData; + } + + +/***/ }, +/* 403 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * DataZoom component entry + */ + + + var echarts = __webpack_require__(1); + + echarts.registerPreprocessor(__webpack_require__(404)); + + __webpack_require__(405); + __webpack_require__(406); + __webpack_require__(407); + __webpack_require__(409); + + + +/***/ }, +/* 404 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * @file Timeline preprocessor + */ + + + var zrUtil = __webpack_require__(4); + + module.exports = function (option) { + var timelineOpt = option && option.timeline; + + if (!zrUtil.isArray(timelineOpt)) { + timelineOpt = timelineOpt ? [timelineOpt] : []; + } + + zrUtil.each(timelineOpt, function (opt) { + if (!opt) { + return; + } + + compatibleEC2(opt); + }); + }; + + function compatibleEC2(opt) { + var type = opt.type; + + var ec2Types = {'number': 'value', 'time': 'time'}; + + // Compatible with ec2 + if (ec2Types[type]) { + opt.axisType = ec2Types[type]; + delete opt.type; + } + + transferItem(opt); + + if (has(opt, 'controlPosition')) { + var controlStyle = opt.controlStyle || (opt.controlStyle = {}); + if (!has(controlStyle, 'position')) { + controlStyle.position = opt.controlPosition; + } + if (controlStyle.position === 'none' && !has(controlStyle, 'show')) { + controlStyle.show = false; + delete controlStyle.position; + } + delete opt.controlPosition; + } + + zrUtil.each(opt.data || [], function (dataItem) { + if (zrUtil.isObject(dataItem) && !zrUtil.isArray(dataItem)) { + if (!has(dataItem, 'value') && has(dataItem, 'name')) { + // In ec2, using name as value. + dataItem.value = dataItem.name; + } + transferItem(dataItem); + } + }); + } + + function transferItem(opt) { + var itemStyle = opt.itemStyle || (opt.itemStyle = {}); + + var itemStyleEmphasis = itemStyle.emphasis || (itemStyle.emphasis = {}); + + // Transfer label out + var label = opt.label || (opt.label || {}); + var labelNormal = label.normal || (label.normal = {}); + var excludeLabelAttr = {normal: 1, emphasis: 1}; + + zrUtil.each(label, function (value, name) { + if (!excludeLabelAttr[name] && !has(labelNormal, name)) { + labelNormal[name] = value; + } + }); + + if (itemStyleEmphasis.label && !has(label, 'emphasis')) { + label.emphasis = itemStyleEmphasis.label; + delete itemStyleEmphasis.label; + } + } + + function has(obj, attr) { + return obj.hasOwnProperty(attr); + } + + + +/***/ }, +/* 405 */ +/***/ function(module, exports, __webpack_require__) { + + + + __webpack_require__(69).registerSubTypeDefaulter('timeline', function () { + // Only slider now. + return 'slider'; + }); + + + +/***/ }, +/* 406 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * @file Timeilne action + */ + + + var echarts = __webpack_require__(1); + var zrUtil = __webpack_require__(4); + + echarts.registerAction( + + {type: 'timelineChange', event: 'timelineChanged', update: 'prepareAndUpdate'}, + + function (payload, ecModel) { + + var timelineModel = ecModel.getComponent('timeline'); + if (timelineModel && payload.currentIndex != null) { + timelineModel.setCurrentIndex(payload.currentIndex); + + if (!timelineModel.get('loop', true) && timelineModel.isIndexMax()) { + timelineModel.setPlayState(false); + } + } + + // Set normalized currentIndex to payload. + ecModel.resetOption('timeline'); + + return zrUtil.defaults({ + currentIndex: timelineModel.option.currentIndex + }, payload); + } + ); + + echarts.registerAction( + + {type: 'timelinePlayChange', event: 'timelinePlayChanged', update: 'update'}, + + function (payload, ecModel) { + var timelineModel = ecModel.getComponent('timeline'); + if (timelineModel && payload.playState != null) { + timelineModel.setPlayState(payload.playState); + } + } + ); + + + +/***/ }, +/* 407 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * @file Silder timeline model + */ + + + var TimelineModel = __webpack_require__(408); + var zrUtil = __webpack_require__(4); + var modelUtil = __webpack_require__(5); + + var SliderTimelineModel = TimelineModel.extend({ + + type: 'timeline.slider', + + /** + * @protected + */ + defaultOption: { + + backgroundColor: 'rgba(0,0,0,0)', // 时间轴背景颜色 + borderColor: '#ccc', // 时间轴边框颜色 + borderWidth: 0, // 时间轴边框线宽,单位px,默认为0(无边框) + + orient: 'horizontal', // 'vertical' + inverse: false, + + tooltip: { // boolean or Object + trigger: 'item' // data item may also have tootip attr. + }, + + symbol: 'emptyCircle', + symbolSize: 10, + + lineStyle: { + show: true, + width: 2, + color: '#304654' + }, + label: { // 文本标签 + position: 'auto', // auto left right top bottom + // When using number, label position is not + // restricted by viewRect. + // positive: right/bottom, negative: left/top + normal: { + show: true, + interval: 'auto', + rotate: 0, + // formatter: null, + textStyle: { // 其余属性默认使用全局文本样式,详见TEXTSTYLE + color: '#304654' + } + }, + emphasis: { + show: true, + textStyle: { // 其余属性默认使用全局文本样式,详见TEXTSTYLE + color: '#c23531' + } + } + }, + itemStyle: { + normal: { + color: '#304654', + borderWidth: 1 + }, + emphasis: { + color: '#c23531' + } + }, + + checkpointStyle: { + symbol: 'circle', + symbolSize: 13, + color: '#c23531', + borderWidth: 5, + borderColor: 'rgba(194,53,49, 0.5)', + animation: true, + animationDuration: 300, + animationEasing: 'quinticInOut' + }, + + controlStyle: { + show: true, + showPlayBtn: true, + showPrevBtn: true, + showNextBtn: true, + itemSize: 22, + itemGap: 12, + position: 'left', // 'left' 'right' 'top' 'bottom' + 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', // jshint ignore:line + 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', // jshint ignore:line + 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', // jshint ignore:line + 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', // jshint ignore:line + normal: { + color: '#304654', + borderColor: '#304654', + borderWidth: 1 + }, + emphasis: { + color: '#c23531', + borderColor: '#c23531', + borderWidth: 2 + } + }, + data: [] + } + + }); + + zrUtil.mixin(SliderTimelineModel, modelUtil.dataFormatMixin); + + module.exports = SliderTimelineModel; + + +/***/ }, +/* 408 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * @file Timeline model + */ + + + var ComponentModel = __webpack_require__(69); + var List = __webpack_require__(98); + var zrUtil = __webpack_require__(4); + var modelUtil = __webpack_require__(5); + + var TimelineModel = ComponentModel.extend({ + + type: 'timeline', + + layoutMode: 'box', + + /** + * @protected + */ + defaultOption: { + + zlevel: 0, // 一级层叠 + z: 4, // 二级层叠 + show: true, + + axisType: 'time', // 模式是时间类型,支持 value, category + + realtime: true, + + left: '20%', + top: null, + right: '20%', + bottom: 0, + width: null, + height: 40, + padding: 5, + + controlPosition: 'left', // 'left' 'right' 'top' 'bottom' 'none' + autoPlay: false, + rewind: false, // 反向播放 + loop: true, + playInterval: 2000, // 播放时间间隔,单位ms + + currentIndex: 0, + + itemStyle: { + normal: {}, + emphasis: {} + }, + label: { + normal: { + textStyle: { + color: '#000' + } + }, + emphasis: {} + }, + + data: [] + }, + + /** + * @override + */ + init: function (option, parentModel, ecModel) { + + /** + * @private + * @type {module:echarts/data/List} + */ + this._data; + + /** + * @private + * @type {Array.} + */ + this._names; + + this.mergeDefaultAndTheme(option, ecModel); + this._initData(); + }, + + /** + * @override + */ + mergeOption: function (option) { + TimelineModel.superApply(this, 'mergeOption', arguments); + this._initData(); + }, + + /** + * @param {number} [currentIndex] + */ + setCurrentIndex: function (currentIndex) { + if (currentIndex == null) { + currentIndex = this.option.currentIndex; + } + var count = this._data.count(); + + if (this.option.loop) { + currentIndex = (currentIndex % count + count) % count; + } + else { + currentIndex >= count && (currentIndex = count - 1); + currentIndex < 0 && (currentIndex = 0); + } + + this.option.currentIndex = currentIndex; + }, + + /** + * @return {number} currentIndex + */ + getCurrentIndex: function () { + return this.option.currentIndex; + }, + + /** + * @return {boolean} + */ + isIndexMax: function () { + return this.getCurrentIndex() >= this._data.count() - 1; + }, + + /** + * @param {boolean} state true: play, false: stop + */ + setPlayState: function (state) { + this.option.autoPlay = !!state; + }, + + /** + * @return {boolean} true: play, false: stop + */ + getPlayState: function () { + return !!this.option.autoPlay; + }, + + /** + * @private + */ + _initData: function () { + var thisOption = this.option; + var dataArr = thisOption.data || []; + var axisType = thisOption.axisType; + var names = this._names = []; + + if (axisType === 'category') { + var idxArr = []; + zrUtil.each(dataArr, function (item, index) { + var value = modelUtil.getDataItemValue(item); + var newItem; + + if (zrUtil.isObject(item)) { + newItem = zrUtil.clone(item); + newItem.value = index; + } + else { + newItem = index; + } + + idxArr.push(newItem); + + if (!zrUtil.isString(value) && (value == null || isNaN(value))) { + value = ''; + } + + names.push(value + ''); + }); + dataArr = idxArr; + } + + var dimType = ({category: 'ordinal', time: 'time'})[axisType] || 'number'; + + var data = this._data = new List([{name: 'value', type: dimType}], this); + + data.initData(dataArr, names); + }, + + getData: function () { + return this._data; + }, + + /** + * @public + * @return {Array.} categoreis + */ + getCategories: function () { + if (this.get('axisType') === 'category') { + return this._names.slice(); + } + } + + }); + + module.exports = TimelineModel; + + +/***/ }, +/* 409 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * @file Silder timeline view + */ + + + var zrUtil = __webpack_require__(4); + var graphic = __webpack_require__(18); + var layout = __webpack_require__(71); + var TimelineView = __webpack_require__(410); + var TimelineAxis = __webpack_require__(411); + var symbolUtil = __webpack_require__(111); + var axisHelper = __webpack_require__(101); + var BoundingRect = __webpack_require__(9); + var matrix = __webpack_require__(11); + var numberUtil = __webpack_require__(7); + var formatUtil = __webpack_require__(6); + var encodeHTML = formatUtil.encodeHTML; + + var bind = zrUtil.bind; + var each = zrUtil.each; + + var PI = Math.PI; + + module.exports = TimelineView.extend({ + + type: 'timeline.slider', + + init: function (ecModel, api) { + + this.api = api; + + /** + * @private + * @type {module:echarts/component/timeline/TimelineAxis} + */ + this._axis; + + /** + * @private + * @type {module:zrender/core/BoundingRect} + */ + this._viewRect; + + /** + * @type {number} + */ + this._timer; + + /** + * @type {module:zrender/Element} + */ + this._currentPointer; + + /** + * @type {module:zrender/container/Group} + */ + this._mainGroup; + + /** + * @type {module:zrender/container/Group} + */ + this._labelGroup; + }, + + /** + * @override + */ + render: function (timelineModel, ecModel, api, payload) { + this.model = timelineModel; + this.api = api; + this.ecModel = ecModel; + + this.group.removeAll(); + + if (timelineModel.get('show', true)) { + + var layoutInfo = this._layout(timelineModel, api); + var mainGroup = this._createGroup('mainGroup'); + var labelGroup = this._createGroup('labelGroup'); + + /** + * @private + * @type {module:echarts/component/timeline/TimelineAxis} + */ + var axis = this._axis = this._createAxis(layoutInfo, timelineModel); + + timelineModel.formatTooltip = function (dataIndex) { + return encodeHTML(axis.scale.getLabel(dataIndex)); + }; + + each( + ['AxisLine', 'AxisTick', 'Control', 'CurrentPointer'], + function (name) { + this['_render' + name](layoutInfo, mainGroup, axis, timelineModel); + }, + this + ); + + this._renderAxisLabel(layoutInfo, labelGroup, axis, timelineModel); + this._position(layoutInfo, timelineModel); + } + + this._doPlayStop(); + }, + + /** + * @override + */ + remove: function () { + this._clearTimer(); + this.group.removeAll(); + }, + + /** + * @override + */ + dispose: function () { + this._clearTimer(); + }, + + _layout: function (timelineModel, api) { + var labelPosOpt = timelineModel.get('label.normal.position'); + var orient = timelineModel.get('orient'); + var viewRect = getViewRect(timelineModel, api); + // Auto label offset. + if (labelPosOpt == null || labelPosOpt === 'auto') { + labelPosOpt = orient === 'horizontal' + ? ((viewRect.y + viewRect.height / 2) < api.getHeight() / 2 ? '-' : '+') + : ((viewRect.x + viewRect.width / 2) < api.getWidth() / 2 ? '+' : '-'); + } + else if (isNaN(labelPosOpt)) { + labelPosOpt = ({ + horizontal: {top: '-', bottom: '+'}, + vertical: {left: '-', right: '+'} + })[orient][labelPosOpt]; + } + + var labelAlignMap = { + horizontal: 'center', + vertical: (labelPosOpt >= 0 || labelPosOpt === '+') ? 'left' : 'right' + }; + + var labelBaselineMap = { + horizontal: (labelPosOpt >= 0 || labelPosOpt === '+') ? 'top' : 'bottom', + vertical: 'middle' + }; + var rotationMap = { + horizontal: 0, + vertical: PI / 2 + }; + + // Position + var mainLength = orient === 'vertical' ? viewRect.height : viewRect.width; + + var controlModel = timelineModel.getModel('controlStyle'); + var showControl = controlModel.get('show'); + var controlSize = showControl ? controlModel.get('itemSize') : 0; + var controlGap = showControl ? controlModel.get('itemGap') : 0; + var sizePlusGap = controlSize + controlGap; + + // Special label rotate. + var labelRotation = timelineModel.get('label.normal.rotate') || 0; + labelRotation = labelRotation * PI / 180; // To radian. + + var playPosition; + var prevBtnPosition; + var nextBtnPosition; + var axisExtent; + var controlPosition = controlModel.get('position', true); + var showControl = controlModel.get('show', true); + var showPlayBtn = showControl && controlModel.get('showPlayBtn', true); + var showPrevBtn = showControl && controlModel.get('showPrevBtn', true); + var showNextBtn = showControl && controlModel.get('showNextBtn', true); + var xLeft = 0; + var xRight = mainLength; + + // position[0] means left, position[1] means middle. + if (controlPosition === 'left' || controlPosition === 'bottom') { + showPlayBtn && (playPosition = [0, 0], xLeft += sizePlusGap); + showPrevBtn && (prevBtnPosition = [xLeft, 0], xLeft += sizePlusGap); + showNextBtn && (nextBtnPosition = [xRight - controlSize, 0], xRight -= sizePlusGap); + } + else { // 'top' 'right' + showPlayBtn && (playPosition = [xRight - controlSize, 0], xRight -= sizePlusGap); + showPrevBtn && (prevBtnPosition = [0, 0], xLeft += sizePlusGap); + showNextBtn && (nextBtnPosition = [xRight - controlSize, 0], xRight -= sizePlusGap); + } + axisExtent = [xLeft, xRight]; + + if (timelineModel.get('inverse')) { + axisExtent.reverse(); + } + + return { + viewRect: viewRect, + mainLength: mainLength, + orient: orient, + + rotation: rotationMap[orient], + labelRotation: labelRotation, + labelPosOpt: labelPosOpt, + labelAlign: timelineModel.get('label.normal.textStyle.align') || labelAlignMap[orient], + labelBaseline: timelineModel.get('label.normal.textStyle.baseline') || labelBaselineMap[orient], + + // Based on mainGroup. + playPosition: playPosition, + prevBtnPosition: prevBtnPosition, + nextBtnPosition: nextBtnPosition, + axisExtent: axisExtent, + + controlSize: controlSize, + controlGap: controlGap + }; + }, + + _position: function (layoutInfo, timelineModel) { + // Position is be called finally, because bounding rect is needed for + // adapt content to fill viewRect (auto adapt offset). + + // Timeline may be not all in the viewRect when 'offset' is specified + // as a number, because it is more appropriate that label aligns at + // 'offset' but not the other edge defined by viewRect. + + var mainGroup = this._mainGroup; + var labelGroup = this._labelGroup; + + var viewRect = layoutInfo.viewRect; + if (layoutInfo.orient === 'vertical') { + // transfrom to horizontal, inverse rotate by left-top point. + var m = matrix.create(); + var rotateOriginX = viewRect.x; + var rotateOriginY = viewRect.y + viewRect.height; + matrix.translate(m, m, [-rotateOriginX, -rotateOriginY]); + matrix.rotate(m, m, -PI / 2); + matrix.translate(m, m, [rotateOriginX, rotateOriginY]); + viewRect = viewRect.clone(); + viewRect.applyTransform(m); + } + + var viewBound = getBound(viewRect); + var mainBound = getBound(mainGroup.getBoundingRect()); + var labelBound = getBound(labelGroup.getBoundingRect()); + + var mainPosition = mainGroup.position; + var labelsPosition = labelGroup.position; + + labelsPosition[0] = mainPosition[0] = viewBound[0][0]; + + var labelPosOpt = layoutInfo.labelPosOpt; + + if (isNaN(labelPosOpt)) { // '+' or '-' + var mainBoundIdx = labelPosOpt === '+' ? 0 : 1; + toBound(mainPosition, mainBound, viewBound, 1, mainBoundIdx); + toBound(labelsPosition, labelBound, viewBound, 1, 1 - mainBoundIdx); + } + else { + var mainBoundIdx = labelPosOpt >= 0 ? 0 : 1; + toBound(mainPosition, mainBound, viewBound, 1, mainBoundIdx); + labelsPosition[1] = mainPosition[1] + labelPosOpt; + } + + mainGroup.attr('position', mainPosition); + labelGroup.attr('position', labelsPosition); + mainGroup.rotation = labelGroup.rotation = layoutInfo.rotation; + + setOrigin(mainGroup); + setOrigin(labelGroup); + + function setOrigin(targetGroup) { + var pos = targetGroup.position; + targetGroup.origin = [ + viewBound[0][0] - pos[0], + viewBound[1][0] - pos[1] + ]; + } + + function getBound(rect) { + // [[xmin, xmax], [ymin, ymax]] + return [ + [rect.x, rect.x + rect.width], + [rect.y, rect.y + rect.height] + ]; + } + + function toBound(fromPos, from, to, dimIdx, boundIdx) { + fromPos[dimIdx] += to[dimIdx][boundIdx] - from[dimIdx][boundIdx]; + } + }, + + _createAxis: function (layoutInfo, timelineModel) { + var data = timelineModel.getData(); + var axisType = timelineModel.get('axisType'); + + var scale = axisHelper.createScaleByModel(timelineModel, axisType); + var dataExtent = data.getDataExtent('value'); + scale.setExtent(dataExtent[0], dataExtent[1]); + this._customizeScale(scale, data); + scale.niceTicks(); + + var axis = new TimelineAxis('value', scale, layoutInfo.axisExtent, axisType); + axis.model = timelineModel; + + return axis; + }, + + _customizeScale: function (scale, data) { + + scale.getTicks = function () { + return data.mapArray(['value'], function (value) { + return value; + }); + }; + + scale.getTicksLabels = function () { + return zrUtil.map(this.getTicks(), scale.getLabel, scale); + }; + }, + + _createGroup: function (name) { + var newGroup = this['_' + name] = new graphic.Group(); + this.group.add(newGroup); + return newGroup; + }, + + _renderAxisLine: function (layoutInfo, group, axis, timelineModel) { + var axisExtent = axis.getExtent(); + + if (!timelineModel.get('lineStyle.show')) { + return; + } + + group.add(new graphic.Line({ + shape: { + x1: axisExtent[0], y1: 0, + x2: axisExtent[1], y2: 0 + }, + style: zrUtil.extend( + {lineCap: 'round'}, + timelineModel.getModel('lineStyle').getLineStyle() + ), + silent: true, + z2: 1 + })); + }, + + /** + * @private + */ + _renderAxisTick: function (layoutInfo, group, axis, timelineModel) { + var data = timelineModel.getData(); + var ticks = axis.scale.getTicks(); + + each(ticks, function (value, dataIndex) { + + var tickCoord = axis.dataToCoord(value); + var itemModel = data.getItemModel(dataIndex); + var itemStyleModel = itemModel.getModel('itemStyle.normal'); + var hoverStyleModel = itemModel.getModel('itemStyle.emphasis'); + var symbolOpt = { + position: [tickCoord, 0], + onclick: bind(this._changeTimeline, this, dataIndex) + }; + var el = giveSymbol(itemModel, itemStyleModel, group, symbolOpt); + graphic.setHoverStyle(el, hoverStyleModel.getItemStyle()); + + if (itemModel.get('tooltip')) { + el.dataIndex = dataIndex; + el.dataModel = timelineModel; + } + else { + el.dataIndex = el.dataModel = null; + } + + }, this); + }, + + /** + * @private + */ + _renderAxisLabel: function (layoutInfo, group, axis, timelineModel) { + var labelModel = timelineModel.getModel('label.normal'); + + if (!labelModel.get('show')) { + return; + } + + var data = timelineModel.getData(); + var ticks = axis.scale.getTicks(); + var labels = axisHelper.getFormattedLabels( + axis, labelModel.get('formatter') + ); + var labelInterval = axis.getLabelInterval(); + + each(ticks, function (tick, dataIndex) { + if (axis.isLabelIgnored(dataIndex, labelInterval)) { + return; + } + + var itemModel = data.getItemModel(dataIndex); + var itemTextStyleModel = itemModel.getModel('label.normal.textStyle'); + var hoverTextStyleModel = itemModel.getModel('label.emphasis.textStyle'); + var tickCoord = axis.dataToCoord(tick); + var textEl = new graphic.Text({ + style: { + text: labels[dataIndex], + textAlign: layoutInfo.labelAlign, + textVerticalAlign: layoutInfo.labelBaseline, + textFont: itemTextStyleModel.getFont(), + fill: itemTextStyleModel.getTextColor() + }, + position: [tickCoord, 0], + rotation: layoutInfo.labelRotation - layoutInfo.rotation, + onclick: bind(this._changeTimeline, this, dataIndex), + silent: false + }); + + group.add(textEl); + graphic.setHoverStyle(textEl, hoverTextStyleModel.getItemStyle()); + + }, this); + }, + + /** + * @private + */ + _renderControl: function (layoutInfo, group, axis, timelineModel) { + var controlSize = layoutInfo.controlSize; + var rotation = layoutInfo.rotation; + + var itemStyle = timelineModel.getModel('controlStyle.normal').getItemStyle(); + var hoverStyle = timelineModel.getModel('controlStyle.emphasis').getItemStyle(); + var rect = [0, -controlSize / 2, controlSize, controlSize]; + var playState = timelineModel.getPlayState(); + var inverse = timelineModel.get('inverse', true); + + makeBtn( + layoutInfo.nextBtnPosition, + 'controlStyle.nextIcon', + bind(this._changeTimeline, this, inverse ? '-' : '+') + ); + makeBtn( + layoutInfo.prevBtnPosition, + 'controlStyle.prevIcon', + bind(this._changeTimeline, this, inverse ? '+' : '-') + ); + makeBtn( + layoutInfo.playPosition, + 'controlStyle.' + (playState ? 'stopIcon' : 'playIcon'), + bind(this._handlePlayClick, this, !playState), + true + ); + + function makeBtn(position, iconPath, onclick, willRotate) { + if (!position) { + return; + } + var opt = { + position: position, + origin: [controlSize / 2, 0], + rotation: willRotate ? -rotation : 0, + rectHover: true, + style: itemStyle, + onclick: onclick + }; + var btn = makeIcon(timelineModel, iconPath, rect, opt); + group.add(btn); + graphic.setHoverStyle(btn, hoverStyle); + } + }, + + _renderCurrentPointer: function (layoutInfo, group, axis, timelineModel) { + var data = timelineModel.getData(); + var currentIndex = timelineModel.getCurrentIndex(); + var pointerModel = data.getItemModel(currentIndex).getModel('checkpointStyle'); + var me = this; + + var callback = { + onCreate: function (pointer) { + pointer.draggable = true; + pointer.drift = bind(me._handlePointerDrag, me); + pointer.ondragend = bind(me._handlePointerDragend, me); + pointerMoveTo(pointer, currentIndex, axis, timelineModel, true); + }, + onUpdate: function (pointer) { + pointerMoveTo(pointer, currentIndex, axis, timelineModel); + } + }; + + // Reuse when exists, for animation and drag. + this._currentPointer = giveSymbol( + pointerModel, pointerModel, this._mainGroup, {}, this._currentPointer, callback + ); + }, + + _handlePlayClick: function (nextState) { + this._clearTimer(); + this.api.dispatchAction({ + type: 'timelinePlayChange', + playState: nextState, + from: this.uid + }); + }, + + _handlePointerDrag: function (dx, dy, e) { + this._clearTimer(); + this._pointerChangeTimeline([e.offsetX, e.offsetY]); + }, + + _handlePointerDragend: function (e) { + this._pointerChangeTimeline([e.offsetX, e.offsetY], true); + }, + + _pointerChangeTimeline: function (mousePos, trigger) { + var toCoord = this._toAxisCoord(mousePos)[0]; + + var axis = this._axis; + var axisExtent = numberUtil.asc(axis.getExtent().slice()); + + toCoord > axisExtent[1] && (toCoord = axisExtent[1]); + toCoord < axisExtent[0] && (toCoord = axisExtent[0]); + + this._currentPointer.position[0] = toCoord; + this._currentPointer.dirty(); + + var targetDataIndex = this._findNearestTick(toCoord); + var timelineModel = this.model; + + if (trigger || ( + targetDataIndex !== timelineModel.getCurrentIndex() + && timelineModel.get('realtime') + )) { + this._changeTimeline(targetDataIndex); + } + }, + + _doPlayStop: function () { + this._clearTimer(); + + if (this.model.getPlayState()) { + this._timer = setTimeout( + bind(handleFrame, this), + this.model.get('playInterval') + ); + } + + function handleFrame() { + // Do not cache + var timelineModel = this.model; + this._changeTimeline( + timelineModel.getCurrentIndex() + + (timelineModel.get('rewind', true) ? -1 : 1) + ); + } + }, + + _toAxisCoord: function (vertex) { + var trans = this._mainGroup.getLocalTransform(); + return graphic.applyTransform(vertex, trans, true); + }, + + _findNearestTick: function (axisCoord) { + var data = this.model.getData(); + var dist = Infinity; + var targetDataIndex; + var axis = this._axis; + + data.each(['value'], function (value, dataIndex) { + var coord = axis.dataToCoord(value); + var d = Math.abs(coord - axisCoord); + if (d < dist) { + dist = d; + targetDataIndex = dataIndex; + } + }); + + return targetDataIndex; + }, + + _clearTimer: function () { + if (this._timer) { + clearTimeout(this._timer); + this._timer = null; + } + }, + + _changeTimeline: function (nextIndex) { + var currentIndex = this.model.getCurrentIndex(); + + if (nextIndex === '+') { + nextIndex = currentIndex + 1; + } + else if (nextIndex === '-') { + nextIndex = currentIndex - 1; + } + + this.api.dispatchAction({ + type: 'timelineChange', + currentIndex: nextIndex, + from: this.uid + }); + } + + }); + + function getViewRect(model, api) { + return layout.getLayoutRect( + model.getBoxLayoutParams(), + { + width: api.getWidth(), + height: api.getHeight() + }, + model.get('padding') + ); + } + + function makeIcon(timelineModel, objPath, rect, opts) { + var icon = graphic.makePath( + timelineModel.get(objPath).replace(/^path:\/\//, ''), + zrUtil.clone(opts || {}), + new BoundingRect(rect[0], rect[1], rect[2], rect[3]), + 'center' + ); + + return icon; + } + + /** + * Create symbol or update symbol + * opt: basic position and event handlers + */ + function giveSymbol(hostModel, itemStyleModel, group, opt, symbol, callback) { + var color = itemStyleModel.get('color'); + + if (!symbol) { + var symbolType = hostModel.get('symbol'); + symbol = symbolUtil.createSymbol(symbolType, -1, -1, 2, 2, color); + symbol.setStyle('strokeNoScale', true); + group.add(symbol); + callback && callback.onCreate(symbol); + } + else { + symbol.setColor(color); + group.add(symbol); // Group may be new, also need to add. + callback && callback.onUpdate(symbol); + } + + // Style + var itemStyle = itemStyleModel.getItemStyle(['color', 'symbol', 'symbolSize']); + symbol.setStyle(itemStyle); + + // Transform and events. + opt = zrUtil.merge({ + rectHover: true, + z2: 100 + }, opt, true); + + var symbolSize = hostModel.get('symbolSize'); + symbolSize = symbolSize instanceof Array + ? symbolSize.slice() + : [+symbolSize, +symbolSize]; + symbolSize[0] /= 2; + symbolSize[1] /= 2; + opt.scale = symbolSize; + + var symbolOffset = hostModel.get('symbolOffset'); + if (symbolOffset) { + var pos = opt.position = opt.position || [0, 0]; + pos[0] += numberUtil.parsePercent(symbolOffset[0], symbolSize[0]); + pos[1] += numberUtil.parsePercent(symbolOffset[1], symbolSize[1]); + } + + var symbolRotate = hostModel.get('symbolRotate'); + opt.rotation = (symbolRotate || 0) * Math.PI / 180 || 0; + + symbol.attr(opt); + + // FIXME + // (1) When symbol.style.strokeNoScale is true and updateTransform is not performed, + // getBoundingRect will return wrong result. + // (This is supposed to be resolved in zrender, but it is a little difficult to + // leverage performance and auto updateTransform) + // (2) All of ancesters of symbol do not scale, so we can just updateTransform symbol. + symbol.updateTransform(); + + return symbol; + } + + function pointerMoveTo(pointer, dataIndex, axis, timelineModel, noAnimation) { + if (pointer.dragging) { + return; + } + + var pointerModel = timelineModel.getModel('checkpointStyle'); + var toCoord = axis.dataToCoord(timelineModel.getData().get(['value'], dataIndex)); + + if (noAnimation || !pointerModel.get('animation', true)) { + pointer.attr({position: [toCoord, 0]}); + } + else { + pointer.stopAnimation(true); + pointer.animateTo( + {position: [toCoord, 0]}, + pointerModel.get('animationDuration', true), + pointerModel.get('animationEasing', true) + ); + } + } + + + +/***/ }, +/* 410 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * @file Timeline view + */ + + + // var zrUtil = require('zrender/lib/core/util'); + // var graphic = require('../../util/graphic'); + var ComponentView = __webpack_require__(79); + + module.exports = ComponentView.extend({ + + type: 'timeline' + }); + + + +/***/ }, +/* 411 */ +/***/ function(module, exports, __webpack_require__) { + + + + var zrUtil = __webpack_require__(4); + var Axis = __webpack_require__(100); + var axisHelper = __webpack_require__(101); + + /** + * Extend axis 2d + * @constructor module:echarts/coord/cartesian/Axis2D + * @extends {module:echarts/coord/cartesian/Axis} + * @param {string} dim + * @param {*} scale + * @param {Array.} coordExtent + * @param {string} axisType + * @param {string} position + */ + var TimelineAxis = function (dim, scale, coordExtent, axisType) { + + Axis.call(this, dim, scale, coordExtent); + + /** + * Axis type + * - 'category' + * - 'value' + * - 'time' + * - 'log' + * @type {string} + */ + this.type = axisType || 'value'; + + /** + * @private + * @type {number} + */ + this._autoLabelInterval; + + /** + * Axis model + * @param {module:echarts/component/TimelineModel} + */ + this.model = null; + }; + + TimelineAxis.prototype = { + + constructor: TimelineAxis, + + /** + * @public + * @return {number} + */ + getLabelInterval: function () { + var timelineModel = this.model; + var labelModel = timelineModel.getModel('label.normal'); + var labelInterval = labelModel.get('interval'); + + if (labelInterval != null && labelInterval != 'auto') { + return labelInterval; + } + + var labelInterval = this._autoLabelInterval; + + if (!labelInterval) { + labelInterval = this._autoLabelInterval = axisHelper.getAxisLabelInterval( + zrUtil.map(this.scale.getTicks(), this.dataToCoord, this), + axisHelper.getFormattedLabels(this, labelModel.get('formatter')), + labelModel.getModel('textStyle').getFont(), + timelineModel.get('orient') === 'horizontal' + ); + } + + return labelInterval; + }, + + /** + * If label is ignored. + * Automatically used when axis is category and label can not be all shown + * @public + * @param {number} idx + * @return {boolean} + */ + isLabelIgnored: function (idx) { + if (this.type === 'category') { + var labelInterval = this.getLabelInterval(); + return ((typeof labelInterval === 'function') + && !labelInterval(idx, this.scale.getLabel(idx))) + || idx % (labelInterval + 1); + } + } + + }; + + zrUtil.inherits(TimelineAxis, Axis); + + module.exports = TimelineAxis; + + +/***/ }, +/* 412 */ +/***/ function(module, exports, __webpack_require__) { + + + + __webpack_require__(413); + __webpack_require__(414); + + __webpack_require__(415); + __webpack_require__(416); + __webpack_require__(417); + __webpack_require__(418); + __webpack_require__(423); + + +/***/ }, +/* 413 */ +/***/ function(module, exports, __webpack_require__) { + + + + var featureManager = __webpack_require__(357); + var zrUtil = __webpack_require__(4); + + var ToolboxModel = __webpack_require__(1).extendComponentModel({ + + type: 'toolbox', + + layoutMode: { + type: 'box', + ignoreSize: true + }, + + mergeDefaultAndTheme: function (option) { + ToolboxModel.superApply(this, 'mergeDefaultAndTheme', arguments); + + zrUtil.each(this.option.feature, function (featureOpt, featureName) { + var Feature = featureManager.get(featureName); + Feature && zrUtil.merge(featureOpt, Feature.defaultOption); + }); + }, + + defaultOption: { + + show: true, + + z: 6, + + zlevel: 0, + + orient: 'horizontal', + + left: 'right', + + top: 'top', + + // right + // bottom + + backgroundColor: 'transparent', + + borderColor: '#ccc', + + borderWidth: 0, + + padding: 5, + + itemSize: 15, + + itemGap: 8, + + showTitle: true, + + iconStyle: { + normal: { + borderColor: '#666', + color: 'none' + }, + emphasis: { + borderColor: '#3E98C5' + } + } + // textStyle: {}, + + // feature + } + }); + + module.exports = ToolboxModel; + + +/***/ }, +/* 414 */ +/***/ function(module, exports, __webpack_require__) { + + /* WEBPACK VAR INJECTION */(function(process) { + + var featureManager = __webpack_require__(357); + var zrUtil = __webpack_require__(4); + var graphic = __webpack_require__(18); + var Model = __webpack_require__(12); + var DataDiffer = __webpack_require__(99); + var listComponentHelper = __webpack_require__(325); + var textContain = __webpack_require__(8); + + module.exports = __webpack_require__(1).extendComponentView({ + + type: 'toolbox', + + render: function (toolboxModel, ecModel, api, payload) { + var group = this.group; + group.removeAll(); + + if (!toolboxModel.get('show')) { + return; + } + + var itemSize = +toolboxModel.get('itemSize'); + var featureOpts = toolboxModel.get('feature') || {}; + var features = this._features || (this._features = {}); + + var featureNames = []; + zrUtil.each(featureOpts, function (opt, name) { + featureNames.push(name); + }); + + (new DataDiffer(this._featureNames || [], featureNames)) + .add(process) + .update(process) + .remove(zrUtil.curry(process, null)) + .execute(); + + // Keep for diff. + this._featureNames = featureNames; + + function process(newIndex, oldIndex) { + var featureName = featureNames[newIndex]; + var oldName = featureNames[oldIndex]; + var featureOpt = featureOpts[featureName]; + var featureModel = new Model(featureOpt, toolboxModel, toolboxModel.ecModel); + var feature; + + if (featureName && !oldName) { // Create + if (isUserFeatureName(featureName)) { + feature = { + model: featureModel, + onclick: featureModel.option.onclick, + featureName: featureName + }; + } + else { + var Feature = featureManager.get(featureName); + if (!Feature) { + return; + } + feature = new Feature(featureModel, ecModel, api); + } + features[featureName] = feature; + } + else { + feature = features[oldName]; + // If feature does not exsit. + if (!feature) { + return; + } + feature.model = featureModel; + feature.ecModel = ecModel; + feature.api = api; + } + + if (!featureName && oldName) { + feature.dispose && feature.dispose(ecModel, api); + return; + } + + if (!featureModel.get('show') || feature.unusable) { + feature.remove && feature.remove(ecModel, api); + return; + } + + createIconPaths(featureModel, feature, featureName); + + featureModel.setIconStatus = function (iconName, status) { + var option = this.option; + var iconPaths = this.iconPaths; + option.iconStatus = option.iconStatus || {}; + option.iconStatus[iconName] = status; + // FIXME + iconPaths[iconName] && iconPaths[iconName].trigger(status); + }; + + if (feature.render) { + feature.render(featureModel, ecModel, api, payload); + } + } + + function createIconPaths(featureModel, feature, featureName) { + var iconStyleModel = featureModel.getModel('iconStyle'); + + // If one feature has mutiple icon. they are orginaized as + // { + // icon: { + // foo: '', + // bar: '' + // }, + // title: { + // foo: '', + // bar: '' + // } + // } + var icons = feature.getIcons ? feature.getIcons() : featureModel.get('icon'); + var titles = featureModel.get('title') || {}; + if (typeof icons === 'string') { + var icon = icons; + var title = titles; + icons = {}; + titles = {}; + icons[featureName] = icon; + titles[featureName] = title; + } + var iconPaths = featureModel.iconPaths = {}; + zrUtil.each(icons, function (icon, iconName) { + var normalStyle = iconStyleModel.getModel('normal').getItemStyle(); + var hoverStyle = iconStyleModel.getModel('emphasis').getItemStyle(); + + var style = { + x: -itemSize / 2, + y: -itemSize / 2, + width: itemSize, + height: itemSize + }; + var path = icon.indexOf('image://') === 0 + ? ( + style.image = icon.slice(8), + new graphic.Image({style: style}) + ) + : graphic.makePath( + icon.replace('path://', ''), + { + style: normalStyle, + hoverStyle: hoverStyle, + rectHover: true + }, + style, + 'center' + ); + + graphic.setHoverStyle(path); + + if (toolboxModel.get('showTitle')) { + path.__title = titles[iconName]; + path.on('mouseover', function () { + // Should not reuse above hoverStyle, which might be modified. + var hoverStyle = iconStyleModel.getModel('emphasis').getItemStyle(); + path.setStyle({ + text: titles[iconName], + textPosition: hoverStyle.textPosition || 'bottom', + textFill: hoverStyle.fill || hoverStyle.stroke || '#000', + textAlign: hoverStyle.textAlign || 'center' + }); + }) + .on('mouseout', function () { + path.setStyle({ + textFill: null + }); + }); + } + path.trigger(featureModel.get('iconStatus.' + iconName) || 'normal'); + + group.add(path); + path.on('click', zrUtil.bind( + feature.onclick, feature, ecModel, api, iconName + )); + + iconPaths[iconName] = path; + }); + } + + listComponentHelper.layout(group, toolboxModel, api); + // Render background after group is layout + // FIXME + listComponentHelper.addBackground(group, toolboxModel); + + // Adjust icon title positions to avoid them out of screen + group.eachChild(function (icon) { + var titleText = icon.__title; + var hoverStyle = icon.hoverStyle; + // May be background element + if (hoverStyle && titleText) { + var rect = textContain.getBoundingRect( + titleText, hoverStyle.font + ); + var offsetX = icon.position[0] + group.position[0]; + var offsetY = icon.position[1] + group.position[1] + itemSize; + + var needPutOnTop = false; + if (offsetY + rect.height > api.getHeight()) { + hoverStyle.textPosition = 'top'; + needPutOnTop = true; + } + var topOffset = needPutOnTop ? (-5 - rect.height) : (itemSize + 8); + if (offsetX + rect.width / 2 > api.getWidth()) { + hoverStyle.textPosition = ['100%', topOffset]; + hoverStyle.textAlign = 'right'; + } + else if (offsetX - rect.width / 2 < 0) { + hoverStyle.textPosition = [0, topOffset]; + hoverStyle.textAlign = 'left'; + } + } + }); + }, + + updateView: function (toolboxModel, ecModel, api, payload) { + zrUtil.each(this._features, function (feature) { + feature.updateView && feature.updateView(feature.model, ecModel, api, payload); + }); + }, + + updateLayout: function (toolboxModel, ecModel, api, payload) { + zrUtil.each(this._features, function (feature) { + feature.updateLayout && feature.updateLayout(feature.model, ecModel, api, payload); + }); + }, + + remove: function (ecModel, api) { + zrUtil.each(this._features, function (feature) { + feature.remove && feature.remove(ecModel, api); + }); + this.group.removeAll(); + }, + + dispose: function (ecModel, api) { + zrUtil.each(this._features, function (feature) { + feature.dispose && feature.dispose(ecModel, api); + }); + } + }); + + function isUserFeatureName(featureName) { + return featureName.indexOf('my') === 0; + } + + + /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(310))) + +/***/ }, +/* 415 */ +/***/ function(module, exports, __webpack_require__) { + + + + var env = __webpack_require__(2); + + function SaveAsImage (model) { + this.model = model; + } + + SaveAsImage.defaultOption = { + show: true, + 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', + title: '保存为图片', + type: 'png', + // Default use option.backgroundColor + // backgroundColor: '#fff', + name: '', + excludeComponents: ['toolbox'], + pixelRatio: 1, + lang: ['右键另存为图片'] + }; + + SaveAsImage.prototype.unusable = !env.canvasSupported; + + var proto = SaveAsImage.prototype; + + proto.onclick = function (ecModel, api) { + var model = this.model; + var title = model.get('name') || ecModel.get('title.0.text') || 'echarts'; + var $a = document.createElement('a'); + var type = model.get('type', true) || 'png'; + $a.download = title + '.' + type; + $a.target = '_blank'; + var url = api.getConnectedDataURL({ + type: type, + backgroundColor: model.get('backgroundColor', true) + || ecModel.get('backgroundColor') || '#fff', + excludeComponents: model.get('excludeComponents'), + pixelRatio: model.get('pixelRatio') + }); + $a.href = url; + // Chrome and Firefox + if (typeof MouseEvent === 'function' && !env.browser.ie && !env.browser.edge) { + var evt = new MouseEvent('click', { + view: window, + bubbles: true, + cancelable: false + }); + $a.dispatchEvent(evt); + } + // IE + else { + var lang = model.get('lang'); + var html = '' + + '' + + '' + + ''; + var tab = window.open(); + tab.document.write(html); + } + }; + + __webpack_require__(357).register( + 'saveAsImage', SaveAsImage + ); + + module.exports = SaveAsImage; + + +/***/ }, +/* 416 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + + var zrUtil = __webpack_require__(4); + + function MagicType(model) { + this.model = model; + } + + MagicType.defaultOption = { + show: true, + type: [], + // Icon group + icon: { + line: 'M4.1,28.9h7.1l9.3-22l7.4,38l9.7-19.7l3,12.8h14.9M4.1,58h51.4', + bar: 'M6.7,22.9h10V48h-10V22.9zM24.9,13h10v35h-10V13zM43.2,2h10v46h-10V2zM3.1,58h53.7', + 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 + tiled: 'M2.3,2.2h22.8V25H2.3V2.2z M35,2.2h22.8V25H35V2.2zM2.3,35h22.8v22.8H2.3V35z M35,35h22.8v22.8H35V35z' + }, + title: { + line: '切换为折线图', + bar: '切换为柱状图', + stack: '切换为堆叠', + tiled: '切换为平铺' + }, + option: {}, + seriesIndex: {} + }; + + var proto = MagicType.prototype; + + proto.getIcons = function () { + var model = this.model; + var availableIcons = model.get('icon'); + var icons = {}; + zrUtil.each(model.get('type'), function (type) { + if (availableIcons[type]) { + icons[type] = availableIcons[type]; + } + }); + return icons; + }; + + var seriesOptGenreator = { + 'line': function (seriesType, seriesId, seriesModel, model) { + if (seriesType === 'bar') { + return zrUtil.merge({ + id: seriesId, + type: 'line', + // Preserve data related option + data: seriesModel.get('data'), + stack: seriesModel.get('stack'), + markPoint: seriesModel.get('markPoint'), + markLine: seriesModel.get('markLine') + }, model.get('option.line') || {}, true); + } + }, + 'bar': function (seriesType, seriesId, seriesModel, model) { + if (seriesType === 'line') { + return zrUtil.merge({ + id: seriesId, + type: 'bar', + // Preserve data related option + data: seriesModel.get('data'), + stack: seriesModel.get('stack'), + markPoint: seriesModel.get('markPoint'), + markLine: seriesModel.get('markLine') + }, model.get('option.bar') || {}, true); + } + }, + 'stack': function (seriesType, seriesId, seriesModel, model) { + if (seriesType === 'line' || seriesType === 'bar') { + return zrUtil.merge({ + id: seriesId, + stack: '__ec_magicType_stack__' + }, model.get('option.stack') || {}, true); + } + }, + 'tiled': function (seriesType, seriesId, seriesModel, model) { + if (seriesType === 'line' || seriesType === 'bar') { + return zrUtil.merge({ + id: seriesId, + stack: '' + }, model.get('option.tiled') || {}, true); + } + } + }; + + var radioTypes = [ + ['line', 'bar'], + ['stack', 'tiled'] + ]; + + proto.onclick = function (ecModel, api, type) { + var model = this.model; + var seriesIndex = model.get('seriesIndex.' + type); + // Not supported magicType + if (!seriesOptGenreator[type]) { + return; + } + var newOption = { + series: [] + }; + var generateNewSeriesTypes = function (seriesModel) { + var seriesType = seriesModel.subType; + var seriesId = seriesModel.id; + var newSeriesOpt = seriesOptGenreator[type]( + seriesType, seriesId, seriesModel, model + ); + if (newSeriesOpt) { + // PENDING If merge original option? + zrUtil.defaults(newSeriesOpt, seriesModel.option); + newOption.series.push(newSeriesOpt); + } + // Modify boundaryGap + var coordSys = seriesModel.coordinateSystem; + if (coordSys && coordSys.type === 'cartesian2d' && (type === 'line' || type === 'bar')) { + var categoryAxis = coordSys.getAxesByScale('ordinal')[0]; + if (categoryAxis) { + var axisDim = categoryAxis.dim; + var axisType = axisDim + 'Axis'; + var axisModel = ecModel.queryComponents({ + mainType: axisType, + index: seriesModel.get(name + 'Index'), + id: seriesModel.get(name + 'Id') + })[0]; + var axisIndex = axisModel.componentIndex; + + newOption[axisType] = newOption[axisType] || []; + for (var i = 0; i <= axisIndex; i++) { + newOption[axisType][axisIndex] = newOption[axisType][axisIndex] || {}; + } + newOption[axisType][axisIndex].boundaryGap = type === 'bar' ? true : false; + } + } + }; + + zrUtil.each(radioTypes, function (radio) { + if (zrUtil.indexOf(radio, type) >= 0) { + zrUtil.each(radio, function (item) { + model.setIconStatus(item, 'normal'); + }); + } + }); + + model.setIconStatus(type, 'emphasis'); + + ecModel.eachComponent( + { + mainType: 'series', + query: seriesIndex == null ? null : { + seriesIndex: seriesIndex + } + }, generateNewSeriesTypes + ); + api.dispatchAction({ + type: 'changeMagicType', + currentType: type, + newOption: newOption + }); + }; + + var echarts = __webpack_require__(1); + echarts.registerAction({ + type: 'changeMagicType', + event: 'magicTypeChanged', + update: 'prepareAndUpdate' + }, function (payload, ecModel) { + ecModel.mergeOption(payload.newOption); + }); + + __webpack_require__(357).register('magicType', MagicType); + + module.exports = MagicType; + + +/***/ }, +/* 417 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * @module echarts/component/toolbox/feature/DataView + */ + + + + var zrUtil = __webpack_require__(4); + var eventTool = __webpack_require__(88); + + + var BLOCK_SPLITER = new Array(60).join('-'); + var ITEM_SPLITER = '\t'; + /** + * Group series into two types + * 1. on category axis, like line, bar + * 2. others, like scatter, pie + * @param {module:echarts/model/Global} ecModel + * @return {Object} + * @inner + */ + function groupSeries(ecModel) { + var seriesGroupByCategoryAxis = {}; + var otherSeries = []; + var meta = []; + ecModel.eachRawSeries(function (seriesModel) { + var coordSys = seriesModel.coordinateSystem; + + if (coordSys && (coordSys.type === 'cartesian2d' || coordSys.type === 'polar')) { + var baseAxis = coordSys.getBaseAxis(); + if (baseAxis.type === 'category') { + var key = baseAxis.dim + '_' + baseAxis.index; + if (!seriesGroupByCategoryAxis[key]) { + seriesGroupByCategoryAxis[key] = { + categoryAxis: baseAxis, + valueAxis: coordSys.getOtherAxis(baseAxis), + series: [] + }; + meta.push({ + axisDim: baseAxis.dim, + axisIndex: baseAxis.index + }); + } + seriesGroupByCategoryAxis[key].series.push(seriesModel); + } + else { + otherSeries.push(seriesModel); + } + } + else { + otherSeries.push(seriesModel); + } + }); + + return { + seriesGroupByCategoryAxis: seriesGroupByCategoryAxis, + other: otherSeries, + meta: meta + }; + } + + /** + * Assemble content of series on cateogory axis + * @param {Array.} series + * @return {string} + * @inner + */ + function assembleSeriesWithCategoryAxis(series) { + var tables = []; + zrUtil.each(series, function (group, key) { + var categoryAxis = group.categoryAxis; + var valueAxis = group.valueAxis; + var valueAxisDim = valueAxis.dim; + + var headers = [' '].concat(zrUtil.map(group.series, function (series) { + return series.name; + })); + var columns = [categoryAxis.model.getCategories()]; + zrUtil.each(group.series, function (series) { + columns.push(series.getRawData().mapArray(valueAxisDim, function (val) { + return val; + })); + }); + // Assemble table content + var lines = [headers.join(ITEM_SPLITER)]; + for (var i = 0; i < columns[0].length; i++) { + var items = []; + for (var j = 0; j < columns.length; j++) { + items.push(columns[j][i]); + } + lines.push(items.join(ITEM_SPLITER)); + } + tables.push(lines.join('\n')); + }); + return tables.join('\n\n' + BLOCK_SPLITER + '\n\n'); + } + + /** + * Assemble content of other series + * @param {Array.} series + * @return {string} + * @inner + */ + function assembleOtherSeries(series) { + return zrUtil.map(series, function (series) { + var data = series.getRawData(); + var lines = [series.name]; + var vals = []; + data.each(data.dimensions, function () { + var argLen = arguments.length; + var dataIndex = arguments[argLen - 1]; + var name = data.getName(dataIndex); + for (var i = 0; i < argLen - 1; i++) { + vals[i] = arguments[i]; + } + lines.push((name ? (name + ITEM_SPLITER) : '') + vals.join(ITEM_SPLITER)); + }); + return lines.join('\n'); + }).join('\n\n' + BLOCK_SPLITER + '\n\n'); + } + + /** + * @param {module:echarts/model/Global} + * @return {string} + * @inner + */ + function getContentFromModel(ecModel) { + + var result = groupSeries(ecModel); + + return { + value: zrUtil.filter([ + assembleSeriesWithCategoryAxis(result.seriesGroupByCategoryAxis), + assembleOtherSeries(result.other) + ], function (str) { + return str.replace(/[\n\t\s]/g, ''); + }).join('\n\n' + BLOCK_SPLITER + '\n\n'), + + meta: result.meta + }; + } + + + function trim(str) { + return str.replace(/^\s\s*/, '').replace(/\s\s*$/, ''); + } + /** + * If a block is tsv format + */ + function isTSVFormat(block) { + // Simple method to find out if a block is tsv format + var firstLine = block.slice(0, block.indexOf('\n')); + if (firstLine.indexOf(ITEM_SPLITER) >= 0) { + return true; + } + } + + var itemSplitRegex = new RegExp('[' + ITEM_SPLITER + ']+', 'g'); + /** + * @param {string} tsv + * @return {Array.} + */ + function parseTSVContents(tsv) { + var tsvLines = tsv.split(/\n+/g); + var headers = trim(tsvLines.shift()).split(itemSplitRegex); + + var categories = []; + var series = zrUtil.map(headers, function (header) { + return { + name: header, + data: [] + }; + }); + for (var i = 0; i < tsvLines.length; i++) { + var items = trim(tsvLines[i]).split(itemSplitRegex); + categories.push(items.shift()); + for (var j = 0; j < items.length; j++) { + series[j] && (series[j].data[i] = items[j]); + } + } + return { + series: series, + categories: categories + }; + } + + /** + * @param {string} str + * @return {Array.} + * @inner + */ + function parseListContents(str) { + var lines = str.split(/\n+/g); + var seriesName = trim(lines.shift()); + + var data = []; + for (var i = 0; i < lines.length; i++) { + var items = trim(lines[i]).split(itemSplitRegex); + var name = ''; + var value; + var hasName = false; + if (isNaN(items[0])) { // First item is name + hasName = true; + name = items[0]; + items = items.slice(1); + data[i] = { + name: name, + value: [] + }; + value = data[i].value; + } + else { + value = data[i] = []; + } + for (var j = 0; j < items.length; j++) { + value.push(+items[j]); + } + if (value.length === 1) { + hasName ? (data[i].value = value[0]) : (data[i] = value[0]); + } + } + + return { + name: seriesName, + data: data + }; + } + + /** + * @param {string} str + * @param {Array.} blockMetaList + * @return {Object} + * @inner + */ + function parseContents(str, blockMetaList) { + var blocks = str.split(new RegExp('\n*' + BLOCK_SPLITER + '\n*', 'g')); + var newOption = { + series: [] + }; + zrUtil.each(blocks, function (block, idx) { + if (isTSVFormat(block)) { + var result = parseTSVContents(block); + var blockMeta = blockMetaList[idx]; + var axisKey = blockMeta.axisDim + 'Axis'; + + if (blockMeta) { + newOption[axisKey] = newOption[axisKey] || []; + newOption[axisKey][blockMeta.axisIndex] = { + data: result.categories + }; + newOption.series = newOption.series.concat(result.series); + } + } + else { + var result = parseListContents(block); + newOption.series.push(result); + } + }); + return newOption; + } + + /** + * @alias {module:echarts/component/toolbox/feature/DataView} + * @constructor + * @param {module:echarts/model/Model} model + */ + function DataView(model) { + + this._dom = null; + + this.model = model; + } + + DataView.defaultOption = { + show: true, + readOnly: false, + optionToContent: null, + contentToOption: null, + + 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', + title: '数据视图', + lang: ['数据视图', '关闭', '刷新'], + backgroundColor: '#fff', + textColor: '#000', + textareaColor: '#fff', + textareaBorderColor: '#333', + buttonColor: '#c23531', + buttonTextColor: '#fff' + }; + + DataView.prototype.onclick = function (ecModel, api) { + var container = api.getDom(); + var model = this.model; + if (this._dom) { + container.removeChild(this._dom); + } + var root = document.createElement('div'); + root.style.cssText = 'position:absolute;left:5px;top:5px;bottom:5px;right:5px;'; + root.style.backgroundColor = model.get('backgroundColor') || '#fff'; + + // Create elements + var header = document.createElement('h4'); + var lang = model.get('lang') || []; + header.innerHTML = lang[0] || model.get('title'); + header.style.cssText = 'margin: 10px 20px;'; + header.style.color = model.get('textColor'); + + var viewMain = document.createElement('div'); + var textarea = document.createElement('textarea'); + viewMain.style.cssText = 'display:block;width:100%;overflow:auto;'; + + var optionToContent = model.get('optionToContent'); + var contentToOption = model.get('contentToOption'); + var result = getContentFromModel(ecModel); + if (typeof optionToContent === 'function') { + var htmlOrDom = optionToContent(api.getOption()); + if (typeof htmlOrDom === 'string') { + viewMain.innerHTML = htmlOrDom; + } + else if (zrUtil.isDom(htmlOrDom)) { + viewMain.appendChild(htmlOrDom); + } + } + else { + // Use default textarea + viewMain.appendChild(textarea); + textarea.readOnly = model.get('readOnly'); + textarea.style.cssText = 'width:100%;height:100%;font-family:monospace;font-size:14px;line-height:1.6rem;'; + textarea.style.color = model.get('textColor'); + textarea.style.borderColor = model.get('textareaBorderColor'); + textarea.style.backgroundColor = model.get('textareaColor'); + textarea.value = result.value; + } + + var blockMetaList = result.meta; + + var buttonContainer = document.createElement('div'); + buttonContainer.style.cssText = 'position:absolute;bottom:0;left:0;right:0;'; + + var buttonStyle = 'float:right;margin-right:20px;border:none;' + + 'cursor:pointer;padding:2px 5px;font-size:12px;border-radius:3px'; + var closeButton = document.createElement('div'); + var refreshButton = document.createElement('div'); + + buttonStyle += ';background-color:' + model.get('buttonColor'); + buttonStyle += ';color:' + model.get('buttonTextColor'); + + var self = this; + + function close() { + container.removeChild(root); + self._dom = null; + } + eventTool.addEventListener(closeButton, 'click', close); + + eventTool.addEventListener(refreshButton, 'click', function () { + var newOption; + try { + if (typeof contentToOption === 'function') { + newOption = contentToOption(viewMain, api.getOption()); + } + else { + newOption = parseContents(textarea.value, blockMetaList); + } + } + catch (e) { + close(); + throw new Error('Data view format error ' + e); + } + if (newOption) { + api.dispatchAction({ + type: 'changeDataView', + newOption: newOption + }); + } + + close(); + }); + + closeButton.innerHTML = lang[1]; + refreshButton.innerHTML = lang[2]; + refreshButton.style.cssText = buttonStyle; + closeButton.style.cssText = buttonStyle; + + !model.get('readOnly') && buttonContainer.appendChild(refreshButton); + buttonContainer.appendChild(closeButton); + + // http://stackoverflow.com/questions/6637341/use-tab-to-indent-in-textarea + eventTool.addEventListener(textarea, 'keydown', function (e) { + if ((e.keyCode || e.which) === 9) { + // get caret position/selection + var val = this.value; + var start = this.selectionStart; + var end = this.selectionEnd; + + // set textarea value to: text before caret + tab + text after caret + this.value = val.substring(0, start) + ITEM_SPLITER + val.substring(end); + + // put caret at right position again + this.selectionStart = this.selectionEnd = start + 1; + + // prevent the focus lose + eventTool.stop(e); + } + }); + + root.appendChild(header); + root.appendChild(viewMain); + root.appendChild(buttonContainer); + + viewMain.style.height = (container.clientHeight - 80) + 'px'; + + container.appendChild(root); + this._dom = root; + }; + + DataView.prototype.remove = function (ecModel, api) { + this._dom && api.getDom().removeChild(this._dom); + }; + + DataView.prototype.dispose = function (ecModel, api) { + this.remove(ecModel, api); + }; + + /** + * @inner + */ + function tryMergeDataOption(newData, originalData) { + return zrUtil.map(newData, function (newVal, idx) { + var original = originalData && originalData[idx]; + if (zrUtil.isObject(original) && !zrUtil.isArray(original)) { + if (zrUtil.isObject(newVal) && !zrUtil.isArray(newVal)) { + newVal = newVal.value; + } + // Original data has option + return zrUtil.defaults({ + value: newVal + }, original); + } + else { + return newVal; + } + }); + } + + __webpack_require__(357).register('dataView', DataView); + + __webpack_require__(1).registerAction({ + type: 'changeDataView', + event: 'dataViewChanged', + update: 'prepareAndUpdate' + }, function (payload, ecModel) { + var newSeriesOptList = []; + zrUtil.each(payload.newOption.series, function (seriesOpt) { + var seriesModel = ecModel.getSeriesByName(seriesOpt.name)[0]; + if (!seriesModel) { + // New created series + // Geuss the series type + newSeriesOptList.push(zrUtil.extend({ + // Default is scatter + type: 'scatter' + }, seriesOpt)); + } + else { + var originalData = seriesModel.get('data'); + newSeriesOptList.push({ + name: seriesOpt.name, + data: tryMergeDataOption(seriesOpt.data, originalData) + }); + } + }); + + ecModel.mergeOption(zrUtil.defaults({ + series: newSeriesOptList + }, payload.newOption)); + }); + + module.exports = DataView; + + +/***/ }, +/* 418 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + + var zrUtil = __webpack_require__(4); + var BrushController = __webpack_require__(245); + var BrushTargetManager = __webpack_require__(352); + var history = __webpack_require__(419); + var sliderMove = __webpack_require__(239); + + var each = zrUtil.each; + + // Use dataZoomSelect + __webpack_require__(420); + + // Spectial component id start with \0ec\0, see echarts/model/Global.js~hasInnerId + var DATA_ZOOM_ID_BASE = '\0_ec_\0toolbox-dataZoom_'; + + function DataZoom(model, ecModel, api) { + + /** + * @private + * @type {module:echarts/component/helper/BrushController} + */ + (this._brushController = new BrushController(api.getZr())) + .on('brush', zrUtil.bind(this._onBrush, this)) + .mount(); + + /** + * @private + * @type {boolean} + */ + this._isZoomActive; + } + + DataZoom.defaultOption = { + show: true, + // Icon group + icon: { + zoom: 'M0,13.5h26.9 M13.5,26.9V0 M32.1,13.5H58V58H13.5 V32.1', + back: 'M22,1.4L9.9,13.5l12.3,12.3 M10.3,13.5H54.9v44.6 H10.3v-26' + }, + title: { + zoom: '区域缩放', + back: '区域缩放还原' + } + }; + + var proto = DataZoom.prototype; + + proto.render = function (featureModel, ecModel, api, payload) { + this.model = featureModel; + this.ecModel = ecModel; + this.api = api; + + updateZoomBtnStatus(featureModel, ecModel, this, payload, api); + updateBackBtnStatus(featureModel, ecModel); + }; + + proto.onclick = function (ecModel, api, type) { + handlers[type].call(this); + }; + + proto.remove = function (ecModel, api) { + this._brushController.unmount(); + }; + + proto.dispose = function (ecModel, api) { + this._brushController.dispose(); + }; + + /** + * @private + */ + var handlers = { + + zoom: function () { + var nextActive = !this._isZoomActive; + + this.api.dispatchAction({ + type: 'takeGlobalCursor', + key: 'dataZoomSelect', + dataZoomSelectActive: nextActive + }); + }, + + back: function () { + this._dispatchZoomAction(history.pop(this.ecModel)); + } + }; + + /** + * @private + */ + proto._onBrush = function (areas, opt) { + if (!opt.isEnd || !areas.length) { + return; + } + var snapshot = {}; + var ecModel = this.ecModel; + + this._brushController.updateCovers([]); // remove cover + + var brushTargetManager = new BrushTargetManager( + retrieveAxisSetting(this.model.option), ecModel, {include: ['grid']} + ); + brushTargetManager.matchOutputRanges(areas, ecModel, function (area, coordRange, coordSys) { + if (coordSys.type !== 'cartesian2d') { + return; + } + + var brushType = area.brushType; + if (brushType === 'rect') { + setBatch('x', coordSys, coordRange[0]); + setBatch('y', coordSys, coordRange[1]); + } + else { + setBatch(({lineX: 'x', lineY: 'y'})[brushType], coordSys, coordRange); + } + }); + + history.push(ecModel, snapshot); + + this._dispatchZoomAction(snapshot); + + function setBatch(dimName, coordSys, minMax) { + var axis = coordSys.getAxis(dimName); + var axisModel = axis.model; + var dataZoomModel = findDataZoom(dimName, axisModel, ecModel); + + // Restrict range. + var minMaxSpan = dataZoomModel.findRepresentativeAxisProxy(axisModel).getMinMaxSpan(); + if (minMaxSpan.minValueSpan != null || minMaxSpan.maxValueSpan != null) { + minMax = sliderMove( + 0, minMax.slice(), axis.scale.getExtent(), 0, + minMaxSpan.minValueSpan, minMaxSpan.maxValueSpan + ); + } + + dataZoomModel && (snapshot[dataZoomModel.id] = { + dataZoomId: dataZoomModel.id, + startValue: minMax[0], + endValue: minMax[1] + }); + } + + function findDataZoom(dimName, axisModel, ecModel) { + var found; + ecModel.eachComponent({mainType: 'dataZoom', subType: 'select'}, function (dzModel) { + var has = dzModel.getAxisModel(dimName, axisModel.componentIndex); + has && (found = dzModel); + }); + return found; + } + }; + + /** + * @private + */ + proto._dispatchZoomAction = function (snapshot) { + var batch = []; + + // Convert from hash map to array. + each(snapshot, function (batchItem, dataZoomId) { + batch.push(zrUtil.clone(batchItem)); + }); + + batch.length && this.api.dispatchAction({ + type: 'dataZoom', + from: this.uid, + batch: batch + }); + }; + + function retrieveAxisSetting(option) { + var setting = {}; + // Compatible with previous setting: null => all axis, false => no axis. + zrUtil.each(['xAxisIndex', 'yAxisIndex'], function (name) { + setting[name] = option[name]; + setting[name] == null && (setting[name] = 'all'); + (setting[name] === false || setting[name] === 'none') && (setting[name] = []); + }); + return setting; + } + + function updateBackBtnStatus(featureModel, ecModel) { + featureModel.setIconStatus( + 'back', + history.count(ecModel) > 1 ? 'emphasis' : 'normal' + ); + } + + function updateZoomBtnStatus(featureModel, ecModel, view, payload, api) { + var zoomActive = view._isZoomActive; + + if (payload && payload.type === 'takeGlobalCursor') { + zoomActive = payload.key === 'dataZoomSelect' + ? payload.dataZoomSelectActive : false; + } + + view._isZoomActive = zoomActive; + + featureModel.setIconStatus('zoom', zoomActive ? 'emphasis' : 'normal'); + + var brushTargetManager = new BrushTargetManager( + retrieveAxisSetting(featureModel.option), ecModel, {include: ['grid']} + ); + + view._brushController + .setPanels(brushTargetManager.makePanelOpts(api, function (targetInfo) { + return (targetInfo.xAxisDeclared && !targetInfo.yAxisDeclared) + ? 'lineX' + : (!targetInfo.xAxisDeclared && targetInfo.yAxisDeclared) + ? 'lineY' + : 'rect'; + })) + .enableBrush( + zoomActive + ? { + brushType: 'auto', + brushStyle: { + // FIXME user customized? + lineWidth: 0, + fill: 'rgba(0,0,0,0.2)' + } + } + : false + ); + } + + + __webpack_require__(357).register('dataZoom', DataZoom); + + + // Create special dataZoom option for select + __webpack_require__(1).registerPreprocessor(function (option) { + if (!option) { + return; + } + + var dataZoomOpts = option.dataZoom || (option.dataZoom = []); + if (!zrUtil.isArray(dataZoomOpts)) { + option.dataZoom = dataZoomOpts = [dataZoomOpts]; + } + + var toolboxOpt = option.toolbox; + if (toolboxOpt) { + // Assume there is only one toolbox + if (zrUtil.isArray(toolboxOpt)) { + toolboxOpt = toolboxOpt[0]; + } + + if (toolboxOpt && toolboxOpt.feature) { + var dataZoomOpt = toolboxOpt.feature.dataZoom; + addForAxis('xAxis', dataZoomOpt); + addForAxis('yAxis', dataZoomOpt); + } + } + + function addForAxis(axisName, dataZoomOpt) { + if (!dataZoomOpt) { + return; + } + + // Try not to modify model, because it is not merged yet. + var axisIndicesName = axisName + 'Index'; + var givenAxisIndices = dataZoomOpt[axisIndicesName]; + if (givenAxisIndices != null + && givenAxisIndices != 'all' + && !zrUtil.isArray(givenAxisIndices) + ) { + givenAxisIndices = (givenAxisIndices === false || givenAxisIndices === 'none') ? [] : [givenAxisIndices]; + } + + forEachComponent(axisName, function (axisOpt, axisIndex) { + if (givenAxisIndices != null + && givenAxisIndices != 'all' + && zrUtil.indexOf(givenAxisIndices, axisIndex) === -1 + ) { + return; + } + var newOpt = { + type: 'select', + $fromToolbox: true, + // Id for merge mapping. + id: DATA_ZOOM_ID_BASE + axisName + axisIndex + }; + // FIXME + // Only support one axis now. + newOpt[axisIndicesName] = axisIndex; + dataZoomOpts.push(newOpt); + }); + } + + function forEachComponent(mainType, cb) { + var opts = option[mainType]; + if (!zrUtil.isArray(opts)) { + opts = opts ? [opts] : []; + } + each(opts, cb); + } + }); + + module.exports = DataZoom; + + +/***/ }, +/* 419 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * @file History manager. + */ + + + var zrUtil = __webpack_require__(4); + var each = zrUtil.each; + + var ATTR = '\0_ec_hist_store'; + + var history = { + + /** + * @public + * @param {module:echarts/model/Global} ecModel + * @param {Object} newSnapshot {dataZoomId, batch: [payloadInfo, ...]} + */ + push: function (ecModel, newSnapshot) { + var store = giveStore(ecModel); + + // If previous dataZoom can not be found, + // complete an range with current range. + each(newSnapshot, function (batchItem, dataZoomId) { + var i = store.length - 1; + for (; i >= 0; i--) { + var snapshot = store[i]; + if (snapshot[dataZoomId]) { + break; + } + } + if (i < 0) { + // No origin range set, create one by current range. + var dataZoomModel = ecModel.queryComponents( + {mainType: 'dataZoom', subType: 'select', id: dataZoomId} + )[0]; + if (dataZoomModel) { + var percentRange = dataZoomModel.getPercentRange(); + store[0][dataZoomId] = { + dataZoomId: dataZoomId, + start: percentRange[0], + end: percentRange[1] + }; + } + } + }); + + store.push(newSnapshot); + }, + + /** + * @public + * @param {module:echarts/model/Global} ecModel + * @return {Object} snapshot + */ + pop: function (ecModel) { + var store = giveStore(ecModel); + var head = store[store.length - 1]; + store.length > 1 && store.pop(); + + // Find top for all dataZoom. + var snapshot = {}; + each(head, function (batchItem, dataZoomId) { + for (var i = store.length - 1; i >= 0; i--) { + var batchItem = store[i][dataZoomId]; + if (batchItem) { + snapshot[dataZoomId] = batchItem; + break; + } + } + }); + + return snapshot; + }, + + /** + * @public + */ + clear: function (ecModel) { + ecModel[ATTR] = null; + }, + + /** + * @public + * @param {module:echarts/model/Global} ecModel + * @return {number} records. always >= 1. + */ + count: function (ecModel) { + return giveStore(ecModel).length; + } + + }; + + /** + * [{key: dataZoomId, value: {dataZoomId, range}}, ...] + * History length of each dataZoom may be different. + * this._history[0] is used to store origin range. + * @type {Array.} + */ + function giveStore(ecModel) { + var store = ecModel[ATTR]; + if (!store) { + store = ecModel[ATTR] = [{}]; + } + return store; + } + + module.exports = history; + + + +/***/ }, +/* 420 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * DataZoom component entry + */ + + + __webpack_require__(364); + + __webpack_require__(365); + __webpack_require__(368); + + __webpack_require__(421); + __webpack_require__(422); + + __webpack_require__(374); + __webpack_require__(375); + + + +/***/ }, +/* 421 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * @file Data zoom model + */ + + + var DataZoomModel = __webpack_require__(365); + + module.exports = DataZoomModel.extend({ + + type: 'dataZoom.select' + + }); + + + +/***/ }, +/* 422 */ +/***/ function(module, exports, __webpack_require__) { + + + + module.exports = __webpack_require__(368).extend({ + + type: 'dataZoom.select' + + }); + + + +/***/ }, +/* 423 */ +/***/ function(module, exports, __webpack_require__) { + + 'use strict'; + + + var history = __webpack_require__(419); + + function Restore(model) { + this.model = model; + } + + Restore.defaultOption = { + show: true, + 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', + title: '还原' + }; + + var proto = Restore.prototype; + + proto.onclick = function (ecModel, api, type) { + history.clear(ecModel); + + api.dispatchAction({ + type: 'restore', + from: this.uid + }); + }; + + + __webpack_require__(357).register('restore', Restore); + + + __webpack_require__(1).registerAction( + {type: 'restore', event: 'restore', update: 'prepareAndUpdate'}, + function (payload, ecModel) { + ecModel.resetOption('recreate'); + } + ); + + module.exports = Restore; + + +/***/ }, +/* 424 */ +/***/ function(module, exports, __webpack_require__) { + + + __webpack_require__(425); + __webpack_require__(82).registerPainter('vml', __webpack_require__(427)); + + +/***/ }, +/* 425 */ +/***/ function(module, exports, __webpack_require__) { + + // http://www.w3.org/TR/NOTE-VML + // TODO Use proxy like svg instead of overwrite brush methods + + + if (!__webpack_require__(2).canvasSupported) { + var vec2 = __webpack_require__(10); + var BoundingRect = __webpack_require__(9); + var CMD = __webpack_require__(36).CMD; + var colorTool = __webpack_require__(31); + var textContain = __webpack_require__(8); + var RectText = __webpack_require__(35); + var Displayable = __webpack_require__(21); + var ZImage = __webpack_require__(49); + var Text = __webpack_require__(50); + var Path = __webpack_require__(20); + var PathProxy = __webpack_require__(36); + + var Gradient = __webpack_require__(66); + + var vmlCore = __webpack_require__(426); + + var round = Math.round; + var sqrt = Math.sqrt; + var abs = Math.abs; + var cos = Math.cos; + var sin = Math.sin; + var mathMax = Math.max; + + var applyTransform = vec2.applyTransform; + + var comma = ','; + var imageTransformPrefix = 'progid:DXImageTransform.Microsoft'; + + var Z = 21600; + var Z2 = Z / 2; + + var ZLEVEL_BASE = 100000; + var Z_BASE = 1000; + + var initRootElStyle = function (el) { + el.style.cssText = 'position:absolute;left:0;top:0;width:1px;height:1px;'; + el.coordsize = Z + ',' + Z; + el.coordorigin = '0,0'; + }; + + var encodeHtmlAttribute = function (s) { + return String(s).replace(/&/g, '&').replace(/"/g, '"'); + }; + + var rgb2Str = function (r, g, b) { + return 'rgb(' + [r, g, b].join(',') + ')'; + }; + + var append = function (parent, child) { + if (child && parent && child.parentNode !== parent) { + parent.appendChild(child); + } + }; + + var remove = function (parent, child) { + if (child && parent && child.parentNode === parent) { + parent.removeChild(child); + } + }; + + var getZIndex = function (zlevel, z, z2) { + // z 的取值范围为 [0, 1000] + return (parseFloat(zlevel) || 0) * ZLEVEL_BASE + (parseFloat(z) || 0) * Z_BASE + z2; + }; + + var parsePercent = function (value, maxValue) { + if (typeof value === 'string') { + if (value.lastIndexOf('%') >= 0) { + return parseFloat(value) / 100 * maxValue; + } + return parseFloat(value); + } + return value; + }; + + /*************************************************** + * PATH + **************************************************/ + + var setColorAndOpacity = function (el, color, opacity) { + var colorArr = colorTool.parse(color); + opacity = +opacity; + if (isNaN(opacity)) { + opacity = 1; + } + if (colorArr) { + el.color = rgb2Str(colorArr[0], colorArr[1], colorArr[2]); + el.opacity = opacity * colorArr[3]; + } + }; + + var getColorAndAlpha = function (color) { + var colorArr = colorTool.parse(color); + return [ + rgb2Str(colorArr[0], colorArr[1], colorArr[2]), + colorArr[3] + ]; + }; + + var updateFillNode = function (el, style, zrEl) { + // TODO pattern + var fill = style.fill; + if (fill != null) { + // Modified from excanvas + if (fill instanceof Gradient) { + var gradientType; + var angle = 0; + var focus = [0, 0]; + // additional offset + var shift = 0; + // scale factor for offset + var expansion = 1; + var rect = zrEl.getBoundingRect(); + var rectWidth = rect.width; + var rectHeight = rect.height; + if (fill.type === 'linear') { + gradientType = 'gradient'; + var transform = zrEl.transform; + var p0 = [fill.x * rectWidth, fill.y * rectHeight]; + var p1 = [fill.x2 * rectWidth, fill.y2 * rectHeight]; + if (transform) { + applyTransform(p0, p0, transform); + applyTransform(p1, p1, transform); + } + var dx = p1[0] - p0[0]; + var dy = p1[1] - p0[1]; + angle = Math.atan2(dx, dy) * 180 / Math.PI; + // The angle should be a non-negative number. + if (angle < 0) { + angle += 360; + } + + // Very small angles produce an unexpected result because they are + // converted to a scientific notation string. + if (angle < 1e-6) { + angle = 0; + } + } + else { + gradientType = 'gradientradial'; + var p0 = [fill.x * rectWidth, fill.y * rectHeight]; + var transform = zrEl.transform; + var scale = zrEl.scale; + var width = rectWidth; + var height = rectHeight; + focus = [ + // Percent in bounding rect + (p0[0] - rect.x) / width, + (p0[1] - rect.y) / height + ]; + if (transform) { + applyTransform(p0, p0, transform); + } + + width /= scale[0] * Z; + height /= scale[1] * Z; + var dimension = mathMax(width, height); + shift = 2 * 0 / dimension; + expansion = 2 * fill.r / dimension - shift; + } + + // We need to sort the color stops in ascending order by offset, + // otherwise IE won't interpret it correctly. + var stops = fill.colorStops.slice(); + stops.sort(function(cs1, cs2) { + return cs1.offset - cs2.offset; + }); + + var length = stops.length; + // Color and alpha list of first and last stop + var colorAndAlphaList = []; + var colors = []; + for (var i = 0; i < length; i++) { + var stop = stops[i]; + var colorAndAlpha = getColorAndAlpha(stop.color); + colors.push(stop.offset * expansion + shift + ' ' + colorAndAlpha[0]); + if (i === 0 || i === length - 1) { + colorAndAlphaList.push(colorAndAlpha); + } + } + + if (length >= 2) { + var color1 = colorAndAlphaList[0][0]; + var color2 = colorAndAlphaList[1][0]; + var opacity1 = colorAndAlphaList[0][1] * style.opacity; + var opacity2 = colorAndAlphaList[1][1] * style.opacity; + + el.type = gradientType; + el.method = 'none'; + el.focus = '100%'; + el.angle = angle; + el.color = color1; + el.color2 = color2; + el.colors = colors.join(','); + // When colors attribute is used, the meanings of opacity and o:opacity2 + // are reversed. + el.opacity = opacity2; + // FIXME g_o_:opacity ? + el.opacity2 = opacity1; + } + if (gradientType === 'radial') { + el.focusposition = focus.join(','); + } + } + else { + // FIXME Change from Gradient fill to color fill + setColorAndOpacity(el, fill, style.opacity); + } + } + }; + + var updateStrokeNode = function (el, style) { + // if (style.lineJoin != null) { + // el.joinstyle = style.lineJoin; + // } + // if (style.miterLimit != null) { + // el.miterlimit = style.miterLimit * Z; + // } + // if (style.lineCap != null) { + // el.endcap = style.lineCap; + // } + if (style.lineDash != null) { + el.dashstyle = style.lineDash.join(' '); + } + if (style.stroke != null && !(style.stroke instanceof Gradient)) { + setColorAndOpacity(el, style.stroke, style.opacity); + } + }; + + var updateFillAndStroke = function (vmlEl, type, style, zrEl) { + var isFill = type == 'fill'; + var el = vmlEl.getElementsByTagName(type)[0]; + // Stroke must have lineWidth + if (style[type] != null && style[type] !== 'none' && (isFill || (!isFill && style.lineWidth))) { + vmlEl[isFill ? 'filled' : 'stroked'] = 'true'; + // FIXME Remove before updating, or set `colors` will throw error + if (style[type] instanceof Gradient) { + remove(vmlEl, el); + } + if (!el) { + el = vmlCore.createNode(type); + } + + isFill ? updateFillNode(el, style, zrEl) : updateStrokeNode(el, style); + append(vmlEl, el); + } + else { + vmlEl[isFill ? 'filled' : 'stroked'] = 'false'; + remove(vmlEl, el); + } + }; + + var points = [[], [], []]; + var pathDataToString = function (data, m) { + var M = CMD.M; + var C = CMD.C; + var L = CMD.L; + var A = CMD.A; + var Q = CMD.Q; + + var str = []; + var nPoint; + var cmdStr; + var cmd; + var i; + var xi; + var yi; + for (i = 0; i < data.length;) { + cmd = data[i++]; + cmdStr = ''; + nPoint = 0; + switch (cmd) { + case M: + cmdStr = ' m '; + nPoint = 1; + xi = data[i++]; + yi = data[i++]; + points[0][0] = xi; + points[0][1] = yi; + break; + case L: + cmdStr = ' l '; + nPoint = 1; + xi = data[i++]; + yi = data[i++]; + points[0][0] = xi; + points[0][1] = yi; + break; + case Q: + case C: + cmdStr = ' c '; + nPoint = 3; + var x1 = data[i++]; + var y1 = data[i++]; + var x2 = data[i++]; + var y2 = data[i++]; + var x3; + var y3; + if (cmd === Q) { + // Convert quadratic to cubic using degree elevation + x3 = x2; + y3 = y2; + x2 = (x2 + 2 * x1) / 3; + y2 = (y2 + 2 * y1) / 3; + x1 = (xi + 2 * x1) / 3; + y1 = (yi + 2 * y1) / 3; + } + else { + x3 = data[i++]; + y3 = data[i++]; + } + points[0][0] = x1; + points[0][1] = y1; + points[1][0] = x2; + points[1][1] = y2; + points[2][0] = x3; + points[2][1] = y3; + + xi = x3; + yi = y3; + break; + case A: + var x = 0; + var y = 0; + var sx = 1; + var sy = 1; + var angle = 0; + if (m) { + // Extract SRT from matrix + x = m[4]; + y = m[5]; + sx = sqrt(m[0] * m[0] + m[1] * m[1]); + sy = sqrt(m[2] * m[2] + m[3] * m[3]); + angle = Math.atan2(-m[1] / sy, m[0] / sx); + } + + var cx = data[i++]; + var cy = data[i++]; + var rx = data[i++]; + var ry = data[i++]; + var startAngle = data[i++] + angle; + var endAngle = data[i++] + startAngle + angle; + // FIXME + // var psi = data[i++]; + i++; + var clockwise = data[i++]; + + var x0 = cx + cos(startAngle) * rx; + var y0 = cy + sin(startAngle) * ry; + + var x1 = cx + cos(endAngle) * rx; + var y1 = cy + sin(endAngle) * ry; + + var type = clockwise ? ' wa ' : ' at '; + if (Math.abs(x0 - x1) < 1e-4) { + // IE won't render arches drawn counter clockwise if x0 == x1. + if (Math.abs(endAngle - startAngle) > 1e-2) { + // Offset x0 by 1/80 of a pixel. Use something + // that can be represented in binary + if (clockwise) { + x0 += 270 / Z; + } + } + else { + // Avoid case draw full circle + if (Math.abs(y0 - cy) < 1e-4) { + if ((clockwise && x0 < cx) || (!clockwise && x0 > cx)) { + y1 -= 270 / Z; + } + else { + y1 += 270 / Z; + } + } + else if ((clockwise && y0 < cy) || (!clockwise && y0 > cy)) { + x1 += 270 / Z; + } + else { + x1 -= 270 / Z; + } + } + } + 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) + ); + + xi = x1; + yi = y1; + break; + case CMD.R: + var p0 = points[0]; + var p1 = points[1]; + // x0, y0 + p0[0] = data[i++]; + p0[1] = data[i++]; + // x1, y1 + p1[0] = p0[0] + data[i++]; + p1[1] = p0[1] + data[i++]; + + if (m) { + applyTransform(p0, p0, m); + applyTransform(p1, p1, m); + } + + p0[0] = round(p0[0] * Z - Z2); + p1[0] = round(p1[0] * Z - Z2); + p0[1] = round(p0[1] * Z - Z2); + p1[1] = round(p1[1] * Z - Z2); + str.push( + // x0, y0 + ' m ', p0[0], comma, p0[1], + // x1, y0 + ' l ', p1[0], comma, p0[1], + // x1, y1 + ' l ', p1[0], comma, p1[1], + // x0, y1 + ' l ', p0[0], comma, p1[1] + ); + break; + case CMD.Z: + // FIXME Update xi, yi + str.push(' x '); + } + + if (nPoint > 0) { + str.push(cmdStr); + for (var k = 0; k < nPoint; k++) { + var p = points[k]; + + m && applyTransform(p, p, m); + // 不 round 会非常慢 + str.push( + round(p[0] * Z - Z2), comma, round(p[1] * Z - Z2), + k < nPoint - 1 ? comma : '' + ); + } + } + } + + return str.join(''); + }; + + // Rewrite the original path method + Path.prototype.brushVML = function (vmlRoot) { + var style = this.style; + + var vmlEl = this._vmlEl; + if (!vmlEl) { + vmlEl = vmlCore.createNode('shape'); + initRootElStyle(vmlEl); + + this._vmlEl = vmlEl; + } + + updateFillAndStroke(vmlEl, 'fill', style, this); + updateFillAndStroke(vmlEl, 'stroke', style, this); + + var m = this.transform; + var needTransform = m != null; + var strokeEl = vmlEl.getElementsByTagName('stroke')[0]; + if (strokeEl) { + var lineWidth = style.lineWidth; + // Get the line scale. + // Determinant of this.m_ means how much the area is enlarged by the + // transformation. So its square root can be used as a scale factor + // for width. + if (needTransform && !style.strokeNoScale) { + var det = m[0] * m[3] - m[1] * m[2]; + lineWidth *= sqrt(abs(det)); + } + strokeEl.weight = lineWidth + 'px'; + } + + var path = this.path || (this.path = new PathProxy()); + if (this.__dirtyPath) { + path.beginPath(); + this.buildPath(path, this.shape); + path.toStatic(); + this.__dirtyPath = false; + } + + vmlEl.path = pathDataToString(path.data, this.transform); + + vmlEl.style.zIndex = getZIndex(this.zlevel, this.z, this.z2); + + // Append to root + append(vmlRoot, vmlEl); + + // Text + if (style.text != null) { + this.drawRectText(vmlRoot, this.getBoundingRect()); + } + else { + this.removeRectText(vmlRoot); + } + }; + + Path.prototype.onRemove = function (vmlRoot) { + remove(vmlRoot, this._vmlEl); + this.removeRectText(vmlRoot); + }; + + Path.prototype.onAdd = function (vmlRoot) { + append(vmlRoot, this._vmlEl); + this.appendRectText(vmlRoot); + }; + + /*************************************************** + * IMAGE + **************************************************/ + var isImage = function (img) { + // FIXME img instanceof Image 如果 img 是一个字符串的时候,IE8 下会报错 + return (typeof img === 'object') && img.tagName && img.tagName.toUpperCase() === 'IMG'; + // return img instanceof Image; + }; + + // Rewrite the original path method + ZImage.prototype.brushVML = function (vmlRoot) { + var style = this.style; + var image = style.image; + + // Image original width, height + var ow; + var oh; + + if (isImage(image)) { + var src = image.src; + if (src === this._imageSrc) { + ow = this._imageWidth; + oh = this._imageHeight; + } + else { + var imageRuntimeStyle = image.runtimeStyle; + var oldRuntimeWidth = imageRuntimeStyle.width; + var oldRuntimeHeight = imageRuntimeStyle.height; + imageRuntimeStyle.width = 'auto'; + imageRuntimeStyle.height = 'auto'; + + // get the original size + ow = image.width; + oh = image.height; + + // and remove overides + imageRuntimeStyle.width = oldRuntimeWidth; + imageRuntimeStyle.height = oldRuntimeHeight; + + // Caching image original width, height and src + this._imageSrc = src; + this._imageWidth = ow; + this._imageHeight = oh; + } + image = src; + } + else { + if (image === this._imageSrc) { + ow = this._imageWidth; + oh = this._imageHeight; + } + } + if (!image) { + return; + } + + var x = style.x || 0; + var y = style.y || 0; + + var dw = style.width; + var dh = style.height; + + var sw = style.sWidth; + var sh = style.sHeight; + var sx = style.sx || 0; + var sy = style.sy || 0; + + var hasCrop = sw && sh; + + var vmlEl = this._vmlEl; + if (!vmlEl) { + // FIXME 使用 group 在 left, top 都不是 0 的时候就无法显示了。 + // vmlEl = vmlCore.createNode('group'); + vmlEl = vmlCore.doc.createElement('div'); + initRootElStyle(vmlEl); + + this._vmlEl = vmlEl; + } + + var vmlElStyle = vmlEl.style; + var hasRotation = false; + var m; + var scaleX = 1; + var scaleY = 1; + if (this.transform) { + m = this.transform; + scaleX = sqrt(m[0] * m[0] + m[1] * m[1]); + scaleY = sqrt(m[2] * m[2] + m[3] * m[3]); + + hasRotation = m[1] || m[2]; + } + if (hasRotation) { + // If filters are necessary (rotation exists), create them + // filters are bog-slow, so only create them if abbsolutely necessary + // The following check doesn't account for skews (which don't exist + // in the canvas spec (yet) anyway. + // From excanvas + var p0 = [x, y]; + var p1 = [x + dw, y]; + var p2 = [x, y + dh]; + var p3 = [x + dw, y + dh]; + applyTransform(p0, p0, m); + applyTransform(p1, p1, m); + applyTransform(p2, p2, m); + applyTransform(p3, p3, m); + + var maxX = mathMax(p0[0], p1[0], p2[0], p3[0]); + var maxY = mathMax(p0[1], p1[1], p2[1], p3[1]); + + var transformFilter = []; + 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])); + + vmlElStyle.padding = '0 ' + round(maxX) + 'px ' + round(maxY) + 'px 0'; + // FIXME DXImageTransform 在 IE11 的兼容模式下不起作用 + vmlElStyle.filter = imageTransformPrefix + '.Matrix(' + + transformFilter.join('') + ', SizingMethod=clip)'; + + } + else { + if (m) { + x = x * scaleX + m[4]; + y = y * scaleY + m[5]; + } + vmlElStyle.filter = ''; + vmlElStyle.left = round(x) + 'px'; + vmlElStyle.top = round(y) + 'px'; + } + + var imageEl = this._imageEl; + var cropEl = this._cropEl; + + if (!imageEl) { + imageEl = vmlCore.doc.createElement('div'); + this._imageEl = imageEl; + } + var imageELStyle = imageEl.style; + if (hasCrop) { + // Needs know image original width and height + if (! (ow && oh)) { + var tmpImage = new Image(); + var self = this; + tmpImage.onload = function () { + tmpImage.onload = null; + ow = tmpImage.width; + oh = tmpImage.height; + // Adjust image width and height to fit the ratio destinationSize / sourceSize + imageELStyle.width = round(scaleX * ow * dw / sw) + 'px'; + imageELStyle.height = round(scaleY * oh * dh / sh) + 'px'; + + // Caching image original width, height and src + self._imageWidth = ow; + self._imageHeight = oh; + self._imageSrc = image; + }; + tmpImage.src = image; + } + else { + imageELStyle.width = round(scaleX * ow * dw / sw) + 'px'; + imageELStyle.height = round(scaleY * oh * dh / sh) + 'px'; + } + + if (! cropEl) { + cropEl = vmlCore.doc.createElement('div'); + cropEl.style.overflow = 'hidden'; + this._cropEl = cropEl; + } + var cropElStyle = cropEl.style; + cropElStyle.width = round((dw + sx * dw / sw) * scaleX); + cropElStyle.height = round((dh + sy * dh / sh) * scaleY); + cropElStyle.filter = imageTransformPrefix + '.Matrix(Dx=' + + (-sx * dw / sw * scaleX) + ',Dy=' + (-sy * dh / sh * scaleY) + ')'; + + if (! cropEl.parentNode) { + vmlEl.appendChild(cropEl); + } + if (imageEl.parentNode != cropEl) { + cropEl.appendChild(imageEl); + } + } + else { + imageELStyle.width = round(scaleX * dw) + 'px'; + imageELStyle.height = round(scaleY * dh) + 'px'; + + vmlEl.appendChild(imageEl); + + if (cropEl && cropEl.parentNode) { + vmlEl.removeChild(cropEl); + this._cropEl = null; + } + } + + var filterStr = ''; + var alpha = style.opacity; + if (alpha < 1) { + filterStr += '.Alpha(opacity=' + round(alpha * 100) + ') '; + } + filterStr += imageTransformPrefix + '.AlphaImageLoader(src=' + image + ', SizingMethod=scale)'; + + imageELStyle.filter = filterStr; + + vmlEl.style.zIndex = getZIndex(this.zlevel, this.z, this.z2); + + // Append to root + append(vmlRoot, vmlEl); + + // Text + if (style.text != null) { + this.drawRectText(vmlRoot, this.getBoundingRect()); + } + }; + + ZImage.prototype.onRemove = function (vmlRoot) { + remove(vmlRoot, this._vmlEl); + + this._vmlEl = null; + this._cropEl = null; + this._imageEl = null; + + this.removeRectText(vmlRoot); + }; + + ZImage.prototype.onAdd = function (vmlRoot) { + append(vmlRoot, this._vmlEl); + this.appendRectText(vmlRoot); + }; + + + /*************************************************** + * TEXT + **************************************************/ + + var DEFAULT_STYLE_NORMAL = 'normal'; + + var fontStyleCache = {}; + var fontStyleCacheCount = 0; + var MAX_FONT_CACHE_SIZE = 100; + var fontEl = document.createElement('div'); + + var getFontStyle = function (fontString) { + var fontStyle = fontStyleCache[fontString]; + if (!fontStyle) { + // Clear cache + if (fontStyleCacheCount > MAX_FONT_CACHE_SIZE) { + fontStyleCacheCount = 0; + fontStyleCache = {}; + } + + var style = fontEl.style; + var fontFamily; + try { + style.font = fontString; + fontFamily = style.fontFamily.split(',')[0]; + } + catch (e) { + } + + fontStyle = { + style: style.fontStyle || DEFAULT_STYLE_NORMAL, + variant: style.fontVariant || DEFAULT_STYLE_NORMAL, + weight: style.fontWeight || DEFAULT_STYLE_NORMAL, + size: parseFloat(style.fontSize || 12) | 0, + family: fontFamily || 'Microsoft YaHei' + }; + + fontStyleCache[fontString] = fontStyle; + fontStyleCacheCount++; + } + return fontStyle; + }; + + var textMeasureEl; + // Overwrite measure text method + textContain.measureText = function (text, textFont) { + var doc = vmlCore.doc; + if (!textMeasureEl) { + textMeasureEl = doc.createElement('div'); + textMeasureEl.style.cssText = 'position:absolute;top:-20000px;left:0;' + + 'padding:0;margin:0;border:none;white-space:pre;'; + vmlCore.doc.body.appendChild(textMeasureEl); + } + + try { + textMeasureEl.style.font = textFont; + } catch (ex) { + // Ignore failures to set to invalid font. + } + textMeasureEl.innerHTML = ''; + // Don't use innerHTML or innerText because they allow markup/whitespace. + textMeasureEl.appendChild(doc.createTextNode(text)); + return { + width: textMeasureEl.offsetWidth + }; + }; + + var tmpRect = new BoundingRect(); + + var drawRectText = function (vmlRoot, rect, textRect, fromTextEl) { + + var style = this.style; + var text = style.text; + // Convert to string + text != null && (text += ''); + if (!text) { + return; + } + + var x; + var y; + var align = style.textAlign; + var fontStyle = getFontStyle(style.textFont); + // FIXME encodeHtmlAttribute ? + var font = fontStyle.style + ' ' + fontStyle.variant + ' ' + fontStyle.weight + ' ' + + fontStyle.size + 'px "' + fontStyle.family + '"'; + + var baseline = style.textBaseline; + var verticalAlign = style.textVerticalAlign; + + textRect = textRect || textContain.getBoundingRect(text, font, align, baseline); + + // Transform rect to view space + var m = this.transform; + // Ignore transform for text in other element + if (m && !fromTextEl) { + tmpRect.copy(rect); + tmpRect.applyTransform(m); + rect = tmpRect; + } + + if (!fromTextEl) { + var textPosition = style.textPosition; + var distance = style.textDistance; + // Text position represented by coord + if (textPosition instanceof Array) { + x = rect.x + parsePercent(textPosition[0], rect.width); + y = rect.y + parsePercent(textPosition[1], rect.height); + + align = align || 'left'; + baseline = baseline || 'top'; + } + else { + var res = textContain.adjustTextPositionOnRect( + textPosition, rect, textRect, distance + ); + x = res.x; + y = res.y; + + // Default align and baseline when has textPosition + align = align || res.textAlign; + baseline = baseline || res.textBaseline; + } + } + else { + x = rect.x; + y = rect.y; + } + if (verticalAlign) { + switch (verticalAlign) { + case 'middle': + y -= textRect.height / 2; + break; + case 'bottom': + y -= textRect.height; + break; + // 'top' + } + // Ignore baseline + baseline = 'top'; + } + + var fontSize = fontStyle.size; + // 1.75 is an arbitrary number, as there is no info about the text baseline + switch (baseline) { + case 'hanging': + case 'top': + y += fontSize / 1.75; + break; + case 'middle': + break; + default: + // case null: + // case 'alphabetic': + // case 'ideographic': + // case 'bottom': + y -= fontSize / 2.25; + break; + } + switch (align) { + case 'left': + break; + case 'center': + x -= textRect.width / 2; + break; + case 'right': + x -= textRect.width; + break; + // case 'end': + // align = elementStyle.direction == 'ltr' ? 'right' : 'left'; + // break; + // case 'start': + // align = elementStyle.direction == 'rtl' ? 'right' : 'left'; + // break; + // default: + // align = 'left'; + } + + var createNode = vmlCore.createNode; + + var textVmlEl = this._textVmlEl; + var pathEl; + var textPathEl; + var skewEl; + if (!textVmlEl) { + textVmlEl = createNode('line'); + pathEl = createNode('path'); + textPathEl = createNode('textpath'); + skewEl = createNode('skew'); + + // FIXME Why here is not cammel case + // Align 'center' seems wrong + textPathEl.style['v-text-align'] = 'left'; + + initRootElStyle(textVmlEl); + + pathEl.textpathok = true; + textPathEl.on = true; + + textVmlEl.from = '0 0'; + textVmlEl.to = '1000 0.05'; + + append(textVmlEl, skewEl); + append(textVmlEl, pathEl); + append(textVmlEl, textPathEl); + + this._textVmlEl = textVmlEl; + } + else { + // 这里是在前面 appendChild 保证顺序的前提下 + skewEl = textVmlEl.firstChild; + pathEl = skewEl.nextSibling; + textPathEl = pathEl.nextSibling; + } + + var coords = [x, y]; + var textVmlElStyle = textVmlEl.style; + // Ignore transform for text in other element + if (m && fromTextEl) { + applyTransform(coords, coords, m); + + skewEl.on = true; + + 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 + skewEl.offset = (round(coords[0]) || 0) + ',' + (round(coords[1]) || 0); + // Left top point as origin + skewEl.origin = '0 0'; + + textVmlElStyle.left = '0px'; + textVmlElStyle.top = '0px'; + } + else { + skewEl.on = false; + textVmlElStyle.left = round(x) + 'px'; + textVmlElStyle.top = round(y) + 'px'; + } + + textPathEl.string = encodeHtmlAttribute(text); + // TODO + try { + textPathEl.style.font = font; + } + // Error font format + catch (e) {} + + updateFillAndStroke(textVmlEl, 'fill', { + fill: fromTextEl ? style.fill : style.textFill, + opacity: style.opacity + }, this); + updateFillAndStroke(textVmlEl, 'stroke', { + stroke: fromTextEl ? style.stroke : style.textStroke, + opacity: style.opacity, + lineDash: style.lineDash + }, this); + + textVmlEl.style.zIndex = getZIndex(this.zlevel, this.z, this.z2); + + // Attached to root + append(vmlRoot, textVmlEl); + }; + + var removeRectText = function (vmlRoot) { + remove(vmlRoot, this._textVmlEl); + this._textVmlEl = null; + }; + + var appendRectText = function (vmlRoot) { + append(vmlRoot, this._textVmlEl); + }; + + var list = [RectText, Displayable, ZImage, Path, Text]; + + // In case Displayable has been mixed in RectText + for (var i = 0; i < list.length; i++) { + var proto = list[i].prototype; + proto.drawRectText = drawRectText; + proto.removeRectText = removeRectText; + proto.appendRectText = appendRectText; + } + + Text.prototype.brushVML = function (vmlRoot) { + var style = this.style; + if (style.text != null) { + this.drawRectText(vmlRoot, { + x: style.x || 0, y: style.y || 0, + width: 0, height: 0 + }, this.getBoundingRect(), true); + } + else { + this.removeRectText(vmlRoot); + } + }; + + Text.prototype.onRemove = function (vmlRoot) { + this.removeRectText(vmlRoot); + }; + + Text.prototype.onAdd = function (vmlRoot) { + this.appendRectText(vmlRoot); + }; + } + + +/***/ }, +/* 426 */ +/***/ function(module, exports, __webpack_require__) { + + + + if (!__webpack_require__(2).canvasSupported) { + var urn = 'urn:schemas-microsoft-com:vml'; + + var createNode; + var win = window; + var doc = win.document; + + var vmlInited = false; + + try { + !doc.namespaces.zrvml && doc.namespaces.add('zrvml', urn); + createNode = function (tagName) { + return doc.createElement(''); + }; + } + catch (e) { + createNode = function (tagName) { + return doc.createElement('<' + tagName + ' xmlns="' + urn + '" class="zrvml">'); + }; + } + + // From raphael + var initVML = function () { + if (vmlInited) { + return; + } + vmlInited = true; + + var styleSheets = doc.styleSheets; + if (styleSheets.length < 31) { + doc.createStyleSheet().addRule('.zrvml', 'behavior:url(#default#VML)'); + } + else { + // http://msdn.microsoft.com/en-us/library/ms531194%28VS.85%29.aspx + styleSheets[0].addRule('.zrvml', 'behavior:url(#default#VML)'); + } + }; + + // Not useing return to avoid error when converting to CommonJS module + module.exports = { + doc: doc, + initVML: initVML, + createNode: createNode + }; + } + + +/***/ }, +/* 427 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * VML Painter. + * + * @module zrender/vml/Painter + */ + + + + var zrLog = __webpack_require__(33); + var vmlCore = __webpack_require__(426); + + function parseInt10(val) { + return parseInt(val, 10); + } + + /** + * @alias module:zrender/vml/Painter + */ + function VMLPainter(root, storage) { + + vmlCore.initVML(); + + this.root = root; + + this.storage = storage; + + var vmlViewport = document.createElement('div'); + + var vmlRoot = document.createElement('div'); + + vmlViewport.style.cssText = 'display:inline-block;overflow:hidden;position:relative;width:300px;height:150px;'; + + vmlRoot.style.cssText = 'position:absolute;left:0;top:0;'; + + root.appendChild(vmlViewport); + + this._vmlRoot = vmlRoot; + this._vmlViewport = vmlViewport; + + this.resize(); + + // Modify storage + var oldDelFromStorage = storage.delFromStorage; + var oldAddToStorage = storage.addToStorage; + storage.delFromStorage = function (el) { + oldDelFromStorage.call(storage, el); + + if (el) { + el.onRemove && el.onRemove(vmlRoot); + } + }; + + storage.addToStorage = function (el) { + // Displayable already has a vml node + el.onAdd && el.onAdd(vmlRoot); + + oldAddToStorage.call(storage, el); + }; + + this._firstPaint = true; + } + + VMLPainter.prototype = { + + constructor: VMLPainter, + + /** + * @return {HTMLDivElement} + */ + getViewportRoot: function () { + return this._vmlViewport; + }, + + /** + * 刷新 + */ + refresh: function () { + + var list = this.storage.getDisplayList(true, true); + + this._paintList(list); + }, + + _paintList: function (list) { + var vmlRoot = this._vmlRoot; + for (var i = 0; i < list.length; i++) { + var el = list[i]; + if (el.invisible || el.ignore) { + if (!el.__alreadyNotVisible) { + el.onRemove(vmlRoot); + } + // Set as already invisible + el.__alreadyNotVisible = true; + } + else { + if (el.__alreadyNotVisible) { + el.onAdd(vmlRoot); + } + el.__alreadyNotVisible = false; + if (el.__dirty) { + el.beforeBrush && el.beforeBrush(); + (el.brushVML || el.brush).call(el, vmlRoot); + el.afterBrush && el.afterBrush(); + } + } + el.__dirty = false; + } + + if (this._firstPaint) { + // Detached from document at first time + // to avoid page refreshing too many times + + // FIXME 如果每次都先 removeChild 可能会导致一些填充和描边的效果改变 + this._vmlViewport.appendChild(vmlRoot); + this._firstPaint = false; + } + }, + + resize: function (width, height) { + var width = width == null ? this._getWidth() : width; + var height = height == null ? this._getHeight() : height; + + if (this._width != width || this._height != height) { + this._width = width; + this._height = height; + + var vmlViewportStyle = this._vmlViewport.style; + vmlViewportStyle.width = width + 'px'; + vmlViewportStyle.height = height + 'px'; + } + }, + + dispose: function () { + this.root.innerHTML = ''; + + this._vmlRoot = + this._vmlViewport = + this.storage = null; + }, + + getWidth: function () { + return this._width; + }, + + getHeight: function () { + return this._height; + }, + + clear: function () { + if (this._vmlViewport) { + this.root.removeChild(this._vmlViewport); + } + }, + + _getWidth: function () { + var root = this.root; + var stl = root.currentStyle; + + return ((root.clientWidth || parseInt10(stl.width)) + - parseInt10(stl.paddingLeft) + - parseInt10(stl.paddingRight)) | 0; + }, + + _getHeight: function () { + var root = this.root; + var stl = root.currentStyle; + + return ((root.clientHeight || parseInt10(stl.height)) + - parseInt10(stl.paddingTop) + - parseInt10(stl.paddingBottom)) | 0; + } + }; + + // Not supported methods + function createMethodNotSupport(method) { + return function () { + zrLog('In IE8.0 VML mode painter not support method "' + method + '"'); + }; + } + + var notSupportedMethods = [ + 'getLayer', 'insertLayer', 'eachLayer', 'eachBuiltinLayer', 'eachOtherLayer', 'getLayers', + 'modLayer', 'delLayer', 'clearLayer', 'toDataURL', 'pathToImage' + ]; + + for (var i = 0; i < notSupportedMethods.length; i++) { + var name = notSupportedMethods[i]; + VMLPainter.prototype[name] = createMethodNotSupport(name); + } + + module.exports = VMLPainter; + + +/***/ } +/******/ ]) +}); +; \ No newline at end of file diff --git a/src/main/webapp/static/echarts/echarts.min.js b/src/main/webapp/static/echarts/echarts.min.js new file mode 100644 index 0000000000000000000000000000000000000000..5e2780d0577b4f7de793830c8bfe6ac47d168aa7 --- /dev/null +++ b/src/main/webapp/static/echarts/echarts.min.js @@ -0,0 +1,38 @@ +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.echarts=e():t.echarts=e()}(this,function(){return function(t){function e(n){if(i[n])return i[n].exports;var o=i[n]={exports:{},id:n,loaded:!1};return t[n].call(o.exports,o,o.exports,e),o.loaded=!0,o.exports}var i={};return e.m=t,e.c=i,e.p="",e(0)}([function(t,e,i){t.exports=i(2),i(108),i(102),i(112),i(191),i(331),i(319),i(346),i(293),i(289),i(285),i(326),i(336),i(270),i(275),i(282),i(314),i(306),i(330),i(341),i(281),i(207),i(208),i(209),i(232),i(55),i(373),i(370),i(252),i(253),i(361),i(368),i(223),i(197),i(387),i(216),i(215),i(214),i(377),i(224),i(240)},function(t,e){function i(t){if(null==t||"object"!=typeof t)return t;var e=t,n=N.call(t);if("[object Array]"===n){e=[];for(var o=0,a=t.length;oe.get("hoverLayerThreshold")&&!S.node&&i.traverse(function(t){t.isGroup||(t.useHoverLayer=!0)})}function x(t,e){var i=0;e.group.traverse(function(t){"group"===t.type||t.ignore||i++});var n=+t.get("progressive"),o=i>t.get("progressiveThreshold")&&n&&!S.node;o&&e.group.traverse(function(t){t.isGroup||(t.progressive=o?Math.floor(i++/n):-1,o&&t.stopAnimation(!0))});var a=t.get("blendMode")||null;e.group.traverse(function(t){t.isGroup||t.setStyle("blend",a)})}function _(t,e){var i=t.get("z"),n=t.get("zlevel");e.group.traverse(function(t){"group"!==t.type&&(null!=i&&(t.z=i),null!=n&&(t.zlevel=n))})}function b(t){var e=t._coordSysMgr;return R.extend(new I(t),{getCoordinateSystems:R.bind(e.getCoordinateSystems,e),getComponentByElement:function(e){for(;e;){var i=e.__ecComponentInfo;if(null!=i)return t._model.getComponent(i.mainType,i.index);e=e.parent}}})}function w(t){function e(t,e){for(var i=0;i=0&&R.each(t,function(t){var o=t.coordinateSystem;if(o&&o.containPoint)i|=!!o.containPoint(e);else if("seriesModels"===n){var a=this._chartsMap[t.__viewId];a&&a.containPoint&&(i|=a.containPoint(e,t))}},this)},this),!!i},Q.getVisual=function(t,e){var i=this._model;t=O.parseFinder(i,t,{defaultMainType:"series"});var n=t.seriesModel,o=n.getData(),a=t.hasOwnProperty("dataIndexInside")?t.dataIndexInside:t.hasOwnProperty("dataIndex")?o.indexOfRawIndex(t.dataIndex):null;return null!=a?o.getItemVisual(a,e):o.getVisual(e)},Q.getViewOfComponentModel=function(t){return this._componentsMap[t.__viewId]},Q.getViewOfSeriesModel=function(t){return this._chartsMap[t.__viewId]};var tt={update:function(t){var e=this._model,i=this._api,n=this._coordSysMgr,o=this._zr;if(e){e.restoreData(),n.create(this._model,this._api),f.call(this,e,i),p.call(this,e),n.update(e,i),m.call(this,e,t),v.call(this,e,t);var a=e.get("backgroundColor")||"transparent",r=o.painter;if(r.isSingleCanvas&&r.isSingleCanvas())o.configLayer(0,{clearColor:a});else{if(!S.canvasSupported){var s=N.parse(a);a=N.stringify(s,"rgb"),0===s[3]&&(a="transparent")}a.colorStops||a.image?(o.configLayer(0,{clearColor:a}),this[$]=!0,this._dom.style.background="transparent"):(this[$]&&o.configLayer(0,{clearColor:null}),this[$]=!1,this._dom.style.background=a)}G(rt,function(t){t(e,i)})}},updateView:function(t){var e=this._model;e&&(e.eachSeries(function(t){t.getData().clearAllVisual()}),m.call(this,e,t),h.call(this,"updateView",e,t))},updateVisual:function(t){var e=this._model;e&&(e.eachSeries(function(t){t.getData().clearAllVisual()}),m.call(this,e,t,!0),h.call(this,"updateVisual",e,t))},updateLayout:function(t){var e=this._model;e&&(g.call(this,e,t),h.call(this,"updateLayout",e,t))},prepareAndUpdate:function(t){var e=this._model;d.call(this,"component",e),d.call(this,"chart",e),tt.update.call(this,t)}};Q.resize=function(t){this[Y]=!0,this._zr.resize(t);var e=this._model&&this._model.resetOption("media"),i=e?"prepareAndUpdate":"update";tt[i].call(this),this._loadingFX&&this._loadingFX.resize(),this[Y]=!1;var n=t&&t.silent;u.call(this,n),c.call(this,n)},Q.showLoading=function(t,e){if(R.isObject(t)&&(e=t,t=""),t=t||"default",this.hideLoading(),ut[t]){var i=ut[t](this._api,e),n=this._zr;this._loadingFX=i,n.add(i)}},Q.hideLoading=function(){this._loadingFX&&this._zr.remove(this._loadingFX),this._loadingFX=null},Q.makeActionFromEvent=function(t){var e=R.extend({},t);return e.type=nt[t.type],e},Q.dispatchAction=function(t,e){if(R.isObject(e)||(e={silent:!!e}),it[t.type]){if(this[Y])return void this._pendingActions.push(t);l.call(this,t,e.silent),e.flush?this._zr.flush(!0):e.flush!==!1&&S.browser.weChat&&this._throttledZrFlush(),u.call(this,e.silent),c.call(this,e.silent)}},Q.on=n("on"),Q.off=n("off"),Q.one=n("one");var et=["click","dblclick","mouseover","mouseout","mousemove","mousedown","mouseup","globalout","contextmenu"];Q._initEvents=function(){G(et,function(t){this._zr.on(t,function(e){var i,n=this.getModel(),o=e.target;if("globalout"===t)i={};else if(o&&null!=o.dataIndex){var a=o.dataModel||n.getSeriesByIndex(o.seriesIndex);i=a&&a.getDataParams(o.dataIndex,o.dataType)||{}}else o&&o.eventData&&(i=R.extend({},o.eventData));i&&(i.event=e,i.type=t,this.trigger(t,i))},this)},this),G(nt,function(t,e){this._messageCenter.on(e,function(t){this.trigger(e,t)},this)},this)},Q.isDisposed=function(){return this._disposed},Q.clear=function(){this.setOption({series:[]},!0)},Q.dispose=function(){if(!this._disposed){this._disposed=!0;var t=this._api,e=this._model;G(this._componentsViews,function(i){i.dispose(e,t)}),G(this._chartsViews,function(i){i.dispose(e,t)}),this._zr.dispose(),delete ct[this.id]}},R.mixin(a,V);var it={},nt={},ot=[],at=[],rt=[],st=[],lt={},ut={},ct={},ht={},dt=new Date-0,ft=new Date-0,pt="_echarts_instance_",gt={version:"3.6.2",dependencies:{zrender:"3.5.2"}};gt.init=function(t,e,i){var n=gt.getInstanceByDom(t);if(n)return n;var o=new a(t,e,i);return o.id="ec_"+dt++,ct[o.id]=o,t.setAttribute?t.setAttribute(pt,o.id):t[pt]=o.id,w(o),o},gt.connect=function(t){if(R.isArray(t)){var e=t;t=null,R.each(e,function(e){null!=e.group&&(t=e.group)}),t=t||"g_"+ft++,R.each(e,function(e){e.group=t})}return ht[t]=!0,t},gt.disConnect=function(t){ht[t]=!1},gt.disconnect=gt.disConnect,gt.dispose=function(t){"string"==typeof t?t=ct[t]:t instanceof a||(t=gt.getInstanceByDom(t)),t instanceof a&&!t.isDisposed()&&t.dispose()},gt.getInstanceByDom=function(t){var e;return e=t.getAttribute?t.getAttribute(pt):t[pt],ct[e]},gt.getInstanceById=function(t){return ct[t]},gt.registerTheme=function(t,e){lt[t]=e},gt.registerPreprocessor=function(t){at.push(t)},gt.registerProcessor=function(t,e){"function"==typeof t&&(e=t,t=F),ot.push({prio:t,func:e})},gt.registerPostUpdate=function(t){rt.push(t)},gt.registerAction=function(t,e,i){"function"==typeof e&&(i=e,e="");var n=R.isObject(t)?t.type:[t,t={event:e}][0];t.event=(t.event||n).toLowerCase(),e=t.event,R.assert(J.test(n)&&J.test(e)),it[n]||(it[n]={action:i,actionInfo:t}),nt[e]=n},gt.registerCoordinateSystem=function(t,e){T.register(t,e)},gt.getCoordinateSystemDimensions=function(t){var e=T.get(t);if(e)return e.getDimensionsInfo?e.getDimensionsInfo():e.dimensions.slice()},gt.registerLayout=function(t,e){"function"==typeof t&&(e=t,t=Z),st.push({prio:t,func:e,isLayout:!0})},gt.registerVisual=function(t,e){"function"==typeof t&&(e=t,t=j),st.push({prio:t,func:e})},gt.registerLoading=function(t,e){ut[t]=e},gt.extendComponentModel=function(t){return C.extend(t)},gt.extendComponentView=function(t){return D.extend(t)},gt.extendSeriesModel=function(t){return L.extend(t)},gt.extendChartView=function(t){return P.extend(t)},gt.setCanvasCreator=function(t){R.createCanvas=t},gt.registerVisual(q,i(151)),gt.registerPreprocessor(i(145)),gt.registerLoading("default",i(136)),gt.registerAction({type:"highlight",event:"highlight",update:"highlight"},R.noop),gt.registerAction({type:"downplay",event:"downplay",update:"downplay"},R.noop),gt.zrender=E,gt.List=i(14),gt.Model=i(10),gt.Axis=i(33),gt.graphic=i(3),gt.number=i(4),gt.format=i(7),gt.throttle=z.throttle,gt.matrix=i(19),gt.vector=i(6),gt.color=i(22),gt.util={},G(["map","each","filter","indexOf","inherits","reduce","filter","bind","curry","isArray","isString","isObject","isFunction","extend","defaults","clone","merge"],function(t){gt.util[t]=R[t]}),gt.helper=i(135),gt.PRIORITY={PROCESSOR:{FILTER:F,STATISTIC:W},VISUAL:{LAYOUT:Z,GLOBAL:q,CHART:j,COMPONENT:U,BRUSH:X}},t.exports=gt},function(t,e,i){"use strict";function n(t){return null!=t&&"none"!=t}function o(t){return"string"==typeof t?x.lift(t,-.1):t}function a(t){if(t.__hoverStlDirty){var e=t.style.stroke,i=t.style.fill,a=t.__hoverStl;a.fill=a.fill||(n(i)?o(i):null),a.stroke=a.stroke||(n(e)?o(e):null);var r={};for(var s in a)a.hasOwnProperty(s)&&(r[s]=t.style[s]);t.__normalStl=r,t.__hoverStlDirty=!1}}function r(t){t.__isHover||(a(t),t.useHoverLayer?t.__zr&&t.__zr.addHover(t,t.__hoverStl):(t.setStyle(t.__hoverStl),t.z2+=1),t.__isHover=!0)}function s(t){if(t.__isHover){var e=t.__normalStl;t.useHoverLayer?t.__zr&&t.__zr.removeHover(t):(e&&t.setStyle(e),t.z2-=1),t.__isHover=!1}}function l(t){"group"===t.type?t.traverse(function(t){"group"!==t.type&&r(t)}):r(t)}function u(t){"group"===t.type?t.traverse(function(t){"group"!==t.type&&s(t)}):s(t)}function c(t,e){t.__hoverStl=t.hoverStyle||e||{},t.__hoverStlDirty=!0,t.__isHover&&a(t)}function h(t){this.__hoverSilentOnTouch&&t.zrByTouch||!this.__isEmphasis&&l(this)}function d(t){this.__hoverSilentOnTouch&&t.zrByTouch||!this.__isEmphasis&&u(this)}function f(){this.__isEmphasis=!0,l(this)}function p(){this.__isEmphasis=!1,u(this)}function g(t,e,i,n,o,a){"function"==typeof o&&(a=o,o=null);var r=n&&n.isAnimationEnabled();if(r){var s=t?"Update":"",l=n.getShallow("animationDuration"+s),u=n.getShallow("animationEasing"+s),c=n.getShallow("animationDelay"+s);"function"==typeof c&&(c=c(o,n.getAnimationDelayParams?n.getAnimationDelayParams(e,o):null)),"function"==typeof l&&(l=l(o)),l>0?e.animateTo(i,l,c||0,u,a):(e.stopAnimation(),e.attr(i),a&&a())}else e.stopAnimation(),e.attr(i),a&&a()}var m=i(1),v=i(180),y=i(8),x=i(22),_=i(19),b=i(6),w=i(58),S=i(11),M=Math.round,I=Math.max,T=Math.min,A={};A.Group=i(36),A.Image=i(53),A.Text=i(86),A.Circle=i(171),A.Sector=i(177),A.Ring=i(176),A.Polygon=i(173),A.Polyline=i(174),A.Rect=i(175),A.Line=i(172),A.BezierCurve=i(170),A.Arc=i(169),A.CompoundPath=i(164),A.LinearGradient=i(100),A.RadialGradient=i(165),A.BoundingRect=S,A.extendShape=function(t){return y.extend(t)},A.extendPath=function(t,e){return v.extendFromString(t,e)},A.makePath=function(t,e,i,n){var o=v.createFromString(t,e),a=o.getBoundingRect();if(i){var r=a.width/a.height;if("center"===n){var s,l=i.height*r;l<=i.width?s=i.height:(l=i.width,s=l/r);var u=i.x+i.width/2,c=i.y+i.height/2;i.x=u-l/2,i.y=c-s/2,i.width=l,i.height=s}A.resizePath(o,i)}return o},A.mergePath=v.mergePath,A.resizePath=function(t,e){if(t.applyTransform){var i=t.getBoundingRect(),n=i.calculateTransform(e);t.applyTransform(n)}},A.subPixelOptimizeLine=function(t){var e=A.subPixelOptimize,i=t.shape,n=t.style.lineWidth;return M(2*i.x1)===M(2*i.x2)&&(i.x1=i.x2=e(i.x1,n,!0)),M(2*i.y1)===M(2*i.y2)&&(i.y1=i.y2=e(i.y1,n,!0)),t},A.subPixelOptimizeRect=function(t){var e=A.subPixelOptimize,i=t.shape,n=t.style.lineWidth,o=i.x,a=i.y,r=i.width,s=i.height;return i.x=e(i.x,n,!0),i.y=e(i.y,n,!0),i.width=Math.max(e(o+r,n,!1)-i.x,0===r?0:1),i.height=Math.max(e(a+s,n,!1)-i.y,0===s?0:1),t},A.subPixelOptimize=function(t,e,i){var n=M(2*t);return(n+M(e))%2===0?n/2:(n+(i?1:-1))/2},A.setHoverStyle=function(t,e,i){t.__hoverSilentOnTouch=i&&i.hoverSilentOnTouch,"group"===t.type?t.traverse(function(t){"group"!==t.type&&c(t,e)}):c(t,e),t.on("mouseover",h).on("mouseout",d),t.on("emphasis",f).on("normal",p)},A.setText=function(t,e,i){var n=e.getShallow("position")||"inside",o=e.getShallow("offset"),a=n.indexOf("inside")>=0?"white":i,r=e.getModel("textStyle");m.extend(t,{textDistance:e.getShallow("distance")||5,textFont:r.getFont(),textPosition:n,textOffset:o,textFill:r.getTextColor()||a})},A.getFont=function(t,e){var i=e&&e.getModel("textStyle");return[t.fontStyle||i&&i.getShallow("fontStyle")||"",t.fontWeight||i&&i.getShallow("fontWeight")||"",(t.fontSize||i&&i.getShallow("fontSize")||12)+"px",t.fontFamily||i&&i.getShallow("fontFamily")||"sans-serif"].join(" ")},A.updateProps=function(t,e,i,n,o){g(!0,t,e,i,n,o)},A.initProps=function(t,e,i,n,o){g(!1,t,e,i,n,o)},A.getTransform=function(t,e){for(var i=_.identity([]);t&&t!==e;)_.mul(i,t.getLocalTransform(),i),t=t.parent;return i},A.applyTransform=function(t,e,i){return e&&!m.isArrayLike(e)&&(e=w.getLocalTransform(e)),i&&(e=_.invert([],e)),b.applyTransform([],t,e)},A.transformDirection=function(t,e,i){var n=0===e[4]||0===e[5]||0===e[0]?1:Math.abs(2*e[4]/e[0]),o=0===e[4]||0===e[5]||0===e[2]?1:Math.abs(2*e[4]/e[2]),a=["left"===t?-n:"right"===t?n:0,"top"===t?-o:"bottom"===t?o:0];return a=A.applyTransform(a,e,i),Math.abs(a[0])>Math.abs(a[1])?a[0]>0?"right":"left":a[1]>0?"bottom":"top"},A.groupTransition=function(t,e,i,n){function o(t){var e={};return t.traverse(function(t){!t.isGroup&&t.anid&&(e[t.anid]=t)}),e}function a(t){var e={position:b.clone(t.position),rotation:t.rotation};return t.shape&&(e.shape=m.extend({},t.shape)),e}if(t&&e){var r=o(t);e.traverse(function(t){if(!t.isGroup&&t.anid){var e=r[t.anid];if(e){var n=a(t);t.attr(a(e)),A.updateProps(t,n,i,t.dataIndex)}}})}},A.clipPointsByRect=function(t,e){return m.map(t,function(t){var i=t[0];i=I(i,e.x),i=T(i,e.x+e.width);var n=t[1];return n=I(n,e.y),n=T(n,e.y+e.height),[i,n]})},A.clipRectByRect=function(t,e){var i=I(t.x,e.x),n=T(t.x+t.width,e.x+e.width),o=I(t.y,e.y),a=T(t.y+t.height,e.y+e.height);if(n>=i&&a>=o)return{x:i,y:o,width:n-i,height:a-o}},t.exports=A},function(t,e,i){function n(t){return t.replace(/^\s+/,"").replace(/\s+$/,"")}function o(t){return Math.floor(Math.log(t)/Math.LN10)}var a=i(1),r={},s=1e-4;r.linearMap=function(t,e,i,n){var o=e[1]-e[0],a=i[1]-i[0];if(0===o)return 0===a?i[0]:(i[0]+i[1])/2;if(n)if(o>0){if(t<=e[0])return i[0];if(t>=e[1])return i[1]}else{if(t>=e[0])return i[0];if(t<=e[1])return i[1]}else{if(t===e[0])return i[0];if(t===e[1])return i[1]}return(t-e[0])/o*a+i[0]},r.parsePercent=function(t,e){switch(t){case"center":case"middle":t="50%";break;case"left":case"top":t="0%";break;case"right":case"bottom":t="100%"}return"string"==typeof t?n(t).match(/%$/)?parseFloat(t)/100*e:parseFloat(t):null==t?NaN:+t},r.round=function(t,e,i){return null==e&&(e=10),e=Math.min(Math.max(0,e),20),t=(+t).toFixed(e),i?t:+t},r.asc=function(t){return t.sort(function(t,e){return t-e}),t},r.getPrecision=function(t){if(t=+t,isNaN(t))return 0;for(var e=1,i=0;Math.round(t*e)/e!==t;)e*=10,i++;return i},r.getPrecisionSafe=function(t){var e=t.toString(),i=e.indexOf("e");if(i>0){var n=+e.slice(i+1);return n<0?-n:0}var o=e.indexOf(".");return o<0?0:e.length-1-o},r.getPixelPrecision=function(t,e){var i=Math.log,n=Math.LN10,o=Math.floor(i(t[1]-t[0])/n),a=Math.round(i(Math.abs(e[1]-e[0]))/n),r=Math.min(Math.max(-o+a,0),20);return isFinite(r)?r:20},r.getPercentWithPrecision=function(t,e,i){if(!t[e])return 0;var n=a.reduce(t,function(t,e){return t+(isNaN(e)?0:e)},0);if(0===n)return 0;for(var o=Math.pow(10,i),r=a.map(t,function(t){return(isNaN(t)?0:t)/n*o*100}),s=100*o,l=a.map(r,function(t){return Math.floor(t)}),u=a.reduce(l,function(t,e){return t+e},0),c=a.map(r,function(t,e){return t-l[e]});uh&&(h=c[f],d=f);++l[d],c[d]=0,++u}return l[e]/o},r.MAX_SAFE_INTEGER=9007199254740991,r.remRadian=function(t){var e=2*Math.PI;return(t%e+e)%e},r.isRadianAroundZero=function(t){return t>-s&&t=-20?+t.toFixed(n<0?-n:0):t},r.reformIntervals=function(t){function e(t,i,n){return t.interval[n]=0},t.exports=r},function(t,e,i){function n(t,e){return t&&t.hasOwnProperty(e)}var o=i(7),a=i(4),r=i(10),s=i(1),l=s.each,u=s.isObject,c={};c.normalizeToArray=function(t){return t instanceof Array?t:null==t?[]:[t]},c.defaultEmphasis=function(t,e){if(t){var i=t.emphasis=t.emphasis||{},n=t.normal=t.normal||{};l(e,function(t){var e=s.retrieve(i[t],n[t]);null!=e&&(i[t]=e)})}},c.LABEL_OPTIONS=["position","offset","show","textStyle","distance","formatter"],c.getDataItemValue=function(t){return t&&(null==t.value?t:t.value)},c.isDataItemOption=function(t){return u(t)&&!(t instanceof Array)},c.converDataValue=function(t,e){var i=e&&e.type;return"ordinal"===i?t:("time"===i&&"number"!=typeof t&&null!=t&&"-"!==t&&(t=+a.parseDate(t)),null==t||""===t?NaN:+t)},c.createDataFormatModel=function(t,e){var i=new r;return s.mixin(i,c.dataFormatMixin),i.seriesIndex=e.seriesIndex,i.name=e.name||"",i.mainType=e.mainType,i.subType=e.subType,i.getData=function(){return t},i},c.dataFormatMixin={getDataParams:function(t,e){var i=this.getData(e),n=this.getRawValue(t,e),a=i.getRawIndex(t),r=i.getName(t,!0),s=i.getRawDataItem(t),l=i.getItemVisual(t,"color");return{componentType:this.mainType,componentSubType:this.subType,seriesType:"series"===this.mainType?this.subType:null,seriesIndex:this.seriesIndex,seriesId:this.id,seriesName:this.name,name:r,dataIndex:a,data:s,dataType:e,value:n,color:l,marker:o.getTooltipMarker(l),$vars:["seriesName","name","value"]}},getFormattedLabel:function(t,e,i,n,a){e=e||"normal";var r=this.getData(i),s=r.getItemModel(t),l=this.getDataParams(t,i);null!=n&&l.value instanceof Array&&(l.value=l.value[n]);var u=s.get([a||"label",e,"formatter"]);return"function"==typeof u?(l.status=e,u(l)):"string"==typeof u?o.formatTpl(u,l):void 0},getRawValue:function(t,e){var i=this.getData(e),n=i.getRawDataItem(t);if(null!=n)return!u(n)||n instanceof Array?n:n.value},formatTooltip:s.noop},c.mappingToExists=function(t,e){e=(e||[]).slice();var i=s.map(t||[],function(t,e){return{exist:t}});return l(e,function(t,n){if(u(t)){for(var o=0;o=i.length&&i.push({option:t})}}),i},c.makeIdAndName=function(t){var e=s.createHashMap();l(t,function(t,i){var n=t.exist;n&&e.set(n.id,t)}),l(t,function(t,i){var n=t.option;s.assert(!n||null==n.id||!e.get(n.id)||e.get(n.id)===t,"id duplicates: "+(n&&n.id)),n&&null!=n.id&&e.set(n.id,t),!t.keyInfo&&(t.keyInfo={})}),l(t,function(t,i){var n=t.exist,o=t.option,a=t.keyInfo;if(u(o)){if(a.name=null!=o.name?o.name+"":n?n.name:"\0-",n)a.id=n.id;else if(null!=o.id)a.id=o.id+"";else{var r=0;do a.id="\0"+a.name+"\0"+r++;while(e.get(a.id))}e.set(a.id,t)}})},c.isIdInner=function(t){return u(t)&&t.id&&0===(t.id+"").indexOf("\0_ec_\0")},c.compressBatches=function(t,e){function i(t,e,i){for(var n=0,o=t.length;n1?"."+t[1]:""))},r.toCamelCase=function(t,e){return t=(t||"").toLowerCase().replace(/-(.)/g,function(t,e){return e.toUpperCase()}),e&&t&&(t=t.charAt(0).toUpperCase()+t.slice(1)),t},r.normalizeCssArray=function(t){var e=t.length;return"number"==typeof t?[t,t,t,t]:2===e?[t[0],t[1],t[0],t[1]]:3===e?[t[0],t[1],t[2],t[1]]:t};var s=r.encodeHTML=function(t){return String(t).replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")},l=["a","b","c","d","e","f","g"],u=function(t,e){return"{"+t+(null==e?"":e)+"}"};r.formatTpl=function(t,e,i){n.isArray(e)||(e=[e]);var o=e.length;if(!o)return"";for(var a=e[0].$vars||[],r=0;r':""};var c=function(t){return t<10?"0"+t:t};r.formatTime=function(t,e,i){"week"!==t&&"month"!==t&&"quarter"!==t&&"half-year"!==t&&"year"!==t||(t="MM-dd\nyyyy");var n=o.parseDate(e),a=i?"UTC":"",r=n["get"+a+"FullYear"](),s=n["get"+a+"Month"]()+1,l=n["get"+a+"Date"](),u=n["get"+a+"Hours"](),h=n["get"+a+"Minutes"](),d=n["get"+a+"Seconds"]();return t=t.replace("MM",c(s)).toLowerCase().replace("yyyy",r).replace("yy",r%100).replace("dd",c(l)).replace("d",l).replace("hh",c(u)).replace("h",u).replace("mm",c(h)).replace("m",h).replace("ss",c(d)).replace("s",d)},r.capitalFirst=function(t){return t?t.charAt(0).toUpperCase()+t.substr(1):t},r.truncateText=a.truncateText,t.exports=r},function(t,e,i){function n(t){o.call(this,t),this.path=null}var o=i(38),a=i(1),r=i(27),s=i(161),l=i(72),u=l.prototype.getCanvasPattern,c=Math.abs,h=new r((!0));n.prototype={constructor:n,type:"path",__dirtyPath:!0,strokeContainThreshold:5,brush:function(t,e){var i=this.style,n=this.path||h,o=i.hasStroke(),a=i.hasFill(),r=i.fill,s=i.stroke,l=a&&!!r.colorStops,c=o&&!!s.colorStops,d=a&&!!r.image,f=o&&!!s.image;if(i.bind(t,this,e),this.setTransform(t),this.__dirty){var p;l&&(p=p||this.getBoundingRect(),this._fillGradient=i.getGradient(t,r,p)),c&&(p=p||this.getBoundingRect(),this._strokeGradient=i.getGradient(t,s,p))}l?t.fillStyle=this._fillGradient:d&&(t.fillStyle=u.call(r,t)),c?t.strokeStyle=this._strokeGradient:f&&(t.strokeStyle=u.call(s,t));var g=i.lineDash,m=i.lineDashOffset,v=!!t.setLineDash,y=this.getGlobalScale();n.setScale(y[0],y[1]),this.__dirtyPath||g&&!v&&o?(n.beginPath(t),g&&!v&&(n.setLineDash(g),n.setLineDashOffset(m)),this.buildPath(n,this.shape,!1),this.path&&(this.__dirtyPath=!1)):(t.beginPath(),this.path.rebuildPath(t)),a&&n.fill(t),g&&v&&(t.setLineDash(g),t.lineDashOffset=m),o&&n.stroke(t),g&&v&&t.setLineDash([]),this.restoreTransform(t),null!=i.text&&this.drawRectText(t,this.getBoundingRect())},buildPath:function(t,e,i){},createPathProxy:function(){this.path=new r},getBoundingRect:function(){var t=this._rect,e=this.style,i=!t;if(i){var n=this.path;n||(n=this.path=new r),this.__dirtyPath&&(n.beginPath(),this.buildPath(n,this.shape,!1)),t=n.getBoundingRect()}if(this._rect=t,e.hasStroke()){var o=this._rectWithStroke||(this._rectWithStroke=t.clone());if(this.__dirty||i){o.copy(t);var a=e.lineWidth,s=e.strokeNoScale?this.getLineScale():1;e.hasFill()||(a=Math.max(a,this.strokeContainThreshold||4)),s>1e-10&&(o.width+=a/s,o.height+=a/s,o.x-=a/s/2,o.y-=a/s/2)}return o}return t},contain:function(t,e){var i=this.transformCoordToLocal(t,e),n=this.getBoundingRect(),o=this.style;if(t=i[0],e=i[1],n.contain(t,e)){var a=this.path.data;if(o.hasStroke()){var r=o.lineWidth,l=o.strokeNoScale?this.getLineScale():1;if(l>1e-10&&(o.hasFill()||(r=Math.max(r,this.strokeContainThreshold)),s.containStroke(a,r/l,t,e)))return!0}if(o.hasFill())return s.contain(a,t,e)}return!1},dirty:function(t){null==t&&(t=!0),t&&(this.__dirtyPath=t,this._rect=null),this.__dirty=!0,this.__zr&&this.__zr.refresh(),this.__clipTarget&&this.__clipTarget.dirty()},animateShape:function(t){return this.animate("shape",t)},attrKV:function(t,e){"shape"===t?(this.setShape(e),this.__dirtyPath=!0,this._rect=null):o.prototype.attrKV.call(this,t,e)},setShape:function(t,e){var i=this.shape;if(i){if(a.isObject(t))for(var n in t)t.hasOwnProperty(n)&&(i[n]=t[n]);else i[t]=e;this.dirty(!0)}return this},getLineScale:function(){var t=this.transform;return t&&c(t[0]-1)>1e-10&&c(t[3]-1)>1e-10?Math.sqrt(c(t[0]*t[3]-t[2]*t[1])):1}},n.extend=function(t){var e=function(e){n.call(this,e),t.style&&this.style.extendFrom(t.style,!1);var i=t.shape;if(i){this.shape=this.shape||{};var o=this.shape;for(var a in i)!o.hasOwnProperty(a)&&i.hasOwnProperty(a)&&(o[a]=i[a])}t.init&&t.init.call(this,e)};a.inherits(e,n);for(var i in t)"style"!==i&&"shape"!==i&&(e.prototype[i]=t[i]);return e},a.inherits(n,o),t.exports=n},function(t,e){function i(t){var e={},i={},n=t.match(/Firefox\/([\d.]+)/),o=t.match(/MSIE\s([\d.]+)/)||t.match(/Trident\/.+?rv:(([\d.]+))/),a=t.match(/Edge\/([\d.]+)/),r=/micromessenger/i.test(t);return n&&(i.firefox=!0,i.version=n[1]),o&&(i.ie=!0,i.version=o[1]),a&&(i.edge=!0,i.version=a[1]),r&&(i.weChat=!0),{browser:i,os:e,node:!1,canvasSupported:!!document.createElement("canvas").getContext,touchEventsSupported:"ontouchstart"in window&&!i.ie&&!i.edge,pointerEventsSupported:"onpointerdown"in window&&(i.edge||i.ie&&i.version>=11)}}var n={};n="undefined"==typeof navigator?{browser:{},os:{},node:!0,canvasSupported:!0}:i(navigator.userAgent),t.exports=n},function(t,e,i){function n(t,e,i){this.parentModel=e,this.ecModel=i,this.option=t}function o(t,e,i){for(var n=0;n=i.x&&t<=i.x+i.width&&e>=i.y&&e<=i.y+i.height},clone:function(){return new n(this.x,this.y,this.width,this.height)},copy:function(t){this.x=t.x,this.y=t.y,this.width=t.width,this.height=t.height},plain:function(){return{x:this.x,y:this.y,width:this.width,height:this.height}}},n.create=function(t){return new n(t.x,t.y,t.width,t.height)},t.exports=n},function(t,e,i){"use strict";function n(t,e,i,n,o){var a=0,r=0;null==n&&(n=1/0),null==o&&(o=1/0);var s=0;e.eachChild(function(l,u){var c,h,d=l.position,f=l.getBoundingRect(),p=e.childAt(u+1),g=p&&p.getBoundingRect();if("horizontal"===t){var m=f.width+(g?-g.x+f.x:0);c=a+m,c>n||l.newline?(a=0,c=m,r+=s+i,s=f.height):s=Math.max(s,f.height)}else{var v=f.height+(g?-g.y+f.y:0);h=r+v,h>o||l.newline?(a+=s+i,r=0,h=v,s=f.width):s=Math.max(s,f.width)}l.newline||(d[0]=a,d[1]=r,"horizontal"===t?a=c+i:r=h+i)})}var o=i(1),a=i(11),r=i(4),s=i(7),l=r.parsePercent,u=o.each,c={},h=c.LOCATION_PARAMS=["left","right","top","bottom","width","height"],d=c.HV_NAMES=[["width","left","right"],["height","top","bottom"]];c.box=n,c.vbox=o.curry(n,"vertical"),c.hbox=o.curry(n,"horizontal"),c.getAvailableSize=function(t,e,i){var n=e.width,o=e.height,a=l(t.x,n),r=l(t.y,o),u=l(t.x2,n),c=l(t.y2,o);return(isNaN(a)||isNaN(parseFloat(t.x)))&&(a=0),(isNaN(u)||isNaN(parseFloat(t.x2)))&&(u=n),(isNaN(r)||isNaN(parseFloat(t.y)))&&(r=0),(isNaN(c)||isNaN(parseFloat(t.y2)))&&(c=o),i=s.normalizeCssArray(i||0),{width:Math.max(u-a-i[1]-i[3],0),height:Math.max(c-r-i[0]-i[2],0)}},c.getLayoutRect=function(t,e,i){i=s.normalizeCssArray(i||0);var n=e.width,o=e.height,r=l(t.left,n),u=l(t.top,o),c=l(t.right,n),h=l(t.bottom,o),d=l(t.width,n),f=l(t.height,o),p=i[2]+i[0],g=i[1]+i[3],m=t.aspect;switch(isNaN(d)&&(d=n-c-g-r),isNaN(f)&&(f=o-h-p-u),isNaN(d)&&isNaN(f)&&(m>n/o?d=.8*n:f=.8*o),null!=m&&(isNaN(d)&&(d=m*f),isNaN(f)&&(f=d/m)),isNaN(r)&&(r=n-c-d-g),isNaN(u)&&(u=o-h-f-p),t.left||t.right){case"center":r=n/2-d/2-i[3];break;case"right":r=n-d-g}switch(t.top||t.bottom){case"middle":case"center":u=o/2-f/2-i[0];break;case"bottom":u=o-f-p}r=r||0,u=u||0,isNaN(d)&&(d=n-r-(c||0)),isNaN(f)&&(f=o-u-(h||0));var v=new a(r+i[3],u+i[0],d,f);return v.margin=i,v},c.positionElement=function(t,e,i,n,r){var s=!r||!r.hv||r.hv[0],l=!r||!r.hv||r.hv[1],u=r&&r.boundingMode||"all";if(s||l){var h;if("raw"===u)h="group"===t.type?new a(0,0,+e.width||0,+e.height||0):t.getBoundingRect();else if(h=t.getBoundingRect(),t.needLocalTransform()){var d=t.getLocalTransform();h=h.clone(),h.applyTransform(d)}e=c.getLayoutRect(o.defaults({width:h.width,height:h.height},e),i,n);var f=t.position,p=s?e.x-h.x:0,g=l?e.y-h.y:0;t.attr("position","raw"===u?[p,g]:[f[0]+p,f[1]+g])}},c.sizeCalculable=function(t,e){return null!=t[d[e][0]]||null!=t[d[e][1]]&&null!=t[d[e][2]]},c.mergeLayoutParam=function(t,e,i){function n(i,n){var o={},s=0,c={},h=0,d=2;if(u(i,function(e){c[e]=t[e]}),u(i,function(t){a(e,t)&&(o[t]=c[t]=e[t]),r(o,t)&&s++,r(c,t)&&h++}),l[n])return r(e,i[1])?c[i[2]]=null:r(e,i[2])&&(c[i[1]]=null),c;if(h!==d&&s){if(s>=d)return o;for(var f=0;f=0;o--)n=a.merge(n,t[o],!0);l.set(this,"__defaultOption",n)}return l.get(this,"__defaultOption")},getReferringComponents:function(t){return this.ecModel.queryComponents({mainType:t,index:this.get(t+"Index",!0),id:this.get(t+"Id",!0)})}});l.enableClassManagement(c,{registerWhenExtend:!0}),s.enableSubTypeDefaulter(c),s.enableTopologicalTravel(c,n),a.mixin(c,i(141)),t.exports=c},function(t,e,i){(function(e){function n(t,e){p.each(v.concat(e.__wrappedMethods||[]),function(i){e.hasOwnProperty(i)&&(t[i]=e[i])}),t.__wrappedMethods=e.__wrappedMethods}function o(t){this._array=t||[]}function a(t){return p.isArray(t)||(t=[t]),t}function r(t,e){var i=t.dimensions,o=new y(p.map(i,t.getDimensionInfo,t),t.hostModel);n(o,t);for(var a=o._storage={},r=t._storage,s=0;s=0?a[l]=new u.constructor(r[l].length):a[l]=r[l]}return o}var s="undefined",l="undefined"==typeof window?e:window,u=typeof l.Float64Array===s?Array:l.Float64Array,c=typeof l.Int32Array===s?Array:l.Int32Array,h={"float":u,"int":c,ordinal:Array,number:Array,time:Array},d=i(10),f=i(48),p=i(1),g=i(5),m=p.isObject,v=["stackedOn","hasItemOption","_nameList","_idList","_rawData"];o.prototype.pure=!1,o.prototype.count=function(){return this._array.length},o.prototype.getItem=function(t){return this._array[t]};var y=function(t,e){t=t||["x","y"];for(var i={},n=[],o=0;o0&&(I+="__ec__"+f[M]),f[M]++),I&&(d[m]=I)}this._nameList=e,this._idList=d},x.count=function(){return this.indices.length},x.get=function(t,e,i){var n=this._storage,o=this.indices[e];if(null==o||!n[t])return NaN;var a=n[t][o];if(i){var r=this._dimensionInfos[t];if(r&&r.stackable)for(var s=this.stackedOn;s;){var l=s.get(t,e);(a>=0&&l>0||a<=0&&l<0)&&(a+=l),s=s.stackedOn}}return a},x.getValues=function(t,e,i){var n=[];p.isArray(t)||(i=e,e=t,t=this.dimensions);for(var o=0,a=t.length;ol&&(l=a));return this._extent[t+!!e]=[s,l]}return[1/0,-(1/0)]},x.getSum=function(t,e){var i=this._storage[t],n=0;if(i)for(var o=0,a=this.count();ot))return a;o=a-1}}return-1},x.indicesOfNearest=function(t,e,i,n){var o=this._storage,a=o[t],r=[];if(!a)return r;null==n&&(n=1/0);for(var s=Number.MAX_VALUE,l=-1,u=0,c=this.count();u=0&&l<0)&&(s=d,l=h,r.length=0),r.push(u))}return r},x.getRawIndex=function(t){var e=this.indices[t];return null==e?-1:e},x.getRawDataItem=function(t){return this._rawData.getItem(this.getRawIndex(t))},x.getName=function(t){return this._nameList[this.indices[t]]||""},x.getId=function(t){return this._idList[this.indices[t]]||this.getRawIndex(t)+""},x.each=function(t,e,i,n){"function"==typeof t&&(n=i,i=e,e=t,t=[]),t=p.map(a(t),this.getDimension,this);var o=[],r=t.length,s=this.indices;n=n||this;for(var l=0;lp-g&&(d=p-g,c.length=d);for(var m=0;mc&&(u=0,l={}),u++,l[i]=o,o}function o(t,e,i,o){var a=((t||"")+"").split("\n").length,r=n(t,e),s=n("国",e),l=a*s,u=new d(0,0,r,l);switch(u.lineHeight=s,o){case"bottom":case"alphabetic":u.y-=s;break;case"middle":u.y-=s/2}switch(i){case"end":case"right":u.x-=u.width;break;case"center":u.x-=u.width/2}return u}function a(t,e,i,n){var o=e.x,a=e.y,r=e.height,s=e.width,l=i.height,u=i.lineHeight,c=r/2-l/2+u,h="left";switch(t){case"left":o-=n,a+=c,h="right";break;case"right":o+=n+s,a+=c,h="left";break;case"top":o+=s/2,a-=n+l-u,h="center";break;case"bottom":o+=s/2,a+=r+n+u,h="center";break;case"inside":o+=s/2,a+=c,h="center";break;case"insideLeft":o+=n,a+=c,h="left";break;case"insideRight":o+=s-n,a+=c,h="right";break;case"insideTop":o+=s/2,a+=n+u,h="center";break;case"insideBottom":o+=s/2,a+=r-l-n+u,h="center";break;case"insideTopLeft":o+=n,a+=n+u,h="left";break;case"insideTopRight":o+=s-n,a+=n+u,h="right";break;case"insideBottomLeft":o+=n,a+=r-l-n+u;break;case"insideBottomRight":o+=s-n,a+=r-l-n+u,h="right"}return{x:o,y:a,textAlign:h,textBaseline:"alphabetic"}}function r(t,e,i,o,a){if(!e)return"";a=a||{},o=f(o,"...");for(var r=f(a.maxIterations,2),l=f(a.minChar,0),u=n("国",i),c=n("a",i),h=f(a.placeholder,""),d=e=Math.max(0,e-1),p=0;p=c;p++)d-=c;var g=n(o);g>d&&(o="",g=0),d=e-g;for(var m=(t+"").split("\n"),p=0,v=m.length;p=r){y+=o;break}var b=0===_?s(y,d,c,u):x>0?Math.floor(y.length*d/x):0;y=y.substr(0,b),x=n(y,i)}""===y&&(y=h),m[p]=y}}return m.join("\n")}function s(t,e,i,n){for(var o=0,a=0,r=t.length;a":"")+u.join(l?"
                  ":", ")}var s=d(this,"data"),l=this.getRawValue(t),u=n.isArray(l)?a(l):f(p(l)),c=s.getName(t),h=s.getItemVisual(t,"color");n.isObject(h)&&h.colorStops&&(h=(h.colorStops[0]||{}).color),h=h||"transparent";var g=o.getTooltipMarker(h),m=this.name;return"\0-"===m&&(m=""),m=m?f(m)+(e?": ":"
                  "):"",e?g+m+u:m+g+(c?f(c)+": "+u:u)},isAnimationEnabled:function(){if(u.node)return!1;var t=this.getShallow("animation");return t&&this.getData().count()>this.getShallow("animationThreshold")&&(t=!1),t},restoreData:function(){h(this,"data",d(this,"dataBeforeProcessed").cloneShallow())},getColorFromPalette:function(t,e){var i=this.ecModel,n=l.getColorFromPalette.call(this,t,e);return n||(n=i.getColorFromPalette(t,e)),n},getAxisTooltipData:null,getTooltipPosition:null});n.mixin(g,r.dataFormatMixin),n.mixin(g,l),t.exports=g},function(t,e,i){var n=i(149),o=i(43);i(150),i(148);var a=i(34),r=i(4),s=i(1),l=i(16),u={};u.getScaleExtent=function(t,e){var i,n,o,a=t.type,l=e.getMin(),u=e.getMax(),c=null!=l,h=null!=u,d=t.getExtent();return"ordinal"===a?i=(e.get("data")||[]).length:(n=e.get("boundaryGap"),s.isArray(n)||(n=[n||0,n||0]),"boolean"==typeof n[0]&&(n=[0,0]),n[0]=r.parsePercent(n[0],1),n[1]=r.parsePercent(n[1],1),o=d[1]-d[0]||Math.abs(d[0])),null==l&&(l="ordinal"===a?i?0:NaN:d[0]-n[0]*o),null==u&&(u="ordinal"===a?i?i-1:NaN:d[1]+n[1]*o),"dataMin"===l&&(l=d[0]),"dataMax"===u&&(u=d[1]),(null==l||!isFinite(l))&&(l=NaN),(null==u||!isFinite(u))&&(u=NaN),t.setBlank(s.eqNaN(l)||s.eqNaN(u)),e.getNeedCrossZero()&&(l>0&&u>0&&!c&&(l=0),l<0&&u<0&&!h&&(u=0)),[l,u]},u.niceScaleExtent=function(t,e){var i=u.getScaleExtent(t,e),n=null!=e.getMin(),o=null!=e.getMax(),a=e.get("splitNumber");"log"===t.type&&(t.base=e.get("logBase")),t.setExtent(i[0],i[1]),t.niceExtent({splitNumber:a,fixMin:n,fixMax:o,minInterval:"interval"===t.type?e.get("minInterval"):null});var r=e.get("interval");null!=r&&t.setInterval&&t.setInterval(r)},u.createScaleByModel=function(t,e){if(e=e||t.get("type"))switch(e){case"category":return new n(t.getCategories(),[1/0,-(1/0)]);case"value":return new o;default:return(a.getClass(e)||o).create(t)}},u.ifAxisCrossZero=function(t){var e=t.scale.getExtent(),i=e[0],n=e[1];return!(i>0&&n>0||i<0&&n<0)},u.getAxisLabelInterval=function(t,e,i,n){var o,a=0,r=0,s=1;e.length>40&&(s=Math.floor(e.length/40));for(var u=0;u1?s:(a+1)*s-1},u.getFormattedLabels=function(t,e){var i=t.scale,n=i.getTicksLabels(),o=i.getTicks();return"string"==typeof e?(e=function(t){return function(e){return t.replace("{value}",null!=e?e:"")}}(e),s.map(n,e)):"function"==typeof e?s.map(o,function(i,n){return e(u.getAxisRawValue(t,i),n)},this):n},u.getAxisRawValue=function(t,e){return"category"===t.type?t.scale.getLabel(e):e},t.exports=u},function(t,e){var i="undefined"==typeof Float32Array?Array:Float32Array,n={create:function(){var t=new i(6);return n.identity(t),t},identity:function(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=1,t[4]=0,t[5]=0,t},copy:function(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t},mul:function(t,e,i){var n=e[0]*i[0]+e[2]*i[1],o=e[1]*i[0]+e[3]*i[1],a=e[0]*i[2]+e[2]*i[3],r=e[1]*i[2]+e[3]*i[3],s=e[0]*i[4]+e[2]*i[5]+e[4],l=e[1]*i[4]+e[3]*i[5]+e[5];return t[0]=n,t[1]=o,t[2]=a,t[3]=r,t[4]=s,t[5]=l,t},translate:function(t,e,i){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4]+i[0],t[5]=e[5]+i[1],t},rotate:function(t,e,i){var n=e[0],o=e[2],a=e[4],r=e[1],s=e[3],l=e[5],u=Math.sin(i),c=Math.cos(i);return t[0]=n*c+r*u,t[1]=-n*u+r*c,t[2]=o*c+s*u,t[3]=-o*u+c*s,t[4]=c*a+u*l,t[5]=c*l-u*a,t},scale:function(t,e,i){var n=i[0],o=i[1];return t[0]=e[0]*n,t[1]=e[1]*o,t[2]=e[2]*n,t[3]=e[3]*o,t[4]=e[4]*n,t[5]=e[5]*o,t},invert:function(t,e){var i=e[0],n=e[2],o=e[4],a=e[1],r=e[3],s=e[5],l=i*r-a*n;return l?(l=1/l,t[0]=r*l,t[1]=-a*l,t[2]=-n*l,t[3]=i*l,t[4]=(n*s-r*o)*l,t[5]=(a*o-i*s)*l,t):null}};t.exports=n},function(t,e,i){"use strict";function n(t){return t>-w&&tw||t<-w}function a(t,e,i,n,o){var a=1-o;return a*a*(a*t+3*o*e)+o*o*(o*n+3*a*i)}function r(t,e,i,n,o){var a=1-o;return 3*(((e-t)*a+2*(i-e)*o)*a+(n-i)*o*o)}function s(t,e,i,o,a,r){var s=o+3*(e-i)-t,l=3*(i-2*e+t),u=3*(e-t),c=t-a,h=l*l-3*s*u,d=l*u-9*s*c,f=u*u-3*l*c,p=0;if(n(h)&&n(d))if(n(l))r[0]=0;else{var g=-u/l;g>=0&&g<=1&&(r[p++]=g)}else{var m=d*d-4*h*f;if(n(m)){var v=d/h,g=-l/s+v,y=-v/2;g>=0&&g<=1&&(r[p++]=g),y>=0&&y<=1&&(r[p++]=y)}else if(m>0){var x=b(m),w=h*l+1.5*s*(-d+x),S=h*l+1.5*s*(-d-x);w=w<0?-_(-w,I):_(w,I),S=S<0?-_(-S,I):_(S,I);var g=(-l-(w+S))/(3*s);g>=0&&g<=1&&(r[p++]=g)}else{var T=(2*h*l-3*s*d)/(2*b(h*h*h)),A=Math.acos(T)/3,C=b(h),L=Math.cos(A),g=(-l-2*C*L)/(3*s),y=(-l+C*(L+M*Math.sin(A)))/(3*s),D=(-l+C*(L-M*Math.sin(A)))/(3*s);g>=0&&g<=1&&(r[p++]=g),y>=0&&y<=1&&(r[p++]=y),D>=0&&D<=1&&(r[p++]=D)}}return p}function l(t,e,i,a,r){var s=6*i-12*e+6*t,l=9*e+3*a-3*t-9*i,u=3*e-3*t,c=0;if(n(l)){if(o(s)){var h=-u/s;h>=0&&h<=1&&(r[c++]=h)}}else{var d=s*s-4*l*u;if(n(d))r[0]=-s/(2*l);else if(d>0){var f=b(d),h=(-s+f)/(2*l),p=(-s-f)/(2*l);h>=0&&h<=1&&(r[c++]=h),p>=0&&p<=1&&(r[c++]=p)}}return c}function u(t,e,i,n,o,a){var r=(e-t)*o+t,s=(i-e)*o+e,l=(n-i)*o+i,u=(s-r)*o+r,c=(l-s)*o+s,h=(c-u)*o+u;a[0]=t,a[1]=r,a[2]=u,a[3]=h,a[4]=h,a[5]=c,a[6]=l,a[7]=n}function c(t,e,i,n,o,r,s,l,u,c,h){var d,f,p,g,m,v=.005,y=1/0;T[0]=u,T[1]=c;for(var _=0;_<1;_+=.05)A[0]=a(t,i,o,s,_),A[1]=a(e,n,r,l,_),g=x(T,A),g=0&&g=0&&h<=1&&(r[c++]=h)}}else{var d=l*l-4*s*u;if(n(d)){var h=-l/(2*s);h>=0&&h<=1&&(r[c++]=h)}else if(d>0){var f=b(d),h=(-l+f)/(2*s),p=(-l-f)/(2*s);h>=0&&h<=1&&(r[c++]=h),p>=0&&p<=1&&(r[c++]=p)}}return c}function p(t,e,i){var n=t+i-2*e;return 0===n?.5:(t-e)/n}function g(t,e,i,n,o){var a=(e-t)*n+t,r=(i-e)*n+e,s=(r-a)*n+a;o[0]=t,o[1]=a,o[2]=s,o[3]=s,o[4]=r,o[5]=i}function m(t,e,i,n,o,a,r,s,l){var u,c=.005,d=1/0;T[0]=r,T[1]=s;for(var f=0;f<1;f+=.05){A[0]=h(t,i,o,f),A[1]=h(e,n,a,f);var p=x(T,A);p=0&&p=0;if(a){var r="touchend"!=n?e.targetTouches[0]:e.changedTouches[0];r&&o(t,r,e,i)}else o(t,e,e,i),e.zrDelta=e.wheelDelta?e.wheelDelta/120:-(e.detail||0)/3;return e}function s(t,e,i){h?t.addEventListener(e,i):t.attachEvent("on"+e,i)}function l(t,e,i){h?t.removeEventListener(e,i):t.detachEvent("on"+e,i)}var u=i(23),c=i(9),h="undefined"!=typeof window&&!!window.addEventListener,d=h?function(t){t.preventDefault(),t.stopPropagation(),t.cancelBubble=!0}:function(t){t.returnValue=!1,t.cancelBubble=!0};t.exports={clientToLocal:o,normalizeEvent:r,addEventListener:s,removeEventListener:l,stop:d,Dispatcher:u}},function(t,e,i){function n(t){return t=Math.round(t),t<0?0:t>255?255:t}function o(t){return t=Math.round(t),t<0?0:t>360?360:t}function a(t){return t<0?0:t>1?1:t}function r(t){return n(t.length&&"%"===t.charAt(t.length-1)?parseFloat(t)/100*255:parseInt(t,10))}function s(t){return a(t.length&&"%"===t.charAt(t.length-1)?parseFloat(t)/100:parseFloat(t))}function l(t,e,i){return i<0?i+=1:i>1&&(i-=1),6*i<1?t+(e-t)*i*6:2*i<1?e:3*i<2?t+(e-t)*(2/3-i)*6:t}function u(t,e,i){return t+(e-t)*i}function c(t,e,i,n,o){return t[0]=e,t[1]=i,t[2]=n,t[3]=o,t}function h(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t}function d(t,e){T&&h(T,e),T=I.put(t,T||e.slice())}function f(t,e){if(t){e=e||[];var i=I.get(t);if(i)return h(e,i);t+="";var n=t.replace(/ /g,"").toLowerCase();if(n in M)return h(e,M[n]),d(t,e),e;if("#"!==n.charAt(0)){var o=n.indexOf("("),a=n.indexOf(")");if(o!==-1&&a+1===n.length){var l=n.substr(0,o),u=n.substr(o+1,a-(o+1)).split(","),f=1;switch(l){case"rgba":if(4!==u.length)return void c(e,0,0,0,1);f=s(u.pop());case"rgb":return 3!==u.length?void c(e,0,0,0,1):(c(e,r(u[0]),r(u[1]),r(u[2]),f),d(t,e),e);case"hsla":return 4!==u.length?void c(e,0,0,0,1):(u[3]=s(u[3]),p(u,e),d(t,e),e);case"hsl":return 3!==u.length?void c(e,0,0,0,1):(p(u,e),d(t,e),e);default:return}}c(e,0,0,0,1)}else{if(4===n.length){var g=parseInt(n.substr(1),16);return g>=0&&g<=4095?(c(e,(3840&g)>>4|(3840&g)>>8,240&g|(240&g)>>4,15&g|(15&g)<<4,1),d(t,e),e):void c(e,0,0,0,1)}if(7===n.length){var g=parseInt(n.substr(1),16);return g>=0&&g<=16777215?(c(e,(16711680&g)>>16,(65280&g)>>8,255&g,1),d(t,e),e):void c(e,0,0,0,1)}}}}function p(t,e){var i=(parseFloat(t[0])%360+360)%360/360,o=s(t[1]),a=s(t[2]),r=a<=.5?a*(o+1):a+o-a*o,u=2*a-r;return e=e||[],c(e,n(255*l(u,r,i+1/3)),n(255*l(u,r,i)),n(255*l(u,r,i-1/3)),1),4===t.length&&(e[3]=t[3]),e}function g(t){if(t){var e,i,n=t[0]/255,o=t[1]/255,a=t[2]/255,r=Math.min(n,o,a),s=Math.max(n,o,a),l=s-r,u=(s+r)/2;if(0===l)e=0,i=0;else{i=u<.5?l/(s+r):l/(2-s-r);var c=((s-n)/6+l/2)/l,h=((s-o)/6+l/2)/l,d=((s-a)/6+l/2)/l;n===s?e=d-h:o===s?e=1/3+c-d:a===s&&(e=2/3+h-c),e<0&&(e+=1),e>1&&(e-=1)}var f=[360*e,i,u];return null!=t[3]&&f.push(t[3]),f}}function m(t,e){var i=f(t);if(i){for(var n=0;n<3;n++)e<0?i[n]=i[n]*(1-e)|0:i[n]=(255-i[n])*e+i[n]|0;return w(i,4===i.length?"rgba":"rgb")}}function v(t,e){var i=f(t);if(i)return((1<<24)+(i[0]<<16)+(i[1]<<8)+ +i[2]).toString(16).slice(1)}function y(t,e,i){if(e&&e.length&&t>=0&&t<=1){i=i||[];var o=t*(e.length-1),r=Math.floor(o),s=Math.ceil(o),l=e[r],c=e[s],h=o-r;return i[0]=n(u(l[0],c[0],h)),i[1]=n(u(l[1],c[1],h)),i[2]=n(u(l[2],c[2],h)),i[3]=a(u(l[3],c[3],h)),i}}function x(t,e,i){if(e&&e.length&&t>=0&&t<=1){var o=t*(e.length-1),r=Math.floor(o),s=Math.ceil(o),l=f(e[r]),c=f(e[s]),h=o-r,d=w([n(u(l[0],c[0],h)),n(u(l[1],c[1],h)),n(u(l[2],c[2],h)),a(u(l[3],c[3],h))],"rgba");return i?{color:d,leftIndex:r,rightIndex:s,value:o}:d}}function _(t,e,i,n){if(t=f(t))return t=g(t),null!=e&&(t[0]=o(e)),null!=i&&(t[1]=s(i)),null!=n&&(t[2]=s(n)),w(p(t),"rgba")}function b(t,e){if(t=f(t),t&&null!=e)return t[3]=a(e),w(t,"rgba")}function w(t,e){if(t&&t.length){var i=t[0]+","+t[1]+","+t[2];return"rgba"!==e&&"hsva"!==e&&"hsla"!==e||(i+=","+t[3]),e+"("+i+")"}}var S=i(70),M={transparent:[0,0,0,0],aliceblue:[240,248,255,1],antiquewhite:[250,235,215,1],aqua:[0,255,255,1], +aquamarine:[127,255,212,1],azure:[240,255,255,1],beige:[245,245,220,1],bisque:[255,228,196,1],black:[0,0,0,1],blanchedalmond:[255,235,205,1],blue:[0,0,255,1],blueviolet:[138,43,226,1],brown:[165,42,42,1],burlywood:[222,184,135,1],cadetblue:[95,158,160,1],chartreuse:[127,255,0,1],chocolate:[210,105,30,1],coral:[255,127,80,1],cornflowerblue:[100,149,237,1],cornsilk:[255,248,220,1],crimson:[220,20,60,1],cyan:[0,255,255,1],darkblue:[0,0,139,1],darkcyan:[0,139,139,1],darkgoldenrod:[184,134,11,1],darkgray:[169,169,169,1],darkgreen:[0,100,0,1],darkgrey:[169,169,169,1],darkkhaki:[189,183,107,1],darkmagenta:[139,0,139,1],darkolivegreen:[85,107,47,1],darkorange:[255,140,0,1],darkorchid:[153,50,204,1],darkred:[139,0,0,1],darksalmon:[233,150,122,1],darkseagreen:[143,188,143,1],darkslateblue:[72,61,139,1],darkslategray:[47,79,79,1],darkslategrey:[47,79,79,1],darkturquoise:[0,206,209,1],darkviolet:[148,0,211,1],deeppink:[255,20,147,1],deepskyblue:[0,191,255,1],dimgray:[105,105,105,1],dimgrey:[105,105,105,1],dodgerblue:[30,144,255,1],firebrick:[178,34,34,1],floralwhite:[255,250,240,1],forestgreen:[34,139,34,1],fuchsia:[255,0,255,1],gainsboro:[220,220,220,1],ghostwhite:[248,248,255,1],gold:[255,215,0,1],goldenrod:[218,165,32,1],gray:[128,128,128,1],green:[0,128,0,1],greenyellow:[173,255,47,1],grey:[128,128,128,1],honeydew:[240,255,240,1],hotpink:[255,105,180,1],indianred:[205,92,92,1],indigo:[75,0,130,1],ivory:[255,255,240,1],khaki:[240,230,140,1],lavender:[230,230,250,1],lavenderblush:[255,240,245,1],lawngreen:[124,252,0,1],lemonchiffon:[255,250,205,1],lightblue:[173,216,230,1],lightcoral:[240,128,128,1],lightcyan:[224,255,255,1],lightgoldenrodyellow:[250,250,210,1],lightgray:[211,211,211,1],lightgreen:[144,238,144,1],lightgrey:[211,211,211,1],lightpink:[255,182,193,1],lightsalmon:[255,160,122,1],lightseagreen:[32,178,170,1],lightskyblue:[135,206,250,1],lightslategray:[119,136,153,1],lightslategrey:[119,136,153,1],lightsteelblue:[176,196,222,1],lightyellow:[255,255,224,1],lime:[0,255,0,1],limegreen:[50,205,50,1],linen:[250,240,230,1],magenta:[255,0,255,1],maroon:[128,0,0,1],mediumaquamarine:[102,205,170,1],mediumblue:[0,0,205,1],mediumorchid:[186,85,211,1],mediumpurple:[147,112,219,1],mediumseagreen:[60,179,113,1],mediumslateblue:[123,104,238,1],mediumspringgreen:[0,250,154,1],mediumturquoise:[72,209,204,1],mediumvioletred:[199,21,133,1],midnightblue:[25,25,112,1],mintcream:[245,255,250,1],mistyrose:[255,228,225,1],moccasin:[255,228,181,1],navajowhite:[255,222,173,1],navy:[0,0,128,1],oldlace:[253,245,230,1],olive:[128,128,0,1],olivedrab:[107,142,35,1],orange:[255,165,0,1],orangered:[255,69,0,1],orchid:[218,112,214,1],palegoldenrod:[238,232,170,1],palegreen:[152,251,152,1],paleturquoise:[175,238,238,1],palevioletred:[219,112,147,1],papayawhip:[255,239,213,1],peachpuff:[255,218,185,1],peru:[205,133,63,1],pink:[255,192,203,1],plum:[221,160,221,1],powderblue:[176,224,230,1],purple:[128,0,128,1],red:[255,0,0,1],rosybrown:[188,143,143,1],royalblue:[65,105,225,1],saddlebrown:[139,69,19,1],salmon:[250,128,114,1],sandybrown:[244,164,96,1],seagreen:[46,139,87,1],seashell:[255,245,238,1],sienna:[160,82,45,1],silver:[192,192,192,1],skyblue:[135,206,235,1],slateblue:[106,90,205,1],slategray:[112,128,144,1],slategrey:[112,128,144,1],snow:[255,250,250,1],springgreen:[0,255,127,1],steelblue:[70,130,180,1],tan:[210,180,140,1],teal:[0,128,128,1],thistle:[216,191,216,1],tomato:[255,99,71,1],turquoise:[64,224,208,1],violet:[238,130,238,1],wheat:[245,222,179,1],white:[255,255,255,1],whitesmoke:[245,245,245,1],yellow:[255,255,0,1],yellowgreen:[154,205,50,1]},I=new S(20),T=null;t.exports={parse:f,lift:m,toHex:v,fastMapToColor:y,mapToColor:x,modifyHSL:_,modifyAlpha:b,stringify:w}},function(t,e){var i=Array.prototype.slice,n=function(){this._$handlers={}};n.prototype={constructor:n,one:function(t,e,i){var n=this._$handlers;if(!e||!t)return this;n[t]||(n[t]=[]);for(var o=0;o3&&(e=i.call(e,1));for(var o=this._$handlers[t],a=o.length,r=0;r4&&(e=i.call(e,1,e.length-1));for(var o=e[e.length-1],a=this._$handlers[t],r=a.length,s=0;sthis._ux||y(e-this._yi)>this._uy||this._len<5;return this.addData(l.L,t,e),this._ctx&&i&&(this._needsDash()?this._dashedLineTo(t,e):this._ctx.lineTo(t,e)),i&&(this._xi=t,this._yi=e),this},bezierCurveTo:function(t,e,i,n,o,a){return this.addData(l.C,t,e,i,n,o,a),this._ctx&&(this._needsDash()?this._dashedBezierTo(t,e,i,n,o,a):this._ctx.bezierCurveTo(t,e,i,n,o,a)),this._xi=o,this._yi=a,this},quadraticCurveTo:function(t,e,i,n){return this.addData(l.Q,t,e,i,n),this._ctx&&(this._needsDash()?this._dashedQuadraticTo(t,e,i,n):this._ctx.quadraticCurveTo(t,e,i,n)),this._xi=i,this._yi=n,this},arc:function(t,e,i,n,o,a){return this.addData(l.A,t,e,i,i,n,o-n,0,a?0:1),this._ctx&&this._ctx.arc(t,e,i,n,o,a),this._xi=g(o)*i+t,this._yi=m(o)*i+t,this},arcTo:function(t,e,i,n,o){return this._ctx&&this._ctx.arcTo(t,e,i,n,o),this},rect:function(t,e,i,n){return this._ctx&&this._ctx.rect(t,e,i,n),this.addData(l.R,t,e,i,n),this},closePath:function(){this.addData(l.Z);var t=this._ctx,e=this._x0,i=this._y0;return t&&(this._needsDash()&&this._dashedLineTo(e,i),t.closePath()),this._xi=e,this._yi=i,this},fill:function(t){t&&t.fill(),this.toStatic()},stroke:function(t){t&&t.stroke(),this.toStatic()},setLineDash:function(t){if(t instanceof Array){this._lineDash=t,this._dashIdx=0;for(var e=0,i=0;ie.length&&(this._expandData(),e=this.data);for(var i=0;i0&&g<=t||c<0&&g>=t||0==c&&(h>0&&m<=e||h<0&&m>=e);)n=this._dashIdx,i=r[n],g+=c*i,m+=h*i,this._dashIdx=(n+1)%y,c>0&&gl||h>0&&mu||s[n%2?"moveTo":"lineTo"](c>=0?f(g,t):p(g,t),h>=0?f(m,e):p(m,e));c=g-t,h=m-e,this._dashOffset=-v(c*c+h*h)},_dashedBezierTo:function(t,e,i,o,a,r){var s,l,u,c,h,d=this._dashSum,f=this._dashOffset,p=this._lineDash,g=this._ctx,m=this._xi,y=this._yi,x=n.cubicAt,_=0,b=this._dashIdx,w=p.length,S=0;for(f<0&&(f=d+f),f%=d,s=0;s<1;s+=.1)l=x(m,t,i,a,s+.1)-x(m,t,i,a,s),u=x(y,e,o,r,s+.1)-x(y,e,o,r,s),_+=v(l*l+u*u);for(;bf));b++);for(s=(S-f)/_;s<=1;)c=x(m,t,i,a,s),h=x(y,e,o,r,s),b%2?g.moveTo(c,h):g.lineTo(c,h),s+=p[b]/_,b=(b+1)%w;b%2!==0&&g.lineTo(a,r),l=a-c,u=r-h,this._dashOffset=-v(l*l+u*u)},_dashedQuadraticTo:function(t,e,i,n){var o=i,a=n;i=(i+2*t)/3,n=(n+2*e)/3,t=(this._xi+2*t)/3,e=(this._yi+2*e)/3,this._dashedBezierTo(t,e,i,n,o,a)},toStatic:function(){var t=this.data;t instanceof Array&&(t.length=this._len,x&&(this.data=new Float32Array(t)))},getBoundingRect:function(){u[0]=u[1]=h[0]=h[1]=Number.MAX_VALUE,c[0]=c[1]=d[0]=d[1]=-Number.MAX_VALUE;for(var t=this.data,e=0,i=0,n=0,s=0,f=0;fu||y(r-o)>c||d===h-1)&&(t.lineTo(a,r),n=a,o=r);break;case l.C:t.bezierCurveTo(s[d++],s[d++],s[d++],s[d++],s[d++],s[d++]),n=s[d-2],o=s[d-1];break;case l.Q:t.quadraticCurveTo(s[d++],s[d++],s[d++],s[d++]),n=s[d-2],o=s[d-1];break;case l.A:var p=s[d++],v=s[d++],x=s[d++],_=s[d++],b=s[d++],w=s[d++],S=s[d++],M=s[d++],I=x>_?x:_,T=x>_?1:x/_,A=x>_?_/x:1,C=Math.abs(x-_)>.001,L=b+w;C?(t.translate(p,v),t.rotate(S),t.scale(T,A),t.arc(0,0,I,b,L,1-M),t.scale(1/T,1/A),t.rotate(-S),t.translate(-p,-v)):t.arc(p,v,I,b,L,1-M),1==d&&(e=g(b)*x+p,i=m(b)*_+v),n=g(L)*x+p,o=m(L)*_+v;break;case l.R:e=n=s[d],i=o=s[d+1],t.rect(s[d++],s[d++],s[d++],s[d++]);break;case l.Z:t.closePath(),n=e,o=i}}}},_.CMD=l,t.exports=_},function(t,e,i){"use strict";function n(t){for(var e=0;e=0&&o(t)?function(t,e,i,n){return d.isDataItemOption(t)&&(_.hasItemOption=!0),n===x?i:g(p(t),y[n])}:function(t,e,i,n){var o=p(t),a=g(o&&o[n],y[n]);d.isDataItemOption(t)&&(_.hasItemOption=!0);var r=v&&v.categoryAxesModels;return r&&r[e]&&"string"==typeof a&&(w[e]=w[e]||r[e].getCategories(),a=h.indexOf(w[e],a),a<0&&!isNaN(a)&&(a=+a)),a};return _.hasItemOption=!1,_.initData(t,b,S),_}function r(t){return"category"!==t&&"time"!==t}function s(t){return"category"===t?"ordinal":"time"===t?"time":"float"}function l(t,e){var i,n=[],o=t&&t.dimensions[t.categoryIndex];if(o&&(i=t.categoryAxesModels[o.name]),i){var a=i.getCategories();if(a){var r=e.length;if(h.isArray(e[0])&&e[0].length>1){n=[];for(var s=0;s=0||i&&n.indexOf(i,r)<0)){var s=this.getShallow(r);null!=s&&(o[t[a][0]]=s)}}return o}}},function(t,e,i){"use strict";var n=i(3),o=i(1),a=i(2);i(57),i(117),a.extendComponentView({type:"grid",render:function(t,e){this.group.removeAll(),t.get("show")&&this.group.add(new n.Rect({shape:t.coordinateSystem.getRect(),style:o.defaults({fill:t.get("backgroundColor")},t.getItemStyle()),silent:!0,z2:-1}))}}),a.registerPreprocessor(function(t){t.xAxis&&t.yAxis&&!t.grid&&(t.grid={})})},function(t,e,i){function n(t,e){var i=t[1]-t[0],n=e,o=i/n/2;t[0]+=o,t[1]-=o}var o=i(4),a=o.linearMap,r=i(1),s=i(18),l=[0,1],u=function(t,e,i){this.dim=t,this.scale=e,this._extent=i||[0,0],this.inverse=!1,this.onBand=!1,this._labelInterval};u.prototype={constructor:u,contain:function(t){var e=this._extent,i=Math.min(e[0],e[1]),n=Math.max(e[0],e[1]);return t>=i&&t<=n},containData:function(t){return this.contain(this.dataToCoord(t))},getExtent:function(){return this._extent.slice()},getPixelPrecision:function(t){return o.getPixelPrecision(t||this.scale.getExtent(),this._extent)},setExtent:function(t,e){var i=this._extent;i[0]=t,i[1]=e},dataToCoord:function(t,e){var i=this._extent,o=this.scale;return t=o.normalize(t),this.onBand&&"ordinal"===o.type&&(i=i.slice(),n(i,o.count())),a(t,l,i,e)},coordToData:function(t,e){var i=this._extent,o=this.scale;this.onBand&&"ordinal"===o.type&&(i=i.slice(),n(i,o.count()));var r=a(t,i,l,e);return this.scale.scale(r)},pointToData:function(t,e){},getTicksCoords:function(t){if(this.onBand&&!t){for(var e=this.getBands(),i=[],n=0;n=e[0]&&t<=e[1]},a.normalize=function(t){var e=this._extent;return e[1]===e[0]?.5:(t-e[0])/(e[1]-e[0])},a.scale=function(t){var e=this._extent;return t*(e[1]-e[0])+e[0]},a.unionExtent=function(t){var e=this._extent;t[0]e[1]&&(e[1]=t[1])},a.unionExtentFromData=function(t,e){this.unionExtent(t.getDataExtent(e,!0))},a.getExtent=function(){return this._extent.slice()},a.setExtent=function(t,e){var i=this._extent;isNaN(t)||(i[0]=t),isNaN(e)||(i[1]=e)},a.getTicksLabels=function(){for(var t=[],e=this.getTicks(),i=0;i=0&&(i.splice(n,0,t),this._doAdd(t))}return this},_doAdd:function(t){t.parent&&t.parent.remove(t),t.parent=this;var e=this.__storage,i=this.__zr;e&&e!==t.__storage&&(e.addToStorage(t),t instanceof r&&t.addChildrenToStorage(e)),i&&i.refresh()},remove:function(t){var e=this.__zr,i=this.__storage,o=this._children,a=n.indexOf(o,t);return a<0?this:(o.splice(a,1),t.parent=null,i&&(i.delFromStorage(t),t instanceof r&&t.delChildrenFromStorage(i)),e&&e.refresh(),this)},removeAll:function(){var t,e,i=this._children,n=this.__storage;for(e=0;e=0?n():h=setTimeout(n,-a),u=o};return d.clear=function(){h&&(clearTimeout(h),h=null)},d.debounceNextCall=function(t){l=t},d},i.createOrUpdate=function(t,e,r,s){var l=t[e];if(l){var u=l[n]||l,c=l[a],h=l[o];if(h!==r||c!==s){if(null==r||!s)return t[e]=u;l=t[e]=i.throttle(u,r,"debounce"===s),l[n]=u,l[a]=s,l[o]=r}return l}},i.clear=function(t,e){var i=t[e];i&&i[n]&&(t[e]=i[n])},t.exports=i},function(t,e,i){function n(t){t=t||{},r.call(this,t);for(var e in t)t.hasOwnProperty(e)&&"style"!==e&&(this[e]=t[e]);this.style=new a(t.style),this._rect=null,this.__clipPaths=[]}var o=i(1),a=i(73),r=i(66),s=i(87);n.prototype={constructor:n,type:"displayable",__dirty:!0,invisible:!1,z:0,z2:0,zlevel:0,draggable:!1,dragging:!1,silent:!1,culling:!1,cursor:"pointer",rectHover:!1,progressive:-1,beforeBrush:function(t){},afterBrush:function(t){},brush:function(t,e){},getBoundingRect:function(){},contain:function(t,e){return this.rectContain(t,e)},traverse:function(t,e){t.call(e,this)},rectContain:function(t,e){var i=this.transformCoordToLocal(t,e),n=this.getBoundingRect();return n.contain(i[0],i[1])},dirty:function(){this.__dirty=!0,this._rect=null,this.__zr&&this.__zr.refresh()},animateStyle:function(t){return this.animate("style",t)},attrKV:function(t,e){"style"!==t?r.prototype.attrKV.call(this,t,e):this.style.set(e)},setStyle:function(t,e){return this.style.set(t,e),this.dirty(!1),this},useStyle:function(t){return this.style=new a(t),this.dirty(!1),this}},o.inherits(n,r),o.mixin(n,s),t.exports=n},function(t,e){var i=function(t){this.colorStops=t||[]};i.prototype={constructor:i,addColorStop:function(t,e){this.colorStops.push({offset:t,color:e})}},t.exports=i},function(t,e,i){function n(t){var e={componentType:t.mainType};return e[t.mainType+"Index"]=t.componentIndex,e}function o(t,e,i,n){var o,a,r=f(i-t.rotation),s=n[0]>n[1],l="start"===e&&!s||"start"!==e&&s;return p(r-x/2)?(a=l?"bottom":"top",o="center"):p(r-1.5*x)?(a=l?"top":"bottom",o="center"):(a="middle",o=r<1.5*x&&r>x/2?l?"left":"right":l?"right":"left"),{rotation:r,textAlign:o,textVerticalAlign:a}}function a(t){var e=t.get("tooltip");return t.get("silent")||!(t.get("triggerEvent")||e&&e.show)}function r(t,e){var i=t.get("axisLabel.showMinLabel"),n=t.get("axisLabel.showMaxLabel"),o=e[0],a=e[1],r=e[e.length-1],l=e[e.length-2];i===!1?o.ignore=!0:null!=t.getMin()&&s(o,a)&&(i?a.ignore=!0:o.ignore=!0),n===!1?r.ignore=!0:null!=t.getMax()&&s(l,r)&&(n?l.ignore=!0:r.ignore=!0)}function s(t,e,i){var n=t&&t.getBoundingRect().clone(),o=e&&e.getBoundingRect().clone();if(n&&o){var a=m.identity([]);return m.rotate(a,a,-t.rotation),n.applyTransform(m.mul([],a,t.getLocalTransform())),o.applyTransform(m.mul([],a,e.getLocalTransform())),n.intersect(o)}}var l=i(1),u=i(7),c=i(3),h=i(10),d=i(4),f=d.remRadian,p=d.isRadianAroundZero,g=i(6),m=i(19),v=g.applyTransform,y=l.retrieve,x=Math.PI,_=function(t,e){this.opt=e,this.axisModel=t,l.defaults(e,{labelOffset:0,nameDirection:1,tickDirection:1,labelDirection:1,silent:!0}),this.group=new c.Group;var i=new c.Group({position:e.position.slice(),rotation:e.rotation});i.updateTransform(),this._transform=i.transform,this._dumbGroup=i};_.prototype={constructor:_,hasBuilder:function(t){return!!b[t]},add:function(t){b[t].call(this)},getGroup:function(){return this.group}};var b={axisLine:function(){var t=this.opt,e=this.axisModel;if(e.get("axisLine.show")){var i=this.axisModel.axis.getExtent(),n=this._transform,o=[i[0],0],a=[i[1],0];n&&(v(o,o,n),v(a,a,n)),this.group.add(new c.Line(c.subPixelOptimizeLine({anid:"line",shape:{x1:o[0],y1:o[1],x2:a[0],y2:a[1]},style:l.extend({lineCap:"round"},e.getModel("axisLine.lineStyle").getLineStyle()),strokeContainThreshold:t.strokeContainThreshold||5,silent:!0,z2:1})))}},axisTick:function(){var t=this.axisModel,e=t.axis;if(t.get("axisTick.show")&&!e.scale.isBlank())for(var i=t.getModel("axisTick"),n=this.opt,o=i.getModel("lineStyle"),a=i.get("length"),r=M(i,n.labelInterval),s=e.getTicksCoords(i.get("alignWithLabel")),u=e.scale.getTicks(),h=[],d=[],f=this._transform,p=0;pp[1]?-1:1,m=["start"===s?p[0]-g*f:"end"===s?p[1]+g*f:(p[0]+p[1])/2,"middle"===s?t.labelOffset+h*f:0],v=e.get("nameRotate");null!=v&&(v=v*x/180);var _;"middle"===s?r=w(t.rotation,null!=v?v:t.rotation,h):(r=o(t,s,v||0,p),_=t.axisNameAvailableWidth,null!=_&&(_=Math.abs(_/Math.sin(r.rotation)),!isFinite(_)&&(_=null)));var b=d.getFont(),S=e.get("nameTruncate",!0)||{},M=S.ellipsis,I=y(t.nameTruncateMaxWidth,S.maxWidth,_),T=null!=M&&null!=I?u.truncateText(i,I,b,M,{minChar:2,placeholder:S.placeholder}):i,A=e.get("tooltip",!0),C=e.mainType,L={componentType:C,name:i,$vars:["name"]};L[C+"Index"]=e.componentIndex;var D=new c.Text({anid:"name",__fullText:i,__truncatedText:T,style:{text:T,textFont:b,fill:d.getTextColor()||e.get("axisLine.lineStyle.color"),textAlign:r.textAlign,textVerticalAlign:r.textVerticalAlign},position:m,rotation:r.rotation,silent:a(e),z2:1,tooltip:A&&A.show?l.extend({content:i,formatter:function(){return i},formatterParams:L},A):null});e.get("triggerEvent")&&(D.eventData=n(e),D.eventData.targetType="axisName",D.eventData.name=i),this._dumbGroup.add(D),D.updateTransform(),this.group.add(D),D.decomposeTransform()}}},w=_.innerTextLayout=function(t,e,i){var n,o,a=f(e-t);return p(a)?(o=i>0?"top":"bottom",n="center"):p(a-x)?(o=i>0?"bottom":"top",n="center"):(o="middle",n=a>0&&a0?"right":"left":i>0?"left":"right"),{rotation:a,textAlign:n,textVerticalAlign:o}},S=_.ifIgnoreOnTick=function(t,e,i){var n,o=t.scale;return"ordinal"===o.type&&("function"==typeof i?(n=o.getTicks()[e],!i(n,o.getLabel(n))):e%(i+1))},M=_.getInterval=function(t,e){var i=t.get("interval");return null!=i&&"auto"!=i||(i=e),i};t.exports=_},function(t,e,i){function n(t,e,i,n,s,l){var u=r.getAxisPointerClass(t.axisPointerClass);if(u){var c=a.getAxisPointerModel(e);c?(t._axisPointer||(t._axisPointer=new u)).render(e,c,n,l):o(t,n)}}function o(t,e,i){var n=t._axisPointer;n&&n.dispose(e,i),t._axisPointer=null}var a=i(45),r=i(2).extendComponentView({type:"axis",_axisPointer:null,axisPointerClass:null,render:function(t,e,i,o){this.axisPointerClass&&a.fixValue(t),r.superApply(this,"render",arguments),n(this,t,e,i,o,!0)},updateAxisPointer:function(t,e,i,o,a){n(this,t,e,i,o,!1)},remove:function(t,e){var i=this._axisPointer;i&&i.remove(e),r.superApply(this,"remove",arguments)},dispose:function(t,e){o(this,e),r.superApply(this,"dispose",arguments)}}),s=[];r.registerAxisPointerClass=function(t,e){s[t]=e},r.getAxisPointerClass=function(t){return t&&s[t]},t.exports=r},function(t,e,i){function n(t){return o.isObject(t)&&null!=t.value?t.value:t+""}var o=i(1),a=i(18);t.exports={getFormattedLabels:function(){return a.getFormattedLabels(this.axis,this.get("axisLabel.formatter"))},getCategories:function(){return"category"===this.get("type")&&o.map(this.get("data"),n)},getMin:function(t){var e=this.option,i=t||null==e.rangeStart?e.min:e.rangeStart;return this.axis&&null!=i&&"dataMin"!==i&&!o.eqNaN(i)&&(i=this.axis.scale.parse(i)),i},getMax:function(t){var e=this.option,i=t||null==e.rangeEnd?e.max:e.rangeEnd;return this.axis&&null!=i&&"dataMax"!==i&&!o.eqNaN(i)&&(i=this.axis.scale.parse(i)),i},getNeedCrossZero:function(){var t=this.option;return null==t.rangeStart&&null==t.rangeEnd&&!t.scale},getCoordSysModel:o.noop,setRange:function(t,e){this.option.rangeStart=t,this.option.rangeEnd=e},resetRange:function(){this.option.rangeStart=this.option.rangeEnd=null}}},function(t,e,i){var n=i(4),o=i(7),a=i(34),r=i(64),s=n.round,l=a.extend({type:"interval",_interval:0,_intervalPrecision:2,setExtent:function(t,e){var i=this._extent;isNaN(t)||(i[0]=parseFloat(t)),isNaN(e)||(i[1]=parseFloat(e))},unionExtent:function(t){var e=this._extent;t[0]e[1]&&(e[1]=t[1]),l.prototype.setExtent.call(this,e[0],e[1])},getInterval:function(){return this._interval},setInterval:function(t){this._interval=t,this._niceExtent=this._extent.slice(),this._intervalPrecision=r.getIntervalPrecision(t)},getTicks:function(){return r.intervalScaleGetTicks(this._interval,this._extent,this._niceExtent,this._intervalPrecision)},getTicksLabels:function(){for(var t=[],e=this.getTicks(),i=0;i=0||t===e}function l(t){return!!t.get("handle.show")}var u=i(1),c=i(10),h=u.each,d=u.curry,f={};f.collect=function(t,e){var i={axesInfo:{},seriesInvolved:!1,coordSysAxesInfo:{},coordSysMap:{}};return n(i,t,e),i.seriesInvolved&&a(i,t),i},f.fixValue=function(t){var e=f.getAxisInfo(t);if(e){var i=e.axisPointerModel,n=e.axis.scale,o=i.option,a=i.get("status"),r=i.get("value");null!=r&&(r=n.parse(r));var s=l(i);null==a&&(o.status=s?"show":"hide");var u=n.getExtent().slice();u[0]>u[1]&&u.reverse(),(null==r||r>u[1])&&(r=u[1]),r0?100:20}},getFirstTargetAxisModel:function(){var t;return d(function(e){if(null==t){var i=this.get(e.axisIndex);i.length&&(t=this.dependentModels[e.axis][i[0]])}},this),t},eachTargetAxis:function(t,e){var i=this.ecModel;d(function(n){h(this.get(n.axisIndex),function(o){t.call(e,n,o,this,i)},this)},this)},getAxisProxy:function(t,e){return this._axisProxies[t+"_"+e]},getAxisModel:function(t,e){var i=this.getAxisProxy(t,e);return i&&i.getAxisModel()},setRawRange:function(t,e){h(["start","end","startValue","endValue"],function(e){this.option[e]=t[e]},this),!e&&o(this,t)},getPercentRange:function(){var t=this.findRepresentativeAxisProxy();if(t)return t.getDataPercentWindow()},getValueRange:function(t,e){if(null!=t||null!=e)return this.getAxisProxy(t,e).getDataValueWindow();var i=this.findRepresentativeAxisProxy();return i?i.getDataValueWindow():void 0},findRepresentativeAxisProxy:function(t){if(t)return t.__dzAxisProxy;var e=this._axisProxies;for(var i in e)if(e.hasOwnProperty(i)&&e[i].hostedBy(this))return e[i];for(var i in e)if(e.hasOwnProperty(i)&&!e[i].hostedBy(this))return e[i]},getRangePropMode:function(){return this._rangePropMode.slice()}});t.exports=f},function(t,e,i){var n=i(65);t.exports=n.extend({type:"dataZoom",render:function(t,e,i,n){this.dataZoomModel=t,this.ecModel=e,this.api=i},getTargetCoordInfo:function(){function t(t,e,i,n){for(var o,a=0;a=0&&i.push(t)}),i}t.topologicalTravel=function(t,e,o,a){function r(t){u[t].entryCount--,0===u[t].entryCount&&c.push(t)}function s(t){h[t]=!0,r(t)}if(t.length){var l=i(e),u=l.graph,c=l.noEntryList,h={};for(n.each(t,function(t){h[t]=!0});c.length;){var d=c.pop(),f=u[d],p=!!h[d];p&&(o.call(a,d,f.originalDeps.slice()),delete h[d]),n.each(f.successor,p?s:r)}n.each(h,function(){throw new Error("Circle dependency may exists")})}}},t.exports=s},function(t,e){t.exports=function(t,e,i,n,o){n.eachRawSeriesByType(t,function(t){var o=t.getData(),a=t.get("symbol")||e,r=t.get("symbolSize");o.setVisual({legendSymbol:i||a,symbol:a,symbolSize:r}),n.isSeriesFiltered(t)||("function"==typeof r&&o.each(function(e){var i=t.getRawValue(e),n=t.getDataParams(e);o.setItemVisual(e,"symbolSize",r(i,n))}),o.each(function(t){var e=o.getItemModel(t),i=e.getShallow("symbol",!0),n=e.getShallow("symbolSize",!0);null!=i&&o.setItemVisual(t,"symbol",i),null!=n&&o.setItemVisual(t,"symbolSize",n)}))})}},function(t,e){function i(t){for(var e=0;t>=c;)e|=1&t,t>>=1;return t+e}function n(t,e,i,n){var a=e+1;if(a===i)return 1;if(n(t[a++],t[e])<0){for(;a=0;)a++;return a-e}function o(t,e,i){for(i--;e>>1,o(r,t[a])<0?l=a:s=a+1;var u=n-s;switch(u){case 3:t[s+3]=t[s+2];case 2:t[s+2]=t[s+1];case 1:t[s+1]=t[s];break;default:for(;u>0;)t[s+u]=t[s+u-1],u--}t[s]=r}}function r(t,e,i,n,o,a){var r=0,s=0,l=1;if(a(t,e[i+o])>0){for(s=n-o;l0;)r=l,l=(l<<1)+1,l<=0&&(l=s);l>s&&(l=s),r+=o,l+=o}else{for(s=o+1;ls&&(l=s);var u=r;r=o-l,l=o-u}for(r++;r>>1);a(t,e[i+c])>0?r=c+1:l=c}return l}function s(t,e,i,n,o,a){var r=0,s=0,l=1;if(a(t,e[i+o])<0){for(s=o+1;ls&&(l=s);var u=r;r=o-l,l=o-u}else{for(s=n-o;l=0;)r=l,l=(l<<1)+1,l<=0&&(l=s);l>s&&(l=s),r+=o,l+=o}for(r++;r>>1);a(t,e[i+c])<0?l=c:r=c+1}return l}function l(t,e){function i(t,e){c[y]=t,f[y]=e,y+=1}function n(){for(;y>1;){var t=y-2;if(t>=1&&f[t-1]<=f[t]+f[t+1]||t>=2&&f[t-2]<=f[t]+f[t-1])f[t-1]f[t+1])break;a(t)}}function o(){for(;y>1;){var t=y-2;t>0&&f[t-1]=h||g>=h);if(m)break;v<0&&(v=0),v+=2}if(p=v,p<1&&(p=1),1===n){for(l=0;l=0;l--)t[g+l]=t[f+l];return void(t[d]=x[c])}for(var m=p;;){var v=0,y=0,_=!1;do if(e(x[c],t[u])<0){if(t[d--]=t[u--],v++,y=0,0===--n){_=!0;break}}else if(t[d--]=x[c--],y++,v=0,1===--a){_=!0;break}while((v|y)=0;l--)t[g+l]=t[f+l];if(0===n){_=!0;break}}if(t[d--]=x[c--],1===--a){_=!0;break}if(y=a-r(t[u],x,0,a,a-1,e),0!==y){for(d-=y,c-=y,a-=y,g=d+1,f=c+1,l=0;l=h||y>=h);if(_)break;m<0&&(m=0),m+=2}if(p=m,p<1&&(p=1),1===a){for(d-=n,u-=n,g=d+1,f=u+1,l=n-1;l>=0;l--)t[g+l]=t[f+l];t[d]=x[c]}else{if(0===a)throw new Error;for(f=d-(a-1),l=0;l>>1);var x=[];v=g<120?5:g<1542?10:g<119151?19:40,c=[],f=[],this.mergeRuns=n,this.forceMergeRuns=o,this.pushRun=i}function u(t,e,o,r){o||(o=0),r||(r=t.length);var s=r-o;if(!(s<2)){var u=0;if(sd&&(f=d),a(t,o,o+f,o+u,e),u=f}h.pushRun(o,u),h.mergeRuns(),s-=u,o+=u}while(0!==s);h.forceMergeRuns()}}var c=32,h=7,d=256;t.exports=u},function(t,e,i){var n=i(35);t.exports=function(){if(0!==n.debugMode)if(1==n.debugMode)for(var t in arguments)throw new Error(arguments[t]);else if(n.debugMode>1)for(var t in arguments)console.log(arguments[t])}},function(t,e,i){function n(t){o.call(this,t)}var o=i(38),a=i(11),r=i(1),s=i(70),l=new s(50);n.prototype={constructor:n,type:"image",brush:function(t,e){var i,n=this.style,o=n.image;if(n.bind(t,this,e),i="string"==typeof o?this._image:o,!i&&o){var a=l.get(o);if(!a)return i=new Image,i.onload=function(){i.onload=null;for(var t=0;t0?-1:i<0?1:e?-1:1}}function n(t,e){return Math.min(e[1],Math.max(e[0],t))}t.exports=function(t,e,o,a,r,s){e[0]=n(e[0],o),e[1]=n(e[1],o),t=t||0;var l=o[1]-o[0];null!=r&&(r=n(r,[0,l])),null!=s&&(s=Math.max(s,null!=r?r:0)),"all"===a&&(r=s=Math.abs(e[1]-e[0]),a=0);var u=i(e,a);e[a]+=t;var c=r||0,h=o.slice();u.sign<0?h[0]+=c:h[1]-=c,e[a]=n(e[a],h);var d=i(e,a);null!=r&&(d.sign!==u.sign||d.spans&&(e[1-a]=e[a]+d.sign*s),e}},function(t,e,i){function n(t,e,i){return t.getCoordSysModel()===e}function o(t){var e,i=t.model,n=i.getFormattedLabels(),o=i.getModel("axisLabel.textStyle"),a=1,r=n.length;r>40&&(a=Math.ceil(r/40));for(var s=0;ss||t<-s}var o=i(19),a=i(6),r=o.identity,s=5e-5,l=function(t){t=t||{},t.position||(this.position=[0,0]),null==t.rotation&&(this.rotation=0),t.scale||(this.scale=[1,1]),this.origin=this.origin||null},u=l.prototype;u.transform=null,u.needLocalTransform=function(){return n(this.rotation)||n(this.position[0])||n(this.position[1])||n(this.scale[0]-1)||n(this.scale[1]-1)},u.updateTransform=function(){var t=this.parent,e=t&&t.transform,i=this.needLocalTransform(),n=this.transform;return i||e?(n=n||o.create(),i?this.getLocalTransform(n):r(n),e&&(i?o.mul(n,t.transform,n):o.copy(n,t.transform)),this.transform=n,this.invTransform=this.invTransform||o.create(),void o.invert(this.invTransform,n)):void(n&&r(n))},u.getLocalTransform=function(t){return l.getLocalTransform(this,t)},u.setTransform=function(t){var e=this.transform,i=t.dpr||1;e?t.setTransform(i*e[0],i*e[1],i*e[2],i*e[3],i*e[4],i*e[5]):t.setTransform(i,0,0,i,0,0)},u.restoreTransform=function(t){var e=t.dpr||1;t.setTransform(e,0,0,e,0,0)};var c=[];u.decomposeTransform=function(){if(this.transform){var t=this.parent,e=this.transform;t&&t.transform&&(o.mul(c,t.invTransform,e),e=c);var i=e[0]*e[0]+e[1]*e[1],a=e[2]*e[2]+e[3]*e[3],r=this.position,s=this.scale;n(i-1)&&(i=Math.sqrt(i)),n(a-1)&&(a=Math.sqrt(a)),e[0]<0&&(i=-i),e[3]<0&&(a=-a),r[0]=e[4],r[1]=e[5],s[0]=i,s[1]=a,this.rotation=Math.atan2(-e[1]/a,e[0]/i)}},u.getGlobalScale=function(){var t=this.transform;if(!t)return[1,1];var e=Math.sqrt(t[0]*t[0]+t[1]*t[1]),i=Math.sqrt(t[2]*t[2]+t[3]*t[3]);return t[0]<0&&(e=-e),t[3]<0&&(i=-i),[e,i]},u.transformCoordToLocal=function(t,e){var i=[t,e],n=this.invTransform;return n&&a.applyTransform(i,i,n),i},u.transformCoordToGlobal=function(t,e){var i=[t,e],n=this.transform;return n&&a.applyTransform(i,i,n),i},l.getLocalTransform=function(t,e){e=e||[],r(e);var i=t.origin,n=t.scale||[1,1],a=t.rotation||0,s=t.position||[0,0];return i&&(e[4]-=i[0],e[5]-=i[1]),o.scale(e,e,n),a&&o.rotate(e,e,a),i&&(e[4]+=i[0],e[5]+=i[1]),e[4]+=s[0],e[5]+=s[1],e},t.exports=l},function(t,e,i){var n=i(96),o=i(1),a=i(13),r=i(12),s=["value","category","time","log"];t.exports=function(t,e,i,l){o.each(s,function(a){e.extend({type:t+"Axis."+a,mergeDefaultAndTheme:function(e,n){var s=this.layoutMode,l=s?r.getLayoutParams(e):{},u=n.getTheme();o.merge(e,u.get(a+"Axis")),o.merge(e,this.getDefaultOption()),e.type=i(t,e),s&&r.mergeLayoutParam(e,l,s)},defaultOption:o.mergeAll([{},n[a+"Axis"],l],!0)})}),a.registerSubTypeDefaulter(t+"Axis",o.curry(i,t))}},function(t,e,i){"use strict";function n(t,e){return e.type||(e.data?"category":"value")}var o=i(13),a=i(1),r=i(59),s=o.extend({type:"cartesian2dAxis",axis:null,init:function(){s.superApply(this,"init",arguments),this.resetRange()},mergeOption:function(){s.superApply(this,"mergeOption",arguments),this.resetRange()},restoreData:function(){s.superApply(this,"restoreData",arguments),this.resetRange()},getCoordSysModel:function(){return this.ecModel.queryComponents({mainType:"grid",index:this.option.gridIndex,id:this.option.gridId})[0]}});a.merge(s.prototype,i(42));var l={offset:0};r("x",s,n,l),r("y",s,n,l),t.exports=s},function(t,e){t.exports=function(t,e){e.eachSeriesByType(t,function(t){var e=t.getData(),i=t.coordinateSystem;if(i){for(var n=[],o=i.dimensions,a=0;at[1]&&(t[0]=t[1])},r.intervalScaleGetTicks=function(t,e,i,n){var o=[];if(!t)return o;var r=1e4;e[0]r)return[];return e[1]>(o.length?o[o.length-1]:i[1])&&o.push(e[1]),o},t.exports=r},function(t,e,i){var n=i(36),o=i(49),a=i(15),r=function(){this.group=new n,this.uid=o.getUID("viewComponent")};r.prototype={constructor:r,init:function(t,e){},render:function(t,e,i,n){},dispose:function(){}};var s=r.prototype;s.updateView=s.updateLayout=s.updateVisual=function(t,e,i,n){},a.enableClassExtend(r),a.enableClassManagement(r,{registerWhenExtend:!0}),t.exports=r},function(t,e,i){"use strict";var n=i(71),o=i(23),a=i(58),r=i(178),s=i(1),l=function(t){a.call(this,t),o.call(this,t),r.call(this,t),this.id=t.id||n()};l.prototype={type:"element",name:"",__zr:null,ignore:!1,clipPath:null,drift:function(t,e){switch(this.draggable){case"horizontal":e=0;break;case"vertical":t=0}var i=this.transform;i||(i=this.transform=[1,0,0,1,0,0]),i[4]+=t,i[5]+=e,this.decomposeTransform(),this.dirty(!1)},beforeUpdate:function(){},afterUpdate:function(){},update:function(){this.updateTransform()},traverse:function(t,e){},attrKV:function(t,e){if("position"===t||"scale"===t||"origin"===t){if(e){var i=this[t];i||(i=this[t]=[]),i[0]=e[0],i[1]=e[1]}}else this[t]=e},hide:function(){this.ignore=!0,this.__zr&&this.__zr.refresh()},show:function(){this.ignore=!1,this.__zr&&this.__zr.refresh()},attr:function(t,e){if("string"==typeof t)this.attrKV(t,e);else if(s.isObject(t))for(var i in t)t.hasOwnProperty(i)&&this.attrKV(i,t[i]);return this.dirty(!1),this},setClipPath:function(t){var e=this.__zr;e&&t.addSelfToZr(e),this.clipPath&&this.clipPath!==t&&this.removeClipPath(),this.clipPath=t,t.__zr=e,t.__clipTarget=this,this.dirty(!1)},removeClipPath:function(){var t=this.clipPath;t&&(t.__zr&&t.removeSelfFromZr(t.__zr),t.__zr=null,t.__clipTarget=null,this.clipPath=null,this.dirty(!1))},addSelfToZr:function(t){this.__zr=t;var e=this.animators;if(e)for(var i=0;i.5?e:t}function s(t,e,i,n,o){var r=t.length;if(1==o)for(var s=0;so;if(a)t.length=o;else for(var r=n;r=0&&!(A[i]<=e);i--);i=Math.min(i,_-2)}else{for(i=H;i<_&&!(A[i]>e);i++);i=Math.min(i-1,_-2)}H=i,F=e;var n=A[i+1]-A[i];if(0!==n)if(R=(e-A[i])/n,y)if(V=C[i],N=C[0===i?i:i-1],B=C[i>_-2?_-1:i+1],G=C[i>_-3?_-1:i+2],S)c(N,V,B,G,R,R*R,R*R*R,d(t,o),T);else{var l;if(M)l=c(N,V,B,G,R,R*R,R*R*R,W,1),l=f(W);else{if(I)return r(V,B,R);l=h(N,V,B,G,R,R*R,R*R*R)}g(t,o,l)}else if(S)s(C[i],C[i+1],R,d(t,o),T);else{var l;if(M)s(C[i],C[i+1],R,W,1),l=f(W);else{if(I)return r(C[i],C[i+1],R);l=a(C[i],C[i+1],R)}g(t,o,l)}},q=new m({target:t._target,life:b,loop:t._loop,delay:t._delay,onframe:Z,ondestroy:i});return e&&"spline"!==e&&(q.easing=e),q}}}var m=i(157),v=i(22),y=i(1),x=y.isArrayLike,_=Array.prototype.slice,b=function(t,e,i,a){this._tracks={},this._target=t,this._loop=e||!1,this._getter=i||n,this._setter=a||o,this._clipCount=0,this._delay=0,this._doneList=[],this._onframeList=[],this._clipList=[]};b.prototype={when:function(t,e){var i=this._tracks;for(var n in e)if(e.hasOwnProperty(n)){if(!i[n]){i[n]=[];var o=this._getter(this._target,n);if(null==o)continue;0!==t&&i[n].push({time:0,value:d(o)})}i[n].push({time:t,value:e[n]})}return this},during:function(t){return this._onframeList.push(t),this},pause:function(){for(var t=0;t=this._maxSize&&r>0){var l=i.head;i.remove(l),delete n[l.key],a=l.value,this._lastRemovedEntry=l}s?s.value=e:s=new o(e),s.key=t,i.insertEntry(s),n[t]=s}return a},r.get=function(t){var e=this._map[t],i=this._list;if(null!=e)return e!==i.tail&&(i.remove(e),i.insertEntry(e)),e.value},r.clear=function(){this._list.clear(),this._map={}},t.exports=a},function(t,e){var i=2311;t.exports=function(){return i++}},function(t,e){var i=function(t,e){this.image=t,this.repeat=e,this.type="pattern"};i.prototype.getCanvasPattern=function(t){return t.createPattern(this.image,this.repeat||"repeat")},t.exports=i},function(t,e){function i(t,e,i){var n=null==e.x?0:e.x,o=null==e.x2?1:e.x2,a=null==e.y?0:e.y,r=null==e.y2?0:e.y2;e.global||(n=n*i.width+i.x,o=o*i.width+i.x,a=a*i.height+i.y,r=r*i.height+i.y);var s=t.createLinearGradient(n,a,o,r);return s}function n(t,e,i){var n=i.width,o=i.height,a=Math.min(n,o),r=null==e.x?.5:e.x,s=null==e.y?.5:e.y,l=null==e.r?.5:e.r;e.global||(r=r*n+i.x,s=s*o+i.y,l*=a);var u=t.createRadialGradient(r,s,0,r,s,l);return u}var o=[["shadowBlur",0],["shadowOffsetX",0],["shadowOffsetY",0],["shadowColor","#000"],["lineCap","butt"],["lineJoin","miter"],["miterLimit",10]],a=function(t){this.extendFrom(t)};a.prototype={constructor:a,fill:"#000000",stroke:null,opacity:1,lineDash:null,lineDashOffset:0,shadowBlur:0,shadowOffsetX:0,shadowOffsetY:0,lineWidth:1,strokeNoScale:!1,text:null,textFill:"#000",textStroke:null,textPosition:"inside",textPositionRect:null,textOffset:null,textBaseline:null,textAlign:null,textVerticalAlign:null,textDistance:5,textShadowBlur:0,textShadowOffsetX:0,textShadowOffsetY:0,textTransform:!1,textRotation:0,blend:null,bind:function(t,e,i){for(var n=this,a=i&&i.style,r=!a,s=0;s0},extendFrom:function(t,e){if(t){var i=this;for(var n in t)!t.hasOwnProperty(n)||!e&&i.hasOwnProperty(n)||(i[n]=t[n])}},set:function(t,e){"string"==typeof t?this[t]=e:this.extendFrom(t,!0)},clone:function(){var t=new this.constructor;return t.extendFrom(this,!0),t},getGradient:function(t,e,o){for(var a="radial"===e.type?n:i,r=a(t,e,o),s=e.colorStops,l=0;l=2){if(r&&"spline"!==r){var s=o(a,r,i,e.smoothConstraint);t.moveTo(a[0][0],a[0][1]);for(var l=a.length,u=0;u<(i?l:l-1);u++){var c=s[2*u],h=s[2*u+1],d=a[(u+1)%l];t.bezierCurveTo(c[0],c[1],h[0],h[1],d[0],d[1])}}else{"spline"===r&&(a=n(a,i)),t.moveTo(a[0][0],a[0][1]);for(var u=1,f=a.length;u=0},a.createNameEach=function(t,e){t=t.slice();var i=o.map(t,n.capitalFirst);e=(e||[]).slice();var a=o.map(e,n.capitalFirst);return function(n,r){o.each(t,function(t,o){for(var s={name:t,capital:i[o]},l=0;l=0}function a(t,n){var a=!1;return e(function(e){o.each(i(t,e)||[],function(t){n.records[e.name][t]&&(a=!0)})}),a}function r(t,n){n.nodes.push(t),e(function(e){o.each(i(t,e)||[],function(t){n.records[e.name][t]=!0})})}return function(i){function o(t){!n(t,s)&&a(t,s)&&(r(t,s),l=!0)}var s={nodes:[],records:{}};if(e(function(t){s.records[t.name]={}}),!i)return s;r(i,s);var l;do l=!1,t(o);while(l);return s}},t.exports=a},function(t,e,i){var n=i(1);t.exports={updateSelectedMap:function(t){this._selectTargetMap=n.reduce(t||[],function(t,e){return t.set(e.name,e),t},n.createHashMap())},select:function(t){var e=this._selectTargetMap,i=e.get(t),n=this.get("selectedMode");"single"===n&&e.each(function(t){t.selected=!1}),i&&(i.selected=!0)},unSelect:function(t){var e=this._selectTargetMap.get(t);e&&(e.selected=!1)},toggleSelected:function(t){var e=this._selectTargetMap.get(t);if(null!=e)return this[e.selected?"unSelect":"select"](t),e.selected},isSelected:function(t){var e=this._selectTargetMap.get(t);return e&&e.selected}}},function(t,e,i){function n(t){o.defaultEmphasis(t.label,o.LABEL_OPTIONS)}var o=i(5),a=i(1),r=i(9),s=i(7),l=s.addCommas,u=s.encodeHTML,c=i(2).extendComponentModel({type:"marker",dependencies:["series","grid","polar","geo"],init:function(t,e,i,n){this.mergeDefaultAndTheme(t,i),this.mergeOption(t,i,n.createdBySelf,!0)},isAnimationEnabled:function(){if(r.node)return!1;var t=this.__hostSeries;return this.getShallow("animation")&&t&&t.isAnimationEnabled()},mergeOption:function(t,e,i,o){var r=this.constructor,s=this.mainType+"Model";i||e.eachSeries(function(t){var i=t.get(this.mainType),l=t[s];return i&&i.data?(l?l.mergeOption(i,e,!0):(o&&n(i),a.each(i.data,function(t){t instanceof Array?(n(t[0]),n(t[1])):n(t)}),l=new r(i,this,e),a.extend(l,{mainType:this.mainType,seriesIndex:t.seriesIndex,name:t.name,createdBySelf:!0}),l.__hostSeries=t),void(t[s]=l)):void(t[s]=null)},this)},formatTooltip:function(t){var e=this.getData(),i=this.getRawValue(t),n=a.isArray(i)?a.map(i,l).join(", "):l(i),o=e.getName(t),r=u(this.name);return(null!=i||o)&&(r+="
                  "),o&&(r+=u(o),null!=i&&(r+=" : ")),null!=i&&(r+=u(n)),r},getData:function(){return this._data},setData:function(t){this._data=t}});a.mixin(c,o.dataFormatMixin),t.exports=c},function(t,e,i){var n=i(1);t.exports=i(2).extendComponentView({type:"marker",init:function(){this.markerGroupMap=n.createHashMap()},render:function(t,e,i){var n=this.markerGroupMap;n.each(function(t){t.__keep=!1});var o=this.type+"Model";e.eachSeries(function(t){var n=t[o];n&&this.renderSeries(t,n,e,i)},this),n.each(function(t){!t.__keep&&this.group.remove(t.group)},this)},renderSeries:function(){}})},function(t,e,i){function n(t){return!(isNaN(parseFloat(t.x))&&isNaN(parseFloat(t.y)))}function o(t){return!isNaN(parseFloat(t.x))&&!isNaN(parseFloat(t.y))}function a(t,e,i){var n=-1;do n=Math.max(l.getPrecision(t.get(e,i)),n),t=t.stackedOn;while(t);return n}function r(t,e,i,n,o,r){var s=[],l=m(e,n,t),u=e.indicesOfNearest(n,l,!0)[0];s[o]=e.get(i,u,!0),s[r]=e.get(n,u,!0);var c=a(e,n,u);return c>=0&&(s[r]=+s[r].toFixed(c)),s}var s=i(1),l=i(4),u=s.indexOf,c=s.curry,h={min:c(r,"min"),max:c(r,"max"),average:c(r,"average")},d=function(t,e){var i=t.getData(),n=t.coordinateSystem;if(e&&!o(e)&&!s.isArray(e.coord)&&n){var a=n.dimensions,r=f(e,i,n,t);if(e=s.clone(e),e.type&&h[e.type]&&r.baseAxis&&r.valueAxis){var l=u(a,r.baseAxis.dim),c=u(a,r.valueAxis.dim);e.coord=h[e.type](i,r.baseDataDim,r.valueDataDim,l,c),e.value=e.coord[c]}else{for(var d=[null!=e.xAxis?e.xAxis:e.radiusAxis,null!=e.yAxis?e.yAxis:e.angleAxis],p=0;p<2;p++)if(h[d[p]]){var g=t.coordDimToDataDim(a[p])[0];d[p]=m(i,g,d[p])}e.coord=d}}return e},f=function(t,e,i,n){var o={};return null!=t.valueIndex||null!=t.valueDim?(o.valueDataDim=null!=t.valueIndex?e.getDimension(t.valueIndex):t.valueDim,o.valueAxis=i.getAxis(n.dataDimToCoordDim(o.valueDataDim)),o.baseAxis=i.getOtherAxis(o.valueAxis),o.baseDataDim=n.coordDimToDataDim(o.baseAxis.dim)[0]):(o.baseAxis=n.getBaseAxis(),o.valueAxis=i.getOtherAxis(o.baseAxis),o.baseDataDim=n.coordDimToDataDim(o.baseAxis.dim)[0],o.valueDataDim=n.coordDimToDataDim(o.valueAxis.dim)[0]),o},p=function(t,e){return!(t&&t.containData&&e.coord&&!n(e))||t.containData(e.coord)},g=function(t,e,i,n){return n<2?t.coord&&t.coord[n]:t.value},m=function(t,e,i){if("average"===i){var n=0,o=0;return t.each(e,function(t,e){isNaN(t)||(n+=t,o++)},!0),n/o}return t.getDataExtent(e,!0)["max"===i?1:0]};t.exports={dataTransform:d,dataFilter:p,dimValueGetter:g,getAxisInfo:f,numCalculate:m}},function(t,e,i){"use strict";function n(t){return t.get("stack")||d+t.seriesIndex}function o(t){return t.dim+t.index}function a(t,e){var i=[],n=t.axis,o="axis0";if("category"===n.type){for(var a=n.getBandWidth(),r=0;r=0?"p":"n",v=m[i],y=s[u][i][c],x=l[u][i][c];f.isHorizontal()?(n=y,o=v[1]+h,a=v[0]-x,r=d,l[u][i][c]+=a,Math.abs(a)=0;a--)null==i[a]&&(delete n[e[a]],e.pop())}function a(t,e){var i=t.visual,n=[];g.isObject(i)?y(i,function(t){n.push(t)}):null!=i&&n.push(i);var o={color:1,symbol:1};e||1!==n.length||o.hasOwnProperty(t.type)||(n[1]=n[0]),f(t,n)}function r(t){return{applyVisual:function(e,i,n){e=this.mapValueToVisual(e),n("color",t(i("color"),e))},_doMap:h([0,1])}}function s(t){var e=this.option.visual;return e[Math.round(v(t,[0,1],[0,e.length-1],!0))]||{}}function l(t){return function(e,i,n){n(t,this.mapValueToVisual(e))}}function u(t){var e=this.option.visual;return e[this.option.loop&&t!==_?t%e.length:t]}function c(){return this.option.visual[0]}function h(t){return{linear:function(e){return v(e,t,this.option.visual,!0)},category:u,piecewise:function(e,i){var n=d.call(this,i);return null==n&&(n=v(e,t,this.option.visual,!0)),n},fixed:c}}function d(t){var e=this.option,i=e.pieceList;if(e.hasSpecialVisual){var n=b.findPieceIndex(t,i),o=i[n];if(o&&o.visual)return o.visual[this.type]}}function f(t,e){return t.visual=e,"color"===t.type&&(t.parsedVisual=g.map(e,function(t){return m.parse(t)})),e}function p(t,e,i){return t?e<=i:e1e-4)return p[0]=t-i,p[1]=e-o,g[0]=t+i,void(g[1]=e+o);if(c[0]=u(a)*i+t,c[1]=l(a)*o+e,h[0]=u(r)*i+t,h[1]=l(r)*o+e,m(p,c,h),v(g,c,h),a%=f,a<0&&(a+=f),r%=f,r<0&&(r+=f),a>r&&!s?r+=f:aa&&(d[0]=u(_)*i+t,d[1]=l(_)*o+e,m(p,d,p),v(g,d,g))},t.exports=a},function(t,e,i){var n=i(38),o=i(1),a=i(16),r=function(t){n.call(this,t)};r.prototype={constructor:r,type:"text",brush:function(t,e){var i=this.style,n=i.x||0,o=i.y||0,r=i.text;if(null!=r&&(r+=""),i.bind(t,this,e),r){this.setTransform(t);var s,l=i.textAlign,u=i.textFont||i.font;if(i.textVerticalAlign){var c=a.getBoundingRect(r,u,i.textAlign,"top");switch(s="middle",i.textVerticalAlign){case"middle":o-=c.height/2-c.lineHeight/2;break;case"bottom":o-=c.height-c.lineHeight/2;break;default:o+=c.lineHeight/2}}else s=i.textBaseline;t.font=u||"12px sans-serif",t.textAlign=l||"left",t.textAlign!==l&&(t.textAlign="left"),t.textBaseline=s||"alphabetic",t.textBaseline!==s&&(t.textBaseline="alphabetic");for(var h=a.measureText("国",t.font).width,d=r.split("\n"),f=0;f=0?parseFloat(t)/100*e:parseFloat(t):t}var o=i(16),a=i(11),r=new a,s=function(){};s.prototype={constructor:s,drawRectText:function(t,e,i){var a=this.style,s=a.text;if(null!=s&&(s+=""),s){t.save();var l,u,c=a.textPosition,h=a.textOffset,d=a.textDistance,f=a.textAlign,p=a.textFont||a.font,g=a.textBaseline,m=a.textVerticalAlign;e=a.textPositionRect||e,i=i||o.getBoundingRect(s,p,f,g);var v=this.transform;if(a.textTransform?this.setTransform(t):v&&(r.copy(e),r.applyTransform(v),e=r),c instanceof Array){if(l=e.x+n(c[0],e.width),u=e.y+n(c[1],e.height),f=f||"left",g=g||"top",m){switch(m){case"middle":u-=i.height/2-i.lineHeight/2;break;case"bottom":u-=i.height-i.lineHeight/2;break;default:u+=i.lineHeight/2}g="middle"}}else{var y=o.adjustTextPositionOnRect(c,e,i,d);l=y.x,u=y.y,f=f||y.textAlign,g=g||y.textBaseline}h&&(l+=h[0],u+=h[1]),t.textAlign=f||"left",t.textBaseline=g||"alphabetic";var x=a.textFill,_=a.textStroke;x&&(t.fillStyle=x),_&&(t.strokeStyle=_),t.font=p||"12px sans-serif",t.shadowBlur=a.textShadowBlur,t.shadowColor=a.textShadowColor||"transparent",t.shadowOffsetX=a.textShadowOffsetX,t.shadowOffsetY=a.textShadowOffsetY;var b=s.split("\n");a.textRotation&&(v&&t.translate(v[4],v[5]),t.rotate(a.textRotation),v&&t.translate(-v[4],-v[5]));for(var w=0;w=a||b<0)break;if(n(S)){if(x){b+=r;continue}break}if(b===i)t[r>0?"moveTo":"lineTo"](S[0],S[1]),h(f,S);else if(v>0){var M=b+r,I=e[M];if(x)for(;I&&n(e[M]);)M+=r,I=e[M];var T=.5,A=e[_],I=e[M];if(!I||n(I))h(p,S);else{n(I)&&!x&&(I=S),s.sub(d,I,A);var C,L;if("x"===y||"y"===y){var D="x"===y?0:1;C=Math.abs(S[D]-A[D]),L=Math.abs(S[D]-I[D])}else C=s.dist(S,A),L=s.dist(S,I);T=L/(L+C),c(p,S,d,-v*(1-T))}l(f,f,m),u(f,f,g),l(p,p,m),u(p,p,g),t.bezierCurveTo(f[0],f[1],p[0],p[1],S[0],S[1]),c(f,S,d,v*T)}else t.lineTo(S[0],S[1]);_=b,b+=r}return w}function a(t,e){var i=[1/0,1/0],n=[-(1/0),-(1/0)];if(e)for(var o=0;on[0]&&(n[0]=a[0]),a[1]>n[1]&&(n[1]=a[1])}return{min:e?i:n,max:e?n:i}}var r=i(8),s=i(6),l=s.min,u=s.max,c=s.scaleAndAdd,h=s.copy,d=[],f=[],p=[];t.exports={Polyline:r.extend({type:"ec-polyline",shape:{points:[],smooth:0,smoothConstraint:!0,smoothMonotone:null,connectNulls:!1},style:{fill:null,stroke:"#000"},buildPath:function(t,e){var i=e.points,r=0,s=i.length,l=a(i,e.smoothConstraint);if(e.connectNulls){for(;s>0&&n(i[s-1]);s--);for(;r0&&n(i[l-1]);l--);for(;s=0},wrapTreePathInfo:function(t,e){for(var i=[];t;){var n=t.dataIndex;i.push({name:t.name,dataIndex:n,value:e.getRawValue(n)}),t=t.parentNode}return i.reverse(),i}};t.exports=o},function(t,e,i){function n(t){this.pointerChecker,this._zr=t,this._opt={};var e=d.bind,i=e(o,this),n=e(a,this),u=e(r,this),c=e(s,this),f=e(l,this);h.call(this),this.setPointerChecker=function(t){this.pointerChecker=t},this.enable=function(e,o){this.disable(),this._opt=d.defaults(d.clone(o)||{},{zoomOnMouseWheel:!0,moveOnMouseMove:!0,preventDefaultMouseMove:!0}),null==e&&(e=!0),e!==!0&&"move"!==e&&"pan"!==e||(t.on("mousedown",i),t.on("mousemove",n),t.on("mouseup",u)),e!==!0&&"scale"!==e&&"zoom"!==e||(t.on("mousewheel",c),t.on("pinch",f))},this.disable=function(){t.off("mousedown",i),t.off("mousemove",n),t.off("mouseup",u),t.off("mousewheel",c),t.off("pinch",f)},this.dispose=this.disable,this.isDragging=function(){return this._dragging},this.isPinching=function(){return this._pinching}}function o(t){if(!t.target||!t.target.draggable){var e=t.offsetX,i=t.offsetY;this.pointerChecker&&this.pointerChecker(t,e,i)&&(this._x=e,this._y=i,this._dragging=!0)}}function a(t){if(c(this,"moveOnMouseMove",t)&&this._dragging&&"pinch"!==t.gestureEvent&&!p.isTaken(this._zr,"globalPan")){var e=t.offsetX,i=t.offsetY,n=this._x,o=this._y,a=e-n,r=i-o;this._x=e,this._y=i,this._opt.preventDefaultMouseMove&&f.stop(t.event),this.trigger("pan",a,r,n,o,e,i)}}function r(t){this._dragging=!1}function s(t){if(c(this,"zoomOnMouseWheel",t)&&0!==t.wheelDelta){var e=t.wheelDelta>0?1.1:1/1.1;u.call(this,t,e,t.offsetX,t.offsetY)}}function l(t){if(!p.isTaken(this._zr,"globalPan")){var e=t.pinchScale>1?1.1:1/1.1;u.call(this,t,e,t.pinchX,t.pinchY)}}function u(t,e,i,n){this.pointerChecker&&this.pointerChecker(t,i,n)&&(f.stop(t.event),this.trigger("zoom",e,i,n))}function c(t,e,i){var n=t._opt[e];return n&&(!d.isString(n)||i.event[n+"Key"])}var h=i(23),d=i(1),f=i(21),p=i(129);d.mixin(n,h),t.exports=n},function(t,e,i){var n=i(1),o={show:!0,zlevel:0,z:0,inverse:!1,name:"",nameLocation:"end",nameRotate:null,nameTruncate:{maxWidth:null,ellipsis:"...",placeholder:"."},nameTextStyle:{},nameGap:15,silent:!1,triggerEvent:!1,tooltip:{show:!1},axisPointer:{},axisLine:{show:!0,onZero:!0,lineStyle:{color:"#333",width:1,type:"solid"}},axisTick:{show:!0,inside:!1,length:5,lineStyle:{width:1}},axisLabel:{show:!0,inside:!1,rotate:0,showMinLabel:null,showMaxLabel:null,margin:8,textStyle:{fontSize:12}},splitLine:{show:!0,lineStyle:{color:["#ccc"],width:1,type:"solid"}},splitArea:{show:!1,areaStyle:{color:["rgba(250,250,250,0.3)","rgba(200,200,200,0.3)"]}}},a=n.merge({boundaryGap:!0,splitLine:{show:!1},axisTick:{alignWithLabel:!1,interval:"auto"},axisLabel:{interval:"auto"}},o),r=n.merge({boundaryGap:[0,0],splitNumber:5},o),s=n.defaults({scale:!0,min:"dataMin",max:"dataMax"},r),l=n.defaults({scale:!0,logBase:10},r);t.exports={categoryAxis:a,valueAxis:r,timeAxis:s,logAxis:l}},function(t,e){t.exports={containStroke:function(t,e,i,n,o,a,r){if(0===o)return!1;var s=o,l=0,u=t;if(r>e+s&&r>n+s||rt+s&&a>i+s||ae+c&&u>o+c&&u>r+c||ut+c&&l>i+c&&l>a+c||le&&a>n||ao?r:0}},function(t,e,i){"use strict";var n=i(1),o=i(39),a=function(t,e,i,n,a,r){this.x=null==t?0:t,this.y=null==e?0:e,this.x2=null==i?1:i,this.y2=null==n?0:n,this.type="linear",this.global=r||!1,o.call(this,a)};a.prototype={constructor:a},n.inherits(a,o),t.exports=a},function(t,e,i){"use strict";function n(t){o.each(a,function(e){this[e]=o.bind(t[e],t)},this)}var o=i(1),a=["getDom","getZr","getWidth","getHeight","getDevicePixelRatio","dispatchAction","isDisposed","on","off","getDataURL","getConnectedDataURL","getModel","getOption","getViewOfComponentModel","getViewOfSeriesModel"];t.exports=n},function(t,e,i){var n=i(1);i(57),i(103),i(104);var o=i(82),a=i(2);a.registerLayout(n.curry(o,"bar")),a.registerVisual(function(t){t.eachSeriesByType("bar",function(t){var e=t.getData();e.setVisual("legendSymbol","roundRect")})}),i(32)},function(t,e,i){t.exports=i(90).extend({type:"series.bar",dependencies:["grid","polar"],brushSelector:"rect"})},function(t,e,i){"use strict";function n(t,e,i){i.style.text="",l.updateProps(i,{shape:{width:0}},e,t,function(){i.parent&&i.parent.remove(i)})}function o(t,e,i){i.style.text="",l.updateProps(i,{shape:{r:i.shape.r0}},e,t,function(){i.parent&&i.parent.remove(i)})}function a(t,e,i,n,o,a,r,c){var h=e.getItemVisual(i,"color"),d=e.getItemVisual(i,"opacity"),f=n.getModel("itemStyle.normal"),p=n.getModel("itemStyle.emphasis").getBarItemStyle();c||t.setShape("r",f.get("barBorderRadius")||0),t.useStyle(s.defaults({fill:h,opacity:d},f.getBarItemStyle()));var g=n.getShallow("cursor");g&&t.attr("cursor",g);var m=r?o.height>0?"bottom":"top":o.width>0?"left":"right";c||u.setLabel(t.style,p,n,h,a,i,m),l.setHoverStyle(t,p)}function r(t,e){var i=t.get(c)||0;return Math.min(i,Math.abs(e.width),Math.abs(e.height))}var s=i(1),l=i(3),u=i(91),c=["itemStyle","normal","barBorderWidth"];s.extend(i(10).prototype,i(105));var h=i(2).extendChartView({type:"bar",render:function(t,e,i){var n=t.get("coordinateSystem");return"cartesian2d"!==n&&"polar"!==n||this._render(t,e,i),this.group},dispose:s.noop,_render:function(t,e,i){var r,s=this.group,u=t.getData(),c=this._data,h=t.coordinateSystem,p=h.getBaseAxis();"cartesian2d"===h.type?r=p.isHorizontal():"polar"===h.type&&(r="angle"===p.dim);var g=t.isAnimationEnabled()?t:null;u.diff(c).add(function(e){if(u.hasValue(e)){var i=u.getItemModel(e),n=f[h.type](u,e,i),o=d[h.type](u,e,i,n,r,g);u.setItemGraphicEl(e,o),s.add(o),a(o,u,e,i,n,t,r,"polar"===h.type)}}).update(function(e,i){var n=c.getItemGraphicEl(i);if(!u.hasValue(e))return void s.remove(n);var o=u.getItemModel(e),p=f[h.type](u,e,o);n?l.updateProps(n,{shape:p},g,e):n=d[h.type](u,e,o,p,r,g,!0),u.setItemGraphicEl(e,n),s.add(n),a(n,u,e,o,p,t,r,"polar"===h.type)}).remove(function(t){var e=c.getItemGraphicEl(t);"cartesian2d"===h.type?e&&n(t,g,e):e&&o(t,g,e)}).execute(),this._data=u},remove:function(t,e){var i=this.group,a=this._data;t.get("animation")?a&&a.eachItemGraphicEl(function(e){"sector"===e.type?o(e.dataIndex,t,e):n(e.dataIndex,t,e)}):i.removeAll()}}),d={cartesian2d:function(t,e,i,n,o,a,r){var u=new l.Rect({shape:s.extend({},n)});if(a){var c=u.shape,h=o?"height":"width",d={};c[h]=0,d[h]=n[h],l[r?"updateProps":"initProps"](u,{shape:d},a,e)}return u},polar:function(t,e,i,n,o,a,r){var u=new l.Sector({shape:s.extend({},n)});if(a){var c=u.shape,h=o?"r":"endAngle",d={};c[h]=o?0:n.startAngle,d[h]=n[h],l[r?"updateProps":"initProps"](u,{shape:d},a,e)}return u}},f={cartesian2d:function(t,e,i){var n=t.getItemLayout(e),o=r(i,n),a=n.width>0?1:-1,s=n.height>0?1:-1;return{x:n.x+a*o/2,y:n.y+s*o/2,width:n.width-a*o,height:n.height-s*o}},polar:function(t,e,i){var n=t.getItemLayout(e);return{cx:n.cx,cy:n.cy,r0:n.r0,r:n.r,startAngle:n.startAngle,endAngle:n.endAngle}}};t.exports=h},function(t,e,i){var n=i(31)([["fill","color"],["stroke","borderColor"],["lineWidth","borderWidth"],["stroke","barBorderColor"],["lineWidth","barBorderWidth"],["opacity"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["shadowColor"]]);t.exports={getBarItemStyle:function(t){var e=n.call(this,t);if(this.getBorderLineDash){var i=this.getBorderLineDash();i&&(e.lineDash=i)}return e}}},function(t,e,i){function n(t){return"_"+t+"Type"}function o(t,e,i){var n=e.getItemVisual(i,"color"),o=e.getItemVisual(i,t),a=e.getItemVisual(i,t+"Size");if(o&&"none"!==o){f.isArray(a)||(a=[a,a]);var r=u.createSymbol(o,-a[0]/2,-a[1]/2,a[0],a[1],n);return r.name=t,r}}function a(t){var e=new h({name:"line"});return r(e.shape,t),e}function r(t,e){var i=e[0],n=e[1],o=e[2];t.x1=i[0],t.y1=i[1],t.x2=n[0],t.y2=n[1],t.percent=1,o?(t.cpx1=o[0],t.cpy1=o[1]):(t.cpx1=NaN,t.cpy1=NaN)}function s(){var t=this,e=t.childOfName("fromSymbol"),i=t.childOfName("toSymbol"),n=t.childOfName("label");if(e||i||!n.ignore){for(var o=1,a=this.parent;a;)a.scale&&(o/=a.scale[0]),a=a.parent;var r=t.childOfName("line");if(this.__dirty||r.__dirty){var s=r.shape.percent,l=r.pointAt(0),u=r.pointAt(s),h=c.sub([],u,l);if(c.normalize(h,h),e){e.attr("position",l);var d=r.tangentAt(0);e.attr("rotation",Math.PI/2-Math.atan2(d[1],d[0])),e.attr("scale",[o*s,o*s])}if(i){i.attr("position",u);var d=r.tangentAt(1);i.attr("rotation",-Math.PI/2-Math.atan2(d[1],d[0])),i.attr("scale",[o*s,o*s])}if(!n.ignore){n.attr("position",u);var f,p,g,m=5*o;if("end"===n.__position)f=[h[0]*m+u[0],h[1]*m+u[1]],p=h[0]>.8?"left":h[0]<-.8?"right":"center",g=h[1]>.8?"top":h[1]<-.8?"bottom":"middle";else if("middle"===n.__position){var v=s/2,d=r.tangentAt(v),y=[d[1],-d[0]],x=r.pointAt(v);y[1]>0&&(y[0]=-y[0],y[1]=-y[1]),f=[x[0]+y[0]*m,x[1]+y[1]*m],p="center",g="bottom";var _=-Math.atan2(d[1],d[0]);u[0].8?"right":h[0]<-.8?"left":"center",g=h[1]>.8?"bottom":h[1]<-.8?"top":"middle";n.attr({style:{textVerticalAlign:n.__verticalAlign||g,textAlign:n.__textAlign||p},position:f,scale:[o,o]})}}}}function l(t,e,i){d.Group.call(this),this._createLine(t,e,i)}var u=i(24),c=i(6),h=i(190),d=i(3),f=i(1),p=i(4),g=["fromSymbol","toSymbol"],m=l.prototype;m.beforeUpdate=s,m._createLine=function(t,e,i){var r=t.hostModel,s=t.getItemLayout(e),l=a(s);l.shape.percent=0,d.initProps(l,{shape:{percent:1}},r,e),this.add(l);var u=new d.Text({name:"label"});this.add(u),f.each(g,function(i){var a=o(i,t,e);this.add(a),this[n(i)]=t.getItemVisual(e,i)},this),this._updateCommonStl(t,e,i)},m.updateData=function(t,e,i){var a=t.hostModel,s=this.childOfName("line"),l=t.getItemLayout(e),u={shape:{}};r(u.shape,l),d.updateProps(s,u,a,e),f.each(g,function(i){var a=t.getItemVisual(e,i),r=n(i);if(this[r]!==a){this.remove(this.childOfName(i));var s=o(i,t,e);this.add(s)}this[r]=a},this),this._updateCommonStl(t,e,i)},m._updateCommonStl=function(t,e,i){var n=t.hostModel,o=this.childOfName("line"),a=i&&i.lineStyle,r=i&&i.hoverLineStyle,s=i&&i.labelModel,l=i&&i.hoverLabelModel;if(!i||t.hasItemOption){var u=t.getItemModel(e);a=u.getModel("lineStyle.normal").getLineStyle(),r=u.getModel("lineStyle.emphasis").getLineStyle(),s=u.getModel("label.normal"),l=u.getModel("label.emphasis")}var c=t.getItemVisual(e,"color"),h=f.retrieve(t.getItemVisual(e,"opacity"),a.opacity,1);o.useStyle(f.defaults({strokeNoScale:!0,fill:"none",stroke:c,opacity:h},a)),o.hoverStyle=r,f.each(g,function(t){var e=this.childOfName(t);e&&(e.setColor(c),e.setStyle({opacity:h}))},this);var m,v,y=s.getShallow("show"),x=l.getShallow("show"),_=this.childOfName("label");if(y||x){var b=n.getRawValue(e);v=null==b?v=t.getName(e):isFinite(b)?p.round(b):b,m=c||"#000"}if(y){var w=s.getModel("textStyle");_.setStyle({text:f.retrieve(n.getFormattedLabel(e,"normal",t.dataType),v),textFont:w.getFont(),fill:w.getTextColor()||m}),_.__textAlign=w.get("align"),_.__verticalAlign=w.get("baseline"),_.__position=s.get("position")}else _.setStyle("text","");if(x){var S=l.getModel("textStyle");_.hoverStyle={text:f.retrieve(n.getFormattedLabel(e,"emphasis",t.dataType),v),textFont:S.getFont(),fill:S.getTextColor()||m}}else _.hoverStyle={text:""};_.ignore=!y&&!x,d.setHoverStyle(this)},m.updateLayout=function(t,e){this.setLinePoints(t.getItemLayout(e))},m.setLinePoints=function(t){var e=this.childOfName("line");r(e.shape,t),e.dirty()},f.inherits(l,d.Group),t.exports=l},function(t,e,i){function n(t){return isNaN(t[0])||isNaN(t[1])}function o(t){return!n(t[0])&&!n(t[1])}function a(t){this._ctor=t||s,this.group=new r.Group}var r=i(3),s=i(106),l=a.prototype;l.updateData=function(t){var e=this._lineData,i=this.group,n=this._ctor,a=t.hostModel,r={lineStyle:a.getModel("lineStyle.normal").getLineStyle(),hoverLineStyle:a.getModel("lineStyle.emphasis").getLineStyle(),labelModel:a.getModel("label.normal"),hoverLabelModel:a.getModel("label.emphasis")};t.diff(e).add(function(e){if(o(t.getItemLayout(e))){var a=new n(t,e,r);t.setItemGraphicEl(e,a),i.add(a)}}).update(function(a,s){var l=e.getItemGraphicEl(s);return o(t.getItemLayout(a))?(l?l.updateData(t,a,r):l=new n(t,a,r),t.setItemGraphicEl(a,l),void i.add(l)):void i.remove(l)}).remove(function(t){i.remove(e.getItemGraphicEl(t))}).execute(),this._lineData=t},l.updateLayout=function(){var t=this._lineData;t.eachItemGraphicEl(function(e,i){e.updateLayout(t,i)},this)},l.remove=function(){this.group.removeAll()},t.exports=a},function(t,e,i){var n=i(1),o=i(2),a=o.PRIORITY;i(109),i(110),o.registerVisual(n.curry(i(50),"line","circle","line")),o.registerLayout(n.curry(i(61),"line")),o.registerProcessor(a.PROCESSOR.STATISTIC,n.curry(i(147),"line")),i(32)},function(t,e,i){"use strict";var n=i(28),o=i(17);t.exports=o.extend({type:"series.line",dependencies:["grid","polar"],getInitialData:function(t,e){return n(t.data,this,e)},defaultOption:{zlevel:0,z:2,coordinateSystem:"cartesian2d",legendHoverLink:!0,hoverAnimation:!0,clipOverflow:!0,label:{normal:{position:"top"}},lineStyle:{normal:{width:2,type:"solid"}},step:!1,smooth:!1,smoothMonotone:null,symbol:"emptyCircle",symbolSize:4,symbolRotate:null,showSymbol:!0,showAllSymbol:!1,connectNulls:!1,sampling:"none",animationEasing:"linear",progressive:0,hoverLayerThreshold:1/0}})},function(t,e,i){"use strict";function n(t,e){if(t.length===e.length){for(var i=0;ie[0]?1:-1;e[0]+=n*i,e[1]-=n*i}return e}function r(t){return t>=0?1:-1}function s(t,e){var i=t.getBaseAxis(),n=t.getOtherAxis(i),o=i.onZero?0:n.scale.getExtent()[0],a=n.dim,s="x"===a||"radius"===a?1:0;return e.mapArray([a],function(n,l){for(var u,c=e.stackedOn;c&&r(c.get(a,l))===r(n);){u=c;break}var h=[];return h[s]=e.get(i.dim,l),h[1-s]=u?u.get(a,l,!0):o,t.dataToPoint(h)},!0)}function l(t,e,i){var n=a(t.getAxis("x")),o=a(t.getAxis("y")),r=t.getBaseAxis().isHorizontal(),s=Math.min(n[0],n[1]),l=Math.min(o[0],o[1]),u=Math.max(n[0],n[1])-s,c=Math.max(o[0],o[1])-l,h=i.get("lineStyle.normal.width")||2,d=i.get("clipOverflow")?h/2:Math.max(u,c);r?(l-=d,c+=2*d):(s-=d,u+=2*d);var f=new v.Rect({shape:{x:s,y:l,width:u,height:c}});return e&&(f.shape[r?"width":"height"]=0,v.initProps(f,{shape:{width:u,height:c}},i)),f}function u(t,e,i){var n=t.getAngleAxis(),o=t.getRadiusAxis(),a=o.getExtent(),r=n.getExtent(),s=Math.PI/180,l=new v.Sector({shape:{cx:t.cx,cy:t.cy,r0:a[0],r:a[1],startAngle:-r[0]*s,endAngle:-r[1]*s,clockwise:n.inverse}});return e&&(l.shape.endAngle=-r[0]*s,v.initProps(l,{shape:{endAngle:-r[1]*s}},i)),l}function c(t,e,i){return"polar"===t.type?u(t,e,i):l(t,e,i)}function h(t,e,i){for(var n=e.getBaseAxis(),o="x"===n.dim||"radius"===n.dim?0:1,a=[],r=0;r=0;o--)if(i[o].dimension<2){n=i[o];break}if(n&&"cartesian2d"===e.type){var a=n.dimension,r=t.dimensions[a],s=e.getAxis(r),l=f.map(n.stops,function(t){return{coord:s.toGlobalCoord(s.dataToCoord(t.value)),color:t.color}}),u=l.length,c=n.outerColors.slice();u&&l[0].coord>l[u-1].coord&&(l.reverse(),c.reverse());var h=10,d=l[0].coord-h,p=l[u-1].coord+h,g=p-d;if(g<.001)return"transparent";f.each(l,function(t){t.offset=(t.coord-d)/g}),l.push({offset:u?l[u-1].offset:.5,color:c[1]||"transparent"}),l.unshift({offset:u?l[0].offset:.5,color:c[0]||"transparent"});var m=new v.LinearGradient(0,0,0,0,l,(!0));return m[r]=d,m[r+"2"]=p,m}}}var f=i(1),p=i(44),g=i(54),m=i(111),v=i(3),y=i(5),x=i(93),_=i(30);t.exports=_.extend({type:"line",init:function(){var t=new v.Group,e=new p;this.group.add(e.group),this._symbolDraw=e,this._lineGroup=t},render:function(t,e,i){var a=t.coordinateSystem,r=this.group,l=t.getData(),u=t.getModel("lineStyle.normal"),p=t.getModel("areaStyle.normal"),g=l.mapArray(l.getItemLayout,!0),m="polar"===a.type,v=this._coordSys,y=this._symbolDraw,x=this._polyline,_=this._polygon,b=this._lineGroup,w=t.get("animation"),S=!p.isEmpty(),M=s(a,l),I=t.get("showSymbol"),T=I&&!m&&!t.get("showAllSymbol")&&this._getSymbolIgnoreFunc(l,a),A=this._data;A&&A.eachItemGraphicEl(function(t,e){t.__temp&&(r.remove(t),A.setItemGraphicEl(e,null))}),I||y.remove(),r.add(b);var C=!m&&t.get("step");x&&v.type===a.type&&C===this._step?(S&&!_?_=this._newPolygon(g,M,a,w):_&&!S&&(b.remove(_),_=this._polygon=null),b.setClipPath(c(a,!1,t)),I&&y.updateData(l,T),l.eachItemGraphicEl(function(t){t.stopAnimation(!0)}),n(this._stackedOnPoints,M)&&n(this._points,g)||(w?this._updateAnimation(l,M,a,i,C):(C&&(g=h(g,a,C),M=h(M,a,C)),x.setShape({points:g}),_&&_.setShape({points:g,stackedOnPoints:M})))):(I&&y.updateData(l,T),C&&(g=h(g,a,C),M=h(M,a,C)),x=this._newPolyline(g,a,w),S&&(_=this._newPolygon(g,M,a,w)),b.setClipPath(c(a,!0,t)));var L=d(l,a)||l.getVisual("color");x.useStyle(f.defaults(u.getLineStyle(),{fill:"none",stroke:L,lineJoin:"bevel"}));var D=t.get("smooth");if(D=o(t.get("smooth")),x.setShape({smooth:D,smoothMonotone:t.get("smoothMonotone"),connectNulls:t.get("connectNulls")}),_){var P=l.stackedOn,k=0;if(_.useStyle(f.defaults(p.getAreaStyle(),{fill:L,opacity:.7,lineJoin:"bevel"})),P){var O=P.hostModel;k=o(O.get("smooth"))}_.setShape({smooth:D,stackedOnSmooth:k,smoothMonotone:t.get("smoothMonotone"),connectNulls:t.get("connectNulls")})}this._data=l,this._coordSys=a,this._stackedOnPoints=M,this._points=g,this._step=C},dispose:function(){},highlight:function(t,e,i,n){var o=t.getData(),a=y.queryDataIndex(o,n);if(!(a instanceof Array)&&null!=a&&a>=0){var r=o.getItemGraphicEl(a);if(!r){var s=o.getItemLayout(a);if(!s)return;r=new g(o,a),r.position=s,r.setZ(t.get("zlevel"),t.get("z")),r.ignore=isNaN(s[0])||isNaN(s[1]),r.__temp=!0,o.setItemGraphicEl(a,r),r.stopSymbolAnimation(!0),this.group.add(r)}r.highlight()}else _.prototype.highlight.call(this,t,e,i,n)},downplay:function(t,e,i,n){var o=t.getData(),a=y.queryDataIndex(o,n);if(null!=a&&a>=0){var r=o.getItemGraphicEl(a);r&&(r.__temp?(o.setItemGraphicEl(a,null),this.group.remove(r)):r.downplay())}else _.prototype.downplay.call(this,t,e,i,n)},_newPolyline:function(t){var e=this._polyline;return e&&this._lineGroup.remove(e),e=new x.Polyline({shape:{points:t},silent:!0,z2:10}),this._lineGroup.add(e),this._polyline=e,e},_newPolygon:function(t,e){var i=this._polygon;return i&&this._lineGroup.remove(i),i=new x.Polygon({shape:{points:t,stackedOnPoints:e},silent:!0}),this._lineGroup.add(i),this._polygon=i,i},_getSymbolIgnoreFunc:function(t,e){var i=e.getAxesByScale("ordinal")[0];if(i&&i.isLabelIgnored)return f.bind(i.isLabelIgnored,i)},_updateAnimation:function(t,e,i,n,o){var a=this._polyline,r=this._polygon,s=t.hostModel,l=m(this._data,t,this._stackedOnPoints,e,this._coordSys,i),u=l.current,c=l.stackedOnCurrent,d=l.next,f=l.stackedOnNext;o&&(u=h(l.current,i,o),c=h(l.stackedOnCurrent,i,o),d=h(l.next,i,o),f=h(l.stackedOnNext,i,o)),a.shape.__points=l.current,a.shape.points=u,v.updateProps(a,{shape:{points:d}},s),r&&(r.setShape({points:u,stackedOnPoints:c}),v.updateProps(r,{shape:{points:d,stackedOnPoints:f}},s));for(var p=[],g=l.status,y=0;y=0?1:-1}function n(t,e,n){for(var o,a=t.getBaseAxis(),r=t.getOtherAxis(a),s=a.onZero?0:r.scale.getExtent()[0],l=r.dim,u="x"===l||"radius"===l?1:0,c=e.stackedOn,h=e.get(l,n);c&&i(c.get(l,n))===i(h);){o=c;break}var d=[];return d[u]=e.get(a.dim,n),d[1-u]=o?o.get(l,n,!0):s,t.dataToPoint(d)}function o(t,e){var i=[];return e.diff(t).add(function(t){i.push({cmd:"+",idx:t})}).update(function(t,e){i.push({cmd:"=",idx:e,idx1:t})}).remove(function(t){i.push({cmd:"-",idx:t})}).execute(),i}t.exports=function(t,e,i,a,r,s){for(var l=o(t,e),u=[],c=[],h=[],d=[],f=[],p=[],g=[],m=s.dimensions,v=0;v0&&"scale"!==d){var g=r.getItemLayout(0),m=Math.max(i.getWidth(),i.getHeight())/2,v=l.bind(u.removeClipPath,u);u.setClipPath(this._createClipPath(g.cx,g.cy,m,g.startAngle,g.clockwise,v,t))}this._data=r}},dispose:function(){},_createClipPath:function(t,e,i,n,o,a,r){var l=new s.Sector({shape:{cx:t,cy:e,r0:0,r:i,startAngle:n,endAngle:n,clockwise:o}});return s.initProps(l,{shape:{endAngle:n+(o?1:-1)*Math.PI*2}},r,a),l},containPoint:function(t,e){var i=e.getData(),n=i.getItemLayout(0);if(n){var o=t[0]-n.cx,a=t[1]-n.cy,r=Math.sqrt(o*o+a*a);return r<=n.r&&r>=n.r0}}});t.exports=c},function(t,e,i){"use strict";function n(t,e,i,n,o,a,r){function s(e,i,n,o){for(var a=e;ae&&a+1t[a].y+t[a].height)return void l(a,n/2);l(i-1,n/2)}function l(e,i){for(var n=e;n>=0&&(t[n].y-=i,!(n>0&&t[n].y>t[n-1].y+t[n-1].height));n--);}function u(t,e,i,n,o,a){for(var r=a>0?e?Number.MAX_VALUE:0:e?Number.MAX_VALUE:0,s=0,l=t.length;s=r&&(d=r-10),!e&&d<=r&&(d=r+10),t[s].x=i+d*a,r=d}}t.sort(function(t,e){return t.y-e.y});for(var c,h=0,d=t.length,f=[],p=[],g=0;g=i?p.push(t[g]):f.push(t[g]);u(f,!1,e,i,n,o),u(p,!0,e,i,n,o)}function o(t,e,i,o,a,r){for(var s=[],l=[],u=0;u0?"left":"right"}var D=g.getModel("textStyle").getFont(),P=g.get("rotate")?b<0?-_+Math.PI:-_:0,k=t.getFormattedLabel(i,"normal")||l.getName(i),O=a.getBoundingRect(k,D,d,"top");c=!!P,f.label={x:n,y:o,position:m,height:O.height,len:y,len2:x,linePoints:h,textAlign:d,verticalAlign:"middle",font:D,rotation:P},S||u.push(f.label)}),!c&&t.get("avoidLabelOverlap")&&o(u,r,s,e,i,n)}},function(t,e,i){var n=i(4),o=n.parsePercent,a=i(115),r=i(1),s=2*Math.PI,l=Math.PI/180;t.exports=function(t,e,i,u){e.eachSeriesByType(t,function(t){var e=t.get("center"),u=t.get("radius");r.isArray(u)||(u=[0,u]),r.isArray(e)||(e=[e,e]);var c=i.getWidth(),h=i.getHeight(),d=Math.min(c,h),f=o(e[0],c),p=o(e[1],h),g=o(u[0],d/2),m=o(u[1],d/2),v=t.getData(),y=-t.get("startAngle")*l,x=t.get("minAngle")*l,_=0;v.each("value",function(t){!isNaN(t)&&_++});var b=v.getSum("value"),w=Math.PI/(b||_)*2,S=t.get("clockwise"),M=t.get("roseType"),I=t.get("stillShowZeroSum"),T=v.getDataExtent("value");T[0]=0;var A=s,C=0,L=y,D=S?1:-1;if(v.each("value",function(t,e){var i;if(isNaN(t))return void v.setItemLayout(e,{angle:NaN,startAngle:NaN,endAngle:NaN,clockwise:S,cx:f,cy:p,r0:g,r:M?NaN:m});i="area"!==M?0===b&&I?w:t*w:s/_,ir)return!0;if(a){var s=p.getAxisInfo(t).seriesDataCount,l=n.getExtent();return Math.abs(l[0]-l[1])/s>r}return!1}return i===!0},makeElOption:function(t,e,i,n,o){},createPointerEl:function(t,e,i,n){var o=e.pointer;if(o){var a=f(t).pointerEl=new d[o.type](v(e.pointer));t.add(a)}},createLabelEl:function(t,e,i,n){if(e.label){var o=f(t).labelEl=new d.Rect(v(e.label));t.add(o),r(o,n)}},updatePointerEl:function(t,e,i){var n=f(t).pointerEl;n&&(n.setStyle(e.pointer.style),i(n,{shape:e.pointer.shape}))},updateLabelEl:function(t,e,i,n){var o=f(t).labelEl;o&&(o.setStyle(e.label.style),i(o,{shape:e.label.shape,position:e.label.position}),r(o,n))},_renderHandle:function(t){if(!this._dragging&&this.updateHandleTransform){var e=this._axisPointerModel,i=this._api.getZr(),n=this._handle,o=e.getModel("handle"),a=e.get("status");if(!o.get("show")||!a||"hide"===a)return n&&i.remove(n),void(this._handle=null);var r;this._handle||(r=!0,n=this._handle=l(o,{onmousemove:function(t){g.stop(t.event)},onmousedown:y(this._onHandleDragMove,this,0,0),drift:y(this._onHandleDragMove,this),ondragend:y(this._onHandleDragEnd,this)}),i.add(n)),u(n,e,!1);var s=["color","borderColor","borderWidth","opacity","shadowColor","shadowBlur","shadowOffsetX","shadowOffsetY"];n.setStyle(o.getItemStyle(null,s));var h=o.get("size");c.isArray(h)||(h=[h,h]),n.attr("scale",[h[0]/2,h[1]/2]),m.createOrUpdate(this,"_doDispatchAxisPointer",o.get("throttle")||0,"fixRate"),this._moveHandleToValue(t,r)}},_moveHandleToValue:function(t,e){o(this._axisPointerModel,!e&&this._moveAnimation,this._handle,s(this.getHandleTransform(t,this._axisModel,this._axisPointerModel)))},_onHandleDragMove:function(t,e){var i=this._handle;if(i){this._dragging=!0;var n=this.updateHandleTransform(s(i),[t,e],this._axisModel,this._axisPointerModel);this._payloadInfo=n,i.stopAnimation(),i.attr(s(n)),f(i).lastProp=null,this._doDispatchAxisPointer()}},_doDispatchAxisPointer:function(){var t=this._handle;if(t){var e=this._payloadInfo,i=this._axisModel;this._api.dispatchAction({type:"updateAxisPointer",x:e.cursorPoint[0],y:e.cursorPoint[1],tooltipOption:e.tooltipOption,axesInfo:[{axisDim:i.axis.dim,axisIndex:i.componentIndex}]})}},_onHandleDragEnd:function(t){this._dragging=!1;var e=this._handle;if(e){var i=this._axisPointerModel.get("value");this._moveHandleToValue(i),this._api.dispatchAction({type:"hideTip"})}},getHandleTransform:null,updateHandleTransform:null,clear:function(t){this._lastValue=null,this._lastStatus=null;var e=t.getZr(),i=this._group,n=this._handle;e&&i&&(this._lastGraphicKey=null,i&&e.remove(i),n&&e.remove(n),this._group=null,this._handle=null,this._payloadInfo=null)},doClear:function(){},buildLabel:function(t,e,i){return i=i||0,{x:t[i],y:t[1-i],width:e[i],height:e[1-i]}}},n.prototype.constructor=n,h.enableClassExtend(n),t.exports=n},function(t,e,i){"use strict";function n(t,e){var i={};return i[e.dim+"AxisIndex"]=e.index,t.getCartesian(i)}function o(t){return"x"===t.dim?0:1}var a=i(3),r=i(119),s=i(76),l=i(75),u=i(41),c=r.extend({makeElOption:function(t,e,i,o,a){var r=i.axis,u=r.grid,c=o.get("type"),d=n(u,r).getOtherAxis(r).getGlobalExtent(),f=r.toGlobalCoord(r.dataToCoord(e,!0));if(c&&"none"!==c){var p=s.buildElStyle(o),g=h[c](r,f,d,p);g.style=p,t.graphicKey=g.type,t.pointer=g}var m=l.layout(u.model,i);s.buildCartesianSingleLabelElOption(e,t,m,i,o,a)},getHandleTransform:function(t,e,i){var n=l.layout(e.axis.grid.model,e,{labelInside:!1});return n.labelMargin=i.get("handle.margin"),{position:s.getTransformedPosition(e.axis,t,n),rotation:n.rotation+(n.labelDirection<0?Math.PI:0)}},updateHandleTransform:function(t,e,i,o){var a=i.axis,r=a.grid,s=a.getGlobalExtent(!0),l=n(r,a).getOtherAxis(a).getGlobalExtent(),u="x"===a.dim?0:1,c=t.position;c[u]+=e[u],c[u]=Math.min(s[1],c[u]),c[u]=Math.max(s[0],c[u]);var h=(l[1]+l[0])/2,d=[h,h];d[u]=c[u];var f=[{verticalAlign:"middle"},{align:"center"}];return{position:c,rotation:t.rotation,cursorPoint:d,tooltipOption:f[u]}}}),h={line:function(t,e,i,n){var r=s.makeLineShape([e,i[0]],[e,i[1]],o(t));return a.subPixelOptimizeLine({shape:r,style:n}),{type:"Line",shape:r}},shadow:function(t,e,i,n){var a=t.getBandWidth(),r=i[1]-i[0];return{type:"Rect",shape:s.makeRectShape([e-a/2,i[0]],[a,r],o(t))}}};u.registerAxisPointerClass("CartesianAxisPointer",c),t.exports=c},function(t,e,i){var n=i(1),o=i(5);t.exports=function(t,e){var i,a=[],r=t.seriesIndex;if(null==r||!(i=e.getSeriesByIndex(r)))return{point:[]};var s=i.getData(),l=o.queryDataIndex(s,t);if(null==l||n.isArray(l))return{point:[]};var u=s.getItemGraphicEl(l),c=i.coordinateSystem;if(i.getTooltipPosition)a=i.getTooltipPosition(l)||[];else if(c&&c.dataToPoint)a=c.dataToPoint(s.getValues(n.map(c.dimensions,function(t){return i.coordDimToDataDim(t)[0]}),l,!0))||[];else if(u){var h=u.getBoundingRect().clone();h.applyTransform(u.transform),a=[h.x+h.width/2,h.y+h.height/2]}return{point:a,el:u}}},function(t,e,i){function n(t,e){function i(i,n){t.on(i,function(i){var a=s(e);h(c(t).records,function(t){t&&n(t,i,a.dispatchAction)}),o(a.pendings,e)})}c(t).initialized||(c(t).initialized=!0,i("click",u.curry(r,"click")),i("mousemove",u.curry(r,"mousemove")),i("globalout",a))}function o(t,e){var i,n=t.showTip.length,o=t.hideTip.length;n?i=t.showTip[n-1]:o&&(i=t.hideTip[o-1]),i&&(i.dispatchAction=null,e.dispatchAction(i))}function a(t,e,i){t.handler("leave",null,i)}function r(t,e,i,n){e.handler(t,i,n)}function s(t){var e={showTip:[],hideTip:[]},i=function(n){var o=e[n.type];o?o.push(n):(n.dispatchAction=i,t.dispatchAction(n))};return{dispatchAction:i,pendings:e}}var l=i(9),u=i(1),c=i(5).makeGetter(),h=u.each,d={};d.register=function(t,e,i){if(!l.node){var o=e.getZr();c(o).records||(c(o).records={}),n(o,e);var a=c(o).records[t]||(c(o).records[t]={});a.handler=i}},d.unregister=function(t,e){if(!l.node){var i=e.getZr(),n=(c(i).records||{})[t];n&&(c(i).records[t]=null)}},t.exports=d},function(t,e,i){var n=i(1),o=i(77),a=i(2);a.registerAction("dataZoom",function(t,e){var i=o.createLinkedNodesFinder(n.bind(e.eachComponent,e,"dataZoom"),o.eachAxisDim,function(t,e){return t.get(e.axisIndex)}),a=[];e.eachComponent({mainType:"dataZoom",query:t},function(t,e){a.push.apply(a,i(t).nodes)}),n.each(a,function(e,i){e.setRawRange({start:t.start,end:t.end,startValue:t.startValue,endValue:t.endValue})})})},function(t,e,i){function n(t,e,i){i.getAxisProxy(t.name,e).reset(i)}function o(t,e,i){i.getAxisProxy(t.name,e).filterData(i)}var a=i(2);a.registerProcessor(function(t,e){t.eachComponent("dataZoom",function(t){t.eachTargetAxis(n),t.eachTargetAxis(o)}),t.eachComponent("dataZoom",function(t){var e=t.findRepresentativeAxisProxy(),i=e.getDataPercentWindow(),n=e.getDataValueWindow();t.setRawRange({start:i[0],end:i[1],startValue:n[0],endValue:n[1]},!0)})})},function(t,e,i){function n(t){var e=t[r];return e||(e=t[r]=[{}]),e}var o=i(1),a=o.each,r="\0_ec_hist_store",s={push:function(t,e){var i=n(t);a(e,function(e,n){for(var o=i.length-1;o>=0;o--){var a=i[o];if(a[n])break}if(o<0){var r=t.queryComponents({mainType:"dataZoom",subType:"select",id:n})[0];if(r){var s=r.getPercentRange();i[0][n]={dataZoomId:n,start:s[0],end:s[1]}}}}),i.push(e)},pop:function(t){var e=n(t),i=e[e.length-1];e.length>1&&e.pop();var o={};return a(i,function(t,i){for(var n=e.length-1;n>=0;n--){var t=e[n][i];if(t){o[i]=t;break}}}),o},clear:function(t){t[r]=null},count:function(t){return n(t).length}};t.exports=s},function(t,e,i){i(13).registerSubTypeDefaulter("dataZoom",function(t){return"slider"})},function(t,e,i){function n(t){V.call(this),this._zr=t,this.group=new G.Group,this._brushType,this._brushOption,this._panels,this._track=[],this._dragging,this._covers=[],this._creatingCover,this._creatingPanel,this._enableGlobalPan,this._uid="brushController_"+it++,this._handlers={},Z(nt,function(t,e){this._handlers[e]=B.bind(t,this)},this)}function o(t,e){var i=t._zr;t._enableGlobalPan||H.take(i,J,t._uid),Z(t._handlers,function(t,e){i.on(e,t)}),t._brushType=e.brushType,t._brushOption=B.merge(B.clone(et),e,!0)}function a(t){var e=t._zr;H.release(e,J,t._uid),Z(t._handlers,function(t,i){e.off(i,t)}),t._brushType=t._brushOption=null}function r(t,e){var i=ot[e.brushType].createCover(t,e);return i.__brushOption=e,u(i,e),t.group.add(i),i}function s(t,e){var i=h(e);return i.endCreating&&(i.endCreating(t,e),u(e,e.__brushOption)),e}function l(t,e){var i=e.__brushOption;h(e).updateCoverShape(t,e,i.range,i)}function u(t,e){var i=e.z;null==i&&(i=Y),t.traverse(function(t){t.z=i,t.z2=i})}function c(t,e){h(e).updateCommon(t,e),l(t,e)}function h(t){return ot[t.__brushOption.brushType]}function d(t,e,i){var n=t._panels;if(!n)return!0;var o,a=t._transform;return Z(n,function(t){t.isTargetByCursor(e,i,a)&&(o=t)}),o}function f(t,e){var i=t._panels;if(!i)return!0;var n=e.__brushOption.panelId;return null==n||i[n]}function p(t){var e=t._covers,i=e.length;return Z(e,function(e){t.group.remove(e)},t),e.length=0,!!i}function g(t,e){var i=q(t._covers,function(t){var e=t.__brushOption,i=B.clone(e.range);return{brushType:e.brushType,panelId:e.panelId,range:i}});t.trigger("brush",i,{isEnd:!!e.isEnd,removeOnClick:!!e.removeOnClick})}function m(t){var e=t._track;if(!e.length)return!1;var i=e[e.length-1],n=e[0],o=i[0]-n[0],a=i[1]-n[1],r=X(o*o+a*a,.5);return r>$}function v(t){var e=t.length-1;return e<0&&(e=0),[t[0],t[e]]}function y(t,e,i,n){var o=new G.Group;return o.add(new G.Rect({name:"main",style:w(i),silent:!0,draggable:!0,cursor:"move",drift:W(t,e,o,"nswe"),ondragend:W(g,e,{isEnd:!0})})),Z(n,function(i){o.add(new G.Rect({name:i,style:{opacity:0},draggable:!0,silent:!0,invisible:!0,drift:W(t,e,o,i),ondragend:W(g,e,{isEnd:!0})}))}),o}function x(t,e,i,n){var o=n.brushStyle.lineWidth||0,a=U(o,K),r=i[0][0],s=i[1][0],l=r-o/2,u=s-o/2,c=i[0][1],h=i[1][1],d=c-a+o/2,f=h-a+o/2,p=c-r,g=h-s,m=p+o,v=g+o;b(t,e,"main",r,s,p,g),n.transformable&&(b(t,e,"w",l,u,a,v),b(t,e,"e",d,u,a,v),b(t,e,"n",l,u,m,a),b(t,e,"s",l,f,m,a),b(t,e,"nw",l,u,a,a),b(t,e,"ne",d,u,a,a),b(t,e,"sw",l,f,a,a),b(t,e,"se",d,f,a,a))}function _(t,e){var i=e.__brushOption,n=i.transformable,o=e.childAt(0);o.useStyle(w(i)),o.attr({silent:!n,cursor:n?"move":"default"}),Z(["w","e","n","s","se","sw","ne","nw"],function(i){var o=e.childOfName(i),a=I(t,i);o&&o.attr({silent:!n,invisible:!n,cursor:n?tt[a]+"-resize":null})})}function b(t,e,i,n,o,a,r){var s=e.childOfName(i);s&&s.setShape(D(L(t,e,[[n,o],[n+a,o+r]])))}function w(t){return B.defaults({strokeNoScale:!0},t.brushStyle)}function S(t,e,i,n){var o=[j(t,i),j(e,n)],a=[U(t,i),U(e,n)];return[[o[0],a[0]],[o[1],a[1]]]}function M(t){return G.getTransform(t.group)}function I(t,e){if(e.length>1){e=e.split("");var i=[I(t,e[0]),I(t,e[1])];return("e"===i[0]||"w"===i[0])&&i.reverse(),i.join("")}var n={w:"left",e:"right",n:"top",s:"bottom"},o={left:"w",right:"e",top:"n",bottom:"s"},i=G.transformDirection(n[e],M(t));return o[i]}function T(t,e,i,n,o,a,r,s){var l=n.__brushOption,u=t(l.range),h=C(i,a,r);Z(o.split(""),function(t){var e=Q[t];u[e[0]][e[1]]+=h[e[0]]}),l.range=e(S(u[0][0],u[1][0],u[0][1],u[1][1])),c(i,n),g(i,{isEnd:!1})}function A(t,e,i,n,o){var a=e.__brushOption.range,r=C(t,i,n);Z(a,function(t){t[0]+=r[0],t[1]+=r[1]}),c(t,e),g(t,{isEnd:!1})}function C(t,e,i){var n=t.group,o=n.transformCoordToLocal(e,i),a=n.transformCoordToLocal(0,0);return[o[0]-a[0],o[1]-a[1]]}function L(t,e,i){var n=f(t,e);return n&&n!==!0?n.clipPath(i,t._transform):B.clone(i)}function D(t){var e=j(t[0][0],t[1][0]),i=j(t[0][1],t[1][1]),n=U(t[0][0],t[1][0]),o=U(t[0][1],t[1][1]);return{x:e,y:i,width:n-e,height:o-i}}function P(t,e,i){if(t._brushType){var n=t._zr,o=t._covers,a=d(t,e,i);if(!t._dragging)for(var r=0;re[1]&&e.reverse(),e},getOtherAxis:function(){this.grid.getOtherAxis()},isLabelIgnored:function(t){if("category"===this.type){var e=this.getLabelInterval();return"function"==typeof e&&!e(t,this.scale.getLabel(t))||t%(e+1)}},pointToData:function(t,e){return this.coordToData(this.toLocalCoord(t["x"===this.dim?0:1]),e)},toLocalCoord:null,toGlobalCoord:null},n.inherits(a,o),t.exports=a},function(t,e,i){"use strict";function n(t){return this._axes[t]}var o=i(1),a=function(t){this._axes={},this._dimList=[],this.name=t||""};a.prototype={constructor:a,type:"cartesian",getAxis:function(t){return this._axes[t]},getAxes:function(){return o.map(this._dimList,n,this)},getAxesByScale:function(t){return t=t.toLowerCase(),o.filter(this.getAxes(),function(e){return e.scale.type===t})},addAxis:function(t){var e=t.dim;this._axes[e]=t,this._dimList.push(e)},dataToCoord:function(t){return this._dataCoordConvert(t,"dataToCoord")},coordToData:function(t){return this._dataCoordConvert(t,"coordToData")},_dataCoordConvert:function(t,e){for(var i=this._dimList,n=t instanceof Array?[]:{},o=0;o=0;n--)h.isIdInner(e[n])&&e.splice(n,1);t[i]=e}}),delete t[b],t},getTheme:function(){return this._theme},getComponent:function(t,e){var i=this._componentsMap.get(t);if(i)return i[e||0]},queryComponents:function(t){var e=t.mainType;if(!e)return[];var i=t.index,n=t.id,o=t.name,a=this._componentsMap.get(e);if(!a||!a.length)return[];var r;if(null!=i)m(i)||(i=[i]),r=p(g(i,function(t){return a[t]}),function(t){return!!t});else if(null!=n){var s=m(n);r=p(a,function(t){return s&&v(n,t.id)>=0||!s&&t.id===n})}else if(null!=o){var u=m(o);r=p(a,function(t){return u&&v(o,t.name)>=0||!u&&t.name===o})}else r=a.slice();return l(r,t)},findComponents:function(t){function e(t){var e=o+"Index",i=o+"Id",n=o+"Name";return!t||null==t[e]&&null==t[i]&&null==t[n]?null:{mainType:o,index:t[e],id:t[i],name:t[n]}}function i(e){return t.filter?p(e,t.filter):e}var n=t.query,o=t.mainType,a=e(n),r=a?this.queryComponents(a):this._componentsMap.get(o);return i(l(r,t))},eachComponent:function(t,e,i){var n=this._componentsMap;if("function"==typeof t)i=e,e=t,n.each(function(t,n){f(t,function(t,o){e.call(i,n,t,o)})});else if(c.isString(t))f(n.get(t),e,i);else if(y(t)){var o=this.findComponents(t);f(o,e,i)}},getSeriesByName:function(t){var e=this._componentsMap.get("series");return p(e,function(e){return e.name===t})},getSeriesByIndex:function(t){return this._componentsMap.get("series")[t]},getSeriesByType:function(t){var e=this._componentsMap.get("series");return p(e,function(e){return e.subType===t})},getSeries:function(){return this._componentsMap.get("series").slice()},eachSeries:function(t,e){u(this),f(this._seriesIndices,function(i){var n=this._componentsMap.get("series")[i];t.call(e,n,i)},this)},eachRawSeries:function(t,e){f(this._componentsMap.get("series"),t,e)},eachSeriesByType:function(t,e,i){u(this),f(this._seriesIndices,function(n){var o=this._componentsMap.get("series")[n];o.subType===t&&e.call(i,o,n)},this)},eachRawSeriesByType:function(t,e,i){return f(this.getSeriesByType(t),e,i)},isSeriesFiltered:function(t){return u(this),c.indexOf(this._seriesIndices,t.componentIndex)<0},getCurrentSeriesIndices:function(){return(this._seriesIndices||[]).slice()},filterSeries:function(t,e){u(this);var i=p(this._componentsMap.get("series"),t,e);this._seriesIndices=s(i)},restoreData:function(){var t=this._componentsMap;this._seriesIndices=s(t.get("series"));var e=[];t.each(function(t,i){e.push(i)}),x.topologicalTravel(e,x.getAllClassMainTypes(),function(e,i){f(t.get(e),function(t){t.restoreData()})})}});c.mixin(w,i(62)),t.exports=w},function(t,e,i){function n(t){this._api=t,this._timelineOptions=[],this._mediaList=[],this._mediaDefault,this._currentMediaIndices=[],this._optionBackup,this._newBaseOption}function o(t,e,i){var n,o,a=[],r=[],s=t.timeline;if(t.baseOption&&(o=t.baseOption),(s||t.options)&&(o=o||{},a=(t.options||[]).slice()),t.media){o=o||{};var l=t.media;d(l,function(t){t&&t.option&&(t.query?r.push(t):n||(n=t))})}return o||(o=t),o.timeline||(o.timeline=s),d([o].concat(a).concat(u.map(r,function(t){return t.option})),function(t){d(e,function(e){e(t,i)})}),{baseOption:o,timelineOptions:a,mediaDefault:n,mediaList:r}}function a(t,e,i){var n={width:e,height:i,aspectratio:e/i},o=!0;return u.each(t,function(t,e){var i=e.match(m);if(i&&i[1]&&i[2]){var a=i[1],s=i[2].toLowerCase();r(n[s],t,a)||(o=!1)}}),o}function r(t,e,i){return"min"===i?t>=e:"max"===i?t<=e:t===e}function s(t,e){return t.join(",")===e.join(",")}function l(t,e){e=e||{},d(e,function(e,i){if(null!=e){var n=t[i];if(h.hasClass(i)){e=c.normalizeToArray(e),n=c.normalizeToArray(n);var o=c.mappingToExists(n,e);t[i]=p(o,function(t){return t.option&&t.exist?g(t.exist,t.option,!0):t.exist||t.option})}else t[i]=g(n,e,!0)}})}var u=i(1),c=i(5),h=i(13),d=u.each,f=u.clone,p=u.map,g=u.merge,m=/^(min|max)?(.+)$/;n.prototype={constructor:n,setOption:function(t,e){t=f(t,!0);var i=this._optionBackup,n=o.call(this,t,e,!i);this._newBaseOption=n.baseOption,i?(l(i.baseOption,n.baseOption),n.timelineOptions.length&&(i.timelineOptions=n.timelineOptions),n.mediaList.length&&(i.mediaList=n.mediaList),n.mediaDefault&&(i.mediaDefault=n.mediaDefault)):this._optionBackup=n},mountOption:function(t){var e=this._optionBackup;return this._timelineOptions=p(e.timelineOptions,f),this._mediaList=p(e.mediaList,f),this._mediaDefault=f(e.mediaDefault),this._currentMediaIndices=[],f(t?e.baseOption:this._newBaseOption)},getTimelineOption:function(t){var e,i=this._timelineOptions;if(i.length){var n=t.getComponent("timeline");n&&(e=f(i[n.getCurrentIndex()],!0))}return e},getMediaOption:function(t){var e=this._api.getWidth(),i=this._api.getHeight(),n=this._mediaList,o=this._mediaDefault,r=[],l=[];if(!n.length&&!o)return l;for(var u=0,c=n.length;ue&&(e=t[i]);return e},min:function(t){for(var e=1/0,i=0;i1){var h;"string"==typeof o?h=i[o]:"function"==typeof o&&(h=o),h&&(e=e.downSample(s.dim,1/c,h,n),t.setData(e))}}},this)}},function(t,e,i){function n(t,e){return h(t,c(e))}var o=i(1),a=i(34),r=i(4),s=i(43),l=a.prototype,u=s.prototype,c=r.getPrecisionSafe,h=r.round,d=Math.floor,f=Math.ceil,p=Math.pow,g=Math.log,m=a.extend({type:"log",base:10,$constructor:function(){a.apply(this,arguments),this._originalScale=new s},getTicks:function(){var t=this._originalScale,e=this._extent,i=t.getExtent();return o.map(u.getTicks.call(this),function(o){var a=r.round(p(this.base,o));return a=o===e[0]&&t.__fixMin?n(a,i[0]):a,a=o===e[1]&&t.__fixMax?n(a,i[1]):a},this)},getLabel:u.getLabel,scale:function(t){return t=l.scale.call(this,t),p(this.base,t)},setExtent:function(t,e){var i=this.base;t=g(t)/g(i),e=g(e)/g(i),u.setExtent.call(this,t,e)},getExtent:function(){var t=this.base,e=l.getExtent.call(this);e[0]=p(t,e[0]),e[1]=p(t,e[1]);var i=this._originalScale,o=i.getExtent();return i.__fixMin&&(e[0]=n(e[0],o[0])),i.__fixMax&&(e[1]=n(e[1],o[1])),e},unionExtent:function(t){this._originalScale.unionExtent(t);var e=this.base;t[0]=g(t[0])/g(e),t[1]=g(t[1])/g(e),l.unionExtent.call(this,t)},unionExtentFromData:function(t,e){this.unionExtent(t.getDataExtent(e,!0,function(t){return t>0}))},niceTicks:function(t){t=t||10;var e=this._extent,i=e[1]-e[0];if(!(i===1/0||i<=0)){var n=r.quantity(i),o=t/i*n;for(o<=.5&&(n*=10);!isNaN(n)&&Math.abs(n)<1&&Math.abs(n)>0;)n*=10;var a=[r.round(f(e[0]/n)*n),r.round(d(e[1]/n)*n)];this._interval=n,this._niceExtent=a}},niceExtent:function(t){u.niceExtent.call(this,t);var e=this._originalScale;e.__fixMin=t.fixMin,e.__fixMax=t.fixMax}});o.each(["contain","normalize"],function(t){m.prototype[t]=function(e){return e=g(e)/g(this.base),l[t].call(this,e)}}),m.create=function(){return new m},t.exports=m},function(t,e,i){var n=i(1),o=i(34),a=o.prototype,r=o.extend({type:"ordinal",init:function(t,e){this._data=t,this._extent=e||[0,t.length-1]},parse:function(t){return"string"==typeof t?n.indexOf(this._data,t):Math.round(t)},contain:function(t){return t=this.parse(t),a.contain.call(this,t)&&null!=this._data[t]},normalize:function(t){return a.normalize.call(this,this.parse(t))},scale:function(t){return Math.round(a.scale.call(this,t))},getTicks:function(){for(var t=[],e=this._extent,i=e[0];i<=e[1];)t.push(i),i++;return t},getLabel:function(t){return this._data[t]},count:function(){return this._extent[1]-this._extent[0]+1},unionExtentFromData:function(t,e){this.unionExtent(t.getDataExtent(e,!1))},niceTicks:n.noop,niceExtent:n.noop});r.create=function(){return new r},t.exports=r},function(t,e,i){var n=i(1),o=i(4),a=i(7),r=i(64),s=i(43),l=s.prototype,u=Math.ceil,c=Math.floor,h=1e3,d=60*h,f=60*d,p=24*f,g=function(t,e,i,n){for(;i>>1;t[o][2]=0;r--){var s;if(n[r]!==i&&!n[r].ignore&&(s=a(n[r],t,e))&&(!o.topTarget&&(o.topTarget=n[r]),s!==u)){o.target=n[r];break}}return o}},r.each(["click","mousedown","mouseup","mousewheel","dblclick","contextmenu"],function(t){h.prototype[t]=function(e){var i=this.findHover(e.zrX,e.zrY),n=i.target;if("mousedown"===t)this._downel=n,this._upel=n;else if("mosueup"===t)this._upel=n;else if("click"===t&&this._downel!==this._upel)return;this.dispatchToElement(i,t,e)}}),r.mixin(h,l),r.mixin(h,s),t.exports=h},function(t,e,i){function n(){return!1}function o(t,e,i,n){var o=document.createElement(e),a=i.getWidth(),r=i.getHeight(),s=o.style;return s.position="absolute",s.left=0,s.top=0,s.width=a+"px",s.height=r+"px",o.width=a*n,o.height=r*n,o.setAttribute("data-zr-dom-id",t),o}var a=i(1),r=i(35),s=i(73),l=i(72),u=function(t,e,i){var s;i=i||r.devicePixelRatio,"string"==typeof t?s=o(t,"canvas",e,i):a.isObject(t)&&(s=t,t=s.id),this.id=t,this.dom=s;var l=s.style;l&&(s.onselectstart=n,l["-webkit-user-select"]="none",l["user-select"]="none",l["-webkit-touch-callout"]="none",l["-webkit-tap-highlight-color"]="rgba(0,0,0,0)",l.padding=0,l.margin=0,l["border-width"]=0),this.domBack=null,this.ctxBack=null,this.painter=e,this.config=null,this.clearColor=0,this.motionBlur=!1,this.lastFrameAlpha=.7,this.dpr=i};u.prototype={constructor:u,elCount:0,__dirty:!0,initContext:function(){this.ctx=this.dom.getContext("2d"),this.ctx.dpr=this.dpr},createBackBuffer:function(){var t=this.dpr;this.domBack=o("back-"+this.id,"canvas",this.painter,t),this.ctxBack=this.domBack.getContext("2d"),1!=t&&this.ctxBack.scale(t,t)},resize:function(t,e){var i=this.dpr,n=this.dom,o=n.style,a=this.domBack;o.width=t+"px",o.height=e+"px",n.width=t*i,n.height=e*i,a&&(a.width=t*i,a.height=e*i,1!=i&&this.ctxBack.scale(i,i))},clear:function(t){var e=this.dom,i=this.ctx,n=e.width,o=e.height,a=this.clearColor,r=this.motionBlur&&!t,u=this.lastFrameAlpha,c=this.dpr;if(r&&(this.domBack||this.createBackBuffer(),this.ctxBack.globalCompositeOperation="copy",this.ctxBack.drawImage(e,0,0,n/c,o/c)),i.clearRect(0,0,n,o),a){var h;a.colorStops?(h=a.__canvasGradient||s.getGradient(i,a,{x:0,y:0,width:n,height:o}),a.__canvasGradient=h):a.image&&(h=l.prototype.getCanvasPattern.call(a,i)),i.save(),i.fillStyle=h||a,i.fillRect(0,0,n,o),i.restore()}if(r){var d=this.domBack;i.save(),i.globalAlpha=u,i.drawImage(d,0,0,n,o),i.restore()}}},t.exports=u},function(t,e,i){"use strict";function n(t){return parseInt(t,10)}function o(t){return!!t&&(!!t.__builtin__||"function"==typeof t.resize&&"function"==typeof t.refresh)}function a(t){t.__unusedCount++}function r(t){1==t.__unusedCount&&t.clear()}function s(t,e,i){return x.copy(t.getBoundingRect()),t.transform&&x.applyTransform(t.transform),_.width=e,_.height=i,!x.intersect(_)}function l(t,e){if(t==e)return!1;if(!t||!e||t.length!==e.length)return!0;for(var i=0;i=0&&i.splice(n,1),t.__hoverMir=null},clearHover:function(t){for(var e=this._hoverElements,i=0;i=0){if(!s){if(s=this._progressiveLayers[Math.min(u++,y-1)],s.ctx.save(),s.renderScope={},s&&s.__progress>s.__maxProgress){g=s.__nextIdxNotProg-1;continue}l=s.__progress,s.__dirty||(p=l),s.__progress=p+1}_===p&&this._doPaintEl(v,s,!0,s.renderScope)}else this._doPaintEl(v,n,e,r);v.__dirty=!1}}s&&i(s),a&&a.restore(),this._furtherProgressive=!1,d.each(this._progressiveLayers,function(t){t.__maxProgress>=t.__progress&&(this._furtherProgressive=!0)},this)},_doPaintEl:function(t,e,i,n){var o=e.ctx,a=t.transform;if((e.__dirty||i)&&!t.invisible&&0!==t.style.opacity&&(!a||a[0]||a[3])&&(!t.culling||!s(t,this._width,this._height))){var r=t.__clipPaths;(n.prevClipLayer!==e||l(r,n.prevElClipPaths))&&(n.prevElClipPaths&&(n.prevClipLayer.ctx.restore(),n.prevClipLayer=n.prevElClipPaths=null,n.prevEl=null),r&&(o.save(),u(r,o),n.prevClipLayer=e,n.prevElClipPaths=r)),t.beforeBrush&&t.beforeBrush(o),t.brush(o,n.prevEl||null),n.prevEl=t,t.afterBrush&&t.afterBrush(o)}},getLayer:function(t){if(this._singleCanvas)return this._layers[0];var e=this._layers[t];return e||(e=new m("zr_"+t,this,this.dpr),e.__builtin__=!0,this._layerConfig[t]&&d.merge(e,this._layerConfig[t],!0),this.insertLayer(t,e),e.initContext()),e},insertLayer:function(t,e){var i=this._layers,n=this._zlevelList,a=n.length,r=null,s=-1,l=this._domRoot;if(i[t])return void f("ZLevel "+t+" has been used already");if(!o(e))return void f("Layer of zlevel "+t+" is not valid");if(a>0&&t>n[0]){for(s=0;st);s++);r=i[n[s]]}if(n.splice(s+1,0,t),i[t]=e,!e.virtual)if(r){var u=r.dom;u.nextSibling?l.insertBefore(e.dom,u.nextSibling):l.appendChild(e.dom)}else l.firstChild?l.insertBefore(e.dom,l.firstChild):l.appendChild(e.dom)},eachLayer:function(t,e){var i,n,o=this._zlevelList;for(n=0;n=0){r!==g&&(r=g,l++);var v=h.__frame=l-1;if(!a){var x=Math.min(s,y-1);a=i[x],a||(a=i[x]=new m("progressive",this,this.dpr),a.initContext()),a.__maxProgress=0}a.__dirty=a.__dirty||h.__dirty,a.elCount++,a.__maxProgress=Math.max(a.__maxProgress,v),a.__maxProgress>=a.__progress&&(p.__dirty=!0)}else h.__frame=-1,a&&(a.__nextIdxNotProg=u,s++,a=null)}a&&(s++,a.__nextIdxNotProg=u),this.eachBuiltinLayer(function(t,e){n[e]!==t.elCount&&(t.__dirty=!0)}),i.length=Math.min(s,y),d.each(i,function(t,e){o[e]!==t.elCount&&(h.__dirty=!0),t.__dirty&&(t.__progress=0)})},clear:function(){return this.eachBuiltinLayer(this._clearLayer),this},_clearLayer:function(t){t.clear()},configLayer:function(t,e){if(e){var i=this._layerConfig;i[t]?d.merge(i[t],e,!0):i[t]=e;var n=this._layers[t];n&&d.merge(n,i[t],!0)}},delLayer:function(t){var e=this._layers,i=this._zlevelList,n=e[t];n&&(n.dom.parentNode.removeChild(n.dom),delete e[t],i.splice(d.indexOf(i,t),1))},resize:function(t,e){var i=this._domRoot;i.style.display="none";var n=this._opts;if(null!=t&&(n.width=t),null!=e&&(n.height=e),t=this._getSize(0),e=this._getSize(1),i.style.display="",this._width!=t||e!=this._height){i.style.width=t+"px",i.style.height=e+"px";for(var o in this._layers)this._layers.hasOwnProperty(o)&&this._layers[o].resize(t,e);d.each(this._progressiveLayers,function(i){i.resize(t,e)}),this.refresh(!0)}return this._width=t,this._height=e,this},clearLayer:function(t){var e=this._layers[t];e&&e.clear()},dispose:function(){this.root.innerHTML="",this.root=this.storage=this._domRoot=this._layers=null},getRenderedCanvas:function(t){function e(t,e){var n=r._zlevelList;null==t&&(t=-(1/0));for(var o,a=0;at&&s=0&&(this.delFromStorage(t),this._roots.splice(a,1),t instanceof r&&t.delChildrenFromStorage(this))}},addToStorage:function(t){return t.__storage=this,t.dirty(!1),this},delFromStorage:function(t){return t&&(t.__storage=null),this},dispose:function(){this._renderList=this._roots=null},displayableSortFunc:n},t.exports=l},function(t,e,i){"use strict";var n=i(1),o=i(21).Dispatcher,a=i(68),r=i(67),s=function(t){t=t||{},this.stage=t.stage||{},this.onframe=t.onframe||function(){},this._clips=[],this._running=!1,this._time,this._pausedTime,this._pauseStart,this._paused=!1,o.call(this)};s.prototype={constructor:s,addClip:function(t){this._clips.push(t)},addAnimator:function(t){t.animation=this;for(var e=t.getClips(),i=0;i=0&&this._clips.splice(e,1)},removeAnimator:function(t){for(var e=t.getClips(),i=0;ii||d+hr&&(r+=o);var p=Math.atan2(c,u);return p<0&&(p+=o),p>=a&&p<=r||p+o>=a&&p+o<=r}}},function(t,e,i){var n=i(20);t.exports={containStroke:function(t,e,i,o,a,r,s,l,u,c,h){if(0===u)return!1;var d=u;if(h>e+d&&h>o+d&&h>r+d&&h>l+d||ht+d&&c>i+d&&c>a+d&&c>s+d||ce&&c>n&&c>r&&c>l||c1&&o(),d=g.cubicAt(e,n,r,l,b[0]),m>1&&(f=g.cubicAt(e,n,r,l,b[1]))),p+=2==m?ye&&s>n&&s>a||s=0&&u<=1){for(var c=0,h=g.quadraticAt(e,n,a,u),d=0;di||s<-i)return 0;var l=Math.sqrt(i*i-s*s);_[0]=-l,_[1]=l;var u=Math.abs(n-o);if(u<1e-4)return 0;if(u%y<1e-4){n=0,o=y;var c=a?1:-1;return r>=_[0]+t&&r<=_[1]+t?c:0}if(a){var l=n;n=p(o),o=p(l)}else n=p(n),o=p(o);n>o&&(o+=y);for(var h=0,d=0;d<2;d++){var f=_[d];if(f+t>r){var g=Math.atan2(s,f),c=a?1:-1;g<0&&(g=y+g),(g>=n&&g<=o||g+y>=n&&g+y<=o)&&(g>Math.PI/2&&g<1.5*Math.PI&&(c=-c),h+=c)}}return h}function l(t,e,i,o,l){for(var c=0,p=0,g=0,y=0,x=0,_=0;_1&&(i||(c+=m(p,g,y,x,o,l))),1==_&&(p=t[_],g=t[_+1],y=p,x=g),b){case u.M:y=t[_++],x=t[_++],p=y,g=x;break;case u.L:if(i){if(v(p,g,t[_],t[_+1],e,o,l))return!0}else c+=m(p,g,t[_],t[_+1],o,l)||0;p=t[_++],g=t[_++];break;case u.C:if(i){if(h.containStroke(p,g,t[_++],t[_++],t[_++],t[_++],t[_],t[_+1],e,o,l))return!0}else c+=a(p,g,t[_++],t[_++],t[_++],t[_++],t[_],t[_+1],o,l)||0;p=t[_++],g=t[_++];break;case u.Q:if(i){if(d.containStroke(p,g,t[_++],t[_++],t[_],t[_+1],e,o,l))return!0}else c+=r(p,g,t[_++],t[_++],t[_],t[_+1],o,l)||0;p=t[_++],g=t[_++];break;case u.A:var w=t[_++],S=t[_++],M=t[_++],I=t[_++],T=t[_++],A=t[_++],C=(t[_++],1-t[_++]),L=Math.cos(T)*M+w,D=Math.sin(T)*I+S;_>1?c+=m(p,g,L,D,o,l):(y=L,x=D);var P=(o-w)*I/M+w;if(i){if(f.containStroke(w,S,I,T,T+A,C,e,P,l))return!0}else c+=s(w,S,I,T,T+A,C,P,l);p=Math.cos(T+A)*M+w,g=Math.sin(T+A)*I+S;break;case u.R:y=p=t[_++],x=g=t[_++];var k=t[_++],O=t[_++],L=y+k,D=x+O;if(i){if(v(y,x,L,x,e,o,l)||v(L,x,L,D,e,o,l)||v(L,D,y,D,e,o,l)||v(y,D,y,x,e,o,l))return!0}else c+=m(L,x,L,D,o,l),c+=m(y,D,y,x,o,l);break;case u.Z:if(i){if(v(p,g,y,x,e,o,l))return!0}else c+=m(p,g,y,x,o,l);p=y,g=x}}return i||n(g,x)||(c+=m(p,g,y,x,o,l)||0),0!==c}var u=i(27).CMD,c=i(97),h=i(160),d=i(98),f=i(159),p=i(69).normalizeRadian,g=i(20),m=i(99),v=c.containStroke,y=2*Math.PI,x=1e-4,_=[-1,-1,-1],b=[-1,-1];t.exports={contain:function(t,e,i){return l(t,0,!1,e,i)},containStroke:function(t,e,i,n){return l(t,e,!0,i,n)}}},function(t,e,i){"use strict";function n(t){var e=t[1][0]-t[0][0],i=t[1][1]-t[0][1];return Math.sqrt(e*e+i*i)}function o(t){return[(t[0][0]+t[1][0])/2,(t[0][1]+t[1][1])/2]}var a=i(21),r=function(){this._track=[]};r.prototype={constructor:r,recognize:function(t,e,i){return this._doTrack(t,e,i),this._recognize(t)},clear:function(){return this._track.length=0,this},_doTrack:function(t,e,i){var n=t.touches;if(n){for(var o={points:[],touches:[],target:e,event:t},r=0,s=n.length;r1&&a&&a.length>1){var s=n(a)/n(r);!isFinite(s)&&(s=1),e.pinchScale=s;var l=o(a);return e.pinchX=l[0],e.pinchY=l[1],{type:"pinch",target:t[0].target,event:e}}}}};t.exports=r},function(t,e,i){function n(t){return"mousewheel"===t&&d.browser.firefox?"DOMMouseScroll":t}function o(t,e,i){var n=t._gestureMgr;"start"===i&&n.clear();var o=n.recognize(e,t.handler.findHover(e.zrX,e.zrY,null).target,t.dom);if("end"===i&&n.clear(),o){var a=o.type;e.gestureEvent=a,t.handler.dispatchToElement({target:o.target},a,o.event)}}function a(t){t._touching=!0,clearTimeout(t._touchTimer),t._touchTimer=setTimeout(function(){t._touching=!1},700)}function r(t){var e=t.pointerType;return"pen"===e||"touch"===e}function s(t){function e(t,e){return function(){if(!e._touching)return t.apply(e,arguments)}}c.each(x,function(e){t._handlers[e]=c.bind(w[e],t)}),c.each(b,function(e){t._handlers[e]=c.bind(w[e],t)}),c.each(y,function(i){t._handlers[i]=e(w[i],t)})}function l(t){function e(e,i){c.each(e,function(e){p(t,n(e),i._handlers[e])},i)}h.call(this),this.dom=t,this._touching=!1,this._touchTimer,this._gestureMgr=new f,this._handlers={},s(this),d.pointerEventsSupported?e(b,this):(d.touchEventsSupported&&e(x,this),e(y,this))}var u=i(21),c=i(1),h=i(23),d=i(9),f=i(162),p=u.addEventListener,g=u.removeEventListener,m=u.normalizeEvent,v=300,y=["click","dblclick","mousewheel","mouseout","mouseup","mousedown","mousemove","contextmenu"],x=["touchstart","touchend","touchmove"],_={pointerdown:1,pointerup:1,pointermove:1,pointerout:1},b=c.map(y,function(t){var e=t.replace("mouse","pointer");return _[e]?e:t}),w={mousemove:function(t){t=m(this.dom,t),this.trigger("mousemove",t)},mouseout:function(t){t=m(this.dom,t);var e=t.toElement||t.relatedTarget;if(e!=this.dom)for(;e&&9!=e.nodeType;){if(e===this.dom)return;e=e.parentNode}this.trigger("mouseout",t)},touchstart:function(t){t=m(this.dom,t),t.zrByTouch=!0,this._lastTouchMoment=new Date,o(this,t,"start"),w.mousemove.call(this,t),w.mousedown.call(this,t),a(this)},touchmove:function(t){t=m(this.dom,t),t.zrByTouch=!0,o(this,t,"change"),w.mousemove.call(this,t),a(this)},touchend:function(t){t=m(this.dom,t),t.zrByTouch=!0,o(this,t,"end"),w.mouseup.call(this,t),+new Date-this._lastTouchMomentl&&(h=i+n,i*=l/h,n*=l/h),o+a>l&&(h=o+a,o*=l/h,a*=l/h),n+o>u&&(h=n+o,n*=u/h,o*=u/h),i+a>u&&(h=i+a,i*=u/h,a*=u/h),t.moveTo(r+i,s),t.lineTo(r+l-n,s),0!==n&&t.quadraticCurveTo(r+l,s,r+l,s+n),t.lineTo(r+l,s+u-o),0!==o&&t.quadraticCurveTo(r+l,s+u,r+l-o,s+u),t.lineTo(r+a,s+u),0!==a&&t.quadraticCurveTo(r,s+u,r,s+u-a),t.lineTo(r,s+i),0!==i&&t.quadraticCurveTo(r,s,r+i,s)}}},function(t,e,i){var n=i(6),o=n.min,a=n.max,r=n.scale,s=n.distance,l=n.add;t.exports=function(t,e,i,u){var c,h,d,f,p=[],g=[],m=[],v=[];if(u){d=[1/0,1/0],f=[-(1/0),-(1/0)];for(var y=0,x=t.length;yi-2?i-1:f+1],h=t[f>i-3?i-1:f+2]);var m=p*p,v=p*m;a.push([n(u[0],g[0],c[0],h[0],p,m,v),n(u[1],g[1],c[1],h[1],p,m,v)])}return a}},function(t,e,i){t.exports=i(8).extend({type:"arc",shape:{cx:0,cy:0,r:0,startAngle:0,endAngle:2*Math.PI,clockwise:!0},style:{stroke:"#000",fill:null},buildPath:function(t,e){var i=e.cx,n=e.cy,o=Math.max(e.r,0),a=e.startAngle,r=e.endAngle,s=e.clockwise,l=Math.cos(a),u=Math.sin(a);t.moveTo(l*o+i,u*o+n),t.arc(i,n,o,a,r,!s)}})},function(t,e,i){"use strict";function n(t,e,i){var n=t.cpx2,o=t.cpy2;return null===n||null===o?[(i?h:u)(t.x1,t.cpx1,t.cpx2,t.x2,e),(i?h:u)(t.y1,t.cpy1,t.cpy2,t.y2,e)]:[(i?c:l)(t.x1,t.cpx1,t.x2,e),(i?c:l)(t.y1,t.cpy1,t.y2,e)]}var o=i(20),a=i(6),r=o.quadraticSubdivide,s=o.cubicSubdivide,l=o.quadraticAt,u=o.cubicAt,c=o.quadraticDerivativeAt,h=o.cubicDerivativeAt,d=[];t.exports=i(8).extend({type:"bezier-curve",shape:{x1:0,y1:0,x2:0,y2:0,cpx1:0,cpy1:0,percent:1},style:{stroke:"#000",fill:null},buildPath:function(t,e){var i=e.x1,n=e.y1,o=e.x2,a=e.y2,l=e.cpx1,u=e.cpy1,c=e.cpx2,h=e.cpy2,f=e.percent;0!==f&&(t.moveTo(i,n),null==c||null==h?(f<1&&(r(i,l,o,f,d),l=d[1],o=d[2],r(n,u,a,f,d),u=d[1],a=d[2]),t.quadraticCurveTo(l,u,o,a)):(f<1&&(s(i,l,c,o,f,d),l=d[1],c=d[2],o=d[3],s(n,u,h,a,f,d),u=d[1],h=d[2],a=d[3]),t.bezierCurveTo(l,u,c,h,o,a)))},pointAt:function(t){return n(this.shape,t,!1)},tangentAt:function(t){var e=n(this.shape,t,!0);return a.normalize(e,e)}})},function(t,e,i){"use strict";t.exports=i(8).extend({type:"circle",shape:{cx:0,cy:0,r:0},buildPath:function(t,e,i){i&&t.moveTo(e.cx+e.r,e.cy),t.arc(e.cx,e.cy,e.r,0,2*Math.PI,!0)}})},function(t,e,i){t.exports=i(8).extend({type:"line",shape:{x1:0,y1:0,x2:0,y2:0,percent:1},style:{stroke:"#000",fill:null},buildPath:function(t,e){var i=e.x1,n=e.y1,o=e.x2,a=e.y2,r=e.percent;0!==r&&(t.moveTo(i,n),r<1&&(o=i*(1-r)+o*r,a=n*(1-r)+a*r),t.lineTo(o,a))},pointAt:function(t){var e=this.shape;return[e.x1*(1-t)+e.x2*t,e.y1*(1-t)+e.y2*t]}})},function(t,e,i){var n=i(74);t.exports=i(8).extend({type:"polygon",shape:{points:null,smooth:!1,smoothConstraint:null},buildPath:function(t,e){n.buildPath(t,e,!0)}})},function(t,e,i){var n=i(74);t.exports=i(8).extend({type:"polyline",shape:{points:null,smooth:!1,smoothConstraint:null},style:{stroke:"#000",fill:null},buildPath:function(t,e){n.buildPath(t,e,!1)}})},function(t,e,i){var n=i(166);t.exports=i(8).extend({type:"rect",shape:{r:0,x:0,y:0,width:0,height:0},buildPath:function(t,e){var i=e.x,o=e.y,a=e.width,r=e.height;e.r?n.buildPath(t,e):t.rect(i,o,a,r),t.closePath()}})},function(t,e,i){t.exports=i(8).extend({type:"ring",shape:{cx:0,cy:0,r:0,r0:0},buildPath:function(t,e){var i=e.cx,n=e.cy,o=2*Math.PI;t.moveTo(i+e.r,n),t.arc(i,n,e.r,0,o,!1),t.moveTo(i+e.r0,n),t.arc(i,n,e.r0,0,o,!0)}})},function(t,e,i){var n=i(9),o=i(8),a=[["shadowBlur",0],["shadowColor","#000"],["shadowOffsetX",0],["shadowOffsetY",0]];t.exports=o.extend({type:"sector",shape:{cx:0,cy:0,r0:0,r:0,startAngle:0,endAngle:2*Math.PI,clockwise:!0},brush:n.browser.ie&&n.browser.version>=11?function(){var t,e=this.__clipPaths,i=this.style;if(e)for(var n=0;n0&&this.animate(t,!1).when(null==n?500:n,r).delay(a||0),this}},t.exports=u},function(t,e){function i(){this.on("mousedown",this._dragStart,this),this.on("mousemove",this._drag,this),this.on("mouseup",this._dragEnd,this),this.on("globalout",this._dragEnd,this)}function n(t,e){return{target:t,topTarget:e&&e.topTarget}}i.prototype={constructor:i,_dragStart:function(t){var e=t.target;e&&e.draggable&&(this._draggingTarget=e,e.dragging=!0,this._x=t.offsetX,this._y=t.offsetY,this.dispatchToElement(n(e,t),"dragstart",t.event))},_drag:function(t){var e=this._draggingTarget;if(e){var i=t.offsetX,o=t.offsetY,a=i-this._x,r=o-this._y;this._x=i,this._y=o,e.drift(a,r,t),this.dispatchToElement(n(e,t),"drag",t.event);var s=this.findHover(i,o,e).target,l=this._dropTarget;this._dropTarget=s,e!==s&&(l&&s!==l&&this.dispatchToElement(n(l,t),"dragleave",t.event),s&&s!==l&&this.dispatchToElement(n(s,t),"dragenter",t.event))}},_dragEnd:function(t){var e=this._draggingTarget;e&&(e.dragging=!1),this.dispatchToElement(n(e,t),"dragend",t.event),this._dropTarget&&this.dispatchToElement(n(this._dropTarget,t),"drop",t.event),this._draggingTarget=null,this._dropTarget=null}},t.exports=i},function(t,e,i){function n(t,e,i,n,o,a,r,s,l,u,p){var v=l*(f/180),y=d(v)*(t-i)/2+h(v)*(e-n)/2,x=-1*h(v)*(t-i)/2+d(v)*(e-n)/2,_=y*y/(r*r)+x*x/(s*s);_>1&&(r*=c(_),s*=c(_));var b=(o===a?-1:1)*c((r*r*(s*s)-r*r*(x*x)-s*s*(y*y))/(r*r*(x*x)+s*s*(y*y)))||0,w=b*r*x/s,S=b*-s*y/r,M=(t+i)/2+d(v)*w-h(v)*S,I=(e+n)/2+h(v)*w+d(v)*S,T=m([1,0],[(y-w)/r,(x-S)/s]),A=[(y-w)/r,(x-S)/s],C=[(-1*y-w)/r,(-1*x-S)/s],L=m(A,C);g(A,C)<=-1&&(L=f),g(A,C)>=1&&(L=0),0===a&&L>0&&(L-=2*f),1===a&&L<0&&(L+=2*f),p.addData(u,M,I,r,s,T,L,v,a)}function o(t){if(!t)return[];var e,i=t.replace(/-/g," -").replace(/ /g," ").replace(/ /g,",").replace(/,,/g,",");for(e=0;e0&&""===m[0]&&m.shift();for(var v=0;v')}}catch(l){n=function(t){return r.createElement("<"+t+' xmlns="'+o+'" class="zrvml">')}}var u=function(){if(!s){s=!0;var t=r.styleSheets;t.length<31?r.createStyleSheet().addRule(".zrvml","behavior:url(#default#VML)"):t[0].addRule(".zrvml","behavior:url(#default#VML)")}};t.exports={doc:r,initVML:u,createNode:n}}},function(t,e,i){"use strict";var n=i(14),o=i(25),a=i(313),r=i(1),s={_baseAxisDim:null,getInitialData:function(t,e){var i,a,s=e.getComponent("xAxis",this.get("xAxisIndex")),l=e.getComponent("yAxis",this.get("yAxisIndex")),u=s.get("type"),c=l.get("type");"category"===u?(t.layout="horizontal",i=s.getCategories(),a=!0):"category"===c?(t.layout="vertical",i=l.getCategories(),a=!0):t.layout=t.layout||"horizontal";var h=["x","y"],d="horizontal"===t.layout?0:1,f=this._baseAxisDim=h[d],p=h[1-d],g=t.data;a&&r.each(g,function(t,e){r.isArray(t)&&t.unshift(e)});var m=[{name:f,otherDims:{tooltip:!1},dimsDef:["base"]},{name:p,dimsDef:this.defaultValueDimensions.slice()}];m=o(m,g,{encodeDef:this.get("encode"),dimsDef:this.get("dimensions")});var v=new n(m,this);return v.initData(g,i?i.slice():null),v},getBaseAxis:function(){var t=this._baseAxisDim;return this.ecModel.getComponent(t+"Axis",this.get(t+"AxisIndex")).axis}},l={init:function(){var t=this._whiskerBoxDraw=new a(this.getStyleUpdater());this.group.add(t.group)},render:function(t,e,i){this._whiskerBoxDraw.updateData(t.getData())},remove:function(t){this._whiskerBoxDraw.remove()}};t.exports={seriesModelMixin:s,viewMixin:l}},function(t,e,i){function n(t,e,i){var n=this._targetInfoList=[],o={},r=a(e,t);p(_,function(t,e){(!i||!i.include||g(i.include,e)>=0)&&t(r,n,o)})}function o(t){return t[0]>t[1]&&t.reverse(),t}function a(t,e){return d.parseFinder(t,e,{includeMainTypes:y})}function r(t,e,i,n){var a=i.getAxis(["x","y"][t]),r=o(c.map([0,1],function(t){return e?a.coordToData(a.toLocalCoord(n[t])):a.toGlobalCoord(a.dataToCoord(n[t]))})),s=[];return s[t]=r,s[1-t]=[NaN,NaN],{values:r,xyMinMax:s}}function s(t,e,i,n){return[e[0]-n[t]*i[0],e[1]-n[t]*i[1]]}function l(t,e){var i=u(t),n=u(e),o=[i[0]/n[0],i[1]/n[1]];return isNaN(o[0])&&(o[0]=1),isNaN(o[1])&&(o[1]=1),o}function u(t){return t?[t[0][1]-t[0][0],t[1][1]-t[1][0]]:[NaN,NaN]}var c=i(1),h=i(3),d=i(5),f=i(185),p=c.each,g=c.indexOf,m=c.curry,v=["dataToPoint","pointToData"],y=["grid","xAxis","yAxis","geo","graph","polar","radiusAxis","angleAxis","bmap"],x=n.prototype;x.setOutputRanges=function(t,e){this.matchOutputRanges(t,e,function(t,e,i){if((t.coordRanges||(t.coordRanges=[])).push(e),!t.coordRange){t.coordRange=e;var n=S[t.brushType](0,i,e);t.__rangeOffset={offset:M[t.brushType](n.values,t.range,[1,1]),xyMinMax:n.xyMinMax}}})},x.matchOutputRanges=function(t,e,i){p(t,function(t){var n=this.findTargetInfo(t,e);n&&n!==!0&&c.each(n.coordSyses,function(n){var o=S[t.brushType](1,n,t.range);i(t,o.values,n,e)})},this)},x.setInputRanges=function(t,e){p(t,function(t){var i=this.findTargetInfo(t,e);if(t.range=t.range||[],i&&i!==!0){t.panelId=i.panelId;var n=S[t.brushType](0,i.coordSys,t.coordRange),o=t.__rangeOffset;t.range=o?M[t.brushType](n.values,o.offset,l(n.xyMinMax,o.xyMinMax)):n.values}},this)},x.makePanelOpts=function(t,e){return c.map(this._targetInfoList,function(i){var n=i.getPanelRect();return{panelId:i.panelId,defaultBrushType:e&&e(i),clipPath:f.makeRectPanelClipPath(n),isTargetByCursor:f.makeRectIsTargetByCursor(n,t,i.coordSysModel),getLinearBrushOtherExtent:f.makeLinearBrushOtherExtent(n)}})},x.controlSeries=function(t,e,i){var n=this.findTargetInfo(t,i);return n===!0||n&&g(n.coordSyses,e.coordinateSystem)>=0},x.findTargetInfo=function(t,e){for(var i=this._targetInfoList,n=a(e,t),o=0;o=0||g(n,t.getAxis("y").model)>=0)&&a.push(t)}),e.push({panelId:"grid--"+t.id,gridModel:t,coordSysModel:t,coordSys:a[0],coordSyses:a,getPanelRect:w.grid,xAxisDeclared:r[t.id],yAxisDeclared:s[t.id]})}))},geo:function(t,e){p(t.geoModels,function(t){var i=t.coordinateSystem;e.push({panelId:"geo--"+t.id,geoModel:t,coordSysModel:t,coordSys:i,coordSyses:[i],getPanelRect:w.geo})})}},b=[function(t,e){var i=t.xAxisModel,n=t.yAxisModel,o=t.gridModel;return!o&&i&&(o=i.axis.grid.model),!o&&n&&(o=n.axis.grid.model),o&&o===e.gridModel},function(t,e){var i=t.geoModel;return i&&i===e.geoModel}],w={grid:function(){return this.coordSys.grid.getRect().clone()},geo:function(){var t=this.coordSys,e=t.getBoundingRect().clone();return e.applyTransform(h.getTransform(t)),e}},S={lineX:m(r,0),lineY:m(r,1),rect:function(t,e,i){ +var n=e[v[t]]([i[0][0],i[1][0]]),a=e[v[t]]([i[0][1],i[1][1]]),r=[o([n[0],a[0]]),o([n[1],a[1]])];return{values:r,xyMinMax:r}},polygon:function(t,e,i){var n=[[1/0,-(1/0)],[1/0,-(1/0)]],o=c.map(i,function(i){var o=e[v[t]](i);return n[0][0]=Math.min(n[0][0],o[0]),n[1][0]=Math.min(n[1][0],o[1]),n[0][1]=Math.max(n[0][1],o[0]),n[1][1]=Math.max(n[1][1],o[1]),o});return{values:o,xyMinMax:n}}},M={lineX:m(s,0),lineY:m(s,1),rect:function(t,e,i){return[[t[0][0]-i[0]*e[0][0],t[0][1]-i[0]*e[0][1]],[t[1][0]-i[1]*e[1][0],t[1][1]-i[1]*e[1][1]]]},polygon:function(t,e,i){return c.map(t,function(t,n){return[t[0]-i[0]*e[n][0],t[1]-i[1]*e[n][1]]})}};t.exports=n},function(t,e,i){function n(t){return a.create(t)}var o=i(128),a=i(11),r=i(3),s={};s.makeRectPanelClipPath=function(t){return t=n(t),function(e,i){return r.clipPointsByRect(e,t)}},s.makeLinearBrushOtherExtent=function(t,e){return t=n(t),function(i){var n=null!=e?e:i,o=n?t.width:t.height,a=n?t.x:t.y;return[a,a+(o||0)]}},s.makeRectIsTargetByCursor=function(t,e,i){return t=n(t),function(n,a,r){return t.contain(a[0],a[1])&&!o.onIrrelevantElement(n,e,i)}},t.exports=s},function(t,e,i){function n(t,e){var i=t.get("boundingCoords");if(null!=i){var n=i[0],o=i[1];isNaN(n[0])||isNaN(n[1])||isNaN(o[0])||isNaN(o[1])||this.setBoundingRect(n[0],n[1],o[0]-n[0],o[1]-n[1])}var a,s=this.getBoundingRect(),u=t.get("layoutCenter"),c=t.get("layoutSize"),h=e.getWidth(),d=e.getHeight(),f=t.get("aspectScale")||.75,p=s.width/s.height*f,g=!1;u&&c&&(u=[l.parsePercent(u[0],h),l.parsePercent(u[1],d)],c=l.parsePercent(c,Math.min(h,d)),isNaN(u[0])||isNaN(u[1])||isNaN(c)||(g=!0));var m;if(g){var m={};p>1?(m.width=c,m.height=c/p):(m.height=c,m.width=c*p),m.y=u[1]-m.height/2,m.x=u[0]-m.width/2}else a=t.getBoxLayoutParams(),a.aspect=p,m=r.getLayoutRect(a,{width:h,height:d});this.setViewRect(m.x,m.y,m.width,m.height),this.setCenter(t.get("center")),this.setZoom(t.get("zoom"))}function o(t,e){s.each(e.get("geoCoord"),function(e,i){t.addGeoCoord(i,e)})}var a=i(398),r=i(12),s=i(1),l=i(4),u={},c={dimensions:a.prototype.dimensions,create:function(t,e){var i=[];t.eachComponent("geo",function(t,r){var s=t.get("map"),l=u[s],c=new a(s+r,s,l&&l.geoJson,l&&l.specialAreas,t.get("nameMap"));c.zoomLimit=t.get("scaleLimit"),i.push(c),o(c,t),t.coordinateSystem=c,c.model=t,c.resize=n,c.resize(t,e)}),t.eachSeries(function(t){var e=t.get("coordinateSystem");if("geo"===e){var n=t.get("geoIndex")||0;t.coordinateSystem=i[n]}});var r={};return t.eachSeriesByType("map",function(t){if(!t.getHostGeoModel()){var e=t.getMapType();r[e]=r[e]||[],r[e].push(t)}}),s.each(r,function(t,r){var l=u[r],c=s.map(t,function(t){return t.get("nameMap")}),h=new a(r,r,l&&l.geoJson,l&&l.specialAreas,s.mergeAll(c));h.zoomLimit=s.retrieve.apply(null,s.map(t,function(t){return t.get("scaleLimit")})),i.push(h),h.resize=n,h.resize(t[0],e),s.each(t,function(t){t.coordinateSystem=h,o(h,t)})}),i},registerMap:function(t,e,i){e.geoJson&&!e.features&&(i=e.specialAreas,e=e.geoJson),"string"==typeof e&&(e="undefined"!=typeof JSON&&JSON.parse?JSON.parse(e):new Function("return ("+e+");")()),u[t]={geoJson:e,specialAreas:i}},getMap:function(t){return u[t]},getFilledRegions:function(t,e){var i=(t||[]).slice(),n=c.getMap(e),o=n&&n.geoJson;if(!o)return t;for(var a=s.createHashMap(),r=o.features,l=0;l1)for(var i=1;i=0;a--){var r=n[a],s=o[a],l=r[0]-s[0]/2,u=r[1]-s[1]/2;if(t>=l&&e>=u&&t<=l+s[0]&&e<=u+s[1])return a}return-1}}),s=n.prototype;s.updateData=function(t){this.group.removeAll();var e=this._symbolEl,i=t.hostModel;e.setShape({points:t.mapArray(t.getItemLayout),sizes:t.mapArray(function(e){var i=t.getItemVisual(e,"symbolSize");return i instanceof Array||(i=[i,i]),i})}),e.symbolProxy=a.createSymbol(t.getVisual("symbol"),0,0,0,0),e.setColor=e.symbolProxy.setColor,e.useStyle(i.getModel("itemStyle.normal").getItemStyle(["color"]));var n=t.getVisual("color");n&&e.setColor(n),e.seriesIndex=i.seriesIndex,e.on("mousemove",function(t){e.dataIndex=null;var i=e.findDataIndex(t.offsetX,t.offsetY);i>=0&&(e.dataIndex=i)}),this.group.add(e)},s.updateLayout=function(t){var e=t.getData();this._symbolEl.setShape({points:e.mapArray(e.getItemLayout)})},s.remove=function(){this.group.removeAll()},t.exports=n},function(t,e,i){function n(t){return isNaN(+t.cpx1)||isNaN(+t.cpy1)}var o=i(3),a=i(6),r=o.Line.prototype,s=o.BezierCurve.prototype;t.exports=o.extendShape({type:"ec-line",style:{stroke:"#000",fill:null},shape:{x1:0,y1:0,x2:0,y2:0,percent:1,cpx1:null,cpy1:null},buildPath:function(t,e){(n(e)?r:s).buildPath(t,e)},pointAt:function(t){return n(this.shape)?r.pointAt.call(this,t):s.pointAt.call(this,t)},tangentAt:function(t){var e=this.shape,i=n(e)?[e.x2-e.x1,e.y2-e.y1]:s.tangentAt.call(this,t);return a.normalize(i,i)}})},function(t,e,i){var n=i(1),o=i(2);i(192),i(193),o.registerVisual(n.curry(i(50),"scatter","circle",null)),o.registerLayout(n.curry(i(61),"scatter")),i(32)},function(t,e,i){"use strict";var n=i(28),o=i(17);t.exports=o.extend({type:"series.scatter",dependencies:["grid","polar","geo","singleAxis","calendar"],getInitialData:function(t,e){return n(t.data,this,e)},brushSelector:"point",defaultOption:{coordinateSystem:"cartesian2d",zlevel:0,z:2,legendHoverLink:!0,hoverAnimation:!0,symbolSize:10,large:!1,largeThreshold:2e3,itemStyle:{normal:{opacity:.8}}}})},function(t,e,i){var n=i(44),o=i(189);i(2).extendChartView({type:"scatter",init:function(){this._normalSymbolDraw=new n,this._largeSymbolDraw=new o},render:function(t,e,i){var n=t.getData(),o=this._largeSymbolDraw,a=this._normalSymbolDraw,r=this.group,s=t.get("large")&&n.count()>t.get("largeThreshold")?o:a;this._symbolDraw=s,s.updateData(n),r.add(s.group),r.remove(s===o?a.group:o.group)},updateLayout:function(t){this._symbolDraw.updateLayout(t)},remove:function(t,e){this._symbolDraw&&this._symbolDraw.remove(e,!0)},dispose:function(){}})},function(t,e,i){var n=i(2),o=n.extendComponentModel({type:"axisPointer",coordSysAxesInfo:null,defaultOption:{show:"auto",triggerOn:null,zlevel:0,z:50,type:"line",snap:!1,triggerTooltip:!0,value:null,status:null,link:[],animation:null,animationDurationUpdate:200,lineStyle:{color:"#aaa",width:1,type:"solid"},shadowStyle:{color:"rgba(150,150,150,0.3)"},label:{show:!0,formatter:null,precision:"auto",margin:3,textStyle:{color:"#fff"},padding:[5,7,5,7],backgroundColor:"auto",borderColor:null,borderWidth:0,shadowBlur:3,shadowColor:"#aaa"},handle:{show:!1,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",size:45,margin:50,color:"#333",shadowBlur:3,shadowColor:"#aaa",shadowOffsetX:0,shadowOffsetY:2,throttle:40}}});t.exports=o},function(t,e,i){var n=i(122),o=i(2).extendComponentView({type:"axisPointer",render:function(t,e,i){var o=e.getComponent("tooltip"),a=t.get("triggerOn")||o&&o.get("triggerOn")||"mousemove|click";n.register("axisPointer",i,function(t,e,i){"none"!==a&&("leave"===t||a.indexOf(t)>=0)&&i({type:"updateAxisPointer",currTrigger:t,x:e&&e.offsetX,y:e&&e.offsetY})})},remove:function(t,e){n.disopse(e.getZr(),"axisPointer"),o.superApply(this._model,"remove",arguments)},dispose:function(t,e){n.unregister("axisPointer",e),o.superApply(this._model,"dispose",arguments)}})},function(t,e,i){function n(t,e,i){var n=t.currTrigger,a=[t.x,t.y],g=t,m=t.dispatchAction||p.bind(i.dispatchAction,i),_=e.getComponent("axisPointer").coordSysAxesInfo;f(a)&&(a=v({seriesIndex:g.seriesIndex,dataIndex:g.dataIndex},e).point);var b=f(a),w=g.axesInfo,S=_.axesInfo,M="leave"===n||f(a),I={},T={},A={list:[],map:{}},C={showPointer:x(r,T),showTooltip:x(s,A)};y(_.coordSysMap,function(t,e){var i=b||t.containPoint(a);y(_.coordSysAxesInfo[e],function(t,e){var n=t.axis,r=h(w,t);if(!M&&i&&(!w||r)){var s=r&&r.value;null!=s||b||(s=n.pointToData(a)),null!=s&&o(t,s,C,!1,I)}})});var L={};return y(S,function(t,e){var i=t.linkGroup;i&&!T[e]&&y(i.axesInfo,function(e,n){var o=T[n];if(e!==t&&o){var a=o.value;i.mapper&&(a=t.axis.scale.parse(i.mapper(a,d(e),d(t)))),L[t.key]=a}})}),y(L,function(t,e){o(S[e],t,C,!0,I)}),l(T,S,I),u(A,a,t,m),c(S,m,i),I}function o(t,e,i,n,o){var r=t.axis;if(!r.scale.isBlank()&&r.containData(e)){if(!t.involveSeries)return void i.showPointer(t,e);var s=a(e,t),l=s.payloadBatch,u=s.snapToValue;l[0]&&null==o.seriesIndex&&p.extend(o,l[0]),!n&&t.snap&&r.containData(u)&&null!=u&&(e=u),i.showPointer(t,e,l,o),i.showTooltip(t,s,u)}}function a(t,e){var i=e.axis,n=i.dim,o=t,a=[],r=Number.MAX_VALUE,s=-1;return y(e.seriesModels,function(e,l){var u,c,h=e.coordDimToDataDim(n);if(e.getAxisTooltipData){var d=e.getAxisTooltipData(h,t,i);c=d.dataIndices,u=d.nestestValue}else{if(c=e.getData().indicesOfNearest(h[0],t,!1,"category"===i.type?.5:null),!c.length)return;u=e.getData().get(h[0],c[0])}if(null!=u&&isFinite(u)){var f=t-u,p=Math.abs(f);p<=r&&((p=0&&s<0)&&(r=p,s=f,o=u,a.length=0),y(c,function(t){a.push({seriesIndex:e.seriesIndex,dataIndexInside:t,dataIndex:e.getData().getRawIndex(t)})}))}}),{payloadBatch:a,snapToValue:o}}function r(t,e,i,n){t[e.key]={value:i,payloadBatch:n}}function s(t,e,i,n){var o=i.payloadBatch,a=e.axis,r=a.model,s=e.axisPointerModel;if(e.triggerTooltip&&o.length){var l=e.coordSys.model,u=m.makeKey(l),c=t.map[u];c||(c=t.map[u]={coordSysId:l.id,coordSysIndex:l.componentIndex,coordSysType:l.type,coordSysMainType:l.mainType,dataByAxis:[]},t.list.push(c)),c.dataByAxis.push({axisDim:a.dim,axisIndex:r.componentIndex,axisType:r.type,axisId:r.id,value:n,valueLabelOpt:{precision:s.get("label.precision"),formatter:s.get("label.formatter")},seriesDataIndices:o.slice()})}}function l(t,e,i){var n=i.axesInfo=[];y(e,function(e,i){var o=e.axisPointerModel.option,a=t[i];a?(!e.useHandle&&(o.status="show"),o.value=a.value,o.seriesDataIndices=(a.payloadBatch||[]).slice()):!e.useHandle&&(o.status="hide"),"show"===o.status&&n.push({axisDim:e.axis.dim,axisIndex:e.axis.model.componentIndex,value:o.value})})}function u(t,e,i,n){if(f(e)||!t.list.length)return void n({type:"hideTip"});var o=((t.list[0].dataByAxis[0]||{}).seriesDataIndices||[])[0]||{};n({type:"showTip",escapeConnect:!0,x:e[0],y:e[1],tooltipOption:i.tooltipOption,position:i.position,dataIndexInside:o.dataIndexInside,dataIndex:o.dataIndex,seriesIndex:o.seriesIndex,dataByCoordSys:t.list})}function c(t,e,i){var n=i.getZr(),o="axisPointerLastHighlights",a=_(n)[o]||{},r=_(n)[o]={};y(t,function(t,e){var i=t.axisPointerModel.option;"show"===i.status&&y(i.seriesDataIndices,function(t){var e=t.seriesIndex+" | "+t.dataIndex;r[e]=t})});var s=[],l=[];p.each(a,function(t,e){!r[e]&&l.push(t)}),p.each(r,function(t,e){!a[e]&&s.push(t)}),l.length&&i.dispatchAction({type:"downplay",escapeConnect:!0,batch:l}),s.length&&i.dispatchAction({type:"highlight",escapeConnect:!0,batch:s})}function h(t,e){for(var i=0;i<(t||[]).length;i++){var n=t[i];if(e.axis.dim===n.axisDim&&e.axis.model.componentIndex===n.axisIndex)return n}}function d(t){var e=t.axis.model,i={},n=i.axisDim=t.axis.dim;return i.axisIndex=i[n+"AxisIndex"]=e.componentIndex,i.axisName=i[n+"AxisName"]=e.name,i.axisId=i[n+"AxisId"]=e.id,i}function f(t){return!t||null==t[0]||isNaN(t[0])||null==t[1]||isNaN(t[1])}var p=i(1),g=i(5),m=i(45),v=i(121),y=p.each,x=p.curry,_=g.makeGetter();t.exports=n},function(t,e,i){i(126),i(46),i(47),i(203),i(204),i(199),i(200),i(124),i(123)},function(t,e,i){function n(t,e,i){var n=[1/0,-(1/0)];return c(i,function(t){var i=t.getData();i&&c(t.coordDimToDataDim(e),function(t){var e=i.getDataExtent(t);e[0]n[1]&&(n[1]=e[1])})}),n[1]0?0:NaN);var r=i.getMax(!0);return null!=r&&"dataMax"!==r?e[1]=r:o&&(e[1]=a>0?a-1:NaN),i.get("scale",!0)||(e[0]>0&&(e[0]=0),e[1]<0&&(e[1]=0)),e}function a(t,e){var i=t.getAxisModel(),n=t._percentWindow,o=t._valueWindow;if(n){var a=l.getPixelPrecision(o,[0,500]),r=e||0===n[0]&&100===n[1];i.setRange(r?null:+o[0].toFixed(a),r?null:+o[1].toFixed(a))}}function r(t){var e=t._minMaxSpan={},i=t._dataZoomModel;c(["min","max"],function(n){e[n+"Span"]=i.get(n+"Span");var o=i.get(n+"ValueSpan");null!=o&&(e[n+"ValueSpan"]=o,o=t.getAxisModel().axis.scale.parse(o),null!=o&&(e[n+"Span"]=l.linearMap(o,t._dataExtent,[0,100],!0)))})}var s=i(1),l=i(4),u=i(77),c=s.each,h=l.asc,d=function(t,e,i,n){this._dimName=t,this._axisIndex=e,this._valueWindow,this._percentWindow,this._dataExtent,this._minMaxSpan,this.ecModel=n,this._dataZoomModel=i};d.prototype={constructor:d,hostedBy:function(t){return this._dataZoomModel===t},getDataValueWindow:function(){return this._valueWindow.slice()},getDataPercentWindow:function(){return this._percentWindow.slice()},getTargetSeriesModels:function(){var t=[],e=this.ecModel;return e.eachSeries(function(i){if(u.isCoordSupported(i.get("coordinateSystem"))){var n=this._dimName,o=e.queryComponents({mainType:n+"Axis",index:i.get(n+"AxisIndex"),id:i.get(n+"AxisId")})[0];this._axisIndex===(o&&o.componentIndex)&&t.push(i)}},this),t},getAxisModel:function(){return this.ecModel.getComponent(this._dimName+"Axis",this._axisIndex)},getOtherAxisModel:function(){var t,e,i=this._dimName,n=this.ecModel,o=this.getAxisModel(),a="x"===i||"y"===i;a?(e="gridIndex",t="x"===i?"y":"x"):(e="polarIndex",t="angle"===i?"radius":"angle");var r;return n.eachComponent(t+"Axis",function(t){(t.get(e)||0)===(o.get(e)||0)&&(r=t)}),r},getMinMaxSpan:function(){return s.clone(this._minMaxSpan)},calculateDataWindow:function(t){var e=this._dataExtent,i=this.getAxisModel(),n=i.axis.scale,o=this._dataZoomModel.getRangePropMode(),a=[0,100],r=[t.start,t.end],s=[];return c(["startValue","endValue"],function(e){s.push(null!=t[e]?n.parse(t[e]):null)}),c([0,1],function(t){var i=s[t],u=r[t];"percent"===o[t]?(null==u&&(u=a[t]),i=n.parse(l.linearMap(u,a,e,!0))):u=l.linearMap(i,e,a,!0),s[t]=i,r[t]=u}),{valueWindow:h(s),percentWindow:h(r)}},reset:function(t){if(t===this._dataZoomModel){this._dataExtent=n(this,this._dimName,this.getTargetSeriesModels());var e=this.calculateDataWindow(t.option);this._valueWindow=e.valueWindow,this._percentWindow=e.percentWindow,r(this),a(this)}},restore:function(t){t===this._dataZoomModel&&(this._valueWindow=this._percentWindow=null,a(this,!0))},filterData:function(t){function e(t){return t>=a[0]&&t<=a[1]}if(t===this._dataZoomModel){var i=this._dimName,n=this.getTargetSeriesModels(),o=t.get("filterMode"),a=this._valueWindow;if("none"!==o){var r=this.getOtherAxisModel();t.get("$fromToolbox")&&r&&"category"===r.get("type")&&(o="empty"),c(n,function(t){var n=t.getData(),r=t.coordDimToDataDim(i);"weakFilter"===o?n&&n.filterSelf(function(t){for(var e,i,o,s=0;sa[1];if(u&&!c&&!h)return!0;u&&(o=!0),c&&(e=!0),h&&(i=!0)}return o&&e&&i}):n&&c(r,function(i){"empty"===o?t.setData(n.map(i,function(t){return e(t)?t:NaN})):n.filterSelf(i,e)})})}}}},t.exports=d},function(t,e,i){t.exports=i(46).extend({type:"dataZoom.inside",defaultOption:{disabled:!1,zoomLock:!1,zoomOnMouseWheel:!0,moveOnMouseMove:!0,preventDefaultMouseMove:!0}})},function(t,e,i){var n=i(47),o=i(1),a=i(56),r=i(205),s=o.bind,l=n.extend({type:"dataZoom.inside",init:function(t,e){this._range},render:function(t,e,i,n){l.superApply(this,"render",arguments),r.shouldRecordRange(n,t.id)&&(this._range=t.getPercentRange()),o.each(this.getTargetCoordInfo(),function(e,n){var a=o.map(e,function(t){return r.generateCoordId(t.model)});o.each(e,function(e){var o=e.model,l=t.option;r.register(i,{coordId:r.generateCoordId(o),allCoordIds:a,containsPoint:function(t,e,i){return o.coordinateSystem.containPoint([e,i])},dataZoomId:t.id,throttleRate:t.get("throttle",!0),panGetRange:s(this._onPan,this,e,n),zoomGetRange:s(this._onZoom,this,e,n),zoomLock:l.zoomLock,disabled:l.disabled,roamControllerOpt:{zoomOnMouseWheel:l.zoomOnMouseWheel,moveOnMouseMove:l.moveOnMouseMove,preventDefaultMouseMove:l.preventDefaultMouseMove}})},this)},this)},dispose:function(){r.unregister(this.api,this.dataZoomModel.id),l.superApply(this,"dispose",arguments),this._range=null},_onPan:function(t,e,i,n,o,r,s,l,c){var h=this._range.slice(),d=t.axisModels[0];if(d){var f=u[e]([r,s],[l,c],d,i,t),p=f.signal*(h[1]-h[0])*f.pixel/f.pixelLength;return a(p,h,[0,100],"all"),this._range=h}},_onZoom:function(t,e,i,n,o,r){var s=this._range.slice(),l=t.axisModels[0];if(l){var c=u[e](null,[o,r],l,i,t),h=(c.signal>0?c.pixelStart+c.pixelLength-c.pixel:c.pixel-c.pixelStart)/c.pixelLength*(s[1]-s[0])+s[0];n=Math.max(1/n,0),s[0]=(s[0]-h)*n+h,s[1]=(s[1]-h)*n+h;var d=this.dataZoomModel.findRepresentativeAxisProxy().getMinMaxSpan();return a(0,s,[0,100],0,d.minSpan,d.maxSpan),this._range=s}}}),u={grid:function(t,e,i,n,o){var a=i.axis,r={},s=o.model.coordinateSystem.getRect();return t=t||[0,0],"x"===a.dim?(r.pixel=e[0]-t[0],r.pixelLength=s.width,r.pixelStart=s.x,r.signal=a.inverse?1:-1):(r.pixel=e[1]-t[1],r.pixelLength=s.height,r.pixelStart=s.y,r.signal=a.inverse?-1:1),r},polar:function(t,e,i,n,o){var a=i.axis,r={},s=o.model.coordinateSystem,l=s.getRadiusAxis().getExtent(),u=s.getAngleAxis().getExtent();return t=t?s.pointToCoord(t):[0,0],e=s.pointToCoord(e),"radiusAxis"===i.mainType?(r.pixel=e[0]-t[0],r.pixelLength=l[1]-l[0],r.pixelStart=l[0],r.signal=a.inverse?1:-1):(r.pixel=e[1]-t[1],r.pixelLength=u[1]-u[0],r.pixelStart=u[0],r.signal=a.inverse?-1:1),r},singleAxis:function(t,e,i,n,o){var a=i.axis,r=o.model.coordinateSystem.getRect(),s={};return t=t||[0,0],"horizontal"===a.orient?(s.pixel=e[0]-t[0],s.pixelLength=r.width,s.pixelStart=r.x,s.signal=a.inverse?1:-1):(s.pixel=e[1]-t[1],s.pixelLength=r.height,s.pixelStart=r.y,s.signal=a.inverse?-1:1),s}};t.exports=l},function(t,e,i){var n=i(46);t.exports=n.extend({type:"dataZoom.select"})},function(t,e,i){t.exports=i(47).extend({type:"dataZoom.select"})},function(t,e,i){var n=i(46),o=n.extend({type:"dataZoom.slider",layoutMode:"box",defaultOption:{show:!0,right:"ph",top:"ph",width:"ph",height:"ph",left:null,bottom:null,backgroundColor:"rgba(47,69,84,0)",dataBackground:{lineStyle:{color:"#2f4554",width:.5,opacity:.3},areaStyle:{color:"rgba(47,69,84,0.3)",opacity:.3}},borderColor:"#ddd",fillerColor:"rgba(167,183,204,0.4)",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",handleSize:"100%",handleStyle:{color:"#a7b7cc"},labelPrecision:null,labelFormatter:null,showDetail:!0,showDataShadow:"auto",realtime:!0,zoomLock:!1,textStyle:{color:"#333"}}});t.exports=o},function(t,e,i){function n(t){var e={x:"y",y:"x",radius:"angle",angle:"radius"};return e[t]}var o=i(1),a=i(3),r=i(37),s=i(47),l=a.Rect,u=i(4),c=u.linearMap,h=i(12),d=i(56),f=i(21),p=u.asc,g=o.bind,m=o.each,v=7,y=1,x=30,_="horizontal",b="vertical",w=5,S=["line","bar","candlestick","scatter"],M=s.extend({type:"dataZoom.slider",init:function(t,e){this._displayables={},this._orient,this._range,this._handleEnds,this._size,this._handleWidth,this._handleHeight,this._location,this._dragging,this._dataShadowInfo,this.api=e},render:function(t,e,i,n){return M.superApply(this,"render",arguments),r.createOrUpdate(this,"_dispatchZoomAction",this.dataZoomModel.get("throttle"),"fixRate"),this._orient=t.get("orient"),this.dataZoomModel.get("show")===!1?void this.group.removeAll():(n&&"dataZoom"===n.type&&n.from===this.uid||this._buildView(),void this._updateView())},remove:function(){M.superApply(this,"remove",arguments),r.clear(this,"_dispatchZoomAction")},dispose:function(){M.superApply(this,"dispose",arguments),r.clear(this,"_dispatchZoomAction")},_buildView:function(){var t=this.group;t.removeAll(),this._resetLocation(),this._resetInterval();var e=this._displayables.barGroup=new a.Group;this._renderBackground(),this._renderHandle(),this._renderDataShadow(),t.add(e),this._positionGroup()},_resetLocation:function(){var t=this.dataZoomModel,e=this.api,i=this._findCoordRect(),n={width:e.getWidth(),height:e.getHeight()},a=this._orient===_?{right:n.width-i.x-i.width,top:n.height-x-v,width:i.width,height:x}:{right:v,top:i.y,width:x,height:i.height},r=h.getLayoutParams(t.option);o.each(["right","top","width","height"],function(t){"ph"===r[t]&&(r[t]=a[t])});var s=h.getLayoutRect(r,n,t.padding);this._location={x:s.x,y:s.y},this._size=[s.width,s.height],this._orient===b&&this._size.reverse()},_positionGroup:function(){var t=this.group,e=this._location,i=this._orient,n=this.dataZoomModel.getFirstTargetAxisModel(),o=n&&n.get("inverse"),a=this._displayables.barGroup,r=(this._dataShadowInfo||{}).otherAxisInverse;a.attr(i!==_||o?i===_&&o?{scale:r?[-1,1]:[-1,-1]}:i!==b||o?{scale:r?[-1,-1]:[-1,1],rotation:Math.PI/2}:{scale:r?[1,-1]:[1,1],rotation:Math.PI/2}:{scale:r?[1,1]:[1,-1]});var s=t.getBoundingRect([a]);t.attr("position",[e.x-s.x,e.y-s.y])},_getViewExtent:function(){return[0,this._size[0]]},_renderBackground:function(){var t=this.dataZoomModel,e=this._size,i=this._displayables.barGroup;i.add(new l({silent:!0,shape:{x:0,y:0,width:e[0],height:e[1]},style:{fill:t.get("backgroundColor")},z2:-40})),i.add(new l({shape:{x:0,y:0,width:e[0],height:e[1]},style:{fill:"transparent"},z2:0,onclick:o.bind(this._onClickPanelClick,this)}))},_renderDataShadow:function(){var t=this._dataShadowInfo=this._prepareDataShadowInfo();if(t){var e=this._size,i=t.series,n=i.getRawData(),r=i.getShadowDim?i.getShadowDim():t.otherDim;if(null!=r){var s=n.getDataExtent(r),l=.3*(s[1]-s[0]);s=[s[0]-l,s[1]+l];var u,h=[0,e[1]],d=[0,e[0]],f=[[e[0],0],[0,0]],p=[],g=d[1]/(n.count()-1),m=0,v=Math.round(n.count()/e[0]);n.each([r],function(t,e){if(v>0&&e%v)return void(m+=g);var i=null==t||isNaN(t)||""===t,n=i?0:c(t,s,h,!0);i&&!u&&e?(f.push([f[f.length-1][0],0]),p.push([p[p.length-1][0],0])):!i&&u&&(f.push([m,0]),p.push([m,0])),f.push([m,n]),p.push([m,n]),m+=g,u=i});var y=this.dataZoomModel;this._displayables.barGroup.add(new a.Polygon({shape:{points:f},style:o.defaults({fill:y.get("dataBackgroundColor")},y.getModel("dataBackground.areaStyle").getAreaStyle()),silent:!0,z2:-20})),this._displayables.barGroup.add(new a.Polyline({shape:{points:p},style:y.getModel("dataBackground.lineStyle").getLineStyle(),silent:!0,z2:-19}))}}},_prepareDataShadowInfo:function(){var t=this.dataZoomModel,e=t.get("showDataShadow");if(e!==!1){var i,a=this.ecModel;return t.eachTargetAxis(function(r,s){var l=t.getAxisProxy(r.name,s).getTargetSeriesModels();o.each(l,function(t){if(!(i||e!==!0&&o.indexOf(S,t.get("type"))<0)){var l,u=a.getComponent(r.axis,s).axis,c=n(r.name),h=t.coordinateSystem;null!=c&&h.getOtherAxis&&(l=h.getOtherAxis(u).inverse),i={thisAxis:u,series:t,thisDim:r.name,otherDim:c,otherAxisInverse:l}}},this)},this),i}},_renderHandle:function(){var t=this._displayables,e=t.handles=[],i=t.handleLabels=[],n=this._displayables.barGroup,o=this._size,r=this.dataZoomModel;n.add(t.filler=new l({draggable:!0,cursor:"move",drift:g(this._onDragMove,this,"all"),onmousemove:function(t){f.stop(t.event)},ondragstart:g(this._showDataInfo,this,!0),ondragend:g(this._onDragEnd,this),onmouseover:g(this._showDataInfo,this,!0),onmouseout:g(this._showDataInfo,this,!1),style:{fill:r.get("fillerColor"),textPosition:"inside"}})),n.add(new l(a.subPixelOptimizeRect({silent:!0,shape:{x:0,y:0,width:o[0],height:o[1]},style:{stroke:r.get("dataBackgroundColor")||r.get("borderColor"),lineWidth:y,fill:"rgba(0,0,0,0)"}})));var s=r.get("handleIcon");m([0,1],function(t){var o={style:{strokeNoScale:!0},rectHover:!0,cursor:"vertical"===this._orient?"ns-resize":"ew-resize",draggable:!0,drift:g(this._onDragMove,this,t),onmousemove:function(t){f.stop(t.event)},ondragend:g(this._onDragEnd,this),onmouseover:g(this._showDataInfo,this,!0),onmouseout:g(this._showDataInfo,this,!1)},l={x:-1,y:0,width:2,height:2},c=0===s.indexOf("image://")?(l.image=s.slice(8),o.style=l,new a.Image(o)):a.makePath(s.replace("path://",""),o,l,"center"),h=c.getBoundingRect();this._handleHeight=u.parsePercent(r.get("handleSize"),this._size[1]),this._handleWidth=h.width/h.height*this._handleHeight,c.setStyle(r.getModel("handleStyle").getItemStyle());var d=r.get("handleColor");null!=d&&(c.style.fill=d),n.add(e[t]=c);var p=r.textStyleModel;this.group.add(i[t]=new a.Text({silent:!0,invisible:!0,style:{x:0,y:0,text:"",textVerticalAlign:"middle",textAlign:"center",fill:p.getTextColor(),textFont:p.getFont()},z2:10}))},this)},_resetInterval:function(){var t=this._range=this.dataZoomModel.getPercentRange(),e=this._getViewExtent();this._handleEnds=[c(t[0],[0,100],e,!0),c(t[1],[0,100],e,!0)]},_updateInterval:function(t,e){var i=this.dataZoomModel,n=this._handleEnds,o=this._getViewExtent(),a=i.findRepresentativeAxisProxy().getMinMaxSpan(),r=[0,100];d(e,n,o,i.get("zoomLock")?"all":t,null!=a.minSpan?c(a.minSpan,r,o,!0):null,null!=a.maxSpan?c(a.maxSpan,r,o,!0):null),this._range=p([c(n[0],o,r,!0),c(n[1],o,r,!0)])},_updateView:function(t){var e=this._displayables,i=this._handleEnds,n=p(i.slice()),o=this._size;m([0,1],function(t){var n=e.handles[t],a=this._handleHeight;n.attr({scale:[a/2,a/2],position:[i[t],o[1]/2-a/2]})},this),e.filler.setShape({x:n[0],y:0,width:n[1]-n[0],height:o[1]}),this._updateDataInfo(t)},_updateDataInfo:function(t){function e(t){var e=a.getTransform(n.handles[t].parent,this.group),i=a.transformDirection(0===t?"right":"left",e),l=this._handleWidth/2+w,u=a.applyTransform([d[t]+(0===t?-l:l),this._size[1]/2],e);o[t].setStyle({x:u[0],y:u[1],textVerticalAlign:r===_?"middle":i,textAlign:r===_?i:"center",text:s[t]})}var i=this.dataZoomModel,n=this._displayables,o=n.handleLabels,r=this._orient,s=["",""];if(i.get("showDetail")){var l=i.findRepresentativeAxisProxy();if(l){var u=l.getAxisModel().axis,c=this._range,h=t?l.calculateDataWindow({start:c[0],end:c[1]}).valueWindow:l.getDataValueWindow();s=[this._formatLabel(h[0],u),this._formatLabel(h[1],u)]}}var d=p(this._handleEnds.slice());e.call(this,0),e.call(this,1)},_formatLabel:function(t,e){var i=this.dataZoomModel,n=i.get("labelFormatter"),a=i.get("labelPrecision");null!=a&&"auto"!==a||(a=e.getPixelPrecision());var r=null==t||isNaN(t)?"":"category"===e.type||"time"===e.type?e.scale.getLabel(Math.round(t)):t.toFixed(Math.min(a,20));return o.isFunction(n)?n(t,r):o.isString(n)?n.replace("{value}",r):r},_showDataInfo:function(t){t=this._dragging||t;var e=this._displayables.handleLabels;e[0].attr("invisible",!t),e[1].attr("invisible",!t)},_onDragMove:function(t,e,i){this._dragging=!0;var n=this._displayables.barGroup.getLocalTransform(),o=a.applyTransform([e,i],n,!0);this._updateInterval(t,o[0]);var r=this.dataZoomModel.get("realtime");this._updateView(!r),r&&r&&this._dispatchZoomAction()},_onDragEnd:function(){this._dragging=!1,this._showDataInfo(!1),this._dispatchZoomAction()},_onClickPanelClick:function(t){var e=this._size,i=this._displayables.barGroup.transformCoordToLocal(t.offsetX,t.offsetY);if(!(i[0]<0||i[0]>e[0]||i[1]<0||i[1]>e[1])){var n=this._handleEnds,o=(n[0]+n[1])/2;this._updateInterval("all",i[0]-o),this._updateView(),this._dispatchZoomAction()}},_dispatchZoomAction:function(){var t=this._range;this.api.dispatchAction({type:"dataZoom",from:this.uid,dataZoomId:this.dataZoomModel.id,start:t[0],end:t[1]})},_findCoordRect:function(){var t;if(m(this.getTargetCoordInfo(),function(e){if(!t&&e.length){var i=e[0].model.coordinateSystem;t=i.getRect&&i.getRect()}}),!t){var e=this.api.getWidth(),i=this.api.getHeight();t={x:.2*e,y:.2*i,width:.6*e,height:.6*i}}return t}});t.exports=M},function(t,e,i){function n(t){var e=t.getZr();return e[g]||(e[g]={})}function o(t,e){var i=new d(t.getZr());return i.on("pan",p(r,e)),i.on("zoom",p(s,e)),i}function a(t){h.each(t,function(e,i){e.count||(e.controller.dispose(),delete t[i])})}function r(t,e,i,n,o,a,r){l(t,function(s){return s.panGetRange(t.controller,e,i,n,o,a,r)})}function s(t,e,i,n){l(t,function(o){return o.zoomGetRange(t.controller,e,i,n)})}function l(t,e){var i=[];h.each(t.dataZoomInfos,function(t){var n=e(t);!t.disabled&&n&&i.push({dataZoomId:t.dataZoomId,start:n[0],end:n[1]})}),t.dispatchAction(i)}function u(t,e){t.dispatchAction({type:"dataZoom",batch:e})}function c(t){var e,i={},n={"true":2,move:1,"false":0,undefined:-1};return h.each(t,function(t){var o=!t.disabled&&(!t.zoomLock||"move");n[o]>n[e]&&(e=o),h.extend(i,t.roamControllerOpt)}),{controlType:e,opt:i}}var h=i(1),d=i(95),f=i(37),p=h.curry,g="\0_ec_dataZoom_roams",m={register:function(t,e){var i=n(t),r=e.dataZoomId,s=e.coordId;h.each(i,function(t,i){var n=t.dataZoomInfos;n[r]&&h.indexOf(e.allCoordIds,s)<0&&(delete n[r],t.count--)}),a(i);var l=i[s];l||(l=i[s]={coordId:s,dataZoomInfos:{}, +count:0},l.controller=o(t,l),l.dispatchAction=h.curry(u,t)),!l.dataZoomInfos[r]&&l.count++,l.dataZoomInfos[r]=e;var d=c(l.dataZoomInfos);l.controller.enable(d.controlType,d.opt),l.controller.setPointerChecker(e.containsPoint),f.createOrUpdate(l,"dispatchAction",e.throttleRate,"fixRate")},unregister:function(t,e){var i=n(t);h.each(i,function(t){t.controller.dispose();var i=t.dataZoomInfos;i[e]&&(delete i[e],t.count--)}),a(i)},shouldRecordRange:function(t,e){if(t&&"dataZoom"===t.type&&t.batch)for(var i=0,n=t.batch.length;i=0;f--)null==o[f]?o.splice(f,1):delete o[f].$action},_flatten:function(t,e,i){h.each(t,function(t){if(t){i&&(t.parentOption=i),e.push(t);var n=t.children;"group"===t.type&&n&&this._flatten(n,e,t),delete t.children}},this)},useElOptionsToUpdate:function(){var t=this._elOptionsToUpdate;return this._elOptionsToUpdate=null,t}});c.extendComponentView({type:"graphic",init:function(t,e){this._elMap=h.createHashMap(),this._lastGraphicModel},render:function(t,e,i){t!==this._lastGraphicModel&&this._clear(),this._lastGraphicModel=t,this._updateElements(t,i),this._relocate(t,i)},_updateElements:function(t,e){var i=t.useElOptionsToUpdate();if(i){var r=this._elMap,s=this.group;h.each(i,function(t){var e=t.$action,i=t.id,l=r.get(i),u=t.parentId,c=null!=u?r.get(u):s;t.hv&&t.hv[1]&&"text"===t.type&&(t.style=h.defaults({textBaseline:"middle"},t.style),t.style.textVerticalAlign=null);var d=a(t);e&&"merge"!==e?"replace"===e?(o(l,r),n(i,c,d,r)):"remove"===e&&o(l,r):l?l.attr(d):n(i,c,d,r);var f=r.get(i);f&&(f.__ecGraphicWidth=t.width,f.__ecGraphicHeight=t.height)})}},_relocate:function(t,e){for(var i=t.option.elements,n=this.group,o=this._elMap,a=i.length-1;a>=0;a--){var r=i[a],s=o.get(r.id);if(s){var l=s.parent,u=l===n?{width:e.getWidth(),height:e.getHeight()}:{width:l.__ecGraphicWidth||0,height:l.__ecGraphicHeight||0};p.positionElement(s,r,u,null,{hv:r.hv,boundingMode:r.bounding})}}},_clear:function(){var t=this._elMap;t.each(function(e){o(e,t)}),this._elMap=h.createHashMap()},dispose:function(){this._clear()}})},function(t,e,i){i(32),i(120),i(55)},function(t,e,i){i(210),i(212),i(211);var n=i(2);n.registerProcessor(i(213))},function(t,e,i){"use strict";var n=i(1),o=i(10),a=i(2).extendComponentModel({type:"legend",dependencies:["series"],layoutMode:{type:"box",ignoreSize:!0},init:function(t,e,i){this.mergeDefaultAndTheme(t,i),t.selected=t.selected||{}},mergeOption:function(t){a.superCall(this,"mergeOption",t)},optionUpdated:function(){this._updateData(this.ecModel);var t=this._data;if(t[0]&&"single"===this.get("selectedMode")){for(var e=!1,i=0;i=0},defaultOption:{zlevel:0,z:4,show:!0,orient:"horizontal",left:"center",top:"top",align:"auto",backgroundColor:"rgba(0,0,0,0)",borderColor:"#ccc",borderWidth:0,padding:5,itemGap:10,itemWidth:25,itemHeight:14,inactiveColor:"#ccc",textStyle:{color:"#333"},selectedMode:!0,tooltip:{show:!1}}});t.exports=a},function(t,e,i){function n(t,e){e.dispatchAction({type:"legendToggleSelect",name:t})}function o(t,e,i){var n=i.getZr().storage.getDisplayList()[0];n&&n.useHoverLayer||t.get("legendHoverLink")&&i.dispatchAction({type:"highlight",seriesName:t.name,name:e})}function a(t,e,i){var n=i.getZr().storage.getDisplayList()[0];n&&n.useHoverLayer||t.get("legendHoverLink")&&i.dispatchAction({type:"downplay",seriesName:t.name,name:e})}var r=i(1),s=i(24),l=i(3),u=i(130),c=r.curry;t.exports=i(2).extendComponentView({type:"legend",init:function(){this._symbolTypeStore={}},render:function(t,e,i){var s=this.group;if(s.removeAll(),t.get("show")){var h=t.get("selectedMode"),d=t.get("align");"auto"===d&&(d="right"===t.get("left")&&"vertical"===t.get("orient")?"right":"left");var f=r.createHashMap();r.each(t.getData(),function(r){var u=r.get("name");if(""===u||"\n"===u)return void s.add(new l.Group({newline:!0}));var p=e.getSeriesByName(u)[0];if(!f.get(u))if(p){var g=p.getData(),m=g.getVisual("color");"function"==typeof m&&(m=m(p.getDataParams(0)));var v=g.getVisual("legendSymbol")||"roundRect",y=g.getVisual("symbol"),x=this._createItem(u,r,t,v,y,d,m,h);x.on("click",c(n,u,i)).on("mouseover",c(o,p,null,i)).on("mouseout",c(a,p,null,i)),f.set(u,!0)}else e.eachRawSeries(function(e){if(!f.get(u)&&e.legendDataProvider){var s=e.legendDataProvider(),l=s.indexOfName(u);if(l<0)return;var p=s.getItemVisual(l,"color"),g="roundRect",m=this._createItem(u,r,t,g,null,d,p,h);m.on("click",c(n,u,i)).on("mouseover",c(o,e,u,i)).on("mouseout",c(a,e,u,i)),f.set(u,!0)}},this)},this),u.layout(s,t,i),u.addBackground(s,t)}},_createItem:function(t,e,i,n,o,a,u,c){var h=i.get("itemWidth"),d=i.get("itemHeight"),f=i.get("inactiveColor"),p=i.isSelected(t),g=new l.Group,m=e.getModel("textStyle"),v=e.get("icon"),y=e.getModel("tooltip"),x=y.parentModel;if(n=v||n,g.add(s.createSymbol(n,0,0,h,d,p?u:f)),!v&&o&&(o!==n||"none"==o)){var _=.8*d;"none"===o&&(o="circle"),g.add(s.createSymbol(o,(h-_)/2,(d-_)/2,_,_,p?u:f))}var b="left"===a?h+5:-5,w=a,S=i.get("formatter"),M=t;"string"==typeof S&&S?M=S.replace("{name}",null!=t?t:""):"function"==typeof S&&(M=S(t));var I=new l.Text({style:{text:M,x:b,y:d/2,fill:p?m.getTextColor():f,textFont:m.getFont(),textAlign:w,textVerticalAlign:"middle"}});g.add(I);var T=new l.Rect({shape:g.getBoundingRect(),invisible:!0,tooltip:y.get("show")?r.extend({content:t,formatter:x.get("formatter",!0)||function(){return t},formatterParams:{componentType:"legend",legendIndex:i.componentIndex,name:t,$vars:["name"]}},y.option):null});return g.add(T),g.eachChild(function(t){t.silent=!0}),T.silent=!c,this.group.add(g),l.setHoverStyle(g),g}})},function(t,e,i){function n(t,e,i){var n,o={},r="toggleSelected"===t;return i.eachComponent("legend",function(i){r&&null!=n?i[n?"select":"unSelect"](e.name):(i[t](e.name),n=i.isSelected(e.name));var s=i.getData();a.each(s,function(t){var e=t.get("name");if("\n"!==e&&""!==e){var n=i.isSelected(e);o.hasOwnProperty(e)?o[e]=o[e]&&n:o[e]=n}})}),{name:e.name,selected:o}}var o=i(2),a=i(1);o.registerAction("legendToggleSelect","legendselectchanged",a.curry(n,"toggleSelected")),o.registerAction("legendSelect","legendselected",a.curry(n,"select")),o.registerAction("legendUnSelect","legendunselected",a.curry(n,"unSelect"))},function(t,e){t.exports=function(t){var e=t.findComponents({mainType:"legend"});e&&e.length&&t.filterSeries(function(t){for(var i=0;i=0&&"number"==typeof u&&(u=+u.toFixed(m)),p.coord[d]=g.coord[d]=u,n=[p,g,{type:a,valueIndex:n.valueIndex,value:u}]}return n=[h.dataTransform(t,n[0]),h.dataTransform(t,n[1]),l.extend({},n[2])],n[2].type=n[2].type||"",l.merge(n[2],n[0]),l.merge(n[2],n[1]),n};i(80).extend({type:"markLine",updateLayout:function(t,e,i){e.eachSeries(function(t){var e=t.markLineModel;if(e){var n=e.getData(),o=e.__from,a=e.__to;o.each(function(e){r(o,e,!0,t,i),r(a,e,!1,t,i)}),n.each(function(t){n.setItemLayout(t,[o.getItemLayout(t),a.getItemLayout(t)])}),this.markerGroupMap.get(t.id).updateLayout()}},this)},renderSeries:function(t,e,i,n){function o(e,i,o){var a=e.getItemModel(i);r(e,i,o,t,n),e.setItemVisual(i,{symbolSize:a.get("symbolSize")||x[o?0:1],symbol:a.get("symbol",!0)||y[o?0:1],color:a.get("itemStyle.normal.color")||c.getVisual("color")})}var a=t.coordinateSystem,u=t.id,c=t.getData(),h=this.markerGroupMap,f=h.get(u)||h.set(u,new d);this.group.add(f.group);var p=s(a,t,e),g=p.from,m=p.to,v=p.line;e.__from=g,e.__to=m,e.setData(v);var y=e.get("symbol"),x=e.get("symbolSize");l.isArray(y)||(y=[y,y]),"number"==typeof x&&(x=[x,x]),p.from.each(function(t){o(g,t,!0),o(m,t,!1)}),v.each(function(t){var e=v.getItemModel(t).get("lineStyle.normal.color");v.setItemVisual(t,{color:e||g.getItemVisual(t,"color")}),v.setItemLayout(t,[g.getItemLayout(t),m.getItemLayout(t)]),v.setItemVisual(t,{fromSymbolSize:g.getItemVisual(t,"symbolSize"),fromSymbol:g.getItemVisual(t,"symbol"),toSymbolSize:m.getItemVisual(t,"symbolSize"),toSymbol:m.getItemVisual(t,"symbol")})}),f.updateData(v),p.line.eachItemGraphicEl(function(t,i){t.traverse(function(t){t.dataModel=e})}),f.__keep=!0,f.group.silent=e.get("silent")||t.get("silent")}})},function(t,e,i){t.exports=i(79).extend({type:"markPoint",defaultOption:{zlevel:0,z:5,symbol:"pin",symbolSize:50,tooltip:{trigger:"item"},label:{normal:{show:!0,position:"inside"},emphasis:{show:!0}},itemStyle:{normal:{borderWidth:2}}}})},function(t,e,i){function n(t,e,i){var n=e.coordinateSystem;t.each(function(o){var a,r=t.getItemModel(o),l=s.parsePercent(r.get("x"),i.getWidth()),u=s.parsePercent(r.get("y"),i.getHeight());if(isNaN(l)||isNaN(u)){if(e.getMarkerPosition)a=e.getMarkerPosition(t.getValues(t.dimensions,o));else if(n){var c=t.get(n.dimensions[0],o),h=t.get(n.dimensions[1],o);a=n.dataToPoint([c,h])}}else a=[l,u];isNaN(l)||(a[0]=l),isNaN(u)||(a[1]=u),t.setItemLayout(o,a)})}function o(t,e,i){var n;n=t?r.map(t&&t.dimensions,function(t){var i=e.getData().getDimensionInfo(e.coordDimToDataDim(t)[0])||{};return i.name=t,i}):[{name:"value",type:"float"}];var o=new l(n,i),a=r.map(i.get("data"),r.curry(u.dataTransform,e));return t&&(a=r.filter(a,r.curry(u.dataFilter,t))),o.initData(a,null,t?u.dimValueGetter:function(t){return t.value}),o}var a=i(44),r=i(1),s=i(4),l=i(14),u=i(81);i(80).extend({type:"markPoint",updateLayout:function(t,e,i){e.eachSeries(function(t){var e=t.markPointModel;e&&(n(e.getData(),t,i),this.markerGroupMap.get(t.id).updateLayout(e))},this)},renderSeries:function(t,e,i,r){var s=t.coordinateSystem,l=t.id,u=t.getData(),c=this.markerGroupMap,h=c.get(l)||c.set(l,new a),d=o(s,t,e);e.setData(d),n(e.getData(),t,r),d.each(function(t){var i=d.getItemModel(t),n=i.getShallow("symbolSize");"function"==typeof n&&(n=n(e.getRawValue(t),e.getDataParams(t))),d.setItemVisual(t,{symbolSize:n,color:i.get("itemStyle.normal.color")||u.getVisual("color"),symbol:i.getShallow("symbol")})}),h.updateData(d),this.group.add(h.group),d.eachItemGraphicEl(function(t){t.traverse(function(t){t.dataModel=e})}),h.__keep=!0,h.group.silent=e.get("silent")||t.get("silent")}})},function(t,e,i){"use strict";var n=i(2),o=i(3),a=i(12);n.extendComponentModel({type:"title",layoutMode:{type:"box",ignoreSize:!0},defaultOption:{zlevel:0,z:6,show:!0,text:"",target:"blank",subtext:"",subtarget:"blank",left:0,top:0,backgroundColor:"rgba(0,0,0,0)",borderColor:"#ccc",borderWidth:0,padding:5,itemGap:10,textStyle:{fontSize:18,fontWeight:"bolder",color:"#333"},subtextStyle:{color:"#aaa"}}}),n.extendComponentView({type:"title",render:function(t,e,i){if(this.group.removeAll(),t.get("show")){var n=this.group,r=t.getModel("textStyle"),s=t.getModel("subtextStyle"),l=t.get("textAlign"),u=t.get("textBaseline"),c=new o.Text({style:{text:t.get("text"),textFont:r.getFont(),fill:r.getTextColor()},z2:10}),h=c.getBoundingRect(),d=t.get("subtext"),f=new o.Text({style:{text:d,textFont:s.getFont(),fill:s.getTextColor(),y:h.height+t.get("itemGap"),textBaseline:"top"},z2:10}),p=t.get("link"),g=t.get("sublink");c.silent=!p,f.silent=!g,p&&c.on("click",function(){window.open(p,"_"+t.get("target"))}),g&&f.on("click",function(){window.open(g,"_"+t.get("subtarget"))}),n.add(c),d&&n.add(f);var m=n.getBoundingRect(),v=t.getBoxLayoutParams();v.width=m.width,v.height=m.height;var y=a.getLayoutRect(v,{width:i.getWidth(),height:i.getHeight()},t.get("padding"));l||(l=t.get("left")||t.get("right"),"middle"===l&&(l="center"),"right"===l?y.x+=y.width:"center"===l&&(y.x+=y.width/2)),u||(u=t.get("top")||t.get("bottom"),"center"===u&&(u="middle"),"bottom"===u?y.y+=y.height:"middle"===u&&(y.y+=y.height/2),u=u||"top"),n.attr("position",[y.x,y.y]);var x={textAlign:l,textVerticalAlign:u};c.setStyle(x),f.setStyle(x),m=n.getBoundingRect();var _=y.margin,b=t.getItemStyle(["color","opacity"]);b.fill=t.get("backgroundColor");var w=new o.Rect({shape:{x:m.x-_[3],y:m.y-_[0],width:m.width+_[1]+_[3],height:m.height+_[0]+_[2]},style:b,silent:!0});o.subPixelOptimizeRect(w),n.add(w)}}})},function(t,e,i){i(225),i(226),i(231),i(229),i(227),i(228),i(230)},function(t,e,i){var n=i(29),o=i(1),a=i(2).extendComponentModel({type:"toolbox",layoutMode:{type:"box",ignoreSize:!0},mergeDefaultAndTheme:function(t){a.superApply(this,"mergeDefaultAndTheme",arguments),o.each(this.option.feature,function(t,e){var i=n.get(e);i&&o.merge(t,i.defaultOption)})},defaultOption:{show:!0,z:6,zlevel:0,orient:"horizontal",left:"right",top:"top",backgroundColor:"transparent",borderColor:"#ccc",borderWidth:0,padding:5,itemSize:15,itemGap:8,showTitle:!0,iconStyle:{normal:{borderColor:"#666",color:"none"},emphasis:{borderColor:"#3E98C5"}}}});t.exports=a},function(t,e,i){(function(e){function n(t){return 0===t.indexOf("my")}var o=i(29),a=i(1),r=i(3),s=i(10),l=i(48),u=i(130),c=i(16);t.exports=i(2).extendComponentView({type:"toolbox",render:function(t,e,i,h){function d(a,r){var l,u=y[a],c=y[r],d=m[u],p=new s(d,t,t.ecModel);if(u&&!c){if(n(u))l={model:p,onclick:p.option.onclick,featureName:u};else{var g=o.get(u);if(!g)return;l=new g(p,e,i)}v[u]=l}else{if(l=v[c],!l)return;l.model=p,l.ecModel=e,l.api=i}return!u&&c?void(l.dispose&&l.dispose(e,i)):!p.get("show")||l.unusable?void(l.remove&&l.remove(e,i)):(f(p,l,u),p.setIconStatus=function(t,e){var i=this.option,n=this.iconPaths;i.iconStatus=i.iconStatus||{},i.iconStatus[t]=e,n[t]&&n[t].trigger(e)},void(l.render&&l.render(p,e,i,h)))}function f(n,o,s){var l=n.getModel("iconStyle"),u=o.getIcons?o.getIcons():n.get("icon"),c=n.get("title")||{};if("string"==typeof u){var h=u,d=c;u={},c={},u[s]=h,c[s]=d}var f=n.iconPaths={};a.each(u,function(s,u){var h=l.getModel("normal").getItemStyle(),d=l.getModel("emphasis").getItemStyle(),m={x:-g/2,y:-g/2,width:g,height:g},v=0===s.indexOf("image://")?(m.image=s.slice(8),new r.Image({style:m})):r.makePath(s.replace("path://",""),{style:h,hoverStyle:d,rectHover:!0},m,"center");r.setHoverStyle(v),t.get("showTitle")&&(v.__title=c[u],v.on("mouseover",function(){var t=l.getModel("emphasis").getItemStyle();v.setStyle({text:c[u],textPosition:t.textPosition||"bottom",textFill:t.fill||t.stroke||"#000",textAlign:t.textAlign||"center"})}).on("mouseout",function(){v.setStyle({textFill:null})})),v.trigger(n.get("iconStatus."+u)||"normal"),p.add(v),v.on("click",a.bind(o.onclick,o,e,i,u)),f[u]=v})}var p=this.group;if(p.removeAll(),t.get("show")){var g=+t.get("itemSize"),m=t.get("feature")||{},v=this._features||(this._features={}),y=[];a.each(m,function(t,e){y.push(e)}),new l(this._featureNames||[],y).add(d).update(d).remove(a.curry(d,null)).execute(),this._featureNames=y,u.layout(p,t,i),u.addBackground(p,t),p.eachChild(function(t){var e=t.__title,n=t.hoverStyle;if(n&&e){var o=c.getBoundingRect(e,n.font),a=t.position[0]+p.position[0],r=t.position[1]+p.position[1]+g,s=!1;r+o.height>i.getHeight()&&(n.textPosition="top",s=!0);var l=s?-5-o.height:g+8;a+o.width/2>i.getWidth()?(n.textPosition=["100%",l],n.textAlign="right"):a-o.width/2<0&&(n.textPosition=[0,l],n.textAlign="left")}})}},updateView:function(t,e,i,n){a.each(this._features,function(t){t.updateView&&t.updateView(t.model,e,i,n)})},updateLayout:function(t,e,i,n){a.each(this._features,function(t){t.updateLayout&&t.updateLayout(t.model,e,i,n)})},remove:function(t,e){a.each(this._features,function(i){i.remove&&i.remove(t,e)}),this.group.removeAll()},dispose:function(t,e){a.each(this._features,function(i){i.dispose&&i.dispose(t,e)})}})}).call(e,i(188))},function(t,e,i){function n(t){var e={},i=[],n=[];return t.eachRawSeries(function(t){var o=t.coordinateSystem;if(!o||"cartesian2d"!==o.type&&"polar"!==o.type)i.push(t);else{var a=o.getBaseAxis();if("category"===a.type){var r=a.dim+"_"+a.index;e[r]||(e[r]={categoryAxis:a,valueAxis:o.getOtherAxis(a),series:[]},n.push({axisDim:a.dim,axisIndex:a.index})),e[r].series.push(t)}else i.push(t)}}),{seriesGroupByCategoryAxis:e,other:i,meta:n}}function o(t){var e=[];return p.each(t,function(t,i){var n=t.categoryAxis,o=t.valueAxis,a=o.dim,r=[" "].concat(p.map(t.series,function(t){return t.name})),s=[n.model.getCategories()];p.each(t.series,function(t){s.push(t.getRawData().mapArray(a,function(t){return t}))});for(var l=[r.join(v)],u=0;u=0)return!0}function u(t){for(var e=t.split(/\n+/g),i=s(e.shift()).split(y),n=[],o=p.map(i,function(t){return{name:t,data:[]}}),a=0;a1?"emphasis":"normal")}function r(t,e,i,n,a){var r=i._isZoomActive;n&&"takeGlobalCursor"===n.type&&(r="dataZoomSelect"===n.key&&n.dataZoomSelectActive),i._isZoomActive=r,t.setIconStatus("zoom",r?"emphasis":"normal");var s=new u(o(t.option),e,{include:["grid"]});i._brushController.setPanels(s.makePanelOpts(a,function(t){return t.xAxisDeclared&&!t.yAxisDeclared?"lineX":!t.xAxisDeclared&&t.yAxisDeclared?"lineY":"rect"})).enableBrush(!!r&&{brushType:"auto",brushStyle:{lineWidth:0,fill:"rgba(0,0,0,0.2)"}})}var s=i(1),l=i(127),u=i(184),c=i(125),h=i(56),d=s.each;i(206);var f="\0_ec_\0toolbox-dataZoom_";n.defaultOption={show:!0,icon:{zoom:"M0,13.5h26.9 M13.5,26.9V0 M32.1,13.5H58V58H13.5 V32.1",back:"M22,1.4L9.9,13.5l12.3,12.3 M10.3,13.5H54.9v44.6 H10.3v-26"},title:{zoom:"区域缩放",back:"区域缩放还原"}};var p=n.prototype;p.render=function(t,e,i,n){this.model=t,this.ecModel=e,this.api=i,r(t,e,this,n,i),a(t,e)},p.onclick=function(t,e,i){g[i].call(this)},p.remove=function(t,e){this._brushController.unmount()},p.dispose=function(t,e){this._brushController.dispose()};var g={zoom:function(){var t=!this._isZoomActive;this.api.dispatchAction({type:"takeGlobalCursor",key:"dataZoomSelect",dataZoomSelectActive:t})},back:function(){this._dispatchZoomAction(c.pop(this.ecModel))}};p._onBrush=function(t,e){function i(t,e,i){var o=e.getAxis(t),s=o.model,l=n(t,s,r),u=l.findRepresentativeAxisProxy(s).getMinMaxSpan(); +null==u.minValueSpan&&null==u.maxValueSpan||(i=h(0,i.slice(),o.scale.getExtent(),0,u.minValueSpan,u.maxValueSpan)),l&&(a[l.id]={dataZoomId:l.id,startValue:i[0],endValue:i[1]})}function n(t,e,i){var n;return i.eachComponent({mainType:"dataZoom",subType:"select"},function(i){var o=i.getAxisModel(t,e.componentIndex);o&&(n=i)}),n}if(e.isEnd&&t.length){var a={},r=this.ecModel;this._brushController.updateCovers([]);var s=new u(o(this.model.option),r,{include:["grid"]});s.matchOutputRanges(t,r,function(t,e,n){if("cartesian2d"===n.type){var o=t.brushType;"rect"===o?(i("x",n,e[0]),i("y",n,e[1])):i({lineX:"x",lineY:"y"}[o],n,e)}}),c.push(r,a),this._dispatchZoomAction(a)}},p._dispatchZoomAction=function(t){var e=[];d(t,function(t,i){e.push(s.clone(t))}),e.length&&this.api.dispatchAction({type:"dataZoom",from:this.uid,batch:e})},i(29).register("dataZoom",n),i(2).registerPreprocessor(function(t){function e(t,e){if(e){var o=t+"Index",a=e[o];null==a||"all"==a||s.isArray(a)||(a=a===!1||"none"===a?[]:[a]),i(t,function(e,i){if(null==a||"all"==a||s.indexOf(a,i)!==-1){var r={type:"select",$fromToolbox:!0,id:f+t+i};r[o]=i,n.push(r)}})}}function i(e,i){var n=t[e];s.isArray(n)||(n=n?[n]:[]),d(n,i)}if(t){var n=t.dataZoom||(t.dataZoom=[]);s.isArray(n)||(t.dataZoom=n=[n]);var o=t.toolbox;if(o&&(s.isArray(o)&&(o=o[0]),o&&o.feature)){var a=o.feature.dataZoom;e("xAxis",a),e("yAxis",a)}}}),t.exports=n},function(t,e,i){"use strict";function n(t){this.model=t}var o=i(1);n.defaultOption={show:!0,type:[],icon:{line:"M4.1,28.9h7.1l9.3-22l7.4,38l9.7-19.7l3,12.8h14.9M4.1,58h51.4",bar:"M6.7,22.9h10V48h-10V22.9zM24.9,13h10v35h-10V13zM43.2,2h10v46h-10V2zM3.1,58h53.7",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",tiled:"M2.3,2.2h22.8V25H2.3V2.2z M35,2.2h22.8V25H35V2.2zM2.3,35h22.8v22.8H2.3V35z M35,35h22.8v22.8H35V35z"},title:{line:"切换为折线图",bar:"切换为柱状图",stack:"切换为堆叠",tiled:"切换为平铺"},option:{},seriesIndex:{}};var a=n.prototype;a.getIcons=function(){var t=this.model,e=t.get("icon"),i={};return o.each(t.get("type"),function(t){e[t]&&(i[t]=e[t])}),i};var r={line:function(t,e,i,n){if("bar"===t)return o.merge({id:e,type:"line",data:i.get("data"),stack:i.get("stack"),markPoint:i.get("markPoint"),markLine:i.get("markLine")},n.get("option.line")||{},!0)},bar:function(t,e,i,n){if("line"===t)return o.merge({id:e,type:"bar",data:i.get("data"),stack:i.get("stack"),markPoint:i.get("markPoint"),markLine:i.get("markLine")},n.get("option.bar")||{},!0)},stack:function(t,e,i,n){if("line"===t||"bar"===t)return o.merge({id:e,stack:"__ec_magicType_stack__"},n.get("option.stack")||{},!0)},tiled:function(t,e,i,n){if("line"===t||"bar"===t)return o.merge({id:e,stack:""},n.get("option.tiled")||{},!0)}},s=[["line","bar"],["stack","tiled"]];a.onclick=function(t,e,i){var n=this.model,a=n.get("seriesIndex."+i);if(r[i]){var l={series:[]},u=function(e){var a=e.subType,s=e.id,u=r[i](a,s,e,n);u&&(o.defaults(u,e.option),l.series.push(u));var c=e.coordinateSystem;if(c&&"cartesian2d"===c.type&&("line"===i||"bar"===i)){var h=c.getAxesByScale("ordinal")[0];if(h){var d=h.dim,f=d+"Axis",p=t.queryComponents({mainType:f,index:e.get(name+"Index"),id:e.get(name+"Id")})[0],g=p.componentIndex;l[f]=l[f]||[];for(var m=0;m<=g;m++)l[f][g]=l[f][g]||{};l[f][g].boundaryGap="bar"===i}}};o.each(s,function(t){o.indexOf(t,i)>=0&&o.each(t,function(t){n.setIconStatus(t,"normal")})}),n.setIconStatus(i,"emphasis"),t.eachComponent({mainType:"series",query:null==a?null:{seriesIndex:a}},u),e.dispatchAction({type:"changeMagicType",currentType:i,newOption:l})}};var l=i(2);l.registerAction({type:"changeMagicType",event:"magicTypeChanged",update:"prepareAndUpdate"},function(t,e){e.mergeOption(t.newOption)}),i(29).register("magicType",n),t.exports=n},function(t,e,i){"use strict";function n(t){this.model=t}var o=i(125);n.defaultOption={show:!0,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",title:"还原"};var a=n.prototype;a.onclick=function(t,e,i){o.clear(t),e.dispatchAction({type:"restore",from:this.uid})},i(29).register("restore",n),i(2).registerAction({type:"restore",event:"restore",update:"prepareAndUpdate"},function(t,e){e.resetOption("recreate")}),t.exports=n},function(t,e,i){function n(t){this.model=t}var o=i(9);n.defaultOption={show:!0,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",title:"保存为图片",type:"png",name:"",excludeComponents:["toolbox"],pixelRatio:1,lang:["右键另存为图片"]},n.prototype.unusable=!o.canvasSupported;var a=n.prototype;a.onclick=function(t,e){var i=this.model,n=i.get("name")||t.get("title.0.text")||"echarts",a=document.createElement("a"),r=i.get("type",!0)||"png";a.download=n+"."+r,a.target="_blank";var s=e.getConnectedDataURL({type:r,backgroundColor:i.get("backgroundColor",!0)||t.get("backgroundColor")||"#fff",excludeComponents:i.get("excludeComponents"),pixelRatio:i.get("pixelRatio")});if(a.href=s,"function"!=typeof MouseEvent||o.browser.ie||o.browser.edge){var l=i.get("lang"),u='',c=window.open();c.document.write(u)}else{var h=new MouseEvent("click",{view:window,bubbles:!0,cancelable:!1});a.dispatchEvent(h)}},i(29).register("saveAsImage",n),t.exports=n},function(t,e,i){i(55),i(234),i(235),i(2).registerAction({type:"showTip",event:"showTip",update:"tooltip:manuallyShowTip"},function(){}),i(2).registerAction({type:"hideTip",event:"hideTip",update:"tooltip:manuallyHideTip"},function(){})},function(t,e,i){function n(t){var e="cubic-bezier(0.23, 1, 0.32, 1)",i="left "+t+"s "+e+",top "+t+"s "+e;return s.map(p,function(t){return t+"transition:"+i}).join(";")}function o(t){var e=[],i=t.get("fontSize"),n=t.getTextColor();return n&&e.push("color:"+n),e.push("font:"+t.getFont()),i&&e.push("line-height:"+Math.round(3*i/2)+"px"),h(["decoration","align"],function(i){var n=t.get(i);n&&e.push("text-"+i+":"+n)}),e.join(";")}function a(t){var e=[],i=t.get("transitionDuration"),a=t.get("backgroundColor"),r=t.getModel("textStyle"),s=t.get("padding");return i&&e.push(n(i)),a&&(f.canvasSupported?e.push("background-Color:"+a):(e.push("background-Color:#"+l.toHex(a)),e.push("filter:alpha(opacity=70)"))),h(["width","color","radius"],function(i){var n="border-"+i,o=d(n),a=t.get(o);null!=a&&e.push(n+":"+a+("color"===i?"":"px"))}),e.push(o(r)),null!=s&&e.push("padding:"+c.normalizeCssArray(s).join("px ")+"px"),e.join(";")+";"}function r(t,e){var i=document.createElement("div"),n=this._zr=e.getZr();this.el=i,this._x=e.getWidth()/2,this._y=e.getHeight()/2,t.appendChild(i),this._container=t,this._show=!1,this._hideTimeout;var o=this;i.onmouseenter=function(){o._enterable&&(clearTimeout(o._hideTimeout),o._show=!0),o._inContent=!0},i.onmousemove=function(e){if(e=e||window.event,!o._enterable){var i=n.handler;u.normalizeEvent(t,e,!0),i.dispatch("mousemove",e)}},i.onmouseleave=function(){o._enterable&&o._show&&o.hideLater(o._hideDelay),o._inContent=!1}}var s=i(1),l=i(22),u=i(21),c=i(7),h=s.each,d=c.toCamelCase,f=i(9),p=["","-webkit-","-moz-","-o-"],g="position:absolute;display:block;border-style:solid;white-space:nowrap;z-index:9999999;";r.prototype={constructor:r,_enterable:!0,update:function(){var t=this._container,e=t.currentStyle||document.defaultView.getComputedStyle(t),i=t.style;"absolute"!==i.position&&"absolute"!==e.position&&(i.position="relative")},show:function(t){clearTimeout(this._hideTimeout);var e=this.el;e.style.cssText=g+a(t)+";left:"+this._x+"px;top:"+this._y+"px;"+(t.get("extraCssText")||""),e.style.display=e.innerHTML?"block":"none",this._show=!0},setContent:function(t){this.el.innerHTML=null==t?"":t},setEnterable:function(t){this._enterable=t},getSize:function(){var t=this.el;return[t.clientWidth,t.clientHeight]},moveTo:function(t,e){var i,n=this._zr;n&&n.painter&&(i=n.painter.getViewportRoot())&&(t+=i.offsetLeft||0,e+=i.offsetTop||0);var o=this.el.style;o.left=t+"px",o.top=e+"px",this._x=t,this._y=e},hide:function(){this.el.style.display="none",this._show=!1},hideLater:function(t){!this._show||this._inContent&&this._enterable||(t?(this._hideDelay=t,this._show=!1,this._hideTimeout=setTimeout(s.bind(this.hide,this),t)):this.hide())},isShow:function(){return this._show}},t.exports=r},function(t,e,i){i(2).extendComponentModel({type:"tooltip",dependencies:["axisPointer"],defaultOption:{zlevel:0,z:8,show:!0,showContent:!0,trigger:"item",triggerOn:"mousemove|click",alwaysShowContent:!1,displayMode:"single",confine:!1,showDelay:0,hideDelay:100,transitionDuration:.4,enterable:!1,backgroundColor:"rgba(50,50,50,0.7)",borderColor:"#333",borderRadius:4,borderWidth:0,padding:5,extraCssText:"",axisPointer:{type:"line",axis:"auto",animation:"auto",animationDurationUpdate:200,animationEasingUpdate:"exponentialOut",crossStyle:{color:"#999",width:1,type:"dashed",textStyle:{}}},textStyle:{color:"#fff",fontSize:14}}})},function(t,e,i){function n(t){for(var e=t.pop();t.length;){var i=t.pop();i&&(i instanceof v&&(i=i.get("tooltip",!0)),"string"==typeof i&&(i={formatter:i}),e=new v(i,e,e.ecModel))}return e}function o(t,e){return t.dispatchAction||c.bind(e.dispatchAction,e)}function a(t,e,i,n,o,a,r){var s=i.clientWidth,l=i.clientHeight;return null!=a&&(t+s+a>n?t-=s+a:t+=a),null!=r&&(e+l+r>o?e-=l+r:e+=r),[t,e]}function r(t,e,i,n,o){var a=i.clientWidth,r=i.clientHeight;return t=Math.min(t+a,n)-a,e=Math.min(e+r,o)-r,t=Math.max(t,0),e=Math.max(e,0),[t,e]}function s(t,e,i){var n=i[0],o=i[1],a=5,r=0,s=0,l=e.width,u=e.height;switch(t){case"inside":r=e.x+l/2-n/2,s=e.y+u/2-o/2;break;case"top":r=e.x+l/2-n/2,s=e.y-o-a;break;case"bottom":r=e.x+l/2-n/2,s=e.y+u+a;break;case"left":r=e.x-n-a,s=e.y+u/2-o/2;break;case"right":r=e.x+l+a,s=e.y+u/2-o/2}return[r,s]}function l(t){return"center"===t||"middle"===t}var u=i(233),c=i(1),h=i(7),d=i(4),f=i(3),p=i(121),g=i(12),m=i(9),v=i(10),y=i(122),x=i(18),_=i(76),b=c.bind,w=c.each,S=d.parsePercent,M=new f.Rect({shape:{x:-1,y:-1,width:2,height:2}});i(2).extendComponentView({type:"tooltip",init:function(t,e){if(!m.node){var i=new u(e.getDom(),e);this._tooltipContent=i}},render:function(t,e,i){if(!m.node){this.group.removeAll(),this._tooltipModel=t,this._ecModel=e,this._api=i,this._lastDataByCoordSys=null,this._alwaysShowContent=t.get("alwaysShowContent");var n=this._tooltipContent;n.update(),n.setEnterable(t.get("enterable")),this._initGlobalListener(),this._keepShow()}},_initGlobalListener:function(){var t=this._tooltipModel,e=t.get("triggerOn");y.register("itemTooltip",this._api,b(function(t,i,n){"none"!==e&&(e.indexOf(t)>=0?this._tryShow(i,n):"leave"===t&&this._hide(n))},this))},_keepShow:function(){var t=this._tooltipModel,e=this._ecModel,i=this._api;if(null!=this._lastX&&null!=this._lastY&&"none"!==t.get("triggerOn")){var n=this;clearTimeout(this._refreshUpdateTimeout),this._refreshUpdateTimeout=setTimeout(function(){n.manuallyShowTip(t,e,i,{x:n._lastX,y:n._lastY})})}},manuallyShowTip:function(t,e,i,n){if(n.from!==this.uid&&!m.node){var a=o(n,i);this._ticket="";var r=n.dataByCoordSys;if(n.tooltip&&null!=n.x&&null!=n.y){var s=M;s.position=[n.x,n.y],s.update(),s.tooltip=n.tooltip,this._tryShow({offsetX:n.x,offsetY:n.y,target:s},a)}else if(r)this._tryShow({offsetX:n.x,offsetY:n.y,position:n.position,event:{},dataByCoordSys:n.dataByCoordSys,tooltipOption:n.tooltipOption},a);else if(null!=n.seriesIndex){if(this._manuallyAxisShowTip(t,e,i,n))return;var l=p(n,e),u=l.point[0],c=l.point[1];null!=u&&null!=c&&this._tryShow({offsetX:u,offsetY:c,position:n.position,target:l.el,event:{}},a)}else null!=n.x&&null!=n.y&&(i.dispatchAction({type:"updateAxisPointer",x:n.x,y:n.y}),this._tryShow({offsetX:n.x,offsetY:n.y,position:n.position,target:i.getZr().findHover(n.x,n.y).target,event:{}},a))}},manuallyHideTip:function(t,e,i,n){var a=this._tooltipContent;this._alwaysShowContent||a.hideLater(this._tooltipModel.get("hideDelay")),this._lastX=this._lastY=null,n.from!==this.uid&&this._hide(o(n,i))},_manuallyAxisShowTip:function(t,e,i,o){var a=o.seriesIndex,r=o.dataIndex,s=e.getComponent("axisPointer").coordSysAxesInfo;if(null!=a&&null!=r&&null!=s){var l=e.getSeriesByIndex(a);if(l){var u=l.getData(),t=n([u.getItemModel(r),l,(l.coordinateSystem||{}).model,t]);if("axis"===t.get("trigger"))return i.dispatchAction({type:"updateAxisPointer",seriesIndex:a,dataIndex:r,position:o.position}),!0}}},_tryShow:function(t,e){var i=t.target,n=this._tooltipModel;if(n){this._lastX=t.offsetX,this._lastY=t.offsetY;var o=t.dataByCoordSys;o&&o.length?this._showAxisTooltip(o,t):i&&null!=i.dataIndex?(this._lastDataByCoordSys=null,this._showSeriesItemTooltip(t,i,e)):i&&i.tooltip?(this._lastDataByCoordSys=null,this._showComponentItemTooltip(t,i,e)):(this._lastDataByCoordSys=null,this._hide(e))}},_showOrMove:function(t,e){var i=t.get("showDelay");e=c.bind(e,this),clearTimeout(this._showTimout),i>0?this._showTimout=setTimeout(e,i):e()},_showAxisTooltip:function(t,e){var i=this._ecModel,o=this._tooltipModel,a=[e.offsetX,e.offsetY],r=[],s=[],l=n([e.tooltipOption,o]);w(t,function(t){w(t.dataByAxis,function(t){var e=i.getComponent(t.axisDim+"Axis",t.axisIndex),n=t.value,o=[];if(e&&null!=n){var a=_.getValueLabel(n,e.axis,i,t.seriesDataIndices,t.valueLabelOpt);c.each(t.seriesDataIndices,function(r){var l=i.getSeriesByIndex(r.seriesIndex),u=r.dataIndexInside,c=l&&l.getDataParams(u);c.axisDim=t.axisDim,c.axisIndex=t.axisIndex,c.axisType=t.axisType,c.axisId=t.axisId,c.axisValue=x.getAxisRawValue(e.axis,n),c.axisValueLabel=a,c&&(s.push(c),o.push(l.formatTooltip(u,!0)))});var l=a;r.push((l?h.encodeHTML(l)+"
                  ":"")+o.join("
                  "))}})},this),r.reverse(),r=r.join("

                  ");var u=e.position;this._showOrMove(l,function(){this._updateContentNotChangedOnAxis(t)?this._updatePosition(l,u,a[0],a[1],this._tooltipContent,s):this._showTooltipContent(l,r,s,Math.random(),a[0],a[1],u)})},_showSeriesItemTooltip:function(t,e,i){var o=this._ecModel,a=e.seriesIndex,r=o.getSeriesByIndex(a),s=e.dataModel||r,l=e.dataIndex,u=e.dataType,c=s.getData(),h=n([c.getItemModel(l),s,r&&(r.coordinateSystem||{}).model,this._tooltipModel]),d=h.get("trigger");if(null==d||"item"===d){var f=s.getDataParams(l,u),p=s.formatTooltip(l,!1,u),g="item_"+s.name+"_"+l;this._showOrMove(h,function(){this._showTooltipContent(h,p,f,g,t.offsetX,t.offsetY,t.position,t.target)}),i({type:"showTip",dataIndexInside:l,dataIndex:c.getRawIndex(l),seriesIndex:a,from:this.uid})}},_showComponentItemTooltip:function(t,e,i){var n=e.tooltip;if("string"==typeof n){var o=n;n={content:o,formatter:o}}var a=new v(n,this._tooltipModel,this._ecModel),r=a.get("content"),s=Math.random();this._showOrMove(a,function(){this._showTooltipContent(a,r,a.get("formatterParams")||{},s,t.offsetX,t.offsetY,t.position,e)}),i({type:"showTip",from:this.uid})},_showTooltipContent:function(t,e,i,n,o,a,r,s){if(this._ticket="",t.get("showContent")&&t.get("show")){var l=this._tooltipContent,u=t.get("formatter");r=r||t.get("position");var c=e;if(u&&"string"==typeof u)c=h.formatTpl(u,i,!0);else if("function"==typeof u){var d=b(function(e,n){e===this._ticket&&(l.setContent(n),this._updatePosition(t,r,o,a,l,i,s))},this);this._ticket=n,c=u(i,n,d)}l.setContent(c),l.show(t),this._updatePosition(t,r,o,a,l,i,s)}},_updatePosition:function(t,e,i,n,o,u,h){var d=this._api.getWidth(),f=this._api.getHeight();e=e||t.get("position");var p=o.getSize(),m=t.get("align"),v=t.get("verticalAlign"),y=h&&h.getBoundingRect().clone();if(h&&y.applyTransform(h.transform),"function"==typeof e&&(e=e([i,n],u,o.el,y,{viewSize:[d,f],contentSize:p.slice()})),c.isArray(e))i=S(e[0],d),n=S(e[1],f);else if(c.isObject(e)){e.width=p[0],e.height=p[1];var x=g.getLayoutRect(e,{width:d,height:f});i=x.x,n=x.y,m=null,v=null}else if("string"==typeof e&&h){var _=s(e,y,p);i=_[0],n=_[1]}else{var _=a(i,n,o.el,d,f,m?null:20,v?null:20);i=_[0],n=_[1]}if(m&&(i-=l(m)?p[0]/2:"right"===m?p[0]:0),v&&(n-=l(v)?p[1]/2:"bottom"===v?p[1]:0),t.get("confine")){var _=r(i,n,o.el,d,f);i=_[0],n=_[1]}o.moveTo(i,n)},_updateContentNotChangedOnAxis:function(t){var e=this._lastDataByCoordSys,i=!!e&&e.length===t.length;return i&&w(e,function(e,n){var o=e.dataByAxis||{},a=t[n]||{},r=a.dataByAxis||[];i&=o.length===r.length,i&&w(o,function(t,e){var n=r[e]||{},o=t.seriesDataIndices||[],a=n.seriesDataIndices||[];i&=t.value===n.value&&t.axisType===n.axisType&&t.axisId===n.axisId&&o.length===a.length,i&&w(o,function(t,e){var n=a[e];i&=t.seriesIndex===n.seriesIndex&&t.dataIndex===n.dataIndex})})}),this._lastDataByCoordSys=t,!!i},_hide:function(t){this._lastDataByCoordSys=null,t({type:"hideTip",from:this.uid})},dispose:function(t,e){m.node||(this._tooltipContent.hide(),y.unregister("itemTooltip",e))}})},function(t,e,i){function n(t,e,i){if(this.name=t,this.geometries=e,i)i=[i[0],i[1]];else{var n=this.getBoundingRect();i=[n.x+n.width/2,n.y+n.height/2]}this.center=i}var o=i(267),a=i(11),r=i(85),s=i(6);n.prototype={constructor:n,properties:null,getBoundingRect:function(){var t=this._rect;if(t)return t;for(var e=Number.MAX_VALUE,i=[e,e],n=[-e,-e],o=[],l=[],u=this.geometries,c=0;c=0?parseFloat(t)/100*e:parseFloat(t):t},R=function(t,e,i){var n=r.parse(e);i=+i,isNaN(i)&&(i=1),n&&(t.color=P(n[0],n[1],n[2]),t.opacity=i*n[3])},N=function(t){var e=r.parse(t);return[P(e[0],e[1],e[2]),e[3]]},V=function(t,e,i){var n=e.fill;if(null!=n)if(n instanceof p){var o,a=0,r=[0,0],s=0,l=1,u=i.getBoundingRect(),c=u.width,h=u.height;if("linear"===n.type){o="gradient";var d=i.transform,f=[n.x*c,n.y*h],g=[n.x2*c,n.y2*h];d&&(w(f,f,d),w(g,g,d));var m=g[0]-f[0],v=g[1]-f[1];a=180*Math.atan2(m,v)/Math.PI,a<0&&(a+=360),a<1e-6&&(a=0)}else{o="gradientradial";var f=[n.x*c,n.y*h],d=i.transform,y=i.scale,x=c,_=h;r=[(f[0]-u.x)/x,(f[1]-u.y)/_],d&&w(f,f,d),x/=y[0]*I,_/=y[1]*I;var S=b(x,_);s=0/S,l=2*n.r/S-s}var M=n.colorStops.slice();M.sort(function(t,e){return t.offset-e.offset});for(var T=M.length,A=[],C=[],L=0;L=2){var k=A[0][0],O=A[1][0],z=A[0][1]*e.opacity,E=A[1][1]*e.opacity;t.type=o,t.method="none",t.focus="100%",t.angle=a,t.color=k,t.color2=O,t.colors=C.join(","),t.opacity=E,t.opacity2=z}"radial"===o&&(t.focusposition=r.join(","))}else R(t,n,e.opacity)},B=function(t,e){null!=e.lineDash&&(t.dashstyle=e.lineDash.join(" ")),null==e.stroke||e.stroke instanceof p||R(t,e.stroke,e.opacity)},G=function(t,e,i,n){var o="fill"==e,a=t.getElementsByTagName(e)[0];null!=i[e]&&"none"!==i[e]&&(o||!o&&i.lineWidth)?(t[o?"filled":"stroked"]="true",i[e]instanceof p&&O(t,a),a||(a=g.createNode(e)),o?V(a,i,n):B(a,i),k(t,a)):(t[o?"filled":"stroked"]="false",O(t,a))},H=[[],[],[]],F=function(t,e){var i,n,o,r,s,l,u=a.M,c=a.C,h=a.L,d=a.A,f=a.Q,p=[];for(r=0;r.01?G&&(F+=270/I):Math.abs(W-E)<1e-4?G&&Fz?M-=270/I:M+=270/I:G&&WE?b+=270/I:b-=270/I),p.push(Z,m(((z-R)*P+L)*I-T),S,m(((E-N)*k+D)*I-T),S,m(((z+R)*P+L)*I-T),S,m(((E+N)*k+D)*I-T),S,m((F*P+L)*I-T),S,m((W*k+D)*I-T),S,m((b*P+L)*I-T),S,m((M*k+D)*I-T)),s=b,l=M;break;case a.R:var q=H[0],j=H[1];q[0]=t[r++],q[1]=t[r++],j[0]=q[0]+t[r++],j[1]=q[1]+t[r++],e&&(w(q,q,e),w(j,j,e)),q[0]=m(q[0]*I-T),j[0]=m(j[0]*I-T),q[1]=m(q[1]*I-T),j[1]=m(j[1]*I-T),p.push(" m ",q[0],S,q[1]," l ",j[0],S,q[1]," l ",j[0],S,j[1]," l ",q[0],S,j[1]);break;case a.Z:p.push(" x ")}if(i>0){p.push(n);for(var U=0;UX&&(U=0,j={});var i,n=Y.style;try{n.font=t,i=n.fontFamily.split(",")[0]}catch(o){}e={style:n.fontStyle||q,variant:n.fontVariant||q,weight:n.fontWeight||q,size:0|parseFloat(n.fontSize||12),family:i||"Microsoft YaHei"},j[t]=e,U++}return e};s.measureText=function(t,e){var i=g.doc;Z||(Z=i.createElement("div"),Z.style.cssText="position:absolute;top:-20000px;left:0;padding:0;margin:0;border:none;white-space:pre;",g.doc.body.appendChild(Z));try{Z.style.font=e}catch(n){}return Z.innerHTML="",Z.appendChild(i.createTextNode(t)),{width:Z.offsetWidth}};for(var K=new o,J=function(t,e,i,n){var o=this.style,a=o.text;if(null!=a&&(a+=""),a){var r,l,u=o.textAlign,c=$(o.textFont),h=c.style+" "+c.variant+" "+c.weight+" "+c.size+'px "'+c.family+'"',d=o.textBaseline,f=o.textVerticalAlign;i=i||s.getBoundingRect(a,h,u,d);var p=this.transform;if(p&&!n&&(K.copy(e),K.applyTransform(p),e=K),n)r=e.x,l=e.y;else{var v=o.textPosition,y=o.textDistance;if(v instanceof Array)r=e.x+E(v[0],e.width),l=e.y+E(v[1],e.height),u=u||"left",d=d||"top";else{var x=s.adjustTextPositionOnRect(v,e,i,y);r=x.x,l=x.y,u=u||x.textAlign,d=d||x.textBaseline}}if(f){switch(f){case"middle":l-=i.height/2;break;case"bottom":l-=i.height}d="top"}var _=c.size;switch(d){case"hanging":case"top":l+=_/1.75;break;case"middle":break;default:l-=_/2.25}switch(u){case"left":break;case"center":r-=i.width/2;break;case"right":r-=i.width}var b,M,I,T=g.createNode,A=this._textVmlEl;A?(I=A.firstChild,b=I.nextSibling,M=b.nextSibling):(A=T("line"),b=T("path"),M=T("textpath"),I=T("skew"),M.style["v-text-align"]="left",L(A),b.textpathok=!0,M.on=!0,A.from="0 0",A.to="1000 0.05",k(A,I),k(A,b),k(A,M),this._textVmlEl=A);var C=[r,l],P=A.style;p&&n?(w(C,C,p),I.on=!0,I.matrix=p[0].toFixed(3)+S+p[2].toFixed(3)+S+p[1].toFixed(3)+S+p[3].toFixed(3)+",0,0",I.offset=(m(C[0])||0)+","+(m(C[1])||0),I.origin="0 0",P.left="0px",P.top="0px"):(I.on=!1,P.left=m(r)+"px",P.top=m(l)+"px"),M.string=D(a);try{M.style.font=h}catch(O){}G(A,"fill",{fill:n?o.fill:o.textFill,opacity:o.opacity},this),G(A,"stroke",{stroke:n?o.stroke:o.textStroke,opacity:o.opacity,lineDash:o.lineDash},this),A.style.zIndex=z(this.zlevel,this.z,this.z2),k(t,A)}},Q=function(t){O(t,this._textVmlEl),this._textVmlEl=null},tt=function(t){k(t,this._textVmlEl)},et=[l,u,c,d,h],it=0;it0&&(s=this.getLineLength(n)/u*1e3),s!==this._period||l!==this._loop){n.stopAnimation();var d=c;h&&(d=c(i)),n.__t>0&&(d=-s*n.__t),n.__t=0;var f=n.animate("",l).when(s,{__t:1}).delay(d).during(function(){o.updateSymbolPosition(n)});l||f.done(function(){o.remove(n)}),f.start()}this._period=s,this._loop=l}},c.getLineLength=function(t){return l.dist(t.__p1,t.__cp1)+l.dist(t.__cp1,t.__p2)},c.updateAnimationPoints=function(t,e){t.__p1=e[0],t.__p2=e[1],t.__cp1=e[2]||[(e[0][0]+e[1][0])/2,(e[0][1]+e[1][1])/2]},c.updateData=function(t,e,i){this.childAt(0).updateData(t,e,i),this._updateEffectSymbol(t,e)},c.updateSymbolPosition=function(t){var e=t.__p1,i=t.__p2,n=t.__cp1,o=t.__t,a=t.position,r=u.quadraticAt,s=u.quadraticDerivativeAt;a[0]=r(e[0],n[0],i[0],o),a[1]=r(e[1],n[1],i[1],o);var l=s(e[0],n[0],i[0],o),c=s(e[1],n[1],i[1],o);t.rotation=-Math.atan2(c,l)-Math.PI/2,t.ignore=!1},c.updateLayout=function(t,e){this.childAt(0).updateLayout(t,e);var i=t.getItemModel(e).getModel("effect");this._updateEffectAnimation(t,i,e)},r.inherits(n,o.Group),t.exports=n},function(t,e,i){function n(t,e,i){o.Group.call(this),this._createPolyline(t,e,i)}var o=i(3),a=i(1),r=n.prototype;r._createPolyline=function(t,e,i){var n=t.getItemLayout(e),a=new o.Polyline({shape:{points:n}});this.add(a),this._updateCommonStl(t,e,i)},r.updateData=function(t,e,i){var n=t.hostModel,a=this.childAt(0),r={shape:{points:t.getItemLayout(e)}};o.updateProps(a,r,n,e),this._updateCommonStl(t,e,i)},r._updateCommonStl=function(t,e,i){var n=this.childAt(0),r=t.getItemModel(e),s=t.getItemVisual(e,"color"),l=i&&i.lineStyle,u=i&&i.hoverLineStyle;i&&!t.hasItemOption||(l=r.getModel("lineStyle.normal").getLineStyle(),u=r.getModel("lineStyle.emphasis").getLineStyle()),n.useStyle(a.defaults({strokeNoScale:!0,fill:"none",stroke:s},l)),n.hoverStyle=u,o.setHoverStyle(this)},r.updateLayout=function(t,e){var i=this.childAt(0);i.setShape("points",t.getItemLayout(e))},a.inherits(n,o.Group),t.exports=n},function(t,e,i){var n=i(14),o=i(424),a=i(264),r=i(25),s=i(26),l=i(1),u=i(28);t.exports=function(t,e,i,c,h){for(var d=new o(c),f=0;f "+x)),m++)}var _,b=i.get("coordinateSystem");if("cartesian2d"===b||"polar"===b)_=u(t,i,i.ecModel);else{var w=s.get(b),S=r((w&&"view"!==w.type?w.dimensions||[]:[]).concat(["value"]),t);_=new n(S,i),_.initData(t)}var M=new n(["value"],i);return M.initData(g,p),h&&h(_,M),a({mainData:_,struct:d,structAttr:"graph",datas:{node:_,edge:M},datasAttr:{node:"data",edge:"edgeData"}}),d.update(),d}},function(t,e,i){var n=i(1),o={};o.layout=function(t,e){e=e||{};var i=t.coordinateSystem,o=t.axis,a={},r=o.position,s=o.orient,l=i.getRect(),u=[l.x,l.x+l.width,l.y,l.y+l.height],c={horizontal:{top:u[2],bottom:u[3]},vertical:{left:u[0],right:u[1]}};a.position=["vertical"===s?c.vertical[r]:u[0],"horizontal"===s?c.horizontal[r]:u[3]];var h={horizontal:0,vertical:1};a.rotation=Math.PI/2*h[s];var d={top:-1,bottom:1,right:1,left:-1};a.labelDirection=a.tickDirection=a.nameDirection=d[r],t.get("axisTick.inside")&&(a.tickDirection=-a.tickDirection),n.retrieve(e.labelInside,t.get("axisLabel.inside"))&&(a.labelDirection=-a.labelDirection);var f=e.rotate;return null==f&&(f=t.get("axisLabel.rotate")),a.labelRotation="top"===r?-f:f,a.labelInterval=o.getLabelInterval(),a.z2=1,a},t.exports=o},function(t,e,i){function n(t,e){var i=t.getItemStyle(),n=t.get("areaColor");return null!=n&&(i.fill=n),i}function o(t,e,i,n,o){i.off("click"),i.off("mousedown"),e.get("selectedMode")&&(i.on("mousedown",function(){t._mouseDownFlag=!0}),i.on("click",function(r){if(t._mouseDownFlag){t._mouseDownFlag=!1;for(var s=r.target;!s.__regions;)s=s.parent;if(s){var l={type:("geo"===e.mainType?"geo":"map")+"ToggleSelect",batch:h.map(s.__regions,function(t){return{name:t.name,from:o.uid}})};l[e.mainType+"Id"]=e.id,n.dispatchAction(l),a(e,i)}}}))}function a(t,e){e.eachChild(function(e){h.each(e.__regions,function(i){e.trigger(t.isSelected(i.name)?"emphasis":"normal")})})}function r(t,e){var i=new c.Group;this._controller=new s(t.getZr()),this._controllerHost={target:e?i:null},this.group=i,this._updateGroup=e,this._mouseDownFlag}var s=i(95),l=i(251),u=i(128),c=i(3),h=i(1);r.prototype={constructor:r,draw:function(t,e,i,r,s){var l="geo"===t.mainType,u=t.getData&&t.getData();l&&e.eachComponent({mainType:"series",subType:"map"},function(e){u||e.getHostGeoModel()!==t||(u=e.getData())});var d=t.coordinateSystem,f=this.group,p=d.scale,g={position:d.position,scale:p};!f.childAt(0)||s?f.attr(g):c.updateProps(f,g,t),f.removeAll();var m=["itemStyle","normal"],v=["itemStyle","emphasis"],y=["label","normal"],x=["label","emphasis"],_=h.createHashMap();h.each(d.regions,function(e){var i=_.get(e.name)||_.set(e.name,new c.Group),o=new c.CompoundPath({shape:{paths:[]}});i.add(o);var a,r=t.getRegionModel(e.name)||t,s=r.getModel(m),d=r.getModel(v),g=n(s,p),b=n(d,p),w=r.getModel(y),S=r.getModel(x);if(u){a=u.indexOfName(e.name);var M=u.getItemVisual(a,"color",!0);M&&(g.fill=M)}var I=w.getModel("textStyle"),T=S.getModel("textStyle");h.each(e.geometries,function(t){if("polygon"===t.type){o.shape.paths.push(new c.Polygon({shape:{points:t.exterior}}));for(var e=0;e<(t.interiors?t.interiors.length:0);e++)o.shape.paths.push(new c.Polygon({shape:{points:t.interiors[e]}}))}}),o.setStyle(g),o.style.strokeNoScale=!0,o.culling=!0;var A=w.get("show"),C=S.get("show"),L=u&&isNaN(u.get("value",a)),D=u&&u.getItemLayout(a);if(l||L&&(A||C)||D&&D.showLabel){var P=u?a:e.name,k=t.getFormattedLabel(P,"normal"),O=t.getFormattedLabel(P,"emphasis"),z=new c.Text({style:{text:A?k||e.name:"",fill:I.getTextColor(),textFont:I.getFont(),textAlign:"center",textVerticalAlign:"middle"},hoverStyle:{text:C?O||e.name:"",fill:T.getTextColor(),textFont:T.getFont()},position:e.center.slice(),scale:[1/p[0],1/p[1]],z2:10,silent:!0});i.add(z)}if(u)u.setItemGraphicEl(a,i);else{var r=t.getRegionModel(e.name);o.eventData={componentType:"geo",geoIndex:t.componentIndex,name:e.name,region:r&&r.option||{}}}var E=i.__regions||(i.__regions=[]);E.push(e),c.setHoverStyle(i,b,{hoverSilentOnTouch:!!t.get("selectedMode")}),f.add(i)}),this._updateController(t,e,i),o(this,t,f,i,r),a(t,f)},remove:function(){this.group.removeAll(),this._controller.dispose(),this._controllerHost={}},_updateController:function(t,e,i){function n(){var e={type:"geoRoam",componentType:s};return e[s+"Id"]=t.id,e}var o=t.coordinateSystem,a=this._controller,r=this._controllerHost;r.zoomLimit=t.get("scaleLimit"),r.zoom=o.getZoom(),a.enable(t.get("roam")||!1);var s=t.mainType;a.off("pan").on("pan",function(t,e){this._mouseDownFlag=!1,l.updateViewOnPan(r,t,e),i.dispatchAction(h.extend(n(),{dx:t,dy:e}))},this),a.off("zoom").on("zoom",function(t,e,o){if(this._mouseDownFlag=!1,l.updateViewOnZoom(r,t,e,o),i.dispatchAction(h.extend(n(),{zoom:t,originX:e,originY:o})),this._updateGroup){var a=this.group,s=a.scale;a.traverse(function(t){"text"===t.type&&t.attr("scale",[1/s[0],1/s[1]])})}},this),a.setPointerChecker(function(e,n,a){return o.getViewRectAfterRoam().contain(n,a)&&!u.onIrrelevantElement(e,i,t)})}},t.exports=r},function(t,e){var i={};i.updateViewOnPan=function(t,e,i){var n=t.target,o=n.position;o[0]+=e,o[1]+=i,n.dirty()},i.updateViewOnZoom=function(t,e,i,n){var o=t.target,a=t.zoomLimit,r=o.position,s=o.scale,l=t.zoom=t.zoom||1;if(l*=e,a){var u=a.min||0,c=a.max||1/0;l=Math.max(Math.min(c,l),u)}var h=l/t.zoom;t.zoom=l,r[0]-=(i-r[0])*(h-1),r[1]-=(n-r[1])*(h-1),s[0]*=h,s[1]*=h,o.dirty()},t.exports=i},function(t,e,i){function n(t,e){var i=t._model;return i.get("axisExpandable")&&i.get("axisExpandTriggerOn")===e}i(263),i(408),i(372);var o=i(2),a=i(1),r=i(37),s=5;o.extendComponentView({type:"parallel",render:function(t,e,i){this._model=t,this._api=i,this._handlers||(this._handlers={},a.each(l,function(t,e){i.getZr().on(e,this._handlers[e]=a.bind(t,this))},this)),r.createOrUpdate(this,"_throttledDispatchExpand",t.get("axisExpandRate"),"fixRate")},dispose:function(t,e){a.each(this._handlers,function(t,i){e.getZr().off(i,t)}),this._handlers=null},_throttledDispatchExpand:function(t){this._dispatchExpand(t)},_dispatchExpand:function(t){t&&this._api.dispatchAction(a.extend({type:"parallelAxisExpand"},t))}});var l={mousedown:function(t){n(this,"click")&&(this._mouseDownPoint=[t.offsetX,t.offsetY])},mouseup:function(t){var e=this._mouseDownPoint;if(n(this,"click")&&e){var i=[t.offsetX,t.offsetY],o=Math.pow(e[0]-i[0],2)+Math.pow(e[1]-i[1],2);if(o>s)return;var a=this._model.coordinateSystem.getSlidedAxisExpandWindow([t.offsetX,t.offsetY]);"none"!==a.behavior&&this._dispatchExpand({axisExpandWindow:a.axisExpandWindow})}this._mouseDownPoint=null},mousemove:function(t){if(!this._mouseDownPoint&&n(this,"mousemove")){var e=this._model,i=e.coordinateSystem.getSlidedAxisExpandWindow([t.offsetX,t.offsetY]),o=i.behavior;"jump"===o&&this._throttledDispatchExpand.debounceNextCall(e.get("axisExpandDebounce")),this._throttledDispatchExpand("none"===o?null:{axisExpandWindow:i.axisExpandWindow,animation:"jump"===o&&null})}}};o.registerPreprocessor(i(409))},function(t,e,i){i(423),i(357),i(419),i(55),i(360);var n=i(2);n.extendComponentView({type:"single"})},function(t,e,i){var n=i(2),o=i(1),a=i(9),r=i(266),s=i(83),l=i(187),u=s.mapVisual,c=i(5),h=s.eachVisual,d=i(4),f=o.isArray,p=o.each,g=d.asc,m=d.linearMap,v=o.noop,y=["#f6efa6","#d88273","#bf444c"],x=n.extendComponentModel({type:"visualMap",dependencies:["series"],stateList:["inRange","outOfRange"],replacableOptionKeys:["inRange","outOfRange","target","controller","color"],dataBound:[-(1/0),1/0],layoutMode:{type:"box",ignoreSize:!0},defaultOption:{show:!0,zlevel:0,z:4,seriesIndex:null,min:0,max:200,dimension:null,inRange:null,outOfRange:null,left:0,right:null,top:null,bottom:0,itemWidth:null,itemHeight:null,inverse:!1,orient:"vertical",backgroundColor:"rgba(0,0,0,0)",borderColor:"#ccc",contentColor:"#5793f3",inactiveColor:"#aaa",borderWidth:0,padding:5,textGap:10,precision:0,color:null,formatter:null,text:null,textStyle:{color:"#333"}},init:function(t,e,i){this._dataExtent,this.targetVisuals={},this.controllerVisuals={},this.textStyleModel,this.itemSize,this.mergeDefaultAndTheme(t,i)},optionUpdated:function(t,e){var i=this.option;a.canvasSupported||(i.realtime=!1),!e&&l.replaceVisualOption(i,t,this.replacableOptionKeys),this.textStyleModel=this.getModel("textStyle"),this.resetItemSize(),this.completeVisualOption()},resetVisual:function(t){var e=this.stateList;t=o.bind(t,this),this.controllerVisuals=l.createVisualMappings(this.option.controller,e,t),this.targetVisuals=l.createVisualMappings(this.option.target,e,t)},resetTargetSeries:function(){var t=this.option,e=null==t.seriesIndex;t.seriesIndex=e?[]:c.normalizeToArray(t.seriesIndex),e&&this.ecModel.eachSeries(function(e,i){t.seriesIndex.push(i)})},eachTargetSeries:function(t,e){o.each(this.option.seriesIndex,function(i){t.call(e,this.ecModel.getSeriesByIndex(i))},this)},isTargetSeries:function(t){var e=!1;return this.eachTargetSeries(function(i){i===t&&(e=!0)}),e},formatValueText:function(t,e,i){function n(t){return t===u[0]?"min":t===u[1]?"max":(+t).toFixed(l)}var a,r,s=this.option,l=s.precision,u=this.dataBound,c=s.formatter;return i=i||["<",">"],o.isArray(t)&&(t=t.slice(),a=!0),r=e?t:a?[n(t[0]),n(t[1])]:n(t),o.isString(c)?c.replace("{value}",a?r[0]:r).replace("{value2}",a?r[1]:r):o.isFunction(c)?a?c(t[0],t[1]):c(t):a?t[0]===u[0]?i[0]+" "+r[1]:t[1]===u[1]?i[1]+" "+r[0]:r[0]+" - "+r[1]:r},resetExtent:function(){var t=this.option,e=g([t.min,t.max]);this._dataExtent=e},getDataDimension:function(t){var e=this.option.dimension;return null!=e?e:t.dimensions.length-1},getExtent:function(){return this._dataExtent.slice()},completeVisualOption:function(){function t(t){f(n.color)&&!t.inRange&&(t.inRange={color:n.color.slice().reverse()}),t.inRange=t.inRange||{color:y},p(this.stateList,function(e){var i=t[e];if(o.isString(i)){var n=r.get(i,"active",d);n?(t[e]={},t[e][i]=n):delete t[e]}},this)}function e(t,e,i){var n=t[e],o=t[i];n&&!o&&(o=t[i]={},p(n,function(t,e){if(s.isValidType(e)){var i=r.get(e,"inactive",d);null!=i&&(o[e]=i,"color"!==e||o.hasOwnProperty("opacity")||o.hasOwnProperty("colorAlpha")||(o.opacity=[0,0]))}}))}function i(t){var e=(t.inRange||{}).symbol||(t.outOfRange||{}).symbol,i=(t.inRange||{}).symbolSize||(t.outOfRange||{}).symbolSize,n=this.get("inactiveColor");p(this.stateList,function(a){var r=this.itemSize,s=t[a];s||(s=t[a]={color:d?n:[n]}),null==s.symbol&&(s.symbol=e&&o.clone(e)||(d?"roundRect":["roundRect"])),null==s.symbolSize&&(s.symbolSize=i&&o.clone(i)||(d?r[0]:[r[0],r[0]])),s.symbol=u(s.symbol,function(t){return"none"===t||"square"===t?"roundRect":t});var l=s.symbolSize;if(null!=l){var c=-(1/0);h(l,function(t){t>c&&(c=t)}),s.symbolSize=u(l,function(t){return m(t,[0,c],[0,r[0]],!0)})}},this)}var n=this.option,a={inRange:n.inRange,outOfRange:n.outOfRange},l=n.target||(n.target={}),c=n.controller||(n.controller={});o.merge(l,a),o.merge(c,a);var d=this.isCategory();t.call(this,l),t.call(this,c),e.call(this,l,"inRange","outOfRange"),i.call(this,c)},resetItemSize:function(){this.itemSize=[parseFloat(this.get("itemWidth")),parseFloat(this.get("itemHeight"))]},isCategory:function(){return!!this.option.categories},setSelected:v,getValueState:v,getVisualMeta:v});t.exports=x},function(t,e,i){var n=i(1),o=i(3),a=i(7),r=i(12),s=i(2),l=i(83);t.exports=s.extendComponentView({type:"visualMap",autoPositionValues:{left:1,right:1,top:1,bottom:1},init:function(t,e){this.ecModel=t,this.api=e,this.visualMapModel},render:function(t,e,i,n){return this.visualMapModel=t,t.get("show")===!1?void this.group.removeAll():void this.doRender.apply(this,arguments)},renderBackground:function(t){var e=this.visualMapModel,i=a.normalizeCssArray(e.get("padding")||0),n=t.getBoundingRect();t.add(new o.Rect({z2:-1,silent:!0,shape:{x:n.x-i[3],y:n.y-i[0],width:n.width+i[3]+i[1],height:n.height+i[0]+i[2]},style:{fill:e.get("backgroundColor"),stroke:e.get("borderColor"),lineWidth:e.get("borderWidth")}}))},getControllerVisual:function(t,e,i){function o(t){return u[t]}function a(t,e){u[t]=e}i=i||{};var r=i.forceState,s=this.visualMapModel,u={};if("symbol"===e&&(u.symbol=s.get("itemSymbol")),"color"===e){var c=s.get("contentColor");u.color=c}var h=s.controllerVisuals[r||s.getValueState(t)],d=l.prepareVisualTypes(h);return n.each(d,function(n){var r=h[n];i.convertOpacityToAlpha&&"opacity"===n&&(n="colorAlpha",r=h.__alphaForOpacity),l.dependsOn(n,e)&&r&&r.applyVisual(t,o,a)}),u[e]},positionGroup:function(t){var e=this.visualMapModel,i=this.api;r.positionElement(t,e.getBoxLayoutParams(),{width:i.getWidth(),height:i.getHeight()})},doRender:n.noop})},function(t,e,i){var n=i(1),o=i(12),a={getItemAlign:function(t,e,i){var n=t.option,a=n.align;if(null!=a&&"auto"!==a)return a;for(var r={width:e.getWidth(),height:e.getHeight()},s="horizontal"===n.orient?1:0,l=[["left","right","width"],["top","bottom","height"]],u=l[s],c=[0,null,10],h={},d=0;d<3;d++)h[l[1-s][d]]=c[d],h[u[d]]=2===d?i[0]:n[u[d]];var f=[["x","width",3],["y","height",0]][s],p=o.getLayoutRect(h,r,n.padding);return u[(p.margin[f[2]]||0)+p[f[0]]+.5*p[f[1]]<.5*r[f[1]]?0:1]},convertDataIndex:function(t){return n.each(t||[],function(e){null!=t.dataIndex&&(t.dataIndexInside=t.dataIndex,t.dataIndex=null)}),t}};t.exports=a},function(t,e,i){function n(t,e){return t&&t.hasOwnProperty&&t.hasOwnProperty(e)}var o=i(1),a=o.each;t.exports=function(t){var e=t&&t.visualMap;o.isArray(e)||(e=e?[e]:[]),a(e,function(t){if(t){n(t,"splitList")&&!n(t,"pieces")&&(t.pieces=t.splitList,delete t.splitList);var e=t.pieces;e&&o.isArray(e)&&a(e,function(t){o.isObject(t)&&(n(t,"start")&&!n(t,"min")&&(t.min=t.start),n(t,"end")&&!n(t,"max")&&(t.max=t.end))})}})}},function(t,e,i){i(13).registerSubTypeDefaulter("visualMap",function(t){return t.categories||(t.pieces?t.pieces.length>0:t.splitNumber>0)&&!t.calculable?"piecewise":"continuous"})},function(t,e,i){function n(t,e){t.eachTargetSeries(function(e){var i=e.getData();s.applyVisual(t.stateList,t.targetVisuals,i,t.getValueState,t,t.getDataDimension(i))})}function o(t){t.eachSeries(function(e){var i=e.getData(),n=[];t.eachComponent("visualMap",function(t){if(t.isTargetSeries(e)){var o=t.getVisualMeta(u.bind(a,null,e,t))||{stops:[],outerColors:[]};o.dimension=t.getDataDimension(i),n.push(o)}}),e.getData().setVisual("visualMeta",n)})}function a(t,e,i,n){function o(t){return u[t]}function a(t,e){u[t]=e}for(var r=e.targetVisuals[n],s=l.prepareVisualTypes(r),u={color:t.getData().getVisual("color")},c=0,h=s.length;c>1^-(1&s),l=l>>1^-(1&l),s+=o,l+=a,o=s,a=l,n.push([s/i,l/i])}return n}var a=i(1),r=i(236);t.exports=function(t){return n(t),a.map(a.filter(t.features,function(t){return t.geometry&&t.properties&&t.geometry.coordinates.length>0}),function(t){var e=t.properties,i=t.geometry,n=i.coordinates,o=[];"Polygon"===i.type&&o.push({type:"polygon",exterior:n[0],interiors:n.slice(1)}),"MultiPolygon"===i.type&&a.each(n,function(t){t[0]&&o.push({type:"polygon",exterior:t[0],interiors:t.slice(1)})});var s=new r(e.name,o,e.cp);return s.properties=e,s})}},function(t,e,i){function n(t,e){var i=[];return t.eachComponent("parallel",function(n,a){var r=new o(n,t,e);r.name="parallel_"+a,r.resize(n,e),n.coordinateSystem=r,r.model=n,i.push(r)}),t.eachSeries(function(e){if("parallel"===e.get("coordinateSystem")){var i=t.queryComponents({mainType:"parallel",index:e.get("parallelIndex"),id:e.get("parallelId")})[0];e.coordinateSystem=i.coordinateSystem}}),i}var o=i(406);i(26).register("parallel",{create:n})},function(t,e,i){function n(t){var e=t.mainData,i=t.datas;i||(i={main:e},t.datasAttr={main:"data"}),t.datas=t.mainData=null,u(e,i,t),d(i,function(i){d(e.TRANSFERABLE_METHODS,function(e){i.wrapMethod(e,h.curry(o,t))})}),e.wrapMethod("cloneShallow",h.curry(r,t)),d(e.CHANGABLE_METHODS,function(i){e.wrapMethod(i,h.curry(a,t))}),h.assert(i[e.dataType]===e)}function o(t,e){if(l(this)){var i=h.extend({},this[f]);i[this.dataType]=e,u(e,i,t)}else c(e,this.dataType,this[p],t);return e}function a(t,e){return t.struct&&t.struct.update(this),e}function r(t,e){return d(e[f],function(i,n){i!==e&&c(i.cloneShallow(),n,e,t)}),e}function s(t){var e=this[p];return null==t||null==e?e:e[f][t]}function l(t){return t[p]===t}function u(t,e,i){t[f]={},d(e,function(e,n){c(e,n,t,i)})}function c(t,e,i,n){i[f][e]=t,t[p]=i,t.dataType=e,n.struct&&(t[n.structAttr]=n.struct,n.struct[n.datasAttr[e]]=t),t.getLinkedData=s}var h=i(1),d=h.each,f="\0__link_datas",p="\0__link_mainData";t.exports=n},function(t,e,i){function n(){function t(e,n){if(n>=i.length)return e;for(var a=-1,r=e.length,s=i[n++],l={},u={};++a=i.length)return t;var r=[],s=n[a++];return o.each(t,function(t,i){r.push({key:i,values:e(t,a)})}),s?r.sort(function(t,e){return s(t.key,e.key)}):r}var i=[],n=[];return{key:function(t){return i.push(t),this},sortKeys:function(t){return n[i.length-1]=t,this},entries:function(i){return e(t(i,0),0)}}}var o=i(1);t.exports=n},function(t,e,i){var n=i(1),o={get:function(t,e,i){var o=n.clone((a[t]||{})[e]);return i&&n.isArray(o)?o[o.length-1]:o}},a={color:{active:["#006edd","#e0ffff"],inactive:["rgba(0,0,0,0)"]},colorHue:{active:[0,360],inactive:[0,0]},colorSaturation:{active:[.3,1],inactive:[0,0]},colorLightness:{active:[.9,.5],inactive:[0,0]},colorAlpha:{active:[.3,1],inactive:[0,0]},opacity:{active:[.3,1],inactive:[0,0]},symbol:{active:["circle","roundRect","diamond"],inactive:["none"]},symbolSize:{active:[10,50],inactive:[0,0]}};t.exports=o},function(t,e,i){function n(t,e){return Math.abs(t-e)0?1:r<0?-1:0}function a(t,e){return t.toGlobalCoord(t.dataToCoord(t.scale.parse(e)))}function r(t,e,i,n,o,a,r,s,l,u){var c=l.valueDim,h=l.categoryDim,d=Math.abs(i[h.wh]),f=t.getItemVisual(e,"symbolSize");T.isArray(f)?f=f.slice():(null==f&&(f="100%"),f=[f,f]),f[h.index]=P(f[h.index],d),f[c.index]=P(f[c.index],n?d:Math.abs(a)),u.symbolSize=f;var p=u.symbolScale=[f[0]/s,f[1]/s];p[c.index]*=(l.isHorizontal?-1:1)*r}function s(t,e,i,n,o){var a=t.get(k)||0;a&&(z.attr({scale:e.slice(),rotation:i}),z.updateTransform(),a/=z.getLineScale(),a*=e[n.valueDim.index]),o.valueLineWidth=a}function l(t,e,i,n,o,a,r,s,l,u,c,h){var d=c.categoryDim,f=c.valueDim,p=h.pxSign,g=Math.max(e[f.index]+s,0),m=g;if(n){var v=Math.abs(l),y=T.retrieve(t.get("symbolMargin"),"15%")+"",x=!1;y.lastIndexOf("!")===y.length-1&&(x=!0,y=y.slice(0,y.length-1)),y=P(y,e[f.index]);var _=Math.max(g+2*y,0),b=x?0:2*y,w=L.isNumeric(n),S=w?n:I((v+b)/_),M=v-S*g;y=M/2/(x?S:S-1),_=g+2*y,b=x?0:2*y,w||"fixed"===n||(S=u?I((Math.abs(u)+b)/_):0),m=S*_-b,h.repeatTimes=S,h.symbolMargin=y}var A=p*(m/2),C=h.pathPosition=[];C[d.index]=i[d.wh]/2,C[f.index]="start"===r?A:"end"===r?l-A:l/2,a&&(C[0]+=a[0],C[1]+=a[1]);var D=h.bundlePosition=[];D[d.index]=i[d.xy],D[f.index]=i[f.xy];var k=h.barRectShape=T.extend({},i);k[f.wh]=p*Math.max(Math.abs(i[f.wh]),Math.abs(C[f.index]+A)),k[d.wh]=i[d.wh];var O=h.clipShape={};O[d.xy]=-i[d.xy],O[d.wh]=c.ecSize[d.wh],O[f.xy]=0,O[f.wh]=i[f.wh]}function u(t){var e=t.symbolPatternSize,i=C.createSymbol(t.symbolType,-e/2,-e/2,e,e,t.color);return i.attr({culling:!0}),"image"!==i.type&&i.setStyle({strokeNoScale:!0}),i}function c(t,e,i,n){function o(t){var e=h.slice(),n=i.pxSign,o=t;return("start"===i.symbolRepeatDirection?n>0:n<0)&&(o=f-1-t),e[d.index]=g*(o-f/2+.5)+h[d.index],{position:e,scale:i.symbolScale.slice(),rotation:i.rotation}}function a(){w(t,function(t){t.trigger("emphasis")})}function r(){w(t,function(t){t.trigger("normal")})}var s=t.__pictorialBundle,l=i.symbolSize,c=i.valueLineWidth,h=i.pathPosition,d=e.valueDim,f=i.repeatTimes||0,p=0,g=l[e.valueDim.index]+c+2*i.symbolMargin;for(w(t,function(t){t.__pictorialAnimationIndex=p,t.__pictorialRepeatTimes=f,p0)],h=t.__pictorialBarRect;D.setLabel(h.style,u,a,n,e.seriesModel,o,c),A.setHoverStyle(h,u)}function I(t){var e=Math.round(t);return Math.abs(t-e)<1e-4?e:Math.ceil(t)}var T=i(1),A=i(3),C=i(24),L=i(4),D=i(91),P=L.parsePercent,k=["itemStyle","normal","borderWidth"],O=[{xy:"x",wh:"width",index:0,posDesc:["left","right"]},{xy:"y",wh:"height",index:1,posDesc:["top","bottom"]}],z=new A.Circle,E=i(2).extendChartView({type:"pictorialBar",render:function(t,e,i){var o=this.group,a=t.getData(),r=this._data,s=t.coordinateSystem,l=s.getBaseAxis(),u=!!l.isHorizontal(),c=s.grid.getRect(),h={ecSize:{width:i.getWidth(),height:i.getHeight()},seriesModel:t,coordSys:s,coordSysExtent:[[c.x,c.x+c.width],[c.y,c.y+c.height]],isHorizontal:u,valueDim:O[+u],categoryDim:O[1-u]};return a.diff(r).add(function(t){if(a.hasValue(t)){var e=p(a,t),i=n(a,t,e,h),r=y(a,h,i);a.setItemGraphicEl(t,r),o.add(r),M(r,h,i)}}).update(function(t,e){var i=r.getItemGraphicEl(e);if(!a.hasValue(t))return void o.remove(i);var s=p(a,t),l=n(a,t,s,h),u=b(a,l);i&&u!==i.__pictorialShapeStr&&(o.remove(i),a.setItemGraphicEl(t,null),i=null),i?x(i,h,l):i=y(a,h,l,!0),a.setItemGraphicEl(t,i),i.__pictorialSymbolMeta=l,o.add(i),M(i,h,l)}).remove(function(t){var e=r.getItemGraphicEl(t);e&&_(r,t,e.__pictorialSymbolMeta.animationModel,e)}).execute(),this._data=a,this.group},dispose:T.noop,remove:function(t,e){var i=this.group,n=this._data;t.get("animation")?n&&n.eachItemGraphicEl(function(e){_(n,e.dataIndex,t,e)}):i.removeAll()}});t.exports=E},function(t,e,i){var n=i(2);i(271),i(272),n.registerVisual(i(274)),n.registerLayout(i(273))},function(t,e,i){"use strict";var n=i(1),o=i(17),a=i(183),r=o.extend({type:"series.boxplot",dependencies:["xAxis","yAxis","grid"],defaultValueDimensions:["min","Q1","median","Q3","max"],dimensions:null,defaultOption:{zlevel:0,z:2,coordinateSystem:"cartesian2d",legendHoverLink:!0,hoverAnimation:!0,layout:null,boxWidth:[7,50],itemStyle:{normal:{color:"#fff",borderWidth:1},emphasis:{borderWidth:2,shadowBlur:5,shadowOffsetX:2,shadowOffsetY:2,shadowColor:"rgba(0,0,0,0.4)"}},animationEasing:"elasticOut",animationDuration:800}});n.mixin(r,a.seriesModelMixin,!0),t.exports=r},function(t,e,i){"use strict";function n(t,e,i){var n=e.getItemModel(i),o=n.getModel(u),a=e.getItemVisual(i,"color"),s=o.getItemStyle(["borderColor"]),l=t.childAt(t.whiskerIndex);l.style.set(s),l.style.stroke=a,l.dirty();var h=t.childAt(t.bodyIndex);h.style.set(s),h.style.stroke=a,h.dirty();var d=n.getModel(c).getItemStyle();r.setHoverStyle(t,d)}var o=i(1),a=i(30),r=i(3),s=i(183),l=a.extend({type:"boxplot",getStyleUpdater:function(){return n},dispose:o.noop});o.mixin(l,s.viewMixin,!0);var u=["itemStyle","normal"],c=["itemStyle","emphasis"];t.exports=l},function(t,e,i){function n(t){var e=[],i=[];return t.eachSeriesByType("boxplot",function(t){var n=t.getBaseAxis(),o=r.indexOf(i,n);o<0&&(o=i.length,i[o]=n,e[o]={axis:n,seriesModels:[]}),e[o].seriesModels.push(t)}),e}function o(t){var e,i,n=t.axis,o=t.seriesModels,a=o.length,s=t.boxWidthList=[],c=t.boxOffsetList=[],h=[];if("category"===n.type)i=n.getBandWidth();else{var d=0;u(o,function(t){d=Math.max(d,t.getData().count())}),e=n.getExtent(),Math.abs(e[1]-e[0])/d}u(o,function(t){var e=t.get("boxWidth");r.isArray(e)||(e=[e,e]),h.push([l(e[0],i)||0,l(e[1],i)||0])});var f=.8*i-2,p=f/a*.3,g=(f-p*(a-1))/a,m=g/2-f/2;u(o,function(t,e){c.push(m),m+=p+g,s.push(Math.min(Math.max(g,h[e][0]),h[e][1]))})}function a(t,e,i){var n,o=t.coordinateSystem,a=t.getData(),s=i/2,l=t.get("layout"),u="horizontal"===l?0:1,c=1-u,h=["x","y"],d=[];r.each(a.dimensions,function(t){var e=a.getDimensionInfo(t),i=e.coordDim;i===h[c]?d.push(t):i===h[u]&&(n=t)}),null==n||d.length<5||a.each([n].concat(d),function(){function t(t){var i=[];i[u]=h,i[c]=t;var n;return isNaN(h)||isNaN(t)?n=[NaN,NaN]:(n=o.dataToPoint(i),n[u]+=e),n}function i(t,e){var i=t.slice(),n=t.slice();i[u]+=s,n[u]-=s,e?y.push(i,n):y.push(n,i)}function n(t){var e=[t.slice(),t.slice()];e[0][u]-=s,e[1][u]+=s,v.push(e)}var r=arguments,h=r[0],f=r[d.length+1],p=t(r[3]),g=t(r[1]),m=t(r[5]),v=[[g,t(r[2])],[m,t(r[4])]];n(g),n(m),n(p);var y=[];i(v[0][1],0),i(v[1][1],1),a.setItemLayout(f,{chartLayout:l,initBaseline:p[c],median:p,bodyEnds:y,whiskerEnds:v})})}var r=i(1),s=i(4),l=s.parsePercent,u=r.each;t.exports=function(t){var e=n(t);u(e,function(t){var e=t.seriesModels;e.length&&(o(t),u(e,function(e,i){a(e,t.boxOffsetList[i],t.boxWidthList[i])}))})}},function(t,e){var i=["itemStyle","normal","borderColor"];t.exports=function(t,e){var n=t.get("color");t.eachRawSeriesByType("boxplot",function(e){var o=n[e.seriesIndex%n.length],a=e.getData();a.setVisual({legendSymbol:"roundRect",color:e.get(i)||o}),t.isSeriesFiltered(e)||a.each(function(t){var e=a.getItemModel(t);a.setItemVisual(t,{color:e.get(i,!0)})})})}},function(t,e,i){var n=i(2);i(276),i(277),n.registerPreprocessor(i(280)),n.registerVisual(i(279)),n.registerLayout(i(278))},function(t,e,i){"use strict";var n=i(1),o=i(17),a=i(183),r=o.extend({type:"series.candlestick",dependencies:["xAxis","yAxis","grid"],defaultValueDimensions:["open","close","lowest","highest"],dimensions:null,defaultOption:{zlevel:0,z:2,coordinateSystem:"cartesian2d",legendHoverLink:!0,hoverAnimation:!0,layout:null,itemStyle:{normal:{color:"#c23531",color0:"#314656",borderWidth:1,borderColor:"#c23531",borderColor0:"#314656"},emphasis:{borderWidth:2}},barMaxWidth:null,barMinWidth:null,barWidth:null,animationUpdate:!1,animationEasing:"linear",animationDuration:300},getShadowDim:function(){return"open"},brushSelector:function(t,e,i){var n=e.getItemLayout(t);return i.rect(n.brushRect)}});n.mixin(r,a.seriesModelMixin,!0),t.exports=r},function(t,e,i){"use strict";function n(t,e,i){var n=e.getItemModel(i),o=n.getModel(u),a=e.getItemVisual(i,"color"),s=e.getItemVisual(i,"borderColor")||a,l=o.getItemStyle(["color","color0","borderColor","borderColor0"]),h=t.childAt(t.whiskerIndex);h.useStyle(l),h.style.stroke=s;var d=t.childAt(t.bodyIndex);d.useStyle(l),d.style.fill=a,d.style.stroke=s;var f=n.getModel(c).getItemStyle();r.setHoverStyle(t,f)}var o=i(1),a=i(30),r=i(3),s=i(183),l=a.extend({type:"candlestick",getStyleUpdater:function(){return n},dispose:o.noop});o.mixin(l,s.viewMixin,!0);var u=["itemStyle","normal"],c=["itemStyle","emphasis"];t.exports=l},function(t,e,i){function n(t,e){var i,n=t.getBaseAxis(),o="category"===n.type?n.getBandWidth():(i=n.getExtent(),Math.abs(i[1]-i[0])/e.count()),s=r(a(t.get("barMaxWidth"),o),o),l=r(a(t.get("barMinWidth"),1),o),u=t.get("barWidth");return null!=u?r(u,o):Math.max(Math.min(o/2,s),l)}var o=i(1),a=i(1).retrieve,r=i(4).parsePercent;t.exports=function(t){t.eachSeriesByType("candlestick",function(t){var e,i=t.coordinateSystem,a=t.getData(),r=n(t,a),s=t.get("layout"),l="horizontal"===s?0:1,u=1-l,c=["x","y"],h=[];o.each(a.dimensions,function(t){var i=a.getDimensionInfo(t),n=i.coordDim;n===c[u]?h.push(t):n===c[l]&&(e=t)}),null==e||h.length<4||a.each([e].concat(h),function(){function t(t){var e=[];return e[l]=c,e[u]=t,isNaN(c)||isNaN(t)?[NaN,NaN]:i.dataToPoint(e)}function e(t,e){var i=t.slice(),n=t.slice();i[l]+=r/2,n[l]-=r/2,e?M.push(i,n):M.push(n,i)}function n(){var e=t(Math.min(f,p,g,m)),i=t(Math.max(f,p,g,m));return e[l]-=r/2,i[l]-=r/2,{x:e[0],y:e[1],width:u?r:i[0]-e[0],height:u?i[1]-e[1]:r}}var o=arguments,c=o[0],d=o[h.length+1],f=o[1],p=o[2],g=o[3],m=o[4],v=Math.min(f,p),y=Math.max(f,p),x=t(v),_=t(y),b=t(g),w=t(m),S=[[w,_],[b,x]],M=[];e(_,0),e(x,1),a.setItemLayout(d,{chartLayout:s,sign:f>p?-1:fp?_[u]:x[u],bodyEnds:M,whiskerEnds:S,brushRect:n()})},!0)})}},function(t,e){var i=["itemStyle","normal","borderColor"],n=["itemStyle","normal","borderColor0"],o=["itemStyle","normal","color"],a=["itemStyle","normal","color0"];t.exports=function(t,e){t.eachRawSeriesByType("candlestick",function(e){var r=e.getData();r.setVisual({legendSymbol:"roundRect"}),t.isSeriesFiltered(e)||r.each(function(t){var e=r.getItemModel(t),s=r.getItemLayout(t).sign;r.setItemVisual(t,{color:e.get(s>0?o:a),borderColor:e.get(s>0?i:n)})})})}},function(t,e,i){var n=i(1);t.exports=function(t){t&&n.isArray(t.series)&&n.each(t.series,function(t){n.isObject(t)&&"k"===t.type&&(t.type="candlestick")})}},function(t,e,i){function n(t){var e,i=t.type;if("path"===i){var n=t.shape;e=d.makePath(n.pathData,null,{x:n.x||0,y:n.y||0,width:n.width||0,height:n.height||0},"center"),e.__customPathData=t.pathData}else if("image"===i)e=new d.Image({}),e.__customImagePath=t.style.image;else if("text"===i)e=new d.Text({}),e.__customText=t.style.text;else{var o=d[i.charAt(0).toUpperCase()+i.slice(1)];e=new o}return e.__customGraphicType=i,e}function o(t,e,i,n,o,r){var s={},l=i.style||{};if(i.shape&&(s.shape=h.clone(i.shape)),i.position&&(s.position=i.position.slice()),i.scale&&(s.scale=i.scale.slice()),i.origin&&(s.origin=i.origin.slice()),i.rotation&&(s.rotation=i.rotation),"image"===t.type&&i.style){var u=s.style={};h.each(["x","y","width","height"],function(e){a(e,u,l,t.style,r)})}if("text"===t.type&&i.style){var u=s.style={};h.each(["x","y"],function(e){a(e,u,l,t.style,r)})}if("group"!==t.type&&(t.useStyle(l),r)){t.style.opacity=0;var c=l.opacity;null==c&&(c=1),d.initProps(t,{style:{opacity:c}},n,e)}r?t.attr(s):d.updateProps(t,s,n,e),t.attr({z2:i.z2||0,silent:i.silent}),i.styleEmphasis!==!1&&d.setHoverStyle(t,i.styleEmphasis)}function a(t,e,i,n,o){null==i[t]||o||(e[t]=i[t],i[t]=n[t])}function r(t,e,i,n){function o(t){null==t&&(t=w),O&&(S=e.getItemModel(t),M=S.getModel(y),I=S.getModel(x),T=f.findLabelValueDim(e),A=e.getItemVisual(t,"color"),O=!1)}function a(t,i){return null==i&&(i=w),e.get(e.getDimension(t||0),i)}function r(i,n){null==n&&(n=w),o(n);var a=S.getModel(m).getItemStyle();null!=A&&(a.fill=A);var r=e.getItemVisual(n,"opacity");return null!=r&&(a.opacity=r),f.setTextToStyle(e,n,T,a,t,M,A),i&&h.extend(a,i),a}function l(i,n){null==n&&(n=w),o(n);var a=S.getModel(v).getItemStyle();return f.setTextToStyle(e,n,T,a,t,I,A),i&&h.extend(a,i),a}function u(t,i){return null==i&&(i=w),e.getItemVisual(i,t)}function c(t){if(L.getBaseAxis){var e=L.getBaseAxis();return g.getLayoutOnAxis(h.defaults({axis:e},t),n)}}function p(){return i.getCurrentSeriesIndices()}function b(t){return d.getFont(t,i)}var w,S,M,I,T,A,C=t.get("renderItem"),L=t.coordinateSystem,D=L.prepareCustoms?L.prepareCustoms():_[L.type](L),P=h.defaults({getWidth:n.getWidth,getHeight:n.getHeight,getZr:n.getZr,getDevicePixelRatio:n.getDevicePixelRatio,value:a,style:r,styleEmphasis:l,visual:u,barLayout:c,currentSeriesIndices:p,font:b},D.api),k={context:{},seriesId:t.id,seriesName:t.name,seriesIndex:t.seriesIndex,coordSys:D.coordSys,dataInsideLength:e.count(),encode:s(t.getData())},O=!0;return function(t){return w=t,O=!0,C&&C(h.defaults({dataIndexInside:t,dataIndex:e.getRawIndex(t)},k),P)||{}}}function s(t){var e={};return h.each(t.dimensions,function(i,n){var o=t.getDimensionInfo(i);if(!o.isExtraCoord){var a=o.coordDim,r=e[a]=e[a]||[];r[o.coordDimIndex]=n}}),e}function l(t,e,i,n,o,a){t=u(t,e,i,n,o,a),t&&a.setItemGraphicEl(e,t)}function u(t,e,i,a,r,s){var l=i.type;if(!t||l===t.__customGraphicType||"path"===l&&i.pathData===t.__customPathData||"image"===l&&i.style.image===t.__customImagePath||"text"===l&&i.style.text===t.__customText||(r.remove(t),t=null),null!=l){var c=!t;return!t&&(t=n(i)),o(t,e,i,a,s,c),"group"===l&&h.each(i.children,function(i,n){u(t.childAt(n),e,i,a,t,s)}),r.add(t),t}}var c=i(2),h=i(1),d=i(3),f=i(92),p=i(28),g=i(82),m=["itemStyle","normal"],v=["itemStyle","emphasis"],y=["label","normal"],x=["label","emphasis"],_={cartesian2d:i(397),geo:i(404),singleAxis:i(422),polar:i(415),calendar:i(396)};c.extendSeriesModel({type:"series.custom",dependencies:["grid","polar","geo","singleAxis","calendar"],defaultOption:{coordinateSystem:"cartesian2d",zlevel:0,z:2,legendHoverLink:!0},getInitialData:function(t,e){return p(t.data,this,e)}}),c.extendChartView({type:"custom",_data:null,render:function(t,e,i){var n=this._data,o=t.getData(),a=this.group,s=r(t,o,e,i);o.diff(n).add(function(e){o.hasValue(e)&&l(null,e,s(e),t,a,o)}).update(function(e,i){var r=n.getItemGraphicEl(i);o.hasValue(e)?l(r,e,s(e),t,a,o):r&&a.remove(r)}).remove(function(t){var e=n.getItemGraphicEl(t);e&&a.remove(e)}).execute(),this._data=o},dispose:h.noop})},function(t,e,i){var n=i(1),o=i(2);i(283),i(284),o.registerVisual(n.curry(i(50),"effectScatter","circle",null)),o.registerLayout(n.curry(i(61),"effectScatter"))},function(t,e,i){"use strict";var n=i(28),o=i(17);t.exports=o.extend({type:"series.effectScatter",dependencies:["grid","polar"],getInitialData:function(t,e){var i=n(t.data,this,e);return i},brushSelector:"point",defaultOption:{coordinateSystem:"cartesian2d",zlevel:0,z:2,legendHoverLink:!0,effectType:"ripple",progressive:0,showEffectOn:"render",rippleEffect:{period:4,scale:2.5,brushType:"fill"},symbolSize:10}})},function(t,e,i){var n=i(44),o=i(311);i(2).extendChartView({type:"effectScatter",init:function(){this._symbolDraw=new n(o)},render:function(t,e,i){var n=t.getData(),o=this._symbolDraw;o.updateData(n),this.group.add(o.group)},updateLayout:function(){this._symbolDraw.updateLayout()},remove:function(t,e){this._symbolDraw&&this._symbolDraw.remove(e)},dispose:function(){}})},function(t,e,i){var n=i(1),o=i(2);i(286),i(287),o.registerVisual(n.curry(i(84),"funnel")),o.registerLayout(i(288)),o.registerProcessor(n.curry(i(63),"funnel"))},function(t,e,i){"use strict";var n=i(14),o=i(5),a=i(25),r=i(2).extendSeriesModel({type:"series.funnel",init:function(t){r.superApply(this,"init",arguments),this.legendDataProvider=function(){return this.getRawData()},this._defaultLabelLine(t)},getInitialData:function(t,e){var i=a(["value"],t.data),o=new n(i,this);return o.initData(t.data),o},_defaultLabelLine:function(t){o.defaultEmphasis(t.labelLine,["show"]);var e=t.labelLine.normal,i=t.labelLine.emphasis;e.show=e.show&&t.label.normal.show,i.show=i.show&&t.label.emphasis.show},getDataParams:function(t){var e=this.getData(),i=r.superCall(this,"getDataParams",t),n=e.getSum("value");return i.percent=n?+(e.get("value",t)/n*100).toFixed(2):0,i.$vars.push("percent"),i},defaultOption:{zlevel:0,z:2,legendHoverLink:!0,left:80,top:60,right:80,bottom:60,minSize:"0%",maxSize:"100%",sort:"descending",gap:0,funnelAlign:"center",label:{normal:{show:!0,position:"outer"},emphasis:{show:!0}},labelLine:{normal:{show:!0,length:20,lineStyle:{width:1,type:"solid"}},emphasis:{}},itemStyle:{normal:{borderColor:"#fff",borderWidth:1},emphasis:{}}}});t.exports=r},function(t,e,i){function n(t,e){function i(){r.ignore=r.hoverIgnore,s.ignore=s.hoverIgnore}function n(){r.ignore=r.normalIgnore,s.ignore=s.normalIgnore}a.Group.call(this);var o=new a.Polygon,r=new a.Polyline,s=new a.Text;this.add(o),this.add(r),this.add(s),this.updateData(t,e,!0),this.on("emphasis",i).on("normal",n).on("mouseover",i).on("mouseout",n)}function o(t,e,i,n){var o=n.getModel("textStyle"),a=n.get("position"),s="inside"===a||"inner"===a||"center"===a;return{fill:o.getTextColor()||(s?"#fff":t.getItemVisual(e,"color")),textFont:o.getFont(),text:r.retrieve(t.hostModel.getFormattedLabel(e,i),t.getName(e))}}var a=i(3),r=i(1),s=n.prototype,l=["itemStyle","normal","opacity"];s.updateData=function(t,e,i){var n=this.childAt(0),o=t.hostModel,s=t.getItemModel(e),u=t.getItemLayout(e),c=t.getItemModel(e).get(l);c=null==c?1:c,n.useStyle({}),i?(n.setShape({points:u.points}),n.setStyle({opacity:0}),a.initProps(n,{style:{opacity:c}},o,e)):a.updateProps(n,{style:{opacity:c},shape:{points:u.points}},o,e);var h=s.getModel("itemStyle"),d=t.getItemVisual(e,"color");n.setStyle(r.defaults({lineJoin:"round",fill:d},h.getModel("normal").getItemStyle(["opacity"]))),n.hoverStyle=h.getModel("emphasis").getItemStyle(),this._updateLabel(t,e),a.setHoverStyle(this)},s._updateLabel=function(t,e){var i=this.childAt(1),n=this.childAt(2),r=t.hostModel,s=t.getItemModel(e),l=t.getItemLayout(e),u=l.label,c=t.getItemVisual(e,"color");a.updateProps(i,{shape:{points:u.linePoints||u.linePoints}},r,e),a.updateProps(n,{style:{x:u.x,y:u.y}},r,e),n.attr({style:{textAlign:u.textAlign,textVerticalAlign:u.verticalAlign,textFont:u.font},rotation:u.rotation,origin:[u.x,u.y],z2:10});var h=s.getModel("label.normal"),d=s.getModel("label.emphasis"),f=s.getModel("labelLine.normal"),p=s.getModel("labelLine.emphasis");n.setStyle(o(t,e,"normal",h)),n.ignore=n.normalIgnore=!h.get("show"),n.hoverIgnore=!d.get("show"),i.ignore=i.normalIgnore=!f.get("show"),i.hoverIgnore=!p.get("show"),i.setStyle({stroke:c}),i.setStyle(f.getModel("lineStyle").getLineStyle()),n.hoverStyle=o(t,e,"emphasis",d),i.hoverStyle=p.getModel("lineStyle").getLineStyle()},r.inherits(n,a.Group);var u=i(30).extend({type:"funnel",render:function(t,e,i){var o=t.getData(),a=this._data,r=this.group;o.diff(a).add(function(t){var e=new n(o,t);o.setItemGraphicEl(t,e),r.add(e)}).update(function(t,e){var i=a.getItemGraphicEl(e);i.updateData(o,t),r.add(i),o.setItemGraphicEl(t,i)}).remove(function(t){var e=a.getItemGraphicEl(t);r.remove(e)}).execute(),this._data=o},remove:function(){this.group.removeAll(),this._data=null},dispose:function(){}});t.exports=u},function(t,e,i){function n(t,e){return r.getLayoutRect(t.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()})}function o(t,e){for(var i=t.mapArray("value",function(t){return t}),n=[],o="ascending"===e,a=0,r=t.count();a=t&&(0===e?0:n[e-1][0]).4?"bottom":"middle",textAlign:k<-.4?"left":k>.4?"right":"center"},silent:!0});"auto"===N.style.fill&&N.setStyle({fill:n(P/b)}),d.add(N)}if(x.get("show")&&P!==b){for(var V=0;V<=w;V++){var k=Math.cos(I),O=Math.sin(I),B=new r.Line({shape:{x1:k*g+f,y1:O*g+p,x2:k*(g-M)+f,y2:O*(g-M)+p},silent:!0,style:L});"auto"===L.stroke&&B.setStyle({stroke:n((P+V/w)/b)}),d.add(B),I+=A}I-=A}else I+=T}},_renderPointer:function(t,e,i,n,o,u,c,h){var d=this.group,f=this._data;if(!t.get("pointer.show"))return void(f&&f.eachItemGraphicEl(function(t){d.remove(t)}));var p=[+t.get("min"),+t.get("max")],g=[u,c],m=t.getData();m.diff(f).add(function(e){var i=new a({shape:{angle:u}});r.initProps(i,{shape:{angle:s.linearMap(m.get("value",e),p,g,!0)}},t),d.add(i),m.setItemGraphicEl(e,i)}).update(function(e,i){var n=f.getItemGraphicEl(i);r.updateProps(n,{shape:{angle:s.linearMap(m.get("value",e),p,g,!0)}},t),d.add(n),m.setItemGraphicEl(e,n)}).remove(function(t){var e=f.getItemGraphicEl(t);d.remove(e)}).execute(),m.eachItemGraphicEl(function(t,e){var i=m.getItemModel(e),a=i.getModel("pointer");t.setShape({x:o.cx,y:o.cy,width:l(a.get("width"),o.r),r:l(a.get("length"),o.r)}),t.useStyle(i.getModel("itemStyle.normal").getItemStyle()),"auto"===t.style.fill&&t.setStyle("fill",n(s.linearMap(m.get("value",e),p,[0,1],!0))),r.setHoverStyle(t,i.getModel("itemStyle.emphasis").getItemStyle())}),this._data=m},_renderTitle:function(t,e,i,n,o){var a=t.getModel("title");if(a.get("show")){var u=a.getModel("textStyle"),c=a.get("offsetCenter"),h=o.cx+l(c[0],o.r),d=o.cy+l(c[1],o.r),f=new r.Text({style:{x:h,y:d,text:t.getData().getName(0),fill:u.getTextColor(),textFont:u.getFont(),textAlign:"center",textVerticalAlign:"middle"}});if("auto"===f.style.fill){var p=+t.get("min"),g=+t.get("max"),m=t.getData().get("value",0);f.setStyle("fill",n(s.linearMap(m,[p,g],[0,1],!0)))}this.group.add(f)}},_renderDetail:function(t,e,i,n,a){var u=t.getModel("detail"),c=+t.get("min"),h=+t.get("max");if(u.get("show")){var d=u.getModel("textStyle"),f=u.get("offsetCenter"),p=a.cx+l(f[0],a.r),g=a.cy+l(f[1],a.r),m=l(u.get("width"),a.r),v=l(u.get("height"),a.r),y=t.getData().get("value",0),x=new r.Rect({shape:{x:p-m/2,y:g-v/2,width:m,height:v},style:{text:o(y,u.get("formatter")),fill:u.get("backgroundColor"),textFill:d.getTextColor(),textFont:d.getFont()}});"auto"===x.style.textFill&&x.setStyle("textFill",n(s.linearMap(y,[c,h],[0,1],!0))),x.setStyle(u.getItemStyle(["color"])),this.group.add(x)}}});t.exports=c},function(t,e,i){t.exports=i(8).extend({type:"echartsGaugePointer",shape:{angle:0,width:10,r:10,x:0,y:0},buildPath:function(t,e){var i=Math.cos,n=Math.sin,o=e.r,a=e.width,r=e.angle,s=e.x-i(r)*a*(a>=o/3?1:2),l=e.y-n(r)*a*(a>=o/3?1:2);r=e.angle-Math.PI/2,t.moveTo(s,l),t.lineTo(e.x+i(r)*a,e.y+n(r)*a),t.lineTo(e.x+i(e.angle)*o,e.y+n(e.angle)*o),t.lineTo(e.x-i(r)*a,e.y-n(r)*a),t.lineTo(s,l)}})},function(t,e,i){var n=i(2),o=i(1);i(294),i(295),i(304),n.registerProcessor(i(297)),n.registerVisual(o.curry(i(50),"graph","circle",null)),n.registerVisual(i(298)),n.registerVisual(i(301)),n.registerLayout(i(305)),n.registerLayout(i(299)),n.registerLayout(i(303)),n.registerCoordinateSystem("graphView",{create:i(300)})},function(t,e,i){"use strict";var n=i(14),o=i(1),a=i(5),r=i(10),s=i(7),l=i(248),u=i(2).extendSeriesModel({type:"series.graph",init:function(t){u.superApply(this,"init",arguments),this.legendDataProvider=function(){return this._categoriesData},this.fillDataTextStyle(t.edges||t.links),this._updateCategoriesData()},mergeOption:function(t){u.superApply(this,"mergeOption",arguments),this.fillDataTextStyle(t.edges||t.links),this._updateCategoriesData()},mergeDefaultAndTheme:function(t){u.superApply(this,"mergeDefaultAndTheme",arguments),a.defaultEmphasis(t.edgeLabel,a.LABEL_OPTIONS)},getInitialData:function(t,e){function i(t,i){function n(t){return t=this.parsePath(t),t&&"label"===t[0]?s:this.parentModel}t.wrapMethod("getItemModel",function(t){var e=a._categoriesModels,i=t.getShallow("category"),n=e[i];return n&&(n.parentModel=t.parentModel,t.parentModel=n),t});var o=a.getModel("edgeLabel"),s=new r({label:o.option},o.parentModel,e);i.wrapMethod("getItemModel",function(t){return t.customizeGetParent(n),t})}var n=t.edges||t.links||[],o=t.data||t.nodes||[],a=this;if(o&&n)return l(o,n,this,!0,i).data},getGraph:function(){return this.getData().graph},getEdgeData:function(){return this.getGraph().edgeData},getCategoriesData:function(){return this._categoriesData},formatTooltip:function(t,e,i){if("edge"===i){var n=this.getData(),o=this.getDataParams(t,i),a=n.graph.getEdgeByIndex(t),r=n.getName(a.node1.dataIndex),l=n.getName(a.node2.dataIndex),c=[];return null!=r&&c.push(r),null!=l&&c.push(l),c=s.encodeHTML(c.join(" > ")),o.value&&(c+=" : "+s.encodeHTML(o.value)),c}return u.superApply(this,"formatTooltip",arguments)},_updateCategoriesData:function(){var t=o.map(this.option.categories||[],function(t){return null!=t.value?t:o.extend({value:0},t)}),e=new n(["value"],this);e.initData(t),this._categoriesData=e,this._categoriesModels=e.mapArray(function(t){return e.getItemModel(t,!0)})},setZoom:function(t){this.option.zoom=t},setCenter:function(t){this.option.center=t},isAnimationEnabled:function(){return u.superCall(this,"isAnimationEnabled")&&!("force"===this.get("layout")&&this.get("force.layoutAnimation"))},defaultOption:{zlevel:0,z:2,coordinateSystem:"view",legendHoverLink:!0,hoverAnimation:!0,layout:null,focusNodeAdjacency:!1,circular:{rotateLabel:!1},force:{initLayout:null,repulsion:[0,50],gravity:.1,edgeLength:30,layoutAnimation:!0},left:"center",top:"center",symbol:"circle",symbolSize:10,edgeSymbol:["none","none"],edgeSymbolSize:10,edgeLabel:{normal:{position:"middle"},emphasis:{}},draggable:!1,roam:!1,center:null,zoom:1,nodeScaleRatio:.6,label:{normal:{show:!1,formatter:"{b}"},emphasis:{show:!0}},itemStyle:{normal:{},emphasis:{}},lineStyle:{normal:{color:"#aaa",width:1,curveness:0,opacity:.5},emphasis:{}}}});t.exports=u},function(t,e,i){function n(t,e){return t.getVisual("opacity")||t.getModel().get(e)}var o=i(44),a=i(107),r=i(95),s=i(251),l=i(128),u=i(3),c=i(296),h=i(1),d=["itemStyle","normal","opacity"],f=["lineStyle","normal","opacity"];i(2).extendChartView({type:"graph",init:function(t,e){var i=new o,n=new a,s=this.group;this._controller=new r(e.getZr()),this._controllerHost={target:s},s.add(i.group),s.add(n.group),this._symbolDraw=i,this._lineDraw=n,this._firstRender=!0},render:function(t,e,i){var n=t.coordinateSystem;this._model=t,this._nodeScaleRatio=t.get("nodeScaleRatio");var o=this._symbolDraw,a=this._lineDraw,r=this.group;if("view"===n.type){var s={position:n.position,scale:n.scale};this._firstRender?r.attr(s):u.updateProps(r,s,t)}c(t.getGraph(),this._getNodeGlobalScale(t));var l=t.getData();o.updateData(l);var h=t.getEdgeData();a.updateData(h),this._updateNodeAndLinkScale(),this._updateController(t,e,i),clearTimeout(this._layoutTimeout);var d=t.forceLayout,f=t.get("force.layoutAnimation");d&&this._startForceLayoutIteration(d,f),l.eachItemGraphicEl(function(e,n){var o=l.getItemModel(n);e.off("drag").off("dragend");var a=l.getItemModel(n).get("draggable");a&&e.on("drag",function(){d&&(d.warmUp(),!this._layouting&&this._startForceLayoutIteration(d,f),d.setFixed(n),l.setItemLayout(n,e.position))},this).on("dragend",function(){d&&d.setUnfixed(n)},this),e.setDraggable(a&&d),e.off("mouseover",e.__focusNodeAdjacency),e.off("mouseout",e.__unfocusNodeAdjacency),o.get("focusNodeAdjacency")&&(e.on("mouseover",e.__focusNodeAdjacency=function(){i.dispatchAction({type:"focusNodeAdjacency",seriesId:t.id,dataIndex:e.dataIndex})}),e.on("mouseout",e.__unfocusNodeAdjacency=function(){i.dispatchAction({type:"unfocusNodeAdjacency",seriesId:t.id})}))},this);var p="circular"===t.get("layout")&&t.get("circular.rotateLabel"),g=l.getLayout("cx"),m=l.getLayout("cy");l.eachItemGraphicEl(function(t,e){var i=t.getSymbolPath();if(p){var n=l.getItemLayout(e),o=Math.atan2(n[1]-m,n[0]-g);o<0&&(o=2*Math.PI+o);var a=n[0]=0?n+=g:n-=g:_>=0?n-=g:n+=g}return n}var o=i(20),a=i(6),r=[],s=[],l=[],u=o.quadraticAt,c=a.distSquare,h=Math.abs;t.exports=function(t,e){function i(t){var e=t.getVisual("symbolSize");return e instanceof Array&&(e=(e[0]+e[1])/2),e}var r=[],s=o.quadraticSubdivide,l=[[],[],[]],u=[[],[]],c=[];e/=2,t.eachEdge(function(t,o){var h=t.getLayout(),d=t.getVisual("fromSymbol"),f=t.getVisual("toSymbol");h.__original||(h.__original=[a.clone(h[0]),a.clone(h[1])],h[2]&&h.__original.push(a.clone(h[2])));var p=h.__original;if(null!=h[2]){if(a.copy(l[0],p[0]),a.copy(l[1],p[2]),a.copy(l[2],p[1]),d&&"none"!=d){var g=i(t.node1),m=n(l,p[0],g*e);s(l[0][0],l[1][0],l[2][0],m,r),l[0][0]=r[3],l[1][0]=r[4],s(l[0][1],l[1][1],l[2][1],m,r),l[0][1]=r[3],l[1][1]=r[4]}if(f&&"none"!=f){var g=i(t.node2),m=n(l,p[1],g*e);s(l[0][0],l[1][0],l[2][0],m,r),l[1][0]=r[1],l[2][0]=r[2],s(l[0][1],l[1][1],l[2][1],m,r),l[1][1]=r[1],l[2][1]=r[2]}a.copy(h[0],l[0]),a.copy(h[1],l[2]),a.copy(h[2],l[1])}else{if(a.copy(u[0],p[0]),a.copy(u[1],p[1]),a.sub(c,u[1],u[0]),a.normalize(c,c),d&&"none"!=d){var g=i(t.node1);a.scaleAndAdd(u[0],u[0],c,g*e)}if(f&&"none"!=f){var g=i(t.node2);a.scaleAndAdd(u[1],u[1],c,-g*e)}a.copy(h[0],u[0]),a.copy(h[1],u[1])}})}},function(t,e){t.exports=function(t){var e=t.findComponents({mainType:"legend"});e&&e.length&&t.eachSeriesByType("graph",function(t){var i=t.getCategoriesData(),n=t.getGraph(),o=n.data,a=i.mapArray(i.getName);o.filterSelf(function(t){var i=o.getItemModel(t),n=i.getShallow("category");if(null!=n){"number"==typeof n&&(n=a[n]);for(var r=0;r0){var C=r(x)?l:u;x>0&&(x=x*T+M),b[w++]=C[A],b[w++]=C[A+1],b[w++]=C[A+2],b[w++]=C[A+3]*x*256}else w+=4}return d.putImageData(_,0,0),h},_getBrush:function(){var t=this._brushCanvas||(this._brushCanvas=a.createCanvas()),e=this.pointSize+this.blurSize,i=2*e;t.width=i,t.height=i;var n=t.getContext("2d");return n.clearRect(0,0,i,i),n.shadowOffsetX=i,n.shadowBlur=this.blurSize,n.shadowColor="#000",n.beginPath(),n.arc(-e,e,this.pointSize,0,2*Math.PI,!0),n.closePath(),n.fill(),t},_getGradient:function(t,e,i){for(var n=this._gradientPixels,o=n[i]||(n[i]=new Uint8ClampedArray(1024)),a=[0,0,0,0],r=0,s=0;s<256;s++)e[i](s/255,!0,a),o[r++]=a[0],o[r++]=a[1],o[r++]=a[2],o[r++]=a[3];return o}},t.exports=n},function(t,e,i){var n=i(17),o=i(28);t.exports=n.extend({type:"series.heatmap",getInitialData:function(t,e){return o(t.data,this,e)},defaultOption:{coordinateSystem:"cartesian2d",zlevel:0,z:2,geoIndex:0,blurSize:30,pointSize:20,maxOpacity:1,minOpacity:0}})},function(t,e,i){function n(t,e,i){var n=t[1]-t[0];e=l.map(e,function(e){return{interval:[(e.interval[0]-t[0])/n,(e.interval[1]-t[0])/n]}});var o=e.length,a=0;return function(t){for(var n=a;n=0;n--){var r=e[n].interval;if(r[0]<=t&&t<=r[1]){a=n;break}}return n>=0&&n=e[0]&&t<=e[1]}}function a(t){var e=t.dimensions;return"lng"===e[0]&&"lat"===e[1]}var r=i(3),s=i(307),l=i(1);t.exports=i(2).extendChartView({type:"heatmap",render:function(t,e,i){var n;e.eachComponent("visualMap",function(e){e.eachTargetSeries(function(i){i===t&&(n=e)})}),this.group.removeAll();var o=t.coordinateSystem;"cartesian2d"===o.type||"calendar"===o.type?this._renderOnCartesianAndCalendar(o,t,i):a(o)&&this._renderOnGeo(o,t,n,i)},dispose:function(){},_renderOnCartesianAndCalendar:function(t,e,i){if("cartesian2d"===t.type)var n=t.getAxis("x"),o=t.getAxis("y"),a=n.getBandWidth(),s=o.getBandWidth();var u=this.group,c=e.getData(),h="itemStyle.normal",d="itemStyle.emphasis",f="label.normal",p="label.emphasis",g=e.getModel(h).getItemStyle(["color"]),m=e.getModel(d).getItemStyle(),v=e.getModel("label.normal"),y=e.getModel("label.emphasis"),x=t.type,_="cartesian2d"===x?[e.coordDimToDataDim("x")[0],e.coordDimToDataDim("y")[0],e.coordDimToDataDim("value")[0]]:[e.coordDimToDataDim("time")[0],e.coordDimToDataDim("value")[0]];c.each(function(i){var n;if("cartesian2d"===x){if(isNaN(c.get(_[2],i)))return;var o=t.dataToPoint([c.get(_[0],i),c.get(_[1],i)]);n=new r.Rect({shape:{x:o[0]-a/2,y:o[1]-s/2,width:a,height:s},style:{fill:c.getItemVisual(i,"color"),opacity:c.getItemVisual(i,"opacity")}})}else{if(isNaN(c.get(_[1],i)))return;n=new r.Rect({z2:1,shape:t.dataToRect([c.get(_[0],i)]).contentShape,style:{fill:c.getItemVisual(i,"color"),opacity:c.getItemVisual(i,"opacity")}})}var b=c.getItemModel(i);c.hasItemOption&&(g=b.getModel(h).getItemStyle(["color"]),m=b.getModel(d).getItemStyle(),v=b.getModel(f),y=b.getModel(p));var w=e.getRawValue(i),S="-";w&&null!=w[2]&&(S=w[2]),v.getShallow("show")&&(r.setText(g,v),g.text=e.getFormattedLabel(i,"normal")||S),y.getShallow("show")&&(r.setText(m,y),m.text=e.getFormattedLabel(i,"emphasis")||S),n.setStyle(g),r.setHoverStyle(n,c.hasItemOption?m:l.extend({},m)),u.add(n),c.setItemGraphicEl(i,n)})},_renderOnGeo:function(t,e,i,a){var l=i.targetVisuals.inRange,u=i.targetVisuals.outOfRange,c=e.getData(),h=this._hmLayer||this._hmLayer||new s;h.blurSize=e.get("blurSize"),h.pointSize=e.get("pointSize"),h.minOpacity=e.get("minOpacity"),h.maxOpacity=e.get("maxOpacity");var d=t.getViewRect().clone(),f=t.getRoamTransform().transform;d.applyTransform(f);var p=Math.max(d.x,0),g=Math.max(d.y,0),m=Math.min(d.width+d.x,a.getWidth()),v=Math.min(d.height+d.y,a.getHeight()),y=m-p,x=v-g,_=c.mapArray(["lng","lat","value"],function(e,i,n){var o=t.dataToPoint([e,i]);return o[0]-=p,o[1]-=g,o.push(n),o}),b=i.getExtent(),w="visualMap.continuous"===i.type?o(b,i.option.range):n(b,i.getPieceList(),i.option.selected);h.update(_,y,x,l.color.getNormalizer(),{inRange:l.color.getColorMapper(),outOfRange:u.color.getColorMapper()},w);var S=new r.Image({style:{width:y,height:x,x:p,y:g,image:h.canvas},silent:!0});this.group.add(S)}})},function(t,e,i){function n(t,e,i){r.call(this,t,e,i),this._lastFrame=0,this._lastFramePercent=0}var o=i(247),a=i(1),r=i(246),s=i(6),l=n.prototype;l.createLine=function(t,e,i){return new o(t,e,i)},l.updateAnimationPoints=function(t,e){this._points=e;for(var i=[0],n=0,o=1;o=0&&!(n[a]<=e);a--);a=Math.min(a,o-2)}else{for(var a=r;ae);a++);a=Math.min(a-1,o-2)}s.lerp(t.position,i[a],i[a+1],(e-n[a])/(n[a+1]-n[a]));var u=i[a+1][0]-i[a][0],c=i[a+1][1]-i[a][1];t.rotation=-Math.atan2(c,u)-Math.PI/2,this._lastFrame=a,this._lastFramePercent=e,t.ignore=!1}},a.inherits(n,r),t.exports=n},function(t,e,i){function n(t){return r.isArray(t)||(t=[+t,+t]),t}function o(t,e){t.eachChild(function(t){t.attr({z:e.z,zlevel:e.zlevel,style:{stroke:"stroke"===e.brushType?e.color:null,fill:"fill"===e.brushType?e.color:null}})})}function a(t,e){h.call(this);var i=new c(t,e),n=new h;this.add(i),this.add(n),n.beforeUpdate=function(){this.attr(i.getScale())},this.updateData(t,e)}var r=i(1),s=i(24),l=i(3),u=i(4),c=i(54),h=l.Group,d=3,f=a.prototype;f.stopEffectAnimation=function(){this.childAt(1).removeAll()},f.startEffectAnimation=function(t){for(var e=t.symbolType,i=t.color,n=this.childAt(1),a=0;a2?t.quadraticCurveTo(a[2][0],a[2][1],a[1][0],a[1][1]):t.lineTo(a[1][0],a[1][1])}},findDataIndex:function(t,e){for(var i=this.shape,n=i.segs,o=i.polyline,s=Math.max(this.style.lineWidth,1),l=0;l2){if(a.containStroke(u[0][0],u[0][1],u[2][0],u[2][1],u[1][0],u[1][1],s,t,e))return l}else if(r.containStroke(u[0][0],u[0][1],u[1][0],u[1][1],s,t,e))return l}return-1}}),l=n.prototype;l.updateData=function(t){this.group.removeAll();var e=this._lineEl,i=t.hostModel;e.setShape({segs:t.mapArray(t.getItemLayout),polyline:i.get("polyline")}),e.useStyle(i.getModel("lineStyle.normal").getLineStyle());var n=t.getVisual("color");n&&e.setStyle("stroke",n),e.setStyle("fill"),e.seriesIndex=i.seriesIndex,e.on("mousemove",function(t){e.dataIndex=null;var i=e.findDataIndex(t.offsetX,t.offsetY);i>0&&(e.dataIndex=i)}),this.group.add(e)},l.updateLayout=function(t){var e=t.getData();this._lineEl.setShape({segs:e.mapArray(e.getItemLayout)})},l.remove=function(){this.group.removeAll()},t.exports=n},function(t,e,i){function n(t,e,i,n){l.Group.call(this),this.bodyIndex,this.whiskerIndex,this.styleUpdater=i,this._createContent(t,e,n),this.updateData(t,e,n),this._seriesModel}function o(t,e,i){return s.map(t,function(t){return t=t.slice(),t[e]=i.initBaseline,t})}function a(t){var e={};return s.each(t,function(t,i){e["ends"+i]=t}),e}function r(t){this.group=new l.Group,this.styleUpdater=t}var s=i(1),l=i(3),u=i(8),c=u.extend({type:"whiskerInBox",shape:{},buildPath:function(t,e){for(var i in e)if(e.hasOwnProperty(i)&&0===i.indexOf("ends")){var n=e[i];t.moveTo(n[0][0],n[0][1]),t.lineTo(n[1][0],n[1][1])}}}),h=n.prototype;h._createContent=function(t,e,i){var n=t.getItemLayout(e),r="horizontal"===n.chartLayout?1:0,u=0;this.add(new l.Polygon({shape:{points:i?o(n.bodyEnds,r,n):n.bodyEnds},style:{strokeNoScale:!0},z2:100})),this.bodyIndex=u++;var h=s.map(n.whiskerEnds,function(t){return i?o(t,r,n):t});this.add(new c({shape:a(h),style:{strokeNoScale:!0},z2:100})),this.whiskerIndex=u++},h.updateData=function(t,e,i){var n=this._seriesModel=t.hostModel,o=t.getItemLayout(e),r=l[i?"initProps":"updateProps"];r(this.childAt(this.bodyIndex),{shape:{points:o.bodyEnds}},n,e),r(this.childAt(this.whiskerIndex),{shape:a(o.whiskerEnds)},n,e),this.styleUpdater.call(null,this,t,e)},s.inherits(n,l.Group);var d=r.prototype;d.updateData=function(t){var e=this.group,i=this._data,o=this.styleUpdater;t.diff(i).add(function(i){if(t.hasValue(i)){var a=new n(t,i,o,(!0));t.setItemGraphicEl(i,a),e.add(a)}}).update(function(a,r){var s=i.getItemGraphicEl(r);return t.hasValue(a)?(s?s.updateData(t,a):s=new n(t,a,o),e.add(s),void t.setItemGraphicEl(a,s)):void e.remove(s)}).remove(function(t){var n=i.getItemGraphicEl(t);n&&e.remove(n)}).execute(),this._data=t},d.remove=function(){var t=this.group,e=this._data;this._data=null,e&&e.eachItemGraphicEl(function(e){e&&t.remove(e)})},t.exports=r},function(t,e,i){i(315),i(316);var n=i(2);n.registerLayout(i(317)),n.registerVisual(i(318))},function(t,e,i){"use strict";function n(t){var e=t.data;e&&e[0]&&e[0][0]&&e[0][0].coord&&(t.data=r.map(e,function(t){var e=[t[0].coord,t[1].coord],i={coords:e};return t[0].name&&(i.fromName=t[0].name),t[1].name&&(i.toName=t[1].name),r.mergeAll([i,t[0],t[1]])}))}var o=i(17),a=i(14),r=i(1),s=i(7),l=(i(26),o.extend({type:"series.lines",dependencies:["grid","polar"],visualColorAccessPath:"lineStyle.normal.color",init:function(t){n(t),l.superApply(this,"init",arguments)},mergeOption:function(t){n(t),l.superApply(this,"mergeOption",arguments)},getInitialData:function(t,e){var i=new a(["value"],this);return i.hasItemOption=!1,i.initData(t.data,[],function(t,e,n,o){if(t instanceof Array)return NaN;i.hasItemOption=!0;var a=t.value;return null!=a?a instanceof Array?a[o]:a:void 0}),i},formatTooltip:function(t){var e=this.getData(),i=e.getItemModel(t),n=i.get("name");if(n)return n;var o=i.get("fromName"),a=i.get("toName"),r=[];return null!=o&&r.push(o),null!=a&&r.push(a),s.encodeHTML(r.join(" > "))},defaultOption:{coordinateSystem:"geo",zlevel:0,z:2,legendHoverLink:!0,hoverAnimation:!0,xAxisIndex:0,yAxisIndex:0,symbol:["none","none"],symbolSize:[10,10],geoIndex:0,effect:{show:!1,period:4,constantSpeed:0,symbol:"circle",symbolSize:3,loop:!0,trailLength:.2},large:!1,largeThreshold:2e3,polyline:!1,label:{normal:{show:!1,position:"end"}},lineStyle:{normal:{opacity:.5}}}}))},function(t,e,i){var n=i(107),o=i(246),a=i(106),r=i(247),s=i(310),l=i(312);i(2).extendChartView({type:"lines",init:function(){},render:function(t,e,i){var u=t.getData(),c=this._lineDraw,h=t.get("effect.show"),d=t.get("polyline"),f=t.get("large")&&u.count()>=t.get("largeThreshold");h===this._hasEffet&&d===this._isPolyline&&f===this._isLarge||(c&&c.remove(),c=this._lineDraw=f?new l:new n(d?h?s:r:h?o:a),this._hasEffet=h,this._isPolyline=d,this._isLarge=f);var p=t.get("zlevel"),g=t.get("effect.trailLength"),m=i.getZr();if(m.painter.getLayer(p).clear(!0),null!=this._lastZlevel&&m.configLayer(this._lastZlevel,{motionBlur:!1}),h&&g){m.configLayer(p,{motionBlur:!0,lastFrameAlpha:Math.max(Math.min(g/10+.9,1),0)})}this.group.add(c.group),c.updateData(u),this._lastZlevel=p},updateLayout:function(t,e,i){this._lineDraw.updateLayout(t);var n=i.getZr();n.painter.getLayer(this._lastZlevel).clear(!0)},remove:function(t,e){this._lineDraw&&this._lineDraw.remove(e,!0)},dispose:function(){}})},function(t,e,i){t.exports=function(t){t.eachSeriesByType("lines",function(t){var e=t.coordinateSystem,i=t.getData();i.each(function(n){var o=i.getItemModel(n),a=o.option instanceof Array?o.option:o.get("coords"),r=[];if(t.get("polyline"))for(var s=0;s"+l(n+" : "+i)},getTooltipPosition:function(t){if(null!=t){var e=this.getData().getName(t),i=this.coordinateSystem,n=i.getRegion(e);return n&&i.dataToPoint(n.center)}},setZoom:function(t){this.option.zoom=t},setCenter:function(t){this.option.center=t},defaultOption:{zlevel:0,z:2,coordinateSystem:"geo",map:"",left:"center",top:"center",aspectScale:.75,showLegendSymbol:!0,dataRangeHoverLink:!0,boundingCoords:null,center:null,zoom:1,scaleLimit:null,label:{normal:{show:!1,textStyle:{color:"#000"}},emphasis:{show:!0,textStyle:{color:"rgb(100,0,0)"}}},itemStyle:{normal:{borderWidth:.5,borderColor:"#444",areaColor:"#eee"},emphasis:{areaColor:"rgba(255,215,0,0.8)"}}}});a.mixin(d,c),t.exports=d},function(t,e,i){var n=i(3),o=i(250);i(2).extendChartView({type:"map",render:function(t,e,i,n){if(!n||"mapToggleSelect"!==n.type||n.from!==this.uid){var a=this.group;if(a.removeAll(),!t.getHostGeoModel()){if(n&&"geoRoam"===n.type&&"series"===n.componentType&&n.seriesId===t.id){var r=this._mapDraw;r&&a.add(r.group)}else if(t.needsDrawMap){var r=this._mapDraw||new o(i,(!0));a.add(r.group),r.draw(t,e,i,this,n),this._mapDraw=r}else this._mapDraw&&this._mapDraw.remove(),this._mapDraw=null;t.get("showLegendSymbol")&&e.getComponent("legend")&&this._renderSymbols(t,e,i)}}},remove:function(){this._mapDraw&&this._mapDraw.remove(),this._mapDraw=null,this.group.removeAll()},dispose:function(){this._mapDraw&&this._mapDraw.remove(),this._mapDraw=null},_renderSymbols:function(t,e,i){var o=t.originalData,a=this.group;o.each("value",function(e,i){if(!isNaN(e)){var r=o.getItemLayout(i);if(r&&r.point){var s=r.point,l=r.offset,u=new n.Circle({style:{fill:t.getData().getVisual("color")},shape:{cx:s[0]+9*l,cy:s[1],r:3},silent:!0,z2:10});if(!l){var c=t.mainSeries.getData(),h=o.getName(i),d=h,f=c.indexOfName(h),p=o.getItemModel(i),g=p.getModel("label.normal"),m=p.getModel("label.emphasis"),v=g.getModel("textStyle"),y=m.getModel("textStyle"),x=c.getItemGraphicEl(f);u.setStyle({textPosition:"bottom"});var _=function(){u.setStyle({text:m.get("show")?d:"",textFill:y.getTextColor(),textFont:y.getFont()})},b=function(){u.setStyle({text:g.get("show")?d:"",textFill:v.getTextColor(),textFont:v.getFont()})};x.on("mouseover",_).on("mouseout",b).on("emphasis",_).on("normal",b),b()}a.add(u)}}})}})},function(t,e,i){var n=i(1);t.exports=function(t){var e=[];n.each(t.series,function(t){"map"===t.type&&e.push(t)}),n.each(e,function(t){t.map=t.map||t.mapType,n.defaults(t,t.mapLocation)})}},function(t,e,i){function n(t,e){var i={},n=["value"];return o.each(t,function(t){t.each(n,function(e,n){var o="ec-"+t.getName(n);i[o]=i[o]||[],isNaN(e)||i[o].push(e)})}),t[0].map(n,function(n,o){for(var a="ec-"+t[0].getName(o),r=0,s=1/0,l=-(1/0),u=i[a].length,c=0;c=0?e:NaN}})}function o(t){return+t.replace("dim","")}function a(t,e){var i=0;s.each(t,function(t){var e=o(t);e>i&&(i=e)});var n=e[0];n&&n.length-1>i&&(i=n.length-1);for(var a=[],r=0;r<=i;r++)a.push("dim"+r);return a}var r=i(14),s=i(1),l=i(17),u=i(25);t.exports=l.extend({type:"series.parallel",dependencies:["parallel"],visualColorAccessPath:"lineStyle.normal.color",getInitialData:function(t,e){var i=e.getComponent("parallel",this.get("parallelIndex")),o=i.parallelAxisIndex,l=t.data,c=i.dimensions,h=a(c,l),d=s.map(h,function(t,i){var a=s.indexOf(c,t),r=a>=0&&e.getComponent("parallelAxis",o[a]);return r&&"category"===r.get("type")?(n(r,t,l),{name:t,type:"ordinal"}):a<0&&u.guessOrdinal(l,i)?{name:t,type:"ordinal"}:t}),f=new r(d,this);return f.initData(l),this.option.progressive&&(this.option.animation=!1),f},getRawIndicesByActiveState:function(t){var e=this.coordinateSystem,i=this.getData(),n=[];return e.eachActiveState(i,function(e,o){t===e&&n.push(i.getRawIndex(o))}),n},defaultOption:{zlevel:0,z:2,coordinateSystem:"parallel",parallelIndex:0,label:{normal:{show:!1},emphasis:{show:!1}},inactiveOpacity:.05,activeOpacity:1,lineStyle:{normal:{width:1,opacity:.45,type:"solid"}},progressive:!1,smooth:!1,animationEasing:"linear"}})},function(t,e,i){function n(t,e,i){var n=t.model,o=t.getRect(),a=new l.Rect({shape:{x:o.x,y:o.y,width:o.width,height:o.height}}),r="horizontal"===n.get("layout")?"width":"height";return a.setShape(r,0),l.initProps(a,{shape:{width:o.width,height:o.height}},e,i),a}function o(t,e,i,n){for(var o=[],a=0;a"+r.map(n,function(t,i){return s(t.name+" : "+e[i])}).join("
                  ")},defaultOption:{zlevel:0,z:2,coordinateSystem:"radar",legendHoverLink:!0,radarIndex:0,lineStyle:{normal:{width:2,type:"solid"}},label:{normal:{position:"top"}},symbol:"emptyCircle",symbolSize:4}});t.exports=l},function(t,e,i){function n(t){return a.isArray(t)||(t=[+t,+t]),t}var o=i(3),a=i(1),r=i(24);t.exports=i(2).extendChartView({type:"radar",render:function(t,e,i){function s(t,e){var i=t.getItemVisual(e,"symbol")||"circle",o=t.getItemVisual(e,"color");if("none"!==i){var a=r.createSymbol(i,-.5,-.5,1,1,o);return a.attr({style:{strokeNoScale:!0},z2:100,scale:n(t.getItemVisual(e,"symbolSize"))}),a}}function l(e,i,n,a,r,l){n.removeAll();for(var u=0;u0;o--)r*=.99,d(a,r),h(a,n,i),p(a,r),h(a,n,i)}function c(t,e,i,n,o){var a=[];T.each(e,function(t){var e=t.length,i=0;T.each(t,function(t){i+=t.getLayout().value});var r=(n-(e-1)*o)/i;a.push(r)}),a.sort(function(t,e){return t-e});var r=a[0];T.each(e,function(t){T.each(t,function(t,e){t.setLayout({y:e},!0);var i=t.getLayout().value*r;t.setLayout({dy:i},!0)})}),T.each(i,function(t){var e=+t.getValue()*r;t.setLayout({dy:e},!0)})}function h(t,e,i){T.each(t,function(t){var n,o,a,r=0,s=t.length;for(t.sort(b),a=0;a0){var l=n.getLayout().y+o;n.setLayout({y:l},!0)}r=n.getLayout().y+n.getLayout().dy+e}if(o=r-e-i,o>0){var l=n.getLayout().y-o;for(n.setLayout({y:l},!0),r=n.getLayout().y,a=s-2;a>=0;--a)n=t[a],o=n.getLayout().y+n.getLayout().dy+e-r,o>0&&(l=n.getLayout().y-o,n.setLayout({y:l},!0)),r=n.getLayout().y}})}function d(t,e){T.each(t.slice().reverse(),function(t){T.each(t,function(t){if(t.outEdges.length){var i=x(t.outEdges,f)/x(t.outEdges,S),n=t.getLayout().y+(i-_(t))*e;t.setLayout({y:n},!0)}})})}function f(t){return _(t.node2)*t.getValue()}function p(t,e){T.each(t,function(t){T.each(t,function(t){if(t.inEdges.length){var i=x(t.inEdges,g)/x(t.inEdges,S),n=t.getLayout().y+(i-_(t))*e;t.setLayout({y:n},!0)}})})}function g(t){return _(t.node1)*t.getValue()}function m(t){T.each(t,function(t){t.outEdges.sort(v),t.inEdges.sort(y)}),T.each(t,function(t){var e=0,i=0;T.each(t.outEdges,function(t){t.setLayout({sy:e},!0),e+=t.getLayout().dy}),T.each(t.inEdges,function(t){t.setLayout({ty:i},!0),i+=t.getLayout().dy})})}function v(t,e){return t.node2.getLayout().y-e.node2.getLayout().y}function y(t,e){return t.node1.getLayout().y-e.node1.getLayout().y}function x(t,e){for(var i=0,n=t.length,o=-1;++oe?1:t===e?0:NaN}function S(t){return t.getValue()}var M=i(12),I=i(265),T=i(1);t.exports=function(t,e,i){t.eachSeriesByType("sankey",function(t){var i=t.get("nodeWidth"),r=t.get("nodeGap"),s=n(t,e);t.layoutInfo=s;var l=s.width,u=s.height,c=t.getGraph(),h=c.nodes,d=c.edges;a(h);var f=T.filter(h,function(t){return 0===t.getLayout().value}),p=0!==f.length?0:t.get("layoutIterations");o(h,d,i,r,l,u,p)})}},function(t,e,i){var n=i(83),o=i(1);t.exports=function(t,e){t.eachSeriesByType("sankey",function(t){var e=t.getGraph(),i=e.nodes;i.sort(function(t,e){return t.getLayout().value-e.getLayout().value});var a=i[0].getLayout().value,r=i[i.length-1].getLayout().value;o.each(i,function(e){var i=new n({type:"color",mappingMethod:"linear",dataExtent:[a,r],visual:t.get("color")}),o=i.mapValueToVisual(e.getLayout().value);e.setVisual("color",o);var s=e.getModel(),l=s.get("itemStyle.normal.color");null!=l&&e.setVisual("color",l)})})}},function(t,e,i){var n=i(2),o=i(1);i(253),i(342),i(343),n.registerLayout(i(344)),n.registerVisual(i(345)),n.registerProcessor(o.curry(i(63),"themeRiver"))},function(t,e,i){"use strict";var n=i(25),o=i(17),a=i(14),r=i(1),s=i(7),l=s.encodeHTML,u=i(265),c=2,h=o.extend({type:"series.themeRiver",dependencies:["singleAxis"],nameMap:null,init:function(t){h.superApply(this,"init",arguments),this.legendDataProvider=function(){return this.getRawData()}},fixData:function(t){for(var e=t.length,i=u().key(function(t){return t[2]}).entries(t),n=r.map(i,function(t){return{name:t.key,dataList:t.values}}),o=n.length,a=-1,s=-1,l=0;la&&(a=c,s=l)}for(var h=0;hr&&(r=e),o.push(e)}for(var c=0;cr&&(r=d)}return s.y0=a,s.max=r,s}var a=i(1),r=i(4);t.exports=function(t,e){t.eachSeriesByType("themeRiver",function(t){var e=t.getData(),i=t.coordinateSystem,o={},a=i.getRect();o.rect=a;var s=t.get("boundaryGap"),l=i.getAxis();if(o.boundaryGap=s,"horizontal"===l.orient){s[0]=r.parsePercent(s[0],a.height),s[1]=r.parsePercent(s[1],a.height);var u=a.height-s[0]-s[1];n(e,t,u)}else{s[0]=r.parsePercent(s[0],a.width),s[1]=r.parsePercent(s[1],a.width);var c=a.width-s[0]-s[1];n(e,t,c)}e.setLayout("layoutInfo",o)})}},function(t,e){t.exports=function(t){t.eachSeriesByType("themeRiver",function(t){var e=t.getData(),i=t.getRawData(),n=t.get("color");e.each(function(o){var a=e.getName(o),r=n[(t.nameMap.get(a)-1)%n.length];i.setItemVisual(o,"color",r)})})}},function(t,e,i){var n=i(2);i(348),i(349),i(350),n.registerVisual(i(352)),n.registerLayout(i(351))},function(t,e,i){function n(t){this.group=new r.Group,t.add(this.group)}function o(t,e,i,n,o,a){var r=[[o?t:t-d,e],[t+i,e],[t+i,e+n],[o?t:t-d,e+n]];return!a&&r.splice(2,0,[t+i+d,e+n/2]),!o&&r.push([t,e+n/2]),r}function a(t,e,i){t.eventData={componentType:"series",componentSubType:"treemap",seriesIndex:e.componentIndex,seriesName:e.name,seriesType:"treemap",selfType:"breadcrumb",nodeData:{dataIndex:i&&i.dataIndex,name:i&&i.name},treePathInfo:i&&u.wrapTreePathInfo(i,e)}}var r=i(3),s=i(12),l=i(1),u=i(94),c=8,h=8,d=5;n.prototype={constructor:n,render:function(t,e,i,n){var o=t.getModel("breadcrumb"),a=this.group;if(a.removeAll(),o.get("show")&&i){var r=o.getModel("itemStyle.normal"),l=r.getModel("textStyle"),u={pos:{left:o.get("left"),right:o.get("right"),top:o.get("top"),bottom:o.get("bottom")},box:{width:e.getWidth(),height:e.getHeight()},emptyItemWidth:o.get("emptyItemWidth"),totalWidth:0,renderList:[]};this._prepare(i,u,l),this._renderContent(t,u,r,l,n),s.positionElement(a,u.pos,u.box)}},_prepare:function(t,e,i){for(var n=t;n;n=n.parentNode){var o=n.getModel().get("name"),a=i.getTextRect(o),r=Math.max(a.width+2*c,e.emptyItemWidth);e.totalWidth+=r+h,e.renderList.push({node:n,text:o,width:r})}},_renderContent:function(t,e,i,n,u){for(var c=0,d=e.emptyItemWidth,f=t.get("breadcrumb.height"),p=s.getAvailableSize(e.pos,e.box),g=e.totalWidth,m=e.renderList,v=m.length-1;v>=0;v--){var y=m[v],x=y.node,_=y.width,b=y.text;g>p.width&&(g-=_-d,_=d,b="");var w=new r.Polygon({shape:{points:o(c,0,_,f,v===m.length-1,0===v)},style:l.defaults(i.getItemStyle(),{lineJoin:"bevel",text:b,textFill:n.getTextColor(),textFont:n.getFont()}),z:10,onclick:l.curry(u,x)});this.group.add(w),a(w,t,x),c+=_+h}},remove:function(){this.group.removeAll()}},t.exports=n},function(t,e,i){function n(t){var e=0;s.each(t.children,function(t){n(t);var i=t.value;s.isArray(i)&&(i=i[0]),e+=i});var i=t.value;s.isArray(i)&&(i=i[0]),(null==i||isNaN(i))&&(i=e),i<0&&(i=0),s.isArray(t.value)?t.value[0]=i:t.value=i}function o(t,e){var i=e.get("color");if(i){t=t||[];var n;if(s.each(t,function(t){var e=new l(t),i=e.get("color");(e.get("itemStyle.normal.color")||i&&"none"!==i)&&(n=!0)}),!n){var o=t[0]||(t[0]={});o.color=i.slice()}return t}}var a=i(17),r=i(425),s=i(1),l=i(10),u=i(7),c=i(94),h=u.encodeHTML,d=u.addCommas;t.exports=a.extend({type:"series.treemap",layoutMode:"box",dependencies:["grid","polar"],_viewRoot:null,defaultOption:{progressive:0,hoverLayerThreshold:1/0,left:"center",top:"middle",right:null,bottom:null,width:"80%",height:"80%",sort:!0,clipWindow:"origin",squareRatio:.5*(1+Math.sqrt(5)),leafDepth:null,drillDownIcon:"▶",zoomToNodeRatio:.1024,roam:!0,nodeClick:"zoomToNode",animation:!0,animationDurationUpdate:900,animationEasing:"quinticInOut",breadcrumb:{show:!0,height:22,left:"center",top:"bottom",emptyItemWidth:25,itemStyle:{normal:{color:"rgba(0,0,0,0.7)",borderColor:"rgba(255,255,255,0.7)",borderWidth:1,shadowColor:"rgba(150,150,150,1)",shadowBlur:3,shadowOffsetX:0,shadowOffsetY:0,textStyle:{color:"#fff"}},emphasis:{textStyle:{}}}},label:{normal:{show:!0,position:"inside",textStyle:{color:"#fff",ellipsis:!0}}},upperLabel:{normal:{show:!1,position:[0,"50%"],height:20,textStyle:{color:"#fff",ellipsis:!0,baseline:"middle"}},emphasis:{show:!0,position:[0,"50%"],textStyle:{color:"#fff",ellipsis:!0,baseline:"middle"}}},itemStyle:{normal:{color:null,colorAlpha:null,colorSaturation:null,borderWidth:0,gapWidth:0,borderColor:"#fff",borderColorSaturation:null},emphasis:{}},visualDimension:0,visualMin:null,visualMax:null,color:[],colorAlpha:null,colorSaturation:null,colorMappingBy:"index",visibleMin:10,childrenVisibleMin:null,levels:[]},getInitialData:function(t,e){var i={name:t.name,children:t.data};n(i);var a=t.levels||[];return a=t.levels=o(a,e),r.createTree(i,this,a).data},optionUpdated:function(){this.resetViewRoot()},formatTooltip:function(t){var e=this.getData(),i=this.getRawValue(t),n=d(s.isArray(i)?i[0]:i),o=e.getName(t);return h(o+": "+n)},getDataParams:function(t){var e=a.prototype.getDataParams.apply(this,arguments),i=this.getData().tree.getNodeByDataIndex(t);return e.treePathInfo=c.wrapTreePathInfo(i,this),e},setLayoutInfo:function(t){this.layoutInfo=this.layoutInfo||{},s.extend(this.layoutInfo,t)},mapIdToIndex:function(t){var e=this._idIndexMap;e||(e=this._idIndexMap=s.createHashMap(),this._idIndexMapCount=0);var i=e.get(t);return null==i&&e.set(t,i=this._idIndexMapCount++),i},getViewRoot:function(){return this._viewRoot},resetViewRoot:function(t){t?this._viewRoot=t:t=this._viewRoot;var e=this.getData().tree.root;t&&(t===e||e.contains(t))||(this._viewRoot=e)}})},function(t,e,i){function n(){return{nodeGroup:[],background:[],content:[]}}function o(t,e,i,n,o,l,u,c,h,d){function f(e,i,n){i.dataIndex=u.dataIndex,i.seriesIndex=t.seriesIndex,i.setShape({x:0,y:0,width:D,height:P});var o=u.getVisual("borderColor",!0),a=B.get("borderColor");g(i,function(){var t={fill:o},e={fill:a};if(n){var r=D-2*k;y(t,e,o,r,N,{x:k,y:0,width:r,height:N})}else t.text=e.text="";i.setStyle(t),s.setHoverStyle(i,e)}),e.add(i)}function p(e,i){i.dataIndex=u.dataIndex,i.seriesIndex=t.seriesIndex;var n=Math.max(D-2*k,0),o=Math.max(P-2*k,0);i.culling=!0,i.setShape({x:k,y:k,width:n,height:o});var a=u.getVisual("color",!0);g(i,function(){var t={fill:a},e=B.getItemStyle();y(t,e,a,n,o),i.setStyle(t),s.setHoverStyle(i,e)}),e.add(i)}function g(t,e){O?!t.invisible&&l.push(t):(e(),t.__tmWillVisible||(t.invisible=!1))}function y(e,i,n,o,a,s){var l=u.getModel(),c=r.retrieve(t.getFormattedLabel(u.dataIndex,"normal",null,null,s?"upperLabel":"label"),l.get("name"));if(!s&&L.isLeafRoot){var h=t.get("drillDownIcon",!0);c=h?h+" "+c:c}x(c,e,l,s?w:_,n,o,a,s),x(c,i,l,s?S:b,n,o,a,s)}function x(t,e,i,n,o,a,l,u){var c=i.getModel(n),h=c.getModel("textStyle");s.setText(e,c,o),e.textAlign=h.get("align"),e.textVerticalAlign=h.get("baseline"),u&&(e.textPositionRect=r.clone(u));var d=h.getTextRect(t);!c.getShallow("show")||d.height>l?e.text="":d.width>a?e.text=h.get("ellipsis")?h.truncateText(t,a,null,{minChar:2}):"":e.text=t}function M(t,n,r,s){var l=null!=E&&i[t][E],u=o[t];return l?(i[t][E]=null,A(u,l,t)):O||(l=new n({z:a(r,s)}),l.__tmDepth=r,l.__tmStorageName=t,C(u,l,t)),e[t][z]=l}function A(t,e,i){var n=t[z]={};n.old="nodeGroup"===i?e.position.slice():r.extend({},e.shape)}function C(t,e,i){var a=t[z]={},r=u.parentNode;if(r&&(!n||"drillDown"===n.direction)){var s=0,l=0,c=o.background[r.getRawIndex()];!n&&c&&c.old&&(s=c.old.width,l=c.old.height),a.old="nodeGroup"===i?[0,l]:{x:s,y:l,width:0,height:0}}a.fadein="nodeGroup"!==i}if(u){var L=u.getLayout();if(L&&L.isInView){var D=L.width,P=L.height,k=L.borderWidth,O=L.invisible,z=u.getRawIndex(),E=c&&c.getRawIndex(),R=u.viewChildren,N=L.upperHeight,V=R&&R.length,B=u.getModel("itemStyle.emphasis"),G=M("nodeGroup",m);if(G){if(h.add(G),G.attr("position",[L.x||0,L.y||0]),G.__tmNodeWidth=D,G.__tmNodeHeight=P,L.isAboveViewRoot)return G;var H=M("background",v,d,I);if(H&&f(G,H,V&&L.upperHeight),!V){var F=M("content",v,d,T);F&&p(G,F)}return G}}}}function a(t,e){var i=t*M+e;return(i-1)/i}var r=i(1),s=i(3),l=i(48),u=i(94),c=i(347),h=i(95),d=i(11),f=i(19),p=i(427),g=r.bind,m=s.Group,v=s.Rect,y=r.each,x=3,_=["label","normal"],b=["label","emphasis"],w=["upperLabel","normal"],S=["upperLabel","emphasis"],M=10,I=1,T=2;t.exports=i(2).extendChartView({type:"treemap",init:function(t,e){this._containerGroup,this._storage=n(),this._oldTree,this._breadcrumb,this._controller,this._state="ready",this._mayClick},render:function(t,e,i,n){var o=e.findComponents({mainType:"series",subType:"treemap",query:n});if(!(r.indexOf(o,t)<0)){this.seriesModel=t,this.api=i,this.ecModel=e;var a=u.retrieveTargetInfo(n,t),s=n&&n.type,l=t.layoutInfo,c=!this._oldTree,h=this._storage,d="treemapRootToNode"===s&&a&&h?{rootNodeGroup:h.nodeGroup[a.node.getRawIndex()],direction:n.direction}:null,f=this._giveContainerGroup(l),p=this._doRender(f,t,d);c||s&&"treemapZoomToNode"!==s&&"treemapRootToNode"!==s?p.renderFinally():this._doAnimation(f,p,t,d),this._resetController(i),this._renderBreadcrumb(t,i,a)}},_giveContainerGroup:function(t){var e=this._containerGroup;return e||(e=this._containerGroup=new m,this._initEvents(e),this.group.add(e)),e.attr("position",[t.x,t.y]),e},_doRender:function(t,e,i){function a(t,e,i,n,o){function s(t){return t.getId()}function u(r,s){var l=null!=r?t[r]:null,u=null!=s?e[s]:null,c=m(l,u,i,o);c&&a(l&&l.viewChildren||[],u&&u.viewChildren||[],c,n,o+1)}n?(e=t,y(t,function(t,e){!t.isRemoved()&&u(e,e)})):new l(e,t,s,s).add(u).update(u).remove(r.curry(u,null)).execute()}function s(t){var e=n();return t&&y(t,function(t,i){var n=e[i];y(t,function(t){t&&(n.push(t),t.__tmWillDelete=1)})}),e}function u(){y(v,function(t){y(t,function(t){t.parent&&t.parent.remove(t)})}),y(g,function(t){t.invisible=!0,t.dirty()})}var c=e.getData().tree,h=this._oldTree,d=n(),f=n(),p=this._storage,g=[],m=r.curry(o,e,f,p,i,d,g);a(c.root?[c.root]:[],h&&h.root?[h.root]:[],t,c===h||!h,0);var v=s(p);return this._oldTree=c,this._storage=f,{lastsForAnimation:d,willDeleteEls:v,renderFinally:u}},_doAnimation:function(t,e,i,n){if(i.get("animation")){var o=i.get("animationDurationUpdate"),a=i.get("animationEasing"),s=p.createWrap();y(e.willDeleteEls,function(t,e){y(t,function(t,i){if(!t.invisible){var r,l=t.parent;if(n&&"drillDown"===n.direction)r=l===n.rootNodeGroup?{shape:{x:0,y:0,width:l.__tmNodeWidth,height:l.__tmNodeHeight},style:{opacity:0}}:{style:{opacity:0}};else{var u=0,c=0;l.__tmWillDelete||(u=l.__tmNodeWidth/2,c=l.__tmNodeHeight/2),r="nodeGroup"===e?{position:[u,c],style:{opacity:0}}:{shape:{x:u,y:c,width:0,height:0},style:{opacity:0}}}r&&s.add(t,r,o,a)}})}),y(this._storage,function(t,i){y(t,function(t,n){var l=e.lastsForAnimation[i][n],u={};l&&("nodeGroup"===i?l.old&&(u.position=t.position.slice(),t.attr("position",l.old)):(l.old&&(u.shape=r.extend({},t.shape),t.setShape(l.old)),l.fadein?(t.setStyle("opacity",0),u.style={opacity:1}):1!==t.style.opacity&&(u.style={opacity:1})),s.add(t,u,o,a))})},this),this._state="animating",s.done(g(function(){this._state="ready",e.renderFinally()},this)).start()}},_resetController:function(t){ +var e=this._controller;e||(e=this._controller=new h(t.getZr()),e.enable(this.seriesModel.get("roam")),e.on("pan",g(this._onPan,this)),e.on("zoom",g(this._onZoom,this)));var i=new d(0,0,t.getWidth(),t.getHeight());e.setPointerChecker(function(t,e,n){return i.contain(e,n)})},_clearController:function(){var t=this._controller;t&&(t.dispose(),t=null)},_onPan:function(t,e){if(this._mayClick=!1,"animating"!==this._state&&(Math.abs(t)>x||Math.abs(e)>x)){var i=this.seriesModel.getData().tree.root;if(!i)return;var n=i.getLayout();if(!n)return;this.api.dispatchAction({type:"treemapMove",from:this.uid,seriesId:this.seriesModel.id,rootRect:{x:n.x+t,y:n.y+e,width:n.width,height:n.height}})}},_onZoom:function(t,e,i){if(this._mayClick=!1,"animating"!==this._state){var n=this.seriesModel.getData().tree.root;if(!n)return;var o=n.getLayout();if(!o)return;var a=new d(o.x,o.y,o.width,o.height),r=this.seriesModel.layoutInfo;e-=r.x,i-=r.y;var s=f.create();f.translate(s,s,[-e,-i]),f.scale(s,s,[t,t]),f.translate(s,s,[e,i]),a.applyTransform(s),this.api.dispatchAction({type:"treemapRender",from:this.uid,seriesId:this.seriesModel.id,rootRect:{x:a.x,y:a.y,width:a.width,height:a.height}})}},_initEvents:function(t){function e(t){var e=this.seriesModel.get("nodeClick",!0);if(e){var i=this.findTarget(t.offsetX,t.offsetY);if(i){var n=i.node;if(n.getLayout().isLeafRoot)this._rootToNode(i);else if("zoomToNode"===e)this._zoomToNode(i);else if("link"===e){var o=n.hostTree.data.getItemModel(n.dataIndex),a=o.get("link",!0),r=o.get("target",!0)||"blank";a&&window.open(a,r)}}}}t.on("mousedown",function(t){"ready"===this._state&&(this._mayClick=!0)},this),t.on("mouseup",function(t){this._mayClick&&(this._mayClick=!1,"ready"===this._state&&e.call(this,t))},this)},_renderBreadcrumb:function(t,e,i){function n(e){"animating"!==this._state&&(u.aboveViewRoot(t.getViewRoot(),e)?this._rootToNode({node:e}):this._zoomToNode({node:e}))}i||(i=null!=t.get("leafDepth",!0)?{node:t.getViewRoot()}:this.findTarget(e.getWidth()/2,e.getHeight()/2),i||(i={node:t.getData().tree.root})),(this._breadcrumb||(this._breadcrumb=new c(this.group))).render(t,e,i.node,g(n,this))},remove:function(){this._clearController(),this._containerGroup&&this._containerGroup.removeAll(),this._storage=n(),this._state="ready",this._breadcrumb&&this._breadcrumb.remove()},dispose:function(){this._clearController()},_zoomToNode:function(t){this.api.dispatchAction({type:"treemapZoomToNode",from:this.uid,seriesId:this.seriesModel.id,targetNode:t.node})},_rootToNode:function(t){this.api.dispatchAction({type:"treemapRootToNode",from:this.uid,seriesId:this.seriesModel.id,targetNode:t.node})},findTarget:function(t,e){var i,n=this.seriesModel.getViewRoot();return n.eachNode({attr:"viewChildren",order:"preorder"},function(n){var o=this._storage.background[n.getRawIndex()];if(o){var a=o.transformCoordToLocal(t,e),r=o.shape;if(!(r.x<=a[0]&&a[0]<=r.x+r.width&&r.y<=a[1]&&a[1]<=r.y+r.height))return!1;i={node:n,offsetX:a[0],offsetY:a[1]}}},this),i}})},function(t,e,i){for(var n=i(2),o=i(94),a=function(){},r=["treemapZoomToNode","treemapRender","treemapMove"],s=0;s=0;l--){var u=o["asc"===n?r-l-1:l].getValue();u/i*er[1]&&(r[1]=e)})}else r=[NaN,NaN];return{sum:n,dataExtent:r}}function u(t,e,i){for(var n,o=0,a=1/0,r=0,s=t.length;ro&&(o=n));var l=t.area*t.area,u=e*e*i;return l?_(u*o/l,l/(u*a)):1/0}function c(t,e,i,n,o){var a=e===i.width?0:1,r=1-a,s=["x","y"],l=["width","height"],u=i[s[a]],c=e?t.area/e:0;(o||c>i[l[r]])&&(c=i[l[r]]);for(var h=0,d=t.length;hm.MAX_SAFE_INTEGER&&(u=m.MAX_SAFE_INTEGER),a=s}u=u.length||t===u[t.depth]){var o=c(d,x,t,e,S,h);n(t,o,i,s,u,h)}})}else m=a(x,t),t.setVisual("color",m)}}function o(t,e,i,n){var o=f.extend({},e);return f.each(["color","colorAlpha","colorSaturation"],function(a){var r=t.get(a,!0);null==r&&i&&(r=i[a]),null==r&&(r=e[a]),null==r&&(r=n.get(a)),null!=r&&(o[a]=r)}),o}function a(t){var e=s(t,"color");if(e){var i=s(t,"colorAlpha"),n=s(t,"colorSaturation");return n&&(e=d.modifyHSL(e,null,null,n)),i&&(e=d.modifyAlpha(e,i)),e}}function r(t,e){return null!=e?d.modifyHSL(e,null,null,t):null}function s(t,e){var i=t[e];if(null!=i&&"none"!==i)return i}function l(t,e,i,n,o,a){if(a&&a.length){var r=u(e,"color")||null!=o.color&&"none"!==o.color&&(u(e,"colorAlpha")||u(e,"colorSaturation"));if(r){var s=e.get("visualMin"),l=e.get("visualMax"),c=i.dataExtent.slice();null!=s&&sc[1]&&(c[1]=l);var d=e.get("colorMappingBy"),f={type:r.name,dataExtent:c,visual:r.range};"color"!==f.type||"index"!==d&&"id"!==d?f.mappingMethod="linear":(f.mappingMethod="category",f.loop=!0);var p=new h(f);return p.__drColorMappingBy=d,p}}}function u(t,e){var i=t.get(e);return p(i)&&i.length?{name:e,range:i}:null}function c(t,e,i,n,o,a){var r=f.extend({},e);if(o){var s=o.type,l="color"===s&&o.__drColorMappingBy,u="index"===l?n:"id"===l?a.mapIdToIndex(i.getId()):i.getValue(t.get("visualDimension"));r[s]=o.mapValueToVisual(u)}return r}var h=i(83),d=i(22),f=i(1),p=f.isArray,g="itemStyle.normal";t.exports=function(t,e,i){var o={mainType:"series",subType:"treemap",query:i};t.eachComponent(o,function(t){var e=t.getData().tree,i=e.root,o=t.getModel(g);if(!i.isRemoved()){var a=f.map(e.levelModels,function(t){return t?t.get(g):null});n(i,{},a,o,t.getViewRoot().getAncestors(),t)}})}},function(t,e,i){"use strict";i(237),i(354)},function(t,e,i){"use strict";function n(t,e,i,n){var o=t.coordToPoint([e,n]),a=t.coordToPoint([i,n]);return{x1:o[0],y1:o[1],x2:a[0],y2:a[1]}}var o=i(1),a=i(3),r=i(10),s=["axisLine","axisLabel","axisTick","splitLine","splitArea"];i(41).extend({type:"angleAxis",axisPointerClass:"PolarAxisPointer",render:function(t,e){if(this.group.removeAll(),t.get("show")){var i=t.axis,n=i.polar,a=n.getRadiusAxis().getExtent(),r=i.getTicksCoords();"category"!==i.type&&r.pop(),o.each(s,function(e){!t.get(e+".show")||i.scale.isBlank()&&"axisLine"!==e||this["_"+e](t,n,r,a)},this)}},_axisLine:function(t,e,i,n){var o=t.getModel("axisLine.lineStyle"),r=new a.Circle({shape:{cx:e.cx,cy:e.cy,r:n[1]},style:o.getLineStyle(),z2:1,silent:!0});r.style.fill=null,this.group.add(r)},_axisTick:function(t,e,i,r){var s=t.getModel("axisTick"),l=(s.get("inside")?-1:1)*s.get("length"),u=o.map(i,function(t){return new a.Line({shape:n(e,r[1],r[1]+l,t)})});this.group.add(a.mergePath(u,{style:o.defaults(s.getModel("lineStyle").getLineStyle(),{stroke:t.get("axisLine.lineStyle.color")})}))},_axisLabel:function(t,e,i,n){for(var o=t.axis,s=t.get("data"),l=t.getModel("axisLabel"),u=l.getModel("textStyle"),c=t.getFormattedLabels(),h=l.get("margin"),d=o.getLabelsCoords(),f=0;fm?"left":"right",x=Math.abs(g[1]-v)/p<.3?"middle":g[1]>v?"top":"bottom",_=u;s&&s[f]&&s[f].textStyle&&(_=new r(s[f].textStyle,u)),this.group.add(new a.Text({style:{x:g[0],y:g[1],fill:_.getTextColor()||t.get("axisLine.lineStyle.color"),text:c[f],textAlign:y,textVerticalAlign:x,textFont:_.getFont()},silent:!0}))}},_splitLine:function(t,e,i,r){var s=t.getModel("splitLine"),l=s.getModel("lineStyle"),u=l.get("color"),c=0;u=u instanceof Array?u:[u];for(var h=[],d=0;dx?"left":"right",f=Math.abs(h[1]-_)/y<.3?"middle":h[1]>_?"top":"bottom"}return{position:h,align:d,verticalAlign:f}}var o=i(7),a=i(119),r=i(3),s=i(76),l=i(19),u=i(40),c=i(41),h=a.extend({makeElOption:function(t,e,i,a,r){var l=i.axis;"angle"===l.dim&&(this.animationThreshold=Math.PI/18);var u,c=l.polar,h=c.getOtherAxis(l),f=h.getExtent();u=l["dataTo"+o.capitalFirst(l.dim)](e);var p=a.get("type");if(p&&"none"!==p){var g=s.buildElStyle(a),m=d[p](l,c,u,f,g);m.style=g,t.graphicKey=m.type,t.pointer=m}var v=a.get("label.margin"),y=n(e,i,a,c,v);s.buildLabelElOption(t,i,a,r,y)}}),d={line:function(t,e,i,n,o){return"angle"===t.dim?{type:"Line",shape:s.makeLineShape(e.coordToPoint([n[0],i]),e.coordToPoint([n[1],i]))}:{type:"Circle",shape:{cx:e.cx,cy:e.cy,r:i}}},shadow:function(t,e,i,n,o){var a=t.getBandWidth(),r=Math.PI/180;return"angle"===t.dim?{type:"Sector",shape:s.makeSectorShape(e.cx,e.cy,n[0],n[1],(-i-a/2)*r,(-i+a/2)*r)}:{type:"Sector",shape:s.makeSectorShape(e.cx,e.cy,i-a/2,i+a/2,0,2*Math.PI)}}};c.registerAxisPointerClass("PolarAxisPointer",h),t.exports=h},function(t,e,i){"use strict";function n(t){return t.isHorizontal()?0:1}function o(t,e){var i=t.getRect();return[i[c[e]],i[c[e]]+i[h[e]]]}var a=i(3),r=i(119),s=i(76),l=i(249),u=i(41),c=["x","y"],h=["width","height"],d=r.extend({makeElOption:function(t,e,i,a,r){var u=i.axis,c=u.coordinateSystem,h=o(c,1-n(u)),d=c.dataToPoint(e)[0],p=a.get("type");if(p&&"none"!==p){var g=s.buildElStyle(a),m=f[p](u,d,h,g);m.style=g,t.graphicKey=m.type,t.pointer=m}var v=l.layout(i);s.buildCartesianSingleLabelElOption(e,t,v,i,a,r)},getHandleTransform:function(t,e,i){var n=l.layout(e,{labelInside:!1});return n.labelMargin=i.get("handle.margin"),{position:s.getTransformedPosition(e.axis,t,n),rotation:n.rotation+(n.labelDirection<0?Math.PI:0)}},updateHandleTransform:function(t,e,i,a){var r=i.axis,s=r.coordinateSystem,l=n(r),u=o(s,l),c=t.position;c[l]+=e[l],c[l]=Math.min(u[1],c[l]),c[l]=Math.max(u[0],c[l]);var h=o(s,1-l),d=(h[1]+h[0])/2,f=[d,d];return f[l]=c[l],{position:c,rotation:t.rotation,cursorPoint:f,tooltipOption:{verticalAlign:"middle"}}}}),f={line:function(t,e,i,o){var r=s.makeLineShape([e,i[0]],[e,i[1]],n(t));return a.subPixelOptimizeLine({shape:r,style:o}),{type:"Line",shape:r}},shadow:function(t,e,i,o){var a=t.getBandWidth(),r=i[1]-i[0];return{type:"Rect",shape:s.makeRectShape([e-a/2,i[0]],[a,r],n(t))}}};u.registerAxisPointerClass("SingleAxisPointer",d),t.exports=d},function(t,e,i){i(2).registerPreprocessor(i(365)),i(367),i(362),i(363),i(364),i(386)},function(t,e,i){function n(t,e){return a.merge({brushType:t.brushType,brushMode:t.brushMode,transformable:t.transformable,brushStyle:new s(t.brushStyle).getItemStyle(),removeOnClick:t.removeOnClick,z:t.z},e,!0)}var o=i(2),a=i(1),r=i(187),s=i(10),l=["#ddd"],u=o.extendComponentModel({type:"brush",dependencies:["geo","grid","xAxis","yAxis","parallel","series"],defaultOption:{toolbox:null,brushLink:null,seriesIndex:"all",geoIndex:null,xAxisIndex:null,yAxisIndex:null,brushType:"rect",brushMode:"single",transformable:!0,brushStyle:{borderWidth:1,color:"rgba(120,140,180,0.3)",borderColor:"rgba(120,140,180,0.8)"},throttleType:"fixRate",throttleDelay:0,removeOnClick:!0,z:1e4},areas:[],brushType:null,brushOption:{},coordInfoList:[],optionUpdated:function(t,e){var i=this.option;!e&&r.replaceVisualOption(i,t,["inBrush","outOfBrush"]),i.inBrush=i.inBrush||{},i.outOfBrush=i.outOfBrush||{color:l}},setAreas:function(t){t&&(this.areas=a.map(t,function(t){return n(this.option,t)},this))},setBrushOption:function(t){this.brushOption=n(this.option,t),this.brushType=this.brushOption.brushType}});t.exports=u},function(t,e,i){function n(t,e,i,n){(!n||n.$from!==t.id)&&this._brushController.setPanels(t.brushTargetManager.makePanelOpts(i)).enableBrush(t.brushOption).updateCovers(t.areas.slice())}var o=i(1),a=i(127),r=i(2);t.exports=r.extendComponentView({type:"brush",init:function(t,e){this.ecModel=t,this.api=e,this.model,(this._brushController=new a(e.getZr())).on("brush",o.bind(this._onBrush,this)).mount()},render:function(t){return this.model=t,n.apply(this,arguments)},updateView:n,updateLayout:n,updateVisual:n,dispose:function(){this._brushController.dispose()},_onBrush:function(t,e){var i=this.model.id;this.model.brushTargetManager.setOutputRanges(t,this.ecModel),(!e.isEnd||e.removeOnClick)&&this.api.dispatchAction({type:"brush",brushId:i,areas:o.clone(t),$from:i})}})},function(t,e,i){var n=i(2);n.registerAction({type:"brush",event:"brush",update:"updateView"},function(t,e){e.eachComponent({mainType:"brush",query:t},function(e){e.setAreas(t.areas)})}),n.registerAction({type:"brushSelect",event:"brushSelected",update:"none"},function(){})},function(t,e,i){function n(t){var e={};o.each(t,function(t){e[t]=1}),t.length=0,o.each(e,function(e,i){t.push(i)})}var o=i(1),a=["rect","polygon","keep","clear"];t.exports=function(t,e){var i=t&&t.brush;if(o.isArray(i)||(i=i?[i]:[]),i.length){var r=[];o.each(i,function(t){var e=t.hasOwnProperty("toolbox")?t.toolbox:[];e instanceof Array&&(r=r.concat(e))});var s=t&&t.toolbox;o.isArray(s)&&(s=s[0]),s||(s={feature:{}},t.toolbox=[s]);var l=s.feature||(s.feature={}),u=l.brush||(l.brush={}),c=u.type||(u.type=[]);c.push.apply(c,r),n(c),e&&!c.length&&c.push.apply(c,a)}}},function(t,e,i){function n(t){var e=["x","y"],i=["width","height"];return{point:function(e,i,n){var a=n.range,r=e[t];return o(r,a)},rect:function(n,a,r){var s=r.range,l=[n[e[t]],n[e[t]]+n[i[t]]];return l[1]1)return!1;var d=l(i-t,o-t,n-e,a-e)/c;return!(d<0||d>1)}function s(t){return t<=1e-6&&t>=-1e-6}function l(t,e,i,n){return t*n-e*i}var u=i(267).contain,c=i(11),h={lineX:n(0),lineY:n(1),rect:{point:function(t,e,i){return i.boundingRect.contain(t[0],t[1])},rect:function(t,e,i){return i.boundingRect.intersect(t)}},polygon:{point:function(t,e,i){return i.boundingRect.contain(t[0],t[1])&&u(i.range,t[0],t[1])},rect:function(t,e,i){var n=i.range;if(n.length<=1)return!1;var o=t.x,r=t.y,s=t.width,l=t.height,h=n[0];return!!(u(n,o,r)||u(n,o+s,r)||u(n,o,r+l)||u(n,o+s,r+l)||c.create(t).contain(h[0],h[1])||a(o,r,o+s,r,n)||a(o,r,o,r+l,n)||a(o+s,r,o+s,r+l,n)||a(o,r+l,o+s,r+l,n))||void 0}}};t.exports=h},function(t,e,i){function n(t,e,i,n,a){if(a){var r=t.getZr();if(!r[x]){r[y]||(r[y]=o);var s=g.createOrUpdate(r,y,i,e);s(t,n)}}}function o(t,e){if(!t.isDisposed()){var i=t.getZr();i[x]=!0,t.dispatchAction({type:"brushSelect",batch:e}),i[x]=!1}}function a(t,e,i,n){for(var o=0,a=e.length;oe[0][1]&&(e[0][1]=a[0]),a[1]e[1][1]&&(e[1][1]=a[1])}return e&&u(e)}}},function(t,e,i){"use strict";i(394),i(395),i(369)},function(t,e,i){"use strict";var n=i(1),o=i(3),a=i(7),r=i(4),s={EN:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],CN:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"]},l={EN:["S","M","T","W","T","F","S"],CN:["日","一","二","三","四","五","六"]};t.exports=i(2).extendComponentView({type:"calendar",_tlpoints:null,_blpoints:null,_firstDayOfMonth:null,_firstDayPoints:null,render:function(t,e,i){var n=this.group;n.removeAll();var o=t.coordinateSystem,a=o.getRangeInfo(),r=o.getOrient();this._renderDayRect(t,a,n),this._renderLines(t,a,r,n),this._renderYearText(t,a,r,n),this._renderMonthText(t,r,n),this._renderWeekText(t,a,r,n)},_renderDayRect:function(t,e,i){for(var n=t.coordinateSystem,a=t.getModel("itemStyle.normal").getItemStyle(),r=n.getCellWidth(),s=n.getCellHeight(),l=e.start.time;l<=e.end.time;l=n.getNextNDay(l,1).time){var u=n.dataToRect([l],!1).tl,c=new o.Rect({shape:{x:u[0],y:u[1],width:r,height:s},cursor:"default",style:a});i.add(c)}},_renderLines:function(t,e,i,n){function o(e){a._firstDayOfMonth.push(r.getDateInfo(e)),a._firstDayPoints.push(r.dataToRect([e],!1).tl);var o=a._getLinePointsOfOneWeek(t,e,i);a._tlpoints.push(o[0]),a._blpoints.push(o[o.length-1]),l&&a._drawSplitline(o,s,n)}var a=this,r=t.coordinateSystem,s=t.getModel("splitLine.lineStyle").getLineStyle(),l=t.get("splitLine.show"),u=s.lineWidth;this._tlpoints=[],this._blpoints=[],this._firstDayOfMonth=[],this._firstDayPoints=[];for(var c=e.start,h=0;c.time<=e.end.time;h++){o(c.formatedDate),0===h&&(c=r.getDateInfo(e.start.y+"-"+e.start.m));var d=c.date;d.setMonth(d.getMonth()+1),c=r.getDateInfo(d)}o(r.getNextNDay(e.end.time,1).formatedDate),l&&this._drawSplitline(a._getEdgesPoints(a._tlpoints,u,i),s,n),l&&this._drawSplitline(a._getEdgesPoints(a._blpoints,u,i),s,n)},_getEdgesPoints:function(t,e,i){var n=[t[0].slice(),t[t.length-1].slice()],o="horizontal"===i?0:1;return n[0][o]=n[0][o]-e/2,n[1][o]=n[1][o]+e/2,n},_drawSplitline:function(t,e,i){var n=new o.Polyline({z2:20,shape:{points:t},style:e});i.add(n)},_getLinePointsOfOneWeek:function(t,e,i){var n=t.coordinateSystem;e=n.getDateInfo(e);for(var o=[],a=0;a<7;a++){var r=n.getNextNDay(e.time,a),s=n.dataToRect([r.time],!1);o[2*r.day]=s.tl,o[2*r.day+1]=s["horizontal"===i?"bl":"tr"]}return o},_formatterLabel:function(t,e){return"string"==typeof t&&t?a.formatTplSimple(t,e):"function"==typeof t?t(e):e.nameMap},_yearTextPositionControl:function(t,e,i,n){t=t.slice();var o=["center","bottom"];"top"===i&&(t[1]-=n),"bottom"===i&&(t[1]+=n,o=["center","top"]),"left"===i&&(t[0]-=n),"right"===i&&(t[0]+=n,o=["center","top"]);var a=0;return"left"!==i&&"right"!==i||(a=Math.PI/2),{rotation:a,origin:t,style:{x:t[0],y:t[1],textAlign:o[0],textVerticalAlign:o[1]}}},_renderYearText:function(t,e,i,a){var r=t.getModel("yearLabel");if(r.get("show")){var s=t.getModel("yearLabel.textStyle"),l=r.get("margin"),u=r.get("position");u||(u="horizontal"!==i?"top":"left");var c=[this._tlpoints[this._tlpoints.length-1],this._blpoints[0]],h=(c[0][0]+c[1][0])/2,d=(c[0][1]+c[1][1])/2,f="horizontal"===i?0:1,p={top:[h,c[f][1]],bottom:[h,c[1-f][1]],left:[c[1-f][0],d],right:[c[f][0],d]},g=e.start.y;+e.end.y>+e.start.y&&(g=g+"-"+e.end.y);var m=r.get("formatter"),v={start:e.start.y,end:e.end.y,nameMap:g},y=this._formatterLabel(m,v),x=new o.Text(n.merge({z2:30,style:{text:y,font:s.getFont(),fill:s.getTextColor()}},this._yearTextPositionControl(p[u],i,u,l)));a.add(x)}},_monthTextPositionControl:function(t,e,i,n,o){var a="left",r="top",s=t[0],l=t[1];return"horizontal"===i?(l+=o,e&&(a="center"),"start"===n&&(r="bottom")):(s+=o,e&&(r="middle"),"start"===n&&(a="right")),{x:s,y:l,textAlign:a, +textVerticalAlign:r}},_renderMonthText:function(t,e,i){var a=t.getModel("monthLabel");if(a.get("show")){var r=t.getModel("monthLabel.textStyle"),l=a.get("nameMap"),u=a.get("margin"),c=a.get("position"),h=a.get("align"),d=[this._tlpoints,this._blpoints];n.isString(l)&&(l=s[l.toUpperCase()]||[]);var f="start"===c?0:1,p="horizontal"===e?0:1;u="start"===c?-u:u;for(var g="center"===h,m=0;m=0||"+"===i?"left":"right"},s={horizontal:i>=0||"+"===i?"top":"bottom",vertical:"middle"},l={horizontal:0,vertical:b/2},u="vertical"===o?a.height:a.width,c=t.getModel("controlStyle"),h=c.get("show"),d=h?c.get("itemSize"):0,f=h?c.get("itemGap"):0,p=d+f,g=t.get("label.normal.rotate")||0;g=g*b/180;var m,v,y,x,_=c.get("position",!0),h=c.get("show",!0),w=h&&c.get("showPlayBtn",!0),S=h&&c.get("showPrevBtn",!0),M=h&&c.get("showNextBtn",!0),I=0,T=u;return"left"===_||"bottom"===_?(w&&(m=[0,0],I+=p),S&&(v=[I,0],I+=p),M&&(y=[T-d,0],T-=p)):(w&&(m=[T-d,0],T-=p),S&&(v=[0,0],I+=p),M&&(y=[T-d,0],T-=p)),x=[I,T],t.get("inverse")&&x.reverse(),{viewRect:a,mainLength:u,orient:o,rotation:l[o],labelRotation:g,labelPosOpt:i,labelAlign:t.get("label.normal.textStyle.align")||r[o],labelBaseline:t.get("label.normal.textStyle.baseline")||s[o],playPosition:m,prevBtnPosition:v,nextBtnPosition:y,axisExtent:x,controlSize:d,controlGap:f}},_position:function(t,e){function i(t){var e=t.position;t.origin=[h[0][0]-e[0],h[1][0]-e[1]]}function n(t){return[[t.x,t.x+t.width],[t.y,t.y+t.height]]}function o(t,e,i,n,o){t[n]+=i[n][o]-e[n][o]}var a=this._mainGroup,r=this._labelGroup,s=t.viewRect;if("vertical"===t.orient){var l=g.create(),u=s.x,c=s.y+s.height;g.translate(l,l,[-u,-c]),g.rotate(l,l,-b/2),g.translate(l,l,[u,c]),s=s.clone(),s.applyTransform(l)}var h=n(s),d=n(a.getBoundingRect()),f=n(r.getBoundingRect()),p=a.position,m=r.position;m[0]=p[0]=h[0][0];var v=t.labelPosOpt;if(isNaN(v)){var y="+"===v?0:1;o(p,d,h,1,y),o(m,f,h,1,1-y)}else{var y=v>=0?0:1;o(p,d,h,1,y),m[1]=p[1]+v}a.attr("position",p),r.attr("position",m),a.rotation=r.rotation=t.rotation,i(a),i(r)},_createAxis:function(t,e){var i=e.getData(),n=e.get("axisType"),o=f.createScaleByModel(e,n),a=i.getDataExtent("value");o.setExtent(a[0],a[1]),this._customizeScale(o,i),o.niceTicks();var r=new h("value",o,t.axisExtent,n);return r.model=e,r},_customizeScale:function(t,e){t.getTicks=function(){return e.mapArray(["value"],function(t){return t})},t.getTicksLabels=function(){return s.map(this.getTicks(),t.getLabel,t)}},_createGroup:function(t){var e=this["_"+t]=new l.Group;return this.group.add(e),e},_renderAxisLine:function(t,e,i,n){var o=i.getExtent();n.get("lineStyle.show")&&e.add(new l.Line({shape:{x1:o[0],y1:0,x2:o[1],y2:0},style:s.extend({lineCap:"round"},n.getModel("lineStyle").getLineStyle()),silent:!0,z2:1}))},_renderAxisTick:function(t,e,i,n){var o=n.getData(),r=i.scale.getTicks();_(r,function(t,r){var s=i.dataToCoord(t),u=o.getItemModel(r),c=u.getModel("itemStyle.normal"),h=u.getModel("itemStyle.emphasis"),d={position:[s,0],onclick:x(this._changeTimeline,this,r)},f=a(u,c,e,d);l.setHoverStyle(f,h.getItemStyle()),u.get("tooltip")?(f.dataIndex=r,f.dataModel=n):f.dataIndex=f.dataModel=null},this)},_renderAxisLabel:function(t,e,i,n){var o=n.getModel("label.normal");if(o.get("show")){var a=n.getData(),r=i.scale.getTicks(),s=f.getFormattedLabels(i,o.get("formatter")),u=i.getLabelInterval();_(r,function(n,o){if(!i.isLabelIgnored(o,u)){var r=a.getItemModel(o),c=r.getModel("label.normal.textStyle"),h=r.getModel("label.emphasis.textStyle"),d=i.dataToCoord(n),f=new l.Text({style:{text:s[o],textAlign:t.labelAlign,textVerticalAlign:t.labelBaseline,textFont:c.getFont(),fill:c.getTextColor()},position:[d,0],rotation:t.labelRotation-t.rotation,onclick:x(this._changeTimeline,this,o),silent:!1});e.add(f),l.setHoverStyle(f,h.getItemStyle())}},this)}},_renderControl:function(t,e,i,n){function a(t,i,a,d){if(t){var f={position:t,origin:[r/2,0],rotation:d?-s:0,rectHover:!0,style:u,onclick:a},p=o(n,i,h,f);e.add(p),l.setHoverStyle(p,c)}}var r=t.controlSize,s=t.rotation,u=n.getModel("controlStyle.normal").getItemStyle(),c=n.getModel("controlStyle.emphasis").getItemStyle(),h=[0,-r/2,r,r],d=n.getPlayState(),f=n.get("inverse",!0);a(t.nextBtnPosition,"controlStyle.nextIcon",x(this._changeTimeline,this,f?"-":"+")),a(t.prevBtnPosition,"controlStyle.prevIcon",x(this._changeTimeline,this,f?"+":"-")),a(t.playPosition,"controlStyle."+(d?"stopIcon":"playIcon"),x(this._handlePlayClick,this,!d),!0)},_renderCurrentPointer:function(t,e,i,n){var o=n.getData(),s=n.getCurrentIndex(),l=o.getItemModel(s).getModel("checkpointStyle"),u=this,c={onCreate:function(t){t.draggable=!0,t.drift=x(u._handlePointerDrag,u),t.ondragend=x(u._handlePointerDragend,u),r(t,s,i,n,!0)},onUpdate:function(t){r(t,s,i,n)}};this._currentPointer=a(l,l,this._mainGroup,{},this._currentPointer,c)},_handlePlayClick:function(t){this._clearTimer(),this.api.dispatchAction({type:"timelinePlayChange",playState:t,from:this.uid})},_handlePointerDrag:function(t,e,i){this._clearTimer(),this._pointerChangeTimeline([i.offsetX,i.offsetY])},_handlePointerDragend:function(t){this._pointerChangeTimeline([t.offsetX,t.offsetY],!0)},_pointerChangeTimeline:function(t,e){var i=this._toAxisCoord(t)[0],n=this._axis,o=m.asc(n.getExtent().slice());i>o[1]&&(i=o[1]),i=e&&(t=e-1),t<0&&(t=0)),this.option.currentIndex=t},getCurrentIndex:function(){return this.option.currentIndex},isIndexMax:function(){return this.getCurrentIndex()>=this._data.count()-1},setPlayState:function(t){this.option.autoPlay=!!t},getPlayState:function(){return!!this.option.autoPlay},_initData:function(){var t=this.option,e=t.data||[],i=t.axisType,n=this._names=[];if("category"===i){var s=[];a.each(e,function(t,e){var i,o=r.getDataItemValue(t);a.isObject(t)?(i=a.clone(t),i.value=e):i=e,s.push(i),a.isString(o)||null!=o&&!isNaN(o)||(o=""),n.push(o+"")}),e=s}var l={category:"ordinal",time:"time"}[i]||"number",u=this._data=new o([{name:"value",type:l}],this);u.initData(e,n)},getData:function(){return this._data},getCategories:function(){if("category"===this.get("axisType"))return this._names.slice()}});t.exports=s},function(t,e,i){var n=i(65);t.exports=n.extend({type:"timeline"})},function(t,e,i){function n(t){var e=t.type,i={number:"value",time:"time"};if(i[e]&&(t.axisType=i[e],delete t.type),o(t),a(t,"controlPosition")){var n=t.controlStyle||(t.controlStyle={});a(n,"position")||(n.position=t.controlPosition),"none"!==n.position||a(n,"show")||(n.show=!1,delete n.position),delete t.controlPosition}r.each(t.data||[],function(t){r.isObject(t)&&!r.isArray(t)&&(!a(t,"value")&&a(t,"name")&&(t.value=t.name),o(t))})}function o(t){var e=t.itemStyle||(t.itemStyle={}),i=e.emphasis||(e.emphasis={}),n=t.label||t.label||{},o=n.normal||(n.normal={}),s={normal:1,emphasis:1};r.each(n,function(t,e){s[e]||a(o,e)||(o[e]=t)}),i.label&&!a(n,"emphasis")&&(n.emphasis=i.label,delete i.label)}function a(t,e){return t.hasOwnProperty(e)}var r=i(1);t.exports=function(t){var e=t&&t.timeline;r.isArray(e)||(e=e?[e]:[]),r.each(e,function(t){t&&n(t)})}},function(t,e,i){var n=i(2),o=i(1);n.registerAction({type:"timelineChange",event:"timelineChanged",update:"prepareAndUpdate"},function(t,e){var i=e.getComponent("timeline");return i&&null!=t.currentIndex&&(i.setCurrentIndex(t.currentIndex),!i.get("loop",!0)&&i.isIndexMax()&&i.setPlayState(!1)),e.resetOption("timeline"),o.defaults({currentIndex:i.option.currentIndex},t)}),n.registerAction({type:"timelinePlayChange",event:"timelinePlayChanged",update:"update"},function(t,e){var i=e.getComponent("timeline");i&&null!=t.playState&&i.setPlayState(t.playState)})},function(t,e,i){i(13).registerSubTypeDefaulter("timeline",function(){return"slider"})},function(t,e,i){"use strict";function n(t,e,i){this.model=t,this.ecModel=e,this.api=i,this._brushType,this._brushMode}var o=i(29),a=i(1);n.defaultOption={show:!0,type:["rect","polygon","lineX","lineY","keep","clear"],icon:{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",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",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",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",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",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"},title:{rect:"矩形选择",polygon:"圈选",lineX:"横向选择",lineY:"纵向选择",keep:"保持选择",clear:"清除选择"}};var r=n.prototype;r.render=r.updateView=r.updateLayout=function(t,e,i){var n,o,r;e.eachComponent({mainType:"brush"},function(t){n=t.brushType,o=t.brushOption.brushMode||"single",r|=t.areas.length}),this._brushType=n,this._brushMode=o,a.each(t.get("type",!0),function(e){t.setIconStatus(e,("keep"===e?"multiple"===o:"clear"===e?r:e===n)?"emphasis":"normal")})},r.getIcons=function(){var t=this.model,e=t.get("icon",!0),i={};return a.each(t.get("type",!0),function(t){e[t]&&(i[t]=e[t])}),i},r.onclick=function(t,e,i){var e=this.api,n=this._brushType,o=this._brushMode;"clear"===i?(e.dispatchAction({type:"axisAreaSelect",intervals:[]}),e.dispatchAction({type:"brush",command:"clear",areas:[]})):e.dispatchAction({type:"takeGlobalCursor",key:"brush",brushOption:{brushType:"keep"===i?n:n!==i&&i,brushMode:"keep"===i?"multiple"===o?"single":"multiple":o}})},o.register("brush",n),t.exports=n},function(t,e,i){i(392),i(393)},function(t,e,i){function n(t,e,i){if(i[0]===i[1])return i.slice();for(var n=200,o=(i[1]-i[0])/n,a=i[0],r=[],s=0;s<=n&&ae[1]&&e.reverse(),e[0]=Math.max(e[0],t[0]),e[1]=Math.min(e[1],t[1]))},completeVisualOption:function(){o.prototype.completeVisualOption.apply(this,arguments),a.each(this.stateList,function(t){var e=this.option.controller[t].symbolSize;e&&e[0]!==e[1]&&(e[0]=0)},this)},setSelected:function(t){this.option.range=t.slice(),this._resetRange()},getSelected:function(){var t=this.getExtent(),e=r.asc((this.get("range")||[]).slice());return e[0]>t[1]&&(e[0]=t[1]),e[1]>t[1]&&(e[1]=t[1]),e[0]=i[1]||t<=e[1])?"inRange":"outOfRange"},findTargetDataIndices:function(t){var e=[];return this.eachTargetSeries(function(i){var n=[],o=i.getData();o.each(this.getDataDimension(o),function(e,i){t[0]<=e&&e<=t[1]&&n.push(i)},!0,this),e.push({seriesId:i.id,dataIndex:n})},this),e},getVisualMeta:function(t){function e(e,i){a.push({value:e,color:t(e,i)})}for(var i=n(this,"outOfRange",this.getExtent()),o=n(this,"inRange",this.option.range.slice()),a=[],r=0,s=0,l=o.length,u=i.length;st[1])break;n.push({color:this.getControllerVisual(r,"color",e),offset:a/i})}return n.push({color:this.getControllerVisual(t[1],"color",e),offset:1}),n},_createBarPoints:function(t,e){var i=this.visualMapModel.itemSize;return[[i[0]-e[0],t[0]],[i[0],t[0]],[i[0],t[1]],[i[0]-e[1],t[1]]]},_createBarGroup:function(t){var e=this._orient,i=this.visualMapModel.get("inverse");return new u.Group("horizontal"!==e||i?"horizontal"===e&&i?{scale:"bottom"===t?[-1,1]:[1,1],rotation:-Math.PI/2}:"vertical"!==e||i?{scale:"left"===t?[1,1]:[-1,1]}:{scale:"left"===t?[1,-1]:[-1,-1]}:{scale:"bottom"===t?[1,1]:[-1,1],rotation:Math.PI/2})},_updateHandle:function(t,e){if(this._useHandle){var i=this._shapes,n=this.visualMapModel,o=i.handleThumbs,a=i.handleLabels;y([0,1],function(r){var s=o[r];s.setStyle("fill",e.handlesColor[r]),s.position[1]=t[r];var l=u.applyTransform(i.handleLabelPoints[r],u.getTransform(s,this.group));a[r].setStyle({x:l[0],y:l[1],text:n.formatValueText(this._dataInterval[r]),textVerticalAlign:"middle",textAlign:this._applyTransform("horizontal"===this._orient?0===r?"bottom":"top":"left",i.barGroup)})},this)}},_showIndicator:function(t,e,i,n){var o=this.visualMapModel,r=o.getExtent(),s=o.itemSize,l=[0,s[1]],c=v(t,r,l,!0),h=this._shapes,d=h.indicator;if(d){d.position[1]=c,d.attr("invisible",!1),d.setShape("points",a(!!i,n,c,s[1]));var f={convertOpacityToAlpha:!0},p=this.getControllerVisual(t,"color",f);d.setStyle("fill",p);var g=u.applyTransform(h.indicatorLabelPoint,u.getTransform(d,this.group)),m=h.indicatorLabel;m.attr("invisible",!1);var y=this._applyTransform("left",h.barGroup),x=this._orient;m.setStyle({text:(i?i:"")+o.formatValueText(e),textVerticalAlign:"horizontal"===x?y:"middle",textAlign:"horizontal"===x?"center":y,x:g[0],y:g[1]})}},_enableHoverLinkToSeries:function(){var t=this;this._shapes.barGroup.on("mousemove",function(e){if(t._hovering=!0,!t._dragging){var i=t.visualMapModel.itemSize,n=t._applyTransform([e.offsetX,e.offsetY],t._shapes.barGroup,!0,!0);n[1]=x(_(0,n[1]),i[1]),t._doHoverLinkToSeries(n[1],0<=n[0]&&n[0]<=i[0])}}).on("mouseout",function(){t._hovering=!1,!t._dragging&&t._clearHoverLinkToSeries()})},_enableHoverLinkFromSeries:function(){var t=this.api.getZr();this.visualMapModel.option.hoverLink?(t.on("mouseover",this._hoverLinkFromSeriesMouseOver,this), +t.on("mouseout",this._hideIndicator,this)):this._clearHoverLinkFromSeries()},_doHoverLinkToSeries:function(t,e){var i=this.visualMapModel,n=i.itemSize;if(i.option.hoverLink){var o=[0,n[1]],a=i.getExtent();t=x(_(o[0],t),o[1]);var l=r(i,a,o),u=[t-l,t+l],c=v(t,o,a,!0),h=[v(u[0],o,a,!0),v(u[1],o,a,!0)];u[0]o[1]&&(h[1]=1/0),e&&(h[0]===-(1/0)?this._showIndicator(c,h[1],"< ",l):h[1]===1/0?this._showIndicator(c,h[0],"> ",l):this._showIndicator(c,c,"≈ ",l));var d=this._hoverLinkDataIndices,f=[];(e||s(i))&&(f=this._hoverLinkDataIndices=i.findTargetDataIndices(h));var m=g.compressBatches(d,f);this._dispatchHighDown("downplay",p.convertDataIndex(m[0])),this._dispatchHighDown("highlight",p.convertDataIndex(m[1]))}},_hoverLinkFromSeriesMouseOver:function(t){var e=t.target,i=this.visualMapModel;if(e&&null!=e.dataIndex){var n=this.ecModel.getSeriesByIndex(e.seriesIndex);if(i.isTargetSeries(n)){var o=n.getData(e.dataType),a=o.getDimension(i.getDataDimension(o)),r=o.get(a,e.dataIndex,!0);isNaN(r)||this._showIndicator(r,r)}}},_hideIndicator:function(){var t=this._shapes;t.indicator&&t.indicator.attr("invisible",!0),t.indicatorLabel&&t.indicatorLabel.attr("invisible",!0)},_clearHoverLinkToSeries:function(){this._hideIndicator();var t=this._hoverLinkDataIndices;this._dispatchHighDown("downplay",p.convertDataIndex(t)),t.length=0},_clearHoverLinkFromSeries:function(){this._hideIndicator();var t=this.api.getZr();t.off("mouseover",this._hoverLinkFromSeriesMouseOver),t.off("mouseout",this._hideIndicator)},_applyTransform:function(t,e,i,n){var o=u.getTransform(e,n?null:this.group);return u[c.isArray(t)?"applyTransform":"transformDirection"](t,o,i)},_dispatchHighDown:function(t,e){e&&e.length&&this.api.dispatchAction({type:t,batch:e})},dispose:function(){this._clearHoverLinkFromSeries(),this._clearHoverLinkToSeries()},remove:function(){this._clearHoverLinkFromSeries(),this._clearHoverLinkToSeries()}});t.exports=S},function(t,e,i){function n(t,e){var i=t.inverse;("vertical"===t.orient?!i:i)&&e.reverse()}var o=i(254),a=i(1),r=i(83),s=i(266),l=i(4).reformIntervals,u=o.extend({type:"visualMap.piecewise",defaultOption:{selected:null,minOpen:!1,maxOpen:!1,align:"auto",itemWidth:20,itemHeight:14,itemSymbol:"roundRect",pieceList:null,categories:null,splitNumber:5,selectedMode:"multiple",itemGap:10,hoverLink:!0,showLabel:null},optionUpdated:function(t,e){u.superApply(this,"optionUpdated",arguments),this._pieceList=[],this.resetTargetSeries(),this.resetExtent();var i=this._mode=this._determineMode();c[this._mode].call(this),this._resetSelected(t,e);var n=this.option.categories;this.resetVisual(function(t,e){"categories"===i?(t.mappingMethod="category",t.categories=a.clone(n)):(t.dataExtent=this.getExtent(),t.mappingMethod="piecewise",t.pieceList=a.map(this._pieceList,function(t){var t=a.clone(t);return"inRange"!==e&&(t.visual=null),t}))})},completeVisualOption:function(){function t(t,e,i){return t&&t[e]&&(a.isObject(t[e])?t[e].hasOwnProperty(i):t[e]===i)}var e=this.option,i={},n=r.listVisualTypes(),l=this.isCategory();a.each(e.pieces,function(t){a.each(n,function(e){t.hasOwnProperty(e)&&(i[e]=1)})}),a.each(i,function(i,n){var o=0;a.each(this.stateList,function(i){o|=t(e,i,n)||t(e.target,i,n)},this),!o&&a.each(this.stateList,function(t){(e[t]||(e[t]={}))[n]=s.get(n,"inRange"===t?"active":"inactive",l)})},this),o.prototype.completeVisualOption.apply(this,arguments)},_resetSelected:function(t,e){var i=this.option,n=this._pieceList,o=(e?i:t).selected||{};if(i.selected=o,a.each(n,function(t,e){var i=this.getSelectedMapKey(t);o.hasOwnProperty(i)||(o[i]=!0)},this),"single"===i.selectedMode){var r=!1;a.each(n,function(t,e){var i=this.getSelectedMapKey(t);o[i]&&(r?o[i]=!1:r=!0)},this)}},getSelectedMapKey:function(t){return"categories"===this._mode?t.value+"":t.index+""},getPieceList:function(){return this._pieceList},_determineMode:function(){var t=this.option;return t.pieces&&t.pieces.length>0?"pieces":this.option.categories?"categories":"splitNumber"},setSelected:function(t){this.option.selected=a.clone(t)},getValueState:function(t){var e=r.findPieceIndex(t,this._pieceList);return null!=e&&this.option.selected[this.getSelectedMapKey(this._pieceList[e])]?"inRange":"outOfRange"},findTargetDataIndices:function(t){var e=[];return this.eachTargetSeries(function(i){var n=[],o=i.getData();o.each(this.getDataDimension(o),function(e,i){var o=r.findPieceIndex(e,this._pieceList);o===t&&n.push(i)},!0,this),e.push({seriesId:i.id,dataIndex:n})},this),e},getRepresentValue:function(t){var e;if(this.isCategory())e=t.value;else if(null!=t.value)e=t.value;else{var i=t.interval||[];e=i[0]===-(1/0)&&i[1]===1/0?0:(i[0]+i[1])/2}return e},getVisualMeta:function(t){function e(e,a){var r=o.getRepresentValue({interval:e});a||(a=o.getValueState(r));var s=t(r,a);e[0]===-(1/0)?n[0]=s:e[1]===1/0?n[1]=s:i.push({value:e[0],color:s},{value:e[1],color:s})}if(!this.isCategory()){var i=[],n=[],o=this,r=this._pieceList.slice();if(r.length){var s=r[0].interval[0];s!==-(1/0)&&r.unshift({interval:[-(1/0),s]}),s=r[r.length-1].interval[1],s!==1/0&&r.push({interval:[s,1/0]})}else r.push({interval:[-(1/0),1/0]});var l=-(1/0);return a.each(r,function(t){var i=t.interval;i&&(i[0]>l&&e([l,i[0]],"outOfRange"),e(i.slice()),l=i[1])},this),{stops:i,outerColors:n}}}}),c={splitNumber:function(){var t=this.option,e=this._pieceList,i=t.precision,n=this.getExtent(),o=t.splitNumber;o=Math.max(parseInt(o,10),1),t.splitNumber=o;for(var r=(n[1]-n[0])/o;+r.toFixed(i)!==r&&i<5;)i++;t.precision=i,r=+r.toFixed(i);var s=0;t.minOpen&&e.push({index:s++,interval:[-(1/0),n[0]],close:[0,0]});for(var u=n[0],c=s+o;s","≥"][e[0]]];t.text=t.text||this.formatValueText(null!=t.value?t.value:t.interval,!1,i)},this)}};t.exports=u},function(t,e,i){var n=i(255),o=i(1),a=i(3),r=i(24),s=i(12),l=i(256),u=n.extend({type:"visualMap.piecewise",doRender:function(){function t(t){var r=t.piece,s=new a.Group;s.onclick=o.bind(this._onItemClick,this,r),this._enableHoverLink(s,t.indexInModelPieceList);var d=i.getRepresentValue(r);if(this._createItemSymbol(s,d,[0,0,h[0],h[1]]),p){var f=this.visualMapModel.getValueState(d);s.add(new a.Text({style:{x:"right"===c?-n:h[0]+n,y:h[1]/2,text:r.text,textVerticalAlign:"middle",textAlign:c,textFont:l,fill:u,opacity:"outOfRange"===f?.5:1}}))}e.add(s)}var e=this.group;e.removeAll();var i=this.visualMapModel,n=i.get("textGap"),r=i.textStyleModel,l=r.getFont(),u=r.getTextColor(),c=this._getItemAlign(),h=i.itemSize,d=this._getViewData(),f=d.endsText,p=o.retrieve(i.get("showLabel",!0),!f);f&&this._renderEndsText(e,f[0],h,p,c),o.each(d.viewPieceList,t,this),f&&this._renderEndsText(e,f[1],h,p,c),s.box(i.get("orient"),e,i.get("itemGap")),this.renderBackground(e),this.positionGroup(e)},_enableHoverLink:function(t,e){function i(t){var i=this.visualMapModel;i.option.hoverLink&&this.api.dispatchAction({type:t,batch:l.convertDataIndex(i.findTargetDataIndices(e))})}t.on("mouseover",o.bind(i,this,"highlight")).on("mouseout",o.bind(i,this,"downplay"))},_getItemAlign:function(){var t=this.visualMapModel,e=t.option;if("vertical"===e.orient)return l.getItemAlign(t,this.api,t.itemSize);var i=e.align;return i&&"auto"!==i||(i="left"),i},_renderEndsText:function(t,e,i,n,o){if(e){var r=new a.Group,s=this.visualMapModel.textStyleModel;r.add(new a.Text({style:{x:n?"right"===o?i[0]:0:i[0]/2,y:i[1]/2,textVerticalAlign:"middle",textAlign:n?o:"center",text:e,textFont:s.getFont(),fill:s.getTextColor()}})),t.add(r)}},_getViewData:function(){var t=this.visualMapModel,e=o.map(t.getPieceList(),function(t,e){return{piece:t,indexInModelPieceList:e}}),i=t.get("text"),n=t.get("orient"),a=t.get("inverse");return("horizontal"===n?a:!a)?e.reverse():i&&(i=i.slice().reverse()),{viewPieceList:e,endsText:i}},_createItemSymbol:function(t,e,i){t.add(r.createSymbol(this.getControllerVisual(e,"symbol"),i[0],i[1],i[2],i[3],this.getControllerVisual(e,"color")))},_onItemClick:function(t){var e=this.visualMapModel,i=e.option,n=o.clone(i.selected),a=e.getSelectedMapKey(t);"single"===i.selectedMode?(n[a]=!0,o.each(n,function(t,e){n[e]=e===a})):n[a]=!n[a],this.api.dispatchAction({type:"selectDataRange",from:this.uid,visualMapId:this.visualMapModel.id,selected:n})}});t.exports=u},function(t,e,i){i(2).registerPreprocessor(i(257)),i(258),i(259),i(388),i(389),i(260)},function(t,e,i){i(2).registerPreprocessor(i(257)),i(258),i(259),i(390),i(391),i(260)},function(t,e,i){"use strict";function n(t,e,i){this._model=t}function o(t,e,i,n){var o=i.calendarModel,a=i.seriesModel,r=o?o.coordinateSystem:a?a.coordinateSystem:null;return r===this?r[t](n):null}var a=i(12),r=i(4),s=i(1),l=864e5;n.prototype={constructor:n,type:"calendar",dimensions:["time","value"],getDimensionsInfo:function(){return[{name:"time",type:"time"}]},getRangeInfo:function(){return this._rangeInfo},getModel:function(){return this._model},getRect:function(){return this._rect},getCellWidth:function(){return this._sw},getCellHeight:function(){return this._sh},getOrient:function(){return this._orient},getFirstDayOfWeek:function(){return this._firstDayOfWeek},getDateInfo:function(t){t=r.parseDate(t);var e=t.getFullYear(),i=t.getMonth()+1;i=i<10?"0"+i:i;var n=t.getDate();n=n<10?"0"+n:n;var o=t.getDay();return o=Math.abs((o+7-this.getFirstDayOfWeek())%7),{y:e,m:i,d:n,day:o,time:t.getTime(),formatedDate:e+"-"+i+"-"+n,date:t}},getNextNDay:function(t,e){if(e=e||0,0===e)return this.getDateInfo(t);var i=this.getDateInfo(t).time;return this.getDateInfo(i+l*e)},update:function(t,e){function i(t,e){return null!=t[e]&&"auto"!==t[e]}this._firstDayOfWeek=this._model.getModel("dayLabel").get("firstDay"),this._orient=this._model.get("orient"),this._lineWidth=this._model.getModel("itemStyle.normal").getItemStyle().lineWidth||0,this._rangeInfo=this._getRangeInfo(this._initRangeOption());var n=this._rangeInfo.weeks||1,o=["width","height"],r=this._model.get("cellSize").slice(),l=this._model.getBoxLayoutParams(),u="horizontal"===this._orient?[n,7]:[7,n];s.each([0,1],function(t){i(r,t)&&(l[o[t]]=r[t]*u[t])});var c={width:e.getWidth(),height:e.getHeight()},h=this._rect=a.getLayoutRect(l,c);s.each([0,1],function(t){i(r,t)||(r[t]=h[o[t]]/u[t])}),this._sw=r[0],this._sh=r[1]},dataToPoint:function(t,e){s.isArray(t)&&(t=t[0]),null==e&&(e=!0);var i=this.getDateInfo(t),n=this._rangeInfo,o=i.formatedDate;if(e&&!(i.time>=n.start.time&&i.time<=n.end.time))return[NaN,NaN];var a=i.day,r=this._getRangeInfo([n.start.time,o]).weeks;return"vertical"===this._orient?[this._rect.x+a*this._sw+this._sw/2,this._rect.y+(r-1)*this._sh+this._sh/2]:[this._rect.x+(r-1)*this._sw+this._sw/2,this._rect.y+a*this._sh+this._sh/2]},pointToData:function(t){var e=this.pointToDate(t);return e&&e.time},dataToRect:function(t,e){var i=this.dataToPoint(t,e);return{contentShape:{x:i[0]-(this._sw-this._lineWidth)/2,y:i[1]-(this._sh-this._lineWidth)/2,width:this._sw-this._lineWidth,height:this._sh-this._lineWidth},center:i,tl:[i[0]-this._sw/2,i[1]-this._sh/2],tr:[i[0]+this._sw/2,i[1]-this._sh/2],br:[i[0]+this._sw/2,i[1]+this._sh/2],bl:[i[0]-this._sw/2,i[1]+this._sh/2]}},pointToDate:function(t){var e=Math.floor((t[0]-this._rect.x)/this._sw)+1,i=Math.floor((t[1]-this._rect.y)/this._sh)+1,n=this._rangeInfo.range;return"vertical"===this._orient?this._getDateByWeeksAndDay(i,e-1,n):this._getDateByWeeksAndDay(e,i-1,n)},convertToPixel:s.curry(o,"dataToPoint"),convertFromPixel:s.curry(o,"pointToData"),_initRangeOption:function(){var t=this._model.get("range"),e=t;if(s.isArray(e)&&1===e.length&&(e=e[0]),/^\d{4}$/.test(e)&&(t=[e+"-01-01",e+"-12-31"]),/^\d{4}[\/|-]\d{1,2}$/.test(e)){var i=this.getDateInfo(e),n=i.date;n.setMonth(n.getMonth()+1);var o=this.getNextNDay(n,-1);t=[i.formatedDate,o.formatedDate]}/^\d{4}[\/|-]\d{1,2}[\/|-]\d{1,2}$/.test(e)&&(t=[e,e]);var a=this._getRangeInfo(t);return a.start.time>a.end.time&&t.reverse(),t},_getRangeInfo:function(t){var e=this.getDateInfo(t[0]),i=this.getDateInfo(t[1]),n=Math.floor(i.time/l)-Math.floor(e.time/l)+1,o=Math.floor((n+e.day+6)/7);return{range:[e.formatedDate,i.formatedDate],start:e,end:i,allDay:n,weeks:o,fweek:e.day,lweek:i.day}},_getDateByWeeksAndDay:function(t,e,i){var n=this._getRangeInfo(i);if(t>n.weeks||0===t&&en.lweek)return!1;var o=7*(t-1)-n.fweek+e,a=n.start.time+o*l;return this.getDateInfo(a)}},n.dimensions=n.prototype.dimensions,n.getDimensionsInfo=n.prototype.getDimensionsInfo,n.create=function(t,e){var i=[];return t.eachComponent("calendar",function(o){var a=new n(o,t,e);i.push(a),o.coordinateSystem=a}),t.eachSeries(function(t){"calendar"===t.get("coordinateSystem")&&(t.coordinateSystem=i[t.get("calendarIndex")||0])}),i},i(26).register("calendar",n),t.exports=n},function(t,e,i){"use strict";function n(t,e){var i=t.cellSize;a.isArray(i)?1===i.length&&(i[1]=i[0]):i=t.cellSize=[i,i];var n=a.map([0,1],function(t){return r.sizeCalculable(e,t)&&(i[t]="auto"),null!=i[t]&&"auto"!==i[t]});r.mergeLayoutParam(t,e,{type:"box",ignoreSize:n})}var o=i(13),a=i(1),r=i(12),s=o.extend({type:"calendar",coordinateSystem:null,defaultOption:{zlevel:0,z:2,left:80,top:60,cellSize:20,orient:"horizontal",splitLine:{show:!0,lineStyle:{color:"#000",width:1,type:"solid"}},itemStyle:{normal:{color:"#fff",borderWidth:1,borderColor:"#ccc"}},dayLabel:{show:!0,firstDay:0,position:"start",margin:"50%",nameMap:"en",textStyle:{color:"#000"}},monthLabel:{show:!0,position:"start",margin:5,align:"center",nameMap:"en",formatter:null,textStyle:{color:"#000"}},yearLabel:{show:!0,position:null,margin:30,formatter:null,textStyle:{color:"#ccc",fontFamily:"sans-serif",fontWeight:"bolder",fontSize:20}}},init:function(t,e,i,o){var a=r.getLayoutParams(t);s.superApply(this,"init",arguments),n(t,a)},mergeOption:function(t,e){s.superApply(this,"mergeOption",arguments),n(this.option,t)}});t.exports=s},function(t,e,i){function n(t){var e=t.getRect(),i=t.getRangeInfo();return{coordSys:{type:"calendar",x:e.x,y:e.y,width:e.width,height:e.height,cellWidth:t.getCellWidth(),cellHeight:t.getCellHeight(),rangeInfo:{start:i.start,end:i.end,weeks:i.weeks,dayCount:i.allDay}},api:{coord:o.bind(t.dataToPoint,t)}}}var o=i(1);t.exports=n},function(t,e,i){function n(t,e){return e=e||[0,0],a.map(["x","y"],function(i,n){var o=this.getAxis(i),a=e[n],r=t[n]/2;return"category"===o.type?o.getBandWidth():Math.abs(o.dataToCoord(a-r)-o.dataToCoord(a+r))},this)}function o(t){var e=t.grid.getRect();return{coordSys:{type:"cartesian2d",x:e.x,y:e.y,width:e.width,height:e.height},api:{coord:a.bind(t.dataToPoint,t),size:a.bind(n,t)}}}var a=i(1);t.exports=o},function(t,e,i){function n(t,e,i,n,o){l.call(this,t),this.map=e,this._nameCoordMap=r.createHashMap(),this.loadGeoJson(i,n,o)}function o(t,e,i,n){var o=i.geoModel,a=i.seriesModel,r=o?o.coordinateSystem:a?a.coordinateSystem||(a.getReferringComponents("geo")[0]||{}).coordinateSystem:null;return r===this?r[t](n):null}var a=i(262),r=i(1),s=i(11),l=i(261),u=[i(402),i(403),i(401),i(400)];n.prototype={constructor:n,type:"geo",dimensions:["lng","lat"],containCoord:function(t){for(var e=this.regions,i=0;i=0;i--)l.asc(e[i])},getActiveState:function(t){var e=this.activeIntervals;if(!e.length)return"normal";if(null==t)return"inactive";for(var i=0,n=e.length;i=i&&a<=i+e.axisLength&&r>=n&&r<=n+e.layoutLength},_updateAxesFromSeries:function(t,e){e.eachSeries(function(i){if(t.contains(i,e)){var n=i.getData();g(this.dimensions,function(t){var e=this._axesMap.get(t);e.scale.unionExtentFromData(n,t),l.niceScaleExtent(e.scale,e.model)},this)}},this)},resize:function(t,e){this._rect=s.getLayoutRect(t.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()}),this._layoutAxes()},getRect:function(){return this._rect},_makeLayoutInfo:function(){var t,e=this._model,i=this._rect,n=["x","y"],a=["width","height"],r=e.get("layout"),s="horizontal"===r?0:1,l=i[a[s]],u=[0,l],c=this.dimensions.length,h=o(e.get("axisExpandWidth"),u),d=o(e.get("axisExpandCount")||0,[0,c]),f=e.get("axisExpandable")&&c>3&&c>d&&d>1&&h>0&&l>0,p=e.get("axisExpandWindow");if(p)t=o(p[1]-p[0],u),p[1]=p[0]+t;else{t=o(h*(d-1),u);var g=e.get("axisExpandCenter")||y(c/2);p=[h*g-t/2],p[1]=p[0]+t}var m=(l-t)/(c-d);m<3&&(m=0);var v=[y(_(p[0]/h,1))+1,x(_(p[1]/h,1))-1],b=m/h*p[0];return{layout:r,pixelDimIndex:s,layoutBase:i[n[s]],layoutLength:l,axisBase:i[n[1-s]],axisLength:i[a[1-s]],axisExpandable:f,axisExpandWidth:h,axisCollapseWidth:m,axisExpandWindow:p,axisCount:c,winInnerIndices:v,axisExpandWindow0Pos:b}},_layoutAxes:function(){var t=this._rect,e=this._axesMap,i=this.dimensions,n=this._makeLayoutInfo(),o=n.layout;e.each(function(t){var e=[0,n.axisLength],i=t.inverse?1:0;t.setExtent(e[i],e[1-i])}),g(i,function(i,s){var l=(n.axisExpandable?r:a)(s,n),u={horizontal:{x:l.position,y:n.axisLength},vertical:{x:0,y:l.position}},c={horizontal:b/2,vertical:0},h=[u[o].x+t.x,u[o].y+t.y],f=c[o],p=d.create();d.rotate(p,p,f),d.translate(p,p,h),this._axesLayout[i]={position:h,rotation:f,transform:p,axisNameAvailableWidth:l.axisNameAvailableWidth,axisLabelShow:l.axisLabelShow,nameTruncateMaxWidth:l.nameTruncateMaxWidth,tickDirection:1,labelDirection:1,labelInterval:e.get(i).getLabelInterval()}},this)},getAxis:function(t){return this._axesMap.get(t)},dataToPoint:function(t,e){return this.axisCoordToPoint(this._axesMap.get(e).dataToCoord(t),e)},eachActiveState:function(t,e,i){for(var n=this.dimensions,o=this._axesMap,a=this.hasAxisBrushed(),r=0,s=t.count();ro*(1-c[0])?(l="jump",r=s-o*(1-c[2])):(r=s-o*c[1])>=0&&(r=s-o*(1-c[1]))<=0&&(r=0),r*=e.axisExpandWidth/u,r?p(r,n,a,"all"):l="none";else{var o=n[1]-n[0],d=a[1]*s/o;n=[v(0,d-o/2)],n[1]=m(a[1],n[0]+o),n[0]=n[1]-o}return{axisExpandWindow:n,behavior:l}}},t.exports=n},function(t,e,i){var n=i(1),o=i(33),a=function(t,e,i,n,a){o.call(this,t,e,i),this.type=n||"value",this.axisIndex=a};a.prototype={constructor:a,model:null},n.inherits(a,o),t.exports=a},function(t,e,i){var n=i(1),o=i(13);i(405),o.extend({type:"parallel",dependencies:["parallelAxis"],coordinateSystem:null,dimensions:null,parallelAxisIndex:null,layoutMode:"box",defaultOption:{zlevel:0,z:0,left:80,top:60,right:80,bottom:60,layout:"horizontal",axisExpandable:!1,axisExpandCenter:null,axisExpandCount:0,axisExpandWidth:50,axisExpandRate:17,axisExpandDebounce:50,axisExpandSlideTriggerArea:[-.15,.05,.4],axisExpandTriggerOn:"click",parallelAxisDefault:null},init:function(){o.prototype.init.apply(this,arguments),this.mergeOption({})},mergeOption:function(t){var e=this.option;t&&n.merge(e,t,!0),this._initDimensions()},contains:function(t,e){var i=t.get("parallelIndex");return null!=i&&e.getComponent("parallel",i)===this},setAxisExpand:function(t){n.each(["axisExpandable","axisExpandCenter","axisExpandCount","axisExpandWidth","axisExpandWindow"],function(e){t.hasOwnProperty(e)&&(this.option[e]=t[e])},this)},_initDimensions:function(){var t=this.dimensions=[],e=this.parallelAxisIndex=[],i=n.filter(this.dependentModels.parallelAxis,function(t){return t.get("parallelIndex")===this.componentIndex});n.each(i,function(i){t.push("dim"+i.get("dim")),e.push(i.componentIndex)})}})},function(t,e,i){function n(t){if(!t.parallel){var e=!1;a.each(t.series,function(t){t&&"parallel"===t.type&&(e=!0)}),e&&(t.parallel=[{}])}}function o(t){var e=r.normalizeToArray(t.parallelAxis);a.each(e,function(e){if(a.isObject(e)){var i=e.parallelIndex||0,n=r.normalizeToArray(t.parallel)[i];n&&n.parallelAxisDefault&&a.merge(e,n.parallelAxisDefault,!1)}})}var a=i(1),r=i(5);t.exports=function(t){n(t),o(t)}},function(t,e,i){"use strict";function n(t,e){e=e||[0,360],a.call(this,"angle",t,e),this.type="category"}var o=i(1),a=i(33);n.prototype={constructor:n,pointToData:function(t,e){return this.polar.pointToData(t,e)["radius"===this.dim?0:1]},dataToAngle:a.prototype.dataToCoord,angleToData:a.prototype.coordToData},o.inherits(n,a),t.exports=n},function(t,e,i){"use strict";function n(t,e){return e.type||(e.data?"category":"value")}var o=i(1),a=i(13),r=i(59),s=a.extend({type:"polarAxis",axis:null,getCoordSysModel:function(){return this.ecModel.queryComponents({mainType:"polar",index:this.option.polarIndex,id:this.option.polarId})[0]}});o.merge(s.prototype,i(42));var l={angle:{startAngle:90,clockwise:!0,splitNumber:12,axisLabel:{rotate:!1}},radius:{splitNumber:5}};r("angle",s,n,l.angle),r("radius",s,n,l.radius)},function(t,e,i){"use strict";var n=i(414),o=i(410),a=function(t){this.name=t||"",this.cx=0,this.cy=0,this._radiusAxis=new n,this._angleAxis=new o,this._radiusAxis.polar=this._angleAxis.polar=this};a.prototype={type:"polar",axisPointerEnabled:!0,constructor:a,dimensions:["radius","angle"],model:null,containPoint:function(t){var e=this.pointToCoord(t);return this._radiusAxis.contain(e[0])&&this._angleAxis.contain(e[1])},containData:function(t){return this._radiusAxis.containData(t[0])&&this._angleAxis.containData(t[1])},getAxis:function(t){return this["_"+t+"Axis"]},getAxes:function(){return[this._radiusAxis,this._angleAxis]},getAxesByScale:function(t){var e=[],i=this._angleAxis,n=this._radiusAxis;return i.scale.type===t&&e.push(i),n.scale.type===t&&e.push(n),e},getAngleAxis:function(){return this._angleAxis},getRadiusAxis:function(){return this._radiusAxis},getOtherAxis:function(t){var e=this._angleAxis;return t===e?this._radiusAxis:e},getBaseAxis:function(){return this.getAxesByScale("ordinal")[0]||this.getAxesByScale("time")[0]||this.getAngleAxis()},getTooltipAxes:function(t){var e=null!=t&&"auto"!==t?this.getAxis(t):this.getBaseAxis();return{baseAxes:[e],otherAxes:[this.getOtherAxis(e)]}},dataToPoints:function(t){return t.mapArray(this.dimensions,function(t,e){return this.dataToPoint([t,e])},!0,this)},dataToPoint:function(t,e){return this.coordToPoint([this._radiusAxis.dataToRadius(t[0],e),this._angleAxis.dataToAngle(t[1],e)])},pointToData:function(t,e){var i=this.pointToCoord(t);return[this._radiusAxis.radiusToData(i[0],e),this._angleAxis.angleToData(i[1],e)]},pointToCoord:function(t){var e=t[0]-this.cx,i=t[1]-this.cy,n=this.getAngleAxis(),o=n.getExtent(),a=Math.min(o[0],o[1]),r=Math.max(o[0],o[1]);n.inverse?a=r-360:r=a+360;var s=Math.sqrt(e*e+i*i);e/=s,i/=s;for(var l=Math.atan2(-i,e)/Math.PI*180,u=lr;)l+=360*u;return[s,l]},coordToPoint:function(t){var e=t[0],i=t[1]/180*Math.PI,n=Math.cos(i)*e+this.cx,o=-Math.sin(i)*e+this.cy;return[n,o]}},t.exports=a},function(t,e,i){"use strict";i(411),i(2).extendComponentModel({type:"polar",dependencies:["polarAxis","angleAxis"],coordinateSystem:null,findAxisModel:function(t){var e,i=this.ecModel;return i.eachComponent(t,function(t){t.getCoordSysModel()===this&&(e=t)},this),e},defaultOption:{zlevel:0,z:0,center:["50%","50%"],radius:"80%"}})},function(t,e,i){"use strict";function n(t,e){a.call(this,"radius",t,e),this.type="category"}var o=i(1),a=i(33);n.prototype={constructor:n,pointToData:function(t,e){return this.polar.pointToData(t,e)["radius"===this.dim?0:1]},dataToRadius:a.prototype.dataToCoord, +radiusToData:a.prototype.coordToData},o.inherits(n,a),t.exports=n},function(t,e,i){function n(t,e){return a.map(["Radius","Angle"],function(i,n){var o=this["get"+i+"Axis"](),a=e[n],r=t[n]/2,s="dataTo"+i,l="category"===o.type?o.getBandWidth():Math.abs(o[s](a-r)-o[s](a+r));return"Angle"===i&&(l=l*Math.PI/180),l},this)}function o(t){var e=t.getRadiusAxis(),i=t.getAngleAxis(),o=e.getExtent();return o[0]>o[1]&&o.reverse(),{coordSys:{type:"polar",cx:t.cx,cy:t.cy,r:o[1],r0:o[0]},api:{coord:a.bind(function(n){var o=e.dataToRadius(n[0]),a=i.dataToAngle(n[1]),r=t.coordToPoint([o,a]);return r.push(o,a*Math.PI/180),r}),size:a.bind(n,t)}}}var a=i(1);t.exports=o},function(t,e,i){function n(t,e,i){a.call(this,t,e,i),this.type="value",this.angle=0,this.name="",this.model}var o=i(1),a=i(33);o.inherits(n,a),t.exports=n},function(t,e,i){function n(t,e,i){this._model=t,this.dimensions=[],this._indicatorAxes=o.map(t.getIndicatorModels(),function(t,e){var i="indicator_"+e,n=new a(i,new r);return n.name=t.get("name"),n.model=t,t.axis=n,this.dimensions.push(i),n},this),this.resize(t,i),this.cx,this.cy,this.r,this.startAngle}var o=i(1),a=i(416),r=i(43),s=i(4),l=i(18);n.prototype.getIndicatorAxes=function(){return this._indicatorAxes},n.prototype.dataToPoint=function(t,e){var i=this._indicatorAxes[e];return this.coordToPoint(i.dataToCoord(t),e)},n.prototype.coordToPoint=function(t,e){var i=this._indicatorAxes[e],n=i.angle,o=this.cx+t*Math.cos(n),a=this.cy-t*Math.sin(n);return[o,a]},n.prototype.pointToData=function(t){var e=t[0]-this.cx,i=t[1]-this.cy,n=Math.sqrt(e*e+i*i);e/=n,i/=n;for(var o,a=Math.atan2(-i,e),r=1/0,s=-1,l=0;ln[0]&&isFinite(f)&&isFinite(n[0]))}else{var p=a.getTicks().length-1;p>r&&(h=i(h));var g=Math.round((n[0]+n[1])/2/h)*h,m=Math.round(r/2);a.setExtent(s.round(g-m*h),s.round(g+(r-m)*h)),a.setInterval(h)}})},n.dimensions=[],n.create=function(t,e){var i=[];return t.eachComponent("radar",function(o){var a=new n(o,t,e);i.push(a),o.coordinateSystem=a}),t.eachSeriesByType("radar",function(t){"radar"===t.get("coordinateSystem")&&(t.coordinateSystem=i[t.get("radarIndex")||0])}),i},i(26).register("radar",n),t.exports=n},function(t,e,i){function n(t,e){return s.defaults({show:e},t)}var o=i(96),a=o.valueAxis,r=i(10),s=i(1),l=i(42),u=i(2).extendComponentModel({type:"radar",optionUpdated:function(){var t=this.get("boundaryGap"),e=this.get("splitNumber"),i=this.get("scale"),n=this.get("axisLine"),o=this.get("axisTick"),a=this.get("axisLabel"),u=this.get("name.textStyle"),c=this.get("name.show"),h=this.get("name.formatter"),d=this.get("nameGap"),f=this.get("triggerEvent"),p=s.map(this.get("indicator")||[],function(p){if(null!=p.max&&p.max>0&&!p.min?p.min=0:null!=p.min&&p.min<0&&!p.max&&(p.max=0),p=s.merge(s.clone(p),{boundaryGap:t,splitNumber:e,scale:i,axisLine:n,axisTick:o,axisLabel:a,name:p.text,nameLocation:"end",nameGap:d,nameTextStyle:u,triggerEvent:f},!1),c||(p.name=""),"string"==typeof h){var g=p.name;p.name=h.replace("{value}",null!=g?g:"")}else"function"==typeof h&&(p.name=h(p.name,p));var m=s.extend(new r(p,null,this.ecModel),l);return m.mainType="radar",m.componentIndex=this.componentIndex,m},this);this.getIndicatorModels=function(){return p}},defaultOption:{zlevel:0,z:0,center:["50%","50%"],radius:"75%",startAngle:90,name:{show:!0},boundaryGap:[0,0],splitNumber:5,nameGap:15,scale:!1,shape:"polygon",axisLine:s.merge({lineStyle:{color:"#bbb"}},a.axisLine),axisLabel:n(a.axisLabel,!1),axisTick:n(a.axisTick,!1),splitLine:n(a.splitLine,!0),splitArea:n(a.splitArea,!0),indicator:[]}});t.exports=u},function(t,e,i){function n(t,e){return e.type||(e.data?"category":"value")}var o=i(13),a=i(59),r=i(1),s=o.extend({type:"singleAxis",layoutMode:"box",axis:null,coordinateSystem:null,getCoordSysModel:function(){return this}}),l={left:"5%",top:"5%",right:"5%",bottom:"5%",type:"value",position:"bottom",orient:"horizontal",axisLine:{show:!0,lineStyle:{width:2,type:"solid"}},tooltip:{show:!0},axisTick:{show:!0,length:6,lineStyle:{width:2}},axisLabel:{show:!0,interval:"auto"},splitLine:{show:!0,lineStyle:{type:"dashed",opacity:.2}}};r.merge(s.prototype,i(42)),a("single",s,n,l),t.exports=s},function(t,e,i){function n(t,e,i){this.dimension="single",this.dimensions=["single"],this._axis=null,this._rect,this._init(t,e,i),this.model=t}var o=i(421),a=i(18),r=i(12);n.prototype={type:"singleAxis",axisPointerEnabled:!0,constructor:n,_init:function(t,e,i){var n=this.dimension,r=new o(n,a.createScaleByModel(t),[0,0],t.get("type"),t.get("position")),s="category"===r.type;r.onBand=s&&t.get("boundaryGap"),r.inverse=t.get("inverse"),r.orient=t.get("orient"),t.axis=r,r.model=t,r.coordinateSystem=this,this._axis=r},update:function(t,e){t.eachSeries(function(t){if(t.coordinateSystem===this){var e=t.getData(),i=this.dimension;this._axis.scale.unionExtentFromData(e,t.coordDimToDataDim(i)),a.niceScaleExtent(this._axis.scale,this._axis.model)}},this)},resize:function(t,e){this._rect=r.getLayoutRect({left:t.get("left"),top:t.get("top"),right:t.get("right"),bottom:t.get("bottom"),width:t.get("width"),height:t.get("height")},{width:e.getWidth(),height:e.getHeight()}),this._adjustAxis()},getRect:function(){return this._rect},_adjustAxis:function(){var t=this._rect,e=this._axis,i=e.isHorizontal(),n=i?[0,t.width]:[0,t.height],o=e.reverse?1:0;e.setExtent(n[o],n[1-o]),this._updateAxisTransform(e,i?t.x:t.y)},_updateAxisTransform:function(t,e){var i=t.getExtent(),n=i[0]+i[1],o=t.isHorizontal();t.toGlobalCoord=o?function(t){return t+e}:function(t){return n-t+e},t.toLocalCoord=o?function(t){return t-e}:function(t){return n-t+e}},getAxis:function(){return this._axis},getBaseAxis:function(){return this._axis},getAxes:function(){return[this._axis]},getTooltipAxes:function(){return{baseAxes:[this.getAxis()]}},containPoint:function(t){var e=this.getRect(),i=this.getAxis(),n=i.orient;return"horizontal"===n?i.contain(i.toLocalCoord(t[0]))&&t[1]>=e.y&&t[1]<=e.y+e.height:i.contain(i.toLocalCoord(t[1]))&&t[0]>=e.y&&t[0]<=e.y+e.height},pointToData:function(t){var e=this.getAxis();return[e.coordToData(e.toLocalCoord(t["horizontal"===e.orient?0:1]))]},dataToPoint:function(t){var e=this.getAxis(),i=this.getRect(),n=[],o="horizontal"===e.orient?0:1;return t instanceof Array&&(t=t[0]),n[o]=e.toGlobalCoord(e.dataToCoord(+t)),n[1-o]=0===o?i.y+i.height/2:i.x+i.width/2,n}},t.exports=n},function(t,e,i){var n=i(1),o=i(33),a=function(t,e,i,n,a){o.call(this,t,e,i),this.type=n||"value",this.position=a||"bottom",this.orient=null,this._labelInterval=null};a.prototype={constructor:a,model:null,isHorizontal:function(){var t=this.position;return"top"===t||"bottom"===t},pointToData:function(t,e){return this.coordinateSystem.pointToData(t,e)[0]},toGlobalCoord:null,toLocalCoord:null},n.inherits(a,o),t.exports=a},function(t,e,i){function n(t,e){var i=this.getAxis(),n=e instanceof Array?e[0]:e,o=(t instanceof Array?t[0]:t)/2;return"category"===i.type?i.getBandWidth():Math.abs(i.dataToCoord(n-o)-i.dataToCoord(n+o))}function o(t){var e=t.getRect();return{coordSys:{type:"singleAxis",x:e.x,y:e.y,width:e.width,height:e.height},api:{coord:a.bind(t.dataToPoint,t),size:a.bind(n,t)}}}var a=i(1);t.exports=o},function(t,e,i){function n(t,e){var i=[];return t.eachComponent("singleAxis",function(n,a){var r=new o(n,t,e);r.name="single_"+a,r.resize(n,e),n.coordinateSystem=r,i.push(r)}),t.eachSeries(function(e){if("singleAxis"===e.get("coordinateSystem")){var i=t.queryComponents({mainType:"singleAxis",index:e.get("singleAxisIndex"),id:e.get("singleAxisId")})[0];e.coordinateSystem=i&&i.coordinateSystem}}),i}var o=i(420);i(26).register("single",{create:n,dimensions:o.prototype.dimensions})},function(t,e,i){"use strict";function n(t){return"_EC_"+t}function o(t,e){this.id=null==t?"":t,this.inEdges=[],this.outEdges=[],this.edges=[],this.hostGraph,this.dataIndex=null==e?-1:e}function a(t,e,i){this.node1=t,this.node2=e,this.dataIndex=null==i?-1:i}var r=i(1),s=function(t){this._directed=t||!1,this.nodes=[],this.edges=[],this._nodesMap={},this._edgesMap={},this.data,this.edgeData},l=s.prototype;l.type="graph",l.isDirected=function(){return this._directed},l.addNode=function(t,e){t=t||""+e;var i=this._nodesMap;if(!i[n(t)]){var a=new o(t,e);return a.hostGraph=this,this.nodes.push(a),i[n(t)]=a,a}},l.getNodeByIndex=function(t){var e=this.data.getRawIndex(t);return this.nodes[e]},l.getNodeById=function(t){return this._nodesMap[n(t)]},l.addEdge=function(t,e,i){var r=this._nodesMap,s=this._edgesMap;if("number"==typeof t&&(t=this.nodes[t]),"number"==typeof e&&(e=this.nodes[e]),t instanceof o||(t=r[n(t)]),e instanceof o||(e=r[n(e)]),t&&e){var l=t.id+"-"+e.id;if(!s[l]){var u=new a(t,e,i);return u.hostGraph=this,this._directed&&(t.outEdges.push(u),e.inEdges.push(u)),t.edges.push(u),t!==e&&e.edges.push(u),this.edges.push(u),s[l]=u,u}}},l.getEdgeByIndex=function(t){var e=this.edgeData.getRawIndex(t);return this.edges[e]},l.getEdge=function(t,e){t instanceof o&&(t=t.id),e instanceof o&&(e=e.id);var i=this._edgesMap;return this._directed?i[t+"-"+e]:i[t+"-"+e]||i[e+"-"+t]},l.eachNode=function(t,e){for(var i=this.nodes,n=i.length,o=0;o=0&&t.call(e,i[o],o)},l.eachEdge=function(t,e){for(var i=this.edges,n=i.length,o=0;o=0&&i[o].node1.dataIndex>=0&&i[o].node2.dataIndex>=0&&t.call(e,i[o],o)},l.breadthFirstTraverse=function(t,e,i,a){if(e instanceof o||(e=this._nodesMap[n(e)]),e){for(var r="out"===i?"outEdges":"in"===i?"inEdges":"edges",s=0;s=0&&i.node2.dataIndex>=0});for(var o=0,a=n.length;o=0&&this[t][e].setItemVisual(this.dataIndex,i,n)},getVisual:function(i,n){return this[t][e].getItemVisual(this.dataIndex,i,n)},setLayout:function(i,n){this.dataIndex>=0&&this[t][e].setItemLayout(this.dataIndex,i,n)},getLayout:function(){return this[t][e].getItemLayout(this.dataIndex)},getGraphicEl:function(){return this[t][e].getItemGraphicEl(this.dataIndex)},getRawIndex:function(){return this[t][e].getRawIndex(this.dataIndex)}}};r.mixin(o,u("hostGraph","data")),r.mixin(a,u("hostGraph","edgeData")),s.Node=o,s.Edge=a,t.exports=s},function(t,e,i){function n(t,e){this.root,this.data,this._nodes=[],this.hostModel=t,this.levelModels=a.map(e||[],function(e){return new r(e,t,t.ecModel)})}function o(t,e){var i=e.children;t.parentNode!==e&&(i.push(t),t.parentNode=e)}var a=i(1),r=i(10),s=i(14),l=i(264),u=i(25),c=function(t,e){this.name=t||"",this.depth=0,this.height=0,this.parentNode=null,this.dataIndex=-1,this.children=[],this.viewChildren=[],this.hostTree=e};c.prototype={constructor:c,isRemoved:function(){return this.dataIndex<0},eachNode:function(t,e,i){"function"==typeof t&&(i=e,e=t,t=null),t=t||{},a.isString(t)&&(t={order:t});var n,o=t.order||"preorder",r=this[t.attr||"children"];"preorder"===o&&(n=e.call(i,this));for(var s=0;!n&&se&&(e=n.height)}this.height=e+1},getNodeById:function(t){if(this.getId()===t)return this;for(var e=0,i=this.children,n=i.length;e=0&&this.hostTree.data.setItemLayout(this.dataIndex,t,e)},getLayout:function(){return this.hostTree.data.getItemLayout(this.dataIndex)},getModel:function(t){if(!(this.dataIndex<0)){var e=this.hostTree,i=e.data.getItemModel(this.dataIndex),n=this.getLevelModel();return i.getModel(t,(n||e.hostModel).getModel(t))}},getLevelModel:function(){return(this.hostTree.levelModels||[])[this.depth]},setVisual:function(t,e){this.dataIndex>=0&&this.hostTree.data.setItemVisual(this.dataIndex,t,e)},getVisual:function(t,e){return this.hostTree.data.getItemVisual(this.dataIndex,t,e)},getRawIndex:function(){return this.hostTree.data.getRawIndex(this.dataIndex)},getId:function(){return this.hostTree.data.getId(this.dataIndex)}},n.prototype={constructor:n,type:"tree",eachNode:function(t,e,i){this.root.eachNode(t,e,i)},getNodeByDataIndex:function(t){var e=this.data.getRawIndex(t);return this._nodes[e]},getNodeByName:function(t){return this.root.getNodeByName(t)},update:function(){for(var t=this.data,e=this._nodes,i=0,n=e.length;i=0?"p":"n",d=i.pointToCoord(T[n]),p=h[f][n][u];if("radius"===v.dim)o=p,a=d[0],s=(-d[1]+g)*Math.PI/180,l=s+m*Math.PI/180,Math.abs(a)0?C=A[1]:C===A[1]&&t<0&&(C=A[0]),h[f][n][u]=C}e.setItemLayout(n,{cx:x,cy:_,r0:o,r:a,startAngle:s,endAngle:l})}},!0)}},this)}function r(t,e){var i={};s.each(t,function(t,e){var a=t.getData(),r=t.coordinateSystem,s=r.getBaseAxis(),u=s.getExtent(),c="category"===s.type?s.getBandWidth():Math.abs(u[1]-u[0])/a.count(),h=i[o(s)]||{bandWidth:c,remainedWidth:c,autoWidthCount:0,categoryGap:"20%",gap:"30%",stacks:{}},d=h.stacks;i[o(s)]=h;var f=n(t);d[f]||h.autoWidthCount++,d[f]=d[f]||{width:0,maxWidth:0};var p=l(t.get("barWidth"),c),g=l(t.get("barMaxWidth"),c),m=t.get("barGap"),v=t.get("barCategoryGap");p&&!d[f].width&&(p=Math.min(h.remainedWidth,p),d[f].width=p,h.remainedWidth-=p),g&&(d[f].maxWidth=g),null!=m&&(h.gap=m),null!=v&&(h.categoryGap=v)});var a={};return s.each(i,function(t,e){a[e]={};var i=t.stacks,n=t.bandWidth,o=l(t.categoryGap,n),r=l(t.gap,1),u=t.remainedWidth,c=t.autoWidthCount,h=(u-o)/(c+(c-1)*r);h=Math.max(h,0),s.each(i,function(t,e){var i=t.maxWidth;i&&iparseInt(A.split("Firefox/")[1],10);return a.Highcharts?a.Highcharts.error(16,!0):{product:"Highcharts", +version:"5.0.12",deg2rad:2*Math.PI/360,doc:C,hasBidiBug:k,hasTouch:C&&void 0!==C.documentElement.ontouchstart,isMS:F,isWebKit:/AppleWebKit/.test(A),isFirefox:g,isTouchDevice:/(Mobile|Android|Windows Phone)/.test(A),SVG_NS:"http://www.w3.org/2000/svg",chartCount:0,seriesTypes:{},symbolSizes:{},svg:G,vml:m,win:a,marginNames:["plotTop","marginRight","marginBottom","plotLeft"],noop:function(){},charts:[]}}();(function(a){var C=[],A=a.charts,G=a.doc,F=a.win;a.error=function(m,g){m=a.isNumber(m)?"Highcharts error #"+ +m+": www.highcharts.com/errors/"+m:m;if(g)throw Error(m);F.console&&console.log(m)};a.Fx=function(a,g,k){this.options=g;this.elem=a;this.prop=k};a.Fx.prototype={dSetter:function(){var a=this.paths[0],g=this.paths[1],k=[],q=this.now,v=a.length,u;if(1===q)k=this.toD;else if(v===g.length&&1>q)for(;v--;)u=parseFloat(a[v]),k[v]=isNaN(u)?a[v]:q*parseFloat(g[v]-u)+u;else k=g;this.elem.attr("d",k,null,!0)},update:function(){var a=this.elem,g=this.prop,k=this.now,q=this.options.step;if(this[g+"Setter"])this[g+ +"Setter"]();else a.attr?a.element&&a.attr(g,k,null,!0):a.style[g]=k+this.unit;q&&q.call(a,k,this)},run:function(a,g,k){var m=this,v=function(a){return v.stopped?!1:m.step(a)},u;this.startTime=+new Date;this.start=a;this.end=g;this.unit=k;this.now=this.start;this.pos=0;v.elem=this.elem;v.prop=this.prop;v()&&1===C.push(v)&&(v.timerId=setInterval(function(){for(u=0;u=h+this.startTime?(this.now=this.end,this.pos=1,this.update(),k=e[this.prop]=!0,a.objectEach(e,function(a){!0!==a&&(k=!1)}),k&&u&&u.call(v),m=!1):(this.pos=q.easing((g-this.startTime)/h),this.now=this.start+(this.end-this.start)*this.pos,this.update(),m=!0);return m},initPath:function(m,g,k){function q(a){var b,l;for(y=a.length;y--;)b="M"===a[y]||"L"===a[y],l=/[a-zA-Z]/.test(a[y+3]),b&&l&&a.splice(y+1,0,a[y+1],a[y+2],a[y+1],a[y+2])} +function v(a,b){for(;a.lengthu?"AM":"PM",P:12>u?"am":"pm",S:y(v.getSeconds()),L:y(Math.round(g%1E3),3)},a.dateFormats);a.objectEach(q,function(a,b){for(;-1!==m.indexOf("%"+b);)m=m.replace("%"+b,"function"===typeof a?a(g):a)});return k?m.substr(0, +1).toUpperCase()+m.substr(1):m};a.formatSingle=function(m,g){var k=/\.([0-9])/,q=a.defaultOptions.lang;/f$/.test(m)?(k=(k=m.match(k))?k[1]:-1,null!==g&&(g=a.numberFormat(g,k,q.decimalPoint,-1=k&&(g=[1/k])));for(q=0;q=m||!v&&u<=(g[q]+(g[q+1]||g[q]))/2);q++);return h=a.correctFloat(h*k,-Math.round(Math.log(.001)/Math.LN10))};a.stableSort= +function(a,g){var k=a.length,q,m;for(m=0;mk&&(k=a[g]);return k};a.destroyObjectProperties=function(m,g){a.objectEach(m,function(a,q){a&&a!==g&&a.destroy&&a.destroy();delete m[q]})};a.discardElement=function(m){var g=a.garbageBin;g||(g=a.createElement("div")); +m&&g.appendChild(m);g.innerHTML=""};a.correctFloat=function(a,g){return parseFloat(a.toPrecision(g||14))};a.setAnimation=function(m,g){g.renderer.globalAnimation=a.pick(m,g.options.chart.animation,!0)};a.animObject=function(m){return a.isObject(m)?a.merge(m):{duration:m?500:0}};a.timeUnits={millisecond:1,second:1E3,minute:6E4,hour:36E5,day:864E5,week:6048E5,month:24192E5,year:314496E5};a.numberFormat=function(m,g,k,q){m=+m||0;g=+g;var v=a.defaultOptions.lang,u=(m.toString().split(".")[1]||"").length, +h,e;-1===g?g=Math.min(u,20):a.isNumber(g)||(g=2);e=(Math.abs(m)+Math.pow(10,-Math.max(g,u)-1)).toFixed(g);u=String(a.pInt(e));h=3m?"-":"")+(h?u.substr(0,h)+q:"");m+=u.substr(h).replace(/(\d{3})(?=\d)/g,"$1"+q);g&&(m+=k+e.slice(-g));return m};Math.easeInOutSine=function(a){return-.5*(Math.cos(Math.PI*a)-1)};a.getStyle=function(m,g,k){if("width"===g)return Math.min(m.offsetWidth,m.scrollWidth)-a.getStyle(m,"padding-left")- +a.getStyle(m,"padding-right");if("height"===g)return Math.min(m.offsetHeight,m.scrollHeight)-a.getStyle(m,"padding-top")-a.getStyle(m,"padding-bottom");if(m=F.getComputedStyle(m,void 0))m=m.getPropertyValue(g),a.pick(k,!0)&&(m=a.pInt(m));return m};a.inArray=function(a,g){return g.indexOf?g.indexOf(a):[].indexOf.call(g,a)};a.grep=function(a,g){return[].filter.call(a,g)};a.find=function(a,g){return[].find.call(a,g)};a.map=function(a,g){for(var k=[],q=0,m=a.length;q>16,(g&65280)>>8,g&255,1]:4===k&&(q=[(g&3840)>>4|(g&3840)>>8,(g&240)>>4|g&240,(g&15)<<4|g&15,1])),!q)for(m=this.parsers.length;m--&& +!q;)u=this.parsers[m],(k=u.regex.exec(g))&&(q=u.parse(k));this.rgba=q||[]},get:function(a){var g=this.input,q=this.rgba,m;this.stops?(m=F(g),m.stops=[].concat(m.stops),C(this.stops,function(g,h){m.stops[h]=[m.stops[h][0],g.get(a)]})):m=q&&A(q[0])?"rgb"===a||!a&&1===q[3]?"rgb("+q[0]+","+q[1]+","+q[2]+")":"a"===a?q[3]:"rgba("+q.join(",")+")":g;return m},brighten:function(a){var g,q=this.rgba;if(this.stops)C(this.stops,function(g){g.brighten(a)});else if(A(a)&&0!==a)for(g=0;3>g;g++)q[g]+=m(255*a),0> +q[g]&&(q[g]=0),255x.width)x={width:0,height:0}}else x=this.htmlGetBBox();t.isSVG&&(a=x.width,t=x.height,r&&"11px"===r.fontSize&&17===Math.round(t)&&(x.height=t=14),f&&(x.width=Math.abs(t*Math.sin(b))+Math.abs(a*Math.cos(b)),x.height=Math.abs(t*Math.cos(b))+Math.abs(a*Math.sin(b)))); +if(E&&0]*>/g,"")))},textSetter:function(a){a!==this.textStr&&(delete this.bBox,this.textStr=a,this.added&&this.renderer.buildText(this))},fillSetter:function(a,f,t){"string"===typeof a?t.setAttribute(f,a):a&&this.colorGradient(a,f,t)}, +visibilitySetter:function(a,f,t){"inherit"===a?t.removeAttribute(f):t.setAttribute(f,a)},zIndexSetter:function(a,t){var x=this.renderer,b=this.parentGroup,l=(b||x).element||x.box,c,r=this.element,d;c=this.added;var p;u(a)&&(r.zIndex=a,a=+a,this[t]===a&&(c=!1),this[t]=a);if(c){(a=this.zIndex)&&b&&(b.handleZ=!0);t=l.childNodes;for(p=0;pa||!u(a)&&u(c)||0>a&&!u(c)&&l!==x.box)&&(l.insertBefore(r,b),d=!0);d||l.appendChild(r)}return d},_defaultSetter:function(a, +f,t){t.setAttribute(f,a)}});C.prototype.yGetter=C.prototype.xGetter;C.prototype.translateXSetter=C.prototype.translateYSetter=C.prototype.rotationSetter=C.prototype.verticalAlignSetter=C.prototype.scaleXSetter=C.prototype.scaleYSetter=function(a,f){this[f]=a;this.doTransform=!0};C.prototype["stroke-widthSetter"]=C.prototype.strokeSetter=function(a,f,t){this[f]=a;this.stroke&&this["stroke-width"]?(C.prototype.fillSetter.call(this,this.stroke,"stroke",t),t.setAttribute("stroke-width",this["stroke-width"]), +this.hasStroke=!0):"stroke-width"===f&&0===a&&this.hasStroke&&(t.removeAttribute("stroke"),this.hasStroke=!1)};A=a.SVGRenderer=function(){this.init.apply(this,arguments)};c(A.prototype,{Element:C,SVG_NS:N,init:function(a,f,t,b,c,r){var x;b=this.createElement("svg").attr({version:"1.1","class":"highcharts-root"}).css(this.getStyle(b));x=b.element;a.appendChild(x);-1===a.innerHTML.indexOf("xmlns")&&m(x,"xmlns",this.SVG_NS);this.isSVG=!0;this.box=x;this.boxWrapper=b;this.alignedObjects=[];this.url=(l|| +M)&&n.getElementsByTagName("base").length?P.location.href.replace(/#.*?$/,"").replace(/<[^>]*>/g,"").replace(/([\('\)])/g,"\\$1").replace(/ /g,"%20"):"";this.createElement("desc").add().element.appendChild(n.createTextNode("Created with Highcharts 5.0.12"));this.defs=this.createElement("defs").add();this.allowHTML=r;this.forExport=c;this.gradients={};this.cache={};this.cacheKeys=[];this.imgCount=0;this.setSize(f,t,!1);var d;l&&a.getBoundingClientRect&&(f=function(){q(a,{left:0,top:0});d=a.getBoundingClientRect(); +q(a,{left:Math.ceil(d.left)-d.left+"px",top:Math.ceil(d.top)-d.top+"px"})},f(),this.unSubPixelFix=G(P,"resize",f))},getStyle:function(a){return this.style=c({fontFamily:'"Lucida Grande", "Lucida Sans Unicode", Arial, Helvetica, sans-serif',fontSize:"12px"},a)},setStyle:function(a){this.boxWrapper.css(this.getStyle(a))},isHidden:function(){return!this.boxWrapper.getBBox().width},destroy:function(){var a=this.defs;this.box=null;this.boxWrapper=this.boxWrapper.destroy();e(this.gradients||{});this.gradients= +null;a&&(this.defs=a.destroy());this.unSubPixelFix&&this.unSubPixelFix();return this.alignedObjects=null},createElement:function(a){var f=new this.Element;f.init(this,a);return f},draw:E,getRadialAttr:function(a,f){return{cx:a[0]-a[2]/2+f.cx*a[2],cy:a[1]-a[2]/2+f.cy*a[2],r:f.r*a[2]}},getSpanWidth:function(a,f){var t=a.getBBox(!0).width;!J&&this.forExport&&(t=this.measureSpanWidth(f.firstChild.data,a.styles));return t},applyEllipsis:function(a,f,t,b){var x=this.getSpanWidth(a,f),l=x>b,x=t,c,r=0,d= +t.length,p=function(a){f.removeChild(f.firstChild);a&&f.appendChild(n.createTextNode(a))};if(l){for(;r<=d;)c=Math.ceil((r+d)/2),x=t.substring(0,c)+"\u2026",p(x),x=this.getSpanWidth(a,f),r===d?r=d+1:x>b?d=c-1:r=c;0===d&&p("")}return l},buildText:function(a){var t=a.element,x=this,l=x.forExport,c=L(a.textStr,"").toString(),r=-1!==c.indexOf("\x3c"),p=t.childNodes,e,h,E,y,w=m(t,"x"),B=a.styles,g=a.textWidth,I=B&&B.lineHeight,z=B&&B.textOutline,D=B&&"ellipsis"===B.textOverflow,k=B&&"nowrap"===B.whiteSpace, +u=B&&B.fontSize,R,H,v=p.length,B=g&&!a.added&&this.box,M=function(a){var b;b=/(px|em)$/.test(a&&a.style.fontSize)?a.style.fontSize:u||x.style.fontSize||12;return I?f(I):x.fontMetrics(b,a.getAttribute("style")?a:t).h};R=[c,D,k,I,z,u,g].join();if(R!==a.textCache){for(a.textCache=R;v--;)t.removeChild(p[v]);r||z||D||g||-1!==c.indexOf(" ")?(e=/<.*class="([^"]+)".*>/,h=/<.*style="([^"]+)".*>/,E=/<.*href="([^"]+)".*>/,B&&B.appendChild(t),c=r?c.replace(/<(b|strong)>/g,'\x3cspan style\x3d"font-weight:bold"\x3e').replace(/<(i|em)>/g, +'\x3cspan style\x3d"font-style:italic"\x3e').replace(//g,"\x3c/span\x3e").split(//g):[c],c=b(c,function(a){return""!==a}),d(c,function(f,b){var c,r=0;f=f.replace(/^\s+|\s+$/g,"").replace(//g,"\x3c/span\x3e|||");c=f.split("|||");d(c,function(f){if(""!==f||1===c.length){var d={},p=n.createElementNS(x.SVG_NS,"tspan"),B,I;e.test(f)&&(B=f.match(e)[1],m(p,"class",B));h.test(f)&&(I=f.match(h)[1].replace(/(;| |^)color([ :])/, +"$1fill$2"),m(p,"style",I));E.test(f)&&!l&&(m(p,"onclick",'location.href\x3d"'+f.match(E)[1]+'"'),q(p,{cursor:"pointer"}));f=(f.replace(/<(.|\n)*?>/g,"")||" ").replace(/</g,"\x3c").replace(/>/g,"\x3e");if(" "!==f){p.appendChild(n.createTextNode(f));r?d.dx=0:b&&null!==w&&(d.x=w);m(p,d);t.appendChild(p);!r&&H&&(!J&&l&&q(p,{display:"block"}),m(p,"dy",M(p)));if(g){d=f.replace(/([^\^])-/g,"$1- ").split(" ");B=1g,void 0===y&&(y=f),f&&1!==d.length?(p.removeChild(p.firstChild),z.unshift(d.pop())):(d=z,z=[],d.length&&!k&&(p=n.createElementNS(N,"tspan"),m(p,{dy:u,x:w}),I&&m(p,"style",I),t.appendChild(p)),Q>g&&(g=Q)),d.length&&p.appendChild(n.createTextNode(d.join(" ").replace(/- /g,"-")));a.rotation=R}r++}}});H=H||t.childNodes.length}),y&&a.attr("title",a.textStr),B&&B.removeChild(t),z&&a.applyTextOutline&&a.applyTextOutline(z)):t.appendChild(n.createTextNode(c.replace(/</g, +"\x3c").replace(/>/g,"\x3e")))}},getContrast:function(a){a=k(a).rgba;return 510t?l>f+r&&lp?l>f+r&&lb&&p>a+r&&pl&&p>a+r&&pa?a+3:Math.round(1.2*a);return{h:t,b:Math.round(.8*t),f:a}},rotCorr:function(a,f,t){var b=a;f&&t&&(b=Math.max(b*Math.cos(f*h),4));return{x:-a/3*Math.sin(f*h),y:b}},label:function(f,b, +l,r,e,h,n,E,y){var x=this,B=x.g("button"!==y&&"label"),w=B.text=x.text("",0,0,n).attr({zIndex:1}),J,g,I=0,z=3,D=0,q,k,m,R,H,v={},N,M,L=/^url\((.*?)\)$/.test(r),Q=L,V,U,O,P;y&&B.addClass("highcharts-"+y);Q=L;V=function(){return(N||0)%2/2};U=function(){var a=w.element.style,f={};g=(void 0===q||void 0===k||H)&&u(w.textStr)&&w.getBBox();B.width=(q||g.width||0)+2*z+D;B.height=(k||g.height||0)+2*z;M=z+x.fontMetrics(a&&a.fontSize,w).b;Q&&(J||(B.box=J=x.symbols[r]||L?x.symbol(r):x.rect(),J.addClass(("button"=== +y?"":"highcharts-label-box")+(y?" highcharts-"+y+"-box":"")),J.add(B),a=V(),f.x=a,f.y=(E?-M:0)+a),f.width=Math.round(B.width),f.height=Math.round(B.height),J.attr(c(f,v)),v={})};O=function(){var a=D+z,f;f=E?0:M;u(q)&&g&&("center"===H||"right"===H)&&(a+={center:.5,right:1}[H]*(q-g.width));if(a!==w.x||f!==w.y)w.attr("x",a),void 0!==f&&w.attr("y",f);w.x=a;w.y=f};P=function(a,f){J?J.attr(a,f):v[a]=f};B.onAdd=function(){w.add(B);B.attr({text:f||0===f?f:"",x:b,y:l});J&&u(e)&&B.attr({anchorX:e,anchorY:h})}; +B.widthSetter=function(f){q=a.isNumber(f)?f:null};B.heightSetter=function(a){k=a};B["text-alignSetter"]=function(a){H=a};B.paddingSetter=function(a){u(a)&&a!==z&&(z=B.padding=a,O())};B.paddingLeftSetter=function(a){u(a)&&a!==D&&(D=a,O())};B.alignSetter=function(a){a={left:0,center:.5,right:1}[a];a!==I&&(I=a,g&&B.attr({x:m}))};B.textSetter=function(a){void 0!==a&&w.textSetter(a);U();O()};B["stroke-widthSetter"]=function(a,f){a&&(Q=!0);N=this["stroke-width"]=a;P(f,a)};B.strokeSetter=B.fillSetter=B.rSetter= +function(a,f){"fill"===f&&a&&(Q=!0);P(f,a)};B.anchorXSetter=function(a,f){e=B.anchorX=a;P(f,Math.round(a)-V()-m)};B.anchorYSetter=function(a,f){h=B.anchorY=a;P(f,a-R)};B.xSetter=function(a){B.x=a;I&&(a-=I*((q||g.width)+2*z));m=Math.round(a);B.attr("translateX",m)};B.ySetter=function(a){R=B.y=Math.round(a);B.attr("translateY",R)};var W=B.css;return c(B,{css:function(a){if(a){var f={};a=p(a);d(B.textProps,function(t){void 0!==a[t]&&(f[t]=a[t],delete a[t])});w.css(f)}return W.call(B,a)},getBBox:function(){return{width:g.width+ +2*z,height:g.height+2*z,x:g.x-z,y:g.y-z}},shadow:function(a){a&&(U(),J&&J.shadow(a));return B},destroy:function(){t(B.element,"mouseenter");t(B.element,"mouseleave");w&&(w=w.destroy());J&&(J=J.destroy());C.prototype.destroy.call(B);B=x=U=O=P=null}})}});a.Renderer=A})(K);(function(a){var C=a.attr,A=a.createElement,G=a.css,F=a.defined,m=a.each,g=a.extend,k=a.isFirefox,q=a.isMS,v=a.isWebKit,u=a.pInt,h=a.SVGRenderer,e=a.win,n=a.wrap;g(a.SVGElement.prototype,{htmlCss:function(a){var c=this.element;if(c= +a&&"SPAN"===c.tagName&&a.width)delete a.width,this.textWidth=c,this.updateTransform();a&&"ellipsis"===a.textOverflow&&(a.whiteSpace="nowrap",a.overflow="hidden");this.styles=g(this.styles,a);G(this.element,a);return this},htmlGetBBox:function(){var a=this.element;"text"===a.nodeName&&(a.style.position="absolute");return{x:a.offsetLeft,y:a.offsetTop,width:a.offsetWidth,height:a.offsetHeight}},htmlUpdateTransform:function(){if(this.added){var a=this.renderer,c=this.element,e=this.translateX||0,b=this.translateY|| +0,h=this.x||0,n=this.y||0,g=this.textAlign||"left",l={left:0,center:.5,right:1}[g],B=this.styles;G(c,{marginLeft:e,marginTop:b});this.shadows&&m(this.shadows,function(a){G(a,{marginLeft:e+1,marginTop:b+1})});this.inverted&&m(c.childNodes,function(b){a.invertChild(b,c)});if("SPAN"===c.tagName){var r=this.rotation,z=u(this.textWidth),q=B&&B.whiteSpace,p=[r,g,c.innerHTML,this.textWidth,this.textAlign].join();p!==this.cTT&&(B=a.fontMetrics(c.style.fontSize).b,F(r)&&this.setSpanRotation(r,l,B),G(c,{width:"", +whiteSpace:q||"nowrap"}),c.offsetWidth>z&&/[ \-]/.test(c.textContent||c.innerText)&&G(c,{width:z+"px",display:"block",whiteSpace:q||"normal"}),this.getSpanCorrection(c.offsetWidth,B,l,r,g));G(c,{left:h+(this.xCorr||0)+"px",top:n+(this.yCorr||0)+"px"});v&&(B=c.offsetHeight);this.cTT=p}}else this.alignOnAdd=!0},setSpanRotation:function(a,c,h){var b={},d=q?"-ms-transform":v?"-webkit-transform":k?"MozTransform":e.opera?"-o-transform":"";b[d]=b.transform="rotate("+a+"deg)";b[d+(k?"Origin":"-origin")]= +b.transformOrigin=100*c+"% "+h+"px";G(this.element,b)},getSpanCorrection:function(a,c,e){this.xCorr=-a*e;this.yCorr=-c}});g(h.prototype,{html:function(a,c,e){var b=this.createElement("span"),d=b.element,h=b.renderer,w=h.isSVG,l=function(a,b){m(["opacity","visibility"],function(l){n(a,l+"Setter",function(a,l,c,r){a.call(this,l,c,r);b[c]=l})})};b.textSetter=function(a){a!==d.innerHTML&&delete this.bBox;d.innerHTML=this.textStr=a;b.htmlUpdateTransform()};w&&l(b,b.element.style);b.xSetter=b.ySetter=b.alignSetter= +b.rotationSetter=function(a,l){"align"===l&&(l="textAlign");b[l]=a;b.htmlUpdateTransform()};b.attr({text:a,x:Math.round(c),y:Math.round(e)}).css({fontFamily:this.style.fontFamily,fontSize:this.style.fontSize,position:"absolute"});d.style.whiteSpace="nowrap";b.css=b.htmlCss;w&&(b.add=function(a){var c,e=h.box.parentNode,B=[];if(this.parentGroup=a){if(c=a.div,!c){for(;a;)B.push(a),a=a.parentGroup;m(B.reverse(),function(a){var r,p=C(a.element,"class");p&&(p={className:p});c=a.div=a.div||A("div",p,{position:"absolute", +left:(a.translateX||0)+"px",top:(a.translateY||0)+"px",display:a.display,opacity:a.opacity,pointerEvents:a.styles&&a.styles.pointerEvents},c||e);r=c.style;g(a,{on:function(){b.on.apply({element:B[0].div},arguments);return a},translateXSetter:function(b,f){r.left=b+"px";a[f]=b;a.doTransform=!0},translateYSetter:function(b,f){r.top=b+"px";a[f]=b;a.doTransform=!0}});l(a,r)})}}else c=e;c.appendChild(d);b.added=!0;b.alignOnAdd&&b.htmlUpdateTransform();return b});return b}})})(K);(function(a){var C,A,G= +a.createElement,F=a.css,m=a.defined,g=a.deg2rad,k=a.discardElement,q=a.doc,v=a.each,u=a.erase,h=a.extend;C=a.extendClass;var e=a.isArray,n=a.isNumber,d=a.isObject,c=a.merge;A=a.noop;var w=a.pick,b=a.pInt,y=a.SVGElement,D=a.SVGRenderer,H=a.win;a.svg||(A={docMode8:q&&8===q.documentMode,init:function(a,b){var l=["\x3c",b,' filled\x3d"f" stroked\x3d"f"'],c=["position: ","absolute",";"],d="div"===b;("shape"===b||d)&&c.push("left:0;top:0;width:1px;height:1px;");c.push("visibility: ",d?"hidden":"visible"); +l.push(' style\x3d"',c.join(""),'"/\x3e');b&&(l=d||"span"===b||"img"===b?l.join(""):a.prepVML(l),this.element=G(l));this.renderer=a},add:function(a){var b=this.renderer,l=this.element,c=b.box,d=a&&a.inverted,c=a?a.element||a:c;a&&(this.parentGroup=a);d&&b.invertChild(l,c);c.appendChild(l);this.added=!0;this.alignOnAdd&&!this.deferUpdateTransform&&this.updateTransform();if(this.onAdd)this.onAdd();this.className&&this.attr("class",this.className);return this},updateTransform:y.prototype.htmlUpdateTransform, +setSpanRotation:function(){var a=this.rotation,b=Math.cos(a*g),c=Math.sin(a*g);F(this.element,{filter:a?["progid:DXImageTransform.Microsoft.Matrix(M11\x3d",b,", M12\x3d",-c,", M21\x3d",c,", M22\x3d",b,", sizingMethod\x3d'auto expand')"].join(""):"none"})},getSpanCorrection:function(a,b,c,d,e){var l=d?Math.cos(d*g):1,r=d?Math.sin(d*g):0,h=w(this.elemHeight,this.element.offsetHeight),n;this.xCorr=0>l&&-a;this.yCorr=0>r&&-h;n=0>l*r;this.xCorr+=r*b*(n?1-c:c);this.yCorr-=l*b*(d?n?c:1-c:1);e&&"left"!== +e&&(this.xCorr-=a*c*(0>l?-1:1),d&&(this.yCorr-=h*c*(0>r?-1:1)),F(this.element,{textAlign:e}))},pathToVML:function(a){for(var b=a.length,l=[];b--;)n(a[b])?l[b]=Math.round(10*a[b])-5:"Z"===a[b]?l[b]="x":(l[b]=a[b],!a.isArc||"wa"!==a[b]&&"at"!==a[b]||(l[b+5]===l[b+7]&&(l[b+7]+=a[b+7]>a[b+5]?1:-1),l[b+6]===l[b+8]&&(l[b+8]+=a[b+8]>a[b+6]?1:-1)));return l.join(" ")||"x"},clip:function(a){var b=this,l;a?(l=a.members,u(l,b),l.push(b),b.destroyClip=function(){u(l,b)},a=a.getCSS(b)):(b.destroyClip&&b.destroyClip(), +a={clip:b.docMode8?"inherit":"rect(auto)"});return b.css(a)},css:y.prototype.htmlCss,safeRemoveChild:function(a){a.parentNode&&k(a)},destroy:function(){this.destroyClip&&this.destroyClip();return y.prototype.destroy.apply(this)},on:function(a,b){this.element["on"+a]=function(){var a=H.event;a.target=a.srcElement;b(a)};return this},cutOffPath:function(a,c){var l;a=a.split(/[ ,]/);l=a.length;if(9===l||11===l)a[l-4]=a[l-2]=b(a[l-2])-10*c;return a.join(" ")},shadow:function(a,c,d){var l=[],r,p=this.element, +e=this.renderer,h,n=p.style,f,t=p.path,y,J,g,B;t&&"string"!==typeof t.value&&(t="x");J=t;if(a){g=w(a.width,3);B=(a.opacity||.15)/g;for(r=1;3>=r;r++)y=2*g+1-2*r,d&&(J=this.cutOffPath(t.value,y+.5)),f=['\x3cshape isShadow\x3d"true" strokeweight\x3d"',y,'" filled\x3d"false" path\x3d"',J,'" coordsize\x3d"10 10" style\x3d"',p.style.cssText,'" /\x3e'],h=G(e.prepVML(f),null,{left:b(n.left)+w(a.offsetX,1),top:b(n.top)+w(a.offsetY,1)}),d&&(h.cutOff=y+1),f=['\x3cstroke color\x3d"',a.color||"#000000",'" opacity\x3d"', +B*r,'"/\x3e'],G(e.prepVML(f),null,null,h),c?c.element.appendChild(h):p.parentNode.insertBefore(h,p),l.push(h);this.shadows=l}return this},updateShadows:A,setAttr:function(a,b){this.docMode8?this.element[a]=b:this.element.setAttribute(a,b)},classSetter:function(a){(this.added?this.element:this).className=a},dashstyleSetter:function(a,b,c){(c.getElementsByTagName("stroke")[0]||G(this.renderer.prepVML(["\x3cstroke/\x3e"]),null,null,c))[b]=a||"solid";this[b]=a},dSetter:function(a,b,c){var l=this.shadows; +a=a||[];this.d=a.join&&a.join(" ");c.path=a=this.pathToVML(a);if(l)for(c=l.length;c--;)l[c].path=l[c].cutOff?this.cutOffPath(a,l[c].cutOff):a;this.setAttr(b,a)},fillSetter:function(a,b,c){var l=c.nodeName;"SPAN"===l?c.style.color=a:"IMG"!==l&&(c.filled="none"!==a,this.setAttr("fillcolor",this.renderer.color(a,c,b,this)))},"fill-opacitySetter":function(a,b,c){G(this.renderer.prepVML(["\x3c",b.split("-")[0],' opacity\x3d"',a,'"/\x3e']),null,null,c)},opacitySetter:A,rotationSetter:function(a,b,c){c= +c.style;this[b]=c[b]=a;c.left=-Math.round(Math.sin(a*g)+1)+"px";c.top=Math.round(Math.cos(a*g))+"px"},strokeSetter:function(a,b,c){this.setAttr("strokecolor",this.renderer.color(a,c,b,this))},"stroke-widthSetter":function(a,b,c){c.stroked=!!a;this[b]=a;n(a)&&(a+="px");this.setAttr("strokeweight",a)},titleSetter:function(a,b){this.setAttr(b,a)},visibilitySetter:function(a,b,c){"inherit"===a&&(a="visible");this.shadows&&v(this.shadows,function(c){c.style[b]=a});"DIV"===c.nodeName&&(a="hidden"===a?"-999em": +0,this.docMode8||(c.style[b]=a?"visible":"hidden"),b="top");c.style[b]=a},xSetter:function(a,b,c){this[b]=a;"x"===b?b="left":"y"===b&&(b="top");this.updateClipping?(this[b]=a,this.updateClipping()):c.style[b]=a},zIndexSetter:function(a,b,c){c.style[b]=a}},A["stroke-opacitySetter"]=A["fill-opacitySetter"],a.VMLElement=A=C(y,A),A.prototype.ySetter=A.prototype.widthSetter=A.prototype.heightSetter=A.prototype.xSetter,A={Element:A,isIE8:-1k[0]&&b.push([1,k[1]]);v(b,function(f,b){r.test(f[1])?(p=a.color(f[1]),t=p.get("rgb"),y=p.get("a")):(t=f[1],y=1);m.push(100*f[0]+"% "+t);b?(B=y,x=t):(q=y,D=t)});if("fill"===d)if("gradient"===n)d=w.x1||w[0]||0,b=w.y1||w[1]||0,g=w.x2||w[2]||0,w=w.y2||w[3]||0,z='angle\x3d"'+(90-180*Math.atan((w-b)/(g-d))/Math.PI)+'"',u();else{var f=w.r,H=2*f,A=2*f,C=w.cx,F=w.cy,T=c.radialReference,K,f=function(){T&&(K=e.getBBox(),C+=(T[0]- +K.x)/K.width-.5,F+=(T[1]-K.y)/K.height-.5,H*=T[2]/K.width,A*=T[2]/K.height);z='src\x3d"'+a.getOptions().global.VMLRadialGradientURL+'" size\x3d"'+H+","+A+'" origin\x3d"0.5,0.5" position\x3d"'+C+","+F+'" color2\x3d"'+D+'" ';u()};e.added?f():e.onAdd=f;f=x}else f=t}else r.test(b)&&"IMG"!==c.tagName?(p=a.color(b),e[d+"-opacitySetter"](p.get("a"),d,c),f=p.get("rgb")):(f=c.getElementsByTagName(d),f.length&&(f[0].opacity=1,f[0].type="solid"),f=b);return f},prepVML:function(a){var b=this.isIE8;a=a.join(""); +b?(a=a.replace("/\x3e",' xmlns\x3d"urn:schemas-microsoft-com:vml" /\x3e'),a=-1===a.indexOf('style\x3d"')?a.replace("/\x3e",' style\x3d"display:inline-block;behavior:url(#default#VML);" /\x3e'):a.replace('style\x3d"','style\x3d"display:inline-block;behavior:url(#default#VML);')):a=a.replace("\x3c","\x3chcv:");return a},text:D.prototype.html,path:function(a){var b={coordsize:"10 10"};e(a)?b.d=a:d(a)&&h(b,a);return this.createElement("shape").attr(b)},circle:function(a,b,c){var l=this.symbol("circle"); +d(a)&&(c=a.r,b=a.y,a=a.x);l.isCircle=!0;l.r=c;return l.attr({x:a,y:b})},g:function(a){var b;a&&(b={className:"highcharts-"+a,"class":"highcharts-"+a});return this.createElement("div").attr(b)},image:function(a,b,c,d,e){var l=this.createElement("img").attr({src:a});1c&&m-w*be&&(l=Math.round((h-m)/Math.cos(c*k)));else if(h=m+(1-w)*b,m-w*be&&(D=e-a.x+D*w,H=-1),D=Math.min(y,D),DD||q.autoRotation&&(d.styles|| +{}).width)l=D;l&&(B.width=l,(q.options.labels.style||{}).textOverflow||(B.textOverflow="ellipsis"),d.css(B))},getPosition:function(a,g,k,h){var e=this.axis,n=e.chart,d=h&&n.oldChartHeight||n.chartHeight;return{x:a?e.translate(g+k,null,null,h)+e.transB:e.left+e.offset+(e.opposite?(h&&n.oldChartWidth||n.chartWidth)-e.right-e.left:0),y:a?d-e.bottom+e.offset-(e.opposite?e.height:0):d-e.translate(g+k,null,null,h)-e.transB}},getLabelPosition:function(a,g,m,h,e,n,d,c){var w=this.axis,b=w.transA,y=w.reversed, +D=w.staggerLines,q=w.tickRotCorr||{x:0,y:0},l=e.y;A(l)||(l=0===w.side?m.rotation?-8:-m.getBBox().height:2===w.side?q.y+8:Math.cos(m.rotation*k)*(q.y-m.getBBox(!1,0).height/2));a=a+e.x+q.x-(n&&h?n*b*(y?-1:1):0);g=g+l-(n&&!h?n*b*(y?1:-1):0);D&&(m=d/(c||1)%D,w.opposite&&(m=D-m-1),g+=w.labelOffset/D*m);return{x:a,y:Math.round(g)}},getMarkPath:function(a,g,k,h,e,n){return n.crispLine(["M",a,g,"L",a+(e?0:-k),g+(e?k:0)],h)},renderGridLine:function(a,g,k){var h=this.axis,e=h.options,n=this.gridLine,d={}, +c=this.pos,w=this.type,b=h.tickmarkOffset,y=h.chart.renderer,D=w?w+"Grid":"grid",q=e[D+"LineWidth"],l=e[D+"LineColor"],e=e[D+"LineDashStyle"];n||(d.stroke=l,d["stroke-width"]=q,e&&(d.dashstyle=e),w||(d.zIndex=1),a&&(d.opacity=0),this.gridLine=n=y.path().attr(d).addClass("highcharts-"+(w?w+"-":"")+"grid-line").add(h.gridGroup));if(!a&&n&&(a=h.getPlotLinePath(c+b,n.strokeWidth()*k,a,!0)))n[this.isNew?"attr":"animate"]({d:a,opacity:g})},renderMark:function(a,k,m){var h=this.axis,e=h.options,n=h.chart.renderer, +d=this.type,c=d?d+"Tick":"tick",w=h.tickSize(c),b=this.mark,y=!b,D=a.x;a=a.y;var q=g(e[c+"Width"],!d&&h.isXAxis?1:0),e=e[c+"Color"];w&&(h.opposite&&(w[0]=-w[0]),y&&(this.mark=b=n.path().addClass("highcharts-"+(d?d+"-":"")+"tick").add(h.axisGroup),b.attr({stroke:e,"stroke-width":q})),b[y?"attr":"animate"]({d:this.getMarkPath(D,a,w[0],b.strokeWidth()*m,h.horiz,n),opacity:k}))},renderLabel:function(a,k,m,h){var e=this.axis,n=e.horiz,d=e.options,c=this.label,w=d.labels,b=w.step,y=e.tickmarkOffset,D=!0, +q=a.x;a=a.y;c&&F(q)&&(c.xy=a=this.getLabelPosition(q,a,c,n,w,y,h,b),this.isFirst&&!this.isLast&&!g(d.showFirstLabel,1)||this.isLast&&!this.isFirst&&!g(d.showLastLabel,1)?D=!1:!n||e.isRadial||w.step||w.rotation||k||0===m||this.handleOverflow(a),b&&h%b&&(D=!1),D&&F(a.y)?(a.opacity=m,c[this.isNewLabel?"attr":"animate"](a),this.isNewLabel=!1):(c.attr("y",-9999),this.isNewLabel=!0),this.isNew=!1)},render:function(a,k,m){var h=this.axis,e=h.horiz,n=this.getPosition(e,this.pos,h.tickmarkOffset,k),d=n.x, +c=n.y,h=e&&d===h.pos+h.len||!e&&c===h.pos?-1:1;m=g(m,1);this.isActive=!0;this.renderGridLine(k,m,h);this.renderMark(n,m,h);this.renderLabel(n,k,m,a)},destroy:function(){G(this,this.axis)}}})(K);var S=function(a){var C=a.addEvent,A=a.animObject,G=a.arrayMax,F=a.arrayMin,m=a.color,g=a.correctFloat,k=a.defaultOptions,q=a.defined,v=a.deg2rad,u=a.destroyObjectProperties,h=a.each,e=a.extend,n=a.fireEvent,d=a.format,c=a.getMagnitude,w=a.grep,b=a.inArray,y=a.isArray,D=a.isNumber,H=a.isString,l=a.merge,B= +a.normalizeTickInterval,r=a.objectEach,z=a.pick,M=a.removeEvent,p=a.splat,E=a.syncTimeout,I=a.Tick,L=function(){this.init.apply(this,arguments)};a.extend(L.prototype,{defaultOptions:{dateTimeLabelFormats:{millisecond:"%H:%M:%S.%L",second:"%H:%M:%S",minute:"%H:%M",hour:"%H:%M",day:"%e. %b",week:"%e. %b",month:"%b '%y",year:"%Y"},endOnTick:!1,labels:{enabled:!0,style:{color:"#666666",cursor:"default",fontSize:"11px"},x:0},minPadding:.01,maxPadding:.01,minorTickLength:2,minorTickPosition:"outside",startOfWeek:1, +startOnTick:!1,tickLength:10,tickmarkPlacement:"between",tickPixelInterval:100,tickPosition:"outside",title:{align:"middle",style:{color:"#666666"}},type:"linear",minorGridLineColor:"#f2f2f2",minorGridLineWidth:1,minorTickColor:"#999999",lineColor:"#ccd6eb",lineWidth:1,gridLineColor:"#e6e6e6",tickColor:"#ccd6eb"},defaultYAxisOptions:{endOnTick:!0,tickPixelInterval:72,showLastLabel:!0,labels:{x:-8},maxPadding:.05,minPadding:.05,startOnTick:!0,title:{rotation:270,text:"Values"},stackLabels:{enabled:!1, +formatter:function(){return a.numberFormat(this.total,-1)},style:{fontSize:"11px",fontWeight:"bold",color:"#000000",textOutline:"1px contrast"}},gridLineWidth:1,lineWidth:0},defaultLeftAxisOptions:{labels:{x:-15},title:{rotation:270}},defaultRightAxisOptions:{labels:{x:15},title:{rotation:90}},defaultBottomAxisOptions:{labels:{autoRotation:[-45],x:0},title:{rotation:0}},defaultTopAxisOptions:{labels:{autoRotation:[-45],x:0},title:{rotation:0}},init:function(a,t){var f=t.isX,c=this;c.chart=a;c.horiz= +a.inverted&&!c.isZAxis?!f:f;c.isXAxis=f;c.coll=c.coll||(f?"xAxis":"yAxis");c.opposite=t.opposite;c.side=t.side||(c.horiz?c.opposite?0:2:c.opposite?1:3);c.setOptions(t);var d=this.options,e=d.type;c.labelFormatter=d.labels.formatter||c.defaultLabelFormatter;c.userOptions=t;c.minPixelPadding=0;c.reversed=d.reversed;c.visible=!1!==d.visible;c.zoomEnabled=!1!==d.zoomEnabled;c.hasNames="category"===e||!0===d.categories;c.categories=d.categories||c.hasNames;c.names=c.names||[];c.plotLinesAndBandsGroups= +{};c.isLog="logarithmic"===e;c.isDatetimeAxis="datetime"===e;c.positiveValuesOnly=c.isLog&&!c.allowNegativeLog;c.isLinked=q(d.linkedTo);c.ticks={};c.labelEdge=[];c.minorTicks={};c.plotLinesAndBands=[];c.alternateBands={};c.len=0;c.minRange=c.userMinRange=d.minRange||d.maxZoom;c.range=d.range;c.offset=d.offset||0;c.stacks={};c.oldStacks={};c.stacksTouched=0;c.max=null;c.min=null;c.crosshair=z(d.crosshair,p(a.options.tooltip.crosshairs)[f?0:1],!1);t=c.options.events;-1===b(c,a.axes)&&(f?a.axes.splice(a.xAxis.length, +0,c):a.axes.push(c),a[c.coll].push(c));c.series=c.series||[];a.inverted&&!c.isZAxis&&f&&void 0===c.reversed&&(c.reversed=!0);r(t,function(a,f){C(c,f,a)});c.lin2log=d.linearToLogConverter||c.lin2log;c.isLog&&(c.val2lin=c.log2lin,c.lin2val=c.lin2log)},setOptions:function(a){this.options=l(this.defaultOptions,"yAxis"===this.coll&&this.defaultYAxisOptions,[this.defaultTopAxisOptions,this.defaultRightAxisOptions,this.defaultBottomAxisOptions,this.defaultLeftAxisOptions][this.side],l(k[this.coll],a))}, +defaultLabelFormatter:function(){var f=this.axis,b=this.value,c=f.categories,p=this.dateTimeLabelFormat,e=k.lang,l=e.numericSymbols,e=e.numericSymbolMagnitude||1E3,r=l&&l.length,x,h=f.options.labels.format,f=f.isLog?Math.abs(b):f.tickInterval;if(h)x=d(h,this);else if(c)x=b;else if(p)x=a.dateFormat(p,b);else if(r&&1E3<=f)for(;r--&&void 0===x;)c=Math.pow(e,r+1),f>=c&&0===10*b%c&&null!==l[r]&&0!==b&&(x=a.numberFormat(b/c,-1)+l[r]);void 0===x&&(x=1E4<=Math.abs(b)?a.numberFormat(b,-1):a.numberFormat(b, +-1,void 0,""));return x},getSeriesExtremes:function(){var a=this,b=a.chart;a.hasVisibleSeries=!1;a.dataMin=a.dataMax=a.threshold=null;a.softThreshold=!a.isXAxis;a.buildStacks&&a.buildStacks();h(a.series,function(f){if(f.visible||!b.options.chart.ignoreHiddenSeries){var c=f.options,t=c.threshold,d;a.hasVisibleSeries=!0;a.positiveValuesOnly&&0>=t&&(t=null);if(a.isXAxis)c=f.xData,c.length&&(f=F(c),D(f)||f instanceof Date||(c=w(c,function(a){return D(a)}),f=F(c)),a.dataMin=Math.min(z(a.dataMin,c[0]), +f),a.dataMax=Math.max(z(a.dataMax,c[0]),G(c)));else if(f.getExtremes(),d=f.dataMax,f=f.dataMin,q(f)&&q(d)&&(a.dataMin=Math.min(z(a.dataMin,f),f),a.dataMax=Math.max(z(a.dataMax,d),d)),q(t)&&(a.threshold=t),!c.softThreshold||a.positiveValuesOnly)a.softThreshold=!1}})},translate:function(a,b,c,d,p,e){var f=this.linkedParent||this,t=1,l=0,r=d?f.oldTransA:f.transA;d=d?f.oldMin:f.min;var h=f.minPixelPadding;p=(f.isOrdinal||f.isBroken||f.isLog&&p)&&f.lin2val;r||(r=f.transA);c&&(t*=-1,l=f.len);f.reversed&& +(t*=-1,l-=t*(f.sector||f.len));b?(a=(a*t+l-h)/r+d,p&&(a=f.lin2val(a))):(p&&(a=f.val2lin(a)),a=t*(a-d)*r+l+t*h+(D(e)?r*e:0));return a},toPixels:function(a,b){return this.translate(a,!1,!this.horiz,null,!0)+(b?0:this.pos)},toValue:function(a,b){return this.translate(a-(b?0:this.pos),!0,!this.horiz,null,!0)},getPlotLinePath:function(a,b,c,d,p){var f=this.chart,t=this.left,e=this.top,l,r,h=c&&f.oldChartHeight||f.chartHeight,n=c&&f.oldChartWidth||f.chartWidth,w;l=this.transB;var g=function(a,f,b){if(a< +f||a>b)d?a=Math.min(Math.max(f,a),b):w=!0;return a};p=z(p,this.translate(a,null,null,c));a=c=Math.round(p+l);l=r=Math.round(h-p-l);D(p)?this.horiz?(l=e,r=h-this.bottom,a=c=g(a,t,t+this.width)):(a=t,c=n-this.right,l=r=g(l,e,e+this.height)):w=!0;return w&&!d?null:f.renderer.crispLine(["M",a,l,"L",c,r],b||1)},getLinearTickPositions:function(a,b,c){var f,t=g(Math.floor(b/a)*a);c=g(Math.ceil(c/a)*a);var d=[];if(this.single)return[b];for(b=t;b<=c;){d.push(b);b=g(b+a);if(b===f)break;f=b}return d},getMinorTickPositions:function(){var a= +this,b=a.options,c=a.tickPositions,d=a.minorTickInterval,p=[],e=a.pointRangePadding||0,l=a.min-e,e=a.max+e,x=e-l;if(x&&x/d=this.minRange,w=this.minRange,d=(w-c+b)/2,d=[b-d,z(a.min,b-d)],p&&(d[2]=this.isLog?this.log2lin(this.dataMin):this.dataMin),b=G(d),c=[b+w,z(a.max,b+w)], +p&&(c[2]=this.isLog?this.log2lin(this.dataMax):this.dataMax),c=F(c),c-b=H?(L=H,E=0):f.dataMax<=H&&(v=H,y=0)),f.min=z(M,L,f.dataMin),f.max=z(A,v,f.dataMax));e&&(f.positiveValuesOnly&&!b&&0>=Math.min(f.min,z(f.dataMin,f.min))&&a.error(10,1),f.min=g(l(f.min),15),f.max=g(l(f.max),15));f.range&&q(f.max)&&(f.userMin=f.min=M=Math.max(f.min,f.minFromRange()),f.userMax=A=f.max,f.range=null);n(f,"foundExtremes");f.beforePadding&& +f.beforePadding();f.adjustForMinRange();!(m||f.axisPointRange||f.usePercentage||w)&&q(f.min)&&q(f.max)&&(l=f.max-f.min)&&(!q(M)&&E&&(f.min-=l*E),!q(A)&&y&&(f.max+=l*y));D(p.softMin)&&(f.min=Math.min(f.min,p.softMin));D(p.softMax)&&(f.max=Math.max(f.max,p.softMax));D(p.floor)&&(f.min=Math.max(f.min,p.floor));D(p.ceiling)&&(f.max=Math.min(f.max,p.ceiling));u&&q(f.dataMin)&&(H=H||0,!q(M)&&f.min=H?f.min=H:!q(A)&&f.max>H&&f.dataMax<=H&&(f.max=H));f.tickInterval=f.min===f.max||void 0===f.min|| +void 0===f.max?1:w&&!k&&I===f.linkedParent.options.tickPixelInterval?k=f.linkedParent.tickInterval:z(k,this.tickAmount?(f.max-f.min)/Math.max(this.tickAmount-1,1):void 0,m?1:(f.max-f.min)*I/Math.max(f.len,I));x&&!b&&h(f.series,function(a){a.processData(f.min!==f.oldMin||f.max!==f.oldMax)});f.setAxisTranslation(!0);f.beforeSetTickPositions&&f.beforeSetTickPositions();f.postProcessTickInterval&&(f.tickInterval=f.postProcessTickInterval(f.tickInterval));f.pointRange&&!k&&(f.tickInterval=Math.max(f.pointRange, +f.tickInterval));b=z(p.minTickInterval,f.isDatetimeAxis&&f.closestPointRange);!k&&f.tickIntervalf.tickInterval&&1E3f.max)),!!this.tickAmount));this.tickAmount||(f.tickInterval=f.unsquish());this.setTickPositions()},setTickPositions:function(){var a=this.options,b,c=a.tickPositions,d=a.tickPositioner,p=a.startOnTick,l=a.endOnTick;this.tickmarkOffset=this.categories&& +"between"===a.tickmarkPlacement&&1===this.tickInterval?.5:0;this.minorTickInterval="auto"===a.minorTickInterval&&this.tickInterval?this.tickInterval/5:a.minorTickInterval;this.single=this.min===this.max&&q(this.min)&&!this.tickAmount&&(parseInt(this.min,10)===this.min||!1!==a.allowDecimals);this.tickPositions=b=c&&c.slice();!b&&(b=this.isDatetimeAxis?this.getTimeTicks(this.normalizeTimeTickInterval(this.tickInterval,a.units),this.min,this.max,a.startOfWeek,this.ordinalPositions,this.closestPointRange, +!0):this.isLog?this.getLogTickPositions(this.tickInterval,this.min,this.max):this.getLinearTickPositions(this.tickInterval,this.min,this.max),b.length>this.len&&(b=[b[0],b.pop()]),this.tickPositions=b,d&&(d=d.apply(this,[this.min,this.max])))&&(this.tickPositions=b=d);this.paddedTicks=b.slice(0);this.trimTicks(b,p,l);this.isLinked||(this.single&&(this.min-=.5,this.max+=.5),c||d||this.adjustTickAmount())},trimTicks:function(a,b,c){var f=a[0],d=a[a.length-1],p=this.minPointOffset||0;if(!this.isLinked){if(b&& +-Infinity!==f)this.min=f;else for(;this.min-p>a[0];)a.shift();if(c)this.max=d;else for(;this.max+pb&&(this.finalTickAmt=b,b=5);this.tickAmount=b},adjustTickAmount:function(){var a=this.tickInterval,b=this.tickPositions,c=this.tickAmount,d=this.finalTickAmt,p=b&&b.length;if(pc&&(this.tickInterval*=2,this.setTickPositions()); +if(q(d)){for(a=c=b.length;a--;)(3===d&&1===a%2||2>=d&&0d&&(a=d)),q(c)&&(bd&&(b=d))),this.displayBtn=void 0!==a||void 0!==b,this.setExtremes(a,b,!1,void 0,{trigger:"zoom"});return!0},setAxisSize:function(){var a=this.chart,b=this.options,c=b.offsets||[0,0,0,0],d=this.horiz,p=z(b.width,a.plotWidth-c[3]+c[1]),l=z(b.height,a.plotHeight-c[0]+c[2]),e=z(b.top,a.plotTop+c[0]),b=z(b.left,a.plotLeft+c[3]),c=/%$/;c.test(l)&&(l= +Math.round(parseFloat(l)/100*a.plotHeight));c.test(e)&&(e=Math.round(parseFloat(e)/100*a.plotHeight+a.plotTop));this.left=b;this.top=e;this.width=p;this.height=l;this.bottom=a.chartHeight-l-e;this.right=a.chartWidth-p-b;this.len=Math.max(d?p:l,0);this.pos=d?b:e},getExtremes:function(){var a=this.isLog,b=this.lin2log;return{min:a?g(b(this.min)):this.min,max:a?g(b(this.max)):this.max,dataMin:this.dataMin,dataMax:this.dataMax,userMin:this.userMin,userMax:this.userMax}},getThreshold:function(a){var b= +this.isLog,f=this.lin2log,c=b?f(this.min):this.min,b=b?f(this.max):this.max;null===a?a=c:c>a?a=c:ba?"right":195a?"left":"center"},tickSize:function(a){var b=this.options,f=b[a+"Length"],c=z(b[a+"Width"],"tick"===a&&this.isXAxis?1:0);if(c&&f)return"inside"===b[a+"Position"]&&(f=-f),[f,c]},labelMetrics:function(){var a=this.tickPositions&&this.tickPositions[0]||0;return this.chart.renderer.fontMetrics(this.options.labels.style&& +this.options.labels.style.fontSize,this.ticks[a]&&this.ticks[a].label)},unsquish:function(){var a=this.options.labels,b=this.horiz,c=this.tickInterval,d=c,p=this.len/(((this.categories?1:0)+this.max-this.min)/c),l,e=a.rotation,r=this.labelMetrics(),n,w=Number.MAX_VALUE,g,y=function(a){a/=p||1;a=1=a)n=y(Math.abs(r.h/Math.sin(v*a))),b=n+ +Math.abs(a/360),b(c.step||0)&&!c.rotation&&(this.staggerLines||1)*this.len/d||!b&&(p&&p-a.spacing[3]||.33*a.chartWidth)},renderUnsquish:function(){var a=this.chart,b=a.renderer,c=this.tickPositions,d=this.ticks,p=this.options.labels,e=this.horiz, +r=this.getSlotWidth(),x=Math.max(1,Math.round(r-2*(p.padding||5))),n={},w=this.labelMetrics(),g=p.style&&p.style.textOverflow,y,E=0,k,I;H(p.rotation)||(n.rotation=p.rotation||0);h(c,function(a){(a=d[a])&&a.labelLength>E&&(E=a.labelLength)});this.maxLabelLength=E;if(this.autoRotation)E>x&&E>w.h?n.rotation=this.labelRotation:this.labelRotation=0;else if(r&&(y={width:x+"px"},!g))for(y.textOverflow="clip",k=c.length;!e&&k--;)if(I=c[k],x=d[I].label)x.styles&&"ellipsis"===x.styles.textOverflow?x.css({textOverflow:"clip"}): +d[I].labelLength>r&&x.css({width:r+"px"}),x.getBBox().height>this.len/c.length-(w.h-w.f)&&(x.specCss={textOverflow:"ellipsis"});n.rotation&&(y={width:(E>.5*a.chartHeight?.33*a.chartHeight:a.chartHeight)+"px"},g||(y.textOverflow="ellipsis"));if(this.labelAlign=p.align||this.autoLabelAlign(this.labelRotation))n.align=this.labelAlign;h(c,function(a){var b=(a=d[a])&&a.label;b&&(b.attr(n),y&&b.css(l(y,b.specCss)),delete b.specCss,a.rotation=n.rotation)});this.tickRotCorr=b.rotCorr(w.b,this.labelRotation|| +0,0!==this.side)},hasData:function(){return this.hasVisibleSeries||q(this.min)&&q(this.max)&&!!this.tickPositions},addTitle:function(a){var b=this.chart.renderer,f=this.horiz,c=this.opposite,d=this.options.title,p;this.axisTitle||((p=d.textAlign)||(p=(f?{low:"left",middle:"center",high:"right"}:{low:c?"right":"left",middle:"center",high:c?"left":"right"})[d.align]),this.axisTitle=b.text(d.text,0,0,d.useHTML).attr({zIndex:7,rotation:d.rotation||0,align:p}).addClass("highcharts-axis-title").css(d.style).add(this.axisGroup), +this.axisTitle.isNew=!0);this.axisTitle[a?"show":"hide"](!0)},generateTick:function(a){var b=this.ticks;b[a]?b[a].addLabel():b[a]=new I(this,a)},getOffset:function(){var a=this,b=a.chart,c=b.renderer,d=a.options,p=a.tickPositions,l=a.ticks,e=a.horiz,x=a.side,n=b.inverted&&!a.isZAxis?[1,0,3,2][x]:x,w,g,y=0,E,k=0,I=d.title,D=d.labels,m=0,B=b.axisOffset,b=b.clipOffset,H=[-1,1,1,-1][x],u=d.className,L=a.axisParent,v=this.tickSize("tick");w=a.hasData();a.showAxis=g=w||z(d.showEmpty,!0);a.staggerLines= +a.horiz&&D.staggerLines;a.axisGroup||(a.gridGroup=c.g("grid").attr({zIndex:d.gridZIndex||1}).addClass("highcharts-"+this.coll.toLowerCase()+"-grid "+(u||"")).add(L),a.axisGroup=c.g("axis").attr({zIndex:d.zIndex||2}).addClass("highcharts-"+this.coll.toLowerCase()+" "+(u||"")).add(L),a.labelGroup=c.g("axis-labels").attr({zIndex:D.zIndex||7}).addClass("highcharts-"+a.coll.toLowerCase()+"-labels "+(u||"")).add(L));w||a.isLinked?(h(p,function(b,c){a.generateTick(b,c)}),a.renderUnsquish(),!1===D.reserveSpace|| +0!==x&&2!==x&&{1:"left",3:"right"}[x]!==a.labelAlign&&"center"!==a.labelAlign||h(p,function(a){m=Math.max(l[a].getLabelSize(),m)}),a.staggerLines&&(m*=a.staggerLines,a.labelOffset=m*(a.opposite?-1:1))):r(l,function(a,b){a.destroy();delete l[b]});I&&I.text&&!1!==I.enabled&&(a.addTitle(g),g&&!1!==I.reserveSpace&&(a.titleOffset=y=a.axisTitle.getBBox()[e?"height":"width"],E=I.offset,k=q(E)?0:z(I.margin,e?5:10)));a.renderLine();a.offset=H*z(d.offset,B[x]);a.tickRotCorr=a.tickRotCorr||{x:0,y:0};c=0===x? +-a.labelMetrics().h:2===x?a.tickRotCorr.y:0;k=Math.abs(m)+k;m&&(k=k-c+H*(e?z(D.y,a.tickRotCorr.y+8*H):D.x));a.axisTitleMargin=z(E,k);B[x]=Math.max(B[x],a.axisTitleMargin+y+H*a.offset,k,w&&p.length&&v?v[0]+H*a.offset:0);p=2*Math.floor(a.axisLine.strokeWidth()/2);0=this.min&&a<=this.max)f[a]||(f[a]=new I(this,a)),d&&f[a].isNew&&f[a].render(b,!0,.1),f[a].render(b)},render:function(){var b=this,c=b.chart,d=b.options,p=b.isLog,l=b.lin2log,e=b.isLinked,n=b.tickPositions,x=b.axisTitle,w=b.ticks,g=b.minorTicks,y=b.alternateBands,k=d.stackLabels,m=d.alternateGridColor,q=b.tickmarkOffset,z=b.axisLine,B=b.showAxis,H=A(c.renderer.globalAnimation),u,L;b.labelEdge.length=0;b.overlap=!1;h([w,g,y],function(a){r(a,function(a){a.isActive=!1})});if(b.hasData()|| +e)b.minorTickInterval&&!b.categories&&h(b.getMinorTickPositions(),function(a){b.renderMinorTick(a)}),n.length&&(h(n,function(a,c){b.renderTick(a,c)}),q&&(0===b.min||b.single)&&(w[-1]||(w[-1]=new I(b,-1,null,!0)),w[-1].render(-1))),m&&h(n,function(f,d){L=void 0!==n[d+1]?n[d+1]+q:b.max-q;0===d%2&&f=e.second?0:z*Math.floor(l.getMilliseconds()/ +z));if(r>=e.second)l[A.hcSetSeconds](r>=e.minute?0:z*Math.floor(l.getSeconds()/z));if(r>=e.minute)l[A.hcSetMinutes](r>=e.hour?0:z*Math.floor(l[A.hcGetMinutes]()/z));if(r>=e.hour)l[A.hcSetHours](r>=e.day?0:z*Math.floor(l[A.hcGetHours]()/z));if(r>=e.day)l[A.hcSetDate](r>=e.month?1:z*Math.floor(l[A.hcGetDate]()/z));r>=e.month&&(l[A.hcSetMonth](r>=e.year?0:z*Math.floor(l[A.hcGetMonth]()/z)),q=l[A.hcGetFullYear]());if(r>=e.year)l[A.hcSetFullYear](q-q%z);if(r===e.week)l[A.hcSetDate](l[A.hcGetDate]()-l[A.hcGetDay]()+ +h(w,1));q=l[A.hcGetFullYear]();w=l[A.hcGetMonth]();var p=l[A.hcGetDate](),E=l[A.hcGetHours]();if(A.hcTimezoneOffset||A.hcGetTimezoneOffset)u=(!D||!!A.hcGetTimezoneOffset)&&(c-d>4*e.month||v(d)!==v(c)),l=l.getTime(),l=new A(l+v(l));D=l.getTime();for(d=1;Db.length&&g(b,function(a){0===a%18E5&&"000000000"===G("%H%M%S%L",a)&& +(n[a]="day")})}b.info=k(a,{higherRanks:n,totalRange:r*z});return b};C.prototype.normalizeTimeTickInterval=function(a,d){var c=d||[["millisecond",[1,2,5,10,20,25,50,100,200,500]],["second",[1,2,5,10,15,30]],["minute",[1,2,5,10,15,30]],["hour",[1,2,3,4,6,8,12]],["day",[1,2]],["week",[1,2]],["month",[1,2,3,4,6]],["year",null]];d=c[c.length-1];var h=e[d[0]],b=d[1],n;for(n=0;nk&&(!v||y<=q)&&void 0!==y&&d.push(y),y>q&&(D=!0),y=b;else k=e(k),q=e(q),a=g[v?"minorTickInterval":"tickInterval"],a=m("auto"===a?null:a,this._minorAutoInterval,g.tickPixelInterval/(v?5:1)*(q-k)/((v?h/this.tickPositions.length:h)||1)),a=F(a,null,A(a)),d=G(this.getLinearTickPositions(a,k,q),n),v||(this._minorAutoInterval=a/5);v||(this.tickInterval=a);return d};C.prototype.log2lin=function(a){return Math.log(a)/Math.LN10};C.prototype.lin2log=function(a){return Math.pow(10, +a)}})(K);(function(a,C){var A=a.arrayMax,G=a.arrayMin,F=a.defined,m=a.destroyObjectProperties,g=a.each,k=a.erase,q=a.merge,v=a.pick;a.PlotLineOrBand=function(a,h){this.axis=a;h&&(this.options=h,this.id=h.id)};a.PlotLineOrBand.prototype={render:function(){var g=this,h=g.axis,e=h.horiz,n=g.options,d=n.label,c=g.label,w=n.to,b=n.from,y=n.value,k=F(b)&&F(w),m=F(y),l=g.svgElem,B=!l,r=[],z=n.color,M=v(n.zIndex,0),p=n.events,r={"class":"highcharts-plot-"+(k?"band ":"line ")+(n.className||"")},E={},I=h.chart.renderer, +L=k?"bands":"lines",f=h.log2lin;h.isLog&&(b=f(b),w=f(w),y=f(y));m?(r={stroke:z,"stroke-width":n.width},n.dashStyle&&(r.dashstyle=n.dashStyle)):k&&(z&&(r.fill=z),n.borderWidth&&(r.stroke=n.borderColor,r["stroke-width"]=n.borderWidth));E.zIndex=M;L+="-"+M;(z=h.plotLinesAndBandsGroups[L])||(h.plotLinesAndBandsGroups[L]=z=I.g("plot-"+L).attr(E).add());B&&(g.svgElem=l=I.path().attr(r).add(z));if(m)r=h.getPlotLinePath(y,l.strokeWidth());else if(k)r=h.getPlotBandPath(b,w,n);else return;B&&r&&r.length?(l.attr({d:r}), +p&&a.objectEach(p,function(a,b){l.on(b,function(a){p[b].apply(g,[a])})})):l&&(r?(l.show(),l.animate({d:r})):(l.hide(),c&&(g.label=c=c.destroy())));d&&F(d.text)&&r&&r.length&&0this.max&&h>this.max;n&&e?(a&&(n.flat=n.toString()===e.toString(),c=0),n.push(d&&e[4]===n[4]?e[4]+c:e[4],d||e[5]!==n[5]?e[5]:e[5]+c,d&&e[1]===n[1]?e[1]+c:e[1],d||e[2]!==n[2]?e[2]:e[2]+c)):n=null;return n},addPlotBand:function(a){return this.addPlotBandOrLine(a,"plotBands")},addPlotLine:function(a){return this.addPlotBandOrLine(a,"plotLines")},addPlotBandOrLine:function(g,h){var e=(new a.PlotLineOrBand(this,g)).render(),n=this.userOptions;e&&(h&&(n[h]=n[h]||[],n[h].push(g)),this.plotLinesAndBands.push(e)); +return e},removePlotBandOrLine:function(a){for(var h=this.plotLinesAndBands,e=this.options,n=this.userOptions,d=h.length;d--;)h[d].id===a&&h[d].destroy();g([e.plotLines||[],n.plotLines||[],e.plotBands||[],n.plotBands||[]],function(c){for(d=c.length;d--;)c[d].id===a&&k(c,c[d])})},removePlotBand:function(a){this.removePlotBandOrLine(a)},removePlotLine:function(a){this.removePlotBandOrLine(a)}})})(K,S);(function(a){var C=a.dateFormat,A=a.each,G=a.extend,F=a.format,m=a.isNumber,g=a.map,k=a.merge,q=a.pick, +v=a.splat,u=a.syncTimeout,h=a.timeUnits;a.Tooltip=function(){this.init.apply(this,arguments)};a.Tooltip.prototype={init:function(a,h){this.chart=a;this.options=h;this.crosshairs=[];this.now={x:0,y:0};this.isHidden=!0;this.split=h.split&&!a.inverted;this.shared=h.shared||this.split},cleanSplit:function(a){A(this.chart.series,function(e){var d=e&&e.tt;d&&(!d.isActive||a?e.tt=d.destroy():d.isActive=!1)})},getLabel:function(){var a=this.chart.renderer,h=this.options;this.label||(this.split?this.label= +a.g("tooltip"):(this.label=a.label("",0,0,h.shape||"callout",null,null,h.useHTML,null,"tooltip").attr({padding:h.padding,r:h.borderRadius}),this.label.attr({fill:h.backgroundColor,"stroke-width":h.borderWidth}).css(h.style).shadow(h.shadow)),this.label.attr({zIndex:8}).add());return this.label},update:function(a){this.destroy();k(!0,this.chart.options.tooltip.userOptions,a);this.init(this.chart,k(!0,this.options,a))},destroy:function(){this.label&&(this.label=this.label.destroy());this.split&&this.tt&& +(this.cleanSplit(this.chart,!0),this.tt=this.tt.destroy());clearTimeout(this.hideTimer);clearTimeout(this.tooltipTimeout)},move:function(a,h,d,c){var e=this,b=e.now,n=!1!==e.options.animation&&!e.isHidden&&(1g-n?g:g-n);else if(r)b[a]=Math.max(p,f+n+d>c?f:f+n);else return!1},z=function(a,c,d,f){var p;fc-e?p=!1:b[a]=fc-d/2?c-d-2:f-d/2;return p},v=function(a){var b=k;k=l;l=b;g=a},p=function(){!1!==r.apply(0,k)?!1!==z.apply(0,l)||g||(v(!0),p()):g?b.x=b.y=0:(v(!0),p())};(c.inverted||1p&&(n=!1);a=(e.series&&e.series.yAxis&&e.series.yAxis.pos)+(e.plotY||0);a-=g.plotTop;c.push({target:e.isHeader?g.plotHeight+m:a,rank:e.isHeader?1:0,size:r.tt.getBBox().height+1,point:e,x:p,tt:w})});this.cleanSplit(); +a.distribute(c,g.plotHeight+m);A(c,function(a){var b=a.point,c=b.series;a.tt.attr({visibility:void 0===a.pos?"hidden":"inherit",x:n||b.isHeader?a.x:b.plotX+g.plotLeft+q(k.distance,16),y:a.pos+g.plotTop,anchorX:b.isHeader?b.plotX+g.plotLeft:b.plotX+c.xAxis.pos,anchorY:b.isHeader?a.pos+g.plotTop-15:b.plotY+c.yAxis.pos})})},updatePosition:function(a){var e=this.chart,d=this.getLabel(),d=(this.options.positioner||this.getPosition).call(this,d.width,d.height,a);this.move(Math.round(d.x),Math.round(d.y|| +0),a.plotX+e.plotLeft,a.plotY+e.plotTop)},getDateFormat:function(a,g,d,c){var e=C("%m-%d %H:%M:%S.%L",g),b,n,k={millisecond:15,second:12,minute:9,hour:6,day:3},m="millisecond";for(n in h){if(a===h.week&&+C("%w",g)===d&&"00:00:00.000"===e.substr(6)){n="week";break}if(h[n]>a){n=m;break}if(k[n]&&e.substr(k[n])!=="01-01 00:00:00.000".substr(k[n]))break;"week"!==n&&(m=n)}n&&(b=c[n]);return b},getXDateFormat:function(a,h,d){h=h.dateTimeLabelFormats;var c=d&&d.closestPointRange;return(c?this.getDateFormat(c, +a.x,d.options.startOfWeek,h):h.day)||h.year},tooltipFooterHeaderFormatter:function(a,h){var d=h?"footer":"header";h=a.series;var c=h.tooltipOptions,e=c.xDateFormat,b=h.xAxis,g=b&&"datetime"===b.options.type&&m(a.key),d=c[d+"Format"];g&&!e&&(e=this.getXDateFormat(a,c,b));g&&e&&(d=d.replace("{point.key}","{point.key:"+e+"}"));return F(d,{point:a,series:h})},bodyFormatter:function(a){return g(a,function(a){var d=a.series.tooltipOptions;return(d.pointFormatter||a.point.tooltipFormatter).call(a.point, +d.pointFormat)})}}})(K);(function(a){var C=a.addEvent,A=a.attr,G=a.charts,F=a.color,m=a.css,g=a.defined,k=a.doc,q=a.each,v=a.extend,u=a.fireEvent,h=a.offset,e=a.pick,n=a.removeEvent,d=a.splat,c=a.Tooltip,w=a.win;a.Pointer=function(a,c){this.init(a,c)};a.Pointer.prototype={init:function(a,d){this.options=d;this.chart=a;this.runChartClick=d.chart.events&&!!d.chart.events.click;this.pinchDown=[];this.lastValidTouch={};c&&d.tooltip.enabled&&(a.tooltip=new c(a,d.tooltip),this.followTouchMove=e(d.tooltip.followTouchMove, +!0));this.setDOMEvents()},zoomOption:function(a){var b=this.chart,c=b.options.chart,d=c.zoomType||"",b=b.inverted;/touch/.test(a.type)&&(d=e(c.pinchType,d));this.zoomX=a=/x/.test(d);this.zoomY=d=/y/.test(d);this.zoomHor=a&&!b||d&&b;this.zoomVert=d&&!b||a&&b;this.hasZoom=a||d},normalize:function(a,c){var b,d;a=a||w.event;a.target||(a.target=a.srcElement);d=a.touches?a.touches.length?a.touches.item(0):a.changedTouches[0]:a;c||(this.chartPosition=c=h(this.chart.container));void 0===d.pageX?(b=Math.max(a.x, +a.clientX-c.left),c=a.y):(b=d.pageX-c.left,c=d.pageY-c.top);return v(a,{chartX:Math.round(b),chartY:Math.round(c)})},getCoordinates:function(a){var b={xAxis:[],yAxis:[]};q(this.chart.axes,function(c){b[c.isXAxis?"xAxis":"yAxis"].push({axis:c,value:c.toValue(a[c.horiz?"chartX":"chartY"])})});return b},getKDPoints:function(a,c,d){var b=[],l,h,r;q(a,function(a){l=a.noSharedTooltip&&c;h=!c&&a.directTouch;a.visible&&!h&&e(a.options.enableMouseTracking,!0)&&(r=a.searchPoint(d,!l&&0>a.options.findNearestPointBy.indexOf("y")))&& +r.series&&b.push(r)});b.sort(function(a,b){var d=a.distX-b.distX,l=a.dist-b.dist,e=(b.series.group&&b.series.group.zIndex)-(a.series.group&&a.series.group.zIndex);return 0!==d&&c?d:0!==l?l:0!==e?e:a.series.index>b.series.index?-1:1});if(c&&b[0]&&!b[0].series.noSharedTooltip)for(a=b.length;a--;)(b[a].x!==b[0].x||b[a].series.noSharedTooltip)&&b.splice(a,1);return b},getPointFromEvent:function(a){a=a.target;for(var b;a&&!b;)b=a.point,a=a.parentNode;return b},getChartCoordinatesFromPoint:function(a,c){var b= +a.series,d=b.xAxis,b=b.yAxis;if(d&&b)return c?{chartX:d.len+d.pos-a.clientX,chartY:b.len+b.pos-a.plotY}:{chartX:a.clientX+d.pos,chartY:a.plotY+b.pos}},getHoverData:function(b,c,d,e,l,h){var r=b,g=c,r=l?d:[g];e=!(!e||!b);c=g&&!g.stickyTracking;var n=function(a,b){return 0===b},p;e?n=function(a){return a===b}:c?n=function(a){return a.series===g}:r=a.grep(d,function(a){return a.stickyTracking});p=e&&!l?[b]:this.getKDPoints(r,l,h);g=(r=a.find(p,n))&&r.series;e||c||!l||(p=this.getKDPoints(d,l,h));p.sort(function(a, +b){return a.series.index-b.series.index});return{hoverPoint:r,hoverSeries:g,hoverPoints:p}},runPointActions:function(b,c){var d=this.chart,h=d.tooltip,l=h?h.shared:!1,g=c||d.hoverPoint,r=g&&g.series||d.hoverSeries;c=this.getHoverData(g,r,d.series,!!c||r&&r.directTouch&&this.isDirectTouch,l,b);var n,w,g=c.hoverPoint;n=(r=c.hoverSeries)&&r.tooltipOptions.followPointer;w=(l=l&&g&&!g.series.noSharedTooltip)?c.hoverPoints:g?[g]:[];if(g&&(g!==d.hoverPoint||h&&h.isHidden)){q(d.hoverPoints||[],function(b){-1=== +a.inArray(b,w)&&b.setState()});q(w||[],function(a){a.setState("hover")});if(d.hoverSeries!==r)r.onMouseOver();d.hoverPoint&&d.hoverPoint.firePointEvent("mouseOut");g.firePointEvent("mouseOver");d.hoverPoints=w;d.hoverPoint=g;h&&h.refresh(l?w:g,b)}else n&&h&&!h.isHidden&&(r=h.getAnchor([{}],b),h.updatePosition({plotX:r[0],plotY:r[1]}));this.unDocMouseMove||(this.unDocMouseMove=C(k,"mousemove",function(b){var c=G[a.hoverChartIndex];if(c)c.pointer.onDocumentMouseMove(b)}));q(d.axes,function(c){e(c.crosshair.snap, +!0)?a.find(w,function(a){return a.series[c.coll]===c})?c.drawCrosshair(b,g):c.hideCrosshair():c.drawCrosshair(b)})},reset:function(a,c){var b=this.chart,e=b.hoverSeries,l=b.hoverPoint,h=b.hoverPoints,g=b.tooltip,n=g&&g.shared?h:l;a&&n&&q(d(n),function(b){b.series.isCartesian&&void 0===b.plotX&&(a=!1)});if(a)g&&n&&(g.refresh(n),l&&(l.setState(l.state,!0),q(b.axes,function(a){a.crosshair&&a.drawCrosshair(null,l)})));else{if(l)l.onMouseOut();h&&q(h,function(a){a.setState()});if(e)e.onMouseOut();g&&g.hide(c); +this.unDocMouseMove&&(this.unDocMouseMove=this.unDocMouseMove());q(b.axes,function(a){a.hideCrosshair()});this.hoverX=b.hoverPoints=b.hoverPoint=null}},scaleGroups:function(a,c){var b=this.chart,d;q(b.series,function(e){d=a||e.getPlotBox();e.xAxis&&e.xAxis.zoomEnabled&&e.group&&(e.group.attr(d),e.markerGroup&&(e.markerGroup.attr(d),e.markerGroup.clip(c?b.clipRect:null)),e.dataLabelsGroup&&e.dataLabelsGroup.attr(d))});b.clipRect.attr(c||b.clipBox)},dragStart:function(a){var b=this.chart;b.mouseIsDown= +a.type;b.cancelClick=!1;b.mouseDownX=this.mouseDownX=a.chartX;b.mouseDownY=this.mouseDownY=a.chartY},drag:function(a){var b=this.chart,c=b.options.chart,d=a.chartX,e=a.chartY,h=this.zoomHor,g=this.zoomVert,n=b.plotLeft,w=b.plotTop,p=b.plotWidth,k=b.plotHeight,m,q=this.selectionMarker,f=this.mouseDownX,t=this.mouseDownY,v=c.panKey&&a[c.panKey+"Key"];q&&q.touch||(dn+p&&(d=n+p),ew+k&&(e=w+k),this.hasDragged=Math.sqrt(Math.pow(f-d,2)+Math.pow(t-e,2)),10M.max&&(g=M.max-l,t=!0);t?(I-=.8*(I-n[w][0]),p||(f-=.8*(f-n[w][1])),m()):n[w]=[I,f];z||(e[w]=B-v,e[q]=l);e=z?1/r:r;h[q]=l;h[w]=g;u[z?a?"scaleY": +"scaleX":"scale"+b]=r;u["translate"+b]=e*v+(I-e*E)},pinch:function(a){var k=this,v=k.chart,u=k.pinchDown,h=a.touches,e=h.length,n=k.lastValidTouch,d=k.hasZoom,c=k.selectionMarker,w={},b=1===e&&(k.inClass(a.target,"highcharts-tracker")&&v.runTrackerClick||k.runChartClick),y={};1d-6&&l(p||c.spacingBox.width-2*r-b.x)&&(this.itemX=r,this.itemY+=I+this.lastLineHeight+E,this.lastLineHeight=0);this.maxItemWidth=Math.max(this.maxItemWidth,l);this.lastItemY=I+this.itemY+E;this.lastLineHeight=Math.max(d,this.lastLineHeight); +a._legendItemPos=[this.itemX,this.itemY];e?this.itemX+=l:(this.itemY+=I+d+E,this.lastLineHeight=d);this.offsetWidth=p||Math.max((e?this.itemX-r-k:l)+r,this.offsetWidth)},getAllItems:function(){var a=[];m(this.chart.series,function(c){var d=c&&c.options;c&&v(d.showInLegend,F(d.linkedTo)?!1:void 0,!0)&&(a=a.concat(c.legendItems||("point"===d.legendType?c.data:c)))});return a},adjustMargins:function(a,c){var d=this.chart,b=this.options,e=b.align.charAt(0)+b.verticalAlign.charAt(0)+b.layout.charAt(0); +b.floating||m([/(lth|ct|rth)/,/(rtv|rm|rbv)/,/(rbh|cb|lbh)/,/(lbv|lm|ltv)/],function(h,g){h.test(e)&&!F(a[g])&&(d[k[g]]=Math.max(d[k[g]],d.legend[(g+1)%2?"legendHeight":"legendWidth"]+[1,-1,-1,1][g]*b[g%2?"x":"y"]+v(b.margin,12)+c[g]))})},render:function(){var a=this,c=a.chart,e=c.renderer,b=a.group,g,n,k,l,B=a.box,r=a.options,z=a.padding;a.itemX=z;a.itemY=a.initialItemY;a.offsetWidth=0;a.lastItemY=0;b||(a.group=b=e.g("legend").attr({zIndex:7}).add(),a.contentGroup=e.g().attr({zIndex:1}).add(b),a.scrollGroup= +e.g().add(a.contentGroup));a.renderTitle();g=a.getAllItems();h(g,function(a,b){return(a.options&&a.options.legendIndex||0)-(b.options&&b.options.legendIndex||0)});r.reversed&&g.reverse();a.allItems=g;a.display=n=!!g.length;a.lastLineHeight=0;m(g,function(b){a.renderItem(b)});k=(r.width||a.offsetWidth)+z;l=a.lastItemY+a.lastLineHeight+a.titleHeight;l=a.handleOverflow(l);l+=z;B||(a.box=B=e.rect().addClass("highcharts-legend-box").attr({r:r.borderRadius}).add(b),B.isNew=!0);B.attr({stroke:r.borderColor, +"stroke-width":r.borderWidth||0,fill:r.backgroundColor||"none"}).shadow(r.shadow);0d&&!1!==r.enabled?(this.clipHeight=l=Math.max(d-20-this.titleHeight- +g,0),this.currentPage=v(this.currentPage,1),this.fullHeight=a,m(u,function(a,b){var c=a._legendItemPos[1];a=Math.round(a.legendItem.getBBox().height);var f=E.length;if(!f||c-E[f-1]>l&&(I||c)!==E[f-1])E.push(I||c),f++;b===u.length-1&&c+a-E[f-1]>l&&E.push(c);c!==I&&(I=c)}),n||(n=c.clipRect=b.clipRect(0,g,9999,0),c.contentGroup.clip(n)),f(l),p||(this.nav=p=b.g().attr({zIndex:1}).add(this.group),this.up=b.symbol("triangle",0,0,q,q).on("click",function(){c.scroll(-1,k)}).add(p),this.pager=b.text("",15, +10).addClass("highcharts-legend-navigation").css(r.style).add(p),this.down=b.symbol("triangle-down",0,0,q,q).on("click",function(){c.scroll(1,k)}).add(p)),c.scroll(0),a=d):p&&(f(),this.nav=p.destroy(),this.scrollGroup.attr({translateY:1}),this.clipHeight=0);return a},scroll:function(a,c){var d=this.pages,b=d.length;a=this.currentPage+a;var e=this.clipHeight,h=this.options.navigation,g=this.pager,l=this.padding;a>b&&(a=b);0g&&(h=typeof a[0],"string"===h?e.name=a[0]:"number"=== +h&&(e.x=a[0]),b++);m=d.value;)d=e[++g];d&&d.color&&!this.options.color&&(this.color=d.color);return d},destroy:function(){var a=this.series.chart,e=a.hoverPoints,g;a.pointCount--;e&&(this.setState(),F(e,this),e.length||(a.hoverPoints=null));if(this===a.hoverPoint)this.onMouseOut();if(this.graphic||this.dataLabel)u(this),this.destroyElements();this.legendItem&&a.legend.destroyItem(this); +for(g in this)this[g]=null},destroyElements:function(){for(var a=["graphic","dataLabel","dataLabelUpper","connector","shadowGroup"],e,g=6;g--;)e=a[g],this[e]&&(this[e]=this[e].destroy())},getLabelConfig:function(){return{x:this.category,y:this.y,color:this.color,colorIndex:this.colorIndex,key:this.name||this.category,series:this.series,point:this,percentage:this.percentage,total:this.total||this.stackTotal}},tooltipFormatter:function(a){var e=this.series,h=e.tooltipOptions,d=v(h.valueDecimals,""), +c=h.valuePrefix||"",k=h.valueSuffix||"";A(e.pointArrayMap||["y"],function(b){b="{point."+b;if(c||k)a=a.replace(b+"}",c+b+"}"+k);a=a.replace(b+"}",b+":,."+d+"f}")});return g(a,{point:this,series:this.series})},firePointEvent:function(a,e,g){var d=this,c=this.series.options;(c.point.events[a]||d.options&&d.options.events&&d.options.events[a])&&this.importEvents();"click"===a&&c.allowPointSelect&&(g=function(a){d.select&&d.select(null,a.ctrlKey||a.metaKey||a.shiftKey)});m(this,a,e,g)},visible:!0}})(K); +(function(a){var C=a.addEvent,A=a.animObject,G=a.arrayMax,F=a.arrayMin,m=a.correctFloat,g=a.Date,k=a.defaultOptions,q=a.defaultPlotOptions,v=a.defined,u=a.each,h=a.erase,e=a.extend,n=a.fireEvent,d=a.grep,c=a.isArray,w=a.isNumber,b=a.isString,y=a.merge,D=a.objectEach,H=a.pick,l=a.removeEvent,B=a.splat,r=a.SVGElement,z=a.syncTimeout,M=a.win;a.Series=a.seriesType("line",null,{lineWidth:2,allowPointSelect:!1,showCheckbox:!1,animation:{duration:1E3},events:{},marker:{lineWidth:0,lineColor:"#ffffff",radius:4, +states:{hover:{animation:{duration:50},enabled:!0,radiusPlus:2,lineWidthPlus:1},select:{fillColor:"#cccccc",lineColor:"#000000",lineWidth:2}}},point:{events:{}},dataLabels:{align:"center",formatter:function(){return null===this.y?"":a.numberFormat(this.y,-1)},style:{fontSize:"11px",fontWeight:"bold",color:"contrast",textOutline:"1px contrast"},verticalAlign:"bottom",x:0,y:0,padding:5},cropThreshold:300,pointRange:0,softThreshold:!0,states:{hover:{animation:{duration:50},lineWidthPlus:1,marker:{}, +halo:{size:10,opacity:.25}},select:{marker:{}}},stickyTracking:!0,turboThreshold:1E3,findNearestPointBy:"x"},{isCartesian:!0,pointClass:a.Point,sorted:!0,requireSorting:!0,directTouch:!1,axisTypes:["xAxis","yAxis"],colorCounter:0,parallelArrays:["x","y"],coll:"series",init:function(a,b){var c=this,d,f=a.series,p;c.chart=a;c.options=b=c.setOptions(b);c.linkedSeries=[];c.bindAxes();e(c,{name:b.name,state:"",visible:!1!==b.visible,selected:!0===b.selected});d=b.events;D(d,function(a,b){C(c,b,a)});if(d&& +d.click||b.point&&b.point.events&&b.point.events.click||b.allowPointSelect)a.runTrackerClick=!0;c.getColor();c.getSymbol();u(c.parallelArrays,function(a){c[a+"Data"]=[]});c.setData(b.data,!1);c.isCartesian&&(a.hasCartesianSeries=!0);f.length&&(p=f[f.length-1]);c._i=H(p&&p._i,-1)+1;a.orderSeries(this.insert(f))},insert:function(a){var b=this.options.index,c;if(w(b)){for(c=a.length;c--;)if(b>=H(a[c].options.index,a[c]._i)){a.splice(c+1,0,this);break}-1===c&&a.unshift(this);c+=1}else a.push(this);return H(c, +a.length-1)},bindAxes:function(){var b=this,c=b.options,d=b.chart,e;u(b.axisTypes||[],function(f){u(d[f],function(a){e=a.options;if(c[f]===e.index||void 0!==c[f]&&c[f]===e.id||void 0===c[f]&&0===e.index)b.insert(a.series),b[f]=a,a.isDirty=!0});b[f]||b.optionalAxis===f||a.error(18,!0)})},updateParallelArrays:function(a,b){var c=a.series,d=arguments,f=w(b)?function(f){var d="y"===f&&c.toYData?c.toYData(a):a[f];c[f+"Data"][b]=d}:function(a){Array.prototype[b].apply(c[a+"Data"],Array.prototype.slice.call(d, +2))};u(c.parallelArrays,f)},autoIncrement:function(){var a=this.options,b=this.xIncrement,c,d=a.pointIntervalUnit,b=H(b,a.pointStart,0);this.pointInterval=c=H(this.pointInterval,a.pointInterval,1);d&&(a=new g(b),"day"===d?a=+a[g.hcSetDate](a[g.hcGetDate]()+c):"month"===d?a=+a[g.hcSetMonth](a[g.hcGetMonth]()+c):"year"===d&&(a=+a[g.hcSetFullYear](a[g.hcGetFullYear]()+c)),c=a-b);this.xIncrement=b+c;return b},setOptions:function(a){var b=this.chart,c=b.options,d=c.plotOptions,f=(b.userOptions||{}).plotOptions|| +{},e=d[this.type];this.userOptions=a;b=y(e,d.series,a);this.tooltipOptions=y(k.tooltip,k.plotOptions.series&&k.plotOptions.series.tooltip,k.plotOptions[this.type].tooltip,c.tooltip.userOptions,d.series&&d.series.tooltip,d[this.type].tooltip,a.tooltip);this.stickyTracking=H(a.stickyTracking,f[this.type]&&f[this.type].stickyTracking,f.series&&f.series.stickyTracking,this.tooltipOptions.shared&&!this.noSharedTooltip?!0:b.stickyTracking);null===e.marker&&delete b.marker;this.zoneAxis=b.zoneAxis;a=this.zones= +(b.zones||[]).slice();!b.negativeColor&&!b.negativeFillColor||b.zones||a.push({value:b[this.zoneAxis+"Threshold"]||b.threshold||0,className:"highcharts-negative",color:b.negativeColor,fillColor:b.negativeFillColor});a.length&&v(a[a.length-1].value)&&a.push({color:this.color,fillColor:this.fillColor});return b},getCyclic:function(a,b,c){var d,f=this.chart,e=this.userOptions,p=a+"Index",h=a+"Counter",l=c?c.length:H(f.options.chart[a+"Count"],f[a+"Count"]);b||(d=H(e[p],e["_"+p]),v(d)||(f.series.length|| +(f[h]=0),e["_"+p]=d=f[h]%l,f[h]+=1),c&&(b=c[d]));void 0!==d&&(this[p]=d);this[a]=b},getColor:function(){this.options.colorByPoint?this.options.color=null:this.getCyclic("color",this.options.color||q[this.type].color,this.chart.options.colors)},getSymbol:function(){this.getCyclic("symbol",this.options.marker.symbol,this.chart.options.symbols)},drawLegendSymbol:a.LegendSymbolMixin.drawLineMarker,setData:function(d,e,h,l){var f=this,p=f.points,g=p&&p.length||0,r,n=f.options,k=f.chart,m=null,q=f.xAxis, +E=n.turboThreshold,z=this.xData,y=this.yData,I=(r=f.pointArrayMap)&&r.length;d=d||[];r=d.length;e=H(e,!0);if(!1!==l&&r&&g===r&&!f.cropped&&!f.hasGroupedData&&f.visible)u(d,function(a,b){p[b].update&&a!==n.data[b]&&p[b].update(a,!1,null,!1)});else{f.xIncrement=null;f.colorCounter=0;u(this.parallelArrays,function(a){f[a+"Data"].length=0});if(E&&r>E){for(h=0;null===m&&hg||this.forceCrop))if(c[e-1]w)c=[],d=[];else if(c[0]w)f=this.cropData(this.xData,this.yData,q,w),c=f.xData,d=f.yData,f=f.start,h=!0;for(g=c.length|| +1;--g;)e=m?r(c[g])-r(c[g-1]):c[g]-c[g-1],0e&&this.requireSorting&&a.error(15);this.cropped=h;this.cropStart=f;this.processedXData=c;this.processedYData=d;this.closestPointRange=p},cropData:function(a,b,c,d){var f=a.length,e=0,h=f,p=H(this.cropShoulder,1),l;for(l=0;l=c){e=Math.max(0,l-p);break}for(c=l;cd){h=c+p;break}return{xData:a.slice(e,h),yData:b.slice(e,h),start:e,end:h}},generatePoints:function(){var a=this.options,b=a.data,c=this.data, +d,f=this.processedXData,e=this.processedYData,h=this.pointClass,l=f.length,g=this.cropStart||0,r,n=this.hasGroupedData,a=a.keys,k,m=[],q;c||n||(c=[],c.length=b.length,c=this.data=c);a&&n&&(this.options.keys=!1);for(q=0;q=p&&(d[k]||r)<=l,g&&r)if(g=n.length)for(;g--;)null!==n[g]&&(f[h++]=n[g]);else f[h++]=n;this.dataMin= +F(f);this.dataMax=G(f)},translate:function(){this.processedXData||this.processData();this.generatePoints();var a=this.options,b=a.stacking,c=this.xAxis,d=c.categories,f=this.yAxis,e=this.points,h=e.length,l=!!this.modifyValue,g=a.pointPlacement,r="between"===g||w(g),n=a.threshold,k=a.startFromThreshold?n:0,q,z,y,B,u=Number.MAX_VALUE;"between"===g&&(g=.5);w(g)&&(g*=H(a.pointRange||c.pointRange));for(a=0;a=A&&(D.isNull=!0);D.plotX=q=m(Math.min(Math.max(-1E5,c.translate(M,0,0,0,1,g,"flags"===this.type)),1E5));b&&this.visible&&!D.isNull&&C&&C[M]&&(B=this.getStackIndicator(B,M,this.index),F=C[M],A=F.points[B.key],z=A[0],A=A[1],z===k&&B.key===C[M].base&&(z=H(n,f.min)),f.positiveValuesOnly&&0>=z&&(z=null),D.total=D.stackTotal=F.total,D.percentage=F.total&&D.y/F.total*100,D.stackY=A,F.setOffset(this.pointXOffset||0,this.barW||0));D.yBottom=v(z)?f.translate(z,0,1,0,1): +null;l&&(A=this.modifyValue(A,D));D.plotY=z="number"===typeof A&&Infinity!==A?Math.min(Math.max(-1E5,f.translate(A,0,1,0,1)),1E5):void 0;D.isInside=void 0!==z&&0<=z&&z<=f.len&&0<=q&&q<=c.len;D.clientX=r?m(c.translate(M,0,0,0,1,g)):q;D.negative=D.y<(n||0);D.category=d&&void 0!==d[D.x]?d[D.x]:D.x;D.isNull||(void 0!==y&&(u=Math.min(u,Math.abs(q-y))),y=q);D.zone=this.zones.length&&D.getZone()}this.closestPointRangePx=u},getValidPoints:function(a,b){var c=this.chart;return d(a||this.points||[],function(a){return b&& +!c.isInsidePlot(a.plotX,a.plotY,c.inverted)?!1:!a.isNull})},setClip:function(a){var b=this.chart,c=this.options,d=b.renderer,f=b.inverted,e=this.clipBox,h=e||b.clipBox,l=this.sharedClipKey||["_sharedClip",a&&a.duration,a&&a.easing,h.height,c.xAxis,c.yAxis].join(),g=b[l],p=b[l+"m"];g||(a&&(h.width=0,b[l+"m"]=p=d.clipRect(-99,f?-b.plotLeft:-b.plotTop,99,f?b.chartWidth:b.chartHeight)),b[l]=g=d.clipRect(h),g.count={length:0});a&&!g.count[this.index]&&(g.count[this.index]=!0,g.count.length+=1);!1!==c.clip&& +(this.group.clip(a||e?g:b.clipRect),this.markerGroup.clip(p),this.sharedClipKey=l);a||(g.count[this.index]&&(delete g.count[this.index],--g.count.length),0===g.count.length&&l&&b[l]&&(e||(b[l]=b[l].destroy()),b[l+"m"]&&(b[l+"m"]=b[l+"m"].destroy())))},animate:function(a){var b=this.chart,c=A(this.options.animation),d;a?this.setClip(c):(d=this.sharedClipKey,(a=b[d])&&a.animate({width:b.plotSizeX},c),b[d+"m"]&&b[d+"m"].animate({width:b.plotSizeX+99},c),this.animate=null)},afterAnimate:function(){this.setClip(); +n(this,"afterAnimate")},drawPoints:function(){var a=this.points,b=this.chart,c,d,f,e,h=this.options.marker,l,g,r,n,k=this[this.specialGroup]||this.markerGroup,m=H(h.enabled,this.xAxis.isRadial?!0:null,this.closestPointRangePx>=2*h.radius);if(!1!==h.enabled||this._hasPointMarkers)for(d=0;dd&&b.shadow));h&&(h.startX=c.xMap,h.isArea=c.isArea)})},applyZones:function(){var a=this,b=this.chart,c=b.renderer, +d=this.zones,f,e,h=this.clips||[],l,g=this.graph,r=this.area,n=Math.max(b.chartWidth,b.chartHeight),k=this[(this.zoneAxis||"y")+"Axis"],m,q,w=b.inverted,z,y,B,v,D=!1;d.length&&(g||r)&&k&&void 0!==k.min&&(q=k.reversed,z=k.horiz,g&&g.hide(),r&&r.hide(),m=k.getExtremes(),u(d,function(d,p){f=q?z?b.plotWidth:0:z?0:k.toPixels(m.min);f=Math.min(Math.max(H(e,f),0),n);e=Math.min(Math.max(Math.round(k.toPixels(H(d.value,m.max),!0)),0),n);D&&(f=e=k.toPixels(m.max));y=Math.abs(f-e);B=Math.min(f,e);v=Math.max(f, +e);k.isXAxis?(l={x:w?v:B,y:0,width:y,height:n},z||(l.x=b.plotHeight-l.x)):(l={x:0,y:w?v:B,width:n,height:y},z&&(l.y=b.plotWidth-l.y));w&&c.isVML&&(l=k.isXAxis?{x:0,y:q?B:v,height:l.width,width:b.chartWidth}:{x:l.y-b.plotLeft-b.spacingBox.x,y:0,width:l.height,height:b.chartHeight});h[p]?h[p].animate(l):(h[p]=c.clipRect(l),g&&a["zone-graph-"+p].clip(h[p]),r&&a["zone-area-"+p].clip(h[p]));D=d.value>m.max}),this.clips=h)},invertGroups:function(a){function b(){u(["group","markerGroup"],function(b){c[b]&& +(d.renderer.isVML&&c[b].attr({width:c.yAxis.len,height:c.xAxis.len}),c[b].width=c.yAxis.len,c[b].height=c.xAxis.len,c[b].invert(a))})}var c=this,d=c.chart,f;c.xAxis&&(f=C(d,"resize",b),C(c,"destroy",f),b(a),c.invertGroups=b)},plotGroup:function(a,b,c,d,f){var e=this[a],h=!e;h&&(this[a]=e=this.chart.renderer.g().attr({zIndex:d||.1}).add(f));e.addClass("highcharts-"+b+" highcharts-series-"+this.index+" highcharts-"+this.type+"-series highcharts-color-"+this.colorIndex+" "+(this.options.className||""), +!0);e.attr({visibility:c})[h?"attr":"animate"](this.getPlotBox());return e},getPlotBox:function(){var a=this.chart,b=this.xAxis,c=this.yAxis;a.inverted&&(b=c,c=this.xAxis);return{translateX:b?b.left:a.plotLeft,translateY:c?c.top:a.plotTop,scaleX:1,scaleY:1}},render:function(){var a=this,b=a.chart,c,d=a.options,f=!!a.animate&&b.renderer.isSVG&&A(d.animation).duration,e=a.visible?"inherit":"hidden",h=d.zIndex,l=a.hasRendered,g=b.seriesGroup,r=b.inverted;c=a.plotGroup("group","series",e,h,g);a.markerGroup= +a.plotGroup("markerGroup","markers",e,h,g);f&&a.animate(!0);c.inverted=a.isCartesian?r:!1;a.drawGraph&&(a.drawGraph(),a.applyZones());a.drawDataLabels&&a.drawDataLabels();a.visible&&a.drawPoints();a.drawTracker&&!1!==a.options.enableMouseTracking&&a.drawTracker();a.invertGroups(r);!1===d.clip||a.sharedClipKey||l||c.clip(b.clipRect);f&&a.animate();l||(a.animationTimeout=z(function(){a.afterAnimate()},f));a.isDirty=!1;a.hasRendered=!0},redraw:function(){var a=this.chart,b=this.isDirty||this.isDirtyData, +c=this.group,d=this.xAxis,f=this.yAxis;c&&(a.inverted&&c.attr({width:a.plotWidth,height:a.plotHeight}),c.animate({translateX:H(d&&d.left,a.plotLeft),translateY:H(f&&f.top,a.plotTop)}));this.translate();this.render();b&&delete this.kdTree},kdAxisArray:["clientX","plotY"],searchPoint:function(a,b){var c=this.xAxis,d=this.yAxis,f=this.chart.inverted;return this.searchKDTree({clientX:f?c.len-a.chartY+c.pos:a.chartX-c.pos,plotY:f?d.len-a.chartX+d.pos:a.chartY-d.pos},b)},buildKDTree:function(){function a(c, +f,d){var e,h;if(h=c&&c.length)return e=b.kdAxisArray[f%d],c.sort(function(a,b){return a[e]-b[e]}),h=Math.floor(h/2),{point:c[h],left:a(c.slice(0,h),f+1,d),right:a(c.slice(h+1),f+1,d)}}this.buildingKdTree=!0;var b=this,c=-1p?"left":"right";k=0>p?"right":"left";b[n]&&(n=c(a,b[n],l+1,g),m=n[h]q;)m--;this.updateParallelArrays(k,"splice",m,0,0);this.updateParallelArrays(k,m);f&&k.name&&(f[q]=k.name);r.splice(m,0,a);p&&(this.data.splice(m,0,null),this.processData());"point"===h.legendType&&this.generatePoints();d&&(l[0]&&l[0].remove?l[0].remove(!1):(l.shift(),this.updateParallelArrays(k,"shift"),r.shift()));this.isDirtyData=this.isDirty=!0;c&&g.redraw(e)},removePoint:function(a,c,d){var e=this,h=e.data,g=h[a],k=e.points, +f=e.chart,r=function(){k&&k.length===h.length&&k.splice(a,1);h.splice(a,1);e.options.data.splice(a,1);e.updateParallelArrays(g||{series:e},"splice",a,1);g&&g.destroy();e.isDirty=!0;e.isDirtyData=!0;c&&f.redraw()};l(d,f);c=b(c,!0);g?g.firePointEvent("remove",null,r):r()},remove:function(a,c,d){function e(){h.destroy();l.isDirtyLegend=l.isDirtyBox=!0;l.linkSeries();b(a,!0)&&l.redraw(c)}var h=this,l=h.chart;!1!==d?u(h,"remove",null,e):e()},update:function(a,d){var e=this,h=e.chart,l=e.userOptions,g= +e.oldType||e.type,r=a.type||l.type||h.options.chart.type,f=H[g].prototype,n=["group","markerGroup","dataLabelsGroup"],m;if(Object.keys&&"data"===Object.keys(a).toString())return this.setData(a.data,d);if(r&&r!==g||void 0!==a.zIndex)n.length=0;k(n,function(a){n[a]=e[a];delete e[a]});a=c(l,{animation:!1,index:e.index,pointStart:e.xData[0]},{data:e.options.data},a);e.remove(!1,null,!1);for(m in f)e[m]=void 0;v(e,H[r||g].prototype);k(n,function(a){e[a]=n[a]});e.init(h,a);e.oldType=g;h.linkSeries();b(d, +!0)&&h.redraw(!1)}});v(G.prototype,{update:function(a,d){var e=this.chart;a=e.options[this.coll][this.options.index]=c(this.userOptions,a);this.destroy(!0);this.init(e,v(a,{events:void 0}));e.isDirtyBox=!0;b(d,!0)&&e.redraw()},remove:function(a){for(var c=this.chart,e=this.coll,h=this.series,l=h.length;l--;)h[l]&&h[l].remove(!1);q(c.axes,this);q(c[e],this);d(c.options[e])?c.options[e].splice(this.options.index,1):delete c.options[e];k(c[e],function(a,b){a.options.index=b});this.destroy();c.isDirtyBox= +!0;b(a,!0)&&c.redraw()},setTitle:function(a,b){this.update({title:a},b)},setCategories:function(a,b){this.update({categories:a},b)}})})(K);(function(a){var C=a.color,A=a.each,G=a.map,F=a.pick,m=a.Series,g=a.seriesType;g("area","line",{softThreshold:!1,threshold:0},{singleStacks:!1,getStackPoints:function(){var g=[],m=[],v=this.xAxis,u=this.yAxis,h=u.stacks[this.stackKey],e={},n=this.points,d=this.index,c=u.series,w=c.length,b,y=F(u.options.reversedStacks,!0)?1:-1,D;if(this.options.stacking){for(D= +0;Da&&v>g?(v=Math.max(a,g),h=2*g-v):vF&&h>g?(h=Math.max(F,g),v=2*g-h):h=Math.abs(e)&&.5a.closestPointRange*a.xAxis.transA, +d=a.borderWidth=k(g.borderWidth,d?0:1),c=a.yAxis,m=a.translatedThreshold=c.getThreshold(g.threshold),b=k(g.minPointLength,5),y=a.getColumnMetrics(),u=y.width,v=a.barW=Math.max(u,1+2*d),l=a.pointXOffset=y.offset;e.inverted&&(m-=.5);g.pointPadding&&(v=Math.ceil(v));q.prototype.translate.apply(a);G(a.points,function(d){var g=k(d.yBottom,m),h=999+Math.abs(g),h=Math.min(Math.max(-h,d.plotY),c.len+h),n=d.plotX+l,p=v,q=Math.min(h,g),w,y=Math.max(h,g)-q;Math.abs(y)b?g-b:m-(w?b:0));d.barX=n;d.pointWidth=u;d.tooltipPos=e.inverted?[c.len+c.pos-e.plotLeft-h,a.xAxis.len-n-p/2,y]:[n+p/2,h+c.pos-e.plotTop,y];d.shapeType="rect";d.shapeArgs=a.crispCol.apply(a,d.isNull?[n,m,p,0]:[n,q,p,y])})},getSymbol:a.noop,drawLegendSymbol:a.LegendSymbolMixin.drawRectangle,drawGraph:function(){this.group[this.dense?"addClass":"removeClass"]("highcharts-dense-data")},pointAttribs:function(a,e){var h=this.options,d,c=this.pointAttrToOptions||{}; +d=c.stroke||"borderColor";var k=c["stroke-width"]||"borderWidth",b=a&&a.color||this.color,m=a[d]||h[d]||this.color||b,q=a[k]||h[k]||this[k]||0,c=h.dashStyle;a&&this.zones.length&&(b=a.getZone(),b=a.options.color||b&&b.color||this.color);e&&(a=g(h.states[e],a.options.states&&a.options.states[e]||{}),e=a.brightness,b=a.color||void 0!==e&&A(b).brighten(a.brightness).get()||b,m=a[d]||m,q=a[k]||q,c=a.dashStyle||c);d={fill:b,stroke:m,"stroke-width":q};h.borderRadius&&(d.r=h.borderRadius);c&&(d.dashstyle= +c);return d},drawPoints:function(){var a=this,e=this.chart,k=a.options,d=e.renderer,c=k.animationLimit||250,q;G(a.points,function(b){var h=b.graphic;if(m(b.plotY)&&null!==b.y){q=b.shapeArgs;if(h)h[e.pointCountv;++v)u=k[v],a=2>v||2===v&&/%$/.test(u),k[v]=A(u,[g, +F,q,k[2]][v])+(a?m:0);k[3]>k[2]&&(k[3]=k[2]);return k}}})(K);(function(a){var C=a.addEvent,A=a.defined,G=a.each,F=a.extend,m=a.inArray,g=a.noop,k=a.pick,q=a.Point,v=a.Series,u=a.seriesType,h=a.setAnimation;u("pie","line",{center:[null,null],clip:!1,colorByPoint:!0,dataLabels:{distance:30,enabled:!0,formatter:function(){return this.point.isNull?void 0:this.point.name},x:0},ignoreHiddenPoint:!0,legendType:"point",marker:null,size:null,showInLegend:!1,slicedOffset:10,stickyTracking:!1,tooltip:{followPointer:!0}, +borderColor:"#ffffff",borderWidth:1,states:{hover:{brightness:.1,shadow:!1}}},{isCartesian:!1,requireSorting:!1,directTouch:!0,noSharedTooltip:!0,trackerGroups:["group","dataLabelsGroup"],axisTypes:[],pointAttribs:a.seriesTypes.column.prototype.pointAttribs,animate:function(a){var e=this,d=e.points,c=e.startAngleRad;a||(G(d,function(a){var b=a.graphic,d=a.shapeArgs;b&&(b.attr({r:a.startR||e.center[3]/2,start:c,end:c}),b.animate({r:d.r,start:d.start,end:d.end},e.options.animation))}),e.animate=null)}, +updateTotals:function(){var a,g=0,d=this.points,c=d.length,h,b=this.options.ignoreHiddenPoint;for(a=0;a1.5*Math.PI?m-=2*Math.PI:m<-Math.PI/2&&(m+=2*Math.PI);E.slicedTranslation={translateX:Math.round(Math.cos(m)*c),translateY:Math.round(Math.sin(m)*c)};h=Math.cos(m)*a[2]/2;r=Math.sin(m)*a[2]/2;E.tooltipPos=[a[0]+.7*h,a[1]+.7*r];E.half=m<-Math.PI/2||m>Math.PI/2?1:0;E.angle=m;b=Math.min(g,E.labelDistance/5);E.labelPos=[a[0]+h+Math.cos(m)*E.labelDistance, +a[1]+r+Math.sin(m)*E.labelDistance,a[0]+h+Math.cos(m)*b,a[1]+r+Math.sin(m)*b,a[0]+h,a[1]+r,0>E.labelDistance?"center":E.half?"right":"left",m]}},drawGraph:null,drawPoints:function(){var a=this,g=a.chart.renderer,d,c,h,b,k=a.options.shadow;k&&!a.shadowGroup&&(a.shadowGroup=g.g("shadow").add(a.group));G(a.points,function(e){if(!e.isNull){c=e.graphic;b=e.shapeArgs;d=e.getTranslate();var m=e.shadowGroup;k&&!m&&(m=e.shadowGroup=g.g("shadow").add(a.shadowGroup));m&&m.attr(d);h=a.pointAttribs(e,e.selected&& +"select");c?c.setRadialReference(a.center).attr(h).animate(F(b,d)):(e.graphic=c=g[e.shapeType](b).setRadialReference(a.center).attr(d).add(a.group),e.visible||c.attr({visibility:"hidden"}),c.attr(h).attr({"stroke-linejoin":"round"}).shadow(k,m));c.addClass(e.getClassName())}})},searchPoint:g,sortByAngle:function(a,g){a.sort(function(a,c){return void 0!==a.angle&&(c.angle-a.angle)*g})},drawLegendSymbol:a.LegendSymbolMixin.drawRectangle,getCenter:a.CenteredSeriesMixin.getCenter,getSymbol:g},{init:function(){q.prototype.init.apply(this, +arguments);var a=this,g;a.name=k(a.name,"Slice");g=function(d){a.slice("select"===d.type)};C(a,"select",g);C(a,"unselect",g);return a},isValid:function(){return a.isNumber(this.y,!0)&&0<=this.y},setVisible:function(a,g){var d=this,c=d.series,e=c.chart,b=c.options.ignoreHiddenPoint;g=k(g,b);a!==d.visible&&(d.visible=d.options.visible=a=void 0===a?!d.visible:a,c.options.data[m(d,c.data)]=d.options,G(["graphic","dataLabel","connector","shadowGroup"],function(b){if(d[b])d[b][a?"show":"hide"](!0)}),d.legendItem&& +e.legend.colorizeItem(d,a),a||"hover"!==d.state||d.setState(""),b&&(c.isDirty=!0),g&&e.redraw())},slice:function(a,g,d){var c=this.series;h(d,c.chart);k(g,!0);this.sliced=this.options.sliced=A(a)?a:!this.sliced;c.options.data[m(this,c.data)]=this.options;this.graphic.animate(this.getTranslate());this.shadowGroup&&this.shadowGroup.animate(this.getTranslate())},getTranslate:function(){return this.sliced?this.slicedTranslation:{translateX:0,translateY:0}},haloPath:function(a){var e=this.shapeArgs;return this.sliced|| +!this.visible?[]:this.series.chart.renderer.symbols.arc(e.x,e.y,e.r+a,e.r+a,{innerR:this.shapeArgs.r,start:e.start,end:e.end})}})})(K);(function(a){var C=a.addEvent,A=a.arrayMax,G=a.defined,F=a.each,m=a.extend,g=a.format,k=a.map,q=a.merge,v=a.noop,u=a.pick,h=a.relativeLength,e=a.Series,n=a.seriesTypes,d=a.stableSort;a.distribute=function(a,e){function b(a,b){return a.target-b.target}var c,g=!0,h=a,l=[],m;m=0;for(c=a.length;c--;)m+=a[c].size;if(m>e){d(a,function(a,b){return(b.rank||0)-(a.rank||0)}); +for(m=c=0;m<=e;)m+=a[c].size,c++;l=a.splice(c-1,a.length)}d(a,b);for(a=k(a,function(a){return{size:a.size,targets:[a.target]}});g;){for(c=a.length;c--;)g=a[c],m=(Math.min.apply(0,g.targets)+Math.max.apply(0,g.targets))/2,g.pos=Math.min(Math.max(0,m-g.size/2),e-g.size);c=a.length;for(g=!1;c--;)0a[c].pos&&(a[c-1].size+=a[c].size,a[c-1].targets=a[c-1].targets.concat(a[c].targets),a[c-1].pos+a[c-1].size>e&&(a[c-1].pos=e-a[c-1].size),a.splice(c,1),g=!0)}c=0;F(a,function(a){var b= +0;F(a.targets,function(){h[c].pos=a.pos+b;b+=h[c].size;c++})});h.push.apply(h,l);d(h,b)};e.prototype.drawDataLabels=function(){var c=this,d=c.options,b=d.dataLabels,e=c.points,h,k,l=c.hasRendered||0,m,r,n=u(b.defer,!!d.animation),v=c.chart.renderer;if(b.enabled||c._hasPointLabels)c.dlProcessOptions&&c.dlProcessOptions(b),r=c.plotGroup("dataLabelsGroup","data-labels",n&&!l?"hidden":"visible",b.zIndex||6),n&&(r.attr({opacity:+l}),l||C(c,"afterAnimate",function(){c.visible&&r.show(!0);r[d.animation? +"animate":"attr"]({opacity:1},{duration:200})})),k=b,F(e,function(e){var l,p=e.dataLabel,n,f,t=e.connector,w=!p,z;h=e.dlOptions||e.options&&e.options.dataLabels;if(l=u(h&&h.enabled,k.enabled)&&null!==e.y)b=q(k,h),n=e.getLabelConfig(),m=b.format?g(b.format,n):b.formatter.call(n,b),z=b.style,n=b.rotation,z.color=u(b.color,z.color,c.color,"#000000"),"contrast"===z.color&&(e.contrastColor=v.getContrast(e.color||c.color),z.color=b.inside||0>u(e.labelDistance,b.distance)||d.stacking?e.contrastColor:"#000000"), +d.cursor&&(z.cursor=d.cursor),f={fill:b.backgroundColor,stroke:b.borderColor,"stroke-width":b.borderWidth,r:b.borderRadius||0,rotation:n,padding:b.padding,zIndex:1},a.objectEach(f,function(a,b){void 0===a&&delete f[b]});!p||l&&G(m)?l&&G(m)&&(p?f.text=m:(p=e.dataLabel=v[n?"text":"label"](m,0,-9999,b.shape,null,null,b.useHTML,null,"data-label"),p.addClass("highcharts-data-label-color-"+e.colorIndex+" "+(b.className||"")+(b.useHTML?"highcharts-tracker":""))),p.attr(f),p.css(z).shadow(b.shadow),p.added|| +p.add(r),c.alignDataLabel(e,p,b,null,w)):(e.dataLabel=p=p.destroy(),t&&(e.connector=t.destroy()))})};e.prototype.alignDataLabel=function(a,d,b,e,g){var c=this.chart,h=c.inverted,k=u(a.plotX,-9999),r=u(a.plotY,-9999),n=d.getBBox(),q,p=b.rotation,w=b.align,v=this.visible&&(a.series.forceDL||c.isInsidePlot(k,Math.round(r),h)||e&&c.isInsidePlot(k,h?e.x+1:e.y+e.height-1,h)),y="justify"===u(b.overflow,"justify");if(v&&(q=b.style.fontSize,q=c.renderer.fontMetrics(q,d).b,e=m({x:h?c.plotWidth-r:k,y:Math.round(h? +c.plotHeight-k:r),width:0,height:0},e),m(b,{width:n.width,height:n.height}),p?(y=!1,k=c.renderer.rotCorr(q,p),k={x:e.x+b.x+e.width/2+k.x,y:e.y+b.y+{top:0,middle:.5,bottom:1}[b.verticalAlign]*e.height},d[g?"attr":"animate"](k).attr({align:w}),r=(p+720)%360,r=180r,"left"===w?k.y-=r?n.height:0:"center"===w?(k.x-=n.width/2,k.y-=n.height/2):"right"===w&&(k.x-=n.width,k.y-=r?0:n.height)):(d.align(b,null,e),k=d.alignAttr),y?a.isLabelJustified=this.justifyDataLabel(d,b,k,n,e,g):u(b.crop,!0)&&(v=c.isInsidePlot(k.x, +k.y)&&c.isInsidePlot(k.x+n.width,k.y+n.height)),b.shape&&!p))d[g?"attr":"animate"]({anchorX:h?c.plotWidth-a.plotY:a.plotX,anchorY:h?c.plotHeight-a.plotX:a.plotY});v||(d.attr({y:-9999}),d.placed=!1)};e.prototype.justifyDataLabel=function(a,d,b,e,g,h){var c=this.chart,k=d.align,m=d.verticalAlign,n,q,p=a.box?0:a.padding||0;n=b.x+p;0>n&&("right"===k?d.align="left":d.x=-n,q=!0);n=b.x+e.width-p;n>c.plotWidth&&("left"===k?d.align="right":d.x=c.plotWidth-n,q=!0);n=b.y+p;0>n&&("bottom"===m?d.verticalAlign= +"top":d.y=-n,q=!0);n=b.y+e.height-p;n>c.plotHeight&&("top"===m?d.verticalAlign="bottom":d.y=c.plotHeight-n,q=!0);q&&(a.placed=!h,a.align(d,null,g));return q};n.pie&&(n.pie.prototype.drawDataLabels=function(){var c=this,d=c.data,b,g=c.chart,h=c.options.dataLabels,k=u(h.connectorPadding,10),l=u(h.connectorWidth,1),m=g.plotWidth,r=g.plotHeight,n,q=c.center,p=q[2]/2,v=q[1],C,L,f,t,K=[[],[]],J,N,O,P,x=[0,0,0,0];c.visible&&(h.enabled||c._hasPointLabels)&&(F(d,function(a){a.dataLabel&&a.visible&&a.dataLabel.shortened&& +(a.dataLabel.attr({width:"auto"}).css({width:"auto",textOverflow:"clip"}),a.dataLabel.shortened=!1)}),e.prototype.drawDataLabels.apply(c),F(d,function(a){a.dataLabel&&a.visible&&(K[a.half].push(a),a.dataLabel._pos=null)}),F(K,function(d,e){var l,n,u=d.length,w=[],z;if(u)for(c.sortByAngle(d,e-.5),0b.bottom-2?l:N,e,b),C._attr={visibility:O,align:f[6]}, +C._pos={x:J+h.x+({left:k,right:-k}[f[6]]||0),y:N+h.y-10},f.x=J,f.y=N,L=C.getBBox().width,l=null,J-Lm-k&&(l=Math.round(J+L-m+k),x[1]=Math.max(l,x[1])),0>N-t/2?x[0]=Math.max(Math.round(-N+t/2),x[0]):N+t/2>r&&(x[2]=Math.max(Math.round(N+t/2-r),x[2])),C.sideOverflow=l}),0===A(x)||this.verifyDataLabelOverflow(x))&&(this.placeDataLabels(),l&&F(this.points,function(a){var b;n=a.connector;if((C=a.dataLabel)&&C._pos&&a.visible&&0u(this.translatedThreshold,l.yAxis.len)),n=u(b.inside,!!this.options.stacking);k&&(g=q(k),0>g.y&&(g.height+=g.y,g.y=0),k=g.y+g.height-l.yAxis.len,0a+d||g+kc+e||h+mthis.pointCount))},pan:function(a,b){var c=this,d=c.hoverPoints, +e;d&&k(d,function(a){a.setState()});k("xy"===b?[1,0]:[1],function(b){b=c[b?"xAxis":"yAxis"][0];var d=b.horiz,g=a[d?"chartX":"chartY"],d=d?"mouseDownX":"mouseDownY",h=c[d],f=(b.pointRange||0)/2,l=b.getExtremes(),k=b.toValue(h-g,!0)+f,f=b.toValue(h+b.len-g,!0)-f,m=f=g(m.minWidth,0)&&this.chartHeight>=g(m.minHeight,0)}).call(this)&&k.push(a._id)};C.prototype.currentOptions=function(g){function q(g,e,n,d){var c;a.objectEach(g,function(a,b){if(!d&&-1(.*?$)/);e&&e[1]&&(e='\x3cforeignObject x\x3d"0" y\x3d"0" width\x3d"'+b.chart.width+'" height\x3d"'+b.chart.height+'"\x3e\x3cbody xmlns\x3d"http://www.w3.org/1999/xhtml"\x3e'+e[1]+"\x3c/body\x3e\x3c/foreignObject\x3e",a=a.replace("\x3c/svg\x3e",e+"\x3c/svg\x3e"))}a=a.replace(/zIndex="[^"]+"/g,"").replace(/isShadow="[^"]+"/g,"").replace(/symbolName="[^"]+"/g,"").replace(/jQuery[0-9]+="[^"]+"/g,"").replace(/url\(("|")(\S+)("|")\)/g, +"url($2)").replace(/url\([^#]+#/g,"url(#").replace(/.*?$/,"\x3c/svg\x3e").replace(/(fill|stroke)="rgba\(([ 0-9]+,[ 0-9]+,[ 0-9]+),([ 0-9\.]+)\)"/g,'$1\x3d"rgb($2)" $1-opacity\x3d"$3"').replace(/ /g,"\u00a0").replace(/­/g,"\u00ad");return a=a.replace(//g,"\x3c$1title\x3e").replace(/height=([^" ]+)/g, +'height\x3d"$1"').replace(/width=([^" ]+)/g,'width\x3d"$1"').replace(/hc-svg-href="([^"]+)">/g,'xlink:href\x3d"$1"/\x3e').replace(/ id=([^" >]+)/g,' id\x3d"$1"').replace(/class=([^" >]+)/g,'class\x3d"$1"').replace(/ transform /g," ").replace(/:(path|rect)/g,"$1").replace(/style="([^"]+)"/g,function(a){return a.toLowerCase()})},getChartHTML:function(){return this.container.innerHTML},getSVG:function(a){var b,e,c,r,m,g=n(this.options,a);p.createElementNS||(p.createElementNS=function(a,b){return p.createElement(b)}); +e=t("div",null,{position:"absolute",top:"-9999em",width:this.chartWidth+"px",height:this.chartHeight+"px"},p.body);c=this.renderTo.style.width;m=this.renderTo.style.height;c=g.exporting.sourceWidth||g.chart.width||/px$/.test(c)&&parseInt(c,10)||600;m=g.exporting.sourceHeight||g.chart.height||/px$/.test(m)&&parseInt(m,10)||400;u(g.chart,{animation:!1,renderTo:e,forExport:!0,renderer:"SVGRenderer",width:c,height:m});g.exporting.enabled=!1;delete g.data;g.series=[];h(this.series,function(a){r=n(a.userOptions, +{animation:!1,enableMouseTracking:!1,showCheckbox:!1,visible:a.visible});r.isInternal||g.series.push(r)});h(this.axes,function(a){a.userOptions.internalKey||(a.userOptions.internalKey=f.uniqueKey())});b=new f.Chart(g,this.callback);a&&h(["xAxis","yAxis","series"],function(c){var d={};a[c]&&(d[c]=a[c],b.update(d))});h(this.axes,function(a){var c=f.find(b.axes,function(b){return b.options.internalKey===a.userOptions.internalKey}),d=a.getExtremes(),e=d.userMin,d=d.userMax;!c||void 0===e&&void 0===d|| +c.setExtremes(e,d,!0,!1)});c=b.getChartHTML();c=this.sanitizeSVG(c,g);g=null;b.destroy();B(e);return c},getSVGForExport:function(a,b){var e=this.options.exporting;return this.getSVG(n({chart:{borderRadius:0}},e.chartOptions,b,{exporting:{sourceWidth:a&&a.sourceWidth||e.sourceWidth,sourceHeight:a&&a.sourceHeight||e.sourceHeight}}))},exportChart:function(a,b){b=this.getSVGForExport(a,b);a=n(this.options.exporting,a);f.post(a.url,{filename:a.filename||"chart",type:a.type,width:a.width||0,scale:a.scale, +svg:b},a.formAttributes)},print:function(){var a=this,b=a.container,e=[],c=b.parentNode,f=p.body,m=f.childNodes,g=a.options.exporting.printMaxWidth,d,H;if(!a.isPrinting){a.isPrinting=!0;a.pointer.reset(null,0);E(a,"beforePrint");if(H=g&&a.chartWidth>g)d=[a.options.chart.width,void 0,!1],a.setSize(g,void 0,!1);h(m,function(a,b){1===a.nodeType&&(e[b]=a.style.display,a.style.display="none")});f.appendChild(b);D.focus();D.print();setTimeout(function(){c.appendChild(b);h(m,function(a,b){1===a.nodeType&& +(a.style.display=e[b])});a.isPrinting=!1;H&&a.setSize.apply(a,d);E(a,"afterPrint")},1E3)}},contextMenu:function(a,b,e,c,f,m,g){var d=this,r=d.options.navigation,k=d.chartWidth,q=d.chartHeight,n="cache-"+a,l=d[n],x=Math.max(f,m),y,z;l||(d[n]=l=t("div",{className:a},{position:"absolute",zIndex:1E3,padding:x+"px"},d.container),y=t("div",{className:"highcharts-menu"},null,l),v(y,u({MozBoxShadow:"3px 3px 10px #888",WebkitBoxShadow:"3px 3px 10px #888",boxShadow:"3px 3px 10px #888"},r.menuStyle)),z=function(){v(l, +{display:"none"});g&&g.setState(0);d.openMenu=!1},d.exportEvents.push(w(l,"mouseleave",function(){l.hideTimer=setTimeout(z,500)}),w(l,"mouseenter",function(){clearTimeout(l.hideTimer)}),w(p,"mouseup",function(b){d.pointer.inClass(b.target,a)||z()})),h(b,function(a){if(a){var b;a.separator?b=t("hr",null,null,y):(b=t("div",{className:"highcharts-menu-item",onclick:function(b){b&&b.stopPropagation();z();a.onclick&&a.onclick.apply(d,arguments)},innerHTML:a.text||d.options.lang[a.textKey]},null,y),b.onmouseover= +function(){v(this,r.menuItemHoverStyle)},b.onmouseout=function(){v(this,r.menuItemStyle)},v(b,u({cursor:"pointer"},r.menuItemStyle)));d.exportDivElements.push(b)}}),d.exportDivElements.push(y,l),d.exportMenuWidth=l.offsetWidth,d.exportMenuHeight=l.offsetHeight);b={display:"block"};e+d.exportMenuWidth>k?b.right=k-e-f-x+"px":b.left=e-x+"px";c+m+d.exportMenuHeight>q&&"top"!==g.alignOptions.verticalAlign?b.bottom=q-c-x+"px":b.top=c+m-x+"px";v(l,b);d.openMenu=!0},addButton:function(a){var b=this,e=b.renderer, +c=n(b.options.navigation.buttonOptions,a),f=c.onclick,m=c.menuItems,g,d,k=c.symbolSize||12;b.btnCount||(b.btnCount=0);b.exportDivElements||(b.exportDivElements=[],b.exportSVGElements=[]);if(!1!==c.enabled){var h=c.theme,q=h.states,p=q&&q.hover,q=q&&q.select,l;delete h.states;f?l=function(a){a.stopPropagation();f.call(b,a)}:m&&(l=function(){b.contextMenu(d.menuClassName,m,d.translateX,d.translateY,d.width,d.height,d);d.setState(2)});c.text&&c.symbol?h.paddingLeft=C(h.paddingLeft,25):c.text||u(h,{width:c.width, +height:c.height,padding:0});d=e.button(c.text,0,0,l,h,p,q).addClass(a.className).attr({"stroke-linecap":"round",title:b.options.lang[c._titleKey],zIndex:3});d.menuClassName=a.menuClassName||"highcharts-menu-"+b.btnCount++;c.symbol&&(g=e.symbol(c.symbol,c.symbolX-k/2,c.symbolY-k/2,k,k).addClass("highcharts-button-symbol").attr({zIndex:1}).add(d),g.attr({stroke:c.symbolStroke,fill:c.symbolFill,"stroke-width":c.symbolStrokeWidth||1}));d.add().align(u(c,{width:d.width,x:C(c.x,b.buttonOffset)}),!0,"spacingBox"); +b.buttonOffset+=(d.width+c.buttonSpacing)*("right"===c.align?-1:1);b.exportSVGElements.push(d,g)}},destroyExport:function(a){var b=a?a.target:this;a=b.exportSVGElements;var e=b.exportDivElements,c=b.exportEvents,f;a&&(h(a,function(a,c){a&&(a.onclick=a.ontouchstart=null,f="cache-"+a.menuClassName,b[f]&&delete b[f],b.exportSVGElements[c]=a.destroy())}),a.length=0);e&&(h(e,function(a,c){clearTimeout(a.hideTimer);I(a,"mouseleave");b.exportDivElements[c]=a.onmouseout=a.onmouseover=a.ontouchstart=a.onclick= +null;B(a)}),e.length=0);c&&(h(c,function(a){a()}),c.length=0)}});K.menu=function(a,b,e,c){return["M",a,b+2.5,"L",a+e,b+2.5,"M",a,b+c/2+.5,"L",a+e,b+c/2+.5,"M",a,b+c-1.5,"L",a+e,b+c-1.5]};A.prototype.renderExporting=function(){var a=this,b=a.options.exporting,e=b.buttons,c=a.isDirtyExporting||!a.exportSVGElements;a.buttonOffset=0;a.isDirtyExporting&&a.destroyExport();c&&!1!==b.enabled&&(a.exportEvents=[],F(e,function(b){a.addButton(b)}),a.isDirtyExporting=!1);w(a,"destroy",a.destroyExport)};A.prototype.callbacks.push(function(a){a.renderExporting(); +w(a,"redraw",a.renderExporting);h(["exporting","navigation"],function(b){a[b]={update:function(e,c){a.isDirtyExporting=!0;n(!0,a.options[b],e);C(c,!0)&&a.redraw()}}})})})(k)}); diff --git a/src/main/webapp/static/highcharts/themes/dark-blue.js b/src/main/webapp/static/highcharts/themes/dark-blue.js new file mode 100644 index 0000000000000000000000000000000000000000..36233322d5e76c7eef99450b48ca33e54048b9a5 --- /dev/null +++ b/src/main/webapp/static/highcharts/themes/dark-blue.js @@ -0,0 +1,317 @@ +/** + * @license Highcharts JS v5.0.12 (2017-05-24) + * + * (c) 2009-2017 Torstein Honsi + * + * License: www.highcharts.com/license + */ +'use strict'; +(function(factory) { + if (typeof module === 'object' && module.exports) { + module.exports = factory; + } else { + factory(Highcharts); + } +}(function(Highcharts) { + (function(Highcharts) { + /** + * (c) 2010-2017 Torstein Honsi + * + * License: www.highcharts.com/license + * + * Dark blue theme for Highcharts JS + * @author Torstein Honsi + */ + Highcharts.theme = { + colors: ['#DDDF0D', '#55BF3B', '#DF5353', '#7798BF', '#aaeeee', '#ff0066', '#eeaaee', + '#55BF3B', '#DF5353', '#7798BF', '#aaeeee' + ], + chart: { + backgroundColor: { + linearGradient: { + x1: 0, + y1: 0, + x2: 1, + y2: 1 + }, + stops: [ + [0, 'rgb(48, 48, 96)'], + [1, 'rgb(0, 0, 0)'] + ] + }, + borderColor: '#000000', + borderWidth: 2, + className: 'dark-container', + plotBackgroundColor: 'rgba(255, 255, 255, .1)', + plotBorderColor: '#CCCCCC', + plotBorderWidth: 1 + }, + title: { + style: { + color: '#C0C0C0', + font: 'bold 16px "Trebuchet MS", Verdana, sans-serif' + } + }, + subtitle: { + style: { + color: '#666666', + font: 'bold 12px "Trebuchet MS", Verdana, sans-serif' + } + }, + xAxis: { + gridLineColor: '#333333', + gridLineWidth: 1, + labels: { + style: { + color: '#A0A0A0' + } + }, + lineColor: '#A0A0A0', + tickColor: '#A0A0A0', + title: { + style: { + color: '#CCC', + fontWeight: 'bold', + fontSize: '12px', + fontFamily: 'Trebuchet MS, Verdana, sans-serif' + + } + } + }, + yAxis: { + gridLineColor: '#333333', + labels: { + style: { + color: '#A0A0A0' + } + }, + lineColor: '#A0A0A0', + minorTickInterval: null, + tickColor: '#A0A0A0', + tickWidth: 1, + title: { + style: { + color: '#CCC', + fontWeight: 'bold', + fontSize: '12px', + fontFamily: 'Trebuchet MS, Verdana, sans-serif' + } + } + }, + tooltip: { + backgroundColor: 'rgba(0, 0, 0, 0.75)', + style: { + color: '#F0F0F0' + } + }, + toolbar: { + itemStyle: { + color: 'silver' + } + }, + plotOptions: { + line: { + dataLabels: { + color: '#CCC' + }, + marker: { + lineColor: '#333' + } + }, + spline: { + marker: { + lineColor: '#333' + } + }, + scatter: { + marker: { + lineColor: '#333' + } + }, + candlestick: { + lineColor: 'white' + } + }, + legend: { + itemStyle: { + font: '9pt Trebuchet MS, Verdana, sans-serif', + color: '#A0A0A0' + }, + itemHoverStyle: { + color: '#FFF' + }, + itemHiddenStyle: { + color: '#444' + } + }, + credits: { + style: { + color: '#666' + } + }, + labels: { + style: { + color: '#CCC' + } + }, + + navigation: { + buttonOptions: { + symbolStroke: '#DDDDDD', + hoverSymbolStroke: '#FFFFFF', + theme: { + fill: { + linearGradient: { + x1: 0, + y1: 0, + x2: 0, + y2: 1 + }, + stops: [ + [0.4, '#606060'], + [0.6, '#333333'] + ] + }, + stroke: '#000000' + } + } + }, + + // scroll charts + rangeSelector: { + buttonTheme: { + fill: { + linearGradient: { + x1: 0, + y1: 0, + x2: 0, + y2: 1 + }, + stops: [ + [0.4, '#888'], + [0.6, '#555'] + ] + }, + stroke: '#000000', + style: { + color: '#CCC', + fontWeight: 'bold' + }, + states: { + hover: { + fill: { + linearGradient: { + x1: 0, + y1: 0, + x2: 0, + y2: 1 + }, + stops: [ + [0.4, '#BBB'], + [0.6, '#888'] + ] + }, + stroke: '#000000', + style: { + color: 'white' + } + }, + select: { + fill: { + linearGradient: { + x1: 0, + y1: 0, + x2: 0, + y2: 1 + }, + stops: [ + [0.1, '#000'], + [0.3, '#333'] + ] + }, + stroke: '#000000', + style: { + color: 'yellow' + } + } + } + }, + inputStyle: { + backgroundColor: '#333', + color: 'silver' + }, + labelStyle: { + color: 'silver' + } + }, + + navigator: { + handles: { + backgroundColor: '#666', + borderColor: '#AAA' + }, + outlineColor: '#CCC', + maskFill: 'rgba(16, 16, 16, 0.5)', + series: { + color: '#7798BF', + lineColor: '#A6C7ED' + } + }, + + scrollbar: { + barBackgroundColor: { + linearGradient: { + x1: 0, + y1: 0, + x2: 0, + y2: 1 + }, + stops: [ + [0.4, '#888'], + [0.6, '#555'] + ] + }, + barBorderColor: '#CCC', + buttonArrowColor: '#CCC', + buttonBackgroundColor: { + linearGradient: { + x1: 0, + y1: 0, + x2: 0, + y2: 1 + }, + stops: [ + [0.4, '#888'], + [0.6, '#555'] + ] + }, + buttonBorderColor: '#CCC', + rifleColor: '#FFF', + trackBackgroundColor: { + linearGradient: { + x1: 0, + y1: 0, + x2: 0, + y2: 1 + }, + stops: [ + [0, '#000'], + [1, '#333'] + ] + }, + trackBorderColor: '#666' + }, + + // special colors for some of the + legendBackgroundColor: 'rgba(0, 0, 0, 0.5)', + background2: 'rgb(35, 35, 70)', + dataLabelsColor: '#444', + textColor: '#C0C0C0', + maskColor: 'rgba(255,255,255,0.3)' + }; + + // Apply the theme + Highcharts.setOptions(Highcharts.theme); + + }(Highcharts)); +})); diff --git a/src/main/webapp/static/highcharts/themes/dark-green.js b/src/main/webapp/static/highcharts/themes/dark-green.js new file mode 100644 index 0000000000000000000000000000000000000000..f682192d2e46045deb782ccb4ba3e5dfe60c9f0f --- /dev/null +++ b/src/main/webapp/static/highcharts/themes/dark-green.js @@ -0,0 +1,314 @@ +/** + * @license Highcharts JS v5.0.12 (2017-05-24) + * + * (c) 2009-2017 Torstein Honsi + * + * License: www.highcharts.com/license + */ +'use strict'; +(function(factory) { + if (typeof module === 'object' && module.exports) { + module.exports = factory; + } else { + factory(Highcharts); + } +}(function(Highcharts) { + (function(Highcharts) { + /** + * (c) 2010-2017 Torstein Honsi + * + * License: www.highcharts.com/license + * + * Dark blue theme for Highcharts JS + * @author Torstein Honsi + */ + + Highcharts.theme = { + colors: ['#DDDF0D', '#55BF3B', '#DF5353', '#7798BF', '#aaeeee', '#ff0066', '#eeaaee', + '#55BF3B', '#DF5353', '#7798BF', '#aaeeee' + ], + chart: { + backgroundColor: { + linearGradient: [0, 0, 250, 500], + stops: [ + [0, 'rgb(48, 96, 48)'], + [1, 'rgb(0, 0, 0)'] + ] + }, + borderColor: '#000000', + borderWidth: 2, + className: 'dark-container', + plotBackgroundColor: 'rgba(255, 255, 255, .1)', + plotBorderColor: '#CCCCCC', + plotBorderWidth: 1 + }, + title: { + style: { + color: '#C0C0C0', + font: 'bold 16px "Trebuchet MS", Verdana, sans-serif' + } + }, + subtitle: { + style: { + color: '#666666', + font: 'bold 12px "Trebuchet MS", Verdana, sans-serif' + } + }, + xAxis: { + gridLineColor: '#333333', + gridLineWidth: 1, + labels: { + style: { + color: '#A0A0A0' + } + }, + lineColor: '#A0A0A0', + tickColor: '#A0A0A0', + title: { + style: { + color: '#CCC', + fontWeight: 'bold', + fontSize: '12px', + fontFamily: 'Trebuchet MS, Verdana, sans-serif' + + } + } + }, + yAxis: { + gridLineColor: '#333333', + labels: { + style: { + color: '#A0A0A0' + } + }, + lineColor: '#A0A0A0', + minorTickInterval: null, + tickColor: '#A0A0A0', + tickWidth: 1, + title: { + style: { + color: '#CCC', + fontWeight: 'bold', + fontSize: '12px', + fontFamily: 'Trebuchet MS, Verdana, sans-serif' + } + } + }, + tooltip: { + backgroundColor: 'rgba(0, 0, 0, 0.75)', + style: { + color: '#F0F0F0' + } + }, + toolbar: { + itemStyle: { + color: 'silver' + } + }, + plotOptions: { + line: { + dataLabels: { + color: '#CCC' + }, + marker: { + lineColor: '#333' + } + }, + spline: { + marker: { + lineColor: '#333' + } + }, + scatter: { + marker: { + lineColor: '#333' + } + }, + candlestick: { + lineColor: 'white' + } + }, + legend: { + itemStyle: { + font: '9pt Trebuchet MS, Verdana, sans-serif', + color: '#A0A0A0' + }, + itemHoverStyle: { + color: '#FFF' + }, + itemHiddenStyle: { + color: '#444' + } + }, + credits: { + style: { + color: '#666' + } + }, + labels: { + style: { + color: '#CCC' + } + }, + + + navigation: { + buttonOptions: { + symbolStroke: '#DDDDDD', + hoverSymbolStroke: '#FFFFFF', + theme: { + fill: { + linearGradient: { + x1: 0, + y1: 0, + x2: 0, + y2: 1 + }, + stops: [ + [0.4, '#606060'], + [0.6, '#333333'] + ] + }, + stroke: '#000000' + } + } + }, + + // scroll charts + rangeSelector: { + buttonTheme: { + fill: { + linearGradient: { + x1: 0, + y1: 0, + x2: 0, + y2: 1 + }, + stops: [ + [0.4, '#888'], + [0.6, '#555'] + ] + }, + stroke: '#000000', + style: { + color: '#CCC', + fontWeight: 'bold' + }, + states: { + hover: { + fill: { + linearGradient: { + x1: 0, + y1: 0, + x2: 0, + y2: 1 + }, + stops: [ + [0.4, '#BBB'], + [0.6, '#888'] + ] + }, + stroke: '#000000', + style: { + color: 'white' + } + }, + select: { + fill: { + linearGradient: { + x1: 0, + y1: 0, + x2: 0, + y2: 1 + }, + stops: [ + [0.1, '#000'], + [0.3, '#333'] + ] + }, + stroke: '#000000', + style: { + color: 'yellow' + } + } + } + }, + inputStyle: { + backgroundColor: '#333', + color: 'silver' + }, + labelStyle: { + color: 'silver' + } + }, + + navigator: { + handles: { + backgroundColor: '#666', + borderColor: '#AAA' + }, + outlineColor: '#CCC', + maskFill: 'rgba(16, 16, 16, 0.5)', + series: { + color: '#7798BF', + lineColor: '#A6C7ED' + } + }, + + scrollbar: { + barBackgroundColor: { + linearGradient: { + x1: 0, + y1: 0, + x2: 0, + y2: 1 + }, + stops: [ + [0.4, '#888'], + [0.6, '#555'] + ] + }, + barBorderColor: '#CCC', + buttonArrowColor: '#CCC', + buttonBackgroundColor: { + linearGradient: { + x1: 0, + y1: 0, + x2: 0, + y2: 1 + }, + stops: [ + [0.4, '#888'], + [0.6, '#555'] + ] + }, + buttonBorderColor: '#CCC', + rifleColor: '#FFF', + trackBackgroundColor: { + linearGradient: { + x1: 0, + y1: 0, + x2: 0, + y2: 1 + }, + stops: [ + [0, '#000'], + [1, '#333'] + ] + }, + trackBorderColor: '#666' + }, + + // special colors for some of the + legendBackgroundColor: 'rgba(0, 0, 0, 0.5)', + background2: 'rgb(35, 35, 70)', + dataLabelsColor: '#444', + textColor: '#C0C0C0', + maskColor: 'rgba(255,255,255,0.3)' + }; + + // Apply the theme + Highcharts.setOptions(Highcharts.theme); + + }(Highcharts)); +})); diff --git a/src/main/webapp/static/highcharts/themes/dark-unica.js b/src/main/webapp/static/highcharts/themes/dark-unica.js new file mode 100644 index 0000000000000000000000000000000000000000..cfe27850e53e375e846c0c0944e65155e22b221f --- /dev/null +++ b/src/main/webapp/static/highcharts/themes/dark-unica.js @@ -0,0 +1,243 @@ +/** + * @license Highcharts JS v5.0.12 (2017-05-24) + * + * (c) 2009-2017 Torstein Honsi + * + * License: www.highcharts.com/license + */ +'use strict'; +(function(factory) { + if (typeof module === 'object' && module.exports) { + module.exports = factory; + } else { + factory(Highcharts); + } +}(function(Highcharts) { + (function(Highcharts) { + /** + * (c) 2010-2017 Torstein Honsi + * + * License: www.highcharts.com/license + * + * Dark theme for Highcharts JS + * @author Torstein Honsi + */ + + /* global document */ + // Load the fonts + Highcharts.createElement('link', { + href: 'https://fonts.googleapis.com/css?family=Unica+One', + rel: 'stylesheet', + type: 'text/css' + }, null, document.getElementsByTagName('head')[0]); + + Highcharts.theme = { + colors: ['#2b908f', '#90ee7e', '#f45b5b', '#7798BF', '#aaeeee', '#ff0066', '#eeaaee', + '#55BF3B', '#DF5353', '#7798BF', '#aaeeee' + ], + chart: { + backgroundColor: { + linearGradient: { + x1: 0, + y1: 0, + x2: 1, + y2: 1 + }, + stops: [ + [0, '#2a2a2b'], + [1, '#3e3e40'] + ] + }, + style: { + fontFamily: '\'Unica One\', sans-serif' + }, + plotBorderColor: '#606063' + }, + title: { + style: { + color: '#E0E0E3', + textTransform: 'uppercase', + fontSize: '20px' + } + }, + subtitle: { + style: { + color: '#E0E0E3', + textTransform: 'uppercase' + } + }, + xAxis: { + gridLineColor: '#707073', + labels: { + style: { + color: '#E0E0E3' + } + }, + lineColor: '#707073', + minorGridLineColor: '#505053', + tickColor: '#707073', + title: { + style: { + color: '#A0A0A3' + + } + } + }, + yAxis: { + gridLineColor: '#707073', + labels: { + style: { + color: '#E0E0E3' + } + }, + lineColor: '#707073', + minorGridLineColor: '#505053', + tickColor: '#707073', + tickWidth: 1, + title: { + style: { + color: '#A0A0A3' + } + } + }, + tooltip: { + backgroundColor: 'rgba(0, 0, 0, 0.85)', + style: { + color: '#F0F0F0' + } + }, + plotOptions: { + series: { + dataLabels: { + color: '#B0B0B3' + }, + marker: { + lineColor: '#333' + } + }, + boxplot: { + fillColor: '#505053' + }, + candlestick: { + lineColor: 'white' + }, + errorbar: { + color: 'white' + } + }, + legend: { + itemStyle: { + color: '#E0E0E3' + }, + itemHoverStyle: { + color: '#FFF' + }, + itemHiddenStyle: { + color: '#606063' + } + }, + credits: { + style: { + color: '#666' + } + }, + labels: { + style: { + color: '#707073' + } + }, + + drilldown: { + activeAxisLabelStyle: { + color: '#F0F0F3' + }, + activeDataLabelStyle: { + color: '#F0F0F3' + } + }, + + navigation: { + buttonOptions: { + symbolStroke: '#DDDDDD', + theme: { + fill: '#505053' + } + } + }, + + // scroll charts + rangeSelector: { + buttonTheme: { + fill: '#505053', + stroke: '#000000', + style: { + color: '#CCC' + }, + states: { + hover: { + fill: '#707073', + stroke: '#000000', + style: { + color: 'white' + } + }, + select: { + fill: '#000003', + stroke: '#000000', + style: { + color: 'white' + } + } + } + }, + inputBoxBorderColor: '#505053', + inputStyle: { + backgroundColor: '#333', + color: 'silver' + }, + labelStyle: { + color: 'silver' + } + }, + + navigator: { + handles: { + backgroundColor: '#666', + borderColor: '#AAA' + }, + outlineColor: '#CCC', + maskFill: 'rgba(255,255,255,0.1)', + series: { + color: '#7798BF', + lineColor: '#A6C7ED' + }, + xAxis: { + gridLineColor: '#505053' + } + }, + + scrollbar: { + barBackgroundColor: '#808083', + barBorderColor: '#808083', + buttonArrowColor: '#CCC', + buttonBackgroundColor: '#606063', + buttonBorderColor: '#606063', + rifleColor: '#FFF', + trackBackgroundColor: '#404043', + trackBorderColor: '#404043' + }, + + // special colors for some of the + legendBackgroundColor: 'rgba(0, 0, 0, 0.5)', + background2: '#505053', + dataLabelsColor: '#B0B0B3', + textColor: '#C0C0C0', + contrastTextColor: '#F0F0F3', + maskColor: 'rgba(255,255,255,0.3)' + }; + + // Apply the theme + Highcharts.setOptions(Highcharts.theme); + + }(Highcharts)); +})); diff --git a/src/main/webapp/static/highcharts/themes/gray.js b/src/main/webapp/static/highcharts/themes/gray.js new file mode 100644 index 0000000000000000000000000000000000000000..63f4fa289cf92b7a5f9d43925e6c29efcb5f0a0d --- /dev/null +++ b/src/main/webapp/static/highcharts/themes/gray.js @@ -0,0 +1,326 @@ +/** + * @license Highcharts JS v5.0.12 (2017-05-24) + * + * (c) 2009-2017 Torstein Honsi + * + * License: www.highcharts.com/license + */ +'use strict'; +(function(factory) { + if (typeof module === 'object' && module.exports) { + module.exports = factory; + } else { + factory(Highcharts); + } +}(function(Highcharts) { + (function(Highcharts) { + /** + * (c) 2010-2017 Torstein Honsi + * + * License: www.highcharts.com/license + * + * Gray theme for Highcharts JS + * @author Torstein Honsi + */ + + Highcharts.theme = { + colors: ['#DDDF0D', '#7798BF', '#55BF3B', '#DF5353', '#aaeeee', '#ff0066', '#eeaaee', + '#55BF3B', '#DF5353', '#7798BF', '#aaeeee' + ], + chart: { + backgroundColor: { + linearGradient: { + x1: 0, + y1: 0, + x2: 0, + y2: 1 + }, + stops: [ + [0, 'rgb(96, 96, 96)'], + [1, 'rgb(16, 16, 16)'] + ] + }, + borderWidth: 0, + borderRadius: 0, + plotBackgroundColor: null, + plotShadow: false, + plotBorderWidth: 0 + }, + title: { + style: { + color: '#FFF', + font: '16px Lucida Grande, Lucida Sans Unicode, Verdana, Arial, Helvetica, sans-serif' + } + }, + subtitle: { + style: { + color: '#DDD', + font: '12px Lucida Grande, Lucida Sans Unicode, Verdana, Arial, Helvetica, sans-serif' + } + }, + xAxis: { + gridLineWidth: 0, + lineColor: '#999', + tickColor: '#999', + labels: { + style: { + color: '#999', + fontWeight: 'bold' + } + }, + title: { + style: { + color: '#AAA', + font: 'bold 12px Lucida Grande, Lucida Sans Unicode, Verdana, Arial, Helvetica, sans-serif' + } + } + }, + yAxis: { + alternateGridColor: null, + minorTickInterval: null, + gridLineColor: 'rgba(255, 255, 255, .1)', + minorGridLineColor: 'rgba(255,255,255,0.07)', + lineWidth: 0, + tickWidth: 0, + labels: { + style: { + color: '#999', + fontWeight: 'bold' + } + }, + title: { + style: { + color: '#AAA', + font: 'bold 12px Lucida Grande, Lucida Sans Unicode, Verdana, Arial, Helvetica, sans-serif' + } + } + }, + legend: { + itemStyle: { + color: '#CCC' + }, + itemHoverStyle: { + color: '#FFF' + }, + itemHiddenStyle: { + color: '#333' + } + }, + labels: { + style: { + color: '#CCC' + } + }, + tooltip: { + backgroundColor: { + linearGradient: { + x1: 0, + y1: 0, + x2: 0, + y2: 1 + }, + stops: [ + [0, 'rgba(96, 96, 96, .8)'], + [1, 'rgba(16, 16, 16, .8)'] + ] + }, + borderWidth: 0, + style: { + color: '#FFF' + } + }, + + + plotOptions: { + series: { + nullColor: '#444444' + }, + line: { + dataLabels: { + color: '#CCC' + }, + marker: { + lineColor: '#333' + } + }, + spline: { + marker: { + lineColor: '#333' + } + }, + scatter: { + marker: { + lineColor: '#333' + } + }, + candlestick: { + lineColor: 'white' + } + }, + + toolbar: { + itemStyle: { + color: '#CCC' + } + }, + + navigation: { + buttonOptions: { + symbolStroke: '#DDDDDD', + hoverSymbolStroke: '#FFFFFF', + theme: { + fill: { + linearGradient: { + x1: 0, + y1: 0, + x2: 0, + y2: 1 + }, + stops: [ + [0.4, '#606060'], + [0.6, '#333333'] + ] + }, + stroke: '#000000' + } + } + }, + + // scroll charts + rangeSelector: { + buttonTheme: { + fill: { + linearGradient: { + x1: 0, + y1: 0, + x2: 0, + y2: 1 + }, + stops: [ + [0.4, '#888'], + [0.6, '#555'] + ] + }, + stroke: '#000000', + style: { + color: '#CCC', + fontWeight: 'bold' + }, + states: { + hover: { + fill: { + linearGradient: { + x1: 0, + y1: 0, + x2: 0, + y2: 1 + }, + stops: [ + [0.4, '#BBB'], + [0.6, '#888'] + ] + }, + stroke: '#000000', + style: { + color: 'white' + } + }, + select: { + fill: { + linearGradient: { + x1: 0, + y1: 0, + x2: 0, + y2: 1 + }, + stops: [ + [0.1, '#000'], + [0.3, '#333'] + ] + }, + stroke: '#000000', + style: { + color: 'yellow' + } + } + } + }, + inputStyle: { + backgroundColor: '#333', + color: 'silver' + }, + labelStyle: { + color: 'silver' + } + }, + + navigator: { + handles: { + backgroundColor: '#666', + borderColor: '#AAA' + }, + outlineColor: '#CCC', + maskFill: 'rgba(16, 16, 16, 0.5)', + series: { + color: '#7798BF', + lineColor: '#A6C7ED' + } + }, + + scrollbar: { + barBackgroundColor: { + linearGradient: { + x1: 0, + y1: 0, + x2: 0, + y2: 1 + }, + stops: [ + [0.4, '#888'], + [0.6, '#555'] + ] + }, + barBorderColor: '#CCC', + buttonArrowColor: '#CCC', + buttonBackgroundColor: { + linearGradient: { + x1: 0, + y1: 0, + x2: 0, + y2: 1 + }, + stops: [ + [0.4, '#888'], + [0.6, '#555'] + ] + }, + buttonBorderColor: '#CCC', + rifleColor: '#FFF', + trackBackgroundColor: { + linearGradient: { + x1: 0, + y1: 0, + x2: 0, + y2: 1 + }, + stops: [ + [0, '#000'], + [1, '#333'] + ] + }, + trackBorderColor: '#666' + }, + + // special colors for some of the demo examples + legendBackgroundColor: 'rgba(48, 48, 48, 0.8)', + background2: 'rgb(70, 70, 70)', + dataLabelsColor: '#444', + textColor: '#E0E0E0', + maskColor: 'rgba(255,255,255,0.3)' + }; + + // Apply the theme + Highcharts.setOptions(Highcharts.theme); + + }(Highcharts)); +})); diff --git a/src/main/webapp/static/highcharts/themes/grid-light.js b/src/main/webapp/static/highcharts/themes/grid-light.js new file mode 100644 index 0000000000000000000000000000000000000000..24d23cbdf1492c2171124d83f80f189e9cd44e8a --- /dev/null +++ b/src/main/webapp/static/highcharts/themes/grid-light.js @@ -0,0 +1,99 @@ +/** + * @license Highcharts JS v5.0.12 (2017-05-24) + * + * (c) 2009-2017 Torstein Honsi + * + * License: www.highcharts.com/license + */ +'use strict'; +(function(factory) { + if (typeof module === 'object' && module.exports) { + module.exports = factory; + } else { + factory(Highcharts); + } +}(function(Highcharts) { + (function(Highcharts) { + /** + * (c) 2010-2017 Torstein Honsi + * + * License: www.highcharts.com/license + * + * Grid-light theme for Highcharts JS + * @author Torstein Honsi + */ + + /* global document */ + // Load the fonts + Highcharts.createElement('link', { + href: 'https://fonts.googleapis.com/css?family=Dosis:400,600', + rel: 'stylesheet', + type: 'text/css' + }, null, document.getElementsByTagName('head')[0]); + + Highcharts.theme = { + colors: ['#7cb5ec', '#f7a35c', '#90ee7e', '#7798BF', '#aaeeee', '#ff0066', '#eeaaee', + '#55BF3B', '#DF5353', '#7798BF', '#aaeeee' + ], + chart: { + backgroundColor: null, + style: { + fontFamily: 'Dosis, sans-serif' + } + }, + title: { + style: { + fontSize: '16px', + fontWeight: 'bold', + textTransform: 'uppercase' + } + }, + tooltip: { + borderWidth: 0, + backgroundColor: 'rgba(219,219,216,0.8)', + shadow: false + }, + legend: { + itemStyle: { + fontWeight: 'bold', + fontSize: '13px' + } + }, + xAxis: { + gridLineWidth: 1, + labels: { + style: { + fontSize: '12px' + } + } + }, + yAxis: { + minorTickInterval: 'auto', + title: { + style: { + textTransform: 'uppercase' + } + }, + labels: { + style: { + fontSize: '12px' + } + } + }, + plotOptions: { + candlestick: { + lineColor: '#404048' + } + }, + + + // General + background2: '#F0F0EA' + + }; + + // Apply the theme + Highcharts.setOptions(Highcharts.theme); + + }(Highcharts)); +})); diff --git a/src/main/webapp/static/highcharts/themes/grid.js b/src/main/webapp/static/highcharts/themes/grid.js new file mode 100644 index 0000000000000000000000000000000000000000..3d2fe3b521af97ccb60803edd90db63cdcb1291a --- /dev/null +++ b/src/main/webapp/static/highcharts/themes/grid.js @@ -0,0 +1,131 @@ +/** + * @license Highcharts JS v5.0.12 (2017-05-24) + * + * (c) 2009-2017 Torstein Honsi + * + * License: www.highcharts.com/license + */ +'use strict'; +(function(factory) { + if (typeof module === 'object' && module.exports) { + module.exports = factory; + } else { + factory(Highcharts); + } +}(function(Highcharts) { + (function(Highcharts) { + /** + * (c) 2010-2017 Torstein Honsi + * + * License: www.highcharts.com/license + * + * Grid theme for Highcharts JS + * @author Torstein Honsi + */ + + Highcharts.theme = { + colors: ['#058DC7', '#50B432', '#ED561B', '#DDDF00', '#24CBE5', '#64E572', '#FF9655', '#FFF263', '#6AF9C4'], + chart: { + backgroundColor: { + linearGradient: { + x1: 0, + y1: 0, + x2: 1, + y2: 1 + }, + stops: [ + [0, 'rgb(255, 255, 255)'], + [1, 'rgb(240, 240, 255)'] + ] + }, + borderWidth: 2, + plotBackgroundColor: 'rgba(255, 255, 255, .9)', + plotShadow: true, + plotBorderWidth: 1 + }, + title: { + style: { + color: '#000', + font: 'bold 16px "Trebuchet MS", Verdana, sans-serif' + } + }, + subtitle: { + style: { + color: '#666666', + font: 'bold 12px "Trebuchet MS", Verdana, sans-serif' + } + }, + xAxis: { + gridLineWidth: 1, + lineColor: '#000', + tickColor: '#000', + labels: { + style: { + color: '#000', + font: '11px Trebuchet MS, Verdana, sans-serif' + } + }, + title: { + style: { + color: '#333', + fontWeight: 'bold', + fontSize: '12px', + fontFamily: 'Trebuchet MS, Verdana, sans-serif' + + } + } + }, + yAxis: { + minorTickInterval: 'auto', + lineColor: '#000', + lineWidth: 1, + tickWidth: 1, + tickColor: '#000', + labels: { + style: { + color: '#000', + font: '11px Trebuchet MS, Verdana, sans-serif' + } + }, + title: { + style: { + color: '#333', + fontWeight: 'bold', + fontSize: '12px', + fontFamily: 'Trebuchet MS, Verdana, sans-serif' + } + } + }, + legend: { + itemStyle: { + font: '9pt Trebuchet MS, Verdana, sans-serif', + color: 'black' + + }, + itemHoverStyle: { + color: '#039' + }, + itemHiddenStyle: { + color: 'gray' + } + }, + labels: { + style: { + color: '#99b' + } + }, + + navigation: { + buttonOptions: { + theme: { + stroke: '#CCCCCC' + } + } + } + }; + + // Apply the theme + Highcharts.setOptions(Highcharts.theme); + + }(Highcharts)); +})); diff --git a/src/main/webapp/static/highcharts/themes/sand-signika.js b/src/main/webapp/static/highcharts/themes/sand-signika.js new file mode 100644 index 0000000000000000000000000000000000000000..7f6ef93dafbbfcbae0f1da03426afaa30871fe5a --- /dev/null +++ b/src/main/webapp/static/highcharts/themes/sand-signika.js @@ -0,0 +1,129 @@ +/** + * @license Highcharts JS v5.0.12 (2017-05-24) + * + * (c) 2009-2017 Torstein Honsi + * + * License: www.highcharts.com/license + */ +'use strict'; +(function(factory) { + if (typeof module === 'object' && module.exports) { + module.exports = factory; + } else { + factory(Highcharts); + } +}(function(Highcharts) { + (function(Highcharts) { + /** + * (c) 2010-2017 Torstein Honsi + * + * License: www.highcharts.com/license + * + * Sand-Signika theme for Highcharts JS + * @author Torstein Honsi + */ + + /* global document */ + // Load the fonts + Highcharts.createElement('link', { + href: 'https://fonts.googleapis.com/css?family=Signika:400,700', + rel: 'stylesheet', + type: 'text/css' + }, null, document.getElementsByTagName('head')[0]); + + // Add the background image to the container + Highcharts.wrap(Highcharts.Chart.prototype, 'getContainer', function(proceed) { + proceed.call(this); + this.container.style.background = 'url(http://www.highcharts.com/samples/graphics/sand.png)'; + }); + + + Highcharts.theme = { + colors: ['#f45b5b', '#8085e9', '#8d4654', '#7798BF', '#aaeeee', '#ff0066', '#eeaaee', + '#55BF3B', '#DF5353', '#7798BF', '#aaeeee' + ], + chart: { + backgroundColor: null, + style: { + fontFamily: 'Signika, serif' + } + }, + title: { + style: { + color: 'black', + fontSize: '16px', + fontWeight: 'bold' + } + }, + subtitle: { + style: { + color: 'black' + } + }, + tooltip: { + borderWidth: 0 + }, + legend: { + itemStyle: { + fontWeight: 'bold', + fontSize: '13px' + } + }, + xAxis: { + labels: { + style: { + color: '#6e6e70' + } + } + }, + yAxis: { + labels: { + style: { + color: '#6e6e70' + } + } + }, + plotOptions: { + series: { + shadow: true + }, + candlestick: { + lineColor: '#404048' + }, + map: { + shadow: false + } + }, + + // Highstock specific + navigator: { + xAxis: { + gridLineColor: '#D0D0D8' + } + }, + rangeSelector: { + buttonTheme: { + fill: 'white', + stroke: '#C0C0C8', + 'stroke-width': 1, + states: { + select: { + fill: '#D0D0D8' + } + } + } + }, + scrollbar: { + trackBorderColor: '#C0C0C8' + }, + + // General + background2: '#E0E0E8' + + }; + + // Apply the theme + Highcharts.setOptions(Highcharts.theme); + + }(Highcharts)); +})); diff --git a/src/main/webapp/static/highcharts/themes/skies.js b/src/main/webapp/static/highcharts/themes/skies.js new file mode 100644 index 0000000000000000000000000000000000000000..79878c1b225f303b5da1800d82d96c71e86ce72e --- /dev/null +++ b/src/main/webapp/static/highcharts/themes/skies.js @@ -0,0 +1,112 @@ +/** + * @license Highcharts JS v5.0.12 (2017-05-24) + * + * (c) 2009-2017 Torstein Honsi + * + * License: www.highcharts.com/license + */ +'use strict'; +(function(factory) { + if (typeof module === 'object' && module.exports) { + module.exports = factory; + } else { + factory(Highcharts); + } +}(function(Highcharts) { + (function(Highcharts) { + /** + * (c) 2010-2017 Torstein Honsi + * + * License: www.highcharts.com/license + * + * Skies theme for Highcharts JS + * @author Torstein Honsi + */ + + Highcharts.theme = { + colors: ['#514F78', '#42A07B', '#9B5E4A', '#72727F', '#1F949A', '#82914E', '#86777F', '#42A07B'], + chart: { + className: 'skies', + borderWidth: 0, + plotShadow: true, + plotBackgroundImage: 'http://www.highcharts.com/demo/gfx/skies.jpg', + plotBackgroundColor: { + linearGradient: [0, 0, 250, 500], + stops: [ + [0, 'rgba(255, 255, 255, 1)'], + [1, 'rgba(255, 255, 255, 0)'] + ] + }, + plotBorderWidth: 1 + }, + title: { + style: { + color: '#3E576F', + font: '16px Lucida Grande, Lucida Sans Unicode, Verdana, Arial, Helvetica, sans-serif' + } + }, + subtitle: { + style: { + color: '#6D869F', + font: '12px Lucida Grande, Lucida Sans Unicode, Verdana, Arial, Helvetica, sans-serif' + } + }, + xAxis: { + gridLineWidth: 0, + lineColor: '#C0D0E0', + tickColor: '#C0D0E0', + labels: { + style: { + color: '#666', + fontWeight: 'bold' + } + }, + title: { + style: { + color: '#666', + font: '12px Lucida Grande, Lucida Sans Unicode, Verdana, Arial, Helvetica, sans-serif' + } + } + }, + yAxis: { + alternateGridColor: 'rgba(255, 255, 255, .5)', + lineColor: '#C0D0E0', + tickColor: '#C0D0E0', + tickWidth: 1, + labels: { + style: { + color: '#666', + fontWeight: 'bold' + } + }, + title: { + style: { + color: '#666', + font: '12px Lucida Grande, Lucida Sans Unicode, Verdana, Arial, Helvetica, sans-serif' + } + } + }, + legend: { + itemStyle: { + font: '9pt Trebuchet MS, Verdana, sans-serif', + color: '#3E576F' + }, + itemHoverStyle: { + color: 'black' + }, + itemHiddenStyle: { + color: 'silver' + } + }, + labels: { + style: { + color: '#3E576F' + } + } + }; + + // Apply the theme + Highcharts.setOptions(Highcharts.theme); + + }(Highcharts)); +})); diff --git a/src/main/webapp/static/jquery.min.js b/src/main/webapp/static/jquery.min.js new file mode 100644 index 0000000000000000000000000000000000000000..0f60b7bd0d9c395e1748cc962810d2dee9bb9fc2 --- /dev/null +++ b/src/main/webapp/static/jquery.min.js @@ -0,0 +1,5 @@ +/*! jQuery v1.11.3 | (c) 2005, 2015 jQuery Foundation, Inc. | jquery.org/license */ +!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l="1.11.3",m=function(a,b){return new m.fn.init(a,b)},n=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,o=/^-ms-/,p=/-([\da-z])/gi,q=function(a,b){return b.toUpperCase()};m.fn=m.prototype={jquery:l,constructor:m,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=m.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return m.each(this,a,b)},map:function(a){return this.pushStack(m.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},m.extend=m.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||m.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(m.isPlainObject(c)||(b=m.isArray(c)))?(b?(b=!1,f=a&&m.isArray(a)?a:[]):f=a&&m.isPlainObject(a)?a:{},g[d]=m.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},m.extend({expando:"jQuery"+(l+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===m.type(a)},isArray:Array.isArray||function(a){return"array"===m.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){return!m.isArray(a)&&a-parseFloat(a)+1>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==m.type(a)||a.nodeType||m.isWindow(a))return!1;try{if(a.constructor&&!j.call(a,"constructor")&&!j.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(k.ownLast)for(b in a)return j.call(a,b);for(b in a);return void 0===b||j.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(b){b&&m.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(o,"ms-").replace(p,q)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=r(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(n,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(r(Object(a))?m.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(g)return g.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=r(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(f=a[b],b=a,a=f),m.isFunction(a)?(c=d.call(arguments,2),e=function(){return a.apply(b||this,c.concat(d.call(arguments)))},e.guid=a.guid=a.guid||m.guid++,e):void 0},now:function(){return+new Date},support:k}),m.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function r(a){var b="length"in a&&a.length,c=m.type(a);return"function"===c||m.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var s=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N=M.replace("w","w#"),O="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+N+"))|)"+L+"*\\]",P=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+O+")*)|.*)\\)|)",Q=new RegExp(L+"+","g"),R=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),S=new RegExp("^"+L+"*,"+L+"*"),T=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),U=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),V=new RegExp(P),W=new RegExp("^"+N+"$"),X={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M.replace("w","w*")+")"),ATTR:new RegExp("^"+O),PSEUDO:new RegExp("^"+P),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,aa=/[+~]/,ba=/'|\\/g,ca=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),da=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ea=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(fa){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],k=b.nodeType,"string"!=typeof a||!a||1!==k&&9!==k&&11!==k)return d;if(!e&&p){if(11!==k&&(f=_.exec(a)))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return H.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName)return H.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=1!==k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(ba,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+ra(o[l]);w=aa.test(a)&&pa(b.parentNode)||b,x=o.join(",")}if(x)try{return H.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function pa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=g.documentElement,e=g.defaultView,e&&e!==e.top&&(e.addEventListener?e.addEventListener("unload",ea,!1):e.attachEvent&&e.attachEvent("onunload",ea)),p=!f(g),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(g.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(g.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!g.getElementsByName||!g.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(g.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){var b=g.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",P)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===g||a.ownerDocument===v&&t(v,a)?-1:b===g||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,h=[a],i=[b];if(!e||!f)return a===g?-1:b===g?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?la(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},g):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ca,da),a[3]=(a[3]||a[4]||a[5]||"").replace(ca,da),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ca,da).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(Q," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(ca,da),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return W.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(ca,da).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:oa(function(){return[0]}),last:oa(function(a,b){return[b-1]}),eq:oa(function(a,b,c){return[0>c?c+b:c]}),even:oa(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:oa(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:oa(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:oa(function(a,b,c){for(var d=0>c?c+b:c;++db;b++)d+=a[b].value;return d}function sa(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function ta(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ua(a,b,c){for(var d=0,e=b.length;e>d;d++)ga(a,b[d],c);return c}function va(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function wa(a,b,c,d,e,f){return d&&!d[u]&&(d=wa(d)),e&&!e[u]&&(e=wa(e,f)),ia(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ua(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:va(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=va(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=va(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function xa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=sa(function(a){return a===b},h,!0),l=sa(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[sa(ta(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return wa(i>1&&ta(m),i>1&&ra(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&xa(a.slice(i,e)),f>e&&xa(a=a.slice(e)),f>e&&ra(a))}m.push(c)}return ta(m)}function ya(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=F.call(i));s=va(s)}H.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&ga.uniqueSort(i)}return k&&(w=v,j=t),r};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=xa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,ya(e,d)),f.selector=a}return f},i=ga.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(ca,da),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(ca,da),aa.test(j[0].type)&&pa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&ra(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,aa.test(a)&&pa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ja(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);m.find=s,m.expr=s.selectors,m.expr[":"]=m.expr.pseudos,m.unique=s.uniqueSort,m.text=s.getText,m.isXMLDoc=s.isXML,m.contains=s.contains;var t=m.expr.match.needsContext,u=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,v=/^.[^:#\[\.,]*$/;function w(a,b,c){if(m.isFunction(b))return m.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return m.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(v.test(b))return m.filter(b,a,c);b=m.filter(b,a)}return m.grep(a,function(a){return m.inArray(a,b)>=0!==c})}m.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?m.find.matchesSelector(d,a)?[d]:[]:m.find.matches(a,m.grep(b,function(a){return 1===a.nodeType}))},m.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(m(a).filter(function(){for(b=0;e>b;b++)if(m.contains(d[b],this))return!0}));for(b=0;e>b;b++)m.find(a,d[b],c);return c=this.pushStack(e>1?m.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(w(this,a||[],!1))},not:function(a){return this.pushStack(w(this,a||[],!0))},is:function(a){return!!w(this,"string"==typeof a&&t.test(a)?m(a):a||[],!1).length}});var x,y=a.document,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=m.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||x).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof m?b[0]:b,m.merge(this,m.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:y,!0)),u.test(c[1])&&m.isPlainObject(b))for(c in b)m.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}if(d=y.getElementById(c[2]),d&&d.parentNode){if(d.id!==c[2])return x.find(a);this.length=1,this[0]=d}return this.context=y,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):m.isFunction(a)?"undefined"!=typeof x.ready?x.ready(a):a(m):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),m.makeArray(a,this))};A.prototype=m.fn,x=m(y);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};m.extend({dir:function(a,b,c){var d=[],e=a[b];while(e&&9!==e.nodeType&&(void 0===c||1!==e.nodeType||!m(e).is(c)))1===e.nodeType&&d.push(e),e=e[b];return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),m.fn.extend({has:function(a){var b,c=m(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(m.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=t.test(a)||"string"!=typeof a?m(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&m.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?m.unique(f):f)},index:function(a){return a?"string"==typeof a?m.inArray(this[0],m(a)):m.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(m.unique(m.merge(this.get(),m(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}m.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return m.dir(a,"parentNode")},parentsUntil:function(a,b,c){return m.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return m.dir(a,"nextSibling")},prevAll:function(a){return m.dir(a,"previousSibling")},nextUntil:function(a,b,c){return m.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return m.dir(a,"previousSibling",c)},siblings:function(a){return m.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return m.sibling(a.firstChild)},contents:function(a){return m.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:m.merge([],a.childNodes)}},function(a,b){m.fn[a]=function(c,d){var e=m.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=m.filter(d,e)),this.length>1&&(C[a]||(e=m.unique(e)),B.test(a)&&(e=e.reverse())),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return m.each(a.match(E)||[],function(a,c){b[c]=!0}),b}m.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):m.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(c=a.memory&&l,d=!0,f=g||0,g=0,e=h.length,b=!0;h&&e>f;f++)if(h[f].apply(l[0],l[1])===!1&&a.stopOnFalse){c=!1;break}b=!1,h&&(i?i.length&&j(i.shift()):c?h=[]:k.disable())},k={add:function(){if(h){var d=h.length;!function f(b){m.each(b,function(b,c){var d=m.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&f(c)})}(arguments),b?e=h.length:c&&(g=d,j(c))}return this},remove:function(){return h&&m.each(arguments,function(a,c){var d;while((d=m.inArray(c,h,d))>-1)h.splice(d,1),b&&(e>=d&&e--,f>=d&&f--)}),this},has:function(a){return a?m.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],e=0,this},disable:function(){return h=i=c=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,c||k.disable(),this},locked:function(){return!i},fireWith:function(a,c){return!h||d&&!i||(c=c||[],c=[a,c.slice?c.slice():c],b?i.push(c):j(c)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!d}};return k},m.extend({Deferred:function(a){var b=[["resolve","done",m.Callbacks("once memory"),"resolved"],["reject","fail",m.Callbacks("once memory"),"rejected"],["notify","progress",m.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return m.Deferred(function(c){m.each(b,function(b,f){var g=m.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&m.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?m.extend(a,d):d}},e={};return d.pipe=d.then,m.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&m.isFunction(a.promise)?e:0,g=1===f?a:m.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&m.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;m.fn.ready=function(a){return m.ready.promise().done(a),this},m.extend({isReady:!1,readyWait:1,holdReady:function(a){a?m.readyWait++:m.ready(!0)},ready:function(a){if(a===!0?!--m.readyWait:!m.isReady){if(!y.body)return setTimeout(m.ready);m.isReady=!0,a!==!0&&--m.readyWait>0||(H.resolveWith(y,[m]),m.fn.triggerHandler&&(m(y).triggerHandler("ready"),m(y).off("ready")))}}});function I(){y.addEventListener?(y.removeEventListener("DOMContentLoaded",J,!1),a.removeEventListener("load",J,!1)):(y.detachEvent("onreadystatechange",J),a.detachEvent("onload",J))}function J(){(y.addEventListener||"load"===event.type||"complete"===y.readyState)&&(I(),m.ready())}m.ready.promise=function(b){if(!H)if(H=m.Deferred(),"complete"===y.readyState)setTimeout(m.ready);else if(y.addEventListener)y.addEventListener("DOMContentLoaded",J,!1),a.addEventListener("load",J,!1);else{y.attachEvent("onreadystatechange",J),a.attachEvent("onload",J);var c=!1;try{c=null==a.frameElement&&y.documentElement}catch(d){}c&&c.doScroll&&!function e(){if(!m.isReady){try{c.doScroll("left")}catch(a){return setTimeout(e,50)}I(),m.ready()}}()}return H.promise(b)};var K="undefined",L;for(L in m(k))break;k.ownLast="0"!==L,k.inlineBlockNeedsLayout=!1,m(function(){var a,b,c,d;c=y.getElementsByTagName("body")[0],c&&c.style&&(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),typeof b.style.zoom!==K&&(b.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",k.inlineBlockNeedsLayout=a=3===b.offsetWidth,a&&(c.style.zoom=1)),c.removeChild(d))}),function(){var a=y.createElement("div");if(null==k.deleteExpando){k.deleteExpando=!0;try{delete a.test}catch(b){k.deleteExpando=!1}}a=null}(),m.acceptData=function(a){var b=m.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b};var M=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,N=/([A-Z])/g;function O(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(N,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:M.test(c)?m.parseJSON(c):c}catch(e){}m.data(a,b,c)}else c=void 0}return c}function P(a){var b;for(b in a)if(("data"!==b||!m.isEmptyObject(a[b]))&&"toJSON"!==b)return!1; + +return!0}function Q(a,b,d,e){if(m.acceptData(a)){var f,g,h=m.expando,i=a.nodeType,j=i?m.cache:a,k=i?a[h]:a[h]&&h;if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||m.guid++:h),j[k]||(j[k]=i?{}:{toJSON:m.noop}),("object"==typeof b||"function"==typeof b)&&(e?j[k]=m.extend(j[k],b):j[k].data=m.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[m.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[m.camelCase(b)])):f=g,f}}function R(a,b,c){if(m.acceptData(a)){var d,e,f=a.nodeType,g=f?m.cache:a,h=f?a[m.expando]:m.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){m.isArray(b)?b=b.concat(m.map(b,m.camelCase)):b in d?b=[b]:(b=m.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!P(d):!m.isEmptyObject(d))return}(c||(delete g[h].data,P(g[h])))&&(f?m.cleanData([a],!0):k.deleteExpando||g!=g.window?delete g[h]:g[h]=null)}}}m.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?m.cache[a[m.expando]]:a[m.expando],!!a&&!P(a)},data:function(a,b,c){return Q(a,b,c)},removeData:function(a,b){return R(a,b)},_data:function(a,b,c){return Q(a,b,c,!0)},_removeData:function(a,b){return R(a,b,!0)}}),m.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=m.data(f),1===f.nodeType&&!m._data(f,"parsedAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=m.camelCase(d.slice(5)),O(f,d,e[d])));m._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){m.data(this,a)}):arguments.length>1?this.each(function(){m.data(this,a,b)}):f?O(f,a,m.data(f,a)):void 0},removeData:function(a){return this.each(function(){m.removeData(this,a)})}}),m.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=m._data(a,b),c&&(!d||m.isArray(c)?d=m._data(a,b,m.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=m.queue(a,b),d=c.length,e=c.shift(),f=m._queueHooks(a,b),g=function(){m.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return m._data(a,c)||m._data(a,c,{empty:m.Callbacks("once memory").add(function(){m._removeData(a,b+"queue"),m._removeData(a,c)})})}}),m.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.lengthh;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},W=/^(?:checkbox|radio)$/i;!function(){var a=y.createElement("input"),b=y.createElement("div"),c=y.createDocumentFragment();if(b.innerHTML="
                  a",k.leadingWhitespace=3===b.firstChild.nodeType,k.tbody=!b.getElementsByTagName("tbody").length,k.htmlSerialize=!!b.getElementsByTagName("link").length,k.html5Clone="<:nav>"!==y.createElement("nav").cloneNode(!0).outerHTML,a.type="checkbox",a.checked=!0,c.appendChild(a),k.appendChecked=a.checked,b.innerHTML="",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue,c.appendChild(b),b.innerHTML="",k.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,k.noCloneEvent=!0,b.attachEvent&&(b.attachEvent("onclick",function(){k.noCloneEvent=!1}),b.cloneNode(!0).click()),null==k.deleteExpando){k.deleteExpando=!0;try{delete b.test}catch(d){k.deleteExpando=!1}}}(),function(){var b,c,d=y.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(k[b+"Bubbles"]=c in a)||(d.setAttribute(c,"t"),k[b+"Bubbles"]=d.attributes[c].expando===!1);d=null}();var X=/^(?:input|select|textarea)$/i,Y=/^key/,Z=/^(?:mouse|pointer|contextmenu)|click/,$=/^(?:focusinfocus|focusoutblur)$/,_=/^([^.]*)(?:\.(.+)|)$/;function aa(){return!0}function ba(){return!1}function ca(){try{return y.activeElement}catch(a){}}m.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=m.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return typeof m===K||a&&m.event.triggered===a.type?void 0:m.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(E)||[""],h=b.length;while(h--)f=_.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=m.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=m.event.special[o]||{},l=m.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&m.expr.match.needsContext.test(e),namespace:p.join(".")},i),(n=g[o])||(n=g[o]=[],n.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?n.splice(n.delegateCount++,0,l):n.push(l),m.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m.hasData(a)&&m._data(a);if(r&&(k=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=_.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=m.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,n=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=n.length;while(f--)g=n[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(n.splice(f,1),g.selector&&n.delegateCount--,l.remove&&l.remove.call(a,g));i&&!n.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||m.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)m.event.remove(a,o+b[j],c,d,!0);m.isEmptyObject(k)&&(delete r.handle,m._removeData(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,l,n,o=[d||y],p=j.call(b,"type")?b.type:b,q=j.call(b,"namespace")?b.namespace.split("."):[];if(h=l=d=d||y,3!==d.nodeType&&8!==d.nodeType&&!$.test(p+m.event.triggered)&&(p.indexOf(".")>=0&&(q=p.split("."),p=q.shift(),q.sort()),g=p.indexOf(":")<0&&"on"+p,b=b[m.expando]?b:new m.Event(p,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=q.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:m.makeArray(c,[b]),k=m.event.special[p]||{},e||!k.trigger||k.trigger.apply(d,c)!==!1)){if(!e&&!k.noBubble&&!m.isWindow(d)){for(i=k.delegateType||p,$.test(i+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),l=h;l===(d.ownerDocument||y)&&o.push(l.defaultView||l.parentWindow||a)}n=0;while((h=o[n++])&&!b.isPropagationStopped())b.type=n>1?i:k.bindType||p,f=(m._data(h,"events")||{})[b.type]&&m._data(h,"handle"),f&&f.apply(h,c),f=g&&h[g],f&&f.apply&&m.acceptData(h)&&(b.result=f.apply(h,c),b.result===!1&&b.preventDefault());if(b.type=p,!e&&!b.isDefaultPrevented()&&(!k._default||k._default.apply(o.pop(),c)===!1)&&m.acceptData(d)&&g&&d[p]&&!m.isWindow(d)){l=d[g],l&&(d[g]=null),m.event.triggered=p;try{d[p]()}catch(r){}m.event.triggered=void 0,l&&(d[g]=l)}return b.result}},dispatch:function(a){a=m.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(m._data(this,"events")||{})[a.type]||[],k=m.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=m.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,g=0;while((e=f.handlers[g++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(e.namespace))&&(a.handleObj=e,a.data=e.data,c=((m.event.special[e.origType]||{}).handle||e.handler).apply(f.elem,i),void 0!==c&&(a.result=c)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(e=[],f=0;h>f;f++)d=b[f],c=d.selector+" ",void 0===e[c]&&(e[c]=d.needsContext?m(c,this).index(i)>=0:m.find(c,this,null,[i]).length),e[c]&&e.push(d);e.length&&g.push({elem:i,handlers:e})}return h]","i"),ha=/^\s+/,ia=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,ja=/<([\w:]+)/,ka=/\s*$/g,ra={option:[1,""],legend:[1,"
                  ","
                  "],area:[1,"",""],param:[1,"",""],thead:[1,"","
                  "],tr:[2,"","
                  "],col:[2,"","
                  "],td:[3,"","
                  "],_default:k.htmlSerialize?[0,"",""]:[1,"X
                  ","
                  "]},sa=da(y),ta=sa.appendChild(y.createElement("div"));ra.optgroup=ra.option,ra.tbody=ra.tfoot=ra.colgroup=ra.caption=ra.thead,ra.th=ra.td;function ua(a,b){var c,d,e=0,f=typeof a.getElementsByTagName!==K?a.getElementsByTagName(b||"*"):typeof a.querySelectorAll!==K?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||m.nodeName(d,b)?f.push(d):m.merge(f,ua(d,b));return void 0===b||b&&m.nodeName(a,b)?m.merge([a],f):f}function va(a){W.test(a.type)&&(a.defaultChecked=a.checked)}function wa(a,b){return m.nodeName(a,"table")&&m.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function xa(a){return a.type=(null!==m.find.attr(a,"type"))+"/"+a.type,a}function ya(a){var b=pa.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function za(a,b){for(var c,d=0;null!=(c=a[d]);d++)m._data(c,"globalEval",!b||m._data(b[d],"globalEval"))}function Aa(a,b){if(1===b.nodeType&&m.hasData(a)){var c,d,e,f=m._data(a),g=m._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)m.event.add(b,c,h[c][d])}g.data&&(g.data=m.extend({},g.data))}}function Ba(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!k.noCloneEvent&&b[m.expando]){e=m._data(b);for(d in e.events)m.removeEvent(b,d,e.handle);b.removeAttribute(m.expando)}"script"===c&&b.text!==a.text?(xa(b).text=a.text,ya(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),k.html5Clone&&a.innerHTML&&!m.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&W.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}}m.extend({clone:function(a,b,c){var d,e,f,g,h,i=m.contains(a.ownerDocument,a);if(k.html5Clone||m.isXMLDoc(a)||!ga.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(ta.innerHTML=a.outerHTML,ta.removeChild(f=ta.firstChild)),!(k.noCloneEvent&&k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||m.isXMLDoc(a)))for(d=ua(f),h=ua(a),g=0;null!=(e=h[g]);++g)d[g]&&Ba(e,d[g]);if(b)if(c)for(h=h||ua(a),d=d||ua(f),g=0;null!=(e=h[g]);g++)Aa(e,d[g]);else Aa(a,f);return d=ua(f,"script"),d.length>0&&za(d,!i&&ua(a,"script")),d=h=e=null,f},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,l,n=a.length,o=da(b),p=[],q=0;n>q;q++)if(f=a[q],f||0===f)if("object"===m.type(f))m.merge(p,f.nodeType?[f]:f);else if(la.test(f)){h=h||o.appendChild(b.createElement("div")),i=(ja.exec(f)||["",""])[1].toLowerCase(),l=ra[i]||ra._default,h.innerHTML=l[1]+f.replace(ia,"<$1>")+l[2],e=l[0];while(e--)h=h.lastChild;if(!k.leadingWhitespace&&ha.test(f)&&p.push(b.createTextNode(ha.exec(f)[0])),!k.tbody){f="table"!==i||ka.test(f)?""!==l[1]||ka.test(f)?0:h:h.firstChild,e=f&&f.childNodes.length;while(e--)m.nodeName(j=f.childNodes[e],"tbody")&&!j.childNodes.length&&f.removeChild(j)}m.merge(p,h.childNodes),h.textContent="";while(h.firstChild)h.removeChild(h.firstChild);h=o.lastChild}else p.push(b.createTextNode(f));h&&o.removeChild(h),k.appendChecked||m.grep(ua(p,"input"),va),q=0;while(f=p[q++])if((!d||-1===m.inArray(f,d))&&(g=m.contains(f.ownerDocument,f),h=ua(o.appendChild(f),"script"),g&&za(h),c)){e=0;while(f=h[e++])oa.test(f.type||"")&&c.push(f)}return h=null,o},cleanData:function(a,b){for(var d,e,f,g,h=0,i=m.expando,j=m.cache,l=k.deleteExpando,n=m.event.special;null!=(d=a[h]);h++)if((b||m.acceptData(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)n[e]?m.event.remove(d,e):m.removeEvent(d,e,g.handle);j[f]&&(delete j[f],l?delete d[i]:typeof d.removeAttribute!==K?d.removeAttribute(i):d[i]=null,c.push(f))}}}),m.fn.extend({text:function(a){return V(this,function(a){return void 0===a?m.text(this):this.empty().append((this[0]&&this[0].ownerDocument||y).createTextNode(a))},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wa(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wa(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?m.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||m.cleanData(ua(c)),c.parentNode&&(b&&m.contains(c.ownerDocument,c)&&za(ua(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&m.cleanData(ua(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&m.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return m.clone(this,a,b)})},html:function(a){return V(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(fa,""):void 0;if(!("string"!=typeof a||ma.test(a)||!k.htmlSerialize&&ga.test(a)||!k.leadingWhitespace&&ha.test(a)||ra[(ja.exec(a)||["",""])[1].toLowerCase()])){a=a.replace(ia,"<$1>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(m.cleanData(ua(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,m.cleanData(ua(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,n=this,o=l-1,p=a[0],q=m.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&na.test(p))return this.each(function(c){var d=n.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(i=m.buildFragment(a,this[0].ownerDocument,!1,this),c=i.firstChild,1===i.childNodes.length&&(i=c),c)){for(g=m.map(ua(i,"script"),xa),f=g.length;l>j;j++)d=i,j!==o&&(d=m.clone(d,!0,!0),f&&m.merge(g,ua(d,"script"))),b.call(this[j],d,j);if(f)for(h=g[g.length-1].ownerDocument,m.map(g,ya),j=0;f>j;j++)d=g[j],oa.test(d.type||"")&&!m._data(d,"globalEval")&&m.contains(h,d)&&(d.src?m._evalUrl&&m._evalUrl(d.src):m.globalEval((d.text||d.textContent||d.innerHTML||"").replace(qa,"")));i=c=null}return this}}),m.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){m.fn[a]=function(a){for(var c,d=0,e=[],g=m(a),h=g.length-1;h>=d;d++)c=d===h?this:this.clone(!0),m(g[d])[b](c),f.apply(e,c.get());return this.pushStack(e)}});var Ca,Da={};function Ea(b,c){var d,e=m(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:m.css(e[0],"display");return e.detach(),f}function Fa(a){var b=y,c=Da[a];return c||(c=Ea(a,b),"none"!==c&&c||(Ca=(Ca||m("