From 04b99c425cac694efd78903a4456e19455f9297e Mon Sep 17 00:00:00 2001 From: lanzu_qinsheng <334039090@qq.com> Date: Tue, 29 Sep 2020 16:55:50 +0800 Subject: [PATCH 1/5] =?UTF-8?q?=E8=AF=A6=E6=83=85=E8=B7=AF=E7=BA=BF?= =?UTF-8?q?=E8=A7=84=E5=88=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Admin/Common/LinkUrl.php | 1 + app/Admin/Common/Map.php | 14 ++ .../ImsCjdcOrderMainController.php | 23 ++- app/Admin/Extensions/MyDetailPage.php | 154 +++++++++++++++++- app/Admin/routes.php | 1 + app/Http/Controllers/TestController.php | 6 + app/Models/ImsCjdcOrderMain.php | 6 +- public/css/detail.css | 17 ++ resources/views/orderdetail.php | 10 +- routes/web.php | 1 + 10 files changed, 221 insertions(+), 12 deletions(-) create mode 100644 app/Admin/Common/Map.php diff --git a/app/Admin/Common/LinkUrl.php b/app/Admin/Common/LinkUrl.php index f3f1fc7..49064ab 100644 --- a/app/Admin/Common/LinkUrl.php +++ b/app/Admin/Common/LinkUrl.php @@ -11,6 +11,7 @@ class LinkUrl */ const VUE_JS = 'https://cdn.jsdelivr.net/npm/vue'; const ELEMENT_UI_JS = 'https://unpkg.com/element-ui/lib/index.js'; + const API_GL_JS = 'https://map.qq.com/api/gljs?v=1.exp&key=7NSBZ-ETU3O-CW6WN-S3YM5-KERR5-RQBHS'; /** diff --git a/app/Admin/Common/Map.php b/app/Admin/Common/Map.php new file mode 100644 index 0000000..6245015 --- /dev/null +++ b/app/Admin/Common/Map.php @@ -0,0 +1,14 @@ +tools(new ShowOrderStateHandle(8)); $grid->tools(new ShowOrderStateHandle()); $grid->paginate(10);//每页展示数据10条 - //$grid->id; - //$grid->user_id('用户信息'); if (!(Admin::user()->isRole('market_service'))){ $marketId = \Request::get('market_id'); if ($marketId){ @@ -78,7 +77,6 @@ class ImsCjdcOrderMainController extends AdminController return date('Y-m-d H:i:s',$time); }); $grid->actions(function (Grid\Displayers\Actions $actions) use ($grid) { - $state = $actions->row->state; $lastUrl = isset($_SERVER['QUERY_STRING'])?base64_encode($_SERVER['QUERY_STRING']):''; $actions->append(new OrderDetail($actions->row->id, $grid->model()->getCurrentPage(),$lastUrl, '
详情
')); @@ -197,5 +195,24 @@ class ImsCjdcOrderMainController extends AdminController return json_encode($result['result']); } + /** + * 地图路线规划 + * @param $m_lat + * @param $m_lng + * @param $u_lat + * @param $u_lng + * @param $type + * @return false|string + */ + public function mapRoute() + { + $params = request()->input(); + $m_lat = $params['m_lat']; + $m_lng = $params['m_lng']; + $u_lat = $params['u_lat']; + $u_lng = $params['u_lng']; + $type = $params['type']; + return Map::routeInfo($m_lat,$m_lng,$u_lat,$u_lng,$type); + } } diff --git a/app/Admin/Extensions/MyDetailPage.php b/app/Admin/Extensions/MyDetailPage.php index 9bc7989..0a2a312 100644 --- a/app/Admin/Extensions/MyDetailPage.php +++ b/app/Admin/Extensions/MyDetailPage.php @@ -15,7 +15,7 @@ use Endroid\QrCode\Exceptions\DataDoesntExistsException; class MyDetailPage extends LazyRenderable { - protected static $js = [LinkUrl::VUE_JS, LinkUrl::ELEMENT_UI_JS]; + protected static $js = [LinkUrl::VUE_JS, LinkUrl::ELEMENT_UI_JS, LinkUrl::API_GL_JS]; protected static $css = [LinkUrl::DETAIL_CSS, LinkUrl::ELEMENT_UI_CSS]; @@ -24,14 +24,14 @@ class MyDetailPage extends LazyRenderable //>>1.主订单数据 $order = ImsCjdcOrderMain::getOrderData($this->order_id); if ($order) { - $search = array(" "," ","\n","\r","\t"); - $replace = array("","","","",""); + $search = array(" ", " ", "\n", "\r", "\t"); + $replace = array("", "", "", "", ""); $order['address'] = str_replace($search, $replace, $order['address']); //>>2.获取子订单 - $result = ImsCjdcOrder::getOrdersData($order['global_order_id'],$order['id']); + $result = ImsCjdcOrder::getOrdersData($order['global_order_id'], $order['id']); $orders = json_encode($result['orders']); $showRefund = json_encode($result['show_refund']); - $path = "order?".$this->last_url; + $path = "order?" . $this->last_url; Admin::script( << { }); - } + }, + showMap() { + this.is_show=true; + if (!this.show_map){ + this.show_map = true; + this.close_map =false; + this.initMap() + } + }, + closeMap() { + this.is_show=false; + this.show_map = false; + this.close_map =true; + }, + + change2D() { + this.map.setViewMode('2D'); + }, + + change3D() { + this.map.setViewMode('3D'); + this.map.setPitch(70); + }, + + initMap() { + var center = new TMap.LatLng(this.market_lat, this.market_lng); + //初始化地图 + this.map = new TMap.Map("container", {rotation: 20,//设置地图旋转角度 + pitch:30, //设置俯仰角度(0~45) + zoom:12,//设置地图缩放级别 + center: center//设置地图中心点坐标 + }); + that = this; + $.ajax({ + url: "map_route", + type: "get", + contentType: "text/html; charset=utf-8", + dataType: "json", + data: { + m_lat:that.market_lat, + m_lng:that.market_lng, + u_lat:that.user_lat, + u_lng:that.user_lng, + type:"bicycling" + }, + success: function (res) { + if (res.status==0){ + that.cb(res); + } + }, + error: function (xhr, err) { + console.log("错误", err) + } + }); + + }, + + + //定义请求回调函数,在此拿到计算得到的路线,并进行绘制 + cb(ret) { + var coords = ret.result.routes[0].polyline, pl = []; + //坐标解压(返回的点串坐标,通过前向差分进行压缩) + var kr = 1000000; + for (var i = 2; i < coords.length; i++) { + coords[i] = Number(coords[i - 2]) + Number(coords[i]) / kr; + } + //将解压后的坐标放入点串数组pl中 + for (var i = 0; i < coords.length; i += 2) { + pl.push(new TMap.LatLng(coords[i], coords[i+1])); + } + + this.display_polyline(pl)//显示路线 + + //标记起终点marker + var marker = new TMap.MultiMarker({ + id: 'marker-layer', + map: this.map, + styles: { + "start": new TMap.MarkerStyle({ + "width": 25, + "height": 35, + "anchor": { x: 16, y: 32 }, + "src": 'https://mapapi.qq.com/web/lbs/javascriptGL/demo/img/start.png' + }), + "end": new TMap.MarkerStyle({ + "width": 25, + "height": 35, + "anchor": { x: 16, y: 32 }, + "src": 'https://mapapi.qq.com/web/lbs/javascriptGL/demo/img/end.png' + }) + }, + geometries: [{ + "id": 'start', + "styleId": 'start', + "position": new TMap.LatLng(that.market_lat,that.market_lng) + }, { + "id": 'end', + "styleId": 'end', + "position": new TMap.LatLng(that.user_lat,that.user_lng) + }] + }); + }, + + display_polyline(pl){ + //创建 MultiPolyline显示折线 + var polylineLayer = new TMap.MultiPolyline({ + id: 'polyline-layer', //图层唯一标识 + map: this.map,//绘制到目标地图 + //折线样式定义 + styles: { + 'style_blue': new TMap.PolylineStyle({ + 'color': '#3777FF', //线填充色 + 'width': 8, //折线宽度 + 'borderWidth': 5, //边线宽度 + 'borderColor': '#FFF', //边线颜色 + 'lineCap': 'round', //线端头方式 + }) + }, + //折线数据定义 + geometries: [ + { + 'id': 'pl_1',//折线唯一标识,删除时使用 + 'styleId': 'style_blue',//绑定样式名 + 'paths': pl + } + ] + }); + }, + mounted: function () { + } + } }); JS ); diff --git a/app/Admin/routes.php b/app/Admin/routes.php index 416b3fe..1585774 100644 --- a/app/Admin/routes.php +++ b/app/Admin/routes.php @@ -69,6 +69,7 @@ Route::group([ $router->resource('/order', 'ImsCjdcOrderMainController'); $router->any('/detail', 'ImsCjdcOrderMainController@orderDetail'); $router->any('/order_goods_refund', 'ImsCjdcOrderMainController@orderGoodsRefund'); + $router->any('/map_route', 'ImsCjdcOrderMainController@mapRoute'); $router->any('ops/files', 'v3\FileController@handle'); diff --git a/app/Http/Controllers/TestController.php b/app/Http/Controllers/TestController.php index 60f4a44..3ba304b 100644 --- a/app/Http/Controllers/TestController.php +++ b/app/Http/Controllers/TestController.php @@ -42,4 +42,10 @@ class TestController extends BaseController } return $response->getBody()->getContents(); } + + public function testMap() + { + $result = file_get_contents("https://apis.map.qq.com/ws/direction/v1/bicycling/?from=39.984042,116.307535&to=39.980869,116.325238&key=7NSBZ-ETU3O-CW6WN-S3YM5-KERR5-RQBHS"); + return $result; + } } diff --git a/app/Models/ImsCjdcOrderMain.php b/app/Models/ImsCjdcOrderMain.php index eaefec5..a1c33d8 100644 --- a/app/Models/ImsCjdcOrderMain.php +++ b/app/Models/ImsCjdcOrderMain.php @@ -99,8 +99,11 @@ class ImsCjdcOrderMain extends Model // 获取市场 $marketId = $order['market_id']?$order['market_id']:0; - $market = MarketModel::getMarketInfo($marketId,'name'); + $market = MarketModel::getMarketInfo($marketId,['name','lat','lng']); + $order['market_name'] = $market?$market['name']:''; + $order['market_lat'] = $market?$market['lat']:''; + $order['market_lng'] = $market?$market['lng']:''; //获取市场经纬度 //$market = LanzuMarket::where('id',$order['market_id'])->first()->toArray(); @@ -110,6 +113,7 @@ class ImsCjdcOrderMain extends Model } else { $order['delivery_distance'] .= '米'; } + return $order; } diff --git a/public/css/detail.css b/public/css/detail.css index e850d1e..833ad16 100644 --- a/public/css/detail.css +++ b/public/css/detail.css @@ -51,3 +51,20 @@ float: left; font-size: 1.4rem; } + + +#container { + width: 100%; + height: 100%; +} +input { + position: absolute; + top: 30px; + z-index: 9999; +} +#btn-2d { + left: 20px; +} +#btn-3d { + left: 80px; +} diff --git a/resources/views/orderdetail.php b/resources/views/orderdetail.php index 917f026..9eba15c 100644 --- a/resources/views/orderdetail.php +++ b/resources/views/orderdetail.php @@ -1,4 +1,12 @@
+
+ + + + +

+
+
@@ -100,6 +108,6 @@ 确 定 - + diff --git a/routes/web.php b/routes/web.php index 1eba8b1..993b7a6 100644 --- a/routes/web.php +++ b/routes/web.php @@ -19,4 +19,5 @@ Route::get('/', function(){ Route::get('/test', 'TestController@Test'); Route::any('/rpc', 'TestController@testRpc'); +Route::any('/map', 'TestController@testMap'); Route::any('/add', 'Salesman@addData'); From b1bdd4f7b4670391b332833e2f8e026acdae83db Mon Sep 17 00:00:00 2001 From: lanzu_qinsheng <334039090@qq.com> Date: Tue, 29 Sep 2020 17:51:51 +0800 Subject: [PATCH 2/5] =?UTF-8?q?=E4=BC=98=E5=8C=96=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E8=AF=A6=E6=83=85=E5=8A=A0=E8=BD=BD=E9=80=9F=E5=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Admin/Common/LinkUrl.php | 5 ++++- app/Admin/Extensions/MyDetailPage.php | 9 +++++---- public/js/element.js | 1 + resources/views/orderdetail.php | 2 +- 4 files changed, 11 insertions(+), 6 deletions(-) create mode 100644 public/js/element.js diff --git a/app/Admin/Common/LinkUrl.php b/app/Admin/Common/LinkUrl.php index 49064ab..428bf58 100644 --- a/app/Admin/Common/LinkUrl.php +++ b/app/Admin/Common/LinkUrl.php @@ -10,7 +10,10 @@ class LinkUrl * js */ const VUE_JS = 'https://cdn.jsdelivr.net/npm/vue'; - const ELEMENT_UI_JS = 'https://unpkg.com/element-ui/lib/index.js'; + //const ELEMENT_UI_JS = 'https://unpkg.com/element-ui/lib/index.js'; + const ELEMENT_UI_JS = 'js/element.js'; + + const API_GL_JS = 'https://map.qq.com/api/gljs?v=1.exp&key=7NSBZ-ETU3O-CW6WN-S3YM5-KERR5-RQBHS'; diff --git a/app/Admin/Extensions/MyDetailPage.php b/app/Admin/Extensions/MyDetailPage.php index 0a2a312..b4acba5 100644 --- a/app/Admin/Extensions/MyDetailPage.php +++ b/app/Admin/Extensions/MyDetailPage.php @@ -54,10 +54,10 @@ class MyDetailPage extends LazyRenderable refuse_refund_note: "{$order['refuse_refund_note']}", total_refund_note: "{$order['total_refund_note']}", address: "{$order['address']}", - //market_lat:"{$order['market_lat']}", - market_lat:"22.851817", - //market_lng:"{$order['market_lng']}", - market_lng:"108.347049", + market_lat:"{$order['market_lat']}", + //market_lat:"22.851115", + market_lng:"{$order['market_lng']}", + //market_lng:"108.346041", user_lat:"{$order['lat']}", user_lng:"{$order['lng']}", note: "{$order['note']}", @@ -180,6 +180,7 @@ class MyDetailPage extends LazyRenderable type:"bicycling" }, success: function (res) { + console.log(res) if (res.status==0){ that.cb(res); } diff --git a/public/js/element.js b/public/js/element.js new file mode 100644 index 0000000..bae1355 --- /dev/null +++ b/public/js/element.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("vue")):"function"==typeof define&&define.amd?define("ELEMENT",["vue"],t):"object"==typeof exports?exports.ELEMENT=t(require("vue")):e.ELEMENT=t(e.Vue)}("undefined"!=typeof self?self:this,function(e){return function(e){var t={};function i(n){if(t[n])return t[n].exports;var r=t[n]={i:n,l:!1,exports:{}};return e[n].call(r.exports,r,r.exports,i),r.l=!0,r.exports}return i.m=e,i.c=t,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)i.d(n,r,function(t){return e[t]}.bind(null,r));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="/dist/",i(i.s=49)}([function(t,i){t.exports=e},function(e,t,i){var n=i(4);e.exports=function(e,t,i){return void 0===i?n(e,t,!1):n(e,i,!1!==t)}},function(e,t,i){var n;!function(r){"use strict";var s={},a=/d{1,4}|M{1,4}|yy(?:yy)?|S{1,3}|Do|ZZ|([HhMsDm])\1?|[aA]|"[^"]*"|'[^']*'/g,o="[^\\s]+",l=/\[([^]*?)\]/gm,u=function(){};function c(e,t){for(var i=[],n=0,r=e.length;n3?0:(e-e%10!=10)*e%10]}};var g={D:function(e){return e.getDay()},DD:function(e){return d(e.getDay())},Do:function(e,t){return t.DoFn(e.getDate())},d:function(e){return e.getDate()},dd:function(e){return d(e.getDate())},ddd:function(e,t){return t.dayNamesShort[e.getDay()]},dddd:function(e,t){return t.dayNames[e.getDay()]},M:function(e){return e.getMonth()+1},MM:function(e){return d(e.getMonth()+1)},MMM:function(e,t){return t.monthNamesShort[e.getMonth()]},MMMM:function(e,t){return t.monthNames[e.getMonth()]},yy:function(e){return d(String(e.getFullYear()),4).substr(2)},yyyy:function(e){return d(e.getFullYear(),4)},h:function(e){return e.getHours()%12||12},hh:function(e){return d(e.getHours()%12||12)},H:function(e){return e.getHours()},HH:function(e){return d(e.getHours())},m:function(e){return e.getMinutes()},mm:function(e){return d(e.getMinutes())},s:function(e){return e.getSeconds()},ss:function(e){return d(e.getSeconds())},S:function(e){return Math.round(e.getMilliseconds()/100)},SS:function(e){return d(Math.round(e.getMilliseconds()/10),2)},SSS:function(e){return d(e.getMilliseconds(),3)},a:function(e,t){return e.getHours()<12?t.amPm[0]:t.amPm[1]},A:function(e,t){return e.getHours()<12?t.amPm[0].toUpperCase():t.amPm[1].toUpperCase()},ZZ:function(e){var t=e.getTimezoneOffset();return(t>0?"-":"+")+d(100*Math.floor(Math.abs(t)/60)+Math.abs(t)%60,4)}},b={d:["\\d\\d?",function(e,t){e.day=t}],Do:["\\d\\d?"+o,function(e,t){e.day=parseInt(t,10)}],M:["\\d\\d?",function(e,t){e.month=t-1}],yy:["\\d\\d?",function(e,t){var i=+(""+(new Date).getFullYear()).substr(0,2);e.year=""+(t>68?i-1:i)+t}],h:["\\d\\d?",function(e,t){e.hour=t}],m:["\\d\\d?",function(e,t){e.minute=t}],s:["\\d\\d?",function(e,t){e.second=t}],yyyy:["\\d{4}",function(e,t){e.year=t}],S:["\\d",function(e,t){e.millisecond=100*t}],SS:["\\d{2}",function(e,t){e.millisecond=10*t}],SSS:["\\d{3}",function(e,t){e.millisecond=t}],D:["\\d\\d?",u],ddd:[o,u],MMM:[o,h("monthNamesShort")],MMMM:[o,h("monthNames")],a:[o,function(e,t,i){var n=t.toLowerCase();n===i.amPm[0]?e.isPm=!1:n===i.amPm[1]&&(e.isPm=!0)}],ZZ:["[^\\s]*?[\\+\\-]\\d\\d:?\\d\\d|[^\\s]*?Z",function(e,t){var i,n=(t+"").match(/([+-]|\d\d)/gi);n&&(i=60*n[1]+parseInt(n[2],10),e.timezoneOffset="+"===n[0]?i:-i)}]};b.dd=b.d,b.dddd=b.ddd,b.DD=b.D,b.mm=b.m,b.hh=b.H=b.HH=b.h,b.MM=b.M,b.ss=b.s,b.A=b.a,s.masks={default:"ddd MMM dd yyyy HH:mm:ss",shortDate:"M/D/yy",mediumDate:"MMM d, yyyy",longDate:"MMMM d, yyyy",fullDate:"dddd, MMMM d, yyyy",shortTime:"HH:mm",mediumTime:"HH:mm:ss",longTime:"HH:mm:ss.SSS"},s.format=function(e,t,i){var n=i||s.i18n;if("number"==typeof e&&(e=new Date(e)),"[object Date]"!==Object.prototype.toString.call(e)||isNaN(e.getTime()))throw new Error("Invalid Date in fecha.format");t=s.masks[t]||t||s.masks.default;var r=[];return(t=(t=t.replace(l,function(e,t){return r.push(t),"@@@"})).replace(a,function(t){return t in g?g[t](e,n):t.slice(1,t.length-1)})).replace(/@@@/g,function(){return r.shift()})},s.parse=function(e,t,i){var n=i||s.i18n;if("string"!=typeof t)throw new Error("Invalid format in fecha.parse");if(t=s.masks[t]||t,e.length>1e3)return null;var r={},o=[],u=[];t=t.replace(l,function(e,t){return u.push(t),"@@@"});var c,h=(c=t,c.replace(/[|\\{()[^$+*?.-]/g,"\\$&")).replace(a,function(e){if(b[e]){var t=b[e];return o.push(t[1]),"("+t[0]+")"}return e});h=h.replace(/@@@/g,function(){return u.shift()});var d=e.match(new RegExp(h,"i"));if(!d)return null;for(var p=1;pe?u():!0!==t&&(r=setTimeout(n?function(){r=void 0}:u,void 0===n?e-o:e))}}},function(e,t){var i=e.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=i)},function(e,t){var i=/^(attrs|props|on|nativeOn|class|style|hook)$/;function n(e,t){return function(){e&&e.apply(this,arguments),t&&t.apply(this,arguments)}}e.exports=function(e){return e.reduce(function(e,t){var r,s,a,o,l;for(a in t)if(r=e[a],s=t[a],r&&i.test(a))if("class"===a&&("string"==typeof r&&(l=r,e[a]=r={},r[l]=!0),"string"==typeof s&&(l=s,t[a]=s={},s[l]=!0)),"on"===a||"nativeOn"===a||"hook"===a)for(o in s)r[o]=n(r[o],s[o]);else if(Array.isArray(r))e[a]=r.concat(s);else if(Array.isArray(s))e[a]=[r].concat(s);else for(o in s)r[o]=s[o];else e[a]=t[a];return e},{})}},function(e,t){var i={}.hasOwnProperty;e.exports=function(e,t){return i.call(e,t)}},function(e,t,i){"use strict";t.__esModule=!0;var n,r=i(56),s=(n=r)&&n.__esModule?n:{default:n};t.default=s.default||function(e){for(var t=1;t0?n:i)(e)}},function(e,t,i){var n=i(28)("keys"),r=i(21);e.exports=function(e){return n[e]||(n[e]=r(e))}},function(e,t,i){var n=i(14),r=i(5),s=r["__core-js_shared__"]||(r["__core-js_shared__"]={});(e.exports=function(e,t){return s[e]||(s[e]=void 0!==t?t:{})})("versions",[]).push({version:n.version,mode:i(20)?"pure":"global",copyright:"© 2019 Denis Pushkarev (zloirock.ru)"})},function(e,t){e.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(e,t){t.f=Object.getOwnPropertySymbols},function(e,t){e.exports={}},function(e,t,i){var n=i(10).f,r=i(7),s=i(13)("toStringTag");e.exports=function(e,t,i){e&&!r(e=i?e:e.prototype,s)&&n(e,s,{configurable:!0,value:t})}},function(e,t,i){t.f=i(13)},function(e,t,i){var n=i(5),r=i(14),s=i(20),a=i(33),o=i(10).f;e.exports=function(e){var t=r.Symbol||(r.Symbol=s?{}:n.Symbol||{});"_"==e.charAt(0)||e in t||o(t,e,{value:a.f(e)})}},function(e,t,i){var n=i(4),r=i(1);e.exports={throttle:n,debounce:r}},function(e,t,i){e.exports=!i(11)&&!i(16)(function(){return 7!=Object.defineProperty(i(37)("div"),"a",{get:function(){return 7}}).a})},function(e,t,i){var n=i(15),r=i(5).document,s=n(r)&&n(r.createElement);e.exports=function(e){return s?r.createElement(e):{}}},function(e,t,i){var n=i(7),r=i(12),s=i(62)(!1),a=i(27)("IE_PROTO");e.exports=function(e,t){var i,o=r(e),l=0,u=[];for(i in o)i!=a&&n(o,i)&&u.push(i);for(;t.length>l;)n(o,i=t[l++])&&(~s(u,i)||u.push(i));return u}},function(e,t,i){var n=i(40);e.exports=Object("z").propertyIsEnumerable(0)?Object:function(e){return"String"==n(e)?e.split(""):Object(e)}},function(e,t){var i={}.toString;e.exports=function(e){return i.call(e).slice(8,-1)}},function(e,t,i){var n=i(25);e.exports=function(e){return Object(n(e))}},function(e,t,i){"use strict";var n=i(20),r=i(23),s=i(43),a=i(9),o=i(31),l=i(69),u=i(32),c=i(72),h=i(13)("iterator"),d=!([].keys&&"next"in[].keys()),p=function(){return this};e.exports=function(e,t,i,f,m,v,g){l(i,t,f);var b,y,w,_=function(e){if(!d&&e in S)return S[e];switch(e){case"keys":case"values":return function(){return new i(this,e)}}return function(){return new i(this,e)}},x=t+" Iterator",C="values"==m,k=!1,S=e.prototype,D=S[h]||S["@@iterator"]||m&&S[m],$=D||_(m),E=m?C?_("entries"):$:void 0,T="Array"==t&&S.entries||D;if(T&&(w=c(T.call(new e)))!==Object.prototype&&w.next&&(u(w,x,!0),n||"function"==typeof w[h]||a(w,h,p)),C&&D&&"values"!==D.name&&(k=!0,$=function(){return D.call(this)}),n&&!g||!d&&!k&&S[h]||a(S,h,$),o[t]=$,o[x]=p,m)if(b={values:C?$:_("values"),keys:v?$:_("keys"),entries:E},g)for(y in b)y in S||s(S,y,b[y]);else r(r.P+r.F*(d||k),t,b);return b}},function(e,t,i){e.exports=i(9)},function(e,t,i){var n=i(17),r=i(70),s=i(29),a=i(27)("IE_PROTO"),o=function(){},l=function(){var e,t=i(37)("iframe"),n=s.length;for(t.style.display="none",i(71).appendChild(t),t.src="javascript:",(e=t.contentWindow.document).open(),e.write("