Commit d9122238 authored by 吕祺's avatar 吕祺 ⛹🏽

first

parents
Pipeline #4792 failed with stage
in 1 minute and 26 seconds
{
"presets": ["next/babel"],
"plugins": ["transform-remove-strict-mode"]
}
\ No newline at end of file
node_modules/
.next/
out/
\ No newline at end of file
module.exports = {
root: true,
env: {
browser: true,
node: true
},
parserOptions: {
parser: 'babel-eslint',
ecmaVersion: 6,
sourceType: "module",
ecmaFeatures:{
"jsx":true,
"experimentalObjectRestSpread":true,
"modules":true
}
},
extends: [
'plugin:prettier/recommended',
'prettier'
],
plugins: [
'prettier'
],
// add your custom rules here
rules: {
'nuxt/no-cjs-in-config': 'off',
"import/no-dynamic-require": 0,
"global-require": 0,
"prefer-rest-params": 0,
"no-unused-vars": [2, { "args": "none" }],
"import/no-extraneous-dependencies": 0,
"no-nested-ternary": 0,
"no-restricted-syntax": 0,
"indent": ["error", 2, { "SwitchCase": 1 }],
"no-plusplus": [2, { "allowForLoopAfterthoughts": true }],
"arrow-parens": [2, "always", { "requireForBlockBody": true }],
// "comma-dangle": [1, "never"],
"func-names": 0,
// "strict": [2, "global"],
"new-cap": [2, { "capIsNew": false, "newIsCapExceptions": ["connection", "message"] }],
// "no-console": 2,
"no-debugger": 2,
"no-underscore-dangle": 0,
"camelcase": 2,
"no-param-reassign": 0,
"no-bitwise": 0,
"dot-notation": [2, { "allowPattern": "^([a-z]+(_[a-z]+)+)|([_A-Z]+)$" }],
"array-bracket-spacing": 1,
"arrow-spacing": [2, { "before": true, "after": true }],
"generator-star-spacing": [2, "after"],
// "space-before-function-paren": [2, { "anonymous": "always", "named": "never" }],
"no-mixed-operators": [
"error",
{
"groups": [
["&", "|", "^", "~", "<<", ">>", ">>>"],
["==", "!=", "===", "!==", ">", ">=", "<", "<="],
["&&", "||"],
["in", "instanceof"]
]
}
],
"import/prefer-default-export": 0,
"class-methods-use-this": 0,
"no-template-curly-in-string": 0,
"no-empty": 0,
"no-global-assign": ["error", { "exceptions": ["onmessage"] }]
}
}
.next/
node_modules/
/npm-debug.log
.DS_Store
out/
.python-version
\ No newline at end of file
stages:
- build
- deploy
cache:
paths:
- out
- node_modules/
compile_articles_and_preview:
stage: build
# when: manual
environment:
name: release
only:
- master
script:
- yarn
- node utils/articleAggregate.js
- sh utils/imageCompress.sh
- sh utils/commit.sh
- npm run export
- rm -rf /home/gitlab-runner/deploy/cms/ficus/out #/home/gitlab-runner/deploy/official/out/
- cp -r out /home/gitlab-runner/deploy/cms/ficus/ #deploy/official
# - rm -r /home/gitlab-runner/deploy/official/out
# - cp -r out/ /home/gitlab-runner/deploy/official/
- echo "cms https://cmsadmin.gaorongvc.cn/ficus/admin"
# compress_images:
# stage: build
# # when: manual
# environment:
# name: release
# only:
# - master
# script:
# - yarn
# - sh utils/imageCompress.sh
# deploy:
# stage: deploy
# when: manual
# environment:
# name: release
# only:
# - master
# script:
# - yarn
# # - sh utils/imageCompress.sh
# - npm run export
# - rm -rf /home/gitlab-runner/deploy/cms/ficus/out #/home/gitlab-runner/deploy/official/out/
# - echo "预览页面已清除"
# - cp -r out /home/gitlab-runner/deploy/cms/ficus/ #deploy/official
# - /home/gitlab-runner/sh/ossutil64 cp -f out oss://gaorong-web/ -r
# preview:
# stage: deploy
# # when: manual
# environment:
# name: preview
# # artifacts:
# # name: 'package'
# # untracked: true
# # expire_in: 12 hours
# # paths:
# # - out
# script:
# - yarn
# # - sh utils/imageCompress.sh
# - npm run export
# - rm -rf /home/gitlab-runner/deploy/cms/official/out #/home/gitlab-runner/deploy/official/out/
# - cp -r out /home/gitlab-runner/deploy/cms/official/ #deploy/official
# # - rm -r /home/gitlab-runner/deploy/official/out
# # - cp -r out/ /home/gitlab-runner/deploy/official/
# - echo "预览网站:http://preview.gaorongvc.cn:9945/"
{
"semi": false,
"singleQuote": true,
"arrowParens": always
}
# 高榕官网项目 [![pipeline status](https://git.gaorongvc.cn/lq/official/badges/master/pipeline.svg)](https://git.gaorongvc.cn/lq/official/pipelines)
## 问题反馈
可在[此页面](https://git.gaorongvc.cn/lq/official/issues/new)添加issue并在[看板页](https://git.gaorongvc.cn/lq/official/-/boards)跟踪进展; 已经关闭的issue,如果检查后仍有问题,可以再次打开
提issue说明 https://git.gaorongvc.cn/lq/official/issues/3
### 点击交互测试
PC端,鼠标悬浮后是一个小手的就可以点击;移动端没有此提示
* 头部导航含左侧图标,手机端会是一个可点击的图标点开后出现一个可关闭弹窗
* 弹窗的关闭按钮,一般弹窗出现后只有这里可点击
* 投资企业页的官方网站可以点击
* 底部的语言切换、邮箱
* 首页案例切换右侧
* 了解更多按钮
* 投资企业页行业切换、案例logo
* 榕汇页中没有阅读更多标识的文章,点击弹窗简介弹窗
* 榕汇页、动态页、文章阅读页中的文章,点击跳转到对应文章
* 动态页搜索框
* 动态页阅读更多按钮
* 文章阅读页返回按钮,分享微博与邮箱按钮,微信按钮悬浮展示二维码不可点击
* 文章阅读页中的链接
* 首页3d旋转,拖动可左右旋转
### 屏幕宽度响应式测试:
针对不同屏幕宽度字体大小,布局等可能不一样,宽高比无法和设备一致,苹果手机的retina屏幕,会放大设备像素比相应的倍数
![cms图片2](resize.gif)
<br />
<br />
## 开发与运维
### 安装
项目目录下运行yarn 或者 npm install
### 运行
nvm use v16.20.0
开发测试: npm run dev, 访问 http://localhost:3000
部署:npm run export, 使用nextjs静态发布功能生成html等文件,产出目录在out, 提交代码或cms发布后全自动部署到阿里云,配置在.git-ci.yml。拷贝到阿里云对象存储空oss://gaorong-web ,并自动触发cdn刷新
手动发布:上线会提供预览环境,审阅后在[流水线](https://git.gaorongvc.cn/lq/official/pipelines)中打开对应项手动发布
发布问题:现在是增量更新,每次都往里面加内容的,文件越来越多所以有可能出现发布失败的情况,需要去把oss存储清空一下,清空时网站是打不开的,所以这种操作只能偶尔去做;发布是手动按钮,点进去可以retry重试
![重试按钮](retry.jpeg)
### CMS
cms访问需要代码库maintainer及以上权限,通过高榕gitlab认证访问,gitlab oauth认知应用需添加此回调地址 https://cmsadmin.gaorongvc.cn/static/admin/
测试改backend name 为test-repo,先export再用静态服务器运行(不能读取配置数据)
yamllint 语法检测 https://www.yamllint.com/
![cms图片](cms.png)
cms中以EN结尾的为对应中文的英文文案,支持markdown编辑,榕汇文章与动态可同步cms动态发布与更新,文章中图片会自动压缩
![cms图片2](cms2.png)
cms修改后,可进入流水线查看发布状态并手动上线 https://git.gaorongvc.cn/lq/official/pipelines
[添加文章示范](https://git.gaorongvc.cn/lq/official/wikis/%E5%AE%98%E7%BD%91%E6%96%87%E7%AB%A0%E5%BD%95%E5%85%A5markdown%E7%A4%BA%E8%8C%83)
[时间轴图片更新教程](https://git.gaorongvc.cn/lq/official/wikis/%E6%9B%B4%E6%96%B0%E6%97%B6%E9%97%B4%E8%BD%B4%E5%9B%BE%E7%89%87)
### 项目结构
#### components
通用组件,包含轮播图,文章,弹窗框等
#### content
是通过cms写入的配置文件,存放网页文案与图片信息,可以通过cms自动提交,也可以手动编辑提交,cms配置文件在static/admin/config.yml
#### pages
对应页面文件,包含基础样式,官网页面和错误页
#### static
存放字体,图片,通用脚本与netlify cms配置
#### utils
辅助脚本
#### .eslintrc.js .eslintignore
lint配置
#### .babelrc
babel自定义转码配置, 主要作用是移除代码中strict声明解决ie兼容性问题
#### postcss.config.js
样式文件兼容性处理
#### nextjs.config.js
nextjs配置文件
### 说明
* 使用git pull -r,避免使用merge保持提交历史的清晰
* 运行会出现点击头部导航会进入错误页的问题,需要手动添加html后缀,因为阿里云cdn只能使用静态html文件(有利于搜索优化),所以链接也使用html,静态生成的html没有问题
* 部分含图片的提交会触发Administrator的自动提交,描述为auto compress image,说明提交中的图片需要压缩
* 通常不需要做响应式处理转换rem,后面添加 /\* px \*/可以生成对应不同dpr的样式,添加 /\* no \*/不做任何转换
\ No newline at end of file
cms.png

23.4 KB

cms2.png

319 KB

.article-component-wrapper {
background: white;
float: left;
margin-left: 3%;
margin-bottom: 3%;
width: 30.3%;
cursor: pointer;
}
.modal-article .modal-wrapper {
padding: 40px 0; /* px */
}
.article-pic, .modal-article-pic {
width: 100%;
padding-bottom: 62.4%;
background-size: cover;
background-position: center;
}
.modal-article-pic {
padding-bottom: 43%;
margin-bottom: 32px; /* px */
}
.article-content-wrapper, .modal-article-content-wrapper {
position: relative;
}
.article-content-wrapper {
padding: 24px; /* px */
height: 220px; /* px */
}
.article-component-type {
position: absolute;
font-size: 14px; /* px */
font-weight: 500;
color: #A25641;
top: 16px; /* px */
}
.modal-article-content-wrapper .article-component-type {
top: 0;
margin-left: 48px; /* px */
}
.article-body-wrapper, .modal-article-body-wrapper {
position: relative;
top: 20px; /* px */
display: flex;
flex-direction: column;
justify-items: flex-start;
align-items: flex-start;
margin-bottom: 25px; /* px */
}
.article-body-wrapper {
height: 190px; /* px */
}
.article-title {
width: 100%;
font-size: 20px; /* px */
font-weight: 500;
line-height: 150%;
margin-bottom: 10px; /* px */
flex: none;
}
.modal-article-body-wrapper .article-title {
box-sizing: border-box;
padding: 8px 48px 25px 48px; /* px */
}
.modal-article-body-wrapper .article-date {
margin: 20px 48px 0 48px; /* px */
width: 100px; /* px */
}
.article-abstract {
color: #666;
font-size: 14px; /* px */
width: 100%;
line-height: 180%;
flex: auto;
overflow: hidden;
position: relative;
}
.modal-article-body-wrapper .article-abstract {
width: 100%;
box-sizing: border-box;
padding: 0 48px ; /* px */
font-size: 16px; /* px */
font-weight: 400;
}
.article-date {
flex: none;
margin-top: 20px; /* px */
color: #b3b3b3;
width: 100%;
}
.article-readmore {
float: right;
color: #A25641;
}
.article-line-wrapper a:first-child > .article-line-component-wrapper {
margin-left: 0;
margin-right: 3%;
}
@media screen and (max-width: 1200px) {
.article-component-wrapper {
width: 47%;
}
.article-title {
font-size: 18px; /* px */
}
}
@media screen and (max-width: 779px) {
.article-component-wrapper {
width: 97%;
margin-left: 3%;
margin-bottom: 32px;
}
.article-line-component-wrapper {
width: 100% !important;
margin-left: 0;
}
.article-title {
font-size: 16px; /* px */
}
}
\ No newline at end of file
import React from 'react'
import classnames from 'classnames'
/* eslint-disable no-unused-vars */
import Link from 'next/link'
import OverflowBox from 'overflowbox'
import Modal from '../Modal'
/* eslint-enable no-unused-vars */
import { yymmdd } from '../../utils/date'
import ronghuiPage from '../../content/ronghuiPage.md'
import './index.css'
export default class Article extends React.Component {
constructor(props) {
super(props)
this.state = {
showModal: false,
mounted: false
}
}
componentDidMount() {
this.setState({
mounted: true
})
}
renderContent() {
const {
attributes: { readMore, readMoreEN }
} = ronghuiPage
const { en, article, type, className, style } = this.props
const ronghuiReadMore =
type === 'article' && (en ? article.contentEN : article.content)
return (
<div
className={classnames({
'article-component-wrapper': true,
[className]: !!className
})}
onClick={(e) => this.openModal(true, e)}
style={style}
>
<div
className="article-pic"
style={{ backgroundImage: `url(${article.pic})` }}
></div>
<div className="article-content-wrapper">
{article.type && (
<div className="article-component-type">
{en === null ? '' : en ? article.typeEN : article.type}
</div>
)}
<div className="article-body-wrapper">
<div className="article-title">
{en === null ? '' : en ? article.titleEN : article.title}
</div>
<div className="article-abstract">
<OverflowBox
str={(en === null
? ''
: en
? article.abstractEN
: article.abstract
).replace(/\n/g, '')}
/>
</div>
<div className="article-date">
{yymmdd(new Date(article.createDate)).join('/')}
{ronghuiReadMore && (
<span className="article-readmore">
{en === null ? '' : en ? readMoreEN : readMore}
</span>
)}
</div>
</div>
</div>
</div>
)
}
openModal(p, e) {
e.stopPropagation()
this.setState({
showModal: p
})
}
render() {
const {
attributes: { readMore, readMoreEN }
} = ronghuiPage
const { en, article, type } = this.props
const { showModal, mounted } = this.state
const key = article.createDate.replace(/[^\d]/g, '')
const ronghuiReadMore =
type === 'article' && (en ? article.contentEN : article.content)
const ronghuiModal =
type === 'article' && (en ? !article.contentEN : !article.content)
return ronghuiModal ? (
<a style={{ display: 'block', color: 'black' }}>
{this.renderContent()}
{showModal && (
<Modal
className="modal-article"
onClose={(e) => {
this.openModal(null, e)
e.stopPropagation()
}}
>
<div className="modal-article-content-wrapper">
{article.type && (
<div className="article-component-type">
{en === null ? '' : en ? article.typeEN : article.type}
</div>
)}
<div className="modal-article-body-wrapper">
<div className="article-title">
{en === null ? '' : en ? article.titleEN : article.title}
</div>
<div
className="modal-article-pic"
style={{
backgroundImage: mounted ? `url(${article.pic})` : 'none'
}}
></div>
<div className="article-abstract">
{(en === null
? ''
: en
? article.abstractEN
: article.abstract
).replace(/\n/g, '')}
</div>
<div className="article-date">
{yymmdd(new Date(article.createDate)).join('/')}
{ronghuiReadMore && (
<span className="article-readmore">
{en === null ? '' : en ? readMoreEN : readMore}
</span>
)}
</div>
</div>
</div>
</Modal>
)}
</a>
) : (
<Link prefetch={false} href={`/post.html?t=${type}&d=${key}`}>
<a className="linka">{this.renderContent()}</a>
</Link>
)
}
}
.article-grid-wrapper {
margin-top: 3%;
margin-left: -3%;
}
.article-grid-wrapper::before, .article-grid-wrapper::after{
content: '';
display: block;
clear: both;
}
.article-grid-load-more {
border-top: solid 1px #d3d1d1;
border-bottom: solid 1px #d3d1d1;
text-align: center;
padding: 30px 0; /* px */
box-sizing: border-box;
cursor: pointer;
width: 100%;
color: #201714;
font-size: 16px; /* px */
font-weight: 500;
}
@media screen and (max-width: 780px) {
.article-grid-wrapper {
margin-top: 24px; /* px */
}
.article-grid-load-more {
padding: 22px 0; /* px */
}
}
\ No newline at end of file
import React from 'react'
import classnames from 'classnames'
import Article from '../Article'
import './index.css'
export default class ArticleGrid extends React.PureComponent {
static defaultProps = {
searchKey: ''
}
constructor(props) {
super(props)
const { articleList, en } = this.props
const articles = articleList.filter((a) =>
{
if(a.hide) return false
return en === null ? '' : en ? a.abstractEN : a.abstract
}
)
const showMoreBtn = articles.length > 6
this.state = {
num: showMoreBtn ? 6 : articles.length,
showMoreBtn,
articles
}
this.loadMore = this.loadMore.bind(this)
}
// getLength(en, articleList) {
// return articleList
// .filter((a) => (en === null ? '' : en ? a.abstractEN : ab.abstract))
// .reduce((sum, _) => sum + 1)
// }
componentWillReceiveProps(nextProps) {
if (
nextProps.articleList.length !== this.props.articleList.length ||
nextProps.en !== this.props.en
) {
const articles = nextProps.articleList.filter((a) =>
{
if(a.hide) return false
return nextProps.en === null ? '' : nextProps.en ? a.abstractEN : a.abstract
}
)
const showMoreBtn = articles.length > 6
this.setState({
num: showMoreBtn ? 6 : articles.length,
showMoreBtn,
articles
})
}
}
loadMore() {
const nextNum = this.state.num + 6
this.setState({
num: nextNum,
showMoreBtn: nextNum < this.state.articles.length
})
}
render() {
const { en, type, className, searchKey } = this.props
const { num, showMoreBtn, articles } = this.state
return (
<React.Fragment>
<div
className={classnames({
'article-grid-wrapper': true,
[className]: !!className
})}
>
{articles.slice(0, num).map((n) => {
const key = n.createDate.replace(/[^\d]/g, '')
return (
<Article key={key + searchKey} en={en} article={n} type={type} />
)
})}
</div>
{showMoreBtn && (
<div className="article-grid-load-more" onClick={this.loadMore}>
{en === null ? '' : en ? 'Load More' : '加载更多'}
</div>
)}
</React.Fragment>
)
}
}
.article-line-wrapper {
max-width: 824px; /* px */
width: 90%;
padding: 0 2%;
overflow: hidden;
margin: 48px auto; /* px */
}
.article-recommend-line {
display: inline-block;
margin-top: 0.8em;
border-top: solid 1px #d3d1d1; /* px */
opacity: .5;
width: 46%;
min-width: 30%;
flex: auto;
}
.article-recommend {
display: flex;
padding: 0;
font-size: 16px; /* px */
font-weight: 500;
box-sizing: border-box;
}
.article-recommend-text {
padding-left: 8px; /* px */
padding-right: 8px; /* px */
word-wrap: none;
word-break: keep-all;
box-sizing: border-box;
}
\ No newline at end of file
import React from 'react'
// eslint-disable-next-line no-unused-vars
import Article from '../Article'
import mediaQueryType from '../../utils/mediaQueryType'
import './index.css'
export default class ArticleLine extends React.PureComponent {
constructor(props) {
super(props)
this.state = {
num: 0,
width: 0
}
this.handleWindowResize = this.handleWindowResize.bind(this)
}
calcNum(type) {
if (type === 0)
return {
num: 2,
width: '95%'
}
else
return {
num: 2,
width: '47%'
}
}
handleWindowResize() {
const type = mediaQueryType(document.body.offsetWidth)
this.setState(this.calcNum(type))
}
componentWillMount() {
window.addEventListener('resize', this.handleWindowResize)
this.handleWindowResize()
}
componentWillUnmount() {
window.removeEventListener('resize', this.handleWindowResize)
}
render() {
const { en, type, articleList } = this.props
const { num, width } = this.state
if (type === 'article') {
return null
}
return (
<React.Fragment>
<div className="article-recommend article-line-wrapper">
<div className="article-recommend-line article-recommend-line-left"></div>
<span className="article-recommend-text">
{en ? 'Recommend' : '推荐阅读'}
</span>
<div className="article-recommend-line article-recommend-line-right"></div>
</div>
<div className="article-line-wrapper">
{articleList
.filter((article) => {
if (en) {
return article.abstractEN
}
return article.abstract
})
.slice(0, num)
.map((n) => {
const key = n.createDate.replace(/[^\d]/g, '')
return (
<Article
className="article-line-component-wrapper"
style={{ width }}
key={key}
en={en}
article={n}
type={type}
/>
)
})}
</div>
</React.Fragment>
)
}
}
import React from 'react'
import { getArr } from './util'
export default class Slice extends React.Component {
state = {
offset: 0,
isRolling: false,
prevDigit: 0,
}
componentDidMount = () => {
const { digit, height } = this.props
const offset = -digit * height
this.timer = setTimeout(() => {
this.setState({ offset, isRolling: true })
}, 100)
}
componentWillUnmount() {
clearTimeout(this.timer)
}
componentWillReceiveProps = nextProps => {
if (nextProps.digit !== this.props.digit) {
this.reset(this.props.digit)
//slice move in animation
const diff = nextProps.digit - this.props.digit
const offset =
diff > 0 ? -diff * this.props.height : -(diff + 10) * this.props.height
setTimeout(() => {
this.setState({ offset, isRolling: true })
}, 100)
}
}
reset = prevDigit => {
this.setState({ offset: 0, isRolling: false, prevDigit })
}
render() {
const { digit, width, height, delay } = this.props
const arr = getArr(this.state.prevDigit, digit)
return (
<div
className={`DigitRoll__Slice }`}
style={{
marginTop: this.state.offset + 'rem',
transition: this.state.isRolling ? `margin ${delay}s ease` : '',
}}
>
{arr.map((d, index) => (
<div
key={index}
className="DigitRoll__Cell"
style={{ height: height + 'rem', lineHeight: height + 'rem', width: width + 'em' }}
>
{d}
</div>
))}
</div>
)
}
}
\ No newline at end of file
.DigitRoll {
display: flex;
flex-direction: row-reverse;
overflow-y: hidden;
/* border: 1px solid; */
}
.DigitRoll__Slice {
display: flex;
flex-direction: column;
box-sizing: border-box;
}
.DigitRoll__Cell {
flex: none;
display: flex;
justify-content: center;
align-items: center;
box-sizing: border-box;
}
div.DigitRoll__Divider {
font-size: 16px; /* px */
padding-left: 2px; /* px */
padding-right: 2px; /* px */
display: flex;
align-items: center;
align-items: flex-end;
padding-bottom: 0.04rem;
padding-bottom: 0.2rem\0;
box-sizing: border-box;
}
@media screen and (max-width: 780px) {
div.DigitRoll__Divider {
font-size: 12px; /* px */
padding-bottom: .08rem !important;
padding-bottom: .2rem\0 !important;
}
}
@media screen and (max-width: 440px) {
.en div.DigitRoll__Divider {
font-size: 12px; /* px */
padding-bottom: .04rem !important;
padding-bottom: .2rem\0 !important;
}
div.DigitRoll__Divider {
font-size: 12px; /* px */
padding-bottom: .0rem !important;
padding-bottom: .2rem\0 !important;
}
}
\ No newline at end of file
import React from 'react'
import Slice from './Slice'
import { formatDigit } from './util'
import './index.css'
export default class DigitRoll extends React.Component {
render() {
const {
num,
length,
height,
width,
divider = '',
delay,
className,
children
} = this.props
const numArr = formatDigit(num, length, divider)
const validDivider =
divider !== undefined &&
(typeof divider === 'string' || typeof divider === 'number')
return (
<div className="DigitRoll__Out" style={{ display: 'flex' }}>
<div
className={`DigitRoll ${className}`}
style={{ height: height + 'rem' }}
>
{numArr.map((d, index) => {
if (validDivider && index % 4 === 3) {
return null
// return <Divider key={index} divider={divider} height={height} />
}
return (
<Slice
key={index}
digit={d}
height={height}
width={width}
delay={delay}
/>
)
})}
</div>
<div className="DigitRoll__Divider" style={{ height: height + 'rem' }}>
{children}
</div>
</div>
)
}
}
DigitRoll.defaultProps = {
num: '000000',
height: 3,
width: 2,
delay: 2,
className: ''
}
// const Divider = ({ divider, height }) => (
// <div style={{ height: height + 'rem' }} className="DigitRoll__Divider">
// {divider}
// </div>
// )
// 456,6,',' => '000,456'
export const formatDigit = (num, length, divider) => {
let sum = '0' // in case some random input
if (typeof num === 'string') {
sum = num
} else if (typeof num === 'number') {
sum = num.toString()
}
// '1234' => '001234'
const _len = sum.length
const _fullLen = length && typeof length === 'number' ? length : _len
if (_len >= _fullLen) {
sum = sum.substring(_len - _fullLen, _len)
} else {
for (let i = 0; i < _fullLen - _len; i++) {
sum = '0' + sum
}
}
sum = sum.split('').reverse()
for (let i = sum.length - 1; i > 0; i--) {
if (i % 3 === 0) {
sum.splice(i, 0, divider)
}
}
return sum
}
const _getArr = (a, b) => new Array(b - a + 1).fill(0).map((i, index) => a + index)
//'9','2' => [9,0,1,2]
export const getArr = (x, y) => {
const a = parseInt(x, 10)
const b = parseInt(y, 10)
if (a === b) {
return [a]
}
if (a < b) {
return _getArr(a, b)
}
if (a >= b) {
return [..._getArr(a, 9), ..._getArr(0, b)]
}
}
\ No newline at end of file
@media screen and (min-width: 1441px) {
.footer-wrapper {
height: 480px; /* px */
padding: 162px 0;/* px */
}
.lang {
margin-bottom: 64px; /* px */
float: left;
}
.lang .lang-col-img {
margin-bottom: 32px; /* px */
}
.lang img {
float: left;
margin-bottom: 32px; /* no */
}
.lang span.lang-col {
float: left;
}
.lang span.lang-col1 {
clear: both;
}
.lang span.lang-col2 {
margin-top: 4px\0; /* px */
}
.footer-group1 {
width: 50%;
}
.contact {
float: right;
}
.footer-group2 {
width: 25%;
float: right;
height: 208px; /* px */
}
.address-row-wrapper {
float: left;
/* width: 100%; */
width: 246px; /* px */
margin-bottom: 52px; /* px */
}
.address-row-wrapper.row3 {
clear: both;
}
.address-row-wrapper.row2, .address-row-wrapper.row4 {
float: right;
}
}
\ No newline at end of file
@media screen and (max-width: 1440px) and (min-width: 831px){
.footer-wrapper {
height: 560px; /* px */
padding: 120px 0; /* px */
}
.lang {
margin-bottom: 64px; /* px */
}
.footer-group1 {
width: 204px; /* px */
}
.footer-group2 {
width: 45%;
float: right;
margin-top: 108px; /* px */
height: 208px; /* px */
}
.address-row-wrapper {
float: left;
/* width: 100%; */
width: 246px; /* px */
margin-bottom: 52px; /* px */
}
.address-row-wrapper.row3 {
clear: both;
}
.address-row-wrapper.row2, .address-row-wrapper.row4 {
float: right;
}
}
\ No newline at end of file
@media screen and (max-width:595px) {
.footer-wrapper {
height: 600px; /* px */
}
.lang {
margin-bottom: 32px; /* px */
}
.footer-group1 {
width: 100%;
margin-bottom: 50px; /* px */
}
.address-wrapper {
width: 100%;
}
.address-row-wrapper {
float: left;
width: 96%;
margin-bottom: 24px; /* px */
}
.address-row-wrapper > .col-left {
margin-right: 24px; /* px */
min-width: 48px; /* px */
}
.footer-group2 {
float: left;
}
.limitw.footer-limitw {
padding-left: 38px; /* px */
padding-right: 1px; /* px */
}
}
@media screen and (max-width:530px) {
.footer-rights {
text-align: left;
}
}
@media screen and (max-width:830px) and (min-width:596px) {
.footer-wrapper {
height: 460px; /* px */
padding: 64px 0; /* px */
}
.lang {
margin-bottom: 64px; /* px */
}
.footer-group1 {
width: 204px; /* px */
}
.address-wrapper {
width: 262px; /* px */
/* width: 100%; */
/* height: 100px; */
}
.footer-group2 {
float: right;
margin-top: 108px; /* px */
}
.address-row-wrapper {
float: left;
width: 100%;
margin-bottom: 52px; /* px */
}
}
\ No newline at end of file
.footer-wrapper {
position: relative;
box-sizing: border-box;
font-size: 14px; /* px */
width: 100%;
background-color: #201714;
background-image: url('/static/img/footer-tile.svg');
background-size: auto 100%;
color: white;
font-weight: 300;
padding: 64px 0; /* px */
}
.lang-col.lang-col-img {
display: inline-block;
vertical-align: middle;
margin-right: 24px; /* px */
width: 40px; /* px */
height: 40px; /* px */
background: url('/static/img/logo-yellow.svg');
background-size: cover;
background-repeat: none;
}
.lang span:not(.lang-col-img) {
display: inline-block;
box-sizing: border-box;
color: #FFCB05;
line-height: 24px; /* px */
text-align: center;
cursor: pointer;
}
.lang span.active {
border-bottom: solid 1px #FFCB05;
color: white;
}
.lang .lang-col1 {
margin-right: 16px; /* px */
}
.lang-col .active {
color: white;
}
.row-wrapper {
margin-bottom: 24px; /* px */
}
.row-wrapper > .col-left {
margin-right: 24px; /* px */
vertical-align: top;
display: inline-block;
min-width: 48px; /* px */
}
.row-wrapper > .col-right {
color: #FFCB05;
}
.row-wrapper > .col-right a {
text-decoration: none;
color: #FFCB05;
}
.footer-group1{
float: left;
}
.address-row-wrapper > .col-left {
margin-right: 16px; /* px */
margin-bottom: 8px; /* px */
color: white;
vertical-align: top;
display: inline-block;
}
.address-row-wrapper > .col-right {
display: inline-block;
color: white;
opacity: .5;
}
.footer-rights {
position: absolute;
overflow: hidden;
/* text-align: center; */
}
.footer-wrapper .footer-rights {
max-width: 336px; /* px */
}
.footer-rights-wrapper {
margin: 0 auto;
display: inline-block;
min-width: 100px; /* px */
overflow: hidden;
}
.footer-rights-item {
/* float: left; */
font-weight: 300;
font-size: 14px; /* px */
color: white;
opacity: .5;
margin-bottom: 24px; /* px */
}
.footer-rights-item a {
color: white;
cursor: pointer;
text-decoration: none;
}
.footer-rights-item a:hover {
text-decoration: underline;
}
\ No newline at end of file
import React from 'react'
import classnames from 'classnames'
// eslint-disable-next-line no-unused-vars
import { ThemeContext } from '../../pages/_app.js'
import footer from '../../content/foot.md'
import './index.css'
import './595.css'
import './830.css'
import './1440.css'
import './1440+.css'
export default class Footer extends React.Component {
genContactRow(left, right) {
return (
<div className="row-wrapper">
<span className="col-left">{left}</span>
<span className="col-right">{right}</span>
</div>
)
}
genAddressRow(left, right, idx) {
return (
<div
className={classnames({
'address-row-wrapper': true,
[`row${idx}`]: true
})}
>
<span className="col-left">{left}</span>
<span
className="col-right"
dangerouslySetInnerHTML={{ __html: right }}
></span>
</div>
)
}
render() {
const {
attributes: {
email,
emailEN,
emailStr,
phone,
phoneEN,
phoneStr,
fax,
faxEN,
faxStr,
wechat,
wechatEN,
// beijing,
// beijingEN,
// shanghai,
// shanghaiEN,
// shenzhen,
// shenzhenEN,
// xianggang,
// xianggangEN,
// beijingloc,
// beijinglocEN,
// shanghailoc,
// shanghailocEN,
// shenzhenloc,
// shenzhenlocEN,
// xianggangloc,
// xiangganglocEN,
wechatimg
}
} = footer
return (
<ThemeContext.Consumer>
{(val) => {
const { en, setLang } = val
return (
<div className="footer-wrapper">
<div className="limitw footer-limitw">
<div className="footer-group1">
<div className="lang">
<span className="lang-col lang-col-img"></span>
<span
onClick={(e) => {
e.stopPropagation()
setLang(false)
}}
className={classnames({
'lang-col': true,
'lang-col1': true,
active: !en
})}
>
中文
</span>
<span
onClick={(e) => {
e.stopPropagation()
setLang(true)
}}
className={classnames({
'lang-col': true,
'lang-col2': true,
active: en
})}
>
English
</span>
</div>
<div className="contact">
{this.genContactRow(
en === null ? '' : en ? emailEN : email,
<a href={'mailto:' + emailStr}>{emailStr}</a>
)}
{this.genContactRow(
en === null ? '' : en ? phoneEN : phone,
phoneStr
)}
{this.genContactRow(
en === null ? '' : en ? faxEN : fax,
faxStr
)}
{this.genContactRow(
en === null ? '' : en ? wechatEN : wechat,
<img src={wechatimg}></img>
)}
</div>
</div>
<div className="footer-group2 address-wrapper">
<div className="footer-rights">
<div className="footer-rights-wrapper">
<div className="footer-rights-item">
© {new Date().getFullYear()}
{en ? ' Gaorong Ventures' : ' 高榕创投'}
</div>
<div className="footer-rights-item">
{' '}
<a href="https://beian.miit.gov.cn/" target="_blank">ICP14020814</a>
</div>
<div className="footer-rights-item">
<a href="http://www.beian.gov.cn/portal/registerSystemInfo?recordcode=11010502038966">
京公网安备11010502038966
</a>
</div>
</div>
</div>
{/* {this.genAddressRow(
en === null ? '' : en ? beijingEN : beijing,
en === null ? '' : en ? beijinglocEN : beijingloc,
1
)}
{this.genAddressRow(
en === null ? '' : en ? shenzhenEN : shenzhen,
en === null ? '' : en ? shenzhenlocEN : shenzhenloc,
2
)}
{this.genAddressRow(
en === null ? '' : en ? shanghaiEN : shanghai,
en === null ? '' : en ? shanghailocEN : shanghailoc,
3
)}
{this.genAddressRow(
en === null ? '' : en ? xianggangEN : xianggang,
en === null ? '' : en ? xiangganglocEN : xianggangloc,
4
)}*/}
</div>
</div>
</div>
)
}}
</ThemeContext.Consumer>
)
}
}
.header-wrapper {
margin: 0 auto;
z-index: 1;
padding: 88px 0; /* no */
}
.header-logo {
display: inline-block;
width: 155px; /* px */
height: 60px; /* px */
font-size: 18px; /* px */
background-image: url('/static/img/newlogo.png');
background-size: cover;
cursor: pointer;
}
.header-collapse-btn {
cursor: pointer;
position: fixed;
height: 32px; /* px */
width: 32px; /* px */
right: 32px; /* px */
top: 52px; /* px */
z-index: 30;
background-image: url('/static/img/MenuBtn.svg');
background-size: cover;
}
.modal-header .modal-wrapper {
height: 100%;
width: 100%;
padding-left: 0;
}
.modal-header-content {
padding-top: 12%;
}
.modal-header-content > span.header-index {
float: right;
clear: both;
margin: 2% 0;
font-size: 24px; /* px */
}
.modal-header-bg {
position: absolute;
opacity: 0.5;
left: 0;
bottom: 0;
z-index: -1;
width: 100%;
height: 50%;
background-repeat: no-repeat;
background-position: bottom right;
background-size: contain;
background-image: url("/static/img/tree-mask-image.svg");
}
.modal-header-contact {
margin-top: 24%;
float: right;
clear: both;
}
.header-contact-wrapper {
float: right;
clear: both;
font-weight: normal;
margin-top: 16px; /* px */
}
.header-contact-top, .header-contact-bottom {
float: right;
clear: both;
font-size: 16px; /* px */
color: #444;
}
.header-contact-bottom {
margin-top: 12px; /* px */
}
.header-contact-bottom, .header-contact-bottom a {
color: #984c39;
text-decoration: none;
}
.header-index {
display: inline-block;
margin-left: 48px; /* no */
font-size: 18px; /* px */
line-height: 200%;
color: #444;
cursor: pointer;
}
.header-index.emphasis-warn{
background: #ffcb05;
line-height: 1;
padding: 4px 4px 0;
}
.header-index a {
color: #444;
text-decoration: none;
}
.navigator-wrapper .header-index:first-child {
margin-left: 0;
}
.header-index:hover {
color: #241712;
}
.header-index.active a {
color: #A25641;
/* border-bottom: solid 3px#FFCB05; /* px */
}
.header-index a:active {
color: #A25641;
/* border-bottom: solid 3px#FFCB05; /* px */
}
.header-index.active:after {
content: '';
display: block;
margin: auto;
height: 3px; /* px */
width: 100%;
background: #FFCB05;
}
/* .header-index:hover {
transition: border 1s;
border-bottom: solid 2px#FFCB05;
} */
.header-index:after {
content: '';
display: block;
/* margin: auto; */
height: 3px; /* px */
width: 0px;
background: transparent;
transition: width .7s ease, background-color .7s ease;
}
.header-index:hover:after {
width: 100%;
background: #FFCB05;
}
.navigator-wrapper {
/* max-width: 1000px; */
float: right;
font-weight: 400;
font-size: 20px; /* px */
}
.modal-header-lang {
clear: both;
float: right;
margin-top: 24px; /* px */
font-size: 16px; /* px */
}
.lang span.modal-header-col:not(.lang-col-img) {
color: #444;
}
@media screen and (max-width: 850px) {
.header-wrapper {
padding: 48px; /* px */
}
}
import React from 'react'
import Link from 'next/link'
import Head from 'next/head'
import classnames from 'classnames'
import { ThemeDecorator } from '../../pages/_app.js'
import head from '../../content/head.md'
// import footer from '../../content/foot.md'
import Modal from '../Modal'
import './index.css'
export class Header extends React.PureComponent {
constructor(props) {
super(props)
this.state = {
collapse: false,
showModal: false
}
this.handleWindowResize = this.handleWindowResize.bind(this)
this.renderLinks = this.renderLinks.bind(this)
this.renderCollapse = this.renderCollapse.bind(this)
}
genLink(en, curPage, path, txt, txtEN, query=null, emphasis=false) {
return (
<span
className={classnames({
'header-index': true,
'emphasis-warn': emphasis,
active: curPage === path
})}
>
<Link prefetch={false} href={{ pathname: '/' + path, query }}>
<a style={{ height: '100%', display: 'inline-block' }}>
{en === null ? '' : en ? txtEN : txt}
</a>
</Link>
</span>
)
}
handleWindowResize() {
this.setState({
collapse: document.body.offsetWidth < 850
})
}
componentDidMount() {
window.addEventListener('resize', this.handleWindowResize)
this.handleWindowResize()
}
componentWillUnmount() {
window.removeEventListener('resize', this.handleWindowResize)
}
openModal(p, e) {
e.stopPropagation()
setTimeout(() =>
this.setState({
showModal: p
})
)
}
genContactRow(top, bottom) {
return (
<div className="header-contact-wrapper">
<span className="header-contact-top">{top}</span>
<span className="header-contact-bottom">{bottom}</span>
</div>
)
}
renderCollapse(showModal, en) {
// const {
// attributes: { email, emailEN, emailStr, phone, phoneEN, phoneStr }
// } = footer
const { setLang } = this.props
if (showModal) {
return (
<Modal
className="modal-header"
onClose={(e) => {
this.openModal(null, e)
e.stopPropagation()
}}
>
<div className="modal-header-bg"></div>
<div className="modal-header-content">
{this.renderLinks()}
{/* <div className="modal-header-contact">
{this.genContactRow(
en === null ? '' : en ? emailEN : email,
<a href={'mailto:' + emailStr}>{emailStr}</a>
)}
{this.genContactRow(
en === null ? '' : en ? phoneEN : phone,
phoneStr
)}
</div> */}
<div className="lang modal-header-lang">
{/* <span className="lang-col lang-col-img modal-header-col"></span> */}
<span
onClick={(e) => {
e.stopPropagation()
setLang(false)
this.openModal(null, e)
}}
className={classnames({
'modal-header-col': true,
'lang-col': true,
'lang-col1': true,
active: !en
})}
>
中文
</span>
<span
onClick={(e) => {
e.stopPropagation()
setLang(true)
this.openModal(null, e)
}}
className={classnames({
'modal-header-col': true,
'lang-col': true,
'lang-col2': true,
active: en
})}
>
English
</span>
</div>
</div>
</Modal>
)
}
return (
<div
className="header-collapse-btn"
onClick={(e) => this.openModal(true, e)}
></div>
)
}
renderLinks() {
const {
attributes: {
home,
homeEN,
about,
aboutEN,
portfolio,
portfolioEN,
news,
newsEN,
}
} = head
const { en, curPage, setLang } = this.props
const { collapse } = this.state
return (
<React.Fragment>
{this.genLink(en, curPage, '', home, homeEN)}
{this.genLink(en, curPage + '.html', 'about.html', about, aboutEN)}
{this.genLink(
en,
curPage + '.html',
'portfolio.html',
portfolio,
portfolioEN
)}
{this.genLink(en, curPage + '.html', 'news.html', news, newsEN)}
{!collapse && en !== null && (
<span
className={classnames({
'header-index': true
})}
onClick={() => {
setLang(en ? false : true)
}}
>
{en ? '中文' : 'EN'}
</span>
)}
</React.Fragment>
)
}
render() {
const { collapse, showModal } = this.state
const { en, curPage } = this.props
return (
<div className="header-wrapper limitw">
{curPage !== 'post' && (
<Head>
<title>{en ? 'Gaorong Ventures' : '高榕创投'}</title>
</Head>
)}
<Link prefetch={false} href={{ pathname: '/' }}>
<a className="header-logo"></a>
</Link>
{collapse ? (
this.renderCollapse(showModal, en)
) : (
<span className="navigator-wrapper">{this.renderLinks()}</span>
)}
</div>
)
}
}
export default ThemeDecorator(Header)
.image-cycle-image1, .image-cycle-image2, .image-cycle-mask1, .image-cycle-mask2, .image-cycle-image-placeholder {
width: 100%;
height: 100%;
position: absolute;
bottom: 0; /* px */
right: 0; /* px */
background-repeat: no-repeat;
}
.image-cycle-image1, .image-cycle-image2, .image-cycle-image-placeholder {
background-size: auto 100%;
}
.image-cycle-image-placeholder {
opacity: 0;
transition: opacity 1s ease;
}
.image-cycle-image-show {
opacity: 1;
}
.image-cycle-image1 {
z-index: 1;
}
.image-cycle-image2 {
background-position: bottom right;
bottom: -10%;
z-index: 2;
box-sizing: border-box;
/* border-bottom: solid 1px white; */
}
.image-cycle-mask1 {
z-index: 3;
height: 100%;
background-position: bottom left;
background-size: contain;
background-image: url('/static/img/image-mask-face-right.svg');
}
.image-cycle-mask2 {
z-index: 3;
height: 100%;
background-position: bottom right;
bottom: -10%;
background-size: contain;
background-image: url('/static/img/image-mask-face-left.svg');
}
import React, { Component } from 'react'
import classnames from 'classnames'
import './index.css'
export default class ImageCycle extends Component {
constructor(props) {
super(props)
this.state = {
i1: 0,
i2: 1,
mobile: true,
mounted: false
}
this.imageList = props.imageList
if (this.imageList && this.imageList.length % 2 !== 0) {
this.imageList.push(this.imageList[Math.floor(this.imageList.length / 2)])
}
this.length = this.imageList.length
this.changeImg1 = this.changeImg1.bind(this)
this.changeImg2 = this.changeImg2.bind(this)
this.handleWindowResize = this.handleWindowResize.bind(this)
}
componentDidMount() {
this.timer2 = setInterval(this.changeImg2, 5000)
this.timer1 = setTimeout(() => {
this.changeImg1()
this.timer3 = setInterval(this.changeImg1, 5000)
}, 2500)
window.addEventListener('resize', this.handleWindowResize)
this.handleWindowResize()
this.setState({
mounted: true
})
}
handleWindowResize() {
this.setState({
mobile: document.body.offsetWidth < 780
})
}
componentWillUnmount() {
window.removeEventListener('resize', this.handleWindowResize)
clearTimeout(this.timer1)
clearInterval(this.timer2)
clearInterval(this.timer3)
}
changeImg1() {
this.setState({
i1: (this.state.i1 + 2) % this.length
})
}
changeImg2() {
this.setState({
i2: (this.state.i2 + 2) % this.length
})
}
render() {
const { i1, i2, mobile, mounted } = this.state
return (
<div className="image-text-column-col2">
{this.imageList.map((img, idx) => (
<div
key={idx}
className={classnames({
'image-cycle-image-show': i1 === idx || i2 === idx,
'image-cycle-image1': idx % 2 === 0,
'image-cycle-image2': idx % 2 === 1,
'image-cycle-image-placeholder': true
})}
style={{
backgroundImage: !mounted
? 'none'
: `url(${mobile ? img.image1 : img.image1_2})`
}}
></div>
))}
<div className="image-cycle-mask1"></div>
<div className="image-cycle-mask2"></div>
<div className="clear"></div>
</div>
)
}
}
.index-page-common {
width: 100%;
background: white;
overflow: hidden;
box-sizing: border-box;
position: relative;
}
.index-title {
color: #201714;
z-index: 0;
font-size: 64px; /* px */
line-height: 125%;
position: relative;
}
.en .index-title {
font-size: 48px; /* px */
}
.index-title.index-title-top {
/* color: white; */
font-size: 72px; /* px */
line-height: 1.2;
/* margin-top: 43vh; */
}
.en .index-title.index-title-top {
font-size: 56px; /* px */
}
.index-sub-title {
color: #444;
font-weight: 300;
font-size: 24px; /* px */
line-height: 167%; /* px */
text-align: justify;
margin-top: 24px; /* px */
}
.en .index-sub-title {
text-align: left;
max-width: 580px; /* px */
}
.en .index-title {
font-family: 'IBM Plex Serif' !important;
font-weight: 500;
}
.emphasis, .emphasis2, .yellow {
position: relative;
}
.zh .emphasis::before, .zh .emphasis2::before {
content: "";
position: absolute;
bottom: 0;
left: 0;
width: 1em; /* px */
border-bottom: solid 0.5em #FFDA57;
z-index: -1;
}
.yellow {
display: inline-block;
z-index: 0;
}
.yellow::before {
content: "";
position: absolute;
bottom: 0;
left: 0;
width: 100%;
border-bottom: solid 0.5em #FFDA57;
z-index: -1;
}
.zh .emphasis2::before {
width: 2em; /* px */
}
@media screen and (max-width: 780px) {
.index-title {
font-size: 32px; /* px */
}
.index-title-svg {
height: 40px; /* px */
}
.index-title-svg.index-title-two-line {
height: 80px; /* px */
}
.en .index-title {
font-size: 24px; /* px */
}
}
\ No newline at end of file
// eslint-disable-next-line no-unused-vars
import React from 'react'
import classnames from 'classnames'
import './index.css'
export function Title(props) {
let child = <span dangerouslySetInnerHTML={{ __html: props.children }}></span>
if (!props.en && /svg$/.test(props.children)) {
child = (
<React.Fragment>
<h1 className="title-decorate">
{props.children.slice(0, props.children.indexOf('.'))}
</h1>
<img
alt={props.children.slice(0, props.children.indexOf('.'))}
className={classnames({
'index-title-svg': true,
'index-title-two-line': / |/.test(props.children)
})}
src={`/static/img/${props.children}`}
/>
</React.Fragment>
)
}
return (
<div
className={classnames({
'index-title': true,
[props.className]: !!props.className
})}
>
{child}
</div>
)
}
export function SubTitle(props) {
return (
<div
style={props.style}
className={classnames({
'index-sub-title': true,
[props.className]: !!props.className
})}
dangerouslySetInnerHTML={{ __html: props.children }}
></div>
)
}
.index-portfolio-two-column-not-choosen {
height: 0;
}
.index-portfolio-text {
width: 25%;
position: relative;
height: 0;
}
.index-portfolio-text.index-portfolio-text-choosen {
margin-top: 9em;
border-top: solid 1px #201714; /* px */
/* border-bottom: solid 1px #201714; /* px */
}
.index-portfolio-text-choosen .index-portfolio-footer {
border-top: solid 1px #201714; /* px */
}
.index-portfolio-progress {
width: 0;
height: 0px;
background: #FFDA57;
position: relative;
top: -1px; /* px */
transition: width 3s ease;
}
.index-portfolio-text-choosen .index-portfolio-progress.index-portfolio-progress-show {
height: 1px;/* px */
width: 100%;
}
.index-portfolio-text-mask {
min-height: 346px; /* px */
overflow: hidden;
}
.index-portfolio-textwrapper {
position: relative;
width: 100%;
transition: margin 1s ease;
margin-left: 0;
overflow: hidden;
}
.index-portfolio-textcss-enter.index-portfolio-textwrapper {
margin-left: -300px; /* px */
}
.index-portfolio-textcss-enter-done.index-portfolio-textwrapper {
margin-left: 0;
}
.index-portfolio-index {
display: none;
position: absolute;
top: -2em;
font-size: 20px; /* px */
color: #B3B3B3;
}
.index-portfolio-text-choosen .index-portfolio-index {
display: block;
}
.index-portfolio-current {
color: #444;
margin-right: 2px; /* px */
}
.index-portfolio-img-wrapper {
/* float: right; */
position: absolute;
box-sizing: border-box;
margin-left: 27%;
margin-top: 6em;
/* padding-bottom: 80vh; */
height: 80%;
overflow: hidden;
width: 66%;
display: block;
max-width: 1304px; /* px */
background-size: cover;
background-position: center;
border-left: solid 1px white; /* px */
transition: padding-bottom 3s ease;
}
.index-portfolio-imgbg {
width: 100%;
height: 100%;
cursor: pointer;
border: solid 2px white; /* px */
margin: -1px; /* px */
box-sizing: border-box;
transform: scale(1);
background-size: cover;
background-position: center;
background-repeat: no-repeat;
transition: transform 3s ease;
}
.index-portfolio-next.index-portfolio-choosen {
position: absolute;
opacity: 0;
right: 10%;
top: 45%;
width: 100px; /* px */
height: 100px; /* px */
background: url('/static/img/arrow-right-white.svg');
background-size: cover;
transition: opacity 0.7s ease-out, right 0.7s ease;
cursor: pointer;
}
.index-portfolio-img-wrapper.index-portfolio-choosen:hover .index-portfolio-next.index-portfolio-choosen {
right: 8%;
opacity: 1;
}
.index-portfolio-img-wrapper.index-portfolio-choosen::before {
content: "";
position: absolute;
display: inline-block;
margin-top: 0px;
margin-left: 0px;
pointer-events: none;
height: 100%;
z-index: 1;
width: 10.5%;
background: url('/static/img/index-portfolio-mask.svg');
background-size: cover;
}
.index-portfolio-imgbg::after {
content: "";
position: absolute;
top: -1px; /* px */
right: -1px; /* px */
display: inline-block;
height: 101%;
width: 0; /* px */
transition: width 1s ease;
background: white;
background-size: cover;
}
.index-portfolio-imgcss-enter.index-portfolio-imgbg {
transform: scale(1.2);
}
.index-portfolio-imgcss-enter-done.index-portfolio-imgbg {
transform: scale(1);
}
.index-portfolio-imgcss-enter.index-portfolio-imgbg::before {
padding-bottom: 120%;
}
.index-portfolio-imgcss-enter.index-portfolio-imgbg::after {
width: 99%;
}
.index-portfolio-imgcss-enter-done.index-portfolio-imgbg::after {
width: 0;
}
.index-portfolio-imgcss-exit.index-portfolio-imgbg::after {
width: 0;
}
.index-portfolio-imgcss-exit-active.index-portfolio-imgbg::after {
width: 99%;
}
.DigitRoll {
font-size: 30px; /* px */
color:#444;
}
.index-portfolio-logo {
margin-top: 32px; /* px */
max-width: 160px; /* px */
}
.index-portfolio-description {
/* transform: translateY(-50%); */
font-weight: 300;
line-height: 180%;
min-height: 214px; /* px */
padding: 20% 0 10% 0; /* px */
font-size: 24px; /* px */
color: #444;
}
.en .index-portfolio-description {
font-size: 20px; /* px */
padding: 10% 0 0 0; /* px */
}
.index-portfolio-footer {
display: none;
margin-top: 16px; /* px */
font-size: 14px; /* px */
font-weight: 300;
width: 100%;
color: #B3B3B3;
}
.index-portfolio-img-preload {
width: 0;
height: 0;
opacity: 0;
}
.index-portfolio-text-choosen .index-portfolio-footer {
display: block;
}
.index-portfolio-with {
padding-top: 16px; /* px */
margin-bottom: 16px; /* px */
min-width: 196px; /* px */
}
.index-portfolio-days {
font-size: 40px; /* px */
color: #444;
margin-right: 9px; /* px */
}
@media screen and (min-width: 1100px) {
.en .index-portfolio-description {
font-size: 18px; /* px */
}
}
@media screen and (max-width: 1000px) and (min-width: 781px) {
.en .index-portfolio-logo {
margin-top: 12px; /* px */
max-width: 130px; /* px */
}
.en .index-portfolio-with {
padding-top: 1px; /* px */
margin-bottom: -1px; /* px */
}
}
@media screen and (max-width: 1000px) {
.en .index-portfolio-description {
padding: 5% 0 0 0;
}
.index-portfolio-img-wrapper.index-portfolio-choosen::before {
width: 14%;
}
.index-portfolio-description {
font-size: 20px; /* px */
}
.en .index-portfolio-description {
font-size: 18px; /* px */
}
}
@media screen and (max-width: 1100px) {
.en .index-portfolio-description {
font-size: 18px; /* px */
}
}
@media screen and (max-width: 900px) {
.en .index-portfolio-description {
font-size: 16px; /* px */
}
}
@media screen and (max-width: 780px) {
.index-portfolio-logo {
max-width: 132px; /* px */
}
.index-portfolio-text-mask {
min-height: 1px; /* px */
}
div.index-portfolio-description {
font-size: 16px; /* px */
padding: 12px 0; /* px */
min-height: 1px; /* px */
}
.en div.index-portfolio-description {
font-size: 14px; /* px */
}
.two-column .index-portfolio-img-wrapper {
position: static;
margin-left: 0;
height: 250px; /* px */
width: 100%;
float: none;
}
.index-portfolio-img-wrapper.index-portfolio-choosen::before {
height: 251px; /* px */
background-size: contain;
background-repeat: no-repeat;
}
.index-portfolio-next.index-portfolio-choosen {
top: 48vw;
right: 15%;
}
.index-portfolio-img-wrapper.index-portfolio-choosen:hover .index-portfolio-next.index-portfolio-choosen {
right: 12%;
}
.index-portfolio-imgbg {
height: 250px; /* px */
}
.index-portfolio-text {
width: 100%;
}
.index-portfolio-img-wrapper {
margin-top: 80px; /* px */
}
.index-portfolio-text.index-portfolio-text-choosen {
margin-top: 36px; /* px */
}
.index-portfolio-index {
font-size: 14px; /* px */
}
.DigitRoll {
font-size: 24px; /* px */
}
.index-portfolio-text.index-portfolio-text-choosen {
height: auto;
}
.index-portfolio-footer {
font-size: 13px; /* px */
}
}
import React from 'react'
import classnames from 'classnames'
import { CSSTransition } from 'react-transition-group'
import DigitRoll from '../DigitRoll'
import './index.css'
const seconds = 1000 * 60 * 60 * 24
export default class IndexPortfolioCycle extends React.Component {
constructor(props) {
super(props)
this.state = {
showIdx: 0,
showText: false,
showImg: false,
mobile: true,
mounted: false,
touchMoveX: 0
}
this.handleWindowResize = this.handleWindowResize.bind(this)
// this.handleTouchStart = this.handleTouchStart.bind(this)
// this.handleTouchMove = this.handleTouchMove.bind(this)
// this.handleTouchEnd = this.handleTouchEnd.bind(this)
}
componentDidMount() {
this.setState({
showImg: true,
showText: true,
mounted: true
})
window.addEventListener('resize', this.handleWindowResize)
this.handleWindowResize()
}
handleWindowResize() {
this.setState({
mobile: document.body.offsetWidth < 780
})
}
componentWillUnmount() {
window.removeEventListener('resize', this.handleWindowResize)
clearTimeout(this.nextPortfolioTimer)
clearTimeout(this.portfolioTimer)
}
// handleTouchStart(e) {
// this.startX = e.touches[0].screenX
// }
// handleTouchMove(e) {
// if (e.touches[0].screenX - this.startX < -40) {
// return this.nextPortfolio(this.state.showIdx, this.props.portfolio)
// }
// if (e.touches[0].screenX - this.startX > 0) {
// return
// }
// this.setState({
// touchMoveX: e.touches[0].screenX - this.startX
// })
// }
// handleTouchEnd(e) {
// this.setState({
// touchMoveX: 0
// })
// }
nextPortfolio(showIdx, portfolio) {
if (this.nextPortfolioTimer) return
clearTimeout(this.portfolioTimer)
this.setState({
showImg: false
})
this.nextPortfolioTimer = setTimeout(() => {
this.setState(
{
showImg: true,
showIdx: (showIdx + 1) % portfolio.length
},
() => {
this.nextPortfolioTimer = null
}
)
}, 1200)
}
render() {
const today = new Date()
const {
showImg,
showText,
showIdx,
mobile,
touchMoveX,
mounted
} = this.state
const { portfolio, en, gaorongWith, gaorongWithEN } = this.props
return portfolio.map((val, idx) => {
const date = new Date(val.sinceDate)
const dur = parseInt(Math.abs(today - date) / seconds)
return (
<div
key={idx}
style={{ marginLeft: `${touchMoveX}px` }}
className={classnames({
'two-column': true,
'index-portfolio-two-column-not-choosen': idx !== showIdx
})}
// onTouchStart={this.handleTouchStart}
// onTouchEnd={this.handleTouchEnd}
// onTouchMove={this.handleTouchMove}
>
<div
className={classnames({
'index-portfolio-img-wrapper': idx === showIdx,
'index-portfolio-choosen': idx === showIdx
})}
>
<CSSTransition
in={idx === showIdx && showImg}
timeout={{
enter: 0,
exit: 1000
}}
classNames="index-portfolio-imgcss"
onEnter={() => {
if (idx !== showIdx) return
this.portfolioTimer = setTimeout(
() =>
this.setState({
showImg: false
}),
5000
)
}}
onExited={() => {
if (idx !== showIdx) return
this.setState({
showImg: true,
showIdx: (showIdx + 1) % portfolio.length
})
}}
unmountOnExit
>
<div
className="index-portfolio-imgbg"
style={{
backgroundImage: `url(${mobile ? val.image : val.image2})`
}}
onClick={this.nextPortfolio.bind(this, showIdx, portfolio)}
></div>
</CSSTransition>
</div>
{
<div
className={classnames({
'index-portfolio-text': true,
'index-portfolio-text-choosen': idx === showIdx
})}
>
<div
className={classnames({
'index-portfolio-progress': true,
'index-portfolio-progress-show': showText
})}
/>
<div className="index-portfolio-index">
<span className="index-portfolio-current">{`0${idx + 1}`}</span>
/<span className="">{`0${portfolio.length}`}</span>
</div>
<div className="index-portfolio-text-mask">
<CSSTransition
in={idx === showIdx && showText}
timeout={0}
classNames="index-portfolio-textcss"
unmountOnExit
>
<div className="index-portfolio-textwrapper">
<img
src={mobile ? val.logo : val.logo2}
className="index-portfolio-logo"
/>
<div className="index-portfolio-description">
{en === null
? ''
: en
? val.descriptionEN
: val.description}
</div>
</div>
</CSSTransition>
</div>
<div className="index-portfolio-footer">
{mounted && (
<img
className="index-portfolio-img-preload"
src={mobile ? val.image : val.image2}
/>
)}
<div className="index-portfolio-with">
{en === null
? ''
: en
? `${gaorongWithEN}`
: `${gaorongWith} ${val.title}`}
</div>
<div>
{idx === showIdx && (
<DigitRoll
delay="1.2"
num={dur}
divider=","
height={'0.65'}
width="0.6"
>
{en === null ? '' : en ? 'days' : '天'}
</DigitRoll>
)}
</div>
</div>
</div>
}
</div>
)
})
}
}
.know-more {
line-height: 24px; /* px */
font-size: 24px; /* px */
color: #201714;
font-weight: 500;
cursor: pointer;
display: inline-block;
}
.en .know-more {
margin-top: 16px; /* px */
font-size: 18px; /* px */
}
.know-more:hover::after {
margin-left: 8px; /* px */
transition: margin-left 0.3s ease;
}
.know-more::after {
content: "";
display: inline-block;
margin-left: 4px; /* px */
width: 24px; /* px */
height: 24px; /* px */
background: url('/static/img/more.svg');
background-size: cover;
background-repeat: no-repeat;
vertical-align: bottom;
}
.en .know-more::after {
width: 20px; /* px */
height: 20px; /* px */
}
.know-more a {
color: #201714;
text-decoration: none;
}
@media screen and (max-width: 780px) {
.know-more {
font-size: 16px; /* px */
}
.know-more::after,
.en .know-more::after {
width: 16px; /* px */
height: 16px; /* px */
vertical-align: -2px; /* px */
}
}
\ No newline at end of file
import React from 'react'
import classnames from 'classnames'
import Link from 'next/link'
import './index.css'
export default function KnowMore(props) {
return (
<div
className={classnames({
'know-more': true,
[props.className]: !!props.className
})}
onClick={props.onClick}
>
{props.onClick ? (
<a>{props.content}</a>
) : (
<Link prefetch={false} href={{ pathname: '/' + props.path + '.html' }}>
<a>{props.content}</a>
</Link>
)}
</div>
)
}
.overlay {
z-index: 49;
position: fixed;
top: 0;
bottom: 0;
}
.overlay .modal-overlay {
position: fixed;
height: 100%;
width: 100%;
background: rgba(179, 179, 179, 0.8);
z-index: 50;
}
.overlay .modal-overlay .modal-content {
position: fixed;
z-index: 51;
left: 0;
top: 0;
width: 100%;
height: 100%;
}
.modal-wrapper {
margin: 0 auto;
padding: 48px 40px; /* px */
background: white;
position: fixed;
top: 50%;
transform: translateY(-50%);
left: 0;
right: 0;
width: 700px; /* px */
max-height: 100%;
overflow-y: auto;
box-sizing: border-box;
}
.modal-close {
position: absolute;
right: 24px; /* px */
top: 24px; /* px */
cursor: pointer;
z-index: 52;
width: 32px; /* px */
height: 32px; /* px */
background-image: url('/static/img/close.svg');
background-size: cover;
}
import React from 'react'
import ReactDOM from 'react-dom'
import classnames from 'classnames'
import './index.css'
export default class Modal extends React.Component {
render() {
const { className, children, wrapperClassName, onClose } = this.props
const content = (
<div className="overlay" onClick={onClose}>
<div
className={classnames({
'modal-overlay': true,
[className]: !!className
})}
>
<div
className="modal-content"
ref={(el) => {
this.modalContent = el
}}
// onClick={this.handleClickOverlay}
>
<div
className={classnames({
'modal-wrapper': true,
[wrapperClassName]: !!wrapperClassName
})}
onClick={(e) => e.stopPropagation()}
>
<div className="modal-close" onClick={onClose}></div>
{children}
</div>
</div>
</div>
</div>
)
return ReactDOM.createPortal(
content,
document.querySelector('#modal-anchor')
)
}
}
import React from 'react'
import isOverflow from '../utils/isOverflow'
export default class OverflowBox extends React.Component {
constructor(props) {
super(props)
this.state = {
check: true,
low: 0,
high: 500,
str: props.str
}
this.handleWindowResize = this.handleWindowResize.bind(this)
}
componentWillReceiveProps(nextProps) {
if (nextProps.str !== this.props.str) {
this.setState({
check: true,
low: 0,
high: 500,
str: nextProps.str
})
}
}
handleWindowResize() {
clearTimeout(this.timerResize)
this.timerResize = setTimeout(() => {
this.setState({
check: true
})
}, 200)
}
componentDidMount() {
window.addEventListener('resize', this.handleWindowResize)
// delay for this component mounted but page css not
this.timerOverflow = setTimeout(() => {
if (!isOverflow(this.el)) {
return this.setState({
check: false
})
}
this.setState({
str: this.props.str.slice(0, this.state.high)
})
}, 100)
}
componentWillUnmount() {
clearTimeout(this.timerOverflow)
clearTimeout(this.timerResize)
window.removeEventListener('resize', this.handleWindowResize)
}
componentDidUpdate() {
const { low, high, check } = this.state
// if (this.props.str.indexOf('t') === 0 && this.props.str.indexOf('te') !== 0 ) console.log(check, low, high, this.state.str)
if (!check) return
if (low + 1 < high) {
const mid = Math.floor((high + low) / 2)
this.setState(
{
str: this.props.str.slice(0, mid) + (mid === 0 ? '' : '...')
},
() => {
if (!this.state.check) return
if (!isOverflow(this.el)) {
// if (this.props.str.indexOf('t') === 0 && this.props.str.indexOf('te') !== 0 ){
// console.log(this.el)
// console.log('no overflow')
// }
this.setState({
low: mid
})
} else {
// if (this.props.str.indexOf('t') === 0 && this.props.str.indexOf('te') !== 0 ){
// console.log(this.el)
// console.log('overflow')
// }
this.setState({
high: mid
})
}
}
)
} else {
// if (this.props.str.indexOf('t') === 0 && this.props.str.indexOf('te') !== 0) {
// console.log(this.props.str, 'check')
// }
setTimeout(() => {
const str = this.props.str.slice(0, Math.floor((high + low) / 2))
this.setState({
low: 0,
high: 500,
check: false,
str: low >= 499 ? str : str.length === 0 ? '' : str + '...'
})
})
}
}
// const { len, step, checkMore } = this.state
// if (!checkMore) return
// if (len < 230 && !isOverflow(this.el)) {
// console.log(len)
// this.setState({
// str: this.props.str.slice(0, len + step),
// len: len + step,
// step: step * 2
// })
// } else if (isOverflow(this.el)) {
// this.setState({
// checkMore: false,
// str: this.props.str.slice(0, len - 8) + '...'
// })
// }
render() {
const { str } = this.state
return (
<div
ref={(el) => {
this.el = el
}}
style={{ overflow: 'hidden', height: '100%', position: 'absolute' }}
>
{str}
</div>
)
}
}
import React, { Component } from 'react'
import classnames from 'classnames'
import './index.css'
export default class TeamMember extends Component {
constructor(props) {
super(props)
}
render() {
const {p, idx, l, en} = this.props;
const portrait = l[idx].portrait
const portrait2 = l[idx].portrait_2
return (
<div className="team-member-wrapper">
<div
className={classnames({
'team-member-image': true,
[`team-member-image${idx}`]: true
})}
></div>
<div
className={classnames({
'team-member-name': true,
[`team-member-name${idx}`]: true
})}
>
{en === null ? '' : en ? p.nameEN : p.name}
</div>
<div
className={classnames({
'team-member-role': true,
[`team-member-role${idx}`]: true
})}
>
{en === null ? '' : en ? p.roleEN : p.role}
</div>
<div
className={classnames({
'team-member-content-wrapper': true,
[`team-member-content${idx}`]: true
})}
>
<div
className={classnames({
'team-member-saying': true
})}
>
{en === null ? '' : en ? p.sayingEN : p.saying}
</div>
</div>
<style jsx>{`
.team-member-image.team-member-image${idx} {
background-image: url('${portrait2}');
}
@media (max-width: 780px) {
.team-member-image.team-member-image${idx} {
background-image: url('${portrait}');
}
}
`}</style>
</div>
)
}
}
.team-member-wrapper {
display: inline-block;
margin-right: 24px; /* px */
/* position: relative; */
overflow: hidden;
width: 400px; /* px */
vertical-align: top;
}
.team-member-wrapper:nth-of-type(3n) {
margin-right: 0;
}
@media screen and (max-width: 1460px) {
.team-grid-wrapper .team-list-grid > .team-member-wrapper {
width: 30% !important;
}
}
@media screen and (max-width: 760px) {
div.team-list-grid {
padding-bottom: 9px; /* px */
}
div.team-grid-title {
font-size: 24px; /* px */
}
.team-grid-wrapper .team-list-grid > .team-member-wrapper {
width: 45% !important;
}
.team-member-wrapper:nth-of-type(2n+1) {
margin-right: 24px; /* px */
}
.team-member-wrapper:nth-of-type(2n) {
margin-right: 0px; /* px */
}
div.team-member-name {
font-size: 20px; /* px */
}
div.team-member-role {
font-size: 16px; /* px */
}
div.team-member-saying {
font-size: 14px; /* px */
}
}
.team-grid-wrapper {
position: relative;
/* margin-left:2%; */
/* background: #F9F9F9; */
}
.team-list-grid {
max-width: 1290px; /* px */
position: relative;
padding-bottom: 32px; /* px */
/* background-size: 100% 1%;
background-image: url('/static/img/gray.png');
background-repeat: repeat-y; */
/* background-position-x: 4%; /* px */
}
/* .team-grid-wrapper >.left-bg {
height: 160%;
} */
.team-grid-title {
font-size:32px; /* px */
line-height: 180%;
padding-top: 32px; /* px */
margin-bottom: 32px; /* px */
}
.team-member-image {
/* float: left; */
/* width: 28%; */
padding-bottom: 140%;
background-size: cover;
background-position: center;
}
.team-member-name {
margin-top: 16px; /* px */
font-size: 24px; /* px */
color: #201714;
line-height: 180%;
font-weight: 500;
}
.team-member-role {
font-size: 18px; /* px */
color: #B3B3B3;
}
.team-member-saying {
margin-top: 16px; /* px */
margin-bottom: 16px; /* px */
padding-top: 16px; /* px */
border-top: solid 1px #e3e2e2;
font-size: 20px; /* px */
line-height: 180%;
color: #A25641;
}
.team-member-saying-obsolete::before {
content: "";
display: inline-block;
width: 40px; /* px */
height: 26px; /* px */
background: url('/static/img/quote.svg');
background-repeat: no-repeat;
}
.team-member-summary {
font-size: 16px; /* px */
line-height: 180%;
color: #444;
margin-bottom: 24px; /* px */
}
.team-member-content-wrapper .know-more {
font-size: 16px; /* px */
}
.team-member-content-wrapper .know-more::after {
width: 16px; /* px */
height: 16px; /* px */
vertical-align: -2px; /* px */
}
\ No newline at end of file
import React from 'react'
import classnames from 'classnames'
import TeamMember from './TeamMember'
import './index.css'
export default class TeamMemberList extends React.PureComponent {
constructor(props) {
super(props)
}
render() {
const { partnerList, className, title, en } = this.props
return (
<div className="team-grid-wrapper">
<div className="left-bg"></div>
<div className="limitw">
<div className="team-grid-title">{title}</div>
<div
className={classnames({
'team-list-grid': true,
[className]: !!className
})}
>
{partnerList.map((p, idx, l) =>
<TeamMember p={p} idx={idx} l={l} en={en} ></TeamMember>
)}
</div>
</div>
</div>
)
}
}
.title {
color: #201714;
font-size: 32px; /* px */
line-height: 180%;
font-weight: 500;
}
.en .title {
font-family: 'IBM Plex Serif' !important;
line-height: 150%;
}
.sub-title {
color: #444;
font-size: 20px; /* px */
line-height: 180%;
margin-top: 32px; /* px */
margin-bottom: 40px; /* px */
text-align: justify;
}
.en .sub-title {
text-align: left;
font-size: 18px; /* px */
line-height: 150%;
}
@media screen and (max-width: 1088px) {
/* width for top image root in gray */
.title {
font-size: 24px; /* px */
}
.title-svg {
height: 24px; /* px */
}
.title-svg.title-two-line {
height: 54px; /* px */
}
.sub-title, .en .sub-title {
font-size: 16px; /* px */
}
}
@media screen and (max-width: 380px) {
.title-svg {
height: 20px; /* px */
}
}
// eslint-disable-next-line no-unused-vars
import React from 'react'
import classnames from 'classnames'
import './index.css'
function Title(props) {
const { en, children, className } = props
if (!en && /svg$/.test(children)) {
return (
<div
className={classnames({
title: true,
[className]: !!className
})}
>
<h1 className="title-decorate">
{children.slice(0, children.indexOf('.'))}
</h1>
<img
alt={children.slice(0, children.indexOf('.'))}
className={classnames({
'title-svg': true,
'title-two-line': / |/.test(children)
})}
src={`/static/img/${props.children}`}
/>
</div>
)
}
if (typeof children === 'object') {
return (
<div
className={classnames({
title: true,
[className]: !!className
})}
>
{children}
</div>
)
}
return (
<div
className={classnames({
title: true,
[className]: !!className
})}
dangerouslySetInnerHTML={{ __html: children }}
></div>
)
}
function SubTitle(props) {
const { children, className } = props
return (
<div
className={classnames({
'sub-title': true,
[className]: !!className
})}
dangerouslySetInnerHTML={{ __html: children }}
></div>
)
}
export { Title, SubTitle }
import React from 'react'
export default class Video extends React.PureComponent {
constructor(props) {
super(props)
this.state = {
mounted: false
}
this.mustPlay = this.mustPlay.bind(this)
}
componentDidMount() {
this.setState({
mounted: true
})
document.addEventListener('WeixinJSBridgeReady', this.mustPlay, false)
}
mustPlay() {
if (this.state.mounted) {
document.getElementById(this.props.id).play()
document.removeEventListener('WeixinJSBridgeReady', this.mustPlay, false)
} else {
setTimeout(this.mustPlay, 300)
}
}
componentWillUnmount() {
document.removeEventListener('WeixinJSBridgeReady', this.mustPlay, false)
}
render() {
const { poster, src, id, full } = this.props
const { mounted } = this.state
if (!full) {
return (
<video
id={id}
loop
muted={true}
playsInline={true}
webkit-playsinline="true"
x5-video-player-type="h5-page"
x5-video-player-fullscreen="true"
disableremoteplayback="true"
autoPlay
preload="auto"
poster={poster}
>
<source id="mp4" src={src} type="video/mp4" />
</video>
)
}
if (!mounted) {
return (
<video
data-object-fit="cover"
data-object-position="100% 0%"
id={id}
// loop
muted={true}
playsInline={true}
webkit-playsinline="true"
x5-video-player-type="h5-page"
x5-video-player-fullscreen="true"
disableremoteplayback="true"
autoPlay
preload="auto"
poster={poster}
></video>
)
}
return (
<video
data-object-fit="cover"
data-object-position="100% 0%"
id={id}
// loop
muted={true}
playsInline={true}
webkit-playsinline="true"
x5-video-player-type="h5-page"
x5-video-player-fullscreen="true"
disableremoteplayback="true"
autoPlay
preload="auto"
poster={poster}
>
<source id="mp4" src={src} type="video/mp4" />
</video>
)
}
}
---
title: 扎根创新创业领域 追求长期价值投资.svg
titleEN: We Partner with Exceptional Entrepreneurs to Achieve Long-term Value
subTitle: 高榕创投是中国最活跃的风险投资机构之一,致力于发现优秀创业者,与他们共建长期价值。高榕创投的愿景是「创」造美好生活,相信科技与创新的力量,将帮助人类实现更美好的未来。
subTitleEN: At Gaorong Ventures, we devote ourselves to creating better life
through innovation. We are dedicated in identifying the leading founders and
collaborating with them to achieve long-term value. Our vision is to empower
humanity to achieve its maximum potential and to bring the futuristic
blueprints to life through progressive technology and innovation.
image1: /static/img/partners.png
image1x2: /static/img/partners@2x.png
image2: /static/img/mountain.jpg
image2X2: /static/img/mountain-2x.jpg
birth: 诞生背景
birthEN: Background
title2: 互联网与实体经济融合的创新趋势
title2EN: A new integrative trend between the internet and the real economy
subTitle2: 2014年高榕创投成立时,中国互联网正从“上半场”走向互联网与实体经济融合的“下半场”。一批优秀创业者,正通过技术创新、模式创新以及产业融合创新,孕育伟大企业。<br/><br/>与此同时,中国的企业家精神正在不断传承。高榕创投成立伊始,定位于中国的创始人基金(China's
Founders'
Fund),除慈善基金、大学捐赠基金、母基金、家族办公室等全球顶级机构投资人外,高榕创投还邀请了包括腾讯、百度、淘宝、小米、美团、分众等在内的数十家互联网企业的创始人或核心高管成为出资人,一同寻找和助力优秀创业者。
subTitle2EN: In 2014, the internet industry in China underwent a crucial
transition from the "first stage" to the "second stage" that integrate with
the real economy. Concurrently, innovations in technology and business models
along with industrial integration enable outstanding founders to establish
great enterprises.<br/><br/>As we witnessed, China has the spirit to pursue
entrepreneurship inherently. Positioned as China's Founders' Fund upon
establishment, we have been proudly backed by a world-class group of
investors, including pension funds, university endowments, FoFs, and family
offices. Besides, our strategic investors, including the founders and senior
managers of Tencent, Baidu, Taobao, Xiaomi, Meituan, Focus Media, and other
renowned internet companies, make significant contributions to identify and
empower outstanding founders together with us.
philosophy: 投资哲学
philosophyEN: Philosophy
title3: 回归商业本源,追求长期价值投资
title3EN: We emphasize on long-term and durable value in investment decisions
subTitle3: 高榕团队坚守投资“本分”,通过回归商业本源的理性思考,自上而下的研究,以及对行业人脉长期持续的积累,尊重客观事实,严肃对待决策,为出资人和社会创造长期价值。
subTitle3EN: Here at Gaorong, we believe firmly in the true value of
investments. With deep understanding of respective nature of industries,
combined with top-down research and our extensive network through years of
accumulation, we form investment decisions to generate long-term and durable
value for our investors and community.
recognition: 行业认可
recognitionEN: Awards
awardList:
- award: 2021年中国创业投资机构TOP10
awardEN: 2021 China VC Firms TOP 10
source: 清科集团
sourceEN: Zero2IPO
- award: 2021年中国最受创业者欢迎创业投资机构TOP10
awardEN: 2021 China's Best VC Firms Voted by Entrepreneurs TOP 10
source: 36氪
sourceEN: 36Kr
- award: 2022年度中国最受LP认可创业投资机构TOP10
awardEN: 2022 China's Best VC Firms Voted by Limited Partners TOP 10
source: 36氪
sourceEN: 36Kr
- source: 创业邦
sourceEN: Cyzone
award: 2022年中国最受赞赏创业投资机构TOP10
awardEN: 2022 China's Most Admired VC Firms TOP 10
- award: 2020年全球新兴科技风险投资机构中国榜单TOP10
awardEN: 2020 Global New Technology VC Firms of China TOP 10
source: CB Insights
sourceEN: CB Insights
- award: 2021年中国最受LP关注创业投资机构TOP10
awardEN: 2021 China's Best VC Firms Voted by Limited Partners TOP 10
source: 投中
sourceEN: ChinaVenture
- award: 2020年度中国最佳回报创业投资机构TOP10
awardEN: 2020 China’s Best Return VC TOP 10
source: 投中
sourceEN: ChinaVenture
- award: 2022年VC基金最佳回报TOP5
awardEN: 2022 Best Return VC Firms TOP 5
source: 母基金研究中心
sourceEN: China-fof.com
- award: 2022五年期金牛创业投资持续卓越机构
awardEN: 2022 Golden Bull Award Outstanding VC Firms (Five-year Period)
source: 中国证券报
sourceEN: China Securities Journal
- award: 2019中国年度创投机构
awardEN: 2019 China Annual VC Firms
source: 中国创投委
sourceEN: China Venture Capital Association
- award: 2019中国最佳创业机构TOP3
awardEN: 2019 China's Best VC Firms TOP 3
source: 中国母基金联盟
sourceEN: China FOF Alliance
- award: 2022年度退出先锋创业投资机构TOP10
awardEN: 2022 Annual Exit-Pioneer TOP 10
source: 钛媒体
sourceEN: TMTPost
- award: 2021最佳投后赋能机构TOP10
awardEN: 2021 Best Value-added VC Firms TOP10
source: 36氪
sourceEN: 36Kr
- award: 2018年度退出-IPO奖(拼多多)
awardEN: 2018 Annual Exit Award - IPO (Pinduoduo)
source: 亚洲创业基金期刊
sourceEN: AVCJ
- award: 2023年全球最佳创投人(Midas List)TOP10(张震)
awardEN: The Midas List 2023 TOP10, Zhen Zhang
source: 福布斯
sourceEN: Forbes
- award: 2020年中国投资界回报之王(张震)
awardEN: China's Best Investor of Return in 2020, Zhen Zhang
source: 清科集团
sourceEN: Zero2IPO
- award: 2019中国最佳创业投资人TOP3(张震)
awardEN: 2019 China's Best VC Investors TOP3, Zhen Zhang
source: 投中
sourceEN: ChinaVenture
- award: 2018中国年度投资人(张震)
awardEN: China's Investor of the Year of 2018, Sole Winner, Zhen Zhang
source: 创业邦
sourceEN: Cyzone
- award: 2019年全球最佳创投人(Midas List)TOP30(高翔)
awardEN: The Midas List 2019 TOP30, Xiang Gao
source: 福布斯
sourceEN: Forbes
- award: 2022届最受创业者欢迎投资人(高翔)
awardEN: 2022 Best Investors Voted by Entrepreneurs, Xiang Gao
source: 36氪
sourceEN: 36Kr
- award: 2018年度投资家TOP10(高翔)
awardEN: China's TOP 10 Investors of the Year 2018, Xiang Gao
source: 创业家
sourceEN: The Founder
- award: 2023届最受创业者欢迎投资人(岳斌)
awardEN: 2023 Best Investors Voted by Entrepreneurs, Bin Yue
source: 36氪
sourceEN: 36Kr
- award: 2018 中国顶级风险投资人(岳斌)
awardEN: 2018 China VC Investors, Bin Yue
source: 界面
sourceEN: Jiemian
- award: 2021年度科技赛道最佳投手(岳斌)
awardEN: 2021 Best Tech Investors, Bin Yue
source: 虎嗅
sourceEN: Huxiu
- source: 36氪
award: 2023年36Under36了不起的投资人(韩锐)
sourceEN: 36Kr
awardEN: 36 Under 36 Amazing Investors of the Year 2023, Rui Han
- source: 清科集团
award: 2020年F40中国青年投资人(韩锐)
sourceEN: Zero2IPO
awardEN: 2020 F40 China's Young Investors, Rui Han
- source: 巴伦中国
award: 2022年40岁以下投资精英(韩锐)
sourceEN: Barron's
awardEN: Investors Under 40 of the Year 2022, Rui Han
---
---
errorTitle: 出错了.svg
errorTitleEN: Something is wrong
errorStr: 抱歉,没有找到你想访问的内容,请检查访问的地址是否正确。
errorStrEN: Sorry, content is not found. Please check your address.
errorImg: /static/img/mask-dotted.svg
backToHome: 返回首页
backToHomeEN: back to home
treeMask: /static/img/tree-mask-image.svg
---
---
email: 邮箱
emailEN: Email
emailStr: bp@gaorongvc.com
phone: 电话
phoneEN: Phone
phoneStr: 010-84442729
fax: 传真
faxEN: Fax
faxStr: 010-84442279
wechat: 微信
wechatEN: WeChat
beijing: 北京
beijingEN: Beijing
shanghai: 上海
shanghaiEN: Shanghai
shenzhen: 深圳
shenzhenEN: Shenzhen
xianggang: 香港
xianggangEN: Hong Kong
beijingloc: 北京市朝阳区望京启阳路<br/>金辉大厦41层4101
beijinglocEN: >-
4101, 41th Floor, Radiance Jinhui, Qiyang Road, Wangjing, Chaoyang District,
Beijing
shanghailoc: 上海市静安区南京西路1717号<br/>会德丰国际广场30楼3002
shanghailocEN: >-
Suite 3002, 30/F, Wheelock Square, 1717 Nanjing West Road, Jingan District,
Shanghai
shenzhenloc: 深圳市南山区深圳湾<br/>科技生态园7栋B座6层(东区)
shenzhenlocEN: >-
6th Floor, Block B Eastern, 7th Building, Shenzhen Bay Eco-Technology Park,
Nanshan District, Shenzhen
xianggangloc: 香港中环花园道3号<br/>中国工商银行大厦8楼805室
xiangganglocEN: 'Unit 805, 8/F, ICBC Tower, 3 Garden Road, Central, HONG KONG'
treeLogo: /static/img/footer-tree-mask.svg
footerMask: /static/img/footer-tile.svg
wechatimg: /static/img/qrcode.svg
---
---
metaDescription: 高榕创投是中国最活跃的风险投资机构之一,致力于发现优秀创业者,与他们共建长期价值。高榕创投由张震、高翔、岳斌三位创始合伙人于2014年1月创立,专注于早期和成长期投资,重点投资新科技、新消费、医疗健康等创新创业领域。
metaDescriptionEN: Gaorong Ventures is dedicated in identifying the leading
founders and collaborating with them to achieve long-term value. Founded by
Zhen Zhang, Xiang Gao, and Bin Yue in January 2014, Gaorong Ventures is focused
on early and growth-stage investments, with a specialty in new consumption,
new technology and healthcare.
title: 创造美好生活.svg
titleEN: <span class="yellow">Creating</span> Better Life<br/>through Innovation
subTitle: 相信科技和创新的力量,将帮助人类实现更美好的未来。
subTitleEN: Our vision is to empower humanity to achieve its maximum potential
and to bring the futuristic blueprints to life through progressive technology
and innovation.
gaorongWith: 高榕已陪伴
gaorongWithEN: Gaorong has accompanied for
videoPoster: /static/img/hero-poster.jpg
video: /static/img/hero.mp4
videoMobile: /static/img/hero-mobile.mp4
portfolio:
- titleEN: Pinduoduo
descriptionEN: As an innovative and fast growing "new e-commerce" platform,
Pinduoduo provides buyers with value-for-money merchandise and fun and
interactive shopping experiences.
logo2: /static/img/slide-pdd-logo@2x.png
sinceDate: 2015-06-04T16:00:00.000Z
logo: /static/img/slide-pdd-logo@2x.png
image2: /static/img/slide-pdd-image@2x.jpg
title: 拼多多
image: /static/img/slide-pdd-image.jpg
description: 作为新电商开创者,拼多多致力于为广大用户提供物有所值的商品和有趣互动的购物体验,助力美好生活。
- titleEN: BOSS Zhipin
descriptionEN: By assisting individuals’ development, BOSS Zhipin strives to
facilitate efficient allocation of human resources and create greater
value for society.
logo2: /static/img/bosszhipin-2x.png
sinceDate: 2016-05-23T10:11:05.288Z
logo: /static/img/bosszhipin-2x.png
image2: /static/img/abstract_bossipo_21-06-11.jpg
title: BOSS直聘
image: /static/img/abstract_bossipo_21-06-11.jpg
description: 通过帮助人的发展,促进人力资源更为合理地配置,为社会创造更大价值。
- titleEN: HUYA
descriptionEN: HUYA has created an engaging, interactive and immersive community
for game enthusiasts of China. Its rich and high-quality game live
streaming content is a magnet for users sharing common interests to
connect and share their passion on the platform.
logo2: /static/img/slide-huya-logo@2x.png
sinceDate: 2017-07-10T16:00:00.000Z
logo: /static/img/slide-huya-logo@2x.png
image2: /static/img/slide-huya-image@2x.jpg
title: 虎牙
image: /static/img/slide-huya-image.jpg
description: 技术驱动娱乐,虎牙直播通过弹幕式互动直播平台,为年轻人提供高清、流畅而丰富的视频直播服务,传递快乐,传播美好。
- titleEN: Roborock
descriptionEN: Roborock strives to create innovative products addressing various
household problems. The company's mission is to put advanced technology
into the home to make life easier.
logo2: /static/img/slide-roborock-logo-2x.png
sinceDate: 2015-08-03T16:00:00.000Z
logo: /static/img/slide-roborock-logo.png
image2: /static/img/slide-roborock-image-2x.jpg
title: 石头科技
image: /static/img/slide-roborock-image.jpg
description: 石头科技致力打造创新的智能家电产品,用科技简化生活。
- titleEN: Nuro
descriptionEN: Nuro's mission is to accelerate the benefits of robotics for
everyday life. Their first step is a self-driving vehicle designed for
local goods transportation.
logo2: /static/img/slide_nuro_logo.png
sinceDate: 2016-09-29T16:00:00.000Z
logo: /static/img/slide_nuro_logo.png
image2: /static/img/slide-nuro-image@2x.jpg
title: Nuro
image: /static/img/slide-nuro-image.jpg
description: 基于机器人和自动驾驶技术,Nuro 正重塑物流配送等应用场景,给更多人的生活带来便利。
- titleEN: YATSEN
descriptionEN: Yatsen's mission is to create an exciting new journey of beauty
discovery for consumers in China and around the world.
logo2: /static/img/slide-yatsen-logo-2x.png
sinceDate: 2018-05-29T16:00:00.000Z
logo: /static/img/slide-yatsen-logo.png
image2: /static/img/slide-yatsen-image-2x.jpg
title: 逸仙电商
image: /static/img/slide-yatsen-image.jpg
description: 逸仙电商致力为中国乃至全球消费者,创造一个令人兴奋的探索美的新旅程。
summaryTitle: 立足当下 俯仰未来.svg
summaryTitleEN: Building on the Present,<br/>Forging ahead into the Future
summarySubTitle: 高榕相信,互联网和科技将成为提升社会生产力的重大推力,带来产业效率的提升和生活方式的革新。
summarySubTitleEN: We believe in the significance of internet and technology in
driving productivity, industrial efficiency and innovative lifestyle, and in
exerting impact on the progress of the future.
summaryKnowmore: 了解更多
summaryKnowmoreEN: Read More
portfolioText: 投资企业
portfolioTextEN: Active Portfolio Companies
portfolioNum: 300+
unicornText: 10亿美金俱乐部公司
unicornTextEN: Companies Valued at Over $1 Billion
unicornNum: 30+
IPOText: 上市
IPOTextEN: IPOs
IPONum: "24"
assetText: 团队规模
assetTextEN: Team
assetNum: 70+
assetNumEN: 70+
portfolioSummary: 高榕创投专注于早期和成长期投资,重点投资新科技、新消费、医疗健康等创新创业领域。高榕创投成立伊始,定位于中国的创始人基金(China's
Founders'
Fund)。高榕创投背后的出资人包括慈善基金、大学捐赠基金、母基金、家族办公室等全球顶级机构投资人,以及金融、医疗、零售、广告、工业制造、农业等行业的企业巨头;此外,高榕创投还邀请了包括腾讯、百度、淘宝、小米、美团、分众等在内的数十家互联网企业的创始人或核心高管成为出资人,一同寻找和助力优秀创业者。
portfolioSummaryEN: Gaorong Ventures is focused on early and growth-stage
investments, with a specialty in new consumption, new technology and
healthcare. Positioned as China's Founders' Fund upon establishment, we have
been proudly backed by a world-class group of investors, including pension
funds, university endowments, FoFs, and family offices, and leading corporates
across multiple industries ranging from finance to internet and many more.
Besides, our strategic investors, including the founders and senior managers
of Tencent, Baidu, Taobao, Xiaomi, Meituan, Focus Media, and other renowned
internet companies, make significant contributions to identify and empower
outstanding founders together with us.
portfolioSummaryEntry: 了解更多
portfolioSummaryEntryEN: Read More
teamSummaryTitle: 参差多态 分秒进化.svg
teamSummaryTitleEN: Diversity in Our DNA
teamSummaryText: 高榕由张震、高翔、岳斌三位创始合伙人于2014年1月创立。高榕创投创始团队亲历了过去17年中国互联网的演进历程,对帮助早期和成长期企业发展有丰富经验和广泛资源。至今,高榕已搭建起一个由理性思考者、前瞻者、梦想家构成的多样化团队。
teamSummaryTextEN: Gaorong is founded by Zhen Zhang, Xiang Gao, and Bin
Yue in January 2014. In the past 17 years, the three founders witnessed the
advancements of the internet industry and gained extensive experience and
contacts in helping early to growth-stage companies. Our team is comprised of
rational, visionary and adventurous individuals that are highly
entrepreneurial with strong spirit of partnership.
teamSummaryEntry: 了解团队
teamSummaryEntryEN: Read More
teamImage: /static/img/index-partners.jpg
teamImagex2: /static/img/index-partners@2x.jpg
news3dImage: /static/img/timeline-cn.png
news3dImageEN: /static/img/timeline-en.png
news3dImageMobile: /static/img/timeline-mobile-cn.png
news3dImageENMobile: /static/img/timeline-mobile-en.png
newsSummaryTitle: 精进不止 日月刷新.svg
newsSummaryTitleEN: Milestones
newSummaryEntry: 了解动态
newSummaryEntryEN: Read More
ronghuiSummaryTitle: 一路同行 朝夕相伴.svg
ronghuiSummaryTitleEN: Your Companion<br/>Along the Way
ronghuiSummaryText: 「榕汇」是高榕发起的创新社群,希望搭建一个由顶尖企业家、优秀创业者、行业专家、意见领袖等构成的生态网络。高榕希望成为连接者,以「榕汇」为依托,为优秀创业者分享认知和洞察,实现资源连接。
ronghuiSummaryTextEN: Our exclusive community Ronghui aims to construct an
ecosystem of renowned entrepreneurs, founders, industry specialists, and
opinion leaders with in-depth industrial knowledge, offering a platform that
is conducive for accumulating diverse perspectives.
ronghuiSummaryEntry: 了解榕汇
ronghuiSummaryEntryEN: Read More
ronghuiImage: /static/img/2019.jpg
ronghuiImagex2: /static/img/2019@2x.jpg
---
---
home: 首页
homeEN: Home
about: 关于我们
portfolio: 投资企业
team: 团队
ronghui: 榕汇
news: 动态
warn: 严正声明
aboutEN: About
portfolioEN: Portfolio
teamEN: Team
ronghuiEN: Community
newsEN: News
warnEN: 严正声明
---
---
title: test
hide: false
createDate: 2024-03-01T08:42:59.862Z
abstract: test
abstractEN: test
content: "> test"
contentEN: test
pic: /static/img/camelsabove_zh-cn1389810021_uhd.0.b.jpg
---
---
title: 关于冒用高榕资本名义的严正声明
titleEN: 关于冒用高榕资本名义的严正声明
hide: true
createDate: 2024-01-24T01:41:33.435Z
abstract: 近期我司发现有不法分子通过网站、App、微信、微博等渠道,冒用高榕资本(包括但不限于高榕资本、Gaorong Capital、Banyan
Capital、高榕或者Gaorong)以及高榕资本工作人员(以下统称“高榕资本”)的名义,发布虚假信息,开展融资、理财、资本募集、产品销售等非法活动。
content: >-
近期我司发现有不法分子通过网站、App、微信、微博等渠道,冒用高榕资本(包括但不限于高榕资本、Gaorong Capital、Banyan
Capital、高榕或者Gaorong)以及高榕资本工作人员(以下统称“高榕资本”)的名义,发布虚假信息,开展融资、理财、资本募集、产品销售等非法活动。
**高榕资本特此郑重声明:**
高榕资本严格遵守相关法律法规及监管规范,旗下基金仅面向符合相关资质要求的合格投资人以非公开方式募集,不会以任何形式向任何主体承诺保底收益。高榕资本从未,也从未授权任何实体或个人以高榕资本名义通过任何公开方式(包括但不限于网站、APP、微信、微博等渠道)进行融资、理财、资本募集、产品销售等活动。
高榕资本与此类冒用高榕资本名义的实体或个人无任何法律或者商业上关系,其任何行为均与高榕资本无关。任何未经授权擅自冒用高榕资本名义的行为均系侵权行为,我司保留采取法律手段维护自身合法权益、追究侵权者法律责任的权利。
特别提醒广大公众提高警惕,切勿轻信此类虚假信息,以免遭受财产损失;如已遭遇此类情形请及时向公安机关、监管部门举报,以维护个人权益。
最后再次重申,有关高榕资本的信息请以如下官方渠道披露为准:
> 【官方网站】
>
> <https://www.gaorongvc.com/>
>
> 【官方微信公众号】
>
> 高榕资本
>
> ID:banyancapital
pic: /static/img/严正声明.jpg
---
---
news:
- title: 关于冒用高榕资本名义的严正声明
titleEN: 关于冒用高榕资本名义的严正声明
hide: true
createDate: 2024-01-24T01:41:33.435Z
abstract: >-
近期我司发现有不法分子通过网站、App、微信、微博等渠道,冒用高榕资本(包括但不限于高榕资本、Gaorong Capital、Banyan
Capital、高榕或者Gaorong)以及高榕资本工作人员(以下统称“高榕资本”)的名义,发布虚假信息,开展融资、理财、资本募集、产品销售等非法活动。
content: >-
近期我司发现有不法分子通过网站、App、微信、微博等渠道,冒用高榕资本(包括但不限于高榕资本、Gaorong Capital、Banyan
Capital、高榕或者Gaorong)以及高榕资本工作人员(以下统称“高榕资本”)的名义,发布虚假信息,开展融资、理财、资本募集、产品销售等非法活动。
**高榕资本特此郑重声明:**
高榕资本严格遵守相关法律法规及监管规范,旗下基金仅面向符合相关资质要求的合格投资人以非公开方式募集,不会以任何形式向任何主体承诺保底收益。高榕资本从未,也从未授权任何实体或个人以高榕资本名义通过任何公开方式(包括但不限于网站、APP、微信、微博等渠道)进行融资、理财、资本募集、产品销售等活动。
高榕资本与此类冒用高榕资本名义的实体或个人无任何法律或者商业上关系,其任何行为均与高榕资本无关。任何未经授权擅自冒用高榕资本名义的行为均系侵权行为,我司保留采取法律手段维护自身合法权益、追究侵权者法律责任的权利。
特别提醒广大公众提高警惕,切勿轻信此类虚假信息,以免遭受财产损失;如已遭遇此类情形请及时向公安机关、监管部门举报,以维护个人权益。
最后再次重申,有关高榕资本的信息请以如下官方渠道披露为准:
> 【官方网站】
>
> <https://www.gaorongvc.com/>
>
> 【官方微信公众号】
>
> 高榕资本
>
> ID:banyancapital
pic: /static/img/严正声明.jpg
---
\ No newline at end of file
---
title: 最新动态.svg
titleEN: News
searchPlaceholder: 搜索
searchPlaceholderEN: search
allNews: 全部动态
allNewsEN: All News
---
---
title: 榕汇──创业者的认知与资源连接器.svg
titleEN: Ronghui, a Community for Innovation
subTitle: 创新社群「榕汇」致力于为创业者提供第一流的行业认知和洞察,帮助创业者在快速变化的商业环境下,加速认知升维。与此同时,商业社会正不断走向共生连接和网络协同,高榕希望通过生态网络的搭建,更好支持创业者。<br/><br/>「榕汇」已经为高榕被投企业创造了多方位的认知分享场景,组织了多场关于公司战略、组织管理、资本运作、市场营销、品牌公关、用户增长、政府事务等模块的专题沙龙。
subTitleEN: Ronghui aims to facilitate exchange of experience and insights among
the founders and assist their advancement amid the fast-paced business
environment. In the meanwhile, business society is evolving gradually towards
more symbiotic and synergistic. Therefore, we seek to better support
entrepreneurs by creating an inter-connected ecosystem.<br/><br/>Since
inception, Ronghui has successfully organized seminars with various topics,
including but not limited to company strategy, organization management,
capital operation, sales and marketing, public relations, user growth,
government relations, etc.
allArticles: 全部文章
allArticlesEN: All articles
imageList:
- image1: /static/img/ronghui-left-1.jpg
image1_2: /static/img/ronghui-left-1@2x.jpg
- image1: /static/img/ronghuichenweiru-2x_23-2-17.png
image1_2: /static/img/ronghuichenweiru-2x_23-2-17.png
- image1: /static/img/ronghui-left-3.jpg
image1_2: /static/img/ronghui-left-3@2x.jpg
- image1: /static/img/ronghui-right-3.jpg
image1_2: /static/img/ronghui-right-3@2x.jpg
mask: /static/img/ronghui-mask.svg
readMore: 阅读更多
readMoreEN: Read More
article:
- createDate: 2023-06-01T10:23:22.029Z
title: 生成式AI浪潮革新创造力与生产力
type: 生成式AI系列
abstract: 随着生成式AI这一变革性技术被竞相应用到各类产品、服务和业务流程中,不止打开了生产力的天花板,也孕育着新的业务模式和惊喜的创造力;不止在数字世界构建无限可能,也正渗透进现实世界加速效率。面对全新的AI疆界,促使创业者与开发者思考:生成式AI创造的未来将是何种图景?哪些行业会迎来革新?创新企业应如何积极拥抱?2023年,榕汇分别联合亚马逊云科技、NVIDIA
初创加速计划、微软大中华区战略孵化器(CSI)等合作伙伴,举行行业研讨会,与前沿科技一同关注——运用生成式AI等技术打造创新驱动产品、推动产业效率升级、提升出海与营销效果。
pic: /static/img/abstract_generatveai_23.jpg
- createDate: 2022-06-01T10:55:26.199Z
title: 组织升级季:保持动能,面向未来
type: 组织
abstract: 企业的一切战略与增长,最终都需要组织承接。今天创业企业的组织打造面对一系列新老挑战:如何管理跨地区、跨学科背景的团队,实现组织目标统一?面对外部环境变化,企业如何建立组织韧性,真正有所作为?怎样让全球创新组织实践更好在本土落地?如何实现人才与组织所需能力的匹配,把能力建在组织之上?2022年6-7月,榕汇联合亚马逊云科技,邀请业界、学界专家,举办“组织升级季”系列活动。
pic: /static/img/abtract_ronghuiorganization_22.jpg
- createDate: 2022-04-03T10:50:16.086Z
title: 宏观战略季:观宏观之势,明战略之道
content: ""
pic: /static/img/abstract_ronghuihongguan.jpg
type: 战略
abstract: 2022年3-5月,榕汇举办宏观战略季系列活动,与合作伙伴富途一同,从宏观经济、兵法与战略、企业战略规划方法、政府经济治理逻辑等维度,面向高榕被投企业,共同向外洞悉宏观趋势变化,向内发现新的战略支点。著名管理教授家宫玉振、华为原电商平台部总裁彭鹏、招商银行研究院宏观经济研究所所长谭卓、富途高级合伙人邬必伟等专家分别进行主题分享。
- createDate: 2022-05-06T11:01:14.468Z
abstract: 后疫情时代,全球市场涌现诸多新变化,如电商加速渗透、更多协同办公、供应链格局变化、新的合规要求等;与此同时,包括云原生、跨境物流等在内的全球化底层基础设施日趋完善。今天的竞争格局对新一代出海创业者提出要求更高,需要具备“全球化原生”思维,在团队、供应链等层面进行全球资源配置,更多获得规模红利与比较优势。近期,榕汇组织「全球化」增长系列活动,联合TikTok
Shop、亚马逊云科技、安克创新、华为公司、博然思维等合作方,就新机遇、平台生态、全球合规、品牌力打造、全球团队协作等话题面向创业者展开分享。
title: 全球化增长系列分享
type: 全球化
pic: /static/img/abstract_ronghuiglobal.jpg
- createDate: 2022-10-28T10:18:00.000Z
title: 前沿技术企业走进比亚迪
type: 产业创新日
abstract: 全球范围内生产、生活各个领域的电动化进程加速,新能源产业迎来巨大机遇,前沿技术企业也在探索如何抓住这一增长引擎,并思考在产业链中的定位与创新机会。成立于1995年的比亚迪,经过20多年的高速发展,不仅一跃成为新能源汽车全球销量冠军,也在电子、汽车、新能源和轨道交通等领域发挥着举足轻重的作用。36氪联合高榕资本组织“创新技术企业走进比亚迪”。活动上,来自机器人、芯片、SaaS等领域的前沿技术企业代表一同参观比亚迪展厅,全面了解比亚迪业务布局,深刻感受“技术为王,创新为本”的企业文化,并聆听比亚迪关于品牌战略图景与智能产品创新的分享;中欧国际工商学院战略学陈威如教授,为前沿技术如何帮助产业共赢升级提供了务实的理论框架;参会企业也与比亚迪共同就未来战略规划、产业投资布局、产业链合作机遇等话题展开研讨。
pic: /static/img/abstract_ronghuibyd_22.11.jpg
- createDate: 2022-01-20T04:57:00.000Z
title: 医疗科技创业如何打磨创新力、产品力、组织力
type: 医疗健康
content: ""
pic: /static/img/abstract_health_22-1.jpg
abstract: 前沿科技与生命科学相映交汇,产业政策与资本市场同频共振,催生以创新为核心驱动力的本土医疗科技企业,蓬勃生长。当人工智能、智能制造等技术应用在医疗领域,成为创新源泉,也带来临床验证、跨学科团队管理等新课题;医药已成为资本市场重要板块,但市场也经历波动,二八分化显著;面向全球化竞合,想要弯道超车,也比以往任何一个时代更加考验创始人的全球化视野、差异化战略,以及行动是否果决。医疗科技创业是一场真正的“勇敢者游戏”,必须有足够创新力、产品力和组织力的玩家,才能真正将技术从实验室带入临床,为人们带来更多的健康福祉。高榕资本榕汇联合兴业证券、华为云,举办医疗企业CEO闭门会,邀请兴业证券董事总经理/研究院副院长/医药行业首席研究员徐佳熹博士、华为公司特聘管理顾问/教授/原变革项目管理部部长张真平等专家,与高榕被投医疗企业创始人,“共话医疗科技创新趋势,升级研发团队组织管理”。
- createDate: 2021-11-24T15:08:44.295Z
title: 创新企业A股IPO战略
type: 资本市场
abstract: 11月15日,北京证券交易所鸣锣开市。应该如何理解北交所与创业板、科创板的定位差异?哪些规则要点需要创业者格外关注?IPO申请流程应该如何规划?11月24日,中信建投证券投行委委员、董事总经理李旭东,结合注册制丰富实践经验,以及新三板和北交所改革的深度参与,在榕汇为创业者线上分享对于北交所政策的解读,并给予创业公司务实理性的上市规划指南。李旭东指出,北交所的意义不仅在于增设一家证券交易所,更重要的是通过服务对象的前移和扩展,推动注册制从内涵和外延方面进一步改革,满足国家创新驱动战略的需要,激发中小企业创新发展的活力。
pic: /static/img/abstract_lixudong_21-11.jpg
- createDate: 2021-10-27T15:10:49.110Z
title: 走进北交所,抓住资本市场战略机遇
type: 资本市场
abstract: 10月27日,高榕资本组织近20家被投企业走进北京证券交易所。全国股转公司市场发展部专家就北交所与新三板政策制度进行介绍,并与参会企业进行互动交流。其中包括北交所构建契合创新型中小企业特点的,涵盖发行上市、交易、退市、持续监管、投资者适当性管理等方面的基础制度安排。
pic: /static/img/abstract_beijiangsuo_21-10.jpg
- createDate: 2021-07-29T15:14:00.148Z
title: 沟通成就无限游戏
type: 组织管理
abstract: 对于创业者来说,沟通似乎是无时无刻不在发生的。得到App联合创始人、CEO脱不花在榕汇分享了基于创业历程总结的沟通与组织管理经验,她指出,“很多创业者以为自己沟通了,其实根本没有”。创业过程中很多管理问题,往往是沟通不足的代偿。而所有一号位,都可以通过沟通场域、沟通频率、沟通氛围的设计,非常深刻地影响一个组织。用沟通创造工作意义感,是优秀组织的责任。脱不花也与创业者们分享了如何通过沟通建立工作中的意义感、有效激励员工的底层原则,激励、辅导等高频场景的沟通方法论,以及“向下一级写周报”“工作手册开源”等实践中提炼的有效经验。
pic: /static/img/abstract_tuobuhua_21-07-29.jpg
- createDate: 2021-05-21T15:17:01.333Z
abstract: 尽管世界格局喧嚣多变、风险四伏,充满不确定性,但对于中国To
B创业者来说,这也许是最好的时代。经历了漫长疫情的洗礼和进化,以及后疫情时代产业侧数字化新基建的加速,中国优秀的To
B创业者不但可以穿越周期,成为时间的朋友,其中也必然涌现与中国经济体量相匹配的世界级的伟大To B企业。当然这不意味着To
B创业乃至增长一片坦途。逆风飞翔的To
B创业者要化解多变复杂的挑战,要身段灵活,不但要其疾如风,面对技术的革新、云生态的变迁,以及客户体验的苛求快速进化;也要其徐如林,在一路狂奔的同时,随时可以从一线战场抽身,审视关键节点,从容不迫做难而正确的事情,专注构建高质量的增长系统。2021年4月,高榕资本发起2021榕汇To
B增长营,并正式集结了46位优秀To
B创业者。在3个月的时间里,增长营围绕新商业模式、大B与小B销售、客户成功、内容营销等增长关键环节,通过行业实战专家分享、案例研讨等方式,帮助创业者收获认知与启发,真正解决增长痛点问题。
title: 榕汇To B增长营 做难而正确的增长
type: 增长
pic: /static/img/abstract_ronghuitob_21-05.jpg
- createDate: 2021-04-25T14:07:53.462Z
title: 走进企业微信:探索私域增长新动能
type: 增长
abstract: >-
高榕资本超过60家投资企业和合作伙伴走进企业微信,共同探讨私域增长新动能。截至2020年底,企业微信连接550万真实企业与组织,服务超4亿微信用户数。
企业微信高级行业总监陆昊围绕企业微信创新思考与行业实践,分享企业如何通过企业微信,对内让信息流转高效、对外连接12亿微信用户,实现降本增效。企业微信美妆日化行业总监苏元、企业微信IT互联网行业总监张迪,分别围绕消费和企业服务行业,结合行业标杆案例,分享企业微信如何助力企业打造私域体系、构建商业持续增长护城河。
pic: /static/img/abstract_qiwei_2021-04.jpg
- createDate: 2021-03-27T14:04:52.988Z
title: “向华为学战略”CEO闭门会
type: 战略
abstract: 3月,榕汇走进华为公司,举办“向华为学战略”CEO闭门会。华为公司战略部总裁张文林从华为战略管理框架BLM出发,分享华为公司战略管理实践。张文林指出,战略是不能被授权的,领导力需要贯穿战略制定与执行的全过程;企业应该以差距为牵引,以战略问题为龙头,集中力量解决关键问题;战略制定需要与执行紧密结合,做到上下协同,力出一孔;通过战略审视,及时诊断和纠偏;组织学习是持续不断的过程,需要终年持续不断,用流程固化优秀实践;最终通过专业能力提升+组织领导力提升两条线并进,建设组织的战略能力体系。
pic: /static/img/rongbao2_21-05-06.jpg
- createDate: 2021-03-18T14:10:22.175Z
title: 走进巨量引擎:数字营销激发生意新可能
abstract: 3月18日,高榕资本联合UpHonst
Capital,邀请超过40家新锐消费品牌公司,走进巨量引擎,共同探讨如何通过数字营销激发生意新可能。巨量引擎行业专家围绕日化美妆、食品饮料等赛道分享行业大盘最新趋势,并就品牌号运营构建长效运维矩阵、抖音营销趋势等实战话题展开分享和互动。
type: 增长
pic: /static/img/abstract_juliang_21-03-18.jpg
- abstract: 自2019年注册制推行以来,中国资本市场正在经历前所未有的变革,带来若干过去无法想象的突破:上市发行条件更具包容性,上市周期更可预期,市场化发行定价机制给予潜力公司更高估值溢价,退市机制助推优胜劣汰的市场生态形成。这些突破为高成长型创业公司带来了全新的证券化机会,去创造更多价值、激励更多创新。榕汇举办资本市场主题系列沙龙,邀请中国证券业协会党委书记、执行副会长安青松,华泰联合证券党委书记、董事长江禹与高榕被投企业展开分享;并与上海证券交易所举办科创企业交流座谈会,上海证券交易所就科创板制度与定位、发行与上市条件、信息披露准则等内容,为高榕投资企业进行系统性介绍。
createDate: 2020-12-23T09:42:00.000Z
pic: /static/img/abstract_stock_21-02-01.jpg
title: 注册制时代,创新企业如何把握上市发展之路
type: 资本市场
- abstract: 在中国双循环发展新格局下,消费的引擎作用更加凸显,中国消费行业拥有巨大的创业机会。疫情之后,全球消费业态呈现怎样的新格局?中国消费行业有哪些革命性的基础设施变化?社交电商、生鲜零售、C2M等热门消费赛道有哪些新动向?还有哪些大消费行业未来可期?在高榕资本·榕汇线上闭门会上,高榕资本合伙人陈耀昌结合在消费行业多年的战略管理经验,为创业者带来具有全球视野和全产业链格局的分享。陈耀昌认为,中国品牌未来的发展会更加国际化,未来五年中国走出的国际消费品牌一定会越来越多。有几个大前提。第一个大前提,中国有世界级的生产中心,而且品质在不断提升。第二,中国有全世界最领先的社交媒体营销玩法,包括社交媒体、短视频、直播,我们可以把一样的营销玩法带到国际上,很容易把全球的新消费群吸引到中国品牌上。第三,过去二三十年,中国积累了很多优秀的本土消费品牌人才,再加上跨国公司培养出来的专业品牌经理,有很多人才在推动中国品牌的国际化。第四个推动力,国际消费品牌大玩家受到一些因素影响,会制造很多机会。
createDate: 2020-11-06T07:23:00.000Z
pic: /static/img/abstract_edchen_20-11-08.jpg
title: 创业者如何制胜消费新浪潮
type: 新消费
- abstract: 9月19-20日,华为云与高榕资本举办《畅聊5G+机遇
共话战略与组织》私享会,来自高榕投资的前沿技术、产业升级、消费与互联网等领域企业近30位CEO、CTO走进华为,与多位华为战略、技术和解决方案专家,深度探讨5G商用、云化成熟、AI落地与各行业结合带来的创新机遇,并一同学习华为的战略制定与组织管理经验。
createDate: 2020-09-19T05:46:16.930Z
pic: /static/img/abstract_huawei_20-09-27.jpg
title: 走进华为:畅聊5G+机遇,共话战略与组织
type: 平台合作
- abstract: 对于很多创始人和高管团队来说,大部分人都是一路从基层走到高层的,所以往往带着对中层团队的认知和想象,去理解、要求、招聘高管团队。什么是真高管团队?普遍存在严重的认知差异。例如,很多人对高管团队的基本假设是其乐融融、充满和谐的,但高管团队的张力和冲突才是常态;如果不善于面对冲突,不善于解决冲突,不善于在冲突中学习,本身就不适合在高管团队中生存。首席组织官创始人、原龙湖集团执行董事兼首席人力资源官房晟陶,在高榕资本榕汇分享了他对于真高管团队的方法论,希望帮助企业核心领导团队构建“真高管团队”的思维框架和方法论,拆解“真高管团队”模型的关键要素,并演绎如何使用这套框架去解决动态复杂社会系统中的真实问题。
createDate: 2020-08-26T05:44:09.715Z
pic: /static/img/abstract_fangshengtao_20-08-26.jpg
title: 打造真高管团队 升级组织进化发动机
type: 组织管理
- abstract: 在创业公司一路向前的时候,都有两个轮子——业务轮子和组织轮子,两个轮子必须足够同频,才能保障战车从容向前,走得稳一点、久一点。在创业早期,创始人往往全身心投入到业务和竞争中,但在度过生死存亡的“ICU阶段”之后,创始人必须有足够的耐心和一定的留白去做组织建设。我们该如何真正理解组织这个有机体?使命、愿景、价值观是否是必答题?如何让组织成长驱动力从创始人“个人的意愿”,衍进到“团队目标”和“组织使命”?不同层级的人在组织上的本分是什么,为什么说高层要“清清楚楚的糊里糊涂”?一个好的组织何以良将如潮?原阿里集团资深副总裁、首席人力官邓康明,在高榕资本榕汇上分享有关创业企业如何进行组织建设和团队打造的系统性顶层思考。
createDate: 2020-08-07T05:40:21.173Z
pic: /static/img/abstract_dengkangming_20-08-07.jpg
title: 打造组织进化飞轮 赢得长期战场胜利
type: 组织管理
- abstract: 随着人、商品、内容的彻底数据化,品牌营销全面转向数据驱动;与之相对,从前仅凭个体创意驱动的品牌投放,对很多企业来说变成巨大的浪费。在高榕资本联合参加学院举办的线上沙龙上,分子优联CEO、前阿里巴巴市场总监、B站品牌市场中心总经理夏济,分享品牌如何做好数字营销、全面提升投放转化效率。夏济指出,面对流量逻辑日趋复杂化的互联网平台,以及多元细分的用户,今天做品牌营销,一方面要用产品经理思维洞悉不同平台背后的产品和流量机制;另一方面要用数据驱动一切决策,通过多维数据分析以及“内容赛马”,不断逼近人、内容和触点的最佳匹配。
content: ""
createDate: 2020-07-26T04:30:12.772Z
pic: /static/img/abstract_digitalmarketing_20-07-26.png
title: 数据驱动品牌高效触达真正用户
type: 品牌
- abstract: 流量存量时代,流量变得比黄金还宝贵。在今天做流量增长,已经如同在沙漠里种树,需要抛弃原始粗放式的流量获取方法,用新的思维、新的技术和匹配的组织结构,去驱动流量的有效增长。在高榕资本联合清华五道口全球创业领袖项目举办的《修炼内功:创业领袖实战场》系列线上互动沙龙上,流量专家、光年实验室CEO张国平展开线上分享,解读流量本质,并分享关键流量渠道核心玩法以及流量团队搭建指南。世界上只存在两种流量模式,一种是基于关键词的流量模式,一种是基于关系链的流量模式。而获取流量有一个底层公式——内容在渠道中间流动。今天的“流量猎人”们必须用数据和技术两条腿走路,才有可能找到流量的“绿洲”。
createDate: 2020-06-05T08:18:22.345Z
pic: /static/img/abstract_ronghuitraffic_2020-6-5.jpg
title: 流量增长新思维、新技术、新团队
type: 增长
- abstract: 互联网创业成功离不开高效的技术研发体系,而高效体系的背后关键在于人。创业公司在发展过程中,时常面对技术不断推倒重来、技术风险频繁出现、研发流程不顺、效率不高等痛点;人才方面,也经常陷入高端技术人才难以引进、优秀人才流失等困境。在高榕资本联合清华五道口全球创业领袖项目举办的《修炼内功:创业领袖实战场》系列线上互动沙龙上,HiCTO创始人、前大众点评CTO龚世海,基于多年的一线技术管理经验,就创业公司在技术体系和团队搭建上的痛点问题开出“良方”。
createDate: 2020-04-26T14:14:00.000Z
pic: /static/img/abstract_ronghuiit_2020-4-26.jpg
title: 打造高效技术研发体系
type: 技术研发
- abstract: 4月11日,高榕资本联合参加学院主办“2020 To
B企业服务增长新路径”线上研讨会。高榕资本投资合伙人刘新华,基于过去10年对企业服务公司的观察,以及对Zoom、Slack、Salesforce、Dropbox等海外标杆公司的增长案例研究,梳理企业服务增长进击的新思路与新模式。活动还在高榕资本执行董事辛旺的主持下开展了一场精彩的线上研讨,邀请了7位To
B服务领域的实战派大咖参与,共同聚焦如何抓住行业趋势、如何寻找市场切入点、如何选择客户、如何实现有效增长等核心话题。
createDate: 2020-04-11T14:13:00.000Z
pic: /static/img/abstract_tobgrow_2020-4-21.jpg
title: 寻找To B增长新路径
type: 行业研讨
- abstract: 在找到赛道和标杆的基础上,选对人、搭建一个好的团队,是创业成功的基础。如何在面试中识别对的人?有空缺时,是内部提拔还是外部空降?选人如果不能完美,最重要的考量维度是哪一条?早期元老跟不上公司发展了怎么做?在高榕资本联合清华五道口全球创业领袖项目举办的《修炼内功:创业领袖实战场》系列线上互动沙龙上,跟谁学联合创始人吕伟胜,基于在跟谁学和新东方超过17年的组织管理实战经验,与200位高榕资本投资企业代表和清华五道口全球创业领袖项目学员,分享了识人用人的一手思考。吕伟胜分享了团队管理16字箴言——选人要准,用人要狠,管人要严,待人要好。吕伟胜指出,如果选人不能完美,最重要的标准是看有没有“要性”。在组织管理上,吕伟胜认为,打赢胜仗才是最好的团建。作为创业者,最重要的是坚定的目标与信念,要始终面对目标做决策。
content: ""
createDate: 2020-04-01T05:43:00.000Z
pic: /static/img/abstract_lvweisheng_20-04-01.jpg
title: 识人用人实战课:打造有战斗力的团队
type: 组织管理
- abstract: 疫情之下,沟通、办公、娱乐、购物等更大比例迁移线上,移动互联网实现了更广泛的下沉。榕汇线上沙龙,联合清华五道口全球创业领袖项目,一同聚焦特情之下创业公司如何理解增长之道、抓住增长新势能、实现增长重启。高榕资本投资合伙人、前快手首席增长官刘新华,结合全球疫情最新演变,分析了中国创业企业可以抓住的增长契机,指出可以在战疫后重构增长的价值网络,并为创业者带来疫情下的10大实战增长建议。刘新华指出,这场“世纪之劫”的确让人感到痛苦,但站在进化论的角度反思,人类社会如同大自然,天生具备反脆弱能力,那些不能摧毁我们的终究会使我们更强大。对于创业者来说,无论当下的伤害如何,最正确的心态一定是从应激反应的冲击波中清醒过来,探寻新常态下的反脆弱增长之道。
createDate: 2020-03-23T08:03:00.000Z
pic: /static/img/abstract_growthhacking_20-03-23.jpg
title: 特情下的创业企业增长重启
type: 增长
- abstract: 越是面对复杂变化的形势,企业越要修炼好自己的基本功。危机之下,CEO如何做出最佳战略决策,攻防兼备、转危为机?榕汇举办线上沙龙,邀请分众传媒董事长江南春,水滴筹、水滴保险商城CEO沈鹏,为高榕CEO和高管分享危机之下如何破局,如何在艰难时刻练好内功。江南春分享了在亲历03年非典、08年金融危机和新冠疫情3次危机后的思考,并提炼了3点认知——危机即战机,是非即成败,分化即进化。沈鹏则分享了水滴33天的战“疫”历程,以及疫情之下所展开的组织变革和企业文化升级。
createDate: 2020-02-25T07:54:00.000Z
pic: /static/img/abstract_jiangnanchun_20-02-25.png
title: 穿越危机:做好决断、备足子弹
type: 战略与组织
- abstract: 在企业发展过程中,定方向、找人才、树愿景是创始人的必修课。战略、人才、愿景三位一体的组织,往往会爆发巨大的潜力,驱动公司实现指数级增长。CEO如何制定正确的战略方向?如何聚齐一帮优秀的人做有挑战的事?怎么把听起来“虚”的使命、愿景和价值观真正落地?榕汇·战略与组织管理沙龙邀请上市公司董事长,以及万为瞻卓管理咨询公司合伙人、前支付宝学习发展总监郑嵘(关山),为高榕投资企业CEO带来深度分享;并展开组织管理workshop,一同探讨组织管理实战方法论。
abstractEN: In business development processes, determining directions,
recruiting talents and building visions are compulsory for business
founders. How to formulate the right strategic directions? How to gather a
group of elites together and work on challenging businesses? How to make
missions, visions and values to really get off the ground? Regarding
these, Ronghui invites the chairman of a listed company, and Rong Zheng,
the former director of Alipay Learning Development, to give a deep sharing
for CEOs from enterprises invested by Gaorong Capital. We also carry out a
workshop regarding the organization management to discuss about practical
methodologies of this issue.
createDate: 2019-12-05T09:02:38.666Z
pic: /static/img/abstract_ronghuistrategy_19-12-05.jpg
title: 战略与组织管理沙龙
titleEN: Strategy and Organization Management
type: 战略与组织
typeEN: Strategy and Management
- titleEN: Enterprise Service Private Session
abstract: 11月1日,高榕资本创新社群「榕汇」在厦门建发集团举办企业服务CEO闭门会。30位高榕投资企业CEO齐聚,共同探讨未来企业服务和产业升级发展新趋势,并围绕新商业模式、To
B销售、产品矩阵等关键问题展开深度对话。
contentEN: ""
pic: /static/img/abstract_enterprise_191108.jpg
createDate: 2019-11-08T11:16:49.365Z
abstractEN: On 1st Nov., the Gaorong Capital innovation community, Ronghui, held
an enterprise service private session for CEOs. A total of 30 CEOs from
enterprises invested by Gaorong Capital gathered together, exploring new
trends of enterprise services and the industrial upgrading. They also
discussed in depth regarding key issues, including new business models, To
B sales, product matrixes, etc. Xiang Gao, the founding partner of Gaorong
Capital, figured out that " From enterprise services to the industrial
upgrading is one of the most important directions in the next 5 years.
That is to say, looking for the breakthrough of the industrial upgrading
on the basis of enterprise services, a host of outstanding businesses will
arise on the market. At this point, it is just the beginning."
title: 企业服务CEO闭门会
content: >-
11月1日,高榕资本创新社群「榕汇」在厦门建发集团举办企业服务CEO闭门会。30位高榕投资企业CEO齐聚,共同探讨未来企业服务和产业升级发展新趋势,并围绕新商业模式、To
B销售、产品矩阵等关键问题展开深度对话。
## 一、高翔:从企业服务到产业升级
![](/static/img/enterprise2_191108.jpg)
高榕资本创始合伙人高翔指出,举办此次企业服务CEO闭门会的一个初衷是看到了企业服务市场诸多重要变化,这些变化中正孕育着巨大机会。
在高翔看来,目前企业服务市场有5个变化值得关注。
变化一:降本增效的大背景。面对内外环境的压力与挑战,今天企业的生存难度在加大,会更多考虑运用企业级服务实现降本增效。
变化二:平台级的推动力。一直以来,平台级的推动力是改变互联网产业发展的重要力量。当下云平台正在积极投入做好基础建设,并且将不同服务整合在生态之上,从而降低了企业使用企业级服务的门槛。有了平台级力量的推动,企业服务市场将会迎来快速发展的机会。
变化三:工作与生活的界限模糊。移动互联网让每个人工作与生活的界限变得模糊,使得企业员工更高频使用企业级服务。
变化四:交易沟通的在线化。今天,诸多交易相关的沟通是发生在线上的,大大增加了交易的有效沟通时间与效率,将带来全新机会。
变化五:商业服务的个体化。今天,商业服务的个体化是重要趋势,例如社交电商,每个个体都有机会成为商业服务的提供商。而这些新的个体化商业服务商,就需要使用到企业级服务。例如美国有很多家庭医生,从而出现为这些家庭医生提供服务的公司。
基于这些变化,高翔认为未来企业服务公司需要密切关注以下要点。
第一,企业服务公司的发展速度会比过去快。
第二,利用好平台生态(几朵云)很重要。企业服务公司应该更主动地拥抱阿里云、腾讯云等生态平台。
第三,需要重视移动端的用户体验。当工作与生活界限模糊,需要让用户在移动端的体验足够好,产品的生命力才会强。因此企业服务公司要特别重视用户在移动端的体验。
第四,从产业的角度去思考企业服务。今天企业服务在发展过程中,由于系统的融合、上下游的整体信息化、To B和To C界限的模糊,会带来新的商业模式。过去很多公司只提供软件服务,但今天有可能通过软件服务敲开产业的门,可以更多从产业角度思考企业服务。
第五,产业升级打开企业服务的天花板。过去一段时间产业互联网受到行业广泛关注。高翔更倾向用“产业升级”概括今天的机会:对应“消费升级”,产业也在不断突破边界、实现升级。而企业服务公司应该在这样的趋势中,先通过企业服务打开产业之门,并思考所在产业有哪些痛点待解决,从而发现新模式、找到新增长路径。
高翔总结,“从企业服务到产业升级,是未来5年最重要的方向之一,以企业服务为基础,找到产业升级的突破口,会诞生大批优秀公司。现在,才刚刚开始。”
## 二、To B赛道关键问题:商业模式,销售,产品
在闭门会上,专家与高榕投资企业CEO们也就To B赛道的商业模式、销售、产品策略等关键问题展开讨论。
干嘉伟在代表案例拆解时说,To B生意有两个特点,一是多关键决策人,二是业务非本人兴趣和直接利益相关。To C的生意可以“种草”,但是To B不行,所以需要销售去推动。而To B的商业模式是否成立,需要基于两点,首先是能否真正为客户提供价值,满足长期、刚性的需求;其次在提供客户价值基础上,需要所消耗资源低于社会平均水平或者效率高于社会平均水平,企业才能持续生存与发展。
智能仓储机器人公司极智嘉Geek+创始人、CEO郑勇,则分享了围绕复杂决策和大客户的To B销售策略。极智嘉的系统产品和解决方案覆盖了货品存储、订单拣选、自动搬运、包裹分拣等不同的物流应用场景,服务众多零售、物流和工业制造类的企业。郑勇分享,极智嘉在制定销售策略时更多聚焦重点行业与全球性的大客户,未来策略也将从“打猎”向“种地”倾斜,即围绕重点行业去耕种,不断挖掘和培育新客户机会,并持续提升客户满意度。
![](/static/img/enterprise3_191108.jpg)
奥哲网络是一家以低代码开发平台为核心的云计算产品与方案提供商,通过H3 BPM、云枢和氚云三大产品业务线,布局了低代码较完整的场景,包括管理中台、业务中台、场景小应用等,客户类型覆盖特大型客户、大型客户和中小型客户。奥哲网络创始人、CEO徐平俊分享了奥哲的产品矩阵策略。他强调,产品不能为了分而分,一定要从用户出发,实现精准定位;其次在多产品开发过程中要特别注意后台的充分共享。
![](/static/img/enterprise4_191108.jpg)
此次活动,高榕投资企业CEO也参访了建发集团,建发集团投资总监、建发新兴投资公司总经理蔡晓帆就集团业务展开介绍。活动现场,CEO们也与建发供应链运营、房地产开发、旅游酒店等业务部门展开产业资源连接与解决方案探讨。
![](/static/img/enterprise5_191108.jpg)
type: 企业服务
- titleEN: Approaching QQ Mini Programs
abstract: 9月26日,高榕资本「榕汇」与QQ小程序「Mini
Talk」,发起共创沙龙。邀请共计45位高榕投资企业成员共赴腾讯,与QQ小程序团队深度对话,从产品/运营/商业多维度理解平台战略,共同探索创新开发模式与商业变现机会。
typeEN: Cooperation
pic: /static/img/abstract_ronghuiqq_19-09-26.jpg
createDate: 2019-09-26T07:47:00.000Z
abstractEN: >-
"What does it mean to develop QQ mini programs? Firstly, you could enter a
promising market which consists of millions of young users. Secondly, you
could enjoy more open capabilities while developing." Ziran Xia, the
leader of the industry ecology team from QQ mini programs, shared the
strategic value of QQ mini programs for developers in Ronghui event.
On May 31st, QQ launched the platform of the mini programs. Based on QQ, the largest social network for young people in China, QQ mini programs provide a new way to connect with 800 million active users, especially young generation users.
On September 26th, Ronghui and QQ launched an event. 45 members from Gaorong enterprises had an in-depth talk with the team from QQ mini programs. QQ shared platform strategies from multiple dimensions, such as product development, product operation, and commercialization. In the future, Gaorong enterprises and QQ will explore more innovative development models and commercial opportunities together.
title: 走进QQ小程序:在8亿月活的QQ里,共创年轻人热爱的小程序
content: >-
![](/static/img/ronghuiqq1_19-09-26.jpg)
“做QQ小程序意味着什么?第一,极具含金量的年轻用户市场;第二,更多的能力开放。”QQ小程序行业生态负责人夏自然在「榕汇·走进QQ小程序」活动中,分享QQ小程序对于开发者而言的战略价值。
今年5月31日,QQ小程序全面上线;7月,正式面向企业、个人及第三方开发者开放自助接入。基于国内最大的年轻人社交平台QQ,QQ小程序的上线,提供了覆盖8亿新生代活跃网民、连接年轻用户的全新生态平台。
9月26日,高榕资本「榕汇」与QQ小程序「Mini Talk」,发起共创沙龙。邀请共计45位高榕投资企业成员共赴腾讯,与QQ小程序团队深度对话,从产品/运营/商业多维度理解平台战略,共同探索创新开发模式与商业变现机会。
![](/static/img/ronghuiqq2_19-09-26.jpg)
## 做QQ小程序意味着什么?年轻+开放
“也许你不再是清风拂袖年少的你,但QQ依然是那个朝气蓬勃的QQ。”夏自然介绍,纵观中国互联网近20年历史,如果说有一款永远在长大、但从未变老的产品,非QQ莫属。今天,QQ用户基数达到8.079亿月活跃用户数。智能终端月活用户数达7.07亿,且年轻用户的比例仍在稳步提升。
因此,对于开发者来说,QQ小程序是一个可以触达年轻用户的“新阵地”。上线3个月以来,平台已涌现出一批能够捕捉年轻人娱乐、社交等需求的热门“Q味小程序”,覆盖泛娱乐类、个性化功能类、社交类、精美创意类、校园类等。
此外,开放能力也是QQ小程序平台的一大优势。QQ小程序为开发者提供快速入驻支持、丰富的特殊能力和多场景应用曝光。其中包括打通即时通信(QQ)和异步社交(Qzone),加码社交流量传播。
高榕资本创始合伙人高翔也指出,QQ小程序作为连接和服务年轻用户群体的新平台,对于创业企业来说值得布局。
## 产品/运营/商业,三大维度读懂QQ小程序
在分享中,来自QQ小程序产品、运营和商业化团队的负责人,从各自维度分享QQ小程序为开发者提供的开放能力和赋能力。
QQ小程序产品负责人魏潇源指出,作为国民级应用,QQ可以和微信分赛道合理构建腾讯开放生态,服务腾讯用户多样化需求。基于QQ产品和用户特征,QQ小程序将在社交、个性化、线上线下融合上更多发力。在产品开发上,QQ小程序平台为开发者提供丰富的特殊化能力,包括一键发说说、实时语音、开放数据域、呼起第三方APP等,未来也将不断完善支付、直播等能力。
QQ小程序行业运营负责人黄倩,为在场企业分享玩转QQ小程序的官方运营指南,包括QQ小程序的入口分布,冷启动支持和平台运营扶持策略。
QQ小程序商业化负责人谷佩莹,则从商业化赋能角度,分享QQ小程序如何围绕广告、支付等商业化模式,为开发者提供解决方案。例如在流量变现方面,QQ小程序提供多样的广告组建形态、差异化的产品能力支持,和简便的流量主接入方式。
![](/static/img/ronghuiqq4_19-09-26.jpg)
## 高榕投资企业对话QQ小程序:未来如何共创
在活动中,来自高榕大家庭的45位成员,也分享了各自在小程序生态的探索布局,以及未来对于QQ小程序的开发创想。例如,蛋壳公寓已入驻QQ小程序平台,蛋壳公寓首席增长官侯一凡指出,蛋壳公寓致力于为年轻人创造优质的租住公寓,因此目标用户群与QQ用户群较为契合,未来会更多探索如何在QQ小程序上为年轻用户提供更丰富的连接形态。
此外,开发者还就电商小程序开发机会、QQ小程序的社交传播打通等话题,与QQ小程序团队展开对话、共同探讨未来产品开发可能。
![](/static/img/ronghuiqq3_19-09-26.jpg)
正如QQ小程序的Slogan所说,这是“一个开放而充满想象的平台”。期待高榕投资企业未来与QQ平台携手,探索开放合作空间,共创年轻人喜爱的“Q味小程序”。
高榕资本「榕汇」,致力于搭建生态网络,为优秀创业者分享认知和洞察,实现资源连接。未来,也将持续与生态平台合作,更好支持创业者。
type: 平台合作
- titleEN: "How Tech Companies Build Their Oversea Communication Ecology? "
abstract: 随着中国企业走上国际化道路,面临全新的国际舆论和商业环境,对于企业来说挑战与机遇并存。在国际传播过程中,中国企业需要建立系统性的洞察、正确的叙事方式以及专业的工作机制,才能更好地赢得机会。「榕汇」邀请多位资深媒体与国际传播专家,分享企业如何正确搭建海外传播生态。
contentEN: ""
typeEN: International Communications
pic: /static/img/ronghuigc.jpg
createDate: 2019-08-02T02:54:00.000Z
abstractEN: On the way of globalization, Chinese enterprises are facing new
international media and business environments. For enterprises, this is an
era with both of the challenges and opportunities. During the process of
global communications, Chinese enterprises need to establish systematic
understandings, the appropriate storytelling approaches, and professional
working system to take the opportunities. Ronghui invited several
international media and communication experts to share how enterprises can
establish oversea communication ecology in the right way.
title: 科技企业如何搭建海外传播生态?
content: ""
type: 国际传播
- titleEN: Enterprise Strategy of Public Affairs
abstract: 从洞悉当下宏观政策环境,到制定企业公共事务战略,再至企业公共事务职能战略架构,「榕汇」举办“公共政策和公共事务战略”主题分享,为企业提供多维视角与策略分析。前阿里巴巴公共事务副总裁、启迪区块链集团总裁石东伟,人民网舆论与公共政策研究中心主任祝华新等嘉宾现场分享干货。
contentEN: ""
typeEN: Public Affairs
pic: /static/img/ronghuigr.jpg
createDate: 2019-07-27T02:52:00.000Z
abstractEN: "Ronghui organized a sharing event about the enterprise strategy of
public affairs. During the event, guests shared their diverse perspectives
and strategic analysis like getting insights into the current macro
environment of policy-making, working on the strategy of public affairs
and the organizational structure of public affairs. Dongwei Shi, Former VP
of public affairs of Alibaba, the CEO of Qidi Blockchain group, and Huaxin
Zhu, President of public opinion and public policy research center at
People.cn, shared their knowledge with attendees. "
title: 企业公共事务战略
content: ""
type: 公共事务
- titleEN: How Enterprises Should Adapt the Growth Mentality to Achieve the
Flywheel Effect?
abstract: 如何从0到1实现增长,是每个互联网产品需要突破的命题。本质来讲,增长是一种思维模式,可以帮助企业找到战略支点,促成企业实现飞轮效应和后续增长。2019年1月,「榕汇」邀请增长专家、AI营销平台以及投资企业,分享系统的增长方法论,并对企业进行“增长诊断”。
contentEN: ""
typeEN: Growth Hack
pic: /static/img/ronghuihack.jpg
createDate: 2019-01-22T02:53:00.000Z
abstractEN: "Every digital product has faced or is facing the problem of “from 0
to 1”. Actually, growth is a mentality, which can help the enterprises
find out the point they can leverage strategy and achieve the flywheel
effect and future growth. January in 2019, Ronghui invited growth hack
experts, AI marketing platforms leaders, and enterprise leaders to share
the systematic growth methods and ran “growth diagnosis” for enterprises.
"
title: 企业如何运用增长思维,实现飞轮效应?
content: ""
type: 用户增长
- titleEN: "When Social Media Meets AI, What are the Possibilities? "
abstract: 当“社交”遇到“AI”,映入脑海的是什么?算法推荐信息流?Siri?还是科幻电影?在「榕汇」社交AI沙龙上,来自高榕社交公司和技术公司的CEO们,一同碰撞思维花火,从社交关系链、内容生产、内容监管、内容分发与变现4大维度,预判AI这一Super
Power为未来社交带来的可能。
contentEN: ""
typeEN: Social AI
pic: /static/img/ronghuiai.jpg
createDate: 2018-11-10T02:54:00.000Z
abstractEN: "When social media meets AI, what is on the top of your mind? News
flow supported by recommendation algorithm? Siri? Or sci-fi movies? At the
workshop of Social AI, the CEOs from the social media companies and tech
companies got together to share the knowledge of social networks, content
production, digital governance, content distribution, and monetization.
They also predicted the possibilities of how AI, the Superpower, can
empower the future social life. "
title: 当社交媒体遇到AI,会爆发哪些可能?
content: ""
type: 社交AI
- abstract: 企业危机爆发具有一定偶然性,但危机管理与防范却有章可循。企业需要防范未然,建立系统性机制,进行危机预案和预演,帮助企业营造良好的经营生态。而信息的直接沟通、数据的大量积累、有效的传播渠道,是企业开展公关工作时最重要的基石。在「榕汇」公关主题沙龙上,公关专家、媒体专家,一同拆解危机公关的道与术。
abstractEN: "Enterprises can get into crisis without any prediction, but crisis
management and preventability are something that can be worked on.
Enterprises need to prevent the crisis in ahead, establish the systemic
solutions, prepare solutions in advance and rehearse the solutions. Those
may help enterprises build healthy operational ecology. Direct
communications, massive data collections, effective communication channels
are critical to enterprise PR. In the PR workshop hold by Ronghui, PR
expertise and media experts were discussing the philosophy and practices
of crisis PR. "
createDate: 2018-11-01T02:05:00.000Z
pic: /static/img/ronghuipr.jpg
title: 危机公关的“道”与“术”
titleEN: The Philosophy and Practices of Crisis PR
type: 品牌公关
typeEN: Branding and PR
- titleEN: How PR Becomes the “Missile Troop” in a Company?
abstract: 对CEO而言,PR对公司最大的价值是什么?为什么说好的PR负责人所带领的是“战略导弹部队”?优秀PR对事的“得体”反应和“顺势而为”的公关战略是什么意思?PR应该如何做到“得体”?如何审时度势建立“顺势而为”的PR策略?如何与CEO默契配合,在各部门间树立威信、有效协调?原饿了么公关副总裁郭光东,在「榕汇」PR沙龙上,面向高榕投资企业创始人与PR负责人展开内部分享。
typeEN: Branding and PR
pic: /static/img/ronghuispr.jpg
createDate: 2017-11-22T11:14:00.000Z
abstractEN: What’s the most significant value the PR can bring to the company?
Why we are saying the excellent PR team leader is leading a “missile
troop”? What’s an appropriate reaction? What does “go with the flow”
strategy means? And how to make the judgement to use the strategy? How to
collaborate with the CEO efficiently and build up its reputation?
Guangdong Guo, the previous VP of Ele.me, shared his experience with the
founders and PR team leaders of enterprises.
title: PR如何成为公司的“战略导弹部队”
content: >-
本文为原饿了么公关副总裁郭光东在榕汇活动上,面向高榕被投企业创始人与PR负责人的内部分享。
![](/static/img/ronghuispr.jpg)
以下为分享实录:
大家平常基本看不到公关的人在做什么,我们更像个地下工作者,平时瞎忙,正好高榕资本施加了一个外力,让我逼迫自己想一想我这两年的经历和体会。非常感谢高榕资本的邀请。
其实CEO要出去演讲或是接受采访之前,他自己也需要想一想,沉淀一下思维。这也是我们公关人能够给到CEO的重要外力。CEO非常忙,但必须花时间思考公司战略、行业趋势的问题,这其实对他也是很好的促进。
今天主要聊一下这两年下来我对公关的的粗浅体会,叫《我的公关哲学》,一个是“得体”,一个是“顺势而为”。
## 1、优秀公关最值钱的两个点:人脉和判断力
先来聊聊公关的价值,公关有没有用?公关值钱吗?
公关在很多时候是公司的一级职能部门,差一点的是市场部下面的二级部门,貌似可有可无。我觉得公关的价值很多时候是被低估的,甚至都没有“招聘男公关女公关”的电线杆小广告重视,人家开出来的工资明显高于社会平均工资(笑)。之所以提出这个话题,也是希望各位CEO更好地理解公关对公司的价值,也有助于我的同行在公司更有地位。
公关非常有用,这并不是王婆卖瓜。无论你是初创企业还是独角兽、BAT这样大体量的公司,公关的价值都是不言而喻的,但有时候你未必感觉得到。
比如公关对招聘大牛是非常有用的,特别是初创企业,优秀的人要离开一家好公司跳到你那儿,凭什么?这要看你的公关平时做得怎么样,能否建立起他对你这家公司的信心。
比如融资,如果公关做得好,投资人可能会不经意地注意到你,公司估值可能会翻倍上涨。
比如业务开拓,经常打交道的商务伙伴经常听到你、经常看到你,就会对你有信心,长期的合作也会非常容易。
另外,PR对新客户的获取也是非常重要的。很难量化一篇文章或CEO的演讲到底获得了一千个新客还是一万个新客,但它的作用真的是润物细无声。
而且公关不仅对外,对于对内凝聚员工士气也非常重要。这绝不仅是人力资源做的事情,也是公关的重要职能。因为员工看到我的公司这也好那也好,CEO这么有魄力、有领导力,就会增强员工的向心力。
所以,公关的价值和作用可能是在这几方面:招聘、融资、业务开拓、新客户获取、凝聚士气。我经常重复的一句话是:如果只剩下一块钱做Marketing的话,我一定会把它投在PR上。
公关值钱吗?或是你舍得为公关花钱吗?事实上,公关开支是一家公司里投入产出比最高的。相对于你的广告或其它方面的支出,公关最便宜而效果又是最大化的。有一本比较有名的书,美国人写的,《公关第一,广告第二》,推荐大家看看。
谈到公关值不值钱,很多具体的案例可以让我们感受到优秀公关的巨大价值,以及平庸公关造成的巨大损失。
先举一些负面的例子。比如,有公司在IPO之后,发生了几天内跌掉数十亿美金市值的情况。因为它对公关认识不足,反应差劲。其实公司的基本面没有变化,营收也很好,问题就出在公关应对上。平常觉得公关可有可无,但这个时候要让CEO花2亿美金请一个好公关,他肯定愿意,起码他也赚了几十亿啊。这时候公关起码值几十亿美金。
再比如Uber,CEO卡兰尼克都被驱逐出公司了,为什么?一个重要原因是公关太烂。公司经常有各种丑闻,性骚扰、恶性加班、员工士气低落……最后投资人看不下去了,决议把这个CEO炒掉。看来不愿意在公关上花钱,你CEO的位置可能都不保。
再举几个正面例子。比如阿里的公关做得好,对公司价值上升起到了难以估量的作用。当十几年前马云在湖畔花园毛坯房里给十八罗汉开第一次会的时候,就录制了视频。请大家想想看这是多神奇的一件事情?这是非常出色的公关意识。后来无论是对美国的eBay还是其他公司的竞争中,公关都起到了非常大的作用。
亚马逊的公关水平是我个人非常推崇的。亚马逊现在市值5000亿美金,但它市盈率多高?200多倍,放在中国你肯定觉得是妖股,但大家就是对它有信心,相信贝索斯一定是牛人。为什么?一个重要原因就是他的公关做得好。他每年一封“致股东信”,已经成了他的行为艺术,而且那封信每次都会流传,他不论在什么场合、什么机会都会强调客户第一,强调亚马逊的价值并不是靠利润,而是靠现金流,靠将来对整个行业的改造。亚马逊无人店Amazon Go的宣传片拍出来,哇,太炫了!简直神一样的公司。
所以公关非常值钱,在座的CEO如果真的志存高远的话,我希望你能真正在意这事。借此机会也想提醒一下各位CEO,公关很像战略导弹部队。平时打仗都是手枪、机枪在打,很难用到导弹,但有支战略导弹部队部署在这里,对于真的懂的CEO会很有安全感。亚马逊就请了白宫的发言人去做公司的公关高级副总裁。通常来说,好的PR团队投入产出比可能是公司里最高的,你要留心找一个真正好的人来领头。
那么一个好的公关值钱在哪里?第一,他的人脉;第二,他的判断力。这两项中,公关人最值钱的就是判断力,很难靠KPI衡量,真的是靠情商,靠长期阅历、知识结构积累的,就是一种直觉。
下面切入正题,聊一下怎么做公关。
## 2、“得体”是公关处事的最高境界
某件事来了之后公关应该怎么反应,我觉得对事反应的最高境界应该是“得体”二字。
得体看似应当,其实很难做到。所以我在与公关小伙伴们交流时,最多强调的就是得体、得体、得体。
做公关如同做人,公关做得好你首先得做个好人,你处事得体,别人就能感知到你是个好人。得体,说明你言行得当,最重要的是与你的身分相称。不得体的反面就是失礼,你没这个身分还要冒充、吹大自己的身分,或是过于刻意地低调。一个人得体,别人会觉得跟你交往如沐春风。而公关经常代表公司面对公众,公众不反感你、不讨厌你,而且你把事儿摆平了,这就是公关对事的最高境界。
公关反应不得体的事儿比比皆是,我只举两个最近的例子。
有家金融公司回应媒体对它的负面报道,结果满纸荒唐言,说的那些话,私底下都不好意思说,但却是以公司声明的形式发出来的。我当时看了“惊为天人”,看这个回应你会觉得老板已经慌了,已经进退失据,已经在乱来了,大有“引刀成一快,不负少年头”的气概。如果真的他出什么事儿,我觉得公关可能是踹老板最后一脚的人。
还有一个例子,有公司上市之后突然遭到不少媒体“攻击”,它就急了,发了封律师函,而且是以公司声明的形式发出,律师函中各种威胁媒体,不仅追究你的民事责任,还要追究你的刑事责任,要把你抓起来。出了这样的律师函,基本上就与所有媒体为敌了,这时候没搞你的也会扑上来咬你,而且人多势众,你更不可能告我了,事实上后来你听说它告谁了吗?没有。
我一直觉得,告媒体是下下下策,媒体说错了你可以去沟通解释,不能没说两句就抄板砖。公关部是有话好好说部,不是革命武装部,为自己公司的一点事去浪费宝贵的司法资源也不好嘛。发律师函,起诉媒体,很多时候只会引起更多人反感,我觉得这是不得体的处理。
我们再来看看几个得体的例子。阿里的文案水准不错,入情入理,而且经常能通过长信的形式达到公关目的。每年中秋节,各家公司可能都会给媒体朋友送月饼。有的媒体人估计会收到几十盒,分不清哪盒是谁家送的。去年中秋节前后我去拜访媒体,一位媒体朋友说,你看这是阿里的月饼。我说,你为什么记得?她说,礼品盒里附了一张卡,卡上讲了三段人生故事。这可能有点儿《读者文摘》的调调哈,但一下子就可以在几十盒月饼里让你记住它,因为都是很正向的人生故事,和过节不违和,这样的处理就非常得体。
还可以举一个腾讯的例子。前段时间有好多篇文章把小马哥在朋友圈里的各种小举动列出来了。比如,一家公司的CEO发了条朋友圈,“晚上12点刚开完会,还是要锻炼,决定跑步回家。”马化腾在下面回复,“你是换了衣服再背着背包跑吗?”那人说,“办公室备了衣服,让司机把包送回家”。马化腾又问:“路上的人和车那么多,让司机送你到体育场或者室内跑,会更安全吧?” 还比如一个媒体人发了一个朋友圈,晒了参加腾讯举办活动的照片,马化腾就在下面留言,“你也来了?没人告诉我啊”。你会感觉马化腾还会如此关注一个记者。再比如,一个投资人贴了一张自己孩子在船上钓海鱼的图片,马化腾留言说,“孩子太轻小心安全”。看了这些,你会觉得这是符合小马哥人设的,你会觉得小马哥非常温情。他之所以能运作这家公司,能积聚世界上这么好的人才,不是没有道理的。这个如果用在一般人身上没意义,反而托大,但把小事情用在这种层次的人身上恰恰是非常得体的一种做法,以小见大,非常高明。
结合自己的例子,饿了么对一些事件的回应,可能大体也符合我所说的“得体”二字。
比如有一件事情,去年10月份,饿了么突然受到很多媒体特别是自媒体的攻击,“你平台上面怎么有这么多卖狗肉的店?这是极其野蛮的行为,为什么吃狗肉?”批评的声浪越来越大,所以我们决定回应。如何得体处理其实很难:如果要下架狗肉,吃狗肉的人会觉得你矫情,不顾及他们的利益;如果不下,爱狗人士会认为你没有底线,更要继续围攻你。但无论爱狗人士、吃狗肉的人士,都是平台的用户,我们都需要团结。
我们高层郑重讨论之后决定把狗肉品类下架,但作为一家商业公司,又不宜让自己陷入伦理的争议漩涡,我们在回应信里是这么说的,“我们无意以某种道德的姿态去博取眼球,作为一家订餐平台,也不便介入狗肉可吃与否的伦理激辨,促使我们最终下定决心的,仅仅是基于对食品安全本身的考量。”我们观察到国家并没有专门对狗肉的检疫标准,如果没有检疫标准又产地不明,极有可能携带寄生虫、狂犬病等病毒,会对食品安全构成很大的风险。所以我们说,在狗肉问题上我们看到并理解各方诉求,也充分尊重每个人的选择,作为订餐平台,饿了么在这个问题上诉求只有一个,就是要确保8000万用户的食品安全(现在饿了么已经有2亿多用户),我们全部下线。而且根据相同的逻辑,我们下线狗肉的同时也对其他没有检疫制度的猫肉、蛇肉等下架。
饿了么平台上有数以千万计的产品可供用户选择,弱水三千又何必只取一瓢饮?包括文案开头也不是惯常的写法,“狗肉可不可以被食用?食用狗肉到底是品尝人间美味,还是对人类最亲密朋友的背叛?”
大家可以看到,这封告商户和用户书,不是简单粗暴地仅仅告诉大家一个结果,而是用了一种说理、论证的写法,把我们思考问题的逻辑完整地呈现给公众,整个论证的落脚点也和平台的身份相配,基本上做到了得体。
后来这个回应的效果还蛮好,爱狗人士对我们赞不绝口,说我们没有大公司的傲慢,对待问题不敷衍,没有给他钱让他删文章,吃狗肉的人士也觉得这个回应站得住脚,非常理解。
这是我们对这个事件的总体回应,既能把危机度过,又能借这个危机真正化危为机,正好也是对平台价值观的一次宣扬,我们就是只重视食品安全。
类似的还有一个关于急哭外卖小哥的回应。突然有一天网上疯传一个视频,一个饿了么的外卖小哥,因为送餐马上就要迟到,在电梯里急得大哭。大家一方面同情小哥,另一方面觉得平台是不是有管理失误的地方。我们也对此作了回应。
我们内部对事情做了了解。当时他急哭之后就辞职回到了江西老家,我们专程去看望了他,了解到他的腿本来就有旧伤,也不太适应北京的冬天。这里有一个平时不太会被关注的问题,在高峰期的写字楼送餐,最难的不是骑车送到写字楼,而是等电梯。中午高峰时段电梯层层停,每层一停半分钟就过去了,配送小哥会崩溃就非常能够理解了。
所以我们努力的方向首先是要关注这个小哥个体,对他进行慰问;然后,我们要从智能调度上更好地完善我们的调度系统,特别要评估到某一栋写字楼里电梯的停留时间;同时,我们在配送相应的奖惩制度上要更多容错,不要让小哥觉得被逼迫。
通过这事儿的回应,也让大家觉得饿了么还是蛮有温度的公司。对一位小哥很关怀,并且勇于检讨自己不足的地方,持续去改进。
还有一些特别敏感的事情,你得第一时间反应,不能给它持续发酵的空间。回应更得得体,不仅是要关注到事件某一方,真的是方方面面都要想到。而且快是非常重要的,就像森林大火,开始一个苗头如果不摁住,就会哗哗蔓延,最后你就是救不了。而且,应付特别敏感的事件,在快的同时,话一定要少说,措辞要字斟句酌。
近期大家比较关注饿了么一个事儿,跟百度外卖合并。大家会关注新闻稿,关注CEO出来表态,但我觉得还需要一种具象的东西给大家更为直接的冲击力。
所以在准备通稿、CEO公开信等物料的同时,我要求一定要有海报,而且对海报设计非常重视。因为CEO的公开信或通稿未必有多少人关注,大家只知道你合并就OK了,但这幅海报可能会流传开来。而且媒体在报道的时候也不可能满屏都是文字,他也会需要图片信息,图如果做得好,对扩大这个事件的影响、争取受众的好感方面是很有帮助的。“兄弟同心,其利断金”,这句话也比较得体地贴合了两家合并的场景。海报的下半部分还有句话,“欢迎百度外卖”。后来关于这个事件的报道里,几乎每则报道都引用了这张图。我们公司内部也到处都是这张海报,这也是我之前讲的公关的作用之一,团结内部士气。
所以,公关的物料不光是文字稿,也应该包括文字之外的多元素材,有时候真的是“一图胜千言”。这样的画面感、气势和背后的寓意,是文字稿难以替代的。
例子讲完了,还有一个事情必须提一下。我是媒体出身,现在做公关,与一直做公关的人可能有不太一样的地方,就是我对文本的要求。
我一直要求“杜绝公关腔”。不是发一篇文章列个“一二三”,官话套话,这种东西的传播效果是非常糟糕的。当然你也不能走向另一个极端,我不公关腔了,但是我‘ 作文腔’。文本写得像中学生作文,各种矫情,各种华丽辞藻堆砌,各种喊口号,甚至说满纸片儿汤话。这两个倾向都不够得体。
所以在内部和小伙伴交流的时候,我经常强调一句话:改造我们的文风。要想让公关的传播效果在一众公司里跳脱出来,杜绝公关腔是一个非常值得注意的方向。真的要入情入理,说人话。
以上就是我对于一事一议如何做到得体的观点和体验。得体是对事的最高境界。
## 3、“顺势而为”是公关战略的最高标杆
讲完了应该如何应对具体的事,对于好的公关、好的公司而言,还有一点非常重要:在趋势面前作出正确的判断。或者说,基于对整个公司、对整个行业的判断,决定如何做好公关。
这同样是我在内部交流里比较强调的:顺势而为。顺势而为包含什么呢?
先来讲讲如何做正面:
正面方面,在企业里做PR,一定要主题先行。你要围绕重点反复打,而不要东一榔头西一棒子。我以前做媒体,特别是我做的是市场化媒体,最讨厌、最反对的就是主题先行,你必须要客观,要根据事件本身来做报道;而公关不一样,公关特别强调主题先行,你肯定得说公司好,不能说公司不好,怎么个好法、往哪个方向用力,这个你要想好。
特别重要的是,必须要跟CEO沟通清楚。CEO本人要坐下来一起想,无论是公关VP还是PRD,都要聊透,趋势是什么?应该根据趋势制定什么主题?这样才会少做无用功。如果打得分散,大家也感觉不到,所以要根据趋势,从CEO起,从上到下的制定PR策略。
这里有两个点需要单独拿出来讲一下:
第一、 公关战略怎样制定?
我觉得要根据公司的发展阶段、公司的特性来制定。比如你to B还是to C,to C公关的重要性可能更高过to B,但to B也不是不做公关,to B更重要的公关对象是投资人,是你合作的商家。什么渠道、什么样的文章能打动他,你要往这方面努力。
如果你做的是很高冷、专业性很强的行业,应该怎么做传播?那你公关很重要的工作就是“翻译”,你要成为高冷行业和普通大众的沟通桥梁,跟他们要说人话,绝对不能扔一堆术语过去。之前我在媒体做法律报道的时候有一个经验,写法律的稿子不能出现一个法律术语,万不得已才用,我觉得这才是好的法治报道。只有你自己先搞懂,你才能做好翻译工作。
同时,还要根据公司的体量以及公司在所处行业内的位置来决定。比如,公司所在行业已经有领先的大公司了,你的正面公关就不要做得太过,不要因此而引起别人的注意。在行业里前面都是大佬的情况下,我建议在发展初级阶段,应该像朱元璋当年所采纳的建议一样:“高筑墙、广积粮、缓称王。”缓称王的战略很关键,别一上来就显得牛得一塌糊涂,那样别人会集中火力来对付你的。大公司的公关部可能会专门分一个部门来打你,这样你就得不偿失。但如果你的公司业务是行业首创的,那么你不妨自立为王,说“我就是这个行业的开创者”,这时候你的公关是可以往这方面打的。我觉得这个势要看清楚。
第二、 围绕重点反复打。
大家发正面稿的时候可能会觉得多发一篇、少发一篇,或是不发都无所谓,我只把危机摆平就行了。但必须清楚的是,公关的工作不光是危机公关,没有平时的积累,其实很难做到得体地处理危机公关。我要说的是“平时多PR,战时帮大忙”,这一点非常容易被大家忽略。虽然平常的文章本身没什么意思,或作用不是很大,但我还是建议持续地打。这个打法一定跟我们刚才讨论的如何定战略紧密结合。你要找到公司努力的方向,持续地打、反复地打,真要出了状况,大家有可能会选择原谅你。或者有些媒体觉得“他以前挺好的,这小事儿就不报了”,希望大家务必重视平常的公关输出。
再来讲讲负面方面:
每个公司都会有负面,但是,一定不要让外界感觉你天天负面缠身。如果公司高管很大一部分精力都用在处理负面上,那他抓业务的精力就不够了,而且积重难返,一旦遇到突发的大危机,真的就会墙倒众人推。这里面又有一点容易被大家忽视,我们说“把负面搞搞定”并不局限于跟媒体吃饭,你也需要把外部的其他利益相关人搞定,把公司内部搞定。
要做到这一点,需要公关负责人和团队在公司树立权威。一个是与所有部门建立有效沟通机制;一个是你的CEO要能够充分理解PR是什么,给你充分的信任和背书支持。
我们在公关部与业务部门之间建立了比较好的沟通机制,这在很多大公司比较常见。公关部的人不光负责对外联络媒体,对内也要联络相应的业务部门。我会在每个部门相应分配一个同事对接,发生事情时,他就可以迅速与相关部门联系沟通,给到反馈,查明事件。
我们会在每个部门派“PRBP”,HR有HR的BP,公关有PR的BP,随时了解这个部门有什么值得对外说的,或是有什么坑要填,每周都会联系的。而且我和团队讲得最多的就是“守土有责”,如果这个部门出事儿,为什么没有沟通到位?要把这个机制建立起来。
公关部或做公关的人在公司内部要树立权威,要通过成绩让大家觉得你是很专业的,特别是在经历几次大事件之后,公司内部对公关同事竖大拇指,以后沟通交流或是要他们做什么事,大家都会很配合。
有些公司之所以负面缠身,可能跟公司有一大批用力过猛的员工有关。这些员工很想维护公司利益,特别坚持原则,对待用户的投诉非常较真,不惜跟用户闹到法院见,媒体上见。其实这是很不划算的买卖,省了几个小钱,但媒体上天天是你的负面,公司声誉受到很大损失。这个时候,就需要公关部出面协调,教育公司。
我记得亚马逊有过一个案例。有个用户3年前买了一杯牛奶,他投诉说牛奶坏了,而且又没有亚马逊的发票,所以亚马逊的客服坚持不赔,这人就要去告媒体。亚马逊的公关说,应该赔偿!如果连一杯3年前的牛奶坏了而且又没有发票的用户我们都赔了,今天购买又有发票的用户能对我们不放心吗?“用户第一”的形象不就一下建立了吗?一杯牛奶值几个钱?赔10倍也没多少。所以,较真不要用在这种地方,不要跟所谓刁蛮的用户讲道理,让他们开心就好了。公司内部有的人会觉得是不是专门有人靠讹你吃饭,实际上这种人是非常非常少的。所以,公司在设置内部流程的时候,要充分考虑到面对小概率负面事件时的操作方案。
在面对负面情况的时候,看趋势,要考虑如何不让自己负面缠身,怎样通过内部流程梳理和内部部门协作把它搞定。
当正面持续打、负面都搞定的时候,顺势而为还需要注意很重要的一点:Timing(时点的选择)。
知道你应该在什么时候发力,这非常重要。对Timing把握最好的品牌之一就是杜蕾斯,这个大家学不会也不用学,因为讲黄段子的永远比讲普通段子的更受欢迎,这是由品牌特殊的功用决定的。不过,杜蕾斯把握Timing的能力值得我们好好学。
顺势而为的例子很多。腾讯在3Q大战之前,总感觉它的公关很被动,处处树敌,疲于应付,但3Q大战之后,它的公关观念整个扭转。它开始不断释放开放生态、打通连接、不谋求控股的信号。把这样的形象给到大家,让大家觉得这样的公司是可以信赖的,这其实是贴合了中国互联网发展的趋势。我们现在基本见面之后就会加微信,我觉得这可能是腾讯最好的公关了。
阿里美国上市的时候,就很好地做到了管理社会大众的情绪。很多人会觉得阿里人一夜暴富,会仇富,而阿里通过“梦想”为关键词来做传播。传播很广的那句话,“梦想还是要有的,万一实现了呢”,我们都非常熟悉。主要说了团队这么多年经历的风风雨雨,靠梦想打拼,创造了多少就业、多少机会给大家。阿里的公关团队对趋势、对受众心理把握比较准,然后去迎合它。
今年5月出了一个中国“新四大发明”的概念,这“四大发明”包括:高铁、网购、支付宝、共享单车。这个概念提出的时点很巧妙,是借着APEC杭州会议发出的,支付宝被纳入进来是非常高明的做法。
亚马逊在顺势而为上一直是佼佼者,每年一封致股东公开信,本身就是对行业趋势的研判和对公司战略的表达,具体的公关工作当然也就有章可循。
我们饿了么也可以举一个例子。两年前,十一长假刚过,大众点评和美团突然合并了,闪电合并之前没什么兆头,合并后外界对饿了么是否独立,是否也参与合并有种种猜测,天天有人问,遍布全国的饿了么员工一时也有点迷茫。这个时候,CEO觉得要出来说话,这个势要把控一下,于是,我们很快发了一封张旭豪给员工的邮件,当然也对外发,标题就叫“他们变,我们不变”,对内对外申明了饿了么所处的态势和方向,我们祝福他们,但我们还是保持独立发展不变,公平竞争也会持续下去。
顺势而为,很多人会觉得这不是应该做的吗?但说来容易,其实逆势而为我们看到的更多。有些公司并不是没做公关,但如果在某个关键节点上误判了趋势,把公关做过了,甚至做反了,那就是典型的逆势而为。特别是你公司的业务本来就有一定的瑕疵,可能大家并不怎么注意你,结果你刷屏式地宣扬,反倒迅速放大你的问题,群起而攻你,导致公司的公众形象瞬间崩塌。
最后,我想用一副对联来跟大家共勉:
能攻心则反侧自消,从古公关非好战;
不审势即宽严皆误,后来披阿要深思。
我只是改了成都武侯祠里的对联,“从古之兵非好战,后来治蜀要深思”,觉得放到公关上特别贴切,也特别应和了我这两年在公关方面的一点小收获。谢谢大家,让我们共同与CEO们一起做好PR,做好公司的军师。
type: 品牌公关
- abstract: 95后、00后作为第一批在青春期全面普及互联网的代际人群,他们的信息获取方式由单向被动变为双向主动;内容审美从静态接受变为互动创作;话语体系由基于人际传播变为基于大众心理的社群传播。他们有怎样的新文化、新审美和新需求?「榕汇」沙龙上,围绕年轻人文化进行创业的CEO们展开讨论。
abstractEN: Post-95s and post-00s are the first generations who grow up with the
internet. Their way of obtaining information is interactive and active
rather than one-way and passive. They like the contents with interactions
and creations. Their discourse is more based on massive community
communication rather than interpersonal communication. What’s their new
culture, new aesthetics and new demands? At Ronghui’s workshop, the CEOs
were discussing how they built their start-ups based on the young
generation culture.
createDate: 2017-09-13T02:35:00.000Z
pic: /static/img/ronghuyoung.jpg
title: 95后、00后的新文化、新审美、新需求
titleEN: New Culture, New Aesthetics and New Demands of Post-95s and Post-00s
type: 年轻人群
typeEN: Young Generation
- abstract: 在「榕汇」财务管理沙龙上,来自普华永道国际会计事务所多位合伙人、高榕资本CFO,与高榕投资企业CEO、财务负责人共同讨论企业财务工作的战略目标和实操管理。内容涉及财务管理决策、估值、税务筹划、数据管理与分析等方面。
abstractEN: At the financial management workshop, partners from PWC, CFO of
Gaorong Capital, CEOs and CFOs of enterprises were talking about the
enterprise financial strategy and management, including financial
decision-making, evaluation, tax planning, data analysis and management,
etc.
createDate: 2017-08-16T11:27:00.000Z
pic: /static/img/ronghuifm.jpg
title: 紧握财务生命线
titleEN: Grasp the Lifeline of the Financial Management
type: 财务管理
typeEN: Financial Management
- titleEN: Financing and Capital Operations
abstract: “融资需要有对标、有生态、有内容、有想象”,“企业需要合纵连横,吸收合并,跳跃式成长”,“融资需要小步快跑、落袋为安、缓称王”。在「榕汇」资本运作沙龙上,优客工场创始人、CEO毛大庆,泰合资本创始合伙人兼首席执行官宋良静等,为高榕投资企业解读融资之道。
typeEN: Capital Operations
pic: /static/img/ronghuicapital.jpg
createDate: 2017-05-20T11:30:00.000Z
abstractEN: "“Financing needs benchmarking, ecology, contents and imagination.”
“Enterprises needs to collaborate both vertically and horizontally, learn
from others, grow in a leapfrogging way.” “Financing needs to move quickly
but with small steps. Security only comes with the money received. Also,
patience is necessary before the claim to be the king.” At the Ronghui
workshop, the founder and CEO of UCOMMUNE, Daqing Mao and the Liangjing
Song, the founder partner and CEO of TH Capital shared their experiences
and insights about financing. "
title: 融资与资本运作
content: ""
type: 资本运作
- titleEN: Branding Strategy Taken by High-growth Enterprises
abstract: 面对竞争格局,企业怎样形成自己的竞争壁垒?分众传媒董事长江南春在高榕投资分享时说,企业最重要的使命是赢得用户的心,以及是否在时间窗口中完成对消费者心智的饱和攻击。创业公司需要从根本上理解并运用好赢得用户的心的方法,为了整体战略的胜利而不惜投入重兵。
typeEN: Branding Strategy
pic: /static/img/ronghuimarketing.jpg
createDate: 2017-02-24T11:29:00.000Z
abstractEN: "Facing the competitions, how can an enterprise establish its
barriers? Nanchun Jiang, the chairman of Focus Media said: “The most
important mission of an enterprise is to win the customers in a given time
fully.” Start-ups need to understand and take efforts to win the
customers. They should put great efforts to win the success for the
strategy. "
title: 指数级增长公司的品牌策略
content: "本文为分众传媒董事长、CEO江南春在高榕资本CEO年会上的演讲——《成长性企业的指数级增长》。\r
![](/static/img/ronghuimarketing.jpg)
同在座的各位一样,我们都是创业者。今天很高兴能在高榕资本的CEO年会上跟大家聊一聊指数级增长公司的品牌策略和打法。\r
## 1、品牌差异化:从『香飘飘』看如何开创产品品牌的新特性\r
在开创品牌的差异化定位时,一个做法是开创新品类,一个做法是开创新特性。\r
关于开创新品类,相信大家都会相对熟悉。我们来看一个速溶奶茶公司香飘飘的案例,讲讲如何开创新特性。\r
冬季热饮大家都喝过,但随着中国消费升级的趋势,速溶类热饮的销售受到了很大的影响。\r
第一,消费升级压缩原有消费场景。十几年前的学生既看不起电影,也泡不起咖啡馆,所以谈恋爱就以压马路为主。压马路的时候,冬季热饮就是很好的\
御寒的东西。但随着中国的消费升级,这个场景已经被大大压缩,年轻人都去看电影,都去泡咖啡馆了。\r
第二,中国消费者健康理念的提升。植脂末冲泡类的饮品逐渐被认为是不够健康的。\r
在这样的背景下,速溶热饮类企业除了改进产品品质之外还能做什么?\r
两年多前,香飘飘做了一个新的广告。广告语是这样的:『小饿小困,喝点香飘飘』。同时,还写了一句话:『新西兰奶源加印度红茶,一年12亿人次\
都在喝』。\r
此举让香飘飘的销量实现了大幅上升,因为这一举改变了它在消费者心目中的心智地位。\r
其实所有的广告在核心上都是一种基于心智科学的套路,它没有奥秘,它在本质上绝不是一种创意。\r
它的本质在于定位和信任状的建立。\r
首先,是定位。『小饿小困,喝点香飘飘』向消费者的心智提供了非常丰富的消费场景。比如,连续看七集网剧时,有没有小饿小困?晚上三点钟看欧洲\
杯,有没有小饿小困?早上没吃过早饭,在办公室有没有小饿小困?工作日下午两三点钟,有没有小饿小困?这种与生活状态的绑定让它找到了一个全新的市场定位,\
找到了一类全新的消费场景。对于公司来讲,这解决的是产品的议价问题。\r
其次,是信任状。『新西兰奶源加印度红茶,一年12亿人次都在喝』这句话解决了消费者对影响自身健康问题的顾虑,大大提升了消费者的安全感。对\
于公司来讲,这解决的是产品的信任问题,也就是交易决策成本问题。\r
我们这里多谈几句信任状,也就是制造安全感的话题。\r
关于信任状,品牌大师特劳特实际上提供了7种做法。我们这里举几个简单的例子加以说明。\r
以香飘飘为例,『原料产地背书』就是它的信任状,原产地代表了最高品质的原料。\r
『产品热销』是一类信任状。比如,XXX产品,全国销量,遥遥领先;XXX应用,多少亿用户都在用的新闻APP。\r
『历史绑定』是一类信任状。比如,XXX凉茶,道光年间300年历史;唐时宫廷宴,盛世剑南春。\r
另外,『从众心理』是最好的一种安全感。比如,12亿人次都在喝,消费者会很自然的认为产品是安全的。\r
为什么我要把信任状单独拿出来说一下?因为消费者的基础心智结构是缺乏安全感的。在他缺乏安全感的时候,如何用你的信任状创造他心里的安全感?\
这决定了消费者为什么选择你,决定了你产品的交易决策成本。\r
## 2、时间窗口:谁先做的重要吗?谁先进入消费者心智才最重要\r
在座的都是成功的创业者,我实际上自己也是一个创业者。\r
我们经常问这样的问题:你在市场上面对那么多竞争对手,你的竞争壁垒是什么?\r
很多人说,我的技术是壁垒,我的规模是壁垒,我的渠道是壁垒,我的商业模式创新是壁垒。我觉得在中国,这些都是壁垒,但都不是核心壁垒。\r
因为这些优势实际上只为你留下了三个月、六个月,至多不会超过12个月的时间窗口。\r
关键在于你有没有在时间窗口中完成对消费者心智的饱和攻击。\r
你应该有意识的在消费者心智中『划上一个等号』。这个意思就是,你要等于某个品类,或者你要等于某个特性。如果你没有划上等号,那么最后就会陷\
入惨烈的竞争。\r
今天谁先做的重要吗?谁先进入消费者心智才最重要。\r
我认为什么是第一?第一个进入消费者心智才叫第一。不能说你第一个做的就叫第一,最终要看谁先在消费者心中打下这个烙印。\r
## 3、饱和攻击策略:在开创品类/特性和时间窗口打开的前提下,为了整体战略的胜利而不惜投入重兵\r
在时机成熟时候要采取饱和攻击策略。\r
创业公司拿了钱,什么时候开始做品牌的落地? \r
第一,先要想一想,你有没有开创品类?有没有开创特性?\r
第二,要看一看你有没有时间窗口?\r
第三,如果前面的条件都具备,就要在时间窗口当中进行饱和攻击。\r
因为消费者心智非常懒,消费者心智最大的特点是先入为主。如果你不采取饱和攻击,不能迅速在消费者心智当中等于一个品类,或者等于一个特性,等\
到竞争对手先发力,你就可能被压制。等到竞争对手跟你同时发力,你就可能陷入到和对手的缠斗当中,就可能变成十几亿对十几亿的消耗式缠斗。\r
为什么先入为主很可怕?中国第一个升空的宇航员是谁?杨利伟。请问大家知不知道第二个升空的宇航员和最近一个升空的宇航员是谁?同样是宇航员,\
但是被你们忘却,原因是时间窗口问题。\r
当大家在时间窗口特别关注这个事情的时候,把它打进去,消费者就会牢牢记住。在过了三个月、六个月之后,时间窗口会突然关掉。关掉了之后,大家\
能够牢牢记住的只有一个。\r
好多十几年前的广告大家可能还记忆犹新。比如,『果冻就是喜之郎』,他们就是抓住了当时的心智时间窗口。\r
今天中国能不能做出比喜之郎更好吃、更便宜的果冻?都能。但是在消费者的心智当中不能,因为时间窗口已经关掉了。一关之后,就好像开了一道玻璃\
门,竞争对手冲不过去,这是因为被时间窗口封杀了。这个时间窗口一旦关掉,后来者就处在被压制的状态。\r
所以一个人是否能够在消费者心智地图上占据最有利的地形就变得非常重要。\r
当出现时间窗口的时候,一定要饱和攻击。这时候,公司管理层与其考虑投资收益怎么样,还不如去问需要投资多少才能确保胜利。这与在战争中能否不\
惜代价占领一个重要的山头确保战略胜利是非常相似的。\r
## 4、一家企业的使命:真正赢得用户的心\r
最后一点,所有行业的龙头公司,利润很大的公司都做了什么?\r
你观察一下就知道,他们在消费者的心智中都等于一个词。他们都封杀了一个品类的心智时间窗口。比如:腾讯等于即时通信,百度等于中文搜索,滴滴\
等于专车,喜之郎等于果冻。\r
如果你封杀不了品类就要想办法找特性,占据一个你能独享的词。比如,唯品会是一个专门做特卖的网站,王老吉是预防上火的饮料,神州专车是一个更\
安全的专车。你如果不能在消费者心中抢占一个词就会非常危险。每个人都要问自己,我在消费者心中有没有抢占一个词,这很重要。\r
消费者心智结构厌恶复杂,你必须一词定位。当你什么都想代表的时候,一定谁都代表不了。你在消费者心智中传播效应会很低,无法穿透消费者。所有\
成功的定位都是用一个词/一句话来代表的,无论是『怕上火喝王老吉』,『困了累了喝红牛』,还是『果冻就是喜之郎』。它们都能用最简单、最高效率的方式打进\
消费者心智。当你把自己在消费者心智里种上之后,这个心智优势一定会转化成市场份额的优势。\r
无论你今天处于优势也好,弱势也好,都要问问自己在消费者心中占不占一个独特的位置。消费者有没有一句话能说出选择你而不选择别人的原因?\r
谈到心智,想用《孙子兵法》的『道天地将法』来结束今天的演讲。\r
我在华师大读书的时候,经常看很多古文,给我印象最深刻的是《孙子兵法》。《孙子兵法》通篇只讲五个字叫『道天地将法』。\r
天地将法重要吗?重要,但是为什么道排在第一位?\r
先说一下什么叫『天地将法』:\r
天,天时,就是我刚才说的时间窗口;\r
地,是渠道和网络;\r
将,是在座各位创业者,是你的团队;\r
法,是运营和管理。\r
大家可以看古文当中讲『得道多助,失道寡助』,道就是『得人心者得天下』。\r
所以,道到底是什么?\r
道就是人心。一个企业最重要的使命就是赢得用户的心。\r
所以,我们所有的创业公司都要从根本上理解并运用好赢得用户的心的方法。"
type: 品牌战略
- abstract: 为什么HR是CEO的“第一工程”?CEO需要什么样的战略型HRVP?招人有哪些核心关键点?为什么说努力招聘是CEO进步的推手?如何提高群体的组织能力?「榕汇」组织管理沙龙上,创业酵母创始人、CEO张丽俊,分享指数型独角兽公司如何招聘和提升组织能力。
abstractEN: "Why is HR the first project for a CEO? What kinds of strategic HR
VP does a CEO need? What’s the critical points of recruitment? Why we are
saying “making efforts on recruitment is pushing the CEO to progress”? How
to improve the organizational skills of a group? In the workshop, the
founder and CEO of FoundingGaz, Lijun Zhang shared how high-growth
Unicorns do recruitment and improve their organizational strategy. "
createDate: 2016-12-11T11:51:00.000Z
pic: /static/img/ronghuihr.jpg
title: 指数型独角兽公司的招聘与组织发展
titleEN: "The Recruitment and Organizational Development of High-growth Unicorns "
type: 组织管理
typeEN: Organization Management
---
import yaml
def yaml_loader():
try:
with open("content/newsPage.md", "r") as stream:
data = yaml.load(stream, Loader=yaml.FullLoader)
l = data['news']
for idx, new in enumerate(l):
# print(idx, new['title'])
if(idx != -1):
with open('content/news/'+new['title'] + '.md', 'a') as outfile:
yaml.dump(new, outfile,default_flow_style=False,encoding='utf-8',allow_unicode=True, explicit_start=True, explicit_end=True)
# for workload in data:
# print(workload)
# with open(workload['workload']['name'] + '.yaml', 'a') as outfile:
# # if you put the variable "workload" in a list, you get the '-' in the yaml, as it denotes a list item.
# yaml.dump([workload], outfile)
except yaml.YAMLError as out:
print(out)
yaml_loader()
\ No newline at end of file
import os
import re
import sys
dir = r"C:\Users\lq\Downloads\newpic"
def renameall():
fileList = os.listdir(dir) #待修改文件夹
print("修改前:"+str(fileList)) #输出文件夹中包含的文件
currentpath = os.getcwd() #得到进程当前工作目录
os.chdir(dir) #将当前工作目录修改为待修改文件夹的位置
num=1 #名称变量
for fileName in fileList: #遍历文件夹中所有文件
pat="(.+)\.(jpg|png|gif|jpeg)" #匹配文件名正则表达式
pattern = re.findall(pat,fileName) #进行匹配
# print(str(num)+'.'+pattern[0])
print(pattern[0][0].replace("-min", "") + "." + pattern[0][1])
os.rename(fileName, pattern[0][0].replace("-min", "") + "." + pattern[0][1])
# os.rename(fileName,(str(num)+'.'+pattern[0])) #文件重新命名
# num = num+1 #改变编号,继续下一项
# print("---------------------------------------------------")
# os.chdir(currentpath) #改回程序运行前的工作目录
# sys.stdin.flush() #刷新
# print("修改后:"+str(os.listdir(dir))) #输出修改后文件夹中包含的文件
renameall()
const withCss = require('@zeit/next-css')
const RemoveStrictPlugin = require('remove-strict-webpack-plugin')
// const StringReplacePlugin = require('string-replace-webpack-plugin')
// const exec = require('child_process').exec
module.exports = withCss({
webpack: (cfg) => {
cfg.module.rules.push({
test: /\.md$/,
use: 'frontmatter-markdown-loader'
})
// breaks sourcemap
// cfg.plugins.push(new RemoveStrictPlugin())
// cfg.plugins.push({
// apply: (compiler) => {
// compiler.hooks.afterEmit.tap('AfterEmitPlugin', (compilation) => {
// exec(
// './removeStrict.sh',
// (err, stdout, stderr) => {
// if (stdout) process.stdout.write(stdout)
// if (stderr) process.stderr.write(stderr)
// }
// )
// })
// }
// })
// cfg.module.rules.push({
// test: /\.js$/,
// loader: StringReplacePlugin.replace({
// replacements: [
// {
// pattern: /"use strict"/gi,
// replacement: function(match, p1, offset, string) {
// console.log(match)
// return ''
// }
// }
// ]
// }),
// include: /node_modules\\*/
// })
return cfg
}
})
{
"name": "awesome-kitties",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"dev": "next",
"build": "next build",
"start": "next start",
"exportwatch": "nodemon -e js,css,json,md,png,jpg,svg --exec \"npm run export\" --ignore .next/ --ignore out/",
"export": "npm run build && next export",
"lintfix": "eslint --fix --ext .js,.vue --ignore-path .gitignore ."
},
"keywords": [],
"author": "",
"license": "ISC",
"browserslist": [
"> 0.001%"
],
"dependencies": {
"@babel/plugin-proposal-decorators": "^7.4.4",
"@zeit/next-css": "^1.0.1",
"@zeit/next-less": "^1.0.1",
"classnames": "^2.2.6",
"core-decorators": "^0.20.0",
"digit-roll-react": "^1.1.0",
"js-yaml": "^4.0.0",
"less": "^3.9.0",
"marked": "^0.7.0",
"next": "^9.0.3",
"overflowbox": "^1.0.1",
"qrcode.react": "^0.9.3",
"react": "^16.8.6",
"react-dom": "^16.8.6",
"react-fastclick": "^3.0.2",
"react-tap-event-plugin": "^3.0.3",
"react-transition-group": "^4.2.2",
"respond.js": "^1.4.2",
"string-replace-webpack-plugin": "^0.1.3"
},
"devDependencies": {
"autoprefixer": "^9.6.1",
"babel-plugin-transform-remove-strict-mode": "^0.0.2",
"babel-preset-react-app": "^9.0.0",
"eruda": "^1.5.8",
"eslint": "^6.0.1",
"eslint-config-prettier": "^6.0.0",
"eslint-plugin-prettier": "^3.1.0",
"frontmatter-markdown-loader": "^1.7.0",
"images": "^3.0.2",
"postcss-adaptive": "^0.5.0",
"postcss-px2rem": "^0.3.0",
"prettier": "^1.18.2",
"remove-strict-webpack-plugin": "^0.1.2",
"string-replace-loader": "^2.2.0"
},
"nodemonConfig": {
"watch": [
"pages/",
"static/",
"content/",
"common/"
],
"ignore": [
"out/*",
".next/*"
]
}
}
import React from 'react'
import App, { Container } from 'next/app'
import classnames from 'classnames'
// import * as Sentry from '@sentry/browser'
import initReactFastclick from 'react-fastclick'
const ThemeContext = React.createContext('theme')
// Sentry.init({
// dsn: 'https://3dcf09b0b1fa47c68140a350f02a80fe@sentry.io/1729008'
// })
export function ThemeDecorator(Component) {
return (
class extends React.Component {
render() {
return <ThemeContext.Consumer>
{(val) => {
const { en, setLang } = val
return <Component en={en} setLang={setLang} {...this.props} />
}}
</ThemeContext.Consumer>
}
}
)
}
function getQueryVariable(variable)
{
var query = window.location.search.substring(1);
var vars = query.split("&");
for (var i=0;i<vars.length;i++) {
var pair = vars[i].split("=");
if(pair[0] == variable){return pair[1];}
}
return(false);
}
export { ThemeContext }
// const injectTapEventPlugin = require('react-tap-event-plugin')
if (process.browser) {
// injectTapEventPlugin()
initReactFastclick()
}
class MyApp extends App {
constructor(...props) {
super(...props)
this.ctx = {
en: null,
setLang: (isEnglish, set = true) => {
if (this.ctx.en === isEnglish) {
return
}
this.ctx.en = isEnglish
if (set) {
window.localStorage.setItem('lan', isEnglish ? 'en' : 'zh')
}
this.forceUpdate()
}
}
}
// componentDidCatch (error, errorInfo) {
// Sentry.withScope(scope => {
// Object.keys(errorInfo).forEach(key => {
// scope.setExtra(key, errorInfo[key])
// })
// Sentry.captureException(error)
// })
// super.componentDidCatch(error, errorInfo)
// }
componentDidMount() {
// window.location.href.
var lan = getQueryVariable("lang");
if(lan) {
window.localStorage.setItem('lan', lan == "en" ? 'en' : 'zh')
this.ctx.setLang(lan == "en", false)
} else {
this.ctx.setLang(window.localStorage.getItem('lan') === 'en', false)
}
}
static async getInitialProps({ Component, ctx }) {
let pageProps = {}
if (Component.getInitialProps) {
pageProps = await Component.getInitialProps(ctx);
}
return { pageProps };
}
render() {
const { Component, pageProps } = this.props;
return (
<React.Fragment>
<ThemeContext.Provider value={this.ctx}>
<Container>
<Component {...pageProps} />
<div className={classnames({
en: this.ctx.en,
zh: this.ctx.en === false
})} id="modal-anchor"/>
</Container>
</ThemeContext.Provider>
</React.Fragment>
);
}
}
export default MyApp
// _document is only rendered on the server side and not on the client side
// Event handlers like onClick can't be added to this file
import Document, { Head, Main, NextScript } from 'next/document'
// import * as Sentry from '@sentry/browser'
// process.on('unhandledRejection', err => {
// Sentry.captureException(err)
// })
// process.on('uncaughtException', err => {
// Sentry.captureException(err)
// })
export default class MyDocument extends Document {
static async getInitialProps(ctx) {
const initialProps = await Document.getInitialProps(ctx)
return { ...initialProps }
}
render() {
return (
<html>
<meta name="viewport" content="width=device-width, initial-scale=1.0"></meta>
<meta httpEquiv="X-UA-Compatible" content="IE=Edge,chrome=1"></meta>
<meta name="keywords" content="高榕创投,高榕资本,Gaorong Venture,Gaorong Capital,高榕,Banyan Capital"/>
<Head>
<link rel="icon" type="image/x-icon" href="../static/favicon.ico" />
<script src='/static/px2rem.js'></script>
<script src='/static/statepolyfill.js'></script>
<script type="text/javascript" src='/static/babel-polyfill7.4.4.min.js'></script>
</Head>
<body className="custom_class">
<script src="/static/respond.matchmedia.addListener.min.js"></script>
<script src="/static/respond.min.js"></script>
<Main />
<NextScript />
<script type="text/javascript" crossOrigin="anonymous" src="https://polyfill.io/v3/polyfill.min.js?flags=gated&features=es2015%2CPromise"></script>
{/* <script src="/static/eruda.min.js"></script>
<script>eruda.init();</script> */}
</body>
</html>
)
}
}
\ No newline at end of file
@import "./base.css";
.error-page {
height: 100vh;
box-sizing: border-box;
}
.error-title {
font-size: 32px; /* px */
color: #201714;
}
.error-content {
padding: 0 5%;
padding-bottom: 25%; /* px */
}
.error-text {
margin: 20px 0; /* px */
font-size: 18px; /* px */
font-weight: 300;
line-height: 180%;
}
a.error-back-home {
display: inline-block;
}
.error-back-home::after {
content: '';
display: block;
margin: auto;
height: 3px; /* px */
width: 100%;
background: #FFCB05;
}
.error-img {
float: right;
width: 30%; /* px */
padding-bottom: 32%; /* px */
background-size: contain;
background-repeat: no-repeat;
}
\ No newline at end of file
import React from 'react'
import classnames from 'classnames'
import Link from 'next/link'
import { ThemeContext } from './_app.js'
import Header from '../components/Header'
import Footer from '../components/Footer'
import { Title, SubTitle } from '../components/Title'
import Common from '../content/common.md'
import './_error.css'
export default class Error extends React.Component {
render() {
const {
attributes: {
errorTitle,
errorTitleEN,
errorStr,
errorStrEN,
errorImg,
backToHome,
backToHomeEN
}
} = Common
return (
<ThemeContext.Consumer>
{(val) => {
const { en } = val
return (
<div
className={classnames({
en,
zh: !en,
'error-page': true
})}
>
<Header en={en} curPag="index"></Header>
<div className="error-content limitw">
<div
className="error-img"
style={{ backgroundImage: `url("${errorImg}")` }}
></div>
<Title en={en}>
{en === null ? '' : en ? errorTitleEN : errorTitle}
</Title>
<SubTitle>
{en === null ? '' : en ? errorStrEN : errorStr}
</SubTitle>
<Link prefetch={false} href={{ pathname: '/' }}>
<a className="linka error-back-home">
{en === null ? '' : en ? backToHomeEN : backToHome}
</a>
</Link>
</div>
<Footer />
</div>
)
}}
</ThemeContext.Consumer>
)
}
}
@import "./base.css";
.about .footer-wrapper {
margin-top: 80px;/* px */
}
.about .image-text-column-col1 {
width: 45%;
margin-right: 0;
}
.about .image-text-column-col2 {
width: 55%;
padding-bottom: 30%;
}
.about-title {
max-width: 700px; /* px */
}
.zh.about .sub-title {
margin-bottom: 56px; /* px */
}
@media screen and (max-width: 1000px) {
.about-description {
font-size: 14px; /* px */
}
}
@media screen and (max-width: 1100px) {
.about-title {
max-width: 600px; /* px */
}
}
@media screen and (max-width: 900px) {
.about-title {
max-width: 450px; /* px */
}
}
@media screen and (max-width: 700px) {
.about-title {
max-width: 340px; /* px */
}
}
.about-image {
width: 59%;
height: 163%;
position: absolute;
bottom: -30%;
right: 0; /* px */
background-repeat: no-repeat;
background-position: bottom right;
background-size: 100% auto;
}
.about-description {
margin-top: 32px; /* px */
}
.about-clear {
clear: both;
}
.about-list-grid {
padding: 0 0 120px 0; /* px */
position: relative;
overflow: hidden;
/* background-size: 100% 1%;
background-image: url('/static/img/gray.png');
background-repeat: repeat-y; */
/* background-position-x: 4%; /* px */
}
.about-image2 {
margin-top: 40px; /* px */
width: 100%;
padding-bottom: 30%; /* px */
background-size: cover;
background-position: center;
}
.about-birth-wrapper {
width: 50%;
}
.about-birth-label, .about-phi-label {
font-size: 16px; /* px */
font-weight: 300;
margin-top: 80px; /* px */
color: #B3B3B3;
}
.about-birth-title, .about-phi-title {
font-weight: 500;
font-size: 24px; /* px */
margin-top: 8px; /* px */
color: #201714;
}
.about-birth-subtitle, .about-phi-subtitle {
font-size: 16px; /* px */
line-height: 180%;
margin-top: 24px; /* px */
color: #444;
text-align: justify;
}
.en .about-birth-subtitle, .en .about-phi-subtitle {
text-align: left;
font-weight: 400;
}
.about-phi-title-wrapper {
width: 48%;
}
.two-column .about-phi-subtitle {
width: 50%;
margin-top: 90px; /* px */
float: right;
}
.about-award-wrapper {
width: 100%;
}
.about-award-title {
text-align: center;
color: #201714;
margin: 68px auto; /* px */
}
.about-award-list {
/* overflow: hidden; */
}
.about-award-list::before, .about-award-list::after {
content: "";
display: block;
clear: both;
}
.about-award {
float: left;
border-top: solid 1px #eeeded;
height: 136px; /* px */
width: 31%;
margin-left: 2%;
}
.en .about-award {
height: 136px; /* px */
}
.about-award-source {
color: #B3B3B3;
font-size: 16px; /* px */
margin-top: 16px; /* px */
height: 24px; /* px */
}
.about-award-content {
color: #444;
font-size: 20px; /* px */
margin-top: 16px; /* px */
font-weight: 400;
}
@media screen and (min-width: 1600px) {
.about-award-source {
font-size: 18px; /* px */
}
.about-award-content {
font-size: 20px; /* px */
}
}
@media screen and (max-width: 1600px) {
.about-award-source {
font-size: 16px; /* px */
}
.about-award-content {
font-size: 18px; /* px */
}
}
@media screen and (max-width: 1440px) {
.about-award {
height: 120px; /* px */
}
.about-award-source {
font-size: 14px; /* px */
}
.about-award-content {
font-size: 16px; /* px */
}
}
@media screen and (max-width: 1088px) {
.about-birth-title, .about-phi-title {
font-size: 20px; /* px */
}
}
@media screen and (max-width: 700px) {
.about-birth-label, .about-phi-label {
margin-top: 40px; /* px */
}
div.about-phi-title-wrapper {
width: 100%;
}
.two-column div.about-phi-subtitle {
width: 100%;
margin-top: 24px; /* px */
}
.about-award {
width: 48%;
}
.about-award-source {
font-size: 12px; /* px */
}
.about-award-content {
font-size: 14px; /* px */
}
}
@media screen and (max-width: 862px) {
.about-birth-wrapper {
width: 100%;
}
}
@media (max-width: 640px) {
/* .image-text-column-col1, .about div.image-text-column-col1 {
width: 100%;
}
.image-text-column-col2, .about div.image-text-column-col2 {
width: 100%;
padding-bottom: 82%;
margin-bottom: 15%;
} */
.image-text-column-col2 .about-image {
/* width: 100%; */
padding-top: 32px; /* px */
}
div.about-image {
width: 80%;
height: 185%;
bottom: -125%;
top: 38px; /* px */
}
.about-list-grid {
padding-bottom: 64px; /* px */
}
.about-clear {
height: 100px; /* px */
}
}
@media (max-width: 470px) {
div.about-image {
bottom: -150%;
}
.two-column div.about-clear {
height: 0;
}
}
@media (max-width: 370px) {
div.about-image {
bottom: -160%;
}
}
@media (max-width: 430px) {
.about div.image-text-column-col1 {
width: 100%;
}
.about div.image-text-column-col2 {
width: 100%;
padding-bottom: 100%;
margin-bottom: 64px; /* px */
}
.image-text-column-col2 .about-image {
/* width: 100%; */
left: 0;
top: 1px; /* px */
right: 0;
width: 78%;
margin: 0 auto;
padding-top: 32px; /* px */
}
div.about-image.image-text-colum-full {
height: 100%;
}
}
\ No newline at end of file
import React, { Component } from 'react'
import classnames from 'classnames'
import aboutPage from '../content/aboutPage.md'
import { ThemeContext } from './_app.js'
import Header from '../components/Header'
import Footer from '../components/Footer'
import { Title, SubTitle } from '../components/Title'
import './about.css'
export default class AboutPage extends Component {
constructor(props) {
super(props)
this.state = {
mounted: false
}
}
componentDidMount() {
this.setState({
mounted: true
})
}
renderAboutImage(mounted, image1, image1x2) {
if (!mounted) {
return <div className="about-image image-text-colum-full"></div>
}
return (
<div className="about-image image-text-colum-full">
<style jsx>{`
.about-image {
background-image: url('${image1x2}');
}
@media (max-width: 780px) {
.about-image {
background-image: url('${image1}');
}
}
`}</style>
</div>
)
}
renderAboutImage2(mounted, image2, image2x2) {
if (!mounted) {
return <div className="about-image2"></div>
}
return (
<div className="about-image2">
<style jsx>{`
.about-image2 {
background-image: url('${image2x2}');
}
@media (max-width: 780px) {
.about-image2 {
background-image: url('${image2}');
}
}
`}</style>
</div>
)
}
render() {
const {
attributes: {
title,
titleEN,
subTitle,
subTitleEN,
birth,
birthEN,
title2,
image1,
image1x2,
image2,
image2X2,
title2EN,
subTitle2,
subTitle2EN,
philosophy,
philosophyEN,
title3,
title3EN,
subTitle3,
subTitle3EN,
recognition,
recognitionEN,
awardList
}
} = aboutPage
const { mounted } = this.state
return (
<ThemeContext.Consumer>
{(val) => {
const { en } = val
return (
<div
className={classnames({
about: true,
en,
zh: !en
})}
>
<Header en={en} curPage="about"></Header>
<Title className="limitw" en={en}>
{en === null ? (
''
) : en ? (
<div className="about-title"> {titleEN} </div>
) : (
title
)}
</Title>
<div className="two-column limitw">
<div className="image-text-column-col1">
<SubTitle>
{en === null ? '' : en ? subTitleEN : subTitle}
</SubTitle>
</div>
<div className="image-text-column-col2">
{this.renderAboutImage(mounted, image1, image1x2)}
</div>
<div className="about-clear"></div>
</div>
<div className="about-list-grid">
<div className="left-bg" />
<div className="limitw">
<div className="about-birth-wrapper">
<div className="about-birth-label">
{en === null ? '' : en ? birthEN : birth}
</div>
<div className="about-birth-title">
{en === null ? '' : en ? title2EN : title2}
</div>
<div
className="about-birth-subtitle"
dangerouslySetInnerHTML={{
__html: en === null ? '' : en ? subTitle2EN : subTitle2
}}
></div>
</div>
{this.renderAboutImage2(mounted, image2, image2X2)}
<div className="about-phi two-column">
<div className="about-phi-title-wrapper">
<div className="about-phi-label">
{en === null ? '' : en ? philosophyEN : philosophy}
</div>
<div className="about-phi-title">
{en === null ? '' : en ? title3EN : title3}
</div>
</div>
<div
className="about-phi-subtitle"
dangerouslySetInnerHTML={{
__html: en === null ? '' : en ? subTitle3EN : subTitle3
}}
></div>
</div>
</div>
</div>
<div className="about-award-wrapper limitw">
<Title en={en} className="about-award-title">
{en === null ? '' : en ? recognitionEN : recognition}
</Title>
<div className="about-award-list">
{awardList.map((a, idx) => (
<div key={a.award + idx} className="about-award">
<div className="about-award-source">
{en === null ? '' : en ? a.sourceEN : a.source}
</div>
<div className="about-award-content">
{en === null ? '' : en ? a.awardEN : a.award}
</div>
</div>
))}
</div>
</div>
<Footer />
</div>
)
}}
</ThemeContext.Consumer>
)
}
}
@font-face { /* General Copy */
font-family: 'IBM Plex Sans';
font-style: normal;
font-weight: 300;
src: url('/static/fonts/eot/IBMPlexSans-Light.eot');
src: url('/static/fonts/eot/IBMPlexSans-Light.eot?#iefix') format('embedded-opentype'),
url('/static/fonts/woff2/IBMPlexSans-Light.woff2') format('woff2'),
url('/static/fonts/woff/IBMPlexSans-Light.woff') format('woff'),
url('/static/fonts/ttf/IBMPlexSans-Light.ttf') format('truetype')
}
@font-face { /* Post Copy */
font-family: 'IBM Plex Sans';
font-style: normal;
font-weight: 400;
src: url('/static/fonts/eot/IBMPlexSans-Regular.eot');
src: url('/static/fonts/eot/IBMPlexSans-Regular.eot?#iefix') format('embedded-opentype'),
url('/static/fonts/woff2/IBMPlexSans-Regular.woff2') format('woff2'),
url('/static/fonts/woff/IBMPlexSans-Regular.woff') format('woff'),
url('/static/fonts/ttf/IBMPlexSans-Regular.ttf') format('truetype')
}
@font-face { /* Title */
font-family: 'IBM Plex Sans';
font-style: normal;
font-weight: 500;
src: url('/static/fonts/eot/IBMPlexSans-Medium.eot');
src: url('/static/fonts/eot/IBMPlexSans-Medium.eot?#iefix') format('embedded-opentype'),
url('/static/fonts/woff2/IBMPlexSans-Medium.woff2') format('woff2'),
url('/static/fonts/woff/IBMPlexSans-Medium.woff') format('woff'),
url('/static/fonts/ttf/IBMPlexSans-Medium.ttf') format('truetype')
}
@font-face { /* English Title */
font-family: 'IBM Plex Serif';
font-style: normal;
font-weight: 500;
src: url('/static/fonts/eot/IBMPlexSerif-Medium.eot');
src: url('/static/fonts/eot/IBMPlexSerif-Medium.eot?#iefix') format('embedded-opentype'),
url('/static/fonts/woff2/IBMPlexSerif-Medium.woff2') format('woff2'),
url('/static/fonts/woff/IBMPlexSerif-Medium.woff') format('woff'),
url('/static/fonts/ttf/IBMPlexSerif-Medium.ttf') format('truetype')
}
@font-face {
font-family: "PingFang-SC";
font-weight: 100;
src: local("PingFangSC-Ultralight");
}
@font-face {
font-family: "PingFang-SC";
font-weight: 200;
src: local("PingFangSC-Thin");
}
@font-face {
font-family: "PingFang-SC";
font-weight: 300;
src: local("PingFangSC-Light");
}
@font-face {
font-family: "PingFang-SC";
font-weight: 400;
src: local("PingFangSC-Regular");
}
@font-face {
font-family: "PingFang-SC";
font-weight: 500;
src: local("PingFangSC-Medium");
}
@font-face {
font-family: "PingFang-SC";
font-weight: 700;
src: local("PingFangSC-Semibold");
}
@font-face {
font-family: "PingFang-SC";
font-weight: 800;
src: local("PingFangSC-Heavy");
}
body {
margin: 0;
padding: 0;
background: white;
font-weight: 300;
font-family: 'IBM Plex Sans', -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'PingFang-SC', 'Microsoft YaHei', 'Source Han Sans SC', 'Noto Sans CJK SC', 'WenQuanYi Micro Hei', sans-serif;
text-rendering: optimizeLegibility;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
font-size: 12px; /* no */
}
.limitw {
width: 100%;
margin: 0 auto;
box-sizing: border-box;
max-width: 1400px; /* px */
padding-left: 48px; /* px */
padding-right: 48px; /* px */
}
@media screen and (max-width: 779px) {
.limitw {
padding-left: 32px; /* px */
padding-right: 32px; /* px */
}
}
.two-column {
overflow: visible;
}
.two-column:before, .two-column:after {
content: "";
display: block;
clear: both;
}
.two-column > div {
float: left;
}
.two-column > div {
float: left;
}
.two-column > div.two-column-reverse-right {
float: right;
}
a.linka {
display: block;
color: black;
text-decoration: none;
}
.title-decorate {
position: absolute !important;
height: 1px; /* px */
width: 1px; /* px */
overflow: hidden;
clip: rect(1px 1px 1px 1px); /* px */
clip: rect(1px, 1px, 1px, 1px); /* px */
white-space: nowrap;
}
.bg {
position: absolute;
width: 100%;
height: 100%;
z-index: -1;
background: #F9F9F9;
opacity: 0.9;
}
.left-bg {
position: absolute;
width: 98%;
height: 100%;
z-index: -1;
background: #F9F9F9;
/* opacity: 0.9; */
left: 2%;
}
@media screen and (max-width: 500px) {
.left-bg {
left: 0;
width: 100%;
}
}
.clear {
clear: both;
}
.image-text-column-col1 {
width: 39%;
margin-right: 5%;
}
.image-text-column-col2 {
position: relative;
width: 55%;
padding-bottom: 42%;
}
/* Disable web font to void Yahei's missing font weight */
.index-sub-title,
.high-light-title,
.article-title {
font-family: -apple-system,BlinkMacSystemFont,'Helvetica Neue','PingFang-SC','Microsoft YaHei','Source Han Sans SC','Noto Sans CJK SC','WenQuanYi Micro Hei',sans-serif;
}
@media (max-width: 780px) {
.image-text-column-col1 {
width: 100%;
}
.image-text-column-col2 {
width: 100%;
padding-bottom: 82%;
margin-bottom: 15%;
}
.image-text-column-mask {
right: 38%;
}
}
\ No newline at end of file
@import "./base.css";
.index-page-video {
/* height: 100%; */
height: 100vh;
position: relative;
}
.index-page-ie-mask {
display: none;
display: block\0;
z-index: -200;
width: 100%;
height: 100vh;
background-color: gray;
position: absolute;
top: 0;
}
video#videoBg {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
height: 100%;
height: auto\0;
width: 100%;
object-fit: cover;
object-position: 100% 0%;
}
.index-video-wrapper {
position: fixed;
top: 0;
height: 100vh;
width: 100%;
transform: rotate(0);
z-index: -100;
}
.index-page-video-img {
height: 100%;
width: 100%;
background-size: cover;
object-position: 100% 0%;
object-fit: cover;
}
.index-title-wrapper {
position: absolute;
bottom: 88px; /* px */
width: 100%;
color: white;
}
.index-portfolio {
box-sizing: border-box;
width: 100%;
height: 700px; /* px */
background: white;
}
.en .index-portfolio {
height: 620px; /* px */
}
.index-portfolio-limitw {
height: 100%;
position: relative;
}
.index-summary-wrapper {
padding-top: 160px; /* px */
}
.index-summary-logo {
position: absolute;
background: url('/static/img/yellow-mask.svg') no-repeat;
background-size: contain;
width: 25%;
max-width: 420px; /* px */
padding-bottom: 25%;
z-index: 1;
}
.index-summary-bg.left-bg {
z-index: auto;
margin-top: 80px; /* px */
background: none;
}
.index-summary-content {
position: relative;
margin-top: -80px; /* px */
padding-top: 10%;
box-sizing: border-box;
overflow: hidden;
/* z-index: -1; */
/* background: rgba(246, 246, 246, 0.88); */
}
.index-summary-title,
.index-summary-subtitle,
.index-summary-knowmore {
margin-left: 40%;
z-index: 1;
}
.en .index-summary-title {
top: 16px; /* px */
}
.index-summary-subtitle {
padding: 30px 0; /* px */
}
.en .index-summary-subtitle {
padding-top: 1px; /* px */
}
.en .index-summary-portfolio-summary {
font-size: 16px; /* px */
}
.index-responsive-summary {
padding-top: 80px; /* px */
}
.index-responsive-summary-number-wrapper {
width: 70%;
float: left;
margin-left: -4%;
}
.index-number-cell {
display: inline-block;
margin-left: 8%;
padding-top: 32px; /* px */
width: 42%;
border-top: 1px solid #807c7a; /* no */
margin-bottom: 84px; /* px */
}
.index-cell-name {
font-size: 20px; /* px */
color: #444;
font-weight: 300;
height: 38px; /* px */
}
.index-cell-value {
color: #444;
font-size: 72px; /* px */
position: relative;
}
.index-summary-portfolio-summary {
float: left;
width: 31%;
margin-left: 3%;
font-size: 18px; /* px */
color: #444;
font-weight: 300;
line-height: 180%;
}
/* .en .index-summary-portfolio-summary {
text-align: left;
} */
.index-cell-value .sub {
font-weight: 300;
font-size: 24px; /* px */
margin-left: 4px; /* px */
}
.index-team-wrapper {
padding-top: 60px; /* px */
}
.index-team-title {
float: right;
}
.index-team-subtitle {
padding-top: 80px; /* px */
width: 60%;
}
.en .index-team-subtitle {
padding-top: 1px; /* px */
}
.index-team-knowmore {
padding: 40px 0; /* px */
}
.index-team-img {
width: 80%;
padding-bottom: 55%;
margin-left: 21%;
background-size: cover;
}
.index-news-title {
margin-bottom: -36px; /* px */
width: 500px; /* px */
}
.index-news-wrapper {
padding-bottom: 80px; /* px */
}
.index-news-wrapper .limitw {
margin-top: 120px; /* px */
}
.index-news-knowmore {
float: right;
}
#threeD {
/* margin-left: -5%; */
cursor: ew-resize;
margin: 0 auto;
max-width: 1400px; /* px */
}
@media screen and (max-width: 780px) {
.index-page div.index-portfolio.index-page-common {
padding: 0; /* px */
}
.index-portfolio {
height: 700px; /* px */
}
.index-news-wrapper.index-page-common #threeD {
margin: 0;
margin-top: 64px; /* px */
}
.en .index-portfolio {
height: 695px; /* px */
}
.index-news-wrapper.index-page-common #threeD canvas {
transform: translatex(-25%);
}
}
#threeD canvas {
/* width: 100% !important; */
/* margin: 0 auto; */
}
.index-ronghui-wrapper.index-page-common {
width: 100%;
padding: 64px 0 80px; /* px */
background: #F6F6F6;
position: relative;
overflow: visible;
}
.index-ronghui-title {
margin-top: -220px; /* px */
float: right;
}
.en .index-ronghui-title {
margin-top: -210px; /* px */
}
.index-ronghui-subtitle {
width: 60%;
}
.index-ronghui-img {
width: 100%;
padding-bottom: 37%;
margin-top: 80px; /* px */
margin-bottom: 48px; /* px */
background-position: center;
background-size: cover;
position: relative;
}
.index-ronghui-img::after {
content: '';
position: absolute;
right: 0;
height: 100%;
width: 6%;
display: block;
background-size: cover;
background-image: url('/static/img/ronghui-mask-right.svg');
}
.index-ronghui-img::before {
content: '';
position: absolute;
left: -1px;
top: -1%;
height: 102%;
width: 100%;
display: block;
background-size: contain;
background-repeat: no-repeat;
background-image: url('/static/img/ronghui-mask-left.svg');
}
.index-ronghui-knowmore {
margin: 30px 0; /* px */
}
import React from 'react'
import classnames from 'classnames'
/* eslint-disable no-unused-vars */
import Head from 'next/head'
import Header from '../components/Header'
import Footer from '../components/Footer'
import { Title, SubTitle } from '../components/IndexHelpers'
import KnowMore from '../components/Knowmore'
import IndexPortfolioCycle from '../components/IndexPortfolioCycle'
import Video from '../components/Video'
/* eslint-enable no-unused-vars */
import frontPage from '../content/frontPage.md'
import { ThemeDecorator } from './_app.js'
import './index.css'
import './index1440+.css'
import './index1440.css'
import './index780.css'
import './index595.css'
class FrontPage extends React.Component {
constructor(props) {
super(props)
this.state = {
mobile: true,
mounted: false
}
this.handleWindowResize = this.handleWindowResize.bind(this)
this.handleAddThree = this.handleAddThree.bind(this)
}
numbercell([key, name, value]) {
return (
<div className="index-number-cell" key={key}>
<div className="index-cell-name">{name}</div>
<div className="index-cell-value">{value}</div>
</div>
)
}
handleWindowResize() {
this.setState({
mounted: true,
mobile: document.body.offsetWidth < 780
})
}
componentDidMount() {
window.addEventListener('resize', this.handleWindowResize)
this.handleWindowResize()
this.threeDTimer = setTimeout(this.handleAddThree, 500)
}
handleAddThree() {
console.log('handleAddThree')
if (window.addThreeD) {
window.addThreeD(this.props.en)
} else {
setTimeout(this.handleAddThree, 500)
}
}
componentWillReceiveProps(nextProps, nextState) {
if (
(nextProps.en !== this.props.en && this.props.en !== null) ||
nextState.mobile !== this.state.mobile
) {
clearTimeout(this.threeDTimer)
if (window.removeThreeD) {
window.removeThreeD()
}
this.threeDTimer = setTimeout(this.handleAddThree, 500)
}
}
componentWillUnmount() {
clearTimeout(this.threeDTimer)
if (window.removeThreeD) {
window.removeThreeD()
}
}
renderSummary(en) {
const {
attributes: {
metaDescription,
metaDescriptionEN,
summaryTitle,
summaryTitleEN,
summarySubTitle,
summarySubTitleEN,
summaryKnowmore,
summaryKnowmoreEN,
portfolioText,
portfolioTextEN,
portfolioNum,
unicornText,
unicornTextEN,
unicornNum,
IPOText,
IPOTextEN,
IPONum,
assetText,
assetTextEN,
assetNum,
assetNumEN,
portfolioSummary,
portfolioSummaryEN
}
} = frontPage
return (
<div className="index-summary-wrapper index-page-common">
<Head>
<meta
name="description"
content={en ? metaDescriptionEN : metaDescription}
/>
<script src="/static/polyfill.object-fit.min.js"></script>
<script
key="threejs"
defer="defer"
src="/static/three.min.js"
></script>
<script
key="addThreejs"
defer="defer"
src="/static/addThreeD.js"
></script>
</Head>
<div className="limitw">
<div className="index-summary-logo"></div>
<div className="index-summary-bg left-bg"></div>
<Title className="index-summary-title">
{en === null ? '' : en ? summaryTitleEN : summaryTitle}
</Title>
<div className="index-summary-content">
<SubTitle className="index-summary-subtitle">
{en === null ? '' : en ? summarySubTitleEN : summarySubTitle}
</SubTitle>
<KnowMore
className="index-summary-knowmore"
path="portfolio"
content={
en === null ? '' : en ? summaryKnowmoreEN : summaryKnowmore
}
/>
<div className="index-responsive-summary">
<div className="index-responsive-summary-number-wrapper">
<div className="index-number-cell">
<div className="index-cell-name">
{en === null ? '' : en ? portfolioTextEN : portfolioText}
</div>
<div className="index-cell-value">{portfolioNum}</div>
</div>
<div className="index-number-cell">
<div className="index-cell-name">
{en === null ? '' : en ? unicornTextEN : unicornText}
</div>
<div className="index-cell-value">{unicornNum}</div>
</div>
<div className="index-number-cell">
<div className="index-cell-name">
{en === null ? '' : en ? IPOTextEN : IPOText}
</div>
<div className="index-cell-value">{IPONum}</div>
</div>
<div className="index-number-cell">
<div className="index-cell-name">
{en === null ? '' : en ? assetTextEN : assetText}
</div>
<div className="index-cell-value">
{en === null ? (
''
) : en ? (
assetNumEN
) : (
<span>
{assetNum}
</span>
)}
</div>
</div>
</div>
<div
className="index-summary-portfolio-summary"
dangerouslySetInnerHTML={{
__html:
en === null
? ''
: en
? portfolioSummaryEN
: portfolioSummary
}}
></div>
</div>
</div>
</div>
</div>
)
}
render() {
const {
attributes: {
title,
titleEN,
subTitle,
subTitleEN,
portfolio,
gaorongWith,
gaorongWithEN,
videoPoster,
video,
videoMobile,
newsSummaryTitle,
newsSummaryTitleEN,
newSummaryEntry,
newSummaryEntryEN,
ronghuiSummaryTitle,
ronghuiSummaryTitleEN,
ronghuiSummaryText,
ronghuiSummaryTextEN,
ronghuiSummaryEntry,
ronghuiSummaryEntryEN,
ronghuiImage,
ronghuiImagex2,
teamSummaryTitle,
teamSummaryTitleEN,
teamSummaryText,
teamSummaryTextEN,
teamSummaryEntry,
teamSummaryEntryEN,
teamImage,
teamImagex2
}
} = frontPage
const { en } = this.props
const { mobile, mounted } = this.state
return (
<div
className={classnames({
en,
zh: !en,
'index-page': true
})}
>
<div className="index-page-video">
<Header en={en} curPage=""></Header>
{/* <div className="index-page-ie-mask"></div> */}
<div className="index-video-wrapper">
{mobile ? (
<img src={videoPoster} className="index-page-video-img" />
) : (
<Video
full={true}
id="videoBg"
src={mobile ? videoMobile : video}
poster={videoPoster}
/>
)}
</div>
<div className="index-title-wrapper">
<div className="limitw">
<Title en={en} one={true} className="index-title-top">
{en === null ? '' : en ? titleEN : title}
</Title>
<SubTitle en={en}>
{en === null ? '' : en ? subTitleEN : subTitle}
</SubTitle>
</div>
</div>
</div>
{this.renderSummary(en)}
<div className="index-portfolio index-page-common">
<div className="limitw index-portfolio-limitw">
<IndexPortfolioCycle
portfolio={portfolio}
en={en}
gaorongWith={gaorongWith}
gaorongWithEN={gaorongWithEN}
/>
</div>
</div>
<div className="index-team-wrapper index-page-common">
<div className="limitw">
<Title className="index-team-title">
{en === null ? '' : en ? teamSummaryTitleEN : teamSummaryTitle}
</Title>
<SubTitle className="index-team-subtitle">
{en === null ? '' : en ? teamSummaryTextEN : teamSummaryText}
</SubTitle>
<KnowMore
className="index-team-knowmore"
path="team"
content={
en === null ? '' : en ? teamSummaryEntryEN : teamSummaryEntry
}
/>
{mounted && (
<div
className="index-team-img"
style={{
backgroundImage: `url('${mobile ? teamImage : teamImagex2}')`
}}
></div>
)}
</div>
</div>
<div className="index-news-wrapper index-page-common">
<div className="limitw">
<Title className="index-news-title">
{en === null ? '' : en ? newsSummaryTitleEN : newsSummaryTitle}
</Title>
<KnowMore
className="index-news-knowmore"
path="news"
content={
en === null ? '' : en ? newSummaryEntryEN : newSummaryEntry
}
/>
</div>
<div id="threeD"></div>
</div>
<div className="index-ronghui-wrapper index-page-common">
<div className="index-ronghui-bg"></div>
<div className="index-ronghui-absolute">
<div className="limitw">
<Title className="index-ronghui-title">
{en === null
? ''
: en
? ronghuiSummaryTitleEN
: ronghuiSummaryTitle}
</Title>
</div>
{mounted && (
<div
className="index-ronghui-img"
style={{
backgroundImage: `url('${
mobile ? ronghuiImage : ronghuiImagex2
}')`
}}
></div>
)}
<div className="limitw">
<SubTitle className="index-ronghui-subtitle">
{en === null
? ''
: en
? ronghuiSummaryTextEN
: ronghuiSummaryText}
</SubTitle>
<KnowMore
className="index-ronghui-knowmore"
path="ronghui"
content={
en === null
? ''
: en
? ronghuiSummaryEntryEN
: ronghuiSummaryEntry
}
/>
</div>
</div>
</div>
<Footer />
</div>
)
}
}
export default ThemeDecorator(FrontPage)
@media screen and (min-width: 1440px) {
.index-ronghui-img {
margin: 0 auto;
padding-bottom: 400px;
}
}
\ No newline at end of file
@media screen and (max-width: 1440px) and (min-width: 781px){
.index-title.index-title-top {
font-size: 56px; /* px */
}
.en .index-title.index-title-top {
font-size: 48px; /* px */
}
.en .index-sub-title {
font-size: 18px; /* px */
}
.en .index-summary-title {
font-size: 24px; /* px */
top: 48px; /* px */
}
.en .index-summary-subtitle {
padding-top: 50px; /* px */
}
.en .index-summary-portfolio-summary {
font-size: 14px; /* px */
}
.en .index-team-title {
font-size: 36px; /* px */
}
.index-cell-value {
font-size: 48px; /* px */
}
.index-summary-portfolio-summary {
font-size: 16px; /* px */
}
}
@media screen and (max-width: 1100px) {
.en .index-team-title {
font-size: 24px; /* px */
}
.en .index-ronghui-title {
font-size: 36px; /* px */
margin-top: -190px; /* px */
}
}
\ No newline at end of file
@media screen and (max-width: 595px) and (orientation: portrait){
.index-news-wrapper {
}
}
@media screen and (max-width: 595px) and (orientation: landscape){
.index-news-wrapper {
}
}
@media screen and (max-width: 595px) {
.index-title.index-title-top {
font-size: 40px; /* px */
}
.en .index-title.index-title-top {
font-size: 24px; /* px */
}
.en .index-sub-title {
font-size: 16px; /* px */
}
.en .index-summary-title {
font-size: 20px; /* px */
}
.en .index-ronghui-title {
font-size: 22px; /* px */
float: left;
}
.index-summary-logo {
margin-top: 40px; /* px */
}
.index-news-title {
margin-top: 1px; /* px */
}
}
@media screen and (max-width: 400px) {
.en .index-ronghui-title {
margin-top: -90px; /* px */
}
}
\ No newline at end of file
@media screen and (max-width: 780px) {
.index-title.index-title-top {
font-size: 48px; /* px */
}
.index-ronghui-title {
margin-top: -100px; /* px */
}
.en .index-ronghui-title {
font-size: 24px; /* px */
float: left;
margin-top: -96px; /* px */
}
.en .index-title.index-title-top {
font-size: 32px; /* px */
}
.en .index-sub-title {
font-size: 18px; /* px */
}
.index-title-wrapper {
bottom: 108px; /* px */
}
.index-sub-title {
font-size: 16px; /* px */
clear: both;
}
.index-ronghui-img {
margin-top: 1px; /* px */
margin-bottom: 32px; /* px */
}
.index-number-cell {
padding-top: 16px; /* px */
}
.index-cell-name {
font-size: 14px; /* px */
}
.index-cell-value {
font-size: 32px; /* px */
}
.index-summary-portfolio-summary {
font-size: 14px; /* px */
}
.index-cell-value sup {
font-size: 14px; /* px */
}
.index-summary-content {
margin-top: -40px; /* px */
}
.index-summary-title {
margin-left: 51%;
padding-top: 40px; /* px */
}
.index-summary-wrapper {
padding-top: 80px; /* px */
}
.index-team-subtitle {
padding-top: 40px; /* px */
}
.index-summary-logo {
width: 23%; /* px */
padding-bottom: 23%; /* px */
}
.en .index-summary-wrapper {
padding-top: 40px; /* px */
}
.en .index-summary-title {
margin-left: 0;
top: 10px; /* px */
}
.en .index-summary-subtitle {
padding-top: 30px; /* px */
}
.en .index-summary-logo {
display: none;
}
.en .index-team-subtitle {
padding-top: 40px; /* px */
}
.index-summary-content .index-sub-title.index-summary-subtitle {
margin-left: 0;
margin-top: 0;
}
.know-more.index-summary-knowmore {
margin-left: 0;
}
.index-responsive-summary {
padding-top: 32px; /* px */
}
.index-responsive-summary-number-wrapper {
width: 100%;
margin-left: -4%;
width: 104%;
}
.index-number-cell {
width: 46%;
margin-left: 4%;
margin-bottom: 32px; /* px */
}
.index-summary-portfolio-summary {
box-sizing: border-box;
width: 100%;
padding-left: 0;
margin-left: 0;
padding-bottom: 64px; /* px */
}
.index-cell-value .sub {
font-size: 14px; /* px */
}
.index-team-wrapper {
padding-top: 60px; /* px */
}
.index-team-knowmore {
padding: 24px 0; /* px */
}
.index-team-img {
width: 100%;
margin-left: 0;
padding-bottom: 68%;
}
.index-title.index-team-title {
float: left;
}
.index-news-title {
/* news knowmore clickable */
width: 150px; /* px */
}
.index-team-subtitle {
width: 100%;
}
.index-ronghui-wrapper.index-page-common {
padding: 32px 0 48px;
}
.index-ronghui-subtitle {
width: 100%;
}
/* #threeD {
margin-left: -50%;
} */
}
@media screen and (max-width: 850px) and (orientation: landscape) {
.en .index-title-wrapper {
bottom: 20px; /* px */
}
}
@media screen and (max-width: 1000px) {
.en .index-responsive-summary-number-wrapper {
width: 100%;
margin-left: -4%;
width: 104%;
}
.en .index-summary-portfolio-summary {
box-sizing: border-box;
width: 100%;
padding-left: 0;
margin-left: 0;
padding-bottom: 64px; /* px */
}
.en .index-number-cell {
width: 46%;
margin-left: 4%;
margin-bottom: 32px; /* px */
}
}
\ No newline at end of file
@import "./base.css";
.news-list-grid {
padding: 48px 0; /* px */
position: relative;
overflow: hidden;
}
.news-top {
margin-bottom: 48px; /* px */
position: relative;
}
.news-top .news-search-wrapper {
float:right;
right: 0;
margin-top: 16px; /* px */
width: 34%;
}
.news-search-wrapper input {
padding: 0;
}
@media screen and (max-width: 779px) {
.news-top .news-search-wrapper {
margin-top: 24px; /* px */
width: 100%;
}
.news-list-grid {
padding: 32px 0; /* px */
}
.news-top {
margin-bottom: 1px; /* px */
}
}
.news-search-img {
position: absolute;
display: inline-block;
vertical-align: -2px; /* px */
width: 15px; /* px */
height: 15px; /* px */
margin-top: 3px; /* px */
background-size: cover;
background-image: url("/static/img/search.svg");
}
.news-search-wrapper input {
width: 100%;
box-sizing: border-box;
border:none;
border-radius:0;
border-bottom:#8D8D8D 1px solid;
box-shadow: 0px 0px 0px 0px;
outline: none;
font-size: 14px; /* px */
padding-bottom: 8px; /* px */
padding-left: 25px; /* px */
background: transparent;
color: #201714;
}
.high-light {
position: relative;
height: 408px; /* px */
background-color: white;
margin-top: 48px; /* px */
width: 100%;
}
.high-light-text {
width: 32%;
height: 100%;
float: left;
display: flex;
flex-direction: column;
position: relative;
padding: 40px 0 40px 3%; /* px */
box-sizing: border-box;
}
.high-light-title {
width: 100%;
margin-bottom: 10px; /* px */
line-height: 150%;
font-weight: 500;
font-size: 28px; /* px */
flex: none;
}
.high-light-abstract {
flex: auto;
font-size: 16px; /* px */
line-height: 180%;
color: #666;
overflow: hidden;
text-overflow: ellipsis;
position: relative;
}
.high-light-pic {
float: right;
margin-left: 3%;
width: 65%;
height: 100%;
background-size: cover;
background-position: center;
}
.high-light-footer {
position: absolute;
bottom: 24px; /* px */
}
@media screen and (max-width: 779px) {
.high-light {
height: 596px; /* px */
}
.high-light-title {
font-size: 16px; /* px */
}
.high-light-abstract {
font-size: 14px; /* px */
}
.high-light-pic {
width: 100%;
height: 65%;
}
.high-light-text {
width: 100%;
padding: 24px 24px 64px 24px; /* px */
height: 254px; /* px */
}
.high-light-footer {
margin-top: 8px; /* px */
position: static;
}
}
.high-light-source {
margin-right: 16px; /* px */
}
.high-light-date, .high-light-source {
font-size: 14px; /* px */
color: #B3B3B3;
}
.news-search-count {
margin-top: 48px; /* px */
font-size: 14px; /* px */
color: #B3B3B3;
}
.news-search-content, .news-search-num {
margin: 4px; /* px */
color: black;
}
import React, { Component } from 'react'
import classnames from 'classnames'
import Link from 'next/link'
import OverflowBox from 'overflowbox'
import newsPage from '../content/newsPage.md'
import newsList from '../content/newsList.md'
import { ThemeContext } from './_app.js'
import Header from '../components/Header'
import Footer from '../components/Footer'
import { Title } from '../components/Title'
import ArticleGrid from '../components/ArticleGrid'
import { yymmdd } from '../utils/date'
import './news.css'
const getHighLight = (news) => {
let newsNew = []
let highLight = null
let hasHighLight = false
news.map((v) => {
if (!hasHighLight && v.highLight) {
hasHighLight = true
highLight = v
return
}
newsNew.push(v)
})
if (!highLight) {
highLight = newsNew.shift()
}
return [highLight, newsNew]
}
export default class NewsPage extends Component {
constructor(props) {
super(props)
this.renderHighLight = this.renderHighLight.bind(this)
this.handleSearch = this.handleSearch.bind(this)
this.handleWindowResize = this.handleWindowResize.bind(this)
this.key = 0
const {
attributes: { news }
} = newsList
const [highLight, newsNew] = getHighLight(news)
this.state = {
isSearch: false,
searchRes: [],
mounted: false,
mobile: true,
highLight,
newsNew
}
}
componentDidMount() {
this.handleWindowResize()
window.addEventListener('resize', this.handleWindowResize)
this.setState({
mounted: true
})
}
componentWillUnmount() {
window.removeEventListener('resize', this.handleWindowResize)
}
handleWindowResize() {
this.setState({
mobile: document.body.offsetWidth < 780
})
}
renderHighLight(en) {
const { mounted, highLight, mobile } = this.state
const key = highLight.createDate.replace(/[^\d]/g, '')
return (
<Link prefetch={false} href={`/post.html?t=news&d=${key}`}>
<a className="linka">
<div className="high-light">
<div
className="high-light-pic"
style={{
backgroundImage: mounted ? `url("${highLight.pic}")` : 'none'
}}
></div>
<div className="high-light-text">
<div className="high-light-title">
{en === null ? '' : en ? highLight.titleEN : highLight.title}
</div>
<div className="high-light-abstract">
<OverflowBox
str={(en === null
? ''
: en
? highLight.abstractEN
: highLight.abstract
).replace(/\n/g, '')}
/>
</div>
<div className="high-light-footer">
{!en && highLight.source && (
<span className="high-light-source">{highLight.source}</span>
)}
{en && highLight.sourceEN && (
<span className="high-light-source">
{highLight.sourceEN}
</span>
)}
{!mobile && (
<span className="high-light-date">
{yymmdd(new Date(highLight.createDate)).join('/')}
</span>
)}
</div>
</div>
</div>
</a>
</Link>
)
}
handleSearch(e, en) {
const {
attributes: { news }
} = newsList
clearTimeout(this.searchTimer)
const s = this.input.value.toLowerCase()
this.searchTimer = setTimeout(() => {
this.setState({
searchRes: news.filter((n) => {
if (en) {
if (!n.titleEN) {
return false
}
return (
n.titleEN.toLowerCase().indexOf(s) !== -1 ||
n.contentEN.toLowerCase().indexOf(s) !== -1
)
}
return (
n.title.toLowerCase().indexOf(s) !== -1 ||
n.content.toLowerCase().indexOf(s) !== -1
)
}),
isSearch: this.input.value !== ''
})
}, 200)
}
render() {
const {
attributes: { title, titleEN, searchPlaceholder, searchPlaceholderEN }
} = newsPage
const { isSearch, newsNew, searchRes } = this.state
return (
<ThemeContext.Consumer>
{(val) => {
const { en } = val
return (
<div
className={classnames({
en,
zh: !en
})}
>
<Header en={en} curPage="news"></Header>
<div className="news-top two-column limitw">
<Title en={en}>{en === null ? '' : en ? titleEN : title}</Title>
<div className="news-search-wrapper">
<div className="news-search-img"></div>
<input
ref={(input) => (this.input = input)}
onChange={(e) => this.handleSearch(e, en)}
placeholder={
en === null
? ''
: en
? searchPlaceholderEN
: searchPlaceholder
}
></input>
</div>
</div>
<div className="news-list-grid">
<div className="left-bg"></div>
{isSearch ? (
<div className="limitw">
<div className="news-search-count">
搜索
<span className="news-search-content">
{this.input.value}
</span>
{searchRes.length > 0 ? (
<span>
找到
<span className="news-search-num">
{searchRes.length}
</span>
个结果
</span>
) : (
'没有找到结果'
)}
</div>
<ArticleGrid
en={en}
searchKey={this.input.value.toLowerCase()}
articleList={searchRes}
type="news"
/>
</div>
) : (
<div className="limitw">
{this.renderHighLight(en)}
<ArticleGrid en={en} articleList={newsNew} type="news" />
</div>
)}
</div>
<Footer />
</div>
)
}}
</ThemeContext.Consumer>
)
}
}
@import "./base.css";
@media screen and (min-width: 540px) {
.post-wrapper img.center {
width: 50%;
margin: 1em auto;
display: block;
}
}
.post-page {
line-height: 1.6;
letter-spacing: .034em;
}
.post-page p {
font-size: 16px; /* px */
line-height: 180%;
color: #444;
font-weight: 400;
}
.post-page li {
font-size: 16px; /* px */
}
.post-page blockquote {
padding-left: 16px; /* px */
border-left: 3px solid #dbdbdb;
color: rgba(0,0,0,0.5);
font-size: 15px; /* px */
margin: 1em 0; /* px */
}
@media screen and (max-width: 540px) {
.post-page blockquote {
padding-left: 12px; /* px */
border-left: 3px solid #f0f0f0;
}
}
.post-outline-wrapper {
width: 100%;
box-sizing: border-box;
padding: 40px 0; /* px */
position: relative;
overflow: hidden;
}
.post-top {
margin: 0px 96px 60px 96px; /* px */
position: relative;
}
.post-source {
font-size: 14px; /* px */
color: #A25641;
font-weight: 500;
line-height: 24px;
}
.post-top .post-search-wrapper {
position: absolute;
right: 0;
bottom: 0;
}
.post-back {
font-size: 16px; /* px */
font-weight: 500;
color: #201714;
margin:35px auto; /* px */
width: 90%;
max-width: 824px; /* px */
}
.post-back-img {
width: 16px; /* px */
height: 13px; /* px */
margin-right: 8px; /* px */
display: inline-block;
background-image: url('/static/img/arrow-left.svg');
background-size: cover;
}
.post-wrapper {
background: white;
margin: 0 auto; /* px */
width: 90%;
box-sizing: border-box;
max-width: 824px; /* px */
padding: 40px 4%; /* px */
}
.post-wrapper img, .post-wrapper video {
width: 100%;
}
.post-wrapper .title {
line-height: 150%;
}
.post-title {
font-size: 32px; /* px */
line-height: 150%;
color: #201714;
}
.post-content {
text-align: justify;
padding-bottom: 8px; /* px */
}
/* .en .post-content {
text-align: left;
} */
.post-content a {
color: #A25641;
text-decoration: underline;
}
.post-dateshare-wrapper {
margin: 8px 0 24px; /* px */
height: 20px; /* px */
position: relative;
}
.post-date {
font-size: 14px; /* px */
color: #B3B3B3;
float: left;
font-weight: 400;
}
.post-share-wrapper {
float:right;
height: 16px; /* px */
}
.post-share-icon {
width: 16px; /* px */
height: 16px; /* px */
background-size: cover;
cursor:pointer;
float: right;
margin-left: 24px; /* px */
}
.post-share-mail {
background-image: url('/static/img/email.svg');
}
.post-share-wechat {
background-image: url('/static/img/wechat.svg');
}
.post-share-weibo {
background-image: url('/static/img/weibo.svg');
}
.post-share-qrcode {
opacity: 0;
transition: opacity .4s ease;
pointer-events: none;
background: #fff;
padding: 10px; /* px */
width: 128px; /* px */
height: 128px; /* px */
margin-top: 32px; /* px */
margin-left: -64px; /* px */
box-shadow: 0 4px 8px rgba(0,0,0,.2);
}
.post-share-wechat:hover .post-share-qrcode {
opacity: 1;
}
.post-end {
width: 16px; /* px */
height: 16px; /* px */
}
import React from 'react'
import marked from 'marked'
import newsPage from '../content/newsPage.md'
import newsList from '../content/newsList.md'
import ronghuiPage from '../content/ronghuiPage.md'
/* eslint-disable no-unused-vars */
import Link from 'next/link'
import Head from 'next/head'
import QRCode from 'qrcode.react'
import { ThemeContext } from './_app.js'
import Header from '../components/Header'
import Footer from '../components/Footer'
import { Title } from '../components/Title'
import ArticleLine from '../components/ArticleLine'
/* eslint-enable no-unused-vars */
import { yymmdd } from '../utils/date'
import './post.css'
export default class PostPage extends React.Component {
constructor(props) {
super(props)
this.state = {
type: null,
article: [],
articleRecommendList: [],
mounted: false
}
this.renderBack = this.renderBack.bind(this)
}
componentDidMount() {
let date = document.location.href.match(/d=[^=&]*/)
let type = document.location.href.match(/t=[^=&]*/)
if (!date || date.length === 0 || !type || type.length === 0) {
return null
}
date = date[0].slice(2)
type = type[0].slice(2)
const {
attributes: { news }
} = newsList
let ReadArticleList = window.localStorage.getItem('read') || ''
ReadArticleList = ReadArticleList.split(' ')
const {
attributes: { article: articles }
} = ronghuiPage
let article = []
let articleRecommendList = []
let articleRecommendListBackup = []
let origin = type === 'news' ? news : articles
origin.map((n) => {
const curDate = n.createDate.replace(/[^\d]/g, '')
if (curDate === date) {
article.push(n)
if (ReadArticleList.indexOf(curDate) === -1) {
this.recordReadTimer = setTimeout(() => {
window.localStorage.setItem(
'read',
ReadArticleList.concat(curDate).join(' ')
)
}, 2000)
}
} else {
if (ReadArticleList.indexOf(curDate) === -1) {
articleRecommendList.push(n)
}
articleRecommendListBackup.push(n)
}
})
if (articleRecommendList.length < 2) {
articleRecommendList = articleRecommendListBackup
}
this.setState({
article,
articleRecommendList,
type,
mounted: true
})
}
componentWillUnmount() {
clearTimeout(this.recordReadTimer)
}
renderBack(en) {
const { type } = this.state
let text
if (type === 'news') {
const {
attributes: { allNews, allNewsEN }
} = newsPage
text = en === null ? '' : en ? allNewsEN : allNews
} else if (type === 'article') {
const {
attributes: { allArticles, allArticlesEN }
} = ronghuiPage
text = en === null ? '' : en ? allArticlesEN : allArticles
}
return (
<Link
prefetch={false}
href={{ pathname: type === 'news' ? '/news.html' : '/ronghui.html' }}
>
<a className="linka post-back">
<span className="post-back-img"></span>
{text}
</a>
</Link>
)
}
render() {
const { article, type, articleRecommendList, mounted } = this.state
if (!article || !mounted) return null
if (article.length === 0) {
return <div>not found</div>
}
const post = article[0]
// console.log(post.content)
return (
<ThemeContext.Consumer>
{(val) => {
const { en } = val
return (
<div className="post-page">
<Head>
<title>
{en === null ? '' : en ? post.titleEN : post.title}
</title>
</Head>
<Header en={en} curPage="post"></Header>
<div className="post-outline-wrapper">
<div className="bg"></div>
{this.renderBack(en)}
<div className="post-wrapper">
{post.type && (
<div className="post-source">
{en === null ? '' : en ? post.typeEN : post.type}
</div>
)}
<Title en={en}>
{en === null ? '' : en ? post.titleEN : post.title}
</Title>
<div className="post-dateshare-wrapper">
<div className="post-date">
{yymmdd(new Date(post.createDate)).join('/')}
</div>
<div className="post-share-wrapper">
<a
href={`mailto:?body=${encodeURIComponent(
document.location.href
)}`}
>
<div className="post-share-icon post-share-mail"></div>
</a>
<a
target="_blank"
href={`http://service.weibo.com/share/share.php?url=${encodeURIComponent(
document.location.href
)}&title=${
en === null ? '' : en ? post.titleEN : post.title
}&pic=${encodeURIComponent(
`${document.location.host}${post.pic}`
)}&searchPic=false&appkey=2421796710`}
>
<div className="post-share-icon post-share-weibo"></div>
</a>
<div className="post-share-icon post-share-wechat">
<div className="post-share-qrcode">
<QRCode value={document.location.href} />
</div>
</div>
</div>
</div>
<div
className="post-content"
dangerouslySetInnerHTML={(() => {
switch (en) {
case null:
return { __html: '' }
case true:
if (post.contentEN) {
return { __html: marked(post.contentEN) }
} else {
return {
__html:
'Sorry, English version is not available now.'
}
}
case false:
if (post.content) {
return { __html: marked(post.content) }
} else {
return { __html: '暂无内容' }
}
default:
return { __html: '' }
}
})()}
></div>
<div className="post-end">
<img src="/static/img/logo-yellow.svg" />
</div>
</div>
<ArticleLine
articleList={articleRecommendList}
en={en}
type={type}
/>
</div>
<Footer />
</div>
)
}}
</ThemeContext.Consumer>
)
}
}
const config = require('./package.json')
module.exports = (ctx) => {
const plugins = {
autoprefixer: {
Browserslist: config.browserslist, // ['not ie < 8'],
flexbox: 'no-2009'
},
'postcss-px2rem': {
remUnit: 38,
baseDpr: 1
}
}
return { plugins }
}
// 'postcss-adaptive': {
// autoRem: true,
// remUnit: 144,
// baseDpr: 1,
// remPrecision: 9,
// hairlineClase: 'hairline'
// }
resize.gif

1.39 MB

retry.jpeg

55.9 KB

backend:
#name: test-repo
name: gitlab
branch: master
repo: lq/ficus
auth_type: implicit
app_id: baf1b5892995e38de18181927eddafabc7c5a5c472b3d03847c8338b74bccd8b
#secret:eae2faab78b54012831e8c89a05137f6d019d670091139397d67dd53a89c7c78
api_root: https://git.gaorongvc.cn/api/v4
base_url: https://git.gaorongvc.cn
authENdpoint: oauth/authorize
media_folder: static/img
collections:
- name: "frontPage"
label: "frontPage"
files:
- label: "frontPage"
name: "frontPage"
file: "content/frontPage.md"
fields:
- { label: "MetaDescription", name: "metaDescription", widget: "text"}
- { label: "MetaDescriptionEN", name: "metaDescriptionEN", widget: "text"}
- { label: "Title 中文.svg文字改变也要改变文件名,不要用、等特殊字符,空白表示换行", name: "title", widget: "string"}
- { label: "TitleEN", name: "titleEN", widget: "string"}
- { label: "SubTitle", name: "subTitle", widget: "string"}
- { label: "SubTitleEN", name: "subTitleEN", widget: "string"}
- { label: "gaorongWith", name: "gaorongWith", widget: "string" }
- { label: "gaorongWithEN", name: "gaorongWithEN", widget: "string" }
- { label: "videoPoster", name: "videoPoster", widget: "image"}
- { label: "video", name: "video", widget: "image"}
- { label: "videoMobile", name: "videoMobile", widget: "image"}
- label: 'portfolio'
name: "portfolio"
widget: list
fields:
- { label: "Title", name: "title", widget: "string" }
- { label: "TitleEN", name: "titleEN", widget: "string" }
- { label: "Since Date", name: "sinceDate", widget: "datetime" }
- { label: "Description", name: "description", widget: "text" }
- { label: "DescriptionEN", name: "descriptionEN", widget: "text" }
- { label: "image", name: "image", widget: "image" }
- { label: "image2", name: "image2", widget: "image" }
- { label: "logo", name: "logo", widget: "image" }
- { label: "logo2", name: "logo2", widget: "image" }
- { label: "Summary Title", name: "summaryTitle", widget: "string"}
- { label: "Summary TitleEN", name: "summaryTitleEN", widget: "string"}
- { label: "Summary subTitle", name: "summarySubTitle", widget: "text"}
- { label: "Summary subTitleEN", name: "summarySubTitleEN", widget: "text"}
- { label: "Summary Knowmore", name: "summaryKnowmore", widget: "string"}
- { label: "Summary KnowmoreEN", name: "summaryKnowmoreEN", widget: "string"}
- { label: "portfolio text", name: "portfolioText", widget: "string"}
- { label: "portfolio textEN", name: "portfolioTextEN", widget: "string"}
- { label: "portfolio number", name: "portfolioNum", widget: "string"}
- { label: "unicorn text", name: "unicornText", widget: "string"}
- { label: "unicorn textEN", name: "unicornTextEN", widget: "string"}
- { label: "unicorn number", name: "unicornNum", widget: "string"}
- { label: "IPO text", name: "IPOText", widget: "string"}
- { label: "IPO textEN", name: "IPOTextEN", widget: "string"}
- { label: "IPO number", name: "IPONum", widget: "string"}
- { label: "asset text", name: "assetText", widget: "string"}
- { label: "asset textEN", name: "assetTextEN", widget: "string"}
- { label: "asset number", name: "assetNum", widget: "string"}
- { label: "asset numberEN", name: "assetNumEN", widget: "string"}
- { label: "portfolio summary", name: "portfolioSummary", widget: "text"}
- { label: "portfolio summaryEN", name: "portfolioSummaryEN", widget: "text"}
- { label: "portfolio summary entry", name: "portfolioSummaryEntry", widget: "string"}
- { label: "portfolio summaryEN", name: "portfolioSummaryEntryEN", widget: "string"}
- { label: "team summary title", name: "teamSummaryTitle", widget: "string"}
- { label: "team summary titleEN", name: "teamSummaryTitleEN", widget: "string"}
- { label: "team summary text", name: "teamSummaryText", widget: "string"}
- { label: "team summary textEN", name: "teamSummaryTextEN", widget: "text"}
- { label: "team summary entry", name: "teamSummaryEntry", widget: "string"}
- { label: "team summary entryEN", name: "teamSummaryEntryEN", widget: "string"}
- { label: "team summary image", name: "teamImage", widget: "image"}
- { label: "team summary imagex2", name: "teamImagex2", widget: "image"}
- { label: "news 3d image", name: "news3dImage", widget: "image"}
- { label: "news 3d imageEN", name: "news3dImageEN", widget: "image"}
- { label: "news 3d image mobile", name: "news3dImageMobile", widget: "image"}
- { label: "news 3d imageEN mobile", name: "news3dImageENMobile", widget: "image"}
- { label: "news summary title", name: "newsSummaryTitle", widget: "string"}
- { label: "news summary titleEN", name: "newsSummaryTitleEN", widget: "string"}
- { label: "news summary entry", name: "newSummaryEntry", widget: "string"}
- { label: "news summary entryEN", name: "newSummaryEntryEN", widget: "string"}
- { label: "ronghui summary title", name: "ronghuiSummaryTitle", widget: "string"}
- { label: "ronghui summary titleEN", name: "ronghuiSummaryTitleEN", widget: "string"}
- { label: "ronghui summary text", name: "ronghuiSummaryText", widget: "text"}
- { label: "ronghui summary textEN", name: "ronghuiSummaryTextEN", widget: "text"}
- { label: "ronghui summary entry", name: "ronghuiSummaryEntry", widget: "string"}
- { label: "ronghui summary entryEN", name: "ronghuiSummaryEntryEN", widget: "string"}
- { label: "ronghui summary image", name: "ronghuiImage", widget: "image"}
- { label: "ronghui summary imagex2", name: "ronghuiImagex2", widget: "image"}
- name: "newsPage"
label: "newsPage"
files:
- label: "newsPage"
name: "newsPage"
file: "content/newsPage.md"
fields:
- { label: "Title", name: "title", widget: "string"}
- { label: "TitleEN", name: "titleEN", widget: "string"}
- { label: "SearchPlaceholder", name: "searchPlaceholder", widget: "string"}
- { label: "SearchPlaceholderEN", name: "searchPlaceholderEN", widget: "string"}
- { label: "AllNews", name: "allNews", widget: "string"}
- { label: "AllNewsEN", name: "allNewsEN", widget: "string"}
- name: "Common"
label: "Common"
files:
- label: "common"
name: "common"
file: "content/common.md"
fields:
- { label: "error title", name: "errorTitle", widget: "text" }
- { label: "error titleEN", name: "errorTitleEN", widget: "text" }
- { label: "error string", name: "errorStr", widget: "text" }
- { label: "error stringEN", name: "errorStrEN", widget: "text" }
- { label: "error img", name: "errorImg", widget: "image" }
- { label: "back to home", name: "backToHome", widget: "text" }
- { label: "back to homeEN", name: "backToHomeEN", widget: "text" }
- { label: "treeMask", name: "treeMask", widget: "image" }
- label: "Head"
name: "head"
file: "content/head.md"
fields:
- { label: "Home", name: "home", widget: "string" }
- { label: "HomeEN", name: "homeEN", widget: "string" }
- { label: "About", name: "about", widget: "string" }
- { label: "Portfolio", name: "portfolio", widget: "string" }
- { label: "Team", name: "team", widget: "string" }
- { label: "Ronghui", name: "ronghui", widget: "string" }
- { label: "News", name: "news", widget: "string" }
- { label: "Warn", name: "warn", widget: "string" }
- { label: "AboutEN", name: "aboutEN", widget: "string" }
- { label: "PortfolioEN", name: "portfolioEN", widget: "string" }
- { label: "TeamEN", name: "teamEN", widget: "string" }
- { label: "RonghuiEN", name: "ronghuiEN", widget: "string" }
- { label: "NewsEN", name: "newsEN", widget: "string" }
- { label: "WarnEN", name: "warnEN", widget: "string" }
- label: "Foot"
name: "foot"
file: "content/foot.md"
fields:
- { label: "email", name: "email", widget: "string"}
- { label: "emailEN", name: "emailEN", widget: "string"}
- { label: "emailStr", name: "emailStr", widget: "string"}
- { label: "phone", name: "phone", widget: "string"}
- { label: "phoneEN", name: "phoneEN", widget: "string"}
- { label: "phoneStr", name: "phoneStr", widget: "string"}
- { label: "fax", name: "fax", widget: "string"}
- { label: "faxEN", name: "faxEN", widget: "string"}
- { label: "faxStr", name: "faxStr", widget: "string"}
- { label: "wechat", name: "wechat", widget: "string"}
- { label: "wechatEN", name: "wechatEN", widget: "string"}
- { label: "beijing", name: "beijing", widget: "string"}
- { label: "beijingEN", name: "beijingEN", widget: "string"}
- { label: "shanghai", name: "shanghai", widget: "string"}
- { label: "shanghaiEN", name: "shanghaiEN", widget: "string"}
- { label: "shenzhen", name: "shenzhen", widget: "string"}
- { label: "shenzhenEN", name: "shenzhenEN", widget: "string"}
- { label: "xianggang", name: "xianggang", widget: "string"}
- { label: "xianggangEN", name: "xianggangEN", widget: "string"}
- { label: "beijingloc", name: "beijingloc", widget: "string"}
- { label: "beijinglocEN", name: "beijinglocEN", widget: "string"}
- { label: "shanghailoc", name: "shanghailoc", widget: "string"}
- { label: "shanghailocEN", name: "shanghailocEN", widget: "string"}
- { label: "shenzhenloc", name: "shenzhenloc", widget: "string"}
- { label: "shenzhenlocEN", name: "shenzhenlocEN", widget: "string"}
- { label: "xianggangloc", name: "xianggangloc", widget: "string"}
- { label: "xiangganglocEN", name: "xiangganglocEN", widget: "string"}
- { label: "treeLogo", name: "treeLogo", widget: "image"}
- { label: "footerMask", name: "footerMask", widget: "image"}
- { label: "wechatimg", name: "wechatimg", widget: "image"}
- name: "News"
label: "News"
sortable_fields: ['type', 'title','createDate', 'highLight','source']
create: true
view_filters:
- label: "新科技"
field: type
pattern: '新科技'
- label: '新消费'
field: type
pattern: '新消费'
- label: '医疗健康'
field: type
pattern: '医疗健康'
- label: '榕报'
field: type
pattern: '榕报'
- label: '榕汇'
field: type
pattern: '榕汇'
- label: '分享'
field: type
pattern: '分享'
- label: '高榕分享'
field: type
pattern: '高榕分享'
- label: '荣誉'
field: type
pattern: '荣誉'
- label: '高榕特写'
field: type
pattern: '高榕特写'
- label: '高榕新闻'
field: type
pattern: '高榕新闻'
- label: '高榕转载'
field: type
pattern: '高榕转载'
- label: '声明'
field: type
pattern: '声明'
- label: '榕问'
field: type
pattern: '榕问'
- label: '高榕动态'
field: type
pattern: '高榕动态'
view_groups:
- label: "新技术"
field: type
pattern: '新技术'
- label: '新消费'
field: type
pattern: '新消费'
- label: '医疗健康'
field: type
pattern: '医疗健康'
- label: '榕报'
field: type
pattern: '榕报'
- label: '榕汇'
field: type
pattern: '榕汇'
- label: '分享'
field: type
pattern: '分享'
- label: '高榕分享'
field: type
pattern: '高榕分享'
- label: '荣誉'
field: type
pattern: '荣誉'
- label: '高榕特写'
field: type
pattern: '高榕特写'
- label: '高榕新闻'
field: type
pattern: '高榕新闻'
- label: '高榕转载'
field: type
pattern: '高榕转载'
- label: '声明'
field: type
pattern: '声明'
- label: '榕问'
field: type
pattern: '榕问'
- label: '高榕动态'
field: type
pattern: '高榕动态'
identifier_field: name
folder: "content/news"
summary: "{{title}} {{createDate}}"
fields:
- { label: "Title", name: "title", widget: "string" }
- { label: "TitleEN", name: "titleEN", widget: "string", required: false }
- { label: "Source", name: "source", widget: "string", required: false }
- { label: "SourceEN", name: "sourceEN", widget: "string", required: false }
- { label: "hide", name: "hide", widget: "boolean", required: false, default: false }
- { label: "type", name: "type", widget: "string", required: false}
- { label: "typeEN", name: "typeEN", widget: "string", required: false}
- { label: "createDate", name: "createDate", widget: "datetime" }
- { label: "Abstract", name: "abstract", widget: "text" }
- { label: "AbstractEN", name: "abstractEN", widget: "text", required: false }
- { label: "content", name: "content", widget: "markdown"}
- { label: "contentEN", name: "contentEN", widget: "markdown", required: false}
- { label: "Picture", name: "pic", widget: "image" }
- { label: "HighLight", name: "highLight", widget: "boolean", required: false}
\ No newline at end of file
<!doctype html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Content Manager</title>
<!-- <script src="https://identity.netlify.com/v1/netlify-identity-widget.js"></script> -->
</head>
<body>
<!-- Include the script that builds the page and powers Netlify CMS -->
<script src="./netlify-cms.js"></script>
</body>
</html>
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
!function e(u,c,a){function s(r,t){if(!c[r]){if(!u[r]){var n="function"==typeof require&&require;if(!t&&n)return n(r,!0);if(f)return f(r,!0);var i=new Error("Cannot find module '"+r+"'");throw i.code="MODULE_NOT_FOUND",i}var o=c[r]={exports:{}};u[r][0].call(o.exports,function(t){var n=u[r][1][t];return s(n||t)},o,o.exports,e,u,c,a)}return c[r].exports}for(var f="function"==typeof require&&require,t=0;t<a.length;t++)s(a[t]);return s}({1:[function(t,n,r){"use strict";t(2);var e=function _interopRequireDefault(t){return t&&t.__esModule?t:{default:t}}(t(15));e.default._babelPolyfill&&"undefined"!=typeof console&&console.warn&&console.warn("@babel/polyfill is loaded more than once on this page. This is probably not desirable/intended and may have consequences if different versions of the polyfills are applied sequentially. If you do need to load the polyfill more than once, use @babel/polyfill/noConflict instead to bypass the warning."),e.default._babelPolyfill=!0},{15:15,2:2}],2:[function(t,n,r){"use strict";t(3),t(5),t(4),t(11),t(10),t(13),t(12),t(14),t(7),t(8),t(6),t(9),t(306),t(307)},{10:10,11:11,12:12,13:13,14:14,3:3,306:306,307:307,4:4,5:5,6:6,7:7,8:8,9:9}],3:[function(t,n,r){t(278),t(214),t(216),t(215),t(218),t(220),t(225),t(219),t(217),t(227),t(226),t(222),t(223),t(221),t(213),t(224),t(228),t(229),t(180),t(182),t(181),t(231),t(230),t(201),t(211),t(212),t(202),t(203),t(204),t(205),t(206),t(207),t(208),t(209),t(210),t(184),t(185),t(186),t(187),t(188),t(189),t(190),t(191),t(192),t(193),t(194),t(195),t(196),t(197),t(198),t(199),t(200),t(265),t(270),t(277),t(268),t(260),t(261),t(266),t(271),t(273),t(256),t(257),t(258),t(259),t(262),t(263),t(264),t(267),t(269),t(272),t(274),t(275),t(276),t(175),t(177),t(176),t(179),t(178),t(163),t(161),t(168),t(165),t(171),t(173),t(160),t(167),t(157),t(172),t(155),t(170),t(169),t(162),t(166),t(154),t(156),t(159),t(158),t(174),t(164),t(247),t(248),t(254),t(249),t(250),t(251),t(252),t(253),t(232),t(183),t(255),t(290),t(291),t(279),t(280),t(285),t(288),t(289),t(283),t(286),t(284),t(287),t(281),t(282),t(233),t(234),t(235),t(236),t(237),t(240),t(238),t(239),t(241),t(242),t(243),t(244),t(246),t(245),n.exports=t(52)},{154:154,155:155,156:156,157:157,158:158,159:159,160:160,161:161,162:162,163:163,164:164,165:165,166:166,167:167,168:168,169:169,170:170,171:171,172:172,173:173,174:174,175:175,176:176,177:177,178:178,179:179,180:180,181:181,182:182,183:183,184:184,185:185,186:186,187:187,188:188,189:189,190:190,191:191,192:192,193:193,194:194,195:195,196:196,197:197,198:198,199:199,200:200,201:201,202:202,203:203,204:204,205:205,206:206,207:207,208:208,209:209,210:210,211:211,212:212,213:213,214:214,215:215,216:216,217:217,218:218,219:219,220:220,221:221,222:222,223:223,224:224,225:225,226:226,227:227,228:228,229:229,230:230,231:231,232:232,233:233,234:234,235:235,236:236,237:237,238:238,239:239,240:240,241:241,242:242,243:243,244:244,245:245,246:246,247:247,248:248,249:249,250:250,251:251,252:252,253:253,254:254,255:255,256:256,257:257,258:258,259:259,260:260,261:261,262:262,263:263,264:264,265:265,266:266,267:267,268:268,269:269,270:270,271:271,272:272,273:273,274:274,275:275,276:276,277:277,278:278,279:279,280:280,281:281,282:282,283:283,284:284,285:285,286:286,287:287,288:288,289:289,290:290,291:291,52:52}],4:[function(t,n,r){t(292),n.exports=t(52).Array.flatMap},{292:292,52:52}],5:[function(t,n,r){t(293),n.exports=t(52).Array.includes},{293:293,52:52}],6:[function(t,n,r){t(294),n.exports=t(52).Object.entries},{294:294,52:52}],7:[function(t,n,r){t(295),n.exports=t(52).Object.getOwnPropertyDescriptors},{295:295,52:52}],8:[function(t,n,r){t(296),n.exports=t(52).Object.values},{296:296,52:52}],9:[function(t,n,r){"use strict";t(232),t(297),n.exports=t(52).Promise.finally},{232:232,297:297,52:52}],10:[function(t,n,r){t(298),n.exports=t(52).String.padEnd},{298:298,52:52}],11:[function(t,n,r){t(299),n.exports=t(52).String.padStart},{299:299,52:52}],12:[function(t,n,r){t(301),n.exports=t(52).String.trimRight},{301:301,52:52}],13:[function(t,n,r){t(300),n.exports=t(52).String.trimLeft},{300:300,52:52}],14:[function(t,n,r){t(302),n.exports=t(151).f("asyncIterator")},{151:151,302:302}],15:[function(t,n,r){t(32),n.exports=t(18).global},{18:18,32:32}],16:[function(t,n,r){n.exports=function(t){if("function"!=typeof t)throw TypeError(t+" is not a function!");return t}},{}],17:[function(t,n,r){var e=t(28);n.exports=function(t){if(!e(t))throw TypeError(t+" is not an object!");return t}},{28:28}],18:[function(t,n,r){var e=n.exports={version:"2.6.5"};"number"==typeof __e&&(__e=e)},{}],19:[function(t,n,r){var o=t(16);n.exports=function(e,i,t){if(o(e),void 0===i)return e;switch(t){case 1:return function(t){return e.call(i,t)};case 2:return function(t,n){return e.call(i,t,n)};case 3:return function(t,n,r){return e.call(i,t,n,r)}}return function(){return e.apply(i,arguments)}}},{16:16}],20:[function(t,n,r){n.exports=!t(23)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},{23:23}],21:[function(t,n,r){var e=t(28),i=t(24).document,o=e(i)&&e(i.createElement);n.exports=function(t){return o?i.createElement(t):{}}},{24:24,28:28}],22:[function(t,n,r){var y=t(24),g=t(18),d=t(19),x=t(26),m=t(25),b="prototype",S=function(t,n,r){var e,i,o,u=t&S.F,c=t&S.G,a=t&S.S,f=t&S.P,s=t&S.B,l=t&S.W,h=c?g:g[n]||(g[n]={}),p=h[b],v=c?y:a?y[n]:(y[n]||{})[b];for(e in c&&(r=n),r)(i=!u&&v&&void 0!==v[e])&&m(h,e)||(o=i?v[e]:r[e],h[e]=c&&"function"!=typeof v[e]?r[e]:s&&i?d(o,y):l&&v[e]==o?function(e){var t=function(t,n,r){if(this instanceof e){switch(arguments.length){case 0:return new e;case 1:return new e(t);case 2:return new e(t,n)}return new e(t,n,r)}return e.apply(this,arguments)};return t[b]=e[b],t}(o):f&&"function"==typeof o?d(Function.call,o):o,f&&((h.virtual||(h.virtual={}))[e]=o,t&S.R&&p&&!p[e]&&x(p,e,o)))};S.F=1,S.G=2,S.S=4,S.P=8,S.B=16,S.W=32,S.U=64,S.R=128,n.exports=S},{18:18,19:19,24:24,25:25,26:26}],23:[function(t,n,r){n.exports=function(t){try{return!!t()}catch(t){return!0}}},{}],24:[function(t,n,r){var e=n.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=e)},{}],25:[function(t,n,r){var e={}.hasOwnProperty;n.exports=function(t,n){return e.call(t,n)}},{}],26:[function(t,n,r){var e=t(29),i=t(30);n.exports=t(20)?function(t,n,r){return e.f(t,n,i(1,r))}:function(t,n,r){return t[n]=r,t}},{20:20,29:29,30:30}],27:[function(t,n,r){n.exports=!t(20)&&!t(23)(function(){return 7!=Object.defineProperty(t(21)("div"),"a",{get:function(){return 7}}).a})},{20:20,21:21,23:23}],28:[function(t,n,r){n.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},{}],29:[function(t,n,r){var e=t(17),i=t(27),o=t(31),u=Object.defineProperty;r.f=t(20)?Object.defineProperty:function defineProperty(t,n,r){if(e(t),n=o(n,!0),e(r),i)try{return u(t,n,r)}catch(t){}if("get"in r||"set"in r)throw TypeError("Accessors not supported!");return"value"in r&&(t[n]=r.value),t}},{17:17,20:20,27:27,31:31}],30:[function(t,n,r){n.exports=function(t,n){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:n}}},{}],31:[function(t,n,r){var i=t(28);n.exports=function(t,n){if(!i(t))return t;var r,e;if(n&&"function"==typeof(r=t.toString)&&!i(e=r.call(t)))return e;if("function"==typeof(r=t.valueOf)&&!i(e=r.call(t)))return e;if(!n&&"function"==typeof(r=t.toString)&&!i(e=r.call(t)))return e;throw TypeError("Can't convert object to primitive value")}},{28:28}],32:[function(t,n,r){var e=t(22);e(e.G,{global:t(24)})},{22:22,24:24}],33:[function(t,n,r){arguments[4][16][0].apply(r,arguments)},{16:16}],34:[function(t,n,r){var e=t(48);n.exports=function(t,n){if("number"!=typeof t&&"Number"!=e(t))throw TypeError(n);return+t}},{48:48}],35:[function(t,n,r){var e=t(152)("unscopables"),i=Array.prototype;null==i[e]&&t(72)(i,e,{}),n.exports=function(t){i[e][t]=!0}},{152:152,72:72}],36:[function(t,n,r){"use strict";var e=t(129)(!0);n.exports=function(t,n,r){return n+(r?e(t,n).length:1)}},{129:129}],37:[function(t,n,r){n.exports=function(t,n,r,e){if(!(t instanceof n)||void 0!==e&&e in t)throw TypeError(r+": incorrect invocation!");return t}},{}],38:[function(t,n,r){arguments[4][17][0].apply(r,arguments)},{17:17,81:81}],39:[function(t,n,r){"use strict";var f=t(142),s=t(137),l=t(141);n.exports=[].copyWithin||function copyWithin(t,n){var r=f(this),e=l(r.length),i=s(t,e),o=s(n,e),u=2<arguments.length?arguments[2]:void 0,c=Math.min((void 0===u?e:s(u,e))-o,e-i),a=1;for(o<i&&i<o+c&&(a=-1,o+=c-1,i+=c-1);0<c--;)o in r?r[i]=r[o]:delete r[i],i+=a,o+=a;return r}},{137:137,141:141,142:142}],40:[function(t,n,r){"use strict";var c=t(142),a=t(137),f=t(141);n.exports=function fill(t){for(var n=c(this),r=f(n.length),e=arguments.length,i=a(1<e?arguments[1]:void 0,r),o=2<e?arguments[2]:void 0,u=void 0===o?r:a(o,r);i<u;)n[i++]=t;return n}},{137:137,141:141,142:142}],41:[function(t,n,r){var a=t(140),f=t(141),s=t(137);n.exports=function(c){return function(t,n,r){var e,i=a(t),o=f(i.length),u=s(r,o);if(c&&n!=n){for(;u<o;)if((e=i[u++])!=e)return!0}else for(;u<o;u++)if((c||u in i)&&i[u]===n)return c||u||0;return!c&&-1}}},{137:137,140:140,141:141}],42:[function(t,n,r){var m=t(54),b=t(77),S=t(142),w=t(141),e=t(45);n.exports=function(l,t){var h=1==l,p=2==l,v=3==l,y=4==l,g=6==l,d=5==l||g,x=t||e;return function(t,n,r){for(var e,i,o=S(t),u=b(o),c=m(n,r,3),a=w(u.length),f=0,s=h?x(t,a):p?x(t,0):void 0;f<a;f++)if((d||f in u)&&(i=c(e=u[f],f,o),l))if(h)s[f]=i;else if(i)switch(l){case 3:return!0;case 5:return e;case 6:return f;case 2:s.push(e)}else if(y)return!1;return g?-1:v||y?y:s}}},{141:141,142:142,45:45,54:54,77:77}],43:[function(t,n,r){var s=t(33),l=t(142),h=t(77),p=t(141);n.exports=function(t,n,r,e,i){s(n);var o=l(t),u=h(o),c=p(o.length),a=i?c-1:0,f=i?-1:1;if(r<2)for(;;){if(a in u){e=u[a],a+=f;break}if(a+=f,i?a<0:c<=a)throw TypeError("Reduce of empty array with no initial value")}for(;i?0<=a:a<c;a+=f)a in u&&(e=n(e,u[a],a,o));return e}},{141:141,142:142,33:33,77:77}],44:[function(t,n,r){var e=t(81),i=t(79),o=t(152)("species");n.exports=function(t){var n;return i(t)&&("function"!=typeof(n=t.constructor)||n!==Array&&!i(n.prototype)||(n=void 0),e(n)&&null===(n=n[o])&&(n=void 0)),void 0===n?Array:n}},{152:152,79:79,81:81}],45:[function(t,n,r){var e=t(44);n.exports=function(t,n){return new(e(t))(n)}},{44:44}],46:[function(t,n,r){"use strict";var o=t(33),u=t(81),c=t(76),a=[].slice,f={};n.exports=Function.bind||function bind(n){var r=o(this),e=a.call(arguments,1),i=function(){var t=e.concat(a.call(arguments));return this instanceof i?function(t,n,r){if(!(n in f)){for(var e=[],i=0;i<n;i++)e[i]="a["+i+"]";f[n]=Function("F,a","return new F("+e.join(",")+")")}return f[n](t,r)}(r,t.length,t):c(r,t,n)};return u(r.prototype)&&(i.prototype=r.prototype),i}},{33:33,76:76,81:81}],47:[function(t,n,r){var i=t(48),o=t(152)("toStringTag"),u="Arguments"==i(function(){return arguments}());n.exports=function(t){var n,r,e;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(r=function(t,n){try{return t[n]}catch(t){}}(n=Object(t),o))?r:u?i(n):"Object"==(e=i(n))&&"function"==typeof n.callee?"Arguments":e}},{152:152,48:48}],48:[function(t,n,r){var e={}.toString;n.exports=function(t){return e.call(t).slice(8,-1)}},{}],49:[function(t,n,r){"use strict";var u=t(99).f,c=t(98),a=t(117),f=t(54),s=t(37),l=t(68),e=t(85),i=t(87),o=t(123),h=t(58),p=t(94).fastKey,v=t(149),y=h?"_s":"size",g=function(t,n){var r,e=p(n);if("F"!==e)return t._i[e];for(r=t._f;r;r=r.n)if(r.k==n)return r};n.exports={getConstructor:function(t,o,r,e){var i=t(function(t,n){s(t,i,o,"_i"),t._t=o,t._i=c(null),t._f=void 0,t._l=void 0,t[y]=0,null!=n&&l(n,r,t[e],t)});return a(i.prototype,{clear:function clear(){for(var t=v(this,o),n=t._i,r=t._f;r;r=r.n)r.r=!0,r.p&&(r.p=r.p.n=void 0),delete n[r.i];t._f=t._l=void 0,t[y]=0},delete:function(t){var n=v(this,o),r=g(n,t);if(r){var e=r.n,i=r.p;delete n._i[r.i],r.r=!0,i&&(i.n=e),e&&(e.p=i),n._f==r&&(n._f=e),n._l==r&&(n._l=i),n[y]--}return!!r},forEach:function forEach(t){v(this,o);for(var n,r=f(t,1<arguments.length?arguments[1]:void 0,3);n=n?n.n:this._f;)for(r(n.v,n.k,this);n&&n.r;)n=n.p},has:function has(t){return!!g(v(this,o),t)}}),h&&u(i.prototype,"size",{get:function(){return v(this,o)[y]}}),i},def:function(t,n,r){var e,i,o=g(t,n);return o?o.v=r:(t._l=o={i:i=p(n,!0),k:n,v:r,p:e=t._l,n:void 0,r:!1},t._f||(t._f=o),e&&(e.n=o),t[y]++,"F"!==i&&(t._i[i]=o)),t},getEntry:g,setStrong:function(t,r,n){e(t,r,function(t,n){this._t=v(t,r),this._k=n,this._l=void 0},function(){for(var t=this,n=t._k,r=t._l;r&&r.r;)r=r.p;return t._t&&(t._l=r=r?r.n:t._t._f)?i(0,"keys"==n?r.k:"values"==n?r.v:[r.k,r.v]):(t._t=void 0,i(1))},n?"entries":"values",!n,!0),o(r)}}},{117:117,123:123,149:149,37:37,54:54,58:58,68:68,85:85,87:87,94:94,98:98,99:99}],50:[function(t,n,r){"use strict";var u=t(117),c=t(94).getWeak,i=t(38),a=t(81),f=t(37),s=t(68),e=t(42),l=t(71),h=t(149),o=e(5),p=e(6),v=0,y=function(t){return t._l||(t._l=new g)},g=function(){this.a=[]},d=function(t,n){return o(t.a,function(t){return t[0]===n})};g.prototype={get:function(t){var n=d(this,t);if(n)return n[1]},has:function(t){return!!d(this,t)},set:function(t,n){var r=d(this,t);r?r[1]=n:this.a.push([t,n])},delete:function(n){var t=p(this.a,function(t){return t[0]===n});return~t&&this.a.splice(t,1),!!~t}},n.exports={getConstructor:function(t,r,e,i){var o=t(function(t,n){f(t,o,r,"_i"),t._t=r,t._i=v++,t._l=void 0,null!=n&&s(n,e,t[i],t)});return u(o.prototype,{delete:function(t){if(!a(t))return!1;var n=c(t);return!0===n?y(h(this,r)).delete(t):n&&l(n,this._i)&&delete n[this._i]},has:function has(t){if(!a(t))return!1;var n=c(t);return!0===n?y(h(this,r)).has(t):n&&l(n,this._i)}}),o},def:function(t,n,r){var e=c(i(n),!0);return!0===e?y(t).set(n,r):e[t._i]=r,t},ufstore:y}},{117:117,149:149,37:37,38:38,42:42,68:68,71:71,81:81,94:94}],51:[function(t,n,r){"use strict";var d=t(70),x=t(62),m=t(118),b=t(117),S=t(94),w=t(68),_=t(37),E=t(81),F=t(64),I=t(86),O=t(124),P=t(75);n.exports=function(e,t,n,r,i,o){var u=d[e],c=u,a=i?"set":"add",f=c&&c.prototype,s={},l=function(t){var r=f[t];m(f,t,"delete"==t?function(t){return!(o&&!E(t))&&r.call(this,0===t?0:t)}:"has"==t?function has(t){return!(o&&!E(t))&&r.call(this,0===t?0:t)}:"get"==t?function get(t){return o&&!E(t)?void 0:r.call(this,0===t?0:t)}:"add"==t?function add(t){return r.call(this,0===t?0:t),this}:function set(t,n){return r.call(this,0===t?0:t,n),this})};if("function"==typeof c&&(o||f.forEach&&!F(function(){(new c).entries().next()}))){var h=new c,p=h[a](o?{}:-0,1)!=h,v=F(function(){h.has(1)}),y=I(function(t){new c(t)}),g=!o&&F(function(){for(var t=new c,n=5;n--;)t[a](n,n);return!t.has(-0)});y||(((c=t(function(t,n){_(t,c,e);var r=P(new u,t,c);return null!=n&&w(n,i,r[a],r),r})).prototype=f).constructor=c),(v||g)&&(l("delete"),l("has"),i&&l("get")),(g||p)&&l(a),o&&f.clear&&delete f.clear}else c=r.getConstructor(t,e,i,a),b(c.prototype,n),S.NEED=!0;return O(c,e),s[e]=c,x(x.G+x.W+x.F*(c!=u),s),o||r.setStrong(c,e,i),c}},{117:117,118:118,124:124,37:37,62:62,64:64,68:68,70:70,75:75,81:81,86:86,94:94}],52:[function(t,n,r){arguments[4][18][0].apply(r,arguments)},{18:18}],53:[function(t,n,r){"use strict";var e=t(99),i=t(116);n.exports=function(t,n,r){n in t?e.f(t,n,i(0,r)):t[n]=r}},{116:116,99:99}],54:[function(t,n,r){arguments[4][19][0].apply(r,arguments)},{19:19,33:33}],55:[function(t,n,r){"use strict";var e=t(64),i=Date.prototype.getTime,o=Date.prototype.toISOString,u=function(t){return 9<t?t:"0"+t};n.exports=e(function(){return"0385-07-25T07:06:39.999Z"!=o.call(new Date(-5e13-1))})||!e(function(){o.call(new Date(NaN))})?function toISOString(){if(!isFinite(i.call(this)))throw RangeError("Invalid time value");var t=this,n=t.getUTCFullYear(),r=t.getUTCMilliseconds(),e=n<0?"-":9999<n?"+":"";return e+("00000"+Math.abs(n)).slice(e?-6:-4)+"-"+u(t.getUTCMonth()+1)+"-"+u(t.getUTCDate())+"T"+u(t.getUTCHours())+":"+u(t.getUTCMinutes())+":"+u(t.getUTCSeconds())+"."+(99<r?r:"0"+u(r))+"Z"}:o},{64:64}],56:[function(t,n,r){"use strict";var e=t(38),i=t(143);n.exports=function(t){if("string"!==t&&"number"!==t&&"default"!==t)throw TypeError("Incorrect hint");return i(e(this),"number"!=t)}},{143:143,38:38}],57:[function(t,n,r){n.exports=function(t){if(null==t)throw TypeError("Can't call method on "+t);return t}},{}],58:[function(t,n,r){arguments[4][20][0].apply(r,arguments)},{20:20,64:64}],59:[function(t,n,r){arguments[4][21][0].apply(r,arguments)},{21:21,70:70,81:81}],60:[function(t,n,r){n.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},{}],61:[function(t,n,r){var c=t(107),a=t(104),f=t(108);n.exports=function(t){var n=c(t),r=a.f;if(r)for(var e,i=r(t),o=f.f,u=0;i.length>u;)o.call(t,e=i[u++])&&n.push(e);return n}},{104:104,107:107,108:108}],62:[function(t,n,r){var y=t(70),g=t(52),d=t(72),x=t(118),m=t(54),b="prototype",S=function(t,n,r){var e,i,o,u,c=t&S.F,a=t&S.G,f=t&S.S,s=t&S.P,l=t&S.B,h=a?y:f?y[n]||(y[n]={}):(y[n]||{})[b],p=a?g:g[n]||(g[n]={}),v=p[b]||(p[b]={});for(e in a&&(r=n),r)o=((i=!c&&h&&void 0!==h[e])?h:r)[e],u=l&&i?m(o,y):s&&"function"==typeof o?m(Function.call,o):o,h&&x(h,e,o,t&S.U),p[e]!=o&&d(p,e,u),s&&v[e]!=o&&(v[e]=o)};y.core=g,S.F=1,S.G=2,S.S=4,S.P=8,S.B=16,S.W=32,S.U=64,S.R=128,n.exports=S},{118:118,52:52,54:54,70:70,72:72}],63:[function(t,n,r){var e=t(152)("match");n.exports=function(n){var r=/./;try{"/./"[n](r)}catch(t){try{return r[e]=!1,!"/./"[n](r)}catch(t){}}return!0}},{152:152}],64:[function(t,n,r){arguments[4][23][0].apply(r,arguments)},{23:23}],65:[function(t,n,r){"use strict";t(248);var s=t(118),l=t(72),h=t(64),p=t(57),v=t(152),y=t(120),g=v("species"),d=!h(function(){var t=/./;return t.exec=function(){var t=[];return t.groups={a:"7"},t},"7"!=="".replace(t,"$<a>")}),x=function(){var t=/(?:)/,n=t.exec;t.exec=function(){return n.apply(this,arguments)};var r="ab".split(t);return 2===r.length&&"a"===r[0]&&"b"===r[1]}();n.exports=function(r,t,n){var e=v(r),o=!h(function(){var t={};return t[e]=function(){return 7},7!=""[r](t)}),i=o?!h(function(){var t=!1,n=/a/;return n.exec=function(){return t=!0,null},"split"===r&&(n.constructor={},n.constructor[g]=function(){return n}),n[e](""),!t}):void 0;if(!o||!i||"replace"===r&&!d||"split"===r&&!x){var u=/./[e],c=n(p,e,""[r],function maybeCallNative(t,n,r,e,i){return n.exec===y?o&&!i?{done:!0,value:u.call(n,r,e)}:{done:!0,value:t.call(r,n,e)}:{done:!1}}),a=c[0],f=c[1];s(String.prototype,r,a),l(RegExp.prototype,e,2==t?function(t,n){return f.call(t,this,n)}:function(t){return f.call(t,this)})}}},{118:118,120:120,152:152,248:248,57:57,64:64,72:72}],66:[function(t,n,r){"use strict";var e=t(38);n.exports=function(){var t=e(this),n="";return t.global&&(n+="g"),t.ignoreCase&&(n+="i"),t.multiline&&(n+="m"),t.unicode&&(n+="u"),t.sticky&&(n+="y"),n}},{38:38}],67:[function(t,n,r){"use strict";var p=t(79),v=t(81),y=t(141),g=t(54),d=t(152)("isConcatSpreadable");n.exports=function flattenIntoArray(t,n,r,e,i,o,u,c){for(var a,f,s=i,l=0,h=!!u&&g(u,c,3);l<e;){if(l in r){if(a=h?h(r[l],l,n):r[l],f=!1,v(a)&&(f=void 0!==(f=a[d])?!!f:p(a)),f&&0<o)s=flattenIntoArray(t,n,a,y(a.length),s,o-1)-1;else{if(9007199254740991<=s)throw TypeError();t[s]=a}s++}l++}return s}},{141:141,152:152,54:54,79:79,81:81}],68:[function(t,n,r){var h=t(54),p=t(83),v=t(78),y=t(38),g=t(141),d=t(153),x={},m={};(r=n.exports=function(t,n,r,e,i){var o,u,c,a,f=i?function(){return t}:d(t),s=h(r,e,n?2:1),l=0;if("function"!=typeof f)throw TypeError(t+" is not iterable!");if(v(f)){for(o=g(t.length);l<o;l++)if((a=n?s(y(u=t[l])[0],u[1]):s(t[l]))===x||a===m)return a}else for(c=f.call(t);!(u=c.next()).done;)if((a=p(c,s,u.value,n))===x||a===m)return a}).BREAK=x,r.RETURN=m},{141:141,153:153,38:38,54:54,78:78,83:83}],69:[function(t,n,r){n.exports=t(126)("native-function-to-string",Function.toString)},{126:126}],70:[function(t,n,r){arguments[4][24][0].apply(r,arguments)},{24:24}],71:[function(t,n,r){arguments[4][25][0].apply(r,arguments)},{25:25}],72:[function(t,n,r){arguments[4][26][0].apply(r,arguments)},{116:116,26:26,58:58,99:99}],73:[function(t,n,r){var e=t(70).document;n.exports=e&&e.documentElement},{70:70}],74:[function(t,n,r){arguments[4][27][0].apply(r,arguments)},{27:27,58:58,59:59,64:64}],75:[function(t,n,r){var o=t(81),u=t(122).set;n.exports=function(t,n,r){var e,i=n.constructor;return i!==r&&"function"==typeof i&&(e=i.prototype)!==r.prototype&&o(e)&&u&&u(t,e),t}},{122:122,81:81}],76:[function(t,n,r){n.exports=function(t,n,r){var e=void 0===r;switch(n.length){case 0:return e?t():t.call(r);case 1:return e?t(n[0]):t.call(r,n[0]);case 2:return e?t(n[0],n[1]):t.call(r,n[0],n[1]);case 3:return e?t(n[0],n[1],n[2]):t.call(r,n[0],n[1],n[2]);case 4:return e?t(n[0],n[1],n[2],n[3]):t.call(r,n[0],n[1],n[2],n[3])}return t.apply(r,n)}},{}],77:[function(t,n,r){var e=t(48);n.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return"String"==e(t)?t.split(""):Object(t)}},{48:48}],78:[function(t,n,r){var e=t(88),i=t(152)("iterator"),o=Array.prototype;n.exports=function(t){return void 0!==t&&(e.Array===t||o[i]===t)}},{152:152,88:88}],79:[function(t,n,r){var e=t(48);n.exports=Array.isArray||function isArray(t){return"Array"==e(t)}},{48:48}],80:[function(t,n,r){var e=t(81),i=Math.floor;n.exports=function isInteger(t){return!e(t)&&isFinite(t)&&i(t)===t}},{81:81}],81:[function(t,n,r){arguments[4][28][0].apply(r,arguments)},{28:28}],82:[function(t,n,r){var e=t(81),i=t(48),o=t(152)("match");n.exports=function(t){var n;return e(t)&&(void 0!==(n=t[o])?!!n:"RegExp"==i(t))}},{152:152,48:48,81:81}],83:[function(t,n,r){var o=t(38);n.exports=function(n,t,r,e){try{return e?t(o(r)[0],r[1]):t(r)}catch(t){var i=n.return;throw void 0!==i&&o(i.call(n)),t}}},{38:38}],84:[function(t,n,r){"use strict";var e=t(98),i=t(116),o=t(124),u={};t(72)(u,t(152)("iterator"),function(){return this}),n.exports=function(t,n,r){t.prototype=e(u,{next:i(1,r)}),o(t,n+" Iterator")}},{116:116,124:124,152:152,72:72,98:98}],85:[function(t,n,r){"use strict";var m=t(89),b=t(62),S=t(118),w=t(72),_=t(88),E=t(84),F=t(124),I=t(105),O=t(152)("iterator"),P=!([].keys&&"next"in[].keys()),A="values",M=function(){return this};n.exports=function(t,n,r,e,i,o,u){E(r,n,e);var c,a,f,s=function(t){if(!P&&t in v)return v[t];switch(t){case"keys":return function keys(){return new r(this,t)};case A:return function values(){return new r(this,t)}}return function entries(){return new r(this,t)}},l=n+" Iterator",h=i==A,p=!1,v=t.prototype,y=v[O]||v["@@iterator"]||i&&v[i],g=y||s(i),d=i?h?s("entries"):g:void 0,x="Array"==n&&v.entries||y;if(x&&(f=I(x.call(new t)))!==Object.prototype&&f.next&&(F(f,l,!0),m||"function"==typeof f[O]||w(f,O,M)),h&&y&&y.name!==A&&(p=!0,g=function values(){return y.call(this)}),m&&!u||!P&&!p&&v[O]||w(v,O,g),_[n]=g,_[l]=M,i)if(c={values:h?g:s(A),keys:o?g:s("keys"),entries:d},u)for(a in c)a in v||S(v,a,c[a]);else b(b.P+b.F*(P||p),n,c);return c}},{105:105,118:118,124:124,152:152,62:62,72:72,84:84,88:88,89:89}],86:[function(t,n,r){var o=t(152)("iterator"),u=!1;try{var e=[7][o]();e.return=function(){u=!0},Array.from(e,function(){throw 2})}catch(t){}n.exports=function(t,n){if(!n&&!u)return!1;var r=!1;try{var e=[7],i=e[o]();i.next=function(){return{done:r=!0}},e[o]=function(){return i},t(e)}catch(t){}return r}},{152:152}],87:[function(t,n,r){n.exports=function(t,n){return{value:n,done:!!t}}},{}],88:[function(t,n,r){n.exports={}},{}],89:[function(t,n,r){n.exports=!1},{}],90:[function(t,n,r){var e=Math.expm1;n.exports=!e||22025.465794806718<e(10)||e(10)<22025.465794806718||-2e-17!=e(-2e-17)?function expm1(t){return 0==(t=+t)?t:-1e-6<t&&t<1e-6?t+t*t/2:Math.exp(t)-1}:e},{}],91:[function(t,n,r){var o=t(93),e=Math.pow,u=e(2,-52),c=e(2,-23),a=e(2,127)*(2-c),f=e(2,-126);n.exports=Math.fround||function fround(t){var n,r,e=Math.abs(t),i=o(t);return e<f?i*(e/f/c+1/u-1/u)*f*c:a<(r=(n=(1+c/u)*e)-(n-e))||r!=r?i*(1/0):i*r}},{93:93}],92:[function(t,n,r){n.exports=Math.log1p||function log1p(t){return-1e-8<(t=+t)&&t<1e-8?t-t*t/2:Math.log(1+t)}},{}],93:[function(t,n,r){n.exports=Math.sign||function sign(t){return 0==(t=+t)||t!=t?t:t<0?-1:1}},{}],94:[function(t,n,r){var e=t(147)("meta"),i=t(81),o=t(71),u=t(99).f,c=0,a=Object.isExtensible||function(){return!0},f=!t(64)(function(){return a(Object.preventExtensions({}))}),s=function(t){u(t,e,{value:{i:"O"+ ++c,w:{}}})},l=n.exports={KEY:e,NEED:!1,fastKey:function(t,n){if(!i(t))return"symbol"==typeof t?t:("string"==typeof t?"S":"P")+t;if(!o(t,e)){if(!a(t))return"F";if(!n)return"E";s(t)}return t[e].i},getWeak:function(t,n){if(!o(t,e)){if(!a(t))return!0;if(!n)return!1;s(t)}return t[e].w},onFreeze:function(t){return f&&l.NEED&&a(t)&&!o(t,e)&&s(t),t}}},{147:147,64:64,71:71,81:81,99:99}],95:[function(t,n,r){var c=t(70),a=t(136).set,f=c.MutationObserver||c.WebKitMutationObserver,s=c.process,l=c.Promise,h="process"==t(48)(s);n.exports=function(){var r,e,i,t=function(){var t,n;for(h&&(t=s.domain)&&t.exit();r;){n=r.fn,r=r.next;try{n()}catch(t){throw r?i():e=void 0,t}}e=void 0,t&&t.enter()};if(h)i=function(){s.nextTick(t)};else if(!f||c.navigator&&c.navigator.standalone)if(l&&l.resolve){var n=l.resolve(void 0);i=function(){n.then(t)}}else i=function(){a.call(c,t)};else{var o=!0,u=document.createTextNode("");new f(t).observe(u,{characterData:!0}),i=function(){u.data=o=!o}}return function(t){var n={fn:t,next:void 0};e&&(e.next=n),r||(r=n,i()),e=n}}},{136:136,48:48,70:70}],96:[function(t,n,r){"use strict";var i=t(33);function PromiseCapability(t){var r,e;this.promise=new t(function(t,n){if(void 0!==r||void 0!==e)throw TypeError("Bad Promise constructor");r=t,e=n}),this.resolve=i(r),this.reject=i(e)}n.exports.f=function(t){return new PromiseCapability(t)}},{33:33}],97:[function(t,n,r){"use strict";var h=t(107),p=t(104),v=t(108),y=t(142),g=t(77),i=Object.assign;n.exports=!i||t(64)(function(){var t={},n={},r=Symbol(),e="abcdefghijklmnopqrst";return t[r]=7,e.split("").forEach(function(t){n[t]=t}),7!=i({},t)[r]||Object.keys(i({},n)).join("")!=e})?function assign(t,n){for(var r=y(t),e=arguments.length,i=1,o=p.f,u=v.f;i<e;)for(var c,a=g(arguments[i++]),f=o?h(a).concat(o(a)):h(a),s=f.length,l=0;l<s;)u.call(a,c=f[l++])&&(r[c]=a[c]);return r}:i},{104:104,107:107,108:108,142:142,64:64,77:77}],98:[function(e,t,n){var i=e(38),o=e(100),u=e(60),c=e(125)("IE_PROTO"),a=function(){},f="prototype",s=function(){var t,n=e(59)("iframe"),r=u.length;for(n.style.display="none",e(73).appendChild(n),n.src="javascript:",(t=n.contentWindow.document).open(),t.write("<script>document.F=Object<\/script>"),t.close(),s=t.F;r--;)delete s[f][u[r]];return s()};t.exports=Object.create||function create(t,n){var r;return null!==t?(a[f]=i(t),r=new a,a[f]=null,r[c]=t):r=s(),void 0===n?r:o(r,n)}},{100:100,125:125,38:38,59:59,60:60,73:73}],99:[function(t,n,r){arguments[4][29][0].apply(r,arguments)},{143:143,29:29,38:38,58:58,74:74}],100:[function(t,n,r){var u=t(99),c=t(38),a=t(107);n.exports=t(58)?Object.defineProperties:function defineProperties(t,n){c(t);for(var r,e=a(n),i=e.length,o=0;o<i;)u.f(t,r=e[o++],n[r]);return t}},{107:107,38:38,58:58,99:99}],101:[function(t,n,r){var e=t(108),i=t(116),o=t(140),u=t(143),c=t(71),a=t(74),f=Object.getOwnPropertyDescriptor;r.f=t(58)?f:function getOwnPropertyDescriptor(t,n){if(t=o(t),n=u(n,!0),a)try{return f(t,n)}catch(t){}if(c(t,n))return i(!e.f.call(t,n),t[n])}},{108:108,116:116,140:140,143:143,58:58,71:71,74:74}],102:[function(t,n,r){var e=t(140),i=t(103).f,o={}.toString,u="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];n.exports.f=function getOwnPropertyNames(t){return u&&"[object Window]"==o.call(t)?function(t){try{return i(t)}catch(t){return u.slice()}}(t):i(e(t))}},{103:103,140:140}],103:[function(t,n,r){var e=t(106),i=t(60).concat("length","prototype");r.f=Object.getOwnPropertyNames||function getOwnPropertyNames(t){return e(t,i)}},{106:106,60:60}],104:[function(t,n,r){r.f=Object.getOwnPropertySymbols},{}],105:[function(t,n,r){var e=t(71),i=t(142),o=t(125)("IE_PROTO"),u=Object.prototype;n.exports=Object.getPrototypeOf||function(t){return t=i(t),e(t,o)?t[o]:"function"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?u:null}},{125:125,142:142,71:71}],106:[function(t,n,r){var u=t(71),c=t(140),a=t(41)(!1),f=t(125)("IE_PROTO");n.exports=function(t,n){var r,e=c(t),i=0,o=[];for(r in e)r!=f&&u(e,r)&&o.push(r);for(;n.length>i;)u(e,r=n[i++])&&(~a(o,r)||o.push(r));return o}},{125:125,140:140,41:41,71:71}],107:[function(t,n,r){var e=t(106),i=t(60);n.exports=Object.keys||function keys(t){return e(t,i)}},{106:106,60:60}],108:[function(t,n,r){r.f={}.propertyIsEnumerable},{}],109:[function(t,n,r){var i=t(62),o=t(52),u=t(64);n.exports=function(t,n){var r=(o.Object||{})[t]||Object[t],e={};e[t]=n(r),i(i.S+i.F*u(function(){r(1)}),"Object",e)}},{52:52,62:62,64:64}],110:[function(t,n,r){var a=t(107),f=t(140),s=t(108).f;n.exports=function(c){return function(t){for(var n,r=f(t),e=a(r),i=e.length,o=0,u=[];o<i;)s.call(r,n=e[o++])&&u.push(c?[n,r[n]]:r[n]);return u}}},{107:107,108:108,140:140}],111:[function(t,n,r){var e=t(103),i=t(104),o=t(38),u=t(70).Reflect;n.exports=u&&u.ownKeys||function ownKeys(t){var n=e.f(o(t)),r=i.f;return r?n.concat(r(t)):n}},{103:103,104:104,38:38,70:70}],112:[function(t,n,r){var e=t(70).parseFloat,i=t(134).trim;n.exports=1/e(t(135)+"-0")!=-1/0?function parseFloat(t){var n=i(String(t),3),r=e(n);return 0===r&&"-"==n.charAt(0)?-0:r}:e},{134:134,135:135,70:70}],113:[function(t,n,r){var e=t(70).parseInt,i=t(134).trim,o=t(135),u=/^[-+]?0[xX]/;n.exports=8!==e(o+"08")||22!==e(o+"0x16")?function parseInt(t,n){var r=i(String(t),3);return e(r,n>>>0||(u.test(r)?16:10))}:e},{134:134,135:135,70:70}],114:[function(t,n,r){n.exports=function(t){try{return{e:!1,v:t()}}catch(t){return{e:!0,v:t}}}},{}],115:[function(t,n,r){var e=t(38),i=t(81),o=t(96);n.exports=function(t,n){if(e(t),i(n)&&n.constructor===t)return n;var r=o.f(t);return(0,r.resolve)(n),r.promise}},{38:38,81:81,96:96}],116:[function(t,n,r){arguments[4][30][0].apply(r,arguments)},{30:30}],117:[function(t,n,r){var i=t(118);n.exports=function(t,n,r){for(var e in n)i(t,e,n[e],r);return t}},{118:118}],118:[function(t,n,r){var o=t(70),u=t(72),c=t(71),a=t(147)("src"),e=t(69),i="toString",f=(""+e).split(i);t(52).inspectSource=function(t){return e.call(t)},(n.exports=function(t,n,r,e){var i="function"==typeof r;i&&(c(r,"name")||u(r,"name",n)),t[n]!==r&&(i&&(c(r,a)||u(r,a,t[n]?""+t[n]:f.join(String(n)))),t===o?t[n]=r:e?t[n]?t[n]=r:u(t,n,r):(delete t[n],u(t,n,r)))})(Function.prototype,i,function toString(){return"function"==typeof this&&this[a]||e.call(this)})},{147:147,52:52,69:69,70:70,71:71,72:72}],119:[function(t,n,r){"use strict";var i=t(47),o=RegExp.prototype.exec;n.exports=function(t,n){var r=t.exec;if("function"==typeof r){var e=r.call(t,n);if("object"!=typeof e)throw new TypeError("RegExp exec method returned something other than an Object or null");return e}if("RegExp"!==i(t))throw new TypeError("RegExp#exec called on incompatible receiver");return o.call(t,n)}},{47:47}],120:[function(t,n,r){"use strict";var e,i,u=t(66),c=RegExp.prototype.exec,a=String.prototype.replace,o=c,f="lastIndex",s=(e=/a/,i=/b*/g,c.call(e,"a"),c.call(i,"a"),0!==e[f]||0!==i[f]),l=void 0!==/()??/.exec("")[1];(s||l)&&(o=function exec(t){var n,r,e,i,o=this;return l&&(r=new RegExp("^"+o.source+"$(?!\\s)",u.call(o))),s&&(n=o[f]),e=c.call(o,t),s&&e&&(o[f]=o.global?e.index+e[0].length:n),l&&e&&1<e.length&&a.call(e[0],r,function(){for(i=1;i<arguments.length-2;i++)void 0===arguments[i]&&(e[i]=void 0)}),e}),n.exports=o},{66:66}],121:[function(t,n,r){n.exports=Object.is||function is(t,n){return t===n?0!==t||1/t==1/n:t!=t&&n!=n}},{}],122:[function(n,t,r){var e=n(81),i=n(38),o=function(t,n){if(i(t),!e(n)&&null!==n)throw TypeError(n+": can't set as prototype!")};t.exports={set:Object.setPrototypeOf||("__proto__"in{}?function(t,r,e){try{(e=n(54)(Function.call,n(101).f(Object.prototype,"__proto__").set,2))(t,[]),r=!(t instanceof Array)}catch(t){r=!0}return function setPrototypeOf(t,n){return o(t,n),r?t.__proto__=n:e(t,n),t}}({},!1):void 0),check:o}},{101:101,38:38,54:54,81:81}],123:[function(t,n,r){"use strict";var e=t(70),i=t(99),o=t(58),u=t(152)("species");n.exports=function(t){var n=e[t];o&&n&&!n[u]&&i.f(n,u,{configurable:!0,get:function(){return this}})}},{152:152,58:58,70:70,99:99}],124:[function(t,n,r){var e=t(99).f,i=t(71),o=t(152)("toStringTag");n.exports=function(t,n,r){t&&!i(t=r?t:t.prototype,o)&&e(t,o,{configurable:!0,value:n})}},{152:152,71:71,99:99}],125:[function(t,n,r){var e=t(126)("keys"),i=t(147);n.exports=function(t){return e[t]||(e[t]=i(t))}},{126:126,147:147}],126:[function(t,n,r){var e=t(52),i=t(70),o="__core-js_shared__",u=i[o]||(i[o]={});(n.exports=function(t,n){return u[t]||(u[t]=void 0!==n?n:{})})("versions",[]).push({version:e.version,mode:t(89)?"pure":"global",copyright:"© 2019 Denis Pushkarev (zloirock.ru)"})},{52:52,70:70,89:89}],127:[function(t,n,r){var i=t(38),o=t(33),u=t(152)("species");n.exports=function(t,n){var r,e=i(t).constructor;return void 0===e||null==(r=i(e)[u])?n:o(r)}},{152:152,33:33,38:38}],128:[function(t,n,r){"use strict";var e=t(64);n.exports=function(t,n){return!!t&&e(function(){n?t.call(null,function(){},1):t.call(null)})}},{64:64}],129:[function(t,n,r){var a=t(139),f=t(57);n.exports=function(c){return function(t,n){var r,e,i=String(f(t)),o=a(n),u=i.length;return o<0||u<=o?c?"":void 0:(r=i.charCodeAt(o))<55296||56319<r||o+1===u||(e=i.charCodeAt(o+1))<56320||57343<e?c?i.charAt(o):r:c?i.slice(o,o+2):e-56320+(r-55296<<10)+65536}}},{139:139,57:57}],130:[function(t,n,r){var e=t(82),i=t(57);n.exports=function(t,n,r){if(e(n))throw TypeError("String#"+r+" doesn't accept regex!");return String(i(t))}},{57:57,82:82}],131:[function(t,n,r){var e=t(62),i=t(64),u=t(57),c=/"/g,o=function(t,n,r,e){var i=String(u(t)),o="<"+n;return""!==r&&(o+=" "+r+'="'+String(e).replace(c,"&quot;")+'"'),o+">"+i+"</"+n+">"};n.exports=function(n,t){var r={};r[n]=t(o),e(e.P+e.F*i(function(){var t=""[n]('"');return t!==t.toLowerCase()||3<t.split('"').length}),"String",r)}},{57:57,62:62,64:64}],132:[function(t,n,r){var s=t(141),l=t(133),h=t(57);n.exports=function(t,n,r,e){var i=String(h(t)),o=i.length,u=void 0===r?" ":String(r),c=s(n);if(c<=o||""==u)return i;var a=c-o,f=l.call(u,Math.ceil(a/u.length));return f.length>a&&(f=f.slice(0,a)),e?f+i:i+f}},{133:133,141:141,57:57}],133:[function(t,n,r){"use strict";var i=t(139),o=t(57);n.exports=function repeat(t){var n=String(o(this)),r="",e=i(t);if(e<0||e==1/0)throw RangeError("Count can't be negative");for(;0<e;(e>>>=1)&&(n+=n))1&e&&(r+=n);return r}},{139:139,57:57}],134:[function(t,n,r){var u=t(62),e=t(57),c=t(64),a=t(135),i="["+a+"]",o=RegExp("^"+i+i+"*"),f=RegExp(i+i+"*$"),s=function(t,n,r){var e={},i=c(function(){return!!a[t]()||"​…"!="​…"[t]()}),o=e[t]=i?n(l):a[t];r&&(e[r]=o),u(u.P+u.F*i,"String",e)},l=s.trim=function(t,n){return t=String(e(t)),1&n&&(t=t.replace(o,"")),2&n&&(t=t.replace(f,"")),t};n.exports=s},{135:135,57:57,62:62,64:64}],135:[function(t,n,r){n.exports="\t\n\v\f\r  ᠎              \u2028\u2029\ufeff"},{}],136:[function(t,n,r){var e,i,o,u=t(54),c=t(76),a=t(73),f=t(59),s=t(70),l=s.process,h=s.setImmediate,p=s.clearImmediate,v=s.MessageChannel,y=s.Dispatch,g=0,d={},x="onreadystatechange",m=function(){var t=+this;if(d.hasOwnProperty(t)){var n=d[t];delete d[t],n()}},b=function(t){m.call(t.data)};h&&p||(h=function setImmediate(t){for(var n=[],r=1;arguments.length>r;)n.push(arguments[r++]);return d[++g]=function(){c("function"==typeof t?t:Function(t),n)},e(g),g},p=function clearImmediate(t){delete d[t]},"process"==t(48)(l)?e=function(t){l.nextTick(u(m,t,1))}:y&&y.now?e=function(t){y.now(u(m,t,1))}:v?(o=(i=new v).port2,i.port1.onmessage=b,e=u(o.postMessage,o,1)):s.addEventListener&&"function"==typeof postMessage&&!s.importScripts?(e=function(t){s.postMessage(t+"","*")},s.addEventListener("message",b,!1)):e=x in f("script")?function(t){a.appendChild(f("script"))[x]=function(){a.removeChild(this),m.call(t)}}:function(t){setTimeout(u(m,t,1),0)}),n.exports={set:h,clear:p}},{48:48,54:54,59:59,70:70,73:73,76:76}],137:[function(t,n,r){var e=t(139),i=Math.max,o=Math.min;n.exports=function(t,n){return(t=e(t))<0?i(t+n,0):o(t,n)}},{139:139}],138:[function(t,n,r){var e=t(139),i=t(141);n.exports=function(t){if(void 0===t)return 0;var n=e(t),r=i(n);if(n!==r)throw RangeError("Wrong length!");return r}},{139:139,141:141}],139:[function(t,n,r){var e=Math.ceil,i=Math.floor;n.exports=function(t){return isNaN(t=+t)?0:(0<t?i:e)(t)}},{}],140:[function(t,n,r){var e=t(77),i=t(57);n.exports=function(t){return e(i(t))}},{57:57,77:77}],141:[function(t,n,r){var e=t(139),i=Math.min;n.exports=function(t){return 0<t?i(e(t),9007199254740991):0}},{139:139}],142:[function(t,n,r){var e=t(57);n.exports=function(t){return Object(e(t))}},{57:57}],143:[function(t,n,r){arguments[4][31][0].apply(r,arguments)},{31:31,81:81}],144:[function(t,n,r){"use strict";if(t(58)){var d=t(89),x=t(70),m=t(64),b=t(62),S=t(146),e=t(145),h=t(54),w=t(37),i=t(116),_=t(72),o=t(117),u=t(139),E=t(141),F=t(138),c=t(137),a=t(143),f=t(71),I=t(47),O=t(81),p=t(142),v=t(78),P=t(98),A=t(105),M=t(103).f,y=t(153),s=t(147),l=t(152),g=t(42),k=t(41),N=t(127),j=t(164),T=t(88),R=t(86),L=t(123),C=t(40),G=t(39),D=t(99),U=t(101),W=D.f,V=U.f,B=x.RangeError,z=x.TypeError,q=x.Uint8Array,Y="ArrayBuffer",K="Shared"+Y,$="BYTES_PER_ELEMENT",J="prototype",X=Array[J],H=e.ArrayBuffer,Z=e.DataView,Q=g(0),tt=g(2),nt=g(3),rt=g(4),et=g(5),it=g(6),ot=k(!0),ut=k(!1),ct=j.values,at=j.keys,ft=j.entries,st=X.lastIndexOf,lt=X.reduce,ht=X.reduceRight,pt=X.join,vt=X.sort,yt=X.slice,gt=X.toString,dt=X.toLocaleString,xt=l("iterator"),mt=l("toStringTag"),bt=s("typed_constructor"),St=s("def_constructor"),wt=S.CONSTR,_t=S.TYPED,Et=S.VIEW,Ft="Wrong length!",It=g(1,function(t,n){return kt(N(t,t[St]),n)}),Ot=m(function(){return 1===new q(new Uint16Array([1]).buffer)[0]}),Pt=!!q&&!!q[J].set&&m(function(){new q(1).set({})}),At=function(t,n){var r=u(t);if(r<0||r%n)throw B("Wrong offset!");return r},Mt=function(t){if(O(t)&&_t in t)return t;throw z(t+" is not a typed array!")},kt=function(t,n){if(!(O(t)&&bt in t))throw z("It is not a typed array constructor!");return new t(n)},Nt=function(t,n){return jt(N(t,t[St]),n)},jt=function(t,n){for(var r=0,e=n.length,i=kt(t,e);r<e;)i[r]=n[r++];return i},Tt=function(t,n,r){W(t,n,{get:function(){return this._d[r]}})},Rt=function from(t){var n,r,e,i,o,u,c=p(t),a=arguments.length,f=1<a?arguments[1]:void 0,s=void 0!==f,l=y(c);if(null!=l&&!v(l)){for(u=l.call(c),e=[],n=0;!(o=u.next()).done;n++)e.push(o.value);c=e}for(s&&2<a&&(f=h(f,arguments[2],2)),n=0,r=E(c.length),i=kt(this,r);n<r;n++)i[n]=s?f(c[n],n):c[n];return i},Lt=function of(){for(var t=0,n=arguments.length,r=kt(this,n);t<n;)r[t]=arguments[t++];return r},Ct=!!q&&m(function(){dt.call(new q(1))}),Gt=function toLocaleString(){return dt.apply(Ct?yt.call(Mt(this)):Mt(this),arguments)},Dt={copyWithin:function copyWithin(t,n){return G.call(Mt(this),t,n,2<arguments.length?arguments[2]:void 0)},every:function every(t){return rt(Mt(this),t,1<arguments.length?arguments[1]:void 0)},fill:function fill(t){return C.apply(Mt(this),arguments)},filter:function filter(t){return Nt(this,tt(Mt(this),t,1<arguments.length?arguments[1]:void 0))},find:function find(t){return et(Mt(this),t,1<arguments.length?arguments[1]:void 0)},findIndex:function findIndex(t){return it(Mt(this),t,1<arguments.length?arguments[1]:void 0)},forEach:function forEach(t){Q(Mt(this),t,1<arguments.length?arguments[1]:void 0)},indexOf:function indexOf(t){return ut(Mt(this),t,1<arguments.length?arguments[1]:void 0)},includes:function includes(t){return ot(Mt(this),t,1<arguments.length?arguments[1]:void 0)},join:function join(t){return pt.apply(Mt(this),arguments)},lastIndexOf:function lastIndexOf(t){return st.apply(Mt(this),arguments)},map:function map(t){return It(Mt(this),t,1<arguments.length?arguments[1]:void 0)},reduce:function reduce(t){return lt.apply(Mt(this),arguments)},reduceRight:function reduceRight(t){return ht.apply(Mt(this),arguments)},reverse:function reverse(){for(var t,n=this,r=Mt(n).length,e=Math.floor(r/2),i=0;i<e;)t=n[i],n[i++]=n[--r],n[r]=t;return n},some:function some(t){return nt(Mt(this),t,1<arguments.length?arguments[1]:void 0)},sort:function sort(t){return vt.call(Mt(this),t)},subarray:function subarray(t,n){var r=Mt(this),e=r.length,i=c(t,e);return new(N(r,r[St]))(r.buffer,r.byteOffset+i*r.BYTES_PER_ELEMENT,E((void 0===n?e:c(n,e))-i))}},Ut=function slice(t,n){return Nt(this,yt.call(Mt(this),t,n))},Wt=function set(t){Mt(this);var n=At(arguments[1],1),r=this.length,e=p(t),i=E(e.length),o=0;if(r<i+n)throw B(Ft);for(;o<i;)this[n+o]=e[o++]},Vt={entries:function entries(){return ft.call(Mt(this))},keys:function keys(){return at.call(Mt(this))},values:function values(){return ct.call(Mt(this))}},Bt=function(t,n){return O(t)&&t[_t]&&"symbol"!=typeof n&&n in t&&String(+n)==String(n)},zt=function getOwnPropertyDescriptor(t,n){return Bt(t,n=a(n,!0))?i(2,t[n]):V(t,n)},qt=function defineProperty(t,n,r){return!(Bt(t,n=a(n,!0))&&O(r)&&f(r,"value"))||f(r,"get")||f(r,"set")||r.configurable||f(r,"writable")&&!r.writable||f(r,"enumerable")&&!r.enumerable?W(t,n,r):(t[n]=r.value,t)};wt||(U.f=zt,D.f=qt),b(b.S+b.F*!wt,"Object",{getOwnPropertyDescriptor:zt,defineProperty:qt}),m(function(){gt.call({})})&&(gt=dt=function toString(){return pt.call(this)});var Yt=o({},Dt);o(Yt,Vt),_(Yt,xt,Vt.values),o(Yt,{slice:Ut,set:Wt,constructor:function(){},toString:gt,toLocaleString:Gt}),Tt(Yt,"buffer","b"),Tt(Yt,"byteOffset","o"),Tt(Yt,"byteLength","l"),Tt(Yt,"length","e"),W(Yt,mt,{get:function(){return this[_t]}}),n.exports=function(t,l,n,o){var h=t+((o=!!o)?"Clamped":"")+"Array",r="get"+t,u="set"+t,p=x[h],c=p||{},e=p&&A(p),i=!p||!S.ABV,a={},f=p&&p[J],v=function(t,i){W(t,i,{get:function(){return t=i,(n=this._d).v[r](t*l+n.o,Ot);var t,n},set:function(t){return n=i,r=t,e=this._d,o&&(r=(r=Math.round(r))<0?0:255<r?255:255&r),void e.v[u](n*l+e.o,r,Ot);var n,r,e},enumerable:!0})};i?(p=n(function(t,n,r,e){w(t,p,h,"_d");var i,o,u,c,a=0,f=0;if(O(n)){if(!(n instanceof H||(c=I(n))==Y||c==K))return _t in n?jt(p,n):Rt.call(p,n);i=n,f=At(r,l);var s=n.byteLength;if(void 0===e){if(s%l)throw B(Ft);if((o=s-f)<0)throw B(Ft)}else if(s<(o=E(e)*l)+f)throw B(Ft);u=o/l}else u=F(n),i=new H(o=u*l);for(_(t,"_d",{b:i,o:f,l:o,e:u,v:new Z(i)});a<u;)v(t,a++)}),f=p[J]=P(Yt),_(f,"constructor",p)):m(function(){p(1)})&&m(function(){new p(-1)})&&R(function(t){new p,new p(null),new p(1.5),new p(t)},!0)||(p=n(function(t,n,r,e){var i;return w(t,p,h),O(n)?n instanceof H||(i=I(n))==Y||i==K?void 0!==e?new c(n,At(r,l),e):void 0!==r?new c(n,At(r,l)):new c(n):_t in n?jt(p,n):Rt.call(p,n):new c(F(n))}),Q(e!==Function.prototype?M(c).concat(M(e)):M(c),function(t){t in p||_(p,t,c[t])}),p[J]=f,d||(f.constructor=p));var s=f[xt],y=!!s&&("values"==s.name||null==s.name),g=Vt.values;_(p,bt,!0),_(f,_t,h),_(f,Et,!0),_(f,St,p),(o?new p(1)[mt]==h:mt in f)||W(f,mt,{get:function(){return h}}),a[h]=p,b(b.G+b.W+b.F*(p!=c),a),b(b.S,h,{BYTES_PER_ELEMENT:l}),b(b.S+b.F*m(function(){c.of.call(p,1)}),h,{from:Rt,of:Lt}),$ in f||_(f,$,l),b(b.P,h,Dt),L(h),b(b.P+b.F*Pt,h,{set:Wt}),b(b.P+b.F*!y,h,Vt),d||f.toString==gt||(f.toString=gt),b(b.P+b.F*m(function(){new p(1).slice()}),h,{slice:Ut}),b(b.P+b.F*(m(function(){return[1,2].toLocaleString()!=new p([1,2]).toLocaleString()})||!m(function(){f.toLocaleString.call([1,2])})),h,{toLocaleString:Gt}),T[h]=y?s:g,d||y||_(f,xt,g)}}else n.exports=function(){}},{101:101,103:103,105:105,116:116,117:117,123:123,127:127,137:137,138:138,139:139,141:141,142:142,143:143,145:145,146:146,147:147,152:152,153:153,164:164,37:37,39:39,40:40,41:41,42:42,47:47,54:54,58:58,62:62,64:64,70:70,71:71,72:72,78:78,81:81,86:86,88:88,89:89,98:98,99:99}],145:[function(t,n,r){"use strict";var e=t(70),i=t(58),o=t(89),u=t(146),c=t(72),a=t(117),f=t(64),s=t(37),l=t(139),h=t(141),p=t(138),v=t(103).f,y=t(99).f,g=t(40),d=t(124),x="ArrayBuffer",m="DataView",b="prototype",S="Wrong index!",w=e[x],_=e[m],E=e.Math,F=e.RangeError,I=e.Infinity,O=w,P=E.abs,A=E.pow,M=E.floor,k=E.log,N=E.LN2,j="byteLength",T="byteOffset",R=i?"_b":"buffer",L=i?"_l":j,C=i?"_o":T;function packIEEE754(t,n,r){var e,i,o,u=new Array(r),c=8*r-n-1,a=(1<<c)-1,f=a>>1,s=23===n?A(2,-24)-A(2,-77):0,l=0,h=t<0||0===t&&1/t<0?1:0;for((t=P(t))!=t||t===I?(i=t!=t?1:0,e=a):(e=M(k(t)/N),t*(o=A(2,-e))<1&&(e--,o*=2),2<=(t+=1<=e+f?s/o:s*A(2,1-f))*o&&(e++,o/=2),a<=e+f?(i=0,e=a):1<=e+f?(i=(t*o-1)*A(2,n),e+=f):(i=t*A(2,f-1)*A(2,n),e=0));8<=n;u[l++]=255&i,i/=256,n-=8);for(e=e<<n|i,c+=n;0<c;u[l++]=255&e,e/=256,c-=8);return u[--l]|=128*h,u}function unpackIEEE754(t,n,r){var e,i=8*r-n-1,o=(1<<i)-1,u=o>>1,c=i-7,a=r-1,f=t[a--],s=127&f;for(f>>=7;0<c;s=256*s+t[a],a--,c-=8);for(e=s&(1<<-c)-1,s>>=-c,c+=n;0<c;e=256*e+t[a],a--,c-=8);if(0===s)s=1-u;else{if(s===o)return e?NaN:f?-I:I;e+=A(2,n),s-=u}return(f?-1:1)*e*A(2,s-n)}function unpackI32(t){return t[3]<<24|t[2]<<16|t[1]<<8|t[0]}function packI8(t){return[255&t]}function packI16(t){return[255&t,t>>8&255]}function packI32(t){return[255&t,t>>8&255,t>>16&255,t>>24&255]}function packF64(t){return packIEEE754(t,52,8)}function packF32(t){return packIEEE754(t,23,4)}function addGetter(t,n,r){y(t[b],n,{get:function(){return this[r]}})}function get(t,n,r,e){var i=p(+r);if(i+n>t[L])throw F(S);var o=t[R]._b,u=i+t[C],c=o.slice(u,u+n);return e?c:c.reverse()}function set(t,n,r,e,i,o){var u=p(+r);if(u+n>t[L])throw F(S);for(var c=t[R]._b,a=u+t[C],f=e(+i),s=0;s<n;s++)c[a+s]=f[o?s:n-s-1]}if(u.ABV){if(!f(function(){w(1)})||!f(function(){new w(-1)})||f(function(){return new w,new w(1.5),new w(NaN),w.name!=x})){for(var G,D=(w=function ArrayBuffer(t){return s(this,w),new O(p(t))})[b]=O[b],U=v(O),W=0;U.length>W;)(G=U[W++])in w||c(w,G,O[G]);o||(D.constructor=w)}var V=new _(new w(2)),B=_[b].setInt8;V.setInt8(0,2147483648),V.setInt8(1,2147483649),!V.getInt8(0)&&V.getInt8(1)||a(_[b],{setInt8:function setInt8(t,n){B.call(this,t,n<<24>>24)},setUint8:function setUint8(t,n){B.call(this,t,n<<24>>24)}},!0)}else w=function ArrayBuffer(t){s(this,w,x);var n=p(t);this._b=g.call(new Array(n),0),this[L]=n},_=function DataView(t,n,r){s(this,_,m),s(t,w,m);var e=t[L],i=l(n);if(i<0||e<i)throw F("Wrong offset!");if(e<i+(r=void 0===r?e-i:h(r)))throw F("Wrong length!");this[R]=t,this[C]=i,this[L]=r},i&&(addGetter(w,j,"_l"),addGetter(_,"buffer","_b"),addGetter(_,j,"_l"),addGetter(_,T,"_o")),a(_[b],{getInt8:function getInt8(t){return get(this,1,t)[0]<<24>>24},getUint8:function getUint8(t){return get(this,1,t)[0]},getInt16:function getInt16(t){var n=get(this,2,t,arguments[1]);return(n[1]<<8|n[0])<<16>>16},getUint16:function getUint16(t){var n=get(this,2,t,arguments[1]);return n[1]<<8|n[0]},getInt32:function getInt32(t){return unpackI32(get(this,4,t,arguments[1]))},getUint32:function getUint32(t){return unpackI32(get(this,4,t,arguments[1]))>>>0},getFloat32:function getFloat32(t){return unpackIEEE754(get(this,4,t,arguments[1]),23,4)},getFloat64:function getFloat64(t){return unpackIEEE754(get(this,8,t,arguments[1]),52,8)},setInt8:function setInt8(t,n){set(this,1,t,packI8,n)},setUint8:function setUint8(t,n){set(this,1,t,packI8,n)},setInt16:function setInt16(t,n){set(this,2,t,packI16,n,arguments[2])},setUint16:function setUint16(t,n){set(this,2,t,packI16,n,arguments[2])},setInt32:function setInt32(t,n){set(this,4,t,packI32,n,arguments[2])},setUint32:function setUint32(t,n){set(this,4,t,packI32,n,arguments[2])},setFloat32:function setFloat32(t,n){set(this,4,t,packF32,n,arguments[2])},setFloat64:function setFloat64(t,n){set(this,8,t,packF64,n,arguments[2])}});d(w,x),d(_,m),c(_[b],u.VIEW,!0),r[x]=w,r[m]=_},{103:103,117:117,124:124,138:138,139:139,141:141,146:146,37:37,40:40,58:58,64:64,70:70,72:72,89:89,99:99}],146:[function(t,n,r){for(var e,i=t(70),o=t(72),u=t(147),c=u("typed_array"),a=u("view"),f=!(!i.ArrayBuffer||!i.DataView),s=f,l=0,h="Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array".split(",");l<9;)(e=i[h[l++]])?(o(e.prototype,c,!0),o(e.prototype,a,!0)):s=!1;n.exports={ABV:f,CONSTR:s,TYPED:c,VIEW:a}},{147:147,70:70,72:72}],147:[function(t,n,r){var e=0,i=Math.random();n.exports=function(t){return"Symbol(".concat(void 0===t?"":t,")_",(++e+i).toString(36))}},{}],148:[function(t,n,r){var e=t(70).navigator;n.exports=e&&e.userAgent||""},{70:70}],149:[function(t,n,r){var e=t(81);n.exports=function(t,n){if(!e(t)||t._t!==n)throw TypeError("Incompatible receiver, "+n+" required!");return t}},{81:81}],150:[function(t,n,r){var e=t(70),i=t(52),o=t(89),u=t(151),c=t(99).f;n.exports=function(t){var n=i.Symbol||(i.Symbol=o?{}:e.Symbol||{});"_"==t.charAt(0)||t in n||c(n,t,{value:u.f(t)})}},{151:151,52:52,70:70,89:89,99:99}],151:[function(t,n,r){r.f=t(152)},{152:152}],152:[function(t,n,r){var e=t(126)("wks"),i=t(147),o=t(70).Symbol,u="function"==typeof o;(n.exports=function(t){return e[t]||(e[t]=u&&o[t]||(u?o:i)("Symbol."+t))}).store=e},{126:126,147:147,70:70}],153:[function(t,n,r){var e=t(47),i=t(152)("iterator"),o=t(88);n.exports=t(52).getIteratorMethod=function(t){if(null!=t)return t[i]||t["@@iterator"]||o[e(t)]}},{152:152,47:47,52:52,88:88}],154:[function(t,n,r){var e=t(62);e(e.P,"Array",{copyWithin:t(39)}),t(35)("copyWithin")},{35:35,39:39,62:62}],155:[function(t,n,r){"use strict";var e=t(62),i=t(42)(4);e(e.P+e.F*!t(128)([].every,!0),"Array",{every:function every(t){return i(this,t,arguments[1])}})},{128:128,42:42,62:62}],156:[function(t,n,r){var e=t(62);e(e.P,"Array",{fill:t(40)}),t(35)("fill")},{35:35,40:40,62:62}],157:[function(t,n,r){"use strict";var e=t(62),i=t(42)(2);e(e.P+e.F*!t(128)([].filter,!0),"Array",{filter:function filter(t){return i(this,t,arguments[1])}})},{128:128,42:42,62:62}],158:[function(t,n,r){"use strict";var e=t(62),i=t(42)(6),o="findIndex",u=!0;o in[]&&Array(1)[o](function(){u=!1}),e(e.P+e.F*u,"Array",{findIndex:function findIndex(t){return i(this,t,1<arguments.length?arguments[1]:void 0)}}),t(35)(o)},{35:35,42:42,62:62}],159:[function(t,n,r){"use strict";var e=t(62),i=t(42)(5),o="find",u=!0;o in[]&&Array(1)[o](function(){u=!1}),e(e.P+e.F*u,"Array",{find:function find(t){return i(this,t,1<arguments.length?arguments[1]:void 0)}}),t(35)(o)},{35:35,42:42,62:62}],160:[function(t,n,r){"use strict";var e=t(62),i=t(42)(0),o=t(128)([].forEach,!0);e(e.P+e.F*!o,"Array",{forEach:function forEach(t){return i(this,t,arguments[1])}})},{128:128,42:42,62:62}],161:[function(t,n,r){"use strict";var h=t(54),e=t(62),p=t(142),v=t(83),y=t(78),g=t(141),d=t(53),x=t(153);e(e.S+e.F*!t(86)(function(t){Array.from(t)}),"Array",{from:function from(t){var n,r,e,i,o=p(t),u="function"==typeof this?this:Array,c=arguments.length,a=1<c?arguments[1]:void 0,f=void 0!==a,s=0,l=x(o);if(f&&(a=h(a,2<c?arguments[2]:void 0,2)),null==l||u==Array&&y(l))for(r=new u(n=g(o.length));s<n;s++)d(r,s,f?a(o[s],s):o[s]);else for(i=l.call(o),r=new u;!(e=i.next()).done;s++)d(r,s,f?v(i,a,[e.value,s],!0):e.value);return r.length=s,r}})},{141:141,142:142,153:153,53:53,54:54,62:62,78:78,83:83,86:86}],162:[function(t,n,r){"use strict";var e=t(62),i=t(41)(!1),o=[].indexOf,u=!!o&&1/[1].indexOf(1,-0)<0;e(e.P+e.F*(u||!t(128)(o)),"Array",{indexOf:function indexOf(t){return u?o.apply(this,arguments)||0:i(this,t,arguments[1])}})},{128:128,41:41,62:62}],163:[function(t,n,r){var e=t(62);e(e.S,"Array",{isArray:t(79)})},{62:62,79:79}],164:[function(t,n,r){"use strict";var e=t(35),i=t(87),o=t(88),u=t(140);n.exports=t(85)(Array,"Array",function(t,n){this._t=u(t),this._i=0,this._k=n},function(){var t=this._t,n=this._k,r=this._i++;return!t||r>=t.length?(this._t=void 0,i(1)):i(0,"keys"==n?r:"values"==n?t[r]:[r,t[r]])},"values"),o.Arguments=o.Array,e("keys"),e("values"),e("entries")},{140:140,35:35,85:85,87:87,88:88}],165:[function(t,n,r){"use strict";var e=t(62),i=t(140),o=[].join;e(e.P+e.F*(t(77)!=Object||!t(128)(o)),"Array",{join:function join(t){return o.call(i(this),void 0===t?",":t)}})},{128:128,140:140,62:62,77:77}],166:[function(t,n,r){"use strict";var e=t(62),i=t(140),o=t(139),u=t(141),c=[].lastIndexOf,a=!!c&&1/[1].lastIndexOf(1,-0)<0;e(e.P+e.F*(a||!t(128)(c)),"Array",{lastIndexOf:function lastIndexOf(t){if(a)return c.apply(this,arguments)||0;var n=i(this),r=u(n.length),e=r-1;for(1<arguments.length&&(e=Math.min(e,o(arguments[1]))),e<0&&(e=r+e);0<=e;e--)if(e in n&&n[e]===t)return e||0;return-1}})},{128:128,139:139,140:140,141:141,62:62}],167:[function(t,n,r){"use strict";var e=t(62),i=t(42)(1);e(e.P+e.F*!t(128)([].map,!0),"Array",{map:function map(t){return i(this,t,arguments[1])}})},{128:128,42:42,62:62}],168:[function(t,n,r){"use strict";var e=t(62),i=t(53);e(e.S+e.F*t(64)(function(){function F(){}return!(Array.of.call(F)instanceof F)}),"Array",{of:function of(){for(var t=0,n=arguments.length,r=new("function"==typeof this?this:Array)(n);t<n;)i(r,t,arguments[t++]);return r.length=n,r}})},{53:53,62:62,64:64}],169:[function(t,n,r){"use strict";var e=t(62),i=t(43);e(e.P+e.F*!t(128)([].reduceRight,!0),"Array",{reduceRight:function reduceRight(t){return i(this,t,arguments.length,arguments[1],!0)}})},{128:128,43:43,62:62}],170:[function(t,n,r){"use strict";var e=t(62),i=t(43);e(e.P+e.F*!t(128)([].reduce,!0),"Array",{reduce:function reduce(t){return i(this,t,arguments.length,arguments[1],!1)}})},{128:128,43:43,62:62}],171:[function(t,n,r){"use strict";var e=t(62),i=t(73),f=t(48),s=t(137),l=t(141),h=[].slice;e(e.P+e.F*t(64)(function(){i&&h.call(i)}),"Array",{slice:function slice(t,n){var r=l(this.length),e=f(this);if(n=void 0===n?r:n,"Array"==e)return h.call(this,t,n);for(var i=s(t,r),o=s(n,r),u=l(o-i),c=new Array(u),a=0;a<u;a++)c[a]="String"==e?this.charAt(i+a):this[i+a];return c}})},{137:137,141:141,48:48,62:62,64:64,73:73}],172:[function(t,n,r){"use strict";var e=t(62),i=t(42)(3);e(e.P+e.F*!t(128)([].some,!0),"Array",{some:function some(t){return i(this,t,arguments[1])}})},{128:128,42:42,62:62}],173:[function(t,n,r){"use strict";var e=t(62),i=t(33),o=t(142),u=t(64),c=[].sort,a=[1,2,3];e(e.P+e.F*(u(function(){a.sort(void 0)})||!u(function(){a.sort(null)})||!t(128)(c)),"Array",{sort:function sort(t){return void 0===t?c.call(o(this)):c.call(o(this),i(t))}})},{128:128,142:142,33:33,62:62,64:64}],174:[function(t,n,r){t(123)("Array")},{123:123}],175:[function(t,n,r){var e=t(62);e(e.S,"Date",{now:function(){return(new Date).getTime()}})},{62:62}],176:[function(t,n,r){var e=t(62),i=t(55);e(e.P+e.F*(Date.prototype.toISOString!==i),"Date",{toISOString:i})},{55:55,62:62}],177:[function(t,n,r){"use strict";var e=t(62),i=t(142),o=t(143);e(e.P+e.F*t(64)(function(){return null!==new Date(NaN).toJSON()||1!==Date.prototype.toJSON.call({toISOString:function(){return 1}})}),"Date",{toJSON:function toJSON(t){var n=i(this),r=o(n);return"number"!=typeof r||isFinite(r)?n.toISOString():null}})},{142:142,143:143,62:62,64:64}],178:[function(t,n,r){var e=t(152)("toPrimitive"),i=Date.prototype;e in i||t(72)(i,e,t(56))},{152:152,56:56,72:72}],179:[function(t,n,r){var e=Date.prototype,i="Invalid Date",o="toString",u=e[o],c=e.getTime;new Date(NaN)+""!=i&&t(118)(e,o,function toString(){var t=c.call(this);return t==t?u.call(this):i})},{118:118}],180:[function(t,n,r){var e=t(62);e(e.P,"Function",{bind:t(46)})},{46:46,62:62}],181:[function(t,n,r){"use strict";var e=t(81),i=t(105),o=t(152)("hasInstance"),u=Function.prototype;o in u||t(99).f(u,o,{value:function(t){if("function"!=typeof this||!e(t))return!1;if(!e(this.prototype))return t instanceof this;for(;t=i(t);)if(this.prototype===t)return!0;return!1}})},{105:105,152:152,81:81,99:99}],182:[function(t,n,r){var e=t(99).f,i=Function.prototype,o=/^\s*function ([^ (]*)/;"name"in i||t(58)&&e(i,"name",{configurable:!0,get:function(){try{return(""+this).match(o)[1]}catch(t){return""}}})},{58:58,99:99}],183:[function(t,n,r){"use strict";var e=t(49),i=t(149);n.exports=t(51)("Map",function(t){return function Map(){return t(this,0<arguments.length?arguments[0]:void 0)}},{get:function get(t){var n=e.getEntry(i(this,"Map"),t);return n&&n.v},set:function set(t,n){return e.def(i(this,"Map"),0===t?0:t,n)}},e,!0)},{149:149,49:49,51:51}],184:[function(t,n,r){var e=t(62),i=t(92),o=Math.sqrt,u=Math.acosh;e(e.S+e.F*!(u&&710==Math.floor(u(Number.MAX_VALUE))&&u(1/0)==1/0),"Math",{acosh:function acosh(t){return(t=+t)<1?NaN:94906265.62425156<t?Math.log(t)+Math.LN2:i(t-1+o(t-1)*o(t+1))}})},{62:62,92:92}],185:[function(t,n,r){var e=t(62),i=Math.asinh;e(e.S+e.F*!(i&&0<1/i(0)),"Math",{asinh:function asinh(t){return isFinite(t=+t)&&0!=t?t<0?-asinh(-t):Math.log(t+Math.sqrt(t*t+1)):t}})},{62:62}],186:[function(t,n,r){var e=t(62),i=Math.atanh;e(e.S+e.F*!(i&&1/i(-0)<0),"Math",{atanh:function atanh(t){return 0==(t=+t)?t:Math.log((1+t)/(1-t))/2}})},{62:62}],187:[function(t,n,r){var e=t(62),i=t(93);e(e.S,"Math",{cbrt:function cbrt(t){return i(t=+t)*Math.pow(Math.abs(t),1/3)}})},{62:62,93:93}],188:[function(t,n,r){var e=t(62);e(e.S,"Math",{clz32:function clz32(t){return(t>>>=0)?31-Math.floor(Math.log(t+.5)*Math.LOG2E):32}})},{62:62}],189:[function(t,n,r){var e=t(62),i=Math.exp;e(e.S,"Math",{cosh:function cosh(t){return(i(t=+t)+i(-t))/2}})},{62:62}],190:[function(t,n,r){var e=t(62),i=t(90);e(e.S+e.F*(i!=Math.expm1),"Math",{expm1:i})},{62:62,90:90}],191:[function(t,n,r){var e=t(62);e(e.S,"Math",{fround:t(91)})},{62:62,91:91}],192:[function(t,n,r){var e=t(62),a=Math.abs;e(e.S,"Math",{hypot:function hypot(t,n){for(var r,e,i=0,o=0,u=arguments.length,c=0;o<u;)c<(r=a(arguments[o++]))?(i=i*(e=c/r)*e+1,c=r):i+=0<r?(e=r/c)*e:r;return c===1/0?1/0:c*Math.sqrt(i)}})},{62:62}],193:[function(t,n,r){var e=t(62),i=Math.imul;e(e.S+e.F*t(64)(function(){return-5!=i(4294967295,5)||2!=i.length}),"Math",{imul:function imul(t,n){var r=65535,e=+t,i=+n,o=r&e,u=r&i;return 0|o*u+((r&e>>>16)*u+o*(r&i>>>16)<<16>>>0)}})},{62:62,64:64}],194:[function(t,n,r){var e=t(62);e(e.S,"Math",{log10:function log10(t){return Math.log(t)*Math.LOG10E}})},{62:62}],195:[function(t,n,r){var e=t(62);e(e.S,"Math",{log1p:t(92)})},{62:62,92:92}],196:[function(t,n,r){var e=t(62);e(e.S,"Math",{log2:function log2(t){return Math.log(t)/Math.LN2}})},{62:62}],197:[function(t,n,r){var e=t(62);e(e.S,"Math",{sign:t(93)})},{62:62,93:93}],198:[function(t,n,r){var e=t(62),i=t(90),o=Math.exp;e(e.S+e.F*t(64)(function(){return-2e-17!=!Math.sinh(-2e-17)}),"Math",{sinh:function sinh(t){return Math.abs(t=+t)<1?(i(t)-i(-t))/2:(o(t-1)-o(-t-1))*(Math.E/2)}})},{62:62,64:64,90:90}],199:[function(t,n,r){var e=t(62),i=t(90),o=Math.exp;e(e.S,"Math",{tanh:function tanh(t){var n=i(t=+t),r=i(-t);return n==1/0?1:r==1/0?-1:(n-r)/(o(t)+o(-t))}})},{62:62,90:90}],200:[function(t,n,r){var e=t(62);e(e.S,"Math",{trunc:function trunc(t){return(0<t?Math.floor:Math.ceil)(t)}})},{62:62}],201:[function(t,n,r){"use strict";var e=t(70),i=t(71),o=t(48),u=t(75),s=t(143),c=t(64),a=t(103).f,f=t(101).f,l=t(99).f,h=t(134).trim,p="Number",v=e[p],y=v,g=v.prototype,d=o(t(98)(g))==p,x="trim"in String.prototype,m=function(t){var n=s(t,!1);if("string"==typeof n&&2<n.length){var r,e,i,o=(n=x?n.trim():h(n,3)).charCodeAt(0);if(43===o||45===o){if(88===(r=n.charCodeAt(2))||120===r)return NaN}else if(48===o){switch(n.charCodeAt(1)){case 66:case 98:e=2,i=49;break;case 79:case 111:e=8,i=55;break;default:return+n}for(var u,c=n.slice(2),a=0,f=c.length;a<f;a++)if((u=c.charCodeAt(a))<48||i<u)return NaN;return parseInt(c,e)}}return+n};if(!v(" 0o1")||!v("0b1")||v("+0x1")){v=function Number(t){var n=arguments.length<1?0:t,r=this;return r instanceof v&&(d?c(function(){g.valueOf.call(r)}):o(r)!=p)?u(new y(m(n)),r,v):m(n)};for(var b,S=t(58)?a(y):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger".split(","),w=0;S.length>w;w++)i(y,b=S[w])&&!i(v,b)&&l(v,b,f(y,b));(v.prototype=g).constructor=v,t(118)(e,p,v)}},{101:101,103:103,118:118,134:134,143:143,48:48,58:58,64:64,70:70,71:71,75:75,98:98,99:99}],202:[function(t,n,r){var e=t(62);e(e.S,"Number",{EPSILON:Math.pow(2,-52)})},{62:62}],203:[function(t,n,r){var e=t(62),i=t(70).isFinite;e(e.S,"Number",{isFinite:function isFinite(t){return"number"==typeof t&&i(t)}})},{62:62,70:70}],204:[function(t,n,r){var e=t(62);e(e.S,"Number",{isInteger:t(80)})},{62:62,80:80}],205:[function(t,n,r){var e=t(62);e(e.S,"Number",{isNaN:function isNaN(t){return t!=t}})},{62:62}],206:[function(t,n,r){var e=t(62),i=t(80),o=Math.abs;e(e.S,"Number",{isSafeInteger:function isSafeInteger(t){return i(t)&&o(t)<=9007199254740991}})},{62:62,80:80}],207:[function(t,n,r){var e=t(62);e(e.S,"Number",{MAX_SAFE_INTEGER:9007199254740991})},{62:62}],208:[function(t,n,r){var e=t(62);e(e.S,"Number",{MIN_SAFE_INTEGER:-9007199254740991})},{62:62}],209:[function(t,n,r){var e=t(62),i=t(112);e(e.S+e.F*(Number.parseFloat!=i),"Number",{parseFloat:i})},{112:112,62:62}],210:[function(t,n,r){var e=t(62),i=t(113);e(e.S+e.F*(Number.parseInt!=i),"Number",{parseInt:i})},{113:113,62:62}],211:[function(t,n,r){"use strict";var e=t(62),f=t(139),s=t(34),l=t(133),i=1..toFixed,o=Math.floor,u=[0,0,0,0,0,0],h="Number.toFixed: incorrect invocation!",p=function(t,n){for(var r=-1,e=n;++r<6;)e+=t*u[r],u[r]=e%1e7,e=o(e/1e7)},v=function(t){for(var n=6,r=0;0<=--n;)r+=u[n],u[n]=o(r/t),r=r%t*1e7},y=function(){for(var t=6,n="";0<=--t;)if(""!==n||0===t||0!==u[t]){var r=String(u[t]);n=""===n?r:n+l.call("0",7-r.length)+r}return n},g=function(t,n,r){return 0===n?r:n%2==1?g(t,n-1,r*t):g(t*t,n/2,r)};e(e.P+e.F*(!!i&&("0.000"!==8e-5.toFixed(3)||"1"!==.9.toFixed(0)||"1.25"!==1.255.toFixed(2)||"1000000000000000128"!==(0xde0b6b3a7640080).toFixed(0))||!t(64)(function(){i.call({})})),"Number",{toFixed:function toFixed(t){var n,r,e,i,o=s(this,h),u=f(t),c="",a="0";if(u<0||20<u)throw RangeError(h);if(o!=o)return"NaN";if(o<=-1e21||1e21<=o)return String(o);if(o<0&&(c="-",o=-o),1e-21<o)if(r=(n=function(t){for(var n=0,r=t;4096<=r;)n+=12,r/=4096;for(;2<=r;)n+=1,r/=2;return n}(o*g(2,69,1))-69)<0?o*g(2,-n,1):o/g(2,n,1),r*=4503599627370496,0<(n=52-n)){for(p(0,r),e=u;7<=e;)p(1e7,0),e-=7;for(p(g(10,e,1),0),e=n-1;23<=e;)v(1<<23),e-=23;v(1<<e),p(1,1),v(2),a=y()}else p(0,r),p(1<<-n,0),a=y()+l.call("0",u);return a=0<u?c+((i=a.length)<=u?"0."+l.call("0",u-i)+a:a.slice(0,i-u)+"."+a.slice(i-u)):c+a}})},{133:133,139:139,34:34,62:62,64:64}],212:[function(t,n,r){"use strict";var e=t(62),i=t(64),o=t(34),u=1..toPrecision;e(e.P+e.F*(i(function(){return"1"!==u.call(1,void 0)})||!i(function(){u.call({})})),"Number",{toPrecision:function toPrecision(t){var n=o(this,"Number#toPrecision: incorrect invocation!");return void 0===t?u.call(n):u.call(n,t)}})},{34:34,62:62,64:64}],213:[function(t,n,r){var e=t(62);e(e.S+e.F,"Object",{assign:t(97)})},{62:62,97:97}],214:[function(t,n,r){var e=t(62);e(e.S,"Object",{create:t(98)})},{62:62,98:98}],215:[function(t,n,r){var e=t(62);e(e.S+e.F*!t(58),"Object",{defineProperties:t(100)})},{100:100,58:58,62:62}],216:[function(t,n,r){var e=t(62);e(e.S+e.F*!t(58),"Object",{defineProperty:t(99).f})},{58:58,62:62,99:99}],217:[function(t,n,r){var e=t(81),i=t(94).onFreeze;t(109)("freeze",function(n){return function freeze(t){return n&&e(t)?n(i(t)):t}})},{109:109,81:81,94:94}],218:[function(t,n,r){var e=t(140),i=t(101).f;t(109)("getOwnPropertyDescriptor",function(){return function getOwnPropertyDescriptor(t,n){return i(e(t),n)}})},{101:101,109:109,140:140}],219:[function(t,n,r){t(109)("getOwnPropertyNames",function(){return t(102).f})},{102:102,109:109}],220:[function(t,n,r){var e=t(142),i=t(105);t(109)("getPrototypeOf",function(){return function getPrototypeOf(t){return i(e(t))}})},{105:105,109:109,142:142}],221:[function(t,n,r){var e=t(81);t(109)("isExtensible",function(n){return function isExtensible(t){return!!e(t)&&(!n||n(t))}})},{109:109,81:81}],222:[function(t,n,r){var e=t(81);t(109)("isFrozen",function(n){return function isFrozen(t){return!e(t)||!!n&&n(t)}})},{109:109,81:81}],223:[function(t,n,r){var e=t(81);t(109)("isSealed",function(n){return function isSealed(t){return!e(t)||!!n&&n(t)}})},{109:109,81:81}],224:[function(t,n,r){var e=t(62);e(e.S,"Object",{is:t(121)})},{121:121,62:62}],225:[function(t,n,r){var e=t(142),i=t(107);t(109)("keys",function(){return function keys(t){return i(e(t))}})},{107:107,109:109,142:142}],226:[function(t,n,r){var e=t(81),i=t(94).onFreeze;t(109)("preventExtensions",function(n){return function preventExtensions(t){return n&&e(t)?n(i(t)):t}})},{109:109,81:81,94:94}],227:[function(t,n,r){var e=t(81),i=t(94).onFreeze;t(109)("seal",function(n){return function seal(t){return n&&e(t)?n(i(t)):t}})},{109:109,81:81,94:94}],228:[function(t,n,r){var e=t(62);e(e.S,"Object",{setPrototypeOf:t(122).set})},{122:122,62:62}],229:[function(t,n,r){"use strict";var e=t(47),i={};i[t(152)("toStringTag")]="z",i+""!="[object z]"&&t(118)(Object.prototype,"toString",function toString(){return"[object "+e(this)+"]"},!0)},{118:118,152:152,47:47}],230:[function(t,n,r){var e=t(62),i=t(112);e(e.G+e.F*(parseFloat!=i),{parseFloat:i})},{112:112,62:62}],231:[function(t,n,r){var e=t(62),i=t(113);e(e.G+e.F*(parseInt!=i),{parseInt:i})},{113:113,62:62}],232:[function(r,t,n){"use strict";var e,i,o,u,c=r(89),a=r(70),f=r(54),s=r(47),l=r(62),h=r(81),p=r(33),v=r(37),y=r(68),g=r(127),d=r(136).set,x=r(95)(),m=r(96),b=r(114),S=r(148),w=r(115),_="Promise",E=a.TypeError,F=a.process,I=F&&F.versions,O=I&&I.v8||"",P=a[_],A="process"==s(F),M=function(){},k=i=m.f,N=!!function(){try{var t=P.resolve(1),n=(t.constructor={})[r(152)("species")]=function(t){t(M,M)};return(A||"function"==typeof PromiseRejectionEvent)&&t.then(M)instanceof n&&0!==O.indexOf("6.6")&&-1===S.indexOf("Chrome/66")}catch(t){}}(),j=function(t){var n;return!(!h(t)||"function"!=typeof(n=t.then))&&n},T=function(s,r){if(!s._n){s._n=!0;var e=s._c;x(function(){for(var a=s._v,f=1==s._s,t=0,n=function(t){var n,r,e,i=f?t.ok:t.fail,o=t.resolve,u=t.reject,c=t.domain;try{i?(f||(2==s._h&&C(s),s._h=1),!0===i?n=a:(c&&c.enter(),n=i(a),c&&(c.exit(),e=!0)),n===t.promise?u(E("Promise-chain cycle")):(r=j(n))?r.call(n,o,u):o(n)):u(a)}catch(t){c&&!e&&c.exit(),u(t)}};e.length>t;)n(e[t++]);s._c=[],s._n=!1,r&&!s._h&&R(s)})}},R=function(o){d.call(a,function(){var t,n,r,e=o._v,i=L(o);if(i&&(t=b(function(){A?F.emit("unhandledRejection",e,o):(n=a.onunhandledrejection)?n({promise:o,reason:e}):(r=a.console)&&r.error&&r.error("Unhandled promise rejection",e)}),o._h=A||L(o)?2:1),o._a=void 0,i&&t.e)throw t.v})},L=function(t){return 1!==t._h&&0===(t._a||t._c).length},C=function(n){d.call(a,function(){var t;A?F.emit("rejectionHandled",n):(t=a.onrejectionhandled)&&t({promise:n,reason:n._v})})},G=function(t){var n=this;n._d||(n._d=!0,(n=n._w||n)._v=t,n._s=2,n._a||(n._a=n._c.slice()),T(n,!0))},D=function(t){var r,e=this;if(!e._d){e._d=!0,e=e._w||e;try{if(e===t)throw E("Promise can't be resolved itself");(r=j(t))?x(function(){var n={_w:e,_d:!1};try{r.call(t,f(D,n,1),f(G,n,1))}catch(t){G.call(n,t)}}):(e._v=t,e._s=1,T(e,!1))}catch(t){G.call({_w:e,_d:!1},t)}}};N||(P=function Promise(t){v(this,P,_,"_h"),p(t),e.call(this);try{t(f(D,this,1),f(G,this,1))}catch(t){G.call(this,t)}},(e=function Promise(t){this._c=[],this._a=void 0,this._s=0,this._d=!1,this._v=void 0,this._h=0,this._n=!1}).prototype=r(117)(P.prototype,{then:function then(t,n){var r=k(g(this,P));return r.ok="function"!=typeof t||t,r.fail="function"==typeof n&&n,r.domain=A?F.domain:void 0,this._c.push(r),this._a&&this._a.push(r),this._s&&T(this,!1),r.promise},catch:function(t){return this.then(void 0,t)}}),o=function(){var t=new e;this.promise=t,this.resolve=f(D,t,1),this.reject=f(G,t,1)},m.f=k=function(t){return t===P||t===u?new o(t):i(t)}),l(l.G+l.W+l.F*!N,{Promise:P}),r(124)(P,_),r(123)(_),u=r(52)[_],l(l.S+l.F*!N,_,{reject:function reject(t){var n=k(this);return(0,n.reject)(t),n.promise}}),l(l.S+l.F*(c||!N),_,{resolve:function resolve(t){return w(c&&this===u?P:this,t)}}),l(l.S+l.F*!(N&&r(86)(function(t){P.all(t).catch(M)})),_,{all:function all(t){var u=this,n=k(u),c=n.resolve,a=n.reject,r=b(function(){var e=[],i=0,o=1;y(t,!1,function(t){var n=i++,r=!1;e.push(void 0),o++,u.resolve(t).then(function(t){r||(r=!0,e[n]=t,--o||c(e))},a)}),--o||c(e)});return r.e&&a(r.v),n.promise},race:function race(t){var n=this,r=k(n),e=r.reject,i=b(function(){y(t,!1,function(t){n.resolve(t).then(r.resolve,e)})});return i.e&&e(i.v),r.promise}})},{114:114,115:115,117:117,123:123,124:124,127:127,136:136,148:148,152:152,33:33,37:37,47:47,52:52,54:54,62:62,68:68,70:70,81:81,86:86,89:89,95:95,96:96}],233:[function(t,n,r){var e=t(62),o=t(33),u=t(38),c=(t(70).Reflect||{}).apply,a=Function.apply;e(e.S+e.F*!t(64)(function(){c(function(){})}),"Reflect",{apply:function apply(t,n,r){var e=o(t),i=u(r);return c?c(e,n,i):a.call(e,n,i)}})},{33:33,38:38,62:62,64:64,70:70}],234:[function(t,n,r){var e=t(62),c=t(98),a=t(33),f=t(38),s=t(81),i=t(64),l=t(46),h=(t(70).Reflect||{}).construct,p=i(function(){function F(){}return!(h(function(){},[],F)instanceof F)}),v=!i(function(){h(function(){})});e(e.S+e.F*(p||v),"Reflect",{construct:function construct(t,n){a(t),f(n);var r=arguments.length<3?t:a(arguments[2]);if(v&&!p)return h(t,n,r);if(t==r){switch(n.length){case 0:return new t;case 1:return new t(n[0]);case 2:return new t(n[0],n[1]);case 3:return new t(n[0],n[1],n[2]);case 4:return new t(n[0],n[1],n[2],n[3])}var e=[null];return e.push.apply(e,n),new(l.apply(t,e))}var i=r.prototype,o=c(s(i)?i:Object.prototype),u=Function.apply.call(t,o,n);return s(u)?u:o}})},{33:33,38:38,46:46,62:62,64:64,70:70,81:81,98:98}],235:[function(t,n,r){var e=t(99),i=t(62),o=t(38),u=t(143);i(i.S+i.F*t(64)(function(){Reflect.defineProperty(e.f({},1,{value:1}),1,{value:2})}),"Reflect",{defineProperty:function defineProperty(t,n,r){o(t),n=u(n,!0),o(r);try{return e.f(t,n,r),!0}catch(t){return!1}}})},{143:143,38:38,62:62,64:64,99:99}],236:[function(t,n,r){var e=t(62),i=t(101).f,o=t(38);e(e.S,"Reflect",{deleteProperty:function deleteProperty(t,n){var r=i(o(t),n);return!(r&&!r.configurable)&&delete t[n]}})},{101:101,38:38,62:62}],237:[function(t,n,r){"use strict";var e=t(62),i=t(38),o=function(t){this._t=i(t),this._i=0;var n,r=this._k=[];for(n in t)r.push(n)};t(84)(o,"Object",function(){var t,n=this._k;do{if(this._i>=n.length)return{value:void 0,done:!0}}while(!((t=n[this._i++])in this._t));return{value:t,done:!1}}),e(e.S,"Reflect",{enumerate:function enumerate(t){return new o(t)}})},{38:38,62:62,84:84}],238:[function(t,n,r){var e=t(101),i=t(62),o=t(38);i(i.S,"Reflect",{getOwnPropertyDescriptor:function getOwnPropertyDescriptor(t,n){return e.f(o(t),n)}})},{101:101,38:38,62:62}],239:[function(t,n,r){var e=t(62),i=t(105),o=t(38);e(e.S,"Reflect",{getPrototypeOf:function getPrototypeOf(t){return i(o(t))}})},{105:105,38:38,62:62}],240:[function(t,n,r){var o=t(101),u=t(105),c=t(71),e=t(62),a=t(81),f=t(38);e(e.S,"Reflect",{get:function get(t,n){var r,e,i=arguments.length<3?t:arguments[2];return f(t)===i?t[n]:(r=o.f(t,n))?c(r,"value")?r.value:void 0!==r.get?r.get.call(i):void 0:a(e=u(t))?get(e,n,i):void 0}})},{101:101,105:105,38:38,62:62,71:71,81:81}],241:[function(t,n,r){var e=t(62);e(e.S,"Reflect",{has:function has(t,n){return n in t}})},{62:62}],242:[function(t,n,r){var e=t(62),i=t(38),o=Object.isExtensible;e(e.S,"Reflect",{isExtensible:function isExtensible(t){return i(t),!o||o(t)}})},{38:38,62:62}],243:[function(t,n,r){var e=t(62);e(e.S,"Reflect",{ownKeys:t(111)})},{111:111,62:62}],244:[function(t,n,r){var e=t(62),i=t(38),o=Object.preventExtensions;e(e.S,"Reflect",{preventExtensions:function preventExtensions(t){i(t);try{return o&&o(t),!0}catch(t){return!1}}})},{38:38,62:62}],245:[function(t,n,r){var e=t(62),i=t(122);i&&e(e.S,"Reflect",{setPrototypeOf:function setPrototypeOf(t,n){i.check(t,n);try{return i.set(t,n),!0}catch(t){return!1}}})},{122:122,62:62}],246:[function(t,n,r){var c=t(99),a=t(101),f=t(105),s=t(71),e=t(62),l=t(116),h=t(38),p=t(81);e(e.S,"Reflect",{set:function set(t,n,r){var e,i,o=arguments.length<4?t:arguments[3],u=a.f(h(t),n);if(!u){if(p(i=f(t)))return set(i,n,r,o);u=l(0)}if(s(u,"value")){if(!1===u.writable||!p(o))return!1;if(e=a.f(o,n)){if(e.get||e.set||!1===e.writable)return!1;e.value=r,c.f(o,n,e)}else c.f(o,n,l(0,r));return!0}return void 0!==u.set&&(u.set.call(o,r),!0)}})},{101:101,105:105,116:116,38:38,62:62,71:71,81:81,99:99}],247:[function(t,n,r){var e=t(70),o=t(75),i=t(99).f,u=t(103).f,c=t(82),a=t(66),f=e.RegExp,s=f,l=f.prototype,h=/a/g,p=/a/g,v=new f(h)!==h;if(t(58)&&(!v||t(64)(function(){return p[t(152)("match")]=!1,f(h)!=h||f(p)==p||"/a/i"!=f(h,"i")}))){f=function RegExp(t,n){var r=this instanceof f,e=c(t),i=void 0===n;return!r&&e&&t.constructor===f&&i?t:o(v?new s(e&&!i?t.source:t,n):s((e=t instanceof f)?t.source:t,e&&i?a.call(t):n),r?this:l,f)};for(var y=function(n){n in f||i(f,n,{configurable:!0,get:function(){return s[n]},set:function(t){s[n]=t}})},g=u(s),d=0;g.length>d;)y(g[d++]);(l.constructor=f).prototype=l,t(118)(e,"RegExp",f)}t(123)("RegExp")},{103:103,118:118,123:123,152:152,58:58,64:64,66:66,70:70,75:75,82:82,99:99}],248:[function(t,n,r){"use strict";var e=t(120);t(62)({target:"RegExp",proto:!0,forced:e!==/./.exec},{exec:e})},{120:120,62:62}],249:[function(t,n,r){t(58)&&"g"!=/./g.flags&&t(99).f(RegExp.prototype,"flags",{configurable:!0,get:t(66)})},{58:58,66:66,99:99}],250:[function(t,n,r){"use strict";var l=t(38),h=t(141),p=t(36),v=t(119);t(65)("match",1,function(e,i,f,s){return[function match(t){var n=e(this),r=null==t?void 0:t[i];return void 0!==r?r.call(t,n):new RegExp(t)[i](String(n))},function(t){var n=s(f,t,this);if(n.done)return n.value;var r=l(t),e=String(this);if(!r.global)return v(r,e);for(var i,o=r.unicode,u=[],c=r.lastIndex=0;null!==(i=v(r,e));){var a=String(i[0]);""===(u[c]=a)&&(r.lastIndex=p(e,h(r.lastIndex),o)),c++}return 0===c?null:u}]})},{119:119,141:141,36:36,38:38,65:65}],251:[function(t,n,r){"use strict";var _=t(38),e=t(142),E=t(141),F=t(139),I=t(36),O=t(119),P=Math.max,A=Math.min,h=Math.floor,p=/\$([$&`']|\d\d?|<[^>]*>)/g,v=/\$([$&`']|\d\d?)/g;t(65)("replace",2,function(i,o,S,w){return[function replace(t,n){var r=i(this),e=null==t?void 0:t[o];return void 0!==e?e.call(t,r,n):S.call(String(r),t,n)},function(t,n){var r=w(S,t,this,n);if(r.done)return r.value;var e=_(t),i=String(this),o="function"==typeof n;o||(n=String(n));var u=e.global;if(u){var c=e.unicode;e.lastIndex=0}for(var a=[];;){var f=O(e,i);if(null===f)break;if(a.push(f),!u)break;""===String(f[0])&&(e.lastIndex=I(i,E(e.lastIndex),c))}for(var s,l="",h=0,p=0;p<a.length;p++){f=a[p];for(var v=String(f[0]),y=P(A(F(f.index),i.length),0),g=[],d=1;d<f.length;d++)g.push(void 0===(s=f[d])?s:String(s));var x=f.groups;if(o){var m=[v].concat(g,y,i);void 0!==x&&m.push(x);var b=String(n.apply(void 0,m))}else b=getSubstitution(v,i,y,g,x,n);h<=y&&(l+=i.slice(h,y)+b,h=y+v.length)}return l+i.slice(h)}];function getSubstitution(o,u,c,a,f,t){var s=c+o.length,l=a.length,n=v;return void 0!==f&&(f=e(f),n=p),S.call(t,n,function(t,n){var r;switch(n.charAt(0)){case"$":return"$";case"&":return o;case"`":return u.slice(0,c);case"'":return u.slice(s);case"<":r=f[n.slice(1,-1)];break;default:var e=+n;if(0===e)return t;if(l<e){var i=h(e/10);return 0===i?t:i<=l?void 0===a[i-1]?n.charAt(1):a[i-1]+n.charAt(1):t}r=a[e-1]}return void 0===r?"":r})}})},{119:119,139:139,141:141,142:142,36:36,38:38,65:65}],252:[function(t,n,r){"use strict";var a=t(38),f=t(121),s=t(119);t(65)("search",1,function(e,i,u,c){return[function search(t){var n=e(this),r=null==t?void 0:t[i];return void 0!==r?r.call(t,n):new RegExp(t)[i](String(n))},function(t){var n=c(u,t,this);if(n.done)return n.value;var r=a(t),e=String(this),i=r.lastIndex;f(i,0)||(r.lastIndex=0);var o=s(r,e);return f(r.lastIndex,i)||(r.lastIndex=i),null===o?-1:o.index}]})},{119:119,121:121,38:38,65:65}],253:[function(t,n,r){"use strict";var l=t(82),m=t(38),b=t(127),S=t(36),w=t(141),_=t(119),h=t(120),e=t(64),E=Math.min,p=[].push,u="split",v="length",y="lastIndex",F=4294967295,I=!e(function(){RegExp(F,"y")});t(65)("split",2,function(i,o,g,d){var x;return x="c"=="abbc"[u](/(b)*/)[1]||4!="test"[u](/(?:)/,-1)[v]||2!="ab"[u](/(?:ab)*/)[v]||4!="."[u](/(.?)(.?)/)[v]||1<"."[u](/()()/)[v]||""[u](/.?/)[v]?function(t,n){var r=String(this);if(void 0===t&&0===n)return[];if(!l(t))return g.call(r,t,n);for(var e,i,o,u=[],c=(t.ignoreCase?"i":"")+(t.multiline?"m":"")+(t.unicode?"u":"")+(t.sticky?"y":""),a=0,f=void 0===n?F:n>>>0,s=new RegExp(t.source,c+"g");(e=h.call(s,r))&&!(a<(i=s[y])&&(u.push(r.slice(a,e.index)),1<e[v]&&e.index<r[v]&&p.apply(u,e.slice(1)),o=e[0][v],a=i,u[v]>=f));)s[y]===e.index&&s[y]++;return a===r[v]?!o&&s.test("")||u.push(""):u.push(r.slice(a)),u[v]>f?u.slice(0,f):u}:"0"[u](void 0,0)[v]?function(t,n){return void 0===t&&0===n?[]:g.call(this,t,n)}:g,[function split(t,n){var r=i(this),e=null==t?void 0:t[o];return void 0!==e?e.call(t,r,n):x.call(String(r),t,n)},function(t,n){var r=d(x,t,this,n,x!==g);if(r.done)return r.value;var e=m(t),i=String(this),o=b(e,RegExp),u=e.unicode,c=(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.unicode?"u":"")+(I?"y":"g"),a=new o(I?e:"^(?:"+e.source+")",c),f=void 0===n?F:n>>>0;if(0===f)return[];if(0===i.length)return null===_(a,i)?[i]:[];for(var s=0,l=0,h=[];l<i.length;){a.lastIndex=I?l:0;var p,v=_(a,I?i:i.slice(l));if(null===v||(p=E(w(a.lastIndex+(I?0:l)),i.length))===s)l=S(i,l,u);else{if(h.push(i.slice(s,l)),h.length===f)return h;for(var y=1;y<=v.length-1;y++)if(h.push(v[y]),h.length===f)return h;l=s=p}}return h.push(i.slice(s)),h}]})},{119:119,120:120,127:127,141:141,36:36,38:38,64:64,65:65,82:82}],254:[function(n,t,r){"use strict";n(249);var e=n(38),i=n(66),o=n(58),u="toString",c=/./[u],a=function(t){n(118)(RegExp.prototype,u,t,!0)};n(64)(function(){return"/a/b"!=c.call({source:"a",flags:"b"})})?a(function toString(){var t=e(this);return"/".concat(t.source,"/","flags"in t?t.flags:!o&&t instanceof RegExp?i.call(t):void 0)}):c.name!=u&&a(function toString(){return c.call(this)})},{118:118,249:249,38:38,58:58,64:64,66:66}],255:[function(t,n,r){"use strict";var e=t(49),i=t(149);n.exports=t(51)("Set",function(t){return function Set(){return t(this,0<arguments.length?arguments[0]:void 0)}},{add:function add(t){return e.def(i(this,"Set"),t=0===t?0:t,t)}},e)},{149:149,49:49,51:51}],256:[function(t,n,r){"use strict";t(131)("anchor",function(n){return function anchor(t){return n(this,"a","name",t)}})},{131:131}],257:[function(t,n,r){"use strict";t(131)("big",function(t){return function big(){return t(this,"big","","")}})},{131:131}],258:[function(t,n,r){"use strict";t(131)("blink",function(t){return function blink(){return t(this,"blink","","")}})},{131:131}],259:[function(t,n,r){"use strict";t(131)("bold",function(t){return function bold(){return t(this,"b","","")}})},{131:131}],260:[function(t,n,r){"use strict";var e=t(62),i=t(129)(!1);e(e.P,"String",{codePointAt:function codePointAt(t){return i(this,t)}})},{129:129,62:62}],261:[function(t,n,r){"use strict";var e=t(62),u=t(141),c=t(130),a="endsWith",f=""[a];e(e.P+e.F*t(63)(a),"String",{endsWith:function endsWith(t){var n=c(this,t,a),r=1<arguments.length?arguments[1]:void 0,e=u(n.length),i=void 0===r?e:Math.min(u(r),e),o=String(t);return f?f.call(n,o,i):n.slice(i-o.length,i)===o}})},{130:130,141:141,62:62,63:63}],262:[function(t,n,r){"use strict";t(131)("fixed",function(t){return function fixed(){return t(this,"tt","","")}})},{131:131}],263:[function(t,n,r){"use strict";t(131)("fontcolor",function(n){return function fontcolor(t){return n(this,"font","color",t)}})},{131:131}],264:[function(t,n,r){"use strict";t(131)("fontsize",function(n){return function fontsize(t){return n(this,"font","size",t)}})},{131:131}],265:[function(t,n,r){var e=t(62),o=t(137),u=String.fromCharCode,i=String.fromCodePoint;e(e.S+e.F*(!!i&&1!=i.length),"String",{fromCodePoint:function fromCodePoint(t){for(var n,r=[],e=arguments.length,i=0;i<e;){if(n=+arguments[i++],o(n,1114111)!==n)throw RangeError(n+" is not a valid code point");r.push(n<65536?u(n):u(55296+((n-=65536)>>10),n%1024+56320))}return r.join("")}})},{137:137,62:62}],266:[function(t,n,r){"use strict";var e=t(62),i=t(130),o="includes";e(e.P+e.F*t(63)(o),"String",{includes:function includes(t){return!!~i(this,t,o).indexOf(t,1<arguments.length?arguments[1]:void 0)}})},{130:130,62:62,63:63}],267:[function(t,n,r){"use strict";t(131)("italics",function(t){return function italics(){return t(this,"i","","")}})},{131:131}],268:[function(t,n,r){"use strict";var e=t(129)(!0);t(85)(String,"String",function(t){this._t=String(t),this._i=0},function(){var t,n=this._t,r=this._i;return r>=n.length?{value:void 0,done:!0}:(t=e(n,r),this._i+=t.length,{value:t,done:!1})})},{129:129,85:85}],269:[function(t,n,r){"use strict";t(131)("link",function(n){return function link(t){return n(this,"a","href",t)}})},{131:131}],270:[function(t,n,r){var e=t(62),u=t(140),c=t(141);e(e.S,"String",{raw:function raw(t){for(var n=u(t.raw),r=c(n.length),e=arguments.length,i=[],o=0;o<r;)i.push(String(n[o++])),o<e&&i.push(String(arguments[o]));return i.join("")}})},{140:140,141:141,62:62}],271:[function(t,n,r){var e=t(62);e(e.P,"String",{repeat:t(133)})},{133:133,62:62}],272:[function(t,n,r){"use strict";t(131)("small",function(t){return function small(){return t(this,"small","","")}})},{131:131}],273:[function(t,n,r){"use strict";var e=t(62),i=t(141),o=t(130),u="startsWith",c=""[u];e(e.P+e.F*t(63)(u),"String",{startsWith:function startsWith(t){var n=o(this,t,u),r=i(Math.min(1<arguments.length?arguments[1]:void 0,n.length)),e=String(t);return c?c.call(n,e,r):n.slice(r,r+e.length)===e}})},{130:130,141:141,62:62,63:63}],274:[function(t,n,r){"use strict";t(131)("strike",function(t){return function strike(){return t(this,"strike","","")}})},{131:131}],275:[function(t,n,r){"use strict";t(131)("sub",function(t){return function sub(){return t(this,"sub","","")}})},{131:131}],276:[function(t,n,r){"use strict";t(131)("sup",function(t){return function sup(){return t(this,"sup","","")}})},{131:131}],277:[function(t,n,r){"use strict";t(134)("trim",function(t){return function trim(){return t(this,3)}})},{134:134}],278:[function(t,n,r){"use strict";var e=t(70),u=t(71),i=t(58),o=t(62),c=t(118),a=t(94).KEY,f=t(64),s=t(126),l=t(124),h=t(147),p=t(152),v=t(151),y=t(150),g=t(61),d=t(79),x=t(38),m=t(81),b=t(140),S=t(143),w=t(116),_=t(98),E=t(102),F=t(101),I=t(99),O=t(107),P=F.f,A=I.f,M=E.f,k=e.Symbol,N=e.JSON,j=N&&N.stringify,T="prototype",R=p("_hidden"),L=p("toPrimitive"),C={}.propertyIsEnumerable,G=s("symbol-registry"),D=s("symbols"),U=s("op-symbols"),W=Object[T],V="function"==typeof k,B=e.QObject,z=!B||!B[T]||!B[T].findChild,q=i&&f(function(){return 7!=_(A({},"a",{get:function(){return A(this,"a",{value:7}).a}})).a})?function(t,n,r){var e=P(W,n);e&&delete W[n],A(t,n,r),e&&t!==W&&A(W,n,e)}:A,Y=function(t){var n=D[t]=_(k[T]);return n._k=t,n},K=V&&"symbol"==typeof k.iterator?function(t){return"symbol"==typeof t}:function(t){return t instanceof k},$=function defineProperty(t,n,r){return t===W&&$(U,n,r),x(t),n=S(n,!0),x(r),u(D,n)?(r.enumerable?(u(t,R)&&t[R][n]&&(t[R][n]=!1),r=_(r,{enumerable:w(0,!1)})):(u(t,R)||A(t,R,w(1,{})),t[R][n]=!0),q(t,n,r)):A(t,n,r)},J=function defineProperties(t,n){x(t);for(var r,e=g(n=b(n)),i=0,o=e.length;i<o;)$(t,r=e[i++],n[r]);return t},X=function propertyIsEnumerable(t){var n=C.call(this,t=S(t,!0));return!(this===W&&u(D,t)&&!u(U,t))&&(!(n||!u(this,t)||!u(D,t)||u(this,R)&&this[R][t])||n)},H=function getOwnPropertyDescriptor(t,n){if(t=b(t),n=S(n,!0),t!==W||!u(D,n)||u(U,n)){var r=P(t,n);return!r||!u(D,n)||u(t,R)&&t[R][n]||(r.enumerable=!0),r}},Z=function getOwnPropertyNames(t){for(var n,r=M(b(t)),e=[],i=0;r.length>i;)u(D,n=r[i++])||n==R||n==a||e.push(n);return e},Q=function getOwnPropertySymbols(t){for(var n,r=t===W,e=M(r?U:b(t)),i=[],o=0;e.length>o;)!u(D,n=e[o++])||r&&!u(W,n)||i.push(D[n]);return i};V||(c((k=function Symbol(){if(this instanceof k)throw TypeError("Symbol is not a constructor!");var n=h(0<arguments.length?arguments[0]:void 0),r=function(t){this===W&&r.call(U,t),u(this,R)&&u(this[R],n)&&(this[R][n]=!1),q(this,n,w(1,t))};return i&&z&&q(W,n,{configurable:!0,set:r}),Y(n)})[T],"toString",function toString(){return this._k}),F.f=H,I.f=$,t(103).f=E.f=Z,t(108).f=X,t(104).f=Q,i&&!t(89)&&c(W,"propertyIsEnumerable",X,!0),v.f=function(t){return Y(p(t))}),o(o.G+o.W+o.F*!V,{Symbol:k});for(var tt="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),nt=0;tt.length>nt;)p(tt[nt++]);for(var rt=O(p.store),et=0;rt.length>et;)y(rt[et++]);o(o.S+o.F*!V,"Symbol",{for:function(t){return u(G,t+="")?G[t]:G[t]=k(t)},keyFor:function keyFor(t){if(!K(t))throw TypeError(t+" is not a symbol!");for(var n in G)if(G[n]===t)return n},useSetter:function(){z=!0},useSimple:function(){z=!1}}),o(o.S+o.F*!V,"Object",{create:function create(t,n){return void 0===n?_(t):J(_(t),n)},defineProperty:$,defineProperties:J,getOwnPropertyDescriptor:H,getOwnPropertyNames:Z,getOwnPropertySymbols:Q}),N&&o(o.S+o.F*(!V||f(function(){var t=k();return"[null]"!=j([t])||"{}"!=j({a:t})||"{}"!=j(Object(t))})),"JSON",{stringify:function stringify(t){for(var n,r,e=[t],i=1;arguments.length>i;)e.push(arguments[i++]);if(r=n=e[1],(m(n)||void 0!==t)&&!K(t))return d(n)||(n=function(t,n){if("function"==typeof r&&(n=r.call(this,t,n)),!K(n))return n}),e[1]=n,j.apply(N,e)}}),k[T][L]||t(72)(k[T],L,k[T].valueOf),l(k,"Symbol"),l(Math,"Math",!0),l(e.JSON,"JSON",!0)},{101:101,102:102,103:103,104:104,107:107,108:108,116:116,118:118,124:124,126:126,140:140,143:143,147:147,150:150,151:151,152:152,38:38,58:58,61:61,62:62,64:64,70:70,71:71,72:72,79:79,81:81,89:89,94:94,98:98,99:99}],279:[function(t,n,r){"use strict";var e=t(62),i=t(146),o=t(145),f=t(38),s=t(137),l=t(141),u=t(81),c=t(70).ArrayBuffer,h=t(127),p=o.ArrayBuffer,v=o.DataView,a=i.ABV&&c.isView,y=p.prototype.slice,g=i.VIEW,d="ArrayBuffer";e(e.G+e.W+e.F*(c!==p),{ArrayBuffer:p}),e(e.S+e.F*!i.CONSTR,d,{isView:function isView(t){return a&&a(t)||u(t)&&g in t}}),e(e.P+e.U+e.F*t(64)(function(){return!new p(2).slice(1,void 0).byteLength}),d,{slice:function slice(t,n){if(void 0!==y&&void 0===n)return y.call(f(this),t);for(var r=f(this).byteLength,e=s(t,r),i=s(void 0===n?r:n,r),o=new(h(this,p))(l(i-e)),u=new v(this),c=new v(o),a=0;e<i;)c.setUint8(a++,u.getUint8(e++));return o}}),t(123)(d)},{123:123,127:127,137:137,141:141,145:145,146:146,38:38,62:62,64:64,70:70,81:81}],280:[function(t,n,r){var e=t(62);e(e.G+e.W+e.F*!t(146).ABV,{DataView:t(145).DataView})},{145:145,146:146,62:62}],281:[function(t,n,r){t(144)("Float32",4,function(e){return function Float32Array(t,n,r){return e(this,t,n,r)}})},{144:144}],282:[function(t,n,r){t(144)("Float64",8,function(e){return function Float64Array(t,n,r){return e(this,t,n,r)}})},{144:144}],283:[function(t,n,r){t(144)("Int16",2,function(e){return function Int16Array(t,n,r){return e(this,t,n,r)}})},{144:144}],284:[function(t,n,r){t(144)("Int32",4,function(e){return function Int32Array(t,n,r){return e(this,t,n,r)}})},{144:144}],285:[function(t,n,r){t(144)("Int8",1,function(e){return function Int8Array(t,n,r){return e(this,t,n,r)}})},{144:144}],286:[function(t,n,r){t(144)("Uint16",2,function(e){return function Uint16Array(t,n,r){return e(this,t,n,r)}})},{144:144}],287:[function(t,n,r){t(144)("Uint32",4,function(e){return function Uint32Array(t,n,r){return e(this,t,n,r)}})},{144:144}],288:[function(t,n,r){t(144)("Uint8",1,function(e){return function Uint8Array(t,n,r){return e(this,t,n,r)}})},{144:144}],289:[function(t,n,r){t(144)("Uint8",1,function(e){return function Uint8ClampedArray(t,n,r){return e(this,t,n,r)}},!0)},{144:144}],290:[function(t,n,r){"use strict";var o,e=t(70),i=t(42)(0),u=t(118),c=t(94),a=t(97),f=t(50),s=t(81),l=t(149),h=t(149),p=!e.ActiveXObject&&"ActiveXObject"in e,v="WeakMap",y=c.getWeak,g=Object.isExtensible,d=f.ufstore,x=function(t){return function WeakMap(){return t(this,0<arguments.length?arguments[0]:void 0)}},m={get:function get(t){if(s(t)){var n=y(t);return!0===n?d(l(this,v)).get(t):n?n[this._i]:void 0}},set:function set(t,n){return f.def(l(this,v),t,n)}},b=n.exports=t(51)(v,x,m,f,!0,!0);h&&p&&(a((o=f.getConstructor(x,v)).prototype,m),c.NEED=!0,i(["delete","has","get","set"],function(e){var t=b.prototype,i=t[e];u(t,e,function(t,n){if(!s(t)||g(t))return i.call(this,t,n);this._f||(this._f=new o);var r=this._f[e](t,n);return"set"==e?this:r})}))},{118:118,149:149,42:42,50:50,51:51,70:70,81:81,94:94,97:97}],291:[function(t,n,r){"use strict";var e=t(50),i=t(149),o="WeakSet";t(51)(o,function(t){return function WeakSet(){return t(this,0<arguments.length?arguments[0]:void 0)}},{add:function add(t){return e.def(i(this,o),t,!0)}},e,!1,!0)},{149:149,50:50,51:51}],292:[function(t,n,r){"use strict";var e=t(62),i=t(67),o=t(142),u=t(141),c=t(33),a=t(45);e(e.P,"Array",{flatMap:function flatMap(t){var n,r,e=o(this);return c(t),n=u(e.length),r=a(e,0),i(r,e,e,n,0,1,t,arguments[1]),r}}),t(35)("flatMap")},{141:141,142:142,33:33,35:35,45:45,62:62,67:67}],293:[function(t,n,r){"use strict";var e=t(62),i=t(41)(!0);e(e.P,"Array",{includes:function includes(t){return i(this,t,1<arguments.length?arguments[1]:void 0)}}),t(35)("includes")},{35:35,41:41,62:62}],294:[function(t,n,r){var e=t(62),i=t(110)(!0);e(e.S,"Object",{entries:function entries(t){return i(t)}})},{110:110,62:62}],295:[function(t,n,r){var e=t(62),a=t(111),f=t(140),s=t(101),l=t(53);e(e.S,"Object",{getOwnPropertyDescriptors:function getOwnPropertyDescriptors(t){for(var n,r,e=f(t),i=s.f,o=a(e),u={},c=0;o.length>c;)void 0!==(r=i(e,n=o[c++]))&&l(u,n,r);return u}})},{101:101,111:111,140:140,53:53,62:62}],296:[function(t,n,r){var e=t(62),i=t(110)(!1);e(e.S,"Object",{values:function values(t){return i(t)}})},{110:110,62:62}],297:[function(t,n,r){"use strict";var e=t(62),i=t(52),o=t(70),u=t(127),c=t(115);e(e.P+e.R,"Promise",{finally:function(n){var r=u(this,i.Promise||o.Promise),t="function"==typeof n;return this.then(t?function(t){return c(r,n()).then(function(){return t})}:n,t?function(t){return c(r,n()).then(function(){throw t})}:n)}})},{115:115,127:127,52:52,62:62,70:70}],298:[function(t,n,r){"use strict";var e=t(62),i=t(132),o=t(148),u=/Version\/10\.\d+(\.\d+)?( Mobile\/\w+)? Safari\//.test(o);e(e.P+e.F*u,"String",{padEnd:function padEnd(t){return i(this,t,1<arguments.length?arguments[1]:void 0,!1)}})},{132:132,148:148,62:62}],299:[function(t,n,r){"use strict";var e=t(62),i=t(132),o=t(148),u=/Version\/10\.\d+(\.\d+)?( Mobile\/\w+)? Safari\//.test(o);e(e.P+e.F*u,"String",{padStart:function padStart(t){return i(this,t,1<arguments.length?arguments[1]:void 0,!0)}})},{132:132,148:148,62:62}],300:[function(t,n,r){"use strict";t(134)("trimLeft",function(t){return function trimLeft(){return t(this,1)}},"trimStart")},{134:134}],301:[function(t,n,r){"use strict";t(134)("trimRight",function(t){return function trimRight(){return t(this,2)}},"trimEnd")},{134:134}],302:[function(t,n,r){t(150)("asyncIterator")},{150:150}],303:[function(t,n,r){for(var e=t(164),i=t(107),o=t(118),u=t(70),c=t(72),a=t(88),f=t(152),s=f("iterator"),l=f("toStringTag"),h=a.Array,p={CSSRuleList:!0,CSSStyleDeclaration:!1,CSSValueList:!1,ClientRectList:!1,DOMRectList:!1,DOMStringList:!1,DOMTokenList:!0,DataTransferItemList:!1,FileList:!1,HTMLAllCollection:!1,HTMLCollection:!1,HTMLFormElement:!1,HTMLSelectElement:!1,MediaList:!0,MimeTypeArray:!1,NamedNodeMap:!1,NodeList:!0,PaintRequestList:!1,Plugin:!1,PluginArray:!1,SVGLengthList:!1,SVGNumberList:!1,SVGPathSegList:!1,SVGPointList:!1,SVGStringList:!1,SVGTransformList:!1,SourceBufferList:!1,StyleSheetList:!0,TextTrackCueList:!1,TextTrackList:!1,TouchList:!1},v=i(p),y=0;y<v.length;y++){var g,d=v[y],x=p[d],m=u[d],b=m&&m.prototype;if(b&&(b[s]||c(b,s,h),b[l]||c(b,l,d),a[d]=h,x))for(g in e)b[g]||o(b,g,e[g],!0)}},{107:107,118:118,152:152,164:164,70:70,72:72,88:88}],304:[function(t,n,r){var e=t(62),i=t(136);e(e.G+e.B,{setImmediate:i.set,clearImmediate:i.clear})},{136:136,62:62}],305:[function(t,n,r){var e=t(70),i=t(62),o=t(148),u=[].slice,c=/MSIE .\./.test(o),a=function(i){return function(t,n){var r=2<arguments.length,e=!!r&&u.call(arguments,2);return i(r?function(){("function"==typeof t?t:Function(t)).apply(this,e)}:t,n)}};i(i.G+i.B+i.F*c,{setTimeout:a(e.setTimeout),setInterval:a(e.setInterval)})},{148:148,62:62,70:70}],306:[function(t,n,r){t(305),t(304),t(303),n.exports=t(52)},{303:303,304:304,305:305,52:52}],307:[function(t,n,r){var e=function(o){"use strict";var c,t=Object.prototype,a=t.hasOwnProperty,n="function"==typeof Symbol?Symbol:{},i=n.iterator||"@@iterator",r=n.asyncIterator||"@@asyncIterator",e=n.toStringTag||"@@toStringTag";function wrap(t,n,r,e){var i=n&&n.prototype instanceof Generator?n:Generator,o=Object.create(i.prototype),u=new Context(e||[]);return o._invoke=function makeInvokeMethod(o,u,c){var a=f;return function invoke(t,n){if(a===l)throw new Error("Generator is already running");if(a===h){if("throw"===t)throw n;return doneResult()}for(c.method=t,c.arg=n;;){var r=c.delegate;if(r){var e=maybeInvokeDelegate(r,c);if(e){if(e===p)continue;return e}}if("next"===c.method)c.sent=c._sent=c.arg;else if("throw"===c.method){if(a===f)throw a=h,c.arg;c.dispatchException(c.arg)}else"return"===c.method&&c.abrupt("return",c.arg);a=l;var i=tryCatch(o,u,c);if("normal"===i.type){if(a=c.done?h:s,i.arg===p)continue;return{value:i.arg,done:c.done}}"throw"===i.type&&(a=h,c.method="throw",c.arg=i.arg)}}}(t,r,u),o}function tryCatch(t,n,r){try{return{type:"normal",arg:t.call(n,r)}}catch(t){return{type:"throw",arg:t}}}o.wrap=wrap;var f="suspendedStart",s="suspendedYield",l="executing",h="completed",p={};function Generator(){}function GeneratorFunction(){}function GeneratorFunctionPrototype(){}var u={};u[i]=function(){return this};var v=Object.getPrototypeOf,y=v&&v(v(values([])));y&&y!==t&&a.call(y,i)&&(u=y);var g=GeneratorFunctionPrototype.prototype=Generator.prototype=Object.create(u);function defineIteratorMethods(t){["next","throw","return"].forEach(function(n){t[n]=function(t){return this._invoke(n,t)}})}function AsyncIterator(c){var t;this._invoke=function enqueue(r,e){function callInvokeWithMethodAndArg(){return new Promise(function(t,n){!function invoke(t,n,r,e){var i=tryCatch(c[t],c,n);if("throw"!==i.type){var o=i.arg,u=o.value;return u&&"object"==typeof u&&a.call(u,"__await")?Promise.resolve(u.__await).then(function(t){invoke("next",t,r,e)},function(t){invoke("throw",t,r,e)}):Promise.resolve(u).then(function(t){o.value=t,r(o)},function(t){return invoke("throw",t,r,e)})}e(i.arg)}(r,e,t,n)})}return t=t?t.then(callInvokeWithMethodAndArg,callInvokeWithMethodAndArg):callInvokeWithMethodAndArg()}}function maybeInvokeDelegate(t,n){var r=t.iterator[n.method];if(r===c){if(n.delegate=null,"throw"===n.method){if(t.iterator.return&&(n.method="return",n.arg=c,maybeInvokeDelegate(t,n),"throw"===n.method))return p;n.method="throw",n.arg=new TypeError("The iterator does not provide a 'throw' method")}return p}var e=tryCatch(r,t.iterator,n.arg);if("throw"===e.type)return n.method="throw",n.arg=e.arg,n.delegate=null,p;var i=e.arg;return i?i.done?(n[t.resultName]=i.value,n.next=t.nextLoc,"return"!==n.method&&(n.method="next",n.arg=c),n.delegate=null,p):i:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,p)}function pushTryEntry(t){var n={tryLoc:t[0]};1 in t&&(n.catchLoc=t[1]),2 in t&&(n.finallyLoc=t[2],n.afterLoc=t[3]),this.tryEntries.push(n)}function resetTryEntry(t){var n=t.completion||{};n.type="normal",delete n.arg,t.completion=n}function Context(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(pushTryEntry,this),this.reset(!0)}function values(t){if(t){var n=t[i];if(n)return n.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var r=-1,e=function next(){for(;++r<t.length;)if(a.call(t,r))return next.value=t[r],next.done=!1,next;return next.value=c,next.done=!0,next};return e.next=e}}return{next:doneResult}}function doneResult(){return{value:c,done:!0}}return GeneratorFunction.prototype=g.constructor=GeneratorFunctionPrototype,GeneratorFunctionPrototype.constructor=GeneratorFunction,GeneratorFunctionPrototype[e]=GeneratorFunction.displayName="GeneratorFunction",o.isGeneratorFunction=function(t){var n="function"==typeof t&&t.constructor;return!!n&&(n===GeneratorFunction||"GeneratorFunction"===(n.displayName||n.name))},o.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,GeneratorFunctionPrototype):(t.__proto__=GeneratorFunctionPrototype,e in t||(t[e]="GeneratorFunction")),t.prototype=Object.create(g),t},o.awrap=function(t){return{__await:t}},defineIteratorMethods(AsyncIterator.prototype),AsyncIterator.prototype[r]=function(){return this},o.AsyncIterator=AsyncIterator,o.async=function(t,n,r,e){var i=new AsyncIterator(wrap(t,n,r,e));return o.isGeneratorFunction(n)?i:i.next().then(function(t){return t.done?t.value:i.next()})},defineIteratorMethods(g),g[e]="Generator",g[i]=function(){return this},g.toString=function(){return"[object Generator]"},o.keys=function(n){var r=[];for(var t in n)r.push(t);return r.reverse(),function next(){for(;r.length;){var t=r.pop();if(t in n)return next.value=t,next.done=!1,next}return next.done=!0,next}},o.values=values,Context.prototype={constructor:Context,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=c,this.done=!1,this.delegate=null,this.method="next",this.arg=c,this.tryEntries.forEach(resetTryEntry),!t)for(var n in this)"t"===n.charAt(0)&&a.call(this,n)&&!isNaN(+n.slice(1))&&(this[n]=c)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(r){if(this.done)throw r;var e=this;function handle(t,n){return i.type="throw",i.arg=r,e.next=t,n&&(e.method="next",e.arg=c),!!n}for(var t=this.tryEntries.length-1;0<=t;--t){var n=this.tryEntries[t],i=n.completion;if("root"===n.tryLoc)return handle("end");if(n.tryLoc<=this.prev){var o=a.call(n,"catchLoc"),u=a.call(n,"finallyLoc");if(o&&u){if(this.prev<n.catchLoc)return handle(n.catchLoc,!0);if(this.prev<n.finallyLoc)return handle(n.finallyLoc)}else if(o){if(this.prev<n.catchLoc)return handle(n.catchLoc,!0)}else{if(!u)throw new Error("try statement without catch or finally");if(this.prev<n.finallyLoc)return handle(n.finallyLoc)}}}},abrupt:function(t,n){for(var r=this.tryEntries.length-1;0<=r;--r){var e=this.tryEntries[r];if(e.tryLoc<=this.prev&&a.call(e,"finallyLoc")&&this.prev<e.finallyLoc){var i=e;break}}i&&("break"===t||"continue"===t)&&i.tryLoc<=n&&n<=i.finallyLoc&&(i=null);var o=i?i.completion:{};return o.type=t,o.arg=n,i?(this.method="next",this.next=i.finallyLoc,p):this.complete(o)},complete:function(t,n){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&n&&(this.next=n),p},finish:function(t){for(var n=this.tryEntries.length-1;0<=n;--n){var r=this.tryEntries[n];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),resetTryEntry(r),p}},catch:function(t){for(var n=this.tryEntries.length-1;0<=n;--n){var r=this.tryEntries[n];if(r.tryLoc===t){var e=r.completion;if("throw"===e.type){var i=e.arg;resetTryEntry(r)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(t,n,r){return this.delegate={iterator:values(t),resultName:n,nextLoc:r},"next"===this.method&&(this.arg=c),p}},o}("object"==typeof n?n.exports:{});try{regeneratorRuntime=e}catch(t){Function("r","regeneratorRuntime = r")(e)}},{}]},{},[1]);
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
!function(){"use strict";if("undefined"!=typeof window){var t=window.navigator.userAgent.match(/Edge\/(\d{2})\./),n=!!t&&16<=parseInt(t[1],10);if(!("objectFit"in document.documentElement.style!=!1)||n){var o=function(t,e,i){var n,o,l,a,d;if((i=i.split(" ")).length<2&&(i[1]=i[0]),"x"===t)n=i[0],o=i[1],l="left",a="right",d=e.clientWidth;else{if("y"!==t)return;n=i[1],o=i[0],l="top",a="bottom",d=e.clientHeight}if(n!==l&&o!==l){if(n!==a&&o!==a)return"center"===n||"50%"===n?(e.style[l]="50%",void(e.style["margin-"+l]=d/-2+"px")):void(0<=n.indexOf("%")?(n=parseInt(n))<50?(e.style[l]=n+"%",e.style["margin-"+l]=d*(n/-100)+"px"):(n=100-n,e.style[a]=n+"%",e.style["margin-"+a]=d*(n/-100)+"px"):e.style[l]=n);e.style[a]="0"}else e.style[l]="0"},l=function(t){var e=t.dataset?t.dataset.objectFit:t.getAttribute("data-object-fit"),i=t.dataset?t.dataset.objectPosition:t.getAttribute("data-object-position");e=e||"cover",i=i||"50% 50%";var n=t.parentNode;return function(t){var e=window.getComputedStyle(t,null),i=e.getPropertyValue("position"),n=e.getPropertyValue("overflow"),o=e.getPropertyValue("display");i&&"static"!==i||(t.style.position="relative"),"hidden"!==n&&(t.style.overflow="hidden"),o&&"inline"!==o||(t.style.display="block"),0===t.clientHeight&&(t.style.height="100%"),-1===t.className.indexOf("object-fit-polyfill")&&(t.className=t.className+" object-fit-polyfill")}(n),function(t){var e=window.getComputedStyle(t,null),i={"max-width":"none","max-height":"none","min-width":"0px","min-height":"0px",top:"auto",right:"auto",bottom:"auto",left:"auto","margin-top":"0px","margin-right":"0px","margin-bottom":"0px","margin-left":"0px"};for(var n in i)e.getPropertyValue(n)!==i[n]&&(t.style[n]=i[n])}(t),t.style.position="absolute",t.style.width="auto",t.style.height="auto","scale-down"===e&&(e=t.clientWidth<n.clientWidth&&t.clientHeight<n.clientHeight?"none":"contain"),"none"===e?(o("x",t,i),void o("y",t,i)):"fill"===e?(t.style.width="100%",t.style.height="100%",o("x",t,i),void o("y",t,i)):(t.style.height="100%",void("cover"===e&&t.clientWidth>n.clientWidth||"contain"===e&&t.clientWidth<n.clientWidth?(t.style.top="0",t.style.marginTop="0",o("x",t,i)):(t.style.width="100%",t.style.height="auto",t.style.left="0",t.style.marginLeft="0",o("y",t,i))))},e=function(t){if(void 0===t||t instanceof Event)t=document.querySelectorAll("[data-object-fit]");else if(t&&t.nodeName)t=[t];else{if("object"!=typeof t||!t.length||!t[0].nodeName)return!1;t=t}for(var e=0;e<t.length;e++)if(t[e].nodeName){var i=t[e].nodeName.toLowerCase();if("img"===i){if(n)continue;t[e].complete?l(t[e]):t[e].addEventListener("load",function(){l(this)})}else"video"===i?0<t[e].readyState?l(t[e]):t[e].addEventListener("loadedmetadata",function(){l(this)}):l(t[e])}return!0};"loading"===document.readyState?document.addEventListener("DOMContentLoaded",e):e(),window.addEventListener("resize",e),window.objectFitPolyfill=e}else window.objectFitPolyfill=function(){return!1}}}();
\ No newline at end of file
;(function(win, lib) {
var doc = win.document
var docEl = doc.documentElement
var metaEl = doc.querySelector('meta[name="viewport"]')
var flexibleEl = doc.querySelector('meta[name="flexible"]')
var dpr = 0
var scale = 0
var tid
var flexible = lib.flexible || (lib.flexible = {})
if (metaEl) {
var match = metaEl.getAttribute('content').match(/initial\-scale=([\d\.]+)/)
if (match) {
scale = parseFloat(match[1])
dpr = parseInt(1 / scale)
}
} else if (flexibleEl) {
var content = flexibleEl.getAttribute('content')
if (content) {
var initialDpr = content.match(/initial\-dpr=([\d\.]+)/)
var maximumDpr = content.match(/maximum\-dpr=([\d\.]+)/)
if (initialDpr) {
dpr = parseFloat(initialDpr[1])
scale = parseFloat((1 / dpr).toFixed(2))
}
if (maximumDpr) {
dpr = parseFloat(maximumDpr[1])
scale = parseFloat((1 / dpr).toFixed(2))
}
}
}
if (!dpr && !scale) {
var isIPhone = win.navigator.appVersion.match(/iphone/gi)
var devicePixelRatio = win.devicePixelRatio
if (isIPhone) {
// iOS下,对于2和3的屏,用2倍的方案,其余的用1倍方案
if (devicePixelRatio >= 3 && (!dpr || dpr >= 3)) {
dpr = 3
} else if (devicePixelRatio >= 2 && (!dpr || dpr >= 2)) {
dpr = 2
} else {
dpr = 1
}
} else {
// 其他设备下,仍旧使用1倍的方案
dpr = 1
}
scale = 1 / dpr
}
docEl.setAttribute('data-dpr', dpr)
if (!metaEl) {
metaEl = doc.createElement('meta')
metaEl.setAttribute('name', 'viewport')
metaEl.setAttribute(
'content',
'initial-scale=' +
scale +
', maximum-scale=' +
scale +
', minimum-scale=' +
scale +
', user-scalable=no'
)
if (docEl.firstElementChild) {
docEl.firstElementChild.appendChild(metaEl)
} else {
var wrap = doc.createElement('div')
wrap.appendChild(metaEl)
doc.write(wrap.innerHTML)
}
}
function refreshRem() {
var width = docEl.getBoundingClientRect().width
if (width / dpr > 540) {
width = 540 * dpr
}
var rem = width / 10
docEl.style.fontSize = rem + 'px'
flexible.rem = win.rem = rem
}
win.addEventListener(
'resize',
function() {
clearTimeout(tid)
tid = setTimeout(refreshRem, 300)
},
false
)
win.addEventListener(
'pageshow',
function(e) {
if (e.persisted) {
clearTimeout(tid)
tid = setTimeout(refreshRem, 300)
}
},
false
)
if (doc.readyState === 'complete') {
doc.body.style.fontSize = 12 * dpr + 'px'
} else {
doc.addEventListener(
'DOMContentLoaded',
function(e) {
doc.body.style.fontSize = 12 * dpr + 'px'
},
false
)
}
refreshRem()
flexible.dpr = win.dpr = dpr
flexible.refreshRem = refreshRem
flexible.rem2px = function(d) {
var val = parseFloat(d) * this.rem
if (typeof d === 'string' && d.match(/rem$/)) {
val += 'px'
}
return val
}
flexible.px2rem = function(d) {
var val = parseFloat(d) / this.rem
if (typeof d === 'string' && d.match(/px$/)) {
val += 'rem'
}
return val
}
})(window, window.lib || (window.lib = {}))
\ No newline at end of file
!function(a){"use strict";a.matchMedia=a.matchMedia||function(a){var b,c=a.documentElement,d=c.firstElementChild||c.firstChild,e=a.createElement("body"),f=a.createElement("div");return f.id="mq-test-1",f.style.cssText="position:absolute;top:-100em",e.style.background="none",e.appendChild(f),function(a){return f.innerHTML='&shy;<style media="'+a+'"> #mq-test-1 { width: 42px; }</style>',c.insertBefore(e,d),b=42===f.offsetWidth,c.removeChild(e),{matches:b,media:a}}}(a.document)}(this),function(a){"use strict";if(a.matchMedia&&a.matchMedia("all").addListener)return!1;var b=a.matchMedia,c=b("only all").matches,d=!1,e=0,f=[],g=function(){a.clearTimeout(e),e=a.setTimeout(function(){for(var c=0,d=f.length;d>c;c++){var e=f[c].mql,g=f[c].listeners||[],h=b(e.media).matches;if(h!==e.matches){e.matches=h;for(var i=0,j=g.length;j>i;i++)g[i].call(a,e)}}},30)};a.matchMedia=function(e){var h=b(e),i=[],j=0;return h.addListener=function(b){c&&(d||(d=!0,a.addEventListener("resize",g,!0)),0===j&&(j=f.push({mql:h,listeners:i})),i.push(b))},h.removeListener=function(a){for(var b=0,c=i.length;c>b;b++)i[b]===a&&i.splice(b,1)},h}}(this),function(a){"use strict";function b(){v(!0)}var c={};a.respond=c,c.update=function(){};var d=[],e=function(){var b=!1;try{b=new a.XMLHttpRequest}catch(c){b=new a.ActiveXObject("Microsoft.XMLHTTP")}return function(){return b}}(),f=function(a,b){var c=e();c&&(c.open("GET",a,!0),c.onreadystatechange=function(){4!==c.readyState||200!==c.status&&304!==c.status||b(c.responseText)},4!==c.readyState&&c.send(null))},g=function(a){return a.replace(c.regex.minmaxwh,"").match(c.regex.other)};if(c.ajax=f,c.queue=d,c.unsupportedmq=g,c.regex={media:/@media[^\{]+\{([^\{\}]*\{[^\}\{]*\})+/gi,keyframes:/@(?:\-(?:o|moz|webkit)\-)?keyframes[^\{]+\{(?:[^\{\}]*\{[^\}\{]*\})+[^\}]*\}/gi,comments:/\/\*[^*]*\*+([^/][^*]*\*+)*\//gi,urls:/(url\()['"]?([^\/\)'"][^:\)'"]+)['"]?(\))/g,findStyles:/@media *([^\{]+)\{([\S\s]+?)$/,only:/(only\s+)?([a-zA-Z]+)\s?/,minw:/\(\s*min\-width\s*:\s*(\s*[0-9\.]+)(px|em)\s*\)/,maxw:/\(\s*max\-width\s*:\s*(\s*[0-9\.]+)(px|em)\s*\)/,minmaxwh:/\(\s*m(in|ax)\-(height|width)\s*:\s*(\s*[0-9\.]+)(px|em)\s*\)/gi,other:/\([^\)]*\)/g},c.mediaQueriesSupported=a.matchMedia&&null!==a.matchMedia("only all")&&a.matchMedia("only all").matches,!c.mediaQueriesSupported){var h,i,j,k=a.document,l=k.documentElement,m=[],n=[],o=[],p={},q=30,r=k.getElementsByTagName("head")[0]||l,s=k.getElementsByTagName("base")[0],t=r.getElementsByTagName("link"),u=function(){var a,b=k.createElement("div"),c=k.body,d=l.style.fontSize,e=c&&c.style.fontSize,f=!1;return b.style.cssText="position:absolute;font-size:1em;width:1em",c||(c=f=k.createElement("body"),c.style.background="none"),l.style.fontSize="100%",c.style.fontSize="100%",c.appendChild(b),f&&l.insertBefore(c,l.firstChild),a=b.offsetWidth,f?l.removeChild(c):c.removeChild(b),l.style.fontSize=d,e&&(c.style.fontSize=e),a=j=parseFloat(a)},v=function(b){var c="clientWidth",d=l[c],e="CSS1Compat"===k.compatMode&&d||k.body[c]||d,f={},g=t[t.length-1],p=(new Date).getTime();if(b&&h&&q>p-h)return a.clearTimeout(i),i=a.setTimeout(v,q),void 0;h=p;for(var s in m)if(m.hasOwnProperty(s)){var w=m[s],x=w.minw,y=w.maxw,z=null===x,A=null===y,B="em";x&&(x=parseFloat(x)*(x.indexOf(B)>-1?j||u():1)),y&&(y=parseFloat(y)*(y.indexOf(B)>-1?j||u():1)),w.hasquery&&(z&&A||!(z||e>=x)||!(A||y>=e))||(f[w.media]||(f[w.media]=[]),f[w.media].push(n[w.rules]))}for(var C in o)o.hasOwnProperty(C)&&o[C]&&o[C].parentNode===r&&r.removeChild(o[C]);o.length=0;for(var D in f)if(f.hasOwnProperty(D)){var E=k.createElement("style"),F=f[D].join("\n");E.type="text/css",E.media=D,r.insertBefore(E,g.nextSibling),E.styleSheet?E.styleSheet.cssText=F:E.appendChild(k.createTextNode(F)),o.push(E)}},w=function(a,b,d){var e=a.replace(c.regex.comments,"").replace(c.regex.keyframes,"").match(c.regex.media),f=e&&e.length||0;b=b.substring(0,b.lastIndexOf("/"));var h=function(a){return a.replace(c.regex.urls,"$1"+b+"$2$3")},i=!f&&d;b.length&&(b+="/"),i&&(f=1);for(var j=0;f>j;j++){var k,l,o,p;i?(k=d,n.push(h(a))):(k=e[j].match(c.regex.findStyles)&&RegExp.$1,n.push(RegExp.$2&&h(RegExp.$2))),o=k.split(","),p=o.length;for(var q=0;p>q;q++)l=o[q],g(l)||m.push({media:l.split("(")[0].match(c.regex.only)&&RegExp.$2||"all",rules:n.length-1,hasquery:l.indexOf("(")>-1,minw:l.match(c.regex.minw)&&parseFloat(RegExp.$1)+(RegExp.$2||""),maxw:l.match(c.regex.maxw)&&parseFloat(RegExp.$1)+(RegExp.$2||"")})}v()},x=function(){if(d.length){var b=d.shift();f(b.href,function(c){w(c,b.href,b.media),p[b.href]=!0,a.setTimeout(function(){x()},0)})}},y=function(){for(var b=0;b<t.length;b++){var c=t[b],e=c.href,f=c.media,g=c.rel&&"stylesheet"===c.rel.toLowerCase();e&&g&&!p[e]&&(c.styleSheet&&c.styleSheet.rawCssText?(w(c.styleSheet.rawCssText,e,f),p[e]=!0):(!/^([a-zA-Z:]*\/\/)/.test(e)&&!s||e.replace(RegExp.$1,"").split("/")[0]===a.location.host)&&("//"===e.substring(0,2)&&(e=a.location.protocol+e),d.push({href:e,media:f})))}x()};y(),c.update=y,c.getEmValue=u,a.addEventListener?a.addEventListener("resize",b,!1):a.attachEvent&&a.attachEvent("onresize",b)}}(this);
\ No newline at end of file
!function(a){"use strict";a.matchMedia=a.matchMedia||function(a){var b,c=a.documentElement,d=c.firstElementChild||c.firstChild,e=a.createElement("body"),f=a.createElement("div");return f.id="mq-test-1",f.style.cssText="position:absolute;top:-100em",e.style.background="none",e.appendChild(f),function(a){return f.innerHTML='&shy;<style media="'+a+'"> #mq-test-1 { width: 42px; }</style>',c.insertBefore(e,d),b=42===f.offsetWidth,c.removeChild(e),{matches:b,media:a}}}(a.document)}(this),function(a){"use strict";function b(){v(!0)}var c={};a.respond=c,c.update=function(){};var d=[],e=function(){var b=!1;try{b=new a.XMLHttpRequest}catch(c){b=new a.ActiveXObject("Microsoft.XMLHTTP")}return function(){return b}}(),f=function(a,b){var c=e();c&&(c.open("GET",a,!0),c.onreadystatechange=function(){4!==c.readyState||200!==c.status&&304!==c.status||b(c.responseText)},4!==c.readyState&&c.send(null))},g=function(a){return a.replace(c.regex.minmaxwh,"").match(c.regex.other)};if(c.ajax=f,c.queue=d,c.unsupportedmq=g,c.regex={media:/@media[^\{]+\{([^\{\}]*\{[^\}\{]*\})+/gi,keyframes:/@(?:\-(?:o|moz|webkit)\-)?keyframes[^\{]+\{(?:[^\{\}]*\{[^\}\{]*\})+[^\}]*\}/gi,comments:/\/\*[^*]*\*+([^/][^*]*\*+)*\//gi,urls:/(url\()['"]?([^\/\)'"][^:\)'"]+)['"]?(\))/g,findStyles:/@media *([^\{]+)\{([\S\s]+?)$/,only:/(only\s+)?([a-zA-Z]+)\s?/,minw:/\(\s*min\-width\s*:\s*(\s*[0-9\.]+)(px|em)\s*\)/,maxw:/\(\s*max\-width\s*:\s*(\s*[0-9\.]+)(px|em)\s*\)/,minmaxwh:/\(\s*m(in|ax)\-(height|width)\s*:\s*(\s*[0-9\.]+)(px|em)\s*\)/gi,other:/\([^\)]*\)/g},c.mediaQueriesSupported=a.matchMedia&&null!==a.matchMedia("only all")&&a.matchMedia("only all").matches,!c.mediaQueriesSupported){var h,i,j,k=a.document,l=k.documentElement,m=[],n=[],o=[],p={},q=30,r=k.getElementsByTagName("head")[0]||l,s=k.getElementsByTagName("base")[0],t=r.getElementsByTagName("link"),u=function(){var a,b=k.createElement("div"),c=k.body,d=l.style.fontSize,e=c&&c.style.fontSize,f=!1;return b.style.cssText="position:absolute;font-size:1em;width:1em",c||(c=f=k.createElement("body"),c.style.background="none"),l.style.fontSize="100%",c.style.fontSize="100%",c.appendChild(b),f&&l.insertBefore(c,l.firstChild),a=b.offsetWidth,f?l.removeChild(c):c.removeChild(b),l.style.fontSize=d,e&&(c.style.fontSize=e),a=j=parseFloat(a)},v=function(b){var c="clientWidth",d=l[c],e="CSS1Compat"===k.compatMode&&d||k.body[c]||d,f={},g=t[t.length-1],p=(new Date).getTime();if(b&&h&&q>p-h)return a.clearTimeout(i),i=a.setTimeout(v,q),void 0;h=p;for(var s in m)if(m.hasOwnProperty(s)){var w=m[s],x=w.minw,y=w.maxw,z=null===x,A=null===y,B="em";x&&(x=parseFloat(x)*(x.indexOf(B)>-1?j||u():1)),y&&(y=parseFloat(y)*(y.indexOf(B)>-1?j||u():1)),w.hasquery&&(z&&A||!(z||e>=x)||!(A||y>=e))||(f[w.media]||(f[w.media]=[]),f[w.media].push(n[w.rules]))}for(var C in o)o.hasOwnProperty(C)&&o[C]&&o[C].parentNode===r&&r.removeChild(o[C]);o.length=0;for(var D in f)if(f.hasOwnProperty(D)){var E=k.createElement("style"),F=f[D].join("\n");E.type="text/css",E.media=D,r.insertBefore(E,g.nextSibling),E.styleSheet?E.styleSheet.cssText=F:E.appendChild(k.createTextNode(F)),o.push(E)}},w=function(a,b,d){var e=a.replace(c.regex.comments,"").replace(c.regex.keyframes,"").match(c.regex.media),f=e&&e.length||0;b=b.substring(0,b.lastIndexOf("/"));var h=function(a){return a.replace(c.regex.urls,"$1"+b+"$2$3")},i=!f&&d;b.length&&(b+="/"),i&&(f=1);for(var j=0;f>j;j++){var k,l,o,p;i?(k=d,n.push(h(a))):(k=e[j].match(c.regex.findStyles)&&RegExp.$1,n.push(RegExp.$2&&h(RegExp.$2))),o=k.split(","),p=o.length;for(var q=0;p>q;q++)l=o[q],g(l)||m.push({media:l.split("(")[0].match(c.regex.only)&&RegExp.$2||"all",rules:n.length-1,hasquery:l.indexOf("(")>-1,minw:l.match(c.regex.minw)&&parseFloat(RegExp.$1)+(RegExp.$2||""),maxw:l.match(c.regex.maxw)&&parseFloat(RegExp.$1)+(RegExp.$2||"")})}v()},x=function(){if(d.length){var b=d.shift();f(b.href,function(c){w(c,b.href,b.media),p[b.href]=!0,a.setTimeout(function(){x()},0)})}},y=function(){for(var b=0;b<t.length;b++){var c=t[b],e=c.href,f=c.media,g=c.rel&&"stylesheet"===c.rel.toLowerCase();e&&g&&!p[e]&&(c.styleSheet&&c.styleSheet.rawCssText?(w(c.styleSheet.rawCssText,e,f),p[e]=!0):(!/^([a-zA-Z:]*\/\/)/.test(e)&&!s||e.replace(RegExp.$1,"").split("/")[0]===a.location.host)&&("//"===e.substring(0,2)&&(e=a.location.protocol+e),d.push({href:e,media:f})))}x()};y(),c.update=y,c.getEmValue=u,a.addEventListener?a.addEventListener("resize",b,!1):a.attachEvent&&a.attachEvent("onresize",b)}}(this);
\ No newline at end of file
if (!history.replaceState) {
history.replaceState = function() {}
}
if (!history.pushState) {
history.pushState = function() {}
}
const yaml = require('js-yaml');
const fs = require('fs');
const path = "./content/news/"
var articles = []
fs.readdirSync(path).forEach(files=>{
// console.log(files);
try {
const doc = yaml.loadAll(fs.readFileSync(path + files, 'utf8'));
articles.push(doc[0])
} catch (e) {
console.log(e);
}
})
articles.sort((a, b) => {
ta = new Date(a.createDate)
tb = new Date(b.createDate)
return tb.getTime() - ta.getTime()
})
try {
let str = yaml.dump(articles, "./content/newsList.md")
str = `---
news:
${str}
---`
fs.writeFile('./content/newsList.md', str, function (error) {
if (error) {
console.log('写入失败')
} else {
console.log('写入成功了')
}
})
} catch(e) {
console.log(e)
}
\ No newline at end of file
if test -z "`git status | grep 'nothing to commit, working tree clean'`"
then
git stash
git checkout master
git pull -r
git stash pop
git add -A
echo 'added'
git commit -am '自动文章合并|自动图片压缩'
echo 'commited'
git push git@git.gaorongvc.cn:lq/ficus.git
exit 1
fi
\ No newline at end of file
function gen(val) {
let name
let hasEn
if (val instanceof Array) {
name = val[0]
hasEn = true
} else {
name = val
}
convertName = name
.split(' ')
.map((val, idx) => {
if (idx > 0) {
return val[0].toUpperCase() + val.slice(1)
}
return val
})
.join('')
console.log(`- { label: "${name}", name: "${convertName}", widget: "string"}`)
if (hasEn) {
console.log(
`- { label: "${name}EN", name: "${convertName}EN", widget: "string"}`
)
}
}
function gencode(val) {
if (val instanceof Array) {
console.log(val[0] + ',')
console.log(val[0] + 'EN,')
} else {
console.log(val + ',')
}
}
[['name'], ['role'], ['saying'],['summary'], ['hiddenSummary1'], ['hiddenSummary2'],'portrait', ['knowMore'], ['cultureTitle'], ['culture'],['cultureSummary'], ['valueTitle'],['value']].map(gen)
// [['birth'], ['title2'], ['subTitle2'],['philosophy'],['title3'], ['subTitle3'], ['recognition'],['source'],['award']].map(gen)
//foot:[['email'],'emailStr' ['phone'], 'phoneStr', ['fax'], 'faxStr' ['wechat'], ['beijing'], ['shanghai'], ['shenzhen'], ['xianggang'],['beijingloc'], ['shanghailoc'], ['shenzhenloc'], ['xianggangloc'],'wechatimg'].map(gen)
// ;[
// ['team summary title'],
// ['team summary text'],
// ['team summary entry'],
// ['news summary title'],
// ['new summary entry'],
// ['ronghui summary title'],
// ['ronghui summary text'],
// ['ronghui sumnmary entry']
// ].map(gen)
export const yymmdd = (date) => [
date.getFullYear(),
date.getMonth() + 1 < 10 ? `0${date.getMonth() + 1}` : date.getMonth() + 1,
date.getDate() < 10 ? `0${date.getDate()}` : date.getDate()
]
export const daySince = (dateStr) => {
const date1 = new Date()
const date2 = new Date(dateStr)
const date = (date1.getTime() - date2.getTime()) / (24 * 60 * 60 * 1000)
return parseInt(date)
}
#/bin/bash
imgpath=''
#判断图片路径是否为空
# if [ -z "$imgpath" ]
# then
# imgpath=$1
# fi
# if [ -z "$imgpath" ]
# then
# echo 'The image path cannot be empty!'
# exit
# fi
function com_img(){
find $1 -mmin -60 -size +$2 -name '*.png' -exec optipng -o3 {} \;
find $1 -mmin -60 -size +$2 -name '*.bmp' -exec optipng -o3 {} \;
find $1 -mmin -60 -size +$2 -name '*.jpg' -exec jpegoptim -m 60 {} \;
find $1 -mmin -60 -size +$2 -name '*.jpeg' -exec jpegoptim -m 60 {} \;
find $1 -mmin -60 -size +$2 -name 'abstract*.png' -exec optipng -o5 {} \;
find $1 -mmin -60 -size +$2 -name 'abstract*.bmp' -exec optipng -o5 {} \;
find $1 -mmin -60 -size +$2 -name 'abstract*.jpg' -exec jpegoptim -m 50 {} \;
find $1 -mmin -60 -size +$2 -name 'abstract*.jpeg' -exec jpegoptim -m 50 {} \;
}
# function com_img_abstract(){
# find $1 -mmin -60 -size +$2 -name 'abstract*.png' -exec optipng -o5 {} \;
# find $1 -mmin -60 -size +$2 -name 'abstract*.bmp' -exec optipng -o5 {} \;
# find $1 -mmin -60 -size +$2 -name 'abstract*.jpg' -exec jpegoptim -m 50 {} \;
# find $1 -mmin -60 -size +$2 -name 'abstract*.jpeg' -exec jpegoptim -m 50 {} \;
# }
# com_img $imgpath $min_size
# com_img_abstract $imgpath $min_size
export -f com_img
function compress(){
echo $1
com_img $1 '400k'
}
export -f compress
echo "`git diff --name-status HEAD~20 HEAD`" | grep ^A | grep -E "png|jpg|jpeg$" | awk '{for(i=2;i<=NF;++i) printf $i ;printf "\n"}' | xargs -I {} bash -c "compress {}"
# if test -z "`git status | grep 'nothing to commit, working tree clean'`"
# then
# git stash
# git checkout master
# git pull -r
# git stash pop
# git add -A
# echo 'added'
# git commit -am 'auto compress image'
# echo 'commited'
# git push git@git.gaorongvc.cn:lq/official.git
# fi
\ No newline at end of file
#/bin/bash
imgpath=''
min_size='10k'
#判断图片路径是否为空
if [ -z "$imgpath" ]
then
imgpath=$1
fi
if [ -z "$imgpath" ]
then
echo 'The image path cannot be empty!'
exit
fi
function com_img(){
find $1 -mmin -60 -size +$2 -name '*.png' -exec optipng -o3 {} \;
find $1 -mmin -60 -size +$2 -name '*.bmp' -exec optipng -o3 {} \;
find $1 -mmin -60 -size +$2 -name '*.jpg' -exec jpegoptim -m 80 {} \;
find $1 -mmin -60 -size +$2 -name '*.jpeg' -exec jpegoptim -m 80 {} \;
}
function com_img_abstract(){
find $1 -mmin -60 -size +$2 -name 'abstract*.png' -exec optipng -o5 {} \;
find $1 -mmin -60 -size +$2 -name 'abstract*.bmp' -exec optipng -o5 {} \;
find $1 -mmin -60 -size +$2 -name 'abstract*.jpg' -exec jpegoptim -m 70 {} \;
find $1 -mmin -60 -size +$2 -name 'abstract*.jpeg' -exec jpegoptim -m 70 {} \;
}
com_img $imgpath $min_size
com_img_abstract $imgpath $min_size
\ No newline at end of file
function isOverflow(el) {
const curOverflow = el.style.overflow
if (!curOverflow || curOverflow === 'visible') {
el.style.overflow = 'hidden'
}
const isOverflowing =
el.clientWidth < el.scrollWidth || el.clientHeight < el.scrollHeight
el.style.overflow = curOverflow
return isOverflowing
}
export default isOverflow
const PHONE = 0
const PHONEROTATE = 1
const PAD = 2
const PC = 3
export default function mediaQueryType(width) {
if (width < 595) {
return PHONE
} else if (width < 806) {
return PHONEROTATE
} else if (width < 1440) {
return PAD
} else {
return PC
}
}
const yaml = require('js-yaml');
const fs = require('fs');
const doc = yaml.loadAll(fs.readFileSync('../content/portfolioPage.md', 'utf8'));
// console.log(doc)
console.log(doc[0].portfolio)
portfolio=doc[0].portfolio
portfolioEN = portfolio.map(item => {
return {
logo:item.logo,
logo2:item.logo2,
sinceDate:item.sinceDate,
nameEN:item.nameEN,
type:item.type,
website:item.website,
descriptionEN:item.descriptionEN,
}
})
// const portfolio = {
try {
let str = yaml.dump(portfolioEN)
str = `---
portfolioEN:
${str}
---`
fs.writeFile('../content/portfolioEN.md', str, function (error) {
if (error) {
console.log('写入失败')
} else {
console.log('写入成功了')
}
})
} catch(e) {
console.log(e)
}
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment