Skip to content

Commit

Permalink
fix: g2plot 2663 (#791)
Browse files Browse the repository at this point in the history
* fix: 修复bbox非法的时候 parse-style 导致 crash

* fix(🚨): auto eslint:fix

* test: add testcase for #791

* chore: add ci actions
  • Loading branch information
visiky authored Jul 8, 2021
1 parent 7b05e80 commit 70083c2
Show file tree
Hide file tree
Showing 7 changed files with 57 additions and 38 deletions.
28 changes: 28 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
name: CI

on: [push]

jobs:
build:
runs-on: macOS-latest

strategy:
matrix:
node-version: [12.x]

steps:
- uses: actions/checkout@v1
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v1
with:
node-version: ${{ matrix.node-version }}
- name: npm install and ci
run: |
npm install
npm run ci
env:
CI: true
- name: Coveralls
uses: coverallsapp/github-action@master
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
15 changes: 2 additions & 13 deletions packages/g-base/src/util/path.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ const parsePathString = function (pathString: string): PathCommand[] {
}

if (isArray(pathString)) {
return (pathString as unknown) as PathCommand[];
return pathString as unknown as PathCommand[];
}
const paramCounts = {
a: 7,
Expand Down Expand Up @@ -587,18 +587,7 @@ const bezlen = function (x1, y1, x2, y2, x3, y3, x4, y4, z) {
const z2 = z / 2;
const n = 12;
const Tvalues = [
-0.1252,
0.1252,
-0.3678,
0.3678,
-0.5873,
0.5873,
-0.7699,
0.7699,
-0.9041,
0.9041,
-0.9816,
0.9816,
-0.1252, 0.1252, -0.3678, 0.3678, -0.5873, 0.5873, -0.7699, 0.7699, -0.9041, 0.9041, -0.9816, 0.9816,
];
const Cvalues = [0.2491, 0.2491, 0.2335, 0.2335, 0.2032, 0.2032, 0.1601, 0.1601, 0.1069, 0.1069, 0.0472, 0.0472];
let sum = 0;
Expand Down
4 changes: 4 additions & 0 deletions packages/g-canvas/src/util/parse.ts
Original file line number Diff line number Diff line change
Expand Up @@ -172,6 +172,10 @@ export function parsePattern(context: CanvasRenderingContext2D, element: IElemen
}

export function parseStyle(context: CanvasRenderingContext2D, element: IElement, color: string) {
const bbox = element.getBBox();
if (isNaN(bbox.x) || isNaN(bbox.y) || isNaN(bbox.width) || isNaN(bbox.height)) {
return color;
}
if (isString(color)) {
if (color[1] === '(' || color[2] === '(') {
if (color[0] === 'l') {
Expand Down
12 changes: 2 additions & 10 deletions packages/g-canvas/tests/bugs/issue-444-spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -26,16 +26,8 @@ describe('#444', () => {
},
});
const arr = [
175.84088874080578,
186.12206002239975,
196.5130830703088,
206.84747231409375,
217.09029046810176,
227.54951033487814,
238.06394166293776,
248.29101292282533,
258.8908922907962,
269.7191946392174,
175.84088874080578, 186.12206002239975, 196.5130830703088, 206.84747231409375, 217.09029046810176,
227.54951033487814, 238.06394166293776, 248.29101292282533, 258.8908922907962, 269.7191946392174,
];
let count = 0;
function changePosition() {
Expand Down
21 changes: 18 additions & 3 deletions packages/g-canvas/tests/unit/util/parse-spec.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
const expect = require('chai').expect;
import { parseRadius } from '../../../src/util/parse';
import { parseRadius, parseStyle } from '../../../src/util/parse';
import Rect from '../../../src/shape/rect';
import { getColor } from '../../get-color';

Expand Down Expand Up @@ -32,6 +32,22 @@ describe('parse util test', () => {
expect(getColor(ctx, 10, 11)).eqls('#fffefe');
expect(getColor(ctx, 60, 11)).eqls('#ff7f7f');
expect(getColor(ctx, 100, 11)).eqls('#ff1919');
expect(parseStyle(ctx, rect, 'l(0) 0:#ffffff 1:#ff0000')).not.eqls('l(0) 0:#ffffff 1:#ff0000');
});

it('parse linear gradient, when elemenet is illegal', () => {
const rect = new Rect({
type: 'rect',
attrs: {
y: NaN,
width: NaN,
height: 2,
fill: 'l(0) 0:#ffffff 1:#ff0000',
},
});
rect.draw(ctx);

expect(parseStyle(ctx, rect, 'l(0) 0:#ffffff 1:#ff0000')).eqls('l(0) 0:#ffffff 1:#ff0000');
});

it('parse linear gradient 90', () => {
Expand Down Expand Up @@ -76,8 +92,7 @@ describe('parse util test', () => {
y: 110,
width: 100,
height: 100,
fill:
'p(a) data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjAwcHgiIGhlaWdodD0iMjAwcHgiIHZpZXdCb3g9IjAgMCAyMDAgMjAwIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgogICAgPCEtLSBHZW5lcmF0b3I6IFNrZXRjaCA0Ni4yICg0NDQ5NikgLSBodHRwOi8vd3d3LmJvaGVtaWFuY29kaW5nLmNvbS9za2V0Y2ggLS0+CiAgICA8dGl0bGU+QXJ0Ym9hcmQ8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZGVmcz48L2RlZnM+CiAgICA8ZyBpZD0ibG9nbyIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9IkFydGJvYXJkIj4KICAgICAgICAgICAgPGcgaWQ9Ikdyb3VwLTQiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEwLjAwMDAwMCwgNzAuMDAwMDAwKSI+CiAgICAgICAgICAgICAgICA8ZyBpZD0i5b2p6ImyIj4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTA1Ljg4NDEwMSw0LjMzMDEyNTgzIEwxMDUuODg0MTAxLDAuNDgxMTI1MDkzIEw4My40MTE3NjQ3LDAuNDgxMTI1MDkzIEw4My40MTE3NjQ3LDAuNDgxMTI1MDkzIEM4MS4yMDI2MjU3LDAuNDgxMTI1MDkzIDc5LjQxMTc2NDcsMi4yNzE5ODYwOSA3OS40MTE3NjQ3LDQuNDgxMTI1MDkgTDc5LjQxMTc2NDcsMzMuMTk1OTkwMyBMODMuMjYyMDMyMSwzMy4xOTU5OTAzIEw4My4yNjIwMzIxLDYuMzMwMTI1ODMgTDgzLjI2MjAzMjEsNi4zMzAxMjU4MyBDODMuMjYyMDMyMSw1LjIyNTU1NjMzIDg0LjE1NzQ2MjYsNC4zMzAxMjU4MyA4NS4yNjIwMzIxLDQuMzMwMTI1ODMgTDEwNS44ODQxMDEsNC4zMzAxMjU4MyBaIiBpZD0iUGF0aC0zLUNvcHktNSIgZmlsbD0iIzAwMDAwMCIgZmlsbC1ydWxlPSJub256ZXJvIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGgtMi1Db3B5LTQiIGZpbGw9IiMxMDhFRTkiIHBvaW50cz0iMCA2MC4xNDA2MzY2IDI1LjUwODAyMTQgMTUuODc3MTI4MSA1MS4wMTYwNDI4IDYwLjE0MDYzNjYiPjwvcG9seWdvbj4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTEuMDcyNTA5MSwzMS4yMTkxMTkxIEwyMy43OTUwNDY3LDkuMjQ0MjE0NjQgTDIzLjc5NTA0NjcsOS4yNDQyMTQ2NCBDMjQuMzQ4NDgzNCw4LjI4ODI5NTQgMjUuNTcyMDU4MSw3Ljk2MjAxODgyIDI2LjUyNzk3NzQsOC41MTU0NTU1MiBDMjYuODMwMzkwMSw4LjY5MDUzOTY2IDI3LjA4MTY1MjQsOC45NDE4MDE5MiAyNy4yNTY3MzY1LDkuMjQ0MjE0NjQgTDQwLjAxMDU0NDcsMzEuMjczMTMxIEw0MC4wMzM5MjMsMzEuMjczMTMxIEw0My4zMjQ5ODg5LDI5LjM3MzAzMzIgTDI4Ljk0NTI4NTMsNC41MzU4MDE2IEMyOC41OTUxMTcsMy45MzA5NzYxNiAyOC4wOTI1OTI1LDMuNDI4NDUxNjQgMjcuNDg3NzY3LDMuMDc4MjgzMzYgQzI1LjU3NTkyODUsMS45NzE0MDk5NyAyMy4xMjg3NzksMi42MjM5NjMxMSAyMi4wMjE5MDU3LDQuNTM1ODAxNiBMMjIuMDIxOTA1Nyw0LjUzNTgwMTYgTDcuNzAwNTIxNTYsMjkuMjcyMzAxMiBMMTEuMDcyNTA5MSwzMS4yMTkxMTkxIFoiIGlkPSJDb21iaW5lZC1TaGFwZSIgZmlsbD0iIzAwMDAwMCI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNDIuOTQ0MjIxLDMzLjE0MzYxOTUgTDE1Ny4zOTc2MDQsOC4xNzkxMjY1NyBMMTcxLjg4MjI1NywzMy4xOTc2MzE0IEwxNzEuOTA1NjM1LDMzLjE5NzYzMTQgTDE3NS4xOTY3MDEsMzEuMjk3NTMzNiBMMTU3LjM1NTMwOCwwLjQ4MTEyNTA5MyBMMTM5LjU3MjIzNCwzMS4xOTY4MDE2IEwxNDIuOTQ0MjIxLDMzLjE0MzYxOTUgWiIgaWQ9IkNvbWJpbmVkLVNoYXBlLUNvcHkiIGZpbGw9IiMwMDAwMDAiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE1Ny4zODQ0NjcsIDE2LjgzOTM3OCkgcm90YXRlKDE4MC4wMDAwMDApIHRyYW5zbGF0ZSgtMTU3LjM4NDQ2NywgLTE2LjgzOTM3OCkgIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPHJlY3QgaWQ9IlJlY3RhbmdsZS0zLUNvcHkiIGZpbGw9IiNGRkJGMDAiIHg9IjcxLjIyOTk0NjUiIHk9IjE2LjgzOTM3ODIiIHdpZHRoPSI0My4zMTU1MDgiIGhlaWdodD0iNDMuMzAxMjU4MyI+PC9yZWN0PgogICAgICAgICAgICAgICAgICAgIDxlbGxpcHNlIGlkPSJPdmFsLUNvcHkiIGZpbGw9IiNGMDQxMzQiIGN4PSIxNTcuMzc5Njc5IiBjeT0iMzguMDA4ODgyMyIgcng9IjIyLjYyMDMyMDkiIHJ5PSIyMi42MTI4NzkzIj48L2VsbGlwc2U+CiAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==',
fill: 'p(a) data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjAwcHgiIGhlaWdodD0iMjAwcHgiIHZpZXdCb3g9IjAgMCAyMDAgMjAwIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgogICAgPCEtLSBHZW5lcmF0b3I6IFNrZXRjaCA0Ni4yICg0NDQ5NikgLSBodHRwOi8vd3d3LmJvaGVtaWFuY29kaW5nLmNvbS9za2V0Y2ggLS0+CiAgICA8dGl0bGU+QXJ0Ym9hcmQ8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZGVmcz48L2RlZnM+CiAgICA8ZyBpZD0ibG9nbyIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9IkFydGJvYXJkIj4KICAgICAgICAgICAgPGcgaWQ9Ikdyb3VwLTQiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEwLjAwMDAwMCwgNzAuMDAwMDAwKSI+CiAgICAgICAgICAgICAgICA8ZyBpZD0i5b2p6ImyIj4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTA1Ljg4NDEwMSw0LjMzMDEyNTgzIEwxMDUuODg0MTAxLDAuNDgxMTI1MDkzIEw4My40MTE3NjQ3LDAuNDgxMTI1MDkzIEw4My40MTE3NjQ3LDAuNDgxMTI1MDkzIEM4MS4yMDI2MjU3LDAuNDgxMTI1MDkzIDc5LjQxMTc2NDcsMi4yNzE5ODYwOSA3OS40MTE3NjQ3LDQuNDgxMTI1MDkgTDc5LjQxMTc2NDcsMzMuMTk1OTkwMyBMODMuMjYyMDMyMSwzMy4xOTU5OTAzIEw4My4yNjIwMzIxLDYuMzMwMTI1ODMgTDgzLjI2MjAzMjEsNi4zMzAxMjU4MyBDODMuMjYyMDMyMSw1LjIyNTU1NjMzIDg0LjE1NzQ2MjYsNC4zMzAxMjU4MyA4NS4yNjIwMzIxLDQuMzMwMTI1ODMgTDEwNS44ODQxMDEsNC4zMzAxMjU4MyBaIiBpZD0iUGF0aC0zLUNvcHktNSIgZmlsbD0iIzAwMDAwMCIgZmlsbC1ydWxlPSJub256ZXJvIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGgtMi1Db3B5LTQiIGZpbGw9IiMxMDhFRTkiIHBvaW50cz0iMCA2MC4xNDA2MzY2IDI1LjUwODAyMTQgMTUuODc3MTI4MSA1MS4wMTYwNDI4IDYwLjE0MDYzNjYiPjwvcG9seWdvbj4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTEuMDcyNTA5MSwzMS4yMTkxMTkxIEwyMy43OTUwNDY3LDkuMjQ0MjE0NjQgTDIzLjc5NTA0NjcsOS4yNDQyMTQ2NCBDMjQuMzQ4NDgzNCw4LjI4ODI5NTQgMjUuNTcyMDU4MSw3Ljk2MjAxODgyIDI2LjUyNzk3NzQsOC41MTU0NTU1MiBDMjYuODMwMzkwMSw4LjY5MDUzOTY2IDI3LjA4MTY1MjQsOC45NDE4MDE5MiAyNy4yNTY3MzY1LDkuMjQ0MjE0NjQgTDQwLjAxMDU0NDcsMzEuMjczMTMxIEw0MC4wMzM5MjMsMzEuMjczMTMxIEw0My4zMjQ5ODg5LDI5LjM3MzAzMzIgTDI4Ljk0NTI4NTMsNC41MzU4MDE2IEMyOC41OTUxMTcsMy45MzA5NzYxNiAyOC4wOTI1OTI1LDMuNDI4NDUxNjQgMjcuNDg3NzY3LDMuMDc4MjgzMzYgQzI1LjU3NTkyODUsMS45NzE0MDk5NyAyMy4xMjg3NzksMi42MjM5NjMxMSAyMi4wMjE5MDU3LDQuNTM1ODAxNiBMMjIuMDIxOTA1Nyw0LjUzNTgwMTYgTDcuNzAwNTIxNTYsMjkuMjcyMzAxMiBMMTEuMDcyNTA5MSwzMS4yMTkxMTkxIFoiIGlkPSJDb21iaW5lZC1TaGFwZSIgZmlsbD0iIzAwMDAwMCI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNDIuOTQ0MjIxLDMzLjE0MzYxOTUgTDE1Ny4zOTc2MDQsOC4xNzkxMjY1NyBMMTcxLjg4MjI1NywzMy4xOTc2MzE0IEwxNzEuOTA1NjM1LDMzLjE5NzYzMTQgTDE3NS4xOTY3MDEsMzEuMjk3NTMzNiBMMTU3LjM1NTMwOCwwLjQ4MTEyNTA5MyBMMTM5LjU3MjIzNCwzMS4xOTY4MDE2IEwxNDIuOTQ0MjIxLDMzLjE0MzYxOTUgWiIgaWQ9IkNvbWJpbmVkLVNoYXBlLUNvcHkiIGZpbGw9IiMwMDAwMDAiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE1Ny4zODQ0NjcsIDE2LjgzOTM3OCkgcm90YXRlKDE4MC4wMDAwMDApIHRyYW5zbGF0ZSgtMTU3LjM4NDQ2NywgLTE2LjgzOTM3OCkgIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPHJlY3QgaWQ9IlJlY3RhbmdsZS0zLUNvcHkiIGZpbGw9IiNGRkJGMDAiIHg9IjcxLjIyOTk0NjUiIHk9IjE2LjgzOTM3ODIiIHdpZHRoPSI0My4zMTU1MDgiIGhlaWdodD0iNDMuMzAxMjU4MyI+PC9yZWN0PgogICAgICAgICAgICAgICAgICAgIDxlbGxpcHNlIGlkPSJPdmFsLUNvcHkiIGZpbGw9IiNGMDQxMzQiIGN4PSIxNTcuMzc5Njc5IiBjeT0iMzguMDA4ODgyMyIgcng9IjIyLjYyMDMyMDkiIHJ5PSIyMi42MTI4NzkzIj48L2VsbGlwc2U+CiAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==',
},
});

Expand Down
12 changes: 2 additions & 10 deletions packages/g-mobile/tests/bugs/issue-444-spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -26,16 +26,8 @@ describe('#444', () => {
},
});
const arr = [
175.84088874080578,
186.12206002239975,
196.5130830703088,
206.84747231409375,
217.09029046810176,
227.54951033487814,
238.06394166293776,
248.29101292282533,
258.8908922907962,
269.7191946392174,
175.84088874080578, 186.12206002239975, 196.5130830703088, 206.84747231409375, 217.09029046810176,
227.54951033487814, 238.06394166293776, 248.29101292282533, 258.8908922907962, 269.7191946392174,
];
let count = 0;
function changePosition() {
Expand Down
3 changes: 1 addition & 2 deletions packages/g-mobile/tests/unit/util/parse-spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -76,8 +76,7 @@ describe('parse util test', () => {
y: 110,
width: 100,
height: 100,
fill:
'p(a) data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjAwcHgiIGhlaWdodD0iMjAwcHgiIHZpZXdCb3g9IjAgMCAyMDAgMjAwIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgogICAgPCEtLSBHZW5lcmF0b3I6IFNrZXRjaCA0Ni4yICg0NDQ5NikgLSBodHRwOi8vd3d3LmJvaGVtaWFuY29kaW5nLmNvbS9za2V0Y2ggLS0+CiAgICA8dGl0bGU+QXJ0Ym9hcmQ8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZGVmcz48L2RlZnM+CiAgICA8ZyBpZD0ibG9nbyIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9IkFydGJvYXJkIj4KICAgICAgICAgICAgPGcgaWQ9Ikdyb3VwLTQiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEwLjAwMDAwMCwgNzAuMDAwMDAwKSI+CiAgICAgICAgICAgICAgICA8ZyBpZD0i5b2p6ImyIj4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTA1Ljg4NDEwMSw0LjMzMDEyNTgzIEwxMDUuODg0MTAxLDAuNDgxMTI1MDkzIEw4My40MTE3NjQ3LDAuNDgxMTI1MDkzIEw4My40MTE3NjQ3LDAuNDgxMTI1MDkzIEM4MS4yMDI2MjU3LDAuNDgxMTI1MDkzIDc5LjQxMTc2NDcsMi4yNzE5ODYwOSA3OS40MTE3NjQ3LDQuNDgxMTI1MDkgTDc5LjQxMTc2NDcsMzMuMTk1OTkwMyBMODMuMjYyMDMyMSwzMy4xOTU5OTAzIEw4My4yNjIwMzIxLDYuMzMwMTI1ODMgTDgzLjI2MjAzMjEsNi4zMzAxMjU4MyBDODMuMjYyMDMyMSw1LjIyNTU1NjMzIDg0LjE1NzQ2MjYsNC4zMzAxMjU4MyA4NS4yNjIwMzIxLDQuMzMwMTI1ODMgTDEwNS44ODQxMDEsNC4zMzAxMjU4MyBaIiBpZD0iUGF0aC0zLUNvcHktNSIgZmlsbD0iIzAwMDAwMCIgZmlsbC1ydWxlPSJub256ZXJvIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGgtMi1Db3B5LTQiIGZpbGw9IiMxMDhFRTkiIHBvaW50cz0iMCA2MC4xNDA2MzY2IDI1LjUwODAyMTQgMTUuODc3MTI4MSA1MS4wMTYwNDI4IDYwLjE0MDYzNjYiPjwvcG9seWdvbj4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTEuMDcyNTA5MSwzMS4yMTkxMTkxIEwyMy43OTUwNDY3LDkuMjQ0MjE0NjQgTDIzLjc5NTA0NjcsOS4yNDQyMTQ2NCBDMjQuMzQ4NDgzNCw4LjI4ODI5NTQgMjUuNTcyMDU4MSw3Ljk2MjAxODgyIDI2LjUyNzk3NzQsOC41MTU0NTU1MiBDMjYuODMwMzkwMSw4LjY5MDUzOTY2IDI3LjA4MTY1MjQsOC45NDE4MDE5MiAyNy4yNTY3MzY1LDkuMjQ0MjE0NjQgTDQwLjAxMDU0NDcsMzEuMjczMTMxIEw0MC4wMzM5MjMsMzEuMjczMTMxIEw0My4zMjQ5ODg5LDI5LjM3MzAzMzIgTDI4Ljk0NTI4NTMsNC41MzU4MDE2IEMyOC41OTUxMTcsMy45MzA5NzYxNiAyOC4wOTI1OTI1LDMuNDI4NDUxNjQgMjcuNDg3NzY3LDMuMDc4MjgzMzYgQzI1LjU3NTkyODUsMS45NzE0MDk5NyAyMy4xMjg3NzksMi42MjM5NjMxMSAyMi4wMjE5MDU3LDQuNTM1ODAxNiBMMjIuMDIxOTA1Nyw0LjUzNTgwMTYgTDcuNzAwNTIxNTYsMjkuMjcyMzAxMiBMMTEuMDcyNTA5MSwzMS4yMTkxMTkxIFoiIGlkPSJDb21iaW5lZC1TaGFwZSIgZmlsbD0iIzAwMDAwMCI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNDIuOTQ0MjIxLDMzLjE0MzYxOTUgTDE1Ny4zOTc2MDQsOC4xNzkxMjY1NyBMMTcxLjg4MjI1NywzMy4xOTc2MzE0IEwxNzEuOTA1NjM1LDMzLjE5NzYzMTQgTDE3NS4xOTY3MDEsMzEuMjk3NTMzNiBMMTU3LjM1NTMwOCwwLjQ4MTEyNTA5MyBMMTM5LjU3MjIzNCwzMS4xOTY4MDE2IEwxNDIuOTQ0MjIxLDMzLjE0MzYxOTUgWiIgaWQ9IkNvbWJpbmVkLVNoYXBlLUNvcHkiIGZpbGw9IiMwMDAwMDAiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE1Ny4zODQ0NjcsIDE2LjgzOTM3OCkgcm90YXRlKDE4MC4wMDAwMDApIHRyYW5zbGF0ZSgtMTU3LjM4NDQ2NywgLTE2LjgzOTM3OCkgIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPHJlY3QgaWQ9IlJlY3RhbmdsZS0zLUNvcHkiIGZpbGw9IiNGRkJGMDAiIHg9IjcxLjIyOTk0NjUiIHk9IjE2LjgzOTM3ODIiIHdpZHRoPSI0My4zMTU1MDgiIGhlaWdodD0iNDMuMzAxMjU4MyI+PC9yZWN0PgogICAgICAgICAgICAgICAgICAgIDxlbGxpcHNlIGlkPSJPdmFsLUNvcHkiIGZpbGw9IiNGMDQxMzQiIGN4PSIxNTcuMzc5Njc5IiBjeT0iMzguMDA4ODgyMyIgcng9IjIyLjYyMDMyMDkiIHJ5PSIyMi42MTI4NzkzIj48L2VsbGlwc2U+CiAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==',
fill: 'p(a) data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjAwcHgiIGhlaWdodD0iMjAwcHgiIHZpZXdCb3g9IjAgMCAyMDAgMjAwIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgogICAgPCEtLSBHZW5lcmF0b3I6IFNrZXRjaCA0Ni4yICg0NDQ5NikgLSBodHRwOi8vd3d3LmJvaGVtaWFuY29kaW5nLmNvbS9za2V0Y2ggLS0+CiAgICA8dGl0bGU+QXJ0Ym9hcmQ8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZGVmcz48L2RlZnM+CiAgICA8ZyBpZD0ibG9nbyIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9IkFydGJvYXJkIj4KICAgICAgICAgICAgPGcgaWQ9Ikdyb3VwLTQiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEwLjAwMDAwMCwgNzAuMDAwMDAwKSI+CiAgICAgICAgICAgICAgICA8ZyBpZD0i5b2p6ImyIj4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTA1Ljg4NDEwMSw0LjMzMDEyNTgzIEwxMDUuODg0MTAxLDAuNDgxMTI1MDkzIEw4My40MTE3NjQ3LDAuNDgxMTI1MDkzIEw4My40MTE3NjQ3LDAuNDgxMTI1MDkzIEM4MS4yMDI2MjU3LDAuNDgxMTI1MDkzIDc5LjQxMTc2NDcsMi4yNzE5ODYwOSA3OS40MTE3NjQ3LDQuNDgxMTI1MDkgTDc5LjQxMTc2NDcsMzMuMTk1OTkwMyBMODMuMjYyMDMyMSwzMy4xOTU5OTAzIEw4My4yNjIwMzIxLDYuMzMwMTI1ODMgTDgzLjI2MjAzMjEsNi4zMzAxMjU4MyBDODMuMjYyMDMyMSw1LjIyNTU1NjMzIDg0LjE1NzQ2MjYsNC4zMzAxMjU4MyA4NS4yNjIwMzIxLDQuMzMwMTI1ODMgTDEwNS44ODQxMDEsNC4zMzAxMjU4MyBaIiBpZD0iUGF0aC0zLUNvcHktNSIgZmlsbD0iIzAwMDAwMCIgZmlsbC1ydWxlPSJub256ZXJvIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPHBvbHlnb24gaWQ9IlBhdGgtMi1Db3B5LTQiIGZpbGw9IiMxMDhFRTkiIHBvaW50cz0iMCA2MC4xNDA2MzY2IDI1LjUwODAyMTQgMTUuODc3MTI4MSA1MS4wMTYwNDI4IDYwLjE0MDYzNjYiPjwvcG9seWdvbj4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTEuMDcyNTA5MSwzMS4yMTkxMTkxIEwyMy43OTUwNDY3LDkuMjQ0MjE0NjQgTDIzLjc5NTA0NjcsOS4yNDQyMTQ2NCBDMjQuMzQ4NDgzNCw4LjI4ODI5NTQgMjUuNTcyMDU4MSw3Ljk2MjAxODgyIDI2LjUyNzk3NzQsOC41MTU0NTU1MiBDMjYuODMwMzkwMSw4LjY5MDUzOTY2IDI3LjA4MTY1MjQsOC45NDE4MDE5MiAyNy4yNTY3MzY1LDkuMjQ0MjE0NjQgTDQwLjAxMDU0NDcsMzEuMjczMTMxIEw0MC4wMzM5MjMsMzEuMjczMTMxIEw0My4zMjQ5ODg5LDI5LjM3MzAzMzIgTDI4Ljk0NTI4NTMsNC41MzU4MDE2IEMyOC41OTUxMTcsMy45MzA5NzYxNiAyOC4wOTI1OTI1LDMuNDI4NDUxNjQgMjcuNDg3NzY3LDMuMDc4MjgzMzYgQzI1LjU3NTkyODUsMS45NzE0MDk5NyAyMy4xMjg3NzksMi42MjM5NjMxMSAyMi4wMjE5MDU3LDQuNTM1ODAxNiBMMjIuMDIxOTA1Nyw0LjUzNTgwMTYgTDcuNzAwNTIxNTYsMjkuMjcyMzAxMiBMMTEuMDcyNTA5MSwzMS4yMTkxMTkxIFoiIGlkPSJDb21iaW5lZC1TaGFwZSIgZmlsbD0iIzAwMDAwMCI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNDIuOTQ0MjIxLDMzLjE0MzYxOTUgTDE1Ny4zOTc2MDQsOC4xNzkxMjY1NyBMMTcxLjg4MjI1NywzMy4xOTc2MzE0IEwxNzEuOTA1NjM1LDMzLjE5NzYzMTQgTDE3NS4xOTY3MDEsMzEuMjk3NTMzNiBMMTU3LjM1NTMwOCwwLjQ4MTEyNTA5MyBMMTM5LjU3MjIzNCwzMS4xOTY4MDE2IEwxNDIuOTQ0MjIxLDMzLjE0MzYxOTUgWiIgaWQ9IkNvbWJpbmVkLVNoYXBlLUNvcHkiIGZpbGw9IiMwMDAwMDAiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE1Ny4zODQ0NjcsIDE2LjgzOTM3OCkgcm90YXRlKDE4MC4wMDAwMDApIHRyYW5zbGF0ZSgtMTU3LjM4NDQ2NywgLTE2LjgzOTM3OCkgIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPHJlY3QgaWQ9IlJlY3RhbmdsZS0zLUNvcHkiIGZpbGw9IiNGRkJGMDAiIHg9IjcxLjIyOTk0NjUiIHk9IjE2LjgzOTM3ODIiIHdpZHRoPSI0My4zMTU1MDgiIGhlaWdodD0iNDMuMzAxMjU4MyI+PC9yZWN0PgogICAgICAgICAgICAgICAgICAgIDxlbGxpcHNlIGlkPSJPdmFsLUNvcHkiIGZpbGw9IiNGMDQxMzQiIGN4PSIxNTcuMzc5Njc5IiBjeT0iMzguMDA4ODgyMyIgcng9IjIyLjYyMDMyMDkiIHJ5PSIyMi42MTI4NzkzIj48L2VsbGlwc2U+CiAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg==',
},
});

Expand Down

0 comments on commit 70083c2

Please sign in to comment.