tremble 3 years ago
parent
commit
2fac326648
100 changed files with 128938 additions and 989 deletions
  1. 1606 348
      SuperTwo762/js/main_2020_show.js
  2. 57815 0
      SuperTwo762/js/main_2020_show2.js
  3. 2 2
      SuperTwo762/js/myShow.js
  4. 379 116
      SuperTwo762/js/overlay.js
  5. 176 0
      SuperTwo762/js/overlay1.js
  6. 801 233
      SuperTwo791/js/main_2020_show.js
  7. 57703 0
      SuperTwo791/js/main_2020_show1.js
  8. 374 108
      SuperTwo791/js/overlay.js
  9. 328 0
      SuperTwo791/js/overlay1.js
  10. 219 83
      edit-backstage/css/lzb.css
  11. 53 0
      edit-backstage/css/main.css
  12. 261 97
      edit-backstage/edit_zh.html
  13. 1 0
      edit-backstage/hot_online/css/app.0d5d5cdb.css
  14. 1 0
      edit-backstage/hot_online/css/app.284205ff.css
  15. 1 0
      edit-backstage/hot_online/css/app.3f322ea4.css
  16. 1 0
      edit-backstage/hot_online/css/app.514b6088.css
  17. 1 0
      edit-backstage/hot_online/css/app.95281f89.css
  18. 1 0
      edit-backstage/hot_online/css/app.b511b58b.css
  19. 1 0
      edit-backstage/hot_online/css/app.b62cd77a.css
  20. 1 0
      edit-backstage/hot_online/css/app.bfa5db9e.css
  21. 11 0
      edit-backstage/hot_online/css/chunk-vendors.3df37e78.css
  22. 11 0
      edit-backstage/hot_online/css/chunk-vendors.f0832753.css
  23. 4 0
      edit-backstage/hot_online/css/font-awesome.min.css
  24. 1 0
      edit-backstage/hot_online/css/icon.css
  25. 90 0
      edit-backstage/hot_online/css/reset.css
  26. 229 0
      edit-backstage/hot_online/css/style.css
  27. 224 0
      edit-backstage/hot_online/css/video.css
  28. 456 0
      edit-backstage/hot_online/css/viewer.css
  29. 9 0
      edit-backstage/hot_online/css/viewer.min.css
  30. 764 0
      edit-backstage/hot_online/css/yuhaiTupian.css
  31. BIN
      edit-backstage/hot_online/fonts/fontawesome-webfont.woff2
  32. 315 0
      edit-backstage/hot_online/icons/entypo.css
  33. BIN
      edit-backstage/hot_online/icons/entypo.eot
  34. 834 0
      edit-backstage/hot_online/icons/entypo.svg
  35. BIN
      edit-backstage/hot_online/icons/entypo.ttf
  36. BIN
      edit-backstage/hot_online/icons/entypo.woff
  37. BIN
      edit-backstage/hot_online/images/iframe-icon.png
  38. BIN
      edit-backstage/hot_online/images/img-icon.png
  39. BIN
      edit-backstage/hot_online/images/model-icon.png
  40. BIN
      edit-backstage/hot_online/images/video-icon.png
  41. 1 1
      edit-backstage/hot_online/index.html
  42. 2 0
      edit-backstage/hot_online/js/about.712cd281.js
  43. 1 0
      edit-backstage/hot_online/js/about.712cd281.js.map
  44. 2 0
      edit-backstage/hot_online/js/about.8bca1b1d.js
  45. 1 0
      edit-backstage/hot_online/js/about.8bca1b1d.js.map
  46. 2 0
      edit-backstage/hot_online/js/app.233cc84c.js
  47. 1 0
      edit-backstage/hot_online/js/app.233cc84c.js.map
  48. 2 0
      edit-backstage/hot_online/js/app.3749bf3a.js
  49. 1 0
      edit-backstage/hot_online/js/app.3749bf3a.js.map
  50. 2 0
      edit-backstage/hot_online/js/app.44338beb.js
  51. 1 0
      edit-backstage/hot_online/js/app.44338beb.js.map
  52. 2 0
      edit-backstage/hot_online/js/app.52a38474.js
  53. 1 0
      edit-backstage/hot_online/js/app.52a38474.js.map
  54. 2 0
      edit-backstage/hot_online/js/app.7e6bbe50.js
  55. 1 0
      edit-backstage/hot_online/js/app.7e6bbe50.js.map
  56. 2 0
      edit-backstage/hot_online/js/app.8a8eb09c.js
  57. 1 0
      edit-backstage/hot_online/js/app.8a8eb09c.js.map
  58. 2 0
      edit-backstage/hot_online/js/app.8b411bbe.js
  59. 1 0
      edit-backstage/hot_online/js/app.8b411bbe.js.map
  60. 2 0
      edit-backstage/hot_online/js/app.9ee3963c.js
  61. 1 0
      edit-backstage/hot_online/js/app.9ee3963c.js.map
  62. 2 0
      edit-backstage/hot_online/js/app.d3c7f87a.js
  63. 1 0
      edit-backstage/hot_online/js/app.d3c7f87a.js.map
  64. 713 0
      edit-backstage/hot_online/js/baguetteBox.js
  65. 44 0
      edit-backstage/hot_online/js/chunk-vendors.27bf9d68.js
  66. 1 0
      edit-backstage/hot_online/js/chunk-vendors.27bf9d68.js.map
  67. 44 0
      edit-backstage/hot_online/js/chunk-vendors.fb706b27.js
  68. 1 0
      edit-backstage/hot_online/js/chunk-vendors.fb706b27.js.map
  69. 1 0
      edit-backstage/hot_online/js/hammer.min.js
  70. 4 0
      edit-backstage/hot_online/js/jquery-2.1.1.min.js
  71. 392 0
      edit-backstage/hot_online/js/main.js
  72. 1 0
      edit-backstage/hot_online/js/modernizr.min.js
  73. 13 0
      edit-backstage/hot_online/js/personage.js
  74. 757 0
      edit-backstage/hot_online/js/pinchzoom.js
  75. 281 0
      edit-backstage/hot_online/js/slider.js
  76. 310 0
      edit-backstage/hot_online/js/vedio.js
  77. 456 0
      edit-backstage/hot_online/js/viewer/viewer.css
  78. 3166 0
      edit-backstage/hot_online/js/viewer/viewer.js
  79. 9 0
      edit-backstage/hot_online/js/viewer/viewer.min.css
  80. 10 0
      edit-backstage/hot_online/js/viewer/viewer.min.js
  81. 1 0
      edit-backstage/hot_online1/css/app.0867ec97.css
  82. 1 0
      edit-backstage/hot_online1/css/app.0d5d5cdb.css
  83. 1 0
      edit-backstage/hot_online1/css/app.284205ff.css
  84. 1 0
      edit-backstage/hot_online1/css/app.34ba231a.css
  85. 1 0
      edit-backstage/hot_online1/css/app.70d61806.css
  86. 1 0
      edit-backstage/hot_online1/css/app.735f63e8.css
  87. 1 0
      edit-backstage/hot_online1/css/app.95281f89.css
  88. 11 0
      edit-backstage/hot_online1/css/chunk-vendors.f0832753.css
  89. BIN
      edit-backstage/hot_online1/img/iframe-icon.2797cd24.png
  90. BIN
      edit-backstage/hot_online1/img/img-icon.f320665e.png
  91. BIN
      edit-backstage/hot_online1/img/model-icon.a439e688.png
  92. BIN
      edit-backstage/hot_online1/img/video-icon.6b8f2767.png
  93. 1 1
      edit-backstage/hot_online1/index.html
  94. 2 0
      edit-backstage/hot_online1/js/about.8bca1b1d.js
  95. 1 0
      edit-backstage/hot_online1/js/about.8bca1b1d.js.map
  96. 2 0
      edit-backstage/hot_online1/js/app.23a34e13.js
  97. 1 0
      edit-backstage/hot_online1/js/app.23a34e13.js.map
  98. 2 0
      edit-backstage/hot_online1/js/app.37735270.js
  99. 1 0
      edit-backstage/hot_online1/js/app.37735270.js.map
  100. 0 0
      edit-backstage/hot_online1/js/app.44338beb.js

File diff suppressed because it is too large
+ 1606 - 348
SuperTwo762/js/main_2020_show.js


File diff suppressed because it is too large
+ 57815 - 0
SuperTwo762/js/main_2020_show2.js


+ 2 - 2
SuperTwo762/js/myShow.js

@@ -1,7 +1,7 @@
 var g_ProjectName=window.location.pathname.substring(window.location.pathname.indexOf("/")+1,window.location.pathname.lastIndexOf("/"));
-var g_Prefix="https://super.4dage.com/";
+// var g_Prefix="https://super.4dage.com/";
 // var g_Prefix=window.location.href.substring(0,window.location.href.indexOf("/index.html")+1);
-// var g_Prefix=window.location.origin+'/';
+var g_Prefix=window.location.origin+'/';
 
 var s = window.location.href.split('/');
 s.pop();

+ 379 - 116
SuperTwo762/js/overlay.js

@@ -1,163 +1,233 @@
+var MathLight = {};
+MathLight.RADIANS_PER_DEGREE = Math.PI / 180;
+MathLight.DEGREES_PER_RADIAN = 180 / Math.PI;
+
  
-var initOverlay = function(THREE){
-    var _planeGeometry = new THREE.PlaneGeometry(settings.overlay.width, settings.overlay.height,1,1)
-    var _boxGeometry = new THREE.BoxBufferGeometry(settings.overlay.width, settings.overlay.height, settings.overlay.depth )
-        //ie的mesh 加了polygonOffset也是会重叠。所以去掉前面的face:  (但是突然ie又播放不了videoTexture)
-        var newIndex = [..._boxGeometry.index.array]
-        newIndex.splice(4*6,6)
-        _boxGeometry.setIndex(new THREE.BufferAttribute(new Uint16Array(newIndex), 1))
-     
-
-    var _boxMat = new THREE.MeshBasicMaterial({//MeshStandardMaterial
-            color:"#eeeeee", 
-            transparent: !0 ,
-            opacity:0.8
-        })
-    
-    var overlayGroup = new THREE.Object3D;    player.model.add(overlayGroup);  overlayGroup.name = "overlayGroup"
-    player.overlayGroup = overlayGroup;
+ 
+
+var initOverlay = function(THREE) {
+    var _planeGeometry = new THREE.PlaneGeometry(settings.overlay.width,settings.overlay.height,1,1)
+    var _boxGeometry = new THREE.BoxBufferGeometry(settings.overlay.width,settings.overlay.height,settings.overlay.depth)
+    //ie的mesh 加了polygonOffset也是会重叠。所以去掉前面的face:  (但是突然ie又播放不了videoTexture)
+    var newIndex = [..._boxGeometry.index.array]
+    newIndex.splice(4 * 6, 6)
+    _boxGeometry.setIndex(new THREE.BufferAttribute(new Uint16Array(newIndex),1))
 
+    var _boxMat = new THREE.MeshBasicMaterial({
+        //MeshStandardMaterial
+        color: "#eeeeee",
+        transparent: !0,
+        opacity: 0.8
+    })
+
+    var overlayGroup = new THREE.Object3D;
+    player.model.add(overlayGroup);
+    overlayGroup.name = "overlayGroup"
+    player.overlayGroup = overlayGroup;
 
-    var Overlay = function(info){ 
-        THREE.Object3D.call(this); 
+    var Overlay = function(info) {
+        THREE.Object3D.call(this);
         this.sid = info.sid;
-        if(info.media)this.preDeal(info) 
+        if (info.media)
+            this.preDeal(info)
         this.build(info);
-        this.name = "overlay_"+this.sid;
+        this.name = "overlay_" + this.sid;
     }
     Overlay.prototype = Object.create(THREE.Object3D.prototype);
-    
-    Overlay.prototype.build = function(info){
-        
-        var plane = new THREE.Mesh(_planeGeometry, new THREE.MeshBasicMaterial({//MeshStandardMaterial
-            color:"#00c8af",
-            opacity:0.4,
-            transparent:   !info.media.includes('video'),   //视频的声音按钮要求plane不能透明
-            polygonOffset : true,//是否开启多边形偏移		//ie不开启时blank也不会闪烁
-            polygonOffsetFactor : -0.9,//多边形偏移因子
-            polygonOffsetUnits : -4.0,//多边形偏移单位  
-        }) )								
+
+    Overlay.prototype.build = function(info) {
+
+        var plane = new THREE.Mesh(_planeGeometry,new THREE.MeshBasicMaterial({
+            //MeshStandardMaterial
+            color: "#00c8af",
+            opacity: 0.4,
+            transparent: !0,
+            polygonOffset: true,
+            //是否开启多边形偏移		//ie不开启时blank也不会闪烁
+            polygonOffsetFactor: -0.9,
+            //多边形偏移因子
+            polygonOffsetUnits: -4.0,
+            //多边形偏移单位  
+        }))
         plane.renderOrder = 3
         this.add(plane);
         this.plane = plane;
-        if(info.hasBox){
-            this.addBox(true)  
-        }   
+        if (info.hasBox) {
+            this.addBox(true)
+        }
         overlayGroup.add(this);
-        
-        if(info.media){ 
-            if(info.media.includes('video')){
-                var video = $('<video controls="controls" loop autoplay x5-playsinline="" webkit-playsinline="true" playsinline="true" controlslist="nodownload"></video>')[0]
-                video.setAttribute("crossOrigin", 'Anonymous')//要在src设置好前解决跨域
-                $(video).on('contextmenu', function () { return false; });//禁止右键点击出
+
+        if (info.media) {
+            if (info.media.includes('video')) { 
+                //var id = "video"+ this.sid    id="${ id }"
+                var video = $(`<video  controls="controls" loop autoplay x5-playsinline="" webkit-playsinline="true" playsinline="true" controlslist="nodownload"></video>`)[0]
                  
-                video.src = manage.dealURL(info.file)  ;
+                video.setAttribute("crossOrigin", 'Anonymous')
+                //要在src设置好前解决跨域
+                $(video).on('contextmenu', function() {
+                    return false;
+                });
+                //禁止右键点击出
+
+                video.src = manage.dealURL(info.file);
                 info.media = video;
                 info.type = "video"
-                
-                video.addEventListener('loadeddata', ()=>{
+
+                /* video.addEventListener('loadeddata', ()=>{
                     console.log(this.sid + " loaded!!!")
-                })
-                
-                video.volume = 0
-                video.muted = true 
+                }) */
                 
+                video.oncanplaythrough = function() {
+                    plane.material.map.needsUpdate = !0
+                    if(video.shouldPlay){
+                        video.play()
+                    } 
+                }
                 
-                var soundBtn = addSoundBtn(video);
-                this.add(soundBtn)
-                this.soundBtn = soundBtn;
                 
-                var offsetX = 0.11, offsetY = 0.11; //到右下角的距离,单位m 
-                this.soundBtn.position.set(settings.overlay.width*(0.5-1/info.width*offsetX), -settings.overlay.height*(0.5-1/info.height*offsetY),0.01)
-                
-            }else if(info.media.includes('photo')){
+                video.volume = 0
+                video.muted = true
+                plane.material.opacity = 1;
+            } else if (info.media.includes('photo')) {
                 /* var img = new Image();
                  
                 img.src = manage.dealURL(info.file) //"https://4dkk.4dage.com/images/images"+Config.projectNum+"/overlay"+this.sid+".jpg?m="+new Date().getTime()
                 info.media = img
                  */
-                
-                info.type = "photo"  
-                
+
+                info.type = "photo"
+                plane.material.opacity = 0.1;
             }
-            plane.material.opacity = 1;
-            plane.material.color = new THREE.Color(1,1,1) 
+
+            plane.material.color = new THREE.Color(1,1,1)
         }
-        if(info.width == void 0) info.width = settings.overlay.width;
-        if(info.height == void 0) info.height = settings.overlay.height;
-        this.setFromInfo(info) 
-        
-        
-       
-        
+        if (info.width == void 0)
+            info.width = settings.overlay.width;
+        if (info.height == void 0)
+            info.height = settings.overlay.height;
+        this.setFromInfo(info)
+        this.fileSrc = info.file
+
     }
 
-     
-      
-    Overlay.prototype.setFromInfo = function(info){//1 恢复到编辑之前 2 初始加载 
-        var plane = this.plane;
-        info.width && (this.scale.setX(info.width/settings.overlay.width),this.width = info.width)
-        info.height && (this.scale.setY(info.height/settings.overlay.height),this.height = info.height) 
-        info.depth && this.scale.setZ(info.depth/settings.overlay.depth)
-        info.pos && this.position.copy(info.pos);
-        info.qua && this.quaternion.copy(info.qua);
+    Overlay.prototype.setFromInfo = function(info) {
+        //1 恢复到编辑之前 2 初始加载 
+        var plane = this.plane; 
+        var transformAtPanos = {}
+        for(var i in info.transformAtPanos){
+            transformAtPanos[i] = {
+                width : info.transformAtPanos[i].width,
+                height : info.transformAtPanos[i].height,
+                pos : info.transformAtPanos[i].pos.clone(),
+                qua : info.transformAtPanos[i].qua.clone(),
+            }      
+        } 
         
+        this.transformAtPanos = transformAtPanos
+        //在每个漫游点独立设置的position。  
+        //var curPanoTransform = player.currentPano && this.transformAtPanos[player.currentPano.id] || {}
+        var curPanoTransform = this.transformAtPanos[ getTransformSid()] || {}
          
-        if(info.type){
-            if(!plane.material.map){
-                if(info.type == "video"){ 
-                    plane.material.map = new THREE.VideoTexture( info.media ); 
+        
+        info.depth && this.scale.setZ(info.depth / settings.overlay.depth)
+
+        this.posCustom = info.pos ? info.pos.clone() : this.position.clone();
+        //没有单独设置position的漫游点使用的position
+        this.position.copy(curPanoTransform.pos || this.posCustom)
+
+        this.quaCustom = info.qua ? info.qua.clone() : this.quaternion.clone()
+        this.quaternion.copy(curPanoTransform.qua || this.quaCustom);
 
+        this.widthCustom = info.width
+        this.heightCustom = info.height
+        this.width = curPanoTransform.width || this.widthCustom
+        this.height = curPanoTransform.height || this.heightCustom
+        var a = this.getScaleBySize(this.width, this.height)
+        this.scale.setX(a.x)
+        this.scale.setY(a.y)
 
-                    this.soundBtn.scale.set(1/this.scale.x,1/this.scale.y,1/this.scale.z)
+        if (info.type) {
+            if (!plane.material.map) {
+                if (info.type == "video") {
+                    plane.material.map = new THREE.VideoTexture(info.media);
+                    this.hasRequestLoad = true
 
-                    
-                }else{  
-                    plane.material.map = Texture.load(info.file,()=>{
-                        if(this._loadDone)this._loadDone()
-                    }) 
-                } 
-                plane.material.map.wrapS = plane.material.map.wrapT = THREE.ClampToEdgeWrapping;
+                    plane.material.map.wrapS = plane.material.map.wrapT = THREE.ClampToEdgeWrapping;
+                    plane.material.map.minFilter = THREE.LinearFilter;
+                    plane.material.map.magFilter = THREE.LinearFilter;
+                    plane.material.map.generateMipmaps = true;
+
+                } else {
+                    this._loadDones = []
+                    /* plane.material.map = Texture.load(info.file,()=>{
+                        if(this._loadDones){
+                            this._loadDones.forEach(e=>e())
+                            this._loadDones = null
+                        }
+                    })  */
+                }
+                /* plane.material.map.wrapS = plane.material.map.wrapT = THREE.ClampToEdgeWrapping;
                 plane.material.map.minFilter = THREE.LinearFilter;
                 plane.material.map.magFilter = THREE.LinearFilter;
-                plane.material.map.generateMipmaps = true; 
-            }else plane.material.map.image = info.media; 
+                plane.material.map.generateMipmaps = true;  */
+            } else
+                plane.material.map.image = info.media;
             this.file = info.file;
         }
         this.overlayType = info.type;
-         
-        if(!!this.hasBox != !!info.hasBox){
-            this.addBox(!this.hasBox); 
+
+        if (!!this.hasBox != !!info.hasBox) {
+            this.addBox(!this.hasBox);
         }
-    } 
 
-    Overlay.prototype.addBox = function(state){
-        if(state == !!this.hasBox){ 
+        this.updateMatrixWorld()
+        this.getVisiblePanos()
+
+    }
+
+
+
+   
+
+
+
+
+    Overlay.prototype.addBox = function(state) {
+        if (state == !!this.hasBox) {
             return;
-        } 
-        if(state){
-            var box = new THREE.Mesh(_boxGeometry , _boxMat) 
-            box.position.set(0,0,settings.overlay.depth/2);
-            box.renderOrder = 3 
-            this.plane.position.set(0,0,settings.overlay.depth ); 
+        }
+        if (state) {
+            var box = new THREE.Mesh(_boxGeometry,_boxMat)
+            box.position.set(0, 0, settings.overlay.depth / 2);
+            box.renderOrder = 3
+            this.plane.position.set(0, 0, settings.overlay.depth);
             this.add(box);
-            this.box = box;   
-            
-        }else{
-            this.plane.position.set(0,0,0);
+            this.box = box;
+
+        } else {
+            this.plane.position.set(0, 0, 0);
             this.remove(this.box);
             this.box = null;
-        }  
+        }
         this.hasBox = state
     }
-    
-    
-    
-    
-    
-    Overlay.prototype.preDeal = function(info){
+
+    Overlay.prototype.getSizeByScale = function() {
+        return {
+            width: settings.overlay.width * this.scale.x,
+            height: settings.overlay.height * this.scale.y
+        }
+    }
+    Overlay.prototype.getScaleBySize = function(width, height) {
+        return {
+            x: width / settings.overlay.width,
+            y: height / settings.overlay.height,
+        }
+    }
+
+    Overlay.prototype.preDeal = function(info) {
         info.pos = new THREE.Vector3().fromArray(info.pos)
-        info.qua = new THREE.Quaternion().fromArray(info.qua) 
+        info.qua = new THREE.Quaternion().fromArray(info.qua)
         info.width = parseFloat(info.width)
         info.height = parseFloat(info.height)
         info.depth = parseFloat(info.depth)
@@ -168,9 +238,202 @@ var initOverlay = function(THREE){
         info.qua.x = parseFloat(info.qua.x)
         info.qua.y = parseFloat(info.qua.y)
         info.qua.z = parseFloat(info.qua.z)
-        info.qua.w = parseFloat(info.qua.w) 
+        info.qua.w = parseFloat(info.qua.w)
+
+        if (!info.transformAtPanos)
+            info.transformAtPanos = {}
+
+        for (let i in info.transformAtPanos) {
+            info.transformAtPanos[i].pos = new THREE.Vector3().fromArray(info.transformAtPanos[i].pos)
+            info.transformAtPanos[i].qua = new THREE.Quaternion().fromArray(info.transformAtPanos[i].qua)
+
+        }
+
+    }
+
+    Overlay.prototype.getVisiblePanos = function() {
+        this.visiblePanos = common.getVisiblePano(this.plane.getWorldPosition(), {
+            model: null
+        });
+
+    }
+    
+    
+    Overlay.prototype.updateVisibles = function(panos) {
+        
+        if(settings.isEdit && EditOverlay.editPlane == this){
+            return true
+        }
+        
+        this.visible = !!panos.find(pano=>this.visiblePanos.includes(pano))
+        if (!this.visible && this.overlayType == 'video')
+            this.videoControl('stop')
+    }
+    
+    
+    Overlay.updateVisibles = function(panos) {
+        if (panos === true) {
+            player.overlayGroup.children.forEach(e=>e.visible = true)
+        } else {
+            player.overlayGroup.children.forEach(e=>e.updateVisibles(panos))
+        }
+    }
+
+    Overlay.prototype.videoControl = function(state){
+        if(this.overlayType != "video")return
+        var video = this.plane.material.map.image
+        if(!state || state == 'stop'){
+            video.paused || video.pause()
+            if(state == 'stop'){
+                video.currentTime = 0;
+               
+            }
+            video.shouldPlay = false
+            //console.log("pause")
+        }else if(state){ 
+            video.paused && video.play()
+            video.shouldPlay = true
+            //console.log("play")
+        }
+    }     
+    Overlay.prototype.inSight = function(){
+        if(player.mode == 'panorama'){
+            var position = this.plane.getWorldPosition()
+            var pos2d = math.getPos2d(position, player.camera, $("#player")[0])
+            if(pos2d.trueSide && pos2d.inSight){
+                return true
+            }else{ 
+                var cornerPoint = [
+                    new THREE.Vector3(-settings.overlay.width/2, settings.overlay.height/2, 0),
+                    new THREE.Vector3(settings.overlay.width/2, settings.overlay.height/2, 0),
+                    new THREE.Vector3(settings.overlay.width/2, -settings.overlay.height/2, 0),
+                    new THREE.Vector3(-settings.overlay.width/2, -settings.overlay.height/2, 0),
+                ];            
+                for(var i=0;i<4;i++){
+                    cornerPoint[i].applyMatrix4(this.plane.matrixWorld);
+                    var pos2d = math.getPos2d(cornerPoint[i], player.camera, $("#player")[0])
+                    if(pos2d.trueSide && pos2d.inSight){
+                        return true
+                    }
+                }
+            }
+        }else{
+            return true
+        }
+    }
+    
+    
+    Overlay.prototype.addToLoadQueue = function() {
+        if (this.overlayType == 'photo') {
+            Overlay.loadQueue.includes(this) || Overlay.loadQueue.push(this)
+
+        }
     }
     
     
+    Overlay.prototype.requestDownload = function() {
+        if (this.hasRequestLoad || this.overlayType != 'photo')
+            return
+
+        console.log('overlay beginDownload : ' + this.sid)
+        var plane = this.plane;
+
+        plane.material.map = Texture.load(this.file, ()=>{
+            plane.material.needsUpdate = true
+            if (this._loadDones) {
+                this._loadDones.forEach(e=>e())
+                this._loadDones = null
+            }
+            setTimeout(Overlay.loadNext, 50)
+            plane.material.opacity = 1;
+            console.log('overlay loaded: ' + this.sid)
+        })
+        plane.material.map.wrapS = plane.material.map.wrapT = THREE.ClampToEdgeWrapping;
+        plane.material.map.minFilter = THREE.LinearFilter;
+        plane.material.map.magFilter = THREE.LinearFilter;
+        plane.material.map.generateMipmaps = true;
+
+        this.hasRequestLoad = true
+    }
+
+    Overlay.loadQueue = []; //等待下载的overlay,目前只针对photo
+    Overlay.maxLoadingCount = 3; //同时正在load图片的数量
+    Overlay.loadNext = ()=>{//继续requestDownload  loadQueue中前排的item
+
+        var loadings = player.overlayGroup.children.filter(e=>e.hasRequestLoad && e._loadDones)//开始下载了但是没加载好的
+        
+        Overlay.loadQueue.slice(0, Overlay.maxLoadingCount - loadings.length).forEach(e=>e.requestDownload())
+        Overlay.loadQueue.splice(0, Overlay.maxLoadingCount - loadings.length)
+    }
+
+    Overlay.getNeedLoad = function() {//计算获取loadQueue,每次都重新计算,覆盖旧的
+        if (!player || !player.domElement || !player.mode)
+            return;
+
+        if (player.mode != 'panorama') {
+            if (!Overlay.loadWhenOutside)
+                return; 
+
+            if (Overlay.loadQueue.length == 0) {
+                Overlay.loadQueue = player.overlayGroup.children.filter(e=>!e.hasRequestLoad).slice(0, 5);
+            }
+
+            return;
+        }
+        Overlay.loadWhenOutside = true
+        var overlays = player.overlayGroup.children.filter(e=>!e.hasRequestLoad && e.visiblePanos.includes(player.currentPano))
+        //var maxAngle = THREE.Math.degToRad( cameraLight.getHFOVFromVFOV(70, player.domElement.clientWidth, app.player.domElement.clientHeight) / 2);
+        var cameraDir = player.getDirection()
+
+        /* var maxCount = 5; 
+        if(overlays.length>maxCount){
+            for(var i=0;i<overlays.length;i++){ 
+                //角度为可见范围 
+                var v1 = cameraDir.clone().setY(0);
+                var v2 = overlays[i].plane.getWorldPosition().sub(player.position).setY(0)
+                if(v1.angleTo(v2) <= maxAngle){
+                    Overlay.loadQueue.push(overlays[i])
+                    if(Overlay.loadQueue.length>=10) break;
+                }  
+            } 
+            if(Overlay.loadQueue.length<Overlay.maxLoadingCount){
+                Overlay.loadQueue.push()
+            }
+        }else{ */
+        Overlay.loadQueue = overlays
+        //} 
+
+        var request = [(overlay)=>{
+            return true
+        }
+        ];
+        var rank = [(overlay)=>{
+            var dis = overlay.plane.getWorldPosition().distanceTo(player.position);
+            return -dis
+        }
+        , (overlay)=>{
+            var tagDir = overlay.plane.getWorldPosition().sub(player.position)
+            var angle = tagDir.angleTo(cameraDir)
+            return -angle * 20
+        }
+        ]
+        var result = common.sortByScore(Overlay.loadQueue, request, rank);
+        Overlay.loadQueue = result ? result.slice(0, 5).map(e=>e.item) : player.overlayGroup.children.filter(e=>!e.hasRequestLoad).slice(0, 2);
+
+    }
+
+    Overlay.load = ()=>{//开始下载图片
+        Overlay.getNeedLoad() 
+        Overlay.loadNext()
+        var unloads = player.overlayGroup.children.filter(e=>!e.hasRequestLoad)
+        if (unloads.length) {
+            setTimeout(Overlay.load, 200)
+        } else {
+            Overlay.allRequestLoad = true
+            console.log('allRequestLoad')
+        }
+    }
+
     window.Overlay = Overlay;
-} 
+
+}

+ 176 - 0
SuperTwo762/js/overlay1.js

@@ -0,0 +1,176 @@
+ 
+var initOverlay = function(THREE){
+    var _planeGeometry = new THREE.PlaneGeometry(settings.overlay.width, settings.overlay.height,1,1)
+    var _boxGeometry = new THREE.BoxBufferGeometry(settings.overlay.width, settings.overlay.height, settings.overlay.depth )
+        //ie的mesh 加了polygonOffset也是会重叠。所以去掉前面的face:  (但是突然ie又播放不了videoTexture)
+        var newIndex = [..._boxGeometry.index.array]
+        newIndex.splice(4*6,6)
+        _boxGeometry.setIndex(new THREE.BufferAttribute(new Uint16Array(newIndex), 1))
+     
+
+    var _boxMat = new THREE.MeshBasicMaterial({//MeshStandardMaterial
+            color:"#eeeeee", 
+            transparent: !0 ,
+            opacity:0.8
+        })
+    
+    var overlayGroup = new THREE.Object3D;    player.model.add(overlayGroup);  overlayGroup.name = "overlayGroup"
+    player.overlayGroup = overlayGroup;
+
+
+    var Overlay = function(info){ 
+        THREE.Object3D.call(this); 
+        this.sid = info.sid;
+        if(info.media)this.preDeal(info) 
+        this.build(info);
+        this.name = "overlay_"+this.sid;
+    }
+    Overlay.prototype = Object.create(THREE.Object3D.prototype);
+    
+    Overlay.prototype.build = function(info){
+        
+        var plane = new THREE.Mesh(_planeGeometry, new THREE.MeshBasicMaterial({//MeshStandardMaterial
+            color:"#00c8af",
+            opacity:0.4,
+            transparent:   !info.media.includes('video'),   //视频的声音按钮要求plane不能透明
+            polygonOffset : true,//是否开启多边形偏移		//ie不开启时blank也不会闪烁
+            polygonOffsetFactor : -0.9,//多边形偏移因子
+            polygonOffsetUnits : -4.0,//多边形偏移单位  
+        }) )								
+        plane.renderOrder = 3
+        this.add(plane);
+        this.plane = plane;
+        if(info.hasBox){
+            this.addBox(true)  
+        }   
+        overlayGroup.add(this);
+        
+        if(info.media){ 
+            if(info.media.includes('video')){
+                var video = $('<video controls="controls" loop autoplay x5-playsinline="" webkit-playsinline="true" playsinline="true" controlslist="nodownload"></video>')[0]
+                video.setAttribute("crossOrigin", 'Anonymous')//要在src设置好前解决跨域
+                $(video).on('contextmenu', function () { return false; });//禁止右键点击出
+                 
+                video.src = manage.dealURL(info.file)  ;
+                info.media = video;
+                info.type = "video"
+                
+                video.addEventListener('loadeddata', ()=>{
+                    console.log(this.sid + " loaded!!!")
+                })
+                
+                video.volume = 0
+                video.muted = true 
+                
+                
+                var soundBtn = addSoundBtn(video);
+                this.add(soundBtn)
+                this.soundBtn = soundBtn;
+                
+                var offsetX = 0.11, offsetY = 0.11; //到右下角的距离,单位m 
+                this.soundBtn.position.set(settings.overlay.width*(0.5-1/info.width*offsetX), -settings.overlay.height*(0.5-1/info.height*offsetY),0.01)
+                
+            }else if(info.media.includes('photo')){
+                /* var img = new Image();
+                 
+                img.src = manage.dealURL(info.file) //"https://4dkk.4dage.com/images/images"+Config.projectNum+"/overlay"+this.sid+".jpg?m="+new Date().getTime()
+                info.media = img
+                 */
+                
+                info.type = "photo"  
+                
+            }
+            plane.material.opacity = 1;
+            plane.material.color = new THREE.Color(1,1,1) 
+        }
+        if(info.width == void 0) info.width = settings.overlay.width;
+        if(info.height == void 0) info.height = settings.overlay.height;
+        this.setFromInfo(info) 
+        
+        
+       
+        
+    }
+
+     
+      
+    Overlay.prototype.setFromInfo = function(info){//1 恢复到编辑之前 2 初始加载 
+        var plane = this.plane;
+        info.width && (this.scale.setX(info.width/settings.overlay.width),this.width = info.width)
+        info.height && (this.scale.setY(info.height/settings.overlay.height),this.height = info.height) 
+        info.depth && this.scale.setZ(info.depth/settings.overlay.depth)
+        info.pos && this.position.copy(info.pos);
+        info.qua && this.quaternion.copy(info.qua);
+        
+         
+        if(info.type){
+            if(!plane.material.map){
+                if(info.type == "video"){ 
+                    plane.material.map = new THREE.VideoTexture( info.media ); 
+
+
+                    this.soundBtn.scale.set(1/this.scale.x,1/this.scale.y,1/this.scale.z)
+
+                    
+                }else{  
+                    plane.material.map = Texture.load(info.file,()=>{
+                        if(this._loadDone)this._loadDone()
+                    }) 
+                } 
+                plane.material.map.wrapS = plane.material.map.wrapT = THREE.ClampToEdgeWrapping;
+                plane.material.map.minFilter = THREE.LinearFilter;
+                plane.material.map.magFilter = THREE.LinearFilter;
+                plane.material.map.generateMipmaps = true; 
+            }else plane.material.map.image = info.media; 
+            this.file = info.file;
+        }
+        this.overlayType = info.type;
+         
+        if(!!this.hasBox != !!info.hasBox){
+            this.addBox(!this.hasBox); 
+        }
+    } 
+
+    Overlay.prototype.addBox = function(state){
+        if(state == !!this.hasBox){ 
+            return;
+        } 
+        if(state){
+            var box = new THREE.Mesh(_boxGeometry , _boxMat) 
+            box.position.set(0,0,settings.overlay.depth/2);
+            box.renderOrder = 3 
+            this.plane.position.set(0,0,settings.overlay.depth ); 
+            this.add(box);
+            this.box = box;   
+            
+        }else{
+            this.plane.position.set(0,0,0);
+            this.remove(this.box);
+            this.box = null;
+        }  
+        this.hasBox = state
+    }
+    
+    
+    
+    
+    
+    Overlay.prototype.preDeal = function(info){
+        info.pos = new THREE.Vector3().fromArray(info.pos)
+        info.qua = new THREE.Quaternion().fromArray(info.qua) 
+        info.width = parseFloat(info.width)
+        info.height = parseFloat(info.height)
+        info.depth = parseFloat(info.depth)
+        info.hasBox = parseInt(info.hasBox)
+        info.pos.x = parseFloat(info.pos.x)
+        info.pos.y = parseFloat(info.pos.y)
+        info.pos.z = parseFloat(info.pos.z)
+        info.qua.x = parseFloat(info.qua.x)
+        info.qua.y = parseFloat(info.qua.y)
+        info.qua.z = parseFloat(info.qua.z)
+        info.qua.w = parseFloat(info.qua.w) 
+    }
+    
+    
+    window.Overlay = Overlay;
+} 

File diff suppressed because it is too large
+ 801 - 233
SuperTwo791/js/main_2020_show.js


File diff suppressed because it is too large
+ 57703 - 0
SuperTwo791/js/main_2020_show1.js


+ 374 - 108
SuperTwo791/js/overlay.js

@@ -1,70 +1,90 @@
+var MathLight = {};
+MathLight.RADIANS_PER_DEGREE = Math.PI / 180;
+MathLight.DEGREES_PER_RADIAN = 180 / Math.PI;
+
  
  
- 
- 
-var initOverlay = function(THREE){
-    var _planeGeometry = new THREE.PlaneGeometry(settings.overlay.width, settings.overlay.height,1,1)
-    var _boxGeometry = new THREE.BoxBufferGeometry(settings.overlay.width, settings.overlay.height, settings.overlay.depth )
-        //ie的mesh 加了polygonOffset也是会重叠。所以去掉前面的face:  (但是突然ie又播放不了videoTexture)
-        var newIndex = [..._boxGeometry.index.array]
-        newIndex.splice(4*6,6)
-        _boxGeometry.setIndex(new THREE.BufferAttribute(new Uint16Array(newIndex), 1))
-     
-
-    var _boxMat = new THREE.MeshBasicMaterial({//MeshStandardMaterial
-            color:"#eeeeee", 
-            transparent: !0 ,
-            opacity:0.8
-        })
-    
-    var overlayGroup = new THREE.Object3D;    player.model.add(overlayGroup);  overlayGroup.name = "overlayGroup"
-    player.overlayGroup = overlayGroup;
 
+var initOverlay = function(THREE) {
+    var _planeGeometry = new THREE.PlaneGeometry(settings.overlay.width,settings.overlay.height,1,1)
+    var _boxGeometry = new THREE.BoxBufferGeometry(settings.overlay.width,settings.overlay.height,settings.overlay.depth)
+    //ie的mesh 加了polygonOffset也是会重叠。所以去掉前面的face:  (但是突然ie又播放不了videoTexture)
+    var newIndex = [..._boxGeometry.index.array]
+    newIndex.splice(4 * 6, 6)
+    _boxGeometry.setIndex(new THREE.BufferAttribute(new Uint16Array(newIndex),1))
+
+    var _boxMat = new THREE.MeshBasicMaterial({
+        //MeshStandardMaterial
+        color: "#eeeeee",
+        transparent: !0,
+        opacity: 0.8
+    })
+
+    var overlayGroup = new THREE.Object3D;
+    player.model.add(overlayGroup);
+    overlayGroup.name = "overlayGroup"
+    player.overlayGroup = overlayGroup;
 
-    var Overlay = function(info){ 
-        THREE.Object3D.call(this); 
+    var Overlay = function(info) {
+        THREE.Object3D.call(this);
         this.sid = info.sid;
-        if(info.media)this.preDeal(info)  
+        if (info.media)
+            this.preDeal(info)
         this.build(info);
-        this.name = "overlay_"+this.sid;
+        this.name = "overlay_" + this.sid;
     }
     Overlay.prototype = Object.create(THREE.Object3D.prototype);
-    
-    Overlay.prototype.build = function(info){
+
+    Overlay.prototype.build = function(info) {
         if( info.media.includes('text') && !info.words)return;
-        var plane = new THREE.Mesh(_planeGeometry, new THREE.MeshBasicMaterial({//MeshStandardMaterial
-            color:"#00c8af",
-            opacity:0.4,
+        var plane = new THREE.Mesh(_planeGeometry,new THREE.MeshBasicMaterial({
+            //MeshStandardMaterial
+            color: "#00c8af",
+            opacity: 0.4,
             transparent: !0,
-            polygonOffset : true,//是否开启多边形偏移		//ie不开启时blank也不会闪烁
-            polygonOffsetFactor : -0.9,//多边形偏移因子
-            polygonOffsetUnits : -4.0,//多边形偏移单位  
-        }) )								
+            polygonOffset: true,
+            //是否开启多边形偏移		//ie不开启时blank也不会闪烁
+            polygonOffsetFactor: -0.9,
+            //多边形偏移因子
+            polygonOffsetUnits: -4.0,
+            //多边形偏移单位  
+        }))
         plane.renderOrder = 3
         this.add(plane);
         this.plane = plane;
-        if(info.hasBox){
-            this.addBox(true)  
-        }   
+        if (info.hasBox) {
+            this.addBox(true)
+        }
         overlayGroup.add(this);
-        
-        
-        
-        
-        
-        if(info.media){ 
-            if(info.media.includes('video')){
-                var video = $('<video controls="controls" loop autoplay x5-playsinline="" webkit-playsinline="true" playsinline="true" controlslist="nodownload"></video>')[0]
-                video.setAttribute("crossOrigin", 'Anonymous')//要在src设置好前解决跨域
-                $(video).on('contextmenu', function () { return false; });//禁止右键点击出
+
+        if (info.media) {
+            if (info.media.includes('video')) { 
+                //var id = "video"+ this.sid    id="${ id }"
+                var video = $(`<video  controls="controls" loop autoplay x5-playsinline="" webkit-playsinline="true" playsinline="true" controlslist="nodownload"></video>`)[0]
                  
-                video.src = manage.dealURL(info.file)  ;
+                video.setAttribute("crossOrigin", 'Anonymous')
+                //要在src设置好前解决跨域
+                $(video).on('contextmenu', function() {
+                    return false;
+                });
+                //禁止右键点击出
+
+                video.src = manage.dealURL(info.file);
                 info.media = video;
                 info.type = "video"
-                
-                video.addEventListener('loadeddata', ()=>{
+
+                /* video.addEventListener('loadeddata', ()=>{
                     console.log(this.sid + " loaded!!!")
-                })
+                }) */
+                
+                video.oncanplaythrough = function() {
+                    plane.material.map.needsUpdate = !0
+                    if(video.shouldPlay){
+                        video.play()
+                    } 
+                }
+                
+                
                 video.volume = 0
                 video.muted = true
             }else if(info.media.includes('photo')){
@@ -116,14 +136,16 @@ var initOverlay = function(THREE){
             }
             plane.material.opacity = 1;
             plane.material.color = new THREE.Color(1,1,1) 
+         
         }
-        if(info.width == void 0) info.width = settings.overlay.width;
-        if(info.height == void 0) info.height = settings.overlay.height;
-        this.setFromInfo(info) 
-        
-        
-    }
+        if (info.width == void 0)
+            info.width = settings.overlay.width;
+        if (info.height == void 0)
+            info.height = settings.overlay.height;
+        this.setFromInfo(info)
+        this.fileSrc = info.file
 
+    }
     Overlay.prototype.computeMapRepeat = function(info){//使得文字不变形
         clearInterval(this.mapInterval);
         var map = this.plane.material.map;
@@ -156,70 +178,124 @@ var initOverlay = function(THREE){
         map.needsUpdate = true;
     }
       
-    Overlay.prototype.setFromInfo = function(info){//1 恢复到编辑之前 2 初始加载 
-        var plane = this.plane;
-        info.width && (this.scale.setX(info.width/settings.overlay.width),this.width = info.width)
-        info.height && (this.scale.setY(info.height/settings.overlay.height),this.height = info.height) 
-        info.depth && this.scale.setZ(info.depth/settings.overlay.depth)
-        info.pos && this.position.copy(info.pos);
-        info.qua && this.quaternion.copy(info.qua);
-        if(info.type){
-            if(!plane.material.map){
-                if(info.type == "video"){ 
-                    plane.material.map = new THREE.VideoTexture( info.media );  
-                }else if(info.type == "photo"){   
-                    plane.material.map = Texture.load(info.file,()=>{
-                        if(this._loadDone)this._loadDone()
-                    }) 
-                }else{
-                    plane.material.map = new THREE.Texture;
-                    plane.material.map.image = info.media;
-                    info.media.onload = ()=>{
-                        plane.material.map.needsUpdate = true
-                        this.computeMapRepeat(info)
-                    }
-                }                    
-                plane.material.map.wrapS = plane.material.map.wrapT = THREE.ClampToEdgeWrapping;
+    Overlay.prototype.setFromInfo = function(info) {
+        //1 恢复到编辑之前 2 初始加载 
+        var plane = this.plane; 
+        var transformAtPanos = {}
+        for(var i in info.transformAtPanos){
+            transformAtPanos[i] = {
+                width : info.transformAtPanos[i].width,
+                height : info.transformAtPanos[i].height,
+                pos : info.transformAtPanos[i].pos.clone(),
+                qua : info.transformAtPanos[i].qua.clone(),
+            }      
+        } 
+        
+        this.transformAtPanos = transformAtPanos
+        //在每个漫游点独立设置的position。  
+        //var curPanoTransform = player.currentPano && this.transformAtPanos[player.currentPano.id] || {}
+        var curPanoTransform = this.transformAtPanos[ getTransformSid()] || {}
+         
+        
+        info.depth && this.scale.setZ(info.depth / settings.overlay.depth)
+
+        this.posCustom = info.pos ? info.pos.clone() : this.position.clone();
+        //没有单独设置position的漫游点使用的position
+        this.position.copy(curPanoTransform.pos || this.posCustom)
+
+        this.quaCustom = info.qua ? info.qua.clone() : this.quaternion.clone()
+        this.quaternion.copy(curPanoTransform.qua || this.quaCustom);
+
+        this.widthCustom = info.width
+        this.heightCustom = info.height
+        this.width = curPanoTransform.width || this.widthCustom
+        this.height = curPanoTransform.height || this.heightCustom
+        var a = this.getScaleBySize(this.width, this.height)
+        this.scale.setX(a.x)
+        this.scale.setY(a.y)
+
+        if (info.type) {
+            if (!plane.material.map) {
+                if (info.type == "video") {
+                    plane.material.map = new THREE.VideoTexture(info.media);
+                    this.hasRequestLoad = true
+
+                    plane.material.map.wrapS = plane.material.map.wrapT = THREE.ClampToEdgeWrapping;
+                    plane.material.map.minFilter = THREE.LinearFilter;
+                    plane.material.map.magFilter = THREE.LinearFilter;
+                    plane.material.map.generateMipmaps = true;
+
+                } else {
+                    this._loadDones = []
+                    /* plane.material.map = Texture.load(info.file,()=>{
+                        if(this._loadDones){
+                            this._loadDones.forEach(e=>e())
+                            this._loadDones = null
+                        }
+                    })  */
+                }
+                /* plane.material.map.wrapS = plane.material.map.wrapT = THREE.ClampToEdgeWrapping;
                 plane.material.map.minFilter = THREE.LinearFilter;
                 plane.material.map.magFilter = THREE.LinearFilter;
-                plane.material.map.generateMipmaps = true; 
-            }else plane.material.map.image = info.media; 
+                plane.material.map.generateMipmaps = true;  */
+            } else
+                plane.material.map.image = info.media;
             this.file = info.file;
         }
         this.overlayType = info.type;
-         
-        if(!!this.hasBox != !!info.hasBox){
-            this.addBox(!this.hasBox); 
+
+        if (!!this.hasBox != !!info.hasBox) {
+            this.addBox(!this.hasBox);
         }
-    } 
 
-    Overlay.prototype.addBox = function(state){
-        if(state == !!this.hasBox){ 
+        this.updateMatrixWorld()
+        this.getVisiblePanos()
+
+    }
+
+
+
+   
+
+
+
+
+    Overlay.prototype.addBox = function(state) {
+        if (state == !!this.hasBox) {
             return;
-        } 
-        if(state){
-            var box = new THREE.Mesh(_boxGeometry , _boxMat) 
-            box.position.set(0,0,settings.overlay.depth/2);
-            box.renderOrder = 3 
-            this.plane.position.set(0,0,settings.overlay.depth ); 
+        }
+        if (state) {
+            var box = new THREE.Mesh(_boxGeometry,_boxMat)
+            box.position.set(0, 0, settings.overlay.depth / 2);
+            box.renderOrder = 3
+            this.plane.position.set(0, 0, settings.overlay.depth);
             this.add(box);
-            this.box = box;   
-            
-        }else{
-            this.plane.position.set(0,0,0);
+            this.box = box;
+
+        } else {
+            this.plane.position.set(0, 0, 0);
             this.remove(this.box);
             this.box = null;
-        }  
+        }
         this.hasBox = state
     }
-    
-    
-    
-    
-    
-    Overlay.prototype.preDeal = function(info){
+
+    Overlay.prototype.getSizeByScale = function() {
+        return {
+            width: settings.overlay.width * this.scale.x,
+            height: settings.overlay.height * this.scale.y
+        }
+    }
+    Overlay.prototype.getScaleBySize = function(width, height) {
+        return {
+            x: width / settings.overlay.width,
+            y: height / settings.overlay.height,
+        }
+    }
+
+    Overlay.prototype.preDeal = function(info) {
         info.pos = new THREE.Vector3().fromArray(info.pos)
-        info.qua = new THREE.Quaternion().fromArray(info.qua) 
+        info.qua = new THREE.Quaternion().fromArray(info.qua)
         info.width = parseFloat(info.width)
         info.height = parseFloat(info.height)
         info.depth = parseFloat(info.depth)
@@ -232,6 +308,16 @@ var initOverlay = function(THREE){
         info.qua.z = parseFloat(info.qua.z)
         info.qua.w = parseFloat(info.qua.w)
 
+        if (!info.transformAtPanos)
+            info.transformAtPanos = {}
+
+        for (let i in info.transformAtPanos) {
+            info.transformAtPanos[i].pos = new THREE.Vector3().fromArray(info.transformAtPanos[i].pos)
+            info.transformAtPanos[i].qua = new THREE.Quaternion().fromArray(info.transformAtPanos[i].qua)
+
+        }
+
+
         if(info.media.includes("text")){ 
             /* 
                 只有http能加载
@@ -271,11 +357,191 @@ var initOverlay = function(THREE){
               
 
         }
+
     }
-   
 
+    Overlay.prototype.getVisiblePanos = function() {
+        this.visiblePanos = common.getVisiblePano(this.plane.getWorldPosition(), {
+            model: null
+        });
+
+    }
+    
+    
+    Overlay.prototype.updateVisibles = function(panos) {
+        
+        if(settings.isEdit && EditOverlay.editPlane == this){
+            return true
+        }
+        
+        this.visible = !!panos.find(pano=>this.visiblePanos.includes(pano))
+        if (!this.visible && this.overlayType == 'video')
+            this.videoControl('stop')
+    }
+    
+    
+    Overlay.updateVisibles = function(panos) {
+        if (panos === true) {
+            player.overlayGroup.children.forEach(e=>e.visible = true)
+        } else {
+            player.overlayGroup.children.forEach(e=>e.updateVisibles && e.updateVisibles(panos))
+        }
+    }
+
+    Overlay.prototype.videoControl = function(state){
+        if(this.overlayType != "video")return
+        var video = this.plane.material.map.image
+        if(!state || state == 'stop'){
+            video.paused || video.pause()
+            if(state == 'stop'){
+                video.currentTime = 0;
+               
+            }
+            video.shouldPlay = false
+            //console.log("pause")
+        }else if(state){ 
+            video.paused && video.play()
+            video.shouldPlay = true
+            //console.log("play")
+        }
+    }     
+    Overlay.prototype.inSight = function(){
+        if(player.mode == 'panorama'){
+            var position = this.plane.getWorldPosition()
+            var pos2d = math.getPos2d(position, player.camera, $("#player")[0])
+            if(pos2d.trueSide && pos2d.inSight){
+                return true
+            }else{ 
+                var cornerPoint = [
+                    new THREE.Vector3(-settings.overlay.width/2, settings.overlay.height/2, 0),
+                    new THREE.Vector3(settings.overlay.width/2, settings.overlay.height/2, 0),
+                    new THREE.Vector3(settings.overlay.width/2, -settings.overlay.height/2, 0),
+                    new THREE.Vector3(-settings.overlay.width/2, -settings.overlay.height/2, 0),
+                ];            
+                for(var i=0;i<4;i++){
+                    cornerPoint[i].applyMatrix4(this.plane.matrixWorld);
+                    var pos2d = math.getPos2d(cornerPoint[i], player.camera, $("#player")[0])
+                    if(pos2d.trueSide && pos2d.inSight){
+                        return true
+                    }
+                }
+            }
+        }else{
+            return true
+        }
+    }
+    
+    
+    Overlay.prototype.addToLoadQueue = function() {
+        if (this.overlayType == 'photo') {
+            Overlay.loadQueue.includes(this) || Overlay.loadQueue.push(this)
+
+        }
+    }
+    
+    
+    Overlay.prototype.requestDownload = function() {
+        if (this.hasRequestLoad || this.overlayType != 'photo')
+            return
+
+        console.log('overlay beginDownload : ' + this.sid)
+        var plane = this.plane;
+
+        plane.material.map = Texture.load(this.file, ()=>{
+            plane.material.needsUpdate = true
+            if (this._loadDones) {
+                this._loadDones.forEach(e=>e())
+                this._loadDones = null
+            }
+            setTimeout(Overlay.loadNext, 50)
+            plane.material.opacity = 1;
+            console.log('overlay loaded: ' + this.sid)
+        })
+        plane.material.map.wrapS = plane.material.map.wrapT = THREE.ClampToEdgeWrapping;
+        plane.material.map.minFilter = THREE.LinearFilter;
+        plane.material.map.magFilter = THREE.LinearFilter;
+        plane.material.map.generateMipmaps = true;
+
+        this.hasRequestLoad = true
+    }
 
+    Overlay.loadQueue = []; //等待下载的overlay,目前只针对photo
+    Overlay.maxLoadingCount = 3; //同时正在load图片的数量
+    Overlay.loadNext = ()=>{//继续requestDownload  loadQueue中前排的item
 
+        var loadings = player.overlayGroup.children.filter(e=>e.hasRequestLoad && e._loadDones)//开始下载了但是没加载好的
+        
+        Overlay.loadQueue.slice(0, Overlay.maxLoadingCount - loadings.length).forEach(e=>e.requestDownload())
+        Overlay.loadQueue.splice(0, Overlay.maxLoadingCount - loadings.length)
+    }
+
+    Overlay.getNeedLoad = function() {//计算获取loadQueue,每次都重新计算,覆盖旧的
+        if (!player || !player.domElement || !player.mode)
+            return;
+
+        if (player.mode != 'panorama') {
+            if (!Overlay.loadWhenOutside)
+                return; 
+
+            if (Overlay.loadQueue.length == 0) {
+                Overlay.loadQueue = player.overlayGroup.children.filter(e=>!e.hasRequestLoad).slice(0, 5);
+            }
+
+            return;
+        }
+        Overlay.loadWhenOutside = true
+        var overlays = player.overlayGroup.children.filter(e=>!e.hasRequestLoad && e.visiblePanos.includes(player.currentPano))
+        //var maxAngle = THREE.Math.degToRad( cameraLight.getHFOVFromVFOV(70, player.domElement.clientWidth, app.player.domElement.clientHeight) / 2);
+        var cameraDir = player.getDirection()
+
+        /* var maxCount = 5; 
+        if(overlays.length>maxCount){
+            for(var i=0;i<overlays.length;i++){ 
+                //角度为可见范围 
+                var v1 = cameraDir.clone().setY(0);
+                var v2 = overlays[i].plane.getWorldPosition().sub(player.position).setY(0)
+                if(v1.angleTo(v2) <= maxAngle){
+                    Overlay.loadQueue.push(overlays[i])
+                    if(Overlay.loadQueue.length>=10) break;
+                }  
+            } 
+            if(Overlay.loadQueue.length<Overlay.maxLoadingCount){
+                Overlay.loadQueue.push()
+            }
+        }else{ */
+        Overlay.loadQueue = overlays
+        //} 
+
+        var request = [(overlay)=>{
+            return true
+        }
+        ];
+        var rank = [(overlay)=>{
+            var dis = overlay.plane.getWorldPosition().distanceTo(player.position);
+            return -dis
+        }
+        , (overlay)=>{
+            var tagDir = overlay.plane.getWorldPosition().sub(player.position)
+            var angle = tagDir.angleTo(cameraDir)
+            return -angle * 20
+        }
+        ]
+        var result = common.sortByScore(Overlay.loadQueue, request, rank);
+        Overlay.loadQueue = result ? result.slice(0, 5).map(e=>e.item) : player.overlayGroup.children.filter(e=>!e.hasRequestLoad).slice(0, 2);
+
+    }
+
+    Overlay.load = ()=>{//开始下载图片
+        Overlay.getNeedLoad() 
+        Overlay.loadNext()
+        var unloads = player.overlayGroup.children.filter(e=>!e.hasRequestLoad)
+        if (unloads.length) {
+            setTimeout(Overlay.load, 200)
+        } else {
+            Overlay.allRequestLoad = true
+            console.log('allRequestLoad')
+        }
+    }
 
 
     function findBreakPoint(text, width, context) {
@@ -323,6 +589,6 @@ var initOverlay = function(THREE){
 
 
    
-    
     window.Overlay = Overlay;
-} 
+
+}

+ 328 - 0
SuperTwo791/js/overlay1.js

@@ -0,0 +1,328 @@
+ 
+ 
+ 
+ 
+var initOverlay = function(THREE){
+    var _planeGeometry = new THREE.PlaneGeometry(settings.overlay.width, settings.overlay.height,1,1)
+    var _boxGeometry = new THREE.BoxBufferGeometry(settings.overlay.width, settings.overlay.height, settings.overlay.depth )
+        //ie的mesh 加了polygonOffset也是会重叠。所以去掉前面的face:  (但是突然ie又播放不了videoTexture)
+        var newIndex = [..._boxGeometry.index.array]
+        newIndex.splice(4*6,6)
+        _boxGeometry.setIndex(new THREE.BufferAttribute(new Uint16Array(newIndex), 1))
+     
+
+    var _boxMat = new THREE.MeshBasicMaterial({//MeshStandardMaterial
+            color:"#eeeeee", 
+            transparent: !0 ,
+            opacity:0.8
+        })
+    
+    var overlayGroup = new THREE.Object3D;    player.model.add(overlayGroup);  overlayGroup.name = "overlayGroup"
+    player.overlayGroup = overlayGroup;
+
+
+    var Overlay = function(info){ 
+        THREE.Object3D.call(this); 
+        this.sid = info.sid;
+        if(info.media)this.preDeal(info)  
+        this.build(info);
+        this.name = "overlay_"+this.sid;
+    }
+    Overlay.prototype = Object.create(THREE.Object3D.prototype);
+    
+    Overlay.prototype.build = function(info){
+        if( info.media.includes('text') && !info.words)return;
+        var plane = new THREE.Mesh(_planeGeometry, new THREE.MeshBasicMaterial({//MeshStandardMaterial
+            color:"#00c8af",
+            opacity:0.4,
+            transparent: !0,
+            polygonOffset : true,//是否开启多边形偏移		//ie不开启时blank也不会闪烁
+            polygonOffsetFactor : -0.9,//多边形偏移因子
+            polygonOffsetUnits : -4.0,//多边形偏移单位  
+        }) )								
+        plane.renderOrder = 3
+        this.add(plane);
+        this.plane = plane;
+        if(info.hasBox){
+            this.addBox(true)  
+        }   
+        overlayGroup.add(this);
+        
+        
+        
+        
+        
+        if(info.media){ 
+            if(info.media.includes('video')){
+                var video = $('<video controls="controls" loop autoplay x5-playsinline="" webkit-playsinline="true" playsinline="true" controlslist="nodownload"></video>')[0]
+                video.setAttribute("crossOrigin", 'Anonymous')//要在src设置好前解决跨域
+                $(video).on('contextmenu', function () { return false; });//禁止右键点击出
+                 
+                video.src = manage.dealURL(info.file)  ;
+                info.media = video;
+                info.type = "video"
+                
+                video.addEventListener('loadeddata', ()=>{
+                    console.log(this.sid + " loaded!!!")
+                })
+                video.volume = 0
+                video.muted = true
+            }else if(info.media.includes('photo')){
+                /* var img = new Image();
+                 
+                img.src = manage.dealURL(info.file) //"https://4dkk.4dage.com/images/images"+Config.projectNum+"/overlay"+this.sid+".jpg?m="+new Date().getTime()
+                info.media = img
+                 */ 
+                info.type = "photo"  
+                
+            }else if(info.media.includes('text')){
+                info.type = "text";
+                
+                var fontSize = 40;
+                var lineHeight = fontSize * 2.1;//fontSize + 行间距
+                var texWidthRitio = 0.86  
+                var canvas = document.createElement('canvas');  
+                var context = canvas.getContext('2d');
+                canvas.width = 1024; 
+                context.font =  `${fontSize}px 微软雅黑`;     
+                 
+                var result = []
+
+                info.words.forEach((words)=>{
+                    if(!words){result.push("");return;}
+                    result = result.concat ( breakLinesForCanvas(
+                        words,
+                        //'使用很寻常的二分查找,如果某一个位置之前的文字宽度小于等于设定的宽度,并且它之后一个字之前的文字宽度大于设定的宽度,那么这个位置就是文本的换行点。上面只是找到一个换行点,对于输入的一段文本,需要循环查找,直到不存在这样的换行点为止, 完整的代码如下',
+                        context, canvas.width * texWidthRitio ) )
+                })
+
+                
+               
+                canvas.height = (result.length + 1 ) * lineHeight  
+                var context = canvas.getContext('2d');//不知为什么要再获取一次context才行
+                context.font =  `${fontSize}px 微软雅黑`;     
+                /* context.fillStyle = '#fff';
+                context.fillRect(0,0,canvas.width,canvas.height); */
+                context.fillStyle = '#f5c772';
+                result.forEach(function(line, index) {
+                    context.fillText(line, canvas.width * (1-texWidthRitio)/ 2, lineHeight * (index + 1));
+                });
+
+                var url = canvas.toDataURL()    
+                var img = new Image();
+                img.src = url;
+                info.media = img;
+                info.lineCount = result.length
+            }
+            plane.material.opacity = 1;
+            plane.material.color = new THREE.Color(1,1,1) 
+        }
+        if(info.width == void 0) info.width = settings.overlay.width;
+        if(info.height == void 0) info.height = settings.overlay.height;
+        this.setFromInfo(info) 
+        
+        
+    }
+
+    Overlay.prototype.computeMapRepeat = function(info){//使得文字不变形
+        clearInterval(this.mapInterval);
+        var map = this.plane.material.map;
+        var tw = map.image.width,  th = map.image.height,
+            w = this.width, h = this.height;
+            
+        var ratio = (h / w) / (th / tw); //显示的部分占据整个图高度的比例 
+        map.repeat.y = ratio    
+        if(th / tw > h / w){ 
+            //如果贴图设置成不repeat(缺点是会有一段白屏期)
+            /* map.offset.y = 1 - ratio;//向下移动 1-ratio个高度, 使图片的顶部显示在plane的最上方;之后滚动时正常repeat在 1-ratio到0之间变化 , 为了连续变化,改成 1 到 -ratio
+            this.mapInterval = setInterval(()=>{
+                map.offset.y -= 0.003;
+                if(map.offset.y < -ratio )map.offset.y = 1
+            },20) */
+               
+            //如果贴图设置成 repeat(缺点是 可能衔接时的缝隙比较窄)
+            map.wrapS = map.wrapT = THREE.RepeatWrapping; 
+            map.offset.y = 1 - ratio;//向下移动 1-ratio个高度, 使图片的顶部显示在plane的最上方;之后滚动时正常repeat在 1-ratio到0之间变化 , 为了连续变化,改成 1 到 -ratio
+            this.mapInterval = setInterval(()=>{
+                map.offset.y -= 0.013 / info.lineCount ;
+                //if(map.offset.y < -ratio )map.offset.y = 1
+            },20)  
+            
+        }else{//如果图可以完全展示
+            map.offset.y = (1 - ratio) / 2;//居中
+            map.wrapS = map.wrapT = THREE.ClampToEdgeWrapping;
+            
+        }
+        map.needsUpdate = true;
+    }
+      
+    Overlay.prototype.setFromInfo = function(info){//1 恢复到编辑之前 2 初始加载 
+        var plane = this.plane;
+        info.width && (this.scale.setX(info.width/settings.overlay.width),this.width = info.width)
+        info.height && (this.scale.setY(info.height/settings.overlay.height),this.height = info.height) 
+        info.depth && this.scale.setZ(info.depth/settings.overlay.depth)
+        info.pos && this.position.copy(info.pos);
+        info.qua && this.quaternion.copy(info.qua);
+        if(info.type){
+            if(!plane.material.map){
+                if(info.type == "video"){ 
+                    plane.material.map = new THREE.VideoTexture( info.media );  
+                }else if(info.type == "photo"){   
+                    plane.material.map = Texture.load(info.file,()=>{
+                        if(this._loadDone)this._loadDone()
+                    }) 
+                }else{
+                    plane.material.map = new THREE.Texture;
+                    plane.material.map.image = info.media;
+                    info.media.onload = ()=>{
+                        plane.material.map.needsUpdate = true
+                        this.computeMapRepeat(info)
+                    }
+                }                    
+                plane.material.map.wrapS = plane.material.map.wrapT = THREE.ClampToEdgeWrapping;
+                plane.material.map.minFilter = THREE.LinearFilter;
+                plane.material.map.magFilter = THREE.LinearFilter;
+                plane.material.map.generateMipmaps = true; 
+            }else plane.material.map.image = info.media; 
+            this.file = info.file;
+        }
+        this.overlayType = info.type;
+         
+        if(!!this.hasBox != !!info.hasBox){
+            this.addBox(!this.hasBox); 
+        }
+    } 
+
+    Overlay.prototype.addBox = function(state){
+        if(state == !!this.hasBox){ 
+            return;
+        } 
+        if(state){
+            var box = new THREE.Mesh(_boxGeometry , _boxMat) 
+            box.position.set(0,0,settings.overlay.depth/2);
+            box.renderOrder = 3 
+            this.plane.position.set(0,0,settings.overlay.depth ); 
+            this.add(box);
+            this.box = box;   
+            
+        }else{
+            this.plane.position.set(0,0,0);
+            this.remove(this.box);
+            this.box = null;
+        }  
+        this.hasBox = state
+    }
+    
+    
+    
+    
+    
+    Overlay.prototype.preDeal = function(info){
+        info.pos = new THREE.Vector3().fromArray(info.pos)
+        info.qua = new THREE.Quaternion().fromArray(info.qua) 
+        info.width = parseFloat(info.width)
+        info.height = parseFloat(info.height)
+        info.depth = parseFloat(info.depth)
+        info.hasBox = parseInt(info.hasBox)
+        info.pos.x = parseFloat(info.pos.x)
+        info.pos.y = parseFloat(info.pos.y)
+        info.pos.z = parseFloat(info.pos.z)
+        info.qua.x = parseFloat(info.qua.x)
+        info.qua.y = parseFloat(info.qua.y)
+        info.qua.z = parseFloat(info.qua.z)
+        info.qua.w = parseFloat(info.qua.w)
+
+        if(info.media.includes("text")){ 
+            /* 
+                只有http能加载
+             */
+            $.ajax({ 
+                url: "/api/web/list",
+                type: 'POST',
+                dataType: "json", 
+                cache: false, 
+                contentType: 'application/json;charset=UTF-8',
+                data : JSON.stringify({"pageNum":1,"pageSize":1000} ),
+                
+                success: (data)=>{ 
+                    console.log(data)
+                    var words = [];
+                    data.data.list.forEach((item,index)=>{
+                        /* words += item.nickName; words += "  "
+                        words += item.createTime; words += "\n\n"  
+                        words += item.msg; words += "\n"
+                        words += "————————\n\n"  */
+
+                        words.push(item.nickName + " " + item.createTime);
+                        //words.push("");
+                        words.push(item.msg);
+                        words.push("————————————————");
+                        words.push("");
+          
+                    })
+                    console.log(words)
+                    info.words = words 
+                    this.build(info)
+                },
+                error: function (msg) {
+                    console.log(msg)
+                }
+            });
+              
+
+        }
+    }
+   
+
+
+
+
+
+    function findBreakPoint(text, width, context) {
+        var min = 0;
+        var max = text.length - 1;
+
+        while (min <= max) {
+            var middle = Math.floor((min + max) / 2);
+            var middleWidth = context.measureText(text.substr(0, middle)).width;
+            var oneCharWiderThanMiddleWidth = context.measureText(text.substr(0, middle + 1)).width;
+            if (middleWidth <= width && oneCharWiderThanMiddleWidth > width) {
+                return middle;
+            }
+            if (middleWidth < width) {
+                min = middle + 1;
+            } else {
+                max = middle - 1;
+            }
+        }
+
+        return -1;
+    }
+
+    function breakLinesForCanvas(text, context, width, font) {  
+        var result = [];
+        var breakPoint = 0;
+
+        if (font) {
+            context.font = font;
+        }
+
+        while ((breakPoint = findBreakPoint(text, width, context)) !== -1) {
+            result.push(text.substr(0, breakPoint));
+            text = text.substr(breakPoint);
+        }
+
+        if (text) {
+            result.push(text);
+        }
+
+        return result;
+    }
+
+
+
+
+   
+    
+    window.Overlay = Overlay;
+} 

+ 219 - 83
edit-backstage/css/lzb.css

@@ -247,12 +247,7 @@ ul li {
     color: #999;
 }
 
-.toolRight .link {
-    border-bottom: 1px solid #5d5d5d;
-    margin-bottom: 20px;
-}
-
-.toolRight .link input {
+.toolRight .link input:first-child {
     margin-bottom: 10px;
 }
 
@@ -290,9 +285,11 @@ ul.MenuOptions li.chosen {
     height: 100%;
 }
 
-.tourListWrap {
+.tourList>ul{
     height: 100%;
-    overflow: scroll;
+    overflow-y: scroll;
+    /* overflow-x: hidden; */
+    /* width: 100%; */
 }
 
 .toolRight .input, .toolRight .editText {
@@ -470,24 +467,25 @@ ul.MenuOptions li.chosen {
     color: #00b4ed;
 }
 
-.tourList {
+#tourItemList {
     padding-top: 1.4vw !important;
+    height: calc(100% - 368px); /*  减去在它上面的部分 */
 }
 
  
 
-#tourSwitchTitle {
-    margin: 0;
-}
+ 
 
 .switch {
-    display: flex;
+        text-align: left;
+    /* display: flex; */
     /* justify-content: center; */
-    margin-left:5px !important
+    /* margin-left:5px !important */
 } 
 .switch label {
     display: block;
     vertical-align: middle;
+    margin:2px 0;
 }
 
 .switch input {
@@ -584,29 +582,30 @@ ul.MenuOptions li.chosen {
 
 
 
-.toolRight .snapTour .tourList {
+.toolRight .snapTour #tourList {
     padding-bottom: 20px;
     height: 100%;
 }
 
-.toolRight .snapTour .tourList li {
+.toolRight .snapTour .tourList li.guideItem {
     height: 75px;
     display: flex;
     margin: 16px 0;
+    cursor: pointer;
 }
 
-.toolRight .snapTour .tourList li:first-child {
+.toolRight .snapTour .tourList li.guideItem:first-child {
     margin-top: 0;
 }
 
-.toolRight .snapTour .tourList li>div:nth-child(2) {
+.toolRight .snapTour .tourList li.guideItem>div:nth-child(2) {
     /* background: #3e1313; */
     width: calc(100% - 107px);
     height: 100%;
     position: relative;
 }
 
-.toolRight .snapTour .tourList li>div:nth-child(2) span {
+.toolRight .snapTour .tourList li.guideItem>div:nth-child(2) span {
     text-align: left;
     margin: 0 10px 0 0;
     font-size: 14px;
@@ -619,10 +618,10 @@ ul.MenuOptions li.chosen {
     color: #00b4ed;
     word-wrap: break-word;
     line-height: 22px;
-    cursor: text;
+    /* cursor: text; */
 }
 
-.toolRight .snapTour .tourList li>div:first-child span {
+.toolRight .snapTour .tourList li.guideItem>div:first-child span {
     border-radius: 11px;
     background: #373939;
     width: 22px;
@@ -634,7 +633,7 @@ ul.MenuOptions li.chosen {
     margin-right: 10px;
 }
 
-.toolRight .snapTour .tourList li:last-child>div:first-child span {
+.toolRight .snapTour .tourList li.guideItem:last-child>div:first-child span {
     background: #00b4ed
 }
 
@@ -645,11 +644,11 @@ ul.MenuOptions li.chosen {
     height: 82% !important;
 }
 
-.toolRight .snapTour .tourList li>div:first-child {
+.toolRight .snapTour .tourList li.guideItem>div:first-child {
     position: relative;
 }
 
-.toolRight .snapTour .tourList li>div:first-child div.line {
+.toolRight .snapTour .tourList li.guideItem>div:first-child div.line {
     border-left: 2px solid #373939;
     height: 70px;
     position: absolute;
@@ -658,18 +657,18 @@ ul.MenuOptions li.chosen {
     z-index: 0;
 }
 
-.toolRight .snapTour .tourList li:last-child div.line {
+.toolRight .snapTour .tourList li.guideItem:last-child div.line {
     display: none;
 }
 
-.toolRight .snapTour .tourList li .preview {
+.toolRight .snapTour .tourList li.guideItem .preview {
     width: 75px;
     cursor: pointer;
     position: relative;
     overflow: hidden;
 }
 
-.toolRight .snapTour .tourList li .preview::before {
+.toolRight .snapTour .tourList li.guideItem .preview::before {
     content: '删除';
     width: 50px;
     height: 30px;
@@ -682,11 +681,11 @@ ul.MenuOptions li.chosen {
     transform: translate(-250%, -50%);
 }
 
-.toolRight .snapTour .tourList li .preview:hover::before {
+.toolRight .snapTour .tourList li.guideItem .preview:hover::before {
     transform: translate(-50%, -50%);
 }
 
-.toolRight .snapTour .tourList li .preview div {
+.toolRight .snapTour .tourList li.guideItem .preview div {
     width: 100%;
     height: 100%;
     border-radius: 3px;
@@ -703,11 +702,11 @@ ul.MenuOptions li.chosen {
     margin: 0 !important;
 }
 
-.toolRight .snapTour .tourList li .preview div:hover {
+.toolRight .snapTour .tourList li.guideItem .preview div:hover {
     opacity: 0.2;
 }
 
-.toolRight .snapTour .tourList li input {
+.toolRight .snapTour .tourList li.guideItem input {
     position: absolute;
     top: -5px;
     left: 0;
@@ -852,8 +851,12 @@ ul.MenuOptions li.chosen {
     display: block;
 }
 
-.toolRight .playBox[data-type='music']>div:first-child {
-    background-image: url("../images/soundPlay.png");
+.toolRight .playBox[data-type='music']>div:first-child { 
+    /* background-image: url("../images/soundPlay.png"); */
+    background-image: url("../images/Volume btn_on.png");
+    background-size: 50%;
+    background-repeat:no-repeat;
+    background-position:center;
 }
 
 .toolRight .playBox[data-type='music']>div:first-child.playing {
@@ -894,28 +897,12 @@ ul.MenuOptions li.chosen {
 
 .toolBottom .midBottom {
     width: 100%;
-    height: 93px;
+    height: 98px;
     position: relative;
 }
 
 .confirmSnap {
-    background: #00b4ed;
-    color: #fff;
-    border-radius: 21px;
-    /* margin: 0 auto; */
-    position: absolute;
-    letter-spacing: 0.05em;
-    height: 42px;
-    text-align: center;
-    line-height: 42px;
-    font-size: 14px;
-    pointer-events: all;
-    cursor: pointer;
-    transition: background 0.2s;
-    top: 8px;
-    width: 220px;
-    left: 50%;
-    transform: translateX(-50%);
+     
 }
 
 #webgl .overlayGui.snapshotGui {
@@ -975,7 +962,7 @@ ul.MenuOptions li.chosen {
     border-radius: 5px;
     cursor: pointer;
     line-height: 105px;
-    background-size: cover;
+    background-size: 100%;
 }
 
 .toolRight .screen .shotImg.blank {
@@ -984,7 +971,7 @@ ul.MenuOptions li.chosen {
     cursor: default; 
 }
 
-.toolRight .hotpoint .spotList>ul>li,  .overlayList li {
+.toolRight .listItem{
     height: 40px;
     margin: 0 0 8px -10px;
     background: #373938;
@@ -998,28 +985,31 @@ ul.MenuOptions li.chosen {
     transition: background 0.1s;
     position: relative;
     overflow: hidden;
+    /* width: 100%; */
+}
+#tourList .listItem{
+    width: calc(100% + 12px);
 }
-
 .toolRight .hotpoint .spotList>ul>li:hover, .toolRight .hotpoint .spotList>ul>li.active {
     background: #565a5b;
 }
 
-.toolRight .hotpoint .spotList li .icon, .toolRight .editDetail .setPos li .icon , .overlayList li .icon{
-    width: 30px;
+.toolRight .listItem .icon{
+    width: 33px;
     margin-left: 10px;
     background-size: 70%;
     background-position-x: 0;
     background-repeat: no-repeat;
     background-position-y: center;
 }
-.toolRight .hotpoint .spotList li .number{
+.toolRight .hotpoint .listItem .number{
     color:#828282;
     margin-right:10px;
 }
- .overlayList li .icon{
+.overlayList li .icon{
      background-image:url(../images/edit/box_video.png);
  }
-.toolRight .hotpoint .spotList li .title, .toolRight .editDetail .setPos li .title, .overlayList li .title{
+.toolRight .listItem .title{
     width: calc(100% - 70px);
     font-size: 14px;
     text-overflow: ellipsis;
@@ -1027,7 +1017,7 @@ ul.MenuOptions li.chosen {
     white-space: nowrap;
 }
 
-.toolRight .hotpoint .spotList li .DelConfirm {
+.toolRight .listItem .DelConfirm{
     width: 82px;
     background: #00b4ed;
     border-radius: 1px;
@@ -1039,11 +1029,11 @@ ul.MenuOptions li.chosen {
     transition: right 0.3s, opacity 0.1s;
 }
 
-.toolRight .hotpoint .spotList li .DelConfirm.active {
+.toolRight .listItem .DelConfirm.active {
     right: -3px;
 }
 
-.toolRight .hotpoint .spotList li .del {
+.toolRight  .listItem .del {
     width: 40px;
     background-image: url(../images/delete.png);
     background-size: 72%;
@@ -1106,9 +1096,11 @@ ul.MenuOptions li.chosen {
     border: 1px solid #5d5d5d;
     position: relative;
     margin: 5px;
-    background-size: contain
+    background-size: contain;
+}
+.toolRight  .upload:hover{
+    background-color:#3d3d3d;
 }
-
 .toolRight .sign ul.chose li>div, .toolRight .upload>div {
     position: relative;
     top: 0;
@@ -1123,7 +1115,7 @@ ul.MenuOptions li.chosen {
 
 .toolRight .sign ul.chose li.upload>div, .toolRight .upload>div {
     background-image: url(../images/plus.png);
-    background-position: center 42%;
+    background-position: center 49%;
     background-size: 15% 15%;
     background-repeat: no-repeat;
 }
@@ -1134,7 +1126,7 @@ ul.MenuOptions li.chosen {
 
 .toolRight .sign ul.chose li.upload span, .toolRight .upload span {
     color: #00b4ed;
-    margin-top: 46%;
+    margin-top: 52%;
     display: inline-block;
     letter-spacing: 0.5px;
 }
@@ -1161,6 +1153,36 @@ ul.MenuOptions li.chosen {
 }
 
 
+
+#midBtns{
+    position: absolute;
+    transform: translateX(-50%);
+    width: 220px;
+    left: 50%;
+    flex-direction: column;
+}
+#midBtns>*{
+    /* color: #fff; */
+    border-radius: 21px;
+    /* margin: 0 auto; */
+    margin: 0px 0 0 0 !important;
+    letter-spacing: 0.05em;
+    height: 38px;
+    text-align: center;
+    line-height: 42px;
+    font-size: 14px;
+    pointer-events: all;
+    cursor:pointer;
+    transition:background 0.2s;
+    width: 220px;
+}
+
+#midBtns button:nth-child(2) {
+    margin: 10px 0 0 0 !important;
+}
+
+
+
 .toolRight  .itemTitle .buttons, .toolRight .remark .buttons{
    position:absolute; right:0;
     
@@ -1223,10 +1245,11 @@ ul.MenuOptions li.chosen {
     color: #fff;
     text-align: center;
     position: relative;
-    display: inline-block;
+    display: block;
     line-height: 90px;
     font-size: 30px;
     font-weight: 300;
+    box-sizing: content-box;
 }
 
 .edit-fun-images a.result>span::after {
@@ -1251,6 +1274,18 @@ ul.MenuOptions li.chosen {
     max-height: 100%;
 }
 
+.edit-fun-images a .play-video{
+    position:absolute;
+    transform: translate(50%,50%); 
+    left: 0; top: 0;
+    opacity:0.3;
+    transition:opacity 0.2s;
+}
+.edit-fun-images a .play-video:hover{
+    opacity:1
+}
+
+
 .edit-fun-images .upload-thum {
     display: block;
     position: relative;
@@ -1594,8 +1629,8 @@ ul.MenuOptions li.chosen {
 .slider .scrollBar .scroll_Track {
     width: 0px;
     height: 4px;
-    background-color: #02c8ae;
-    border: 1px solid #02c8ae;
+    background-color: #00b4ed;
+    border: 1px solid #00b4ed;
     margin: -1px 0 0 0;
 }
 
@@ -1650,14 +1685,18 @@ ul.MenuOptions li.chosen {
     /* line-height: 100px; */
     position: relative;
     color: #a0a0a0;
-					
     width: 200px;
-    background-repeat:no-repeat; 
+    background-repeat:no-repeat;
     margin:15px 0 30px 0;
     text-shadow: 0px 0px 2px rgba(0, 0, 0, 0.4);
     background-image:url("../images/img_videoview@2x.png");
     background-position:center 40%;
     background-size: 17%;
+    display: flex;
+    align-items: center;
+    text-align: center;
+    align-content: center;
+    justify-content: center;
 }
  
 .toolRight .hotpointDetail  .preview{
@@ -1677,8 +1716,9 @@ ul.MenuOptions li.chosen {
     transform:translate(-50%,-50%);
 }
 .preview .text{
-    line-height: 144px;
+    display:inline-block;
     color: #a7a7a7;
+    margin-top: 32px;
 }
 .preview.uploaded .text{
     display:none;
@@ -1701,23 +1741,29 @@ ul.MenuOptions li.chosen {
 }
  	
 				
-#userUploadStyle ul{ 
+#spotTexSelect ul.hotTexUpload{
     display: flex;
 }
-#userUploadStyle .upload{
-    width: 70px;
-    height: 70px !important;
+ 
+#spotTexSelect .upload{ 
     border-radius: 2px;
-    border: 1px solid #5d5d5d;
+    
     position: relative;
 }
-#userUploadStyle .upload>div{
+#spotTexSelect .list .upload{ 
+    width: 70px;
+    height: 70px !important;    
+}
+#spotTexSelect .uploaded:not(:hover){
+    border: 1px solid transparent;
+}
+#spotTexSelect .upload>div{
    background-color:transparent;  
 }
-#userUploadStyle .uploaded>div{
+#spotTexSelect .uploaded>div   {
     background-size:cover;
 }
-#userUploadStyle .upload .del{
+#spotTexSelect .upload .del{
     width:20px;
     background-color: #c77a7a;
     height: 20px;
@@ -1730,20 +1776,23 @@ ul.MenuOptions li.chosen {
     display:none;
 	z-index:9999;
 } 
-#userUploadStyle  .upload .del:before{ 
+#spotTexSelect  .upload .del:before{ 
 	content:'X';
 	font-size:12px;
 	font-family:"iconfont" !important; 
 	color:white;
 	position:relative;
-	top:-7px;
+	top:-5px;
+	right:-6px;
 	
 }
-#userUploadStyle  .upload.uploaded:hover .del{
+#spotTexSelect  .upload.uploaded:hover .del{
     display:block; 
 }
 
 
+
+
 .cad-setting {
     text-align: left;
 }
@@ -1785,4 +1834,91 @@ ul.MenuOptions li.chosen {
     color: #fff;
     letter-spacing: 1px;
     border-radius: 2px;
+}
+
+
+
+
+.selectList {
+    position: relative;
+    text-align: left;
+    height: 32px;
+    overflow: visible;
+    background: #151515;
+}
+#spotTexSelect{
+    height: 50px;
+}
+.selectList .selection {
+    display: block;
+    position: relative;
+    overflow: hidden;
+    color: #fff;
+    padding-right: 40px;
+    padding-left: 4px;
+    text-overflow: ellipsis;
+    white-space: nowrap;
+    cursor: pointer;
+    outline: none;
+    height: 100%;
+    line-height: 30px;
+    transition-duration: 0.1s;
+    border: 1px solid #737373;
+}
+
+.selectList .selection:after {
+    content: "\f0d7";
+    display: block;
+    position: absolute;
+    top: 0;
+    right: 0;
+    width: 30px;
+    height: 45px;
+    font-family: FontAwesome;
+    text-align: center;
+    line-height: 51px;
+}
+
+.selectList .selection.focus {
+    color: #fff;
+}
+
+.selectList>ul {
+    position: absolute;
+    border: 1px solid #737373;
+    z-index: 15400;
+    width: 100%;
+    /* overflow: hidden; */
+    background: #151515;
+    box-shadow: 0 5px 5px rgba(0,0,0,.3);
+    padding: 0;
+    margin-top: -1px;
+    cursor: pointer;
+    /* width: 100%; */
+}
+
+.selectList ul>li {
+    height: 80px;
+    list-style-type: none;
+    /* padding: 0 7px; */
+    line-height: 30px;
+    /*    overflow: hidden; */
+    width: 100%;
+    white-space: nowrap;
+    margin: 0px;
+}
+
+.selectList ul>li.selected {
+    background: #242424;
+}
+.selectList ul>li:hover {
+    background: #2d2d2d;
+     
+}
+
+
+.selectList .selection .upload{
+    width: 45px !important;
+    height: 45px !important;
+    margin:1px;
 }

+ 53 - 0
edit-backstage/css/main.css

@@ -7081,5 +7081,58 @@ a.hasHover.tag-link:hover {
     display:none;
     padding:10px;
     transform:translate(20px, -50%);
+    max-width:400px;
+    letter-spacing:1px;
+    line-height:20px
 }    
+.resultBox{
+    font-family: "Microsoft YaHei";
+    position: absolute;
+    top: 0px;
+    left: 0px;
+    background: rgba(0,0,0,0.1);
+    width: 100%;
+    height: 100%;
+    z-index: 9998;
+    overflow: auto;
+    opacity:0;
+}
+.resultBox>div{
+    position:absolute;
+    left:50%;
+    top: 50%;
+    padding:16px 50px; 
+    line-height: 22px;
+    text-align: center;
+    letter-spacing: 1px;
+    transform: translate(-50%,-140%);
+    background:rgba(0, 0, 0, 0.6);
+    border-radius:8px;
+    text-shadow: 2px 2px 6px rgb(0, 0, 0);
+    word-wrap: break-word;
+    
+}
+ 
+.resultBox.animate {
+    animation: flash 1.3s;
+    -webkit-animation: flash 1.3s;
+    animation-iteration-count: 1;
+}
+ 
+@keyframes flash {
+    0% {
+        opacity: 0;
+    }
+
+    20% {
+        opacity: 1;
+    }
 
+    60% {
+        opacity: 1;
+    }
+
+    100% {
+        opacity: 0;
+    }
+}

+ 261 - 97
edit-backstage/edit_zh.html

@@ -13,7 +13,7 @@
     <meta property="og:image:type" content="image/jpg">
     <meta property="og:image:width" content="1920">
     <meta property="og:image:height" content="1080">
-    <link rel="icon" type="image/png" sizes="32x32" href="./images/icons/favicon.png" class="keep">
+    <link rel="icon" type="image/png" sizes="32x32" href="images/icons/favicon.png" class="keep">
     <link rel="stylesheet" href="css/oldVer/main0.css">
     <link rel="stylesheet" href="css/main.css">
     <link rel="stylesheet" href="css/lzb.css">
@@ -47,6 +47,12 @@
             </div>
             <div class="text">请等待...</div>
         </div>
+        
+        <div class="resultBox hide"><!--提示框 --> 
+            <div data-lang="">保存成功!</div>
+        </div>
+        
+        
         <div class="toolTop hasPad unable">
             <!-- 顶部header -->
             <div class="btns"></div>
@@ -81,10 +87,10 @@
                         <span class="snapTour"></span>
                         <label>自动导览</label>
                     </li>
-                    <!-- <li data-name="VR">
+                    <li data-name="VR">
                         <span class="VREditIcon VR"></span>
                         <label>VR</label>
-                    </li> -->
+                    </li>
                     <li data-name="overlay">
                         <span class="overlay"></span>
                         <label>展览</label>
@@ -93,10 +99,10 @@
                         <span class="panoVisible"></span>
                         <label>漫游可行</label>
                     </li>
-                    <!-- <li data-name="cadMap">
+                    <li data-name="cadMap">
                         <span class="panoVisible"></span>
                         <label>小地图</label>
-                    </li> -->
+                    </li>
                 </ul>
             </div>
             <div class="toolMid">
@@ -323,37 +329,37 @@
                                                 <div id="gui-modes-map" class="ui-icon double active">
                                                     <div data-original-title="导览" id="pullTab" rel="tooltip" title="">
                                                         <img class="icon icon-inside" src="images/auto.png"
-                                                            title="navigation icon" />
+                                                             />
                                                     </div>
                                                     <div data-original-title="热点列表" id="hotList" rel="tooltip" title=""
                                                         style="display: none">
                                                         <img class="icon icon-inside" src="images/hotlist.png"
-                                                            title="navigation icon" />
+                                                             />
                                                     </div>
                                                     <div data-original-title="全景漫游" id="gui-modes-inside" rel="tooltip"
                                                         title="" class="">
                                                         <img class="icon icon-inside" src="images/inside.png"
-                                                            title="navigation icon" />
+                                                             />
                                                     </div>
                                                     <div data-original-title="迷你模型" id="gui-modes-dollhouse"
                                                         rel="tooltip" title="" class="">
                                                         <img class="icon icon-inside" src="images/dollhouse.png"
-                                                            title="navigation icon" />
+                                                             />
                                                     </div>
                                                     <div data-original-title="俯视图" id="gui-modes-floorplan"
                                                         rel="tooltip" title="">
                                                         <img class="icon icon-inside" src="images/floor.png"
-                                                            title="navigation icon" />
+                                                             />
                                                     </div>
                                                     <div data-original-title="VR" id="vr" rel="tooltip" title=""
                                                         style="display: none;">
                                                         <img class="icon icon-inside" src="images/VR.png"
-                                                            title="navigation icon" />
+                                                             />
                                                     </div>
                                                     <div data-original-title="消除外壳" id="gui-remove-face" rel="tooltip"
                                                         title="" style="display: none; float: left;">
                                                         <img class="icon icon-inside" src="images/face.jpg"
-                                                            title="navigation icon" />
+                                                             />
                                                     </div>
                                                 </div>
                                             </div>
@@ -855,7 +861,7 @@
                                                     <img class="keyboard">
                                                 </div> -->
                                             <div class="nav-icon">
-                                                <img src="images/pc_step1.png" class="icon" title="navigation icon"
+                                                <img src="images/pc_step1.png" class="icon" 
                                                     data-page="1">
                                                 <div class="nav-help-button">
                                                     <div class="next-button nav-help-page" data-id="plus"></div>
@@ -892,9 +898,14 @@
                     </div>
                 </div>
                 <div class="midBottom hasPad">
-                    <!-- 中间下部 -->
-                    <div class="confirmSnap innerBtn hide" id="camera-start">点此设置为初始画面</div>
-                    <!--  <div class="innerBtn hide cancel" data-lang="">隐藏该点</div>  -->
+                    <!-- 中间下部 --> 
+                    
+                    <div id="midBtns" class="buttons">
+						<button class="confirmSnap hide innerBtn" id="camera-start">保存当前设置</button> 
+						<button class="innerBtn hide cancel" function="hide">隐藏该点位置</button> 				 
+                    
+                    </div>
+                    
                 </div>
             </div>
             <div class="toolRight">
@@ -908,7 +919,7 @@
                         <!-- <li class="describ noBorderbott">
                             <label class="remark">通过添加热点,您可以进一步装饰您的场景;例如:说明文字、图片、音频、视频等。</label>
                         </li> -->
-                        <!-- <li data-name="MouseMarkerColor" class="tourSelectWarp hotListSwitch">
+                        <li class="tourSelectWarp hotListSwitch">
                             <div class="itemTitle hotListSwitchTitle">
                                 <span>热点列表</span>
                             </div>
@@ -917,13 +928,13 @@
                                     启用热点列表
                                 </label>
                             </ul>
-                        </li> -->
-                        <li data-name="MouseMarkerColor" class="tourSelectWarp hotListSwitch">
+                        </li>
+                        <li class="tourSelectWarp hotListSwitch">
                             <div class="itemTitle">
                                 <span>热点大小 (初始值为1)</span>
                             </div>
                             <ul id="hotIconScale" class="clearfix hotStyle-item colorWrap">
-                                <input class="" type="number" placeholder="请输入热点大小比例" value="1" max="1.5" min="0.3"
+                                <input class="" type="number" placeholder="请输入热点大小比例" value="1" max="1.5" min="0.1"
                                     step="0.1">
                             </ul>
                         </li>
@@ -955,10 +966,10 @@
                                         <input spellcheck="false" placeholder="热点的标题" class="right" type="text"
                                             minlength="1" maxlength="50" placeholder="">
                                     </div><!-- 必填,限15字 ??-->
-                                    <div class="itemTitle" data-size="500">
+                                    <div class="itemTitle" data-size="800">
                                         <span>简介</span>
                                     </div>
-                                    <textarea placeholder="热点的简介" class="editText" maxlength="500"></textarea>
+                                    <textarea placeholder="热点的简介" class="editText" maxlength="800"></textarea>
 
 
 
@@ -980,6 +991,15 @@
                                         <!-- <li class="halfCell" index="scale" data-lang="">缩放</li> -->
                                         <li class="halfCell" index="rotate" data-lang="">旋转</li>
                                     </ul>
+                                    
+                                    
+                                    <ul id="setHotPosForPano" class="switch " style="margin-top:28px">
+                                        <label><input class="mui-switch mui-switch-animbg" type="checkbox">
+                                            当前漫游点独立调整
+                                        </label>
+                                        <label class="remark">如在其他点位出现错位,请开启此开关,独立调整在特定点位的位移/缩放/旋转。</label>
+                                    
+                                    </ul>
                                 </li>
                                 <li class="style">
                                     <div class="itemTitle">
@@ -989,7 +1009,7 @@
                                         <li class="halfCell chosen" index="default">默认</li>
                                         <li class="halfCell" index="user">自定义</li>
                                     </ul>
-                                    <div id="userUploadStyle" class="hide">
+                                    <!-- <div id="userUploadStyle" class="hide">
                                         <ul>
                                             <li class="upload ">
                                                 <div> </div><a class="del"></a>
@@ -998,6 +1018,36 @@
                                                 <div> </div><a class="del"></a>
                                             </li>
                                         </ul>
+                                    </div> -->
+                                    <label class="remark">注:修改样式图会影响到使用该组样式的所有热点。使用该样式的热点会在鼠标划到该样式时显示名称标签。无热点使用的样式会在保存发布后被删除。</label>
+                                    <div id='spotTexSelect' class='selectList'>
+                                    
+                                        <a class="selection">
+                                            <ul class="hotTexUpload">
+                                                <li class="uploaded upload hide">
+                                                    <div></div>
+                                                </li>
+                                                <li class="uploaded upload hide">
+                                                    <div></div>
+                                                </li>
+                                            </ul>
+                                        </a>
+                                        <ul class="list  hide"></ul> 
+                                    </div>
+                                    
+                                </li>
+                                <li class="scale">
+                                    <div class="itemTitle">
+                                        <span>大小</span>
+                                    </div>
+                                    <ul class="MenuOptions innerBtn">
+                                        <li class="halfCell chosen" index="default">默认</li>
+                                        <li class="halfCell" index="user">自定义</li>
+                                    </ul>
+                                    <div id="userHotScale" class="hide">
+                                        <ul id="hotIconScale_2" class="clearfix hotStyle-item colorWrap">
+                                            <input class="" type="number" placeholder="请输入热点大小比例" value="1" max="1.5" min="0.1" step="0.1">
+                                        </ul>
                                     </div>
                                 </li>
                                 <li class="photo">
@@ -1036,7 +1086,7 @@
                                     <div class="itemTitle">
                                         <span>添加音频</span>
                                         <div class="buttons">
-                                            <input type="file" accept="audio/*" id="upload-hotBgm">
+                                            <input type="file" id="upload-hotBgm" accept="audio/*">
                                             <button class="innerBtn submit">上传</button>
                                         </div>
                                     </div>
@@ -1090,16 +1140,32 @@
                                 </li>
                                 <li class="">
                                     <div class="itemTitle">
-                                        <span>其他</span>
+                                        <span>动作类型</span>
                                     </div>
-                                    <ul>
+                                    
+                                    <ul class="MenuOptions innerBtn" name="actionType">
+                                        <li class="halfCell chosen" index="common" data-lang="" style='height: 63px; line-height:61px'>默认</li>
+                                        <li class="halfCell" index="noAction" data-lang="">不打开<br>不校准</li>
+                                        <li class="halfCell" index="dontExam" data-lang="">只打开<br>不校准</li>
+                                    </ul>
+                                    
+                                    
+                                    
+                                    <!-- <ul>
                                         <li>
                                             <input name="noAction" class="editCheckbox" type="checkbox" value="noAction"
                                                 id="noAction">
                                             <label for="noAction"></label>
-                                            <label for="noAction">仅用于指示(不弹窗)</label>
+                                            <label for="noAction">仅用于指示(不打开也不飞近)</label>
                                         </li>
-                                    </ul>
+                                        <li>
+                                            <input name="noAction" class="editCheckbox" type="checkbox" value="noAction"
+                                                id="noAction">
+                                            <label for="noAction"></label>
+                                            <label for="noAction">仅打开(不校准飞近)</label>
+                                        </li>
+                                        
+                                    </ul> -->
                                 </li>
                             </ul>
                         </div>
@@ -1198,14 +1264,14 @@
                             <!-- <div class="unComplete">请填写项目名称</div> -->
                         </li>
                         <li data-name="description">
-                            <div class="itemTitle" data-size="200" id="project-intro2">
+                            <div class="itemTitle" data-size="1000" id="project-intro2">
                                 <span>简介内容</span>
                             </div>
 
                             <textarea placeholder="大场景的简介" id="info-summary" class="editText"
-                                maxlength="200"></textarea>
+                               maxlength="1000"  ></textarea>
 
-                            <!-- <div class="itemTitle" data-size="200" id="project-intro2">
+                            <div class="itemTitle" data-size="200" id="project-intro2">
                                 <span>分享文字</span>
                             </div>
 
@@ -1222,14 +1288,14 @@
                                     <div class="buttons">
                                         <button class="submit innerBtn">更改</button>
                                     </div>
-                                    <input type="file">
+                                    <input type="file" accept="image/*">
                                 </div>
                                 <a class="del hasHover"></a>
-                            </div> -->
+                            </div>
                         </li>
                         <li data-name="hotStyle">
                             <div class="itemTitle">
-                                <span>选择热点样式</span>
+                                <span>选择热点默认样式</span>
                             </div>
                             <ul class="clearfix hotStyle-item">
                                 <li style="background-image: url(images/edit/hotStyle_1.png);"
@@ -1237,28 +1303,31 @@
                                     class="active"></li>
                                 <li style="background-image: url(images/edit/hotStyle_2.png);"
                                     data-val='{"default":"images/point2.png","higt":"images/point2_light.png"}'>
-                                </li>
-                                <!-- <ul>
-                                    <li class="addSpot customizeHotStyle">
-                                        <div class="buttons">
-                                            <button class="innerBtn" id="customizeHot">自定义样式</button>
+                                </li>  
+                                <!-- <li class="addSpot customizeHotStyle" >
+                                    <div class="list edit-fun-images clearfix"></div>
+                                    <div class="upload" id="SpotStyle">
+                                        <div data-type='photo'> 
+                                            <div class="buttons">
+                                                <button class="submit innerBtn">更改</button>
+                                            </div>
+                                            <input type="file" accept="image/*">
                                         </div>
-                                    </li>
-                                </ul> -->
+                                        <a class="del"></a>
+                                    </div>
+                                </li>  -->
                             </ul>
                         </li>
                         <li data-name="floorMarkerColor">
                             <div class="itemTitle">
-                                <span>当前位置标记/导览标记颜色</span>
+                                <span>当前位置/导览路线</span>
                             </div>
                             <ul class="clearfix hotStyle-item colorWrap">
                                 <input id="floorMarkerColorTex" class="color-text" type="text" placeholder="请输入颜色" />
                                 <input id="floorMarkerColor" type="color" />
-                            </ul>
-                        </li>
-                        <li data-name="MouseMarkerColor">
+                            </ul> 
                             <div class="itemTitle">
-                                <span>鼠标标记颜色</span>
+                                <span>鼠标标记</span>
                             </div>
                             <ul class="clearfix hotStyle-item colorWrap">
                                 <input id="mouseMarkerColorTex" class="color-text" type="text" placeholder="请输入颜色" />
@@ -1295,6 +1364,12 @@
                                     <label for="hideMouseMarker">隐藏鼠标标记 </label>
                                 </li>
                                 <li>
+                                    <input name="g_specialScene" class="editCheckbox" type="checkbox"
+                                        value="g_specialScene" id="g_specialScene">
+                                    <label for="g_specialScene"></label>
+                                    <label for="g_specialScene">特殊大场景 <i class="colorRed">-请慎重选择</i> </label>
+                                </li>
+                                <li>
                                     <input name="twoData" class="editCheckbox" type="checkbox" value="twoData"
                                         id="twoData">
                                     <label for="twoData"></label>
@@ -1304,7 +1379,8 @@
                             <ul>
                                 <li>
                                     <label class="remark">注:
-                                        <br>启动二代数据:和tile贴图有关。</label>
+                                        <br>特殊大场景:一般不勾选,是对某些需要特殊处理的场景设置的。如果勾选了还需要将处理的内容写进SpecialScene.js,否则没有作用。
+                                        <br><br>启动二代数据:和tile贴图有关。</label>
                                 </li>
                             </ul>
                         </li>
@@ -1317,7 +1393,7 @@
                             <div class="itemTitle">
                                 <span>背景音乐</span>
                                 <div class="buttons">
-                                    <input type="file" accept="audio/*"  id="upload-bgm">
+                                    <input type="file" accept="audio/*" id="upload-bgm">
                                     <button class="innerBtn submit">上传</button>
                                 </div>
                             </div>
@@ -1332,88 +1408,176 @@
                     </ul>
                 </div>
 
+
+
+
+
                 <div class="snapTour content hide">
-                    <ul>
-                        <div id="tourEdit" class="secondary  editDetail  atRight">
+                    <ul> 
+                        <li class="addTour">
+                            <div class="buttons begin">
+                                <button class="innerBtn">添加导览</button>
+                                <button class="innerBtn">添加片段</button>
+                            </div>
+                        </li>
+                        <li>
+                            <div class="itemTitle">
+                                <span>选择导览过渡效果</span>
+                            </div>
+                            <ul id="tourSwitch" class="switch clearfix hotStyle-item colorWrap">
+                                <label><input class="mui-switch mui-switch-animbg" type="checkbox">
+                                    启用瞬间过渡
+                                </label>
+                            </ul>
+                        </li>
+                        
+                        
+                        <li id="tourList" class='tourList'>  <!-- 总目录-->
+                            <ul>
+
+                            </ul>
+                        </li>
+                        
+                        <!-- <li id="tourFolderList">
+                            <ul>
+
+                            </ul>
+                        </li> -->
+                        
+                        
+                        
+                        
+                        <div id="tourFolderEdit" class="secondary  editDetail  atRight">
                             <div class="itemTitle head">
                                 <span>导览编辑</span>
                                 <!-- <a class="close"></a> -->
                             </div>
                             <div class="content">
                                 <ul>
-                                    <li id="tourName" class="info">
+                                    <li class="tourName info">
                                         <div class="itemTitle" data-size="15" id="project-name1">
                                             <span>导览名称</span>
+                                        </div> 
+                                        <div class="name">
+                                            <input spellcheck="false" placeholder="最多15字" class="right" type="text" minlength="1" maxlength="15" placeholder="" data-oper=tour-input>
+                                        </div><!-- 必填,限15字 ??-->
+                                    </li>
+                                    <li class="audio mediaUpload">
+                                        <div class="itemTitle itemMargin">
+                                            <span>添加音频</span>
+                                            <div class="buttons">
+                                                <input type="file"  accept="audio/*">
+                                                <button class="innerBtn submit">上传</button>
+                                            </div>
+                                        </div>
+                                        <div class="playBox hide" data-type='music'>
+                                            <div><a target="_blank"></a></div>
+                                            <div>
+                                                <span class="title">background</span>
+                                                <span class="delete">删除</span>
+                                            </div>
+                                        </div>
+                                    </li>
+                                    <li>
+                                        <div class="itemTitle">
+                                            <span>选择导览过渡效果</span>
+                                        </div> 
+                                        
+                                        <ul id="folderTourSwitch"  class="MenuOptions innerBtn" >
+                                            <li class="halfCell" index="default" data-lang="">同外层</li>
+                                            <li class="halfCell" index="walk" data-lang="">行走</li>
+                                            <li class="halfCell chosen" index="black" data-lang="">瞬间</li>
+                                        </ul>
+                                        
+                                        
+                                        
+                                    </li>
+                                    <li class="snapATourView">
+                                        <div class="buttons begin">
+                                            <button class="innerBtn">添加片段</button>
                                         </div>
-                                        <!-- <span class="redPoint" id="project-name2" data-size="15">标题</span> -->
+                                    </li>
+                                    
+                                    <li id="tourItemList" class='tourList'>
+                                        <ul>
+
+                                        </ul>
+                                    </li>
+                                </ul>
+                            </div>
+                            <div class="buttons tail">
+                                <button class="tourSubmit submit innerBtn">完成</button> 
+                            </div> 
+                        </div>
+                    
+                    
+                    
+                        
+                    
+                    
+                    
+                    
+                    
+                        <div id="tourItemEdit" class="secondary  editDetail  atRight">
+                            <div class="itemTitle head">
+                                <span>片段编辑</span>
+                                <!-- <a class="close"></a> -->
+                            </div>
+                            <div class="content">
+                                <ul>
+                                    <li class="tourName info">
+                                        <div class="itemTitle" data-size="15" id="project-name1">
+                                            <span>片段名称</span>
+                                        </div> 
                                         <div class="name">
-                                            <input id="tourNameInput" spellcheck="false" placeholder="导览的名称"
-                                                class="right" type="text" minlength="1" maxlength="15" placeholder=""
-                                                data-oper=tour-input>
+                                            <input spellcheck="false" placeholder="导览的名称" class="right" type="text" minlength="1" maxlength="15" placeholder="" data-oper=tour-input>
                                         </div><!-- 必填,限15字 ??-->
                                     </li>
                                     <li class="audio mediaUpload">
                                         <div class="itemTitle itemMargin">
                                             <span>添加音频</span>
                                             <div class="buttons">
-                                                <input type="file" accept="audio/*" id="uploadTourBgm">
+                                                <input type="file"  accept="audio/*">
                                                 <button class="innerBtn submit">上传</button>
                                             </div>
                                         </div>
                                         <div class="playBox hide" data-type='music'>
                                             <div><a target="_blank"></a></div>
                                             <div>
-                                                <span id="tourMusicName" class="title">background</span>
+                                                <span class="title">background</span>
                                                 <span class="delete">删除</span>
                                             </div>
                                         </div>
                                     </li>
-                                    <li id="tourRenew" class="info">
-                                        <!-- <div class="itemTitle" data-size="0.94 ~ 3.18" id="project-name1">
-                                                <span></span>
-                                            </div> -->
-                                        <!-- <span class="redPoint" id="project-name2" data-size="15">标题</span> -->
+                                    <li>
+                                        <div class="itemTitle">
+                                            <span>飞向该片段的过渡效果</span>
+                                        </div> 
+                                        <ul id="tourSwitch_Slice"  class="MenuOptions innerBtn" >
+                                            <li class="halfCell" index="default" data-lang="">同外层</li>
+                                            <li class="halfCell" index="walk" data-lang="">行走</li>
+                                            <li class="halfCell chosen" index="black" data-lang="">瞬间</li>
+                                        </ul>  
+                                    </li>
+                                    <li id="tourRenew" class="info"> 
                                         <div class="name itemMargin">
                                             <div class="buttons begin">
                                                 <button id="renewTourBtn" class="innerBtn">重新录制当前导览</button>
-                                            </div>
-                                            <!-- <input spellcheck="false" placeholder=" 1" class="right" type="text"
-                                                                minlength="1" maxlength="15"> -->
+                                            </div> 
                                         </div><!-- 必填,限15字 ??-->
                                     </li>
                                 </ul>
                             </div>
                             <div class="buttons tail">
-                                <button id="tourSubmit" class="submit innerBtn">完成</button>
-                                <!-- <button class="cancel innerBtn">取消</button> -->
-                            </div>
-
-                        </div>
-                        <li class="addTour">
-                            <div class="buttons begin">
-                                <button class="innerBtn">添加导览</button>
-                            </div>
-                        </li>
-                        <li data-name="MouseMarkerColor" class="tourSelectWarp">
-                            <div class="itemTitle">
-                                <span>选择导览过渡效果</span> 
-                            </div>
-                            <ul id="tourSwitch" class="switch clearfix hotStyle-item colorWrap">
-                                <label><input class="mui-switch mui-switch-animbg" type="checkbox">
-                                    启用瞬间过渡
-                                </label>
-                            </ul>
-                        </li>
-                        <li class="tourList">
-                            <ul id="tourListWrap" class="tourListWrap">
-
-                            </ul>
-                        </li>
+                                <button class="tourSubmit submit innerBtn">完成</button> 
+                            </div> 
+                        </div> 
+                        
                     </ul>
                 </div>
                 <div class="VR content hide">
                     <ul>
-                        <li data-name="MouseMarkerColor" class="tourSelectWarp hotListSwitch">
+                        <li class="tourSelectWarp hotListSwitch">
                             <div class="itemTitle">
                                 <span>VR</span>
                             </div>
@@ -1478,15 +1642,13 @@
                                     <li class="halfCell" index="scale" data-lang="">缩放</li>
                                     <li class="halfCell" index="rotate" data-lang="">旋转</li>
                                 </ul>
-                                <ul id='setOverlayPosForPano' class="switch clearfix hotStyle-item colorWrap"
-                                    style="margin-top:20px">
+                                <ul id='setOverlayPosForPano' class="switch" style="margin-top:28px">
                                     <label><input class="mui-switch mui-switch-animbg" type="checkbox">
                                         当前漫游点独立调整
                                     </label>
-
+                                    <label class="remark">如在其他点位出现错位,请开启此开关,独立调整在特定点位的位移/缩放/旋转。</label>
                                 </ul>
-                                <label class="remark">如在其他点位出现错位,请开启此开关,独立调整在特定点位的位移/缩放/旋转。
-                                </label>
+                                
                             </li>
 
 
@@ -1523,7 +1685,7 @@
     </div>
 
     <script>
-
+       
         //本地:
         // var token = "eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJhZG1pbiIsInJvbGUiOm51bGwsIm1hbmFnZXIiOm51bGwsImlkIjoxLCJ1c2VyTmFtZSI6ImFkbWluIiwiZXhwIjoxNjE2NTc1MjU5LCJpYXQiOjE2MTY0ODg4NTksImp0aSI6ImJjZGNhZmQxLTU2NGItNGVhMC1hYTE5LWY1ZWRjZThjZTM3ZiJ9.ODMw__rU7GfuGNZNKo14ll7HnOYEG-yNM3Rqh-XYqw4"
         // var ceshi = 'http://47.112.166.173:8105/';
@@ -1543,6 +1705,8 @@
         }
         */
 
+  
+       
 
         var log = window.location.href.substring(window.location.href.indexOf("?") + 1).indexOf('log') > -1;
 

File diff suppressed because it is too large
+ 1 - 0
edit-backstage/hot_online/css/app.0d5d5cdb.css


File diff suppressed because it is too large
+ 1 - 0
edit-backstage/hot_online/css/app.284205ff.css


File diff suppressed because it is too large
+ 1 - 0
edit-backstage/hot_online/css/app.3f322ea4.css


File diff suppressed because it is too large
+ 1 - 0
edit-backstage/hot_online/css/app.514b6088.css


File diff suppressed because it is too large
+ 1 - 0
edit-backstage/hot_online/css/app.95281f89.css


File diff suppressed because it is too large
+ 1 - 0
edit-backstage/hot_online/css/app.b511b58b.css


File diff suppressed because it is too large
+ 1 - 0
edit-backstage/hot_online/css/app.b62cd77a.css


File diff suppressed because it is too large
+ 1 - 0
edit-backstage/hot_online/css/app.bfa5db9e.css


File diff suppressed because it is too large
+ 11 - 0
edit-backstage/hot_online/css/chunk-vendors.3df37e78.css


File diff suppressed because it is too large
+ 11 - 0
edit-backstage/hot_online/css/chunk-vendors.f0832753.css


File diff suppressed because it is too large
+ 4 - 0
edit-backstage/hot_online/css/font-awesome.min.css


File diff suppressed because it is too large
+ 1 - 0
edit-backstage/hot_online/css/icon.css


+ 90 - 0
edit-backstage/hot_online/css/reset.css

@@ -0,0 +1,90 @@
+/* http://meyerweb.com/eric/tools/css/reset/ 
+   v2.0 | 20110126
+   License: none (public domain)
+*/
+
+html, body, div, span, applet, object, iframe,
+h1, h2, h3, h4, h5, h6, p, blockquote, pre,
+a, abbr, acronym, address, big, cite, code,
+del, dfn, em, img, ins, kbd, q, s, samp,
+small, strike, strong, sub, sup, tt, var,
+b, u, i, center,
+dl, dt, dd, ol, ul, li,
+fieldset, form, label, legend,
+table, caption, tbody, tfoot, thead, tr, th, td,
+article, aside, canvas, details, embed, 
+figure, figcaption, footer, header, hgroup, 
+menu, nav, output, ruby, section, summary,
+time, mark, audio, video {
+	margin: 0;
+	padding: 0;
+	border: 0;
+	font-size: 100%;
+	font: inherit;
+	vertical-align: baseline;
+}
+/* HTML5 display-role reset for older browsers */
+article, aside, details, figcaption, figure, 
+footer, header, hgroup, menu, nav, section, main {
+	display: block;
+}
+ol, ul {
+	list-style: none;
+}
+blockquote, q {
+	quotes: none;
+}
+blockquote:before, blockquote:after,
+q:before, q:after {
+	content: '';
+	content: none;
+}
+table {
+	border-collapse: collapse;
+	border-spacing: 0;
+}
+button{outline:none; border: none;}
+input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{
+        -webkit-appearance:textfield;
+}
+input[type="number"]{
+        -moz-appearance:textfield;
+}
+input:-webkit-autofill {
+  -webkit-box-shadow: 0 0 0px 1000px white inset;
+  -webkit-text-fill-color: #333;
+}
+a {
+	text-decoration: none;
+	cursor: pointer;
+}
+a:hover,a:focus{
+    text-decoration:none;
+    bblr:expression(this.onFocus=this.blur());/*IE*/
+    outline-style:none;/*FF*/ 
+}
+*, *::after, *::before {
+  box-sizing: border-box;
+}
+
+
+::-webkit-scrollbar-track/*滑动轨道*/
+{
+    -webkit-box-shadow: inset 0 0 5px rgba(0,0,0,0.2);
+    border-radius: 0px;
+    background: rgba(0,0,0,0.1);
+}
+
+::-webkit-scrollbar-thumb/*滑块*/
+{
+    border-radius: 5px;
+    -webkit-box-shadow: inset 0 0 5px rgba(192,192,192,0.2);
+    background: rgba(192,192,192,0.2);
+}
+
+::-webkit-scrollbar-thumb:hover/*滑块效果*/
+{
+    border-radius: 5px;
+    -webkit-box-shadow: inset 0 0 5px rgba(0,0,0,0.2);
+    background: rgba(0,0,0,0.4);
+}

+ 229 - 0
edit-backstage/hot_online/css/style.css

@@ -0,0 +1,229 @@
+button {
+    background: transparent;
+}
+
+html, body {
+    width: 100%;
+    height: 100%;
+    font-family: "Microsoft YaHei";
+    margin: 0px;
+    overflow: hidden;
+}
+
+body {
+    overflow-y: scroll;
+    -webkit-overflow-scrolling: touch;
+}
+
+.wrapper {
+    width: 72%;
+    height: 100%;
+    margin: 0 auto;
+    padding-top: 100px;
+}
+
+.contioner {
+    /* overflow: hidden; */
+}
+
+.wrap-img, .wrap-video, .wrap-model {
+    background: rgba(0, 0, 0, 0.8);
+    width: 100%;
+    height: 100%;
+    display: none;
+    display: flex;
+    justify-content: center;
+    align-items: center;
+}
+
+.wrap-img img {
+    max-width: 100%;
+    max-height: 100%;
+}
+
+.wrap-img>div, .wrap-video>video, .wrap-model>div {
+    width: 100%;
+    height: 100%;
+}
+
+.footer-title {
+    display: flex;
+    justify-content: space-between;
+    margin-top: 20px;
+}
+
+.footer-title h3 {
+    font-size: 20px;
+    color: #fff;
+    font-weight: 600;
+}
+
+.wrap-iframe {
+    height: 100%;
+    overflow-x: hidden;
+    -webkit-overflow-scrolling: touch;
+}
+
+.wrap-iframe iframe, .wrap-model iframe {
+    width: 100%;
+    height: 100%;
+}
+
+.footer-btn button {
+    font-size: 14px;
+    color: #fff;
+    width: 90px;
+    height: 32px;
+    line-height: 32px;
+    cursor: pointer;
+    border-radius: 10px;
+    border: solid 1px #fff;
+    margin-right: 10px;
+}
+
+.footer-btn button.active {
+    background: #19bbed;
+    border: none;
+}
+
+.footer-text {
+    color: #fff;
+    line-height: 120%;
+    position: relative;
+    text-align: justify;
+    margin-top: 20px;
+    text-indent: 32px;
+}
+
+.img-icon {
+    background: url("../images/img-icon.png")no-repeat left top;
+}
+
+.video-icon {
+    background: url("../images/video-icon.png")no-repeat left top;
+}
+
+.model-icon {
+    background: url("../images/model-icon.png")no-repeat left top;
+}
+
+.iframe-icon {
+    background: url("../images/iframe-icon.png")no-repeat left top;
+}
+
+.footer-btn i {
+    display: inline-block;
+    position: relative;
+    top: 4px;
+    background-size: 100%;
+    width: 18px;
+    position: relative;
+    height: 18px;
+    margin-right: 5px;
+}
+
+.footer-mask {
+    position: absolute;
+    /* background: linear-gradient(rgba(61,61,61,0) 0%, rgba(61,61,61,0.9) 40%,  rgba(61,61,61,1) 60%,rgba(61,61,61,0) 100%);*/
+    z-index: 10;
+    bottom: -16px;
+    left: 0;
+    width: 100%;
+    height: 50%;
+}
+
+.pinch-zoom-container {
+    height: 100%;
+}
+
+@media screen and (max-width: 1600px) {
+    .wrapper {
+        width: 76%;
+        padding-top: 70px;
+    }
+}
+
+@media screen and (max-width: 1000px) {
+    .wrapper {
+        width: 86%;
+        padding-top: 50px;
+    }
+}
+
+@media screen and (max-width: 700px) {
+    .footer-title h3 {
+        font-size: 16px;
+    }
+    .footer-text {
+        font-size: 14px;
+        margin-top: 10px;
+        padding: 0 6px;
+        line-height: 150%;
+        text-indent: 28px;
+    }
+    .footer-text p {
+        text-indent: 28px;
+    }
+    .wrapper {
+        width: 94%;
+        padding-top: 30px;
+    }
+    .footer-title {
+        flex-direction: column-reverse;
+        align-items: center;
+        margin-top: 10px;
+    }
+    .footer-btn {
+        margin-bottom: 10px;
+    }
+    .ui-icon-before:before {
+        left: 4px;
+    }
+}
+
+@media screen and (max-width: 600px) {
+    .wrapper {
+        width: 100%;
+        padding-top: 34px;
+    }
+    .o-slider--item {
+        background: rgba(0, 0, 0, 0.4);
+    }
+}
+
+@media screen and (max-width: 400px) {}
+
+::-webkit-scrollbar
+/*整体部分*/
+
+    {
+    width: 10px;
+    height: 10px;
+}
+
+::-webkit-scrollbar-track
+/*滑动轨道*/
+
+    {
+    -webkit-box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2);
+    border-radius: 0px;
+    background: rgba(0, 0, 0, 0.1);
+}
+
+::-webkit-scrollbar-thumb
+/*滑块*/
+
+    {
+    border-radius: 5px;
+    -webkit-box-shadow: inset 0 0 5px rgba(192, 192, 192, 0.2);
+    background: rgba(192, 192, 192, 0.2);
+}
+
+::-webkit-scrollbar-thumb:hover
+/*滑块效果*/
+
+    {
+    border-radius: 5px;
+    -webkit-box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2);
+    background: rgba(0, 0, 0, 0.4);
+}

+ 224 - 0
edit-backstage/hot_online/css/video.css

@@ -0,0 +1,224 @@
+/* @import url(//maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css); */
+/* @import url(https://weloveiconfonts.com/api/?family=iconicfill); */
+[class*="iconicfill-"]:before {
+  font-family: 'IconicFill', sans-serif;
+}
+
+/*********************
+ * Wrapper
+ *********************/
+.js-video {
+  position: relative;
+  margin: 0 auto;
+  border-radius: 8px;
+  height: 100%;
+}
+
+/*********************
+ * Elements inside js-video
+ *********************/
+.video-index video {
+  width: 100%;
+  height: 90%;
+  background-size: cover;
+  background-position: center center;
+}
+
+.js-video button {
+  -moz-appearance: none;
+  -webkit-appearance: none;
+}
+
+/*********************
+ * UI
+ *********************/
+.playPause.ui-icon {
+  position: absolute;
+  top: 0px;
+  left: 0px;
+  right: 0;
+  display: flex;
+  width: 100%;
+  justify-content: center;
+  align-items: center;
+  height: 90%;
+  z-index: 100;
+}
+/*.playPause.ui-icon:after {
+  content: '';
+  width: 120px;
+  height: 120px;
+  background: rgba(0, 0, 0, 0.8);
+  border-radius: 10px;
+}*/
+/*.playPause.ui-icon:before {
+  font-size: 50px;
+  color: rgba(255, 255, 255, 0.9);
+  z-index: 2;
+  position: relative;
+  left: 81px;
+}*/
+/*.playPause.ui-icon.fa-pause:before, .playPause.ui-icon.fa-undo:before {
+  margin-left: -17px;
+}*/
+.playPause.ui-icon.fa-pause {
+  opacity: 0;
+}
+.video-index{ height: 100%;}
+.ui {
+  color: #fff;
+  padding: 10px 1vw;
+  font-size: 0;
+  display: -webkit-flex;
+  display: flex;
+}
+.ui > div:nth-of-type(2), .ui > div:nth-of-type(4) {
+  padding-top: 8px;
+}
+.ui > div:nth-of-type(2) {
+  -webkit-flex: 30 30 1px;
+  flex: 30 30 1px;
+  margin-right: 10px;
+}
+.ui > div:nth-of-type(1) {
+  -webkit-flex: 1 0 60px;
+  flex: 1 0 60px;
+  font-size: 12px;
+  margin-right: 10px;
+  text-align: center;
+  line-height: 20px;
+}
+.ui > div:nth-of-type(3) {
+  -webkit-flex: 0 0 20px;
+  flex: 0 0 20px;
+  margin-right: 10px;
+}
+.ui > div:nth-of-type(4) {
+  display: none;
+  -webkit-flex: 0 0 60px;
+  flex: 0 0 60px;
+}
+
+.timeDisplay {
+  white-space: nowrap;
+}
+.timeDisplay i {
+  font-style: normal;
+}
+
+.fullscreen {
+  position: absolute;
+  font-style: normal;
+  left: 20px;
+  bottom: 66px;
+  display: none;
+  width: 40px;
+  height: 40px;
+  text-align: center;
+  cursor: pointer;
+  -moz-transition: color 0.3s;
+  -o-transition: color 0.3s;
+  -webkit-transition: color 0.3s;
+  transition: color 0.3s;
+}
+.fullscreen:before {
+  font-size: 30px;
+  line-height: 40px;
+  color: rgba(0, 0, 0, 0.6);
+}
+.fullscreen:hover:before {
+  color: rgba(0,0,0, 0.8);
+}
+
+.ui-icon {
+  font-size: 20px;
+  vertical-align: middle;
+  width: 20px;
+  cursor: pointer;
+}
+
+/*********************
+ * Progress
+ *********************/
+.progress, .volumeControl {
+  background: rgb(255, 255, 255);
+  width: 100%;
+  position: relative;
+  height: 5px;
+  cursor: pointer;
+  overflow: hidden;
+  border-radius: 2px;
+  border: 0;
+}
+
+.progress > * {
+  position: absolute;
+  top: 0;
+  left: 0;
+  height: 100%;
+}
+
+.progress-time {
+  background-color: #19bbed;
+}
+
+.anim {
+  -moz-transition: width 1000ms linear;
+  -o-transition: width 1000ms linear;
+  -webkit-transition: width 1000ms linear;
+  transition: width 1000ms linear;
+}
+
+.progress-buffer {
+  background-color:#cccccc;
+  -moz-transition: width 250ms linear;
+  -o-transition: width 250ms linear;
+  -webkit-transition: width 250ms linear;
+  transition: width 250ms linear;
+}
+
+.volumeControl {
+  width: 90%;
+  overflow: visible;
+  position: relative;
+  background: rgba(0, 0, 0, 0.3);
+}
+.volumeControl .ui-slider-handle {
+  position: absolute;
+  width: 9px;
+  height: 9px;
+  border: 0;
+  top: -2px;
+  background: transparent;
+}
+.volumeControl .ui-slider-handle:after {
+  content: '';
+  position: absolute;
+  width: 100%;
+  height: 100%;
+  left: -50%;
+  background: black;
+  border-radius: 4px;
+}
+.volumeControl .ui-slider-handle:focus {
+  outline: none;
+}
+.ui-icon-before{display: flex;justify-content: center;align-items: center;width: 120px;height: 120px;background:rgba(0, 0, 0, 0.8);border-radius:50%;}
+.ui-icon-before:before{
+  content:"\f04b";
+  font-size: 50px;
+  color: rgba(255, 255, 255, 0.8);
+  z-index: 2;
+  font-size: 60px;
+  position: relative;
+  left: 5px;
+}
+.fa-play:before{ content:""; }
+@media screen and (max-width: 600px){
+  .ui-icon-before{width: 60px;height: 60px;}
+  .ui-icon-before:before{
+    font-size: 35px;
+    left: 3px;
+  }
+  .ui{padding: 2px 1vw;}
+}

File diff suppressed because it is too large
+ 456 - 0
edit-backstage/hot_online/css/viewer.css


File diff suppressed because it is too large
+ 9 - 0
edit-backstage/hot_online/css/viewer.min.css


+ 764 - 0
edit-backstage/hot_online/css/yuhaiTupian.css

@@ -0,0 +1,764 @@
+body {
+    margin: 0;
+    padding: 0;
+    max-width: 100%;
+    margin: 0 auto;
+}
+
+/* line 8, ../sass/inc/_base.scss */
+
+* {
+    box-sizing: border-box;
+}
+
+.icon-right-open-big:before {
+    content: "\e766";
+}
+
+/* '\e766' */
+
+.o-slider-header-mobile {
+    height: 100%;
+    width: 100%;
+    text-align: center;
+}
+
+/* line 9, ../sass/inc/_base.scss */
+
+a {
+    color: #fff;
+    font-size: 14px;
+    letter-spacing: 0.125em;
+    text-decoration: none;
+    text-transform: uppercase;
+}
+
+/* line 16, ../sass/inc/_base.scss */
+
+h1 {
+    text-transform: uppercase;
+    margin: 0;
+    padding: 0;
+    font-size: 2.5rem;
+}
+
+/* line 22, ../sass/inc/_base.scss */
+
+.pre {
+    display: inline-block;
+    padding: 20px;
+    background: #f1f1f1;
+    box-shadow: 3px 3px 0 1px rgba(0, 0, 0, 0.1);
+    width: 100%;
+}
+
+@-webkit-keyframes ball-scale-multiple {
+    0% {
+        transform: scale(0) rotate(-90deg);
+        opacity: 0;
+    }
+    5% {
+        opacity: 1;
+    }
+    100% {
+        transform: scale(1.2) rotate(90deg);
+        opacity: 0;
+    }
+}
+
+@keyframes ball-scale-multiple {
+    0% {
+        transform: scale(0) rotate(-90deg);
+        opacity: 0;
+    }
+    5% {
+        opacity: 1;
+    }
+    100% {
+        transform: scale(1.2) rotate(90deg);
+        opacity: 0;
+    }
+}
+
+/* line 1, ../sass/inc/_loader.scss */
+
+.loaderWrap {
+    position: absolute;
+    left: 0;
+    top: 0;
+    right: 0;
+    bottom: 0;
+    background: rgba(0, 0, 0, 0.2);
+    z-index: 123333333;
+}
+
+/* line 10, ../sass/inc/_loader.scss */
+
+.ball-scale-multiple {
+    position: absolute;
+    top: 50%;
+    left: 50%;
+    transform: translate(-50%, 50%);
+}
+
+/* line 15, ../sass/inc/_loader.scss */
+
+.ball-scale-multiple>div {
+    background-color: #fff;
+    border-radius: 0;
+    animation-fill-mode: both;
+    position: absolute;
+    left: -60px;
+    top: -60px;
+    opacity: 0;
+    margin: 0;
+    width: 120px;
+    height: 120px;
+    animation: ball-scale-multiple 1s 0s linear infinite;
+    box-shadow: 0 0 20px 0 rgba(0, 0, 0, 0.2);
+}
+
+/* line 28, ../sass/inc/_loader.scss */
+
+.ball-scale-multiple>div:nth-child(1) {
+    animation-delay: -1s;
+}
+
+/* line 31, ../sass/inc/_loader.scss */
+
+.ball-scale-multiple>div:nth-child(2) {
+    animation-delay: -0.8s;
+}
+
+/* line 34, ../sass/inc/_loader.scss */
+
+.ball-scale-multiple>div:nth-child(3) {
+    animation-delay: -0.6s;
+}
+
+/* line 37, ../sass/inc/_loader.scss */
+
+.ball-scale-multiple>div:nth-child(4) {
+    animation-delay: -0.4s;
+}
+
+/* line 40, ../sass/inc/_loader.scss */
+
+.ball-scale-multiple>div:nth-child(5) {
+    animation-delay: -0.2s;
+}
+
+/* line 7, ../sass/style.scss */
+
+.a-container {
+    width: 1170px;
+    margin: 20px auto;
+}
+
+/* line 12, ../sass/style.scss */
+
+.a-1_2 {
+    width: 48%;
+    display: inline-block;
+    margin: 0 1%;
+}
+
+/* line 17, ../sass/style.scss */
+
+.o-sliderContainer {
+    /* overflow: hidden; */
+    position: relative;
+    width: 100%;
+    min-height: 200px;
+    float: left;
+    height: auto;
+}
+
+/* line 27, ../sass/style.scss */
+
+.o-sliderContainer.hasShadow {
+    box-shadow: 0 39px 22px -29px rgba(0, 0, 0, 0.2);
+}
+
+/* line 39, ../sass/style.scss */
+
+.o-slider--item {
+    height: auto;
+    width: 0;
+    background-position: center center;
+    background-repeat: no-repeat;
+    background-size: cover;
+    position: relative;
+    float: left;
+    transition: all 0.2s cubic-bezier(0.7, 0.18, 0.53, 0.75);
+    opacity: 0.6;
+    transform: scale(0.95, 0.95);
+    transform-origin: center center;
+    z-index: 99;
+    background-size: 40%;
+    background-position: 95% 106%;
+}
+
+.o-slider-header {
+    height: 100%;
+    width: 100%;
+    position: relative;
+    overflow: auto;
+}
+
+.o-slider-bg {
+    position: absolute;
+    height: 100%;
+    width: 100%;
+    display: flex;
+    align-items: center;
+}
+
+.o-slider-header>img {
+    /* max-width: 100%; */
+    max-height: 100%;
+    position: absolute;
+    /* top: 50%;
+    left: 50%;
+    transform: translate(-50%, -50%); */
+    /* transition: all 0.3s; */
+    top:0;
+    bottom:0;
+    left:0;
+    right:0;
+    margin:auto;
+}
+
+.o-slider-header>video {
+    width: 100%;
+    height: 100%;
+}
+
+.o-slider-header iframe {
+    width: 100%;
+    height: 100%;
+}
+
+.content-top {
+    height: 15%;
+    text-align: center;
+    padding-left: 30px;
+    display: flex;
+    align-items: center;
+}
+
+.content-top img {
+    max-width: 86%;
+}
+
+.content-content {
+    height: 45%;
+    width: 100%;
+    text-align: center;
+}
+
+.content-content img {
+    height: 90%;
+    /* margin: auto 0; */
+}
+
+.content-footer {
+    padding-left: 30px;
+    height: 20%;
+}
+
+.content-footer img {
+    max-width: 60%;
+    max-height: 100%;
+}
+
+.pinch-zoom-container {
+    width: 100%;
+    max-height: 100%;
+}
+
+/* line 52, ../sass/style.scss */
+
+/* .o-slider--item::after {
+  content: '';
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  background: rgba(0, 0, 0, 0.3);
+  background: -moz-linear-gradient(45deg, rgba(0, 0, 0, 0.6) 0%, transparent 70%);
+  background: -webkit-gradient(left bottom, right top, color-stop(0%, rgba(0, 0, 0, 0.6)), color-stop(70%, transparent));
+  background: -webkit-linear-gradient(45deg, rgba(0, 0, 0, 0.6) 0%, transparent 70%);
+  background: -o-linear-gradient(45deg, rgba(0, 0, 0, 0.6) 0%, transparent 70%);
+  background: -ms-linear-gradient(45deg, rgba(0, 0, 0, 0.6) 0%, transparent 70%);
+  background: linear-gradient(45deg, rgba(0, 0, 0, 0.6) 0%, transparent 70%);
+  z-index: 0;
+} */
+
+/* line 65, ../sass/style.scss */
+
+.o-slider--item.isActive {
+    opacity: 1;
+    transform: scale(1, 1);
+}
+
+.o-slider--item.isActive img{
+    max-height: 100%;
+    /* width:30%; */
+}
+
+.hotImageClick{
+    width: 80% !important;
+    max-height: fit-content !important;
+    top: 0 !important;
+    /* transform: translate(-50%, 0%) !important; */
+    padding: 10px;
+}
+
+.o-slider--item img {
+    max-height: 100%;
+}
+
+/* line 69, ../sass/style.scss */
+
+.o-slider--item.isMoving {
+    opacity: 0.6;
+    transform: scale(0.95, 0.95);
+    z-index: 100;
+}
+
+/* line 76, ../sass/style.scss */
+
+.o-slider {
+    width: auto;
+    position: relative;
+    display: none;
+    transition: all 0.2s cubic-bezier(0.7, 0.18, 0.53, 0.75);
+}
+
+/* line 81, ../sass/style.scss */
+
+.o-slider.isVisible {
+    display: table;
+}
+
+/* line 86, ../sass/style.scss */
+
+.o-slider.isDraggable {
+    cursor: move;
+}
+
+/* line 91, ../sass/style.scss */
+
+.o-slider-textWrap {
+    left: 2%;
+    bottom: 45px;
+    height: auto;
+    position: absolute;
+    text-align: left;
+    padding: 0 0 20px 0;
+    width: 96%;
+    transition: all 0.4s;
+    opacity: 1;
+    overflow: visible;
+    perspective: 1000px;
+    z-index: 2;
+}
+
+/* line 107, ../sass/style.scss */
+
+.isActive .o-slider-textWrap::after {
+    width: 100%;
+    left: 0;
+}
+
+/* line 112, ../sass/style.scss */
+
+.isActive .o-slider-paragraph {
+    opacity: 1;
+    transform: perspective(0) rotateY(0) translate(0, 0);
+    transform-origin: 0 0;
+    transition-delay: 1s;
+}
+
+/* line 119, ../sass/style.scss */
+
+.isActive .o-slider-title {
+    opacity: 1;
+    transform: perspective(0) rotateY(0) translate(0, 0);
+    transform-origin: 0 0;
+    transition-delay: 0.2s;
+}
+
+/* line 126, ../sass/style.scss */
+
+.isActive .o-slider-subTitle {
+    opacity: 1;
+    transform: perspective(0) rotateY(0) translate(0, 0);
+    transform-origin: 0 0;
+    transition-delay: 0.6s;
+}
+
+/* line 155, ../sass/style.scss */
+
+.o-slider-title {
+    width: auto;
+    margin: 0 0 5px 0;
+    height: auto;
+    color: #fff;
+    text-shadow: 2px 2px 2px rgba(0, 0, 0, 0.2);
+    font-size: 1.4rem;
+    display: inline-block;
+    padding: 0;
+    transition: all 0.4s;
+    transform-origin: 0 0;
+    transform: perspective(1000px) rotateY(120deg) translate(100px, -100px);
+    opacity: 0;
+    position: relative;
+    z-index: 1;
+}
+
+/* line 172, ../sass/style.scss */
+
+.o-slider-subTitle {
+    width: auto;
+    margin: 0 0 5px 0;
+    height: auto;
+    color: #fff;
+    text-shadow: 2px 2px 2px rgba(0, 0, 0, 0.2);
+    font-size: 1.4rem;
+    display: inline-block;
+    padding: 0;
+    transition: all 0.4s;
+    transform-origin: 0 0;
+    transform: perspective(1000px) rotateY(120deg) translate(100px, -100px);
+    opacity: 0;
+    position: relative;
+    z-index: 1;
+    font-size: 1.2rem;
+}
+
+/* line 190, ../sass/style.scss */
+
+.o-slider-paragraph {
+    width: auto;
+    margin: 0 0 5px 0;
+    height: auto;
+    color: #fff;
+    text-shadow: 2px 2px 2px rgba(0, 0, 0, 0.2);
+    font-size: 1.4rem;
+    display: inline-block;
+    padding: 0;
+    transition: all 0.4s;
+    transform-origin: 0 0;
+    transform: perspective(1000px) rotateY(120deg) translate(100px, -100px);
+    opacity: 0;
+    position: relative;
+    z-index: 1;
+    font-size: 0.8rem;
+    max-width: 100%;
+    display: none;
+}
+
+@media screen and (min-width: 768px) {
+    /* line 211, ../sass/style.scss */
+    .o-slider-textWrap {
+        left: 5%;
+        width: 90%;
+    }
+    /* line 216, ../sass/style.scss */
+    .o-slider-title {
+        font-size: 1.8rem;
+    }
+    /* line 220, ../sass/style.scss */
+    .o-slider-subTitle {
+        font-size: 1.4rem;
+    }
+    /* line 224, ../sass/style.scss */
+    .o-slider-paragraph {
+        max-width: 60%;
+        font-size: 1rem;
+        display: block;
+    }
+}
+
+@media screen and (min-width: 1024px) {
+    /* line 232, ../sass/style.scss */
+    .o-slider-pagination {
+        bottom: 6%;
+    }
+    /* line 234, ../sass/style.scss */
+    .o-slider-textWrap {
+        left: 70px;
+        width: 80%;
+        bottom: 50px;
+    }
+    /* line 240, ../sass/style.scss */
+    .o-slider-title {
+        font-size: 2rem;
+    }
+    /* line 244, ../sass/style.scss */
+    .o-slider-subTitle {
+        font-size: 1.6rem;
+    }
+    /* line 248, ../sass/style.scss */
+    .o-slider-paragraph {
+        max-width: 40%;
+        font-size: 1.2rem;
+    }
+}
+
+/* line 299, ../sass/style.scss */
+
+.a-divider {
+    display: block;
+    width: 100%;
+    height: 1px;
+    margin: 2px 0;
+}
+
+/* line 306, ../sass/style.scss */
+
+.o-slider-controls {
+    display: none;
+}
+
+/* line 309, ../sass/style.scss */
+
+.o-slider-controls.isVisible {
+    display: block;
+}
+
+/* line 314, ../sass/style.scss */
+
+.o-slider-pagination {
+    bottom: 20px;
+    left: 0;
+    position: absolute;
+    text-align: center;
+    width: 100%;
+    z-index: 1444;
+    margin: 0;
+    padding: 0;
+}
+
+/* line 324, ../sass/style.scss */
+
+.o-slider-pagination>li {
+    border-radius: 50%;
+    /* box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.9), 0 0 2px 0 rgba(0, 0, 0, 0.4) inset; */
+    display: inline-block;
+    position: relative;
+    top: 0;
+    right: 0;
+    bottom: 0;
+    left: 0;
+    height: 8px;
+    width: 8px;
+    margin-left: 4px;
+    margin-right: 4px;
+    transition: all 250ms;
+    cursor: pointer;
+    /* background-clip: padding-box; */
+    z-index: 100;
+    background: #fff;
+}
+
+/* line 340, ../sass/style.scss */
+
+.o-slider-pagination>li.isActive {
+    background-color: #19bbed;
+    transform: scale(1.3, 1.3);
+}
+
+/* line 347, ../sass/style.scss */
+
+.o-slider--preview {
+    position: absolute;
+    top: -70px;
+    right: auto;
+    bottom: auto;
+    left: -65px;
+    opacity: 0;
+    width: 140px;
+    height: 60px;
+    background-size: cover;
+    background-position: center center;
+    transition: all 250ms;
+    z-index: -1;
+    border: 3px solid #000;
+    transform: scale(0.2, 0.2);
+    transform-origin: center bottom;
+    display: none;
+}
+
+/* line 362, ../sass/style.scss */
+
+.o-slider--preview::before {
+    content: "";
+    position: absolute;
+    top: auto;
+    right: auto;
+    bottom: -13px;
+    left: 50%;
+    margin: 0 0 0 -5px;
+    height: 0;
+    width: 0;
+    border-left: 10px solid transparent;
+    border-right: 10px solid transparent;
+    border-top: 10px solid #000;
+}
+
+/* line 374, ../sass/style.scss */
+
+.o-slider--preview.isActive, .o-slider-pagination li:hover .o-slider--preview {
+    opacity: 1;
+    position: absolute;
+    top: -76px;
+    right: auto;
+    bottom: auto;
+    left: -65px;
+    transform: scale(1, 1);
+}
+
+@media screen and (min-width: 768px) {
+    /* line 384, ../sass/style.scss */
+    .o-slider--preview {
+        display: block;
+    }
+}
+
+/* line 389, ../sass/style.scss */
+
+.o-slider-arrows {
+    margin: 0;
+    list-style: none;
+    display: block;
+}
+
+/* line 395, ../sass/style.scss */
+
+.o-slider-next, .o-slider-prev {
+    position: fixed;
+    top: 0;
+    left: 0px;
+    margin: -12px 0 0;
+    width: 60px;
+    z-index: 99;
+    padding: 0;
+    margin: 0;
+    height: 60px;
+    list-style: none;
+    cursor: pointer;
+    text-align: center;
+    padding: 10px 25px;
+    background: rgba(0, 0, 0, 0.4);
+    display: inline-block;
+    vertical-align: middle;
+    line-height: 100%;
+    transition: all 0.4s;
+    top: 50%;
+    transform: translateY(-50%);
+}
+
+/* line 416, ../sass/style.scss */
+
+.o-slider-next i, .o-slider-prev i {
+    position: absolute;
+    top: 50%;
+    left: 0;
+    /* margin: -12px 0 0; */
+    text-align: center;
+    width: 100%;
+    font-size: 2.8rem;
+    color: #fff;
+    transform: translateY(-50%);
+}
+
+/* line 428, ../sass/style.scss */
+
+.o-slider-next {
+    left: auto;
+    right: 0px;
+}
+
+/* line 433, ../sass/style.scss */
+
+.isDisabled {
+    opacity: 1;
+    cursor: auto;
+}
+
+@media screen and (max-width: 1280px) {
+    /* line 439, ../sass/style.scss */
+    .a-container {
+        width: 970px;
+    }
+}
+
+@media screen and (max-width: 1024px) {
+    /* line 445, ../sass/style.scss */
+    .o-slider-arrows {
+        display: none;
+    }
+    /* line 449, ../sass/style.scss */
+    .o-sliderContainer {
+        height: 450px;
+        width: 100%;
+    }
+    /* line 455, ../sass/style.scss */
+    .o-slider--item {
+        height: 450px;
+    }
+}
+
+@media screen and (max-width: 768px) {
+    /* line 461, ../sass/style.scss */
+    .a-container {
+        width: 90%;
+        margin: 20px auto;
+    }
+    /* line 466, ../sass/style.scss */
+    .a-1_2 {
+        width: 100%;
+        display: block;
+        margin: 0;
+    }
+    /* line 472, ../sass/style.scss */
+    .o-slider-arrows {
+        display: none;
+    }
+    /* line 476, ../sass/style.scss */
+    .o-sliderContainer {
+        height: 350px;
+    }
+    /* line 480, ../sass/style.scss */
+    .o-slider--item {
+        height: 350px;
+    }
+    /* line 484, ../sass/style.scss */
+    .o-slider-panel img {
+        left: -15%;
+        width: 130%;
+    }
+}
+
+@media screen and (max-width: 480px) {
+    /* line 491, ../sass/style.scss */
+    .o-slider--item {
+        height: 270px;
+    }
+    /* line 494, ../sass/style.scss */
+    /* line 500, ../sass/style.scss */
+    .o-sliderContainer {
+        height: 270px;
+    }
+}
+
+/* line 505, ../sass/style.scss */
+
+.slider-pagination>li:hover {
+    background-color: rgba(255, 255, 255, 0.9);
+    transform: scale(1.3, 1.3);
+}

BIN
edit-backstage/hot_online/fonts/fontawesome-webfont.woff2


+ 315 - 0
edit-backstage/hot_online/icons/entypo.css

@@ -0,0 +1,315 @@
+@charset "UTF-8";
+
+@font-face {
+  font-family: 'entypo';
+  src: url('entypo.eot');
+  src: url('entypo.eot?#iefix') format('embedded-opentype'),
+       url('entypo.woff') format('woff'),
+       url('entypo.ttf') format('truetype'),
+       url('entypo.svg#entypo') format('svg');
+  font-weight: normal; font-style: normal;
+}
+
+[class^="icon-"], [class*=" icon-"] {
+  font-family: entypo;
+  font-style: normal;
+
+  /* font-size: 14px; */
+
+  display: inline-block;
+  width: 1.1em;
+  margin-right: .1em;
+  text-align: center;
+}
+
+.the-icons li {
+  font-size: 14px;
+  line-height: 24px;
+  height: 24px;
+}
+
+.icon-note:before { content: "\266a"; } /* '\266a' */
+.icon-note-beamed:before { content: "\266b"; } /* '\266b' */
+.icon-music:before { content: "🎵"; } /* '\1f3b5' */
+.icon-search:before { content: "🔍"; } /* '\1f50d' */
+.icon-flashlight:before { content: "🔦"; } /* '\1f526' */
+.icon-mail:before { content: "\2709"; } /* '\2709' */
+.icon-heart:before { content: "\2665"; } /* '\2665' */
+.icon-heart-empty:before { content: "\2661"; } /* '\2661' */
+.icon-star:before { content: "\2605"; } /* '\2605' */
+.icon-star-empty:before { content: "\2606"; } /* '\2606' */
+.icon-user:before { content: "👤"; } /* '\1f464' */
+.icon-users:before { content: "👥"; } /* '\1f465' */
+.icon-user-add:before { content: "\e700"; } /* '\e700' */
+.icon-video:before { content: "🎬"; } /* '\1f3ac' */
+.icon-picture:before { content: "🌄"; } /* '\1f304' */
+.icon-camera:before { content: "📷"; } /* '\1f4f7' */
+.icon-layout:before { content: "\268f"; } /* '\268f' */
+.icon-menu:before { content: "\2630"; } /* '\2630' */
+.icon-check:before { content: "\2713"; } /* '\2713' */
+.icon-cancel:before { content: "\2715"; } /* '\2715' */
+.icon-cancel-circled:before { content: "\2716"; } /* '\2716' */
+.icon-cancel-squared:before { content: "\274e"; } /* '\274e' */
+.icon-plus:before { content: "\2b"; } /* '\2b' */
+.icon-plus-circled:before { content: "\2795"; } /* '\2795' */
+.icon-plus-squared:before { content: "\229e"; } /* '\229e' */
+.icon-minus:before { content: "\2d"; } /* '\2d' */
+.icon-minus-circled:before { content: "\2796"; } /* '\2796' */
+.icon-minus-squared:before { content: "\229f"; } /* '\229f' */
+.icon-help:before { content: "\2753"; } /* '\2753' */
+.icon-help-circled:before { content: "\e704"; } /* '\e704' */
+.icon-info:before { content: "\2139"; } /* '\2139' */
+.icon-info-circled:before { content: "\e705"; } /* '\e705' */
+.icon-back:before { content: "🔙"; } /* '\1f519' */
+.icon-home:before { content: "\2302"; } /* '\2302' */
+.icon-link:before { content: "🔗"; } /* '\1f517' */
+.icon-attach:before { content: "📎"; } /* '\1f4ce' */
+.icon-lock:before { content: "🔒"; } /* '\1f512' */
+.icon-lock-open:before { content: "🔓"; } /* '\1f513' */
+.icon-eye:before { content: "\e70a"; } /* '\e70a' */
+.icon-tag:before { content: "\e70c"; } /* '\e70c' */
+.icon-bookmark:before { content: "🔖"; } /* '\1f516' */
+.icon-bookmarks:before { content: "📑"; } /* '\1f4d1' */
+.icon-flag:before { content: "\2691"; } /* '\2691' */
+.icon-thumbs-up:before { content: "👍"; } /* '\1f44d' */
+.icon-thumbs-down:before { content: "👎"; } /* '\1f44e' */
+.icon-download:before { content: "📥"; } /* '\1f4e5' */
+.icon-upload:before { content: "📤"; } /* '\1f4e4' */
+.icon-upload-cloud:before { content: "\e711"; } /* '\e711' */
+.icon-reply:before { content: "\e712"; } /* '\e712' */
+.icon-reply-all:before { content: "\e713"; } /* '\e713' */
+.icon-forward:before { content: "\27a6"; } /* '\27a6' */
+.icon-quote:before { content: "\275e"; } /* '\275e' */
+.icon-code:before { content: "\e714"; } /* '\e714' */
+.icon-export:before { content: "\e715"; } /* '\e715' */
+.icon-pencil:before { content: "\270e"; } /* '\270e' */
+.icon-feather:before { content: "\2712"; } /* '\2712' */
+.icon-print:before { content: "\e716"; } /* '\e716' */
+.icon-retweet:before { content: "\e717"; } /* '\e717' */
+.icon-keyboard:before { content: "\2328"; } /* '\2328' */
+.icon-comment:before { content: "\e718"; } /* '\e718' */
+.icon-chat:before { content: "\e720"; } /* '\e720' */
+.icon-bell:before { content: "🔔"; } /* '\1f514' */
+.icon-attention:before { content: "\26a0"; } /* '\26a0' */
+.icon-alert:before { content: "💥"; } /* '\1f4a5' */
+.icon-vcard:before { content: "\e722"; } /* '\e722' */
+.icon-address:before { content: "\e723"; } /* '\e723' */
+.icon-location:before { content: "\e724"; } /* '\e724' */
+.icon-map:before { content: "\e727"; } /* '\e727' */
+.icon-direction:before { content: "\27a2"; } /* '\27a2' */
+.icon-compass:before { content: "\e728"; } /* '\e728' */
+.icon-cup:before { content: "\2615"; } /* '\2615' */
+.icon-trash:before { content: "\e729"; } /* '\e729' */
+.icon-doc:before { content: "\e730"; } /* '\e730' */
+.icon-docs:before { content: "\e736"; } /* '\e736' */
+.icon-doc-landscape:before { content: "\e737"; } /* '\e737' */
+.icon-doc-text:before { content: "📄"; } /* '\1f4c4' */
+.icon-doc-text-inv:before { content: "\e731"; } /* '\e731' */
+.icon-newspaper:before { content: "📰"; } /* '\1f4f0' */
+.icon-book-open:before { content: "📖"; } /* '\1f4d6' */
+.icon-book:before { content: "📕"; } /* '\1f4d5' */
+.icon-folder:before { content: "📁"; } /* '\1f4c1' */
+.icon-archive:before { content: "\e738"; } /* '\e738' */
+.icon-box:before { content: "📦"; } /* '\1f4e6' */
+.icon-rss:before { content: "\e73a"; } /* '\e73a' */
+.icon-phone:before { content: "📞"; } /* '\1f4de' */
+.icon-cog:before { content: "\2699"; } /* '\2699' */
+.icon-tools:before { content: "\2692"; } /* '\2692' */
+.icon-share:before { content: "\e73c"; } /* '\e73c' */
+.icon-shareable:before { content: "\e73e"; } /* '\e73e' */
+.icon-basket:before { content: "\e73d"; } /* '\e73d' */
+.icon-bag:before { content: "👜"; } /* '\1f45c' */
+.icon-calendar:before { content: "📅"; } /* '\1f4c5' */
+.icon-login:before { content: "\e740"; } /* '\e740' */
+.icon-logout:before { content: "\e741"; } /* '\e741' */
+.icon-mic:before { content: "🎤"; } /* '\1f3a4' */
+.icon-mute:before { content: "🔇"; } /* '\1f507' */
+.icon-sound:before { content: "🔊"; } /* '\1f50a' */
+.icon-volume:before { content: "\e742"; } /* '\e742' */
+.icon-clock:before { content: "🕔"; } /* '\1f554' */
+.icon-hourglass:before { content: "\23f3"; } /* '\23f3' */
+.icon-lamp:before { content: "💡"; } /* '\1f4a1' */
+.icon-light-down:before { content: "🔅"; } /* '\1f505' */
+.icon-light-up:before { content: "🔆"; } /* '\1f506' */
+.icon-adjust:before { content: "\25d1"; } /* '\25d1' */
+.icon-block:before { content: "🚫"; } /* '\1f6ab' */
+.icon-resize-full:before { content: "\e744"; } /* '\e744' */
+.icon-resize-small:before { content: "\e746"; } /* '\e746' */
+.icon-popup:before { content: "\e74c"; } /* '\e74c' */
+.icon-publish:before { content: "\e74d"; } /* '\e74d' */
+.icon-window:before { content: "\e74e"; } /* '\e74e' */
+.icon-arrow-combo:before { content: "\e74f"; } /* '\e74f' */
+.icon-down-circled:before { content: "\e758"; } /* '\e758' */
+.icon-left-circled:before { content: "\e759"; } /* '\e759' */
+.icon-right-circled:before { content: "\e75a"; } /* '\e75a' */
+.icon-up-circled:before { content: "\e75b"; } /* '\e75b' */
+.icon-down-open:before { content: "\e75c"; } /* '\e75c' */
+.icon-left-open:before { content: "\e75d"; } /* '\e75d' */
+.icon-right-open:before { content: "\e75e"; } /* '\e75e' */
+.icon-up-open:before { content: "\e75f"; } /* '\e75f' */
+.icon-down-open-mini:before { content: "\e760"; } /* '\e760' */
+.icon-left-open-mini:before { content: "\e761"; } /* '\e761' */
+.icon-right-open-mini:before { content: "\e762"; } /* '\e762' */
+.icon-up-open-mini:before { content: "\e763"; } /* '\e763' */
+.icon-down-open-big:before { content: "\e764"; } /* '\e764' */
+.icon-left-open-big:before { content: "\e765"; } /* '\e765' */
+.icon-right-open-big:before { content: "\e766"; } /* '\e766' */
+.icon-up-open-big:before { content: "\e767"; } /* '\e767' */
+.icon-down:before { content: "\2b07"; } /* '\2b07' */
+.icon-left:before { content: "\2b05"; } /* '\2b05' */
+.icon-right:before { content: "\27a1"; } /* '\27a1' */
+.icon-up:before { content: "\2b06"; } /* '\2b06' */
+.icon-down-dir:before { content: "\25be"; } /* '\25be' */
+.icon-left-dir:before { content: "\25c2"; } /* '\25c2' */
+.icon-right-dir:before { content: "\25b8"; } /* '\25b8' */
+.icon-up-dir:before { content: "\25b4"; } /* '\25b4' */
+.icon-down-bold:before { content: "\e4b0"; } /* '\e4b0' */
+.icon-left-bold:before { content: "\e4ad"; } /* '\e4ad' */
+.icon-right-bold:before { content: "\e4ae"; } /* '\e4ae' */
+.icon-up-bold:before { content: "\e4af"; } /* '\e4af' */
+.icon-down-thin:before { content: "\2193"; } /* '\2193' */
+.icon-left-thin:before { content: "\2190"; } /* '\2190' */
+.icon-right-thin:before { content: "\2192"; } /* '\2192' */
+.icon-up-thin:before { content: "\2191"; } /* '\2191' */
+.icon-ccw:before { content: "\27f2"; } /* '\27f2' */
+.icon-cw:before { content: "\27f3"; } /* '\27f3' */
+.icon-arrows-ccw:before { content: "🔄"; } /* '\1f504' */
+.icon-level-down:before { content: "\21b3"; } /* '\21b3' */
+.icon-level-up:before { content: "\21b0"; } /* '\21b0' */
+.icon-shuffle:before { content: "🔀"; } /* '\1f500' */
+.icon-loop:before { content: "🔁"; } /* '\1f501' */
+.icon-switch:before { content: "\21c6"; } /* '\21c6' */
+.icon-play:before { content: "\25b6"; } /* '\25b6' */
+.icon-stop:before { content: "\25a0"; } /* '\25a0' */
+.icon-pause:before { content: "\2389"; } /* '\2389' */
+.icon-record:before { content: "\26ab"; } /* '\26ab' */
+.icon-to-end:before { content: "\23ed"; } /* '\23ed' */
+.icon-to-start:before { content: "\23ee"; } /* '\23ee' */
+.icon-fast-forward:before { content: "\23e9"; } /* '\23e9' */
+.icon-fast-backward:before { content: "\23ea"; } /* '\23ea' */
+.icon-progress-0:before { content: "\e768"; } /* '\e768' */
+.icon-progress-1:before { content: "\e769"; } /* '\e769' */
+.icon-progress-2:before { content: "\e76a"; } /* '\e76a' */
+.icon-progress-3:before { content: "\e76b"; } /* '\e76b' */
+.icon-target:before { content: "🎯"; } /* '\1f3af' */
+.icon-palette:before { content: "🎨"; } /* '\1f3a8' */
+.icon-list:before { content: "\e005"; } /* '\e005' */
+.icon-list-add:before { content: "\e003"; } /* '\e003' */
+.icon-signal:before { content: "📶"; } /* '\1f4f6' */
+.icon-trophy:before { content: "🏆"; } /* '\1f3c6' */
+.icon-battery:before { content: "🔋"; } /* '\1f50b' */
+.icon-back-in-time:before { content: "\e771"; } /* '\e771' */
+.icon-monitor:before { content: "💻"; } /* '\1f4bb' */
+.icon-mobile:before { content: "📱"; } /* '\1f4f1' */
+.icon-network:before { content: "\e776"; } /* '\e776' */
+.icon-cd:before { content: "💿"; } /* '\1f4bf' */
+.icon-inbox:before { content: "\e777"; } /* '\e777' */
+.icon-install:before { content: "\e778"; } /* '\e778' */
+.icon-globe:before { content: "🌎"; } /* '\1f30e' */
+.icon-cloud:before { content: "\2601"; } /* '\2601' */
+.icon-cloud-thunder:before { content: "\26c8"; } /* '\26c8' */
+.icon-flash:before { content: "\26a1"; } /* '\26a1' */
+.icon-moon:before { content: "\263d"; } /* '\263d' */
+.icon-flight:before { content: "\2708"; } /* '\2708' */
+.icon-paper-plane:before { content: "\e79b"; } /* '\e79b' */
+.icon-leaf:before { content: "🍂"; } /* '\1f342' */
+.icon-lifebuoy:before { content: "\e788"; } /* '\e788' */
+.icon-mouse:before { content: "\e789"; } /* '\e789' */
+.icon-briefcase:before { content: "💼"; } /* '\1f4bc' */
+.icon-suitcase:before { content: "\e78e"; } /* '\e78e' */
+.icon-dot:before { content: "\e78b"; } /* '\e78b' */
+.icon-dot-2:before { content: "\e78c"; } /* '\e78c' */
+.icon-dot-3:before { content: "\e78d"; } /* '\e78d' */
+.icon-brush:before { content: "\e79a"; } /* '\e79a' */
+.icon-magnet:before { content: "\e7a1"; } /* '\e7a1' */
+.icon-infinity:before { content: "\221e"; } /* '\221e' */
+.icon-erase:before { content: "\232b"; } /* '\232b' */
+.icon-chart-pie:before { content: "\e751"; } /* '\e751' */
+.icon-chart-line:before { content: "📈"; } /* '\1f4c8' */
+.icon-chart-bar:before { content: "📊"; } /* '\1f4ca' */
+.icon-chart-area:before { content: "🔾"; } /* '\1f53e' */
+.icon-tape:before { content: "\2707"; } /* '\2707' */
+.icon-graduation-cap:before { content: "🎓"; } /* '\1f393' */
+.icon-language:before { content: "\e752"; } /* '\e752' */
+.icon-ticket:before { content: "🎫"; } /* '\1f3ab' */
+.icon-water:before { content: "💦"; } /* '\1f4a6' */
+.icon-droplet:before { content: "💧"; } /* '\1f4a7' */
+.icon-air:before { content: "\e753"; } /* '\e753' */
+.icon-credit-card:before { content: "💳"; } /* '\1f4b3' */
+.icon-floppy:before { content: "💾"; } /* '\1f4be' */
+.icon-clipboard:before { content: "📋"; } /* '\1f4cb' */
+.icon-megaphone:before { content: "📣"; } /* '\1f4e3' */
+.icon-database:before { content: "\e754"; } /* '\e754' */
+.icon-drive:before { content: "\e755"; } /* '\e755' */
+.icon-bucket:before { content: "\e756"; } /* '\e756' */
+.icon-thermometer:before { content: "\e757"; } /* '\e757' */
+.icon-key:before { content: "🔑"; } /* '\1f511' */
+.icon-flow-cascade:before { content: "\e790"; } /* '\e790' */
+.icon-flow-branch:before { content: "\e791"; } /* '\e791' */
+.icon-flow-tree:before { content: "\e792"; } /* '\e792' */
+.icon-flow-line:before { content: "\e793"; } /* '\e793' */
+.icon-flow-parallel:before { content: "\e794"; } /* '\e794' */
+.icon-rocket:before { content: "🚀"; } /* '\1f680' */
+.icon-gauge:before { content: "\e7a2"; } /* '\e7a2' */
+.icon-traffic-cone:before { content: "\e7a3"; } /* '\e7a3' */
+.icon-cc:before { content: "\e7a5"; } /* '\e7a5' */
+.icon-cc-by:before { content: "\e7a6"; } /* '\e7a6' */
+.icon-cc-nc:before { content: "\e7a7"; } /* '\e7a7' */
+.icon-cc-nc-eu:before { content: "\e7a8"; } /* '\e7a8' */
+.icon-cc-nc-jp:before { content: "\e7a9"; } /* '\e7a9' */
+.icon-cc-sa:before { content: "\e7aa"; } /* '\e7aa' */
+.icon-cc-nd:before { content: "\e7ab"; } /* '\e7ab' */
+.icon-cc-pd:before { content: "\e7ac"; } /* '\e7ac' */
+.icon-cc-zero:before { content: "\e7ad"; } /* '\e7ad' */
+.icon-cc-share:before { content: "\e7ae"; } /* '\e7ae' */
+.icon-cc-remix:before { content: "\e7af"; } /* '\e7af' */
+.icon-github:before { content: "\f300"; } /* '\f300' */
+.icon-github-circled:before { content: "\f301"; } /* '\f301' */
+.icon-flickr:before { content: "\f303"; } /* '\f303' */
+.icon-flickr-circled:before { content: "\f304"; } /* '\f304' */
+.icon-vimeo:before { content: "\f306"; } /* '\f306' */
+.icon-vimeo-circled:before { content: "\f307"; } /* '\f307' */
+.icon-twitter:before { content: "\f309"; } /* '\f309' */
+.icon-twitter-circled:before { content: "\f30a"; } /* '\f30a' */
+.icon-facebook:before { content: "\f30c"; } /* '\f30c' */
+.icon-facebook-circled:before { content: "\f30d"; } /* '\f30d' */
+.icon-facebook-squared:before { content: "\f30e"; } /* '\f30e' */
+.icon-gplus:before { content: "\f30f"; } /* '\f30f' */
+.icon-gplus-circled:before { content: "\f310"; } /* '\f310' */
+.icon-pinterest:before { content: "\f312"; } /* '\f312' */
+.icon-pinterest-circled:before { content: "\f313"; } /* '\f313' */
+.icon-tumblr:before { content: "\f315"; } /* '\f315' */
+.icon-tumblr-circled:before { content: "\f316"; } /* '\f316' */
+.icon-linkedin:before { content: "\f318"; } /* '\f318' */
+.icon-linkedin-circled:before { content: "\f319"; } /* '\f319' */
+.icon-dribbble:before { content: "\f31b"; } /* '\f31b' */
+.icon-dribbble-circled:before { content: "\f31c"; } /* '\f31c' */
+.icon-stumbleupon:before { content: "\f31e"; } /* '\f31e' */
+.icon-stumbleupon-circled:before { content: "\f31f"; } /* '\f31f' */
+.icon-lastfm:before { content: "\f321"; } /* '\f321' */
+.icon-lastfm-circled:before { content: "\f322"; } /* '\f322' */
+.icon-rdio:before { content: "\f324"; } /* '\f324' */
+.icon-rdio-circled:before { content: "\f325"; } /* '\f325' */
+.icon-spotify:before { content: "\f327"; } /* '\f327' */
+.icon-spotify-circled:before { content: "\f328"; } /* '\f328' */
+.icon-qq:before { content: "\f32a"; } /* '\f32a' */
+.icon-instagrem:before { content: "\f32d"; } /* '\f32d' */
+.icon-dropbox:before { content: "\f330"; } /* '\f330' */
+.icon-evernote:before { content: "\f333"; } /* '\f333' */
+.icon-flattr:before { content: "\f336"; } /* '\f336' */
+.icon-skype:before { content: "\f339"; } /* '\f339' */
+.icon-skype-circled:before { content: "\f33a"; } /* '\f33a' */
+.icon-renren:before { content: "\f33c"; } /* '\f33c' */
+.icon-sina-weibo:before { content: "\f33f"; } /* '\f33f' */
+.icon-paypal:before { content: "\f342"; } /* '\f342' */
+.icon-picasa:before { content: "\f345"; } /* '\f345' */
+.icon-soundcloud:before { content: "\f348"; } /* '\f348' */
+.icon-mixi:before { content: "\f34b"; } /* '\f34b' */
+.icon-behance:before { content: "\f34e"; } /* '\f34e' */
+.icon-google-circles:before { content: "\f351"; } /* '\f351' */
+.icon-vkontakte:before { content: "\f354"; } /* '\f354' */
+.icon-smashing:before { content: "\f357"; } /* '\f357' */
+.icon-sweden:before { content: "\f601"; } /* '\f601' */
+.icon-db-shape:before { content: "\f600"; } /* '\f600' */
+.icon-logo-db:before { content: "\f603"; } /* '\f603' */
+

BIN
edit-backstage/hot_online/icons/entypo.eot


+ 834 - 0
edit-backstage/hot_online/icons/entypo.svg

@@ -0,0 +1,834 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata>
+Created by FontForge 20110222 at Sun Nov 11 15:34:13 2012
+ By Vitaly,,,
+Copyright (C) 2012 by Daniel Bruce
+</metadata>
+<defs>
+<font id="entypo" horiz-adv-x="1030" >
+  <font-face 
+    font-family="Entypo"
+    font-weight="500"
+    font-stretch="normal"
+    units-per-em="1000"
+    panose-1="2 0 6 3 0 0 0 0 0 0"
+    ascent="850"
+    descent="-150"
+    bbox="14.0606 -150.5 1019.01 852.48"
+    underline-thickness="50"
+    underline-position="-100"
+    unicode-range="U+002B-1F6AB"
+  />
+<missing-glyph horiz-adv-x="364" 
+d="M33 0v666h265v-666h-265zM66 33h199v600h-199v-600z" />
+    <glyph glyph-name=".notdef" horiz-adv-x="364" 
+d="M33 0v666h265v-666h-265zM66 33h199v600h-199v-600z" />
+    <glyph glyph-name="glyph1" unicode="&#x266b;" horiz-adv-x="770" 
+d="M221 714l534 116v-704q2 -48 -33 -85t-83 -55q-63 -23 -109 -8t-63 64q-18 48 7 97q22 43 76 68.5t115 14.5v376l-354 -82v-490q0 -48 -35 -85t-83 -55q-63 -22 -108.5 -7.5t-61.5 63.5q-18 48 6 97q21 44 75.5 69.5t116.5 13.5v592v0z" />
+    <glyph glyph-name="glyph2" unicode="&#x1f3b5;" horiz-adv-x="730" 
+d="M615 800q42 0 71 -29t29 -71v-700q0 -41 -29.5 -70.5t-70.5 -29.5h-500q-40 0 -70 30t-30 70v700q0 41 29.5 70.5t70.5 29.5h500zM505 324q32 44 23 92q-9 49 -33 80q-7 10 -49 66q-25 34 -25 54h-60v-368q-41 16 -90 -2q-36 -12 -62 -44t-14 -68q11 -31 52 -44.5t86 0.5
+q88 30 88 98v262q31 -5 52.5 -29t20.5 -55q-2 -26 -3 -42q-4 -10 2 -10q5 0 12 10v0z" />
+    <glyph glyph-name="plus" unicode="+" horiz-adv-x="610" 
+d="M565 400q30 0 30 -50t-30 -50h-210v-210q0 -30 -50 -30t-50 30v210h-210q-30 0 -30 50t30 50h210v210q0 30 50 30t50 -30v-210h210v0z" />
+    <glyph glyph-name="hyphen" unicode="-" horiz-adv-x="610" 
+d="M565 400q30 0 30 -50t-30 -50h-520q-30 0 -30 50t30 50h520v0z" />
+    <glyph glyph-name="glyph0" unicode="&#x266a;" horiz-adv-x="612" 
+d="M396 820q0 -42 46 -97q43 -52 90 -100q45 -46 61 -119q17 -74 -39 -154q-20 -35 -26 -16q-1 6 0 16q11 18 6 56q-5 42 -13 78q-10 42 -45 74.5t-80 39.5v-536q2 -56 -41.5 -100.5t-100.5 -65.5q-72 -28 -143 -8q-69 20 -89 76q-20 57 20 115q42 60 116 85q85 30 158 4
+v652h80v0z" />
+    <glyph glyph-name="glyph3" unicode="&#x1f50d;" horiz-adv-x="819" 
+d="M787 78q30 -34 6 -62l-46 -46q-36 -32 -68 0l-190 190q-73 -42 -156 -42q-128 0 -223 95t-95 223t90 219t218 91q127 0 224 -95q96 -95 96 -223q0 -89 -46 -162zM109 436q0 -88 68 -156t156 -68t151 63t63 153q0 87 -68 155q-67 67 -156 67q-88 0 -151 -63t-63 -151v0z
+" />
+    <glyph glyph-name="glyph4" unicode="&#x1f526;" horiz-adv-x="932" 
+d="M906 576q23 -69 -5 -92l-134 -134q-18 -18 -66.5 -26.5t-91.5 -3.5l-408 -408q-18 -18 -57 -6q-37 11 -74 48.5t-50 75.5q-14 38 5 56l408 408q-5 43 3.5 91.5t26.5 66.5l136 136q24 28 92 4t130 -86q63 -62 85 -130zM453 312q46 46 14 82q-21 15 -43 9t-39 -23
+q-18 -18 -22.5 -39t10.5 -43q32 -32 80 14zM709 596q24 -24 61.5 -46.5t68.5 -28.5q25 -5 28 -1t-4 27q-18 69 -76 127q-59 59 -125 76q-23 6 -27 2t1 -28q6 -30 28.5 -68t44.5 -60v0z" />
+    <glyph glyph-name="glyph5" unicode="&#x2709;" horiz-adv-x="930" 
+d="M17 626q2 14 26 14h846q38 0 20 -32q-8 -15 -24 -22q-8 -4 -96.5 -51t-181 -97t-96.5 -52q-16 -10 -46 -10q-29 0 -46 10q-4 2 -96.5 52t-181 97t-96.5 51q-32 18 -28 40zM895 486q20 11 20 -10v-368q0 -16 -17 -32t-33 -16h-800q-16 0 -33 16t-17 32v368q0 21 20 10
+l384 -200q17 -10 46 -10t46 10l384 200v0z" />
+    <glyph glyph-name="glyph6" unicode="&#x2665;" horiz-adv-x="890" 
+d="M805 644q70 -64 70 -156t-70 -158l-360 -330l-360 330q-70 66 -70 158t70 156q61 58 151 58q89 0 153 -58l56 -52l58 52q61 58 150 58q88 0 152 -58v0z" />
+    <glyph glyph-name="glyph7" unicode="&#x2661;" horiz-adv-x="890" 
+d="M875 486q0 -92 -70 -156l-360 -330l-360 330q-70 64 -70 156t70 156q64 58 152 58q89 0 150 -58l58 -52l56 52q64 58 152 58t152 -58q70 -64 70 -156zM751 382q42 40 42 104q0 65 -38 100q-38 38 -102 38q-51 0 -104 -48l-104 -92l-106 92q-48 48 -102 48q-64 0 -103 -37
+t-39 -101q0 -66 44 -104l306 -286l306 286v0z" />
+    <glyph glyph-name="glyph8" unicode="&#x2605;" horiz-adv-x="910" 
+d="M455 790l120 -336h320l-262 -196l94 -348l-272 208l-272 -208l94 348l-262 196h320l120 336v0z" />
+    <glyph glyph-name="glyph9" unicode="&#x2606;" horiz-adv-x="910" 
+d="M633 258l94 -348l-272 208l-272 -208l94 348l-262 196h320l120 336l120 -336h320zM455 216l150 -124l-62 178l144 114l-176 -4l-56 202l-54 -202l-176 4l142 -114l-62 -178l150 124v0z" />
+    <glyph glyph-name="glyph10" unicode="&#x1f464;" horiz-adv-x="970" 
+d="M751 128q204 -72 204 -122v-106h-940v106q0 50 204 122q93 34 128 69q34 34 34 95q0 23 -22 49q-21 26 -32 73q-3 21 -23 26q-18 5 -23 60q0 32 14 38l4 4q-7 46 -12 88q-4 53 41 112q45 58 157 58t158 -58t40 -112l-12 -88q18 -8 18 -42q-5 -55 -23 -60q-20 -5 -23 -26
+q-7 -47 -31 -74q-23 -26 -23 -48q0 -60 35 -95q34 -34 127 -69v0z" />
+    <glyph glyph-name="glyph11" unicode="&#x1f465;" 
+d="M791 -90v150q0 54 -30 81q-32 29 -154 89q40 30 40 84q0 17 -13 33t-19 51q-2 8 -14 16q-13 8 -14 42q0 24 12 30q-10 40 -8 73.5t23 64.5q27 40 95 40t96 -40q29 -40 24 -78l-8 -60q12 -6 12 -30q-1 -34 -14 -42q-12 -8 -14 -16q-6 -35 -19 -51t-13 -33q0 -42 21 -66
+t77 -48q113 -47 130 -80q6 -7 9 -61q4 -71 5 -101v-48h-224zM527 172q182 -78 182 -124v-138h-694v184q0 44 84 78q73 30 104 64q28 31 28 88q0 21 -19 44t-25 68q-1 10 -18 22q-15 11 -20 56q0 26 10 36l4 2q-2 18 -5.5 46l-4.5 36q-5 50 33 103t127 53t127 -53t33 -103
+l-10 -82q14 -8 14 -38q-5 -45 -20 -56q-17 -12 -18 -22q-6 -45 -25 -68t-19 -44q0 -57 28 -88q31 -34 104 -64v0z" />
+    <glyph glyph-name="glyph12" unicode="&#xe700;" 
+d="M815 6v-106h-800v202q41 16 82 26q95 34 129 69q35 35 35 95q0 22 -23 48q-24 27 -31 74q-1 11 -23 25q-21 13 -25 61q0 32 14 38l4 4q-1 6 -3 19q-13 53 -8 95.5t39 85.5q46 58 160 58t160 -58t42 -112l-14 -88q18 -8 18 -42q-5 -55 -23 -60q-20 -5 -23 -26
+q-10 -46 -33 -73q-23 -28 -23 -49q0 -60 36 -95t130 -69q180 -65 180 -122zM865 400h150v-100h-150v-150h-100v150h-150v100h150v150h100v-150v0z" />
+    <glyph glyph-name="glyph13" unicode="&#x1f3ac;" horiz-adv-x="1010" 
+d="M955 700q17 0 28.5 -11.5t11.5 -28.5v-60h-100v-100h100v-100h-100v-100h100v-100h-100v-100h100v-60q0 -16 -12 -28t-28 -12h-900q-16 0 -28 12t-12 28v60h100v100h-100v100h100v100h-100v100h100v100h-100v60q0 17 11.5 28.5t28.5 11.5h900zM395 200l250 150l-250 150
+v-300v0z" />
+    <glyph glyph-name="glyph14" unicode="&#x1f304;" 
+d="M253 518q-52 0 -90 -39t-38 -91v-160l-108 296q-11 38 22 52l680 248q36 11 50 -24l102 -282h-100l-124 150l-214 -150h-180zM977 428q16 0 27 -12t11 -28v-472q0 -16 -11 -28t-27 -12h-724q-16 0 -27 12t-11 28v472q0 16 11 28t27 12h724zM921 -24v162l-72 160l-166 -60
+l-130 -132l-138 170l-92 -214v-86h598v0z" />
+    <glyph glyph-name="glyph15" unicode="&#x1f4f7;" 
+d="M515 450q63 0 106.5 -44t43.5 -106t-44.5 -106t-105.5 -44t-105.5 44t-44.5 106t44.5 106t105.5 44zM915 600q42 0 71 -29t29 -71v-450q0 -41 -29.5 -70.5t-70.5 -29.5h-800q-40 0 -70 30t-30 70v450q0 41 29.5 70.5t70.5 29.5h120q28 0 40 30l30 92q10 28 40 28h340
+q30 0 40 -28l30 -92q12 -30 40 -30h120zM692 123q73 73 73 177t-73 177t-177 73t-177 -73t-73 -177t73 -177t177 -73t177 73zM881 430q14 0 24 11t10 25t-10 24t-24 10q-36 0 -36 -34q0 -15 10.5 -25.5t25.5 -10.5v0z" />
+    <glyph glyph-name="glyph16" unicode="&#x268f;" horiz-adv-x="630" 
+d="M265 570v-90q0 -80 -80 -80h-90q-80 0 -80 80v90q0 80 80 80h90q80 0 80 -80zM615 570v-90q0 -80 -80 -80h-90q-80 0 -80 80v90q0 80 80 80h90q80 0 80 -80zM265 220v-90q0 -80 -80 -80h-90q-80 0 -80 80v90q0 80 80 80h90q80 0 80 -80zM535 300q80 0 80 -80v-90
+q0 -80 -80 -80h-90q-80 0 -80 80v90q0 80 80 80h90v0z" />
+    <glyph glyph-name="glyph17" unicode="&#x2630;" horiz-adv-x="730" 
+d="M665 400q21 0 35.5 -15t14.5 -35t-15.5 -35t-34.5 -15h-600q-19 0 -34.5 15t-15.5 35t14.5 35t35.5 15h600zM65 500q-19 0 -34.5 15t-15.5 35t14.5 35t35.5 15h600q21 0 35.5 -15t14.5 -35t-15.5 -35t-34.5 -15h-600zM665 200q21 0 35.5 -15t14.5 -35t-15.5 -35
+t-34.5 -15h-600q-19 0 -34.5 15t-15.5 35t14.5 35t35.5 15h600v0z" />
+    <glyph glyph-name="glyph18" unicode="&#x2713;" horiz-adv-x="697" 
+d="M264 0q-34 0 -56 28l-180 236q-25 39 -2 78.5t67 33.5q29 -5 47 -28l118 -154l296 474q15 23 41 30t55 -8q23 -15 30 -41t-8 -55l-350 -560q-20 -32 -56 -32l-2 -2v0z" />
+    <glyph glyph-name="glyph19" unicode="&#x2715;" horiz-adv-x="500" 
+d="M467 194q18 -18 18 -43t-17.5 -42t-43.5 -17t-43 16l-132 152l-132 -152q-17 -16 -43 -16t-43 16q-16 17 -16 43t16 43l138 156l-138 158q-16 17 -16 43t16 43q17 16 43 16t43 -16l132 -152l132 152q17 16 43 16t43.5 -17t17.5 -42t-18 -43l-138 -158l138 -156v0z" />
+    <glyph glyph-name="glyph20" unicode="&#x2716;" horiz-adv-x="870" 
+d="M732 647q123 -123 123 -297t-123 -297t-297 -123t-297 123t-123 297t123 297t297 123t297 -123zM521 350l154 154l-86 86l-154 -152l-152 152l-88 -86l154 -154l-154 -152l88 -86l152 152l154 -152l86 86l-154 152v0z" />
+    <glyph glyph-name="glyph21" unicode="&#x274e;" horiz-adv-x="830" 
+d="M715 750q42 0 71 -29t29 -71v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-600q-40 0 -70 30t-30 70v600q0 41 29.5 70.5t70.5 29.5h600zM569 112l86 86l-154 152l154 154l-86 86l-154 -152l-152 152l-88 -86l154 -154l-154 -152l88 -86l152 152l154 -152v0z" />
+    <glyph glyph-name="glyph23" unicode="&#x2795;" horiz-adv-x="870" 
+d="M732 647q123 -123 123 -297t-123 -297t-297 -123t-297 123t-123 297t123 297t297 123t297 -123zM487 300h200v102h-200v202h-102v-202h-202v-102h202v-202h102v202v0z" />
+    <glyph glyph-name="glyph24" unicode="&#x229e;" horiz-adv-x="830" 
+d="M715 750q42 0 71 -29t29 -71v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-600q-40 0 -70 30t-30 70v600q0 41 29.5 70.5t70.5 29.5h600zM665 300v100h-200v200h-100v-200h-200v-100h200v-200h100v200h200v0z" />
+    <glyph glyph-name="glyph26" unicode="&#x2796;" horiz-adv-x="870" 
+d="M732 647q123 -123 123 -297t-123 -297t-297 -123t-297 123t-123 297t123 297t297 123t297 -123zM687 402h-504v-102h504v102v0z" />
+    <glyph glyph-name="glyph27" unicode="&#x229f;" horiz-adv-x="830" 
+d="M715 750q42 0 71 -29t29 -71v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-600q-40 0 -70 30t-30 70v600q0 41 29.5 70.5t70.5 29.5h600zM665 300v100h-500v-100h500v0z" />
+    <glyph glyph-name="glyph28" unicode="&#x2753;" horiz-adv-x="610" 
+d="M15 526q5 129 77 201.5t203 72.5q130 0 214 -60q86 -62 86 -184q0 -64 -42 -124q-13 -21 -88 -80l-46 -30q-41 -34 -48 -60q-7 -18 -8 -44q0 -14 -16 -14h-128q-16 0 -16 12q5 99 28 124q26 36 104 90l24 14q22 16 34 34q28 43 28 70q0 40 -26 78q-29 36 -92 36
+q-68 0 -94 -44q-28 -41 -28 -92h-166zM293 104q44 0 73 -30t27 -74q-2 -45 -31.5 -72.5t-74.5 -25.5q-45 0 -73.5 29.5t-26.5 74.5t31.5 72.5t74.5 25.5v0z" />
+    <glyph glyph-name="glyph29" unicode="&#xe704;" horiz-adv-x="950" 
+d="M795 680q135 -131 140 -322q2 -192 -131 -327q-134 -137 -323 -141q-192 -2 -327 131q-138 134 -139 323q-4 190 130 327q134 138 324 139t326 -130zM467 70q29 0 48.5 19t19.5 47q2 30 -17 49t-49 19h-2q-28 0 -47 -18t-21 -46q0 -29 19 -48.5t47 -21.5h2zM633 398
+q26 35 26 78q0 76 -52 115t-136 39t-128.5 -44.5t-47.5 -127.5v-4h110v4q0 26 16 54q17 24 54 24q40 0 52 -20q16 -19 16 -44q0 -15 -9.5 -30t-19 -23t-27 -20.5t-22.5 -16.5q-26 -20 -38 -34q-13 -20 -18 -78v-8h108v4q0 40 32 64l28 18q46 34 56 50v0z" />
+    <glyph glyph-name="glyph30" unicode="&#x2139;" horiz-adv-x="490" 
+d="M367 850q46 0 73 -26t27 -70q0 -51 -40 -88.5t-94 -37.5q-47 0 -73.5 25.5t-24.5 72.5q0 45 35 85q34 39 97 39zM161 -150q-100 0 -54 178l60 254q14 56 0 56q-12 0 -54 -18q-40 -17 -72 -38l-26 44q90 78 189 126t151 48q78 0 36 -162l-70 -266q-16 -64 6 -64
+q45 0 118 60l30 -40q-84 -86 -175 -132t-139 -46v0z" />
+    <glyph glyph-name="glyph31" unicode="&#xe705;" horiz-adv-x="950" 
+d="M795 680q135 -131 140 -322q2 -192 -131 -327q-134 -137 -323 -141q-192 -2 -327 131q-138 134 -139 323q-4 190 130 327q134 138 324 139t326 -130zM497 524q36 0 60 21.5t24 54.5q0 58 -60 58q-43 0 -65 -24q-23 -25 -23 -50q-2 -29 15.5 -44.5t48.5 -15.5zM401 64
+q29 0 84 26q53 25 106 78l-18 24q-48 -36 -72 -36q-15 0 -4 38l42 160q25 96 -22 96q-29 0 -89 -29q-61 -30 -115 -75l16 -26q52 34 74 34q12 0 0 -34l-36 -152q-26 -104 34 -104v0z" />
+    <glyph glyph-name="glyph32" unicode="&#x1f519;" horiz-adv-x="880" 
+d="M765 540q41 0 70.5 -29.5t29.5 -70.5v-290q0 -40 -30 -70t-70 -30h-690v140h650v210h-500v-110l-210 180l210 180v-110h540v0z" />
+    <glyph glyph-name="glyph33" unicode="&#x2302;" horiz-adv-x="930" 
+d="M903 336q15 -15 11 -26.5t-27 -11.5h-84v-310q0 -22 -6 -31t-26 -9h-204v310h-204v-310h-194q-25 0 -33.5 8t-8.5 32v310h-84q-23 0 -27 11.5t11 26.5l400 402q16 16 38 16t38 -16l400 -402v0z" />
+    <glyph glyph-name="glyph34" unicode="&#x1f517;" horiz-adv-x="830" 
+d="M115 138q0 -37 26.5 -62.5t62.5 -25.5q37 0 63 26l42 40q14 14 34 14q19 0 36 -14q31 -34 0 -70l-42 -40q-56 -56 -132 -56q-78 0 -134 56t-56 132q0 78 56 134l148 148q40 39 85 60.5t95.5 17t91.5 -43.5q16 -16 16 -36t-16 -36q-36 -31 -70 0q-50 48 -132 -34
+l-148 -146q-26 -26 -26 -64zM759 690q56 -56 56 -132q0 -78 -56 -134l-158 -158q-73 -72 -150 -72q-62 0 -112 50q-14 14 -14 34q0 21 14 35.5t35 14.5t35 -14q50 -48 122 24l158 156q28 28 28 64q0 38 -28 62q-25 26 -55.5 30.5t-60.5 -20.5l-50 -50q-17 -14 -36 -14
+q-20 0 -34 14q-34 34 0 70l50 50q58 55 130 50.5t126 -60.5v0z" />
+    <glyph glyph-name="glyph35" unicode="&#x1f4ce;" horiz-adv-x="969" 
+d="M259 -140q-103 0 -170 72q-73 71 -74 166q-1 96 84 190l496 496q79 80 174 54q43 -12 78.5 -47t47.5 -79q26 -96 -54 -176l-474 -474q-40 -40 -88 -46q-48 -4 -80 28q-30 24 -27 74t47 92l332 334q24 26 50 0t0 -50l-332 -332q-44 -44 -20 -70q30 -20 70 20l474 474
+q50 50 34 108q-16 60 -76 76q-54 14 -108 -36l-494 -494q-65 -76 -64 -143q1 -66 52 -117q62 -55 127.5 -50t130.5 62l496 494q24 24 50 0q25 -22 0 -48l-496 -496q-82 -82 -186 -82v0z" />
+    <glyph glyph-name="glyph36" unicode="&#x1f512;" horiz-adv-x="730" 
+d="M655 476q20 0 40 -19.5t20 -40.5v-390q0 -48 -48 -66l-60 -18q-41 -16 -96 -16h-290q-57 0 -98 16l-60 18q-48 18 -48 66v390q0 22 15 41t35 19h100v70q0 108 50.5 169t149.5 61t149.5 -61t50.5 -169v-70h90zM265 566v-90h200v90q0 50 -26.5 80t-73.5 30t-73.5 -30
+t-26.5 -80v0z" />
+    <glyph glyph-name="glyph37" unicode="&#x1f513;" horiz-adv-x="730" 
+d="M655 450q19 0 39.5 -20t20.5 -40v-390q0 -21 -14.5 -40t-33.5 -24l-60 -20q-51 -16 -96 -16h-290q-47 0 -98 16l-60 20q-19 5 -33.5 24t-14.5 40v390q0 22 15 41t35 19h400v140q0 110 -100 110t-100 -110v-40h-100v20q0 108 50.5 169t149.5 61q200 0 200 -230v-120h90v0z
+" />
+    <glyph glyph-name="glyph38" unicode="&#xe70a;" 
+d="M515 630q88 0 174.5 -24.5t143.5 -62.5q116 -78 162 -148q20 -32 20 -45t-20 -44q-49 -74 -162 -149q-57 -38 -143.5 -62.5t-174.5 -24.5t-174.5 24.5t-143.5 62.5q-111 72 -162 149q-20 31 -20 44t20 45q48 74 162 148q57 38 143.5 62.5t174.5 24.5zM672 199
+q65 63 65 151q0 90 -65 153q-64 63 -157 63t-157 -63q-65 -63 -65 -153q0 -88 65 -151q64 -63 157 -63t157 63zM515 350q8 -8 37 -2q11 2 28 6t22 5q21 4 25 -9q0 -44 -33.5 -75t-78.5 -31t-77.5 31t-32.5 75q0 46 32 77t78 31q5 0 7.5 -3t3 -9t0 -11.5t-3 -14t-3.5 -13
+t-3 -11.5l-3 -8q-8 -25 2 -38v0z" />
+    <glyph glyph-name="glyph39" unicode="&#xe70c;" horiz-adv-x="990" 
+d="M951 631q-43 -92 -128 -157l18 -24q17 -28 6 -54l-48 -158q-12 -29 -36 -46l-464 -328q-42 -30 -64 4l-210 304q-12 20 -8.5 40.5t20.5 31.5l464 328q25 18 54 18h158q30 0 48 -26l28 -40q168 130 114 286q-10 28 18 40q32 8 38 -20q36 -106 -8 -199zM743 362
+q40 31 34 80l-32 -16q-7 -4 -12 -4q-17 0 -28 18q-12 30 16 40l24 14q-48 35 -92 0q-27 -17 -33.5 -49t13.5 -63q17 -24 49 -31t61 11v0z" />
+    <glyph glyph-name="glyph40" unicode="&#x1f516;" horiz-adv-x="390" 
+d="M325 800q21 0 35.5 -15t14.5 -35v-850l-180 180l-180 -180v850q0 50 40 50h270v0z" />
+    <glyph glyph-name="glyph41" unicode="&#x1f4d1;" horiz-adv-x="580" 
+d="M515 850q19 0 34.5 -15t15.5 -35v-850l-150 180v620q0 20 -15.5 35t-34.5 15h-100q0 50 40 50h210zM265 700q19 0 34.5 -15t15.5 -35v-800l-150 180l-150 -180v800q0 50 40 50h210v0z" />
+    <glyph glyph-name="glyph42" unicode="&#x2691;" horiz-adv-x="930" 
+d="M889 616q13 6 22 -0.5t0 -19.5q-94 -136 -164 -213q-67 -75 -110 -90q-42 -15 -73 -2q-33 14 -60 37t-63 40q-33 16 -93 -4q-59 -20 -139 -86l90 -352h-100l-184 720l92 34q91 67 152 86q62 20 98 3q35 -16 64 -51t62 -71t79 -62q43 -25 129 -20q84 5 198 51v0z" />
+    <glyph glyph-name="glyph43" unicode="&#x1f44d;" horiz-adv-x="830" 
+d="M655 467q55 -7 108 -24q52 -16 52 -47q0 -74 -61 -284q-62 -212 -107 -212q-144 0 -288 42t-144 88v342q0 14 15 34q21 29 99 86q30 22 108 74q52 36 104 100q13 16 31.5 39t31.5 38.5t22 26.5q31 37 41 26q48 -77 29 -137q-20 -62 -59 -119q-40 -58 -40 -60q1 -5 58 -13
+zM165 476q14 0 0 -14q-50 -50 -50 -104v-318q0 -51 52 -104q10 -10 -2 -10q-41 0 -66 12t-51 41q-33 37 -33 99v242q0 62 33 100q34 38 63 47q30 9 54 9v0z" />
+    <glyph glyph-name="glyph44" unicode="&#x1f44e;" horiz-adv-x="830" 
+d="M176 231q-56 7 -108 24q-53 17 -53 47q0 70 62 285q61 213 106 213q146 0 288 -43q144 -43 144 -89v-342q0 -23 -33 -54q-34 -33 -74 -61q-53 -38 -82 -57l-33 -22q-52 -36 -104 -100q-13 -16 -31.5 -39t-31.5 -38.5t-22 -26.5q-31 -37 -41 -26q-48 77 -29 137
+q20 62 59 119q40 58 40 60q-1 5 -57 13zM665 222q-12 0 2 14q48 50 48 104v318q0 51 -52 104q-10 10 2 10q41 0 66 -12t51 -41q33 -37 33 -99v-242q0 -94 -63 -129q-47 -27 -87 -27v0z" />
+    <glyph glyph-name="glyph45" unicode="&#x1f4e5;" 
+d="M983 198q16 -9 26.5 -30t3.5 -42l-28 -154q-4 -19 -21.5 -32.5t-40.5 -13.5h-816q-23 0 -40.5 13.5t-21.5 32.5l-28 154q-10 48 32 72l158 108h98l-170 -130h178q7 0 12 -8l40 -110h300l40 110q8 8 12 8h178l-170 130h98zM775 520l-260 -244l-260 244h166v256h190v-256
+h164v0z" />
+    <glyph glyph-name="glyph46" unicode="&#x1f4e4;" 
+d="M515 776l260 -244h-164v-256h-190v256h-166zM983 198q16 -9 26.5 -30t3.5 -42l-28 -154q-4 -19 -21.5 -32.5t-40.5 -13.5h-816q-23 0 -40.5 13.5t-21.5 32.5l-28 154q-10 48 32 72l158 108h98l-170 -130h178q7 0 12 -8l40 -110h300l40 110q8 8 12 8h178l-170 130h98
+l160 -108v0z" />
+    <glyph glyph-name="glyph47" unicode="&#xe711;" 
+d="M775 494q99 0 170 -68q70 -67 70 -166t-70 -166q-71 -68 -170 -68h-190v190h106l-176 230l-174 -230h104v-190h-248q-73 0 -127.5 52t-54.5 124q0 74 53.5 126t128.5 52q12 0 20 -2q-2 16 -2 38q0 108 78 184q77 76 188 76q92 0 161.5 -53.5t92.5 -132.5q25 4 40 4v0z
+" />
+    <glyph glyph-name="glyph48" unicode="&#xe712;" horiz-adv-x="930" 
+d="M915 10q-86 152 -208 197q-121 45 -330 45v-218l-362 334l362 322v-192q88 0 166.5 -27t132.5 -70q110 -88 165 -199q57 -117 68 -164l6 -28v0z" />
+    <glyph glyph-name="glyph49" unicode="&#xe713;" 
+d="M165 368l212 -196v-138l-362 334l362 322v-134zM627 498q103 0 182 -50q77 -49 115 -122q78 -155 87 -266l4 -50q-85 154 -168 198t-220 44v-218l-362 334l362 322v-192v0z" />
+    <glyph glyph-name="glyph50" unicode="&#x27a6;" horiz-adv-x="930" 
+d="M555 252q-211 0 -332 -45q-122 -45 -208 -197q9 48 20 76.5t43 93.5q40 83 96 148q56 64 156 117q101 53 225 53v192l360 -322l-360 -334v218v0z" />
+    <glyph glyph-name="glyph51" unicode="&#x275e;" horiz-adv-x="792" 
+d="M15 530q0 61 43 105.5t103 44.5q146 0 184 -146q38 -140 -40 -302q-79 -168 -224 -204q-34 -8 -66 -8v70q111 0 182 108q54 86 26 146q-17 36 -62 36q-60 0 -103 44.5t-43 105.5zM581 680q146 0 184 -146q38 -140 -40 -302q-79 -168 -224 -204q-34 -8 -66 -8v70
+q111 0 182 108q54 86 26 146q-17 36 -62 36q-60 0 -103 44.5t-43 105.5t43 105.5t103 44.5v0z" />
+    <glyph glyph-name="glyph52" unicode="&#xe714;" 
+d="M411 604q0 -18 -16 -30l-246 -224l246 -226q16 -12 16 -30q0 -19 -16 -32q-30 -30 -60 0l-320 288l320 286q30 30 60 0q16 -13 16 -32zM697 636l318 -286l-318 -288q-32 -30 -62 0q-32 32 0 62l248 226l-248 224q-32 30 0 62q30 30 62 0v0z" />
+    <glyph glyph-name="glyph53" unicode="&#xe715;" 
+d="M15 560q0 22 14 36t36 14h288q-65 -49 -98 -88l-10 -12h-130v-450h650v56l100 82v-188q0 -20 -15.5 -35t-34.5 -15h-750q-19 0 -34.5 15t-15.5 35v550zM683 408q-165 0 -242 -41q-75 -40 -160 -181q0 72 32 157q16 43 48 88.5t66 73.5q42 35 111 57t145 22v156l332 -250
+l-332 -260v178v0z" />
+    <glyph glyph-name="glyph54" unicode="&#x270e;" horiz-adv-x="810" 
+d="M780 616q15 -32 15 -48v-16q-90 -90 -542 -540l-238 -52l50 240q452 450 542 540q54 12 126 -60q32 -32 47 -64zM239 40l24 24q-1 44 -52 94q-20 20 -45 35q-22 13 -35 13l-14 2l-22 -24l-18 -80q56 -31 82 -82l80 18v0z" />
+    <glyph glyph-name="glyph55" unicode="&#x2712;" horiz-adv-x="728" 
+d="M75 -138q-6 -20 -26 -8q-18 7 -16 34q5 103 50 226q-100 154 -52 316q24 -79 76 -158q22 -34 32 -30q7 4 0 83q-8 88 -11 166q-3 88 25 157q24 47 80 94q62 52 104 70q-24 -47 -33 -94q-19 -105 17 -110q12 0 84 120q72 121 106 122q46 4 114 -29t82 -65q12 -24 0 -79
+t-40 -83q-44 -44 -146 -62t-114 -24q-16 -10 12 -34q55 -48 176 -20q-55 -79 -136 -114q-77 -33 -132 -38q-53 -5 -54 -10q-4 -23 49 -54q53 -30 101 -14q-30 -56 -63 -84q-34 -29 -52.5 -35t-77.5 -11q-69 -6 -85 -8l-70 -224v0z" />
+    <glyph glyph-name="glyph56" unicode="&#xe716;" horiz-adv-x="1010" 
+d="M59 548q4 9 12 14q1 0 49 17q62 22 93 32q47 15 58 15h44v150h380v-150h46q12 0 57 -15q30 -10 92 -32q48 -17 49 -17q18 -8 12 -26q-4 -10 -20 -10h-850q-26 0 -22 22zM941 470q20 0 37 -19.5t17 -40.5v-174q0 -21 -17 -40.5t-37 -19.5h-100l44 -250h-760l44 250h-98
+q-20 0 -38 19.5t-18 40.5v174q0 21 18 40.5t38 19.5h870zM225 26h560l-70 324h-420l-70 -324v0z" />
+    <glyph glyph-name="glyph57" unicode="&#xe717;" 
+d="M217 50q-41 0 -70.5 29.5t-29.5 70.5v302h-102l176 198l174 -198h-100v-262h272l128 -140h-448zM915 250h100l-174 -200l-176 200h102v260h-274l-128 140h450q41 0 70.5 -29.5t29.5 -70.5v-300v0z" />
+    <glyph glyph-name="glyph58" unicode="&#x2328;" 
+d="M945 650q28 0 49 -21t21 -49v-460q0 -29 -20.5 -49.5t-49.5 -20.5h-860q-29 0 -49.5 20.5t-20.5 49.5v460q0 28 21 49t49 21h860zM565 450h100v100h-100v-100zM615 400v-100h100v100h-100zM415 450h100v100h-100v-100zM465 400v-100h100v100h-100zM265 450h100v100h-100
+v-100zM315 400v-100h100v100h-100zM115 450h100v100h-100v-100zM165 400v-100h100v100h-100zM215 250h-100v-100h100v100zM765 250h-500v-100h500v100zM915 250h-100v-100h100v100zM865 300v100h-100v-100h100zM915 450v100h-200v-100h200v0z" />
+    <glyph glyph-name="glyph59" unicode="&#xe718;" horiz-adv-x="830" 
+d="M715 700q42 0 71 -29t29 -71v-350q0 -41 -29.5 -70.5t-70.5 -29.5h-200v-150l-200 150h-200q-40 0 -70 30t-30 70v350q0 41 29.5 70.5t70.5 29.5h600v0z" />
+    <glyph glyph-name="glyph60" unicode="&#xe720;" 
+d="M15 450q0 41 29.5 70.5t70.5 29.5h190v-310h350l6 2h4v-92q0 -41 -29.5 -70.5t-70.5 -29.5h-250l-150 -150v150h-50q-40 0 -70 30t-30 70v300zM915 800q42 0 71 -29t29 -71v-300q0 -41 -29.5 -70.5t-70.5 -29.5h-50v-150l-150 150h-350v400q0 41 29.5 70.5t70.5 29.5h450
+v0z" />
+    <glyph glyph-name="glyph61" unicode="&#x1f514;" horiz-adv-x="830" 
+d="M647 426q30 -64 85 -74q27 -5 48 -26.5t31 -51.5q22 -61 -74 -161q-95 -98 -252 -157q-163 -58 -297 -45q-132 13 -155 75q-19 54 12 111t18 111q-56 193 -47 300q9 108 113 192q26 23 29 51t27.5 37.5t47.5 -10.5q22 -19 56 -18q132 2 198 -66q64 -66 160 -268zM620 107
+q71 53 100 91q29 39 25 50q-7 22 -49 33q-43 11 -124 1q-84 -11 -187 -48q-103 -38 -173 -87q-72 -51 -94 -84q-23 -35 -17 -53q4 -12 50 -22q45 -10 134 -4q86 6 176 38q86 31 159 85zM399 196q23 7 38 14l2 -2q14 -41 -17 -83q-32 -44 -89 -63q-96 -36 -152 14
+q78 67 218 120v0z" />
+    <glyph glyph-name="glyph62" unicode="&#x26a0;" horiz-adv-x="992" 
+d="M972 -24q10 -16 0 -34q-10 -16 -30 -16h-892q-17 0 -28.5 17t-1.5 33l446 782q8 18 30 18t30 -18zM552 126h-110v-100h110v100zM552 200v300h-110v-300h110v0z" />
+    <glyph glyph-name="glyph63" unicode="&#x1f4a5;" horiz-adv-x="931" 
+d="M900 234q19 -16 15.5 -33t-27.5 -23l-78 -22q-23 -6 -39.5 -27.5t-14.5 -48.5l4 -82q2 -23 -13.5 -34t-38.5 0l-86 44q-25 12 -49 3t-33 -29l-46 -88q-12 -22 -29 -23t-33 19l-50 78q-35 48 -88 20l-122 -70q-21 -14 -32 -6.5t-2 32.5l54 164q8 25 -5 44.5t-35 21.5
+l-106 12q-25 4 -29 18t15 30l86 76q20 17 20 41t-20 41l-86 76q-19 16 -15.5 33t27.5 23l78 22q23 6 40.5 28t15.5 48l-6 82q0 24 14 35.5t38 0.5l80 -38q29 -10 52 -1t34 29l46 80q12 22 30 21t30 -23l50 -86q11 -21 33 -28.5t47 6.5l136 84q20 13 29.5 6.5t0.5 -32.5
+l-60 -170q-11 -24 2.5 -42t37.5 -20l114 -12q26 -2 29.5 -16.5t-15.5 -29.5l-86 -76q-18 -16 -18 -41t18 -41zM516 246h-100v-104h100v104zM516 302v260h-100v-260h100v0z" />
+    <glyph glyph-name="glyph64" unicode="&#xe722;" 
+d="M915 750q42 0 71 -29t29 -71v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-800q-40 0 -70 30t-30 70v600q0 41 29.5 70.5t70.5 29.5h800zM915 650h-800v-600h800v600zM465 156h-250v90h250v-90zM465 306h-250v90h250v-90zM465 456h-250v90h250v-90zM811 226l4 -70h-250
+q0 70 6 70q84 22 84 66q0 16 -27 56t-27 88q0 110 90 110t90 -110q0 -48 -28 -88t-28 -56q0 -20 20.5 -35.5t43.5 -22.5l22 -8v0z" />
+    <glyph glyph-name="glyph65" unicode="&#xe723;" 
+d="M461 780v-860q0 -20 -20 -20h-46q-20 0 -20 20v440h-176q-16 0 -28 6q-13 2 -26 12l-120 82q-10 6 -10 16t10 16l120 82q13 10 26 12q7 4 28 4h176v190q0 20 20 20h46q20 0 20 -20zM1005 592q10 -6 10 -16t-10 -16l-118 -82q-23 -12 -26 -12q-13 -6 -28 -6h-302l-40 230
+h342q22 0 54 -16l118 -82v0z" />
+    <glyph glyph-name="glyph66" unicode="&#xe724;" horiz-adv-x="530" 
+d="M442 677q73 -73 73 -177q0 -105 -62 -243q-63 -139 -126 -223l-62 -84q-35 41 -83 116.5t-80 137.5q-87 169 -87 296q0 104 73 177t177 73t177 -73zM265 362q55 0 95.5 40t40.5 96q0 55 -40 94.5t-96 39.5q-55 0 -94.5 -39t-39.5 -95t39.5 -96t94.5 -40v0z" />
+    <glyph glyph-name="glyph67" unicode="&#xe727;" 
+d="M1015 -14q0 -14 -9 -25t-23 -11q-7 0 -18 6l-216 136l-216 -136q-18 -10 -34 0l-218 136l-216 -136q-16 -10 -34 0q-16 10 -16 30v584q0 20 16 30l234 146q18 10 34 0l216 -136l218 136q16 10 32 0l234 -146q16 -10 16 -30v-584zM249 150v506l-168 -104v-506zM483 46v506
+l-168 104v-506zM717 150v506l-170 -104v-506zM949 46v506l-168 104v-506l168 -104v0z" />
+    <glyph glyph-name="glyph68" unicode="&#x27a2;" horiz-adv-x="890" 
+d="M863 768q17 -17 9 -38q-7 -20 -29 -65t-24 -49q-71 -147 -304 -578l-66 -118l-54 380l-380 56q449 250 696 368q8 4 33 17.5t44.5 23t34.5 13.5q23 7 40 -10zM771 672l-304 -280l28 -234l276 514v0z" />
+    <glyph glyph-name="glyph69" unicode="&#xe728;" horiz-adv-x="990" 
+d="M829 694q141 -137 146 -336q2 -200 -136 -342q-137 -141 -338 -146q-200 -2 -341 137q-144 140 -145 337q-5 200 135 342t339 144q198 2 340 -136zM767 86q109 112 108 270q-1 157 -115 267q-111 109 -269 107q-157 -2 -267 -114q-109 -111 -107 -270q1 -158 114 -267
+q111 -109 270 -107q157 2 266 114zM267 126q9 58 18.5 93t34.5 101q33 88 77 132q45 45 125 76q81 32 141 42l60 10q-9 -58 -18.5 -93t-34.5 -101q-33 -88 -77 -132q-43 -43 -124 -74q-83 -32 -142 -42zM447 402q-22 -19 -22 -48q0 -27 21.5 -49.5t49.5 -22.5q30 0 49 22
+q52 52 88 186q-137 -36 -186 -88v0z" />
+    <glyph glyph-name="glyph70" unicode="&#x2615;" horiz-adv-x="711" 
+d="M604 719q49 -20 71.5 -42t19.5 -45l-72 -594q-1 -13 -34 -36q-36 -25 -104 -43.5t-130 -18.5t-128 18.5t-105 43.5q-34 23 -35 36l-72 594q-5 28 36 57q46 33 129.5 52t174.5 19q150 0 249 -41zM355 544q62 0 129.5 14t105.5 34q33 18 33 30t-33 29q-39 20 -106 33.5
+t-129 13.5t-129 -13.5t-106 -33.5q-33 -17 -33 -29t33 -30q38 -20 105.5 -34t129.5 -14v0z" />
+    <glyph glyph-name="glyph71" unicode="&#xe729;" horiz-adv-x="790" 
+d="M65 458q121 -70 330 -70t330 70l-54 -486q-1 -13 -35 -36q-32 -22 -100 -43t-141 -21q-64 0 -132.5 19t-107.5 45q-35 22 -36 36zM553 758q94 -18 158 -55t64 -71v-10q0 -59 -112 -99q-114 -41 -268 -41t-268 41q-112 40 -112 99v10q0 34 64 71t158 55l42 48q23 26 70 26
+h92q52 0 70 -26zM499 646h84q-95 114 -104 126q-13 16 -32 16h-102q-22 0 -32 -16l-106 -126h84l64 66h82l62 -66v0z" />
+    <glyph glyph-name="glyph72" unicode="&#xe730;" horiz-adv-x="730" 
+d="M615 800q42 0 71 -29t29 -71v-700q0 -41 -29.5 -70.5t-70.5 -29.5h-500q-40 0 -70 30t-30 70v700q0 41 29.5 70.5t70.5 29.5h500zM615 0v700h-500v-700h500v0z" />
+    <glyph glyph-name="glyph73" unicode="&#xe736;" horiz-adv-x="1031" 
+d="M985 480q37 -10 30 -46l-150 -556q-4 -15 -17.5 -22.5t-30.5 -3.5l-406 110q-14 3 -23 16.5t-5 29.5l24 92l-180 -48q-39 -10 -50 26l-160 602q-10 36 28 48l454 122q17 4 30.5 -3.5t17.5 -22.5l66 -244zM97 670l144 -542l392 106l-144 540zM799 -72l132 492l-298 82
+l76 -282q10 -34 -28 -46l-196 -52l-26 -102l340 -92v0z" />
+    <glyph glyph-name="glyph74" unicode="&#xe737;" 
+d="M15 600q0 41 29.5 70.5t70.5 29.5h800q42 0 71 -29t29 -71v-500q0 -41 -29.5 -70.5t-70.5 -29.5h-800q-40 0 -70 30t-30 70v500zM915 600h-800v-500h800v500v0z" />
+    <glyph glyph-name="glyph75" unicode="&#x1f4c4;" horiz-adv-x="730" 
+d="M227 398h280v-90h-280v90zM615 800q42 0 71 -29t29 -71v-700q0 -41 -29.5 -70.5t-70.5 -29.5h-500q-40 0 -70 30t-30 70v700q0 41 29.5 70.5t70.5 29.5h500zM615 700h-500v-700h500v700zM505 504h-280v88h280v-88zM505 200v-88h-280v88h280v0z" />
+    <glyph glyph-name="glyph76" unicode="&#xe731;" horiz-adv-x="730" 
+d="M615 800q42 0 71 -29t29 -71v-700q0 -41 -29.5 -70.5t-70.5 -29.5h-500q-40 0 -70 30t-30 70v700q0 41 29.5 70.5t70.5 29.5h500zM155 504h420v88h-420v-88zM575 200h-420v-88h420v88zM575 308v90h-418v-90h418v0z" />
+    <glyph glyph-name="glyph77" unicode="&#x1f4f0;" horiz-adv-x="830" 
+d="M715 800q42 0 71 -29t29 -71v-700q0 -41 -29.5 -70.5t-70.5 -29.5h-600q-40 0 -70 30t-30 70v700q0 41 29.5 70.5t70.5 29.5h600zM715 700h-600v-700h600v700zM465 200h-250v50h250v-50zM615 400h-200v50h200v-50zM415 600h200v-100h-200v100zM365 400h-150v200h150v-200
+zM315 300h-100v50h100v-50zM365 350h250v-50h-250v50zM615 100h-400v50h400v-50zM515 200v50h100v-50h-100v0z" />
+    <glyph glyph-name="glyph78" unicode="&#x1f4d6;" horiz-adv-x="930" 
+d="M355 238v-68l-200 80v68zM355 446v-68l-200 80v68zM465 -100q-1 0 -5 1t-5 1l-10 2l-398 160q-32 12 -32 46v640q0 30 22 42q22 16 46 6l382 -154l382 154q24 10 46 -6q22 -12 22 -42v-640q0 -34 -32 -46l-398 -160q-2 0 -5 -1q-4 -1 -5 -1t-5 -1t-5 -1zM415 4v560
+l-320 128v-560zM835 132v560l-320 -128v-560zM775 318v-68l-200 -80v68zM775 526v-68l-200 -80v68l200 80v0z" />
+    <glyph glyph-name="glyph79" unicode="&#x1f4d5;" horiz-adv-x="730" 
+d="M697 594q18 -8 18 -28v-562q0 -14 -12.5 -25t-27.5 -11q-46 0 -46 36v522q0 12 -12 18l-404 216q-31 10 -68 -10q-44 -20 -56 -44l408 -228q18 -8 18 -28v-550q0 -22 -18 -28q-5 -4 -16 -4q-15 0 -20 4q-13 9 -208.5 130.5t-205.5 127.5q-26 18 -26 34l-6 524q0 27 14 52
+q28 45 102 77t116 9l450 -232v0z" />
+    <glyph glyph-name="glyph80" unicode="&#x1f4c1;" horiz-adv-x="1031" 
+d="M969 500q29 0 38.5 -10.5t7.5 -37.5l-42 -452q-2 -27 -13.5 -38.5t-40.5 -11.5h-806q-51 0 -56 50l-42 452q-2 27 7.5 37.5t38.5 10.5h908zM935 610l10 -40h-846l14 132q4 19 20 33.5t36 14.5h164q52 0 86 -34l30 -30q31 -36 86 -36h340q20 0 38 -12t22 -28v0z" />
+    <glyph glyph-name="glyph81" unicode="&#xe738;" horiz-adv-x="1011" 
+d="M159 600q0 18 11.5 33t26.5 17h608q20 0 36 -15q14 -14 14 -35v-50h-696v50zM259 700q0 18 11.5 33t26.5 17h410q20 0 36 -15q14 -14 14 -35h-498zM955 550q33 -30 38 -46q6 -18 0 -54l-76 -450q-3 -18 -17.5 -32.5t-30.5 -17.5h-710q-52 0 -60 50q0 1 -39 225t-39 225
+q-10 22 -3 44t10 26q1 2 21 20l40 40v-80h836v80zM707 280v100h-70v-80h-260v80h-68v-100q0 -50 48 -50h300q18 0 33 10.5t15 25.5l2 14v0z" />
+    <glyph glyph-name="glyph82" unicode="&#x1f4e6;" horiz-adv-x="930" 
+d="M885 750q12 0 21 -9t9 -21v-120h-900v120q0 12 9 21t21 9h840zM135 -50q-29 0 -49.5 20.5t-20.5 49.5v530h800v-530q0 -29 -20.5 -49.5t-49.5 -20.5h-660zM315 450v-100h300v100h-300v0z" />
+    <glyph glyph-name="glyph83" unicode="&#xe73a;" horiz-adv-x="790" 
+d="M552 507q223 -223 223 -537h-118q0 265 -188 453q-187 187 -454 187v120q314 0 537 -223zM386 339q153 -153 153 -369h-118q0 166 -119 285t-287 119v118q218 0 371 -153zM129 196q47 0 80.5 -34t33.5 -80t-34 -79t-80 -33t-80 33t-34 79t33.5 80t80.5 34v0z" />
+    <glyph glyph-name="glyph84" unicode="&#x1f4de;" horiz-adv-x="830" 
+d="M476 290q162 162 118 206l-8 8q-31 31 -41 48q-11 19 -4 54q8 36 49 88q17 21 37 39q19 17 65 17q12 0 53 -31l47 -47q48 -48 -6 -194t-204 -294q-150 -150 -295 -205t-193 -7l-24 24l-24 23q-4 5 -18 24q-11 16 -12.5 27.5t1.5 33.5q2 19 15 35q16 20 51.5 47t56.5 37
+q27 13 54 2q26 -11 35 -18q12 -10 39 -37q44 -44 208 120v0z" />
+    <glyph glyph-name="glyph85" unicode="&#x2699;" horiz-adv-x="870" 
+d="M855 228q-12 -41 -34 -82q-70 18 -136 -44q-54 -58 -34 -136q-41 -20 -84 -36q-46 82 -132 82t-132 -82q-43 16 -84 36q20 81 -34 136q-53 54 -136 34q-15 29 -34 82q82 52 82 132q0 72 -82 124q19 53 34 82q74 -18 136 44q54 55 34 136q40 21 84 34q47 -80 132 -80
+t132 80q44 -13 84 -34q-20 -78 34 -136q66 -62 136 -44q22 -41 34 -82q-80 -50 -80 -124q0 -72 80 -122zM435 168q76 0 129 53t53 129q0 75 -53.5 129.5t-128.5 54.5t-128.5 -54.5t-53.5 -129.5q0 -76 53 -129t129 -53v0z" />
+    <glyph glyph-name="glyph86" unicode="&#x2692;" 
+d="M170 506q-14 -14 -14 -47q0 -11 -2 -11q-1 -1 -18 -16t-18 -16q-16 -13 -28 4l-70 76q-3 4 -4 8t-0.5 7t4 6.5t6 5.5t7.5 5.5t7 5.5q15 11 20 16q6 6 27 6q22 0 36.5 14.5t18.5 37.5q5 25 10 30q2 0 9 7q18 18 67 53q134 90 186 96q114 0 148 -2q13 0 -8 -8
+q-123 -54 -152 -76q-80 -56 -36 -114q35 -47 38 -48q8 -8 -2 -14q-8 -8 -38 -35t-38 -35q-14 -8 -18 -4q-42 48 -71 60t-67 -12zM866 4q17 -22 -2 -38l-48 -42q-22 -13 -38 4l-414 472q-8 8 0 20l72 62q13 8 20 -2zM994 516q-49 -88 -154 -62q-56 12 -100 -32l-82 -78
+l-68 78l68 70q40 40 37 118q-1 34 5 58q12 56 140 112q12 6 18 -3t2 -15q-10 -10 -46 -80q-13 -10 -12 -35q1 -24 40 -53q58 -40 96 22q2 4 24.5 38t23.5 36q4 10 13 9q10 -2 11 -17q16 -103 -16 -166zM152 -2l254 248l76 -86l-246 -242q-20 -20 -38 -4l-46 46q-23 18 0 38
+v0z" />
+    <glyph glyph-name="glyph87" unicode="&#xe73c;" horiz-adv-x="830" 
+d="M665 200q62 0 106 -43.5t44 -106.5q0 -62 -44.5 -106t-105.5 -44t-105.5 44t-44.5 106q0 3 1 13t1 13l-260 156q-43 -32 -92 -32q-61 0 -105.5 44t-44.5 106t44.5 106t105.5 44q55 0 92 -30l260 156q0 2 -1 12t-1 12q0 62 44.5 106t105.5 44q62 0 106 -43.5t44 -106.5
+q0 -62 -44.5 -106t-105.5 -44q-52 0 -90 32l-262 -156q2 -10 2 -26q0 -14 -2 -24l262 -156q36 30 90 30v0z" />
+    <glyph glyph-name="glyph88" unicode="&#xe73e;" 
+d="M355 350q0 67 47 113.5t113 46.5t113 -46.5t47 -113.5q0 -65 -47.5 -112.5t-112.5 -47.5t-112.5 47.5t-47.5 112.5zM175 350h-160v120h118q40 124 145 202t237 78q163 0 284 -116q16 -17 16 -43t-16 -43q-17 -16 -43 -16t-43 16q-78 82 -198 82q-102 0 -177.5 -64
+t-96.5 -156q-13 -60 -66 -60zM855 350h160v-120h-118q-39 -120 -141.5 -200t-240.5 -80q-164 0 -282 118q-18 18 -18 43t18 41q17 18 41 18q25 0 43 -18q82 -82 198 -82q101 0 177 64t97 156q12 60 66 60v0z" />
+    <glyph glyph-name="glyph89" unicode="&#xe73d;" horiz-adv-x="930" 
+d="M165 0q0 40 30 70t70 30q41 0 70.5 -29.5t29.5 -70.5q0 -42 -29 -71t-71 -29q-41 0 -70.5 29.5t-29.5 70.5zM665 0q0 40 30 70t70 30q41 0 70.5 -29.5t29.5 -70.5q0 -42 -29 -71t-71 -29q-41 0 -70.5 29.5t-29.5 70.5zM343 236q-18 -5 -26.5 -10.5t-7.5 -12.5
+q1 -13 44 -13h562v-76q0 -20 -20 -20h-654q-20 0 -20 20v76q-18 84 -54 250t-54 250h-98v80q0 20 20 20h156q20 0 20 -20v-86h704v-274q0 -22 -18 -26l-554 -158v0z" />
+    <glyph glyph-name="glyph90" unicode="&#x1f45c;" horiz-adv-x="889" 
+d="M874 608l-98 -648q-8 -30 -38 -30h-586q-28 0 -40 30q-94 620 -96 648q-4 34 22 60l55 43l55 43q17 16 56 16h480q39 0 56 -16q87 -66 110 -86q28 -26 24 -60zM444 232q58 0 99.5 35t61.5 88q35 93 43 155h-92q-38 -188 -112 -188t-112 188h-92q47 -278 204 -278zM92 600
+h704l-110 116h-484l-110 -116v0z" />
+    <glyph glyph-name="glyph91" unicode="&#x1f4c5;" horiz-adv-x="930" 
+d="M815 700q42 0 71 -29t29 -71v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-700q-40 0 -70 30t-30 70v600q0 41 29.5 70.5t70.5 29.5h46v-100h160v100h290v-100h160v100h44zM815 400h-700v-400h700v400zM275 630h-70v170h70v-170zM725 800v-170h-70v170h70v0z" />
+    <glyph glyph-name="glyph92" unicode="&#xe740;" horiz-adv-x="930" 
+d="M815 800q42 0 71 -29t29 -71v-700q0 -41 -29.5 -70.5t-70.5 -29.5h-450q-40 0 -69 30t-29 70v100h98v-100h450v700h-450v-150h-98v150q0 41 29 70.5t69 29.5h450zM465 130v120h-450v150h450v120l200 -194l-200 -196v0z" />
+    <glyph glyph-name="glyph93" unicode="&#xe741;" horiz-adv-x="930" 
+d="M515 800q42 0 71 -29t29 -71v-150h-98v150h-402v-700h402v100h98v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-400q-40 0 -70 30t-30 70v700q0 41 29.5 70.5t70.5 29.5h400zM915 326l-198 -196v120h-450v150h450v120l198 -194v0z" />
+    <glyph glyph-name="glyph94" unicode="&#x1f3a4;" horiz-adv-x="670" 
+d="M655 468v-138q0 -92 -69 -164t-201 -84v-132h130q20 0 20 -20v-60q0 -20 -20 -20h-360q-20 0 -20 20v60q0 20 20 20h130v132q-132 12 -201 84t-69 164v138q0 20 20 20h30q20 0 20 -20v-138q0 -66 59 -123q58 -57 191 -57t191 57q59 57 59 123v138q0 20 20 20h30
+q20 0 20 -20zM220 275q-35 26 -35 55v158h300v-158q0 -29 -35 -55q-34 -25 -115 -25t-115 25zM485 770v-212h-300v212q0 29 35 55q34 25 115 25t115 -25q35 -26 35 -55v0z" />
+    <glyph glyph-name="glyph95" unicode="&#x1f507;" horiz-adv-x="914" 
+d="M67 -90q-20 0 -36 15t-16 35q0 23 16 36l782 782q34 31 70 0q16 -16 16 -36t-16 -36l-782 -782q-19 -14 -34 -14zM717 442q74 -92 101 -172t-7 -116q-24 -24 -75 -57q-53 -34 -131 -71q-166 -79 -326 -22l278 276q41 -30 88 -54q42 -22 67 -25q23 -3 33 1q6 11 2 34
+q-5 28 -26 68q-24 47 -54 88zM391 454l-270 -270q-40 130 28 283q67 150 132 215q35 32 105 11q72 -21 159 -85l-52 -50q-60 39 -105 53q-47 15 -57 5q-4 -6 -2 -28q1 -18 19 -58q16 -36 43 -76v0z" />
+    <glyph glyph-name="glyph96" unicode="&#x1f50a;" horiz-adv-x="940" 
+d="M340 583q106 -47 217 -157t157 -217q47 -107 5 -149q-29 -29 -92 -67q-65 -39 -156 -78q-93 -39 -194 -29q-103 11 -176 84t-84 176q-10 101 29 194q39 92 78 156q38 63 67 92q42 42 149 -5zM652 157q-10 37 -49 101t-96 118q-54 57 -118 96t-101 49q-39 10 -49 3
+q-7 -10 3 -49q10 -37 49 -101q36 -59 94 -120q61 -58 120 -94q64 -39 101 -49q39 -10 49 -3q7 10 -3 49zM661 502q-18 0 -34 16t-16 35q0 22 16 35l94 96q36 32 72 0q31 -36 0 -72l-96 -94q-16 -16 -36 -16zM507 620q-29 0 -44 23.5t0 50.5l54 96q26 44 68 20
+q17 -10 22.5 -28.5t-4.5 -39.5l-54 -96q-14 -26 -42 -26zM919 476q10 -22 3 -40.5t-23 -27.5l-96 -54q-18 -8 -24 -8q-23 0 -39.5 19t-8.5 45q6 20 24 30l96 54q21 10 39.5 4.5t28.5 -22.5v0z" />
+    <glyph glyph-name="glyph97" unicode="&#xe742;" horiz-adv-x="926" 
+d="M911 180q0 -33 -24 -56.5t-56 -23.5h-780q-9 0 -15 0.5t-13 2.5t-8 6t2 11q5 9 24 20l802 452q29 18 48.5 6.5t19.5 -44.5v-374v0z" />
+    <glyph glyph-name="glyph98" unicode="&#x1f554;" horiz-adv-x="950" 
+d="M800 675q135 -135 135 -325t-135 -325t-325 -135t-325 135t-135 325t135 325t325 135t325 -135zM730 96q105 106 105 254q0 150 -105 255t-255 105q-147 0 -254 -105q-106 -105 -106 -255q0 -148 106 -254t254 -106q150 0 255 106zM511 610v-244l150 -150l-50 -50
+l-170 170v274h70v0z" />
+    <glyph glyph-name="glyph99" unicode="&#x23f3;" horiz-adv-x="590" 
+d="M527 526q-51 -56 -97 -99q-49 -46 -49 -77q0 -30 49 -76t97 -97t48 -97v-118q0 -34 -86 -73q-85 -39 -194 -39t-194 39q-86 39 -86 73v118q0 46 48 97t97 97t49 76q0 31 -49 77q-46 43 -97 99q-48 52 -48 96v118q0 32 87 71t193 39t193 -39t87 -71v-118q0 -44 -48 -96z
+M75 720q-4 -7 4 -14q91 -52 216 -52q131 0 220 50q14 11 -16 30q-96 54 -202 54q-120 0 -204 -54zM321 350q0 38 22 66q20 26 51 56q17 16 29 28q92 92 92 122l2 50q-101 -54 -222 -54t-222 54l4 -50q0 -32 90 -122q3 -4 22.5 -22t22.5 -21l19 -19q2 -3 5.5 -7t11 -13.5
+t11 -15t0.5 -5.5q-6 1 2 -12q17 -29 15 -33q-1 -2 -5 -2q0 -24 -7 -37q-18 -32 -19 -33l-12 -15l-31 -31l-35 -32q-90 -90 -90 -122v-66q4 2 66 23q58 19 92 43t34 58q0 30 26 30t26 -30q0 -34 33 -58q32 -23 94 -43q63 -20 67 -23v66q0 30 -92 122q-5 5 -28 27.5t-33 32.5
+q-17 17 -30 42q-11 19 -11 46v0z" />
+    <glyph glyph-name="glyph100" unicode="&#x1f4a1;" horiz-adv-x="730" 
+d="M224 -6h282v-104q-70 -42 -142 -40q-70 -1 -140 40v104zM230 54q0 69 -34.5 136.5t-79.5 116.5q-45 47 -75.5 114t-24.5 137q7 119 94 206q86 86 254 86q169 0 255 -86q84 -84 95 -206q7 -108 -68 -209q-10 -13 -32.5 -42t-34 -45t-28 -42.5t-27.5 -51.5
+q-24 -54 -24 -114h-270zM122 550q-3 -2 0 -20.5t2 -19.5q-1 -2 5 -19t6 -18t2.5 -7t6 -12t6.5 -12l4 -6q1 -2 13.5 -19t13.5 -19t15 -22t16 -22q88 -120 112 -212h82q24 94 112 212q1 1 13 18l24 34t13 19q29 46 33 62q9 37 7 63q-16 196 -244 196q-226 0 -242 -196v0z" />
+    <glyph glyph-name="glyph101" unicode="&#x1f505;" horiz-adv-x="730" 
+d="M365 510q67 0 113.5 -47t46.5 -113q0 -68 -46.5 -114t-113.5 -46q-66 0 -113 46.5t-47 113.5q0 65 47.5 112.5t112.5 47.5zM365 246q43 0 72.5 30t29.5 74q0 43 -29.5 72.5t-72.5 29.5q-42 0 -72 -30t-30 -72q0 -43 29.5 -73.5t72.5 -30.5zM65 390q19 0 34.5 -11.5
+t15.5 -28.5q0 -40 -50 -40t-50 40q0 17 15.5 28.5t34.5 11.5zM603 530q-13 -13 -31 -16t-31 10q-12 15 -9.5 33t15.5 31q36 34 64 6t-8 -64zM665 390q19 0 34.5 -11.5t15.5 -28.5q0 -40 -50 -40q-48 0 -48 40q0 17 14.5 28.5t33.5 11.5zM365 100q17 0 28.5 -15.5t11.5 -34.5
+t-11.5 -34.5t-28.5 -15.5t-28.5 15.5t-11.5 34.5t11.5 34.5t28.5 15.5zM191 170q28 -28 -8 -64q-12 -12 -30 -15.5t-32 7.5q-30 28 6 64t64 8zM181 584q12 -12 15.5 -30t-7.5 -32q-30 -28 -64 6q-36 36 -8 64t64 -8zM543 172q28 28 64 -8q13 -13 16 -31t-10 -31
+q-30 -28 -64 6q-34 36 -6 64zM365 600q-17 0 -28.5 15.5t-11.5 34.5t11.5 34.5t28.5 15.5t28.5 -15.5t11.5 -34.5t-11.5 -34.5t-28.5 -15.5v0z" />
+    <glyph glyph-name="glyph102" unicode="&#x1f506;" 
+d="M965 390q19 0 34.5 -11.5t15.5 -28.5q0 -40 -50 -40h-48q-50 0 -50 40q0 17 15.5 28.5t34.5 11.5h48zM710 544q81 -80 81 -194q0 -116 -81 -196q-82 -80 -195 -80q-114 0 -194 80t-80 196q0 114 80 194t194 80q113 0 195 -80zM656 208q59 59 59 142q0 82 -59 141t-141 59
+t-141 -59t-59 -141q0 -83 59 -142q58 -58 141 -58t141 58zM115 390q19 0 34.5 -11.5t15.5 -28.5q0 -40 -50 -40h-50q-50 0 -50 40q0 17 15.5 28.5t34.5 11.5h50zM515 700q-17 0 -28.5 15.5t-11.5 34.5v50q0 19 11.5 34.5t28.5 15.5t28.5 -15.5t11.5 -34.5v-50
+q0 -19 -11.5 -34.5t-28.5 -15.5zM515 0q17 0 28.5 -15.5t11.5 -34.5v-50q0 -19 -11.5 -34.5t-28.5 -15.5t-28.5 15.5t-11.5 34.5v50q0 19 11.5 34.5t28.5 15.5zM849 626q-34 -34 -64 -8q-28 28 8 64q6 8 34 36q36 34 64 6t-8 -64zM183 72q12 14 30 17.5t32 -9.5
+q12 -15 9.5 -33t-15.5 -31l-36 -36q-13 -13 -31 -16t-31 10q-30 28 6 64q8 6 36 34zM239 682q36 -36 6 -64q-14 -11 -32 -7.5t-30 15.5q-28 28 -36 34q-13 13 -15.5 31t9.5 33q13 13 31 10t31 -16zM793 16q-36 36 -8 64t64 -8l34 -34q36 -36 8 -64t-64 6q-28 28 -34 36v0z
+" />
+    <glyph glyph-name="glyph103" unicode="&#x25d1;" 
+d="M965 390q19 0 34.5 -11.5t15.5 -28.5q0 -40 -50 -40h-48q-50 0 -50 40q0 17 15.5 28.5t34.5 11.5h48zM710 544q81 -80 81 -194q0 -116 -81 -196q-82 -80 -195 -80q-114 0 -194 80t-80 196q0 114 80 194t194 80q113 0 195 -80zM521 550q-85 0 -146 -59q-60 -59 -60 -141
+q0 -84 60.5 -142t145.5 -58v400zM115 390q19 0 34.5 -11.5t15.5 -28.5q0 -40 -50 -40h-50q-50 0 -50 40q0 17 15.5 28.5t34.5 11.5h50zM515 700q-17 0 -28.5 15.5t-11.5 34.5v50q0 19 11.5 34.5t28.5 15.5t28.5 -15.5t11.5 -34.5v-50q0 -19 -11.5 -34.5t-28.5 -15.5zM515 0
+q17 0 28.5 -15.5t11.5 -34.5v-50q0 -19 -11.5 -34.5t-28.5 -15.5t-28.5 15.5t-11.5 34.5v50q0 19 11.5 34.5t28.5 15.5zM849 626q-34 -34 -64 -8q-28 28 8 64q6 8 34 36q36 34 64 6t-8 -64zM183 72q12 14 30 17.5t32 -9.5q12 -15 9.5 -33t-15.5 -31l-36 -36q-13 -13 -31 -16
+t-31 10q-30 28 6 64q8 6 36 34zM239 682q36 -36 6 -64q-14 -11 -32 -7.5t-30 15.5q-28 28 -36 34q-13 13 -15.5 31t9.5 33q13 13 31 10t31 -16zM793 16q-36 36 -8 64t64 -8l34 -34q36 -36 8 -64t-64 6q-28 28 -34 36v0z" />
+    <glyph glyph-name="glyph104" unicode="&#x1f6ab;" horiz-adv-x="990" 
+d="M835 690q140 -140 140 -340q0 -197 -140 -339q-139 -141 -340 -141q-198 0 -339 141t-141 339q0 200 141 340q142 140 339 140q200 0 340 -140zM753 610zM213 120l514 514q-100 82 -232 82q-151 0 -258 -107q-106 -106 -106 -259q0 -133 82 -230zM237 92zM495 -14
+q152 0 259 107t107 257q0 131 -82 232l-514 -514q97 -82 230 -82v0z" />
+    <glyph glyph-name="glyph105" unicode="&#xe744;" horiz-adv-x="822" 
+d="M491 746h316v-316l-100 124l-146 -152l-100 100l152 146zM261 302l100 -100l-152 -146l122 -100h-316v316l100 -122l146 152v0z" />
+    <glyph glyph-name="glyph106" unicode="&#xe746;" horiz-adv-x="930" 
+d="M171 146l-106 100h296v-296l-100 106l-146 -156l-100 100zM915 700l-154 -144l104 -100h-294v294l100 -104l144 154l100 -100v0z" />
+    <glyph glyph-name="glyph107" unicode="&#xe74c;" horiz-adv-x="830" 
+d="M715 750q42 0 71 -29t29 -71v-400q0 -41 -29.5 -70.5t-70.5 -29.5h-400q-40 0 -70 30t-30 70v402q0 40 29.5 69t70.5 29h400zM715 650h-400v-400h400v400zM115 350v-300h300v-100h-300q-40 0 -70 30t-30 70v300h100v0z" />
+    <glyph glyph-name="glyph108" unicode="&#xe74d;" 
+d="M915 800q41 0 70.5 -29.5t29.5 -70.5v-600q0 -42 -29 -71t-71 -29h-198v98h200v462h-802v-462h200v-98h-200q-41 0 -70.5 29.5t-29.5 70.5v600q0 40 30 70t70 30h800zM107 670q0 -16 11 -27t27 -11q38 0 38 38q0 16 -11 26t-27 10q-15 0 -26.5 -10.5t-11.5 -25.5z
+M207 670q0 -16 11 -27t27 -11q38 0 38 38q0 16 -11 26t-27 10q-15 0 -26.5 -10.5t-11.5 -25.5zM917 700h-602v-62h602v62zM513 440l242 -240h-150v-300h-184v300h-150l242 240v0z" />
+    <glyph glyph-name="glyph109" unicode="&#xe74e;" 
+d="M915 750q41 0 70.5 -29.5t29.5 -70.5v-600q0 -42 -29 -71t-71 -29h-800q-41 0 -70.5 29.5t-29.5 70.5v600q0 40 30 70t70 30h800zM245 656q-15 0 -26.5 -10.5t-11.5 -25.5q0 -16 11 -27t27 -11q38 0 38 38q0 16 -11 26t-27 10zM107 620q0 -16 11 -27t27 -11q38 0 38 38
+q0 16 -11 26t-27 10q-15 0 -26.5 -10.5t-11.5 -25.5zM917 510h-802v-460h802v460zM917 590v60h-602v-60h602v0z" />
+    <glyph glyph-name="glyph110" unicode="&#xe74f;" horiz-adv-x="490" 
+d="M245 850l230 -364h-460zM245 -150l-230 366h460l-230 -366v0z" />
+    <glyph glyph-name="glyph111" unicode="&#xe758;" horiz-adv-x="950" 
+d="M800 675q135 -135 135 -325t-135 -325t-325 -135t-325 135t-135 325t135 325t325 135t325 -135zM729 96q106 106 106 254q0 150 -106 255q-107 105 -254 105t-254 -105q-106 -105 -106 -255q0 -148 106 -254t254 -106t254 106zM565 544v-206h112l-202 -190l-202 190h112
+v206h180v0z" />
+    <glyph glyph-name="glyph112" unicode="&#xe759;" horiz-adv-x="950" 
+d="M800 25q-135 -135 -325 -135t-325 135t-135 325q0 192 135 326q136 134 325 134t325 -134q135 -134 135 -326q0 -190 -135 -325zM221 96q106 -106 254 -106t254 106t106 254q0 150 -106 255q-107 105 -254 105t-254 -105q-106 -105 -106 -255q0 -148 106 -254zM667 260
+h-204v-112l-190 202l190 204v-114h204v-180v0z" />
+    <glyph glyph-name="glyph113" unicode="&#xe75a;" horiz-adv-x="950" 
+d="M150 675q135 135 325 135t325 -135t135 -325t-135 -325t-325 -135t-325 135t-135 325t135 325zM730 605q-105 105 -255 105q-147 0 -254 -105q-106 -105 -106 -255q0 -148 106 -254t254 -106q150 0 255 106t105 254q0 150 -105 255zM283 440h204v114l190 -204l-190 -202
+v112h-204v180v0z" />
+    <glyph glyph-name="glyph114" unicode="&#xe75b;" horiz-adv-x="950" 
+d="M150 25q-135 135 -135 325q0 192 135 326q136 134 325 134t325 -134q135 -134 135 -326q0 -190 -135 -325t-325 -135t-325 135zM221 605q-106 -105 -106 -255q0 -148 106 -254t254 -106q150 0 255 106t105 254q0 150 -105 255t-255 105q-147 0 -254 -105zM385 158v204
+h-112l202 192l202 -192h-112v-204h-180v0z" />
+    <glyph glyph-name="glyph115" unicode="&#xe75c;" horiz-adv-x="610" 
+d="M579 422l-234 -224q-18 -18 -40 -18t-40 18l-234 224q-16 16 -16 41t16 41q37 38 78 0l196 -188l196 188q41 38 78 0q16 -16 16 -41t-16 -41v0z" />
+    <glyph glyph-name="glyph116" unicode="&#xe75d;" horiz-adv-x="371" 
+d="M257 626q13 16 39 16q25 0 41 -16q38 -36 0 -80l-186 -196l186 -194q38 -44 0 -80q-16 -16 -40 -16t-40 16l-226 236q-16 16 -16 38q0 24 16 40q225 235 226 236v0z" />
+    <glyph glyph-name="glyph117" unicode="&#xe75e;" horiz-adv-x="370" 
+d="M113 626l226 -236q16 -16 16 -40q0 -22 -16 -38l-226 -236q-16 -16 -40 -16t-40 16q-36 36 0 80l186 194l-186 196q-36 44 0 80q16 16 41 16q26 0 39 -16v0z" />
+    <glyph glyph-name="glyph118" unicode="&#xe75f;" horiz-adv-x="610" 
+d="M579 280q16 -16 16 -41t-16 -41q-37 -38 -78 0l-196 188l-196 -188q-41 -38 -78 0q-16 16 -16 41t16 41l234 224q16 16 40 16t40 -16l234 -224v0z" />
+    <glyph glyph-name="glyph119" unicode="&#xe760;" horiz-adv-x="496" 
+d="M420 470q22 26 48 0q26 -22 0 -48l-196 -192q-22 -22 -48 0l-196 192q-26 26 0 48q24 24 50 0l170 -156l172 156v0z" />
+    <glyph glyph-name="glyph120" unicode="&#xe761;" horiz-adv-x="295" 
+d="M267 180q25 -26 0 -48q-25 -26 -48 0l-192 194q-24 24 0 50l192 194q23 26 48 0q25 -22 0 -48l-156 -172l156 -170v0z" />
+    <glyph glyph-name="glyph121" unicode="&#xe762;" horiz-adv-x="295" 
+d="M28 180l158 170l-158 172q-26 26 0 48q26 26 48 0l192 -194q24 -26 0 -50l-192 -194q-22 -26 -48 0q-26 22 0 48v0z" />
+    <glyph glyph-name="glyph122" unicode="&#xe763;" horiz-adv-x="494" 
+d="M77 230q-26 -23 -50 0q-24 24 0 50l196 190q25 26 48 0l196 -190q24 -26 0 -50q-24 -23 -50 0l-170 158l-170 -158v0z" />
+    <glyph glyph-name="glyph123" unicode="&#xe764;" horiz-adv-x="896" 
+d="M78 570l370 -356l372 356q22 26 48 0q26 -22 0 -48l-396 -392q-22 -22 -48 0l-396 392q-26 26 0 48q24 24 50 0v0z" />
+    <glyph glyph-name="glyph124" unicode="&#xe765;" horiz-adv-x="495" 
+d="M467 -20q25 -26 0 -48q-25 -26 -48 0l-392 394q-24 24 0 50l392 394q23 26 48 0q25 -22 0 -48l-358 -372l358 -370v0z" />
+    <glyph glyph-name="glyph125" unicode="&#xe766;" horiz-adv-x="495" 
+d="M28 -20l358 370l-358 372q-26 26 0 48q26 26 48 0l392 -394q24 -26 0 -50l-392 -394q-22 -26 -48 0q-26 22 0 48v0z" />
+    <glyph glyph-name="glyph126" unicode="&#xe767;" horiz-adv-x="894" 
+d="M819 130l-372 358l-370 -358q-26 -23 -50 0q-24 24 0 50l396 390q25 26 48 0l396 -390q24 -26 0 -50q-25 -22 -48 0v0z" />
+    <glyph glyph-name="glyph127" unicode="&#x2b07;" horiz-adv-x="690" 
+d="M675 366l-330 -380l-330 380h192v350h276v-350h192v0z" />
+    <glyph glyph-name="glyph128" unicode="&#x2b05;" horiz-adv-x="760" 
+d="M393 20l-378 330l378 330v-190h352v-278h-352v-192v0z" />
+    <glyph glyph-name="glyph129" unicode="&#x27a1;" horiz-adv-x="760" 
+d="M365 680l380 -330l-380 -330v192h-350v278h350v190v0z" />
+    <glyph glyph-name="glyph130" unicode="&#x2b06;" horiz-adv-x="690" 
+d="M675 336h-192v-350h-276v350h-192l330 380l330 -380v0z" />
+    <glyph glyph-name="glyph131" unicode="&#x25be;" horiz-adv-x="490" 
+d="M475 550l-230 -400l-230 400h460v0z" />
+    <glyph glyph-name="glyph132" unicode="&#x25c2;" horiz-adv-x="430" 
+d="M415 580v-460l-400 230l400 230v0z" />
+    <glyph glyph-name="glyph133" unicode="&#x25b8;" horiz-adv-x="430" 
+d="M15 580l400 -230l-400 -230v460v0z" />
+    <glyph glyph-name="glyph134" unicode="&#x25b4;" horiz-adv-x="490" 
+d="M15 150l230 400l230 -400h-460v0z" />
+    <glyph glyph-name="glyph135" unicode="&#xe4b0;" horiz-adv-x="790" 
+d="M775 366l-380 -380l-380 380h192v350h376v-350h192v0z" />
+    <glyph glyph-name="glyph136" unicode="&#xe4ad;" horiz-adv-x="760" 
+d="M393 730v-190h352v-378h-352v-192l-378 380l378 380v0z" />
+    <glyph glyph-name="glyph137" unicode="&#xe4ae;" horiz-adv-x="760" 
+d="M365 730l380 -380l-380 -380v192h-350v378h350v190v0z" />
+    <glyph glyph-name="glyph138" unicode="&#xe4af;" horiz-adv-x="790" 
+d="M775 336h-192v-350h-376v350h-192l380 380l380 -380v0z" />
+    <glyph glyph-name="glyph139" unicode="&#x2193;" horiz-adv-x="530" 
+d="M515 100l-250 -240l-250 240h162v740h176v-740h162v0z" />
+    <glyph glyph-name="glyph140" unicode="&#x2190;" horiz-adv-x="1010" 
+d="M255 100l-240 250l240 250v-160h740v-178h-740v-162v0z" />
+    <glyph glyph-name="glyph141" unicode="&#x2192;" horiz-adv-x="1010" 
+d="M757 100v162h-742v178h742v160l238 -250l-238 -250v0z" />
+    <glyph glyph-name="glyph142" unicode="&#x2191;" horiz-adv-x="530" 
+d="M515 602h-162v-742h-176v742h-162l250 238l250 -238v0z" />
+    <glyph glyph-name="glyph143" unicode="&#x27f2;" horiz-adv-x="970" 
+d="M547 736q171 0 289 -120q119 -121 119 -290t-119 -290q-118 -120 -289 -120q-143 0 -252 88l70 74q84 -60 182 -60q126 0 216 90t90 218t-90 218t-216 90q-124 0 -214 -87q-91 -87 -92 -211h142l-184 -204l-184 204h124q1 166 122 283q120 117 286 117v0z" />
+    <glyph glyph-name="glyph144" unicode="&#x27f3;" horiz-adv-x="970" 
+d="M423 760q168 0 287 -116q118 -116 123 -282h122l-184 -206l-184 206h144q-5 125 -94 210q-91 86 -214 86q-126 0 -216 -90t-90 -218q0 -126 90 -216t216 -90q104 0 182 60l70 -76q-109 -88 -252 -88q-168 0 -288 120t-120 290t120 290t288 120v0z" />
+    <glyph glyph-name="glyph145" unicode="&#x1f504;" horiz-adv-x="850" 
+d="M317 256v-292l-276 16l88 86q-116 122 -114 290q1 168 120 288q99 99 240 116l4 -102q-101 -16 -172 -88q-89 -88 -90 -213q-2 -125 84 -217zM533 738l276 -16l-88 -86q116 -122 114 -290q-1 -168 -120 -288q-97 -99 -240 -118l-2 104q99 17 170 88q89 88 90 213
+q2 125 -84 217l-114 -116l-2 292v0z" />
+    <glyph glyph-name="glyph146" unicode="&#x21b3;" horiz-adv-x="774" 
+d="M115 200q-41 0 -70.5 29.5t-29.5 70.5v350h140v-310h364v150l240 -220l-240 -220v150h-404v0z" />
+    <glyph glyph-name="glyph147" unicode="&#x21b0;" horiz-adv-x="880" 
+d="M215 350v-90l-200 160l200 170v-100h550q41 0 70.5 -29.5t29.5 -70.5v-280h-140v240h-510v0z" />
+    <glyph glyph-name="glyph148" unicode="&#x1f500;" 
+d="M769 516q-51 0 -102.5 -30.5t-82.5 -67.5q-16 -19 -79 -99t-79 -99q-29 -34 -78 -77q-99 -87 -229 -87h-104v140h104q51 0 103.5 31t83.5 67q18 21 90.5 113.5t93.5 116.5q40 45 116 88q77 44 163 44h36v120l210 -180l-210 -180v100h-36zM119 506h-104v140h104
+q140 0 254 -108q-4 -5 -31.5 -38.5t-32.5 -39.5q-9 -14 -24 -32q-73 78 -166 78zM805 186v100l210 -180l-210 -180v120h-36q-139 0 -260 116q57 72 72 92q0 2 7 11l7 9q84 -88 174 -88h36v0z" />
+    <glyph glyph-name="glyph149" unicode="&#x1f501;" horiz-adv-x="930" 
+d="M815 540q42 0 71 -29t29 -71v-290q0 -41 -29.5 -70.5t-70.5 -29.5h-700q-40 0 -70 30t-30 70v290q0 41 29.5 70.5t70.5 29.5h250v110l200 -180l-200 -180v110h-210v-210h620v210h-150v140h190v0z" />
+    <glyph glyph-name="glyph150" unicode="&#x21c6;" 
+d="M715 452h-500v-90l-200 160l200 170v-100h500v-140zM1015 172l-200 -160v90h-500v140h500v100l200 -170v0z" />
+    <glyph glyph-name="glyph151" unicode="&#x25b6;" horiz-adv-x="530" 
+d="M501 376q14 -11 14 -26q0 -13 -14 -24l-428 -266q-25 -16 -41.5 -5.5t-16.5 39.5v514q0 29 16.5 39.5t41.5 -5.5l428 -266v0z" />
+    <glyph glyph-name="glyph152" unicode="&#x25a0;" horiz-adv-x="630" 
+d="M541 650q74 0 74 -64v-470q0 -66 -74 -66h-450q-76 0 -76 66v470q0 36 18 50t58 14h450v0z" />
+    <glyph glyph-name="glyph153" unicode="&#x2389;" horiz-adv-x="560" 
+d="M545 636v-570q0 -66 -90 -66t-90 66v570q0 64 90 64t90 -64zM105 700q90 0 90 -64v-570q0 -66 -90 -66t-90 66v570q0 64 90 64v0z" />
+    <glyph glyph-name="glyph154" unicode="&#x26ab;" horiz-adv-x="730" 
+d="M365 700q146 0 248 -102t102 -248q0 -144 -102 -247t-248 -103t-248 103t-102 247q0 146 102 248t248 102v0z" />
+    <glyph glyph-name="glyph155" unicode="&#x23ed;" horiz-adv-x="630" 
+d="M427 374q14 -11 14 -24q0 -11 -14 -22l-362 -228q-23 -14 -36.5 -4.5t-13.5 34.5v442q0 25 13.5 34.5t36.5 -4.5zM541 642q74 0 74 -58v-466q0 -58 -74 -58q-76 0 -76 58v466q0 58 76 58v0z" />
+    <glyph glyph-name="glyph156" unicode="&#x23ee;" horiz-adv-x="630" 
+d="M203 374l364 228q22 14 35 4.5t13 -34.5v-442q0 -25 -13 -34.5t-35 4.5l-364 228q-14 11 -14 22q0 13 14 24zM15 584q0 58 76 58q74 0 74 -58v-466q0 -58 -74 -58q-76 0 -76 58v466v0z" />
+    <glyph glyph-name="glyph157" unicode="&#x23e9;" horiz-adv-x="910" 
+d="M881 374q14 -11 14 -24q0 -14 -14 -22l-372 -248q-23 -14 -37.5 -5.5t-14.5 35.5v482q0 27 14.5 35.5t37.5 -5.5zM427 374q14 -11 14 -24q0 -14 -14 -22l-360 -248q-22 -15 -37 -5.5t-15 35.5v482q0 26 15 35.5t37 -5.5l360 -248v0z" />
+    <glyph glyph-name="glyph158" unicode="&#x23ea;" horiz-adv-x="910" 
+d="M29 374l374 248q22 15 37 5.5t15 -35.5v-482q0 -26 -15 -35.5t-37 5.5l-374 248q-14 8 -14 22q0 13 14 24zM469 350q0 13 14 24l360 248q22 15 37 5.5t15 -35.5v-482q0 -26 -15 -35.5t-37 5.5l-360 248q-14 8 -14 22v0z" />
+    <glyph glyph-name="glyph159" unicode="&#xe768;" 
+d="M915 600q41 0 70.5 -29.5t29.5 -70.5v-300q0 -42 -29 -71t-71 -29h-800q-41 0 -70.5 29.5t-29.5 70.5v300q0 40 30 70t70 30h800zM915 200v300h-800v-300h800v0z" />
+    <glyph glyph-name="glyph160" unicode="&#xe769;" 
+d="M915 600q41 0 70.5 -29.5t29.5 -70.5v-300q0 -42 -29 -71t-71 -29h-800q-41 0 -70.5 29.5t-29.5 70.5v300q0 40 30 70t70 30h800zM915 500h-800v-300h800v300zM165 250v198h200v-198h-200v0z" />
+    <glyph glyph-name="glyph161" unicode="&#xe76a;" 
+d="M915 600q41 0 70.5 -29.5t29.5 -70.5v-300q0 -42 -29 -71t-71 -29h-800q-41 0 -70.5 29.5t-29.5 70.5v300q0 40 30 70t70 30h800zM915 500h-800v-300h800v300zM165 448h200v-198h-200v198zM415 250v198h200v-198h-200v0z" />
+    <glyph glyph-name="glyph162" unicode="&#xe76b;" 
+d="M915 600q41 0 70.5 -29.5t29.5 -70.5v-300q0 -42 -29 -71t-71 -29h-800q-41 0 -70.5 29.5t-29.5 70.5v300q0 40 30 70t70 30h800zM915 500h-800v-300h800v300zM165 448h200v-198h-200v198zM415 448h200v-198h-200v198zM665 448h200v-198h-200v198v0z" />
+    <glyph glyph-name="glyph163" unicode="&#x1f3af;" horiz-adv-x="890" 
+d="M749 654q126 -126 126 -304t-126 -304t-304 -126t-304 126t-126 304t126 304t304 126t304 -126zM481 2q123 13 212 102q88 88 100 212h-192v70h192q-12 124 -100 212q-89 89 -212 102v-194h-70v194q-125 -14 -213 -102q-89 -89 -101 -212h194v-70h-194q12 -123 101 -212
+q88 -88 213 -102v194h70v-194v0z" />
+    <glyph glyph-name="glyph164" unicode="&#x1f3a8;" horiz-adv-x="1010" 
+d="M973 512q29 -62 20 -104q-8 -39 -28.5 -46.5t-60.5 8.5q-95 35 -160 -36q-30 -46 -21 -75q10 -31 34 -65q25 -35 23 -50q-2 -26 -36 -63q-33 -36 -126 -74q-90 -37 -216 -37q-185 0 -291 101t-95 245q7 117 104 235q95 116 216 151q289 84 536 -80q72 -48 101 -110z
+M554 156q31 0 52.5 22.5t21.5 53.5t-21.5 52.5t-52.5 21.5q-32 0 -54 -21.5t-22 -52.5q0 -32 22 -54t54 -22v0z" />
+    <glyph glyph-name="glyph165" unicode="&#xe005;" horiz-adv-x="730" 
+d="M115 200q19 0 34.5 -15t15.5 -35t-15.5 -35t-34.5 -15h-50q-19 0 -34.5 15t-15.5 35t14.5 35t35.5 15h50zM115 400q19 0 34.5 -15t15.5 -35t-15.5 -35t-34.5 -15h-50q-19 0 -34.5 15t-15.5 35t14.5 35t35.5 15h50zM115 600q19 0 34.5 -15t15.5 -35t-15.5 -35t-34.5 -15
+h-50q-19 0 -34.5 15t-15.5 35t14.5 35t35.5 15h50zM315 500q-19 0 -34.5 15t-15.5 35t15.5 35t34.5 15h350q21 0 35.5 -15t14.5 -35t-15.5 -35t-34.5 -15h-350zM665 400q21 0 35.5 -15t14.5 -35t-15.5 -35t-34.5 -15h-350q-19 0 -34.5 15t-15.5 35t15.5 35t34.5 15h350z
+M665 200q21 0 35.5 -15t14.5 -35t-15.5 -35t-34.5 -15h-350q-19 0 -34.5 15t-15.5 35t15.5 35t34.5 15h350v0z" />
+    <glyph glyph-name="glyph166" unicode="&#xe003;" 
+d="M365 400q21 0 35.5 -15t14.5 -35t-15.5 -35t-34.5 -15h-300q-19 0 -34.5 15t-15.5 35t14.5 35t35.5 15h300zM365 200q21 0 35.5 -15t14.5 -35t-15.5 -35t-34.5 -15h-300q-19 0 -34.5 15t-15.5 35t14.5 35t35.5 15h300zM1015 350q0 -50 -30 -50h-170v-170q0 -30 -50 -30
+t-50 30v170h-164q-30 0 -30 50t30 50h164v170q0 30 50 30t50 -30v-170h170q30 0 30 -50zM365 600q21 0 35.5 -15t14.5 -35t-15.5 -35t-34.5 -15h-300q-19 0 -34.5 15t-15.5 35t14.5 35t35.5 15h300v0z" />
+    <glyph glyph-name="glyph167" unicode="&#x1f4f6;" horiz-adv-x="1010" 
+d="M505 150q41 0 70.5 -29.5t29.5 -70.5q0 -42 -29 -71t-71 -29q-40 0 -69 29.5t-29 70.5q0 40 29 70t69 30zM295 262q88 88 210 88t210 -88l-70 -72q-58 58 -140 58t-140 -58zM155 402q145 148 351 148q205 0 349 -148l-70 -70q-115 118 -279 118q-163 0 -281 -118zM15 544
+q204 206 491 206q286 0 489 -206l-70 -70q-174 176 -420 176t-420 -176l-70 70v0z" />
+    <glyph glyph-name="glyph168" unicode="&#x1f3c6;" horiz-adv-x="930" 
+d="M879 718q14 0 25 -10t11 -24q0 -155 -84 -245q-46 -49 -74 -72t-88 -61q-78 -52 -111 -87t-33 -85v-66q68 -7 116 -32q46 -24 46 -56q0 -36 -65 -63q-64 -27 -157 -27q-90 0 -156 27t-66 63q0 32 46 56q48 25 118 32v66q0 50 -33 84q-31 32 -113 88q-60 38 -88 61t-74 72
+q-84 90 -84 245q0 14 11 24t25 10h172q48 92 242 92q196 0 244 -92h170zM789 500q47 59 54 148h-126q-6 -159 -54 -262q79 56 126 114zM465 750q-52 0 -100.5 -13t-71.5 -34q-18 -17 -18 -29q0 -14 18 -31q23 -21 71.5 -34t100.5 -13t100.5 13t71.5 34q18 17 18 31
+q0 12 -18 29q-23 21 -71.5 34t-100.5 13zM87 648q7 -89 54 -148q47 -58 126 -114q-48 103 -54 262h-126v0z" />
+    <glyph glyph-name="glyph169" unicode="&#x1f50b;" 
+d="M821 193q36 -59 78 -59h66q-29 -45 -64 -65q-34 -19 -118 -19h-500q-130 0 -199 94t-69 206q0 110 69 205t199 95h500q84 0 118 -19q35 -20 64 -65h-66q-42 0 -78 -60t-36 -156q0 -98 36 -157zM641 286q-140 137 -178 164q-33 20 -44 8q-9 -9 -18 -30l-22 -56l-148 66
+q-26 12 -34 0q-8 -15 8 -28q137 -132 180 -162q34 -16 42 -11q7 4 18 31l24 58l146 -68q26 -12 34 2q11 12 -8 26zM959 452q26 0 41 -30.5t15 -67.5q0 -38 -15 -69t-41 -31h-38q-26 0 -40 31t-14 69t14 68t40 30h38v0z" />
+    <glyph glyph-name="glyph170" unicode="&#xe771;" horiz-adv-x="970" 
+d="M836 640q119 -121 119 -290t-119 -290q-118 -120 -289 -120q-139 0 -252 88l70 76q83 -60 182 -60q126 0 216 90t90 216q0 128 -90 218t-216 90q-124 0 -213 -86q-88 -86 -93 -210h142l-184 -206l-184 206h124q5 166 123 282q119 116 285 116q171 0 289 -120zM511 570h70
+v-204l130 -130l-50 -50l-150 150v234v0z" />
+    <glyph glyph-name="glyph171" unicode="&#x1f4bb;" 
+d="M915 790q41 0 70.5 -29.5t29.5 -70.5v-550q0 -42 -29.5 -77t-68.5 -43l-218 -44l86 -38q49 -28 -20 -28h-500q-97 0 32 52l36 14l-220 44q-39 8 -68.5 43t-29.5 77v550q0 40 30 70t70 30h800zM915 144v556h-800v-556h800v0z" />
+    <glyph glyph-name="glyph172" unicode="&#x1f4f1;" horiz-adv-x="610" 
+d="M495 840q42 0 71 -29t29 -71v-780q0 -41 -29.5 -70.5t-70.5 -29.5h-380q-40 0 -70 30t-30 70v780q0 41 29.5 70.5t70.5 29.5h380zM305 -100q27 0 48.5 14t21.5 36q0 23 -21 36.5t-49 13.5q-26 0 -48 -14.5t-22 -35.5t22 -35.5t48 -14.5zM515 50v660h-420v-660h420v0z" />
+    <glyph glyph-name="glyph173" unicode="&#xe776;" horiz-adv-x="950" 
+d="M197 494q-51 56 -92 128q55 75 128 118q89 -37 152 -82q-6 -16 -6 -32q0 -7 4 -22q-62 -48 -116 -104q-15 4 -28 4q-23 0 -42 -10zM161 346q-61 -116 -80 -232q-66 106 -66 236q0 109 50 206q39 -64 84 -112q-8 -26 -8 -38q0 -34 20 -60zM427 710q-56 40 -114 70
+q84 30 162 30q120 0 230 -62q-74 -13 -162 -50q-26 26 -66 26q-27 0 -50 -14zM333 376q4 17 4 30q0 22 -14 52q36 42 98 90q26 -20 56 -20q12 0 38 8q93 -106 134 -240q-14 -11 -26 -32q-160 24 -290 112zM753 76q0 6 -1 28t-1 28q37 14 54 60q59 4 108 18
+q-47 -147 -166 -232q6 48 6 98zM297 -74q-90 36 -158 110q12 142 80 274q8 -2 20 -2q29 0 52 14q145 -99 310 -124q-189 -95 -304 -272zM935 350q0 -27 -4 -66q-65 -18 -130 -24q-24 56 -88 60q-48 146 -148 264q10 19 10 42v10q101 42 210 54q150 -136 150 -340zM649 146
+q13 -10 32 -18q2 -24 2 -52q0 -77 -14 -144q-85 -42 -194 -42q-58 0 -112 12q109 159 286 244v0z" />
+    <glyph glyph-name="glyph174" unicode="&#x1f4bf;" horiz-adv-x="950" 
+d="M800 675q135 -135 135 -325t-135 -325t-325 -135t-325 135t-135 325t135 325t325 135t325 -135zM475 200q61 0 105.5 44t44.5 106q0 64 -43 107t-107 43q-61 0 -105.5 -44t-44.5 -106t44.5 -106t105.5 -44v0z" />
+    <glyph glyph-name="glyph175" unicode="&#xe777;" horiz-adv-x="1029" 
+d="M1012 326l-28 -154q-4 -19 -21.5 -32.5t-40.5 -13.5h-816q-23 0 -40.5 13.5t-21.5 32.5l-28 154q-8 32 32 72q5 7 36 38q13 13 61 60t59 58q22 22 52 22h516q30 0 52 -22q30 -30 120 -117q32 -30 38 -39q40 -42 30 -72zM716 366h178l-102 114h-556l-102 -114h178
+q7 0 12 -8l40 -100h300l40 100q5 8 12 8v0z" />
+    <glyph glyph-name="glyph176" unicode="&#xe778;" horiz-adv-x="931" 
+d="M899 306q24 -53 14 -96l-34 -184q-2 -20 -19.5 -35t-38.5 -15h-712q-21 0 -38.5 15t-19.5 35l-34 184q-8 51 14 96l158 374q22 46 72 46h104l-20 -204h-134l254 -210l256 210h-136l-18 204h102q50 0 74 -46zM831 174q2 22 -10.5 38t-33.5 16h-644q-21 0 -33.5 -16
+t-10.5 -38l14 -74q2 -20 18.5 -36t37.5 -16h592q22 0 39 15.5t19 36.5l12 74v0z" />
+    <glyph glyph-name="glyph177" unicode="&#x1f30e;" horiz-adv-x="990" 
+d="M835 689q140 -142 140 -339q0 -200 -140 -340t-340 -140q-197 0 -339 140q-141 140 -141 340q0 198 141 339t339 141q201 0 340 -141zM827 589q-79 107 -202 149q-18 -24 -16 -32q5 -38 18 -51t30 -7l32 12q7 1 20 2q23 -24 0 -47q-21 -21 -45 -56q-23 -34 -1 -77
+q34 -64 96 -64q28 -1 43 -36q16 -36 17 -66q10 -79 -14 -140q-23 -44 14 -76q86 113 86 250q0 132 -78 239zM373 50q10 0 11.5 23t-2 57t-3.5 36q0 30 14 74q12 41 59 70q48 29 55 46q25 52 -8 104q-18 28 -75 45q-42 13 -59 13q-13 5 -38.5 7t-39.5 -3q-10 -4 -27 11
+t-17 29q0 10 15 27q6 7 31 32.5t32 34.5q10 18 39 37q9 6 23 17.5t29 20.5q22 14 27 23q-114 -15 -200.5 -86t-125.5 -172q4 0 14 -1t21 -2.5t15 -1.5q58 -5 62 -25q4 -11 -14 -45q-18 -33 -18 -61q0 -30 38 -56t38 -46q0 -25 8 -68t8 -44q0 -12 36 -54t52 -42zM367 -40
+q68 -20 128 -20q128 0 226 68q-26 45 -118 34q-23 -1 -65 -17q-44 -16 -47 -17q-71 -16 -76 -16q-7 -1 -16 -7t-19.5 -15t-12.5 -10v0z" />
+    <glyph glyph-name="glyph178" unicode="&#x2601;" 
+d="M775 494q99 0 170 -68q70 -67 70 -166t-70 -166q-71 -68 -170 -68h-578q-73 0 -127.5 52t-54.5 124q0 74 53.5 126t128.5 52q1 0 10 -1t10 -1q-2 16 -2 38q0 108 78 184q77 76 188 76q92 0 161.5 -53.5t92.5 -132.5q25 4 40 4v0z" />
+    <glyph glyph-name="glyph179" unicode="&#x26c8;" 
+d="M481 676q92 0 161.5 -53.5t92.5 -132.5q25 4 40 4q99 0 170 -68q70 -67 70 -166t-70 -166q-71 -68 -170 -68h-578q-73 0 -127.5 52t-54.5 124q0 74 53.5 126t128.5 52q1 0 10 -1t10 -1q-2 16 -2 38q0 108 78 184q77 76 188 76zM583 278q14 17 14 30q0 20 -30 32h-4
+q-28 15 -38 16l50 116q6 0 6 20q0 19 -15 21t-27 -11q-10 -10 -26 -27t-36 -39t-29 -32q-35 -38 -45 -52q-12 -18 -12 -30q0 -22 30 -30q6 -3 42 -18l-52 -114q-4 -12 -4 -22t8 -18q17 -10 34 10q98 98 134 148v0z" />
+    <glyph glyph-name="glyph180" unicode="&#x26a1;" horiz-adv-x="430" 
+d="M55 -100q-4 4 35 94q73 168 79 182q40 90 38 98q-1 6 -94 45q-92 39 -98 55q-5 12 84 120q93 113 180 209q47 52 70.5 75.5t25.5 21.5q6 -4 -74 -186.5t-78 -185.5q1 -4 95 -43q92 -39 97 -57q5 -20 -174 -227t-186 -201v0z" />
+    <glyph glyph-name="glyph181" unicode="&#x263d;" horiz-adv-x="850" 
+d="M539 238q105 105 125 252q19 145 -53 270q53 -26 96 -72q128 -128 128 -309t-128 -309t-310 -128t-310 128q-41 41 -72 94q124 -70 271 -51q148 20 253 125v0z" />
+    <glyph glyph-name="glyph182" unicode="&#x2708;" horiz-adv-x="1033" 
+d="M283 -120l124 400h-180l-112 -100h-100l80 170l-80 170h100l112 -100h180l-124 400h100l224 -400h274q12 -1 36 -4q37 -5 46 -11q11 -7 36 -21q27 -14 16 -34q0 -32 -38 -49q-40 -18 -74 -19l-38 -2h-258l-224 -400h-100v0z" />
+    <glyph glyph-name="glyph183" unicode="&#xe79b;" horiz-adv-x="951" 
+d="M909 720q13 4 21.5 -3t4.5 -19q-3 -8 -73 -313.5t-73 -312.5q-2 -13 -13 -18.5t-25 0.5q-46 25 -139 75t-139 75l22 26q103 112 209.5 227t144.5 156t40 43q4 4 -1 9t-9 1l-550 -402q-58 22 -302 120q-12 4 -12 12t12 12q7 4 227 82t437 154t218 76zM327 -8v204l160 -82
+q-122 -108 -142 -128q-18 -14 -18 6v0z" />
+    <glyph glyph-name="glyph184" unicode="&#x1f342;" horiz-adv-x="970" 
+d="M251 646q182 107 506 66q169 -23 196 -50q4 -5 -2 -10q-76 -40 -130 -109t-78 -132q-23 -61 -65 -132q-40 -69 -93 -105q-137 -96 -382 -4q-67 -78 -114 -176q-12 -24 -47 -7t-25 39q43 100 129 193q87 95 176 153q179 119 317 174l54 20q-65 0 -148.5 -15.5
+t-144.5 -37.5q-70 -25 -162 -84q-89 -57 -161 -141q-23 242 174 358v0z" />
+    <glyph glyph-name="glyph185" unicode="&#xe788;" horiz-adv-x="950" 
+d="M795 680q135 -131 140 -322q2 -192 -131 -327q-134 -137 -323 -141q-192 -2 -327 131q-138 134 -139 323q-4 190 130 327q134 138 324 139t326 -130zM291 706l62 -104q55 28 122 28t122 -28l62 104q-87 46 -190 44q-93 0 -178 -44zM223 228q-28 59 -28 122q0 65 28 124
+l-102 62q-46 -88 -46 -190q1 -94 46 -180zM659 -4l-62 104q-60 -30 -122 -30t-122 30l-62 -104q85 -46 190 -46q100 5 178 46zM631 195q64 64 64 155q0 92 -64 156t-156 64t-156 -64t-64 -156q0 -91 64 -155q65 -65 156 -65t156 65zM727 228l104 -62q46 94 44 190
+q0 95 -44 180l-104 -62q28 -59 28 -124q0 -63 -28 -122v0z" />
+    <glyph glyph-name="glyph186" unicode="&#xe789;" horiz-adv-x="591" 
+d="M566 130q29 -80 -17 -157q-45 -77 -139 -111q-94 -28 -175 9q-80 37 -103 117l-106 384q-22 75 7 139t83 101l-96 186q-14 35 14 48q30 18 48 -14l98 -192q79 22 154 -16q73 -37 102 -116zM242 404q25 9 39 34t5 56q-9 26 -33 40t-55 6q-25 -9 -39 -34t-5 -56
+q9 -26 33 -40t55 -6v0z" />
+    <glyph glyph-name="glyph187" unicode="&#x1f4bc;" 
+d="M471 226h-456q2 61 4.5 128.5t4 106t1.5 57.5q5 108 100 108h160q22 36 60 112q14 26 23 32t37 6h222q26 0 36 -7t22 -31q11 -19 60 -112h160q95 0 100 -108l10 -292h-454v100h-90v-100zM369 626h292l-28 54q-14 26 -42 26h-152q-28 0 -42 -26zM561 76v100h430
+q-3 -42 -10 -166q-6 -84 -90 -84h-750q-90 0 -90 84l-10 166h430v-100h90v0z" />
+    <glyph glyph-name="glyph188" unicode="&#xe78e;" 
+d="M915 650q41 0 70.5 -29.5t29.5 -70.5v-550q0 -42 -29 -71t-71 -29h-50v750h50zM15 550q0 40 30 70t70 30h50v-750h-50q-41 0 -70.5 29.5t-29.5 70.5v550zM685 650h110v-750h-560v750h110v104q96 46 170 46t170 -46v-104zM625 650v66q-53 24 -110 24q-55 0 -110 -24v-66
+h220v0z" />
+    <glyph glyph-name="glyph189" unicode="&#xe78b;" horiz-adv-x="250" 
+d="M125 460q46 0 78 -32t32 -78q0 -44 -32.5 -77t-77.5 -33t-77.5 33t-32.5 77q0 46 32 78t78 32v0z" />
+    <glyph glyph-name="glyph190" unicode="&#xe78c;" horiz-adv-x="600" 
+d="M125 460q46 0 78 -32t32 -78q0 -44 -32.5 -77t-77.5 -33q-46 0 -78 32t-32 78t32 78t78 32zM475 460q46 0 78 -32t32 -78q0 -44 -33.5 -77t-76.5 -33q-46 0 -78 32t-32 78t32 78t78 32v0z" />
+    <glyph glyph-name="glyph191" unicode="&#xe78d;" horiz-adv-x="950" 
+d="M125 460q46 0 78 -32t32 -78q0 -44 -32.5 -77t-77.5 -33t-77.5 33t-32.5 77q0 46 32 78t78 32zM475 460q46 0 78 -32t32 -78q0 -44 -33.5 -77t-76.5 -33t-76.5 33t-33.5 77q0 46 32 78t78 32zM825 460q46 0 78 -32t32 -78q0 -44 -32.5 -77t-77.5 -33t-77.5 33t-32.5 77
+q0 46 32 78t78 32v0z" />
+    <glyph glyph-name="glyph192" unicode="&#xe79a;" horiz-adv-x="992" 
+d="M133 170q47 37 94 27t83.5 -48.5t42.5 -81.5q6 -47 -30 -83q-85 -84 -228 -102q-28 -4 -46.5 -3.5t-27 4.5t-6.5 13q0 4 6 10q52 59 64 145q12 84 48 119zM973 816q26 -26 -148 -248q-177 -226 -292 -338q-36 -36 -124 -104q-8 -6 -16 8q-18 34 -49.5 65.5t-64.5 46.5
+q-15 6 -8 16q68 89 104 122q124 121 344 287q226 170 254 145v0z" />
+    <glyph glyph-name="glyph193" unicode="&#xe7a1;" horiz-adv-x="850" 
+d="M549 120l260 -20l-16 -166q-4 -28 -32 -24l-200 16q-28 0 -28 30zM43 100l258 20l16 -164q2 -12 -6.5 -21t-21.5 -9l-198 -16q-11 -2 -21.5 5.5t-10.5 18.5zM17 370q-2 16 -2 34q0 160 120 273q121 113 290 113t290 -113q120 -113 120 -273q0 -18 -2 -34l-16 -170
+l-258 22l16 170v12q0 59 -44.5 99.5t-105.5 40.5t-105.5 -40.5t-44.5 -99.5v-12l16 -170l-258 -22l-16 170v0z" />
+    <glyph glyph-name="glyph194" unicode="&#x221e;" 
+d="M515 426q54 61 132 102.5t164 41.5q83 0 144 -53q60 -53 60 -167q0 -112 -60 -166t-144 -54q-86 0 -163 42t-133 104q-54 -61 -131.5 -103.5t-162.5 -42.5q-86 0 -146 54t-60 166q0 114 60 167q61 53 146 53q86 0 163.5 -41.5t130.5 -102.5zM461 350q-42 53 -106.5 92.5
+t-133.5 39.5q-114 0 -114 -132t114 -132q68 0 133.5 40t106.5 92zM811 218q114 0 114 132t-114 132q-69 0 -134.5 -39.5t-105.5 -92.5q40 -53 105.5 -92.5t134.5 -39.5v0z" />
+    <glyph glyph-name="glyph195" unicode="&#x232b;" horiz-adv-x="1032" 
+d="M917 700q42 0 71 -29t29 -71v-500q0 -41 -29.5 -70.5t-70.5 -29.5h-478q-39 0 -70 28l-340 296q-29 26 0 54l340 296q31 26 70 26h478zM777 150l72 74l-128 126l128 128l-72 72l-128 -126l-128 126l-72 -72l128 -128l-128 -126l72 -74l128 128l128 -128v0z" />
+    <glyph glyph-name="glyph196" unicode="&#xe751;" horiz-adv-x="870" 
+d="M383 402h-368q18 146 121 249q102 102 247 119v-368zM489 770q155 -19 261 -139q105 -119 105 -279q0 -174 -123 -298t-299 -124q-159 0 -278 105q-117 104 -140 263h424q20 0 35 14.5t15 35.5v422v0z" />
+    <glyph glyph-name="glyph197" unicode="&#x1f4c8;" horiz-adv-x="1033" 
+d="M49 284q-42 11 -32 56q11 42 54 32l98 -24l-52 -80zM939 272q14 12 33.5 11t30.5 -15q33 -32 -2 -64l-252 -226q-12 -12 -30 -12q-15 0 -28 10l-286 220l-54 14l50 80l36 -8q13 -5 16 -8l264 -204zM449 492l-350 -550q-12 -22 -38 -22q-25 0 -39 24t1 46l374 588
+q7 15 28 20q18 6 36 -6l246 -156l226 326q10 16 27.5 19t34.5 -9q38 -24 12 -62l-252 -362q-24 -36 -62 -12l-244 156v0z" />
+    <glyph glyph-name="glyph198" unicode="&#x1f4ca;" horiz-adv-x="830" 
+d="M765 800q21 0 35.5 -15t14.5 -35v-850h-200v850q0 50 40 50h110zM465 500q21 0 35.5 -15t14.5 -35v-550h-200v550q0 50 40 50h110zM165 200q21 0 35.5 -15t14.5 -35v-250h-200v250q0 50 40 50h110v0z" />
+    <glyph glyph-name="glyph199" unicode="&#x1f53e;" horiz-adv-x="1010" 
+d="M979 732q16 22 16 -4v-768h-964q-12 0 -15 7.5t5 16.5l230 288q19 22 40 2l74 -66q10 -8 21 -7t17 11l158 238q17 26 38 4l112 -104q20 -20 38 4l230 378v0z" />
+    <glyph glyph-name="glyph200" unicode="&#x2707;" 
+d="M948 513q67 -67 67 -163q0 -95 -67 -162q-68 -68 -163 -68h-540q-94 0 -162 68t-68 162q0 95 68 163q67 67 162 67q96 0 163 -67t67 -163q0 -72 -40 -130h160q-40 64 -40 130q0 95 68 163q67 67 162 67q96 0 163 -67zM115 350q0 -52 38.5 -91t91.5 -39t91.5 39t38.5 91
+q0 53 -38.5 91.5t-91.5 38.5t-91.5 -38.5t-38.5 -91.5zM785 220q53 0 91.5 39t38.5 91q0 53 -38.5 91.5t-91.5 38.5t-91.5 -38.5t-38.5 -91.5q0 -52 38.5 -91t91.5 -39v0z" />
+    <glyph glyph-name="glyph201" unicode="&#x1f393;" 
+d="M515 70l276 136q-1 -8 -4 -27.5t-5 -30.5t-6 -25t-10 -22q-17 -25 -69 -45q-24 -10 -75.5 -38.5t-67.5 -36.5q-24 -11 -39 -11q-17 0 -40 13q-10 5 -41 23t-57 32t-46 22q-71 31 -103 69q-30 36 -47 109zM421 456q0 -26 29 -41t65 -15q27 0 36 4l292 -68l-268 -152
+q-60 -32 -120 0l-416 234q-24 14 -24 33t24 33l416 234q60 32 120 0l416 -234q24 -14 24 -33t-24 -33l-78 -44l-308 102q-23 36 -90 36q-36 0 -65 -15t-29 -41zM863 42q18 113 13 182q-4 64 -19 90l-14 22l70 38q5 -7 12 -28q7 -22 17 -101q11 -83 -7 -197q-5 -26 -22 -30
+q-15 -3 -33.5 4.5t-16.5 19.5v0z" />
+    <glyph glyph-name="glyph202" unicode="&#xe752;" horiz-adv-x="1031" 
+d="M929 634l8 -48q4 -10 -4 -12l-176 -30v-102h12q86 0 148 -36.5t86 -99.5q30 -83 -10 -176q-41 -95 -134 -160q-10 0 -12 2l-32 38q-2 6 2 10q85 60 117 152t-11 148q-34 -82 -98 -156q-35 -41 -84 -64.5t-108 -15.5q-53 6 -84.5 41.5t-31.5 92.5q0 84 60 148
+q49 50 114 66l-2 100q-139 -24 -146 -24q-6 -1 -10 4l-3 14q-2 13 -4.5 28t-2.5 18q-3 3 1 4.5t7 1.5l156 28q0 108 -2 114q0 8 8 8q44 0 52 2q10 0 10 -8v-104q154 22 164 22q8 5 10 -6zM691 366q-44 -15 -74 -56.5t-30 -91.5q0 -66 46 -72q28 -6 62 6zM769 380q-1 0 -6 -1
+t-6 -1l-2 -204q26 22 57 67t46 80t7 41q-36 18 -96 18zM307 556q14 -38 39.5 -118.5t56 -178t40.5 -129.5q40 -123 40 -126q0 -4 -4 -4h-86q-6 0 -6 4l-50 166h-176q-48 -164 -50 -166q0 -4 -6 -4h-86q-4 0 -4 4q8 14 176 552q2 8 10 8h96q10 0 10 -8zM177 240h144l-72 264
+l-72 -264v0z" />
+    <glyph glyph-name="glyph203" unicode="&#x1f3ab;" horiz-adv-x="970" 
+d="M231 272l178 -178l326 326l-178 178zM715 680q0 -42 30 -71t72 -29q25 0 48 12l76 -76q14 -14 14 -36t-14 -36l-550 -550q-16 -16 -36 -16t-36 16l-76 76q12 20 12 48q0 42 -29 72t-71 30q-20 0 -50 -14l-74 76q-16 16 -16 36t16 36l550 550q14 14 36 14t36 -14l74 -76
+q-12 -22 -12 -48zM409 14l406 406l-258 258l-408 -406l260 -258v0z" />
+    <glyph glyph-name="glyph204" unicode="&#x1f4a6;" horiz-adv-x="970" 
+d="M177 294q-65 0 -113.5 47.5t-48.5 112.5q0 58 33 112q20 33 73 123q39 67 50 155q1 4 7 4q5 0 5 -4q11 -88 50 -155q53 -90 73 -123q33 -54 33 -112q0 -65 -48.5 -112.5t-113.5 -47.5zM793 294q-65 0 -113.5 47.5t-48.5 112.5q0 87 69 171q30 37 55 98t32 121q1 4 7 4
+q5 0 5 -4q11 -88 50 -155q53 -90 73 -123q33 -54 33 -112q0 -65 -48.5 -112.5t-113.5 -47.5zM479 400q1 4 7 4q5 0 5 -4q11 -88 50 -155q53 -90 73 -123q33 -54 33 -112q0 -65 -48.5 -112.5t-113.5 -47.5t-113.5 47.5t-48.5 112.5q0 58 33 112q20 33 73 123q39 67 50 155v0z
+" />
+    <glyph glyph-name="glyph205" unicode="&#x1f4a7;" horiz-adv-x="590" 
+d="M365 603q48 -104 92 -159q118 -151 118 -296q0 -113 -83 -196q-82 -82 -197 -82t-197 82q-83 83 -83 196q0 147 118 296q44 55 92 159q47 101 60 219q2 8 11 8t9 -8q13 -118 60 -219zM263 430q2 5 -2 14q-6 6 -14 6q-7 0 -12 -6l-40 -58q-8 -12 -48 -70q-15 -23 -34 -75
+q-18 -51 -18 -101q0 -24 17 -41t41 -17q58 0 58 68q0 94 42 246q1 4 5 17t5 17v0z" />
+    <glyph glyph-name="glyph206" unicode="&#xe753;" horiz-adv-x="935" 
+d="M100 534q-25 -22 -55 -5.5t-27 47.5q2 22 18 36q49 42 79 60q36 22 89 40q60 20 129 4q71 -16 159 -66q90 -50 155 -53q68 -3 100 16q36 22 89 67q38 30 70 -6q32 -40 -6 -72q-122 -110 -234 -110q-101 0 -222 70q-70 39 -119 52q-51 14 -93 0q-42 -13 -65 -29
+q-28 -18 -67 -51zM906 418q32 -40 -6 -72t-65 -53q-28 -22 -77 -39.5t-92 -17.5q-97 0 -222 70q-70 39 -119 52q-51 14 -93 0q-42 -13 -65 -29q-28 -18 -67 -51q-16 -14 -36.5 -11.5t-33.5 17.5q-32 40 6 72q43 39 62 52t67 36q49 23 91.5 24t101.5 -16q66 -17 134 -56
+q70 -39 119 -52q51 -14 93 0q42 13 65 29q28 18 67 51q38 32 70 -6zM836 168q38 32 70 -6q14 -16 11.5 -37.5t-17.5 -34.5q-38 -32 -65 -53q-28 -22 -77 -39.5t-92 -17.5q-97 0 -222 70q-70 39 -119 52q-53 14 -93 1q-45 -14 -66 -29q-27 -19 -66 -52q-16 -14 -36.5 -11.5
+t-33.5 17.5q-32 40 6 72q43 39 62 52t67 36q49 23 91.5 24t101.5 -16q66 -17 134 -56q70 -39 119 -52q51 -14 93 0q42 13 65 29q28 18 67 51v0z" />
+    <glyph glyph-name="glyph207" unicode="&#x1f4b3;" 
+d="M915 700q41 0 70.5 -29.5t29.5 -70.5v-500q0 -42 -29 -71t-71 -29h-800q-41 0 -70.5 29.5t-29.5 70.5v500q0 40 30 70t70 30h800zM915 400h-800v-300h800v300zM915 600h-800v-50h800v50zM245 294v-30h-30v30h30zM425 234v30h30v30h60v-30h-30v-30h-30v-30h-60v30h30z
+M485 204v30h30v-30h-30zM305 204v30h60v-30h-60zM395 234h-30v60h60v-30h-30v-30zM275 234v-30h-60v30h30v30h30v30h60v-30h-30v-30h-30v0z" />
+    <glyph glyph-name="glyph208" unicode="&#x1f4be;" horiz-adv-x="830" 
+d="M15 650q0 41 29.5 70.5t70.5 29.5h558l142 -156v-544q0 -41 -29.5 -70.5t-70.5 -29.5h-600q-40 0 -70 30t-30 70v600zM565 400q19 0 34.5 15t15.5 35v250h-400v-250q0 -20 15.5 -35t34.5 -15h300zM565 650v-200h-100v200h100v0z" />
+    <glyph glyph-name="glyph209" unicode="&#x1f4cb;" horiz-adv-x="730" 
+d="M85 -150q-29 0 -49.5 20.5t-20.5 49.5v760q0 28 21 49t49 21l60 -150h440l60 150q28 0 49 -21t21 -49v-760q0 -29 -20.5 -49.5t-49.5 -20.5h-560zM545 650h-360l-44 100h108l36 100h160l36 -100h110l-46 -100v0z" />
+    <glyph glyph-name="glyph210" unicode="&#x1f4e3;" horiz-adv-x="890" 
+d="M873 242q9 -120 -39 -140q-28 -12 -61 3q-36 16 -65 40q-37 28 -106.5 42t-141.5 7q-26 -4 -41.5 -18t-6.5 -38q26 -65 46 -108q4 -10 24 -22q19 -12 24 -20q13 -34 -22 -46q-45 -20 -102 -40q-30 -10 -54 42q-23 56 -58 132q-6 13 -34 17q-27 4 -46 31q-6 -2 -20 -7
+t-19 -6.5t-16 -3.5t-18 -0.5t-17 5t-22 10.5q-40 24 -54 60q-16 30 -5 79q11 47 43 61q126 52 213 108q84 54 124 103q34 42 59 92q22 44 25 78q7 76 51 95q48 19 130 -70t142 -228q58 -137 67 -258zM778 200q9 5 10 38q2 38 -11 98q-27 133 -108 251q-40 58 -67 84
+q-29 27 -36 23q-9 -5 -10 -42q-2 -40 10 -105q25 -141 108 -252q44 -57 68 -76q29 -23 36 -19v0z" />
+    <glyph glyph-name="glyph211" unicode="&#xe754;" horiz-adv-x="730" 
+d="M715 206v-100q0 -73 -104 -135q-103 -61 -246 -61q-141 0 -245 61q-105 61 -105 135v100q0 10 4.5 10.5t9.5 -8.5q34 -56 130.5 -88t205.5 -32t205 32t131 88q14 20 14 -2zM715 462v-116q0 -68 -102 -114q-101 -46 -248 -46q-145 0 -247 46q-103 46 -103 114v116
+q0 20 14 0q33 -50 130.5 -77t205.5 -27t205.5 26.5t132.5 77.5q7 16 12 0zM365 790q143 0 247 -39q103 -39 103 -93v-64q0 -59 -103 -99q-105 -41 -247 -41t-247 41q-103 40 -103 99v64q0 54 103 93q104 39 247 39v0z" />
+    <glyph glyph-name="glyph212" unicode="&#xe755;" horiz-adv-x="932" 
+d="M899 304q26 -44 14 -96l-34 -184q-2 -20 -19.5 -35t-38.5 -15h-712q-20 0 -38 15.5t-20 34.5l-34 184q-8 54 14 96l158 374q22 46 72 46h408q50 0 74 -46zM831 172q2 22 -10.5 38t-33.5 16h-644q-21 0 -33.5 -16t-10.5 -38l14 -74q2 -21 19 -36.5t39 -15.5h590
+q22 0 39 15.5t19 36.5l12 74v0z" />
+    <glyph glyph-name="glyph213" unicode="&#xe756;" horiz-adv-x="943" 
+d="M537 360q-28 0 -49 -21t-21 -49q0 -20 10 -36q-43 -52 -108.5 -86.5t-137.5 -29.5q-101 10 -157 57q-54 46 -59 109q-8 122 156 184q-17 89 -22 138q-8 56 104 105q111 49 284 49q175 0 286 -49q112 -49 104 -105q-24 -150 -45.5 -288.5t-32 -207t-14.5 -92.5
+q-1 -18 -37 -44q-35 -26 -107 -50t-154 -24q-83 0 -153 24q-71 24 -106 50q-36 26 -37 44q0 5 -4 30q91 -7 170 38t132 114q28 0 48 20.5t20 49.5t-20.5 49.5t-49.5 20.5zM122 251q33 -27 91 -39l-32 204q-101 -44 -96 -106q5 -33 37 -59zM537 522q71 0 149 16.5t121 40.5
+q38 21 38 35t-38 35q-44 24 -121 40.5t-149 16.5q-71 0 -147.5 -16.5t-120.5 -40.5q-38 -21 -38 -35t38 -35q43 -24 120 -40.5t148 -16.5v0z" />
+    <glyph glyph-name="glyph214" unicode="&#xe757;" horiz-adv-x="570" 
+d="M415 356q62 -35 101 -96t39 -140q0 -112 -79 -191t-191 -79t-191 79t-79 191q0 79 39 140t101 96v444q0 50 40 50h170q19 0 34.5 -15t15.5 -35v-444zM285 -50q70 0 120 50t50 120q0 58 -33 101t-83 59v370h-100v-368q-51 -15 -87.5 -59.5t-36.5 -102.5q0 -70 50 -120
+t120 -50v0z" />
+    <glyph glyph-name="glyph215" unicode="&#x1f511;" horiz-adv-x="810" 
+d="M761 397q-48 -99 -150 -117q-67 -12 -130 -2l-118 -194l-70 -12l-104 -166q-13 -27 -46 -32l-76 -14q-13 -4 -22.5 4.5t-11.5 21.5l-16 98q-8 30 12 56l258 386q-25 51 -38 120q-10 57 7 108t52.5 87t81.5 60t97 33q107 20 195 -45q89 -65 107 -177q20 -117 -28 -215z
+M663 536q30 49 20 100t-50 80q-53 37 -109 17.5t-75 -72.5q-4 -10 4 -36q4 -13 31 -32q12 -8 67 -49q6 -5 42 -28q13 -8 19 -8q32 0 51 28v0z" />
+    <glyph glyph-name="glyph216" unicode="&#xe790;" horiz-adv-x="670" 
+d="M535 120q49 0 84.5 -35t35.5 -85t-35.5 -85t-84.5 -35q-80 0 -110 74h-164q-87 0 -131 54q-43 53 -43 118v464q-72 34 -72 110q0 50 35.5 85t84.5 35t84.5 -35t35.5 -85q0 -76 -72 -110v-114q0 -78 78 -78h164q30 72 110 72q49 0 84.5 -35t35.5 -85t-35.5 -85t-84.5 -35
+q-80 0 -110 74h-164q-43 0 -78 16v-194q0 -78 78 -78h164q30 72 110 72zM535 420q-29 0 -49.5 -20.5t-20.5 -49.5q0 -28 21 -48t49 -20t49 20t21 48q0 29 -20.5 49.5t-49.5 20.5zM65 700q0 -28 21 -48t49 -20t49 20t21 48q0 29 -20.5 49.5t-49.5 20.5t-49.5 -20.5
+t-20.5 -49.5zM535 -68q28 0 49 20t21 48q0 29 -20.5 49.5t-49.5 20.5t-49.5 -20.5t-20.5 -49.5q0 -28 21 -48t49 -20v0z" />
+    <glyph glyph-name="glyph217" unicode="&#xe791;" horiz-adv-x="670" 
+d="M535 770q49 0 84.5 -35t35.5 -85q0 -80 -74 -110q-12 -120 -89 -170q-38 -25 -64.5 -36.5t-78.5 -27.5q-76 -25 -110 -46q-47 -29 -54 -100q70 -30 70 -110q0 -50 -35.5 -85t-84.5 -35t-84.5 35t-35.5 85q0 78 72 112v378q-72 34 -72 110q0 50 35.5 85t84.5 35t84.5 -35
+t35.5 -85q0 -76 -72 -110v-204q41 30 138 60q54 17 84 29q31 13 53.5 45t26.5 72q-70 31 -70 108q0 50 35.5 85t84.5 35zM67 650q0 -28 20 -48t48 -20t49 20t21 48q0 29 -20.5 49.5t-49.5 20.5q-28 0 -48 -20.5t-20 -49.5zM135 -18q28 0 49 20t21 48q0 29 -20.5 49.5
+t-49.5 20.5q-28 0 -48 -20.5t-20 -49.5q0 -28 20 -48t48 -20zM535 582q28 0 49 20t21 48q0 29 -20.5 49.5t-49.5 20.5q-28 0 -48 -20.5t-20 -49.5q0 -28 20 -48t48 -20v0z" />
+    <glyph glyph-name="glyph218" unicode="&#xe792;" horiz-adv-x="970" 
+d="M485 820q49 0 84.5 -35t35.5 -85q0 -76 -72 -110v-140q0 -52 78 -52h100q85 0 129 -54q43 -53 43 -118v-114q72 -34 72 -112q0 -50 -35.5 -85t-84.5 -35t-84.5 35t-35.5 85q0 78 72 112v114q0 78 -76 78h-100q-43 0 -78 12v-204q72 -34 72 -112q0 -50 -35.5 -85
+t-84.5 -35t-84.5 35t-35.5 85q0 78 72 112v204q-30 -12 -76 -12h-100q-35 0 -56.5 -22t-21.5 -56v-114q72 -34 72 -112q0 -50 -35.5 -85t-84.5 -35t-84.5 35t-35.5 85q0 78 72 112v114q0 65 43 118q44 54 131 54h100q76 0 76 52v140q-72 34 -72 110q0 50 35.5 85t84.5 35z
+M205 0q0 29 -20.5 49.5t-49.5 20.5q-28 0 -48 -20.5t-20 -49.5q0 -28 20 -48t48 -20t49 20t21 48zM417 700q0 -28 20 -48t48 -20t49 20t21 48q0 29 -20.5 49.5t-49.5 20.5q-28 0 -48 -20.5t-20 -49.5zM555 0q0 29 -20.5 49.5t-49.5 20.5q-28 0 -48 -20.5t-20 -49.5
+q0 -28 20 -48t48 -20t49 20t21 48zM835 -68q28 0 49 20t21 48q0 29 -20.5 49.5t-49.5 20.5q-28 0 -48 -20.5t-20 -49.5q0 -28 20 -48t48 -20v0z" />
+    <glyph glyph-name="glyph219" unicode="&#xe793;" horiz-adv-x="270" 
+d="M135 770q49 0 84.5 -35t35.5 -85q0 -76 -72 -110v-378q72 -34 72 -112q0 -50 -35.5 -85t-84.5 -35t-84.5 35t-35.5 85q0 78 72 112v378q-72 34 -72 110q0 50 35.5 85t84.5 35zM67 650q0 -28 20 -48t48 -20t49 20t21 48q0 29 -20.5 49.5t-49.5 20.5q-28 0 -48 -20.5
+t-20 -49.5zM135 -18q28 0 49 20t21 48q0 29 -20.5 49.5t-49.5 20.5q-28 0 -48 -20.5t-20 -49.5q0 -28 20 -48t48 -20v0z" />
+    <glyph glyph-name="glyph220" unicode="&#xe794;" horiz-adv-x="670" 
+d="M135 770q49 0 84.5 -35t35.5 -85q0 -76 -72 -110v-378q72 -34 72 -112q0 -50 -35.5 -85t-84.5 -35t-84.5 35t-35.5 85q0 78 72 112v378q-72 34 -72 110q0 50 35.5 85t84.5 35zM205 50q0 29 -20.5 49.5t-49.5 20.5q-28 0 -48 -20.5t-20 -49.5q0 -28 20 -48t48 -20t49 20
+t21 48zM135 582q28 0 49 20t21 48q0 29 -20.5 49.5t-49.5 20.5q-28 0 -48 -20.5t-20 -49.5q0 -28 20 -48t48 -20zM535 770q49 0 84.5 -35t35.5 -85q0 -76 -72 -110v-378q72 -34 72 -112q0 -50 -35.5 -85t-84.5 -35t-84.5 35t-35.5 85q0 78 72 112v378q-72 34 -72 110
+q0 50 35.5 85t84.5 35zM467 650q0 -28 20 -48t48 -20t49 20t21 48q0 29 -20.5 49.5t-49.5 20.5q-28 0 -48 -20.5t-20 -49.5zM535 -18q28 0 49 20t21 48q0 29 -20.5 49.5t-49.5 20.5q-28 0 -48 -20.5t-20 -49.5q0 -28 20 -48t48 -20v0z" />
+    <glyph glyph-name="glyph221" unicode="&#x1f680;" horiz-adv-x="890" 
+d="M558 236q7 -56 8 -81q2 -33 -8 -59q-4 -10 -7 -22t-4.5 -16t-6 -10t-11 -11t-19.5 -13l-33 -19.5t-16 -9t-26.5 -11.5t-39.5 -17q-46 -21 -85 -37q-30 -11 -44.5 3.5t-3.5 44.5l40 110l-130 132l-106 -40q-30 -13 -43.5 2.5t-2.5 45.5q3 8 16 41.5t25 62.5t17 40
+q37 75 47 81q2 1 12 8t17 12q17 13 41 13h52q24 -2 71 -6q37 52 106 124q64 66 122.5 107.5t140.5 71.5q85 31 165 19q17 0 20 -20q10 -85 -18.5 -170.5t-75.5 -148.5q-99 -133 -184 -199zM608 532q22 -22 54 -22t54 23t22 55t-22 55t-54 23t-54 -23t-22 -55q0 -33 22 -56v0
+z" />
+    <glyph glyph-name="glyph222" unicode="&#xe7a2;" 
+d="M635 462q180 228 194 220q12 -6 -96 -278q-109 -273 -138 -326q-50 -86 -136 -36t-38 136q38 61 214 284zM17 66q0 5 -1 27t-1 27q0 227 145 382q146 156 355 156q73 0 134 -18l-70 -86q-36 4 -64 4q-169 0 -284 -127q-116 -128 -116 -311q0 -11 1 -26t1.5 -23
+t-2.5 -17.5t-10 -16.5q-14 -15 -33.5 -17t-36.5 12q-16 13 -18 34zM877 496q138 -154 138 -376v-15.5v-14.5v-12t-1 -12t-2 -10t-3 -9.5t-5 -7.5t-7 -8q-13 -13 -34 -13h-4q-21 4 -34.5 19.5t-11.5 36.5q2 18 2 46q0 149 -80 268q4 10 21 55t21 53v0z" />
+    <glyph glyph-name="glyph223" unicode="&#xe7a3;" horiz-adv-x="991" 
+d="M495 432q58 0 108.5 16.5t61.5 47.5q2 -6 20.5 -58t35.5 -100q-5 -38 -70 -65q-66 -27 -156 -27t-156 27q-65 27 -70 65q17 48 35.5 100t20.5 58q11 -31 62.5 -47.5t107.5 -16.5zM371 624l52 142q10 34 72 34t74 -34q11 -34 50 -142q-29 -44 -124 -44t-124 44zM935 196
+q41 -16 41 -41.5t-37 -46.5l-352 -188q-37 -22 -91 -22t-91 22l-354 188q-38 20 -36 46t42 42l188 76l-22 -60q0 -47 80 -82q78 -34 192 -34t192 34q81 35 82 82l-22 60l188 -76v0z" />
+    <glyph glyph-name="glyph224" unicode="&#xe7a5;" horiz-adv-x="990" 
+d="M829 694q141 -137 146 -336q2 -200 -136 -342q-137 -141 -338 -146q-200 -2 -341 137q-144 140 -145 337q-5 200 135 342t339 144q198 2 340 -136zM767 86q109 112 108 270q-1 157 -115 267q-111 109 -269 107q-157 -2 -267 -114q-109 -111 -107 -270q1 -158 114 -267
+q111 -109 270 -107q157 2 266 114zM317 350q0 -80 60 -80q40 0 58 40l56 -30q-19 -35 -50 -52q-32 -20 -70 -20q-63 0 -100.5 38.5t-37.5 103.5q0 64 36.5 104t97.5 40q87 0 124 -66l-62 -32q-17 36 -52 36q-60 0 -60 -82zM643 270q43 0 56 40l58 -30q-17 -31 -48.5 -51.5
+t-71.5 -20.5q-64 0 -100 38q-38 36 -38 104q0 63 38 106q38 38 98 38q84 0 120 -66l-60 -32q-17 36 -52 36q-62 0 -62 -82q0 -35 15.5 -57.5t46.5 -22.5v0z" />
+    <glyph glyph-name="glyph225" unicode="&#xe7a6;" horiz-adv-x="990" 
+d="M495 526q68 0 68 68t-68 68q-66 0 -66 -68t66 -68zM625 470q0 12 -9.5 21t-22.5 9h-196q-13 0 -22.5 -9t-9.5 -21v-196h56v-234h148v234h56v196zM835 690q140 -140 140 -340q0 -197 -140 -339q-139 -141 -340 -141q-198 0 -339 141t-141 339q0 200 141 340
+q142 140 339 140q200 0 340 -140zM495 -42q162 0 277 115t115 277q0 164 -115 278q-116 114 -277 114t-277 -114q-115 -114 -115 -278q0 -162 115 -277t277 -115v0z" />
+    <glyph glyph-name="glyph226" unicode="&#xe7a7;" horiz-adv-x="990" 
+d="M835 690q140 -140 140 -340q0 -197 -140 -339q-139 -141 -340 -141q-198 0 -339 141t-141 339q0 200 141 340q142 140 339 140q200 0 340 -140zM501 214q25 0 42.5 12.5t17.5 35.5q0 18 -14 30q-48 20 -102 46q-64 26 -178.5 78t-141.5 64q-22 -60 -22 -130
+q0 -162 115 -277t277 -115q115 0 205.5 58t138.5 146l-178 80q-7 -44 -45 -74t-87 -34v-74h-56v74q-79 0 -146 58l66 66q50 -44 108 -44zM631 358l242 -108q14 45 14 100q0 164 -115 278q-116 114 -277 114q-107 0 -191.5 -50t-136.5 -128l182 -82q12 37 46 62q31 22 78 24
+v74h56v-74q69 -5 120 -44l-62 -64q-43 28 -84 28q-56 0 -56 -38q0 -8 4 -12l60 -28q20 -8 60 -26t60 -26v0z" />
+    <glyph glyph-name="glyph227" unicode="&#xe7a8;" horiz-adv-x="990" 
+d="M835 690q140 -140 140 -340q0 -197 -140 -339q-139 -141 -340 -141q-198 0 -339 141t-141 339q0 200 141 340q142 140 339 140q200 0 340 -140zM285 342q0 2 1 12t1 12h-46v56h10l-126 56q-22 -60 -22 -128q0 -162 115 -277t277 -115q116 0 205.5 57.5t138.5 146.5
+l-246 108h-174q11 -39 26 -56q37 -40 104 -40q44 0 92 20l18 -90q-55 -30 -124 -30q-128 0 -196 92q-34 42 -46 104h-52v58h44v14zM613 366l262 -116q12 48 12 100q0 164 -115 278q-116 114 -277 114q-107 0 -193 -50t-137 -128l158 -70q6 11 28 38q72 82 184 82
+q69 0 122 -24l-24 -92q-42 20 -88 20q-64 0 -100 -44q-10 -10 -16 -28l56 -24h136v-56h-8v0z" />
+    <glyph glyph-name="glyph228" unicode="&#xe7a9;" horiz-adv-x="990" 
+d="M835 690q140 -140 140 -340q0 -197 -140 -339q-139 -141 -340 -141q-198 0 -339 141t-141 339q0 200 141 340q142 140 339 140q200 0 340 -140zM121 466q-18 -54 -18 -116q0 -162 115 -277t277 -115q111 0 199 54t137 138l-152 68v-68h-126v-108h-118v108h-124v74h124v36
+l-12 24h-112v74h54zM665 224l-106 48l-6 -12v-36h112zM679 324l192 -86q16 57 16 112q0 164 -115 278q-116 114 -277 114q-110 0 -197 -53t-137 -135l158 -70l-54 98h128l76 -166l46 -20l82 186h128l-122 -224h76v-34v0z" />
+    <glyph glyph-name="glyph229" unicode="&#xe7aa;" horiz-adv-x="990" 
+d="M739 344q0 115 -67 187.5t-179 72.5q-88 0 -143.5 -51t-68.5 -135h-36l94 -94l96 94h-36q12 86 108 86q57 0 83.5 -42.5t26.5 -113.5q0 -69 -28.5 -114.5t-83.5 -45.5q-100 0 -106 86h-120q12 -90 70 -138q62 -50 142 -50q106 0 180 74q68 74 68 184zM835 690
+q140 -140 140 -340q0 -197 -140 -339q-139 -141 -340 -141q-198 0 -339 141t-141 339q0 200 141 340q142 140 339 140q200 0 340 -140zM495 -42q162 0 277 115t115 277q0 164 -115 278q-116 114 -277 114t-277 -114q-115 -114 -115 -278q0 -162 115 -277t277 -115v0z" />
+    <glyph glyph-name="glyph230" unicode="&#xe7ab;" horiz-adv-x="990" 
+d="M321 382h348v82h-348v-82zM321 228h348v82h-348v-82zM835 690q140 -140 140 -340q0 -197 -140 -339q-139 -141 -340 -141q-198 0 -339 141t-141 339q0 200 141 340q142 140 339 140q200 0 340 -140zM495 -42q162 0 277 115t115 277q0 164 -115 278q-116 114 -277 114
+t-277 -114q-115 -114 -115 -278q0 -162 115 -277t277 -115v0z" />
+    <glyph glyph-name="glyph231" unicode="&#xe7ac;" horiz-adv-x="990" 
+d="M835 690q140 -140 140 -340q0 -197 -140 -339q-139 -141 -340 -141q-198 0 -339 141t-141 339q0 200 141 340q142 140 339 140q200 0 340 -140zM519 212q38 0 70 32l70 -84q-14 -6 -18 -16q-61 -42 -136 -42q-86 0 -159 58t-73 188q0 32 6 62l-154 68q-22 -60 -22 -128
+q0 -162 115 -277t277 -115q116 0 205.5 57.5t138.5 146.5l-424 188q1 -52 28 -96q25 -42 76 -42zM435 444l440 -194q12 48 12 100q0 164 -115 278q-116 114 -277 114q-107 0 -193 -50t-137 -128l148 -66q65 102 196 102q89 0 150 -54l-78 -80q-28 28 -66 28q-51 0 -80 -50v0
+z" />
+    <glyph glyph-name="glyph232" unicode="&#xe7ad;" horiz-adv-x="990" 
+d="M495 628q-108 0 -153 -81t-45 -197q0 -114 45 -195t153 -81t153 81t45 195q0 116 -45 197t-153 81zM409 350q0 174 86 174q7 0 18 -4q19 -18 6 -42l-106 -194q-4 43 -4 66zM495 178q-2 0 -9.5 1t-8.5 1q0 2 -2 2q-4 0 -6 2q-34 16 -12 46l118 204q6 -44 6 -84
+q0 -172 -86 -172zM835 690q140 -140 140 -340q0 -197 -140 -339q-139 -141 -340 -141q-198 0 -339 141t-141 339q0 200 141 340q142 140 339 140q200 0 340 -140zM495 -42q162 0 277 115t115 277q0 164 -115 278q-116 114 -277 114t-277 -114q-115 -114 -115 -278
+q0 -162 115 -277t277 -115v0z" />
+    <glyph glyph-name="glyph233" unicode="&#xe7ae;" horiz-adv-x="990" 
+d="M719 462q0 10 -8.5 18t-19.5 8h-104v104q0 11 -8 19.5t-18 8.5h-264q-24 -8 -24 -28v-352q0 -11 8 -19.5t18 -8.5h104v-104q0 -10 8.5 -18t19.5 -8h260q11 0 19.5 8t8.5 18v354zM427 488q-24 -9 -24 -26v-196h-78v300h210v-78h-108zM665 134h-210v302h210v-302zM835 690
+q140 -140 140 -340q0 -197 -140 -339q-139 -141 -340 -141q-198 0 -339 141t-141 339q0 200 141 340q142 140 339 140q200 0 340 -140zM495 -42q162 0 277 115t115 277q0 164 -115 278q-116 114 -277 114t-277 -114q-115 -114 -115 -278q0 -162 115 -277t277 -115v0z" />
+    <glyph glyph-name="glyph234" unicode="&#xe7af;" horiz-adv-x="990" 
+d="M819 338q-36 14 -106 44v118l-294 122l-130 -56v-136l2 -2l-116 -48v-122l124 -54l124 52q49 -21 141 -59t119 -49l6 -2q40 18 120 52l10 4v136zM673 184l-2 2v-2l-220 92v86l220 -90v-2h2v-86zM687 296l-70 30l76 32l72 -30zM789 222l-86 -36v84l86 36v-84zM835 690
+q140 -140 140 -340q0 -197 -140 -339q-139 -141 -340 -141q-198 0 -339 141t-141 339q0 200 141 340q142 140 339 140q200 0 340 -140zM495 -42q162 0 277 115t115 277q0 164 -115 278q-116 114 -277 114t-277 -114q-115 -114 -115 -278q0 -162 115 -277t277 -115v0z" />
+    <glyph glyph-name="glyph235" unicode="&#xf300;" horiz-adv-x="950" 
+d="M635 286q28 0 46 -27.5t18 -62.5t-18 -62.5t-46 -27.5q-30 0 -48 27.5t-18 62.5t18 62.5t48 27.5zM475 -40q-8 0 -43.5 1t-42.5 1q-110 0 -180 29q-37 15 -74.5 44.5t-59.5 61.5q-60 84 -60 229q0 114 74 194q-8 5 -1 80t33 140q93 -11 228 -104q47 12 126 12
+q84 0 126 -12q63 43 119 68q57 25 83 30l26 6q26 -65 33 -140t-1 -80q74 -80 74 -194q0 -203 -124 -294q-37 -26 -67 -39.5t-76 -21.5q-53 -9 -107 -9q-7 0 -42.5 -1t-43.5 -1zM477 356h-4q-21 0 -85 4.5t-78 4.5q-77 3 -119 -35q-52 -46 -52 -120q0 -124 84 -164
+q83 -40 250 -40h4q167 0 251 40q85 40 85 164q0 55 -34 99.5t-85 52.5q-37 6 -113 0q-77 -6 -104 -6zM317 286q28 0 46 -27.5t18 -62.5t-18 -62.5t-46 -27.5q-30 0 -48 27.5t-18 62.5t18 62.5t48 27.5v0z" />
+    <glyph glyph-name="glyph236" unicode="&#xf301;" horiz-adv-x="990" 
+d="M578 358q-9 0 -41 -2t-42 -2t-42 2t-41 2q-38 0 -61 -18q-26 -26 -26 -60q0 -65 43 -84q45 -20 127 -20t127 20q43 19 43 84q0 34 -26 60q-23 18 -61 18zM447 272q0 -17 -9 -31.5t-23 -14.5t-23 14.5t-9 31.5q0 46 32 46t32 -46zM609 272q0 -17 -10 -31.5t-24 -14.5
+t-23 14.5t-9 31.5q0 46 32 46q15 0 24.5 -14t9.5 -32zM835 690q140 -140 140 -340q0 -197 -140 -339q-139 -141 -340 -141q-198 0 -339 141t-141 339q0 200 141 340q142 140 339 140q200 0 340 -140zM539 154q188 0 188 184q0 55 -38 98q4 4 1 41q-3 35 -17 71
+q-44 -6 -114 -52q-19 6 -64 6q-40 0 -64 -6q-52 34 -100 50l-14 2q-14 -36 -17 -71q-3 -37 1 -41q-38 -43 -38 -98q0 -184 188 -184h88v0z" />
+    <glyph glyph-name="glyph237" unicode="&#xf303;" horiz-adv-x="930" 
+d="M211 550q82 0 139 -58.5t57 -141.5t-58 -141q-59 -59 -138 -59t-138 59q-58 58 -58 141t57 141.5t139 58.5zM719 150q-79 0 -138 59q-58 58 -58 141t57 141.5t139 58.5t139 -58.5t57 -141.5t-58 -141q-59 -59 -138 -59v0z" />
+    <glyph glyph-name="glyph238" unicode="&#xf304;" horiz-adv-x="990" 
+d="M835 690q140 -140 140 -340q0 -197 -140 -339q-139 -141 -340 -141q-198 0 -339 141t-141 339q0 200 141 340q142 140 339 140q200 0 340 -140zM367 250q40 0 70 30t30 70q0 41 -30 71.5t-70 30.5t-70 -30.5t-30 -71.5q0 -40 30 -70t70 -30zM623 250q41 0 70.5 29.5
+t29.5 70.5q0 42 -29 72t-71 30q-40 0 -69 -30.5t-29 -71.5q0 -40 29 -70t69 -30v0z" />
+    <glyph glyph-name="glyph239" unicode="&#xf306;" horiz-adv-x="931" 
+d="M911 558q-31 -186 -171 -351q-141 -167 -245 -237q-33 -19 -61.5 -19.5t-54.5 16.5t-44.5 39t-29.5 46q-14 28 -78.5 238.5t-73.5 223.5q-27 20 -82 -16l-20 -14l-36 50q6 6 21 23.5t25 28.5q31 35 100 89q71 56 124 67q58 12 89 -42q25 -40 38 -130q21 -126 25 -142
+q28 -106 38 -134q11 -28 18 -39q8 -11 18 -11q41 0 126 166q42 76 6 124t-112 2q23 127 140 188q104 54 182 8q80 -47 58 -174v0z" />
+    <glyph glyph-name="glyph240" unicode="&#xf307;" horiz-adv-x="990" 
+d="M835 690q140 -140 140 -340q0 -197 -140 -339q-139 -141 -340 -141q-198 0 -339 141t-141 339q0 200 141 340q142 140 339 140q200 0 340 -140zM715 444q13 82 -48 94q-61 14 -110 -40q-28 -28 -34 -66q38 24 56 -1t-2 -63q-43 -84 -64 -84q-14 0 -36 94q-2 8 -5 24
+t-6.5 35t-4.5 26q-3 16 -7 27t-11 24.5t-18 19t-26 2.5q-26 -6 -59.5 -31.5t-56.5 -50.5l-20 -24l18 -24q7 7 27 17t25 -1q5 -7 37 -113.5t39 -120.5q35 -71 96 -42q53 35 124 120q69 83 86 178v0z" />
+    <glyph glyph-name="glyph241" unicode="&#xf309;" horiz-adv-x="950" 
+d="M935 636q-37 -56 -94 -98v-24q0 -130 -60 -250q-60 -121 -186 -203q-127 -83 -290 -83q-159 0 -290 84q18 -2 46 -2q131 0 234 80q-64 2 -111.5 39t-64.5 93q9 -4 34 -4q26 0 50 6q-63 13 -106.5 64.5t-43.5 121.5v2q36 -20 84 -24q-84 58 -84 158q0 47 26 94
+q155 -189 390 -196q-6 18 -6 42q0 78 55.5 133t134.5 55q82 0 136 -58q58 12 120 44q-19 -66 -82 -104q55 8 108 30v0z" />
+    <glyph glyph-name="glyph242" unicode="&#xf30a;" horiz-adv-x="990" 
+d="M835 690q140 -140 140 -340q0 -197 -140 -339q-139 -141 -340 -141q-198 0 -339 141t-141 339q0 200 141 340q142 140 339 140q200 0 340 -140zM691 438q29 22 46 48q-33 -13 -54 -14q30 18 42 52q-29 -16 -60 -22q-28 28 -70 28q-39 0 -66.5 -28t-27.5 -66q0 -2 1 -11
+t1 -11q-121 6 -194 100q-14 -25 -14 -48q0 -49 44 -78q-26 0 -44 12v-2q0 -35 22 -61t54 -31q-15 -4 -24 -4q-10 0 -18 2q19 -66 88 -66q-49 -40 -118 -40h-22q67 -42 144 -42q122 0 196 83t74 187v12v0z" />
+    <glyph glyph-name="glyph243" unicode="&#xf30c;" horiz-adv-x="530" 
+d="M515 644h-142q-16 0 -26 -16.5t-10 -35.5v-102h178v-148h-178v-442h-170v442h-152v148h152v86q0 92 58.5 158t147.5 66h142v-156v0z" />
+    <glyph glyph-name="glyph244" unicode="&#xf30d;" horiz-adv-x="990" 
+d="M835 690q140 -140 140 -340q0 -197 -140 -339q-139 -141 -340 -141t-340 141q-140 142 -140 339q0 200 140 340t340 140t340 -140zM609 500v78h-72q-44 0 -74 -33.5t-30 -80.5v-44h-76v-74h76v-222h86v222h90v74h-90v52q0 28 18 28h72v0z" />
+    <glyph glyph-name="glyph245" unicode="&#xf30e;" horiz-adv-x="890" 
+d="M767 770q44 0 76 -31.5t32 -74.5v-646q0 -44 -32.5 -76t-75.5 -32h-162v310h114v134h-114v70q0 30 28 30h86v152h-96q-74 0 -124 -54.5t-50 -131.5v-66h-104v-134h104v-310h-326q-43 0 -75.5 32t-32.5 76v646q0 43 32 74.5t76 31.5h644v0z" />
+    <glyph glyph-name="glyph246" unicode="&#xf30f;" horiz-adv-x="926" 
+d="M291 282q-32 45 -32 86l2 14h-14q-63 0 -110 30q-74 44 -74 160q0 53 23.5 98.5t57.5 68.5q75 51 151 51h230v-4q0 -22 -78 -36q-27 0 -38 -6q39 -20 53.5 -54.5t14.5 -97.5q0 -102 -68 -158q-38 -38 -38 -54q0 -17 50 -64q104 -90 104 -178q0 -140 -116 -194
+q-67 -34 -150 -34h-4l-4 2q-2 -2 -4 -2q-57 0 -129 26q-47 16 -75 58t-28 102t32 101t83 57q89 28 159 28h2zM271 236q-59 -2 -109.5 -43t-46.5 -97q4 -54 58 -82t119.5 -22t103.5 40q41 37 37 88q-4 54 -44 85t-102 31h-16zM251 728q-10 0 -20 -2q-40 -12 -58 -62
+q-15 -59 -1 -109t46 -82q33 -33 71 -33q10 0 18 2q42 12 63 66t3 112q-30 108 -122 108zM761 446h150v-94h-150v-150h-94v150h-150v94h150v150h94v-150v0z" />
+    <glyph glyph-name="glyph247" unicode="&#xf310;" horiz-adv-x="990" 
+d="M449 486q8 -30 -1 -57t-31 -33h-10q-42 0 -60 60q-6 29 2 54q12 32 40 32q43 0 60 -56zM835 690q140 -140 140 -340q0 -197 -140 -339q-139 -141 -340 -141q-198 0 -339 141t-141 339q0 200 141 340q142 140 339 140q200 0 340 -140zM385 128h8q41 0 74 16q60 30 60 98
+q0 44 -52 92q-26 23 -26 32q0 12 20 26q34 34 34 80q0 58 -36 78q4 4 20 4q40 4 40 16v4h-116q-28 0 -45 -7.5t-41 -28.5q-32 -29 -32 -76q0 -44 25 -70t69 -26h6q-4 -23 16 -50h-2q-138 0 -138 -94q0 -41 28 -63q22 -18 40 -24.5t48 -6.5zM721 400h-76v76h-48v-76h-76v-48
+h76v-76h48v76h76v48zM407 294q30 0 51 -16.5t23 -43.5q2 -28 -20.5 -45t-53.5 -19q-33 -4 -59.5 10.5t-28.5 41.5q0 30 23 49.5t57 22.5h8v0z" />
+    <glyph glyph-name="glyph248" unicode="&#xf312;" horiz-adv-x="808" 
+d="M335 190q-24 -124 -58 -211q-31 -81 -96 -129q-10 120 -5 167q2 28 9 63q18 96 48 203q17 59 24 99q-24 51 -19 116q5 61 47 105t100 21q72 -28 31 -154q-27 -85 -32 -103q-15 -50 -4 -90q10 -38 63 -49q72 -15 123.5 39.5t71.5 129.5q21 81 11 163q-11 85 -54 128
+q-61 64 -151 70q-96 6 -168 -35.5t-115 -114.5q-46 -77 -32 -170q5 -23 22 -52q21 -36 22 -51.5t-18 -62.5q-146 35 -140 230q5 138 105 234q100 95 233 112q164 18 290 -57t144 -219q26 -176 -66 -317q-91 -141 -252 -129q-23 2 -42 9t-30 13.5t-31 20.5q-23 16 -31 21v0z
+" />
+    <glyph glyph-name="glyph249" unicode="&#xf313;" horiz-adv-x="990" 
+d="M835 690q140 -140 140 -340q0 -197 -140 -339q-139 -141 -340 -141t-340 141q-140 142 -140 339q0 200 140 340t340 140t340 -140zM527 238q82 -7 128 64t34 162q-11 73 -74 110q-66 38 -146 28q-65 -7 -117 -56q-52 -48 -53 -118q-4 -99 70 -116q9 23 9 31.5t-10 25.5
+q-10 16 -11 27q-13 96 78 144q92 48 158 -18q48 -48 20 -148q-28 -99 -98 -86q-41 8 -33 54q7 45 24 86q16 40 -21 60q-42 18 -65 -33q-23 -52 1 -89q-5 -24 -21 -83q-16 -63 -18 -87q-1 -12 1 -98q52 37 78 172q47 -31 66 -32v0z" />
+    <glyph glyph-name="glyph250" unicode="&#xf315;" horiz-adv-x="590" 
+d="M575 -58q-97 -52 -208 -52q-59 0 -110 16q-51 19 -82 46q-35 30 -46 64q-14 31 -14 96v322h-100v130q107 36 154 130q24 53 30 116h130v-232h216v-144h-216v-236q0 -83 8 -102q11 -25 32 -36q29 -20 68 -20q68 0 138 46v-144v0z" />
+    <glyph glyph-name="glyph251" unicode="&#xf316;" horiz-adv-x="990" 
+d="M835 690q140 -140 140 -340q0 -197 -140 -339q-139 -141 -340 -141q-198 0 -339 141t-141 339q0 200 141 340q142 140 339 140q200 0 340 -140zM625 144v74q-36 -24 -70 -24q-17 0 -36 10q-13 8 -14 18q-6 12 -6 52v118h110v74h-110v118h-64q-8 -44 -16.5 -62.5
+t-31.5 -37.5q-24 -19 -46 -26v-66h50v-162q0 -52 32 -80q13 -13 40 -24q34 -8 56 -8q57 0 106 26v0z" />
+    <glyph glyph-name="glyph252" unicode="&#xf318;" horiz-adv-x="930" 
+d="M219 698q0 -42 -30 -69t-74 -27q-42 0 -71 27.5t-29 68.5q0 43 28.5 69.5t73.5 26.5t72.5 -26.5t29.5 -69.5zM21 526h192v-618h-192v618zM327 328q0 98 -4 198h166l10 -86h4q60 100 190 100q108 0 165 -72t57 -194v-366h-192v342q0 134 -98 134q-69 0 -98 -72
+q-6 -12 -6 -48v-356h-194v420v0z" />
+    <glyph glyph-name="glyph253" unicode="&#xf319;" horiz-adv-x="990" 
+d="M835 690q140 -140 140 -340q0 -197 -140 -339q-139 -141 -340 -141q-198 0 -339 141t-141 339q0 200 141 340q142 140 339 140q200 0 340 -140zM377 464h-96v-312h96v312zM329 600q-21 0 -36.5 -14t-15.5 -34q0 -48 52 -48t52 48t-52 48zM733 152v184q0 61 -29 98.5
+t-83 37.5q-66 0 -96 -50h-2l-6 42h-84q2 -38 2 -100v-212h98v180q0 19 4 24q12 38 50 38q48 0 48 -68v-174h98v0z" />
+    <glyph glyph-name="glyph254" unicode="&#xf31b;" horiz-adv-x="950" 
+d="M453 480q-48 85 -122 193q-19 29 -24 33q-80 -39 -137.5 -111t-78.5 -163q182 0 362 48zM517 352q-11 31 -32 68q-183 -56 -402 -56v-14q0 -150 100 -262q9 15 13 21q42 62 103 119q37 35 94 68.5t110 51.5q7 4 14 4zM233 42l-8 6q6 -6 8 -6zM381 732zM735 646
+q-115 98 -260 98q-49 0 -92 -12q79 -104 146 -228q139 53 204 140zM150 25q-135 135 -135 325t135 325t325 135t325 -135t135 -325t-135 -325t-325 -135t-325 135zM543 286q-216 -74 -308 -242l-2 -2q109 -84 242 -84q76 0 154 32q-24 141 -84 298zM585 388l10 -20
+q110 13 230 -6q35 -6 42 -8q0 139 -88 246l-8 -10q-18 -23 -68 -63q-64 -50 -144 -83q14 -28 26 -56zM619 306q52 -146 76 -280q139 91 168 262q-5 3 -39 11q-104 24 -205 7v0z" />
+    <glyph glyph-name="glyph255" unicode="&#xf31c;" horiz-adv-x="990" 
+d="M509 352q-44 -14 -82 -44q-55 -44 -80 -86q-48 58 -48 128v4q107 0 200 28l14 -28zM523 432q-24 44 -70 110q12 4 42 4q73 0 128 -46q-32 -42 -100 -68zM529 316q34 -89 40 -146q-35 -16 -74 -16q-69 0 -118 42q41 80 152 120zM305 394q18 92 104 134q34 -43 72 -110
+q-91 -24 -176 -24zM609 328q33 0 80 -10q-16 -82 -82 -128q-6 57 -36 136q16 2 38 2zM835 690q140 -140 140 -340q0 -197 -140 -339q-139 -141 -340 -141q-198 0 -339 141t-141 339q0 200 141 340q142 140 339 140q200 0 340 -140zM662 185q69 69 69 165q0 98 -69 167
+t-167 69q-99 0 -166 -69q-68 -70 -68 -167q0 -95 68 -165q67 -69 166 -69q98 0 167 69zM541 398q73 29 108 74q42 -52 42 -116q-51 8 -90 8q-26 0 -44 -2q-2 2 -2 4q0 4 -2 4q-6 10 -12 28v0z" />
+    <glyph glyph-name="glyph256" unicode="&#xf31e;" 
+d="M239 142q19 0 35.5 16t16.5 36v314q0 92 66 157q67 65 158 65t158 -65q66 -65 66 -157v-60l-102 -34l-70 34v60q0 22 -15 37t-37 15q-20 0 -36 -15.5t-16 -36.5v-314q0 -92 -66 -158t-158 -66t-158 66t-66 158v132h172v-132q0 -20 16.5 -36t35.5 -16zM845 326h170v-132
+q0 -92 -66 -158t-158 -66t-158 66t-66 158v134l70 -32l102 32v-134q0 -20 16.5 -36t35.5 -16q22 0 38 15t16 37v132v0z" />
+    <glyph glyph-name="glyph257" unicode="&#xf31f;" horiz-adv-x="990" 
+d="M834 690q141 -140 141 -340q0 -198 -141 -339t-339 -141q-201 0 -340 141q-140 142 -140 339q0 200 140 340t340 140q197 0 339 -140zM355 164q46 0 79 33t33 79v160q0 26 28 26q26 0 26 -26v-30l34 -18l52 18v30q0 46 -33 79t-79 33t-80 -33t-34 -79v-160q0 -26 -26 -26
+t-26 26v68h-88v-68q0 -46 34 -79t80 -33zM747 276v68h-86v-68q0 -26 -26 -26q-28 0 -28 26v68l-52 -16l-34 16v-68q0 -46 33.5 -79t80.5 -33q46 0 79 33t33 79v0z" />
+    <glyph glyph-name="glyph258" unicode="&#xf321;" 
+d="M409 222l34 -100q-64 -52 -168 -52q-107 0 -183 73q-77 74 -77 199q0 129 80 209q79 79 188 79q111 0 167 -45q55 -44 91 -159l36 -116q48 -146 202 -146q120 0 120 60q0 54 -78 72l-78 18q-134 35 -134 152q0 89 58 126q59 38 146 38q184 0 198 -146l-114 -14
+q-7 70 -90 70q-82 0 -82 -62q0 -50 66 -66l74 -16q150 -36 150 -166q0 -160 -238 -160q-136 0 -204 53q-69 53 -100 149l-36 116q-4 10 -9 25.5t-7.5 22.5t-7 17t-10 18.5t-13.5 19.5q-32 43 -103 43q-64 0 -113 -46t-49 -142q0 -81 46 -130q47 -50 110 -50q60 0 128 56v0z
+" />
+    <glyph glyph-name="glyph259" unicode="&#xf322;" horiz-adv-x="990" 
+d="M834 690q141 -140 141 -340q0 -198 -141 -339t-339 -141q-201 0 -340 141q-140 142 -140 339q0 200 140 340t340 140q197 0 339 -140zM627 210q120 0 120 80q0 66 -76 84l-38 8q-32 8 -32 34q0 30 40 30q45 0 46 -34l58 6q-6 74 -100 74q-102 0 -102 -84q0 -60 66 -76
+l40 -8q40 -10 40 -36q0 -32 -62 -32q-76 0 -100 74l-20 58q-18 58 -45 81q-28 23 -85 23q-55 0 -95 -40q-41 -41 -41 -106q0 -59 37.5 -97.5t94.5 -38.5q54 0 86 26l-18 50q-28 -28 -66 -28q-34 0 -56 26.5t-22 63.5q0 43 22 69.5t60 26.5q34 0 49 -18t27 -56l18 -58
+q31 -102 154 -102v0z" />
+    <glyph glyph-name="glyph260" unicode="&#xf324;" horiz-adv-x="951" 
+d="M781 402q4 -28 4 -52q0 -159 -113 -275q-112 -115 -273 -115q-159 0 -271 115q-113 116 -113 275q0 163 112 276q113 114 272 114q54 0 90 -10v-222q-77 26 -154 -10q-70 -34 -101 -101q-31 -66 -5 -129q25 -59 95 -79q69 -19 139 15q52 26 87 80t35 122v286
+q15 -7 24 -14q174 -108 310 -114q33 -2 4 -52q-42 -76 -130 -106l-12 -4v0z" />
+    <glyph glyph-name="glyph261" unicode="&#xf325;" horiz-adv-x="990" 
+d="M834 690q141 -140 141 -340q0 -198 -141 -339t-339 -141q-201 0 -340 141q-140 142 -140 339q0 200 140 340t340 140q197 0 339 -140zM665 376q53 16 72 60q12 22 -4 22q-73 5 -156 58q-1 1 -6 4t-6 4v-146q0 -74 -62 -100q-36 -18 -70.5 -8.5t-47.5 40.5
+q-16 35 3.5 67.5t50.5 46.5q36 20 78 6v112q-23 6 -46 6q-80 0 -137 -58t-57 -140q0 -80 57 -138t137 -58t138 58t58 138q0 3 -1 13t-1 13v0z" />
+    <glyph glyph-name="glyph262" unicode="&#xf327;" horiz-adv-x="910" 
+d="M766 661q129 -129 129 -311q0 -116 -53 -210t-137 -152q-101 170 -310 176q-162 6 -272 -104q-108 124 -108 290q0 184 128 312t312 128q182 0 311 -129zM661 232q-172 106 -422 48q-26 -8 -20 -32q6 -27 32 -22q228 54 382 -40q23 -14 36 8q16 22 -8 38zM711 366
+q-102 62 -235 77q-137 15 -251 -19q-31 -10 -24 -44q12 -32 42 -22q115 32 233.5 16.5t200.5 -66.5q28 -19 46 10q18 30 -12 48zM783 462q19 34 -14 56q-117 69 -288 82q-173 14 -282 -24q-13 -4 -21.5 -18.5t-4.5 -31.5q11 -38 50 -28q93 34 249 22q154 -12 255 -72
+q34 -19 56 14zM391 34q119 -6 172 -110q-67 -14 -108 -14q-113 0 -214 56q59 72 150 68v0z" />
+    <glyph glyph-name="glyph263" unicode="&#xf328;" horiz-adv-x="990" 
+d="M834 690q141 -140 141 -340q0 -126 -58.5 -229t-149.5 -165q-108 186 -338 192q-176 6 -296 -114q-118 137 -118 316q0 200 140 340t340 140q197 0 339 -140zM719 220q-188 114 -460 54q-30 -7 -22 -36q7 -30 36 -22q245 58 416 -46q26 -14 40 10q14 26 -10 40zM775 366
+q-103 64 -245 83.5t-287 -19.5q-34 -10 -24 -46q10 -33 46 -26q111 34 244 19t228 -73q32 -20 50 12q18 34 -12 50zM853 472q20 38 -16 62q-127 74 -314 89t-306 -27q-16 -3 -26.5 -19.5t-3.5 -34.5q6 -17 21 -26.5t35 -3.5q103 36 271 23q171 -14 277 -77q38 -24 62 14z
+M427 4q131 -5 186 -118q-58 -16 -118 -16q-125 0 -234 62q66 73 166 72v0z" />
+    <glyph glyph-name="glyph264" unicode="&#xf32a;" horiz-adv-x="952" 
+d="M827 200q28 -21 37 -49.5t-11 -64.5q-109 -154 -298 -187q-187 -33 -344 77q-26 18 -38 30q153 -49 276 -7q115 38 181 100q43 41 53 52q18 20 28 35q19 29 52 33t64 -19zM215 230q16 -36 0.5 -64t-46.5 -42q-37 -17 -67 -6.5t-43 40.5q-80 173 -14 352q66 181 238 260
+q19 8 44 16q-85 -77 -123 -170q-39 -95 -32 -178q6 -76 15 -120.5t28 -87.5zM829 646q122 -147 106 -336q-6 -39 -8 -48q-18 83 -63 156t-102 116q-40 30 -97.5 57.5t-104.5 37.5q-13 3 -34 5.5t-31.5 4.5t-23.5 9t-22 19q-19 29 -15.5 65t25.5 58t58 20q190 -18 312 -164z
+M321 324q17 39 34 46v6q0 11 8 24v2q0 6 2 12q4 50 33.5 82t78.5 32q48 0 78 -32.5t32 -81.5q2 -6 2 -12v-2q8 -8 8 -24v-6q17 -7 34 -46q25 -54 6 -66q-12 -6 -30 22q-6 -28 -30 -46q26 -11 26 -26q0 -16 -19.5 -24t-42.5 -8q-52 0 -60 26h-8q-12 -26 -62 -26
+q-23 0 -42.5 8t-19.5 24q0 15 26 26q-24 19 -30 46q-18 -28 -28 -22q-22 10 4 66v0z" />
+    <glyph glyph-name="glyph265" unicode="&#xf32d;" horiz-adv-x="890" 
+d="M149 -80q-55 0 -94.5 40t-39.5 96v344h174q-4 -28 -4 -50q0 -107 76 -183q77 -77 184 -77q106 0 183 77t77 183q0 26 -6 50h176v-344q0 -56 -39.5 -96t-94.5 -40h-592zM741 780q55 0 94.5 -39t39.5 -95v-146h-218q-78 110 -212 110q-138 0 -212 -110h-218v146
+q0 56 39.5 95t94.5 39h592zM685 614q0 -9 7.5 -16.5t16.5 -7.5h72q24 0 24 24v72q0 24 -24 24h-72q-24 0 -24 -24v-72zM605 350q0 -65 -47.5 -112.5t-112.5 -47.5t-112.5 47.5t-47.5 112.5q0 67 47 113.5t113 46.5t113 -46.5t47 -113.5v0z" />
+    <glyph glyph-name="glyph266" unicode="&#xf330;" horiz-adv-x="990" 
+d="M301 806l194 -158l-284 -184l-196 164zM681 54l116 78v-46l-302 -190l-302 190v46l118 -78q6 -2 12 -2q10 0 14 4l158 132l160 -132q4 -4 14 -4q6 0 12 2zM975 628l-194 -164l-286 184l196 158zM495 286l286 178l174 -140l-282 -184zM319 140l-282 184l174 140l284 -178
+l-176 -146v0z" />
+    <glyph glyph-name="glyph267" unicode="&#xf333;" horiz-adv-x="796" 
+d="M677 700q31 0 59.5 -18t28.5 -46q0 -1 0.5 -9t2 -26.5t2.5 -37.5q14 -188 8 -315q-5 -106 -19.5 -176.5t-50.5 -120.5q-38 -51 -91 -51q-153 0 -194 26q-26 20 -18 130q1 39 37 59q34 19 69 19l34 -2l-4 -70q-16 -2 -38 -2q-19 0 -24 -26q-4 -37 40 -42l86 4q38 5 28 136
+q-4 30 -52 39q-69 10 -96 17q-45 13 -73 65q-9 17 -11 17t-8 -58t-30 -58q-45 0 -139 15q-95 15 -115 35q-33 34 -62 149q-28 113 -28 151q0 34 58 30h116q78 0 78 72q0 8 -1 55.5t-1 56.5q0 82 40 82q89 0 120 -14q16 -7 28 -24t14 -36l4 -14zM667 366q-8 28 -29.5 53
+t-48.5 25q-26 0 -44 -21.5t-22 -47.5q-5 -23 0 -29q5 -4 9.5 -5t7.5 -0.5t11 2.5t13 3q17 4 31 4q17 0 59 -16q10 -4 15 0q6 6 -2 32zM187 642q0 -22 -28 -22h-144l176 172q-4 -123 -4 -150v0z" />
+    <glyph glyph-name="glyph268" unicode="&#xf336;" horiz-adv-x="830" 
+d="M195 214l-180 -180v414q0 302 278 302h442l-312 -310q-6 -6 -10 -6q-8 0 -12 10v128q-94 0 -112 -2q-94 -16 -94 -146v-210zM635 488l180 180v-414q0 -304 -278 -304h-440l312 312q1 6 8 6q8 0 12 -10v-128q94 0 112 2q94 16 94 146v210v0z" />
+    <glyph glyph-name="glyph269" unicode="&#xf339;" horiz-adv-x="950" 
+d="M935 132q0 -108 -75 -185t-179 -77q-61 0 -120 32q-56 -8 -80 -8q-182 0 -311 132t-129 320q0 46 10 90q-36 60 -36 134q0 107 74 184q73 76 180 76q75 0 136 -40q34 8 76 8q183 0 310 -132q128 -133 128 -320q0 -49 -10 -96q26 -60 26 -118zM705 130q30 46 30 100
+q0 45 -16 80q-17 31 -50 54q-37 23 -76 36q-74 21 -96 26q-97 14 -122 50q-10 10 -10 26q0 24 28 42q26 20 76 20t74 -18q27 -24 38 -50q18 -28 26 -36q17 -12 38 -12q26 0 45 19t19 45q0 19 -14 52q-17 24 -42 48q-27 21 -74 38q-50 14 -102 14q-74 0 -128 -22
+q-52 -19 -84 -57t-32 -95q0 -53 28 -90q33 -39 76 -56q48 -22 116 -36q9 -2 80 -20q29 -10 46 -28q18 -14 18 -42q0 -38 -37 -59t-85 -21q-72 0 -100 40q-25 45 -26 46q-7 23 -24 40q-20 14 -40 14q-26 0 -45 -17.5t-19 -42.5q0 -45 30 -85t70 -63q64 -34 158 -34
+q78 0 138 24q60 28 88 70v0z" />
+    <glyph glyph-name="glyph270" unicode="&#xf33a;" horiz-adv-x="990" 
+d="M563 276q0 -21 -20 -32.5t-48 -11.5q-19 0 -36 6q-24 13 -34 42q-6 17 -14 22q-8 8 -22 8q-13 0 -26 -10q-10 -10 -10 -24q0 -21 16 -46q42 -56 128 -56q39 0 78 14q36 18 48 40q18 24 18 56q0 27 -9.5 45.5t-29.5 29.5t-37 17t-47 13.5t-45 12.5q-5 2 -11.5 4t-8.5 3
+t-5.5 3.5t-8.5 7.5q-6 6 -6 16q0 15 18 24.5t40 9.5q32 0 42 -10q12 -10 22 -28q6 -12 14 -20q11 -6 22 -6q14 0 24 10t10 24t-6 30q-5 9 -24 28q-21 15 -42 20q-24 8 -56 8q-86 0 -120 -46q-18 -22 -18 -50q0 -30 16 -52q20 -20 42 -32q49 -17 89 -25q33 -7 47 -21
+q10 -7 10 -24zM835 690q140 -140 140 -340q0 -197 -140 -339q-139 -141 -340 -141q-198 0 -339 141t-141 339q0 200 141 340q142 140 339 140q200 0 340 -140zM611 82q58 0 100 43.5t42 102.5q0 35 -16 66q6 28 6 54q0 104 -72 178t-174 74q-24 0 -42 -2q-34 22 -74 22
+q-59 0 -101.5 -43.5t-42.5 -102.5q0 -39 20 -76q-4 -15 -4 -50q0 -104 72 -178t172 -74q34 0 46 4q30 -18 68 -18v0z" />
+    <glyph glyph-name="glyph271" unicode="&#xf33c;" horiz-adv-x="950" 
+d="M399 516q-1 -149 -77 -274q-74 -123 -197 -184q-110 131 -110 296q0 170 110 298q109 127 274 156v-292zM697 -50q-103 -56 -222 -56t-220 56q178 114 220 288q42 -174 222 -288zM551 518v290q165 -29 274 -156q110 -128 110 -298q0 -168 -108 -296q-119 58 -197.5 181
+t-78.5 279v0z" />
+    <glyph glyph-name="glyph272" unicode="&#xf33f;" horiz-adv-x="1026" 
+d="M865 212q0 -103 -127 -197q-128 -95 -313 -95q-161 0 -285 78q-125 78 -125 196q0 129 146 280q91 92 186 129q88 35 130 1t14 -120q-5 -14 8 -14l16 2q72 34 134 34q61 0 84 -34.5t-2 -99.5q-6 -18 16 -24q118 -37 118 -136zM627 71q80 65 72 145q-11 80 -100 128
+q-90 48 -212 36t-202 -77q-81 -65 -70 -145q8 -80 98 -128t212 -36t202 77zM711 710q-16 0 -26 10t-10 26q0 34 36 34q123 0 212 -87q88 -87 88 -211v-2q0 -14 -11 -24t-25 -10t-24 10t-10 24q0 95 -68 163q-67 67 -162 67zM871 486q4 -15 -4.5 -27.5t-21.5 -14.5
+q-34 -4 -42 28q-8 38 -36.5 66t-65.5 36q-34 7 -26 40q7 36 42 28q57 -12 99.5 -55t54.5 -101zM343 276q48 10 88 -12.5t48 -61.5q10 -39 -19 -77q-28 -37 -79 -45q-35 -7 -67.5 3.5t-50 33t-20.5 52.5t22 61q28 35 78 46v0z" />
+    <glyph glyph-name="glyph273" unicode="&#xf342;" horiz-adv-x="889" 
+d="M786 610q88 -43 88 -162q0 -130 -110 -210q-107 -80 -306 -80h-30q-17 0 -32.5 -12.5t-19.5 -27.5l-36 -156q-12 -42 -52 -42h-106q-17 0 -27.5 12.5t-6.5 29.5l6 24h68q17 0 32.5 13.5t19.5 28.5l36 156q10 40 52 40h30q196 0 306 80q110 83 110 210q0 56 -22 96z
+M206 94q-2 -15 -18 -28.5t-32 -13.5h-108q-17 0 -26.5 12.5t-5.5 29.5l150 646q10 40 52 40h224q75 0 126 -8q58 -13 94 -34q35 -23 58 -62q20 -38 20 -96q0 -130 -110 -210q-107 -80 -304 -80h-32q-16 0 -32 -12.5t-18 -27.5zM294 468q-4 -16 6.5 -28t25.5 -12h28
+q86 0 134 36q48 34 48 98q0 47 -32 65.5t-92 18.5h-34q-42 0 -52 -40l-32 -138v0z" />
+    <glyph glyph-name="glyph274" unicode="&#xf345;" horiz-adv-x="950" 
+d="M423 616l-396 -362q-12 48 -12 96q0 138 70.5 246t179.5 164q14 -16 158 -144zM665 492l-328 296q63 22 138 22q100 0 190 -40v-278zM735 730q88 -60 144 -159t56 -221q0 -79 -26 -152h-174v532zM115 240l102 92v-362q-115 80 -168 210q12 12 66 60zM287 -70v198h590
+q-53 -96 -147.5 -161t-212.5 -77h-84q-86 11 -146 40v0z" />
+    <glyph glyph-name="glyph275" unicode="&#xf348;" 
+d="M49 178q0 -4 -10 -4q-6 0 -10 4l-14 70l14 72q4 4 10 4q10 0 10 -4l16 -72zM151 140q0 -8 -12 -8t-12 8l-12 108l12 166q0 8 12 8t12 -8l14 -166zM253 142q0 -10 -14 -10t-14 8l-10 108l10 222q0 10 14 10t14 -10l12 -222zM355 142q0 -10 -16 -10t-16 10l-8 106l8 224
+q0 10 16 10t16 -10l10 -224zM457 144q0 -12 -18 -12q-17 0 -18 12l-6 104l6 256q5 14 18 14q18 0 18 -14l8 -256zM529 132q-14 0 -14 14v396q0 10 12 14q37 14 84 14q88 0 153 -58.5t73 -141.5q23 10 50 10q51 0 89.5 -37t38.5 -87q0 -52 -38 -89t-90 -37l-358 2v0z" />
+    <glyph glyph-name="glyph276" unicode="&#xf34b;" horiz-adv-x="1028" 
+d="M173 89q-136 101 -155 255q-23 170 108 308q131 139 336 164q207 26 366 -77q130 -84 170 -214.5t-23 -302.5q-49 -126 -165 -225t-270 -117v108h-48q-183 0 -319 101zM798 208v276q0 35 -10 52q-8 19 -30 38q-18 13 -44 20q-28 6 -56 6q-70 0 -116 -46q-9 15 -36 32
+q-31 14 -70 14q-66 0 -110 -38v30h-88v-384h92v236q0 19 14.5 39.5t31.5 26.5q19 10 40 10q25 0 46 -16q12 -26 12 -48v-248h90v236q0 36 22 54q22 22 62 22q20 0 32 -6q10 -1 16 -12q8 -8 8 -18q4 -17 4 -28v-248h90v0z" />
+    <glyph glyph-name="glyph277" unicode="&#xf34e;" 
+d="M337 680q81 0 128.5 -45.5t47.5 -126.5q0 -42 -20 -76.5t-50 -41.5l-24 -4q57 0 85 -40q30 -42 31 -80v-40q0 -52 -19 -93.5t-51 -60.5q-53 -32 -108 -38h-342v646h322zM327 422q31 0 42.5 18t11.5 58q0 24 -9 43.5t-25 22.5l-10 2h-180v-144h170zM403 234q0 40 -16 62
+q-17 23 -32 24l-18 2h-180v-172h172q74 0 74 84zM797 516q65 0 114.5 -27.5t70.5 -71.5q38 -82 33 -151l-2 -30h-320q0 -54 27 -82t55 -28l26 -2q45 0 71 17t27 33l2 18h108q0 -82 -53 -124q-53 -43 -105 -44l-54 -2q-66 0 -118 23.5t-76 63.5q-44 72 -44 133v26q0 37 15 87
+t39 79.5t69 54.5q50 27 115 27zM895 322q0 32 -20 65q-9 15 -30 25t-44 10q-42 0 -70 -25t-34 -51l-6 -24h204zM921 642v-78h-256v78h256v0z" />
+    <glyph glyph-name="glyph278" unicode="&#xf351;" horiz-adv-x="950" 
+d="M829 704q106 -106 106 -256q0 -142 -96 -247q-95 -104 -236 -115q-33 -82 -109.5 -139t-174.5 -57q-127 0 -215 90q-89 91 -89 214q0 99 56 175t138 109q12 140 116 236q103 96 246 96q152 0 258 -106zM117 194q0 -83 59.5 -142.5t142.5 -59.5q119 0 174 100
+q-103 22 -178.5 97t-97.5 179q-100 -55 -100 -174zM323 396q16 -75 70 -128.5t128 -69.5q-2 80 -60.5 138t-137.5 60zM623 198q85 17 143.5 86.5t58.5 163.5q0 106 -75 180q-76 74 -179 74q-91 0 -161 -58q-71 -59 -87 -146q123 -1 211 -89t89 -211zM119 596q-42 0 -73 30
+t-31 72q0 43 30.5 73.5t73.5 30.5t73.5 -30t30.5 -74q0 -43 -30.5 -72.5t-73.5 -29.5zM119 756q-24 0 -40 -17t-16 -41q0 -23 16.5 -39.5t39.5 -16.5t40.5 17t17.5 39q0 24 -17 41t-41 17v0z" />
+    <glyph glyph-name="glyph279" unicode="&#xf354;" horiz-adv-x="990" 
+d="M547 302q-18 8 -54 8h-58v-116h52q49 0 62 10q24 14 24 50q0 31 -26 48zM525 402q20 17 20 44q0 28 -24 42q-11 6 -60 6h-26v-102h34q43 0 56 10zM807 830q70 0 119 -49t49 -119v-622q0 -70 -49 -120t-119 -50h-624q-70 0 -119 50t-49 120v622q0 70 49 119t119 49h624z
+M521 106q85 0 125 42q41 43 41 102q0 96 -96 116v2q68 23 68 102q0 48 -34.5 78t-85.5 30h-214v-472h196v0z" />
+    <glyph glyph-name="glyph280" unicode="&#xf357;" horiz-adv-x="970" 
+d="M593 144q8 -60 -56 -84q-21 -10 -50 -10q-55 0 -110 20q-52 19 -78 40l-26 18l-74 -170q69 -34 136 -56l-80 -20q-30 -6 -53.5 10t-30.5 42l-154 646q-7 30 9.5 54.5t42.5 29.5l186 44q-66 -72 -60 -182q6 -78 72 -141t166 -99q150 -58 160 -142zM953 122q8 -30 -9 -54
+t-43 -30l-136 -34q43 59 44 136q4 88 -54 164t-186 118q-152 53 -158 126q-6 52 56 72q22 10 54 8q47 -2 93.5 -14.5t68.5 -31.5l16 -14l58 160q-79 42 -176 60l134 32q30 6 53.5 -10t30.5 -42l154 -646v0z" />
+    <glyph glyph-name="glyph281" unicode="&#xf601;" horiz-adv-x="930" 
+d="M865 650q19 0 34.5 -15t15.5 -35v-200h-500v250h450zM15 300h300v-250h-260q-40 0 -40 50v200zM915 100q0 -22 -14 -36t-36 -14h-450v250h500v-200zM15 600q0 50 40 50h260v-250h-300v200v0z" />
+    <glyph glyph-name="glyph282" unicode="&#xf600;" horiz-adv-x="930" 
+d="M465 800q276 0 363 -88t87 -362q0 -276 -87 -363t-363 -87q-273 0 -362 87q-88 87 -88 363q0 274 88 362t362 88v0z" />
+    <glyph glyph-name="glyph283" unicode="&#xf603;" horiz-adv-x="756" 
+d="M557 60q-41 -68 -111.5 -87t-154.5 25l-64 36l-108 -184l-56 32l206 358q-67 -10 -134 28l-120 70l186 324l122 -70q67 -41 92 -100l206 358l58 -34l-108 -186l64 -36q75 -43 98 -119q22 -75 -20 -143q-47 -87 -152 -92q48 -90 -4 -180zM541 580l-124 -216l-2 -6l62 -36
+q57 -30 103 -16.5t73 60.5q29 57 13.5 102.5t-61.5 73.5zM165 320q57 -30 103 -16.5t73 60.5q29 56 13.5 103t-61.5 73l-64 38l-128 -222zM321 50q57 -30 103 -16.5t73 60.5q22 37 18.5 71t-21.5 60.5t-47 44.5l-62 36l-4 -4l-124 -216l64 -36v0z" />
+  </font>
+</defs></svg>

BIN
edit-backstage/hot_online/icons/entypo.ttf


BIN
edit-backstage/hot_online/icons/entypo.woff


BIN
edit-backstage/hot_online/images/iframe-icon.png


BIN
edit-backstage/hot_online/images/img-icon.png


BIN
edit-backstage/hot_online/images/model-icon.png


BIN
edit-backstage/hot_online/images/video-icon.png


File diff suppressed because it is too large
+ 1 - 1
edit-backstage/hot_online/index.html


+ 2 - 0
edit-backstage/hot_online/js/about.712cd281.js

@@ -0,0 +1,2 @@
+(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["about"],{f820:function(t,e,n){"use strict";n.r(e);var a=function(){var t=this,e=t.$createElement;t._self._c;return t._m(0)},s=[function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"about"},[n("h1",[t._v("This is an about page")])])}],u=n("2877"),c={},i=Object(u["a"])(c,a,s,!1,null,null,null);e["default"]=i.exports}}]);
+//# sourceMappingURL=about.712cd281.js.map

File diff suppressed because it is too large
+ 1 - 0
edit-backstage/hot_online/js/about.712cd281.js.map


+ 2 - 0
edit-backstage/hot_online/js/about.8bca1b1d.js

@@ -0,0 +1,2 @@
+(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["about"],{f820:function(t,e,n){"use strict";n.r(e);var a=function(){var t=this,e=t.$createElement;t._self._c;return t._m(0)},s=[function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"about"},[n("h1",[t._v("This is an about page")])])}],u=n("4ac2"),c={},i=Object(u["a"])(c,a,s,!1,null,null,null);e["default"]=i.exports}}]);
+//# sourceMappingURL=about.8bca1b1d.js.map

File diff suppressed because it is too large
+ 1 - 0
edit-backstage/hot_online/js/about.8bca1b1d.js.map


File diff suppressed because it is too large
+ 2 - 0
edit-backstage/hot_online/js/app.233cc84c.js


File diff suppressed because it is too large
+ 1 - 0
edit-backstage/hot_online/js/app.233cc84c.js.map


File diff suppressed because it is too large
+ 2 - 0
edit-backstage/hot_online/js/app.3749bf3a.js


File diff suppressed because it is too large
+ 1 - 0
edit-backstage/hot_online/js/app.3749bf3a.js.map


File diff suppressed because it is too large
+ 2 - 0
edit-backstage/hot_online/js/app.44338beb.js


File diff suppressed because it is too large
+ 1 - 0
edit-backstage/hot_online/js/app.44338beb.js.map


File diff suppressed because it is too large
+ 2 - 0
edit-backstage/hot_online/js/app.52a38474.js


File diff suppressed because it is too large
+ 1 - 0
edit-backstage/hot_online/js/app.52a38474.js.map


File diff suppressed because it is too large
+ 2 - 0
edit-backstage/hot_online/js/app.7e6bbe50.js


File diff suppressed because it is too large
+ 1 - 0
edit-backstage/hot_online/js/app.7e6bbe50.js.map


File diff suppressed because it is too large
+ 2 - 0
edit-backstage/hot_online/js/app.8a8eb09c.js


File diff suppressed because it is too large
+ 1 - 0
edit-backstage/hot_online/js/app.8a8eb09c.js.map


File diff suppressed because it is too large
+ 2 - 0
edit-backstage/hot_online/js/app.8b411bbe.js


File diff suppressed because it is too large
+ 1 - 0
edit-backstage/hot_online/js/app.8b411bbe.js.map


File diff suppressed because it is too large
+ 2 - 0
edit-backstage/hot_online/js/app.9ee3963c.js


File diff suppressed because it is too large
+ 1 - 0
edit-backstage/hot_online/js/app.9ee3963c.js.map


File diff suppressed because it is too large
+ 2 - 0
edit-backstage/hot_online/js/app.d3c7f87a.js


File diff suppressed because it is too large
+ 1 - 0
edit-backstage/hot_online/js/app.d3c7f87a.js.map


+ 713 - 0
edit-backstage/hot_online/js/baguetteBox.js

@@ -0,0 +1,713 @@
+/*!
+ * baguetteBox.js
+ * @author  feimosi
+ * @version %%INJECT_VERSION%%
+ * @url https://github.com/feimosi/baguetteBox.js
+ */
+
+/* global define, module */
+
+(function (root, factory) {
+    'use strict';
+    if (typeof define === 'function' && define.amd) {
+        define(factory);
+    } else if (typeof exports === 'object') {
+        module.exports = factory();
+    } else {
+        root.baguetteBox = factory();
+    }
+}(this, function () {
+    'use strict';
+
+    // SVG shapes used on the buttons
+    var leftArrow = '<svg width="44" height="60">' +
+            '<polyline points="30 10 10 30 30 50" stroke="rgba(255,255,255,0.5)" stroke-width="4"' +
+              'stroke-linecap="butt" fill="none" stroke-linejoin="round"/>' +
+            '</svg>',
+        rightArrow = '<svg width="44" height="60">' +
+            '<polyline points="14 10 34 30 14 50" stroke="rgba(255,255,255,0.5)" stroke-width="4"' +
+              'stroke-linecap="butt" fill="none" stroke-linejoin="round"/>' +
+            '</svg>',
+        closeX = '<svg width="30" height="30">' +
+            '<g stroke="rgb(160,160,160)" stroke-width="4">' +
+            '<line x1="5" y1="5" x2="25" y2="25"/>' +
+            '<line x1="5" y1="25" x2="25" y2="5"/>' +
+            '</g></svg>';
+    // Global options and their defaults
+    var options = {},
+        defaults = {
+            captions: true,
+            fullScreen: false,
+            noScrollbars: false,
+            titleTag: false,
+            buttons: 'auto',
+            async: false,
+            preload: 2,
+            animation: 'slideIn',
+            afterShow: null,
+            afterHide: null,
+            // callback when image changes with `currentIndex` and `imagesElements.length` as parameters
+            onChange: null,
+            overlayBackgroundColor: 'rgba(0,0,0,.8)'
+        };
+    // Object containing information about features compatibility
+    var supports = {};
+    // DOM Elements references
+    var overlay, slider, previousButton, nextButton, closeButton;
+    // An array with all images in the current gallery
+    var currentGallery = [];
+    // Current image index inside the slider
+    var currentIndex = 0;
+    // Touch event start position (for slide gesture)
+    var touch = {};
+    // If set to true ignore touch events because animation was already fired
+    var touchFlag = false;
+    // Regex pattern to match image files
+    var regex = /.+\.(gif|jpe?g|png|webp)/i;
+    // Object of all used galleries
+    var data = {};
+    // Array containing temporary images DOM elements
+    var imagesElements = [];
+    // The last focused element before opening the overlay
+    var documentLastFocus = null;
+    var overlayClickHandler = function(event) {
+        // Close the overlay when user clicks directly on the background
+        if (event.target.id.indexOf('baguette-img') !== -1) {
+            hideOverlay();
+        }
+    };
+    var previousButtonClickHandler = function(event) {
+        event.stopPropagation ? event.stopPropagation() : event.cancelBubble = true; // jshint ignore:line
+        showPreviousImage();
+    };
+    var nextButtonClickHandler = function(event) {
+        event.stopPropagation ? event.stopPropagation() : event.cancelBubble = true; // jshint ignore:line
+        showNextImage();
+    };
+    var closeButtonClickHandler = function(event) {
+        event.stopPropagation ? event.stopPropagation() : event.cancelBubble = true; // jshint ignore:line
+        hideOverlay();
+    };
+    var touchstartHandler = function(event) {
+        touch.count++;
+        if (touch.count > 1) {
+            touch.multitouch = true;
+        }
+        // Save x and y axis position
+        touch.startX = event.changedTouches[0].pageX;
+        touch.startY = event.changedTouches[0].pageY;
+    };
+    var touchmoveHandler = function(event) {
+        // If action was already triggered or multitouch return
+        if (touchFlag || touch.multitouch) {
+            return;
+        }
+        event.preventDefault ? event.preventDefault() : event.returnValue = false; // jshint ignore:line
+        var touchEvent = event.touches[0] || event.changedTouches[0];
+        // Move at least 40 pixels to trigger the action
+        if (touchEvent.pageX - touch.startX > 40) {
+            touchFlag = true;
+            showPreviousImage();
+        } else if (touchEvent.pageX - touch.startX < -40) {
+            touchFlag = true;
+            showNextImage();
+        // Move 100 pixels up to close the overlay
+        } else if (touch.startY - touchEvent.pageY > 100) {
+            hideOverlay();
+        }
+    };
+    var touchendHandler = function() {
+        touch.count--;
+        if (touch.count <= 0) {
+            touch.multitouch = false;
+        }
+        touchFlag = false;
+    };
+
+    var trapFocusInsideOverlay = function(event) {
+        if (overlay.style.display === 'block' && (overlay.contains && !overlay.contains(event.target))) {
+            event.stopPropagation();
+            initFocus();
+        }
+    };
+
+    // forEach polyfill for IE8
+    // http://stackoverflow.com/a/14827443/1077846
+    /* jshint ignore:start */
+    if (![].forEach) {
+        Array.prototype.forEach = function(callback, thisArg) {
+            for (var i = 0; i < this.length; i++) {
+                callback.call(thisArg, this[i], i, this);
+            }
+        };
+    }
+
+    // filter polyfill for IE8
+    // https://gist.github.com/eliperelman/1031656
+    if (![].filter) {
+        Array.prototype.filter = function(a, b, c, d, e) {
+            c = this;
+            d = [];
+            for (e = 0; e < c.length; e++)
+                a.call(b, c[e], e, c) && d.push(c[e]);
+            return d;
+        };
+    }
+    /* jshint ignore:end */
+
+    // Script entry point
+    function run(selector, userOptions) {
+        // Fill supports object
+        supports.transforms = testTransformsSupport();
+        supports.svg = testSVGSupport();
+
+        buildOverlay();
+        removeFromCache(selector);
+        bindImageClickListeners(selector, userOptions);
+    }
+
+    function bindImageClickListeners(selector, userOptions) {
+        // For each gallery bind a click event to every image inside it
+        var galleryNodeList = document.querySelectorAll(selector);
+        var selectorData = {
+            galleries: [],
+            nodeList: galleryNodeList
+        };
+        data[selector] = selectorData;
+
+        [].forEach.call(galleryNodeList, function(galleryElement) {
+            if (userOptions && userOptions.filter) {
+                regex = userOptions.filter;
+            }
+
+            // Get nodes from gallery elements or single-element galleries
+            var tagsNodeList = [];
+            if (galleryElement.tagName === 'A') {
+                tagsNodeList = [galleryElement];
+            } else {
+                tagsNodeList = galleryElement.getElementsByTagName('a');
+            }
+
+            // Filter 'a' elements from those not linking to images
+            tagsNodeList = [].filter.call(tagsNodeList, function(element) {
+                return regex.test(element.href);
+            });
+            if (tagsNodeList.length === 0) {
+                return;
+            }
+
+            var gallery = [];
+            [].forEach.call(tagsNodeList, function(imageElement, imageIndex) {
+                var imageElementClickHandler = function(event) {
+                    event.preventDefault ? event.preventDefault() : event.returnValue = false; // jshint ignore:line
+                    prepareOverlay(gallery, userOptions);
+                    showOverlay(imageIndex);
+                };
+                var imageItem = {
+                    eventHandler: imageElementClickHandler,
+                    imageElement: imageElement
+                };
+                bind(imageElement, 'click', imageElementClickHandler);
+                gallery.push(imageItem);
+            });
+            selectorData.galleries.push(gallery);
+        });
+    }
+
+    function clearCachedData() {
+        for (var selector in data) {
+            if (data.hasOwnProperty(selector)) {
+                removeFromCache(selector);
+            }
+        }
+    }
+
+    function removeFromCache(selector) {
+        if (!data.hasOwnProperty(selector)) {
+            return;
+        }
+        var galleries = data[selector].galleries;
+        [].forEach.call(galleries, function(gallery) {
+            [].forEach.call(gallery, function(imageItem) {
+                unbind(imageItem.imageElement, 'click', imageItem.eventHandler);
+            });
+
+            if (currentGallery === gallery) {
+                currentGallery = [];
+            }
+        });
+
+        delete data[selector];
+    }
+
+    function buildOverlay() {
+        overlay = getByID('baguetteBox-overlay');
+        // Check if the overlay already exists
+        if (overlay) {
+            slider = getByID('baguetteBox-slider');
+            previousButton = getByID('previous-button');
+            nextButton = getByID('next-button');
+            closeButton = getByID('close-button');
+            return;
+        }
+        // Create overlay element
+        overlay = create('div');
+        overlay.setAttribute('role', 'dialog');
+        overlay.id = 'baguetteBox-overlay';
+        document.getElementsByTagName('body')[0].appendChild(overlay);
+        // Create gallery slider element
+        slider = create('div');
+        slider.id = 'baguetteBox-slider';
+        overlay.appendChild(slider);
+        // Create all necessary buttons
+        previousButton = create('button');
+        previousButton.setAttribute('type', 'button');
+        previousButton.id = 'previous-button';
+        previousButton.setAttribute('aria-label', 'Previous');
+        previousButton.innerHTML = supports.svg ? leftArrow : '&lt;';
+        overlay.appendChild(previousButton);
+
+        nextButton = create('button');
+        nextButton.setAttribute('type', 'button');
+        nextButton.id = 'next-button';
+        nextButton.setAttribute('aria-label', 'Next');
+        nextButton.innerHTML = supports.svg ? rightArrow : '&gt;';
+        overlay.appendChild(nextButton);
+
+        closeButton = create('button');
+        closeButton.setAttribute('type', 'button');
+        closeButton.id = 'close-button';
+        closeButton.setAttribute('aria-label', 'Close');
+        closeButton.innerHTML = supports.svg ? closeX : '&times;';
+        overlay.appendChild(closeButton);
+
+        previousButton.className = nextButton.className = closeButton.className = 'baguetteBox-button';
+
+        bindEvents();
+    }
+
+    function keyDownHandler(event) {
+        switch (event.keyCode) {
+        case 37: // Left arrow
+            showPreviousImage();
+            break;
+        case 39: // Right arrow
+            showNextImage();
+            break;
+        case 27: // Esc
+            hideOverlay();
+            break;
+        }
+    }
+
+    function bindEvents() {
+        bind(overlay, 'click', overlayClickHandler);
+        bind(previousButton, 'click', previousButtonClickHandler);
+        bind(nextButton, 'click', nextButtonClickHandler);
+        bind(closeButton, 'click', closeButtonClickHandler);
+        bind(overlay, 'touchstart', touchstartHandler);
+        bind(overlay, 'touchmove', touchmoveHandler);
+        bind(overlay, 'touchend', touchendHandler);
+        bind(document, 'focus', trapFocusInsideOverlay, true);
+    }
+
+    function unbindEvents() {
+        unbind(overlay, 'click', overlayClickHandler);
+        unbind(previousButton, 'click', previousButtonClickHandler);
+        unbind(nextButton, 'click', nextButtonClickHandler);
+        unbind(closeButton, 'click', closeButtonClickHandler);
+        unbind(overlay, 'touchstart', touchstartHandler);
+        unbind(overlay, 'touchmove', touchmoveHandler);
+        unbind(overlay, 'touchend', touchendHandler);
+        unbind(document, 'focus', trapFocusInsideOverlay, true);
+    }
+
+    function prepareOverlay(gallery, userOptions) {
+        // If the same gallery is being opened prevent from loading it once again
+        if (currentGallery === gallery) {
+            return;
+        }
+        currentGallery = gallery;
+        // Update gallery specific options
+        setOptions(userOptions);
+        // Empty slider of previous contents (more effective than .innerHTML = "")
+        while (slider.firstChild) {
+            slider.removeChild(slider.firstChild);
+        }
+        imagesElements.length = 0;
+
+        var imagesFiguresIds = [];
+        var imagesCaptionsIds = [];
+        // Prepare and append images containers and populate figure and captions IDs arrays
+        for (var i = 0, fullImage; i < gallery.length; i++) {
+            fullImage = create('div');
+            fullImage.className = 'full-image';
+            fullImage.id = 'baguette-img-' + i;
+            imagesElements.push(fullImage);
+
+            imagesFiguresIds.push('baguetteBox-figure-' + i);
+            imagesCaptionsIds.push('baguetteBox-figcaption-' + i);
+            slider.appendChild(imagesElements[i]);
+        }
+        overlay.setAttribute('aria-labelledby', imagesFiguresIds.join(' '));
+        overlay.setAttribute('aria-describedby', imagesCaptionsIds.join(' '));
+    }
+
+    function setOptions(newOptions) {
+        if (!newOptions) {
+            newOptions = {};
+        }
+        // Fill options object
+        for (var item in defaults) {
+            options[item] = defaults[item];
+            if (typeof newOptions[item] !== 'undefined') {
+                options[item] = newOptions[item];
+            }
+        }
+        /* Apply new options */
+        // Change transition for proper animation
+        slider.style.transition = slider.style.webkitTransition = (options.animation === 'fadeIn' ? 'opacity .4s ease' :
+            options.animation === 'slideIn' ? '' : 'none');
+        // Hide buttons if necessary
+        if (options.buttons === 'auto' && ('ontouchstart' in window || currentGallery.length === 1)) {
+            options.buttons = false;
+        }
+        // Set buttons style to hide or display them
+        previousButton.style.display = nextButton.style.display = (options.buttons ? '' : 'none');
+        // Set overlay color
+        try {
+            overlay.style.backgroundColor = options.overlayBackgroundColor;
+        } catch (e) {
+            // Silence the error and continue
+        }
+    }
+
+    function showOverlay(chosenImageIndex) {
+        if (options.noScrollbars) {
+            document.documentElement.style.overflowY = 'hidden';
+            document.body.style.overflowY = 'scroll';
+        }
+        if (overlay.style.display === 'block') {
+            return;
+        }
+
+        bind(document, 'keydown', keyDownHandler);
+        currentIndex = chosenImageIndex;
+        touch = {
+            count: 0,
+            startX: null,
+            startY: null
+        };
+        loadImage(currentIndex, function() {
+            preloadNext(currentIndex);
+            preloadPrev(currentIndex);
+        });
+
+        updateOffset();
+        overlay.style.display = 'block';
+        if (options.fullScreen) {
+            enterFullScreen();
+        }
+        // Fade in overlay
+        setTimeout(function() {
+            overlay.className = 'visible';
+            if (options.afterShow) {
+                options.afterShow();
+            }
+        }, 50);
+        if (options.onChange) {
+            options.onChange(currentIndex, imagesElements.length);
+        }
+        documentLastFocus = document.activeElement;
+        initFocus();
+    }
+
+    function initFocus() {
+        if (options.buttons) {
+            previousButton.focus();
+        } else {
+            closeButton.focus();
+        }
+    }
+
+    function enterFullScreen() {
+        if (overlay.requestFullscreen) {
+            overlay.requestFullscreen();
+        } else if (overlay.webkitRequestFullscreen) {
+            overlay.webkitRequestFullscreen();
+        } else if (overlay.mozRequestFullScreen) {
+            overlay.mozRequestFullScreen();
+        }
+    }
+
+    function exitFullscreen() {
+        if (document.exitFullscreen) {
+            document.exitFullscreen();
+        } else if (document.mozCancelFullScreen) {
+            document.mozCancelFullScreen();
+        } else if (document.webkitExitFullscreen) {
+            document.webkitExitFullscreen();
+        }
+    }
+
+    function hideOverlay() {
+        if (options.noScrollbars) {
+            document.documentElement.style.overflowY = 'auto';
+            document.body.style.overflowY = 'auto';
+        }
+        if (overlay.style.display === 'none') {
+            return;
+        }
+
+        unbind(document, 'keydown', keyDownHandler);
+        // Fade out and hide the overlay
+        overlay.className = '';
+        setTimeout(function() {
+            overlay.style.display = 'none';
+            exitFullscreen();
+            if (options.afterHide) {
+                options.afterHide();
+            }
+        }, 500);
+        documentLastFocus.focus();
+    }
+
+    function loadImage(index, callback) {
+        var imageContainer = imagesElements[index];
+        var galleryItem = currentGallery[index];
+
+        // Return if the index exceeds prepared images in the overlay
+        // or if the current gallery has been changed / closed
+        if (imageContainer === undefined || galleryItem === undefined) {
+            return;
+        }
+
+        // If image is already loaded run callback and return
+        if (imageContainer.getElementsByTagName('img')[0]) {
+            if (callback) {
+                callback();
+            }
+            return;
+        }
+
+        // Get element reference, optional caption and source path
+        var imageElement = galleryItem.imageElement;
+        var thumbnailElement = imageElement.getElementsByTagName('img')[0];
+        var imageCaption = typeof options.captions === 'function' ?
+                            options.captions.call(currentGallery, imageElement) :
+                            imageElement.getAttribute('data-caption') || imageElement.title;
+        var imageSrc = getImageSrc(imageElement);
+
+        // Prepare figure element
+        var figure = create('figure');
+        figure.id = 'baguetteBox-figure-' + index;
+        figure.innerHTML = '<div class="baguetteBox-spinner">' +
+            '<div class="baguetteBox-double-bounce1"></div>' +
+            '<div class="baguetteBox-double-bounce2"></div>' +
+            '</div>';
+        // Insert caption if available
+        if (options.captions && imageCaption) {
+            var figcaption = create('figcaption');
+            figcaption.id = 'baguetteBox-figcaption-' + index;
+            figcaption.innerHTML = imageCaption;
+            figure.appendChild(figcaption);
+        }
+        imageContainer.appendChild(figure);
+
+        // Prepare gallery img element
+        var image = create('img');
+        image.onload = function() {
+            // Remove loader element
+            var spinner = document.querySelector('#baguette-img-' + index + ' .baguetteBox-spinner');
+            figure.removeChild(spinner);
+            if (!options.async && callback) {
+                callback();
+            }
+        };
+        image.setAttribute('src', imageSrc);
+        image.alt = thumbnailElement ? thumbnailElement.alt || '' : '';
+        if (options.titleTag && imageCaption) {
+            image.title = imageCaption;
+        }
+        figure.appendChild(image);
+
+
+        new RTP.PinchZoom(image, {});  //缩放插件
+        
+        // Run callback
+        if (options.async && callback) {
+            callback();
+        }
+    }
+
+    // Get image source location, mostly used for responsive images
+    function getImageSrc(image) {
+        // Set default image path from href
+        var result = image.href;
+        // If dataset is supported find the most suitable image
+        if (image.dataset) {
+            var srcs = [];
+            // Get all possible image versions depending on the resolution
+            for (var item in image.dataset) {
+                if (item.substring(0, 3) === 'at-' && !isNaN(item.substring(3))) {
+                    srcs[item.replace('at-', '')] = image.dataset[item];
+                }
+            }
+            // Sort resolutions ascending
+            var keys = Object.keys(srcs).sort(function(a, b) {
+                return parseInt(a, 10) < parseInt(b, 10) ? -1 : 1;
+            });
+            // Get real screen resolution
+            var width = window.innerWidth * window.devicePixelRatio;
+            // Find the first image bigger than or equal to the current width
+            var i = 0;
+            while (i < keys.length - 1 && keys[i] < width) {
+                i++;
+            }
+            result = srcs[keys[i]] || result;
+        }
+        return result;
+    }
+
+    // Return false at the right end of the gallery
+    function showNextImage() {
+        var returnValue;
+        // Check if next image exists
+        if (currentIndex <= imagesElements.length - 2) {
+            currentIndex++;
+            updateOffset();
+            preloadNext(currentIndex);
+            returnValue = true;
+        } else if (options.animation) {
+            slider.className = 'bounce-from-right';
+            setTimeout(function() {
+                slider.className = '';
+            }, 400);
+            returnValue = false;
+        }
+        if (options.onChange) {
+            options.onChange(currentIndex, imagesElements.length);
+        }
+        return returnValue;
+    }
+
+    // Return false at the left end of the gallery
+    function showPreviousImage() {
+        var returnValue;
+        // Check if previous image exists
+        if (currentIndex >= 1) {
+            currentIndex--;
+            updateOffset();
+            preloadPrev(currentIndex);
+            returnValue = true;
+        } else if (options.animation) {
+            slider.className = 'bounce-from-left';
+            setTimeout(function() {
+                slider.className = '';
+            }, 400);
+            returnValue = false;
+        }
+        if (options.onChange) {
+            options.onChange(currentIndex, imagesElements.length);
+        }
+        return returnValue;
+    }
+
+    function updateOffset() {
+        var offset = -currentIndex * 100 + '%';
+        if (options.animation === 'fadeIn') {
+            slider.style.opacity = 0;
+            setTimeout(function() {
+                /* jshint -W030 */
+                supports.transforms ?
+                    slider.style.transform = slider.style.webkitTransform = 'translate3d(' + offset + ',0,0)'
+                    : slider.style.left = offset;
+                slider.style.opacity = 1;
+            }, 400);
+        } else {
+            /* jshint -W030 */
+            supports.transforms ?
+                slider.style.transform = slider.style.webkitTransform = 'translate3d(' + offset + ',0,0)'
+                : slider.style.left = offset;
+        }
+    }
+
+    // CSS 3D Transforms test
+    function testTransformsSupport() {
+        var div = create('div');
+        return typeof div.style.perspective !== 'undefined' || typeof div.style.webkitPerspective !== 'undefined';
+    }
+
+    // Inline SVG test
+    function testSVGSupport() {
+        var div = create('div');
+        div.innerHTML = '<svg/>';
+        return (div.firstChild && div.firstChild.namespaceURI) === 'http://www.w3.org/2000/svg';
+    }
+
+    function preloadNext(index) {
+        if (index - currentIndex >= options.preload) {
+            return;
+        }
+        loadImage(index + 1, function() {
+            preloadNext(index + 1);
+        });
+    }
+
+    function preloadPrev(index) {
+        if (currentIndex - index >= options.preload) {
+            return;
+        }
+        loadImage(index - 1, function() {
+            preloadPrev(index - 1);
+        });
+    }
+
+    function bind(element, event, callback, useCapture) {
+        if (element.addEventListener) {
+            element.addEventListener(event, callback, useCapture);
+        } else {
+            // IE8 fallback
+            element.attachEvent('on' + event, function(event) {
+                // `event` and `event.target` are not provided in IE8
+                event = event || window.event;
+                event.target = event.target || event.srcElement;
+                callback(event);
+            });
+        }
+    }
+
+    function unbind(element, event, callback, useCapture) {
+        if (element.removeEventListener) {
+            element.removeEventListener(event, callback, useCapture);
+        } else {
+            // IE8 fallback
+            element.detachEvent('on' + event, callback);
+        }
+    }
+
+    function getByID(id) {
+        return document.getElementById(id);
+    }
+
+    function create(element) {
+        return document.createElement(element);
+    }
+
+    function destroyPlugin() {
+        unbindEvents();
+        clearCachedData();
+        unbind(document, 'keydown', keyDownHandler);
+        document.getElementsByTagName('body')[0].removeChild(document.getElementById('baguetteBox-overlay'));
+        data = {};
+        currentGallery = [];
+        currentIndex = 0;
+    }
+
+    return {
+        run: run,
+        destroy: destroyPlugin,
+        showNext: showNextImage,
+        showPrevious: showPreviousImage
+    };
+}));

File diff suppressed because it is too large
+ 44 - 0
edit-backstage/hot_online/js/chunk-vendors.27bf9d68.js


File diff suppressed because it is too large
+ 1 - 0
edit-backstage/hot_online/js/chunk-vendors.27bf9d68.js.map


File diff suppressed because it is too large
+ 44 - 0
edit-backstage/hot_online/js/chunk-vendors.fb706b27.js


File diff suppressed because it is too large
+ 1 - 0
edit-backstage/hot_online/js/chunk-vendors.fb706b27.js.map


File diff suppressed because it is too large
+ 1 - 0
edit-backstage/hot_online/js/hammer.min.js


File diff suppressed because it is too large
+ 4 - 0
edit-backstage/hot_online/js/jquery-2.1.1.min.js


+ 392 - 0
edit-backstage/hot_online/js/main.js

@@ -0,0 +1,392 @@
+$(window).on("load", function () {
+    //获取页面url后面的参数
+    var number = function (variable) {
+        var query = window.location.search.substring(1);
+        var vars = query.split("&");
+        for (var i = 0; i < vars.length; i++) {
+            var pair = vars[i].split("=");
+            if (pair[0] == variable) { return pair[1]; }
+        }
+        return (false);
+    };
+    var HotContent = function (url) {
+        this.screenHeight = $(document.body).height() * 0.8;
+        this.url = url + "?m=" + new Date().getTime();
+        this.data = null;
+        this.wrap = {
+            images: "wrap-img",
+            video: "wrap-video",
+            model: "wrap-model",
+            iframe: "wrap-iframe"
+        }
+        this.ajax();
+    };
+    HotContent.prototype.ajax = function () {
+        var that = this;
+        $.ajax({
+            url: that.url,
+            dataType: "json",
+            success: function (data) {
+                that.data = data;
+                that.init();
+                //移动端自动播放
+                setTimeout(function () {
+                    window.parent.loaddingSuccess && window.parent.loaddingSuccess();
+                }, 16)
+            },
+            error: function (msg) {
+                console.log("错误:" + msg);
+            }
+        })
+    };
+
+    HotContent.prototype.init = function () {
+        var num = number("m");
+        this.data[num].images ? this.createElements(this.data[num].images, this.wrap.images) : '';
+        this.data[num].video ? this.createElements(this.data[num].video, this.wrap.video) : '';
+        this.data[num].model ? this.createElements(this.data[num].model, this.wrap.model) : '';
+        this.data[num].iframe ? this.createElements(this.data[num].iframe, this.wrap.iframe) : '';
+        this.data[num].backgroundMusic ? this.createAudio(this.data[num].backgroundMusic) : '';
+        this.footer();
+        this.onlyType();
+        //加载视频
+        $.getScript("js/vedio.js");
+
+        //默认初始化显示的类型
+        this.InitialDefaultDisplay($(".footer-btn > button:first").attr("data-name"));
+        var that = this;
+        $(".footer-btn > button").on("click", function () {
+            that.InitialDefaultDisplay($(this).attr("data-name"));
+        });
+        //取消pc 鼠标滑动的时候出现的bug
+        $(".o-slider-header img").on("mousedown", function (e) {
+            e.preventDefault();
+            window.move = false;  // fyz 记录鼠标
+        })
+    };
+    HotContent.prototype.InitialDefaultDisplay = function (id) {
+        $("." + id).show().siblings().hide();
+        $('[data-name=' + id + ']').addClass("active").siblings().removeClass("active");
+        if ($("." + id).find("video").length < 1) {
+            if ($("." + id).siblings().find("video").length > 0) $("." + id).siblings().find("video")[0].pause();
+        }
+    };
+
+    HotContent.prototype.createAudio = function (url) {
+        //20190923修改 ios 微信浏览器 iframe内 自动播放audio 
+        url='http://'+url.replace('http://','').replace('http://','')
+        var _audio = '<audio id="HotBgMuisc" autoplay loop src='+url+'></audio>';   
+        $("body").append(_audio);
+        var globalAudio=document.getElementById("HotBgMuisc"); 
+        //ios其他浏览器需添加一个事件
+        document.addEventListener("touchstart", function() {globalAudio.play()});//ios需要加个事件才能播放 不能自动播放;如果还有浏览器不行,换成别的交互事件
+        function autoPlayAudio() {
+          try {
+            window.parent.wx.config({
+                // 配置信息, 即使不正确也能使用 wx.ready
+                debug: false,
+                appId: '',
+                timestamp: 1,
+                nonceStr: '',
+                signature: '',
+                jsApiList: []
+              });
+              window.parent.wx.ready(function() {                      
+                globalAudio.play();
+              });
+          } catch (error) {
+              
+          }
+        };
+        autoPlayAudio();
+       
+    };
+
+    //创建主要的内容 图片 视频 网页 模型
+    HotContent.prototype.createElements = function (data, classname) {
+        var contioner = $(".contioner");
+        function createChildrenElements() {
+            var children = [];
+            switch (classname) {
+                case this.wrap.images:
+                    data.forEach(function (currentValue) { 
+                        if(!currentValue) return
+                        currentValue = currentValue.replace("http://",'').replace("http://",'')
+                        children.push('<img src=http://' + currentValue + ' alt=图片 />'); 
+                    })
+                    break;
+                case this.wrap.video:
+                    data.forEach(function (currentValue) { 
+                        if(!currentValue) return
+                        currentValue.url= 'http://'+ currentValue.url.replace("http://",'').replace("http://",'')
+                        children.push(videoEle(currentValue.url, currentValue.img)); })
+                    break;
+                case this.wrap.model:
+                    data.forEach(function (currentValue) { children.push('<iframe src=' + currentValue + ' ></iframe>'); })
+                    break;
+                case this.wrap.iframe:
+                    data.forEach(function (currentValue) { children.push('<iframe src=' + currentValue + ' ></iframe>'); })
+                    break;
+            }
+            return children;
+        }
+
+        function videoEle(src, img) {
+
+            if (/Android|webOS|iPhone|iPod|BlackBerry/i.test(navigator.userAgent)) {
+                return '<div class="video-index" >\
+                <div class="js-video">\
+                    <video class="js-media" poster='+ img + ' webkit-playsinline="true" x-webkit-airplay="true" playsinline="true" >\
+                          <source src='+ src + ' type="video/mp4" />\
+                        <p>你的浏览器不支持 HTML5 Video。</p>\
+                    </video>\
+                    <i data-playPause class="playPause fa  ui-icon">\
+                        <span></span>\
+                        <div class="ui-icon-before">\
+                            <div class="ui-icon-after"></div>\
+                        </div>\
+                    </i>\
+                    <div class="ui">\
+                      <div>\
+                        <span class="timeDisplay"><i data-currentTime>0:00</i> / <i data-duration>0:00</i></span>\
+                      </div>\
+                      <div>\
+                      <div data-progress class="progress">\
+                        <div data-buffer class="progress-buffer"></div>\
+                        <div data-time class="progress-time"></div>\
+                      </div><!-- progress -->\
+                    </div>\
+                      <div>\
+                        <div data-mute class="fa fa-volume-up ui-icon">\
+                        </div>\
+                      </div>\
+                      <div>\
+                        <div data-volume="100" class="volumeControl"><span class="ui-slider-handle"></span></div>\
+                      </div>\
+                    </div>\
+                    <i data-fullscreen class="fullscreen iconicfill-fullscreen" title="fullscreen"></i>\
+                </div>\
+            </div>';
+            } else {
+                return '<video src=' + src + ' controls="controls" autoplay poster=' + img + '></video>'
+            }
+        }
+
+        function singleElement() {
+            var SE = createChildrenElements.call(this);
+            contioner.append('<div class=' + classname + '><div class="o-slider-header">' + SE + '</div></div>').css("height", this.screenHeight);
+            contioner.find('img').each(function(index, elem) {
+                let viewer = returnViewer(elem)
+                elem.addEventListener('click', hotImgDown(elem,viewer));
+            })
+        };
+        
+        function doubleElement() {
+            var DE = createChildrenElements.call(this);
+            var _doubleElement = this.generateElements().mainElements(classname, this.generateElements(data, DE).multiElement());
+            contioner.append(_doubleElement).css("height", this.screenHeight)
+
+            contioner.find('img').each(function(index, elem) {
+                let viewer = returnViewer(elem)
+                elem.addEventListener('click', hotImgDown(elem,viewer));
+            })
+            this.build(classname);
+        };
+
+        function returnViewer(elem){
+            let viewer = new Viewer(elem,{
+                toolbar:{
+                    zoomIn:true,
+                    zoomOut:true,
+                    oneToOne:true,
+                    reset:true,
+                    play:{
+                        show:true,
+                        size:'large'
+                    },
+                    rotateLeft:true,
+                    rotateRight:true,
+                    flipHorizontal:true,
+                    flipVertical:true
+                },
+                hide(){
+                    var $close = $(parent.window.document.getElementById('closepop'))
+                    $close.css({
+                        'pointer-events': 'auto',
+                        'opacity':1
+                    })
+                }
+            })
+            return viewer
+        }
+
+        function createViewer(item,viewer){
+            viewer && viewer.zoomTo(0)
+        }
+
+        function hotImgDown(elem){
+            return function(e){
+                createViewer(elem)
+                console.log()
+                var $close = $(parent.window.document.getElementById('closepop'))
+                $close.css({
+                    'pointer-events': 'none',
+                    'opacity':0
+                })
+                window.move = false;
+            }
+        }
+
+        function hotImgMove(elem){
+            return function(){
+                elem.preventDefault()
+                return false
+                window.move = true;
+                console.log(1);
+            }
+        }
+
+        function hotImgUp(elem){
+            return function(){
+                if(window.move) return;
+                if(elem.scale) {  // 图片已放大
+                    // elem.style.maxHeight = '100%';
+                    elem.classList.remove('hotImageClick');
+                    elem.scale = false;
+                }else{
+                    // elem.style.maxHeight = '130%';
+                    elem.classList.add('hotImageClick');
+                    elem.scale = true;
+                }
+            }
+        }
+
+        if (data.length > 1) {
+            doubleElement.call(this, classname);
+        }
+        else {
+            singleElement.call(this, classname);
+        }
+    };
+
+    HotContent.prototype.generateElements = function (data, ele) {
+        function combination(SingleOriginal) {
+            if (!data) return;
+            return '<div class="o-slider--item"  >\
+                <div class="o-slider-bg">\
+                  <div  class="o-slider-header" >'
+                + SingleOriginal +
+                '</div>\
+                </div>\
+              </div>';
+        }
+        return {
+            mainElements: function (classname, children) {
+                return '<div class=' + classname + '>\
+                  <div class="o-sliderContainer" id=pbSliderWrap-'+ classname + '>\
+                    <div class="o-slider" id=pbSlider-'+ classname + '>'
+                    + children +
+                    '</div>\
+                  </div>\
+                </div>';
+            },
+            multiElement: function () {
+                var _multiElement = "";
+                for (var i = 0; i < data.length; i++) {
+                    _multiElement += combination(ele[i]);
+                }
+                return _multiElement;
+            }
+        };
+    };
+    //启动轮播
+    HotContent.prototype.build = function (id) {
+        var screenHeight = this.screenHeight;
+        $('#pbSlider-' + id).pbTouchSlider({
+            slider_Wrap: '#pbSliderWrap-' + id,
+            slider_Threshold: 10,
+            slider_Speed: 600,
+            slider_Ease: 'ease-out',
+            slider_Drag: false,
+            slider_Arrows: {
+                enabled: true
+            },
+
+            slider_Dots: {
+                class: '.o-slider-pagination',
+                enabled: true,
+                preview: false
+            },
+            slider_Breakpoints: {
+                default: {
+                    height: screenHeight
+                },
+                tablet: {
+                    height: screenHeight,
+                    media: 1024
+                },
+                smartphone: {
+                    height: screenHeight,
+                    media: 768
+                }
+            }
+        });
+    };
+    // 启动图片的放大缩小
+    HotContent.prototype.Zoom = function (classname) {
+        // if(/Android|webOS|iPhone|iPod|BlackBerry/i.test(navigator.userAgent)){
+        //   if(classname != "wrap-img") return;
+        //   $("."+classname).find(".o-slider-header").each(function(){
+        //     new RTP.PinchZoom(this, {});
+        //   })
+        // }
+        if (true) {
+            if (classname != "wrap-img") return;
+            $("." + classname).find(".o-slider-header").each(function () {
+                new RTP.PinchZoom(this, {});
+            })
+        }
+    };
+
+
+    HotContent.prototype.footer = function () {
+        $(".footer").append(this.footerCreateEle());
+    };
+    HotContent.prototype.footerCreateEle = function () {
+        var num = number("m");
+        var footerH3 = this.data[num].title || "";
+        var footerText = this.data[num].content || "";
+        var footerBtn = "";
+        var btnIcon = {
+            "img": ["img-icon", "图片"],
+            "video": ["video-icon", "视频"],
+            "model": ["model-icon", "3D"],
+            "iframe": ["iframe-icon", "网页"]
+        };
+        function btnBuild(id, classname, text) {
+            return '<button data-name=' + id + '><i class=' + classname + '></i>' + text + '</button>'
+        }
+
+        this.data[num].model ? footerBtn += btnBuild(this.wrap.model, btnIcon.model[0], btnIcon.model[1]) : '';
+        this.data[num].video ? footerBtn += btnBuild(this.wrap.video, btnIcon.video[0], btnIcon.video[1]) : '';
+        this.data[num].iframe ? footerBtn += btnBuild(this.wrap.iframe, btnIcon.iframe[0], btnIcon.iframe[1]) : '';
+        this.data[num].images ? footerBtn += btnBuild(this.wrap.images, btnIcon.img[0], btnIcon.img[1]) : '';
+
+        return '<div class="footer-title"><h3>' + footerH3 + '</h3><div class=footer-btn>' + footerBtn + '</div></div>\
+                        <div class=footer-text>'+ footerText + '<div class=footer-mask></div></div>';
+    }
+    HotContent.prototype.onlyType = function () {
+        var footerBtn = $(".footer-btn");
+        if (footerBtn.children().length > 1) return;
+        footerBtn.hide();
+        if (/Android|webOS|iPhone|iPod|BlackBerry/i.test(navigator.userAgent)) {
+            if (!this.data[number("m")].content || !this.data[number("m")].title) {
+                $(".contioner").css("height", $(document.body).height() * 0.96);
+            }
+            $(".footer-btn").hide();
+        }
+    }
+
+    new HotContent("/data/" + number("id") + "/hot/js/data.js");
+    //new HotContent("http://192.168.0.41:8080/SuperTwo/data/"+number("id")+"/hot/js/data.js");
+})

File diff suppressed because it is too large
+ 1 - 0
edit-backstage/hot_online/js/modernizr.min.js


+ 13 - 0
edit-backstage/hot_online/js/personage.js

@@ -0,0 +1,13 @@
+var data = [
+	{
+		"personage":"于敏",
+		"text":[
+			"于敏",
+			"于敏1926年8月16日生于河北宁河,父亲是一位小职员。于敏的青少年时代是在抗日战争时期的沦陷区度过的,亡国奴的屈辱生活给他留下了惨痛的记忆。",
+			"1944年,于敏考入北大工学院机电系,出于对物理学的热爱,1946年转入理学院物理系,很快展现出理论物理方面的天赋,以惊人的记忆力和领悟力得到教授们的赞赏。1951年,于敏被钱三强、彭桓武调入中科院近代物理研究所,从事原子核理论研究,填补了国内该领域的空白。",
+			"1961年,钱三强组织开展氢弹理论研究,于敏放弃了光明的学术前途,隐姓埋名转向氢弹研究工作。氢弹研究资料在国际上受到重重封锁,于敏全身心投入研究,由于操劳过度三次休克。通过大量计算和研究,于敏等人设计了完整物理方案,使我国在短时间内独立掌握了氢弹原理,成为世界上从原子弹到氢弹耗时最短的国家。",
+			"氢弹成功后,于敏投身我国第二代核武器理论研究,致力于核武器小型化和中子弹设计。在研制核武器的权威物理学家中,于敏几乎是唯一一个未曾留过学的人,被称为中国的“国产土专家一号”。1999年,中共中央、国务院、中央军委向于敏颁发了“两弹一星”功勋奖章。",
+			"氢弹成功后,于敏投身我国第二代核武器理论研究,致力于核武器小型化和中子弹设计。在研制核武器的权威物理学家中,于敏几乎是唯一一个未曾留过学的人,被称为中国的“国产土专家一号”。1999年,中共中央、国务院、中央军委向于敏颁发了“两弹一星”功勋奖章。"
+		]
+	}
+]

+ 757 - 0
edit-backstage/hot_online/js/pinchzoom.js

@@ -0,0 +1,757 @@
+/*
+
+    Copyright (c) Manuel Stofer 2013 - rtp.ch - RTP.PinchZoom.js
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in
+    all copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+    THE SOFTWARE.
+
+*/
+
+
+/*global jQuery, console, define, setTimeout, window*/
+(function () {
+    'use strict';
+    var definePinchZoom = function ($) {
+
+        /**
+         * Pinch zoom using jQuery
+         * @version 0.0.2
+         * @author Manuel Stofer <mst@rtp.ch>
+         * @param el
+         * @param options
+         * @constructor
+         */
+        var PinchZoom = function (el, options) {
+                this.el = $(el);
+                this.zoomFactor = 1;
+                this.lastScale = 1;
+                this.offset = {
+                    x: 0,
+                    y: 0
+                };
+                this.options = $.extend({}, this.defaults, options);
+                this.setupMarkup();
+                this.bindEvents();
+                this.update();
+                // default enable.
+                this.enable();
+
+            },
+            sum = function (a, b) {
+                return a + b;
+            },
+            isCloseTo = function (value, expected) {
+                return value > expected - 0.01 && value < expected + 0.01;
+            };
+
+        PinchZoom.prototype = {
+
+            defaults: {
+                tapZoomFactor: 2,
+                zoomOutFactor: 1.3,
+                animationDuration: 300,
+                maxZoom: 4,
+                minZoom: 0.5,
+                lockDragAxis: false,
+                use2d: true,
+                zoomStartEventName: 'pz_zoomstart',
+                zoomEndEventName: 'pz_zoomend',
+                dragStartEventName: 'pz_dragstart',
+                dragEndEventName: 'pz_dragend',
+                doubleTapEventName: 'pz_doubletap'
+            },
+
+            /**
+             * Event handler for 'dragstart'
+             * @param event
+             */
+            handleDragStart: function (event) {
+                this.el.trigger(this.options.dragStartEventName);
+                this.stopAnimation();
+                this.lastDragPosition = false;
+                this.hasInteraction = true;
+                this.handleDrag(event);
+            },
+
+            /**
+             * Event handler for 'drag'
+             * @param event
+             */
+            handleDrag: function (event) {
+
+                if (this.zoomFactor > 1.0) {
+                    var touch = this.getTouches(event)[0];
+                    this.drag(touch, this.lastDragPosition);
+                    this.offset = this.sanitizeOffset(this.offset);
+                    this.lastDragPosition = touch;
+                }
+            },
+
+            handleDragEnd: function () {
+                this.el.trigger(this.options.dragEndEventName);
+                this.end();
+            },
+
+            /**
+             * Event handler for 'zoomstart'
+             * @param event
+             */
+            handleZoomStart: function (event) {
+                this.el.trigger(this.options.zoomStartEventName);
+                this.stopAnimation();
+                this.lastScale = 1;
+                this.nthZoom = 0;
+                this.lastZoomCenter = false;
+                this.hasInteraction = true;
+            },
+
+            /**
+             * Event handler for 'zoom'
+             * @param event
+             */
+            handleZoom: function (event, newScale) {
+
+                // a relative scale factor is used
+                var touchCenter = this.getTouchCenter(this.getTouches(event)),
+                    scale = newScale / this.lastScale;
+                this.lastScale = newScale;
+
+                // the first touch events are thrown away since they are not precise
+                this.nthZoom += 1;
+                if (this.nthZoom > 3) {
+
+                    this.scale(scale, touchCenter);
+                    this.drag(touchCenter, this.lastZoomCenter);
+                }
+                this.lastZoomCenter = touchCenter;
+            },
+
+            handleZoomEnd: function () {
+                this.el.trigger(this.options.zoomEndEventName);
+                this.end();
+            },
+
+            /**
+             * Event handler for 'doubletap'
+             * @param event
+             */
+            handleDoubleTap: function (event) {
+                var center = this.getTouches(event)[0],
+                    zoomFactor = this.zoomFactor > 1 ? 1 : this.options.tapZoomFactor,
+                    startZoomFactor = this.zoomFactor,
+                    updateProgress = (function (progress) {
+                        this.scaleTo(startZoomFactor + progress * (zoomFactor - startZoomFactor), center);
+                    }).bind(this);
+
+                if (this.hasInteraction) {
+                    return;
+                }
+                if (startZoomFactor > zoomFactor) {
+                    center = this.getCurrentZoomCenter();
+                }
+
+                this.animate(this.options.animationDuration, updateProgress, this.swing);
+                this.el.trigger(this.options.doubleTapEventName);
+            },
+
+            /**
+             * Max / min values for the offset
+             * @param offset
+             * @return {Object} the sanitized offset
+             */
+            sanitizeOffset: function (offset) {
+                var maxX = (this.zoomFactor - 1) * this.getContainerX(),
+                    maxY = (this.zoomFactor - 1) * this.getContainerY(),
+                    maxOffsetX = Math.max(maxX, 0),
+                    maxOffsetY = Math.max(maxY, 0),
+                    minOffsetX = Math.min(maxX, 0),
+                    minOffsetY = Math.min(maxY, 0);
+
+                return {
+                    x: Math.min(Math.max(offset.x, minOffsetX), maxOffsetX),
+                    y: Math.min(Math.max(offset.y, minOffsetY), maxOffsetY)
+                };
+            },
+
+            /**
+             * Scale to a specific zoom factor (not relative)
+             * @param zoomFactor
+             * @param center
+             */
+            scaleTo: function (zoomFactor, center) {
+                this.scale(zoomFactor / this.zoomFactor, center);
+            },
+
+            /**
+             * Scales the element from specified center
+             * @param scale
+             * @param center
+             */
+            scale: function (scale, center) {
+                scale = this.scaleZoomFactor(scale);
+                this.addOffset({
+                    x: (scale - 1) * (center.x + this.offset.x),
+                    y: (scale - 1) * (center.y + this.offset.y)
+                });
+            },
+
+            /**
+             * Scales the zoom factor relative to current state
+             * @param scale
+             * @return the actual scale (can differ because of max min zoom factor)
+             */
+            scaleZoomFactor: function (scale) {
+                var originalZoomFactor = this.zoomFactor;
+                this.zoomFactor *= scale;
+                this.zoomFactor = Math.min(this.options.maxZoom, Math.max(this.zoomFactor, this.options.minZoom));
+                return this.zoomFactor / originalZoomFactor;
+            },
+
+            /**
+             * Drags the element
+             * @param center
+             * @param lastCenter
+             */
+            drag: function (center, lastCenter) {
+                if (lastCenter) {
+                  if(this.options.lockDragAxis) {
+                    // lock scroll to position that was changed the most
+                    if(Math.abs(center.x - lastCenter.x) > Math.abs(center.y - lastCenter.y)) {
+                      this.addOffset({
+                        x: -(center.x - lastCenter.x),
+                        y: 0
+                      });
+                    }
+                    else {
+                      this.addOffset({
+                        y: -(center.y - lastCenter.y),
+                        x: 0
+                      });
+                    }
+                  }
+                  else {
+                    this.addOffset({
+                      y: -(center.y - lastCenter.y),
+                      x: -(center.x - lastCenter.x)
+                    });
+                  }
+                }
+            },
+
+            /**
+             * Calculates the touch center of multiple touches
+             * @param touches
+             * @return {Object}
+             */
+            getTouchCenter: function (touches) {
+                return this.getVectorAvg(touches);
+            },
+
+            /**
+             * Calculates the average of multiple vectors (x, y values)
+             */
+            getVectorAvg: function (vectors) {
+                return {
+                    x: vectors.map(function (v) { return v.x; }).reduce(sum) / vectors.length,
+                    y: vectors.map(function (v) { return v.y; }).reduce(sum) / vectors.length
+                };
+            },
+
+            /**
+             * Adds an offset
+             * @param offset the offset to add
+             * @return return true when the offset change was accepted
+             */
+            addOffset: function (offset) {
+                this.offset = {
+                    x: this.offset.x + offset.x,
+                    y: this.offset.y + offset.y
+                };
+            },
+
+            sanitize: function () {
+                if (this.zoomFactor < this.options.zoomOutFactor) {
+                    this.zoomOutAnimation();
+                } else if (this.isInsaneOffset(this.offset)) {
+                    this.sanitizeOffsetAnimation();
+                }
+            },
+
+            /**
+             * Checks if the offset is ok with the current zoom factor
+             * @param offset
+             * @return {Boolean}
+             */
+            isInsaneOffset: function (offset) {
+                var sanitizedOffset = this.sanitizeOffset(offset);
+                return sanitizedOffset.x !== offset.x ||
+                    sanitizedOffset.y !== offset.y;
+            },
+
+            /**
+             * Creates an animation moving to a sane offset
+             */
+            sanitizeOffsetAnimation: function () {
+                var targetOffset = this.sanitizeOffset(this.offset),
+                    startOffset = {
+                        x: this.offset.x,
+                        y: this.offset.y
+                    },
+                    updateProgress = (function (progress) {
+                        this.offset.x = startOffset.x + progress * (targetOffset.x - startOffset.x);
+                        this.offset.y = startOffset.y + progress * (targetOffset.y - startOffset.y);
+                        this.update();
+                    }).bind(this);
+
+                this.animate(
+                    this.options.animationDuration,
+                    updateProgress,
+                    this.swing
+                );
+            },
+
+            /**
+             * Zooms back to the original position,
+             * (no offset and zoom factor 1)
+             */
+            zoomOutAnimation: function () {
+                var startZoomFactor = this.zoomFactor,
+                    zoomFactor = 1,
+                    center = this.getCurrentZoomCenter(),
+                    updateProgress = (function (progress) {
+                        this.scaleTo(startZoomFactor + progress * (zoomFactor - startZoomFactor), center);
+                    }).bind(this);
+
+                this.animate(
+                    this.options.animationDuration,
+                    updateProgress,
+                    this.swing
+                );
+            },
+
+            /**
+             * Updates the aspect ratio
+             */
+            updateAspectRatio: function () {
+                this.setContainerY(this.getContainerX() / this.getAspectRatio());
+            },
+
+            /**
+             * Calculates the initial zoom factor (for the element to fit into the container)
+             * @return the initial zoom factor
+             */
+            getInitialZoomFactor: function () {
+                // use .offsetWidth instead of width()
+                // because jQuery-width() return the original width but Zepto-width() will calculate width with transform.
+                // the same as .height()
+                return this.container[0].offsetWidth / this.el[0].offsetWidth;
+            },
+
+            /**
+             * Calculates the aspect ratio of the element
+             * @return the aspect ratio
+             */
+            getAspectRatio: function () {
+                return this.el[0].offsetWidth / this.el[0].offsetHeight;
+            },
+
+            /**
+             * Calculates the virtual zoom center for the current offset and zoom factor
+             * (used for reverse zoom)
+             * @return {Object} the current zoom center
+             */
+            getCurrentZoomCenter: function () {
+
+                // uses following formula to calculate the zoom center x value
+                // offset_left / offset_right = zoomcenter_x / (container_x - zoomcenter_x)
+                var length = this.container[0].offsetWidth * this.zoomFactor,
+                    offsetLeft  = this.offset.x,
+                    offsetRight = length - offsetLeft -this.container[0].offsetWidth,
+                    widthOffsetRatio = offsetLeft / offsetRight,
+                    centerX = widthOffsetRatio * this.container[0].offsetWidth / (widthOffsetRatio + 1),
+
+                // the same for the zoomcenter y
+                    height = this.container[0].offsetHeight * this.zoomFactor,
+                    offsetTop  = this.offset.y,
+                    offsetBottom = height - offsetTop - this.container[0].offsetHeight,
+                    heightOffsetRatio = offsetTop / offsetBottom,
+                    centerY = heightOffsetRatio * this.container[0].offsetHeight / (heightOffsetRatio + 1);
+
+                // prevents division by zero
+                if (offsetRight === 0) { centerX = this.container[0].offsetWidth; }
+                if (offsetBottom === 0) { centerY = this.container[0].offsetHeight; }
+
+                return {
+                    x: centerX,
+                    y: centerY
+                };
+            },
+
+            canDrag: function () {
+                return !isCloseTo(this.zoomFactor, 1);
+            },
+
+            /**
+             * Returns the touches of an event relative to the container offset
+             * @param event
+             * @return array touches
+             */
+            getTouches: function (event) {
+                var position = this.container.offset();
+                return Array.prototype.slice.call(event.touches).map(function (touch) {
+                    return {
+                        x: touch.pageX - position.left,
+                        y: touch.pageY - position.top
+                    };
+                });
+            },
+
+            /**
+             * Animation loop
+             * does not support simultaneous animations
+             * @param duration
+             * @param framefn
+             * @param timefn
+             * @param callback
+             */
+            animate: function (duration, framefn, timefn, callback) {
+                var startTime = new Date().getTime(),
+                    renderFrame = (function () {
+                        if (!this.inAnimation) { return; }
+                        var frameTime = new Date().getTime() - startTime,
+                            progress = frameTime / duration;
+                        if (frameTime >= duration) {
+                            framefn(1);
+                            if (callback) {
+                                callback();
+                            }
+                            this.update();
+                            this.stopAnimation();
+                            this.update();
+                        } else {
+                            if (timefn) {
+                                progress = timefn(progress);
+                            }
+                            framefn(progress);
+                            this.update();
+                            requestAnimationFrame(renderFrame);
+                        }
+                    }).bind(this);
+                this.inAnimation = true;
+                requestAnimationFrame(renderFrame);
+            },
+
+            /**
+             * Stops the animation
+             */
+            stopAnimation: function () {
+                this.inAnimation = false;
+            },
+
+            /**
+             * Swing timing function for animations
+             * @param p
+             * @return {Number}
+             */
+            swing: function (p) {
+                return -Math.cos(p * Math.PI) / 2  + 0.5;
+            },
+
+            getContainerX: function () {
+                return this.container[0].offsetWidth;
+            },
+
+            getContainerY: function () {
+                return this.container[0].offsetHeight;
+            },
+
+            setContainerY: function (y) {
+                return this.container.height(y);
+            },
+
+            /**
+             * Creates the expected html structure
+             */
+            setupMarkup: function () {
+                this.container = $('<div class="pinch-zoom-container"></div>');
+                this.el.before(this.container);
+                this.container.append(this.el);
+
+                this.container.css({
+                    'overflow': 'hidden',
+                    'position': 'relative'
+                });
+
+                // Zepto doesn't recognize `webkitTransform..` style
+                this.el.css({
+                    '-webkit-transform-origin': '0% 0%',
+                    '-moz-transform-origin': '0% 0%',
+                    '-ms-transform-origin': '0% 0%',
+                    '-o-transform-origin': '0% 0%',
+                    'transform-origin': '0% 0%',
+                    'position': 'absolute'
+                });
+            },
+
+            end: function () {
+                this.hasInteraction = false;
+                this.sanitize();
+                this.update();
+            },
+
+            /**
+             * Binds all required event listeners
+             */
+            bindEvents: function () {
+                detectGestures(this.container.get(0), this);
+                // Zepto and jQuery both know about `on`
+                $(window).on('resize', this.update.bind(this));
+                $(this.el).find('img').on('load', this.update.bind(this));
+            },
+
+            /**
+             * Updates the css values according to the current zoom factor and offset
+             */
+            update: function () {
+
+                if (this.updatePlaned) {
+                    return;
+                }
+                this.updatePlaned = true;
+
+                setTimeout((function () {
+                    this.updatePlaned = false;
+                    this.updateAspectRatio();
+
+                    var zoomFactor = this.getInitialZoomFactor() * this.zoomFactor,
+                        offsetX = -this.offset.x / zoomFactor,
+                        offsetY = -this.offset.y / zoomFactor,
+                        transform3d =   'scale3d('     + zoomFactor + ', '  + zoomFactor + ',1) ' +
+                            'translate3d(' + offsetX    + 'px,' + offsetY    + 'px,0px)',
+                        transform2d =   'scale('       + zoomFactor + ', '  + zoomFactor + ') ' +
+                            'translate('   + offsetX    + 'px,' + offsetY    + 'px)',
+                        removeClone = (function () {
+                            if (this.clone) {
+                                this.clone.remove();
+                                delete this.clone;
+                            }
+                        }).bind(this);
+
+                    // Scale 3d and translate3d are faster (at least on ios)
+                    // but they also reduce the quality.
+                    // PinchZoom uses the 3d transformations during interactions
+                    // after interactions it falls back to 2d transformations
+                    if (!this.options.use2d || this.hasInteraction || this.inAnimation) {
+                        this.is3d = true;
+                        removeClone();
+                        this.el.css({
+                            '-webkit-transform':  transform3d,
+                            '-o-transform':       transform2d,
+                            '-ms-transform':      transform2d,
+                            '-moz-transform':     transform2d,
+                            'transform':        transform3d
+                        });
+                    } else {
+
+                        // When changing from 3d to 2d transform webkit has some glitches.
+                        // To avoid this, a copy of the 3d transformed element is displayed in the
+                        // foreground while the element is converted from 3d to 2d transform
+                        if (this.is3d) {
+                            this.clone = this.el.clone();
+                            this.clone.css('pointer-events', 'none');
+                            this.clone.appendTo(this.container);
+                            setTimeout(removeClone, 200);
+                        }
+                        this.el.css({
+                            '-webkit-transform':  transform2d,
+                            '-o-transform':       transform2d,
+                            '-ms-transform':      transform2d,
+                            '-moz-transform':     transform2d,
+                            'transform':        transform2d
+                        });
+                        this.is3d = false;
+                    }
+                }).bind(this), 0);
+            },
+
+            /**
+             * Enables event handling for gestures
+             */
+            enable: function() {
+              this.enabled = true;
+            },
+
+            /**
+             * Disables event handling for gestures
+             */
+            disable: function() {
+              this.enabled = false;
+            }
+        };
+
+        var detectGestures = function (el, target) {
+            var interaction = null,
+                fingers = 0,
+                lastTouchStart = null,
+                startTouches = null,
+
+                setInteraction = function (newInteraction, event) {
+                    if (interaction !== newInteraction) {
+
+                        if (interaction && !newInteraction) {
+                            switch (interaction) {
+                                case "zoom":
+                                    target.handleZoomEnd(event);
+                                    break;
+                                case 'drag':
+                                    target.handleDragEnd(event);
+                                    break;
+                            }
+                        }
+
+                        switch (newInteraction) {
+                            case 'zoom':
+                                target.handleZoomStart(event);
+                                break;
+                            case 'drag':
+                                target.handleDragStart(event);
+                                break;
+                        }
+                    }
+                    interaction = newInteraction;
+                },
+
+                updateInteraction = function (event) {
+                    if (fingers === 2) {
+                        setInteraction('zoom');
+                    } else if (fingers === 1 && target.canDrag()) {
+                        setInteraction('drag', event);
+                    } else {
+                        setInteraction(null, event);
+                    }
+                },
+
+                targetTouches = function (touches) {
+                    return Array.prototype.slice.call(touches).map(function (touch) {
+                        return {
+                            x: touch.pageX,
+                            y: touch.pageY
+                        };
+                    });
+                },
+
+                getDistance = function (a, b) {
+                    var x, y;
+                    x = a.x - b.x;
+                    y = a.y - b.y;
+                    return Math.sqrt(x * x + y * y);
+                },
+
+                calculateScale = function (startTouches, endTouches) {
+                    var startDistance = getDistance(startTouches[0], startTouches[1]),
+                        endDistance = getDistance(endTouches[0], endTouches[1]);
+                    return endDistance / startDistance;
+                },
+
+                cancelEvent = function (event) {
+                    event.stopPropagation();
+                    event.preventDefault();
+                },
+
+                detectDoubleTap = function (event) {
+                    var time = (new Date()).getTime();
+
+                    if (fingers > 1) {
+                        lastTouchStart = null;
+                    }
+
+                    if (time - lastTouchStart < 300) {
+                        cancelEvent(event);
+
+                        target.handleDoubleTap(event);
+                        switch (interaction) {
+                            case "zoom":
+                                target.handleZoomEnd(event);
+                                break;
+                            case 'drag':
+                                target.handleDragEnd(event);
+                                break;
+                        }
+                    }
+
+                    if (fingers === 1) {
+                        lastTouchStart = time;
+                    }
+                },
+                firstMove = true;
+
+            el.addEventListener('touchstart', function (event) {
+                if(target.enabled) {
+                    firstMove = true;
+                    fingers = event.touches.length;
+                    detectDoubleTap(event);
+                }
+            });
+
+            el.addEventListener('touchmove', function (event) {
+                if(target.enabled) {
+                    if (firstMove) {
+                        updateInteraction(event);
+                        if (interaction) {
+                            cancelEvent(event);
+                        }
+                        startTouches = targetTouches(event.touches);
+                    } else {
+                        switch (interaction) {
+                            case 'zoom':
+                                target.handleZoom(event, calculateScale(startTouches, targetTouches(event.touches)));
+                                break;
+                            case 'drag':
+                                target.handleDrag(event);
+                                break;
+                        }
+                        if (interaction) {
+                            cancelEvent(event);
+                            target.update();
+                        }
+                    }
+
+                    firstMove = false;
+                }
+            });
+
+            el.addEventListener('touchend', function (event) {
+                if(target.enabled) {
+                    fingers = event.touches.length;
+                    updateInteraction(event);
+                }
+            });
+        };
+
+        return PinchZoom;
+    };
+
+    if (typeof define !== 'undefined' && define.amd) {
+        define(['jquery'], function ($) {
+            return definePinchZoom($);
+        });
+    } else {
+        window.RTP = window.RTP || {};
+        window.RTP.PinchZoom = definePinchZoom(window.$);
+    }
+}).call(this);

+ 281 - 0
edit-backstage/hot_online/js/slider.js

@@ -0,0 +1,281 @@
+(function($) {
+    "use strict";
+    $.fn.pbTouchSlider = function(options) {
+        var slider_Opts = $.extend({
+            slider_Wrap : '', // Assign a unique ID to the div.o-sliderContainer
+            slider_Item : '.o-slider--item', // Single Item
+            slider_Drag : true, // Your choise.. to dragIt or not to dragIt..this is the question...
+            slider_Dots : { // Wanna see dots or not?
+              class :'.o-slider-pagination',
+              enabled : true,
+              preview : true
+            },
+            slider_Arrows : { // Wanna see Arrows or not?
+              class :'.o-slider-arrows',
+              enabled : true
+            },
+            slider_Threshold : 25, // Percentage of  dragX before go to next/prev slider
+            slider_Speed : 1000,
+            slider_Ease : 'cubic-bezier(0.5, 0, 0.5, 1)',  // see http://cubic-bezier.com/
+            slider_Breakpoints : { // Kind of media queries ( can add more if you know how to do it :D and if you need )
+                default : {
+                    height : 500 //  height on desktop
+                },
+                tablet : {
+                    height : 400, // height on tablet
+                    media : 1024 // tablet breakpoint
+                },
+                smartphone : {
+                    height : 300, // height on smartphone
+                    media : 768 // smartphone breakpoint
+                }
+            }
+        }, options);
+
+        /*:::::::: LOADER ::::::::*/
+        var loaderHtml = '<div class="loaderWrap">'+
+                          '<div class="ball-scale-multiple">'+
+                          '<div></div>'+
+                          '<div></div>'+
+                          '<div></div>'+
+                          '<div></div>'+
+                          '</div></div>';
+        $(slider_Opts.slider_Wrap).each( function(){$(this).append(loaderHtml);});
+        function loader(visibility) {
+            var thisLoader = $(slider_Opts.slider_Wrap +' .loaderWrap');
+            if (visibility === true)
+                $(thisLoader).show();
+             else
+                $(thisLoader).hide();
+        }
+
+        /*:::::::: RESPONSIVE ::::::::*/
+        function setResponsive() {
+            var VW = document.documentElement.clientWidth;
+            if (VW >= slider_Opts.slider_Breakpoints.tablet.media) {
+                $(pbSlider.slider_Wrap + '.o-sliderContainer,'+ pbSlider.slider_Wrap + ' ' + pbSlider.slider_Item).css({height: slider_Opts.slider_Breakpoints.default.height});
+            } else if (VW >= slider_Opts.slider_Breakpoints.smartphone.media) {
+                $(pbSlider.slider_Wrap + '.o-sliderContainer,'+ pbSlider.slider_Wrap + ' ' + pbSlider.slider_Item).css({height: slider_Opts.slider_Breakpoints.tablet.height});
+            } else {
+                $(pbSlider.slider_Wrap + '.o-sliderContainer,'+ pbSlider.slider_Wrap + ' ' + pbSlider.slider_Item).css({height: slider_Opts.slider_Breakpoints.smartphone.height});
+            }
+        }
+        $(window).resize(function() {setResponsive();});
+
+
+
+        /*:::::::: OBJECT SLIDER ::::::::*/
+        var pbSlider = {};
+        pbSlider.slider_Wrap = slider_Opts.slider_Wrap;
+        pbSlider.slider_Item = slider_Opts.slider_Item;
+        pbSlider.slider_Dots = slider_Opts.slider_Dots;
+        pbSlider.slider_Threshold = slider_Opts.slider_Threshold;
+        pbSlider.slider_Active = 0;
+        pbSlider.slider_Count = 0;
+        pbSlider.slider_NavWrap = '<div class="o-slider-controls"></div>';
+        pbSlider.slider_NavPagination ='<ul class="o-slider-pagination"></ul>';
+        pbSlider.slider_NavArrows ='<ul class="o-slider-arrows"><li class="o-slider-prev"><i class="icon-left-open-big"></i></li><li class="o-slider-next"><i class="icon-right-open-big"></i></li></ul>';
+
+
+        /*:::::::: APPEND ANIMATION ::::::::*/
+        $('head').append(
+            '<style>' + pbSlider.slider_Wrap + ' .o-slider.isAnimate{' +
+            '-webkit-transition: all ' + slider_Opts.slider_Speed + 'ms ' + slider_Opts.slider_Ease + ';' +
+            'transition: all ' + slider_Opts.slider_Speed + 'ms ' + slider_Opts.slider_Ease + ';' +
+            '</style>'
+        );
+
+
+
+        
+
+        /*:::::::: INIT ::::::::*/
+        pbSlider.pbInit = function(selector) {
+            pbSlider.slider_Draggable = selector;
+            pbSlider.slider_Count = $(pbSlider.slider_Wrap).find(pbSlider.slider_Item).length;
+            $(selector).css('width', pbSlider.slider_Count * 100 + '%');
+            $(pbSlider.slider_Wrap).find(pbSlider.slider_Item).css({'width': 100 / pbSlider.slider_Count+ '%'});
+
+            var incrSlides = 0;
+            $(pbSlider.slider_Wrap).find(pbSlider.slider_Item).each(function() {
+                $(this).attr('data-id', 'slide-' + (incrSlides++));
+            });
+
+            if(slider_Opts.slider_Arrows.enabled === true || slider_Opts.slider_Dots.enabled === true ){
+              $(pbSlider.slider_Wrap).append(pbSlider.slider_NavWrap);
+            }
+
+            if(slider_Opts.slider_Arrows.enabled === true){$(pbSlider.slider_Wrap).append(pbSlider.slider_NavArrows);}
+
+            if(slider_Opts.slider_Dots.enabled === true){
+              var incrPagination = 0;
+              $(pbSlider.slider_Wrap).append(pbSlider.slider_NavPagination);
+              for (incrPagination; incrPagination < pbSlider.slider_Count; incrPagination++) {
+                  var activeStatus = incrPagination === pbSlider.slider_Active ? ' class="isActive"' : '';
+                  var gotoSlide = 'data-increase="' + [incrPagination] + '"';
+                  var background = $(pbSlider.slider_Wrap).find("[data-id='slide-" + incrPagination + "']").attr('data-image');
+                  //background = background.replace('url(','').replace(')','').replace(/\"/gi, "");
+                  if(slider_Opts.slider_Dots.preview === true){
+                    $(pbSlider.slider_Wrap).find(pbSlider.slider_Dots.class)
+                    .append(
+                      '<li ' + activeStatus + ' ' + gotoSlide + '>'+
+                        '<span class="o-slider--preview" style="background-image:url('+background+')"></span>'+
+                      '</li>');
+                  } else {
+                    $(pbSlider.slider_Wrap).find(pbSlider.slider_Dots.class)
+                    .append('<li ' + activeStatus + ' ' + gotoSlide + '></li>');
+                  }
+              }
+            }
+            setTimeout(function() {
+              $(pbSlider.slider_Item + '[data-id=slide-' + pbSlider.slider_Active + ']').addClass('isActive');
+            },400);
+            /*:::::::: HAMMER => see http://hammerjs.github.io/  ::::::::*/
+            if(slider_Opts.slider_Drag === true){
+              $(pbSlider.slider_Draggable).addClass('isDraggable');
+              var stuff4hammer = document.querySelector(pbSlider.slider_Wrap);
+              var hammerOpts =   {
+                dragLockToAxis: true,
+                dragBlockHorizontal: true,
+                touchAction: 'pan-x',
+                cssProps: {userSelect: true}
+              }
+              var hammertime = new Hammer(stuff4hammer, hammerOpts);
+              hammertime.on('pan', function(e) {
+                e.preventDefault();
+                var percentage = 100 / pbSlider.slider_Count * e.deltaX / window.innerWidth;
+                var percentageCalc = percentage - 100 / pbSlider.slider_Count * pbSlider.slider_Active;
+                var notDraggable = $(e.target).find('.slider-textWrap').length;
+                  if(pbSlider.slider_Active != pbSlider.slider_Count-1 && pbSlider.slider_Active != 0){
+                    $(pbSlider.slider_Wrap).find(pbSlider.slider_Item).addClass('isMoving');
+                  }
+                  $(pbSlider.slider_Draggable).css({
+                      'perspective': '1000px',
+                      'backface-visibility': 'hidden',
+                      'transform': 'translateX( ' + percentageCalc + '% )'
+                  });
+                  if (e.isFinal) {
+                      if (e.velocityX > 1) {
+                          pbSlider.pbGoslide(pbSlider.slider_Active - 1);
+                      } else if (e.velocityX < -1) {
+                          pbSlider.pbGoslide(pbSlider.slider_Active + 1);
+                      } else {
+                          if (percentage <= -(pbSlider.slider_Threshold / pbSlider.slider_Count)) {
+                              pbSlider.pbGoslide(pbSlider.slider_Active + 1);
+                          } else if (percentage >= (pbSlider.slider_Threshold / pbSlider.slider_Count)) {
+                              pbSlider.pbGoslide(pbSlider.slider_Active - 1);
+                          } else {
+                              pbSlider.pbGoslide(pbSlider.slider_Active);
+                          }
+                      }
+                  }
+              });
+            }
+            $(pbSlider.slider_Wrap + ' .o-slider-pagination li').on('click', function() {
+
+                var this_data = $(this).attr('data-increase');
+                if(!$(this).hasClass('isActive')){
+                  pbSlider.pbGoslide(this_data);
+                }
+                //console.log(this_data + ' / ' + pbSlider.slider_Active );
+            });
+            $(pbSlider.slider_Wrap + ' .o-slider-prev').addClass('isDisabled');
+            $(pbSlider.slider_Wrap + ' .o-slider-arrows li').on('click', function() {
+                if ($(this).hasClass('o-slider-next')) {
+                    pbSlider.pbGoslide(pbSlider.slider_Active + 1);
+                } else {
+                    pbSlider.pbGoslide(pbSlider.slider_Active - 1);
+                }
+            });
+        };
+        /*:::::::: SLIDER ENGINE ::::::::*/
+        pbSlider.pbGoslide = function(number) {
+            $(pbSlider.slider_Wrap + ' .o-slider-arrows li').removeClass('isDisabled');
+
+            if (number < 0) {
+                pbSlider.slider_Active = 0;
+            } else if (number > pbSlider.slider_Count - 1) {
+                pbSlider.slider_Active = pbSlider.slider_Count - 1;
+            } else {
+                pbSlider.slider_Active = number;
+            }
+
+            if (pbSlider.slider_Active >= pbSlider.slider_Count - 1) {
+              var firstS = $(pbSlider.slider_Wrap).find(pbSlider.slider_Item).first();
+                $(pbSlider.slider_Wrap + ' .o-slider-next').addClass('isDisabled');
+            } else if (pbSlider.slider_Active <= 0) {
+                $(pbSlider.slider_Wrap + ' .o-slider-prev').addClass('isDisabled');
+            } else {
+                $(pbSlider.slider_Wrap + ' .o-slider-arrows li').removeClass('isDisabled');
+            }
+            if(pbSlider.slider_Active != pbSlider.slider_Count-1 && pbSlider.slider_Active != 0){
+              $(pbSlider.slider_Wrap).find(pbSlider.slider_Item).addClass('isMoving');
+              
+            }
+            if(-1 < number && number < pbSlider.slider_Count) {
+                $(pbSlider.slider_Wrap).find(pbSlider.slider_Item).each(function(index, elem) {
+                    if(elem.classList.contains('isActive')){
+                        if(elem.getElementsByTagName('img').length>0){
+                            elem.getElementsByTagName('img')[0].classList.remove('hotImageClick');
+                        }
+                    }
+                });
+            }
+            $(pbSlider.slider_Draggable).addClass('isAnimate');
+            var percentage = -(100 / pbSlider.slider_Count) * pbSlider.slider_Active;
+            $(pbSlider.slider_Draggable).css({
+                'perspective': '1000px',
+                'backface-visibility': 'hidden',
+                'transform': 'translateX( ' + percentage + '% )'
+            });
+            clearTimeout(pbSlider.timer);
+            pbSlider.timer = setTimeout(function() {
+                $(pbSlider.slider_Wrap).find(pbSlider.slider_Draggable).removeClass('isAnimate');
+                $(pbSlider.slider_Wrap).find(pbSlider.slider_Item).removeClass('isActive').removeClass('isMoving');
+                $(pbSlider.slider_Wrap).find(pbSlider.slider_Item + '[data-id=slide-' + pbSlider.slider_Active + ']').addClass('isActive');
+                //$(pbSlider.slider_Wrap + ' .o-slider--item img').css('transform', 'translateX(0px )');
+            }, slider_Opts.slider_Speed);
+            if(slider_Opts.slider_Dots.enabled === true){
+              var sliderDots = $(pbSlider.slider_Wrap).find(pbSlider.slider_Dots.class + ' > *');
+              var increase = 0;
+              for (increase; increase < sliderDots.length; increase++) {
+                  var className = increase == pbSlider.slider_Active ? 'isActive' : '';
+                  $(pbSlider.slider_Wrap).find(sliderDots[increase]).removeClass('isActive').addClass(className);
+                  $(pbSlider.slider_Wrap).find(sliderDots[increase]).children().removeClass('isActive').addClass(className);
+             }
+             setTimeout(function() {
+               $(pbSlider.slider_Wrap).find(sliderDots).children().removeClass('isActive');
+             },500);
+            }
+            pbSlider.slider_Active = Number(pbSlider.slider_Active);
+        };
+        pbSlider.auto = function() {
+            pbSlider.autoTimer = setInterval(function() {
+                if (pbSlider.slider_Active >= pbSlider.slider_Count - 1) {
+                    pbSlider.pbGoslide(0);
+                } else {
+                    $(pbSlider.slider_Wrap + ' .o-slider-next').trigger('click');
+                }
+            }, 3000);
+        }
+
+        //pbSlider.auto();
+        pbSlider.pbInit(this);
+
+        /*:::::::: ONlOAD STUFF ::::::::*/
+        $(document).ready(function(){
+            $(pbSlider.slider_Item).each(function(){
+              var bg = $(this).attr('data-image');
+              $(this).css({'background-image':'url('+bg+')'});
+            });
+            setTimeout ( function(){
+                loader(false);
+            },1000);
+            $(pbSlider.slider_Wrap + ' .o-slider-controls').addClass('isVisible');
+            $(pbSlider.slider_Draggable).addClass('isVisible');
+            setResponsive();
+        });
+        
+    };
+
+}(jQuery));

+ 310 - 0
edit-backstage/hot_online/js/vedio.js

@@ -0,0 +1,310 @@
+(function($){
+  'use strict';
+  
+  /**
+   * Constructor
+   */
+  var Video = function($element) {
+    
+    /**
+     * Make the reference to the passed
+     * in element globally accessible within
+     * the Video constructor
+     */
+    this.$element = $element;
+    
+    /**
+     * Kick off the application
+     */
+    this.init();
+  };
+  
+  /* Alias prototype */ 
+  var proto = Video.prototype;
+  
+  /**
+   * Top level function
+   */
+  proto.init = function() {
+    
+    return this.setupHandlers()
+               .createChildren()
+               .enable();
+  };
+  
+  /**
+   * Used to bind 'this' for functions
+   */
+  proto.setupHandlers = function() {
+    this.onPlayPauseHandler = this.playPause.bind(this);
+    this.onMuteHandler = this.mute.bind(this);
+    this.onTimeUpdateHandler = this.progress.bind(this);
+    this.onSeekHandler = this.seek.bind(this);
+    this.onFullscreenHandler = this.fullscreenMode.bind(this);
+    this.onVolumeHandler = this.adjustVolume.bind(this);
+
+   
+    return this;
+  };
+  
+  /**
+   * Create jQuery selectors here
+   */
+  proto.createChildren = function() {
+    this.$video = this.$element.find('.js-media');
+    this.$media = this.$video[0];
+    this.$playBtn = this.$element.find('[data-playPause]');
+    this.$muteBtn = this.$element.find('[data-mute]');
+    this.$volume = this.$element.find('[data-volume]');
+    this.$timeBar = this.$element.find('[data-time]');
+    this.$bufferBar = this.$element.find('[data-buffer]');
+    this.$progress = this.$element.find('[data-progress]');
+    this.$currentTime = this.$element.find('[data-currentTime]');
+    this.$duration = this.$element.find('[data-duration]');
+    this.$fullscreen = this.$element.find('[data-fullscreen]');
+    
+    return this;
+  };
+  
+  /**
+   * Event listeners and functions that need
+   * to run on initialization 
+   */
+  proto.enable = function() {
+    this.$playBtn.on('click', this.onPlayPauseHandler);
+    this.$muteBtn.on('click', this.onMuteHandler);
+    this.$video.on('timeupdate', this.onTimeUpdateHandler)
+                .on('loadedmetadata', function() {
+                      this.updateTimeDisplay(0, this.$media.duration);
+                    }.bind(this))
+                .on('ended', function() {
+                      this.$playBtn.removeClass('fa-play fa-pause')
+                                   .addClass('fa-undo');
+                      this.updateTime(100);
+                    }.bind(this))
+                ;
+    this.$progress.on('mousedown', this.onSeekHandler)
+                  .on('mouseup', this.onSeekHandler);
+    this.$fullscreen.on('click', this.onFullscreenHandler);
+    this.$volume.on('volumeChange', this.onVolumeHandler);
+    
+    return this;
+  };
+  
+  /**
+   * Get New Location
+   *
+   * Uses offsets within the tracking bar
+   * to find the position in seconds that the
+   * corresponds to in seconds of the video.
+   *
+   * Returns an object that has the new position 
+   * of the seek bar and the actual time time 
+   * seconds
+   */
+  proto.getNewLocation = function(e) {
+    var seekBarOffset = this.$progress.offset().left;
+    var mouseOffset = e.pageX;
+    var mousePosInBar = mouseOffset - seekBarOffset;
+    var seekBarWidth = this.$progress.width();
+    var duration = this.$media.duration;
+    var dist = Math.floor((mousePosInBar / seekBarWidth) * 100);
+    var actualSeconds = (dist / 100) * duration;
+    var newLocation = (actualSeconds/duration) * 100;
+    
+    var info = {
+      newTime: newLocation,
+      actualTime: actualSeconds
+    };;
+    
+    return info;
+  };
+  
+  /**
+   * Seek
+   *
+   * Called on mousedown and mouseup in the progress bar
+   * to set the position of the progress bar and time in the
+   * video.
+   */
+  proto.seek = function(e) {
+    var info = this.getNewLocation(e);
+    this.$media.currentTime = info.actualTime; // Set the time
+    this.updateTime(info.newTime);
+  };
+  
+  /**
+   * Play
+   *
+   * Plays or pauses the video
+   */
+  proto.playPause = function() {
+    if (this.$media.paused) {
+      this.play();
+    } else {
+      this.pause();
+    }
+  };
+  
+  proto.play = function() {
+    this.$media.play();
+    this.$playBtn.removeClass('fa-play fa-undo')
+    .addClass('fa-pause');
+  };
+  proto.pause = function() {
+    this.$media.pause();
+    this.$playBtn.removeClass('fa-pause fa-undo')
+    .addClass('fa-play');
+  };
+
+  
+  /**
+   * Mute 
+   *
+   * Mutes the video
+   */
+  proto.mute = function() {
+    if (this.$media.muted) {
+      this.$media.muted = false;
+    } else {
+      this.$media.muted = true;
+    }
+    
+    this.muteIconSwap();
+  };
+  
+  proto.muteIconSwap = function() {
+    if (this.$media.muted) {
+      this.$muteBtn.removeClass('fa-volume-up')
+                   .addClass('fa-volume-off');
+    } else {
+      this.$muteBtn.removeClass('fa-volume-off')
+                   .addClass('fa-volume-up');
+    }
+  };
+  
+  /**
+   * Volume 
+   *
+   * Volume of the video
+   */
+  proto.adjustVolume = function() {
+    var toVolume = this.$volume.data('volume') / 100;
+    this.$media.volume = toVolume; // from 0 - 1
+    if(toVolume === 0) {
+      this.$media.muted = true;
+    } else {
+      this.$media.muted = false;
+    }
+    this.muteIconSwap();
+  }
+
+  /**
+   * Progress
+   *
+   * 
+   */
+  proto.progress = function() {
+    var currentTime = Math.round(this.$media.currentTime);
+    var duration = this.$media.duration;
+    var locationPercent = (currentTime/duration) * 100;
+    var buffered = this.$media.buffered.end(0);
+    var bufferPercent = Math.floor((buffered/duration) * 100);
+
+    this.updateTime(locationPercent);
+    this.updateBuffer(bufferPercent);
+    this.updateTimeDisplay(Math.floor(this.$media.currentTime), duration);
+
+  };
+  
+  /**
+   * Update Buffer
+   *
+   * Updates the width of the buffer bar.
+   */
+  proto.updateBuffer = function(percent) {
+    this.$bufferBar.css('width', percent + '%');
+  };
+  
+  /**
+   * Update Time
+   *
+   * Updates the width of the seek bar.
+   */
+  proto.updateTime = function(percent) {
+    this.$timeBar.css('width', percent + '%');
+  };
+
+  proto.updateTimeDisplay = function(currentTime, duration) {
+    this.$currentTime.text(formatTime(currentTime));
+    this.$duration.text(formatTime(duration));
+  }
+  
+  function formatTime(s, m) {
+      s = Math.floor( s );    
+      m = Math.floor( s / 60 );
+      m = m >= 10 ? m : '0' + m;    
+      s = Math.floor( s % 60 );
+      s = s >= 10 ? s : '0' + s;    
+      return m + ':' + s;
+  }
+  
+   /**
+   * Full screen
+   *
+   * Display video in fullscreen mode
+   */
+  proto.fullscreenMode = function() {
+    var elem = this.$media;
+    if (elem.requestFullscreen) {
+      elem.requestFullscreen();
+    } else if (elem.mozRequestFullScreen) {
+      elem.mozRequestFullScreen();
+    } else if (elem.webkitRequestFullscreen) {
+      elem.webkitRequestFullscreen();
+    }
+  }
+  
+  /**
+   * Update src 
+   *
+   * Update src of the video and reload
+   */
+  proto.updateSrc = function(newSource, poster) {
+    var source = this.$video.find('source');
+    $(source).attr('src', newSource);
+    if(poster) {
+      this.$video.attr('poster', poster);
+    }
+    this.$media.load();
+  }
+  
+  
+  // making it a jQuery plugin
+  $.fn.video = function() {
+    return this.each(function() {
+      $(this).data('Video', new Video($(this)));
+    });
+  }
+
+
+})(jQuery);
+
+// embedabled movies https://www.davestrailerpage.co.uk/
+
+
+// use jQuery UI slider for volume control
+if($.fn.slider) {
+  
+  $('.volumeControl').slider({
+    min: 0,
+    max: 100,
+    value: 100,
+    slide: function( event, ui ) {
+      $(this).data('volume', ui.value).trigger('volumeChange');
+    }
+  });
+}
+
+// Initialize the Video instance
+$('.js-video').video();

File diff suppressed because it is too large
+ 456 - 0
edit-backstage/hot_online/js/viewer/viewer.css


File diff suppressed because it is too large
+ 3166 - 0
edit-backstage/hot_online/js/viewer/viewer.js


File diff suppressed because it is too large
+ 9 - 0
edit-backstage/hot_online/js/viewer/viewer.min.css


File diff suppressed because it is too large
+ 10 - 0
edit-backstage/hot_online/js/viewer/viewer.min.js


File diff suppressed because it is too large
+ 1 - 0
edit-backstage/hot_online1/css/app.0867ec97.css


File diff suppressed because it is too large
+ 1 - 0
edit-backstage/hot_online1/css/app.0d5d5cdb.css


File diff suppressed because it is too large
+ 1 - 0
edit-backstage/hot_online1/css/app.284205ff.css


File diff suppressed because it is too large
+ 1 - 0
edit-backstage/hot_online1/css/app.34ba231a.css


File diff suppressed because it is too large
+ 1 - 0
edit-backstage/hot_online1/css/app.70d61806.css


File diff suppressed because it is too large
+ 1 - 0
edit-backstage/hot_online1/css/app.735f63e8.css


File diff suppressed because it is too large
+ 1 - 0
edit-backstage/hot_online1/css/app.95281f89.css


File diff suppressed because it is too large
+ 11 - 0
edit-backstage/hot_online1/css/chunk-vendors.f0832753.css


BIN
edit-backstage/hot_online1/img/iframe-icon.2797cd24.png


BIN
edit-backstage/hot_online1/img/img-icon.f320665e.png


BIN
edit-backstage/hot_online1/img/model-icon.a439e688.png


BIN
edit-backstage/hot_online1/img/video-icon.6b8f2767.png


File diff suppressed because it is too large
+ 1 - 1
edit-backstage/hot_online1/index.html


+ 2 - 0
edit-backstage/hot_online1/js/about.8bca1b1d.js

@@ -0,0 +1,2 @@
+(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["about"],{f820:function(t,e,n){"use strict";n.r(e);var a=function(){var t=this,e=t.$createElement;t._self._c;return t._m(0)},s=[function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"about"},[n("h1",[t._v("This is an about page")])])}],u=n("4ac2"),c={},i=Object(u["a"])(c,a,s,!1,null,null,null);e["default"]=i.exports}}]);
+//# sourceMappingURL=about.8bca1b1d.js.map

File diff suppressed because it is too large
+ 1 - 0
edit-backstage/hot_online1/js/about.8bca1b1d.js.map


File diff suppressed because it is too large
+ 2 - 0
edit-backstage/hot_online1/js/app.23a34e13.js


File diff suppressed because it is too large
+ 1 - 0
edit-backstage/hot_online1/js/app.23a34e13.js.map


File diff suppressed because it is too large
+ 2 - 0
edit-backstage/hot_online1/js/app.37735270.js


File diff suppressed because it is too large
+ 1 - 0
edit-backstage/hot_online1/js/app.37735270.js.map


+ 0 - 0
edit-backstage/hot_online1/js/app.44338beb.js


Some files were not shown because too many files changed in this diff