diff --git a/package-lock.json b/package-lock.json
index 1c7688790cddaa303b2975b4c464990874c85eef..001e4cd5a7c1050c2d1581600188955464c0b71a 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -80,6 +80,7 @@
                 "vue-loader": "^15.9.6",
                 "vue-router": "^3.5.1",
                 "vue-select": "^3.11.2",
+                "vue-template-babel-compiler": "^1.2.0",
                 "vue-template-compiler": "^2.6.12",
                 "vue-twentytwenty": "^0.10.1",
                 "vue-typer": "^1.2.0",
@@ -116,9 +117,9 @@
             }
         },
         "node_modules/@babel/compat-data": {
-            "version": "7.17.7",
-            "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.7.tgz",
-            "integrity": "sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ==",
+            "version": "7.18.5",
+            "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.18.5.tgz",
+            "integrity": "sha512-BxhE40PVCBxVEJsSBhB6UWyAuqJRxGsAw8BdHMJ3AKGydcwuWW4kOO3HmqBQAdcq/OP+/DlTVxLvsCzRTnZuGg==",
             "dev": true,
             "engines": {
                 "node": ">=6.9.0"
@@ -236,14 +237,14 @@
             }
         },
         "node_modules/@babel/helper-compilation-targets": {
-            "version": "7.17.7",
-            "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.7.tgz",
-            "integrity": "sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w==",
+            "version": "7.18.2",
+            "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.2.tgz",
+            "integrity": "sha512-s1jnPotJS9uQnzFtiZVBUxe67CuBa679oWFHpxYYnTpRL/1ffhyX44R9uYiXoa/pLXcY9H2moJta0iaanlk/rQ==",
             "dev": true,
             "dependencies": {
-                "@babel/compat-data": "^7.17.7",
+                "@babel/compat-data": "^7.17.10",
                 "@babel/helper-validator-option": "^7.16.7",
-                "browserslist": "^4.17.5",
+                "browserslist": "^4.20.2",
                 "semver": "^6.3.0"
             },
             "engines": {
@@ -393,10 +394,13 @@
             }
         },
         "node_modules/@babel/helper-plugin-utils": {
-            "version": "7.10.4",
-            "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz",
-            "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==",
-            "dev": true
+            "version": "7.17.12",
+            "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.17.12.tgz",
+            "integrity": "sha512-JDkf04mqtN3y4iAbO1hv9U2ARpPyPL1zqyWs/2WG1pgSq9llHFjStX5jdxb84himgJm+8Ng+x0oiWF/nw/XQKA==",
+            "dev": true,
+            "engines": {
+                "node": ">=6.9.0"
+            }
         },
         "node_modules/@babel/helper-regex": {
             "version": "7.10.5",
@@ -443,12 +447,15 @@
             }
         },
         "node_modules/@babel/helper-skip-transparent-expression-wrappers": {
-            "version": "7.12.1",
-            "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz",
-            "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==",
+            "version": "7.16.0",
+            "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz",
+            "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==",
             "dev": true,
             "dependencies": {
-                "@babel/types": "^7.12.1"
+                "@babel/types": "^7.16.0"
+            },
+            "engines": {
+                "node": ">=6.9.0"
             }
         },
         "node_modules/@babel/helper-split-export-declaration": {
@@ -595,13 +602,19 @@
             }
         },
         "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": {
-            "version": "7.12.1",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.12.1.tgz",
-            "integrity": "sha512-nZY0ESiaQDI1y96+jk6VxMOaL4LPo/QDHBqL+SF3/vl6dHkTwHlOI8L4ZwuRBHgakRBw5zsVylel7QPbbGuYgg==",
+            "version": "7.17.12",
+            "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.17.12.tgz",
+            "integrity": "sha512-ws/g3FSGVzv+VH86+QvgtuJL/kR67xaEIF2x0iPqdDfYW6ra6JF3lKVBkWynRLcNtIC1oCTfDRVxmm2mKzy+ag==",
             "dev": true,
             "dependencies": {
-                "@babel/helper-plugin-utils": "^7.10.4",
-                "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0"
+                "@babel/helper-plugin-utils": "^7.17.12",
+                "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
             }
         },
         "node_modules/@babel/plugin-proposal-numeric-separator": {
@@ -615,14 +628,22 @@
             }
         },
         "node_modules/@babel/plugin-proposal-object-rest-spread": {
-            "version": "7.12.1",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz",
-            "integrity": "sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA==",
+            "version": "7.18.0",
+            "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.0.tgz",
+            "integrity": "sha512-nbTv371eTrFabDfHLElkn9oyf9VG+VKK6WMzhY2o4eHKaG19BToD9947zzGMO6I/Irstx9d8CwX6njPNIAR/yw==",
             "dev": true,
             "dependencies": {
-                "@babel/helper-plugin-utils": "^7.10.4",
-                "@babel/plugin-syntax-object-rest-spread": "^7.8.0",
-                "@babel/plugin-transform-parameters": "^7.12.1"
+                "@babel/compat-data": "^7.17.10",
+                "@babel/helper-compilation-targets": "^7.17.10",
+                "@babel/helper-plugin-utils": "^7.17.12",
+                "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
+                "@babel/plugin-transform-parameters": "^7.17.12"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
             }
         },
         "node_modules/@babel/plugin-proposal-optional-catch-binding": {
@@ -636,14 +657,20 @@
             }
         },
         "node_modules/@babel/plugin-proposal-optional-chaining": {
-            "version": "7.12.1",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.12.1.tgz",
-            "integrity": "sha512-c2uRpY6WzaVDzynVY9liyykS+kVU+WRZPMPYpkelXH8KBt1oXoI89kPbZKKG/jDT5UK92FTW2fZkZaJhdiBabw==",
+            "version": "7.17.12",
+            "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.17.12.tgz",
+            "integrity": "sha512-7wigcOs/Z4YWlK7xxjkvaIw84vGhDv/P1dFGQap0nHkc8gFKY/r+hXc8Qzf5k1gY7CvGIcHqAnOagVKJJ1wVOQ==",
             "dev": true,
             "dependencies": {
-                "@babel/helper-plugin-utils": "^7.10.4",
-                "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1",
-                "@babel/plugin-syntax-optional-chaining": "^7.8.0"
+                "@babel/helper-plugin-utils": "^7.17.12",
+                "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0",
+                "@babel/plugin-syntax-optional-chaining": "^7.8.3"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
             }
         },
         "node_modules/@babel/plugin-proposal-private-methods": {
@@ -778,12 +805,18 @@
             }
         },
         "node_modules/@babel/plugin-transform-arrow-functions": {
-            "version": "7.12.1",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.12.1.tgz",
-            "integrity": "sha512-5QB50qyN44fzzz4/qxDPQMBCTHgxg3n0xRBLJUmBlLoU/sFvxVWGZF/ZUfMVDQuJUKXaBhbupxIzIfZ6Fwk/0A==",
+            "version": "7.17.12",
+            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.17.12.tgz",
+            "integrity": "sha512-PHln3CNi/49V+mza4xMwrg+WGYevSF1oaiXaC2EQfdp4HWlSjRsrDXWJiQBKpP7749u6vQ9mcry2uuFOv5CXvA==",
             "dev": true,
             "dependencies": {
-                "@babel/helper-plugin-utils": "^7.10.4"
+                "@babel/helper-plugin-utils": "^7.17.12"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
             }
         },
         "node_modules/@babel/plugin-transform-async-to-generator": {
@@ -807,12 +840,18 @@
             }
         },
         "node_modules/@babel/plugin-transform-block-scoping": {
-            "version": "7.12.1",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.1.tgz",
-            "integrity": "sha512-zJyAC9sZdE60r1nVQHblcfCj29Dh2Y0DOvlMkcqSo0ckqjiCwNiUezUKw+RjOCwGfpLRwnAeQ2XlLpsnGkvv9w==",
+            "version": "7.18.4",
+            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.4.tgz",
+            "integrity": "sha512-+Hq10ye+jlvLEogSOtq4mKvtk7qwcUQ1f0Mrueai866C82f844Yom2cttfJdMdqRLTxWpsbfbkIkOIfovyUQXw==",
             "dev": true,
             "dependencies": {
-                "@babel/helper-plugin-utils": "^7.10.4"
+                "@babel/helper-plugin-utils": "^7.17.12"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
             }
         },
         "node_modules/@babel/plugin-transform-classes": {
@@ -832,21 +871,33 @@
             }
         },
         "node_modules/@babel/plugin-transform-computed-properties": {
-            "version": "7.12.1",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.12.1.tgz",
-            "integrity": "sha512-vVUOYpPWB7BkgUWPo4C44mUQHpTZXakEqFjbv8rQMg7TC6S6ZhGZ3otQcRH6u7+adSlE5i0sp63eMC/XGffrzg==",
+            "version": "7.17.12",
+            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.17.12.tgz",
+            "integrity": "sha512-a7XINeplB5cQUWMg1E/GI1tFz3LfK021IjV1rj1ypE+R7jHm+pIHmHl25VNkZxtx9uuYp7ThGk8fur1HHG7PgQ==",
             "dev": true,
             "dependencies": {
-                "@babel/helper-plugin-utils": "^7.10.4"
+                "@babel/helper-plugin-utils": "^7.17.12"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
             }
         },
         "node_modules/@babel/plugin-transform-destructuring": {
-            "version": "7.12.1",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.12.1.tgz",
-            "integrity": "sha512-fRMYFKuzi/rSiYb2uRLiUENJOKq4Gnl+6qOv5f8z0TZXg3llUwUhsNNwrwaT/6dUhJTzNpBr+CUvEWBtfNY1cw==",
+            "version": "7.18.0",
+            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.0.tgz",
+            "integrity": "sha512-Mo69klS79z6KEfrLg/1WkmVnB8javh75HX4pi2btjvlIoasuxilEyjtsQW6XPrubNd7AQy0MMaNIaQE4e7+PQw==",
             "dev": true,
             "dependencies": {
-                "@babel/helper-plugin-utils": "^7.10.4"
+                "@babel/helper-plugin-utils": "^7.17.12"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
             }
         },
         "node_modules/@babel/plugin-transform-dotall-regex": {
@@ -990,12 +1041,18 @@
             }
         },
         "node_modules/@babel/plugin-transform-parameters": {
-            "version": "7.12.1",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.12.1.tgz",
-            "integrity": "sha512-xq9C5EQhdPK23ZeCdMxl8bbRnAgHFrw5EOC3KJUsSylZqdkCaFEXxGSBuTSObOpiiHHNyb82es8M1QYgfQGfNg==",
+            "version": "7.17.12",
+            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.17.12.tgz",
+            "integrity": "sha512-6qW4rWo1cyCdq1FkYri7AHpauchbGLXpdwnYsfxFb+KtddHENfsY5JZb35xUwkK5opOLcJ3BNd2l7PhRYGlwIA==",
             "dev": true,
             "dependencies": {
-                "@babel/helper-plugin-utils": "^7.10.4"
+                "@babel/helper-plugin-utils": "^7.17.12"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
             }
         },
         "node_modules/@babel/plugin-transform-property-literals": {
@@ -1047,13 +1104,19 @@
             }
         },
         "node_modules/@babel/plugin-transform-spread": {
-            "version": "7.12.1",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.12.1.tgz",
-            "integrity": "sha512-vuLp8CP0BE18zVYjsEBZ5xoCecMK6LBMMxYzJnh01rxQRvhNhH1csMMmBfNo5tGpGO+NhdSNW2mzIvBu3K1fng==",
+            "version": "7.17.12",
+            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.17.12.tgz",
+            "integrity": "sha512-9pgmuQAtFi3lpNUstvG9nGfk9DkrdmWNp9KeKPFmuZCpEnxRzYlS8JgwPjYj+1AWDOSvoGN0H30p1cBOmT/Svg==",
             "dev": true,
             "dependencies": {
-                "@babel/helper-plugin-utils": "^7.10.4",
-                "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1"
+                "@babel/helper-plugin-utils": "^7.17.12",
+                "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0"
+            },
+            "engines": {
+                "node": ">=6.9.0"
+            },
+            "peerDependencies": {
+                "@babel/core": "^7.0.0-0"
             }
         },
         "node_modules/@babel/plugin-transform-sticky-regex": {
@@ -13822,6 +13885,32 @@
                 "loader-utils": "^1.0.2"
             }
         },
+        "node_modules/vue-template-babel-compiler": {
+            "version": "1.2.0",
+            "resolved": "https://registry.npmjs.org/vue-template-babel-compiler/-/vue-template-babel-compiler-1.2.0.tgz",
+            "integrity": "sha512-CScBSX1/wCdmmZ/Lvj/63p2CCVTS0FMj0F69VRBo73CuJrjvPAPGmeNJ7D/cwt/VS2PduowRWbO8N4Zh4Z3b0g==",
+            "dev": true,
+            "dependencies": {
+                "@babel/core": "^7.14.3",
+                "@babel/plugin-proposal-nullish-coalescing-operator": "^7.14.5",
+                "@babel/plugin-proposal-object-rest-spread": "^7.15.6",
+                "@babel/plugin-proposal-optional-chaining": "^7.14.2",
+                "@babel/plugin-transform-arrow-functions": "^7.14.5",
+                "@babel/plugin-transform-block-scoping": "^7.14.5",
+                "@babel/plugin-transform-computed-properties": "^7.14.5",
+                "@babel/plugin-transform-destructuring": "^7.14.5",
+                "@babel/plugin-transform-parameters": "^7.14.5",
+                "@babel/plugin-transform-spread": "^7.14.5",
+                "@babel/types": "^7.14.5",
+                "deepmerge": "^4.2.2"
+            },
+            "engines": {
+                "node": ">=12.0.0"
+            },
+            "peerDependencies": {
+                "vue-template-compiler": "^2.6.0"
+            }
+        },
         "node_modules/vue-template-compiler": {
             "version": "2.6.12",
             "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.6.12.tgz",
@@ -14667,9 +14756,9 @@
             }
         },
         "@babel/compat-data": {
-            "version": "7.17.7",
-            "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.7.tgz",
-            "integrity": "sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ==",
+            "version": "7.18.5",
+            "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.18.5.tgz",
+            "integrity": "sha512-BxhE40PVCBxVEJsSBhB6UWyAuqJRxGsAw8BdHMJ3AKGydcwuWW4kOO3HmqBQAdcq/OP+/DlTVxLvsCzRTnZuGg==",
             "dev": true
         },
         "@babel/core": {
@@ -14762,14 +14851,14 @@
             }
         },
         "@babel/helper-compilation-targets": {
-            "version": "7.17.7",
-            "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.7.tgz",
-            "integrity": "sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w==",
+            "version": "7.18.2",
+            "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.2.tgz",
+            "integrity": "sha512-s1jnPotJS9uQnzFtiZVBUxe67CuBa679oWFHpxYYnTpRL/1ffhyX44R9uYiXoa/pLXcY9H2moJta0iaanlk/rQ==",
             "dev": true,
             "requires": {
-                "@babel/compat-data": "^7.17.7",
+                "@babel/compat-data": "^7.17.10",
                 "@babel/helper-validator-option": "^7.16.7",
-                "browserslist": "^4.17.5",
+                "browserslist": "^4.20.2",
                 "semver": "^6.3.0"
             },
             "dependencies": {
@@ -14897,9 +14986,9 @@
             }
         },
         "@babel/helper-plugin-utils": {
-            "version": "7.10.4",
-            "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz",
-            "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==",
+            "version": "7.17.12",
+            "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.17.12.tgz",
+            "integrity": "sha512-JDkf04mqtN3y4iAbO1hv9U2ARpPyPL1zqyWs/2WG1pgSq9llHFjStX5jdxb84himgJm+8Ng+x0oiWF/nw/XQKA==",
             "dev": true
         },
         "@babel/helper-regex": {
@@ -14944,12 +15033,12 @@
             }
         },
         "@babel/helper-skip-transparent-expression-wrappers": {
-            "version": "7.12.1",
-            "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz",
-            "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==",
+            "version": "7.16.0",
+            "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz",
+            "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==",
             "dev": true,
             "requires": {
-                "@babel/types": "^7.12.1"
+                "@babel/types": "^7.16.0"
             }
         },
         "@babel/helper-split-export-declaration": {
@@ -15075,13 +15164,13 @@
             }
         },
         "@babel/plugin-proposal-nullish-coalescing-operator": {
-            "version": "7.12.1",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.12.1.tgz",
-            "integrity": "sha512-nZY0ESiaQDI1y96+jk6VxMOaL4LPo/QDHBqL+SF3/vl6dHkTwHlOI8L4ZwuRBHgakRBw5zsVylel7QPbbGuYgg==",
+            "version": "7.17.12",
+            "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.17.12.tgz",
+            "integrity": "sha512-ws/g3FSGVzv+VH86+QvgtuJL/kR67xaEIF2x0iPqdDfYW6ra6JF3lKVBkWynRLcNtIC1oCTfDRVxmm2mKzy+ag==",
             "dev": true,
             "requires": {
-                "@babel/helper-plugin-utils": "^7.10.4",
-                "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0"
+                "@babel/helper-plugin-utils": "^7.17.12",
+                "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3"
             }
         },
         "@babel/plugin-proposal-numeric-separator": {
@@ -15095,14 +15184,16 @@
             }
         },
         "@babel/plugin-proposal-object-rest-spread": {
-            "version": "7.12.1",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz",
-            "integrity": "sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA==",
+            "version": "7.18.0",
+            "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.0.tgz",
+            "integrity": "sha512-nbTv371eTrFabDfHLElkn9oyf9VG+VKK6WMzhY2o4eHKaG19BToD9947zzGMO6I/Irstx9d8CwX6njPNIAR/yw==",
             "dev": true,
             "requires": {
-                "@babel/helper-plugin-utils": "^7.10.4",
-                "@babel/plugin-syntax-object-rest-spread": "^7.8.0",
-                "@babel/plugin-transform-parameters": "^7.12.1"
+                "@babel/compat-data": "^7.17.10",
+                "@babel/helper-compilation-targets": "^7.17.10",
+                "@babel/helper-plugin-utils": "^7.17.12",
+                "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
+                "@babel/plugin-transform-parameters": "^7.17.12"
             }
         },
         "@babel/plugin-proposal-optional-catch-binding": {
@@ -15116,14 +15207,14 @@
             }
         },
         "@babel/plugin-proposal-optional-chaining": {
-            "version": "7.12.1",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.12.1.tgz",
-            "integrity": "sha512-c2uRpY6WzaVDzynVY9liyykS+kVU+WRZPMPYpkelXH8KBt1oXoI89kPbZKKG/jDT5UK92FTW2fZkZaJhdiBabw==",
+            "version": "7.17.12",
+            "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.17.12.tgz",
+            "integrity": "sha512-7wigcOs/Z4YWlK7xxjkvaIw84vGhDv/P1dFGQap0nHkc8gFKY/r+hXc8Qzf5k1gY7CvGIcHqAnOagVKJJ1wVOQ==",
             "dev": true,
             "requires": {
-                "@babel/helper-plugin-utils": "^7.10.4",
-                "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1",
-                "@babel/plugin-syntax-optional-chaining": "^7.8.0"
+                "@babel/helper-plugin-utils": "^7.17.12",
+                "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0",
+                "@babel/plugin-syntax-optional-chaining": "^7.8.3"
             }
         },
         "@babel/plugin-proposal-private-methods": {
@@ -15255,12 +15346,12 @@
             }
         },
         "@babel/plugin-transform-arrow-functions": {
-            "version": "7.12.1",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.12.1.tgz",
-            "integrity": "sha512-5QB50qyN44fzzz4/qxDPQMBCTHgxg3n0xRBLJUmBlLoU/sFvxVWGZF/ZUfMVDQuJUKXaBhbupxIzIfZ6Fwk/0A==",
+            "version": "7.17.12",
+            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.17.12.tgz",
+            "integrity": "sha512-PHln3CNi/49V+mza4xMwrg+WGYevSF1oaiXaC2EQfdp4HWlSjRsrDXWJiQBKpP7749u6vQ9mcry2uuFOv5CXvA==",
             "dev": true,
             "requires": {
-                "@babel/helper-plugin-utils": "^7.10.4"
+                "@babel/helper-plugin-utils": "^7.17.12"
             }
         },
         "@babel/plugin-transform-async-to-generator": {
@@ -15284,12 +15375,12 @@
             }
         },
         "@babel/plugin-transform-block-scoping": {
-            "version": "7.12.1",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.1.tgz",
-            "integrity": "sha512-zJyAC9sZdE60r1nVQHblcfCj29Dh2Y0DOvlMkcqSo0ckqjiCwNiUezUKw+RjOCwGfpLRwnAeQ2XlLpsnGkvv9w==",
+            "version": "7.18.4",
+            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.4.tgz",
+            "integrity": "sha512-+Hq10ye+jlvLEogSOtq4mKvtk7qwcUQ1f0Mrueai866C82f844Yom2cttfJdMdqRLTxWpsbfbkIkOIfovyUQXw==",
             "dev": true,
             "requires": {
-                "@babel/helper-plugin-utils": "^7.10.4"
+                "@babel/helper-plugin-utils": "^7.17.12"
             }
         },
         "@babel/plugin-transform-classes": {
@@ -15309,21 +15400,21 @@
             }
         },
         "@babel/plugin-transform-computed-properties": {
-            "version": "7.12.1",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.12.1.tgz",
-            "integrity": "sha512-vVUOYpPWB7BkgUWPo4C44mUQHpTZXakEqFjbv8rQMg7TC6S6ZhGZ3otQcRH6u7+adSlE5i0sp63eMC/XGffrzg==",
+            "version": "7.17.12",
+            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.17.12.tgz",
+            "integrity": "sha512-a7XINeplB5cQUWMg1E/GI1tFz3LfK021IjV1rj1ypE+R7jHm+pIHmHl25VNkZxtx9uuYp7ThGk8fur1HHG7PgQ==",
             "dev": true,
             "requires": {
-                "@babel/helper-plugin-utils": "^7.10.4"
+                "@babel/helper-plugin-utils": "^7.17.12"
             }
         },
         "@babel/plugin-transform-destructuring": {
-            "version": "7.12.1",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.12.1.tgz",
-            "integrity": "sha512-fRMYFKuzi/rSiYb2uRLiUENJOKq4Gnl+6qOv5f8z0TZXg3llUwUhsNNwrwaT/6dUhJTzNpBr+CUvEWBtfNY1cw==",
+            "version": "7.18.0",
+            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.0.tgz",
+            "integrity": "sha512-Mo69klS79z6KEfrLg/1WkmVnB8javh75HX4pi2btjvlIoasuxilEyjtsQW6XPrubNd7AQy0MMaNIaQE4e7+PQw==",
             "dev": true,
             "requires": {
-                "@babel/helper-plugin-utils": "^7.10.4"
+                "@babel/helper-plugin-utils": "^7.17.12"
             }
         },
         "@babel/plugin-transform-dotall-regex": {
@@ -15467,12 +15558,12 @@
             }
         },
         "@babel/plugin-transform-parameters": {
-            "version": "7.12.1",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.12.1.tgz",
-            "integrity": "sha512-xq9C5EQhdPK23ZeCdMxl8bbRnAgHFrw5EOC3KJUsSylZqdkCaFEXxGSBuTSObOpiiHHNyb82es8M1QYgfQGfNg==",
+            "version": "7.17.12",
+            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.17.12.tgz",
+            "integrity": "sha512-6qW4rWo1cyCdq1FkYri7AHpauchbGLXpdwnYsfxFb+KtddHENfsY5JZb35xUwkK5opOLcJ3BNd2l7PhRYGlwIA==",
             "dev": true,
             "requires": {
-                "@babel/helper-plugin-utils": "^7.10.4"
+                "@babel/helper-plugin-utils": "^7.17.12"
             }
         },
         "@babel/plugin-transform-property-literals": {
@@ -15524,13 +15615,13 @@
             }
         },
         "@babel/plugin-transform-spread": {
-            "version": "7.12.1",
-            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.12.1.tgz",
-            "integrity": "sha512-vuLp8CP0BE18zVYjsEBZ5xoCecMK6LBMMxYzJnh01rxQRvhNhH1csMMmBfNo5tGpGO+NhdSNW2mzIvBu3K1fng==",
+            "version": "7.17.12",
+            "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.17.12.tgz",
+            "integrity": "sha512-9pgmuQAtFi3lpNUstvG9nGfk9DkrdmWNp9KeKPFmuZCpEnxRzYlS8JgwPjYj+1AWDOSvoGN0H30p1cBOmT/Svg==",
             "dev": true,
             "requires": {
-                "@babel/helper-plugin-utils": "^7.10.4",
-                "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1"
+                "@babel/helper-plugin-utils": "^7.17.12",
+                "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0"
             }
         },
         "@babel/plugin-transform-sticky-regex": {
@@ -25923,6 +26014,26 @@
                 "loader-utils": "^1.0.2"
             }
         },
+        "vue-template-babel-compiler": {
+            "version": "1.2.0",
+            "resolved": "https://registry.npmjs.org/vue-template-babel-compiler/-/vue-template-babel-compiler-1.2.0.tgz",
+            "integrity": "sha512-CScBSX1/wCdmmZ/Lvj/63p2CCVTS0FMj0F69VRBo73CuJrjvPAPGmeNJ7D/cwt/VS2PduowRWbO8N4Zh4Z3b0g==",
+            "dev": true,
+            "requires": {
+                "@babel/core": "^7.14.3",
+                "@babel/plugin-proposal-nullish-coalescing-operator": "^7.14.5",
+                "@babel/plugin-proposal-object-rest-spread": "^7.15.6",
+                "@babel/plugin-proposal-optional-chaining": "^7.14.2",
+                "@babel/plugin-transform-arrow-functions": "^7.14.5",
+                "@babel/plugin-transform-block-scoping": "^7.14.5",
+                "@babel/plugin-transform-computed-properties": "^7.14.5",
+                "@babel/plugin-transform-destructuring": "^7.14.5",
+                "@babel/plugin-transform-parameters": "^7.14.5",
+                "@babel/plugin-transform-spread": "^7.14.5",
+                "@babel/types": "^7.14.5",
+                "deepmerge": "^4.2.2"
+            }
+        },
         "vue-template-compiler": {
             "version": "2.6.12",
             "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.6.12.tgz",
diff --git a/package.json b/package.json
index ab28535262e6e0825d71de06f291946213cb05f1..5f218a5a59c2f392a2ea930b07844fcfb5cf95b5 100644
--- a/package.json
+++ b/package.json
@@ -91,6 +91,7 @@
         "vue-loader": "^15.9.6",
         "vue-router": "^3.5.1",
         "vue-select": "^3.11.2",
+        "vue-template-babel-compiler": "^1.2.0",
         "vue-template-compiler": "^2.6.12",
         "vue-twentytwenty": "^0.10.1",
         "vue-typer": "^1.2.0",
diff --git a/webpack.common.js b/webpack.common.js
index 03b91f50457bbe6e924094a434a4216863774f00..98050ce102e2e8add2d0240b46f55ba1ca903c40 100644
--- a/webpack.common.js
+++ b/webpack.common.js
@@ -97,7 +97,10 @@ module.exports = {
             },
             {
                 test: /\.vue$/,
-                loader: 'vue-loader'
+                loader: 'vue-loader',
+                options: {
+                    compiler: require('vue-template-babel-compiler')
+                }
             }
         ]
     },