diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 0953bdc..b679f18 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -1,5 +1,5 @@ { - "image": "public.ecr.aws/amazonlinux/amazonlinux:2", + "image": "public.ecr.aws/amazonlinux/amazonlinux:2023", "features": { } } diff --git a/LICENSE b/LICENSE index 9a99a58..93beabe 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2020-2023 Charoite Lee +Copyright (c) 2020-2025 Charoite Lee Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/README.md b/README.md index dff80f0..00fce98 100644 --- a/README.md +++ b/README.md @@ -26,10 +26,16 @@ Since AWS Lambda is a secure and isolated runtime and execution environment, the [Chart.js](https://github.com/chartjs/chart.js) provides a set of frequently used chart types, plugins, and customization options. In addition to a reasonable set of built-in chart types, there are also community-maintained chart types. +> Current supported version chart.js@4.4.9 with chartjs-node-canvas@5.0.0 + ### Fabric.js support [Fabric.js](https://github.com/fabricjs/fabric.js) provides a missing and interactive object model for canvas, as well as an SVG parser, layer of interactivity, and a whole suite of other indispensable tools. +> Current supported version fabric@6.6.4 + ### Konva support [Konva](https://github.com/konvajs/konva) enables high performance animations, transitions, node nesting, layering, filtering, caching, event handling for desktop and mobile applications, and much more. + +> Current supported version konva@9.3.20 diff --git a/build-layer.sh b/build-layer.sh index c850fc1..19d2d0a 100755 --- a/build-layer.sh +++ b/build-layer.sh @@ -6,21 +6,21 @@ # yum install gcc-c++ cairo-devel pango-devel libjpeg-turbo-devel giflib-devel librsvg2-devel pango-devel bzip2-devel jq python3 -y # # Setting Up Node.js, refer https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/setting-up-node-on-ec2-instance.html for details -# curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash +# curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash # . ~/.nvm/nvm.sh # nvm install --lts # set -e LAYER_NAME=canvas-nodejs -LAYER_DESCRIPTION="AWS Lambda Layer with node-canvas and its dependencies packaged, provides a Cairo backed Mozilla Web Canvas API implementation with additional features." -LAYER_VERSION=2.11.3 +LAYER_DESCRIPTION="Cairo backed Mozilla Web Canvas API implementation layer for AWS Lambda" +LAYER_VERSION=3.1.0 LAYER_AUTHOR="Charoite Lee" DOT_CHAR="." NODE_VERSION=$(node -v) NODE_VERSION=${NODE_VERSION:1} -SEMVER_VERSION=7.5.4 +SEMVER_VERSION=7.7.1 # Remove packaged layer if exists if [ -n "$(find . -name 'canvas-nodejs_v*.zip')" ]; then @@ -32,6 +32,9 @@ if [ "$(ls -A lib)" ]; then rm lib/* fi cd nodejs +if [ "$(ls -A node*)" ]; then + rm -rf node* +fi rm -rf node_modules node${NODE_VERSION%%$DOT_CHAR*} package*.json ../package-lock.json npm init -y npm install canvas --build-from-source @@ -51,5 +54,5 @@ npm rm mocha mkdir node${NODE_VERSION%%$DOT_CHAR*} mv node_modules node${NODE_VERSION%%$DOT_CHAR*} cd .. -find nodejs/node* -type f -name '*.node' 2>/dev/null | grep -v 'obj\.target' | xargs ldd | awk 'NF == 4 { system("cp " $3 " lib") }' -zip -q -r canvas-nodejs_v$LAYER_VERSION.zip . -x LICENSE README.md .git/**\* .github/**\* .gitignore nodejs/test/**\* *.yml build-layer.sh +find nodejs/node${NODE_VERSION%%$DOT_CHAR*} -type f -name '*.node' 2>/dev/null | grep -v 'obj\.target' | xargs ldd | awk 'NF == 4 { system("cp " $3 " lib") }' +zip -q -r canvas-nodejs_v$LAYER_VERSION-node${NODE_VERSION%%$DOT_CHAR*}.zip . -x LICENSE README.md .git/**\* .github/**\* .gitignore nodejs/test/**\* *.yml build-layer.sh diff --git a/lib/libEGL.so.1 b/lib/libEGL.so.1 deleted file mode 100755 index a7cf011..0000000 Binary files a/lib/libEGL.so.1 and /dev/null differ diff --git a/lib/libGL.so.1 b/lib/libGL.so.1 deleted file mode 100755 index e920069..0000000 Binary files a/lib/libGL.so.1 and /dev/null differ diff --git a/lib/libGLX.so.0 b/lib/libGLX.so.0 deleted file mode 100755 index e7dd3b0..0000000 Binary files a/lib/libGLX.so.0 and /dev/null differ diff --git a/lib/libGLdispatch.so.0 b/lib/libGLdispatch.so.0 deleted file mode 100755 index 8aeb8fe..0000000 Binary files a/lib/libGLdispatch.so.0 and /dev/null differ diff --git a/lib/libICE.so.6 b/lib/libICE.so.6 deleted file mode 100755 index 2996e21..0000000 Binary files a/lib/libICE.so.6 and /dev/null differ diff --git a/lib/libSM.so.6 b/lib/libSM.so.6 deleted file mode 100755 index 6cee1a0..0000000 Binary files a/lib/libSM.so.6 and /dev/null differ diff --git a/lib/libX11.so.6 b/lib/libX11.so.6 index 9a506f4..931aaf5 100755 Binary files a/lib/libX11.so.6 and b/lib/libX11.so.6 differ diff --git a/lib/libXau.so.6 b/lib/libXau.so.6 index 08398c2..8c9af17 100755 Binary files a/lib/libXau.so.6 and b/lib/libXau.so.6 differ diff --git a/lib/libXext.so.6 b/lib/libXext.so.6 index 07970a9..4604c75 100755 Binary files a/lib/libXext.so.6 and b/lib/libXext.so.6 differ diff --git a/lib/libXrender.so.1 b/lib/libXrender.so.1 index 3eb81d4..0313b13 100755 Binary files a/lib/libXrender.so.1 and b/lib/libXrender.so.1 differ diff --git a/lib/libblkid.so.1 b/lib/libblkid.so.1 index d0d5429..13a28f7 100755 Binary files a/lib/libblkid.so.1 and b/lib/libblkid.so.1 differ diff --git a/lib/libbrotlicommon.so.1 b/lib/libbrotlicommon.so.1 new file mode 100755 index 0000000..0f258b8 Binary files /dev/null and b/lib/libbrotlicommon.so.1 differ diff --git a/lib/libbrotlidec.so.1 b/lib/libbrotlidec.so.1 new file mode 100755 index 0000000..8d82882 Binary files /dev/null and b/lib/libbrotlidec.so.1 differ diff --git a/lib/libbz2.so.1 b/lib/libbz2.so.1 index 79c087d..d8c012a 100755 Binary files a/lib/libbz2.so.1 and b/lib/libbz2.so.1 differ diff --git a/lib/libc.so.6 b/lib/libc.so.6 index cf02959..7e39ca1 100755 Binary files a/lib/libc.so.6 and b/lib/libc.so.6 differ diff --git a/lib/libcairo-gobject.so.2 b/lib/libcairo-gobject.so.2 new file mode 100755 index 0000000..d19ea59 Binary files /dev/null and b/lib/libcairo-gobject.so.2 differ diff --git a/lib/libcairo.so.2 b/lib/libcairo.so.2 index 91c1ef8..4fb7e65 100755 Binary files a/lib/libcairo.so.2 and b/lib/libcairo.so.2 differ diff --git a/lib/libcroco-0.6.so.3 b/lib/libcroco-0.6.so.3 deleted file mode 100755 index cdde2a5..0000000 Binary files a/lib/libcroco-0.6.so.3 and /dev/null differ diff --git a/lib/libdatrie.so.1 b/lib/libdatrie.so.1 new file mode 100755 index 0000000..5679e99 Binary files /dev/null and b/lib/libdatrie.so.1 differ diff --git a/lib/libdl.so.2 b/lib/libdl.so.2 deleted file mode 100755 index 3af8051..0000000 Binary files a/lib/libdl.so.2 and /dev/null differ diff --git a/lib/libexpat.so.1 b/lib/libexpat.so.1 deleted file mode 100755 index 724c034..0000000 Binary files a/lib/libexpat.so.1 and /dev/null differ diff --git a/lib/libffi.so.6 b/lib/libffi.so.6 deleted file mode 100755 index f0a1e8d..0000000 Binary files a/lib/libffi.so.6 and /dev/null differ diff --git a/lib/libffi.so.8 b/lib/libffi.so.8 new file mode 100755 index 0000000..499314c Binary files /dev/null and b/lib/libffi.so.8 differ diff --git a/lib/libfontconfig.so.1 b/lib/libfontconfig.so.1 index e8114af..b181f7a 100755 Binary files a/lib/libfontconfig.so.1 and b/lib/libfontconfig.so.1 differ diff --git a/lib/libfreetype.so.6 b/lib/libfreetype.so.6 index b644ee7..e8f9219 100755 Binary files a/lib/libfreetype.so.6 and b/lib/libfreetype.so.6 differ diff --git a/lib/libfribidi.so.0 b/lib/libfribidi.so.0 index 397d25a..bad5104 100755 Binary files a/lib/libfribidi.so.0 and b/lib/libfribidi.so.0 differ diff --git a/lib/libgcc_s.so.1 b/lib/libgcc_s.so.1 index 836ba57..1bfd8c2 100755 Binary files a/lib/libgcc_s.so.1 and b/lib/libgcc_s.so.1 differ diff --git a/lib/libgdk_pixbuf-2.0.so.0 b/lib/libgdk_pixbuf-2.0.so.0 index 9c72b6b..825fe3e 100755 Binary files a/lib/libgdk_pixbuf-2.0.so.0 and b/lib/libgdk_pixbuf-2.0.so.0 differ diff --git a/lib/libgif.so.4 b/lib/libgif.so.4 deleted file mode 100755 index 1ad8d8c..0000000 Binary files a/lib/libgif.so.4 and /dev/null differ diff --git a/lib/libgif.so.7 b/lib/libgif.so.7 new file mode 100755 index 0000000..d6e4dd4 Binary files /dev/null and b/lib/libgif.so.7 differ diff --git a/lib/libgio-2.0.so.0 b/lib/libgio-2.0.so.0 index ff3d56e..3eb7099 100755 Binary files a/lib/libgio-2.0.so.0 and b/lib/libgio-2.0.so.0 differ diff --git a/lib/libglib-2.0.so.0 b/lib/libglib-2.0.so.0 index 3727cf8..f8b0c8d 100755 Binary files a/lib/libglib-2.0.so.0 and b/lib/libglib-2.0.so.0 differ diff --git a/lib/libgmodule-2.0.so.0 b/lib/libgmodule-2.0.so.0 index 6d8344b..987b142 100755 Binary files a/lib/libgmodule-2.0.so.0 and b/lib/libgmodule-2.0.so.0 differ diff --git a/lib/libgobject-2.0.so.0 b/lib/libgobject-2.0.so.0 index 97f55a3..a36420f 100755 Binary files a/lib/libgobject-2.0.so.0 and b/lib/libgobject-2.0.so.0 differ diff --git a/lib/libgraphite2.so.3 b/lib/libgraphite2.so.3 index e0afea8..b9e5e98 100755 Binary files a/lib/libgraphite2.so.3 and b/lib/libgraphite2.so.3 differ diff --git a/lib/libharfbuzz.so.0 b/lib/libharfbuzz.so.0 index ba2dc22..dbf11b3 100755 Binary files a/lib/libharfbuzz.so.0 and b/lib/libharfbuzz.so.0 differ diff --git a/lib/libjpeg.so.62 b/lib/libjpeg.so.62 index 09d2852..9b0cea7 100755 Binary files a/lib/libjpeg.so.62 and b/lib/libjpeg.so.62 differ diff --git a/lib/liblzma.so.5 b/lib/liblzma.so.5 index f7e3fd0..f9e42fc 100755 Binary files a/lib/liblzma.so.5 and b/lib/liblzma.so.5 differ diff --git a/lib/libm.so.6 b/lib/libm.so.6 index ca784ff..86441a3 100755 Binary files a/lib/libm.so.6 and b/lib/libm.so.6 differ diff --git a/lib/libmount.so.1 b/lib/libmount.so.1 index 8f8ac73..9562dcd 100755 Binary files a/lib/libmount.so.1 and b/lib/libmount.so.1 differ diff --git a/lib/libpango-1.0.so.0 b/lib/libpango-1.0.so.0 index a42f732..0479b20 100755 Binary files a/lib/libpango-1.0.so.0 and b/lib/libpango-1.0.so.0 differ diff --git a/lib/libpangocairo-1.0.so.0 b/lib/libpangocairo-1.0.so.0 index 1d921d1..d9c8822 100755 Binary files a/lib/libpangocairo-1.0.so.0 and b/lib/libpangocairo-1.0.so.0 differ diff --git a/lib/libpangoft2-1.0.so.0 b/lib/libpangoft2-1.0.so.0 index bb4fe96..53eb0a0 100755 Binary files a/lib/libpangoft2-1.0.so.0 and b/lib/libpangoft2-1.0.so.0 differ diff --git a/lib/libpcre.so.1 b/lib/libpcre.so.1 deleted file mode 100755 index f4c618f..0000000 Binary files a/lib/libpcre.so.1 and /dev/null differ diff --git a/lib/libpcre2-8.so.0 b/lib/libpcre2-8.so.0 new file mode 100755 index 0000000..7e35e0d Binary files /dev/null and b/lib/libpcre2-8.so.0 differ diff --git a/lib/libpixman-1.so.0 b/lib/libpixman-1.so.0 index 3cb9ce8..9b4ec1d 100755 Binary files a/lib/libpixman-1.so.0 and b/lib/libpixman-1.so.0 differ diff --git a/lib/libpng15.so.15 b/lib/libpng15.so.15 deleted file mode 100755 index 06c6f8b..0000000 Binary files a/lib/libpng15.so.15 and /dev/null differ diff --git a/lib/libpng16.so.16 b/lib/libpng16.so.16 new file mode 100755 index 0000000..2b5498c Binary files /dev/null and b/lib/libpng16.so.16 differ diff --git a/lib/libpthread.so.0 b/lib/libpthread.so.0 deleted file mode 100755 index 0e753d2..0000000 Binary files a/lib/libpthread.so.0 and /dev/null differ diff --git a/lib/libresolv.so.2 b/lib/libresolv.so.2 deleted file mode 100755 index 663d6f9..0000000 Binary files a/lib/libresolv.so.2 and /dev/null differ diff --git a/lib/librsvg-2.so.2 b/lib/librsvg-2.so.2 index 8c8cb41..a4de5c8 100755 Binary files a/lib/librsvg-2.so.2 and b/lib/librsvg-2.so.2 differ diff --git a/lib/librt.so.1 b/lib/librt.so.1 deleted file mode 100755 index 8e119e1..0000000 Binary files a/lib/librt.so.1 and /dev/null differ diff --git a/lib/libselinux.so.1 b/lib/libselinux.so.1 index 1d715f6..70530f4 100755 Binary files a/lib/libselinux.so.1 and b/lib/libselinux.so.1 differ diff --git a/lib/libstdc++.so.6 b/lib/libstdc++.so.6 index fad552b..b12959f 100755 Binary files a/lib/libstdc++.so.6 and b/lib/libstdc++.so.6 differ diff --git a/lib/libthai.so.0 b/lib/libthai.so.0 index 5b1ad88..4583f56 100755 Binary files a/lib/libthai.so.0 and b/lib/libthai.so.0 differ diff --git a/lib/libuuid.so.1 b/lib/libuuid.so.1 deleted file mode 100755 index 64b12b1..0000000 Binary files a/lib/libuuid.so.1 and /dev/null differ diff --git a/lib/libxcb-render.so.0 b/lib/libxcb-render.so.0 index 3253da9..def4ab7 100755 Binary files a/lib/libxcb-render.so.0 and b/lib/libxcb-render.so.0 differ diff --git a/lib/libxcb-shm.so.0 b/lib/libxcb-shm.so.0 index 926261e..f2e66fe 100755 Binary files a/lib/libxcb-shm.so.0 and b/lib/libxcb-shm.so.0 differ diff --git a/lib/libxcb.so.1 b/lib/libxcb.so.1 index 5d84b7c..9c73df1 100755 Binary files a/lib/libxcb.so.1 and b/lib/libxcb.so.1 differ diff --git a/lib/libxml2.so.2 b/lib/libxml2.so.2 index 087be85..a44a28d 100755 Binary files a/lib/libxml2.so.2 and b/lib/libxml2.so.2 differ diff --git a/lib/libz.so.1 b/lib/libz.so.1 index e770934..bce4c03 100755 Binary files a/lib/libz.so.1 and b/lib/libz.so.1 differ diff --git a/nodejs/test/canvas-font.js b/nodejs/test/canvas-font.js index 4a16704..80990ce 100644 --- a/nodejs/test/canvas-font.js +++ b/nodejs/test/canvas-font.js @@ -4,23 +4,24 @@ var assert = require('assert'); describe('Font', function() { describe('#registerFont', function() { it('should register defined Font by name', function() { - registerFont('/usr/share/fonts/dejavu/DejaVuSans.ttf', { family: 'DejaVu Sans' }); + registerFont('/usr/share/fonts/dejavu-sans-fonts/DejaVuSans.ttf', { family: 'DejaVu Sans' }); }); }), describe('#fillText', function() { it('should write defined Text in canvas', function() { - registerFont('/usr/share/fonts/dejavu/DejaVuSans-Bold.ttf', { family: 'DejaVu Sans Bold' }); + registerFont('/usr/share/fonts/dejavu-sans-fonts/DejaVuSans-Bold.ttf', { family: 'DejaVu Sans Bold' }); let canvas = createCanvas(300, 300); let ctx1 = canvas.getContext('2d'); ctx1.font = '30px'; - ctx1.fillText('Default', 5, 15); + ctx1.fillText('Default', 5, 25); let ctx2 = canvas.getContext('2d'); ctx2.font = '30px "DejaVu Sans"'; - ctx2.fillText('DejaVu Sans', 5, 45); + ctx2.fillText('DejaVu Sans', 5, 65); let ctx3 = canvas.getContext('2d'); ctx3.font = '30px "DejaVu Sans Bold"'; - ctx3.fillText('DejaVu Sans Bold', 5, 75); - console.log(canvas.toDataURL()); + ctx3.fillText('DejaVu Sans Bold', 5, 95); + // console.log(canvas.toDataURL()); + assert.strictEqual(canvas.toDataURL(), 'data:image/png;base64,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'); }) }); }); diff --git a/nodejs/test/canvas-svg.js b/nodejs/test/canvas-svg.js index 26257f5..d8a9cc3 100644 --- a/nodejs/test/canvas-svg.js +++ b/nodejs/test/canvas-svg.js @@ -1,16 +1,22 @@ -let { loadImage, createCanvas } = require('canvas'); +let { registerFont, createCanvas } = require('canvas'); var assert = require('assert'); -describe('SVG', function() { - describe('#loadSVGImage', function() { - it('should load SVG image by data URI', function() { - let canvas = createCanvas(300, 300); - var ctx = canvas.getContext('2d'); - var datauri = 'data:image/svg+xml;base64,PHN2ZyBpZD0nc3ZnMScgdmlld0JveD0nMCAwIDEwMCAxMDAnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zyc+CiAgPGNpcmNsZSByPSIzMiIgY3g9IjM1IiBjeT0iNjUiIGZpbGw9IiNGMDAiIG9wYWNpdHk9IjAuNSIvPgogIDxjaXJjbGUgcj0iMzIiIGN4PSI2NSIgY3k9IjY1IiBmaWxsPSIjMEYwIiBvcGFjaXR5PSIwLjUiLz4KICA8Y2lyY2xlIHI9IjMyIiBjeD0iNTAiIGN5PSIzNSIgZmlsbD0iIzAwRiIgb3BhY2l0eT0iMC41Ii8+Cjwvc3ZnPgo='; - loadImage(datauri).then(svgimg => { - ctx.drawImage(svgimg, 15, 15, 200, 200); - assert.strictEqual(canvas.toDataURL(), 'data:image/png;base64,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'); - }); - }); - }) +describe('SVG', function () { + describe('#fillTextInSVG', function () { + it('should write defined Text in canvas', function () { + registerFont('/usr/share/fonts/dejavu-sans-fonts/DejaVuSans-Bold.ttf', { family: 'DejaVu Sans Bold' }); + let canvas = createCanvas(300, 300, 'svg'); + let ctx1 = canvas.getContext('2d'); + ctx1.font = '30px'; + ctx1.fillText('Default', 5, 25); + let ctx2 = canvas.getContext('2d'); + ctx2.font = '30px "DejaVu Sans"'; + ctx2.fillText('DejaVu Sans', 5, 65); + let ctx3 = canvas.getContext('2d'); + ctx3.font = '30px "DejaVu Sans Bold"'; + ctx3.fillText('DejaVu Sans Bold', 5, 95); + // console.log(canvas.toDataURL()); + assert.strictEqual(canvas.toDataURL(), "data:image/png;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMzAwIiBoZWlnaHQ9IjMwMCIgdmlld0JveD0iMCAwIDMwMCAzMDAiPgo8cGF0aCBmaWxsLXJ1bGU9Im5vbnplcm8iIGZpbGw9InJnYigwJSwgMCUsIDAlKSIgZmlsbC1vcGFjaXR5PSIxIiBkPSJNIDEwLjkwNjI1IDUuNTYyNSBMIDEwLjkwNjI1IDIyLjU2MjUgTCAxNC40ODQzNzUgMjIuNTYyNSBDIDE3LjQ5MjE4OCAyMi41NjI1IDE5LjY5NTMxMiAyMS44ODI4MTIgMjEuMDkzNzUgMjAuNTE1NjI1IEMgMjIuNSAxOS4xNTIzNDQgMjMuMjAzMTI1IDE2Ljk5NjA5NCAyMy4yMDMxMjUgMTQuMDQ2ODc1IEMgMjMuMjAzMTI1IDExLjEwOTM3NSAyMi41IDguOTY0ODQ0IDIxLjA5Mzc1IDcuNjA5Mzc1IEMgMTkuNjk1MzEyIDYuMjQ2MDk0IDE3LjQ5MjE4OCA1LjU2MjUgMTQuNDg0Mzc1IDUuNTYyNSBaIE0gNy45Mzc1IDMuMTI1IEwgMTQuMDMxMjUgMy4xMjUgQyAxOC4yNTc4MTIgMy4xMjUgMjEuMzYzMjgxIDQuMDExNzE5IDIzLjM0Mzc1IDUuNzgxMjUgQyAyNS4zMzIwMzEgNy41NDI5NjkgMjYuMzI4MTI1IDEwLjI5Njg3NSAyNi4zMjgxMjUgMTQuMDQ2ODc1IEMgMjYuMzI4MTI1IDE3LjgyMDMxMiAyNS4zMzIwMzEgMjAuNTg5ODQ0IDIzLjM0Mzc1IDIyLjM1OTM3NSBDIDIxLjM1MTU2MiAyNC4xMjEwOTQgMTguMjUgMjUgMTQuMDMxMjUgMjUgTCA3LjkzNzUgMjUgWiBNIDQ0Ljk2MDkzOCAxNi4xMjUgTCA0NC45NjA5MzggMTcuNDM3NSBMIDMyLjU3MDMxMiAxNy40Mzc1IEMgMzIuNjgzNTk0IDE5LjI5Mjk2OSAzMy4yNDIxODggMjAuNzEwOTM4IDM0LjI0MjE4OCAyMS42ODc1IEMgMzUuMjQyMTg4IDIyLjY1NjI1IDM2LjYzNjcxOSAyMy4xNDA2MjUgMzguNDI5Njg4IDIzLjE0MDYyNSBDIDM5LjQ2MDkzOCAyMy4xNDA2MjUgNDAuNDYwOTM4IDIzLjAxNTYyNSA0MS40Mjk2ODggMjIuNzY1NjI1IEMgNDIuNDA2MjUgMjIuNTA3ODEyIDQzLjM3NSAyMi4xMjEwOTQgNDQuMzM1OTM4IDIxLjYwOTM3NSBMIDQ0LjMzNTkzOCAyNC4xNzE4NzUgQyA0My4zNjcxODggMjQuNTc4MTI1IDQyLjM3MTA5NCAyNC44ODY3MTkgNDEuMzUxNTYyIDI1LjA5Mzc1IEMgNDAuMzM5ODQ0IDI1LjMxMjUgMzkuMzEyNSAyNS40MjE4NzUgMzguMjczNDM4IDI1LjQyMTg3NSBDIDM1LjY0ODQzOCAyNS40MjE4NzUgMzMuNTcwMzEyIDI0LjY2NDA2MiAzMi4wMzkwNjIgMjMuMTQwNjI1IEMgMzAuNTE1NjI1IDIxLjYyMTA5NCAyOS43NTc4MTIgMTkuNTU4NTk0IDI5Ljc1NzgxMiAxNi45NTMxMjUgQyAyOS43NTc4MTIgMTQuMjY1NjI1IDMwLjQ4MDQ2OSAxMi4xMzY3MTkgMzEuOTI5Njg4IDEwLjU2MjUgQyAzMy4zNzUgOC45OTIxODggMzUuMzM1OTM4IDguMjAzMTI1IDM3LjgwNDY4OCA4LjIwMzEyNSBDIDQwLjAxMTcxOSA4LjIwMzEyNSA0MS43NTc4MTIgOC45MTQwNjIgNDMuMDM5MDYyIDEwLjMyODEyNSBDIDQ0LjMyMDMxMiAxMS43NDYwOTQgNDQuOTYwOTM4IDEzLjY3OTY4OCA0NC45NjA5MzggMTYuMTI1IFogTSA0Mi4yNzM0MzggMTUuMzI4MTI1IEMgNDIuMjUgMTMuODU5Mzc1IDQxLjgzNTkzOCAxMi42ODc1IDQxLjAyMzQzOCAxMS44MTI1IEMgNDAuMjE4NzUgMTAuOTI5Njg4IDM5LjE1NjI1IDEwLjQ4NDM3NSAzNy44MzU5MzggMTAuNDg0Mzc1IEMgMzYuMzI0MjE5IDEwLjQ4NDM3NSAzNS4xMTcxODggMTAuOTE0MDYyIDM0LjIxMDkzOCAxMS43NjU2MjUgQyAzMy4zMTI1IDEyLjYwOTM3NSAzMi43OTY4NzUgMTMuODA0Njg4IDMyLjY2NDA2MiAxNS4zNDM3NSBaIE0gNTcuNjk5MjE5IDIuMjAzMTI1IEwgNTcuNjk5MjE5IDQuNDUzMTI1IEwgNTUuMTIxMDk0IDQuNDUzMTI1IEMgNTQuMTUyMzQ0IDQuNDUzMTI1IDUzLjQ4MDQ2OSA0LjY1MjM0NCA1My4xMDU0NjkgNS4wNDY4NzUgQyA1Mi43MzA0NjkgNS40MzM1OTQgNTIuNTQyOTY5IDYuMTMyODEyIDUyLjU0Mjk2OSA3LjE0MDYyNSBMIDUyLjU0Mjk2OSA4LjU5Mzc1IEwgNTYuOTgwNDY5IDguNTkzNzUgTCA1Ni45ODA0NjkgMTAuNjg3NSBMIDUyLjU0Mjk2OSAxMC42ODc1IEwgNTIuNTQyOTY5IDI1IEwgNDkuODI0MjE5IDI1IEwgNDkuODI0MjE5IDEwLjY4NzUgTCA0Ny4yNDYwOTQgMTAuNjg3NSBMIDQ3LjI0NjA5NCA4LjU5Mzc1IEwgNDkuODI0MjE5IDguNTkzNzUgTCA0OS44MjQyMTkgNy40NTMxMjUgQyA0OS44MjQyMTkgNS42MzI4MTIgNTAuMjQ2MDk0IDQuMzA0Njg4IDUxLjA4OTg0NCAzLjQ2ODc1IEMgNTEuOTQxNDA2IDIuNjI1IDUzLjI5Mjk2OSAyLjIwMzEyNSA1NS4xMzY3MTkgMi4yMDMxMjUgWiBNIDY3LjM5ODQzOCAxNi43NSBDIDY1LjIxODc1IDE2Ljc1IDYzLjcxMDkzOCAxNyA2Mi44NjcxODggMTcuNSBDIDYyLjAzMTI1IDE4IDYxLjYxNzE4OCAxOC44NTE1NjIgNjEuNjE3MTg4IDIwLjA0Njg3NSBDIDYxLjYxNzE4OCAyMS4wMDc4MTIgNjEuOTI5Njg4IDIxLjc2NTYyNSA2Mi41NTQ2ODggMjIuMzI4MTI1IEMgNjMuMTg3NSAyMi44OTA2MjUgNjQuMDQ2ODc1IDIzLjE3MTg3NSA2NS4xMzI4MTIgMjMuMTcxODc1IEMgNjYuNjIxMDk0IDIzLjE3MTg3NSA2Ny44MjAzMTIgMjIuNjQwNjI1IDY4LjcyNjU2MiAyMS41NzgxMjUgQyA2OS42MzI4MTIgMjAuNTE1NjI1IDcwLjA4NTkzOCAxOS4xMDkzNzUgNzAuMDg1OTM4IDE3LjM1OTM3NSBMIDcwLjA4NTkzOCAxNi43NSBaIE0gNzIuNzczNDM4IDE1LjY0MDYyNSBMIDcyLjc3MzQzOCAyNSBMIDcwLjA4NTkzOCAyNSBMIDcwLjA4NTkzOCAyMi41MTU2MjUgQyA2OS40Njg3NSAyMy41MDc4MTIgNjguNjk5MjE5IDI0LjI0MjE4OCA2Ny43NzM0MzggMjQuNzE4NzUgQyA2Ni44NTU0NjkgMjUuMTg3NSA2NS43MzQzNzUgMjUuNDIxODc1IDY0LjQxNDA2MiAyNS40MjE4NzUgQyA2Mi43MzQzNzUgMjUuNDIxODc1IDYxLjM5ODQzOCAyNC45NTMxMjUgNjAuMzk4NDM4IDI0LjAxNTYyNSBDIDU5LjQwNjI1IDIzLjA3MDMxMiA1OC45MTQwNjIgMjEuODA0Njg4IDU4LjkxNDA2MiAyMC4yMTg3NSBDIDU4LjkxNDA2MiAxOC4zNzUgNTkuNTMxMjUgMTYuOTg0Mzc1IDYwLjc3MzQzOCAxNi4wNDY4NzUgQyA2Mi4wMTE3MTkgMTUuMTA5Mzc1IDYzLjg1NTQ2OSAxNC42NDA2MjUgNjYuMzA0Njg4IDE0LjY0MDYyNSBMIDcwLjA4NTkzOCAxNC42NDA2MjUgTCA3MC4wODU5MzggMTQuMzc1IEMgNzAuMDg1OTM4IDEzLjEzNjcxOSA2OS42NzE4NzUgMTIuMTc5Njg4IDY4Ljg1MTU2MiAxMS41IEMgNjguMDM5MDYyIDEwLjgyNDIxOSA2Ni44OTg0MzggMTAuNDg0Mzc1IDY1LjQyOTY4OCAxMC40ODQzNzUgQyA2NC40OTIxODggMTAuNDg0Mzc1IDYzLjU3NDIxOSAxMC42MDE1NjIgNjIuNjc5Njg4IDEwLjgyODEyNSBDIDYxLjc5Mjk2OSAxMS4wNDY4NzUgNjAuOTM3NSAxMS4zODI4MTIgNjAuMTE3MTg4IDExLjgyODEyNSBMIDYwLjExNzE4OCA5LjM0Mzc1IEMgNjEuMTA1NDY5IDguOTYwOTM4IDYyLjA2MjUgOC42NzE4NzUgNjIuOTkyMTg4IDguNDg0Mzc1IEMgNjMuOTE3OTY5IDguMjk2ODc1IDY0LjgyMDMxMiA4LjIwMzEyNSA2NS42OTUzMTIgOC4yMDMxMjUgQyA2OC4wNzAzMTIgOC4yMDMxMjUgNjkuODM5ODQ0IDguODIwMzEyIDcxLjAwNzgxMiAxMC4wNDY4NzUgQyA3Mi4xODM1OTQgMTEuMjc3MzQ0IDcyLjc3MzQzOCAxMy4xNDA2MjUgNzIuNzczNDM4IDE1LjY0MDYyNSBaIE0gNzguMDUwNzgxIDE4LjUzMTI1IEwgNzguMDUwNzgxIDguNTkzNzUgTCA4MC43NTM5MDYgOC41OTM3NSBMIDgwLjc1MzkwNiAxOC40MjE4NzUgQyA4MC43NTM5MDYgMTkuOTc2NTYyIDgxLjA1NDY4OCAyMS4xNDA2MjUgODEuNjYwMTU2IDIxLjkyMTg3NSBDIDgyLjI2MTcxOSAyMi42OTUzMTIgODMuMTY3OTY5IDIzLjA3ODEyNSA4NC4zNzg5MDYgMjMuMDc4MTI1IEMgODUuODM1OTM4IDIzLjA3ODEyNSA4Ni45ODgyODEgMjIuNjE3MTg4IDg3LjgzMjAzMSAyMS42ODc1IEMgODguNjc1NzgxIDIwLjc2MTcxOSA4OS4wOTc2NTYgMTkuNDk2MDk0IDg5LjA5NzY1NiAxNy44OTA2MjUgTCA4OS4wOTc2NTYgOC41OTM3NSBMIDkxLjgwMDc4MSA4LjU5Mzc1IEwgOTEuODAwNzgxIDI1IEwgODkuMDk3NjU2IDI1IEwgODkuMDk3NjU2IDIyLjQ4NDM3NSBDIDg4LjQ0MTQwNiAyMy40NzY1NjIgODcuNjc5Njg4IDI0LjIxNDg0NCA4Ni44MTY0MDYgMjQuNzAzMTI1IEMgODUuOTQ5MjE5IDI1LjE3OTY4OCA4NC45NDkyMTkgMjUuNDIxODc1IDgzLjgxNjQwNiAyNS40MjE4NzUgQyA4MS45Mjk2ODggMjUuNDIxODc1IDgwLjQ5NjA5NCAyNC44Mzk4NDQgNzkuNTE5NTMxIDIzLjY3MTg3NSBDIDc4LjUzOTA2MiAyMi40OTYwOTQgNzguMDUwNzgxIDIwLjc4MTI1IDc4LjA1MDc4MSAxOC41MzEyNSBaIE0gODQuODMyMDMxIDguMjAzMTI1IFogTSA5Ny4zNDM3NSAyLjIwMzEyNSBMIDEwMC4wMzEyNSAyLjIwMzEyNSBMIDEwMC4wMzEyNSAyNSBMIDk3LjM0Mzc1IDI1IFogTSAxMDguMzUxNTYyIDMuOTM3NSBMIDEwOC4zNTE1NjIgOC41OTM3NSBMIDExMy44OTg0MzggOC41OTM3NSBMIDExMy44OTg0MzggMTAuNjg3NSBMIDEwOC4zNTE1NjIgMTAuNjg3NSBMIDEwOC4zNTE1NjIgMTkuNTkzNzUgQyAxMDguMzUxNTYyIDIwLjkyOTY4OCAxMDguNTMxMjUgMjEuNzg5MDYyIDEwOC44OTg0MzggMjIuMTcxODc1IEMgMTA5LjI2MTcxOSAyMi41NTg1OTQgMTEwLjAwNzgxMiAyMi43NSAxMTEuMTMyODEyIDIyLjc1IEwgMTEzLjg5ODQzOCAyMi43NSBMIDExMy44OTg0MzggMjUgTCAxMTEuMTMyODEyIDI1IEMgMTA5LjA0Njg3NSAyNSAxMDcuNjA5Mzc1IDI0LjYxNzE4OCAxMDYuODIwMzEyIDIzLjg0Mzc1IEMgMTA2LjAyNzM0NCAyMy4wNjI1IDEwNS42MzI4MTIgMjEuNjQ4NDM4IDEwNS42MzI4MTIgMTkuNTkzNzUgTCAxMDUuNjMyODEyIDEwLjY4NzUgTCAxMDMuNjY0MDYyIDEwLjY4NzUgTCAxMDMuNjY0MDYyIDguNTkzNzUgTCAxMDUuNjMyODEyIDguNTkzNzUgTCAxMDUuNjMyODEyIDMuOTM3NSBaIE0gNSAtMi44NDc2NTYgIi8+CjxwYXRoIGZpbGwtcnVsZT0ibm9uemVybyIgZmlsbD0icmdiKDAlLCAwJSwgMCUpIiBmaWxsLW9wYWNpdHk9IjEiIGQ9Ik0gMTAuOTA2MjUgNDUuNTYyNSBMIDEwLjkwNjI1IDYyLjU2MjUgTCAxNC40ODQzNzUgNjIuNTYyNSBDIDE3LjQ5MjE4OCA2Mi41NjI1IDE5LjY5NTMxMiA2MS44ODI4MTIgMjEuMDkzNzUgNjAuNTE1NjI1IEMgMjIuNSA1OS4xNTIzNDQgMjMuMjAzMTI1IDU2Ljk5NjA5NCAyMy4yMDMxMjUgNTQuMDQ2ODc1IEMgMjMuMjAzMTI1IDUxLjEwOTM3NSAyMi41IDQ4Ljk2NDg0NCAyMS4wOTM3NSA0Ny42MDkzNzUgQyAxOS42OTUzMTIgNDYuMjQ2MDk0IDE3LjQ5MjE4OCA0NS41NjI1IDE0LjQ4NDM3NSA0NS41NjI1IFogTSA3LjkzNzUgNDMuMTI1IEwgMTQuMDMxMjUgNDMuMTI1IEMgMTguMjU3ODEyIDQzLjEyNSAyMS4zNjMyODEgNDQuMDExNzE5IDIzLjM0Mzc1IDQ1Ljc4MTI1IEMgMjUuMzMyMDMxIDQ3LjU0Mjk2OSAyNi4zMjgxMjUgNTAuMjk2ODc1IDI2LjMyODEyNSA1NC4wNDY4NzUgQyAyNi4zMjgxMjUgNTcuODIwMzEyIDI1LjMzMjAzMSA2MC41ODk4NDQgMjMuMzQzNzUgNjIuMzU5Mzc1IEMgMjEuMzUxNTYyIDY0LjEyMTA5NCAxOC4yNSA2NSAxNC4wMzEyNSA2NSBMIDcuOTM3NSA2NSBaIE0gNDQuOTYwOTM4IDU2LjEyNSBMIDQ0Ljk2MDkzOCA1Ny40Mzc1IEwgMzIuNTcwMzEyIDU3LjQzNzUgQyAzMi42ODM1OTQgNTkuMjkyOTY5IDMzLjI0MjE4OCA2MC43MTA5MzggMzQuMjQyMTg4IDYxLjY4NzUgQyAzNS4yNDIxODggNjIuNjU2MjUgMzYuNjM2NzE5IDYzLjE0MDYyNSAzOC40Mjk2ODggNjMuMTQwNjI1IEMgMzkuNDYwOTM4IDYzLjE0MDYyNSA0MC40NjA5MzggNjMuMDE1NjI1IDQxLjQyOTY4OCA2Mi43NjU2MjUgQyA0Mi40MDYyNSA2Mi41MDc4MTIgNDMuMzc1IDYyLjEyMTA5NCA0NC4zMzU5MzggNjEuNjA5Mzc1IEwgNDQuMzM1OTM4IDY0LjE3MTg3NSBDIDQzLjM2NzE4OCA2NC41NzgxMjUgNDIuMzcxMDk0IDY0Ljg4NjcxOSA0MS4zNTE1NjIgNjUuMDkzNzUgQyA0MC4zMzk4NDQgNjUuMzEyNSAzOS4zMTI1IDY1LjQyMTg3NSAzOC4yNzM0MzggNjUuNDIxODc1IEMgMzUuNjQ4NDM4IDY1LjQyMTg3NSAzMy41NzAzMTIgNjQuNjY0MDYyIDMyLjAzOTA2MiA2My4xNDA2MjUgQyAzMC41MTU2MjUgNjEuNjIxMDk0IDI5Ljc1NzgxMiA1OS41NTg1OTQgMjkuNzU3ODEyIDU2Ljk1MzEyNSBDIDI5Ljc1NzgxMiA1NC4yNjU2MjUgMzAuNDgwNDY5IDUyLjEzNjcxOSAzMS45Mjk2ODggNTAuNTYyNSBDIDMzLjM3NSA0OC45OTIxODggMzUuMzM1OTM4IDQ4LjIwMzEyNSAzNy44MDQ2ODggNDguMjAzMTI1IEMgNDAuMDExNzE5IDQ4LjIwMzEyNSA0MS43NTc4MTIgNDguOTE0MDYyIDQzLjAzOTA2MiA1MC4zMjgxMjUgQyA0NC4zMjAzMTIgNTEuNzQ2MDk0IDQ0Ljk2MDkzOCA1My42Nzk2ODggNDQuOTYwOTM4IDU2LjEyNSBaIE0gNDIuMjczNDM4IDU1LjMyODEyNSBDIDQyLjI1IDUzLjg1OTM3NSA0MS44MzU5MzggNTIuNjg3NSA0MS4wMjM0MzggNTEuODEyNSBDIDQwLjIxODc1IDUwLjkyOTY4OCAzOS4xNTYyNSA1MC40ODQzNzUgMzcuODM1OTM4IDUwLjQ4NDM3NSBDIDM2LjMyNDIxOSA1MC40ODQzNzUgMzUuMTE3MTg4IDUwLjkxNDA2MiAzNC4yMTA5MzggNTEuNzY1NjI1IEMgMzMuMzEyNSA1Mi42MDkzNzUgMzIuNzk2ODc1IDUzLjgwNDY4OCAzMi42NjQwNjIgNTUuMzQzNzUgWiBNIDQ5LjM4NjcxOSA0OC41OTM3NSBMIDUyLjA3NDIxOSA0OC41OTM3NSBMIDUyLjA3NDIxOSA2NS4yOTY4NzUgQyA1Mi4wNzQyMTkgNjcuMzc4OTA2IDUxLjY3NTc4MSA2OC44OTA2MjUgNTAuODg2NzE5IDY5LjgyODEyNSBDIDUwLjA5Mzc1IDcwLjc2NTYyNSA0OC44MTI1IDcxLjIzNDM3NSA0Ny4wNDI5NjkgNzEuMjM0Mzc1IEwgNDYuMDExNzE5IDcxLjIzNDM3NSBMIDQ2LjAxMTcxOSA2OC45NTMxMjUgTCA0Ni43MzA0NjkgNjguOTUzMTI1IEMgNDcuNzYxNzE5IDY4Ljk1MzEyNSA0OC40NTcwMzEgNjguNzEwOTM4IDQ4LjgyNDIxOSA2OC4yMzQzNzUgQyA0OS4xOTkyMTkgNjcuNzY1NjI1IDQ5LjM4NjcxOSA2Ni43ODUxNTYgNDkuMzg2NzE5IDY1LjI5Njg3NSBaIE0gNDkuMzg2NzE5IDQyLjIwMzEyNSBMIDUyLjA3NDIxOSA0Mi4yMDMxMjUgTCA1Mi4wNzQyMTkgNDUuNjI1IEwgNDkuMzg2NzE5IDQ1LjYyNSBaIE0gNjUuMTcxODc1IDU2Ljc1IEMgNjIuOTkyMTg4IDU2Ljc1IDYxLjQ4NDM3NSA1NyA2MC42NDA2MjUgNTcuNSBDIDU5LjgwNDY4OCA1OCA1OS4zOTA2MjUgNTguODUxNTYyIDU5LjM5MDYyNSA2MC4wNDY4NzUgQyA1OS4zOTA2MjUgNjEuMDA3ODEyIDU5LjcwMzEyNSA2MS43NjU2MjUgNjAuMzI4MTI1IDYyLjMyODEyNSBDIDYwLjk2MDkzOCA2Mi44OTA2MjUgNjEuODIwMzEyIDYzLjE3MTg3NSA2Mi45MDYyNSA2My4xNzE4NzUgQyA2NC4zOTQ1MzEgNjMuMTcxODc1IDY1LjU5Mzc1IDYyLjY0MDYyNSA2Ni41IDYxLjU3ODEyNSBDIDY3LjQwNjI1IDYwLjUxNTYyNSA2Ny44NTkzNzUgNTkuMTA5Mzc1IDY3Ljg1OTM3NSA1Ny4zNTkzNzUgTCA2Ny44NTkzNzUgNTYuNzUgWiBNIDcwLjU0Njg3NSA1NS42NDA2MjUgTCA3MC41NDY4NzUgNjUgTCA2Ny44NTkzNzUgNjUgTCA2Ny44NTkzNzUgNjIuNTE1NjI1IEMgNjcuMjQyMTg4IDYzLjUwNzgxMiA2Ni40NzI2NTYgNjQuMjQyMTg4IDY1LjU0Njg3NSA2NC43MTg3NSBDIDY0LjYyODkwNiA2NS4xODc1IDYzLjUwNzgxMiA2NS40MjE4NzUgNjIuMTg3NSA2NS40MjE4NzUgQyA2MC41MDc4MTIgNjUuNDIxODc1IDU5LjE3MTg3NSA2NC45NTMxMjUgNTguMTcxODc1IDY0LjAxNTYyNSBDIDU3LjE3OTY4OCA2My4wNzAzMTIgNTYuNjg3NSA2MS44MDQ2ODggNTYuNjg3NSA2MC4yMTg3NSBDIDU2LjY4NzUgNTguMzc1IDU3LjMwNDY4OCA1Ni45ODQzNzUgNTguNTQ2ODc1IDU2LjA0Njg3NSBDIDU5Ljc4NTE1NiA1NS4xMDkzNzUgNjEuNjI4OTA2IDU0LjY0MDYyNSA2NC4wNzgxMjUgNTQuNjQwNjI1IEwgNjcuODU5Mzc1IDU0LjY0MDYyNSBMIDY3Ljg1OTM3NSA1NC4zNzUgQyA2Ny44NTkzNzUgNTMuMTM2NzE5IDY3LjQ0NTMxMiA1Mi4xNzk2ODggNjYuNjI1IDUxLjUgQyA2NS44MTI1IDUwLjgyNDIxOSA2NC42NzE4NzUgNTAuNDg0Mzc1IDYzLjIwMzEyNSA1MC40ODQzNzUgQyA2Mi4yNjU2MjUgNTAuNDg0Mzc1IDYxLjM0NzY1NiA1MC42MDE1NjIgNjAuNDUzMTI1IDUwLjgyODEyNSBDIDU5LjU2NjQwNiA1MS4wNDY4NzUgNTguNzEwOTM4IDUxLjM4MjgxMiA1Ny44OTA2MjUgNTEuODI4MTI1IEwgNTcuODkwNjI1IDQ5LjM0Mzc1IEMgNTguODc4OTA2IDQ4Ljk2MDkzOCA1OS44MzU5MzggNDguNjcxODc1IDYwLjc2NTYyNSA0OC40ODQzNzUgQyA2MS42OTE0MDYgNDguMjk2ODc1IDYyLjU5Mzc1IDQ4LjIwMzEyNSA2My40Njg3NSA0OC4yMDMxMjUgQyA2NS44NDM3NSA0OC4yMDMxMjUgNjcuNjEzMjgxIDQ4LjgyMDMxMiA2OC43ODEyNSA1MC4wNDY4NzUgQyA2OS45NTcwMzEgNTEuMjc3MzQ0IDcwLjU0Njg3NSA1My4xNDA2MjUgNzAuNTQ2ODc1IDU1LjY0MDYyNSBaIE0gODEuODU1NDY5IDY1IEwgNzMuNTExNzE5IDQzLjEyNSBMIDc2LjYwNTQ2OSA0My4xMjUgTCA4My41MjczNDQgNjEuNTQ2ODc1IEwgOTAuNDgwNDY5IDQzLjEyNSBMIDkzLjU1ODU5NCA0My4xMjUgTCA4NS4yMTQ4NDQgNjUgWiBNIDk0LjMwODU5NCA1OC41MzEyNSBMIDk0LjMwODU5NCA0OC41OTM3NSBMIDk3LjAxMTcxOSA0OC41OTM3NSBMIDk3LjAxMTcxOSA1OC40MjE4NzUgQyA5Ny4wMTE3MTkgNTkuOTc2NTYyIDk3LjMxMjUgNjEuMTQwNjI1IDk3LjkxNzk2OSA2MS45MjE4NzUgQyA5OC41MTk1MzEgNjIuNjk1MzEyIDk5LjQyNTc4MSA2My4wNzgxMjUgMTAwLjYzNjcxOSA2My4wNzgxMjUgQyAxMDIuMDkzNzUgNjMuMDc4MTI1IDEwMy4yNDYwOTQgNjIuNjE3MTg4IDEwNC4wODk4NDQgNjEuNjg3NSBDIDEwNC45MzM1OTQgNjAuNzYxNzE5IDEwNS4zNTU0NjkgNTkuNDk2MDk0IDEwNS4zNTU0NjkgNTcuODkwNjI1IEwgMTA1LjM1NTQ2OSA0OC41OTM3NSBMIDEwOC4wNTg1OTQgNDguNTkzNzUgTCAxMDguMDU4NTk0IDY1IEwgMTA1LjM1NTQ2OSA2NSBMIDEwNS4zNTU0NjkgNjIuNDg0Mzc1IEMgMTA0LjY5OTIxOSA2My40NzY1NjIgMTAzLjkzNzUgNjQuMjE0ODQ0IDEwMy4wNzQyMTkgNjQuNzAzMTI1IEMgMTAyLjIwNzAzMSA2NS4xNzk2ODggMTAxLjIwNzAzMSA2NS40MjE4NzUgMTAwLjA3NDIxOSA2NS40MjE4NzUgQyA5OC4xODc1IDY1LjQyMTg3NSA5Ni43NTM5MDYgNjQuODM5ODQ0IDk1Ljc3NzM0NCA2My42NzE4NzUgQyA5NC43OTY4NzUgNjIuNDk2MDk0IDk0LjMwODU5NCA2MC43ODEyNSA5NC4zMDg1OTQgNTguNTMxMjUgWiBNIDEwMS4wODk4NDQgNDguMjAzMTI1IFogTSAxMzYuMzc1IDQzLjg0Mzc1IEwgMTM2LjM3NSA0Ni43MzQzNzUgQyAxMzUuMjUgNDYuMTk1MzEyIDEzNC4xODc1IDQ1Ljc5Mjk2OSAxMzMuMTg3NSA0NS41MzEyNSBDIDEzMi4xODc1IDQ1LjI3MzQzOCAxMzEuMjIyNjU2IDQ1LjE0MDYyNSAxMzAuMjk2ODc1IDQ1LjE0MDYyNSBDIDEyOC42OTE0MDYgNDUuMTQwNjI1IDEyNy40NTMxMjUgNDUuNDUzMTI1IDEyNi41NzgxMjUgNDYuMDc4MTI1IEMgMTI1LjcwMzEyNSA0Ni43MDMxMjUgMTI1LjI2NTYyNSA0Ny41ODk4NDQgMTI1LjI2NTYyNSA0OC43MzQzNzUgQyAxMjUuMjY1NjI1IDQ5LjcwMzEyNSAxMjUuNTUwNzgxIDUwLjQzNzUgMTI2LjEyNSA1MC45Mzc1IEMgMTI2LjcwNzAzMSA1MS40Mjk2ODggMTI3LjgxMjUgNTEuODI0MjE5IDEyOS40Mzc1IDUyLjEyNSBMIDEzMS4yMTg3NSA1Mi40ODQzNzUgQyAxMzMuNDI1NzgxIDUyLjkxNDA2MiAxMzUuMDU0Njg4IDUzLjY1NjI1IDEzNi4xMDkzNzUgNTQuNzE4NzUgQyAxMzcuMTYwMTU2IDU1Ljc3MzQzOCAxMzcuNjg3NSA1Ny4xODc1IDEzNy42ODc1IDU4Ljk2ODc1IEMgMTM3LjY4NzUgNjEuMDg1OTM4IDEzNi45NzI2NTYgNjIuNjg3NSAxMzUuNTQ2ODc1IDYzLjc4MTI1IEMgMTM0LjEyODkwNiA2NC44NzUgMTMyLjA1MDc4MSA2NS40MjE4NzUgMTI5LjMxMjUgNjUuNDIxODc1IEMgMTI4LjI2OTUzMSA2NS40MjE4NzUgMTI3LjE2NDA2MiA2NS4zMDA3ODEgMTI2IDY1LjA2MjUgQyAxMjQuODMyMDMxIDY0LjgzNTkzOCAxMjMuNjI1IDY0LjQ5MjE4OCAxMjIuMzc1IDY0LjAzMTI1IEwgMTIyLjM3NSA2MC45ODQzNzUgQyAxMjMuNTgyMDMxIDYxLjY2NDA2MiAxMjQuNzU3ODEyIDYyLjE3MTg3NSAxMjUuOTA2MjUgNjIuNTE1NjI1IEMgMTI3LjA2MjUgNjIuODUxNTYyIDEyOC4xOTUzMTIgNjMuMDE1NjI1IDEyOS4zMTI1IDYzLjAxNTYyNSBDIDEzMSA2My4wMTU2MjUgMTMyLjMwMDc4MSA2Mi42ODc1IDEzMy4yMTg3NSA2Mi4wMzEyNSBDIDEzNC4xMzI4MTIgNjEuMzY3MTg4IDEzNC41OTM3NSA2MC40MTc5NjkgMTM0LjU5Mzc1IDU5LjE4NzUgQyAxMzQuNTkzNzUgNTguMTE3MTg4IDEzNC4yNjU2MjUgNTcuMjc3MzQ0IDEzMy42MDkzNzUgNTYuNjcxODc1IEMgMTMyLjk1MzEyNSA1Ni4wNTg1OTQgMTMxLjg2NzE4OCA1NS42MDE1NjIgMTMwLjM1OTM3NSA1NS4yOTY4NzUgTCAxMjguNTYyNSA1NC45NTMxMjUgQyAxMjYuMzUxNTYyIDU0LjUxNTYyNSAxMjQuNzUzOTA2IDUzLjgyODEyNSAxMjMuNzY1NjI1IDUyLjg5MDYyNSBDIDEyMi43ODUxNTYgNTEuOTUzMTI1IDEyMi4yOTY4NzUgNTAuNjQ4NDM4IDEyMi4yOTY4NzUgNDguOTY4NzUgQyAxMjIuMjk2ODc1IDQ3LjA0Mjk2OSAxMjIuOTcyNjU2IDQ1LjUyMzQzOCAxMjQuMzI4MTI1IDQ0LjQwNjI1IEMgMTI1LjY5MTQwNiA0My4yOTI5NjkgMTI3LjU3MDMxMiA0Mi43MzQzNzUgMTI5Ljk2ODc1IDQyLjczNDM3NSBDIDEzMC45ODgyODEgNDIuNzM0Mzc1IDEzMi4wMzEyNSA0Mi44MjgxMjUgMTMzLjA5Mzc1IDQzLjAxNTYyNSBDIDEzNC4xNjQwNjIgNDMuMjAzMTI1IDEzNS4yNTc4MTIgNDMuNDgwNDY5IDEzNi4zNzUgNDMuODQzNzUgWiBNIDE0OS42MzY3MTkgNTYuNzUgQyAxNDcuNDU3MDMxIDU2Ljc1IDE0NS45NDkyMTkgNTcgMTQ1LjEwNTQ2OSA1Ny41IEMgMTQ0LjI2OTUzMSA1OCAxNDMuODU1NDY5IDU4Ljg1MTU2MiAxNDMuODU1NDY5IDYwLjA0Njg3NSBDIDE0My44NTU0NjkgNjEuMDA3ODEyIDE0NC4xNjc5NjkgNjEuNzY1NjI1IDE0NC43OTI5NjkgNjIuMzI4MTI1IEMgMTQ1LjQyNTc4MSA2Mi44OTA2MjUgMTQ2LjI4NTE1NiA2My4xNzE4NzUgMTQ3LjM3MTA5NCA2My4xNzE4NzUgQyAxNDguODU5Mzc1IDYzLjE3MTg3NSAxNTAuMDU4NTk0IDYyLjY0MDYyNSAxNTAuOTY0ODQ0IDYxLjU3ODEyNSBDIDE1MS44NzEwOTQgNjAuNTE1NjI1IDE1Mi4zMjQyMTkgNTkuMTA5Mzc1IDE1Mi4zMjQyMTkgNTcuMzU5Mzc1IEwgMTUyLjMyNDIxOSA1Ni43NSBaIE0gMTU1LjAxMTcxOSA1NS42NDA2MjUgTCAxNTUuMDExNzE5IDY1IEwgMTUyLjMyNDIxOSA2NSBMIDE1Mi4zMjQyMTkgNjIuNTE1NjI1IEMgMTUxLjcwNzAzMSA2My41MDc4MTIgMTUwLjkzNzUgNjQuMjQyMTg4IDE1MC4wMTE3MTkgNjQuNzE4NzUgQyAxNDkuMDkzNzUgNjUuMTg3NSAxNDcuOTcyNjU2IDY1LjQyMTg3NSAxNDYuNjUyMzQ0IDY1LjQyMTg3NSBDIDE0NC45NzI2NTYgNjUuNDIxODc1IDE0My42MzY3MTkgNjQuOTUzMTI1IDE0Mi42MzY3MTkgNjQuMDE1NjI1IEMgMTQxLjY0NDUzMSA2My4wNzAzMTIgMTQxLjE1MjM0NCA2MS44MDQ2ODggMTQxLjE1MjM0NCA2MC4yMTg3NSBDIDE0MS4xNTIzNDQgNTguMzc1IDE0MS43Njk1MzEgNTYuOTg0Mzc1IDE0My4wMTE3MTkgNTYuMDQ2ODc1IEMgMTQ0LjI1IDU1LjEwOTM3NSAxNDYuMDkzNzUgNTQuNjQwNjI1IDE0OC41NDI5NjkgNTQuNjQwNjI1IEwgMTUyLjMyNDIxOSA1NC42NDA2MjUgTCAxNTIuMzI0MjE5IDU0LjM3NSBDIDE1Mi4zMjQyMTkgNTMuMTM2NzE5IDE1MS45MTAxNTYgNTIuMTc5Njg4IDE1MS4wODk4NDQgNTEuNSBDIDE1MC4yNzczNDQgNTAuODI0MjE5IDE0OS4xMzY3MTkgNTAuNDg0Mzc1IDE0Ny42Njc5NjkgNTAuNDg0Mzc1IEMgMTQ2LjczMDQ2OSA1MC40ODQzNzUgMTQ1LjgxMjUgNTAuNjAxNTYyIDE0NC45MTc5NjkgNTAuODI4MTI1IEMgMTQ0LjAzMTI1IDUxLjA0Njg3NSAxNDMuMTc1NzgxIDUxLjM4MjgxMiAxNDIuMzU1NDY5IDUxLjgyODEyNSBMIDE0Mi4zNTU0NjkgNDkuMzQzNzUgQyAxNDMuMzQzNzUgNDguOTYwOTM4IDE0NC4zMDA3ODEgNDguNjcxODc1IDE0NS4yMzA0NjkgNDguNDg0Mzc1IEMgMTQ2LjE1NjI1IDQ4LjI5Njg3NSAxNDcuMDU4NTk0IDQ4LjIwMzEyNSAxNDcuOTMzNTk0IDQ4LjIwMzEyNSBDIDE1MC4zMDg1OTQgNDguMjAzMTI1IDE1Mi4wNzgxMjUgNDguODIwMzEyIDE1My4yNDYwOTQgNTAuMDQ2ODc1IEMgMTU0LjQyMTg3NSA1MS4yNzczNDQgMTU1LjAxMTcxOSA1My4xNDA2MjUgMTU1LjAxMTcxOSA1NS42NDA2MjUgWiBNIDE3NC4yMDcwMzEgNTUuMDkzNzUgTCAxNzQuMjA3MDMxIDY1IEwgMTcxLjUwMzkwNiA2NSBMIDE3MS41MDM5MDYgNTUuMTg3NSBDIDE3MS41MDM5MDYgNTMuNjM2NzE5IDE3MS4xOTkyMTkgNTIuNDc2NTYyIDE3MC41OTc2NTYgNTEuNzAzMTI1IEMgMTY5Ljk5MjE4OCA1MC45MzM1OTQgMTY5LjA4NTkzOCA1MC41NDY4NzUgMTY3Ljg3ODkwNiA1MC41NDY4NzUgQyAxNjYuNDE3OTY5IDUwLjU0Njg3NSAxNjUuMjY5NTMxIDUxLjAxMTcxOSAxNjQuNDI1NzgxIDUxLjkzNzUgQyAxNjMuNTg5ODQ0IDUyLjg2NzE4OCAxNjMuMTc1NzgxIDU0LjEzMjgxMiAxNjMuMTc1NzgxIDU1LjczNDM3NSBMIDE2My4xNzU3ODEgNjUgTCAxNjAuNDU3MDMxIDY1IEwgMTYwLjQ1NzAzMSA0OC41OTM3NSBMIDE2My4xNzU3ODEgNDguNTkzNzUgTCAxNjMuMTc1NzgxIDUxLjE0MDYyNSBDIDE2My44MjAzMTIgNTAuMTUyMzQ0IDE2NC41ODIwMzEgNDkuNDE3OTY5IDE2NS40NTcwMzEgNDguOTM3NSBDIDE2Ni4zMzIwMzEgNDguNDQ5MjE5IDE2Ny4zMzU5MzggNDguMjAzMTI1IDE2OC40NzI2NTYgNDguMjAzMTI1IEMgMTcwLjM1NTQ2OSA0OC4yMDMxMjUgMTcxLjc4NTE1NiA0OC43ODkwNjIgMTcyLjc1MzkwNiA0OS45NTMxMjUgQyAxNzMuNzIyNjU2IDUxLjEyMTA5NCAxNzQuMjA3MDMxIDUyLjgzNTkzOCAxNzQuMjA3MDMxIDU1LjA5Mzc1IFogTSAxOTAuMDM1MTU2IDQ5LjA3ODEyNSBMIDE5MC4wMzUxNTYgNTEuNjI1IEMgMTg5LjI3MzQzOCA1MS4yNDIxODggMTg4LjQ4MDQ2OSA1MC45NDkyMTkgMTg3LjY2MDE1NiA1MC43NSBDIDE4Ni44NDc2NTYgNTAuNTU0Njg4IDE4NS45OTYwOTQgNTAuNDUzMTI1IDE4NS4xMTMyODEgNTAuNDUzMTI1IEMgMTgzLjc3NzM0NCA1MC40NTMxMjUgMTgyLjc3MzQzOCA1MC42NjQwNjIgMTgyLjA5NzY1NiA1MS4wNzgxMjUgQyAxODEuNDI5Njg4IDUxLjQ4NDM3NSAxODEuMDk3NjU2IDUyLjEwMTU2MiAxODEuMDk3NjU2IDUyLjkyMTg3NSBDIDE4MS4wOTc2NTYgNTMuNTQ2ODc1IDE4MS4zMzU5MzggNTQuMDM5MDYyIDE4MS44MTY0MDYgNTQuMzkwNjI1IEMgMTgyLjI5Mjk2OSA1NC43NDYwOTQgMTgzLjI1NzgxMiA1NS4wODU5MzggMTg0LjcwNzAzMSA1NS40MDYyNSBMIDE4NS42Mjg5MDYgNTUuNjA5Mzc1IEMgMTg3LjU0Mjk2OSA1Ni4wMTU2MjUgMTg4LjkwMjM0NCA1Ni41OTM3NSAxODkuNzA3MDMxIDU3LjM0Mzc1IEMgMTkwLjUxOTUzMSA1OC4wOTM3NSAxOTAuOTI1NzgxIDU5LjEzNjcxOSAxOTAuOTI1NzgxIDYwLjQ2ODc1IEMgMTkwLjkyNTc4MSA2MiAxOTAuMzIwMzEyIDYzLjIxMDkzOCAxODkuMTEzMjgxIDY0LjA5Mzc1IEMgMTg3LjkwMjM0NCA2NC45ODA0NjkgMTg2LjI0NjA5NCA2NS40MjE4NzUgMTg0LjE0NDUzMSA2NS40MjE4NzUgQyAxODMuMjU3ODEyIDY1LjQyMTg3NSAxODIuMzM1OTM4IDY1LjMzMjAzMSAxODEuMzc4OTA2IDY1LjE1NjI1IEMgMTgwLjQyOTY4OCA2NC45OTIxODggMTc5LjQyOTY4OCA2NC43NDIxODggMTc4LjM3ODkwNiA2NC40MDYyNSBMIDE3OC4zNzg5MDYgNjEuNjA5Mzc1IEMgMTc5LjM3ODkwNiA2Mi4xMzI4MTIgMTgwLjM1NTQ2OSA2Mi41MjM0MzggMTgxLjMxNjQwNiA2Mi43ODEyNSBDIDE4Mi4yODUxNTYgNjMuMDQyOTY5IDE4My4yNDIxODggNjMuMTcxODc1IDE4NC4xOTE0MDYgNjMuMTcxODc1IEMgMTg1LjQ2MDkzOCA2My4xNzE4NzUgMTg2LjQzMzU5NCA2Mi45NTMxMjUgMTg3LjExMzI4MSA2Mi41MTU2MjUgQyAxODcuODAwNzgxIDYyLjA3ODEyNSAxODguMTQ0NTMxIDYxLjQ2NDg0NCAxODguMTQ0NTMxIDYwLjY3MTg3NSBDIDE4OC4xNDQ1MzEgNTkuOTQ1MzEyIDE4Ny44OTg0MzggNTkuMzg2NzE5IDE4Ny40MTAxNTYgNTkgQyAxODYuOTE3OTY5IDU4LjYwNTQ2OSAxODUuODM1OTM4IDU4LjIyNjU2MiAxODQuMTYwMTU2IDU3Ljg1OTM3NSBMIDE4My4yMjI2NTYgNTcuNjQwNjI1IEMgMTgxLjU1NDY4OCA1Ny4yOTY4NzUgMTgwLjM1MTU2MiA1Ni43NjE3MTkgMTc5LjYxMzI4MSA1Ni4wMzEyNSBDIDE3OC44NzEwOTQgNTUuMzA0Njg4IDE3OC41MDM5MDYgNTQuMzA0Njg4IDE3OC41MDM5MDYgNTMuMDMxMjUgQyAxNzguNTAzOTA2IDUxLjQ5MjE4OCAxNzkuMDUwNzgxIDUwLjMwNDY4OCAxODAuMTQ0NTMxIDQ5LjQ2ODc1IEMgMTgxLjIzODI4MSA0OC42MjUgMTgyLjc4OTA2MiA0OC4yMDMxMjUgMTg0LjgwMDc4MSA0OC4yMDMxMjUgQyAxODUuNzg5MDYyIDQ4LjIwMzEyNSAxODYuNzIyNjU2IDQ4LjI3NzM0NCAxODcuNTk3NjU2IDQ4LjQyMTg3NSBDIDE4OC40ODA0NjkgNDguNTcwMzEyIDE4OS4yOTI5NjkgNDguNzg5MDYyIDE5MC4wMzUxNTYgNDkuMDc4MTI1IFogTSA1IDM3LjE1MjM0NCAiLz4KPHBhdGggZmlsbC1ydWxlPSJub256ZXJvIiBmaWxsPSJyZ2IoMCUsIDAlLCAwJSkiIGZpbGwtb3BhY2l0eT0iMSIgZD0iTSAxMy4zOTA2MjUgNzcuMzkwNjI1IEwgMTMuMzkwNjI1IDkwLjczNDM3NSBMIDE1LjQyMTg3NSA5MC43MzQzNzUgQyAxNy43MjI2NTYgOTAuNzM0Mzc1IDE5LjQ3NjU2MiA5MC4xNjc5NjkgMjAuNjg3NSA4OS4wMzEyNSBDIDIxLjkwNjI1IDg3Ljg4NjcxOSAyMi41MTU2MjUgODYuMjI2NTYyIDIyLjUxNTYyNSA4NC4wNDY4NzUgQyAyMi41MTU2MjUgODEuODgyODEyIDIxLjkxMDE1NiA4MC4yMzA0NjkgMjAuNzAzMTI1IDc5LjA5Mzc1IEMgMTkuNDkyMTg4IDc3Ljk2MDkzOCAxNy43MzQzNzUgNzcuMzkwNjI1IDE1LjQyMTg3NSA3Ny4zOTA2MjUgWiBNIDcuNzUgNzMuMTI1IEwgMTMuNzAzMTI1IDczLjEyNSBDIDE3LjAyMzQzOCA3My4xMjUgMTkuNSA3My4zNjcxODggMjEuMTI1IDczLjg0Mzc1IEMgMjIuNzUgNzQuMzEyNSAyNC4xNDA2MjUgNzUuMTE3MTg4IDI1LjI5Njg3NSA3Ni4yNSBDIDI2LjMyODEyNSA3Ny4yNDIxODggMjcuMDg1OTM4IDc4LjM4MjgxMiAyNy41NzgxMjUgNzkuNjcxODc1IEMgMjguMDc4MTI1IDgwLjk1MzEyNSAyOC4zMjgxMjUgODIuNDE0MDYyIDI4LjMyODEyNSA4NC4wNDY4NzUgQyAyOC4zMjgxMjUgODUuNjk1MzEyIDI4LjA3ODEyNSA4Ny4xNjc5NjkgMjcuNTc4MTI1IDg4LjQ2ODc1IEMgMjcuMDg1OTM4IDg5Ljc2MTcxOSAyNi4zMjgxMjUgOTAuODk4NDM4IDI1LjI5Njg3NSA5MS44NzUgQyAyNC4xMjg5MDYgOTMuMDExNzE5IDIyLjcyMjY1NiA5My44MjAzMTIgMjEuMDc4MTI1IDk0LjI5Njg3NSBDIDE5LjQ0MTQwNiA5NC43NjU2MjUgMTYuOTg0Mzc1IDk1IDEzLjcwMzEyNSA5NSBMIDcuNzUgOTUgWiBNIDQ4Ljc5Mjk2OSA4Ni43NSBMIDQ4Ljc5Mjk2OSA4OC4yNSBMIDM2LjU0Mjk2OSA4OC4yNSBDIDM2LjY2Nzk2OSA4OS40ODA0NjkgMzcuMTA5Mzc1IDkwLjQwMjM0NCAzNy44NzEwOTQgOTEuMDE1NjI1IEMgMzguNjI4OTA2IDkxLjYzMjgxMiAzOS42OTE0MDYgOTEuOTM3NSA0MS4wNTg1OTQgOTEuOTM3NSBDIDQyLjE2MDE1NiA5MS45Mzc1IDQzLjI5Mjk2OSA5MS43NzczNDQgNDQuNDQ5MjE5IDkxLjQ1MzEyNSBDIDQ1LjYxMzI4MSA5MS4xMjEwOTQgNDYuODA4NTk0IDkwLjYyMTA5NCA0OC4wMjczNDQgODkuOTUzMTI1IEwgNDguMDI3MzQ0IDk0IEMgNDYuNzg1MTU2IDk0LjQ2ODc1IDQ1LjU0Njg3NSA5NC44MjQyMTkgNDQuMzA4NTk0IDk1LjA2MjUgQyA0My4wNjY0MDYgOTUuMzAwNzgxIDQxLjgyNDIxOSA5NS40MjE4NzUgNDAuNTc0MjE5IDk1LjQyMTg3NSBDIDM3LjYwNTQ2OSA5NS40MjE4NzUgMzUuMjk2ODc1IDk0LjY2Nzk2OSAzMy42NTIzNDQgOTMuMTU2MjUgQyAzMi4wMTU2MjUgOTEuNjQ4NDM4IDMxLjE5OTIxOSA4OS41MzEyNSAzMS4xOTkyMTkgODYuODEyNSBDIDMxLjE5OTIxOSA4NC4xMzY3MTkgMzIuMDAzOTA2IDgyLjAzMTI1IDMzLjYyMTA5NCA4MC41IEMgMzUuMjM0Mzc1IDc4Ljk2ODc1IDM3LjQ1NzAzMSA3OC4yMDMxMjUgNDAuMjkyOTY5IDc4LjIwMzEyNSBDIDQyLjg2MzI4MSA3OC4yMDMxMjUgNDQuOTIxODc1IDc4Ljk4MDQ2OSA0Ni40NjQ4NDQgODAuNTMxMjUgQyA0OC4wMTU2MjUgODIuMDg1OTM4IDQ4Ljc5Mjk2OSA4NC4xNTYyNSA0OC43OTI5NjkgODYuNzUgWiBNIDQzLjQwMjM0NCA4NS4wMTU2MjUgQyA0My40MDIzNDQgODQuMDE1NjI1IDQzLjEwOTM3NSA4My4yMTQ4NDQgNDIuNTI3MzQ0IDgyLjYwOTM3NSBDIDQxLjk1MzEyNSA4MS45OTYwOTQgNDEuMTk5MjE5IDgxLjY4NzUgNDAuMjYxNzE5IDgxLjY4NzUgQyAzOS4yMzgyODEgODEuNjg3NSAzOC40MTAxNTYgODEuOTc2NTYyIDM3Ljc3NzM0NCA4Mi41NDY4NzUgQyAzNy4xNDA2MjUgODMuMTA5Mzc1IDM2Ljc0NjA5NCA4My45MzM1OTQgMzYuNTg5ODQ0IDg1LjAxNTYyNSBaIE0gNTIuNzY1NjI1IDc4LjU5Mzc1IEwgNTguMDE1NjI1IDc4LjU5Mzc1IEwgNTguMDE1NjI1IDk0LjcwMzEyNSBDIDU4LjAxNTYyNSA5Ni44OTg0MzggNTcuNDg0Mzc1IDk4LjU3ODEyNSA1Ni40MjE4NzUgOTkuNzM0Mzc1IEMgNTUuMzY3MTg4IDEwMC44OTA2MjUgNTMuODQzNzUgMTAxLjQ2ODc1IDUxLjg0Mzc1IDEwMS40Njg3NSBMIDQ5LjI1IDEwMS40Njg3NSBMIDQ5LjI1IDk4LjAzMTI1IEwgNTAuMTU2MjUgOTguMDMxMjUgQyA1MS4xNTYyNSA5OC4wMzEyNSA1MS44MzU5MzggOTcuODA0Njg4IDUyLjIwMzEyNSA5Ny4zNTkzNzUgQyA1Mi41NzgxMjUgOTYuOTEwMTU2IDUyLjc2NTYyNSA5Ni4wMjM0MzggNTIuNzY1NjI1IDk0LjcwMzEyNSBaIE0gNTIuNzY1NjI1IDcyLjIwMzEyNSBMIDU4LjAxNTYyNSA3Mi4yMDMxMjUgTCA1OC4wMTU2MjUgNzYuNDg0Mzc1IEwgNTIuNzY1NjI1IDc2LjQ4NDM3NSBaIE0gNzAuNDA2MjUgODcuNjA5Mzc1IEMgNjkuMzEyNSA4Ny42MDkzNzUgNjguNDg4MjgxIDg3Ljc5Njg3NSA2Ny45Mzc1IDg4LjE3MTg3NSBDIDY3LjM4MjgxMiA4OC41NDY4NzUgNjcuMTA5Mzc1IDg5LjA5Mzc1IDY3LjEwOTM3NSA4OS44MTI1IEMgNjcuMTA5Mzc1IDkwLjQ4MDQ2OSA2Ny4zMjgxMjUgOTEgNjcuNzY1NjI1IDkxLjM3NSBDIDY4LjIxMDkzOCA5MS43NSA2OC44MzIwMzEgOTEuOTM3NSA2OS42MjUgOTEuOTM3NSBDIDcwLjYxMzI4MSA5MS45Mzc1IDcxLjQ0MTQwNiA5MS41ODU5MzggNzIuMTA5Mzc1IDkwLjg3NSBDIDcyLjc4NTE1NiA5MC4xNjc5NjkgNzMuMTI1IDg5LjI4MTI1IDczLjEyNSA4OC4yMTg3NSBMIDczLjEyNSA4Ny42MDkzNzUgWiBNIDc4LjQyMTg3NSA4NS42NDA2MjUgTCA3OC40MjE4NzUgOTUgTCA3My4xMjUgOTUgTCA3My4xMjUgOTIuNTYyNSBDIDcyLjQyNTc4MSA5My41NjI1IDcxLjYzMjgxMiA5NC4yOTI5NjkgNzAuNzUgOTQuNzUgQyA2OS44NzUgOTUuMTk1MzEyIDY4LjgwNDY4OCA5NS40MjE4NzUgNjcuNTQ2ODc1IDk1LjQyMTg3NSBDIDY1Ljg0NzY1NiA5NS40MjE4NzUgNjQuNDY4NzUgOTQuOTI5Njg4IDYzLjQwNjI1IDkzLjkzNzUgQyA2Mi4zNTE1NjIgOTIuOTQ5MjE5IDYxLjgyODEyNSA5MS42NjQwNjIgNjEuODI4MTI1IDkwLjA3ODEyNSBDIDYxLjgyODEyNSA4OC4xNTIzNDQgNjIuNDg4MjgxIDg2Ljc0MjE4OCA2My44MTI1IDg1Ljg0Mzc1IEMgNjUuMTMyODEyIDg0Ljk0OTIxOSA2Ny4yMDcwMzEgODQuNSA3MC4wMzEyNSA4NC41IEwgNzMuMTI1IDg0LjUgTCA3My4xMjUgODQuMDkzNzUgQyA3My4xMjUgODMuMjYxNzE5IDcyLjc5Njg3NSA4Mi42NTIzNDQgNzIuMTQwNjI1IDgyLjI2NTYyNSBDIDcxLjQ5MjE4OCA4MS44ODI4MTIgNzAuNDc2NTYyIDgxLjY4NzUgNjkuMDkzNzUgODEuNjg3NSBDIDY3Ljk2ODc1IDgxLjY4NzUgNjYuOTIxODc1IDgxLjgwNDY4OCA2NS45NTMxMjUgODIuMDMxMjUgQyA2NC45ODQzNzUgODIuMjUgNjQuMDgyMDMxIDgyLjU4NTkzOCA2My4yNSA4My4wMzEyNSBMIDYzLjI1IDc5LjAzMTI1IEMgNjQuMzc1IDc4Ljc2MTcxOSA2NS41MDM5MDYgNzguNTU4NTk0IDY2LjY0MDYyNSA3OC40MjE4NzUgQyA2Ny43NzM0MzggNzguMjc3MzQ0IDY4LjkwNjI1IDc4LjIwMzEyNSA3MC4wMzEyNSA3OC4yMDMxMjUgQyA3MyA3OC4yMDMxMjUgNzUuMTQwNjI1IDc4Ljc4OTA2MiA3Ni40NTMxMjUgNzkuOTUzMTI1IEMgNzcuNzY1NjI1IDgxLjEyMTA5NCA3OC40MjE4NzUgODMuMDE1NjI1IDc4LjQyMTg3NSA4NS42NDA2MjUgWiBNIDgwLjkxNzk2OSA3My4xMjUgTCA4Ni41ODk4NDQgNzMuMTI1IEwgOTIuMzg2NzE5IDg5LjI2NTYyNSBMIDk4LjE4MzU5NCA3My4xMjUgTCAxMDMuODU1NDY5IDczLjEyNSBMIDk1Ljc0NjA5NCA5NSBMIDg5LjAyNzM0NCA5NSBaIE0gMTA1LjI2OTUzMSA4OC42MDkzNzUgTCAxMDUuMjY5NTMxIDc4LjU5Mzc1IEwgMTEwLjU1MDc4MSA3OC41OTM3NSBMIDExMC41NTA3ODEgODAuMjM0Mzc1IEMgMTEwLjU1MDc4MSA4MS4xMjEwOTQgMTEwLjU0Mjk2OSA4Mi4yMzQzNzUgMTEwLjUzNTE1NiA4My41NzgxMjUgQyAxMTAuNTIzNDM4IDg0LjkyMTg3NSAxMTAuNTE5NTMxIDg1LjgyMDMxMiAxMTAuNTE5NTMxIDg2LjI2NTYyNSBDIDExMC41MTk1MzEgODcuNTg5ODQ0IDExMC41NTA3ODEgODguNTQyOTY5IDExMC42MTMyODEgODkuMTI1IEMgMTEwLjY4MzU5NCA4OS42OTkyMTkgMTEwLjgwNDY4OCA5MC4xMjEwOTQgMTEwLjk3MjY1NiA5MC4zOTA2MjUgQyAxMTEuMTc5Njg4IDkwLjcyNjU2MiAxMTEuNDU3MDMxIDkwLjk4NDM3NSAxMTEuODAwNzgxIDkxLjE3MTg3NSBDIDExMi4xNTIzNDQgOTEuMzU5Mzc1IDExMi41NTQ2ODggOTEuNDUzMTI1IDExMy4wMDM5MDYgOTEuNDUzMTI1IEMgMTE0LjA5NzY1NiA5MS40NTMxMjUgMTE0Ljk1NzAzMSA5MS4wMzkwNjIgMTE1LjU4MjAzMSA5MC4yMDMxMjUgQyAxMTYuMjA3MDMxIDg5LjM1OTM3NSAxMTYuNTE5NTMxIDg4LjE4NzUgMTE2LjUxOTUzMSA4Ni42ODc1IEwgMTE2LjUxOTUzMSA3OC41OTM3NSBMIDEyMS43Njk1MzEgNzguNTkzNzUgTCAxMjEuNzY5NTMxIDk1IEwgMTE2LjUxOTUzMSA5NSBMIDExNi41MTk1MzEgOTIuNjI1IEMgMTE1LjcyNjU2MiA5My41ODU5MzggMTE0Ljg4NjcxOSA5NC4yOTI5NjkgMTE0LjAwMzkwNiA5NC43NSBDIDExMy4xMTcxODggOTUuMTk1MzEyIDExMi4xNDQ1MzEgOTUuNDIxODc1IDExMS4wODIwMzEgOTUuNDIxODc1IEMgMTA5LjE4MzU5NCA5NS40MjE4NzUgMTA3Ljc0MjE4OCA5NC44NDM3NSAxMDYuNzUzOTA2IDkzLjY4NzUgQyAxMDUuNzYxNzE5IDkyLjUyMzQzOCAxMDUuMjY5NTMxIDkwLjgyODEyNSAxMDUuMjY5NTMxIDg4LjYwOTM3NSBaIE0gMTUyLjY5NTMxMiA3My44MTI1IEwgMTUyLjY5NTMxMiA3OC40NTMxMjUgQyAxNTEuNDk2MDk0IDc3LjkxNDA2MiAxNTAuMzI0MjE5IDc3LjUwNzgxMiAxNDkuMTc5Njg4IDc3LjIzNDM3NSBDIDE0OC4wNDI5NjkgNzYuOTY0ODQ0IDE0Ni45NjQ4NDQgNzYuODI4MTI1IDE0NS45NDUzMTIgNzYuODI4MTI1IEMgMTQ0LjYwMTU2MiA3Ni44MjgxMjUgMTQzLjYwNTQ2OSA3Ny4wMTU2MjUgMTQyLjk2MDkzOCA3Ny4zOTA2MjUgQyAxNDIuMzEyNSA3Ny43NTc4MTIgMTQxLjk5MjE4OCA3OC4zMjgxMjUgMTQxLjk5MjE4OCA3OS4xMDkzNzUgQyAxNDEuOTkyMTg4IDc5LjY5NTMxMiAxNDIuMjAzMTI1IDgwLjE1MjM0NCAxNDIuNjMyODEyIDgwLjQ4NDM3NSBDIDE0My4wNzAzMTIgODAuODA4NTk0IDE0My44NTkzNzUgODEuMDg1OTM4IDE0NS4wMDc4MTIgODEuMzEyNSBMIDE0Ny40MTQwNjIgODEuNzk2ODc1IEMgMTQ5LjgzOTg0NCA4Mi4yODkwNjIgMTUxLjU2MjUgODMuMDMxMjUgMTUyLjU4NTkzOCA4NC4wMzEyNSBDIDE1My42MTcxODggODUuMDIzNDM4IDE1NC4xMzI4MTIgODYuNDM3NSAxNTQuMTMyODEyIDg4LjI4MTI1IEMgMTU0LjEzMjgxMiA5MC42ODc1IDE1My40MTc5NjkgOTIuNDgwNDY5IDE1MS45OTIxODggOTMuNjU2MjUgQyAxNTAuNTYyNSA5NC44MzU5MzggMTQ4LjM3NSA5NS40MjE4NzUgMTQ1LjQyOTY4OCA5NS40MjE4NzUgQyAxNDQuMDQyOTY5IDk1LjQyMTg3NSAxNDIuNjUyMzQ0IDk1LjI4OTA2MiAxNDEuMjU3ODEyIDk1LjAzMTI1IEMgMTM5Ljg1OTM3NSA5NC43NzM0MzggMTM4LjQ2NDg0NCA5NC4zODI4MTIgMTM3LjA3MDMxMiA5My44NTkzNzUgTCAxMzcuMDcwMzEyIDg5LjA5Mzc1IEMgMTM4LjQ2NDg0NCA4OS44MzU5MzggMTM5LjgxMjUgOTAuMzk4NDM4IDE0MS4xMTcxODggOTAuNzgxMjUgQyAxNDIuNDE3OTY5IDkxLjE1NjI1IDE0My42Nzk2ODggOTEuMzQzNzUgMTQ0Ljg5ODQzOCA5MS4zNDM3NSBDIDE0Ni4xMjUgOTEuMzQzNzUgMTQ3LjA2MjUgOTEuMTQwNjI1IDE0Ny43MTA5MzggOTAuNzM0Mzc1IEMgMTQ4LjM2NzE4OCA5MC4zMjAzMTIgMTQ4LjY5NTMxMiA4OS43MzA0NjkgMTQ4LjY5NTMxMiA4OC45Njg3NSBDIDE0OC42OTUzMTIgODguMjgxMjUgMTQ4LjQ2ODc1IDg3Ljc1NzgxMiAxNDguMDIzNDM4IDg3LjM5MDYyNSBDIDE0Ny41ODU5MzggODcuMDE1NjI1IDE0Ni43MDMxMjUgODYuNjgzNTk0IDE0NS4zODI4MTIgODYuMzkwNjI1IEwgMTQzLjE5NTMxMiA4NS45MDYyNSBDIDE0MS4wMDc4MTIgODUuNDM3NSAxMzkuNDA2MjUgODQuNjk1MzEyIDEzOC4zOTg0MzggODMuNjcxODc1IEMgMTM3LjM4NjcxOSA4Mi42NDA2MjUgMTM2Ljg4MjgxMiA4MS4yNTc4MTIgMTM2Ljg4MjgxMiA3OS41MTU2MjUgQyAxMzYuODgyODEyIDc3LjMzOTg0NCAxMzcuNTg1OTM4IDc1LjY2Nzk2OSAxMzguOTkyMTg4IDc0LjUgQyAxNDAuMzk4NDM4IDczLjMyNDIxOSAxNDIuNDE3OTY5IDcyLjczNDM3NSAxNDUuMDU0Njg4IDcyLjczNDM3NSBDIDE0Ni4yNSA3Mi43MzQzNzUgMTQ3LjQ4NDM3NSA3Mi44MjgxMjUgMTQ4Ljc1NzgxMiA3My4wMTU2MjUgQyAxNTAuMDI3MzQ0IDczLjE5NTMxMiAxNTEuMzM5ODQ0IDczLjQ2MDkzOCAxNTIuNjk1MzEyIDczLjgxMjUgWiBNIDE2Ni4yMDcwMzEgODcuNjA5Mzc1IEMgMTY1LjExMzI4MSA4Ny42MDkzNzUgMTY0LjI4OTA2MiA4Ny43OTY4NzUgMTYzLjczODI4MSA4OC4xNzE4NzUgQyAxNjMuMTgzNTk0IDg4LjU0Njg3NSAxNjIuOTEwMTU2IDg5LjA5Mzc1IDE2Mi45MTAxNTYgODkuODEyNSBDIDE2Mi45MTAxNTYgOTAuNDgwNDY5IDE2My4xMjg5MDYgOTEgMTYzLjU2NjQwNiA5MS4zNzUgQyAxNjQuMDExNzE5IDkxLjc1IDE2NC42MzI4MTIgOTEuOTM3NSAxNjUuNDI1NzgxIDkxLjkzNzUgQyAxNjYuNDE0MDYyIDkxLjkzNzUgMTY3LjI0MjE4OCA5MS41ODU5MzggMTY3LjkxMDE1NiA5MC44NzUgQyAxNjguNTg1OTM4IDkwLjE2Nzk2OSAxNjguOTI1NzgxIDg5LjI4MTI1IDE2OC45MjU3ODEgODguMjE4NzUgTCAxNjguOTI1NzgxIDg3LjYwOTM3NSBaIE0gMTc0LjIyMjY1NiA4NS42NDA2MjUgTCAxNzQuMjIyNjU2IDk1IEwgMTY4LjkyNTc4MSA5NSBMIDE2OC45MjU3ODEgOTIuNTYyNSBDIDE2OC4yMjY1NjIgOTMuNTYyNSAxNjcuNDMzNTk0IDk0LjI5Mjk2OSAxNjYuNTUwNzgxIDk0Ljc1IEMgMTY1LjY3NTc4MSA5NS4xOTUzMTIgMTY0LjYwNTQ2OSA5NS40MjE4NzUgMTYzLjM0NzY1NiA5NS40MjE4NzUgQyAxNjEuNjQ4NDM4IDk1LjQyMTg3NSAxNjAuMjY5NTMxIDk0LjkyOTY4OCAxNTkuMjA3MDMxIDkzLjkzNzUgQyAxNTguMTUyMzQ0IDkyLjk0OTIxOSAxNTcuNjI4OTA2IDkxLjY2NDA2MiAxNTcuNjI4OTA2IDkwLjA3ODEyNSBDIDE1Ny42Mjg5MDYgODguMTUyMzQ0IDE1OC4yODkwNjIgODYuNzQyMTg4IDE1OS42MTMyODEgODUuODQzNzUgQyAxNjAuOTMzNTk0IDg0Ljk0OTIxOSAxNjMuMDA3ODEyIDg0LjUgMTY1LjgzMjAzMSA4NC41IEwgMTY4LjkyNTc4MSA4NC41IEwgMTY4LjkyNTc4MSA4NC4wOTM3NSBDIDE2OC45MjU3ODEgODMuMjYxNzE5IDE2OC41OTc2NTYgODIuNjUyMzQ0IDE2Ny45NDE0MDYgODIuMjY1NjI1IEMgMTY3LjI5Mjk2OSA4MS44ODI4MTIgMTY2LjI3NzM0NCA4MS42ODc1IDE2NC44OTQ1MzEgODEuNjg3NSBDIDE2My43Njk1MzEgODEuNjg3NSAxNjIuNzIyNjU2IDgxLjgwNDY4OCAxNjEuNzUzOTA2IDgyLjAzMTI1IEMgMTYwLjc4NTE1NiA4Mi4yNSAxNTkuODgyODEyIDgyLjU4NTkzOCAxNTkuMDUwNzgxIDgzLjAzMTI1IEwgMTU5LjA1MDc4MSA3OS4wMzEyNSBDIDE2MC4xNzU3ODEgNzguNzYxNzE5IDE2MS4zMDQ2ODggNzguNTU4NTk0IDE2Mi40NDE0MDYgNzguNDIxODc1IEMgMTYzLjU3NDIxOSA3OC4yNzczNDQgMTY0LjcwNzAzMSA3OC4yMDMxMjUgMTY1LjgzMjAzMSA3OC4yMDMxMjUgQyAxNjguODAwNzgxIDc4LjIwMzEyNSAxNzAuOTQxNDA2IDc4Ljc4OTA2MiAxNzIuMjUzOTA2IDc5Ljk1MzEyNSBDIDE3My41NjY0MDYgODEuMTIxMDk0IDE3NC4yMjI2NTYgODMuMDE1NjI1IDE3NC4yMjI2NTYgODUuNjQwNjI1IFogTSAxOTUuNTkzNzUgODUuMDE1NjI1IEwgMTk1LjU5Mzc1IDk1IEwgMTkwLjMxMjUgOTUgTCAxOTAuMzEyNSA4Ny4zNTkzNzUgQyAxOTAuMzEyNSA4NS45NDUzMTIgMTkwLjI4MTI1IDg0Ljk2ODc1IDE5MC4yMTg3NSA4NC40Mzc1IEMgMTkwLjE1NjI1IDgzLjg5ODQzOCAxOTAuMDQ2ODc1IDgzLjQ5NjA5NCAxODkuODkwNjI1IDgzLjIzNDM3NSBDIDE4OS42OTE0MDYgODIuODkwNjI1IDE4OS40MTQwNjIgODIuNjI1IDE4OS4wNjI1IDgyLjQzNzUgQyAxODguNzA3MDMxIDgyLjI1IDE4OC4zMDQ2ODggODIuMTU2MjUgMTg3Ljg1OTM3NSA4Mi4xNTYyNSBDIDE4Ni43NjU2MjUgODIuMTU2MjUgMTg1LjkwNjI1IDgyLjU3ODEyNSAxODUuMjgxMjUgODMuNDIxODc1IEMgMTg0LjY1NjI1IDg0LjI2NTYyNSAxODQuMzQzNzUgODUuNDMzNTk0IDE4NC4zNDM3NSA4Ni45MjE4NzUgTCAxODQuMzQzNzUgOTUgTCAxNzkuMDkzNzUgOTUgTCAxNzkuMDkzNzUgNzguNTkzNzUgTCAxODQuMzQzNzUgNzguNTkzNzUgTCAxODQuMzQzNzUgODEgQyAxODUuMTMyODEyIDgwLjA0Mjk2OSAxODUuOTcyNjU2IDc5LjMzOTg0NCAxODYuODU5Mzc1IDc4Ljg5MDYyNSBDIDE4Ny43NDIxODggNzguNDMzNTk0IDE4OC43MjY1NjIgNzguMjAzMTI1IDE4OS44MTI1IDc4LjIwMzEyNSBDIDE5MS42OTUzMTIgNzguMjAzMTI1IDE5My4xMjg5MDYgNzguNzg5MDYyIDE5NC4xMDkzNzUgNzkuOTUzMTI1IEMgMTk1LjA5NzY1NiA4MS4xMDkzNzUgMTk1LjU5Mzc1IDgyLjc5Njg3NSAxOTUuNTkzNzUgODUuMDE1NjI1IFogTSAyMTMuMjc3MzQ0IDc5LjEwOTM3NSBMIDIxMy4yNzczNDQgODMuMDkzNzUgQyAyMTIuMTUyMzQ0IDgyLjYyNSAyMTEuMDYyNSA4Mi4yNzczNDQgMjEwLjAxMTcxOSA4Mi4wNDY4NzUgQyAyMDguOTY4NzUgODEuODA4NTk0IDIwNy45ODQzNzUgODEuNjg3NSAyMDcuMDU4NTk0IDgxLjY4NzUgQyAyMDYuMDU4NTk0IDgxLjY4NzUgMjA1LjMxNjQwNiA4MS44MTI1IDIwNC44Mzk4NDQgODIuMDYyNSBDIDIwNC4zNTkzNzUgODIuMzEyNSAyMDQuMTIxMDk0IDgyLjY5NTMxMiAyMDQuMTIxMDk0IDgzLjIwMzEyNSBDIDIwNC4xMjEwOTQgODMuNjMyODEyIDIwNC4zMDA3ODEgODMuOTYwOTM4IDIwNC42Njc5NjkgODQuMTg3NSBDIDIwNS4wMzEyNSA4NC40MDYyNSAyMDUuNjg3NSA4NC41NzAzMTIgMjA2LjYzNjcxOSA4NC42NzE4NzUgTCAyMDcuNTU4NTk0IDg0Ljc5Njg3NSBDIDIxMC4yNDYwOTQgODUuMTQwNjI1IDIxMi4wNTA3ODEgODUuNzAzMTI1IDIxMi45ODA0NjkgODYuNDg0Mzc1IEMgMjEzLjkwNjI1IDg3LjI2NTYyNSAyMTQuMzcxMDk0IDg4LjQ5NjA5NCAyMTQuMzcxMDk0IDkwLjE3MTg3NSBDIDIxNC4zNzEwOTQgOTEuOTE0MDYyIDIxMy43MjI2NTYgOTMuMjI2NTYyIDIxMi40MzM1OTQgOTQuMTA5Mzc1IEMgMjExLjE0MDYyNSA5NC45ODQzNzUgMjA5LjIxODc1IDk1LjQyMTg3NSAyMDYuNjY3OTY5IDk1LjQyMTg3NSBDIDIwNS41ODIwMzEgOTUuNDIxODc1IDIwNC40NjQ4NDQgOTUuMzMyMDMxIDIwMy4zMDg1OTQgOTUuMTU2MjUgQyAyMDIuMTUyMzQ0IDk0Ljk5MjE4OCAyMDAuOTU3MDMxIDk0Ljc0MjE4OCAxOTkuNzMwNDY5IDk0LjQwNjI1IEwgMTk5LjczMDQ2OSA5MC40MjE4NzUgQyAyMDAuNzgxMjUgOTAuOTIxODc1IDIwMS44NTU0NjkgOTEuMzA0Njg4IDIwMi45NDkyMTkgOTEuNTYyNSBDIDIwNC4wNTA3ODEgOTEuODEyNSAyMDUuMTY3OTY5IDkxLjkzNzUgMjA2LjI5Mjk2OSA5MS45Mzc1IEMgMjA3LjMyNDIxOSA5MS45Mzc1IDIwOC4wOTM3NSA5MS43OTY4NzUgMjA4LjYwNTQ2OSA5MS41MTU2MjUgQyAyMDkuMTI1IDkxLjIzNDM3NSAyMDkuMzg2NzE5IDkwLjgxMjUgMjA5LjM4NjcxOSA5MC4yNSBDIDIwOS4zODY3MTkgODkuNzgxMjUgMjA5LjIwNzAzMSA4OS40MzM1OTQgMjA4Ljg1NTQ2OSA4OS4yMDMxMjUgQyAyMDguNSA4OC45NzY1NjIgMjA3Ljc5Mjk2OSA4OC43OTY4NzUgMjA2LjczMDQ2OSA4OC42NzE4NzUgTCAyMDUuNzkyOTY5IDg4LjU0Njg3NSBDIDIwMy40NTcwMzEgODguMjU3ODEyIDIwMS44MjQyMTkgODcuNzE0ODQ0IDIwMC44ODY3MTkgODYuOTIxODc1IEMgMTk5Ljk0OTIxOSA4Ni4xMzI4MTIgMTk5LjQ4MDQ2OSA4NC45MzM1OTQgMTk5LjQ4MDQ2OSA4My4zMjgxMjUgQyAxOTkuNDgwNDY5IDgxLjU4OTg0NCAyMDAuMDc0MjE5IDgwLjMwNDY4OCAyMDEuMjYxNzE5IDc5LjQ2ODc1IEMgMjAyLjQ1NzAzMSA3OC42MjUgMjA0LjI4NTE1NiA3OC4yMDMxMjUgMjA2Ljc0NjA5NCA3OC4yMDMxMjUgQyAyMDcuNzE0ODQ0IDc4LjIwMzEyNSAyMDguNzMwNDY5IDc4LjI3NzM0NCAyMDkuNzkyOTY5IDc4LjQyMTg3NSBDIDIxMC44NjMyODEgNzguNTcwMzEyIDIxMi4wMjczNDQgNzguNzk2ODc1IDIxMy4yNzczNDQgNzkuMTA5Mzc1IFogTSAyMzcuNzUgODEuNTkzNzUgQyAyMzguNjMyODEyIDgxLjU5Mzc1IDIzOS4zMDQ2ODggODEuNDAyMzQ0IDIzOS43NjU2MjUgODEuMDE1NjI1IEMgMjQwLjIyMjY1NiA4MC42MjEwOTQgMjQwLjQ1MzEyNSA4MC4wNDI5NjkgMjQwLjQ1MzEyNSA3OS4yODEyNSBDIDI0MC40NTMxMjUgNzguNTMxMjUgMjQwLjIyMjY1NiA3Ny45NjA5MzggMjM5Ljc2NTYyNSA3Ny41NjI1IEMgMjM5LjMwNDY4OCA3Ny4xNjc5NjkgMjM4LjYzMjgxMiA3Ni45Njg3NSAyMzcuNzUgNzYuOTY4NzUgTCAyMzQuNjI1IDc2Ljk2ODc1IEwgMjM0LjYyNSA4MS41OTM3NSBaIE0gMjM3LjkzNzUgOTEuMTU2MjUgQyAyMzkuMDcwMzEyIDkxLjE1NjI1IDIzOS45MjU3ODEgOTAuOTE3OTY5IDI0MC41IDkwLjQzNzUgQyAyNDEuMDcwMzEyIDg5Ljk2MDkzOCAyNDEuMzU5Mzc1IDg5LjI0MjE4OCAyNDEuMzU5Mzc1IDg4LjI4MTI1IEMgMjQxLjM1OTM3NSA4Ny4zMzU5MzggMjQxLjA3MDMxMiA4Ni42MjUgMjQwLjUgODYuMTU2MjUgQyAyMzkuOTM3NSA4NS42Nzk2ODggMjM5LjA4MjAzMSA4NS40Mzc1IDIzNy45Mzc1IDg1LjQzNzUgTCAyMzQuNjI1IDg1LjQzNzUgTCAyMzQuNjI1IDkxLjE1NjI1IFogTSAyNDMuMTg3NSA4My4yOTY4NzUgQyAyNDQuMzk0NTMxIDgzLjY1MjM0NCAyNDUuMzI4MTI1IDg0LjMwNDY4OCAyNDUuOTg0Mzc1IDg1LjI1IEMgMjQ2LjY0ODQzOCA4Ni4xOTkyMTkgMjQ2Ljk4NDM3NSA4Ny4zNTkzNzUgMjQ2Ljk4NDM3NSA4OC43MzQzNzUgQyAyNDYuOTg0Mzc1IDkwLjgzOTg0NCAyNDYuMjY5NTMxIDkyLjQxNDA2MiAyNDQuODQzNzUgOTMuNDUzMTI1IEMgMjQzLjQyNTc4MSA5NC40ODQzNzUgMjQxLjI1NzgxMiA5NSAyMzguMzQzNzUgOTUgTCAyMjguOTg0Mzc1IDk1IEwgMjI4Ljk4NDM3NSA3My4xMjUgTCAyMzcuNDUzMTI1IDczLjEyNSBDIDI0MC40OTIxODggNzMuMTI1IDI0Mi42OTE0MDYgNzMuNTg5ODQ0IDI0NC4wNDY4NzUgNzQuNTE1NjI1IEMgMjQ1LjQxMDE1NiA3NS40MzM1OTQgMjQ2LjA5Mzc1IDc2LjkwMjM0NCAyNDYuMDkzNzUgNzguOTIxODc1IEMgMjQ2LjA5Mzc1IDc5Ljk4NDM3NSAyNDUuODQzNzUgODAuODkwNjI1IDI0NS4zNDM3NSA4MS42NDA2MjUgQyAyNDQuODUxNTYyIDgyLjM4MjgxMiAyNDQuMTMyODEyIDgyLjkzMzU5NCAyNDMuMTg3NSA4My4yOTY4NzUgWiBNIDI1OS40Mjk2ODggODEuOTUzMTI1IEMgMjU4LjI2MTcxOSA4MS45NTMxMjUgMjU3LjM3MTA5NCA4Mi4zNzEwOTQgMjU2Ljc1NzgxMiA4My4yMDMxMjUgQyAyNTYuMTUyMzQ0IDg0LjAzOTA2MiAyNTUuODUxNTYyIDg1LjI0MjE4OCAyNTUuODUxNTYyIDg2LjgxMjUgQyAyNTUuODUxNTYyIDg4LjM4NjcxOSAyNTYuMTUyMzQ0IDg5LjU4OTg0NCAyNTYuNzU3ODEyIDkwLjQyMTg3NSBDIDI1Ny4zNzEwOTQgOTEuMjU3ODEyIDI1OC4yNjE3MTkgOTEuNjcxODc1IDI1OS40Mjk2ODggOTEuNjcxODc1IEMgMjYwLjU3NDIxOSA5MS42NzE4NzUgMjYxLjQ0OTIxOSA5MS4yNTc4MTIgMjYyLjA1NDY4OCA5MC40MjE4NzUgQyAyNjIuNjU2MjUgODkuNTg5ODQ0IDI2Mi45NjA5MzggODguMzg2NzE5IDI2Mi45NjA5MzggODYuODEyNSBDIDI2Mi45NjA5MzggODUuMjQyMTg4IDI2Mi42NTYyNSA4NC4wMzkwNjIgMjYyLjA1NDY4OCA4My4yMDMxMjUgQyAyNjEuNDQ5MjE5IDgyLjM3MTA5NCAyNjAuNTc0MjE5IDgxLjk1MzEyNSAyNTkuNDI5Njg4IDgxLjk1MzEyNSBaIE0gMjU5LjQyOTY4OCA3OC4yMDMxMjUgQyAyNjIuMjUgNzguMjAzMTI1IDI2NC40NTMxMjUgNzguOTY0ODQ0IDI2Ni4wMzkwNjIgODAuNDg0Mzc1IEMgMjY3LjYzMjgxMiA4Mi4wMDc4MTIgMjY4LjQyOTY4OCA4NC4xMTcxODggMjY4LjQyOTY4OCA4Ni44MTI1IEMgMjY4LjQyOTY4OCA4OS41MTE3MTkgMjY3LjYzMjgxMiA5MS42MjEwOTQgMjY2LjAzOTA2MiA5My4xNDA2MjUgQyAyNjQuNDUzMTI1IDk0LjY2NDA2MiAyNjIuMjUgOTUuNDIxODc1IDI1OS40Mjk2ODggOTUuNDIxODc1IEMgMjU2LjU5Mzc1IDk1LjQyMTg3NSAyNTQuMzgyODEyIDk0LjY2NDA2MiAyNTIuNzg5MDYyIDkzLjE0MDYyNSBDIDI1MS4xOTUzMTIgOTEuNjIxMDk0IDI1MC4zOTg0MzggODkuNTExNzE5IDI1MC4zOTg0MzggODYuODEyNSBDIDI1MC4zOTg0MzggODQuMTE3MTg4IDI1MS4xOTUzMTIgODIuMDA3ODEyIDI1Mi43ODkwNjIgODAuNDg0Mzc1IEMgMjU0LjM4MjgxMiA3OC45NjQ4NDQgMjU2LjU5Mzc1IDc4LjIwMzEyNSAyNTkuNDI5Njg4IDc4LjIwMzEyNSBaIE0gMjcyLjIyNjU2MiA3Mi4yMDMxMjUgTCAyNzcuNDc2NTYyIDcyLjIwMzEyNSBMIDI3Ny40NzY1NjIgOTUgTCAyNzIuMjI2NTYyIDk1IFogTSAyOTMuNjgzNTk0IDgxIEwgMjkzLjY4MzU5NCA3Mi4yMDMxMjUgTCAyOTguOTQ5MjE5IDcyLjIwMzEyNSBMIDI5OC45NDkyMTkgOTUgTCAyOTMuNjgzNTk0IDk1IEwgMjkzLjY4MzU5NCA5Mi42MjUgQyAyOTIuOTUzMTI1IDkzLjU5Mzc1IDI5Mi4xNTIzNDQgOTQuMzA0Njg4IDI5MS4yNzczNDQgOTQuNzUgQyAyOTAuNDEwMTU2IDk1LjE5NTMxMiAyODkuNDEwMTU2IDk1LjQyMTg3NSAyODguMjc3MzQ0IDk1LjQyMTg3NSBDIDI4Ni4yNTM5MDYgOTUuNDIxODc1IDI4NC41OTM3NSA5NC42MjEwOTQgMjgzLjI5Mjk2OSA5My4wMTU2MjUgQyAyODEuOTg4MjgxIDkxLjQxNDA2MiAyODEuMzM5ODQ0IDg5LjM0Mzc1IDI4MS4zMzk4NDQgODYuODEyNSBDIDI4MS4zMzk4NDQgODQuMjgxMjUgMjgxLjk4ODI4MSA4Mi4yMTQ4NDQgMjgzLjI5Mjk2OSA4MC42MDkzNzUgQyAyODQuNTkzNzUgNzkuMDA3ODEyIDI4Ni4yNTM5MDYgNzguMjAzMTI1IDI4OC4yNzczNDQgNzguMjAzMTI1IEMgMjg5LjQwMjM0NCA3OC4yMDMxMjUgMjkwLjQwMjM0NCA3OC40MzM1OTQgMjkxLjI3NzM0NCA3OC44OTA2MjUgQyAyOTIuMTUyMzQ0IDc5LjMzOTg0NCAyOTIuOTUzMTI1IDgwLjA0Mjk2OSAyOTMuNjgzNTk0IDgxIFogTSAyOTAuMjE0ODQ0IDkxLjYwOTM3NSBDIDI5MS4zMzk4NDQgOTEuNjA5Mzc1IDI5Mi4xOTkyMTkgOTEuMjAzMTI1IDI5Mi43OTI5NjkgOTAuMzkwNjI1IEMgMjkzLjM4NjcxOSA4OS41NzAzMTIgMjkzLjY4MzU5NCA4OC4zNzUgMjkzLjY4MzU5NCA4Ni44MTI1IEMgMjkzLjY4MzU5NCA4NS4yNSAyOTMuMzg2NzE5IDg0LjA1ODU5NCAyOTIuNzkyOTY5IDgzLjIzNDM3NSBDIDI5Mi4xOTkyMTkgODIuNDE0MDYyIDI5MS4zMzk4NDQgODIgMjkwLjIxNDg0NCA4MiBDIDI4OS4xMDkzNzUgODIgMjg4LjI2MTcxOSA4Mi40MTQwNjIgMjg3LjY2Nzk2OSA4My4yMzQzNzUgQyAyODcuMDc0MjE5IDg0LjA1ODU5NCAyODYuNzc3MzQ0IDg1LjI1IDI4Ni43NzczNDQgODYuODEyNSBDIDI4Ni43NzczNDQgODguMzc1IDI4Ny4wNzQyMTkgODkuNTcwMzEyIDI4Ny42Njc5NjkgOTAuMzkwNjI1IEMgMjg4LjI2MTcxOSA5MS4yMDMxMjUgMjg5LjEwOTM3NSA5MS42MDkzNzUgMjkwLjIxNDg0NCA5MS42MDkzNzUgWiBNIDUgNjcuMTUyMzQ0ICIvPgo8L3N2Zz4K"); + }) + }); }); diff --git a/nodejs/test/chart-line.js b/nodejs/test/chart-line.js new file mode 100644 index 0000000..2bafc0c --- /dev/null +++ b/nodejs/test/chart-line.js @@ -0,0 +1,36 @@ +let { registerFont, createCanvas } = require('canvas'); +let { CategoryScale, Chart, LinearScale, LineController, LineElement, PointElement } = require('chart.js'); +var assert = require('assert'); + +describe('Chart', function () { + describe('#drawLineGraph', function () { + it('should draw a line graph', function () { + Chart.register([ + CategoryScale, + LineController, + LineElement, + LinearScale, + PointElement + ]); + + const canvas = createCanvas(400, 300); + const chart = new Chart( + canvas, // TypeScript needs "as any" here + { + type: 'line', + data: { + labels: ['Red', 'Blue', 'Yellow', 'Green', 'Purple', 'Orange'], + datasets: [{ + label: '# of Votes', + data: [12, 19, 3, 5, 2, 3], + borderColor: 'red' + }] + } + } + ); + const dataURL = canvas.toDataURL(); + // console.log(dataURL); + chart.destroy(); + }); + }) +}); \ No newline at end of file diff --git a/nodejs/test/fabric-rectangle.js b/nodejs/test/fabric-rectangle.js index 434a4fb..98c95e9 100644 --- a/nodejs/test/fabric-rectangle.js +++ b/nodejs/test/fabric-rectangle.js @@ -1,17 +1,16 @@ -let fabric = require('fabric').fabric; +let fabric = require('fabric/node'); var assert = require('assert'); describe('Fabric', function() { describe('#drawRectangle', function() { it('should draw a red rectangle', function() { - var rect = new fabric.Rect({ - left: 100, - top: 100, - fill: 'red', - width: 20, - height: 20 - }); - rect.toSVG(); + const canvas = new fabric.Canvas(null, { width: 100, height: 100 }); + const rect = new fabric.Rect({ width: 20, height: 50, fill: '#ff0000' }); + const text = new fabric.Text('fabric.js', { fill: 'blue', fontSize: 24 }); + canvas.add(rect, text); + canvas.renderAll(); + // console.log(canvas.toDataURL()); + assert.strictEqual(canvas.toDataURL(), 'data:image/png;base64,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'); }); }) }); \ No newline at end of file diff --git a/nodejs/test/konva-circle.js b/nodejs/test/konva-circle.js index 96c8e55..a2dcf03 100644 --- a/nodejs/test/konva-circle.js +++ b/nodejs/test/konva-circle.js @@ -1,5 +1,6 @@ let Konva = require('konva'); var assert = require('assert'); +const semver = require('semver'); describe('Konva', function () { describe('#drawCircle', function () { @@ -30,7 +31,11 @@ describe('Konva', function () { // draw the image layer.draw(); - assert.strictEqual(stage.toDataURL({pixelRatio: 1}), 'data:image/png;base64,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'); + if (semver.lt(process.version, '20.0.0')) { + assert.strictEqual(stage.toDataURL({pixelRatio: 1}), 'data:image/png;base64,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'); + } else { + assert.strictEqual(stage.toDataURL({pixelRatio: 1}), 'data:image/png;base64,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'); + } }); }) }); \ No newline at end of file