作者 邓超

es kibana

<?php
namespace Controller;
use function Swoole\Coroutine\Http\request;
/**
* @author:dc
* @time 2025/8/27 15:38
* Class Kibana
* @package Controller
*/
class Kibana extends Base {
public function __construct()
{
\Lib\vue\vue::runPath(ROOT_PATH.'/views');
}
/**
* @author:dc
* @time 2025/8/27 15:40
*/
public function index(){
return \Lib\vue\vue::view('kibana');
}
public function result(){
$json = app()->request('json');
return es()->getClient()->search($json);
}
}
... ...
### 这个是使用vue扩展
* 加载的是element-ui
* 不能使用<font color=red>ts</font>只能使用js
* <font color=red>必须使用双标签</font> 这里无法自动补全结束标签
~~~vue
<el-table>
<!--错误-->
<el-table-column prop="address" label="Address" sortable />
<!--正确-->
<el-table-column prop="address" label="Address" sortable ></el-table-column>
</el-table>
~~~
> 使用实例
~~~injectablephp
// 必须先设置 vue的运行目录
Vue::runPath('path');
// 不含 .vue文件后缀 的模板文件 在 运行目录下面 填写相对路径
Vue::view('home/index'); // 这个是半组件模式 使用了混淆数据
Vue::view2('home/index'); // 这个是纯组件模式
// 数据渲染
Vue::view('home/index',['data'=>'hello','tableData'=>['id'=>1]]);
// laravel 中
return response(Vue::view2('home',[]),200,['Content-Type'=>'text/html']);
// 或者使用异常返回
throw new HttpResponseException(response(Vue::view2('home',[]),200,['Content-Type'=>'text/html']));
// 混合使用,把vue嵌套在其他html页面上
$var = Vue::viewBlade('模板名字',['参数,就是需要渲染在页面上的服务器数据'],'这个是模板所在目录');
// $var = ['html'=>'','css'=>'','js'=>''];
// 在页面上 {{$var['html']}}{{$var['css']}}{{$var['js']}} 放入对应的位置即可
~~~
> 混合使用示例 xxx.blade.php
~~~
@extends(config('view.layout'))
@section('content')
<div class="content-wrap">
<div class="layout-px-spacing">
<div class="row layout-top-spacing">
<div class="col-xl-12 col-lg-12 col-md-12">
<!-- 调用 -->
@php $vue = \App\Extend\Vue\Vue::viewBlade('robot-chat',['language'=>$language],resource_path('views/applications')) @endphp
放入html代码
{!! $vue['html'] !!}
</div>
</div>
</div>
</div>
</div>
@endsection
<!-- BEGIN GLOBAL MANDATORY SCRIPTS -->
@section('custom_js')
放入css代码
{!! $vue['css'] !!}
放入js代码
{!! $vue['js'] !!}
@endsection
~~~
> 后端数据传入vue进行数据渲染
* 标签 <{#data#}> 普通数据模式
~~~vue
<!-- 模板使用 --->
<template>
<{#data#}>
</template>
<!--最后页面呈现的是-->
<template>
hello
</template>
~~~
* 标签 <[{#data#}]> 对象模式 注意 一定要用引号把标签给引起来 否则vue页面会报错
~~~vue
<!-- 模板使用 --->
<script>
export default {
data(){
return {
tableData:"<[{#tableData#}]>"
}
}
}
</script>
<!--最后页面呈现的是-->
<script>
export default {
data(){
return {
tableData: {id:1}
}
}
}
</script>
~~~
> vue页面的组件使用 组件也必须在运行目录中
~~~vue
<template>
<!-- 使用my_component组件-->
<my_component></my_component>
</template>
<script>
export default {
data(){
return {
tableData: {id:1}
}
},
components:{
my_component: "@component(component/my)", // 这里引号可以单双
}
}
</script>
~~~
* @component() 必须 括号中间的是组件文件名称
* <font color=red>不要使用无限嵌套的组件,不要嵌套组件过多</font>
> 使用 axios 进行数据请求
* axios已做了公共的响应和请求处理 当message有值时 页面会自动弹出提示 非200弹出的是错误提示
* 后端无需在渲染 X-CSRF-TOKEN了,已在请求时自动加入
* 如有特殊需求需要用 X-CSRF-TOKEN 在页面使用 常亮 _CSRF_TOKEN_
~~~vue
<script>
export default {
data(){
return {
token: _CSRF_TOKEN_
}
}
}
</script>
~~~
* 后端返回的数据必须是json 格式如下
~~~json
{
"status": 200,
"message": "提示消息",
"data": []
}
~~~
## 组件的规范
* 组件示例 如 index.vue
~~~vue
<template>
我是组件 index
<div v-html="xx"></div>
</template>
<script>
export default { // 必须这样写 这一行
template:"@slot#template", // 这里必须这样 才可以渲染 上面的template
// template:"这里写html", // 也可以这样直接html上面的template无法渲染了
name: "index",
}
</script>
<!-- scoped 限定标识是有效的 -->
<style scoped>
div{} /*这里的div样式只会作用于当前组件*/
/* 这样也是合法的 */
div[scoped]{}
/* 有特殊情况 动态添加的html */
div[scoped] span{} /* 这个作用于当前组件下的div下面所有span标签*/
</style>
~~~
* 注意 css 可以加 scoped 限定标识
### ajax() 的使用
* 是对axios的再次封装
* ajax()不会执行catch了,已经统一处理过了
~~~vue
<script>
export default { // 必须这样写 这一行
methods:{
getList(){
// post 请求 url 请求数据
ajax().post('url',{}).then(res=>{
// 处理结果
})
// get 请求
ajax().get('url').then(res=>{
// 处理结果
})
// delete请求
ajax().delete('url').then(res=>{
// 处理结果
})
}
}
}
</script>
~~~
### elMsg 弹窗消息提示
* elMsg是对element-ui的消息提示进行了缩减写法
~~~javascript
elMsg.error('') // 错误提示
elMsg.success('') // 成功提示
~~~
* elMsgBox 弹出确认框
~~~javascript
elMsgBox.confirm('提示信息').then(()=>{
// 你的逻辑代码
})
~~~
... ...
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title></title>
<link href="https://fonts.googleapis.com/css?family=Nunito:400,600,700" rel="stylesheet">
<!-- Import style -->
<link rel="stylesheet" href="https://unpkg.com/element-plus@2.10.1/dist/index.css" />
<!-- Import Vue 3 -->
<script src="https://unpkg.com/vue@3.5.16/dist/vue.global.js" type="application/javascript"></script>
<!-- Import component library -->
<script src="https://unpkg.com/element-plus@2.10.1/dist/index.full.js" type="application/javascript"></script>
<script src="https://unpkg.com/@element-plus/icons-vue@2.3.1/dist/index.iife.min.js" type="application/javascript"></script>
<script src="https://unpkg.com/axios@1.9.0/dist/axios.min.js" type="application/javascript"></script>
<!--请不要删除下面注释代码-->
<!--{#link#}-->
</head>
<body>
<div id="app">
<component-main></component-main>
</div>
</body>
</html>
<!--请不要删除下面注释-->
<!--{#script.src#}-->
<style>
body{
margin: 0;
padding:0;
font-size: 12px;
font-weight: unset;
}
.el-table{width: 100%;}
.mr-2{margin-right: 2rem;}
.mr-1{margin-right: 1rem;}
.w-100{width: 100%;}
</style>
<!--请不要删除下面注释-->
<!--{#style#}-->
<script type="application/javascript">
// 针对谷歌浏览器调试是出现的 No resource with given URL found
//# sourceURL=dynamicScript.js
</script>
<!--请不要删除下面注释-->
<!--{#script#}-->
<script type="application/javascript">
const VueApp = {
data() {
return {
}
},
components:{
"component-main":"@component(<--{#component_main#}-->)"
}
,created(){
}
}
// 减少写法
const elMsg = ElementPlus.ElMessage;
const elMsgBox = ElementPlus.ElMessageBox;
// 添加请求拦截器
axios.interceptors.request.use(function (config) {
// 在发送请求之前做些什么 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content'),
// config.headers['X-CSRF-TOKEN'] = _CSRF_TOKEN_;
return config;
}, function (error) {
// 对请求错误做些什么
return Promise.reject(error);
});
// 添加响应拦截器
axios.interceptors.response.use(function (response) {
// 对响应数据做点什么
// console.log(response);
// 是否弹出消息
if(response.data.message){
if(response.data.status === 200){
elMsg.success(response.data.message);
}else {
elMsg.error(response.data.message);
}
}
return response;
}, function (error) {
// console.log(error)
if(error.response.data && error.response.data.message){
elMsg.error(error.response.data.message);
}else {
elMsg.error(error.message);
}
// 对响应错误做点什么
return Promise.reject(error);
});
/**
* 对axios的再次封装
*/
class axiosPackage {
#startCall
start(call){
this.#startCall = call;
return this;
}
post(url, data = {}){
return this.#result(axios.post(url, data));
}
get(url){
return this.#result(axios.get(url))
}
delete(url){
return this.#result(axios.delete(url))
}
#result(res){
return res.then(response=> {
return response.data
}).catch(e=>{
let data = {status:500};
data.e = e;
return data;
})
}
}
// 使用函数 进行 实例
function ajax(){
return new axiosPackage()
}
/**
* 深拷贝
* @param obj
* @returns {*}
*/
function copy (obj) {
let newObj = null
if (typeof obj === 'object' && obj !== null) {
newObj = obj instanceof Array ? [] : {}
for (let i in obj) {
newObj[i] = typeof obj[i] === 'object' ? copy(obj[i]) : obj[i]
}
} else {
newObj = obj
}
return newObj
}
// 创建应用
const app = Vue.createApp(VueApp);
// 加载ele插件
app.use(ElementPlus);
// 使用图标
// app.use(ElementPlusIconsVue); // 这个加载方式不可以
// 下面是正确的加载方式,仅适用于 cdn方式
for ([name, comp] of Object.entries(ElementPlusIconsVue)) {
app.component(name, comp);
}
const vmElm = app.mount('#app');
</script>
... ...
<?php
namespace Lib\vue;
/**
* 处理vue的,加载的是element-ui
* @author:dc
* @time 2024/12/12 9:53
* Class VueService
* @package App\Services
*/
class vue
{
/**
* 模板html
* @var string
*/
protected $html = '';
/**
* 前端加载的数据
* @var array
*/
protected $data = [];
/**
* 基础模板
* @var string
*/
protected $baseHtml = '';
/**
* 模板存储的文件路径
* @var string
*/
protected static $tempPath = '';
/**
* 样式
* @var string
*/
protected $css = '';
/**
* js
* @var string
*/
protected $script = '';
/**
* 这个是完整的html
* @var string
*/
protected $fullHtml = '';
/**
* 全组件模式
* @var string
*/
protected static $baseVue = 'index';
public function __construct(string $html, array $data = [])
{
$this->baseHtml = file_get_contents(__DIR__.'/template/'.static::$baseVue.'.vue');
$this->html = '';
// 版本2
$this->baseHtml = str_replace('@component(<--{#component_main#}-->)','@component('.$html.')',$this->baseHtml);
$this->data = $data;
}
/**
* @param string $name vue 文件相对路径 xx/xx
* @param array $data 传递到前端的数据
* @return string
* @throws \Exception
* @author:dc
* @time 2024/12/13 9:22
*/
public static function view(string $name,array $data = []):string {
if(!self::$tempPath){
throw new \Exception('vue view not found. template path');
}
if(!is_file(self::$tempPath.'/'.ltrim($name,'/').'.vue')){
throw new \Exception('vue view not found. path:'.$name);
}
return (new static($name,$data))->getHtml();
}
/**
* 设置 模板 放在那个目录
* @param string $path
* @author:dc
* @time 2024/12/12 10:05
*/
public static function runPath(string $path){
self::$tempPath = rtrim($path,'/');
}
/**
* 处理样式
* @author:dc
* @time 2024/12/12 10:19
*/
protected function renderStyle(){
// 找到样式 css
preg_match_all("/<style([\sa-z=\/\"']+)?>([\S\s]*)<\/style>/iU",$this->fullHtml,$style);
if(!empty($style[0])){
// 匹配出来的替换为空
$this->fullHtml = str_replace($style[0],'',$this->fullHtml);
$style[0] = array_unique(array_map('trim',$style[0]));
$this->fullHtml = str_replace('<!--{#style#}-->',implode("\n",$style[0]),$this->fullHtml);
}
}
/**
* 处理js
* @author:dc
* @time 2024/12/12 10:27
*/
protected function renderScript(){
// 找到样式 css
if(preg_match("/<script([\sa-z=\/\"']+)?>([\S\s]*)<\/script>/iU",$this->html,$js)){
$this->html = str_replace($js[0],'',$this->html);
$this->script .= $js[0];
}
$this->baseHtml = str_replace('<!--{#script#}-->',$this->script,$this->baseHtml);
}
/**
* 解析组件
* test.vue 内容如下
<template> 这个是组件 </template>
<script>
export default {
template:"slot#template",
data(){
}
}
</script>
<style scoped>
</style>
* @author:dc
* @return array|false
* @time 2024/12/12 14:43
*/
protected function parseComponent(&$tempHtml){
// 处理组件
preg_match_all("/['\"]@component\(([\sa-z0-9_\-\/]+)\)['\"]/iU",$tempHtml,$components);
if(!empty($components[0])){
foreach ($components[0] as $k=>$com){
$component = $components[1][$k];
// 找到组件文件
$file = self::$tempPath.'/'.ltrim($component,'/').'.vue';
if(!is_file($file)){
throw new \Exception('vue component not found: '.$component);
}
$html = file_get_contents($file);
// 这个是组件的名称 以 文件名为名称
$name = str_replace('/','-',$component);
$uuid = 'data-'.uniqid(); // 这个是唯一id,每个组件唯一,用来隔离css
// 找到js
preg_match("/<script([\sa-z=\/\"']+)?>([\S\s]*)<\/script>/i",$html,$js);
// 找到css
preg_match("/<style([\sa-z=\/\"']+)?>([\S\s]*)<\/style>/i",$html,$css);
// 处理css的限定标记 scoped
$css[0] = array_map(function ($cs) use ($css,$uuid){
// 是否是最后一行,最后一行不处理
if(preg_match("/<\s*\/\s*style\s*>/i",$cs)){
return $cs;
}
// 是否存在单独的 scoped
if(stripos($cs,'[scoped]')!==false){
return str_replace('[scoped]',"[{$uuid}]",$cs);
}
// 这个是 当前组件下是是否全局 scoped 限定
if(stripos($css[1]??'','scoped')!==false){
return $cs."[{$uuid}]";
}
// 不处理
return $cs;
},explode("{",$css[0]??''));
// 还原css操作
$css = implode('{',$css[0]);
// 找到template html
preg_match("/<template(\s*.*)>([\S\s]*)<\/template>/i",$html,$temp);
$tempAttr = $temp[1]??'';
$temp[1] = $temp[2]??'';
// 为每个标签添加uuid 用来隔离css
// <a></a> 最后是 <a data-xxxx></a>
if($temp[1]){
preg_match_all("/<([a-z_\-]+)\s?([\S\s]*)>/iU",$temp[1],$tags);
foreach ($tags[0] as $tag){
// 过滤哪些标记不进行 唯一属性
if(preg_match("/^<(v-for|template|slot|v-if|v-else-if|v-else|transition-group|transition|keep-alive|component)[\n\s>\/]/",$tag)){
continue;
}
// 有空格
if(strpos($tag,' ')!==false){
$tagHtml = explode(' ',$tag);
$tagHtml[0] .= " {$uuid} ";
$tagHtml = implode(' ',$tagHtml);
}else{
// 无空格
$tagHtml = mb_substr($tag,0,-1)." {$uuid} >";
}
$temp[1] = str_replace($tag,$tagHtml,$temp[1]);
}
}
// 有 ${{这种情况}} 这个其实是 钱+价额
$temp[1] = str_replace('${','\\\${',$temp[1]);
$temp = " template:`<div {$tempAttr}> {$css} ".addcslashes($temp[1],'`').'</div>`,';
$js = preg_replace('/export[\s\n\r]+default[\s\n\r]*{/',"{ \n".$temp,$js[2]??'');
// 替换模板 中用到组件的地方
$tempHtml = str_replace(
$com,
$js,
$tempHtml
);
}
}else{
return false;
}
return true;
}
/**
* 处理组件 把页面上通过 import导入的html 处理成可用的
* 类似 @include('xxxx')
* @author:dc
* @time 2024/12/12 10:34
*/
protected function components(){
$forNum = 0;
while (1) {
if ($forNum >= 5) {
throw new \Exception('vue 组件嵌套过多/无限嵌套');
}
$forNum++;
if(!$this->parseComponent($this->fullHtml)){
break;
}
}
}
/**
* 渲染数据
* 界面上使用 <{#data#}> 这个是 渲染普通数据
* "<[{#data#}]>" 这个是渲染对象使用的
* @author:dc
* @time 2024/12/12 14:29
*/
protected function renderData(){
foreach ($this->data as $key=>$datum){
$datum = is_array($datum) ? json_encode($datum,JSON_UNESCAPED_UNICODE) : $datum;
$this->fullHtml = str_replace(['<{#'.$key.'#}>','"<[{#'.$key.'#}]>"',"'<[{#'.$key.'#}]>'"],$datum,$this->fullHtml);
}
}
/**
* 返回模板代码 html
* @return string
* @author:dc
* @time 2024/12/12 9:58
*/
public function getHtml():string {
$this->renderScript();
// 找到样式 link
if(preg_match_all("/<link(.*)\/?>/iU",$this->html,$links)){
foreach ($links[0] as $link){
$this->html = str_replace($link,'',$this->html);
}
$this->baseHtml = str_replace('<!--{#link#}-->',implode("\r\n",$links[0]),$this->baseHtml);
}
$this->fullHtml = str_replace('<!--{#body#}-->',$this->html,$this->baseHtml);
$this->components();
$this->renderStyle();
// 模板2 组件模式 <!--{#script.src#}-->
/**
* 组件中 用 @import("js/css") 导入的外链资源
*/
preg_match_all('/\@import\((["\'a-z0-9._\-\/?&=:]{5,})\)/iU',$this->fullHtml,$sc);
if(!empty($sc[1])){
$this->fullHtml = str_replace($sc[0],'',$this->fullHtml);
$this->fullHtml = str_replace('<!--{#script.src#}-->',implode("\n",array_map(function ($v){
$v = str_replace(['"',"'"],'',$v);
if(stripos($v,'.js')){
return '<script type="application/javascript" src="'.$v.'"></script>';
}elseif (stripos($v,'.css')){
return '<link rel="stylesheet" href="'.$v.'" />';
}else{
return '';
}
},$sc[1])),$this->fullHtml);
}
$this->renderData();
return $this->fullHtml;
}
}
... ...
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="240"
height="144"
id="svg4136"
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="jsoneditor-icons.svg">
<title
id="title6512">JSON Editor Icons</title>
<metadata
id="metadata4148">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title>JSON Editor Icons</dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs4146" />
<sodipodi:namedview
pagecolor="#ff63ff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1026"
id="namedview4144"
showgrid="true"
inkscape:zoom="4"
inkscape:cx="13.229181"
inkscape:cy="119.82429"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg4136"
showguides="false"
borderlayer="false"
inkscape:showpageshadow="true"
showborder="true">
<inkscape:grid
type="xygrid"
id="grid4640"
empspacing="24" />
</sodipodi:namedview>
<!-- Created with SVG-edit - http://svg-edit.googlecode.com/ -->
<rect
style="fill:#4c4c4c;fill-opacity:1;stroke:none;stroke-width:0"
id="svg_1"
height="16"
width="16"
y="4"
x="4" />
<rect
id="svg_1-7"
height="16"
width="16"
y="3.999995"
x="28.000006"
style="fill:#ec3f29;fill-opacity:0.94117647;stroke:none;stroke-width:0" />
<rect
style="fill:#4c4c4c;fill-opacity:1;stroke:none;stroke-width:0"
x="52.000004"
y="3.999995"
width="16"
height="16"
id="rect4165" />
<rect
id="rect4175"
height="16"
width="16"
y="3.9999852"
x="172.00002"
style="fill:#4c4c4c;fill-opacity:1;stroke:none;stroke-width:0" />
<rect
id="rect4175-3"
height="16"
width="16"
y="3.999995"
x="196"
style="fill:#4c4c4c;fill-opacity:1;stroke:none;stroke-width:0" />
<g
id="g4299"
style="stroke:none">
<rect
x="7.0000048"
y="10.999998"
width="9.9999924"
height="1.9999986"
id="svg_1-1"
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0" />
<rect
x="11.000005"
y="7.0000114"
width="1.9999955"
height="9.9999838"
id="svg_1-1-1"
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0" />
</g>
<g
id="g4299-3"
transform="matrix(0.70710678,-0.70710678,0.70710678,0.70710678,19.029435,12.000001)"
style="stroke:none">
<rect
x="7.0000048"
y="10.999998"
width="9.9999924"
height="1.9999986"
id="svg_1-1-0"
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0" />
<rect
x="11.000005"
y="7.0000114"
width="1.9999955"
height="9.9999838"
id="svg_1-1-1-9"
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0" />
</g>
<rect
id="svg_1-7-5"
height="6.9999905"
width="6.9999909"
y="7.0000048"
x="55.000004"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0" />
<rect
style="fill:#ffffff;fill-opacity:1;stroke:#4c4c4c;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
x="58"
y="10.00001"
width="6.9999909"
height="6.9999905"
id="rect4354" />
<rect
id="svg_1-7-5-7"
height="6.9999905"
width="6.9999909"
y="10.000005"
x="58.000004"
style="fill:#ffffff;fill-opacity:1;stroke:#3c80df;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.94117647" />
<g
id="g4378">
<rect
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0"
x="198"
y="10.999999"
width="7.9999909"
height="1.9999965"
id="svg_1-7-5-3" />
<rect
id="rect4374"
height="1.9999946"
width="11.999995"
y="7.0000005"
x="198"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0" />
<rect
id="rect4376"
height="1.9999995"
width="3.9999928"
y="14.999996"
x="198"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0" />
</g>
<g
transform="matrix(1,0,0,-1,-23.999995,23.999995)"
id="g4383">
<rect
id="rect4385"
height="1.9999965"
width="7.9999909"
y="10.999999"
x="198"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0" />
<rect
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0"
x="198"
y="7.0000005"
width="11.999995"
height="1.9999946"
id="rect4387" />
<rect
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0"
x="198"
y="14.999996"
width="3.9999928"
height="1.9999995"
id="rect4389" />
</g>
<rect
style="fill:#4c4c4c;fill-opacity:1;stroke:none"
id="rect3754-4"
width="16"
height="16"
x="76"
y="3.9999199" />
<path
style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 85.10447,6.0157384 -0.0156,1.4063 c 3.02669,-0.2402 0.33008,3.6507996 2.48438,4.5780996 -2.18694,1.0938 0.49191,4.9069 -2.45313,4.5781 l -0.0156,1.4219 c 5.70828,0.559 1.03264,-5.1005 4.70313,-5.2656 l 0,-1.4063 c -3.61303,-0.027 1.11893,-5.7069996 -4.70313,-5.3124996 z"
id="path4351"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccc" />
<path
style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 82.78125,5.9984384 0.0156,1.4063 c -3.02668,-0.2402 -0.33007,3.6506996 -2.48437,4.5780996 2.18694,1.0938 -0.49192,4.9069 2.45312,4.5781 l 0.0156,1.4219 c -5.70827,0.559 -1.03263,-5.1004 -4.70312,-5.2656 l 0,-1.4063 c 3.61303,-0.027 -1.11894,-5.7070996 4.70312,-5.3124996 z"
id="path4351-9"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccc" />
<rect
style="fill:#4c4c4c;fill-opacity:1;stroke:none"
id="rect3754-25"
width="16"
height="16"
x="100"
y="3.9999199" />
<path
style="fill:#ffffff;fill-opacity:1;stroke:none"
d="m 103.719,5.6719384 0,12.7187996 3.03125,0 0,-1.5313 -1.34375,0 0,-9.6249996 1.375,0 0,-1.5625 z"
id="path2987"
inkscape:connector-curvature="0" />
<path
style="fill:#ffffff;fill-opacity:1;stroke:none"
d="m 112.2185,5.6721984 0,12.7187996 -3.03125,0 0,-1.5313 1.34375,0 0,-9.6249996 -1.375,0 0,-1.5625 z"
id="path2987-1"
inkscape:connector-curvature="0" />
<rect
style="fill:#4c4c4c;fill-opacity:1;stroke:none"
id="rect3754-73"
width="16"
height="16"
x="124"
y="3.9999199" />
<path
style="fill:#ffffff;fill-opacity:1;stroke:none"
d="m 126.2824,17.602938 1.78957,0 1.14143,-2.8641 5.65364,0 1.14856,2.8641 1.76565,0 -4.78687,-11.1610996 -1.91903,0 z"
id="path3780"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccccccc" />
<path
style="fill:#4c4c4c;fill-opacity:1;stroke:none"
d="m 129.72704,13.478838 4.60852,0.01 -2.30426,-5.5497996 z"
id="path3782"
inkscape:connector-curvature="0" />
<rect
style="fill:#4c4c4c;fill-opacity:1;stroke:none"
id="rect3754-35"
width="16"
height="16"
x="148"
y="3.9999199" />
<path
style="fill:#ffffff;fill-opacity:1;stroke:none"
d="m 156.47655,5.8917384 0,2.1797 0.46093,2.3983996 1.82813,0 0.39844,-2.3983996 0,-2.1797 z"
id="path5008-2"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccccc" />
<path
style="fill:#ffffff;fill-opacity:1;stroke:none"
d="m 152.51561,5.8906384 0,2.1797 0.46094,2.3983996 1.82812,0 0.39844,-2.3983996 0,-2.1797 z"
id="path5008-2-8"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccccc" />
<rect
id="svg_1-7-2"
height="1.9999961"
width="11.999996"
y="64"
x="54"
style="fill:#4c4c4c;fill-opacity:0.98431373;stroke:none;stroke-width:0" />
<rect
id="svg_1-7-2-2"
height="2.9999905"
width="2.9999907"
y="52"
x="80.000008"
style="fill:#4c4c4c;fill-opacity:0.98431373;stroke:none;stroke-width:0" />
<rect
style="fill:#4c4c4c;fill-opacity:0.98431373;stroke:none;stroke-width:0"
x="85.000008"
y="52"
width="2.9999907"
height="2.9999905"
id="rect4561" />
<rect
style="fill:#4c4c4c;fill-opacity:0.98431373;stroke:none;stroke-width:0"
x="80.000008"
y="58"
width="2.9999907"
height="2.9999905"
id="rect4563" />
<rect
id="rect4565"
height="2.9999905"
width="2.9999907"
y="58"
x="85.000008"
style="fill:#4c4c4c;fill-opacity:0.98431373;stroke:none;stroke-width:0" />
<rect
id="rect4567"
height="2.9999905"
width="2.9999907"
y="64"
x="80.000008"
style="fill:#4c4c4c;fill-opacity:0.98431373;stroke:none;stroke-width:0" />
<rect
style="fill:#4c4c4c;fill-opacity:0.98431373;stroke:none;stroke-width:0"
x="85.000008"
y="64"
width="2.9999907"
height="2.9999905"
id="rect4569" />
<circle
style="opacity:1;fill:none;fill-opacity:1;stroke:#4c4c4c;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
id="path4571"
cx="110.06081"
cy="57.939209"
r="4.7438836" />
<rect
style="fill:#4c4c4c;fill-opacity:0.98431373;stroke:none;stroke-width:0"
x="116.64566"
y="-31.79752"
width="4.229713"
height="6.4053884"
id="rect4563-2"
transform="matrix(0.70710678,0.70710678,-0.70710678,0.70710678,0,0)" />
<path
style="fill:#4c4c4c;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 125,56 138.77027,56.095 132,64 Z"
id="path4613"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccc" />
<path
sodipodi:nodetypes="cccc"
inkscape:connector-curvature="0"
id="path4615"
d="M 149,64 162.77027,63.905 156,56 Z"
style="fill:#4c4c4c;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<rect
style="fill:#4c4c4c;fill-opacity:0.98431373;stroke:none;stroke-width:0"
x="54"
y="53"
width="11.999996"
height="1.9999961"
id="rect4638" />
<rect
id="svg_1-7-2-24"
height="1.9999957"
width="12.99999"
y="-56"
x="53"
style="fill:#4c4c4c;fill-opacity:0.98431373;stroke:none;stroke-width:0"
transform="matrix(0,1,-1,0,0,0)" />
<rect
transform="matrix(0,1,-1,0,0,0)"
style="fill:#4c4c4c;fill-opacity:0.98431373;stroke:none;stroke-width:0"
x="53"
y="-66"
width="12.99999"
height="1.9999957"
id="rect4657" />
<rect
id="rect4659"
height="0.99999291"
width="11.999999"
y="57"
x="54"
style="fill:#4c4c4c;fill-opacity:0.98431373;stroke:none;stroke-width:0" />
<rect
style="fill:#d3d3d3;fill-opacity:1;stroke:none;stroke-width:0;stroke-opacity:1"
x="54"
y="88.000122"
width="11.999996"
height="1.9999961"
id="rect4661" />
<rect
style="fill:#d3d3d3;fill-opacity:1;stroke:none;stroke-width:0;stroke-opacity:1"
x="80.000008"
y="76.000122"
width="2.9999907"
height="2.9999905"
id="rect4663" />
<rect
id="rect4665"
height="2.9999905"
width="2.9999907"
y="76.000122"
x="85.000008"
style="fill:#d3d3d3;fill-opacity:1;stroke:none;stroke-width:0;stroke-opacity:1" />
<rect
id="rect4667"
height="2.9999905"
width="2.9999907"
y="82.000122"
x="80.000008"
style="fill:#d3d3d3;fill-opacity:1;stroke:none;stroke-width:0;stroke-opacity:1" />
<rect
style="fill:#d3d3d3;fill-opacity:1;stroke:none;stroke-width:0;stroke-opacity:1"
x="85.000008"
y="82.000122"
width="2.9999907"
height="2.9999905"
id="rect4669" />
<rect
style="fill:#d3d3d3;fill-opacity:1;stroke:none;stroke-width:0;stroke-opacity:1"
x="80.000008"
y="88.000122"
width="2.9999907"
height="2.9999905"
id="rect4671" />
<rect
id="rect4673"
height="2.9999905"
width="2.9999907"
y="88.000122"
x="85.000008"
style="fill:#d3d3d3;fill-opacity:1;stroke:none;stroke-width:0;stroke-opacity:1" />
<circle
r="4.7438836"
cy="81.939331"
cx="110.06081"
id="circle4675"
style="opacity:1;fill:none;fill-opacity:1;stroke:#d3d3d3;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<rect
transform="matrix(0.70710678,0.70710678,-0.70710678,0.70710678,0,0)"
id="rect4677"
height="6.4053884"
width="4.229713"
y="-14.826816"
x="133.6163"
style="fill:#d3d3d3;fill-opacity:1;stroke:#d3d3d3;stroke-width:0;stroke-opacity:1" />
<path
sodipodi:nodetypes="cccc"
inkscape:connector-curvature="0"
id="path4679"
d="m 125,80.000005 13.77027,0.09499 L 132,87.999992 Z"
style="fill:#d3d3d3;fill-opacity:1;fill-rule:evenodd;stroke:#d3d3d3;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
style="fill:#d3d3d3;fill-opacity:1;fill-rule:evenodd;stroke:#d3d3d3;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 149,88.0002 162.77027,87.9052 156,80.0002 Z"
id="path4681"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccc" />
<rect
id="rect4683"
height="1.9999961"
width="11.999996"
y="77.000122"
x="54"
style="fill:#d3d3d3;fill-opacity:1;stroke:none;stroke-width:0;stroke-opacity:1" />
<rect
transform="matrix(0,1,-1,0,0,0)"
style="fill:#d3d3d3;fill-opacity:1;stroke:none;stroke-width:0;stroke-opacity:1"
x="77.000122"
y="-56"
width="12.99999"
height="1.9999957"
id="rect4685" />
<rect
id="rect4687"
height="1.9999957"
width="12.99999"
y="-66"
x="77.000122"
style="fill:#d3d3d3;fill-opacity:1;stroke:none;stroke-width:0;stroke-opacity:1"
transform="matrix(0,1,-1,0,0,0)" />
<rect
style="fill:#d3d3d3;fill-opacity:1;stroke:none;stroke-width:0;stroke-opacity:1"
x="54"
y="81.000122"
width="11.999999"
height="0.99999291"
id="rect4689" />
<rect
id="rect4761-1"
height="1.9999945"
width="15.99999"
y="101"
x="76.000008"
style="fill:#ffffff;fill-opacity:0.8;stroke:none;stroke-width:0" />
<rect
id="rect4761-0"
height="1.9999945"
width="15.99999"
y="105"
x="76.000008"
style="fill:#ffffff;fill-opacity:0.8;stroke:none;stroke-width:0" />
<rect
id="rect4761-7"
height="1.9999945"
width="9"
y="109"
x="76.000008"
style="fill:#ffffff;fill-opacity:0.8;stroke:none;stroke-width:0" />
<rect
id="rect4761-1-1"
height="1.9999945"
width="12"
y="125"
x="76.000008"
style="fill:#ffffff;fill-opacity:0.8;stroke:none;stroke-width:0" />
<rect
id="rect4761-1-1-4"
height="1.9999945"
width="10"
y="137"
x="76.000008"
style="fill:#ffffff;fill-opacity:0.8;stroke:none;stroke-width:0" />
<rect
id="rect4761-1-1-4-4"
height="1.9999945"
width="10"
y="129"
x="82"
style="fill:#ffffff;fill-opacity:0.8;stroke:none;stroke-width:0" />
<rect
id="rect4761-1-1-4-4-3"
height="1.9999945"
width="9"
y="133"
x="82"
style="fill:#ffffff;fill-opacity:0.8;stroke:none;stroke-width:0" />
<path
inkscape:connector-curvature="0"
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.8;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.66157866;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 36.398438,100.0254 c -0.423362,-0.013 -0.846847,0.01 -1.265626,0.062 -1.656562,0.2196 -3.244567,0.9739 -4.507812,2.2266 L 29,100.5991 l -2.324219,7.7129 7.826172,-1.9062 -1.804687,-1.9063 c 1.597702,-1.5308 4.048706,-1.8453 5.984375,-0.7207 1.971162,1.1452 2.881954,3.3975 2.308593,5.5508 -0.573361,2.1533 -2.533865,3.6953 -4.830078,3.6953 l 0,3.0742 c 3.550756,0 6.710442,-2.4113 7.650391,-5.9414 0.939949,-3.5301 -0.618463,-7.2736 -3.710938,-9.0703 -1.159678,-0.6738 -2.431087,-1.0231 -3.701171,-1.0625 z"
id="path4138" />
<path
inkscape:connector-curvature="0"
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.8;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.66157866;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 59.722656,99.9629 c -1.270084,0.039 -2.541493,0.3887 -3.701172,1.0625 -3.092475,1.7967 -4.650886,5.5402 -3.710937,9.0703 0.939949,3.5301 4.09768,5.9414 7.648437,5.9414 l 0,-3.0742 c -2.296214,0 -4.256717,-1.542 -4.830078,-3.6953 -0.573361,-2.1533 0.337432,-4.4056 2.308594,-5.5508 1.935731,-1.1246 4.38863,-0.8102 5.986326,0.7207 l -1.806638,1.9063 7.828128,1.9062 -2.32422,-7.7129 -1.62696,1.7168 c -1.26338,-1.2531 -2.848917,-2.0088 -4.505855,-2.2285 -0.418778,-0.055 -0.842263,-0.076 -1.265625,-0.062 z"
id="path4138-1" />
<path
inkscape:connector-curvature="0"
style="opacity:0.8;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.96599996;stroke-miterlimit:4;stroke-dasharray:none"
d="m 10.5,100 0,2 -2.4999996,0 L 12,107 l 4,-5 -2.5,0 0,-2 -3,0 z"
id="path3055-0-77" />
<path
style="opacity:0.8;fill:none;stroke:#ffffff;stroke-width:1.96599996;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 4.9850574,108.015 14.0298856,-0.03"
id="path5244-5-0-5"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
<path
style="opacity:0.8;fill:none;stroke:#ffffff;stroke-width:1.96599996;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 4.9849874,132.015 14.0298866,-0.03"
id="path5244-5-0-5-8"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
<path
inkscape:connector-curvature="0"
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.4;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#4d4d4d;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.66157866;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 36.398438,123.9629 c -0.423362,-0.013 -0.846847,0.01 -1.265626,0.062 -1.656562,0.2196 -3.244567,0.9739 -4.507812,2.2266 L 29,124.5366 l -2.324219,7.7129 7.826172,-1.9062 -1.804687,-1.9063 c 1.597702,-1.5308 4.048706,-1.8453 5.984375,-0.7207 1.971162,1.1453 2.881954,3.3975 2.308593,5.5508 -0.573361,2.1533 -2.533864,3.6953 -4.830078,3.6953 l 0,3.0742 c 3.550757,0 6.710442,-2.4093 7.650391,-5.9394 0.939949,-3.5301 -0.618463,-7.2756 -3.710938,-9.0723 -1.159678,-0.6737 -2.431087,-1.0231 -3.701171,-1.0625 z"
id="path4138-12" />
<path
inkscape:connector-curvature="0"
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.4;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#4d4d4d;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.66157866;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 59.722656,123.9629 c -1.270084,0.039 -2.541493,0.3888 -3.701172,1.0625 -3.092475,1.7967 -4.650886,5.5422 -3.710937,9.0723 0.939949,3.5301 4.09768,5.9394 7.648437,5.9394 l 0,-3.0742 c -2.296214,0 -4.256717,-1.542 -4.830078,-3.6953 -0.573361,-2.1533 0.337432,-4.4055 2.308594,-5.5508 1.935731,-1.1246 4.38863,-0.8102 5.986326,0.7207 l -1.806638,1.9063 7.828128,1.9062 -2.32422,-7.7129 -1.62696,1.7168 c -1.26338,-1.2531 -2.848917,-2.0088 -4.505855,-2.2285 -0.418778,-0.055 -0.842263,-0.076 -1.265625,-0.062 z"
id="path4138-1-3" />
<path
id="path6191"
d="m 10.5,116 0,-2 -2.4999996,0 L 12,109 l 4,5 -2.5,0 0,2 -3,0 z"
style="opacity:0.8;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.96599996;stroke-miterlimit:4;stroke-dasharray:none"
inkscape:connector-curvature="0" />
<path
inkscape:connector-curvature="0"
style="opacity:0.8;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.96599996;stroke-miterlimit:4;stroke-dasharray:none"
d="m 10.5,129 0,-2 -2.4999996,0 L 12,122 l 4,5 -2.5,0 0,2 -3,0 z"
id="path6193" />
<path
id="path6195"
d="m 10.5,135 0,2 -2.4999996,0 L 12,142 l 4,-5 -2.5,0 0,-2 -3,0 z"
style="opacity:0.8;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.96599996;stroke-miterlimit:4;stroke-dasharray:none"
inkscape:connector-curvature="0" />
<path
sodipodi:type="star"
style="fill:#4d4d4d;fill-opacity:0.90196078;stroke:#d3d3d3;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
id="path4500"
sodipodi:sides="3"
sodipodi:cx="11.55581"
sodipodi:cy="60.073242"
sodipodi:r1="5.1116104"
sodipodi:r2="2.5558052"
sodipodi:arg1="0"
sodipodi:arg2="1.0471976"
inkscape:flatsided="false"
inkscape:rounded="0"
inkscape:randomized="0"
d="m 16.66742,60.073242 -3.833708,2.213392 -3.8337072,2.213393 0,-4.426785 0,-4.426784 3.8337082,2.213392 z"
inkscape:transform-center-x="-1.2779026" />
<path
inkscape:transform-center-x="1.277902"
d="m -31.500004,60.073242 -3.833708,2.213392 -3.833707,2.213393 0,-4.426785 0,-4.426784 3.833707,2.213392 z"
inkscape:randomized="0"
inkscape:rounded="0"
inkscape:flatsided="false"
sodipodi:arg2="1.0471976"
sodipodi:arg1="0"
sodipodi:r2="2.5558052"
sodipodi:r1="5.1116104"
sodipodi:cy="60.073242"
sodipodi:cx="-36.611614"
sodipodi:sides="3"
id="path4502"
style="fill:#4d4d4d;fill-opacity:0.90196078;stroke:#d3d3d3;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
sodipodi:type="star"
transform="scale(-1,1)" />
<path
d="m 16.66742,60.073212 -3.833708,2.213392 -3.8337072,2.213392 0,-4.426784 0,-4.426785 3.8337082,2.213392 z"
inkscape:randomized="0"
inkscape:rounded="0"
inkscape:flatsided="false"
sodipodi:arg2="1.0471976"
sodipodi:arg1="0"
sodipodi:r2="2.5558052"
sodipodi:r1="5.1116104"
sodipodi:cy="60.073212"
sodipodi:cx="11.55581"
sodipodi:sides="3"
id="path4504"
style="fill:#4d4d4d;fill-opacity:0.90196078;stroke:#d3d3d3;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
sodipodi:type="star"
transform="matrix(0,1,-1,0,72.0074,71.7877)"
inkscape:transform-center-y="1.2779029" />
<path
inkscape:transform-center-y="-1.2779026"
transform="matrix(0,-1,-1,0,96,96)"
sodipodi:type="star"
style="fill:#4d4d4d;fill-opacity:0.90196078;stroke:#d3d3d3;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
id="path4506"
sodipodi:sides="3"
sodipodi:cx="11.55581"
sodipodi:cy="60.073212"
sodipodi:r1="5.1116104"
sodipodi:r2="2.5558052"
sodipodi:arg1="0"
sodipodi:arg2="1.0471976"
inkscape:flatsided="false"
inkscape:rounded="0"
inkscape:randomized="0"
d="m 16.66742,60.073212 -3.833708,2.213392 -3.8337072,2.213392 0,-4.426784 0,-4.426785 3.8337082,2.213392 z" />
<path
sodipodi:nodetypes="cccc"
inkscape:connector-curvature="0"
id="path4615-5"
d="m 171.82574,65.174193 16.34854,0 -8.17427,-13.348454 z"
style="fill:#fbb917;fill-opacity:1;fill-rule:evenodd;stroke:#fbb917;stroke-width:1.65161395;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 179,55 0,6 2,0 0,-6"
id="path4300"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccc" />
<path
style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 179,62 0,2 2,0 0,-2"
id="path4300-6"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccc" />
<path
style="fill:#ffffff;fill-opacity:0.8;fill-rule:evenodd;stroke:#ffffff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:0.8"
d="M 99.994369,113.0221 102,114.98353 l 7,-6.9558 3,0.97227 2,-1 1,-2 0,-3 -3,3 -3,-3 3,-3 -3,0 -2,1 -1,2 0.99437,3.0221 z"
id="path4268"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccccccccccccc" />
<rect
id="rect4175-3-5"
height="16"
width="16"
y="4"
x="220"
style="fill:#4c4c4c;fill-opacity:1;stroke:none;stroke-width:0" />
<path
style="fill:#ffffff;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 234,6 0,2 -5,5 0,5 -2,0 0,-5 -5,-5 0,-2"
id="path3546"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccc" />
<g
transform="matrix(1.3333328,0,0,-1.5999992,-139.9999,127.19999)"
id="g4383-6">
<rect
id="rect4385-2"
height="1.2499905"
width="5.9999924"
y="12.625005"
x="198.00002"
style="fill:#ffffff;fill-opacity:0.8;stroke:#000000;stroke-width:0" />
<rect
style="fill:#ffffff;fill-opacity:0.8;stroke:#000000;stroke-width:0"
x="198.00002"
y="15.125007"
width="7.4999928"
height="1.2499949"
id="rect4387-9" />
<rect
style="fill:#ffffff;fill-opacity:0.8;stroke:#000000;stroke-width:0"
x="198.00002"
y="7.6250024"
width="2.9999909"
height="1.2499905"
id="rect4389-1-0" />
<rect
style="fill:#ffffff;fill-opacity:0.8;stroke:#000000;stroke-width:0"
x="198.00002"
y="10.125004"
width="4.4999919"
height="1.2499905"
id="rect4389-1-9" />
<path
style="fill:#ffffff;fill-opacity:0.8;fill-rule:evenodd;stroke:none;stroke-width:0.68465352px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 207.00001,16.375004 0,-5.625005 -2.25,0 3,-3.1250014 3,3.1250014 -2.25,0 0,5.625005 -1.5,0"
id="path4402"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccc" />
</g>
<path
style="fill:#ffffff;fill-opacity:0.8;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 164,100 0,3 -6,6 0,7 -4,0 0,-7 -6,-6 0,-3"
id="path3546-2-2"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccc" />
<rect
style="fill:#4c4c4c;fill-opacity:1;stroke:none;stroke-width:0"
id="svg_1-3"
height="16"
width="16"
y="28"
x="4" />
<path
sodipodi:nodetypes="ccccccccc"
inkscape:connector-curvature="0"
id="path4402-5-7"
d="m 15,41 0,-7 -4,0 0,3 -5,-4 5,-4 0,3 6,0 0,9"
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.68465352px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
</svg>
... ...
.jsoneditor input, .jsoneditor input:not([type]), .jsoneditor input[type=search], .jsoneditor input[type=text], .jsoneditor-modal input, .jsoneditor-modal input:not([type]), .jsoneditor-modal input[type=search], .jsoneditor-modal input[type=text] {
height: auto;
border: inherit;
box-shadow: none;
font-size: inherit;
box-sizing: inherit;
padding: inherit;
font-family: inherit;
transition: none;
line-height: inherit
}
.jsoneditor input:focus, .jsoneditor input:not([type]):focus, .jsoneditor input[type=search]:focus, .jsoneditor input[type=text]:focus, .jsoneditor-modal input:focus, .jsoneditor-modal input:not([type]):focus, .jsoneditor-modal input[type=search]:focus, .jsoneditor-modal input[type=text]:focus {
border: inherit;
box-shadow: inherit
}
.jsoneditor textarea, .jsoneditor-modal textarea {
height: inherit
}
.jsoneditor select, .jsoneditor-modal select {
display: inherit;
height: inherit
}
.jsoneditor label, .jsoneditor-modal label {
font-size: inherit;
font-weight: inherit;
color: inherit
}
.jsoneditor table, .jsoneditor-modal table {
border-collapse: collapse;
width: auto
}
.jsoneditor td, .jsoneditor th, .jsoneditor-modal td, .jsoneditor-modal th {
padding: 0;
display: table-cell;
text-align: left;
vertical-align: inherit;
border-radius: inherit
}
.jsoneditor .autocomplete.dropdown {
position: absolute;
background: #fff;
box-shadow: 2px 2px 12px rgba(128, 128, 128, .3);
border: 1px solid #d3d3d3;
overflow-x: hidden;
overflow-y: auto;
cursor: default;
margin: 0;
padding: 5px;
text-align: left;
outline: 0;
font-family: "dejavu sans mono", "droid sans mono", consolas, monaco, "lucida console", "courier new", courier, monospace, sans-serif;
font-size: 10pt
}
.jsoneditor .autocomplete.dropdown .item {
color: #1a1a1a
}
.jsoneditor .autocomplete.dropdown .item.hover {
background-color: #ebebeb
}
.jsoneditor .autocomplete.hint {
color: #a1a1a1;
top: 4px;
left: 4px
}
.jsoneditor-contextmenu-root {
position: relative;
width: 0;
height: 0
}
.jsoneditor-contextmenu {
position: absolute;
box-sizing: content-box;
z-index: 2
}
.jsoneditor-contextmenu .jsoneditor-menu {
position: relative;
left: 0;
top: 0;
width: 128px;
height: auto;
background: #fff;
border: 1px solid #d3d3d3;
box-shadow: 2px 2px 12px rgba(128, 128, 128, .3);
list-style: none;
margin: 0;
padding: 0
}
.jsoneditor-contextmenu .jsoneditor-menu button {
position: relative;
padding: 0 8px 0 0;
margin: 0;
width: 128px;
height: auto;
border: none;
cursor: pointer;
color: #4d4d4d;
background: 0 0;
font-size: 10pt;
font-family: arial, sans-serif;
box-sizing: border-box;
text-align: left
}
.jsoneditor-contextmenu .jsoneditor-menu button::-moz-focus-inner {
padding: 0;
border: 0
}
.jsoneditor-contextmenu .jsoneditor-menu button.jsoneditor-default {
width: 96px
}
.jsoneditor-contextmenu .jsoneditor-menu button.jsoneditor-expand {
float: right;
width: 32px;
height: 24px;
border-left: 1px solid #e5e5e5
}
.jsoneditor-contextmenu .jsoneditor-menu li {
overflow: hidden
}
.jsoneditor-contextmenu .jsoneditor-menu li ul {
display: none;
position: relative;
left: -10px;
top: 0;
border: none;
box-shadow: inset 0 0 10px rgba(128, 128, 128, .5);
padding: 0 10px;
-webkit-transition: all .3s ease-out;
-moz-transition: all .3s ease-out;
-o-transition: all .3s ease-out;
transition: all .3s ease-out
}
.jsoneditor-contextmenu .jsoneditor-menu li ul .jsoneditor-icon {
margin-left: 24px
}
.jsoneditor-contextmenu .jsoneditor-menu li ul li button {
padding-left: 24px;
animation: all ease-in-out 1s
}
.jsoneditor-contextmenu .jsoneditor-menu li button .jsoneditor-expand {
position: absolute;
top: 0;
right: 0;
width: 24px;
height: 24px;
padding: 0;
margin: 0 4px 0 0;
background-image: url(./img/jsoneditor-icons.svg);
background-position: 0 -72px
}
.jsoneditor-contextmenu .jsoneditor-icon {
position: absolute;
top: 0;
left: 0;
width: 24px;
height: 24px;
border: none;
padding: 0;
margin: 0;
background-image: url(./img/jsoneditor-icons.svg)
}
.jsoneditor-contextmenu .jsoneditor-text {
padding: 4px 0 4px 24px;
word-wrap: break-word
}
.jsoneditor-contextmenu .jsoneditor-text.jsoneditor-right-margin {
padding-right: 24px
}
.jsoneditor-contextmenu .jsoneditor-separator {
height: 0;
border-top: 1px solid #e5e5e5;
padding-top: 5px;
margin-top: 5px
}
.jsoneditor-contextmenu button.jsoneditor-remove .jsoneditor-icon {
background-position: -24px 0
}
.jsoneditor-contextmenu button.jsoneditor-append .jsoneditor-icon {
background-position: 0 0
}
.jsoneditor-contextmenu button.jsoneditor-insert .jsoneditor-icon {
background-position: 0 0
}
.jsoneditor-contextmenu button.jsoneditor-duplicate .jsoneditor-icon {
background-position: -48px 0
}
.jsoneditor-contextmenu button.jsoneditor-sort-asc .jsoneditor-icon {
background-position: -168px 0
}
.jsoneditor-contextmenu button.jsoneditor-sort-desc .jsoneditor-icon {
background-position: -192px 0
}
.jsoneditor-contextmenu button.jsoneditor-transform .jsoneditor-icon {
background-position: -216px 0
}
.jsoneditor-contextmenu button.jsoneditor-extract .jsoneditor-icon {
background-position: 0 -24px
}
.jsoneditor-contextmenu button.jsoneditor-type-string .jsoneditor-icon {
background-position: -144px 0
}
.jsoneditor-contextmenu button.jsoneditor-type-auto .jsoneditor-icon {
background-position: -120px 0
}
.jsoneditor-contextmenu button.jsoneditor-type-object .jsoneditor-icon {
background-position: -72px 0
}
.jsoneditor-contextmenu button.jsoneditor-type-array .jsoneditor-icon {
background-position: -96px 0
}
.jsoneditor-contextmenu button.jsoneditor-type-modes .jsoneditor-icon {
background-image: none;
width: 6px
}
.jsoneditor-contextmenu li, .jsoneditor-contextmenu ul {
box-sizing: content-box;
position: relative
}
.jsoneditor-contextmenu .jsoneditor-menu button:focus, .jsoneditor-contextmenu .jsoneditor-menu button:hover {
color: #1a1a1a;
background-color: #f5f5f5;
outline: 0
}
.jsoneditor-contextmenu .jsoneditor-menu li button.jsoneditor-selected, .jsoneditor-contextmenu .jsoneditor-menu li button.jsoneditor-selected:focus, .jsoneditor-contextmenu .jsoneditor-menu li button.jsoneditor-selected:hover {
color: #fff;
background-color: #ee422e
}
.jsoneditor-contextmenu .jsoneditor-menu li ul li button:focus, .jsoneditor-contextmenu .jsoneditor-menu li ul li button:hover {
background-color: #f5f5f5
}
.jsoneditor-modal {
max-width: 95%;
border-radius: 2px !important;
padding: 45px 15px 15px 15px !important;
box-shadow: 2px 2px 12px rgba(128, 128, 128, .3);
color: #4d4d4d;
line-height: 1.3em
}
.jsoneditor-modal.jsoneditor-modal-transform {
width: 600px !important
}
.jsoneditor-modal .pico-modal-header {
position: absolute;
box-sizing: border-box;
top: 0;
left: 0;
width: 100%;
padding: 0 10px;
height: 30px;
line-height: 30px;
font-family: arial, sans-serif;
font-size: 11pt;
background: #3883fa;
color: #fff
}
.jsoneditor-modal table {
width: 100%
}
.jsoneditor-modal table td {
padding: 3px 0
}
.jsoneditor-modal table td.jsoneditor-modal-input {
text-align: right;
padding-right: 0;
white-space: nowrap
}
.jsoneditor-modal table td.jsoneditor-modal-actions {
padding-top: 15px
}
.jsoneditor-modal table th {
vertical-align: middle
}
.jsoneditor-modal p:first-child {
margin-top: 0
}
.jsoneditor-modal a {
color: #3883fa
}
.jsoneditor-modal .jsoneditor-jmespath-block {
margin-bottom: 10px
}
.jsoneditor-modal .pico-close {
background: 0 0 !important;
font-size: 24px !important;
top: 7px !important;
right: 7px !important;
color: #fff
}
.jsoneditor-modal input {
padding: 4px
}
.jsoneditor-modal input[type=text] {
cursor: inherit
}
.jsoneditor-modal input[disabled] {
background: #d3d3d3;
color: grey
}
.jsoneditor-modal .jsoneditor-select-wrapper {
position: relative;
display: inline-block
}
.jsoneditor-modal .jsoneditor-select-wrapper:after {
content: "";
width: 0;
height: 0;
border-left: 5px solid transparent;
border-right: 5px solid transparent;
border-top: 6px solid #666;
position: absolute;
right: 8px;
top: 14px;
pointer-events: none
}
.jsoneditor-modal select {
padding: 3px 24px 3px 10px;
min-width: 180px;
max-width: 350px;
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
text-indent: 0;
text-overflow: "";
font-size: 10pt;
line-height: 1.5em
}
.jsoneditor-modal select::-ms-expand {
display: none
}
.jsoneditor-modal .jsoneditor-button-group input {
padding: 4px 10px;
margin: 0;
border-radius: 0;
border-left-style: none
}
.jsoneditor-modal .jsoneditor-button-group input.jsoneditor-button-first {
border-top-left-radius: 3px;
border-bottom-left-radius: 3px;
border-left-style: solid
}
.jsoneditor-modal .jsoneditor-button-group input.jsoneditor-button-last {
border-top-right-radius: 3px;
border-bottom-right-radius: 3px
}
.jsoneditor-modal .jsoneditor-transform-preview {
background: #f5f5f5;
height: 200px
}
.jsoneditor-modal .jsoneditor-transform-preview.jsoneditor-error {
color: #ee422e
}
.jsoneditor-modal .jsoneditor-jmespath-wizard {
line-height: 1.2em;
width: 100%;
padding: 0;
border-radius: 3px
}
.jsoneditor-modal .jsoneditor-jmespath-label {
font-weight: 700;
color: #1e90ff;
margin-top: 20px;
margin-bottom: 5px
}
.jsoneditor-modal .jsoneditor-jmespath-wizard-table {
width: 100%;
border-collapse: collapse
}
.jsoneditor-modal .jsoneditor-jmespath-wizard-label {
font-style: italic;
margin: 4px 0 2px 0
}
.jsoneditor-modal .jsoneditor-inline {
position: relative;
display: inline-block;
width: 100%;
padding-top: 2px;
padding-bottom: 2px
}
.jsoneditor-modal .jsoneditor-inline:not(:last-child) {
padding-right: 2px
}
.jsoneditor-modal .jsoneditor-jmespath-filter {
display: flex;
flex-wrap: wrap
}
.jsoneditor-modal .jsoneditor-jmespath-filter-field {
width: 180px
}
.jsoneditor-modal .jsoneditor-jmespath-filter-relation {
width: 100px
}
.jsoneditor-modal .jsoneditor-jmespath-filter-value {
min-width: 180px;
flex: 1
}
.jsoneditor-modal .jsoneditor-jmespath-sort-field {
width: 170px
}
.jsoneditor-modal .jsoneditor-jmespath-sort-order {
width: 150px
}
.jsoneditor-modal .jsoneditor-jmespath-select-fields {
width: 100%
}
.jsoneditor-modal .selectr-selected {
border-color: #d3d3d3;
padding: 4px 28px 4px 8px
}
.jsoneditor-modal .selectr-selected .selectr-tag {
background-color: #3883fa;
border-radius: 5px
}
.jsoneditor-modal table td, .jsoneditor-modal table th {
text-align: left;
vertical-align: middle;
font-weight: 400;
color: #4d4d4d;
border-spacing: 0;
border-collapse: collapse
}
.jsoneditor-modal #query, .jsoneditor-modal input, .jsoneditor-modal input[type=text], .jsoneditor-modal input[type=text]:focus, .jsoneditor-modal select, .jsoneditor-modal textarea {
background: #fff;
border: 1px solid #d3d3d3;
color: #4d4d4d;
border-radius: 3px;
padding: 4px
}
.jsoneditor-modal, .jsoneditor-modal #query, .jsoneditor-modal input, .jsoneditor-modal input[type=text], .jsoneditor-modal option, .jsoneditor-modal select, .jsoneditor-modal table td, .jsoneditor-modal table th, .jsoneditor-modal textarea {
font-size: 10.5pt;
font-family: arial, sans-serif
}
.jsoneditor-modal #query, .jsoneditor-modal .jsoneditor-transform-preview {
font-family: "dejavu sans mono", "droid sans mono", consolas, monaco, "lucida console", "courier new", courier, monospace, sans-serif;
font-size: 10pt;
width: 100%;
box-sizing: border-box
}
.jsoneditor-modal input[type=button], .jsoneditor-modal input[type=submit] {
background: #f5f5f5;
padding: 4px 20px
}
.jsoneditor-modal input, .jsoneditor-modal select {
cursor: pointer
}
.jsoneditor-modal .jsoneditor-button-group.jsoneditor-button-group-value-asc input.jsoneditor-button-asc, .jsoneditor-modal .jsoneditor-button-group.jsoneditor-button-group-value-desc input.jsoneditor-button-desc {
background: #3883fa;
border-color: #3883fa;
color: #fff
}
.jsoneditor {
color: #1a1a1a;
border: thin solid #3883fa;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
box-sizing: border-box;
width: 100%;
height: 100%;
position: relative;
padding: 0;
line-height: 100%
}
div.jsoneditor-default, div.jsoneditor-field, div.jsoneditor-readonly, div.jsoneditor-value {
border: 1px solid transparent;
min-height: 16px;
min-width: 32px;
padding: 2px;
margin: 1px;
word-wrap: break-word;
float: left
}
div.jsoneditor-field p, div.jsoneditor-value p {
margin: 0
}
div.jsoneditor-value {
word-break: break-word
}
div.jsoneditor-value.jsoneditor-empty::after {
content: "value"
}
div.jsoneditor-value.jsoneditor-string {
color: #006000
}
div.jsoneditor-value.jsoneditor-number {
color: #ee422e
}
div.jsoneditor-value.jsoneditor-boolean {
color: #ff8c00
}
div.jsoneditor-value.jsoneditor-null {
color: #004ed0
}
div.jsoneditor-value.jsoneditor-color-value {
color: #1a1a1a
}
div.jsoneditor-value.jsoneditor-invalid {
color: #1a1a1a
}
div.jsoneditor-readonly {
min-width: 16px;
color: grey
}
div.jsoneditor-empty {
border-color: #d3d3d3;
border-style: dashed;
border-radius: 2px
}
div.jsoneditor-field.jsoneditor-empty::after {
content: "field"
}
div.jsoneditor td {
vertical-align: top
}
div.jsoneditor td.jsoneditor-separator {
padding: 3px 0;
vertical-align: top;
color: grey
}
div.jsoneditor td.jsoneditor-tree {
vertical-align: top
}
div.jsoneditor.busy pre.jsoneditor-preview {
background: #f5f5f5;
color: grey
}
div.jsoneditor.busy div.jsoneditor-busy {
display: inherit
}
div.jsoneditor code.jsoneditor-preview {
background: 0 0
}
div.jsoneditor.jsoneditor-mode-preview pre.jsoneditor-preview {
width: 100%;
height: 100%;
box-sizing: border-box;
overflow: auto;
padding: 2px;
margin: 0;
white-space: pre-wrap;
word-break: break-all
}
div.jsoneditor-default {
color: grey;
padding-left: 10px
}
div.jsoneditor-tree {
width: 100%;
height: 100%;
position: relative;
overflow: auto;
background: #fff
}
div.jsoneditor-tree button.jsoneditor-button {
width: 24px;
height: 24px;
padding: 0;
margin: 0;
border: none;
cursor: pointer;
background-color: transparent;
background-image: url(./img/jsoneditor-icons.svg)
}
div.jsoneditor-tree button.jsoneditor-button:focus {
background-color: #f5f5f5;
outline: #e5e5e5 solid 1px
}
div.jsoneditor-tree button.jsoneditor-collapsed {
background-position: 0 -48px
}
div.jsoneditor-tree button.jsoneditor-expanded {
background-position: 0 -72px
}
div.jsoneditor-tree button.jsoneditor-contextmenu-button {
background-position: -48px -72px
}
div.jsoneditor-tree button.jsoneditor-invisible {
visibility: hidden;
background: 0 0
}
div.jsoneditor-tree button.jsoneditor-dragarea {
background-image: url(./img/jsoneditor-icons.svg);
background-position: -72px -72px;
cursor: move
}
div.jsoneditor-tree :focus {
outline: 0
}
div.jsoneditor-tree div.jsoneditor-show-more {
display: inline-block;
padding: 3px 4px;
margin: 2px 0;
background-color: #e5e5e5;
border-radius: 3px;
color: grey;
font-family: arial, sans-serif;
font-size: 10pt
}
div.jsoneditor-tree div.jsoneditor-show-more a {
display: inline-block;
color: grey
}
div.jsoneditor-tree div.jsoneditor-color {
display: inline-block;
width: 12px;
height: 12px;
margin: 4px;
border: 1px solid grey;
cursor: pointer
}
div.jsoneditor-tree div.jsoneditor-date {
background: #a1a1a1;
color: #fff;
font-family: arial, sans-serif;
border-radius: 3px;
display: inline-block;
padding: 3px;
margin: 0 3px
}
div.jsoneditor-tree table.jsoneditor-tree {
border-collapse: collapse;
border-spacing: 0;
width: 100%
}
div.jsoneditor-tree .jsoneditor-button.jsoneditor-schema-error {
width: 24px;
height: 24px;
padding: 0;
margin: 0 4px 0 0;
background-image: url(./img/jsoneditor-icons.svg);
background-position: -168px -48px;
background-color: transparent
}
div.jsoneditor-outer {
position: static;
width: 100%;
height: 100%;
margin: 0;
padding: 0;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
box-sizing: border-box
}
div.jsoneditor-outer.has-nav-bar {
margin-top: -26px;
padding-top: 26px
}
div.jsoneditor-outer.has-nav-bar.has-main-menu-bar {
margin-top: -61px;
padding-top: 61px
}
div.jsoneditor-outer.has-status-bar {
margin-bottom: -26px;
padding-bottom: 26px
}
div.jsoneditor-outer.has-main-menu-bar {
margin-top: -35px;
padding-top: 35px
}
div.jsoneditor-busy {
position: absolute;
top: 15%;
left: 0;
box-sizing: border-box;
width: 100%;
text-align: center;
display: none
}
div.jsoneditor-busy span {
background-color: #ffffab;
border: 1px solid #fe0;
border-radius: 3px;
padding: 5px 15px;
box-shadow: 0 0 5px rgba(0, 0, 0, .4)
}
div.jsoneditor-field.jsoneditor-empty::after, div.jsoneditor-value.jsoneditor-empty::after {
pointer-events: none;
color: #d3d3d3;
font-size: 8pt
}
a.jsoneditor-value.jsoneditor-url, div.jsoneditor-value.jsoneditor-url {
color: #006000;
text-decoration: underline
}
a.jsoneditor-value.jsoneditor-url {
display: inline-block;
padding: 2px;
margin: 2px
}
a.jsoneditor-value.jsoneditor-url:focus, a.jsoneditor-value.jsoneditor-url:hover {
color: #ee422e
}
div.jsoneditor-field.jsoneditor-highlight, div.jsoneditor-field[contenteditable=true]:focus, div.jsoneditor-field[contenteditable=true]:hover, div.jsoneditor-value.jsoneditor-highlight, div.jsoneditor-value[contenteditable=true]:focus, div.jsoneditor-value[contenteditable=true]:hover {
background-color: #ffffab;
border: 1px solid #fe0;
border-radius: 2px
}
div.jsoneditor-field.jsoneditor-highlight-active, div.jsoneditor-field.jsoneditor-highlight-active:focus, div.jsoneditor-field.jsoneditor-highlight-active:hover, div.jsoneditor-value.jsoneditor-highlight-active, div.jsoneditor-value.jsoneditor-highlight-active:focus, div.jsoneditor-value.jsoneditor-highlight-active:hover {
background-color: #fe0;
border: 1px solid #ffc700;
border-radius: 2px
}
div.jsoneditor-value.jsoneditor-array, div.jsoneditor-value.jsoneditor-object {
min-width: 16px
}
div.jsoneditor-tree button.jsoneditor-contextmenu-button.jsoneditor-selected, div.jsoneditor-tree button.jsoneditor-contextmenu-button:focus, div.jsoneditor-tree button.jsoneditor-contextmenu-button:hover, tr.jsoneditor-selected.jsoneditor-first button.jsoneditor-contextmenu-button {
background-position: -48px -48px
}
div.jsoneditor-tree div.jsoneditor-show-more a:focus, div.jsoneditor-tree div.jsoneditor-show-more a:hover {
color: #ee422e
}
.ace-jsoneditor, textarea.jsoneditor-text {
min-height: 150px
}
.ace-jsoneditor *, textarea.jsoneditor-text * {
font-family: "dejavu sans mono", "droid sans mono", consolas, monaco, "lucida console", "courier new", courier, monospace, sans-serif
}
textarea.jsoneditor-text {
width: 100%;
height: 100%;
margin: 0;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
box-sizing: border-box;
outline-width: 0;
border: none;
background-color: #fff;
resize: none
}
tr.jsoneditor-highlight, tr.jsoneditor-selected {
background-color: #d3d3d3
}
tr.jsoneditor-selected button.jsoneditor-contextmenu-button, tr.jsoneditor-selected button.jsoneditor-dragarea {
visibility: hidden
}
tr.jsoneditor-selected.jsoneditor-first button.jsoneditor-contextmenu-button, tr.jsoneditor-selected.jsoneditor-first button.jsoneditor-dragarea {
visibility: visible
}
div.jsoneditor-tree button.jsoneditor-dragarea:focus, div.jsoneditor-tree button.jsoneditor-dragarea:hover, tr.jsoneditor-selected.jsoneditor-first button.jsoneditor-dragarea {
background-position: -72px -48px
}
div.jsoneditor td, div.jsoneditor th, div.jsoneditor tr {
padding: 0;
margin: 0
}
.jsoneditor-popover, .jsoneditor-schema-error, div.jsoneditor td, div.jsoneditor textarea, div.jsoneditor th, div.jsoneditor-field, div.jsoneditor-value, pre.jsoneditor-preview {
font-family: "dejavu sans mono", "droid sans mono", consolas, monaco, "lucida console", "courier new", courier, monospace, sans-serif;
font-size: 10pt;
color: #1a1a1a
}
.jsoneditor-schema-error {
cursor: default;
display: inline-block;
height: 24px;
line-height: 24px;
position: relative;
text-align: center;
width: 24px
}
.jsoneditor-popover {
background-color: #4c4c4c;
border-radius: 3px;
box-shadow: 0 0 5px rgba(0, 0, 0, .4);
color: #fff;
padding: 7px 10px;
position: absolute;
cursor: auto;
width: 200px
}
.jsoneditor-popover.jsoneditor-above {
bottom: 32px;
left: -98px
}
.jsoneditor-popover.jsoneditor-above:before {
border-top: 7px solid #4c4c4c;
bottom: -7px
}
.jsoneditor-popover.jsoneditor-below {
top: 32px;
left: -98px
}
.jsoneditor-popover.jsoneditor-below:before {
border-bottom: 7px solid #4c4c4c;
top: -7px
}
.jsoneditor-popover.jsoneditor-left {
top: -7px;
right: 32px
}
.jsoneditor-popover.jsoneditor-left:before {
border-left: 7px solid #4c4c4c;
border-top: 7px solid transparent;
border-bottom: 7px solid transparent;
content: "";
top: 19px;
right: -14px;
left: inherit;
margin-left: inherit;
margin-top: -7px;
position: absolute
}
.jsoneditor-popover.jsoneditor-right {
top: -7px;
left: 32px
}
.jsoneditor-popover.jsoneditor-right:before {
border-right: 7px solid #4c4c4c;
border-top: 7px solid transparent;
border-bottom: 7px solid transparent;
content: "";
top: 19px;
left: -14px;
margin-left: inherit;
margin-top: -7px;
position: absolute
}
.jsoneditor-popover:before {
border-right: 7px solid transparent;
border-left: 7px solid transparent;
content: "";
display: block;
left: 50%;
margin-left: -7px;
position: absolute
}
.jsoneditor-text-errors tr.jump-to-line:hover {
text-decoration: underline;
cursor: pointer
}
.jsoneditor-schema-error:focus .jsoneditor-popover, .jsoneditor-schema-error:hover .jsoneditor-popover {
display: block;
animation: fade-in .3s linear 1, move-up .3s linear 1
}
@keyframes fade-in {
from {
opacity: 0
}
to {
opacity: 1
}
}
.jsoneditor .jsoneditor-validation-errors-container {
max-height: 130px;
overflow-y: auto
}
.jsoneditor .jsoneditor-validation-errors {
width: 100%;
overflow: hidden
}
.jsoneditor .jsoneditor-additional-errors {
position: absolute;
margin: auto;
bottom: 31px;
left: calc(50% - 92px);
color: grey;
background-color: #ebebeb;
padding: 7px 15px;
border-radius: 8px
}
.jsoneditor .jsoneditor-additional-errors.visible {
visibility: visible;
opacity: 1;
transition: opacity 2s linear
}
.jsoneditor .jsoneditor-additional-errors.hidden {
visibility: hidden;
opacity: 0;
transition: visibility 0s 2s, opacity 2s linear
}
.jsoneditor .jsoneditor-text-errors {
width: 100%;
border-collapse: collapse;
border-top: 1px solid #ffc700
}
.jsoneditor .jsoneditor-text-errors td {
padding: 3px 6px;
vertical-align: middle
}
.jsoneditor .jsoneditor-text-errors td pre {
margin: 0;
white-space: pre-wrap
}
.jsoneditor .jsoneditor-text-errors tr {
background-color: #ffffab
}
.jsoneditor .jsoneditor-text-errors tr.parse-error {
background-color: #ee2e2e70
}
.jsoneditor-text-errors .jsoneditor-schema-error {
border: none;
width: 24px;
height: 24px;
padding: 0;
margin: 0 4px 0 0;
cursor: pointer
}
.jsoneditor-text-errors tr .jsoneditor-schema-error {
background-image: url(./img/jsoneditor-icons.svg);
background-position: -168px -48px;
background-color: transparent
}
.jsoneditor-text-errors tr.parse-error .jsoneditor-schema-error {
background-image: url(./img/jsoneditor-icons.svg);
background-position: -25px 0;
background-color: transparent
}
.jsoneditor-anchor {
cursor: pointer
}
.jsoneditor-anchor .picker_wrapper.popup.popup_bottom {
top: 28px;
left: -10px
}
.fadein {
-webkit-animation: fadein .3s;
animation: fadein .3s;
-moz-animation: fadein .3s;
-o-animation: fadein .3s
}
@keyframes fadein {
0% {
opacity: 0
}
100% {
opacity: 1
}
}
.jsoneditor-modal input[type=search].selectr-input {
border: 1px solid #d3d3d3;
width: calc(100% - 4px);
margin: 2px;
padding: 4px;
box-sizing: border-box
}
.jsoneditor-modal button.selectr-input-clear {
right: 8px
}
.jsoneditor-menu {
width: 100%;
height: 35px;
padding: 2px;
margin: 0;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
box-sizing: border-box;
color: #fff;
background-color: #3883fa;
border-bottom: 1px solid #3883fa
}
.jsoneditor-menu > .jsoneditor-modes > button, .jsoneditor-menu > button {
width: 26px;
height: 26px;
margin: 2px;
padding: 0;
border-radius: 2px;
border: 1px solid transparent;
background-color: transparent;
background-image: url(./img/jsoneditor-icons.svg);
color: #fff;
opacity: .8;
font-family: arial, sans-serif;
font-size: 10pt;
float: left
}
.jsoneditor-menu > .jsoneditor-modes > button:hover, .jsoneditor-menu > button:hover {
background-color: rgba(255, 255, 255, .2);
border: 1px solid rgba(255, 255, 255, .4)
}
.jsoneditor-menu > .jsoneditor-modes > button:active, .jsoneditor-menu > .jsoneditor-modes > button:focus, .jsoneditor-menu > button:active, .jsoneditor-menu > button:focus {
background-color: rgba(255, 255, 255, .3)
}
.jsoneditor-menu > .jsoneditor-modes > button:disabled, .jsoneditor-menu > button:disabled {
opacity: .5;
background-color: transparent;
border: none
}
.jsoneditor-menu > button.jsoneditor-collapse-all {
background-position: 0 -96px
}
.jsoneditor-menu > button.jsoneditor-expand-all {
background-position: 0 -120px
}
.jsoneditor-menu > button.jsoneditor-sort {
background-position: -120px -96px
}
.jsoneditor-menu > button.jsoneditor-transform {
background-position: -144px -96px
}
.jsoneditor.jsoneditor-mode-form > .jsoneditor-menu > button.jsoneditor-sort, .jsoneditor.jsoneditor-mode-form > .jsoneditor-menu > button.jsoneditor-transform, .jsoneditor.jsoneditor-mode-view > .jsoneditor-menu > button.jsoneditor-sort, .jsoneditor.jsoneditor-mode-view > .jsoneditor-menu > button.jsoneditor-transform {
display: none
}
.jsoneditor-menu > button.jsoneditor-undo {
background-position: -24px -96px
}
.jsoneditor-menu > button.jsoneditor-undo:disabled {
background-position: -24px -120px
}
.jsoneditor-menu > button.jsoneditor-redo {
background-position: -48px -96px
}
.jsoneditor-menu > button.jsoneditor-redo:disabled {
background-position: -48px -120px
}
.jsoneditor-menu > button.jsoneditor-compact {
background-position: -72px -96px
}
.jsoneditor-menu > button.jsoneditor-format {
background-position: -72px -120px
}
.jsoneditor-menu > button.jsoneditor-repair {
background-position: -96px -96px
}
.jsoneditor-menu > .jsoneditor-modes {
display: inline-block;
float: left
}
.jsoneditor-menu > .jsoneditor-modes > button {
background-image: none;
width: auto;
padding-left: 6px;
padding-right: 6px
}
.jsoneditor-menu > .jsoneditor-modes > button.jsoneditor-separator, .jsoneditor-menu > button.jsoneditor-separator {
margin-left: 10px
}
.jsoneditor-menu a {
font-family: arial, sans-serif;
font-size: 10pt;
color: #fff;
opacity: .8;
vertical-align: middle
}
.jsoneditor-menu a:hover {
opacity: 1
}
.jsoneditor-menu a.jsoneditor-poweredBy {
font-size: 8pt;
position: absolute;
right: 0;
top: 0;
padding: 10px
}
.jsoneditor-navigation-bar {
width: 100%;
height: 26px;
line-height: 26px;
padding: 0;
margin: 0;
border-bottom: 1px solid #d3d3d3;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
box-sizing: border-box;
color: grey;
background-color: #ebebeb;
overflow: hidden;
font-family: arial, sans-serif;
font-size: 10pt
}
.jsoneditor-search {
font-family: arial, sans-serif;
position: absolute;
right: 4px;
top: 4px;
border-collapse: collapse;
border-spacing: 0;
display: flex
}
.jsoneditor-search input {
color: #1a1a1a;
width: 120px;
border: none;
outline: 0;
margin: 1px;
line-height: 20px;
font-family: arial, sans-serif
}
.jsoneditor-search button {
width: 16px;
height: 24px;
padding: 0;
margin: 0;
border: none;
background: url(./img/jsoneditor-icons.svg);
vertical-align: top
}
.jsoneditor-search button:hover {
background-color: transparent
}
.jsoneditor-search button.jsoneditor-refresh {
width: 18px;
background-position: -99px -73px
}
.jsoneditor-search button.jsoneditor-next {
cursor: pointer;
background-position: -124px -73px
}
.jsoneditor-search button.jsoneditor-next:hover {
background-position: -124px -49px
}
.jsoneditor-search button.jsoneditor-previous {
cursor: pointer;
background-position: -148px -73px;
margin-right: 2px
}
.jsoneditor-search button.jsoneditor-previous:hover {
background-position: -148px -49px
}
.jsoneditor-results {
font-family: arial, sans-serif;
color: #fff;
padding-right: 5px;
line-height: 26px
}
.jsoneditor-frame {
border: 1px solid transparent;
background-color: #fff;
padding: 0 2px;
margin: 0
}
.jsoneditor-statusbar {
line-height: 26px;
height: 26px;
color: grey;
background-color: #ebebeb;
border-top: 1px solid #d3d3d3;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
box-sizing: border-box;
font-size: 10pt
}
.jsoneditor-statusbar > .jsoneditor-curserinfo-val {
margin-right: 12px
}
.jsoneditor-statusbar > .jsoneditor-curserinfo-count {
margin-left: 4px
}
.jsoneditor-statusbar > .jsoneditor-validation-error-icon {
float: right;
width: 24px;
height: 24px;
padding: 0;
margin-top: 1px;
background-image: url(./img/jsoneditor-icons.svg);
background-position: -168px -48px;
cursor: pointer
}
.jsoneditor-statusbar > .jsoneditor-validation-error-count {
float: right;
margin: 0 4px 0 0;
cursor: pointer
}
.jsoneditor-statusbar > .jsoneditor-parse-error-icon {
float: right;
width: 24px;
height: 24px;
padding: 0;
margin: 1px;
background-image: url(./img/jsoneditor-icons.svg);
background-position: -25px 0
}
.jsoneditor-statusbar .jsoneditor-array-info a {
color: inherit
}
div.jsoneditor-statusbar > .jsoneditor-curserinfo-label, div.jsoneditor-statusbar > .jsoneditor-size-info {
margin: 0 4px
}
.jsoneditor-treepath {
padding: 0 5px;
overflow: hidden;
white-space: nowrap;
outline: 0
}
.jsoneditor-treepath.show-all {
word-wrap: break-word;
white-space: normal;
position: absolute;
background-color: #ebebeb;
z-index: 1;
box-shadow: 2px 2px 12px rgba(128, 128, 128, .3)
}
.jsoneditor-treepath.show-all span.jsoneditor-treepath-show-all-btn {
display: none
}
.jsoneditor-treepath div.jsoneditor-contextmenu-root {
position: absolute;
left: 0
}
.jsoneditor-treepath .jsoneditor-treepath-show-all-btn {
position: absolute;
background-color: #ebebeb;
left: 0;
height: 20px;
padding: 0 3px;
cursor: pointer
}
.jsoneditor-treepath .jsoneditor-treepath-element {
margin: 1px;
font-family: arial, sans-serif;
font-size: 10pt
}
.jsoneditor-treepath .jsoneditor-treepath-seperator {
margin: 2px;
font-size: 9pt;
font-family: arial, sans-serif
}
.jsoneditor-treepath span.jsoneditor-treepath-element:hover, .jsoneditor-treepath span.jsoneditor-treepath-seperator:hover {
cursor: pointer;
text-decoration: underline
}
/*!
* Selectr 2.4.0
* https://github.com/Mobius1/Selectr
*
* Released under the MIT license
*/
.selectr-container {
position: relative
}
.selectr-container li {
list-style: none
}
.selectr-hidden {
position: absolute;
overflow: hidden;
clip: rect(0, 0, 0, 0);
width: 1px;
height: 1px;
margin: -1px;
padding: 0;
border: 0 none
}
.selectr-visible {
position: absolute;
left: 0;
top: 0;
width: 100%;
height: 100%;
opacity: 0;
z-index: 11
}
.selectr-desktop.multiple .selectr-visible {
display: none
}
.selectr-desktop.multiple.native-open .selectr-visible {
top: 100%;
min-height: 200px !important;
height: auto;
opacity: 1;
display: block
}
.selectr-container.multiple.selectr-mobile .selectr-selected {
z-index: 0
}
.selectr-selected {
position: relative;
z-index: 1;
box-sizing: border-box;
width: 100%;
padding: 7px 28px 7px 14px;
cursor: pointer;
border: 1px solid #999;
border-radius: 3px;
background-color: #fff
}
.selectr-selected::before {
position: absolute;
top: 50%;
right: 10px;
width: 0;
height: 0;
content: "";
-o-transform: rotate(0) translate3d(0, -50%, 0);
-ms-transform: rotate(0) translate3d(0, -50%, 0);
-moz-transform: rotate(0) translate3d(0, -50%, 0);
-webkit-transform: rotate(0) translate3d(0, -50%, 0);
transform: rotate(0) translate3d(0, -50%, 0);
border-width: 4px 4px 0 4px;
border-style: solid;
border-color: #6c7a86 transparent transparent
}
.selectr-container.native-open .selectr-selected::before, .selectr-container.open .selectr-selected::before {
border-width: 0 4px 4px 4px;
border-style: solid;
border-color: transparent transparent #6c7a86
}
.selectr-label {
display: none;
overflow: hidden;
width: 100%;
white-space: nowrap;
text-overflow: ellipsis
}
.selectr-placeholder {
color: #6c7a86
}
.selectr-tags {
margin: 0;
padding: 0;
white-space: normal
}
.has-selected .selectr-tags {
margin: 0 0 -2px
}
.selectr-tag {
list-style: none;
position: relative;
float: left;
padding: 2px 25px 2px 8px;
margin: 0 2px 2px 0;
cursor: default;
color: #fff;
border: medium none;
border-radius: 10px;
background: #acb7bf none repeat scroll 0 0
}
.selectr-container.multiple.has-selected .selectr-selected {
padding: 5px 28px 5px 5px
}
.selectr-options-container {
position: absolute;
z-index: 10000;
top: calc(100% - 1px);
left: 0;
display: none;
box-sizing: border-box;
width: 100%;
border-width: 0 1px 1px;
border-style: solid;
border-color: transparent #999 #999;
border-radius: 0 0 3px 3px;
background-color: #fff
}
.selectr-container.open .selectr-options-container {
display: block
}
.selectr-input-container {
position: relative;
display: none
}
.selectr-clear, .selectr-input-clear, .selectr-tag-remove {
position: absolute;
top: 50%;
right: 22px;
width: 20px;
height: 20px;
padding: 0;
cursor: pointer;
-o-transform: translate3d(0, -50%, 0);
-ms-transform: translate3d(0, -50%, 0);
-moz-transform: translate3d(0, -50%, 0);
-webkit-transform: translate3d(0, -50%, 0);
transform: translate3d(0, -50%, 0);
border: medium none;
background-color: transparent;
z-index: 11
}
.selectr-clear, .selectr-input-clear {
display: none
}
.selectr-container.has-selected .selectr-clear, .selectr-input-container.active .selectr-input-clear {
display: block
}
.selectr-selected .selectr-tag-remove {
right: 2px
}
.selectr-clear::after, .selectr-clear::before, .selectr-input-clear::after, .selectr-input-clear::before, .selectr-tag-remove::after, .selectr-tag-remove::before {
position: absolute;
top: 5px;
left: 9px;
width: 2px;
height: 10px;
content: " ";
background-color: #6c7a86
}
.selectr-tag-remove::after, .selectr-tag-remove::before {
top: 4px;
width: 3px;
height: 12px;
background-color: #fff
}
.selectr-clear:before, .selectr-input-clear::before, .selectr-tag-remove::before {
-o-transform: rotate(45deg);
-ms-transform: rotate(45deg);
-moz-transform: rotate(45deg);
-webkit-transform: rotate(45deg);
transform: rotate(45deg)
}
.selectr-clear:after, .selectr-input-clear::after, .selectr-tag-remove::after {
-o-transform: rotate(-45deg);
-ms-transform: rotate(-45deg);
-moz-transform: rotate(-45deg);
-webkit-transform: rotate(-45deg);
transform: rotate(-45deg)
}
.selectr-input-container.active, .selectr-input-container.active .selectr-clear {
display: block
}
.selectr-input {
top: 5px;
left: 5px;
box-sizing: border-box;
width: calc(100% - 30px);
margin: 10px 15px;
padding: 7px 30px 7px 9px;
border: 1px solid #999;
border-radius: 3px
}
.selectr-notice {
display: none;
box-sizing: border-box;
width: 100%;
padding: 8px 16px;
border-top: 1px solid #999;
border-radius: 0 0 3px 3px;
background-color: #fff
}
.selectr-container.notice .selectr-notice {
display: block
}
.selectr-container.notice .selectr-selected {
border-radius: 3px 3px 0 0
}
.selectr-options {
position: relative;
top: calc(100% + 2px);
display: none;
overflow-x: auto;
overflow-y: scroll;
max-height: 200px;
margin: 0;
padding: 0
}
.selectr-container.notice .selectr-options-container, .selectr-container.open .selectr-input-container, .selectr-container.open .selectr-options {
display: block
}
.selectr-option {
position: relative;
display: block;
padding: 5px 20px;
list-style: outside none none;
cursor: pointer;
font-weight: 400
}
.selectr-options.optgroups > .selectr-option {
padding-left: 25px
}
.selectr-optgroup {
font-weight: 700;
padding: 0
}
.selectr-optgroup--label {
font-weight: 700;
margin-top: 10px;
padding: 5px 15px
}
.selectr-match {
text-decoration: underline
}
.selectr-option.selected {
background-color: #ddd
}
.selectr-option.active {
color: #fff;
background-color: #5897fb
}
.selectr-option.disabled {
opacity: .4
}
.selectr-option.excluded {
display: none
}
.selectr-container.open .selectr-selected {
border-color: #999 #999 transparent #999;
border-radius: 3px 3px 0 0
}
.selectr-container.open .selectr-selected::after {
-o-transform: rotate(180deg) translate3d(0, 50%, 0);
-ms-transform: rotate(180deg) translate3d(0, 50%, 0);
-moz-transform: rotate(180deg) translate3d(0, 50%, 0);
-webkit-transform: rotate(180deg) translate3d(0, 50%, 0);
transform: rotate(180deg) translate3d(0, 50%, 0)
}
.selectr-disabled {
opacity: .6
}
.has-selected .selectr-placeholder, .selectr-empty {
display: none
}
.has-selected .selectr-label {
display: block
}
.taggable .selectr-selected {
padding: 4px 28px 4px 4px
}
.taggable .selectr-selected::after {
display: table;
content: " ";
clear: both
}
.taggable .selectr-label {
width: auto
}
.taggable .selectr-tags {
float: left;
display: block
}
.taggable .selectr-placeholder {
display: none
}
.input-tag {
float: left;
min-width: 90px;
width: auto
}
.selectr-tag-input {
border: medium none;
padding: 3px 10px;
width: 100%;
font-family: inherit;
font-weight: inherit;
font-size: inherit
}
.selectr-input-container.loading::after {
position: absolute;
top: 50%;
right: 20px;
width: 20px;
height: 20px;
content: "";
-o-transform: translate3d(0, -50%, 0);
-ms-transform: translate3d(0, -50%, 0);
-moz-transform: translate3d(0, -50%, 0);
-webkit-transform: translate3d(0, -50%, 0);
transform: translate3d(0, -50%, 0);
-o-transform-origin: 50% 0 0;
-ms-transform-origin: 50% 0 0;
-moz-transform-origin: 50% 0 0;
-webkit-transform-origin: 50% 0 0;
transform-origin: 50% 0 0;
-moz-animation: .5s linear 0s normal forwards infinite running selectr-spin;
-webkit-animation: .5s linear 0s normal forwards infinite running selectr-spin;
animation: .5s linear 0s normal forwards infinite running selectr-spin;
border-width: 3px;
border-style: solid;
border-color: #aaa #ddd #ddd;
border-radius: 50%
}
@-webkit-keyframes selectr-spin {
0% {
-webkit-transform: rotate(0) translate3d(0, -50%, 0);
transform: rotate(0) translate3d(0, -50%, 0)
}
100% {
-webkit-transform: rotate(360deg) translate3d(0, -50%, 0);
transform: rotate(360deg) translate3d(0, -50%, 0)
}
}
@keyframes selectr-spin {
0% {
-webkit-transform: rotate(0) translate3d(0, -50%, 0);
transform: rotate(0) translate3d(0, -50%, 0)
}
100% {
-webkit-transform: rotate(360deg) translate3d(0, -50%, 0);
transform: rotate(360deg) translate3d(0, -50%, 0)
}
}
.selectr-container.open.inverted .selectr-selected {
border-color: transparent #999 #999;
border-radius: 0 0 3px 3px
}
.selectr-container.inverted .selectr-options-container {
border-width: 1px 1px 0;
border-color: #999 #999 transparent;
border-radius: 3px 3px 0 0;
background-color: #fff
}
.selectr-container.inverted .selectr-options-container {
top: auto;
bottom: calc(100% - 1px)
}
.selectr-container ::-webkit-input-placeholder {
color: #6c7a86;
opacity: 1
}
.selectr-container ::-moz-placeholder {
color: #6c7a86;
opacity: 1
}
.selectr-container :-ms-input-placeholder {
color: #6c7a86;
opacity: 1
}
.selectr-container ::placeholder {
color: #6c7a86;
opacity: 1
}
\ No newline at end of file
... ...
此 diff 太大无法显示。
... ... @@ -94,6 +94,12 @@ return [
// 附件预览
,'show.attachment.fob' => [\Controller\Attachment::class,'show']
// es
,'kibana' => [\Controller\Kibana::class,'index']
,'kibana.result' => [\Controller\Kibana::class,'result']
];
... ...
<template>
<div class="main">
<div id="edit">
</div>
<div id="result">
</div>
<el-button class="submit" @click="submit" :loading="loading">提交</el-button>
</div>
</template>
<script>
@import("/static/css/jsoneditor.min.css")
@import("/static/js/jsoneditor.min.js")
export default {
name: "kibana",
data() {
return {
loading:false,
editor: null,
result: null
}
},
created() {},
methods: {
submit(){
const data = {
json:this.editor.get()
};
console.log(data)
this.loading = true;
ajax().post('/kibana.result',data).then(res=>{
console.log(res)
this.loading = false;
this.result.set(res.data);
})
}
},
mounted() {
this.editor = new JSONEditor(document.getElementById("edit"), {
mode:"code",
enableSort: false,
enableTransform: false,
});
this.result = new JSONEditor(document.getElementById("result"), {
mode:"code",
enableSort: false,
enableTransform: false,
editable : false,
mainMenuBar : false
});
}
}
</script>
<style scoped>
.main{
display: flex;
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
#edit{
width: 50%;
}
#result{
width: 50%;
}
.submit{
position: fixed;
top: 2px;
left: calc(50% - 82px);
z-index: 9999;
width: 80px;
}
</style>
\ No newline at end of file
... ...