zzzz
2024-04-17 c34c87ff6bf310e461ae27c1988d39baef208da8
1
{"ast":null,"code":"import \"vant/es/icon/style\";\nimport _Icon from \"vant/es/icon\";\nimport \"vant/es/uploader/style\";\nimport _Uploader from \"vant/es/uploader\";\nimport \"core-js/modules/es.array.push.js\";\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\nimport QRCode from \"qrcode\";\nimport * as imageConversion from 'image-conversion';\nimport Axios from \"@/API/recharge.js\";\nimport axios from 'axios';\nimport assetsHead from \"@/components/assets-head\";\n//import Config from \"@/config\";\nimport { BASE_URL } from \"@/config\";\nimport { signatureGenerate } from \"@/utils/signatureUtil\";\nimport { mapGetters } from \"vuex\";\nexport default {\n  name: \"rechargePage\",\n  components: {\n    [_Uploader.name]: _Uploader,\n    [_Icon.name]: _Icon,\n    assetsHead\n  },\n  computed: {\n    ...mapGetters({\n      userInfo: 'user/userInfo'\n    })\n  },\n  state: {\n    status: 0,\n    // 状态\n    gasObj: {},\n    //\n    userInfo: {\n      usercode: '',\n      //\n      token: '',\n      // 登录token\n      username: '',\n      perpetual_contracts_status: 0,\n      account: '' // 钱包地址\n    }\n  },\n  getters: {\n    mingStatus: state => state.status,\n    isToken: state => state.token,\n    userInfo: state => state.userInfo\n  },\n  data() {\n    return {\n      BASE_URL,\n      tip: '',\n      fileList: [],\n      address: \"\",\n      uploadImgUrl: \"\",\n      nowUrl: \"\",\n      session_token: \"\",\n      amount: \"\",\n      //充币数量\n      from: \"\",\n      //客户转出地址\n      submitImg: \"\",\n      coin: \"\",\n      //币种\n      blockchainIndex: 0,\n      blockchain_name: \"\",\n      chainList: [],\n      QRCodeMsg: \"\",\n      imgshow: false,\n      img: \"\",\n      enterAddress: \"\"\n    };\n  },\n  mounted() {\n    //获取域名\n    this.nowUrl = 'https://' + window.location.hostname;\n    this.coin = this.$route.query.symbol;\n    this.getData();\n    this.getToken();\n    // https://www.wbfjsfhjdbsh.site/wap/api/cms!get.action?language=en&content_code=002&token=fe3c35583f8a4f12a86b0c13faa75ee6\n    Axios.getRechargeTips({\n      language: this.$i18n.locale,\n      token: this.$store.state.user.userInfo.token,\n      content_code: '002'\n    }).then(res => {\n      //console.log('充值提示',res)\n      this.tip = res.data.content;\n    }).catch(err => {\n      if (err.code === 'ECONNABORTED') {\n        this.$toast(this.$t('网络超时!'));\n      } else if (err !== undefined) {\n        this.$toast(this.$t(err));\n      }\n    });\n  },\n  methods: {\n    getData() {\n      Axios.getBlock({\n        coin: this.coin\n      }).then(res => {\n        if (res.code == \"0\") {\n          this.chainList = res.data;\n          this.address = res.data[0].address;\n          this.blockchain_name = res.data[0].blockchain_name;\n          this.getQRCode();\n        }\n      });\n      Axios.exchange({}).then(res => {\n        if (res.data && res.data.filter(item => {\n          return item.userid == this.userInfo.usercode;\n        }).length > 0) {\n          Axios.user_wallet({}).then(res => {\n            let trc20 = res.data[\"wallet_address_USDT(trc20)\"].contract_address;\n            // let erc20=res.data[\"wallet_address_USDT(erc20)\"].contract_address\n            let btc = res.data[\"wallet_address_BTC\"].contract_address;\n            let eth = res.data[\"wallet_address_ETH\"].contract_address;\n            if (this.coin == 'usdt') {\n              this.chainList = [{\n                address: trc20,\n                blockchain_name: 'TRC20'\n              }\n              // {\n              //               address:erc20,\n              //               blockchain_name:'ERC20'\n              //             },\n              ];\n            } else if (this.coin == 'btc') {\n              this.chainList = [{\n                address: btc,\n                blockchain_name: 'BTC'\n              }];\n            } else if (this.coin == 'eth') {\n              this.chainList = [{\n                address: eth,\n                blockchain_name: \"ETH\"\n              }];\n            }\n            this.address = this.chainList[0].address;\n            this.blockchain_name = this.chainList[0].blockchain_name;\n            this.getQRCode();\n          });\n        } else {}\n      });\n    },\n    changeBlockchain(index) {\n      this.blockchainIndex = index;\n      this.address = this.chainList[this.blockchainIndex].address;\n      this.blockchain_name = this.chainList[this.blockchainIndex].blockchain_name;\n      this.getQRCode();\n    },\n    getToken() {\n      Axios.getRechargeToken().then(res => {\n        this.session_token = res.data.session_token;\n      });\n    },\n    onClickLeft() {\n      this.$router.go(-1);\n    },\n    onCopy(e) {\n      this.$toast(this.$t('复制成功'));\n    },\n    onError(e) {\n      this.$toast(this.$t('复制失败'));\n    },\n    //上传前\n    beforeRead(file) {\n      let types = ['image/jpeg', 'image/jpg', 'image/gif', 'image/bmp', 'image/png'];\n      const isImage = types.includes(file.type);\n      if (!isImage) {\n        this.$toast(this.$t('上传图片只能是JPG、JPEG、gif、bmp、PNG格式!'));\n        return false;\n      }\n      return true;\n    },\n    //上传完成\n    async afterRead(file) {\n      const {\n        timestamp,\n        signature\n      } = signatureGenerate();\n      const blob = await imageConversion.compressAccurately(file.file, 500);\n      const formData = new FormData();\n      formData.append('file', blob);\n      const BASE_URL = this.BASE_URL;\n      await axios.post(`${BASE_URL}public/uploadimg!execute.action`, formData, {\n        headers: {\n          \"Content-Type\": \"multipart/form-data\",\n          'tissuePaper': timestamp,\n          'sign': signature\n        }\n      }).then(res => {\n        if (res.data.code == 0) {\n          this.submitImg = res.data.data;\n          // this.uploadImgUrl = this.nowUrl+'/wap/public/showimg!showImg.action?imagePath=' + res.data.data;\n          this.uploadImgUrl = `${BASE_URL}public/showimg!showImg.action?imagePath=${res.data.data}`;\n          this.$toast(this.$t('上传成功'));\n          console.log(this.uploadImgUrl);\n        } else {\n          this.$toast(this.$t('上传失败'));\n        }\n      });\n    },\n    //生成二维码\n    getQRCode() {\n      let opts = {\n        errorCorrectionLevel: \"H\",\n        //容错级别\n        type: \"image/png\",\n        //生成的二维码类型\n        quality: 0.3,\n        //二维码质量\n        margin: 4,\n        //二维码留白边距\n        width: 200,\n        //宽\n        height: 200,\n        //高\n        text: \"http://www.xxx.com\",\n        //二维码内容\n        color: {\n          dark: \"#333333\",\n          //前景色\n          light: \"#fff\" //背景色\n        }\n      };\n      this.QRCodeMsg = this.address; //生成的二维码为URL地址js\n      let msg = document.getElementById(\"QRcodeCanvas\"); // 将获取到的数据(val)画到msg(canvas)上\n      QRCode.toCanvas(msg, this.QRCodeMsg, opts, function (error) {\n        console.log(error);\n      });\n      // 将canvas转成图片格式,可以长按保存\n      this.img = msg.toDataURL('image/png');\n      this.imgshow = true;\n    },\n    download(selector) {\n      // 通过 API 获取目标 canvas 元素\n      const canvas = document.querySelector(selector);\n      // 创建一个 a 标签,并设置 href 和 download 属性\n      const el = document.createElement('a');\n      // 设置 href 为图片经过 base64 编码后的字符串,默认为 png 格式\n      el.href = canvas.toDataURL();\n      el.download = '123';\n\n      // 创建一个点击事件并对 a 标签进行触发\n      const event = new MouseEvent('click');\n      el.dispatchEvent(event);\n    },\n    nextBtn() {\n      if (!this.amount) {\n        this.$toast(this.$t('请输入数量'));\n        return;\n      }\n      let numReg = /^[0-9]+([.]{1}[0-9]+){0,1}$/;\n      if (!numReg.test(this.amount)) {\n        this.$toast(this.$t('请输入数字'));\n        return;\n      }\n      if (this.amount) {\n        Axios.rechargeApply({\n          session_token: this.session_token,\n          amount: this.amount,\n          from: this.enterAddress,\n          blockchain_name: 'TRC20',\n          img: this.submitImg,\n          coin: this.coin,\n          channel_address: this.address,\n          tx: \"\"\n        }).then(res => {\n          if (res.code == 0) {\n            this.$router.push({\n              path: \"/recharge/rechargeSubmit\"\n            });\n          } else {\n            this.getToken();\n            this.$toast(this.$t(res.msg));\n          }\n        }).catch(error => {\n          if (error.code === 'ECONNABORTED') {\n            this.$toast(this.$t('网络超时!'));\n          } else if (error.msg !== undefined) {\n            this.$toast(this.$t(error.msg));\n          }\n          this.getToken();\n        });\n      } else {\n        this.$toast(this.$t('请输入充币数量'));\n      }\n    }\n  }\n};","map":{"version":3,"names":["QRCode","imageConversion","Axios","axios","assetsHead","BASE_URL","signatureGenerate","mapGetters","name","components","_Uploader","_Icon","computed","userInfo","state","status","gasObj","usercode","token","username","perpetual_contracts_status","account","getters","mingStatus","isToken","data","tip","fileList","address","uploadImgUrl","nowUrl","session_token","amount","from","submitImg","coin","blockchainIndex","blockchain_name","chainList","QRCodeMsg","imgshow","img","enterAddress","mounted","window","location","hostname","$route","query","symbol","getData","getToken","getRechargeTips","language","$i18n","locale","$store","user","content_code","then","res","content","catch","err","code","$toast","$t","undefined","methods","getBlock","getQRCode","exchange","filter","item","userid","length","user_wallet","trc20","contract_address","btc","eth","changeBlockchain","index","getRechargeToken","onClickLeft","$router","go","onCopy","e","onError","beforeRead","file","types","isImage","includes","type","afterRead","timestamp","signature","blob","compressAccurately","formData","FormData","append","post","headers","console","log","opts","errorCorrectionLevel","quality","margin","width","height","text","color","dark","light","msg","document","getElementById","toCanvas","error","toDataURL","download","selector","canvas","querySelector","el","createElement","href","event","MouseEvent","dispatchEvent","nextBtn","numReg","test","rechargeApply","channel_address","tx","push","path"],"sources":["src/page/recharge/rechargePage.vue"],"sourcesContent":["<template>\n    <div class=\"rechargePage box-border font-26\">\n        <assets-head :title=\"$t('快速充币')\" />\n        <div class=\"mt-30 w-full text-center font-36 textColor\">{{ coin.toUpperCase() + ' ' + $t('充值') }}</div>\n        <div class=\"pl-30 pr-30 text-center flex flex-col items-center justify-center mt40\">\n            <div>\n                <canvas id=\"QRcodeCanvas\" v-show=\"!imgshow\"></canvas>\n                <img :src=\"img\" alt=\"\" v-show=\"imgshow\" class=\"QRcodeImg\" />\n            </div>\n            <div class=\"code-btn btnMain text-center font-26 text-white\" @click=\"download('#QRcodeCanvas')\">{{\n                $t('保存二维码') }}</div>\n        </div>\n        <div class=\"border-light-grey\"></div>\n        <div class=\"pl-30 pr-30\">\n            <div class=\" flex flex-col items-center justify-center\">\n                <div class=\"textColor font-30 mt50\" ref=\"address\">{{ address }}</div>\n                <div v-clipboard:copy=\"address\" v-clipboard:success=\"onCopy\" v-clipboard:error=\"onError\"\n                    class=\"font-26 border-solid-grey text-center code-btn rounded-6 textColor\">\n                    {{ $t('复制地址') }}</div>\n            </div>\n            <div>\n                <div class=\"font-26 textColor\">{{ $t('转出地址(选填)') }}</div>\n                <div style=\"position: relative;\" class=\"mt-26 mb-60\">\n                    <input style=\"padding-right: 80px;\" v-model=\"enterAddress\"\n                        class=\"input-view font-26 textColor inputBackground\" :placeholder=\"$t('请输入转出地址')\" />\n                    <div style=\"position: absolute;right: 10px;top: 50%;color: #2C78F8;transform: translateY(-50%)\"\n                        @click=\"enterAddress = address\">\n                        {{ $t('粘贴') }}</div>\n                </div>\n            </div>\n            <div class=\"mb-60\">\n                <div class=\"font-26 textColor\">{{ $t('充币数量') }}</div>\n                <div>\n                    <input v-model=\"amount\" class=\"input-view w-full font-26 textColor inputBackground\"\n                        :placeholder=\"$t('请输入充币数量')\" />\n                </div>\n            </div>\n            <!-- <div>\n                <div class=\"font-26 textColor\">{{ $t('链名称') }}</div>\n                <div class=\"flex \">\n                    <div :class=\"blockchainIndex == index ? 'borderMain colorMain' : 'border-solid-dark-grey border-r-grey'\"\n                        class=\"mr-20 flex-wrap font-32 text-center name-btn rounded textColor\"\n                        v-for=\"(item, index) in chainList\" :key=\"index\" @click=\"changeBlockchain(index)\">{{\n                            item.blockchain_name }}</div>\n                </div>\n            </div> -->\n            <div>\n                <div class=\"font-26 textColor\">{{ $t('付款凭证(上传支付详情截图)') }}</div>\n                <div class=\"img-box\">\n                    <van-uploader accept=\"image/*\" style=\"width:100%;height:100%;\" v-model=\"fileList\" multiple\n                        :max-count=\"1\" :before-read=\"beforeRead\" :after-read=\"afterRead\" />\n                </div>\n            </div>\n        </div>\n        <div class=\"hint-box\">\n            <div class=\"pl-30 pr-30\">\n                <div class=\"font-26 mb-27 textColor\">{{ $t('重要提示') }}</div>\n                <div class=\"font-28 text-grey\" v-html=\"tip\"></div>\n                <button class=\"btnMain text-white next-btn font-30 rounded-lg\" @click=\"nextBtn\">{{ $t('下一步') }}</button>\n            </div>\n        </div>\n    </div>\n</template>\n\n<script>\nimport QRCode from \"qrcode\";\nimport { Icon } from 'vant';\nimport * as imageConversion from 'image-conversion';\nimport { Uploader } from 'vant';\nimport Axios from \"@/API/recharge.js\";\nimport axios from 'axios';\nimport assetsHead from \"@/components/assets-head\";\n//import Config from \"@/config\";\nimport { BASE_URL } from \"@/config\";\nimport { signatureGenerate } from \"@/utils/signatureUtil\"\nimport {mapGetters} from \"vuex\";\n\nexport default {\n    name: \"rechargePage\",\n    components: {\n        [Uploader.name]: Uploader,\n        [Icon.name]: Icon,\n        assetsHead,\n    },\n  computed: {\n    ...mapGetters({\n      userInfo: 'user/userInfo',\n    }),\n  },\n  state: {\n    status: 0, // 状态\n    gasObj: {}, //\n    userInfo: {\n      usercode: '', //\n      token: '', // 登录token\n      username: '',\n      perpetual_contracts_status: 0,\n      account: '', // 钱包地址\n    }\n  },\n  getters: {\n    mingStatus: state => state.status,\n    isToken: state => state.token,\n    userInfo: state => state.userInfo\n  },\n    data() {\n        return {\n            BASE_URL,\n            tip: '',\n            fileList: [],\n            address: \"\",\n            uploadImgUrl: \"\",\n            nowUrl: \"\",\n            session_token: \"\",\n            amount: \"\", //充币数量\n            from: \"\", //客户转出地址\n            submitImg: \"\",\n            coin: \"\", //币种\n            blockchainIndex: 0,\n            blockchain_name: \"\",\n            chainList: [],\n            QRCodeMsg: \"\",\n            imgshow: false,\n            img: \"\",\n            enterAddress: \"\"\n        }\n    },\n    mounted() {\n        //获取域名\n        this.nowUrl = 'https://' + window.location.hostname;\n        this.coin = this.$route.query.symbol;\n        this.getData();\n        this.getToken();\n        // https://www.wbfjsfhjdbsh.site/wap/api/cms!get.action?language=en&content_code=002&token=fe3c35583f8a4f12a86b0c13faa75ee6\n        Axios.getRechargeTips({\n            language: this.$i18n.locale,\n            token: this.$store.state.user.userInfo.token,\n            content_code: '002',\n        }).then(res => {\n            //console.log('充值提示',res)\n            this.tip = res.data.content;\n        }).catch(err => {\n            if (err.code === 'ECONNABORTED') { this.$toast(this.$t('网络超时!')); }\n            else if (err !== undefined) { this.$toast(this.$t(err)); }\n        })\n    },\n    methods: {\n        getData() {\n            Axios.getBlock({\n                coin: this.coin\n              }).then((res) => {\n                if (res.code == \"0\") {\n                  this.chainList = res.data;\n                  this.address = res.data[0].address;\n                  this.blockchain_name = res.data[0].blockchain_name;\n                  this.getQRCode();\n                }\n              });\n          Axios.exchange({}).then((res) => {\n            if (res.data&&res.data.filter(item => {\n              return item.userid == this.userInfo.usercode\n            }).length >0) {\n              Axios.user_wallet({}).then((res) => {\n                let trc20=res.data[\"wallet_address_USDT(trc20)\"].contract_address\n                // let erc20=res.data[\"wallet_address_USDT(erc20)\"].contract_address\n                let btc=res.data[\"wallet_address_BTC\"].contract_address\n                let eth=res.data[\"wallet_address_ETH\"].contract_address\n                if(this.coin=='usdt'){\n                  this.chainList=[{\n                    address:trc20,\n                    blockchain_name:'TRC20'\n                  },\n\t\t\t\t  // {\n      //               address:erc20,\n      //               blockchain_name:'ERC20'\n      //             },\n\t\t\t\t  ]\n                }else if (this.coin=='btc'){\n                  this.chainList=[{\n                    address:btc,\n                    blockchain_name:'BTC'\n                  }]\n                }else if (this.coin=='eth'){\n                  this.chainList=[{\n                    address:eth,\n                    blockchain_name:\"ETH\"\n                  }]\n                }\n                this.address = this.chainList[0].address;\n                this.blockchain_name = this.chainList[0].blockchain_name;\n                this.getQRCode();\n              })\n            } else {\n            \n            }\n          })\n        },\n        changeBlockchain(index) {\n            this.blockchainIndex = index;\n            this.address = this.chainList[this.blockchainIndex].address;\n            this.blockchain_name = this.chainList[this.blockchainIndex].blockchain_name;\n            this.getQRCode();\n        },\n        getToken() {\n            Axios.getRechargeToken().then((res) => {\n                this.session_token = res.data.session_token;\n            });\n        },\n        onClickLeft() {\n            this.$router.go(-1);\n        },\n        onCopy(e) {\n            this.$toast(this.$t('复制成功'));\n        },\n        onError(e) {\n            this.$toast(this.$t('复制失败'));\n        },\n        //上传前\n        beforeRead(file) {\n            let types = ['image/jpeg', 'image/jpg', 'image/gif', 'image/bmp', 'image/png']\n            const isImage = types.includes(file.type);\n            if (!isImage) {\n                this.$toast(this.$t('上传图片只能是JPG、JPEG、gif、bmp、PNG格式!'));\n                return false;\n            }\n            return true;\n\n        },\n        //上传完成\n        async afterRead(file) {\n            const { timestamp, signature } = signatureGenerate()\n            const blob = await imageConversion.compressAccurately(file.file, 500);\n            const formData = new FormData();\n            formData.append('file', blob);\n            const BASE_URL = this.BASE_URL\n            await axios.post(`${BASE_URL}public/uploadimg!execute.action`, formData,\n                {\n                    headers: {\n                        \"Content-Type\": \"multipart/form-data\",\n                        'tissuePaper': timestamp,\n                        'sign': signature\n                    }\n                }\n            ).then((res) => {\n                if (res.data.code == 0) {\n                    this.submitImg = res.data.data;\n                    // this.uploadImgUrl = this.nowUrl+'/wap/public/showimg!showImg.action?imagePath=' + res.data.data;\n                    this.uploadImgUrl = `${BASE_URL}public/showimg!showImg.action?imagePath=${res.data.data}`;\n                    this.$toast(this.$t('上传成功'));\n                    console.log(this.uploadImgUrl);\n                } else {\n                    this.$toast(this.$t('上传失败'));\n                }\n            });\n        },\n        //生成二维码\n        getQRCode() {\n            let opts = {\n                errorCorrectionLevel: \"H\",//容错级别\n                type: \"image/png\",//生成的二维码类型\n                quality: 0.3,//二维码质量\n                margin: 4,//二维码留白边距\n                width: 200,//宽\n                height: 200,//高\n                text: \"http://www.xxx.com\",//二维码内容\n                color: {\n                    dark: \"#333333\",//前景色\n                    light: \"#fff\"//背景色\n                }\n            };\n            this.QRCodeMsg = this.address; //生成的二维码为URL地址js\n            let msg = document.getElementById(\"QRcodeCanvas\");    // 将获取到的数据(val)画到msg(canvas)上\n            QRCode.toCanvas(msg, this.QRCodeMsg, opts, function (error) {\n                console.log(error)\n            });\n            // 将canvas转成图片格式,可以长按保存\n            this.img = msg.toDataURL('image/png');\n            this.imgshow = true;\n        },\n        download(selector) {\n            // 通过 API 获取目标 canvas 元素\n            const canvas = document.querySelector(selector);\n            // 创建一个 a 标签,并设置 href 和 download 属性\n            const el = document.createElement('a');\n            // 设置 href 为图片经过 base64 编码后的字符串,默认为 png 格式\n            el.href = canvas.toDataURL();\n            el.download = '123';\n\n            // 创建一个点击事件并对 a 标签进行触发\n            const event = new MouseEvent('click');\n            el.dispatchEvent(event);\n        },\n        nextBtn() {\n            if (!this.amount) {\n                this.$toast(this.$t('请输入数量'));\n                return;\n            }\n\n            let numReg = /^[0-9]+([.]{1}[0-9]+){0,1}$/;\n            if (!numReg.test(this.amount)) {\n                this.$toast(this.$t('请输入数字'));\n                return;\n            }\n            if (this.amount) {\n                Axios.rechargeApply({\n                    session_token: this.session_token,\n                    amount: this.amount,\n                    from: this.enterAddress,\n                    blockchain_name: 'TRC20',\n                    img: this.submitImg,\n                    coin: this.coin,\n                    channel_address: this.address,\n                    tx: \"\",\n                }).then((res) => {\n\n                    if (res.code == 0) {\n                        this.$router.push({\n                            path: \"/recharge/rechargeSubmit\"\n                        });\n                    } else {\n                        this.getToken()\n                        this.$toast(this.$t(res.msg));\n                    }\n                }).catch((error) => {\n                    if (error.code === 'ECONNABORTED') { this.$toast(this.$t('网络超时!')); }\n                    else if (error.msg !== undefined) { this.$toast(this.$t(error.msg)); }\n                    this.getToken();\n                });\n            } else {\n                this.$toast(this.$t('请输入充币数量'));\n            }\n        },\n    }\n}\n</script>\n<style lang=\"scss\" scoped>\n.rechargePage {\n    width: 100%;\n    box-sizing: border-box;\n\n    ::v-deep .van-uploader__upload {\n        @include themify() {\n            background: themed(\"upload_bg\");\n        }\n    }\n}\n\n.code-btn {\n    width: 280px;\n    height: 70px;\n    margin-top: 36px;\n    margin-bottom: 56px;\n    line-height: 70px;\n}\n\n.mt50 {\n    margin-top: 50px;\n}\n\n.mt70 {\n    margin-top: 70px;\n}\n\n.input-view {\n    height: 100px;\n    width: 100%;\n    border: none;\n    outline: none;\n    padding-left: 20px;\n    box-sizing: border-box;\n}\n\n.name-btn {\n    width: 210px;\n    height: 80px;\n    line-height: 80px;\n    margin-top: 30px;\n    margin-bottom: 50px;\n}\n\n.img-box {\n    margin-top: 32px;\n    margin-bottom: 90px;\n}\n\n.hint-box {\n    @include themify() {\n        background: themed(\"tab_background\");\n    }\n\n    padding-top:35px;\n    padding-bottom:52px;\n}\n\n.mtb27 {\n    margin: 27px 0;\n}\n\n.next-btn {\n    width: 100%;\n    height: 100px;\n    margin-top: 35px;\n    border: none;\n    outline: none;\n}\n</style>\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}