From e0931d627475c4467cea6c816bf4846a0b534316 Mon Sep 17 00:00:00 2001
From: lixia.zhang <yoho@lixiazhangdeiMac.local>
Date: Thu, 17 May 2018 11:15:25 +0800
Subject: [PATCH] 更改成能正常运行代码,0.44的很多不支持的语法进行了修改

---
 .flowconfig                                                          |   27 +++++++++++++++++++--------
 .gitignore                                                           |   23 ++++++++++++++++-------
 android/app/build.gradle                                             |   11 +++++++++++
 android/app/src/main/AndroidManifest.xml                             |    9 ++-------
 android/app/src/main/java/com/yh_rncomponent/MainApplication.java    |    5 +++++
 ios/YH_RNComponent.xcodeproj/project.pbxproj                         |  386 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-----
 ios/YH_RNComponent/AppDelegate.m                                     |   26 +-------------------------
 ios/YH_RNComponent/Images.xcassets/Contents.json                     |    6 ++++++
 js/associatorGift/AssociatorGift.js                                  |    3 ++-
 js/associatorGift/store/configureStore.js                            |    2 +-
 js/blk/BLK.js                                                        |    3 ++-
 js/blk/store/configureStore.js                                       |    2 +-
 js/brandStore/BrandStore.js                                          |    3 ++-
 js/brandStore/components/brandStore/BrandStore.js                    |    2 +-
 js/brandStore/store/configureStore.js                                |    2 +-
 js/classify/Classify.js                                              |    3 ++-
 js/classify/store/configureStore.js                                  |    2 +-
 js/common/PTR/YH_RefreshingIndicator.js                              |    2 +-
 js/common/PTR/lib/ControlledRefreshableListView.js                   |    8 ++++----
 js/common/PTR/lib/RefreshableListView.js                             |    7 +++----
 js/common/PTR/lib/RefreshingIndicator.js                             |    5 +++--
 js/common/components/Banner.js                                       |   13 +++++++------
 js/common/components/ImagesAsGif.js                                  |    5 +++--
 js/common/components/LoadMoreIndicator.js                            |    7 ++++---
 js/common/components/LoadingIndicator.js                             |   19 ++++++++++---------
 js/common/components/Prompt.js                                       |   19 ++++++++++---------
 js/common/components/Toast.js                                        |   19 ++++++++++---------
 js/common/components/YH_SearchBar.js                                 |    2 +-
 js/common/components/YH_ViewPager.android.js                         |   11 ++++++-----
 js/common/components/customComponents/TouchableHighlight.js.bak      |    2 +-
 js/common/components/customComponents/TouchableOpacity.js.bak        |    2 +-
 js/common/components/customComponents/android_0.35/ScrollView.js.bak |    2 +-
 js/common/react-native-scrollable-tab-view/DefaultTabBar.js          |   22 ++++++++++++----------
 js/common/react-native-scrollable-tab-view/ScrollableTabBar.js       |   24 +++++++++++++-----------
 js/common/react-native-scrollable-tab-view/index.js                  |    5 +++--
 js/common/recycler-swiper/src/index.js                               |    3 ++-
 js/community/Community.js                                            |    3 ++-
 js/community/components/home/Banner.js                               |   13 +++++++------
 js/community/components/home/Home.js                                 |  113 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------------------------------------------------------
 js/community/components/home/ListCell.js                             |   43 ++++++++++++++++++++++---------------------
 js/community/components/home/Notice.js                               |   13 +++++++------
 js/community/components/home/NumberButton.js                         |    5 +++--
 js/community/components/home/SectionItem.js                          |    5 +++--
 js/community/components/home/SuperMan.js                             |    9 +++++----
 js/community/components/home/Thumbs.js                               |    7 ++++---
 js/community/components/home/UploadProgress.js                       |   13 +++++++------
 js/community/components/home/UserBrief.js                            |   11 ++++++-----
 js/community/components/home/YH_SectionView.js                       |   41 +++++++++++++++++++++--------------------
 js/community/components/message/LikeCell.js                          |   21 +++++++++++----------
 js/community/components/message/LittleRedDotImage.js                 |    7 ++++---
 js/community/components/message/MessageCenter.js                     |   43 ++++++++++++++++++++++---------------------
 js/community/components/message/MsgCenterCatgoryCell.js              |    9 +++++----
 js/community/components/message/MsgCenterNormalCell.js               |   25 +++++++++++++------------
 js/community/components/message/SysMsgCell.js                        |   25 +++++++++++++------------
 js/community/components/message/SystemMessage.js                     |   23 ++++++++++++-----------
 js/community/components/posting/AssertsPicker.js                     |    7 ++++---
 js/community/components/posting/PostingToolBar.js                    |   11 ++++++-----
 js/community/components/posting/SectionSelector.js                   |   15 ++++++++-------
 js/community/components/section/Section.js                           |  103 ++++++++++++++++++++++++++++++++++++++++++++++++++++---------------------------------------------------
 js/community/components/section/SectionHeader.js                     |   13 +++++++------
 js/community/components/section/SectionList.js                       |   31 ++++++++++++++++---------------
 js/community/components/section/SectionTabBar.js                     |   19 ++++++++++---------
 js/community/components/subjectPost/SPLikeCell.js                    |   17 +++++++++--------
 js/community/components/user/CommunityList.js                        |   31 ++++++++++++++++---------------
 js/community/components/user/EmptyListTip.js                         |    3 ++-
 js/community/components/user/MessageIcon.js                          |    5 +++--
 js/community/components/user/ReplyCell.js                            |   37 +++++++++++++++++++------------------
 js/community/components/user/User.js                                 |  115 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------------------------------------------------------
 js/community/components/user/UserCenterTop.js                        |   13 +++++++------
 js/community/components/userThatNotMe/UserThatNotMe.js               |   51 ++++++++++++++++++++++++++-------------------------
 js/community/store/configureStore.js                                 |    2 +-
 js/coupon/Coupon.js                                                  |    3 ++-
 js/coupon/components/common/BannerView.js                            |   45 ---------------------------------------------
 js/coupon/components/common/Button.js                                |   15 ++++++++-------
 js/coupon/components/coupon/Prompt.js                                |   19 ++++++++++---------
 js/coupon/store/configureStore.js                                    |    2 +-
 js/globalHome/GlobalHome.js                                          |    4 ++--
 js/globalHome/store/configureStore.js                                |    2 +-
 js/goodGoodsRecommend/GoodGoodsRecommend.js                          |    3 ++-
 js/goodGoodsRecommend/components/detail/GoodGoodsImagesView.js       |    7 +++----
 js/goodGoodsRecommend/store/configureStore.js                        |    2 +-
 js/guang/Guang.js                                                    |    3 ++-
 js/guang/store/configureStore.js                                     |    2 +-
 js/home/Home.js                                                      |    3 ++-
 js/home/store/configureStore.js                                      |    2 +-
 js/installment/Installment.js                                        |    3 ++-
 js/installment/store/configureStore.js                               |    2 +-
 js/message/Message.js                                                |    3 ++-
 js/message/store/configureStore.js                                   |    2 +-
 js/mine/Mine.js                                                      |    3 ++-
 js/mine/store/configureStore.js                                      |    2 +-
 js/mineGuang/MineGuang.js                                            |    3 ++-
 js/mineGuang/store/configureStore.js                                 |    2 +-
 js/myAssets/MyAssets.js                                              |    3 ++-
 js/myAssets/store/configureStore.js                                  |    2 +-
 js/newArrival/NewArrival.js                                          |    3 ++-
 js/newArrival/components/newArrival/BannerCell.js                    |    9 +++++----
 js/newArrival/components/newArrival/FeaturedView.js                  |    9 ++++-----
 js/newArrival/store/configureStore.js                                |    2 +-
 js/order/Order.js                                                    |    3 ++-
 js/order/store/configureStore.js                                     |    2 +-
 js/outlet/Outlet.js                                                  |    3 ++-
 js/outlet/components/outlet/OutletSrollableBar.js                    |   24 +++++++++++++-----------
 js/outlet/store/configureStore.js                                    |    2 +-
 js/personalInfo/PersonalInfo.js                                      |    3 ++-
 js/personalInfo/store/configureStore.js                              |    2 +-
 js/plustar/Plustar.js                                                |    3 ++-
 js/plustar/components/common/BannerView.js                           |   16 +++++++---------
 js/plustar/components/common/Button.js                               |   15 ++++++++-------
 js/plustar/components/plustar/Banner.js                              |   13 +++++++------
 js/plustar/components/plustar/PlustarList.js                         |   19 ++++++++++---------
 js/plustar/components/plustar/PlustarSegment.js                      |   13 +++++++------
 js/plustar/store/configureStore.js                                   |    2 +-
 js/productList/ProductList.js                                        |    3 ++-
 js/productList/store/configureStore.js                               |    2 +-
 js/qrcode/QRCode.js                                                  |    3 ++-
 js/qrcode/components/common/BannerView.js                            |   45 ---------------------------------------------
 js/qrcode/components/common/Button.js                                |   15 ++++++++-------
 js/qrcode/components/qrcode/QRCode.js                                |   52 ++++++++++++++++++++++++++--------------------------
 js/qrcode/store/configureStore.js                                    |    2 +-
 js/recorder/Recorder.js                                              |    3 ++-
 js/recorder/components/product/SwipeListView.js                      |    2 +-
 js/recorder/components/product/SwipeRow.js                           |    2 +-
 js/recorder/store/configureStore.js                                  |    2 +-
 js/redPersonBrand/RedPersonBrand.js                                  |    3 ++-
 js/redPersonBrand/store/configureStore.js                            |    2 +-
 js/sale/Sale.js                                                      |    3 ++-
 js/sale/store/configureStore.js                                      |    2 +-
 js/search/Search.js                                                  |    3 ++-
 js/search/components/common/BannerView.js                            |   45 ---------------------------------------------
 js/search/components/common/Button.js                                |   15 ++++++++-------
 js/search/store/configureStore.js                                    |    2 +-
 js/seckill/Seckill.js                                                |    3 ++-
 js/seckill/store/configureStore.js                                   |    2 +-
 js/setting/Setting.js                                                |    3 ++-
 js/setting/store/configureStore.js                                   |    2 +-
 js/studentCertification/StudentCertification.js                      |    3 ++-
 js/studentCertification/components/common/BannerView.js              |   45 ---------------------------------------------
 js/studentCertification/components/common/Button.js                  |   15 ++++++++-------
 js/studentCertification/store/configureStore.js                      |    2 +-
 js/userLogout/UserLogout.js                                          |    3 ++-
 js/userLogout/components/common/YH_Image.js                          |  109 -------------------------------------------------------------------------------------------------------------
 js/userLogout/components/userLogout/UserLogout.js                    |    2 +-
 js/userLogout/store/configureStore.js                                |    2 +-
 js/vip/Vip.js                                                        |    3 ++-
 js/vip/store/configureStore.js                                       |    2 +-
 package-lock.json                                                    | 9273 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 package.json                                                         |   71 +++++++++++++++++++++++++++++++++++++++++++----------------------------
 148 files changed, 10546 insertions(+), 1074 deletions(-)
 create mode 100644 ios/YH_RNComponent/Images.xcassets/Contents.json
 delete mode 100644 js/coupon/components/common/BannerView.js
 delete mode 100644 js/qrcode/components/common/BannerView.js
 delete mode 100644 js/search/components/common/BannerView.js
 delete mode 100644 js/studentCertification/components/common/BannerView.js
 delete mode 100644 js/userLogout/components/common/YH_Image.js
 create mode 100644 package-lock.json

diff --git a/.flowconfig b/.flowconfig
index 4bea710..a1a1dd8 100644
--- a/.flowconfig
+++ b/.flowconfig
@@ -24,12 +24,18 @@
 .*/Libraries/react-native/ReactNative.js
 .*/node_modules/jest-runtime/build/__tests__/.*
 
+; Ignore polyfills
+.*/Libraries/polyfills/.*
+
+; Ignore metro
+.*/node_modules/metro/.*
+
 [include]
 
 [libs]
 node_modules/react-native/Libraries/react-native/react-native-interface.js
-node_modules/react-native/flow
-flow/
+node_modules/react-native/flow/
+node_modules/react-native/flow-github/
 
 [options]
 module.system=haste
@@ -44,15 +50,20 @@ munge_underscores=true
 module.name_mapper='^image![a-zA-Z0-9$_-]+$' -> 'GlobalImageStub'
 module.name_mapper='^[./a-zA-Z0-9$_-]+\.\(bmp\|gif\|jpg\|jpeg\|png\|psd\|svg\|webp\|m4v\|mov\|mp4\|mpeg\|mpg\|webm\|aac\|aiff\|caf\|m4a\|mp3\|wav\|html\|pdf\)$' -> 'RelativeImageStub'
 
+module.file_ext=.js
+module.file_ext=.jsx
+module.file_ext=.json
+module.file_ext=.native.js
+
 suppress_type=$FlowIssue
 suppress_type=$FlowFixMe
-suppress_type=$FixMe
+suppress_type=$FlowFixMeProps
+suppress_type=$FlowFixMeState
 
-suppress_comment=\\(.\\|\n\\)*\\$FlowFixMe\\($\\|[^(]\\|(\\(>=0\\.\\(30\\|[1-2][0-9]\\|[0-9]\\).[0-9]\\)? *\\(site=[a-z,_]*react_native[a-z,_]*\\)?)\\)
-suppress_comment=\\(.\\|\n\\)*\\$FlowIssue\\((\\(>=0\\.\\(30\\|1[0-9]\\|[1-2][0-9]\\).[0-9]\\)? *\\(site=[a-z,_]*react_native[a-z,_]*\\)?)\\)?:? #[0-9]+
-suppress_comment=\\(.\\|\n\\)*\\$FlowFixedInNextDeploy
 
-unsafe.enable_getters_and_setters=true
+suppress_comment=\\(.\\|\n\\)*\\$FlowFixMe\\($\\|[^(]\\|(\\(<VERSION>\\)? *\\(site=[a-z,_]*react_native[a-z,_]*\\)?)\\)
+suppress_comment=\\(.\\|\n\\)*\\$FlowIssue\\((\\(<VERSION>\\)? *\\(site=[a-z,_]*react_native[a-z,_]*\\)?)\\)?:? #[0-9]+
+suppress_comment=\\(.\\|\n\\)*\\$FlowFixedInNextDeploy
 
 [version]
-^0.30.0
+^0.65.0
diff --git a/.gitignore b/.gitignore
index 77de2ab..0826423 100644
--- a/.gitignore
+++ b/.gitignore
@@ -22,23 +22,32 @@ DerivedData
 *.xcuserstate
 project.xcworkspace
 
-# Android/IJ
+# Android/IntelliJ
 #
-*.iml
+build/
 .idea
 .gradle
 local.properties
+*.iml
 
 # node.js
 #
 node_modules/
-bundle/
-index.android.bundle
-index.android.bundle.meta
 npm-debug.log
+yarn-error.log
 
 # BUCK
 buck-out/
 \.buckd/
-android/app/libs
-android/keystores/debug.keystore
+*.keystore
+
+# fastlane
+#
+# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the
+# screenshots whenever they are needed.
+# For more information about the recommended setup visit:
+# https://docs.fastlane.tools/best-practices/source-control/
+
+*/fastlane/report.xml
+*/fastlane/Preview.html
+*/fastlane/screenshots
diff --git a/android/app/build.gradle b/android/app/build.gradle
index 16f0022..365e8b0 100644
--- a/android/app/build.gradle
+++ b/android/app/build.gradle
@@ -33,6 +33,13 @@ import com.android.build.OutputFile
  *   // bundleInPaidRelease: true,
  *   // bundleInBeta: true,
  *
+ *   // whether to disable dev mode in custom build variants (by default only disabled in release)
+ *   // for example: to disable dev mode in the staging build type (if configured)
+ *   devDisabledInStaging: true,
+ *   // The configuration property can be in the following formats
+ *   //         'devDisabledIn${productFlavor}${buildType}'
+ *   //         'devDisabledIn${buildType}'
+ *
  *   // the root of your project, i.e. where "package.json" lives
  *   root: "../../",
  *
@@ -65,6 +72,10 @@ import com.android.build.OutputFile
  * ]
  */
 
+project.ext.react = [
+    entryFile: "index.js"
+]
+
 apply from: "../../node_modules/react-native/react.gradle"
 
 /**
diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml
index 759ce9c..732e2ae 100644
--- a/android/app/src/main/AndroidManifest.xml
+++ b/android/app/src/main/AndroidManifest.xml
@@ -1,17 +1,12 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.yh_rncomponent"
-    android:versionCode="1"
-    android:versionName="1.0">
+    package="com.yh_rncomponent">
 
     <uses-permission android:name="android.permission.INTERNET" />
     <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
 
-    <uses-sdk
-        android:minSdkVersion="16"
-        android:targetSdkVersion="22" />
-
     <application
       android:allowBackup="true"
+      android:name=".MainApplication"
       android:label="@string/app_name"
       android:icon="@mipmap/ic_launcher"
       android:theme="@style/AppTheme">
diff --git a/android/app/src/main/java/com/yh_rncomponent/MainApplication.java b/android/app/src/main/java/com/yh_rncomponent/MainApplication.java
index b9bb18b..9fafc37 100644
--- a/android/app/src/main/java/com/yh_rncomponent/MainApplication.java
+++ b/android/app/src/main/java/com/yh_rncomponent/MainApplication.java
@@ -26,6 +26,11 @@ public class MainApplication extends Application implements ReactApplication {
           new MainReactPackage()
       );
     }
+
+    @Override
+    protected String getJSMainModuleName() {
+      return "index";
+    }
   };
 
   @Override
diff --git a/ios/YH_RNComponent.xcodeproj/project.pbxproj b/ios/YH_RNComponent.xcodeproj/project.pbxproj
index cc853c6..f24508f 100644
--- a/ios/YH_RNComponent.xcodeproj/project.pbxproj
+++ b/ios/YH_RNComponent.xcodeproj/project.pbxproj
@@ -22,7 +22,21 @@
 		13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; };
 		140ED2AC1D01E1AD002B40FF /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 146834041AC3E56700842450 /* libReact.a */; };
 		146834051AC3E58100842450 /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 146834041AC3E56700842450 /* libReact.a */; };
+		2D02E4BC1E0B4A80006451C7 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.m */; };
+		2D02E4BD1E0B4A84006451C7 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; };
+		2D02E4BF1E0B4AB3006451C7 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; };
+		2D02E4C21E0B4AEC006451C7 /* libRCTAnimation.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5E9157351DD0AC6500FF2AA8 /* libRCTAnimation.a */; };
+		2D02E4C31E0B4AEC006451C7 /* libRCTImage-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3DAD3E841DF850E9000B6D8A /* libRCTImage-tvOS.a */; };
+		2D02E4C41E0B4AEC006451C7 /* libRCTLinking-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3DAD3E881DF850E9000B6D8A /* libRCTLinking-tvOS.a */; };
+		2D02E4C51E0B4AEC006451C7 /* libRCTNetwork-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3DAD3E8C1DF850E9000B6D8A /* libRCTNetwork-tvOS.a */; };
+		2D02E4C61E0B4AEC006451C7 /* libRCTSettings-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3DAD3E901DF850E9000B6D8A /* libRCTSettings-tvOS.a */; };
+		2D02E4C71E0B4AEC006451C7 /* libRCTText-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3DAD3E941DF850E9000B6D8A /* libRCTText-tvOS.a */; };
+		2D02E4C81E0B4AEC006451C7 /* libRCTWebSocket-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3DAD3E991DF850E9000B6D8A /* libRCTWebSocket-tvOS.a */; };
+		2D16E6881FA4F8E400B85C8A /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2D16E6891FA4F8E400B85C8A /* libReact.a */; };
+		2DCD954D1E0B4F2C00145EB5 /* YH_RNComponentTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* YH_RNComponentTests.m */; };
+		5E9157361DD0AC6A00FF2AA8 /* libRCTAnimation.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5E9157331DD0AC6500FF2AA8 /* libRCTAnimation.a */; };
 		832341BD1AAA6AB300B99B32 /* libRCTText.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 832341B51AAA6A8300B99B32 /* libRCTText.a */; };
+		ADBDB9381DFEBF1600ED6528 /* libRCTBlob.a in Frameworks */ = {isa = PBXBuildFile; fileRef = ADBDB9271DFEBF0700ED6528 /* libRCTBlob.a */; };
 /* End PBXBuildFile section */
 
 /* Begin PBXContainerItemProxy section */
@@ -89,6 +103,139 @@
 			remoteGlobalIDString = 83CBBA2E1A601D0E00E9B192;
 			remoteInfo = React;
 		};
+		2D02E4911E0B4A5D006451C7 /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */;
+			proxyType = 1;
+			remoteGlobalIDString = 2D02E47A1E0B4A5D006451C7;
+			remoteInfo = "YH_RNComponent-tvOS";
+		};
+		2D16E6711FA4F8DC00B85C8A /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = ADBDB91F1DFEBF0600ED6528 /* RCTBlob.xcodeproj */;
+			proxyType = 2;
+			remoteGlobalIDString = ADD01A681E09402E00F6D226;
+			remoteInfo = "RCTBlob-tvOS";
+		};
+		2D16E6831FA4F8DC00B85C8A /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */;
+			proxyType = 2;
+			remoteGlobalIDString = 3DBE0D001F3B181A0099AA32;
+			remoteInfo = fishhook;
+		};
+		2D16E6851FA4F8DC00B85C8A /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */;
+			proxyType = 2;
+			remoteGlobalIDString = 3DBE0D0D1F3B181C0099AA32;
+			remoteInfo = "fishhook-tvOS";
+		};
+		3DAD3E831DF850E9000B6D8A /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 00C302BB1ABCB91800DB3ED1 /* RCTImage.xcodeproj */;
+			proxyType = 2;
+			remoteGlobalIDString = 2D2A283A1D9B042B00D4039D;
+			remoteInfo = "RCTImage-tvOS";
+		};
+		3DAD3E871DF850E9000B6D8A /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */;
+			proxyType = 2;
+			remoteGlobalIDString = 2D2A28471D9B043800D4039D;
+			remoteInfo = "RCTLinking-tvOS";
+		};
+		3DAD3E8B1DF850E9000B6D8A /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 00C302D31ABCB9D200DB3ED1 /* RCTNetwork.xcodeproj */;
+			proxyType = 2;
+			remoteGlobalIDString = 2D2A28541D9B044C00D4039D;
+			remoteInfo = "RCTNetwork-tvOS";
+		};
+		3DAD3E8F1DF850E9000B6D8A /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 139105B61AF99BAD00B5F7CC /* RCTSettings.xcodeproj */;
+			proxyType = 2;
+			remoteGlobalIDString = 2D2A28611D9B046600D4039D;
+			remoteInfo = "RCTSettings-tvOS";
+		};
+		3DAD3E931DF850E9000B6D8A /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */;
+			proxyType = 2;
+			remoteGlobalIDString = 2D2A287B1D9B048500D4039D;
+			remoteInfo = "RCTText-tvOS";
+		};
+		3DAD3E981DF850E9000B6D8A /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */;
+			proxyType = 2;
+			remoteGlobalIDString = 2D2A28881D9B049200D4039D;
+			remoteInfo = "RCTWebSocket-tvOS";
+		};
+		3DAD3EA21DF850E9000B6D8A /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */;
+			proxyType = 2;
+			remoteGlobalIDString = 2D2A28131D9B038B00D4039D;
+			remoteInfo = "React-tvOS";
+		};
+		3DAD3EA41DF850E9000B6D8A /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */;
+			proxyType = 2;
+			remoteGlobalIDString = 3D3C059A1DE3340900C268FA;
+			remoteInfo = yoga;
+		};
+		3DAD3EA61DF850E9000B6D8A /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */;
+			proxyType = 2;
+			remoteGlobalIDString = 3D3C06751DE3340C00C268FA;
+			remoteInfo = "yoga-tvOS";
+		};
+		3DAD3EA81DF850E9000B6D8A /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */;
+			proxyType = 2;
+			remoteGlobalIDString = 3D3CD9251DE5FBEC00167DC4;
+			remoteInfo = cxxreact;
+		};
+		3DAD3EAA1DF850E9000B6D8A /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */;
+			proxyType = 2;
+			remoteGlobalIDString = 3D3CD9321DE5FBEE00167DC4;
+			remoteInfo = "cxxreact-tvOS";
+		};
+		3DAD3EAC1DF850E9000B6D8A /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */;
+			proxyType = 2;
+			remoteGlobalIDString = 3D3CD90B1DE5FBD600167DC4;
+			remoteInfo = jschelpers;
+		};
+		3DAD3EAE1DF850E9000B6D8A /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */;
+			proxyType = 2;
+			remoteGlobalIDString = 3D3CD9181DE5FBD800167DC4;
+			remoteInfo = "jschelpers-tvOS";
+		};
+		5E9157321DD0AC6500FF2AA8 /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 5E91572D1DD0AC6500FF2AA8 /* RCTAnimation.xcodeproj */;
+			proxyType = 2;
+			remoteGlobalIDString = 134814201AA4EA6300B7C361;
+			remoteInfo = RCTAnimation;
+		};
+		5E9157341DD0AC6500FF2AA8 /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 5E91572D1DD0AC6500FF2AA8 /* RCTAnimation.xcodeproj */;
+			proxyType = 2;
+			remoteGlobalIDString = 2D2A28201D9B03D100D4039D;
+			remoteInfo = "RCTAnimation-tvOS";
+		};
 		78C398B81ACF4ADC00677621 /* PBXContainerItemProxy */ = {
 			isa = PBXContainerItemProxy;
 			containerPortal = 78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */;
@@ -103,6 +250,13 @@
 			remoteGlobalIDString = 58B5119B1A9E6C1200147676;
 			remoteInfo = RCTText;
 		};
+		ADBDB9261DFEBF0700ED6528 /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = ADBDB91F1DFEBF0600ED6528 /* RCTBlob.xcodeproj */;
+			proxyType = 2;
+			remoteGlobalIDString = 358F4ED71D1E81A9004DF814;
+			remoteInfo = RCTBlob;
+		};
 /* End PBXContainerItemProxy section */
 
 /* Begin PBXFileReference section */
@@ -124,9 +278,14 @@
 		13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = YH_RNComponent/Images.xcassets; sourceTree = "<group>"; };
 		13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = YH_RNComponent/Info.plist; sourceTree = "<group>"; };
 		13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = YH_RNComponent/main.m; sourceTree = "<group>"; };
-		146833FF1AC3E56700842450 /* React.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = React.xcodeproj; path = ../node_modules/react-native/React/React.xcodeproj; sourceTree = "<group>"; };
-		78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTLinking.xcodeproj; path = ../node_modules/react-native/Libraries/LinkingIOS/RCTLinking.xcodeproj; sourceTree = "<group>"; };
-		832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTText.xcodeproj; path = ../node_modules/react-native/Libraries/Text/RCTText.xcodeproj; sourceTree = "<group>"; };
+		146833FF1AC3E56700842450 /* React.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = React.xcodeproj; path = "../node_modules/react-native/React/React.xcodeproj"; sourceTree = "<group>"; };
+		2D02E47B1E0B4A5D006451C7 /* YH_RNComponent-tvOS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "YH_RNComponent-tvOS.app"; sourceTree = BUILT_PRODUCTS_DIR; };
+		2D02E4901E0B4A5D006451C7 /* YH_RNComponent-tvOSTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "YH_RNComponent-tvOSTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
+		2D16E6891FA4F8E400B85C8A /* libReact.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = libReact.a; sourceTree = BUILT_PRODUCTS_DIR; };
+		5E91572D1DD0AC6500FF2AA8 /* RCTAnimation.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTAnimation.xcodeproj; path = "../node_modules/react-native/Libraries/NativeAnimation/RCTAnimation.xcodeproj"; sourceTree = "<group>"; };
+		78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTLinking.xcodeproj; path = "../node_modules/react-native/Libraries/LinkingIOS/RCTLinking.xcodeproj"; sourceTree = "<group>"; };
+		832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTText.xcodeproj; path = "../node_modules/react-native/Libraries/Text/RCTText.xcodeproj"; sourceTree = "<group>"; };
+		ADBDB91F1DFEBF0600ED6528 /* RCTBlob.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTBlob.xcodeproj; path = "../node_modules/react-native/Libraries/Blob/RCTBlob.xcodeproj"; sourceTree = "<group>"; };
 /* End PBXFileReference section */
 
 /* Begin PBXFrameworksBuildPhase section */
@@ -142,6 +301,8 @@
 			isa = PBXFrameworksBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
+				ADBDB9381DFEBF1600ED6528 /* libRCTBlob.a in Frameworks */,
+				5E9157361DD0AC6A00FF2AA8 /* libRCTAnimation.a in Frameworks */,
 				146834051AC3E58100842450 /* libReact.a in Frameworks */,
 				00C302E51ABCBA2D00DB3ED1 /* libRCTActionSheet.a in Frameworks */,
 				00C302E71ABCBA2D00DB3ED1 /* libRCTGeolocation.a in Frameworks */,
@@ -155,6 +316,28 @@
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
+		2D02E4781E0B4A5D006451C7 /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				2D16E6881FA4F8E400B85C8A /* libReact.a in Frameworks */,
+				2D02E4C21E0B4AEC006451C7 /* libRCTAnimation.a in Frameworks */,
+				2D02E4C31E0B4AEC006451C7 /* libRCTImage-tvOS.a in Frameworks */,
+				2D02E4C41E0B4AEC006451C7 /* libRCTLinking-tvOS.a in Frameworks */,
+				2D02E4C51E0B4AEC006451C7 /* libRCTNetwork-tvOS.a in Frameworks */,
+				2D02E4C61E0B4AEC006451C7 /* libRCTSettings-tvOS.a in Frameworks */,
+				2D02E4C71E0B4AEC006451C7 /* libRCTText-tvOS.a in Frameworks */,
+				2D02E4C81E0B4AEC006451C7 /* libRCTWebSocket-tvOS.a in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		2D02E48D1E0B4A5D006451C7 /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
 /* End PBXFrameworksBuildPhase section */
 
 /* Begin PBXGroup section */
@@ -227,6 +410,9 @@
 			isa = PBXGroup;
 			children = (
 				139FDEF41B06529B00C62182 /* libRCTWebSocket.a */,
+				3DAD3E991DF850E9000B6D8A /* libRCTWebSocket-tvOS.a */,
+				2D16E6841FA4F8DC00B85C8A /* libfishhook.a */,
+				2D16E6861FA4F8DC00B85C8A /* libfishhook-tvOS.a */,
 			);
 			name = Products;
 			sourceTree = "<group>";
@@ -249,6 +435,30 @@
 			isa = PBXGroup;
 			children = (
 				146834041AC3E56700842450 /* libReact.a */,
+				3DAD3EA51DF850E9000B6D8A /* libyoga.a */,
+				3DAD3EA71DF850E9000B6D8A /* libyoga.a */,
+				3DAD3EA91DF850E9000B6D8A /* libcxxreact.a */,
+				3DAD3EAB1DF850E9000B6D8A /* libcxxreact.a */,
+				3DAD3EAD1DF850E9000B6D8A /* libjschelpers.a */,
+				3DAD3EAF1DF850E9000B6D8A /* libjschelpers.a */,
+				3DAD3EA31DF850E9000B6D8A /* libReact-tvOS.a */,
+			);
+			name = Products;
+			sourceTree = "<group>";
+		};
+		2D16E6871FA4F8E400B85C8A /* Frameworks */ = {
+			isa = PBXGroup;
+			children = (
+				2D16E6891FA4F8E400B85C8A /* libReact.a */,
+			);
+			name = Frameworks;
+			sourceTree = "<group>";
+		};
+		5E91572E1DD0AC6500FF2AA8 /* Products */ = {
+			isa = PBXGroup;
+			children = (
+				5E9157331DD0AC6500FF2AA8 /* libRCTAnimation.a */,
+				5E9157351DD0AC6500FF2AA8 /* libRCTAnimation.a */,
 			);
 			name = Products;
 			sourceTree = "<group>";
@@ -266,6 +476,7 @@
 			children = (
 				146833FF1AC3E56700842450 /* React.xcodeproj */,
 				00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */,
+				ADBDB91F1DFEBF0600ED6528 /* RCTBlob.xcodeproj */,
 				00C302B51ABCB90400DB3ED1 /* RCTGeolocation.xcodeproj */,
 				00C302BB1ABCB91800DB3ED1 /* RCTImage.xcodeproj */,
 				78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */,
@@ -293,10 +504,12 @@
 				832341AE1AAA6A7D00B99B32 /* Libraries */,
 				00E356EF1AD99517003FC87E /* YH_RNComponentTests */,
 				83CBBA001A601CBA00E9B192 /* Products */,
+				2D16E6871FA4F8E400B85C8A /* Frameworks */,
 			);
 			indentWidth = 2;
 			sourceTree = "<group>";
 			tabWidth = 2;
+			usesTabs = 0;
 		};
 		83CBBA001A601CBA00E9B192 /* Products */ = {
 			isa = PBXGroup;
@@ -307,6 +520,15 @@
 			name = Products;
 			sourceTree = "<group>";
 		};
+		ADBDB9201DFEBF0600ED6528 /* Products */ = {
+			isa = PBXGroup;
+			children = (
+				ADBDB9271DFEBF0700ED6528 /* libRCTBlob.a */,
+				2D16E6721FA4F8DC00B85C8A /* libRCTBlob-tvOS.a */,
+			);
+			name = Products;
+			sourceTree = "<group>";
+		};
 /* End PBXGroup section */
 
 /* Begin PBXNativeTarget section */
@@ -378,6 +600,14 @@
 					ProjectRef = 00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */;
 				},
 				{
+					ProductGroup = 5E91572E1DD0AC6500FF2AA8 /* Products */;
+					ProjectRef = 5E91572D1DD0AC6500FF2AA8 /* RCTAnimation.xcodeproj */;
+				},
+				{
+					ProductGroup = ADBDB9201DFEBF0600ED6528 /* Products */;
+					ProjectRef = ADBDB91F1DFEBF0600ED6528 /* RCTBlob.xcodeproj */;
+				},
+				{
 					ProductGroup = 00C302B61ABCB90400DB3ED1 /* Products */;
 					ProjectRef = 00C302B51ABCB90400DB3ED1 /* RCTGeolocation.xcodeproj */;
 				},
@@ -479,6 +709,132 @@
 			remoteRef = 146834031AC3E56700842450 /* PBXContainerItemProxy */;
 			sourceTree = BUILT_PRODUCTS_DIR;
 		};
+		2D16E6721FA4F8DC00B85C8A /* libRCTBlob-tvOS.a */ = {
+			isa = PBXReferenceProxy;
+			fileType = archive.ar;
+			path = "libRCTBlob-tvOS.a";
+			remoteRef = 2D16E6711FA4F8DC00B85C8A /* PBXContainerItemProxy */;
+			sourceTree = BUILT_PRODUCTS_DIR;
+		};
+		2D16E6841FA4F8DC00B85C8A /* libfishhook.a */ = {
+			isa = PBXReferenceProxy;
+			fileType = archive.ar;
+			path = libfishhook.a;
+			remoteRef = 2D16E6831FA4F8DC00B85C8A /* PBXContainerItemProxy */;
+			sourceTree = BUILT_PRODUCTS_DIR;
+		};
+		2D16E6861FA4F8DC00B85C8A /* libfishhook-tvOS.a */ = {
+			isa = PBXReferenceProxy;
+			fileType = archive.ar;
+			path = "libfishhook-tvOS.a";
+			remoteRef = 2D16E6851FA4F8DC00B85C8A /* PBXContainerItemProxy */;
+			sourceTree = BUILT_PRODUCTS_DIR;
+		};
+		3DAD3E841DF850E9000B6D8A /* libRCTImage-tvOS.a */ = {
+			isa = PBXReferenceProxy;
+			fileType = archive.ar;
+			path = "libRCTImage-tvOS.a";
+			remoteRef = 3DAD3E831DF850E9000B6D8A /* PBXContainerItemProxy */;
+			sourceTree = BUILT_PRODUCTS_DIR;
+		};
+		3DAD3E881DF850E9000B6D8A /* libRCTLinking-tvOS.a */ = {
+			isa = PBXReferenceProxy;
+			fileType = archive.ar;
+			path = "libRCTLinking-tvOS.a";
+			remoteRef = 3DAD3E871DF850E9000B6D8A /* PBXContainerItemProxy */;
+			sourceTree = BUILT_PRODUCTS_DIR;
+		};
+		3DAD3E8C1DF850E9000B6D8A /* libRCTNetwork-tvOS.a */ = {
+			isa = PBXReferenceProxy;
+			fileType = archive.ar;
+			path = "libRCTNetwork-tvOS.a";
+			remoteRef = 3DAD3E8B1DF850E9000B6D8A /* PBXContainerItemProxy */;
+			sourceTree = BUILT_PRODUCTS_DIR;
+		};
+		3DAD3E901DF850E9000B6D8A /* libRCTSettings-tvOS.a */ = {
+			isa = PBXReferenceProxy;
+			fileType = archive.ar;
+			path = "libRCTSettings-tvOS.a";
+			remoteRef = 3DAD3E8F1DF850E9000B6D8A /* PBXContainerItemProxy */;
+			sourceTree = BUILT_PRODUCTS_DIR;
+		};
+		3DAD3E941DF850E9000B6D8A /* libRCTText-tvOS.a */ = {
+			isa = PBXReferenceProxy;
+			fileType = archive.ar;
+			path = "libRCTText-tvOS.a";
+			remoteRef = 3DAD3E931DF850E9000B6D8A /* PBXContainerItemProxy */;
+			sourceTree = BUILT_PRODUCTS_DIR;
+		};
+		3DAD3E991DF850E9000B6D8A /* libRCTWebSocket-tvOS.a */ = {
+			isa = PBXReferenceProxy;
+			fileType = archive.ar;
+			path = "libRCTWebSocket-tvOS.a";
+			remoteRef = 3DAD3E981DF850E9000B6D8A /* PBXContainerItemProxy */;
+			sourceTree = BUILT_PRODUCTS_DIR;
+		};
+		3DAD3EA31DF850E9000B6D8A /* libReact-tvOS.a */ = {
+			isa = PBXReferenceProxy;
+			fileType = archive.ar;
+			path = "libReact-tvOS.a";
+			remoteRef = 3DAD3EA21DF850E9000B6D8A /* PBXContainerItemProxy */;
+			sourceTree = BUILT_PRODUCTS_DIR;
+		};
+		3DAD3EA51DF850E9000B6D8A /* libyoga.a */ = {
+			isa = PBXReferenceProxy;
+			fileType = archive.ar;
+			path = libyoga.a;
+			remoteRef = 3DAD3EA41DF850E9000B6D8A /* PBXContainerItemProxy */;
+			sourceTree = BUILT_PRODUCTS_DIR;
+		};
+		3DAD3EA71DF850E9000B6D8A /* libyoga.a */ = {
+			isa = PBXReferenceProxy;
+			fileType = archive.ar;
+			path = libyoga.a;
+			remoteRef = 3DAD3EA61DF850E9000B6D8A /* PBXContainerItemProxy */;
+			sourceTree = BUILT_PRODUCTS_DIR;
+		};
+		3DAD3EA91DF850E9000B6D8A /* libcxxreact.a */ = {
+			isa = PBXReferenceProxy;
+			fileType = archive.ar;
+			path = libcxxreact.a;
+			remoteRef = 3DAD3EA81DF850E9000B6D8A /* PBXContainerItemProxy */;
+			sourceTree = BUILT_PRODUCTS_DIR;
+		};
+		3DAD3EAB1DF850E9000B6D8A /* libcxxreact.a */ = {
+			isa = PBXReferenceProxy;
+			fileType = archive.ar;
+			path = libcxxreact.a;
+			remoteRef = 3DAD3EAA1DF850E9000B6D8A /* PBXContainerItemProxy */;
+			sourceTree = BUILT_PRODUCTS_DIR;
+		};
+		3DAD3EAD1DF850E9000B6D8A /* libjschelpers.a */ = {
+			isa = PBXReferenceProxy;
+			fileType = archive.ar;
+			path = libjschelpers.a;
+			remoteRef = 3DAD3EAC1DF850E9000B6D8A /* PBXContainerItemProxy */;
+			sourceTree = BUILT_PRODUCTS_DIR;
+		};
+		3DAD3EAF1DF850E9000B6D8A /* libjschelpers.a */ = {
+			isa = PBXReferenceProxy;
+			fileType = archive.ar;
+			path = libjschelpers.a;
+			remoteRef = 3DAD3EAE1DF850E9000B6D8A /* PBXContainerItemProxy */;
+			sourceTree = BUILT_PRODUCTS_DIR;
+		};
+		5E9157331DD0AC6500FF2AA8 /* libRCTAnimation.a */ = {
+			isa = PBXReferenceProxy;
+			fileType = archive.ar;
+			path = libRCTAnimation.a;
+			remoteRef = 5E9157321DD0AC6500FF2AA8 /* PBXContainerItemProxy */;
+			sourceTree = BUILT_PRODUCTS_DIR;
+		};
+		5E9157351DD0AC6500FF2AA8 /* libRCTAnimation.a */ = {
+			isa = PBXReferenceProxy;
+			fileType = archive.ar;
+			path = libRCTAnimation.a;
+			remoteRef = 5E9157341DD0AC6500FF2AA8 /* PBXContainerItemProxy */;
+			sourceTree = BUILT_PRODUCTS_DIR;
+		};
 		78C398B91ACF4ADC00677621 /* libRCTLinking.a */ = {
 			isa = PBXReferenceProxy;
 			fileType = archive.ar;
@@ -493,6 +849,13 @@
 			remoteRef = 832341B41AAA6A8300B99B32 /* PBXContainerItemProxy */;
 			sourceTree = BUILT_PRODUCTS_DIR;
 		};
+		ADBDB9271DFEBF0700ED6528 /* libRCTBlob.a */ = {
+			isa = PBXReferenceProxy;
+			fileType = archive.ar;
+			path = libRCTBlob.a;
+			remoteRef = ADBDB9261DFEBF0700ED6528 /* PBXContainerItemProxy */;
+			sourceTree = BUILT_PRODUCTS_DIR;
+		};
 /* End PBXReferenceProxy section */
 
 /* Begin PBXResourcesBuildPhase section */
@@ -527,8 +890,21 @@
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 			shellPath = /bin/sh;
-			shellScript = "export NODE_BINARY=node\n../node_modules/react-native/packager/react-native-xcode.sh";
-			showEnvVarsInLog = 1;
+			shellScript = "export NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh";
+		};
+		2D02E4CB1E0B4B27006451C7 /* Bundle React Native Code And Images */ = {
+			isa = PBXShellScriptBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			inputPaths = (
+			);
+			name = "Bundle React Native Code And Images";
+			outputPaths = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+			shellPath = /bin/sh;
+			shellScript = "export NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh";
 		};
 /* End PBXShellScriptBuildPhase section */
 
diff --git a/ios/YH_RNComponent/AppDelegate.m b/ios/YH_RNComponent/AppDelegate.m
index 4b2d9cf..1dc0e50 100644
--- a/ios/YH_RNComponent/AppDelegate.m
+++ b/ios/YH_RNComponent/AppDelegate.m
@@ -17,31 +17,7 @@
 {
   NSURL *jsCodeLocation;
 
-  /**
-   * Loading JavaScript code - uncomment the one you want.
-   *
-   * OPTION 1
-   * Load from development server. Start the server from the repository root:
-   *
-   * $ npm start
-   *
-   * To run on device, change `localhost` to the IP address of your computer
-   * (you can get this by typing `ifconfig` into the terminal and selecting the
-   * `inet` value under `en0:`) and make sure your computer and iOS device are
-   * on the same Wi-Fi network.
-   */
-
-  jsCodeLocation = [NSURL URLWithString:@"http://localhost:8081/index.ios.bundle?platform=ios&dev=true"];
-
-  /**
-   * OPTION 2
-   * Load from pre-bundled file on disk. The static bundle is automatically
-   * generated by the "Bundle React Native code and images" build step when
-   * running the project on an actual device or running the project on the
-   * simulator in the "Release" build configuration.
-   */
-
-//   jsCodeLocation = [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"];
+  jsCodeLocation = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index" fallbackResource:nil];
 
   RCTRootView *rootView = [[RCTRootView alloc] initWithBundleURL:jsCodeLocation
                                                       moduleName:@"YH_Community"
diff --git a/ios/YH_RNComponent/Images.xcassets/Contents.json b/ios/YH_RNComponent/Images.xcassets/Contents.json
new file mode 100644
index 0000000..2d92bd5
--- /dev/null
+++ b/ios/YH_RNComponent/Images.xcassets/Contents.json
@@ -0,0 +1,6 @@
+{
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}
diff --git a/js/associatorGift/AssociatorGift.js b/js/associatorGift/AssociatorGift.js
index a3c6b94..64c51a5 100644
--- a/js/associatorGift/AssociatorGift.js
+++ b/js/associatorGift/AssociatorGift.js
@@ -8,6 +8,7 @@ import ReactNative, {
 	Dimensions,
 	TouchableOpacity,
 } from 'react-native';
+import createReactClass from 'create-react-class';
 
 import {
 	Provider,
@@ -38,7 +39,7 @@ function getInitialState() {
 
 export default function native(platform) {
 
-	let YH_AssociatorGift = React.createClass({
+	let YH_AssociatorGift = createReactClass({
 
 		render() {
 		  	const store = configureStore(getInitialState());
diff --git a/js/associatorGift/store/configureStore.js b/js/associatorGift/store/configureStore.js
index 035022b..37d8edf 100644
--- a/js/associatorGift/store/configureStore.js
+++ b/js/associatorGift/store/configureStore.js
@@ -13,7 +13,7 @@
  */
 import { createStore, applyMiddleware } from 'redux';
 import thunk from 'redux-thunk';
-import createLogger from 'redux-logger';
+import {createLogger} from 'redux-logger';
 
 /**
 * ## Reducer
diff --git a/js/blk/BLK.js b/js/blk/BLK.js
index c83f556..560db52 100644
--- a/js/blk/BLK.js
+++ b/js/blk/BLK.js
@@ -5,6 +5,7 @@ import ReactNative, {
 	AppRegistry,
 	Platform,
 } from 'react-native';
+import createReactClass from 'create-react-class';
 
 import {
 	Provider,
@@ -46,7 +47,7 @@ function getInitialState() {
 
 export default function native(platform) {
 
-	let YH_BLK = React.createClass({
+	let YH_BLK = createReactClass({
 
 		render() {
 		  	const store = configureStore(getInitialState());
diff --git a/js/blk/store/configureStore.js b/js/blk/store/configureStore.js
index 035022b..37d8edf 100644
--- a/js/blk/store/configureStore.js
+++ b/js/blk/store/configureStore.js
@@ -13,7 +13,7 @@
  */
 import { createStore, applyMiddleware } from 'redux';
 import thunk from 'redux-thunk';
-import createLogger from 'redux-logger';
+import {createLogger} from 'redux-logger';
 
 /**
 * ## Reducer
diff --git a/js/brandStore/BrandStore.js b/js/brandStore/BrandStore.js
index bc88e9c..df63604 100644
--- a/js/brandStore/BrandStore.js
+++ b/js/brandStore/BrandStore.js
@@ -8,6 +8,7 @@ import ReactNative, {
 	Dimensions,
 	TouchableOpacity,
 } from 'react-native';
+import createReactClass from 'create-react-class';
 
 import {
 	Provider,
@@ -43,7 +44,7 @@ function getInitialState() {
 
 export default function native(platform) {
 
-	let YH_BrandStore = React.createClass({
+	let YH_BrandStore = createReactClass({
 
 		render() {
 		  	const store = configureStore(getInitialState());
diff --git a/js/brandStore/components/brandStore/BrandStore.js b/js/brandStore/components/brandStore/BrandStore.js
index 6c13c9b..219d57c 100644
--- a/js/brandStore/components/brandStore/BrandStore.js
+++ b/js/brandStore/components/brandStore/BrandStore.js
@@ -27,7 +27,7 @@ import ProductCategoryList from '../brandStore/brandStoreSubView/Cells/ProductCa
 import LoadingIndicator from '../../../common/components/LoadingIndicator';
 import LoadMoreIndicator from '../../../common/components/LoadMoreIndicator';
 import BrandProductListCell from '../../../common/components/ListCell/ProductListCell';
-import Toast from 'react-native-smart-toast'
+import Toast from '../../../common/components/Toast';
 
 export default class BrandStore extends Component {
     constructor(props) {
diff --git a/js/brandStore/store/configureStore.js b/js/brandStore/store/configureStore.js
index 035022b..37d8edf 100644
--- a/js/brandStore/store/configureStore.js
+++ b/js/brandStore/store/configureStore.js
@@ -13,7 +13,7 @@
  */
 import { createStore, applyMiddleware } from 'redux';
 import thunk from 'redux-thunk';
-import createLogger from 'redux-logger';
+import {createLogger} from 'redux-logger';
 
 /**
 * ## Reducer
diff --git a/js/classify/Classify.js b/js/classify/Classify.js
index 9ac4916..6dcaa76 100644
--- a/js/classify/Classify.js
+++ b/js/classify/Classify.js
@@ -9,6 +9,7 @@ import ReactNative, {
 	TouchableOpacity,
 	View,
 } from 'react-native';
+import createReactClass from 'create-react-class';
 
 import {
 	Provider,
@@ -62,7 +63,7 @@ function getInitialState() {
 
 export default function native(platform) {
 
-	let YH_Classify = React.createClass({
+	let YH_Classify = createReactClass({
 
 		_renderContainer() {
 			if (this.props.type == 0) {
diff --git a/js/classify/store/configureStore.js b/js/classify/store/configureStore.js
index 035022b..37d8edf 100644
--- a/js/classify/store/configureStore.js
+++ b/js/classify/store/configureStore.js
@@ -13,7 +13,7 @@
  */
 import { createStore, applyMiddleware } from 'redux';
 import thunk from 'redux-thunk';
-import createLogger from 'redux-logger';
+import {createLogger} from 'redux-logger';
 
 /**
 * ## Reducer
diff --git a/js/common/PTR/YH_RefreshingIndicator.js b/js/common/PTR/YH_RefreshingIndicator.js
index 1cd84a6..3684c62 100644
--- a/js/common/PTR/YH_RefreshingIndicator.js
+++ b/js/common/PTR/YH_RefreshingIndicator.js
@@ -3,9 +3,9 @@
 import React from 'react';
 import ReactNative from 'react-native';
 import ImagesAsGif from '../components/ImagesAsGif';
+import PropTypes from 'prop-types';
 
 const {
-    PropTypes,
     isValidElement,
     createElement,
 } = React;
diff --git a/js/common/PTR/lib/ControlledRefreshableListView.js b/js/common/PTR/lib/ControlledRefreshableListView.js
index 71d55d0..2946f5c 100644
--- a/js/common/PTR/lib/ControlledRefreshableListView.js
+++ b/js/common/PTR/lib/ControlledRefreshableListView.js
@@ -1,8 +1,7 @@
 var React = require('react')
 var ReactNative = require('react-native')
-var {
-  PropTypes,
-} = React;
+
+var PropTypes = require('prop-types');
 
 var {
   StyleSheet,
@@ -13,6 +12,7 @@ var {
 var ListView = require('./ListView')
 var createElementFrom = require('./createElementFrom')
 var RefreshingIndicator = require('./RefreshingIndicator')
+var createReactClass = require('create-react-class');
 
 const SCROLL_EVENT_THROTTLE = 32
 const MIN_PULLDOWN_DISTANCE = 40
@@ -30,7 +30,7 @@ const LISTVIEW_REF = 'listview'
  *   {isRefreshing: false}
  */
 
-var ControlledRefreshableListView = React.createClass({
+var ControlledRefreshableListView = createReactClass({
   propTypes: {
     colors: PropTypes.array,
     progressBackgroundColor: PropTypes.string,
diff --git a/js/common/PTR/lib/RefreshableListView.js b/js/common/PTR/lib/RefreshableListView.js
index e07077e..d7c1b60 100644
--- a/js/common/PTR/lib/RefreshableListView.js
+++ b/js/common/PTR/lib/RefreshableListView.js
@@ -1,8 +1,6 @@
 var React = require('react')
 var ReactNative = require('react-native')
-var {
-  PropTypes,
-} = React;
+var PropTypes = require('prop-types');
 
 var {
   StyleSheet,
@@ -10,6 +8,7 @@ var {
   Platform,
   PullToRefreshViewAndroid,
 } = ReactNative
+import createReactClass from 'create-react-class';
 var isPromise = require('is-promise')
 var delay = require('./delay')
 var RefreshingIndicator = require('./RefreshingIndicator')
@@ -17,7 +16,7 @@ var ControlledRefreshableListView = require('./ControlledRefreshableListView')
 
 const LISTVIEW_REF = 'listview'
 
-var RefreshableListView = React.createClass({
+var RefreshableListView = createReactClass({
   propTypes: {
     loadData: PropTypes.func.isRequired,
     minDisplayTime: PropTypes.number,
diff --git a/js/common/PTR/lib/RefreshingIndicator.js b/js/common/PTR/lib/RefreshingIndicator.js
index 458ea81..a07e2fa 100644
--- a/js/common/PTR/lib/RefreshingIndicator.js
+++ b/js/common/PTR/lib/RefreshingIndicator.js
@@ -1,10 +1,11 @@
 var React = require('react')
 var ReactNative = require('react-native')
 var {
-  PropTypes,
   isValidElement,
   createElement,
 } = React;
+var PropTypes = require('prop-types');
+var createReactClass = require('create-react-class');
 
 var {
     View,
@@ -13,7 +14,7 @@ var {
     StyleSheet,
 } = ReactNative
 
-var RefreshingIndicator = React.createClass({
+var RefreshingIndicator = createReactClass({
   propTypes: {
     activityIndicatorComponent: PropTypes.oneOfType([PropTypes.func, PropTypes.element]),
     stylesheet: PropTypes.object,
diff --git a/js/common/components/Banner.js b/js/common/components/Banner.js
index 1ab3128..ae6ae52 100644
--- a/js/common/components/Banner.js
+++ b/js/common/components/Banner.js
@@ -6,6 +6,7 @@ import YH_Swiper from './YH_Swiper';
 import ImmutablePropTypes from 'react-immutable-proptypes';
 import SlicedImage from './SlicedImage';
 import Platform from 'react-native';
+import PropTypes from 'prop-types';
 const {
     View,
     Image,
@@ -19,14 +20,14 @@ export default class Banner extends React.Component {
     static propTypes = {
         data: ImmutablePropTypes.listOf(
             ImmutablePropTypes.contains({
-                src: React.PropTypes.string.isRequired,
-                url: React.PropTypes.string.isRequired,
+                src: PropTypes.string.isRequired,
+                url: PropTypes.string.isRequired,
             })
         ),
-        duration: React.PropTypes.number,
-        width: React.PropTypes.number.isRequired,
-        height: React.PropTypes.number.isRequired,
-        onPress: React.PropTypes.func,
+        duration: PropTypes.number,
+        width: PropTypes.number.isRequired,
+        height: PropTypes.number.isRequired,
+        onPress: PropTypes.func,
     };
 
     constructor(props) {
diff --git a/js/common/components/ImagesAsGif.js b/js/common/components/ImagesAsGif.js
index 7858907..7196843 100644
--- a/js/common/components/ImagesAsGif.js
+++ b/js/common/components/ImagesAsGif.js
@@ -2,10 +2,11 @@
 
 var React = require('react');
 var ReactNative = require('react-native');
+var createReactClass = require('create-react-class');
 
 var {
-    PropTypes,
 } = React;
+import PropTypes from 'prop-types';
 
 var {
     Image,
@@ -13,7 +14,7 @@ var {
 
 var TimerMixin = require('react-timer-mixin');
 
-module.exports = React.createClass({
+module.exports = createReactClass({
 
     propTypes: {
         images: PropTypes.array.isRequired,
diff --git a/js/common/components/LoadMoreIndicator.js b/js/common/components/LoadMoreIndicator.js
index c00b801..d70b46e 100644
--- a/js/common/components/LoadMoreIndicator.js
+++ b/js/common/components/LoadMoreIndicator.js
@@ -9,13 +9,14 @@ import {
     ActivityIndicator,
     Platform,
 } from 'react-native';
+import PropTypes from 'prop-types';
 
 export default class LoadMoreIndicator extends Component {
 
     static propTypes = {
-        isVisible: React.PropTypes.bool.isRequired,
-        animating: React.PropTypes.bool,
-        text: React.PropTypes.string,
+        isVisible: PropTypes.bool.isRequired,
+        animating: PropTypes.bool,
+        text: PropTypes.string,
     };
 
     static defaultProps = {
diff --git a/js/common/components/LoadingIndicator.js b/js/common/components/LoadingIndicator.js
index 00ba3a8..874f806 100644
--- a/js/common/components/LoadingIndicator.js
+++ b/js/common/components/LoadingIndicator.js
@@ -9,19 +9,20 @@ import {
     ActivityIndicator,
     Platform,
 } from 'react-native';
+import PropTypes from 'prop-types';
 
 export default class LoadingIndicator extends Component {
 
     static propTypes = {
-        isVisible: React.PropTypes.bool.isRequired,
-        size: React.PropTypes.string,
-        color: React.PropTypes.string,
-        overlayWidth: React.PropTypes.number,
-        overlayHeight: React.PropTypes.number,
-        overlayColor: React.PropTypes.string,
-        text: React.PropTypes.string,
-        textColor: React.PropTypes.string,
-        textFontSize: React.PropTypes.number,
+        isVisible: PropTypes.bool.isRequired,
+        size: PropTypes.string,
+        color: PropTypes.string,
+        overlayWidth: PropTypes.number,
+        overlayHeight: PropTypes.number,
+        overlayColor: PropTypes.string,
+        text: PropTypes.string,
+        textColor: PropTypes.string,
+        textFontSize: PropTypes.number,
     };
 
     static defaultProps = {
diff --git a/js/common/components/Prompt.js b/js/common/components/Prompt.js
index 9b12f8a..ea5cd11 100644
--- a/js/common/components/Prompt.js
+++ b/js/common/components/Prompt.js
@@ -12,6 +12,7 @@ import {
 } from 'react-native';
 
 import TimerMixin from 'react-timer-mixin';
+import PropTypes from 'prop-types';
 
 
 const initOpacity = 0.8;
@@ -20,15 +21,15 @@ export default class Prompt extends Component {
 
     static propTypes = {
         icon: Image.propTypes.source,
-        overlayColor: React.PropTypes.string,
-        title: React.PropTypes.string,
-        titleColor: React.PropTypes.string,
-        titleFontSize: React.PropTypes.number,
-        text: React.PropTypes.string,
-        textColor: React.PropTypes.string,
-        textFontSize: React.PropTypes.number,
-        duration: React.PropTypes.number,
-        onPromptHidden: React.PropTypes.func,
+        overlayColor: PropTypes.string,
+        title: PropTypes.string,
+        titleColor: PropTypes.string,
+        titleFontSize: PropTypes.number,
+        text: PropTypes.string,
+        textColor: PropTypes.string,
+        textFontSize: PropTypes.number,
+        duration: PropTypes.number,
+        onPromptHidden: PropTypes.func,
     };
 
     static defaultProps = {
diff --git a/js/common/components/Toast.js b/js/common/components/Toast.js
index a0cca57..5b507f4 100644
--- a/js/common/components/Toast.js
+++ b/js/common/components/Toast.js
@@ -11,19 +11,20 @@ import {
 } from 'react-native';
 
 import TimerMixin from 'react-timer-mixin';
+import PropTypes from 'prop-types';
 
 export default class Toast extends Component {
 
     static propTypes = {
-        isVisible: React.PropTypes.bool.isRequired,
-        size: React.PropTypes.string,
-        color: React.PropTypes.string,
-        overlayWidth: React.PropTypes.number,
-        overlayHeight: React.PropTypes.number,
-        overlayColor: React.PropTypes.string,
-        text: React.PropTypes.string,
-        textColor: React.PropTypes.string,
-        textFontSize: React.PropTypes.number,
+        isVisible: PropTypes.bool.isRequired,
+        size: PropTypes.string,
+        color: PropTypes.string,
+        overlayWidth: PropTypes.number,
+        overlayHeight: PropTypes.number,
+        overlayColor: PropTypes.string,
+        text: PropTypes.string,
+        textColor: PropTypes.string,
+        textFontSize: PropTypes.number,
     };
 
     static defaultProps = {
diff --git a/js/common/components/YH_SearchBar.js b/js/common/components/YH_SearchBar.js
index 5065015..868a6ce 100644
--- a/js/common/components/YH_SearchBar.js
+++ b/js/common/components/YH_SearchBar.js
@@ -3,9 +3,9 @@ import ReactNative from 'react-native';
 import {Platform} from 'react-native';
 
 const {
-    PropTypes,
     Component,
 } = React;
+import PropTypes from 'prop-types';
 
 const {
     NativeModules,
diff --git a/js/common/components/YH_ViewPager.android.js b/js/common/components/YH_ViewPager.android.js
index 89de0c4..06e81b6 100644
--- a/js/common/components/YH_ViewPager.android.js
+++ b/js/common/components/YH_ViewPager.android.js
@@ -7,6 +7,7 @@
  */
 import React from 'react';
 import ReactNative from 'react-native';
+import PropTypes from 'prop-types';
 
 let {
     requireNativeComponent,
@@ -42,14 +43,14 @@ export default class YH_ViewPager extends React.Component {
 
     static propTypes = {
         ...View.propTypes,
-        initialPage: React.PropTypes.number,
-        onPageSelected: React.PropTypes.func,
-        pageMargin: React.PropTypes.number,
-        keyboardDismissMode: React.PropTypes.oneOf([
+        initialPage: PropTypes.number,
+        onPageSelected: PropTypes.func,
+        pageMargin: PropTypes.number,
+        keyboardDismissMode: PropTypes.oneOf([
             'none', // default
             'on-drag',
         ]),
-        scrollEnabled: React.PropTypes.bool,
+        scrollEnabled: PropTypes.bool,
     };
 
     constructor(props) {
diff --git a/js/common/components/customComponents/TouchableHighlight.js.bak b/js/common/components/customComponents/TouchableHighlight.js.bak
index 486d61f..93cb2f8 100644
--- a/js/common/components/customComponents/TouchableHighlight.js.bak
+++ b/js/common/components/customComponents/TouchableHighlight.js.bak
@@ -109,7 +109,7 @@ var TouchableHighlight = React.createClass({
      */
     tvParallaxProperties: PropTypes.object,
 
-    yh_exposureData: React.PropTypes.object,
+    yh_exposureData: PropTypes.object,
 
   },
 
diff --git a/js/common/components/customComponents/TouchableOpacity.js.bak b/js/common/components/customComponents/TouchableOpacity.js.bak
index bd47a2d..34fca44 100644
--- a/js/common/components/customComponents/TouchableOpacity.js.bak
+++ b/js/common/components/customComponents/TouchableOpacity.js.bak
@@ -67,7 +67,7 @@ var TouchableOpacity = React.createClass({
      */
     tvParallaxProperties: PropTypes.object,
 
-    yh_exposureData: React.PropTypes.object,
+    yh_exposureData: PropTypes.object,
   },
 
   getDefaultProps: function() {
diff --git a/js/common/components/customComponents/android_0.35/ScrollView.js.bak b/js/common/components/customComponents/android_0.35/ScrollView.js.bak
index b030918..65f8f2e 100644
--- a/js/common/components/customComponents/android_0.35/ScrollView.js.bak
+++ b/js/common/components/customComponents/android_0.35/ScrollView.js.bak
@@ -10,6 +10,7 @@
  * @flow
  */
 'use strict';
+import PropTypes from 'prop-types';
 
 const ColorPropType = require('ColorPropType');
 const EdgeInsetsPropType = require('EdgeInsetsPropType');
@@ -28,7 +29,6 @@ const dismissKeyboard = require('dismissKeyboard');
 const flattenStyle = require('flattenStyle');
 const invariant = require('fbjs/lib/invariant');
 const processDecelerationRate = require('processDecelerationRate');
-const PropTypes = React.PropTypes;
 const requireNativeComponent = require('requireNativeComponent');
 
 /**
diff --git a/js/common/react-native-scrollable-tab-view/DefaultTabBar.js b/js/common/react-native-scrollable-tab-view/DefaultTabBar.js
index 5d7b53d..c6d459e 100755
--- a/js/common/react-native-scrollable-tab-view/DefaultTabBar.js
+++ b/js/common/react-native-scrollable-tab-view/DefaultTabBar.js
@@ -1,5 +1,7 @@
+import PropTypes from 'prop-types';
 const React = require('react');
 const ReactNative = require('react-native');
+import createReactClass from 'create-react-class';
 const {
   StyleSheet,
   Text,
@@ -8,19 +10,19 @@ const {
 } = ReactNative;
 const Button = require('./Button');
 
-const DefaultTabBar = React.createClass({
+const DefaultTabBar = createReactClass({
   propTypes: {
-    goToPage: React.PropTypes.func,
-    activeTab: React.PropTypes.number,
-    tabs: React.PropTypes.array,
-    underlineColor: React.PropTypes.string,
-    underlineHeight: React.PropTypes.number,
-    backgroundColor: React.PropTypes.string,
-    activeTextColor: React.PropTypes.string,
-    inactiveTextColor: React.PropTypes.string,
+    goToPage: PropTypes.func,
+    activeTab: PropTypes.number,
+    tabs: PropTypes.array,
+    underlineColor: PropTypes.string,
+    underlineHeight: PropTypes.number,
+    backgroundColor: PropTypes.string,
+    activeTextColor: PropTypes.string,
+    inactiveTextColor: PropTypes.string,
     textStyle: Text.propTypes.style,
     tabStyle: View.propTypes.style,
-    renderTabName: React.PropTypes.func,
+    renderTabName: PropTypes.func,
   },
 
   getDefaultProps() {
diff --git a/js/common/react-native-scrollable-tab-view/ScrollableTabBar.js b/js/common/react-native-scrollable-tab-view/ScrollableTabBar.js
index 7e526dc..7907eb0 100755
--- a/js/common/react-native-scrollable-tab-view/ScrollableTabBar.js
+++ b/js/common/react-native-scrollable-tab-view/ScrollableTabBar.js
@@ -1,5 +1,7 @@
+import PropTypes from 'prop-types';
 const React = require('react');
 const ReactNative = require('react-native');
+import createReactClass from 'create-react-class';
 const {
   View,
   Animated,
@@ -13,22 +15,22 @@ const Button = require('./Button');
 
 const WINDOW_WIDTH = Dimensions.get('window').width;
 
-const ScrollableTabBar = React.createClass({
+const ScrollableTabBar = createReactClass({
   propTypes: {
-    goToPage: React.PropTypes.func,
-    activeTab: React.PropTypes.number,
-    tabs: React.PropTypes.array,
-    underlineColor: React.PropTypes.string,
-    underlineHeight: React.PropTypes.number,
-    backgroundColor: React.PropTypes.string,
-    activeTextColor: React.PropTypes.string,
-    inactiveTextColor: React.PropTypes.string,
-    scrollOffset: React.PropTypes.number,
+    goToPage: PropTypes.func,
+    activeTab: PropTypes.number,
+    tabs: PropTypes.array,
+    underlineColor: PropTypes.string,
+    underlineHeight: PropTypes.number,
+    backgroundColor: PropTypes.string,
+    activeTextColor: PropTypes.string,
+    inactiveTextColor: PropTypes.string,
+    scrollOffset: PropTypes.number,
     style: View.propTypes.style,
     tabStyle: View.propTypes.style,
     tabsContainerStyle: View.propTypes.style,
     textStyle: Text.propTypes.style,
-    renderTabName: React.PropTypes.func,
+    renderTabName: PropTypes.func,
   },
 
   getDefaultProps() {
diff --git a/js/common/react-native-scrollable-tab-view/index.js b/js/common/react-native-scrollable-tab-view/index.js
index df965fb..9a0be8b 100755
--- a/js/common/react-native-scrollable-tab-view/index.js
+++ b/js/common/react-native-scrollable-tab-view/index.js
@@ -1,8 +1,8 @@
 const React = require('react');
 const {
-  PropTypes,
   Component,
 } = React;
+import PropTypes from 'prop-types';
 const ReactNative = require('react-native');
 const {
   Dimensions,
@@ -15,13 +15,14 @@ const {
   InteractionManager,
 } = ReactNative;
 const TimerMixin = require('react-timer-mixin');
+import createReactClass from 'create-react-class';
 
 const SceneComponent = require('./SceneComponent');
 const DefaultTabBar = require('./DefaultTabBar');
 const ScrollableTabBar = require('./ScrollableTabBar');
 
 
-const ScrollableTabView = React.createClass({
+const ScrollableTabView = createReactClass({
   mixins: [TimerMixin, ],
   statics: {
     DefaultTabBar,
diff --git a/js/common/recycler-swiper/src/index.js b/js/common/recycler-swiper/src/index.js
index a292fda..eeef954 100644
--- a/js/common/recycler-swiper/src/index.js
+++ b/js/common/recycler-swiper/src/index.js
@@ -2,7 +2,8 @@
  * react-native-swiper
  * @author leecade<leecade@163.com>
  */
-import React, { Component, PropTypes } from 'react'
+import React, { Component } from 'react'
+import PropTypes from 'prop-types';
 import {
   Text,
   View,
diff --git a/js/community/Community.js b/js/community/Community.js
index 518cff3..ebf88df 100644
--- a/js/community/Community.js
+++ b/js/community/Community.js
@@ -26,6 +26,7 @@ import RNRF, {
 	TabBar,
 	Actions
 } from 'react-native-router-flux';
+import createReactClass from 'create-react-class';
 
 import configureStore from './store/configureStore';
 
@@ -104,7 +105,7 @@ function getInitialState() {
 
 export default function community(platform) {
 
-  	let YH_Community = React.createClass({
+  	let YH_Community = createReactClass({
 
 		contanerIsYohoBuy() {
 			return parseInt(this.props.container) === 1;
diff --git a/js/community/components/home/Banner.js b/js/community/components/home/Banner.js
index b3d2f31..57504cc 100644
--- a/js/community/components/home/Banner.js
+++ b/js/community/components/home/Banner.js
@@ -5,6 +5,7 @@ import ReactNative from 'react-native';
 import YH_Swiper from '../../../common/components/YH_Swiper';
 import ImmutablePropTypes from 'react-immutable-proptypes';
 import SlicedImage from '../../../common/components/SlicedImage';
+import PropTypes from 'prop-types';
 
 const {
     View,
@@ -19,14 +20,14 @@ export default class Banner extends React.Component {
     static propTypes = {
         data: ImmutablePropTypes.listOf(
             ImmutablePropTypes.contains({
-                src: React.PropTypes.string.isRequired,
-                url: React.PropTypes.string.isRequired,
+                src: PropTypes.string.isRequired,
+                url: PropTypes.string.isRequired,
             })
         ),
-        duration: React.PropTypes.number,
-        width: React.PropTypes.number.isRequired,
-        height: React.PropTypes.number.isRequired,
-        onPress: React.PropTypes.func,
+        duration: PropTypes.number,
+        width: PropTypes.number.isRequired,
+        height: PropTypes.number.isRequired,
+        onPress: PropTypes.func,
     };
 
     constructor(props) {
diff --git a/js/community/components/home/Home.js b/js/community/components/home/Home.js
index e0de10f..88a7224 100644
--- a/js/community/components/home/Home.js
+++ b/js/community/components/home/Home.js
@@ -11,6 +11,7 @@ import UploadProgress from './UploadProgress';
 import SuperMan from './SuperMan';
 import LoadingIndicator from '../../../common/components/LoadingIndicator';
 import LoadMoreIndicator from '../../../common/components/LoadMoreIndicator';
+import PropTypes from 'prop-types';
 
 
 const {
@@ -36,26 +37,26 @@ export default class Home extends React.Component {
 
         progressing: ImmutablePropTypes.listOf(
             ImmutablePropTypes.contains({
-                uploadState:React.PropTypes.number.isRequired,
-                progress:React.PropTypes.number,
-                image:React.PropTypes.string,
-                onPressRetry:React.PropTypes.func,
-                onPressDelete:React.PropTypes.func,
+                uploadState: PropTypes.number.isRequired,
+                progress: PropTypes.number,
+                image: PropTypes.string,
+                onPressRetry: PropTypes.func,
+                onPressDelete: PropTypes.func,
             }),
         ),
         banner: ImmutablePropTypes.listOf(
             ImmutablePropTypes.listOf(
                 ImmutablePropTypes.contains({
-                    src: React.PropTypes.string.isRequired,
-                    url: React.PropTypes.string,
+                    src: PropTypes.string.isRequired,
+                    url: PropTypes.string,
                 }),
             ),
         ),
         notice: ImmutablePropTypes.listOf(
             ImmutablePropTypes.listOf(
                 ImmutablePropTypes.contains({
-                    title: React.PropTypes.string.isRequired,
-                    url: React.PropTypes.string,
+                    title: PropTypes.string.isRequired,
+                    url: PropTypes.string,
                 }),
             ),
         ),
@@ -63,27 +64,27 @@ export default class Home extends React.Component {
             ImmutablePropTypes.listOf(
                 ImmutablePropTypes.contains({
                     header: ImmutablePropTypes.contains({
-                        id: React.PropTypes.number.isRequired,
-                        logo: React.PropTypes.string.isRequired,
-                        title: React.PropTypes.string.isRequired,
-                        post: React.PropTypes.string.isRequired,
-                        comment: React.PropTypes.string.isRequired,
-                        like: React.PropTypes.string.isRequired,
+                        id: PropTypes.number.isRequired,
+                        logo: PropTypes.string.isRequired,
+                        title: PropTypes.string.isRequired,
+                        post: PropTypes.string.isRequired,
+                        comment: PropTypes.string.isRequired,
+                        like: PropTypes.string.isRequired,
                     }),
                     hot: ImmutablePropTypes.contains({
-                        postId: React.PropTypes.number,
-                        avatar: React.PropTypes.string,
-                        title: React.PropTypes.string,
-                        content: React.PropTypes.string.isRequired,
+                        postId: PropTypes.number,
+                        avatar: PropTypes.string,
+                        title: PropTypes.string,
+                        content: PropTypes.string.isRequired,
                     }),
                     new: ImmutablePropTypes.contains({
-                        postId: React.PropTypes.number,
-                        avatar: React.PropTypes.string,
-                        title: React.PropTypes.string,
-                        content: React.PropTypes.string.isRequired,
+                        postId: PropTypes.number,
+                        avatar: PropTypes.string,
+                        title: PropTypes.string,
+                        content: PropTypes.string.isRequired,
                     }),
                     num: ImmutablePropTypes.contains({
-                        onedayAddNum: React.PropTypes.number.isRequired,
+                        onedayAddNum: PropTypes.number.isRequired,
                     }),
                 })
             ),
@@ -91,50 +92,50 @@ export default class Home extends React.Component {
         recommendation: ImmutablePropTypes.listOf(
             ImmutablePropTypes.contains({
                 author: ImmutablePropTypes.contains({
-                    avatar: React.PropTypes.string,
-                    uid: React.PropTypes.number,
-                    name: React.PropTypes.string,
+                    avatar: PropTypes.string,
+                    uid: PropTypes.number,
+                    name: PropTypes.string,
     			}),
-                timeago: React.PropTypes.string.isRequired,
-                isOwner: React.PropTypes.bool,
-                isTop: React.PropTypes.bool,
-                isLike: React.PropTypes.bool,
-                id: React.PropTypes.number,
-                title: React.PropTypes.string,
-                desc: React.PropTypes.string,
+                timeago: PropTypes.string.isRequired,
+                isOwner: PropTypes.bool,
+                isTop: PropTypes.bool,
+                isLike: PropTypes.bool,
+                id: PropTypes.number,
+                title: PropTypes.string,
+                desc: PropTypes.string,
                 thumbs: ImmutablePropTypes.listOf(
                     ImmutablePropTypes.contains({
-                        src: React.PropTypes.string,
+                        src: PropTypes.string,
                     })
                 ),
                 section: ImmutablePropTypes.contains({
-    				id: React.PropTypes.number,
-    				name: React.PropTypes.string,
+    				id: PropTypes.number,
+    				name: PropTypes.string,
     			}),
-                commentCount: React.PropTypes.number,
-                likeCount: React.PropTypes.number,
+                commentCount: PropTypes.number,
+                likeCount: PropTypes.number,
             }),
         ),
         user: ImmutablePropTypes.contains({
-            avatar: React.PropTypes.string,
-            uid: React.PropTypes.number,
-            msgCount: React.PropTypes.string,
+            avatar: PropTypes.string,
+            uid: PropTypes.number,
+            msgCount: PropTypes.string,
         }),
 
-        bannerDuration: React.PropTypes.number,
-        noticeOpen: React.PropTypes.oneOf(['Y', 'N']),
-        noticeDuration: React.PropTypes.number,
-        onPressPost: React.PropTypes.func,
-        onPressAvatar: React.PropTypes.func,
-        onPressSectionTag: React.PropTypes.func,
-        onPressComment: React.PropTypes.func,
-        onPressLike: React.PropTypes.func,
-        onRefresh: React.PropTypes.func,
-        onEndReached: React.PropTypes.func,
-        onUploadRetry: React.PropTypes.func,
-        onUploadSuccess: React.PropTypes.func,
-        onUploadDelete: React.PropTypes.func,
-        onSaveingTheWorld: React.PropTypes.func,
+        bannerDuration: PropTypes.number,
+        noticeOpen: PropTypes.oneOf(['Y', 'N']),
+        noticeDuration: PropTypes.number,
+        onPressPost: PropTypes.func,
+        onPressAvatar: PropTypes.func,
+        onPressSectionTag: PropTypes.func,
+        onPressComment: PropTypes.func,
+        onPressLike: PropTypes.func,
+        onRefresh: PropTypes.func,
+        onEndReached: PropTypes.func,
+        onUploadRetry: PropTypes.func,
+        onUploadSuccess: PropTypes.func,
+        onUploadDelete: PropTypes.func,
+        onSaveingTheWorld: PropTypes.func,
     };
 
     constructor(props) {
diff --git a/js/community/components/home/ListCell.js b/js/community/components/home/ListCell.js
index 1666b34..1ec02a2 100644
--- a/js/community/components/home/ListCell.js
+++ b/js/community/components/home/ListCell.js
@@ -8,6 +8,7 @@ import Thumbs from './Thumbs';
 import SectionItem from './SectionItem';
 import NumberButton from './NumberButton';
 import emojiDecter from '../../utils/emojiDecter';
+import PropTypes from 'prop-types';
 
 const {
     View,
@@ -23,35 +24,35 @@ export default class ListCell extends React.Component {
     static propTypes = {
         data: ImmutablePropTypes.contains({
             author: ImmutablePropTypes.contains({
-                avatar: React.PropTypes.string,
-                uid: React.PropTypes.number,
-                name: React.PropTypes.string,
+                avatar: PropTypes.string,
+                uid: PropTypes.number,
+                name: PropTypes.string,
             }),
-            timeago: React.PropTypes.string.isRequired,
-            isOwner: React.PropTypes.bool,
-            isTop: React.PropTypes.bool,
-            isLike: React.PropTypes.bool,
-            id: React.PropTypes.number,
-            title: React.PropTypes.string,
-            desc: React.PropTypes.string,
+            timeago: PropTypes.string.isRequired,
+            isOwner: PropTypes.bool,
+            isTop: PropTypes.bool,
+            isLike: PropTypes.bool,
+            id: PropTypes.number,
+            title: PropTypes.string,
+            desc: PropTypes.string,
             thumbs: ImmutablePropTypes.listOf(
                 ImmutablePropTypes.contains({
-                    src: React.PropTypes.string,
+                    src: PropTypes.string,
                 })
             ),
             section: ImmutablePropTypes.contains({
-                id: React.PropTypes.number,
-                name: React.PropTypes.string,
+                id: PropTypes.number,
+                name: PropTypes.string,
             }),
-            commentCount: React.PropTypes.number,
-            likeCount: React.PropTypes.number,
+            commentCount: PropTypes.number,
+            likeCount: PropTypes.number,
         }),
-        hideSection: React.PropTypes.bool,
-        onPressPost: React.PropTypes.func,
-        onPressAvatar: React.PropTypes.func,
-        onPressSectionTag: React.PropTypes.func,
-        onPressComment: React.PropTypes.func,
-        onPressLike: React.PropTypes.func,
+        hideSection: PropTypes.bool,
+        onPressPost: PropTypes.func,
+        onPressAvatar: PropTypes.func,
+        onPressSectionTag: PropTypes.func,
+        onPressComment: PropTypes.func,
+        onPressLike: PropTypes.func,
     };
 
     constructor(props) {
diff --git a/js/community/components/home/Notice.js b/js/community/components/home/Notice.js
index 05601da..11c73c4 100644
--- a/js/community/components/home/Notice.js
+++ b/js/community/components/home/Notice.js
@@ -4,6 +4,7 @@ import React from 'react';
 import ReactNative from 'react-native';
 import YH_Swiper from '../../../common/components/YH_Swiper';
 import ImmutablePropTypes from 'react-immutable-proptypes';
+import PropTypes from 'prop-types';
 
 const {
     View,
@@ -18,14 +19,14 @@ export default class Notice extends React.Component {
     static propTypes = {
         data: ImmutablePropTypes.listOf(
             ImmutablePropTypes.contains({
-                title: React.PropTypes.string.isRequired,
-                url: React.PropTypes.string.isRequired,
+                title: PropTypes.string.isRequired,
+                url: PropTypes.string.isRequired,
             })
         ),
-        duration: React.PropTypes.number,
-        width: React.PropTypes.number.isRequired,
-        height: React.PropTypes.number.isRequired,
-        onPress: React.PropTypes.func,
+        duration: PropTypes.number,
+        width: PropTypes.number.isRequired,
+        height: PropTypes.number.isRequired,
+        onPress: PropTypes.func,
     };
 
     constructor(props) {
diff --git a/js/community/components/home/NumberButton.js b/js/community/components/home/NumberButton.js
index 0cca13d..5bce3a0 100644
--- a/js/community/components/home/NumberButton.js
+++ b/js/community/components/home/NumberButton.js
@@ -2,6 +2,7 @@
 
 import React from 'react';
 import ReactNative from 'react-native';
+import PropTypes from 'prop-types';
 
 const {
     View,
@@ -16,8 +17,8 @@ export default class NumberButton extends React.Component {
 
     static propTypes = {
         source: Image.propTypes.source.isRequired,
-        number: React.PropTypes.number.isRequired,
-        onPressButton: React.PropTypes.func,
+        number: PropTypes.number.isRequired,
+        onPressButton: PropTypes.func,
     };
 
     constructor(props) {
diff --git a/js/community/components/home/SectionItem.js b/js/community/components/home/SectionItem.js
index 0fd8cfc..121768a 100644
--- a/js/community/components/home/SectionItem.js
+++ b/js/community/components/home/SectionItem.js
@@ -2,6 +2,7 @@
 
 import React from 'react';
 import ReactNative from 'react-native';
+import PropTypes from 'prop-types';
 
 const {
     View,
@@ -15,8 +16,8 @@ const {
 export default class SectionItem extends React.Component {
 
     static propTypes = {
-        name: React.PropTypes.string.isRequired,
-        onPressSection: React.PropTypes.func,
+        name: PropTypes.string.isRequired,
+        onPressSection: PropTypes.func,
     };
 
     constructor(props) {
diff --git a/js/community/components/home/SuperMan.js b/js/community/components/home/SuperMan.js
index ac1d312..1b831ee 100644
--- a/js/community/components/home/SuperMan.js
+++ b/js/community/components/home/SuperMan.js
@@ -4,6 +4,7 @@ import React from 'react';
 import ReactNative from 'react-native';
 import ImmutablePropTypes from 'react-immutable-proptypes';
 import SlicedImage from '../../../common/components/SlicedImage';
+import PropTypes from 'prop-types';
 
 const {
     View,
@@ -17,10 +18,10 @@ const {
 export default class SuperMan extends React.Component {
 
     static propTypes = {
-        uid: React.PropTypes.number,
-        avatar: React.PropTypes.string,
-        msgCount: React.PropTypes.string,
-        onSaveingTheWorld: React.PropTypes.func,
+        uid: PropTypes.number,
+        avatar: PropTypes.string,
+        msgCount: PropTypes.string,
+        onSaveingTheWorld: PropTypes.func,
     };
 
     constructor(props) {
diff --git a/js/community/components/home/Thumbs.js b/js/community/components/home/Thumbs.js
index da15195..6a006eb 100644
--- a/js/community/components/home/Thumbs.js
+++ b/js/community/components/home/Thumbs.js
@@ -3,6 +3,7 @@
 import React from 'react';
 import ReactNative from 'react-native';
 import SlicedImage from '../../../common/components/SlicedImage';
+import PropTypes from 'prop-types';
 
 const {
     View,
@@ -20,9 +21,9 @@ let marginLeft = Math.ceil(width - 34 - thumbHeight * 3) / 2;
 export default class Thumbs extends React.Component {
 
     static propTypes = {
-        data: React.PropTypes.arrayOf(
-            React.PropTypes.shape({
-                src: React.PropTypes.string,
+        data: PropTypes.arrayOf(
+            PropTypes.shape({
+                src: PropTypes.string,
             })
         ),
 
diff --git a/js/community/components/home/UploadProgress.js b/js/community/components/home/UploadProgress.js
index 62b02af..94b3dfc 100644
--- a/js/community/components/home/UploadProgress.js
+++ b/js/community/components/home/UploadProgress.js
@@ -4,6 +4,7 @@ import React from 'react';
 import ReactNative from 'react-native';
 import * as Progress from 'react-native-progress';
 import ImmutablePropTypes from 'react-immutable-proptypes';
+import PropTypes from 'prop-types';
 
 const {
     View,
@@ -19,12 +20,12 @@ const {
 
 export default class UploadProgress extends React.Component {
     static propTypes = {
-        uploadState:React.PropTypes.number,
-        progress:React.PropTypes.number,
-        image:React.PropTypes.string,
-        onPressRetry:React.PropTypes.func,
-        onPressDelete:React.PropTypes.func,
-        uploadSuccess:React.PropTypes.func,
+        uploadState: PropTypes.number,
+        progress: PropTypes.number,
+        image: PropTypes.string,
+        onPressRetry: PropTypes.func,
+        onPressDelete: PropTypes.func,
+        uploadSuccess: PropTypes.func,
     };
 
     constructor(props) {
diff --git a/js/community/components/home/UserBrief.js b/js/community/components/home/UserBrief.js
index 25dea31..76bd3f0 100644
--- a/js/community/components/home/UserBrief.js
+++ b/js/community/components/home/UserBrief.js
@@ -4,6 +4,7 @@ import React from 'react';
 import ReactNative from 'react-native';
 import ImmutablePropTypes from 'react-immutable-proptypes';
 import SlicedImage from '../../../common/components/SlicedImage';
+import PropTypes from 'prop-types';
 
 const {
     View,
@@ -18,11 +19,11 @@ export default class UserBrief extends React.Component {
 
     static propTypes = {
         containerStyle: View.propTypes.style,
-        avatar: React.PropTypes.string,
-        name: React.PropTypes.string,
-        timeago: React.PropTypes.string,
-        isOwner: React.PropTypes.bool,
-        onPressAvatar: React.PropTypes.func,
+        avatar: PropTypes.string,
+        name: PropTypes.string,
+        timeago: PropTypes.string,
+        isOwner: PropTypes.bool,
+        onPressAvatar: PropTypes.func,
     };
 
     constructor(props) {
diff --git a/js/community/components/home/YH_SectionView.js b/js/community/components/home/YH_SectionView.js
index f7d5f03..845c55a 100644
--- a/js/community/components/home/YH_SectionView.js
+++ b/js/community/components/home/YH_SectionView.js
@@ -1,6 +1,7 @@
 import React from 'react';
 import ReactNative from 'react-native';
 import ImmutablePropTypes from 'react-immutable-proptypes';
+import PropTypes from 'prop-types';
 
 let {
 	requireNativeComponent
@@ -31,32 +32,32 @@ class SectionView extends React.Component {
 }
 
 SectionView.propTypes = {
-	items: React.PropTypes.arrayOf(
-		React.PropTypes.shape({
-			header: React.PropTypes.shape({
-				id: React.PropTypes.number.isRequired,
-				logo: React.PropTypes.string.isRequired,
-				title: React.PropTypes.string.isRequired,
-				post: React.PropTypes.string.isRequired,
-				comment: React.PropTypes.string.isRequired,
-				like: React.PropTypes.string.isRequired,
+	items: PropTypes.arrayOf(
+		PropTypes.shape({
+			header: PropTypes.shape({
+				id: PropTypes.number.isRequired,
+				logo: PropTypes.string.isRequired,
+				title: PropTypes.string.isRequired,
+				post: PropTypes.string.isRequired,
+				comment: PropTypes.string.isRequired,
+				like: PropTypes.string.isRequired,
 			}),
-			hot: React.PropTypes.shape({
-				avatar: React.PropTypes.string,
-				title: React.PropTypes.string,
-				content: React.PropTypes.string.isRequired,
+			hot: PropTypes.shape({
+				avatar: PropTypes.string,
+				title: PropTypes.string,
+				content: PropTypes.string.isRequired,
 			}),
-			new: React.PropTypes.shape({
-				avatar: React.PropTypes.string,
-				title: React.PropTypes.string,
-				content: React.PropTypes.string.isRequired,
+			new: PropTypes.shape({
+				avatar: PropTypes.string,
+				title: PropTypes.string,
+				content: PropTypes.string.isRequired,
 			}),
-			num: React.PropTypes.shape({
-				onedayAddNum: React.PropTypes.number.isRequired,
+			num: PropTypes.shape({
+				onedayAddNum: PropTypes.number.isRequired,
 			}),
 		})
 	),
-	onClick: React.PropTypes.func,
+	onClick: PropTypes.func,
 };
 
 let YH_SectionView = requireNativeComponent('YH_SectionView', SectionView);
diff --git a/js/community/components/message/LikeCell.js b/js/community/components/message/LikeCell.js
index 42b454f..53894f9 100644
--- a/js/community/components/message/LikeCell.js
+++ b/js/community/components/message/LikeCell.js
@@ -5,6 +5,7 @@ import ReactNative from 'react-native';
 import ImmutablePropTypes from 'react-immutable-proptypes';
 import UserBrief from '../home/UserBrief';
 import SlicedImage from '../../../common/components/SlicedImage';
+import PropTypes from 'prop-types';
 
 const {
     View,
@@ -20,20 +21,20 @@ export default class LikeCell extends React.Component {
     static propTypes = {
         data: ImmutablePropTypes.contains({
             user: ImmutablePropTypes.contains({
-                avatar: React.PropTypes.string,
-                uid: React.PropTypes.number,
-                nickName: React.PropTypes.string,
+                avatar: PropTypes.string,
+                uid: PropTypes.number,
+                nickName: PropTypes.string,
             }),
-            timeago: React.PropTypes.string,
-            title: React.PropTypes.string,
+            timeago: PropTypes.string,
+            title: PropTypes.string,
             post: ImmutablePropTypes.contains({
-                id: React.PropTypes.number,
-                thumb: React.PropTypes.string,
-                sectionId: React.PropTypes.number,
+                id: PropTypes.number,
+                thumb: PropTypes.string,
+                sectionId: PropTypes.number,
             }),
         }),
-        onPressPost: React.PropTypes.func,
-        onPressAvatar: React.PropTypes.func,
+        onPressPost: PropTypes.func,
+        onPressAvatar: PropTypes.func,
     };
 
     constructor(props) {
diff --git a/js/community/components/message/LittleRedDotImage.js b/js/community/components/message/LittleRedDotImage.js
index 59bfbf1..f064872 100644
--- a/js/community/components/message/LittleRedDotImage.js
+++ b/js/community/components/message/LittleRedDotImage.js
@@ -4,6 +4,7 @@ import React from 'react';
 import ReactNative from 'react-native';
 import ImmutablePropTypes from 'react-immutable-proptypes';
 import SlicedImage from '../../../common/components/SlicedImage';
+import PropTypes from 'prop-types';
 
 const {
     View,
@@ -17,10 +18,10 @@ const {
 export default class MessageIcon extends React.Component {
 
     static propTypes = {
-        isRedDot: React.PropTypes.bool,
+        isRedDot: PropTypes.bool,
         defaultSource: Image.propTypes.source,
-        image: React.PropTypes.string,
-        iconTap: React.PropTypes.func,
+        image: PropTypes.string,
+        iconTap: PropTypes.func,
     }
 
     constructor(props) {
diff --git a/js/community/components/message/MessageCenter.js b/js/community/components/message/MessageCenter.js
index 95f2fb5..5ca43a0 100644
--- a/js/community/components/message/MessageCenter.js
+++ b/js/community/components/message/MessageCenter.js
@@ -7,6 +7,7 @@ import ImmutablePropTypes from 'react-immutable-proptypes';
 import MsgCenterCatgoryCell from './MsgCenterCatgoryCell'
 import MsgCenterNormalCell from './MsgCenterNormalCell'
 import LoadMoreIndicator from '../../../common/components/LoadMoreIndicator';
+import PropTypes from 'prop-types';
 
 const {
     View,
@@ -24,41 +25,41 @@ export default class MessageCenter extends React.Component {
     static propTypes = {
 
         sysMsg: ImmutablePropTypes.contains({
-                timeagoStr:React.PropTypes.string,
-                tips:React.PropTypes.string,
-                isRead: React.PropTypes.bool,
+                timeagoStr: PropTypes.string,
+                tips: PropTypes.string,
+                isRead: PropTypes.bool,
         }),
 
         likeMsg: ImmutablePropTypes.contains({
-                timeagoStr:React.PropTypes.string,
-                tips:React.PropTypes.string,
-                isRead: React.PropTypes.bool,
+                timeagoStr: PropTypes.string,
+                tips: PropTypes.string,
+                isRead: PropTypes.bool,
         }),
 
         list: ImmutablePropTypes.listOf(
             ImmutablePropTypes.contains({
                 author: ImmutablePropTypes.contains({
-                    avatar: React.PropTypes.string,
-                    uid: React.PropTypes.number,
-                    name: React.PropTypes.string,
+                    avatar: PropTypes.string,
+                    uid: PropTypes.number,
+                    name: PropTypes.string,
     			}),
-                timeago:React.PropTypes.string,
-                title:React.PropTypes.string,
-                reply:React.PropTypes.string,
+                timeago: PropTypes.string,
+                title: PropTypes.string,
+                reply: PropTypes.string,
                 section: ImmutablePropTypes.contains({
-    				id: React.PropTypes.number,
-    				name: React.PropTypes.string,
+    				id: PropTypes.number,
+    				name: PropTypes.string,
     			}),
             }),
         ),
 
-        onPressSystemMsg: React.PropTypes.func,
-        onPressAvatar: React.PropTypes.func,
-        onPressSection: React.PropTypes.func,
-        onRefresh: React.PropTypes.func,
-        onPressSystemCell: React.PropTypes.func,
-        onPressLikeCell: React.PropTypes.func,
-        onPressPost: React.PropTypes.func,
+        onPressSystemMsg: PropTypes.func,
+        onPressAvatar: PropTypes.func,
+        onPressSection: PropTypes.func,
+        onRefresh: PropTypes.func,
+        onPressSystemCell: PropTypes.func,
+        onPressLikeCell: PropTypes.func,
+        onPressPost: PropTypes.func,
     };
 
     constructor(props) {
diff --git a/js/community/components/message/MsgCenterCatgoryCell.js b/js/community/components/message/MsgCenterCatgoryCell.js
index da94925..c434e8c 100644
--- a/js/community/components/message/MsgCenterCatgoryCell.js
+++ b/js/community/components/message/MsgCenterCatgoryCell.js
@@ -4,6 +4,7 @@ import React from 'react';
 import ReactNative from 'react-native';
 import ImmutablePropTypes from 'react-immutable-proptypes';
 import LittleRedDotImage from './LittleRedDotImage';
+import PropTypes from 'prop-types';
 
 const {
     View,
@@ -18,12 +19,12 @@ export default class MsgCenterCatgoryCell extends React.Component {
 
     static propTypes = {
         data: ImmutablePropTypes.contains({
-            timeagoStr:React.PropTypes.string,
-            tips:React.PropTypes.string,
-            isRead: React.PropTypes.bool,
+            timeagoStr: PropTypes.string,
+            tips: PropTypes.string,
+            isRead: PropTypes.bool,
         }),
 
-        onPressCell: React.PropTypes.func,
+        onPressCell: PropTypes.func,
     };
 
     constructor(props) {
diff --git a/js/community/components/message/MsgCenterNormalCell.js b/js/community/components/message/MsgCenterNormalCell.js
index 705c0c4..c6804cf 100644
--- a/js/community/components/message/MsgCenterNormalCell.js
+++ b/js/community/components/message/MsgCenterNormalCell.js
@@ -5,6 +5,7 @@ import ReactNative from 'react-native';
 import ImmutablePropTypes from 'react-immutable-proptypes';
 import LittleRedDotImage from './LittleRedDotImage';
 import SectionItem from '../home/SectionItem';
+import PropTypes from 'prop-types';
 const {
     View,
     Text,
@@ -19,23 +20,23 @@ export default class MsgCenterNormalCell extends React.Component {
     static propTypes = {
         data: ImmutablePropTypes.contains({
             user: ImmutablePropTypes.contains({
-                avatar: React.PropTypes.string,
-                uid: React.PropTypes.number,
-                nickName: React.PropTypes.string,
+                avatar: PropTypes.string,
+                uid: PropTypes.number,
+                nickName: PropTypes.string,
             }),
-            title:React.PropTypes.string,
-            subTitle:React.PropTypes.string,
-            timeago:React.PropTypes.string,
-            isRead: React.PropTypes.bool,
+            title: PropTypes.string,
+            subTitle: PropTypes.string,
+            timeago: PropTypes.string,
+            isRead: PropTypes.bool,
             post:ImmutablePropTypes.contains({
-                sectionId: React.PropTypes.number,
-                sectionName: React.PropTypes.string,
+                sectionId: PropTypes.number,
+                sectionName: PropTypes.string,
             }),
         }),
 
-        onPressPost: React.PropTypes.func,
-        onPressAvatar: React.PropTypes.func,
-        onPressSection: React.PropTypes.func,
+        onPressPost: PropTypes.func,
+        onPressAvatar: PropTypes.func,
+        onPressSection: PropTypes.func,
     };
 
     constructor(props) {
diff --git a/js/community/components/message/SysMsgCell.js b/js/community/components/message/SysMsgCell.js
index fcab5a7..8d41a81 100644
--- a/js/community/components/message/SysMsgCell.js
+++ b/js/community/components/message/SysMsgCell.js
@@ -4,6 +4,7 @@ import React from 'react';
 import ReactNative from 'react-native';
 import ImmutablePropTypes from 'react-immutable-proptypes';
 import SectionItem from '../home/SectionItem';
+import PropTypes from 'prop-types';
 
 const {
     View,
@@ -19,23 +20,23 @@ export default class SysMsgCell extends React.Component {
     static propTypes = {
         data: ImmutablePropTypes.contains({
             user: ImmutablePropTypes.contains({
-                avatar: React.PropTypes.string,
-                uid: React.PropTypes.number,
-                nickName: React.PropTypes.string,
+                avatar: PropTypes.string,
+                uid: PropTypes.number,
+                nickName: PropTypes.string,
             }),
-            title:React.PropTypes.string,
-            subTitle:React.PropTypes.string,
-            timeago:React.PropTypes.string,
-            isRead: React.PropTypes.bool,
+            title: PropTypes.string,
+            subTitle: PropTypes.string,
+            timeago: PropTypes.string,
+            isRead: PropTypes.bool,
             post:ImmutablePropTypes.contains({
-                sectionId: React.PropTypes.number,
-                sectionName: React.PropTypes.string,
+                sectionId: PropTypes.number,
+                sectionName: PropTypes.string,
             }),
         }),
 
-        onPressPost: React.PropTypes.func,
-        onPressAvatar: React.PropTypes.func,
-        onPressSection: React.PropTypes.func,
+        onPressPost: PropTypes.func,
+        onPressAvatar: PropTypes.func,
+        onPressSection: PropTypes.func,
     };
 
 
diff --git a/js/community/components/message/SystemMessage.js b/js/community/components/message/SystemMessage.js
index 900caeb..25be39b 100644
--- a/js/community/components/message/SystemMessage.js
+++ b/js/community/components/message/SystemMessage.js
@@ -5,6 +5,7 @@ import ReactNative from 'react-native';
 import ImmutablePropTypes from 'react-immutable-proptypes';
 import SysMsgCell from './SysMsgCell';
 import LoadMoreIndicator from '../../../common/components/LoadMoreIndicator';
+import PropTypes from 'prop-types';
 
 
 
@@ -27,23 +28,23 @@ export default class SystemMessage extends React.Component {
         list: ImmutablePropTypes.listOf(
             ImmutablePropTypes.contains({
                 author: ImmutablePropTypes.contains({
-                    avatar: React.PropTypes.string,
-                    uid: React.PropTypes.number,
-                    name: React.PropTypes.string,
+                    avatar: PropTypes.string,
+                    uid: PropTypes.number,
+                    name: PropTypes.string,
     			}),
-                timeago:React.PropTypes.string,
-                title:React.PropTypes.string,
-                reply:React.PropTypes.string,
+                timeago: PropTypes.string,
+                title: PropTypes.string,
+                reply: PropTypes.string,
                 section: ImmutablePropTypes.contains({
-    				id: React.PropTypes.number,
-    				name: React.PropTypes.string,
+    				id: PropTypes.number,
+    				name: PropTypes.string,
     			}),
             }),
         ),
 
-        onPressSection: React.PropTypes.func,
-        onRefresh: React.PropTypes.func,
-        onEndReached: React.PropTypes.func,
+        onPressSection: PropTypes.func,
+        onRefresh: PropTypes.func,
+        onEndReached: PropTypes.func,
     }
 
     constructor(props) {
diff --git a/js/community/components/posting/AssertsPicker.js b/js/community/components/posting/AssertsPicker.js
index ac1ee88..24aab47 100644
--- a/js/community/components/posting/AssertsPicker.js
+++ b/js/community/components/posting/AssertsPicker.js
@@ -16,15 +16,16 @@ import {
     NativeModules,
     NativeAppEventEmitter,
 } from 'react-native';
+import PropTypes from 'prop-types';
 
 let YH_CommunityAssetsPicker = NativeModules.YH_CommunityAssetsPicker;
 
 export default class AssertsPicker extends Component {
 
     static propTypes = {
-        assets: React.PropTypes.array,
-        hidden: React.PropTypes.bool,
-        onSelectedAsset: React.PropTypes.func,
+        assets: PropTypes.array,
+        hidden: PropTypes.bool,
+        onSelectedAsset: PropTypes.func,
     };
 
     constructor(props) {
diff --git a/js/community/components/posting/PostingToolBar.js b/js/community/components/posting/PostingToolBar.js
index 03062e3..991f150 100644
--- a/js/community/components/posting/PostingToolBar.js
+++ b/js/community/components/posting/PostingToolBar.js
@@ -10,15 +10,16 @@ import {
     Dimensions,
     StyleSheet,
 } from 'react-native';
+import PropTypes from 'prop-types';
 
 export default class PostingToolBar extends Component {
 
     static propTypes = {
-        imageCount: React.PropTypes.number,
-        selectedSectionName: React.PropTypes.string,
-        onPressImage: React.PropTypes.func,
-        onPressTrigger: React.PropTypes.func,
-        onPressSection: React.PropTypes.func,
+        imageCount: PropTypes.number,
+        selectedSectionName: PropTypes.string,
+        onPressImage: PropTypes.func,
+        onPressTrigger: PropTypes.func,
+        onPressSection: PropTypes.func,
     };
 
     constructor(props) {
diff --git a/js/community/components/posting/SectionSelector.js b/js/community/components/posting/SectionSelector.js
index 23cafcf..6ea07de 100644
--- a/js/community/components/posting/SectionSelector.js
+++ b/js/community/components/posting/SectionSelector.js
@@ -9,19 +9,20 @@ import {
     Dimensions,
     StyleSheet,
 } from 'react-native';
+import PropTypes from 'prop-types';
 
 export default class SectionSelector extends Component {
 
     static propTypes = {
-        sections: React.PropTypes.arrayOf(
-            React.PropTypes.shape({
-                forumCode: React.PropTypes.number.isRequired,
-                forumName: React.PropTypes.string.isRequired,
+        sections: PropTypes.arrayOf(
+            PropTypes.shape({
+                forumCode: PropTypes.number.isRequired,
+                forumName: PropTypes.string.isRequired,
             }),
         ),
-        selectedSectionName: React.PropTypes.string.isRequired,
-        hidden: React.PropTypes.bool,
-        onPressSection: React.PropTypes.func,
+        selectedSectionName: PropTypes.string.isRequired,
+        hidden: PropTypes.bool,
+        onPressSection: PropTypes.func,
     };
 
     constructor(props) {
diff --git a/js/community/components/section/Section.js b/js/community/components/section/Section.js
index cbca5fb..9a1aa9d 100644
--- a/js/community/components/section/Section.js
+++ b/js/community/components/section/Section.js
@@ -12,6 +12,7 @@ import LoadingIndicator from '../../../common/components/LoadingIndicator';
 import LoadMoreIndicator from '../../../common/components/LoadMoreIndicator';
 import UploadProgress from '../home/UploadProgress';
 import SuperMan from '../home/SuperMan';
+import PropTypes from 'prop-types';
 
 const {
     View,
@@ -36,27 +37,27 @@ export default class Section extends React.Component {
     static propTypes = {
         progressing: ImmutablePropTypes.listOf(
             ImmutablePropTypes.contains({
-                uploadState:React.PropTypes.number.isRequired,
-                progress:React.PropTypes.number,
-                image:React.PropTypes.string,
-                onPressRetry:React.PropTypes.func,
-                onPressDelete:React.PropTypes.func,
+                uploadState:PropTypes.number.isRequired,
+                progress:PropTypes.number,
+                image:PropTypes.string,
+                onPressRetry:PropTypes.func,
+                onPressDelete:PropTypes.func,
             }),
         ),
         header: ImmutablePropTypes.listOf(
             ImmutablePropTypes.contains({
-                uri: React.PropTypes.string.isRequired,
-                title: React.PropTypes.string.isRequired,
-                post: React.PropTypes.string.isRequired,
-                comment: React.PropTypes.string.isRequired,
-                like: React.PropTypes.string.isRequired,
+                uri: PropTypes.string.isRequired,
+                title: PropTypes.string.isRequired,
+                post: PropTypes.string.isRequired,
+                comment: PropTypes.string.isRequired,
+                like: PropTypes.string.isRequired,
             }),
         ),
         notice: ImmutablePropTypes.listOf(
             ImmutablePropTypes.listOf(
                 ImmutablePropTypes.contains({
-                    title: React.PropTypes.string.isRequired,
-                    url: React.PropTypes.string,
+                    title: PropTypes.string.isRequired,
+                    url: PropTypes.string,
                 }),
             ),
         ),
@@ -65,68 +66,68 @@ export default class Section extends React.Component {
                 new: ImmutablePropTypes.listOf(
                     ImmutablePropTypes.contains({
                         author: ImmutablePropTypes.contains({
-                            avatar: React.PropTypes.string,
-                            uid: React.PropTypes.number,
-                            name: React.PropTypes.string,
+                            avatar: PropTypes.string,
+                            uid: PropTypes.number,
+                            name: PropTypes.string,
             			}),
-                        timeago: React.PropTypes.string.isRequired,
-                        isOwner: React.PropTypes.bool,
-                        isTop: React.PropTypes.bool,
-                        isLike: React.PropTypes.bool,
-                        id: React.PropTypes.number,
-                        title: React.PropTypes.string,
-                        desc: React.PropTypes.string,
+                        timeago: PropTypes.string.isRequired,
+                        isOwner: PropTypes.bool,
+                        isTop: PropTypes.bool,
+                        isLike: PropTypes.bool,
+                        id: PropTypes.number,
+                        title: PropTypes.string,
+                        desc: PropTypes.string,
                         thumbs: ImmutablePropTypes.listOf(
                             ImmutablePropTypes.contains({
-                                src: React.PropTypes.string,
+                                src: PropTypes.string,
                             })
                         ),
                         section: ImmutablePropTypes.contains({
-            				id: React.PropTypes.number,
-            				name: React.PropTypes.string,
+            				id: PropTypes.number,
+            				name: PropTypes.string,
             			}),
-                        commentCount: React.PropTypes.number,
-                        likeCount: React.PropTypes.number,
+                        commentCount: PropTypes.number,
+                        likeCount: PropTypes.number,
                     })
                 ),
                 hot: ImmutablePropTypes.listOf(
                     ImmutablePropTypes.contains({
                         author: ImmutablePropTypes.contains({
-                            avatar: React.PropTypes.string,
-                            uid: React.PropTypes.number,
-                            name: React.PropTypes.string,
+                            avatar: PropTypes.string,
+                            uid: PropTypes.number,
+                            name: PropTypes.string,
             			}),
-                        timeago: React.PropTypes.string.isRequired,
-                        isOwner: React.PropTypes.bool,
-                        isTop: React.PropTypes.bool,
-                        isLike: React.PropTypes.bool,
-                        id: React.PropTypes.number,
-                        title: React.PropTypes.string,
-                        desc: React.PropTypes.string,
+                        timeago: PropTypes.string.isRequired,
+                        isOwner:PropTypes.bool,
+                        isTop: PropTypes.bool,
+                        isLike: PropTypes.bool,
+                        id: PropTypes.number,
+                        title: PropTypes.string,
+                        desc: PropTypes.string,
                         thumbs: ImmutablePropTypes.listOf(
                             ImmutablePropTypes.contains({
-                                src: React.PropTypes.string,
+                                src: PropTypes.string,
                             })
                         ),
                         section: ImmutablePropTypes.contains({
-            				id: React.PropTypes.number,
-            				name: React.PropTypes.string,
+            				id: PropTypes.number,
+            				name: PropTypes.string,
             			}),
-                        commentCount: React.PropTypes.number,
-                        likeCount: React.PropTypes.number,
+                        commentCount: PropTypes.number,
+                        likeCount: PropTypes.number,
                     })
                 ),
             })
         ),
-        onPressNotice: React.PropTypes.func,
-        onPressPost: React.PropTypes.func,
-        onPressAvatar: React.PropTypes.func,
-        onPressSectionTag: React.PropTypes.func,
-        onPressComment: React.PropTypes.func,
-        onPressLike: React.PropTypes.func,
-        onRefresh: React.PropTypes.func,
-        onEndReached: React.PropTypes.func,
-        onSaveingTheWorld: React.PropTypes.func,
+        onPressNotice: PropTypes.func,
+        onPressPost: PropTypes.func,
+        onPressAvatar: PropTypes.func,
+        onPressSectionTag: PropTypes.func,
+        onPressComment: PropTypes.func,
+        onPressLike: PropTypes.func,
+        onRefresh: PropTypes.func,
+        onEndReached: PropTypes.func,
+        onSaveingTheWorld: PropTypes.func,
     };
 
     constructor(props) {
diff --git a/js/community/components/section/SectionHeader.js b/js/community/components/section/SectionHeader.js
index 1f73b8e..abca3f4 100644
--- a/js/community/components/section/SectionHeader.js
+++ b/js/community/components/section/SectionHeader.js
@@ -3,6 +3,7 @@
 import React from 'react';
 import ReactNative from 'react-native';
 import ImmutablePropTypes from 'react-immutable-proptypes';
+import PropTypes from 'prop-types';
 
 const {
     View,
@@ -20,12 +21,12 @@ export default class SectionHeader extends React.Component {
 
     static propTypes = {
         data: ImmutablePropTypes.contains({
-            uri: React.PropTypes.string.isRequired,
-            title: React.PropTypes.string,
-            desc: React.PropTypes.string.isRequired,
-            post: React.PropTypes.string.isRequired,
-            comment: React.PropTypes.string.isRequired,
-            like: React.PropTypes.string.isRequired,
+            uri: PropTypes.string.isRequired,
+            title: PropTypes.string,
+            desc: PropTypes.string.isRequired,
+            post: PropTypes.string.isRequired,
+            comment: PropTypes.string.isRequired,
+            like: PropTypes.string.isRequired,
         }),
     };
 
diff --git a/js/community/components/section/SectionList.js b/js/community/components/section/SectionList.js
index e61f9dd..da8f64e 100644
--- a/js/community/components/section/SectionList.js
+++ b/js/community/components/section/SectionList.js
@@ -5,6 +5,7 @@ import ReactNative from 'react-native';
 import ImmutablePropTypes from 'react-immutable-proptypes';
 import ListCell from '../home/ListCell';
 import Immutable, {Map} from 'immutable';
+import PropTypes from 'prop-types';
 
 const {
     View,
@@ -27,28 +28,28 @@ export default class SectionList extends React.Component {
         data: ImmutablePropTypes.listOf(
             ImmutablePropTypes.contains({
                 author: ImmutablePropTypes.contains({
-                    avatar: React.PropTypes.string,
-                    uid: React.PropTypes.number,
-                    name: React.PropTypes.string,
+                    avatar: PropTypes.string,
+                    uid: PropTypes.number,
+                    name: PropTypes.string,
     			}),
-                timeago: React.PropTypes.string.isRequired,
-                isOwner: React.PropTypes.bool,
-                isTop: React.PropTypes.bool,
-                isLike: React.PropTypes.bool,
-                id: React.PropTypes.number,
-                title: React.PropTypes.string,
-                desc: React.PropTypes.string,
+                timeago: PropTypes.string.isRequired,
+                isOwner: PropTypes.bool,
+                isTop: PropTypes.bool,
+                isLike: PropTypes.bool,
+                id: PropTypes.number,
+                title: PropTypes.string,
+                desc: PropTypes.string,
                 thumbs: ImmutablePropTypes.listOf(
                     ImmutablePropTypes.contains({
-                        src: React.PropTypes.string,
+                        src: PropTypes.string,
                     })
                 ),
                 section: ImmutablePropTypes.contains({
-    				id: React.PropTypes.number,
-    				name: React.PropTypes.string,
+    				id: PropTypes.number,
+    				name: PropTypes.string,
     			}),
-                commentCount: React.PropTypes.number,
-                likeCount: React.PropTypes.number,
+                commentCount: PropTypes.number,
+                likeCount: PropTypes.number,
             }),
         ),
     };
diff --git a/js/community/components/section/SectionTabBar.js b/js/community/components/section/SectionTabBar.js
index b21bb7b..1f8e657 100644
--- a/js/community/components/section/SectionTabBar.js
+++ b/js/community/components/section/SectionTabBar.js
@@ -1,5 +1,6 @@
 import React from 'react';
 import ReactNative from 'react-native';
+import PropTypes from 'prop-types';
 
 const {
     StyleSheet,
@@ -12,15 +13,15 @@ const {
 
 export default class SectionTabBar extends React.Component {
     static propTypes = {
-        containerWidth: React.PropTypes.number,
-        goToPage: React.PropTypes.func,
-        activeTab: React.PropTypes.number,
-        tabs: React.PropTypes.array,
-        underlineColor: React.PropTypes.string,
-        underlineHeight: React.PropTypes.number,
-        backgroundColor: React.PropTypes.string,
-        activeTextColor: React.PropTypes.string,
-        inactiveTextColor: React.PropTypes.string,
+        containerWidth: PropTypes.number,
+        goToPage: PropTypes.func,
+        activeTab: PropTypes.number,
+        tabs: PropTypes.array,
+        underlineColor: PropTypes.string,
+        underlineHeight: PropTypes.number,
+        backgroundColor: PropTypes.string,
+        activeTextColor: PropTypes.string,
+        inactiveTextColor: PropTypes.string,
         textStyle: Text.propTypes.style,
         tabStyle: View.propTypes.style,
     };
diff --git a/js/community/components/subjectPost/SPLikeCell.js b/js/community/components/subjectPost/SPLikeCell.js
index 01d3953..3239984 100644
--- a/js/community/components/subjectPost/SPLikeCell.js
+++ b/js/community/components/subjectPost/SPLikeCell.js
@@ -4,6 +4,7 @@ import React from 'react';
 import ReactNative from 'react-native';
 import ImmutablePropTypes from 'react-immutable-proptypes';
 import SlicedImage from '../../../common/components/SlicedImage';
+import PropTypes from 'prop-types';
 
 const {
     View,
@@ -17,15 +18,15 @@ const {
 export default class SPLikeCell extends React.Component {
 
     static propTypes = {
-        users: React.PropTypes.arrayOf(
-            React.PropTypes.shape({
-                nickName: React.PropTypes.string,
-                headIcon: React.PropTypes.string,
-                uid: React.PropTypes.number,
+        users: PropTypes.arrayOf(
+            PropTypes.shape({
+                nickName: PropTypes.string,
+                headIcon: PropTypes.string,
+                uid: PropTypes.number,
         })),
-        like: React.PropTypes.string,
-        browse: React.PropTypes.string,
-        onPressLikeCell: React.PropTypes.func,
+        like: PropTypes.string,
+        browse: PropTypes.string,
+        onPressLikeCell: PropTypes.func,
     };
 
     constructor(props) {
diff --git a/js/community/components/user/CommunityList.js b/js/community/components/user/CommunityList.js
index a282ecc..bff869d 100644
--- a/js/community/components/user/CommunityList.js
+++ b/js/community/components/user/CommunityList.js
@@ -5,6 +5,7 @@ import ReactNative from 'react-native';
 import ListCell from '../home/ListCell';
 import ImmutablePropTypes from 'react-immutable-proptypes';
 import EmptyListTip from './EmptyListTip';
+import PropTypes from 'prop-types';
 
 const {
     View,
@@ -23,30 +24,30 @@ export default class CommunityList extends React.Component {
         data: ImmutablePropTypes.listOf(
             ImmutablePropTypes.contains({
                 author: ImmutablePropTypes.contains({
-                    avatar: React.PropTypes.string,
-                    uid: React.PropTypes.number,
-                    name: React.PropTypes.string,
+                    avatar: PropTypes.string,
+                    uid: PropTypes.number,
+                    name: PropTypes.string,
     			}),
-                timeago: React.PropTypes.string.isRequired,
-                isOwner: React.PropTypes.bool,
-                isTop: React.PropTypes.bool,
-                isLike: React.PropTypes.bool,
-                title: React.PropTypes.string,
-                desc: React.PropTypes.string,
+                timeago: PropTypes.string.isRequired,
+                isOwner: PropTypes.bool,
+                isTop: PropTypes.bool,
+                isLike: PropTypes.bool,
+                title: PropTypes.string,
+                desc: PropTypes.string,
                 thumbs: ImmutablePropTypes.listOf(
                     ImmutablePropTypes.contains({
-                        src: React.PropTypes.string,
+                        src: PropTypes.string,
                     })
                 ),
                 section: ImmutablePropTypes.contains({
-    				id: React.PropTypes.number,
-    				name: React.PropTypes.string,
+    				id: PropTypes.number,
+    				name: PropTypes.string,
     			}),
-                commentCount: React.PropTypes.number,
-                likeCount: React.PropTypes.number,
+                commentCount: PropTypes.number,
+                likeCount: PropTypes.number,
             }),
         ),
-        onPressPost: React.PropTypes.func,
+        onPressPost: PropTypes.func,
     };
 
     constructor(props) {
diff --git a/js/community/components/user/EmptyListTip.js b/js/community/components/user/EmptyListTip.js
index 1fe991a..d191362 100644
--- a/js/community/components/user/EmptyListTip.js
+++ b/js/community/components/user/EmptyListTip.js
@@ -6,11 +6,12 @@ import {
     View,
     Text,
 } from 'react-native';
+import PropTypes from 'prop-types';
 
 export default class EmptyListTip extends Component {
 
     static propTypes = {
-        text: React.PropTypes.string,
+        text: PropTypes.string,
     };
 
     static defaultProps = {
diff --git a/js/community/components/user/MessageIcon.js b/js/community/components/user/MessageIcon.js
index 6337f68..6f42cbc 100644
--- a/js/community/components/user/MessageIcon.js
+++ b/js/community/components/user/MessageIcon.js
@@ -3,6 +3,7 @@
 import React from 'react';
 import ReactNative from 'react-native';
 import ImmutablePropTypes from 'react-immutable-proptypes';
+import PropTypes from 'prop-types';
 // import SlicedImage from '../../../common/components/SlicedImage';
 
 const {
@@ -17,8 +18,8 @@ const {
 export default class MessageIcon extends React.Component {
 
     static propTypes = {
-        msgCount: React.PropTypes.string,
-        iconTap: React.PropTypes.func,
+        msgCount: PropTypes.string,
+        iconTap: PropTypes.func,
     }
 
     constructor(props) {
diff --git a/js/community/components/user/ReplyCell.js b/js/community/components/user/ReplyCell.js
index bd94de1..ee1287d 100644
--- a/js/community/components/user/ReplyCell.js
+++ b/js/community/components/user/ReplyCell.js
@@ -4,6 +4,7 @@ import React from 'react';
 import ReactNative from 'react-native';
 import ImmutablePropTypes from 'react-immutable-proptypes';
 import UserBrief from '../home/UserBrief';
+import PropTypes from 'prop-types';
 
 const {
     View,
@@ -20,42 +21,42 @@ export default class ReplyCell extends React.Component {
 
         data: ImmutablePropTypes.contains({
             self: ImmutablePropTypes.contains({
-                avatar: React.PropTypes.string,
-                uid: React.PropTypes.number,
-                name: React.PropTypes.string,
-                backgroundImage: React.PropTypes.string,
+                avatar: PropTypes.string,
+                uid: PropTypes.number,
+                name: PropTypes.string,
+                backgroundImage: PropTypes.string,
             }),
 
-            createTime: React.PropTypes.number,
-            timeago: React.PropTypes.string,
+            createTime: PropTypes.number,
+            timeago: PropTypes.string,
 
             replyToUser: ImmutablePropTypes.contains({
-                avatar: React.PropTypes.string,
-                uid: React.PropTypes.number,
-                name: React.PropTypes.string,
-                backgroundImage: React.PropTypes.string,
+                avatar: PropTypes.string,
+                uid: PropTypes.number,
+                name: PropTypes.string,
+                backgroundImage: PropTypes.string,
             }),
 
             replyContent: ImmutablePropTypes.contains({
                 thumbs: ImmutablePropTypes.listOf(
                     ImmutablePropTypes.contains({
-                        src: React.PropTypes.string,
+                        src: PropTypes.string,
                     })
                 ),
-                desc: React.PropTypes.string,
+                desc: PropTypes.string,
             }),
 
             postInfo: ImmutablePropTypes.contains({
-                type: React.PropTypes.string,
-                title: React.PropTypes.string,
-                postId: React.PropTypes.number,
+                type: PropTypes.string,
+                title: PropTypes.string,
+                postId: PropTypes.number,
             }),
 
         }),
 
-            onPressAvatar: React.PropTypes.func,
-            onPressReply: React.PropTypes.func,
-            onPressPost: React.PropTypes.func,
+            onPressAvatar: PropTypes.func,
+            onPressReply: PropTypes.func,
+            onPressPost: PropTypes.func,
 
 
     };
diff --git a/js/community/components/user/User.js b/js/community/components/user/User.js
index 6266f4c..691b28c 100644
--- a/js/community/components/user/User.js
+++ b/js/community/components/user/User.js
@@ -12,6 +12,7 @@ import LoadMoreIndicator from '../../../common/components/LoadMoreIndicator';
 import UserNavBar from './UserNavBar';
 import TimerMixin from 'react-timer-mixin';
 import EmptyListTip from './EmptyListTip';
+import PropTypes from 'prop-types';
 
 const {
     View,
@@ -38,11 +39,11 @@ export default class User extends React.Component {
 
         userInfo: ImmutablePropTypes.listOf(
             ImmutablePropTypes.contains({
-                avatar: React.PropTypes.string,
-                backgroundImage: React.PropTypes.string,
-                nickName: React.PropTypes.string.isRequired,
-                sign: React.PropTypes.string,
-                msgCount: React.PropTypes.string,
+                avatar: PropTypes.string,
+                backgroundImage: PropTypes.string,
+                nickName: PropTypes.string.isRequired,
+                sign: PropTypes.string,
+                msgCount: PropTypes.string,
             }),
         ),
 
@@ -51,90 +52,90 @@ export default class User extends React.Component {
                 posts: ImmutablePropTypes.listOf(
                     ImmutablePropTypes.contains({
                         author: ImmutablePropTypes.contains({
-                            avatar: React.PropTypes.string,
-                            uid: React.PropTypes.number,
-                            name: React.PropTypes.string,
+                            avatar: PropTypes.string,
+                            uid: PropTypes.number,
+                            name: PropTypes.string,
                         }),
-                        timeago: React.PropTypes.string.isRequired,
-                        isOwner: React.PropTypes.bool,
-                        isTop: React.PropTypes.bool,
-                        isLike: React.PropTypes.bool,
-                        id: React.PropTypes.number,
-                        title: React.PropTypes.string,
-                        desc: React.PropTypes.string,
+                        timeago: PropTypes.string.isRequired,
+                        isOwner: PropTypes.bool,
+                        isTop: PropTypes.bool,
+                        isLike: PropTypes.bool,
+                        id: PropTypes.number,
+                        title: PropTypes.string,
+                        desc: PropTypes.string,
                         thumbs: ImmutablePropTypes.listOf(
                             ImmutablePropTypes.contains({
-                                src: React.PropTypes.string,
+                                src: PropTypes.string,
                             })
                         ),
                         section: ImmutablePropTypes.contains({
-                            id: React.PropTypes.number,
-                            name: React.PropTypes.string,
+                            id: PropTypes.number,
+                            name: PropTypes.string,
                         }),
-                        commentCount: React.PropTypes.number,
-                        likeCount: React.PropTypes.number,
+                        commentCount: PropTypes.number,
+                        likeCount: PropTypes.number,
                     })
                 ),
                 like: ImmutablePropTypes.listOf(
                     ImmutablePropTypes.contains({
                         author: ImmutablePropTypes.contains({
-                            avatar: React.PropTypes.string,
-                            uid: React.PropTypes.number,
-                            name: React.PropTypes.string,
+                            avatar: PropTypes.string,
+                            uid: PropTypes.number,
+                            name: PropTypes.string,
                         }),
-                        timeago: React.PropTypes.string.isRequired,
-                        isOwner: React.PropTypes.bool,
-                        isTop: React.PropTypes.bool,
-                        isLike: React.PropTypes.bool,
-                        id: React.PropTypes.number,
-                        title: React.PropTypes.string,
-                        desc: React.PropTypes.string,
+                        timeago: PropTypes.string.isRequired,
+                        isOwner: PropTypes.bool,
+                        isTop: PropTypes.bool,
+                        isLike: PropTypes.bool,
+                        id: PropTypes.number,
+                        title: PropTypes.string,
+                        desc: PropTypes.string,
                         thumbs: ImmutablePropTypes.listOf(
                             ImmutablePropTypes.contains({
-                                src: React.PropTypes.string,
+                                src: PropTypes.string,
                             })
                         ),
                         section: ImmutablePropTypes.contains({
-                            id: React.PropTypes.number,
-                            name: React.PropTypes.string,
+                            id: PropTypes.number,
+                            name: PropTypes.string,
                         }),
-                        commentCount: React.PropTypes.number,
-                        likeCount: React.PropTypes.number,
+                        commentCount: PropTypes.number,
+                        likeCount: PropTypes.number,
                     })
                 ),
 
                 reply: ImmutablePropTypes.listOf(
                     ImmutablePropTypes.contains({
                         self: ImmutablePropTypes.contains({
-                            avatar: React.PropTypes.string,
-                            uid: React.PropTypes.number,
-                            name: React.PropTypes.string,
-                            backgroundImage: React.PropTypes.string,
+                            avatar: PropTypes.string,
+                            uid: PropTypes.number,
+                            name: PropTypes.string,
+                            backgroundImage: PropTypes.string,
                         }),
 
-                        createTime: React.PropTypes.number,
-                        timeago: React.PropTypes.string,
+                        createTime: PropTypes.number,
+                        timeago: PropTypes.string,
 
                         replyToUser: ImmutablePropTypes.contains({
-                            avatar: React.PropTypes.string,
-                            uid: React.PropTypes.number,
-                            name: React.PropTypes.string,
-                            backgroundImage: React.PropTypes.string,
+                            avatar: PropTypes.string,
+                            uid: PropTypes.number,
+                            name: PropTypes.string,
+                            backgroundImage: PropTypes.string,
                         }),
 
                         replyContent: ImmutablePropTypes.contains({
                             thumbs: ImmutablePropTypes.listOf(
                                 ImmutablePropTypes.contains({
-                                    src: React.PropTypes.string,
+                                    src: PropTypes.string,
                                 })
                             ),
-                            desc: React.PropTypes.string,
+                            desc: PropTypes.string,
                         }),
 
                         postInfo: ImmutablePropTypes.contains({
-                            type: React.PropTypes.string,
-                            title: React.PropTypes.string,
-                            postId: React.PropTypes.number,
+                            type: PropTypes.string,
+                            title: PropTypes.string,
+                            postId: PropTypes.number,
                         }),
 
                     }),
@@ -144,13 +145,13 @@ export default class User extends React.Component {
             })
         ),
 
-        onPressUserAvatar: React.PropTypes.func,
-        onPressAvatar: React.PropTypes.func,
-        onPressComment: React.PropTypes.func,
-        onPressLike: React.PropTypes.func,
-        onPressPost: React.PropTypes.func,
-        onEndReached: React.PropTypes.func,
-        onRefresh: React.PropTypes.func,
+        onPressUserAvatar: PropTypes.func,
+        onPressAvatar: PropTypes.func,
+        onPressComment: PropTypes.func,
+        onPressLike: PropTypes.func,
+        onPressPost: PropTypes.func,
+        onEndReached: PropTypes.func,
+        onRefresh: PropTypes.func,
     };
 
     constructor(props) {
diff --git a/js/community/components/user/UserCenterTop.js b/js/community/components/user/UserCenterTop.js
index d07de3f..a0c0df7 100644
--- a/js/community/components/user/UserCenterTop.js
+++ b/js/community/components/user/UserCenterTop.js
@@ -4,6 +4,7 @@ import React from 'react';
 import ReactNative from 'react-native';
 import ImmutablePropTypes from 'react-immutable-proptypes';
 import SlicedImage from '../../../common/components/SlicedImage';
+import PropTypes from 'prop-types';
 
 const {
     View,
@@ -21,13 +22,13 @@ export default class UserCenterTop extends React.Component {
 
     static propTypes = {
         userInfo: ImmutablePropTypes.contains({
-            avatar: React.PropTypes.string,
-            backgroundImage: React.PropTypes.string,
-            nickName: React.PropTypes.string.isRequired,
-            sign: React.PropTypes.string,
+            avatar: PropTypes.string,
+            backgroundImage: PropTypes.string,
+            nickName: PropTypes.string.isRequired,
+            sign: PropTypes.string,
         }),
-        onPressUserAvatar: React.PropTypes.func,
-        onPressBackgroundImg: React.PropTypes.func,
+        onPressUserAvatar: PropTypes.func,
+        onPressBackgroundImg: PropTypes.func,
     };
 
     constructor(props) {
diff --git a/js/community/components/userThatNotMe/UserThatNotMe.js b/js/community/components/userThatNotMe/UserThatNotMe.js
index 971f68f..63613ef 100644
--- a/js/community/components/userThatNotMe/UserThatNotMe.js
+++ b/js/community/components/userThatNotMe/UserThatNotMe.js
@@ -10,6 +10,7 @@ import ListCell from '../home/ListCell';
 import LoadMoreIndicator from '../../../common/components/LoadMoreIndicator';
 import UserNavBar from '../user/UserNavBar';
 import EmptyListTip from '../user/EmptyListTip';
+import PropTypes from 'prop-types';
 
 const {
     View,
@@ -31,44 +32,44 @@ export default class UserThatNotMe extends React.Component {
 
     static propTypes = {
         user: ImmutablePropTypes.contains({
-            avatar: React.PropTypes.string,
-            backgroundImage: React.PropTypes.string,
-            nickName: React.PropTypes.string.isRequired,
-            sign: React.PropTypes.string,
+            avatar: PropTypes.string,
+            backgroundImage: PropTypes.string,
+            nickName: PropTypes.string.isRequired,
+            sign: PropTypes.string,
         }),
         posts: ImmutablePropTypes.listOf(
             ImmutablePropTypes.contains({
                 author: ImmutablePropTypes.contains({
-                    avatar: React.PropTypes.string,
-                    uid: React.PropTypes.number,
-                    name: React.PropTypes.string,
+                    avatar: PropTypes.string,
+                    uid: PropTypes.number,
+                    name: PropTypes.string,
                 }),
-                timeago: React.PropTypes.string.isRequired,
-                isOwner: React.PropTypes.bool,
-                isTop: React.PropTypes.bool,
-                isLike: React.PropTypes.bool,
-                id: React.PropTypes.number,
-                title: React.PropTypes.string,
-                desc: React.PropTypes.string,
+                timeago: PropTypes.string.isRequired,
+                isOwner: PropTypes.bool,
+                isTop: PropTypes.bool,
+                isLike: PropTypes.bool,
+                id: PropTypes.number,
+                title: PropTypes.string,
+                desc: PropTypes.string,
                 thumbs: ImmutablePropTypes.listOf(
                     ImmutablePropTypes.contains({
-                        src: React.PropTypes.string,
+                        src: PropTypes.string,
                     })
                 ),
                 section: ImmutablePropTypes.contains({
-                    id: React.PropTypes.number,
-                    name: React.PropTypes.string,
+                    id: PropTypes.number,
+                    name: PropTypes.string,
                 }),
-                commentCount: React.PropTypes.number,
-                likeCount: React.PropTypes.number,
+                commentCount: PropTypes.number,
+                likeCount: PropTypes.number,
             }),
         ),
-        onPressPost: React.PropTypes.func,
-        onPressAvatar: React.PropTypes.func,
-        onPressSectionTag: React.PropTypes.func,
-        onPressComment: React.PropTypes.func,
-        onPressLike: React.PropTypes.func,
-        onEndReached: React.PropTypes.func,
+        onPressPost: PropTypes.func,
+        onPressAvatar: PropTypes.func,
+        onPressSectionTag: PropTypes.func,
+        onPressComment: PropTypes.func,
+        onPressLike: PropTypes.func,
+        onEndReached: PropTypes.func,
     };
 
 
diff --git a/js/community/store/configureStore.js b/js/community/store/configureStore.js
index 94774ac..329f8da 100755
--- a/js/community/store/configureStore.js
+++ b/js/community/store/configureStore.js
@@ -13,7 +13,7 @@
  */
 import { createStore, applyMiddleware } from 'redux';
 import thunk from 'redux-thunk';
-import createLogger from 'redux-logger';
+import {createLogger} from 'redux-logger';
 
 /**
 * ## Reducer
diff --git a/js/coupon/Coupon.js b/js/coupon/Coupon.js
index 7d791e2..121bd98 100644
--- a/js/coupon/Coupon.js
+++ b/js/coupon/Coupon.js
@@ -8,6 +8,7 @@ import ReactNative, {
 	Dimensions,
 	TouchableOpacity,
 } from 'react-native';
+import createReactClass from 'create-react-class';
 
 import {
 	Provider,
@@ -42,7 +43,7 @@ function getInitialState() {
 
 export default function native(platform) {
 
-	let YH_Coupon = React.createClass({
+	let YH_Coupon = createReactClass({
 
 		render() {
 		  	const store = configureStore(getInitialState());
diff --git a/js/coupon/components/common/BannerView.js b/js/coupon/components/common/BannerView.js
deleted file mode 100644
index c3c1ebd..0000000
--- a/js/coupon/components/common/BannerView.js
+++ /dev/null
@@ -1,45 +0,0 @@
-import React, {Component} from 'react';
-import ReactNative from 'react-native';
-
-let { requireNativeComponent } = ReactNative;
-
-// requireNativeComponent automatically resolves this to "YH_BannerViewManager"
-module.exports = requireNativeComponent('YH_BannerView', null);
-
-class BannerView extends React.Component {
-
-	constructor(props) {
-		super(props);
-
-    	this._onSelectBanner = this._onSelectBanner.bind(this);
-  	}
-
-  	_onSelectBanner(event: Event) {
-
-    	if (!this.props.onSelectBanner) {
-      		return;
-    	}
-
-    	this.props.onSelectBanner(event.nativeEvent.url);
-  	}
-
-	render() {
-
-		return <YH_BannerView {...this.props} onPress={this._onSelectBanner} />;
-	}
-}
-
-BannerView.propTypes = {
-	autoLooping: React.PropTypes.bool,
-	items: React.PropTypes.arrayOf(
-		React.PropTypes.shape({
-			src: React.PropTypes.string.isRequired,
-			url: React.PropTypes.string.isRequired,
-		})
-	),
-	onSelectBanner: React.PropTypes.func,
-};
-
-let YH_BannerView = requireNativeComponent('YH_BannerView', BannerView);
-
-module.exports = BannerView;
diff --git a/js/coupon/components/common/Button.js b/js/coupon/components/common/Button.js
index 62cfde7..6d5b28f 100644
--- a/js/coupon/components/common/Button.js
+++ b/js/coupon/components/common/Button.js
@@ -8,6 +8,7 @@ import {
     TouchableWithoutFeedback,
     StyleSheet,
 } from 'react-native';
+import PropTypes from 'prop-types';
 
 export default class Button extends Component {
 
@@ -91,13 +92,13 @@ export default class Button extends Component {
 };
 
 Button.propTypes = {
-    title: React.PropTypes.string,
-    selected: React.PropTypes.bool,
-    onPress: React.PropTypes.func,
-    selectedTitleStyle: React.PropTypes.any,
-    normalTitleStyle: React.PropTypes.any,
-    helightedTitleStyle: React.PropTypes.any,
-    containerStyle: React.PropTypes.any,
+    title: PropTypes.string,
+    selected: PropTypes.bool,
+    onPress: PropTypes.func,
+    selectedTitleStyle: PropTypes.any,
+    normalTitleStyle: PropTypes.any,
+    helightedTitleStyle: PropTypes.any,
+    containerStyle: PropTypes.any,
 };
 
 let styles = StyleSheet.create({
diff --git a/js/coupon/components/coupon/Prompt.js b/js/coupon/components/coupon/Prompt.js
index 201d777..a978a4f 100644
--- a/js/coupon/components/coupon/Prompt.js
+++ b/js/coupon/components/coupon/Prompt.js
@@ -12,6 +12,7 @@ import {
 } from 'react-native';
 
 import TimerMixin from 'react-timer-mixin';
+import PropTypes from 'prop-types';
 
 
 const initOpacity = 0.8;
@@ -20,15 +21,15 @@ export default class Prompt extends Component {
 
     static propTypes = {
         icon: Image.propTypes.source,
-        overlayColor: React.PropTypes.string,
-        title: React.PropTypes.string,
-        titleColor: React.PropTypes.string,
-        titleFontSize: React.PropTypes.number,
-        text: React.PropTypes.string,
-        textColor: React.PropTypes.string,
-        textFontSize: React.PropTypes.number,
-        duration: React.PropTypes.number,
-        onPromptHidden: React.PropTypes.func,
+        overlayColor: PropTypes.string,
+        title: PropTypes.string,
+        titleColor: PropTypes.string,
+        titleFontSize: PropTypes.number,
+        text: PropTypes.string,
+        textColor: PropTypes.string,
+        textFontSize: PropTypes.number,
+        duration: PropTypes.number,
+        onPromptHidden: PropTypes.func,
     };
 
     static defaultProps = {
diff --git a/js/coupon/store/configureStore.js b/js/coupon/store/configureStore.js
index 035022b..37d8edf 100644
--- a/js/coupon/store/configureStore.js
+++ b/js/coupon/store/configureStore.js
@@ -13,7 +13,7 @@
  */
 import { createStore, applyMiddleware } from 'redux';
 import thunk from 'redux-thunk';
-import createLogger from 'redux-logger';
+import {createLogger} from 'redux-logger';
 
 /**
 * ## Reducer
diff --git a/js/globalHome/GlobalHome.js b/js/globalHome/GlobalHome.js
index 6e42f50..4a6f6ac 100644
--- a/js/globalHome/GlobalHome.js
+++ b/js/globalHome/GlobalHome.js
@@ -5,6 +5,7 @@ import ReactNative, {
 	AppRegistry,
 	Platform,
 } from 'react-native';
+import createReactClass from 'create-react-class';
 
 import {
 	Provider,
@@ -25,7 +26,6 @@ import {
 	setServiceHost,
 } from './reducers/app/appActions';
 
-
 function getInitialState() {
 	const _initState = {
 		app: (new appInitialState()),
@@ -36,7 +36,7 @@ function getInitialState() {
 
 export default function native(platform) {
 
-	let YH_GlobalHome = React.createClass({
+	let YH_GlobalHome = createReactClass({
 
 		render() {
 		  	const store = configureStore(getInitialState());
diff --git a/js/globalHome/store/configureStore.js b/js/globalHome/store/configureStore.js
index 035022b..37d8edf 100644
--- a/js/globalHome/store/configureStore.js
+++ b/js/globalHome/store/configureStore.js
@@ -13,7 +13,7 @@
  */
 import { createStore, applyMiddleware } from 'redux';
 import thunk from 'redux-thunk';
-import createLogger from 'redux-logger';
+import {createLogger} from 'redux-logger';
 
 /**
 * ## Reducer
diff --git a/js/goodGoodsRecommend/GoodGoodsRecommend.js b/js/goodGoodsRecommend/GoodGoodsRecommend.js
index 1fb8db2..a307db8 100644
--- a/js/goodGoodsRecommend/GoodGoodsRecommend.js
+++ b/js/goodGoodsRecommend/GoodGoodsRecommend.js
@@ -10,6 +10,7 @@ import {
 	Provider,
 	connect
 } from 'react-redux';
+import createReactClass from 'create-react-class';
 
 import configureStore from './store/configureStore';
 import {Record, List, Map} from 'immutable';
@@ -45,7 +46,7 @@ function getInitialState() {
 
 export default function native(platform) {
 
-	let YH_GoodGoodsRecommend = React.createClass({
+	let YH_GoodGoodsRecommend = createReactClass({
 
 		render() {
 		  	const store = configureStore(getInitialState());
diff --git a/js/goodGoodsRecommend/components/detail/GoodGoodsImagesView.js b/js/goodGoodsRecommend/components/detail/GoodGoodsImagesView.js
index 2520813..cac7a30 100644
--- a/js/goodGoodsRecommend/components/detail/GoodGoodsImagesView.js
+++ b/js/goodGoodsRecommend/components/detail/GoodGoodsImagesView.js
@@ -1,14 +1,13 @@
 import React from 'react';
 import ReactNative from 'react-native';
 import ImmutablePropTypes from 'react-immutable-proptypes';
+import PropTypes from 'prop-types';
 
 let {
 	requireNativeComponent,
 	View
 } = ReactNative;
 
-module.exports = requireNativeComponent('YH_GoodGoodsImagesView', null);
-
 class GoodGoodsImagesView extends React.Component {
 
 	constructor(props) {
@@ -30,8 +29,8 @@ class GoodGoodsImagesView extends React.Component {
 }
 
 GoodGoodsImagesView.propTypes = {
-	items: React.PropTypes.arrayOf(
-		React.PropTypes.string
+	items: PropTypes.arrayOf(
+		PropTypes.string
 	),
 	...View.propTypes // 包含默认的View的属性
 };
diff --git a/js/goodGoodsRecommend/store/configureStore.js b/js/goodGoodsRecommend/store/configureStore.js
index 035022b..37d8edf 100644
--- a/js/goodGoodsRecommend/store/configureStore.js
+++ b/js/goodGoodsRecommend/store/configureStore.js
@@ -13,7 +13,7 @@
  */
 import { createStore, applyMiddleware } from 'redux';
 import thunk from 'redux-thunk';
-import createLogger from 'redux-logger';
+import {createLogger} from 'redux-logger';
 
 /**
 * ## Reducer
diff --git a/js/guang/Guang.js b/js/guang/Guang.js
index c1f5f96..20368f2 100644
--- a/js/guang/Guang.js
+++ b/js/guang/Guang.js
@@ -5,6 +5,7 @@ import ReactNative, {
 	AppRegistry,
 	Platform,
 } from 'react-native';
+import createReactClass from 'create-react-class';
 
 import {
 	Provider,
@@ -49,7 +50,7 @@ function getInitialState() {
 
 export default function native(platform) {
 
-	let YH_Guang = React.createClass({
+	let YH_Guang = createReactClass({
 
 		render() {
 		  	const store = configureStore(getInitialState());
diff --git a/js/guang/store/configureStore.js b/js/guang/store/configureStore.js
index 035022b..37d8edf 100644
--- a/js/guang/store/configureStore.js
+++ b/js/guang/store/configureStore.js
@@ -13,7 +13,7 @@
  */
 import { createStore, applyMiddleware } from 'redux';
 import thunk from 'redux-thunk';
-import createLogger from 'redux-logger';
+import {createLogger} from 'redux-logger';
 
 /**
 * ## Reducer
diff --git a/js/home/Home.js b/js/home/Home.js
index bfc624a..0ce1025 100644
--- a/js/home/Home.js
+++ b/js/home/Home.js
@@ -5,6 +5,7 @@ import ReactNative, {
 	AppRegistry,
 	Platform,
 } from 'react-native';
+import createReactClass from 'create-react-class';
 
 import {
 	Provider,
@@ -41,7 +42,7 @@ function getInitialState() {
 
 export default function native(platform) {
 
-	let YH_Home = React.createClass({
+	let YH_Home = createReactClass({
 
 		render() {
 			let channel = this.props.channelId;
diff --git a/js/home/store/configureStore.js b/js/home/store/configureStore.js
index 035022b..37d8edf 100644
--- a/js/home/store/configureStore.js
+++ b/js/home/store/configureStore.js
@@ -13,7 +13,7 @@
  */
 import { createStore, applyMiddleware } from 'redux';
 import thunk from 'redux-thunk';
-import createLogger from 'redux-logger';
+import {createLogger} from 'redux-logger';
 
 /**
 * ## Reducer
diff --git a/js/installment/Installment.js b/js/installment/Installment.js
index e0e84d8..ccf3f9e 100644
--- a/js/installment/Installment.js
+++ b/js/installment/Installment.js
@@ -12,6 +12,7 @@ import {
 	Provider,
 	connect
 } from 'react-redux';
+import createReactClass from 'create-react-class';
 import configureStore from './store/configureStore';
 import {Record, List, Map} from 'immutable';
 
@@ -85,7 +86,7 @@ function getInitialState() {
 
 export default function native(platform) {
 
-	let YH_Installment = React.createClass({
+	let YH_Installment = createReactClass({
 		render() {
 			let type = this.props.type;
 		  	const store = configureStore(getInitialState());
diff --git a/js/installment/store/configureStore.js b/js/installment/store/configureStore.js
index 035022b..37d8edf 100644
--- a/js/installment/store/configureStore.js
+++ b/js/installment/store/configureStore.js
@@ -13,7 +13,7 @@
  */
 import { createStore, applyMiddleware } from 'redux';
 import thunk from 'redux-thunk';
-import createLogger from 'redux-logger';
+import {createLogger} from 'redux-logger';
 
 /**
 * ## Reducer
diff --git a/js/message/Message.js b/js/message/Message.js
index 998e24d..4aadd7f 100644
--- a/js/message/Message.js
+++ b/js/message/Message.js
@@ -10,6 +10,7 @@ import {
 	Provider,
 	connect
 } from 'react-redux';
+import createReactClass from 'create-react-class';
 
 import configureStore from './store/configureStore';
 import {Record, List, Map} from 'immutable';
@@ -44,7 +45,7 @@ function getInitialState() {
 
 export default function native(platform) {
 
-	let YH_Message = React.createClass({
+	let YH_Message = createReactClass({
 
 		render() {
 		  	const store = configureStore(getInitialState());
diff --git a/js/message/store/configureStore.js b/js/message/store/configureStore.js
index 035022b..37d8edf 100644
--- a/js/message/store/configureStore.js
+++ b/js/message/store/configureStore.js
@@ -13,7 +13,7 @@
  */
 import { createStore, applyMiddleware } from 'redux';
 import thunk from 'redux-thunk';
-import createLogger from 'redux-logger';
+import {createLogger} from 'redux-logger';
 
 /**
 * ## Reducer
diff --git a/js/mine/Mine.js b/js/mine/Mine.js
index fc546d5..d4a9911 100644
--- a/js/mine/Mine.js
+++ b/js/mine/Mine.js
@@ -8,6 +8,7 @@ import ReactNative, {
 	Dimensions,
 	TouchableOpacity,
 } from 'react-native';
+import createReactClass from 'create-react-class';
 import {
 	Provider,
 	connect
@@ -45,7 +46,7 @@ function getInitialState() {
 
 export default function native(platform) {
 
-	let YH_Mine = React.createClass({
+	let YH_Mine = createReactClass({
 		render() {
 		  	const store = configureStore(getInitialState());
 			store.dispatch(setPlatform(platform));
diff --git a/js/mine/store/configureStore.js b/js/mine/store/configureStore.js
index 035022b..37d8edf 100644
--- a/js/mine/store/configureStore.js
+++ b/js/mine/store/configureStore.js
@@ -13,7 +13,7 @@
  */
 import { createStore, applyMiddleware } from 'redux';
 import thunk from 'redux-thunk';
-import createLogger from 'redux-logger';
+import {createLogger} from 'redux-logger';
 
 /**
 * ## Reducer
diff --git a/js/mineGuang/MineGuang.js b/js/mineGuang/MineGuang.js
index 4e930da..fed5b2c 100644
--- a/js/mineGuang/MineGuang.js
+++ b/js/mineGuang/MineGuang.js
@@ -9,6 +9,7 @@ import ReactNative, {
 	TouchableOpacity,
 	View,
 } from 'react-native';
+import createReactClass from 'create-react-class';
 
 import {
 	Provider,
@@ -39,7 +40,7 @@ function getInitialState() {
 
 export default function native(platform) {
 
-	let YH_MineGuang = React.createClass({
+	let YH_MineGuang = createReactClass({
 		render() {
 		  	const store = configureStore(getInitialState());
 
diff --git a/js/mineGuang/store/configureStore.js b/js/mineGuang/store/configureStore.js
index 035022b..37d8edf 100644
--- a/js/mineGuang/store/configureStore.js
+++ b/js/mineGuang/store/configureStore.js
@@ -13,7 +13,7 @@
  */
 import { createStore, applyMiddleware } from 'redux';
 import thunk from 'redux-thunk';
-import createLogger from 'redux-logger';
+import {createLogger} from 'redux-logger';
 
 /**
 * ## Reducer
diff --git a/js/myAssets/MyAssets.js b/js/myAssets/MyAssets.js
index d6edb75..8d767e7 100644
--- a/js/myAssets/MyAssets.js
+++ b/js/myAssets/MyAssets.js
@@ -5,6 +5,7 @@ import ReactNative, {
 	AppRegistry,
 	Platform,
 } from 'react-native';
+import createReactClass from 'create-react-class';
 
 import {
 	Provider,
@@ -47,7 +48,7 @@ function getInitialState() {
 
 export default function native(platform) {
 
-	let YH_MyAssets = React.createClass({
+	let YH_MyAssets = createReactClass({
 
 		render() {
 		  	const store = configureStore(getInitialState());
diff --git a/js/myAssets/store/configureStore.js b/js/myAssets/store/configureStore.js
index 035022b..37d8edf 100644
--- a/js/myAssets/store/configureStore.js
+++ b/js/myAssets/store/configureStore.js
@@ -13,7 +13,7 @@
  */
 import { createStore, applyMiddleware } from 'redux';
 import thunk from 'redux-thunk';
-import createLogger from 'redux-logger';
+import {createLogger} from 'redux-logger';
 
 /**
 * ## Reducer
diff --git a/js/newArrival/NewArrival.js b/js/newArrival/NewArrival.js
index 8c19bbf..caac80e 100644
--- a/js/newArrival/NewArrival.js
+++ b/js/newArrival/NewArrival.js
@@ -5,6 +5,7 @@ import ReactNative, {
 	AppRegistry,
 	Platform,
 } from 'react-native';
+import createReactClass from 'create-react-class';
 
 import {
 	Provider,
@@ -38,7 +39,7 @@ function getInitialState() {
 
 export default function native(platform) {
 
-	let YH_NewArrival = React.createClass({
+	let YH_NewArrival = createReactClass({
 
 		render() {
 			let type = this.props.type;
diff --git a/js/newArrival/components/newArrival/BannerCell.js b/js/newArrival/components/newArrival/BannerCell.js
index 58dd2ff..75fa3ba 100644
--- a/js/newArrival/components/newArrival/BannerCell.js
+++ b/js/newArrival/components/newArrival/BannerCell.js
@@ -5,6 +5,7 @@ import ReactNative from 'react-native';
 import YH_Swiper from '../../../common/components/YH_Swiper';
 import ImmutablePropTypes from 'react-immutable-proptypes';
 import SlicedImage from '../../../common/components/SlicedImage';
+import PropTypes from 'prop-types';
 
 const {
     View,
@@ -19,10 +20,10 @@ const {
 export default class Banner extends React.Component {
 
     static propTypes = {
-        duration: React.PropTypes.number,
-        width: React.PropTypes.number.isRequired,
-        height: React.PropTypes.number.isRequired,
-        onPress: React.PropTypes.func,
+        duration: PropTypes.number,
+        width: PropTypes.number.isRequired,
+        height: PropTypes.number.isRequired,
+        onPress: PropTypes.func,
     };
 
     constructor(props) {
diff --git a/js/newArrival/components/newArrival/FeaturedView.js b/js/newArrival/components/newArrival/FeaturedView.js
index 0243024..0c5b367 100644
--- a/js/newArrival/components/newArrival/FeaturedView.js
+++ b/js/newArrival/components/newArrival/FeaturedView.js
@@ -1,14 +1,13 @@
 import React from 'react';
 import ReactNative from 'react-native';
 import ImmutablePropTypes from 'react-immutable-proptypes';
+import PropTypes from 'prop-types';
 
 let {
 	requireNativeComponent,
 	View
 } = ReactNative;
 
-module.exports = requireNativeComponent('YH_FeaturedView', null);
-
 class FeaturedView extends React.Component {
 
 	constructor(props) {
@@ -30,10 +29,10 @@ class FeaturedView extends React.Component {
 }
 
 FeaturedView.propTypes = {
-	items: React.PropTypes.arrayOf(
-		React.PropTypes.any
+	items: PropTypes.arrayOf(
+		PropTypes.any
 	),
-	onClick: React.PropTypes.func,
+	onClick: PropTypes.func,
 	...View.propTypes // 包含默认的View的属性
 };
 
diff --git a/js/newArrival/store/configureStore.js b/js/newArrival/store/configureStore.js
index 035022b..37d8edf 100644
--- a/js/newArrival/store/configureStore.js
+++ b/js/newArrival/store/configureStore.js
@@ -13,7 +13,7 @@
  */
 import { createStore, applyMiddleware } from 'redux';
 import thunk from 'redux-thunk';
-import createLogger from 'redux-logger';
+import {createLogger} from 'redux-logger';
 
 /**
 * ## Reducer
diff --git a/js/order/Order.js b/js/order/Order.js
index 2ab0eba..2b0c16f 100644
--- a/js/order/Order.js
+++ b/js/order/Order.js
@@ -4,6 +4,7 @@ import React from 'react';
 import ReactNative, {AppRegistry, Platform} from 'react-native';
 
 import {Provider, connect} from 'react-redux';
+import createReactClass from 'create-react-class';
 
 import configureStore from './store/configureStore';
 import {Record, List, Map} from 'immutable';
@@ -32,7 +33,7 @@ function getInitialState() {
 
 export default function native(platform) {
 
-    let YH_Order = React.createClass({
+    let YH_Order = createReactClass({
 
         render() {
             const store = configureStore(getInitialState());
diff --git a/js/order/store/configureStore.js b/js/order/store/configureStore.js
index 035022b..37d8edf 100644
--- a/js/order/store/configureStore.js
+++ b/js/order/store/configureStore.js
@@ -13,7 +13,7 @@
  */
 import { createStore, applyMiddleware } from 'redux';
 import thunk from 'redux-thunk';
-import createLogger from 'redux-logger';
+import {createLogger} from 'redux-logger';
 
 /**
 * ## Reducer
diff --git a/js/outlet/Outlet.js b/js/outlet/Outlet.js
index 27bf7b4..7227c9c 100644
--- a/js/outlet/Outlet.js
+++ b/js/outlet/Outlet.js
@@ -8,6 +8,7 @@ import ReactNative, {
 	Dimensions,
 	TouchableOpacity,
 } from 'react-native';
+import createReactClass from 'create-react-class';
 
 import {
 	Provider,
@@ -44,7 +45,7 @@ function getInitialState() {
 
 export default function native(platform) {
 
-	let YH_Outlet = React.createClass({
+	let YH_Outlet = createReactClass({
 
 		render() {
 		  	const store = configureStore(getInitialState());
diff --git a/js/outlet/components/outlet/OutletSrollableBar.js b/js/outlet/components/outlet/OutletSrollableBar.js
index 7d68c76..f1ca2bc 100644
--- a/js/outlet/components/outlet/OutletSrollableBar.js
+++ b/js/outlet/components/outlet/OutletSrollableBar.js
@@ -11,25 +11,27 @@ const {
 } = ReactNative;
 
 import Button from '../../../common/react-native-scrollable-tab-view/Button';
+import PropTypes from 'prop-types';
+import createReactClass from 'create-react-class';
 
 const WINDOW_WIDTH = Dimensions.get('window').width;
 
-const OutletSrollableBar = React.createClass({
+const OutletSrollableBar = createReactClass({
   propTypes: {
-    goToPage: React.PropTypes.func,
-    activeTab: React.PropTypes.number,
-    tabs: React.PropTypes.array,
-    underlineColor: React.PropTypes.string,
-    underlineHeight: React.PropTypes.number,
-    backgroundColor: React.PropTypes.string,
-    activeTextColor: React.PropTypes.string,
-    inactiveTextColor: React.PropTypes.string,
-    scrollOffset: React.PropTypes.number,
+    goToPage: PropTypes.func,
+    activeTab: PropTypes.number,
+    tabs: PropTypes.array,
+    underlineColor: PropTypes.string,
+    underlineHeight: PropTypes.number,
+    backgroundColor: PropTypes.string,
+    activeTextColor: PropTypes.string,
+    inactiveTextColor: PropTypes.string,
+    scrollOffset: PropTypes.number,
     style: View.propTypes.style,
     tabStyle: View.propTypes.style,
     tabsContainerStyle: View.propTypes.style,
     textStyle: Text.propTypes.style,
-    renderTabName: React.PropTypes.func,
+    renderTabName: PropTypes.func,
   },
 
   getDefaultProps() {
diff --git a/js/outlet/store/configureStore.js b/js/outlet/store/configureStore.js
index 035022b..37d8edf 100644
--- a/js/outlet/store/configureStore.js
+++ b/js/outlet/store/configureStore.js
@@ -13,7 +13,7 @@
  */
 import { createStore, applyMiddleware } from 'redux';
 import thunk from 'redux-thunk';
-import createLogger from 'redux-logger';
+import {createLogger} from 'redux-logger';
 
 /**
 * ## Reducer
diff --git a/js/personalInfo/PersonalInfo.js b/js/personalInfo/PersonalInfo.js
index 93908f1..b53cf2f 100644
--- a/js/personalInfo/PersonalInfo.js
+++ b/js/personalInfo/PersonalInfo.js
@@ -14,6 +14,7 @@ import {
 	Provider,
 	connect
 } from 'react-redux';
+import createReactClass from 'create-react-class';
 
 import configureStore from './store/configureStore';
 import {Record, List, Map} from 'immutable';
@@ -45,7 +46,7 @@ function getInitialState() {
 
 export default function native(platform) {
 
-	let YH_PersonalInfo = React.createClass({
+	let YH_PersonalInfo = createReactClass({
 		render() {
 		  	const store = configureStore(getInitialState());
 			if (this.props.type == 'VIPLevel') {
diff --git a/js/personalInfo/store/configureStore.js b/js/personalInfo/store/configureStore.js
index 035022b..37d8edf 100644
--- a/js/personalInfo/store/configureStore.js
+++ b/js/personalInfo/store/configureStore.js
@@ -13,7 +13,7 @@
  */
 import { createStore, applyMiddleware } from 'redux';
 import thunk from 'redux-thunk';
-import createLogger from 'redux-logger';
+import {createLogger} from 'redux-logger';
 
 /**
 * ## Reducer
diff --git a/js/plustar/Plustar.js b/js/plustar/Plustar.js
index 37a2fee..1c9efac 100644
--- a/js/plustar/Plustar.js
+++ b/js/plustar/Plustar.js
@@ -8,6 +8,7 @@ import ReactNative, {
 	Dimensions,
 	TouchableOpacity,
 } from 'react-native';
+import createReactClass from 'create-react-class';
 
 import {
 	Provider,
@@ -81,7 +82,7 @@ function getInitSegment(type) {
 
 export default function native(platform) {
 
-	let YH_Plustar = React.createClass({
+	let YH_Plustar = createReactClass({
 
 		render() {
 		  	const store = configureStore(getInitialState());
diff --git a/js/plustar/components/common/BannerView.js b/js/plustar/components/common/BannerView.js
index c3c1ebd..0ee52b4 100644
--- a/js/plustar/components/common/BannerView.js
+++ b/js/plustar/components/common/BannerView.js
@@ -1,11 +1,9 @@
 import React, {Component} from 'react';
 import ReactNative from 'react-native';
+import PropTypes from 'prop-types';
 
 let { requireNativeComponent } = ReactNative;
 
-// requireNativeComponent automatically resolves this to "YH_BannerViewManager"
-module.exports = requireNativeComponent('YH_BannerView', null);
-
 class BannerView extends React.Component {
 
 	constructor(props) {
@@ -30,14 +28,14 @@ class BannerView extends React.Component {
 }
 
 BannerView.propTypes = {
-	autoLooping: React.PropTypes.bool,
-	items: React.PropTypes.arrayOf(
-		React.PropTypes.shape({
-			src: React.PropTypes.string.isRequired,
-			url: React.PropTypes.string.isRequired,
+	autoLooping: PropTypes.bool,
+	items: PropTypes.arrayOf(
+		PropTypes.shape({
+			src: PropTypes.string.isRequired,
+			url: PropTypes.string.isRequired,
 		})
 	),
-	onSelectBanner: React.PropTypes.func,
+	onSelectBanner: PropTypes.func,
 };
 
 let YH_BannerView = requireNativeComponent('YH_BannerView', BannerView);
diff --git a/js/plustar/components/common/Button.js b/js/plustar/components/common/Button.js
index 62cfde7..6d5b28f 100644
--- a/js/plustar/components/common/Button.js
+++ b/js/plustar/components/common/Button.js
@@ -8,6 +8,7 @@ import {
     TouchableWithoutFeedback,
     StyleSheet,
 } from 'react-native';
+import PropTypes from 'prop-types';
 
 export default class Button extends Component {
 
@@ -91,13 +92,13 @@ export default class Button extends Component {
 };
 
 Button.propTypes = {
-    title: React.PropTypes.string,
-    selected: React.PropTypes.bool,
-    onPress: React.PropTypes.func,
-    selectedTitleStyle: React.PropTypes.any,
-    normalTitleStyle: React.PropTypes.any,
-    helightedTitleStyle: React.PropTypes.any,
-    containerStyle: React.PropTypes.any,
+    title: PropTypes.string,
+    selected: PropTypes.bool,
+    onPress: PropTypes.func,
+    selectedTitleStyle: PropTypes.any,
+    normalTitleStyle: PropTypes.any,
+    helightedTitleStyle: PropTypes.any,
+    containerStyle: PropTypes.any,
 };
 
 let styles = StyleSheet.create({
diff --git a/js/plustar/components/plustar/Banner.js b/js/plustar/components/plustar/Banner.js
index 9f5bcdf..c28d383 100644
--- a/js/plustar/components/plustar/Banner.js
+++ b/js/plustar/components/plustar/Banner.js
@@ -5,6 +5,7 @@ import ReactNative from 'react-native';
 import YH_Swiper from '../../../common/components/YH_Swiper';
 import ImmutablePropTypes from 'react-immutable-proptypes';
 import SlicedImage from '../../../common/components/SlicedImage';
+import PropTypes from 'prop-types';
 
 const {
     View,
@@ -19,14 +20,14 @@ export default class Banner extends React.Component {
     static propTypes = {
         data: ImmutablePropTypes.listOf(
             ImmutablePropTypes.contains({
-                src: React.PropTypes.string.isRequired,
-                url: React.PropTypes.string.isRequired,
+                src: PropTypes.string.isRequired,
+                url: PropTypes.string.isRequired,
             })
         ),
-        duration: React.PropTypes.number,
-        width: React.PropTypes.number.isRequired,
-        height: React.PropTypes.number.isRequired,
-        onPress: React.PropTypes.func,
+        duration: PropTypes.number,
+        width: PropTypes.number.isRequired,
+        height: PropTypes.number.isRequired,
+        onPress: PropTypes.func,
     };
 
     constructor(props) {
diff --git a/js/plustar/components/plustar/PlustarList.js b/js/plustar/components/plustar/PlustarList.js
index 633db91..399e754 100644
--- a/js/plustar/components/plustar/PlustarList.js
+++ b/js/plustar/components/plustar/PlustarList.js
@@ -20,6 +20,7 @@ import ImmutablePropTypes from 'react-immutable-proptypes';
 
 import Banner from './Banner';
 import BannerView from '../common/BannerView';
+import PropTypes from 'prop-types';
 
 
 export default class PlustarList extends Component {
@@ -119,29 +120,29 @@ export default class PlustarList extends Component {
 PlustarList.propTypes = {
     list: ImmutablePropTypes.listOf(
         ImmutablePropTypes.contains({
-            id: React.PropTypes.string.isRequired,
-            brand_title: React.PropTypes.string.isRequired,
+            id: PropTypes.string.isRequired,
+            brand_title: PropTypes.string.isRequired,
             data: ImmutablePropTypes.listOf(
                 ImmutablePropTypes.contains({
-                    src: React.PropTypes.string.isRequired,
-                    url: React.PropTypes.string.isRequired,
+                    src: PropTypes.string.isRequired,
+                    url: PropTypes.string.isRequired,
                 })
             )
         })
     ),
     head: ImmutablePropTypes.listOf(
         ImmutablePropTypes.contains({
-            src: React.PropTypes.string.isRequired,
-            url: React.PropTypes.string.isRequired,
+            src: PropTypes.string.isRequired,
+            url: PropTypes.string.isRequired,
         })
     ),
     foot: ImmutablePropTypes.listOf(
         ImmutablePropTypes.contains({
-            src: React.PropTypes.string.isRequired,
-            url: React.PropTypes.string.isRequired,
+            src: PropTypes.string.isRequired,
+            url: PropTypes.string.isRequired,
         })
     ),
-    onPressRow: React.PropTypes.func,
+    onPressRow: PropTypes.func,
 };
 
 
diff --git a/js/plustar/components/plustar/PlustarSegment.js b/js/plustar/components/plustar/PlustarSegment.js
index d272508..02226c2 100644
--- a/js/plustar/components/plustar/PlustarSegment.js
+++ b/js/plustar/components/plustar/PlustarSegment.js
@@ -19,6 +19,7 @@ import {
 import ImmutablePropTypes from 'react-immutable-proptypes';
 
 import Button from '../common/Button';
+import PropTypes from 'prop-types';
 
 export default class PlustarSegment extends Component {
 
@@ -79,16 +80,16 @@ export default class PlustarSegment extends Component {
 PlustarSegment.propTypes = {
     content: ImmutablePropTypes.contains({
         0: ImmutablePropTypes.contains({
-            title: React.PropTypes.string.isRequired,
-            type: React.PropTypes.number,
+            title: PropTypes.string.isRequired,
+            type: PropTypes.number,
         }),
         1: ImmutablePropTypes.contains({
-            title: React.PropTypes.string.isRequired,
-            type: React.PropTypes.number,
+            title: PropTypes.string.isRequired,
+            type: PropTypes.number,
         })
     }),
-    selectedIndex: React.PropTypes.oneOf([0, 1]),
-    onPressSegment: React.PropTypes.func,
+    selectedIndex: PropTypes.oneOf([0, 1]),
+    onPressSegment: PropTypes.func,
 };
 
 let containerHeight = 44;
diff --git a/js/plustar/store/configureStore.js b/js/plustar/store/configureStore.js
index 035022b..37d8edf 100644
--- a/js/plustar/store/configureStore.js
+++ b/js/plustar/store/configureStore.js
@@ -13,7 +13,7 @@
  */
 import { createStore, applyMiddleware } from 'redux';
 import thunk from 'redux-thunk';
-import createLogger from 'redux-logger';
+import {createLogger} from 'redux-logger';
 
 /**
 * ## Reducer
diff --git a/js/productList/ProductList.js b/js/productList/ProductList.js
index 2f86e31..1cf6eeb 100644
--- a/js/productList/ProductList.js
+++ b/js/productList/ProductList.js
@@ -8,6 +8,7 @@ import ReactNative, {
 	Dimensions,
 	TouchableOpacity,
 } from 'react-native';
+import createReactClass from 'create-react-class';
 
 import {
 	Provider,
@@ -77,7 +78,7 @@ function getInitialState() {
 
 export default function native(platform) {
 
-	let YH_ProductListRNView = React.createClass({
+	let YH_ProductListRNView = createReactClass({
 
 		render() {
 		  	const store = configureStore(getInitialState());
diff --git a/js/productList/store/configureStore.js b/js/productList/store/configureStore.js
index 035022b..37d8edf 100644
--- a/js/productList/store/configureStore.js
+++ b/js/productList/store/configureStore.js
@@ -13,7 +13,7 @@
  */
 import { createStore, applyMiddleware } from 'redux';
 import thunk from 'redux-thunk';
-import createLogger from 'redux-logger';
+import {createLogger} from 'redux-logger';
 
 /**
 * ## Reducer
diff --git a/js/qrcode/QRCode.js b/js/qrcode/QRCode.js
index ab0b3e3..a1eb282 100644
--- a/js/qrcode/QRCode.js
+++ b/js/qrcode/QRCode.js
@@ -8,6 +8,7 @@ import ReactNative, {
 	Dimensions,
 	TouchableOpacity,
 } from 'react-native';
+import createReactClass from 'create-react-class';
 
 import {
 	Provider,
@@ -40,7 +41,7 @@ function getInitialState() {
 
 export default function native(platform) {
 
-	let YH_QRCode = React.createClass({
+	let YH_QRCode = createReactClass({
 
 		render() {
 		  	const store = configureStore(getInitialState());
diff --git a/js/qrcode/components/common/BannerView.js b/js/qrcode/components/common/BannerView.js
deleted file mode 100644
index c3c1ebd..0000000
--- a/js/qrcode/components/common/BannerView.js
+++ /dev/null
@@ -1,45 +0,0 @@
-import React, {Component} from 'react';
-import ReactNative from 'react-native';
-
-let { requireNativeComponent } = ReactNative;
-
-// requireNativeComponent automatically resolves this to "YH_BannerViewManager"
-module.exports = requireNativeComponent('YH_BannerView', null);
-
-class BannerView extends React.Component {
-
-	constructor(props) {
-		super(props);
-
-    	this._onSelectBanner = this._onSelectBanner.bind(this);
-  	}
-
-  	_onSelectBanner(event: Event) {
-
-    	if (!this.props.onSelectBanner) {
-      		return;
-    	}
-
-    	this.props.onSelectBanner(event.nativeEvent.url);
-  	}
-
-	render() {
-
-		return <YH_BannerView {...this.props} onPress={this._onSelectBanner} />;
-	}
-}
-
-BannerView.propTypes = {
-	autoLooping: React.PropTypes.bool,
-	items: React.PropTypes.arrayOf(
-		React.PropTypes.shape({
-			src: React.PropTypes.string.isRequired,
-			url: React.PropTypes.string.isRequired,
-		})
-	),
-	onSelectBanner: React.PropTypes.func,
-};
-
-let YH_BannerView = requireNativeComponent('YH_BannerView', BannerView);
-
-module.exports = BannerView;
diff --git a/js/qrcode/components/common/Button.js b/js/qrcode/components/common/Button.js
index 62cfde7..6d5b28f 100644
--- a/js/qrcode/components/common/Button.js
+++ b/js/qrcode/components/common/Button.js
@@ -8,6 +8,7 @@ import {
     TouchableWithoutFeedback,
     StyleSheet,
 } from 'react-native';
+import PropTypes from 'prop-types';
 
 export default class Button extends Component {
 
@@ -91,13 +92,13 @@ export default class Button extends Component {
 };
 
 Button.propTypes = {
-    title: React.PropTypes.string,
-    selected: React.PropTypes.bool,
-    onPress: React.PropTypes.func,
-    selectedTitleStyle: React.PropTypes.any,
-    normalTitleStyle: React.PropTypes.any,
-    helightedTitleStyle: React.PropTypes.any,
-    containerStyle: React.PropTypes.any,
+    title: PropTypes.string,
+    selected: PropTypes.bool,
+    onPress: PropTypes.func,
+    selectedTitleStyle: PropTypes.any,
+    normalTitleStyle: PropTypes.any,
+    helightedTitleStyle: PropTypes.any,
+    containerStyle: PropTypes.any,
 };
 
 let styles = StyleSheet.create({
diff --git a/js/qrcode/components/qrcode/QRCode.js b/js/qrcode/components/qrcode/QRCode.js
index c015f07..533b06f 100644
--- a/js/qrcode/components/qrcode/QRCode.js
+++ b/js/qrcode/components/qrcode/QRCode.js
@@ -15,9 +15,9 @@ import ReactNative, {
     Alert,
 } from 'react-native';
 
-import Camera from 'yh_rncamera';
+// import Camera from 'yh_rncamera';
 import ScanBar from './ScanBar'
-const yh_QRCodeHelperEvt = new NativeEventEmitter(ReactNative.NativeModules.YH_QRCodeHelper)
+// const yh_QRCodeHelperEvt = new NativeEventEmitter(ReactNative.NativeModules.YH_QRCodeHelper)
 
 let camera;
 let scanTypeValue, animationFromTopToBottom;
@@ -54,30 +54,30 @@ export default class QRCode extends React.Component {
         }
         return (
             <View style={styles.container}>
-                <Camera
-                    ref={(cam) => {
-                        camera = cam;
-                    }}
-                    onBarCodeRead={(e) => {
-                        let type = scanTypeValue;
-                        if (e.bounds.origin.x >= 50 && e.bounds.origin.x <= 250 && e.bounds.origin.y >= 70 && e.bounds.origin.y < 270 && e.bounds.size.width < 200 && e.bounds.size.height < 200) {
-                            camera._removeOnBarCodeReadListener();
-                            this.props.onBarCodeRead && this.props.onBarCodeRead(e.data);
-                        }
-                    }}
-                    rectOfCameraInterest={{x:0, y:0, width:KScanRectOfInterestWidth, height:KScanRectOfInterestHeight}}//{{x:0, y:0, width:0.69542253, height:1.28125 }}
-                    style={styles.camera}
-                    captureAudio={false}
-                >
-                    <ScanBar
-                        style={styles.sacnRange}
-                    />
-                    <Image style={styles.tipInfoImage} source={require('../../images/qr_bt.png')}>
-                        <Text style={styles.tipInfo}>
-                            尽量让二维码充满框内
-                        </Text>
-                    </Image>
-                </Camera>
+                {/*<Camera*/}
+                    {/*ref={(cam) => {*/}
+                        {/*camera = cam;*/}
+                    {/*}}*/}
+                    {/*onBarCodeRead={(e) => {*/}
+                        {/*let type = scanTypeValue;*/}
+                        {/*if (e.bounds.origin.x >= 50 && e.bounds.origin.x <= 250 && e.bounds.origin.y >= 70 && e.bounds.origin.y < 270 && e.bounds.size.width < 200 && e.bounds.size.height < 200) {*/}
+                            {/*camera._removeOnBarCodeReadListener();*/}
+                            {/*this.props.onBarCodeRead && this.props.onBarCodeRead(e.data);*/}
+                        {/*}*/}
+                    {/*}}*/}
+                    {/*rectOfCameraInterest={{x:0, y:0, width:KScanRectOfInterestWidth, height:KScanRectOfInterestHeight}}//{{x:0, y:0, width:0.69542253, height:1.28125 }}*/}
+                    {/*style={styles.camera}*/}
+                    {/*captureAudio={false}*/}
+                {/*>*/}
+                    {/*<ScanBar*/}
+                        {/*style={styles.sacnRange}*/}
+                    {/*/>*/}
+                    {/*<Image style={styles.tipInfoImage} source={require('../../images/qr_bt.png')}>*/}
+                        {/*<Text style={styles.tipInfo}>*/}
+                            {/*尽量让二维码充满框内*/}
+                        {/*</Text>*/}
+                    {/*</Image>*/}
+                {/*</Camera>*/}
 
 
 
diff --git a/js/qrcode/store/configureStore.js b/js/qrcode/store/configureStore.js
index 035022b..37d8edf 100644
--- a/js/qrcode/store/configureStore.js
+++ b/js/qrcode/store/configureStore.js
@@ -13,7 +13,7 @@
  */
 import { createStore, applyMiddleware } from 'redux';
 import thunk from 'redux-thunk';
-import createLogger from 'redux-logger';
+import {createLogger} from 'redux-logger';
 
 /**
 * ## Reducer
diff --git a/js/recorder/Recorder.js b/js/recorder/Recorder.js
index 7c957bd..1f7b2b5 100644
--- a/js/recorder/Recorder.js
+++ b/js/recorder/Recorder.js
@@ -18,6 +18,7 @@ import {
 	Provider,
 	connect
 } from 'react-redux';
+import createReactClass from 'create-react-class';
 
 import configureStore from './store/configureStore';
 import {Record, List, Map} from 'immutable';
@@ -52,7 +53,7 @@ function getInitialState() {
 
 export default function native(platform) {
 
-	let YH_Recorder = React.createClass({
+	let YH_Recorder = createReactClass({
 
 		_renderContainer() {
 			if (this.props.type == 'brand') {
diff --git a/js/recorder/components/product/SwipeListView.js b/js/recorder/components/product/SwipeListView.js
index 980f322..9c209cc 100644
--- a/js/recorder/components/product/SwipeListView.js
+++ b/js/recorder/components/product/SwipeListView.js
@@ -2,8 +2,8 @@
 
 import React, {
 	Component,
-	PropTypes,
 } from 'react';
+import PropTypes from 'prop-types';
 import {
 	SectionList,
 	Text,
diff --git a/js/recorder/components/product/SwipeRow.js b/js/recorder/components/product/SwipeRow.js
index 510fc18..8ff1939 100644
--- a/js/recorder/components/product/SwipeRow.js
+++ b/js/recorder/components/product/SwipeRow.js
@@ -2,8 +2,8 @@
 
 import React, {
 	Component,
-	PropTypes,
 } from 'react';
+import PropTypes from 'prop-types';
 import {
 	Animated,
 	PanResponder,
diff --git a/js/recorder/store/configureStore.js b/js/recorder/store/configureStore.js
index 035022b..37d8edf 100644
--- a/js/recorder/store/configureStore.js
+++ b/js/recorder/store/configureStore.js
@@ -13,7 +13,7 @@
  */
 import { createStore, applyMiddleware } from 'redux';
 import thunk from 'redux-thunk';
-import createLogger from 'redux-logger';
+import {createLogger} from 'redux-logger';
 
 /**
 * ## Reducer
diff --git a/js/redPersonBrand/RedPersonBrand.js b/js/redPersonBrand/RedPersonBrand.js
index 04b3720..fc26069 100644
--- a/js/redPersonBrand/RedPersonBrand.js
+++ b/js/redPersonBrand/RedPersonBrand.js
@@ -8,6 +8,7 @@ import ReactNative, {
 	Dimensions,
 	TouchableOpacity,
 } from 'react-native';
+import createReactClass from 'create-react-class';
 
 import {
 	Provider,
@@ -44,7 +45,7 @@ function getInitialState() {
 
 export default function native(platform) {
 
-	let YH_RedPersonBrandView = React.createClass({
+	let YH_RedPersonBrandView = createReactClass({
 
 		render() {
 		  	const store = configureStore(getInitialState());
diff --git a/js/redPersonBrand/store/configureStore.js b/js/redPersonBrand/store/configureStore.js
index 035022b..37d8edf 100644
--- a/js/redPersonBrand/store/configureStore.js
+++ b/js/redPersonBrand/store/configureStore.js
@@ -13,7 +13,7 @@
  */
 import { createStore, applyMiddleware } from 'redux';
 import thunk from 'redux-thunk';
-import createLogger from 'redux-logger';
+import {createLogger} from 'redux-logger';
 
 /**
 * ## Reducer
diff --git a/js/sale/Sale.js b/js/sale/Sale.js
index 6f33385..1d861cb 100644
--- a/js/sale/Sale.js
+++ b/js/sale/Sale.js
@@ -5,6 +5,7 @@ import ReactNative, {
 	AppRegistry,
 	Platform,
 } from 'react-native';
+import createReactClass from 'create-react-class';
 
 import {
 	Provider,
@@ -36,7 +37,7 @@ function getInitialState() {
 
 export default function native(platform) {
 
-	let YH_Sale = React.createClass({
+	let YH_Sale = createReactClass({
 
 		render() {
 		  	const store = configureStore(getInitialState());
diff --git a/js/sale/store/configureStore.js b/js/sale/store/configureStore.js
index 035022b..37d8edf 100644
--- a/js/sale/store/configureStore.js
+++ b/js/sale/store/configureStore.js
@@ -13,7 +13,7 @@
  */
 import { createStore, applyMiddleware } from 'redux';
 import thunk from 'redux-thunk';
-import createLogger from 'redux-logger';
+import {createLogger} from 'redux-logger';
 
 /**
 * ## Reducer
diff --git a/js/search/Search.js b/js/search/Search.js
index 2c17578..c0387a2 100644
--- a/js/search/Search.js
+++ b/js/search/Search.js
@@ -8,6 +8,7 @@ import ReactNative, {
 	Dimensions,
 	TouchableOpacity,
 } from 'react-native';
+import createReactClass from 'create-react-class';
 
 import {
 	Provider,
@@ -37,7 +38,7 @@ function getInitialState() {
 
 export default function native(platform) {
 
-	let YH_Search = React.createClass({
+	let YH_Search = createReactClass({
 
 		render() {
 		  	const store = configureStore(getInitialState());
diff --git a/js/search/components/common/BannerView.js b/js/search/components/common/BannerView.js
deleted file mode 100644
index c3c1ebd..0000000
--- a/js/search/components/common/BannerView.js
+++ /dev/null
@@ -1,45 +0,0 @@
-import React, {Component} from 'react';
-import ReactNative from 'react-native';
-
-let { requireNativeComponent } = ReactNative;
-
-// requireNativeComponent automatically resolves this to "YH_BannerViewManager"
-module.exports = requireNativeComponent('YH_BannerView', null);
-
-class BannerView extends React.Component {
-
-	constructor(props) {
-		super(props);
-
-    	this._onSelectBanner = this._onSelectBanner.bind(this);
-  	}
-
-  	_onSelectBanner(event: Event) {
-
-    	if (!this.props.onSelectBanner) {
-      		return;
-    	}
-
-    	this.props.onSelectBanner(event.nativeEvent.url);
-  	}
-
-	render() {
-
-		return <YH_BannerView {...this.props} onPress={this._onSelectBanner} />;
-	}
-}
-
-BannerView.propTypes = {
-	autoLooping: React.PropTypes.bool,
-	items: React.PropTypes.arrayOf(
-		React.PropTypes.shape({
-			src: React.PropTypes.string.isRequired,
-			url: React.PropTypes.string.isRequired,
-		})
-	),
-	onSelectBanner: React.PropTypes.func,
-};
-
-let YH_BannerView = requireNativeComponent('YH_BannerView', BannerView);
-
-module.exports = BannerView;
diff --git a/js/search/components/common/Button.js b/js/search/components/common/Button.js
index 62cfde7..6d5b28f 100644
--- a/js/search/components/common/Button.js
+++ b/js/search/components/common/Button.js
@@ -8,6 +8,7 @@ import {
     TouchableWithoutFeedback,
     StyleSheet,
 } from 'react-native';
+import PropTypes from 'prop-types';
 
 export default class Button extends Component {
 
@@ -91,13 +92,13 @@ export default class Button extends Component {
 };
 
 Button.propTypes = {
-    title: React.PropTypes.string,
-    selected: React.PropTypes.bool,
-    onPress: React.PropTypes.func,
-    selectedTitleStyle: React.PropTypes.any,
-    normalTitleStyle: React.PropTypes.any,
-    helightedTitleStyle: React.PropTypes.any,
-    containerStyle: React.PropTypes.any,
+    title: PropTypes.string,
+    selected: PropTypes.bool,
+    onPress: PropTypes.func,
+    selectedTitleStyle: PropTypes.any,
+    normalTitleStyle: PropTypes.any,
+    helightedTitleStyle: PropTypes.any,
+    containerStyle: PropTypes.any,
 };
 
 let styles = StyleSheet.create({
diff --git a/js/search/store/configureStore.js b/js/search/store/configureStore.js
index 035022b..37d8edf 100644
--- a/js/search/store/configureStore.js
+++ b/js/search/store/configureStore.js
@@ -13,7 +13,7 @@
  */
 import { createStore, applyMiddleware } from 'redux';
 import thunk from 'redux-thunk';
-import createLogger from 'redux-logger';
+import {createLogger} from 'redux-logger';
 
 /**
 * ## Reducer
diff --git a/js/seckill/Seckill.js b/js/seckill/Seckill.js
index 59de07c..b05aed8 100644
--- a/js/seckill/Seckill.js
+++ b/js/seckill/Seckill.js
@@ -13,6 +13,7 @@ import {
 	Provider,
 	connect
 } from 'react-redux';
+import createReactClass from 'create-react-class';
 
 import configureStore from './store/configureStore';
 import {Record, List, Map} from 'immutable';
@@ -47,7 +48,7 @@ function getInitialState() {
 
 export default function native(platform) {
 
-	let YH_Seckill = React.createClass({
+	let YH_Seckill = createReactClass({
 
 		render() {
 		  	const store = configureStore(getInitialState());
diff --git a/js/seckill/store/configureStore.js b/js/seckill/store/configureStore.js
index 035022b..37d8edf 100644
--- a/js/seckill/store/configureStore.js
+++ b/js/seckill/store/configureStore.js
@@ -13,7 +13,7 @@
  */
 import { createStore, applyMiddleware } from 'redux';
 import thunk from 'redux-thunk';
-import createLogger from 'redux-logger';
+import {createLogger} from 'redux-logger';
 
 /**
 * ## Reducer
diff --git a/js/setting/Setting.js b/js/setting/Setting.js
index 4e4d023..c78e9cc 100644
--- a/js/setting/Setting.js
+++ b/js/setting/Setting.js
@@ -9,6 +9,7 @@ import ReactNative, {
     TouchableOpacity,
     View,
 } from 'react-native';
+import createReactClass from 'create-react-class';
 
 import {
     Provider,
@@ -43,7 +44,7 @@ function getInitialState() {
 
 export default function native(platform) {
 
-    let YH_Setting = React.createClass({
+    let YH_Setting = createReactClass({
 
         _renderContainer(){
             if (this.props.type == 1){
diff --git a/js/setting/store/configureStore.js b/js/setting/store/configureStore.js
index 035022b..37d8edf 100644
--- a/js/setting/store/configureStore.js
+++ b/js/setting/store/configureStore.js
@@ -13,7 +13,7 @@
  */
 import { createStore, applyMiddleware } from 'redux';
 import thunk from 'redux-thunk';
-import createLogger from 'redux-logger';
+import {createLogger} from 'redux-logger';
 
 /**
 * ## Reducer
diff --git a/js/studentCertification/StudentCertification.js b/js/studentCertification/StudentCertification.js
index 1a392b8..65e4b23 100644
--- a/js/studentCertification/StudentCertification.js
+++ b/js/studentCertification/StudentCertification.js
@@ -8,6 +8,7 @@ import ReactNative, {
 	Dimensions,
 	TouchableOpacity,
 } from 'react-native';
+import createReactClass from 'create-react-class';
 
 import {
 	Provider,
@@ -41,7 +42,7 @@ function getInitialState() {
 
 export default function native(platform) {
 
-	let YH_Student = React.createClass({
+	let YH_Student = createReactClass({
 
 		render() {
 		  	const store = configureStore(getInitialState());
diff --git a/js/studentCertification/components/common/BannerView.js b/js/studentCertification/components/common/BannerView.js
deleted file mode 100644
index c3c1ebd..0000000
--- a/js/studentCertification/components/common/BannerView.js
+++ /dev/null
@@ -1,45 +0,0 @@
-import React, {Component} from 'react';
-import ReactNative from 'react-native';
-
-let { requireNativeComponent } = ReactNative;
-
-// requireNativeComponent automatically resolves this to "YH_BannerViewManager"
-module.exports = requireNativeComponent('YH_BannerView', null);
-
-class BannerView extends React.Component {
-
-	constructor(props) {
-		super(props);
-
-    	this._onSelectBanner = this._onSelectBanner.bind(this);
-  	}
-
-  	_onSelectBanner(event: Event) {
-
-    	if (!this.props.onSelectBanner) {
-      		return;
-    	}
-
-    	this.props.onSelectBanner(event.nativeEvent.url);
-  	}
-
-	render() {
-
-		return <YH_BannerView {...this.props} onPress={this._onSelectBanner} />;
-	}
-}
-
-BannerView.propTypes = {
-	autoLooping: React.PropTypes.bool,
-	items: React.PropTypes.arrayOf(
-		React.PropTypes.shape({
-			src: React.PropTypes.string.isRequired,
-			url: React.PropTypes.string.isRequired,
-		})
-	),
-	onSelectBanner: React.PropTypes.func,
-};
-
-let YH_BannerView = requireNativeComponent('YH_BannerView', BannerView);
-
-module.exports = BannerView;
diff --git a/js/studentCertification/components/common/Button.js b/js/studentCertification/components/common/Button.js
index 62cfde7..6d5b28f 100644
--- a/js/studentCertification/components/common/Button.js
+++ b/js/studentCertification/components/common/Button.js
@@ -8,6 +8,7 @@ import {
     TouchableWithoutFeedback,
     StyleSheet,
 } from 'react-native';
+import PropTypes from 'prop-types';
 
 export default class Button extends Component {
 
@@ -91,13 +92,13 @@ export default class Button extends Component {
 };
 
 Button.propTypes = {
-    title: React.PropTypes.string,
-    selected: React.PropTypes.bool,
-    onPress: React.PropTypes.func,
-    selectedTitleStyle: React.PropTypes.any,
-    normalTitleStyle: React.PropTypes.any,
-    helightedTitleStyle: React.PropTypes.any,
-    containerStyle: React.PropTypes.any,
+    title: PropTypes.string,
+    selected: PropTypes.bool,
+    onPress: PropTypes.func,
+    selectedTitleStyle: PropTypes.any,
+    normalTitleStyle: PropTypes.any,
+    helightedTitleStyle: PropTypes.any,
+    containerStyle: PropTypes.any,
 };
 
 let styles = StyleSheet.create({
diff --git a/js/studentCertification/store/configureStore.js b/js/studentCertification/store/configureStore.js
index 035022b..37d8edf 100644
--- a/js/studentCertification/store/configureStore.js
+++ b/js/studentCertification/store/configureStore.js
@@ -13,7 +13,7 @@
  */
 import { createStore, applyMiddleware } from 'redux';
 import thunk from 'redux-thunk';
-import createLogger from 'redux-logger';
+import {createLogger} from 'redux-logger';
 
 /**
 * ## Reducer
diff --git a/js/userLogout/UserLogout.js b/js/userLogout/UserLogout.js
index dd9b4ae..dd544f1 100644
--- a/js/userLogout/UserLogout.js
+++ b/js/userLogout/UserLogout.js
@@ -12,6 +12,7 @@ import ReactNative, {
 	Platform,
 	View
 } from 'react-native';
+import createReactClass from 'create-react-class';
 
 import {
 	Provider,
@@ -41,7 +42,7 @@ function getInitialState() {
 
 export default function native(platform) {
 
-	let YH_UserLogout = React.createClass({
+	let YH_UserLogout = createReactClass({
 
 		render() {
             let type = this.props.type;
diff --git a/js/userLogout/components/common/YH_Image.js b/js/userLogout/components/common/YH_Image.js
deleted file mode 100644
index d1bc77c..0000000
--- a/js/userLogout/components/common/YH_Image.js
+++ /dev/null
@@ -1,109 +0,0 @@
-import React from 'react';
-import ReactNative from 'react-native';
-
-const {
-    Component,
-} = React;
-
-const {
-    View,
-    Image,
-    PixelRatio,
-    Platform,
-    StyleSheet,
-} = ReactNative;
-
-const YH_ImageView = ReactNative.requireNativeComponent('YH_ImageView', null);
-
-
-/**
- *  原生图片
- *      圆角设置规则:
- *          ios写法:      masksToBounds={true} style中设置borderRadius圆角值
- *          android写法:  radius={{'topLeft':'20','topRight':'20','bottomRight':'20','bottomLeft':'20'}}
- *
- *      图片伸缩属性 resizeMode  enum('cover', 'contain', 'stretch', 'repeat', 'center') 同RN Image属性,
- *          注意要添加style属性的值 resizeMode: 'stretch'
- *
- *
- **/
-export default class YH_Image extends Component {
-
-    constructor(props) {
-        super (props);
-	}
-
-    static getSlicedUrl(src, width, height, mode = 1) {
-        if (!src) {
-            return '';
-        }
-
-        // width = PixelRatio.getPixelSizeForLayoutSize(width);
-        // height = PixelRatio.getPixelSizeForLayoutSize(height);
-        
-        width = Math.ceil(width * 2);
-        height = Math.ceil(height * 2);
-
-        let newSrc = src;
-        if (src.indexOf('imageView') === -1 && src.indexOf('imageMogr') === -1) {
-            newSrc = src + '?imageView2/' + mode + '/w/' + width + '/h/' + height;
-        } else {
-            newSrc = src.replace('{mode}', mode)
-                .replace(/{width}/g, width)
-                .replace(/{height}/g, height);
-        }
-
-        return newSrc;
-    }
-
-    render() {
-
-        if (Platform.OS === 'ios') {
-            return (
-                <YH_ImageView
-                    {...this.props}
-                />
-            );
-            
-            // let children = this.props.children;
-            // if (children) {
-            //     return (
-            //         <Image
-            //             style={this.props.style}
-            //             source={{uri: this.props.url}}
-            //         >
-            //             {this.props.children}
-            //         </Image>
-            //     );
-            // }
-            //
-            // return (
-            //     <Image
-            //         style={this.props.style}
-            //         source={{uri: this.props.url}}
-            //     />
-            // );
-        }
-        else{
-            let children = this.props.children;
-            if(children){
-                let style = StyleSheet.flatten(this.props.style);
-                let {width, height} = style;
-                return (
-                    <View style = {this.props.style}>
-                        <YH_ImageView style = {[this.props.style,{position: 'absolute', left: 0, top: 0, zIndex: -999, width, height}]}
-                            url = {this.props.url} />
-                        {children}
-                    </View>
-                );
-            }
-            else{
-                return (
-                    <YH_ImageView
-                        {...this.props}
-                    />
-                );
-            }
-        }
-    }
-}
diff --git a/js/userLogout/components/userLogout/UserLogout.js b/js/userLogout/components/userLogout/UserLogout.js
index a17ffd1..4d11772 100644
--- a/js/userLogout/components/userLogout/UserLogout.js
+++ b/js/userLogout/components/userLogout/UserLogout.js
@@ -18,7 +18,7 @@ import ReactNative, {
     Image
 } from 'react-native';
 
-import YH_Image from '../common/YH_Image';
+import YH_Image from '../../../common/components/YH_Image';
 import Prompt from '../../../common/components/Prompt';
 
 export default class UserLogoutReason extends Component {
diff --git a/js/userLogout/store/configureStore.js b/js/userLogout/store/configureStore.js
index 035022b..37d8edf 100644
--- a/js/userLogout/store/configureStore.js
+++ b/js/userLogout/store/configureStore.js
@@ -13,7 +13,7 @@
  */
 import { createStore, applyMiddleware } from 'redux';
 import thunk from 'redux-thunk';
-import createLogger from 'redux-logger';
+import {createLogger} from 'redux-logger';
 
 /**
 * ## Reducer
diff --git a/js/vip/Vip.js b/js/vip/Vip.js
index b1e9b53..46f4934 100644
--- a/js/vip/Vip.js
+++ b/js/vip/Vip.js
@@ -9,6 +9,7 @@ import ReactNative, {
 	TouchableOpacity,
 	View,
 } from 'react-native';
+import createReactClass from 'create-react-class';
 
 import {
 	Provider,
@@ -50,7 +51,7 @@ function getInitialState() {
 
 export default function native(platform) {
 
-	let YH_Vip = React.createClass({
+	let YH_Vip = createReactClass({
 
 		_renderContainer() {
 			//VIP年度优惠特权触达页
diff --git a/js/vip/store/configureStore.js b/js/vip/store/configureStore.js
index 035022b..37d8edf 100644
--- a/js/vip/store/configureStore.js
+++ b/js/vip/store/configureStore.js
@@ -13,7 +13,7 @@
  */
 import { createStore, applyMiddleware } from 'redux';
 import thunk from 'redux-thunk';
-import createLogger from 'redux-logger';
+import {createLogger} from 'redux-logger';
 
 /**
 * ## Reducer
diff --git a/package-lock.json b/package-lock.json
new file mode 100644
index 0000000..a151798
--- /dev/null
+++ b/package-lock.json
@@ -0,0 +1,9273 @@
+{
+  "name": "YH_RNComponent",
+  "version": "0.0.1",
+  "lockfileVersion": 1,
+  "requires": true,
+  "dependencies": {
+    "@babel/code-frame": {
+      "version": "7.0.0-beta.46",
+      "resolved": "http://registry.npm.taobao.org/@babel/code-frame/download/@babel/code-frame-7.0.0-beta.46.tgz",
+      "integrity": "sha1-4NACEAgF2qsUYcD8syoH4wTzpPQ=",
+      "requires": {
+        "@babel/highlight": "7.0.0-beta.46"
+      }
+    },
+    "@babel/core": {
+      "version": "7.0.0-beta.46",
+      "resolved": "http://registry.npm.taobao.org/@babel/core/download/@babel/core-7.0.0-beta.46.tgz",
+      "integrity": "sha1-2+IYm83vmiyEvssexiSHjTGpVok=",
+      "requires": {
+        "@babel/code-frame": "7.0.0-beta.46",
+        "@babel/generator": "7.0.0-beta.46",
+        "@babel/helpers": "7.0.0-beta.46",
+        "@babel/template": "7.0.0-beta.46",
+        "@babel/traverse": "7.0.0-beta.46",
+        "@babel/types": "7.0.0-beta.46",
+        "babylon": "7.0.0-beta.46",
+        "convert-source-map": "1.5.1",
+        "debug": "3.1.0",
+        "json5": "0.5.1",
+        "lodash": "4.17.10",
+        "micromatch": "2.3.11",
+        "resolve": "1.7.1",
+        "semver": "5.5.0",
+        "source-map": "0.5.7"
+      },
+      "dependencies": {
+        "babylon": {
+          "version": "7.0.0-beta.46",
+          "resolved": "http://registry.npm.taobao.org/babylon/download/babylon-7.0.0-beta.46.tgz",
+          "integrity": "sha1-tt2rqBu7EwMTkydX/5wZXVJwiLY="
+        },
+        "debug": {
+          "version": "3.1.0",
+          "resolved": "http://registry.npm.taobao.org/debug/download/debug-3.1.0.tgz",
+          "integrity": "sha1-W7WgZyYotkFJVmuhaBnmFRjGcmE=",
+          "requires": {
+            "ms": "2.0.0"
+          }
+        }
+      }
+    },
+    "@babel/generator": {
+      "version": "7.0.0-beta.46",
+      "resolved": "http://registry.npm.taobao.org/@babel/generator/download/@babel/generator-7.0.0-beta.46.tgz",
+      "integrity": "sha1-b1cVm8wov4w+1rVJeJNVzr+j+qc=",
+      "requires": {
+        "@babel/types": "7.0.0-beta.46",
+        "jsesc": "2.5.1",
+        "lodash": "4.17.10",
+        "source-map": "0.5.7",
+        "trim-right": "1.0.1"
+      },
+      "dependencies": {
+        "jsesc": {
+          "version": "2.5.1",
+          "resolved": "http://registry.npm.taobao.org/jsesc/download/jsesc-2.5.1.tgz",
+          "integrity": "sha1-5CGiqOINawgZ3yiQj3glJrlt0f4="
+        }
+      }
+    },
+    "@babel/helper-annotate-as-pure": {
+      "version": "7.0.0-beta.46",
+      "resolved": "http://registry.npm.taobao.org/@babel/helper-annotate-as-pure/download/@babel/helper-annotate-as-pure-7.0.0-beta.46.tgz",
+      "integrity": "sha1-TNdtXJNAnqAdMb5mOVo7mKNyeS4=",
+      "requires": {
+        "@babel/types": "7.0.0-beta.46"
+      }
+    },
+    "@babel/helper-builder-react-jsx": {
+      "version": "7.0.0-beta.46",
+      "resolved": "http://registry.npm.taobao.org/@babel/helper-builder-react-jsx/download/@babel/helper-builder-react-jsx-7.0.0-beta.46.tgz",
+      "integrity": "sha1-05nBiS9Iu+aM5szKFLEnsAy8ZW8=",
+      "requires": {
+        "@babel/types": "7.0.0-beta.46",
+        "esutils": "2.0.2"
+      }
+    },
+    "@babel/helper-call-delegate": {
+      "version": "7.0.0-beta.46",
+      "resolved": "http://registry.npm.taobao.org/@babel/helper-call-delegate/download/@babel/helper-call-delegate-7.0.0-beta.46.tgz",
+      "integrity": "sha1-qei0bOzkdyYwjwFc6XkpPvPTarc=",
+      "requires": {
+        "@babel/helper-hoist-variables": "7.0.0-beta.46",
+        "@babel/traverse": "7.0.0-beta.46",
+        "@babel/types": "7.0.0-beta.46"
+      }
+    },
+    "@babel/helper-define-map": {
+      "version": "7.0.0-beta.46",
+      "resolved": "http://registry.npm.taobao.org/@babel/helper-define-map/download/@babel/helper-define-map-7.0.0-beta.46.tgz",
+      "integrity": "sha1-mUIZdR70i/HsMmBLQ5NfKyTWF/o=",
+      "requires": {
+        "@babel/helper-function-name": "7.0.0-beta.46",
+        "@babel/types": "7.0.0-beta.46",
+        "lodash": "4.17.10"
+      }
+    },
+    "@babel/helper-function-name": {
+      "version": "7.0.0-beta.46",
+      "resolved": "http://registry.npm.taobao.org/@babel/helper-function-name/download/@babel/helper-function-name-7.0.0-beta.46.tgz",
+      "integrity": "sha1-0MTu0uIg4YD5GwLgCNzEWUr+HTk=",
+      "requires": {
+        "@babel/helper-get-function-arity": "7.0.0-beta.46",
+        "@babel/template": "7.0.0-beta.46",
+        "@babel/types": "7.0.0-beta.46"
+      }
+    },
+    "@babel/helper-get-function-arity": {
+      "version": "7.0.0-beta.46",
+      "resolved": "http://registry.npm.taobao.org/@babel/helper-get-function-arity/download/@babel/helper-get-function-arity-7.0.0-beta.46.tgz",
+      "integrity": "sha1-cWG/5Em0GD2+JdH+VXkzi3Qp5fI=",
+      "requires": {
+        "@babel/types": "7.0.0-beta.46"
+      }
+    },
+    "@babel/helper-hoist-variables": {
+      "version": "7.0.0-beta.46",
+      "resolved": "http://registry.npm.taobao.org/@babel/helper-hoist-variables/download/@babel/helper-hoist-variables-7.0.0-beta.46.tgz",
+      "integrity": "sha1-LWViFb6j8ET/HuOR/FHVX85G3fU=",
+      "requires": {
+        "@babel/types": "7.0.0-beta.46"
+      }
+    },
+    "@babel/helper-member-expression-to-functions": {
+      "version": "7.0.0-beta.46",
+      "resolved": "http://registry.npm.taobao.org/@babel/helper-member-expression-to-functions/download/@babel/helper-member-expression-to-functions-7.0.0-beta.46.tgz",
+      "integrity": "sha1-c2NEwdaPssS3XL5iNw62EMBXhCc=",
+      "requires": {
+        "@babel/types": "7.0.0-beta.46"
+      }
+    },
+    "@babel/helper-module-imports": {
+      "version": "7.0.0-beta.46",
+      "resolved": "http://registry.npm.taobao.org/@babel/helper-module-imports/download/@babel/helper-module-imports-7.0.0-beta.46.tgz",
+      "integrity": "sha1-i9Lh/Prog9KBSaNQ4xzmBqok7aY=",
+      "requires": {
+        "@babel/types": "7.0.0-beta.46",
+        "lodash": "4.17.10"
+      }
+    },
+    "@babel/helper-module-transforms": {
+      "version": "7.0.0-beta.46",
+      "resolved": "http://registry.npm.taobao.org/@babel/helper-module-transforms/download/@babel/helper-module-transforms-7.0.0-beta.46.tgz",
+      "integrity": "sha1-kK2YHzoAINmo5SYpZVWl3X6Hz14=",
+      "requires": {
+        "@babel/helper-module-imports": "7.0.0-beta.46",
+        "@babel/helper-simple-access": "7.0.0-beta.46",
+        "@babel/helper-split-export-declaration": "7.0.0-beta.46",
+        "@babel/template": "7.0.0-beta.46",
+        "@babel/types": "7.0.0-beta.46",
+        "lodash": "4.17.10"
+      }
+    },
+    "@babel/helper-optimise-call-expression": {
+      "version": "7.0.0-beta.46",
+      "resolved": "http://registry.npm.taobao.org/@babel/helper-optimise-call-expression/download/@babel/helper-optimise-call-expression-7.0.0-beta.46.tgz",
+      "integrity": "sha1-UPBgtOSvAcc7QJhvpZOueVhCLok=",
+      "requires": {
+        "@babel/types": "7.0.0-beta.46"
+      }
+    },
+    "@babel/helper-plugin-utils": {
+      "version": "7.0.0-beta.46",
+      "resolved": "http://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.0.0-beta.46.tgz",
+      "integrity": "sha1-9jCtvZ1kXQui5D9JVbStYfRMzfQ="
+    },
+    "@babel/helper-remap-async-to-generator": {
+      "version": "7.0.0-beta.46",
+      "resolved": "http://registry.npm.taobao.org/@babel/helper-remap-async-to-generator/download/@babel/helper-remap-async-to-generator-7.0.0-beta.46.tgz",
+      "integrity": "sha1-J11FXbztTIB1Q/ABMCpAMDo/CRQ=",
+      "requires": {
+        "@babel/helper-annotate-as-pure": "7.0.0-beta.46",
+        "@babel/helper-wrap-function": "7.0.0-beta.46",
+        "@babel/template": "7.0.0-beta.46",
+        "@babel/traverse": "7.0.0-beta.46",
+        "@babel/types": "7.0.0-beta.46"
+      }
+    },
+    "@babel/helper-replace-supers": {
+      "version": "7.0.0-beta.46",
+      "resolved": "http://registry.npm.taobao.org/@babel/helper-replace-supers/download/@babel/helper-replace-supers-7.0.0-beta.46.tgz",
+      "integrity": "sha1-khwPJdh1AmqPsS/tobcjI1leoVY=",
+      "requires": {
+        "@babel/helper-member-expression-to-functions": "7.0.0-beta.46",
+        "@babel/helper-optimise-call-expression": "7.0.0-beta.46",
+        "@babel/traverse": "7.0.0-beta.46",
+        "@babel/types": "7.0.0-beta.46"
+      }
+    },
+    "@babel/helper-simple-access": {
+      "version": "7.0.0-beta.46",
+      "resolved": "http://registry.npm.taobao.org/@babel/helper-simple-access/download/@babel/helper-simple-access-7.0.0-beta.46.tgz",
+      "integrity": "sha1-jrDt+XjIWRXRG2p6qFkUNOFYFw0=",
+      "requires": {
+        "@babel/template": "7.0.0-beta.46",
+        "@babel/types": "7.0.0-beta.46",
+        "lodash": "4.17.10"
+      }
+    },
+    "@babel/helper-split-export-declaration": {
+      "version": "7.0.0-beta.46",
+      "resolved": "http://registry.npm.taobao.org/@babel/helper-split-export-declaration/download/@babel/helper-split-export-declaration-7.0.0-beta.46.tgz",
+      "integrity": "sha1-aQOJPHK7Kj1U7SC1/yqooo6NLqE=",
+      "requires": {
+        "@babel/types": "7.0.0-beta.46"
+      }
+    },
+    "@babel/helper-wrap-function": {
+      "version": "7.0.0-beta.46",
+      "resolved": "http://registry.npm.taobao.org/@babel/helper-wrap-function/download/@babel/helper-wrap-function-7.0.0-beta.46.tgz",
+      "integrity": "sha1-0PuDZRbYo4q4DfG0NOS3YBW+kDU=",
+      "requires": {
+        "@babel/helper-function-name": "7.0.0-beta.46",
+        "@babel/template": "7.0.0-beta.46",
+        "@babel/traverse": "7.0.0-beta.46",
+        "@babel/types": "7.0.0-beta.46"
+      }
+    },
+    "@babel/helpers": {
+      "version": "7.0.0-beta.46",
+      "resolved": "http://registry.npm.taobao.org/@babel/helpers/download/@babel/helpers-7.0.0-beta.46.tgz",
+      "integrity": "sha1-tfmI39d/T3E3ks94GLaHBQc27lI=",
+      "requires": {
+        "@babel/template": "7.0.0-beta.46",
+        "@babel/traverse": "7.0.0-beta.46",
+        "@babel/types": "7.0.0-beta.46"
+      }
+    },
+    "@babel/highlight": {
+      "version": "7.0.0-beta.46",
+      "resolved": "http://registry.npm.taobao.org/@babel/highlight/download/@babel/highlight-7.0.0-beta.46.tgz",
+      "integrity": "sha1-xVPFHmX1cr3t1u/2b8C7VjAWZF4=",
+      "requires": {
+        "chalk": "2.4.1",
+        "esutils": "2.0.2",
+        "js-tokens": "3.0.2"
+      },
+      "dependencies": {
+        "ansi-styles": {
+          "version": "3.2.1",
+          "resolved": "http://registry.npm.taobao.org/ansi-styles/download/ansi-styles-3.2.1.tgz",
+          "integrity": "sha1-QfuyAkPlCxK+DwS43tvwdSDOhB0=",
+          "requires": {
+            "color-convert": "1.9.1"
+          }
+        },
+        "chalk": {
+          "version": "2.4.1",
+          "resolved": "http://registry.npm.taobao.org/chalk/download/chalk-2.4.1.tgz",
+          "integrity": "sha1-GMSasWoDe26wFSzIPjRxM4IVtm4=",
+          "requires": {
+            "ansi-styles": "3.2.1",
+            "escape-string-regexp": "1.0.5",
+            "supports-color": "5.4.0"
+          }
+        },
+        "supports-color": {
+          "version": "5.4.0",
+          "resolved": "http://registry.npm.taobao.org/supports-color/download/supports-color-5.4.0.tgz",
+          "integrity": "sha1-HGszdALCE3YF7+GfEP7DkPb6q1Q=",
+          "requires": {
+            "has-flag": "3.0.0"
+          }
+        }
+      }
+    },
+    "@babel/plugin-check-constants": {
+      "version": "7.0.0-beta.38",
+      "resolved": "http://registry.npm.taobao.org/@babel/plugin-check-constants/download/@babel/plugin-check-constants-7.0.0-beta.38.tgz",
+      "integrity": "sha1-u9pjBtRaTwl8y0FsC1LWUD9lAs8="
+    },
+    "@babel/plugin-external-helpers": {
+      "version": "7.0.0-beta.46",
+      "resolved": "http://registry.npm.taobao.org/@babel/plugin-external-helpers/download/@babel/plugin-external-helpers-7.0.0-beta.46.tgz",
+      "integrity": "sha1-KTwe16UlfrUN/JPkaPESmngCo88=",
+      "requires": {
+        "@babel/helper-plugin-utils": "7.0.0-beta.46"
+      }
+    },
+    "@babel/plugin-proposal-class-properties": {
+      "version": "7.0.0-beta.46",
+      "resolved": "http://registry.npm.taobao.org/@babel/plugin-proposal-class-properties/download/@babel/plugin-proposal-class-properties-7.0.0-beta.46.tgz",
+      "integrity": "sha1-HFBfjfOjEr60HIjXQgnVttU3+j0=",
+      "requires": {
+        "@babel/helper-function-name": "7.0.0-beta.46",
+        "@babel/helper-plugin-utils": "7.0.0-beta.46",
+        "@babel/helper-replace-supers": "7.0.0-beta.46",
+        "@babel/plugin-syntax-class-properties": "7.0.0-beta.46"
+      }
+    },
+    "@babel/plugin-proposal-object-rest-spread": {
+      "version": "7.0.0-beta.46",
+      "resolved": "http://registry.npm.taobao.org/@babel/plugin-proposal-object-rest-spread/download/@babel/plugin-proposal-object-rest-spread-7.0.0-beta.46.tgz",
+      "integrity": "sha1-+zl5SIpSwSRs3O1KQ4rOD0esmFs=",
+      "requires": {
+        "@babel/helper-plugin-utils": "7.0.0-beta.46",
+        "@babel/plugin-syntax-object-rest-spread": "7.0.0-beta.46"
+      }
+    },
+    "@babel/plugin-syntax-class-properties": {
+      "version": "7.0.0-beta.46",
+      "resolved": "http://registry.npm.taobao.org/@babel/plugin-syntax-class-properties/download/@babel/plugin-syntax-class-properties-7.0.0-beta.46.tgz",
+      "integrity": "sha1-2tTfbDG2W6NZ/sOwL7hBOJbnXvw=",
+      "requires": {
+        "@babel/helper-plugin-utils": "7.0.0-beta.46"
+      }
+    },
+    "@babel/plugin-syntax-dynamic-import": {
+      "version": "7.0.0-beta.46",
+      "resolved": "http://registry.npm.taobao.org/@babel/plugin-syntax-dynamic-import/download/@babel/plugin-syntax-dynamic-import-7.0.0-beta.46.tgz",
+      "integrity": "sha1-ZRRZxBnV7AYJpRg3CkF7i0fFJYM=",
+      "requires": {
+        "@babel/helper-plugin-utils": "7.0.0-beta.46"
+      }
+    },
+    "@babel/plugin-syntax-flow": {
+      "version": "7.0.0-beta.46",
+      "resolved": "http://registry.npm.taobao.org/@babel/plugin-syntax-flow/download/@babel/plugin-syntax-flow-7.0.0-beta.46.tgz",
+      "integrity": "sha1-+ZQCdHcJRcx1ipR5RJSecOpTDn8=",
+      "requires": {
+        "@babel/helper-plugin-utils": "7.0.0-beta.46"
+      }
+    },
+    "@babel/plugin-syntax-jsx": {
+      "version": "7.0.0-beta.46",
+      "resolved": "http://registry.npm.taobao.org/@babel/plugin-syntax-jsx/download/@babel/plugin-syntax-jsx-7.0.0-beta.46.tgz",
+      "integrity": "sha1-7S6KQ3FueQSuM9ynHV8rQ28PJeg=",
+      "requires": {
+        "@babel/helper-plugin-utils": "7.0.0-beta.46"
+      }
+    },
+    "@babel/plugin-syntax-object-rest-spread": {
+      "version": "7.0.0-beta.46",
+      "resolved": "http://registry.npm.taobao.org/@babel/plugin-syntax-object-rest-spread/download/@babel/plugin-syntax-object-rest-spread-7.0.0-beta.46.tgz",
+      "integrity": "sha1-A9RmN/VJdXstaHe2RJkBaYBZ19g=",
+      "requires": {
+        "@babel/helper-plugin-utils": "7.0.0-beta.46"
+      }
+    },
+    "@babel/plugin-transform-arrow-functions": {
+      "version": "7.0.0-beta.46",
+      "resolved": "http://registry.npm.taobao.org/@babel/plugin-transform-arrow-functions/download/@babel/plugin-transform-arrow-functions-7.0.0-beta.46.tgz",
+      "integrity": "sha1-Ew55sdRQh2fEfl/ruAn43KgMBfU=",
+      "requires": {
+        "@babel/helper-plugin-utils": "7.0.0-beta.46"
+      }
+    },
+    "@babel/plugin-transform-block-scoping": {
+      "version": "7.0.0-beta.46",
+      "resolved": "http://registry.npm.taobao.org/@babel/plugin-transform-block-scoping/download/@babel/plugin-transform-block-scoping-7.0.0-beta.46.tgz",
+      "integrity": "sha1-2kLdF/vtZ1xyIzmI262azlq55Kc=",
+      "requires": {
+        "@babel/helper-plugin-utils": "7.0.0-beta.46",
+        "lodash": "4.17.10"
+      }
+    },
+    "@babel/plugin-transform-classes": {
+      "version": "7.0.0-beta.46",
+      "resolved": "http://registry.npm.taobao.org/@babel/plugin-transform-classes/download/@babel/plugin-transform-classes-7.0.0-beta.46.tgz",
+      "integrity": "sha1-AMhW/tou51bEzG74yX0X0HCs6/c=",
+      "requires": {
+        "@babel/helper-annotate-as-pure": "7.0.0-beta.46",
+        "@babel/helper-define-map": "7.0.0-beta.46",
+        "@babel/helper-function-name": "7.0.0-beta.46",
+        "@babel/helper-optimise-call-expression": "7.0.0-beta.46",
+        "@babel/helper-plugin-utils": "7.0.0-beta.46",
+        "@babel/helper-replace-supers": "7.0.0-beta.46",
+        "@babel/helper-split-export-declaration": "7.0.0-beta.46",
+        "globals": "11.5.0"
+      },
+      "dependencies": {
+        "globals": {
+          "version": "11.5.0",
+          "resolved": "http://registry.npm.taobao.org/globals/download/globals-11.5.0.tgz",
+          "integrity": "sha1-a8hA3mdxFzsZHxPTqclNRB7pJkI="
+        }
+      }
+    },
+    "@babel/plugin-transform-computed-properties": {
+      "version": "7.0.0-beta.46",
+      "resolved": "http://registry.npm.taobao.org/@babel/plugin-transform-computed-properties/download/@babel/plugin-transform-computed-properties-7.0.0-beta.46.tgz",
+      "integrity": "sha1-yh7OJ2FfcyQ0VxP7apPdKIeI6JE=",
+      "requires": {
+        "@babel/helper-plugin-utils": "7.0.0-beta.46"
+      }
+    },
+    "@babel/plugin-transform-destructuring": {
+      "version": "7.0.0-beta.46",
+      "resolved": "http://registry.npm.taobao.org/@babel/plugin-transform-destructuring/download/@babel/plugin-transform-destructuring-7.0.0-beta.46.tgz",
+      "integrity": "sha1-bmoJfaMQY/VF94GK/kjvCRZc5f8=",
+      "requires": {
+        "@babel/helper-plugin-utils": "7.0.0-beta.46"
+      }
+    },
+    "@babel/plugin-transform-flow-strip-types": {
+      "version": "7.0.0-beta.46",
+      "resolved": "http://registry.npm.taobao.org/@babel/plugin-transform-flow-strip-types/download/@babel/plugin-transform-flow-strip-types-7.0.0-beta.46.tgz",
+      "integrity": "sha1-PCbe88QCfVwMP5jDtvFhxxWrf/8=",
+      "requires": {
+        "@babel/helper-plugin-utils": "7.0.0-beta.46",
+        "@babel/plugin-syntax-flow": "7.0.0-beta.46"
+      }
+    },
+    "@babel/plugin-transform-for-of": {
+      "version": "7.0.0-beta.46",
+      "resolved": "http://registry.npm.taobao.org/@babel/plugin-transform-for-of/download/@babel/plugin-transform-for-of-7.0.0-beta.46.tgz",
+      "integrity": "sha1-zmQ0hzhMltG9H1ehErLMumw02lw=",
+      "requires": {
+        "@babel/helper-plugin-utils": "7.0.0-beta.46"
+      }
+    },
+    "@babel/plugin-transform-function-name": {
+      "version": "7.0.0-beta.46",
+      "resolved": "http://registry.npm.taobao.org/@babel/plugin-transform-function-name/download/@babel/plugin-transform-function-name-7.0.0-beta.46.tgz",
+      "integrity": "sha1-JHn1GI3pqx+ZOWvOg7O505vBO9s=",
+      "requires": {
+        "@babel/helper-function-name": "7.0.0-beta.46",
+        "@babel/helper-plugin-utils": "7.0.0-beta.46"
+      }
+    },
+    "@babel/plugin-transform-literals": {
+      "version": "7.0.0-beta.46",
+      "resolved": "http://registry.npm.taobao.org/@babel/plugin-transform-literals/download/@babel/plugin-transform-literals-7.0.0-beta.46.tgz",
+      "integrity": "sha1-hPW8/pFLn9Q4XA3fRp+e1APuaL0=",
+      "requires": {
+        "@babel/helper-plugin-utils": "7.0.0-beta.46"
+      }
+    },
+    "@babel/plugin-transform-modules-commonjs": {
+      "version": "7.0.0-beta.46",
+      "resolved": "http://registry.npm.taobao.org/@babel/plugin-transform-modules-commonjs/download/@babel/plugin-transform-modules-commonjs-7.0.0-beta.46.tgz",
+      "integrity": "sha1-nctC4SgrKBwaIHX5i0qFBTOs/Zw=",
+      "requires": {
+        "@babel/helper-module-transforms": "7.0.0-beta.46",
+        "@babel/helper-plugin-utils": "7.0.0-beta.46",
+        "@babel/helper-simple-access": "7.0.0-beta.46"
+      }
+    },
+    "@babel/plugin-transform-object-assign": {
+      "version": "7.0.0-beta.46",
+      "resolved": "http://registry.npm.taobao.org/@babel/plugin-transform-object-assign/download/@babel/plugin-transform-object-assign-7.0.0-beta.46.tgz",
+      "integrity": "sha1-HHkGSVQplOG1Jh4/7HDsrbFLC7U=",
+      "requires": {
+        "@babel/helper-plugin-utils": "7.0.0-beta.46"
+      }
+    },
+    "@babel/plugin-transform-parameters": {
+      "version": "7.0.0-beta.46",
+      "resolved": "http://registry.npm.taobao.org/@babel/plugin-transform-parameters/download/@babel/plugin-transform-parameters-7.0.0-beta.46.tgz",
+      "integrity": "sha1-M7vS471JnZkBYDTcr4xrcsKmnsM=",
+      "requires": {
+        "@babel/helper-call-delegate": "7.0.0-beta.46",
+        "@babel/helper-get-function-arity": "7.0.0-beta.46",
+        "@babel/helper-plugin-utils": "7.0.0-beta.46"
+      }
+    },
+    "@babel/plugin-transform-react-display-name": {
+      "version": "7.0.0-beta.46",
+      "resolved": "http://registry.npm.taobao.org/@babel/plugin-transform-react-display-name/download/@babel/plugin-transform-react-display-name-7.0.0-beta.46.tgz",
+      "integrity": "sha1-KtSmxj/2fLkPMZn/QQYbzXtvXnw=",
+      "requires": {
+        "@babel/helper-plugin-utils": "7.0.0-beta.46"
+      }
+    },
+    "@babel/plugin-transform-react-jsx": {
+      "version": "7.0.0-beta.46",
+      "resolved": "http://registry.npm.taobao.org/@babel/plugin-transform-react-jsx/download/@babel/plugin-transform-react-jsx-7.0.0-beta.46.tgz",
+      "integrity": "sha1-mqDEkc7TCg0ahBTaLUVGLGaRLR4=",
+      "requires": {
+        "@babel/helper-builder-react-jsx": "7.0.0-beta.46",
+        "@babel/helper-plugin-utils": "7.0.0-beta.46",
+        "@babel/plugin-syntax-jsx": "7.0.0-beta.46"
+      }
+    },
+    "@babel/plugin-transform-react-jsx-source": {
+      "version": "7.0.0-beta.46",
+      "resolved": "http://registry.npm.taobao.org/@babel/plugin-transform-react-jsx-source/download/@babel/plugin-transform-react-jsx-source-7.0.0-beta.46.tgz",
+      "integrity": "sha1-V3f3u/tqE0F4lsUpTWSqX8WT9YY=",
+      "requires": {
+        "@babel/helper-plugin-utils": "7.0.0-beta.46",
+        "@babel/plugin-syntax-jsx": "7.0.0-beta.46"
+      }
+    },
+    "@babel/plugin-transform-regenerator": {
+      "version": "7.0.0-beta.46",
+      "resolved": "http://registry.npm.taobao.org/@babel/plugin-transform-regenerator/download/@babel/plugin-transform-regenerator-7.0.0-beta.46.tgz",
+      "integrity": "sha1-h1zrWzfsDomMI7YK92BxXZ1GK08=",
+      "requires": {
+        "regenerator-transform": "0.12.3"
+      }
+    },
+    "@babel/plugin-transform-shorthand-properties": {
+      "version": "7.0.0-beta.46",
+      "resolved": "http://registry.npm.taobao.org/@babel/plugin-transform-shorthand-properties/download/@babel/plugin-transform-shorthand-properties-7.0.0-beta.46.tgz",
+      "integrity": "sha1-qiFRKw/ve5FvxcvIffcXRlwlUVw=",
+      "requires": {
+        "@babel/helper-plugin-utils": "7.0.0-beta.46"
+      }
+    },
+    "@babel/plugin-transform-spread": {
+      "version": "7.0.0-beta.46",
+      "resolved": "http://registry.npm.taobao.org/@babel/plugin-transform-spread/download/@babel/plugin-transform-spread-7.0.0-beta.46.tgz",
+      "integrity": "sha1-SOq7IZ8eDBbpsKYWYHKunUx805c=",
+      "requires": {
+        "@babel/helper-plugin-utils": "7.0.0-beta.46"
+      }
+    },
+    "@babel/plugin-transform-template-literals": {
+      "version": "7.0.0-beta.46",
+      "resolved": "http://registry.npm.taobao.org/@babel/plugin-transform-template-literals/download/@babel/plugin-transform-template-literals-7.0.0-beta.46.tgz",
+      "integrity": "sha1-6LzHmN7OKYB4k+juJ8zzF29ljGI=",
+      "requires": {
+        "@babel/helper-annotate-as-pure": "7.0.0-beta.46",
+        "@babel/helper-plugin-utils": "7.0.0-beta.46"
+      }
+    },
+    "@babel/template": {
+      "version": "7.0.0-beta.46",
+      "resolved": "http://registry.npm.taobao.org/@babel/template/download/@babel/template-7.0.0-beta.46.tgz",
+      "integrity": "sha1-iyOYJBHVtdv6R5Q3v+QUrbFBG7k=",
+      "requires": {
+        "@babel/code-frame": "7.0.0-beta.46",
+        "@babel/types": "7.0.0-beta.46",
+        "babylon": "7.0.0-beta.46",
+        "lodash": "4.17.10"
+      },
+      "dependencies": {
+        "babylon": {
+          "version": "7.0.0-beta.46",
+          "resolved": "http://registry.npm.taobao.org/babylon/download/babylon-7.0.0-beta.46.tgz",
+          "integrity": "sha1-tt2rqBu7EwMTkydX/5wZXVJwiLY="
+        }
+      }
+    },
+    "@babel/traverse": {
+      "version": "7.0.0-beta.46",
+      "resolved": "http://registry.npm.taobao.org/@babel/traverse/download/@babel/traverse-7.0.0-beta.46.tgz",
+      "integrity": "sha1-KaDAOVs2QvApfm+OR1veifk0N1U=",
+      "requires": {
+        "@babel/code-frame": "7.0.0-beta.46",
+        "@babel/generator": "7.0.0-beta.46",
+        "@babel/helper-function-name": "7.0.0-beta.46",
+        "@babel/helper-split-export-declaration": "7.0.0-beta.46",
+        "@babel/types": "7.0.0-beta.46",
+        "babylon": "7.0.0-beta.46",
+        "debug": "3.1.0",
+        "globals": "11.5.0",
+        "invariant": "2.2.4",
+        "lodash": "4.17.10"
+      },
+      "dependencies": {
+        "babylon": {
+          "version": "7.0.0-beta.46",
+          "resolved": "http://registry.npm.taobao.org/babylon/download/babylon-7.0.0-beta.46.tgz",
+          "integrity": "sha1-tt2rqBu7EwMTkydX/5wZXVJwiLY="
+        },
+        "debug": {
+          "version": "3.1.0",
+          "resolved": "http://registry.npm.taobao.org/debug/download/debug-3.1.0.tgz",
+          "integrity": "sha1-W7WgZyYotkFJVmuhaBnmFRjGcmE=",
+          "requires": {
+            "ms": "2.0.0"
+          }
+        },
+        "globals": {
+          "version": "11.5.0",
+          "resolved": "http://registry.npm.taobao.org/globals/download/globals-11.5.0.tgz",
+          "integrity": "sha1-a8hA3mdxFzsZHxPTqclNRB7pJkI="
+        }
+      }
+    },
+    "@babel/types": {
+      "version": "7.0.0-beta.46",
+      "resolved": "http://registry.npm.taobao.org/@babel/types/download/@babel/types-7.0.0-beta.46.tgz",
+      "integrity": "sha1-64Q5mmma+fyyREQMznjhrL60Dgw=",
+      "requires": {
+        "esutils": "2.0.2",
+        "lodash": "4.17.10",
+        "to-fast-properties": "2.0.0"
+      },
+      "dependencies": {
+        "to-fast-properties": {
+          "version": "2.0.0",
+          "resolved": "http://registry.npm.taobao.org/to-fast-properties/download/to-fast-properties-2.0.0.tgz",
+          "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4="
+        }
+      }
+    },
+    "@types/jquery": {
+      "version": "2.0.49",
+      "resolved": "http://registry.npm.taobao.org/@types/jquery/download/@types/jquery-2.0.49.tgz",
+      "integrity": "sha1-lb1wZMrr9lveEEKd/0kaGuoFtn0="
+    },
+    "abab": {
+      "version": "1.0.4",
+      "resolved": "http://registry.npm.taobao.org/abab/download/abab-1.0.4.tgz",
+      "integrity": "sha1-X6rZwsB/YN12dw9xzwJbYqY8/U4=",
+      "dev": true
+    },
+    "absolute-path": {
+      "version": "0.0.0",
+      "resolved": "http://registry.npm.taobao.org/absolute-path/download/absolute-path-0.0.0.tgz",
+      "integrity": "sha1-p4di+9rftSl76ZsV01p4Wy8JW/c="
+    },
+    "accepts": {
+      "version": "1.3.5",
+      "resolved": "http://registry.npm.taobao.org/accepts/download/accepts-1.3.5.tgz",
+      "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=",
+      "requires": {
+        "mime-types": "2.1.18",
+        "negotiator": "0.6.1"
+      }
+    },
+    "acorn": {
+      "version": "5.5.3",
+      "resolved": "http://registry.npm.taobao.org/acorn/download/acorn-5.5.3.tgz",
+      "integrity": "sha1-9HPdR+AnegjijpvsWu6wR1HwuMk=",
+      "dev": true
+    },
+    "acorn-globals": {
+      "version": "4.1.0",
+      "resolved": "http://registry.npm.taobao.org/acorn-globals/download/acorn-globals-4.1.0.tgz",
+      "integrity": "sha1-q3FgJdvhfFTT74HTLs4rLZn+JTg=",
+      "dev": true,
+      "requires": {
+        "acorn": "5.5.3"
+      }
+    },
+    "ajv": {
+      "version": "5.5.2",
+      "resolved": "http://registry.npm.taobao.org/ajv/download/ajv-5.5.2.tgz",
+      "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=",
+      "requires": {
+        "co": "4.6.0",
+        "fast-deep-equal": "1.1.0",
+        "fast-json-stable-stringify": "2.0.0",
+        "json-schema-traverse": "0.3.1"
+      }
+    },
+    "align-text": {
+      "version": "0.1.4",
+      "resolved": "http://registry.npm.taobao.org/align-text/download/align-text-0.1.4.tgz",
+      "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=",
+      "dev": true,
+      "requires": {
+        "kind-of": "3.2.2",
+        "longest": "1.0.1",
+        "repeat-string": "1.6.1"
+      },
+      "dependencies": {
+        "kind-of": {
+          "version": "3.2.2",
+          "resolved": "http://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz",
+          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+          "dev": true,
+          "requires": {
+            "is-buffer": "1.1.6"
+          }
+        }
+      }
+    },
+    "amdefine": {
+      "version": "1.0.1",
+      "resolved": "http://registry.npm.taobao.org/amdefine/download/amdefine-1.0.1.tgz",
+      "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=",
+      "dev": true
+    },
+    "ansi": {
+      "version": "0.3.1",
+      "resolved": "http://registry.npm.taobao.org/ansi/download/ansi-0.3.1.tgz",
+      "integrity": "sha1-DELU+xcWDVqa8eSEus4cZpIsGyE="
+    },
+    "ansi-colors": {
+      "version": "1.1.0",
+      "resolved": "http://registry.npm.taobao.org/ansi-colors/download/ansi-colors-1.1.0.tgz",
+      "integrity": "sha1-Y3S03V1HGP884npnGjscrQdxMqk=",
+      "requires": {
+        "ansi-wrap": "0.1.0"
+      }
+    },
+    "ansi-cyan": {
+      "version": "0.1.1",
+      "resolved": "http://registry.npm.taobao.org/ansi-cyan/download/ansi-cyan-0.1.1.tgz",
+      "integrity": "sha1-U4rlKK+JgvKK4w2G8vF0VtJgmHM=",
+      "requires": {
+        "ansi-wrap": "0.1.0"
+      }
+    },
+    "ansi-escapes": {
+      "version": "3.1.0",
+      "resolved": "http://registry.npm.taobao.org/ansi-escapes/download/ansi-escapes-3.1.0.tgz",
+      "integrity": "sha1-9zIHu4EgfXX9bIPxJa8m7qN4yjA="
+    },
+    "ansi-gray": {
+      "version": "0.1.1",
+      "resolved": "http://registry.npm.taobao.org/ansi-gray/download/ansi-gray-0.1.1.tgz",
+      "integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=",
+      "requires": {
+        "ansi-wrap": "0.1.0"
+      }
+    },
+    "ansi-red": {
+      "version": "0.1.1",
+      "resolved": "http://registry.npm.taobao.org/ansi-red/download/ansi-red-0.1.1.tgz",
+      "integrity": "sha1-jGOPnRCAgAo1PJwoyKgcpHBdlGw=",
+      "requires": {
+        "ansi-wrap": "0.1.0"
+      }
+    },
+    "ansi-regex": {
+      "version": "2.1.1",
+      "resolved": "http://registry.npm.taobao.org/ansi-regex/download/ansi-regex-2.1.1.tgz",
+      "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
+    },
+    "ansi-styles": {
+      "version": "2.2.1",
+      "resolved": "http://registry.npm.taobao.org/ansi-styles/download/ansi-styles-2.2.1.tgz",
+      "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4="
+    },
+    "ansi-wrap": {
+      "version": "0.1.0",
+      "resolved": "http://registry.npm.taobao.org/ansi-wrap/download/ansi-wrap-0.1.0.tgz",
+      "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768="
+    },
+    "anymatch": {
+      "version": "2.0.0",
+      "resolved": "http://registry.npm.taobao.org/anymatch/download/anymatch-2.0.0.tgz",
+      "integrity": "sha1-vLJLTzeTTZqnrBe0ra+J58du8us=",
+      "requires": {
+        "micromatch": "3.1.10",
+        "normalize-path": "2.1.1"
+      },
+      "dependencies": {
+        "arr-diff": {
+          "version": "4.0.0",
+          "resolved": "http://registry.npm.taobao.org/arr-diff/download/arr-diff-4.0.0.tgz",
+          "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA="
+        },
+        "array-unique": {
+          "version": "0.3.2",
+          "resolved": "http://registry.npm.taobao.org/array-unique/download/array-unique-0.3.2.tgz",
+          "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg="
+        },
+        "braces": {
+          "version": "2.3.2",
+          "resolved": "http://registry.npm.taobao.org/braces/download/braces-2.3.2.tgz",
+          "integrity": "sha1-WXn9PxTNUxVl5fot8av/8d+u5yk=",
+          "requires": {
+            "arr-flatten": "1.1.0",
+            "array-unique": "0.3.2",
+            "extend-shallow": "2.0.1",
+            "fill-range": "4.0.0",
+            "isobject": "3.0.1",
+            "repeat-element": "1.1.2",
+            "snapdragon": "0.8.2",
+            "snapdragon-node": "2.1.1",
+            "split-string": "3.1.0",
+            "to-regex": "3.0.2"
+          },
+          "dependencies": {
+            "extend-shallow": {
+              "version": "2.0.1",
+              "resolved": "http://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz",
+              "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+              "requires": {
+                "is-extendable": "0.1.1"
+              }
+            }
+          }
+        },
+        "expand-brackets": {
+          "version": "2.1.4",
+          "resolved": "http://registry.npm.taobao.org/expand-brackets/download/expand-brackets-2.1.4.tgz",
+          "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
+          "requires": {
+            "debug": "2.6.9",
+            "define-property": "0.2.5",
+            "extend-shallow": "2.0.1",
+            "posix-character-classes": "0.1.1",
+            "regex-not": "1.0.2",
+            "snapdragon": "0.8.2",
+            "to-regex": "3.0.2"
+          },
+          "dependencies": {
+            "define-property": {
+              "version": "0.2.5",
+              "resolved": "http://registry.npm.taobao.org/define-property/download/define-property-0.2.5.tgz",
+              "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+              "requires": {
+                "is-descriptor": "0.1.6"
+              }
+            },
+            "extend-shallow": {
+              "version": "2.0.1",
+              "resolved": "http://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz",
+              "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+              "requires": {
+                "is-extendable": "0.1.1"
+              }
+            },
+            "is-accessor-descriptor": {
+              "version": "0.1.6",
+              "resolved": "http://registry.npm.taobao.org/is-accessor-descriptor/download/is-accessor-descriptor-0.1.6.tgz",
+              "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
+              "requires": {
+                "kind-of": "3.2.2"
+              },
+              "dependencies": {
+                "kind-of": {
+                  "version": "3.2.2",
+                  "resolved": "http://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz",
+                  "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+                  "requires": {
+                    "is-buffer": "1.1.6"
+                  }
+                }
+              }
+            },
+            "is-data-descriptor": {
+              "version": "0.1.4",
+              "resolved": "http://registry.npm.taobao.org/is-data-descriptor/download/is-data-descriptor-0.1.4.tgz",
+              "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
+              "requires": {
+                "kind-of": "3.2.2"
+              },
+              "dependencies": {
+                "kind-of": {
+                  "version": "3.2.2",
+                  "resolved": "http://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz",
+                  "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+                  "requires": {
+                    "is-buffer": "1.1.6"
+                  }
+                }
+              }
+            },
+            "is-descriptor": {
+              "version": "0.1.6",
+              "resolved": "http://registry.npm.taobao.org/is-descriptor/download/is-descriptor-0.1.6.tgz",
+              "integrity": "sha1-Nm2CQN3kh8pRgjsaufB6EKeCUco=",
+              "requires": {
+                "is-accessor-descriptor": "0.1.6",
+                "is-data-descriptor": "0.1.4",
+                "kind-of": "5.1.0"
+              }
+            },
+            "kind-of": {
+              "version": "5.1.0",
+              "resolved": "http://registry.npm.taobao.org/kind-of/download/kind-of-5.1.0.tgz",
+              "integrity": "sha1-cpyR4thXt6QZofmqZWhcTDP1hF0="
+            }
+          }
+        },
+        "extend-shallow": {
+          "version": "3.0.2",
+          "resolved": "http://registry.npm.taobao.org/extend-shallow/download/extend-shallow-3.0.2.tgz",
+          "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
+          "requires": {
+            "assign-symbols": "1.0.0",
+            "is-extendable": "1.0.1"
+          },
+          "dependencies": {
+            "is-extendable": {
+              "version": "1.0.1",
+              "resolved": "http://registry.npm.taobao.org/is-extendable/download/is-extendable-1.0.1.tgz",
+              "integrity": "sha1-p0cPnkJnM9gb2B4RVSZOOjUHyrQ=",
+              "requires": {
+                "is-plain-object": "2.0.4"
+              }
+            }
+          }
+        },
+        "extglob": {
+          "version": "2.0.4",
+          "resolved": "http://registry.npm.taobao.org/extglob/download/extglob-2.0.4.tgz",
+          "integrity": "sha1-rQD+TcYSqSMuhxhxHcXLWrAoVUM=",
+          "requires": {
+            "array-unique": "0.3.2",
+            "define-property": "1.0.0",
+            "expand-brackets": "2.1.4",
+            "extend-shallow": "2.0.1",
+            "fragment-cache": "0.2.1",
+            "regex-not": "1.0.2",
+            "snapdragon": "0.8.2",
+            "to-regex": "3.0.2"
+          },
+          "dependencies": {
+            "define-property": {
+              "version": "1.0.0",
+              "resolved": "http://registry.npm.taobao.org/define-property/download/define-property-1.0.0.tgz",
+              "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+              "requires": {
+                "is-descriptor": "1.0.2"
+              }
+            },
+            "extend-shallow": {
+              "version": "2.0.1",
+              "resolved": "http://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz",
+              "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+              "requires": {
+                "is-extendable": "0.1.1"
+              }
+            }
+          }
+        },
+        "fill-range": {
+          "version": "4.0.0",
+          "resolved": "http://registry.npm.taobao.org/fill-range/download/fill-range-4.0.0.tgz",
+          "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
+          "requires": {
+            "extend-shallow": "2.0.1",
+            "is-number": "3.0.0",
+            "repeat-string": "1.6.1",
+            "to-regex-range": "2.1.1"
+          },
+          "dependencies": {
+            "extend-shallow": {
+              "version": "2.0.1",
+              "resolved": "http://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz",
+              "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+              "requires": {
+                "is-extendable": "0.1.1"
+              }
+            }
+          }
+        },
+        "is-accessor-descriptor": {
+          "version": "1.0.0",
+          "resolved": "http://registry.npm.taobao.org/is-accessor-descriptor/download/is-accessor-descriptor-1.0.0.tgz",
+          "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=",
+          "requires": {
+            "kind-of": "6.0.2"
+          }
+        },
+        "is-data-descriptor": {
+          "version": "1.0.0",
+          "resolved": "http://registry.npm.taobao.org/is-data-descriptor/download/is-data-descriptor-1.0.0.tgz",
+          "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=",
+          "requires": {
+            "kind-of": "6.0.2"
+          }
+        },
+        "is-descriptor": {
+          "version": "1.0.2",
+          "resolved": "http://registry.npm.taobao.org/is-descriptor/download/is-descriptor-1.0.2.tgz",
+          "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=",
+          "requires": {
+            "is-accessor-descriptor": "1.0.0",
+            "is-data-descriptor": "1.0.0",
+            "kind-of": "6.0.2"
+          }
+        },
+        "is-number": {
+          "version": "3.0.0",
+          "resolved": "http://registry.npm.taobao.org/is-number/download/is-number-3.0.0.tgz",
+          "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+          "requires": {
+            "kind-of": "3.2.2"
+          },
+          "dependencies": {
+            "kind-of": {
+              "version": "3.2.2",
+              "resolved": "http://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz",
+              "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+              "requires": {
+                "is-buffer": "1.1.6"
+              }
+            }
+          }
+        },
+        "isobject": {
+          "version": "3.0.1",
+          "resolved": "http://registry.npm.taobao.org/isobject/download/isobject-3.0.1.tgz",
+          "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8="
+        },
+        "kind-of": {
+          "version": "6.0.2",
+          "resolved": "http://registry.npm.taobao.org/kind-of/download/kind-of-6.0.2.tgz",
+          "integrity": "sha1-ARRrNqYhjmTljzqNZt5df8b20FE="
+        },
+        "micromatch": {
+          "version": "3.1.10",
+          "resolved": "http://registry.npm.taobao.org/micromatch/download/micromatch-3.1.10.tgz",
+          "integrity": "sha1-cIWbyVyYQJUvNZoGij/En57PrCM=",
+          "requires": {
+            "arr-diff": "4.0.0",
+            "array-unique": "0.3.2",
+            "braces": "2.3.2",
+            "define-property": "2.0.2",
+            "extend-shallow": "3.0.2",
+            "extglob": "2.0.4",
+            "fragment-cache": "0.2.1",
+            "kind-of": "6.0.2",
+            "nanomatch": "1.2.9",
+            "object.pick": "1.3.0",
+            "regex-not": "1.0.2",
+            "snapdragon": "0.8.2",
+            "to-regex": "3.0.2"
+          }
+        }
+      }
+    },
+    "append-transform": {
+      "version": "0.4.0",
+      "resolved": "http://registry.npm.taobao.org/append-transform/download/append-transform-0.4.0.tgz",
+      "integrity": "sha1-126/jKlNJ24keja61EpLdKthGZE=",
+      "dev": true,
+      "requires": {
+        "default-require-extensions": "1.0.0"
+      }
+    },
+    "apsl-react-native-button": {
+      "version": "3.1.1",
+      "resolved": "http://registry.npm.taobao.org/apsl-react-native-button/download/apsl-react-native-button-3.1.1.tgz",
+      "integrity": "sha1-MTdk2EzZpCnRSzKdtmObLGgyZqc=",
+      "requires": {
+        "lodash.isequal": "4.5.0",
+        "prop-types": "15.6.1"
+      }
+    },
+    "arch": {
+      "version": "2.1.0",
+      "resolved": "http://registry.npm.taobao.org/arch/download/arch-2.1.0.tgz",
+      "integrity": "sha1-NhOqRhSQZLPB8GB5Gb8dR4boKIk="
+    },
+    "are-we-there-yet": {
+      "version": "1.1.4",
+      "resolved": "http://registry.npm.taobao.org/are-we-there-yet/download/are-we-there-yet-1.1.4.tgz",
+      "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=",
+      "requires": {
+        "delegates": "1.0.0",
+        "readable-stream": "2.3.6"
+      }
+    },
+    "argparse": {
+      "version": "1.0.10",
+      "resolved": "http://registry.npm.taobao.org/argparse/download/argparse-1.0.10.tgz",
+      "integrity": "sha1-vNZ5HqWuCXJeF+WtmIE0zUCz2RE=",
+      "dev": true,
+      "requires": {
+        "sprintf-js": "1.0.3"
+      }
+    },
+    "arr-diff": {
+      "version": "1.1.0",
+      "resolved": "http://registry.npm.taobao.org/arr-diff/download/arr-diff-1.1.0.tgz",
+      "integrity": "sha1-aHwydYFjWI/vfeezb6vklesaOZo=",
+      "requires": {
+        "arr-flatten": "1.1.0",
+        "array-slice": "0.2.3"
+      }
+    },
+    "arr-flatten": {
+      "version": "1.1.0",
+      "resolved": "http://registry.npm.taobao.org/arr-flatten/download/arr-flatten-1.1.0.tgz",
+      "integrity": "sha1-NgSLv/TntH4TZkQxbJlmnqWukfE="
+    },
+    "arr-union": {
+      "version": "2.1.0",
+      "resolved": "http://registry.npm.taobao.org/arr-union/download/arr-union-2.1.0.tgz",
+      "integrity": "sha1-IPnqtexw9cfSFbEHexw5Fh0pLH0="
+    },
+    "array-equal": {
+      "version": "1.0.0",
+      "resolved": "http://registry.npm.taobao.org/array-equal/download/array-equal-1.0.0.tgz",
+      "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=",
+      "dev": true
+    },
+    "array-filter": {
+      "version": "0.0.1",
+      "resolved": "http://registry.npm.taobao.org/array-filter/download/array-filter-0.0.1.tgz",
+      "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw="
+    },
+    "array-map": {
+      "version": "0.0.0",
+      "resolved": "http://registry.npm.taobao.org/array-map/download/array-map-0.0.0.tgz",
+      "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI="
+    },
+    "array-reduce": {
+      "version": "0.0.0",
+      "resolved": "http://registry.npm.taobao.org/array-reduce/download/array-reduce-0.0.0.tgz",
+      "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys="
+    },
+    "array-slice": {
+      "version": "0.2.3",
+      "resolved": "http://registry.npm.taobao.org/array-slice/download/array-slice-0.2.3.tgz",
+      "integrity": "sha1-3Tz7gO15c6dRF82sabC5nshhhvU="
+    },
+    "array-unique": {
+      "version": "0.2.1",
+      "resolved": "http://registry.npm.taobao.org/array-unique/download/array-unique-0.2.1.tgz",
+      "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM="
+    },
+    "arrify": {
+      "version": "1.0.1",
+      "resolved": "http://registry.npm.taobao.org/arrify/download/arrify-1.0.1.tgz",
+      "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=",
+      "dev": true
+    },
+    "art": {
+      "version": "0.10.2",
+      "resolved": "http://registry.npm.taobao.org/art/download/art-0.10.2.tgz",
+      "integrity": "sha1-VcNzjYKjoH4GI5Q/Bw6+hilyU9k="
+    },
+    "asap": {
+      "version": "2.0.6",
+      "resolved": "http://registry.npm.taobao.org/asap/download/asap-2.0.6.tgz",
+      "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY="
+    },
+    "asn1": {
+      "version": "0.2.3",
+      "resolved": "http://registry.npm.taobao.org/asn1/download/asn1-0.2.3.tgz",
+      "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y="
+    },
+    "assert-plus": {
+      "version": "1.0.0",
+      "resolved": "http://registry.npm.taobao.org/assert-plus/download/assert-plus-1.0.0.tgz",
+      "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
+    },
+    "assign-symbols": {
+      "version": "1.0.0",
+      "resolved": "http://registry.npm.taobao.org/assign-symbols/download/assign-symbols-1.0.0.tgz",
+      "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c="
+    },
+    "astral-regex": {
+      "version": "1.0.0",
+      "resolved": "http://registry.npm.taobao.org/astral-regex/download/astral-regex-1.0.0.tgz",
+      "integrity": "sha1-bIw/uCfdQ+45GPJ7gngqt2WKb9k=",
+      "dev": true
+    },
+    "async": {
+      "version": "2.6.0",
+      "resolved": "http://registry.npm.taobao.org/async/download/async-2.6.0.tgz",
+      "integrity": "sha1-YaKau2/MAm/qd+VtHG7FOnlZUfQ=",
+      "requires": {
+        "lodash": "4.17.10"
+      }
+    },
+    "async-limiter": {
+      "version": "1.0.0",
+      "resolved": "http://registry.npm.taobao.org/async-limiter/download/async-limiter-1.0.0.tgz",
+      "integrity": "sha1-ePrtjD0HSrgfIrTphdeehzj3IPg=",
+      "dev": true
+    },
+    "asynckit": {
+      "version": "0.4.0",
+      "resolved": "http://registry.npm.taobao.org/asynckit/download/asynckit-0.4.0.tgz",
+      "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
+    },
+    "atob": {
+      "version": "2.1.1",
+      "resolved": "http://registry.npm.taobao.org/atob/download/atob-2.1.1.tgz",
+      "integrity": "sha1-ri1acpR38onWDdf5amMUoi3Wwio="
+    },
+    "aws-sign2": {
+      "version": "0.7.0",
+      "resolved": "http://registry.npm.taobao.org/aws-sign2/download/aws-sign2-0.7.0.tgz",
+      "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg="
+    },
+    "aws4": {
+      "version": "1.7.0",
+      "resolved": "http://registry.npm.taobao.org/aws4/download/aws4-1.7.0.tgz",
+      "integrity": "sha1-1NDpudv8p3vwjusKikcVUP454ok="
+    },
+    "babel": {
+      "version": "6.23.0",
+      "resolved": "http://registry.npm.taobao.org/babel/download/babel-6.23.0.tgz",
+      "integrity": "sha1-0NHn2APpdHZb7qMjLU4VPA77kPQ="
+    },
+    "babel-code-frame": {
+      "version": "6.26.0",
+      "resolved": "http://registry.npm.taobao.org/babel-code-frame/download/babel-code-frame-6.26.0.tgz",
+      "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=",
+      "requires": {
+        "chalk": "1.1.3",
+        "esutils": "2.0.2",
+        "js-tokens": "3.0.2"
+      }
+    },
+    "babel-core": {
+      "version": "6.26.3",
+      "resolved": "http://registry.npm.taobao.org/babel-core/download/babel-core-6.26.3.tgz",
+      "integrity": "sha1-suLwnjQtDwyI4vAuBneUEl51wgc=",
+      "requires": {
+        "babel-code-frame": "6.26.0",
+        "babel-generator": "6.26.1",
+        "babel-helpers": "6.24.1",
+        "babel-messages": "6.23.0",
+        "babel-register": "6.26.0",
+        "babel-runtime": "6.26.0",
+        "babel-template": "6.26.0",
+        "babel-traverse": "6.26.0",
+        "babel-types": "6.26.0",
+        "babylon": "6.18.0",
+        "convert-source-map": "1.5.1",
+        "debug": "2.6.9",
+        "json5": "0.5.1",
+        "lodash": "4.17.10",
+        "minimatch": "3.0.4",
+        "path-is-absolute": "1.0.1",
+        "private": "0.1.8",
+        "slash": "1.0.0",
+        "source-map": "0.5.7"
+      }
+    },
+    "babel-generator": {
+      "version": "6.26.1",
+      "resolved": "http://registry.npm.taobao.org/babel-generator/download/babel-generator-6.26.1.tgz",
+      "integrity": "sha1-GERAjTuPDTWkBOp6wYDwh6YBvZA=",
+      "requires": {
+        "babel-messages": "6.23.0",
+        "babel-runtime": "6.26.0",
+        "babel-types": "6.26.0",
+        "detect-indent": "4.0.0",
+        "jsesc": "1.3.0",
+        "lodash": "4.17.10",
+        "source-map": "0.5.7",
+        "trim-right": "1.0.1"
+      }
+    },
+    "babel-helper-builder-binary-assignment-operator-visitor": {
+      "version": "6.24.1",
+      "resolved": "http://registry.npm.taobao.org/babel-helper-builder-binary-assignment-operator-visitor/download/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz",
+      "integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=",
+      "requires": {
+        "babel-helper-explode-assignable-expression": "6.24.1",
+        "babel-runtime": "6.26.0",
+        "babel-types": "6.26.0"
+      }
+    },
+    "babel-helper-builder-react-jsx": {
+      "version": "6.26.0",
+      "resolved": "http://registry.npm.taobao.org/babel-helper-builder-react-jsx/download/babel-helper-builder-react-jsx-6.26.0.tgz",
+      "integrity": "sha1-Of+DE7dci2Xc7/HzHTg+D/KkCKA=",
+      "requires": {
+        "babel-runtime": "6.26.0",
+        "babel-types": "6.26.0",
+        "esutils": "2.0.2"
+      }
+    },
+    "babel-helper-call-delegate": {
+      "version": "6.24.1",
+      "resolved": "http://registry.npm.taobao.org/babel-helper-call-delegate/download/babel-helper-call-delegate-6.24.1.tgz",
+      "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=",
+      "requires": {
+        "babel-helper-hoist-variables": "6.24.1",
+        "babel-runtime": "6.26.0",
+        "babel-traverse": "6.26.0",
+        "babel-types": "6.26.0"
+      }
+    },
+    "babel-helper-define-map": {
+      "version": "6.26.0",
+      "resolved": "http://registry.npm.taobao.org/babel-helper-define-map/download/babel-helper-define-map-6.26.0.tgz",
+      "integrity": "sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8=",
+      "requires": {
+        "babel-helper-function-name": "6.24.1",
+        "babel-runtime": "6.26.0",
+        "babel-types": "6.26.0",
+        "lodash": "4.17.10"
+      }
+    },
+    "babel-helper-explode-assignable-expression": {
+      "version": "6.24.1",
+      "resolved": "http://registry.npm.taobao.org/babel-helper-explode-assignable-expression/download/babel-helper-explode-assignable-expression-6.24.1.tgz",
+      "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=",
+      "requires": {
+        "babel-runtime": "6.26.0",
+        "babel-traverse": "6.26.0",
+        "babel-types": "6.26.0"
+      }
+    },
+    "babel-helper-function-name": {
+      "version": "6.24.1",
+      "resolved": "http://registry.npm.taobao.org/babel-helper-function-name/download/babel-helper-function-name-6.24.1.tgz",
+      "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=",
+      "requires": {
+        "babel-helper-get-function-arity": "6.24.1",
+        "babel-runtime": "6.26.0",
+        "babel-template": "6.26.0",
+        "babel-traverse": "6.26.0",
+        "babel-types": "6.26.0"
+      }
+    },
+    "babel-helper-get-function-arity": {
+      "version": "6.24.1",
+      "resolved": "http://registry.npm.taobao.org/babel-helper-get-function-arity/download/babel-helper-get-function-arity-6.24.1.tgz",
+      "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=",
+      "requires": {
+        "babel-runtime": "6.26.0",
+        "babel-types": "6.26.0"
+      }
+    },
+    "babel-helper-hoist-variables": {
+      "version": "6.24.1",
+      "resolved": "http://registry.npm.taobao.org/babel-helper-hoist-variables/download/babel-helper-hoist-variables-6.24.1.tgz",
+      "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=",
+      "requires": {
+        "babel-runtime": "6.26.0",
+        "babel-types": "6.26.0"
+      }
+    },
+    "babel-helper-optimise-call-expression": {
+      "version": "6.24.1",
+      "resolved": "http://registry.npm.taobao.org/babel-helper-optimise-call-expression/download/babel-helper-optimise-call-expression-6.24.1.tgz",
+      "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=",
+      "requires": {
+        "babel-runtime": "6.26.0",
+        "babel-types": "6.26.0"
+      }
+    },
+    "babel-helper-regex": {
+      "version": "6.26.0",
+      "resolved": "http://registry.npm.taobao.org/babel-helper-regex/download/babel-helper-regex-6.26.0.tgz",
+      "integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=",
+      "requires": {
+        "babel-runtime": "6.26.0",
+        "babel-types": "6.26.0",
+        "lodash": "4.17.10"
+      }
+    },
+    "babel-helper-remap-async-to-generator": {
+      "version": "6.24.1",
+      "resolved": "http://registry.npm.taobao.org/babel-helper-remap-async-to-generator/download/babel-helper-remap-async-to-generator-6.24.1.tgz",
+      "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=",
+      "requires": {
+        "babel-helper-function-name": "6.24.1",
+        "babel-runtime": "6.26.0",
+        "babel-template": "6.26.0",
+        "babel-traverse": "6.26.0",
+        "babel-types": "6.26.0"
+      }
+    },
+    "babel-helper-replace-supers": {
+      "version": "6.24.1",
+      "resolved": "http://registry.npm.taobao.org/babel-helper-replace-supers/download/babel-helper-replace-supers-6.24.1.tgz",
+      "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=",
+      "requires": {
+        "babel-helper-optimise-call-expression": "6.24.1",
+        "babel-messages": "6.23.0",
+        "babel-runtime": "6.26.0",
+        "babel-template": "6.26.0",
+        "babel-traverse": "6.26.0",
+        "babel-types": "6.26.0"
+      }
+    },
+    "babel-helpers": {
+      "version": "6.24.1",
+      "resolved": "http://registry.npm.taobao.org/babel-helpers/download/babel-helpers-6.24.1.tgz",
+      "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=",
+      "requires": {
+        "babel-runtime": "6.26.0",
+        "babel-template": "6.26.0"
+      }
+    },
+    "babel-jest": {
+      "version": "22.4.3",
+      "resolved": "http://registry.npm.taobao.org/babel-jest/download/babel-jest-22.4.3.tgz",
+      "integrity": "sha1-S3oLYEFpG71CKrSbO3NlSkmmYno=",
+      "dev": true,
+      "requires": {
+        "babel-plugin-istanbul": "4.1.6",
+        "babel-preset-jest": "22.4.3"
+      }
+    },
+    "babel-messages": {
+      "version": "6.23.0",
+      "resolved": "http://registry.npm.taobao.org/babel-messages/download/babel-messages-6.23.0.tgz",
+      "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=",
+      "requires": {
+        "babel-runtime": "6.26.0"
+      }
+    },
+    "babel-plugin-check-es2015-constants": {
+      "version": "6.22.0",
+      "resolved": "http://registry.npm.taobao.org/babel-plugin-check-es2015-constants/download/babel-plugin-check-es2015-constants-6.22.0.tgz",
+      "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=",
+      "requires": {
+        "babel-runtime": "6.26.0"
+      }
+    },
+    "babel-plugin-external-helpers": {
+      "version": "6.22.0",
+      "resolved": "http://registry.npm.taobao.org/babel-plugin-external-helpers/download/babel-plugin-external-helpers-6.22.0.tgz",
+      "integrity": "sha1-IoX0iwK9Xe3oUXXK+MYuhq3M76E=",
+      "requires": {
+        "babel-runtime": "6.26.0"
+      }
+    },
+    "babel-plugin-istanbul": {
+      "version": "4.1.6",
+      "resolved": "http://registry.npm.taobao.org/babel-plugin-istanbul/download/babel-plugin-istanbul-4.1.6.tgz",
+      "integrity": "sha1-NsWbIZLvzoHFs3gyG3QXWt0cmkU=",
+      "dev": true,
+      "requires": {
+        "babel-plugin-syntax-object-rest-spread": "6.13.0",
+        "find-up": "2.1.0",
+        "istanbul-lib-instrument": "1.10.1",
+        "test-exclude": "4.2.1"
+      }
+    },
+    "babel-plugin-jest-hoist": {
+      "version": "22.4.3",
+      "resolved": "http://registry.npm.taobao.org/babel-plugin-jest-hoist/download/babel-plugin-jest-hoist-22.4.3.tgz",
+      "integrity": "sha1-fYvMytwmZ/lqDcxq/hiRh17mwUo=",
+      "dev": true
+    },
+    "babel-plugin-react-transform": {
+      "version": "3.0.0",
+      "resolved": "http://registry.npm.taobao.org/babel-plugin-react-transform/download/babel-plugin-react-transform-3.0.0.tgz",
+      "integrity": "sha1-QC8lE3t7tm6bVOrXVVffvH7KqnQ=",
+      "requires": {
+        "lodash": "4.17.10"
+      }
+    },
+    "babel-plugin-syntax-async-functions": {
+      "version": "6.13.0",
+      "resolved": "http://registry.npm.taobao.org/babel-plugin-syntax-async-functions/download/babel-plugin-syntax-async-functions-6.13.0.tgz",
+      "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU="
+    },
+    "babel-plugin-syntax-class-properties": {
+      "version": "6.13.0",
+      "resolved": "http://registry.npm.taobao.org/babel-plugin-syntax-class-properties/download/babel-plugin-syntax-class-properties-6.13.0.tgz",
+      "integrity": "sha1-1+sjt5oxf4VDlixQW4J8fWysJ94="
+    },
+    "babel-plugin-syntax-dynamic-import": {
+      "version": "6.18.0",
+      "resolved": "http://registry.npm.taobao.org/babel-plugin-syntax-dynamic-import/download/babel-plugin-syntax-dynamic-import-6.18.0.tgz",
+      "integrity": "sha1-jWomIpyDdFqZgqRBBRVyyqF5sdo="
+    },
+    "babel-plugin-syntax-exponentiation-operator": {
+      "version": "6.13.0",
+      "resolved": "http://registry.npm.taobao.org/babel-plugin-syntax-exponentiation-operator/download/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz",
+      "integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4="
+    },
+    "babel-plugin-syntax-flow": {
+      "version": "6.18.0",
+      "resolved": "http://registry.npm.taobao.org/babel-plugin-syntax-flow/download/babel-plugin-syntax-flow-6.18.0.tgz",
+      "integrity": "sha1-TDqyCiryaqIM0lmVw5jE63AxDI0="
+    },
+    "babel-plugin-syntax-jsx": {
+      "version": "6.18.0",
+      "resolved": "http://registry.npm.taobao.org/babel-plugin-syntax-jsx/download/babel-plugin-syntax-jsx-6.18.0.tgz",
+      "integrity": "sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY="
+    },
+    "babel-plugin-syntax-object-rest-spread": {
+      "version": "6.13.0",
+      "resolved": "http://registry.npm.taobao.org/babel-plugin-syntax-object-rest-spread/download/babel-plugin-syntax-object-rest-spread-6.13.0.tgz",
+      "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U="
+    },
+    "babel-plugin-syntax-trailing-function-commas": {
+      "version": "6.22.0",
+      "resolved": "http://registry.npm.taobao.org/babel-plugin-syntax-trailing-function-commas/download/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz",
+      "integrity": "sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM="
+    },
+    "babel-plugin-transform-async-to-generator": {
+      "version": "6.16.0",
+      "resolved": "http://registry.npm.taobao.org/babel-plugin-transform-async-to-generator/download/babel-plugin-transform-async-to-generator-6.16.0.tgz",
+      "integrity": "sha1-Gew2yxSGtZ+fRorfpCzhOQjKKZk=",
+      "requires": {
+        "babel-helper-remap-async-to-generator": "6.24.1",
+        "babel-plugin-syntax-async-functions": "6.13.0",
+        "babel-runtime": "6.26.0"
+      }
+    },
+    "babel-plugin-transform-class-properties": {
+      "version": "6.24.1",
+      "resolved": "http://registry.npm.taobao.org/babel-plugin-transform-class-properties/download/babel-plugin-transform-class-properties-6.24.1.tgz",
+      "integrity": "sha1-anl2PqYdM9NvN7YRqp3vgagbRqw=",
+      "requires": {
+        "babel-helper-function-name": "6.24.1",
+        "babel-plugin-syntax-class-properties": "6.13.0",
+        "babel-runtime": "6.26.0",
+        "babel-template": "6.26.0"
+      }
+    },
+    "babel-plugin-transform-es2015-arrow-functions": {
+      "version": "6.22.0",
+      "resolved": "http://registry.npm.taobao.org/babel-plugin-transform-es2015-arrow-functions/download/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz",
+      "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=",
+      "requires": {
+        "babel-runtime": "6.26.0"
+      }
+    },
+    "babel-plugin-transform-es2015-block-scoped-functions": {
+      "version": "6.22.0",
+      "resolved": "http://registry.npm.taobao.org/babel-plugin-transform-es2015-block-scoped-functions/download/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz",
+      "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=",
+      "requires": {
+        "babel-runtime": "6.26.0"
+      }
+    },
+    "babel-plugin-transform-es2015-block-scoping": {
+      "version": "6.26.0",
+      "resolved": "http://registry.npm.taobao.org/babel-plugin-transform-es2015-block-scoping/download/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz",
+      "integrity": "sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8=",
+      "requires": {
+        "babel-runtime": "6.26.0",
+        "babel-template": "6.26.0",
+        "babel-traverse": "6.26.0",
+        "babel-types": "6.26.0",
+        "lodash": "4.17.10"
+      }
+    },
+    "babel-plugin-transform-es2015-classes": {
+      "version": "6.24.1",
+      "resolved": "http://registry.npm.taobao.org/babel-plugin-transform-es2015-classes/download/babel-plugin-transform-es2015-classes-6.24.1.tgz",
+      "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=",
+      "requires": {
+        "babel-helper-define-map": "6.26.0",
+        "babel-helper-function-name": "6.24.1",
+        "babel-helper-optimise-call-expression": "6.24.1",
+        "babel-helper-replace-supers": "6.24.1",
+        "babel-messages": "6.23.0",
+        "babel-runtime": "6.26.0",
+        "babel-template": "6.26.0",
+        "babel-traverse": "6.26.0",
+        "babel-types": "6.26.0"
+      }
+    },
+    "babel-plugin-transform-es2015-computed-properties": {
+      "version": "6.24.1",
+      "resolved": "http://registry.npm.taobao.org/babel-plugin-transform-es2015-computed-properties/download/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz",
+      "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=",
+      "requires": {
+        "babel-runtime": "6.26.0",
+        "babel-template": "6.26.0"
+      }
+    },
+    "babel-plugin-transform-es2015-destructuring": {
+      "version": "6.23.0",
+      "resolved": "http://registry.npm.taobao.org/babel-plugin-transform-es2015-destructuring/download/babel-plugin-transform-es2015-destructuring-6.23.0.tgz",
+      "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=",
+      "requires": {
+        "babel-runtime": "6.26.0"
+      }
+    },
+    "babel-plugin-transform-es2015-for-of": {
+      "version": "6.23.0",
+      "resolved": "http://registry.npm.taobao.org/babel-plugin-transform-es2015-for-of/download/babel-plugin-transform-es2015-for-of-6.23.0.tgz",
+      "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=",
+      "requires": {
+        "babel-runtime": "6.26.0"
+      }
+    },
+    "babel-plugin-transform-es2015-function-name": {
+      "version": "6.24.1",
+      "resolved": "http://registry.npm.taobao.org/babel-plugin-transform-es2015-function-name/download/babel-plugin-transform-es2015-function-name-6.24.1.tgz",
+      "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=",
+      "requires": {
+        "babel-helper-function-name": "6.24.1",
+        "babel-runtime": "6.26.0",
+        "babel-types": "6.26.0"
+      }
+    },
+    "babel-plugin-transform-es2015-literals": {
+      "version": "6.22.0",
+      "resolved": "http://registry.npm.taobao.org/babel-plugin-transform-es2015-literals/download/babel-plugin-transform-es2015-literals-6.22.0.tgz",
+      "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=",
+      "requires": {
+        "babel-runtime": "6.26.0"
+      }
+    },
+    "babel-plugin-transform-es2015-modules-commonjs": {
+      "version": "6.26.2",
+      "resolved": "http://registry.npm.taobao.org/babel-plugin-transform-es2015-modules-commonjs/download/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz",
+      "integrity": "sha1-WKeThjqefKhwvcWogRF/+sJ9tvM=",
+      "requires": {
+        "babel-plugin-transform-strict-mode": "6.24.1",
+        "babel-runtime": "6.26.0",
+        "babel-template": "6.26.0",
+        "babel-types": "6.26.0"
+      }
+    },
+    "babel-plugin-transform-es2015-object-super": {
+      "version": "6.24.1",
+      "resolved": "http://registry.npm.taobao.org/babel-plugin-transform-es2015-object-super/download/babel-plugin-transform-es2015-object-super-6.24.1.tgz",
+      "integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=",
+      "requires": {
+        "babel-helper-replace-supers": "6.24.1",
+        "babel-runtime": "6.26.0"
+      }
+    },
+    "babel-plugin-transform-es2015-parameters": {
+      "version": "6.24.1",
+      "resolved": "http://registry.npm.taobao.org/babel-plugin-transform-es2015-parameters/download/babel-plugin-transform-es2015-parameters-6.24.1.tgz",
+      "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=",
+      "requires": {
+        "babel-helper-call-delegate": "6.24.1",
+        "babel-helper-get-function-arity": "6.24.1",
+        "babel-runtime": "6.26.0",
+        "babel-template": "6.26.0",
+        "babel-traverse": "6.26.0",
+        "babel-types": "6.26.0"
+      }
+    },
+    "babel-plugin-transform-es2015-shorthand-properties": {
+      "version": "6.24.1",
+      "resolved": "http://registry.npm.taobao.org/babel-plugin-transform-es2015-shorthand-properties/download/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz",
+      "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=",
+      "requires": {
+        "babel-runtime": "6.26.0",
+        "babel-types": "6.26.0"
+      }
+    },
+    "babel-plugin-transform-es2015-spread": {
+      "version": "6.22.0",
+      "resolved": "http://registry.npm.taobao.org/babel-plugin-transform-es2015-spread/download/babel-plugin-transform-es2015-spread-6.22.0.tgz",
+      "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=",
+      "requires": {
+        "babel-runtime": "6.26.0"
+      }
+    },
+    "babel-plugin-transform-es2015-sticky-regex": {
+      "version": "6.24.1",
+      "resolved": "http://registry.npm.taobao.org/babel-plugin-transform-es2015-sticky-regex/download/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz",
+      "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=",
+      "requires": {
+        "babel-helper-regex": "6.26.0",
+        "babel-runtime": "6.26.0",
+        "babel-types": "6.26.0"
+      }
+    },
+    "babel-plugin-transform-es2015-template-literals": {
+      "version": "6.22.0",
+      "resolved": "http://registry.npm.taobao.org/babel-plugin-transform-es2015-template-literals/download/babel-plugin-transform-es2015-template-literals-6.22.0.tgz",
+      "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=",
+      "requires": {
+        "babel-runtime": "6.26.0"
+      }
+    },
+    "babel-plugin-transform-es2015-unicode-regex": {
+      "version": "6.24.1",
+      "resolved": "http://registry.npm.taobao.org/babel-plugin-transform-es2015-unicode-regex/download/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz",
+      "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=",
+      "requires": {
+        "babel-helper-regex": "6.26.0",
+        "babel-runtime": "6.26.0",
+        "regexpu-core": "2.0.0"
+      }
+    },
+    "babel-plugin-transform-es3-member-expression-literals": {
+      "version": "6.22.0",
+      "resolved": "http://registry.npm.taobao.org/babel-plugin-transform-es3-member-expression-literals/download/babel-plugin-transform-es3-member-expression-literals-6.22.0.tgz",
+      "integrity": "sha1-cz00RPPsxBvvjtGmpOCWV7iWnrs=",
+      "requires": {
+        "babel-runtime": "6.26.0"
+      }
+    },
+    "babel-plugin-transform-es3-property-literals": {
+      "version": "6.22.0",
+      "resolved": "http://registry.npm.taobao.org/babel-plugin-transform-es3-property-literals/download/babel-plugin-transform-es3-property-literals-6.22.0.tgz",
+      "integrity": "sha1-sgeNWELiKr9A9z6M3pzTcRq9V1g=",
+      "requires": {
+        "babel-runtime": "6.26.0"
+      }
+    },
+    "babel-plugin-transform-exponentiation-operator": {
+      "version": "6.24.1",
+      "resolved": "http://registry.npm.taobao.org/babel-plugin-transform-exponentiation-operator/download/babel-plugin-transform-exponentiation-operator-6.24.1.tgz",
+      "integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=",
+      "requires": {
+        "babel-helper-builder-binary-assignment-operator-visitor": "6.24.1",
+        "babel-plugin-syntax-exponentiation-operator": "6.13.0",
+        "babel-runtime": "6.26.0"
+      }
+    },
+    "babel-plugin-transform-flow-strip-types": {
+      "version": "6.22.0",
+      "resolved": "http://registry.npm.taobao.org/babel-plugin-transform-flow-strip-types/download/babel-plugin-transform-flow-strip-types-6.22.0.tgz",
+      "integrity": "sha1-hMtnKTXUNxT9wyvOhFaNh0Qc988=",
+      "requires": {
+        "babel-plugin-syntax-flow": "6.18.0",
+        "babel-runtime": "6.26.0"
+      }
+    },
+    "babel-plugin-transform-object-assign": {
+      "version": "6.22.0",
+      "resolved": "http://registry.npm.taobao.org/babel-plugin-transform-object-assign/download/babel-plugin-transform-object-assign-6.22.0.tgz",
+      "integrity": "sha1-+Z0vZvGgsNSY40bFNZaEdAyqILo=",
+      "requires": {
+        "babel-runtime": "6.26.0"
+      }
+    },
+    "babel-plugin-transform-object-rest-spread": {
+      "version": "6.26.0",
+      "resolved": "http://registry.npm.taobao.org/babel-plugin-transform-object-rest-spread/download/babel-plugin-transform-object-rest-spread-6.26.0.tgz",
+      "integrity": "sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY=",
+      "requires": {
+        "babel-plugin-syntax-object-rest-spread": "6.13.0",
+        "babel-runtime": "6.26.0"
+      }
+    },
+    "babel-plugin-transform-react-display-name": {
+      "version": "6.25.0",
+      "resolved": "http://registry.npm.taobao.org/babel-plugin-transform-react-display-name/download/babel-plugin-transform-react-display-name-6.25.0.tgz",
+      "integrity": "sha1-Z+K/Hx6ck6sI25Z5LgU5K/LMKNE=",
+      "requires": {
+        "babel-runtime": "6.26.0"
+      }
+    },
+    "babel-plugin-transform-react-jsx": {
+      "version": "6.24.1",
+      "resolved": "http://registry.npm.taobao.org/babel-plugin-transform-react-jsx/download/babel-plugin-transform-react-jsx-6.24.1.tgz",
+      "integrity": "sha1-hAoCjn30YN/DotKfDA2R9jduZqM=",
+      "requires": {
+        "babel-helper-builder-react-jsx": "6.26.0",
+        "babel-plugin-syntax-jsx": "6.18.0",
+        "babel-runtime": "6.26.0"
+      }
+    },
+    "babel-plugin-transform-react-jsx-source": {
+      "version": "6.22.0",
+      "resolved": "http://registry.npm.taobao.org/babel-plugin-transform-react-jsx-source/download/babel-plugin-transform-react-jsx-source-6.22.0.tgz",
+      "integrity": "sha1-ZqwSFT9c0tF7PBkmj0vwGX9E7NY=",
+      "requires": {
+        "babel-plugin-syntax-jsx": "6.18.0",
+        "babel-runtime": "6.26.0"
+      }
+    },
+    "babel-plugin-transform-regenerator": {
+      "version": "6.26.0",
+      "resolved": "http://registry.npm.taobao.org/babel-plugin-transform-regenerator/download/babel-plugin-transform-regenerator-6.26.0.tgz",
+      "integrity": "sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8=",
+      "requires": {
+        "regenerator-transform": "0.10.1"
+      },
+      "dependencies": {
+        "regenerator-transform": {
+          "version": "0.10.1",
+          "resolved": "http://registry.npm.taobao.org/regenerator-transform/download/regenerator-transform-0.10.1.tgz",
+          "integrity": "sha1-HkmWg3Ix2ot/PPQRTXG1aRoGgN0=",
+          "requires": {
+            "babel-runtime": "6.26.0",
+            "babel-types": "6.26.0",
+            "private": "0.1.8"
+          }
+        }
+      }
+    },
+    "babel-plugin-transform-strict-mode": {
+      "version": "6.24.1",
+      "resolved": "http://registry.npm.taobao.org/babel-plugin-transform-strict-mode/download/babel-plugin-transform-strict-mode-6.24.1.tgz",
+      "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=",
+      "requires": {
+        "babel-runtime": "6.26.0",
+        "babel-types": "6.26.0"
+      }
+    },
+    "babel-preset-es2015-node": {
+      "version": "6.1.1",
+      "resolved": "http://registry.npm.taobao.org/babel-preset-es2015-node/download/babel-preset-es2015-node-6.1.1.tgz",
+      "integrity": "sha1-YLIxVwJLDP6/OmNVTLBe4DW05V8=",
+      "requires": {
+        "babel-plugin-transform-es2015-destructuring": "6.23.0",
+        "babel-plugin-transform-es2015-function-name": "6.24.1",
+        "babel-plugin-transform-es2015-modules-commonjs": "6.26.2",
+        "babel-plugin-transform-es2015-parameters": "6.24.1",
+        "babel-plugin-transform-es2015-shorthand-properties": "6.24.1",
+        "babel-plugin-transform-es2015-spread": "6.22.0",
+        "babel-plugin-transform-es2015-sticky-regex": "6.24.1",
+        "babel-plugin-transform-es2015-unicode-regex": "6.24.1",
+        "semver": "5.5.0"
+      }
+    },
+    "babel-preset-fbjs": {
+      "version": "2.1.4",
+      "resolved": "http://registry.npm.taobao.org/babel-preset-fbjs/download/babel-preset-fbjs-2.1.4.tgz",
+      "integrity": "sha1-IvNY5mVAc6z2HkegUqd317zPA68=",
+      "requires": {
+        "babel-plugin-check-es2015-constants": "6.22.0",
+        "babel-plugin-syntax-class-properties": "6.13.0",
+        "babel-plugin-syntax-flow": "6.18.0",
+        "babel-plugin-syntax-jsx": "6.18.0",
+        "babel-plugin-syntax-object-rest-spread": "6.13.0",
+        "babel-plugin-syntax-trailing-function-commas": "6.22.0",
+        "babel-plugin-transform-class-properties": "6.24.1",
+        "babel-plugin-transform-es2015-arrow-functions": "6.22.0",
+        "babel-plugin-transform-es2015-block-scoped-functions": "6.22.0",
+        "babel-plugin-transform-es2015-block-scoping": "6.26.0",
+        "babel-plugin-transform-es2015-classes": "6.24.1",
+        "babel-plugin-transform-es2015-computed-properties": "6.24.1",
+        "babel-plugin-transform-es2015-destructuring": "6.23.0",
+        "babel-plugin-transform-es2015-for-of": "6.23.0",
+        "babel-plugin-transform-es2015-function-name": "6.24.1",
+        "babel-plugin-transform-es2015-literals": "6.22.0",
+        "babel-plugin-transform-es2015-modules-commonjs": "6.26.2",
+        "babel-plugin-transform-es2015-object-super": "6.24.1",
+        "babel-plugin-transform-es2015-parameters": "6.24.1",
+        "babel-plugin-transform-es2015-shorthand-properties": "6.24.1",
+        "babel-plugin-transform-es2015-spread": "6.22.0",
+        "babel-plugin-transform-es2015-template-literals": "6.22.0",
+        "babel-plugin-transform-es3-member-expression-literals": "6.22.0",
+        "babel-plugin-transform-es3-property-literals": "6.22.0",
+        "babel-plugin-transform-flow-strip-types": "6.22.0",
+        "babel-plugin-transform-object-rest-spread": "6.26.0",
+        "babel-plugin-transform-react-display-name": "6.25.0",
+        "babel-plugin-transform-react-jsx": "6.24.1"
+      }
+    },
+    "babel-preset-jest": {
+      "version": "22.4.3",
+      "resolved": "http://registry.npm.taobao.org/babel-preset-jest/download/babel-preset-jest-22.4.3.tgz",
+      "integrity": "sha1-6S7vmBO3Amq0ymdXmfN0GbWkQVY=",
+      "dev": true,
+      "requires": {
+        "babel-plugin-jest-hoist": "22.4.3",
+        "babel-plugin-syntax-object-rest-spread": "6.13.0"
+      }
+    },
+    "babel-preset-react-native": {
+      "version": "4.0.0",
+      "resolved": "http://registry.npm.taobao.org/babel-preset-react-native/download/babel-preset-react-native-4.0.0.tgz",
+      "integrity": "sha1-PfgN0zpFOIjN0zvbhyJNF6XXOVk=",
+      "requires": {
+        "babel-plugin-check-es2015-constants": "6.22.0",
+        "babel-plugin-react-transform": "3.0.0",
+        "babel-plugin-syntax-async-functions": "6.13.0",
+        "babel-plugin-syntax-class-properties": "6.13.0",
+        "babel-plugin-syntax-dynamic-import": "6.18.0",
+        "babel-plugin-syntax-flow": "6.18.0",
+        "babel-plugin-syntax-jsx": "6.18.0",
+        "babel-plugin-syntax-trailing-function-commas": "6.22.0",
+        "babel-plugin-transform-class-properties": "6.24.1",
+        "babel-plugin-transform-es2015-arrow-functions": "6.22.0",
+        "babel-plugin-transform-es2015-block-scoping": "6.26.0",
+        "babel-plugin-transform-es2015-classes": "6.24.1",
+        "babel-plugin-transform-es2015-computed-properties": "6.24.1",
+        "babel-plugin-transform-es2015-destructuring": "6.23.0",
+        "babel-plugin-transform-es2015-for-of": "6.23.0",
+        "babel-plugin-transform-es2015-function-name": "6.24.1",
+        "babel-plugin-transform-es2015-literals": "6.22.0",
+        "babel-plugin-transform-es2015-modules-commonjs": "6.26.2",
+        "babel-plugin-transform-es2015-parameters": "6.24.1",
+        "babel-plugin-transform-es2015-shorthand-properties": "6.24.1",
+        "babel-plugin-transform-es2015-spread": "6.22.0",
+        "babel-plugin-transform-es2015-template-literals": "6.22.0",
+        "babel-plugin-transform-flow-strip-types": "6.22.0",
+        "babel-plugin-transform-object-assign": "6.22.0",
+        "babel-plugin-transform-object-rest-spread": "6.26.0",
+        "babel-plugin-transform-react-display-name": "6.25.0",
+        "babel-plugin-transform-react-jsx": "6.24.1",
+        "babel-plugin-transform-react-jsx-source": "6.22.0",
+        "babel-plugin-transform-regenerator": "6.26.0",
+        "babel-template": "6.26.0",
+        "react-transform-hmr": "1.0.4"
+      }
+    },
+    "babel-register": {
+      "version": "6.26.0",
+      "resolved": "http://registry.npm.taobao.org/babel-register/download/babel-register-6.26.0.tgz",
+      "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=",
+      "requires": {
+        "babel-core": "6.26.3",
+        "babel-runtime": "6.26.0",
+        "core-js": "2.5.6",
+        "home-or-tmp": "2.0.0",
+        "lodash": "4.17.10",
+        "mkdirp": "0.5.1",
+        "source-map-support": "0.4.18"
+      },
+      "dependencies": {
+        "core-js": {
+          "version": "2.5.6",
+          "resolved": "http://registry.npm.taobao.org/core-js/download/core-js-2.5.6.tgz",
+          "integrity": "sha1-D+bUW/PKw6w2Sp1y3nV29OsiG50="
+        }
+      }
+    },
+    "babel-runtime": {
+      "version": "6.26.0",
+      "resolved": "http://registry.npm.taobao.org/babel-runtime/download/babel-runtime-6.26.0.tgz",
+      "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=",
+      "requires": {
+        "core-js": "2.5.6",
+        "regenerator-runtime": "0.11.1"
+      },
+      "dependencies": {
+        "core-js": {
+          "version": "2.5.6",
+          "resolved": "http://registry.npm.taobao.org/core-js/download/core-js-2.5.6.tgz",
+          "integrity": "sha1-D+bUW/PKw6w2Sp1y3nV29OsiG50="
+        }
+      }
+    },
+    "babel-template": {
+      "version": "6.26.0",
+      "resolved": "http://registry.npm.taobao.org/babel-template/download/babel-template-6.26.0.tgz",
+      "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=",
+      "requires": {
+        "babel-runtime": "6.26.0",
+        "babel-traverse": "6.26.0",
+        "babel-types": "6.26.0",
+        "babylon": "6.18.0",
+        "lodash": "4.17.10"
+      }
+    },
+    "babel-traverse": {
+      "version": "6.26.0",
+      "resolved": "http://registry.npm.taobao.org/babel-traverse/download/babel-traverse-6.26.0.tgz",
+      "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=",
+      "requires": {
+        "babel-code-frame": "6.26.0",
+        "babel-messages": "6.23.0",
+        "babel-runtime": "6.26.0",
+        "babel-types": "6.26.0",
+        "babylon": "6.18.0",
+        "debug": "2.6.9",
+        "globals": "9.18.0",
+        "invariant": "2.2.4",
+        "lodash": "4.17.10"
+      }
+    },
+    "babel-types": {
+      "version": "6.26.0",
+      "resolved": "http://registry.npm.taobao.org/babel-types/download/babel-types-6.26.0.tgz",
+      "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=",
+      "requires": {
+        "babel-runtime": "6.26.0",
+        "esutils": "2.0.2",
+        "lodash": "4.17.10",
+        "to-fast-properties": "1.0.3"
+      }
+    },
+    "babylon": {
+      "version": "6.18.0",
+      "resolved": "http://registry.npm.taobao.org/babylon/download/babylon-6.18.0.tgz",
+      "integrity": "sha1-ry87iPpvXB5MY00aD46sT1WzleM="
+    },
+    "balanced-match": {
+      "version": "1.0.0",
+      "resolved": "http://registry.npm.taobao.org/balanced-match/download/balanced-match-1.0.0.tgz",
+      "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
+    },
+    "base": {
+      "version": "0.11.2",
+      "resolved": "http://registry.npm.taobao.org/base/download/base-0.11.2.tgz",
+      "integrity": "sha1-e95c7RRbbVUakNuH+DxVi060io8=",
+      "requires": {
+        "cache-base": "1.0.1",
+        "class-utils": "0.3.6",
+        "component-emitter": "1.2.1",
+        "define-property": "1.0.0",
+        "isobject": "3.0.1",
+        "mixin-deep": "1.3.1",
+        "pascalcase": "0.1.1"
+      },
+      "dependencies": {
+        "define-property": {
+          "version": "1.0.0",
+          "resolved": "http://registry.npm.taobao.org/define-property/download/define-property-1.0.0.tgz",
+          "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+          "requires": {
+            "is-descriptor": "1.0.2"
+          }
+        },
+        "is-accessor-descriptor": {
+          "version": "1.0.0",
+          "resolved": "http://registry.npm.taobao.org/is-accessor-descriptor/download/is-accessor-descriptor-1.0.0.tgz",
+          "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=",
+          "requires": {
+            "kind-of": "6.0.2"
+          }
+        },
+        "is-data-descriptor": {
+          "version": "1.0.0",
+          "resolved": "http://registry.npm.taobao.org/is-data-descriptor/download/is-data-descriptor-1.0.0.tgz",
+          "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=",
+          "requires": {
+            "kind-of": "6.0.2"
+          }
+        },
+        "is-descriptor": {
+          "version": "1.0.2",
+          "resolved": "http://registry.npm.taobao.org/is-descriptor/download/is-descriptor-1.0.2.tgz",
+          "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=",
+          "requires": {
+            "is-accessor-descriptor": "1.0.0",
+            "is-data-descriptor": "1.0.0",
+            "kind-of": "6.0.2"
+          }
+        },
+        "isobject": {
+          "version": "3.0.1",
+          "resolved": "http://registry.npm.taobao.org/isobject/download/isobject-3.0.1.tgz",
+          "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8="
+        },
+        "kind-of": {
+          "version": "6.0.2",
+          "resolved": "http://registry.npm.taobao.org/kind-of/download/kind-of-6.0.2.tgz",
+          "integrity": "sha1-ARRrNqYhjmTljzqNZt5df8b20FE="
+        }
+      }
+    },
+    "base64-js": {
+      "version": "1.3.0",
+      "resolved": "http://registry.npm.taobao.org/base64-js/download/base64-js-1.3.0.tgz",
+      "integrity": "sha1-yrHmEY8FEJXli1KBrqjBzSK/wOM="
+    },
+    "basic-auth": {
+      "version": "2.0.0",
+      "resolved": "http://registry.npm.taobao.org/basic-auth/download/basic-auth-2.0.0.tgz",
+      "integrity": "sha1-AV2z81PgLlY3d1X5YnQuiYHnu7o=",
+      "requires": {
+        "safe-buffer": "5.1.1"
+      }
+    },
+    "bcrypt-pbkdf": {
+      "version": "1.0.1",
+      "resolved": "http://registry.npm.taobao.org/bcrypt-pbkdf/download/bcrypt-pbkdf-1.0.1.tgz",
+      "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=",
+      "optional": true,
+      "requires": {
+        "tweetnacl": "0.14.5"
+      }
+    },
+    "big-integer": {
+      "version": "1.6.28",
+      "resolved": "http://registry.npm.taobao.org/big-integer/download/big-integer-1.6.28.tgz",
+      "integrity": "sha1-jO8P2jzN6HWcLGbvz6zDWuplgoM="
+    },
+    "boom": {
+      "version": "4.3.1",
+      "resolved": "http://registry.npm.taobao.org/boom/download/boom-4.3.1.tgz",
+      "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=",
+      "requires": {
+        "hoek": "4.2.1"
+      }
+    },
+    "bplist-creator": {
+      "version": "0.0.7",
+      "resolved": "http://registry.npm.taobao.org/bplist-creator/download/bplist-creator-0.0.7.tgz",
+      "integrity": "sha1-N98VNgkoJLh8QvlXsBNEEXNyrkU=",
+      "requires": {
+        "stream-buffers": "2.2.0"
+      }
+    },
+    "bplist-parser": {
+      "version": "0.1.1",
+      "resolved": "http://registry.npm.taobao.org/bplist-parser/download/bplist-parser-0.1.1.tgz",
+      "integrity": "sha1-1g1dzCDLptx+HymbNdPh+V2vuuY=",
+      "requires": {
+        "big-integer": "1.6.28"
+      }
+    },
+    "brace-expansion": {
+      "version": "1.1.11",
+      "resolved": "http://registry.npm.taobao.org/brace-expansion/download/brace-expansion-1.1.11.tgz",
+      "integrity": "sha1-PH/L9SnYcibz0vUrlm/1Jx60Qd0=",
+      "requires": {
+        "balanced-match": "1.0.0",
+        "concat-map": "0.0.1"
+      }
+    },
+    "braces": {
+      "version": "1.8.5",
+      "resolved": "http://registry.npm.taobao.org/braces/download/braces-1.8.5.tgz",
+      "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=",
+      "requires": {
+        "expand-range": "1.8.2",
+        "preserve": "0.2.0",
+        "repeat-element": "1.1.2"
+      }
+    },
+    "browser-process-hrtime": {
+      "version": "0.1.2",
+      "resolved": "http://registry.npm.taobao.org/browser-process-hrtime/download/browser-process-hrtime-0.1.2.tgz",
+      "integrity": "sha1-Ql1opY00R/AqBKqJQYf86K+Le44=",
+      "dev": true
+    },
+    "browser-resolve": {
+      "version": "1.11.2",
+      "resolved": "http://registry.npm.taobao.org/browser-resolve/download/browser-resolve-1.11.2.tgz",
+      "integrity": "sha1-j/CbCixCFxihBRwmCzLkj0QpOM4=",
+      "dev": true,
+      "requires": {
+        "resolve": "1.1.7"
+      },
+      "dependencies": {
+        "resolve": {
+          "version": "1.1.7",
+          "resolved": "http://registry.npm.taobao.org/resolve/download/resolve-1.1.7.tgz",
+          "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=",
+          "dev": true
+        }
+      }
+    },
+    "bser": {
+      "version": "2.0.0",
+      "resolved": "http://registry.npm.taobao.org/bser/download/bser-2.0.0.tgz",
+      "integrity": "sha1-mseNPtXZFYBP2HrLFYvHlxR6Fxk=",
+      "requires": {
+        "node-int64": "0.4.0"
+      }
+    },
+    "buffer-from": {
+      "version": "1.0.0",
+      "resolved": "http://registry.npm.taobao.org/buffer-from/download/buffer-from-1.0.0.tgz",
+      "integrity": "sha1-TLiDLSNhJYmwQG6eKVbBfwb99TE="
+    },
+    "builtin-modules": {
+      "version": "1.1.1",
+      "resolved": "http://registry.npm.taobao.org/builtin-modules/download/builtin-modules-1.1.1.tgz",
+      "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8="
+    },
+    "bytes": {
+      "version": "3.0.0",
+      "resolved": "http://registry.npm.taobao.org/bytes/download/bytes-3.0.0.tgz",
+      "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg="
+    },
+    "cache-base": {
+      "version": "1.0.1",
+      "resolved": "http://registry.npm.taobao.org/cache-base/download/cache-base-1.0.1.tgz",
+      "integrity": "sha1-Cn9GQWgxyLZi7jb+TnxZ129marI=",
+      "requires": {
+        "collection-visit": "1.0.0",
+        "component-emitter": "1.2.1",
+        "get-value": "2.0.6",
+        "has-value": "1.0.0",
+        "isobject": "3.0.1",
+        "set-value": "2.0.0",
+        "to-object-path": "0.3.0",
+        "union-value": "1.0.0",
+        "unset-value": "1.0.0"
+      },
+      "dependencies": {
+        "isobject": {
+          "version": "3.0.1",
+          "resolved": "http://registry.npm.taobao.org/isobject/download/isobject-3.0.1.tgz",
+          "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8="
+        }
+      }
+    },
+    "callsites": {
+      "version": "2.0.0",
+      "resolved": "http://registry.npm.taobao.org/callsites/download/callsites-2.0.0.tgz",
+      "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=",
+      "dev": true
+    },
+    "camelcase": {
+      "version": "4.1.0",
+      "resolved": "http://registry.npm.taobao.org/camelcase/download/camelcase-4.1.0.tgz",
+      "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0="
+    },
+    "capture-exit": {
+      "version": "1.2.0",
+      "resolved": "http://registry.npm.taobao.org/capture-exit/download/capture-exit-1.2.0.tgz",
+      "integrity": "sha1-HF/MSJ/QqwDU8ax64QcuMXP7q28=",
+      "requires": {
+        "rsvp": "3.6.2"
+      }
+    },
+    "caseless": {
+      "version": "0.12.0",
+      "resolved": "http://registry.npm.taobao.org/caseless/download/caseless-0.12.0.tgz",
+      "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw="
+    },
+    "center-align": {
+      "version": "0.1.3",
+      "resolved": "http://registry.npm.taobao.org/center-align/download/center-align-0.1.3.tgz",
+      "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "align-text": "0.1.4",
+        "lazy-cache": "1.0.4"
+      }
+    },
+    "chalk": {
+      "version": "1.1.3",
+      "resolved": "http://registry.npm.taobao.org/chalk/download/chalk-1.1.3.tgz",
+      "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+      "requires": {
+        "ansi-styles": "2.2.1",
+        "escape-string-regexp": "1.0.5",
+        "has-ansi": "2.0.0",
+        "strip-ansi": "3.0.1",
+        "supports-color": "2.0.0"
+      }
+    },
+    "chardet": {
+      "version": "0.4.2",
+      "resolved": "http://registry.npm.taobao.org/chardet/download/chardet-0.4.2.tgz",
+      "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I="
+    },
+    "charenc": {
+      "version": "0.0.2",
+      "resolved": "http://registry.npm.taobao.org/charenc/download/charenc-0.0.2.tgz",
+      "integrity": "sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc="
+    },
+    "ci-info": {
+      "version": "1.1.3",
+      "resolved": "http://registry.npm.taobao.org/ci-info/download/ci-info-1.1.3.tgz",
+      "integrity": "sha1-cQGTJkuwXHe4yQ0C9aryIhamZ7I=",
+      "dev": true
+    },
+    "class-utils": {
+      "version": "0.3.6",
+      "resolved": "http://registry.npm.taobao.org/class-utils/download/class-utils-0.3.6.tgz",
+      "integrity": "sha1-+TNprouafOAv1B+q0MqDAzGQxGM=",
+      "requires": {
+        "arr-union": "3.1.0",
+        "define-property": "0.2.5",
+        "isobject": "3.0.1",
+        "static-extend": "0.1.2"
+      },
+      "dependencies": {
+        "arr-union": {
+          "version": "3.1.0",
+          "resolved": "http://registry.npm.taobao.org/arr-union/download/arr-union-3.1.0.tgz",
+          "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ="
+        },
+        "define-property": {
+          "version": "0.2.5",
+          "resolved": "http://registry.npm.taobao.org/define-property/download/define-property-0.2.5.tgz",
+          "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+          "requires": {
+            "is-descriptor": "0.1.6"
+          }
+        },
+        "isobject": {
+          "version": "3.0.1",
+          "resolved": "http://registry.npm.taobao.org/isobject/download/isobject-3.0.1.tgz",
+          "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8="
+        }
+      }
+    },
+    "cli-cursor": {
+      "version": "2.1.0",
+      "resolved": "http://registry.npm.taobao.org/cli-cursor/download/cli-cursor-2.1.0.tgz",
+      "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=",
+      "requires": {
+        "restore-cursor": "2.0.0"
+      }
+    },
+    "cli-width": {
+      "version": "2.2.0",
+      "resolved": "http://registry.npm.taobao.org/cli-width/download/cli-width-2.2.0.tgz",
+      "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk="
+    },
+    "clipboardy": {
+      "version": "1.2.3",
+      "resolved": "http://registry.npm.taobao.org/clipboardy/download/clipboardy-1.2.3.tgz",
+      "integrity": "sha1-BSY2G/eHJMHyC+JI1CjjZUM8B+8=",
+      "requires": {
+        "arch": "2.1.0",
+        "execa": "0.8.0"
+      }
+    },
+    "cliui": {
+      "version": "3.2.0",
+      "resolved": "http://registry.npm.taobao.org/cliui/download/cliui-3.2.0.tgz",
+      "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=",
+      "requires": {
+        "string-width": "1.0.2",
+        "strip-ansi": "3.0.1",
+        "wrap-ansi": "2.1.0"
+      },
+      "dependencies": {
+        "is-fullwidth-code-point": {
+          "version": "1.0.0",
+          "resolved": "http://registry.npm.taobao.org/is-fullwidth-code-point/download/is-fullwidth-code-point-1.0.0.tgz",
+          "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
+          "requires": {
+            "number-is-nan": "1.0.1"
+          }
+        },
+        "string-width": {
+          "version": "1.0.2",
+          "resolved": "http://registry.npm.taobao.org/string-width/download/string-width-1.0.2.tgz",
+          "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
+          "requires": {
+            "code-point-at": "1.1.0",
+            "is-fullwidth-code-point": "1.0.0",
+            "strip-ansi": "3.0.1"
+          }
+        }
+      }
+    },
+    "co": {
+      "version": "4.6.0",
+      "resolved": "http://registry.npm.taobao.org/co/download/co-4.6.0.tgz",
+      "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ="
+    },
+    "code-point-at": {
+      "version": "1.1.0",
+      "resolved": "http://registry.npm.taobao.org/code-point-at/download/code-point-at-1.1.0.tgz",
+      "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c="
+    },
+    "collection-visit": {
+      "version": "1.0.0",
+      "resolved": "http://registry.npm.taobao.org/collection-visit/download/collection-visit-1.0.0.tgz",
+      "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=",
+      "requires": {
+        "map-visit": "1.0.0",
+        "object-visit": "1.0.1"
+      }
+    },
+    "color-convert": {
+      "version": "1.9.1",
+      "resolved": "http://registry.npm.taobao.org/color-convert/download/color-convert-1.9.1.tgz",
+      "integrity": "sha1-wSYRB66y8pTr/+ye2eytUppgl+0=",
+      "requires": {
+        "color-name": "1.1.3"
+      }
+    },
+    "color-name": {
+      "version": "1.1.3",
+      "resolved": "http://registry.npm.taobao.org/color-name/download/color-name-1.1.3.tgz",
+      "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
+    },
+    "color-support": {
+      "version": "1.1.3",
+      "resolved": "http://registry.npm.taobao.org/color-support/download/color-support-1.1.3.tgz",
+      "integrity": "sha1-k4NDeaHMmgxh+C9S8NBDIiUb1aI="
+    },
+    "combined-stream": {
+      "version": "1.0.6",
+      "resolved": "http://registry.npm.taobao.org/combined-stream/download/combined-stream-1.0.6.tgz",
+      "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=",
+      "requires": {
+        "delayed-stream": "1.0.0"
+      }
+    },
+    "commander": {
+      "version": "2.15.1",
+      "resolved": "http://registry.npm.taobao.org/commander/download/commander-2.15.1.tgz",
+      "integrity": "sha1-30boZ9D8Kuxmo0ZitAapzK//Ww8="
+    },
+    "compare-versions": {
+      "version": "3.1.0",
+      "resolved": "http://registry.npm.taobao.org/compare-versions/download/compare-versions-3.1.0.tgz",
+      "integrity": "sha1-QzECVqXFVartQZPATY8VTPnG79U=",
+      "dev": true
+    },
+    "component-emitter": {
+      "version": "1.2.1",
+      "resolved": "http://registry.npm.taobao.org/component-emitter/download/component-emitter-1.2.1.tgz",
+      "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY="
+    },
+    "compressible": {
+      "version": "2.0.13",
+      "resolved": "http://registry.npm.taobao.org/compressible/download/compressible-2.0.13.tgz",
+      "integrity": "sha1-DRAgq5JLL9tNYnmHXH1tq6a6p6k=",
+      "requires": {
+        "mime-db": "1.33.0"
+      }
+    },
+    "compression": {
+      "version": "1.7.2",
+      "resolved": "http://registry.npm.taobao.org/compression/download/compression-1.7.2.tgz",
+      "integrity": "sha1-qv+81qr4VLROuygDU9WtFlH1mmk=",
+      "requires": {
+        "accepts": "1.3.5",
+        "bytes": "3.0.0",
+        "compressible": "2.0.13",
+        "debug": "2.6.9",
+        "on-headers": "1.0.1",
+        "safe-buffer": "5.1.1",
+        "vary": "1.1.2"
+      }
+    },
+    "concat-map": {
+      "version": "0.0.1",
+      "resolved": "http://registry.npm.taobao.org/concat-map/download/concat-map-0.0.1.tgz",
+      "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
+    },
+    "concat-stream": {
+      "version": "1.6.2",
+      "resolved": "http://registry.npm.taobao.org/concat-stream/download/concat-stream-1.6.2.tgz",
+      "integrity": "sha1-kEvfGUzTEi/Gdcd/xKw9T/D9GjQ=",
+      "requires": {
+        "buffer-from": "1.0.0",
+        "inherits": "2.0.3",
+        "readable-stream": "2.3.6",
+        "typedarray": "0.0.6"
+      }
+    },
+    "connect": {
+      "version": "3.6.6",
+      "resolved": "http://registry.npm.taobao.org/connect/download/connect-3.6.6.tgz",
+      "integrity": "sha1-Ce/2xVr3I24TcTWnJXSFi2eG9SQ=",
+      "requires": {
+        "debug": "2.6.9",
+        "finalhandler": "1.1.0",
+        "parseurl": "1.3.2",
+        "utils-merge": "1.0.1"
+      }
+    },
+    "convert-source-map": {
+      "version": "1.5.1",
+      "resolved": "http://registry.npm.taobao.org/convert-source-map/download/convert-source-map-1.5.1.tgz",
+      "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU="
+    },
+    "copy-descriptor": {
+      "version": "0.1.1",
+      "resolved": "http://registry.npm.taobao.org/copy-descriptor/download/copy-descriptor-0.1.1.tgz",
+      "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40="
+    },
+    "core-js": {
+      "version": "1.2.7",
+      "resolved": "http://registry.npm.taobao.org/core-js/download/core-js-1.2.7.tgz",
+      "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY="
+    },
+    "core-util-is": {
+      "version": "1.0.2",
+      "resolved": "http://registry.npm.taobao.org/core-util-is/download/core-util-is-1.0.2.tgz",
+      "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
+    },
+    "create-react-class": {
+      "version": "15.6.3",
+      "resolved": "http://registry.npm.taobao.org/create-react-class/download/create-react-class-15.6.3.tgz",
+      "integrity": "sha1-LXMjf7P5cK5uvgEanmb0bbyoADY=",
+      "requires": {
+        "fbjs": "0.8.16",
+        "loose-envify": "1.3.1",
+        "object-assign": "4.1.1"
+      }
+    },
+    "cross-spawn": {
+      "version": "5.1.0",
+      "resolved": "http://registry.npm.taobao.org/cross-spawn/download/cross-spawn-5.1.0.tgz",
+      "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=",
+      "requires": {
+        "lru-cache": "4.1.3",
+        "shebang-command": "1.2.0",
+        "which": "1.3.0"
+      }
+    },
+    "crypt": {
+      "version": "0.0.2",
+      "resolved": "http://registry.npm.taobao.org/crypt/download/crypt-0.0.2.tgz",
+      "integrity": "sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs="
+    },
+    "cryptiles": {
+      "version": "3.1.2",
+      "resolved": "http://registry.npm.taobao.org/cryptiles/download/cryptiles-3.1.2.tgz",
+      "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=",
+      "requires": {
+        "boom": "5.2.0"
+      },
+      "dependencies": {
+        "boom": {
+          "version": "5.2.0",
+          "resolved": "http://registry.npm.taobao.org/boom/download/boom-5.2.0.tgz",
+          "integrity": "sha1-XdnabuOl8wIHdDYpDLcX0/SlTgI=",
+          "requires": {
+            "hoek": "4.2.1"
+          }
+        }
+      }
+    },
+    "cssom": {
+      "version": "0.3.2",
+      "resolved": "http://registry.npm.taobao.org/cssom/download/cssom-0.3.2.tgz",
+      "integrity": "sha1-uANhcMefB6kP8vFuIihAJ6JDhIs=",
+      "dev": true
+    },
+    "cssstyle": {
+      "version": "0.2.37",
+      "resolved": "http://registry.npm.taobao.org/cssstyle/download/cssstyle-0.2.37.tgz",
+      "integrity": "sha1-VBCXI0yyUTyDzu06zdwn/yeYfVQ=",
+      "dev": true,
+      "requires": {
+        "cssom": "0.3.2"
+      }
+    },
+    "dashdash": {
+      "version": "1.14.1",
+      "resolved": "http://registry.npm.taobao.org/dashdash/download/dashdash-1.14.1.tgz",
+      "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
+      "requires": {
+        "assert-plus": "1.0.0"
+      }
+    },
+    "data-urls": {
+      "version": "1.0.0",
+      "resolved": "http://registry.npm.taobao.org/data-urls/download/data-urls-1.0.0.tgz",
+      "integrity": "sha1-JIAt5OgcKY6oqTiLsNjkYcd0aE8=",
+      "dev": true,
+      "requires": {
+        "abab": "1.0.4",
+        "whatwg-mimetype": "2.1.0",
+        "whatwg-url": "6.4.1"
+      }
+    },
+    "debug": {
+      "version": "2.6.9",
+      "resolved": "http://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz",
+      "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=",
+      "requires": {
+        "ms": "2.0.0"
+      }
+    },
+    "decamelize": {
+      "version": "1.2.0",
+      "resolved": "http://registry.npm.taobao.org/decamelize/download/decamelize-1.2.0.tgz",
+      "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA="
+    },
+    "decode-uri-component": {
+      "version": "0.2.0",
+      "resolved": "http://registry.npm.taobao.org/decode-uri-component/download/decode-uri-component-0.2.0.tgz",
+      "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU="
+    },
+    "deep-diff": {
+      "version": "0.3.8",
+      "resolved": "http://registry.npm.taobao.org/deep-diff/download/deep-diff-0.3.8.tgz",
+      "integrity": "sha1-wB3mPvsO7JeYgB1Ax+Da4ltYLIQ="
+    },
+    "deep-is": {
+      "version": "0.1.3",
+      "resolved": "http://registry.npm.taobao.org/deep-is/download/deep-is-0.1.3.tgz",
+      "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=",
+      "dev": true
+    },
+    "default-require-extensions": {
+      "version": "1.0.0",
+      "resolved": "http://registry.npm.taobao.org/default-require-extensions/download/default-require-extensions-1.0.0.tgz",
+      "integrity": "sha1-836hXT4T/9m0N9M+GnW1+5eHTLg=",
+      "dev": true,
+      "requires": {
+        "strip-bom": "2.0.0"
+      },
+      "dependencies": {
+        "strip-bom": {
+          "version": "2.0.0",
+          "resolved": "http://registry.npm.taobao.org/strip-bom/download/strip-bom-2.0.0.tgz",
+          "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
+          "dev": true,
+          "requires": {
+            "is-utf8": "0.2.1"
+          }
+        }
+      }
+    },
+    "define-properties": {
+      "version": "1.1.2",
+      "resolved": "http://registry.npm.taobao.org/define-properties/download/define-properties-1.1.2.tgz",
+      "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=",
+      "dev": true,
+      "requires": {
+        "foreach": "2.0.5",
+        "object-keys": "1.0.11"
+      }
+    },
+    "define-property": {
+      "version": "2.0.2",
+      "resolved": "http://registry.npm.taobao.org/define-property/download/define-property-2.0.2.tgz",
+      "integrity": "sha1-1Flono1lS6d+AqgX+HENcCyxbp0=",
+      "requires": {
+        "is-descriptor": "1.0.2",
+        "isobject": "3.0.1"
+      },
+      "dependencies": {
+        "is-accessor-descriptor": {
+          "version": "1.0.0",
+          "resolved": "http://registry.npm.taobao.org/is-accessor-descriptor/download/is-accessor-descriptor-1.0.0.tgz",
+          "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=",
+          "requires": {
+            "kind-of": "6.0.2"
+          }
+        },
+        "is-data-descriptor": {
+          "version": "1.0.0",
+          "resolved": "http://registry.npm.taobao.org/is-data-descriptor/download/is-data-descriptor-1.0.0.tgz",
+          "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=",
+          "requires": {
+            "kind-of": "6.0.2"
+          }
+        },
+        "is-descriptor": {
+          "version": "1.0.2",
+          "resolved": "http://registry.npm.taobao.org/is-descriptor/download/is-descriptor-1.0.2.tgz",
+          "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=",
+          "requires": {
+            "is-accessor-descriptor": "1.0.0",
+            "is-data-descriptor": "1.0.0",
+            "kind-of": "6.0.2"
+          }
+        },
+        "isobject": {
+          "version": "3.0.1",
+          "resolved": "http://registry.npm.taobao.org/isobject/download/isobject-3.0.1.tgz",
+          "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8="
+        },
+        "kind-of": {
+          "version": "6.0.2",
+          "resolved": "http://registry.npm.taobao.org/kind-of/download/kind-of-6.0.2.tgz",
+          "integrity": "sha1-ARRrNqYhjmTljzqNZt5df8b20FE="
+        }
+      }
+    },
+    "delayed-stream": {
+      "version": "1.0.0",
+      "resolved": "http://registry.npm.taobao.org/delayed-stream/download/delayed-stream-1.0.0.tgz",
+      "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
+    },
+    "delegates": {
+      "version": "1.0.0",
+      "resolved": "http://registry.npm.taobao.org/delegates/download/delegates-1.0.0.tgz",
+      "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o="
+    },
+    "denodeify": {
+      "version": "1.2.1",
+      "resolved": "http://registry.npm.taobao.org/denodeify/download/denodeify-1.2.1.tgz",
+      "integrity": "sha1-OjYof1A05pnnV3kBBSwubJQlFjE="
+    },
+    "depd": {
+      "version": "1.1.2",
+      "resolved": "http://registry.npm.taobao.org/depd/download/depd-1.1.2.tgz",
+      "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak="
+    },
+    "destroy": {
+      "version": "1.0.4",
+      "resolved": "http://registry.npm.taobao.org/destroy/download/destroy-1.0.4.tgz",
+      "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
+    },
+    "detect-indent": {
+      "version": "4.0.0",
+      "resolved": "http://registry.npm.taobao.org/detect-indent/download/detect-indent-4.0.0.tgz",
+      "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=",
+      "requires": {
+        "repeating": "2.0.1"
+      }
+    },
+    "detect-newline": {
+      "version": "2.1.0",
+      "resolved": "http://registry.npm.taobao.org/detect-newline/download/detect-newline-2.1.0.tgz",
+      "integrity": "sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I="
+    },
+    "diff": {
+      "version": "3.5.0",
+      "resolved": "http://registry.npm.taobao.org/diff/download/diff-3.5.0.tgz",
+      "integrity": "sha1-gAwN0eCov7yVg1wgKtIg/jF+WhI=",
+      "dev": true
+    },
+    "dom-walk": {
+      "version": "0.1.1",
+      "resolved": "http://registry.npm.taobao.org/dom-walk/download/dom-walk-0.1.1.tgz",
+      "integrity": "sha1-ZyIm3HTI95mtNTB9+TaroRrNYBg="
+    },
+    "domexception": {
+      "version": "1.0.1",
+      "resolved": "http://registry.npm.taobao.org/domexception/download/domexception-1.0.1.tgz",
+      "integrity": "sha1-k3RCZEymoxJh7zbj7Gd/6AVYLJA=",
+      "dev": true,
+      "requires": {
+        "webidl-conversions": "4.0.2"
+      }
+    },
+    "ecc-jsbn": {
+      "version": "0.1.1",
+      "resolved": "http://registry.npm.taobao.org/ecc-jsbn/download/ecc-jsbn-0.1.1.tgz",
+      "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=",
+      "optional": true,
+      "requires": {
+        "jsbn": "0.1.1"
+      }
+    },
+    "ee-first": {
+      "version": "1.1.1",
+      "resolved": "http://registry.npm.taobao.org/ee-first/download/ee-first-1.1.1.tgz",
+      "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
+    },
+    "encodeurl": {
+      "version": "1.0.2",
+      "resolved": "http://registry.npm.taobao.org/encodeurl/download/encodeurl-1.0.2.tgz",
+      "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k="
+    },
+    "encoding": {
+      "version": "0.1.12",
+      "resolved": "http://registry.npm.taobao.org/encoding/download/encoding-0.1.12.tgz",
+      "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=",
+      "requires": {
+        "iconv-lite": "0.4.23"
+      }
+    },
+    "envinfo": {
+      "version": "3.11.1",
+      "resolved": "http://registry.npm.taobao.org/envinfo/download/envinfo-3.11.1.tgz",
+      "integrity": "sha1-RZaPr1B5qnl7fc3DsSPzQNRSnhw=",
+      "requires": {
+        "clipboardy": "1.2.3",
+        "glob": "7.1.2",
+        "minimist": "1.2.0",
+        "os-name": "2.0.1",
+        "which": "1.3.0"
+      }
+    },
+    "error-ex": {
+      "version": "1.3.1",
+      "resolved": "http://registry.npm.taobao.org/error-ex/download/error-ex-1.3.1.tgz",
+      "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=",
+      "requires": {
+        "is-arrayish": "0.2.1"
+      }
+    },
+    "error-stack-parser": {
+      "version": "2.0.1",
+      "resolved": "http://registry.npm.taobao.org/error-stack-parser/download/error-stack-parser-2.0.1.tgz",
+      "integrity": "sha1-oyArj7AxFKqbQKDjZp5IsrZaAQo=",
+      "requires": {
+        "stackframe": "1.0.4"
+      }
+    },
+    "errorhandler": {
+      "version": "1.5.0",
+      "resolved": "http://registry.npm.taobao.org/errorhandler/download/errorhandler-1.5.0.tgz",
+      "integrity": "sha1-6rpkyl1UKjEayUX1gt78M2Fl2fQ=",
+      "requires": {
+        "accepts": "1.3.5",
+        "escape-html": "1.0.3"
+      }
+    },
+    "es-abstract": {
+      "version": "1.11.0",
+      "resolved": "http://registry.npm.taobao.org/es-abstract/download/es-abstract-1.11.0.tgz",
+      "integrity": "sha1-zOh9UY8Elok7GjDNhGGDVTVIBoE=",
+      "dev": true,
+      "requires": {
+        "es-to-primitive": "1.1.1",
+        "function-bind": "1.1.1",
+        "has": "1.0.1",
+        "is-callable": "1.1.3",
+        "is-regex": "1.0.4"
+      }
+    },
+    "es-to-primitive": {
+      "version": "1.1.1",
+      "resolved": "http://registry.npm.taobao.org/es-to-primitive/download/es-to-primitive-1.1.1.tgz",
+      "integrity": "sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0=",
+      "dev": true,
+      "requires": {
+        "is-callable": "1.1.3",
+        "is-date-object": "1.0.1",
+        "is-symbol": "1.0.1"
+      }
+    },
+    "escape-html": {
+      "version": "1.0.3",
+      "resolved": "http://registry.npm.taobao.org/escape-html/download/escape-html-1.0.3.tgz",
+      "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg="
+    },
+    "escape-string-regexp": {
+      "version": "1.0.5",
+      "resolved": "http://registry.npm.taobao.org/escape-string-regexp/download/escape-string-regexp-1.0.5.tgz",
+      "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ="
+    },
+    "escodegen": {
+      "version": "1.9.1",
+      "resolved": "http://registry.npm.taobao.org/escodegen/download/escodegen-1.9.1.tgz",
+      "integrity": "sha1-264X75bI5L7bE1b0UE+kzC98t+I=",
+      "dev": true,
+      "requires": {
+        "esprima": "3.1.3",
+        "estraverse": "4.2.0",
+        "esutils": "2.0.2",
+        "optionator": "0.8.2",
+        "source-map": "0.6.1"
+      },
+      "dependencies": {
+        "esprima": {
+          "version": "3.1.3",
+          "resolved": "http://registry.npm.taobao.org/esprima/download/esprima-3.1.3.tgz",
+          "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=",
+          "dev": true
+        },
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "http://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz",
+          "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
+          "dev": true,
+          "optional": true
+        }
+      }
+    },
+    "esprima": {
+      "version": "4.0.0",
+      "resolved": "http://registry.npm.taobao.org/esprima/download/esprima-4.0.0.tgz",
+      "integrity": "sha1-RJnt3NERDgshi6zy+n9/WfVcqAQ=",
+      "dev": true
+    },
+    "estraverse": {
+      "version": "4.2.0",
+      "resolved": "http://registry.npm.taobao.org/estraverse/download/estraverse-4.2.0.tgz",
+      "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=",
+      "dev": true
+    },
+    "esutils": {
+      "version": "2.0.2",
+      "resolved": "http://registry.npm.taobao.org/esutils/download/esutils-2.0.2.tgz",
+      "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs="
+    },
+    "etag": {
+      "version": "1.8.1",
+      "resolved": "http://registry.npm.taobao.org/etag/download/etag-1.8.1.tgz",
+      "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc="
+    },
+    "event-target-shim": {
+      "version": "1.1.1",
+      "resolved": "http://registry.npm.taobao.org/event-target-shim/download/event-target-shim-1.1.1.tgz",
+      "integrity": "sha1-qG5e5r2qFgVEddp5fM3fDFVphJE="
+    },
+    "eventemitter3": {
+      "version": "3.1.0",
+      "resolved": "http://registry.npm.taobao.org/eventemitter3/download/eventemitter3-3.1.0.tgz",
+      "integrity": "sha1-CQtNbNvWRe0Qv3UNS1QHlC17oWM="
+    },
+    "exec-sh": {
+      "version": "0.2.1",
+      "resolved": "http://registry.npm.taobao.org/exec-sh/download/exec-sh-0.2.1.tgz",
+      "integrity": "sha1-FjuYpuiea2W0fCoo0hW8H2OYnDg=",
+      "requires": {
+        "merge": "1.2.0"
+      }
+    },
+    "execa": {
+      "version": "0.8.0",
+      "resolved": "http://registry.npm.taobao.org/execa/download/execa-0.8.0.tgz",
+      "integrity": "sha1-2NdrvBtVIX7RkP1t1J08d07PyNo=",
+      "requires": {
+        "cross-spawn": "5.1.0",
+        "get-stream": "3.0.0",
+        "is-stream": "1.1.0",
+        "npm-run-path": "2.0.2",
+        "p-finally": "1.0.0",
+        "signal-exit": "3.0.2",
+        "strip-eof": "1.0.0"
+      }
+    },
+    "exit": {
+      "version": "0.1.2",
+      "resolved": "http://registry.npm.taobao.org/exit/download/exit-0.1.2.tgz",
+      "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=",
+      "dev": true
+    },
+    "expand-brackets": {
+      "version": "0.1.5",
+      "resolved": "http://registry.npm.taobao.org/expand-brackets/download/expand-brackets-0.1.5.tgz",
+      "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=",
+      "requires": {
+        "is-posix-bracket": "0.1.1"
+      }
+    },
+    "expand-range": {
+      "version": "1.8.2",
+      "resolved": "http://registry.npm.taobao.org/expand-range/download/expand-range-1.8.2.tgz",
+      "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=",
+      "requires": {
+        "fill-range": "2.2.3"
+      }
+    },
+    "expect": {
+      "version": "22.4.3",
+      "resolved": "http://registry.npm.taobao.org/expect/download/expect-22.4.3.tgz",
+      "integrity": "sha1-1aKdCg4fshU1V8rvJnTUVH6RRnQ=",
+      "dev": true,
+      "requires": {
+        "ansi-styles": "3.2.1",
+        "jest-diff": "22.4.3",
+        "jest-get-type": "22.4.3",
+        "jest-matcher-utils": "22.4.3",
+        "jest-message-util": "22.4.3",
+        "jest-regex-util": "22.4.3"
+      },
+      "dependencies": {
+        "ansi-styles": {
+          "version": "3.2.1",
+          "resolved": "http://registry.npm.taobao.org/ansi-styles/download/ansi-styles-3.2.1.tgz",
+          "integrity": "sha1-QfuyAkPlCxK+DwS43tvwdSDOhB0=",
+          "dev": true,
+          "requires": {
+            "color-convert": "1.9.1"
+          }
+        }
+      }
+    },
+    "extend": {
+      "version": "3.0.1",
+      "resolved": "http://registry.npm.taobao.org/extend/download/extend-3.0.1.tgz",
+      "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ="
+    },
+    "extend-shallow": {
+      "version": "1.1.4",
+      "resolved": "http://registry.npm.taobao.org/extend-shallow/download/extend-shallow-1.1.4.tgz",
+      "integrity": "sha1-Gda/lN/AnXa6cR85uHLSH/TdkHE=",
+      "requires": {
+        "kind-of": "1.1.0"
+      }
+    },
+    "external-editor": {
+      "version": "2.2.0",
+      "resolved": "http://registry.npm.taobao.org/external-editor/download/external-editor-2.2.0.tgz",
+      "integrity": "sha1-BFURz9jRM/OEZnPRBHwVTiFK09U=",
+      "requires": {
+        "chardet": "0.4.2",
+        "iconv-lite": "0.4.23",
+        "tmp": "0.0.33"
+      }
+    },
+    "extglob": {
+      "version": "0.3.2",
+      "resolved": "http://registry.npm.taobao.org/extglob/download/extglob-0.3.2.tgz",
+      "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=",
+      "requires": {
+        "is-extglob": "1.0.0"
+      }
+    },
+    "extsprintf": {
+      "version": "1.3.0",
+      "resolved": "http://registry.npm.taobao.org/extsprintf/download/extsprintf-1.3.0.tgz",
+      "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU="
+    },
+    "fancy-log": {
+      "version": "1.3.2",
+      "resolved": "http://registry.npm.taobao.org/fancy-log/download/fancy-log-1.3.2.tgz",
+      "integrity": "sha1-9BEl49hPLn2JpD0G2VjI94vha+E=",
+      "requires": {
+        "ansi-gray": "0.1.1",
+        "color-support": "1.1.3",
+        "time-stamp": "1.1.0"
+      }
+    },
+    "fast-deep-equal": {
+      "version": "1.1.0",
+      "resolved": "http://registry.npm.taobao.org/fast-deep-equal/download/fast-deep-equal-1.1.0.tgz",
+      "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ="
+    },
+    "fast-json-stable-stringify": {
+      "version": "2.0.0",
+      "resolved": "http://registry.npm.taobao.org/fast-json-stable-stringify/download/fast-json-stable-stringify-2.0.0.tgz",
+      "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I="
+    },
+    "fast-levenshtein": {
+      "version": "2.0.6",
+      "resolved": "http://registry.npm.taobao.org/fast-levenshtein/download/fast-levenshtein-2.0.6.tgz",
+      "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
+      "dev": true
+    },
+    "fb-watchman": {
+      "version": "2.0.0",
+      "resolved": "http://registry.npm.taobao.org/fb-watchman/download/fb-watchman-2.0.0.tgz",
+      "integrity": "sha1-VOmr99+i8mzZsWNsWIwa/AXeXVg=",
+      "requires": {
+        "bser": "2.0.0"
+      }
+    },
+    "fbjs": {
+      "version": "0.8.16",
+      "resolved": "http://registry.npm.taobao.org/fbjs/download/fbjs-0.8.16.tgz",
+      "integrity": "sha1-XmdDL1UNxBtXK/VYR7ispk5TN9s=",
+      "requires": {
+        "core-js": "1.2.7",
+        "isomorphic-fetch": "2.2.1",
+        "loose-envify": "1.3.1",
+        "object-assign": "4.1.1",
+        "promise": "7.3.1",
+        "setimmediate": "1.0.5",
+        "ua-parser-js": "0.7.18"
+      }
+    },
+    "fbjs-scripts": {
+      "version": "0.8.3",
+      "resolved": "http://registry.npm.taobao.org/fbjs-scripts/download/fbjs-scripts-0.8.3.tgz",
+      "integrity": "sha1-uFTeehHmKjf3Lauar02bU8SgMXQ=",
+      "requires": {
+        "ansi-colors": "1.1.0",
+        "babel-core": "6.26.3",
+        "babel-preset-fbjs": "2.1.4",
+        "core-js": "2.5.6",
+        "cross-spawn": "5.1.0",
+        "fancy-log": "1.3.2",
+        "object-assign": "4.1.1",
+        "plugin-error": "0.1.2",
+        "semver": "5.5.0",
+        "through2": "2.0.3"
+      },
+      "dependencies": {
+        "core-js": {
+          "version": "2.5.6",
+          "resolved": "http://registry.npm.taobao.org/core-js/download/core-js-2.5.6.tgz",
+          "integrity": "sha1-D+bUW/PKw6w2Sp1y3nV29OsiG50="
+        }
+      }
+    },
+    "figures": {
+      "version": "2.0.0",
+      "resolved": "http://registry.npm.taobao.org/figures/download/figures-2.0.0.tgz",
+      "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=",
+      "requires": {
+        "escape-string-regexp": "1.0.5"
+      }
+    },
+    "filename-regex": {
+      "version": "2.0.1",
+      "resolved": "http://registry.npm.taobao.org/filename-regex/download/filename-regex-2.0.1.tgz",
+      "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY="
+    },
+    "fileset": {
+      "version": "2.0.3",
+      "resolved": "http://registry.npm.taobao.org/fileset/download/fileset-2.0.3.tgz",
+      "integrity": "sha1-jnVIqW08wjJ+5eZ0FocjozO7oqA=",
+      "dev": true,
+      "requires": {
+        "glob": "7.1.2",
+        "minimatch": "3.0.4"
+      }
+    },
+    "fill-range": {
+      "version": "2.2.3",
+      "resolved": "http://registry.npm.taobao.org/fill-range/download/fill-range-2.2.3.tgz",
+      "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=",
+      "requires": {
+        "is-number": "2.1.0",
+        "isobject": "2.1.0",
+        "randomatic": "1.1.7",
+        "repeat-element": "1.1.2",
+        "repeat-string": "1.6.1"
+      }
+    },
+    "finalhandler": {
+      "version": "1.1.0",
+      "resolved": "http://registry.npm.taobao.org/finalhandler/download/finalhandler-1.1.0.tgz",
+      "integrity": "sha1-zgtoVbRYU+eRsvzGgARtiCU91/U=",
+      "requires": {
+        "debug": "2.6.9",
+        "encodeurl": "1.0.2",
+        "escape-html": "1.0.3",
+        "on-finished": "2.3.0",
+        "parseurl": "1.3.2",
+        "statuses": "1.3.1",
+        "unpipe": "1.0.0"
+      }
+    },
+    "find-up": {
+      "version": "2.1.0",
+      "resolved": "http://registry.npm.taobao.org/find-up/download/find-up-2.1.0.tgz",
+      "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
+      "requires": {
+        "locate-path": "2.0.0"
+      }
+    },
+    "for-in": {
+      "version": "1.0.2",
+      "resolved": "http://registry.npm.taobao.org/for-in/download/for-in-1.0.2.tgz",
+      "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA="
+    },
+    "for-own": {
+      "version": "0.1.5",
+      "resolved": "http://registry.npm.taobao.org/for-own/download/for-own-0.1.5.tgz",
+      "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=",
+      "requires": {
+        "for-in": "1.0.2"
+      }
+    },
+    "foreach": {
+      "version": "2.0.5",
+      "resolved": "http://registry.npm.taobao.org/foreach/download/foreach-2.0.5.tgz",
+      "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=",
+      "dev": true
+    },
+    "forever-agent": {
+      "version": "0.6.1",
+      "resolved": "http://registry.npm.taobao.org/forever-agent/download/forever-agent-0.6.1.tgz",
+      "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE="
+    },
+    "form-data": {
+      "version": "2.3.2",
+      "resolved": "http://registry.npm.taobao.org/form-data/download/form-data-2.3.2.tgz",
+      "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=",
+      "requires": {
+        "asynckit": "0.4.0",
+        "combined-stream": "1.0.6",
+        "mime-types": "2.1.18"
+      }
+    },
+    "fragment-cache": {
+      "version": "0.2.1",
+      "resolved": "http://registry.npm.taobao.org/fragment-cache/download/fragment-cache-0.2.1.tgz",
+      "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=",
+      "requires": {
+        "map-cache": "0.2.2"
+      }
+    },
+    "fresh": {
+      "version": "0.5.2",
+      "resolved": "http://registry.npm.taobao.org/fresh/download/fresh-0.5.2.tgz",
+      "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac="
+    },
+    "fs-extra": {
+      "version": "1.0.0",
+      "resolved": "http://registry.npm.taobao.org/fs-extra/download/fs-extra-1.0.0.tgz",
+      "integrity": "sha1-zTzl9+fLYUWIP8rjGR6Yd/hYeVA=",
+      "requires": {
+        "graceful-fs": "4.1.11",
+        "jsonfile": "2.4.0",
+        "klaw": "1.3.1"
+      }
+    },
+    "fs.realpath": {
+      "version": "1.0.0",
+      "resolved": "http://registry.npm.taobao.org/fs.realpath/download/fs.realpath-1.0.0.tgz",
+      "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
+    },
+    "fsevents": {
+      "version": "1.2.3",
+      "resolved": "http://registry.npm.taobao.org/fsevents/download/fsevents-1.2.3.tgz",
+      "integrity": "sha1-CCkpgucFn2Z0yT2LgpwehgSXmsA=",
+      "optional": true,
+      "requires": {
+        "nan": "2.10.0",
+        "node-pre-gyp": "0.9.1"
+      },
+      "dependencies": {
+        "abbrev": {
+          "version": "1.1.1",
+          "bundled": true,
+          "optional": true
+        },
+        "ansi-regex": {
+          "version": "2.1.1",
+          "bundled": true
+        },
+        "aproba": {
+          "version": "1.2.0",
+          "bundled": true,
+          "optional": true
+        },
+        "are-we-there-yet": {
+          "version": "1.1.4",
+          "bundled": true,
+          "optional": true,
+          "requires": {
+            "delegates": "1.0.0",
+            "readable-stream": "2.3.6"
+          }
+        },
+        "balanced-match": {
+          "version": "1.0.0",
+          "bundled": true
+        },
+        "brace-expansion": {
+          "version": "1.1.11",
+          "bundled": true,
+          "requires": {
+            "balanced-match": "1.0.0",
+            "concat-map": "0.0.1"
+          }
+        },
+        "chownr": {
+          "version": "1.0.1",
+          "bundled": true,
+          "optional": true
+        },
+        "code-point-at": {
+          "version": "1.1.0",
+          "bundled": true
+        },
+        "concat-map": {
+          "version": "0.0.1",
+          "bundled": true
+        },
+        "console-control-strings": {
+          "version": "1.1.0",
+          "bundled": true
+        },
+        "core-util-is": {
+          "version": "1.0.2",
+          "bundled": true,
+          "optional": true
+        },
+        "debug": {
+          "version": "2.6.9",
+          "bundled": true,
+          "optional": true,
+          "requires": {
+            "ms": "2.0.0"
+          }
+        },
+        "deep-extend": {
+          "version": "0.4.2",
+          "bundled": true,
+          "optional": true
+        },
+        "delegates": {
+          "version": "1.0.0",
+          "bundled": true,
+          "optional": true
+        },
+        "detect-libc": {
+          "version": "1.0.3",
+          "bundled": true,
+          "optional": true
+        },
+        "fs-minipass": {
+          "version": "1.2.5",
+          "bundled": true,
+          "optional": true,
+          "requires": {
+            "minipass": "2.2.4"
+          }
+        },
+        "fs.realpath": {
+          "version": "1.0.0",
+          "bundled": true,
+          "optional": true
+        },
+        "gauge": {
+          "version": "2.7.4",
+          "bundled": true,
+          "optional": true,
+          "requires": {
+            "aproba": "1.2.0",
+            "console-control-strings": "1.1.0",
+            "has-unicode": "2.0.1",
+            "object-assign": "4.1.1",
+            "signal-exit": "3.0.2",
+            "string-width": "1.0.2",
+            "strip-ansi": "3.0.1",
+            "wide-align": "1.1.2"
+          }
+        },
+        "glob": {
+          "version": "7.1.2",
+          "bundled": true,
+          "optional": true,
+          "requires": {
+            "fs.realpath": "1.0.0",
+            "inflight": "1.0.6",
+            "inherits": "2.0.3",
+            "minimatch": "3.0.4",
+            "once": "1.4.0",
+            "path-is-absolute": "1.0.1"
+          }
+        },
+        "has-unicode": {
+          "version": "2.0.1",
+          "bundled": true,
+          "optional": true
+        },
+        "iconv-lite": {
+          "version": "0.4.21",
+          "bundled": true,
+          "optional": true,
+          "requires": {
+            "safer-buffer": "2.1.2"
+          }
+        },
+        "ignore-walk": {
+          "version": "3.0.1",
+          "bundled": true,
+          "optional": true,
+          "requires": {
+            "minimatch": "3.0.4"
+          }
+        },
+        "inflight": {
+          "version": "1.0.6",
+          "bundled": true,
+          "optional": true,
+          "requires": {
+            "once": "1.4.0",
+            "wrappy": "1.0.2"
+          }
+        },
+        "inherits": {
+          "version": "2.0.3",
+          "bundled": true
+        },
+        "ini": {
+          "version": "1.3.5",
+          "bundled": true,
+          "optional": true
+        },
+        "is-fullwidth-code-point": {
+          "version": "1.0.0",
+          "bundled": true,
+          "requires": {
+            "number-is-nan": "1.0.1"
+          }
+        },
+        "isarray": {
+          "version": "1.0.0",
+          "bundled": true,
+          "optional": true
+        },
+        "minimatch": {
+          "version": "3.0.4",
+          "bundled": true,
+          "requires": {
+            "brace-expansion": "1.1.11"
+          }
+        },
+        "minimist": {
+          "version": "0.0.8",
+          "bundled": true
+        },
+        "minipass": {
+          "version": "2.2.4",
+          "bundled": true,
+          "requires": {
+            "safe-buffer": "5.1.1",
+            "yallist": "3.0.2"
+          }
+        },
+        "minizlib": {
+          "version": "1.1.0",
+          "bundled": true,
+          "optional": true,
+          "requires": {
+            "minipass": "2.2.4"
+          }
+        },
+        "mkdirp": {
+          "version": "0.5.1",
+          "bundled": true,
+          "requires": {
+            "minimist": "0.0.8"
+          }
+        },
+        "ms": {
+          "version": "2.0.0",
+          "bundled": true,
+          "optional": true
+        },
+        "needle": {
+          "version": "2.2.0",
+          "bundled": true,
+          "optional": true,
+          "requires": {
+            "debug": "2.6.9",
+            "iconv-lite": "0.4.21",
+            "sax": "1.2.4"
+          }
+        },
+        "node-pre-gyp": {
+          "version": "0.9.1",
+          "bundled": true,
+          "optional": true,
+          "requires": {
+            "detect-libc": "1.0.3",
+            "mkdirp": "0.5.1",
+            "needle": "2.2.0",
+            "nopt": "4.0.1",
+            "npm-packlist": "1.1.10",
+            "npmlog": "4.1.2",
+            "rc": "1.2.6",
+            "rimraf": "2.6.2",
+            "semver": "5.5.0",
+            "tar": "4.4.1"
+          }
+        },
+        "nopt": {
+          "version": "4.0.1",
+          "bundled": true,
+          "optional": true,
+          "requires": {
+            "abbrev": "1.1.1",
+            "osenv": "0.1.5"
+          }
+        },
+        "npm-bundled": {
+          "version": "1.0.3",
+          "bundled": true,
+          "optional": true
+        },
+        "npm-packlist": {
+          "version": "1.1.10",
+          "bundled": true,
+          "optional": true,
+          "requires": {
+            "ignore-walk": "3.0.1",
+            "npm-bundled": "1.0.3"
+          }
+        },
+        "npmlog": {
+          "version": "4.1.2",
+          "bundled": true,
+          "optional": true,
+          "requires": {
+            "are-we-there-yet": "1.1.4",
+            "console-control-strings": "1.1.0",
+            "gauge": "2.7.4",
+            "set-blocking": "2.0.0"
+          }
+        },
+        "number-is-nan": {
+          "version": "1.0.1",
+          "bundled": true
+        },
+        "object-assign": {
+          "version": "4.1.1",
+          "bundled": true,
+          "optional": true
+        },
+        "once": {
+          "version": "1.4.0",
+          "bundled": true,
+          "requires": {
+            "wrappy": "1.0.2"
+          }
+        },
+        "os-homedir": {
+          "version": "1.0.2",
+          "bundled": true,
+          "optional": true
+        },
+        "os-tmpdir": {
+          "version": "1.0.2",
+          "bundled": true,
+          "optional": true
+        },
+        "osenv": {
+          "version": "0.1.5",
+          "bundled": true,
+          "optional": true,
+          "requires": {
+            "os-homedir": "1.0.2",
+            "os-tmpdir": "1.0.2"
+          }
+        },
+        "path-is-absolute": {
+          "version": "1.0.1",
+          "bundled": true,
+          "optional": true
+        },
+        "process-nextick-args": {
+          "version": "2.0.0",
+          "bundled": true,
+          "optional": true
+        },
+        "rc": {
+          "version": "1.2.6",
+          "bundled": true,
+          "optional": true,
+          "requires": {
+            "deep-extend": "0.4.2",
+            "ini": "1.3.5",
+            "minimist": "1.2.0",
+            "strip-json-comments": "2.0.1"
+          },
+          "dependencies": {
+            "minimist": {
+              "version": "1.2.0",
+              "bundled": true,
+              "optional": true
+            }
+          }
+        },
+        "readable-stream": {
+          "version": "2.3.6",
+          "bundled": true,
+          "optional": true,
+          "requires": {
+            "core-util-is": "1.0.2",
+            "inherits": "2.0.3",
+            "isarray": "1.0.0",
+            "process-nextick-args": "2.0.0",
+            "safe-buffer": "5.1.1",
+            "string_decoder": "1.1.1",
+            "util-deprecate": "1.0.2"
+          }
+        },
+        "rimraf": {
+          "version": "2.6.2",
+          "bundled": true,
+          "optional": true,
+          "requires": {
+            "glob": "7.1.2"
+          }
+        },
+        "safe-buffer": {
+          "version": "5.1.1",
+          "bundled": true
+        },
+        "safer-buffer": {
+          "version": "2.1.2",
+          "bundled": true,
+          "optional": true
+        },
+        "sax": {
+          "version": "1.2.4",
+          "bundled": true,
+          "optional": true
+        },
+        "semver": {
+          "version": "5.5.0",
+          "bundled": true,
+          "optional": true
+        },
+        "set-blocking": {
+          "version": "2.0.0",
+          "bundled": true,
+          "optional": true
+        },
+        "signal-exit": {
+          "version": "3.0.2",
+          "bundled": true,
+          "optional": true
+        },
+        "string-width": {
+          "version": "1.0.2",
+          "bundled": true,
+          "requires": {
+            "code-point-at": "1.1.0",
+            "is-fullwidth-code-point": "1.0.0",
+            "strip-ansi": "3.0.1"
+          }
+        },
+        "string_decoder": {
+          "version": "1.1.1",
+          "bundled": true,
+          "optional": true,
+          "requires": {
+            "safe-buffer": "5.1.1"
+          }
+        },
+        "strip-ansi": {
+          "version": "3.0.1",
+          "bundled": true,
+          "requires": {
+            "ansi-regex": "2.1.1"
+          }
+        },
+        "strip-json-comments": {
+          "version": "2.0.1",
+          "bundled": true,
+          "optional": true
+        },
+        "tar": {
+          "version": "4.4.1",
+          "bundled": true,
+          "optional": true,
+          "requires": {
+            "chownr": "1.0.1",
+            "fs-minipass": "1.2.5",
+            "minipass": "2.2.4",
+            "minizlib": "1.1.0",
+            "mkdirp": "0.5.1",
+            "safe-buffer": "5.1.1",
+            "yallist": "3.0.2"
+          }
+        },
+        "util-deprecate": {
+          "version": "1.0.2",
+          "bundled": true,
+          "optional": true
+        },
+        "wide-align": {
+          "version": "1.1.2",
+          "bundled": true,
+          "optional": true,
+          "requires": {
+            "string-width": "1.0.2"
+          }
+        },
+        "wrappy": {
+          "version": "1.0.2",
+          "bundled": true
+        },
+        "yallist": {
+          "version": "3.0.2",
+          "bundled": true
+        }
+      }
+    },
+    "function-bind": {
+      "version": "1.1.1",
+      "resolved": "http://registry.npm.taobao.org/function-bind/download/function-bind-1.1.1.tgz",
+      "integrity": "sha1-pWiZ0+o8m6uHS7l3O3xe3pL0iV0=",
+      "dev": true
+    },
+    "gauge": {
+      "version": "1.2.7",
+      "resolved": "http://registry.npm.taobao.org/gauge/download/gauge-1.2.7.tgz",
+      "integrity": "sha1-6c7FSD09TuDvRLYKfZnkk14TbZM=",
+      "requires": {
+        "ansi": "0.3.1",
+        "has-unicode": "2.0.1",
+        "lodash.pad": "4.5.1",
+        "lodash.padend": "4.6.1",
+        "lodash.padstart": "4.6.1"
+      }
+    },
+    "get-caller-file": {
+      "version": "1.0.2",
+      "resolved": "http://registry.npm.taobao.org/get-caller-file/download/get-caller-file-1.0.2.tgz",
+      "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U="
+    },
+    "get-stream": {
+      "version": "3.0.0",
+      "resolved": "http://registry.npm.taobao.org/get-stream/download/get-stream-3.0.0.tgz",
+      "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ="
+    },
+    "get-value": {
+      "version": "2.0.6",
+      "resolved": "http://registry.npm.taobao.org/get-value/download/get-value-2.0.6.tgz",
+      "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg="
+    },
+    "getpass": {
+      "version": "0.1.7",
+      "resolved": "http://registry.npm.taobao.org/getpass/download/getpass-0.1.7.tgz",
+      "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
+      "requires": {
+        "assert-plus": "1.0.0"
+      }
+    },
+    "glob": {
+      "version": "7.1.2",
+      "resolved": "http://registry.npm.taobao.org/glob/download/glob-7.1.2.tgz",
+      "integrity": "sha1-wZyd+aAocC1nhhI4SmVSQExjbRU=",
+      "requires": {
+        "fs.realpath": "1.0.0",
+        "inflight": "1.0.6",
+        "inherits": "2.0.3",
+        "minimatch": "3.0.4",
+        "once": "1.4.0",
+        "path-is-absolute": "1.0.1"
+      }
+    },
+    "glob-base": {
+      "version": "0.3.0",
+      "resolved": "http://registry.npm.taobao.org/glob-base/download/glob-base-0.3.0.tgz",
+      "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=",
+      "requires": {
+        "glob-parent": "2.0.0",
+        "is-glob": "2.0.1"
+      }
+    },
+    "glob-parent": {
+      "version": "2.0.0",
+      "resolved": "http://registry.npm.taobao.org/glob-parent/download/glob-parent-2.0.0.tgz",
+      "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=",
+      "requires": {
+        "is-glob": "2.0.1"
+      }
+    },
+    "global": {
+      "version": "4.3.2",
+      "resolved": "http://registry.npm.taobao.org/global/download/global-4.3.2.tgz",
+      "integrity": "sha1-52mJJopsdMOJCLEwWxD8DjlOnQ8=",
+      "requires": {
+        "min-document": "2.19.0",
+        "process": "0.5.2"
+      }
+    },
+    "globals": {
+      "version": "9.18.0",
+      "resolved": "http://registry.npm.taobao.org/globals/download/globals-9.18.0.tgz",
+      "integrity": "sha1-qjiWs+abSH8X4x7SFD1pqOMMLYo="
+    },
+    "graceful-fs": {
+      "version": "4.1.11",
+      "resolved": "http://registry.npm.taobao.org/graceful-fs/download/graceful-fs-4.1.11.tgz",
+      "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg="
+    },
+    "growly": {
+      "version": "1.3.0",
+      "resolved": "http://registry.npm.taobao.org/growly/download/growly-1.3.0.tgz",
+      "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE="
+    },
+    "handlebars": {
+      "version": "4.0.11",
+      "resolved": "http://registry.npm.taobao.org/handlebars/download/handlebars-4.0.11.tgz",
+      "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=",
+      "dev": true,
+      "requires": {
+        "async": "1.5.2",
+        "optimist": "0.6.1",
+        "source-map": "0.4.4",
+        "uglify-js": "2.8.29"
+      },
+      "dependencies": {
+        "async": {
+          "version": "1.5.2",
+          "resolved": "http://registry.npm.taobao.org/async/download/async-1.5.2.tgz",
+          "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=",
+          "dev": true
+        },
+        "camelcase": {
+          "version": "1.2.1",
+          "resolved": "http://registry.npm.taobao.org/camelcase/download/camelcase-1.2.1.tgz",
+          "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=",
+          "dev": true,
+          "optional": true
+        },
+        "cliui": {
+          "version": "2.1.0",
+          "resolved": "http://registry.npm.taobao.org/cliui/download/cliui-2.1.0.tgz",
+          "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "center-align": "0.1.3",
+            "right-align": "0.1.3",
+            "wordwrap": "0.0.2"
+          }
+        },
+        "source-map": {
+          "version": "0.4.4",
+          "resolved": "http://registry.npm.taobao.org/source-map/download/source-map-0.4.4.tgz",
+          "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=",
+          "dev": true,
+          "requires": {
+            "amdefine": "1.0.1"
+          }
+        },
+        "uglify-js": {
+          "version": "2.8.29",
+          "resolved": "http://registry.npm.taobao.org/uglify-js/download/uglify-js-2.8.29.tgz",
+          "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "source-map": "0.5.7",
+            "uglify-to-browserify": "1.0.2",
+            "yargs": "3.10.0"
+          },
+          "dependencies": {
+            "source-map": {
+              "version": "0.5.7",
+              "resolved": "http://registry.npm.taobao.org/source-map/download/source-map-0.5.7.tgz",
+              "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+              "dev": true,
+              "optional": true
+            }
+          }
+        },
+        "wordwrap": {
+          "version": "0.0.2",
+          "resolved": "http://registry.npm.taobao.org/wordwrap/download/wordwrap-0.0.2.tgz",
+          "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=",
+          "dev": true,
+          "optional": true
+        },
+        "yargs": {
+          "version": "3.10.0",
+          "resolved": "http://registry.npm.taobao.org/yargs/download/yargs-3.10.0.tgz",
+          "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "camelcase": "1.2.1",
+            "cliui": "2.1.0",
+            "decamelize": "1.2.0",
+            "window-size": "0.1.0"
+          }
+        }
+      }
+    },
+    "har-schema": {
+      "version": "2.0.0",
+      "resolved": "http://registry.npm.taobao.org/har-schema/download/har-schema-2.0.0.tgz",
+      "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI="
+    },
+    "har-validator": {
+      "version": "5.0.3",
+      "resolved": "http://registry.npm.taobao.org/har-validator/download/har-validator-5.0.3.tgz",
+      "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=",
+      "requires": {
+        "ajv": "5.5.2",
+        "har-schema": "2.0.0"
+      }
+    },
+    "has": {
+      "version": "1.0.1",
+      "resolved": "http://registry.npm.taobao.org/has/download/has-1.0.1.tgz",
+      "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=",
+      "dev": true,
+      "requires": {
+        "function-bind": "1.1.1"
+      }
+    },
+    "has-ansi": {
+      "version": "2.0.0",
+      "resolved": "http://registry.npm.taobao.org/has-ansi/download/has-ansi-2.0.0.tgz",
+      "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
+      "requires": {
+        "ansi-regex": "2.1.1"
+      }
+    },
+    "has-flag": {
+      "version": "3.0.0",
+      "resolved": "http://registry.npm.taobao.org/has-flag/download/has-flag-3.0.0.tgz",
+      "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0="
+    },
+    "has-unicode": {
+      "version": "2.0.1",
+      "resolved": "http://registry.npm.taobao.org/has-unicode/download/has-unicode-2.0.1.tgz",
+      "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk="
+    },
+    "has-value": {
+      "version": "1.0.0",
+      "resolved": "http://registry.npm.taobao.org/has-value/download/has-value-1.0.0.tgz",
+      "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=",
+      "requires": {
+        "get-value": "2.0.6",
+        "has-values": "1.0.0",
+        "isobject": "3.0.1"
+      },
+      "dependencies": {
+        "isobject": {
+          "version": "3.0.1",
+          "resolved": "http://registry.npm.taobao.org/isobject/download/isobject-3.0.1.tgz",
+          "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8="
+        }
+      }
+    },
+    "has-values": {
+      "version": "1.0.0",
+      "resolved": "http://registry.npm.taobao.org/has-values/download/has-values-1.0.0.tgz",
+      "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=",
+      "requires": {
+        "is-number": "3.0.0",
+        "kind-of": "4.0.0"
+      },
+      "dependencies": {
+        "is-number": {
+          "version": "3.0.0",
+          "resolved": "http://registry.npm.taobao.org/is-number/download/is-number-3.0.0.tgz",
+          "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+          "requires": {
+            "kind-of": "3.2.2"
+          },
+          "dependencies": {
+            "kind-of": {
+              "version": "3.2.2",
+              "resolved": "http://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz",
+              "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+              "requires": {
+                "is-buffer": "1.1.6"
+              }
+            }
+          }
+        },
+        "kind-of": {
+          "version": "4.0.0",
+          "resolved": "http://registry.npm.taobao.org/kind-of/download/kind-of-4.0.0.tgz",
+          "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
+          "requires": {
+            "is-buffer": "1.1.6"
+          }
+        }
+      }
+    },
+    "hawk": {
+      "version": "6.0.2",
+      "resolved": "http://registry.npm.taobao.org/hawk/download/hawk-6.0.2.tgz",
+      "integrity": "sha1-r02RTrBl+bXOTZ0RwcshJu7MMDg=",
+      "requires": {
+        "boom": "4.3.1",
+        "cryptiles": "3.1.2",
+        "hoek": "4.2.1",
+        "sntp": "2.1.0"
+      }
+    },
+    "hoek": {
+      "version": "4.2.1",
+      "resolved": "http://registry.npm.taobao.org/hoek/download/hoek-4.2.1.tgz",
+      "integrity": "sha1-ljRQKqEsRF3Vp8VzS1cruHOKrLs="
+    },
+    "hoist-non-react-statics": {
+      "version": "2.5.0",
+      "resolved": "http://registry.npm.taobao.org/hoist-non-react-statics/download/hoist-non-react-statics-2.5.0.tgz",
+      "integrity": "sha1-0sot/BnFqRxaZhXOjlZO8DR+KkA="
+    },
+    "home-or-tmp": {
+      "version": "2.0.0",
+      "resolved": "http://registry.npm.taobao.org/home-or-tmp/download/home-or-tmp-2.0.0.tgz",
+      "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=",
+      "requires": {
+        "os-homedir": "1.0.2",
+        "os-tmpdir": "1.0.2"
+      }
+    },
+    "hosted-git-info": {
+      "version": "2.6.0",
+      "resolved": "http://registry.npm.taobao.org/hosted-git-info/download/hosted-git-info-2.6.0.tgz",
+      "integrity": "sha1-IyNbKasjDFdqqw1PE/wEawsDgiI="
+    },
+    "html-encoding-sniffer": {
+      "version": "1.0.2",
+      "resolved": "http://registry.npm.taobao.org/html-encoding-sniffer/download/html-encoding-sniffer-1.0.2.tgz",
+      "integrity": "sha1-5w2EuU2lOqN14R/jo1G+ZkLKRvg=",
+      "dev": true,
+      "requires": {
+        "whatwg-encoding": "1.0.3"
+      }
+    },
+    "http-errors": {
+      "version": "1.6.3",
+      "resolved": "http://registry.npm.taobao.org/http-errors/download/http-errors-1.6.3.tgz",
+      "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=",
+      "requires": {
+        "depd": "1.1.2",
+        "inherits": "2.0.3",
+        "setprototypeof": "1.1.0",
+        "statuses": "1.5.0"
+      },
+      "dependencies": {
+        "statuses": {
+          "version": "1.5.0",
+          "resolved": "http://registry.npm.taobao.org/statuses/download/statuses-1.5.0.tgz",
+          "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow="
+        }
+      }
+    },
+    "http-signature": {
+      "version": "1.2.0",
+      "resolved": "http://registry.npm.taobao.org/http-signature/download/http-signature-1.2.0.tgz",
+      "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
+      "requires": {
+        "assert-plus": "1.0.0",
+        "jsprim": "1.4.1",
+        "sshpk": "1.14.1"
+      }
+    },
+    "iconv-lite": {
+      "version": "0.4.23",
+      "resolved": "http://registry.npm.taobao.org/iconv-lite/download/iconv-lite-0.4.23.tgz",
+      "integrity": "sha1-KXhx9jvlB63Pv8pxXQzQ7thOmmM=",
+      "requires": {
+        "safer-buffer": "2.1.2"
+      }
+    },
+    "image-size": {
+      "version": "0.6.2",
+      "resolved": "http://registry.npm.taobao.org/image-size/download/image-size-0.6.2.tgz",
+      "integrity": "sha1-juMW1CmLAouWUJG2c9XxU3re5bQ="
+    },
+    "immutable": {
+      "version": "3.8.2",
+      "resolved": "http://registry.npm.taobao.org/immutable/download/immutable-3.8.2.tgz",
+      "integrity": "sha1-wkOZUUVbs5kT2vKBN28VMOEErfM="
+    },
+    "import-local": {
+      "version": "1.0.0",
+      "resolved": "http://registry.npm.taobao.org/import-local/download/import-local-1.0.0.tgz",
+      "integrity": "sha1-Xk/9wD9P5sAJxnKb6yljHC+CJ7w=",
+      "dev": true,
+      "requires": {
+        "pkg-dir": "2.0.0",
+        "resolve-cwd": "2.0.0"
+      }
+    },
+    "imurmurhash": {
+      "version": "0.1.4",
+      "resolved": "http://registry.npm.taobao.org/imurmurhash/download/imurmurhash-0.1.4.tgz",
+      "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o="
+    },
+    "inflight": {
+      "version": "1.0.6",
+      "resolved": "http://registry.npm.taobao.org/inflight/download/inflight-1.0.6.tgz",
+      "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
+      "requires": {
+        "once": "1.4.0",
+        "wrappy": "1.0.2"
+      }
+    },
+    "inherits": {
+      "version": "2.0.3",
+      "resolved": "http://registry.npm.taobao.org/inherits/download/inherits-2.0.3.tgz",
+      "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
+    },
+    "inquirer": {
+      "version": "3.3.0",
+      "resolved": "http://registry.npm.taobao.org/inquirer/download/inquirer-3.3.0.tgz",
+      "integrity": "sha1-ndLyrXZdyrH/BEO0kUQqILoifck=",
+      "requires": {
+        "ansi-escapes": "3.1.0",
+        "chalk": "2.4.1",
+        "cli-cursor": "2.1.0",
+        "cli-width": "2.2.0",
+        "external-editor": "2.2.0",
+        "figures": "2.0.0",
+        "lodash": "4.17.10",
+        "mute-stream": "0.0.7",
+        "run-async": "2.3.0",
+        "rx-lite": "4.0.8",
+        "rx-lite-aggregates": "4.0.8",
+        "string-width": "2.1.1",
+        "strip-ansi": "4.0.0",
+        "through": "2.3.8"
+      },
+      "dependencies": {
+        "ansi-regex": {
+          "version": "3.0.0",
+          "resolved": "http://registry.npm.taobao.org/ansi-regex/download/ansi-regex-3.0.0.tgz",
+          "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg="
+        },
+        "ansi-styles": {
+          "version": "3.2.1",
+          "resolved": "http://registry.npm.taobao.org/ansi-styles/download/ansi-styles-3.2.1.tgz",
+          "integrity": "sha1-QfuyAkPlCxK+DwS43tvwdSDOhB0=",
+          "requires": {
+            "color-convert": "1.9.1"
+          }
+        },
+        "chalk": {
+          "version": "2.4.1",
+          "resolved": "http://registry.npm.taobao.org/chalk/download/chalk-2.4.1.tgz",
+          "integrity": "sha1-GMSasWoDe26wFSzIPjRxM4IVtm4=",
+          "requires": {
+            "ansi-styles": "3.2.1",
+            "escape-string-regexp": "1.0.5",
+            "supports-color": "5.4.0"
+          }
+        },
+        "strip-ansi": {
+          "version": "4.0.0",
+          "resolved": "http://registry.npm.taobao.org/strip-ansi/download/strip-ansi-4.0.0.tgz",
+          "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+          "requires": {
+            "ansi-regex": "3.0.0"
+          }
+        },
+        "supports-color": {
+          "version": "5.4.0",
+          "resolved": "http://registry.npm.taobao.org/supports-color/download/supports-color-5.4.0.tgz",
+          "integrity": "sha1-HGszdALCE3YF7+GfEP7DkPb6q1Q=",
+          "requires": {
+            "has-flag": "3.0.0"
+          }
+        }
+      }
+    },
+    "invariant": {
+      "version": "2.2.4",
+      "resolved": "http://registry.npm.taobao.org/invariant/download/invariant-2.2.4.tgz",
+      "integrity": "sha1-YQ88ksk1nOHbYW5TgAjSP/NRWOY=",
+      "requires": {
+        "loose-envify": "1.3.1"
+      }
+    },
+    "invert-kv": {
+      "version": "1.0.0",
+      "resolved": "http://registry.npm.taobao.org/invert-kv/download/invert-kv-1.0.0.tgz",
+      "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY="
+    },
+    "is-accessor-descriptor": {
+      "version": "0.1.6",
+      "resolved": "http://registry.npm.taobao.org/is-accessor-descriptor/download/is-accessor-descriptor-0.1.6.tgz",
+      "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
+      "requires": {
+        "kind-of": "3.2.2"
+      },
+      "dependencies": {
+        "kind-of": {
+          "version": "3.2.2",
+          "resolved": "http://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz",
+          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+          "requires": {
+            "is-buffer": "1.1.6"
+          }
+        }
+      }
+    },
+    "is-arrayish": {
+      "version": "0.2.1",
+      "resolved": "http://registry.npm.taobao.org/is-arrayish/download/is-arrayish-0.2.1.tgz",
+      "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0="
+    },
+    "is-buffer": {
+      "version": "1.1.6",
+      "resolved": "http://registry.npm.taobao.org/is-buffer/download/is-buffer-1.1.6.tgz",
+      "integrity": "sha1-76ouqdqg16suoTqXsritUf776L4="
+    },
+    "is-builtin-module": {
+      "version": "1.0.0",
+      "resolved": "http://registry.npm.taobao.org/is-builtin-module/download/is-builtin-module-1.0.0.tgz",
+      "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=",
+      "requires": {
+        "builtin-modules": "1.1.1"
+      }
+    },
+    "is-callable": {
+      "version": "1.1.3",
+      "resolved": "http://registry.npm.taobao.org/is-callable/download/is-callable-1.1.3.tgz",
+      "integrity": "sha1-hut1OSgF3cM69xySoO7fdO52BLI=",
+      "dev": true
+    },
+    "is-ci": {
+      "version": "1.1.0",
+      "resolved": "http://registry.npm.taobao.org/is-ci/download/is-ci-1.1.0.tgz",
+      "integrity": "sha1-JH5BYueGDOu9rzC3dNawrH3P56U=",
+      "dev": true,
+      "requires": {
+        "ci-info": "1.1.3"
+      }
+    },
+    "is-data-descriptor": {
+      "version": "0.1.4",
+      "resolved": "http://registry.npm.taobao.org/is-data-descriptor/download/is-data-descriptor-0.1.4.tgz",
+      "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
+      "requires": {
+        "kind-of": "3.2.2"
+      },
+      "dependencies": {
+        "kind-of": {
+          "version": "3.2.2",
+          "resolved": "http://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz",
+          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+          "requires": {
+            "is-buffer": "1.1.6"
+          }
+        }
+      }
+    },
+    "is-date-object": {
+      "version": "1.0.1",
+      "resolved": "http://registry.npm.taobao.org/is-date-object/download/is-date-object-1.0.1.tgz",
+      "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=",
+      "dev": true
+    },
+    "is-descriptor": {
+      "version": "0.1.6",
+      "resolved": "http://registry.npm.taobao.org/is-descriptor/download/is-descriptor-0.1.6.tgz",
+      "integrity": "sha1-Nm2CQN3kh8pRgjsaufB6EKeCUco=",
+      "requires": {
+        "is-accessor-descriptor": "0.1.6",
+        "is-data-descriptor": "0.1.4",
+        "kind-of": "5.1.0"
+      },
+      "dependencies": {
+        "kind-of": {
+          "version": "5.1.0",
+          "resolved": "http://registry.npm.taobao.org/kind-of/download/kind-of-5.1.0.tgz",
+          "integrity": "sha1-cpyR4thXt6QZofmqZWhcTDP1hF0="
+        }
+      }
+    },
+    "is-dotfile": {
+      "version": "1.0.3",
+      "resolved": "http://registry.npm.taobao.org/is-dotfile/download/is-dotfile-1.0.3.tgz",
+      "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE="
+    },
+    "is-equal-shallow": {
+      "version": "0.1.3",
+      "resolved": "http://registry.npm.taobao.org/is-equal-shallow/download/is-equal-shallow-0.1.3.tgz",
+      "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=",
+      "requires": {
+        "is-primitive": "2.0.0"
+      }
+    },
+    "is-extendable": {
+      "version": "0.1.1",
+      "resolved": "http://registry.npm.taobao.org/is-extendable/download/is-extendable-0.1.1.tgz",
+      "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik="
+    },
+    "is-extglob": {
+      "version": "1.0.0",
+      "resolved": "http://registry.npm.taobao.org/is-extglob/download/is-extglob-1.0.0.tgz",
+      "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA="
+    },
+    "is-finite": {
+      "version": "1.0.2",
+      "resolved": "http://registry.npm.taobao.org/is-finite/download/is-finite-1.0.2.tgz",
+      "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=",
+      "requires": {
+        "number-is-nan": "1.0.1"
+      }
+    },
+    "is-fullwidth-code-point": {
+      "version": "2.0.0",
+      "resolved": "http://registry.npm.taobao.org/is-fullwidth-code-point/download/is-fullwidth-code-point-2.0.0.tgz",
+      "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8="
+    },
+    "is-generator-fn": {
+      "version": "1.0.0",
+      "resolved": "http://registry.npm.taobao.org/is-generator-fn/download/is-generator-fn-1.0.0.tgz",
+      "integrity": "sha1-lp1J4bszKfa7fwkIm+JleLLd1Go=",
+      "dev": true
+    },
+    "is-glob": {
+      "version": "2.0.1",
+      "resolved": "http://registry.npm.taobao.org/is-glob/download/is-glob-2.0.1.tgz",
+      "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
+      "requires": {
+        "is-extglob": "1.0.0"
+      }
+    },
+    "is-number": {
+      "version": "2.1.0",
+      "resolved": "http://registry.npm.taobao.org/is-number/download/is-number-2.1.0.tgz",
+      "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=",
+      "requires": {
+        "kind-of": "3.2.2"
+      },
+      "dependencies": {
+        "kind-of": {
+          "version": "3.2.2",
+          "resolved": "http://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz",
+          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+          "requires": {
+            "is-buffer": "1.1.6"
+          }
+        }
+      }
+    },
+    "is-odd": {
+      "version": "2.0.0",
+      "resolved": "http://registry.npm.taobao.org/is-odd/download/is-odd-2.0.0.tgz",
+      "integrity": "sha1-dkZiRnH9fqVYzNmieVGC8pWPGyQ=",
+      "requires": {
+        "is-number": "4.0.0"
+      },
+      "dependencies": {
+        "is-number": {
+          "version": "4.0.0",
+          "resolved": "http://registry.npm.taobao.org/is-number/download/is-number-4.0.0.tgz",
+          "integrity": "sha1-ACbjf1RU1z41bf5lZGmYZ8an8P8="
+        }
+      }
+    },
+    "is-plain-object": {
+      "version": "2.0.4",
+      "resolved": "http://registry.npm.taobao.org/is-plain-object/download/is-plain-object-2.0.4.tgz",
+      "integrity": "sha1-LBY7P6+xtgbZ0Xko8FwqHDjgdnc=",
+      "requires": {
+        "isobject": "3.0.1"
+      },
+      "dependencies": {
+        "isobject": {
+          "version": "3.0.1",
+          "resolved": "http://registry.npm.taobao.org/isobject/download/isobject-3.0.1.tgz",
+          "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8="
+        }
+      }
+    },
+    "is-posix-bracket": {
+      "version": "0.1.1",
+      "resolved": "http://registry.npm.taobao.org/is-posix-bracket/download/is-posix-bracket-0.1.1.tgz",
+      "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q="
+    },
+    "is-primitive": {
+      "version": "2.0.0",
+      "resolved": "http://registry.npm.taobao.org/is-primitive/download/is-primitive-2.0.0.tgz",
+      "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU="
+    },
+    "is-promise": {
+      "version": "2.1.0",
+      "resolved": "http://registry.npm.taobao.org/is-promise/download/is-promise-2.1.0.tgz",
+      "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o="
+    },
+    "is-regex": {
+      "version": "1.0.4",
+      "resolved": "http://registry.npm.taobao.org/is-regex/download/is-regex-1.0.4.tgz",
+      "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=",
+      "dev": true,
+      "requires": {
+        "has": "1.0.1"
+      }
+    },
+    "is-stream": {
+      "version": "1.1.0",
+      "resolved": "http://registry.npm.taobao.org/is-stream/download/is-stream-1.1.0.tgz",
+      "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ="
+    },
+    "is-symbol": {
+      "version": "1.0.1",
+      "resolved": "http://registry.npm.taobao.org/is-symbol/download/is-symbol-1.0.1.tgz",
+      "integrity": "sha1-PMWfAAJRlLarLjjbrmaJJWtmBXI=",
+      "dev": true
+    },
+    "is-typedarray": {
+      "version": "1.0.0",
+      "resolved": "http://registry.npm.taobao.org/is-typedarray/download/is-typedarray-1.0.0.tgz",
+      "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo="
+    },
+    "is-utf8": {
+      "version": "0.2.1",
+      "resolved": "http://registry.npm.taobao.org/is-utf8/download/is-utf8-0.2.1.tgz",
+      "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=",
+      "dev": true
+    },
+    "is-windows": {
+      "version": "1.0.2",
+      "resolved": "http://registry.npm.taobao.org/is-windows/download/is-windows-1.0.2.tgz",
+      "integrity": "sha1-0YUOuXkezRjmGCzhKjDzlmNLsZ0="
+    },
+    "isarray": {
+      "version": "1.0.0",
+      "resolved": "http://registry.npm.taobao.org/isarray/download/isarray-1.0.0.tgz",
+      "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
+    },
+    "isexe": {
+      "version": "2.0.0",
+      "resolved": "http://registry.npm.taobao.org/isexe/download/isexe-2.0.0.tgz",
+      "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA="
+    },
+    "isobject": {
+      "version": "2.1.0",
+      "resolved": "http://registry.npm.taobao.org/isobject/download/isobject-2.1.0.tgz",
+      "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
+      "requires": {
+        "isarray": "1.0.0"
+      }
+    },
+    "isomorphic-fetch": {
+      "version": "2.2.1",
+      "resolved": "http://registry.npm.taobao.org/isomorphic-fetch/download/isomorphic-fetch-2.2.1.tgz",
+      "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=",
+      "requires": {
+        "node-fetch": "1.7.3",
+        "whatwg-fetch": "2.0.4"
+      }
+    },
+    "isstream": {
+      "version": "0.1.2",
+      "resolved": "http://registry.npm.taobao.org/isstream/download/isstream-0.1.2.tgz",
+      "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo="
+    },
+    "istanbul-api": {
+      "version": "1.3.1",
+      "resolved": "http://registry.npm.taobao.org/istanbul-api/download/istanbul-api-1.3.1.tgz",
+      "integrity": "sha1-TDsF0YwAFtECLgebmNyCxA9IiVQ=",
+      "dev": true,
+      "requires": {
+        "async": "2.6.0",
+        "compare-versions": "3.1.0",
+        "fileset": "2.0.3",
+        "istanbul-lib-coverage": "1.2.0",
+        "istanbul-lib-hook": "1.2.0",
+        "istanbul-lib-instrument": "1.10.1",
+        "istanbul-lib-report": "1.1.4",
+        "istanbul-lib-source-maps": "1.2.4",
+        "istanbul-reports": "1.3.0",
+        "js-yaml": "3.11.0",
+        "mkdirp": "0.5.1",
+        "once": "1.4.0"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "3.1.0",
+          "resolved": "http://registry.npm.taobao.org/debug/download/debug-3.1.0.tgz",
+          "integrity": "sha1-W7WgZyYotkFJVmuhaBnmFRjGcmE=",
+          "dev": true,
+          "requires": {
+            "ms": "2.0.0"
+          }
+        },
+        "istanbul-lib-source-maps": {
+          "version": "1.2.4",
+          "resolved": "http://registry.npm.taobao.org/istanbul-lib-source-maps/download/istanbul-lib-source-maps-1.2.4.tgz",
+          "integrity": "sha1-zHzK1hYp9O//ji94rbjFIsmXbsc=",
+          "dev": true,
+          "requires": {
+            "debug": "3.1.0",
+            "istanbul-lib-coverage": "1.2.0",
+            "mkdirp": "0.5.1",
+            "rimraf": "2.6.2",
+            "source-map": "0.5.7"
+          }
+        }
+      }
+    },
+    "istanbul-lib-coverage": {
+      "version": "1.2.0",
+      "resolved": "http://registry.npm.taobao.org/istanbul-lib-coverage/download/istanbul-lib-coverage-1.2.0.tgz",
+      "integrity": "sha1-99jy5CuX43/nlhFMsPnWi146Q0E=",
+      "dev": true
+    },
+    "istanbul-lib-hook": {
+      "version": "1.2.0",
+      "resolved": "http://registry.npm.taobao.org/istanbul-lib-hook/download/istanbul-lib-hook-1.2.0.tgz",
+      "integrity": "sha1-rlVv1aQabo76CxACseQW3+r5gWw=",
+      "dev": true,
+      "requires": {
+        "append-transform": "0.4.0"
+      }
+    },
+    "istanbul-lib-instrument": {
+      "version": "1.10.1",
+      "resolved": "http://registry.npm.taobao.org/istanbul-lib-instrument/download/istanbul-lib-instrument-1.10.1.tgz",
+      "integrity": "sha1-cktLbKzrqGktPx+dByfiecQBr3s=",
+      "dev": true,
+      "requires": {
+        "babel-generator": "6.26.1",
+        "babel-template": "6.26.0",
+        "babel-traverse": "6.26.0",
+        "babel-types": "6.26.0",
+        "babylon": "6.18.0",
+        "istanbul-lib-coverage": "1.2.0",
+        "semver": "5.5.0"
+      }
+    },
+    "istanbul-lib-report": {
+      "version": "1.1.4",
+      "resolved": "http://registry.npm.taobao.org/istanbul-lib-report/download/istanbul-lib-report-1.1.4.tgz",
+      "integrity": "sha1-6IbN9QXE672OCZ5DlqkNCijirLU=",
+      "dev": true,
+      "requires": {
+        "istanbul-lib-coverage": "1.2.0",
+        "mkdirp": "0.5.1",
+        "path-parse": "1.0.5",
+        "supports-color": "3.2.3"
+      },
+      "dependencies": {
+        "has-flag": {
+          "version": "1.0.0",
+          "resolved": "http://registry.npm.taobao.org/has-flag/download/has-flag-1.0.0.tgz",
+          "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=",
+          "dev": true
+        },
+        "supports-color": {
+          "version": "3.2.3",
+          "resolved": "http://registry.npm.taobao.org/supports-color/download/supports-color-3.2.3.tgz",
+          "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=",
+          "dev": true,
+          "requires": {
+            "has-flag": "1.0.0"
+          }
+        }
+      }
+    },
+    "istanbul-lib-source-maps": {
+      "version": "1.2.3",
+      "resolved": "http://registry.npm.taobao.org/istanbul-lib-source-maps/download/istanbul-lib-source-maps-1.2.3.tgz",
+      "integrity": "sha1-IPtUsU4Us/tu22rKNXH9IUPbROY=",
+      "dev": true,
+      "requires": {
+        "debug": "3.1.0",
+        "istanbul-lib-coverage": "1.2.0",
+        "mkdirp": "0.5.1",
+        "rimraf": "2.6.2",
+        "source-map": "0.5.7"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "3.1.0",
+          "resolved": "http://registry.npm.taobao.org/debug/download/debug-3.1.0.tgz",
+          "integrity": "sha1-W7WgZyYotkFJVmuhaBnmFRjGcmE=",
+          "dev": true,
+          "requires": {
+            "ms": "2.0.0"
+          }
+        }
+      }
+    },
+    "istanbul-reports": {
+      "version": "1.3.0",
+      "resolved": "http://registry.npm.taobao.org/istanbul-reports/download/istanbul-reports-1.3.0.tgz",
+      "integrity": "sha1-LzIugeHZUgdnWX3KPCCgzOiaNVQ=",
+      "dev": true,
+      "requires": {
+        "handlebars": "4.0.11"
+      }
+    },
+    "jest": {
+      "version": "22.4.3",
+      "resolved": "http://registry.npm.taobao.org/jest/download/jest-22.4.3.tgz",
+      "integrity": "sha1-ImH0sRfcRtmkoaZz0hUJWN7pLxY=",
+      "dev": true,
+      "requires": {
+        "import-local": "1.0.0",
+        "jest-cli": "22.4.3"
+      },
+      "dependencies": {
+        "ansi-regex": {
+          "version": "3.0.0",
+          "resolved": "http://registry.npm.taobao.org/ansi-regex/download/ansi-regex-3.0.0.tgz",
+          "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+          "dev": true
+        },
+        "ansi-styles": {
+          "version": "3.2.1",
+          "resolved": "http://registry.npm.taobao.org/ansi-styles/download/ansi-styles-3.2.1.tgz",
+          "integrity": "sha1-QfuyAkPlCxK+DwS43tvwdSDOhB0=",
+          "dev": true,
+          "requires": {
+            "color-convert": "1.9.1"
+          }
+        },
+        "chalk": {
+          "version": "2.4.1",
+          "resolved": "http://registry.npm.taobao.org/chalk/download/chalk-2.4.1.tgz",
+          "integrity": "sha1-GMSasWoDe26wFSzIPjRxM4IVtm4=",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "3.2.1",
+            "escape-string-regexp": "1.0.5",
+            "supports-color": "5.4.0"
+          }
+        },
+        "cliui": {
+          "version": "4.1.0",
+          "resolved": "http://registry.npm.taobao.org/cliui/download/cliui-4.1.0.tgz",
+          "integrity": "sha1-NIQi2+gtgAswIu709qwQvy5NG0k=",
+          "dev": true,
+          "requires": {
+            "string-width": "2.1.1",
+            "strip-ansi": "4.0.0",
+            "wrap-ansi": "2.1.0"
+          }
+        },
+        "jest-cli": {
+          "version": "22.4.3",
+          "resolved": "http://registry.npm.taobao.org/jest-cli/download/jest-cli-22.4.3.tgz",
+          "integrity": "sha1-vxbEpft+3D+lubt4GeNBOeiKcsc=",
+          "dev": true,
+          "requires": {
+            "ansi-escapes": "3.1.0",
+            "chalk": "2.4.1",
+            "exit": "0.1.2",
+            "glob": "7.1.2",
+            "graceful-fs": "4.1.11",
+            "import-local": "1.0.0",
+            "is-ci": "1.1.0",
+            "istanbul-api": "1.3.1",
+            "istanbul-lib-coverage": "1.2.0",
+            "istanbul-lib-instrument": "1.10.1",
+            "istanbul-lib-source-maps": "1.2.3",
+            "jest-changed-files": "22.4.3",
+            "jest-config": "22.4.3",
+            "jest-environment-jsdom": "22.4.3",
+            "jest-get-type": "22.4.3",
+            "jest-haste-map": "22.4.3",
+            "jest-message-util": "22.4.3",
+            "jest-regex-util": "22.4.3",
+            "jest-resolve-dependencies": "22.4.3",
+            "jest-runner": "22.4.3",
+            "jest-runtime": "22.4.3",
+            "jest-snapshot": "22.4.3",
+            "jest-util": "22.4.3",
+            "jest-validate": "22.4.3",
+            "jest-worker": "22.4.3",
+            "micromatch": "2.3.11",
+            "node-notifier": "5.2.1",
+            "realpath-native": "1.0.0",
+            "rimraf": "2.6.2",
+            "slash": "1.0.0",
+            "string-length": "2.0.0",
+            "strip-ansi": "4.0.0",
+            "which": "1.3.0",
+            "yargs": "10.1.2"
+          }
+        },
+        "jest-docblock": {
+          "version": "22.4.3",
+          "resolved": "http://registry.npm.taobao.org/jest-docblock/download/jest-docblock-22.4.3.tgz",
+          "integrity": "sha1-UIhvEytCsoDJA8WSNzu26Tu2ixk=",
+          "dev": true,
+          "requires": {
+            "detect-newline": "2.1.0"
+          }
+        },
+        "jest-haste-map": {
+          "version": "22.4.3",
+          "resolved": "http://registry.npm.taobao.org/jest-haste-map/download/jest-haste-map-22.4.3.tgz",
+          "integrity": "sha1-JYQvoro1AgB2esJ/ZY1YudXC4gs=",
+          "dev": true,
+          "requires": {
+            "fb-watchman": "2.0.0",
+            "graceful-fs": "4.1.11",
+            "jest-docblock": "22.4.3",
+            "jest-serializer": "22.4.3",
+            "jest-worker": "22.4.3",
+            "micromatch": "2.3.11",
+            "sane": "2.5.2"
+          }
+        },
+        "jest-worker": {
+          "version": "22.4.3",
+          "resolved": "http://registry.npm.taobao.org/jest-worker/download/jest-worker-22.4.3.tgz",
+          "integrity": "sha1-XEIUF8uhwKv2S/Vr1ft5aNed1As=",
+          "dev": true,
+          "requires": {
+            "merge-stream": "1.0.1"
+          }
+        },
+        "strip-ansi": {
+          "version": "4.0.0",
+          "resolved": "http://registry.npm.taobao.org/strip-ansi/download/strip-ansi-4.0.0.tgz",
+          "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+          "dev": true,
+          "requires": {
+            "ansi-regex": "3.0.0"
+          }
+        },
+        "supports-color": {
+          "version": "5.4.0",
+          "resolved": "http://registry.npm.taobao.org/supports-color/download/supports-color-5.4.0.tgz",
+          "integrity": "sha1-HGszdALCE3YF7+GfEP7DkPb6q1Q=",
+          "dev": true,
+          "requires": {
+            "has-flag": "3.0.0"
+          }
+        },
+        "yargs": {
+          "version": "10.1.2",
+          "resolved": "http://registry.npm.taobao.org/yargs/download/yargs-10.1.2.tgz",
+          "integrity": "sha1-RU0HTCsWpRpD4vt4B+T53mnMtcU=",
+          "dev": true,
+          "requires": {
+            "cliui": "4.1.0",
+            "decamelize": "1.2.0",
+            "find-up": "2.1.0",
+            "get-caller-file": "1.0.2",
+            "os-locale": "2.1.0",
+            "require-directory": "2.1.1",
+            "require-main-filename": "1.0.1",
+            "set-blocking": "2.0.0",
+            "string-width": "2.1.1",
+            "which-module": "2.0.0",
+            "y18n": "3.2.1",
+            "yargs-parser": "8.1.0"
+          }
+        },
+        "yargs-parser": {
+          "version": "8.1.0",
+          "resolved": "http://registry.npm.taobao.org/yargs-parser/download/yargs-parser-8.1.0.tgz",
+          "integrity": "sha1-8TdqM7Ziml0GN4KUTacyYx6WaVA=",
+          "dev": true,
+          "requires": {
+            "camelcase": "4.1.0"
+          }
+        }
+      }
+    },
+    "jest-changed-files": {
+      "version": "22.4.3",
+      "resolved": "http://registry.npm.taobao.org/jest-changed-files/download/jest-changed-files-22.4.3.tgz",
+      "integrity": "sha1-iIIYHgIsOL1GouTRjUTRnZCpD7I=",
+      "dev": true,
+      "requires": {
+        "throat": "4.1.0"
+      }
+    },
+    "jest-config": {
+      "version": "22.4.3",
+      "resolved": "http://registry.npm.taobao.org/jest-config/download/jest-config-22.4.3.tgz",
+      "integrity": "sha1-Dp1X2yZ4OeoxMJEZtB3C+jG3ZAM=",
+      "dev": true,
+      "requires": {
+        "chalk": "2.4.1",
+        "glob": "7.1.2",
+        "jest-environment-jsdom": "22.4.3",
+        "jest-environment-node": "22.4.3",
+        "jest-get-type": "22.4.3",
+        "jest-jasmine2": "22.4.3",
+        "jest-regex-util": "22.4.3",
+        "jest-resolve": "22.4.3",
+        "jest-util": "22.4.3",
+        "jest-validate": "22.4.3",
+        "pretty-format": "22.4.3"
+      },
+      "dependencies": {
+        "ansi-regex": {
+          "version": "3.0.0",
+          "resolved": "http://registry.npm.taobao.org/ansi-regex/download/ansi-regex-3.0.0.tgz",
+          "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+          "dev": true
+        },
+        "ansi-styles": {
+          "version": "3.2.1",
+          "resolved": "http://registry.npm.taobao.org/ansi-styles/download/ansi-styles-3.2.1.tgz",
+          "integrity": "sha1-QfuyAkPlCxK+DwS43tvwdSDOhB0=",
+          "dev": true,
+          "requires": {
+            "color-convert": "1.9.1"
+          }
+        },
+        "chalk": {
+          "version": "2.4.1",
+          "resolved": "http://registry.npm.taobao.org/chalk/download/chalk-2.4.1.tgz",
+          "integrity": "sha1-GMSasWoDe26wFSzIPjRxM4IVtm4=",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "3.2.1",
+            "escape-string-regexp": "1.0.5",
+            "supports-color": "5.4.0"
+          }
+        },
+        "pretty-format": {
+          "version": "22.4.3",
+          "resolved": "http://registry.npm.taobao.org/pretty-format/download/pretty-format-22.4.3.tgz",
+          "integrity": "sha1-+HPXgIOanALpZkyKCC6e556qwW8=",
+          "dev": true,
+          "requires": {
+            "ansi-regex": "3.0.0",
+            "ansi-styles": "3.2.1"
+          }
+        },
+        "supports-color": {
+          "version": "5.4.0",
+          "resolved": "http://registry.npm.taobao.org/supports-color/download/supports-color-5.4.0.tgz",
+          "integrity": "sha1-HGszdALCE3YF7+GfEP7DkPb6q1Q=",
+          "dev": true,
+          "requires": {
+            "has-flag": "3.0.0"
+          }
+        }
+      }
+    },
+    "jest-diff": {
+      "version": "22.4.3",
+      "resolved": "http://registry.npm.taobao.org/jest-diff/download/jest-diff-22.4.3.tgz",
+      "integrity": "sha1-4YzD/v8K7vFZ0CMQ8mhtQGU3gDA=",
+      "dev": true,
+      "requires": {
+        "chalk": "2.4.1",
+        "diff": "3.5.0",
+        "jest-get-type": "22.4.3",
+        "pretty-format": "22.4.3"
+      },
+      "dependencies": {
+        "ansi-regex": {
+          "version": "3.0.0",
+          "resolved": "http://registry.npm.taobao.org/ansi-regex/download/ansi-regex-3.0.0.tgz",
+          "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+          "dev": true
+        },
+        "ansi-styles": {
+          "version": "3.2.1",
+          "resolved": "http://registry.npm.taobao.org/ansi-styles/download/ansi-styles-3.2.1.tgz",
+          "integrity": "sha1-QfuyAkPlCxK+DwS43tvwdSDOhB0=",
+          "dev": true,
+          "requires": {
+            "color-convert": "1.9.1"
+          }
+        },
+        "chalk": {
+          "version": "2.4.1",
+          "resolved": "http://registry.npm.taobao.org/chalk/download/chalk-2.4.1.tgz",
+          "integrity": "sha1-GMSasWoDe26wFSzIPjRxM4IVtm4=",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "3.2.1",
+            "escape-string-regexp": "1.0.5",
+            "supports-color": "5.4.0"
+          }
+        },
+        "pretty-format": {
+          "version": "22.4.3",
+          "resolved": "http://registry.npm.taobao.org/pretty-format/download/pretty-format-22.4.3.tgz",
+          "integrity": "sha1-+HPXgIOanALpZkyKCC6e556qwW8=",
+          "dev": true,
+          "requires": {
+            "ansi-regex": "3.0.0",
+            "ansi-styles": "3.2.1"
+          }
+        },
+        "supports-color": {
+          "version": "5.4.0",
+          "resolved": "http://registry.npm.taobao.org/supports-color/download/supports-color-5.4.0.tgz",
+          "integrity": "sha1-HGszdALCE3YF7+GfEP7DkPb6q1Q=",
+          "dev": true,
+          "requires": {
+            "has-flag": "3.0.0"
+          }
+        }
+      }
+    },
+    "jest-docblock": {
+      "version": "22.4.0",
+      "resolved": "http://registry.npm.taobao.org/jest-docblock/download/jest-docblock-22.4.0.tgz",
+      "integrity": "sha1-2/GHfiVQBwz8TZsHpVd1oEgxWbg=",
+      "requires": {
+        "detect-newline": "2.1.0"
+      }
+    },
+    "jest-environment-jsdom": {
+      "version": "22.4.3",
+      "resolved": "http://registry.npm.taobao.org/jest-environment-jsdom/download/jest-environment-jsdom-22.4.3.tgz",
+      "integrity": "sha1-1n2qQVXjNRauzdNa/YLUq/D6ih4=",
+      "dev": true,
+      "requires": {
+        "jest-mock": "22.4.3",
+        "jest-util": "22.4.3",
+        "jsdom": "11.10.0"
+      }
+    },
+    "jest-environment-node": {
+      "version": "22.4.3",
+      "resolved": "http://registry.npm.taobao.org/jest-environment-node/download/jest-environment-node-22.4.3.tgz",
+      "integrity": "sha1-VMTqo3TIPdUqnah1m+FOvh0LkSk=",
+      "dev": true,
+      "requires": {
+        "jest-mock": "22.4.3",
+        "jest-util": "22.4.3"
+      }
+    },
+    "jest-get-type": {
+      "version": "22.4.3",
+      "resolved": "http://registry.npm.taobao.org/jest-get-type/download/jest-get-type-22.4.3.tgz",
+      "integrity": "sha1-46hQTYR5NC3UQgI2syKGnxiQDOQ=",
+      "dev": true
+    },
+    "jest-haste-map": {
+      "version": "22.4.2",
+      "resolved": "http://registry.npm.taobao.org/jest-haste-map/download/jest-haste-map-22.4.2.tgz",
+      "integrity": "sha1-qQF45mFG1DeLsHY0WpSQcfOwFbQ=",
+      "requires": {
+        "fb-watchman": "2.0.0",
+        "graceful-fs": "4.1.11",
+        "jest-docblock": "22.4.0",
+        "jest-serializer": "22.4.3",
+        "jest-worker": "22.2.2",
+        "micromatch": "2.3.11",
+        "sane": "2.5.2"
+      }
+    },
+    "jest-jasmine2": {
+      "version": "22.4.3",
+      "resolved": "http://registry.npm.taobao.org/jest-jasmine2/download/jest-jasmine2-22.4.3.tgz",
+      "integrity": "sha1-Ta9kzRTHk9qds0p8e43P5Sp0WWU=",
+      "dev": true,
+      "requires": {
+        "chalk": "2.4.1",
+        "co": "4.6.0",
+        "expect": "22.4.3",
+        "graceful-fs": "4.1.11",
+        "is-generator-fn": "1.0.0",
+        "jest-diff": "22.4.3",
+        "jest-matcher-utils": "22.4.3",
+        "jest-message-util": "22.4.3",
+        "jest-snapshot": "22.4.3",
+        "jest-util": "22.4.3",
+        "source-map-support": "0.5.5"
+      },
+      "dependencies": {
+        "ansi-styles": {
+          "version": "3.2.1",
+          "resolved": "http://registry.npm.taobao.org/ansi-styles/download/ansi-styles-3.2.1.tgz",
+          "integrity": "sha1-QfuyAkPlCxK+DwS43tvwdSDOhB0=",
+          "dev": true,
+          "requires": {
+            "color-convert": "1.9.1"
+          }
+        },
+        "chalk": {
+          "version": "2.4.1",
+          "resolved": "http://registry.npm.taobao.org/chalk/download/chalk-2.4.1.tgz",
+          "integrity": "sha1-GMSasWoDe26wFSzIPjRxM4IVtm4=",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "3.2.1",
+            "escape-string-regexp": "1.0.5",
+            "supports-color": "5.4.0"
+          }
+        },
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "http://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz",
+          "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
+          "dev": true
+        },
+        "source-map-support": {
+          "version": "0.5.5",
+          "resolved": "http://registry.npm.taobao.org/source-map-support/download/source-map-support-0.5.5.tgz",
+          "integrity": "sha1-DUr54AST6FVALo7Dbr7S0mb865A=",
+          "dev": true,
+          "requires": {
+            "buffer-from": "1.0.0",
+            "source-map": "0.6.1"
+          }
+        },
+        "supports-color": {
+          "version": "5.4.0",
+          "resolved": "http://registry.npm.taobao.org/supports-color/download/supports-color-5.4.0.tgz",
+          "integrity": "sha1-HGszdALCE3YF7+GfEP7DkPb6q1Q=",
+          "dev": true,
+          "requires": {
+            "has-flag": "3.0.0"
+          }
+        }
+      }
+    },
+    "jest-leak-detector": {
+      "version": "22.4.3",
+      "resolved": "http://registry.npm.taobao.org/jest-leak-detector/download/jest-leak-detector-22.4.3.tgz",
+      "integrity": "sha1-K3smMQOvroxStrkSQaLeQBF+WzU=",
+      "dev": true,
+      "requires": {
+        "pretty-format": "22.4.3"
+      },
+      "dependencies": {
+        "ansi-regex": {
+          "version": "3.0.0",
+          "resolved": "http://registry.npm.taobao.org/ansi-regex/download/ansi-regex-3.0.0.tgz",
+          "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+          "dev": true
+        },
+        "ansi-styles": {
+          "version": "3.2.1",
+          "resolved": "http://registry.npm.taobao.org/ansi-styles/download/ansi-styles-3.2.1.tgz",
+          "integrity": "sha1-QfuyAkPlCxK+DwS43tvwdSDOhB0=",
+          "dev": true,
+          "requires": {
+            "color-convert": "1.9.1"
+          }
+        },
+        "pretty-format": {
+          "version": "22.4.3",
+          "resolved": "http://registry.npm.taobao.org/pretty-format/download/pretty-format-22.4.3.tgz",
+          "integrity": "sha1-+HPXgIOanALpZkyKCC6e556qwW8=",
+          "dev": true,
+          "requires": {
+            "ansi-regex": "3.0.0",
+            "ansi-styles": "3.2.1"
+          }
+        }
+      }
+    },
+    "jest-matcher-utils": {
+      "version": "22.4.3",
+      "resolved": "http://registry.npm.taobao.org/jest-matcher-utils/download/jest-matcher-utils-22.4.3.tgz",
+      "integrity": "sha1-RjL+Qo68c+vBlNPHtl03sWH3EP8=",
+      "dev": true,
+      "requires": {
+        "chalk": "2.4.1",
+        "jest-get-type": "22.4.3",
+        "pretty-format": "22.4.3"
+      },
+      "dependencies": {
+        "ansi-regex": {
+          "version": "3.0.0",
+          "resolved": "http://registry.npm.taobao.org/ansi-regex/download/ansi-regex-3.0.0.tgz",
+          "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+          "dev": true
+        },
+        "ansi-styles": {
+          "version": "3.2.1",
+          "resolved": "http://registry.npm.taobao.org/ansi-styles/download/ansi-styles-3.2.1.tgz",
+          "integrity": "sha1-QfuyAkPlCxK+DwS43tvwdSDOhB0=",
+          "dev": true,
+          "requires": {
+            "color-convert": "1.9.1"
+          }
+        },
+        "chalk": {
+          "version": "2.4.1",
+          "resolved": "http://registry.npm.taobao.org/chalk/download/chalk-2.4.1.tgz",
+          "integrity": "sha1-GMSasWoDe26wFSzIPjRxM4IVtm4=",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "3.2.1",
+            "escape-string-regexp": "1.0.5",
+            "supports-color": "5.4.0"
+          }
+        },
+        "pretty-format": {
+          "version": "22.4.3",
+          "resolved": "http://registry.npm.taobao.org/pretty-format/download/pretty-format-22.4.3.tgz",
+          "integrity": "sha1-+HPXgIOanALpZkyKCC6e556qwW8=",
+          "dev": true,
+          "requires": {
+            "ansi-regex": "3.0.0",
+            "ansi-styles": "3.2.1"
+          }
+        },
+        "supports-color": {
+          "version": "5.4.0",
+          "resolved": "http://registry.npm.taobao.org/supports-color/download/supports-color-5.4.0.tgz",
+          "integrity": "sha1-HGszdALCE3YF7+GfEP7DkPb6q1Q=",
+          "dev": true,
+          "requires": {
+            "has-flag": "3.0.0"
+          }
+        }
+      }
+    },
+    "jest-message-util": {
+      "version": "22.4.3",
+      "resolved": "http://registry.npm.taobao.org/jest-message-util/download/jest-message-util-22.4.3.tgz",
+      "integrity": "sha1-zz04qv5L792/xFXlfWXVI545nrc=",
+      "dev": true,
+      "requires": {
+        "@babel/code-frame": "7.0.0-beta.46",
+        "chalk": "2.4.1",
+        "micromatch": "2.3.11",
+        "slash": "1.0.0",
+        "stack-utils": "1.0.1"
+      },
+      "dependencies": {
+        "ansi-styles": {
+          "version": "3.2.1",
+          "resolved": "http://registry.npm.taobao.org/ansi-styles/download/ansi-styles-3.2.1.tgz",
+          "integrity": "sha1-QfuyAkPlCxK+DwS43tvwdSDOhB0=",
+          "dev": true,
+          "requires": {
+            "color-convert": "1.9.1"
+          }
+        },
+        "chalk": {
+          "version": "2.4.1",
+          "resolved": "http://registry.npm.taobao.org/chalk/download/chalk-2.4.1.tgz",
+          "integrity": "sha1-GMSasWoDe26wFSzIPjRxM4IVtm4=",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "3.2.1",
+            "escape-string-regexp": "1.0.5",
+            "supports-color": "5.4.0"
+          }
+        },
+        "supports-color": {
+          "version": "5.4.0",
+          "resolved": "http://registry.npm.taobao.org/supports-color/download/supports-color-5.4.0.tgz",
+          "integrity": "sha1-HGszdALCE3YF7+GfEP7DkPb6q1Q=",
+          "dev": true,
+          "requires": {
+            "has-flag": "3.0.0"
+          }
+        }
+      }
+    },
+    "jest-mock": {
+      "version": "22.4.3",
+      "resolved": "http://registry.npm.taobao.org/jest-mock/download/jest-mock-22.4.3.tgz",
+      "integrity": "sha1-9jui8HoVEXcs3Hl5czOX33cKq8c=",
+      "dev": true
+    },
+    "jest-regex-util": {
+      "version": "22.4.3",
+      "resolved": "http://registry.npm.taobao.org/jest-regex-util/download/jest-regex-util-22.4.3.tgz",
+      "integrity": "sha1-qCbrGRzfIlAhmMVAGh/ATenO9a8=",
+      "dev": true
+    },
+    "jest-resolve": {
+      "version": "22.4.3",
+      "resolved": "http://registry.npm.taobao.org/jest-resolve/download/jest-resolve-22.4.3.tgz",
+      "integrity": "sha1-DOnUOMhDgimqm5FpaOxrBcGrtOo=",
+      "dev": true,
+      "requires": {
+        "browser-resolve": "1.11.2",
+        "chalk": "2.4.1"
+      },
+      "dependencies": {
+        "ansi-styles": {
+          "version": "3.2.1",
+          "resolved": "http://registry.npm.taobao.org/ansi-styles/download/ansi-styles-3.2.1.tgz",
+          "integrity": "sha1-QfuyAkPlCxK+DwS43tvwdSDOhB0=",
+          "dev": true,
+          "requires": {
+            "color-convert": "1.9.1"
+          }
+        },
+        "chalk": {
+          "version": "2.4.1",
+          "resolved": "http://registry.npm.taobao.org/chalk/download/chalk-2.4.1.tgz",
+          "integrity": "sha1-GMSasWoDe26wFSzIPjRxM4IVtm4=",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "3.2.1",
+            "escape-string-regexp": "1.0.5",
+            "supports-color": "5.4.0"
+          }
+        },
+        "supports-color": {
+          "version": "5.4.0",
+          "resolved": "http://registry.npm.taobao.org/supports-color/download/supports-color-5.4.0.tgz",
+          "integrity": "sha1-HGszdALCE3YF7+GfEP7DkPb6q1Q=",
+          "dev": true,
+          "requires": {
+            "has-flag": "3.0.0"
+          }
+        }
+      }
+    },
+    "jest-resolve-dependencies": {
+      "version": "22.4.3",
+      "resolved": "http://registry.npm.taobao.org/jest-resolve-dependencies/download/jest-resolve-dependencies-22.4.3.tgz",
+      "integrity": "sha1-4iVqWoRnMtw5acty88mtdyWoGV4=",
+      "dev": true,
+      "requires": {
+        "jest-regex-util": "22.4.3"
+      }
+    },
+    "jest-runner": {
+      "version": "22.4.3",
+      "resolved": "http://registry.npm.taobao.org/jest-runner/download/jest-runner-22.4.3.tgz",
+      "integrity": "sha1-KY3daiK5ksZEAbRmdwKzJeUGEMM=",
+      "dev": true,
+      "requires": {
+        "exit": "0.1.2",
+        "jest-config": "22.4.3",
+        "jest-docblock": "22.4.3",
+        "jest-haste-map": "22.4.3",
+        "jest-jasmine2": "22.4.3",
+        "jest-leak-detector": "22.4.3",
+        "jest-message-util": "22.4.3",
+        "jest-runtime": "22.4.3",
+        "jest-util": "22.4.3",
+        "jest-worker": "22.4.3",
+        "throat": "4.1.0"
+      },
+      "dependencies": {
+        "jest-docblock": {
+          "version": "22.4.3",
+          "resolved": "http://registry.npm.taobao.org/jest-docblock/download/jest-docblock-22.4.3.tgz",
+          "integrity": "sha1-UIhvEytCsoDJA8WSNzu26Tu2ixk=",
+          "dev": true,
+          "requires": {
+            "detect-newline": "2.1.0"
+          }
+        },
+        "jest-haste-map": {
+          "version": "22.4.3",
+          "resolved": "http://registry.npm.taobao.org/jest-haste-map/download/jest-haste-map-22.4.3.tgz",
+          "integrity": "sha1-JYQvoro1AgB2esJ/ZY1YudXC4gs=",
+          "dev": true,
+          "requires": {
+            "fb-watchman": "2.0.0",
+            "graceful-fs": "4.1.11",
+            "jest-docblock": "22.4.3",
+            "jest-serializer": "22.4.3",
+            "jest-worker": "22.4.3",
+            "micromatch": "2.3.11",
+            "sane": "2.5.2"
+          }
+        },
+        "jest-worker": {
+          "version": "22.4.3",
+          "resolved": "http://registry.npm.taobao.org/jest-worker/download/jest-worker-22.4.3.tgz",
+          "integrity": "sha1-XEIUF8uhwKv2S/Vr1ft5aNed1As=",
+          "dev": true,
+          "requires": {
+            "merge-stream": "1.0.1"
+          }
+        }
+      }
+    },
+    "jest-runtime": {
+      "version": "22.4.3",
+      "resolved": "http://registry.npm.taobao.org/jest-runtime/download/jest-runtime-22.4.3.tgz",
+      "integrity": "sha1-tpkmw0uFG5IPZmyT6GuikSCH49A=",
+      "dev": true,
+      "requires": {
+        "babel-core": "6.26.3",
+        "babel-jest": "22.4.3",
+        "babel-plugin-istanbul": "4.1.6",
+        "chalk": "2.4.1",
+        "convert-source-map": "1.5.1",
+        "exit": "0.1.2",
+        "graceful-fs": "4.1.11",
+        "jest-config": "22.4.3",
+        "jest-haste-map": "22.4.3",
+        "jest-regex-util": "22.4.3",
+        "jest-resolve": "22.4.3",
+        "jest-util": "22.4.3",
+        "jest-validate": "22.4.3",
+        "json-stable-stringify": "1.0.1",
+        "micromatch": "2.3.11",
+        "realpath-native": "1.0.0",
+        "slash": "1.0.0",
+        "strip-bom": "3.0.0",
+        "write-file-atomic": "2.3.0",
+        "yargs": "10.1.2"
+      },
+      "dependencies": {
+        "ansi-regex": {
+          "version": "3.0.0",
+          "resolved": "http://registry.npm.taobao.org/ansi-regex/download/ansi-regex-3.0.0.tgz",
+          "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+          "dev": true
+        },
+        "ansi-styles": {
+          "version": "3.2.1",
+          "resolved": "http://registry.npm.taobao.org/ansi-styles/download/ansi-styles-3.2.1.tgz",
+          "integrity": "sha1-QfuyAkPlCxK+DwS43tvwdSDOhB0=",
+          "dev": true,
+          "requires": {
+            "color-convert": "1.9.1"
+          }
+        },
+        "chalk": {
+          "version": "2.4.1",
+          "resolved": "http://registry.npm.taobao.org/chalk/download/chalk-2.4.1.tgz",
+          "integrity": "sha1-GMSasWoDe26wFSzIPjRxM4IVtm4=",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "3.2.1",
+            "escape-string-regexp": "1.0.5",
+            "supports-color": "5.4.0"
+          }
+        },
+        "cliui": {
+          "version": "4.1.0",
+          "resolved": "http://registry.npm.taobao.org/cliui/download/cliui-4.1.0.tgz",
+          "integrity": "sha1-NIQi2+gtgAswIu709qwQvy5NG0k=",
+          "dev": true,
+          "requires": {
+            "string-width": "2.1.1",
+            "strip-ansi": "4.0.0",
+            "wrap-ansi": "2.1.0"
+          }
+        },
+        "jest-docblock": {
+          "version": "22.4.3",
+          "resolved": "http://registry.npm.taobao.org/jest-docblock/download/jest-docblock-22.4.3.tgz",
+          "integrity": "sha1-UIhvEytCsoDJA8WSNzu26Tu2ixk=",
+          "dev": true,
+          "requires": {
+            "detect-newline": "2.1.0"
+          }
+        },
+        "jest-haste-map": {
+          "version": "22.4.3",
+          "resolved": "http://registry.npm.taobao.org/jest-haste-map/download/jest-haste-map-22.4.3.tgz",
+          "integrity": "sha1-JYQvoro1AgB2esJ/ZY1YudXC4gs=",
+          "dev": true,
+          "requires": {
+            "fb-watchman": "2.0.0",
+            "graceful-fs": "4.1.11",
+            "jest-docblock": "22.4.3",
+            "jest-serializer": "22.4.3",
+            "jest-worker": "22.4.3",
+            "micromatch": "2.3.11",
+            "sane": "2.5.2"
+          }
+        },
+        "jest-worker": {
+          "version": "22.4.3",
+          "resolved": "http://registry.npm.taobao.org/jest-worker/download/jest-worker-22.4.3.tgz",
+          "integrity": "sha1-XEIUF8uhwKv2S/Vr1ft5aNed1As=",
+          "dev": true,
+          "requires": {
+            "merge-stream": "1.0.1"
+          }
+        },
+        "strip-ansi": {
+          "version": "4.0.0",
+          "resolved": "http://registry.npm.taobao.org/strip-ansi/download/strip-ansi-4.0.0.tgz",
+          "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+          "dev": true,
+          "requires": {
+            "ansi-regex": "3.0.0"
+          }
+        },
+        "supports-color": {
+          "version": "5.4.0",
+          "resolved": "http://registry.npm.taobao.org/supports-color/download/supports-color-5.4.0.tgz",
+          "integrity": "sha1-HGszdALCE3YF7+GfEP7DkPb6q1Q=",
+          "dev": true,
+          "requires": {
+            "has-flag": "3.0.0"
+          }
+        },
+        "write-file-atomic": {
+          "version": "2.3.0",
+          "resolved": "http://registry.npm.taobao.org/write-file-atomic/download/write-file-atomic-2.3.0.tgz",
+          "integrity": "sha1-H/YVdcLipOjlENb6TiQ8zhg5mas=",
+          "dev": true,
+          "requires": {
+            "graceful-fs": "4.1.11",
+            "imurmurhash": "0.1.4",
+            "signal-exit": "3.0.2"
+          }
+        },
+        "yargs": {
+          "version": "10.1.2",
+          "resolved": "http://registry.npm.taobao.org/yargs/download/yargs-10.1.2.tgz",
+          "integrity": "sha1-RU0HTCsWpRpD4vt4B+T53mnMtcU=",
+          "dev": true,
+          "requires": {
+            "cliui": "4.1.0",
+            "decamelize": "1.2.0",
+            "find-up": "2.1.0",
+            "get-caller-file": "1.0.2",
+            "os-locale": "2.1.0",
+            "require-directory": "2.1.1",
+            "require-main-filename": "1.0.1",
+            "set-blocking": "2.0.0",
+            "string-width": "2.1.1",
+            "which-module": "2.0.0",
+            "y18n": "3.2.1",
+            "yargs-parser": "8.1.0"
+          }
+        },
+        "yargs-parser": {
+          "version": "8.1.0",
+          "resolved": "http://registry.npm.taobao.org/yargs-parser/download/yargs-parser-8.1.0.tgz",
+          "integrity": "sha1-8TdqM7Ziml0GN4KUTacyYx6WaVA=",
+          "dev": true,
+          "requires": {
+            "camelcase": "4.1.0"
+          }
+        }
+      }
+    },
+    "jest-serializer": {
+      "version": "22.4.3",
+      "resolved": "http://registry.npm.taobao.org/jest-serializer/download/jest-serializer-22.4.3.tgz",
+      "integrity": "sha1-pnm4Gn8RHkdmI19PDEbSMO4PdDY="
+    },
+    "jest-snapshot": {
+      "version": "22.4.3",
+      "resolved": "http://registry.npm.taobao.org/jest-snapshot/download/jest-snapshot-22.4.3.tgz",
+      "integrity": "sha1-tcm0KEb/ufrMt2uEExW6Z4hzYtI=",
+      "dev": true,
+      "requires": {
+        "chalk": "2.4.1",
+        "jest-diff": "22.4.3",
+        "jest-matcher-utils": "22.4.3",
+        "mkdirp": "0.5.1",
+        "natural-compare": "1.4.0",
+        "pretty-format": "22.4.3"
+      },
+      "dependencies": {
+        "ansi-regex": {
+          "version": "3.0.0",
+          "resolved": "http://registry.npm.taobao.org/ansi-regex/download/ansi-regex-3.0.0.tgz",
+          "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+          "dev": true
+        },
+        "ansi-styles": {
+          "version": "3.2.1",
+          "resolved": "http://registry.npm.taobao.org/ansi-styles/download/ansi-styles-3.2.1.tgz",
+          "integrity": "sha1-QfuyAkPlCxK+DwS43tvwdSDOhB0=",
+          "dev": true,
+          "requires": {
+            "color-convert": "1.9.1"
+          }
+        },
+        "chalk": {
+          "version": "2.4.1",
+          "resolved": "http://registry.npm.taobao.org/chalk/download/chalk-2.4.1.tgz",
+          "integrity": "sha1-GMSasWoDe26wFSzIPjRxM4IVtm4=",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "3.2.1",
+            "escape-string-regexp": "1.0.5",
+            "supports-color": "5.4.0"
+          }
+        },
+        "pretty-format": {
+          "version": "22.4.3",
+          "resolved": "http://registry.npm.taobao.org/pretty-format/download/pretty-format-22.4.3.tgz",
+          "integrity": "sha1-+HPXgIOanALpZkyKCC6e556qwW8=",
+          "dev": true,
+          "requires": {
+            "ansi-regex": "3.0.0",
+            "ansi-styles": "3.2.1"
+          }
+        },
+        "supports-color": {
+          "version": "5.4.0",
+          "resolved": "http://registry.npm.taobao.org/supports-color/download/supports-color-5.4.0.tgz",
+          "integrity": "sha1-HGszdALCE3YF7+GfEP7DkPb6q1Q=",
+          "dev": true,
+          "requires": {
+            "has-flag": "3.0.0"
+          }
+        }
+      }
+    },
+    "jest-util": {
+      "version": "22.4.3",
+      "resolved": "http://registry.npm.taobao.org/jest-util/download/jest-util-22.4.3.tgz",
+      "integrity": "sha1-xw/sjuxIfDexCwgJ3AZKfs9qr6w=",
+      "dev": true,
+      "requires": {
+        "callsites": "2.0.0",
+        "chalk": "2.4.1",
+        "graceful-fs": "4.1.11",
+        "is-ci": "1.1.0",
+        "jest-message-util": "22.4.3",
+        "mkdirp": "0.5.1",
+        "source-map": "0.6.1"
+      },
+      "dependencies": {
+        "ansi-styles": {
+          "version": "3.2.1",
+          "resolved": "http://registry.npm.taobao.org/ansi-styles/download/ansi-styles-3.2.1.tgz",
+          "integrity": "sha1-QfuyAkPlCxK+DwS43tvwdSDOhB0=",
+          "dev": true,
+          "requires": {
+            "color-convert": "1.9.1"
+          }
+        },
+        "chalk": {
+          "version": "2.4.1",
+          "resolved": "http://registry.npm.taobao.org/chalk/download/chalk-2.4.1.tgz",
+          "integrity": "sha1-GMSasWoDe26wFSzIPjRxM4IVtm4=",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "3.2.1",
+            "escape-string-regexp": "1.0.5",
+            "supports-color": "5.4.0"
+          }
+        },
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "http://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz",
+          "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
+          "dev": true
+        },
+        "supports-color": {
+          "version": "5.4.0",
+          "resolved": "http://registry.npm.taobao.org/supports-color/download/supports-color-5.4.0.tgz",
+          "integrity": "sha1-HGszdALCE3YF7+GfEP7DkPb6q1Q=",
+          "dev": true,
+          "requires": {
+            "has-flag": "3.0.0"
+          }
+        }
+      }
+    },
+    "jest-validate": {
+      "version": "22.4.3",
+      "resolved": "http://registry.npm.taobao.org/jest-validate/download/jest-validate-22.4.3.tgz",
+      "integrity": "sha1-B4CVSlp9qu7I08EINLkoCGWXazA=",
+      "dev": true,
+      "requires": {
+        "chalk": "2.4.1",
+        "jest-config": "22.4.3",
+        "jest-get-type": "22.4.3",
+        "leven": "2.1.0",
+        "pretty-format": "22.4.3"
+      },
+      "dependencies": {
+        "ansi-regex": {
+          "version": "3.0.0",
+          "resolved": "http://registry.npm.taobao.org/ansi-regex/download/ansi-regex-3.0.0.tgz",
+          "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+          "dev": true
+        },
+        "ansi-styles": {
+          "version": "3.2.1",
+          "resolved": "http://registry.npm.taobao.org/ansi-styles/download/ansi-styles-3.2.1.tgz",
+          "integrity": "sha1-QfuyAkPlCxK+DwS43tvwdSDOhB0=",
+          "dev": true,
+          "requires": {
+            "color-convert": "1.9.1"
+          }
+        },
+        "chalk": {
+          "version": "2.4.1",
+          "resolved": "http://registry.npm.taobao.org/chalk/download/chalk-2.4.1.tgz",
+          "integrity": "sha1-GMSasWoDe26wFSzIPjRxM4IVtm4=",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "3.2.1",
+            "escape-string-regexp": "1.0.5",
+            "supports-color": "5.4.0"
+          }
+        },
+        "pretty-format": {
+          "version": "22.4.3",
+          "resolved": "http://registry.npm.taobao.org/pretty-format/download/pretty-format-22.4.3.tgz",
+          "integrity": "sha1-+HPXgIOanALpZkyKCC6e556qwW8=",
+          "dev": true,
+          "requires": {
+            "ansi-regex": "3.0.0",
+            "ansi-styles": "3.2.1"
+          }
+        },
+        "supports-color": {
+          "version": "5.4.0",
+          "resolved": "http://registry.npm.taobao.org/supports-color/download/supports-color-5.4.0.tgz",
+          "integrity": "sha1-HGszdALCE3YF7+GfEP7DkPb6q1Q=",
+          "dev": true,
+          "requires": {
+            "has-flag": "3.0.0"
+          }
+        }
+      }
+    },
+    "jest-worker": {
+      "version": "22.2.2",
+      "resolved": "http://registry.npm.taobao.org/jest-worker/download/jest-worker-22.2.2.tgz",
+      "integrity": "sha1-wfXcOZdohLgfaOxQy4UyssurM5A=",
+      "requires": {
+        "merge-stream": "1.0.1"
+      }
+    },
+    "js-tokens": {
+      "version": "3.0.2",
+      "resolved": "http://registry.npm.taobao.org/js-tokens/download/js-tokens-3.0.2.tgz",
+      "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls="
+    },
+    "js-yaml": {
+      "version": "3.11.0",
+      "resolved": "http://registry.npm.taobao.org/js-yaml/download/js-yaml-3.11.0.tgz",
+      "integrity": "sha1-WXwai9VxUvJtYizkEXhRpR9euu8=",
+      "dev": true,
+      "requires": {
+        "argparse": "1.0.10",
+        "esprima": "4.0.0"
+      }
+    },
+    "jsbn": {
+      "version": "0.1.1",
+      "resolved": "http://registry.npm.taobao.org/jsbn/download/jsbn-0.1.1.tgz",
+      "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
+      "optional": true
+    },
+    "jsdom": {
+      "version": "11.10.0",
+      "resolved": "http://registry.npm.taobao.org/jsdom/download/jsdom-11.10.0.tgz",
+      "integrity": "sha1-pCzVToiJXcdl8D8VuAekdJYqw7U=",
+      "dev": true,
+      "requires": {
+        "abab": "1.0.4",
+        "acorn": "5.5.3",
+        "acorn-globals": "4.1.0",
+        "array-equal": "1.0.0",
+        "cssom": "0.3.2",
+        "cssstyle": "0.2.37",
+        "data-urls": "1.0.0",
+        "domexception": "1.0.1",
+        "escodegen": "1.9.1",
+        "html-encoding-sniffer": "1.0.2",
+        "left-pad": "1.3.0",
+        "nwmatcher": "1.4.4",
+        "parse5": "4.0.0",
+        "pn": "1.1.0",
+        "request": "2.85.0",
+        "request-promise-native": "1.0.5",
+        "sax": "1.2.4",
+        "symbol-tree": "3.2.2",
+        "tough-cookie": "2.3.4",
+        "w3c-hr-time": "1.0.1",
+        "webidl-conversions": "4.0.2",
+        "whatwg-encoding": "1.0.3",
+        "whatwg-mimetype": "2.1.0",
+        "whatwg-url": "6.4.1",
+        "ws": "4.1.0",
+        "xml-name-validator": "3.0.0"
+      },
+      "dependencies": {
+        "sax": {
+          "version": "1.2.4",
+          "resolved": "http://registry.npm.taobao.org/sax/download/sax-1.2.4.tgz",
+          "integrity": "sha1-KBYjTiN4vdxOU1T6tcqold9xANk=",
+          "dev": true
+        },
+        "ws": {
+          "version": "4.1.0",
+          "resolved": "http://registry.npm.taobao.org/ws/download/ws-4.1.0.tgz",
+          "integrity": "sha1-qXm119TaaL9U7+BAiWfDJIaacok=",
+          "dev": true,
+          "requires": {
+            "async-limiter": "1.0.0",
+            "safe-buffer": "5.1.1"
+          }
+        }
+      }
+    },
+    "jsesc": {
+      "version": "1.3.0",
+      "resolved": "http://registry.npm.taobao.org/jsesc/download/jsesc-1.3.0.tgz",
+      "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s="
+    },
+    "json-schema": {
+      "version": "0.2.3",
+      "resolved": "http://registry.npm.taobao.org/json-schema/download/json-schema-0.2.3.tgz",
+      "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM="
+    },
+    "json-schema-traverse": {
+      "version": "0.3.1",
+      "resolved": "http://registry.npm.taobao.org/json-schema-traverse/download/json-schema-traverse-0.3.1.tgz",
+      "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A="
+    },
+    "json-stable-stringify": {
+      "version": "1.0.1",
+      "resolved": "http://registry.npm.taobao.org/json-stable-stringify/download/json-stable-stringify-1.0.1.tgz",
+      "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=",
+      "requires": {
+        "jsonify": "0.0.0"
+      }
+    },
+    "json-stringify-safe": {
+      "version": "5.0.1",
+      "resolved": "http://registry.npm.taobao.org/json-stringify-safe/download/json-stringify-safe-5.0.1.tgz",
+      "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus="
+    },
+    "json5": {
+      "version": "0.5.1",
+      "resolved": "http://registry.npm.taobao.org/json5/download/json5-0.5.1.tgz",
+      "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE="
+    },
+    "jsonfile": {
+      "version": "2.4.0",
+      "resolved": "http://registry.npm.taobao.org/jsonfile/download/jsonfile-2.4.0.tgz",
+      "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=",
+      "requires": {
+        "graceful-fs": "4.1.11"
+      }
+    },
+    "jsonify": {
+      "version": "0.0.0",
+      "resolved": "http://registry.npm.taobao.org/jsonify/download/jsonify-0.0.0.tgz",
+      "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM="
+    },
+    "jsprim": {
+      "version": "1.4.1",
+      "resolved": "http://registry.npm.taobao.org/jsprim/download/jsprim-1.4.1.tgz",
+      "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
+      "requires": {
+        "assert-plus": "1.0.0",
+        "extsprintf": "1.3.0",
+        "json-schema": "0.2.3",
+        "verror": "1.10.0"
+      }
+    },
+    "key-mirror": {
+      "version": "1.0.1",
+      "resolved": "http://registry.npm.taobao.org/key-mirror/download/key-mirror-1.0.1.tgz",
+      "integrity": "sha1-ChMtXIqCo6T8199zL/lRDQSrNms="
+    },
+    "kind-of": {
+      "version": "1.1.0",
+      "resolved": "http://registry.npm.taobao.org/kind-of/download/kind-of-1.1.0.tgz",
+      "integrity": "sha1-FAo9LUGjbS78+pN3tiwk+ElaXEQ="
+    },
+    "klaw": {
+      "version": "1.3.1",
+      "resolved": "http://registry.npm.taobao.org/klaw/download/klaw-1.3.1.tgz",
+      "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=",
+      "requires": {
+        "graceful-fs": "4.1.11"
+      }
+    },
+    "lazy-cache": {
+      "version": "1.0.4",
+      "resolved": "http://registry.npm.taobao.org/lazy-cache/download/lazy-cache-1.0.4.tgz",
+      "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=",
+      "dev": true,
+      "optional": true
+    },
+    "lcid": {
+      "version": "1.0.0",
+      "resolved": "http://registry.npm.taobao.org/lcid/download/lcid-1.0.0.tgz",
+      "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=",
+      "requires": {
+        "invert-kv": "1.0.0"
+      }
+    },
+    "left-pad": {
+      "version": "1.3.0",
+      "resolved": "http://registry.npm.taobao.org/left-pad/download/left-pad-1.3.0.tgz",
+      "integrity": "sha1-W4o6d2Xf4AEmHd6RVYnngvjJTR4="
+    },
+    "leven": {
+      "version": "2.1.0",
+      "resolved": "http://registry.npm.taobao.org/leven/download/leven-2.1.0.tgz",
+      "integrity": "sha1-wuep93IJTe6dNCAq6KzORoeHVYA=",
+      "dev": true
+    },
+    "levn": {
+      "version": "0.3.0",
+      "resolved": "http://registry.npm.taobao.org/levn/download/levn-0.3.0.tgz",
+      "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
+      "dev": true,
+      "requires": {
+        "prelude-ls": "1.1.2",
+        "type-check": "0.3.2"
+      }
+    },
+    "load-json-file": {
+      "version": "2.0.0",
+      "resolved": "http://registry.npm.taobao.org/load-json-file/download/load-json-file-2.0.0.tgz",
+      "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=",
+      "requires": {
+        "graceful-fs": "4.1.11",
+        "parse-json": "2.2.0",
+        "pify": "2.3.0",
+        "strip-bom": "3.0.0"
+      }
+    },
+    "locate-path": {
+      "version": "2.0.0",
+      "resolved": "http://registry.npm.taobao.org/locate-path/download/locate-path-2.0.0.tgz",
+      "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
+      "requires": {
+        "p-locate": "2.0.0",
+        "path-exists": "3.0.0"
+      }
+    },
+    "lodash": {
+      "version": "4.17.10",
+      "resolved": "http://registry.npm.taobao.org/lodash/download/lodash-4.17.10.tgz",
+      "integrity": "sha1-G3eTz3JZ6jj7NmHU04syYK+K5Oc="
+    },
+    "lodash-es": {
+      "version": "4.17.10",
+      "resolved": "http://registry.npm.taobao.org/lodash-es/download/lodash-es-4.17.10.tgz",
+      "integrity": "sha1-Ys1xBM313YfyNag38O3g6OURfgU="
+    },
+    "lodash.isequal": {
+      "version": "4.5.0",
+      "resolved": "http://registry.npm.taobao.org/lodash.isequal/download/lodash.isequal-4.5.0.tgz",
+      "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA="
+    },
+    "lodash.merge": {
+      "version": "4.6.0",
+      "resolved": "http://registry.npm.taobao.org/lodash.merge/download/lodash.merge-4.6.0.tgz",
+      "integrity": "sha1-aYhLoUSsM/5plzemCG3v+t0PicU="
+    },
+    "lodash.pad": {
+      "version": "4.5.1",
+      "resolved": "http://registry.npm.taobao.org/lodash.pad/download/lodash.pad-4.5.1.tgz",
+      "integrity": "sha1-QzCUmoM6fI2iLMIPaibE1Z3runA="
+    },
+    "lodash.padend": {
+      "version": "4.6.1",
+      "resolved": "http://registry.npm.taobao.org/lodash.padend/download/lodash.padend-4.6.1.tgz",
+      "integrity": "sha1-U8y6BH0G4VjTEfRdpiX05J5vFm4="
+    },
+    "lodash.padstart": {
+      "version": "4.6.1",
+      "resolved": "http://registry.npm.taobao.org/lodash.padstart/download/lodash.padstart-4.6.1.tgz",
+      "integrity": "sha1-0uPuv/DZ05rVD1y9G1KnvOa7YRs="
+    },
+    "lodash.sortby": {
+      "version": "4.7.0",
+      "resolved": "http://registry.npm.taobao.org/lodash.sortby/download/lodash.sortby-4.7.0.tgz",
+      "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=",
+      "dev": true
+    },
+    "lodash.throttle": {
+      "version": "4.1.1",
+      "resolved": "http://registry.npm.taobao.org/lodash.throttle/download/lodash.throttle-4.1.1.tgz",
+      "integrity": "sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ="
+    },
+    "longest": {
+      "version": "1.0.1",
+      "resolved": "http://registry.npm.taobao.org/longest/download/longest-1.0.1.tgz",
+      "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=",
+      "dev": true
+    },
+    "loose-envify": {
+      "version": "1.3.1",
+      "resolved": "http://registry.npm.taobao.org/loose-envify/download/loose-envify-1.3.1.tgz",
+      "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=",
+      "requires": {
+        "js-tokens": "3.0.2"
+      }
+    },
+    "lru-cache": {
+      "version": "4.1.3",
+      "resolved": "http://registry.npm.taobao.org/lru-cache/download/lru-cache-4.1.3.tgz",
+      "integrity": "sha1-oRdc80lt/IQ2wVbDNLSVWZK85pw=",
+      "requires": {
+        "pseudomap": "1.0.2",
+        "yallist": "2.1.2"
+      }
+    },
+    "macos-release": {
+      "version": "1.1.0",
+      "resolved": "http://registry.npm.taobao.org/macos-release/download/macos-release-1.1.0.tgz",
+      "integrity": "sha1-gxlF4pNltHCqhySwqzbI+JWdEPs="
+    },
+    "makeerror": {
+      "version": "1.0.11",
+      "resolved": "http://registry.npm.taobao.org/makeerror/download/makeerror-1.0.11.tgz",
+      "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=",
+      "requires": {
+        "tmpl": "1.0.4"
+      }
+    },
+    "map-cache": {
+      "version": "0.2.2",
+      "resolved": "http://registry.npm.taobao.org/map-cache/download/map-cache-0.2.2.tgz",
+      "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8="
+    },
+    "map-visit": {
+      "version": "1.0.0",
+      "resolved": "http://registry.npm.taobao.org/map-visit/download/map-visit-1.0.0.tgz",
+      "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=",
+      "requires": {
+        "object-visit": "1.0.1"
+      }
+    },
+    "md5": {
+      "version": "2.2.1",
+      "resolved": "http://registry.npm.taobao.org/md5/download/md5-2.2.1.tgz",
+      "integrity": "sha1-U6s41f48iJG6RlMp6iP6wFQBJvk=",
+      "requires": {
+        "charenc": "0.0.2",
+        "crypt": "0.0.2",
+        "is-buffer": "1.1.6"
+      }
+    },
+    "mem": {
+      "version": "1.1.0",
+      "resolved": "http://registry.npm.taobao.org/mem/download/mem-1.1.0.tgz",
+      "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=",
+      "requires": {
+        "mimic-fn": "1.2.0"
+      }
+    },
+    "merge": {
+      "version": "1.2.0",
+      "resolved": "http://registry.npm.taobao.org/merge/download/merge-1.2.0.tgz",
+      "integrity": "sha1-dTHjnUlJwoGma4xabgJl6LBYlNo="
+    },
+    "merge-stream": {
+      "version": "1.0.1",
+      "resolved": "http://registry.npm.taobao.org/merge-stream/download/merge-stream-1.0.1.tgz",
+      "integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=",
+      "requires": {
+        "readable-stream": "2.3.6"
+      }
+    },
+    "metro": {
+      "version": "0.28.0",
+      "resolved": "http://registry.npm.taobao.org/metro/download/metro-0.28.0.tgz",
+      "integrity": "sha1-IpmclsMSloKnas1OHyrcF/fXfKw=",
+      "requires": {
+        "@babel/core": "7.0.0-beta.46",
+        "@babel/generator": "7.0.0-beta.46",
+        "@babel/helper-remap-async-to-generator": "7.0.0-beta.46",
+        "@babel/plugin-check-constants": "7.0.0-beta.38",
+        "@babel/plugin-external-helpers": "7.0.0-beta.46",
+        "@babel/plugin-proposal-class-properties": "7.0.0-beta.46",
+        "@babel/plugin-proposal-object-rest-spread": "7.0.0-beta.46",
+        "@babel/plugin-syntax-dynamic-import": "7.0.0-beta.46",
+        "@babel/plugin-transform-arrow-functions": "7.0.0-beta.46",
+        "@babel/plugin-transform-block-scoping": "7.0.0-beta.46",
+        "@babel/plugin-transform-classes": "7.0.0-beta.46",
+        "@babel/plugin-transform-computed-properties": "7.0.0-beta.46",
+        "@babel/plugin-transform-destructuring": "7.0.0-beta.46",
+        "@babel/plugin-transform-flow-strip-types": "7.0.0-beta.46",
+        "@babel/plugin-transform-for-of": "7.0.0-beta.46",
+        "@babel/plugin-transform-function-name": "7.0.0-beta.46",
+        "@babel/plugin-transform-literals": "7.0.0-beta.46",
+        "@babel/plugin-transform-modules-commonjs": "7.0.0-beta.46",
+        "@babel/plugin-transform-object-assign": "7.0.0-beta.46",
+        "@babel/plugin-transform-parameters": "7.0.0-beta.46",
+        "@babel/plugin-transform-react-display-name": "7.0.0-beta.46",
+        "@babel/plugin-transform-react-jsx": "7.0.0-beta.46",
+        "@babel/plugin-transform-react-jsx-source": "7.0.0-beta.46",
+        "@babel/plugin-transform-regenerator": "7.0.0-beta.46",
+        "@babel/plugin-transform-shorthand-properties": "7.0.0-beta.46",
+        "@babel/plugin-transform-spread": "7.0.0-beta.46",
+        "@babel/plugin-transform-template-literals": "7.0.0-beta.46",
+        "@babel/template": "7.0.0-beta.46",
+        "@babel/traverse": "7.0.0-beta.46",
+        "@babel/types": "7.0.0-beta.46",
+        "absolute-path": "0.0.0",
+        "async": "2.6.0",
+        "babel-core": "6.26.3",
+        "babel-generator": "6.26.1",
+        "babel-plugin-external-helpers": "6.22.0",
+        "babel-preset-es2015-node": "6.1.1",
+        "babel-preset-fbjs": "2.1.4",
+        "babel-preset-react-native": "4.0.0",
+        "babel-register": "6.26.0",
+        "babylon": "6.18.0",
+        "chalk": "1.1.3",
+        "concat-stream": "1.6.2",
+        "connect": "3.6.6",
+        "core-js": "2.5.6",
+        "debug": "2.6.9",
+        "denodeify": "1.2.1",
+        "eventemitter3": "3.1.0",
+        "fbjs": "0.8.16",
+        "fs-extra": "1.0.0",
+        "graceful-fs": "4.1.11",
+        "image-size": "0.6.2",
+        "jest-docblock": "22.4.0",
+        "jest-haste-map": "22.4.2",
+        "jest-worker": "22.2.2",
+        "json-stable-stringify": "1.0.1",
+        "json5": "0.4.0",
+        "left-pad": "1.3.0",
+        "lodash.throttle": "4.1.1",
+        "merge-stream": "1.0.1",
+        "metro-babylon7": "0.28.0",
+        "metro-cache": "0.28.0",
+        "metro-core": "0.28.0",
+        "metro-minify-uglify": "0.28.0",
+        "metro-resolver": "0.28.0",
+        "metro-source-map": "0.28.0",
+        "mime-types": "2.1.11",
+        "mkdirp": "0.5.1",
+        "request": "2.85.0",
+        "rimraf": "2.6.2",
+        "serialize-error": "2.1.0",
+        "source-map": "0.5.7",
+        "temp": "0.8.3",
+        "throat": "4.1.0",
+        "wordwrap": "1.0.0",
+        "write-file-atomic": "1.3.4",
+        "ws": "1.1.5",
+        "xpipe": "1.0.5",
+        "yargs": "9.0.1"
+      },
+      "dependencies": {
+        "core-js": {
+          "version": "2.5.6",
+          "resolved": "http://registry.npm.taobao.org/core-js/download/core-js-2.5.6.tgz",
+          "integrity": "sha1-D+bUW/PKw6w2Sp1y3nV29OsiG50="
+        },
+        "json5": {
+          "version": "0.4.0",
+          "resolved": "http://registry.npm.taobao.org/json5/download/json5-0.4.0.tgz",
+          "integrity": "sha1-BUNS5MTIDIbAkjh31EneF2pzLI0="
+        },
+        "mime-db": {
+          "version": "1.23.0",
+          "resolved": "http://registry.npm.taobao.org/mime-db/download/mime-db-1.23.0.tgz",
+          "integrity": "sha1-oxtAcK2uon1zLqMzdApk0OyaZlk="
+        },
+        "mime-types": {
+          "version": "2.1.11",
+          "resolved": "http://registry.npm.taobao.org/mime-types/download/mime-types-2.1.11.tgz",
+          "integrity": "sha1-wlnEcb2oCKhdbNGTtDCl+uRHOzw=",
+          "requires": {
+            "mime-db": "1.23.0"
+          }
+        }
+      }
+    },
+    "metro-babylon7": {
+      "version": "0.28.0",
+      "resolved": "http://registry.npm.taobao.org/metro-babylon7/download/metro-babylon7-0.28.0.tgz",
+      "integrity": "sha1-z5cB/9wZktFWK0y2Z9lpIWSVDfQ=",
+      "requires": {
+        "babylon": "7.0.0-beta.46"
+      },
+      "dependencies": {
+        "babylon": {
+          "version": "7.0.0-beta.46",
+          "resolved": "http://registry.npm.taobao.org/babylon/download/babylon-7.0.0-beta.46.tgz",
+          "integrity": "sha1-tt2rqBu7EwMTkydX/5wZXVJwiLY="
+        }
+      }
+    },
+    "metro-cache": {
+      "version": "0.28.0",
+      "resolved": "http://registry.npm.taobao.org/metro-cache/download/metro-cache-0.28.0.tgz",
+      "integrity": "sha1-xRZKNhmF/AKUBZ/M306oJOMXPB0=",
+      "requires": {
+        "jest-serializer": "22.4.3",
+        "mkdirp": "0.5.1"
+      }
+    },
+    "metro-core": {
+      "version": "0.28.0",
+      "resolved": "http://registry.npm.taobao.org/metro-core/download/metro-core-0.28.0.tgz",
+      "integrity": "sha1-4c7UzwfKj7UZam5cqFO12JPwYDg=",
+      "requires": {
+        "lodash.throttle": "4.1.1"
+      }
+    },
+    "metro-minify-uglify": {
+      "version": "0.28.0",
+      "resolved": "http://registry.npm.taobao.org/metro-minify-uglify/download/metro-minify-uglify-0.28.0.tgz",
+      "integrity": "sha1-ya7Ljok0MNL9WOAM95nAC5ncD3k=",
+      "requires": {
+        "uglify-es": "3.3.9"
+      }
+    },
+    "metro-resolver": {
+      "version": "0.28.0",
+      "resolved": "http://registry.npm.taobao.org/metro-resolver/download/metro-resolver-0.28.0.tgz",
+      "integrity": "sha1-gTgC1g/HYncpJ8gdAuAcfuyEutg=",
+      "requires": {
+        "absolute-path": "0.0.0"
+      }
+    },
+    "metro-source-map": {
+      "version": "0.28.0",
+      "resolved": "http://registry.npm.taobao.org/metro-source-map/download/metro-source-map-0.28.0.tgz",
+      "integrity": "sha1-7IwxYdhRatPE5xSfLD1IAvT9b6I=",
+      "requires": {
+        "source-map": "0.5.7"
+      }
+    },
+    "micromatch": {
+      "version": "2.3.11",
+      "resolved": "http://registry.npm.taobao.org/micromatch/download/micromatch-2.3.11.tgz",
+      "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=",
+      "requires": {
+        "arr-diff": "2.0.0",
+        "array-unique": "0.2.1",
+        "braces": "1.8.5",
+        "expand-brackets": "0.1.5",
+        "extglob": "0.3.2",
+        "filename-regex": "2.0.1",
+        "is-extglob": "1.0.0",
+        "is-glob": "2.0.1",
+        "kind-of": "3.2.2",
+        "normalize-path": "2.1.1",
+        "object.omit": "2.0.1",
+        "parse-glob": "3.0.4",
+        "regex-cache": "0.4.4"
+      },
+      "dependencies": {
+        "arr-diff": {
+          "version": "2.0.0",
+          "resolved": "http://registry.npm.taobao.org/arr-diff/download/arr-diff-2.0.0.tgz",
+          "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=",
+          "requires": {
+            "arr-flatten": "1.1.0"
+          }
+        },
+        "kind-of": {
+          "version": "3.2.2",
+          "resolved": "http://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz",
+          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+          "requires": {
+            "is-buffer": "1.1.6"
+          }
+        }
+      }
+    },
+    "mime": {
+      "version": "1.6.0",
+      "resolved": "http://registry.npm.taobao.org/mime/download/mime-1.6.0.tgz",
+      "integrity": "sha1-Ms2eXGRVO9WNGaVor0Uqz/BJgbE="
+    },
+    "mime-db": {
+      "version": "1.33.0",
+      "resolved": "http://registry.npm.taobao.org/mime-db/download/mime-db-1.33.0.tgz",
+      "integrity": "sha1-o0kgUKXLm2NFBUHjnZeI0icng9s="
+    },
+    "mime-types": {
+      "version": "2.1.18",
+      "resolved": "http://registry.npm.taobao.org/mime-types/download/mime-types-2.1.18.tgz",
+      "integrity": "sha1-bzI/YKg9ERRvgx/xH9ZuL+VQO7g=",
+      "requires": {
+        "mime-db": "1.33.0"
+      }
+    },
+    "mimic-fn": {
+      "version": "1.2.0",
+      "resolved": "http://registry.npm.taobao.org/mimic-fn/download/mimic-fn-1.2.0.tgz",
+      "integrity": "sha1-ggyGo5M0ZA6ZUWkovQP8qIBX0CI="
+    },
+    "min-document": {
+      "version": "2.19.0",
+      "resolved": "http://registry.npm.taobao.org/min-document/download/min-document-2.19.0.tgz",
+      "integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=",
+      "requires": {
+        "dom-walk": "0.1.1"
+      }
+    },
+    "minimatch": {
+      "version": "3.0.4",
+      "resolved": "http://registry.npm.taobao.org/minimatch/download/minimatch-3.0.4.tgz",
+      "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=",
+      "requires": {
+        "brace-expansion": "1.1.11"
+      }
+    },
+    "minimist": {
+      "version": "1.2.0",
+      "resolved": "http://registry.npm.taobao.org/minimist/download/minimist-1.2.0.tgz",
+      "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ="
+    },
+    "mixin-deep": {
+      "version": "1.3.1",
+      "resolved": "http://registry.npm.taobao.org/mixin-deep/download/mixin-deep-1.3.1.tgz",
+      "integrity": "sha1-pJ5yaNzhoNlpjkUybFYm3zVD0P4=",
+      "requires": {
+        "for-in": "1.0.2",
+        "is-extendable": "1.0.1"
+      },
+      "dependencies": {
+        "is-extendable": {
+          "version": "1.0.1",
+          "resolved": "http://registry.npm.taobao.org/is-extendable/download/is-extendable-1.0.1.tgz",
+          "integrity": "sha1-p0cPnkJnM9gb2B4RVSZOOjUHyrQ=",
+          "requires": {
+            "is-plain-object": "2.0.4"
+          }
+        }
+      }
+    },
+    "mkdirp": {
+      "version": "0.5.1",
+      "resolved": "http://registry.npm.taobao.org/mkdirp/download/mkdirp-0.5.1.tgz",
+      "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
+      "requires": {
+        "minimist": "0.0.8"
+      },
+      "dependencies": {
+        "minimist": {
+          "version": "0.0.8",
+          "resolved": "http://registry.npm.taobao.org/minimist/download/minimist-0.0.8.tgz",
+          "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0="
+        }
+      }
+    },
+    "moment": {
+      "version": "2.22.1",
+      "resolved": "http://registry.npm.taobao.org/moment/download/moment-2.22.1.tgz",
+      "integrity": "sha1-Upoum/lz8lnJZD0jf9qE3jom6K0="
+    },
+    "morgan": {
+      "version": "1.9.0",
+      "resolved": "http://registry.npm.taobao.org/morgan/download/morgan-1.9.0.tgz",
+      "integrity": "sha1-0B+mxlhZt2/PMbPLU6OCGjEdgFE=",
+      "requires": {
+        "basic-auth": "2.0.0",
+        "debug": "2.6.9",
+        "depd": "1.1.2",
+        "on-finished": "2.3.0",
+        "on-headers": "1.0.1"
+      }
+    },
+    "ms": {
+      "version": "2.0.0",
+      "resolved": "http://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz",
+      "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
+    },
+    "mute-stream": {
+      "version": "0.0.7",
+      "resolved": "http://registry.npm.taobao.org/mute-stream/download/mute-stream-0.0.7.tgz",
+      "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s="
+    },
+    "nan": {
+      "version": "2.10.0",
+      "resolved": "http://registry.npm.taobao.org/nan/download/nan-2.10.0.tgz",
+      "integrity": "sha1-ltDNYQ69WNS03pzAxoKM2pnHVI8=",
+      "optional": true
+    },
+    "nanomatch": {
+      "version": "1.2.9",
+      "resolved": "http://registry.npm.taobao.org/nanomatch/download/nanomatch-1.2.9.tgz",
+      "integrity": "sha1-h59xUMstq3pHElkGbBBO7m4Pp8I=",
+      "requires": {
+        "arr-diff": "4.0.0",
+        "array-unique": "0.3.2",
+        "define-property": "2.0.2",
+        "extend-shallow": "3.0.2",
+        "fragment-cache": "0.2.1",
+        "is-odd": "2.0.0",
+        "is-windows": "1.0.2",
+        "kind-of": "6.0.2",
+        "object.pick": "1.3.0",
+        "regex-not": "1.0.2",
+        "snapdragon": "0.8.2",
+        "to-regex": "3.0.2"
+      },
+      "dependencies": {
+        "arr-diff": {
+          "version": "4.0.0",
+          "resolved": "http://registry.npm.taobao.org/arr-diff/download/arr-diff-4.0.0.tgz",
+          "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA="
+        },
+        "array-unique": {
+          "version": "0.3.2",
+          "resolved": "http://registry.npm.taobao.org/array-unique/download/array-unique-0.3.2.tgz",
+          "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg="
+        },
+        "extend-shallow": {
+          "version": "3.0.2",
+          "resolved": "http://registry.npm.taobao.org/extend-shallow/download/extend-shallow-3.0.2.tgz",
+          "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
+          "requires": {
+            "assign-symbols": "1.0.0",
+            "is-extendable": "1.0.1"
+          }
+        },
+        "is-extendable": {
+          "version": "1.0.1",
+          "resolved": "http://registry.npm.taobao.org/is-extendable/download/is-extendable-1.0.1.tgz",
+          "integrity": "sha1-p0cPnkJnM9gb2B4RVSZOOjUHyrQ=",
+          "requires": {
+            "is-plain-object": "2.0.4"
+          }
+        },
+        "kind-of": {
+          "version": "6.0.2",
+          "resolved": "http://registry.npm.taobao.org/kind-of/download/kind-of-6.0.2.tgz",
+          "integrity": "sha1-ARRrNqYhjmTljzqNZt5df8b20FE="
+        }
+      }
+    },
+    "natural-compare": {
+      "version": "1.4.0",
+      "resolved": "http://registry.npm.taobao.org/natural-compare/download/natural-compare-1.4.0.tgz",
+      "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=",
+      "dev": true
+    },
+    "negotiator": {
+      "version": "0.6.1",
+      "resolved": "http://registry.npm.taobao.org/negotiator/download/negotiator-0.6.1.tgz",
+      "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk="
+    },
+    "node-fetch": {
+      "version": "1.7.3",
+      "resolved": "http://registry.npm.taobao.org/node-fetch/download/node-fetch-1.7.3.tgz",
+      "integrity": "sha1-mA9vcthSEaU0fGsrwYxbhMPrR+8=",
+      "requires": {
+        "encoding": "0.1.12",
+        "is-stream": "1.1.0"
+      }
+    },
+    "node-int64": {
+      "version": "0.4.0",
+      "resolved": "http://registry.npm.taobao.org/node-int64/download/node-int64-0.4.0.tgz",
+      "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs="
+    },
+    "node-notifier": {
+      "version": "5.2.1",
+      "resolved": "http://registry.npm.taobao.org/node-notifier/download/node-notifier-5.2.1.tgz",
+      "integrity": "sha1-+jE90I9VF9sOJQLldY1mSsafneo=",
+      "requires": {
+        "growly": "1.3.0",
+        "semver": "5.5.0",
+        "shellwords": "0.1.1",
+        "which": "1.3.0"
+      }
+    },
+    "normalize-package-data": {
+      "version": "2.4.0",
+      "resolved": "http://registry.npm.taobao.org/normalize-package-data/download/normalize-package-data-2.4.0.tgz",
+      "integrity": "sha1-EvlaMH1YNSB1oEkHuErIvpisAS8=",
+      "requires": {
+        "hosted-git-info": "2.6.0",
+        "is-builtin-module": "1.0.0",
+        "semver": "5.5.0",
+        "validate-npm-package-license": "3.0.3"
+      }
+    },
+    "normalize-path": {
+      "version": "2.1.1",
+      "resolved": "http://registry.npm.taobao.org/normalize-path/download/normalize-path-2.1.1.tgz",
+      "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
+      "requires": {
+        "remove-trailing-separator": "1.1.0"
+      }
+    },
+    "npm-run-path": {
+      "version": "2.0.2",
+      "resolved": "http://registry.npm.taobao.org/npm-run-path/download/npm-run-path-2.0.2.tgz",
+      "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=",
+      "requires": {
+        "path-key": "2.0.1"
+      }
+    },
+    "npmlog": {
+      "version": "2.0.4",
+      "resolved": "http://registry.npm.taobao.org/npmlog/download/npmlog-2.0.4.tgz",
+      "integrity": "sha1-mLUlMPJRTKkNCexbIsiEZyI3VpI=",
+      "requires": {
+        "ansi": "0.3.1",
+        "are-we-there-yet": "1.1.4",
+        "gauge": "1.2.7"
+      }
+    },
+    "number-is-nan": {
+      "version": "1.0.1",
+      "resolved": "http://registry.npm.taobao.org/number-is-nan/download/number-is-nan-1.0.1.tgz",
+      "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0="
+    },
+    "nwmatcher": {
+      "version": "1.4.4",
+      "resolved": "http://registry.npm.taobao.org/nwmatcher/download/nwmatcher-1.4.4.tgz",
+      "integrity": "sha1-IoVjHzSpXw0Dlc2QDJbtObWPNG4=",
+      "dev": true
+    },
+    "oauth-sign": {
+      "version": "0.8.2",
+      "resolved": "http://registry.npm.taobao.org/oauth-sign/download/oauth-sign-0.8.2.tgz",
+      "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM="
+    },
+    "object-assign": {
+      "version": "4.1.1",
+      "resolved": "http://registry.npm.taobao.org/object-assign/download/object-assign-4.1.1.tgz",
+      "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
+    },
+    "object-copy": {
+      "version": "0.1.0",
+      "resolved": "http://registry.npm.taobao.org/object-copy/download/object-copy-0.1.0.tgz",
+      "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=",
+      "requires": {
+        "copy-descriptor": "0.1.1",
+        "define-property": "0.2.5",
+        "kind-of": "3.2.2"
+      },
+      "dependencies": {
+        "define-property": {
+          "version": "0.2.5",
+          "resolved": "http://registry.npm.taobao.org/define-property/download/define-property-0.2.5.tgz",
+          "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+          "requires": {
+            "is-descriptor": "0.1.6"
+          }
+        },
+        "kind-of": {
+          "version": "3.2.2",
+          "resolved": "http://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz",
+          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+          "requires": {
+            "is-buffer": "1.1.6"
+          }
+        }
+      }
+    },
+    "object-keys": {
+      "version": "1.0.11",
+      "resolved": "http://registry.npm.taobao.org/object-keys/download/object-keys-1.0.11.tgz",
+      "integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0=",
+      "dev": true
+    },
+    "object-visit": {
+      "version": "1.0.1",
+      "resolved": "http://registry.npm.taobao.org/object-visit/download/object-visit-1.0.1.tgz",
+      "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=",
+      "requires": {
+        "isobject": "3.0.1"
+      },
+      "dependencies": {
+        "isobject": {
+          "version": "3.0.1",
+          "resolved": "http://registry.npm.taobao.org/isobject/download/isobject-3.0.1.tgz",
+          "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8="
+        }
+      }
+    },
+    "object.getownpropertydescriptors": {
+      "version": "2.0.3",
+      "resolved": "http://registry.npm.taobao.org/object.getownpropertydescriptors/download/object.getownpropertydescriptors-2.0.3.tgz",
+      "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=",
+      "dev": true,
+      "requires": {
+        "define-properties": "1.1.2",
+        "es-abstract": "1.11.0"
+      }
+    },
+    "object.omit": {
+      "version": "2.0.1",
+      "resolved": "http://registry.npm.taobao.org/object.omit/download/object.omit-2.0.1.tgz",
+      "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=",
+      "requires": {
+        "for-own": "0.1.5",
+        "is-extendable": "0.1.1"
+      }
+    },
+    "object.pick": {
+      "version": "1.3.0",
+      "resolved": "http://registry.npm.taobao.org/object.pick/download/object.pick-1.3.0.tgz",
+      "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=",
+      "requires": {
+        "isobject": "3.0.1"
+      },
+      "dependencies": {
+        "isobject": {
+          "version": "3.0.1",
+          "resolved": "http://registry.npm.taobao.org/isobject/download/isobject-3.0.1.tgz",
+          "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8="
+        }
+      }
+    },
+    "on-finished": {
+      "version": "2.3.0",
+      "resolved": "http://registry.npm.taobao.org/on-finished/download/on-finished-2.3.0.tgz",
+      "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
+      "requires": {
+        "ee-first": "1.1.1"
+      }
+    },
+    "on-headers": {
+      "version": "1.0.1",
+      "resolved": "http://registry.npm.taobao.org/on-headers/download/on-headers-1.0.1.tgz",
+      "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c="
+    },
+    "once": {
+      "version": "1.4.0",
+      "resolved": "http://registry.npm.taobao.org/once/download/once-1.4.0.tgz",
+      "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
+      "requires": {
+        "wrappy": "1.0.2"
+      }
+    },
+    "onetime": {
+      "version": "2.0.1",
+      "resolved": "http://registry.npm.taobao.org/onetime/download/onetime-2.0.1.tgz",
+      "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=",
+      "requires": {
+        "mimic-fn": "1.2.0"
+      }
+    },
+    "opn": {
+      "version": "3.0.3",
+      "resolved": "http://registry.npm.taobao.org/opn/download/opn-3.0.3.tgz",
+      "integrity": "sha1-ttmec5n3jWXDuq/+8fsojpuFJDo=",
+      "requires": {
+        "object-assign": "4.1.1"
+      }
+    },
+    "optimist": {
+      "version": "0.6.1",
+      "resolved": "http://registry.npm.taobao.org/optimist/download/optimist-0.6.1.tgz",
+      "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=",
+      "requires": {
+        "minimist": "0.0.10",
+        "wordwrap": "0.0.3"
+      },
+      "dependencies": {
+        "minimist": {
+          "version": "0.0.10",
+          "resolved": "http://registry.npm.taobao.org/minimist/download/minimist-0.0.10.tgz",
+          "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8="
+        },
+        "wordwrap": {
+          "version": "0.0.3",
+          "resolved": "http://registry.npm.taobao.org/wordwrap/download/wordwrap-0.0.3.tgz",
+          "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc="
+        }
+      }
+    },
+    "optionator": {
+      "version": "0.8.2",
+      "resolved": "http://registry.npm.taobao.org/optionator/download/optionator-0.8.2.tgz",
+      "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=",
+      "dev": true,
+      "requires": {
+        "deep-is": "0.1.3",
+        "fast-levenshtein": "2.0.6",
+        "levn": "0.3.0",
+        "prelude-ls": "1.1.2",
+        "type-check": "0.3.2",
+        "wordwrap": "1.0.0"
+      }
+    },
+    "options": {
+      "version": "0.0.6",
+      "resolved": "http://registry.npm.taobao.org/options/download/options-0.0.6.tgz",
+      "integrity": "sha1-7CLTEoBrtT5zF3Pnza788cZDEo8="
+    },
+    "os-homedir": {
+      "version": "1.0.2",
+      "resolved": "http://registry.npm.taobao.org/os-homedir/download/os-homedir-1.0.2.tgz",
+      "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M="
+    },
+    "os-locale": {
+      "version": "2.1.0",
+      "resolved": "http://registry.npm.taobao.org/os-locale/download/os-locale-2.1.0.tgz",
+      "integrity": "sha1-QrwpAKa1uL0XN2yOiCtlr8zyS/I=",
+      "requires": {
+        "execa": "0.7.0",
+        "lcid": "1.0.0",
+        "mem": "1.1.0"
+      },
+      "dependencies": {
+        "execa": {
+          "version": "0.7.0",
+          "resolved": "http://registry.npm.taobao.org/execa/download/execa-0.7.0.tgz",
+          "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=",
+          "requires": {
+            "cross-spawn": "5.1.0",
+            "get-stream": "3.0.0",
+            "is-stream": "1.1.0",
+            "npm-run-path": "2.0.2",
+            "p-finally": "1.0.0",
+            "signal-exit": "3.0.2",
+            "strip-eof": "1.0.0"
+          }
+        }
+      }
+    },
+    "os-name": {
+      "version": "2.0.1",
+      "resolved": "http://registry.npm.taobao.org/os-name/download/os-name-2.0.1.tgz",
+      "integrity": "sha1-uaOGNhwXrjohc27wWZQFyajF3F4=",
+      "requires": {
+        "macos-release": "1.1.0",
+        "win-release": "1.1.1"
+      }
+    },
+    "os-tmpdir": {
+      "version": "1.0.2",
+      "resolved": "http://registry.npm.taobao.org/os-tmpdir/download/os-tmpdir-1.0.2.tgz",
+      "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ="
+    },
+    "p-finally": {
+      "version": "1.0.0",
+      "resolved": "http://registry.npm.taobao.org/p-finally/download/p-finally-1.0.0.tgz",
+      "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4="
+    },
+    "p-limit": {
+      "version": "1.2.0",
+      "resolved": "http://registry.npm.taobao.org/p-limit/download/p-limit-1.2.0.tgz",
+      "integrity": "sha1-DpK2vty1nwIsE9DxlJ3ILRWQnxw=",
+      "requires": {
+        "p-try": "1.0.0"
+      }
+    },
+    "p-locate": {
+      "version": "2.0.0",
+      "resolved": "http://registry.npm.taobao.org/p-locate/download/p-locate-2.0.0.tgz",
+      "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
+      "requires": {
+        "p-limit": "1.2.0"
+      }
+    },
+    "p-try": {
+      "version": "1.0.0",
+      "resolved": "http://registry.npm.taobao.org/p-try/download/p-try-1.0.0.tgz",
+      "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M="
+    },
+    "parse-glob": {
+      "version": "3.0.4",
+      "resolved": "http://registry.npm.taobao.org/parse-glob/download/parse-glob-3.0.4.tgz",
+      "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=",
+      "requires": {
+        "glob-base": "0.3.0",
+        "is-dotfile": "1.0.3",
+        "is-extglob": "1.0.0",
+        "is-glob": "2.0.1"
+      }
+    },
+    "parse-json": {
+      "version": "2.2.0",
+      "resolved": "http://registry.npm.taobao.org/parse-json/download/parse-json-2.2.0.tgz",
+      "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
+      "requires": {
+        "error-ex": "1.3.1"
+      }
+    },
+    "parse5": {
+      "version": "4.0.0",
+      "resolved": "http://registry.npm.taobao.org/parse5/download/parse5-4.0.0.tgz",
+      "integrity": "sha1-bXhlbj2o14tOwLkG98CO8d/j9gg=",
+      "dev": true
+    },
+    "parseurl": {
+      "version": "1.3.2",
+      "resolved": "http://registry.npm.taobao.org/parseurl/download/parseurl-1.3.2.tgz",
+      "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M="
+    },
+    "pascalcase": {
+      "version": "0.1.1",
+      "resolved": "http://registry.npm.taobao.org/pascalcase/download/pascalcase-0.1.1.tgz",
+      "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ="
+    },
+    "path-exists": {
+      "version": "3.0.0",
+      "resolved": "http://registry.npm.taobao.org/path-exists/download/path-exists-3.0.0.tgz",
+      "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU="
+    },
+    "path-is-absolute": {
+      "version": "1.0.1",
+      "resolved": "http://registry.npm.taobao.org/path-is-absolute/download/path-is-absolute-1.0.1.tgz",
+      "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18="
+    },
+    "path-key": {
+      "version": "2.0.1",
+      "resolved": "http://registry.npm.taobao.org/path-key/download/path-key-2.0.1.tgz",
+      "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A="
+    },
+    "path-parse": {
+      "version": "1.0.5",
+      "resolved": "http://registry.npm.taobao.org/path-parse/download/path-parse-1.0.5.tgz",
+      "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME="
+    },
+    "path-type": {
+      "version": "2.0.0",
+      "resolved": "http://registry.npm.taobao.org/path-type/download/path-type-2.0.0.tgz",
+      "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=",
+      "requires": {
+        "pify": "2.3.0"
+      }
+    },
+    "pegjs": {
+      "version": "0.10.0",
+      "resolved": "http://registry.npm.taobao.org/pegjs/download/pegjs-0.10.0.tgz",
+      "integrity": "sha1-z4uvrm7d/0tafvsYUmnqr0YQ3b0="
+    },
+    "performance-now": {
+      "version": "2.1.0",
+      "resolved": "http://registry.npm.taobao.org/performance-now/download/performance-now-2.1.0.tgz",
+      "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns="
+    },
+    "pify": {
+      "version": "2.3.0",
+      "resolved": "http://registry.npm.taobao.org/pify/download/pify-2.3.0.tgz",
+      "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw="
+    },
+    "pinkie": {
+      "version": "2.0.4",
+      "resolved": "http://registry.npm.taobao.org/pinkie/download/pinkie-2.0.4.tgz",
+      "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
+      "dev": true
+    },
+    "pinkie-promise": {
+      "version": "2.0.1",
+      "resolved": "http://registry.npm.taobao.org/pinkie-promise/download/pinkie-promise-2.0.1.tgz",
+      "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
+      "dev": true,
+      "requires": {
+        "pinkie": "2.0.4"
+      }
+    },
+    "pkg-dir": {
+      "version": "2.0.0",
+      "resolved": "http://registry.npm.taobao.org/pkg-dir/download/pkg-dir-2.0.0.tgz",
+      "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=",
+      "dev": true,
+      "requires": {
+        "find-up": "2.1.0"
+      }
+    },
+    "plist": {
+      "version": "1.2.0",
+      "resolved": "http://registry.npm.taobao.org/plist/download/plist-1.2.0.tgz",
+      "integrity": "sha1-CEtQk93JJQbiWfh0uNmxr7jHlZM=",
+      "requires": {
+        "base64-js": "0.0.8",
+        "util-deprecate": "1.0.2",
+        "xmlbuilder": "4.0.0",
+        "xmldom": "0.1.27"
+      },
+      "dependencies": {
+        "base64-js": {
+          "version": "0.0.8",
+          "resolved": "http://registry.npm.taobao.org/base64-js/download/base64-js-0.0.8.tgz",
+          "integrity": "sha1-EQHpVE9KdrG8OybUUsqW16NeeXg="
+        }
+      }
+    },
+    "plugin-error": {
+      "version": "0.1.2",
+      "resolved": "http://registry.npm.taobao.org/plugin-error/download/plugin-error-0.1.2.tgz",
+      "integrity": "sha1-O5uzM1zPAPQl4HQ34ZJ2ln2kes4=",
+      "requires": {
+        "ansi-cyan": "0.1.1",
+        "ansi-red": "0.1.1",
+        "arr-diff": "1.1.0",
+        "arr-union": "2.1.0",
+        "extend-shallow": "1.1.4"
+      }
+    },
+    "pn": {
+      "version": "1.1.0",
+      "resolved": "http://registry.npm.taobao.org/pn/download/pn-1.1.0.tgz",
+      "integrity": "sha1-4vTO8OIZ9GPBeas3Rj5OHs3Muvs=",
+      "dev": true
+    },
+    "posix-character-classes": {
+      "version": "0.1.1",
+      "resolved": "http://registry.npm.taobao.org/posix-character-classes/download/posix-character-classes-0.1.1.tgz",
+      "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs="
+    },
+    "prelude-ls": {
+      "version": "1.1.2",
+      "resolved": "http://registry.npm.taobao.org/prelude-ls/download/prelude-ls-1.1.2.tgz",
+      "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=",
+      "dev": true
+    },
+    "preserve": {
+      "version": "0.2.0",
+      "resolved": "http://registry.npm.taobao.org/preserve/download/preserve-0.2.0.tgz",
+      "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks="
+    },
+    "pretty-format": {
+      "version": "4.3.1",
+      "resolved": "http://registry.npm.taobao.org/pretty-format/download/pretty-format-4.3.1.tgz",
+      "integrity": "sha1-UwvlxCs8BbNkFKeipDN6qArNDo0="
+    },
+    "private": {
+      "version": "0.1.8",
+      "resolved": "http://registry.npm.taobao.org/private/download/private-0.1.8.tgz",
+      "integrity": "sha1-I4Hts2ifelPWUxkAYPz4ItLzaP8="
+    },
+    "process": {
+      "version": "0.5.2",
+      "resolved": "http://registry.npm.taobao.org/process/download/process-0.5.2.tgz",
+      "integrity": "sha1-FjjYqONML0QKkduVq5rrZ3/Bhc8="
+    },
+    "process-nextick-args": {
+      "version": "2.0.0",
+      "resolved": "http://registry.npm.taobao.org/process-nextick-args/download/process-nextick-args-2.0.0.tgz",
+      "integrity": "sha1-o31zL0JxtKsa0HDTVQjoKQeI/6o="
+    },
+    "promise": {
+      "version": "7.3.1",
+      "resolved": "http://registry.npm.taobao.org/promise/download/promise-7.3.1.tgz",
+      "integrity": "sha1-BktyYCsY+Q8pGSuLG8QY/9Hr078=",
+      "requires": {
+        "asap": "2.0.6"
+      }
+    },
+    "prop-types": {
+      "version": "15.6.1",
+      "resolved": "http://registry.npm.taobao.org/prop-types/download/prop-types-15.6.1.tgz",
+      "integrity": "sha1-NmREU1ZCVd3aORGR+zoSXL32VMo=",
+      "requires": {
+        "fbjs": "0.8.16",
+        "loose-envify": "1.3.1",
+        "object-assign": "4.1.1"
+      }
+    },
+    "pseudomap": {
+      "version": "1.0.2",
+      "resolved": "http://registry.npm.taobao.org/pseudomap/download/pseudomap-1.0.2.tgz",
+      "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM="
+    },
+    "punycode": {
+      "version": "1.4.1",
+      "resolved": "http://registry.npm.taobao.org/punycode/download/punycode-1.4.1.tgz",
+      "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4="
+    },
+    "qs": {
+      "version": "6.5.2",
+      "resolved": "http://registry.npm.taobao.org/qs/download/qs-6.5.2.tgz",
+      "integrity": "sha1-yzroBuh0BERYTvFUzo7pjUA/PjY="
+    },
+    "query-string": {
+      "version": "6.1.0",
+      "resolved": "http://registry.npm.taobao.org/query-string/download/query-string-6.1.0.tgz",
+      "integrity": "sha1-AefWn2oJQNrGepN9bGMlZHqkUyo=",
+      "requires": {
+        "decode-uri-component": "0.2.0",
+        "strict-uri-encode": "2.0.0"
+      }
+    },
+    "randomatic": {
+      "version": "1.1.7",
+      "resolved": "http://registry.npm.taobao.org/randomatic/download/randomatic-1.1.7.tgz",
+      "integrity": "sha1-x6vpzIuHwLqodrGf3oP9RkeX44w=",
+      "requires": {
+        "is-number": "3.0.0",
+        "kind-of": "4.0.0"
+      },
+      "dependencies": {
+        "is-number": {
+          "version": "3.0.0",
+          "resolved": "http://registry.npm.taobao.org/is-number/download/is-number-3.0.0.tgz",
+          "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+          "requires": {
+            "kind-of": "3.2.2"
+          },
+          "dependencies": {
+            "kind-of": {
+              "version": "3.2.2",
+              "resolved": "http://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz",
+              "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+              "requires": {
+                "is-buffer": "1.1.6"
+              }
+            }
+          }
+        },
+        "kind-of": {
+          "version": "4.0.0",
+          "resolved": "http://registry.npm.taobao.org/kind-of/download/kind-of-4.0.0.tgz",
+          "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
+          "requires": {
+            "is-buffer": "1.1.6"
+          }
+        }
+      }
+    },
+    "range-parser": {
+      "version": "1.2.0",
+      "resolved": "http://registry.npm.taobao.org/range-parser/download/range-parser-1.2.0.tgz",
+      "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4="
+    },
+    "react": {
+      "version": "16.3.2",
+      "resolved": "http://registry.npm.taobao.org/react/download/react-16.3.2.tgz",
+      "integrity": "sha1-/chCA5hTOh5Yhy9ZCRsnLOL5Hqk=",
+      "requires": {
+        "fbjs": "0.8.16",
+        "loose-envify": "1.3.1",
+        "object-assign": "4.1.1",
+        "prop-types": "15.6.1"
+      }
+    },
+    "react-clone-referenced-element": {
+      "version": "1.0.1",
+      "resolved": "http://registry.npm.taobao.org/react-clone-referenced-element/download/react-clone-referenced-element-1.0.1.tgz",
+      "integrity": "sha1-K7qMaUBMXkqUQ5hgC8xMlB+GBoI="
+    },
+    "react-deep-force-update": {
+      "version": "1.1.1",
+      "resolved": "http://registry.npm.taobao.org/react-deep-force-update/download/react-deep-force-update-1.1.1.tgz",
+      "integrity": "sha1-vNMUeAJ7ZLMznxCJIatSC0MT3Cw="
+    },
+    "react-devtools-core": {
+      "version": "3.1.0",
+      "resolved": "http://registry.npm.taobao.org/react-devtools-core/download/react-devtools-core-3.1.0.tgz",
+      "integrity": "sha1-7sLp4Obtt3dy4r/H0oailvVaJho=",
+      "requires": {
+        "shell-quote": "1.6.1",
+        "ws": "2.3.1"
+      },
+      "dependencies": {
+        "safe-buffer": {
+          "version": "5.0.1",
+          "resolved": "http://registry.npm.taobao.org/safe-buffer/download/safe-buffer-5.0.1.tgz",
+          "integrity": "sha1-0mPKVGls2KMGtcplUekt5XkY++c="
+        },
+        "ultron": {
+          "version": "1.1.1",
+          "resolved": "http://registry.npm.taobao.org/ultron/download/ultron-1.1.1.tgz",
+          "integrity": "sha1-n+FTahCmZKZSZqHjzPhf02MCvJw="
+        },
+        "ws": {
+          "version": "2.3.1",
+          "resolved": "http://registry.npm.taobao.org/ws/download/ws-2.3.1.tgz",
+          "integrity": "sha1-a5Sz5EfLajY/eF6vlK9jWejoHIA=",
+          "requires": {
+            "safe-buffer": "5.0.1",
+            "ultron": "1.1.1"
+          }
+        }
+      }
+    },
+    "react-immutable-proptypes": {
+      "version": "2.1.0",
+      "resolved": "http://registry.npm.taobao.org/react-immutable-proptypes/download/react-immutable-proptypes-2.1.0.tgz",
+      "integrity": "sha1-Aj1vObsVyXwHHp5g0A0TbqxfoLQ="
+    },
+    "react-is": {
+      "version": "16.3.2",
+      "resolved": "http://registry.npm.taobao.org/react-is/download/react-is-16.3.2.tgz",
+      "integrity": "sha1-9NPQ4vX7tqxGRQZB6y4lvwXTayI=",
+      "dev": true
+    },
+    "react-native": {
+      "version": "0.54.4",
+      "resolved": "http://registry.npm.taobao.org/react-native/download/react-native-0.54.4.tgz",
+      "integrity": "sha1-GcbFmPas8E8cAy/poYEvDGQPqLc=",
+      "requires": {
+        "absolute-path": "0.0.0",
+        "art": "0.10.2",
+        "babel-core": "6.26.3",
+        "babel-plugin-syntax-trailing-function-commas": "6.22.0",
+        "babel-plugin-transform-async-to-generator": "6.16.0",
+        "babel-plugin-transform-class-properties": "6.24.1",
+        "babel-plugin-transform-exponentiation-operator": "6.24.1",
+        "babel-plugin-transform-flow-strip-types": "6.22.0",
+        "babel-plugin-transform-object-rest-spread": "6.26.0",
+        "babel-register": "6.26.0",
+        "babel-runtime": "6.26.0",
+        "base64-js": "1.3.0",
+        "chalk": "1.1.3",
+        "commander": "2.15.1",
+        "compression": "1.7.2",
+        "connect": "3.6.6",
+        "create-react-class": "15.6.3",
+        "debug": "2.6.9",
+        "denodeify": "1.2.1",
+        "envinfo": "3.11.1",
+        "errorhandler": "1.5.0",
+        "event-target-shim": "1.1.1",
+        "fbjs": "0.8.16",
+        "fbjs-scripts": "0.8.3",
+        "fs-extra": "1.0.0",
+        "glob": "7.1.2",
+        "graceful-fs": "4.1.11",
+        "inquirer": "3.3.0",
+        "lodash": "4.17.10",
+        "metro": "0.28.0",
+        "metro-core": "0.28.0",
+        "mime": "1.6.0",
+        "minimist": "1.2.0",
+        "mkdirp": "0.5.1",
+        "morgan": "1.9.0",
+        "node-fetch": "1.7.3",
+        "node-notifier": "5.2.1",
+        "npmlog": "2.0.4",
+        "opn": "3.0.3",
+        "optimist": "0.6.1",
+        "plist": "1.2.0",
+        "pretty-format": "4.3.1",
+        "promise": "7.3.1",
+        "prop-types": "15.6.1",
+        "react-clone-referenced-element": "1.0.1",
+        "react-devtools-core": "3.1.0",
+        "react-timer-mixin": "0.13.3",
+        "regenerator-runtime": "0.11.1",
+        "rimraf": "2.6.2",
+        "semver": "5.5.0",
+        "serve-static": "1.13.2",
+        "shell-quote": "1.6.1",
+        "stacktrace-parser": "0.1.4",
+        "whatwg-fetch": "1.1.1",
+        "ws": "1.1.5",
+        "xcode": "0.9.3",
+        "xmldoc": "0.4.0",
+        "yargs": "9.0.1"
+      },
+      "dependencies": {
+        "whatwg-fetch": {
+          "version": "1.1.1",
+          "resolved": "http://registry.npm.taobao.org/whatwg-fetch/download/whatwg-fetch-1.1.1.tgz",
+          "integrity": "sha1-rDydOfMgxtzlM5lp0FTvQ90zMxk="
+        }
+      }
+    },
+    "react-native-device-info": {
+      "version": "0.21.5",
+      "resolved": "http://registry.npm.taobao.org/react-native-device-info/download/react-native-device-info-0.21.5.tgz",
+      "integrity": "sha1-mUeKLWgYLgEil/LWPyvRt4gQbe4="
+    },
+    "react-native-fabric": {
+      "version": "0.5.1",
+      "resolved": "http://registry.npm.taobao.org/react-native-fabric/download/react-native-fabric-0.5.1.tgz",
+      "integrity": "sha1-5etlxWGWNVtB8jDBStzJxLz2Ddo="
+    },
+    "react-native-progress": {
+      "version": "3.4.0",
+      "resolved": "http://registry.npm.taobao.org/react-native-progress/download/react-native-progress-3.4.0.tgz",
+      "integrity": "sha1-wALm77LwuC3WiJUQ5mnEktonGKw=",
+      "requires": {
+        "prop-types": "15.6.1"
+      }
+    },
+    "react-native-root-siblings": {
+      "version": "3.1.0",
+      "resolved": "http://registry.npm.taobao.org/react-native-root-siblings/download/react-native-root-siblings-3.1.0.tgz",
+      "integrity": "sha1-GUBn031NLIJNkjFI5Tki7mrC4G8=",
+      "requires": {
+        "react-redux": "5.0.7",
+        "static-container": "1.2.0"
+      }
+    },
+    "react-native-root-toast": {
+      "version": "3.0.1",
+      "resolved": "http://registry.npm.taobao.org/react-native-root-toast/download/react-native-root-toast-3.0.1.tgz",
+      "integrity": "sha1-rQo3xGvHKXGiKcd4TfJRRwBOVTg=",
+      "requires": {
+        "prop-types": "15.6.1",
+        "react-native-root-siblings": "3.1.0"
+      }
+    },
+    "react-native-scrollable-mixin": {
+      "version": "1.0.1",
+      "resolved": "http://registry.npm.taobao.org/react-native-scrollable-mixin/download/react-native-scrollable-mixin-1.0.1.tgz",
+      "integrity": "sha1-NKMhZ7ZCSFlBVP0NaosD8idAVI4="
+    },
+    "react-native-scrollable-tab-view": {
+      "version": "0.8.0",
+      "resolved": "http://registry.npm.taobao.org/react-native-scrollable-tab-view/download/react-native-scrollable-tab-view-0.8.0.tgz",
+      "integrity": "sha1-XLH8/OB79TCjyBq1H8UHEUTtrFw=",
+      "requires": {
+        "create-react-class": "15.6.3",
+        "prop-types": "15.6.1",
+        "react-timer-mixin": "0.13.3"
+      }
+    },
+    "react-native-simple-store": {
+      "version": "1.3.0",
+      "resolved": "http://registry.npm.taobao.org/react-native-simple-store/download/react-native-simple-store-1.3.0.tgz",
+      "integrity": "sha1-hJU6ewB7jjxQ7HaEeOmNw2Nu8JI=",
+      "requires": {
+        "lodash.merge": "4.6.0"
+      }
+    },
+    "react-native-smart-timer-enhance": {
+      "version": "1.0.3",
+      "resolved": "http://registry.npm.taobao.org/react-native-smart-timer-enhance/download/react-native-smart-timer-enhance-1.0.3.tgz",
+      "integrity": "sha1-R93Bm+WmwZGERJA5SV8lVGvNlP4="
+    },
+    "react-native-smart-toast": {
+      "version": "1.1.1",
+      "resolved": "http://registry.npm.taobao.org/react-native-smart-toast/download/react-native-smart-toast-1.1.1.tgz",
+      "integrity": "sha1-Gf3ouMyGK81y4RQ/ecQmFfH9F5Y=",
+      "requires": {
+        "react-native-smart-timer-enhance": "1.0.3"
+      }
+    },
+    "react-native-swipeable": {
+      "version": "0.6.0",
+      "resolved": "http://registry.npm.taobao.org/react-native-swipeable/download/react-native-swipeable-0.6.0.tgz",
+      "integrity": "sha1-D+VRMwAYuDx1TSf1BXCaWU9VQ3A=",
+      "requires": {
+        "prop-types": "15.6.1"
+      }
+    },
+    "react-native-swiper": {
+      "version": "1.5.13",
+      "resolved": "http://registry.npm.taobao.org/react-native-swiper/download/react-native-swiper-1.5.13.tgz",
+      "integrity": "sha1-+mlc1Kt3uanfLSv+446nJ03Qei4=",
+      "requires": {
+        "prop-types": "15.6.1"
+      }
+    },
+    "react-native-switch-pro": {
+      "version": "0.4.11",
+      "resolved": "http://registry.npm.taobao.org/react-native-switch-pro/download/react-native-switch-pro-0.4.11.tgz",
+      "integrity": "sha1-7I9cfWIX+rkmg56eWLRNujCb7Nk=",
+      "requires": {
+        "prop-types": "15.6.1"
+      }
+    },
+    "react-proxy": {
+      "version": "1.1.8",
+      "resolved": "http://registry.npm.taobao.org/react-proxy/download/react-proxy-1.1.8.tgz",
+      "integrity": "sha1-nb/Z2SdSjDqp9ETkVYw3gwq4wmo=",
+      "requires": {
+        "lodash": "4.17.10",
+        "react-deep-force-update": "1.1.1"
+      }
+    },
+    "react-redux": {
+      "version": "5.0.7",
+      "resolved": "http://registry.npm.taobao.org/react-redux/download/react-redux-5.0.7.tgz",
+      "integrity": "sha1-DcEHbZr7RnD5k/+u9EuPjBFVpMg=",
+      "requires": {
+        "hoist-non-react-statics": "2.5.0",
+        "invariant": "2.2.4",
+        "lodash": "4.17.10",
+        "lodash-es": "4.17.10",
+        "loose-envify": "1.3.1",
+        "prop-types": "15.6.1"
+      }
+    },
+    "react-static-container": {
+      "version": "1.0.2",
+      "resolved": "http://registry.npm.taobao.org/react-static-container/download/react-static-container-1.0.2.tgz",
+      "integrity": "sha1-MKT3VIhgvh1V1etMIGRbg1wr3zQ="
+    },
+    "react-test-renderer": {
+      "version": "16.3.1",
+      "resolved": "http://registry.npm.taobao.org/react-test-renderer/download/react-test-renderer-16.3.1.tgz",
+      "integrity": "sha1-2SV5NthTW9QPV/PVqE57BFL7F/I=",
+      "dev": true,
+      "requires": {
+        "fbjs": "0.8.16",
+        "object-assign": "4.1.1",
+        "prop-types": "15.6.1",
+        "react-is": "16.3.2"
+      }
+    },
+    "react-timer-mixin": {
+      "version": "0.13.3",
+      "resolved": "http://registry.npm.taobao.org/react-timer-mixin/download/react-timer-mixin-0.13.3.tgz",
+      "integrity": "sha1-Dai5+AfsB9w+hU0ILHN8ZWBbPSI="
+    },
+    "react-transform-hmr": {
+      "version": "1.0.4",
+      "resolved": "http://registry.npm.taobao.org/react-transform-hmr/download/react-transform-hmr-1.0.4.tgz",
+      "integrity": "sha1-4aQL0Krvxy6N/Xp82gmvhQZjl7s=",
+      "requires": {
+        "global": "4.3.2",
+        "react-proxy": "1.1.8"
+      }
+    },
+    "read-pkg": {
+      "version": "2.0.0",
+      "resolved": "http://registry.npm.taobao.org/read-pkg/download/read-pkg-2.0.0.tgz",
+      "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=",
+      "requires": {
+        "load-json-file": "2.0.0",
+        "normalize-package-data": "2.4.0",
+        "path-type": "2.0.0"
+      }
+    },
+    "read-pkg-up": {
+      "version": "2.0.0",
+      "resolved": "http://registry.npm.taobao.org/read-pkg-up/download/read-pkg-up-2.0.0.tgz",
+      "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=",
+      "requires": {
+        "find-up": "2.1.0",
+        "read-pkg": "2.0.0"
+      }
+    },
+    "readable-stream": {
+      "version": "2.3.6",
+      "resolved": "http://registry.npm.taobao.org/readable-stream/download/readable-stream-2.3.6.tgz",
+      "integrity": "sha1-sRwn2IuP8fvgcGQ8+UsMea4bCq8=",
+      "requires": {
+        "core-util-is": "1.0.2",
+        "inherits": "2.0.3",
+        "isarray": "1.0.0",
+        "process-nextick-args": "2.0.0",
+        "safe-buffer": "5.1.1",
+        "string_decoder": "1.1.1",
+        "util-deprecate": "1.0.2"
+      }
+    },
+    "realpath-native": {
+      "version": "1.0.0",
+      "resolved": "http://registry.npm.taobao.org/realpath-native/download/realpath-native-1.0.0.tgz",
+      "integrity": "sha1-eIVyGoO0O9Uydgnw3eyySCMF/fA=",
+      "dev": true,
+      "requires": {
+        "util.promisify": "1.0.0"
+      }
+    },
+    "redux": {
+      "version": "4.0.0",
+      "resolved": "http://registry.npm.taobao.org/redux/download/redux-4.0.0.tgz",
+      "integrity": "sha1-qmmKkrcpMV0is0oFU9fmUzVVzAM=",
+      "requires": {
+        "loose-envify": "1.3.1",
+        "symbol-observable": "1.2.0"
+      }
+    },
+    "redux-logger": {
+      "version": "3.0.6",
+      "resolved": "http://registry.npm.taobao.org/redux-logger/download/redux-logger-3.0.6.tgz",
+      "integrity": "sha1-91VZZvMJjzyIYExEnPC69XeCdL8=",
+      "requires": {
+        "deep-diff": "0.3.8"
+      }
+    },
+    "redux-thunk": {
+      "version": "2.2.0",
+      "resolved": "http://registry.npm.taobao.org/redux-thunk/download/redux-thunk-2.2.0.tgz",
+      "integrity": "sha1-5hWhbha0ehmlFXZhM9Hj6Zt4UuU="
+    },
+    "regenerate": {
+      "version": "1.3.3",
+      "resolved": "http://registry.npm.taobao.org/regenerate/download/regenerate-1.3.3.tgz",
+      "integrity": "sha1-DDNtOYBVPXVcObWGrjsgqknIK38="
+    },
+    "regenerator-runtime": {
+      "version": "0.11.1",
+      "resolved": "http://registry.npm.taobao.org/regenerator-runtime/download/regenerator-runtime-0.11.1.tgz",
+      "integrity": "sha1-vgWtf5v30i4Fb5cmzuUBf78Z4uk="
+    },
+    "regenerator-transform": {
+      "version": "0.12.3",
+      "resolved": "http://registry.npm.taobao.org/regenerator-transform/download/regenerator-transform-0.12.3.tgz",
+      "integrity": "sha1-RZrftk9qJxZKuZG3hz9Fq5aeyos=",
+      "requires": {
+        "private": "0.1.8"
+      }
+    },
+    "regex-cache": {
+      "version": "0.4.4",
+      "resolved": "http://registry.npm.taobao.org/regex-cache/download/regex-cache-0.4.4.tgz",
+      "integrity": "sha1-db3FiioUls7EihKDW8VMjVYjNt0=",
+      "requires": {
+        "is-equal-shallow": "0.1.3"
+      }
+    },
+    "regex-not": {
+      "version": "1.0.2",
+      "resolved": "http://registry.npm.taobao.org/regex-not/download/regex-not-1.0.2.tgz",
+      "integrity": "sha1-H07OJ+ALC2XgJHpoEOaoXYOldSw=",
+      "requires": {
+        "extend-shallow": "3.0.2",
+        "safe-regex": "1.1.0"
+      },
+      "dependencies": {
+        "extend-shallow": {
+          "version": "3.0.2",
+          "resolved": "http://registry.npm.taobao.org/extend-shallow/download/extend-shallow-3.0.2.tgz",
+          "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
+          "requires": {
+            "assign-symbols": "1.0.0",
+            "is-extendable": "1.0.1"
+          }
+        },
+        "is-extendable": {
+          "version": "1.0.1",
+          "resolved": "http://registry.npm.taobao.org/is-extendable/download/is-extendable-1.0.1.tgz",
+          "integrity": "sha1-p0cPnkJnM9gb2B4RVSZOOjUHyrQ=",
+          "requires": {
+            "is-plain-object": "2.0.4"
+          }
+        }
+      }
+    },
+    "regexpu-core": {
+      "version": "2.0.0",
+      "resolved": "http://registry.npm.taobao.org/regexpu-core/download/regexpu-core-2.0.0.tgz",
+      "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=",
+      "requires": {
+        "regenerate": "1.3.3",
+        "regjsgen": "0.2.0",
+        "regjsparser": "0.1.5"
+      }
+    },
+    "regjsgen": {
+      "version": "0.2.0",
+      "resolved": "http://registry.npm.taobao.org/regjsgen/download/regjsgen-0.2.0.tgz",
+      "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc="
+    },
+    "regjsparser": {
+      "version": "0.1.5",
+      "resolved": "http://registry.npm.taobao.org/regjsparser/download/regjsparser-0.1.5.tgz",
+      "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=",
+      "requires": {
+        "jsesc": "0.5.0"
+      },
+      "dependencies": {
+        "jsesc": {
+          "version": "0.5.0",
+          "resolved": "http://registry.npm.taobao.org/jsesc/download/jsesc-0.5.0.tgz",
+          "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0="
+        }
+      }
+    },
+    "remove-trailing-separator": {
+      "version": "1.1.0",
+      "resolved": "http://registry.npm.taobao.org/remove-trailing-separator/download/remove-trailing-separator-1.1.0.tgz",
+      "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8="
+    },
+    "repeat-element": {
+      "version": "1.1.2",
+      "resolved": "http://registry.npm.taobao.org/repeat-element/download/repeat-element-1.1.2.tgz",
+      "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo="
+    },
+    "repeat-string": {
+      "version": "1.6.1",
+      "resolved": "http://registry.npm.taobao.org/repeat-string/download/repeat-string-1.6.1.tgz",
+      "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc="
+    },
+    "repeating": {
+      "version": "2.0.1",
+      "resolved": "http://registry.npm.taobao.org/repeating/download/repeating-2.0.1.tgz",
+      "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=",
+      "requires": {
+        "is-finite": "1.0.2"
+      }
+    },
+    "request": {
+      "version": "2.85.0",
+      "resolved": "http://registry.npm.taobao.org/request/download/request-2.85.0.tgz",
+      "integrity": "sha1-WgNhWkfGFCCz65m326IE+DYD4fo=",
+      "requires": {
+        "aws-sign2": "0.7.0",
+        "aws4": "1.7.0",
+        "caseless": "0.12.0",
+        "combined-stream": "1.0.6",
+        "extend": "3.0.1",
+        "forever-agent": "0.6.1",
+        "form-data": "2.3.2",
+        "har-validator": "5.0.3",
+        "hawk": "6.0.2",
+        "http-signature": "1.2.0",
+        "is-typedarray": "1.0.0",
+        "isstream": "0.1.2",
+        "json-stringify-safe": "5.0.1",
+        "mime-types": "2.1.18",
+        "oauth-sign": "0.8.2",
+        "performance-now": "2.1.0",
+        "qs": "6.5.2",
+        "safe-buffer": "5.1.1",
+        "stringstream": "0.0.5",
+        "tough-cookie": "2.3.4",
+        "tunnel-agent": "0.6.0",
+        "uuid": "3.2.1"
+      }
+    },
+    "request-promise-core": {
+      "version": "1.1.1",
+      "resolved": "http://registry.npm.taobao.org/request-promise-core/download/request-promise-core-1.1.1.tgz",
+      "integrity": "sha1-Pu4AssWqgyOc+wTFcA2jb4HNCLY=",
+      "dev": true,
+      "requires": {
+        "lodash": "4.17.10"
+      }
+    },
+    "request-promise-native": {
+      "version": "1.0.5",
+      "resolved": "http://registry.npm.taobao.org/request-promise-native/download/request-promise-native-1.0.5.tgz",
+      "integrity": "sha1-UoF3D2jgyXGeUWP9P6tIIhX0/aU=",
+      "dev": true,
+      "requires": {
+        "request-promise-core": "1.1.1",
+        "stealthy-require": "1.1.1",
+        "tough-cookie": "2.3.4"
+      }
+    },
+    "require-directory": {
+      "version": "2.1.1",
+      "resolved": "http://registry.npm.taobao.org/require-directory/download/require-directory-2.1.1.tgz",
+      "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I="
+    },
+    "require-main-filename": {
+      "version": "1.0.1",
+      "resolved": "http://registry.npm.taobao.org/require-main-filename/download/require-main-filename-1.0.1.tgz",
+      "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE="
+    },
+    "resolve": {
+      "version": "1.7.1",
+      "resolved": "http://registry.npm.taobao.org/resolve/download/resolve-1.7.1.tgz",
+      "integrity": "sha1-qt1lY3T9KYruiVvAJrgpdBhnf9M=",
+      "requires": {
+        "path-parse": "1.0.5"
+      }
+    },
+    "resolve-cwd": {
+      "version": "2.0.0",
+      "resolved": "http://registry.npm.taobao.org/resolve-cwd/download/resolve-cwd-2.0.0.tgz",
+      "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=",
+      "dev": true,
+      "requires": {
+        "resolve-from": "3.0.0"
+      }
+    },
+    "resolve-from": {
+      "version": "3.0.0",
+      "resolved": "http://registry.npm.taobao.org/resolve-from/download/resolve-from-3.0.0.tgz",
+      "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=",
+      "dev": true
+    },
+    "resolve-url": {
+      "version": "0.2.1",
+      "resolved": "http://registry.npm.taobao.org/resolve-url/download/resolve-url-0.2.1.tgz",
+      "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo="
+    },
+    "restore-cursor": {
+      "version": "2.0.0",
+      "resolved": "http://registry.npm.taobao.org/restore-cursor/download/restore-cursor-2.0.0.tgz",
+      "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=",
+      "requires": {
+        "onetime": "2.0.1",
+        "signal-exit": "3.0.2"
+      }
+    },
+    "ret": {
+      "version": "0.1.15",
+      "resolved": "http://registry.npm.taobao.org/ret/download/ret-0.1.15.tgz",
+      "integrity": "sha1-uKSCXVvbH8P29Twrwz+BOIaBx7w="
+    },
+    "right-align": {
+      "version": "0.1.3",
+      "resolved": "http://registry.npm.taobao.org/right-align/download/right-align-0.1.3.tgz",
+      "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "align-text": "0.1.4"
+      }
+    },
+    "rimraf": {
+      "version": "2.6.2",
+      "resolved": "http://registry.npm.taobao.org/rimraf/download/rimraf-2.6.2.tgz",
+      "integrity": "sha1-LtgVDSShbqhlHm1u8PR8QVjOejY=",
+      "requires": {
+        "glob": "7.1.2"
+      }
+    },
+    "rsvp": {
+      "version": "3.6.2",
+      "resolved": "http://registry.npm.taobao.org/rsvp/download/rsvp-3.6.2.tgz",
+      "integrity": "sha1-LpZJFZmpbN4bUV1WdKj3qRRSkmo="
+    },
+    "run-async": {
+      "version": "2.3.0",
+      "resolved": "http://registry.npm.taobao.org/run-async/download/run-async-2.3.0.tgz",
+      "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=",
+      "requires": {
+        "is-promise": "2.1.0"
+      }
+    },
+    "rx-lite": {
+      "version": "4.0.8",
+      "resolved": "http://registry.npm.taobao.org/rx-lite/download/rx-lite-4.0.8.tgz",
+      "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ="
+    },
+    "rx-lite-aggregates": {
+      "version": "4.0.8",
+      "resolved": "http://registry.npm.taobao.org/rx-lite-aggregates/download/rx-lite-aggregates-4.0.8.tgz",
+      "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=",
+      "requires": {
+        "rx-lite": "4.0.8"
+      }
+    },
+    "safe-buffer": {
+      "version": "5.1.1",
+      "resolved": "http://registry.npm.taobao.org/safe-buffer/download/safe-buffer-5.1.1.tgz",
+      "integrity": "sha1-iTMSr2myEj3vcfV4iQAWce6yyFM="
+    },
+    "safe-regex": {
+      "version": "1.1.0",
+      "resolved": "http://registry.npm.taobao.org/safe-regex/download/safe-regex-1.1.0.tgz",
+      "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=",
+      "requires": {
+        "ret": "0.1.15"
+      }
+    },
+    "safer-buffer": {
+      "version": "2.1.2",
+      "resolved": "http://registry.npm.taobao.org/safer-buffer/download/safer-buffer-2.1.2.tgz",
+      "integrity": "sha1-RPoWGwGHuVSd2Eu5GAL5vYOFzWo="
+    },
+    "sane": {
+      "version": "2.5.2",
+      "resolved": "http://registry.npm.taobao.org/sane/download/sane-2.5.2.tgz",
+      "integrity": "sha1-tNwYYcIbQn6SlQej51HiosuKs/o=",
+      "requires": {
+        "anymatch": "2.0.0",
+        "capture-exit": "1.2.0",
+        "exec-sh": "0.2.1",
+        "fb-watchman": "2.0.0",
+        "fsevents": "1.2.3",
+        "micromatch": "3.1.10",
+        "minimist": "1.2.0",
+        "walker": "1.0.7",
+        "watch": "0.18.0"
+      },
+      "dependencies": {
+        "arr-diff": {
+          "version": "4.0.0",
+          "resolved": "http://registry.npm.taobao.org/arr-diff/download/arr-diff-4.0.0.tgz",
+          "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA="
+        },
+        "array-unique": {
+          "version": "0.3.2",
+          "resolved": "http://registry.npm.taobao.org/array-unique/download/array-unique-0.3.2.tgz",
+          "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg="
+        },
+        "braces": {
+          "version": "2.3.2",
+          "resolved": "http://registry.npm.taobao.org/braces/download/braces-2.3.2.tgz",
+          "integrity": "sha1-WXn9PxTNUxVl5fot8av/8d+u5yk=",
+          "requires": {
+            "arr-flatten": "1.1.0",
+            "array-unique": "0.3.2",
+            "extend-shallow": "2.0.1",
+            "fill-range": "4.0.0",
+            "isobject": "3.0.1",
+            "repeat-element": "1.1.2",
+            "snapdragon": "0.8.2",
+            "snapdragon-node": "2.1.1",
+            "split-string": "3.1.0",
+            "to-regex": "3.0.2"
+          },
+          "dependencies": {
+            "extend-shallow": {
+              "version": "2.0.1",
+              "resolved": "http://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz",
+              "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+              "requires": {
+                "is-extendable": "0.1.1"
+              }
+            }
+          }
+        },
+        "expand-brackets": {
+          "version": "2.1.4",
+          "resolved": "http://registry.npm.taobao.org/expand-brackets/download/expand-brackets-2.1.4.tgz",
+          "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
+          "requires": {
+            "debug": "2.6.9",
+            "define-property": "0.2.5",
+            "extend-shallow": "2.0.1",
+            "posix-character-classes": "0.1.1",
+            "regex-not": "1.0.2",
+            "snapdragon": "0.8.2",
+            "to-regex": "3.0.2"
+          },
+          "dependencies": {
+            "define-property": {
+              "version": "0.2.5",
+              "resolved": "http://registry.npm.taobao.org/define-property/download/define-property-0.2.5.tgz",
+              "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+              "requires": {
+                "is-descriptor": "0.1.6"
+              }
+            },
+            "extend-shallow": {
+              "version": "2.0.1",
+              "resolved": "http://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz",
+              "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+              "requires": {
+                "is-extendable": "0.1.1"
+              }
+            },
+            "is-accessor-descriptor": {
+              "version": "0.1.6",
+              "resolved": "http://registry.npm.taobao.org/is-accessor-descriptor/download/is-accessor-descriptor-0.1.6.tgz",
+              "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
+              "requires": {
+                "kind-of": "3.2.2"
+              },
+              "dependencies": {
+                "kind-of": {
+                  "version": "3.2.2",
+                  "resolved": "http://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz",
+                  "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+                  "requires": {
+                    "is-buffer": "1.1.6"
+                  }
+                }
+              }
+            },
+            "is-data-descriptor": {
+              "version": "0.1.4",
+              "resolved": "http://registry.npm.taobao.org/is-data-descriptor/download/is-data-descriptor-0.1.4.tgz",
+              "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
+              "requires": {
+                "kind-of": "3.2.2"
+              },
+              "dependencies": {
+                "kind-of": {
+                  "version": "3.2.2",
+                  "resolved": "http://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz",
+                  "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+                  "requires": {
+                    "is-buffer": "1.1.6"
+                  }
+                }
+              }
+            },
+            "is-descriptor": {
+              "version": "0.1.6",
+              "resolved": "http://registry.npm.taobao.org/is-descriptor/download/is-descriptor-0.1.6.tgz",
+              "integrity": "sha1-Nm2CQN3kh8pRgjsaufB6EKeCUco=",
+              "requires": {
+                "is-accessor-descriptor": "0.1.6",
+                "is-data-descriptor": "0.1.4",
+                "kind-of": "5.1.0"
+              }
+            },
+            "kind-of": {
+              "version": "5.1.0",
+              "resolved": "http://registry.npm.taobao.org/kind-of/download/kind-of-5.1.0.tgz",
+              "integrity": "sha1-cpyR4thXt6QZofmqZWhcTDP1hF0="
+            }
+          }
+        },
+        "extend-shallow": {
+          "version": "3.0.2",
+          "resolved": "http://registry.npm.taobao.org/extend-shallow/download/extend-shallow-3.0.2.tgz",
+          "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
+          "requires": {
+            "assign-symbols": "1.0.0",
+            "is-extendable": "1.0.1"
+          },
+          "dependencies": {
+            "is-extendable": {
+              "version": "1.0.1",
+              "resolved": "http://registry.npm.taobao.org/is-extendable/download/is-extendable-1.0.1.tgz",
+              "integrity": "sha1-p0cPnkJnM9gb2B4RVSZOOjUHyrQ=",
+              "requires": {
+                "is-plain-object": "2.0.4"
+              }
+            }
+          }
+        },
+        "extglob": {
+          "version": "2.0.4",
+          "resolved": "http://registry.npm.taobao.org/extglob/download/extglob-2.0.4.tgz",
+          "integrity": "sha1-rQD+TcYSqSMuhxhxHcXLWrAoVUM=",
+          "requires": {
+            "array-unique": "0.3.2",
+            "define-property": "1.0.0",
+            "expand-brackets": "2.1.4",
+            "extend-shallow": "2.0.1",
+            "fragment-cache": "0.2.1",
+            "regex-not": "1.0.2",
+            "snapdragon": "0.8.2",
+            "to-regex": "3.0.2"
+          },
+          "dependencies": {
+            "define-property": {
+              "version": "1.0.0",
+              "resolved": "http://registry.npm.taobao.org/define-property/download/define-property-1.0.0.tgz",
+              "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+              "requires": {
+                "is-descriptor": "1.0.2"
+              }
+            },
+            "extend-shallow": {
+              "version": "2.0.1",
+              "resolved": "http://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz",
+              "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+              "requires": {
+                "is-extendable": "0.1.1"
+              }
+            }
+          }
+        },
+        "fill-range": {
+          "version": "4.0.0",
+          "resolved": "http://registry.npm.taobao.org/fill-range/download/fill-range-4.0.0.tgz",
+          "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
+          "requires": {
+            "extend-shallow": "2.0.1",
+            "is-number": "3.0.0",
+            "repeat-string": "1.6.1",
+            "to-regex-range": "2.1.1"
+          },
+          "dependencies": {
+            "extend-shallow": {
+              "version": "2.0.1",
+              "resolved": "http://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz",
+              "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+              "requires": {
+                "is-extendable": "0.1.1"
+              }
+            }
+          }
+        },
+        "is-accessor-descriptor": {
+          "version": "1.0.0",
+          "resolved": "http://registry.npm.taobao.org/is-accessor-descriptor/download/is-accessor-descriptor-1.0.0.tgz",
+          "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=",
+          "requires": {
+            "kind-of": "6.0.2"
+          }
+        },
+        "is-data-descriptor": {
+          "version": "1.0.0",
+          "resolved": "http://registry.npm.taobao.org/is-data-descriptor/download/is-data-descriptor-1.0.0.tgz",
+          "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=",
+          "requires": {
+            "kind-of": "6.0.2"
+          }
+        },
+        "is-descriptor": {
+          "version": "1.0.2",
+          "resolved": "http://registry.npm.taobao.org/is-descriptor/download/is-descriptor-1.0.2.tgz",
+          "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=",
+          "requires": {
+            "is-accessor-descriptor": "1.0.0",
+            "is-data-descriptor": "1.0.0",
+            "kind-of": "6.0.2"
+          }
+        },
+        "is-number": {
+          "version": "3.0.0",
+          "resolved": "http://registry.npm.taobao.org/is-number/download/is-number-3.0.0.tgz",
+          "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+          "requires": {
+            "kind-of": "3.2.2"
+          },
+          "dependencies": {
+            "kind-of": {
+              "version": "3.2.2",
+              "resolved": "http://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz",
+              "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+              "requires": {
+                "is-buffer": "1.1.6"
+              }
+            }
+          }
+        },
+        "isobject": {
+          "version": "3.0.1",
+          "resolved": "http://registry.npm.taobao.org/isobject/download/isobject-3.0.1.tgz",
+          "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8="
+        },
+        "kind-of": {
+          "version": "6.0.2",
+          "resolved": "http://registry.npm.taobao.org/kind-of/download/kind-of-6.0.2.tgz",
+          "integrity": "sha1-ARRrNqYhjmTljzqNZt5df8b20FE="
+        },
+        "micromatch": {
+          "version": "3.1.10",
+          "resolved": "http://registry.npm.taobao.org/micromatch/download/micromatch-3.1.10.tgz",
+          "integrity": "sha1-cIWbyVyYQJUvNZoGij/En57PrCM=",
+          "requires": {
+            "arr-diff": "4.0.0",
+            "array-unique": "0.3.2",
+            "braces": "2.3.2",
+            "define-property": "2.0.2",
+            "extend-shallow": "3.0.2",
+            "extglob": "2.0.4",
+            "fragment-cache": "0.2.1",
+            "kind-of": "6.0.2",
+            "nanomatch": "1.2.9",
+            "object.pick": "1.3.0",
+            "regex-not": "1.0.2",
+            "snapdragon": "0.8.2",
+            "to-regex": "3.0.2"
+          }
+        }
+      }
+    },
+    "sax": {
+      "version": "1.1.6",
+      "resolved": "http://registry.npm.taobao.org/sax/download/sax-1.1.6.tgz",
+      "integrity": "sha1-XWFr6KXmB9VOEUr65Vt+ry/MMkA="
+    },
+    "semver": {
+      "version": "5.5.0",
+      "resolved": "http://registry.npm.taobao.org/semver/download/semver-5.5.0.tgz",
+      "integrity": "sha1-3Eu8emyp2Rbe5dQ1FvAJK1j3uKs="
+    },
+    "send": {
+      "version": "0.16.2",
+      "resolved": "http://registry.npm.taobao.org/send/download/send-0.16.2.tgz",
+      "integrity": "sha1-bsyh4PjBVtFBWXVZhI32RzCmu8E=",
+      "requires": {
+        "debug": "2.6.9",
+        "depd": "1.1.2",
+        "destroy": "1.0.4",
+        "encodeurl": "1.0.2",
+        "escape-html": "1.0.3",
+        "etag": "1.8.1",
+        "fresh": "0.5.2",
+        "http-errors": "1.6.3",
+        "mime": "1.4.1",
+        "ms": "2.0.0",
+        "on-finished": "2.3.0",
+        "range-parser": "1.2.0",
+        "statuses": "1.4.0"
+      },
+      "dependencies": {
+        "mime": {
+          "version": "1.4.1",
+          "resolved": "http://registry.npm.taobao.org/mime/download/mime-1.4.1.tgz",
+          "integrity": "sha1-Eh+evEnjdm8xGnbh+hyAA8SwOqY="
+        },
+        "statuses": {
+          "version": "1.4.0",
+          "resolved": "http://registry.npm.taobao.org/statuses/download/statuses-1.4.0.tgz",
+          "integrity": "sha1-u3PURtonlhBu/MG2AaJT1sRr0Ic="
+        }
+      }
+    },
+    "serialize-error": {
+      "version": "2.1.0",
+      "resolved": "http://registry.npm.taobao.org/serialize-error/download/serialize-error-2.1.0.tgz",
+      "integrity": "sha1-ULZ51WNc34Rme9yOWa9OW4HV9go="
+    },
+    "serve-static": {
+      "version": "1.13.2",
+      "resolved": "http://registry.npm.taobao.org/serve-static/download/serve-static-1.13.2.tgz",
+      "integrity": "sha1-CV6Ecv1bRiN9tQzkhqQ/S4bGzsE=",
+      "requires": {
+        "encodeurl": "1.0.2",
+        "escape-html": "1.0.3",
+        "parseurl": "1.3.2",
+        "send": "0.16.2"
+      }
+    },
+    "set-blocking": {
+      "version": "2.0.0",
+      "resolved": "http://registry.npm.taobao.org/set-blocking/download/set-blocking-2.0.0.tgz",
+      "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc="
+    },
+    "set-value": {
+      "version": "2.0.0",
+      "resolved": "http://registry.npm.taobao.org/set-value/download/set-value-2.0.0.tgz",
+      "integrity": "sha1-ca5KiPD+77v1LR6mBPP7MV67YnQ=",
+      "requires": {
+        "extend-shallow": "2.0.1",
+        "is-extendable": "0.1.1",
+        "is-plain-object": "2.0.4",
+        "split-string": "3.1.0"
+      },
+      "dependencies": {
+        "extend-shallow": {
+          "version": "2.0.1",
+          "resolved": "http://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz",
+          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+          "requires": {
+            "is-extendable": "0.1.1"
+          }
+        }
+      }
+    },
+    "setimmediate": {
+      "version": "1.0.5",
+      "resolved": "http://registry.npm.taobao.org/setimmediate/download/setimmediate-1.0.5.tgz",
+      "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU="
+    },
+    "setprototypeof": {
+      "version": "1.1.0",
+      "resolved": "http://registry.npm.taobao.org/setprototypeof/download/setprototypeof-1.1.0.tgz",
+      "integrity": "sha1-0L2FU2iHtv58DYGMuWLZ2RxU5lY="
+    },
+    "shebang-command": {
+      "version": "1.2.0",
+      "resolved": "http://registry.npm.taobao.org/shebang-command/download/shebang-command-1.2.0.tgz",
+      "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
+      "requires": {
+        "shebang-regex": "1.0.0"
+      }
+    },
+    "shebang-regex": {
+      "version": "1.0.0",
+      "resolved": "http://registry.npm.taobao.org/shebang-regex/download/shebang-regex-1.0.0.tgz",
+      "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM="
+    },
+    "shell-quote": {
+      "version": "1.6.1",
+      "resolved": "http://registry.npm.taobao.org/shell-quote/download/shell-quote-1.6.1.tgz",
+      "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=",
+      "requires": {
+        "array-filter": "0.0.1",
+        "array-map": "0.0.0",
+        "array-reduce": "0.0.0",
+        "jsonify": "0.0.0"
+      }
+    },
+    "shellwords": {
+      "version": "0.1.1",
+      "resolved": "http://registry.npm.taobao.org/shellwords/download/shellwords-0.1.1.tgz",
+      "integrity": "sha1-1rkYHBpI05cyTISHHvvPxz/AZUs="
+    },
+    "signal-exit": {
+      "version": "3.0.2",
+      "resolved": "http://registry.npm.taobao.org/signal-exit/download/signal-exit-3.0.2.tgz",
+      "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0="
+    },
+    "simple-plist": {
+      "version": "0.2.1",
+      "resolved": "http://registry.npm.taobao.org/simple-plist/download/simple-plist-0.2.1.tgz",
+      "integrity": "sha1-cXZts1IyaSjPOoByQrp2IyJjZyM=",
+      "requires": {
+        "bplist-creator": "0.0.7",
+        "bplist-parser": "0.1.1",
+        "plist": "2.0.1"
+      },
+      "dependencies": {
+        "base64-js": {
+          "version": "1.1.2",
+          "resolved": "http://registry.npm.taobao.org/base64-js/download/base64-js-1.1.2.tgz",
+          "integrity": "sha1-1kAMrBxMZgl22Q0HoENR2JOV9eg="
+        },
+        "plist": {
+          "version": "2.0.1",
+          "resolved": "http://registry.npm.taobao.org/plist/download/plist-2.0.1.tgz",
+          "integrity": "sha1-CjLKlIGxw2TpLhjcVch23p0B2os=",
+          "requires": {
+            "base64-js": "1.1.2",
+            "xmlbuilder": "8.2.2",
+            "xmldom": "0.1.27"
+          }
+        },
+        "xmlbuilder": {
+          "version": "8.2.2",
+          "resolved": "http://registry.npm.taobao.org/xmlbuilder/download/xmlbuilder-8.2.2.tgz",
+          "integrity": "sha1-aSSGc0ELS6QuGmE2VR0pIjNap3M="
+        }
+      }
+    },
+    "slash": {
+      "version": "1.0.0",
+      "resolved": "http://registry.npm.taobao.org/slash/download/slash-1.0.0.tgz",
+      "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU="
+    },
+    "slide": {
+      "version": "1.1.6",
+      "resolved": "http://registry.npm.taobao.org/slide/download/slide-1.1.6.tgz",
+      "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc="
+    },
+    "snapdragon": {
+      "version": "0.8.2",
+      "resolved": "http://registry.npm.taobao.org/snapdragon/download/snapdragon-0.8.2.tgz",
+      "integrity": "sha1-ZJIufFZbDhQgS6GqfWlkJ40lGC0=",
+      "requires": {
+        "base": "0.11.2",
+        "debug": "2.6.9",
+        "define-property": "0.2.5",
+        "extend-shallow": "2.0.1",
+        "map-cache": "0.2.2",
+        "source-map": "0.5.7",
+        "source-map-resolve": "0.5.1",
+        "use": "3.1.0"
+      },
+      "dependencies": {
+        "define-property": {
+          "version": "0.2.5",
+          "resolved": "http://registry.npm.taobao.org/define-property/download/define-property-0.2.5.tgz",
+          "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+          "requires": {
+            "is-descriptor": "0.1.6"
+          }
+        },
+        "extend-shallow": {
+          "version": "2.0.1",
+          "resolved": "http://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz",
+          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+          "requires": {
+            "is-extendable": "0.1.1"
+          }
+        }
+      }
+    },
+    "snapdragon-node": {
+      "version": "2.1.1",
+      "resolved": "http://registry.npm.taobao.org/snapdragon-node/download/snapdragon-node-2.1.1.tgz",
+      "integrity": "sha1-bBdfhv8UvbByRWPo88GwIaKGhTs=",
+      "requires": {
+        "define-property": "1.0.0",
+        "isobject": "3.0.1",
+        "snapdragon-util": "3.0.1"
+      },
+      "dependencies": {
+        "define-property": {
+          "version": "1.0.0",
+          "resolved": "http://registry.npm.taobao.org/define-property/download/define-property-1.0.0.tgz",
+          "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+          "requires": {
+            "is-descriptor": "1.0.2"
+          }
+        },
+        "is-accessor-descriptor": {
+          "version": "1.0.0",
+          "resolved": "http://registry.npm.taobao.org/is-accessor-descriptor/download/is-accessor-descriptor-1.0.0.tgz",
+          "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=",
+          "requires": {
+            "kind-of": "6.0.2"
+          }
+        },
+        "is-data-descriptor": {
+          "version": "1.0.0",
+          "resolved": "http://registry.npm.taobao.org/is-data-descriptor/download/is-data-descriptor-1.0.0.tgz",
+          "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=",
+          "requires": {
+            "kind-of": "6.0.2"
+          }
+        },
+        "is-descriptor": {
+          "version": "1.0.2",
+          "resolved": "http://registry.npm.taobao.org/is-descriptor/download/is-descriptor-1.0.2.tgz",
+          "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=",
+          "requires": {
+            "is-accessor-descriptor": "1.0.0",
+            "is-data-descriptor": "1.0.0",
+            "kind-of": "6.0.2"
+          }
+        },
+        "isobject": {
+          "version": "3.0.1",
+          "resolved": "http://registry.npm.taobao.org/isobject/download/isobject-3.0.1.tgz",
+          "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8="
+        },
+        "kind-of": {
+          "version": "6.0.2",
+          "resolved": "http://registry.npm.taobao.org/kind-of/download/kind-of-6.0.2.tgz",
+          "integrity": "sha1-ARRrNqYhjmTljzqNZt5df8b20FE="
+        }
+      }
+    },
+    "snapdragon-util": {
+      "version": "3.0.1",
+      "resolved": "http://registry.npm.taobao.org/snapdragon-util/download/snapdragon-util-3.0.1.tgz",
+      "integrity": "sha1-+VZHlIbyrNeXAGk/b3uAXkWrVuI=",
+      "requires": {
+        "kind-of": "3.2.2"
+      },
+      "dependencies": {
+        "kind-of": {
+          "version": "3.2.2",
+          "resolved": "http://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz",
+          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+          "requires": {
+            "is-buffer": "1.1.6"
+          }
+        }
+      }
+    },
+    "sntp": {
+      "version": "2.1.0",
+      "resolved": "http://registry.npm.taobao.org/sntp/download/sntp-2.1.0.tgz",
+      "integrity": "sha1-LGzsFP7cIiJznK+bXD2F0cxaLMg=",
+      "requires": {
+        "hoek": "4.2.1"
+      }
+    },
+    "source-map": {
+      "version": "0.5.7",
+      "resolved": "http://registry.npm.taobao.org/source-map/download/source-map-0.5.7.tgz",
+      "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w="
+    },
+    "source-map-resolve": {
+      "version": "0.5.1",
+      "resolved": "http://registry.npm.taobao.org/source-map-resolve/download/source-map-resolve-0.5.1.tgz",
+      "integrity": "sha1-etD1k/IoFZjoVN+A8ZquS5LXoRo=",
+      "requires": {
+        "atob": "2.1.1",
+        "decode-uri-component": "0.2.0",
+        "resolve-url": "0.2.1",
+        "source-map-url": "0.4.0",
+        "urix": "0.1.0"
+      }
+    },
+    "source-map-support": {
+      "version": "0.4.18",
+      "resolved": "http://registry.npm.taobao.org/source-map-support/download/source-map-support-0.4.18.tgz",
+      "integrity": "sha1-Aoam3ovkJkEzhZTpfM6nXwosWF8=",
+      "requires": {
+        "source-map": "0.5.7"
+      }
+    },
+    "source-map-url": {
+      "version": "0.4.0",
+      "resolved": "http://registry.npm.taobao.org/source-map-url/download/source-map-url-0.4.0.tgz",
+      "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM="
+    },
+    "spdx-correct": {
+      "version": "3.0.0",
+      "resolved": "http://registry.npm.taobao.org/spdx-correct/download/spdx-correct-3.0.0.tgz",
+      "integrity": "sha1-BaW01xU6GVvJLDxCW2nzsqlSTII=",
+      "requires": {
+        "spdx-expression-parse": "3.0.0",
+        "spdx-license-ids": "3.0.0"
+      }
+    },
+    "spdx-exceptions": {
+      "version": "2.1.0",
+      "resolved": "http://registry.npm.taobao.org/spdx-exceptions/download/spdx-exceptions-2.1.0.tgz",
+      "integrity": "sha1-LHrmEFbHFKW5ubKyr30xHvXHj+k="
+    },
+    "spdx-expression-parse": {
+      "version": "3.0.0",
+      "resolved": "http://registry.npm.taobao.org/spdx-expression-parse/download/spdx-expression-parse-3.0.0.tgz",
+      "integrity": "sha1-meEZt6XaAOBUkcn6M4t5BII7QdA=",
+      "requires": {
+        "spdx-exceptions": "2.1.0",
+        "spdx-license-ids": "3.0.0"
+      }
+    },
+    "spdx-license-ids": {
+      "version": "3.0.0",
+      "resolved": "http://registry.npm.taobao.org/spdx-license-ids/download/spdx-license-ids-3.0.0.tgz",
+      "integrity": "sha1-enzShHDMbToc/m1miG9rxDDTrIc="
+    },
+    "split-string": {
+      "version": "3.1.0",
+      "resolved": "http://registry.npm.taobao.org/split-string/download/split-string-3.1.0.tgz",
+      "integrity": "sha1-fLCd2jqGWFcFxks5pkZgOGguj+I=",
+      "requires": {
+        "extend-shallow": "3.0.2"
+      },
+      "dependencies": {
+        "extend-shallow": {
+          "version": "3.0.2",
+          "resolved": "http://registry.npm.taobao.org/extend-shallow/download/extend-shallow-3.0.2.tgz",
+          "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
+          "requires": {
+            "assign-symbols": "1.0.0",
+            "is-extendable": "1.0.1"
+          }
+        },
+        "is-extendable": {
+          "version": "1.0.1",
+          "resolved": "http://registry.npm.taobao.org/is-extendable/download/is-extendable-1.0.1.tgz",
+          "integrity": "sha1-p0cPnkJnM9gb2B4RVSZOOjUHyrQ=",
+          "requires": {
+            "is-plain-object": "2.0.4"
+          }
+        }
+      }
+    },
+    "sprintf-js": {
+      "version": "1.0.3",
+      "resolved": "http://registry.npm.taobao.org/sprintf-js/download/sprintf-js-1.0.3.tgz",
+      "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
+      "dev": true
+    },
+    "sshpk": {
+      "version": "1.14.1",
+      "resolved": "http://registry.npm.taobao.org/sshpk/download/sshpk-1.14.1.tgz",
+      "integrity": "sha1-Ew9Zde3a2WPx1W+SuaxsUfqfg+s=",
+      "requires": {
+        "asn1": "0.2.3",
+        "assert-plus": "1.0.0",
+        "bcrypt-pbkdf": "1.0.1",
+        "dashdash": "1.14.1",
+        "ecc-jsbn": "0.1.1",
+        "getpass": "0.1.7",
+        "jsbn": "0.1.1",
+        "tweetnacl": "0.14.5"
+      }
+    },
+    "stack-generator": {
+      "version": "2.0.2",
+      "resolved": "http://registry.npm.taobao.org/stack-generator/download/stack-generator-2.0.2.tgz",
+      "integrity": "sha1-PBPZUqWWq5MY/sBmnQod+Lhxdsc=",
+      "requires": {
+        "stackframe": "1.0.4"
+      }
+    },
+    "stack-utils": {
+      "version": "1.0.1",
+      "resolved": "http://registry.npm.taobao.org/stack-utils/download/stack-utils-1.0.1.tgz",
+      "integrity": "sha1-1PM6tU6OOHeLDKXP07OvsS22hiA=",
+      "dev": true
+    },
+    "stackframe": {
+      "version": "1.0.4",
+      "resolved": "http://registry.npm.taobao.org/stackframe/download/stackframe-1.0.4.tgz",
+      "integrity": "sha1-NXskqZL5Qny6a1RdlqFO0svKGHs="
+    },
+    "stacktrace-gps": {
+      "version": "3.0.2",
+      "resolved": "http://registry.npm.taobao.org/stacktrace-gps/download/stacktrace-gps-3.0.2.tgz",
+      "integrity": "sha1-M/i6pEZzI6sr0YFu+ieZQrpDHMw=",
+      "requires": {
+        "source-map": "0.5.6",
+        "stackframe": "1.0.4"
+      },
+      "dependencies": {
+        "source-map": {
+          "version": "0.5.6",
+          "resolved": "http://registry.npm.taobao.org/source-map/download/source-map-0.5.6.tgz",
+          "integrity": "sha1-dc449SvwczxafwwRjYEzSiu19BI="
+        }
+      }
+    },
+    "stacktrace-js": {
+      "version": "2.0.0",
+      "resolved": "http://registry.npm.taobao.org/stacktrace-js/download/stacktrace-js-2.0.0.tgz",
+      "integrity": "sha1-d2ymRqlbxsayuQd2U2p/xyxt21g=",
+      "requires": {
+        "error-stack-parser": "2.0.1",
+        "stack-generator": "2.0.2",
+        "stacktrace-gps": "3.0.2"
+      }
+    },
+    "stacktrace-parser": {
+      "version": "0.1.4",
+      "resolved": "http://registry.npm.taobao.org/stacktrace-parser/download/stacktrace-parser-0.1.4.tgz",
+      "integrity": "sha1-ATl5IuX2Ls8whFUiyVxP4dJefU4="
+    },
+    "static-container": {
+      "version": "1.2.0",
+      "resolved": "http://registry.npm.taobao.org/static-container/download/static-container-1.2.0.tgz",
+      "integrity": "sha1-HG6SuGnaR9Mqvkf0X1C/OWYdnC8="
+    },
+    "static-extend": {
+      "version": "0.1.2",
+      "resolved": "http://registry.npm.taobao.org/static-extend/download/static-extend-0.1.2.tgz",
+      "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=",
+      "requires": {
+        "define-property": "0.2.5",
+        "object-copy": "0.1.0"
+      },
+      "dependencies": {
+        "define-property": {
+          "version": "0.2.5",
+          "resolved": "http://registry.npm.taobao.org/define-property/download/define-property-0.2.5.tgz",
+          "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+          "requires": {
+            "is-descriptor": "0.1.6"
+          }
+        }
+      }
+    },
+    "statuses": {
+      "version": "1.3.1",
+      "resolved": "http://registry.npm.taobao.org/statuses/download/statuses-1.3.1.tgz",
+      "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4="
+    },
+    "stealthy-require": {
+      "version": "1.1.1",
+      "resolved": "http://registry.npm.taobao.org/stealthy-require/download/stealthy-require-1.1.1.tgz",
+      "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=",
+      "dev": true
+    },
+    "stream-buffers": {
+      "version": "2.2.0",
+      "resolved": "http://registry.npm.taobao.org/stream-buffers/download/stream-buffers-2.2.0.tgz",
+      "integrity": "sha1-kdX1Ew0c75bc+n9yaUUYh0HQnuQ="
+    },
+    "strict-uri-encode": {
+      "version": "2.0.0",
+      "resolved": "http://registry.npm.taobao.org/strict-uri-encode/download/strict-uri-encode-2.0.0.tgz",
+      "integrity": "sha1-ucczDHBChi9rFC3CdLvMWGbONUY="
+    },
+    "string-length": {
+      "version": "2.0.0",
+      "resolved": "http://registry.npm.taobao.org/string-length/download/string-length-2.0.0.tgz",
+      "integrity": "sha1-1A27aGo6zpYMHP/KVivyxF+DY+0=",
+      "dev": true,
+      "requires": {
+        "astral-regex": "1.0.0",
+        "strip-ansi": "4.0.0"
+      },
+      "dependencies": {
+        "ansi-regex": {
+          "version": "3.0.0",
+          "resolved": "http://registry.npm.taobao.org/ansi-regex/download/ansi-regex-3.0.0.tgz",
+          "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+          "dev": true
+        },
+        "strip-ansi": {
+          "version": "4.0.0",
+          "resolved": "http://registry.npm.taobao.org/strip-ansi/download/strip-ansi-4.0.0.tgz",
+          "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+          "dev": true,
+          "requires": {
+            "ansi-regex": "3.0.0"
+          }
+        }
+      }
+    },
+    "string-width": {
+      "version": "2.1.1",
+      "resolved": "http://registry.npm.taobao.org/string-width/download/string-width-2.1.1.tgz",
+      "integrity": "sha1-q5Pyeo3BPSjKyBXEYhQ6bZASrp4=",
+      "requires": {
+        "is-fullwidth-code-point": "2.0.0",
+        "strip-ansi": "4.0.0"
+      },
+      "dependencies": {
+        "ansi-regex": {
+          "version": "3.0.0",
+          "resolved": "http://registry.npm.taobao.org/ansi-regex/download/ansi-regex-3.0.0.tgz",
+          "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg="
+        },
+        "strip-ansi": {
+          "version": "4.0.0",
+          "resolved": "http://registry.npm.taobao.org/strip-ansi/download/strip-ansi-4.0.0.tgz",
+          "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+          "requires": {
+            "ansi-regex": "3.0.0"
+          }
+        }
+      }
+    },
+    "string_decoder": {
+      "version": "1.1.1",
+      "resolved": "http://registry.npm.taobao.org/string_decoder/download/string_decoder-1.1.1.tgz",
+      "integrity": "sha1-nPFhG6YmhdcDCunkujQUnDrwP8g=",
+      "requires": {
+        "safe-buffer": "5.1.1"
+      }
+    },
+    "stringstream": {
+      "version": "0.0.5",
+      "resolved": "http://registry.npm.taobao.org/stringstream/download/stringstream-0.0.5.tgz",
+      "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg="
+    },
+    "strip-ansi": {
+      "version": "3.0.1",
+      "resolved": "http://registry.npm.taobao.org/strip-ansi/download/strip-ansi-3.0.1.tgz",
+      "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+      "requires": {
+        "ansi-regex": "2.1.1"
+      }
+    },
+    "strip-bom": {
+      "version": "3.0.0",
+      "resolved": "http://registry.npm.taobao.org/strip-bom/download/strip-bom-3.0.0.tgz",
+      "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM="
+    },
+    "strip-eof": {
+      "version": "1.0.0",
+      "resolved": "http://registry.npm.taobao.org/strip-eof/download/strip-eof-1.0.0.tgz",
+      "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8="
+    },
+    "supports-color": {
+      "version": "2.0.0",
+      "resolved": "http://registry.npm.taobao.org/supports-color/download/supports-color-2.0.0.tgz",
+      "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc="
+    },
+    "symbol-observable": {
+      "version": "1.2.0",
+      "resolved": "http://registry.npm.taobao.org/symbol-observable/download/symbol-observable-1.2.0.tgz",
+      "integrity": "sha1-wiaIrtTqs83C3+rLtWFmBWCgCAQ="
+    },
+    "symbol-tree": {
+      "version": "3.2.2",
+      "resolved": "http://registry.npm.taobao.org/symbol-tree/download/symbol-tree-3.2.2.tgz",
+      "integrity": "sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=",
+      "dev": true
+    },
+    "temp": {
+      "version": "0.8.3",
+      "resolved": "http://registry.npm.taobao.org/temp/download/temp-0.8.3.tgz",
+      "integrity": "sha1-4Ma8TSa5AxJEEOT+2BEDAU38H1k=",
+      "requires": {
+        "os-tmpdir": "1.0.2",
+        "rimraf": "2.2.8"
+      },
+      "dependencies": {
+        "rimraf": {
+          "version": "2.2.8",
+          "resolved": "http://registry.npm.taobao.org/rimraf/download/rimraf-2.2.8.tgz",
+          "integrity": "sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI="
+        }
+      }
+    },
+    "test-exclude": {
+      "version": "4.2.1",
+      "resolved": "http://registry.npm.taobao.org/test-exclude/download/test-exclude-4.2.1.tgz",
+      "integrity": "sha1-36Ii8DSAvKaSB8pyizfXS0X3JPo=",
+      "dev": true,
+      "requires": {
+        "arrify": "1.0.1",
+        "micromatch": "3.1.10",
+        "object-assign": "4.1.1",
+        "read-pkg-up": "1.0.1",
+        "require-main-filename": "1.0.1"
+      },
+      "dependencies": {
+        "arr-diff": {
+          "version": "4.0.0",
+          "resolved": "http://registry.npm.taobao.org/arr-diff/download/arr-diff-4.0.0.tgz",
+          "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=",
+          "dev": true
+        },
+        "array-unique": {
+          "version": "0.3.2",
+          "resolved": "http://registry.npm.taobao.org/array-unique/download/array-unique-0.3.2.tgz",
+          "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=",
+          "dev": true
+        },
+        "braces": {
+          "version": "2.3.2",
+          "resolved": "http://registry.npm.taobao.org/braces/download/braces-2.3.2.tgz",
+          "integrity": "sha1-WXn9PxTNUxVl5fot8av/8d+u5yk=",
+          "dev": true,
+          "requires": {
+            "arr-flatten": "1.1.0",
+            "array-unique": "0.3.2",
+            "extend-shallow": "2.0.1",
+            "fill-range": "4.0.0",
+            "isobject": "3.0.1",
+            "repeat-element": "1.1.2",
+            "snapdragon": "0.8.2",
+            "snapdragon-node": "2.1.1",
+            "split-string": "3.1.0",
+            "to-regex": "3.0.2"
+          },
+          "dependencies": {
+            "extend-shallow": {
+              "version": "2.0.1",
+              "resolved": "http://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz",
+              "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+              "dev": true,
+              "requires": {
+                "is-extendable": "0.1.1"
+              }
+            }
+          }
+        },
+        "expand-brackets": {
+          "version": "2.1.4",
+          "resolved": "http://registry.npm.taobao.org/expand-brackets/download/expand-brackets-2.1.4.tgz",
+          "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
+          "dev": true,
+          "requires": {
+            "debug": "2.6.9",
+            "define-property": "0.2.5",
+            "extend-shallow": "2.0.1",
+            "posix-character-classes": "0.1.1",
+            "regex-not": "1.0.2",
+            "snapdragon": "0.8.2",
+            "to-regex": "3.0.2"
+          },
+          "dependencies": {
+            "define-property": {
+              "version": "0.2.5",
+              "resolved": "http://registry.npm.taobao.org/define-property/download/define-property-0.2.5.tgz",
+              "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+              "dev": true,
+              "requires": {
+                "is-descriptor": "0.1.6"
+              }
+            },
+            "extend-shallow": {
+              "version": "2.0.1",
+              "resolved": "http://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz",
+              "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+              "dev": true,
+              "requires": {
+                "is-extendable": "0.1.1"
+              }
+            },
+            "is-accessor-descriptor": {
+              "version": "0.1.6",
+              "resolved": "http://registry.npm.taobao.org/is-accessor-descriptor/download/is-accessor-descriptor-0.1.6.tgz",
+              "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
+              "dev": true,
+              "requires": {
+                "kind-of": "3.2.2"
+              },
+              "dependencies": {
+                "kind-of": {
+                  "version": "3.2.2",
+                  "resolved": "http://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz",
+                  "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+                  "dev": true,
+                  "requires": {
+                    "is-buffer": "1.1.6"
+                  }
+                }
+              }
+            },
+            "is-data-descriptor": {
+              "version": "0.1.4",
+              "resolved": "http://registry.npm.taobao.org/is-data-descriptor/download/is-data-descriptor-0.1.4.tgz",
+              "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
+              "dev": true,
+              "requires": {
+                "kind-of": "3.2.2"
+              },
+              "dependencies": {
+                "kind-of": {
+                  "version": "3.2.2",
+                  "resolved": "http://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz",
+                  "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+                  "dev": true,
+                  "requires": {
+                    "is-buffer": "1.1.6"
+                  }
+                }
+              }
+            },
+            "is-descriptor": {
+              "version": "0.1.6",
+              "resolved": "http://registry.npm.taobao.org/is-descriptor/download/is-descriptor-0.1.6.tgz",
+              "integrity": "sha1-Nm2CQN3kh8pRgjsaufB6EKeCUco=",
+              "dev": true,
+              "requires": {
+                "is-accessor-descriptor": "0.1.6",
+                "is-data-descriptor": "0.1.4",
+                "kind-of": "5.1.0"
+              }
+            },
+            "kind-of": {
+              "version": "5.1.0",
+              "resolved": "http://registry.npm.taobao.org/kind-of/download/kind-of-5.1.0.tgz",
+              "integrity": "sha1-cpyR4thXt6QZofmqZWhcTDP1hF0=",
+              "dev": true
+            }
+          }
+        },
+        "extend-shallow": {
+          "version": "3.0.2",
+          "resolved": "http://registry.npm.taobao.org/extend-shallow/download/extend-shallow-3.0.2.tgz",
+          "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
+          "dev": true,
+          "requires": {
+            "assign-symbols": "1.0.0",
+            "is-extendable": "1.0.1"
+          },
+          "dependencies": {
+            "is-extendable": {
+              "version": "1.0.1",
+              "resolved": "http://registry.npm.taobao.org/is-extendable/download/is-extendable-1.0.1.tgz",
+              "integrity": "sha1-p0cPnkJnM9gb2B4RVSZOOjUHyrQ=",
+              "dev": true,
+              "requires": {
+                "is-plain-object": "2.0.4"
+              }
+            }
+          }
+        },
+        "extglob": {
+          "version": "2.0.4",
+          "resolved": "http://registry.npm.taobao.org/extglob/download/extglob-2.0.4.tgz",
+          "integrity": "sha1-rQD+TcYSqSMuhxhxHcXLWrAoVUM=",
+          "dev": true,
+          "requires": {
+            "array-unique": "0.3.2",
+            "define-property": "1.0.0",
+            "expand-brackets": "2.1.4",
+            "extend-shallow": "2.0.1",
+            "fragment-cache": "0.2.1",
+            "regex-not": "1.0.2",
+            "snapdragon": "0.8.2",
+            "to-regex": "3.0.2"
+          },
+          "dependencies": {
+            "define-property": {
+              "version": "1.0.0",
+              "resolved": "http://registry.npm.taobao.org/define-property/download/define-property-1.0.0.tgz",
+              "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+              "dev": true,
+              "requires": {
+                "is-descriptor": "1.0.2"
+              }
+            },
+            "extend-shallow": {
+              "version": "2.0.1",
+              "resolved": "http://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz",
+              "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+              "dev": true,
+              "requires": {
+                "is-extendable": "0.1.1"
+              }
+            }
+          }
+        },
+        "fill-range": {
+          "version": "4.0.0",
+          "resolved": "http://registry.npm.taobao.org/fill-range/download/fill-range-4.0.0.tgz",
+          "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
+          "dev": true,
+          "requires": {
+            "extend-shallow": "2.0.1",
+            "is-number": "3.0.0",
+            "repeat-string": "1.6.1",
+            "to-regex-range": "2.1.1"
+          },
+          "dependencies": {
+            "extend-shallow": {
+              "version": "2.0.1",
+              "resolved": "http://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz",
+              "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+              "dev": true,
+              "requires": {
+                "is-extendable": "0.1.1"
+              }
+            }
+          }
+        },
+        "find-up": {
+          "version": "1.1.2",
+          "resolved": "http://registry.npm.taobao.org/find-up/download/find-up-1.1.2.tgz",
+          "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
+          "dev": true,
+          "requires": {
+            "path-exists": "2.1.0",
+            "pinkie-promise": "2.0.1"
+          }
+        },
+        "is-accessor-descriptor": {
+          "version": "1.0.0",
+          "resolved": "http://registry.npm.taobao.org/is-accessor-descriptor/download/is-accessor-descriptor-1.0.0.tgz",
+          "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=",
+          "dev": true,
+          "requires": {
+            "kind-of": "6.0.2"
+          }
+        },
+        "is-data-descriptor": {
+          "version": "1.0.0",
+          "resolved": "http://registry.npm.taobao.org/is-data-descriptor/download/is-data-descriptor-1.0.0.tgz",
+          "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=",
+          "dev": true,
+          "requires": {
+            "kind-of": "6.0.2"
+          }
+        },
+        "is-descriptor": {
+          "version": "1.0.2",
+          "resolved": "http://registry.npm.taobao.org/is-descriptor/download/is-descriptor-1.0.2.tgz",
+          "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=",
+          "dev": true,
+          "requires": {
+            "is-accessor-descriptor": "1.0.0",
+            "is-data-descriptor": "1.0.0",
+            "kind-of": "6.0.2"
+          }
+        },
+        "is-number": {
+          "version": "3.0.0",
+          "resolved": "http://registry.npm.taobao.org/is-number/download/is-number-3.0.0.tgz",
+          "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+          "dev": true,
+          "requires": {
+            "kind-of": "3.2.2"
+          },
+          "dependencies": {
+            "kind-of": {
+              "version": "3.2.2",
+              "resolved": "http://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz",
+              "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+              "dev": true,
+              "requires": {
+                "is-buffer": "1.1.6"
+              }
+            }
+          }
+        },
+        "isobject": {
+          "version": "3.0.1",
+          "resolved": "http://registry.npm.taobao.org/isobject/download/isobject-3.0.1.tgz",
+          "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+          "dev": true
+        },
+        "kind-of": {
+          "version": "6.0.2",
+          "resolved": "http://registry.npm.taobao.org/kind-of/download/kind-of-6.0.2.tgz",
+          "integrity": "sha1-ARRrNqYhjmTljzqNZt5df8b20FE=",
+          "dev": true
+        },
+        "load-json-file": {
+          "version": "1.1.0",
+          "resolved": "http://registry.npm.taobao.org/load-json-file/download/load-json-file-1.1.0.tgz",
+          "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=",
+          "dev": true,
+          "requires": {
+            "graceful-fs": "4.1.11",
+            "parse-json": "2.2.0",
+            "pify": "2.3.0",
+            "pinkie-promise": "2.0.1",
+            "strip-bom": "2.0.0"
+          }
+        },
+        "micromatch": {
+          "version": "3.1.10",
+          "resolved": "http://registry.npm.taobao.org/micromatch/download/micromatch-3.1.10.tgz",
+          "integrity": "sha1-cIWbyVyYQJUvNZoGij/En57PrCM=",
+          "dev": true,
+          "requires": {
+            "arr-diff": "4.0.0",
+            "array-unique": "0.3.2",
+            "braces": "2.3.2",
+            "define-property": "2.0.2",
+            "extend-shallow": "3.0.2",
+            "extglob": "2.0.4",
+            "fragment-cache": "0.2.1",
+            "kind-of": "6.0.2",
+            "nanomatch": "1.2.9",
+            "object.pick": "1.3.0",
+            "regex-not": "1.0.2",
+            "snapdragon": "0.8.2",
+            "to-regex": "3.0.2"
+          }
+        },
+        "path-exists": {
+          "version": "2.1.0",
+          "resolved": "http://registry.npm.taobao.org/path-exists/download/path-exists-2.1.0.tgz",
+          "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
+          "dev": true,
+          "requires": {
+            "pinkie-promise": "2.0.1"
+          }
+        },
+        "path-type": {
+          "version": "1.1.0",
+          "resolved": "http://registry.npm.taobao.org/path-type/download/path-type-1.1.0.tgz",
+          "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=",
+          "dev": true,
+          "requires": {
+            "graceful-fs": "4.1.11",
+            "pify": "2.3.0",
+            "pinkie-promise": "2.0.1"
+          }
+        },
+        "read-pkg": {
+          "version": "1.1.0",
+          "resolved": "http://registry.npm.taobao.org/read-pkg/download/read-pkg-1.1.0.tgz",
+          "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=",
+          "dev": true,
+          "requires": {
+            "load-json-file": "1.1.0",
+            "normalize-package-data": "2.4.0",
+            "path-type": "1.1.0"
+          }
+        },
+        "read-pkg-up": {
+          "version": "1.0.1",
+          "resolved": "http://registry.npm.taobao.org/read-pkg-up/download/read-pkg-up-1.0.1.tgz",
+          "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=",
+          "dev": true,
+          "requires": {
+            "find-up": "1.1.2",
+            "read-pkg": "1.1.0"
+          }
+        },
+        "strip-bom": {
+          "version": "2.0.0",
+          "resolved": "http://registry.npm.taobao.org/strip-bom/download/strip-bom-2.0.0.tgz",
+          "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
+          "dev": true,
+          "requires": {
+            "is-utf8": "0.2.1"
+          }
+        }
+      }
+    },
+    "throat": {
+      "version": "4.1.0",
+      "resolved": "http://registry.npm.taobao.org/throat/download/throat-4.1.0.tgz",
+      "integrity": "sha1-iQN8vJLFarGJJua6TLsgDhVnKmo="
+    },
+    "through": {
+      "version": "2.3.8",
+      "resolved": "http://registry.npm.taobao.org/through/download/through-2.3.8.tgz",
+      "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU="
+    },
+    "through2": {
+      "version": "2.0.3",
+      "resolved": "http://registry.npm.taobao.org/through2/download/through2-2.0.3.tgz",
+      "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=",
+      "requires": {
+        "readable-stream": "2.3.6",
+        "xtend": "4.0.1"
+      }
+    },
+    "time-stamp": {
+      "version": "1.1.0",
+      "resolved": "http://registry.npm.taobao.org/time-stamp/download/time-stamp-1.1.0.tgz",
+      "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM="
+    },
+    "timeago.js": {
+      "version": "3.0.2",
+      "resolved": "http://registry.npm.taobao.org/timeago.js/download/timeago.js-3.0.2.tgz",
+      "integrity": "sha1-MqZ+fA2IfqQspYjTquJvd95edsw=",
+      "requires": {
+        "@types/jquery": "2.0.49"
+      }
+    },
+    "tmp": {
+      "version": "0.0.33",
+      "resolved": "http://registry.npm.taobao.org/tmp/download/tmp-0.0.33.tgz",
+      "integrity": "sha1-bTQzWIl2jSGyvNoKonfO07G/rfk=",
+      "requires": {
+        "os-tmpdir": "1.0.2"
+      }
+    },
+    "tmpl": {
+      "version": "1.0.4",
+      "resolved": "http://registry.npm.taobao.org/tmpl/download/tmpl-1.0.4.tgz",
+      "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE="
+    },
+    "to-fast-properties": {
+      "version": "1.0.3",
+      "resolved": "http://registry.npm.taobao.org/to-fast-properties/download/to-fast-properties-1.0.3.tgz",
+      "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc="
+    },
+    "to-object-path": {
+      "version": "0.3.0",
+      "resolved": "http://registry.npm.taobao.org/to-object-path/download/to-object-path-0.3.0.tgz",
+      "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=",
+      "requires": {
+        "kind-of": "3.2.2"
+      },
+      "dependencies": {
+        "kind-of": {
+          "version": "3.2.2",
+          "resolved": "http://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz",
+          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+          "requires": {
+            "is-buffer": "1.1.6"
+          }
+        }
+      }
+    },
+    "to-regex": {
+      "version": "3.0.2",
+      "resolved": "http://registry.npm.taobao.org/to-regex/download/to-regex-3.0.2.tgz",
+      "integrity": "sha1-E8/dmzNlUvMLUfM6iuG0Knp1mc4=",
+      "requires": {
+        "define-property": "2.0.2",
+        "extend-shallow": "3.0.2",
+        "regex-not": "1.0.2",
+        "safe-regex": "1.1.0"
+      },
+      "dependencies": {
+        "extend-shallow": {
+          "version": "3.0.2",
+          "resolved": "http://registry.npm.taobao.org/extend-shallow/download/extend-shallow-3.0.2.tgz",
+          "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
+          "requires": {
+            "assign-symbols": "1.0.0",
+            "is-extendable": "1.0.1"
+          }
+        },
+        "is-extendable": {
+          "version": "1.0.1",
+          "resolved": "http://registry.npm.taobao.org/is-extendable/download/is-extendable-1.0.1.tgz",
+          "integrity": "sha1-p0cPnkJnM9gb2B4RVSZOOjUHyrQ=",
+          "requires": {
+            "is-plain-object": "2.0.4"
+          }
+        }
+      }
+    },
+    "to-regex-range": {
+      "version": "2.1.1",
+      "resolved": "http://registry.npm.taobao.org/to-regex-range/download/to-regex-range-2.1.1.tgz",
+      "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
+      "requires": {
+        "is-number": "3.0.0",
+        "repeat-string": "1.6.1"
+      },
+      "dependencies": {
+        "is-number": {
+          "version": "3.0.0",
+          "resolved": "http://registry.npm.taobao.org/is-number/download/is-number-3.0.0.tgz",
+          "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+          "requires": {
+            "kind-of": "3.2.2"
+          }
+        },
+        "kind-of": {
+          "version": "3.2.2",
+          "resolved": "http://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz",
+          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+          "requires": {
+            "is-buffer": "1.1.6"
+          }
+        }
+      }
+    },
+    "tough-cookie": {
+      "version": "2.3.4",
+      "resolved": "http://registry.npm.taobao.org/tough-cookie/download/tough-cookie-2.3.4.tgz",
+      "integrity": "sha1-7GDO44rGdQY//JelwYlwV47oNlU=",
+      "requires": {
+        "punycode": "1.4.1"
+      }
+    },
+    "tr46": {
+      "version": "1.0.1",
+      "resolved": "http://registry.npm.taobao.org/tr46/download/tr46-1.0.1.tgz",
+      "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=",
+      "dev": true,
+      "requires": {
+        "punycode": "2.1.0"
+      },
+      "dependencies": {
+        "punycode": {
+          "version": "2.1.0",
+          "resolved": "http://registry.npm.taobao.org/punycode/download/punycode-2.1.0.tgz",
+          "integrity": "sha1-X4Y+3Im5bbCQdLrXlHvwkFbKTn0=",
+          "dev": true
+        }
+      }
+    },
+    "trim-right": {
+      "version": "1.0.1",
+      "resolved": "http://registry.npm.taobao.org/trim-right/download/trim-right-1.0.1.tgz",
+      "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM="
+    },
+    "tunnel-agent": {
+      "version": "0.6.0",
+      "resolved": "http://registry.npm.taobao.org/tunnel-agent/download/tunnel-agent-0.6.0.tgz",
+      "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
+      "requires": {
+        "safe-buffer": "5.1.1"
+      }
+    },
+    "tweetnacl": {
+      "version": "0.14.5",
+      "resolved": "http://registry.npm.taobao.org/tweetnacl/download/tweetnacl-0.14.5.tgz",
+      "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
+      "optional": true
+    },
+    "type-check": {
+      "version": "0.3.2",
+      "resolved": "http://registry.npm.taobao.org/type-check/download/type-check-0.3.2.tgz",
+      "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
+      "dev": true,
+      "requires": {
+        "prelude-ls": "1.1.2"
+      }
+    },
+    "typedarray": {
+      "version": "0.0.6",
+      "resolved": "http://registry.npm.taobao.org/typedarray/download/typedarray-0.0.6.tgz",
+      "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c="
+    },
+    "ua-parser-js": {
+      "version": "0.7.18",
+      "resolved": "http://registry.npm.taobao.org/ua-parser-js/download/ua-parser-js-0.7.18.tgz",
+      "integrity": "sha1-p7/ZL1bt+xFwg7aeMdKqiILUse0="
+    },
+    "uglify-es": {
+      "version": "3.3.9",
+      "resolved": "http://registry.npm.taobao.org/uglify-es/download/uglify-es-3.3.9.tgz",
+      "integrity": "sha1-DBxPBwC+2NvBJM2zBNJZLKID5nc=",
+      "requires": {
+        "commander": "2.13.0",
+        "source-map": "0.6.1"
+      },
+      "dependencies": {
+        "commander": {
+          "version": "2.13.0",
+          "resolved": "http://registry.npm.taobao.org/commander/download/commander-2.13.0.tgz",
+          "integrity": "sha1-aWS8pnaF33wfFDDFhPB9dZeIW5w="
+        },
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "http://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz",
+          "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM="
+        }
+      }
+    },
+    "uglify-to-browserify": {
+      "version": "1.0.2",
+      "resolved": "http://registry.npm.taobao.org/uglify-to-browserify/download/uglify-to-browserify-1.0.2.tgz",
+      "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=",
+      "dev": true,
+      "optional": true
+    },
+    "ultron": {
+      "version": "1.0.2",
+      "resolved": "http://registry.npm.taobao.org/ultron/download/ultron-1.0.2.tgz",
+      "integrity": "sha1-rOEWq1V80Zc4ak6I9GhTeMiy5Po="
+    },
+    "union-value": {
+      "version": "1.0.0",
+      "resolved": "http://registry.npm.taobao.org/union-value/download/union-value-1.0.0.tgz",
+      "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=",
+      "requires": {
+        "arr-union": "3.1.0",
+        "get-value": "2.0.6",
+        "is-extendable": "0.1.1",
+        "set-value": "0.4.3"
+      },
+      "dependencies": {
+        "arr-union": {
+          "version": "3.1.0",
+          "resolved": "http://registry.npm.taobao.org/arr-union/download/arr-union-3.1.0.tgz",
+          "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ="
+        },
+        "extend-shallow": {
+          "version": "2.0.1",
+          "resolved": "http://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz",
+          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+          "requires": {
+            "is-extendable": "0.1.1"
+          }
+        },
+        "set-value": {
+          "version": "0.4.3",
+          "resolved": "http://registry.npm.taobao.org/set-value/download/set-value-0.4.3.tgz",
+          "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=",
+          "requires": {
+            "extend-shallow": "2.0.1",
+            "is-extendable": "0.1.1",
+            "is-plain-object": "2.0.4",
+            "to-object-path": "0.3.0"
+          }
+        }
+      }
+    },
+    "unpipe": {
+      "version": "1.0.0",
+      "resolved": "http://registry.npm.taobao.org/unpipe/download/unpipe-1.0.0.tgz",
+      "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw="
+    },
+    "unset-value": {
+      "version": "1.0.0",
+      "resolved": "http://registry.npm.taobao.org/unset-value/download/unset-value-1.0.0.tgz",
+      "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=",
+      "requires": {
+        "has-value": "0.3.1",
+        "isobject": "3.0.1"
+      },
+      "dependencies": {
+        "has-value": {
+          "version": "0.3.1",
+          "resolved": "http://registry.npm.taobao.org/has-value/download/has-value-0.3.1.tgz",
+          "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=",
+          "requires": {
+            "get-value": "2.0.6",
+            "has-values": "0.1.4",
+            "isobject": "2.1.0"
+          },
+          "dependencies": {
+            "isobject": {
+              "version": "2.1.0",
+              "resolved": "http://registry.npm.taobao.org/isobject/download/isobject-2.1.0.tgz",
+              "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
+              "requires": {
+                "isarray": "1.0.0"
+              }
+            }
+          }
+        },
+        "has-values": {
+          "version": "0.1.4",
+          "resolved": "http://registry.npm.taobao.org/has-values/download/has-values-0.1.4.tgz",
+          "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E="
+        },
+        "isobject": {
+          "version": "3.0.1",
+          "resolved": "http://registry.npm.taobao.org/isobject/download/isobject-3.0.1.tgz",
+          "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8="
+        }
+      }
+    },
+    "urix": {
+      "version": "0.1.0",
+      "resolved": "http://registry.npm.taobao.org/urix/download/urix-0.1.0.tgz",
+      "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI="
+    },
+    "use": {
+      "version": "3.1.0",
+      "resolved": "http://registry.npm.taobao.org/use/download/use-3.1.0.tgz",
+      "integrity": "sha1-FHFr8D/f79AwQK71jYtLhfOnxUQ=",
+      "requires": {
+        "kind-of": "6.0.2"
+      },
+      "dependencies": {
+        "kind-of": {
+          "version": "6.0.2",
+          "resolved": "http://registry.npm.taobao.org/kind-of/download/kind-of-6.0.2.tgz",
+          "integrity": "sha1-ARRrNqYhjmTljzqNZt5df8b20FE="
+        }
+      }
+    },
+    "util-deprecate": {
+      "version": "1.0.2",
+      "resolved": "http://registry.npm.taobao.org/util-deprecate/download/util-deprecate-1.0.2.tgz",
+      "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
+    },
+    "util.promisify": {
+      "version": "1.0.0",
+      "resolved": "http://registry.npm.taobao.org/util.promisify/download/util.promisify-1.0.0.tgz",
+      "integrity": "sha1-RA9xZaRZyaFtwUXrjnLzVocJcDA=",
+      "dev": true,
+      "requires": {
+        "define-properties": "1.1.2",
+        "object.getownpropertydescriptors": "2.0.3"
+      }
+    },
+    "utils-merge": {
+      "version": "1.0.1",
+      "resolved": "http://registry.npm.taobao.org/utils-merge/download/utils-merge-1.0.1.tgz",
+      "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM="
+    },
+    "uuid": {
+      "version": "3.2.1",
+      "resolved": "http://registry.npm.taobao.org/uuid/download/uuid-3.2.1.tgz",
+      "integrity": "sha1-EsUou51Y0LkmXZovbw/ovhf/HxQ="
+    },
+    "validate-npm-package-license": {
+      "version": "3.0.3",
+      "resolved": "http://registry.npm.taobao.org/validate-npm-package-license/download/validate-npm-package-license-3.0.3.tgz",
+      "integrity": "sha1-gWQ7y+8b3+zUYjeT3EZIlIupgzg=",
+      "requires": {
+        "spdx-correct": "3.0.0",
+        "spdx-expression-parse": "3.0.0"
+      }
+    },
+    "vary": {
+      "version": "1.1.2",
+      "resolved": "http://registry.npm.taobao.org/vary/download/vary-1.1.2.tgz",
+      "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw="
+    },
+    "verror": {
+      "version": "1.10.0",
+      "resolved": "http://registry.npm.taobao.org/verror/download/verror-1.10.0.tgz",
+      "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
+      "requires": {
+        "assert-plus": "1.0.0",
+        "core-util-is": "1.0.2",
+        "extsprintf": "1.3.0"
+      }
+    },
+    "w3c-hr-time": {
+      "version": "1.0.1",
+      "resolved": "http://registry.npm.taobao.org/w3c-hr-time/download/w3c-hr-time-1.0.1.tgz",
+      "integrity": "sha1-gqwr/2PZUOqeMYmlimViX+3xkEU=",
+      "dev": true,
+      "requires": {
+        "browser-process-hrtime": "0.1.2"
+      }
+    },
+    "walker": {
+      "version": "1.0.7",
+      "resolved": "http://registry.npm.taobao.org/walker/download/walker-1.0.7.tgz",
+      "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=",
+      "requires": {
+        "makeerror": "1.0.11"
+      }
+    },
+    "watch": {
+      "version": "0.18.0",
+      "resolved": "http://registry.npm.taobao.org/watch/download/watch-0.18.0.tgz",
+      "integrity": "sha1-KAlUdsbffJDJYxOJkMClQj60uYY=",
+      "requires": {
+        "exec-sh": "0.2.1",
+        "minimist": "1.2.0"
+      }
+    },
+    "webidl-conversions": {
+      "version": "4.0.2",
+      "resolved": "http://registry.npm.taobao.org/webidl-conversions/download/webidl-conversions-4.0.2.tgz",
+      "integrity": "sha1-qFWYCx8LazWbodXZ+zmulB+qY60=",
+      "dev": true
+    },
+    "whatwg-encoding": {
+      "version": "1.0.3",
+      "resolved": "http://registry.npm.taobao.org/whatwg-encoding/download/whatwg-encoding-1.0.3.tgz",
+      "integrity": "sha1-V8I1vIZX6RTSTho5fTyC2u4Ka6M=",
+      "dev": true,
+      "requires": {
+        "iconv-lite": "0.4.19"
+      },
+      "dependencies": {
+        "iconv-lite": {
+          "version": "0.4.19",
+          "resolved": "http://registry.npm.taobao.org/iconv-lite/download/iconv-lite-0.4.19.tgz",
+          "integrity": "sha1-90aPYBNfXl2tM5nAqBvpoWA6CCs=",
+          "dev": true
+        }
+      }
+    },
+    "whatwg-fetch": {
+      "version": "2.0.4",
+      "resolved": "http://registry.npm.taobao.org/whatwg-fetch/download/whatwg-fetch-2.0.4.tgz",
+      "integrity": "sha1-3eal3zFfnTmZGqF2IYU9cguFVm8="
+    },
+    "whatwg-mimetype": {
+      "version": "2.1.0",
+      "resolved": "http://registry.npm.taobao.org/whatwg-mimetype/download/whatwg-mimetype-2.1.0.tgz",
+      "integrity": "sha1-8PIddsu6cjYutgnb7SowzRf8x9Q=",
+      "dev": true
+    },
+    "whatwg-url": {
+      "version": "6.4.1",
+      "resolved": "http://registry.npm.taobao.org/whatwg-url/download/whatwg-url-6.4.1.tgz",
+      "integrity": "sha1-/blLRA/UrYNiAsFulzfVEfAS/Wc=",
+      "dev": true,
+      "requires": {
+        "lodash.sortby": "4.7.0",
+        "tr46": "1.0.1",
+        "webidl-conversions": "4.0.2"
+      }
+    },
+    "which": {
+      "version": "1.3.0",
+      "resolved": "http://registry.npm.taobao.org/which/download/which-1.3.0.tgz",
+      "integrity": "sha1-/wS9/AEO5UfXgL7DjhrBwnd9JTo=",
+      "requires": {
+        "isexe": "2.0.0"
+      }
+    },
+    "which-module": {
+      "version": "2.0.0",
+      "resolved": "http://registry.npm.taobao.org/which-module/download/which-module-2.0.0.tgz",
+      "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho="
+    },
+    "win-release": {
+      "version": "1.1.1",
+      "resolved": "http://registry.npm.taobao.org/win-release/download/win-release-1.1.1.tgz",
+      "integrity": "sha1-X6VeAr58qTTt/BJmVjLoSbcuUgk=",
+      "requires": {
+        "semver": "5.5.0"
+      }
+    },
+    "window-size": {
+      "version": "0.1.0",
+      "resolved": "http://registry.npm.taobao.org/window-size/download/window-size-0.1.0.tgz",
+      "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=",
+      "dev": true,
+      "optional": true
+    },
+    "wordwrap": {
+      "version": "1.0.0",
+      "resolved": "http://registry.npm.taobao.org/wordwrap/download/wordwrap-1.0.0.tgz",
+      "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus="
+    },
+    "wrap-ansi": {
+      "version": "2.1.0",
+      "resolved": "http://registry.npm.taobao.org/wrap-ansi/download/wrap-ansi-2.1.0.tgz",
+      "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=",
+      "requires": {
+        "string-width": "1.0.2",
+        "strip-ansi": "3.0.1"
+      },
+      "dependencies": {
+        "is-fullwidth-code-point": {
+          "version": "1.0.0",
+          "resolved": "http://registry.npm.taobao.org/is-fullwidth-code-point/download/is-fullwidth-code-point-1.0.0.tgz",
+          "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
+          "requires": {
+            "number-is-nan": "1.0.1"
+          }
+        },
+        "string-width": {
+          "version": "1.0.2",
+          "resolved": "http://registry.npm.taobao.org/string-width/download/string-width-1.0.2.tgz",
+          "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
+          "requires": {
+            "code-point-at": "1.1.0",
+            "is-fullwidth-code-point": "1.0.0",
+            "strip-ansi": "3.0.1"
+          }
+        }
+      }
+    },
+    "wrappy": {
+      "version": "1.0.2",
+      "resolved": "http://registry.npm.taobao.org/wrappy/download/wrappy-1.0.2.tgz",
+      "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
+    },
+    "write-file-atomic": {
+      "version": "1.3.4",
+      "resolved": "http://registry.npm.taobao.org/write-file-atomic/download/write-file-atomic-1.3.4.tgz",
+      "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=",
+      "requires": {
+        "graceful-fs": "4.1.11",
+        "imurmurhash": "0.1.4",
+        "slide": "1.1.6"
+      }
+    },
+    "ws": {
+      "version": "1.1.5",
+      "resolved": "http://registry.npm.taobao.org/ws/download/ws-1.1.5.tgz",
+      "integrity": "sha1-y9nm514J/F0skAFfIfDECHXg3VE=",
+      "requires": {
+        "options": "0.0.6",
+        "ultron": "1.0.2"
+      }
+    },
+    "xcode": {
+      "version": "0.9.3",
+      "resolved": "http://registry.npm.taobao.org/xcode/download/xcode-0.9.3.tgz",
+      "integrity": "sha1-kQqJwWrubMC0LKgFptC0z4chHPM=",
+      "requires": {
+        "pegjs": "0.10.0",
+        "simple-plist": "0.2.1",
+        "uuid": "3.0.1"
+      },
+      "dependencies": {
+        "uuid": {
+          "version": "3.0.1",
+          "resolved": "http://registry.npm.taobao.org/uuid/download/uuid-3.0.1.tgz",
+          "integrity": "sha1-ZUS7ot/ajBzxfmKaOjBeK7H+5sE="
+        }
+      }
+    },
+    "xml-name-validator": {
+      "version": "3.0.0",
+      "resolved": "http://registry.npm.taobao.org/xml-name-validator/download/xml-name-validator-3.0.0.tgz",
+      "integrity": "sha1-auc+Bt5NjG5H+fsYH3jWSK1FfGo=",
+      "dev": true
+    },
+    "xmlbuilder": {
+      "version": "4.0.0",
+      "resolved": "http://registry.npm.taobao.org/xmlbuilder/download/xmlbuilder-4.0.0.tgz",
+      "integrity": "sha1-mLj2UcowqmJANvEn0RzGbce5B6M=",
+      "requires": {
+        "lodash": "3.10.1"
+      },
+      "dependencies": {
+        "lodash": {
+          "version": "3.10.1",
+          "resolved": "http://registry.npm.taobao.org/lodash/download/lodash-3.10.1.tgz",
+          "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y="
+        }
+      }
+    },
+    "xmldoc": {
+      "version": "0.4.0",
+      "resolved": "http://registry.npm.taobao.org/xmldoc/download/xmldoc-0.4.0.tgz",
+      "integrity": "sha1-0lciS+g5PqrL+DfvIn/Y7CWzaIg=",
+      "requires": {
+        "sax": "1.1.6"
+      }
+    },
+    "xmldom": {
+      "version": "0.1.27",
+      "resolved": "http://registry.npm.taobao.org/xmldom/download/xmldom-0.1.27.tgz",
+      "integrity": "sha1-1QH5ezvbQDr4757MIFcxh6rawOk="
+    },
+    "xpipe": {
+      "version": "1.0.5",
+      "resolved": "http://registry.npm.taobao.org/xpipe/download/xpipe-1.0.5.tgz",
+      "integrity": "sha1-jdi/Rfw/f1Xw4FS4ePQ6YmFNr98="
+    },
+    "xtend": {
+      "version": "4.0.1",
+      "resolved": "http://registry.npm.taobao.org/xtend/download/xtend-4.0.1.tgz",
+      "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68="
+    },
+    "y18n": {
+      "version": "3.2.1",
+      "resolved": "http://registry.npm.taobao.org/y18n/download/y18n-3.2.1.tgz",
+      "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE="
+    },
+    "yallist": {
+      "version": "2.1.2",
+      "resolved": "http://registry.npm.taobao.org/yallist/download/yallist-2.1.2.tgz",
+      "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI="
+    },
+    "yargs": {
+      "version": "9.0.1",
+      "resolved": "http://registry.npm.taobao.org/yargs/download/yargs-9.0.1.tgz",
+      "integrity": "sha1-UqzCP+7Kw0BCB47njAwAf1CF20w=",
+      "requires": {
+        "camelcase": "4.1.0",
+        "cliui": "3.2.0",
+        "decamelize": "1.2.0",
+        "get-caller-file": "1.0.2",
+        "os-locale": "2.1.0",
+        "read-pkg-up": "2.0.0",
+        "require-directory": "2.1.1",
+        "require-main-filename": "1.0.1",
+        "set-blocking": "2.0.0",
+        "string-width": "2.1.1",
+        "which-module": "2.0.0",
+        "y18n": "3.2.1",
+        "yargs-parser": "7.0.0"
+      }
+    },
+    "yargs-parser": {
+      "version": "7.0.0",
+      "resolved": "http://registry.npm.taobao.org/yargs-parser/download/yargs-parser-7.0.0.tgz",
+      "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=",
+      "requires": {
+        "camelcase": "4.1.0"
+      }
+    }
+  }
+}
diff --git a/package.json b/package.json
index c9f0ce8..c198910 100644
--- a/package.json
+++ b/package.json
@@ -3,40 +3,55 @@
   "version": "0.0.1",
   "private": true,
   "scripts": {
-    "start": "sh replace-custom-components-file.sh && node_modules/react-native/packager/packager.sh",
-    "ios": "sh replace-custom-components-file.sh && node_modules/react-native/packager/packager.sh",
-    "android": "sh replace-custom-components-file-android.sh && node_modules/react-native/packager/packager.sh"
+    "start": "node node_modules/react-native/local-cli/cli.js start",
+    "ios": "node node_modules/react-native/local-cli/cli.js start",
+    "android": "node node_modules/react-native/local-cli/cli.js start"
+  },
+  "peerDependencies": {
+    "react": "^16.3.2"
   },
   "dependencies": {
-    "apsl-react-native-button": "^2.4.2",
-    "immutable": "^3.8.1",
+    "apsl-react-native-button": "^3.1.1",
+    "babel": "^6.23.0",
+    "create-react-class": "^15.6.3",
+    "immutable": "^3.8.2",
     "key-mirror": "^1.0.1",
-    "lodash": "^4.16.4",
-    "md5": "^2.1.0",
-    "moment": "^2.13.0",
-    "object-assign": "^4.1.0",
-    "query-string": "^4.2.2",
-    "react": "16.0.0-alpha.6",
+    "lodash": "^4.17.10",
+    "md5": "^2.2.1",
+    "moment": "^2.22.1",
+    "object-assign": "^4.1.1",
+    "prop-types": "^15.6.1",
+    "query-string": "^6.1.0",
+    "react": "^16.3.2",
     "react-immutable-proptypes": "^2.1.0",
-    "react-native": "git+https://github.com/facebook/react-native.git#32eab54",
-    "react-native-device-info": "0.9.5",
-    "react-native-fabric": "0.2.2",
-    "react-native-progress": "^3.0.1",
-    "react-native-root-toast": "^1.0.3",
+    "react-native": "^0.54.4",
+    "react-native-device-info": "^0.21.5",
+    "react-native-fabric": "^0.5.1",
+    "react-native-progress": "^3.4.0",
+    "react-native-root-toast": "^3.0.1",
     "react-native-scrollable-mixin": "^1.0.1",
-    "react-native-simple-store": "^1.1.0",
+    "react-native-scrollable-tab-view": "^0.8.0",
+    "react-native-simple-store": "^1.3.0",
     "react-native-smart-toast": "^1.1.1",
-    "react-native-swipeable": "^0.4.0",
-    "react-native-swiper": "^1.5.4",
-    "react-native-switch-pro": "^0.4.2",
-    "react-redux": "^4.4.5",
-    "react-static-container": "^1.0.1",
+    "react-native-swipeable": "^0.6.0",
+    "react-native-swiper": "^1.5.13",
+    "react-native-switch-pro": "^0.4.11",
+    "react-redux": "^5.0.7",
+    "react-static-container": "^1.0.2",
     "react-timer-mixin": "^0.13.3",
-    "redux": "^3.5.2",
-    "redux-logger": "^2.6.1",
-    "redux-thunk": "^2.0.1",
-    "stacktrace-js": "^1.3.0",
-    "timeago.js": "^1.0.5",
-    "yh_rncamera": "0.1.0"
+    "redux": "^4.0.0",
+    "redux-logger": "^3.0.6",
+    "redux-thunk": "^2.2.0",
+    "stacktrace-js": "^2.0.0",
+    "timeago.js": "^3.0.2"
+  },
+  "devDependencies": {
+    "babel-jest": "22.4.3",
+    "babel-preset-react-native": "4.0.0",
+    "jest": "22.4.3",
+    "react-test-renderer": "16.3.1"
+  },
+  "jest": {
+    "preset": "react-native"
   }
 }
--
libgit2 0.24.0